diff --git a/CHANGELOG.md b/CHANGELOG.md index a9853f1172..3e399132cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,32 @@ +## 1.2.1 / 2016-10-10 + +* [BUGFIX] Count chunk evictions properly so that the server doesn't + assume it runs out of memory and subsequencly throttles ingestion. +* [BUGFIX] Use Go1.7.1 for prebuilt binaries to fix issues on MacOS Sierra. + +## 1.2.0 / 2016-10-07 + +* [FEATURE] Cleaner encoding of query parameters in `/graph` URLs. +* [FEATURE] PromQL: Add `minute()` function. +* [FEATURE] Add GCE service discovery. +* [FEATURE] Allow any valid UTF-8 string as job name. +* [FEATURE] Allow disabling local storage. +* [FEATURE] EC2 service discovery: Expose `ec2_instance_state`. +* [ENHANCEMENT] Various performance improvements in local storage. +* [BUGFIX] Zookeeper service discovery: Remove deleted nodes. +* [BUGFIX] Zookeeper service discovery: Resync state after Zookeeper failure. +* [BUGFIX] Remove JSON from HTTP Accept header. +* [BUGFIX] Fix flag validation of Alertmanager URL. +* [BUGFIX] Fix race condition on shutdown. +* [BUGFIX] Do not fail Consul discovery on Prometheus startup when Consul + is down. +* [BUGFIX] Handle NaN in `changes()` correctly. +* [CHANGE] **Experimental** remote write path: Remove use of gRPC. +* [CHANGE] **Experimental** remote write path: Configuration via config file + rather than command line flags. +* [FEATURE] **Experimental** remote write path: Add HTTP basic auth and TLS. +* [FEATURE] **Experimental** remote write path: Support for relabelling. + ## 1.1.3 / 2016-09-16 * [ENHANCEMENT] Use golang-builder base image for tests in CircleCI. diff --git a/NOTICE b/NOTICE index 66e5b5c799..2203e3e2bb 100644 --- a/NOTICE +++ b/NOTICE @@ -18,6 +18,12 @@ Original written by @mdo and @fat Copyright 2014 Bass Jobsen @bassjobsen Licensed under the Apache License, Version 2.0 +fuzzy +https://github.com/mattyork/fuzzy +Original written by @mattyork +Copyright 2012 Matt York +Licensed under the MIT License + bootstrap-datetimepicker.js http://www.eyecon.ro/bootstrap-datepicker Copyright 2012 Stefan Petre diff --git a/VERSION b/VERSION index 781dcb07cd..6085e94650 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.3 +1.2.1 diff --git a/config/config.go b/config/config.go index e8ed6dc7f4..4dd6578bcb 100644 --- a/config/config.go +++ b/config/config.go @@ -127,10 +127,7 @@ var ( } // DefaultKubernetesSDConfig is the default Kubernetes SD configuration - DefaultKubernetesSDConfig = KubernetesSDConfig{ - RequestTimeout: model.Duration(10 * time.Second), - RetryInterval: model.Duration(1 * time.Second), - } + DefaultKubernetesSDConfig = KubernetesSDConfig{} // DefaultGCESDConfig is the default EC2 SD configuration. DefaultGCESDConfig = GCESDConfig{ @@ -804,31 +801,13 @@ func (c *MarathonSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) erro return nil } -// KubernetesSDConfig is the configuration for Kubernetes service discovery. -type KubernetesSDConfig struct { - APIServers []URL `yaml:"api_servers"` - Role KubernetesRole `yaml:"role"` - InCluster bool `yaml:"in_cluster,omitempty"` - BasicAuth *BasicAuth `yaml:"basic_auth,omitempty"` - BearerToken string `yaml:"bearer_token,omitempty"` - BearerTokenFile string `yaml:"bearer_token_file,omitempty"` - RetryInterval model.Duration `yaml:"retry_interval,omitempty"` - RequestTimeout model.Duration `yaml:"request_timeout,omitempty"` - TLSConfig TLSConfig `yaml:"tls_config,omitempty"` - - // Catches all undefined fields and must be empty after parsing. - XXX map[string]interface{} `yaml:",inline"` -} - type KubernetesRole string const ( - KubernetesRoleNode = "node" - KubernetesRolePod = "pod" - KubernetesRoleContainer = "container" - KubernetesRoleService = "service" - KubernetesRoleEndpoint = "endpoint" - KubernetesRoleAPIServer = "apiserver" + KubernetesRoleNode = "node" + KubernetesRolePod = "pod" + KubernetesRoleService = "service" + KubernetesRoleEndpoint = "endpoints" ) func (c *KubernetesRole) UnmarshalYAML(unmarshal func(interface{}) error) error { @@ -836,16 +815,29 @@ func (c *KubernetesRole) UnmarshalYAML(unmarshal func(interface{}) error) error return err } switch *c { - case KubernetesRoleNode, KubernetesRolePod, KubernetesRoleContainer, KubernetesRoleService, KubernetesRoleEndpoint, KubernetesRoleAPIServer: + case KubernetesRoleNode, KubernetesRolePod, KubernetesRoleService, KubernetesRoleEndpoint: return nil default: return fmt.Errorf("Unknown Kubernetes SD role %q", *c) } } +// KubernetesSDConfig is the configuration for Kubernetes service discovery. +type KubernetesSDConfig struct { + APIServer URL `yaml:"api_server"` + Role KubernetesRole `yaml:"role"` + BasicAuth *BasicAuth `yaml:"basic_auth,omitempty"` + BearerToken string `yaml:"bearer_token,omitempty"` + BearerTokenFile string `yaml:"bearer_token_file,omitempty"` + TLSConfig TLSConfig `yaml:"tls_config,omitempty"` + + // Catches all undefined fields and must be empty after parsing. + XXX map[string]interface{} `yaml:",inline"` +} + // UnmarshalYAML implements the yaml.Unmarshaler interface. func (c *KubernetesSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { - *c = DefaultKubernetesSDConfig + *c = KubernetesSDConfig{} type plain KubernetesSDConfig err := unmarshal((*plain)(c)) if err != nil { @@ -855,10 +847,7 @@ func (c *KubernetesSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) er return err } if c.Role == "" { - return fmt.Errorf("role missing (one of: container, pod, service, endpoint, node, apiserver)") - } - if len(c.APIServers) == 0 { - return fmt.Errorf("Kubernetes SD configuration requires at least one Kubernetes API server") + return fmt.Errorf("role missing (one of: pod, service, endpoints, node)") } if len(c.BearerToken) > 0 && len(c.BearerTokenFile) > 0 { return fmt.Errorf("at most one of bearer_token & bearer_token_file must be configured") @@ -899,7 +888,7 @@ func (c *GCESDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { if err != nil { return err } - if err := checkOverflow(c.XXX, "ec2_sd_config"); err != nil { + if err := checkOverflow(c.XXX, "gce_sd_config"); err != nil { return err } if c.Project == "" { diff --git a/config/config_test.go b/config/config_test.go index f1c43a3d6a..44d5da4b2d 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -235,14 +235,12 @@ var expectedConf = &Config{ KubernetesSDConfigs: []*KubernetesSDConfig{ { - APIServers: []URL{kubernetesSDHostURL()}, - Role: KubernetesRoleEndpoint, + APIServer: kubernetesSDHostURL(), + Role: KubernetesRoleEndpoint, BasicAuth: &BasicAuth{ Username: "myusername", Password: "mypassword", }, - RequestTimeout: model.Duration(10 * time.Second), - RetryInterval: model.Duration(1 * time.Second), }, }, }, diff --git a/config/testdata/conf.good.yml b/config/testdata/conf.good.yml index 507ab77c80..8c2b5f4b67 100644 --- a/config/testdata/conf.good.yml +++ b/config/testdata/conf.good.yml @@ -115,9 +115,8 @@ scrape_configs: - job_name: service-kubernetes kubernetes_sd_configs: - - role: endpoint - api_servers: - - 'https://localhost:1234' + - role: endpoints + api_server: 'https://localhost:1234' basic_auth: username: 'myusername' diff --git a/config/testdata/kubernetes_bearertoken.bad.yml b/config/testdata/kubernetes_bearertoken.bad.yml index 533742fd3f..158de9a1d2 100644 --- a/config/testdata/kubernetes_bearertoken.bad.yml +++ b/config/testdata/kubernetes_bearertoken.bad.yml @@ -3,8 +3,7 @@ scrape_configs: kubernetes_sd_configs: - role: node - api_servers: - - 'https://localhost:1234' + api_server: 'https://localhost:1234' bearer_token: 1234 bearer_token_file: somefile diff --git a/config/testdata/kubernetes_bearertoken_basicauth.bad.yml b/config/testdata/kubernetes_bearertoken_basicauth.bad.yml index e7c1633d5c..ad7cc329dc 100644 --- a/config/testdata/kubernetes_bearertoken_basicauth.bad.yml +++ b/config/testdata/kubernetes_bearertoken_basicauth.bad.yml @@ -3,8 +3,7 @@ scrape_configs: kubernetes_sd_configs: - role: pod - api_servers: - - 'https://localhost:1234' + api_server: 'https://localhost:1234' bearer_token: 1234 basic_auth: diff --git a/promql/engine.go b/promql/engine.go index 64265060a1..f1d45f9401 100644 --- a/promql/engine.go +++ b/promql/engine.go @@ -218,22 +218,27 @@ func contextDone(ctx context.Context, env string) error { // Engine handles the lifetime of queries from beginning to end. // It is connected to a querier. type Engine struct { - // The querier on which the engine operates. - querier local.Querier + // A Querier constructor against an underlying storage. + queryable Queryable // The gate limiting the maximum number of concurrent and waiting queries. gate *queryGate options *EngineOptions } +// Queryable allows opening a storage querier. +type Queryable interface { + Querier() (local.Querier, error) +} + // NewEngine returns a new engine. -func NewEngine(querier local.Querier, o *EngineOptions) *Engine { +func NewEngine(queryable Queryable, o *EngineOptions) *Engine { if o == nil { o = DefaultEngineOptions } return &Engine{ - querier: querier, - gate: newQueryGate(o.MaxConcurrentQueries), - options: o, + queryable: queryable, + gate: newQueryGate(o.MaxConcurrentQueries), + options: o, } } @@ -351,13 +356,18 @@ func (ng *Engine) exec(ctx context.Context, q *query) (model.Value, error) { // execEvalStmt evaluates the expression of an evaluation statement for the given time range. func (ng *Engine) execEvalStmt(ctx context.Context, query *query, s *EvalStmt) (model.Value, error) { + querier, err := ng.queryable.Querier() + if err != nil { + return nil, err + } + defer querier.Close() + prepareTimer := query.stats.GetTimer(stats.QueryPreparationTime).Start() - err := ng.populateIterators(ctx, s) + err = ng.populateIterators(ctx, querier, s) prepareTimer.Stop() if err != nil { return nil, err } - defer ng.closeIterators(s) evalTimer := query.stats.GetTimer(stats.InnerEvalTime).Start() @@ -463,20 +473,20 @@ func (ng *Engine) execEvalStmt(ctx context.Context, query *query, s *EvalStmt) ( return resMatrix, nil } -func (ng *Engine) populateIterators(ctx context.Context, s *EvalStmt) error { +func (ng *Engine) populateIterators(ctx context.Context, querier local.Querier, s *EvalStmt) error { var queryErr error Inspect(s.Expr, func(node Node) bool { switch n := node.(type) { case *VectorSelector: if s.Start.Equal(s.End) { - n.iterators, queryErr = ng.querier.QueryInstant( + n.iterators, queryErr = querier.QueryInstant( ctx, s.Start.Add(-n.Offset), StalenessDelta, n.LabelMatchers..., ) } else { - n.iterators, queryErr = ng.querier.QueryRange( + n.iterators, queryErr = querier.QueryRange( ctx, s.Start.Add(-n.Offset-StalenessDelta), s.End.Add(-n.Offset), @@ -487,7 +497,7 @@ func (ng *Engine) populateIterators(ctx context.Context, s *EvalStmt) error { return false } case *MatrixSelector: - n.iterators, queryErr = ng.querier.QueryRange( + n.iterators, queryErr = querier.QueryRange( ctx, s.Start.Add(-n.Offset-n.Range), s.End.Add(-n.Offset), diff --git a/relabel/relabel.go b/relabel/relabel.go index 0e5d616ca3..6ce37296c3 100644 --- a/relabel/relabel.go +++ b/relabel/relabel.go @@ -61,12 +61,17 @@ func relabel(labels model.LabelSet, cfg *config.RelabelConfig) model.LabelSet { if indexes == nil { break } + target := model.LabelName(cfg.Regex.ExpandString([]byte{}, string(cfg.TargetLabel), val, indexes)) + if !target.IsValid() { + delete(labels, cfg.TargetLabel) + break + } res := cfg.Regex.ExpandString([]byte{}, cfg.Replacement, val, indexes) if len(res) == 0 { delete(labels, cfg.TargetLabel) - } else { - labels[cfg.TargetLabel] = model.LabelValue(res) + break } + labels[target] = model.LabelValue(res) case config.RelabelHashMod: mod := sum64(md5.Sum([]byte(val))) % cfg.Modulus labels[cfg.TargetLabel] = model.LabelValue(fmt.Sprintf("%d", mod)) diff --git a/relabel/relabel_test.go b/relabel/relabel_test.go index 6773ffeb44..4004fa96ff 100644 --- a/relabel/relabel_test.go +++ b/relabel/relabel_test.go @@ -277,6 +277,106 @@ func TestRelabel(t *testing.T) { "my_baz": "bbb", }, }, + { // valid case + input: model.LabelSet{ + "a": "some-name-value", + }, + relabel: []*config.RelabelConfig{ + { + SourceLabels: model.LabelNames{"a"}, + Regex: config.MustNewRegexp("some-([^-]+)-([^,]+)"), + Action: config.RelabelReplace, + Replacement: "${2}", + TargetLabel: model.LabelName("${1}"), + }, + }, + output: model.LabelSet{ + "a": "some-name-value", + "name": "value", + }, + }, + { // invalid replacement "" + input: model.LabelSet{ + "a": "some-name-value", + }, + relabel: []*config.RelabelConfig{ + { + SourceLabels: model.LabelNames{"a"}, + Regex: config.MustNewRegexp("some-([^-]+)-([^,]+)"), + Action: config.RelabelReplace, + Replacement: "${3}", + TargetLabel: model.LabelName("${1}"), + }, + }, + output: model.LabelSet{ + "a": "some-name-value", + }, + }, + { // invalid target_labels + input: model.LabelSet{ + "a": "some-name-value", + }, + relabel: []*config.RelabelConfig{ + { + SourceLabels: model.LabelNames{"a"}, + Regex: config.MustNewRegexp("some-([^-]+)-([^,]+)"), + Action: config.RelabelReplace, + Replacement: "${1}", + TargetLabel: model.LabelName("${3}"), + }, + { + SourceLabels: model.LabelNames{"a"}, + Regex: config.MustNewRegexp("some-([^-]+)-([^,]+)"), + Action: config.RelabelReplace, + Replacement: "${1}", + TargetLabel: model.LabelName("0${3}"), + }, + { + SourceLabels: model.LabelNames{"a"}, + Regex: config.MustNewRegexp("some-([^-]+)-([^,]+)"), + Action: config.RelabelReplace, + Replacement: "${1}", + TargetLabel: model.LabelName("-${3}"), + }, + }, + output: model.LabelSet{ + "a": "some-name-value", + }, + }, + { // more complex real-life like usecase + input: model.LabelSet{ + "__meta_sd_tags": "path:/secret,job:some-job,label:foo=bar", + }, + relabel: []*config.RelabelConfig{ + { + SourceLabels: model.LabelNames{"__meta_sd_tags"}, + Regex: config.MustNewRegexp("(?:.+,|^)path:(/[^,]+).*"), + Action: config.RelabelReplace, + Replacement: "${1}", + TargetLabel: model.LabelName("__metrics_path__"), + }, + { + SourceLabels: model.LabelNames{"__meta_sd_tags"}, + Regex: config.MustNewRegexp("(?:.+,|^)job:([^,]+).*"), + Action: config.RelabelReplace, + Replacement: "${1}", + TargetLabel: model.LabelName("job"), + }, + { + SourceLabels: model.LabelNames{"__meta_sd_tags"}, + Regex: config.MustNewRegexp("(?:.+,|^)label:([^=]+)=([^,]+).*"), + Action: config.RelabelReplace, + Replacement: "${2}", + TargetLabel: model.LabelName("${1}"), + }, + }, + output: model.LabelSet{ + "__meta_sd_tags": "path:/secret,job:some-job,label:foo=bar", + "__metrics_path__": "/secret", + "job": "some-job", + "foo": "bar", + }, + }, } for i, test := range tests { diff --git a/retrieval/discovery/discovery.go b/retrieval/discovery/discovery.go index e270918d6e..aebe1e816b 100644 --- a/retrieval/discovery/discovery.go +++ b/retrieval/discovery/discovery.go @@ -14,6 +14,7 @@ package discovery import ( + "github.com/prometheus/common/log" "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/retrieval/discovery/consul" "github.com/prometheus/prometheus/retrieval/discovery/dns" @@ -27,15 +28,8 @@ func NewConsul(cfg *config.ConsulSDConfig) (*consul.Discovery, error) { } // NewKubernetesDiscovery creates a Kubernetes service discovery based on the passed-in configuration. -func NewKubernetesDiscovery(conf *config.KubernetesSDConfig) (*kubernetes.Discovery, error) { - kd := &kubernetes.Discovery{ - Conf: conf, - } - err := kd.Initialize() - if err != nil { - return nil, err - } - return kd, nil +func NewKubernetesDiscovery(conf *config.KubernetesSDConfig) (*kubernetes.Kubernetes, error) { + return kubernetes.New(log.Base(), conf) } // NewMarathon creates a new Marathon based discovery. diff --git a/retrieval/discovery/gce.go b/retrieval/discovery/gce.go index 0b9116bfad..16359ae316 100644 --- a/retrieval/discovery/gce.go +++ b/retrieval/discovery/gce.go @@ -29,18 +29,21 @@ import ( "golang.org/x/oauth2/google" "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/util/strutil" ) const ( - gceLabel = model.MetaLabelPrefix + "gce_" - gceLabelProject = gceLabel + "project" - gceLabelZone = gceLabel + "zone" - gceLabelNetwork = gceLabel + "network" - gceLabelSubnetwork = gceLabel + "subnetwork" - gceLabelPublicIP = gceLabel + "public_ip" - gceLabelPrivateIP = gceLabel + "private_ip" - gceLabelInstanceName = gceLabel + "instance_name" - gceLabelTags = gceLabel + "tags" + gceLabel = model.MetaLabelPrefix + "gce_" + gceLabelProject = gceLabel + "project" + gceLabelZone = gceLabel + "zone" + gceLabelNetwork = gceLabel + "network" + gceLabelSubnetwork = gceLabel + "subnetwork" + gceLabelPublicIP = gceLabel + "public_ip" + gceLabelPrivateIP = gceLabel + "private_ip" + gceLabelInstanceName = gceLabel + "instance_name" + gceLabelInstanceStatus = gceLabel + "instance_status" + gceLabelTags = gceLabel + "tags" + gceLabelMetadata = gceLabel + "metadata_" // Constants for instrumentation. namespace = "prometheus" @@ -164,9 +167,10 @@ func (gd *GCEDiscovery) refresh() (tg *config.TargetGroup, err error) { continue } labels := model.LabelSet{ - gceLabelProject: model.LabelValue(gd.project), - gceLabelZone: model.LabelValue(inst.Zone), - gceLabelInstanceName: model.LabelValue(inst.Name), + gceLabelProject: model.LabelValue(gd.project), + gceLabelZone: model.LabelValue(inst.Zone), + gceLabelInstanceName: model.LabelValue(inst.Name), + gceLabelInstanceStatus: model.LabelValue(inst.Status), } priIface := inst.NetworkInterfaces[0] labels[gceLabelNetwork] = model.LabelValue(priIface.Network) @@ -175,6 +179,7 @@ func (gd *GCEDiscovery) refresh() (tg *config.TargetGroup, err error) { addr := fmt.Sprintf("%s:%d", priIface.NetworkIP, gd.port) labels[model.AddressLabel] = model.LabelValue(addr) + // Tags in GCE are usually only used for networking rules. if inst.Tags != nil && len(inst.Tags.Items) > 0 { // We surround the separated list with the separator as well. This way regular expressions // in relabeling rules don't have to consider tag positions. @@ -182,6 +187,18 @@ func (gd *GCEDiscovery) refresh() (tg *config.TargetGroup, err error) { labels[gceLabelTags] = model.LabelValue(tags) } + // GCE metadata are key-value pairs for user supplied attributes. + if inst.Metadata != nil { + for _, i := range inst.Metadata.Items { + // Protect against occasional nil pointers. + if i.Value == nil { + continue + } + name := strutil.SanitizeLabelName(i.Key) + labels[gceLabelMetadata+model.LabelName(name)] = model.LabelValue(*i.Value) + } + } + if len(priIface.AccessConfigs) > 0 { ac := priIface.AccessConfigs[0] if ac.Type == "ONE_TO_ONE_NAT" { diff --git a/retrieval/discovery/kubernetes/discovery.go b/retrieval/discovery/kubernetes/discovery.go deleted file mode 100644 index b707f84821..0000000000 --- a/retrieval/discovery/kubernetes/discovery.go +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package kubernetes - -import ( - "fmt" - "io/ioutil" - "net" - "net/http" - "os" - "sync" - "time" - - "github.com/prometheus/common/log" - "github.com/prometheus/common/model" - "golang.org/x/net/context" - - "github.com/prometheus/prometheus/config" - "github.com/prometheus/prometheus/util/httputil" -) - -const ( - // kubernetesMetaLabelPrefix is the meta prefix used for all meta labels. - // in this discovery. - metaLabelPrefix = model.MetaLabelPrefix + "kubernetes_" - - // roleLabel is the name for the label containing a target's role. - roleLabel = metaLabelPrefix + "role" - - sourcePodPrefix = "pods" - // podsTargetGroupNAme is the name given to the target group for pods - podsTargetGroupName = "pods" - // podNamespaceLabel is the name for the label containing a target pod's namespace - podNamespaceLabel = metaLabelPrefix + "pod_namespace" - // podNameLabel is the name for the label containing a target pod's name - podNameLabel = metaLabelPrefix + "pod_name" - // podAddressLabel is the name for the label containing a target pod's IP address (the PodIP) - podAddressLabel = metaLabelPrefix + "pod_address" - // podContainerNameLabel is the name for the label containing a target's container name - podContainerNameLabel = metaLabelPrefix + "pod_container_name" - // podContainerPortNameLabel is the name for the label containing the name of the port selected for a target - podContainerPortNameLabel = metaLabelPrefix + "pod_container_port_name" - // PodContainerPortListLabel is the name for the label containing a list of all TCP ports on the target container - podContainerPortListLabel = metaLabelPrefix + "pod_container_port_list" - // PodContainerPortMapPrefix is the prefix used to create the names of labels that associate container port names to port values - // Such labels will be named (podContainerPortMapPrefix)_(PortName) = (ContainerPort) - podContainerPortMapPrefix = metaLabelPrefix + "pod_container_port_map_" - // podReadyLabel is the name for the label containing the 'Ready' status (true/false/unknown) for a target - podReadyLabel = metaLabelPrefix + "pod_ready" - // podLabelPrefix is the prefix for prom label names corresponding to k8s labels for a target pod - podLabelPrefix = metaLabelPrefix + "pod_label_" - // podAnnotationPrefix is the prefix for prom label names corresponding to k8s annotations for a target pod - podAnnotationPrefix = metaLabelPrefix + "pod_annotation_" - // podNodeLabel is the name for the label containing the name of the node that a pod is scheduled on to - podNodeNameLabel = metaLabelPrefix + "pod_node_name" - // podHostIPLabel is the name for the label containing the IP of the node that a pod is scheduled on to - podHostIPLabel = metaLabelPrefix + "pod_host_ip" - - sourceServicePrefix = "services" - // serviceNamespaceLabel is the name for the label containing a target's service namespace. - serviceNamespaceLabel = metaLabelPrefix + "service_namespace" - // serviceNameLabel is the name for the label containing a target's service name. - serviceNameLabel = metaLabelPrefix + "service_name" - // serviceLabelPrefix is the prefix for the service labels. - serviceLabelPrefix = metaLabelPrefix + "service_label_" - // serviceAnnotationPrefix is the prefix for the service annotations. - serviceAnnotationPrefix = metaLabelPrefix + "service_annotation_" - - // nodesTargetGroupName is the name given to the target group for nodes. - nodesTargetGroupName = "nodes" - // nodeLabelPrefix is the prefix for the node labels. - nodeLabelPrefix = metaLabelPrefix + "node_label_" - // nodeAddressPrefix is the prefix for the node addresses. - nodeAddressPrefix = metaLabelPrefix + "node_address_" - // nodePortLabel is the name of the label for the node port. - nodePortLabel = metaLabelPrefix + "node_port" - - // apiServersTargetGroupName is the name given to the target group for API servers. - apiServersTargetGroupName = "apiServers" - - serviceAccountToken = "/var/run/secrets/kubernetes.io/serviceaccount/token" - serviceAccountCACert = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - - apiVersion = "v1" - apiPrefix = "/api/" + apiVersion - nodesURL = apiPrefix + "/nodes" - podsURL = apiPrefix + "/pods" - servicesURL = apiPrefix + "/services" - endpointsURL = apiPrefix + "/endpoints" - serviceEndpointsURL = apiPrefix + "/namespaces/%s/endpoints/%s" -) - -// Discovery implements a TargetProvider for Kubernetes services. -type Discovery struct { - client *http.Client - Conf *config.KubernetesSDConfig - - apiServers []config.URL - apiServersMu sync.RWMutex -} - -// Initialize sets up the discovery for usage. -func (kd *Discovery) Initialize() error { - client, err := newKubernetesHTTPClient(kd.Conf) - - if err != nil { - return err - } - - kd.apiServers = kd.Conf.APIServers - kd.client = client - - return nil -} - -// Run implements the TargetProvider interface. -func (kd *Discovery) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { - log.Debugf("Start Kubernetes service discovery") - defer close(ch) - - switch kd.Conf.Role { - case config.KubernetesRolePod, config.KubernetesRoleContainer: - pd := &podDiscovery{ - retryInterval: time.Duration(kd.Conf.RetryInterval), - kd: kd, - } - pd.run(ctx, ch) - case config.KubernetesRoleNode: - nd := &nodeDiscovery{ - retryInterval: time.Duration(kd.Conf.RetryInterval), - kd: kd, - } - nd.run(ctx, ch) - case config.KubernetesRoleService, config.KubernetesRoleEndpoint: - sd := &serviceDiscovery{ - retryInterval: time.Duration(kd.Conf.RetryInterval), - kd: kd, - } - sd.run(ctx, ch) - case config.KubernetesRoleAPIServer: - select { - case ch <- []*config.TargetGroup{kd.updateAPIServersTargetGroup()}: - case <-ctx.Done(): - return - } - default: - log.Errorf("unknown Kubernetes discovery kind %q", kd.Conf.Role) - return - } -} - -func (kd *Discovery) queryAPIServerPath(path string) (*http.Response, error) { - req, err := http.NewRequest("GET", path, nil) - if err != nil { - return nil, err - } - return kd.queryAPIServerReq(req) -} - -func (kd *Discovery) queryAPIServerReq(req *http.Request) (*http.Response, error) { - // Lock in case we need to rotate API servers to request. - kd.apiServersMu.Lock() - defer kd.apiServersMu.Unlock() - var lastErr error - for i := 0; i < len(kd.apiServers); i++ { - cloneReq := *req - cloneReq.URL.Host = kd.apiServers[0].Host - cloneReq.URL.Scheme = kd.apiServers[0].Scheme - res, err := kd.client.Do(&cloneReq) - if err == nil { - return res, nil - } - lastErr = err - kd.rotateAPIServers() - } - return nil, fmt.Errorf("unable to query any API servers: %v", lastErr) -} - -func (kd *Discovery) rotateAPIServers() { - if len(kd.apiServers) > 1 { - kd.apiServers = append(kd.apiServers[1:], kd.apiServers[0]) - } -} - -func (kd *Discovery) updateAPIServersTargetGroup() *config.TargetGroup { - tg := &config.TargetGroup{ - Source: apiServersTargetGroupName, - Labels: model.LabelSet{ - roleLabel: model.LabelValue("apiserver"), - }, - } - - for _, apiServer := range kd.apiServers { - apiServerAddress := apiServer.Host - _, _, err := net.SplitHostPort(apiServerAddress) - // If error then no port is specified - use default for scheme. - if err != nil { - switch apiServer.Scheme { - case "http": - apiServerAddress = net.JoinHostPort(apiServerAddress, "80") - case "https": - apiServerAddress = net.JoinHostPort(apiServerAddress, "443") - } - } - - t := model.LabelSet{ - model.AddressLabel: model.LabelValue(apiServerAddress), - model.SchemeLabel: model.LabelValue(apiServer.Scheme), - } - tg.Targets = append(tg.Targets, t) - } - - return tg -} - -func newKubernetesHTTPClient(conf *config.KubernetesSDConfig) (*http.Client, error) { - bearerTokenFile := conf.BearerTokenFile - tlsConfig := conf.TLSConfig - if conf.InCluster { - if len(bearerTokenFile) == 0 { - bearerTokenFile = serviceAccountToken - } - if len(tlsConfig.CAFile) == 0 { - // With recent versions, the CA certificate is mounted as a secret - // but we need to handle older versions too. In this case, don't - // set the CAFile & the configuration will have to use InsecureSkipVerify. - if _, err := os.Stat(serviceAccountCACert); err == nil { - tlsConfig.CAFile = serviceAccountCACert - } - } - } - tls, err := httputil.NewTLSConfig(tlsConfig) - if err != nil { - return nil, err - } - - var rt http.RoundTripper = &http.Transport{ - Dial: func(netw, addr string) (c net.Conn, err error) { - c, err = net.DialTimeout(netw, addr, time.Duration(conf.RequestTimeout)) - return - }, - TLSClientConfig: tls, - } - - // If a bearer token is provided, create a round tripper that will set the - // Authorization header correctly on each request. - bearerToken := conf.BearerToken - if len(bearerToken) == 0 && len(bearerTokenFile) > 0 { - b, err := ioutil.ReadFile(bearerTokenFile) - if err != nil { - return nil, fmt.Errorf("unable to read bearer token file %s: %s", bearerTokenFile, err) - } - bearerToken = string(b) - } - if len(bearerToken) > 0 { - rt = httputil.NewBearerAuthRoundTripper(bearerToken, rt) - } - - if conf.BasicAuth != nil { - rt = httputil.NewBasicAuthRoundTripper(conf.BasicAuth.Username, conf.BasicAuth.Password, rt) - } - - return &http.Client{ - Transport: rt, - }, nil -} - -// Until loops until stop channel is closed, running f every period. -// f may not be invoked if stop channel is already closed. -func until(f func(), period time.Duration, stopCh <-chan struct{}) { - select { - case <-stopCh: - return - default: - f() - } - for { - select { - case <-stopCh: - return - case <-time.After(period): - f() - } - } -} diff --git a/retrieval/discovery/kubernetes/discovery_test.go b/retrieval/discovery/kubernetes/discovery_test.go deleted file mode 100644 index 89ea76d69c..0000000000 --- a/retrieval/discovery/kubernetes/discovery_test.go +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package kubernetes - -import ( - "flag" - "math/rand" - "os" - "testing" - - _ "github.com/prometheus/common/log" - "github.com/prometheus/common/model" -) - -func TestMain(m *testing.M) { - flag.Parse() - os.Exit(m.Run()) -} - -var portsA = []ContainerPort{ - { - Name: "http", - ContainerPort: 80, - Protocol: "TCP", - }, -} - -var portsB = []ContainerPort{ - { - Name: "https", - ContainerPort: 443, - Protocol: "TCP", - }, -} - -var portsNoTcp = []ContainerPort{ - { - Name: "dns", - ContainerPort: 53, - Protocol: "UDP", - }, -} - -var portsMultiA = []ContainerPort{ - { - Name: "http", - ContainerPort: 80, - Protocol: "TCP", - }, - { - Name: "ssh", - ContainerPort: 22, - Protocol: "TCP", - }, -} - -var portsMultiB = []ContainerPort{ - { - Name: "http", - ContainerPort: 80, - Protocol: "TCP", - }, - { - Name: "https", - ContainerPort: 443, - Protocol: "TCP", - }, -} - -func container(name string, ports []ContainerPort) Container { - p := make([]ContainerPort, len(ports)) - copy(p, ports) - - // Shuffle order of ports to ensure code enforces determinism - for i := range p { - j := rand.Intn(i + 1) - p[i], p[j] = p[j], p[i] - } - - return Container{ - Name: name, - Ports: p, - } -} - -func pod(name string, containers []Container) *Pod { - c := make([]Container, len(containers)) - copy(c, containers) - - // Shuffle order of containers to ensure code enforces determinism - for i := range c { - j := rand.Intn(i + 1) - c[i], c[j] = c[j], c[i] - } - - return &Pod{ - ObjectMeta: ObjectMeta{ - Name: name, - }, - PodStatus: PodStatus{ - PodIP: "1.1.1.1", - Phase: "Running", - Conditions: []PodCondition{ - { - Type: "Ready", - Status: "True", - }, - }, - HostIP: "2.2.2.2", - }, - PodSpec: PodSpec{ - Containers: c, - NodeName: "test-node", - }, - } -} - -func TestUpdatePodTargets(t *testing.T) { - var result []model.LabelSet - - // Multiple iterations help ensure that we'll see different permutations via the various randomizations that occur - for i := 0; i < 100; i++ { - // Return no targets for a pod that isn't "Running" - result = updatePodTargets(&Pod{PodStatus: PodStatus{PodIP: "1.1.1.1"}}, true) - if len(result) > 0 { - t.Fatalf("expected 0 targets, received %d", len(result)) - } - - // Return no targets for a pod with no IP - result = updatePodTargets(&Pod{PodStatus: PodStatus{Phase: "Running"}}, true) - if len(result) > 0 { - t.Fatalf("expected 0 targets, received %d", len(result)) - } - - // A pod with no containers (?!) should not produce any targets - result = updatePodTargets(pod("empty", []Container{}), true) - if len(result) > 0 { - t.Fatalf("expected 0 targets, received %d", len(result)) - } - - // Return no targets for a pod that has no HostIP - result = updatePodTargets(&Pod{PodStatus: PodStatus{PodIP: "1.1.1.1", Phase: "Running"}}, true) - if len(result) > 0 { - t.Fatalf("expected 0 targets, received %d", len(result)) - } - - // A pod with all valid containers should return one target per container with allContainers=true - result = updatePodTargets(pod("easy", []Container{container("a", portsA), container("b", portsB)}), true) - if len(result) != 2 { - t.Fatalf("expected 2 targets, received %d", len(result)) - } - if result[0][podReadyLabel] != "true" { - t.Fatalf("expected result[0] podReadyLabel 'true', received '%s'", result[0][podReadyLabel]) - } - if _, ok := result[0][podContainerPortMapPrefix+"http"]; !ok { - t.Fatalf("expected result[0][podContainerPortMapPrefix + 'http'] to be '80', but was missing") - } - if result[0][podContainerPortMapPrefix+"http"] != "80" { - t.Fatalf("expected result[0][podContainerPortMapPrefix + 'http'] to be '80', but was %s", result[0][podContainerPortMapPrefix+"http"]) - } - if _, ok := result[1][podContainerPortMapPrefix+"https"]; !ok { - t.Fatalf("expected result[1][podContainerPortMapPrefix + 'https'] to be '443', but was missing") - } - if result[1][podContainerPortMapPrefix+"https"] != "443" { - t.Fatalf("expected result[1][podContainerPortMapPrefix + 'https'] to be '443', but was %s", result[1][podContainerPortMapPrefix+"https"]) - } - if result[0][podNodeNameLabel] != "test-node" { - t.Fatalf("expected result[0] podNodeNameLabel 'test-node', received '%s'", result[0][podNodeNameLabel]) - } - if result[0][podHostIPLabel] != "2.2.2.2" { - t.Fatalf("expected result[0] podHostIPLabel '2.2.2.2', received '%s'", result[0][podHostIPLabel]) - } - - // A pod with all valid containers should return one target with allContainers=false, and it should be the alphabetically first container - result = updatePodTargets(pod("easy", []Container{container("a", portsA), container("b", portsB)}), false) - if len(result) != 1 { - t.Fatalf("expected 1 targets, received %d", len(result)) - } - if _, ok := result[0][podContainerNameLabel]; !ok { - t.Fatalf("expected result[0][podContainerNameLabel] to be 'a', but was missing") - } - if result[0][podContainerNameLabel] != "a" { - t.Fatalf("expected result[0][podContainerNameLabel] to be 'a', but was '%s'", result[0][podContainerNameLabel]) - } - - // A pod with some non-targetable containers should return one target per targetable container with allContainers=true - result = updatePodTargets(pod("mixed", []Container{container("a", portsA), container("no-tcp", portsNoTcp), container("b", portsB)}), true) - if len(result) != 2 { - t.Fatalf("expected 2 targets, received %d", len(result)) - } - - // A pod with a container with multiple ports should return the numerically smallest port - result = updatePodTargets(pod("hard", []Container{container("multiA", portsMultiA), container("multiB", portsMultiB)}), true) - if len(result) != 2 { - t.Fatalf("expected 2 targets, received %d", len(result)) - } - if result[0][model.AddressLabel] != "1.1.1.1:22" { - t.Fatalf("expected result[0] address to be 1.1.1.1:22, received %s", result[0][model.AddressLabel]) - } - if result[0][podContainerPortListLabel] != ",ssh=22,http=80," { - t.Fatalf("expected result[0] podContainerPortListLabel to be ',ssh=22,http=80,', received '%s'", result[0][podContainerPortListLabel]) - } - if result[1][model.AddressLabel] != "1.1.1.1:80" { - t.Fatalf("expected result[1] address to be 1.1.1.1:80, received %s", result[1][model.AddressLabel]) - } - if result[1][podContainerPortListLabel] != ",http=80,https=443," { - t.Fatalf("expected result[1] podContainerPortListLabel to be ',http=80,https=443,', received '%s'", result[1][podContainerPortListLabel]) - } - } -} diff --git a/retrieval/discovery/kubernetes/endpoints.go b/retrieval/discovery/kubernetes/endpoints.go new file mode 100644 index 0000000000..cb7a9e5519 --- /dev/null +++ b/retrieval/discovery/kubernetes/endpoints.go @@ -0,0 +1,280 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + "fmt" + "net" + "strconv" + + "github.com/prometheus/prometheus/config" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "golang.org/x/net/context" + apiv1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/tools/cache" +) + +// Endpoints discovers new endpoint targets. +type Endpoints struct { + logger log.Logger + + endpointsInf cache.SharedInformer + serviceInf cache.SharedInformer + podInf cache.SharedInformer + + podStore cache.Store + endpointsStore cache.Store + serviceStore cache.Store +} + +// NewEndpoints returns a new endpoints discovery. +func NewEndpoints(l log.Logger, svc, eps, pod cache.SharedInformer) *Endpoints { + ep := &Endpoints{ + logger: l, + endpointsInf: eps, + endpointsStore: eps.GetStore(), + serviceInf: svc, + serviceStore: svc.GetStore(), + podInf: pod, + podStore: pod.GetStore(), + } + + return ep +} + +// Run implements the retrieval.TargetProvider interface. +func (e *Endpoints) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { + // Send full initial set of endpoint targets. + var initial []*config.TargetGroup + + for _, o := range e.endpointsStore.List() { + tg := e.buildEndpoints(o.(*apiv1.Endpoints)) + initial = append(initial, tg) + } + select { + case <-ctx.Done(): + return + case ch <- initial: + } + // Send target groups for pod updates. + send := func(tg *config.TargetGroup) { + if tg == nil { + return + } + e.logger.With("tg", fmt.Sprintf("%#v", tg)).Debugln("endpoints update") + select { + case <-ctx.Done(): + case ch <- []*config.TargetGroup{tg}: + } + } + + e.endpointsInf.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: func(o interface{}) { + send(e.buildEndpoints(o.(*apiv1.Endpoints))) + }, + UpdateFunc: func(_, o interface{}) { + send(e.buildEndpoints(o.(*apiv1.Endpoints))) + }, + DeleteFunc: func(o interface{}) { + send(&config.TargetGroup{Source: endpointsSource(o.(*apiv1.Endpoints).ObjectMeta)}) + }, + }) + + serviceUpdate := func(svc *apiv1.Service) { + ep := &apiv1.Endpoints{} + ep.Namespace = svc.Namespace + ep.Name = svc.Name + obj, exists, err := e.endpointsStore.Get(ep) + if exists && err != nil { + send(e.buildEndpoints(obj.(*apiv1.Endpoints))) + } + if err != nil { + e.logger.With("err", err).Errorln("retrieving endpoints failed") + } + } + e.serviceInf.AddEventHandler(cache.ResourceEventHandlerFuncs{ + // TODO(fabxc): potentially remove add and delete event handlers. Those should + // be triggered via the endpoint handlers already. + AddFunc: func(o interface{}) { serviceUpdate(o.(*apiv1.Service)) }, + UpdateFunc: func(_, o interface{}) { serviceUpdate(o.(*apiv1.Service)) }, + DeleteFunc: func(o interface{}) { serviceUpdate(o.(*apiv1.Service)) }, + }) + + // Block until the target provider is explicitly canceled. + <-ctx.Done() +} + +func endpointsSource(ep apiv1.ObjectMeta) string { + return "endpoints/" + ep.Namespace + "/" + ep.Name +} + +const ( + endpointsNameLabel = metaLabelPrefix + "endpoints_name" + endpointReadyLabel = metaLabelPrefix + "endpoint_ready" + endpointPortNameLabel = metaLabelPrefix + "endpoint_port_name" + endpointPortProtocolLabel = metaLabelPrefix + "endpoint_port_protocol" +) + +func (e *Endpoints) buildEndpoints(eps *apiv1.Endpoints) *config.TargetGroup { + if len(eps.Subsets) == 0 { + return nil + } + + tg := &config.TargetGroup{ + Source: endpointsSource(eps.ObjectMeta), + } + tg.Labels = model.LabelSet{ + namespaceLabel: lv(eps.Namespace), + endpointsNameLabel: lv(eps.Name), + } + e.addServiceLabels(eps.Namespace, eps.Name, tg) + + type podEntry struct { + pod *apiv1.Pod + servicePorts []apiv1.EndpointPort + } + seenPods := map[string]*podEntry{} + + add := func(addr apiv1.EndpointAddress, port apiv1.EndpointPort, ready string) { + a := net.JoinHostPort(addr.IP, strconv.FormatUint(uint64(port.Port), 10)) + + target := model.LabelSet{ + model.AddressLabel: lv(a), + endpointPortNameLabel: lv(port.Name), + endpointPortProtocolLabel: lv(string(port.Protocol)), + endpointReadyLabel: lv(ready), + } + + pod := e.resolvePodRef(addr.TargetRef) + if pod == nil { + // This target is not a Pod, so don't continue with Pod specific logic. + tg.Targets = append(tg.Targets, target) + return + } + s := pod.Namespace + "/" + pod.Name + + sp, ok := seenPods[s] + if !ok { + sp = &podEntry{pod: pod} + seenPods[s] = sp + } + + // Attach standard pod labels. + target = target.Merge(podLabels(pod)) + + // Attach potential container port labels matching the endpoint port. + for _, c := range pod.Spec.Containers { + for _, cport := range c.Ports { + if port.Port == cport.ContainerPort { + ports := strconv.FormatUint(uint64(port.Port), 10) + + target[podContainerNameLabel] = lv(c.Name) + target[podContainerPortNameLabel] = lv(cport.Name) + target[podContainerPortNumberLabel] = lv(ports) + target[podContainerPortProtocolLabel] = lv(string(port.Protocol)) + break + } + } + } + + // Add service port so we know that we have already generated a target + // for it. + sp.servicePorts = append(sp.servicePorts, port) + tg.Targets = append(tg.Targets, target) + } + + for _, ss := range eps.Subsets { + for _, port := range ss.Ports { + for _, addr := range ss.Addresses { + add(addr, port, "true") + } + // Although this generates the same target again, as it was generated in + // the loop above, it causes the ready meta label to be overridden. + for _, addr := range ss.NotReadyAddresses { + add(addr, port, "false") + } + } + } + + // For all seen pods, check all container ports. If they were not covered + // by one of the service endpoints, generate targets for them. + for _, pe := range seenPods { + for _, c := range pe.pod.Spec.Containers { + for _, cport := range c.Ports { + hasSeenPort := func() bool { + for _, eport := range pe.servicePorts { + if cport.ContainerPort == eport.Port { + return true + } + } + return false + } + if hasSeenPort() { + continue + } + + a := net.JoinHostPort(pe.pod.Status.PodIP, strconv.FormatUint(uint64(cport.ContainerPort), 10)) + ports := strconv.FormatUint(uint64(cport.ContainerPort), 10) + + target := model.LabelSet{ + model.AddressLabel: lv(a), + podContainerNameLabel: lv(c.Name), + podContainerPortNameLabel: lv(cport.Name), + podContainerPortNumberLabel: lv(ports), + podContainerPortProtocolLabel: lv(string(cport.Protocol)), + } + tg.Targets = append(tg.Targets, target.Merge(podLabels(pe.pod))) + } + } + } + + return tg +} + +func (e *Endpoints) resolvePodRef(ref *apiv1.ObjectReference) *apiv1.Pod { + if ref == nil || ref.Kind != "Pod" { + return nil + } + p := &apiv1.Pod{} + p.Namespace = ref.Namespace + p.Name = ref.Name + + obj, exists, err := e.podStore.Get(p) + if err != nil || !exists { + return nil + } + if err != nil { + e.logger.With("err", err).Errorln("resolving pod ref failed") + } + return obj.(*apiv1.Pod) +} + +func (e *Endpoints) addServiceLabels(ns, name string, tg *config.TargetGroup) { + svc := &apiv1.Service{} + svc.Namespace = ns + svc.Name = name + + obj, exists, err := e.serviceStore.Get(svc) + if !exists || err != nil { + return + } + if err != nil { + e.logger.With("err", err).Errorln("retrieving service failed") + } + svc = obj.(*apiv1.Service) + + tg.Labels = tg.Labels.Merge(serviceLabels(svc)) +} diff --git a/retrieval/discovery/kubernetes/endpoints_test.go b/retrieval/discovery/kubernetes/endpoints_test.go new file mode 100644 index 0000000000..8ea304a19f --- /dev/null +++ b/retrieval/discovery/kubernetes/endpoints_test.go @@ -0,0 +1,321 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + "testing" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +func endpointsStoreKeyFunc(obj interface{}) (string, error) { + return obj.(*v1.Endpoints).ObjectMeta.Name, nil +} + +func newFakeEndpointsInformer() *fakeInformer { + return newFakeInformer(endpointsStoreKeyFunc) +} + +func makeTestEndpointsDiscovery() (*Endpoints, *fakeInformer, *fakeInformer, *fakeInformer) { + svc := newFakeServiceInformer() + eps := newFakeEndpointsInformer() + pod := newFakePodInformer() + return NewEndpoints(log.Base(), svc, eps, pod), svc, eps, pod +} + +func makeEndpoints() *v1.Endpoints { + return &v1.Endpoints{ + ObjectMeta: v1.ObjectMeta{ + Name: "testendpoints", + Namespace: "default", + }, + Subsets: []v1.EndpointSubset{ + v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "1.2.3.4", + }, + }, + Ports: []v1.EndpointPort{ + v1.EndpointPort{ + Name: "testport", + Port: 9000, + Protocol: v1.ProtocolTCP, + }, + }, + }, + v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "2.3.4.5", + }, + }, + NotReadyAddresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "2.3.4.5", + }, + }, + Ports: []v1.EndpointPort{ + v1.EndpointPort{ + Name: "testport", + Port: 9001, + Protocol: v1.ProtocolTCP, + }, + }, + }, + }, + } +} + +func TestEndpointsDiscoveryInitial(t *testing.T) { + n, _, eps, _ := makeTestEndpointsDiscovery() + eps.GetStore().Add(makeEndpoints()) + + k8sDiscoveryTest{ + discovery: n, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "true", + }, + model.LabelSet{ + "__address__": "2.3.4.5:9001", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "true", + }, + model.LabelSet{ + "__address__": "2.3.4.5:9001", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "false", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_endpoints_name": "testendpoints", + }, + Source: "endpoints/default/testendpoints", + }, + }, + }.Run(t) +} + +func TestEndpointsDiscoveryAdd(t *testing.T) { + n, _, eps, pods := makeTestEndpointsDiscovery() + pods.GetStore().Add(&v1.Pod{ + ObjectMeta: v1.ObjectMeta{ + Name: "testpod", + Namespace: "default", + }, + Spec: v1.PodSpec{ + NodeName: "testnode", + Containers: []v1.Container{ + v1.Container{ + Name: "c1", + Ports: []v1.ContainerPort{ + v1.ContainerPort{ + Name: "mainport", + ContainerPort: 9000, + Protocol: v1.ProtocolTCP, + }, + }, + }, + v1.Container{ + Name: "c2", + Ports: []v1.ContainerPort{ + v1.ContainerPort{ + Name: "sideport", + ContainerPort: 9001, + Protocol: v1.ProtocolTCP, + }, + }, + }, + }, + }, + Status: v1.PodStatus{ + HostIP: "2.3.4.5", + PodIP: "1.2.3.4", + }, + }) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + go func() { + eps.Add( + &v1.Endpoints{ + ObjectMeta: v1.ObjectMeta{ + Name: "testendpoints", + Namespace: "default", + }, + Subsets: []v1.EndpointSubset{ + v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "4.3.2.1", + TargetRef: &v1.ObjectReference{ + Kind: "Pod", + Name: "testpod", + Namespace: "default", + }, + }, + }, + Ports: []v1.EndpointPort{ + v1.EndpointPort{ + Name: "testport", + Port: 9000, + Protocol: v1.ProtocolTCP, + }, + }, + }, + }, + }, + ) + }() + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "4.3.2.1:9000", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "true", + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_ready": "unknown", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_container_name": "c1", + "__meta_kubernetes_pod_container_port_name": "mainport", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + model.LabelSet{ + "__address__": "1.2.3.4:9001", + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_ready": "unknown", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_container_name": "c2", + "__meta_kubernetes_pod_container_port_name": "sideport", + "__meta_kubernetes_pod_container_port_number": "9001", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_endpoints_name": "testendpoints", + "__meta_kubernetes_namespace": "default", + }, + Source: "endpoints/default/testendpoints", + }, + }, + }.Run(t) +} + +func TestEndpointsDiscoveryDelete(t *testing.T) { + n, _, eps, _ := makeTestEndpointsDiscovery() + eps.GetStore().Add(makeEndpoints()) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { eps.Delete(makeEndpoints()) }() }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Source: "endpoints/default/testendpoints", + }, + }, + }.Run(t) +} + +func TestEndpointsDiscoveryUpdate(t *testing.T) { + n, _, eps, _ := makeTestEndpointsDiscovery() + eps.GetStore().Add(makeEndpoints()) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + go func() { + eps.Update(&v1.Endpoints{ + ObjectMeta: v1.ObjectMeta{ + Name: "testendpoints", + Namespace: "default", + }, + Subsets: []v1.EndpointSubset{ + v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "1.2.3.4", + }, + }, + Ports: []v1.EndpointPort{ + v1.EndpointPort{ + Name: "testport", + Port: 9000, + Protocol: v1.ProtocolTCP, + }, + }, + }, + v1.EndpointSubset{ + Addresses: []v1.EndpointAddress{ + v1.EndpointAddress{ + IP: "2.3.4.5", + }, + }, + Ports: []v1.EndpointPort{ + v1.EndpointPort{ + Name: "testport", + Port: 9001, + Protocol: v1.ProtocolTCP, + }, + }, + }, + }, + }) + }() + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "true", + }, + model.LabelSet{ + "__address__": "2.3.4.5:9001", + "__meta_kubernetes_endpoint_port_name": "testport", + "__meta_kubernetes_endpoint_port_protocol": "TCP", + "__meta_kubernetes_endpoint_ready": "true", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_endpoints_name": "testendpoints", + }, + Source: "endpoints/default/testendpoints", + }, + }, + }.Run(t) +} diff --git a/retrieval/discovery/kubernetes/kubernetes.go b/retrieval/discovery/kubernetes/kubernetes.go new file mode 100644 index 0000000000..9b9da790d4 --- /dev/null +++ b/retrieval/discovery/kubernetes/kubernetes.go @@ -0,0 +1,186 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + "io/ioutil" + "time" + + "github.com/prometheus/prometheus/config" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "golang.org/x/net/context" + "k8s.io/client-go/1.5/kubernetes" + "k8s.io/client-go/1.5/pkg/api" + apiv1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/util/runtime" + "k8s.io/client-go/1.5/rest" + "k8s.io/client-go/1.5/tools/cache" +) + +const ( + // kubernetesMetaLabelPrefix is the meta prefix used for all meta labels. + // in this discovery. + metaLabelPrefix = model.MetaLabelPrefix + "kubernetes_" + namespaceLabel = metaLabelPrefix + "namespace" +) + +// Kubernetes implements the TargetProvider interface for discovering +// targets from Kubernetes. +type Kubernetes struct { + client kubernetes.Interface + role config.KubernetesRole + logger log.Logger +} + +func init() { + runtime.ErrorHandlers = append(runtime.ErrorHandlers, func(err error) { + log.With("component", "kube_client_runtime").Errorln(err) + }) +} + +// New creates a new Kubernetes discovery for the given role. +func New(l log.Logger, conf *config.KubernetesSDConfig) (*Kubernetes, error) { + var ( + kcfg *rest.Config + err error + ) + if conf.APIServer.URL == nil { + kcfg, err = rest.InClusterConfig() + if err != nil { + return nil, err + } + } else { + token := conf.BearerToken + if conf.BearerTokenFile != "" { + bf, err := ioutil.ReadFile(conf.BearerTokenFile) + if err != nil { + return nil, err + } + token = string(bf) + } + + kcfg = &rest.Config{ + Host: conf.APIServer.String(), + BearerToken: token, + TLSClientConfig: rest.TLSClientConfig{ + CAFile: conf.TLSConfig.CAFile, + }, + } + } + kcfg.UserAgent = "prometheus/discovery" + + if conf.BasicAuth != nil { + kcfg.Username = conf.BasicAuth.Username + kcfg.Password = conf.BasicAuth.Password + } + kcfg.TLSClientConfig.CertFile = conf.TLSConfig.CertFile + kcfg.TLSClientConfig.KeyFile = conf.TLSConfig.KeyFile + kcfg.Insecure = conf.TLSConfig.InsecureSkipVerify + + c, err := kubernetes.NewForConfig(kcfg) + if err != nil { + return nil, err + } + return &Kubernetes{ + client: c, + logger: l, + role: conf.Role, + }, nil +} + +const resyncPeriod = 10 * time.Minute + +// Run implements the TargetProvider interface. +func (k *Kubernetes) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { + defer close(ch) + + rclient := k.client.Core().GetRESTClient() + + switch k.role { + case "endpoint": + elw := cache.NewListWatchFromClient(rclient, "endpoints", api.NamespaceAll, nil) + slw := cache.NewListWatchFromClient(rclient, "services", api.NamespaceAll, nil) + plw := cache.NewListWatchFromClient(rclient, "pods", api.NamespaceAll, nil) + eps := NewEndpoints( + k.logger.With("kubernetes_sd", "endpoint"), + cache.NewSharedInformer(slw, &apiv1.Service{}, resyncPeriod), + cache.NewSharedInformer(elw, &apiv1.Endpoints{}, resyncPeriod), + cache.NewSharedInformer(plw, &apiv1.Pod{}, resyncPeriod), + ) + go eps.endpointsInf.Run(ctx.Done()) + go eps.serviceInf.Run(ctx.Done()) + go eps.podInf.Run(ctx.Done()) + + for !eps.serviceInf.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + for !eps.endpointsInf.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + for !eps.podInf.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + eps.Run(ctx, ch) + + case "pod": + plw := cache.NewListWatchFromClient(rclient, "pods", api.NamespaceAll, nil) + pod := NewPod( + k.logger.With("kubernetes_sd", "pod"), + cache.NewSharedInformer(plw, &apiv1.Pod{}, resyncPeriod), + ) + go pod.informer.Run(ctx.Done()) + + for !pod.informer.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + pod.Run(ctx, ch) + + case "service": + slw := cache.NewListWatchFromClient(rclient, "services", api.NamespaceAll, nil) + svc := NewService( + k.logger.With("kubernetes_sd", "service"), + cache.NewSharedInformer(slw, &apiv1.Service{}, resyncPeriod), + ) + go svc.informer.Run(ctx.Done()) + + for !svc.informer.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + svc.Run(ctx, ch) + + case "node": + nlw := cache.NewListWatchFromClient(rclient, "nodes", api.NamespaceAll, nil) + node := NewNode( + k.logger.With("kubernetes_sd", "node"), + cache.NewSharedInformer(nlw, &apiv1.Node{}, resyncPeriod), + ) + go node.informer.Run(ctx.Done()) + + for !node.informer.HasSynced() { + time.Sleep(100 * time.Millisecond) + } + node.Run(ctx, ch) + + default: + k.logger.Errorf("unknown Kubernetes discovery kind %q", k.role) + } + + <-ctx.Done() +} + +func lv(s string) model.LabelValue { + return model.LabelValue(s) +} diff --git a/retrieval/discovery/kubernetes/node.go b/retrieval/discovery/kubernetes/node.go index 26b173b656..e2d684b841 100644 --- a/retrieval/discovery/kubernetes/node.go +++ b/retrieval/discovery/kubernetes/node.go @@ -14,229 +14,148 @@ package kubernetes import ( - "encoding/json" "fmt" - "io/ioutil" "net" - "net/http" "strconv" - "sync" - "time" "github.com/prometheus/common/log" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/util/strutil" "golang.org/x/net/context" + "k8s.io/client-go/1.5/pkg/api" + apiv1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/tools/cache" ) -type nodeDiscovery struct { - mtx sync.RWMutex - nodes map[string]*Node - retryInterval time.Duration - kd *Discovery +// Node discovers Kubernetes nodes. +type Node struct { + logger log.Logger + informer cache.SharedInformer + store cache.Store } -func (d *nodeDiscovery) run(ctx context.Context, ch chan<- []*config.TargetGroup) { +// NewNode returns a new node discovery. +func NewNode(l log.Logger, inf cache.SharedInformer) *Node { + return &Node{logger: l, informer: inf, store: inf.GetStore()} +} + +// Run implements the TargetProvider interface. +func (n *Node) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { + // Send full initial set of pod targets. + var initial []*config.TargetGroup + for _, o := range n.store.List() { + tg := n.buildNode(o.(*apiv1.Node)) + initial = append(initial, tg) + } select { - case ch <- []*config.TargetGroup{d.updateNodesTargetGroup()}: case <-ctx.Done(): return + case ch <- initial: } - update := make(chan *nodeEvent, 10) - go d.watchNodes(update, ctx.Done(), d.retryInterval) - - for { - tgs := []*config.TargetGroup{} + // Send target groups for service updates. + send := func(tg *config.TargetGroup) { select { case <-ctx.Done(): - return - case e := <-update: - log.Debugf("k8s discovery received node event (EventType=%s, Node Name=%s)", e.EventType, e.Node.ObjectMeta.Name) - d.updateNode(e.Node, e.EventType) - tgs = append(tgs, d.updateNodesTargetGroup()) - } - if tgs == nil { - continue - } - - for _, tg := range tgs { - select { - case ch <- []*config.TargetGroup{tg}: - case <-ctx.Done(): - return - } + case ch <- []*config.TargetGroup{tg}: } } + n.informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: func(o interface{}) { + send(n.buildNode(o.(*apiv1.Node))) + }, + DeleteFunc: func(o interface{}) { + send(&config.TargetGroup{Source: nodeSource(o.(*apiv1.Node))}) + }, + UpdateFunc: func(_, o interface{}) { + send(n.buildNode(o.(*apiv1.Node))) + }, + }) + + // Block until the target provider is explicitly canceled. + <-ctx.Done() } -func (d *nodeDiscovery) updateNodesTargetGroup() *config.TargetGroup { - d.mtx.RLock() - defer d.mtx.RUnlock() +func nodeSource(n *apiv1.Node) string { + return "node/" + n.Name +} +const ( + nodeNameLabel = metaLabelPrefix + "node_name" + nodeLabelPrefix = metaLabelPrefix + "node_label_" + nodeAnnotationPrefix = metaLabelPrefix + "node_annotation_" + nodeAddressPrefix = metaLabelPrefix + "node_address_" +) + +func nodeLabels(n *apiv1.Node) model.LabelSet { + ls := make(model.LabelSet, len(n.Labels)+len(n.Annotations)+2) + + ls[nodeNameLabel] = lv(n.Name) + + for k, v := range n.Labels { + ln := strutil.SanitizeLabelName(nodeLabelPrefix + k) + ls[model.LabelName(ln)] = lv(v) + } + + for k, v := range n.Annotations { + ln := strutil.SanitizeLabelName(nodeAnnotationPrefix + k) + ls[model.LabelName(ln)] = lv(v) + } + return ls +} + +func (n *Node) buildNode(node *apiv1.Node) *config.TargetGroup { tg := &config.TargetGroup{ - Source: nodesTargetGroupName, - Labels: model.LabelSet{ - roleLabel: model.LabelValue("node"), - }, + Source: nodeSource(node), + } + tg.Labels = nodeLabels(node) + + addr, addrMap, err := nodeAddress(node) + if err != nil { + n.logger.With("err", err).Debugf("No node address found") + return nil + } + addr = net.JoinHostPort(addr, strconv.FormatInt(int64(node.Status.DaemonEndpoints.KubeletEndpoint.Port), 10)) + + t := model.LabelSet{ + model.AddressLabel: lv(addr), + model.InstanceLabel: lv(node.Name), } - // Now let's loop through the nodes & add them to the target group with appropriate labels. - for nodeName, node := range d.nodes { - defaultNodeAddress, nodeAddressMap, err := nodeAddresses(node) - if err != nil { - log.Debugf("Skipping node %s: %s", node.Name, err) - continue - } - - kubeletPort := int(node.Status.DaemonEndpoints.KubeletEndpoint.Port) - - address := net.JoinHostPort(defaultNodeAddress.String(), fmt.Sprintf("%d", kubeletPort)) - - t := model.LabelSet{ - model.AddressLabel: model.LabelValue(address), - model.InstanceLabel: model.LabelValue(nodeName), - } - - for addrType, ip := range nodeAddressMap { - labelName := strutil.SanitizeLabelName(nodeAddressPrefix + string(addrType)) - t[model.LabelName(labelName)] = model.LabelValue(ip[0].String()) - } - - t[model.LabelName(nodePortLabel)] = model.LabelValue(strconv.Itoa(kubeletPort)) - - for k, v := range node.ObjectMeta.Labels { - labelName := strutil.SanitizeLabelName(nodeLabelPrefix + k) - t[model.LabelName(labelName)] = model.LabelValue(v) - } - tg.Targets = append(tg.Targets, t) + for ty, a := range addrMap { + ln := strutil.SanitizeLabelName(nodeAddressPrefix + string(ty)) + t[model.LabelName(ln)] = lv(a[0]) } + tg.Targets = append(tg.Targets, t) return tg } -// watchNodes watches nodes as they come & go. -func (d *nodeDiscovery) watchNodes(events chan *nodeEvent, done <-chan struct{}, retryInterval time.Duration) { - until(func() { - nodes, resourceVersion, err := d.getNodes() - if err != nil { - log.Errorf("Cannot initialize nodes collection: %s", err) - return - } - - // Reset the known nodes. - d.mtx.Lock() - d.nodes = map[string]*Node{} - d.mtx.Unlock() - - for _, node := range nodes { - events <- &nodeEvent{Added, node} - } - - req, err := http.NewRequest("GET", nodesURL, nil) - if err != nil { - log.Errorf("Cannot create nodes request: %s", err) - return - } - values := req.URL.Query() - values.Add("watch", "true") - values.Add("resourceVersion", resourceVersion) - req.URL.RawQuery = values.Encode() - res, err := d.kd.queryAPIServerReq(req) - if err != nil { - log.Errorf("Failed to watch nodes: %s", err) - return - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - log.Errorf("Failed to watch nodes: %d", res.StatusCode) - return - } - - d := json.NewDecoder(res.Body) - - for { - var event nodeEvent - if err := d.Decode(&event); err != nil { - log.Errorf("Watch nodes unexpectedly closed: %s", err) - return - } - - select { - case events <- &event: - case <-done: - } - } - }, retryInterval, done) -} - -func (d *nodeDiscovery) updateNode(node *Node, eventType EventType) { - d.mtx.Lock() - defer d.mtx.Unlock() - - updatedNodeName := node.ObjectMeta.Name - switch eventType { - case Deleted: - // Deleted - remove from nodes map. - delete(d.nodes, updatedNodeName) - case Added, Modified: - // Added/Modified - update the node in the nodes map. - d.nodes[updatedNodeName] = node - } -} - -func (d *nodeDiscovery) getNodes() (map[string]*Node, string, error) { - res, err := d.kd.queryAPIServerPath(nodesURL) - if err != nil { - // If we can't list nodes then we can't watch them. Assume this is a misconfiguration - // & return error. - return nil, "", fmt.Errorf("unable to list Kubernetes nodes: %s", err) - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return nil, "", fmt.Errorf("unable to list Kubernetes nodes; unexpected response: %d %s", res.StatusCode, res.Status) - } - - var nodes NodeList - if err := json.NewDecoder(res.Body).Decode(&nodes); err != nil { - body, _ := ioutil.ReadAll(res.Body) - return nil, "", fmt.Errorf("unable to list Kubernetes nodes; unexpected response body: %s", string(body)) - } - - nodeMap := map[string]*Node{} - for idx, node := range nodes.Items { - nodeMap[node.ObjectMeta.Name] = &nodes.Items[idx] - } - - return nodeMap, nodes.ResourceVersion, nil -} - // nodeAddresses returns the provided node's address, based on the priority: // 1. NodeInternalIP // 2. NodeExternalIP // 3. NodeLegacyHostIP +// 3. NodeHostName // -// Copied from k8s.io/kubernetes/pkg/util/node/node.go -func nodeAddresses(node *Node) (net.IP, map[NodeAddressType][]net.IP, error) { - addresses := node.Status.Addresses - addressMap := map[NodeAddressType][]net.IP{} - for _, addr := range addresses { - ip := net.ParseIP(addr.Address) - // All addresses should be valid IPs. - if ip == nil { - continue - } - addressMap[addr.Type] = append(addressMap[addr.Type], ip) +// Derived from k8s.io/kubernetes/pkg/util/node/node.go +func nodeAddress(node *apiv1.Node) (string, map[apiv1.NodeAddressType][]string, error) { + m := map[apiv1.NodeAddressType][]string{} + for _, a := range node.Status.Addresses { + m[a.Type] = append(m[a.Type], a.Address) } - if addresses, ok := addressMap[NodeInternalIP]; ok { - return addresses[0], addressMap, nil + + if addresses, ok := m[apiv1.NodeInternalIP]; ok { + return addresses[0], m, nil } - if addresses, ok := addressMap[NodeExternalIP]; ok { - return addresses[0], addressMap, nil + if addresses, ok := m[apiv1.NodeExternalIP]; ok { + return addresses[0], m, nil } - if addresses, ok := addressMap[NodeLegacyHostIP]; ok { - return addresses[0], addressMap, nil + if addresses, ok := m[apiv1.NodeAddressType(api.NodeLegacyHostIP)]; ok { + return addresses[0], m, nil } - return nil, nil, fmt.Errorf("host IP unknown; known addresses: %v", addresses) + if addresses, ok := m[apiv1.NodeHostName]; ok { + return addresses[0], m, nil + } + return "", m, fmt.Errorf("host address unknown") } diff --git a/retrieval/discovery/kubernetes/node_test.go b/retrieval/discovery/kubernetes/node_test.go new file mode 100644 index 0000000000..0bb69cec9e --- /dev/null +++ b/retrieval/discovery/kubernetes/node_test.go @@ -0,0 +1,323 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + "encoding/json" + "fmt" + "sync" + "testing" + "time" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "github.com/stretchr/testify/require" + "golang.org/x/net/context" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/tools/cache" +) + +type fakeInformer struct { + store cache.Store + handlers []cache.ResourceEventHandler + + blockDeltas sync.Mutex +} + +func newFakeInformer(f func(obj interface{}) (string, error)) *fakeInformer { + i := &fakeInformer{ + store: cache.NewStore(f), + } + // We want to make sure that all delta events (Add/Update/Delete) are blocked + // until our handlers to test have been added. + i.blockDeltas.Lock() + return i +} + +func (i *fakeInformer) AddEventHandler(handler cache.ResourceEventHandler) error { + i.handlers = append(i.handlers, handler) + // Only now that there is a registered handler, we are able to handle deltas. + i.blockDeltas.Unlock() + return nil +} + +func (i *fakeInformer) GetStore() cache.Store { + return i.store +} + +func (i *fakeInformer) GetController() cache.ControllerInterface { + return nil +} + +func (i *fakeInformer) Run(stopCh <-chan struct{}) { + return +} + +func (i *fakeInformer) HasSynced() bool { + return true +} + +func (i *fakeInformer) LastSyncResourceVersion() string { + return "0" +} + +func (i *fakeInformer) Add(obj interface{}) { + i.blockDeltas.Lock() + defer i.blockDeltas.Unlock() + + for _, h := range i.handlers { + h.OnAdd(obj) + } +} + +func (i *fakeInformer) Delete(obj interface{}) { + i.blockDeltas.Lock() + defer i.blockDeltas.Unlock() + + for _, h := range i.handlers { + h.OnDelete(obj) + } +} + +func (i *fakeInformer) Update(obj interface{}) { + i.blockDeltas.Lock() + defer i.blockDeltas.Unlock() + + for _, h := range i.handlers { + h.OnUpdate(nil, obj) + } +} + +type targetProvider interface { + Run(ctx context.Context, up chan<- []*config.TargetGroup) +} + +type k8sDiscoveryTest struct { + discovery targetProvider + afterStart func() + expectedInitial []*config.TargetGroup + expectedRes []*config.TargetGroup +} + +func (d k8sDiscoveryTest) Run(t *testing.T) { + ch := make(chan []*config.TargetGroup) + ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*10) + defer cancel() + go func() { + d.discovery.Run(ctx, ch) + }() + + initialRes := <-ch + if d.expectedInitial != nil { + requireTargetGroups(t, d.expectedInitial, initialRes) + } + + if d.afterStart != nil && d.expectedRes != nil { + d.afterStart() + res := <-ch + + requireTargetGroups(t, d.expectedRes, res) + } +} + +func requireTargetGroups(t *testing.T, expected, res []*config.TargetGroup) { + b1, err := json.Marshal(expected) + if err != nil { + panic(err) + } + b2, err := json.Marshal(res) + if err != nil { + panic(err) + } + + require.JSONEq(t, string(b1), string(b2)) +} + +func nodeStoreKeyFunc(obj interface{}) (string, error) { + return obj.(*v1.Node).ObjectMeta.Name, nil +} + +func newFakeNodeInformer() *fakeInformer { + return newFakeInformer(nodeStoreKeyFunc) +} + +func makeTestNodeDiscovery() (*Node, *fakeInformer) { + i := newFakeNodeInformer() + return NewNode(log.Base(), i), i +} + +func makeNode(name, address string, labels map[string]string, annotations map[string]string) *v1.Node { + return &v1.Node{ + ObjectMeta: v1.ObjectMeta{ + Name: name, + Labels: labels, + Annotations: annotations, + }, + Status: v1.NodeStatus{ + Addresses: []v1.NodeAddress{ + v1.NodeAddress{ + Type: v1.NodeInternalIP, + Address: address, + }, + }, + DaemonEndpoints: v1.NodeDaemonEndpoints{ + KubeletEndpoint: v1.DaemonEndpoint{ + Port: 10250, + }, + }, + }, + } +} + +func makeEnumeratedNode(i int) *v1.Node { + return makeNode(fmt.Sprintf("test%d", i), "1.2.3.4", map[string]string{}, map[string]string{}) +} + +func TestNodeDiscoveryInitial(t *testing.T) { + n, i := makeTestNodeDiscovery() + i.GetStore().Add(makeNode( + "test", + "1.2.3.4", + map[string]string{"testlabel": "testvalue"}, + map[string]string{"testannotation": "testannotationvalue"}, + )) + + k8sDiscoveryTest{ + discovery: n, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:10250", + "instance": "test", + "__meta_kubernetes_node_address_InternalIP": "1.2.3.4", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_node_name": "test", + "__meta_kubernetes_node_label_testlabel": "testvalue", + "__meta_kubernetes_node_annotation_testannotation": "testannotationvalue", + }, + Source: "node/test", + }, + }, + }.Run(t) +} + +func TestNodeDiscoveryAdd(t *testing.T) { + n, i := makeTestNodeDiscovery() + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Add(makeEnumeratedNode(1)) }() }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:10250", + "instance": "test1", + "__meta_kubernetes_node_address_InternalIP": "1.2.3.4", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_node_name": "test1", + }, + Source: "node/test1", + }, + }, + }.Run(t) +} + +func TestNodeDiscoveryDelete(t *testing.T) { + n, i := makeTestNodeDiscovery() + i.GetStore().Add(makeEnumeratedNode(0)) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Delete(makeEnumeratedNode(0)) }() }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:10250", + "instance": "test0", + "__meta_kubernetes_node_address_InternalIP": "1.2.3.4", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_node_name": "test0", + }, + Source: "node/test0", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Source: "node/test0", + }, + }, + }.Run(t) +} + +func TestNodeDiscoveryUpdate(t *testing.T) { + n, i := makeTestNodeDiscovery() + i.GetStore().Add(makeEnumeratedNode(0)) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { + go func() { + i.Update( + makeNode( + "test0", + "1.2.3.4", + map[string]string{"Unschedulable": "true"}, + map[string]string{}, + ), + ) + }() + }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:10250", + "instance": "test0", + "__meta_kubernetes_node_address_InternalIP": "1.2.3.4", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_node_name": "test0", + }, + Source: "node/test0", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:10250", + "instance": "test0", + "__meta_kubernetes_node_address_InternalIP": "1.2.3.4", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_node_label_Unschedulable": "true", + "__meta_kubernetes_node_name": "test0", + }, + Source: "node/test0", + }, + }, + }.Run(t) +} diff --git a/retrieval/discovery/kubernetes/pod.go b/retrieval/discovery/kubernetes/pod.go index 082553726a..3d16ea8b9d 100644 --- a/retrieval/discovery/kubernetes/pod.go +++ b/retrieval/discovery/kubernetes/pod.go @@ -14,337 +14,164 @@ package kubernetes import ( - "bytes" - "encoding/json" "fmt" - "io/ioutil" "net" - "net/http" - "sort" "strconv" "strings" - "sync" - "time" "github.com/prometheus/common/log" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/util/strutil" "golang.org/x/net/context" + "k8s.io/client-go/1.5/pkg/api" + apiv1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/tools/cache" ) -type podDiscovery struct { - mtx sync.RWMutex - pods map[string]map[string]*Pod - retryInterval time.Duration - kd *Discovery +// Pod discovers new pod targets. +type Pod struct { + informer cache.SharedInformer + store cache.Store + logger log.Logger } -func (d *podDiscovery) run(ctx context.Context, ch chan<- []*config.TargetGroup) { - pods, _, err := d.getPods() - if err != nil { - log.Errorf("Cannot initialize pods collection: %s", err) - return +// NewPod creates a new pod discovery. +func NewPod(l log.Logger, pods cache.SharedInformer) *Pod { + return &Pod{ + informer: pods, + store: pods.GetStore(), + logger: l, } - d.pods = pods +} - initial := []*config.TargetGroup{} - switch d.kd.Conf.Role { - case config.KubernetesRolePod: - initial = append(initial, d.updatePodsTargetGroup()) - case config.KubernetesRoleContainer: - for _, ns := range d.pods { - for _, pod := range ns { - initial = append(initial, d.updateContainerTargetGroup(pod)) - } - } +// Run implements the TargetProvider interface. +func (p *Pod) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { + // Send full initial set of pod targets. + var initial []*config.TargetGroup + for _, o := range p.store.List() { + tg := p.buildPod(o.(*apiv1.Pod)) + initial = append(initial, tg) + + p.logger.With("tg", fmt.Sprintf("%#v", tg)).Debugln("initial pod") } - select { - case ch <- initial: case <-ctx.Done(): return + case ch <- initial: } - update := make(chan *podEvent, 10) - go d.watchPods(update, ctx.Done(), d.retryInterval) - - for { - tgs := []*config.TargetGroup{} + // Send target groups for pod updates. + send := func(tg *config.TargetGroup) { + p.logger.With("tg", fmt.Sprintf("%#v", tg)).Debugln("pod update") select { case <-ctx.Done(): - return - case e := <-update: - log.Debugf("k8s discovery received pod event (EventType=%s, Pod Name=%s)", e.EventType, e.Pod.ObjectMeta.Name) - d.updatePod(e.Pod, e.EventType) - - switch d.kd.Conf.Role { - case config.KubernetesRoleContainer: - // Update the per-pod target group - tgs = append(tgs, d.updateContainerTargetGroup(e.Pod)) - case config.KubernetesRolePod: - // Update the all pods target group - tgs = append(tgs, d.updatePodsTargetGroup()) - } - } - if tgs == nil { - continue - } - - for _, tg := range tgs { - select { - case ch <- []*config.TargetGroup{tg}: - case <-ctx.Done(): - return - } + case ch <- []*config.TargetGroup{tg}: } } + p.informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: func(o interface{}) { + send(p.buildPod(o.(*apiv1.Pod))) + }, + DeleteFunc: func(o interface{}) { + send(&config.TargetGroup{Source: podSource(o.(*apiv1.Pod))}) + }, + UpdateFunc: func(_, o interface{}) { + send(p.buildPod(o.(*apiv1.Pod))) + }, + }) + + // Block until the target provider is explicitly canceled. + <-ctx.Done() } -func (d *podDiscovery) getPods() (map[string]map[string]*Pod, string, error) { - res, err := d.kd.queryAPIServerPath(podsURL) - if err != nil { - return nil, "", fmt.Errorf("unable to list Kubernetes pods: %s", err) - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return nil, "", fmt.Errorf("unable to list Kubernetes pods; unexpected response: %d %s", res.StatusCode, res.Status) +const ( + podNameLabel = metaLabelPrefix + "pod_name" + podIPLabel = metaLabelPrefix + "pod_ip" + podContainerNameLabel = metaLabelPrefix + "pod_container_name" + podContainerPortNameLabel = metaLabelPrefix + "pod_container_port_name" + podContainerPortNumberLabel = metaLabelPrefix + "pod_container_port_number" + podContainerPortProtocolLabel = metaLabelPrefix + "pod_container_port_protocol" + podReadyLabel = metaLabelPrefix + "pod_ready" + podLabelPrefix = metaLabelPrefix + "pod_label_" + podAnnotationPrefix = metaLabelPrefix + "pod_annotation_" + podNodeNameLabel = metaLabelPrefix + "pod_node_name" + podHostIPLabel = metaLabelPrefix + "pod_host_ip" +) + +func podLabels(pod *apiv1.Pod) model.LabelSet { + ls := model.LabelSet{ + podNameLabel: lv(pod.ObjectMeta.Name), + podIPLabel: lv(pod.Status.PodIP), + podReadyLabel: podReady(pod), + podNodeNameLabel: lv(pod.Spec.NodeName), + podHostIPLabel: lv(pod.Status.HostIP), } - var pods PodList - if err := json.NewDecoder(res.Body).Decode(&pods); err != nil { - body, _ := ioutil.ReadAll(res.Body) - return nil, "", fmt.Errorf("unable to list Kubernetes pods; unexpected response body: %s", string(body)) + for k, v := range pod.Labels { + ln := strutil.SanitizeLabelName(podLabelPrefix + k) + ls[model.LabelName(ln)] = lv(v) } - podMap := map[string]map[string]*Pod{} - for idx, pod := range pods.Items { - if _, ok := podMap[pod.ObjectMeta.Namespace]; !ok { - podMap[pod.ObjectMeta.Namespace] = map[string]*Pod{} - } - log.Debugf("Got pod %s in namespace %s", pod.ObjectMeta.Name, pod.ObjectMeta.Namespace) - podMap[pod.ObjectMeta.Namespace][pod.ObjectMeta.Name] = &pods.Items[idx] + for k, v := range pod.Annotations { + ln := strutil.SanitizeLabelName(podAnnotationPrefix + k) + ls[model.LabelName(ln)] = lv(v) } - return podMap, pods.ResourceVersion, nil + return ls } -func (d *podDiscovery) watchPods(events chan *podEvent, done <-chan struct{}, retryInterval time.Duration) { - until(func() { - pods, resourceVersion, err := d.getPods() - if err != nil { - log.Errorf("Cannot initialize pods collection: %s", err) - return - } - d.mtx.Lock() - d.pods = pods - d.mtx.Unlock() - - req, err := http.NewRequest("GET", podsURL, nil) - if err != nil { - log.Errorf("Cannot create pods request: %s", err) - return - } - - values := req.URL.Query() - values.Add("watch", "true") - values.Add("resourceVersion", resourceVersion) - req.URL.RawQuery = values.Encode() - res, err := d.kd.queryAPIServerReq(req) - if err != nil { - log.Errorf("Failed to watch pods: %s", err) - return - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - log.Errorf("Failed to watch pods: %d", res.StatusCode) - return - } - - d := json.NewDecoder(res.Body) - - for { - var event podEvent - if err := d.Decode(&event); err != nil { - log.Errorf("Watch pods unexpectedly closed: %s", err) - return - } - - select { - case events <- &event: - case <-done: - } - } - }, retryInterval, done) -} - -func (d *podDiscovery) updatePod(pod *Pod, eventType EventType) { - d.mtx.Lock() - defer d.mtx.Unlock() - - switch eventType { - case Deleted: - if _, ok := d.pods[pod.ObjectMeta.Namespace]; ok { - delete(d.pods[pod.ObjectMeta.Namespace], pod.ObjectMeta.Name) - if len(d.pods[pod.ObjectMeta.Namespace]) == 0 { - delete(d.pods, pod.ObjectMeta.Namespace) - } - } - case Added, Modified: - if _, ok := d.pods[pod.ObjectMeta.Namespace]; !ok { - d.pods[pod.ObjectMeta.Namespace] = map[string]*Pod{} - } - d.pods[pod.ObjectMeta.Namespace][pod.ObjectMeta.Name] = pod +func (p *Pod) buildPod(pod *apiv1.Pod) *config.TargetGroup { + // During startup the pod may not have an IP yet. This does not even allow + // for an up metric, so we skip the target. + if len(pod.Status.PodIP) == 0 { + return nil } -} - -func (d *podDiscovery) updateContainerTargetGroup(pod *Pod) *config.TargetGroup { - d.mtx.RLock() - defer d.mtx.RUnlock() - tg := &config.TargetGroup{ Source: podSource(pod), } + tg.Labels = podLabels(pod) + tg.Labels[namespaceLabel] = lv(pod.Namespace) - // If this pod doesn't exist, return an empty target group - if _, ok := d.pods[pod.ObjectMeta.Namespace]; !ok { - return tg - } - if _, ok := d.pods[pod.ObjectMeta.Namespace][pod.ObjectMeta.Name]; !ok { - return tg - } - - tg.Labels = model.LabelSet{ - roleLabel: model.LabelValue("container"), - } - tg.Targets = updatePodTargets(pod, true) - - return tg -} - -func (d *podDiscovery) updatePodsTargetGroup() *config.TargetGroup { - tg := &config.TargetGroup{ - Source: podsTargetGroupName, - Labels: model.LabelSet{ - roleLabel: model.LabelValue("pod"), - }, - } - - for _, namespace := range d.pods { - for _, pod := range namespace { - tg.Targets = append(tg.Targets, updatePodTargets(pod, false)...) - } - } - - return tg -} - -func podSource(pod *Pod) string { - return sourcePodPrefix + ":" + pod.ObjectMeta.Namespace + ":" + pod.ObjectMeta.Name -} - -func updatePodTargets(pod *Pod, allContainers bool) []model.LabelSet { - var targets []model.LabelSet = make([]model.LabelSet, 0, len(pod.PodSpec.Containers)) - if pod.PodStatus.PodIP == "" { - log.Debugf("skipping pod %s -- PodStatus.PodIP is empty", pod.ObjectMeta.Name) - return targets - } - - if pod.PodStatus.Phase != "Running" { - log.Debugf("skipping pod %s -- status is not `Running`", pod.ObjectMeta.Name) - return targets - } - - // Should never hit this (running pods should always have this set), but better to be defensive. - if pod.PodStatus.HostIP == "" { - log.Debugf("skipping pod %s -- PodStatus.HostIP is empty", pod.ObjectMeta.Name) - return targets - } - - ready := "unknown" - for _, cond := range pod.PodStatus.Conditions { - if strings.ToLower(cond.Type) == "ready" { - ready = strings.ToLower(cond.Status) - } - } - - sort.Sort(ByContainerName(pod.PodSpec.Containers)) - - for _, container := range pod.PodSpec.Containers { - // Collect a list of TCP ports - // Sort by port number, ascending - // Product a target pointed at the first port - // Include a label containing all ports (portName=port,PortName=port,...,) - var tcpPorts []ContainerPort - var portLabel *bytes.Buffer = bytes.NewBufferString(",") - - for _, port := range container.Ports { - if port.Protocol == "TCP" { - tcpPorts = append(tcpPorts, port) - } - } - - if len(tcpPorts) == 0 { - log.Debugf("skipping container %s with no TCP ports", container.Name) + for _, c := range pod.Spec.Containers { + // If no ports are defined for the container, create an anonymous + // target per container. + if len(c.Ports) == 0 { + // We don't have a port so we just set the address label to the pod IP. + // The user has to add a port manually. + tg.Targets = append(tg.Targets, model.LabelSet{ + model.AddressLabel: lv(pod.Status.PodIP), + podContainerNameLabel: lv(c.Name), + }) continue } + // Otherwise create one target for each container/port combination. + for _, port := range c.Ports { + ports := strconv.FormatUint(uint64(port.ContainerPort), 10) + addr := net.JoinHostPort(pod.Status.PodIP, ports) - sort.Sort(ByContainerPort(tcpPorts)) - - t := model.LabelSet{ - model.AddressLabel: model.LabelValue(net.JoinHostPort(pod.PodIP, strconv.FormatInt(int64(tcpPorts[0].ContainerPort), 10))), - podNameLabel: model.LabelValue(pod.ObjectMeta.Name), - podAddressLabel: model.LabelValue(pod.PodStatus.PodIP), - podNamespaceLabel: model.LabelValue(pod.ObjectMeta.Namespace), - podContainerNameLabel: model.LabelValue(container.Name), - podContainerPortNameLabel: model.LabelValue(tcpPorts[0].Name), - podReadyLabel: model.LabelValue(ready), - podNodeNameLabel: model.LabelValue(pod.PodSpec.NodeName), - podHostIPLabel: model.LabelValue(pod.PodStatus.HostIP), - } - - for _, port := range tcpPorts { - portLabel.WriteString(port.Name) - portLabel.WriteString("=") - portLabel.WriteString(strconv.FormatInt(int64(port.ContainerPort), 10)) - portLabel.WriteString(",") - t[model.LabelName(podContainerPortMapPrefix+port.Name)] = model.LabelValue(strconv.FormatInt(int64(port.ContainerPort), 10)) - } - - t[model.LabelName(podContainerPortListLabel)] = model.LabelValue(portLabel.String()) - - for k, v := range pod.ObjectMeta.Labels { - labelName := strutil.SanitizeLabelName(podLabelPrefix + k) - t[model.LabelName(labelName)] = model.LabelValue(v) - } - - for k, v := range pod.ObjectMeta.Annotations { - labelName := strutil.SanitizeLabelName(podAnnotationPrefix + k) - t[model.LabelName(labelName)] = model.LabelValue(v) - } - - targets = append(targets, t) - - if !allContainers { - break + tg.Targets = append(tg.Targets, model.LabelSet{ + model.AddressLabel: lv(addr), + podContainerNameLabel: lv(c.Name), + podContainerPortNumberLabel: lv(ports), + podContainerPortNameLabel: lv(port.Name), + podContainerPortProtocolLabel: lv(string(port.Protocol)), + }) } } - if len(targets) == 0 { - log.Debugf("no targets for pod %s", pod.ObjectMeta.Name) - } - - return targets + return tg } -type ByContainerPort []ContainerPort +func podSource(pod *apiv1.Pod) string { + return "pod/" + pod.Namespace + "/" + pod.Name +} -func (a ByContainerPort) Len() int { return len(a) } -func (a ByContainerPort) Less(i, j int) bool { return a[i].ContainerPort < a[j].ContainerPort } -func (a ByContainerPort) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type ByContainerName []Container - -func (a ByContainerName) Len() int { return len(a) } -func (a ByContainerName) Less(i, j int) bool { return a[i].Name < a[j].Name } -func (a ByContainerName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func podReady(pod *apiv1.Pod) model.LabelValue { + for _, cond := range pod.Status.Conditions { + if cond.Type == apiv1.PodReady { + return lv(strings.ToLower(string(cond.Status))) + } + } + return lv(strings.ToLower(string(api.ConditionUnknown))) +} diff --git a/retrieval/discovery/kubernetes/pod_test.go b/retrieval/discovery/kubernetes/pod_test.go new file mode 100644 index 0000000000..8b3112e524 --- /dev/null +++ b/retrieval/discovery/kubernetes/pod_test.go @@ -0,0 +1,305 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + //"fmt" + "testing" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +func podStoreKeyFunc(obj interface{}) (string, error) { + return obj.(*v1.Pod).ObjectMeta.Name, nil +} + +func newFakePodInformer() *fakeInformer { + return newFakeInformer(podStoreKeyFunc) +} + +func makeTestPodDiscovery() (*Pod, *fakeInformer) { + i := newFakePodInformer() + return NewPod(log.Base(), i), i +} + +func makeMultiPortPod() *v1.Pod { + return &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ + Name: "testpod", + Namespace: "default", + Labels: map[string]string{"testlabel": "testvalue"}, + Annotations: map[string]string{"testannotation": "testannotationvalue"}, + }, + Spec: v1.PodSpec{ + NodeName: "testnode", + Containers: []v1.Container{ + v1.Container{ + Name: "testcontainer0", + Ports: []v1.ContainerPort{ + v1.ContainerPort{ + Name: "testport0", + Protocol: v1.ProtocolTCP, + ContainerPort: int32(9000), + }, + v1.ContainerPort{ + Name: "testport1", + Protocol: v1.ProtocolUDP, + ContainerPort: int32(9001), + }, + }, + }, + v1.Container{ + Name: "testcontainer1", + }, + }, + }, + Status: v1.PodStatus{ + PodIP: "1.2.3.4", + HostIP: "2.3.4.5", + Conditions: []v1.PodCondition{ + v1.PodCondition{ + Type: v1.PodReady, + Status: v1.ConditionTrue, + }, + }, + }, + } +} + +func makePod() *v1.Pod { + return &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ + Name: "testpod", + Namespace: "default", + }, + Spec: v1.PodSpec{ + NodeName: "testnode", + Containers: []v1.Container{ + v1.Container{ + Name: "testcontainer", + Ports: []v1.ContainerPort{ + v1.ContainerPort{ + Name: "testport", + Protocol: v1.ProtocolTCP, + ContainerPort: int32(9000), + }, + }, + }, + }, + }, + Status: v1.PodStatus{ + PodIP: "1.2.3.4", + HostIP: "2.3.4.5", + Conditions: []v1.PodCondition{ + v1.PodCondition{ + Type: v1.PodReady, + Status: v1.ConditionTrue, + }, + }, + }, + } +} + +func TestPodDiscoveryInitial(t *testing.T) { + n, i := makeTestPodDiscovery() + i.GetStore().Add(makeMultiPortPod()) + + k8sDiscoveryTest{ + discovery: n, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_pod_container_name": "testcontainer0", + "__meta_kubernetes_pod_container_port_name": "testport0", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + model.LabelSet{ + "__address__": "1.2.3.4:9001", + "__meta_kubernetes_pod_container_name": "testcontainer0", + "__meta_kubernetes_pod_container_port_name": "testport1", + "__meta_kubernetes_pod_container_port_number": "9001", + "__meta_kubernetes_pod_container_port_protocol": "UDP", + }, + model.LabelSet{ + "__address__": "1.2.3.4", + "__meta_kubernetes_pod_container_name": "testcontainer1", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_pod_label_testlabel": "testvalue", + "__meta_kubernetes_pod_annotation_testannotation": "testannotationvalue", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_ready": "true", + }, + Source: "pod/default/testpod", + }, + }, + }.Run(t) +} + +func TestPodDiscoveryAdd(t *testing.T) { + n, i := makeTestPodDiscovery() + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Add(makePod()) }() }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_pod_container_name": "testcontainer", + "__meta_kubernetes_pod_container_port_name": "testport", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_ready": "true", + }, + Source: "pod/default/testpod", + }, + }, + }.Run(t) +} + +func TestPodDiscoveryDelete(t *testing.T) { + n, i := makeTestPodDiscovery() + i.GetStore().Add(makePod()) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Delete(makePod()) }() }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_pod_container_name": "testcontainer", + "__meta_kubernetes_pod_container_port_name": "testport", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_ready": "true", + }, + Source: "pod/default/testpod", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Source: "pod/default/testpod", + }, + }, + }.Run(t) +} + +func TestPodDiscoveryUpdate(t *testing.T) { + n, i := makeTestPodDiscovery() + i.GetStore().Add(&v1.Pod{ + ObjectMeta: v1.ObjectMeta{ + Name: "testpod", + Namespace: "default", + }, + Spec: v1.PodSpec{ + NodeName: "testnode", + Containers: []v1.Container{ + v1.Container{ + Name: "testcontainer", + Ports: []v1.ContainerPort{ + v1.ContainerPort{ + Name: "testport", + Protocol: v1.ProtocolTCP, + ContainerPort: int32(9000), + }, + }, + }, + }, + }, + Status: v1.PodStatus{ + PodIP: "1.2.3.4", + HostIP: "2.3.4.5", + }, + }) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Update(makePod()) }() }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_pod_container_name": "testcontainer", + "__meta_kubernetes_pod_container_port_name": "testport", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_ready": "unknown", + }, + Source: "pod/default/testpod", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__address__": "1.2.3.4:9000", + "__meta_kubernetes_pod_container_name": "testcontainer", + "__meta_kubernetes_pod_container_port_name": "testport", + "__meta_kubernetes_pod_container_port_number": "9000", + "__meta_kubernetes_pod_container_port_protocol": "TCP", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_pod_name": "testpod", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_pod_node_name": "testnode", + "__meta_kubernetes_pod_ip": "1.2.3.4", + "__meta_kubernetes_pod_host_ip": "2.3.4.5", + "__meta_kubernetes_pod_ready": "true", + }, + Source: "pod/default/testpod", + }, + }, + }.Run(t) +} diff --git a/retrieval/discovery/kubernetes/service.go b/retrieval/discovery/kubernetes/service.go index ac3bac33c8..bb6cb6631a 100644 --- a/retrieval/discovery/kubernetes/service.go +++ b/retrieval/discovery/kubernetes/service.go @@ -14,357 +14,112 @@ package kubernetes import ( - "encoding/json" - "fmt" - "io/ioutil" "net" - "net/http" - "sync" - "time" + "strconv" "github.com/prometheus/common/log" "github.com/prometheus/common/model" "github.com/prometheus/prometheus/config" "github.com/prometheus/prometheus/util/strutil" "golang.org/x/net/context" + apiv1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/tools/cache" ) -type serviceDiscovery struct { - mtx sync.RWMutex - services map[string]map[string]*Service - retryInterval time.Duration - kd *Discovery +// Service implements discovery of Kubernetes services. +type Service struct { + logger log.Logger + informer cache.SharedInformer + store cache.Store } -func (d *serviceDiscovery) run(ctx context.Context, ch chan<- []*config.TargetGroup) { - update := make(chan interface{}, 10) - go d.startServiceWatch(update, ctx.Done(), d.retryInterval) +// NewService returns a new service discovery. +func NewService(l log.Logger, inf cache.SharedInformer) *Service { + return &Service{logger: l, informer: inf, store: inf.GetStore()} +} - for { - tgs := []*config.TargetGroup{} +// Run implements the TargetProvider interface. +func (s *Service) Run(ctx context.Context, ch chan<- []*config.TargetGroup) { + // Send full initial set of pod targets. + var initial []*config.TargetGroup + for _, o := range s.store.List() { + tg := s.buildService(o.(*apiv1.Service)) + initial = append(initial, tg) + } + select { + case <-ctx.Done(): + return + case ch <- initial: + } + + // Send target groups for service updates. + send := func(tg *config.TargetGroup) { select { case <-ctx.Done(): - return - case event := <-update: - switch e := event.(type) { - case *endpointsEvent: - log.Debugf("k8s discovery received endpoint event (EventType=%s, Endpoint Name=%s)", e.EventType, e.Endpoints.ObjectMeta.Name) - tgs = append(tgs, d.updateServiceEndpoints(e.Endpoints, e.EventType)) - case *serviceEvent: - log.Debugf("k8s discovery received service event (EventType=%s, Service Name=%s)", e.EventType, e.Service.ObjectMeta.Name) - tgs = append(tgs, d.updateService(e.Service, e.EventType)) - } - } - if tgs == nil { - continue - } - - for _, tg := range tgs { - select { - case ch <- []*config.TargetGroup{tg}: - case <-ctx.Done(): - return - } + case ch <- []*config.TargetGroup{tg}: } } - -} - -func (d *serviceDiscovery) getServices() (map[string]map[string]*Service, string, error) { - res, err := d.kd.queryAPIServerPath(servicesURL) - if err != nil { - // If we can't list services then we can't watch them. Assume this is a misconfiguration - // & return error. - return nil, "", fmt.Errorf("unable to list Kubernetes services: %s", err) - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return nil, "", fmt.Errorf("unable to list Kubernetes services; unexpected response: %d %s", res.StatusCode, res.Status) - } - var services ServiceList - if err := json.NewDecoder(res.Body).Decode(&services); err != nil { - body, _ := ioutil.ReadAll(res.Body) - return nil, "", fmt.Errorf("unable to list Kubernetes services; unexpected response body: %s", string(body)) - } - - serviceMap := map[string]map[string]*Service{} - for idx, service := range services.Items { - namespace, ok := serviceMap[service.ObjectMeta.Namespace] - if !ok { - namespace = map[string]*Service{} - serviceMap[service.ObjectMeta.Namespace] = namespace - } - namespace[service.ObjectMeta.Name] = &services.Items[idx] - } - - return serviceMap, services.ResourceVersion, nil -} - -// watchServices watches services as they come & go. -func (d *serviceDiscovery) startServiceWatch(events chan<- interface{}, done <-chan struct{}, retryInterval time.Duration) { - until(func() { - // We use separate target groups for each discovered service so we'll need to clean up any if they've been deleted - // in Kubernetes while we couldn't connect - small chance of this, but worth dealing with. - d.mtx.Lock() - existingServices := d.services - - // Reset the known services. - d.services = map[string]map[string]*Service{} - d.mtx.Unlock() - - services, resourceVersion, err := d.getServices() - if err != nil { - log.Errorf("Cannot initialize services collection: %s", err) - return - } - - // Now let's loop through the old services & see if they still exist in here - for oldNSName, oldNS := range existingServices { - if ns, ok := services[oldNSName]; !ok { - for _, service := range existingServices[oldNSName] { - events <- &serviceEvent{Deleted, service} - } - } else { - for oldServiceName, oldService := range oldNS { - if _, ok := ns[oldServiceName]; !ok { - events <- &serviceEvent{Deleted, oldService} - } - } - } - } - - // Discard the existing services map for GC. - existingServices = nil - - for _, ns := range services { - for _, service := range ns { - events <- &serviceEvent{Added, service} - } - } - - var wg sync.WaitGroup - wg.Add(2) - - go func() { - d.watchServices(resourceVersion, events, done) - wg.Done() - }() - go func() { - d.watchServiceEndpoints(resourceVersion, events, done) - wg.Done() - }() - - wg.Wait() - }, retryInterval, done) -} - -func (d *serviceDiscovery) watchServices(resourceVersion string, events chan<- interface{}, done <-chan struct{}) { - req, err := http.NewRequest("GET", servicesURL, nil) - if err != nil { - log.Errorf("Failed to create services request: %s", err) - return - } - values := req.URL.Query() - values.Add("watch", "true") - values.Add("resourceVersion", resourceVersion) - req.URL.RawQuery = values.Encode() - - res, err := d.kd.queryAPIServerReq(req) - if err != nil { - log.Errorf("Failed to watch services: %s", err) - return - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - log.Errorf("Failed to watch services: %d", res.StatusCode) - return - } - - dec := json.NewDecoder(res.Body) - - for { - var event serviceEvent - if err := dec.Decode(&event); err != nil { - log.Errorf("Watch services unexpectedly closed: %s", err) - return - } - - select { - case events <- &event: - case <-done: - return - } - } -} - -// watchServiceEndpoints watches service endpoints as they come & go. -func (d *serviceDiscovery) watchServiceEndpoints(resourceVersion string, events chan<- interface{}, done <-chan struct{}) { - req, err := http.NewRequest("GET", endpointsURL, nil) - if err != nil { - log.Errorf("Failed to create service endpoints request: %s", err) - return - } - values := req.URL.Query() - values.Add("watch", "true") - values.Add("resourceVersion", resourceVersion) - req.URL.RawQuery = values.Encode() - - res, err := d.kd.queryAPIServerReq(req) - if err != nil { - log.Errorf("Failed to watch service endpoints: %s", err) - return - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - log.Errorf("Failed to watch service endpoints: %d", res.StatusCode) - return - } - - dec := json.NewDecoder(res.Body) - - for { - var event endpointsEvent - if err := dec.Decode(&event); err != nil { - log.Errorf("Watch service endpoints unexpectedly closed: %s", err) - return - } - - select { - case events <- &event: - case <-done: - } - } -} - -func (d *serviceDiscovery) updateService(service *Service, eventType EventType) *config.TargetGroup { - d.mtx.Lock() - defer d.mtx.Unlock() - - switch eventType { - case Deleted: - return d.deleteService(service) - case Added, Modified: - return d.addService(service) - } - return nil -} - -func (d *serviceDiscovery) deleteService(service *Service) *config.TargetGroup { - tg := &config.TargetGroup{Source: serviceSource(service)} - - delete(d.services[service.ObjectMeta.Namespace], service.ObjectMeta.Name) - if len(d.services[service.ObjectMeta.Namespace]) == 0 { - delete(d.services, service.ObjectMeta.Namespace) - } - - return tg -} - -func (d *serviceDiscovery) addService(service *Service) *config.TargetGroup { - namespace, ok := d.services[service.ObjectMeta.Namespace] - if !ok { - namespace = map[string]*Service{} - d.services[service.ObjectMeta.Namespace] = namespace - } - - namespace[service.ObjectMeta.Name] = service - endpointURL := fmt.Sprintf(serviceEndpointsURL, service.ObjectMeta.Namespace, service.ObjectMeta.Name) - - res, err := d.kd.queryAPIServerPath(endpointURL) - if err != nil { - log.Errorf("Error getting service endpoints: %s", err) - return nil - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - log.Errorf("Failed to get service endpoints: %d", res.StatusCode) - return nil - } - - var eps Endpoints - if err := json.NewDecoder(res.Body).Decode(&eps); err != nil { - log.Errorf("Error getting service endpoints: %s", err) - return nil - } - - return d.updateServiceTargetGroup(service, &eps) -} - -func (d *serviceDiscovery) updateServiceTargetGroup(service *Service, eps *Endpoints) *config.TargetGroup { - tg := &config.TargetGroup{ - Source: serviceSource(service), - Labels: model.LabelSet{ - serviceNamespaceLabel: model.LabelValue(service.ObjectMeta.Namespace), - serviceNameLabel: model.LabelValue(service.ObjectMeta.Name), + s.informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ + AddFunc: func(o interface{}) { + send(s.buildService(o.(*apiv1.Service))) }, + DeleteFunc: func(o interface{}) { + send(&config.TargetGroup{Source: serviceSource(o.(*apiv1.Service))}) + }, + UpdateFunc: func(_, o interface{}) { + send(s.buildService(o.(*apiv1.Service))) + }, + }) + + // Block until the target provider is explicitly canceled. + <-ctx.Done() +} + +func serviceSource(s *apiv1.Service) string { + return "svc/" + s.Namespace + "/" + s.Name +} + +const ( + serviceNameLabel = metaLabelPrefix + "service_name" + serviceLabelPrefix = metaLabelPrefix + "service_label_" + serviceAnnotationPrefix = metaLabelPrefix + "service_annotation_" + servicePortNameLabel = metaLabelPrefix + "service_port_name" + servicePortProtocolLabel = metaLabelPrefix + "service_port_protocol" +) + +func serviceLabels(svc *apiv1.Service) model.LabelSet { + ls := make(model.LabelSet, len(svc.Labels)+len(svc.Annotations)+2) + + ls[serviceNameLabel] = lv(svc.Name) + + for k, v := range svc.Labels { + ln := strutil.SanitizeLabelName(serviceLabelPrefix + k) + ls[model.LabelName(ln)] = lv(v) } - for k, v := range service.ObjectMeta.Labels { - labelName := strutil.SanitizeLabelName(serviceLabelPrefix + k) - tg.Labels[model.LabelName(labelName)] = model.LabelValue(v) + for k, v := range svc.Annotations { + ln := strutil.SanitizeLabelName(serviceAnnotationPrefix + k) + ls[model.LabelName(ln)] = lv(v) } + return ls +} - for k, v := range service.ObjectMeta.Annotations { - labelName := strutil.SanitizeLabelName(serviceAnnotationPrefix + k) - tg.Labels[model.LabelName(labelName)] = model.LabelValue(v) +func (s *Service) buildService(svc *apiv1.Service) *config.TargetGroup { + tg := &config.TargetGroup{ + Source: serviceSource(svc), } + tg.Labels = serviceLabels(svc) + tg.Labels[namespaceLabel] = lv(svc.Namespace) - serviceAddress := service.ObjectMeta.Name + "." + service.ObjectMeta.Namespace + ".svc" + for _, port := range svc.Spec.Ports { + addr := net.JoinHostPort(svc.Name+"."+svc.Namespace+".svc", strconv.FormatInt(int64(port.Port), 10)) - // Append the first TCP service port if one exists. - for _, port := range service.Spec.Ports { - if port.Protocol == ProtocolTCP { - serviceAddress += fmt.Sprintf(":%d", port.Port) - break - } - } - switch d.kd.Conf.Role { - case config.KubernetesRoleService: - t := model.LabelSet{ - model.AddressLabel: model.LabelValue(serviceAddress), - roleLabel: model.LabelValue("service"), - } - tg.Targets = append(tg.Targets, t) - - case config.KubernetesRoleEndpoint: - // Now let's loop through the endpoints & add them to the target group - // with appropriate labels. - for _, ss := range eps.Subsets { - epPort := ss.Ports[0].Port - - for _, addr := range ss.Addresses { - ipAddr := addr.IP - if len(ipAddr) == net.IPv6len { - ipAddr = "[" + ipAddr + "]" - } - address := net.JoinHostPort(ipAddr, fmt.Sprintf("%d", epPort)) - - t := model.LabelSet{ - model.AddressLabel: model.LabelValue(address), - roleLabel: model.LabelValue("endpoint"), - } - - tg.Targets = append(tg.Targets, t) - } - } + tg.Targets = append(tg.Targets, model.LabelSet{ + model.AddressLabel: lv(addr), + servicePortNameLabel: lv(port.Name), + servicePortProtocolLabel: lv(string(port.Protocol)), + }) } return tg } - -func (d *serviceDiscovery) updateServiceEndpoints(endpoints *Endpoints, eventType EventType) *config.TargetGroup { - d.mtx.Lock() - defer d.mtx.Unlock() - - serviceNamespace := endpoints.ObjectMeta.Namespace - serviceName := endpoints.ObjectMeta.Name - - if service, ok := d.services[serviceNamespace][serviceName]; ok { - return d.updateServiceTargetGroup(service, endpoints) - } - return nil -} - -func serviceSource(service *Service) string { - return sourceServicePrefix + ":" + service.ObjectMeta.Namespace + "/" + service.ObjectMeta.Name -} diff --git a/retrieval/discovery/kubernetes/service_test.go b/retrieval/discovery/kubernetes/service_test.go new file mode 100644 index 0000000000..d12084ac8b --- /dev/null +++ b/retrieval/discovery/kubernetes/service_test.go @@ -0,0 +1,221 @@ +// Copyright 2016 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package kubernetes + +import ( + "fmt" + "testing" + + "github.com/prometheus/common/log" + "github.com/prometheus/common/model" + "github.com/prometheus/prometheus/config" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +func serviceStoreKeyFunc(obj interface{}) (string, error) { + return obj.(*v1.Service).ObjectMeta.Name, nil +} + +func newFakeServiceInformer() *fakeInformer { + return newFakeInformer(serviceStoreKeyFunc) +} + +func makeTestServiceDiscovery() (*Service, *fakeInformer) { + i := newFakeServiceInformer() + return NewService(log.Base(), i), i +} + +func makeMultiPortService() *v1.Service { + return &v1.Service{ + ObjectMeta: v1.ObjectMeta{ + Name: "testservice", + Namespace: "default", + Labels: map[string]string{"testlabel": "testvalue"}, + Annotations: map[string]string{"testannotation": "testannotationvalue"}, + }, + Spec: v1.ServiceSpec{ + Ports: []v1.ServicePort{ + v1.ServicePort{ + Name: "testport0", + Protocol: v1.ProtocolTCP, + Port: int32(30900), + }, + v1.ServicePort{ + Name: "testport1", + Protocol: v1.ProtocolUDP, + Port: int32(30901), + }, + }, + }, + } +} + +func makeSuffixedService(suffix string) *v1.Service { + return &v1.Service{ + ObjectMeta: v1.ObjectMeta{ + Name: fmt.Sprintf("testservice%s", suffix), + Namespace: "default", + }, + Spec: v1.ServiceSpec{ + Ports: []v1.ServicePort{ + v1.ServicePort{ + Name: "testport", + Protocol: v1.ProtocolTCP, + Port: int32(30900), + }, + }, + }, + } +} + +func makeService() *v1.Service { + return makeSuffixedService("") +} + +func TestServiceDiscoveryInitial(t *testing.T) { + n, i := makeTestServiceDiscovery() + i.GetStore().Add(makeMultiPortService()) + + k8sDiscoveryTest{ + discovery: n, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "TCP", + "__address__": "testservice.default.svc:30900", + "__meta_kubernetes_service_port_name": "testport0", + }, + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "UDP", + "__address__": "testservice.default.svc:30901", + "__meta_kubernetes_service_port_name": "testport1", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_service_name": "testservice", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_service_label_testlabel": "testvalue", + "__meta_kubernetes_service_annotation_testannotation": "testannotationvalue", + }, + Source: "svc/default/testservice", + }, + }, + }.Run(t) +} + +func TestServiceDiscoveryAdd(t *testing.T) { + n, i := makeTestServiceDiscovery() + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Add(makeService()) }() }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "TCP", + "__address__": "testservice.default.svc:30900", + "__meta_kubernetes_service_port_name": "testport", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_service_name": "testservice", + "__meta_kubernetes_namespace": "default", + }, + Source: "svc/default/testservice", + }, + }, + }.Run(t) +} + +func TestServiceDiscoveryDelete(t *testing.T) { + n, i := makeTestServiceDiscovery() + i.GetStore().Add(makeService()) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Delete(makeService()) }() }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "TCP", + "__address__": "testservice.default.svc:30900", + "__meta_kubernetes_service_port_name": "testport", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_service_name": "testservice", + "__meta_kubernetes_namespace": "default", + }, + Source: "svc/default/testservice", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Source: "svc/default/testservice", + }, + }, + }.Run(t) +} + +func TestServiceDiscoveryUpdate(t *testing.T) { + n, i := makeTestServiceDiscovery() + i.GetStore().Add(makeService()) + + k8sDiscoveryTest{ + discovery: n, + afterStart: func() { go func() { i.Update(makeMultiPortService()) }() }, + expectedInitial: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "TCP", + "__address__": "testservice.default.svc:30900", + "__meta_kubernetes_service_port_name": "testport", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_service_name": "testservice", + "__meta_kubernetes_namespace": "default", + }, + Source: "svc/default/testservice", + }, + }, + expectedRes: []*config.TargetGroup{ + &config.TargetGroup{ + Targets: []model.LabelSet{ + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "TCP", + "__address__": "testservice.default.svc:30900", + "__meta_kubernetes_service_port_name": "testport0", + }, + model.LabelSet{ + "__meta_kubernetes_service_port_protocol": "UDP", + "__address__": "testservice.default.svc:30901", + "__meta_kubernetes_service_port_name": "testport1", + }, + }, + Labels: model.LabelSet{ + "__meta_kubernetes_service_name": "testservice", + "__meta_kubernetes_namespace": "default", + "__meta_kubernetes_service_label_testlabel": "testvalue", + "__meta_kubernetes_service_annotation_testannotation": "testannotationvalue", + }, + Source: "svc/default/testservice", + }, + }, + }.Run(t) +} diff --git a/retrieval/discovery/kubernetes/types.go b/retrieval/discovery/kubernetes/types.go deleted file mode 100644 index e77076d974..0000000000 --- a/retrieval/discovery/kubernetes/types.go +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2015 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package kubernetes - -// EventType can legally only have the values defined as constants below. -type EventType string - -// Possible values for EventType. -const ( - Added EventType = "ADDED" - Modified EventType = "MODIFIED" - Deleted EventType = "DELETED" -) - -type nodeEvent struct { - EventType EventType `json:"type"` - Node *Node `json:"object"` -} - -type serviceEvent struct { - EventType EventType `json:"type"` - Service *Service `json:"object"` -} - -type endpointsEvent struct { - EventType EventType `json:"type"` - Endpoints *Endpoints `json:"object"` -} - -// From here down types are copied from -// https://github.com/GoogleCloudPlatform/kubernetes/blob/master/pkg/api/v1/types.go -// with all currently irrelevant types/fields stripped out. This removes the -// need for any kubernetes dependencies, with the drawback of having to keep -// this file up to date. - -// ListMeta describes metadata that synthetic resources must have, including lists and -// various status objects. -type ListMeta struct { - // An opaque value that represents the version of this response for use with optimistic - // concurrency and change monitoring endpoints. Clients must treat these values as opaque - // and values may only be valid for a particular resource or set of resources. Only servers - // will generate resource versions. - ResourceVersion string `json:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; populated by the system, read-only; value must be treated as opaque by clients and passed unmodified back to the server: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency"` -} - -// ObjectMeta is metadata that all persisted resources must have, which includes all objects -// users must create. -type ObjectMeta struct { - // Name is unique within a namespace. Name is required when creating resources, although - // some resources may allow a client to request the generation of an appropriate name - // automatically. Name is primarily intended for creation idempotence and configuration - // definition. - Name string `json:"name,omitempty" description:"string that identifies an object. Must be unique within a namespace; cannot be updated; see http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names"` - - // Namespace defines the space within which name must be unique. An empty namespace is - // equivalent to the "default" namespace, but "default" is the canonical representation. - // Not all objects are required to be scoped to a namespace - the value of this field for - // those objects will be empty. - Namespace string `json:"namespace,omitempty" description:"namespace of the object; must be a DNS_LABEL; cannot be updated; see http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md"` - - ResourceVersion string `json:"resourceVersion,omitempty" description:"string that identifies the internal version of this object that can be used by clients to determine when objects have changed; populated by the system, read-only; value must be treated as opaque by clients and passed unmodified back to the server: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency"` - - // TODO: replace map[string]string with labels.LabelSet type - Labels map[string]string `json:"labels,omitempty" description:"map of string keys and values that can be used to organize and categorize objects; may match selectors of replication controllers and services; see http://releases.k8s.io/HEAD/docs/user-guide/labels.md"` - - // Annotations are unstructured key value data stored with a resource that may be set by - // external tooling. They are not queryable and should be preserved when modifying - // objects. - Annotations map[string]string `json:"annotations,omitempty" description:"map of string keys and values that can be used by external tooling to store and retrieve arbitrary metadata about objects; see http://releases.k8s.io/HEAD/docs/user-guide/annotations.md"` -} - -// Protocol defines network protocols supported for things like container ports. -type Protocol string - -const ( - // ProtocolTCP is the TCP protocol. - ProtocolTCP Protocol = "TCP" - // ProtocolUDP is the UDP protocol. - ProtocolUDP Protocol = "UDP" -) - -const ( - // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces - NamespaceAll string = "" -) - -// Container represents a single container that is expected to be run on the host. -type Container struct { - // Required: This must be a DNS_LABEL. Each container in a pod must - // have a unique name. - Name string `json:"name" description:"name of the container; must be a DNS_LABEL and unique within the pod; cannot be updated"` - // Optional. - Image string `json:"image,omitempty" description:"Docker image name; see http://releases.k8s.io/HEAD/docs/user-guide/images.md"` - - Ports []ContainerPort `json:"ports"` -} - -type ContainerPort struct { - Name string `json:"name"` - ContainerPort int32 `json:"containerPort"` - Protocol string `json:"protocol"` -} - -// Service is a named abstraction of software service (for example, mysql) consisting of local port -// (for example 3306) that the proxy listens on, and the selector that determines which pods -// will answer requests sent through the proxy. -type Service struct { - ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - // Spec defines the behavior of a service. - // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status - Spec ServiceSpec `json:"spec,omitempty"` -} - -// ServiceSpec describes the attributes that a user creates on a service. -type ServiceSpec struct { - // The list of ports that are exposed by this service. - // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies - Ports []ServicePort `json:"ports"` -} - -// ServicePort contains information on service's port. -type ServicePort struct { - // The IP protocol for this port. Supports "TCP" and "UDP". - // Default is TCP. - Protocol Protocol `json:"protocol,omitempty"` - - // The port that will be exposed by this service. - Port int32 `json:"port"` -} - -// ServiceList holds a list of services. -type ServiceList struct { - ListMeta `json:"metadata,omitempty" description:"standard list metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - Items []Service `json:"items" description:"list of services"` -} - -// Endpoints is a collection of endpoints that implement the actual service. Example: -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ] -type Endpoints struct { - ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - // The set of all endpoints is the union of all subsets. - Subsets []EndpointSubset `json:"subsets" description:"sets of addresses and ports that comprise a service"` -} - -// EndpointSubset is a group of addresses with a common set of ports. The -// expanded set of endpoints is the Cartesian product of Addresses x Ports. -// For example, given: -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// } -// The resulting set of endpoints can be viewed as: -// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], -// b: [ 10.10.1.1:309, 10.10.2.2:309 ] -type EndpointSubset struct { - Addresses []EndpointAddress `json:"addresses,omitempty" description:"IP addresses which offer the related ports"` - Ports []EndpointPort `json:"ports,omitempty" description:"port numbers available on the related IP addresses"` -} - -// EndpointAddress is a tuple that describes single IP address. -type EndpointAddress struct { - // The IP of this endpoint. - // TODO: This should allow hostname or IP, see #4447. - IP string `json:"ip" description:"IP address of the endpoint"` -} - -// EndpointPort is a tuple that describes a single port. -type EndpointPort struct { - // The port number. - Port int `json:"port" description:"port number of the endpoint"` - - // The IP protocol for this port. - Protocol Protocol `json:"protocol,omitempty" description:"protocol for this port; must be UDP or TCP; TCP if unspecified"` -} - -// EndpointsList is a list of endpoints. -type EndpointsList struct { - ListMeta `json:"metadata,omitempty" description:"standard list metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - Items []Endpoints `json:"items" description:"list of endpoints"` -} - -// NodeStatus is information about the current status of a node. -type NodeStatus struct { - // Queried from cloud provider, if available. - Addresses []NodeAddress `json:"addresses,omitempty" description:"list of addresses reachable to the node; see http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses" patchStrategy:"merge" patchMergeKey:"type"` - // Endpoints of daemons running on the Node. - DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty"` -} - -// NodeDaemonEndpoints lists ports opened by daemons running on the Node. -type NodeDaemonEndpoints struct { - // Endpoint on which Kubelet is listening. - KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty"` -} - -// DaemonEndpoint contains information about a single Daemon endpoint. -type DaemonEndpoint struct { - /* - The port tag was not properly in quotes in earlier releases, so it must be - uppercased for backwards compat (since it was falling back to var name of - 'Port'). - */ - - // Port number of the given endpoint. - Port int32 `json:"Port"` -} - -// NodeAddressType can legally only have the values defined as constants below. -type NodeAddressType string - -// These are valid address types of node. NodeLegacyHostIP is used to transit -// from out-dated HostIP field to NodeAddress. -const ( - NodeLegacyHostIP NodeAddressType = "LegacyHostIP" - NodeHostName NodeAddressType = "Hostname" - NodeExternalIP NodeAddressType = "ExternalIP" - NodeInternalIP NodeAddressType = "InternalIP" -) - -// NodeAddress defines the address of a node. -type NodeAddress struct { - Type NodeAddressType `json:"type" description:"node address type, one of Hostname, ExternalIP or InternalIP"` - Address string `json:"address" description:"the node address"` -} - -// Node is a worker node in Kubernetes, formerly known as minion. -// Each node will have a unique identifier in the cache (i.e. in etcd). -type Node struct { - ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - // Status describes the current status of a Node - Status NodeStatus `json:"status,omitempty" description:"most recently observed status of the node; populated by the system, read-only; http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status"` -} - -// NodeList is the whole list of all Nodes which have been registered with master. -type NodeList struct { - ListMeta `json:"metadata,omitempty" description:"standard list metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - Items []Node `json:"items" description:"list of nodes"` -} - -type Pod struct { - ObjectMeta `json:"metadata,omitempty" description:"standard object metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - PodStatus `json:"status,omitempty" description:"pod status object; see http://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_podstatus"` - PodSpec `json:"spec,omitempty" description:"pod spec object; see http://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_podspec"` -} - -type podEvent struct { - EventType EventType `json:"type"` - Pod *Pod `json:"object"` -} - -type PodList struct { - ListMeta `json:"metadata,omitempty" description:"standard list metadata; see http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"` - - Items []Pod `json:"items" description:"list of pods"` -} - -type PodStatus struct { - Phase string `json:"phase" description:"Current condition of the pod. More info: http://kubernetes.io/v1.1/docs/user-guide/pod-states.html#pod-phase"` - PodIP string `json:"podIP" description:"IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated."` - Conditions []PodCondition `json:"conditions" description:"Current service state of pod."` - HostIP string `json:"hostIP,omitempty" description:"IP address of the host to which the pod is assigned. Empty if not yet scheduled."` -} - -type PodSpec struct { - Containers []Container `json:"containers" description:"list of containers, see http://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_container"` - NodeName string `json:"nodeName,omitempty" description:"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements."` -} - -type PodCondition struct { - Type string `json:"type" description:"Type is the type of the condition. Currently only Ready."` - Status string `json:"status" description:"Status is the status of the condition. Can be True, False, Unknown."` -} diff --git a/storage/local/chunk/chunk.go b/storage/local/chunk/chunk.go index 738e678f15..11c42b39d4 100644 --- a/storage/local/chunk/chunk.go +++ b/storage/local/chunk/chunk.go @@ -252,6 +252,8 @@ func (d *Desc) MaybeEvict() bool { panic("ChunkLastTime not populated for evicted chunk") } d.C = nil + Ops.WithLabelValues(Evict).Inc() + atomic.AddInt64(&NumMemChunks, -1) return true } diff --git a/storage/local/interface.go b/storage/local/interface.go index 7e95a158b4..3f1fda7130 100644 --- a/storage/local/interface.go +++ b/storage/local/interface.go @@ -26,7 +26,8 @@ import ( // Storage ingests and manages samples, along with various indexes. All methods // are goroutine-safe. Storage implements storage.SampleAppender. type Storage interface { - Querier + // Querier returns a new Querier on the storage. + Querier() (Querier, error) // This SampleAppender needs multiple samples for the same fingerprint to be // submitted in chronological order, from oldest to newest. When Append has @@ -57,6 +58,9 @@ type Storage interface { // Querier allows querying a time series storage. type Querier interface { + // Close closes the querier. Behavior for subsequent calls to Querier methods + // is undefined. + Close() error // QueryRange returns a list of series iterators for the selected // time range and label matchers. The iterators need to be closed // after usage. diff --git a/storage/local/noop_storage.go b/storage/local/noop_storage.go index 77a48bbb8c..360849da1b 100644 --- a/storage/local/noop_storage.go +++ b/storage/local/noop_storage.go @@ -40,23 +40,35 @@ func (s *NoopStorage) Stop() error { func (s *NoopStorage) WaitForIndexing() { } -// LastSampleForLabelMatchers implements Storage. -func (s *NoopStorage) LastSampleForLabelMatchers(ctx context.Context, cutoff model.Time, matcherSets ...metric.LabelMatchers) (model.Vector, error) { +// Querier implements Storage. +func (s *NoopStorage) Querier() (Querier, error) { + return &NoopQuerier{}, nil +} + +type NoopQuerier struct{} + +// Close implements Querier. +func (s *NoopQuerier) Close() error { + return nil +} + +// LastSampleForLabelMatchers implements Querier. +func (s *NoopQuerier) LastSampleForLabelMatchers(ctx context.Context, cutoff model.Time, matcherSets ...metric.LabelMatchers) (model.Vector, error) { return nil, nil } -// QueryRange implements Storage. -func (s *NoopStorage) QueryRange(ctx context.Context, from, through model.Time, matchers ...*metric.LabelMatcher) ([]SeriesIterator, error) { +// QueryRange implements Querier +func (s *NoopQuerier) QueryRange(ctx context.Context, from, through model.Time, matchers ...*metric.LabelMatcher) ([]SeriesIterator, error) { return nil, nil } -// QueryInstant implements Storage. -func (s *NoopStorage) QueryInstant(ctx context.Context, ts model.Time, stalenessDelta time.Duration, matchers ...*metric.LabelMatcher) ([]SeriesIterator, error) { +// QueryInstant implements Querier. +func (s *NoopQuerier) QueryInstant(ctx context.Context, ts model.Time, stalenessDelta time.Duration, matchers ...*metric.LabelMatcher) ([]SeriesIterator, error) { return nil, nil } -// MetricsForLabelMatchers implements Storage. -func (s *NoopStorage) MetricsForLabelMatchers( +// MetricsForLabelMatchers implements Querier. +func (s *NoopQuerier) MetricsForLabelMatchers( ctx context.Context, from, through model.Time, matcherSets ...metric.LabelMatchers, @@ -64,8 +76,8 @@ func (s *NoopStorage) MetricsForLabelMatchers( return nil, nil } -// LabelValuesForLabelName implements Storage. -func (s *NoopStorage) LabelValuesForLabelName(ctx context.Context, labelName model.LabelName) (model.LabelValues, error) { +// LabelValuesForLabelName implements Querier. +func (s *NoopQuerier) LabelValuesForLabelName(ctx context.Context, labelName model.LabelName) (model.LabelValues, error) { return nil, nil } diff --git a/storage/local/storage.go b/storage/local/storage.go index 1288389e03..16ecf07411 100644 --- a/storage/local/storage.go +++ b/storage/local/storage.go @@ -403,6 +403,19 @@ func (s *MemorySeriesStorage) Stop() error { return nil } +type memorySeriesStorageQuerier struct { + *MemorySeriesStorage +} + +func (memorySeriesStorageQuerier) Close() error { + return nil +} + +// Querier implements the storage interface. +func (s *MemorySeriesStorage) Querier() (Querier, error) { + return memorySeriesStorageQuerier{s}, nil +} + // WaitForIndexing implements Storage. func (s *MemorySeriesStorage) WaitForIndexing() { s.persistence.waitForIndexing() diff --git a/storage/local/storage_test.go b/storage/local/storage_test.go index ce7ed2bd65..e3b31620b2 100644 --- a/storage/local/storage_test.go +++ b/storage/local/storage_test.go @@ -20,6 +20,7 @@ import ( "math/rand" "os" "strconv" + "sync/atomic" "testing" "testing/quick" "time" @@ -1412,6 +1413,10 @@ func testEvictAndLoadChunkDescs(t *testing.T, encoding chunk.Encoding) { Value: model.SampleValue(3.14), } + // Sadly, chunk.NumMemChunks is a global variable. We have to reset it + // explicitly here. + atomic.StoreInt64(&chunk.NumMemChunks, 0) + s, closer := NewTestStorage(t, encoding) defer closer.Close() @@ -1441,6 +1446,9 @@ func testEvictAndLoadChunkDescs(t *testing.T, encoding chunk.Encoding) { if oldLen <= len(series.chunkDescs) { t.Errorf("Expected number of chunkDescs to decrease, old number %d, current number %d.", oldLen, len(series.chunkDescs)) } + if int64(len(series.chunkDescs)) < atomic.LoadInt64(&chunk.NumMemChunks) { + t.Errorf("NumMemChunks is larger than number of chunk descs, number of chunk descs: %d, NumMemChunks: %d.", len(series.chunkDescs), atomic.LoadInt64(&chunk.NumMemChunks)) + } // Load everything back. it := s.preloadChunksForRange(makeFingerprintSeriesPair(s, fp), 0, 100000) diff --git a/vendor/cloud.google.com/go/LICENSE b/vendor/cloud.google.com/go/LICENSE new file mode 100644 index 0000000000..a4c5efd822 --- /dev/null +++ b/vendor/cloud.google.com/go/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2014 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go new file mode 100644 index 0000000000..5c6f3bf382 --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go @@ -0,0 +1,438 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package metadata provides access to Google Compute Engine (GCE) +// metadata and API service accounts. +// +// This package is a wrapper around the GCE metadata service, +// as documented at https://developers.google.com/compute/docs/metadata. +package metadata + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net" + "net/http" + "net/url" + "os" + "runtime" + "strings" + "sync" + "time" + + "golang.org/x/net/context" + "golang.org/x/net/context/ctxhttp" + + "cloud.google.com/go/internal" +) + +const ( + // metadataIP is the documented metadata server IP address. + metadataIP = "169.254.169.254" + + // metadataHostEnv is the environment variable specifying the + // GCE metadata hostname. If empty, the default value of + // metadataIP ("169.254.169.254") is used instead. + // This is variable name is not defined by any spec, as far as + // I know; it was made up for the Go package. + metadataHostEnv = "GCE_METADATA_HOST" +) + +type cachedValue struct { + k string + trim bool + mu sync.Mutex + v string +} + +var ( + projID = &cachedValue{k: "project/project-id", trim: true} + projNum = &cachedValue{k: "project/numeric-project-id", trim: true} + instID = &cachedValue{k: "instance/id", trim: true} +) + +var ( + metaClient = &http.Client{ + Transport: &internal.Transport{ + Base: &http.Transport{ + Dial: (&net.Dialer{ + Timeout: 2 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + ResponseHeaderTimeout: 2 * time.Second, + }, + }, + } + subscribeClient = &http.Client{ + Transport: &internal.Transport{ + Base: &http.Transport{ + Dial: (&net.Dialer{ + Timeout: 2 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + }, + }, + } +) + +// NotDefinedError is returned when requested metadata is not defined. +// +// The underlying string is the suffix after "/computeMetadata/v1/". +// +// This error is not returned if the value is defined to be the empty +// string. +type NotDefinedError string + +func (suffix NotDefinedError) Error() string { + return fmt.Sprintf("metadata: GCE metadata %q not defined", string(suffix)) +} + +// Get returns a value from the metadata service. +// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/". +// +// If the GCE_METADATA_HOST environment variable is not defined, a default of +// 169.254.169.254 will be used instead. +// +// If the requested metadata is not defined, the returned error will +// be of type NotDefinedError. +func Get(suffix string) (string, error) { + val, _, err := getETag(metaClient, suffix) + return val, err +} + +// getETag returns a value from the metadata service as well as the associated +// ETag using the provided client. This func is otherwise equivalent to Get. +func getETag(client *http.Client, suffix string) (value, etag string, err error) { + // Using a fixed IP makes it very difficult to spoof the metadata service in + // a container, which is an important use-case for local testing of cloud + // deployments. To enable spoofing of the metadata service, the environment + // variable GCE_METADATA_HOST is first inspected to decide where metadata + // requests shall go. + host := os.Getenv(metadataHostEnv) + if host == "" { + // Using 169.254.169.254 instead of "metadata" here because Go + // binaries built with the "netgo" tag and without cgo won't + // know the search suffix for "metadata" is + // ".google.internal", and this IP address is documented as + // being stable anyway. + host = metadataIP + } + url := "http://" + host + "/computeMetadata/v1/" + suffix + req, _ := http.NewRequest("GET", url, nil) + req.Header.Set("Metadata-Flavor", "Google") + res, err := client.Do(req) + if err != nil { + return "", "", err + } + defer res.Body.Close() + if res.StatusCode == http.StatusNotFound { + return "", "", NotDefinedError(suffix) + } + if res.StatusCode != 200 { + return "", "", fmt.Errorf("status code %d trying to fetch %s", res.StatusCode, url) + } + all, err := ioutil.ReadAll(res.Body) + if err != nil { + return "", "", err + } + return string(all), res.Header.Get("Etag"), nil +} + +func getTrimmed(suffix string) (s string, err error) { + s, err = Get(suffix) + s = strings.TrimSpace(s) + return +} + +func (c *cachedValue) get() (v string, err error) { + defer c.mu.Unlock() + c.mu.Lock() + if c.v != "" { + return c.v, nil + } + if c.trim { + v, err = getTrimmed(c.k) + } else { + v, err = Get(c.k) + } + if err == nil { + c.v = v + } + return +} + +var ( + onGCEOnce sync.Once + onGCE bool +) + +// OnGCE reports whether this process is running on Google Compute Engine. +func OnGCE() bool { + onGCEOnce.Do(initOnGCE) + return onGCE +} + +func initOnGCE() { + onGCE = testOnGCE() +} + +func testOnGCE() bool { + // The user explicitly said they're on GCE, so trust them. + if os.Getenv(metadataHostEnv) != "" { + return true + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + resc := make(chan bool, 2) + + // Try two strategies in parallel. + // See https://github.com/GoogleCloudPlatform/google-cloud-go/issues/194 + go func() { + res, err := ctxhttp.Get(ctx, metaClient, "http://"+metadataIP) + if err != nil { + resc <- false + return + } + defer res.Body.Close() + resc <- res.Header.Get("Metadata-Flavor") == "Google" + }() + + go func() { + addrs, err := net.LookupHost("metadata.google.internal") + if err != nil || len(addrs) == 0 { + resc <- false + return + } + resc <- strsContains(addrs, metadataIP) + }() + + tryHarder := systemInfoSuggestsGCE() + if tryHarder { + res := <-resc + if res { + // The first strategy succeeded, so let's use it. + return true + } + // Wait for either the DNS or metadata server probe to + // contradict the other one and say we are running on + // GCE. Give it a lot of time to do so, since the system + // info already suggests we're running on a GCE BIOS. + timer := time.NewTimer(5 * time.Second) + defer timer.Stop() + select { + case res = <-resc: + return res + case <-timer.C: + // Too slow. Who knows what this system is. + return false + } + } + + // There's no hint from the system info that we're running on + // GCE, so use the first probe's result as truth, whether it's + // true or false. The goal here is to optimize for speed for + // users who are NOT running on GCE. We can't assume that + // either a DNS lookup or an HTTP request to a blackholed IP + // address is fast. Worst case this should return when the + // metaClient's Transport.ResponseHeaderTimeout or + // Transport.Dial.Timeout fires (in two seconds). + return <-resc +} + +// systemInfoSuggestsGCE reports whether the local system (without +// doing network requests) suggests that we're running on GCE. If this +// returns true, testOnGCE tries a bit harder to reach its metadata +// server. +func systemInfoSuggestsGCE() bool { + if runtime.GOOS != "linux" { + // We don't have any non-Linux clues available, at least yet. + return false + } + slurp, _ := ioutil.ReadFile("/sys/class/dmi/id/product_name") + name := strings.TrimSpace(string(slurp)) + return name == "Google" || name == "Google Compute Engine" +} + +// Subscribe subscribes to a value from the metadata service. +// The suffix is appended to "http://${GCE_METADATA_HOST}/computeMetadata/v1/". +// The suffix may contain query parameters. +// +// Subscribe calls fn with the latest metadata value indicated by the provided +// suffix. If the metadata value is deleted, fn is called with the empty string +// and ok false. Subscribe blocks until fn returns a non-nil error or the value +// is deleted. Subscribe returns the error value returned from the last call to +// fn, which may be nil when ok == false. +func Subscribe(suffix string, fn func(v string, ok bool) error) error { + const failedSubscribeSleep = time.Second * 5 + + // First check to see if the metadata value exists at all. + val, lastETag, err := getETag(subscribeClient, suffix) + if err != nil { + return err + } + + if err := fn(val, true); err != nil { + return err + } + + ok := true + if strings.ContainsRune(suffix, '?') { + suffix += "&wait_for_change=true&last_etag=" + } else { + suffix += "?wait_for_change=true&last_etag=" + } + for { + val, etag, err := getETag(subscribeClient, suffix+url.QueryEscape(lastETag)) + if err != nil { + if _, deleted := err.(NotDefinedError); !deleted { + time.Sleep(failedSubscribeSleep) + continue // Retry on other errors. + } + ok = false + } + lastETag = etag + + if err := fn(val, ok); err != nil || !ok { + return err + } + } +} + +// ProjectID returns the current instance's project ID string. +func ProjectID() (string, error) { return projID.get() } + +// NumericProjectID returns the current instance's numeric project ID. +func NumericProjectID() (string, error) { return projNum.get() } + +// InternalIP returns the instance's primary internal IP address. +func InternalIP() (string, error) { + return getTrimmed("instance/network-interfaces/0/ip") +} + +// ExternalIP returns the instance's primary external (public) IP address. +func ExternalIP() (string, error) { + return getTrimmed("instance/network-interfaces/0/access-configs/0/external-ip") +} + +// Hostname returns the instance's hostname. This will be of the form +// ".c..internal". +func Hostname() (string, error) { + return getTrimmed("instance/hostname") +} + +// InstanceTags returns the list of user-defined instance tags, +// assigned when initially creating a GCE instance. +func InstanceTags() ([]string, error) { + var s []string + j, err := Get("instance/tags") + if err != nil { + return nil, err + } + if err := json.NewDecoder(strings.NewReader(j)).Decode(&s); err != nil { + return nil, err + } + return s, nil +} + +// InstanceID returns the current VM's numeric instance ID. +func InstanceID() (string, error) { + return instID.get() +} + +// InstanceName returns the current VM's instance ID string. +func InstanceName() (string, error) { + host, err := Hostname() + if err != nil { + return "", err + } + return strings.Split(host, ".")[0], nil +} + +// Zone returns the current VM's zone, such as "us-central1-b". +func Zone() (string, error) { + zone, err := getTrimmed("instance/zone") + // zone is of the form "projects//zones/". + if err != nil { + return "", err + } + return zone[strings.LastIndex(zone, "/")+1:], nil +} + +// InstanceAttributes returns the list of user-defined attributes, +// assigned when initially creating a GCE VM instance. The value of an +// attribute can be obtained with InstanceAttributeValue. +func InstanceAttributes() ([]string, error) { return lines("instance/attributes/") } + +// ProjectAttributes returns the list of user-defined attributes +// applying to the project as a whole, not just this VM. The value of +// an attribute can be obtained with ProjectAttributeValue. +func ProjectAttributes() ([]string, error) { return lines("project/attributes/") } + +func lines(suffix string) ([]string, error) { + j, err := Get(suffix) + if err != nil { + return nil, err + } + s := strings.Split(strings.TrimSpace(j), "\n") + for i := range s { + s[i] = strings.TrimSpace(s[i]) + } + return s, nil +} + +// InstanceAttributeValue returns the value of the provided VM +// instance attribute. +// +// If the requested attribute is not defined, the returned error will +// be of type NotDefinedError. +// +// InstanceAttributeValue may return ("", nil) if the attribute was +// defined to be the empty string. +func InstanceAttributeValue(attr string) (string, error) { + return Get("instance/attributes/" + attr) +} + +// ProjectAttributeValue returns the value of the provided +// project attribute. +// +// If the requested attribute is not defined, the returned error will +// be of type NotDefinedError. +// +// ProjectAttributeValue may return ("", nil) if the attribute was +// defined to be the empty string. +func ProjectAttributeValue(attr string) (string, error) { + return Get("project/attributes/" + attr) +} + +// Scopes returns the service account scopes for the given account. +// The account may be empty or the string "default" to use the instance's +// main account. +func Scopes(serviceAccount string) ([]string, error) { + if serviceAccount == "" { + serviceAccount = "default" + } + return lines("instance/service-accounts/" + serviceAccount + "/scopes") +} + +func strsContains(ss []string, s string) bool { + for _, v := range ss { + if v == s { + return true + } + } + return false +} diff --git a/vendor/cloud.google.com/go/internal/cloud.go b/vendor/cloud.google.com/go/internal/cloud.go new file mode 100644 index 0000000000..8e0c8f8e52 --- /dev/null +++ b/vendor/cloud.google.com/go/internal/cloud.go @@ -0,0 +1,64 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package internal provides support for the cloud packages. +// +// Users should not import this package directly. +package internal + +import ( + "fmt" + "net/http" +) + +const userAgent = "gcloud-golang/0.1" + +// Transport is an http.RoundTripper that appends Google Cloud client's +// user-agent to the original request's user-agent header. +type Transport struct { + // TODO(bradfitz): delete internal.Transport. It's too wrappy for what it does. + // Do User-Agent some other way. + + // Base is the actual http.RoundTripper + // requests will use. It must not be nil. + Base http.RoundTripper +} + +// RoundTrip appends a user-agent to the existing user-agent +// header and delegates the request to the base http.RoundTripper. +func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { + req = cloneRequest(req) + ua := req.Header.Get("User-Agent") + if ua == "" { + ua = userAgent + } else { + ua = fmt.Sprintf("%s %s", ua, userAgent) + } + req.Header.Set("User-Agent", ua) + return t.Base.RoundTrip(req) +} + +// cloneRequest returns a clone of the provided *http.Request. +// The clone is a shallow copy of the struct and its Header map. +func cloneRequest(r *http.Request) *http.Request { + // shallow copy of the struct + r2 := new(http.Request) + *r2 = *r + // deep copy of the Header + r2.Header = make(http.Header) + for k, s := range r.Header { + r2.Header[k] = s + } + return r2 +} diff --git a/vendor/github.com/PuerkitoBio/purell/LICENSE b/vendor/github.com/PuerkitoBio/purell/LICENSE new file mode 100644 index 0000000000..4b9986dea7 --- /dev/null +++ b/vendor/github.com/PuerkitoBio/purell/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2012, Martin Angers +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/PuerkitoBio/purell/purell.go b/vendor/github.com/PuerkitoBio/purell/purell.go new file mode 100644 index 0000000000..b79da64b32 --- /dev/null +++ b/vendor/github.com/PuerkitoBio/purell/purell.go @@ -0,0 +1,375 @@ +/* +Package purell offers URL normalization as described on the wikipedia page: +http://en.wikipedia.org/wiki/URL_normalization +*/ +package purell + +import ( + "bytes" + "fmt" + "net/url" + "regexp" + "sort" + "strconv" + "strings" + + "github.com/PuerkitoBio/urlesc" + "golang.org/x/net/idna" + "golang.org/x/text/secure/precis" + "golang.org/x/text/unicode/norm" +) + +// A set of normalization flags determines how a URL will +// be normalized. +type NormalizationFlags uint + +const ( + // Safe normalizations + FlagLowercaseScheme NormalizationFlags = 1 << iota // HTTP://host -> http://host, applied by default in Go1.1 + FlagLowercaseHost // http://HOST -> http://host + FlagUppercaseEscapes // http://host/t%ef -> http://host/t%EF + FlagDecodeUnnecessaryEscapes // http://host/t%41 -> http://host/tA + FlagEncodeNecessaryEscapes // http://host/!"#$ -> http://host/%21%22#$ + FlagRemoveDefaultPort // http://host:80 -> http://host + FlagRemoveEmptyQuerySeparator // http://host/path? -> http://host/path + + // Usually safe normalizations + FlagRemoveTrailingSlash // http://host/path/ -> http://host/path + FlagAddTrailingSlash // http://host/path -> http://host/path/ (should choose only one of these add/remove trailing slash flags) + FlagRemoveDotSegments // http://host/path/./a/b/../c -> http://host/path/a/c + + // Unsafe normalizations + FlagRemoveDirectoryIndex // http://host/path/index.html -> http://host/path/ + FlagRemoveFragment // http://host/path#fragment -> http://host/path + FlagForceHTTP // https://host -> http://host + FlagRemoveDuplicateSlashes // http://host/path//a///b -> http://host/path/a/b + FlagRemoveWWW // http://www.host/ -> http://host/ + FlagAddWWW // http://host/ -> http://www.host/ (should choose only one of these add/remove WWW flags) + FlagSortQuery // http://host/path?c=3&b=2&a=1&b=1 -> http://host/path?a=1&b=1&b=2&c=3 + + // Normalizations not in the wikipedia article, required to cover tests cases + // submitted by jehiah + FlagDecodeDWORDHost // http://1113982867 -> http://66.102.7.147 + FlagDecodeOctalHost // http://0102.0146.07.0223 -> http://66.102.7.147 + FlagDecodeHexHost // http://0x42660793 -> http://66.102.7.147 + FlagRemoveUnnecessaryHostDots // http://.host../path -> http://host/path + FlagRemoveEmptyPortSeparator // http://host:/path -> http://host/path + + // Convenience set of safe normalizations + FlagsSafe NormalizationFlags = FlagLowercaseHost | FlagLowercaseScheme | FlagUppercaseEscapes | FlagDecodeUnnecessaryEscapes | FlagEncodeNecessaryEscapes | FlagRemoveDefaultPort | FlagRemoveEmptyQuerySeparator + + // For convenience sets, "greedy" uses the "remove trailing slash" and "remove www. prefix" flags, + // while "non-greedy" uses the "add (or keep) the trailing slash" and "add www. prefix". + + // Convenience set of usually safe normalizations (includes FlagsSafe) + FlagsUsuallySafeGreedy NormalizationFlags = FlagsSafe | FlagRemoveTrailingSlash | FlagRemoveDotSegments + FlagsUsuallySafeNonGreedy NormalizationFlags = FlagsSafe | FlagAddTrailingSlash | FlagRemoveDotSegments + + // Convenience set of unsafe normalizations (includes FlagsUsuallySafe) + FlagsUnsafeGreedy NormalizationFlags = FlagsUsuallySafeGreedy | FlagRemoveDirectoryIndex | FlagRemoveFragment | FlagForceHTTP | FlagRemoveDuplicateSlashes | FlagRemoveWWW | FlagSortQuery + FlagsUnsafeNonGreedy NormalizationFlags = FlagsUsuallySafeNonGreedy | FlagRemoveDirectoryIndex | FlagRemoveFragment | FlagForceHTTP | FlagRemoveDuplicateSlashes | FlagAddWWW | FlagSortQuery + + // Convenience set of all available flags + FlagsAllGreedy = FlagsUnsafeGreedy | FlagDecodeDWORDHost | FlagDecodeOctalHost | FlagDecodeHexHost | FlagRemoveUnnecessaryHostDots | FlagRemoveEmptyPortSeparator + FlagsAllNonGreedy = FlagsUnsafeNonGreedy | FlagDecodeDWORDHost | FlagDecodeOctalHost | FlagDecodeHexHost | FlagRemoveUnnecessaryHostDots | FlagRemoveEmptyPortSeparator +) + +const ( + defaultHttpPort = ":80" + defaultHttpsPort = ":443" +) + +// Regular expressions used by the normalizations +var rxPort = regexp.MustCompile(`(:\d+)/?$`) +var rxDirIndex = regexp.MustCompile(`(^|/)((?:default|index)\.\w{1,4})$`) +var rxDupSlashes = regexp.MustCompile(`/{2,}`) +var rxDWORDHost = regexp.MustCompile(`^(\d+)((?:\.+)?(?:\:\d*)?)$`) +var rxOctalHost = regexp.MustCompile(`^(0\d*)\.(0\d*)\.(0\d*)\.(0\d*)((?:\.+)?(?:\:\d*)?)$`) +var rxHexHost = regexp.MustCompile(`^0x([0-9A-Fa-f]+)((?:\.+)?(?:\:\d*)?)$`) +var rxHostDots = regexp.MustCompile(`^(.+?)(:\d+)?$`) +var rxEmptyPort = regexp.MustCompile(`:+$`) + +// Map of flags to implementation function. +// FlagDecodeUnnecessaryEscapes has no action, since it is done automatically +// by parsing the string as an URL. Same for FlagUppercaseEscapes and FlagRemoveEmptyQuerySeparator. + +// Since maps have undefined traversing order, make a slice of ordered keys +var flagsOrder = []NormalizationFlags{ + FlagLowercaseScheme, + FlagLowercaseHost, + FlagRemoveDefaultPort, + FlagRemoveDirectoryIndex, + FlagRemoveDotSegments, + FlagRemoveFragment, + FlagForceHTTP, // Must be after remove default port (because https=443/http=80) + FlagRemoveDuplicateSlashes, + FlagRemoveWWW, + FlagAddWWW, + FlagSortQuery, + FlagDecodeDWORDHost, + FlagDecodeOctalHost, + FlagDecodeHexHost, + FlagRemoveUnnecessaryHostDots, + FlagRemoveEmptyPortSeparator, + FlagRemoveTrailingSlash, // These two (add/remove trailing slash) must be last + FlagAddTrailingSlash, +} + +// ... and then the map, where order is unimportant +var flags = map[NormalizationFlags]func(*url.URL){ + FlagLowercaseScheme: lowercaseScheme, + FlagLowercaseHost: lowercaseHost, + FlagRemoveDefaultPort: removeDefaultPort, + FlagRemoveDirectoryIndex: removeDirectoryIndex, + FlagRemoveDotSegments: removeDotSegments, + FlagRemoveFragment: removeFragment, + FlagForceHTTP: forceHTTP, + FlagRemoveDuplicateSlashes: removeDuplicateSlashes, + FlagRemoveWWW: removeWWW, + FlagAddWWW: addWWW, + FlagSortQuery: sortQuery, + FlagDecodeDWORDHost: decodeDWORDHost, + FlagDecodeOctalHost: decodeOctalHost, + FlagDecodeHexHost: decodeHexHost, + FlagRemoveUnnecessaryHostDots: removeUnncessaryHostDots, + FlagRemoveEmptyPortSeparator: removeEmptyPortSeparator, + FlagRemoveTrailingSlash: removeTrailingSlash, + FlagAddTrailingSlash: addTrailingSlash, +} + +// MustNormalizeURLString returns the normalized string, and panics if an error occurs. +// It takes an URL string as input, as well as the normalization flags. +func MustNormalizeURLString(u string, f NormalizationFlags) string { + result, e := NormalizeURLString(u, f) + if e != nil { + panic(e) + } + return result +} + +// NormalizeURLString returns the normalized string, or an error if it can't be parsed into an URL object. +// It takes an URL string as input, as well as the normalization flags. +func NormalizeURLString(u string, f NormalizationFlags) (string, error) { + if parsed, e := url.Parse(u); e != nil { + return "", e + } else { + options := make([]precis.Option, 1, 3) + options[0] = precis.IgnoreCase + if f&FlagLowercaseHost == FlagLowercaseHost { + options = append(options, precis.FoldCase()) + } + options = append(options, precis.Norm(norm.NFC)) + profile := precis.NewFreeform(options...) + if parsed.Host, e = idna.ToASCII(profile.NewTransformer().String(parsed.Host)); e != nil { + return "", e + } + return NormalizeURL(parsed, f), nil + } + panic("Unreachable code.") +} + +// NormalizeURL returns the normalized string. +// It takes a parsed URL object as input, as well as the normalization flags. +func NormalizeURL(u *url.URL, f NormalizationFlags) string { + for _, k := range flagsOrder { + if f&k == k { + flags[k](u) + } + } + return urlesc.Escape(u) +} + +func lowercaseScheme(u *url.URL) { + if len(u.Scheme) > 0 { + u.Scheme = strings.ToLower(u.Scheme) + } +} + +func lowercaseHost(u *url.URL) { + if len(u.Host) > 0 { + u.Host = strings.ToLower(u.Host) + } +} + +func removeDefaultPort(u *url.URL) { + if len(u.Host) > 0 { + scheme := strings.ToLower(u.Scheme) + u.Host = rxPort.ReplaceAllStringFunc(u.Host, func(val string) string { + if (scheme == "http" && val == defaultHttpPort) || (scheme == "https" && val == defaultHttpsPort) { + return "" + } + return val + }) + } +} + +func removeTrailingSlash(u *url.URL) { + if l := len(u.Path); l > 0 { + if strings.HasSuffix(u.Path, "/") { + u.Path = u.Path[:l-1] + } + } else if l = len(u.Host); l > 0 { + if strings.HasSuffix(u.Host, "/") { + u.Host = u.Host[:l-1] + } + } +} + +func addTrailingSlash(u *url.URL) { + if l := len(u.Path); l > 0 { + if !strings.HasSuffix(u.Path, "/") { + u.Path += "/" + } + } else if l = len(u.Host); l > 0 { + if !strings.HasSuffix(u.Host, "/") { + u.Host += "/" + } + } +} + +func removeDotSegments(u *url.URL) { + if len(u.Path) > 0 { + var dotFree []string + var lastIsDot bool + + sections := strings.Split(u.Path, "/") + for _, s := range sections { + if s == ".." { + if len(dotFree) > 0 { + dotFree = dotFree[:len(dotFree)-1] + } + } else if s != "." { + dotFree = append(dotFree, s) + } + lastIsDot = (s == "." || s == "..") + } + // Special case if host does not end with / and new path does not begin with / + u.Path = strings.Join(dotFree, "/") + if u.Host != "" && !strings.HasSuffix(u.Host, "/") && !strings.HasPrefix(u.Path, "/") { + u.Path = "/" + u.Path + } + // Special case if the last segment was a dot, make sure the path ends with a slash + if lastIsDot && !strings.HasSuffix(u.Path, "/") { + u.Path += "/" + } + } +} + +func removeDirectoryIndex(u *url.URL) { + if len(u.Path) > 0 { + u.Path = rxDirIndex.ReplaceAllString(u.Path, "$1") + } +} + +func removeFragment(u *url.URL) { + u.Fragment = "" +} + +func forceHTTP(u *url.URL) { + if strings.ToLower(u.Scheme) == "https" { + u.Scheme = "http" + } +} + +func removeDuplicateSlashes(u *url.URL) { + if len(u.Path) > 0 { + u.Path = rxDupSlashes.ReplaceAllString(u.Path, "/") + } +} + +func removeWWW(u *url.URL) { + if len(u.Host) > 0 && strings.HasPrefix(strings.ToLower(u.Host), "www.") { + u.Host = u.Host[4:] + } +} + +func addWWW(u *url.URL) { + if len(u.Host) > 0 && !strings.HasPrefix(strings.ToLower(u.Host), "www.") { + u.Host = "www." + u.Host + } +} + +func sortQuery(u *url.URL) { + q := u.Query() + + if len(q) > 0 { + arKeys := make([]string, len(q)) + i := 0 + for k, _ := range q { + arKeys[i] = k + i++ + } + sort.Strings(arKeys) + buf := new(bytes.Buffer) + for _, k := range arKeys { + sort.Strings(q[k]) + for _, v := range q[k] { + if buf.Len() > 0 { + buf.WriteRune('&') + } + buf.WriteString(fmt.Sprintf("%s=%s", k, urlesc.QueryEscape(v))) + } + } + + // Rebuild the raw query string + u.RawQuery = buf.String() + } +} + +func decodeDWORDHost(u *url.URL) { + if len(u.Host) > 0 { + if matches := rxDWORDHost.FindStringSubmatch(u.Host); len(matches) > 2 { + var parts [4]int64 + + dword, _ := strconv.ParseInt(matches[1], 10, 0) + for i, shift := range []uint{24, 16, 8, 0} { + parts[i] = dword >> shift & 0xFF + } + u.Host = fmt.Sprintf("%d.%d.%d.%d%s", parts[0], parts[1], parts[2], parts[3], matches[2]) + } + } +} + +func decodeOctalHost(u *url.URL) { + if len(u.Host) > 0 { + if matches := rxOctalHost.FindStringSubmatch(u.Host); len(matches) > 5 { + var parts [4]int64 + + for i := 1; i <= 4; i++ { + parts[i-1], _ = strconv.ParseInt(matches[i], 8, 0) + } + u.Host = fmt.Sprintf("%d.%d.%d.%d%s", parts[0], parts[1], parts[2], parts[3], matches[5]) + } + } +} + +func decodeHexHost(u *url.URL) { + if len(u.Host) > 0 { + if matches := rxHexHost.FindStringSubmatch(u.Host); len(matches) > 2 { + // Conversion is safe because of regex validation + parsed, _ := strconv.ParseInt(matches[1], 16, 0) + // Set host as DWORD (base 10) encoded host + u.Host = fmt.Sprintf("%d%s", parsed, matches[2]) + // The rest is the same as decoding a DWORD host + decodeDWORDHost(u) + } + } +} + +func removeUnncessaryHostDots(u *url.URL) { + if len(u.Host) > 0 { + if matches := rxHostDots.FindStringSubmatch(u.Host); len(matches) > 1 { + // Trim the leading and trailing dots + u.Host = strings.Trim(matches[1], ".") + if len(matches) > 2 { + u.Host += matches[2] + } + } + } +} + +func removeEmptyPortSeparator(u *url.URL) { + if len(u.Host) > 0 { + u.Host = rxEmptyPort.ReplaceAllString(u.Host, "") + } +} diff --git a/vendor/github.com/PuerkitoBio/urlesc/LICENSE b/vendor/github.com/PuerkitoBio/urlesc/LICENSE new file mode 100644 index 0000000000..7448756763 --- /dev/null +++ b/vendor/github.com/PuerkitoBio/urlesc/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/PuerkitoBio/urlesc/urlesc.go b/vendor/github.com/PuerkitoBio/urlesc/urlesc.go new file mode 100644 index 0000000000..1b84624594 --- /dev/null +++ b/vendor/github.com/PuerkitoBio/urlesc/urlesc.go @@ -0,0 +1,180 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package urlesc implements query escaping as per RFC 3986. +// It contains some parts of the net/url package, modified so as to allow +// some reserved characters incorrectly escaped by net/url. +// See https://github.com/golang/go/issues/5684 +package urlesc + +import ( + "bytes" + "net/url" + "strings" +) + +type encoding int + +const ( + encodePath encoding = 1 + iota + encodeUserPassword + encodeQueryComponent + encodeFragment +) + +// Return true if the specified character should be escaped when +// appearing in a URL string, according to RFC 3986. +func shouldEscape(c byte, mode encoding) bool { + // §2.3 Unreserved characters (alphanum) + if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' { + return false + } + + switch c { + case '-', '.', '_', '~': // §2.3 Unreserved characters (mark) + return false + + // §2.2 Reserved characters (reserved) + case ':', '/', '?', '#', '[', ']', '@', // gen-delims + '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=': // sub-delims + // Different sections of the URL allow a few of + // the reserved characters to appear unescaped. + switch mode { + case encodePath: // §3.3 + // The RFC allows sub-delims and : @. + // '/', '[' and ']' can be used to assign meaning to individual path + // segments. This package only manipulates the path as a whole, + // so we allow those as well. That leaves only ? and # to escape. + return c == '?' || c == '#' + + case encodeUserPassword: // §3.2.1 + // The RFC allows : and sub-delims in + // userinfo. The parsing of userinfo treats ':' as special so we must escape + // all the gen-delims. + return c == ':' || c == '/' || c == '?' || c == '#' || c == '[' || c == ']' || c == '@' + + case encodeQueryComponent: // §3.4 + // The RFC allows / and ?. + return c != '/' && c != '?' + + case encodeFragment: // §4.1 + // The RFC text is silent but the grammar allows + // everything, so escape nothing but # + return c == '#' + } + } + + // Everything else must be escaped. + return true +} + +// QueryEscape escapes the string so it can be safely placed +// inside a URL query. +func QueryEscape(s string) string { + return escape(s, encodeQueryComponent) +} + +func escape(s string, mode encoding) string { + spaceCount, hexCount := 0, 0 + for i := 0; i < len(s); i++ { + c := s[i] + if shouldEscape(c, mode) { + if c == ' ' && mode == encodeQueryComponent { + spaceCount++ + } else { + hexCount++ + } + } + } + + if spaceCount == 0 && hexCount == 0 { + return s + } + + t := make([]byte, len(s)+2*hexCount) + j := 0 + for i := 0; i < len(s); i++ { + switch c := s[i]; { + case c == ' ' && mode == encodeQueryComponent: + t[j] = '+' + j++ + case shouldEscape(c, mode): + t[j] = '%' + t[j+1] = "0123456789ABCDEF"[c>>4] + t[j+2] = "0123456789ABCDEF"[c&15] + j += 3 + default: + t[j] = s[i] + j++ + } + } + return string(t) +} + +var uiReplacer = strings.NewReplacer( + "%21", "!", + "%27", "'", + "%28", "(", + "%29", ")", + "%2A", "*", +) + +// unescapeUserinfo unescapes some characters that need not to be escaped as per RFC3986. +func unescapeUserinfo(s string) string { + return uiReplacer.Replace(s) +} + +// Escape reassembles the URL into a valid URL string. +// The general form of the result is one of: +// +// scheme:opaque +// scheme://userinfo@host/path?query#fragment +// +// If u.Opaque is non-empty, String uses the first form; +// otherwise it uses the second form. +// +// In the second form, the following rules apply: +// - if u.Scheme is empty, scheme: is omitted. +// - if u.User is nil, userinfo@ is omitted. +// - if u.Host is empty, host/ is omitted. +// - if u.Scheme and u.Host are empty and u.User is nil, +// the entire scheme://userinfo@host/ is omitted. +// - if u.Host is non-empty and u.Path begins with a /, +// the form host/path does not add its own /. +// - if u.RawQuery is empty, ?query is omitted. +// - if u.Fragment is empty, #fragment is omitted. +func Escape(u *url.URL) string { + var buf bytes.Buffer + if u.Scheme != "" { + buf.WriteString(u.Scheme) + buf.WriteByte(':') + } + if u.Opaque != "" { + buf.WriteString(u.Opaque) + } else { + if u.Scheme != "" || u.Host != "" || u.User != nil { + buf.WriteString("//") + if ui := u.User; ui != nil { + buf.WriteString(unescapeUserinfo(ui.String())) + buf.WriteByte('@') + } + if h := u.Host; h != "" { + buf.WriteString(h) + } + } + if u.Path != "" && u.Path[0] != '/' && u.Host != "" { + buf.WriteByte('/') + } + buf.WriteString(escape(u.Path, encodePath)) + } + if u.RawQuery != "" { + buf.WriteByte('?') + buf.WriteString(u.RawQuery) + } + if u.Fragment != "" { + buf.WriteByte('#') + buf.WriteString(escape(u.Fragment, encodeFragment)) + } + return buf.String() +} diff --git a/vendor/github.com/blang/semver/LICENSE b/vendor/github.com/blang/semver/LICENSE new file mode 100644 index 0000000000..5ba5c86fcb --- /dev/null +++ b/vendor/github.com/blang/semver/LICENSE @@ -0,0 +1,22 @@ +The MIT License + +Copyright (c) 2014 Benedikt Lang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/vendor/github.com/blang/semver/json.go b/vendor/github.com/blang/semver/json.go new file mode 100644 index 0000000000..a74bf7c449 --- /dev/null +++ b/vendor/github.com/blang/semver/json.go @@ -0,0 +1,23 @@ +package semver + +import ( + "encoding/json" +) + +// MarshalJSON implements the encoding/json.Marshaler interface. +func (v Version) MarshalJSON() ([]byte, error) { + return json.Marshal(v.String()) +} + +// UnmarshalJSON implements the encoding/json.Unmarshaler interface. +func (v *Version) UnmarshalJSON(data []byte) (err error) { + var versionString string + + if err = json.Unmarshal(data, &versionString); err != nil { + return + } + + *v, err = Parse(versionString) + + return +} diff --git a/vendor/github.com/blang/semver/semver.go b/vendor/github.com/blang/semver/semver.go new file mode 100644 index 0000000000..bbf85ce972 --- /dev/null +++ b/vendor/github.com/blang/semver/semver.go @@ -0,0 +1,395 @@ +package semver + +import ( + "errors" + "fmt" + "strconv" + "strings" +) + +const ( + numbers string = "0123456789" + alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-" + alphanum = alphas + numbers +) + +// SpecVersion is the latest fully supported spec version of semver +var SpecVersion = Version{ + Major: 2, + Minor: 0, + Patch: 0, +} + +// Version represents a semver compatible version +type Version struct { + Major uint64 + Minor uint64 + Patch uint64 + Pre []PRVersion + Build []string //No Precendence +} + +// Version to string +func (v Version) String() string { + b := make([]byte, 0, 5) + b = strconv.AppendUint(b, v.Major, 10) + b = append(b, '.') + b = strconv.AppendUint(b, v.Minor, 10) + b = append(b, '.') + b = strconv.AppendUint(b, v.Patch, 10) + + if len(v.Pre) > 0 { + b = append(b, '-') + b = append(b, v.Pre[0].String()...) + + for _, pre := range v.Pre[1:] { + b = append(b, '.') + b = append(b, pre.String()...) + } + } + + if len(v.Build) > 0 { + b = append(b, '+') + b = append(b, v.Build[0]...) + + for _, build := range v.Build[1:] { + b = append(b, '.') + b = append(b, build...) + } + } + + return string(b) +} + +// Equals checks if v is equal to o. +func (v Version) Equals(o Version) bool { + return (v.Compare(o) == 0) +} + +// EQ checks if v is equal to o. +func (v Version) EQ(o Version) bool { + return (v.Compare(o) == 0) +} + +// NE checks if v is not equal to o. +func (v Version) NE(o Version) bool { + return (v.Compare(o) != 0) +} + +// GT checks if v is greater than o. +func (v Version) GT(o Version) bool { + return (v.Compare(o) == 1) +} + +// GTE checks if v is greater than or equal to o. +func (v Version) GTE(o Version) bool { + return (v.Compare(o) >= 0) +} + +// GE checks if v is greater than or equal to o. +func (v Version) GE(o Version) bool { + return (v.Compare(o) >= 0) +} + +// LT checks if v is less than o. +func (v Version) LT(o Version) bool { + return (v.Compare(o) == -1) +} + +// LTE checks if v is less than or equal to o. +func (v Version) LTE(o Version) bool { + return (v.Compare(o) <= 0) +} + +// LE checks if v is less than or equal to o. +func (v Version) LE(o Version) bool { + return (v.Compare(o) <= 0) +} + +// Compare compares Versions v to o: +// -1 == v is less than o +// 0 == v is equal to o +// 1 == v is greater than o +func (v Version) Compare(o Version) int { + if v.Major != o.Major { + if v.Major > o.Major { + return 1 + } + return -1 + } + if v.Minor != o.Minor { + if v.Minor > o.Minor { + return 1 + } + return -1 + } + if v.Patch != o.Patch { + if v.Patch > o.Patch { + return 1 + } + return -1 + } + + // Quick comparison if a version has no prerelease versions + if len(v.Pre) == 0 && len(o.Pre) == 0 { + return 0 + } else if len(v.Pre) == 0 && len(o.Pre) > 0 { + return 1 + } else if len(v.Pre) > 0 && len(o.Pre) == 0 { + return -1 + } + + i := 0 + for ; i < len(v.Pre) && i < len(o.Pre); i++ { + if comp := v.Pre[i].Compare(o.Pre[i]); comp == 0 { + continue + } else if comp == 1 { + return 1 + } else { + return -1 + } + } + + // If all pr versions are the equal but one has further prversion, this one greater + if i == len(v.Pre) && i == len(o.Pre) { + return 0 + } else if i == len(v.Pre) && i < len(o.Pre) { + return -1 + } else { + return 1 + } + +} + +// Validate validates v and returns error in case +func (v Version) Validate() error { + // Major, Minor, Patch already validated using uint64 + + for _, pre := range v.Pre { + if !pre.IsNum { //Numeric prerelease versions already uint64 + if len(pre.VersionStr) == 0 { + return fmt.Errorf("Prerelease can not be empty %q", pre.VersionStr) + } + if !containsOnly(pre.VersionStr, alphanum) { + return fmt.Errorf("Invalid character(s) found in prerelease %q", pre.VersionStr) + } + } + } + + for _, build := range v.Build { + if len(build) == 0 { + return fmt.Errorf("Build meta data can not be empty %q", build) + } + if !containsOnly(build, alphanum) { + return fmt.Errorf("Invalid character(s) found in build meta data %q", build) + } + } + + return nil +} + +// New is an alias for Parse and returns a pointer, parses version string and returns a validated Version or error +func New(s string) (vp *Version, err error) { + v, err := Parse(s) + vp = &v + return +} + +// Make is an alias for Parse, parses version string and returns a validated Version or error +func Make(s string) (Version, error) { + return Parse(s) +} + +// Parse parses version string and returns a validated Version or error +func Parse(s string) (Version, error) { + if len(s) == 0 { + return Version{}, errors.New("Version string empty") + } + + // Split into major.minor.(patch+pr+meta) + parts := strings.SplitN(s, ".", 3) + if len(parts) != 3 { + return Version{}, errors.New("No Major.Minor.Patch elements found") + } + + // Major + if !containsOnly(parts[0], numbers) { + return Version{}, fmt.Errorf("Invalid character(s) found in major number %q", parts[0]) + } + if hasLeadingZeroes(parts[0]) { + return Version{}, fmt.Errorf("Major number must not contain leading zeroes %q", parts[0]) + } + major, err := strconv.ParseUint(parts[0], 10, 64) + if err != nil { + return Version{}, err + } + + // Minor + if !containsOnly(parts[1], numbers) { + return Version{}, fmt.Errorf("Invalid character(s) found in minor number %q", parts[1]) + } + if hasLeadingZeroes(parts[1]) { + return Version{}, fmt.Errorf("Minor number must not contain leading zeroes %q", parts[1]) + } + minor, err := strconv.ParseUint(parts[1], 10, 64) + if err != nil { + return Version{}, err + } + + v := Version{} + v.Major = major + v.Minor = minor + + var build, prerelease []string + patchStr := parts[2] + + if buildIndex := strings.IndexRune(patchStr, '+'); buildIndex != -1 { + build = strings.Split(patchStr[buildIndex+1:], ".") + patchStr = patchStr[:buildIndex] + } + + if preIndex := strings.IndexRune(patchStr, '-'); preIndex != -1 { + prerelease = strings.Split(patchStr[preIndex+1:], ".") + patchStr = patchStr[:preIndex] + } + + if !containsOnly(patchStr, numbers) { + return Version{}, fmt.Errorf("Invalid character(s) found in patch number %q", patchStr) + } + if hasLeadingZeroes(patchStr) { + return Version{}, fmt.Errorf("Patch number must not contain leading zeroes %q", patchStr) + } + patch, err := strconv.ParseUint(patchStr, 10, 64) + if err != nil { + return Version{}, err + } + + v.Patch = patch + + // Prerelease + for _, prstr := range prerelease { + parsedPR, err := NewPRVersion(prstr) + if err != nil { + return Version{}, err + } + v.Pre = append(v.Pre, parsedPR) + } + + // Build meta data + for _, str := range build { + if len(str) == 0 { + return Version{}, errors.New("Build meta data is empty") + } + if !containsOnly(str, alphanum) { + return Version{}, fmt.Errorf("Invalid character(s) found in build meta data %q", str) + } + v.Build = append(v.Build, str) + } + + return v, nil +} + +// MustParse is like Parse but panics if the version cannot be parsed. +func MustParse(s string) Version { + v, err := Parse(s) + if err != nil { + panic(`semver: Parse(` + s + `): ` + err.Error()) + } + return v +} + +// PRVersion represents a PreRelease Version +type PRVersion struct { + VersionStr string + VersionNum uint64 + IsNum bool +} + +// NewPRVersion creates a new valid prerelease version +func NewPRVersion(s string) (PRVersion, error) { + if len(s) == 0 { + return PRVersion{}, errors.New("Prerelease is empty") + } + v := PRVersion{} + if containsOnly(s, numbers) { + if hasLeadingZeroes(s) { + return PRVersion{}, fmt.Errorf("Numeric PreRelease version must not contain leading zeroes %q", s) + } + num, err := strconv.ParseUint(s, 10, 64) + + // Might never be hit, but just in case + if err != nil { + return PRVersion{}, err + } + v.VersionNum = num + v.IsNum = true + } else if containsOnly(s, alphanum) { + v.VersionStr = s + v.IsNum = false + } else { + return PRVersion{}, fmt.Errorf("Invalid character(s) found in prerelease %q", s) + } + return v, nil +} + +// IsNumeric checks if prerelease-version is numeric +func (v PRVersion) IsNumeric() bool { + return v.IsNum +} + +// Compare compares two PreRelease Versions v and o: +// -1 == v is less than o +// 0 == v is equal to o +// 1 == v is greater than o +func (v PRVersion) Compare(o PRVersion) int { + if v.IsNum && !o.IsNum { + return -1 + } else if !v.IsNum && o.IsNum { + return 1 + } else if v.IsNum && o.IsNum { + if v.VersionNum == o.VersionNum { + return 0 + } else if v.VersionNum > o.VersionNum { + return 1 + } else { + return -1 + } + } else { // both are Alphas + if v.VersionStr == o.VersionStr { + return 0 + } else if v.VersionStr > o.VersionStr { + return 1 + } else { + return -1 + } + } +} + +// PreRelease version to string +func (v PRVersion) String() string { + if v.IsNum { + return strconv.FormatUint(v.VersionNum, 10) + } + return v.VersionStr +} + +func containsOnly(s string, set string) bool { + return strings.IndexFunc(s, func(r rune) bool { + return !strings.ContainsRune(set, r) + }) == -1 +} + +func hasLeadingZeroes(s string) bool { + return len(s) > 1 && s[0] == '0' +} + +// NewBuildVersion creates a new valid build version +func NewBuildVersion(s string) (string, error) { + if len(s) == 0 { + return "", errors.New("Buildversion is empty") + } + if !containsOnly(s, alphanum) { + return "", fmt.Errorf("Invalid character(s) found in build meta data %q", s) + } + return s, nil +} diff --git a/vendor/github.com/blang/semver/sort.go b/vendor/github.com/blang/semver/sort.go new file mode 100644 index 0000000000..e18f880826 --- /dev/null +++ b/vendor/github.com/blang/semver/sort.go @@ -0,0 +1,28 @@ +package semver + +import ( + "sort" +) + +// Versions represents multiple versions. +type Versions []Version + +// Len returns length of version collection +func (s Versions) Len() int { + return len(s) +} + +// Swap swaps two versions inside the collection by its indices +func (s Versions) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +// Less checks if version at index i is less than version at index j +func (s Versions) Less(i, j int) bool { + return s[i].LT(s[j]) +} + +// Sort sorts a slice of versions +func Sort(versions []Version) { + sort.Sort(Versions(versions)) +} diff --git a/vendor/github.com/blang/semver/sql.go b/vendor/github.com/blang/semver/sql.go new file mode 100644 index 0000000000..eb4d802666 --- /dev/null +++ b/vendor/github.com/blang/semver/sql.go @@ -0,0 +1,30 @@ +package semver + +import ( + "database/sql/driver" + "fmt" +) + +// Scan implements the database/sql.Scanner interface. +func (v *Version) Scan(src interface{}) (err error) { + var str string + switch src := src.(type) { + case string: + str = src + case []byte: + str = string(src) + default: + return fmt.Errorf("Version.Scan: cannot convert %T to string.", src) + } + + if t, err := Parse(str); err == nil { + *v = t + } + + return +} + +// Value implements the database/sql/driver.Valuer interface. +func (v Version) Value() (driver.Value, error) { + return v.String(), nil +} diff --git a/vendor/github.com/coreos/go-oidc/LICENSE b/vendor/github.com/coreos/go-oidc/LICENSE new file mode 100644 index 0000000000..e06d208186 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/vendor/github.com/coreos/go-oidc/NOTICE b/vendor/github.com/coreos/go-oidc/NOTICE new file mode 100644 index 0000000000..b39ddfa5cb --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/NOTICE @@ -0,0 +1,5 @@ +CoreOS Project +Copyright 2014 CoreOS, Inc + +This product includes software developed at CoreOS, Inc. +(http://www.coreos.com/). diff --git a/vendor/github.com/coreos/go-oidc/http/client.go b/vendor/github.com/coreos/go-oidc/http/client.go new file mode 100644 index 0000000000..fd079b4950 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/http/client.go @@ -0,0 +1,7 @@ +package http + +import "net/http" + +type Client interface { + Do(*http.Request) (*http.Response, error) +} diff --git a/vendor/github.com/coreos/go-oidc/http/http.go b/vendor/github.com/coreos/go-oidc/http/http.go new file mode 100644 index 0000000000..c3f5121513 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/http/http.go @@ -0,0 +1,156 @@ +package http + +import ( + "encoding/base64" + "encoding/json" + "errors" + "log" + "net/http" + "net/url" + "path" + "strconv" + "strings" + "time" +) + +func WriteError(w http.ResponseWriter, code int, msg string) { + e := struct { + Error string `json:"error"` + }{ + Error: msg, + } + b, err := json.Marshal(e) + if err != nil { + log.Printf("go-oidc: failed to marshal %#v: %v", e, err) + code = http.StatusInternalServerError + b = []byte(`{"error":"server_error"}`) + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(code) + w.Write(b) +} + +// BasicAuth parses a username and password from the request's +// Authorization header. This was pulled from golang master: +// https://codereview.appspot.com/76540043 +func BasicAuth(r *http.Request) (username, password string, ok bool) { + auth := r.Header.Get("Authorization") + if auth == "" { + return + } + + if !strings.HasPrefix(auth, "Basic ") { + return + } + c, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(auth, "Basic ")) + if err != nil { + return + } + cs := string(c) + s := strings.IndexByte(cs, ':') + if s < 0 { + return + } + return cs[:s], cs[s+1:], true +} + +func cacheControlMaxAge(hdr string) (time.Duration, bool, error) { + for _, field := range strings.Split(hdr, ",") { + parts := strings.SplitN(strings.TrimSpace(field), "=", 2) + k := strings.ToLower(strings.TrimSpace(parts[0])) + if k != "max-age" { + continue + } + + if len(parts) == 1 { + return 0, false, errors.New("max-age has no value") + } + + v := strings.TrimSpace(parts[1]) + if v == "" { + return 0, false, errors.New("max-age has empty value") + } + + age, err := strconv.Atoi(v) + if err != nil { + return 0, false, err + } + + if age <= 0 { + return 0, false, nil + } + + return time.Duration(age) * time.Second, true, nil + } + + return 0, false, nil +} + +func expires(date, expires string) (time.Duration, bool, error) { + if date == "" || expires == "" { + return 0, false, nil + } + + te, err := time.Parse(time.RFC1123, expires) + if err != nil { + return 0, false, err + } + + td, err := time.Parse(time.RFC1123, date) + if err != nil { + return 0, false, err + } + + ttl := te.Sub(td) + + // headers indicate data already expired, caller should not + // have to care about this case + if ttl <= 0 { + return 0, false, nil + } + + return ttl, true, nil +} + +func Cacheable(hdr http.Header) (time.Duration, bool, error) { + ttl, ok, err := cacheControlMaxAge(hdr.Get("Cache-Control")) + if err != nil || ok { + return ttl, ok, err + } + + return expires(hdr.Get("Date"), hdr.Get("Expires")) +} + +// MergeQuery appends additional query values to an existing URL. +func MergeQuery(u url.URL, q url.Values) url.URL { + uv := u.Query() + for k, vs := range q { + for _, v := range vs { + uv.Add(k, v) + } + } + u.RawQuery = uv.Encode() + return u +} + +// NewResourceLocation appends a resource id to the end of the requested URL path. +func NewResourceLocation(reqURL *url.URL, id string) string { + var u url.URL + u = *reqURL + u.Path = path.Join(u.Path, id) + u.RawQuery = "" + u.Fragment = "" + return u.String() +} + +// CopyRequest returns a clone of the provided *http.Request. +// The returned object is a shallow copy of the struct and a +// deep copy of its Header field. +func CopyRequest(r *http.Request) *http.Request { + r2 := *r + r2.Header = make(http.Header) + for k, s := range r.Header { + r2.Header[k] = s + } + return &r2 +} diff --git a/vendor/github.com/coreos/go-oidc/http/url.go b/vendor/github.com/coreos/go-oidc/http/url.go new file mode 100644 index 0000000000..df60eb1a6b --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/http/url.go @@ -0,0 +1,29 @@ +package http + +import ( + "errors" + "net/url" +) + +// ParseNonEmptyURL checks that a string is a parsable URL which is also not empty +// since `url.Parse("")` does not return an error. Must contian a scheme and a host. +func ParseNonEmptyURL(u string) (*url.URL, error) { + if u == "" { + return nil, errors.New("url is empty") + } + + ur, err := url.Parse(u) + if err != nil { + return nil, err + } + + if ur.Scheme == "" { + return nil, errors.New("url scheme is empty") + } + + if ur.Host == "" { + return nil, errors.New("url host is empty") + } + + return ur, nil +} diff --git a/vendor/github.com/coreos/go-oidc/jose/claims.go b/vendor/github.com/coreos/go-oidc/jose/claims.go new file mode 100644 index 0000000000..8b48bfd230 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/claims.go @@ -0,0 +1,126 @@ +package jose + +import ( + "encoding/json" + "fmt" + "math" + "time" +) + +type Claims map[string]interface{} + +func (c Claims) Add(name string, value interface{}) { + c[name] = value +} + +func (c Claims) StringClaim(name string) (string, bool, error) { + cl, ok := c[name] + if !ok { + return "", false, nil + } + + v, ok := cl.(string) + if !ok { + return "", false, fmt.Errorf("unable to parse claim as string: %v", name) + } + + return v, true, nil +} + +func (c Claims) StringsClaim(name string) ([]string, bool, error) { + cl, ok := c[name] + if !ok { + return nil, false, nil + } + + if v, ok := cl.([]string); ok { + return v, true, nil + } + + // When unmarshaled, []string will become []interface{}. + if v, ok := cl.([]interface{}); ok { + var ret []string + for _, vv := range v { + str, ok := vv.(string) + if !ok { + return nil, false, fmt.Errorf("unable to parse claim as string array: %v", name) + } + ret = append(ret, str) + } + return ret, true, nil + } + + return nil, false, fmt.Errorf("unable to parse claim as string array: %v", name) +} + +func (c Claims) Int64Claim(name string) (int64, bool, error) { + cl, ok := c[name] + if !ok { + return 0, false, nil + } + + v, ok := cl.(int64) + if !ok { + vf, ok := cl.(float64) + if !ok { + return 0, false, fmt.Errorf("unable to parse claim as int64: %v", name) + } + v = int64(vf) + } + + return v, true, nil +} + +func (c Claims) Float64Claim(name string) (float64, bool, error) { + cl, ok := c[name] + if !ok { + return 0, false, nil + } + + v, ok := cl.(float64) + if !ok { + vi, ok := cl.(int64) + if !ok { + return 0, false, fmt.Errorf("unable to parse claim as float64: %v", name) + } + v = float64(vi) + } + + return v, true, nil +} + +func (c Claims) TimeClaim(name string) (time.Time, bool, error) { + v, ok, err := c.Float64Claim(name) + if !ok || err != nil { + return time.Time{}, ok, err + } + + s := math.Trunc(v) + ns := (v - s) * math.Pow(10, 9) + return time.Unix(int64(s), int64(ns)).UTC(), true, nil +} + +func decodeClaims(payload []byte) (Claims, error) { + var c Claims + if err := json.Unmarshal(payload, &c); err != nil { + return nil, fmt.Errorf("malformed JWT claims, unable to decode: %v", err) + } + return c, nil +} + +func marshalClaims(c Claims) ([]byte, error) { + b, err := json.Marshal(c) + if err != nil { + return nil, err + } + return b, nil +} + +func encodeClaims(c Claims) (string, error) { + b, err := marshalClaims(c) + if err != nil { + return "", err + } + + return encodeSegment(b), nil +} diff --git a/vendor/github.com/coreos/go-oidc/jose/jose.go b/vendor/github.com/coreos/go-oidc/jose/jose.go new file mode 100644 index 0000000000..6209926596 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/jose.go @@ -0,0 +1,112 @@ +package jose + +import ( + "encoding/base64" + "encoding/json" + "fmt" + "strings" +) + +const ( + HeaderMediaType = "typ" + HeaderKeyAlgorithm = "alg" + HeaderKeyID = "kid" +) + +const ( + // Encryption Algorithm Header Parameter Values for JWS + // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-6 + AlgHS256 = "HS256" + AlgHS384 = "HS384" + AlgHS512 = "HS512" + AlgRS256 = "RS256" + AlgRS384 = "RS384" + AlgRS512 = "RS512" + AlgES256 = "ES256" + AlgES384 = "ES384" + AlgES512 = "ES512" + AlgPS256 = "PS256" + AlgPS384 = "PS384" + AlgPS512 = "PS512" + AlgNone = "none" +) + +const ( + // Algorithm Header Parameter Values for JWE + // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#section-4.1 + AlgRSA15 = "RSA1_5" + AlgRSAOAEP = "RSA-OAEP" + AlgRSAOAEP256 = "RSA-OAEP-256" + AlgA128KW = "A128KW" + AlgA192KW = "A192KW" + AlgA256KW = "A256KW" + AlgDir = "dir" + AlgECDHES = "ECDH-ES" + AlgECDHESA128KW = "ECDH-ES+A128KW" + AlgECDHESA192KW = "ECDH-ES+A192KW" + AlgECDHESA256KW = "ECDH-ES+A256KW" + AlgA128GCMKW = "A128GCMKW" + AlgA192GCMKW = "A192GCMKW" + AlgA256GCMKW = "A256GCMKW" + AlgPBES2HS256A128KW = "PBES2-HS256+A128KW" + AlgPBES2HS384A192KW = "PBES2-HS384+A192KW" + AlgPBES2HS512A256KW = "PBES2-HS512+A256KW" +) + +const ( + // Encryption Algorithm Header Parameter Values for JWE + // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-22 + EncA128CBCHS256 = "A128CBC-HS256" + EncA128CBCHS384 = "A128CBC-HS384" + EncA256CBCHS512 = "A256CBC-HS512" + EncA128GCM = "A128GCM" + EncA192GCM = "A192GCM" + EncA256GCM = "A256GCM" +) + +type JOSEHeader map[string]string + +func (j JOSEHeader) Validate() error { + if _, exists := j[HeaderKeyAlgorithm]; !exists { + return fmt.Errorf("header missing %q parameter", HeaderKeyAlgorithm) + } + + return nil +} + +func decodeHeader(seg string) (JOSEHeader, error) { + b, err := decodeSegment(seg) + if err != nil { + return nil, err + } + + var h JOSEHeader + err = json.Unmarshal(b, &h) + if err != nil { + return nil, err + } + + return h, nil +} + +func encodeHeader(h JOSEHeader) (string, error) { + b, err := json.Marshal(h) + if err != nil { + return "", err + } + + return encodeSegment(b), nil +} + +// Decode JWT specific base64url encoding with padding stripped +func decodeSegment(seg string) ([]byte, error) { + if l := len(seg) % 4; l != 0 { + seg += strings.Repeat("=", 4-l) + } + return base64.URLEncoding.DecodeString(seg) +} + +// Encode JWT specific base64url encoding with padding stripped +func encodeSegment(seg []byte) string { + return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=") +} diff --git a/vendor/github.com/coreos/go-oidc/jose/jwk.go b/vendor/github.com/coreos/go-oidc/jose/jwk.go new file mode 100644 index 0000000000..b7a8e23558 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/jwk.go @@ -0,0 +1,135 @@ +package jose + +import ( + "bytes" + "encoding/base64" + "encoding/binary" + "encoding/json" + "math/big" + "strings" +) + +// JSON Web Key +// https://tools.ietf.org/html/draft-ietf-jose-json-web-key-36#page-5 +type JWK struct { + ID string + Type string + Alg string + Use string + Exponent int + Modulus *big.Int + Secret []byte +} + +type jwkJSON struct { + ID string `json:"kid"` + Type string `json:"kty"` + Alg string `json:"alg"` + Use string `json:"use"` + Exponent string `json:"e"` + Modulus string `json:"n"` +} + +func (j *JWK) MarshalJSON() ([]byte, error) { + t := jwkJSON{ + ID: j.ID, + Type: j.Type, + Alg: j.Alg, + Use: j.Use, + Exponent: encodeExponent(j.Exponent), + Modulus: encodeModulus(j.Modulus), + } + + return json.Marshal(&t) +} + +func (j *JWK) UnmarshalJSON(data []byte) error { + var t jwkJSON + err := json.Unmarshal(data, &t) + if err != nil { + return err + } + + e, err := decodeExponent(t.Exponent) + if err != nil { + return err + } + + n, err := decodeModulus(t.Modulus) + if err != nil { + return err + } + + j.ID = t.ID + j.Type = t.Type + j.Alg = t.Alg + j.Use = t.Use + j.Exponent = e + j.Modulus = n + + return nil +} + +type JWKSet struct { + Keys []JWK `json:"keys"` +} + +func decodeExponent(e string) (int, error) { + decE, err := decodeBase64URLPaddingOptional(e) + if err != nil { + return 0, err + } + var eBytes []byte + if len(decE) < 8 { + eBytes = make([]byte, 8-len(decE), 8) + eBytes = append(eBytes, decE...) + } else { + eBytes = decE + } + eReader := bytes.NewReader(eBytes) + var E uint64 + err = binary.Read(eReader, binary.BigEndian, &E) + if err != nil { + return 0, err + } + return int(E), nil +} + +func encodeExponent(e int) string { + b := make([]byte, 8) + binary.BigEndian.PutUint64(b, uint64(e)) + var idx int + for ; idx < 8; idx++ { + if b[idx] != 0x0 { + break + } + } + return base64.URLEncoding.EncodeToString(b[idx:]) +} + +// Turns a URL encoded modulus of a key into a big int. +func decodeModulus(n string) (*big.Int, error) { + decN, err := decodeBase64URLPaddingOptional(n) + if err != nil { + return nil, err + } + N := big.NewInt(0) + N.SetBytes(decN) + return N, nil +} + +func encodeModulus(n *big.Int) string { + return base64.URLEncoding.EncodeToString(n.Bytes()) +} + +// decodeBase64URLPaddingOptional decodes Base64 whether there is padding or not. +// The stdlib version currently doesn't handle this. +// We can get rid of this is if this bug: +// https://github.com/golang/go/issues/4237 +// ever closes. +func decodeBase64URLPaddingOptional(e string) ([]byte, error) { + if m := len(e) % 4; m != 0 { + e += strings.Repeat("=", 4-m) + } + return base64.URLEncoding.DecodeString(e) +} diff --git a/vendor/github.com/coreos/go-oidc/jose/jws.go b/vendor/github.com/coreos/go-oidc/jose/jws.go new file mode 100644 index 0000000000..1049ece831 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/jws.go @@ -0,0 +1,51 @@ +package jose + +import ( + "fmt" + "strings" +) + +type JWS struct { + RawHeader string + Header JOSEHeader + RawPayload string + Payload []byte + Signature []byte +} + +// Given a raw encoded JWS token parses it and verifies the structure. +func ParseJWS(raw string) (JWS, error) { + parts := strings.Split(raw, ".") + if len(parts) != 3 { + return JWS{}, fmt.Errorf("malformed JWS, only %d segments", len(parts)) + } + + rawSig := parts[2] + jws := JWS{ + RawHeader: parts[0], + RawPayload: parts[1], + } + + header, err := decodeHeader(jws.RawHeader) + if err != nil { + return JWS{}, fmt.Errorf("malformed JWS, unable to decode header, %s", err) + } + if err = header.Validate(); err != nil { + return JWS{}, fmt.Errorf("malformed JWS, %s", err) + } + jws.Header = header + + payload, err := decodeSegment(jws.RawPayload) + if err != nil { + return JWS{}, fmt.Errorf("malformed JWS, unable to decode payload: %s", err) + } + jws.Payload = payload + + sig, err := decodeSegment(rawSig) + if err != nil { + return JWS{}, fmt.Errorf("malformed JWS, unable to decode signature: %s", err) + } + jws.Signature = sig + + return jws, nil +} diff --git a/vendor/github.com/coreos/go-oidc/jose/jwt.go b/vendor/github.com/coreos/go-oidc/jose/jwt.go new file mode 100644 index 0000000000..3b3e9634b0 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/jwt.go @@ -0,0 +1,82 @@ +package jose + +import "strings" + +type JWT JWS + +func ParseJWT(token string) (jwt JWT, err error) { + jws, err := ParseJWS(token) + if err != nil { + return + } + + return JWT(jws), nil +} + +func NewJWT(header JOSEHeader, claims Claims) (jwt JWT, err error) { + jwt = JWT{} + + jwt.Header = header + jwt.Header[HeaderMediaType] = "JWT" + + claimBytes, err := marshalClaims(claims) + if err != nil { + return + } + jwt.Payload = claimBytes + + eh, err := encodeHeader(header) + if err != nil { + return + } + jwt.RawHeader = eh + + ec, err := encodeClaims(claims) + if err != nil { + return + } + jwt.RawPayload = ec + + return +} + +func (j *JWT) KeyID() (string, bool) { + kID, ok := j.Header[HeaderKeyID] + return kID, ok +} + +func (j *JWT) Claims() (Claims, error) { + return decodeClaims(j.Payload) +} + +// Encoded data part of the token which may be signed. +func (j *JWT) Data() string { + return strings.Join([]string{j.RawHeader, j.RawPayload}, ".") +} + +// Full encoded JWT token string in format: header.claims.signature +func (j *JWT) Encode() string { + d := j.Data() + s := encodeSegment(j.Signature) + return strings.Join([]string{d, s}, ".") +} + +func NewSignedJWT(claims Claims, s Signer) (*JWT, error) { + header := JOSEHeader{ + HeaderKeyAlgorithm: s.Alg(), + HeaderKeyID: s.ID(), + } + + jwt, err := NewJWT(header, claims) + if err != nil { + return nil, err + } + + sig, err := s.Sign([]byte(jwt.Data())) + if err != nil { + return nil, err + } + jwt.Signature = sig + + return &jwt, nil +} diff --git a/vendor/github.com/coreos/go-oidc/jose/sig.go b/vendor/github.com/coreos/go-oidc/jose/sig.go new file mode 100755 index 0000000000..7b2b253cca --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/sig.go @@ -0,0 +1,24 @@ +package jose + +import ( + "fmt" +) + +type Verifier interface { + ID() string + Alg() string + Verify(sig []byte, data []byte) error +} + +type Signer interface { + Verifier + Sign(data []byte) (sig []byte, err error) +} + +func NewVerifier(jwk JWK) (Verifier, error) { + if jwk.Type != "RSA" { + return nil, fmt.Errorf("unsupported key type %q", jwk.Type) + } + + return NewVerifierRSA(jwk) +} diff --git a/vendor/github.com/coreos/go-oidc/jose/sig_hmac.go b/vendor/github.com/coreos/go-oidc/jose/sig_hmac.go new file mode 100755 index 0000000000..b3ca3ef3d4 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/sig_hmac.go @@ -0,0 +1,67 @@ +package jose + +import ( + "bytes" + "crypto" + "crypto/hmac" + _ "crypto/sha256" + "errors" + "fmt" +) + +type VerifierHMAC struct { + KeyID string + Hash crypto.Hash + Secret []byte +} + +type SignerHMAC struct { + VerifierHMAC +} + +func NewVerifierHMAC(jwk JWK) (*VerifierHMAC, error) { + if jwk.Alg != "" && jwk.Alg != "HS256" { + return nil, fmt.Errorf("unsupported key algorithm %q", jwk.Alg) + } + + v := VerifierHMAC{ + KeyID: jwk.ID, + Secret: jwk.Secret, + Hash: crypto.SHA256, + } + + return &v, nil +} + +func (v *VerifierHMAC) ID() string { + return v.KeyID +} + +func (v *VerifierHMAC) Alg() string { + return "HS256" +} + +func (v *VerifierHMAC) Verify(sig []byte, data []byte) error { + h := hmac.New(v.Hash.New, v.Secret) + h.Write(data) + if !bytes.Equal(sig, h.Sum(nil)) { + return errors.New("invalid hmac signature") + } + return nil +} + +func NewSignerHMAC(kid string, secret []byte) *SignerHMAC { + return &SignerHMAC{ + VerifierHMAC: VerifierHMAC{ + KeyID: kid, + Secret: secret, + Hash: crypto.SHA256, + }, + } +} + +func (s *SignerHMAC) Sign(data []byte) ([]byte, error) { + h := hmac.New(s.Hash.New, s.Secret) + h.Write(data) + return h.Sum(nil), nil +} diff --git a/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go b/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go new file mode 100755 index 0000000000..004e45dd83 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go @@ -0,0 +1,67 @@ +package jose + +import ( + "crypto" + "crypto/rand" + "crypto/rsa" + "fmt" +) + +type VerifierRSA struct { + KeyID string + Hash crypto.Hash + PublicKey rsa.PublicKey +} + +type SignerRSA struct { + PrivateKey rsa.PrivateKey + VerifierRSA +} + +func NewVerifierRSA(jwk JWK) (*VerifierRSA, error) { + if jwk.Alg != "" && jwk.Alg != "RS256" { + return nil, fmt.Errorf("unsupported key algorithm %q", jwk.Alg) + } + + v := VerifierRSA{ + KeyID: jwk.ID, + PublicKey: rsa.PublicKey{ + N: jwk.Modulus, + E: jwk.Exponent, + }, + Hash: crypto.SHA256, + } + + return &v, nil +} + +func NewSignerRSA(kid string, key rsa.PrivateKey) *SignerRSA { + return &SignerRSA{ + PrivateKey: key, + VerifierRSA: VerifierRSA{ + KeyID: kid, + PublicKey: key.PublicKey, + Hash: crypto.SHA256, + }, + } +} + +func (v *VerifierRSA) ID() string { + return v.KeyID +} + +func (v *VerifierRSA) Alg() string { + return "RS256" +} + +func (v *VerifierRSA) Verify(sig []byte, data []byte) error { + h := v.Hash.New() + h.Write(data) + return rsa.VerifyPKCS1v15(&v.PublicKey, v.Hash, h.Sum(nil), sig) +} + +func (s *SignerRSA) Sign(data []byte) ([]byte, error) { + h := s.Hash.New() + h.Write(data) + return rsa.SignPKCS1v15(rand.Reader, &s.PrivateKey, s.Hash, h.Sum(nil)) +} diff --git a/vendor/github.com/coreos/go-oidc/key/key.go b/vendor/github.com/coreos/go-oidc/key/key.go new file mode 100644 index 0000000000..208c1fc149 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/key/key.go @@ -0,0 +1,153 @@ +package key + +import ( + "crypto/rand" + "crypto/rsa" + "encoding/hex" + "encoding/json" + "io" + "time" + + "github.com/coreos/go-oidc/jose" +) + +func NewPublicKey(jwk jose.JWK) *PublicKey { + return &PublicKey{jwk: jwk} +} + +type PublicKey struct { + jwk jose.JWK +} + +func (k *PublicKey) MarshalJSON() ([]byte, error) { + return json.Marshal(&k.jwk) +} + +func (k *PublicKey) UnmarshalJSON(data []byte) error { + var jwk jose.JWK + if err := json.Unmarshal(data, &jwk); err != nil { + return err + } + k.jwk = jwk + return nil +} + +func (k *PublicKey) ID() string { + return k.jwk.ID +} + +func (k *PublicKey) Verifier() (jose.Verifier, error) { + return jose.NewVerifierRSA(k.jwk) +} + +type PrivateKey struct { + KeyID string + PrivateKey *rsa.PrivateKey +} + +func (k *PrivateKey) ID() string { + return k.KeyID +} + +func (k *PrivateKey) Signer() jose.Signer { + return jose.NewSignerRSA(k.ID(), *k.PrivateKey) +} + +func (k *PrivateKey) JWK() jose.JWK { + return jose.JWK{ + ID: k.KeyID, + Type: "RSA", + Alg: "RS256", + Use: "sig", + Exponent: k.PrivateKey.PublicKey.E, + Modulus: k.PrivateKey.PublicKey.N, + } +} + +type KeySet interface { + ExpiresAt() time.Time +} + +type PublicKeySet struct { + keys []PublicKey + index map[string]*PublicKey + expiresAt time.Time +} + +func NewPublicKeySet(jwks []jose.JWK, exp time.Time) *PublicKeySet { + keys := make([]PublicKey, len(jwks)) + index := make(map[string]*PublicKey) + for i, jwk := range jwks { + keys[i] = *NewPublicKey(jwk) + index[keys[i].ID()] = &keys[i] + } + return &PublicKeySet{ + keys: keys, + index: index, + expiresAt: exp, + } +} + +func (s *PublicKeySet) ExpiresAt() time.Time { + return s.expiresAt +} + +func (s *PublicKeySet) Keys() []PublicKey { + return s.keys +} + +func (s *PublicKeySet) Key(id string) *PublicKey { + return s.index[id] +} + +type PrivateKeySet struct { + keys []*PrivateKey + ActiveKeyID string + expiresAt time.Time +} + +func NewPrivateKeySet(keys []*PrivateKey, exp time.Time) *PrivateKeySet { + return &PrivateKeySet{ + keys: keys, + ActiveKeyID: keys[0].ID(), + expiresAt: exp.UTC(), + } +} + +func (s *PrivateKeySet) Keys() []*PrivateKey { + return s.keys +} + +func (s *PrivateKeySet) ExpiresAt() time.Time { + return s.expiresAt +} + +func (s *PrivateKeySet) Active() *PrivateKey { + for i, k := range s.keys { + if k.ID() == s.ActiveKeyID { + return s.keys[i] + } + } + + return nil +} + +type GeneratePrivateKeyFunc func() (*PrivateKey, error) + +func GeneratePrivateKey() (*PrivateKey, error) { + pk, err := rsa.GenerateKey(rand.Reader, 2048) + if err != nil { + return nil, err + } + keyID := make([]byte, 20) + if _, err := io.ReadFull(rand.Reader, keyID); err != nil { + return nil, err + } + + k := PrivateKey{ + KeyID: hex.EncodeToString(keyID), + PrivateKey: pk, + } + + return &k, nil +} diff --git a/vendor/github.com/coreos/go-oidc/key/manager.go b/vendor/github.com/coreos/go-oidc/key/manager.go new file mode 100644 index 0000000000..476ab6a8d2 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/key/manager.go @@ -0,0 +1,99 @@ +package key + +import ( + "errors" + "time" + + "github.com/jonboulle/clockwork" + + "github.com/coreos/go-oidc/jose" + "github.com/coreos/pkg/health" +) + +type PrivateKeyManager interface { + ExpiresAt() time.Time + Signer() (jose.Signer, error) + JWKs() ([]jose.JWK, error) + PublicKeys() ([]PublicKey, error) + + WritableKeySetRepo + health.Checkable +} + +func NewPrivateKeyManager() PrivateKeyManager { + return &privateKeyManager{ + clock: clockwork.NewRealClock(), + } +} + +type privateKeyManager struct { + keySet *PrivateKeySet + clock clockwork.Clock +} + +func (m *privateKeyManager) ExpiresAt() time.Time { + if m.keySet == nil { + return m.clock.Now().UTC() + } + + return m.keySet.ExpiresAt() +} + +func (m *privateKeyManager) Signer() (jose.Signer, error) { + if err := m.Healthy(); err != nil { + return nil, err + } + + return m.keySet.Active().Signer(), nil +} + +func (m *privateKeyManager) JWKs() ([]jose.JWK, error) { + if err := m.Healthy(); err != nil { + return nil, err + } + + keys := m.keySet.Keys() + jwks := make([]jose.JWK, len(keys)) + for i, k := range keys { + jwks[i] = k.JWK() + } + return jwks, nil +} + +func (m *privateKeyManager) PublicKeys() ([]PublicKey, error) { + jwks, err := m.JWKs() + if err != nil { + return nil, err + } + keys := make([]PublicKey, len(jwks)) + for i, jwk := range jwks { + keys[i] = *NewPublicKey(jwk) + } + return keys, nil +} + +func (m *privateKeyManager) Healthy() error { + if m.keySet == nil { + return errors.New("private key manager uninitialized") + } + + if len(m.keySet.Keys()) == 0 { + return errors.New("private key manager zero keys") + } + + if m.keySet.ExpiresAt().Before(m.clock.Now().UTC()) { + return errors.New("private key manager keys expired") + } + + return nil +} + +func (m *privateKeyManager) Set(keySet KeySet) error { + privKeySet, ok := keySet.(*PrivateKeySet) + if !ok { + return errors.New("unable to cast to PrivateKeySet") + } + + m.keySet = privKeySet + return nil +} diff --git a/vendor/github.com/coreos/go-oidc/key/repo.go b/vendor/github.com/coreos/go-oidc/key/repo.go new file mode 100644 index 0000000000..1acdeb3614 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/key/repo.go @@ -0,0 +1,55 @@ +package key + +import ( + "errors" + "sync" +) + +var ErrorNoKeys = errors.New("no keys found") + +type WritableKeySetRepo interface { + Set(KeySet) error +} + +type ReadableKeySetRepo interface { + Get() (KeySet, error) +} + +type PrivateKeySetRepo interface { + WritableKeySetRepo + ReadableKeySetRepo +} + +func NewPrivateKeySetRepo() PrivateKeySetRepo { + return &memPrivateKeySetRepo{} +} + +type memPrivateKeySetRepo struct { + mu sync.RWMutex + pks PrivateKeySet +} + +func (r *memPrivateKeySetRepo) Set(ks KeySet) error { + pks, ok := ks.(*PrivateKeySet) + if !ok { + return errors.New("unable to cast to PrivateKeySet") + } else if pks == nil { + return errors.New("nil KeySet") + } + + r.mu.Lock() + defer r.mu.Unlock() + + r.pks = *pks + return nil +} + +func (r *memPrivateKeySetRepo) Get() (KeySet, error) { + r.mu.RLock() + defer r.mu.RUnlock() + + if r.pks.keys == nil { + return nil, ErrorNoKeys + } + return KeySet(&r.pks), nil +} diff --git a/vendor/github.com/coreos/go-oidc/key/rotate.go b/vendor/github.com/coreos/go-oidc/key/rotate.go new file mode 100644 index 0000000000..bc6cdfb1bd --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/key/rotate.go @@ -0,0 +1,159 @@ +package key + +import ( + "errors" + "log" + "time" + + ptime "github.com/coreos/pkg/timeutil" + "github.com/jonboulle/clockwork" +) + +var ( + ErrorPrivateKeysExpired = errors.New("private keys have expired") +) + +func NewPrivateKeyRotator(repo PrivateKeySetRepo, ttl time.Duration) *PrivateKeyRotator { + return &PrivateKeyRotator{ + repo: repo, + ttl: ttl, + + keep: 2, + generateKey: GeneratePrivateKey, + clock: clockwork.NewRealClock(), + } +} + +type PrivateKeyRotator struct { + repo PrivateKeySetRepo + generateKey GeneratePrivateKeyFunc + clock clockwork.Clock + keep int + ttl time.Duration +} + +func (r *PrivateKeyRotator) expiresAt() time.Time { + return r.clock.Now().UTC().Add(r.ttl) +} + +func (r *PrivateKeyRotator) Healthy() error { + pks, err := r.privateKeySet() + if err != nil { + return err + } + + if r.clock.Now().After(pks.ExpiresAt()) { + return ErrorPrivateKeysExpired + } + + return nil +} + +func (r *PrivateKeyRotator) privateKeySet() (*PrivateKeySet, error) { + ks, err := r.repo.Get() + if err != nil { + return nil, err + } + + pks, ok := ks.(*PrivateKeySet) + if !ok { + return nil, errors.New("unable to cast to PrivateKeySet") + } + return pks, nil +} + +func (r *PrivateKeyRotator) nextRotation() (time.Duration, error) { + pks, err := r.privateKeySet() + if err == ErrorNoKeys { + return 0, nil + } + if err != nil { + return 0, err + } + + now := r.clock.Now() + + // Ideally, we want to rotate after half the TTL has elapsed. + idealRotationTime := pks.ExpiresAt().Add(-r.ttl / 2) + + // If we are past the ideal rotation time, rotate immediatly. + return max(0, idealRotationTime.Sub(now)), nil +} + +func max(a, b time.Duration) time.Duration { + if a > b { + return a + } + return b +} + +func (r *PrivateKeyRotator) Run() chan struct{} { + attempt := func() { + k, err := r.generateKey() + if err != nil { + log.Printf("go-oidc: failed generating signing key: %v", err) + return + } + + exp := r.expiresAt() + if err := rotatePrivateKeys(r.repo, k, r.keep, exp); err != nil { + log.Printf("go-oidc: key rotation failed: %v", err) + return + } + } + + stop := make(chan struct{}) + go func() { + for { + var nextRotation time.Duration + var sleep time.Duration + var err error + for { + if nextRotation, err = r.nextRotation(); err == nil { + break + } + sleep = ptime.ExpBackoff(sleep, time.Minute) + log.Printf("go-oidc: error getting nextRotation, retrying in %v: %v", sleep, err) + time.Sleep(sleep) + } + + select { + case <-r.clock.After(nextRotation): + attempt() + case <-stop: + return + } + } + }() + + return stop +} + +func rotatePrivateKeys(repo PrivateKeySetRepo, k *PrivateKey, keep int, exp time.Time) error { + ks, err := repo.Get() + if err != nil && err != ErrorNoKeys { + return err + } + + var keys []*PrivateKey + if ks != nil { + pks, ok := ks.(*PrivateKeySet) + if !ok { + return errors.New("unable to cast to PrivateKeySet") + } + keys = pks.Keys() + } + + keys = append([]*PrivateKey{k}, keys...) + if l := len(keys); l > keep { + keys = keys[0:keep] + } + + nks := PrivateKeySet{ + keys: keys, + ActiveKeyID: k.ID(), + expiresAt: exp, + } + + return repo.Set(KeySet(&nks)) +} diff --git a/vendor/github.com/coreos/go-oidc/key/sync.go b/vendor/github.com/coreos/go-oidc/key/sync.go new file mode 100644 index 0000000000..b887f7b5a5 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/key/sync.go @@ -0,0 +1,91 @@ +package key + +import ( + "errors" + "log" + "time" + + "github.com/jonboulle/clockwork" + + "github.com/coreos/pkg/timeutil" +) + +func NewKeySetSyncer(r ReadableKeySetRepo, w WritableKeySetRepo) *KeySetSyncer { + return &KeySetSyncer{ + readable: r, + writable: w, + clock: clockwork.NewRealClock(), + } +} + +type KeySetSyncer struct { + readable ReadableKeySetRepo + writable WritableKeySetRepo + clock clockwork.Clock +} + +func (s *KeySetSyncer) Run() chan struct{} { + stop := make(chan struct{}) + go func() { + var failing bool + var next time.Duration + for { + exp, err := syncKeySet(s.readable, s.writable, s.clock) + if err != nil || exp == 0 { + if !failing { + failing = true + next = time.Second + } else { + next = timeutil.ExpBackoff(next, time.Minute) + } + if exp == 0 { + log.Printf("Synced to already expired key set, retrying in %v: %v", next, err) + + } else { + log.Printf("Failed syncing key set, retrying in %v: %v", next, err) + } + } else { + failing = false + next = exp / 2 + } + + select { + case <-s.clock.After(next): + continue + case <-stop: + return + } + } + }() + + return stop +} + +func Sync(r ReadableKeySetRepo, w WritableKeySetRepo) (time.Duration, error) { + return syncKeySet(r, w, clockwork.NewRealClock()) +} + +// syncKeySet copies the keyset from r to the KeySet at w and returns the duration in which the KeySet will expire. +// If keyset has already expired, returns a zero duration. +func syncKeySet(r ReadableKeySetRepo, w WritableKeySetRepo, clock clockwork.Clock) (exp time.Duration, err error) { + var ks KeySet + ks, err = r.Get() + if err != nil { + return + } + + if ks == nil { + err = errors.New("no source KeySet") + return + } + + if err = w.Set(ks); err != nil { + return + } + + now := clock.Now() + if ks.ExpiresAt().After(now) { + exp = ks.ExpiresAt().Sub(now) + } + return +} diff --git a/vendor/github.com/coreos/go-oidc/oauth2/error.go b/vendor/github.com/coreos/go-oidc/oauth2/error.go new file mode 100644 index 0000000000..50d890949a --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oauth2/error.go @@ -0,0 +1,29 @@ +package oauth2 + +const ( + ErrorAccessDenied = "access_denied" + ErrorInvalidClient = "invalid_client" + ErrorInvalidGrant = "invalid_grant" + ErrorInvalidRequest = "invalid_request" + ErrorServerError = "server_error" + ErrorUnauthorizedClient = "unauthorized_client" + ErrorUnsupportedGrantType = "unsupported_grant_type" + ErrorUnsupportedResponseType = "unsupported_response_type" +) + +type Error struct { + Type string `json:"error"` + Description string `json:"error_description,omitempty"` + State string `json:"state,omitempty"` +} + +func (e *Error) Error() string { + if e.Description != "" { + return e.Type + ": " + e.Description + } + return e.Type +} + +func NewError(typ string) *Error { + return &Error{Type: typ} +} diff --git a/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go b/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go new file mode 100644 index 0000000000..72d1d6715b --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go @@ -0,0 +1,416 @@ +package oauth2 + +import ( + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "mime" + "net/http" + "net/url" + "sort" + "strconv" + "strings" + + phttp "github.com/coreos/go-oidc/http" +) + +// ResponseTypesEqual compares two response_type values. If either +// contains a space, it is treated as an unordered list. For example, +// comparing "code id_token" and "id_token code" would evaluate to true. +func ResponseTypesEqual(r1, r2 string) bool { + if !strings.Contains(r1, " ") || !strings.Contains(r2, " ") { + // fast route, no split needed + return r1 == r2 + } + + // split, sort, and compare + r1Fields := strings.Fields(r1) + r2Fields := strings.Fields(r2) + if len(r1Fields) != len(r2Fields) { + return false + } + sort.Strings(r1Fields) + sort.Strings(r2Fields) + for i, r1Field := range r1Fields { + if r1Field != r2Fields[i] { + return false + } + } + return true +} + +const ( + // OAuth2.0 response types registered by OIDC. + // + // See: https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#RegistryContents + ResponseTypeCode = "code" + ResponseTypeCodeIDToken = "code id_token" + ResponseTypeCodeIDTokenToken = "code id_token token" + ResponseTypeIDToken = "id_token" + ResponseTypeIDTokenToken = "id_token token" + ResponseTypeToken = "token" + ResponseTypeNone = "none" +) + +const ( + GrantTypeAuthCode = "authorization_code" + GrantTypeClientCreds = "client_credentials" + GrantTypeUserCreds = "password" + GrantTypeImplicit = "implicit" + GrantTypeRefreshToken = "refresh_token" + + AuthMethodClientSecretPost = "client_secret_post" + AuthMethodClientSecretBasic = "client_secret_basic" + AuthMethodClientSecretJWT = "client_secret_jwt" + AuthMethodPrivateKeyJWT = "private_key_jwt" +) + +type Config struct { + Credentials ClientCredentials + Scope []string + RedirectURL string + AuthURL string + TokenURL string + + // Must be one of the AuthMethodXXX methods above. Right now, only + // AuthMethodClientSecretPost and AuthMethodClientSecretBasic are supported. + AuthMethod string +} + +type Client struct { + hc phttp.Client + creds ClientCredentials + scope []string + authURL *url.URL + redirectURL *url.URL + tokenURL *url.URL + authMethod string +} + +type ClientCredentials struct { + ID string + Secret string +} + +func NewClient(hc phttp.Client, cfg Config) (c *Client, err error) { + if len(cfg.Credentials.ID) == 0 { + err = errors.New("missing client id") + return + } + + if len(cfg.Credentials.Secret) == 0 { + err = errors.New("missing client secret") + return + } + + if cfg.AuthMethod == "" { + cfg.AuthMethod = AuthMethodClientSecretBasic + } else if cfg.AuthMethod != AuthMethodClientSecretPost && cfg.AuthMethod != AuthMethodClientSecretBasic { + err = fmt.Errorf("auth method %q is not supported", cfg.AuthMethod) + return + } + + au, err := phttp.ParseNonEmptyURL(cfg.AuthURL) + if err != nil { + return + } + + tu, err := phttp.ParseNonEmptyURL(cfg.TokenURL) + if err != nil { + return + } + + // Allow empty redirect URL in the case where the client + // only needs to verify a given token. + ru, err := url.Parse(cfg.RedirectURL) + if err != nil { + return + } + + c = &Client{ + creds: cfg.Credentials, + scope: cfg.Scope, + redirectURL: ru, + authURL: au, + tokenURL: tu, + hc: hc, + authMethod: cfg.AuthMethod, + } + + return +} + +// Return the embedded HTTP client +func (c *Client) HttpClient() phttp.Client { + return c.hc +} + +// Generate the url for initial redirect to oauth provider. +func (c *Client) AuthCodeURL(state, accessType, prompt string) string { + v := c.commonURLValues() + v.Set("state", state) + if strings.ToLower(accessType) == "offline" { + v.Set("access_type", "offline") + } + + if prompt != "" { + v.Set("prompt", prompt) + } + v.Set("response_type", "code") + + q := v.Encode() + u := *c.authURL + if u.RawQuery == "" { + u.RawQuery = q + } else { + u.RawQuery += "&" + q + } + return u.String() +} + +func (c *Client) commonURLValues() url.Values { + return url.Values{ + "redirect_uri": {c.redirectURL.String()}, + "scope": {strings.Join(c.scope, " ")}, + "client_id": {c.creds.ID}, + } +} + +func (c *Client) newAuthenticatedRequest(urlToken string, values url.Values) (*http.Request, error) { + var req *http.Request + var err error + switch c.authMethod { + case AuthMethodClientSecretPost: + values.Set("client_secret", c.creds.Secret) + req, err = http.NewRequest("POST", urlToken, strings.NewReader(values.Encode())) + if err != nil { + return nil, err + } + case AuthMethodClientSecretBasic: + req, err = http.NewRequest("POST", urlToken, strings.NewReader(values.Encode())) + if err != nil { + return nil, err + } + encodedID := url.QueryEscape(c.creds.ID) + encodedSecret := url.QueryEscape(c.creds.Secret) + req.SetBasicAuth(encodedID, encodedSecret) + default: + panic("misconfigured client: auth method not supported") + } + + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + return req, nil + +} + +// ClientCredsToken posts the client id and secret to obtain a token scoped to the OAuth2 client via the "client_credentials" grant type. +// May not be supported by all OAuth2 servers. +func (c *Client) ClientCredsToken(scope []string) (result TokenResponse, err error) { + v := url.Values{ + "scope": {strings.Join(scope, " ")}, + "grant_type": {GrantTypeClientCreds}, + } + + req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v) + if err != nil { + return + } + + resp, err := c.hc.Do(req) + if err != nil { + return + } + defer resp.Body.Close() + + return parseTokenResponse(resp) +} + +// UserCredsToken posts the username and password to obtain a token scoped to the OAuth2 client via the "password" grant_type +// May not be supported by all OAuth2 servers. +func (c *Client) UserCredsToken(username, password string) (result TokenResponse, err error) { + v := url.Values{ + "scope": {strings.Join(c.scope, " ")}, + "grant_type": {GrantTypeUserCreds}, + "username": {username}, + "password": {password}, + } + + req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v) + if err != nil { + return + } + + resp, err := c.hc.Do(req) + if err != nil { + return + } + defer resp.Body.Close() + + return parseTokenResponse(resp) +} + +// RequestToken requests a token from the Token Endpoint with the specified grantType. +// If 'grantType' == GrantTypeAuthCode, then 'value' should be the authorization code. +// If 'grantType' == GrantTypeRefreshToken, then 'value' should be the refresh token. +func (c *Client) RequestToken(grantType, value string) (result TokenResponse, err error) { + v := c.commonURLValues() + + v.Set("grant_type", grantType) + v.Set("client_secret", c.creds.Secret) + switch grantType { + case GrantTypeAuthCode: + v.Set("code", value) + case GrantTypeRefreshToken: + v.Set("refresh_token", value) + default: + err = fmt.Errorf("unsupported grant_type: %v", grantType) + return + } + + req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v) + if err != nil { + return + } + + resp, err := c.hc.Do(req) + if err != nil { + return + } + defer resp.Body.Close() + + return parseTokenResponse(resp) +} + +func parseTokenResponse(resp *http.Response) (result TokenResponse, err error) { + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return + } + badStatusCode := resp.StatusCode < 200 || resp.StatusCode > 299 + + contentType, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return + } + + result = TokenResponse{ + RawBody: body, + } + + newError := func(typ, desc, state string) error { + if typ == "" { + return fmt.Errorf("unrecognized error %s", body) + } + return &Error{typ, desc, state} + } + + if contentType == "application/x-www-form-urlencoded" || contentType == "text/plain" { + var vals url.Values + vals, err = url.ParseQuery(string(body)) + if err != nil { + return + } + if error := vals.Get("error"); error != "" || badStatusCode { + err = newError(error, vals.Get("error_description"), vals.Get("state")) + return + } + e := vals.Get("expires_in") + if e == "" { + e = vals.Get("expires") + } + if e != "" { + result.Expires, err = strconv.Atoi(e) + if err != nil { + return + } + } + result.AccessToken = vals.Get("access_token") + result.TokenType = vals.Get("token_type") + result.IDToken = vals.Get("id_token") + result.RefreshToken = vals.Get("refresh_token") + result.Scope = vals.Get("scope") + } else { + var r struct { + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + IDToken string `json:"id_token"` + RefreshToken string `json:"refresh_token"` + Scope string `json:"scope"` + State string `json:"state"` + ExpiresIn json.Number `json:"expires_in"` // Azure AD returns string + Expires int `json:"expires"` + Error string `json:"error"` + Desc string `json:"error_description"` + } + if err = json.Unmarshal(body, &r); err != nil { + return + } + if r.Error != "" || badStatusCode { + err = newError(r.Error, r.Desc, r.State) + return + } + result.AccessToken = r.AccessToken + result.TokenType = r.TokenType + result.IDToken = r.IDToken + result.RefreshToken = r.RefreshToken + result.Scope = r.Scope + if expiresIn, err := r.ExpiresIn.Int64(); err != nil { + result.Expires = r.Expires + } else { + result.Expires = int(expiresIn) + } + } + return +} + +type TokenResponse struct { + AccessToken string + TokenType string + Expires int + IDToken string + RefreshToken string // OPTIONAL. + Scope string // OPTIONAL, if identical to the scope requested by the client, otherwise, REQUIRED. + RawBody []byte // In case callers need some other non-standard info from the token response +} + +type AuthCodeRequest struct { + ResponseType string + ClientID string + RedirectURL *url.URL + Scope []string + State string +} + +func ParseAuthCodeRequest(q url.Values) (AuthCodeRequest, error) { + acr := AuthCodeRequest{ + ResponseType: q.Get("response_type"), + ClientID: q.Get("client_id"), + State: q.Get("state"), + Scope: make([]string, 0), + } + + qs := strings.TrimSpace(q.Get("scope")) + if qs != "" { + acr.Scope = strings.Split(qs, " ") + } + + err := func() error { + if acr.ClientID == "" { + return NewError(ErrorInvalidRequest) + } + + redirectURL := q.Get("redirect_uri") + if redirectURL != "" { + ru, err := url.Parse(redirectURL) + if err != nil { + return NewError(ErrorInvalidRequest) + } + acr.RedirectURL = ru + } + + return nil + }() + + return acr, err +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/client.go b/vendor/github.com/coreos/go-oidc/oidc/client.go new file mode 100644 index 0000000000..7a3cb40f64 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/client.go @@ -0,0 +1,846 @@ +package oidc + +import ( + "encoding/json" + "errors" + "fmt" + "net/http" + "net/mail" + "net/url" + "sync" + "time" + + phttp "github.com/coreos/go-oidc/http" + "github.com/coreos/go-oidc/jose" + "github.com/coreos/go-oidc/key" + "github.com/coreos/go-oidc/oauth2" +) + +const ( + // amount of time that must pass after the last key sync + // completes before another attempt may begin + keySyncWindow = 5 * time.Second +) + +var ( + DefaultScope = []string{"openid", "email", "profile"} + + supportedAuthMethods = map[string]struct{}{ + oauth2.AuthMethodClientSecretBasic: struct{}{}, + oauth2.AuthMethodClientSecretPost: struct{}{}, + } +) + +type ClientCredentials oauth2.ClientCredentials + +type ClientIdentity struct { + Credentials ClientCredentials + Metadata ClientMetadata +} + +type JWAOptions struct { + // SigningAlg specifies an JWA alg for signing JWTs. + // + // Specifying this field implies different actions depending on the context. It may + // require objects be serialized and signed as a JWT instead of plain JSON, or + // require an existing JWT object use the specified alg. + // + // See: http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata + SigningAlg string + // EncryptionAlg, if provided, specifies that the returned or sent object be stored + // (or nested) within a JWT object and encrypted with the provided JWA alg. + EncryptionAlg string + // EncryptionEnc specifies the JWA enc algorithm to use with EncryptionAlg. If + // EncryptionAlg is provided and EncryptionEnc is omitted, this field defaults + // to A128CBC-HS256. + // + // If EncryptionEnc is provided EncryptionAlg must also be specified. + EncryptionEnc string +} + +func (opt JWAOptions) valid() error { + if opt.EncryptionEnc != "" && opt.EncryptionAlg == "" { + return errors.New("encryption encoding provided with no encryption algorithm") + } + return nil +} + +func (opt JWAOptions) defaults() JWAOptions { + if opt.EncryptionAlg != "" && opt.EncryptionEnc == "" { + opt.EncryptionEnc = jose.EncA128CBCHS256 + } + return opt +} + +var ( + // Ensure ClientMetadata satisfies these interfaces. + _ json.Marshaler = &ClientMetadata{} + _ json.Unmarshaler = &ClientMetadata{} +) + +// ClientMetadata holds metadata that the authorization server associates +// with a client identifier. The fields range from human-facing display +// strings such as client name, to items that impact the security of the +// protocol, such as the list of valid redirect URIs. +// +// See http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata +// +// TODO: support language specific claim representations +// http://openid.net/specs/openid-connect-registration-1_0.html#LanguagesAndScripts +type ClientMetadata struct { + RedirectURIs []url.URL // Required + + // A list of OAuth 2.0 "response_type" values that the client wishes to restrict + // itself to. Either "code", "token", or another registered extension. + // + // If omitted, only "code" will be used. + ResponseTypes []string + // A list of OAuth 2.0 grant types the client wishes to restrict itself to. + // The grant type values used by OIDC are "authorization_code", "implicit", + // and "refresh_token". + // + // If ommitted, only "authorization_code" will be used. + GrantTypes []string + // "native" or "web". If omitted, "web". + ApplicationType string + + // List of email addresses. + Contacts []mail.Address + // Name of client to be presented to the end-user. + ClientName string + // URL that references a logo for the Client application. + LogoURI *url.URL + // URL of the home page of the Client. + ClientURI *url.URL + // Profile data policies and terms of use to be provided to the end user. + PolicyURI *url.URL + TermsOfServiceURI *url.URL + + // URL to or the value of the client's JSON Web Key Set document. + JWKSURI *url.URL + JWKS *jose.JWKSet + + // URL referencing a flie with a single JSON array of redirect URIs. + SectorIdentifierURI *url.URL + + SubjectType string + + // Options to restrict the JWS alg and enc values used for server responses and requests. + IDTokenResponseOptions JWAOptions + UserInfoResponseOptions JWAOptions + RequestObjectOptions JWAOptions + + // Client requested authorization method and signing options for the token endpoint. + // + // Defaults to "client_secret_basic" + TokenEndpointAuthMethod string + TokenEndpointAuthSigningAlg string + + // DefaultMaxAge specifies the maximum amount of time in seconds before an authorized + // user must reauthroize. + // + // If 0, no limitation is placed on the maximum. + DefaultMaxAge int64 + // RequireAuthTime specifies if the auth_time claim in the ID token is required. + RequireAuthTime bool + + // Default Authentication Context Class Reference values for authentication requests. + DefaultACRValues []string + + // URI that a third party can use to initiate a login by the relaying party. + // + // See: http://openid.net/specs/openid-connect-core-1_0.html#ThirdPartyInitiatedLogin + InitiateLoginURI *url.URL + // Pre-registered request_uri values that may be cached by the server. + RequestURIs []url.URL +} + +// Defaults returns a shallow copy of ClientMetadata with default +// values replacing omitted fields. +func (m ClientMetadata) Defaults() ClientMetadata { + if len(m.ResponseTypes) == 0 { + m.ResponseTypes = []string{oauth2.ResponseTypeCode} + } + if len(m.GrantTypes) == 0 { + m.GrantTypes = []string{oauth2.GrantTypeAuthCode} + } + if m.ApplicationType == "" { + m.ApplicationType = "web" + } + if m.TokenEndpointAuthMethod == "" { + m.TokenEndpointAuthMethod = oauth2.AuthMethodClientSecretBasic + } + m.IDTokenResponseOptions = m.IDTokenResponseOptions.defaults() + m.UserInfoResponseOptions = m.UserInfoResponseOptions.defaults() + m.RequestObjectOptions = m.RequestObjectOptions.defaults() + return m +} + +func (m *ClientMetadata) MarshalJSON() ([]byte, error) { + e := m.toEncodableStruct() + return json.Marshal(&e) +} + +func (m *ClientMetadata) UnmarshalJSON(data []byte) error { + var e encodableClientMetadata + if err := json.Unmarshal(data, &e); err != nil { + return err + } + meta, err := e.toStruct() + if err != nil { + return err + } + if err := meta.Valid(); err != nil { + return err + } + *m = meta + return nil +} + +type encodableClientMetadata struct { + RedirectURIs []string `json:"redirect_uris"` // Required + ResponseTypes []string `json:"response_types,omitempty"` + GrantTypes []string `json:"grant_types,omitempty"` + ApplicationType string `json:"application_type,omitempty"` + Contacts []string `json:"contacts,omitempty"` + ClientName string `json:"client_name,omitempty"` + LogoURI string `json:"logo_uri,omitempty"` + ClientURI string `json:"client_uri,omitempty"` + PolicyURI string `json:"policy_uri,omitempty"` + TermsOfServiceURI string `json:"tos_uri,omitempty"` + JWKSURI string `json:"jwks_uri,omitempty"` + JWKS *jose.JWKSet `json:"jwks,omitempty"` + SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"` + SubjectType string `json:"subject_type,omitempty"` + IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"` + IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"` + IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"` + UserInfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"` + UserInfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"` + UserInfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"` + RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"` + RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"` + RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"` + TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"` + TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"` + DefaultMaxAge int64 `json:"default_max_age,omitempty"` + RequireAuthTime bool `json:"require_auth_time,omitempty"` + DefaultACRValues []string `json:"default_acr_values,omitempty"` + InitiateLoginURI string `json:"initiate_login_uri,omitempty"` + RequestURIs []string `json:"request_uris,omitempty"` +} + +func (c *encodableClientMetadata) toStruct() (ClientMetadata, error) { + p := stickyErrParser{} + m := ClientMetadata{ + RedirectURIs: p.parseURIs(c.RedirectURIs, "redirect_uris"), + ResponseTypes: c.ResponseTypes, + GrantTypes: c.GrantTypes, + ApplicationType: c.ApplicationType, + Contacts: p.parseEmails(c.Contacts, "contacts"), + ClientName: c.ClientName, + LogoURI: p.parseURI(c.LogoURI, "logo_uri"), + ClientURI: p.parseURI(c.ClientURI, "client_uri"), + PolicyURI: p.parseURI(c.PolicyURI, "policy_uri"), + TermsOfServiceURI: p.parseURI(c.TermsOfServiceURI, "tos_uri"), + JWKSURI: p.parseURI(c.JWKSURI, "jwks_uri"), + JWKS: c.JWKS, + SectorIdentifierURI: p.parseURI(c.SectorIdentifierURI, "sector_identifier_uri"), + SubjectType: c.SubjectType, + TokenEndpointAuthMethod: c.TokenEndpointAuthMethod, + TokenEndpointAuthSigningAlg: c.TokenEndpointAuthSigningAlg, + DefaultMaxAge: c.DefaultMaxAge, + RequireAuthTime: c.RequireAuthTime, + DefaultACRValues: c.DefaultACRValues, + InitiateLoginURI: p.parseURI(c.InitiateLoginURI, "initiate_login_uri"), + RequestURIs: p.parseURIs(c.RequestURIs, "request_uris"), + IDTokenResponseOptions: JWAOptions{ + c.IDTokenSignedResponseAlg, + c.IDTokenEncryptedResponseAlg, + c.IDTokenEncryptedResponseEnc, + }, + UserInfoResponseOptions: JWAOptions{ + c.UserInfoSignedResponseAlg, + c.UserInfoEncryptedResponseAlg, + c.UserInfoEncryptedResponseEnc, + }, + RequestObjectOptions: JWAOptions{ + c.RequestObjectSigningAlg, + c.RequestObjectEncryptionAlg, + c.RequestObjectEncryptionEnc, + }, + } + if p.firstErr != nil { + return ClientMetadata{}, p.firstErr + } + return m, nil +} + +// stickyErrParser parses URIs and email addresses. Once it encounters +// a parse error, subsequent calls become no-op. +type stickyErrParser struct { + firstErr error +} + +func (p *stickyErrParser) parseURI(s, field string) *url.URL { + if p.firstErr != nil || s == "" { + return nil + } + u, err := url.Parse(s) + if err == nil { + if u.Host == "" { + err = errors.New("no host in URI") + } else if u.Scheme != "http" && u.Scheme != "https" { + err = errors.New("invalid URI scheme") + } + } + if err != nil { + p.firstErr = fmt.Errorf("failed to parse %s: %v", field, err) + return nil + } + return u +} + +func (p *stickyErrParser) parseURIs(s []string, field string) []url.URL { + if p.firstErr != nil || len(s) == 0 { + return nil + } + uris := make([]url.URL, len(s)) + for i, val := range s { + if val == "" { + p.firstErr = fmt.Errorf("invalid URI in field %s", field) + return nil + } + if u := p.parseURI(val, field); u != nil { + uris[i] = *u + } + } + return uris +} + +func (p *stickyErrParser) parseEmails(s []string, field string) []mail.Address { + if p.firstErr != nil || len(s) == 0 { + return nil + } + addrs := make([]mail.Address, len(s)) + for i, addr := range s { + if addr == "" { + p.firstErr = fmt.Errorf("invalid email in field %s", field) + return nil + } + a, err := mail.ParseAddress(addr) + if err != nil { + p.firstErr = fmt.Errorf("invalid email in field %s: %v", field, err) + return nil + } + addrs[i] = *a + } + return addrs +} + +func (m *ClientMetadata) toEncodableStruct() encodableClientMetadata { + return encodableClientMetadata{ + RedirectURIs: urisToStrings(m.RedirectURIs), + ResponseTypes: m.ResponseTypes, + GrantTypes: m.GrantTypes, + ApplicationType: m.ApplicationType, + Contacts: emailsToStrings(m.Contacts), + ClientName: m.ClientName, + LogoURI: uriToString(m.LogoURI), + ClientURI: uriToString(m.ClientURI), + PolicyURI: uriToString(m.PolicyURI), + TermsOfServiceURI: uriToString(m.TermsOfServiceURI), + JWKSURI: uriToString(m.JWKSURI), + JWKS: m.JWKS, + SectorIdentifierURI: uriToString(m.SectorIdentifierURI), + SubjectType: m.SubjectType, + IDTokenSignedResponseAlg: m.IDTokenResponseOptions.SigningAlg, + IDTokenEncryptedResponseAlg: m.IDTokenResponseOptions.EncryptionAlg, + IDTokenEncryptedResponseEnc: m.IDTokenResponseOptions.EncryptionEnc, + UserInfoSignedResponseAlg: m.UserInfoResponseOptions.SigningAlg, + UserInfoEncryptedResponseAlg: m.UserInfoResponseOptions.EncryptionAlg, + UserInfoEncryptedResponseEnc: m.UserInfoResponseOptions.EncryptionEnc, + RequestObjectSigningAlg: m.RequestObjectOptions.SigningAlg, + RequestObjectEncryptionAlg: m.RequestObjectOptions.EncryptionAlg, + RequestObjectEncryptionEnc: m.RequestObjectOptions.EncryptionEnc, + TokenEndpointAuthMethod: m.TokenEndpointAuthMethod, + TokenEndpointAuthSigningAlg: m.TokenEndpointAuthSigningAlg, + DefaultMaxAge: m.DefaultMaxAge, + RequireAuthTime: m.RequireAuthTime, + DefaultACRValues: m.DefaultACRValues, + InitiateLoginURI: uriToString(m.InitiateLoginURI), + RequestURIs: urisToStrings(m.RequestURIs), + } +} + +func uriToString(u *url.URL) string { + if u == nil { + return "" + } + return u.String() +} + +func urisToStrings(urls []url.URL) []string { + if len(urls) == 0 { + return nil + } + sli := make([]string, len(urls)) + for i, u := range urls { + sli[i] = u.String() + } + return sli +} + +func emailsToStrings(addrs []mail.Address) []string { + if len(addrs) == 0 { + return nil + } + sli := make([]string, len(addrs)) + for i, addr := range addrs { + sli[i] = addr.String() + } + return sli +} + +// Valid determines if a ClientMetadata conforms with the OIDC specification. +// +// Valid is called by UnmarshalJSON. +// +// NOTE(ericchiang): For development purposes Valid does not mandate 'https' for +// URLs fields where the OIDC spec requires it. This may change in future releases +// of this package. See: https://github.com/coreos/go-oidc/issues/34 +func (m *ClientMetadata) Valid() error { + if len(m.RedirectURIs) == 0 { + return errors.New("zero redirect URLs") + } + + validURI := func(u *url.URL, fieldName string) error { + if u.Host == "" { + return fmt.Errorf("no host for uri field %s", fieldName) + } + if u.Scheme != "http" && u.Scheme != "https" { + return fmt.Errorf("uri field %s scheme is not http or https", fieldName) + } + return nil + } + + uris := []struct { + val *url.URL + name string + }{ + {m.LogoURI, "logo_uri"}, + {m.ClientURI, "client_uri"}, + {m.PolicyURI, "policy_uri"}, + {m.TermsOfServiceURI, "tos_uri"}, + {m.JWKSURI, "jwks_uri"}, + {m.SectorIdentifierURI, "sector_identifier_uri"}, + {m.InitiateLoginURI, "initiate_login_uri"}, + } + + for _, uri := range uris { + if uri.val == nil { + continue + } + if err := validURI(uri.val, uri.name); err != nil { + return err + } + } + + uriLists := []struct { + vals []url.URL + name string + }{ + {m.RedirectURIs, "redirect_uris"}, + {m.RequestURIs, "request_uris"}, + } + for _, list := range uriLists { + for _, uri := range list.vals { + if err := validURI(&uri, list.name); err != nil { + return err + } + } + } + + options := []struct { + option JWAOptions + name string + }{ + {m.IDTokenResponseOptions, "id_token response"}, + {m.UserInfoResponseOptions, "userinfo response"}, + {m.RequestObjectOptions, "request_object"}, + } + for _, option := range options { + if err := option.option.valid(); err != nil { + return fmt.Errorf("invalid JWA values for %s: %v", option.name, err) + } + } + return nil +} + +type ClientRegistrationResponse struct { + ClientID string // Required + ClientSecret string + RegistrationAccessToken string + RegistrationClientURI string + // If IsZero is true, unspecified. + ClientIDIssuedAt time.Time + // Time at which the client_secret will expire. + // If IsZero is true, it will not expire. + ClientSecretExpiresAt time.Time + + ClientMetadata +} + +type encodableClientRegistrationResponse struct { + ClientID string `json:"client_id"` // Required + ClientSecret string `json:"client_secret,omitempty"` + RegistrationAccessToken string `json:"registration_access_token,omitempty"` + RegistrationClientURI string `json:"registration_client_uri,omitempty"` + ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"` + // Time at which the client_secret will expire, in seconds since the epoch. + // If 0 it will not expire. + ClientSecretExpiresAt int64 `json:"client_secret_expires_at"` // Required + + encodableClientMetadata +} + +func unixToSec(t time.Time) int64 { + if t.IsZero() { + return 0 + } + return t.Unix() +} + +func (c *ClientRegistrationResponse) MarshalJSON() ([]byte, error) { + e := encodableClientRegistrationResponse{ + ClientID: c.ClientID, + ClientSecret: c.ClientSecret, + RegistrationAccessToken: c.RegistrationAccessToken, + RegistrationClientURI: c.RegistrationClientURI, + ClientIDIssuedAt: unixToSec(c.ClientIDIssuedAt), + ClientSecretExpiresAt: unixToSec(c.ClientSecretExpiresAt), + encodableClientMetadata: c.ClientMetadata.toEncodableStruct(), + } + return json.Marshal(&e) +} + +func secToUnix(sec int64) time.Time { + if sec == 0 { + return time.Time{} + } + return time.Unix(sec, 0) +} + +func (c *ClientRegistrationResponse) UnmarshalJSON(data []byte) error { + var e encodableClientRegistrationResponse + if err := json.Unmarshal(data, &e); err != nil { + return err + } + if e.ClientID == "" { + return errors.New("no client_id in client registration response") + } + metadata, err := e.encodableClientMetadata.toStruct() + if err != nil { + return err + } + *c = ClientRegistrationResponse{ + ClientID: e.ClientID, + ClientSecret: e.ClientSecret, + RegistrationAccessToken: e.RegistrationAccessToken, + RegistrationClientURI: e.RegistrationClientURI, + ClientIDIssuedAt: secToUnix(e.ClientIDIssuedAt), + ClientSecretExpiresAt: secToUnix(e.ClientSecretExpiresAt), + ClientMetadata: metadata, + } + return nil +} + +type ClientConfig struct { + HTTPClient phttp.Client + Credentials ClientCredentials + Scope []string + RedirectURL string + ProviderConfig ProviderConfig + KeySet key.PublicKeySet +} + +func NewClient(cfg ClientConfig) (*Client, error) { + // Allow empty redirect URL in the case where the client + // only needs to verify a given token. + ru, err := url.Parse(cfg.RedirectURL) + if err != nil { + return nil, fmt.Errorf("invalid redirect URL: %v", err) + } + + c := Client{ + credentials: cfg.Credentials, + httpClient: cfg.HTTPClient, + scope: cfg.Scope, + redirectURL: ru.String(), + providerConfig: newProviderConfigRepo(cfg.ProviderConfig), + keySet: cfg.KeySet, + } + + if c.httpClient == nil { + c.httpClient = http.DefaultClient + } + + if c.scope == nil { + c.scope = make([]string, len(DefaultScope)) + copy(c.scope, DefaultScope) + } + + return &c, nil +} + +type Client struct { + httpClient phttp.Client + providerConfig *providerConfigRepo + credentials ClientCredentials + redirectURL string + scope []string + keySet key.PublicKeySet + providerSyncer *ProviderConfigSyncer + + keySetSyncMutex sync.RWMutex + lastKeySetSync time.Time +} + +func (c *Client) Healthy() error { + now := time.Now().UTC() + + cfg := c.providerConfig.Get() + + if cfg.Empty() { + return errors.New("oidc client provider config empty") + } + + if !cfg.ExpiresAt.IsZero() && cfg.ExpiresAt.Before(now) { + return errors.New("oidc client provider config expired") + } + + return nil +} + +func (c *Client) OAuthClient() (*oauth2.Client, error) { + cfg := c.providerConfig.Get() + authMethod, err := chooseAuthMethod(cfg) + if err != nil { + return nil, err + } + + ocfg := oauth2.Config{ + Credentials: oauth2.ClientCredentials(c.credentials), + RedirectURL: c.redirectURL, + AuthURL: cfg.AuthEndpoint.String(), + TokenURL: cfg.TokenEndpoint.String(), + Scope: c.scope, + AuthMethod: authMethod, + } + + return oauth2.NewClient(c.httpClient, ocfg) +} + +func chooseAuthMethod(cfg ProviderConfig) (string, error) { + if len(cfg.TokenEndpointAuthMethodsSupported) == 0 { + return oauth2.AuthMethodClientSecretBasic, nil + } + + for _, authMethod := range cfg.TokenEndpointAuthMethodsSupported { + if _, ok := supportedAuthMethods[authMethod]; ok { + return authMethod, nil + } + } + + return "", errors.New("no supported auth methods") +} + +// SyncProviderConfig starts the provider config syncer +func (c *Client) SyncProviderConfig(discoveryURL string) chan struct{} { + r := NewHTTPProviderConfigGetter(c.httpClient, discoveryURL) + s := NewProviderConfigSyncer(r, c.providerConfig) + stop := s.Run() + s.WaitUntilInitialSync() + return stop +} + +func (c *Client) maybeSyncKeys() error { + tooSoon := func() bool { + return time.Now().UTC().Before(c.lastKeySetSync.Add(keySyncWindow)) + } + + // ignore request to sync keys if a sync operation has been + // attempted too recently + if tooSoon() { + return nil + } + + c.keySetSyncMutex.Lock() + defer c.keySetSyncMutex.Unlock() + + // check again, as another goroutine may have been holding + // the lock while updating the keys + if tooSoon() { + return nil + } + + cfg := c.providerConfig.Get() + r := NewRemotePublicKeyRepo(c.httpClient, cfg.KeysEndpoint.String()) + w := &clientKeyRepo{client: c} + _, err := key.Sync(r, w) + c.lastKeySetSync = time.Now().UTC() + + return err +} + +type clientKeyRepo struct { + client *Client +} + +func (r *clientKeyRepo) Set(ks key.KeySet) error { + pks, ok := ks.(*key.PublicKeySet) + if !ok { + return errors.New("unable to cast to PublicKey") + } + r.client.keySet = *pks + return nil +} + +func (c *Client) ClientCredsToken(scope []string) (jose.JWT, error) { + cfg := c.providerConfig.Get() + + if !cfg.SupportsGrantType(oauth2.GrantTypeClientCreds) { + return jose.JWT{}, fmt.Errorf("%v grant type is not supported", oauth2.GrantTypeClientCreds) + } + + oac, err := c.OAuthClient() + if err != nil { + return jose.JWT{}, err + } + + t, err := oac.ClientCredsToken(scope) + if err != nil { + return jose.JWT{}, err + } + + jwt, err := jose.ParseJWT(t.IDToken) + if err != nil { + return jose.JWT{}, err + } + + return jwt, c.VerifyJWT(jwt) +} + +// ExchangeAuthCode exchanges an OAuth2 auth code for an OIDC JWT ID token. +func (c *Client) ExchangeAuthCode(code string) (jose.JWT, error) { + oac, err := c.OAuthClient() + if err != nil { + return jose.JWT{}, err + } + + t, err := oac.RequestToken(oauth2.GrantTypeAuthCode, code) + if err != nil { + return jose.JWT{}, err + } + + jwt, err := jose.ParseJWT(t.IDToken) + if err != nil { + return jose.JWT{}, err + } + + return jwt, c.VerifyJWT(jwt) +} + +// RefreshToken uses a refresh token to exchange for a new OIDC JWT ID Token. +func (c *Client) RefreshToken(refreshToken string) (jose.JWT, error) { + oac, err := c.OAuthClient() + if err != nil { + return jose.JWT{}, err + } + + t, err := oac.RequestToken(oauth2.GrantTypeRefreshToken, refreshToken) + if err != nil { + return jose.JWT{}, err + } + + jwt, err := jose.ParseJWT(t.IDToken) + if err != nil { + return jose.JWT{}, err + } + + return jwt, c.VerifyJWT(jwt) +} + +func (c *Client) VerifyJWT(jwt jose.JWT) error { + var keysFunc func() []key.PublicKey + if kID, ok := jwt.KeyID(); ok { + keysFunc = c.keysFuncWithID(kID) + } else { + keysFunc = c.keysFuncAll() + } + + v := NewJWTVerifier( + c.providerConfig.Get().Issuer.String(), + c.credentials.ID, + c.maybeSyncKeys, keysFunc) + + return v.Verify(jwt) +} + +// keysFuncWithID returns a function that retrieves at most unexpired +// public key from the Client that matches the provided ID +func (c *Client) keysFuncWithID(kID string) func() []key.PublicKey { + return func() []key.PublicKey { + c.keySetSyncMutex.RLock() + defer c.keySetSyncMutex.RUnlock() + + if c.keySet.ExpiresAt().Before(time.Now()) { + return []key.PublicKey{} + } + + k := c.keySet.Key(kID) + if k == nil { + return []key.PublicKey{} + } + + return []key.PublicKey{*k} + } +} + +// keysFuncAll returns a function that retrieves all unexpired public +// keys from the Client +func (c *Client) keysFuncAll() func() []key.PublicKey { + return func() []key.PublicKey { + c.keySetSyncMutex.RLock() + defer c.keySetSyncMutex.RUnlock() + + if c.keySet.ExpiresAt().Before(time.Now()) { + return []key.PublicKey{} + } + + return c.keySet.Keys() + } +} + +type providerConfigRepo struct { + mu sync.RWMutex + config ProviderConfig // do not access directly, use Get() +} + +func newProviderConfigRepo(pc ProviderConfig) *providerConfigRepo { + return &providerConfigRepo{sync.RWMutex{}, pc} +} + +// returns an error to implement ProviderConfigSetter +func (r *providerConfigRepo) Set(cfg ProviderConfig) error { + r.mu.Lock() + defer r.mu.Unlock() + r.config = cfg + return nil +} + +func (r *providerConfigRepo) Get() ProviderConfig { + r.mu.RLock() + defer r.mu.RUnlock() + return r.config +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/identity.go b/vendor/github.com/coreos/go-oidc/oidc/identity.go new file mode 100644 index 0000000000..9bfa8e3439 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/identity.go @@ -0,0 +1,44 @@ +package oidc + +import ( + "errors" + "time" + + "github.com/coreos/go-oidc/jose" +) + +type Identity struct { + ID string + Name string + Email string + ExpiresAt time.Time +} + +func IdentityFromClaims(claims jose.Claims) (*Identity, error) { + if claims == nil { + return nil, errors.New("nil claim set") + } + + var ident Identity + var err error + var ok bool + + if ident.ID, ok, err = claims.StringClaim("sub"); err != nil { + return nil, err + } else if !ok { + return nil, errors.New("missing required claim: sub") + } + + if ident.Email, _, err = claims.StringClaim("email"); err != nil { + return nil, err + } + + exp, ok, err := claims.TimeClaim("exp") + if err != nil { + return nil, err + } else if ok { + ident.ExpiresAt = exp + } + + return &ident, nil +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/interface.go b/vendor/github.com/coreos/go-oidc/oidc/interface.go new file mode 100644 index 0000000000..248cac0b4d --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/interface.go @@ -0,0 +1,3 @@ +package oidc + +type LoginFunc func(ident Identity, sessionKey string) (redirectURL string, err error) diff --git a/vendor/github.com/coreos/go-oidc/oidc/key.go b/vendor/github.com/coreos/go-oidc/oidc/key.go new file mode 100755 index 0000000000..82a0f567d5 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/key.go @@ -0,0 +1,67 @@ +package oidc + +import ( + "encoding/json" + "errors" + "net/http" + "time" + + phttp "github.com/coreos/go-oidc/http" + "github.com/coreos/go-oidc/jose" + "github.com/coreos/go-oidc/key" +) + +// DefaultPublicKeySetTTL is the default TTL set on the PublicKeySet if no +// Cache-Control header is provided by the JWK Set document endpoint. +const DefaultPublicKeySetTTL = 24 * time.Hour + +// NewRemotePublicKeyRepo is responsible for fetching the JWK Set document. +func NewRemotePublicKeyRepo(hc phttp.Client, ep string) *remotePublicKeyRepo { + return &remotePublicKeyRepo{hc: hc, ep: ep} +} + +type remotePublicKeyRepo struct { + hc phttp.Client + ep string +} + +// Get returns a PublicKeySet fetched from the JWK Set document endpoint. A TTL +// is set on the Key Set to avoid it having to be re-retrieved for every +// encryption event. This TTL is typically controlled by the endpoint returning +// a Cache-Control header, but defaults to 24 hours if no Cache-Control header +// is found. +func (r *remotePublicKeyRepo) Get() (key.KeySet, error) { + req, err := http.NewRequest("GET", r.ep, nil) + if err != nil { + return nil, err + } + + resp, err := r.hc.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + var d struct { + Keys []jose.JWK `json:"keys"` + } + if err := json.NewDecoder(resp.Body).Decode(&d); err != nil { + return nil, err + } + + if len(d.Keys) == 0 { + return nil, errors.New("zero keys in response") + } + + ttl, ok, err := phttp.Cacheable(resp.Header) + if err != nil { + return nil, err + } + if !ok { + ttl = DefaultPublicKeySetTTL + } + + exp := time.Now().UTC().Add(ttl) + ks := key.NewPublicKeySet(d.Keys, exp) + return ks, nil +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/provider.go b/vendor/github.com/coreos/go-oidc/oidc/provider.go new file mode 100644 index 0000000000..ca2838440b --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/provider.go @@ -0,0 +1,690 @@ +package oidc + +import ( + "encoding/json" + "errors" + "fmt" + "log" + "net/http" + "net/url" + "strings" + "sync" + "time" + + "github.com/coreos/pkg/timeutil" + "github.com/jonboulle/clockwork" + + phttp "github.com/coreos/go-oidc/http" + "github.com/coreos/go-oidc/oauth2" +) + +const ( + // Subject Identifier types defined by the OIDC spec. Specifies if the provider + // should provide the same sub claim value to all clients (public) or a unique + // value for each client (pairwise). + // + // See: http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes + SubjectTypePublic = "public" + SubjectTypePairwise = "pairwise" +) + +var ( + // Default values for omitted provider config fields. + // + // Use ProviderConfig's Defaults method to fill a provider config with these values. + DefaultGrantTypesSupported = []string{oauth2.GrantTypeAuthCode, oauth2.GrantTypeImplicit} + DefaultResponseModesSupported = []string{"query", "fragment"} + DefaultTokenEndpointAuthMethodsSupported = []string{oauth2.AuthMethodClientSecretBasic} + DefaultClaimTypesSupported = []string{"normal"} +) + +const ( + MaximumProviderConfigSyncInterval = 24 * time.Hour + MinimumProviderConfigSyncInterval = time.Minute + + discoveryConfigPath = "/.well-known/openid-configuration" +) + +// internally configurable for tests +var minimumProviderConfigSyncInterval = MinimumProviderConfigSyncInterval + +var ( + // Ensure ProviderConfig satisfies these interfaces. + _ json.Marshaler = &ProviderConfig{} + _ json.Unmarshaler = &ProviderConfig{} +) + +// ProviderConfig represents the OpenID Provider Metadata specifying what +// configurations a provider supports. +// +// See: http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata +type ProviderConfig struct { + Issuer *url.URL // Required + AuthEndpoint *url.URL // Required + TokenEndpoint *url.URL // Required if grant types other than "implicit" are supported + UserInfoEndpoint *url.URL + KeysEndpoint *url.URL // Required + RegistrationEndpoint *url.URL + EndSessionEndpoint *url.URL + CheckSessionIFrame *url.URL + + // Servers MAY choose not to advertise some supported scope values even when this + // parameter is used, although those defined in OpenID Core SHOULD be listed, if supported. + ScopesSupported []string + // OAuth2.0 response types supported. + ResponseTypesSupported []string // Required + // OAuth2.0 response modes supported. + // + // If omitted, defaults to DefaultResponseModesSupported. + ResponseModesSupported []string + // OAuth2.0 grant types supported. + // + // If omitted, defaults to DefaultGrantTypesSupported. + GrantTypesSupported []string + ACRValuesSupported []string + // SubjectTypesSupported specifies strategies for providing values for the sub claim. + SubjectTypesSupported []string // Required + + // JWA signing and encryption algorith values supported for ID tokens. + IDTokenSigningAlgValues []string // Required + IDTokenEncryptionAlgValues []string + IDTokenEncryptionEncValues []string + + // JWA signing and encryption algorith values supported for user info responses. + UserInfoSigningAlgValues []string + UserInfoEncryptionAlgValues []string + UserInfoEncryptionEncValues []string + + // JWA signing and encryption algorith values supported for request objects. + ReqObjSigningAlgValues []string + ReqObjEncryptionAlgValues []string + ReqObjEncryptionEncValues []string + + TokenEndpointAuthMethodsSupported []string + TokenEndpointAuthSigningAlgValuesSupported []string + DisplayValuesSupported []string + ClaimTypesSupported []string + ClaimsSupported []string + ServiceDocs *url.URL + ClaimsLocalsSupported []string + UILocalsSupported []string + ClaimsParameterSupported bool + RequestParameterSupported bool + RequestURIParamaterSupported bool + RequireRequestURIRegistration bool + + Policy *url.URL + TermsOfService *url.URL + + // Not part of the OpenID Provider Metadata + ExpiresAt time.Time +} + +// Defaults returns a shallow copy of ProviderConfig with default +// values replacing omitted fields. +// +// var cfg oidc.ProviderConfig +// // Fill provider config with default values for omitted fields. +// cfg = cfg.Defaults() +// +func (p ProviderConfig) Defaults() ProviderConfig { + setDefault := func(val *[]string, defaultVal []string) { + if len(*val) == 0 { + *val = defaultVal + } + } + setDefault(&p.GrantTypesSupported, DefaultGrantTypesSupported) + setDefault(&p.ResponseModesSupported, DefaultResponseModesSupported) + setDefault(&p.TokenEndpointAuthMethodsSupported, DefaultTokenEndpointAuthMethodsSupported) + setDefault(&p.ClaimTypesSupported, DefaultClaimTypesSupported) + return p +} + +func (p *ProviderConfig) MarshalJSON() ([]byte, error) { + e := p.toEncodableStruct() + return json.Marshal(&e) +} + +func (p *ProviderConfig) UnmarshalJSON(data []byte) error { + var e encodableProviderConfig + if err := json.Unmarshal(data, &e); err != nil { + return err + } + conf, err := e.toStruct() + if err != nil { + return err + } + if err := conf.Valid(); err != nil { + return err + } + *p = conf + return nil +} + +type encodableProviderConfig struct { + Issuer string `json:"issuer"` + AuthEndpoint string `json:"authorization_endpoint"` + TokenEndpoint string `json:"token_endpoint"` + UserInfoEndpoint string `json:"userinfo_endpoint,omitempty"` + KeysEndpoint string `json:"jwks_uri"` + RegistrationEndpoint string `json:"registration_endpoint,omitempty"` + EndSessionEndpoint string `json:"end_session_endpoint,omitempty"` + CheckSessionIFrame string `json:"check_session_iframe,omitempty"` + + // Use 'omitempty' for all slices as per OIDC spec: + // "Claims that return multiple values are represented as JSON arrays. + // Claims with zero elements MUST be omitted from the response." + // http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse + + ScopesSupported []string `json:"scopes_supported,omitempty"` + ResponseTypesSupported []string `json:"response_types_supported,omitempty"` + ResponseModesSupported []string `json:"response_modes_supported,omitempty"` + GrantTypesSupported []string `json:"grant_types_supported,omitempty"` + ACRValuesSupported []string `json:"acr_values_supported,omitempty"` + SubjectTypesSupported []string `json:"subject_types_supported,omitempty"` + + IDTokenSigningAlgValues []string `json:"id_token_signing_alg_values_supported,omitempty"` + IDTokenEncryptionAlgValues []string `json:"id_token_encryption_alg_values_supported,omitempty"` + IDTokenEncryptionEncValues []string `json:"id_token_encryption_enc_values_supported,omitempty"` + UserInfoSigningAlgValues []string `json:"userinfo_signing_alg_values_supported,omitempty"` + UserInfoEncryptionAlgValues []string `json:"userinfo_encryption_alg_values_supported,omitempty"` + UserInfoEncryptionEncValues []string `json:"userinfo_encryption_enc_values_supported,omitempty"` + ReqObjSigningAlgValues []string `json:"request_object_signing_alg_values_supported,omitempty"` + ReqObjEncryptionAlgValues []string `json:"request_object_encryption_alg_values_supported,omitempty"` + ReqObjEncryptionEncValues []string `json:"request_object_encryption_enc_values_supported,omitempty"` + + TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported,omitempty"` + TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"` + + DisplayValuesSupported []string `json:"display_values_supported,omitempty"` + ClaimTypesSupported []string `json:"claim_types_supported,omitempty"` + ClaimsSupported []string `json:"claims_supported,omitempty"` + ServiceDocs string `json:"service_documentation,omitempty"` + ClaimsLocalsSupported []string `json:"claims_locales_supported,omitempty"` + UILocalsSupported []string `json:"ui_locales_supported,omitempty"` + ClaimsParameterSupported bool `json:"claims_parameter_supported,omitempty"` + RequestParameterSupported bool `json:"request_parameter_supported,omitempty"` + RequestURIParamaterSupported bool `json:"request_uri_parameter_supported,omitempty"` + RequireRequestURIRegistration bool `json:"require_request_uri_registration,omitempty"` + + Policy string `json:"op_policy_uri,omitempty"` + TermsOfService string `json:"op_tos_uri,omitempty"` +} + +func (cfg ProviderConfig) toEncodableStruct() encodableProviderConfig { + return encodableProviderConfig{ + Issuer: uriToString(cfg.Issuer), + AuthEndpoint: uriToString(cfg.AuthEndpoint), + TokenEndpoint: uriToString(cfg.TokenEndpoint), + UserInfoEndpoint: uriToString(cfg.UserInfoEndpoint), + KeysEndpoint: uriToString(cfg.KeysEndpoint), + RegistrationEndpoint: uriToString(cfg.RegistrationEndpoint), + EndSessionEndpoint: uriToString(cfg.EndSessionEndpoint), + CheckSessionIFrame: uriToString(cfg.CheckSessionIFrame), + ScopesSupported: cfg.ScopesSupported, + ResponseTypesSupported: cfg.ResponseTypesSupported, + ResponseModesSupported: cfg.ResponseModesSupported, + GrantTypesSupported: cfg.GrantTypesSupported, + ACRValuesSupported: cfg.ACRValuesSupported, + SubjectTypesSupported: cfg.SubjectTypesSupported, + IDTokenSigningAlgValues: cfg.IDTokenSigningAlgValues, + IDTokenEncryptionAlgValues: cfg.IDTokenEncryptionAlgValues, + IDTokenEncryptionEncValues: cfg.IDTokenEncryptionEncValues, + UserInfoSigningAlgValues: cfg.UserInfoSigningAlgValues, + UserInfoEncryptionAlgValues: cfg.UserInfoEncryptionAlgValues, + UserInfoEncryptionEncValues: cfg.UserInfoEncryptionEncValues, + ReqObjSigningAlgValues: cfg.ReqObjSigningAlgValues, + ReqObjEncryptionAlgValues: cfg.ReqObjEncryptionAlgValues, + ReqObjEncryptionEncValues: cfg.ReqObjEncryptionEncValues, + TokenEndpointAuthMethodsSupported: cfg.TokenEndpointAuthMethodsSupported, + TokenEndpointAuthSigningAlgValuesSupported: cfg.TokenEndpointAuthSigningAlgValuesSupported, + DisplayValuesSupported: cfg.DisplayValuesSupported, + ClaimTypesSupported: cfg.ClaimTypesSupported, + ClaimsSupported: cfg.ClaimsSupported, + ServiceDocs: uriToString(cfg.ServiceDocs), + ClaimsLocalsSupported: cfg.ClaimsLocalsSupported, + UILocalsSupported: cfg.UILocalsSupported, + ClaimsParameterSupported: cfg.ClaimsParameterSupported, + RequestParameterSupported: cfg.RequestParameterSupported, + RequestURIParamaterSupported: cfg.RequestURIParamaterSupported, + RequireRequestURIRegistration: cfg.RequireRequestURIRegistration, + Policy: uriToString(cfg.Policy), + TermsOfService: uriToString(cfg.TermsOfService), + } +} + +func (e encodableProviderConfig) toStruct() (ProviderConfig, error) { + p := stickyErrParser{} + conf := ProviderConfig{ + Issuer: p.parseURI(e.Issuer, "issuer"), + AuthEndpoint: p.parseURI(e.AuthEndpoint, "authorization_endpoint"), + TokenEndpoint: p.parseURI(e.TokenEndpoint, "token_endpoint"), + UserInfoEndpoint: p.parseURI(e.UserInfoEndpoint, "userinfo_endpoint"), + KeysEndpoint: p.parseURI(e.KeysEndpoint, "jwks_uri"), + RegistrationEndpoint: p.parseURI(e.RegistrationEndpoint, "registration_endpoint"), + EndSessionEndpoint: p.parseURI(e.EndSessionEndpoint, "end_session_endpoint"), + CheckSessionIFrame: p.parseURI(e.CheckSessionIFrame, "check_session_iframe"), + ScopesSupported: e.ScopesSupported, + ResponseTypesSupported: e.ResponseTypesSupported, + ResponseModesSupported: e.ResponseModesSupported, + GrantTypesSupported: e.GrantTypesSupported, + ACRValuesSupported: e.ACRValuesSupported, + SubjectTypesSupported: e.SubjectTypesSupported, + IDTokenSigningAlgValues: e.IDTokenSigningAlgValues, + IDTokenEncryptionAlgValues: e.IDTokenEncryptionAlgValues, + IDTokenEncryptionEncValues: e.IDTokenEncryptionEncValues, + UserInfoSigningAlgValues: e.UserInfoSigningAlgValues, + UserInfoEncryptionAlgValues: e.UserInfoEncryptionAlgValues, + UserInfoEncryptionEncValues: e.UserInfoEncryptionEncValues, + ReqObjSigningAlgValues: e.ReqObjSigningAlgValues, + ReqObjEncryptionAlgValues: e.ReqObjEncryptionAlgValues, + ReqObjEncryptionEncValues: e.ReqObjEncryptionEncValues, + TokenEndpointAuthMethodsSupported: e.TokenEndpointAuthMethodsSupported, + TokenEndpointAuthSigningAlgValuesSupported: e.TokenEndpointAuthSigningAlgValuesSupported, + DisplayValuesSupported: e.DisplayValuesSupported, + ClaimTypesSupported: e.ClaimTypesSupported, + ClaimsSupported: e.ClaimsSupported, + ServiceDocs: p.parseURI(e.ServiceDocs, "service_documentation"), + ClaimsLocalsSupported: e.ClaimsLocalsSupported, + UILocalsSupported: e.UILocalsSupported, + ClaimsParameterSupported: e.ClaimsParameterSupported, + RequestParameterSupported: e.RequestParameterSupported, + RequestURIParamaterSupported: e.RequestURIParamaterSupported, + RequireRequestURIRegistration: e.RequireRequestURIRegistration, + Policy: p.parseURI(e.Policy, "op_policy-uri"), + TermsOfService: p.parseURI(e.TermsOfService, "op_tos_uri"), + } + if p.firstErr != nil { + return ProviderConfig{}, p.firstErr + } + return conf, nil +} + +// Empty returns if a ProviderConfig holds no information. +// +// This case generally indicates a ProviderConfigGetter has experienced an error +// and has nothing to report. +func (p ProviderConfig) Empty() bool { + return p.Issuer == nil +} + +func contains(sli []string, ele string) bool { + for _, s := range sli { + if s == ele { + return true + } + } + return false +} + +// Valid determines if a ProviderConfig conforms with the OIDC specification. +// If Valid returns successfully it guarantees required field are non-nil and +// URLs are well formed. +// +// Valid is called by UnmarshalJSON. +// +// NOTE(ericchiang): For development purposes Valid does not mandate 'https' for +// URLs fields where the OIDC spec requires it. This may change in future releases +// of this package. See: https://github.com/coreos/go-oidc/issues/34 +func (p ProviderConfig) Valid() error { + grantTypes := p.GrantTypesSupported + if len(grantTypes) == 0 { + grantTypes = DefaultGrantTypesSupported + } + implicitOnly := true + for _, grantType := range grantTypes { + if grantType != oauth2.GrantTypeImplicit { + implicitOnly = false + break + } + } + + if len(p.SubjectTypesSupported) == 0 { + return errors.New("missing required field subject_types_supported") + } + if len(p.IDTokenSigningAlgValues) == 0 { + return errors.New("missing required field id_token_signing_alg_values_supported") + } + + if len(p.ScopesSupported) != 0 && !contains(p.ScopesSupported, "openid") { + return errors.New("scoped_supported must be unspecified or include 'openid'") + } + + if !contains(p.IDTokenSigningAlgValues, "RS256") { + return errors.New("id_token_signing_alg_values_supported must include 'RS256'") + } + if contains(p.TokenEndpointAuthMethodsSupported, "none") { + return errors.New("token_endpoint_auth_signing_alg_values_supported cannot include 'none'") + } + + uris := []struct { + val *url.URL + name string + required bool + }{ + {p.Issuer, "issuer", true}, + {p.AuthEndpoint, "authorization_endpoint", true}, + {p.TokenEndpoint, "token_endpoint", !implicitOnly}, + {p.UserInfoEndpoint, "userinfo_endpoint", false}, + {p.KeysEndpoint, "jwks_uri", true}, + {p.RegistrationEndpoint, "registration_endpoint", false}, + {p.EndSessionEndpoint, "end_session_endpoint", false}, + {p.CheckSessionIFrame, "check_session_iframe", false}, + {p.ServiceDocs, "service_documentation", false}, + {p.Policy, "op_policy_uri", false}, + {p.TermsOfService, "op_tos_uri", false}, + } + + for _, uri := range uris { + if uri.val == nil { + if !uri.required { + continue + } + return fmt.Errorf("empty value for required uri field %s", uri.name) + } + if uri.val.Host == "" { + return fmt.Errorf("no host for uri field %s", uri.name) + } + if uri.val.Scheme != "http" && uri.val.Scheme != "https" { + return fmt.Errorf("uri field %s schemeis not http or https", uri.name) + } + } + return nil +} + +// Supports determines if provider supports a client given their respective metadata. +func (p ProviderConfig) Supports(c ClientMetadata) error { + if err := p.Valid(); err != nil { + return fmt.Errorf("invalid provider config: %v", err) + } + if err := c.Valid(); err != nil { + return fmt.Errorf("invalid client config: %v", err) + } + + // Fill default values for omitted fields + c = c.Defaults() + p = p.Defaults() + + // Do the supported values list the requested one? + supports := []struct { + supported []string + requested string + name string + }{ + {p.IDTokenSigningAlgValues, c.IDTokenResponseOptions.SigningAlg, "id_token_signed_response_alg"}, + {p.IDTokenEncryptionAlgValues, c.IDTokenResponseOptions.EncryptionAlg, "id_token_encryption_response_alg"}, + {p.IDTokenEncryptionEncValues, c.IDTokenResponseOptions.EncryptionEnc, "id_token_encryption_response_enc"}, + {p.UserInfoSigningAlgValues, c.UserInfoResponseOptions.SigningAlg, "userinfo_signed_response_alg"}, + {p.UserInfoEncryptionAlgValues, c.UserInfoResponseOptions.EncryptionAlg, "userinfo_encryption_response_alg"}, + {p.UserInfoEncryptionEncValues, c.UserInfoResponseOptions.EncryptionEnc, "userinfo_encryption_response_enc"}, + {p.ReqObjSigningAlgValues, c.RequestObjectOptions.SigningAlg, "request_object_signing_alg"}, + {p.ReqObjEncryptionAlgValues, c.RequestObjectOptions.EncryptionAlg, "request_object_encryption_alg"}, + {p.ReqObjEncryptionEncValues, c.RequestObjectOptions.EncryptionEnc, "request_object_encryption_enc"}, + } + for _, field := range supports { + if field.requested == "" { + continue + } + if !contains(field.supported, field.requested) { + return fmt.Errorf("provider does not support requested value for field %s", field.name) + } + } + + stringsEqual := func(s1, s2 string) bool { return s1 == s2 } + + // For lists, are the list of requested values a subset of the supported ones? + supportsAll := []struct { + supported []string + requested []string + name string + // OAuth2.0 response_type can be space separated lists where order doesn't matter. + // For example "id_token token" is the same as "token id_token" + // Support a custom compare method. + comp func(s1, s2 string) bool + }{ + {p.GrantTypesSupported, c.GrantTypes, "grant_types", stringsEqual}, + {p.ResponseTypesSupported, c.ResponseTypes, "response_type", oauth2.ResponseTypesEqual}, + } + for _, field := range supportsAll { + requestLoop: + for _, req := range field.requested { + for _, sup := range field.supported { + if field.comp(req, sup) { + continue requestLoop + } + } + return fmt.Errorf("provider does not support requested value for field %s", field.name) + } + } + + // TODO(ericchiang): Are there more checks we feel comfortable with begin strict about? + + return nil +} + +func (p ProviderConfig) SupportsGrantType(grantType string) bool { + var supported []string + if len(p.GrantTypesSupported) == 0 { + supported = DefaultGrantTypesSupported + } else { + supported = p.GrantTypesSupported + } + + for _, t := range supported { + if t == grantType { + return true + } + } + return false +} + +type ProviderConfigGetter interface { + Get() (ProviderConfig, error) +} + +type ProviderConfigSetter interface { + Set(ProviderConfig) error +} + +type ProviderConfigSyncer struct { + from ProviderConfigGetter + to ProviderConfigSetter + clock clockwork.Clock + + initialSyncDone bool + initialSyncWait sync.WaitGroup +} + +func NewProviderConfigSyncer(from ProviderConfigGetter, to ProviderConfigSetter) *ProviderConfigSyncer { + return &ProviderConfigSyncer{ + from: from, + to: to, + clock: clockwork.NewRealClock(), + } +} + +func (s *ProviderConfigSyncer) Run() chan struct{} { + stop := make(chan struct{}) + + var next pcsStepper + next = &pcsStepNext{aft: time.Duration(0)} + + s.initialSyncWait.Add(1) + go func() { + for { + select { + case <-s.clock.After(next.after()): + next = next.step(s.sync) + case <-stop: + return + } + } + }() + + return stop +} + +func (s *ProviderConfigSyncer) WaitUntilInitialSync() { + s.initialSyncWait.Wait() +} + +func (s *ProviderConfigSyncer) sync() (time.Duration, error) { + cfg, err := s.from.Get() + if err != nil { + return 0, err + } + + if err = s.to.Set(cfg); err != nil { + return 0, fmt.Errorf("error setting provider config: %v", err) + } + + if !s.initialSyncDone { + s.initialSyncWait.Done() + s.initialSyncDone = true + } + + return nextSyncAfter(cfg.ExpiresAt, s.clock), nil +} + +type pcsStepFunc func() (time.Duration, error) + +type pcsStepper interface { + after() time.Duration + step(pcsStepFunc) pcsStepper +} + +type pcsStepNext struct { + aft time.Duration +} + +func (n *pcsStepNext) after() time.Duration { + return n.aft +} + +func (n *pcsStepNext) step(fn pcsStepFunc) (next pcsStepper) { + ttl, err := fn() + if err == nil { + next = &pcsStepNext{aft: ttl} + } else { + next = &pcsStepRetry{aft: time.Second} + log.Printf("go-oidc: provider config sync falied, retyring in %v: %v", next.after(), err) + } + return +} + +type pcsStepRetry struct { + aft time.Duration +} + +func (r *pcsStepRetry) after() time.Duration { + return r.aft +} + +func (r *pcsStepRetry) step(fn pcsStepFunc) (next pcsStepper) { + ttl, err := fn() + if err == nil { + next = &pcsStepNext{aft: ttl} + } else { + next = &pcsStepRetry{aft: timeutil.ExpBackoff(r.aft, time.Minute)} + log.Printf("go-oidc: provider config sync falied, retyring in %v: %v", next.after(), err) + } + return +} + +func nextSyncAfter(exp time.Time, clock clockwork.Clock) time.Duration { + if exp.IsZero() { + return MaximumProviderConfigSyncInterval + } + + t := exp.Sub(clock.Now()) / 2 + if t > MaximumProviderConfigSyncInterval { + t = MaximumProviderConfigSyncInterval + } else if t < minimumProviderConfigSyncInterval { + t = minimumProviderConfigSyncInterval + } + + return t +} + +type httpProviderConfigGetter struct { + hc phttp.Client + issuerURL string + clock clockwork.Clock +} + +func NewHTTPProviderConfigGetter(hc phttp.Client, issuerURL string) *httpProviderConfigGetter { + return &httpProviderConfigGetter{ + hc: hc, + issuerURL: issuerURL, + clock: clockwork.NewRealClock(), + } +} + +func (r *httpProviderConfigGetter) Get() (cfg ProviderConfig, err error) { + // If the Issuer value contains a path component, any terminating / MUST be removed before + // appending /.well-known/openid-configuration. + // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest + discoveryURL := strings.TrimSuffix(r.issuerURL, "/") + discoveryConfigPath + req, err := http.NewRequest("GET", discoveryURL, nil) + if err != nil { + return + } + + resp, err := r.hc.Do(req) + if err != nil { + return + } + defer resp.Body.Close() + + if err = json.NewDecoder(resp.Body).Decode(&cfg); err != nil { + return + } + + var ttl time.Duration + var ok bool + ttl, ok, err = phttp.Cacheable(resp.Header) + if err != nil { + return + } else if ok { + cfg.ExpiresAt = r.clock.Now().UTC().Add(ttl) + } + + // The issuer value returned MUST be identical to the Issuer URL that was directly used to retrieve the configuration information. + // http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationValidation + if !urlEqual(cfg.Issuer.String(), r.issuerURL) { + err = fmt.Errorf(`"issuer" in config (%v) does not match provided issuer URL (%v)`, cfg.Issuer, r.issuerURL) + return + } + + return +} + +func FetchProviderConfig(hc phttp.Client, issuerURL string) (ProviderConfig, error) { + if hc == nil { + hc = http.DefaultClient + } + + g := NewHTTPProviderConfigGetter(hc, issuerURL) + return g.Get() +} + +func WaitForProviderConfig(hc phttp.Client, issuerURL string) (pcfg ProviderConfig) { + return waitForProviderConfig(hc, issuerURL, clockwork.NewRealClock()) +} + +func waitForProviderConfig(hc phttp.Client, issuerURL string, clock clockwork.Clock) (pcfg ProviderConfig) { + var sleep time.Duration + var err error + for { + pcfg, err = FetchProviderConfig(hc, issuerURL) + if err == nil { + break + } + + sleep = timeutil.ExpBackoff(sleep, time.Minute) + fmt.Printf("Failed fetching provider config, trying again in %v: %v\n", sleep, err) + time.Sleep(sleep) + } + + return +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/transport.go b/vendor/github.com/coreos/go-oidc/oidc/transport.go new file mode 100644 index 0000000000..61c926d7fe --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/transport.go @@ -0,0 +1,88 @@ +package oidc + +import ( + "fmt" + "net/http" + "sync" + + phttp "github.com/coreos/go-oidc/http" + "github.com/coreos/go-oidc/jose" +) + +type TokenRefresher interface { + // Verify checks if the provided token is currently valid or not. + Verify(jose.JWT) error + + // Refresh attempts to authenticate and retrieve a new token. + Refresh() (jose.JWT, error) +} + +type ClientCredsTokenRefresher struct { + Issuer string + OIDCClient *Client +} + +func (c *ClientCredsTokenRefresher) Verify(jwt jose.JWT) (err error) { + _, err = VerifyClientClaims(jwt, c.Issuer) + return +} + +func (c *ClientCredsTokenRefresher) Refresh() (jwt jose.JWT, err error) { + if err = c.OIDCClient.Healthy(); err != nil { + err = fmt.Errorf("unable to authenticate, unhealthy OIDC client: %v", err) + return + } + + jwt, err = c.OIDCClient.ClientCredsToken([]string{"openid"}) + if err != nil { + err = fmt.Errorf("unable to verify auth code with issuer: %v", err) + return + } + + return +} + +type AuthenticatedTransport struct { + TokenRefresher + http.RoundTripper + + mu sync.Mutex + jwt jose.JWT +} + +func (t *AuthenticatedTransport) verifiedJWT() (jose.JWT, error) { + t.mu.Lock() + defer t.mu.Unlock() + + if t.TokenRefresher.Verify(t.jwt) == nil { + return t.jwt, nil + } + + jwt, err := t.TokenRefresher.Refresh() + if err != nil { + return jose.JWT{}, fmt.Errorf("unable to acquire valid JWT: %v", err) + } + + t.jwt = jwt + return t.jwt, nil +} + +// SetJWT sets the JWT held by the Transport. +// This is useful for cases in which you want to set an initial JWT. +func (t *AuthenticatedTransport) SetJWT(jwt jose.JWT) { + t.mu.Lock() + defer t.mu.Unlock() + + t.jwt = jwt +} + +func (t *AuthenticatedTransport) RoundTrip(r *http.Request) (*http.Response, error) { + jwt, err := t.verifiedJWT() + if err != nil { + return nil, err + } + + req := phttp.CopyRequest(r) + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", jwt.Encode())) + return t.RoundTripper.RoundTrip(req) +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/util.go b/vendor/github.com/coreos/go-oidc/oidc/util.go new file mode 100644 index 0000000000..f2a5a195e4 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/util.go @@ -0,0 +1,109 @@ +package oidc + +import ( + "crypto/rand" + "encoding/base64" + "errors" + "fmt" + "net" + "net/http" + "net/url" + "strings" + "time" + + "github.com/coreos/go-oidc/jose" +) + +// RequestTokenExtractor funcs extract a raw encoded token from a request. +type RequestTokenExtractor func(r *http.Request) (string, error) + +// ExtractBearerToken is a RequestTokenExtractor which extracts a bearer token from a request's +// Authorization header. +func ExtractBearerToken(r *http.Request) (string, error) { + ah := r.Header.Get("Authorization") + if ah == "" { + return "", errors.New("missing Authorization header") + } + + if len(ah) <= 6 || strings.ToUpper(ah[0:6]) != "BEARER" { + return "", errors.New("should be a bearer token") + } + + val := ah[7:] + if len(val) == 0 { + return "", errors.New("bearer token is empty") + } + + return val, nil +} + +// CookieTokenExtractor returns a RequestTokenExtractor which extracts a token from the named cookie in a request. +func CookieTokenExtractor(cookieName string) RequestTokenExtractor { + return func(r *http.Request) (string, error) { + ck, err := r.Cookie(cookieName) + if err != nil { + return "", fmt.Errorf("token cookie not found in request: %v", err) + } + + if ck.Value == "" { + return "", errors.New("token cookie found but is empty") + } + + return ck.Value, nil + } +} + +func NewClaims(iss, sub string, aud interface{}, iat, exp time.Time) jose.Claims { + return jose.Claims{ + // required + "iss": iss, + "sub": sub, + "aud": aud, + "iat": iat.Unix(), + "exp": exp.Unix(), + } +} + +func GenClientID(hostport string) (string, error) { + b, err := randBytes(32) + if err != nil { + return "", err + } + + var host string + if strings.Contains(hostport, ":") { + host, _, err = net.SplitHostPort(hostport) + if err != nil { + return "", err + } + } else { + host = hostport + } + + return fmt.Sprintf("%s@%s", base64.URLEncoding.EncodeToString(b), host), nil +} + +func randBytes(n int) ([]byte, error) { + b := make([]byte, n) + got, err := rand.Read(b) + if err != nil { + return nil, err + } else if n != got { + return nil, errors.New("unable to generate enough random data") + } + return b, nil +} + +// urlEqual checks two urls for equality using only the host and path portions. +func urlEqual(url1, url2 string) bool { + u1, err := url.Parse(url1) + if err != nil { + return false + } + u2, err := url.Parse(url2) + if err != nil { + return false + } + + return strings.ToLower(u1.Host+u1.Path) == strings.ToLower(u2.Host+u2.Path) +} diff --git a/vendor/github.com/coreos/go-oidc/oidc/verification.go b/vendor/github.com/coreos/go-oidc/oidc/verification.go new file mode 100644 index 0000000000..d9c6afa697 --- /dev/null +++ b/vendor/github.com/coreos/go-oidc/oidc/verification.go @@ -0,0 +1,190 @@ +package oidc + +import ( + "errors" + "fmt" + "time" + + "github.com/jonboulle/clockwork" + + "github.com/coreos/go-oidc/jose" + "github.com/coreos/go-oidc/key" +) + +func VerifySignature(jwt jose.JWT, keys []key.PublicKey) (bool, error) { + jwtBytes := []byte(jwt.Data()) + for _, k := range keys { + v, err := k.Verifier() + if err != nil { + return false, err + } + if v.Verify(jwt.Signature, jwtBytes) == nil { + return true, nil + } + } + return false, nil +} + +// containsString returns true if the given string(needle) is found +// in the string array(haystack). +func containsString(needle string, haystack []string) bool { + for _, v := range haystack { + if v == needle { + return true + } + } + return false +} + +// Verify claims in accordance with OIDC spec +// http://openid.net/specs/openid-connect-basic-1_0.html#IDTokenValidation +func VerifyClaims(jwt jose.JWT, issuer, clientID string) error { + now := time.Now().UTC() + + claims, err := jwt.Claims() + if err != nil { + return err + } + + ident, err := IdentityFromClaims(claims) + if err != nil { + return err + } + + if ident.ExpiresAt.Before(now) { + return errors.New("token is expired") + } + + // iss REQUIRED. Issuer Identifier for the Issuer of the response. + // The iss value is a case sensitive URL using the https scheme that contains scheme, + // host, and optionally, port number and path components and no query or fragment components. + if iss, exists := claims["iss"].(string); exists { + if !urlEqual(iss, issuer) { + return fmt.Errorf("invalid claim value: 'iss'. expected=%s, found=%s.", issuer, iss) + } + } else { + return errors.New("missing claim: 'iss'") + } + + // iat REQUIRED. Time at which the JWT was issued. + // Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z + // as measured in UTC until the date/time. + if _, exists := claims["iat"].(float64); !exists { + return errors.New("missing claim: 'iat'") + } + + // aud REQUIRED. Audience(s) that this ID Token is intended for. + // It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. + // It MAY also contain identifiers for other audiences. In the general case, the aud + // value is an array of case sensitive strings. In the common special case when there + // is one audience, the aud value MAY be a single case sensitive string. + if aud, ok, err := claims.StringClaim("aud"); err == nil && ok { + if aud != clientID { + return fmt.Errorf("invalid claims, 'aud' claim and 'client_id' do not match, aud=%s, client_id=%s", aud, clientID) + } + } else if aud, ok, err := claims.StringsClaim("aud"); err == nil && ok { + if !containsString(clientID, aud) { + return fmt.Errorf("invalid claims, cannot find 'client_id' in 'aud' claim, aud=%v, client_id=%s", aud, clientID) + } + } else { + return errors.New("invalid claim value: 'aud' is required, and should be either string or string array") + } + + return nil +} + +// VerifyClientClaims verifies all the required claims are valid for a "client credentials" JWT. +// Returns the client ID if valid, or an error if invalid. +func VerifyClientClaims(jwt jose.JWT, issuer string) (string, error) { + claims, err := jwt.Claims() + if err != nil { + return "", fmt.Errorf("failed to parse JWT claims: %v", err) + } + + iss, ok, err := claims.StringClaim("iss") + if err != nil { + return "", fmt.Errorf("failed to parse 'iss' claim: %v", err) + } else if !ok { + return "", errors.New("missing required 'iss' claim") + } else if !urlEqual(iss, issuer) { + return "", fmt.Errorf("'iss' claim does not match expected issuer, iss=%s", iss) + } + + sub, ok, err := claims.StringClaim("sub") + if err != nil { + return "", fmt.Errorf("failed to parse 'sub' claim: %v", err) + } else if !ok { + return "", errors.New("missing required 'sub' claim") + } + + if aud, ok, err := claims.StringClaim("aud"); err == nil && ok { + if aud != sub { + return "", fmt.Errorf("invalid claims, 'aud' claim and 'sub' claim do not match, aud=%s, sub=%s", aud, sub) + } + } else if aud, ok, err := claims.StringsClaim("aud"); err == nil && ok { + if !containsString(sub, aud) { + return "", fmt.Errorf("invalid claims, cannot find 'sud' in 'aud' claim, aud=%v, sub=%s", aud, sub) + } + } else { + return "", errors.New("invalid claim value: 'aud' is required, and should be either string or string array") + } + + now := time.Now().UTC() + exp, ok, err := claims.TimeClaim("exp") + if err != nil { + return "", fmt.Errorf("failed to parse 'exp' claim: %v", err) + } else if !ok { + return "", errors.New("missing required 'exp' claim") + } else if exp.Before(now) { + return "", fmt.Errorf("token already expired at: %v", exp) + } + + return sub, nil +} + +type JWTVerifier struct { + issuer string + clientID string + syncFunc func() error + keysFunc func() []key.PublicKey + clock clockwork.Clock +} + +func NewJWTVerifier(issuer, clientID string, syncFunc func() error, keysFunc func() []key.PublicKey) JWTVerifier { + return JWTVerifier{ + issuer: issuer, + clientID: clientID, + syncFunc: syncFunc, + keysFunc: keysFunc, + clock: clockwork.NewRealClock(), + } +} + +func (v *JWTVerifier) Verify(jwt jose.JWT) error { + // Verify claims before verifying the signature. This is an optimization to throw out + // tokens we know are invalid without undergoing an expensive signature check and + // possibly a re-sync event. + if err := VerifyClaims(jwt, v.issuer, v.clientID); err != nil { + return fmt.Errorf("oidc: JWT claims invalid: %v", err) + } + + ok, err := VerifySignature(jwt, v.keysFunc()) + if err != nil { + return fmt.Errorf("oidc: JWT signature verification failed: %v", err) + } else if ok { + return nil + } + + if err = v.syncFunc(); err != nil { + return fmt.Errorf("oidc: failed syncing KeySet: %v", err) + } + + ok, err = VerifySignature(jwt, v.keysFunc()) + if err != nil { + return fmt.Errorf("oidc: JWT signature verification failed: %v", err) + } else if !ok { + return errors.New("oidc: unable to verify JWT signature: no matching keys") + } + + return nil +} diff --git a/vendor/github.com/coreos/pkg/LICENSE b/vendor/github.com/coreos/pkg/LICENSE new file mode 100644 index 0000000000..e06d208186 --- /dev/null +++ b/vendor/github.com/coreos/pkg/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/vendor/github.com/coreos/pkg/NOTICE b/vendor/github.com/coreos/pkg/NOTICE new file mode 100644 index 0000000000..b39ddfa5cb --- /dev/null +++ b/vendor/github.com/coreos/pkg/NOTICE @@ -0,0 +1,5 @@ +CoreOS Project +Copyright 2014 CoreOS, Inc + +This product includes software developed at CoreOS, Inc. +(http://www.coreos.com/). diff --git a/vendor/github.com/coreos/pkg/health/health.go b/vendor/github.com/coreos/pkg/health/health.go new file mode 100644 index 0000000000..a1c3610fa5 --- /dev/null +++ b/vendor/github.com/coreos/pkg/health/health.go @@ -0,0 +1,127 @@ +package health + +import ( + "expvar" + "fmt" + "log" + "net/http" + + "github.com/coreos/pkg/httputil" +) + +// Checkables should return nil when the thing they are checking is healthy, and an error otherwise. +type Checkable interface { + Healthy() error +} + +// Checker provides a way to make an endpoint which can be probed for system health. +type Checker struct { + // Checks are the Checkables to be checked when probing. + Checks []Checkable + + // Unhealthyhandler is called when one or more of the checks are unhealthy. + // If not provided DefaultUnhealthyHandler is called. + UnhealthyHandler UnhealthyHandler + + // HealthyHandler is called when all checks are healthy. + // If not provided, DefaultHealthyHandler is called. + HealthyHandler http.HandlerFunc +} + +func (c Checker) ServeHTTP(w http.ResponseWriter, r *http.Request) { + unhealthyHandler := c.UnhealthyHandler + if unhealthyHandler == nil { + unhealthyHandler = DefaultUnhealthyHandler + } + + successHandler := c.HealthyHandler + if successHandler == nil { + successHandler = DefaultHealthyHandler + } + + if r.Method != "GET" { + w.Header().Set("Allow", "GET") + w.WriteHeader(http.StatusMethodNotAllowed) + return + } + + if err := Check(c.Checks); err != nil { + unhealthyHandler(w, r, err) + return + } + + successHandler(w, r) +} + +type UnhealthyHandler func(w http.ResponseWriter, r *http.Request, err error) + +type StatusResponse struct { + Status string `json:"status"` + Details *StatusResponseDetails `json:"details,omitempty"` +} + +type StatusResponseDetails struct { + Code int `json:"code,omitempty"` + Message string `json:"message,omitempty"` +} + +func Check(checks []Checkable) (err error) { + errs := []error{} + for _, c := range checks { + if e := c.Healthy(); e != nil { + errs = append(errs, e) + } + } + + switch len(errs) { + case 0: + err = nil + case 1: + err = errs[0] + default: + err = fmt.Errorf("multiple health check failure: %v", errs) + } + + return +} + +func DefaultHealthyHandler(w http.ResponseWriter, r *http.Request) { + err := httputil.WriteJSONResponse(w, http.StatusOK, StatusResponse{ + Status: "ok", + }) + if err != nil { + // TODO(bobbyrullo): replace with logging from new logging pkg, + // once it lands. + log.Printf("Failed to write JSON response: %v", err) + } +} + +func DefaultUnhealthyHandler(w http.ResponseWriter, r *http.Request, err error) { + writeErr := httputil.WriteJSONResponse(w, http.StatusInternalServerError, StatusResponse{ + Status: "error", + Details: &StatusResponseDetails{ + Code: http.StatusInternalServerError, + Message: err.Error(), + }, + }) + if writeErr != nil { + // TODO(bobbyrullo): replace with logging from new logging pkg, + // once it lands. + log.Printf("Failed to write JSON response: %v", err) + } +} + +// ExpvarHandler is copied from https://golang.org/src/expvar/expvar.go, where it's sadly unexported. +func ExpvarHandler(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=utf-8") + fmt.Fprintf(w, "{\n") + first := true + expvar.Do(func(kv expvar.KeyValue) { + if !first { + fmt.Fprintf(w, ",\n") + } + first = false + fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value) + }) + fmt.Fprintf(w, "\n}\n") +} diff --git a/vendor/github.com/coreos/pkg/httputil/cookie.go b/vendor/github.com/coreos/pkg/httputil/cookie.go new file mode 100644 index 0000000000..c37a37bb27 --- /dev/null +++ b/vendor/github.com/coreos/pkg/httputil/cookie.go @@ -0,0 +1,21 @@ +package httputil + +import ( + "net/http" + "time" +) + +// DeleteCookies effectively deletes all named cookies +// by wiping all data and setting to expire immediately. +func DeleteCookies(w http.ResponseWriter, cookieNames ...string) { + for _, n := range cookieNames { + c := &http.Cookie{ + Name: n, + Value: "", + Path: "/", + MaxAge: -1, + Expires: time.Time{}, + } + http.SetCookie(w, c) + } +} diff --git a/vendor/github.com/coreos/pkg/httputil/json.go b/vendor/github.com/coreos/pkg/httputil/json.go new file mode 100644 index 0000000000..0b09235033 --- /dev/null +++ b/vendor/github.com/coreos/pkg/httputil/json.go @@ -0,0 +1,27 @@ +package httputil + +import ( + "encoding/json" + "net/http" +) + +const ( + JSONContentType = "application/json" +) + +func WriteJSONResponse(w http.ResponseWriter, code int, resp interface{}) error { + enc, err := json.Marshal(resp) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return err + } + + w.Header().Set("Content-Type", JSONContentType) + w.WriteHeader(code) + + _, err = w.Write(enc) + if err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/coreos/pkg/timeutil/backoff.go b/vendor/github.com/coreos/pkg/timeutil/backoff.go new file mode 100644 index 0000000000..b34fb49661 --- /dev/null +++ b/vendor/github.com/coreos/pkg/timeutil/backoff.go @@ -0,0 +1,15 @@ +package timeutil + +import ( + "time" +) + +func ExpBackoff(prev, max time.Duration) time.Duration { + if prev == 0 { + return time.Second + } + if prev > max/2 { + return max + } + return 2 * prev +} diff --git a/vendor/github.com/davecgh/go-spew/LICENSE b/vendor/github.com/davecgh/go-spew/LICENSE new file mode 100644 index 0000000000..2a7cfd2bf6 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2012-2013 Dave Collins + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/vendor/github.com/davecgh/go-spew/spew/bypass.go b/vendor/github.com/davecgh/go-spew/spew/bypass.go new file mode 100644 index 0000000000..565bf5899f --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/bypass.go @@ -0,0 +1,151 @@ +// Copyright (c) 2015 Dave Collins +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +// NOTE: Due to the following build constraints, this file will only be compiled +// when the code is not running on Google App Engine and "-tags disableunsafe" +// is not added to the go build command line. +// +build !appengine,!disableunsafe + +package spew + +import ( + "reflect" + "unsafe" +) + +const ( + // UnsafeDisabled is a build-time constant which specifies whether or + // not access to the unsafe package is available. + UnsafeDisabled = false + + // ptrSize is the size of a pointer on the current arch. + ptrSize = unsafe.Sizeof((*byte)(nil)) +) + +var ( + // offsetPtr, offsetScalar, and offsetFlag are the offsets for the + // internal reflect.Value fields. These values are valid before golang + // commit ecccf07e7f9d which changed the format. The are also valid + // after commit 82f48826c6c7 which changed the format again to mirror + // the original format. Code in the init function updates these offsets + // as necessary. + offsetPtr = uintptr(ptrSize) + offsetScalar = uintptr(0) + offsetFlag = uintptr(ptrSize * 2) + + // flagKindWidth and flagKindShift indicate various bits that the + // reflect package uses internally to track kind information. + // + // flagRO indicates whether or not the value field of a reflect.Value is + // read-only. + // + // flagIndir indicates whether the value field of a reflect.Value is + // the actual data or a pointer to the data. + // + // These values are valid before golang commit 90a7c3c86944 which + // changed their positions. Code in the init function updates these + // flags as necessary. + flagKindWidth = uintptr(5) + flagKindShift = uintptr(flagKindWidth - 1) + flagRO = uintptr(1 << 0) + flagIndir = uintptr(1 << 1) +) + +func init() { + // Older versions of reflect.Value stored small integers directly in the + // ptr field (which is named val in the older versions). Versions + // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named + // scalar for this purpose which unfortunately came before the flag + // field, so the offset of the flag field is different for those + // versions. + // + // This code constructs a new reflect.Value from a known small integer + // and checks if the size of the reflect.Value struct indicates it has + // the scalar field. When it does, the offsets are updated accordingly. + vv := reflect.ValueOf(0xf00) + if unsafe.Sizeof(vv) == (ptrSize * 4) { + offsetScalar = ptrSize * 2 + offsetFlag = ptrSize * 3 + } + + // Commit 90a7c3c86944 changed the flag positions such that the low + // order bits are the kind. This code extracts the kind from the flags + // field and ensures it's the correct type. When it's not, the flag + // order has been changed to the newer format, so the flags are updated + // accordingly. + upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag) + upfv := *(*uintptr)(upf) + flagKindMask := uintptr((1<>flagKindShift != uintptr(reflect.Int) { + flagKindShift = 0 + flagRO = 1 << 5 + flagIndir = 1 << 6 + + // Commit adf9b30e5594 modified the flags to separate the + // flagRO flag into two bits which specifies whether or not the + // field is embedded. This causes flagIndir to move over a bit + // and means that flagRO is the combination of either of the + // original flagRO bit and the new bit. + // + // This code detects the change by extracting what used to be + // the indirect bit to ensure it's set. When it's not, the flag + // order has been changed to the newer format, so the flags are + // updated accordingly. + if upfv&flagIndir == 0 { + flagRO = 3 << 5 + flagIndir = 1 << 7 + } + } +} + +// unsafeReflectValue converts the passed reflect.Value into a one that bypasses +// the typical safety restrictions preventing access to unaddressable and +// unexported data. It works by digging the raw pointer to the underlying +// value out of the protected value and generating a new unprotected (unsafe) +// reflect.Value to it. +// +// This allows us to check for implementations of the Stringer and error +// interfaces to be used for pretty printing ordinarily unaddressable and +// inaccessible values such as unexported struct fields. +func unsafeReflectValue(v reflect.Value) (rv reflect.Value) { + indirects := 1 + vt := v.Type() + upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr) + rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag)) + if rvf&flagIndir != 0 { + vt = reflect.PtrTo(v.Type()) + indirects++ + } else if offsetScalar != 0 { + // The value is in the scalar field when it's not one of the + // reference types. + switch vt.Kind() { + case reflect.Uintptr: + case reflect.Chan: + case reflect.Func: + case reflect.Map: + case reflect.Ptr: + case reflect.UnsafePointer: + default: + upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + + offsetScalar) + } + } + + pv := reflect.NewAt(vt, upv) + rv = pv + for i := 0; i < indirects; i++ { + rv = rv.Elem() + } + return rv +} diff --git a/vendor/github.com/davecgh/go-spew/spew/common.go b/vendor/github.com/davecgh/go-spew/spew/common.go new file mode 100644 index 0000000000..14f02dc15b --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/common.go @@ -0,0 +1,341 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "io" + "reflect" + "sort" + "strconv" +) + +// Some constants in the form of bytes to avoid string overhead. This mirrors +// the technique used in the fmt package. +var ( + panicBytes = []byte("(PANIC=") + plusBytes = []byte("+") + iBytes = []byte("i") + trueBytes = []byte("true") + falseBytes = []byte("false") + interfaceBytes = []byte("(interface {})") + commaNewlineBytes = []byte(",\n") + newlineBytes = []byte("\n") + openBraceBytes = []byte("{") + openBraceNewlineBytes = []byte("{\n") + closeBraceBytes = []byte("}") + asteriskBytes = []byte("*") + colonBytes = []byte(":") + colonSpaceBytes = []byte(": ") + openParenBytes = []byte("(") + closeParenBytes = []byte(")") + spaceBytes = []byte(" ") + pointerChainBytes = []byte("->") + nilAngleBytes = []byte("") + maxNewlineBytes = []byte("\n") + maxShortBytes = []byte("") + circularBytes = []byte("") + circularShortBytes = []byte("") + invalidAngleBytes = []byte("") + openBracketBytes = []byte("[") + closeBracketBytes = []byte("]") + percentBytes = []byte("%") + precisionBytes = []byte(".") + openAngleBytes = []byte("<") + closeAngleBytes = []byte(">") + openMapBytes = []byte("map[") + closeMapBytes = []byte("]") + lenEqualsBytes = []byte("len=") + capEqualsBytes = []byte("cap=") +) + +// hexDigits is used to map a decimal value to a hex digit. +var hexDigits = "0123456789abcdef" + +// catchPanic handles any panics that might occur during the handleMethods +// calls. +func catchPanic(w io.Writer, v reflect.Value) { + if err := recover(); err != nil { + w.Write(panicBytes) + fmt.Fprintf(w, "%v", err) + w.Write(closeParenBytes) + } +} + +// handleMethods attempts to call the Error and String methods on the underlying +// type the passed reflect.Value represents and outputes the result to Writer w. +// +// It handles panics in any called methods by catching and displaying the error +// as the formatted value. +func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool) { + // We need an interface to check if the type implements the error or + // Stringer interface. However, the reflect package won't give us an + // interface on certain things like unexported struct fields in order + // to enforce visibility rules. We use unsafe, when it's available, + // to bypass these restrictions since this package does not mutate the + // values. + if !v.CanInterface() { + if UnsafeDisabled { + return false + } + + v = unsafeReflectValue(v) + } + + // Choose whether or not to do error and Stringer interface lookups against + // the base type or a pointer to the base type depending on settings. + // Technically calling one of these methods with a pointer receiver can + // mutate the value, however, types which choose to satisify an error or + // Stringer interface with a pointer receiver should not be mutating their + // state inside these interface methods. + if !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() { + v = unsafeReflectValue(v) + } + if v.CanAddr() { + v = v.Addr() + } + + // Is it an error or Stringer? + switch iface := v.Interface().(type) { + case error: + defer catchPanic(w, v) + if cs.ContinueOnMethod { + w.Write(openParenBytes) + w.Write([]byte(iface.Error())) + w.Write(closeParenBytes) + w.Write(spaceBytes) + return false + } + + w.Write([]byte(iface.Error())) + return true + + case fmt.Stringer: + defer catchPanic(w, v) + if cs.ContinueOnMethod { + w.Write(openParenBytes) + w.Write([]byte(iface.String())) + w.Write(closeParenBytes) + w.Write(spaceBytes) + return false + } + w.Write([]byte(iface.String())) + return true + } + return false +} + +// printBool outputs a boolean value as true or false to Writer w. +func printBool(w io.Writer, val bool) { + if val { + w.Write(trueBytes) + } else { + w.Write(falseBytes) + } +} + +// printInt outputs a signed integer value to Writer w. +func printInt(w io.Writer, val int64, base int) { + w.Write([]byte(strconv.FormatInt(val, base))) +} + +// printUint outputs an unsigned integer value to Writer w. +func printUint(w io.Writer, val uint64, base int) { + w.Write([]byte(strconv.FormatUint(val, base))) +} + +// printFloat outputs a floating point value using the specified precision, +// which is expected to be 32 or 64bit, to Writer w. +func printFloat(w io.Writer, val float64, precision int) { + w.Write([]byte(strconv.FormatFloat(val, 'g', -1, precision))) +} + +// printComplex outputs a complex value using the specified float precision +// for the real and imaginary parts to Writer w. +func printComplex(w io.Writer, c complex128, floatPrecision int) { + r := real(c) + w.Write(openParenBytes) + w.Write([]byte(strconv.FormatFloat(r, 'g', -1, floatPrecision))) + i := imag(c) + if i >= 0 { + w.Write(plusBytes) + } + w.Write([]byte(strconv.FormatFloat(i, 'g', -1, floatPrecision))) + w.Write(iBytes) + w.Write(closeParenBytes) +} + +// printHexPtr outputs a uintptr formatted as hexidecimal with a leading '0x' +// prefix to Writer w. +func printHexPtr(w io.Writer, p uintptr) { + // Null pointer. + num := uint64(p) + if num == 0 { + w.Write(nilAngleBytes) + return + } + + // Max uint64 is 16 bytes in hex + 2 bytes for '0x' prefix + buf := make([]byte, 18) + + // It's simpler to construct the hex string right to left. + base := uint64(16) + i := len(buf) - 1 + for num >= base { + buf[i] = hexDigits[num%base] + num /= base + i-- + } + buf[i] = hexDigits[num] + + // Add '0x' prefix. + i-- + buf[i] = 'x' + i-- + buf[i] = '0' + + // Strip unused leading bytes. + buf = buf[i:] + w.Write(buf) +} + +// valuesSorter implements sort.Interface to allow a slice of reflect.Value +// elements to be sorted. +type valuesSorter struct { + values []reflect.Value + strings []string // either nil or same len and values + cs *ConfigState +} + +// newValuesSorter initializes a valuesSorter instance, which holds a set of +// surrogate keys on which the data should be sorted. It uses flags in +// ConfigState to decide if and how to populate those surrogate keys. +func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Interface { + vs := &valuesSorter{values: values, cs: cs} + if canSortSimply(vs.values[0].Kind()) { + return vs + } + if !cs.DisableMethods { + vs.strings = make([]string, len(values)) + for i := range vs.values { + b := bytes.Buffer{} + if !handleMethods(cs, &b, vs.values[i]) { + vs.strings = nil + break + } + vs.strings[i] = b.String() + } + } + if vs.strings == nil && cs.SpewKeys { + vs.strings = make([]string, len(values)) + for i := range vs.values { + vs.strings[i] = Sprintf("%#v", vs.values[i].Interface()) + } + } + return vs +} + +// canSortSimply tests whether a reflect.Kind is a primitive that can be sorted +// directly, or whether it should be considered for sorting by surrogate keys +// (if the ConfigState allows it). +func canSortSimply(kind reflect.Kind) bool { + // This switch parallels valueSortLess, except for the default case. + switch kind { + case reflect.Bool: + return true + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return true + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + return true + case reflect.Float32, reflect.Float64: + return true + case reflect.String: + return true + case reflect.Uintptr: + return true + case reflect.Array: + return true + } + return false +} + +// Len returns the number of values in the slice. It is part of the +// sort.Interface implementation. +func (s *valuesSorter) Len() int { + return len(s.values) +} + +// Swap swaps the values at the passed indices. It is part of the +// sort.Interface implementation. +func (s *valuesSorter) Swap(i, j int) { + s.values[i], s.values[j] = s.values[j], s.values[i] + if s.strings != nil { + s.strings[i], s.strings[j] = s.strings[j], s.strings[i] + } +} + +// valueSortLess returns whether the first value should sort before the second +// value. It is used by valueSorter.Less as part of the sort.Interface +// implementation. +func valueSortLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Bool: + return !a.Bool() && b.Bool() + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return a.Int() < b.Int() + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + return a.Uint() < b.Uint() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.String: + return a.String() < b.String() + case reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Array: + // Compare the contents of both arrays. + l := a.Len() + for i := 0; i < l; i++ { + av := a.Index(i) + bv := b.Index(i) + if av.Interface() == bv.Interface() { + continue + } + return valueSortLess(av, bv) + } + } + return a.String() < b.String() +} + +// Less returns whether the value at index i should sort before the +// value at index j. It is part of the sort.Interface implementation. +func (s *valuesSorter) Less(i, j int) bool { + if s.strings == nil { + return valueSortLess(s.values[i], s.values[j]) + } + return s.strings[i] < s.strings[j] +} + +// sortValues is a sort function that handles both native types and any type that +// can be converted to error or Stringer. Other inputs are sorted according to +// their Value.String() value to ensure display stability. +func sortValues(values []reflect.Value, cs *ConfigState) { + if len(values) == 0 { + return + } + sort.Sort(newValuesSorter(values, cs)) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/config.go b/vendor/github.com/davecgh/go-spew/spew/config.go new file mode 100644 index 0000000000..ee1ab07b3f --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/config.go @@ -0,0 +1,297 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "io" + "os" +) + +// ConfigState houses the configuration options used by spew to format and +// display values. There is a global instance, Config, that is used to control +// all top-level Formatter and Dump functionality. Each ConfigState instance +// provides methods equivalent to the top-level functions. +// +// The zero value for ConfigState provides no indentation. You would typically +// want to set it to a space or a tab. +// +// Alternatively, you can use NewDefaultConfig to get a ConfigState instance +// with default settings. See the documentation of NewDefaultConfig for default +// values. +type ConfigState struct { + // Indent specifies the string to use for each indentation level. The + // global config instance that all top-level functions use set this to a + // single space by default. If you would like more indentation, you might + // set this to a tab with "\t" or perhaps two spaces with " ". + Indent string + + // MaxDepth controls the maximum number of levels to descend into nested + // data structures. The default, 0, means there is no limit. + // + // NOTE: Circular data structures are properly detected, so it is not + // necessary to set this value unless you specifically want to limit deeply + // nested data structures. + MaxDepth int + + // DisableMethods specifies whether or not error and Stringer interfaces are + // invoked for types that implement them. + DisableMethods bool + + // DisablePointerMethods specifies whether or not to check for and invoke + // error and Stringer interfaces on types which only accept a pointer + // receiver when the current type is not a pointer. + // + // NOTE: This might be an unsafe action since calling one of these methods + // with a pointer receiver could technically mutate the value, however, + // in practice, types which choose to satisify an error or Stringer + // interface with a pointer receiver should not be mutating their state + // inside these interface methods. As a result, this option relies on + // access to the unsafe package, so it will not have any effect when + // running in environments without access to the unsafe package such as + // Google App Engine or with the "disableunsafe" build tag specified. + DisablePointerMethods bool + + // ContinueOnMethod specifies whether or not recursion should continue once + // a custom error or Stringer interface is invoked. The default, false, + // means it will print the results of invoking the custom error or Stringer + // interface and return immediately instead of continuing to recurse into + // the internals of the data type. + // + // NOTE: This flag does not have any effect if method invocation is disabled + // via the DisableMethods or DisablePointerMethods options. + ContinueOnMethod bool + + // SortKeys specifies map keys should be sorted before being printed. Use + // this to have a more deterministic, diffable output. Note that only + // native types (bool, int, uint, floats, uintptr and string) and types + // that support the error or Stringer interfaces (if methods are + // enabled) are supported, with other types sorted according to the + // reflect.Value.String() output which guarantees display stability. + SortKeys bool + + // SpewKeys specifies that, as a last resort attempt, map keys should + // be spewed to strings and sorted by those strings. This is only + // considered if SortKeys is true. + SpewKeys bool +} + +// Config is the active configuration of the top-level functions. +// The configuration can be changed by modifying the contents of spew.Config. +var Config = ConfigState{Indent: " "} + +// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the formatted string as a value that satisfies error. See NewFormatter +// for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Errorf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Errorf(format string, a ...interface{}) (err error) { + return fmt.Errorf(format, c.convertArgs(a)...) +} + +// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprint(w, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprint(w, c.convertArgs(a)...) +} + +// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintf(w, format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { + return fmt.Fprintf(w, format, c.convertArgs(a)...) +} + +// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it +// passed with a Formatter interface returned by c.NewFormatter. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintln(w, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprintln(w, c.convertArgs(a)...) +} + +// Print is a wrapper for fmt.Print that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Print(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Print(a ...interface{}) (n int, err error) { + return fmt.Print(c.convertArgs(a)...) +} + +// Printf is a wrapper for fmt.Printf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Printf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Printf(format string, a ...interface{}) (n int, err error) { + return fmt.Printf(format, c.convertArgs(a)...) +} + +// Println is a wrapper for fmt.Println that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Println(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Println(a ...interface{}) (n int, err error) { + return fmt.Println(c.convertArgs(a)...) +} + +// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprint(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprint(a ...interface{}) string { + return fmt.Sprint(c.convertArgs(a)...) +} + +// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were +// passed with a Formatter interface returned by c.NewFormatter. It returns +// the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintf(format, c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprintf(format string, a ...interface{}) string { + return fmt.Sprintf(format, c.convertArgs(a)...) +} + +// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it +// were passed with a Formatter interface returned by c.NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintln(c.NewFormatter(a), c.NewFormatter(b)) +func (c *ConfigState) Sprintln(a ...interface{}) string { + return fmt.Sprintln(c.convertArgs(a)...) +} + +/* +NewFormatter returns a custom formatter that satisfies the fmt.Formatter +interface. As a result, it integrates cleanly with standard fmt package +printing functions. The formatter is useful for inline printing of smaller data +types similar to the standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), and %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Typically this function shouldn't be called directly. It is much easier to make +use of the custom formatter by calling one of the convenience functions such as +c.Printf, c.Println, or c.Printf. +*/ +func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter { + return newFormatter(c, v) +} + +// Fdump formats and displays the passed arguments to io.Writer w. It formats +// exactly the same as Dump. +func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) { + fdump(c, w, a...) +} + +/* +Dump displays the passed parameters to standard out with newlines, customizable +indentation, and additional debug information such as complete types and all +pointer addresses used to indirect to the final value. It provides the +following features over the built-in printing facilities provided by the fmt +package: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output + +The configuration options are controlled by modifying the public members +of c. See ConfigState for options documentation. + +See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to +get the formatted result as a string. +*/ +func (c *ConfigState) Dump(a ...interface{}) { + fdump(c, os.Stdout, a...) +} + +// Sdump returns a string with the passed arguments formatted exactly the same +// as Dump. +func (c *ConfigState) Sdump(a ...interface{}) string { + var buf bytes.Buffer + fdump(c, &buf, a...) + return buf.String() +} + +// convertArgs accepts a slice of arguments and returns a slice of the same +// length with each argument converted to a spew Formatter interface using +// the ConfigState associated with s. +func (c *ConfigState) convertArgs(args []interface{}) (formatters []interface{}) { + formatters = make([]interface{}, len(args)) + for index, arg := range args { + formatters[index] = newFormatter(c, arg) + } + return formatters +} + +// NewDefaultConfig returns a ConfigState with the following default settings. +// +// Indent: " " +// MaxDepth: 0 +// DisableMethods: false +// DisablePointerMethods: false +// ContinueOnMethod: false +// SortKeys: false +func NewDefaultConfig() *ConfigState { + return &ConfigState{Indent: " "} +} diff --git a/vendor/github.com/davecgh/go-spew/spew/doc.go b/vendor/github.com/davecgh/go-spew/spew/doc.go new file mode 100644 index 0000000000..5be0c40609 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/doc.go @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* +Package spew implements a deep pretty printer for Go data structures to aid in +debugging. + +A quick overview of the additional features spew provides over the built-in +printing facilities for Go data types are as follows: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output (only when using + Dump style) + +There are two different approaches spew allows for dumping Go data structures: + + * Dump style which prints with newlines, customizable indentation, + and additional debug information such as types and all pointer addresses + used to indirect to the final value + * A custom Formatter interface that integrates cleanly with the standard fmt + package and replaces %v, %+v, %#v, and %#+v to provide inline printing + similar to the default %v while providing the additional functionality + outlined above and passing unsupported format verbs such as %x and %q + along to fmt + +Quick Start + +This section demonstrates how to quickly get started with spew. See the +sections below for further details on formatting and configuration options. + +To dump a variable with full newlines, indentation, type, and pointer +information use Dump, Fdump, or Sdump: + spew.Dump(myVar1, myVar2, ...) + spew.Fdump(someWriter, myVar1, myVar2, ...) + str := spew.Sdump(myVar1, myVar2, ...) + +Alternatively, if you would prefer to use format strings with a compacted inline +printing style, use the convenience wrappers Printf, Fprintf, etc with +%v (most compact), %+v (adds pointer addresses), %#v (adds types), or +%#+v (adds types and pointer addresses): + spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + spew.Fprintf(someWriter, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Fprintf(someWriter, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + +Configuration Options + +Configuration of spew is handled by fields in the ConfigState type. For +convenience, all of the top-level functions use a global state available +via the spew.Config global. + +It is also possible to create a ConfigState instance that provides methods +equivalent to the top-level functions. This allows concurrent configuration +options. See the ConfigState documentation for more details. + +The following configuration options are available: + * Indent + String to use for each indentation level for Dump functions. + It is a single space by default. A popular alternative is "\t". + + * MaxDepth + Maximum number of levels to descend into nested data structures. + There is no limit by default. + + * DisableMethods + Disables invocation of error and Stringer interface methods. + Method invocation is enabled by default. + + * DisablePointerMethods + Disables invocation of error and Stringer interface methods on types + which only accept pointer receivers from non-pointer variables. + Pointer method invocation is enabled by default. + + * ContinueOnMethod + Enables recursion into types after invoking error and Stringer interface + methods. Recursion after method invocation is disabled by default. + + * SortKeys + Specifies map keys should be sorted before being printed. Use + this to have a more deterministic, diffable output. Note that + only native types (bool, int, uint, floats, uintptr and string) + and types which implement error or Stringer interfaces are + supported with other types sorted according to the + reflect.Value.String() output which guarantees display + stability. Natural map order is used by default. + + * SpewKeys + Specifies that, as a last resort attempt, map keys should be + spewed to strings and sorted by those strings. This is only + considered if SortKeys is true. + +Dump Usage + +Simply call spew.Dump with a list of variables you want to dump: + + spew.Dump(myVar1, myVar2, ...) + +You may also call spew.Fdump if you would prefer to output to an arbitrary +io.Writer. For example, to dump to standard error: + + spew.Fdump(os.Stderr, myVar1, myVar2, ...) + +A third option is to call spew.Sdump to get the formatted output as a string: + + str := spew.Sdump(myVar1, myVar2, ...) + +Sample Dump Output + +See the Dump example for details on the setup of the types and variables being +shown here. + + (main.Foo) { + unexportedField: (*main.Bar)(0xf84002e210)({ + flag: (main.Flag) flagTwo, + data: (uintptr) + }), + ExportedField: (map[interface {}]interface {}) (len=1) { + (string) (len=3) "one": (bool) true + } + } + +Byte (and uint8) arrays and slices are displayed uniquely like the hexdump -C +command as shown. + ([]uint8) (len=32 cap=32) { + 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... | + 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0| + 00000020 31 32 |12| + } + +Custom Formatter + +Spew provides a custom formatter that implements the fmt.Formatter interface +so that it integrates cleanly with standard fmt package printing functions. The +formatter is useful for inline printing of smaller data types similar to the +standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Custom Formatter Usage + +The simplest way to make use of the spew custom formatter is to call one of the +convenience functions such as spew.Printf, spew.Println, or spew.Printf. The +functions have syntax you are most likely already familiar with: + + spew.Printf("myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Printf("myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + spew.Println(myVar, myVar2) + spew.Fprintf(os.Stderr, "myVar1: %v -- myVar2: %+v", myVar1, myVar2) + spew.Fprintf(os.Stderr, "myVar3: %#v -- myVar4: %#+v", myVar3, myVar4) + +See the Index for the full list convenience functions. + +Sample Formatter Output + +Double pointer to a uint8: + %v: <**>5 + %+v: <**>(0xf8400420d0->0xf8400420c8)5 + %#v: (**uint8)5 + %#+v: (**uint8)(0xf8400420d0->0xf8400420c8)5 + +Pointer to circular struct with a uint8 field and a pointer to itself: + %v: <*>{1 <*>} + %+v: <*>(0xf84003e260){ui8:1 c:<*>(0xf84003e260)} + %#v: (*main.circular){ui8:(uint8)1 c:(*main.circular)} + %#+v: (*main.circular)(0xf84003e260){ui8:(uint8)1 c:(*main.circular)(0xf84003e260)} + +See the Printf example for details on the setup of variables being shown +here. + +Errors + +Since it is possible for custom Stringer/error interfaces to panic, spew +detects them and handles them internally by printing the panic information +inline with the output. Since spew is intended to provide deep pretty printing +capabilities on structures, it intentionally does not return any errors. +*/ +package spew diff --git a/vendor/github.com/davecgh/go-spew/spew/dump.go b/vendor/github.com/davecgh/go-spew/spew/dump.go new file mode 100644 index 0000000000..a0ff95e27e --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/dump.go @@ -0,0 +1,509 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "encoding/hex" + "fmt" + "io" + "os" + "reflect" + "regexp" + "strconv" + "strings" +) + +var ( + // uint8Type is a reflect.Type representing a uint8. It is used to + // convert cgo types to uint8 slices for hexdumping. + uint8Type = reflect.TypeOf(uint8(0)) + + // cCharRE is a regular expression that matches a cgo char. + // It is used to detect character arrays to hexdump them. + cCharRE = regexp.MustCompile("^.*\\._Ctype_char$") + + // cUnsignedCharRE is a regular expression that matches a cgo unsigned + // char. It is used to detect unsigned character arrays to hexdump + // them. + cUnsignedCharRE = regexp.MustCompile("^.*\\._Ctype_unsignedchar$") + + // cUint8tCharRE is a regular expression that matches a cgo uint8_t. + // It is used to detect uint8_t arrays to hexdump them. + cUint8tCharRE = regexp.MustCompile("^.*\\._Ctype_uint8_t$") +) + +// dumpState contains information about the state of a dump operation. +type dumpState struct { + w io.Writer + depth int + pointers map[uintptr]int + ignoreNextType bool + ignoreNextIndent bool + cs *ConfigState +} + +// indent performs indentation according to the depth level and cs.Indent +// option. +func (d *dumpState) indent() { + if d.ignoreNextIndent { + d.ignoreNextIndent = false + return + } + d.w.Write(bytes.Repeat([]byte(d.cs.Indent), d.depth)) +} + +// unpackValue returns values inside of non-nil interfaces when possible. +// This is useful for data types like structs, arrays, slices, and maps which +// can contain varying types packed inside an interface. +func (d *dumpState) unpackValue(v reflect.Value) reflect.Value { + if v.Kind() == reflect.Interface && !v.IsNil() { + v = v.Elem() + } + return v +} + +// dumpPtr handles formatting of pointers by indirecting them as necessary. +func (d *dumpState) dumpPtr(v reflect.Value) { + // Remove pointers at or below the current depth from map used to detect + // circular refs. + for k, depth := range d.pointers { + if depth >= d.depth { + delete(d.pointers, k) + } + } + + // Keep list of all dereferenced pointers to show later. + pointerChain := make([]uintptr, 0) + + // Figure out how many levels of indirection there are by dereferencing + // pointers and unpacking interfaces down the chain while detecting circular + // references. + nilFound := false + cycleFound := false + indirects := 0 + ve := v + for ve.Kind() == reflect.Ptr { + if ve.IsNil() { + nilFound = true + break + } + indirects++ + addr := ve.Pointer() + pointerChain = append(pointerChain, addr) + if pd, ok := d.pointers[addr]; ok && pd < d.depth { + cycleFound = true + indirects-- + break + } + d.pointers[addr] = d.depth + + ve = ve.Elem() + if ve.Kind() == reflect.Interface { + if ve.IsNil() { + nilFound = true + break + } + ve = ve.Elem() + } + } + + // Display type information. + d.w.Write(openParenBytes) + d.w.Write(bytes.Repeat(asteriskBytes, indirects)) + d.w.Write([]byte(ve.Type().String())) + d.w.Write(closeParenBytes) + + // Display pointer information. + if len(pointerChain) > 0 { + d.w.Write(openParenBytes) + for i, addr := range pointerChain { + if i > 0 { + d.w.Write(pointerChainBytes) + } + printHexPtr(d.w, addr) + } + d.w.Write(closeParenBytes) + } + + // Display dereferenced value. + d.w.Write(openParenBytes) + switch { + case nilFound == true: + d.w.Write(nilAngleBytes) + + case cycleFound == true: + d.w.Write(circularBytes) + + default: + d.ignoreNextType = true + d.dump(ve) + } + d.w.Write(closeParenBytes) +} + +// dumpSlice handles formatting of arrays and slices. Byte (uint8 under +// reflection) arrays and slices are dumped in hexdump -C fashion. +func (d *dumpState) dumpSlice(v reflect.Value) { + // Determine whether this type should be hex dumped or not. Also, + // for types which should be hexdumped, try to use the underlying data + // first, then fall back to trying to convert them to a uint8 slice. + var buf []uint8 + doConvert := false + doHexDump := false + numEntries := v.Len() + if numEntries > 0 { + vt := v.Index(0).Type() + vts := vt.String() + switch { + // C types that need to be converted. + case cCharRE.MatchString(vts): + fallthrough + case cUnsignedCharRE.MatchString(vts): + fallthrough + case cUint8tCharRE.MatchString(vts): + doConvert = true + + // Try to use existing uint8 slices and fall back to converting + // and copying if that fails. + case vt.Kind() == reflect.Uint8: + // We need an addressable interface to convert the type + // to a byte slice. However, the reflect package won't + // give us an interface on certain things like + // unexported struct fields in order to enforce + // visibility rules. We use unsafe, when available, to + // bypass these restrictions since this package does not + // mutate the values. + vs := v + if !vs.CanInterface() || !vs.CanAddr() { + vs = unsafeReflectValue(vs) + } + if !UnsafeDisabled { + vs = vs.Slice(0, numEntries) + + // Use the existing uint8 slice if it can be + // type asserted. + iface := vs.Interface() + if slice, ok := iface.([]uint8); ok { + buf = slice + doHexDump = true + break + } + } + + // The underlying data needs to be converted if it can't + // be type asserted to a uint8 slice. + doConvert = true + } + + // Copy and convert the underlying type if needed. + if doConvert && vt.ConvertibleTo(uint8Type) { + // Convert and copy each element into a uint8 byte + // slice. + buf = make([]uint8, numEntries) + for i := 0; i < numEntries; i++ { + vv := v.Index(i) + buf[i] = uint8(vv.Convert(uint8Type).Uint()) + } + doHexDump = true + } + } + + // Hexdump the entire slice as needed. + if doHexDump { + indent := strings.Repeat(d.cs.Indent, d.depth) + str := indent + hex.Dump(buf) + str = strings.Replace(str, "\n", "\n"+indent, -1) + str = strings.TrimRight(str, d.cs.Indent) + d.w.Write([]byte(str)) + return + } + + // Recursively call dump for each item. + for i := 0; i < numEntries; i++ { + d.dump(d.unpackValue(v.Index(i))) + if i < (numEntries - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } +} + +// dump is the main workhorse for dumping a value. It uses the passed reflect +// value to figure out what kind of object we are dealing with and formats it +// appropriately. It is a recursive function, however circular data structures +// are detected and handled properly. +func (d *dumpState) dump(v reflect.Value) { + // Handle invalid reflect values immediately. + kind := v.Kind() + if kind == reflect.Invalid { + d.w.Write(invalidAngleBytes) + return + } + + // Handle pointers specially. + if kind == reflect.Ptr { + d.indent() + d.dumpPtr(v) + return + } + + // Print type information unless already handled elsewhere. + if !d.ignoreNextType { + d.indent() + d.w.Write(openParenBytes) + d.w.Write([]byte(v.Type().String())) + d.w.Write(closeParenBytes) + d.w.Write(spaceBytes) + } + d.ignoreNextType = false + + // Display length and capacity if the built-in len and cap functions + // work with the value's kind and the len/cap itself is non-zero. + valueLen, valueCap := 0, 0 + switch v.Kind() { + case reflect.Array, reflect.Slice, reflect.Chan: + valueLen, valueCap = v.Len(), v.Cap() + case reflect.Map, reflect.String: + valueLen = v.Len() + } + if valueLen != 0 || valueCap != 0 { + d.w.Write(openParenBytes) + if valueLen != 0 { + d.w.Write(lenEqualsBytes) + printInt(d.w, int64(valueLen), 10) + } + if valueCap != 0 { + if valueLen != 0 { + d.w.Write(spaceBytes) + } + d.w.Write(capEqualsBytes) + printInt(d.w, int64(valueCap), 10) + } + d.w.Write(closeParenBytes) + d.w.Write(spaceBytes) + } + + // Call Stringer/error interfaces if they exist and the handle methods flag + // is enabled + if !d.cs.DisableMethods { + if (kind != reflect.Invalid) && (kind != reflect.Interface) { + if handled := handleMethods(d.cs, d.w, v); handled { + return + } + } + } + + switch kind { + case reflect.Invalid: + // Do nothing. We should never get here since invalid has already + // been handled above. + + case reflect.Bool: + printBool(d.w, v.Bool()) + + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + printInt(d.w, v.Int(), 10) + + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + printUint(d.w, v.Uint(), 10) + + case reflect.Float32: + printFloat(d.w, v.Float(), 32) + + case reflect.Float64: + printFloat(d.w, v.Float(), 64) + + case reflect.Complex64: + printComplex(d.w, v.Complex(), 32) + + case reflect.Complex128: + printComplex(d.w, v.Complex(), 64) + + case reflect.Slice: + if v.IsNil() { + d.w.Write(nilAngleBytes) + break + } + fallthrough + + case reflect.Array: + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + d.dumpSlice(v) + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.String: + d.w.Write([]byte(strconv.Quote(v.String()))) + + case reflect.Interface: + // The only time we should get here is for nil interfaces due to + // unpackValue calls. + if v.IsNil() { + d.w.Write(nilAngleBytes) + } + + case reflect.Ptr: + // Do nothing. We should never get here since pointers have already + // been handled above. + + case reflect.Map: + // nil maps should be indicated as different than empty maps + if v.IsNil() { + d.w.Write(nilAngleBytes) + break + } + + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + numEntries := v.Len() + keys := v.MapKeys() + if d.cs.SortKeys { + sortValues(keys, d.cs) + } + for i, key := range keys { + d.dump(d.unpackValue(key)) + d.w.Write(colonSpaceBytes) + d.ignoreNextIndent = true + d.dump(d.unpackValue(v.MapIndex(key))) + if i < (numEntries - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.Struct: + d.w.Write(openBraceNewlineBytes) + d.depth++ + if (d.cs.MaxDepth != 0) && (d.depth > d.cs.MaxDepth) { + d.indent() + d.w.Write(maxNewlineBytes) + } else { + vt := v.Type() + numFields := v.NumField() + for i := 0; i < numFields; i++ { + d.indent() + vtf := vt.Field(i) + d.w.Write([]byte(vtf.Name)) + d.w.Write(colonSpaceBytes) + d.ignoreNextIndent = true + d.dump(d.unpackValue(v.Field(i))) + if i < (numFields - 1) { + d.w.Write(commaNewlineBytes) + } else { + d.w.Write(newlineBytes) + } + } + } + d.depth-- + d.indent() + d.w.Write(closeBraceBytes) + + case reflect.Uintptr: + printHexPtr(d.w, uintptr(v.Uint())) + + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + printHexPtr(d.w, v.Pointer()) + + // There were not any other types at the time this code was written, but + // fall back to letting the default fmt package handle it in case any new + // types are added. + default: + if v.CanInterface() { + fmt.Fprintf(d.w, "%v", v.Interface()) + } else { + fmt.Fprintf(d.w, "%v", v.String()) + } + } +} + +// fdump is a helper function to consolidate the logic from the various public +// methods which take varying writers and config states. +func fdump(cs *ConfigState, w io.Writer, a ...interface{}) { + for _, arg := range a { + if arg == nil { + w.Write(interfaceBytes) + w.Write(spaceBytes) + w.Write(nilAngleBytes) + w.Write(newlineBytes) + continue + } + + d := dumpState{w: w, cs: cs} + d.pointers = make(map[uintptr]int) + d.dump(reflect.ValueOf(arg)) + d.w.Write(newlineBytes) + } +} + +// Fdump formats and displays the passed arguments to io.Writer w. It formats +// exactly the same as Dump. +func Fdump(w io.Writer, a ...interface{}) { + fdump(&Config, w, a...) +} + +// Sdump returns a string with the passed arguments formatted exactly the same +// as Dump. +func Sdump(a ...interface{}) string { + var buf bytes.Buffer + fdump(&Config, &buf, a...) + return buf.String() +} + +/* +Dump displays the passed parameters to standard out with newlines, customizable +indentation, and additional debug information such as complete types and all +pointer addresses used to indirect to the final value. It provides the +following features over the built-in printing facilities provided by the fmt +package: + + * Pointers are dereferenced and followed + * Circular data structures are detected and handled properly + * Custom Stringer/error interfaces are optionally invoked, including + on unexported types + * Custom types which only implement the Stringer/error interfaces via + a pointer receiver are optionally invoked when passing non-pointer + variables + * Byte arrays and slices are dumped like the hexdump -C command which + includes offsets, byte values in hex, and ASCII output + +The configuration options are controlled by an exported package global, +spew.Config. See ConfigState for options documentation. + +See Fdump if you would prefer dumping to an arbitrary io.Writer or Sdump to +get the formatted result as a string. +*/ +func Dump(a ...interface{}) { + fdump(&Config, os.Stdout, a...) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/format.go b/vendor/github.com/davecgh/go-spew/spew/format.go new file mode 100644 index 0000000000..ecf3b80e24 --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/format.go @@ -0,0 +1,419 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "bytes" + "fmt" + "reflect" + "strconv" + "strings" +) + +// supportedFlags is a list of all the character flags supported by fmt package. +const supportedFlags = "0-+# " + +// formatState implements the fmt.Formatter interface and contains information +// about the state of a formatting operation. The NewFormatter function can +// be used to get a new Formatter which can be used directly as arguments +// in standard fmt package printing calls. +type formatState struct { + value interface{} + fs fmt.State + depth int + pointers map[uintptr]int + ignoreNextType bool + cs *ConfigState +} + +// buildDefaultFormat recreates the original format string without precision +// and width information to pass in to fmt.Sprintf in the case of an +// unrecognized type. Unless new types are added to the language, this +// function won't ever be called. +func (f *formatState) buildDefaultFormat() (format string) { + buf := bytes.NewBuffer(percentBytes) + + for _, flag := range supportedFlags { + if f.fs.Flag(int(flag)) { + buf.WriteRune(flag) + } + } + + buf.WriteRune('v') + + format = buf.String() + return format +} + +// constructOrigFormat recreates the original format string including precision +// and width information to pass along to the standard fmt package. This allows +// automatic deferral of all format strings this package doesn't support. +func (f *formatState) constructOrigFormat(verb rune) (format string) { + buf := bytes.NewBuffer(percentBytes) + + for _, flag := range supportedFlags { + if f.fs.Flag(int(flag)) { + buf.WriteRune(flag) + } + } + + if width, ok := f.fs.Width(); ok { + buf.WriteString(strconv.Itoa(width)) + } + + if precision, ok := f.fs.Precision(); ok { + buf.Write(precisionBytes) + buf.WriteString(strconv.Itoa(precision)) + } + + buf.WriteRune(verb) + + format = buf.String() + return format +} + +// unpackValue returns values inside of non-nil interfaces when possible and +// ensures that types for values which have been unpacked from an interface +// are displayed when the show types flag is also set. +// This is useful for data types like structs, arrays, slices, and maps which +// can contain varying types packed inside an interface. +func (f *formatState) unpackValue(v reflect.Value) reflect.Value { + if v.Kind() == reflect.Interface { + f.ignoreNextType = false + if !v.IsNil() { + v = v.Elem() + } + } + return v +} + +// formatPtr handles formatting of pointers by indirecting them as necessary. +func (f *formatState) formatPtr(v reflect.Value) { + // Display nil if top level pointer is nil. + showTypes := f.fs.Flag('#') + if v.IsNil() && (!showTypes || f.ignoreNextType) { + f.fs.Write(nilAngleBytes) + return + } + + // Remove pointers at or below the current depth from map used to detect + // circular refs. + for k, depth := range f.pointers { + if depth >= f.depth { + delete(f.pointers, k) + } + } + + // Keep list of all dereferenced pointers to possibly show later. + pointerChain := make([]uintptr, 0) + + // Figure out how many levels of indirection there are by derferencing + // pointers and unpacking interfaces down the chain while detecting circular + // references. + nilFound := false + cycleFound := false + indirects := 0 + ve := v + for ve.Kind() == reflect.Ptr { + if ve.IsNil() { + nilFound = true + break + } + indirects++ + addr := ve.Pointer() + pointerChain = append(pointerChain, addr) + if pd, ok := f.pointers[addr]; ok && pd < f.depth { + cycleFound = true + indirects-- + break + } + f.pointers[addr] = f.depth + + ve = ve.Elem() + if ve.Kind() == reflect.Interface { + if ve.IsNil() { + nilFound = true + break + } + ve = ve.Elem() + } + } + + // Display type or indirection level depending on flags. + if showTypes && !f.ignoreNextType { + f.fs.Write(openParenBytes) + f.fs.Write(bytes.Repeat(asteriskBytes, indirects)) + f.fs.Write([]byte(ve.Type().String())) + f.fs.Write(closeParenBytes) + } else { + if nilFound || cycleFound { + indirects += strings.Count(ve.Type().String(), "*") + } + f.fs.Write(openAngleBytes) + f.fs.Write([]byte(strings.Repeat("*", indirects))) + f.fs.Write(closeAngleBytes) + } + + // Display pointer information depending on flags. + if f.fs.Flag('+') && (len(pointerChain) > 0) { + f.fs.Write(openParenBytes) + for i, addr := range pointerChain { + if i > 0 { + f.fs.Write(pointerChainBytes) + } + printHexPtr(f.fs, addr) + } + f.fs.Write(closeParenBytes) + } + + // Display dereferenced value. + switch { + case nilFound == true: + f.fs.Write(nilAngleBytes) + + case cycleFound == true: + f.fs.Write(circularShortBytes) + + default: + f.ignoreNextType = true + f.format(ve) + } +} + +// format is the main workhorse for providing the Formatter interface. It +// uses the passed reflect value to figure out what kind of object we are +// dealing with and formats it appropriately. It is a recursive function, +// however circular data structures are detected and handled properly. +func (f *formatState) format(v reflect.Value) { + // Handle invalid reflect values immediately. + kind := v.Kind() + if kind == reflect.Invalid { + f.fs.Write(invalidAngleBytes) + return + } + + // Handle pointers specially. + if kind == reflect.Ptr { + f.formatPtr(v) + return + } + + // Print type information unless already handled elsewhere. + if !f.ignoreNextType && f.fs.Flag('#') { + f.fs.Write(openParenBytes) + f.fs.Write([]byte(v.Type().String())) + f.fs.Write(closeParenBytes) + } + f.ignoreNextType = false + + // Call Stringer/error interfaces if they exist and the handle methods + // flag is enabled. + if !f.cs.DisableMethods { + if (kind != reflect.Invalid) && (kind != reflect.Interface) { + if handled := handleMethods(f.cs, f.fs, v); handled { + return + } + } + } + + switch kind { + case reflect.Invalid: + // Do nothing. We should never get here since invalid has already + // been handled above. + + case reflect.Bool: + printBool(f.fs, v.Bool()) + + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + printInt(f.fs, v.Int(), 10) + + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint: + printUint(f.fs, v.Uint(), 10) + + case reflect.Float32: + printFloat(f.fs, v.Float(), 32) + + case reflect.Float64: + printFloat(f.fs, v.Float(), 64) + + case reflect.Complex64: + printComplex(f.fs, v.Complex(), 32) + + case reflect.Complex128: + printComplex(f.fs, v.Complex(), 64) + + case reflect.Slice: + if v.IsNil() { + f.fs.Write(nilAngleBytes) + break + } + fallthrough + + case reflect.Array: + f.fs.Write(openBracketBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + numEntries := v.Len() + for i := 0; i < numEntries; i++ { + if i > 0 { + f.fs.Write(spaceBytes) + } + f.ignoreNextType = true + f.format(f.unpackValue(v.Index(i))) + } + } + f.depth-- + f.fs.Write(closeBracketBytes) + + case reflect.String: + f.fs.Write([]byte(v.String())) + + case reflect.Interface: + // The only time we should get here is for nil interfaces due to + // unpackValue calls. + if v.IsNil() { + f.fs.Write(nilAngleBytes) + } + + case reflect.Ptr: + // Do nothing. We should never get here since pointers have already + // been handled above. + + case reflect.Map: + // nil maps should be indicated as different than empty maps + if v.IsNil() { + f.fs.Write(nilAngleBytes) + break + } + + f.fs.Write(openMapBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + keys := v.MapKeys() + if f.cs.SortKeys { + sortValues(keys, f.cs) + } + for i, key := range keys { + if i > 0 { + f.fs.Write(spaceBytes) + } + f.ignoreNextType = true + f.format(f.unpackValue(key)) + f.fs.Write(colonBytes) + f.ignoreNextType = true + f.format(f.unpackValue(v.MapIndex(key))) + } + } + f.depth-- + f.fs.Write(closeMapBytes) + + case reflect.Struct: + numFields := v.NumField() + f.fs.Write(openBraceBytes) + f.depth++ + if (f.cs.MaxDepth != 0) && (f.depth > f.cs.MaxDepth) { + f.fs.Write(maxShortBytes) + } else { + vt := v.Type() + for i := 0; i < numFields; i++ { + if i > 0 { + f.fs.Write(spaceBytes) + } + vtf := vt.Field(i) + if f.fs.Flag('+') || f.fs.Flag('#') { + f.fs.Write([]byte(vtf.Name)) + f.fs.Write(colonBytes) + } + f.format(f.unpackValue(v.Field(i))) + } + } + f.depth-- + f.fs.Write(closeBraceBytes) + + case reflect.Uintptr: + printHexPtr(f.fs, uintptr(v.Uint())) + + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + printHexPtr(f.fs, v.Pointer()) + + // There were not any other types at the time this code was written, but + // fall back to letting the default fmt package handle it if any get added. + default: + format := f.buildDefaultFormat() + if v.CanInterface() { + fmt.Fprintf(f.fs, format, v.Interface()) + } else { + fmt.Fprintf(f.fs, format, v.String()) + } + } +} + +// Format satisfies the fmt.Formatter interface. See NewFormatter for usage +// details. +func (f *formatState) Format(fs fmt.State, verb rune) { + f.fs = fs + + // Use standard formatting for verbs that are not v. + if verb != 'v' { + format := f.constructOrigFormat(verb) + fmt.Fprintf(fs, format, f.value) + return + } + + if f.value == nil { + if fs.Flag('#') { + fs.Write(interfaceBytes) + } + fs.Write(nilAngleBytes) + return + } + + f.format(reflect.ValueOf(f.value)) +} + +// newFormatter is a helper function to consolidate the logic from the various +// public methods which take varying config states. +func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter { + fs := &formatState{value: v, cs: cs} + fs.pointers = make(map[uintptr]int) + return fs +} + +/* +NewFormatter returns a custom formatter that satisfies the fmt.Formatter +interface. As a result, it integrates cleanly with standard fmt package +printing functions. The formatter is useful for inline printing of smaller data +types similar to the standard %v format specifier. + +The custom formatter only responds to the %v (most compact), %+v (adds pointer +addresses), %#v (adds types), or %#+v (adds types and pointer addresses) verb +combinations. Any other verbs such as %x and %q will be sent to the the +standard fmt package for formatting. In addition, the custom formatter ignores +the width and precision arguments (however they will still work on the format +specifiers not handled by the custom formatter). + +Typically this function shouldn't be called directly. It is much easier to make +use of the custom formatter by calling one of the convenience functions such as +Printf, Println, or Fprintf. +*/ +func NewFormatter(v interface{}) fmt.Formatter { + return newFormatter(&Config, v) +} diff --git a/vendor/github.com/davecgh/go-spew/spew/spew.go b/vendor/github.com/davecgh/go-spew/spew/spew.go new file mode 100644 index 0000000000..d8233f542e --- /dev/null +++ b/vendor/github.com/davecgh/go-spew/spew/spew.go @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2013 Dave Collins + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package spew + +import ( + "fmt" + "io" +) + +// Errorf is a wrapper for fmt.Errorf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the formatted string as a value that satisfies error. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Errorf(format string, a ...interface{}) (err error) { + return fmt.Errorf(format, convertArgs(a)...) +} + +// Fprint is a wrapper for fmt.Fprint that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprint(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprint(w, convertArgs(a)...) +} + +// Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { + return fmt.Fprintf(w, format, convertArgs(a)...) +} + +// Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it +// passed with a default Formatter interface returned by NewFormatter. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b)) +func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { + return fmt.Fprintln(w, convertArgs(a)...) +} + +// Print is a wrapper for fmt.Print that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Print(spew.NewFormatter(a), spew.NewFormatter(b)) +func Print(a ...interface{}) (n int, err error) { + return fmt.Print(convertArgs(a)...) +} + +// Printf is a wrapper for fmt.Printf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Printf(format string, a ...interface{}) (n int, err error) { + return fmt.Printf(format, convertArgs(a)...) +} + +// Println is a wrapper for fmt.Println that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the number of bytes written and any write error encountered. See +// NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Println(spew.NewFormatter(a), spew.NewFormatter(b)) +func Println(a ...interface{}) (n int, err error) { + return fmt.Println(convertArgs(a)...) +} + +// Sprint is a wrapper for fmt.Sprint that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprint(a ...interface{}) string { + return fmt.Sprint(convertArgs(a)...) +} + +// Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were +// passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprintf(format string, a ...interface{}) string { + return fmt.Sprintf(format, convertArgs(a)...) +} + +// Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it +// were passed with a default Formatter interface returned by NewFormatter. It +// returns the resulting string. See NewFormatter for formatting details. +// +// This function is shorthand for the following syntax: +// +// fmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b)) +func Sprintln(a ...interface{}) string { + return fmt.Sprintln(convertArgs(a)...) +} + +// convertArgs accepts a slice of arguments and returns a slice of the same +// length with each argument converted to a default spew Formatter interface. +func convertArgs(args []interface{}) (formatters []interface{}) { + formatters = make([]interface{}, len(args)) + for index, arg := range args { + formatters[index] = NewFormatter(arg) + } + return formatters +} diff --git a/vendor/github.com/docker/distribution/LICENSE b/vendor/github.com/docker/distribution/LICENSE new file mode 100644 index 0000000000..e06d208186 --- /dev/null +++ b/vendor/github.com/docker/distribution/LICENSE @@ -0,0 +1,202 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/vendor/github.com/docker/distribution/digest/digest.go b/vendor/github.com/docker/distribution/digest/digest.go new file mode 100644 index 0000000000..31d821bba7 --- /dev/null +++ b/vendor/github.com/docker/distribution/digest/digest.go @@ -0,0 +1,139 @@ +package digest + +import ( + "fmt" + "hash" + "io" + "regexp" + "strings" +) + +const ( + // DigestSha256EmptyTar is the canonical sha256 digest of empty data + DigestSha256EmptyTar = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" +) + +// Digest allows simple protection of hex formatted digest strings, prefixed +// by their algorithm. Strings of type Digest have some guarantee of being in +// the correct format and it provides quick access to the components of a +// digest string. +// +// The following is an example of the contents of Digest types: +// +// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc +// +// This allows to abstract the digest behind this type and work only in those +// terms. +type Digest string + +// NewDigest returns a Digest from alg and a hash.Hash object. +func NewDigest(alg Algorithm, h hash.Hash) Digest { + return NewDigestFromBytes(alg, h.Sum(nil)) +} + +// NewDigestFromBytes returns a new digest from the byte contents of p. +// Typically, this can come from hash.Hash.Sum(...) or xxx.SumXXX(...) +// functions. This is also useful for rebuilding digests from binary +// serializations. +func NewDigestFromBytes(alg Algorithm, p []byte) Digest { + return Digest(fmt.Sprintf("%s:%x", alg, p)) +} + +// NewDigestFromHex returns a Digest from alg and a the hex encoded digest. +func NewDigestFromHex(alg, hex string) Digest { + return Digest(fmt.Sprintf("%s:%s", alg, hex)) +} + +// DigestRegexp matches valid digest types. +var DigestRegexp = regexp.MustCompile(`[a-zA-Z0-9-_+.]+:[a-fA-F0-9]+`) + +// DigestRegexpAnchored matches valid digest types, anchored to the start and end of the match. +var DigestRegexpAnchored = regexp.MustCompile(`^` + DigestRegexp.String() + `$`) + +var ( + // ErrDigestInvalidFormat returned when digest format invalid. + ErrDigestInvalidFormat = fmt.Errorf("invalid checksum digest format") + + // ErrDigestInvalidLength returned when digest has invalid length. + ErrDigestInvalidLength = fmt.Errorf("invalid checksum digest length") + + // ErrDigestUnsupported returned when the digest algorithm is unsupported. + ErrDigestUnsupported = fmt.Errorf("unsupported digest algorithm") +) + +// ParseDigest parses s and returns the validated digest object. An error will +// be returned if the format is invalid. +func ParseDigest(s string) (Digest, error) { + d := Digest(s) + + return d, d.Validate() +} + +// FromReader returns the most valid digest for the underlying content using +// the canonical digest algorithm. +func FromReader(rd io.Reader) (Digest, error) { + return Canonical.FromReader(rd) +} + +// FromBytes digests the input and returns a Digest. +func FromBytes(p []byte) Digest { + return Canonical.FromBytes(p) +} + +// Validate checks that the contents of d is a valid digest, returning an +// error if not. +func (d Digest) Validate() error { + s := string(d) + + if !DigestRegexpAnchored.MatchString(s) { + return ErrDigestInvalidFormat + } + + i := strings.Index(s, ":") + if i < 0 { + return ErrDigestInvalidFormat + } + + // case: "sha256:" with no hex. + if i+1 == len(s) { + return ErrDigestInvalidFormat + } + + switch algorithm := Algorithm(s[:i]); algorithm { + case SHA256, SHA384, SHA512: + if algorithm.Size()*2 != len(s[i+1:]) { + return ErrDigestInvalidLength + } + break + default: + return ErrDigestUnsupported + } + + return nil +} + +// Algorithm returns the algorithm portion of the digest. This will panic if +// the underlying digest is not in a valid format. +func (d Digest) Algorithm() Algorithm { + return Algorithm(d[:d.sepIndex()]) +} + +// Hex returns the hex digest portion of the digest. This will panic if the +// underlying digest is not in a valid format. +func (d Digest) Hex() string { + return string(d[d.sepIndex()+1:]) +} + +func (d Digest) String() string { + return string(d) +} + +func (d Digest) sepIndex() int { + i := strings.Index(string(d), ":") + + if i < 0 { + panic("could not find ':' in digest: " + d) + } + + return i +} diff --git a/vendor/github.com/docker/distribution/digest/digester.go b/vendor/github.com/docker/distribution/digest/digester.go new file mode 100644 index 0000000000..f3105a45b6 --- /dev/null +++ b/vendor/github.com/docker/distribution/digest/digester.go @@ -0,0 +1,155 @@ +package digest + +import ( + "crypto" + "fmt" + "hash" + "io" +) + +// Algorithm identifies and implementation of a digester by an identifier. +// Note the that this defines both the hash algorithm used and the string +// encoding. +type Algorithm string + +// supported digest types +const ( + SHA256 Algorithm = "sha256" // sha256 with hex encoding + SHA384 Algorithm = "sha384" // sha384 with hex encoding + SHA512 Algorithm = "sha512" // sha512 with hex encoding + + // Canonical is the primary digest algorithm used with the distribution + // project. Other digests may be used but this one is the primary storage + // digest. + Canonical = SHA256 +) + +var ( + // TODO(stevvooe): Follow the pattern of the standard crypto package for + // registration of digests. Effectively, we are a registerable set and + // common symbol access. + + // algorithms maps values to hash.Hash implementations. Other algorithms + // may be available but they cannot be calculated by the digest package. + algorithms = map[Algorithm]crypto.Hash{ + SHA256: crypto.SHA256, + SHA384: crypto.SHA384, + SHA512: crypto.SHA512, + } +) + +// Available returns true if the digest type is available for use. If this +// returns false, New and Hash will return nil. +func (a Algorithm) Available() bool { + h, ok := algorithms[a] + if !ok { + return false + } + + // check availability of the hash, as well + return h.Available() +} + +func (a Algorithm) String() string { + return string(a) +} + +// Size returns number of bytes returned by the hash. +func (a Algorithm) Size() int { + h, ok := algorithms[a] + if !ok { + return 0 + } + return h.Size() +} + +// Set implemented to allow use of Algorithm as a command line flag. +func (a *Algorithm) Set(value string) error { + if value == "" { + *a = Canonical + } else { + // just do a type conversion, support is queried with Available. + *a = Algorithm(value) + } + + return nil +} + +// New returns a new digester for the specified algorithm. If the algorithm +// does not have a digester implementation, nil will be returned. This can be +// checked by calling Available before calling New. +func (a Algorithm) New() Digester { + return &digester{ + alg: a, + hash: a.Hash(), + } +} + +// Hash returns a new hash as used by the algorithm. If not available, the +// method will panic. Check Algorithm.Available() before calling. +func (a Algorithm) Hash() hash.Hash { + if !a.Available() { + // NOTE(stevvooe): A missing hash is usually a programming error that + // must be resolved at compile time. We don't import in the digest + // package to allow users to choose their hash implementation (such as + // when using stevvooe/resumable or a hardware accelerated package). + // + // Applications that may want to resolve the hash at runtime should + // call Algorithm.Available before call Algorithm.Hash(). + panic(fmt.Sprintf("%v not available (make sure it is imported)", a)) + } + + return algorithms[a].New() +} + +// FromReader returns the digest of the reader using the algorithm. +func (a Algorithm) FromReader(rd io.Reader) (Digest, error) { + digester := a.New() + + if _, err := io.Copy(digester.Hash(), rd); err != nil { + return "", err + } + + return digester.Digest(), nil +} + +// FromBytes digests the input and returns a Digest. +func (a Algorithm) FromBytes(p []byte) Digest { + digester := a.New() + + if _, err := digester.Hash().Write(p); err != nil { + // Writes to a Hash should never fail. None of the existing + // hash implementations in the stdlib or hashes vendored + // here can return errors from Write. Having a panic in this + // condition instead of having FromBytes return an error value + // avoids unnecessary error handling paths in all callers. + panic("write to hash function returned error: " + err.Error()) + } + + return digester.Digest() +} + +// TODO(stevvooe): Allow resolution of verifiers using the digest type and +// this registration system. + +// Digester calculates the digest of written data. Writes should go directly +// to the return value of Hash, while calling Digest will return the current +// value of the digest. +type Digester interface { + Hash() hash.Hash // provides direct access to underlying hash instance. + Digest() Digest +} + +// digester provides a simple digester definition that embeds a hasher. +type digester struct { + alg Algorithm + hash hash.Hash +} + +func (d *digester) Hash() hash.Hash { + return d.hash +} + +func (d *digester) Digest() Digest { + return NewDigest(d.alg, d.hash) +} diff --git a/vendor/github.com/docker/distribution/digest/doc.go b/vendor/github.com/docker/distribution/digest/doc.go new file mode 100644 index 0000000000..f64b0db32b --- /dev/null +++ b/vendor/github.com/docker/distribution/digest/doc.go @@ -0,0 +1,42 @@ +// Package digest provides a generalized type to opaquely represent message +// digests and their operations within the registry. The Digest type is +// designed to serve as a flexible identifier in a content-addressable system. +// More importantly, it provides tools and wrappers to work with +// hash.Hash-based digests with little effort. +// +// Basics +// +// The format of a digest is simply a string with two parts, dubbed the +// "algorithm" and the "digest", separated by a colon: +// +// : +// +// An example of a sha256 digest representation follows: +// +// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc +// +// In this case, the string "sha256" is the algorithm and the hex bytes are +// the "digest". +// +// Because the Digest type is simply a string, once a valid Digest is +// obtained, comparisons are cheap, quick and simple to express with the +// standard equality operator. +// +// Verification +// +// The main benefit of using the Digest type is simple verification against a +// given digest. The Verifier interface, modeled after the stdlib hash.Hash +// interface, provides a common write sink for digest verification. After +// writing is complete, calling the Verifier.Verified method will indicate +// whether or not the stream of bytes matches the target digest. +// +// Missing Features +// +// In addition to the above, we intend to add the following features to this +// package: +// +// 1. A Digester type that supports write sink digest calculation. +// +// 2. Suspend and resume of ongoing digest calculations to support efficient digest verification in the registry. +// +package digest diff --git a/vendor/github.com/docker/distribution/digest/set.go b/vendor/github.com/docker/distribution/digest/set.go new file mode 100644 index 0000000000..4b9313c1ae --- /dev/null +++ b/vendor/github.com/docker/distribution/digest/set.go @@ -0,0 +1,245 @@ +package digest + +import ( + "errors" + "sort" + "strings" + "sync" +) + +var ( + // ErrDigestNotFound is used when a matching digest + // could not be found in a set. + ErrDigestNotFound = errors.New("digest not found") + + // ErrDigestAmbiguous is used when multiple digests + // are found in a set. None of the matching digests + // should be considered valid matches. + ErrDigestAmbiguous = errors.New("ambiguous digest string") +) + +// Set is used to hold a unique set of digests which +// may be easily referenced by easily referenced by a string +// representation of the digest as well as short representation. +// The uniqueness of the short representation is based on other +// digests in the set. If digests are omitted from this set, +// collisions in a larger set may not be detected, therefore it +// is important to always do short representation lookups on +// the complete set of digests. To mitigate collisions, an +// appropriately long short code should be used. +type Set struct { + mutex sync.RWMutex + entries digestEntries +} + +// NewSet creates an empty set of digests +// which may have digests added. +func NewSet() *Set { + return &Set{ + entries: digestEntries{}, + } +} + +// checkShortMatch checks whether two digests match as either whole +// values or short values. This function does not test equality, +// rather whether the second value could match against the first +// value. +func checkShortMatch(alg Algorithm, hex, shortAlg, shortHex string) bool { + if len(hex) == len(shortHex) { + if hex != shortHex { + return false + } + if len(shortAlg) > 0 && string(alg) != shortAlg { + return false + } + } else if !strings.HasPrefix(hex, shortHex) { + return false + } else if len(shortAlg) > 0 && string(alg) != shortAlg { + return false + } + return true +} + +// Lookup looks for a digest matching the given string representation. +// If no digests could be found ErrDigestNotFound will be returned +// with an empty digest value. If multiple matches are found +// ErrDigestAmbiguous will be returned with an empty digest value. +func (dst *Set) Lookup(d string) (Digest, error) { + dst.mutex.RLock() + defer dst.mutex.RUnlock() + if len(dst.entries) == 0 { + return "", ErrDigestNotFound + } + var ( + searchFunc func(int) bool + alg Algorithm + hex string + ) + dgst, err := ParseDigest(d) + if err == ErrDigestInvalidFormat { + hex = d + searchFunc = func(i int) bool { + return dst.entries[i].val >= d + } + } else { + hex = dgst.Hex() + alg = dgst.Algorithm() + searchFunc = func(i int) bool { + if dst.entries[i].val == hex { + return dst.entries[i].alg >= alg + } + return dst.entries[i].val >= hex + } + } + idx := sort.Search(len(dst.entries), searchFunc) + if idx == len(dst.entries) || !checkShortMatch(dst.entries[idx].alg, dst.entries[idx].val, string(alg), hex) { + return "", ErrDigestNotFound + } + if dst.entries[idx].alg == alg && dst.entries[idx].val == hex { + return dst.entries[idx].digest, nil + } + if idx+1 < len(dst.entries) && checkShortMatch(dst.entries[idx+1].alg, dst.entries[idx+1].val, string(alg), hex) { + return "", ErrDigestAmbiguous + } + + return dst.entries[idx].digest, nil +} + +// Add adds the given digest to the set. An error will be returned +// if the given digest is invalid. If the digest already exists in the +// set, this operation will be a no-op. +func (dst *Set) Add(d Digest) error { + if err := d.Validate(); err != nil { + return err + } + dst.mutex.Lock() + defer dst.mutex.Unlock() + entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d} + searchFunc := func(i int) bool { + if dst.entries[i].val == entry.val { + return dst.entries[i].alg >= entry.alg + } + return dst.entries[i].val >= entry.val + } + idx := sort.Search(len(dst.entries), searchFunc) + if idx == len(dst.entries) { + dst.entries = append(dst.entries, entry) + return nil + } else if dst.entries[idx].digest == d { + return nil + } + + entries := append(dst.entries, nil) + copy(entries[idx+1:], entries[idx:len(entries)-1]) + entries[idx] = entry + dst.entries = entries + return nil +} + +// Remove removes the given digest from the set. An err will be +// returned if the given digest is invalid. If the digest does +// not exist in the set, this operation will be a no-op. +func (dst *Set) Remove(d Digest) error { + if err := d.Validate(); err != nil { + return err + } + dst.mutex.Lock() + defer dst.mutex.Unlock() + entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d} + searchFunc := func(i int) bool { + if dst.entries[i].val == entry.val { + return dst.entries[i].alg >= entry.alg + } + return dst.entries[i].val >= entry.val + } + idx := sort.Search(len(dst.entries), searchFunc) + // Not found if idx is after or value at idx is not digest + if idx == len(dst.entries) || dst.entries[idx].digest != d { + return nil + } + + entries := dst.entries + copy(entries[idx:], entries[idx+1:]) + entries = entries[:len(entries)-1] + dst.entries = entries + + return nil +} + +// All returns all the digests in the set +func (dst *Set) All() []Digest { + dst.mutex.RLock() + defer dst.mutex.RUnlock() + retValues := make([]Digest, len(dst.entries)) + for i := range dst.entries { + retValues[i] = dst.entries[i].digest + } + + return retValues +} + +// ShortCodeTable returns a map of Digest to unique short codes. The +// length represents the minimum value, the maximum length may be the +// entire value of digest if uniqueness cannot be achieved without the +// full value. This function will attempt to make short codes as short +// as possible to be unique. +func ShortCodeTable(dst *Set, length int) map[Digest]string { + dst.mutex.RLock() + defer dst.mutex.RUnlock() + m := make(map[Digest]string, len(dst.entries)) + l := length + resetIdx := 0 + for i := 0; i < len(dst.entries); i++ { + var short string + extended := true + for extended { + extended = false + if len(dst.entries[i].val) <= l { + short = dst.entries[i].digest.String() + } else { + short = dst.entries[i].val[:l] + for j := i + 1; j < len(dst.entries); j++ { + if checkShortMatch(dst.entries[j].alg, dst.entries[j].val, "", short) { + if j > resetIdx { + resetIdx = j + } + extended = true + } else { + break + } + } + if extended { + l++ + } + } + } + m[dst.entries[i].digest] = short + if i >= resetIdx { + l = length + } + } + return m +} + +type digestEntry struct { + alg Algorithm + val string + digest Digest +} + +type digestEntries []*digestEntry + +func (d digestEntries) Len() int { + return len(d) +} + +func (d digestEntries) Less(i, j int) bool { + if d[i].val != d[j].val { + return d[i].val < d[j].val + } + return d[i].alg < d[j].alg +} + +func (d digestEntries) Swap(i, j int) { + d[i], d[j] = d[j], d[i] +} diff --git a/vendor/github.com/docker/distribution/digest/verifiers.go b/vendor/github.com/docker/distribution/digest/verifiers.go new file mode 100644 index 0000000000..9af3be1341 --- /dev/null +++ b/vendor/github.com/docker/distribution/digest/verifiers.go @@ -0,0 +1,44 @@ +package digest + +import ( + "hash" + "io" +) + +// Verifier presents a general verification interface to be used with message +// digests and other byte stream verifications. Users instantiate a Verifier +// from one of the various methods, write the data under test to it then check +// the result with the Verified method. +type Verifier interface { + io.Writer + + // Verified will return true if the content written to Verifier matches + // the digest. + Verified() bool +} + +// NewDigestVerifier returns a verifier that compares the written bytes +// against a passed in digest. +func NewDigestVerifier(d Digest) (Verifier, error) { + if err := d.Validate(); err != nil { + return nil, err + } + + return hashVerifier{ + hash: d.Algorithm().Hash(), + digest: d, + }, nil +} + +type hashVerifier struct { + digest Digest + hash hash.Hash +} + +func (hv hashVerifier) Write(p []byte) (n int, err error) { + return hv.hash.Write(p) +} + +func (hv hashVerifier) Verified() bool { + return hv.digest == NewDigest(hv.digest.Algorithm(), hv.hash) +} diff --git a/vendor/github.com/docker/distribution/reference/reference.go b/vendor/github.com/docker/distribution/reference/reference.go new file mode 100644 index 0000000000..bb09fa25da --- /dev/null +++ b/vendor/github.com/docker/distribution/reference/reference.go @@ -0,0 +1,334 @@ +// Package reference provides a general type to represent any way of referencing images within the registry. +// Its main purpose is to abstract tags and digests (content-addressable hash). +// +// Grammar +// +// reference := name [ ":" tag ] [ "@" digest ] +// name := [hostname '/'] component ['/' component]* +// hostname := hostcomponent ['.' hostcomponent]* [':' port-number] +// hostcomponent := /([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])/ +// port-number := /[0-9]+/ +// component := alpha-numeric [separator alpha-numeric]* +// alpha-numeric := /[a-z0-9]+/ +// separator := /[_.]|__|[-]*/ +// +// tag := /[\w][\w.-]{0,127}/ +// +// digest := digest-algorithm ":" digest-hex +// digest-algorithm := digest-algorithm-component [ digest-algorithm-separator digest-algorithm-component ] +// digest-algorithm-separator := /[+.-_]/ +// digest-algorithm-component := /[A-Za-z][A-Za-z0-9]*/ +// digest-hex := /[0-9a-fA-F]{32,}/ ; At least 128 bit digest value +package reference + +import ( + "errors" + "fmt" + + "github.com/docker/distribution/digest" +) + +const ( + // NameTotalLengthMax is the maximum total number of characters in a repository name. + NameTotalLengthMax = 255 +) + +var ( + // ErrReferenceInvalidFormat represents an error while trying to parse a string as a reference. + ErrReferenceInvalidFormat = errors.New("invalid reference format") + + // ErrTagInvalidFormat represents an error while trying to parse a string as a tag. + ErrTagInvalidFormat = errors.New("invalid tag format") + + // ErrDigestInvalidFormat represents an error while trying to parse a string as a tag. + ErrDigestInvalidFormat = errors.New("invalid digest format") + + // ErrNameEmpty is returned for empty, invalid repository names. + ErrNameEmpty = errors.New("repository name must have at least one component") + + // ErrNameTooLong is returned when a repository name is longer than NameTotalLengthMax. + ErrNameTooLong = fmt.Errorf("repository name must not be more than %v characters", NameTotalLengthMax) +) + +// Reference is an opaque object reference identifier that may include +// modifiers such as a hostname, name, tag, and digest. +type Reference interface { + // String returns the full reference + String() string +} + +// Field provides a wrapper type for resolving correct reference types when +// working with encoding. +type Field struct { + reference Reference +} + +// AsField wraps a reference in a Field for encoding. +func AsField(reference Reference) Field { + return Field{reference} +} + +// Reference unwraps the reference type from the field to +// return the Reference object. This object should be +// of the appropriate type to further check for different +// reference types. +func (f Field) Reference() Reference { + return f.reference +} + +// MarshalText serializes the field to byte text which +// is the string of the reference. +func (f Field) MarshalText() (p []byte, err error) { + return []byte(f.reference.String()), nil +} + +// UnmarshalText parses text bytes by invoking the +// reference parser to ensure the appropriately +// typed reference object is wrapped by field. +func (f *Field) UnmarshalText(p []byte) error { + r, err := Parse(string(p)) + if err != nil { + return err + } + + f.reference = r + return nil +} + +// Named is an object with a full name +type Named interface { + Reference + Name() string +} + +// Tagged is an object which has a tag +type Tagged interface { + Reference + Tag() string +} + +// NamedTagged is an object including a name and tag. +type NamedTagged interface { + Named + Tag() string +} + +// Digested is an object which has a digest +// in which it can be referenced by +type Digested interface { + Reference + Digest() digest.Digest +} + +// Canonical reference is an object with a fully unique +// name including a name with hostname and digest +type Canonical interface { + Named + Digest() digest.Digest +} + +// SplitHostname splits a named reference into a +// hostname and name string. If no valid hostname is +// found, the hostname is empty and the full value +// is returned as name +func SplitHostname(named Named) (string, string) { + name := named.Name() + match := anchoredNameRegexp.FindStringSubmatch(name) + if match == nil || len(match) != 3 { + return "", name + } + return match[1], match[2] +} + +// Parse parses s and returns a syntactically valid Reference. +// If an error was encountered it is returned, along with a nil Reference. +// NOTE: Parse will not handle short digests. +func Parse(s string) (Reference, error) { + matches := ReferenceRegexp.FindStringSubmatch(s) + if matches == nil { + if s == "" { + return nil, ErrNameEmpty + } + // TODO(dmcgowan): Provide more specific and helpful error + return nil, ErrReferenceInvalidFormat + } + + if len(matches[1]) > NameTotalLengthMax { + return nil, ErrNameTooLong + } + + ref := reference{ + name: matches[1], + tag: matches[2], + } + if matches[3] != "" { + var err error + ref.digest, err = digest.ParseDigest(matches[3]) + if err != nil { + return nil, err + } + } + + r := getBestReferenceType(ref) + if r == nil { + return nil, ErrNameEmpty + } + + return r, nil +} + +// ParseNamed parses s and returns a syntactically valid reference implementing +// the Named interface. The reference must have a name, otherwise an error is +// returned. +// If an error was encountered it is returned, along with a nil Reference. +// NOTE: ParseNamed will not handle short digests. +func ParseNamed(s string) (Named, error) { + ref, err := Parse(s) + if err != nil { + return nil, err + } + named, isNamed := ref.(Named) + if !isNamed { + return nil, fmt.Errorf("reference %s has no name", ref.String()) + } + return named, nil +} + +// WithName returns a named object representing the given string. If the input +// is invalid ErrReferenceInvalidFormat will be returned. +func WithName(name string) (Named, error) { + if len(name) > NameTotalLengthMax { + return nil, ErrNameTooLong + } + if !anchoredNameRegexp.MatchString(name) { + return nil, ErrReferenceInvalidFormat + } + return repository(name), nil +} + +// WithTag combines the name from "name" and the tag from "tag" to form a +// reference incorporating both the name and the tag. +func WithTag(name Named, tag string) (NamedTagged, error) { + if !anchoredTagRegexp.MatchString(tag) { + return nil, ErrTagInvalidFormat + } + return taggedReference{ + name: name.Name(), + tag: tag, + }, nil +} + +// WithDigest combines the name from "name" and the digest from "digest" to form +// a reference incorporating both the name and the digest. +func WithDigest(name Named, digest digest.Digest) (Canonical, error) { + if !anchoredDigestRegexp.MatchString(digest.String()) { + return nil, ErrDigestInvalidFormat + } + return canonicalReference{ + name: name.Name(), + digest: digest, + }, nil +} + +func getBestReferenceType(ref reference) Reference { + if ref.name == "" { + // Allow digest only references + if ref.digest != "" { + return digestReference(ref.digest) + } + return nil + } + if ref.tag == "" { + if ref.digest != "" { + return canonicalReference{ + name: ref.name, + digest: ref.digest, + } + } + return repository(ref.name) + } + if ref.digest == "" { + return taggedReference{ + name: ref.name, + tag: ref.tag, + } + } + + return ref +} + +type reference struct { + name string + tag string + digest digest.Digest +} + +func (r reference) String() string { + return r.name + ":" + r.tag + "@" + r.digest.String() +} + +func (r reference) Name() string { + return r.name +} + +func (r reference) Tag() string { + return r.tag +} + +func (r reference) Digest() digest.Digest { + return r.digest +} + +type repository string + +func (r repository) String() string { + return string(r) +} + +func (r repository) Name() string { + return string(r) +} + +type digestReference digest.Digest + +func (d digestReference) String() string { + return d.String() +} + +func (d digestReference) Digest() digest.Digest { + return digest.Digest(d) +} + +type taggedReference struct { + name string + tag string +} + +func (t taggedReference) String() string { + return t.name + ":" + t.tag +} + +func (t taggedReference) Name() string { + return t.name +} + +func (t taggedReference) Tag() string { + return t.tag +} + +type canonicalReference struct { + name string + digest digest.Digest +} + +func (c canonicalReference) String() string { + return c.name + "@" + c.digest.String() +} + +func (c canonicalReference) Name() string { + return c.name +} + +func (c canonicalReference) Digest() digest.Digest { + return c.digest +} diff --git a/vendor/github.com/docker/distribution/reference/regexp.go b/vendor/github.com/docker/distribution/reference/regexp.go new file mode 100644 index 0000000000..9a7d366bc8 --- /dev/null +++ b/vendor/github.com/docker/distribution/reference/regexp.go @@ -0,0 +1,124 @@ +package reference + +import "regexp" + +var ( + // alphaNumericRegexp defines the alpha numeric atom, typically a + // component of names. This only allows lower case characters and digits. + alphaNumericRegexp = match(`[a-z0-9]+`) + + // separatorRegexp defines the separators allowed to be embedded in name + // components. This allow one period, one or two underscore and multiple + // dashes. + separatorRegexp = match(`(?:[._]|__|[-]*)`) + + // nameComponentRegexp restricts registry path component names to start + // with at least one letter or number, with following parts able to be + // separated by one period, one or two underscore and multiple dashes. + nameComponentRegexp = expression( + alphaNumericRegexp, + optional(repeated(separatorRegexp, alphaNumericRegexp))) + + // hostnameComponentRegexp restricts the registry hostname component of a + // repository name to start with a component as defined by hostnameRegexp + // and followed by an optional port. + hostnameComponentRegexp = match(`(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`) + + // hostnameRegexp defines the structure of potential hostname components + // that may be part of image names. This is purposely a subset of what is + // allowed by DNS to ensure backwards compatibility with Docker image + // names. + hostnameRegexp = expression( + hostnameComponentRegexp, + optional(repeated(literal(`.`), hostnameComponentRegexp)), + optional(literal(`:`), match(`[0-9]+`))) + + // TagRegexp matches valid tag names. From docker/docker:graph/tags.go. + TagRegexp = match(`[\w][\w.-]{0,127}`) + + // anchoredTagRegexp matches valid tag names, anchored at the start and + // end of the matched string. + anchoredTagRegexp = anchored(TagRegexp) + + // DigestRegexp matches valid digests. + DigestRegexp = match(`[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}`) + + // anchoredDigestRegexp matches valid digests, anchored at the start and + // end of the matched string. + anchoredDigestRegexp = anchored(DigestRegexp) + + // NameRegexp is the format for the name component of references. The + // regexp has capturing groups for the hostname and name part omitting + // the separating forward slash from either. + NameRegexp = expression( + optional(hostnameRegexp, literal(`/`)), + nameComponentRegexp, + optional(repeated(literal(`/`), nameComponentRegexp))) + + // anchoredNameRegexp is used to parse a name value, capturing the + // hostname and trailing components. + anchoredNameRegexp = anchored( + optional(capture(hostnameRegexp), literal(`/`)), + capture(nameComponentRegexp, + optional(repeated(literal(`/`), nameComponentRegexp)))) + + // ReferenceRegexp is the full supported format of a reference. The regexp + // is anchored and has capturing groups for name, tag, and digest + // components. + ReferenceRegexp = anchored(capture(NameRegexp), + optional(literal(":"), capture(TagRegexp)), + optional(literal("@"), capture(DigestRegexp))) +) + +// match compiles the string to a regular expression. +var match = regexp.MustCompile + +// literal compiles s into a literal regular expression, escaping any regexp +// reserved characters. +func literal(s string) *regexp.Regexp { + re := match(regexp.QuoteMeta(s)) + + if _, complete := re.LiteralPrefix(); !complete { + panic("must be a literal") + } + + return re +} + +// expression defines a full expression, where each regular expression must +// follow the previous. +func expression(res ...*regexp.Regexp) *regexp.Regexp { + var s string + for _, re := range res { + s += re.String() + } + + return match(s) +} + +// optional wraps the expression in a non-capturing group and makes the +// production optional. +func optional(res ...*regexp.Regexp) *regexp.Regexp { + return match(group(expression(res...)).String() + `?`) +} + +// repeated wraps the regexp in a non-capturing group to get one or more +// matches. +func repeated(res ...*regexp.Regexp) *regexp.Regexp { + return match(group(expression(res...)).String() + `+`) +} + +// group wraps the regexp in a non-capturing group. +func group(res ...*regexp.Regexp) *regexp.Regexp { + return match(`(?:` + expression(res...).String() + `)`) +} + +// capture wraps the expression in a capturing group. +func capture(res ...*regexp.Regexp) *regexp.Regexp { + return match(`(` + expression(res...).String() + `)`) +} + +// anchored anchors the regular expression by adding start and end delimiters. +func anchored(res ...*regexp.Regexp) *regexp.Regexp { + return match(`^` + expression(res...).String() + `$`) +} diff --git a/vendor/github.com/emicklei/go-restful/CHANGES.md b/vendor/github.com/emicklei/go-restful/CHANGES.md new file mode 100644 index 0000000000..070bca7cdc --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/CHANGES.md @@ -0,0 +1,163 @@ +Change history of go-restful += +2016-02-14 +- take the qualify factor of the Accept header mediatype into account when deciding the contentype of the response +- add constructors for custom entity accessors for xml and json + +2015-09-27 +- rename new WriteStatusAnd... to WriteHeaderAnd... for consistency + +2015-09-25 +- fixed problem with changing Header after WriteHeader (issue 235) + +2015-09-14 +- changed behavior of WriteHeader (immediate write) and WriteEntity (no status write) +- added support for custom EntityReaderWriters. + +2015-08-06 +- add support for reading entities from compressed request content +- use sync.Pool for compressors of http response and request body +- add Description to Parameter for documentation in Swagger UI + +2015-03-20 +- add configurable logging + +2015-03-18 +- if not specified, the Operation is derived from the Route function + +2015-03-17 +- expose Parameter creation functions +- make trace logger an interface +- fix OPTIONSFilter +- customize rendering of ServiceError +- JSR311 router now handles wildcards +- add Notes to Route + +2014-11-27 +- (api add) PrettyPrint per response. (as proposed in #167) + +2014-11-12 +- (api add) ApiVersion(.) for documentation in Swagger UI + +2014-11-10 +- (api change) struct fields tagged with "description" show up in Swagger UI + +2014-10-31 +- (api change) ReturnsError -> Returns +- (api add) RouteBuilder.Do(aBuilder) for DRY use of RouteBuilder +- fix swagger nested structs +- sort Swagger response messages by code + +2014-10-23 +- (api add) ReturnsError allows you to document Http codes in swagger +- fixed problem with greedy CurlyRouter +- (api add) Access-Control-Max-Age in CORS +- add tracing functionality (injectable) for debugging purposes +- support JSON parse 64bit int +- fix empty parameters for swagger +- WebServicesUrl is now optional for swagger +- fixed duplicate AccessControlAllowOrigin in CORS +- (api change) expose ServeMux in container +- (api add) added AllowedDomains in CORS +- (api add) ParameterNamed for detailed documentation + +2014-04-16 +- (api add) expose constructor of Request for testing. + +2014-06-27 +- (api add) ParameterNamed gives access to a Parameter definition and its data (for further specification). +- (api add) SetCacheReadEntity allow scontrol over whether or not the request body is being cached (default true for compatibility reasons). + +2014-07-03 +- (api add) CORS can be configured with a list of allowed domains + +2014-03-12 +- (api add) Route path parameters can use wildcard or regular expressions. (requires CurlyRouter) + +2014-02-26 +- (api add) Request now provides information about the matched Route, see method SelectedRoutePath + +2014-02-17 +- (api change) renamed parameter constants (go-lint checks) + +2014-01-10 + - (api add) support for CloseNotify, see http://golang.org/pkg/net/http/#CloseNotifier + +2014-01-07 + - (api change) Write* methods in Response now return the error or nil. + - added example of serving HTML from a Go template. + - fixed comparing Allowed headers in CORS (is now case-insensitive) + +2013-11-13 + - (api add) Response knows how many bytes are written to the response body. + +2013-10-29 + - (api add) RecoverHandler(handler RecoverHandleFunction) to change how panic recovery is handled. Default behavior is to log and return a stacktrace. This may be a security issue as it exposes sourcecode information. + +2013-10-04 + - (api add) Response knows what HTTP status has been written + - (api add) Request can have attributes (map of string->interface, also called request-scoped variables + +2013-09-12 + - (api change) Router interface simplified + - Implemented CurlyRouter, a Router that does not use|allow regular expressions in paths + +2013-08-05 + - add OPTIONS support + - add CORS support + +2013-08-27 + - fixed some reported issues (see github) + - (api change) deprecated use of WriteError; use WriteErrorString instead + +2014-04-15 + - (fix) v1.0.1 tag: fix Issue 111: WriteErrorString + +2013-08-08 + - (api add) Added implementation Container: a WebServices collection with its own http.ServeMux allowing multiple endpoints per program. Existing uses of go-restful will register their services to the DefaultContainer. + - (api add) the swagger package has be extended to have a UI per container. + - if panic is detected then a small stack trace is printed (thanks to runner-mei) + - (api add) WriteErrorString to Response + +Important API changes: + + - (api remove) package variable DoNotRecover no longer works ; use restful.DefaultContainer.DoNotRecover(true) instead. + - (api remove) package variable EnableContentEncoding no longer works ; use restful.DefaultContainer.EnableContentEncoding(true) instead. + + +2013-07-06 + + - (api add) Added support for response encoding (gzip and deflate(zlib)). This feature is disabled on default (for backwards compatibility). Use restful.EnableContentEncoding = true in your initialization to enable this feature. + +2013-06-19 + + - (improve) DoNotRecover option, moved request body closer, improved ReadEntity + +2013-06-03 + + - (api change) removed Dispatcher interface, hide PathExpression + - changed receiver names of type functions to be more idiomatic Go + +2013-06-02 + + - (optimize) Cache the RegExp compilation of Paths. + +2013-05-22 + + - (api add) Added support for request/response filter functions + +2013-05-18 + + + - (api add) Added feature to change the default Http Request Dispatch function (travis cline) + - (api change) Moved Swagger Webservice to swagger package (see example restful-user) + +[2012-11-14 .. 2013-05-18> + + - See https://github.com/emicklei/go-restful/commits + +2012-11-14 + + - Initial commit + + diff --git a/vendor/github.com/emicklei/go-restful/LICENSE b/vendor/github.com/emicklei/go-restful/LICENSE new file mode 100644 index 0000000000..ece7ec61ef --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2012,2013 Ernest Micklei + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/Srcfile b/vendor/github.com/emicklei/go-restful/Srcfile new file mode 100644 index 0000000000..16fd186892 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/Srcfile @@ -0,0 +1 @@ +{"SkipDirs": ["examples"]} diff --git a/vendor/github.com/emicklei/go-restful/compress.go b/vendor/github.com/emicklei/go-restful/compress.go new file mode 100644 index 0000000000..220b37712f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compress.go @@ -0,0 +1,123 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bufio" + "compress/gzip" + "compress/zlib" + "errors" + "io" + "net" + "net/http" + "strings" +) + +// OBSOLETE : use restful.DefaultContainer.EnableContentEncoding(true) to change this setting. +var EnableContentEncoding = false + +// CompressingResponseWriter is a http.ResponseWriter that can perform content encoding (gzip and zlib) +type CompressingResponseWriter struct { + writer http.ResponseWriter + compressor io.WriteCloser + encoding string +} + +// Header is part of http.ResponseWriter interface +func (c *CompressingResponseWriter) Header() http.Header { + return c.writer.Header() +} + +// WriteHeader is part of http.ResponseWriter interface +func (c *CompressingResponseWriter) WriteHeader(status int) { + c.writer.WriteHeader(status) +} + +// Write is part of http.ResponseWriter interface +// It is passed through the compressor +func (c *CompressingResponseWriter) Write(bytes []byte) (int, error) { + if c.isCompressorClosed() { + return -1, errors.New("Compressing error: tried to write data using closed compressor") + } + return c.compressor.Write(bytes) +} + +// CloseNotify is part of http.CloseNotifier interface +func (c *CompressingResponseWriter) CloseNotify() <-chan bool { + return c.writer.(http.CloseNotifier).CloseNotify() +} + +// Close the underlying compressor +func (c *CompressingResponseWriter) Close() error { + if c.isCompressorClosed() { + return errors.New("Compressing error: tried to close already closed compressor") + } + + c.compressor.Close() + if ENCODING_GZIP == c.encoding { + currentCompressorProvider.ReleaseGzipWriter(c.compressor.(*gzip.Writer)) + } + if ENCODING_DEFLATE == c.encoding { + currentCompressorProvider.ReleaseZlibWriter(c.compressor.(*zlib.Writer)) + } + // gc hint needed? + c.compressor = nil + return nil +} + +func (c *CompressingResponseWriter) isCompressorClosed() bool { + return nil == c.compressor +} + +// Hijack implements the Hijacker interface +// This is especially useful when combining Container.EnabledContentEncoding +// in combination with websockets (for instance gorilla/websocket) +func (c *CompressingResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + hijacker, ok := c.writer.(http.Hijacker) + if !ok { + return nil, nil, errors.New("ResponseWriter doesn't support Hijacker interface") + } + return hijacker.Hijack() +} + +// WantsCompressedResponse reads the Accept-Encoding header to see if and which encoding is requested. +func wantsCompressedResponse(httpRequest *http.Request) (bool, string) { + header := httpRequest.Header.Get(HEADER_AcceptEncoding) + gi := strings.Index(header, ENCODING_GZIP) + zi := strings.Index(header, ENCODING_DEFLATE) + // use in order of appearance + if gi == -1 { + return zi != -1, ENCODING_DEFLATE + } else if zi == -1 { + return gi != -1, ENCODING_GZIP + } else { + if gi < zi { + return true, ENCODING_GZIP + } + return true, ENCODING_DEFLATE + } +} + +// NewCompressingResponseWriter create a CompressingResponseWriter for a known encoding = {gzip,deflate} +func NewCompressingResponseWriter(httpWriter http.ResponseWriter, encoding string) (*CompressingResponseWriter, error) { + httpWriter.Header().Set(HEADER_ContentEncoding, encoding) + c := new(CompressingResponseWriter) + c.writer = httpWriter + var err error + if ENCODING_GZIP == encoding { + w := currentCompressorProvider.AcquireGzipWriter() + w.Reset(httpWriter) + c.compressor = w + c.encoding = ENCODING_GZIP + } else if ENCODING_DEFLATE == encoding { + w := currentCompressorProvider.AcquireZlibWriter() + w.Reset(httpWriter) + c.compressor = w + c.encoding = ENCODING_DEFLATE + } else { + return nil, errors.New("Unknown encoding:" + encoding) + } + return c, err +} diff --git a/vendor/github.com/emicklei/go-restful/compressor_cache.go b/vendor/github.com/emicklei/go-restful/compressor_cache.go new file mode 100644 index 0000000000..ee426010a2 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressor_cache.go @@ -0,0 +1,103 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "compress/gzip" + "compress/zlib" +) + +// BoundedCachedCompressors is a CompressorProvider that uses a cache with a fixed amount +// of writers and readers (resources). +// If a new resource is acquired and all are in use, it will return a new unmanaged resource. +type BoundedCachedCompressors struct { + gzipWriters chan *gzip.Writer + gzipReaders chan *gzip.Reader + zlibWriters chan *zlib.Writer + writersCapacity int + readersCapacity int +} + +// NewBoundedCachedCompressors returns a new, with filled cache, BoundedCachedCompressors. +func NewBoundedCachedCompressors(writersCapacity, readersCapacity int) *BoundedCachedCompressors { + b := &BoundedCachedCompressors{ + gzipWriters: make(chan *gzip.Writer, writersCapacity), + gzipReaders: make(chan *gzip.Reader, readersCapacity), + zlibWriters: make(chan *zlib.Writer, writersCapacity), + writersCapacity: writersCapacity, + readersCapacity: readersCapacity, + } + for ix := 0; ix < writersCapacity; ix++ { + b.gzipWriters <- newGzipWriter() + b.zlibWriters <- newZlibWriter() + } + for ix := 0; ix < readersCapacity; ix++ { + b.gzipReaders <- newGzipReader() + } + return b +} + +// AcquireGzipWriter returns an resettable *gzip.Writer. Needs to be released. +func (b *BoundedCachedCompressors) AcquireGzipWriter() *gzip.Writer { + var writer *gzip.Writer + select { + case writer, _ = <-b.gzipWriters: + default: + // return a new unmanaged one + writer = newGzipWriter() + } + return writer +} + +// ReleaseGzipWriter accepts a writer (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseGzipWriter(w *gzip.Writer) { + // forget the unmanaged ones + if len(b.gzipWriters) < b.writersCapacity { + b.gzipWriters <- w + } +} + +// AcquireGzipReader returns a *gzip.Reader. Needs to be released. +func (b *BoundedCachedCompressors) AcquireGzipReader() *gzip.Reader { + var reader *gzip.Reader + select { + case reader, _ = <-b.gzipReaders: + default: + // return a new unmanaged one + reader = newGzipReader() + } + return reader +} + +// ReleaseGzipReader accepts a reader (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseGzipReader(r *gzip.Reader) { + // forget the unmanaged ones + if len(b.gzipReaders) < b.readersCapacity { + b.gzipReaders <- r + } +} + +// AcquireZlibWriter returns an resettable *zlib.Writer. Needs to be released. +func (b *BoundedCachedCompressors) AcquireZlibWriter() *zlib.Writer { + var writer *zlib.Writer + select { + case writer, _ = <-b.zlibWriters: + default: + // return a new unmanaged one + writer = newZlibWriter() + } + return writer +} + +// ReleaseZlibWriter accepts a writer (does not have to be one that was cached) +// only when the cache has room for it. It will ignore it otherwise. +func (b *BoundedCachedCompressors) ReleaseZlibWriter(w *zlib.Writer) { + // forget the unmanaged ones + if len(b.zlibWriters) < b.writersCapacity { + b.zlibWriters <- w + } +} diff --git a/vendor/github.com/emicklei/go-restful/compressor_pools.go b/vendor/github.com/emicklei/go-restful/compressor_pools.go new file mode 100644 index 0000000000..d866ce64bb --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressor_pools.go @@ -0,0 +1,91 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "compress/gzip" + "compress/zlib" + "sync" +) + +// SyncPoolCompessors is a CompressorProvider that use the standard sync.Pool. +type SyncPoolCompessors struct { + GzipWriterPool *sync.Pool + GzipReaderPool *sync.Pool + ZlibWriterPool *sync.Pool +} + +// NewSyncPoolCompessors returns a new ("empty") SyncPoolCompessors. +func NewSyncPoolCompessors() *SyncPoolCompessors { + return &SyncPoolCompessors{ + GzipWriterPool: &sync.Pool{ + New: func() interface{} { return newGzipWriter() }, + }, + GzipReaderPool: &sync.Pool{ + New: func() interface{} { return newGzipReader() }, + }, + ZlibWriterPool: &sync.Pool{ + New: func() interface{} { return newZlibWriter() }, + }, + } +} + +func (s *SyncPoolCompessors) AcquireGzipWriter() *gzip.Writer { + return s.GzipWriterPool.Get().(*gzip.Writer) +} + +func (s *SyncPoolCompessors) ReleaseGzipWriter(w *gzip.Writer) { + s.GzipWriterPool.Put(w) +} + +func (s *SyncPoolCompessors) AcquireGzipReader() *gzip.Reader { + return s.GzipReaderPool.Get().(*gzip.Reader) +} + +func (s *SyncPoolCompessors) ReleaseGzipReader(r *gzip.Reader) { + s.GzipReaderPool.Put(r) +} + +func (s *SyncPoolCompessors) AcquireZlibWriter() *zlib.Writer { + return s.ZlibWriterPool.Get().(*zlib.Writer) +} + +func (s *SyncPoolCompessors) ReleaseZlibWriter(w *zlib.Writer) { + s.ZlibWriterPool.Put(w) +} + +func newGzipWriter() *gzip.Writer { + // create with an empty bytes writer; it will be replaced before using the gzipWriter + writer, err := gzip.NewWriterLevel(new(bytes.Buffer), gzip.BestSpeed) + if err != nil { + panic(err.Error()) + } + return writer +} + +func newGzipReader() *gzip.Reader { + // create with an empty reader (but with GZIP header); it will be replaced before using the gzipReader + // we can safely use currentCompressProvider because it is set on package initialization. + w := currentCompressorProvider.AcquireGzipWriter() + defer currentCompressorProvider.ReleaseGzipWriter(w) + b := new(bytes.Buffer) + w.Reset(b) + w.Flush() + w.Close() + reader, err := gzip.NewReader(bytes.NewReader(b.Bytes())) + if err != nil { + panic(err.Error()) + } + return reader +} + +func newZlibWriter() *zlib.Writer { + writer, err := zlib.NewWriterLevel(new(bytes.Buffer), gzip.BestSpeed) + if err != nil { + panic(err.Error()) + } + return writer +} diff --git a/vendor/github.com/emicklei/go-restful/compressors.go b/vendor/github.com/emicklei/go-restful/compressors.go new file mode 100644 index 0000000000..f028456e0f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/compressors.go @@ -0,0 +1,53 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "compress/gzip" + "compress/zlib" +) + +type CompressorProvider interface { + // Returns a *gzip.Writer which needs to be released later. + // Before using it, call Reset(). + AcquireGzipWriter() *gzip.Writer + + // Releases an aqcuired *gzip.Writer. + ReleaseGzipWriter(w *gzip.Writer) + + // Returns a *gzip.Reader which needs to be released later. + AcquireGzipReader() *gzip.Reader + + // Releases an aqcuired *gzip.Reader. + ReleaseGzipReader(w *gzip.Reader) + + // Returns a *zlib.Writer which needs to be released later. + // Before using it, call Reset(). + AcquireZlibWriter() *zlib.Writer + + // Releases an aqcuired *zlib.Writer. + ReleaseZlibWriter(w *zlib.Writer) +} + +// DefaultCompressorProvider is the actual provider of compressors (zlib or gzip). +var currentCompressorProvider CompressorProvider + +func init() { + currentCompressorProvider = NewSyncPoolCompessors() +} + +// CurrentCompressorProvider returns the current CompressorProvider. +// It is initialized using a SyncPoolCompessors. +func CurrentCompressorProvider() CompressorProvider { + return currentCompressorProvider +} + +// CompressorProvider sets the actual provider of compressors (zlib or gzip). +func SetCompressorProvider(p CompressorProvider) { + if p == nil { + panic("cannot set compressor provider to nil") + } + currentCompressorProvider = p +} diff --git a/vendor/github.com/emicklei/go-restful/constants.go b/vendor/github.com/emicklei/go-restful/constants.go new file mode 100644 index 0000000000..203439c5e5 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/constants.go @@ -0,0 +1,30 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +const ( + MIME_XML = "application/xml" // Accept or Content-Type used in Consumes() and/or Produces() + MIME_JSON = "application/json" // Accept or Content-Type used in Consumes() and/or Produces() + MIME_OCTET = "application/octet-stream" // If Content-Type is not present in request, use the default + + HEADER_Allow = "Allow" + HEADER_Accept = "Accept" + HEADER_Origin = "Origin" + HEADER_ContentType = "Content-Type" + HEADER_LastModified = "Last-Modified" + HEADER_AcceptEncoding = "Accept-Encoding" + HEADER_ContentEncoding = "Content-Encoding" + HEADER_AccessControlExposeHeaders = "Access-Control-Expose-Headers" + HEADER_AccessControlRequestMethod = "Access-Control-Request-Method" + HEADER_AccessControlRequestHeaders = "Access-Control-Request-Headers" + HEADER_AccessControlAllowMethods = "Access-Control-Allow-Methods" + HEADER_AccessControlAllowOrigin = "Access-Control-Allow-Origin" + HEADER_AccessControlAllowCredentials = "Access-Control-Allow-Credentials" + HEADER_AccessControlAllowHeaders = "Access-Control-Allow-Headers" + HEADER_AccessControlMaxAge = "Access-Control-Max-Age" + + ENCODING_GZIP = "gzip" + ENCODING_DEFLATE = "deflate" +) diff --git a/vendor/github.com/emicklei/go-restful/container.go b/vendor/github.com/emicklei/go-restful/container.go new file mode 100644 index 0000000000..4e53cccb93 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/container.go @@ -0,0 +1,361 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "errors" + "fmt" + "net/http" + "os" + "runtime" + "strings" + "sync" + + "github.com/emicklei/go-restful/log" +) + +// Container holds a collection of WebServices and a http.ServeMux to dispatch http requests. +// The requests are further dispatched to routes of WebServices using a RouteSelector +type Container struct { + webServicesLock sync.RWMutex + webServices []*WebService + ServeMux *http.ServeMux + isRegisteredOnRoot bool + containerFilters []FilterFunction + doNotRecover bool // default is false + recoverHandleFunc RecoverHandleFunction + serviceErrorHandleFunc ServiceErrorHandleFunction + router RouteSelector // default is a RouterJSR311, CurlyRouter is the faster alternative + contentEncodingEnabled bool // default is false +} + +// NewContainer creates a new Container using a new ServeMux and default router (RouterJSR311) +func NewContainer() *Container { + return &Container{ + webServices: []*WebService{}, + ServeMux: http.NewServeMux(), + isRegisteredOnRoot: false, + containerFilters: []FilterFunction{}, + doNotRecover: false, + recoverHandleFunc: logStackOnRecover, + serviceErrorHandleFunc: writeServiceError, + router: RouterJSR311{}, + contentEncodingEnabled: false} +} + +// RecoverHandleFunction declares functions that can be used to handle a panic situation. +// The first argument is what recover() returns. The second must be used to communicate an error response. +type RecoverHandleFunction func(interface{}, http.ResponseWriter) + +// RecoverHandler changes the default function (logStackOnRecover) to be called +// when a panic is detected. DoNotRecover must be have its default value (=false). +func (c *Container) RecoverHandler(handler RecoverHandleFunction) { + c.recoverHandleFunc = handler +} + +// ServiceErrorHandleFunction declares functions that can be used to handle a service error situation. +// The first argument is the service error, the second is the request that resulted in the error and +// the third must be used to communicate an error response. +type ServiceErrorHandleFunction func(ServiceError, *Request, *Response) + +// ServiceErrorHandler changes the default function (writeServiceError) to be called +// when a ServiceError is detected. +func (c *Container) ServiceErrorHandler(handler ServiceErrorHandleFunction) { + c.serviceErrorHandleFunc = handler +} + +// DoNotRecover controls whether panics will be caught to return HTTP 500. +// If set to true, Route functions are responsible for handling any error situation. +// Default value is false = recover from panics. This has performance implications. +func (c *Container) DoNotRecover(doNot bool) { + c.doNotRecover = doNot +} + +// Router changes the default Router (currently RouterJSR311) +func (c *Container) Router(aRouter RouteSelector) { + c.router = aRouter +} + +// EnableContentEncoding (default=false) allows for GZIP or DEFLATE encoding of responses. +func (c *Container) EnableContentEncoding(enabled bool) { + c.contentEncodingEnabled = enabled +} + +// Add a WebService to the Container. It will detect duplicate root paths and exit in that case. +func (c *Container) Add(service *WebService) *Container { + c.webServicesLock.Lock() + defer c.webServicesLock.Unlock() + + // if rootPath was not set then lazy initialize it + if len(service.rootPath) == 0 { + service.Path("/") + } + + // cannot have duplicate root paths + for _, each := range c.webServices { + if each.RootPath() == service.RootPath() { + log.Printf("[restful] WebService with duplicate root path detected:['%v']", each) + os.Exit(1) + } + } + + // If not registered on root then add specific mapping + if !c.isRegisteredOnRoot { + c.isRegisteredOnRoot = c.addHandler(service, c.ServeMux) + } + c.webServices = append(c.webServices, service) + return c +} + +// addHandler may set a new HandleFunc for the serveMux +// this function must run inside the critical region protected by the webServicesLock. +// returns true if the function was registered on root ("/") +func (c *Container) addHandler(service *WebService, serveMux *http.ServeMux) bool { + pattern := fixedPrefixPath(service.RootPath()) + // check if root path registration is needed + if "/" == pattern || "" == pattern { + serveMux.HandleFunc("/", c.dispatch) + return true + } + // detect if registration already exists + alreadyMapped := false + for _, each := range c.webServices { + if each.RootPath() == service.RootPath() { + alreadyMapped = true + break + } + } + if !alreadyMapped { + serveMux.HandleFunc(pattern, c.dispatch) + if !strings.HasSuffix(pattern, "/") { + serveMux.HandleFunc(pattern+"/", c.dispatch) + } + } + return false +} + +func (c *Container) Remove(ws *WebService) error { + if c.ServeMux == http.DefaultServeMux { + errMsg := fmt.Sprintf("[restful] cannot remove a WebService from a Container using the DefaultServeMux: ['%v']", ws) + log.Printf(errMsg) + return errors.New(errMsg) + } + c.webServicesLock.Lock() + defer c.webServicesLock.Unlock() + // build a new ServeMux and re-register all WebServices + newServeMux := http.NewServeMux() + newServices := []*WebService{} + newIsRegisteredOnRoot := false + for _, each := range c.webServices { + if each.rootPath != ws.rootPath { + // If not registered on root then add specific mapping + if !newIsRegisteredOnRoot { + newIsRegisteredOnRoot = c.addHandler(each, newServeMux) + } + newServices = append(newServices, each) + } + } + c.webServices, c.ServeMux, c.isRegisteredOnRoot = newServices, newServeMux, newIsRegisteredOnRoot + return nil +} + +// logStackOnRecover is the default RecoverHandleFunction and is called +// when DoNotRecover is false and the recoverHandleFunc is not set for the container. +// Default implementation logs the stacktrace and writes the stacktrace on the response. +// This may be a security issue as it exposes sourcecode information. +func logStackOnRecover(panicReason interface{}, httpWriter http.ResponseWriter) { + var buffer bytes.Buffer + buffer.WriteString(fmt.Sprintf("[restful] recover from panic situation: - %v\r\n", panicReason)) + for i := 2; ; i += 1 { + _, file, line, ok := runtime.Caller(i) + if !ok { + break + } + buffer.WriteString(fmt.Sprintf(" %s:%d\r\n", file, line)) + } + log.Print(buffer.String()) + httpWriter.WriteHeader(http.StatusInternalServerError) + httpWriter.Write(buffer.Bytes()) +} + +// writeServiceError is the default ServiceErrorHandleFunction and is called +// when a ServiceError is returned during route selection. Default implementation +// calls resp.WriteErrorString(err.Code, err.Message) +func writeServiceError(err ServiceError, req *Request, resp *Response) { + resp.WriteErrorString(err.Code, err.Message) +} + +// Dispatch the incoming Http Request to a matching WebService. +func (c *Container) dispatch(httpWriter http.ResponseWriter, httpRequest *http.Request) { + writer := httpWriter + + // CompressingResponseWriter should be closed after all operations are done + defer func() { + if compressWriter, ok := writer.(*CompressingResponseWriter); ok { + compressWriter.Close() + } + }() + + // Instal panic recovery unless told otherwise + if !c.doNotRecover { // catch all for 500 response + defer func() { + if r := recover(); r != nil { + c.recoverHandleFunc(r, writer) + return + } + }() + } + // Install closing the request body (if any) + defer func() { + if nil != httpRequest.Body { + httpRequest.Body.Close() + } + }() + + // Detect if compression is needed + // assume without compression, test for override + if c.contentEncodingEnabled { + doCompress, encoding := wantsCompressedResponse(httpRequest) + if doCompress { + var err error + writer, err = NewCompressingResponseWriter(httpWriter, encoding) + if err != nil { + log.Print("[restful] unable to install compressor: ", err) + httpWriter.WriteHeader(http.StatusInternalServerError) + return + } + } + } + // Find best match Route ; err is non nil if no match was found + var webService *WebService + var route *Route + var err error + func() { + c.webServicesLock.RLock() + defer c.webServicesLock.RUnlock() + webService, route, err = c.router.SelectRoute( + c.webServices, + httpRequest) + }() + if err != nil { + // a non-200 response has already been written + // run container filters anyway ; they should not touch the response... + chain := FilterChain{Filters: c.containerFilters, Target: func(req *Request, resp *Response) { + switch err.(type) { + case ServiceError: + ser := err.(ServiceError) + c.serviceErrorHandleFunc(ser, req, resp) + } + // TODO + }} + chain.ProcessFilter(NewRequest(httpRequest), NewResponse(writer)) + return + } + wrappedRequest, wrappedResponse := route.wrapRequestResponse(writer, httpRequest) + // pass through filters (if any) + if len(c.containerFilters)+len(webService.filters)+len(route.Filters) > 0 { + // compose filter chain + allFilters := []FilterFunction{} + allFilters = append(allFilters, c.containerFilters...) + allFilters = append(allFilters, webService.filters...) + allFilters = append(allFilters, route.Filters...) + chain := FilterChain{Filters: allFilters, Target: func(req *Request, resp *Response) { + // handle request by route after passing all filters + route.Function(wrappedRequest, wrappedResponse) + }} + chain.ProcessFilter(wrappedRequest, wrappedResponse) + } else { + // no filters, handle request by route + route.Function(wrappedRequest, wrappedResponse) + } +} + +// fixedPrefixPath returns the fixed part of the partspec ; it may include template vars {} +func fixedPrefixPath(pathspec string) string { + varBegin := strings.Index(pathspec, "{") + if -1 == varBegin { + return pathspec + } + return pathspec[:varBegin] +} + +// ServeHTTP implements net/http.Handler therefore a Container can be a Handler in a http.Server +func (c *Container) ServeHTTP(httpwriter http.ResponseWriter, httpRequest *http.Request) { + c.ServeMux.ServeHTTP(httpwriter, httpRequest) +} + +// Handle registers the handler for the given pattern. If a handler already exists for pattern, Handle panics. +func (c *Container) Handle(pattern string, handler http.Handler) { + c.ServeMux.Handle(pattern, handler) +} + +// HandleWithFilter registers the handler for the given pattern. +// Container's filter chain is applied for handler. +// If a handler already exists for pattern, HandleWithFilter panics. +func (c *Container) HandleWithFilter(pattern string, handler http.Handler) { + f := func(httpResponse http.ResponseWriter, httpRequest *http.Request) { + if len(c.containerFilters) == 0 { + handler.ServeHTTP(httpResponse, httpRequest) + return + } + + chain := FilterChain{Filters: c.containerFilters, Target: func(req *Request, resp *Response) { + handler.ServeHTTP(httpResponse, httpRequest) + }} + chain.ProcessFilter(NewRequest(httpRequest), NewResponse(httpResponse)) + } + + c.Handle(pattern, http.HandlerFunc(f)) +} + +// Filter appends a container FilterFunction. These are called before dispatching +// a http.Request to a WebService from the container +func (c *Container) Filter(filter FilterFunction) { + c.containerFilters = append(c.containerFilters, filter) +} + +// RegisteredWebServices returns the collections of added WebServices +func (c *Container) RegisteredWebServices() []*WebService { + c.webServicesLock.RLock() + defer c.webServicesLock.RUnlock() + result := make([]*WebService, len(c.webServices)) + for ix := range c.webServices { + result[ix] = c.webServices[ix] + } + return result +} + +// computeAllowedMethods returns a list of HTTP methods that are valid for a Request +func (c *Container) computeAllowedMethods(req *Request) []string { + // Go through all RegisteredWebServices() and all its Routes to collect the options + methods := []string{} + requestPath := req.Request.URL.Path + for _, ws := range c.RegisteredWebServices() { + matches := ws.pathExpr.Matcher.FindStringSubmatch(requestPath) + if matches != nil { + finalMatch := matches[len(matches)-1] + for _, rt := range ws.Routes() { + matches := rt.pathExpr.Matcher.FindStringSubmatch(finalMatch) + if matches != nil { + lastMatch := matches[len(matches)-1] + if lastMatch == "" || lastMatch == "/" { // do not include if value is neither empty nor ‘/’. + methods = append(methods, rt.Method) + } + } + } + } + } + // methods = append(methods, "OPTIONS") not sure about this + return methods +} + +// newBasicRequestResponse creates a pair of Request,Response from its http versions. +// It is basic because no parameter or (produces) content-type information is given. +func newBasicRequestResponse(httpWriter http.ResponseWriter, httpRequest *http.Request) (*Request, *Response) { + resp := NewResponse(httpWriter) + resp.requestAccept = httpRequest.Header.Get(HEADER_Accept) + return NewRequest(httpRequest), resp +} diff --git a/vendor/github.com/emicklei/go-restful/cors_filter.go b/vendor/github.com/emicklei/go-restful/cors_filter.go new file mode 100644 index 0000000000..1efeef072d --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/cors_filter.go @@ -0,0 +1,202 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "regexp" + "strconv" + "strings" +) + +// CrossOriginResourceSharing is used to create a Container Filter that implements CORS. +// Cross-origin resource sharing (CORS) is a mechanism that allows JavaScript on a web page +// to make XMLHttpRequests to another domain, not the domain the JavaScript originated from. +// +// http://en.wikipedia.org/wiki/Cross-origin_resource_sharing +// http://enable-cors.org/server.html +// http://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request +type CrossOriginResourceSharing struct { + ExposeHeaders []string // list of Header names + AllowedHeaders []string // list of Header names + AllowedDomains []string // list of allowed values for Http Origin. An allowed value can be a regular expression to support subdomain matching. If empty all are allowed. + AllowedMethods []string + MaxAge int // number of seconds before requiring new Options request + CookiesAllowed bool + Container *Container + + allowedOriginPatterns []*regexp.Regexp // internal field for origin regexp check. +} + +// Filter is a filter function that implements the CORS flow as documented on http://enable-cors.org/server.html +// and http://www.html5rocks.com/static/images/cors_server_flowchart.png +func (c CrossOriginResourceSharing) Filter(req *Request, resp *Response, chain *FilterChain) { + origin := req.Request.Header.Get(HEADER_Origin) + if len(origin) == 0 { + if trace { + traceLogger.Print("no Http header Origin set") + } + chain.ProcessFilter(req, resp) + return + } + if !c.isOriginAllowed(origin) { // check whether this origin is allowed + if trace { + traceLogger.Printf("HTTP Origin:%s is not part of %v, neither matches any part of %v", origin, c.AllowedDomains, c.allowedOriginPatterns) + } + chain.ProcessFilter(req, resp) + return + } + if req.Request.Method != "OPTIONS" { + c.doActualRequest(req, resp) + chain.ProcessFilter(req, resp) + return + } + if acrm := req.Request.Header.Get(HEADER_AccessControlRequestMethod); acrm != "" { + c.doPreflightRequest(req, resp) + } else { + c.doActualRequest(req, resp) + chain.ProcessFilter(req, resp) + return + } +} + +func (c CrossOriginResourceSharing) doActualRequest(req *Request, resp *Response) { + c.setOptionsHeaders(req, resp) + // continue processing the response +} + +func (c *CrossOriginResourceSharing) doPreflightRequest(req *Request, resp *Response) { + if len(c.AllowedMethods) == 0 { + if c.Container == nil { + c.AllowedMethods = DefaultContainer.computeAllowedMethods(req) + } else { + c.AllowedMethods = c.Container.computeAllowedMethods(req) + } + } + + acrm := req.Request.Header.Get(HEADER_AccessControlRequestMethod) + if !c.isValidAccessControlRequestMethod(acrm, c.AllowedMethods) { + if trace { + traceLogger.Printf("Http header %s:%s is not in %v", + HEADER_AccessControlRequestMethod, + acrm, + c.AllowedMethods) + } + return + } + acrhs := req.Request.Header.Get(HEADER_AccessControlRequestHeaders) + if len(acrhs) > 0 { + for _, each := range strings.Split(acrhs, ",") { + if !c.isValidAccessControlRequestHeader(strings.Trim(each, " ")) { + if trace { + traceLogger.Printf("Http header %s:%s is not in %v", + HEADER_AccessControlRequestHeaders, + acrhs, + c.AllowedHeaders) + } + return + } + } + } + resp.AddHeader(HEADER_AccessControlAllowMethods, strings.Join(c.AllowedMethods, ",")) + resp.AddHeader(HEADER_AccessControlAllowHeaders, acrhs) + c.setOptionsHeaders(req, resp) + + // return http 200 response, no body +} + +func (c CrossOriginResourceSharing) setOptionsHeaders(req *Request, resp *Response) { + c.checkAndSetExposeHeaders(resp) + c.setAllowOriginHeader(req, resp) + c.checkAndSetAllowCredentials(resp) + if c.MaxAge > 0 { + resp.AddHeader(HEADER_AccessControlMaxAge, strconv.Itoa(c.MaxAge)) + } +} + +func (c CrossOriginResourceSharing) isOriginAllowed(origin string) bool { + if len(origin) == 0 { + return false + } + if len(c.AllowedDomains) == 0 { + return true + } + + allowed := false + for _, domain := range c.AllowedDomains { + if domain == origin { + allowed = true + break + } + } + + if !allowed { + if len(c.allowedOriginPatterns) == 0 { + // compile allowed domains to allowed origin patterns + allowedOriginRegexps, err := compileRegexps(c.AllowedDomains) + if err != nil { + return false + } + c.allowedOriginPatterns = allowedOriginRegexps + } + + for _, pattern := range c.allowedOriginPatterns { + if allowed = pattern.MatchString(origin); allowed { + break + } + } + } + + return allowed +} + +func (c CrossOriginResourceSharing) setAllowOriginHeader(req *Request, resp *Response) { + origin := req.Request.Header.Get(HEADER_Origin) + if c.isOriginAllowed(origin) { + resp.AddHeader(HEADER_AccessControlAllowOrigin, origin) + } +} + +func (c CrossOriginResourceSharing) checkAndSetExposeHeaders(resp *Response) { + if len(c.ExposeHeaders) > 0 { + resp.AddHeader(HEADER_AccessControlExposeHeaders, strings.Join(c.ExposeHeaders, ",")) + } +} + +func (c CrossOriginResourceSharing) checkAndSetAllowCredentials(resp *Response) { + if c.CookiesAllowed { + resp.AddHeader(HEADER_AccessControlAllowCredentials, "true") + } +} + +func (c CrossOriginResourceSharing) isValidAccessControlRequestMethod(method string, allowedMethods []string) bool { + for _, each := range allowedMethods { + if each == method { + return true + } + } + return false +} + +func (c CrossOriginResourceSharing) isValidAccessControlRequestHeader(header string) bool { + for _, each := range c.AllowedHeaders { + if strings.ToLower(each) == strings.ToLower(header) { + return true + } + } + return false +} + +// Take a list of strings and compile them into a list of regular expressions. +func compileRegexps(regexpStrings []string) ([]*regexp.Regexp, error) { + regexps := []*regexp.Regexp{} + for _, regexpStr := range regexpStrings { + r, err := regexp.Compile(regexpStr) + if err != nil { + return regexps, err + } + regexps = append(regexps, r) + } + return regexps, nil +} diff --git a/vendor/github.com/emicklei/go-restful/curly.go b/vendor/github.com/emicklei/go-restful/curly.go new file mode 100644 index 0000000000..185300dbc7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/curly.go @@ -0,0 +1,162 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "net/http" + "regexp" + "sort" + "strings" +) + +// CurlyRouter expects Routes with paths that contain zero or more parameters in curly brackets. +type CurlyRouter struct{} + +// SelectRoute is part of the Router interface and returns the best match +// for the WebService and its Route for the given Request. +func (c CurlyRouter) SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selected *Route, err error) { + + requestTokens := tokenizePath(httpRequest.URL.Path) + + detectedService := c.detectWebService(requestTokens, webServices) + if detectedService == nil { + if trace { + traceLogger.Printf("no WebService was found to match URL path:%s\n", httpRequest.URL.Path) + } + return nil, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + candidateRoutes := c.selectRoutes(detectedService, requestTokens) + if len(candidateRoutes) == 0 { + if trace { + traceLogger.Printf("no Route in WebService with path %s was found to match URL path:%s\n", detectedService.rootPath, httpRequest.URL.Path) + } + return detectedService, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + selectedRoute, err := c.detectRoute(candidateRoutes, httpRequest) + if selectedRoute == nil { + return detectedService, nil, err + } + return detectedService, selectedRoute, nil +} + +// selectRoutes return a collection of Route from a WebService that matches the path tokens from the request. +func (c CurlyRouter) selectRoutes(ws *WebService, requestTokens []string) sortableCurlyRoutes { + candidates := sortableCurlyRoutes{} + for _, each := range ws.routes { + matches, paramCount, staticCount := c.matchesRouteByPathTokens(each.pathParts, requestTokens) + if matches { + candidates.add(curlyRoute{each, paramCount, staticCount}) // TODO make sure Routes() return pointers? + } + } + sort.Sort(sort.Reverse(candidates)) + return candidates +} + +// matchesRouteByPathTokens computes whether it matches, howmany parameters do match and what the number of static path elements are. +func (c CurlyRouter) matchesRouteByPathTokens(routeTokens, requestTokens []string) (matches bool, paramCount int, staticCount int) { + if len(routeTokens) < len(requestTokens) { + // proceed in matching only if last routeToken is wildcard + count := len(routeTokens) + if count == 0 || !strings.HasSuffix(routeTokens[count-1], "*}") { + return false, 0, 0 + } + // proceed + } + for i, routeToken := range routeTokens { + if i == len(requestTokens) { + // reached end of request path + return false, 0, 0 + } + requestToken := requestTokens[i] + if strings.HasPrefix(routeToken, "{") { + paramCount++ + if colon := strings.Index(routeToken, ":"); colon != -1 { + // match by regex + matchesToken, matchesRemainder := c.regularMatchesPathToken(routeToken, colon, requestToken) + if !matchesToken { + return false, 0, 0 + } + if matchesRemainder { + break + } + } + } else { // no { prefix + if requestToken != routeToken { + return false, 0, 0 + } + staticCount++ + } + } + return true, paramCount, staticCount +} + +// regularMatchesPathToken tests whether the regular expression part of routeToken matches the requestToken or all remaining tokens +// format routeToken is {someVar:someExpression}, e.g. {zipcode:[\d][\d][\d][\d][A-Z][A-Z]} +func (c CurlyRouter) regularMatchesPathToken(routeToken string, colon int, requestToken string) (matchesToken bool, matchesRemainder bool) { + regPart := routeToken[colon+1 : len(routeToken)-1] + if regPart == "*" { + if trace { + traceLogger.Printf("wildcard parameter detected in route token %s that matches %s\n", routeToken, requestToken) + } + return true, true + } + matched, err := regexp.MatchString(regPart, requestToken) + return (matched && err == nil), false +} + +// detectRoute selectes from a list of Route the first match by inspecting both the Accept and Content-Type +// headers of the Request. See also RouterJSR311 in jsr311.go +func (c CurlyRouter) detectRoute(candidateRoutes sortableCurlyRoutes, httpRequest *http.Request) (*Route, error) { + // tracing is done inside detectRoute + return RouterJSR311{}.detectRoute(candidateRoutes.routes(), httpRequest) +} + +// detectWebService returns the best matching webService given the list of path tokens. +// see also computeWebserviceScore +func (c CurlyRouter) detectWebService(requestTokens []string, webServices []*WebService) *WebService { + var best *WebService + score := -1 + for _, each := range webServices { + matches, eachScore := c.computeWebserviceScore(requestTokens, each.pathExpr.tokens) + if matches && (eachScore > score) { + best = each + score = eachScore + } + } + return best +} + +// computeWebserviceScore returns whether tokens match and +// the weighted score of the longest matching consecutive tokens from the beginning. +func (c CurlyRouter) computeWebserviceScore(requestTokens []string, tokens []string) (bool, int) { + if len(tokens) > len(requestTokens) { + return false, 0 + } + score := 0 + for i := 0; i < len(tokens); i++ { + each := requestTokens[i] + other := tokens[i] + if len(each) == 0 && len(other) == 0 { + score++ + continue + } + if len(other) > 0 && strings.HasPrefix(other, "{") { + // no empty match + if len(each) == 0 { + return false, score + } + score += 1 + } else { + // not a parameter + if each != other { + return false, score + } + score += (len(tokens) - i) * 10 //fuzzy + } + } + return true, score +} diff --git a/vendor/github.com/emicklei/go-restful/curly_route.go b/vendor/github.com/emicklei/go-restful/curly_route.go new file mode 100644 index 0000000000..296f94650e --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/curly_route.go @@ -0,0 +1,52 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// curlyRoute exits for sorting Routes by the CurlyRouter based on number of parameters and number of static path elements. +type curlyRoute struct { + route Route + paramCount int + staticCount int +} + +type sortableCurlyRoutes []curlyRoute + +func (s *sortableCurlyRoutes) add(route curlyRoute) { + *s = append(*s, route) +} + +func (s sortableCurlyRoutes) routes() (routes []Route) { + for _, each := range s { + routes = append(routes, each.route) // TODO change return type + } + return routes +} + +func (s sortableCurlyRoutes) Len() int { + return len(s) +} +func (s sortableCurlyRoutes) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s sortableCurlyRoutes) Less(i, j int) bool { + ci := s[i] + cj := s[j] + + // primary key + if ci.staticCount < cj.staticCount { + return true + } + if ci.staticCount > cj.staticCount { + return false + } + // secundary key + if ci.paramCount < cj.paramCount { + return true + } + if ci.paramCount > cj.paramCount { + return false + } + return ci.route.Path < cj.route.Path +} diff --git a/vendor/github.com/emicklei/go-restful/doc.go b/vendor/github.com/emicklei/go-restful/doc.go new file mode 100644 index 0000000000..d40405bf76 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/doc.go @@ -0,0 +1,196 @@ +/* +Package restful, a lean package for creating REST-style WebServices without magic. + +WebServices and Routes + +A WebService has a collection of Route objects that dispatch incoming Http Requests to a function calls. +Typically, a WebService has a root path (e.g. /users) and defines common MIME types for its routes. +WebServices must be added to a container (see below) in order to handler Http requests from a server. + +A Route is defined by a HTTP method, an URL path and (optionally) the MIME types it consumes (Content-Type) and produces (Accept). +This package has the logic to find the best matching Route and if found, call its Function. + + ws := new(restful.WebService) + ws. + Path("/users"). + Consumes(restful.MIME_JSON, restful.MIME_XML). + Produces(restful.MIME_JSON, restful.MIME_XML) + + ws.Route(ws.GET("/{user-id}").To(u.findUser)) // u is a UserResource + + ... + + // GET http://localhost:8080/users/1 + func (u UserResource) findUser(request *restful.Request, response *restful.Response) { + id := request.PathParameter("user-id") + ... + } + +The (*Request, *Response) arguments provide functions for reading information from the request and writing information back to the response. + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-user-resource.go with a full implementation. + +Regular expression matching Routes + +A Route parameter can be specified using the format "uri/{var[:regexp]}" or the special version "uri/{var:*}" for matching the tail of the path. +For example, /persons/{name:[A-Z][A-Z]} can be used to restrict values for the parameter "name" to only contain capital alphabetic characters. +Regular expressions must use the standard Go syntax as described in the regexp package. (https://code.google.com/p/re2/wiki/Syntax) +This feature requires the use of a CurlyRouter. + +Containers + +A Container holds a collection of WebServices, Filters and a http.ServeMux for multiplexing http requests. +Using the statements "restful.Add(...) and restful.Filter(...)" will register WebServices and Filters to the Default Container. +The Default container of go-restful uses the http.DefaultServeMux. +You can create your own Container and create a new http.Server for that particular container. + + container := restful.NewContainer() + server := &http.Server{Addr: ":8081", Handler: container} + +Filters + +A filter dynamically intercepts requests and responses to transform or use the information contained in the requests or responses. +You can use filters to perform generic logging, measurement, authentication, redirect, set response headers etc. +In the restful package there are three hooks into the request,response flow where filters can be added. +Each filter must define a FilterFunction: + + func (req *restful.Request, resp *restful.Response, chain *restful.FilterChain) + +Use the following statement to pass the request,response pair to the next filter or RouteFunction + + chain.ProcessFilter(req, resp) + +Container Filters + +These are processed before any registered WebService. + + // install a (global) filter for the default container (processed before any webservice) + restful.Filter(globalLogging) + +WebService Filters + +These are processed before any Route of a WebService. + + // install a webservice filter (processed before any route) + ws.Filter(webserviceLogging).Filter(measureTime) + + +Route Filters + +These are processed before calling the function associated with the Route. + + // install 2 chained route filters (processed before calling findUser) + ws.Route(ws.GET("/{user-id}").Filter(routeLogging).Filter(NewCountFilter().routeCounter).To(findUser)) + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-filters.go with full implementations. + +Response Encoding + +Two encodings are supported: gzip and deflate. To enable this for all responses: + + restful.DefaultContainer.EnableContentEncoding(true) + +If a Http request includes the Accept-Encoding header then the response content will be compressed using the specified encoding. +Alternatively, you can create a Filter that performs the encoding and install it per WebService or Route. + +See the example https://github.com/emicklei/go-restful/blob/master/examples/restful-encoding-filter.go + +OPTIONS support + +By installing a pre-defined container filter, your Webservice(s) can respond to the OPTIONS Http request. + + Filter(OPTIONSFilter()) + +CORS + +By installing the filter of a CrossOriginResourceSharing (CORS), your WebService(s) can handle CORS requests. + + cors := CrossOriginResourceSharing{ExposeHeaders: []string{"X-My-Header"}, CookiesAllowed: false, Container: DefaultContainer} + Filter(cors.Filter) + +Error Handling + +Unexpected things happen. If a request cannot be processed because of a failure, your service needs to tell via the response what happened and why. +For this reason HTTP status codes exist and it is important to use the correct code in every exceptional situation. + + 400: Bad Request + +If path or query parameters are not valid (content or type) then use http.StatusBadRequest. + + 404: Not Found + +Despite a valid URI, the resource requested may not be available + + 500: Internal Server Error + +If the application logic could not process the request (or write the response) then use http.StatusInternalServerError. + + 405: Method Not Allowed + +The request has a valid URL but the method (GET,PUT,POST,...) is not allowed. + + 406: Not Acceptable + +The request does not have or has an unknown Accept Header set for this operation. + + 415: Unsupported Media Type + +The request does not have or has an unknown Content-Type Header set for this operation. + +ServiceError + +In addition to setting the correct (error) Http status code, you can choose to write a ServiceError message on the response. + +Performance options + +This package has several options that affect the performance of your service. It is important to understand them and how you can change it. + + restful.DefaultContainer.Router(CurlyRouter{}) + +The default router is the RouterJSR311 which is an implementation of its spec (http://jsr311.java.net/nonav/releases/1.1/spec/spec.html). +However, it uses regular expressions for all its routes which, depending on your usecase, may consume a significant amount of time. +The CurlyRouter implementation is more lightweight that also allows you to use wildcards and expressions, but only if needed. + + restful.DefaultContainer.DoNotRecover(true) + +DoNotRecover controls whether panics will be caught to return HTTP 500. +If set to true, Route functions are responsible for handling any error situation. +Default value is false; it will recover from panics. This has performance implications. + + restful.SetCacheReadEntity(false) + +SetCacheReadEntity controls whether the response data ([]byte) is cached such that ReadEntity is repeatable. +If you expect to read large amounts of payload data, and you do not use this feature, you should set it to false. + + restful.SetCompressorProvider(NewBoundedCachedCompressors(20, 20)) + +If content encoding is enabled then the default strategy for getting new gzip/zlib writers and readers is to use a sync.Pool. +Because writers are expensive structures, performance is even more improved when using a preloaded cache. You can also inject your own implementation. + +Trouble shooting + +This package has the means to produce detail logging of the complete Http request matching process and filter invocation. +Enabling this feature requires you to set an implementation of restful.StdLogger (e.g. log.Logger) instance such as: + + restful.TraceLogger(log.New(os.Stdout, "[restful] ", log.LstdFlags|log.Lshortfile)) + +Logging + +The restful.SetLogger() method allows you to override the logger used by the package. By default restful +uses the standard library `log` package and logs to stdout. Different logging packages are supported as +long as they conform to `StdLogger` interface defined in the `log` sub-package, writing an adapter for your +preferred package is simple. + +Resources + +[project]: https://github.com/emicklei/go-restful + +[examples]: https://github.com/emicklei/go-restful/blob/master/examples + +[design]: http://ernestmicklei.com/2012/11/11/go-restful-api-design/ + +[showcases]: https://github.com/emicklei/mora, https://github.com/emicklei/landskape + +(c) 2012-2015, http://ernestmicklei.com. MIT License +*/ +package restful diff --git a/vendor/github.com/emicklei/go-restful/entity_accessors.go b/vendor/github.com/emicklei/go-restful/entity_accessors.go new file mode 100644 index 0000000000..6ecf6c7f89 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/entity_accessors.go @@ -0,0 +1,163 @@ +package restful + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "encoding/json" + "encoding/xml" + "strings" + "sync" +) + +// EntityReaderWriter can read and write values using an encoding such as JSON,XML. +type EntityReaderWriter interface { + // Read a serialized version of the value from the request. + // The Request may have a decompressing reader. Depends on Content-Encoding. + Read(req *Request, v interface{}) error + + // Write a serialized version of the value on the response. + // The Response may have a compressing writer. Depends on Accept-Encoding. + // status should be a valid Http Status code + Write(resp *Response, status int, v interface{}) error +} + +// entityAccessRegistry is a singleton +var entityAccessRegistry = &entityReaderWriters{ + protection: new(sync.RWMutex), + accessors: map[string]EntityReaderWriter{}, +} + +// entityReaderWriters associates MIME to an EntityReaderWriter +type entityReaderWriters struct { + protection *sync.RWMutex + accessors map[string]EntityReaderWriter +} + +func init() { + RegisterEntityAccessor(MIME_JSON, NewEntityAccessorJSON(MIME_JSON)) + RegisterEntityAccessor(MIME_XML, NewEntityAccessorXML(MIME_XML)) +} + +// RegisterEntityAccessor add/overrides the ReaderWriter for encoding content with this MIME type. +func RegisterEntityAccessor(mime string, erw EntityReaderWriter) { + entityAccessRegistry.protection.Lock() + defer entityAccessRegistry.protection.Unlock() + entityAccessRegistry.accessors[mime] = erw +} + +// NewEntityAccessorJSON returns a new EntityReaderWriter for accessing JSON content. +// This package is already initialized with such an accessor using the MIME_JSON contentType. +func NewEntityAccessorJSON(contentType string) EntityReaderWriter { + return entityJSONAccess{ContentType: contentType} +} + +// NewEntityAccessorXML returns a new EntityReaderWriter for accessing XML content. +// This package is already initialized with such an accessor using the MIME_XML contentType. +func NewEntityAccessorXML(contentType string) EntityReaderWriter { + return entityXMLAccess{ContentType: contentType} +} + +// accessorAt returns the registered ReaderWriter for this MIME type. +func (r *entityReaderWriters) accessorAt(mime string) (EntityReaderWriter, bool) { + r.protection.RLock() + defer r.protection.RUnlock() + er, ok := r.accessors[mime] + if !ok { + // retry with reverse lookup + // more expensive but we are in an exceptional situation anyway + for k, v := range r.accessors { + if strings.Contains(mime, k) { + return v, true + } + } + } + return er, ok +} + +// entityXMLAccess is a EntityReaderWriter for XML encoding +type entityXMLAccess struct { + // This is used for setting the Content-Type header when writing + ContentType string +} + +// Read unmarshalls the value from XML +func (e entityXMLAccess) Read(req *Request, v interface{}) error { + return xml.NewDecoder(req.Request.Body).Decode(v) +} + +// Write marshalls the value to JSON and set the Content-Type Header. +func (e entityXMLAccess) Write(resp *Response, status int, v interface{}) error { + return writeXML(resp, status, e.ContentType, v) +} + +// writeXML marshalls the value to JSON and set the Content-Type Header. +func writeXML(resp *Response, status int, contentType string, v interface{}) error { + if v == nil { + resp.WriteHeader(status) + // do not write a nil representation + return nil + } + if resp.prettyPrint { + // pretty output must be created and written explicitly + output, err := xml.MarshalIndent(v, " ", " ") + if err != nil { + return err + } + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + _, err = resp.Write([]byte(xml.Header)) + if err != nil { + return err + } + _, err = resp.Write(output) + return err + } + // not-so-pretty + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + return xml.NewEncoder(resp).Encode(v) +} + +// entityJSONAccess is a EntityReaderWriter for JSON encoding +type entityJSONAccess struct { + // This is used for setting the Content-Type header when writing + ContentType string +} + +// Read unmarshalls the value from JSON +func (e entityJSONAccess) Read(req *Request, v interface{}) error { + decoder := json.NewDecoder(req.Request.Body) + decoder.UseNumber() + return decoder.Decode(v) +} + +// Write marshalls the value to JSON and set the Content-Type Header. +func (e entityJSONAccess) Write(resp *Response, status int, v interface{}) error { + return writeJSON(resp, status, e.ContentType, v) +} + +// write marshalls the value to JSON and set the Content-Type Header. +func writeJSON(resp *Response, status int, contentType string, v interface{}) error { + if v == nil { + resp.WriteHeader(status) + // do not write a nil representation + return nil + } + if resp.prettyPrint { + // pretty output must be created and written explicitly + output, err := json.MarshalIndent(v, " ", " ") + if err != nil { + return err + } + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + _, err = resp.Write(output) + return err + } + // not-so-pretty + resp.Header().Set(HEADER_ContentType, contentType) + resp.WriteHeader(status) + return json.NewEncoder(resp).Encode(v) +} diff --git a/vendor/github.com/emicklei/go-restful/filter.go b/vendor/github.com/emicklei/go-restful/filter.go new file mode 100644 index 0000000000..4b86656e17 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/filter.go @@ -0,0 +1,26 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// FilterChain is a request scoped object to process one or more filters before calling the target RouteFunction. +type FilterChain struct { + Filters []FilterFunction // ordered list of FilterFunction + Index int // index into filters that is currently in progress + Target RouteFunction // function to call after passing all filters +} + +// ProcessFilter passes the request,response pair through the next of Filters. +// Each filter can decide to proceed to the next Filter or handle the Response itself. +func (f *FilterChain) ProcessFilter(request *Request, response *Response) { + if f.Index < len(f.Filters) { + f.Index++ + f.Filters[f.Index-1](request, response, f) + } else { + f.Target(request, response) + } +} + +// FilterFunction definitions must call ProcessFilter on the FilterChain to pass on the control and eventually call the RouteFunction +type FilterFunction func(*Request, *Response, *FilterChain) diff --git a/vendor/github.com/emicklei/go-restful/jsr311.go b/vendor/github.com/emicklei/go-restful/jsr311.go new file mode 100644 index 0000000000..511444ac68 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/jsr311.go @@ -0,0 +1,248 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "errors" + "fmt" + "net/http" + "sort" +) + +// RouterJSR311 implements the flow for matching Requests to Routes (and consequently Resource Functions) +// as specified by the JSR311 http://jsr311.java.net/nonav/releases/1.1/spec/spec.html. +// RouterJSR311 implements the Router interface. +// Concept of locators is not implemented. +type RouterJSR311 struct{} + +// SelectRoute is part of the Router interface and returns the best match +// for the WebService and its Route for the given Request. +func (r RouterJSR311) SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selectedRoute *Route, err error) { + + // Identify the root resource class (WebService) + dispatcher, finalMatch, err := r.detectDispatcher(httpRequest.URL.Path, webServices) + if err != nil { + return nil, nil, NewError(http.StatusNotFound, "") + } + // Obtain the set of candidate methods (Routes) + routes := r.selectRoutes(dispatcher, finalMatch) + if len(routes) == 0 { + return dispatcher, nil, NewError(http.StatusNotFound, "404: Page Not Found") + } + + // Identify the method (Route) that will handle the request + route, ok := r.detectRoute(routes, httpRequest) + return dispatcher, route, ok +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 +func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*Route, error) { + // http method + methodOk := []Route{} + for _, each := range routes { + if httpRequest.Method == each.Method { + methodOk = append(methodOk, each) + } + } + if len(methodOk) == 0 { + if trace { + traceLogger.Printf("no Route found (in %d routes) that matches HTTP method %s\n", len(routes), httpRequest.Method) + } + return nil, NewError(http.StatusMethodNotAllowed, "405: Method Not Allowed") + } + inputMediaOk := methodOk + + // content-type + contentType := httpRequest.Header.Get(HEADER_ContentType) + inputMediaOk = []Route{} + for _, each := range methodOk { + if each.matchesContentType(contentType) { + inputMediaOk = append(inputMediaOk, each) + } + } + if len(inputMediaOk) == 0 { + if trace { + traceLogger.Printf("no Route found (from %d) that matches HTTP Content-Type: %s\n", len(methodOk), contentType) + } + return nil, NewError(http.StatusUnsupportedMediaType, "415: Unsupported Media Type") + } + + // accept + outputMediaOk := []Route{} + accept := httpRequest.Header.Get(HEADER_Accept) + if len(accept) == 0 { + accept = "*/*" + } + for _, each := range inputMediaOk { + if each.matchesAccept(accept) { + outputMediaOk = append(outputMediaOk, each) + } + } + if len(outputMediaOk) == 0 { + if trace { + traceLogger.Printf("no Route found (from %d) that matches HTTP Accept: %s\n", len(inputMediaOk), accept) + } + return nil, NewError(http.StatusNotAcceptable, "406: Not Acceptable") + } + // return r.bestMatchByMedia(outputMediaOk, contentType, accept), nil + return &outputMediaOk[0], nil +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 +// n/m > n/* > */* +func (r RouterJSR311) bestMatchByMedia(routes []Route, contentType string, accept string) *Route { + // TODO + return &routes[0] +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 (step 2) +func (r RouterJSR311) selectRoutes(dispatcher *WebService, pathRemainder string) []Route { + filtered := &sortableRouteCandidates{} + for _, each := range dispatcher.Routes() { + pathExpr := each.pathExpr + matches := pathExpr.Matcher.FindStringSubmatch(pathRemainder) + if matches != nil { + lastMatch := matches[len(matches)-1] + if len(lastMatch) == 0 || lastMatch == "/" { // do not include if value is neither empty nor ‘/’. + filtered.candidates = append(filtered.candidates, + routeCandidate{each, len(matches) - 1, pathExpr.LiteralCount, pathExpr.VarCount}) + } + } + } + if len(filtered.candidates) == 0 { + if trace { + traceLogger.Printf("WebService on path %s has no routes that match URL path remainder:%s\n", dispatcher.rootPath, pathRemainder) + } + return []Route{} + } + sort.Sort(sort.Reverse(filtered)) + + // select other routes from candidates whoes expression matches rmatch + matchingRoutes := []Route{filtered.candidates[0].route} + for c := 1; c < len(filtered.candidates); c++ { + each := filtered.candidates[c] + if each.route.pathExpr.Matcher.MatchString(pathRemainder) { + matchingRoutes = append(matchingRoutes, each.route) + } + } + return matchingRoutes +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 (step 1) +func (r RouterJSR311) detectDispatcher(requestPath string, dispatchers []*WebService) (*WebService, string, error) { + filtered := &sortableDispatcherCandidates{} + for _, each := range dispatchers { + matches := each.pathExpr.Matcher.FindStringSubmatch(requestPath) + if matches != nil { + filtered.candidates = append(filtered.candidates, + dispatcherCandidate{each, matches[len(matches)-1], len(matches), each.pathExpr.LiteralCount, each.pathExpr.VarCount}) + } + } + if len(filtered.candidates) == 0 { + if trace { + traceLogger.Printf("no WebService was found to match URL path:%s\n", requestPath) + } + return nil, "", errors.New("not found") + } + sort.Sort(sort.Reverse(filtered)) + return filtered.candidates[0].dispatcher, filtered.candidates[0].finalMatch, nil +} + +// Types and functions to support the sorting of Routes + +type routeCandidate struct { + route Route + matchesCount int // the number of capturing groups + literalCount int // the number of literal characters (means those not resulting from template variable substitution) + nonDefaultCount int // the number of capturing groups with non-default regular expressions (i.e. not ‘([^ /]+?)’) +} + +func (r routeCandidate) expressionToMatch() string { + return r.route.pathExpr.Source +} + +func (r routeCandidate) String() string { + return fmt.Sprintf("(m=%d,l=%d,n=%d)", r.matchesCount, r.literalCount, r.nonDefaultCount) +} + +type sortableRouteCandidates struct { + candidates []routeCandidate +} + +func (rcs *sortableRouteCandidates) Len() int { + return len(rcs.candidates) +} +func (rcs *sortableRouteCandidates) Swap(i, j int) { + rcs.candidates[i], rcs.candidates[j] = rcs.candidates[j], rcs.candidates[i] +} +func (rcs *sortableRouteCandidates) Less(i, j int) bool { + ci := rcs.candidates[i] + cj := rcs.candidates[j] + // primary key + if ci.literalCount < cj.literalCount { + return true + } + if ci.literalCount > cj.literalCount { + return false + } + // secundary key + if ci.matchesCount < cj.matchesCount { + return true + } + if ci.matchesCount > cj.matchesCount { + return false + } + // tertiary key + if ci.nonDefaultCount < cj.nonDefaultCount { + return true + } + if ci.nonDefaultCount > cj.nonDefaultCount { + return false + } + // quaternary key ("source" is interpreted as Path) + return ci.route.Path < cj.route.Path +} + +// Types and functions to support the sorting of Dispatchers + +type dispatcherCandidate struct { + dispatcher *WebService + finalMatch string + matchesCount int // the number of capturing groups + literalCount int // the number of literal characters (means those not resulting from template variable substitution) + nonDefaultCount int // the number of capturing groups with non-default regular expressions (i.e. not ‘([^ /]+?)’) +} +type sortableDispatcherCandidates struct { + candidates []dispatcherCandidate +} + +func (dc *sortableDispatcherCandidates) Len() int { + return len(dc.candidates) +} +func (dc *sortableDispatcherCandidates) Swap(i, j int) { + dc.candidates[i], dc.candidates[j] = dc.candidates[j], dc.candidates[i] +} +func (dc *sortableDispatcherCandidates) Less(i, j int) bool { + ci := dc.candidates[i] + cj := dc.candidates[j] + // primary key + if ci.matchesCount < cj.matchesCount { + return true + } + if ci.matchesCount > cj.matchesCount { + return false + } + // secundary key + if ci.literalCount < cj.literalCount { + return true + } + if ci.literalCount > cj.literalCount { + return false + } + // tertiary key + return ci.nonDefaultCount < cj.nonDefaultCount +} diff --git a/vendor/github.com/emicklei/go-restful/log/log.go b/vendor/github.com/emicklei/go-restful/log/log.go new file mode 100644 index 0000000000..f70d89524a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/log/log.go @@ -0,0 +1,31 @@ +package log + +import ( + stdlog "log" + "os" +) + +// Logger corresponds to a minimal subset of the interface satisfied by stdlib log.Logger +type StdLogger interface { + Print(v ...interface{}) + Printf(format string, v ...interface{}) +} + +var Logger StdLogger + +func init() { + // default Logger + SetLogger(stdlog.New(os.Stderr, "[restful] ", stdlog.LstdFlags|stdlog.Lshortfile)) +} + +func SetLogger(customLogger StdLogger) { + Logger = customLogger +} + +func Print(v ...interface{}) { + Logger.Print(v...) +} + +func Printf(format string, v ...interface{}) { + Logger.Printf(format, v...) +} diff --git a/vendor/github.com/emicklei/go-restful/logger.go b/vendor/github.com/emicklei/go-restful/logger.go new file mode 100644 index 0000000000..3f1c4db86b --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/logger.go @@ -0,0 +1,32 @@ +package restful + +// Copyright 2014 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. +import ( + "github.com/emicklei/go-restful/log" +) + +var trace bool = false +var traceLogger log.StdLogger + +func init() { + traceLogger = log.Logger // use the package logger by default +} + +// TraceLogger enables detailed logging of Http request matching and filter invocation. Default no logger is set. +// You may call EnableTracing() directly to enable trace logging to the package-wide logger. +func TraceLogger(logger log.StdLogger) { + traceLogger = logger + EnableTracing(logger != nil) +} + +// expose the setter for the global logger on the top-level package +func SetLogger(customLogger log.StdLogger) { + log.SetLogger(customLogger) +} + +// EnableTracing can be used to Trace logging on and off. +func EnableTracing(enabled bool) { + trace = enabled +} diff --git a/vendor/github.com/emicklei/go-restful/mime.go b/vendor/github.com/emicklei/go-restful/mime.go new file mode 100644 index 0000000000..d7ea2b6157 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/mime.go @@ -0,0 +1,45 @@ +package restful + +import ( + "strconv" + "strings" +) + +type mime struct { + media string + quality float64 +} + +// insertMime adds a mime to a list and keeps it sorted by quality. +func insertMime(l []mime, e mime) []mime { + for i, each := range l { + // if current mime has lower quality then insert before + if e.quality > each.quality { + left := append([]mime{}, l[0:i]...) + return append(append(left, e), l[i:]...) + } + } + return append(l, e) +} + +// sortedMimes returns a list of mime sorted (desc) by its specified quality. +func sortedMimes(accept string) (sorted []mime) { + for _, each := range strings.Split(accept, ",") { + typeAndQuality := strings.Split(strings.Trim(each, " "), ";") + if len(typeAndQuality) == 1 { + sorted = insertMime(sorted, mime{typeAndQuality[0], 1.0}) + } else { + // take factor + parts := strings.Split(typeAndQuality[1], "=") + if len(parts) == 2 { + f, err := strconv.ParseFloat(parts[1], 64) + if err != nil { + traceLogger.Printf("unable to parse quality in %s, %v", each, err) + } else { + sorted = insertMime(sorted, mime{typeAndQuality[0], f}) + } + } + } + } + return +} diff --git a/vendor/github.com/emicklei/go-restful/options_filter.go b/vendor/github.com/emicklei/go-restful/options_filter.go new file mode 100644 index 0000000000..4514eadcfa --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/options_filter.go @@ -0,0 +1,26 @@ +package restful + +import "strings" + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// OPTIONSFilter is a filter function that inspects the Http Request for the OPTIONS method +// and provides the response with a set of allowed methods for the request URL Path. +// As for any filter, you can also install it for a particular WebService within a Container. +// Note: this filter is not needed when using CrossOriginResourceSharing (for CORS). +func (c *Container) OPTIONSFilter(req *Request, resp *Response, chain *FilterChain) { + if "OPTIONS" != req.Request.Method { + chain.ProcessFilter(req, resp) + return + } + resp.AddHeader(HEADER_Allow, strings.Join(c.computeAllowedMethods(req), ",")) +} + +// OPTIONSFilter is a filter function that inspects the Http Request for the OPTIONS method +// and provides the response with a set of allowed methods for the request URL Path. +// Note: this filter is not needed when using CrossOriginResourceSharing (for CORS). +func OPTIONSFilter() FilterFunction { + return DefaultContainer.OPTIONSFilter +} diff --git a/vendor/github.com/emicklei/go-restful/parameter.go b/vendor/github.com/emicklei/go-restful/parameter.go new file mode 100644 index 0000000000..e11c8162a7 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/parameter.go @@ -0,0 +1,114 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +const ( + // PathParameterKind = indicator of Request parameter type "path" + PathParameterKind = iota + + // QueryParameterKind = indicator of Request parameter type "query" + QueryParameterKind + + // BodyParameterKind = indicator of Request parameter type "body" + BodyParameterKind + + // HeaderParameterKind = indicator of Request parameter type "header" + HeaderParameterKind + + // FormParameterKind = indicator of Request parameter type "form" + FormParameterKind +) + +// Parameter is for documententing the parameter used in a Http Request +// ParameterData kinds are Path,Query and Body +type Parameter struct { + data *ParameterData +} + +// ParameterData represents the state of a Parameter. +// It is made public to make it accessible to e.g. the Swagger package. +type ParameterData struct { + Name, Description, DataType, DataFormat string + Kind int + Required bool + AllowableValues map[string]string + AllowMultiple bool + DefaultValue string +} + +// Data returns the state of the Parameter +func (p *Parameter) Data() ParameterData { + return *p.data +} + +// Kind returns the parameter type indicator (see const for valid values) +func (p *Parameter) Kind() int { + return p.data.Kind +} + +func (p *Parameter) bePath() *Parameter { + p.data.Kind = PathParameterKind + return p +} +func (p *Parameter) beQuery() *Parameter { + p.data.Kind = QueryParameterKind + return p +} +func (p *Parameter) beBody() *Parameter { + p.data.Kind = BodyParameterKind + return p +} + +func (p *Parameter) beHeader() *Parameter { + p.data.Kind = HeaderParameterKind + return p +} + +func (p *Parameter) beForm() *Parameter { + p.data.Kind = FormParameterKind + return p +} + +// Required sets the required field and returns the receiver +func (p *Parameter) Required(required bool) *Parameter { + p.data.Required = required + return p +} + +// AllowMultiple sets the allowMultiple field and returns the receiver +func (p *Parameter) AllowMultiple(multiple bool) *Parameter { + p.data.AllowMultiple = multiple + return p +} + +// AllowableValues sets the allowableValues field and returns the receiver +func (p *Parameter) AllowableValues(values map[string]string) *Parameter { + p.data.AllowableValues = values + return p +} + +// DataType sets the dataType field and returns the receiver +func (p *Parameter) DataType(typeName string) *Parameter { + p.data.DataType = typeName + return p +} + +// DataFormat sets the dataFormat field for Swagger UI +func (p *Parameter) DataFormat(formatName string) *Parameter { + p.data.DataFormat = formatName + return p +} + +// DefaultValue sets the default value field and returns the receiver +func (p *Parameter) DefaultValue(stringRepresentation string) *Parameter { + p.data.DefaultValue = stringRepresentation + return p +} + +// Description sets the description value field and returns the receiver +func (p *Parameter) Description(doc string) *Parameter { + p.data.Description = doc + return p +} diff --git a/vendor/github.com/emicklei/go-restful/path_expression.go b/vendor/github.com/emicklei/go-restful/path_expression.go new file mode 100644 index 0000000000..a921e6f224 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/path_expression.go @@ -0,0 +1,69 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "fmt" + "regexp" + "strings" +) + +// PathExpression holds a compiled path expression (RegExp) needed to match against +// Http request paths and to extract path parameter values. +type pathExpression struct { + LiteralCount int // the number of literal characters (means those not resulting from template variable substitution) + VarCount int // the number of named parameters (enclosed by {}) in the path + Matcher *regexp.Regexp + Source string // Path as defined by the RouteBuilder + tokens []string +} + +// NewPathExpression creates a PathExpression from the input URL path. +// Returns an error if the path is invalid. +func newPathExpression(path string) (*pathExpression, error) { + expression, literalCount, varCount, tokens := templateToRegularExpression(path) + compiled, err := regexp.Compile(expression) + if err != nil { + return nil, err + } + return &pathExpression{literalCount, varCount, compiled, expression, tokens}, nil +} + +// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-370003.7.3 +func templateToRegularExpression(template string) (expression string, literalCount int, varCount int, tokens []string) { + var buffer bytes.Buffer + buffer.WriteString("^") + //tokens = strings.Split(template, "/") + tokens = tokenizePath(template) + for _, each := range tokens { + if each == "" { + continue + } + buffer.WriteString("/") + if strings.HasPrefix(each, "{") { + // check for regular expression in variable + colon := strings.Index(each, ":") + if colon != -1 { + // extract expression + paramExpr := strings.TrimSpace(each[colon+1 : len(each)-1]) + if paramExpr == "*" { // special case + buffer.WriteString("(.*)") + } else { + buffer.WriteString(fmt.Sprintf("(%s)", paramExpr)) // between colon and closing moustache + } + } else { + // plain var + buffer.WriteString("([^/]+?)") + } + varCount += 1 + } else { + literalCount += len(each) + encoded := each // TODO URI encode + buffer.WriteString(regexp.QuoteMeta(encoded)) + } + } + return strings.TrimRight(buffer.String(), "/") + "(/.*)?$", literalCount, varCount, tokens +} diff --git a/vendor/github.com/emicklei/go-restful/request.go b/vendor/github.com/emicklei/go-restful/request.go new file mode 100644 index 0000000000..3e4234697d --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/request.go @@ -0,0 +1,131 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "compress/zlib" + "io/ioutil" + "net/http" +) + +var defaultRequestContentType string + +var doCacheReadEntityBytes = true + +// Request is a wrapper for a http Request that provides convenience methods +type Request struct { + Request *http.Request + bodyContent *[]byte // to cache the request body for multiple reads of ReadEntity + pathParameters map[string]string + attributes map[string]interface{} // for storing request-scoped values + selectedRoutePath string // root path + route path that matched the request, e.g. /meetings/{id}/attendees +} + +func NewRequest(httpRequest *http.Request) *Request { + return &Request{ + Request: httpRequest, + pathParameters: map[string]string{}, + attributes: map[string]interface{}{}, + } // empty parameters, attributes +} + +// If ContentType is missing or */* is given then fall back to this type, otherwise +// a "Unable to unmarshal content of type:" response is returned. +// Valid values are restful.MIME_JSON and restful.MIME_XML +// Example: +// restful.DefaultRequestContentType(restful.MIME_JSON) +func DefaultRequestContentType(mime string) { + defaultRequestContentType = mime +} + +// SetCacheReadEntity controls whether the response data ([]byte) is cached such that ReadEntity is repeatable. +// Default is true (due to backwardcompatibility). For better performance, you should set it to false if you don't need it. +func SetCacheReadEntity(doCache bool) { + doCacheReadEntityBytes = doCache +} + +// PathParameter accesses the Path parameter value by its name +func (r *Request) PathParameter(name string) string { + return r.pathParameters[name] +} + +// PathParameters accesses the Path parameter values +func (r *Request) PathParameters() map[string]string { + return r.pathParameters +} + +// QueryParameter returns the (first) Query parameter value by its name +func (r *Request) QueryParameter(name string) string { + return r.Request.FormValue(name) +} + +// BodyParameter parses the body of the request (once for typically a POST or a PUT) and returns the value of the given name or an error. +func (r *Request) BodyParameter(name string) (string, error) { + err := r.Request.ParseForm() + if err != nil { + return "", err + } + return r.Request.PostFormValue(name), nil +} + +// HeaderParameter returns the HTTP Header value of a Header name or empty if missing +func (r *Request) HeaderParameter(name string) string { + return r.Request.Header.Get(name) +} + +// ReadEntity checks the Accept header and reads the content into the entityPointer. +func (r *Request) ReadEntity(entityPointer interface{}) (err error) { + contentType := r.Request.Header.Get(HEADER_ContentType) + contentEncoding := r.Request.Header.Get(HEADER_ContentEncoding) + + // OLD feature, cache the body for reads + if doCacheReadEntityBytes { + if r.bodyContent == nil { + data, err := ioutil.ReadAll(r.Request.Body) + if err != nil { + return err + } + r.bodyContent = &data + } + r.Request.Body = ioutil.NopCloser(bytes.NewReader(*r.bodyContent)) + } + + // check if the request body needs decompression + if ENCODING_GZIP == contentEncoding { + gzipReader := currentCompressorProvider.AcquireGzipReader() + defer currentCompressorProvider.ReleaseGzipReader(gzipReader) + gzipReader.Reset(r.Request.Body) + r.Request.Body = gzipReader + } else if ENCODING_DEFLATE == contentEncoding { + zlibReader, err := zlib.NewReader(r.Request.Body) + if err != nil { + return err + } + r.Request.Body = zlibReader + } + + // lookup the EntityReader + entityReader, ok := entityAccessRegistry.accessorAt(contentType) + if !ok { + return NewError(http.StatusBadRequest, "Unable to unmarshal content of type:"+contentType) + } + return entityReader.Read(r, entityPointer) +} + +// SetAttribute adds or replaces the attribute with the given value. +func (r *Request) SetAttribute(name string, value interface{}) { + r.attributes[name] = value +} + +// Attribute returns the value associated to the given name. Returns nil if absent. +func (r Request) Attribute(name string) interface{} { + return r.attributes[name] +} + +// SelectedRoutePath root path + route path that matched the request, e.g. /meetings/{id}/attendees +func (r Request) SelectedRoutePath() string { + return r.selectedRoutePath +} diff --git a/vendor/github.com/emicklei/go-restful/response.go b/vendor/github.com/emicklei/go-restful/response.go new file mode 100644 index 0000000000..971cd0b42c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/response.go @@ -0,0 +1,235 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "errors" + "net/http" +) + +// DEPRECATED, use DefaultResponseContentType(mime) +var DefaultResponseMimeType string + +//PrettyPrintResponses controls the indentation feature of XML and JSON serialization +var PrettyPrintResponses = true + +// Response is a wrapper on the actual http ResponseWriter +// It provides several convenience methods to prepare and write response content. +type Response struct { + http.ResponseWriter + requestAccept string // mime-type what the Http Request says it wants to receive + routeProduces []string // mime-types what the Route says it can produce + statusCode int // HTTP status code that has been written explicity (if zero then net/http has written 200) + contentLength int // number of bytes written for the response body + prettyPrint bool // controls the indentation feature of XML and JSON serialization. It is initialized using var PrettyPrintResponses. + err error // err property is kept when WriteError is called +} + +// Creates a new response based on a http ResponseWriter. +func NewResponse(httpWriter http.ResponseWriter) *Response { + return &Response{httpWriter, "", []string{}, http.StatusOK, 0, PrettyPrintResponses, nil} // empty content-types +} + +// If Accept header matching fails, fall back to this type. +// Valid values are restful.MIME_JSON and restful.MIME_XML +// Example: +// restful.DefaultResponseContentType(restful.MIME_JSON) +func DefaultResponseContentType(mime string) { + DefaultResponseMimeType = mime +} + +// InternalServerError writes the StatusInternalServerError header. +// DEPRECATED, use WriteErrorString(http.StatusInternalServerError,reason) +func (r Response) InternalServerError() Response { + r.WriteHeader(http.StatusInternalServerError) + return r +} + +// PrettyPrint changes whether this response must produce pretty (line-by-line, indented) JSON or XML output. +func (r *Response) PrettyPrint(bePretty bool) { + r.prettyPrint = bePretty +} + +// AddHeader is a shortcut for .Header().Add(header,value) +func (r Response) AddHeader(header string, value string) Response { + r.Header().Add(header, value) + return r +} + +// SetRequestAccepts tells the response what Mime-type(s) the HTTP request said it wants to accept. Exposed for testing. +func (r *Response) SetRequestAccepts(mime string) { + r.requestAccept = mime +} + +// EntityWriter returns the registered EntityWriter that the entity (requested resource) +// can write according to what the request wants (Accept) and what the Route can produce or what the restful defaults say. +// If called before WriteEntity and WriteHeader then a false return value can be used to write a 406: Not Acceptable. +func (r *Response) EntityWriter() (EntityReaderWriter, bool) { + sorted := sortedMimes(r.requestAccept) + for _, eachAccept := range sorted { + for _, eachProduce := range r.routeProduces { + if eachProduce == eachAccept.media { + if w, ok := entityAccessRegistry.accessorAt(eachAccept.media); ok { + return w, true + } + } + } + if eachAccept.media == "*/*" { + for _, each := range r.routeProduces { + if w, ok := entityAccessRegistry.accessorAt(each); ok { + return w, true + } + } + } + } + // if requestAccept is empty + writer, ok := entityAccessRegistry.accessorAt(r.requestAccept) + if !ok { + // if not registered then fallback to the defaults (if set) + if DefaultResponseMimeType == MIME_JSON { + return entityAccessRegistry.accessorAt(MIME_JSON) + } + if DefaultResponseMimeType == MIME_XML { + return entityAccessRegistry.accessorAt(MIME_XML) + } + // Fallback to whatever the route says it can produce. + // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html + for _, each := range r.routeProduces { + if w, ok := entityAccessRegistry.accessorAt(each); ok { + return w, true + } + } + if trace { + traceLogger.Printf("no registered EntityReaderWriter found for %s", r.requestAccept) + } + } + return writer, ok +} + +// WriteEntity calls WriteHeaderAndEntity with Http Status OK (200) +func (r *Response) WriteEntity(value interface{}) error { + return r.WriteHeaderAndEntity(http.StatusOK, value) +} + +// WriteHeaderAndEntity marshals the value using the representation denoted by the Accept Header and the registered EntityWriters. +// If no Accept header is specified (or */*) then respond with the Content-Type as specified by the first in the Route.Produces. +// If an Accept header is specified then respond with the Content-Type as specified by the first in the Route.Produces that is matched with the Accept header. +// If the value is nil then no response is send except for the Http status. You may want to call WriteHeader(http.StatusNotFound) instead. +// If there is no writer available that can represent the value in the requested MIME type then Http Status NotAcceptable is written. +// Current implementation ignores any q-parameters in the Accept Header. +// Returns an error if the value could not be written on the response. +func (r *Response) WriteHeaderAndEntity(status int, value interface{}) error { + writer, ok := r.EntityWriter() + if !ok { + r.WriteHeader(http.StatusNotAcceptable) + return nil + } + return writer.Write(r, status, value) +} + +// WriteAsXml is a convenience method for writing a value in xml (requires Xml tags on the value) +// It uses the standard encoding/xml package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteAsXml(value interface{}) error { + return writeXML(r, http.StatusOK, MIME_XML, value) +} + +// WriteHeaderAndXml is a convenience method for writing a status and value in xml (requires Xml tags on the value) +// It uses the standard encoding/xml package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteHeaderAndXml(status int, value interface{}) error { + return writeXML(r, status, MIME_XML, value) +} + +// WriteAsJson is a convenience method for writing a value in json. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteAsJson(value interface{}) error { + return writeJSON(r, http.StatusOK, MIME_JSON, value) +} + +// WriteJson is a convenience method for writing a value in Json with a given Content-Type. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteJson(value interface{}, contentType string) error { + return writeJSON(r, http.StatusOK, contentType, value) +} + +// WriteHeaderAndJson is a convenience method for writing the status and a value in Json with a given Content-Type. +// It uses the standard encoding/json package for marshalling the value ; not using a registered EntityReaderWriter. +func (r *Response) WriteHeaderAndJson(status int, value interface{}, contentType string) error { + return writeJSON(r, status, contentType, value) +} + +// WriteError write the http status and the error string on the response. +func (r *Response) WriteError(httpStatus int, err error) error { + r.err = err + return r.WriteErrorString(httpStatus, err.Error()) +} + +// WriteServiceError is a convenience method for a responding with a status and a ServiceError +func (r *Response) WriteServiceError(httpStatus int, err ServiceError) error { + r.err = err + return r.WriteHeaderAndEntity(httpStatus, err) +} + +// WriteErrorString is a convenience method for an error status with the actual error +func (r *Response) WriteErrorString(httpStatus int, errorReason string) error { + if r.err == nil { + // if not called from WriteError + r.err = errors.New(errorReason) + } + r.WriteHeader(httpStatus) + if _, err := r.Write([]byte(errorReason)); err != nil { + return err + } + return nil +} + +// Flush implements http.Flusher interface, which sends any buffered data to the client. +func (r *Response) Flush() { + if f, ok := r.ResponseWriter.(http.Flusher); ok { + f.Flush() + } else if trace { + traceLogger.Printf("ResponseWriter %v doesn't support Flush", r) + } +} + +// WriteHeader is overridden to remember the Status Code that has been written. +// Changes to the Header of the response have no effect after this. +func (r *Response) WriteHeader(httpStatus int) { + r.statusCode = httpStatus + r.ResponseWriter.WriteHeader(httpStatus) +} + +// StatusCode returns the code that has been written using WriteHeader. +func (r Response) StatusCode() int { + if 0 == r.statusCode { + // no status code has been written yet; assume OK + return http.StatusOK + } + return r.statusCode +} + +// Write writes the data to the connection as part of an HTTP reply. +// Write is part of http.ResponseWriter interface. +func (r *Response) Write(bytes []byte) (int, error) { + written, err := r.ResponseWriter.Write(bytes) + r.contentLength += written + return written, err +} + +// ContentLength returns the number of bytes written for the response content. +// Note that this value is only correct if all data is written through the Response using its Write* methods. +// Data written directly using the underlying http.ResponseWriter is not accounted for. +func (r Response) ContentLength() int { + return r.contentLength +} + +// CloseNotify is part of http.CloseNotifier interface +func (r Response) CloseNotify() <-chan bool { + return r.ResponseWriter.(http.CloseNotifier).CloseNotify() +} + +// Error returns the err created by WriteError +func (r Response) Error() error { + return r.err +} diff --git a/vendor/github.com/emicklei/go-restful/route.go b/vendor/github.com/emicklei/go-restful/route.go new file mode 100644 index 0000000000..f54e8622e3 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route.go @@ -0,0 +1,183 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "net/http" + "strings" +) + +// RouteFunction declares the signature of a function that can be bound to a Route. +type RouteFunction func(*Request, *Response) + +// Route binds a HTTP Method,Path,Consumes combination to a RouteFunction. +type Route struct { + Method string + Produces []string + Consumes []string + Path string // webservice root path + described path + Function RouteFunction + Filters []FilterFunction + + // cached values for dispatching + relativePath string + pathParts []string + pathExpr *pathExpression // cached compilation of relativePath as RegExp + + // documentation + Doc string + Notes string + Operation string + ParameterDocs []*Parameter + ResponseErrors map[int]ResponseError + ReadSample, WriteSample interface{} // structs that model an example request or response payload +} + +// Initialize for Route +func (r *Route) postBuild() { + r.pathParts = tokenizePath(r.Path) +} + +// Create Request and Response from their http versions +func (r *Route) wrapRequestResponse(httpWriter http.ResponseWriter, httpRequest *http.Request) (*Request, *Response) { + params := r.extractParameters(httpRequest.URL.Path) + wrappedRequest := NewRequest(httpRequest) + wrappedRequest.pathParameters = params + wrappedRequest.selectedRoutePath = r.Path + wrappedResponse := NewResponse(httpWriter) + wrappedResponse.requestAccept = httpRequest.Header.Get(HEADER_Accept) + wrappedResponse.routeProduces = r.Produces + return wrappedRequest, wrappedResponse +} + +// dispatchWithFilters call the function after passing through its own filters +func (r *Route) dispatchWithFilters(wrappedRequest *Request, wrappedResponse *Response) { + if len(r.Filters) > 0 { + chain := FilterChain{Filters: r.Filters, Target: r.Function} + chain.ProcessFilter(wrappedRequest, wrappedResponse) + } else { + // unfiltered + r.Function(wrappedRequest, wrappedResponse) + } +} + +// Return whether the mimeType matches to what this Route can produce. +func (r Route) matchesAccept(mimeTypesWithQuality string) bool { + parts := strings.Split(mimeTypesWithQuality, ",") + for _, each := range parts { + var withoutQuality string + if strings.Contains(each, ";") { + withoutQuality = strings.Split(each, ";")[0] + } else { + withoutQuality = each + } + // trim before compare + withoutQuality = strings.Trim(withoutQuality, " ") + if withoutQuality == "*/*" { + return true + } + for _, producibleType := range r.Produces { + if producibleType == "*/*" || producibleType == withoutQuality { + return true + } + } + } + return false +} + +// Return whether this Route can consume content with a type specified by mimeTypes (can be empty). +func (r Route) matchesContentType(mimeTypes string) bool { + + if len(r.Consumes) == 0 { + // did not specify what it can consume ; any media type (“*/*”) is assumed + return true + } + + if len(mimeTypes) == 0 { + // idempotent methods with (most-likely or garanteed) empty content match missing Content-Type + m := r.Method + if m == "GET" || m == "HEAD" || m == "OPTIONS" || m == "DELETE" || m == "TRACE" { + return true + } + // proceed with default + mimeTypes = MIME_OCTET + } + + parts := strings.Split(mimeTypes, ",") + for _, each := range parts { + var contentType string + if strings.Contains(each, ";") { + contentType = strings.Split(each, ";")[0] + } else { + contentType = each + } + // trim before compare + contentType = strings.Trim(contentType, " ") + for _, consumeableType := range r.Consumes { + if consumeableType == "*/*" || consumeableType == contentType { + return true + } + } + } + return false +} + +// Extract the parameters from the request url path +func (r Route) extractParameters(urlPath string) map[string]string { + urlParts := tokenizePath(urlPath) + pathParameters := map[string]string{} + for i, key := range r.pathParts { + var value string + if i >= len(urlParts) { + value = "" + } else { + value = urlParts[i] + } + if strings.HasPrefix(key, "{") { // path-parameter + if colon := strings.Index(key, ":"); colon != -1 { + // extract by regex + regPart := key[colon+1 : len(key)-1] + keyPart := key[1:colon] + if regPart == "*" { + pathParameters[keyPart] = untokenizePath(i, urlParts) + break + } else { + pathParameters[keyPart] = value + } + } else { + // without enclosing {} + pathParameters[key[1:len(key)-1]] = value + } + } + } + return pathParameters +} + +// Untokenize back into an URL path using the slash separator +func untokenizePath(offset int, parts []string) string { + var buffer bytes.Buffer + for p := offset; p < len(parts); p++ { + buffer.WriteString(parts[p]) + // do not end + if p < len(parts)-1 { + buffer.WriteString("/") + } + } + return buffer.String() +} + +// Tokenize an URL path using the slash separator ; the result does not have empty tokens +func tokenizePath(path string) []string { + if "/" == path { + return []string{} + } + return strings.Split(strings.Trim(path, "/"), "/") +} + +// for debugging +func (r Route) String() string { + return r.Method + " " + r.Path +} diff --git a/vendor/github.com/emicklei/go-restful/route_builder.go b/vendor/github.com/emicklei/go-restful/route_builder.go new file mode 100644 index 0000000000..8bc1ab6846 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/route_builder.go @@ -0,0 +1,240 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "os" + "reflect" + "runtime" + "strings" + + "github.com/emicklei/go-restful/log" +) + +// RouteBuilder is a helper to construct Routes. +type RouteBuilder struct { + rootPath string + currentPath string + produces []string + consumes []string + httpMethod string // required + function RouteFunction // required + filters []FilterFunction + // documentation + doc string + notes string + operation string + readSample, writeSample interface{} + parameters []*Parameter + errorMap map[int]ResponseError +} + +// Do evaluates each argument with the RouteBuilder itself. +// This allows you to follow DRY principles without breaking the fluent programming style. +// Example: +// ws.Route(ws.DELETE("/{name}").To(t.deletePerson).Do(Returns200, Returns500)) +// +// func Returns500(b *RouteBuilder) { +// b.Returns(500, "Internal Server Error", restful.ServiceError{}) +// } +func (b *RouteBuilder) Do(oneArgBlocks ...func(*RouteBuilder)) *RouteBuilder { + for _, each := range oneArgBlocks { + each(b) + } + return b +} + +// To bind the route to a function. +// If this route is matched with the incoming Http Request then call this function with the *Request,*Response pair. Required. +func (b *RouteBuilder) To(function RouteFunction) *RouteBuilder { + b.function = function + return b +} + +// Method specifies what HTTP method to match. Required. +func (b *RouteBuilder) Method(method string) *RouteBuilder { + b.httpMethod = method + return b +} + +// Produces specifies what MIME types can be produced ; the matched one will appear in the Content-Type Http header. +func (b *RouteBuilder) Produces(mimeTypes ...string) *RouteBuilder { + b.produces = mimeTypes + return b +} + +// Consumes specifies what MIME types can be consumes ; the Accept Http header must matched any of these +func (b *RouteBuilder) Consumes(mimeTypes ...string) *RouteBuilder { + b.consumes = mimeTypes + return b +} + +// Path specifies the relative (w.r.t WebService root path) URL path to match. Default is "/". +func (b *RouteBuilder) Path(subPath string) *RouteBuilder { + b.currentPath = subPath + return b +} + +// Doc tells what this route is all about. Optional. +func (b *RouteBuilder) Doc(documentation string) *RouteBuilder { + b.doc = documentation + return b +} + +// A verbose explanation of the operation behavior. Optional. +func (b *RouteBuilder) Notes(notes string) *RouteBuilder { + b.notes = notes + return b +} + +// Reads tells what resource type will be read from the request payload. Optional. +// A parameter of type "body" is added ,required is set to true and the dataType is set to the qualified name of the sample's type. +func (b *RouteBuilder) Reads(sample interface{}) *RouteBuilder { + b.readSample = sample + typeAsName := reflect.TypeOf(sample).String() + bodyParameter := &Parameter{&ParameterData{Name: "body"}} + bodyParameter.beBody() + bodyParameter.Required(true) + bodyParameter.DataType(typeAsName) + b.Param(bodyParameter) + return b +} + +// ParameterNamed returns a Parameter already known to the RouteBuilder. Returns nil if not. +// Use this to modify or extend information for the Parameter (through its Data()). +func (b RouteBuilder) ParameterNamed(name string) (p *Parameter) { + for _, each := range b.parameters { + if each.Data().Name == name { + return each + } + } + return p +} + +// Writes tells what resource type will be written as the response payload. Optional. +func (b *RouteBuilder) Writes(sample interface{}) *RouteBuilder { + b.writeSample = sample + return b +} + +// Param allows you to document the parameters of the Route. It adds a new Parameter (does not check for duplicates). +func (b *RouteBuilder) Param(parameter *Parameter) *RouteBuilder { + if b.parameters == nil { + b.parameters = []*Parameter{} + } + b.parameters = append(b.parameters, parameter) + return b +} + +// Operation allows you to document what the actual method/function call is of the Route. +// Unless called, the operation name is derived from the RouteFunction set using To(..). +func (b *RouteBuilder) Operation(name string) *RouteBuilder { + b.operation = name + return b +} + +// ReturnsError is deprecated, use Returns instead. +func (b *RouteBuilder) ReturnsError(code int, message string, model interface{}) *RouteBuilder { + log.Print("ReturnsError is deprecated, use Returns instead.") + return b.Returns(code, message, model) +} + +// Returns allows you to document what responses (errors or regular) can be expected. +// The model parameter is optional ; either pass a struct instance or use nil if not applicable. +func (b *RouteBuilder) Returns(code int, message string, model interface{}) *RouteBuilder { + err := ResponseError{ + Code: code, + Message: message, + Model: model, + } + // lazy init because there is no NewRouteBuilder (yet) + if b.errorMap == nil { + b.errorMap = map[int]ResponseError{} + } + b.errorMap[code] = err + return b +} + +type ResponseError struct { + Code int + Message string + Model interface{} +} + +func (b *RouteBuilder) servicePath(path string) *RouteBuilder { + b.rootPath = path + return b +} + +// Filter appends a FilterFunction to the end of filters for this Route to build. +func (b *RouteBuilder) Filter(filter FilterFunction) *RouteBuilder { + b.filters = append(b.filters, filter) + return b +} + +// If no specific Route path then set to rootPath +// If no specific Produces then set to rootProduces +// If no specific Consumes then set to rootConsumes +func (b *RouteBuilder) copyDefaults(rootProduces, rootConsumes []string) { + if len(b.produces) == 0 { + b.produces = rootProduces + } + if len(b.consumes) == 0 { + b.consumes = rootConsumes + } +} + +// Build creates a new Route using the specification details collected by the RouteBuilder +func (b *RouteBuilder) Build() Route { + pathExpr, err := newPathExpression(b.currentPath) + if err != nil { + log.Printf("[restful] Invalid path:%s because:%v", b.currentPath, err) + os.Exit(1) + } + if b.function == nil { + log.Printf("[restful] No function specified for route:" + b.currentPath) + os.Exit(1) + } + operationName := b.operation + if len(operationName) == 0 && b.function != nil { + // extract from definition + operationName = nameOfFunction(b.function) + } + route := Route{ + Method: b.httpMethod, + Path: concatPath(b.rootPath, b.currentPath), + Produces: b.produces, + Consumes: b.consumes, + Function: b.function, + Filters: b.filters, + relativePath: b.currentPath, + pathExpr: pathExpr, + Doc: b.doc, + Notes: b.notes, + Operation: operationName, + ParameterDocs: b.parameters, + ResponseErrors: b.errorMap, + ReadSample: b.readSample, + WriteSample: b.writeSample} + route.postBuild() + return route +} + +func concatPath(path1, path2 string) string { + return strings.TrimRight(path1, "/") + "/" + strings.TrimLeft(path2, "/") +} + +// nameOfFunction returns the short name of the function f for documentation. +// It uses a runtime feature for debugging ; its value may change for later Go versions. +func nameOfFunction(f interface{}) string { + fun := runtime.FuncForPC(reflect.ValueOf(f).Pointer()) + tokenized := strings.Split(fun.Name(), ".") + last := tokenized[len(tokenized)-1] + last = strings.TrimSuffix(last, ")·fm") // < Go 1.5 + last = strings.TrimSuffix(last, ")-fm") // Go 1.5 + last = strings.TrimSuffix(last, "·fm") // < Go 1.5 + last = strings.TrimSuffix(last, "-fm") // Go 1.5 + return last +} diff --git a/vendor/github.com/emicklei/go-restful/router.go b/vendor/github.com/emicklei/go-restful/router.go new file mode 100644 index 0000000000..9b32fb6753 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/router.go @@ -0,0 +1,18 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "net/http" + +// A RouteSelector finds the best matching Route given the input HTTP Request +type RouteSelector interface { + + // SelectRoute finds a Route given the input HTTP Request and a list of WebServices. + // It returns a selected Route and its containing WebService or an error indicating + // a problem. + SelectRoute( + webServices []*WebService, + httpRequest *http.Request) (selectedService *WebService, selected *Route, err error) +} diff --git a/vendor/github.com/emicklei/go-restful/service_error.go b/vendor/github.com/emicklei/go-restful/service_error.go new file mode 100644 index 0000000000..62d1108bbd --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/service_error.go @@ -0,0 +1,23 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "fmt" + +// ServiceError is a transport object to pass information about a non-Http error occurred in a WebService while processing a request. +type ServiceError struct { + Code int + Message string +} + +// NewError returns a ServiceError using the code and reason +func NewError(code int, message string) ServiceError { + return ServiceError{Code: code, Message: message} +} + +// Error returns a text representation of the service error +func (s ServiceError) Error() string { + return fmt.Sprintf("[ServiceError:%v] %v", s.Code, s.Message) +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/CHANGES.md b/vendor/github.com/emicklei/go-restful/swagger/CHANGES.md new file mode 100644 index 0000000000..736f6f37c5 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/CHANGES.md @@ -0,0 +1,43 @@ +Change history of swagger += +2015-10-16 +- add type override mechanism for swagger models (MR 254, nathanejohnson) +- replace uses of wildcard in generated apidocs (issue 251) + +2015-05-25 +- (api break) changed the type of Properties in Model +- (api break) changed the type of Models in ApiDeclaration +- (api break) changed the parameter type of PostBuildDeclarationMapFunc + +2015-04-09 +- add ModelBuildable interface for customization of Model + +2015-03-17 +- preserve order of Routes per WebService in Swagger listing +- fix use of $ref and type in Swagger models +- add api version to listing + +2014-11-14 +- operation parameters are now sorted using ordering path,query,form,header,body + +2014-11-12 +- respect omitempty tag value for embedded structs +- expose ApiVersion of WebService to Swagger ApiDeclaration + +2014-05-29 +- (api add) Ability to define custom http.Handler to serve swagger-ui static files + +2014-05-04 +- (fix) include model for array element type of response + +2014-01-03 +- (fix) do not add primitive type to the Api models + +2013-11-27 +- (fix) make Swagger work for WebServices with root ("/" or "") paths + +2013-10-29 +- (api add) package variable LogInfo to customize logging function + +2013-10-15 +- upgraded to spec version 1.2 (https://github.com/wordnik/swagger-core/wiki/1.2-transition) \ No newline at end of file diff --git a/vendor/github.com/emicklei/go-restful/swagger/api_declaration_list.go b/vendor/github.com/emicklei/go-restful/swagger/api_declaration_list.go new file mode 100644 index 0000000000..9f4c3690ac --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/api_declaration_list.go @@ -0,0 +1,64 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// ApiDeclarationList maintains an ordered list of ApiDeclaration. +type ApiDeclarationList struct { + List []ApiDeclaration +} + +// At returns the ApiDeclaration by its path unless absent, then ok is false +func (l *ApiDeclarationList) At(path string) (a ApiDeclaration, ok bool) { + for _, each := range l.List { + if each.ResourcePath == path { + return each, true + } + } + return a, false +} + +// Put adds or replaces a ApiDeclaration with this name +func (l *ApiDeclarationList) Put(path string, a ApiDeclaration) { + // maybe replace existing + for i, each := range l.List { + if each.ResourcePath == path { + // replace + l.List[i] = a + return + } + } + // add + l.List = append(l.List, a) +} + +// Do enumerates all the properties, each with its assigned name +func (l *ApiDeclarationList) Do(block func(path string, decl ApiDeclaration)) { + for _, each := range l.List { + block(each.ResourcePath, each) + } +} + +// MarshalJSON writes the ModelPropertyList as if it was a map[string]ModelProperty +func (l ApiDeclarationList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.ResourcePath) + buf.WriteString("\": ") + encoder.Encode(each) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/config.go b/vendor/github.com/emicklei/go-restful/swagger/config.go new file mode 100644 index 0000000000..510d6fc133 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/config.go @@ -0,0 +1,38 @@ +package swagger + +import ( + "net/http" + + "github.com/emicklei/go-restful" +) + +// PostBuildDeclarationMapFunc can be used to modify the api declaration map. +type PostBuildDeclarationMapFunc func(apiDeclarationMap *ApiDeclarationList) + +type MapSchemaFormatFunc func(typeName string) string + +type Config struct { + // url where the services are available, e.g. http://localhost:8080 + // if left empty then the basePath of Swagger is taken from the actual request + WebServicesUrl string + // path where the JSON api is avaiable , e.g. /apidocs + ApiPath string + // [optional] path where the swagger UI will be served, e.g. /swagger + SwaggerPath string + // [optional] location of folder containing Swagger HTML5 application index.html + SwaggerFilePath string + // api listing is constructed from this list of restful WebServices. + WebServices []*restful.WebService + // will serve all static content (scripts,pages,images) + StaticHandler http.Handler + // [optional] on default CORS (Cross-Origin-Resource-Sharing) is enabled. + DisableCORS bool + // Top-level API version. Is reflected in the resource listing. + ApiVersion string + // If set then call this handler after building the complete ApiDeclaration Map + PostBuildHandler PostBuildDeclarationMapFunc + // Swagger global info struct + Info Info + // [optional] If set, model builder should call this handler to get addition typename-to-swagger-format-field convertion. + SchemaFormatHandler MapSchemaFormatFunc +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/model_builder.go b/vendor/github.com/emicklei/go-restful/swagger/model_builder.go new file mode 100644 index 0000000000..398e83049c --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/model_builder.go @@ -0,0 +1,449 @@ +package swagger + +import ( + "encoding/json" + "reflect" + "strings" +) + +// ModelBuildable is used for extending Structs that need more control over +// how the Model appears in the Swagger api declaration. +type ModelBuildable interface { + PostBuildModel(m *Model) *Model +} + +type modelBuilder struct { + Models *ModelList + Config *Config +} + +type documentable interface { + SwaggerDoc() map[string]string +} + +// Check if this structure has a method with signature func () SwaggerDoc() map[string]string +// If it exists, retrive the documentation and overwrite all struct tag descriptions +func getDocFromMethodSwaggerDoc2(model reflect.Type) map[string]string { + if docable, ok := reflect.New(model).Elem().Interface().(documentable); ok { + return docable.SwaggerDoc() + } + return make(map[string]string) +} + +// addModelFrom creates and adds a Model to the builder and detects and calls +// the post build hook for customizations +func (b modelBuilder) addModelFrom(sample interface{}) { + if modelOrNil := b.addModel(reflect.TypeOf(sample), ""); modelOrNil != nil { + // allow customizations + if buildable, ok := sample.(ModelBuildable); ok { + modelOrNil = buildable.PostBuildModel(modelOrNil) + b.Models.Put(modelOrNil.Id, *modelOrNil) + } + } +} + +func (b modelBuilder) addModel(st reflect.Type, nameOverride string) *Model { + modelName := b.keyFrom(st) + if nameOverride != "" { + modelName = nameOverride + } + // no models needed for primitive types + if b.isPrimitiveType(modelName) { + return nil + } + // golang encoding/json packages says array and slice values encode as + // JSON arrays, except that []byte encodes as a base64-encoded string. + // If we see a []byte here, treat it at as a primitive type (string) + // and deal with it in buildArrayTypeProperty. + if (st.Kind() == reflect.Slice || st.Kind() == reflect.Array) && + st.Elem().Kind() == reflect.Uint8 { + return nil + } + // see if we already have visited this model + if _, ok := b.Models.At(modelName); ok { + return nil + } + sm := Model{ + Id: modelName, + Required: []string{}, + Properties: ModelPropertyList{}} + + // reference the model before further initializing (enables recursive structs) + b.Models.Put(modelName, sm) + + // check for slice or array + if st.Kind() == reflect.Slice || st.Kind() == reflect.Array { + b.addModel(st.Elem(), "") + return &sm + } + // check for structure or primitive type + if st.Kind() != reflect.Struct { + return &sm + } + + fullDoc := getDocFromMethodSwaggerDoc2(st) + modelDescriptions := []string{} + + for i := 0; i < st.NumField(); i++ { + field := st.Field(i) + jsonName, modelDescription, prop := b.buildProperty(field, &sm, modelName) + if len(modelDescription) > 0 { + modelDescriptions = append(modelDescriptions, modelDescription) + } + + // add if not omitted + if len(jsonName) != 0 { + // update description + if fieldDoc, ok := fullDoc[jsonName]; ok { + prop.Description = fieldDoc + } + // update Required + if b.isPropertyRequired(field) { + sm.Required = append(sm.Required, jsonName) + } + sm.Properties.Put(jsonName, prop) + } + } + + // We always overwrite documentation if SwaggerDoc method exists + // "" is special for documenting the struct itself + if modelDoc, ok := fullDoc[""]; ok { + sm.Description = modelDoc + } else if len(modelDescriptions) != 0 { + sm.Description = strings.Join(modelDescriptions, "\n") + } + + // update model builder with completed model + b.Models.Put(modelName, sm) + + return &sm +} + +func (b modelBuilder) isPropertyRequired(field reflect.StructField) bool { + required := true + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if len(s) > 1 && s[1] == "omitempty" { + return false + } + } + return required +} + +func (b modelBuilder) buildProperty(field reflect.StructField, model *Model, modelName string) (jsonName, modelDescription string, prop ModelProperty) { + jsonName = b.jsonNameOfField(field) + if len(jsonName) == 0 { + // empty name signals skip property + return "", "", prop + } + + if tag := field.Tag.Get("modelDescription"); tag != "" { + modelDescription = tag + } + + prop.setPropertyMetadata(field) + if prop.Type != nil { + return jsonName, modelDescription, prop + } + fieldType := field.Type + + // check if type is doing its own marshalling + marshalerType := reflect.TypeOf((*json.Marshaler)(nil)).Elem() + if fieldType.Implements(marshalerType) { + var pType = "string" + if prop.Type == nil { + prop.Type = &pType + } + if prop.Format == "" { + prop.Format = b.jsonSchemaFormat(fieldType.String()) + } + return jsonName, modelDescription, prop + } + + // check if annotation says it is a string + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if len(s) > 1 && s[1] == "string" { + stringt := "string" + prop.Type = &stringt + return jsonName, modelDescription, prop + } + } + + fieldKind := fieldType.Kind() + switch { + case fieldKind == reflect.Struct: + jsonName, prop := b.buildStructTypeProperty(field, jsonName, model) + return jsonName, modelDescription, prop + case fieldKind == reflect.Slice || fieldKind == reflect.Array: + jsonName, prop := b.buildArrayTypeProperty(field, jsonName, modelName) + return jsonName, modelDescription, prop + case fieldKind == reflect.Ptr: + jsonName, prop := b.buildPointerTypeProperty(field, jsonName, modelName) + return jsonName, modelDescription, prop + case fieldKind == reflect.String: + stringt := "string" + prop.Type = &stringt + return jsonName, modelDescription, prop + case fieldKind == reflect.Map: + // if it's a map, it's unstructured, and swagger 1.2 can't handle it + objectType := "object" + prop.Type = &objectType + return jsonName, modelDescription, prop + } + + if b.isPrimitiveType(fieldType.String()) { + mapped := b.jsonSchemaType(fieldType.String()) + prop.Type = &mapped + prop.Format = b.jsonSchemaFormat(fieldType.String()) + return jsonName, modelDescription, prop + } + modelType := fieldType.String() + prop.Ref = &modelType + + if fieldType.Name() == "" { // override type of anonymous structs + nestedTypeName := modelName + "." + jsonName + prop.Ref = &nestedTypeName + b.addModel(fieldType, nestedTypeName) + } + return jsonName, modelDescription, prop +} + +func hasNamedJSONTag(field reflect.StructField) bool { + parts := strings.Split(field.Tag.Get("json"), ",") + if len(parts) == 0 { + return false + } + for _, s := range parts[1:] { + if s == "inline" { + return false + } + } + return len(parts[0]) > 0 +} + +func (b modelBuilder) buildStructTypeProperty(field reflect.StructField, jsonName string, model *Model) (nameJson string, prop ModelProperty) { + prop.setPropertyMetadata(field) + // Check for type override in tag + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + // check for anonymous + if len(fieldType.Name()) == 0 { + // anonymous + anonType := model.Id + "." + jsonName + b.addModel(fieldType, anonType) + prop.Ref = &anonType + return jsonName, prop + } + + if field.Name == fieldType.Name() && field.Anonymous && !hasNamedJSONTag(field) { + // embedded struct + sub := modelBuilder{new(ModelList), b.Config} + sub.addModel(fieldType, "") + subKey := sub.keyFrom(fieldType) + // merge properties from sub + subModel, _ := sub.Models.At(subKey) + subModel.Properties.Do(func(k string, v ModelProperty) { + model.Properties.Put(k, v) + // if subModel says this property is required then include it + required := false + for _, each := range subModel.Required { + if k == each { + required = true + break + } + } + if required { + model.Required = append(model.Required, k) + } + }) + // add all new referenced models + sub.Models.Do(func(key string, sub Model) { + if key != subKey { + if _, ok := b.Models.At(key); !ok { + b.Models.Put(key, sub) + } + } + }) + // empty name signals skip property + return "", prop + } + // simple struct + b.addModel(fieldType, "") + var pType = fieldType.String() + prop.Ref = &pType + return jsonName, prop +} + +func (b modelBuilder) buildArrayTypeProperty(field reflect.StructField, jsonName, modelName string) (nameJson string, prop ModelProperty) { + // check for type override in tags + prop.setPropertyMetadata(field) + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + if fieldType.Elem().Kind() == reflect.Uint8 { + stringt := "string" + prop.Type = &stringt + return jsonName, prop + } + var pType = "array" + prop.Type = &pType + isPrimitive := b.isPrimitiveType(fieldType.Elem().Name()) + elemTypeName := b.getElementTypeName(modelName, jsonName, fieldType.Elem()) + prop.Items = new(Item) + if isPrimitive { + mapped := b.jsonSchemaType(elemTypeName) + prop.Items.Type = &mapped + } else { + prop.Items.Ref = &elemTypeName + } + // add|overwrite model for element type + if fieldType.Elem().Kind() == reflect.Ptr { + fieldType = fieldType.Elem() + } + if !isPrimitive { + b.addModel(fieldType.Elem(), elemTypeName) + } + return jsonName, prop +} + +func (b modelBuilder) buildPointerTypeProperty(field reflect.StructField, jsonName, modelName string) (nameJson string, prop ModelProperty) { + prop.setPropertyMetadata(field) + // Check for type override in tags + if prop.Type != nil { + return jsonName, prop + } + fieldType := field.Type + + // override type of pointer to list-likes + if fieldType.Elem().Kind() == reflect.Slice || fieldType.Elem().Kind() == reflect.Array { + var pType = "array" + prop.Type = &pType + isPrimitive := b.isPrimitiveType(fieldType.Elem().Elem().Name()) + elemName := b.getElementTypeName(modelName, jsonName, fieldType.Elem().Elem()) + if isPrimitive { + primName := b.jsonSchemaType(elemName) + prop.Items = &Item{Ref: &primName} + } else { + prop.Items = &Item{Ref: &elemName} + } + if !isPrimitive { + // add|overwrite model for element type + b.addModel(fieldType.Elem().Elem(), elemName) + } + } else { + // non-array, pointer type + var pType = b.jsonSchemaType(fieldType.String()[1:]) // no star, include pkg path + if b.isPrimitiveType(fieldType.String()[1:]) { + prop.Type = &pType + prop.Format = b.jsonSchemaFormat(fieldType.String()[1:]) + return jsonName, prop + } + prop.Ref = &pType + elemName := "" + if fieldType.Elem().Name() == "" { + elemName = modelName + "." + jsonName + prop.Ref = &elemName + } + b.addModel(fieldType.Elem(), elemName) + } + return jsonName, prop +} + +func (b modelBuilder) getElementTypeName(modelName, jsonName string, t reflect.Type) string { + if t.Kind() == reflect.Ptr { + return t.String()[1:] + } + if t.Name() == "" { + return modelName + "." + jsonName + } + return b.keyFrom(t) +} + +func (b modelBuilder) keyFrom(st reflect.Type) string { + key := st.String() + if len(st.Name()) == 0 { // unnamed type + // Swagger UI has special meaning for [ + key = strings.Replace(key, "[]", "||", -1) + } + return key +} + +// see also https://golang.org/ref/spec#Numeric_types +func (b modelBuilder) isPrimitiveType(modelName string) bool { + if len(modelName) == 0 { + return false + } + return strings.Contains("uint uint8 uint16 uint32 uint64 int int8 int16 int32 int64 float32 float64 bool string byte rune time.Time", modelName) +} + +// jsonNameOfField returns the name of the field as it should appear in JSON format +// An empty string indicates that this field is not part of the JSON representation +func (b modelBuilder) jsonNameOfField(field reflect.StructField) string { + if jsonTag := field.Tag.Get("json"); jsonTag != "" { + s := strings.Split(jsonTag, ",") + if s[0] == "-" { + // empty name signals skip property + return "" + } else if s[0] != "" { + return s[0] + } + } + return field.Name +} + +// see also http://json-schema.org/latest/json-schema-core.html#anchor8 +func (b modelBuilder) jsonSchemaType(modelName string) string { + schemaMap := map[string]string{ + "uint": "integer", + "uint8": "integer", + "uint16": "integer", + "uint32": "integer", + "uint64": "integer", + + "int": "integer", + "int8": "integer", + "int16": "integer", + "int32": "integer", + "int64": "integer", + + "byte": "integer", + "float64": "number", + "float32": "number", + "bool": "boolean", + "time.Time": "string", + } + mapped, ok := schemaMap[modelName] + if !ok { + return modelName // use as is (custom or struct) + } + return mapped +} + +func (b modelBuilder) jsonSchemaFormat(modelName string) string { + if b.Config != nil && b.Config.SchemaFormatHandler != nil { + if mapped := b.Config.SchemaFormatHandler(modelName); mapped != "" { + return mapped + } + } + schemaMap := map[string]string{ + "int": "int32", + "int32": "int32", + "int64": "int64", + "byte": "byte", + "uint": "integer", + "uint8": "byte", + "float64": "double", + "float32": "float", + "time.Time": "date-time", + "*time.Time": "date-time", + } + mapped, ok := schemaMap[modelName] + if !ok { + return "" // no format + } + return mapped +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/model_list.go b/vendor/github.com/emicklei/go-restful/swagger/model_list.go new file mode 100644 index 0000000000..9bb6cb6785 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/model_list.go @@ -0,0 +1,86 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// NamedModel associates a name with a Model (not using its Id) +type NamedModel struct { + Name string + Model Model +} + +// ModelList encapsulates a list of NamedModel (association) +type ModelList struct { + List []NamedModel +} + +// Put adds or replaces a Model by its name +func (l *ModelList) Put(name string, model Model) { + for i, each := range l.List { + if each.Name == name { + // replace + l.List[i] = NamedModel{name, model} + return + } + } + // add + l.List = append(l.List, NamedModel{name, model}) +} + +// At returns a Model by its name, ok is false if absent +func (l *ModelList) At(name string) (m Model, ok bool) { + for _, each := range l.List { + if each.Name == name { + return each.Model, true + } + } + return m, false +} + +// Do enumerates all the models, each with its assigned name +func (l *ModelList) Do(block func(name string, value Model)) { + for _, each := range l.List { + block(each.Name, each.Model) + } +} + +// MarshalJSON writes the ModelList as if it was a map[string]Model +func (l ModelList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.Name) + buf.WriteString("\": ") + encoder.Encode(each.Model) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} + +// UnmarshalJSON reads back a ModelList. This is an expensive operation. +func (l *ModelList) UnmarshalJSON(data []byte) error { + raw := map[string]interface{}{} + json.NewDecoder(bytes.NewReader(data)).Decode(&raw) + for k, v := range raw { + // produces JSON bytes for each value + data, err := json.Marshal(v) + if err != nil { + return err + } + var m Model + json.NewDecoder(bytes.NewReader(data)).Decode(&m) + l.Put(k, m) + } + return nil +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/model_property_ext.go b/vendor/github.com/emicklei/go-restful/swagger/model_property_ext.go new file mode 100644 index 0000000000..04fff2c57a --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/model_property_ext.go @@ -0,0 +1,66 @@ +package swagger + +import ( + "reflect" + "strings" +) + +func (prop *ModelProperty) setDescription(field reflect.StructField) { + if tag := field.Tag.Get("description"); tag != "" { + prop.Description = tag + } +} + +func (prop *ModelProperty) setDefaultValue(field reflect.StructField) { + if tag := field.Tag.Get("default"); tag != "" { + prop.DefaultValue = Special(tag) + } +} + +func (prop *ModelProperty) setEnumValues(field reflect.StructField) { + // We use | to separate the enum values. This value is chosen + // since its unlikely to be useful in actual enumeration values. + if tag := field.Tag.Get("enum"); tag != "" { + prop.Enum = strings.Split(tag, "|") + } +} + +func (prop *ModelProperty) setMaximum(field reflect.StructField) { + if tag := field.Tag.Get("maximum"); tag != "" { + prop.Maximum = tag + } +} + +func (prop *ModelProperty) setType(field reflect.StructField) { + if tag := field.Tag.Get("type"); tag != "" { + prop.Type = &tag + } +} + +func (prop *ModelProperty) setMinimum(field reflect.StructField) { + if tag := field.Tag.Get("minimum"); tag != "" { + prop.Minimum = tag + } +} + +func (prop *ModelProperty) setUniqueItems(field reflect.StructField) { + tag := field.Tag.Get("unique") + switch tag { + case "true": + v := true + prop.UniqueItems = &v + case "false": + v := false + prop.UniqueItems = &v + } +} + +func (prop *ModelProperty) setPropertyMetadata(field reflect.StructField) { + prop.setDescription(field) + prop.setEnumValues(field) + prop.setMinimum(field) + prop.setMaximum(field) + prop.setUniqueItems(field) + prop.setDefaultValue(field) + prop.setType(field) +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/model_property_list.go b/vendor/github.com/emicklei/go-restful/swagger/model_property_list.go new file mode 100644 index 0000000000..3babb19448 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/model_property_list.go @@ -0,0 +1,87 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "bytes" + "encoding/json" +) + +// NamedModelProperty associates a name to a ModelProperty +type NamedModelProperty struct { + Name string + Property ModelProperty +} + +// ModelPropertyList encapsulates a list of NamedModelProperty (association) +type ModelPropertyList struct { + List []NamedModelProperty +} + +// At returns the ModelPropety by its name unless absent, then ok is false +func (l *ModelPropertyList) At(name string) (p ModelProperty, ok bool) { + for _, each := range l.List { + if each.Name == name { + return each.Property, true + } + } + return p, false +} + +// Put adds or replaces a ModelProperty with this name +func (l *ModelPropertyList) Put(name string, prop ModelProperty) { + // maybe replace existing + for i, each := range l.List { + if each.Name == name { + // replace + l.List[i] = NamedModelProperty{Name: name, Property: prop} + return + } + } + // add + l.List = append(l.List, NamedModelProperty{Name: name, Property: prop}) +} + +// Do enumerates all the properties, each with its assigned name +func (l *ModelPropertyList) Do(block func(name string, value ModelProperty)) { + for _, each := range l.List { + block(each.Name, each.Property) + } +} + +// MarshalJSON writes the ModelPropertyList as if it was a map[string]ModelProperty +func (l ModelPropertyList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + buf.WriteString("{\n") + for i, each := range l.List { + buf.WriteString("\"") + buf.WriteString(each.Name) + buf.WriteString("\": ") + encoder.Encode(each.Property) + if i < len(l.List)-1 { + buf.WriteString(",\n") + } + } + buf.WriteString("}") + return buf.Bytes(), nil +} + +// UnmarshalJSON reads back a ModelPropertyList. This is an expensive operation. +func (l *ModelPropertyList) UnmarshalJSON(data []byte) error { + raw := map[string]interface{}{} + json.NewDecoder(bytes.NewReader(data)).Decode(&raw) + for k, v := range raw { + // produces JSON bytes for each value + data, err := json.Marshal(v) + if err != nil { + return err + } + var m ModelProperty + json.NewDecoder(bytes.NewReader(data)).Decode(&m) + l.Put(k, m) + } + return nil +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/ordered_route_map.go b/vendor/github.com/emicklei/go-restful/swagger/ordered_route_map.go new file mode 100644 index 0000000000..b33ccfbeb9 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/ordered_route_map.go @@ -0,0 +1,36 @@ +package swagger + +// Copyright 2015 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import "github.com/emicklei/go-restful" + +type orderedRouteMap struct { + elements map[string][]restful.Route + keys []string +} + +func newOrderedRouteMap() *orderedRouteMap { + return &orderedRouteMap{ + elements: map[string][]restful.Route{}, + keys: []string{}, + } +} + +func (o *orderedRouteMap) Add(key string, route restful.Route) { + routes, ok := o.elements[key] + if ok { + routes = append(routes, route) + o.elements[key] = routes + return + } + o.elements[key] = []restful.Route{route} + o.keys = append(o.keys, key) +} + +func (o *orderedRouteMap) Do(block func(key string, routes []restful.Route)) { + for _, k := range o.keys { + block(k, o.elements[k]) + } +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/swagger.go b/vendor/github.com/emicklei/go-restful/swagger/swagger.go new file mode 100644 index 0000000000..9c40833e7d --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/swagger.go @@ -0,0 +1,185 @@ +// Package swagger implements the structures of the Swagger +// https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md +package swagger + +const swaggerVersion = "1.2" + +// 4.3.3 Data Type Fields +type DataTypeFields struct { + Type *string `json:"type,omitempty"` // if Ref not used + Ref *string `json:"$ref,omitempty"` // if Type not used + Format string `json:"format,omitempty"` + DefaultValue Special `json:"defaultValue,omitempty"` + Enum []string `json:"enum,omitempty"` + Minimum string `json:"minimum,omitempty"` + Maximum string `json:"maximum,omitempty"` + Items *Item `json:"items,omitempty"` + UniqueItems *bool `json:"uniqueItems,omitempty"` +} + +type Special string + +// 4.3.4 Items Object +type Item struct { + Type *string `json:"type,omitempty"` + Ref *string `json:"$ref,omitempty"` + Format string `json:"format,omitempty"` +} + +// 5.1 Resource Listing +type ResourceListing struct { + SwaggerVersion string `json:"swaggerVersion"` // e.g 1.2 + Apis []Resource `json:"apis"` + ApiVersion string `json:"apiVersion"` + Info Info `json:"info"` + Authorizations []Authorization `json:"authorizations,omitempty"` +} + +// 5.1.2 Resource Object +type Resource struct { + Path string `json:"path"` // relative or absolute, must start with / + Description string `json:"description"` +} + +// 5.1.3 Info Object +type Info struct { + Title string `json:"title"` + Description string `json:"description"` + TermsOfServiceUrl string `json:"termsOfServiceUrl,omitempty"` + Contact string `json:"contact,omitempty"` + License string `json:"license,omitempty"` + LicenseUrl string `json:"licenseUrl,omitempty"` +} + +// 5.1.5 +type Authorization struct { + Type string `json:"type"` + PassAs string `json:"passAs"` + Keyname string `json:"keyname"` + Scopes []Scope `json:"scopes"` + GrantTypes []GrantType `json:"grandTypes"` +} + +// 5.1.6, 5.2.11 +type Scope struct { + // Required. The name of the scope. + Scope string `json:"scope"` + // Recommended. A short description of the scope. + Description string `json:"description"` +} + +// 5.1.7 +type GrantType struct { + Implicit Implicit `json:"implicit"` + AuthorizationCode AuthorizationCode `json:"authorization_code"` +} + +// 5.1.8 Implicit Object +type Implicit struct { + // Required. The login endpoint definition. + loginEndpoint LoginEndpoint `json:"loginEndpoint"` + // An optional alternative name to standard "access_token" OAuth2 parameter. + TokenName string `json:"tokenName"` +} + +// 5.1.9 Authorization Code Object +type AuthorizationCode struct { + TokenRequestEndpoint TokenRequestEndpoint `json:"tokenRequestEndpoint"` + TokenEndpoint TokenEndpoint `json:"tokenEndpoint"` +} + +// 5.1.10 Login Endpoint Object +type LoginEndpoint struct { + // Required. The URL of the authorization endpoint for the implicit grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` +} + +// 5.1.11 Token Request Endpoint Object +type TokenRequestEndpoint struct { + // Required. The URL of the authorization endpoint for the authentication code grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` + // An optional alternative name to standard "client_id" OAuth2 parameter. + ClientIdName string `json:"clientIdName"` + // An optional alternative name to the standard "client_secret" OAuth2 parameter. + ClientSecretName string `json:"clientSecretName"` +} + +// 5.1.12 Token Endpoint Object +type TokenEndpoint struct { + // Required. The URL of the token endpoint for the authentication code grant flow. The value SHOULD be in a URL format. + Url string `json:"url"` + // An optional alternative name to standard "access_token" OAuth2 parameter. + TokenName string `json:"tokenName"` +} + +// 5.2 API Declaration +type ApiDeclaration struct { + SwaggerVersion string `json:"swaggerVersion"` + ApiVersion string `json:"apiVersion"` + BasePath string `json:"basePath"` + ResourcePath string `json:"resourcePath"` // must start with / + Info Info `json:"info"` + Apis []Api `json:"apis,omitempty"` + Models ModelList `json:"models,omitempty"` + Produces []string `json:"produces,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Authorizations []Authorization `json:"authorizations,omitempty"` +} + +// 5.2.2 API Object +type Api struct { + Path string `json:"path"` // relative or absolute, must start with / + Description string `json:"description"` + Operations []Operation `json:"operations,omitempty"` +} + +// 5.2.3 Operation Object +type Operation struct { + DataTypeFields + Method string `json:"method"` + Summary string `json:"summary,omitempty"` + Notes string `json:"notes,omitempty"` + Nickname string `json:"nickname"` + Authorizations []Authorization `json:"authorizations,omitempty"` + Parameters []Parameter `json:"parameters"` + ResponseMessages []ResponseMessage `json:"responseMessages,omitempty"` // optional + Produces []string `json:"produces,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Deprecated string `json:"deprecated,omitempty"` +} + +// 5.2.4 Parameter Object +type Parameter struct { + DataTypeFields + ParamType string `json:"paramType"` // path,query,body,header,form + Name string `json:"name"` + Description string `json:"description"` + Required bool `json:"required"` + AllowMultiple bool `json:"allowMultiple"` +} + +// 5.2.5 Response Message Object +type ResponseMessage struct { + Code int `json:"code"` + Message string `json:"message"` + ResponseModel string `json:"responseModel,omitempty"` +} + +// 5.2.6, 5.2.7 Models Object +type Model struct { + Id string `json:"id"` + Description string `json:"description,omitempty"` + Required []string `json:"required,omitempty"` + Properties ModelPropertyList `json:"properties"` + SubTypes []string `json:"subTypes,omitempty"` + Discriminator string `json:"discriminator,omitempty"` +} + +// 5.2.8 Properties Object +type ModelProperty struct { + DataTypeFields + Description string `json:"description,omitempty"` +} + +// 5.2.10 +type Authorizations map[string]Authorization diff --git a/vendor/github.com/emicklei/go-restful/swagger/swagger_builder.go b/vendor/github.com/emicklei/go-restful/swagger/swagger_builder.go new file mode 100644 index 0000000000..05a3c7e76f --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/swagger_builder.go @@ -0,0 +1,21 @@ +package swagger + +type SwaggerBuilder struct { + SwaggerService +} + +func NewSwaggerBuilder(config Config) *SwaggerBuilder { + return &SwaggerBuilder{*newSwaggerService(config)} +} + +func (sb SwaggerBuilder) ProduceListing() ResourceListing { + return sb.SwaggerService.produceListing() +} + +func (sb SwaggerBuilder) ProduceAllDeclarations() map[string]ApiDeclaration { + return sb.SwaggerService.produceAllDeclarations() +} + +func (sb SwaggerBuilder) ProduceDeclarations(route string) (*ApiDeclaration, bool) { + return sb.SwaggerService.produceDeclarations(route) +} diff --git a/vendor/github.com/emicklei/go-restful/swagger/swagger_webservice.go b/vendor/github.com/emicklei/go-restful/swagger/swagger_webservice.go new file mode 100644 index 0000000000..58dd625902 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/swagger/swagger_webservice.go @@ -0,0 +1,440 @@ +package swagger + +import ( + "fmt" + + "github.com/emicklei/go-restful" + // "github.com/emicklei/hopwatch" + "net/http" + "reflect" + "sort" + "strings" + + "github.com/emicklei/go-restful/log" +) + +type SwaggerService struct { + config Config + apiDeclarationMap *ApiDeclarationList +} + +func newSwaggerService(config Config) *SwaggerService { + sws := &SwaggerService{ + config: config, + apiDeclarationMap: new(ApiDeclarationList)} + + // Build all ApiDeclarations + for _, each := range config.WebServices { + rootPath := each.RootPath() + // skip the api service itself + if rootPath != config.ApiPath { + if rootPath == "" || rootPath == "/" { + // use routes + for _, route := range each.Routes() { + entry := staticPathFromRoute(route) + _, exists := sws.apiDeclarationMap.At(entry) + if !exists { + sws.apiDeclarationMap.Put(entry, sws.composeDeclaration(each, entry)) + } + } + } else { // use root path + sws.apiDeclarationMap.Put(each.RootPath(), sws.composeDeclaration(each, each.RootPath())) + } + } + } + + // if specified then call the PostBuilderHandler + if config.PostBuildHandler != nil { + config.PostBuildHandler(sws.apiDeclarationMap) + } + return sws +} + +// LogInfo is the function that is called when this package needs to log. It defaults to log.Printf +var LogInfo = func(format string, v ...interface{}) { + // use the restful package-wide logger + log.Printf(format, v...) +} + +// InstallSwaggerService add the WebService that provides the API documentation of all services +// conform the Swagger documentation specifcation. (https://github.com/wordnik/swagger-core/wiki). +func InstallSwaggerService(aSwaggerConfig Config) { + RegisterSwaggerService(aSwaggerConfig, restful.DefaultContainer) +} + +// RegisterSwaggerService add the WebService that provides the API documentation of all services +// conform the Swagger documentation specifcation. (https://github.com/wordnik/swagger-core/wiki). +func RegisterSwaggerService(config Config, wsContainer *restful.Container) { + sws := newSwaggerService(config) + ws := new(restful.WebService) + ws.Path(config.ApiPath) + ws.Produces(restful.MIME_JSON) + if config.DisableCORS { + ws.Filter(enableCORS) + } + ws.Route(ws.GET("/").To(sws.getListing)) + ws.Route(ws.GET("/{a}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}/{f}").To(sws.getDeclarations)) + ws.Route(ws.GET("/{a}/{b}/{c}/{d}/{e}/{f}/{g}").To(sws.getDeclarations)) + LogInfo("[restful/swagger] listing is available at %v%v", config.WebServicesUrl, config.ApiPath) + wsContainer.Add(ws) + + // Check paths for UI serving + if config.StaticHandler == nil && config.SwaggerFilePath != "" && config.SwaggerPath != "" { + swaggerPathSlash := config.SwaggerPath + // path must end with slash / + if "/" != config.SwaggerPath[len(config.SwaggerPath)-1:] { + LogInfo("[restful/swagger] use corrected SwaggerPath ; must end with slash (/)") + swaggerPathSlash += "/" + } + + LogInfo("[restful/swagger] %v%v is mapped to folder %v", config.WebServicesUrl, swaggerPathSlash, config.SwaggerFilePath) + wsContainer.Handle(swaggerPathSlash, http.StripPrefix(swaggerPathSlash, http.FileServer(http.Dir(config.SwaggerFilePath)))) + + //if we define a custom static handler use it + } else if config.StaticHandler != nil && config.SwaggerPath != "" { + swaggerPathSlash := config.SwaggerPath + // path must end with slash / + if "/" != config.SwaggerPath[len(config.SwaggerPath)-1:] { + LogInfo("[restful/swagger] use corrected SwaggerFilePath ; must end with slash (/)") + swaggerPathSlash += "/" + + } + LogInfo("[restful/swagger] %v%v is mapped to custom Handler %T", config.WebServicesUrl, swaggerPathSlash, config.StaticHandler) + wsContainer.Handle(swaggerPathSlash, config.StaticHandler) + + } else { + LogInfo("[restful/swagger] Swagger(File)Path is empty ; no UI is served") + } +} + +func staticPathFromRoute(r restful.Route) string { + static := r.Path + bracket := strings.Index(static, "{") + if bracket <= 1 { // result cannot be empty + return static + } + if bracket != -1 { + static = r.Path[:bracket] + } + if strings.HasSuffix(static, "/") { + return static[:len(static)-1] + } else { + return static + } +} + +func enableCORS(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + if origin := req.HeaderParameter(restful.HEADER_Origin); origin != "" { + // prevent duplicate header + if len(resp.Header().Get(restful.HEADER_AccessControlAllowOrigin)) == 0 { + resp.AddHeader(restful.HEADER_AccessControlAllowOrigin, origin) + } + } + chain.ProcessFilter(req, resp) +} + +func (sws SwaggerService) getListing(req *restful.Request, resp *restful.Response) { + listing := sws.produceListing() + resp.WriteAsJson(listing) +} + +func (sws SwaggerService) produceListing() ResourceListing { + listing := ResourceListing{SwaggerVersion: swaggerVersion, ApiVersion: sws.config.ApiVersion, Info: sws.config.Info} + sws.apiDeclarationMap.Do(func(k string, v ApiDeclaration) { + ref := Resource{Path: k} + if len(v.Apis) > 0 { // use description of first (could still be empty) + ref.Description = v.Apis[0].Description + } + listing.Apis = append(listing.Apis, ref) + }) + return listing +} + +func (sws SwaggerService) getDeclarations(req *restful.Request, resp *restful.Response) { + decl, ok := sws.produceDeclarations(composeRootPath(req)) + if !ok { + resp.WriteErrorString(http.StatusNotFound, "ApiDeclaration not found") + return + } + // unless WebServicesUrl is given + if len(sws.config.WebServicesUrl) == 0 { + // update base path from the actual request + // TODO how to detect https? assume http for now + var host string + // X-Forwarded-Host or Host or Request.Host + hostvalues, ok := req.Request.Header["X-Forwarded-Host"] // apache specific? + if !ok || len(hostvalues) == 0 { + forwarded, ok := req.Request.Header["Host"] // without reverse-proxy + if !ok || len(forwarded) == 0 { + // fallback to Host field + host = req.Request.Host + } else { + host = forwarded[0] + } + } else { + host = hostvalues[0] + } + // inspect Referer for the scheme (http vs https) + scheme := "http" + if referer := req.Request.Header["Referer"]; len(referer) > 0 { + if strings.HasPrefix(referer[0], "https") { + scheme = "https" + } + } + decl.BasePath = fmt.Sprintf("%s://%s", scheme, host) + } + resp.WriteAsJson(decl) +} + +func (sws SwaggerService) produceAllDeclarations() map[string]ApiDeclaration { + decls := map[string]ApiDeclaration{} + sws.apiDeclarationMap.Do(func(k string, v ApiDeclaration) { + decls[k] = v + }) + return decls +} + +func (sws SwaggerService) produceDeclarations(route string) (*ApiDeclaration, bool) { + decl, ok := sws.apiDeclarationMap.At(route) + if !ok { + return nil, false + } + decl.BasePath = sws.config.WebServicesUrl + return &decl, true +} + +// composeDeclaration uses all routes and parameters to create a ApiDeclaration +func (sws SwaggerService) composeDeclaration(ws *restful.WebService, pathPrefix string) ApiDeclaration { + decl := ApiDeclaration{ + SwaggerVersion: swaggerVersion, + BasePath: sws.config.WebServicesUrl, + ResourcePath: pathPrefix, + Models: ModelList{}, + ApiVersion: ws.Version()} + + // collect any path parameters + rootParams := []Parameter{} + for _, param := range ws.PathParameters() { + rootParams = append(rootParams, asSwaggerParameter(param.Data())) + } + // aggregate by path + pathToRoutes := newOrderedRouteMap() + for _, other := range ws.Routes() { + if strings.HasPrefix(other.Path, pathPrefix) { + pathToRoutes.Add(other.Path, other) + } + } + pathToRoutes.Do(func(path string, routes []restful.Route) { + api := Api{Path: strings.TrimSuffix(withoutWildcard(path), "/"), Description: ws.Documentation()} + voidString := "void" + for _, route := range routes { + operation := Operation{ + Method: route.Method, + Summary: route.Doc, + Notes: route.Notes, + // Type gets overwritten if there is a write sample + DataTypeFields: DataTypeFields{Type: &voidString}, + Parameters: []Parameter{}, + Nickname: route.Operation, + ResponseMessages: composeResponseMessages(route, &decl, &sws.config)} + + operation.Consumes = route.Consumes + operation.Produces = route.Produces + + // share root params if any + for _, swparam := range rootParams { + operation.Parameters = append(operation.Parameters, swparam) + } + // route specific params + for _, param := range route.ParameterDocs { + operation.Parameters = append(operation.Parameters, asSwaggerParameter(param.Data())) + } + + sws.addModelsFromRouteTo(&operation, route, &decl) + api.Operations = append(api.Operations, operation) + } + decl.Apis = append(decl.Apis, api) + }) + return decl +} + +func withoutWildcard(path string) string { + if strings.HasSuffix(path, ":*}") { + return path[0:len(path)-3] + "}" + } + return path +} + +// composeResponseMessages takes the ResponseErrors (if any) and creates ResponseMessages from them. +func composeResponseMessages(route restful.Route, decl *ApiDeclaration, config *Config) (messages []ResponseMessage) { + if route.ResponseErrors == nil { + return messages + } + // sort by code + codes := sort.IntSlice{} + for code, _ := range route.ResponseErrors { + codes = append(codes, code) + } + codes.Sort() + for _, code := range codes { + each := route.ResponseErrors[code] + message := ResponseMessage{ + Code: code, + Message: each.Message, + } + if each.Model != nil { + st := reflect.TypeOf(each.Model) + isCollection, st := detectCollectionType(st) + modelName := modelBuilder{}.keyFrom(st) + if isCollection { + modelName = "array[" + modelName + "]" + } + modelBuilder{Models: &decl.Models, Config: config}.addModel(st, "") + // reference the model + message.ResponseModel = modelName + } + messages = append(messages, message) + } + return +} + +// addModelsFromRoute takes any read or write sample from the Route and creates a Swagger model from it. +func (sws SwaggerService) addModelsFromRouteTo(operation *Operation, route restful.Route, decl *ApiDeclaration) { + if route.ReadSample != nil { + sws.addModelFromSampleTo(operation, false, route.ReadSample, &decl.Models) + } + if route.WriteSample != nil { + sws.addModelFromSampleTo(operation, true, route.WriteSample, &decl.Models) + } +} + +func detectCollectionType(st reflect.Type) (bool, reflect.Type) { + isCollection := false + if st.Kind() == reflect.Slice || st.Kind() == reflect.Array { + st = st.Elem() + isCollection = true + } else { + if st.Kind() == reflect.Ptr { + if st.Elem().Kind() == reflect.Slice || st.Elem().Kind() == reflect.Array { + st = st.Elem().Elem() + isCollection = true + } + } + } + return isCollection, st +} + +// addModelFromSample creates and adds (or overwrites) a Model from a sample resource +func (sws SwaggerService) addModelFromSampleTo(operation *Operation, isResponse bool, sample interface{}, models *ModelList) { + if isResponse { + type_, items := asDataType(sample, &sws.config) + operation.Type = type_ + operation.Items = items + } + modelBuilder{Models: models, Config: &sws.config}.addModelFrom(sample) +} + +func asSwaggerParameter(param restful.ParameterData) Parameter { + return Parameter{ + DataTypeFields: DataTypeFields{ + Type: ¶m.DataType, + Format: asFormat(param.DataType, param.DataFormat), + DefaultValue: Special(param.DefaultValue), + }, + Name: param.Name, + Description: param.Description, + ParamType: asParamType(param.Kind), + + Required: param.Required} +} + +// Between 1..7 path parameters is supported +func composeRootPath(req *restful.Request) string { + path := "/" + req.PathParameter("a") + b := req.PathParameter("b") + if b == "" { + return path + } + path = path + "/" + b + c := req.PathParameter("c") + if c == "" { + return path + } + path = path + "/" + c + d := req.PathParameter("d") + if d == "" { + return path + } + path = path + "/" + d + e := req.PathParameter("e") + if e == "" { + return path + } + path = path + "/" + e + f := req.PathParameter("f") + if f == "" { + return path + } + path = path + "/" + f + g := req.PathParameter("g") + if g == "" { + return path + } + return path + "/" + g +} + +func asFormat(dataType string, dataFormat string) string { + if dataFormat != "" { + return dataFormat + } + return "" // TODO +} + +func asParamType(kind int) string { + switch { + case kind == restful.PathParameterKind: + return "path" + case kind == restful.QueryParameterKind: + return "query" + case kind == restful.BodyParameterKind: + return "body" + case kind == restful.HeaderParameterKind: + return "header" + case kind == restful.FormParameterKind: + return "form" + } + return "" +} + +func asDataType(any interface{}, config *Config) (*string, *Item) { + // If it's not a collection, return the suggested model name + st := reflect.TypeOf(any) + isCollection, st := detectCollectionType(st) + modelName := modelBuilder{}.keyFrom(st) + // if it's not a collection we are done + if !isCollection { + return &modelName, nil + } + + // XXX: This is not very elegant + // We create an Item object referring to the given model + models := ModelList{} + mb := modelBuilder{Models: &models, Config: config} + mb.addModelFrom(any) + + elemTypeName := mb.getElementTypeName(modelName, "", st) + item := new(Item) + if mb.isPrimitiveType(elemTypeName) { + mapped := mb.jsonSchemaType(elemTypeName) + item.Type = &mapped + } else { + item.Ref = &elemTypeName + } + tmp := "array" + return &tmp, item +} diff --git a/vendor/github.com/emicklei/go-restful/web_service.go b/vendor/github.com/emicklei/go-restful/web_service.go new file mode 100644 index 0000000000..2a51004f80 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/web_service.go @@ -0,0 +1,268 @@ +package restful + +import ( + "errors" + "os" + "sync" + + "github.com/emicklei/go-restful/log" +) + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +// WebService holds a collection of Route values that bind a Http Method + URL Path to a function. +type WebService struct { + rootPath string + pathExpr *pathExpression // cached compilation of rootPath as RegExp + routes []Route + produces []string + consumes []string + pathParameters []*Parameter + filters []FilterFunction + documentation string + apiVersion string + + dynamicRoutes bool + + // protects 'routes' if dynamic routes are enabled + routesLock sync.RWMutex +} + +func (w *WebService) SetDynamicRoutes(enable bool) { + w.dynamicRoutes = enable +} + +// compilePathExpression ensures that the path is compiled into a RegEx for those routers that need it. +func (w *WebService) compilePathExpression() { + compiled, err := newPathExpression(w.rootPath) + if err != nil { + log.Printf("[restful] invalid path:%s because:%v", w.rootPath, err) + os.Exit(1) + } + w.pathExpr = compiled +} + +// ApiVersion sets the API version for documentation purposes. +func (w *WebService) ApiVersion(apiVersion string) *WebService { + w.apiVersion = apiVersion + return w +} + +// Version returns the API version for documentation purposes. +func (w *WebService) Version() string { return w.apiVersion } + +// Path specifies the root URL template path of the WebService. +// All Routes will be relative to this path. +func (w *WebService) Path(root string) *WebService { + w.rootPath = root + if len(w.rootPath) == 0 { + w.rootPath = "/" + } + w.compilePathExpression() + return w +} + +// Param adds a PathParameter to document parameters used in the root path. +func (w *WebService) Param(parameter *Parameter) *WebService { + if w.pathParameters == nil { + w.pathParameters = []*Parameter{} + } + w.pathParameters = append(w.pathParameters, parameter) + return w +} + +// PathParameter creates a new Parameter of kind Path for documentation purposes. +// It is initialized as required with string as its DataType. +func (w *WebService) PathParameter(name, description string) *Parameter { + return PathParameter(name, description) +} + +// PathParameter creates a new Parameter of kind Path for documentation purposes. +// It is initialized as required with string as its DataType. +func PathParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: true, DataType: "string"}} + p.bePath() + return p +} + +// QueryParameter creates a new Parameter of kind Query for documentation purposes. +// It is initialized as not required with string as its DataType. +func (w *WebService) QueryParameter(name, description string) *Parameter { + return QueryParameter(name, description) +} + +// QueryParameter creates a new Parameter of kind Query for documentation purposes. +// It is initialized as not required with string as its DataType. +func QueryParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beQuery() + return p +} + +// BodyParameter creates a new Parameter of kind Body for documentation purposes. +// It is initialized as required without a DataType. +func (w *WebService) BodyParameter(name, description string) *Parameter { + return BodyParameter(name, description) +} + +// BodyParameter creates a new Parameter of kind Body for documentation purposes. +// It is initialized as required without a DataType. +func BodyParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: true}} + p.beBody() + return p +} + +// HeaderParameter creates a new Parameter of kind (Http) Header for documentation purposes. +// It is initialized as not required with string as its DataType. +func (w *WebService) HeaderParameter(name, description string) *Parameter { + return HeaderParameter(name, description) +} + +// HeaderParameter creates a new Parameter of kind (Http) Header for documentation purposes. +// It is initialized as not required with string as its DataType. +func HeaderParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beHeader() + return p +} + +// FormParameter creates a new Parameter of kind Form (using application/x-www-form-urlencoded) for documentation purposes. +// It is initialized as required with string as its DataType. +func (w *WebService) FormParameter(name, description string) *Parameter { + return FormParameter(name, description) +} + +// FormParameter creates a new Parameter of kind Form (using application/x-www-form-urlencoded) for documentation purposes. +// It is initialized as required with string as its DataType. +func FormParameter(name, description string) *Parameter { + p := &Parameter{&ParameterData{Name: name, Description: description, Required: false, DataType: "string"}} + p.beForm() + return p +} + +// Route creates a new Route using the RouteBuilder and add to the ordered list of Routes. +func (w *WebService) Route(builder *RouteBuilder) *WebService { + w.routesLock.Lock() + defer w.routesLock.Unlock() + builder.copyDefaults(w.produces, w.consumes) + w.routes = append(w.routes, builder.Build()) + return w +} + +// RemoveRoute removes the specified route, looks for something that matches 'path' and 'method' +func (w *WebService) RemoveRoute(path, method string) error { + if !w.dynamicRoutes { + return errors.New("dynamic routes are not enabled.") + } + w.routesLock.Lock() + defer w.routesLock.Unlock() + newRoutes := make([]Route, (len(w.routes) - 1)) + current := 0 + for ix := range w.routes { + if w.routes[ix].Method == method && w.routes[ix].Path == path { + continue + } + newRoutes[current] = w.routes[ix] + current = current + 1 + } + w.routes = newRoutes + return nil +} + +// Method creates a new RouteBuilder and initialize its http method +func (w *WebService) Method(httpMethod string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method(httpMethod) +} + +// Produces specifies that this WebService can produce one or more MIME types. +// Http requests must have one of these values set for the Accept header. +func (w *WebService) Produces(contentTypes ...string) *WebService { + w.produces = contentTypes + return w +} + +// Consumes specifies that this WebService can consume one or more MIME types. +// Http requests must have one of these values set for the Content-Type header. +func (w *WebService) Consumes(accepts ...string) *WebService { + w.consumes = accepts + return w +} + +// Routes returns the Routes associated with this WebService +func (w *WebService) Routes() []Route { + if !w.dynamicRoutes { + return w.routes + } + // Make a copy of the array to prevent concurrency problems + w.routesLock.RLock() + defer w.routesLock.RUnlock() + result := make([]Route, len(w.routes)) + for ix := range w.routes { + result[ix] = w.routes[ix] + } + return result +} + +// RootPath returns the RootPath associated with this WebService. Default "/" +func (w *WebService) RootPath() string { + return w.rootPath +} + +// PathParameters return the path parameter names for (shared amoung its Routes) +func (w *WebService) PathParameters() []*Parameter { + return w.pathParameters +} + +// Filter adds a filter function to the chain of filters applicable to all its Routes +func (w *WebService) Filter(filter FilterFunction) *WebService { + w.filters = append(w.filters, filter) + return w +} + +// Doc is used to set the documentation of this service. +func (w *WebService) Doc(plainText string) *WebService { + w.documentation = plainText + return w +} + +// Documentation returns it. +func (w *WebService) Documentation() string { + return w.documentation +} + +/* + Convenience methods +*/ + +// HEAD is a shortcut for .Method("HEAD").Path(subPath) +func (w *WebService) HEAD(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("HEAD").Path(subPath) +} + +// GET is a shortcut for .Method("GET").Path(subPath) +func (w *WebService) GET(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("GET").Path(subPath) +} + +// POST is a shortcut for .Method("POST").Path(subPath) +func (w *WebService) POST(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("POST").Path(subPath) +} + +// PUT is a shortcut for .Method("PUT").Path(subPath) +func (w *WebService) PUT(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("PUT").Path(subPath) +} + +// PATCH is a shortcut for .Method("PATCH").Path(subPath) +func (w *WebService) PATCH(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("PATCH").Path(subPath) +} + +// DELETE is a shortcut for .Method("DELETE").Path(subPath) +func (w *WebService) DELETE(subPath string) *RouteBuilder { + return new(RouteBuilder).servicePath(w.rootPath).Method("DELETE").Path(subPath) +} diff --git a/vendor/github.com/emicklei/go-restful/web_service_container.go b/vendor/github.com/emicklei/go-restful/web_service_container.go new file mode 100644 index 0000000000..c9d31b06c4 --- /dev/null +++ b/vendor/github.com/emicklei/go-restful/web_service_container.go @@ -0,0 +1,39 @@ +package restful + +// Copyright 2013 Ernest Micklei. All rights reserved. +// Use of this source code is governed by a license +// that can be found in the LICENSE file. + +import ( + "net/http" +) + +// DefaultContainer is a restful.Container that uses http.DefaultServeMux +var DefaultContainer *Container + +func init() { + DefaultContainer = NewContainer() + DefaultContainer.ServeMux = http.DefaultServeMux +} + +// If set the true then panics will not be caught to return HTTP 500. +// In that case, Route functions are responsible for handling any error situation. +// Default value is false = recover from panics. This has performance implications. +// OBSOLETE ; use restful.DefaultContainer.DoNotRecover(true) +var DoNotRecover = false + +// Add registers a new WebService add it to the DefaultContainer. +func Add(service *WebService) { + DefaultContainer.Add(service) +} + +// Filter appends a container FilterFunction from the DefaultContainer. +// These are called before dispatching a http.Request to a WebService. +func Filter(filter FilterFunction) { + DefaultContainer.Filter(filter) +} + +// RegisteredWebServices returns the collections of WebServices from the DefaultContainer +func RegisteredWebServices() []*WebService { + return DefaultContainer.RegisteredWebServices() +} diff --git a/vendor/github.com/ghodss/yaml/LICENSE b/vendor/github.com/ghodss/yaml/LICENSE new file mode 100644 index 0000000000..7805d36de7 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/LICENSE @@ -0,0 +1,50 @@ +The MIT License (MIT) + +Copyright (c) 2014 Sam Ghods + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/ghodss/yaml/fields.go b/vendor/github.com/ghodss/yaml/fields.go new file mode 100644 index 0000000000..0bd3c2b462 --- /dev/null +++ b/vendor/github.com/ghodss/yaml/fields.go @@ -0,0 +1,497 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +package yaml + +import ( + "bytes" + "encoding" + "encoding/json" + "reflect" + "sort" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +// indirect walks down v allocating pointers as needed, +// until it gets to a non-pointer. +// if it encounters an Unmarshaler, indirect stops and returns that. +// if decodingNull is true, indirect stops at the last pointer so it can be set to nil. +func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { + // If v is a named type and is addressable, + // start with its address, so that if the type has pointer methods, + // we find them. + if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { + v = v.Addr() + } + for { + // Load value from interface, but only if the result will be + // usefully addressable. + if v.Kind() == reflect.Interface && !v.IsNil() { + e := v.Elem() + if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { + v = e + continue + } + } + + if v.Kind() != reflect.Ptr { + break + } + + if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { + break + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + if v.Type().NumMethod() > 0 { + if u, ok := v.Interface().(json.Unmarshaler); ok { + return u, nil, reflect.Value{} + } + if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { + return nil, u, reflect.Value{} + } + } + v = v.Elem() + } + return nil, nil, v +} + +// A field represents a single field found in a struct. +type field struct { + name string + nameBytes []byte // []byte(name) + equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent + + tag bool + index []int + typ reflect.Type + omitEmpty bool + quoted bool +} + +func fillField(f field) field { + f.nameBytes = []byte(f.name) + f.equalFold = foldFunc(f.nameBytes) + return f +} + +// byName sorts field by name, breaking ties with depth, +// then breaking ties with "name came from json tag", then +// breaking ties with index sequence. +type byName []field + +func (x byName) Len() int { return len(x) } + +func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byName) Less(i, j int) bool { + if x[i].name != x[j].name { + return x[i].name < x[j].name + } + if len(x[i].index) != len(x[j].index) { + return len(x[i].index) < len(x[j].index) + } + if x[i].tag != x[j].tag { + return x[i].tag + } + return byIndex(x).Less(i, j) +} + +// byIndex sorts field by index sequence. +type byIndex []field + +func (x byIndex) Len() int { return len(x) } + +func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byIndex) Less(i, j int) bool { + for k, xik := range x[i].index { + if k >= len(x[j].index) { + return false + } + if xik != x[j].index[k] { + return xik < x[j].index[k] + } + } + return len(x[i].index) < len(x[j].index) +} + +// typeFields returns a list of fields that JSON should recognize for the given type. +// The algorithm is breadth-first search over the set of structs to include - the top struct +// and then any reachable anonymous structs. +func typeFields(t reflect.Type) []field { + // Anonymous fields to explore at the current level and the next. + current := []field{} + next := []field{{typ: t}} + + // Count of queued names for current level and the next. + count := map[reflect.Type]int{} + nextCount := map[reflect.Type]int{} + + // Types already visited at an earlier level. + visited := map[reflect.Type]bool{} + + // Fields found. + var fields []field + + for len(next) > 0 { + current, next = next, current[:0] + count, nextCount = nextCount, map[reflect.Type]int{} + + for _, f := range current { + if visited[f.typ] { + continue + } + visited[f.typ] = true + + // Scan f.typ for fields to include. + for i := 0; i < f.typ.NumField(); i++ { + sf := f.typ.Field(i) + if sf.PkgPath != "" { // unexported + continue + } + tag := sf.Tag.Get("json") + if tag == "-" { + continue + } + name, opts := parseTag(tag) + if !isValidTag(name) { + name = "" + } + index := make([]int, len(f.index)+1) + copy(index, f.index) + index[len(f.index)] = i + + ft := sf.Type + if ft.Name() == "" && ft.Kind() == reflect.Ptr { + // Follow pointer. + ft = ft.Elem() + } + + // Record found field and index sequence. + if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { + tagged := name != "" + if name == "" { + name = sf.Name + } + fields = append(fields, fillField(field{ + name: name, + tag: tagged, + index: index, + typ: ft, + omitEmpty: opts.Contains("omitempty"), + quoted: opts.Contains("string"), + })) + if count[f.typ] > 1 { + // If there were multiple instances, add a second, + // so that the annihilation code will see a duplicate. + // It only cares about the distinction between 1 or 2, + // so don't bother generating any more copies. + fields = append(fields, fields[len(fields)-1]) + } + continue + } + + // Record new anonymous struct to explore in next round. + nextCount[ft]++ + if nextCount[ft] == 1 { + next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft})) + } + } + } + } + + sort.Sort(byName(fields)) + + // Delete all fields that are hidden by the Go rules for embedded fields, + // except that fields with JSON tags are promoted. + + // The fields are sorted in primary order of name, secondary order + // of field index length. Loop over names; for each name, delete + // hidden fields by choosing the one dominant field that survives. + out := fields[:0] + for advance, i := 0, 0; i < len(fields); i += advance { + // One iteration per name. + // Find the sequence of fields with the name of this first field. + fi := fields[i] + name := fi.name + for advance = 1; i+advance < len(fields); advance++ { + fj := fields[i+advance] + if fj.name != name { + break + } + } + if advance == 1 { // Only one field with this name + out = append(out, fi) + continue + } + dominant, ok := dominantField(fields[i : i+advance]) + if ok { + out = append(out, dominant) + } + } + + fields = out + sort.Sort(byIndex(fields)) + + return fields +} + +// dominantField looks through the fields, all of which are known to +// have the same name, to find the single field that dominates the +// others using Go's embedding rules, modified by the presence of +// JSON tags. If there are multiple top-level fields, the boolean +// will be false: This condition is an error in Go and we skip all +// the fields. +func dominantField(fields []field) (field, bool) { + // The fields are sorted in increasing index-length order. The winner + // must therefore be one with the shortest index length. Drop all + // longer entries, which is easy: just truncate the slice. + length := len(fields[0].index) + tagged := -1 // Index of first tagged field. + for i, f := range fields { + if len(f.index) > length { + fields = fields[:i] + break + } + if f.tag { + if tagged >= 0 { + // Multiple tagged fields at the same level: conflict. + // Return no field. + return field{}, false + } + tagged = i + } + } + if tagged >= 0 { + return fields[tagged], true + } + // All remaining fields have the same length. If there's more than one, + // we have a conflict (two fields named "X" at the same level) and we + // return no field. + if len(fields) > 1 { + return field{}, false + } + return fields[0], true +} + +var fieldCache struct { + sync.RWMutex + m map[reflect.Type][]field +} + +// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. +func cachedTypeFields(t reflect.Type) []field { + fieldCache.RLock() + f := fieldCache.m[t] + fieldCache.RUnlock() + if f != nil { + return f + } + + // Compute fields without lock. + // Might duplicate effort but won't hold other computations back. + f = typeFields(t) + if f == nil { + f = []field{} + } + + fieldCache.Lock() + if fieldCache.m == nil { + fieldCache.m = map[reflect.Type][]field{} + } + fieldCache.m[t] = f + fieldCache.Unlock() + return f +} + +func isValidTag(s string) bool { + if s == "" { + return false + } + for _, c := range s { + switch { + case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c): + // Backslash and quote chars are reserved, but + // otherwise any punctuation chars are allowed + // in a tag name. + default: + if !unicode.IsLetter(c) && !unicode.IsDigit(c) { + return false + } + } + } + return true +} + +const ( + caseMask = ^byte(0x20) // Mask to ignore case in ASCII. + kelvin = '\u212a' + smallLongEss = '\u017f' +) + +// foldFunc returns one of four different case folding equivalence +// functions, from most general (and slow) to fastest: +// +// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8 +// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S') +// 3) asciiEqualFold, no special, but includes non-letters (including _) +// 4) simpleLetterEqualFold, no specials, no non-letters. +// +// The letters S and K are special because they map to 3 runes, not just 2: +// * S maps to s and to U+017F 'ſ' Latin small letter long s +// * k maps to K and to U+212A 'K' Kelvin sign +// See http://play.golang.org/p/tTxjOc0OGo +// +// The returned function is specialized for matching against s and +// should only be given s. It's not curried for performance reasons. +func foldFunc(s []byte) func(s, t []byte) bool { + nonLetter := false + special := false // special letter + for _, b := range s { + if b >= utf8.RuneSelf { + return bytes.EqualFold + } + upper := b & caseMask + if upper < 'A' || upper > 'Z' { + nonLetter = true + } else if upper == 'K' || upper == 'S' { + // See above for why these letters are special. + special = true + } + } + if special { + return equalFoldRight + } + if nonLetter { + return asciiEqualFold + } + return simpleLetterEqualFold +} + +// equalFoldRight is a specialization of bytes.EqualFold when s is +// known to be all ASCII (including punctuation), but contains an 's', +// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t. +// See comments on foldFunc. +func equalFoldRight(s, t []byte) bool { + for _, sb := range s { + if len(t) == 0 { + return false + } + tb := t[0] + if tb < utf8.RuneSelf { + if sb != tb { + sbUpper := sb & caseMask + if 'A' <= sbUpper && sbUpper <= 'Z' { + if sbUpper != tb&caseMask { + return false + } + } else { + return false + } + } + t = t[1:] + continue + } + // sb is ASCII and t is not. t must be either kelvin + // sign or long s; sb must be s, S, k, or K. + tr, size := utf8.DecodeRune(t) + switch sb { + case 's', 'S': + if tr != smallLongEss { + return false + } + case 'k', 'K': + if tr != kelvin { + return false + } + default: + return false + } + t = t[size:] + + } + if len(t) > 0 { + return false + } + return true +} + +// asciiEqualFold is a specialization of bytes.EqualFold for use when +// s is all ASCII (but may contain non-letters) and contains no +// special-folding letters. +// See comments on foldFunc. +func asciiEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, sb := range s { + tb := t[i] + if sb == tb { + continue + } + if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') { + if sb&caseMask != tb&caseMask { + return false + } + } else { + return false + } + } + return true +} + +// simpleLetterEqualFold is a specialization of bytes.EqualFold for +// use when s is all ASCII letters (no underscores, etc) and also +// doesn't contain 'k', 'K', 's', or 'S'. +// See comments on foldFunc. +func simpleLetterEqualFold(s, t []byte) bool { + if len(s) != len(t) { + return false + } + for i, b := range s { + if b&caseMask != t[i]&caseMask { + return false + } + } + return true +} + +// tagOptions is the string following a comma in a struct field's "json" +// tag, or the empty string. It does not include the leading comma. +type tagOptions string + +// parseTag splits a struct field's json tag into its name and +// comma-separated options. +func parseTag(tag string) (string, tagOptions) { + if idx := strings.Index(tag, ","); idx != -1 { + return tag[:idx], tagOptions(tag[idx+1:]) + } + return tag, tagOptions("") +} + +// Contains reports whether a comma-separated list of options +// contains a particular substr flag. substr must be surrounded by a +// string boundary or commas. +func (o tagOptions) Contains(optionName string) bool { + if len(o) == 0 { + return false + } + s := string(o) + for s != "" { + var next string + i := strings.Index(s, ",") + if i >= 0 { + s, next = s[:i], s[i+1:] + } + if s == optionName { + return true + } + s = next + } + return false +} diff --git a/vendor/github.com/ghodss/yaml/yaml.go b/vendor/github.com/ghodss/yaml/yaml.go new file mode 100644 index 0000000000..c02beacb9a --- /dev/null +++ b/vendor/github.com/ghodss/yaml/yaml.go @@ -0,0 +1,277 @@ +package yaml + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "strconv" + + "gopkg.in/yaml.v2" +) + +// Marshals the object into JSON then converts JSON to YAML and returns the +// YAML. +func Marshal(o interface{}) ([]byte, error) { + j, err := json.Marshal(o) + if err != nil { + return nil, fmt.Errorf("error marshaling into JSON: ", err) + } + + y, err := JSONToYAML(j) + if err != nil { + return nil, fmt.Errorf("error converting JSON to YAML: ", err) + } + + return y, nil +} + +// Converts YAML to JSON then uses JSON to unmarshal into an object. +func Unmarshal(y []byte, o interface{}) error { + vo := reflect.ValueOf(o) + j, err := yamlToJSON(y, &vo) + if err != nil { + return fmt.Errorf("error converting YAML to JSON: %v", err) + } + + err = json.Unmarshal(j, o) + if err != nil { + return fmt.Errorf("error unmarshaling JSON: %v", err) + } + + return nil +} + +// Convert JSON to YAML. +func JSONToYAML(j []byte) ([]byte, error) { + // Convert the JSON to an object. + var jsonObj interface{} + // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the + // Go JSON library doesn't try to pick the right number type (int, float, + // etc.) when unmarshling to interface{}, it just picks float64 + // universally. go-yaml does go through the effort of picking the right + // number type, so we can preserve number type throughout this process. + err := yaml.Unmarshal(j, &jsonObj) + if err != nil { + return nil, err + } + + // Marshal this object into YAML. + return yaml.Marshal(jsonObj) +} + +// Convert YAML to JSON. Since JSON is a subset of YAML, passing JSON through +// this method should be a no-op. +// +// Things YAML can do that are not supported by JSON: +// * In YAML you can have binary and null keys in your maps. These are invalid +// in JSON. (int and float keys are converted to strings.) +// * Binary data in YAML with the !!binary tag is not supported. If you want to +// use binary data with this library, encode the data as base64 as usual but do +// not use the !!binary tag in your YAML. This will ensure the original base64 +// encoded data makes it all the way through to the JSON. +func YAMLToJSON(y []byte) ([]byte, error) { + return yamlToJSON(y, nil) +} + +func yamlToJSON(y []byte, jsonTarget *reflect.Value) ([]byte, error) { + // Convert the YAML to an object. + var yamlObj interface{} + err := yaml.Unmarshal(y, &yamlObj) + if err != nil { + return nil, err + } + + // YAML objects are not completely compatible with JSON objects (e.g. you + // can have non-string keys in YAML). So, convert the YAML-compatible object + // to a JSON-compatible object, failing with an error if irrecoverable + // incompatibilties happen along the way. + jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget) + if err != nil { + return nil, err + } + + // Convert this object to JSON and return the data. + return json.Marshal(jsonObj) +} + +func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { + var err error + + // Resolve jsonTarget to a concrete value (i.e. not a pointer or an + // interface). We pass decodingNull as false because we're not actually + // decoding into the value, we're just checking if the ultimate target is a + // string. + if jsonTarget != nil { + ju, tu, pv := indirect(*jsonTarget, false) + // We have a JSON or Text Umarshaler at this level, so we can't be trying + // to decode into a string. + if ju != nil || tu != nil { + jsonTarget = nil + } else { + jsonTarget = &pv + } + } + + // If yamlObj is a number or a boolean, check if jsonTarget is a string - + // if so, coerce. Else return normal. + // If yamlObj is a map or array, find the field that each key is + // unmarshaling to, and when you recurse pass the reflect.Value for that + // field back into this function. + switch typedYAMLObj := yamlObj.(type) { + case map[interface{}]interface{}: + // JSON does not support arbitrary keys in a map, so we must convert + // these keys to strings. + // + // From my reading of go-yaml v2 (specifically the resolve function), + // keys can only have the types string, int, int64, float64, binary + // (unsupported), or null (unsupported). + strMap := make(map[string]interface{}) + for k, v := range typedYAMLObj { + // Resolve the key to a string first. + var keyString string + switch typedKey := k.(type) { + case string: + keyString = typedKey + case int: + keyString = strconv.Itoa(typedKey) + case int64: + // go-yaml will only return an int64 as a key if the system + // architecture is 32-bit and the key's value is between 32-bit + // and 64-bit. Otherwise the key type will simply be int. + keyString = strconv.FormatInt(typedKey, 10) + case float64: + // Stolen from go-yaml to use the same conversion to string as + // the go-yaml library uses to convert float to string when + // Marshaling. + s := strconv.FormatFloat(typedKey, 'g', -1, 32) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + keyString = s + case bool: + if typedKey { + keyString = "true" + } else { + keyString = "false" + } + default: + return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v", + reflect.TypeOf(k), k, v) + } + + // jsonTarget should be a struct or a map. If it's a struct, find + // the field it's going to map to and pass its reflect.Value. If + // it's a map, find the element type of the map and pass the + // reflect.Value created from that type. If it's neither, just pass + // nil - JSON conversion will error for us if it's a real issue. + if jsonTarget != nil { + t := *jsonTarget + if t.Kind() == reflect.Struct { + keyBytes := []byte(keyString) + // Find the field that the JSON library would use. + var f *field + fields := cachedTypeFields(t.Type()) + for i := range fields { + ff := &fields[i] + if bytes.Equal(ff.nameBytes, keyBytes) { + f = ff + break + } + // Do case-insensitive comparison. + if f == nil && ff.equalFold(ff.nameBytes, keyBytes) { + f = ff + } + } + if f != nil { + // Find the reflect.Value of the most preferential + // struct field. + jtf := t.Field(f.index[0]) + strMap[keyString], err = convertToJSONableObject(v, &jtf) + if err != nil { + return nil, err + } + continue + } + } else if t.Kind() == reflect.Map { + // Create a zero value of the map's element type to use as + // the JSON target. + jtv := reflect.Zero(t.Type().Elem()) + strMap[keyString], err = convertToJSONableObject(v, &jtv) + if err != nil { + return nil, err + } + continue + } + } + strMap[keyString], err = convertToJSONableObject(v, nil) + if err != nil { + return nil, err + } + } + return strMap, nil + case []interface{}: + // We need to recurse into arrays in case there are any + // map[interface{}]interface{}'s inside and to convert any + // numbers to strings. + + // If jsonTarget is a slice (which it really should be), find the + // thing it's going to map to. If it's not a slice, just pass nil + // - JSON conversion will error for us if it's a real issue. + var jsonSliceElemValue *reflect.Value + if jsonTarget != nil { + t := *jsonTarget + if t.Kind() == reflect.Slice { + // By default slices point to nil, but we need a reflect.Value + // pointing to a value of the slice type, so we create one here. + ev := reflect.Indirect(reflect.New(t.Type().Elem())) + jsonSliceElemValue = &ev + } + } + + // Make and use a new array. + arr := make([]interface{}, len(typedYAMLObj)) + for i, v := range typedYAMLObj { + arr[i], err = convertToJSONableObject(v, jsonSliceElemValue) + if err != nil { + return nil, err + } + } + return arr, nil + default: + // If the target type is a string and the YAML type is a number, + // convert the YAML type to a string. + if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String { + // Based on my reading of go-yaml, it may return int, int64, + // float64, or uint64. + var s string + switch typedVal := typedYAMLObj.(type) { + case int: + s = strconv.FormatInt(int64(typedVal), 10) + case int64: + s = strconv.FormatInt(typedVal, 10) + case float64: + s = strconv.FormatFloat(typedVal, 'g', -1, 32) + case uint64: + s = strconv.FormatUint(typedVal, 10) + case bool: + if typedVal { + s = "true" + } else { + s = "false" + } + } + if len(s) > 0 { + yamlObj = interface{}(s) + } + } + return yamlObj, nil + } + + return nil, nil +} diff --git a/vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..9322b065e3 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ivan+abuse@flanders.co.nz. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/jsonpointer/LICENSE b/vendor/github.com/go-openapi/jsonpointer/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonpointer/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/go-openapi/jsonpointer/pointer.go b/vendor/github.com/go-openapi/jsonpointer/pointer.go new file mode 100644 index 0000000000..39dd012c2a --- /dev/null +++ b/vendor/github.com/go-openapi/jsonpointer/pointer.go @@ -0,0 +1,238 @@ +// Copyright 2013 sigu-399 ( https://github.com/sigu-399 ) +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// author sigu-399 +// author-github https://github.com/sigu-399 +// author-mail sigu.399@gmail.com +// +// repository-name jsonpointer +// repository-desc An implementation of JSON Pointer - Go language +// +// description Main and unique file. +// +// created 25-02-2013 + +package jsonpointer + +import ( + "errors" + "fmt" + "reflect" + "strconv" + "strings" + + "github.com/go-openapi/swag" +) + +const ( + emptyPointer = `` + pointerSeparator = `/` + + invalidStart = `JSON pointer must be empty or start with a "` + pointerSeparator +) + +var jsonPointableType = reflect.TypeOf(new(JSONPointable)).Elem() + +// JSONPointable is an interface for structs to implement when they need to customize the +// json pointer process +type JSONPointable interface { + JSONLookup(string) (interface{}, error) +} + +type implStruct struct { + mode string // "SET" or "GET" + + inDocument interface{} + + setInValue interface{} + + getOutNode interface{} + getOutKind reflect.Kind + outError error +} + +// New creates a new json pointer for the given string +func New(jsonPointerString string) (Pointer, error) { + + var p Pointer + err := p.parse(jsonPointerString) + return p, err + +} + +// Pointer the json pointer reprsentation +type Pointer struct { + referenceTokens []string +} + +// "Constructor", parses the given string JSON pointer +func (p *Pointer) parse(jsonPointerString string) error { + + var err error + + if jsonPointerString != emptyPointer { + if !strings.HasPrefix(jsonPointerString, pointerSeparator) { + err = errors.New(invalidStart) + } else { + referenceTokens := strings.Split(jsonPointerString, pointerSeparator) + for _, referenceToken := range referenceTokens[1:] { + p.referenceTokens = append(p.referenceTokens, referenceToken) + } + } + } + + return err +} + +// Get uses the pointer to retrieve a value from a JSON document +func (p *Pointer) Get(document interface{}) (interface{}, reflect.Kind, error) { + return p.get(document, swag.DefaultJSONNameProvider) +} + +// GetForToken gets a value for a json pointer token 1 level deep +func GetForToken(document interface{}, decodedToken string) (interface{}, reflect.Kind, error) { + return getSingleImpl(document, decodedToken, swag.DefaultJSONNameProvider) +} + +func getSingleImpl(node interface{}, decodedToken string, nameProvider *swag.NameProvider) (interface{}, reflect.Kind, error) { + kind := reflect.Invalid + rValue := reflect.Indirect(reflect.ValueOf(node)) + kind = rValue.Kind() + switch kind { + + case reflect.Struct: + if rValue.Type().Implements(jsonPointableType) { + r, err := node.(JSONPointable).JSONLookup(decodedToken) + if err != nil { + return nil, kind, err + } + return r, kind, nil + } + nm, ok := nameProvider.GetGoNameForType(rValue.Type(), decodedToken) + if !ok { + return nil, kind, fmt.Errorf("object has no field %q", decodedToken) + } + fld := rValue.FieldByName(nm) + return fld.Interface(), kind, nil + + case reflect.Map: + kv := reflect.ValueOf(decodedToken) + mv := rValue.MapIndex(kv) + if mv.IsValid() && !swag.IsZero(mv) { + return mv.Interface(), kind, nil + } + return nil, kind, fmt.Errorf("object has no key %q", decodedToken) + + case reflect.Slice: + tokenIndex, err := strconv.Atoi(decodedToken) + if err != nil { + return nil, kind, err + } + sLength := rValue.Len() + if tokenIndex < 0 || tokenIndex >= sLength { + return nil, kind, fmt.Errorf("index out of bounds array[0,%d] index '%d'", sLength, tokenIndex) + } + + elem := rValue.Index(tokenIndex) + return elem.Interface(), kind, nil + + default: + return nil, kind, fmt.Errorf("invalid token reference %q", decodedToken) + } + +} + +func (p *Pointer) get(node interface{}, nameProvider *swag.NameProvider) (interface{}, reflect.Kind, error) { + + if nameProvider == nil { + nameProvider = swag.DefaultJSONNameProvider + } + + kind := reflect.Invalid + + // Full document when empty + if len(p.referenceTokens) == 0 { + return node, kind, nil + } + + for _, token := range p.referenceTokens { + + decodedToken := Unescape(token) + + r, knd, err := getSingleImpl(node, decodedToken, nameProvider) + if err != nil { + return nil, knd, err + } + node, kind = r, knd + + } + + rValue := reflect.ValueOf(node) + kind = rValue.Kind() + + return node, kind, nil +} + +// DecodedTokens returns the decoded tokens +func (p *Pointer) DecodedTokens() []string { + result := make([]string, 0, len(p.referenceTokens)) + for _, t := range p.referenceTokens { + result = append(result, Unescape(t)) + } + return result +} + +// IsEmpty returns true if this is an empty json pointer +// this indicates that it points to the root document +func (p *Pointer) IsEmpty() bool { + return len(p.referenceTokens) == 0 +} + +// Pointer to string representation function +func (p *Pointer) String() string { + + if len(p.referenceTokens) == 0 { + return emptyPointer + } + + pointerString := pointerSeparator + strings.Join(p.referenceTokens, pointerSeparator) + + return pointerString +} + +// Specific JSON pointer encoding here +// ~0 => ~ +// ~1 => / +// ... and vice versa + +const ( + encRefTok0 = `~0` + encRefTok1 = `~1` + decRefTok0 = `~` + decRefTok1 = `/` +) + +// Unescape unescapes a json pointer reference token string to the original representation +func Unescape(token string) string { + step1 := strings.Replace(token, encRefTok1, decRefTok1, -1) + step2 := strings.Replace(step1, encRefTok0, decRefTok0, -1) + return step2 +} + +// Escape escapes a pointer reference token string +func Escape(token string) string { + step1 := strings.Replace(token, decRefTok0, encRefTok0, -1) + step2 := strings.Replace(step1, decRefTok1, encRefTok1, -1) + return step2 +} diff --git a/vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..9322b065e3 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ivan+abuse@flanders.co.nz. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/jsonreference/LICENSE b/vendor/github.com/go-openapi/jsonreference/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/go-openapi/jsonreference/reference.go b/vendor/github.com/go-openapi/jsonreference/reference.go new file mode 100644 index 0000000000..3bc0a6e26f --- /dev/null +++ b/vendor/github.com/go-openapi/jsonreference/reference.go @@ -0,0 +1,156 @@ +// Copyright 2013 sigu-399 ( https://github.com/sigu-399 ) +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// author sigu-399 +// author-github https://github.com/sigu-399 +// author-mail sigu.399@gmail.com +// +// repository-name jsonreference +// repository-desc An implementation of JSON Reference - Go language +// +// description Main and unique file. +// +// created 26-02-2013 + +package jsonreference + +import ( + "errors" + "net/url" + "strings" + + "github.com/PuerkitoBio/purell" + "github.com/go-openapi/jsonpointer" +) + +const ( + fragmentRune = `#` +) + +// New creates a new reference for the given string +func New(jsonReferenceString string) (Ref, error) { + + var r Ref + err := r.parse(jsonReferenceString) + return r, err + +} + +// MustCreateRef parses the ref string and panics when it's invalid. +// Use the New method for a version that returns an error +func MustCreateRef(ref string) Ref { + r, err := New(ref) + if err != nil { + panic(err) + } + return r +} + +// Ref represents a json reference object +type Ref struct { + referenceURL *url.URL + referencePointer jsonpointer.Pointer + + HasFullURL bool + HasURLPathOnly bool + HasFragmentOnly bool + HasFileScheme bool + HasFullFilePath bool +} + +// GetURL gets the URL for this reference +func (r *Ref) GetURL() *url.URL { + return r.referenceURL +} + +// GetPointer gets the json pointer for this reference +func (r *Ref) GetPointer() *jsonpointer.Pointer { + return &r.referencePointer +} + +// String returns the best version of the url for this reference +func (r *Ref) String() string { + + if r.referenceURL != nil { + return r.referenceURL.String() + } + + if r.HasFragmentOnly { + return fragmentRune + r.referencePointer.String() + } + + return r.referencePointer.String() +} + +// IsRoot returns true if this reference is a root document +func (r *Ref) IsRoot() bool { + return r.referenceURL != nil && + !r.IsCanonical() && + !r.HasURLPathOnly && + r.referenceURL.Fragment == "" +} + +// IsCanonical returns true when this pointer starts with http(s):// or file:// +func (r *Ref) IsCanonical() bool { + return (r.HasFileScheme && r.HasFullFilePath) || (!r.HasFileScheme && r.HasFullURL) +} + +// "Constructor", parses the given string JSON reference +func (r *Ref) parse(jsonReferenceString string) error { + + parsed, err := url.Parse(jsonReferenceString) + if err != nil { + return err + } + + r.referenceURL, _ = url.Parse(purell.NormalizeURL(parsed, purell.FlagsSafe|purell.FlagRemoveDuplicateSlashes)) + refURL := r.referenceURL + + if refURL.Scheme != "" && refURL.Host != "" { + r.HasFullURL = true + } else { + if refURL.Path != "" { + r.HasURLPathOnly = true + } else if refURL.RawQuery == "" && refURL.Fragment != "" { + r.HasFragmentOnly = true + } + } + + r.HasFileScheme = refURL.Scheme == "file" + r.HasFullFilePath = strings.HasPrefix(refURL.Path, "/") + + // invalid json-pointer error means url has no json-pointer fragment. simply ignore error + r.referencePointer, _ = jsonpointer.New(refURL.Fragment) + + return nil +} + +// Inherits creates a new reference from a parent and a child +// If the child cannot inherit from the parent, an error is returned +func (r *Ref) Inherits(child Ref) (*Ref, error) { + childURL := child.GetURL() + parentURL := r.GetURL() + if childURL == nil { + return nil, errors.New("child url is nil") + } + if parentURL == nil { + return &child, nil + } + + ref, err := New(parentURL.ResolveReference(childURL).String()) + if err != nil { + return nil, err + } + return &ref, nil +} diff --git a/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..9322b065e3 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ivan+abuse@flanders.co.nz. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/spec/LICENSE b/vendor/github.com/go-openapi/spec/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/go-openapi/spec/bindata.go b/vendor/github.com/go-openapi/spec/bindata.go new file mode 100644 index 0000000000..294cbccf72 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/bindata.go @@ -0,0 +1,274 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by go-bindata. +// sources: +// schemas/jsonschema-draft-04.json +// schemas/v2/schema.json +// DO NOT EDIT! + +package spec + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data []byte, name string) ([]byte, error) { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _jsonschemaDraft04JSON = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x57\x3b\x6f\xdb\x30\x10\xde\xfd\x2b\x04\xa5\x63\x52\xb9\x40\xa7\x6c\x45\xbb\x18\x68\xd1\x0c\xdd\x0c\x0f\xb4\x75\xb2\x19\x50\xa4\x42\x51\x85\x0d\x43\xff\xbd\xa4\xa8\x07\x29\x91\x92\x2d\xbb\x48\xb4\xc4\xe1\xbd\xbe\x3b\xde\x8b\xe7\x45\x20\xbf\x10\xc7\xe1\x73\x10\x1e\x84\xc8\x9e\xa3\xe8\x35\x67\xf4\x29\xdf\x1d\x20\x45\x9f\x19\xdf\x47\x31\x47\x89\x78\x5a\x7e\x8d\xf4\xd9\x43\xf8\xa8\x85\x3e\xe9\xff\x67\x48\xc6\x90\xef\x38\xce\x04\x66\x54\x49\x7f\x67\x1c\x02\xcd\x12\xa4\x20\x50\xad\xa2\xe3\x4e\x30\xc5\x8a\x39\x97\xdc\x1a\x71\x45\xd0\x6c\xdf\x38\x47\x27\x8b\x50\x11\xc5\x29\x03\xa5\x1c\x55\xe4\x47\x9b\x98\x62\xba\x12\x90\x2a\x7d\x5f\x7a\x24\x5c\x9f\x9f\xa5\x83\x1c\x12\xa5\xe2\x21\x0c\xca\x96\xa9\xec\xf8\xc3\x8c\xe5\x12\xd7\x5f\x58\x51\x01\x7b\xe0\x7e\x10\xb8\x66\x18\xc2\xc0\x69\x91\x4a\x8e\xe5\x25\xfa\x7f\x40\x82\x0a\x22\x96\x43\x3b\x88\x90\xdf\x0a\xea\xda\x82\x1d\x19\x91\x8b\xfa\x58\xa5\x21\xc5\x1c\x6b\x9d\x0a\x42\x50\x06\x1b\x27\x8c\x1c\xa7\x19\x81\x3f\xd2\x97\x7c\x68\x1a\x68\xe5\xc0\xba\x8d\x74\x10\x6e\x19\x23\x80\xa8\xfa\xd9\x3a\x1e\x84\xb4\x20\x44\xff\x4d\xb7\xfa\x84\x6d\x5f\x61\x27\xd4\xaf\x5c\x70\x4c\xf7\xa1\xcf\x7e\x45\x9d\x73\xcf\xc6\x65\x36\x7c\x8d\xa9\xf2\xf2\x94\x28\x28\x7e\x2b\xa0\xa1\x0a\x5e\x40\x07\x73\x61\x80\x6d\x6d\x34\x8e\xe9\xd3\x8c\xb3\x0c\xb8\xc0\xbd\xe8\xe9\xa2\xf3\x78\x53\xa3\xec\x01\x49\x18\x4f\x91\xba\xab\xb0\xe0\x38\x74\xc6\xaa\x2b\xca\x7b\x6b\x16\x58\x10\x98\xd4\xeb\x14\xb5\xeb\x7d\x96\x82\x26\x4b\xcf\xe6\x71\x2a\xcf\xb0\x4c\xcd\x2a\xf7\x3d\x6a\x9b\x74\xf3\x56\x5e\x8f\x02\xc7\x1d\x29\x72\x59\x28\xbf\x5a\x16\xfb\xc6\x4d\xfb\xe8\x58\xb3\x8c\x1b\x77\x0a\x77\x86\xa6\xb4\xb4\xf5\x64\x93\xbb\xa0\x24\x88\xe4\x1e\x84\xad\x13\x37\x21\x9c\xd2\x72\x0b\x42\x74\xfc\x09\x74\x2f\x0e\xbd\x9e\x3b\xd5\xbc\x2c\x1f\xaf\xd6\xd0\xb6\x52\xbb\xdf\x22\x21\x80\x4f\xe7\xa8\xb7\x78\xb8\xd4\x7d\x74\x07\x13\xc5\x71\x05\x05\x91\xa6\x91\xf4\x7b\x38\x3d\xe9\x1e\x6e\x1d\xab\xef\x3c\x0c\x74\xbf\x7d\xd5\x6c\xce\x89\xa5\xbe\x8d\xf7\x66\xce\xee\xd1\x86\x67\x80\x34\xad\x8f\xc3\xb3\xae\xc6\x1c\xe3\xb7\xc2\x96\xd9\xb4\x72\x0c\xf0\xab\x92\xe9\x5a\x05\xee\x5c\xb2\x87\xc6\x7f\xa9\x9b\x17\x6b\xb0\xcc\x75\x77\x96\x16\xb7\xcf\x1c\xde\x0a\xcc\x21\x1e\x53\x64\x0e\x73\x4f\x81\xbc\xb8\x07\xa6\xe6\xfa\x50\x55\xe2\x5b\x4d\xad\x4b\xb6\xb6\x81\x49\x77\xc7\xca\x68\x1a\x90\x67\xd7\x78\x3f\x3c\xba\xa3\x8e\xdd\xe8\x7b\xc0\x8a\x21\x03\x1a\x03\xdd\xdd\x11\xd1\x20\xd3\x46\x72\x55\x7d\x93\x0d\xb3\xcf\x34\x52\x46\x03\xd9\x8d\x75\xe2\x0e\x42\xbd\xb9\xdf\xe9\xdd\x34\xb6\x24\x9b\x5b\xa4\x56\x3f\x6b\xac\xd8\x01\x30\x1e\x25\xce\x3a\x77\xc6\x73\xd4\xbd\x96\xc9\xf5\x06\xbc\xca\xf8\x44\xb0\x2e\x09\x5a\xf3\xf5\x3a\x94\x7b\xb7\xa8\x9f\x7f\x17\x8e\x58\x53\xb2\x0e\xfc\xf5\x92\x8c\xc2\x4c\x49\xca\x84\xe7\x7d\x5d\xb6\x2f\x7e\x4f\x79\xba\x96\xe6\x75\xb7\x87\x9b\x0d\xdc\xb5\xbd\xae\xbb\x85\xb8\x8e\x64\x67\xd1\xe8\x18\xe5\xe2\x5f\x00\x00\x00\xff\xff\x4e\x9b\x8d\xdf\x17\x11\x00\x00") + +func jsonschemaDraft04JSONBytes() ([]byte, error) { + return bindataRead( + _jsonschemaDraft04JSON, + "jsonschema-draft-04.json", + ) +} + +func jsonschemaDraft04JSON() (*asset, error) { + bytes, err := jsonschemaDraft04JSONBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "jsonschema-draft-04.json", size: 4375, mode: os.FileMode(420), modTime: time.Unix(1441640690, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _v2SchemaJSON = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5d\xdf\x73\xdc\xb6\xf1\x7f\xcf\x5f\x81\xb9\x78\x46\xf6\x24\xd6\x39\xfe\x7e\x5f\xea\x97\x8c\x1a\x39\x89\x5a\xbb\xd2\xf8\x9c\xf6\xc1\x95\x67\x70\x24\x4e\x87\x84\x3f\x2e\x04\x29\xe9\xea\xea\x7f\xef\x02\xfc\x71\x04\x01\x90\x20\x89\x3b\x9d\x6d\x7a\xa6\x8d\x8e\x04\x16\x8b\xc5\x62\xf7\xb3\x0b\x10\xf8\xf4\x0d\x42\xb3\x94\xa6\x01\x99\xbd\x42\xb3\x33\xf4\xb7\xc5\xe5\x3f\xd0\xc2\x5b\x93\x10\xa3\x55\x9c\xa0\xc5\x1d\xbe\xb9\x21\x09\x7a\x79\xfa\x02\x9d\x5d\x5d\x9c\xce\xbe\xe7\x15\xa8\xcf\x4b\xaf\xd3\x74\xf3\x6a\x3e\x67\x79\x91\x53\x1a\xcf\x6f\x5f\xce\x99\xa8\x7b\xfa\x3b\x8b\xa3\x6f\xf3\xc2\x4f\xf2\x47\xb5\x1a\xfc\xe5\xf3\xa2\x60\x9c\xdc\xcc\xfd\x04\xaf\xd2\xe7\x2f\xfe\xbf\xa8\x5c\xd4\x4b\xb7\x1b\xc1\x54\xbc\xfc\x9d\x78\x69\xfe\x2c\x21\x7f\x66\x34\x21\xbc\xf9\x0f\xf0\x1b\x9e\x14\xad\x8b\xd7\x9c\xb3\x68\x15\x97\x7f\x6f\x70\xba\x66\x33\xf8\xfb\x5a\xd4\xc5\xbe\x4f\x53\x1a\x47\x38\xb8\x4a\xe2\x0d\x49\x52\x4a\x18\xd0\x59\xe1\x80\x11\x51\x00\xca\xa7\x24\x89\xa4\xb7\x9f\x72\x52\x1f\xef\x9f\x57\x3f\x78\x97\x12\xb2\xe2\xac\x7d\x3b\xf7\xc9\x8a\x46\x82\x2c\x9b\xdf\x92\xc8\x8f\x93\xd7\xf7\x29\x89\x18\x3c\x98\x89\xd2\x0f\xf0\xff\x0f\x39\x79\x0d\xdd\x92\xfb\x1a\xed\xb2\xdb\x2c\x4d\x68\x74\x53\xf4\x05\x9e\x93\x28\x0b\xab\x6e\x8b\x27\x30\x26\xb3\xe2\xd7\x75\x55\xcc\x27\xcc\x4b\xe8\x86\x73\xc4\xa9\xbc\x5f\x93\x6a\x0c\x6f\x49\xc2\xf9\x42\xf1\x0a\xa5\x6b\xca\x90\x1f\x7b\x59\x48\xa2\xf4\xb4\xe0\xb4\x2e\xc2\xce\xce\x8a\x52\x52\xbd\x75\xcc\x52\x9b\x8e\x14\x62\xe6\xaf\x3e\x7e\xf8\xf8\xe9\x61\x8e\x5e\xfd\x1b\xfe\x5d\x7f\xf7\xf4\xc7\x57\xf0\x97\xff\xdd\xb3\x1f\x9f\xcc\xda\xfa\xc3\x1b\x42\x4f\x23\x1c\x12\x04\x1a\x4a\x37\xcf\xf2\x1e\x11\xa1\xa0\xe8\xf5\x3d\x0e\x37\x01\x79\x85\x4e\x76\x8a\x79\x22\x73\xba\xc4\x8c\x5c\x81\x72\xf4\xe5\x76\xde\xca\x16\xa7\x8a\xb8\xce\xa1\x34\xd6\xb1\x33\xc7\x1b\x7a\xd2\x90\xb5\x50\xf8\x9a\x42\x18\xc5\x5d\x14\x7c\x43\x41\xc6\x12\x05\x0f\xde\x66\x0d\x12\x0d\xe6\xce\x50\x00\xd5\xb8\x90\xde\x5e\xbc\x7d\x8d\x78\x4f\x19\xc2\x9e\x47\x36\x29\xf1\xd1\x72\x5b\x31\xbb\xeb\x9e\x9e\x89\x90\xf8\x14\xbf\x87\xea\x2a\x1b\xa0\xdc\x7e\xe6\xf5\x67\xa3\x68\x1a\x79\x38\x42\x05\x8d\x51\x6c\x88\x29\xdf\x29\xcd\xca\x32\xec\x6a\xd6\x5e\x77\xd7\xaf\x17\x6e\xb4\x9f\x80\x5a\x82\xc2\x58\x31\x51\x94\x3d\x37\x51\x4b\x08\xdb\xc0\x43\x1b\xfd\x28\x8b\x1a\x69\x31\xe2\x65\x09\x4d\xb7\x16\xaa\x56\x96\xd4\xd6\x3f\xef\x23\x27\x5d\x25\x89\x6a\x8a\x6f\x98\x6e\x16\xe2\x24\xc1\xdb\x9d\x1e\xd0\x94\x84\xf5\x72\xc6\x06\x81\x5e\x69\x12\x1f\xaa\xda\x59\x44\xff\xcc\xc8\x45\x41\x23\x4d\x32\x22\xf1\x40\xee\xf9\x04\xc7\xc1\x79\xec\x59\x74\x49\x2a\xdd\xb0\xf0\x3a\x1d\x52\xcc\xa9\xc6\xad\xe9\x66\xcb\x2f\x24\x22\x09\x0e\x10\xaf\x9e\x84\x98\x3f\x46\x78\x19\x67\xa9\x66\xb6\x2a\x5e\x51\x3c\x2d\xcc\x7d\x55\xac\x72\xf4\x8a\xcf\xe8\xf2\x8c\xe5\xd4\x32\x78\x47\xf1\x5a\xf6\x90\x2d\x02\xd4\x7a\xc9\x52\x8e\xf2\xc0\x69\x3c\x66\xad\x1b\x8d\xd6\x0c\x06\x5c\x27\xdb\x33\x94\xab\x04\xc2\x91\x0f\x56\x87\x78\x14\x2c\xb7\x20\x5a\xf7\x24\x35\xce\xbe\x57\xa5\x3a\xa6\x75\x06\x20\x27\x4a\xa9\x57\x79\x64\x70\xed\x4b\x70\xd0\x9d\x8d\xcb\x94\x86\x33\x10\xc4\x11\x07\x04\xb5\xe7\x92\x0b\x5d\xac\xe3\x2c\x00\xcf\x40\x90\x4f\x57\x2b\x92\x00\x46\x40\xab\x24\x0e\x45\x09\x21\xa7\x53\x84\x7e\xa1\xe9\xaf\xd9\x12\xfd\x1c\xe0\xdb\x18\x74\x0f\xbd\xc5\xc9\x1f\x7e\x7c\x17\x21\x40\x16\x38\x08\xe2\x3b\xe2\x1b\x7a\x01\x6a\x14\xb2\xcb\xd5\x82\x24\xb7\xd4\x1b\x33\x8e\xdc\xeb\x0a\x62\x9c\x7b\x96\x93\x13\xa8\xb5\x5d\x8a\xe0\x32\x53\xec\xa5\x76\xea\x5a\x16\xd6\x52\x0a\xa0\x41\x30\xba\x76\x94\xca\xc2\xaa\xc2\x37\x1d\x7a\x83\x3b\x5b\x93\xf1\x53\x5e\x53\x32\x19\xa5\x34\x60\x60\x40\xd7\x24\x0d\xeb\x39\xfd\x0d\x73\x91\xc3\xb0\x91\x43\x48\x7d\x50\x30\xba\xda\x42\x59\x94\xa3\xba\x9c\xcb\x42\x12\x08\xda\x85\x80\x61\x0e\x91\x02\x8e\xe8\x7f\x44\xbf\x0c\x23\x9b\x25\xc1\x48\x5e\x7e\x7b\xf7\x06\x6d\x62\x0a\xfc\x00\x33\x05\x8e\xf3\x54\xb9\x9e\xca\x84\xf2\xe7\x9c\x06\xb8\x3b\x3d\x6b\x30\xe5\xe9\x58\xe6\x04\x0d\x04\xc3\x05\xde\x9e\x59\x49\xc9\xc0\x65\xce\x4c\x9b\xe5\x3d\x98\xb1\x97\x74\x5f\x9d\x4f\x46\xdd\xd7\xfb\x3c\xa1\x8d\x03\xfd\xdb\xfe\x14\xbc\xae\xd4\x45\x17\x05\xfc\x3d\x45\x17\xe9\x09\x43\x24\xf2\xe2\x2c\xc1\x37\x60\x44\x41\xe3\x32\xc6\xfd\x12\xba\x5c\x00\x28\x8e\x43\x18\x08\xba\x0c\xaa\x6a\x07\xd5\xfb\xaa\x4d\x2b\x5d\x3f\x16\x1d\x52\x42\x00\x4b\xeb\xf9\x8e\x04\x20\xeb\xdb\x3c\x84\x63\xa5\x0c\x68\xe4\xd3\x5b\xea\x67\x80\xc4\x80\x0d\x21\x21\x76\x8a\x40\x62\x5b\x14\x66\x10\xcd\x80\x8f\x4c\xca\x8a\x45\x95\x93\x32\xbc\x3c\x39\x55\xc2\xc8\x3d\x0a\xa3\xa6\x0e\x10\xa8\x5a\x11\xe3\x3d\xe5\xb0\xb8\x6d\x14\xdb\xe6\x8e\x4d\x00\x65\x92\xbe\x81\x6e\x27\xc2\x2f\x92\x49\x0a\x9f\x8d\xd1\xbc\x8c\x44\x72\x20\x04\x68\x92\xe7\xb4\xf2\xf6\x59\x81\x79\x96\x42\xcd\x61\xb0\x72\x72\x0c\xc6\x91\x3f\x29\x82\x69\xbf\x00\x86\x22\x1c\x95\x23\xe4\x86\xaa\x69\x22\xb8\x3d\xf6\xbd\x6a\xaf\x7f\xf7\x13\x02\x38\x97\x81\x9f\x15\x8e\x81\x09\x5c\x50\x0b\x56\xa5\x6e\xe9\x62\xc9\x3d\xf6\xaa\x6c\x6e\xbf\x9d\x32\x45\x79\x3d\x7b\x23\xfb\x8c\x06\x83\x6a\xac\x56\xb6\x5a\xe5\xda\xc4\xcb\x2e\x2f\xc6\xcd\xb9\xe2\xc4\x4c\xfe\xc9\x3e\x26\x70\xe1\x3a\x8e\xdd\xfa\x93\x3c\xdd\x36\x66\x88\x95\x04\x41\x48\x43\xf2\x3e\xa7\xd1\x99\x2e\xd4\xb8\xd6\x2a\xdb\x55\x42\x80\x5f\xdf\xbf\xbf\x42\x21\x40\x38\x70\xf9\x0d\x8b\xc2\xd9\xc0\x8d\xa1\xec\x09\x81\x76\x49\xa3\x81\x38\xe8\x88\xe2\x7c\x39\x3b\x24\x09\x43\xce\x10\x89\x57\x6a\x96\x48\x37\x54\xb5\x97\x0f\x52\x75\x43\x9a\xa8\x51\x70\x06\x0e\x22\xc4\xc9\x76\x54\xfc\xbd\x4c\x28\x81\x88\x35\xa7\x54\xaa\x45\x35\xf6\x8f\x16\xfc\x57\x1c\x7c\x3f\x22\xba\x37\x18\x5a\xf1\xce\x36\xa5\xd6\xa4\x59\x31\x76\xe1\xbb\x48\xfb\x14\x01\x27\xdd\xa5\x5c\xba\x64\xaf\x49\x6f\x1b\x84\xdb\x33\xc5\xdd\x22\x16\x4d\x9a\xbb\xc9\x96\x26\xf9\x3f\x88\xad\x82\x8e\x2b\xb6\xb4\x59\xf0\x16\x92\xbb\xf2\x66\x9a\xba\x5c\x78\x0b\x49\xc5\x0a\x36\x26\xb1\xb2\xee\xd2\x42\x4b\x59\x7b\x69\x52\xf3\x39\x0e\xf1\x70\x4a\x8c\xda\xb9\x8c\xe3\x80\xe0\xa8\xa9\x9e\x2b\x9c\x05\xa9\x84\xa6\x15\x46\xd5\xb4\x7d\x1b\xa7\x52\xea\x5e\xd0\x32\xc6\x48\x02\xf8\xbb\x02\x42\x47\xe4\x34\x0a\xc2\xbd\x81\xd0\x0d\xb1\xcc\x08\xee\x7c\xb4\x5e\xf9\x33\x47\x74\xe4\xe5\xd4\xe1\x84\x7c\x12\xc0\xdc\x72\x42\x2a\xde\x34\xa3\x81\xe1\xb4\xd6\x04\x2b\xd3\x65\x98\xa0\x70\xea\xad\x1d\x51\x72\x64\xb7\xb4\x93\x4e\xbb\x9a\x67\x9d\x9c\xc8\xeb\x56\x61\x2c\x4f\x29\x31\x61\xbb\x09\x05\x4b\x9e\xf0\x44\x04\x8e\xb6\xe8\x16\x07\xd4\xcf\x11\x26\x83\x60\x23\x83\x32\xb1\x2f\xc2\xa6\x93\xc2\xdc\xd4\xb3\x12\x21\x95\xa7\xec\x0f\x6e\x67\xfd\xd3\x0f\x2f\x9e\xff\xe5\xfa\xd3\xff\x3d\x3c\x7b\xf2\xdf\x8f\x4f\x8b\xf6\x9f\x3d\xe9\x67\xc1\xff\x89\x83\x8c\x18\xf2\x1c\x7b\x30\x2b\x51\x9c\x36\x40\xa8\x7e\x84\x2c\x65\xd4\x29\x25\x6d\x37\xfa\x77\x64\xd7\x95\x2e\xf5\xcb\xe5\x59\x53\xc1\x38\x22\x97\x2b\x29\x86\xe8\x31\x3a\xda\x81\xb1\xa8\xcf\xb7\x00\xbd\x23\x62\x6d\xc9\xd3\x2c\x89\x5c\x6b\x59\x1f\x1e\x14\xd5\xa7\x53\xd9\xc4\xbe\x23\xeb\x6a\xdb\x93\x54\x53\x95\x76\x53\x62\x2d\x52\x93\x93\x5f\x4a\x93\x3d\x28\xad\x68\x40\x16\x3a\x6a\xb5\x5f\xd7\x46\xbb\x6d\x6d\x21\xcb\xc2\x86\x48\x41\x89\xd5\x5b\x48\x55\xa5\x5b\x26\xef\x91\x61\x15\x49\x89\x55\xb9\x39\xcf\xa4\xe5\x4d\xcc\x5a\x9a\x77\x06\xf8\xf4\xd3\x4c\x90\xb4\x9e\x5f\xa9\x9c\x53\x91\x98\xd2\x85\x73\xca\x0e\x38\xf1\x54\x53\x92\x9b\x71\xb1\xa2\xde\x7c\x4a\xa3\x94\xdc\xa8\x8f\x75\xe8\x1c\x95\x29\x86\xce\x09\x51\xa5\xc4\x7a\x5b\x08\x5d\xc2\xc2\x04\x35\x12\x1a\x52\xbe\xca\xc0\xf2\x04\x85\x96\x9e\x17\x07\x01\x0c\x25\x54\xf8\x59\xcb\x93\x69\x85\xbb\x51\xcb\x80\x22\xcb\x60\xc5\x82\x64\x59\x58\x4b\x29\xc4\xf7\x34\xcc\x42\x3b\x4a\x65\x61\x83\x01\xf1\x82\x8c\x81\x50\xde\xf6\x21\xa9\xd4\xd2\x73\x09\xe5\xed\xb9\x2c\x0a\x77\x70\xd9\x87\xa4\x52\xcb\x24\xcb\x37\x24\xba\x49\x2d\xf1\xef\xae\xb8\xa9\xcf\xbd\xa8\x55\xc5\x4d\xb8\xbc\xd8\x39\x69\xb7\x14\x25\x0a\x9b\x7a\x79\x61\x3f\x55\xaa\xd2\xa6\x3e\xf6\xa1\x55\x96\xd6\xd2\x92\x33\x86\x16\xe4\xea\x15\xf4\xba\x12\x59\xeb\x47\x64\xd4\x09\x98\x79\x14\x3c\xe5\xa5\x12\x06\x1b\xfa\xb8\x2b\x6f\x98\xf9\xfd\x61\x90\xe2\x99\x1f\xc9\xe9\x36\x8b\xb7\xec\x4e\x85\xe0\xa9\x70\x54\x5b\x1e\x3a\x25\x62\x25\xfc\x0e\x82\x2b\x74\xff\x9c\x67\x3d\x45\x64\xd5\xbd\x6b\x86\xe7\x8d\x35\x65\x8c\xbb\x0f\x97\xb1\xbf\xbd\xaa\xd6\xf5\xc6\x6d\x7c\xa8\xbb\x16\x69\xdf\x9f\x8c\x1b\xaf\x8f\x31\x6d\xe3\x2a\xbb\x9d\xa7\xd6\x35\xc9\xed\x2a\x58\xe7\xcb\xf7\x94\xc7\xc5\x7c\x8f\x9b\xd8\x3d\x43\x21\x8a\x2e\xd0\x25\x2f\x9d\xb1\x71\xfb\xdb\x1c\xef\x18\xd9\x31\x6e\x40\x11\x63\x04\x76\xce\x09\x83\x95\x2b\x12\xc2\x41\xec\x61\xbd\xd0\x6c\xa0\x18\xd7\xe5\x6e\xbc\x54\x53\xe0\x3e\xb9\x52\x13\xdb\x77\x6b\x22\x12\x20\x71\x82\x20\x76\xcf\xbf\x6c\xa8\xd8\xe6\x83\x55\xb6\xc7\x4b\xe4\x09\x2c\x1c\x9c\x0e\xc8\xc4\x6a\xc3\x39\xbb\x38\x6d\xc4\xb6\x8a\x1c\xb7\x57\x16\x62\x91\x2d\x17\x4d\x46\x8e\x2d\xec\xe9\x9c\xeb\x9f\xa9\x06\x1c\xcf\x44\x93\x03\x3d\xfe\x4f\x3f\xd5\x26\xa3\x3a\xd4\xa8\x1e\x3e\x36\x35\x04\xa1\x86\x90\x75\x8a\x4d\xa7\xd8\x74\x8a\x4d\x5b\x7b\x3d\xc5\xa6\x5f\x68\x6c\xfa\x4d\xfd\xbf\x25\x4e\x02\xde\x93\xed\x04\x93\x26\x98\x54\x7b\x2a\x74\x62\x42\x49\xfb\x43\x49\x82\x99\xd7\xe1\x26\xdd\x36\x57\x15\xa5\x96\x6d\x76\xbf\xb4\xb1\x25\x9a\x61\x88\xc1\x94\xe2\x49\x19\x5c\x53\xdb\xe5\xb6\x60\x38\x0a\xb6\x5c\x6f\x45\xc2\x86\xaf\x8a\x73\xa6\x78\xce\x26\x33\x7d\x33\x31\x21\xbc\xa3\x44\x78\xff\x82\x01\x7c\xcb\xad\xfe\x04\xf5\xd0\x04\xf5\x26\xa8\x37\x41\x3d\xd4\x84\x7a\xdc\xe4\x9d\xe3\x14\x4f\x68\x6f\x42\x7b\xb5\xa7\xa5\x5a\x4c\x80\x6f\x02\x7c\x3a\xde\x3f\x0f\xc0\xd7\x78\xc8\xf7\x69\x4d\x20\x10\x4d\x20\x70\x02\x81\x5d\xbd\x9e\x40\xe0\xd7\x04\x02\xf9\x27\x2c\x9f\x27\x00\x34\x7d\xb6\x59\x3c\x2d\x1e\x75\x6f\x9f\x1c\x04\x18\xb5\x4e\x4d\xfa\xd6\xb1\xd6\xb4\xa8\xe1\x1c\x62\x1e\x39\x8c\xe4\x8a\x35\x41\xc8\x69\x65\xb5\xfa\xf7\x75\x40\xae\x09\x69\xa1\x09\x69\x4d\x48\x6b\x42\x5a\xa8\x89\xb4\xa2\x38\xfa\xeb\x21\x36\xa9\xea\x3f\x1e\x19\xf4\x75\x9a\x71\xd3\x9c\x4e\x74\x16\xf4\x5a\x32\x8e\x03\x29\x9a\x96\xab\x07\x92\x33\xa0\x61\x65\x64\xaf\x1b\x18\x5a\x33\xa4\x83\x04\x2e\xef\x62\x1e\xd8\x09\x45\xd1\x3a\xd8\x57\x76\x64\xda\x7e\x4d\x7b\x06\x80\x2b\x47\x8c\x94\xd5\x8f\xe1\x04\x04\x83\xa5\x13\xd0\x73\x3a\x07\x3d\xc6\x4b\x09\x17\x5c\x7f\xe7\x3e\x1c\xb8\x68\x8f\x5d\x2d\xfb\x67\x79\xb4\xfb\x7c\xd7\x9d\xb9\x74\x1a\xad\x35\xbc\x1e\xd1\xa0\xe6\x2b\xd0\x5e\x70\x67\x50\x93\x6d\x98\xa8\xd3\x66\x0f\x68\xb1\xeb\x73\x8e\x0e\x20\x36\xa4\x45\x17\x68\x6d\x40\xbb\x4e\x20\xdd\x90\xfe\xba\xc0\x7d\xa3\xfa\x3b\x0a\x1c\xda\xb6\x2c\xf9\x97\x98\x89\x38\xe4\xa2\x88\x99\x86\x01\x49\x07\x2d\x9f\xe7\xf3\xe9\xc5\x20\xf0\x39\x40\xe6\xa3\x10\xea\x3e\x25\xbd\xef\x86\xdb\x05\x6d\x81\x81\x07\x08\xbb\x13\x28\x83\xc0\xcd\xc7\x28\x1c\x42\xea\x07\x69\xbd\x5d\xf4\xa6\xb4\xdf\x18\x06\x72\xaf\x7f\x26\x67\x3e\x6c\x23\x94\x21\x96\xcc\x18\xc6\x74\x7e\xfa\xce\xcb\x44\xdb\xc3\x1e\xa1\xd0\xcc\xa8\xca\x95\x6b\xbf\x9a\x99\xd3\x0a\x4d\x3c\xe8\x01\x95\x26\x15\x36\x06\x4f\xd5\x02\x28\x8b\x94\xd3\xa3\x89\x51\xb7\xd0\x29\x1b\xb5\x1f\x94\x97\xfa\xb3\xfd\x7a\x32\x28\x0f\xd6\xa8\xa1\xc3\x41\xa0\xa2\xb6\x96\xb3\x09\x4d\x9d\x33\x1d\x5a\x68\xdb\x29\x3d\x77\x86\x98\xc1\x1c\x21\xe5\x7d\xea\x9e\x7b\x7d\x38\xeb\x27\x50\x9f\x72\x6c\x0e\x62\xc2\x69\x9c\x0c\x89\x4e\x12\x88\xf9\x2f\xa3\xc0\x78\x30\xe3\xe0\x23\xd8\xee\x43\xe5\x84\x54\xbd\x0c\x78\x41\x03\x26\x74\x7f\x24\x62\xb1\x02\x50\x17\xe8\x2e\x66\xb4\xfe\xba\xb0\x76\x0c\xcc\x17\x1e\x46\xbb\x38\xb0\x64\x0a\x9d\x8f\x26\x74\x7e\x14\x14\xe4\x66\xe9\xca\x6e\x4b\xcf\xde\xcc\xd9\xf1\x1a\xa3\xe6\x6a\x97\x85\x45\x1a\x75\xb3\xc3\x74\xfe\xd0\xb4\x12\xd9\x45\x69\x5a\x89\x9c\x56\x22\xa7\x95\xc8\xc7\x5b\x89\x7c\x04\xc8\x28\xf9\x24\xdd\xb5\x89\x63\x2f\x29\x2c\x69\xbe\xcb\x31\x0c\xbf\x16\x62\xa6\xf4\xb7\xe3\xd2\x42\x1d\x8d\xe1\xfe\x52\x75\x8a\x4a\x0c\xab\x77\x16\x56\x37\x4c\x98\xce\xd5\x97\x25\x2d\x87\x59\xfb\xf1\xf8\x16\x5b\x9d\xb4\x5d\x10\xa7\xed\x6e\x70\xe7\x65\x75\x7a\x3b\x04\x4a\x40\xef\x87\xd4\x04\x95\x4f\xe8\x32\x53\x0f\x6f\x1e\x0d\x02\xef\x12\xbc\xd9\xb8\x3a\xae\xfc\x58\xe6\x2a\xbf\xfc\xd3\x95\x06\xf5\xb9\x5e\xcc\xb5\xb6\x8d\x3c\x77\xd6\x19\xc0\x3f\x96\x71\xed\xb8\x7a\x76\xb8\xad\xd3\x9d\xc5\x6b\x95\xed\x5a\x62\x46\xbd\xb3\x2c\x5d\xf3\x7b\x24\xf2\xcd\xa6\x0b\xe5\xe8\xfd\x46\x0a\xcc\x8a\x30\xde\xd0\xbf\x93\xad\x1b\x5a\x31\x06\x06\x5f\x5e\x40\x60\x46\x3d\x9a\xba\xa4\x79\x85\x19\xbb\x8b\x13\xdf\x25\xcd\xb3\x0d\xe7\xd3\xa1\x28\x0b\xb2\x9e\x47\x18\xfb\x29\xf6\x89\x96\x6a\xf5\xf7\xb5\x56\xf3\xda\xc6\x79\xbf\x96\xe6\x31\x4e\xd2\x15\xbd\x75\xb9\xf5\xf9\xf8\x4c\x49\x63\x7e\x1d\x60\x0c\x1b\x28\xa2\xb1\xfd\xed\xc0\x23\x9c\x77\xbf\x7b\x88\x87\x7a\xae\x7e\xbb\xf8\x5b\xcf\x36\x6b\xe4\x42\x9c\x1f\xe5\x71\x7c\xba\x69\xb0\xd7\x87\xd5\xd1\x55\x10\xdf\x49\x77\x1c\x00\x4f\x71\x52\xdc\x27\xfb\x5b\x9f\x7b\xe9\xdc\x68\x6c\x2e\x14\x8b\x24\x18\xe7\x7b\x74\x6b\xb4\x10\x7e\x77\x7b\xcc\x83\x5e\xdb\x5e\x84\x22\xfa\xb0\xc8\x6b\x68\xa9\x29\x52\xee\xd1\x13\x8b\xbb\x87\x3f\xff\x59\xa1\x20\x8e\xc7\x9d\x15\x69\xfc\x07\xf9\xf2\x67\xc3\xa6\x10\xfa\xa1\x67\x43\x25\xdd\x69\x16\xc8\xb3\x40\x87\x91\xa7\x89\x50\xb4\xbc\xc7\x89\x80\x77\x72\x9f\xe6\xc2\xb1\xcc\x05\x35\xb0\x3b\x32\xa4\xf4\xf5\x4d\x93\x6a\x48\xbe\x30\xfc\x34\x4d\x42\xa4\x9f\x84\x8b\xe6\x28\x3a\x58\x78\x90\xbb\x2c\xb7\x2a\xdf\x3d\xea\x70\x49\xa6\xba\xe2\x59\x91\x6f\xc7\x3a\x4c\xe3\x0a\xc0\x6e\x96\x34\x5f\x4f\xef\x68\xa0\x88\x10\x9f\xf8\x28\x8d\xc5\xd9\x37\x08\x17\xf7\xf9\xe5\xf7\xb4\x06\x81\xf6\xfa\x89\x92\x37\xd9\x88\x69\xba\x3e\x38\xdd\xa9\xdc\x3b\x2f\x89\xc8\x9a\x8c\xe1\xce\x37\x6d\x1a\xce\x7a\x1d\xac\x76\x37\xeb\x20\xe1\xa7\x09\x8e\x18\xf0\xc4\x2f\xff\x48\x63\x2f\x0e\xca\xef\xd8\xc5\x75\xff\x6d\xe2\x34\xce\x7e\x9d\x79\x14\x1b\x92\x64\x0b\xc1\x9f\x30\xf9\xd1\x9d\xf2\xbb\x66\xf0\x7a\xcb\xa6\x65\x3b\x86\x89\x79\x95\xf5\x99\xc7\x6e\xa5\xab\x44\xe4\x9f\xa9\xfc\x73\x43\x37\xba\x8b\xc7\x77\x4b\x47\x82\x5c\x2b\x97\xbb\xb3\x7f\x0e\xc5\x6e\xed\x41\x58\x3f\x74\xc8\x8e\xff\xe6\xd6\x3e\x47\xdb\xfa\x4a\xf2\x7a\x27\xe1\x74\x2b\xdf\xae\xa9\xe6\x16\x1b\x67\xdb\xf7\x2a\x03\xae\xdb\x1b\xe0\xf2\x6b\xb7\xaa\x21\x65\x47\x8e\xb3\x2f\xdc\xca\x26\x5a\x76\xff\xb8\xff\xaa\xad\xea\x97\xb2\x87\xc7\xd9\x97\x6c\x6a\xbf\x9c\xb6\xa5\xdf\x50\x54\x1b\x2f\x65\xeb\x8f\xfb\x2f\x7a\x6a\x52\xdc\x6b\x6b\xf2\x17\x3c\x3b\xac\xd0\xdc\x90\xe4\xec\xcb\xb4\x9a\x18\x95\xbd\x93\xfb\x94\xe2\x3e\x1b\xd3\x0b\x51\xbf\xe7\xc9\xe9\x57\x67\xd5\x44\x88\xdc\x29\x7f\xd4\x54\x78\x19\x0c\x59\x20\x68\x7d\x54\x2a\x78\x52\xfc\xd5\xa8\x4d\x32\xbd\x3e\x2c\x97\x61\xfa\x37\xfc\x7f\x0f\xff\x0b\x00\x00\xff\xff\x31\x8b\xeb\xb6\x54\x9c\x00\x00") + +func v2SchemaJSONBytes() ([]byte, error) { + return bindataRead( + _v2SchemaJSON, + "v2/schema.json", + ) +} + +func v2SchemaJSON() (*asset, error) { + bytes, err := v2SchemaJSONBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "v2/schema.json", size: 40020, mode: os.FileMode(420), modTime: time.Unix(1446147817, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "jsonschema-draft-04.json": jsonschemaDraft04JSON, + "v2/schema.json": v2SchemaJSON, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} + +var _bintree = &bintree{nil, map[string]*bintree{ + "jsonschema-draft-04.json": &bintree{jsonschemaDraft04JSON, map[string]*bintree{}}, + "v2": &bintree{nil, map[string]*bintree{ + "schema.json": &bintree{v2SchemaJSON, map[string]*bintree{}}, + }}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} diff --git a/vendor/github.com/go-openapi/spec/contact_info.go b/vendor/github.com/go-openapi/spec/contact_info.go new file mode 100644 index 0000000000..f285970aa1 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/contact_info.go @@ -0,0 +1,24 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +// ContactInfo contact information for the exposed API. +// +// For more information: http://goo.gl/8us55a#contactObject +type ContactInfo struct { + Name string `json:"name,omitempty"` + URL string `json:"url,omitempty"` + Email string `json:"email,omitempty"` +} diff --git a/vendor/github.com/go-openapi/spec/expander.go b/vendor/github.com/go-openapi/spec/expander.go new file mode 100644 index 0000000000..eb1490b055 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/expander.go @@ -0,0 +1,626 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "fmt" + "net/url" + "reflect" + "strings" + "sync" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// ResolutionCache a cache for resolving urls +type ResolutionCache interface { + Get(string) (interface{}, bool) + Set(string, interface{}) +} + +type simpleCache struct { + lock sync.Mutex + store map[string]interface{} +} + +var resCache = initResolutionCache() + +func initResolutionCache() ResolutionCache { + return &simpleCache{store: map[string]interface{}{ + "http://swagger.io/v2/schema.json": MustLoadSwagger20Schema(), + "http://json-schema.org/draft-04/schema": MustLoadJSONSchemaDraft04(), + }} +} + +func (s *simpleCache) Get(uri string) (interface{}, bool) { + s.lock.Lock() + v, ok := s.store[uri] + s.lock.Unlock() + return v, ok +} + +func (s *simpleCache) Set(uri string, data interface{}) { + s.lock.Lock() + s.store[uri] = data + s.lock.Unlock() +} + +// ResolveRef resolves a reference against a context root +func ResolveRef(root interface{}, ref *Ref) (*Schema, error) { + resolver, err := defaultSchemaLoader(root, nil, nil) + if err != nil { + return nil, err + } + + result := new(Schema) + if err := resolver.Resolve(ref, result); err != nil { + return nil, err + } + return result, nil +} + +// ResolveParameter resolves a paramter reference against a context root +func ResolveParameter(root interface{}, ref Ref) (*Parameter, error) { + resolver, err := defaultSchemaLoader(root, nil, nil) + if err != nil { + return nil, err + } + + result := new(Parameter) + if err := resolver.Resolve(&ref, result); err != nil { + return nil, err + } + return result, nil +} + +// ResolveResponse resolves response a reference against a context root +func ResolveResponse(root interface{}, ref Ref) (*Response, error) { + resolver, err := defaultSchemaLoader(root, nil, nil) + if err != nil { + return nil, err + } + + result := new(Response) + if err := resolver.Resolve(&ref, result); err != nil { + return nil, err + } + return result, nil +} + +type schemaLoader struct { + loadingRef *Ref + startingRef *Ref + currentRef *Ref + root interface{} + cache ResolutionCache + loadDoc func(string) (json.RawMessage, error) +} + +var idPtr, _ = jsonpointer.New("/id") +var schemaPtr, _ = jsonpointer.New("/$schema") +var refPtr, _ = jsonpointer.New("/$ref") + +func defaultSchemaLoader(root interface{}, ref *Ref, cache ResolutionCache) (*schemaLoader, error) { + if cache == nil { + cache = resCache + } + + var ptr *jsonpointer.Pointer + if ref != nil { + ptr = ref.GetPointer() + } + + currentRef := nextRef(root, ref, ptr) + + return &schemaLoader{ + root: root, + loadingRef: ref, + startingRef: ref, + cache: cache, + loadDoc: func(path string) (json.RawMessage, error) { + data, err := swag.LoadFromFileOrHTTP(path) + if err != nil { + return nil, err + } + return json.RawMessage(data), nil + }, + currentRef: currentRef, + }, nil +} + +func idFromNode(node interface{}) (*Ref, error) { + if idValue, _, err := idPtr.Get(node); err == nil { + if refStr, ok := idValue.(string); ok && refStr != "" { + idRef, err := NewRef(refStr) + if err != nil { + return nil, err + } + return &idRef, nil + } + } + return nil, nil +} + +func nextRef(startingNode interface{}, startingRef *Ref, ptr *jsonpointer.Pointer) *Ref { + if startingRef == nil { + return nil + } + if ptr == nil { + return startingRef + } + + ret := startingRef + var idRef *Ref + node := startingNode + + for _, tok := range ptr.DecodedTokens() { + node, _, _ = jsonpointer.GetForToken(node, tok) + if node == nil { + break + } + + idRef, _ = idFromNode(node) + if idRef != nil { + nw, err := ret.Inherits(*idRef) + if err != nil { + break + } + ret = nw + } + + refRef, _, _ := refPtr.Get(node) + if refRef != nil { + rf, _ := NewRef(refRef.(string)) + nw, err := ret.Inherits(rf) + if err != nil { + break + } + ret = nw + } + + } + return ret +} + +func (r *schemaLoader) resolveRef(currentRef, ref *Ref, node, target interface{}) error { + tgt := reflect.ValueOf(target) + if tgt.Kind() != reflect.Ptr { + return fmt.Errorf("resolve ref: target needs to be a pointer") + } + + oldRef := currentRef + if currentRef != nil { + var err error + currentRef, err = currentRef.Inherits(*nextRef(node, ref, currentRef.GetPointer())) + if err != nil { + return err + } + } + if currentRef == nil { + currentRef = ref + } + + refURL := currentRef.GetURL() + if refURL == nil { + return nil + } + if currentRef.IsRoot() { + nv := reflect.ValueOf(node) + reflect.Indirect(tgt).Set(reflect.Indirect(nv)) + return nil + } + + if strings.HasPrefix(refURL.String(), "#") { + res, _, err := ref.GetPointer().Get(node) + if err != nil { + res, _, err = ref.GetPointer().Get(r.root) + if err != nil { + return err + } + } + rv := reflect.Indirect(reflect.ValueOf(res)) + tgtType := reflect.Indirect(tgt).Type() + if rv.Type().AssignableTo(tgtType) { + reflect.Indirect(tgt).Set(reflect.Indirect(reflect.ValueOf(res))) + } else { + if err := swag.DynamicJSONToStruct(rv.Interface(), target); err != nil { + return err + } + } + + return nil + } + + if refURL.Scheme != "" && refURL.Host != "" { + // most definitely take the red pill + data, _, _, err := r.load(refURL) + if err != nil { + return err + } + + if ((oldRef == nil && currentRef != nil) || + (oldRef != nil && currentRef == nil) || + oldRef.String() != currentRef.String()) && + ((oldRef == nil && ref != nil) || + (oldRef != nil && ref == nil) || + (oldRef.String() != ref.String())) { + + return r.resolveRef(currentRef, ref, data, target) + } + + var res interface{} + if currentRef.String() != "" { + res, _, err = currentRef.GetPointer().Get(data) + if err != nil { + return err + } + } else { + res = data + } + + if err := swag.DynamicJSONToStruct(res, target); err != nil { + return err + } + + } + return nil +} + +func (r *schemaLoader) load(refURL *url.URL) (interface{}, url.URL, bool, error) { + toFetch := *refURL + toFetch.Fragment = "" + + data, fromCache := r.cache.Get(toFetch.String()) + if !fromCache { + b, err := r.loadDoc(toFetch.String()) + if err != nil { + return nil, url.URL{}, false, err + } + + if err := json.Unmarshal(b, &data); err != nil { + return nil, url.URL{}, false, err + } + r.cache.Set(toFetch.String(), data) + } + + return data, toFetch, fromCache, nil +} +func (r *schemaLoader) Resolve(ref *Ref, target interface{}) error { + if err := r.resolveRef(r.currentRef, ref, r.root, target); err != nil { + return err + } + + return nil +} + +type specExpander struct { + spec *Swagger + resolver *schemaLoader +} + +// ExpandSpec expands the references in a swagger spec +func ExpandSpec(spec *Swagger) error { + resolver, err := defaultSchemaLoader(spec, nil, nil) + if err != nil { + return err + } + + for key, defintition := range spec.Definitions { + var def *Schema + var err error + if def, err = expandSchema(defintition, []string{"#/definitions/" + key}, resolver); err != nil { + return err + } + spec.Definitions[key] = *def + } + + for key, parameter := range spec.Parameters { + if err := expandParameter(¶meter, resolver); err != nil { + return err + } + spec.Parameters[key] = parameter + } + + for key, response := range spec.Responses { + if err := expandResponse(&response, resolver); err != nil { + return err + } + spec.Responses[key] = response + } + + if spec.Paths != nil { + for key, path := range spec.Paths.Paths { + if err := expandPathItem(&path, resolver); err != nil { + return err + } + spec.Paths.Paths[key] = path + } + } + + return nil +} + +// ExpandSchema expands the refs in the schema object +func ExpandSchema(schema *Schema, root interface{}, cache ResolutionCache) error { + + if schema == nil { + return nil + } + if root == nil { + root = schema + } + + nrr, _ := NewRef(schema.ID) + var rrr *Ref + if nrr.String() != "" { + switch root.(type) { + case *Schema: + rid, _ := NewRef(root.(*Schema).ID) + rrr, _ = rid.Inherits(nrr) + case *Swagger: + rid, _ := NewRef(root.(*Swagger).ID) + rrr, _ = rid.Inherits(nrr) + } + + } + + resolver, err := defaultSchemaLoader(root, rrr, cache) + if err != nil { + return err + } + + refs := []string{""} + if rrr != nil { + refs[0] = rrr.String() + } + var s *Schema + if s, err = expandSchema(*schema, refs, resolver); err != nil { + return nil + } + *schema = *s + return nil +} + +func expandItems(target Schema, parentRefs []string, resolver *schemaLoader) (*Schema, error) { + if target.Items != nil { + if target.Items.Schema != nil { + t, err := expandSchema(*target.Items.Schema, parentRefs, resolver) + if err != nil { + return nil, err + } + *target.Items.Schema = *t + } + for i := range target.Items.Schemas { + t, err := expandSchema(target.Items.Schemas[i], parentRefs, resolver) + if err != nil { + return nil, err + } + target.Items.Schemas[i] = *t + } + } + return &target, nil +} + +func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (schema *Schema, err error) { + defer func() { + schema = &target + }() + if target.Ref.String() == "" && target.Ref.IsRoot() { + target = *resolver.root.(*Schema) + return + } + + // t is the new expanded schema + var t *Schema + for target.Ref.String() != "" { + // var newTarget Schema + pRefs := strings.Join(parentRefs, ",") + pRefs += "," + if strings.Contains(pRefs, target.Ref.String()+",") { + err = nil + return + } + + if err = resolver.Resolve(&target.Ref, &t); err != nil { + return + } + parentRefs = append(parentRefs, target.Ref.String()) + target = *t + } + + if t, err = expandItems(target, parentRefs, resolver); err != nil { + return + } + target = *t + + for i := range target.AllOf { + if t, err = expandSchema(target.AllOf[i], parentRefs, resolver); err != nil { + return + } + target.AllOf[i] = *t + } + for i := range target.AnyOf { + if t, err = expandSchema(target.AnyOf[i], parentRefs, resolver); err != nil { + return + } + target.AnyOf[i] = *t + } + for i := range target.OneOf { + if t, err = expandSchema(target.OneOf[i], parentRefs, resolver); err != nil { + return + } + target.OneOf[i] = *t + } + if target.Not != nil { + if t, err = expandSchema(*target.Not, parentRefs, resolver); err != nil { + return + } + *target.Not = *t + } + for k, _ := range target.Properties { + if t, err = expandSchema(target.Properties[k], parentRefs, resolver); err != nil { + return + } + target.Properties[k] = *t + } + if target.AdditionalProperties != nil && target.AdditionalProperties.Schema != nil { + if t, err = expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver); err != nil { + return + } + *target.AdditionalProperties.Schema = *t + } + for k, _ := range target.PatternProperties { + if t, err = expandSchema(target.PatternProperties[k], parentRefs, resolver); err != nil { + return + } + target.PatternProperties[k] = *t + } + for k, _ := range target.Dependencies { + if target.Dependencies[k].Schema != nil { + if t, err = expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver); err != nil { + return + } + *target.Dependencies[k].Schema = *t + } + } + if target.AdditionalItems != nil && target.AdditionalItems.Schema != nil { + if t, err = expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver); err != nil { + return + } + *target.AdditionalItems.Schema = *t + } + for k, _ := range target.Definitions { + if t, err = expandSchema(target.Definitions[k], parentRefs, resolver); err != nil { + return + } + target.Definitions[k] = *t + } + return +} + +func expandPathItem(pathItem *PathItem, resolver *schemaLoader) error { + if pathItem == nil { + return nil + } + if pathItem.Ref.String() != "" { + if err := resolver.Resolve(&pathItem.Ref, &pathItem); err != nil { + return err + } + } + + for idx := range pathItem.Parameters { + if err := expandParameter(&(pathItem.Parameters[idx]), resolver); err != nil { + return err + } + } + if err := expandOperation(pathItem.Get, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Head, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Options, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Put, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Post, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Patch, resolver); err != nil { + return err + } + if err := expandOperation(pathItem.Delete, resolver); err != nil { + return err + } + return nil +} + +func expandOperation(op *Operation, resolver *schemaLoader) error { + if op == nil { + return nil + } + for i, param := range op.Parameters { + if err := expandParameter(¶m, resolver); err != nil { + return err + } + op.Parameters[i] = param + } + + if op.Responses != nil { + responses := op.Responses + if err := expandResponse(responses.Default, resolver); err != nil { + return err + } + for code, response := range responses.StatusCodeResponses { + if err := expandResponse(&response, resolver); err != nil { + return err + } + responses.StatusCodeResponses[code] = response + } + } + return nil +} + +func expandResponse(response *Response, resolver *schemaLoader) error { + if response == nil { + return nil + } + + if response.Ref.String() != "" { + if err := resolver.Resolve(&response.Ref, response); err != nil { + return err + } + } + + if response.Schema != nil { + parentRefs := []string{response.Schema.Ref.String()} + if err := resolver.Resolve(&response.Schema.Ref, &response.Schema); err != nil { + return err + } + if s, err := expandSchema(*response.Schema, parentRefs, resolver); err != nil { + return err + } else { + *response.Schema = *s + } + } + return nil +} + +func expandParameter(parameter *Parameter, resolver *schemaLoader) error { + if parameter == nil { + return nil + } + if parameter.Ref.String() != "" { + if err := resolver.Resolve(¶meter.Ref, parameter); err != nil { + return err + } + } + if parameter.Schema != nil { + parentRefs := []string{parameter.Schema.Ref.String()} + if err := resolver.Resolve(¶meter.Schema.Ref, ¶meter.Schema); err != nil { + return err + } + if s, err := expandSchema(*parameter.Schema, parentRefs, resolver); err != nil { + return err + } else { + *parameter.Schema = *s + } + } + return nil +} diff --git a/vendor/github.com/go-openapi/spec/external_docs.go b/vendor/github.com/go-openapi/spec/external_docs.go new file mode 100644 index 0000000000..88add91b2b --- /dev/null +++ b/vendor/github.com/go-openapi/spec/external_docs.go @@ -0,0 +1,24 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +// ExternalDocumentation allows referencing an external resource for +// extended documentation. +// +// For more information: http://goo.gl/8us55a#externalDocumentationObject +type ExternalDocumentation struct { + Description string `json:"description,omitempty"` + URL string `json:"url,omitempty"` +} diff --git a/vendor/github.com/go-openapi/spec/header.go b/vendor/github.com/go-openapi/spec/header.go new file mode 100644 index 0000000000..758b845310 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/header.go @@ -0,0 +1,165 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/swag" +) + +type HeaderProps struct { + Description string `json:"description,omitempty"` +} + +// Header describes a header for a response of the API +// +// For more information: http://goo.gl/8us55a#headerObject +type Header struct { + CommonValidations + SimpleSchema + HeaderProps +} + +// ResponseHeader creates a new header instance for use in a response +func ResponseHeader() *Header { + return new(Header) +} + +// WithDescription sets the description on this response, allows for chaining +func (h *Header) WithDescription(description string) *Header { + h.Description = description + return h +} + +// Typed a fluent builder method for the type of parameter +func (h *Header) Typed(tpe, format string) *Header { + h.Type = tpe + h.Format = format + return h +} + +// CollectionOf a fluent builder method for an array item +func (h *Header) CollectionOf(items *Items, format string) *Header { + h.Type = "array" + h.Items = items + h.CollectionFormat = format + return h +} + +// WithDefault sets the default value on this item +func (h *Header) WithDefault(defaultValue interface{}) *Header { + h.Default = defaultValue + return h +} + +// WithMaxLength sets a max length value +func (h *Header) WithMaxLength(max int64) *Header { + h.MaxLength = &max + return h +} + +// WithMinLength sets a min length value +func (h *Header) WithMinLength(min int64) *Header { + h.MinLength = &min + return h +} + +// WithPattern sets a pattern value +func (h *Header) WithPattern(pattern string) *Header { + h.Pattern = pattern + return h +} + +// WithMultipleOf sets a multiple of value +func (h *Header) WithMultipleOf(number float64) *Header { + h.MultipleOf = &number + return h +} + +// WithMaximum sets a maximum number value +func (h *Header) WithMaximum(max float64, exclusive bool) *Header { + h.Maximum = &max + h.ExclusiveMaximum = exclusive + return h +} + +// WithMinimum sets a minimum number value +func (h *Header) WithMinimum(min float64, exclusive bool) *Header { + h.Minimum = &min + h.ExclusiveMinimum = exclusive + return h +} + +// WithEnum sets a the enum values (replace) +func (h *Header) WithEnum(values ...interface{}) *Header { + h.Enum = append([]interface{}{}, values...) + return h +} + +// WithMaxItems sets the max items +func (h *Header) WithMaxItems(size int64) *Header { + h.MaxItems = &size + return h +} + +// WithMinItems sets the min items +func (h *Header) WithMinItems(size int64) *Header { + h.MinItems = &size + return h +} + +// UniqueValues dictates that this array can only have unique items +func (h *Header) UniqueValues() *Header { + h.UniqueItems = true + return h +} + +// AllowDuplicates this array can have duplicates +func (h *Header) AllowDuplicates() *Header { + h.UniqueItems = false + return h +} + +// MarshalJSON marshal this to JSON +func (h Header) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(h.CommonValidations) + if err != nil { + return nil, err + } + b2, err := json.Marshal(h.SimpleSchema) + if err != nil { + return nil, err + } + b3, err := json.Marshal(h.HeaderProps) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2, b3), nil +} + +// UnmarshalJSON marshal this from JSON +func (h *Header) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &h.CommonValidations); err != nil { + return err + } + if err := json.Unmarshal(data, &h.SimpleSchema); err != nil { + return err + } + if err := json.Unmarshal(data, &h.HeaderProps); err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/go-openapi/spec/info.go b/vendor/github.com/go-openapi/spec/info.go new file mode 100644 index 0000000000..fb8b7c4ac5 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/info.go @@ -0,0 +1,168 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "strings" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// Extensions vendor specific extensions +type Extensions map[string]interface{} + +// Add adds a value to these extensions +func (e Extensions) Add(key string, value interface{}) { + realKey := strings.ToLower(key) + e[realKey] = value +} + +// GetString gets a string value from the extensions +func (e Extensions) GetString(key string) (string, bool) { + if v, ok := e[strings.ToLower(key)]; ok { + str, ok := v.(string) + return str, ok + } + return "", false +} + +// GetBool gets a string value from the extensions +func (e Extensions) GetBool(key string) (bool, bool) { + if v, ok := e[strings.ToLower(key)]; ok { + str, ok := v.(bool) + return str, ok + } + return false, false +} + +// GetStringSlice gets a string value from the extensions +func (e Extensions) GetStringSlice(key string) ([]string, bool) { + if v, ok := e[strings.ToLower(key)]; ok { + arr, ok := v.([]interface{}) + if !ok { + return nil, false + } + var strs []string + for _, iface := range arr { + str, ok := iface.(string) + if !ok { + return nil, false + } + strs = append(strs, str) + } + return strs, ok + } + return nil, false +} + +// VendorExtensible composition block. +type VendorExtensible struct { + Extensions Extensions +} + +// AddExtension adds an extension to this extensible object +func (v *VendorExtensible) AddExtension(key string, value interface{}) { + if value == nil { + return + } + if v.Extensions == nil { + v.Extensions = make(map[string]interface{}) + } + v.Extensions.Add(key, value) +} + +// MarshalJSON marshals the extensions to json +func (v VendorExtensible) MarshalJSON() ([]byte, error) { + toser := make(map[string]interface{}) + for k, v := range v.Extensions { + lk := strings.ToLower(k) + if strings.HasPrefix(lk, "x-") { + toser[k] = v + } + } + return json.Marshal(toser) +} + +// UnmarshalJSON for this extensible object +func (v *VendorExtensible) UnmarshalJSON(data []byte) error { + var d map[string]interface{} + if err := json.Unmarshal(data, &d); err != nil { + return err + } + for k, vv := range d { + lk := strings.ToLower(k) + if strings.HasPrefix(lk, "x-") { + if v.Extensions == nil { + v.Extensions = map[string]interface{}{} + } + v.Extensions[k] = vv + } + } + return nil +} + +// InfoProps the properties for an info definition +type InfoProps struct { + Description string `json:"description,omitempty"` + Title string `json:"title,omitempty"` + TermsOfService string `json:"termsOfService,omitempty"` + Contact *ContactInfo `json:"contact,omitempty"` + License *License `json:"license,omitempty"` + Version string `json:"version,omitempty"` +} + +// Info object provides metadata about the API. +// The metadata can be used by the clients if needed, and can be presented in the Swagger-UI for convenience. +// +// For more information: http://goo.gl/8us55a#infoObject +type Info struct { + VendorExtensible + InfoProps +} + +// JSONLookup look up a value by the json property name +func (i Info) JSONLookup(token string) (interface{}, error) { + if ex, ok := i.Extensions[token]; ok { + return &ex, nil + } + r, _, err := jsonpointer.GetForToken(i.InfoProps, token) + return r, err +} + +// MarshalJSON marshal this to JSON +func (i Info) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(i.InfoProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(i.VendorExtensible) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2), nil +} + +// UnmarshalJSON marshal this from JSON +func (i *Info) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &i.InfoProps); err != nil { + return err + } + if err := json.Unmarshal(data, &i.VendorExtensible); err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/go-openapi/spec/items.go b/vendor/github.com/go-openapi/spec/items.go new file mode 100644 index 0000000000..4d57ea5ca6 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/items.go @@ -0,0 +1,199 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/swag" +) + +type SimpleSchema struct { + Type string `json:"type,omitempty"` + Format string `json:"format,omitempty"` + Items *Items `json:"items,omitempty"` + CollectionFormat string `json:"collectionFormat,omitempty"` + Default interface{} `json:"default,omitempty"` +} + +func (s *SimpleSchema) TypeName() string { + if s.Format != "" { + return s.Format + } + return s.Type +} + +func (s *SimpleSchema) ItemsTypeName() string { + if s.Items == nil { + return "" + } + return s.Items.TypeName() +} + +type CommonValidations struct { + Maximum *float64 `json:"maximum,omitempty"` + ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` + Minimum *float64 `json:"minimum,omitempty"` + ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` + MaxLength *int64 `json:"maxLength,omitempty"` + MinLength *int64 `json:"minLength,omitempty"` + Pattern string `json:"pattern,omitempty"` + MaxItems *int64 `json:"maxItems,omitempty"` + MinItems *int64 `json:"minItems,omitempty"` + UniqueItems bool `json:"uniqueItems,omitempty"` + MultipleOf *float64 `json:"multipleOf,omitempty"` + Enum []interface{} `json:"enum,omitempty"` +} + +// Items a limited subset of JSON-Schema's items object. +// It is used by parameter definitions that are not located in "body". +// +// For more information: http://goo.gl/8us55a#items-object- +type Items struct { + Refable + CommonValidations + SimpleSchema +} + +// NewItems creates a new instance of items +func NewItems() *Items { + return &Items{} +} + +// Typed a fluent builder method for the type of item +func (i *Items) Typed(tpe, format string) *Items { + i.Type = tpe + i.Format = format + return i +} + +// CollectionOf a fluent builder method for an array item +func (i *Items) CollectionOf(items *Items, format string) *Items { + i.Type = "array" + i.Items = items + i.CollectionFormat = format + return i +} + +// WithDefault sets the default value on this item +func (i *Items) WithDefault(defaultValue interface{}) *Items { + i.Default = defaultValue + return i +} + +// WithMaxLength sets a max length value +func (i *Items) WithMaxLength(max int64) *Items { + i.MaxLength = &max + return i +} + +// WithMinLength sets a min length value +func (i *Items) WithMinLength(min int64) *Items { + i.MinLength = &min + return i +} + +// WithPattern sets a pattern value +func (i *Items) WithPattern(pattern string) *Items { + i.Pattern = pattern + return i +} + +// WithMultipleOf sets a multiple of value +func (i *Items) WithMultipleOf(number float64) *Items { + i.MultipleOf = &number + return i +} + +// WithMaximum sets a maximum number value +func (i *Items) WithMaximum(max float64, exclusive bool) *Items { + i.Maximum = &max + i.ExclusiveMaximum = exclusive + return i +} + +// WithMinimum sets a minimum number value +func (i *Items) WithMinimum(min float64, exclusive bool) *Items { + i.Minimum = &min + i.ExclusiveMinimum = exclusive + return i +} + +// WithEnum sets a the enum values (replace) +func (i *Items) WithEnum(values ...interface{}) *Items { + i.Enum = append([]interface{}{}, values...) + return i +} + +// WithMaxItems sets the max items +func (i *Items) WithMaxItems(size int64) *Items { + i.MaxItems = &size + return i +} + +// WithMinItems sets the min items +func (i *Items) WithMinItems(size int64) *Items { + i.MinItems = &size + return i +} + +// UniqueValues dictates that this array can only have unique items +func (i *Items) UniqueValues() *Items { + i.UniqueItems = true + return i +} + +// AllowDuplicates this array can have duplicates +func (i *Items) AllowDuplicates() *Items { + i.UniqueItems = false + return i +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (i *Items) UnmarshalJSON(data []byte) error { + var validations CommonValidations + if err := json.Unmarshal(data, &validations); err != nil { + return err + } + var ref Refable + if err := json.Unmarshal(data, &ref); err != nil { + return err + } + var simpleSchema SimpleSchema + if err := json.Unmarshal(data, &simpleSchema); err != nil { + return err + } + i.Refable = ref + i.CommonValidations = validations + i.SimpleSchema = simpleSchema + return nil +} + +// MarshalJSON converts this items object to JSON +func (i Items) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(i.CommonValidations) + if err != nil { + return nil, err + } + b2, err := json.Marshal(i.SimpleSchema) + if err != nil { + return nil, err + } + b3, err := json.Marshal(i.Refable) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b3, b1, b2), nil +} diff --git a/vendor/github.com/go-openapi/spec/license.go b/vendor/github.com/go-openapi/spec/license.go new file mode 100644 index 0000000000..f20961b4fd --- /dev/null +++ b/vendor/github.com/go-openapi/spec/license.go @@ -0,0 +1,23 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +// License information for the exposed API. +// +// For more information: http://goo.gl/8us55a#licenseObject +type License struct { + Name string `json:"name,omitempty"` + URL string `json:"url,omitempty"` +} diff --git a/vendor/github.com/go-openapi/spec/operation.go b/vendor/github.com/go-openapi/spec/operation.go new file mode 100644 index 0000000000..de1db6f020 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/operation.go @@ -0,0 +1,233 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +type OperationProps struct { + Description string `json:"description,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Produces []string `json:"produces,omitempty"` + Schemes []string `json:"schemes,omitempty"` // the scheme, when present must be from [http, https, ws, wss] + Tags []string `json:"tags,omitempty"` + Summary string `json:"summary,omitempty"` + ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` + ID string `json:"operationId,omitempty"` + Deprecated bool `json:"deprecated,omitempty"` + Security []map[string][]string `json:"security,omitempty"` + Parameters []Parameter `json:"parameters,omitempty"` + Responses *Responses `json:"responses,omitempty"` +} + +// Operation describes a single API operation on a path. +// +// For more information: http://goo.gl/8us55a#operationObject +type Operation struct { + VendorExtensible + OperationProps +} + +// SuccessResponse gets a success response model +func (o *Operation) SuccessResponse() (*Response, int, bool) { + if o.Responses == nil { + return nil, 0, false + } + + for k, v := range o.Responses.StatusCodeResponses { + if k/100 == 2 { + return &v, k, true + } + } + + return o.Responses.Default, 0, false +} + +// JSONLookup look up a value by the json property name +func (o Operation) JSONLookup(token string) (interface{}, error) { + if ex, ok := o.Extensions[token]; ok { + return &ex, nil + } + r, _, err := jsonpointer.GetForToken(o.OperationProps, token) + return r, err +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (o *Operation) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &o.OperationProps); err != nil { + return err + } + if err := json.Unmarshal(data, &o.VendorExtensible); err != nil { + return err + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (o Operation) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(o.OperationProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(o.VendorExtensible) + if err != nil { + return nil, err + } + concated := swag.ConcatJSON(b1, b2) + return concated, nil +} + +// NewOperation creates a new operation instance. +// It expects an ID as parameter but not passing an ID is also valid. +func NewOperation(id string) *Operation { + op := new(Operation) + op.ID = id + return op +} + +// WithID sets the ID property on this operation, allows for chaining. +func (o *Operation) WithID(id string) *Operation { + o.ID = id + return o +} + +// WithDescription sets the description on this operation, allows for chaining +func (o *Operation) WithDescription(description string) *Operation { + o.Description = description + return o +} + +// WithSummary sets the summary on this operation, allows for chaining +func (o *Operation) WithSummary(summary string) *Operation { + o.Summary = summary + return o +} + +// WithExternalDocs sets/removes the external docs for/from this operation. +// When you pass empty strings as params the external documents will be removed. +// When you pass non-empty string as one value then those values will be used on the external docs object. +// So when you pass a non-empty description, you should also pass the url and vice versa. +func (o *Operation) WithExternalDocs(description, url string) *Operation { + if description == "" && url == "" { + o.ExternalDocs = nil + return o + } + + if o.ExternalDocs == nil { + o.ExternalDocs = &ExternalDocumentation{} + } + o.ExternalDocs.Description = description + o.ExternalDocs.URL = url + return o +} + +// Deprecate marks the operation as deprecated +func (o *Operation) Deprecate() *Operation { + o.Deprecated = true + return o +} + +// Undeprecate marks the operation as not deprected +func (o *Operation) Undeprecate() *Operation { + o.Deprecated = false + return o +} + +// WithConsumes adds media types for incoming body values +func (o *Operation) WithConsumes(mediaTypes ...string) *Operation { + o.Consumes = append(o.Consumes, mediaTypes...) + return o +} + +// WithProduces adds media types for outgoing body values +func (o *Operation) WithProduces(mediaTypes ...string) *Operation { + o.Produces = append(o.Produces, mediaTypes...) + return o +} + +// WithTags adds tags for this operation +func (o *Operation) WithTags(tags ...string) *Operation { + o.Tags = append(o.Tags, tags...) + return o +} + +// AddParam adds a parameter to this operation, when a parameter for that location +// and with that name already exists it will be replaced +func (o *Operation) AddParam(param *Parameter) *Operation { + if param == nil { + return o + } + + for i, p := range o.Parameters { + if p.Name == param.Name && p.In == param.In { + params := append(o.Parameters[:i], *param) + params = append(params, o.Parameters[i+1:]...) + o.Parameters = params + return o + } + } + + o.Parameters = append(o.Parameters, *param) + return o +} + +// RemoveParam removes a parameter from the operation +func (o *Operation) RemoveParam(name, in string) *Operation { + for i, p := range o.Parameters { + if p.Name == name && p.In == name { + o.Parameters = append(o.Parameters[:i], o.Parameters[i+1:]...) + return o + } + } + return o +} + +// SecuredWith adds a security scope to this operation. +func (o *Operation) SecuredWith(name string, scopes ...string) *Operation { + o.Security = append(o.Security, map[string][]string{name: scopes}) + return o +} + +// WithDefaultResponse adds a default response to the operation. +// Passing a nil value will remove the response +func (o *Operation) WithDefaultResponse(response *Response) *Operation { + return o.RespondsWith(0, response) +} + +// RespondsWith adds a status code response to the operation. +// When the code is 0 the value of the response will be used as default response value. +// When the value of the response is nil it will be removed from the operation +func (o *Operation) RespondsWith(code int, response *Response) *Operation { + if o.Responses == nil { + o.Responses = new(Responses) + } + if code == 0 { + o.Responses.Default = response + return o + } + if response == nil { + delete(o.Responses.StatusCodeResponses, code) + return o + } + if o.Responses.StatusCodeResponses == nil { + o.Responses.StatusCodeResponses = make(map[int]Response) + } + o.Responses.StatusCodeResponses[code] = *response + return o +} diff --git a/vendor/github.com/go-openapi/spec/parameter.go b/vendor/github.com/go-openapi/spec/parameter.go new file mode 100644 index 0000000000..8fb66d12a5 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/parameter.go @@ -0,0 +1,299 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// QueryParam creates a query parameter +func QueryParam(name string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "query"}} +} + +// HeaderParam creates a header parameter, this is always required by default +func HeaderParam(name string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "header", Required: true}} +} + +// PathParam creates a path parameter, this is always required +func PathParam(name string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "path", Required: true}} +} + +// BodyParam creates a body parameter +func BodyParam(name string, schema *Schema) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "body", Schema: schema}, SimpleSchema: SimpleSchema{Type: "object"}} +} + +// FormDataParam creates a body parameter +func FormDataParam(name string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}} +} + +// FileParam creates a body parameter +func FileParam(name string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}, SimpleSchema: SimpleSchema{Type: "file"}} +} + +// SimpleArrayParam creates a param for a simple array (string, int, date etc) +func SimpleArrayParam(name, tpe, fmt string) *Parameter { + return &Parameter{ParamProps: ParamProps{Name: name}, SimpleSchema: SimpleSchema{Type: "array", CollectionFormat: "csv", Items: &Items{SimpleSchema: SimpleSchema{Type: "string", Format: fmt}}}} +} + +// ParamRef creates a parameter that's a json reference +func ParamRef(uri string) *Parameter { + p := new(Parameter) + p.Ref = MustCreateRef(uri) + return p +} + +type ParamProps struct { + Description string `json:"description,omitempty"` + Name string `json:"name,omitempty"` + In string `json:"in,omitempty"` + Required bool `json:"required,omitempty"` + Schema *Schema `json:"schema,omitempty"` // when in == "body" + AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` // when in == "query" || "formData" +} + +// Parameter a unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). +// +// There are five possible parameter types. +// * Path - Used together with [Path Templating](#pathTemplating), where the parameter value is actually part of the operation's URL. This does not include the host or base path of the API. For example, in `/items/{itemId}`, the path parameter is `itemId`. +// * Query - Parameters that are appended to the URL. For example, in `/items?id=###`, the query parameter is `id`. +// * Header - Custom headers that are expected as part of the request. +// * Body - The payload that's appended to the HTTP request. Since there can only be one payload, there can only be *one* body parameter. The name of the body parameter has no effect on the parameter itself and is used for documentation purposes only. Since Form parameters are also in the payload, body and form parameters cannot exist together for the same operation. +// * Form - Used to describe the payload of an HTTP request when either `application/x-www-form-urlencoded` or `multipart/form-data` are used as the content type of the request (in Swagger's definition, the [`consumes`](#operationConsumes) property of an operation). This is the only parameter type that can be used to send files, thus supporting the `file` type. Since form parameters are sent in the payload, they cannot be declared together with a body parameter for the same operation. Form parameters have a different format based on the content-type used (for further details, consult http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4): +// * `application/x-www-form-urlencoded` - Similar to the format of Query parameters but as a payload. For example, `foo=1&bar=swagger` - both `foo` and `bar` are form parameters. This is normally used for simple parameters that are being transferred. +// * `multipart/form-data` - each parameter takes a section in the payload with an internal header. For example, for the header `Content-Disposition: form-data; name="submit-name"` the name of the parameter is `submit-name`. This type of form parameters is more commonly used for file transfers. +// +// For more information: http://goo.gl/8us55a#parameterObject +type Parameter struct { + Refable + CommonValidations + SimpleSchema + VendorExtensible + ParamProps +} + +// JSONLookup look up a value by the json property name +func (p Parameter) JSONLookup(token string) (interface{}, error) { + if ex, ok := p.Extensions[token]; ok { + return &ex, nil + } + if token == "$ref" { + return &p.Ref, nil + } + r, _, err := jsonpointer.GetForToken(p.CommonValidations, token) + if err != nil { + return nil, err + } + if r != nil { + return r, nil + } + r, _, err = jsonpointer.GetForToken(p.SimpleSchema, token) + if err != nil { + return nil, err + } + if r != nil { + return r, nil + } + r, _, err = jsonpointer.GetForToken(p.ParamProps, token) + return r, err +} + +// WithDescription a fluent builder method for the description of the parameter +func (p *Parameter) WithDescription(description string) *Parameter { + p.Description = description + return p +} + +// Named a fluent builder method to override the name of the parameter +func (p *Parameter) Named(name string) *Parameter { + p.Name = name + return p +} + +// WithLocation a fluent builder method to override the location of the parameter +func (p *Parameter) WithLocation(in string) *Parameter { + p.In = in + return p +} + +// Typed a fluent builder method for the type of the parameter value +func (p *Parameter) Typed(tpe, format string) *Parameter { + p.Type = tpe + p.Format = format + return p +} + +// CollectionOf a fluent builder method for an array parameter +func (p *Parameter) CollectionOf(items *Items, format string) *Parameter { + p.Type = "array" + p.Items = items + p.CollectionFormat = format + return p +} + +// WithDefault sets the default value on this parameter +func (p *Parameter) WithDefault(defaultValue interface{}) *Parameter { + p.AsOptional() // with default implies optional + p.Default = defaultValue + return p +} + +// AllowsEmptyValues flags this parameter as being ok with empty values +func (p *Parameter) AllowsEmptyValues() *Parameter { + p.AllowEmptyValue = true + return p +} + +// NoEmptyValues flags this parameter as not liking empty values +func (p *Parameter) NoEmptyValues() *Parameter { + p.AllowEmptyValue = false + return p +} + +// AsOptional flags this parameter as optional +func (p *Parameter) AsOptional() *Parameter { + p.Required = false + return p +} + +// AsRequired flags this parameter as required +func (p *Parameter) AsRequired() *Parameter { + if p.Default != nil { // with a default required makes no sense + return p + } + p.Required = true + return p +} + +// WithMaxLength sets a max length value +func (p *Parameter) WithMaxLength(max int64) *Parameter { + p.MaxLength = &max + return p +} + +// WithMinLength sets a min length value +func (p *Parameter) WithMinLength(min int64) *Parameter { + p.MinLength = &min + return p +} + +// WithPattern sets a pattern value +func (p *Parameter) WithPattern(pattern string) *Parameter { + p.Pattern = pattern + return p +} + +// WithMultipleOf sets a multiple of value +func (p *Parameter) WithMultipleOf(number float64) *Parameter { + p.MultipleOf = &number + return p +} + +// WithMaximum sets a maximum number value +func (p *Parameter) WithMaximum(max float64, exclusive bool) *Parameter { + p.Maximum = &max + p.ExclusiveMaximum = exclusive + return p +} + +// WithMinimum sets a minimum number value +func (p *Parameter) WithMinimum(min float64, exclusive bool) *Parameter { + p.Minimum = &min + p.ExclusiveMinimum = exclusive + return p +} + +// WithEnum sets a the enum values (replace) +func (p *Parameter) WithEnum(values ...interface{}) *Parameter { + p.Enum = append([]interface{}{}, values...) + return p +} + +// WithMaxItems sets the max items +func (p *Parameter) WithMaxItems(size int64) *Parameter { + p.MaxItems = &size + return p +} + +// WithMinItems sets the min items +func (p *Parameter) WithMinItems(size int64) *Parameter { + p.MinItems = &size + return p +} + +// UniqueValues dictates that this array can only have unique items +func (p *Parameter) UniqueValues() *Parameter { + p.UniqueItems = true + return p +} + +// AllowDuplicates this array can have duplicates +func (p *Parameter) AllowDuplicates() *Parameter { + p.UniqueItems = false + return p +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (p *Parameter) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &p.CommonValidations); err != nil { + return err + } + if err := json.Unmarshal(data, &p.Refable); err != nil { + return err + } + if err := json.Unmarshal(data, &p.SimpleSchema); err != nil { + return err + } + if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { + return err + } + if err := json.Unmarshal(data, &p.ParamProps); err != nil { + return err + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (p Parameter) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(p.CommonValidations) + if err != nil { + return nil, err + } + b2, err := json.Marshal(p.SimpleSchema) + if err != nil { + return nil, err + } + b3, err := json.Marshal(p.Refable) + if err != nil { + return nil, err + } + b4, err := json.Marshal(p.VendorExtensible) + if err != nil { + return nil, err + } + b5, err := json.Marshal(p.ParamProps) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b3, b1, b2, b4, b5), nil +} diff --git a/vendor/github.com/go-openapi/spec/path_item.go b/vendor/github.com/go-openapi/spec/path_item.go new file mode 100644 index 0000000000..9ab3ec5383 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/path_item.go @@ -0,0 +1,90 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// pathItemProps the path item specific properties +type PathItemProps struct { + Get *Operation `json:"get,omitempty"` + Put *Operation `json:"put,omitempty"` + Post *Operation `json:"post,omitempty"` + Delete *Operation `json:"delete,omitempty"` + Options *Operation `json:"options,omitempty"` + Head *Operation `json:"head,omitempty"` + Patch *Operation `json:"patch,omitempty"` + Parameters []Parameter `json:"parameters,omitempty"` +} + +// PathItem describes the operations available on a single path. +// A Path Item may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). +// The path itself is still exposed to the documentation viewer but they will +// not know which operations and parameters are available. +// +// For more information: http://goo.gl/8us55a#pathItemObject +type PathItem struct { + Refable + VendorExtensible + PathItemProps +} + +// JSONLookup look up a value by the json property name +func (p PathItem) JSONLookup(token string) (interface{}, error) { + if ex, ok := p.Extensions[token]; ok { + return &ex, nil + } + if token == "$ref" { + return &p.Ref, nil + } + r, _, err := jsonpointer.GetForToken(p.PathItemProps, token) + return r, err +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (p *PathItem) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &p.Refable); err != nil { + return err + } + if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { + return err + } + if err := json.Unmarshal(data, &p.PathItemProps); err != nil { + return err + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (p PathItem) MarshalJSON() ([]byte, error) { + b3, err := json.Marshal(p.Refable) + if err != nil { + return nil, err + } + b4, err := json.Marshal(p.VendorExtensible) + if err != nil { + return nil, err + } + b5, err := json.Marshal(p.PathItemProps) + if err != nil { + return nil, err + } + concated := swag.ConcatJSON(b3, b4, b5) + return concated, nil +} diff --git a/vendor/github.com/go-openapi/spec/paths.go b/vendor/github.com/go-openapi/spec/paths.go new file mode 100644 index 0000000000..9dc82a2901 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/paths.go @@ -0,0 +1,97 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "fmt" + "strings" + + "github.com/go-openapi/swag" +) + +// Paths holds the relative paths to the individual endpoints. +// The path is appended to the [`basePath`](http://goo.gl/8us55a#swaggerBasePath) in order +// to construct the full URL. +// The Paths may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). +// +// For more information: http://goo.gl/8us55a#pathsObject +type Paths struct { + VendorExtensible + Paths map[string]PathItem `json:"-"` // custom serializer to flatten this, each entry must start with "/" +} + +// JSONLookup look up a value by the json property name +func (p Paths) JSONLookup(token string) (interface{}, error) { + if pi, ok := p.Paths[token]; ok { + return &pi, nil + } + if ex, ok := p.Extensions[token]; ok { + return &ex, nil + } + return nil, fmt.Errorf("object has no field %q", token) +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (p *Paths) UnmarshalJSON(data []byte) error { + var res map[string]json.RawMessage + if err := json.Unmarshal(data, &res); err != nil { + return err + } + for k, v := range res { + if strings.HasPrefix(strings.ToLower(k), "x-") { + if p.Extensions == nil { + p.Extensions = make(map[string]interface{}) + } + var d interface{} + if err := json.Unmarshal(v, &d); err != nil { + return err + } + p.Extensions[k] = d + } + if strings.HasPrefix(k, "/") { + if p.Paths == nil { + p.Paths = make(map[string]PathItem) + } + var pi PathItem + if err := json.Unmarshal(v, &pi); err != nil { + return err + } + p.Paths[k] = pi + } + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (p Paths) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(p.VendorExtensible) + if err != nil { + return nil, err + } + + pths := make(map[string]PathItem) + for k, v := range p.Paths { + if strings.HasPrefix(k, "/") { + pths[k] = v + } + } + b2, err := json.Marshal(pths) + if err != nil { + return nil, err + } + concated := swag.ConcatJSON(b1, b2) + return concated, nil +} diff --git a/vendor/github.com/go-openapi/spec/ref.go b/vendor/github.com/go-openapi/spec/ref.go new file mode 100644 index 0000000000..68631df8b4 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/ref.go @@ -0,0 +1,167 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "net/http" + "os" + "path/filepath" + + "github.com/go-openapi/jsonreference" +) + +// Refable is a struct for things that accept a $ref property +type Refable struct { + Ref Ref +} + +// MarshalJSON marshals the ref to json +func (r Refable) MarshalJSON() ([]byte, error) { + return r.Ref.MarshalJSON() +} + +// UnmarshalJSON unmarshalss the ref from json +func (r *Refable) UnmarshalJSON(d []byte) error { + return json.Unmarshal(d, &r.Ref) +} + +// Ref represents a json reference that is potentially resolved +type Ref struct { + jsonreference.Ref +} + +// RemoteURI gets the remote uri part of the ref +func (r *Ref) RemoteURI() string { + if r.String() == "" { + return r.String() + } + + u := *r.GetURL() + u.Fragment = "" + return u.String() +} + +// IsValidURI returns true when the url the ref points to can be found +func (r *Ref) IsValidURI() bool { + if r.String() == "" { + return true + } + + v := r.RemoteURI() + if v == "" { + return true + } + + if r.HasFullURL { + rr, err := http.Get(v) + if err != nil { + return false + } + + return rr.StatusCode/100 == 2 + } + + if !(r.HasFileScheme || r.HasFullFilePath || r.HasURLPathOnly) { + return false + } + + // check for local file + pth := v + if r.HasURLPathOnly { + p, e := filepath.Abs(pth) + if e != nil { + return false + } + pth = p + } + + fi, err := os.Stat(pth) + if err != nil { + return false + } + + return !fi.IsDir() +} + +// Inherits creates a new reference from a parent and a child +// If the child cannot inherit from the parent, an error is returned +func (r *Ref) Inherits(child Ref) (*Ref, error) { + ref, err := r.Ref.Inherits(child.Ref) + if err != nil { + return nil, err + } + return &Ref{Ref: *ref}, nil +} + +// NewRef creates a new instance of a ref object +// returns an error when the reference uri is an invalid uri +func NewRef(refURI string) (Ref, error) { + ref, err := jsonreference.New(refURI) + if err != nil { + return Ref{}, err + } + return Ref{Ref: ref}, nil +} + +// MustCreateRef creates a ref object but +func MustCreateRef(refURI string) Ref { + return Ref{Ref: jsonreference.MustCreateRef(refURI)} +} + +// // NewResolvedRef creates a resolved ref +// func NewResolvedRef(refURI string, data interface{}) Ref { +// return Ref{ +// Ref: jsonreference.MustCreateRef(refURI), +// Resolved: data, +// } +// } + +// MarshalJSON marshals this ref into a JSON object +func (r Ref) MarshalJSON() ([]byte, error) { + str := r.String() + if str == "" { + if r.IsRoot() { + return []byte(`{"$ref":"#"}`), nil + } + return []byte("{}"), nil + } + v := map[string]interface{}{"$ref": str} + return json.Marshal(v) +} + +// UnmarshalJSON unmarshals this ref from a JSON object +func (r *Ref) UnmarshalJSON(d []byte) error { + var v map[string]interface{} + if err := json.Unmarshal(d, &v); err != nil { + return err + } + + if v == nil { + return nil + } + + if vv, ok := v["$ref"]; ok { + if str, ok := vv.(string); ok { + ref, err := jsonreference.New(str) + if err != nil { + return err + } + *r = Ref{Ref: ref} + } + } + + return nil +} diff --git a/vendor/github.com/go-openapi/spec/response.go b/vendor/github.com/go-openapi/spec/response.go new file mode 100644 index 0000000000..308cc8478f --- /dev/null +++ b/vendor/github.com/go-openapi/spec/response.go @@ -0,0 +1,113 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/swag" +) + +// ResponseProps properties specific to a response +type ResponseProps struct { + Description string `json:"description,omitempty"` + Schema *Schema `json:"schema,omitempty"` + Headers map[string]Header `json:"headers,omitempty"` + Examples map[string]interface{} `json:"examples,omitempty"` +} + +// Response describes a single response from an API Operation. +// +// For more information: http://goo.gl/8us55a#responseObject +type Response struct { + Refable + ResponseProps +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (r *Response) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &r.ResponseProps); err != nil { + return err + } + if err := json.Unmarshal(data, &r.Refable); err != nil { + return err + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (r Response) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(r.ResponseProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(r.Refable) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2), nil +} + +// NewResponse creates a new response instance +func NewResponse() *Response { + return new(Response) +} + +// ResponseRef creates a response as a json reference +func ResponseRef(url string) *Response { + resp := NewResponse() + resp.Ref = MustCreateRef(url) + return resp +} + +// WithDescription sets the description on this response, allows for chaining +func (r *Response) WithDescription(description string) *Response { + r.Description = description + return r +} + +// WithSchema sets the schema on this response, allows for chaining. +// Passing a nil argument removes the schema from this response +func (r *Response) WithSchema(schema *Schema) *Response { + r.Schema = schema + return r +} + +// AddHeader adds a header to this response +func (r *Response) AddHeader(name string, header *Header) *Response { + if header == nil { + return r.RemoveHeader(name) + } + if r.Headers == nil { + r.Headers = make(map[string]Header) + } + r.Headers[name] = *header + return r +} + +// RemoveHeader removes a header from this response +func (r *Response) RemoveHeader(name string) *Response { + delete(r.Headers, name) + return r +} + +// AddExample adds an example to this response +func (r *Response) AddExample(mediaType string, example interface{}) *Response { + if r.Examples == nil { + r.Examples = make(map[string]interface{}) + } + r.Examples[mediaType] = example + return r +} diff --git a/vendor/github.com/go-openapi/spec/responses.go b/vendor/github.com/go-openapi/spec/responses.go new file mode 100644 index 0000000000..ea071ca63d --- /dev/null +++ b/vendor/github.com/go-openapi/spec/responses.go @@ -0,0 +1,122 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "fmt" + "reflect" + "strconv" + + "github.com/go-openapi/swag" +) + +// Responses is a container for the expected responses of an operation. +// The container maps a HTTP response code to the expected response. +// It is not expected from the documentation to necessarily cover all possible HTTP response codes, +// since they may not be known in advance. However, it is expected from the documentation to cover +// a successful operation response and any known errors. +// +// The `default` can be used a default response object for all HTTP codes that are not covered +// individually by the specification. +// +// The `Responses Object` MUST contain at least one response code, and it SHOULD be the response +// for a successful operation call. +// +// For more information: http://goo.gl/8us55a#responsesObject +type Responses struct { + VendorExtensible + ResponsesProps +} + +// JSONLookup implements an interface to customize json pointer lookup +func (r Responses) JSONLookup(token string) (interface{}, error) { + if token == "default" { + return r.Default, nil + } + if ex, ok := r.Extensions[token]; ok { + return &ex, nil + } + if i, err := strconv.Atoi(token); err == nil { + if scr, ok := r.StatusCodeResponses[i]; ok { + return &scr, nil + } + } + return nil, fmt.Errorf("object has no field %q", token) +} + +// UnmarshalJSON hydrates this items instance with the data from JSON +func (r *Responses) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &r.ResponsesProps); err != nil { + return err + } + if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { + return err + } + if reflect.DeepEqual(ResponsesProps{}, r.ResponsesProps) { + r.ResponsesProps = ResponsesProps{} + } + return nil +} + +// MarshalJSON converts this items object to JSON +func (r Responses) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(r.ResponsesProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(r.VendorExtensible) + if err != nil { + return nil, err + } + concated := swag.ConcatJSON(b1, b2) + return concated, nil +} + +type ResponsesProps struct { + Default *Response + StatusCodeResponses map[int]Response +} + +func (r ResponsesProps) MarshalJSON() ([]byte, error) { + toser := map[string]Response{} + if r.Default != nil { + toser["default"] = *r.Default + } + for k, v := range r.StatusCodeResponses { + toser[strconv.Itoa(k)] = v + } + return json.Marshal(toser) +} + +func (r *ResponsesProps) UnmarshalJSON(data []byte) error { + var res map[string]Response + if err := json.Unmarshal(data, &res); err != nil { + return nil + } + if v, ok := res["default"]; ok { + r.Default = &v + delete(res, "default") + } + for k, v := range res { + if nk, err := strconv.Atoi(k); err == nil { + if r.StatusCodeResponses == nil { + r.StatusCodeResponses = map[int]Response{} + } + r.StatusCodeResponses[nk] = v + } + } + return nil +} diff --git a/vendor/github.com/go-openapi/spec/schema.go b/vendor/github.com/go-openapi/spec/schema.go new file mode 100644 index 0000000000..eb88f005c5 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/schema.go @@ -0,0 +1,628 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "fmt" + "net/url" + "strings" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// BooleanProperty creates a boolean property +func BooleanProperty() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"boolean"}}} +} + +// BoolProperty creates a boolean property +func BoolProperty() *Schema { return BooleanProperty() } + +// StringProperty creates a string property +func StringProperty() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} +} + +// CharProperty creates a string property +func CharProperty() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} +} + +// Float64Property creates a float64/double property +func Float64Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "double"}} +} + +// Float32Property creates a float32/float property +func Float32Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "float"}} +} + +// Int8Property creates an int8 property +func Int8Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int8"}} +} + +// Int16Property creates an int16 property +func Int16Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int16"}} +} + +// Int32Property creates an int32 property +func Int32Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int32"}} +} + +// Int64Property creates an int64 property +func Int64Property() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int64"}} +} + +// StrFmtProperty creates a property for the named string format +func StrFmtProperty(format string) *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: format}} +} + +// DateProperty creates a date property +func DateProperty() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date"}} +} + +// DateTimeProperty creates a date time property +func DateTimeProperty() *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date-time"}} +} + +// MapProperty creates a map property +func MapProperty(property *Schema) *Schema { + return &Schema{SchemaProps: SchemaProps{Type: []string{"object"}, AdditionalProperties: &SchemaOrBool{Allows: true, Schema: property}}} +} + +// RefProperty creates a ref property +func RefProperty(name string) *Schema { + return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} +} + +// RefSchema creates a ref property +func RefSchema(name string) *Schema { + return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} +} + +// ArrayProperty creates an array property +func ArrayProperty(items *Schema) *Schema { + if items == nil { + return &Schema{SchemaProps: SchemaProps{Type: []string{"array"}}} + } + return &Schema{SchemaProps: SchemaProps{Items: &SchemaOrArray{Schema: items}, Type: []string{"array"}}} +} + +// ComposedSchema creates a schema with allOf +func ComposedSchema(schemas ...Schema) *Schema { + s := new(Schema) + s.AllOf = schemas + return s +} + +// SchemaURL represents a schema url +type SchemaURL string + +// MarshalJSON marshal this to JSON +func (r SchemaURL) MarshalJSON() ([]byte, error) { + if r == "" { + return []byte("{}"), nil + } + v := map[string]interface{}{"$schema": string(r)} + return json.Marshal(v) +} + +// UnmarshalJSON unmarshal this from JSON +func (r *SchemaURL) UnmarshalJSON(data []byte) error { + var v map[string]interface{} + if err := json.Unmarshal(data, &v); err != nil { + return err + } + if v == nil { + return nil + } + if vv, ok := v["$schema"]; ok { + if str, ok := vv.(string); ok { + u, err := url.Parse(str) + if err != nil { + return err + } + + *r = SchemaURL(u.String()) + } + } + return nil +} + +// type ExtraSchemaProps map[string]interface{} + +// // JSONSchema represents a structure that is a json schema draft 04 +// type JSONSchema struct { +// SchemaProps +// ExtraSchemaProps +// } + +// // MarshalJSON marshal this to JSON +// func (s JSONSchema) MarshalJSON() ([]byte, error) { +// b1, err := json.Marshal(s.SchemaProps) +// if err != nil { +// return nil, err +// } +// b2, err := s.Ref.MarshalJSON() +// if err != nil { +// return nil, err +// } +// b3, err := s.Schema.MarshalJSON() +// if err != nil { +// return nil, err +// } +// b4, err := json.Marshal(s.ExtraSchemaProps) +// if err != nil { +// return nil, err +// } +// return swag.ConcatJSON(b1, b2, b3, b4), nil +// } + +// // UnmarshalJSON marshal this from JSON +// func (s *JSONSchema) UnmarshalJSON(data []byte) error { +// var sch JSONSchema +// if err := json.Unmarshal(data, &sch.SchemaProps); err != nil { +// return err +// } +// if err := json.Unmarshal(data, &sch.Ref); err != nil { +// return err +// } +// if err := json.Unmarshal(data, &sch.Schema); err != nil { +// return err +// } +// if err := json.Unmarshal(data, &sch.ExtraSchemaProps); err != nil { +// return err +// } +// *s = sch +// return nil +// } + +type SchemaProps struct { + ID string `json:"id,omitempty"` + Ref Ref `json:"-,omitempty"` + Schema SchemaURL `json:"-,omitempty"` + Description string `json:"description,omitempty"` + Type StringOrArray `json:"type,omitempty"` + Format string `json:"format,omitempty"` + Title string `json:"title,omitempty"` + Default interface{} `json:"default,omitempty"` + Maximum *float64 `json:"maximum,omitempty"` + ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` + Minimum *float64 `json:"minimum,omitempty"` + ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` + MaxLength *int64 `json:"maxLength,omitempty"` + MinLength *int64 `json:"minLength,omitempty"` + Pattern string `json:"pattern,omitempty"` + MaxItems *int64 `json:"maxItems,omitempty"` + MinItems *int64 `json:"minItems,omitempty"` + UniqueItems bool `json:"uniqueItems,omitempty"` + MultipleOf *float64 `json:"multipleOf,omitempty"` + Enum []interface{} `json:"enum,omitempty"` + MaxProperties *int64 `json:"maxProperties,omitempty"` + MinProperties *int64 `json:"minProperties,omitempty"` + Required []string `json:"required,omitempty"` + Items *SchemaOrArray `json:"items,omitempty"` + AllOf []Schema `json:"allOf,omitempty"` + OneOf []Schema `json:"oneOf,omitempty"` + AnyOf []Schema `json:"anyOf,omitempty"` + Not *Schema `json:"not,omitempty"` + Properties map[string]Schema `json:"properties,omitempty"` + AdditionalProperties *SchemaOrBool `json:"additionalProperties,omitempty"` + PatternProperties map[string]Schema `json:"patternProperties,omitempty"` + Dependencies Dependencies `json:"dependencies,omitempty"` + AdditionalItems *SchemaOrBool `json:"additionalItems,omitempty"` + Definitions Definitions `json:"definitions,omitempty"` +} + +type SwaggerSchemaProps struct { + Discriminator string `json:"discriminator,omitempty"` + ReadOnly bool `json:"readOnly,omitempty"` + XML *XMLObject `json:"xml,omitempty"` + ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` + Example interface{} `json:"example,omitempty"` +} + +// Schema the schema object allows the definition of input and output data types. +// These types can be objects, but also primitives and arrays. +// This object is based on the [JSON Schema Specification Draft 4](http://json-schema.org/) +// and uses a predefined subset of it. +// On top of this subset, there are extensions provided by this specification to allow for more complete documentation. +// +// For more information: http://goo.gl/8us55a#schemaObject +type Schema struct { + VendorExtensible + SchemaProps + SwaggerSchemaProps + ExtraProps map[string]interface{} `json:"-"` +} + +// JSONLookup implements an interface to customize json pointer lookup +func (s Schema) JSONLookup(token string) (interface{}, error) { + if ex, ok := s.Extensions[token]; ok { + return &ex, nil + } + + if ex, ok := s.ExtraProps[token]; ok { + return &ex, nil + } + + r, _, err := jsonpointer.GetForToken(s.SchemaProps, token) + if r != nil || err != nil { + return r, err + } + r, _, err = jsonpointer.GetForToken(s.SwaggerSchemaProps, token) + return r, err +} + +// WithID sets the id for this schema, allows for chaining +func (s *Schema) WithID(id string) *Schema { + s.ID = id + return s +} + +// WithTitle sets the title for this schema, allows for chaining +func (s *Schema) WithTitle(title string) *Schema { + s.Title = title + return s +} + +// WithDescription sets the description for this schema, allows for chaining +func (s *Schema) WithDescription(description string) *Schema { + s.Description = description + return s +} + +// WithProperties sets the properties for this schema +func (s *Schema) WithProperties(schemas map[string]Schema) *Schema { + s.Properties = schemas + return s +} + +// SetProperty sets a property on this schema +func (s *Schema) SetProperty(name string, schema Schema) *Schema { + if s.Properties == nil { + s.Properties = make(map[string]Schema) + } + s.Properties[name] = schema + return s +} + +// WithAllOf sets the all of property +func (s *Schema) WithAllOf(schemas ...Schema) *Schema { + s.AllOf = schemas + return s +} + +// WithMaxProperties sets the max number of properties an object can have +func (s *Schema) WithMaxProperties(max int64) *Schema { + s.MaxProperties = &max + return s +} + +// WithMinProperties sets the min number of properties an object must have +func (s *Schema) WithMinProperties(min int64) *Schema { + s.MinProperties = &min + return s +} + +// Typed sets the type of this schema for a single value item +func (s *Schema) Typed(tpe, format string) *Schema { + s.Type = []string{tpe} + s.Format = format + return s +} + +// AddType adds a type with potential format to the types for this schema +func (s *Schema) AddType(tpe, format string) *Schema { + s.Type = append(s.Type, tpe) + if format != "" { + s.Format = format + } + return s +} + +// CollectionOf a fluent builder method for an array parameter +func (s *Schema) CollectionOf(items Schema) *Schema { + s.Type = []string{"array"} + s.Items = &SchemaOrArray{Schema: &items} + return s +} + +// WithDefault sets the default value on this parameter +func (s *Schema) WithDefault(defaultValue interface{}) *Schema { + s.Default = defaultValue + return s +} + +// WithRequired flags this parameter as required +func (s *Schema) WithRequired(items ...string) *Schema { + s.Required = items + return s +} + +// AddRequired adds field names to the required properties array +func (s *Schema) AddRequired(items ...string) *Schema { + s.Required = append(s.Required, items...) + return s +} + +// WithMaxLength sets a max length value +func (s *Schema) WithMaxLength(max int64) *Schema { + s.MaxLength = &max + return s +} + +// WithMinLength sets a min length value +func (s *Schema) WithMinLength(min int64) *Schema { + s.MinLength = &min + return s +} + +// WithPattern sets a pattern value +func (s *Schema) WithPattern(pattern string) *Schema { + s.Pattern = pattern + return s +} + +// WithMultipleOf sets a multiple of value +func (s *Schema) WithMultipleOf(number float64) *Schema { + s.MultipleOf = &number + return s +} + +// WithMaximum sets a maximum number value +func (s *Schema) WithMaximum(max float64, exclusive bool) *Schema { + s.Maximum = &max + s.ExclusiveMaximum = exclusive + return s +} + +// WithMinimum sets a minimum number value +func (s *Schema) WithMinimum(min float64, exclusive bool) *Schema { + s.Minimum = &min + s.ExclusiveMinimum = exclusive + return s +} + +// WithEnum sets a the enum values (replace) +func (s *Schema) WithEnum(values ...interface{}) *Schema { + s.Enum = append([]interface{}{}, values...) + return s +} + +// WithMaxItems sets the max items +func (s *Schema) WithMaxItems(size int64) *Schema { + s.MaxItems = &size + return s +} + +// WithMinItems sets the min items +func (s *Schema) WithMinItems(size int64) *Schema { + s.MinItems = &size + return s +} + +// UniqueValues dictates that this array can only have unique items +func (s *Schema) UniqueValues() *Schema { + s.UniqueItems = true + return s +} + +// AllowDuplicates this array can have duplicates +func (s *Schema) AllowDuplicates() *Schema { + s.UniqueItems = false + return s +} + +// AddToAllOf adds a schema to the allOf property +func (s *Schema) AddToAllOf(schemas ...Schema) *Schema { + s.AllOf = append(s.AllOf, schemas...) + return s +} + +// WithDiscriminator sets the name of the discriminator field +func (s *Schema) WithDiscriminator(discriminator string) *Schema { + s.Discriminator = discriminator + return s +} + +// AsReadOnly flags this schema as readonly +func (s *Schema) AsReadOnly() *Schema { + s.ReadOnly = true + return s +} + +// AsWritable flags this schema as writeable (not read-only) +func (s *Schema) AsWritable() *Schema { + s.ReadOnly = false + return s +} + +// WithExample sets the example for this schema +func (s *Schema) WithExample(example interface{}) *Schema { + s.Example = example + return s +} + +// WithExternalDocs sets/removes the external docs for/from this schema. +// When you pass empty strings as params the external documents will be removed. +// When you pass non-empty string as one value then those values will be used on the external docs object. +// So when you pass a non-empty description, you should also pass the url and vice versa. +func (s *Schema) WithExternalDocs(description, url string) *Schema { + if description == "" && url == "" { + s.ExternalDocs = nil + return s + } + + if s.ExternalDocs == nil { + s.ExternalDocs = &ExternalDocumentation{} + } + s.ExternalDocs.Description = description + s.ExternalDocs.URL = url + return s +} + +// WithXMLName sets the xml name for the object +func (s *Schema) WithXMLName(name string) *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Name = name + return s +} + +// WithXMLNamespace sets the xml namespace for the object +func (s *Schema) WithXMLNamespace(namespace string) *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Namespace = namespace + return s +} + +// WithXMLPrefix sets the xml prefix for the object +func (s *Schema) WithXMLPrefix(prefix string) *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Prefix = prefix + return s +} + +// AsXMLAttribute flags this object as xml attribute +func (s *Schema) AsXMLAttribute() *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Attribute = true + return s +} + +// AsXMLElement flags this object as an xml node +func (s *Schema) AsXMLElement() *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Attribute = false + return s +} + +// AsWrappedXML flags this object as wrapped, this is mostly useful for array types +func (s *Schema) AsWrappedXML() *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Wrapped = true + return s +} + +// AsUnwrappedXML flags this object as an xml node +func (s *Schema) AsUnwrappedXML() *Schema { + if s.XML == nil { + s.XML = new(XMLObject) + } + s.XML.Wrapped = false + return s +} + +// MarshalJSON marshal this to JSON +func (s Schema) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(s.SchemaProps) + if err != nil { + return nil, fmt.Errorf("schema props %v", err) + } + b2, err := json.Marshal(s.VendorExtensible) + if err != nil { + return nil, fmt.Errorf("vendor props %v", err) + } + b3, err := s.Ref.MarshalJSON() + if err != nil { + return nil, fmt.Errorf("ref prop %v", err) + } + b4, err := s.Schema.MarshalJSON() + if err != nil { + return nil, fmt.Errorf("schema prop %v", err) + } + b5, err := json.Marshal(s.SwaggerSchemaProps) + if err != nil { + return nil, fmt.Errorf("common validations %v", err) + } + var b6 []byte + if s.ExtraProps != nil { + jj, err := json.Marshal(s.ExtraProps) + if err != nil { + return nil, fmt.Errorf("extra props %v", err) + } + b6 = jj + } + return swag.ConcatJSON(b1, b2, b3, b4, b5, b6), nil +} + +// UnmarshalJSON marshal this from JSON +func (s *Schema) UnmarshalJSON(data []byte) error { + var sch Schema + if err := json.Unmarshal(data, &sch.SchemaProps); err != nil { + return err + } + if err := json.Unmarshal(data, &sch.Ref); err != nil { + return err + } + if err := json.Unmarshal(data, &sch.Schema); err != nil { + return err + } + if err := json.Unmarshal(data, &sch.SwaggerSchemaProps); err != nil { + return err + } + + var d map[string]interface{} + if err := json.Unmarshal(data, &d); err != nil { + return err + } + + delete(d, "$ref") + delete(d, "$schema") + for _, pn := range swag.DefaultJSONNameProvider.GetJSONNames(s) { + delete(d, pn) + } + + for k, vv := range d { + lk := strings.ToLower(k) + if strings.HasPrefix(lk, "x-") { + if sch.Extensions == nil { + sch.Extensions = map[string]interface{}{} + } + sch.Extensions[k] = vv + continue + } + if sch.ExtraProps == nil { + sch.ExtraProps = map[string]interface{}{} + } + sch.ExtraProps[k] = vv + } + + *s = sch + + return nil +} diff --git a/vendor/github.com/go-openapi/spec/security_scheme.go b/vendor/github.com/go-openapi/spec/security_scheme.go new file mode 100644 index 0000000000..22d4f10af2 --- /dev/null +++ b/vendor/github.com/go-openapi/spec/security_scheme.go @@ -0,0 +1,142 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +const ( + basic = "basic" + apiKey = "apiKey" + oauth2 = "oauth2" + implicit = "implicit" + password = "password" + application = "application" + accessCode = "accessCode" +) + +// BasicAuth creates a basic auth security scheme +func BasicAuth() *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: basic}} +} + +// APIKeyAuth creates an api key auth security scheme +func APIKeyAuth(fieldName, valueSource string) *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: apiKey, Name: fieldName, In: valueSource}} +} + +// OAuth2Implicit creates an implicit flow oauth2 security scheme +func OAuth2Implicit(authorizationURL string) *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ + Type: oauth2, + Flow: implicit, + AuthorizationURL: authorizationURL, + }} +} + +// OAuth2Password creates a password flow oauth2 security scheme +func OAuth2Password(tokenURL string) *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ + Type: oauth2, + Flow: password, + TokenURL: tokenURL, + }} +} + +// OAuth2Application creates an application flow oauth2 security scheme +func OAuth2Application(tokenURL string) *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ + Type: oauth2, + Flow: application, + TokenURL: tokenURL, + }} +} + +// OAuth2AccessToken creates an access token flow oauth2 security scheme +func OAuth2AccessToken(authorizationURL, tokenURL string) *SecurityScheme { + return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ + Type: oauth2, + Flow: accessCode, + AuthorizationURL: authorizationURL, + TokenURL: tokenURL, + }} +} + +type SecuritySchemeProps struct { + Description string `json:"description,omitempty"` + Type string `json:"type"` + Name string `json:"name,omitempty"` // api key + In string `json:"in,omitempty"` // api key + Flow string `json:"flow,omitempty"` // oauth2 + AuthorizationURL string `json:"authorizationUrl,omitempty"` // oauth2 + TokenURL string `json:"tokenUrl,omitempty"` // oauth2 + Scopes map[string]string `json:"scopes,omitempty"` // oauth2 +} + +// AddScope adds a scope to this security scheme +func (s *SecuritySchemeProps) AddScope(scope, description string) { + if s.Scopes == nil { + s.Scopes = make(map[string]string) + } + s.Scopes[scope] = description +} + +// SecurityScheme allows the definition of a security scheme that can be used by the operations. +// Supported schemes are basic authentication, an API key (either as a header or as a query parameter) +// and OAuth2's common flows (implicit, password, application and access code). +// +// For more information: http://goo.gl/8us55a#securitySchemeObject +type SecurityScheme struct { + VendorExtensible + SecuritySchemeProps +} + +// JSONLookup implements an interface to customize json pointer lookup +func (s SecurityScheme) JSONLookup(token string) (interface{}, error) { + if ex, ok := s.Extensions[token]; ok { + return &ex, nil + } + + r, _, err := jsonpointer.GetForToken(s.SecuritySchemeProps, token) + return r, err +} + +// MarshalJSON marshal this to JSON +func (s SecurityScheme) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(s.SecuritySchemeProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(s.VendorExtensible) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2), nil +} + +// UnmarshalJSON marshal this from JSON +func (s *SecurityScheme) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &s.SecuritySchemeProps); err != nil { + return err + } + if err := json.Unmarshal(data, &s.VendorExtensible); err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/go-openapi/spec/spec.go b/vendor/github.com/go-openapi/spec/spec.go new file mode 100644 index 0000000000..cc2ae56b2b --- /dev/null +++ b/vendor/github.com/go-openapi/spec/spec.go @@ -0,0 +1,79 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import "encoding/json" + +//go:generate go-bindata -pkg=spec -prefix=./schemas -ignore=.*\.md ./schemas/... +//go:generate perl -pi -e s,Json,JSON,g bindata.go + +const ( + // SwaggerSchemaURL the url for the swagger 2.0 schema to validate specs + SwaggerSchemaURL = "http://swagger.io/v2/schema.json#" + // JSONSchemaURL the url for the json schema schema + JSONSchemaURL = "http://json-schema.org/draft-04/schema#" +) + +var ( + jsonSchema = MustLoadJSONSchemaDraft04() + swaggerSchema = MustLoadSwagger20Schema() +) + +// MustLoadJSONSchemaDraft04 panics when Swagger20Schema returns an error +func MustLoadJSONSchemaDraft04() *Schema { + d, e := JSONSchemaDraft04() + if e != nil { + panic(e) + } + return d +} + +// JSONSchemaDraft04 loads the json schema document for json shema draft04 +func JSONSchemaDraft04() (*Schema, error) { + b, err := Asset("jsonschema-draft-04.json") + if err != nil { + return nil, err + } + + schema := new(Schema) + if err := json.Unmarshal(b, schema); err != nil { + return nil, err + } + return schema, nil +} + +// MustLoadSwagger20Schema panics when Swagger20Schema returns an error +func MustLoadSwagger20Schema() *Schema { + d, e := Swagger20Schema() + if e != nil { + panic(e) + } + return d +} + +// Swagger20Schema loads the swagger 2.0 schema from the embedded assets +func Swagger20Schema() (*Schema, error) { + + b, err := Asset("v2/schema.json") + if err != nil { + return nil, err + } + + schema := new(Schema) + if err := json.Unmarshal(b, schema); err != nil { + return nil, err + } + return schema, nil +} diff --git a/vendor/github.com/go-openapi/spec/swagger.go b/vendor/github.com/go-openapi/spec/swagger.go new file mode 100644 index 0000000000..ff3ef875ed --- /dev/null +++ b/vendor/github.com/go-openapi/spec/swagger.go @@ -0,0 +1,317 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + "fmt" + "strconv" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +// Swagger this is the root document object for the API specification. +// It combines what previously was the Resource Listing and API Declaration (version 1.2 and earlier) together into one document. +// +// For more information: http://goo.gl/8us55a#swagger-object- +type Swagger struct { + VendorExtensible + SwaggerProps +} + +// JSONLookup look up a value by the json property name +func (s Swagger) JSONLookup(token string) (interface{}, error) { + if ex, ok := s.Extensions[token]; ok { + return &ex, nil + } + r, _, err := jsonpointer.GetForToken(s.SwaggerProps, token) + return r, err +} + +// MarshalJSON marshals this swagger structure to json +func (s Swagger) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(s.SwaggerProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(s.VendorExtensible) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2), nil +} + +// UnmarshalJSON unmarshals a swagger spec from json +func (s *Swagger) UnmarshalJSON(data []byte) error { + var sw Swagger + if err := json.Unmarshal(data, &sw.SwaggerProps); err != nil { + return err + } + if err := json.Unmarshal(data, &sw.VendorExtensible); err != nil { + return err + } + *s = sw + return nil +} + +type SwaggerProps struct { + ID string `json:"id,omitempty"` + Consumes []string `json:"consumes,omitempty"` + Produces []string `json:"produces,omitempty"` + Schemes []string `json:"schemes,omitempty"` // the scheme, when present must be from [http, https, ws, wss] + Swagger string `json:"swagger,omitempty"` + Info *Info `json:"info,omitempty"` + Host string `json:"host,omitempty"` + BasePath string `json:"basePath,omitempty"` // must start with a leading "/" + Paths *Paths `json:"paths"` // required + Definitions Definitions `json:"definitions"` + Parameters map[string]Parameter `json:"parameters,omitempty"` + Responses map[string]Response `json:"responses,omitempty"` + SecurityDefinitions SecurityDefinitions `json:"securityDefinitions,omitempty"` + Security []map[string][]string `json:"security,omitempty"` + Tags []Tag `json:"tags,omitempty"` + ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` +} + +// Dependencies represent a dependencies property +type Dependencies map[string]SchemaOrStringArray + +// SchemaOrBool represents a schema or boolean value, is biased towards true for the boolean property +type SchemaOrBool struct { + Allows bool + Schema *Schema +} + +// JSONLookup implements an interface to customize json pointer lookup +func (s SchemaOrBool) JSONLookup(token string) (interface{}, error) { + if token == "allows" { + return s.Allows, nil + } + r, _, err := jsonpointer.GetForToken(s.Schema, token) + return r, err +} + +var jsTrue = []byte("true") +var jsFalse = []byte("false") + +// MarshalJSON convert this object to JSON +func (s SchemaOrBool) MarshalJSON() ([]byte, error) { + if s.Schema != nil { + return json.Marshal(s.Schema) + } + + if s.Schema == nil && !s.Allows { + return jsFalse, nil + } + return jsTrue, nil +} + +// UnmarshalJSON converts this bool or schema object from a JSON structure +func (s *SchemaOrBool) UnmarshalJSON(data []byte) error { + var nw SchemaOrBool + if len(data) >= 4 { + if data[0] == '{' { + var sch Schema + if err := json.Unmarshal(data, &sch); err != nil { + return err + } + nw.Schema = &sch + } + nw.Allows = !(data[0] == 'f' && data[1] == 'a' && data[2] == 'l' && data[3] == 's' && data[4] == 'e') + } + *s = nw + return nil +} + +// SchemaOrStringArray represents a schema or a string array +type SchemaOrStringArray struct { + Schema *Schema + Property []string +} + +// JSONLookup implements an interface to customize json pointer lookup +func (s SchemaOrStringArray) JSONLookup(token string) (interface{}, error) { + r, _, err := jsonpointer.GetForToken(s.Schema, token) + return r, err +} + +// MarshalJSON converts this schema object or array into JSON structure +func (s SchemaOrStringArray) MarshalJSON() ([]byte, error) { + if len(s.Property) > 0 { + return json.Marshal(s.Property) + } + if s.Schema != nil { + return json.Marshal(s.Schema) + } + return nil, nil +} + +// UnmarshalJSON converts this schema object or array from a JSON structure +func (s *SchemaOrStringArray) UnmarshalJSON(data []byte) error { + var first byte + if len(data) > 1 { + first = data[0] + } + var nw SchemaOrStringArray + if first == '{' { + var sch Schema + if err := json.Unmarshal(data, &sch); err != nil { + return err + } + nw.Schema = &sch + } + if first == '[' { + if err := json.Unmarshal(data, &nw.Property); err != nil { + return err + } + } + *s = nw + return nil +} + +// Definitions contains the models explicitly defined in this spec +// An object to hold data types that can be consumed and produced by operations. +// These data types can be primitives, arrays or models. +// +// For more information: http://goo.gl/8us55a#definitionsObject +type Definitions map[string]Schema + +// SecurityDefinitions a declaration of the security schemes available to be used in the specification. +// This does not enforce the security schemes on the operations and only serves to provide +// the relevant details for each scheme. +// +// For more information: http://goo.gl/8us55a#securityDefinitionsObject +type SecurityDefinitions map[string]*SecurityScheme + +// StringOrArray represents a value that can either be a string +// or an array of strings. Mainly here for serialization purposes +type StringOrArray []string + +// Contains returns true when the value is contained in the slice +func (s StringOrArray) Contains(value string) bool { + for _, str := range s { + if str == value { + return true + } + } + return false +} + +// JSONLookup implements an interface to customize json pointer lookup +func (s SchemaOrArray) JSONLookup(token string) (interface{}, error) { + if _, err := strconv.Atoi(token); err == nil { + r, _, err := jsonpointer.GetForToken(s.Schemas, token) + return r, err + } + r, _, err := jsonpointer.GetForToken(s.Schema, token) + return r, err +} + +// UnmarshalJSON unmarshals this string or array object from a JSON array or JSON string +func (s *StringOrArray) UnmarshalJSON(data []byte) error { + var first byte + if len(data) > 1 { + first = data[0] + } + + if first == '[' { + var parsed []string + if err := json.Unmarshal(data, &parsed); err != nil { + return err + } + *s = StringOrArray(parsed) + return nil + } + + var single interface{} + if err := json.Unmarshal(data, &single); err != nil { + return err + } + if single == nil { + return nil + } + switch single.(type) { + case string: + *s = StringOrArray([]string{single.(string)}) + return nil + default: + return fmt.Errorf("only string or array is allowed, not %T", single) + } +} + +// MarshalJSON converts this string or array to a JSON array or JSON string +func (s StringOrArray) MarshalJSON() ([]byte, error) { + if len(s) == 1 { + return json.Marshal([]string(s)[0]) + } + return json.Marshal([]string(s)) +} + +// SchemaOrArray represents a value that can either be a Schema +// or an array of Schema. Mainly here for serialization purposes +type SchemaOrArray struct { + Schema *Schema + Schemas []Schema +} + +// Len returns the number of schemas in this property +func (s SchemaOrArray) Len() int { + if s.Schema != nil { + return 1 + } + return len(s.Schemas) +} + +// ContainsType returns true when one of the schemas is of the specified type +func (s *SchemaOrArray) ContainsType(name string) bool { + if s.Schema != nil { + return s.Schema.Type != nil && s.Schema.Type.Contains(name) + } + return false +} + +// MarshalJSON converts this schema object or array into JSON structure +func (s SchemaOrArray) MarshalJSON() ([]byte, error) { + if len(s.Schemas) > 0 { + return json.Marshal(s.Schemas) + } + return json.Marshal(s.Schema) +} + +// UnmarshalJSON converts this schema object or array from a JSON structure +func (s *SchemaOrArray) UnmarshalJSON(data []byte) error { + var nw SchemaOrArray + var first byte + if len(data) > 1 { + first = data[0] + } + if first == '{' { + var sch Schema + if err := json.Unmarshal(data, &sch); err != nil { + return err + } + nw.Schema = &sch + } + if first == '[' { + if err := json.Unmarshal(data, &nw.Schemas); err != nil { + return err + } + } + *s = nw + return nil +} + +// vim:set ft=go noet sts=2 sw=2 ts=2: diff --git a/vendor/github.com/go-openapi/spec/tag.go b/vendor/github.com/go-openapi/spec/tag.go new file mode 100644 index 0000000000..97f555840c --- /dev/null +++ b/vendor/github.com/go-openapi/spec/tag.go @@ -0,0 +1,73 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +import ( + "encoding/json" + + "github.com/go-openapi/jsonpointer" + "github.com/go-openapi/swag" +) + +type TagProps struct { + Description string `json:"description,omitempty"` + Name string `json:"name,omitempty"` + ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` +} + +// NewTag creates a new tag +func NewTag(name, description string, externalDocs *ExternalDocumentation) Tag { + return Tag{TagProps: TagProps{description, name, externalDocs}} +} + +// Tag allows adding meta data to a single tag that is used by the [Operation Object](http://goo.gl/8us55a#operationObject). +// It is not mandatory to have a Tag Object per tag used there. +// +// For more information: http://goo.gl/8us55a#tagObject +type Tag struct { + VendorExtensible + TagProps +} + +// JSONLookup implements an interface to customize json pointer lookup +func (t Tag) JSONLookup(token string) (interface{}, error) { + if ex, ok := t.Extensions[token]; ok { + return &ex, nil + } + + r, _, err := jsonpointer.GetForToken(t.TagProps, token) + return r, err +} + +// MarshalJSON marshal this to JSON +func (t Tag) MarshalJSON() ([]byte, error) { + b1, err := json.Marshal(t.TagProps) + if err != nil { + return nil, err + } + b2, err := json.Marshal(t.VendorExtensible) + if err != nil { + return nil, err + } + return swag.ConcatJSON(b1, b2), nil +} + +// UnmarshalJSON marshal this from JSON +func (t *Tag) UnmarshalJSON(data []byte) error { + if err := json.Unmarshal(data, &t.TagProps); err != nil { + return err + } + return json.Unmarshal(data, &t.VendorExtensible) +} diff --git a/vendor/github.com/go-openapi/spec/xml_object.go b/vendor/github.com/go-openapi/spec/xml_object.go new file mode 100644 index 0000000000..945a46703d --- /dev/null +++ b/vendor/github.com/go-openapi/spec/xml_object.go @@ -0,0 +1,68 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spec + +// XMLObject a metadata object that allows for more fine-tuned XML model definitions. +// +// For more information: http://goo.gl/8us55a#xmlObject +type XMLObject struct { + Name string `json:"name,omitempty"` + Namespace string `json:"namespace,omitempty"` + Prefix string `json:"prefix,omitempty"` + Attribute bool `json:"attribute,omitempty"` + Wrapped bool `json:"wrapped,omitempty"` +} + +// WithName sets the xml name for the object +func (x *XMLObject) WithName(name string) *XMLObject { + x.Name = name + return x +} + +// WithNamespace sets the xml namespace for the object +func (x *XMLObject) WithNamespace(namespace string) *XMLObject { + x.Namespace = namespace + return x +} + +// WithPrefix sets the xml prefix for the object +func (x *XMLObject) WithPrefix(prefix string) *XMLObject { + x.Prefix = prefix + return x +} + +// AsAttribute flags this object as xml attribute +func (x *XMLObject) AsAttribute() *XMLObject { + x.Attribute = true + return x +} + +// AsElement flags this object as an xml node +func (x *XMLObject) AsElement() *XMLObject { + x.Attribute = false + return x +} + +// AsWrapped flags this object as wrapped, this is mostly useful for array types +func (x *XMLObject) AsWrapped() *XMLObject { + x.Wrapped = true + return x +} + +// AsUnwrapped flags this object as an xml node +func (x *XMLObject) AsUnwrapped() *XMLObject { + x.Wrapped = false + return x +} diff --git a/vendor/github.com/go-openapi/swag/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/swag/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..9322b065e3 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/CODE_OF_CONDUCT.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at ivan+abuse@flanders.co.nz. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/swag/LICENSE b/vendor/github.com/go-openapi/swag/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/go-openapi/swag/convert.go b/vendor/github.com/go-openapi/swag/convert.go new file mode 100644 index 0000000000..28d9124106 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/convert.go @@ -0,0 +1,188 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package swag + +import ( + "math" + "strconv" + "strings" +) + +// same as ECMA Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER +const ( + maxJSONFloat = float64(1<<53 - 1) // 9007199254740991.0 2^53 - 1 + minJSONFloat = -float64(1<<53 - 1) //-9007199254740991.0 -2^53 - 1 +) + +// IsFloat64AJSONInteger allow for integers [-2^53, 2^53-1] inclusive +func IsFloat64AJSONInteger(f float64) bool { + if math.IsNaN(f) || math.IsInf(f, 0) || f < minJSONFloat || f > maxJSONFloat { + return false + } + + return f == float64(int64(f)) || f == float64(uint64(f)) +} + +var evaluatesAsTrue = map[string]struct{}{ + "true": struct{}{}, + "1": struct{}{}, + "yes": struct{}{}, + "ok": struct{}{}, + "y": struct{}{}, + "on": struct{}{}, + "selected": struct{}{}, + "checked": struct{}{}, + "t": struct{}{}, + "enabled": struct{}{}, +} + +// ConvertBool turn a string into a boolean +func ConvertBool(str string) (bool, error) { + _, ok := evaluatesAsTrue[strings.ToLower(str)] + return ok, nil +} + +// ConvertFloat32 turn a string into a float32 +func ConvertFloat32(str string) (float32, error) { + f, err := strconv.ParseFloat(str, 32) + if err != nil { + return 0, err + } + return float32(f), nil +} + +// ConvertFloat64 turn a string into a float64 +func ConvertFloat64(str string) (float64, error) { + return strconv.ParseFloat(str, 64) +} + +// ConvertInt8 turn a string into int8 boolean +func ConvertInt8(str string) (int8, error) { + i, err := strconv.ParseInt(str, 10, 8) + if err != nil { + return 0, err + } + return int8(i), nil +} + +// ConvertInt16 turn a string into a int16 +func ConvertInt16(str string) (int16, error) { + i, err := strconv.ParseInt(str, 10, 16) + if err != nil { + return 0, err + } + return int16(i), nil +} + +// ConvertInt32 turn a string into a int32 +func ConvertInt32(str string) (int32, error) { + i, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return 0, err + } + return int32(i), nil +} + +// ConvertInt64 turn a string into a int64 +func ConvertInt64(str string) (int64, error) { + return strconv.ParseInt(str, 10, 64) +} + +// ConvertUint8 turn a string into a uint8 +func ConvertUint8(str string) (uint8, error) { + i, err := strconv.ParseUint(str, 10, 8) + if err != nil { + return 0, err + } + return uint8(i), nil +} + +// ConvertUint16 turn a string into a uint16 +func ConvertUint16(str string) (uint16, error) { + i, err := strconv.ParseUint(str, 10, 16) + if err != nil { + return 0, err + } + return uint16(i), nil +} + +// ConvertUint32 turn a string into a uint32 +func ConvertUint32(str string) (uint32, error) { + i, err := strconv.ParseUint(str, 10, 32) + if err != nil { + return 0, err + } + return uint32(i), nil +} + +// ConvertUint64 turn a string into a uint64 +func ConvertUint64(str string) (uint64, error) { + return strconv.ParseUint(str, 10, 64) +} + +// FormatBool turns a boolean into a string +func FormatBool(value bool) string { + return strconv.FormatBool(value) +} + +// FormatFloat32 turns a float32 into a string +func FormatFloat32(value float32) string { + return strconv.FormatFloat(float64(value), 'f', -1, 32) +} + +// FormatFloat64 turns a float64 into a string +func FormatFloat64(value float64) string { + return strconv.FormatFloat(value, 'f', -1, 64) +} + +// FormatInt8 turns an int8 into a string +func FormatInt8(value int8) string { + return strconv.FormatInt(int64(value), 10) +} + +// FormatInt16 turns an int16 into a string +func FormatInt16(value int16) string { + return strconv.FormatInt(int64(value), 10) +} + +// FormatInt32 turns an int32 into a string +func FormatInt32(value int32) string { + return strconv.FormatInt(int64(value), 10) +} + +// FormatInt64 turns an int64 into a string +func FormatInt64(value int64) string { + return strconv.FormatInt(value, 10) +} + +// FormatUint8 turns an uint8 into a string +func FormatUint8(value uint8) string { + return strconv.FormatUint(uint64(value), 10) +} + +// FormatUint16 turns an uint16 into a string +func FormatUint16(value uint16) string { + return strconv.FormatUint(uint64(value), 10) +} + +// FormatUint32 turns an uint32 into a string +func FormatUint32(value uint32) string { + return strconv.FormatUint(uint64(value), 10) +} + +// FormatUint64 turns an uint64 into a string +func FormatUint64(value uint64) string { + return strconv.FormatUint(value, 10) +} diff --git a/vendor/github.com/go-openapi/swag/convert_types.go b/vendor/github.com/go-openapi/swag/convert_types.go new file mode 100644 index 0000000000..c95e4e78bd --- /dev/null +++ b/vendor/github.com/go-openapi/swag/convert_types.go @@ -0,0 +1,595 @@ +package swag + +import "time" + +// This file was taken from the aws go sdk + +// String returns a pointer to of the string value passed in. +func String(v string) *string { + return &v +} + +// StringValue returns the value of the string pointer passed in or +// "" if the pointer is nil. +func StringValue(v *string) string { + if v != nil { + return *v + } + return "" +} + +// StringSlice converts a slice of string values into a slice of +// string pointers +func StringSlice(src []string) []*string { + dst := make([]*string, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// StringValueSlice converts a slice of string pointers into a slice of +// string values +func StringValueSlice(src []*string) []string { + dst := make([]string, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// StringMap converts a string map of string values into a string +// map of string pointers +func StringMap(src map[string]string) map[string]*string { + dst := make(map[string]*string) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// StringValueMap converts a string map of string pointers into a string +// map of string values +func StringValueMap(src map[string]*string) map[string]string { + dst := make(map[string]string) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Bool returns a pointer to of the bool value passed in. +func Bool(v bool) *bool { + return &v +} + +// BoolValue returns the value of the bool pointer passed in or +// false if the pointer is nil. +func BoolValue(v *bool) bool { + if v != nil { + return *v + } + return false +} + +// BoolSlice converts a slice of bool values into a slice of +// bool pointers +func BoolSlice(src []bool) []*bool { + dst := make([]*bool, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// BoolValueSlice converts a slice of bool pointers into a slice of +// bool values +func BoolValueSlice(src []*bool) []bool { + dst := make([]bool, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// BoolMap converts a string map of bool values into a string +// map of bool pointers +func BoolMap(src map[string]bool) map[string]*bool { + dst := make(map[string]*bool) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// BoolValueMap converts a string map of bool pointers into a string +// map of bool values +func BoolValueMap(src map[string]*bool) map[string]bool { + dst := make(map[string]bool) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int returns a pointer to of the int value passed in. +func Int(v int) *int { + return &v +} + +// IntValue returns the value of the int pointer passed in or +// 0 if the pointer is nil. +func IntValue(v *int) int { + if v != nil { + return *v + } + return 0 +} + +// IntSlice converts a slice of int values into a slice of +// int pointers +func IntSlice(src []int) []*int { + dst := make([]*int, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// IntValueSlice converts a slice of int pointers into a slice of +// int values +func IntValueSlice(src []*int) []int { + dst := make([]int, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// IntMap converts a string map of int values into a string +// map of int pointers +func IntMap(src map[string]int) map[string]*int { + dst := make(map[string]*int) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// IntValueMap converts a string map of int pointers into a string +// map of int values +func IntValueMap(src map[string]*int) map[string]int { + dst := make(map[string]int) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int32 returns a pointer to of the int64 value passed in. +func Int32(v int32) *int32 { + return &v +} + +// Int32Value returns the value of the int64 pointer passed in or +// 0 if the pointer is nil. +func Int32Value(v *int32) int32 { + if v != nil { + return *v + } + return 0 +} + +// Int32Slice converts a slice of int64 values into a slice of +// int32 pointers +func Int32Slice(src []int32) []*int32 { + dst := make([]*int32, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int32ValueSlice converts a slice of int32 pointers into a slice of +// int32 values +func Int32ValueSlice(src []*int32) []int32 { + dst := make([]int32, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int32Map converts a string map of int32 values into a string +// map of int32 pointers +func Int32Map(src map[string]int32) map[string]*int32 { + dst := make(map[string]*int32) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int32ValueMap converts a string map of int32 pointers into a string +// map of int32 values +func Int32ValueMap(src map[string]*int32) map[string]int32 { + dst := make(map[string]int32) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Int64 returns a pointer to of the int64 value passed in. +func Int64(v int64) *int64 { + return &v +} + +// Int64Value returns the value of the int64 pointer passed in or +// 0 if the pointer is nil. +func Int64Value(v *int64) int64 { + if v != nil { + return *v + } + return 0 +} + +// Int64Slice converts a slice of int64 values into a slice of +// int64 pointers +func Int64Slice(src []int64) []*int64 { + dst := make([]*int64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Int64ValueSlice converts a slice of int64 pointers into a slice of +// int64 values +func Int64ValueSlice(src []*int64) []int64 { + dst := make([]int64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Int64Map converts a string map of int64 values into a string +// map of int64 pointers +func Int64Map(src map[string]int64) map[string]*int64 { + dst := make(map[string]*int64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Int64ValueMap converts a string map of int64 pointers into a string +// map of int64 values +func Int64ValueMap(src map[string]*int64) map[string]int64 { + dst := make(map[string]int64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint returns a pouinter to of the uint value passed in. +func Uint(v uint) *uint { + return &v +} + +// UintValue returns the value of the uint pouinter passed in or +// 0 if the pouinter is nil. +func UintValue(v *uint) uint { + if v != nil { + return *v + } + return 0 +} + +// UintSlice converts a slice of uint values uinto a slice of +// uint pouinters +func UintSlice(src []uint) []*uint { + dst := make([]*uint, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// UintValueSlice converts a slice of uint pouinters uinto a slice of +// uint values +func UintValueSlice(src []*uint) []uint { + dst := make([]uint, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// UintMap converts a string map of uint values uinto a string +// map of uint pouinters +func UintMap(src map[string]uint) map[string]*uint { + dst := make(map[string]*uint) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// UintValueMap converts a string map of uint pouinters uinto a string +// map of uint values +func UintValueMap(src map[string]*uint) map[string]uint { + dst := make(map[string]uint) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint32 returns a pouinter to of the uint64 value passed in. +func Uint32(v uint32) *uint32 { + return &v +} + +// Uint32Value returns the value of the uint64 pouinter passed in or +// 0 if the pouinter is nil. +func Uint32Value(v *uint32) uint32 { + if v != nil { + return *v + } + return 0 +} + +// Uint32Slice converts a slice of uint64 values uinto a slice of +// uint32 pouinters +func Uint32Slice(src []uint32) []*uint32 { + dst := make([]*uint32, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint32ValueSlice converts a slice of uint32 pouinters uinto a slice of +// uint32 values +func Uint32ValueSlice(src []*uint32) []uint32 { + dst := make([]uint32, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint32Map converts a string map of uint32 values uinto a string +// map of uint32 pouinters +func Uint32Map(src map[string]uint32) map[string]*uint32 { + dst := make(map[string]*uint32) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint32ValueMap converts a string map of uint32 pouinters uinto a string +// map of uint32 values +func Uint32ValueMap(src map[string]*uint32) map[string]uint32 { + dst := make(map[string]uint32) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Uint64 returns a pouinter to of the uint64 value passed in. +func Uint64(v uint64) *uint64 { + return &v +} + +// Uint64Value returns the value of the uint64 pouinter passed in or +// 0 if the pouinter is nil. +func Uint64Value(v *uint64) uint64 { + if v != nil { + return *v + } + return 0 +} + +// Uint64Slice converts a slice of uint64 values uinto a slice of +// uint64 pouinters +func Uint64Slice(src []uint64) []*uint64 { + dst := make([]*uint64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Uint64ValueSlice converts a slice of uint64 pouinters uinto a slice of +// uint64 values +func Uint64ValueSlice(src []*uint64) []uint64 { + dst := make([]uint64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Uint64Map converts a string map of uint64 values uinto a string +// map of uint64 pouinters +func Uint64Map(src map[string]uint64) map[string]*uint64 { + dst := make(map[string]*uint64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Uint64ValueMap converts a string map of uint64 pouinters uinto a string +// map of uint64 values +func Uint64ValueMap(src map[string]*uint64) map[string]uint64 { + dst := make(map[string]uint64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Float64 returns a pointer to of the float64 value passed in. +func Float64(v float64) *float64 { + return &v +} + +// Float64Value returns the value of the float64 pointer passed in or +// 0 if the pointer is nil. +func Float64Value(v *float64) float64 { + if v != nil { + return *v + } + return 0 +} + +// Float64Slice converts a slice of float64 values into a slice of +// float64 pointers +func Float64Slice(src []float64) []*float64 { + dst := make([]*float64, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// Float64ValueSlice converts a slice of float64 pointers into a slice of +// float64 values +func Float64ValueSlice(src []*float64) []float64 { + dst := make([]float64, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// Float64Map converts a string map of float64 values into a string +// map of float64 pointers +func Float64Map(src map[string]float64) map[string]*float64 { + dst := make(map[string]*float64) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// Float64ValueMap converts a string map of float64 pointers into a string +// map of float64 values +func Float64ValueMap(src map[string]*float64) map[string]float64 { + dst := make(map[string]float64) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} + +// Time returns a pointer to of the time.Time value passed in. +func Time(v time.Time) *time.Time { + return &v +} + +// TimeValue returns the value of the time.Time pointer passed in or +// time.Time{} if the pointer is nil. +func TimeValue(v *time.Time) time.Time { + if v != nil { + return *v + } + return time.Time{} +} + +// TimeSlice converts a slice of time.Time values into a slice of +// time.Time pointers +func TimeSlice(src []time.Time) []*time.Time { + dst := make([]*time.Time, len(src)) + for i := 0; i < len(src); i++ { + dst[i] = &(src[i]) + } + return dst +} + +// TimeValueSlice converts a slice of time.Time pointers into a slice of +// time.Time values +func TimeValueSlice(src []*time.Time) []time.Time { + dst := make([]time.Time, len(src)) + for i := 0; i < len(src); i++ { + if src[i] != nil { + dst[i] = *(src[i]) + } + } + return dst +} + +// TimeMap converts a string map of time.Time values into a string +// map of time.Time pointers +func TimeMap(src map[string]time.Time) map[string]*time.Time { + dst := make(map[string]*time.Time) + for k, val := range src { + v := val + dst[k] = &v + } + return dst +} + +// TimeValueMap converts a string map of time.Time pointers into a string +// map of time.Time values +func TimeValueMap(src map[string]*time.Time) map[string]time.Time { + dst := make(map[string]time.Time) + for k, val := range src { + if val != nil { + dst[k] = *val + } + } + return dst +} diff --git a/vendor/github.com/go-openapi/swag/json.go b/vendor/github.com/go-openapi/swag/json.go new file mode 100644 index 0000000000..6e9ec20fc6 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/json.go @@ -0,0 +1,270 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package swag + +import ( + "bytes" + "encoding/json" + "reflect" + "strings" + "sync" + + "github.com/mailru/easyjson/jlexer" + "github.com/mailru/easyjson/jwriter" +) + +// DefaultJSONNameProvider the default cache for types +var DefaultJSONNameProvider = NewNameProvider() + +const comma = byte(',') + +var closers = map[byte]byte{ + '{': '}', + '[': ']', +} + +type ejMarshaler interface { + MarshalEasyJSON(w *jwriter.Writer) +} + +type ejUnmarshaler interface { + UnmarshalEasyJSON(w *jlexer.Lexer) +} + +// WriteJSON writes json data, prefers finding an appropriate interface to short-circuit the marshaller +// so it takes the fastest option available. +func WriteJSON(data interface{}) ([]byte, error) { + if d, ok := data.(ejMarshaler); ok { + jw := new(jwriter.Writer) + d.MarshalEasyJSON(jw) + return jw.BuildBytes() + } + if d, ok := data.(json.Marshaler); ok { + return d.MarshalJSON() + } + return json.Marshal(data) +} + +// ReadJSON reads json data, prefers finding an appropriate interface to short-circuit the unmarshaller +// so it takes the fastes option available +func ReadJSON(data []byte, value interface{}) error { + if d, ok := value.(ejUnmarshaler); ok { + jl := &jlexer.Lexer{Data: data} + d.UnmarshalEasyJSON(jl) + return jl.Error() + } + if d, ok := value.(json.Unmarshaler); ok { + return d.UnmarshalJSON(data) + } + return json.Unmarshal(data, value) +} + +// DynamicJSONToStruct converts an untyped json structure into a struct +func DynamicJSONToStruct(data interface{}, target interface{}) error { + // TODO: convert straight to a json typed map (mergo + iterate?) + b, err := WriteJSON(data) + if err != nil { + return err + } + if err := ReadJSON(b, target); err != nil { + return err + } + return nil +} + +// ConcatJSON concatenates multiple json objects efficiently +func ConcatJSON(blobs ...[]byte) []byte { + if len(blobs) == 0 { + return nil + } + if len(blobs) == 1 { + return blobs[0] + } + + last := len(blobs) - 1 + var opening, closing byte + a := 0 + idx := 0 + buf := bytes.NewBuffer(nil) + + for i, b := range blobs { + if len(b) > 0 && opening == 0 { // is this an array or an object? + opening, closing = b[0], closers[b[0]] + } + + if opening != '{' && opening != '[' { + continue // don't know how to concatenate non container objects + } + + if len(b) < 3 { // yep empty but also the last one, so closing this thing + if i == last && a > 0 { + buf.WriteByte(closing) + } + continue + } + + idx = 0 + if a > 0 { // we need to join with a comma for everything beyond the first non-empty item + buf.WriteByte(comma) + idx = 1 // this is not the first or the last so we want to drop the leading bracket + } + + if i != last { // not the last one, strip brackets + buf.Write(b[idx : len(b)-1]) + } else { // last one, strip only the leading bracket + buf.Write(b[idx:]) + } + a++ + } + // somehow it ended up being empty, so provide a default value + if buf.Len() == 0 { + buf.WriteByte(opening) + buf.WriteByte(closing) + } + return buf.Bytes() +} + +// ToDynamicJSON turns an object into a properly JSON typed structure +func ToDynamicJSON(data interface{}) interface{} { + // TODO: convert straight to a json typed map (mergo + iterate?) + b, _ := json.Marshal(data) + var res interface{} + json.Unmarshal(b, &res) + return res +} + +// FromDynamicJSON turns an object into a properly JSON typed structure +func FromDynamicJSON(data, target interface{}) error { + b, _ := json.Marshal(data) + return json.Unmarshal(b, target) +} + +// NameProvider represents an object capabale of translating from go property names +// to json property names +// This type is thread-safe. +type NameProvider struct { + lock *sync.Mutex + index map[reflect.Type]nameIndex +} + +type nameIndex struct { + jsonNames map[string]string + goNames map[string]string +} + +// NewNameProvider creates a new name provider +func NewNameProvider() *NameProvider { + return &NameProvider{ + lock: &sync.Mutex{}, + index: make(map[reflect.Type]nameIndex), + } +} + +func buildnameIndex(tpe reflect.Type, idx, reverseIdx map[string]string) { + for i := 0; i < tpe.NumField(); i++ { + targetDes := tpe.Field(i) + + if targetDes.PkgPath != "" { // unexported + continue + } + + if targetDes.Anonymous { // walk embedded structures tree down first + buildnameIndex(targetDes.Type, idx, reverseIdx) + continue + } + + if tag := targetDes.Tag.Get("json"); tag != "" { + + parts := strings.Split(tag, ",") + if len(parts) == 0 { + continue + } + + nm := parts[0] + if nm == "-" { + continue + } + if nm == "" { // empty string means we want to use the Go name + nm = targetDes.Name + } + + idx[nm] = targetDes.Name + reverseIdx[targetDes.Name] = nm + } + } +} + +func newNameIndex(tpe reflect.Type) nameIndex { + var idx = make(map[string]string, tpe.NumField()) + var reverseIdx = make(map[string]string, tpe.NumField()) + + buildnameIndex(tpe, idx, reverseIdx) + return nameIndex{jsonNames: idx, goNames: reverseIdx} +} + +// GetJSONNames gets all the json property names for a type +func (n *NameProvider) GetJSONNames(subject interface{}) []string { + tpe := reflect.Indirect(reflect.ValueOf(subject)).Type() + names, ok := n.index[tpe] + if !ok { + names = n.makeNameIndex(tpe) + } + + var res []string + for k := range names.jsonNames { + res = append(res, k) + } + return res +} + +// GetJSONName gets the json name for a go property name +func (n *NameProvider) GetJSONName(subject interface{}, name string) (string, bool) { + tpe := reflect.Indirect(reflect.ValueOf(subject)).Type() + return n.GetJSONNameForType(tpe, name) +} + +// GetJSONNameForType gets the json name for a go property name on a given type +func (n *NameProvider) GetJSONNameForType(tpe reflect.Type, name string) (string, bool) { + names, ok := n.index[tpe] + if !ok { + names = n.makeNameIndex(tpe) + } + nme, ok := names.goNames[name] + return nme, ok +} + +func (n *NameProvider) makeNameIndex(tpe reflect.Type) nameIndex { + n.lock.Lock() + defer n.lock.Unlock() + names := newNameIndex(tpe) + n.index[tpe] = names + return names +} + +// GetGoName gets the go name for a json property name +func (n *NameProvider) GetGoName(subject interface{}, name string) (string, bool) { + tpe := reflect.Indirect(reflect.ValueOf(subject)).Type() + return n.GetGoNameForType(tpe, name) +} + +// GetGoNameForType gets the go name for a given type for a json property name +func (n *NameProvider) GetGoNameForType(tpe reflect.Type, name string) (string, bool) { + names, ok := n.index[tpe] + if !ok { + names = n.makeNameIndex(tpe) + } + nme, ok := names.jsonNames[name] + return nme, ok +} diff --git a/vendor/github.com/go-openapi/swag/loading.go b/vendor/github.com/go-openapi/swag/loading.go new file mode 100644 index 0000000000..6dbc31330e --- /dev/null +++ b/vendor/github.com/go-openapi/swag/loading.go @@ -0,0 +1,49 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package swag + +import ( + "fmt" + "io/ioutil" + "net/http" + "strings" +) + +// LoadFromFileOrHTTP loads the bytes from a file or a remote http server based on the path passed in +func LoadFromFileOrHTTP(path string) ([]byte, error) { + return LoadStrategy(path, ioutil.ReadFile, loadHTTPBytes)(path) +} + +// LoadStrategy returns a loader function for a given path or uri +func LoadStrategy(path string, local, remote func(string) ([]byte, error)) func(string) ([]byte, error) { + if strings.HasPrefix(path, "http") { + return remote + } + return local +} + +func loadHTTPBytes(path string) ([]byte, error) { + resp, err := http.Get(path) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("could not access document at %q [%s] ", path, resp.Status) + } + + return ioutil.ReadAll(resp.Body) +} diff --git a/vendor/github.com/go-openapi/swag/net.go b/vendor/github.com/go-openapi/swag/net.go new file mode 100644 index 0000000000..8323fa37b6 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/net.go @@ -0,0 +1,24 @@ +package swag + +import ( + "net" + "strconv" +) + +// SplitHostPort splits a network address into a host and a port. +// The port is -1 when there is no port to be found +func SplitHostPort(addr string) (host string, port int, err error) { + h, p, err := net.SplitHostPort(addr) + if err != nil { + return "", -1, err + } + if p == "" { + return "", -1, &net.AddrError{Err: "missing port in address", Addr: addr} + } + + pi, err := strconv.Atoi(p) + if err != nil { + return "", -1, err + } + return h, pi, nil +} diff --git a/vendor/github.com/go-openapi/swag/path.go b/vendor/github.com/go-openapi/swag/path.go new file mode 100644 index 0000000000..273e9fbed9 --- /dev/null +++ b/vendor/github.com/go-openapi/swag/path.go @@ -0,0 +1,56 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package swag + +import ( + "os" + "path/filepath" + "runtime" + "strings" +) + +const ( + // GOPATHKey represents the env key for gopath + GOPATHKey = "GOPATH" +) + +// FindInSearchPath finds a package in a provided lists of paths +func FindInSearchPath(searchPath, pkg string) string { + pathsList := filepath.SplitList(searchPath) + for _, path := range pathsList { + if evaluatedPath, err := filepath.EvalSymlinks(filepath.Join(path, "src", pkg)); err == nil { + if _, err := os.Stat(evaluatedPath); err == nil { + return evaluatedPath + } + } + } + return "" +} + +// FindInGoSearchPath finds a package in the $GOPATH:$GOROOT +func FindInGoSearchPath(pkg string) string { + return FindInSearchPath(FullGoSearchPath(), pkg) +} + +// FullGoSearchPath gets the search paths for finding packages +func FullGoSearchPath() string { + allPaths := os.Getenv(GOPATHKey) + if allPaths != "" { + allPaths = strings.Join([]string{allPaths, runtime.GOROOT()}, ":") + } else { + allPaths = runtime.GOROOT() + } + return allPaths +} diff --git a/vendor/github.com/go-openapi/swag/util.go b/vendor/github.com/go-openapi/swag/util.go new file mode 100644 index 0000000000..d8b54ee61e --- /dev/null +++ b/vendor/github.com/go-openapi/swag/util.go @@ -0,0 +1,318 @@ +// Copyright 2015 go-swagger maintainers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package swag + +import ( + "math" + "reflect" + "regexp" + "sort" + "strings" +) + +// Taken from https://github.com/golang/lint/blob/1fab560e16097e5b69afb66eb93aab843ef77845/lint.go#L663-L698 +var commonInitialisms = map[string]bool{ + "API": true, + "ASCII": true, + "CPU": true, + "CSS": true, + "DNS": true, + "EOF": true, + "GUID": true, + "HTML": true, + "HTTPS": true, + "HTTP": true, + "ID": true, + "IP": true, + "JSON": true, + "LHS": true, + "QPS": true, + "RAM": true, + "RHS": true, + "RPC": true, + "SLA": true, + "SMTP": true, + "SSH": true, + "TCP": true, + "TLS": true, + "TTL": true, + "UDP": true, + "UUID": true, + "UID": true, + "UI": true, + "URI": true, + "URL": true, + "UTF8": true, + "VM": true, + "XML": true, + "XSRF": true, + "XSS": true, +} +var initialisms []string + +func init() { + for k := range commonInitialisms { + initialisms = append(initialisms, k) + } + sort.Sort(sort.Reverse(byLength(initialisms))) +} + +// JoinByFormat joins a string array by a known format: +// ssv: space separated value +// tsv: tab separated value +// pipes: pipe (|) separated value +// csv: comma separated value (default) +func JoinByFormat(data []string, format string) []string { + if len(data) == 0 { + return data + } + var sep string + switch format { + case "ssv": + sep = " " + case "tsv": + sep = "\t" + case "pipes": + sep = "|" + case "multi": + return data + default: + sep = "," + } + return []string{strings.Join(data, sep)} +} + +// SplitByFormat splits a string by a known format: +// ssv: space separated value +// tsv: tab separated value +// pipes: pipe (|) separated value +// csv: comma separated value (default) +func SplitByFormat(data, format string) []string { + if data == "" { + return nil + } + var sep string + switch format { + case "ssv": + sep = " " + case "tsv": + sep = "\t" + case "pipes": + sep = "|" + case "multi": + return nil + default: + sep = "," + } + var result []string + for _, s := range strings.Split(data, sep) { + if ts := strings.TrimSpace(s); ts != "" { + result = append(result, ts) + } + } + return result +} + +type byLength []string + +func (s byLength) Len() int { + return len(s) +} +func (s byLength) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} +func (s byLength) Less(i, j int) bool { + return len(s[i]) < len(s[j]) +} + +// Prepares strings by splitting by caps, spaces, dashes, and underscore +func split(str string) (words []string) { + repl := strings.NewReplacer( + "@", "At ", + "&", "And ", + "|", "Pipe ", + "$", "Dollar ", + "!", "Bang ", + "-", " ", + "_", " ", + ) + + rex1 := regexp.MustCompile(`(\p{Lu})`) + rex2 := regexp.MustCompile(`(\pL|\pM|\pN|\p{Pc})+`) + + str = trim(str) + + // Convert dash and underscore to spaces + str = repl.Replace(str) + + // Split when uppercase is found (needed for Snake) + str = rex1.ReplaceAllString(str, " $1") + // check if consecutive single char things make up an initialism + + for _, k := range initialisms { + str = strings.Replace(str, rex1.ReplaceAllString(k, " $1"), " "+k, -1) + } + // Get the final list of words + words = rex2.FindAllString(str, -1) + + return +} + +// Removes leading whitespaces +func trim(str string) string { + return strings.Trim(str, " ") +} + +// Shortcut to strings.ToUpper() +func upper(str string) string { + return strings.ToUpper(trim(str)) +} + +// Shortcut to strings.ToLower() +func lower(str string) string { + return strings.ToLower(trim(str)) +} + +// ToFileName lowercases and underscores a go type name +func ToFileName(name string) string { + var out []string + for _, w := range split(name) { + out = append(out, lower(w)) + } + return strings.Join(out, "_") +} + +// ToCommandName lowercases and underscores a go type name +func ToCommandName(name string) string { + var out []string + for _, w := range split(name) { + out = append(out, lower(w)) + } + return strings.Join(out, "-") +} + +// ToHumanNameLower represents a code name as a human series of words +func ToHumanNameLower(name string) string { + var out []string + for _, w := range split(name) { + if !commonInitialisms[upper(w)] { + out = append(out, lower(w)) + } else { + out = append(out, w) + } + } + return strings.Join(out, " ") +} + +// ToHumanNameTitle represents a code name as a human series of words with the first letters titleized +func ToHumanNameTitle(name string) string { + var out []string + for _, w := range split(name) { + uw := upper(w) + if !commonInitialisms[uw] { + out = append(out, upper(w[:1])+lower(w[1:])) + } else { + out = append(out, w) + } + } + return strings.Join(out, " ") +} + +// ToJSONName camelcases a name which can be underscored or pascal cased +func ToJSONName(name string) string { + var out []string + for i, w := range split(name) { + if i == 0 { + out = append(out, lower(w)) + continue + } + out = append(out, upper(w[:1])+lower(w[1:])) + } + return strings.Join(out, "") +} + +// ToVarName camelcases a name which can be underscored or pascal cased +func ToVarName(name string) string { + res := ToGoName(name) + if len(res) <= 1 { + return lower(res) + } + return lower(res[:1]) + res[1:] +} + +// ToGoName translates a swagger name which can be underscored or camel cased to a name that golint likes +func ToGoName(name string) string { + var out []string + for _, w := range split(name) { + uw := upper(w) + mod := int(math.Min(float64(len(uw)), 2)) + if !commonInitialisms[uw] && !commonInitialisms[uw[:len(uw)-mod]] { + uw = upper(w[:1]) + lower(w[1:]) + } + out = append(out, uw) + } + return strings.Join(out, "") +} + +// ContainsStringsCI searches a slice of strings for a case-insensitive match +func ContainsStringsCI(coll []string, item string) bool { + for _, a := range coll { + if strings.EqualFold(a, item) { + return true + } + } + return false +} + +type zeroable interface { + IsZero() bool +} + +// IsZero returns true when the value passed into the function is a zero value. +// This allows for safer checking of interface values. +func IsZero(data interface{}) bool { + // check for things that have an IsZero method instead + if vv, ok := data.(zeroable); ok { + return vv.IsZero() + } + // continue with slightly more complex reflection + v := reflect.ValueOf(data) + switch v.Kind() { + case reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return v.IsNil() + case reflect.Struct, reflect.Array: + return reflect.DeepEqual(data, reflect.Zero(v.Type()).Interface()) + case reflect.Invalid: + return true + } + return false +} + +// CommandLineOptionsGroup represents a group of user-defined command line options +type CommandLineOptionsGroup struct { + ShortDescription string + LongDescription string + Options interface{} +} diff --git a/vendor/github.com/gogo/protobuf/LICENSE b/vendor/github.com/gogo/protobuf/LICENSE new file mode 100644 index 0000000000..335e38e19b --- /dev/null +++ b/vendor/github.com/gogo/protobuf/LICENSE @@ -0,0 +1,36 @@ +Extensions for Protocol Buffers to create more go like structures. + +Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +http://github.com/gogo/protobuf/gogoproto + +Go support for Protocol Buffers - Google's data interchange format + +Copyright 2010 The Go Authors. All rights reserved. +https://github.com/golang/protobuf + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/vendor/github.com/gogo/protobuf/proto/Makefile b/vendor/github.com/gogo/protobuf/proto/Makefile new file mode 100644 index 0000000000..23a6b17344 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/Makefile @@ -0,0 +1,43 @@ +# Go support for Protocol Buffers - Google's data interchange format +# +# Copyright 2010 The Go Authors. All rights reserved. +# https://github.com/golang/protobuf +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +install: + go install + +test: install generate-test-pbs + go test + + +generate-test-pbs: + make install + make -C testdata + protoc-min-version --version="3.0.0" --proto_path=.:../../../../ --gogo_out=. proto3_proto/proto3.proto + make diff --git a/vendor/github.com/gogo/protobuf/proto/clone.go b/vendor/github.com/gogo/protobuf/proto/clone.go new file mode 100644 index 0000000000..79edb86119 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/clone.go @@ -0,0 +1,228 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2011 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Protocol buffer deep copy and merge. +// TODO: RawMessage. + +package proto + +import ( + "log" + "reflect" + "strings" +) + +// Clone returns a deep copy of a protocol buffer. +func Clone(pb Message) Message { + in := reflect.ValueOf(pb) + if in.IsNil() { + return pb + } + + out := reflect.New(in.Type().Elem()) + // out is empty so a merge is a deep copy. + mergeStruct(out.Elem(), in.Elem()) + return out.Interface().(Message) +} + +// Merge merges src into dst. +// Required and optional fields that are set in src will be set to that value in dst. +// Elements of repeated fields will be appended. +// Merge panics if src and dst are not the same type, or if dst is nil. +func Merge(dst, src Message) { + in := reflect.ValueOf(src) + out := reflect.ValueOf(dst) + if out.IsNil() { + panic("proto: nil destination") + } + if in.Type() != out.Type() { + // Explicit test prior to mergeStruct so that mistyped nils will fail + panic("proto: type mismatch") + } + if in.IsNil() { + // Merging nil into non-nil is a quiet no-op + return + } + mergeStruct(out.Elem(), in.Elem()) +} + +func mergeStruct(out, in reflect.Value) { + sprop := GetProperties(in.Type()) + for i := 0; i < in.NumField(); i++ { + f := in.Type().Field(i) + if strings.HasPrefix(f.Name, "XXX_") { + continue + } + mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i]) + } + + if emIn, ok := in.Addr().Interface().(extensionsMap); ok { + emOut := out.Addr().Interface().(extensionsMap) + mergeExtension(emOut.ExtensionMap(), emIn.ExtensionMap()) + } else if emIn, ok := in.Addr().Interface().(extensionsBytes); ok { + emOut := out.Addr().Interface().(extensionsBytes) + bIn := emIn.GetExtensions() + bOut := emOut.GetExtensions() + *bOut = append(*bOut, *bIn...) + } + + uf := in.FieldByName("XXX_unrecognized") + if !uf.IsValid() { + return + } + uin := uf.Bytes() + if len(uin) > 0 { + out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...)) + } +} + +// mergeAny performs a merge between two values of the same type. +// viaPtr indicates whether the values were indirected through a pointer (implying proto2). +// prop is set if this is a struct field (it may be nil). +func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) { + if in.Type() == protoMessageType { + if !in.IsNil() { + if out.IsNil() { + out.Set(reflect.ValueOf(Clone(in.Interface().(Message)))) + } else { + Merge(out.Interface().(Message), in.Interface().(Message)) + } + } + return + } + switch in.Kind() { + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, + reflect.String, reflect.Uint32, reflect.Uint64: + if !viaPtr && isProto3Zero(in) { + return + } + out.Set(in) + case reflect.Interface: + // Probably a oneof field; copy non-nil values. + if in.IsNil() { + return + } + // Allocate destination if it is not set, or set to a different type. + // Otherwise we will merge as normal. + if out.IsNil() || out.Elem().Type() != in.Elem().Type() { + out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T) + } + mergeAny(out.Elem(), in.Elem(), false, nil) + case reflect.Map: + if in.Len() == 0 { + return + } + if out.IsNil() { + out.Set(reflect.MakeMap(in.Type())) + } + // For maps with value types of *T or []byte we need to deep copy each value. + elemKind := in.Type().Elem().Kind() + for _, key := range in.MapKeys() { + var val reflect.Value + switch elemKind { + case reflect.Ptr: + val = reflect.New(in.Type().Elem().Elem()) + mergeAny(val, in.MapIndex(key), false, nil) + case reflect.Slice: + val = in.MapIndex(key) + val = reflect.ValueOf(append([]byte{}, val.Bytes()...)) + default: + val = in.MapIndex(key) + } + out.SetMapIndex(key, val) + } + case reflect.Ptr: + if in.IsNil() { + return + } + if out.IsNil() { + out.Set(reflect.New(in.Elem().Type())) + } + mergeAny(out.Elem(), in.Elem(), true, nil) + case reflect.Slice: + if in.IsNil() { + return + } + if in.Type().Elem().Kind() == reflect.Uint8 { + // []byte is a scalar bytes field, not a repeated field. + + // Edge case: if this is in a proto3 message, a zero length + // bytes field is considered the zero value, and should not + // be merged. + if prop != nil && prop.proto3 && in.Len() == 0 { + return + } + + // Make a deep copy. + // Append to []byte{} instead of []byte(nil) so that we never end up + // with a nil result. + out.SetBytes(append([]byte{}, in.Bytes()...)) + return + } + n := in.Len() + if out.IsNil() { + out.Set(reflect.MakeSlice(in.Type(), 0, n)) + } + switch in.Type().Elem().Kind() { + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, + reflect.String, reflect.Uint32, reflect.Uint64: + out.Set(reflect.AppendSlice(out, in)) + default: + for i := 0; i < n; i++ { + x := reflect.Indirect(reflect.New(in.Type().Elem())) + mergeAny(x, in.Index(i), false, nil) + out.Set(reflect.Append(out, x)) + } + } + case reflect.Struct: + mergeStruct(out, in) + default: + // unknown type, so not a protocol buffer + log.Printf("proto: don't know how to copy %v", in) + } +} + +func mergeExtension(out, in map[int32]Extension) { + for extNum, eIn := range in { + eOut := Extension{desc: eIn.desc} + if eIn.value != nil { + v := reflect.New(reflect.TypeOf(eIn.value)).Elem() + mergeAny(v, reflect.ValueOf(eIn.value), false, nil) + eOut.value = v.Interface() + } + if eIn.enc != nil { + eOut.enc = make([]byte, len(eIn.enc)) + copy(eOut.enc, eIn.enc) + } + + out[extNum] = eOut + } +} diff --git a/vendor/github.com/gogo/protobuf/proto/decode.go b/vendor/github.com/gogo/protobuf/proto/decode.go new file mode 100644 index 0000000000..7b06266d14 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/decode.go @@ -0,0 +1,873 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +/* + * Routines for decoding protocol buffer data to construct in-memory representations. + */ + +import ( + "errors" + "fmt" + "io" + "os" + "reflect" +) + +// errOverflow is returned when an integer is too large to be represented. +var errOverflow = errors.New("proto: integer overflow") + +// ErrInternalBadWireType is returned by generated code when an incorrect +// wire type is encountered. It does not get returned to user code. +var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof") + +// The fundamental decoders that interpret bytes on the wire. +// Those that take integer types all return uint64 and are +// therefore of type valueDecoder. + +// DecodeVarint reads a varint-encoded integer from the slice. +// It returns the integer and the number of bytes consumed, or +// zero if there is not enough. +// This is the format for the +// int32, int64, uint32, uint64, bool, and enum +// protocol buffer types. +func DecodeVarint(buf []byte) (x uint64, n int) { + // x, n already 0 + for shift := uint(0); shift < 64; shift += 7 { + if n >= len(buf) { + return 0, 0 + } + b := uint64(buf[n]) + n++ + x |= (b & 0x7F) << shift + if (b & 0x80) == 0 { + return x, n + } + } + + // The number is too large to represent in a 64-bit value. + return 0, 0 +} + +// DecodeVarint reads a varint-encoded integer from the Buffer. +// This is the format for the +// int32, int64, uint32, uint64, bool, and enum +// protocol buffer types. +func (p *Buffer) DecodeVarint() (x uint64, err error) { + // x, err already 0 + + i := p.index + l := len(p.buf) + + for shift := uint(0); shift < 64; shift += 7 { + if i >= l { + err = io.ErrUnexpectedEOF + return + } + b := p.buf[i] + i++ + x |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + p.index = i + return + } + } + + // The number is too large to represent in a 64-bit value. + err = errOverflow + return +} + +// DecodeFixed64 reads a 64-bit integer from the Buffer. +// This is the format for the +// fixed64, sfixed64, and double protocol buffer types. +func (p *Buffer) DecodeFixed64() (x uint64, err error) { + // x, err already 0 + i := p.index + 8 + if i < 0 || i > len(p.buf) { + err = io.ErrUnexpectedEOF + return + } + p.index = i + + x = uint64(p.buf[i-8]) + x |= uint64(p.buf[i-7]) << 8 + x |= uint64(p.buf[i-6]) << 16 + x |= uint64(p.buf[i-5]) << 24 + x |= uint64(p.buf[i-4]) << 32 + x |= uint64(p.buf[i-3]) << 40 + x |= uint64(p.buf[i-2]) << 48 + x |= uint64(p.buf[i-1]) << 56 + return +} + +// DecodeFixed32 reads a 32-bit integer from the Buffer. +// This is the format for the +// fixed32, sfixed32, and float protocol buffer types. +func (p *Buffer) DecodeFixed32() (x uint64, err error) { + // x, err already 0 + i := p.index + 4 + if i < 0 || i > len(p.buf) { + err = io.ErrUnexpectedEOF + return + } + p.index = i + + x = uint64(p.buf[i-4]) + x |= uint64(p.buf[i-3]) << 8 + x |= uint64(p.buf[i-2]) << 16 + x |= uint64(p.buf[i-1]) << 24 + return +} + +// DecodeZigzag64 reads a zigzag-encoded 64-bit integer +// from the Buffer. +// This is the format used for the sint64 protocol buffer type. +func (p *Buffer) DecodeZigzag64() (x uint64, err error) { + x, err = p.DecodeVarint() + if err != nil { + return + } + x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63) + return +} + +// DecodeZigzag32 reads a zigzag-encoded 32-bit integer +// from the Buffer. +// This is the format used for the sint32 protocol buffer type. +func (p *Buffer) DecodeZigzag32() (x uint64, err error) { + x, err = p.DecodeVarint() + if err != nil { + return + } + x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31)) + return +} + +// These are not ValueDecoders: they produce an array of bytes or a string. +// bytes, embedded messages + +// DecodeRawBytes reads a count-delimited byte buffer from the Buffer. +// This is the format used for the bytes protocol buffer +// type and for embedded messages. +func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) { + n, err := p.DecodeVarint() + if err != nil { + return nil, err + } + + nb := int(n) + if nb < 0 { + return nil, fmt.Errorf("proto: bad byte length %d", nb) + } + end := p.index + nb + if end < p.index || end > len(p.buf) { + return nil, io.ErrUnexpectedEOF + } + + if !alloc { + // todo: check if can get more uses of alloc=false + buf = p.buf[p.index:end] + p.index += nb + return + } + + buf = make([]byte, nb) + copy(buf, p.buf[p.index:]) + p.index += nb + return +} + +// DecodeStringBytes reads an encoded string from the Buffer. +// This is the format used for the proto2 string type. +func (p *Buffer) DecodeStringBytes() (s string, err error) { + buf, err := p.DecodeRawBytes(false) + if err != nil { + return + } + return string(buf), nil +} + +// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. +// If the protocol buffer has extensions, and the field matches, add it as an extension. +// Otherwise, if the XXX_unrecognized field exists, append the skipped data there. +func (o *Buffer) skipAndSave(t reflect.Type, tag, wire int, base structPointer, unrecField field) error { + oi := o.index + + err := o.skip(t, tag, wire) + if err != nil { + return err + } + + if !unrecField.IsValid() { + return nil + } + + ptr := structPointer_Bytes(base, unrecField) + + // Add the skipped field to struct field + obuf := o.buf + + o.buf = *ptr + o.EncodeVarint(uint64(tag<<3 | wire)) + *ptr = append(o.buf, obuf[oi:o.index]...) + + o.buf = obuf + + return nil +} + +// Skip the next item in the buffer. Its wire type is decoded and presented as an argument. +func (o *Buffer) skip(t reflect.Type, tag, wire int) error { + + var u uint64 + var err error + + switch wire { + case WireVarint: + _, err = o.DecodeVarint() + case WireFixed64: + _, err = o.DecodeFixed64() + case WireBytes: + _, err = o.DecodeRawBytes(false) + case WireFixed32: + _, err = o.DecodeFixed32() + case WireStartGroup: + for { + u, err = o.DecodeVarint() + if err != nil { + break + } + fwire := int(u & 0x7) + if fwire == WireEndGroup { + break + } + ftag := int(u >> 3) + err = o.skip(t, ftag, fwire) + if err != nil { + break + } + } + default: + err = fmt.Errorf("proto: can't skip unknown wire type %d for %s", wire, t) + } + return err +} + +// Unmarshaler is the interface representing objects that can +// unmarshal themselves. The method should reset the receiver before +// decoding starts. The argument points to data that may be +// overwritten, so implementations should not keep references to the +// buffer. +type Unmarshaler interface { + Unmarshal([]byte) error +} + +// Unmarshal parses the protocol buffer representation in buf and places the +// decoded result in pb. If the struct underlying pb does not match +// the data in buf, the results can be unpredictable. +// +// Unmarshal resets pb before starting to unmarshal, so any +// existing data in pb is always removed. Use UnmarshalMerge +// to preserve and append to existing data. +func Unmarshal(buf []byte, pb Message) error { + pb.Reset() + return UnmarshalMerge(buf, pb) +} + +// UnmarshalMerge parses the protocol buffer representation in buf and +// writes the decoded result to pb. If the struct underlying pb does not match +// the data in buf, the results can be unpredictable. +// +// UnmarshalMerge merges into existing data in pb. +// Most code should use Unmarshal instead. +func UnmarshalMerge(buf []byte, pb Message) error { + // If the object can unmarshal itself, let it. + if u, ok := pb.(Unmarshaler); ok { + return u.Unmarshal(buf) + } + return NewBuffer(buf).Unmarshal(pb) +} + +// DecodeMessage reads a count-delimited message from the Buffer. +func (p *Buffer) DecodeMessage(pb Message) error { + enc, err := p.DecodeRawBytes(false) + if err != nil { + return err + } + return NewBuffer(enc).Unmarshal(pb) +} + +// DecodeGroup reads a tag-delimited group from the Buffer. +func (p *Buffer) DecodeGroup(pb Message) error { + typ, base, err := getbase(pb) + if err != nil { + return err + } + return p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), true, base) +} + +// Unmarshal parses the protocol buffer representation in the +// Buffer and places the decoded result in pb. If the struct +// underlying pb does not match the data in the buffer, the results can be +// unpredictable. +func (p *Buffer) Unmarshal(pb Message) error { + // If the object can unmarshal itself, let it. + if u, ok := pb.(Unmarshaler); ok { + err := u.Unmarshal(p.buf[p.index:]) + p.index = len(p.buf) + return err + } + + typ, base, err := getbase(pb) + if err != nil { + return err + } + + err = p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), false, base) + + if collectStats { + stats.Decode++ + } + + return err +} + +// unmarshalType does the work of unmarshaling a structure. +func (o *Buffer) unmarshalType(st reflect.Type, prop *StructProperties, is_group bool, base structPointer) error { + var state errorState + required, reqFields := prop.reqCount, uint64(0) + + var err error + for err == nil && o.index < len(o.buf) { + oi := o.index + var u uint64 + u, err = o.DecodeVarint() + if err != nil { + break + } + wire := int(u & 0x7) + if wire == WireEndGroup { + if is_group { + return nil // input is satisfied + } + return fmt.Errorf("proto: %s: wiretype end group for non-group", st) + } + tag := int(u >> 3) + if tag <= 0 { + return fmt.Errorf("proto: %s: illegal tag %d (wire type %d)", st, tag, wire) + } + fieldnum, ok := prop.decoderTags.get(tag) + if !ok { + // Maybe it's an extension? + if prop.extendable { + if e := structPointer_Interface(base, st).(extendableProto); isExtensionField(e, int32(tag)) { + if err = o.skip(st, tag, wire); err == nil { + if ee, eok := e.(extensionsMap); eok { + ext := ee.ExtensionMap()[int32(tag)] // may be missing + ext.enc = append(ext.enc, o.buf[oi:o.index]...) + ee.ExtensionMap()[int32(tag)] = ext + } else if ee, eok := e.(extensionsBytes); eok { + ext := ee.GetExtensions() + *ext = append(*ext, o.buf[oi:o.index]...) + } + } + continue + } + } + // Maybe it's a oneof? + if prop.oneofUnmarshaler != nil { + m := structPointer_Interface(base, st).(Message) + // First return value indicates whether tag is a oneof field. + ok, err = prop.oneofUnmarshaler(m, tag, wire, o) + if err == ErrInternalBadWireType { + // Map the error to something more descriptive. + // Do the formatting here to save generated code space. + err = fmt.Errorf("bad wiretype for oneof field in %T", m) + } + if ok { + continue + } + } + err = o.skipAndSave(st, tag, wire, base, prop.unrecField) + continue + } + p := prop.Prop[fieldnum] + + if p.dec == nil { + fmt.Fprintf(os.Stderr, "proto: no protobuf decoder for %s.%s\n", st, st.Field(fieldnum).Name) + continue + } + dec := p.dec + if wire != WireStartGroup && wire != p.WireType { + if wire == WireBytes && p.packedDec != nil { + // a packable field + dec = p.packedDec + } else { + err = fmt.Errorf("proto: bad wiretype for field %s.%s: got wiretype %d, want %d", st, st.Field(fieldnum).Name, wire, p.WireType) + continue + } + } + decErr := dec(o, p, base) + if decErr != nil && !state.shouldContinue(decErr, p) { + err = decErr + } + if err == nil && p.Required { + // Successfully decoded a required field. + if tag <= 64 { + // use bitmap for fields 1-64 to catch field reuse. + var mask uint64 = 1 << uint64(tag-1) + if reqFields&mask == 0 { + // new required field + reqFields |= mask + required-- + } + } else { + // This is imprecise. It can be fooled by a required field + // with a tag > 64 that is encoded twice; that's very rare. + // A fully correct implementation would require allocating + // a data structure, which we would like to avoid. + required-- + } + } + } + if err == nil { + if is_group { + return io.ErrUnexpectedEOF + } + if state.err != nil { + return state.err + } + if required > 0 { + // Not enough information to determine the exact field. If we use extra + // CPU, we could determine the field only if the missing required field + // has a tag <= 64 and we check reqFields. + return &RequiredNotSetError{"{Unknown}"} + } + } + return err +} + +// Individual type decoders +// For each, +// u is the decoded value, +// v is a pointer to the field (pointer) in the struct + +// Sizes of the pools to allocate inside the Buffer. +// The goal is modest amortization and allocation +// on at least 16-byte boundaries. +const ( + boolPoolSize = 16 + uint32PoolSize = 8 + uint64PoolSize = 4 +) + +// Decode a bool. +func (o *Buffer) dec_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + if len(o.bools) == 0 { + o.bools = make([]bool, boolPoolSize) + } + o.bools[0] = u != 0 + *structPointer_Bool(base, p.field) = &o.bools[0] + o.bools = o.bools[1:] + return nil +} + +func (o *Buffer) dec_proto3_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + *structPointer_BoolVal(base, p.field) = u != 0 + return nil +} + +// Decode an int32. +func (o *Buffer) dec_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word32_Set(structPointer_Word32(base, p.field), o, uint32(u)) + return nil +} + +func (o *Buffer) dec_proto3_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word32Val_Set(structPointer_Word32Val(base, p.field), uint32(u)) + return nil +} + +// Decode an int64. +func (o *Buffer) dec_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word64_Set(structPointer_Word64(base, p.field), o, u) + return nil +} + +func (o *Buffer) dec_proto3_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + word64Val_Set(structPointer_Word64Val(base, p.field), o, u) + return nil +} + +// Decode a string. +func (o *Buffer) dec_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + *structPointer_String(base, p.field) = &s + return nil +} + +func (o *Buffer) dec_proto3_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + *structPointer_StringVal(base, p.field) = s + return nil +} + +// Decode a slice of bytes ([]byte). +func (o *Buffer) dec_slice_byte(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + *structPointer_Bytes(base, p.field) = b + return nil +} + +// Decode a slice of bools ([]bool). +func (o *Buffer) dec_slice_bool(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + v := structPointer_BoolSlice(base, p.field) + *v = append(*v, u != 0) + return nil +} + +// Decode a slice of bools ([]bool) in packed format. +func (o *Buffer) dec_slice_packed_bool(p *Properties, base structPointer) error { + v := structPointer_BoolSlice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded bools + fin := o.index + nb + if fin < o.index { + return errOverflow + } + + y := *v + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + y = append(y, u != 0) + } + + *v = y + return nil +} + +// Decode a slice of int32s ([]int32). +func (o *Buffer) dec_slice_int32(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + structPointer_Word32Slice(base, p.field).Append(uint32(u)) + return nil +} + +// Decode a slice of int32s ([]int32) in packed format. +func (o *Buffer) dec_slice_packed_int32(p *Properties, base structPointer) error { + v := structPointer_Word32Slice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded int32s + + fin := o.index + nb + if fin < o.index { + return errOverflow + } + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + v.Append(uint32(u)) + } + return nil +} + +// Decode a slice of int64s ([]int64). +func (o *Buffer) dec_slice_int64(p *Properties, base structPointer) error { + u, err := p.valDec(o) + if err != nil { + return err + } + + structPointer_Word64Slice(base, p.field).Append(u) + return nil +} + +// Decode a slice of int64s ([]int64) in packed format. +func (o *Buffer) dec_slice_packed_int64(p *Properties, base structPointer) error { + v := structPointer_Word64Slice(base, p.field) + + nn, err := o.DecodeVarint() + if err != nil { + return err + } + nb := int(nn) // number of bytes of encoded int64s + + fin := o.index + nb + if fin < o.index { + return errOverflow + } + for o.index < fin { + u, err := p.valDec(o) + if err != nil { + return err + } + v.Append(u) + } + return nil +} + +// Decode a slice of strings ([]string). +func (o *Buffer) dec_slice_string(p *Properties, base structPointer) error { + s, err := o.DecodeStringBytes() + if err != nil { + return err + } + v := structPointer_StringSlice(base, p.field) + *v = append(*v, s) + return nil +} + +// Decode a slice of slice of bytes ([][]byte). +func (o *Buffer) dec_slice_slice_byte(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + v := structPointer_BytesSlice(base, p.field) + *v = append(*v, b) + return nil +} + +// Decode a map field. +func (o *Buffer) dec_new_map(p *Properties, base structPointer) error { + raw, err := o.DecodeRawBytes(false) + if err != nil { + return err + } + oi := o.index // index at the end of this map entry + o.index -= len(raw) // move buffer back to start of map entry + + mptr := structPointer_NewAt(base, p.field, p.mtype) // *map[K]V + if mptr.Elem().IsNil() { + mptr.Elem().Set(reflect.MakeMap(mptr.Type().Elem())) + } + v := mptr.Elem() // map[K]V + + // Prepare addressable doubly-indirect placeholders for the key and value types. + // See enc_new_map for why. + keyptr := reflect.New(reflect.PtrTo(p.mtype.Key())).Elem() // addressable *K + keybase := toStructPointer(keyptr.Addr()) // **K + + var valbase structPointer + var valptr reflect.Value + switch p.mtype.Elem().Kind() { + case reflect.Slice: + // []byte + var dummy []byte + valptr = reflect.ValueOf(&dummy) // *[]byte + valbase = toStructPointer(valptr) // *[]byte + case reflect.Ptr: + // message; valptr is **Msg; need to allocate the intermediate pointer + valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V + valptr.Set(reflect.New(valptr.Type().Elem())) + valbase = toStructPointer(valptr) + default: + // everything else + valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V + valbase = toStructPointer(valptr.Addr()) // **V + } + + // Decode. + // This parses a restricted wire format, namely the encoding of a message + // with two fields. See enc_new_map for the format. + for o.index < oi { + // tagcode for key and value properties are always a single byte + // because they have tags 1 and 2. + tagcode := o.buf[o.index] + o.index++ + switch tagcode { + case p.mkeyprop.tagcode[0]: + if err := p.mkeyprop.dec(o, p.mkeyprop, keybase); err != nil { + return err + } + case p.mvalprop.tagcode[0]: + if err := p.mvalprop.dec(o, p.mvalprop, valbase); err != nil { + return err + } + default: + // TODO: Should we silently skip this instead? + return fmt.Errorf("proto: bad map data tag %d", raw[0]) + } + } + keyelem, valelem := keyptr.Elem(), valptr.Elem() + if !keyelem.IsValid() { + keyelem = reflect.Zero(p.mtype.Key()) + } + if !valelem.IsValid() { + valelem = reflect.Zero(p.mtype.Elem()) + } + + v.SetMapIndex(keyelem, valelem) + return nil +} + +// Decode a group. +func (o *Buffer) dec_struct_group(p *Properties, base structPointer) error { + bas := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(bas) { + // allocate new nested message + bas = toStructPointer(reflect.New(p.stype)) + structPointer_SetStructPointer(base, p.field, bas) + } + return o.unmarshalType(p.stype, p.sprop, true, bas) +} + +// Decode an embedded message. +func (o *Buffer) dec_struct_message(p *Properties, base structPointer) (err error) { + raw, e := o.DecodeRawBytes(false) + if e != nil { + return e + } + + bas := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(bas) { + // allocate new nested message + bas = toStructPointer(reflect.New(p.stype)) + structPointer_SetStructPointer(base, p.field, bas) + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + iv := structPointer_Interface(bas, p.stype) + return iv.(Unmarshaler).Unmarshal(raw) + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + err = o.unmarshalType(p.stype, p.sprop, false, bas) + o.buf = obuf + o.index = oi + + return err +} + +// Decode a slice of embedded messages. +func (o *Buffer) dec_slice_struct_message(p *Properties, base structPointer) error { + return o.dec_slice_struct(p, false, base) +} + +// Decode a slice of embedded groups. +func (o *Buffer) dec_slice_struct_group(p *Properties, base structPointer) error { + return o.dec_slice_struct(p, true, base) +} + +// Decode a slice of structs ([]*struct). +func (o *Buffer) dec_slice_struct(p *Properties, is_group bool, base structPointer) error { + v := reflect.New(p.stype) + bas := toStructPointer(v) + structPointer_StructPointerSlice(base, p.field).Append(bas) + + if is_group { + err := o.unmarshalType(p.stype, p.sprop, is_group, bas) + return err + } + + raw, err := o.DecodeRawBytes(false) + if err != nil { + return err + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + iv := v.Interface() + return iv.(Unmarshaler).Unmarshal(raw) + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + err = o.unmarshalType(p.stype, p.sprop, is_group, bas) + + o.buf = obuf + o.index = oi + + return err +} diff --git a/vendor/github.com/gogo/protobuf/proto/decode_gogo.go b/vendor/github.com/gogo/protobuf/proto/decode_gogo.go new file mode 100644 index 0000000000..603dabec3f --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/decode_gogo.go @@ -0,0 +1,169 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "reflect" +) + +// Decode a reference to a struct pointer. +func (o *Buffer) dec_ref_struct_message(p *Properties, base structPointer) (err error) { + raw, e := o.DecodeRawBytes(false) + if e != nil { + return e + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + panic("not supported, since this is a pointer receiver") + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + bas := structPointer_FieldPointer(base, p.field) + + err = o.unmarshalType(p.stype, p.sprop, false, bas) + o.buf = obuf + o.index = oi + + return err +} + +// Decode a slice of references to struct pointers ([]struct). +func (o *Buffer) dec_slice_ref_struct(p *Properties, is_group bool, base structPointer) error { + newBas := appendStructPointer(base, p.field, p.sstype) + + if is_group { + panic("not supported, maybe in future, if requested.") + } + + raw, err := o.DecodeRawBytes(false) + if err != nil { + return err + } + + // If the object can unmarshal itself, let it. + if p.isUnmarshaler { + panic("not supported, since this is not a pointer receiver.") + } + + obuf := o.buf + oi := o.index + o.buf = raw + o.index = 0 + + err = o.unmarshalType(p.stype, p.sprop, is_group, newBas) + + o.buf = obuf + o.index = oi + + return err +} + +// Decode a slice of references to struct pointers. +func (o *Buffer) dec_slice_ref_struct_message(p *Properties, base structPointer) error { + return o.dec_slice_ref_struct(p, false, base) +} + +func setPtrCustomType(base structPointer, f field, v interface{}) { + if v == nil { + return + } + structPointer_SetStructPointer(base, f, structPointer(reflect.ValueOf(v).Pointer())) +} + +func setCustomType(base structPointer, f field, value interface{}) { + if value == nil { + return + } + v := reflect.ValueOf(value).Elem() + t := reflect.TypeOf(value).Elem() + kind := t.Kind() + switch kind { + case reflect.Slice: + slice := reflect.MakeSlice(t, v.Len(), v.Cap()) + reflect.Copy(slice, v) + oldHeader := structPointer_GetSliceHeader(base, f) + oldHeader.Data = slice.Pointer() + oldHeader.Len = v.Len() + oldHeader.Cap = v.Cap() + default: + size := reflect.TypeOf(value).Elem().Size() + structPointer_Copy(toStructPointer(reflect.ValueOf(value)), structPointer_Add(base, f), int(size)) + } +} + +func (o *Buffer) dec_custom_bytes(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + i := reflect.New(p.ctype.Elem()).Interface() + custom := (i).(Unmarshaler) + if err := custom.Unmarshal(b); err != nil { + return err + } + setPtrCustomType(base, p.field, custom) + return nil +} + +func (o *Buffer) dec_custom_ref_bytes(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + i := reflect.New(p.ctype).Interface() + custom := (i).(Unmarshaler) + if err := custom.Unmarshal(b); err != nil { + return err + } + if custom != nil { + setCustomType(base, p.field, custom) + } + return nil +} + +// Decode a slice of bytes ([]byte) into a slice of custom types. +func (o *Buffer) dec_custom_slice_bytes(p *Properties, base structPointer) error { + b, err := o.DecodeRawBytes(true) + if err != nil { + return err + } + i := reflect.New(p.ctype.Elem()).Interface() + custom := (i).(Unmarshaler) + if err := custom.Unmarshal(b); err != nil { + return err + } + newBas := appendStructPointer(base, p.field, p.ctype) + + setCustomType(newBas, 0, custom) + + return nil +} diff --git a/vendor/github.com/gogo/protobuf/proto/encode.go b/vendor/github.com/gogo/protobuf/proto/encode.go new file mode 100644 index 0000000000..eb7e0474ef --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/encode.go @@ -0,0 +1,1331 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +/* + * Routines for encoding data into the wire format for protocol buffers. + */ + +import ( + "errors" + "fmt" + "reflect" + "sort" +) + +// RequiredNotSetError is the error returned if Marshal is called with +// a protocol buffer struct whose required fields have not +// all been initialized. It is also the error returned if Unmarshal is +// called with an encoded protocol buffer that does not include all the +// required fields. +// +// When printed, RequiredNotSetError reports the first unset required field in a +// message. If the field cannot be precisely determined, it is reported as +// "{Unknown}". +type RequiredNotSetError struct { + field string +} + +func (e *RequiredNotSetError) Error() string { + return fmt.Sprintf("proto: required field %q not set", e.field) +} + +var ( + // errRepeatedHasNil is the error returned if Marshal is called with + // a struct with a repeated field containing a nil element. + errRepeatedHasNil = errors.New("proto: repeated field has nil element") + + // errOneofHasNil is the error returned if Marshal is called with + // a struct with a oneof field containing a nil element. + errOneofHasNil = errors.New("proto: oneof field has nil value") + + // ErrNil is the error returned if Marshal is called with nil. + ErrNil = errors.New("proto: Marshal called with nil") +) + +// The fundamental encoders that put bytes on the wire. +// Those that take integer types all accept uint64 and are +// therefore of type valueEncoder. + +const maxVarintBytes = 10 // maximum length of a varint + +// EncodeVarint returns the varint encoding of x. +// This is the format for the +// int32, int64, uint32, uint64, bool, and enum +// protocol buffer types. +// Not used by the package itself, but helpful to clients +// wishing to use the same encoding. +func EncodeVarint(x uint64) []byte { + var buf [maxVarintBytes]byte + var n int + for n = 0; x > 127; n++ { + buf[n] = 0x80 | uint8(x&0x7F) + x >>= 7 + } + buf[n] = uint8(x) + n++ + return buf[0:n] +} + +// EncodeVarint writes a varint-encoded integer to the Buffer. +// This is the format for the +// int32, int64, uint32, uint64, bool, and enum +// protocol buffer types. +func (p *Buffer) EncodeVarint(x uint64) error { + for x >= 1<<7 { + p.buf = append(p.buf, uint8(x&0x7f|0x80)) + x >>= 7 + } + p.buf = append(p.buf, uint8(x)) + return nil +} + +// SizeVarint returns the varint encoding size of an integer. +func SizeVarint(x uint64) int { + return sizeVarint(x) +} + +func sizeVarint(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} + +// EncodeFixed64 writes a 64-bit integer to the Buffer. +// This is the format for the +// fixed64, sfixed64, and double protocol buffer types. +func (p *Buffer) EncodeFixed64(x uint64) error { + p.buf = append(p.buf, + uint8(x), + uint8(x>>8), + uint8(x>>16), + uint8(x>>24), + uint8(x>>32), + uint8(x>>40), + uint8(x>>48), + uint8(x>>56)) + return nil +} + +func sizeFixed64(x uint64) int { + return 8 +} + +// EncodeFixed32 writes a 32-bit integer to the Buffer. +// This is the format for the +// fixed32, sfixed32, and float protocol buffer types. +func (p *Buffer) EncodeFixed32(x uint64) error { + p.buf = append(p.buf, + uint8(x), + uint8(x>>8), + uint8(x>>16), + uint8(x>>24)) + return nil +} + +func sizeFixed32(x uint64) int { + return 4 +} + +// EncodeZigzag64 writes a zigzag-encoded 64-bit integer +// to the Buffer. +// This is the format used for the sint64 protocol buffer type. +func (p *Buffer) EncodeZigzag64(x uint64) error { + // use signed number to get arithmetic right shift. + return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} + +func sizeZigzag64(x uint64) int { + return sizeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} + +// EncodeZigzag32 writes a zigzag-encoded 32-bit integer +// to the Buffer. +// This is the format used for the sint32 protocol buffer type. +func (p *Buffer) EncodeZigzag32(x uint64) error { + // use signed number to get arithmetic right shift. + return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) +} + +func sizeZigzag32(x uint64) int { + return sizeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31)))) +} + +// EncodeRawBytes writes a count-delimited byte buffer to the Buffer. +// This is the format used for the bytes protocol buffer +// type and for embedded messages. +func (p *Buffer) EncodeRawBytes(b []byte) error { + p.EncodeVarint(uint64(len(b))) + p.buf = append(p.buf, b...) + return nil +} + +func sizeRawBytes(b []byte) int { + return sizeVarint(uint64(len(b))) + + len(b) +} + +// EncodeStringBytes writes an encoded string to the Buffer. +// This is the format used for the proto2 string type. +func (p *Buffer) EncodeStringBytes(s string) error { + p.EncodeVarint(uint64(len(s))) + p.buf = append(p.buf, s...) + return nil +} + +func sizeStringBytes(s string) int { + return sizeVarint(uint64(len(s))) + + len(s) +} + +// Marshaler is the interface representing objects that can marshal themselves. +type Marshaler interface { + Marshal() ([]byte, error) +} + +// Marshal takes the protocol buffer +// and encodes it into the wire format, returning the data. +func Marshal(pb Message) ([]byte, error) { + // Can the object marshal itself? + if m, ok := pb.(Marshaler); ok { + return m.Marshal() + } + p := NewBuffer(nil) + err := p.Marshal(pb) + var state errorState + if err != nil && !state.shouldContinue(err, nil) { + return nil, err + } + if p.buf == nil && err == nil { + // Return a non-nil slice on success. + return []byte{}, nil + } + return p.buf, err +} + +// EncodeMessage writes the protocol buffer to the Buffer, +// prefixed by a varint-encoded length. +func (p *Buffer) EncodeMessage(pb Message) error { + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return ErrNil + } + if err == nil { + var state errorState + err = p.enc_len_struct(GetProperties(t.Elem()), base, &state) + } + return err +} + +// Marshal takes the protocol buffer +// and encodes it into the wire format, writing the result to the +// Buffer. +func (p *Buffer) Marshal(pb Message) error { + // Can the object marshal itself? + if m, ok := pb.(Marshaler); ok { + data, err := m.Marshal() + if err != nil { + return err + } + p.buf = append(p.buf, data...) + return nil + } + + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return ErrNil + } + if err == nil { + err = p.enc_struct(GetProperties(t.Elem()), base) + } + + if collectStats { + stats.Encode++ + } + + return err +} + +// Size returns the encoded size of a protocol buffer. +func Size(pb Message) (n int) { + // Can the object marshal itself? If so, Size is slow. + // TODO: add Size to Marshaler, or add a Sizer interface. + if m, ok := pb.(Marshaler); ok { + b, _ := m.Marshal() + return len(b) + } + + t, base, err := getbase(pb) + if structPointer_IsNil(base) { + return 0 + } + if err == nil { + n = size_struct(GetProperties(t.Elem()), base) + } + + if collectStats { + stats.Size++ + } + + return +} + +// Individual type encoders. + +// Encode a bool. +func (o *Buffer) enc_bool(p *Properties, base structPointer) error { + v := *structPointer_Bool(base, p.field) + if v == nil { + return ErrNil + } + x := 0 + if *v { + x = 1 + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_bool(p *Properties, base structPointer) error { + v := *structPointer_BoolVal(base, p.field) + if !v { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, 1) + return nil +} + +func size_bool(p *Properties, base structPointer) int { + v := *structPointer_Bool(base, p.field) + if v == nil { + return 0 + } + return len(p.tagcode) + 1 // each bool takes exactly one byte +} + +func size_proto3_bool(p *Properties, base structPointer) int { + v := *structPointer_BoolVal(base, p.field) + if !v && !p.oneof { + return 0 + } + return len(p.tagcode) + 1 // each bool takes exactly one byte +} + +// Encode an int32. +func (o *Buffer) enc_int32(p *Properties, base structPointer) error { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return ErrNil + } + x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_int32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_int32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return 0 + } + x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +func size_proto3_int32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +// Encode a uint32. +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_uint32(p *Properties, base structPointer) error { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return ErrNil + } + x := word32_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func (o *Buffer) enc_proto3_uint32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_uint32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32(base, p.field) + if word32_IsNil(v) { + return 0 + } + x := word32_Get(v) + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +func size_proto3_uint32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +// Encode an int64. +func (o *Buffer) enc_int64(p *Properties, base structPointer) error { + v := structPointer_Word64(base, p.field) + if word64_IsNil(v) { + return ErrNil + } + x := word64_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, x) + return nil +} + +func (o *Buffer) enc_proto3_int64(p *Properties, base structPointer) error { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + if x == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, x) + return nil +} + +func size_int64(p *Properties, base structPointer) (n int) { + v := structPointer_Word64(base, p.field) + if word64_IsNil(v) { + return 0 + } + x := word64_Get(v) + n += len(p.tagcode) + n += p.valSize(x) + return +} + +func size_proto3_int64(p *Properties, base structPointer) (n int) { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + if x == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += p.valSize(x) + return +} + +// Encode a string. +func (o *Buffer) enc_string(p *Properties, base structPointer) error { + v := *structPointer_String(base, p.field) + if v == nil { + return ErrNil + } + x := *v + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(x) + return nil +} + +func (o *Buffer) enc_proto3_string(p *Properties, base structPointer) error { + v := *structPointer_StringVal(base, p.field) + if v == "" { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(v) + return nil +} + +func size_string(p *Properties, base structPointer) (n int) { + v := *structPointer_String(base, p.field) + if v == nil { + return 0 + } + x := *v + n += len(p.tagcode) + n += sizeStringBytes(x) + return +} + +func size_proto3_string(p *Properties, base structPointer) (n int) { + v := *structPointer_StringVal(base, p.field) + if v == "" && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeStringBytes(v) + return +} + +// All protocol buffer fields are nillable, but be careful. +func isNil(v reflect.Value) bool { + switch v.Kind() { + case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return v.IsNil() + } + return false +} + +// Encode a message struct. +func (o *Buffer) enc_struct_message(p *Properties, base structPointer) error { + var state errorState + structp := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return ErrNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + return state.err + } + + o.buf = append(o.buf, p.tagcode...) + return o.enc_len_struct(p.sprop, structp, &state) +} + +func size_struct_message(p *Properties, base structPointer) int { + structp := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return 0 + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n0 := len(p.tagcode) + n1 := sizeRawBytes(data) + return n0 + n1 + } + + n0 := len(p.tagcode) + n1 := size_struct(p.sprop, structp) + n2 := sizeVarint(uint64(n1)) // size of encoded length + return n0 + n1 + n2 +} + +// Encode a group struct. +func (o *Buffer) enc_struct_group(p *Properties, base structPointer) error { + var state errorState + b := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(b) { + return ErrNil + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) + err := o.enc_struct(p.sprop, b) + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) + return state.err +} + +func size_struct_group(p *Properties, base structPointer) (n int) { + b := structPointer_GetStructPointer(base, p.field) + if structPointer_IsNil(b) { + return 0 + } + + n += sizeVarint(uint64((p.Tag << 3) | WireStartGroup)) + n += size_struct(p.sprop, b) + n += sizeVarint(uint64((p.Tag << 3) | WireEndGroup)) + return +} + +// Encode a slice of bools ([]bool). +func (o *Buffer) enc_slice_bool(p *Properties, base structPointer) error { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return ErrNil + } + for _, x := range s { + o.buf = append(o.buf, p.tagcode...) + v := uint64(0) + if x { + v = 1 + } + p.valEnc(o, v) + } + return nil +} + +func size_slice_bool(p *Properties, base structPointer) int { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return 0 + } + return l * (len(p.tagcode) + 1) // each bool takes exactly one byte +} + +// Encode a slice of bools ([]bool) in packed format. +func (o *Buffer) enc_slice_packed_bool(p *Properties, base structPointer) error { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(l)) // each bool takes exactly one byte + for _, x := range s { + v := uint64(0) + if x { + v = 1 + } + p.valEnc(o, v) + } + return nil +} + +func size_slice_packed_bool(p *Properties, base structPointer) (n int) { + s := *structPointer_BoolSlice(base, p.field) + l := len(s) + if l == 0 { + return 0 + } + n += len(p.tagcode) + n += sizeVarint(uint64(l)) + n += l // each bool takes exactly one byte + return +} + +// Encode a slice of bytes ([]byte). +func (o *Buffer) enc_slice_byte(p *Properties, base structPointer) error { + s := *structPointer_Bytes(base, p.field) + if s == nil { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(s) + return nil +} + +func (o *Buffer) enc_proto3_slice_byte(p *Properties, base structPointer) error { + s := *structPointer_Bytes(base, p.field) + if len(s) == 0 { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(s) + return nil +} + +func size_slice_byte(p *Properties, base structPointer) (n int) { + s := *structPointer_Bytes(base, p.field) + if s == nil && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeRawBytes(s) + return +} + +func size_proto3_slice_byte(p *Properties, base structPointer) (n int) { + s := *structPointer_Bytes(base, p.field) + if len(s) == 0 && !p.oneof { + return 0 + } + n += len(p.tagcode) + n += sizeRawBytes(s) + return +} + +// Encode a slice of int32s ([]int32). +func (o *Buffer) enc_slice_int32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + p.valEnc(o, uint64(x)) + } + return nil +} + +func size_slice_int32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + n += p.valSize(uint64(x)) + } + return +} + +// Encode a slice of int32s ([]int32) in packed format. +func (o *Buffer) enc_slice_packed_int32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + p.valEnc(buf, uint64(x)) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_int32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + x := int32(s.Index(i)) // permit sign extension to use full 64-bit range + bufSize += p.valSize(uint64(x)) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of uint32s ([]uint32). +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_slice_uint32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + x := s.Index(i) + p.valEnc(o, uint64(x)) + } + return nil +} + +func size_slice_uint32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + x := s.Index(i) + n += p.valSize(uint64(x)) + } + return +} + +// Encode a slice of uint32s ([]uint32) in packed format. +// Exactly the same as int32, except for no sign extension. +func (o *Buffer) enc_slice_packed_uint32(p *Properties, base structPointer) error { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + p.valEnc(buf, uint64(s.Index(i))) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_uint32(p *Properties, base structPointer) (n int) { + s := structPointer_Word32Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + bufSize += p.valSize(uint64(s.Index(i))) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of int64s ([]int64). +func (o *Buffer) enc_slice_int64(p *Properties, base structPointer) error { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, s.Index(i)) + } + return nil +} + +func size_slice_int64(p *Properties, base structPointer) (n int) { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + for i := 0; i < l; i++ { + n += len(p.tagcode) + n += p.valSize(s.Index(i)) + } + return +} + +// Encode a slice of int64s ([]int64) in packed format. +func (o *Buffer) enc_slice_packed_int64(p *Properties, base structPointer) error { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return ErrNil + } + // TODO: Reuse a Buffer. + buf := NewBuffer(nil) + for i := 0; i < l; i++ { + p.valEnc(buf, s.Index(i)) + } + + o.buf = append(o.buf, p.tagcode...) + o.EncodeVarint(uint64(len(buf.buf))) + o.buf = append(o.buf, buf.buf...) + return nil +} + +func size_slice_packed_int64(p *Properties, base structPointer) (n int) { + s := structPointer_Word64Slice(base, p.field) + l := s.Len() + if l == 0 { + return 0 + } + var bufSize int + for i := 0; i < l; i++ { + bufSize += p.valSize(s.Index(i)) + } + + n += len(p.tagcode) + n += sizeVarint(uint64(bufSize)) + n += bufSize + return +} + +// Encode a slice of slice of bytes ([][]byte). +func (o *Buffer) enc_slice_slice_byte(p *Properties, base structPointer) error { + ss := *structPointer_BytesSlice(base, p.field) + l := len(ss) + if l == 0 { + return ErrNil + } + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(ss[i]) + } + return nil +} + +func size_slice_slice_byte(p *Properties, base structPointer) (n int) { + ss := *structPointer_BytesSlice(base, p.field) + l := len(ss) + if l == 0 { + return 0 + } + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + n += sizeRawBytes(ss[i]) + } + return +} + +// Encode a slice of strings ([]string). +func (o *Buffer) enc_slice_string(p *Properties, base structPointer) error { + ss := *structPointer_StringSlice(base, p.field) + l := len(ss) + for i := 0; i < l; i++ { + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(ss[i]) + } + return nil +} + +func size_slice_string(p *Properties, base structPointer) (n int) { + ss := *structPointer_StringSlice(base, p.field) + l := len(ss) + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + n += sizeStringBytes(ss[i]) + } + return +} + +// Encode a slice of message structs ([]*struct). +func (o *Buffer) enc_slice_struct_message(p *Properties, base structPointer) error { + var state errorState + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + for i := 0; i < l; i++ { + structp := s.Index(i) + if structPointer_IsNil(structp) { + return errRepeatedHasNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + continue + } + + o.buf = append(o.buf, p.tagcode...) + err := o.enc_len_struct(p.sprop, structp, &state) + if err != nil && !state.shouldContinue(err, nil) { + if err == ErrNil { + return errRepeatedHasNil + } + return err + } + } + return state.err +} + +func size_slice_struct_message(p *Properties, base structPointer) (n int) { + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + structp := s.Index(i) + if structPointer_IsNil(structp) { + return // return the size up to this point + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n += len(p.tagcode) + n += sizeRawBytes(data) + continue + } + + n0 := size_struct(p.sprop, structp) + n1 := sizeVarint(uint64(n0)) // size of encoded length + n += n0 + n1 + } + return +} + +// Encode a slice of group structs ([]*struct). +func (o *Buffer) enc_slice_struct_group(p *Properties, base structPointer) error { + var state errorState + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + for i := 0; i < l; i++ { + b := s.Index(i) + if structPointer_IsNil(b) { + return errRepeatedHasNil + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup)) + + err := o.enc_struct(p.sprop, b) + + if err != nil && !state.shouldContinue(err, nil) { + if err == ErrNil { + return errRepeatedHasNil + } + return err + } + + o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup)) + } + return state.err +} + +func size_slice_struct_group(p *Properties, base structPointer) (n int) { + s := structPointer_StructPointerSlice(base, p.field) + l := s.Len() + + n += l * sizeVarint(uint64((p.Tag<<3)|WireStartGroup)) + n += l * sizeVarint(uint64((p.Tag<<3)|WireEndGroup)) + for i := 0; i < l; i++ { + b := s.Index(i) + if structPointer_IsNil(b) { + return // return size up to this point + } + + n += size_struct(p.sprop, b) + } + return +} + +// Encode an extension map. +func (o *Buffer) enc_map(p *Properties, base structPointer) error { + v := *structPointer_ExtMap(base, p.field) + if err := encodeExtensionMap(v); err != nil { + return err + } + // Fast-path for common cases: zero or one extensions. + if len(v) <= 1 { + for _, e := range v { + o.buf = append(o.buf, e.enc...) + } + return nil + } + + // Sort keys to provide a deterministic encoding. + keys := make([]int, 0, len(v)) + for k := range v { + keys = append(keys, int(k)) + } + sort.Ints(keys) + + for _, k := range keys { + o.buf = append(o.buf, v[int32(k)].enc...) + } + return nil +} + +func size_map(p *Properties, base structPointer) int { + v := *structPointer_ExtMap(base, p.field) + return sizeExtensionMap(v) +} + +// Encode a map field. +func (o *Buffer) enc_new_map(p *Properties, base structPointer) error { + var state errorState // XXX: or do we need to plumb this through? + + /* + A map defined as + map map_field = N; + is encoded in the same way as + message MapFieldEntry { + key_type key = 1; + value_type value = 2; + } + repeated MapFieldEntry map_field = N; + */ + + v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V + if v.Len() == 0 { + return nil + } + + keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) + + enc := func() error { + if err := p.mkeyprop.enc(o, p.mkeyprop, keybase); err != nil { + return err + } + if err := p.mvalprop.enc(o, p.mvalprop, valbase); err != nil { + return err + } + return nil + } + + // Don't sort map keys. It is not required by the spec, and C++ doesn't do it. + for _, key := range v.MapKeys() { + val := v.MapIndex(key) + + // The only illegal map entry values are nil message pointers. + if val.Kind() == reflect.Ptr && val.IsNil() { + return errors.New("proto: map has nil element") + } + + keycopy.Set(key) + valcopy.Set(val) + + o.buf = append(o.buf, p.tagcode...) + if err := o.enc_len_thing(enc, &state); err != nil { + return err + } + } + return nil +} + +func size_new_map(p *Properties, base structPointer) int { + v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V + + keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype) + + n := 0 + for _, key := range v.MapKeys() { + val := v.MapIndex(key) + keycopy.Set(key) + valcopy.Set(val) + + // Tag codes for key and val are the responsibility of the sub-sizer. + keysize := p.mkeyprop.size(p.mkeyprop, keybase) + valsize := p.mvalprop.size(p.mvalprop, valbase) + entry := keysize + valsize + // Add on tag code and length of map entry itself. + n += len(p.tagcode) + sizeVarint(uint64(entry)) + entry + } + return n +} + +// mapEncodeScratch returns a new reflect.Value matching the map's value type, +// and a structPointer suitable for passing to an encoder or sizer. +func mapEncodeScratch(mapType reflect.Type) (keycopy, valcopy reflect.Value, keybase, valbase structPointer) { + // Prepare addressable doubly-indirect placeholders for the key and value types. + // This is needed because the element-type encoders expect **T, but the map iteration produces T. + + keycopy = reflect.New(mapType.Key()).Elem() // addressable K + keyptr := reflect.New(reflect.PtrTo(keycopy.Type())).Elem() // addressable *K + keyptr.Set(keycopy.Addr()) // + keybase = toStructPointer(keyptr.Addr()) // **K + + // Value types are more varied and require special handling. + switch mapType.Elem().Kind() { + case reflect.Slice: + // []byte + var dummy []byte + valcopy = reflect.ValueOf(&dummy).Elem() // addressable []byte + valbase = toStructPointer(valcopy.Addr()) + case reflect.Ptr: + // message; the generated field type is map[K]*Msg (so V is *Msg), + // so we only need one level of indirection. + valcopy = reflect.New(mapType.Elem()).Elem() // addressable V + valbase = toStructPointer(valcopy.Addr()) + default: + // everything else + valcopy = reflect.New(mapType.Elem()).Elem() // addressable V + valptr := reflect.New(reflect.PtrTo(valcopy.Type())).Elem() // addressable *V + valptr.Set(valcopy.Addr()) // + valbase = toStructPointer(valptr.Addr()) // **V + } + return +} + +// Encode a struct. +func (o *Buffer) enc_struct(prop *StructProperties, base structPointer) error { + var state errorState + // Encode fields in tag order so that decoders may use optimizations + // that depend on the ordering. + // https://developers.google.com/protocol-buffers/docs/encoding#order + for _, i := range prop.order { + p := prop.Prop[i] + if p.enc != nil { + err := p.enc(o, p, base) + if err != nil { + if err == ErrNil { + if p.Required && state.err == nil { + state.err = &RequiredNotSetError{p.Name} + } + } else if err == errRepeatedHasNil { + // Give more context to nil values in repeated fields. + return errors.New("repeated field " + p.OrigName + " has nil element") + } else if !state.shouldContinue(err, p) { + return err + } + } + } + } + + // Do oneof fields. + if prop.oneofMarshaler != nil { + m := structPointer_Interface(base, prop.stype).(Message) + if err := prop.oneofMarshaler(m, o); err == ErrNil { + return errOneofHasNil + } else if err != nil { + return err + } + } + + // Add unrecognized fields at the end. + if prop.unrecField.IsValid() { + v := *structPointer_Bytes(base, prop.unrecField) + if len(v) > 0 { + o.buf = append(o.buf, v...) + } + } + + return state.err +} + +func size_struct(prop *StructProperties, base structPointer) (n int) { + for _, i := range prop.order { + p := prop.Prop[i] + if p.size != nil { + n += p.size(p, base) + } + } + + // Add unrecognized fields at the end. + if prop.unrecField.IsValid() { + v := *structPointer_Bytes(base, prop.unrecField) + n += len(v) + } + + // Factor in any oneof fields. + if prop.oneofSizer != nil { + m := structPointer_Interface(base, prop.stype).(Message) + n += prop.oneofSizer(m) + } + + return +} + +var zeroes [20]byte // longer than any conceivable sizeVarint + +// Encode a struct, preceded by its encoded length (as a varint). +func (o *Buffer) enc_len_struct(prop *StructProperties, base structPointer, state *errorState) error { + return o.enc_len_thing(func() error { return o.enc_struct(prop, base) }, state) +} + +// Encode something, preceded by its encoded length (as a varint). +func (o *Buffer) enc_len_thing(enc func() error, state *errorState) error { + iLen := len(o.buf) + o.buf = append(o.buf, 0, 0, 0, 0) // reserve four bytes for length + iMsg := len(o.buf) + err := enc() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + lMsg := len(o.buf) - iMsg + lLen := sizeVarint(uint64(lMsg)) + switch x := lLen - (iMsg - iLen); { + case x > 0: // actual length is x bytes larger than the space we reserved + // Move msg x bytes right. + o.buf = append(o.buf, zeroes[:x]...) + copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) + case x < 0: // actual length is x bytes smaller than the space we reserved + // Move msg x bytes left. + copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg]) + o.buf = o.buf[:len(o.buf)+x] // x is negative + } + // Encode the length in the reserved space. + o.buf = o.buf[:iLen] + o.EncodeVarint(uint64(lMsg)) + o.buf = o.buf[:len(o.buf)+lMsg] + return state.err +} + +// errorState maintains the first error that occurs and updates that error +// with additional context. +type errorState struct { + err error +} + +// shouldContinue reports whether encoding should continue upon encountering the +// given error. If the error is RequiredNotSetError, shouldContinue returns true +// and, if this is the first appearance of that error, remembers it for future +// reporting. +// +// If prop is not nil, it may update any error with additional context about the +// field with the error. +func (s *errorState) shouldContinue(err error, prop *Properties) bool { + // Ignore unset required fields. + reqNotSet, ok := err.(*RequiredNotSetError) + if !ok { + return false + } + if s.err == nil { + if prop != nil { + err = &RequiredNotSetError{prop.Name + "." + reqNotSet.field} + } + s.err = err + } + return true +} diff --git a/vendor/github.com/gogo/protobuf/proto/encode_gogo.go b/vendor/github.com/gogo/protobuf/proto/encode_gogo.go new file mode 100644 index 0000000000..f77cfb1eea --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/encode_gogo.go @@ -0,0 +1,354 @@ +// Extensions for Protocol Buffers to create more go like structures. +// +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// http://github.com/golang/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "reflect" +) + +func NewRequiredNotSetError(field string) *RequiredNotSetError { + return &RequiredNotSetError{field} +} + +type Sizer interface { + Size() int +} + +func (o *Buffer) enc_ext_slice_byte(p *Properties, base structPointer) error { + s := *structPointer_Bytes(base, p.field) + if s == nil { + return ErrNil + } + o.buf = append(o.buf, s...) + return nil +} + +func size_ext_slice_byte(p *Properties, base structPointer) (n int) { + s := *structPointer_Bytes(base, p.field) + if s == nil { + return 0 + } + n += len(s) + return +} + +// Encode a reference to bool pointer. +func (o *Buffer) enc_ref_bool(p *Properties, base structPointer) error { + v := *structPointer_BoolVal(base, p.field) + x := 0 + if v { + x = 1 + } + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_ref_bool(p *Properties, base structPointer) int { + return len(p.tagcode) + 1 // each bool takes exactly one byte +} + +// Encode a reference to int32 pointer. +func (o *Buffer) enc_ref_int32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_ref_int32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := int32(word32Val_Get(v)) + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +func (o *Buffer) enc_ref_uint32(p *Properties, base structPointer) error { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, uint64(x)) + return nil +} + +func size_ref_uint32(p *Properties, base structPointer) (n int) { + v := structPointer_Word32Val(base, p.field) + x := word32Val_Get(v) + n += len(p.tagcode) + n += p.valSize(uint64(x)) + return +} + +// Encode a reference to an int64 pointer. +func (o *Buffer) enc_ref_int64(p *Properties, base structPointer) error { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + o.buf = append(o.buf, p.tagcode...) + p.valEnc(o, x) + return nil +} + +func size_ref_int64(p *Properties, base structPointer) (n int) { + v := structPointer_Word64Val(base, p.field) + x := word64Val_Get(v) + n += len(p.tagcode) + n += p.valSize(x) + return +} + +// Encode a reference to a string pointer. +func (o *Buffer) enc_ref_string(p *Properties, base structPointer) error { + v := *structPointer_StringVal(base, p.field) + o.buf = append(o.buf, p.tagcode...) + o.EncodeStringBytes(v) + return nil +} + +func size_ref_string(p *Properties, base structPointer) (n int) { + v := *structPointer_StringVal(base, p.field) + n += len(p.tagcode) + n += sizeStringBytes(v) + return +} + +// Encode a reference to a message struct. +func (o *Buffer) enc_ref_struct_message(p *Properties, base structPointer) error { + var state errorState + structp := structPointer_GetRefStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return ErrNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + return nil + } + + o.buf = append(o.buf, p.tagcode...) + return o.enc_len_struct(p.sprop, structp, &state) +} + +//TODO this is only copied, please fix this +func size_ref_struct_message(p *Properties, base structPointer) int { + structp := structPointer_GetRefStructPointer(base, p.field) + if structPointer_IsNil(structp) { + return 0 + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n0 := len(p.tagcode) + n1 := sizeRawBytes(data) + return n0 + n1 + } + + n0 := len(p.tagcode) + n1 := size_struct(p.sprop, structp) + n2 := sizeVarint(uint64(n1)) // size of encoded length + return n0 + n1 + n2 +} + +// Encode a slice of references to message struct pointers ([]struct). +func (o *Buffer) enc_slice_ref_struct_message(p *Properties, base structPointer) error { + var state errorState + ss := structPointer_GetStructPointer(base, p.field) + ss1 := structPointer_GetRefStructPointer(ss, field(0)) + size := p.stype.Size() + l := structPointer_Len(base, p.field) + for i := 0; i < l; i++ { + structp := structPointer_Add(ss1, field(uintptr(i)*size)) + if structPointer_IsNil(structp) { + return errRepeatedHasNil + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, err := m.Marshal() + if err != nil && !state.shouldContinue(err, nil) { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + continue + } + + o.buf = append(o.buf, p.tagcode...) + err := o.enc_len_struct(p.sprop, structp, &state) + if err != nil && !state.shouldContinue(err, nil) { + if err == ErrNil { + return errRepeatedHasNil + } + return err + } + + } + return state.err +} + +//TODO this is only copied, please fix this +func size_slice_ref_struct_message(p *Properties, base structPointer) (n int) { + ss := structPointer_GetStructPointer(base, p.field) + ss1 := structPointer_GetRefStructPointer(ss, field(0)) + size := p.stype.Size() + l := structPointer_Len(base, p.field) + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + structp := structPointer_Add(ss1, field(uintptr(i)*size)) + if structPointer_IsNil(structp) { + return // return the size up to this point + } + + // Can the object marshal itself? + if p.isMarshaler { + m := structPointer_Interface(structp, p.stype).(Marshaler) + data, _ := m.Marshal() + n += len(p.tagcode) + n += sizeRawBytes(data) + continue + } + + n0 := size_struct(p.sprop, structp) + n1 := sizeVarint(uint64(n0)) // size of encoded length + n += n0 + n1 + } + return +} + +func (o *Buffer) enc_custom_bytes(p *Properties, base structPointer) error { + i := structPointer_InterfaceRef(base, p.field, p.ctype) + if i == nil { + return ErrNil + } + custom := i.(Marshaler) + data, err := custom.Marshal() + if err != nil { + return err + } + if data == nil { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + return nil +} + +func size_custom_bytes(p *Properties, base structPointer) (n int) { + n += len(p.tagcode) + i := structPointer_InterfaceRef(base, p.field, p.ctype) + if i == nil { + return 0 + } + custom := i.(Marshaler) + data, _ := custom.Marshal() + n += sizeRawBytes(data) + return +} + +func (o *Buffer) enc_custom_ref_bytes(p *Properties, base structPointer) error { + custom := structPointer_InterfaceAt(base, p.field, p.ctype).(Marshaler) + data, err := custom.Marshal() + if err != nil { + return err + } + if data == nil { + return ErrNil + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + return nil +} + +func size_custom_ref_bytes(p *Properties, base structPointer) (n int) { + n += len(p.tagcode) + i := structPointer_InterfaceAt(base, p.field, p.ctype) + if i == nil { + return 0 + } + custom := i.(Marshaler) + data, _ := custom.Marshal() + n += sizeRawBytes(data) + return +} + +func (o *Buffer) enc_custom_slice_bytes(p *Properties, base structPointer) error { + inter := structPointer_InterfaceRef(base, p.field, p.ctype) + if inter == nil { + return ErrNil + } + slice := reflect.ValueOf(inter) + l := slice.Len() + for i := 0; i < l; i++ { + v := slice.Index(i) + custom := v.Interface().(Marshaler) + data, err := custom.Marshal() + if err != nil { + return err + } + o.buf = append(o.buf, p.tagcode...) + o.EncodeRawBytes(data) + } + return nil +} + +func size_custom_slice_bytes(p *Properties, base structPointer) (n int) { + inter := structPointer_InterfaceRef(base, p.field, p.ctype) + if inter == nil { + return 0 + } + slice := reflect.ValueOf(inter) + l := slice.Len() + n += l * len(p.tagcode) + for i := 0; i < l; i++ { + v := slice.Index(i) + custom := v.Interface().(Marshaler) + data, _ := custom.Marshal() + n += sizeRawBytes(data) + } + return +} diff --git a/vendor/github.com/gogo/protobuf/proto/equal.go b/vendor/github.com/gogo/protobuf/proto/equal.go new file mode 100644 index 0000000000..f5db1def3c --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/equal.go @@ -0,0 +1,276 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2011 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Protocol buffer comparison. + +package proto + +import ( + "bytes" + "log" + "reflect" + "strings" +) + +/* +Equal returns true iff protocol buffers a and b are equal. +The arguments must both be pointers to protocol buffer structs. + +Equality is defined in this way: + - Two messages are equal iff they are the same type, + corresponding fields are equal, unknown field sets + are equal, and extensions sets are equal. + - Two set scalar fields are equal iff their values are equal. + If the fields are of a floating-point type, remember that + NaN != x for all x, including NaN. If the message is defined + in a proto3 .proto file, fields are not "set"; specifically, + zero length proto3 "bytes" fields are equal (nil == {}). + - Two repeated fields are equal iff their lengths are the same, + and their corresponding elements are equal (a "bytes" field, + although represented by []byte, is not a repeated field) + - Two unset fields are equal. + - Two unknown field sets are equal if their current + encoded state is equal. + - Two extension sets are equal iff they have corresponding + elements that are pairwise equal. + - Every other combination of things are not equal. + +The return value is undefined if a and b are not protocol buffers. +*/ +func Equal(a, b Message) bool { + if a == nil || b == nil { + return a == b + } + v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b) + if v1.Type() != v2.Type() { + return false + } + if v1.Kind() == reflect.Ptr { + if v1.IsNil() { + return v2.IsNil() + } + if v2.IsNil() { + return false + } + v1, v2 = v1.Elem(), v2.Elem() + } + if v1.Kind() != reflect.Struct { + return false + } + return equalStruct(v1, v2) +} + +// v1 and v2 are known to have the same type. +func equalStruct(v1, v2 reflect.Value) bool { + sprop := GetProperties(v1.Type()) + for i := 0; i < v1.NumField(); i++ { + f := v1.Type().Field(i) + if strings.HasPrefix(f.Name, "XXX_") { + continue + } + f1, f2 := v1.Field(i), v2.Field(i) + if f.Type.Kind() == reflect.Ptr { + if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 { + // both unset + continue + } else if n1 != n2 { + // set/unset mismatch + return false + } + b1, ok := f1.Interface().(raw) + if ok { + b2 := f2.Interface().(raw) + // RawMessage + if !bytes.Equal(b1.Bytes(), b2.Bytes()) { + return false + } + continue + } + f1, f2 = f1.Elem(), f2.Elem() + } + if !equalAny(f1, f2, sprop.Prop[i]) { + return false + } + } + + if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() { + em2 := v2.FieldByName("XXX_extensions") + if !equalExtensions(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) { + return false + } + } + + uf := v1.FieldByName("XXX_unrecognized") + if !uf.IsValid() { + return true + } + + u1 := uf.Bytes() + u2 := v2.FieldByName("XXX_unrecognized").Bytes() + if !bytes.Equal(u1, u2) { + return false + } + + return true +} + +// v1 and v2 are known to have the same type. +// prop may be nil. +func equalAny(v1, v2 reflect.Value, prop *Properties) bool { + if v1.Type() == protoMessageType { + m1, _ := v1.Interface().(Message) + m2, _ := v2.Interface().(Message) + return Equal(m1, m2) + } + switch v1.Kind() { + case reflect.Bool: + return v1.Bool() == v2.Bool() + case reflect.Float32, reflect.Float64: + return v1.Float() == v2.Float() + case reflect.Int32, reflect.Int64: + return v1.Int() == v2.Int() + case reflect.Interface: + // Probably a oneof field; compare the inner values. + n1, n2 := v1.IsNil(), v2.IsNil() + if n1 || n2 { + return n1 == n2 + } + e1, e2 := v1.Elem(), v2.Elem() + if e1.Type() != e2.Type() { + return false + } + return equalAny(e1, e2, nil) + case reflect.Map: + if v1.Len() != v2.Len() { + return false + } + for _, key := range v1.MapKeys() { + val2 := v2.MapIndex(key) + if !val2.IsValid() { + // This key was not found in the second map. + return false + } + if !equalAny(v1.MapIndex(key), val2, nil) { + return false + } + } + return true + case reflect.Ptr: + return equalAny(v1.Elem(), v2.Elem(), prop) + case reflect.Slice: + if v1.Type().Elem().Kind() == reflect.Uint8 { + // short circuit: []byte + + // Edge case: if this is in a proto3 message, a zero length + // bytes field is considered the zero value. + if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 { + return true + } + if v1.IsNil() != v2.IsNil() { + return false + } + return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte)) + } + + if v1.Len() != v2.Len() { + return false + } + for i := 0; i < v1.Len(); i++ { + if !equalAny(v1.Index(i), v2.Index(i), prop) { + return false + } + } + return true + case reflect.String: + return v1.Interface().(string) == v2.Interface().(string) + case reflect.Struct: + return equalStruct(v1, v2) + case reflect.Uint32, reflect.Uint64: + return v1.Uint() == v2.Uint() + } + + // unknown type, so not a protocol buffer + log.Printf("proto: don't know how to compare %v", v1) + return false +} + +// base is the struct type that the extensions are based on. +// em1 and em2 are extension maps. +func equalExtensions(base reflect.Type, em1, em2 map[int32]Extension) bool { + if len(em1) != len(em2) { + return false + } + + for extNum, e1 := range em1 { + e2, ok := em2[extNum] + if !ok { + return false + } + + m1, m2 := e1.value, e2.value + + if m1 != nil && m2 != nil { + // Both are unencoded. + if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { + return false + } + continue + } + + // At least one is encoded. To do a semantically correct comparison + // we need to unmarshal them first. + var desc *ExtensionDesc + if m := extensionMaps[base]; m != nil { + desc = m[extNum] + } + if desc == nil { + log.Printf("proto: don't know how to compare extension %d of %v", extNum, base) + continue + } + var err error + if m1 == nil { + m1, err = decodeExtension(e1.enc, desc) + } + if m2 == nil && err == nil { + m2, err = decodeExtension(e2.enc, desc) + } + if err != nil { + // The encoded form is invalid. + log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err) + return false + } + if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) { + return false + } + } + + return true +} diff --git a/vendor/github.com/gogo/protobuf/proto/extensions.go b/vendor/github.com/gogo/protobuf/proto/extensions.go new file mode 100644 index 0000000000..6180347e39 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/extensions.go @@ -0,0 +1,518 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +/* + * Types and routines for supporting protocol buffer extensions. + */ + +import ( + "errors" + "fmt" + "reflect" + "strconv" + "sync" +) + +// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message. +var ErrMissingExtension = errors.New("proto: missing extension") + +// ExtensionRange represents a range of message extensions for a protocol buffer. +// Used in code generated by the protocol compiler. +type ExtensionRange struct { + Start, End int32 // both inclusive +} + +// extendableProto is an interface implemented by any protocol buffer that may be extended. +type extendableProto interface { + Message + ExtensionRangeArray() []ExtensionRange +} + +type extensionsMap interface { + extendableProto + ExtensionMap() map[int32]Extension +} + +type extensionsBytes interface { + extendableProto + GetExtensions() *[]byte +} + +var extendableProtoType = reflect.TypeOf((*extendableProto)(nil)).Elem() + +// ExtensionDesc represents an extension specification. +// Used in generated code from the protocol compiler. +type ExtensionDesc struct { + ExtendedType Message // nil pointer to the type that is being extended + ExtensionType interface{} // nil pointer to the extension type + Field int32 // field number + Name string // fully-qualified name of extension, for text formatting + Tag string // protobuf tag style +} + +func (ed *ExtensionDesc) repeated() bool { + t := reflect.TypeOf(ed.ExtensionType) + return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 +} + +// Extension represents an extension in a message. +type Extension struct { + // When an extension is stored in a message using SetExtension + // only desc and value are set. When the message is marshaled + // enc will be set to the encoded form of the message. + // + // When a message is unmarshaled and contains extensions, each + // extension will have only enc set. When such an extension is + // accessed using GetExtension (or GetExtensions) desc and value + // will be set. + desc *ExtensionDesc + value interface{} + enc []byte +} + +// SetRawExtension is for testing only. +func SetRawExtension(base extendableProto, id int32, b []byte) { + if ebase, ok := base.(extensionsMap); ok { + ebase.ExtensionMap()[id] = Extension{enc: b} + } else if ebase, ok := base.(extensionsBytes); ok { + clearExtension(base, id) + ext := ebase.GetExtensions() + *ext = append(*ext, b...) + } else { + panic("unreachable") + } +} + +// isExtensionField returns true iff the given field number is in an extension range. +func isExtensionField(pb extendableProto, field int32) bool { + for _, er := range pb.ExtensionRangeArray() { + if er.Start <= field && field <= er.End { + return true + } + } + return false +} + +// checkExtensionTypes checks that the given extension is valid for pb. +func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error { + // Check the extended type. + if a, b := reflect.TypeOf(pb), reflect.TypeOf(extension.ExtendedType); a != b { + return errors.New("proto: bad extended type; " + b.String() + " does not extend " + a.String()) + } + // Check the range. + if !isExtensionField(pb, extension.Field) { + return errors.New("proto: bad extension number; not in declared ranges") + } + return nil +} + +// extPropKey is sufficient to uniquely identify an extension. +type extPropKey struct { + base reflect.Type + field int32 +} + +var extProp = struct { + sync.RWMutex + m map[extPropKey]*Properties +}{ + m: make(map[extPropKey]*Properties), +} + +func extensionProperties(ed *ExtensionDesc) *Properties { + key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field} + + extProp.RLock() + if prop, ok := extProp.m[key]; ok { + extProp.RUnlock() + return prop + } + extProp.RUnlock() + + extProp.Lock() + defer extProp.Unlock() + // Check again. + if prop, ok := extProp.m[key]; ok { + return prop + } + + prop := new(Properties) + prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil) + extProp.m[key] = prop + return prop +} + +// encodeExtensionMap encodes any unmarshaled (unencoded) extensions in m. +func encodeExtensionMap(m map[int32]Extension) error { + for k, e := range m { + err := encodeExtension(&e) + if err != nil { + return err + } + m[k] = e + } + return nil +} + +func encodeExtension(e *Extension) error { + if e.value == nil || e.desc == nil { + // Extension is only in its encoded form. + return nil + } + // We don't skip extensions that have an encoded form set, + // because the extension value may have been mutated after + // the last time this function was called. + + et := reflect.TypeOf(e.desc.ExtensionType) + props := extensionProperties(e.desc) + + p := NewBuffer(nil) + // If e.value has type T, the encoder expects a *struct{ X T }. + // Pass a *T with a zero field and hope it all works out. + x := reflect.New(et) + x.Elem().Set(reflect.ValueOf(e.value)) + if err := props.enc(p, props, toStructPointer(x)); err != nil { + return err + } + e.enc = p.buf + return nil +} + +func sizeExtensionMap(m map[int32]Extension) (n int) { + for _, e := range m { + if e.value == nil || e.desc == nil { + // Extension is only in its encoded form. + n += len(e.enc) + continue + } + + // We don't skip extensions that have an encoded form set, + // because the extension value may have been mutated after + // the last time this function was called. + + et := reflect.TypeOf(e.desc.ExtensionType) + props := extensionProperties(e.desc) + + // If e.value has type T, the encoder expects a *struct{ X T }. + // Pass a *T with a zero field and hope it all works out. + x := reflect.New(et) + x.Elem().Set(reflect.ValueOf(e.value)) + n += props.size(props, toStructPointer(x)) + } + return +} + +// HasExtension returns whether the given extension is present in pb. +func HasExtension(pb extendableProto, extension *ExtensionDesc) bool { + // TODO: Check types, field numbers, etc.? + if epb, doki := pb.(extensionsMap); doki { + _, ok := epb.ExtensionMap()[extension.Field] + return ok + } else if epb, doki := pb.(extensionsBytes); doki { + ext := epb.GetExtensions() + buf := *ext + o := 0 + for o < len(buf) { + tag, n := DecodeVarint(buf[o:]) + fieldNum := int32(tag >> 3) + if int32(fieldNum) == extension.Field { + return true + } + wireType := int(tag & 0x7) + o += n + l, err := size(buf[o:], wireType) + if err != nil { + return false + } + o += l + } + return false + } + panic("unreachable") +} + +func deleteExtension(pb extensionsBytes, theFieldNum int32, offset int) int { + ext := pb.GetExtensions() + for offset < len(*ext) { + tag, n1 := DecodeVarint((*ext)[offset:]) + fieldNum := int32(tag >> 3) + wireType := int(tag & 0x7) + n2, err := size((*ext)[offset+n1:], wireType) + if err != nil { + panic(err) + } + newOffset := offset + n1 + n2 + if fieldNum == theFieldNum { + *ext = append((*ext)[:offset], (*ext)[newOffset:]...) + return offset + } + offset = newOffset + } + return -1 +} + +func clearExtension(pb extendableProto, fieldNum int32) { + if epb, doki := pb.(extensionsMap); doki { + delete(epb.ExtensionMap(), fieldNum) + } else if epb, doki := pb.(extensionsBytes); doki { + offset := 0 + for offset != -1 { + offset = deleteExtension(epb, fieldNum, offset) + } + } else { + panic("unreachable") + } +} + +// ClearExtension removes the given extension from pb. +func ClearExtension(pb extendableProto, extension *ExtensionDesc) { + // TODO: Check types, field numbers, etc.? + clearExtension(pb, extension.Field) +} + +// GetExtension parses and returns the given extension of pb. +// If the extension is not present it returns ErrMissingExtension. +func GetExtension(pb extendableProto, extension *ExtensionDesc) (interface{}, error) { + if err := checkExtensionTypes(pb, extension); err != nil { + return nil, err + } + + if epb, doki := pb.(extensionsMap); doki { + emap := epb.ExtensionMap() + e, ok := emap[extension.Field] + if !ok { + // defaultExtensionValue returns the default value or + // ErrMissingExtension if there is no default. + return defaultExtensionValue(extension) + } + if e.value != nil { + // Already decoded. Check the descriptor, though. + if e.desc != extension { + // This shouldn't happen. If it does, it means that + // GetExtension was called twice with two different + // descriptors with the same field number. + return nil, errors.New("proto: descriptor conflict") + } + return e.value, nil + } + + v, err := decodeExtension(e.enc, extension) + if err != nil { + return nil, err + } + + // Remember the decoded version and drop the encoded version. + // That way it is safe to mutate what we return. + e.value = v + e.desc = extension + e.enc = nil + emap[extension.Field] = e + return e.value, nil + } else if epb, doki := pb.(extensionsBytes); doki { + ext := epb.GetExtensions() + o := 0 + for o < len(*ext) { + tag, n := DecodeVarint((*ext)[o:]) + fieldNum := int32(tag >> 3) + wireType := int(tag & 0x7) + l, err := size((*ext)[o+n:], wireType) + if err != nil { + return nil, err + } + if int32(fieldNum) == extension.Field { + v, err := decodeExtension((*ext)[o:o+n+l], extension) + if err != nil { + return nil, err + } + return v, nil + } + o += n + l + } + return defaultExtensionValue(extension) + } + panic("unreachable") +} + +// defaultExtensionValue returns the default value for extension. +// If no default for an extension is defined ErrMissingExtension is returned. +func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) { + t := reflect.TypeOf(extension.ExtensionType) + props := extensionProperties(extension) + + sf, _, err := fieldDefault(t, props) + if err != nil { + return nil, err + } + + if sf == nil || sf.value == nil { + // There is no default value. + return nil, ErrMissingExtension + } + + if t.Kind() != reflect.Ptr { + // We do not need to return a Ptr, we can directly return sf.value. + return sf.value, nil + } + + // We need to return an interface{} that is a pointer to sf.value. + value := reflect.New(t).Elem() + value.Set(reflect.New(value.Type().Elem())) + if sf.kind == reflect.Int32 { + // We may have an int32 or an enum, but the underlying data is int32. + // Since we can't set an int32 into a non int32 reflect.value directly + // set it as a int32. + value.Elem().SetInt(int64(sf.value.(int32))) + } else { + value.Elem().Set(reflect.ValueOf(sf.value)) + } + return value.Interface(), nil +} + +// decodeExtension decodes an extension encoded in b. +func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) { + o := NewBuffer(b) + + t := reflect.TypeOf(extension.ExtensionType) + + props := extensionProperties(extension) + + // t is a pointer to a struct, pointer to basic type or a slice. + // Allocate a "field" to store the pointer/slice itself; the + // pointer/slice will be stored here. We pass + // the address of this field to props.dec. + // This passes a zero field and a *t and lets props.dec + // interpret it as a *struct{ x t }. + value := reflect.New(t).Elem() + + for { + // Discard wire type and field number varint. It isn't needed. + if _, err := o.DecodeVarint(); err != nil { + return nil, err + } + + if err := props.dec(o, props, toStructPointer(value.Addr())); err != nil { + return nil, err + } + + if o.index >= len(o.buf) { + break + } + } + return value.Interface(), nil +} + +// GetExtensions returns a slice of the extensions present in pb that are also listed in es. +// The returned slice has the same length as es; missing extensions will appear as nil elements. +func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) { + epb, ok := pb.(extendableProto) + if !ok { + err = errors.New("proto: not an extendable proto") + return + } + extensions = make([]interface{}, len(es)) + for i, e := range es { + extensions[i], err = GetExtension(epb, e) + if err == ErrMissingExtension { + err = nil + } + if err != nil { + return + } + } + return +} + +// SetExtension sets the specified extension of pb to the specified value. +func SetExtension(pb extendableProto, extension *ExtensionDesc, value interface{}) error { + if err := checkExtensionTypes(pb, extension); err != nil { + return err + } + typ := reflect.TypeOf(extension.ExtensionType) + if typ != reflect.TypeOf(value) { + return errors.New("proto: bad extension value type") + } + // nil extension values need to be caught early, because the + // encoder can't distinguish an ErrNil due to a nil extension + // from an ErrNil due to a missing field. Extensions are + // always optional, so the encoder would just swallow the error + // and drop all the extensions from the encoded message. + if reflect.ValueOf(value).IsNil() { + return fmt.Errorf("proto: SetExtension called with nil value of type %T", value) + } + return setExtension(pb, extension, value) +} + +func setExtension(pb extendableProto, extension *ExtensionDesc, value interface{}) error { + if epb, doki := pb.(extensionsMap); doki { + epb.ExtensionMap()[extension.Field] = Extension{desc: extension, value: value} + } else if epb, doki := pb.(extensionsBytes); doki { + ClearExtension(pb, extension) + ext := epb.GetExtensions() + et := reflect.TypeOf(extension.ExtensionType) + props := extensionProperties(extension) + p := NewBuffer(nil) + x := reflect.New(et) + x.Elem().Set(reflect.ValueOf(value)) + if err := props.enc(p, props, toStructPointer(x)); err != nil { + return err + } + *ext = append(*ext, p.buf...) + } + return nil +} + +// A global registry of extensions. +// The generated code will register the generated descriptors by calling RegisterExtension. + +var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc) + +// RegisterExtension is called from the generated code. +func RegisterExtension(desc *ExtensionDesc) { + st := reflect.TypeOf(desc.ExtendedType).Elem() + m := extensionMaps[st] + if m == nil { + m = make(map[int32]*ExtensionDesc) + extensionMaps[st] = m + } + if _, ok := m[desc.Field]; ok { + panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field))) + } + m[desc.Field] = desc +} + +// RegisteredExtensions returns a map of the registered extensions of a +// protocol buffer struct, indexed by the extension number. +// The argument pb should be a nil pointer to the struct type. +func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc { + return extensionMaps[reflect.TypeOf(pb).Elem()] +} diff --git a/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go b/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go new file mode 100644 index 0000000000..86b1fa2344 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go @@ -0,0 +1,236 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "bytes" + "errors" + "fmt" + "reflect" + "sort" + "strings" +) + +func GetBoolExtension(pb extendableProto, extension *ExtensionDesc, ifnotset bool) bool { + if reflect.ValueOf(pb).IsNil() { + return ifnotset + } + value, err := GetExtension(pb, extension) + if err != nil { + return ifnotset + } + if value == nil { + return ifnotset + } + if value.(*bool) == nil { + return ifnotset + } + return *(value.(*bool)) +} + +func (this *Extension) Equal(that *Extension) bool { + return bytes.Equal(this.enc, that.enc) +} + +func (this *Extension) Compare(that *Extension) int { + return bytes.Compare(this.enc, that.enc) +} + +func SizeOfExtensionMap(m map[int32]Extension) (n int) { + return sizeExtensionMap(m) +} + +type sortableMapElem struct { + field int32 + ext Extension +} + +func newSortableExtensionsFromMap(m map[int32]Extension) sortableExtensions { + s := make(sortableExtensions, 0, len(m)) + for k, v := range m { + s = append(s, &sortableMapElem{field: k, ext: v}) + } + return s +} + +type sortableExtensions []*sortableMapElem + +func (this sortableExtensions) Len() int { return len(this) } + +func (this sortableExtensions) Swap(i, j int) { this[i], this[j] = this[j], this[i] } + +func (this sortableExtensions) Less(i, j int) bool { return this[i].field < this[j].field } + +func (this sortableExtensions) String() string { + sort.Sort(this) + ss := make([]string, len(this)) + for i := range this { + ss[i] = fmt.Sprintf("%d: %v", this[i].field, this[i].ext) + } + return "map[" + strings.Join(ss, ",") + "]" +} + +func StringFromExtensionsMap(m map[int32]Extension) string { + return newSortableExtensionsFromMap(m).String() +} + +func StringFromExtensionsBytes(ext []byte) string { + m, err := BytesToExtensionsMap(ext) + if err != nil { + panic(err) + } + return StringFromExtensionsMap(m) +} + +func EncodeExtensionMap(m map[int32]Extension, data []byte) (n int, err error) { + if err := encodeExtensionMap(m); err != nil { + return 0, err + } + keys := make([]int, 0, len(m)) + for k := range m { + keys = append(keys, int(k)) + } + sort.Ints(keys) + for _, k := range keys { + n += copy(data[n:], m[int32(k)].enc) + } + return n, nil +} + +func GetRawExtension(m map[int32]Extension, id int32) ([]byte, error) { + if m[id].value == nil || m[id].desc == nil { + return m[id].enc, nil + } + if err := encodeExtensionMap(m); err != nil { + return nil, err + } + return m[id].enc, nil +} + +func size(buf []byte, wire int) (int, error) { + switch wire { + case WireVarint: + _, n := DecodeVarint(buf) + return n, nil + case WireFixed64: + return 8, nil + case WireBytes: + v, n := DecodeVarint(buf) + return int(v) + n, nil + case WireFixed32: + return 4, nil + case WireStartGroup: + offset := 0 + for { + u, n := DecodeVarint(buf[offset:]) + fwire := int(u & 0x7) + offset += n + if fwire == WireEndGroup { + return offset, nil + } + s, err := size(buf[offset:], wire) + if err != nil { + return 0, err + } + offset += s + } + } + return 0, fmt.Errorf("proto: can't get size for unknown wire type %d", wire) +} + +func BytesToExtensionsMap(buf []byte) (map[int32]Extension, error) { + m := make(map[int32]Extension) + i := 0 + for i < len(buf) { + tag, n := DecodeVarint(buf[i:]) + if n <= 0 { + return nil, fmt.Errorf("unable to decode varint") + } + fieldNum := int32(tag >> 3) + wireType := int(tag & 0x7) + l, err := size(buf[i+n:], wireType) + if err != nil { + return nil, err + } + end := i + int(l) + n + m[int32(fieldNum)] = Extension{enc: buf[i:end]} + i = end + } + return m, nil +} + +func NewExtension(e []byte) Extension { + ee := Extension{enc: make([]byte, len(e))} + copy(ee.enc, e) + return ee +} + +func AppendExtension(e extendableProto, tag int32, buf []byte) { + if ee, eok := e.(extensionsMap); eok { + ext := ee.ExtensionMap()[int32(tag)] // may be missing + ext.enc = append(ext.enc, buf...) + ee.ExtensionMap()[int32(tag)] = ext + } else if ee, eok := e.(extensionsBytes); eok { + ext := ee.GetExtensions() + *ext = append(*ext, buf...) + } +} + +func (this Extension) GoString() string { + if this.enc == nil { + if err := encodeExtension(&this); err != nil { + panic(err) + } + } + return fmt.Sprintf("proto.NewExtension(%#v)", this.enc) +} + +func SetUnsafeExtension(pb extendableProto, fieldNum int32, value interface{}) error { + typ := reflect.TypeOf(pb).Elem() + ext, ok := extensionMaps[typ] + if !ok { + return fmt.Errorf("proto: bad extended type; %s is not extendable", typ.String()) + } + desc, ok := ext[fieldNum] + if !ok { + return errors.New("proto: bad extension number; not in declared ranges") + } + return setExtension(pb, desc, value) +} + +func GetUnsafeExtension(pb extendableProto, fieldNum int32) (interface{}, error) { + typ := reflect.TypeOf(pb).Elem() + ext, ok := extensionMaps[typ] + if !ok { + return nil, fmt.Errorf("proto: bad extended type; %s is not extendable", typ.String()) + } + desc, ok := ext[fieldNum] + if !ok { + return nil, fmt.Errorf("unregistered field number %d", fieldNum) + } + return GetExtension(pb, desc) +} diff --git a/vendor/github.com/gogo/protobuf/proto/lib.go b/vendor/github.com/gogo/protobuf/proto/lib.go new file mode 100644 index 0000000000..2e35ae2d2a --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/lib.go @@ -0,0 +1,894 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/* +Package proto converts data structures to and from the wire format of +protocol buffers. It works in concert with the Go source code generated +for .proto files by the protocol compiler. + +A summary of the properties of the protocol buffer interface +for a protocol buffer variable v: + + - Names are turned from camel_case to CamelCase for export. + - There are no methods on v to set fields; just treat + them as structure fields. + - There are getters that return a field's value if set, + and return the field's default value if unset. + The getters work even if the receiver is a nil message. + - The zero value for a struct is its correct initialization state. + All desired fields must be set before marshaling. + - A Reset() method will restore a protobuf struct to its zero state. + - Non-repeated fields are pointers to the values; nil means unset. + That is, optional or required field int32 f becomes F *int32. + - Repeated fields are slices. + - Helper functions are available to aid the setting of fields. + msg.Foo = proto.String("hello") // set field + - Constants are defined to hold the default values of all fields that + have them. They have the form Default_StructName_FieldName. + Because the getter methods handle defaulted values, + direct use of these constants should be rare. + - Enums are given type names and maps from names to values. + Enum values are prefixed by the enclosing message's name, or by the + enum's type name if it is a top-level enum. Enum types have a String + method, and a Enum method to assist in message construction. + - Nested messages, groups and enums have type names prefixed with the name of + the surrounding message type. + - Extensions are given descriptor names that start with E_, + followed by an underscore-delimited list of the nested messages + that contain it (if any) followed by the CamelCased name of the + extension field itself. HasExtension, ClearExtension, GetExtension + and SetExtension are functions for manipulating extensions. + - Oneof field sets are given a single field in their message, + with distinguished wrapper types for each possible field value. + - Marshal and Unmarshal are functions to encode and decode the wire format. + +When the .proto file specifies `syntax="proto3"`, there are some differences: + + - Non-repeated fields of non-message type are values instead of pointers. + - Getters are only generated for message and oneof fields. + - Enum types do not get an Enum method. + +The simplest way to describe this is to see an example. +Given file test.proto, containing + + package example; + + enum FOO { X = 17; } + + message Test { + required string label = 1; + optional int32 type = 2 [default=77]; + repeated int64 reps = 3; + optional group OptionalGroup = 4 { + required string RequiredField = 5; + } + oneof union { + int32 number = 6; + string name = 7; + } + } + +The resulting file, test.pb.go, is: + + package example + + import proto "github.com/gogo/protobuf/proto" + import math "math" + + type FOO int32 + const ( + FOO_X FOO = 17 + ) + var FOO_name = map[int32]string{ + 17: "X", + } + var FOO_value = map[string]int32{ + "X": 17, + } + + func (x FOO) Enum() *FOO { + p := new(FOO) + *p = x + return p + } + func (x FOO) String() string { + return proto.EnumName(FOO_name, int32(x)) + } + func (x *FOO) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(FOO_value, data) + if err != nil { + return err + } + *x = FOO(value) + return nil + } + + type Test struct { + Label *string `protobuf:"bytes,1,req,name=label" json:"label,omitempty"` + Type *int32 `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"` + Reps []int64 `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"` + Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"` + // Types that are valid to be assigned to Union: + // *Test_Number + // *Test_Name + Union isTest_Union `protobuf_oneof:"union"` + XXX_unrecognized []byte `json:"-"` + } + func (m *Test) Reset() { *m = Test{} } + func (m *Test) String() string { return proto.CompactTextString(m) } + func (*Test) ProtoMessage() {} + + type isTest_Union interface { + isTest_Union() + } + + type Test_Number struct { + Number int32 `protobuf:"varint,6,opt,name=number"` + } + type Test_Name struct { + Name string `protobuf:"bytes,7,opt,name=name"` + } + + func (*Test_Number) isTest_Union() {} + func (*Test_Name) isTest_Union() {} + + func (m *Test) GetUnion() isTest_Union { + if m != nil { + return m.Union + } + return nil + } + const Default_Test_Type int32 = 77 + + func (m *Test) GetLabel() string { + if m != nil && m.Label != nil { + return *m.Label + } + return "" + } + + func (m *Test) GetType() int32 { + if m != nil && m.Type != nil { + return *m.Type + } + return Default_Test_Type + } + + func (m *Test) GetOptionalgroup() *Test_OptionalGroup { + if m != nil { + return m.Optionalgroup + } + return nil + } + + type Test_OptionalGroup struct { + RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"` + } + func (m *Test_OptionalGroup) Reset() { *m = Test_OptionalGroup{} } + func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) } + + func (m *Test_OptionalGroup) GetRequiredField() string { + if m != nil && m.RequiredField != nil { + return *m.RequiredField + } + return "" + } + + func (m *Test) GetNumber() int32 { + if x, ok := m.GetUnion().(*Test_Number); ok { + return x.Number + } + return 0 + } + + func (m *Test) GetName() string { + if x, ok := m.GetUnion().(*Test_Name); ok { + return x.Name + } + return "" + } + + func init() { + proto.RegisterEnum("example.FOO", FOO_name, FOO_value) + } + +To create and play with a Test object: + + package main + + import ( + "log" + + "github.com/gogo/protobuf/proto" + pb "./example.pb" + ) + + func main() { + test := &pb.Test{ + Label: proto.String("hello"), + Type: proto.Int32(17), + Reps: []int64{1, 2, 3}, + Optionalgroup: &pb.Test_OptionalGroup{ + RequiredField: proto.String("good bye"), + }, + Union: &pb.Test_Name{"fred"}, + } + data, err := proto.Marshal(test) + if err != nil { + log.Fatal("marshaling error: ", err) + } + newTest := &pb.Test{} + err = proto.Unmarshal(data, newTest) + if err != nil { + log.Fatal("unmarshaling error: ", err) + } + // Now test and newTest contain the same data. + if test.GetLabel() != newTest.GetLabel() { + log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel()) + } + // Use a type switch to determine which oneof was set. + switch u := test.Union.(type) { + case *pb.Test_Number: // u.Number contains the number. + case *pb.Test_Name: // u.Name contains the string. + } + // etc. + } +*/ +package proto + +import ( + "encoding/json" + "fmt" + "log" + "reflect" + "sort" + "strconv" + "sync" +) + +// Message is implemented by generated protocol buffer messages. +type Message interface { + Reset() + String() string + ProtoMessage() +} + +// Stats records allocation details about the protocol buffer encoders +// and decoders. Useful for tuning the library itself. +type Stats struct { + Emalloc uint64 // mallocs in encode + Dmalloc uint64 // mallocs in decode + Encode uint64 // number of encodes + Decode uint64 // number of decodes + Chit uint64 // number of cache hits + Cmiss uint64 // number of cache misses + Size uint64 // number of sizes +} + +// Set to true to enable stats collection. +const collectStats = false + +var stats Stats + +// GetStats returns a copy of the global Stats structure. +func GetStats() Stats { return stats } + +// A Buffer is a buffer manager for marshaling and unmarshaling +// protocol buffers. It may be reused between invocations to +// reduce memory usage. It is not necessary to use a Buffer; +// the global functions Marshal and Unmarshal create a +// temporary Buffer and are fine for most applications. +type Buffer struct { + buf []byte // encode/decode byte stream + index int // write point + + // pools of basic types to amortize allocation. + bools []bool + uint32s []uint32 + uint64s []uint64 + + // extra pools, only used with pointer_reflect.go + int32s []int32 + int64s []int64 + float32s []float32 + float64s []float64 +} + +// NewBuffer allocates a new Buffer and initializes its internal data to +// the contents of the argument slice. +func NewBuffer(e []byte) *Buffer { + return &Buffer{buf: e} +} + +// Reset resets the Buffer, ready for marshaling a new protocol buffer. +func (p *Buffer) Reset() { + p.buf = p.buf[0:0] // for reading/writing + p.index = 0 // for reading +} + +// SetBuf replaces the internal buffer with the slice, +// ready for unmarshaling the contents of the slice. +func (p *Buffer) SetBuf(s []byte) { + p.buf = s + p.index = 0 +} + +// Bytes returns the contents of the Buffer. +func (p *Buffer) Bytes() []byte { return p.buf } + +/* + * Helper routines for simplifying the creation of optional fields of basic type. + */ + +// Bool is a helper routine that allocates a new bool value +// to store v and returns a pointer to it. +func Bool(v bool) *bool { + return &v +} + +// Int32 is a helper routine that allocates a new int32 value +// to store v and returns a pointer to it. +func Int32(v int32) *int32 { + return &v +} + +// Int is a helper routine that allocates a new int32 value +// to store v and returns a pointer to it, but unlike Int32 +// its argument value is an int. +func Int(v int) *int32 { + p := new(int32) + *p = int32(v) + return p +} + +// Int64 is a helper routine that allocates a new int64 value +// to store v and returns a pointer to it. +func Int64(v int64) *int64 { + return &v +} + +// Float32 is a helper routine that allocates a new float32 value +// to store v and returns a pointer to it. +func Float32(v float32) *float32 { + return &v +} + +// Float64 is a helper routine that allocates a new float64 value +// to store v and returns a pointer to it. +func Float64(v float64) *float64 { + return &v +} + +// Uint32 is a helper routine that allocates a new uint32 value +// to store v and returns a pointer to it. +func Uint32(v uint32) *uint32 { + return &v +} + +// Uint64 is a helper routine that allocates a new uint64 value +// to store v and returns a pointer to it. +func Uint64(v uint64) *uint64 { + return &v +} + +// String is a helper routine that allocates a new string value +// to store v and returns a pointer to it. +func String(v string) *string { + return &v +} + +// EnumName is a helper function to simplify printing protocol buffer enums +// by name. Given an enum map and a value, it returns a useful string. +func EnumName(m map[int32]string, v int32) string { + s, ok := m[v] + if ok { + return s + } + return strconv.Itoa(int(v)) +} + +// UnmarshalJSONEnum is a helper function to simplify recovering enum int values +// from their JSON-encoded representation. Given a map from the enum's symbolic +// names to its int values, and a byte buffer containing the JSON-encoded +// value, it returns an int32 that can be cast to the enum type by the caller. +// +// The function can deal with both JSON representations, numeric and symbolic. +func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) { + if data[0] == '"' { + // New style: enums are strings. + var repr string + if err := json.Unmarshal(data, &repr); err != nil { + return -1, err + } + val, ok := m[repr] + if !ok { + return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr) + } + return val, nil + } + // Old style: enums are ints. + var val int32 + if err := json.Unmarshal(data, &val); err != nil { + return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName) + } + return val, nil +} + +// DebugPrint dumps the encoded data in b in a debugging format with a header +// including the string s. Used in testing but made available for general debugging. +func (p *Buffer) DebugPrint(s string, b []byte) { + var u uint64 + + obuf := p.buf + sindex := p.index + p.buf = b + p.index = 0 + depth := 0 + + fmt.Printf("\n--- %s ---\n", s) + +out: + for { + for i := 0; i < depth; i++ { + fmt.Print(" ") + } + + index := p.index + if index == len(p.buf) { + break + } + + op, err := p.DecodeVarint() + if err != nil { + fmt.Printf("%3d: fetching op err %v\n", index, err) + break out + } + tag := op >> 3 + wire := op & 7 + + switch wire { + default: + fmt.Printf("%3d: t=%3d unknown wire=%d\n", + index, tag, wire) + break out + + case WireBytes: + var r []byte + + r, err = p.DecodeRawBytes(false) + if err != nil { + break out + } + fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r)) + if len(r) <= 6 { + for i := 0; i < len(r); i++ { + fmt.Printf(" %.2x", r[i]) + } + } else { + for i := 0; i < 3; i++ { + fmt.Printf(" %.2x", r[i]) + } + fmt.Printf(" ..") + for i := len(r) - 3; i < len(r); i++ { + fmt.Printf(" %.2x", r[i]) + } + } + fmt.Printf("\n") + + case WireFixed32: + u, err = p.DecodeFixed32() + if err != nil { + fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err) + break out + } + fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u) + + case WireFixed64: + u, err = p.DecodeFixed64() + if err != nil { + fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err) + break out + } + fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u) + + case WireVarint: + u, err = p.DecodeVarint() + if err != nil { + fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err) + break out + } + fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u) + + case WireStartGroup: + fmt.Printf("%3d: t=%3d start\n", index, tag) + depth++ + + case WireEndGroup: + depth-- + fmt.Printf("%3d: t=%3d end\n", index, tag) + } + } + + if depth != 0 { + fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth) + } + fmt.Printf("\n") + + p.buf = obuf + p.index = sindex +} + +// SetDefaults sets unset protocol buffer fields to their default values. +// It only modifies fields that are both unset and have defined defaults. +// It recursively sets default values in any non-nil sub-messages. +func SetDefaults(pb Message) { + setDefaults(reflect.ValueOf(pb), true, false) +} + +// v is a pointer to a struct. +func setDefaults(v reflect.Value, recur, zeros bool) { + v = v.Elem() + + defaultMu.RLock() + dm, ok := defaults[v.Type()] + defaultMu.RUnlock() + if !ok { + dm = buildDefaultMessage(v.Type()) + defaultMu.Lock() + defaults[v.Type()] = dm + defaultMu.Unlock() + } + + for _, sf := range dm.scalars { + f := v.Field(sf.index) + if !f.IsNil() { + // field already set + continue + } + dv := sf.value + if dv == nil && !zeros { + // no explicit default, and don't want to set zeros + continue + } + fptr := f.Addr().Interface() // **T + // TODO: Consider batching the allocations we do here. + switch sf.kind { + case reflect.Bool: + b := new(bool) + if dv != nil { + *b = dv.(bool) + } + *(fptr.(**bool)) = b + case reflect.Float32: + f := new(float32) + if dv != nil { + *f = dv.(float32) + } + *(fptr.(**float32)) = f + case reflect.Float64: + f := new(float64) + if dv != nil { + *f = dv.(float64) + } + *(fptr.(**float64)) = f + case reflect.Int32: + // might be an enum + if ft := f.Type(); ft != int32PtrType { + // enum + f.Set(reflect.New(ft.Elem())) + if dv != nil { + f.Elem().SetInt(int64(dv.(int32))) + } + } else { + // int32 field + i := new(int32) + if dv != nil { + *i = dv.(int32) + } + *(fptr.(**int32)) = i + } + case reflect.Int64: + i := new(int64) + if dv != nil { + *i = dv.(int64) + } + *(fptr.(**int64)) = i + case reflect.String: + s := new(string) + if dv != nil { + *s = dv.(string) + } + *(fptr.(**string)) = s + case reflect.Uint8: + // exceptional case: []byte + var b []byte + if dv != nil { + db := dv.([]byte) + b = make([]byte, len(db)) + copy(b, db) + } else { + b = []byte{} + } + *(fptr.(*[]byte)) = b + case reflect.Uint32: + u := new(uint32) + if dv != nil { + *u = dv.(uint32) + } + *(fptr.(**uint32)) = u + case reflect.Uint64: + u := new(uint64) + if dv != nil { + *u = dv.(uint64) + } + *(fptr.(**uint64)) = u + default: + log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind) + } + } + + for _, ni := range dm.nested { + f := v.Field(ni) + // f is *T or []*T or map[T]*T + switch f.Kind() { + case reflect.Ptr: + if f.IsNil() { + continue + } + setDefaults(f, recur, zeros) + + case reflect.Slice: + for i := 0; i < f.Len(); i++ { + e := f.Index(i) + if e.IsNil() { + continue + } + setDefaults(e, recur, zeros) + } + + case reflect.Map: + for _, k := range f.MapKeys() { + e := f.MapIndex(k) + if e.IsNil() { + continue + } + setDefaults(e, recur, zeros) + } + } + } +} + +var ( + // defaults maps a protocol buffer struct type to a slice of the fields, + // with its scalar fields set to their proto-declared non-zero default values. + defaultMu sync.RWMutex + defaults = make(map[reflect.Type]defaultMessage) + + int32PtrType = reflect.TypeOf((*int32)(nil)) +) + +// defaultMessage represents information about the default values of a message. +type defaultMessage struct { + scalars []scalarField + nested []int // struct field index of nested messages +} + +type scalarField struct { + index int // struct field index + kind reflect.Kind // element type (the T in *T or []T) + value interface{} // the proto-declared default value, or nil +} + +// t is a struct type. +func buildDefaultMessage(t reflect.Type) (dm defaultMessage) { + sprop := GetProperties(t) + for _, prop := range sprop.Prop { + fi, ok := sprop.decoderTags.get(prop.Tag) + if !ok { + // XXX_unrecognized + continue + } + ft := t.Field(fi).Type + + sf, nested, err := fieldDefault(ft, prop) + switch { + case err != nil: + log.Print(err) + case nested: + dm.nested = append(dm.nested, fi) + case sf != nil: + sf.index = fi + dm.scalars = append(dm.scalars, *sf) + } + } + + return dm +} + +// fieldDefault returns the scalarField for field type ft. +// sf will be nil if the field can not have a default. +// nestedMessage will be true if this is a nested message. +// Note that sf.index is not set on return. +func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) { + var canHaveDefault bool + switch ft.Kind() { + case reflect.Ptr: + if ft.Elem().Kind() == reflect.Struct { + nestedMessage = true + } else { + canHaveDefault = true // proto2 scalar field + } + + case reflect.Slice: + switch ft.Elem().Kind() { + case reflect.Ptr: + nestedMessage = true // repeated message + case reflect.Uint8: + canHaveDefault = true // bytes field + } + + case reflect.Map: + if ft.Elem().Kind() == reflect.Ptr { + nestedMessage = true // map with message values + } + } + + if !canHaveDefault { + if nestedMessage { + return nil, true, nil + } + return nil, false, nil + } + + // We now know that ft is a pointer or slice. + sf = &scalarField{kind: ft.Elem().Kind()} + + // scalar fields without defaults + if !prop.HasDefault { + return sf, false, nil + } + + // a scalar field: either *T or []byte + switch ft.Elem().Kind() { + case reflect.Bool: + x, err := strconv.ParseBool(prop.Default) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err) + } + sf.value = x + case reflect.Float32: + x, err := strconv.ParseFloat(prop.Default, 32) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err) + } + sf.value = float32(x) + case reflect.Float64: + x, err := strconv.ParseFloat(prop.Default, 64) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err) + } + sf.value = x + case reflect.Int32: + x, err := strconv.ParseInt(prop.Default, 10, 32) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err) + } + sf.value = int32(x) + case reflect.Int64: + x, err := strconv.ParseInt(prop.Default, 10, 64) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err) + } + sf.value = x + case reflect.String: + sf.value = prop.Default + case reflect.Uint8: + // []byte (not *uint8) + sf.value = []byte(prop.Default) + case reflect.Uint32: + x, err := strconv.ParseUint(prop.Default, 10, 32) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err) + } + sf.value = uint32(x) + case reflect.Uint64: + x, err := strconv.ParseUint(prop.Default, 10, 64) + if err != nil { + return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err) + } + sf.value = x + default: + return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind()) + } + + return sf, false, nil +} + +// Map fields may have key types of non-float scalars, strings and enums. +// The easiest way to sort them in some deterministic order is to use fmt. +// If this turns out to be inefficient we can always consider other options, +// such as doing a Schwartzian transform. + +func mapKeys(vs []reflect.Value) sort.Interface { + s := mapKeySorter{ + vs: vs, + // default Less function: textual comparison + less: func(a, b reflect.Value) bool { + return fmt.Sprint(a.Interface()) < fmt.Sprint(b.Interface()) + }, + } + + // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps; + // numeric keys are sorted numerically. + if len(vs) == 0 { + return s + } + switch vs[0].Kind() { + case reflect.Int32, reflect.Int64: + s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() } + case reflect.Uint32, reflect.Uint64: + s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() } + } + + return s +} + +type mapKeySorter struct { + vs []reflect.Value + less func(a, b reflect.Value) bool +} + +func (s mapKeySorter) Len() int { return len(s.vs) } +func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] } +func (s mapKeySorter) Less(i, j int) bool { + return s.less(s.vs[i], s.vs[j]) +} + +// isProto3Zero reports whether v is a zero proto3 value. +func isProto3Zero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return !v.Bool() + case reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint32, reflect.Uint64: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.String: + return v.String() == "" + } + return false +} + +// ProtoPackageIsVersion1 is referenced from generated protocol buffer files +// to assert that that code is compatible with this version of the proto package. +const GoGoProtoPackageIsVersion1 = true diff --git a/vendor/github.com/gogo/protobuf/proto/lib_gogo.go b/vendor/github.com/gogo/protobuf/proto/lib_gogo.go new file mode 100644 index 0000000000..a6c2c06b23 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/lib_gogo.go @@ -0,0 +1,40 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "encoding/json" + "strconv" +) + +func MarshalJSONEnum(m map[int32]string, value int32) ([]byte, error) { + s, ok := m[value] + if !ok { + s = strconv.Itoa(int(value)) + } + return json.Marshal(s) +} diff --git a/vendor/github.com/gogo/protobuf/proto/message_set.go b/vendor/github.com/gogo/protobuf/proto/message_set.go new file mode 100644 index 0000000000..e25e01e637 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/message_set.go @@ -0,0 +1,280 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +/* + * Support for message sets. + */ + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "reflect" + "sort" +) + +// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. +// A message type ID is required for storing a protocol buffer in a message set. +var errNoMessageTypeID = errors.New("proto does not have a message type ID") + +// The first two types (_MessageSet_Item and messageSet) +// model what the protocol compiler produces for the following protocol message: +// message MessageSet { +// repeated group Item = 1 { +// required int32 type_id = 2; +// required string message = 3; +// }; +// } +// That is the MessageSet wire format. We can't use a proto to generate these +// because that would introduce a circular dependency between it and this package. + +type _MessageSet_Item struct { + TypeId *int32 `protobuf:"varint,2,req,name=type_id"` + Message []byte `protobuf:"bytes,3,req,name=message"` +} + +type messageSet struct { + Item []*_MessageSet_Item `protobuf:"group,1,rep"` + XXX_unrecognized []byte + // TODO: caching? +} + +// Make sure messageSet is a Message. +var _ Message = (*messageSet)(nil) + +// messageTypeIder is an interface satisfied by a protocol buffer type +// that may be stored in a MessageSet. +type messageTypeIder interface { + MessageTypeId() int32 +} + +func (ms *messageSet) find(pb Message) *_MessageSet_Item { + mti, ok := pb.(messageTypeIder) + if !ok { + return nil + } + id := mti.MessageTypeId() + for _, item := range ms.Item { + if *item.TypeId == id { + return item + } + } + return nil +} + +func (ms *messageSet) Has(pb Message) bool { + if ms.find(pb) != nil { + return true + } + return false +} + +func (ms *messageSet) Unmarshal(pb Message) error { + if item := ms.find(pb); item != nil { + return Unmarshal(item.Message, pb) + } + if _, ok := pb.(messageTypeIder); !ok { + return errNoMessageTypeID + } + return nil // TODO: return error instead? +} + +func (ms *messageSet) Marshal(pb Message) error { + msg, err := Marshal(pb) + if err != nil { + return err + } + if item := ms.find(pb); item != nil { + // reuse existing item + item.Message = msg + return nil + } + + mti, ok := pb.(messageTypeIder) + if !ok { + return errNoMessageTypeID + } + + mtid := mti.MessageTypeId() + ms.Item = append(ms.Item, &_MessageSet_Item{ + TypeId: &mtid, + Message: msg, + }) + return nil +} + +func (ms *messageSet) Reset() { *ms = messageSet{} } +func (ms *messageSet) String() string { return CompactTextString(ms) } +func (*messageSet) ProtoMessage() {} + +// Support for the message_set_wire_format message option. + +func skipVarint(buf []byte) []byte { + i := 0 + for ; buf[i]&0x80 != 0; i++ { + } + return buf[i+1:] +} + +// MarshalMessageSet encodes the extension map represented by m in the message set wire format. +// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option. +func MarshalMessageSet(m map[int32]Extension) ([]byte, error) { + if err := encodeExtensionMap(m); err != nil { + return nil, err + } + + // Sort extension IDs to provide a deterministic encoding. + // See also enc_map in encode.go. + ids := make([]int, 0, len(m)) + for id := range m { + ids = append(ids, int(id)) + } + sort.Ints(ids) + + ms := &messageSet{Item: make([]*_MessageSet_Item, 0, len(m))} + for _, id := range ids { + e := m[int32(id)] + // Remove the wire type and field number varint, as well as the length varint. + msg := skipVarint(skipVarint(e.enc)) + + ms.Item = append(ms.Item, &_MessageSet_Item{ + TypeId: Int32(int32(id)), + Message: msg, + }) + } + return Marshal(ms) +} + +// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. +// It is called by generated Unmarshal methods on protocol buffer messages with the message_set_wire_format option. +func UnmarshalMessageSet(buf []byte, m map[int32]Extension) error { + ms := new(messageSet) + if err := Unmarshal(buf, ms); err != nil { + return err + } + for _, item := range ms.Item { + id := *item.TypeId + msg := item.Message + + // Restore wire type and field number varint, plus length varint. + // Be careful to preserve duplicate items. + b := EncodeVarint(uint64(id)<<3 | WireBytes) + if ext, ok := m[id]; ok { + // Existing data; rip off the tag and length varint + // so we join the new data correctly. + // We can assume that ext.enc is set because we are unmarshaling. + o := ext.enc[len(b):] // skip wire type and field number + _, n := DecodeVarint(o) // calculate length of length varint + o = o[n:] // skip length varint + msg = append(o, msg...) // join old data and new data + } + b = append(b, EncodeVarint(uint64(len(msg)))...) + b = append(b, msg...) + + m[id] = Extension{enc: b} + } + return nil +} + +// MarshalMessageSetJSON encodes the extension map represented by m in JSON format. +// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option. +func MarshalMessageSetJSON(m map[int32]Extension) ([]byte, error) { + var b bytes.Buffer + b.WriteByte('{') + + // Process the map in key order for deterministic output. + ids := make([]int32, 0, len(m)) + for id := range m { + ids = append(ids, id) + } + sort.Sort(int32Slice(ids)) // int32Slice defined in text.go + + for i, id := range ids { + ext := m[id] + if i > 0 { + b.WriteByte(',') + } + + msd, ok := messageSetMap[id] + if !ok { + // Unknown type; we can't render it, so skip it. + continue + } + fmt.Fprintf(&b, `"[%s]":`, msd.name) + + x := ext.value + if x == nil { + x = reflect.New(msd.t.Elem()).Interface() + if err := Unmarshal(ext.enc, x.(Message)); err != nil { + return nil, err + } + } + d, err := json.Marshal(x) + if err != nil { + return nil, err + } + b.Write(d) + } + b.WriteByte('}') + return b.Bytes(), nil +} + +// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format. +// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option. +func UnmarshalMessageSetJSON(buf []byte, m map[int32]Extension) error { + // Common-case fast path. + if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) { + return nil + } + + // This is fairly tricky, and it's not clear that it is needed. + return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented") +} + +// A global registry of types that can be used in a MessageSet. + +var messageSetMap = make(map[int32]messageSetDesc) + +type messageSetDesc struct { + t reflect.Type // pointer to struct + name string +} + +// RegisterMessageSetType is called from the generated code. +func RegisterMessageSetType(m Message, fieldNum int32, name string) { + messageSetMap[fieldNum] = messageSetDesc{ + t: reflect.TypeOf(m), + name: name, + } +} diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go new file mode 100644 index 0000000000..e9be0fe92e --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe.go @@ -0,0 +1,266 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2012 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// +build !appengine + +// This file contains the implementation of the proto field accesses using package unsafe. + +package proto + +import ( + "reflect" + "unsafe" +) + +// NOTE: These type_Foo functions would more idiomatically be methods, +// but Go does not allow methods on pointer types, and we must preserve +// some pointer type for the garbage collector. We use these +// funcs with clunky names as our poor approximation to methods. +// +// An alternative would be +// type structPointer struct { p unsafe.Pointer } +// but that does not registerize as well. + +// A structPointer is a pointer to a struct. +type structPointer unsafe.Pointer + +// toStructPointer returns a structPointer equivalent to the given reflect value. +func toStructPointer(v reflect.Value) structPointer { + return structPointer(unsafe.Pointer(v.Pointer())) +} + +// IsNil reports whether p is nil. +func structPointer_IsNil(p structPointer) bool { + return p == nil +} + +// Interface returns the struct pointer, assumed to have element type t, +// as an interface value. +func structPointer_Interface(p structPointer, t reflect.Type) interface{} { + return reflect.NewAt(t, unsafe.Pointer(p)).Interface() +} + +// A field identifies a field in a struct, accessible from a structPointer. +// In this implementation, a field is identified by its byte offset from the start of the struct. +type field uintptr + +// toField returns a field equivalent to the given reflect field. +func toField(f *reflect.StructField) field { + return field(f.Offset) +} + +// invalidField is an invalid field identifier. +const invalidField = ^field(0) + +// IsValid reports whether the field identifier is valid. +func (f field) IsValid() bool { + return f != ^field(0) +} + +// Bytes returns the address of a []byte field in the struct. +func structPointer_Bytes(p structPointer, f field) *[]byte { + return (*[]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// BytesSlice returns the address of a [][]byte field in the struct. +func structPointer_BytesSlice(p structPointer, f field) *[][]byte { + return (*[][]byte)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// Bool returns the address of a *bool field in the struct. +func structPointer_Bool(p structPointer, f field) **bool { + return (**bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// BoolVal returns the address of a bool field in the struct. +func structPointer_BoolVal(p structPointer, f field) *bool { + return (*bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// BoolSlice returns the address of a []bool field in the struct. +func structPointer_BoolSlice(p structPointer, f field) *[]bool { + return (*[]bool)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// String returns the address of a *string field in the struct. +func structPointer_String(p structPointer, f field) **string { + return (**string)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// StringVal returns the address of a string field in the struct. +func structPointer_StringVal(p structPointer, f field) *string { + return (*string)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// StringSlice returns the address of a []string field in the struct. +func structPointer_StringSlice(p structPointer, f field) *[]string { + return (*[]string)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// ExtMap returns the address of an extension map field in the struct. +func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension { + return (*map[int32]Extension)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// NewAt returns the reflect.Value for a pointer to a field in the struct. +func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value { + return reflect.NewAt(typ, unsafe.Pointer(uintptr(p)+uintptr(f))) +} + +// SetStructPointer writes a *struct field in the struct. +func structPointer_SetStructPointer(p structPointer, f field, q structPointer) { + *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) = q +} + +// GetStructPointer reads a *struct field in the struct. +func structPointer_GetStructPointer(p structPointer, f field) structPointer { + return *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// StructPointerSlice the address of a []*struct field in the struct. +func structPointer_StructPointerSlice(p structPointer, f field) *structPointerSlice { + return (*structPointerSlice)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// A structPointerSlice represents a slice of pointers to structs (themselves submessages or groups). +type structPointerSlice []structPointer + +func (v *structPointerSlice) Len() int { return len(*v) } +func (v *structPointerSlice) Index(i int) structPointer { return (*v)[i] } +func (v *structPointerSlice) Append(p structPointer) { *v = append(*v, p) } + +// A word32 is the address of a "pointer to 32-bit value" field. +type word32 **uint32 + +// IsNil reports whether *v is nil. +func word32_IsNil(p word32) bool { + return *p == nil +} + +// Set sets *v to point at a newly allocated word set to x. +func word32_Set(p word32, o *Buffer, x uint32) { + if len(o.uint32s) == 0 { + o.uint32s = make([]uint32, uint32PoolSize) + } + o.uint32s[0] = x + *p = &o.uint32s[0] + o.uint32s = o.uint32s[1:] +} + +// Get gets the value pointed at by *v. +func word32_Get(p word32) uint32 { + return **p +} + +// Word32 returns the address of a *int32, *uint32, *float32, or *enum field in the struct. +func structPointer_Word32(p structPointer, f field) word32 { + return word32((**uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) +} + +// A word32Val is the address of a 32-bit value field. +type word32Val *uint32 + +// Set sets *p to x. +func word32Val_Set(p word32Val, x uint32) { + *p = x +} + +// Get gets the value pointed at by p. +func word32Val_Get(p word32Val) uint32 { + return *p +} + +// Word32Val returns the address of a *int32, *uint32, *float32, or *enum field in the struct. +func structPointer_Word32Val(p structPointer, f field) word32Val { + return word32Val((*uint32)(unsafe.Pointer(uintptr(p) + uintptr(f)))) +} + +// A word32Slice is a slice of 32-bit values. +type word32Slice []uint32 + +func (v *word32Slice) Append(x uint32) { *v = append(*v, x) } +func (v *word32Slice) Len() int { return len(*v) } +func (v *word32Slice) Index(i int) uint32 { return (*v)[i] } + +// Word32Slice returns the address of a []int32, []uint32, []float32, or []enum field in the struct. +func structPointer_Word32Slice(p structPointer, f field) *word32Slice { + return (*word32Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +// word64 is like word32 but for 64-bit values. +type word64 **uint64 + +func word64_Set(p word64, o *Buffer, x uint64) { + if len(o.uint64s) == 0 { + o.uint64s = make([]uint64, uint64PoolSize) + } + o.uint64s[0] = x + *p = &o.uint64s[0] + o.uint64s = o.uint64s[1:] +} + +func word64_IsNil(p word64) bool { + return *p == nil +} + +func word64_Get(p word64) uint64 { + return **p +} + +func structPointer_Word64(p structPointer, f field) word64 { + return word64((**uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) +} + +// word64Val is like word32Val but for 64-bit values. +type word64Val *uint64 + +func word64Val_Set(p word64Val, o *Buffer, x uint64) { + *p = x +} + +func word64Val_Get(p word64Val) uint64 { + return *p +} + +func structPointer_Word64Val(p structPointer, f field) word64Val { + return word64Val((*uint64)(unsafe.Pointer(uintptr(p) + uintptr(f)))) +} + +// word64Slice is like word32Slice but for 64-bit values. +type word64Slice []uint64 + +func (v *word64Slice) Append(x uint64) { *v = append(*v, x) } +func (v *word64Slice) Len() int { return len(*v) } +func (v *word64Slice) Index(i int) uint64 { return (*v)[i] } + +func structPointer_Word64Slice(p structPointer, f field) *word64Slice { + return (*word64Slice)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go new file mode 100644 index 0000000000..6bc85fa987 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go @@ -0,0 +1,108 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// +build !appengine + +// This file contains the implementation of the proto field accesses using package unsafe. + +package proto + +import ( + "reflect" + "unsafe" +) + +func structPointer_InterfaceAt(p structPointer, f field, t reflect.Type) interface{} { + point := unsafe.Pointer(uintptr(p) + uintptr(f)) + r := reflect.NewAt(t, point) + return r.Interface() +} + +func structPointer_InterfaceRef(p structPointer, f field, t reflect.Type) interface{} { + point := unsafe.Pointer(uintptr(p) + uintptr(f)) + r := reflect.NewAt(t, point) + if r.Elem().IsNil() { + return nil + } + return r.Elem().Interface() +} + +func copyUintPtr(oldptr, newptr uintptr, size int) { + oldbytes := make([]byte, 0) + oldslice := (*reflect.SliceHeader)(unsafe.Pointer(&oldbytes)) + oldslice.Data = oldptr + oldslice.Len = size + oldslice.Cap = size + newbytes := make([]byte, 0) + newslice := (*reflect.SliceHeader)(unsafe.Pointer(&newbytes)) + newslice.Data = newptr + newslice.Len = size + newslice.Cap = size + copy(newbytes, oldbytes) +} + +func structPointer_Copy(oldptr structPointer, newptr structPointer, size int) { + copyUintPtr(uintptr(oldptr), uintptr(newptr), size) +} + +func appendStructPointer(base structPointer, f field, typ reflect.Type) structPointer { + size := typ.Elem().Size() + oldHeader := structPointer_GetSliceHeader(base, f) + newLen := oldHeader.Len + 1 + slice := reflect.MakeSlice(typ, newLen, newLen) + bas := toStructPointer(slice) + for i := 0; i < oldHeader.Len; i++ { + newElemptr := uintptr(bas) + uintptr(i)*size + oldElemptr := oldHeader.Data + uintptr(i)*size + copyUintPtr(oldElemptr, newElemptr, int(size)) + } + + oldHeader.Data = uintptr(bas) + oldHeader.Len = newLen + oldHeader.Cap = newLen + + return structPointer(unsafe.Pointer(uintptr(unsafe.Pointer(bas)) + uintptr(uintptr(newLen-1)*size))) +} + +func structPointer_FieldPointer(p structPointer, f field) structPointer { + return structPointer(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +func structPointer_GetRefStructPointer(p structPointer, f field) structPointer { + return structPointer((*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f)))) +} + +func structPointer_GetSliceHeader(p structPointer, f field) *reflect.SliceHeader { + return (*reflect.SliceHeader)(unsafe.Pointer(uintptr(p) + uintptr(f))) +} + +func structPointer_Add(p structPointer, size field) structPointer { + return structPointer(unsafe.Pointer(uintptr(p) + uintptr(size))) +} + +func structPointer_Len(p structPointer, f field) int { + return len(*(*[]interface{})(unsafe.Pointer(structPointer_GetRefStructPointer(p, f)))) +} diff --git a/vendor/github.com/gogo/protobuf/proto/properties.go b/vendor/github.com/gogo/protobuf/proto/properties.go new file mode 100644 index 0000000000..5e6a0b3ba7 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/properties.go @@ -0,0 +1,923 @@ +// Extensions for Protocol Buffers to create more go like structures. +// +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +/* + * Routines for encoding data into the wire format for protocol buffers. + */ + +import ( + "fmt" + "log" + "os" + "reflect" + "sort" + "strconv" + "strings" + "sync" +) + +const debug bool = false + +// Constants that identify the encoding of a value on the wire. +const ( + WireVarint = 0 + WireFixed64 = 1 + WireBytes = 2 + WireStartGroup = 3 + WireEndGroup = 4 + WireFixed32 = 5 +) + +const startSize = 10 // initial slice/string sizes + +// Encoders are defined in encode.go +// An encoder outputs the full representation of a field, including its +// tag and encoder type. +type encoder func(p *Buffer, prop *Properties, base structPointer) error + +// A valueEncoder encodes a single integer in a particular encoding. +type valueEncoder func(o *Buffer, x uint64) error + +// Sizers are defined in encode.go +// A sizer returns the encoded size of a field, including its tag and encoder +// type. +type sizer func(prop *Properties, base structPointer) int + +// A valueSizer returns the encoded size of a single integer in a particular +// encoding. +type valueSizer func(x uint64) int + +// Decoders are defined in decode.go +// A decoder creates a value from its wire representation. +// Unrecognized subelements are saved in unrec. +type decoder func(p *Buffer, prop *Properties, base structPointer) error + +// A valueDecoder decodes a single integer in a particular encoding. +type valueDecoder func(o *Buffer) (x uint64, err error) + +// A oneofMarshaler does the marshaling for all oneof fields in a message. +type oneofMarshaler func(Message, *Buffer) error + +// A oneofUnmarshaler does the unmarshaling for a oneof field in a message. +type oneofUnmarshaler func(Message, int, int, *Buffer) (bool, error) + +// A oneofSizer does the sizing for all oneof fields in a message. +type oneofSizer func(Message) int + +// tagMap is an optimization over map[int]int for typical protocol buffer +// use-cases. Encoded protocol buffers are often in tag order with small tag +// numbers. +type tagMap struct { + fastTags []int + slowTags map[int]int +} + +// tagMapFastLimit is the upper bound on the tag number that will be stored in +// the tagMap slice rather than its map. +const tagMapFastLimit = 1024 + +func (p *tagMap) get(t int) (int, bool) { + if t > 0 && t < tagMapFastLimit { + if t >= len(p.fastTags) { + return 0, false + } + fi := p.fastTags[t] + return fi, fi >= 0 + } + fi, ok := p.slowTags[t] + return fi, ok +} + +func (p *tagMap) put(t int, fi int) { + if t > 0 && t < tagMapFastLimit { + for len(p.fastTags) < t+1 { + p.fastTags = append(p.fastTags, -1) + } + p.fastTags[t] = fi + return + } + if p.slowTags == nil { + p.slowTags = make(map[int]int) + } + p.slowTags[t] = fi +} + +// StructProperties represents properties for all the fields of a struct. +// decoderTags and decoderOrigNames should only be used by the decoder. +type StructProperties struct { + Prop []*Properties // properties for each field + reqCount int // required count + decoderTags tagMap // map from proto tag to struct field number + decoderOrigNames map[string]int // map from original name to struct field number + order []int // list of struct field numbers in tag order + unrecField field // field id of the XXX_unrecognized []byte field + extendable bool // is this an extendable proto + + oneofMarshaler oneofMarshaler + oneofUnmarshaler oneofUnmarshaler + oneofSizer oneofSizer + stype reflect.Type + + // OneofTypes contains information about the oneof fields in this message. + // It is keyed by the original name of a field. + OneofTypes map[string]*OneofProperties +} + +// OneofProperties represents information about a specific field in a oneof. +type OneofProperties struct { + Type reflect.Type // pointer to generated struct type for this oneof field + Field int // struct field number of the containing oneof in the message + Prop *Properties +} + +// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec. +// See encode.go, (*Buffer).enc_struct. + +func (sp *StructProperties) Len() int { return len(sp.order) } +func (sp *StructProperties) Less(i, j int) bool { + return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag +} +func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] } + +// Properties represents the protocol-specific behavior of a single struct field. +type Properties struct { + Name string // name of the field, for error messages + OrigName string // original name before protocol compiler (always set) + JSONName string // name to use for JSON; determined by protoc + Wire string + WireType int + Tag int + Required bool + Optional bool + Repeated bool + Packed bool // relevant for repeated primitives only + Enum string // set for enum types only + proto3 bool // whether this is known to be a proto3 field; set for []byte only + oneof bool // whether this is a oneof field + + Default string // default value + HasDefault bool // whether an explicit default was provided + CustomType string + def_uint64 uint64 + + enc encoder + valEnc valueEncoder // set for bool and numeric types only + field field + tagcode []byte // encoding of EncodeVarint((Tag<<3)|WireType) + tagbuf [8]byte + stype reflect.Type // set for struct types only + sstype reflect.Type // set for slices of structs types only + ctype reflect.Type // set for custom types only + sprop *StructProperties // set for struct types only + isMarshaler bool + isUnmarshaler bool + + mtype reflect.Type // set for map types only + mkeyprop *Properties // set for map types only + mvalprop *Properties // set for map types only + + size sizer + valSize valueSizer // set for bool and numeric types only + + dec decoder + valDec valueDecoder // set for bool and numeric types only + + // If this is a packable field, this will be the decoder for the packed version of the field. + packedDec decoder +} + +// String formats the properties in the protobuf struct field tag style. +func (p *Properties) String() string { + s := p.Wire + s = "," + s += strconv.Itoa(p.Tag) + if p.Required { + s += ",req" + } + if p.Optional { + s += ",opt" + } + if p.Repeated { + s += ",rep" + } + if p.Packed { + s += ",packed" + } + s += ",name=" + p.OrigName + if p.JSONName != p.OrigName { + s += ",json=" + p.JSONName + } + if p.proto3 { + s += ",proto3" + } + if p.oneof { + s += ",oneof" + } + if len(p.Enum) > 0 { + s += ",enum=" + p.Enum + } + if p.HasDefault { + s += ",def=" + p.Default + } + return s +} + +// Parse populates p by parsing a string in the protobuf struct field tag style. +func (p *Properties) Parse(s string) { + // "bytes,49,opt,name=foo,def=hello!" + fields := strings.Split(s, ",") // breaks def=, but handled below. + if len(fields) < 2 { + fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s) + return + } + + p.Wire = fields[0] + switch p.Wire { + case "varint": + p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeVarint + p.valDec = (*Buffer).DecodeVarint + p.valSize = sizeVarint + case "fixed32": + p.WireType = WireFixed32 + p.valEnc = (*Buffer).EncodeFixed32 + p.valDec = (*Buffer).DecodeFixed32 + p.valSize = sizeFixed32 + case "fixed64": + p.WireType = WireFixed64 + p.valEnc = (*Buffer).EncodeFixed64 + p.valDec = (*Buffer).DecodeFixed64 + p.valSize = sizeFixed64 + case "zigzag32": + p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeZigzag32 + p.valDec = (*Buffer).DecodeZigzag32 + p.valSize = sizeZigzag32 + case "zigzag64": + p.WireType = WireVarint + p.valEnc = (*Buffer).EncodeZigzag64 + p.valDec = (*Buffer).DecodeZigzag64 + p.valSize = sizeZigzag64 + case "bytes", "group": + p.WireType = WireBytes + // no numeric converter for non-numeric types + default: + fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s) + return + } + + var err error + p.Tag, err = strconv.Atoi(fields[1]) + if err != nil { + return + } + + for i := 2; i < len(fields); i++ { + f := fields[i] + switch { + case f == "req": + p.Required = true + case f == "opt": + p.Optional = true + case f == "rep": + p.Repeated = true + case f == "packed": + p.Packed = true + case strings.HasPrefix(f, "name="): + p.OrigName = f[5:] + case strings.HasPrefix(f, "json="): + p.JSONName = f[5:] + case strings.HasPrefix(f, "enum="): + p.Enum = f[5:] + case f == "proto3": + p.proto3 = true + case f == "oneof": + p.oneof = true + case strings.HasPrefix(f, "def="): + p.HasDefault = true + p.Default = f[4:] // rest of string + if i+1 < len(fields) { + // Commas aren't escaped, and def is always last. + p.Default += "," + strings.Join(fields[i+1:], ",") + break + } + case strings.HasPrefix(f, "embedded="): + p.OrigName = strings.Split(f, "=")[1] + case strings.HasPrefix(f, "customtype="): + p.CustomType = strings.Split(f, "=")[1] + } + } +} + +func logNoSliceEnc(t1, t2 reflect.Type) { + fmt.Fprintf(os.Stderr, "proto: no slice oenc for %T = []%T\n", t1, t2) +} + +var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem() + +// Initialize the fields for encoding and decoding. +func (p *Properties) setEncAndDec(typ reflect.Type, f *reflect.StructField, lockGetProp bool) { + p.enc = nil + p.dec = nil + p.size = nil + if len(p.CustomType) > 0 { + p.setCustomEncAndDec(typ) + p.setTag(lockGetProp) + return + } + switch t1 := typ; t1.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no coders for %v\n", t1) + + // proto3 scalar types + + case reflect.Bool: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_bool + p.dec = (*Buffer).dec_proto3_bool + p.size = size_proto3_bool + } else { + p.enc = (*Buffer).enc_ref_bool + p.dec = (*Buffer).dec_proto3_bool + p.size = size_ref_bool + } + case reflect.Int32: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_int32 + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_proto3_int32 + } else { + p.enc = (*Buffer).enc_ref_int32 + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_ref_int32 + } + case reflect.Uint32: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_uint32 + p.dec = (*Buffer).dec_proto3_int32 // can reuse + p.size = size_proto3_uint32 + } else { + p.enc = (*Buffer).enc_ref_uint32 + p.dec = (*Buffer).dec_proto3_int32 // can reuse + p.size = size_ref_uint32 + } + case reflect.Int64, reflect.Uint64: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_int64 + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_proto3_int64 + } else { + p.enc = (*Buffer).enc_ref_int64 + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_ref_int64 + } + case reflect.Float32: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_uint32 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_proto3_uint32 + } else { + p.enc = (*Buffer).enc_ref_uint32 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int32 + p.size = size_ref_uint32 + } + case reflect.Float64: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_int64 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_proto3_int64 + } else { + p.enc = (*Buffer).enc_ref_int64 // can just treat them as bits + p.dec = (*Buffer).dec_proto3_int64 + p.size = size_ref_int64 + } + case reflect.String: + if p.proto3 { + p.enc = (*Buffer).enc_proto3_string + p.dec = (*Buffer).dec_proto3_string + p.size = size_proto3_string + } else { + p.enc = (*Buffer).enc_ref_string + p.dec = (*Buffer).dec_proto3_string + p.size = size_ref_string + } + case reflect.Struct: + p.stype = typ + p.isMarshaler = isMarshaler(typ) + p.isUnmarshaler = isUnmarshaler(typ) + if p.Wire == "bytes" { + p.enc = (*Buffer).enc_ref_struct_message + p.dec = (*Buffer).dec_ref_struct_message + p.size = size_ref_struct_message + } else { + fmt.Fprintf(os.Stderr, "proto: no coders for struct %T\n", typ) + } + + case reflect.Ptr: + switch t2 := t1.Elem(); t2.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no encoder function for %v -> %v\n", t1, t2) + break + case reflect.Bool: + p.enc = (*Buffer).enc_bool + p.dec = (*Buffer).dec_bool + p.size = size_bool + case reflect.Int32: + p.enc = (*Buffer).enc_int32 + p.dec = (*Buffer).dec_int32 + p.size = size_int32 + case reflect.Uint32: + p.enc = (*Buffer).enc_uint32 + p.dec = (*Buffer).dec_int32 // can reuse + p.size = size_uint32 + case reflect.Int64, reflect.Uint64: + p.enc = (*Buffer).enc_int64 + p.dec = (*Buffer).dec_int64 + p.size = size_int64 + case reflect.Float32: + p.enc = (*Buffer).enc_uint32 // can just treat them as bits + p.dec = (*Buffer).dec_int32 + p.size = size_uint32 + case reflect.Float64: + p.enc = (*Buffer).enc_int64 // can just treat them as bits + p.dec = (*Buffer).dec_int64 + p.size = size_int64 + case reflect.String: + p.enc = (*Buffer).enc_string + p.dec = (*Buffer).dec_string + p.size = size_string + case reflect.Struct: + p.stype = t1.Elem() + p.isMarshaler = isMarshaler(t1) + p.isUnmarshaler = isUnmarshaler(t1) + if p.Wire == "bytes" { + p.enc = (*Buffer).enc_struct_message + p.dec = (*Buffer).dec_struct_message + p.size = size_struct_message + } else { + p.enc = (*Buffer).enc_struct_group + p.dec = (*Buffer).dec_struct_group + p.size = size_struct_group + } + } + + case reflect.Slice: + switch t2 := t1.Elem(); t2.Kind() { + default: + logNoSliceEnc(t1, t2) + break + case reflect.Bool: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_bool + p.size = size_slice_packed_bool + } else { + p.enc = (*Buffer).enc_slice_bool + p.size = size_slice_bool + } + p.dec = (*Buffer).dec_slice_bool + p.packedDec = (*Buffer).dec_slice_packed_bool + case reflect.Int32: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int32 + p.size = size_slice_packed_int32 + } else { + p.enc = (*Buffer).enc_slice_int32 + p.size = size_slice_int32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case reflect.Uint32: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_uint32 + p.size = size_slice_packed_uint32 + } else { + p.enc = (*Buffer).enc_slice_uint32 + p.size = size_slice_uint32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case reflect.Int64, reflect.Uint64: + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int64 + p.size = size_slice_packed_int64 + } else { + p.enc = (*Buffer).enc_slice_int64 + p.size = size_slice_int64 + } + p.dec = (*Buffer).dec_slice_int64 + p.packedDec = (*Buffer).dec_slice_packed_int64 + case reflect.Uint8: + p.enc = (*Buffer).enc_slice_byte + p.dec = (*Buffer).dec_slice_byte + p.size = size_slice_byte + // This is a []byte, which is either a bytes field, + // or the value of a map field. In the latter case, + // we always encode an empty []byte, so we should not + // use the proto3 enc/size funcs. + // f == nil iff this is the key/value of a map field. + if p.proto3 && f != nil { + p.enc = (*Buffer).enc_proto3_slice_byte + p.size = size_proto3_slice_byte + } + case reflect.Float32, reflect.Float64: + switch t2.Bits() { + case 32: + // can just treat them as bits + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_uint32 + p.size = size_slice_packed_uint32 + } else { + p.enc = (*Buffer).enc_slice_uint32 + p.size = size_slice_uint32 + } + p.dec = (*Buffer).dec_slice_int32 + p.packedDec = (*Buffer).dec_slice_packed_int32 + case 64: + // can just treat them as bits + if p.Packed { + p.enc = (*Buffer).enc_slice_packed_int64 + p.size = size_slice_packed_int64 + } else { + p.enc = (*Buffer).enc_slice_int64 + p.size = size_slice_int64 + } + p.dec = (*Buffer).dec_slice_int64 + p.packedDec = (*Buffer).dec_slice_packed_int64 + default: + logNoSliceEnc(t1, t2) + break + } + case reflect.String: + p.enc = (*Buffer).enc_slice_string + p.dec = (*Buffer).dec_slice_string + p.size = size_slice_string + case reflect.Ptr: + switch t3 := t2.Elem(); t3.Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T -> %T\n", t1, t2, t3) + break + case reflect.Struct: + p.stype = t2.Elem() + p.isMarshaler = isMarshaler(t2) + p.isUnmarshaler = isUnmarshaler(t2) + if p.Wire == "bytes" { + p.enc = (*Buffer).enc_slice_struct_message + p.dec = (*Buffer).dec_slice_struct_message + p.size = size_slice_struct_message + } else { + p.enc = (*Buffer).enc_slice_struct_group + p.dec = (*Buffer).dec_slice_struct_group + p.size = size_slice_struct_group + } + } + case reflect.Slice: + switch t2.Elem().Kind() { + default: + fmt.Fprintf(os.Stderr, "proto: no slice elem oenc for %T -> %T -> %T\n", t1, t2, t2.Elem()) + break + case reflect.Uint8: + p.enc = (*Buffer).enc_slice_slice_byte + p.dec = (*Buffer).dec_slice_slice_byte + p.size = size_slice_slice_byte + } + case reflect.Struct: + p.setSliceOfNonPointerStructs(t1) + } + + case reflect.Map: + p.enc = (*Buffer).enc_new_map + p.dec = (*Buffer).dec_new_map + p.size = size_new_map + + p.mtype = t1 + p.mkeyprop = &Properties{} + p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) + p.mvalprop = &Properties{} + vtype := p.mtype.Elem() + if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { + // The value type is not a message (*T) or bytes ([]byte), + // so we need encoders for the pointer to this type. + vtype = reflect.PtrTo(vtype) + } + p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) + } + p.setTag(lockGetProp) +} + +func (p *Properties) setTag(lockGetProp bool) { + // precalculate tag code + wire := p.WireType + if p.Packed { + wire = WireBytes + } + x := uint32(p.Tag)<<3 | uint32(wire) + i := 0 + for i = 0; x > 127; i++ { + p.tagbuf[i] = 0x80 | uint8(x&0x7F) + x >>= 7 + } + p.tagbuf[i] = uint8(x) + p.tagcode = p.tagbuf[0 : i+1] + + if p.stype != nil { + if lockGetProp { + p.sprop = GetProperties(p.stype) + } else { + p.sprop = getPropertiesLocked(p.stype) + } + } +} + +var ( + marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() + unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() +) + +// isMarshaler reports whether type t implements Marshaler. +func isMarshaler(t reflect.Type) bool { + return t.Implements(marshalerType) +} + +// isUnmarshaler reports whether type t implements Unmarshaler. +func isUnmarshaler(t reflect.Type) bool { + return t.Implements(unmarshalerType) +} + +// Init populates the properties from a protocol buffer struct tag. +func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) { + p.init(typ, name, tag, f, true) +} + +func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) { + // "bytes,49,opt,def=hello!" + p.Name = name + p.OrigName = name + if f != nil { + p.field = toField(f) + } + if tag == "" { + return + } + p.Parse(tag) + p.setEncAndDec(typ, f, lockGetProp) +} + +var ( + propertiesMu sync.RWMutex + propertiesMap = make(map[reflect.Type]*StructProperties) +) + +// GetProperties returns the list of properties for the type represented by t. +// t must represent a generated struct type of a protocol message. +func GetProperties(t reflect.Type) *StructProperties { + if t.Kind() != reflect.Struct { + panic("proto: type must have kind struct") + } + + // Most calls to GetProperties in a long-running program will be + // retrieving details for types we have seen before. + propertiesMu.RLock() + sprop, ok := propertiesMap[t] + propertiesMu.RUnlock() + if ok { + if collectStats { + stats.Chit++ + } + return sprop + } + + propertiesMu.Lock() + sprop = getPropertiesLocked(t) + propertiesMu.Unlock() + return sprop +} + +// getPropertiesLocked requires that propertiesMu is held. +func getPropertiesLocked(t reflect.Type) *StructProperties { + if prop, ok := propertiesMap[t]; ok { + if collectStats { + stats.Chit++ + } + return prop + } + if collectStats { + stats.Cmiss++ + } + + prop := new(StructProperties) + // in case of recursive protos, fill this in now. + propertiesMap[t] = prop + + // build properties + prop.extendable = reflect.PtrTo(t).Implements(extendableProtoType) + prop.unrecField = invalidField + prop.Prop = make([]*Properties, t.NumField()) + prop.order = make([]int, t.NumField()) + + isOneofMessage := false + for i := 0; i < t.NumField(); i++ { + f := t.Field(i) + p := new(Properties) + name := f.Name + p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false) + + if f.Name == "XXX_extensions" { // special case + if len(f.Tag.Get("protobuf")) > 0 { + p.enc = (*Buffer).enc_ext_slice_byte + p.dec = nil // not needed + p.size = size_ext_slice_byte + } else { + p.enc = (*Buffer).enc_map + p.dec = nil // not needed + p.size = size_map + } + } + if f.Name == "XXX_unrecognized" { // special case + prop.unrecField = toField(&f) + } + oneof := f.Tag.Get("protobuf_oneof") != "" // special case + if oneof { + isOneofMessage = true + } + prop.Prop[i] = p + prop.order[i] = i + if debug { + print(i, " ", f.Name, " ", t.String(), " ") + if p.Tag > 0 { + print(p.String()) + } + print("\n") + } + if p.enc == nil && !strings.HasPrefix(f.Name, "XXX_") && !oneof { + fmt.Fprintln(os.Stderr, "proto: no encoder for", f.Name, f.Type.String(), "[GetProperties]") + } + } + + // Re-order prop.order. + sort.Sort(prop) + + type oneofMessage interface { + XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) + } + if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); isOneofMessage && ok { + var oots []interface{} + prop.oneofMarshaler, prop.oneofUnmarshaler, prop.oneofSizer, oots = om.XXX_OneofFuncs() + prop.stype = t + + // Interpret oneof metadata. + prop.OneofTypes = make(map[string]*OneofProperties) + for _, oot := range oots { + oop := &OneofProperties{ + Type: reflect.ValueOf(oot).Type(), // *T + Prop: new(Properties), + } + sft := oop.Type.Elem().Field(0) + oop.Prop.Name = sft.Name + oop.Prop.Parse(sft.Tag.Get("protobuf")) + // There will be exactly one interface field that + // this new value is assignable to. + for i := 0; i < t.NumField(); i++ { + f := t.Field(i) + if f.Type.Kind() != reflect.Interface { + continue + } + if !oop.Type.AssignableTo(f.Type) { + continue + } + oop.Field = i + break + } + prop.OneofTypes[oop.Prop.OrigName] = oop + } + } + + // build required counts + // build tags + reqCount := 0 + prop.decoderOrigNames = make(map[string]int) + for i, p := range prop.Prop { + if strings.HasPrefix(p.Name, "XXX_") { + // Internal fields should not appear in tags/origNames maps. + // They are handled specially when encoding and decoding. + continue + } + if p.Required { + reqCount++ + } + prop.decoderTags.put(p.Tag, i) + prop.decoderOrigNames[p.OrigName] = i + } + prop.reqCount = reqCount + + return prop +} + +// Return the Properties object for the x[0]'th field of the structure. +func propByIndex(t reflect.Type, x []int) *Properties { + if len(x) != 1 { + fmt.Fprintf(os.Stderr, "proto: field index dimension %d (not 1) for type %s\n", len(x), t) + return nil + } + prop := GetProperties(t) + return prop.Prop[x[0]] +} + +// Get the address and type of a pointer to a struct from an interface. +func getbase(pb Message) (t reflect.Type, b structPointer, err error) { + if pb == nil { + err = ErrNil + return + } + // get the reflect type of the pointer to the struct. + t = reflect.TypeOf(pb) + // get the address of the struct. + value := reflect.ValueOf(pb) + b = toStructPointer(value) + return +} + +// A global registry of enum types. +// The generated code will register the generated maps by calling RegisterEnum. + +var enumValueMaps = make(map[string]map[string]int32) +var enumStringMaps = make(map[string]map[int32]string) + +// RegisterEnum is called from the generated code to install the enum descriptor +// maps into the global table to aid parsing text format protocol buffers. +func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) { + if _, ok := enumValueMaps[typeName]; ok { + panic("proto: duplicate enum registered: " + typeName) + } + enumValueMaps[typeName] = valueMap + if _, ok := enumStringMaps[typeName]; ok { + panic("proto: duplicate enum registered: " + typeName) + } + enumStringMaps[typeName] = unusedNameMap +} + +// EnumValueMap returns the mapping from names to integers of the +// enum type enumType, or a nil if not found. +func EnumValueMap(enumType string) map[string]int32 { + return enumValueMaps[enumType] +} + +// A registry of all linked message types. +// The string is a fully-qualified proto name ("pkg.Message"). +var ( + protoTypes = make(map[string]reflect.Type) + revProtoTypes = make(map[reflect.Type]string) +) + +// RegisterType is called from generated code and maps from the fully qualified +// proto name to the type (pointer to struct) of the protocol buffer. +func RegisterType(x Message, name string) { + if _, ok := protoTypes[name]; ok { + // TODO: Some day, make this a panic. + log.Printf("proto: duplicate proto type registered: %s", name) + return + } + t := reflect.TypeOf(x) + protoTypes[name] = t + revProtoTypes[t] = name +} + +// MessageName returns the fully-qualified proto name for the given message type. +func MessageName(x Message) string { return revProtoTypes[reflect.TypeOf(x)] } + +// MessageType returns the message type (pointer to struct) for a named message. +func MessageType(name string) reflect.Type { return protoTypes[name] } diff --git a/vendor/github.com/gogo/protobuf/proto/properties_gogo.go b/vendor/github.com/gogo/protobuf/proto/properties_gogo.go new file mode 100644 index 0000000000..8daf9f7768 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/properties_gogo.go @@ -0,0 +1,64 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "fmt" + "os" + "reflect" +) + +func (p *Properties) setCustomEncAndDec(typ reflect.Type) { + p.ctype = typ + if p.Repeated { + p.enc = (*Buffer).enc_custom_slice_bytes + p.dec = (*Buffer).dec_custom_slice_bytes + p.size = size_custom_slice_bytes + } else if typ.Kind() == reflect.Ptr { + p.enc = (*Buffer).enc_custom_bytes + p.dec = (*Buffer).dec_custom_bytes + p.size = size_custom_bytes + } else { + p.enc = (*Buffer).enc_custom_ref_bytes + p.dec = (*Buffer).dec_custom_ref_bytes + p.size = size_custom_ref_bytes + } +} + +func (p *Properties) setSliceOfNonPointerStructs(typ reflect.Type) { + t2 := typ.Elem() + p.sstype = typ + p.stype = t2 + p.isMarshaler = isMarshaler(t2) + p.isUnmarshaler = isUnmarshaler(t2) + p.enc = (*Buffer).enc_slice_ref_struct_message + p.dec = (*Buffer).dec_slice_ref_struct_message + p.size = size_slice_ref_struct_message + if p.Wire != "bytes" { + fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T \n", typ, t2) + } +} diff --git a/vendor/github.com/gogo/protobuf/proto/skip_gogo.go b/vendor/github.com/gogo/protobuf/proto/skip_gogo.go new file mode 100644 index 0000000000..4fe7e0815c --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/skip_gogo.go @@ -0,0 +1,117 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "fmt" + "io" +) + +func Skip(data []byte) (n int, err error) { + l := len(data) + index := 0 + for index < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if index >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[index] + index++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if index >= l { + return 0, io.ErrUnexpectedEOF + } + index++ + if data[index-1] < 0x80 { + break + } + } + return index, nil + case 1: + index += 8 + return index, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if index >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[index] + index++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + index += length + return index, nil + case 3: + for { + var innerWire uint64 + var start int = index + for shift := uint(0); ; shift += 7 { + if index >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[index] + index++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := Skip(data[start:]) + if err != nil { + return 0, err + } + index = start + next + } + return index, nil + case 4: + return index, nil + case 5: + index += 4 + return index, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} diff --git a/vendor/github.com/gogo/protobuf/proto/text.go b/vendor/github.com/gogo/protobuf/proto/text.go new file mode 100644 index 0000000000..b60be28ab0 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/text.go @@ -0,0 +1,805 @@ +// Extensions for Protocol Buffers to create more go like structures. +// +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +// Functions for writing the text protocol buffer format. + +import ( + "bufio" + "bytes" + "encoding" + "errors" + "fmt" + "io" + "log" + "math" + "reflect" + "sort" + "strings" +) + +var ( + newline = []byte("\n") + spaces = []byte(" ") + gtNewline = []byte(">\n") + endBraceNewline = []byte("}\n") + backslashN = []byte{'\\', 'n'} + backslashR = []byte{'\\', 'r'} + backslashT = []byte{'\\', 't'} + backslashDQ = []byte{'\\', '"'} + backslashBS = []byte{'\\', '\\'} + posInf = []byte("inf") + negInf = []byte("-inf") + nan = []byte("nan") +) + +type writer interface { + io.Writer + WriteByte(byte) error +} + +// textWriter is an io.Writer that tracks its indentation level. +type textWriter struct { + ind int + complete bool // if the current position is a complete line + compact bool // whether to write out as a one-liner + w writer +} + +func (w *textWriter) WriteString(s string) (n int, err error) { + if !strings.Contains(s, "\n") { + if !w.compact && w.complete { + w.writeIndent() + } + w.complete = false + return io.WriteString(w.w, s) + } + // WriteString is typically called without newlines, so this + // codepath and its copy are rare. We copy to avoid + // duplicating all of Write's logic here. + return w.Write([]byte(s)) +} + +func (w *textWriter) Write(p []byte) (n int, err error) { + newlines := bytes.Count(p, newline) + if newlines == 0 { + if !w.compact && w.complete { + w.writeIndent() + } + n, err = w.w.Write(p) + w.complete = false + return n, err + } + + frags := bytes.SplitN(p, newline, newlines+1) + if w.compact { + for i, frag := range frags { + if i > 0 { + if err := w.w.WriteByte(' '); err != nil { + return n, err + } + n++ + } + nn, err := w.w.Write(frag) + n += nn + if err != nil { + return n, err + } + } + return n, nil + } + + for i, frag := range frags { + if w.complete { + w.writeIndent() + } + nn, err := w.w.Write(frag) + n += nn + if err != nil { + return n, err + } + if i+1 < len(frags) { + if err := w.w.WriteByte('\n'); err != nil { + return n, err + } + n++ + } + } + w.complete = len(frags[len(frags)-1]) == 0 + return n, nil +} + +func (w *textWriter) WriteByte(c byte) error { + if w.compact && c == '\n' { + c = ' ' + } + if !w.compact && w.complete { + w.writeIndent() + } + err := w.w.WriteByte(c) + w.complete = c == '\n' + return err +} + +func (w *textWriter) indent() { w.ind++ } + +func (w *textWriter) unindent() { + if w.ind == 0 { + log.Printf("proto: textWriter unindented too far") + return + } + w.ind-- +} + +func writeName(w *textWriter, props *Properties) error { + if _, err := w.WriteString(props.OrigName); err != nil { + return err + } + if props.Wire != "group" { + return w.WriteByte(':') + } + return nil +} + +// raw is the interface satisfied by RawMessage. +type raw interface { + Bytes() []byte +} + +func writeStruct(w *textWriter, sv reflect.Value) error { + st := sv.Type() + sprops := GetProperties(st) + for i := 0; i < sv.NumField(); i++ { + fv := sv.Field(i) + props := sprops.Prop[i] + name := st.Field(i).Name + + if strings.HasPrefix(name, "XXX_") { + // There are two XXX_ fields: + // XXX_unrecognized []byte + // XXX_extensions map[int32]proto.Extension + // The first is handled here; + // the second is handled at the bottom of this function. + if name == "XXX_unrecognized" && !fv.IsNil() { + if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil { + return err + } + } + continue + } + if fv.Kind() == reflect.Ptr && fv.IsNil() { + // Field not filled in. This could be an optional field or + // a required field that wasn't filled in. Either way, there + // isn't anything we can show for it. + continue + } + if fv.Kind() == reflect.Slice && fv.IsNil() { + // Repeated field that is empty, or a bytes field that is unused. + continue + } + + if props.Repeated && fv.Kind() == reflect.Slice { + // Repeated field. + for j := 0; j < fv.Len(); j++ { + if err := writeName(w, props); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + v := fv.Index(j) + if v.Kind() == reflect.Ptr && v.IsNil() { + // A nil message in a repeated field is not valid, + // but we can handle that more gracefully than panicking. + if _, err := w.Write([]byte("\n")); err != nil { + return err + } + continue + } + if len(props.Enum) > 0 { + if err := writeEnum(w, v, props); err != nil { + return err + } + } else if err := writeAny(w, v, props); err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + } + continue + } + if fv.Kind() == reflect.Map { + // Map fields are rendered as a repeated struct with key/value fields. + keys := fv.MapKeys() + sort.Sort(mapKeys(keys)) + for _, key := range keys { + val := fv.MapIndex(key) + if err := writeName(w, props); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + // open struct + if err := w.WriteByte('<'); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte('\n'); err != nil { + return err + } + } + w.indent() + // key + if _, err := w.WriteString("key:"); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + if err := writeAny(w, key, props.mkeyprop); err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + // nil values aren't legal, but we can avoid panicking because of them. + if val.Kind() != reflect.Ptr || !val.IsNil() { + // value + if _, err := w.WriteString("value:"); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + if err := writeAny(w, val, props.mvalprop); err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + } + // close struct + w.unindent() + if err := w.WriteByte('>'); err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + } + continue + } + if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 { + // empty bytes field + continue + } + if props.proto3 && fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice { + // proto3 non-repeated scalar field; skip if zero value + if isProto3Zero(fv) { + continue + } + } + + if fv.Kind() == reflect.Interface { + // Check if it is a oneof. + if st.Field(i).Tag.Get("protobuf_oneof") != "" { + // fv is nil, or holds a pointer to generated struct. + // That generated struct has exactly one field, + // which has a protobuf struct tag. + if fv.IsNil() { + continue + } + inner := fv.Elem().Elem() // interface -> *T -> T + tag := inner.Type().Field(0).Tag.Get("protobuf") + props = new(Properties) // Overwrite the outer props var, but not its pointee. + props.Parse(tag) + // Write the value in the oneof, not the oneof itself. + fv = inner.Field(0) + + // Special case to cope with malformed messages gracefully: + // If the value in the oneof is a nil pointer, don't panic + // in writeAny. + if fv.Kind() == reflect.Ptr && fv.IsNil() { + // Use errors.New so writeAny won't render quotes. + msg := errors.New("/* nil */") + fv = reflect.ValueOf(&msg).Elem() + } + } + } + + if err := writeName(w, props); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + if b, ok := fv.Interface().(raw); ok { + if err := writeRaw(w, b.Bytes()); err != nil { + return err + } + continue + } + + if len(props.Enum) > 0 { + if err := writeEnum(w, fv, props); err != nil { + return err + } + } else if err := writeAny(w, fv, props); err != nil { + return err + } + + if err := w.WriteByte('\n'); err != nil { + return err + } + } + + // Extensions (the XXX_extensions field). + pv := sv + if pv.CanAddr() { + pv = sv.Addr() + } else { + pv = reflect.New(sv.Type()) + pv.Elem().Set(sv) + } + if pv.Type().Implements(extendableProtoType) { + if err := writeExtensions(w, pv); err != nil { + return err + } + } + + return nil +} + +// writeRaw writes an uninterpreted raw message. +func writeRaw(w *textWriter, b []byte) error { + if err := w.WriteByte('<'); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte('\n'); err != nil { + return err + } + } + w.indent() + if err := writeUnknownStruct(w, b); err != nil { + return err + } + w.unindent() + if err := w.WriteByte('>'); err != nil { + return err + } + return nil +} + +// writeAny writes an arbitrary field. +func writeAny(w *textWriter, v reflect.Value, props *Properties) error { + v = reflect.Indirect(v) + + if props != nil && len(props.CustomType) > 0 { + custom, ok := v.Interface().(Marshaler) + if ok { + data, err := custom.Marshal() + if err != nil { + return err + } + if err := writeString(w, string(data)); err != nil { + return err + } + return nil + } + } + + // Floats have special cases. + if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { + x := v.Float() + var b []byte + switch { + case math.IsInf(x, 1): + b = posInf + case math.IsInf(x, -1): + b = negInf + case math.IsNaN(x): + b = nan + } + if b != nil { + _, err := w.Write(b) + return err + } + // Other values are handled below. + } + + // We don't attempt to serialise every possible value type; only those + // that can occur in protocol buffers. + switch v.Kind() { + case reflect.Slice: + // Should only be a []byte; repeated fields are handled in writeStruct. + if err := writeString(w, string(v.Bytes())); err != nil { + return err + } + case reflect.String: + if err := writeString(w, v.String()); err != nil { + return err + } + case reflect.Struct: + // Required/optional group/message. + var bra, ket byte = '<', '>' + if props != nil && props.Wire == "group" { + bra, ket = '{', '}' + } + if err := w.WriteByte(bra); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte('\n'); err != nil { + return err + } + } + w.indent() + if tm, ok := v.Interface().(encoding.TextMarshaler); ok { + text, err := tm.MarshalText() + if err != nil { + return err + } + if _, err = w.Write(text); err != nil { + return err + } + } else if err := writeStruct(w, v); err != nil { + return err + } + w.unindent() + if err := w.WriteByte(ket); err != nil { + return err + } + default: + _, err := fmt.Fprint(w, v.Interface()) + return err + } + return nil +} + +// equivalent to C's isprint. +func isprint(c byte) bool { + return c >= 0x20 && c < 0x7f +} + +// writeString writes a string in the protocol buffer text format. +// It is similar to strconv.Quote except we don't use Go escape sequences, +// we treat the string as a byte sequence, and we use octal escapes. +// These differences are to maintain interoperability with the other +// languages' implementations of the text format. +func writeString(w *textWriter, s string) error { + // use WriteByte here to get any needed indent + if err := w.WriteByte('"'); err != nil { + return err + } + // Loop over the bytes, not the runes. + for i := 0; i < len(s); i++ { + var err error + // Divergence from C++: we don't escape apostrophes. + // There's no need to escape them, and the C++ parser + // copes with a naked apostrophe. + switch c := s[i]; c { + case '\n': + _, err = w.w.Write(backslashN) + case '\r': + _, err = w.w.Write(backslashR) + case '\t': + _, err = w.w.Write(backslashT) + case '"': + _, err = w.w.Write(backslashDQ) + case '\\': + _, err = w.w.Write(backslashBS) + default: + if isprint(c) { + err = w.w.WriteByte(c) + } else { + _, err = fmt.Fprintf(w.w, "\\%03o", c) + } + } + if err != nil { + return err + } + } + return w.WriteByte('"') +} + +func writeUnknownStruct(w *textWriter, data []byte) (err error) { + if !w.compact { + if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil { + return err + } + } + b := NewBuffer(data) + for b.index < len(b.buf) { + x, err := b.DecodeVarint() + if err != nil { + _, ferr := fmt.Fprintf(w, "/* %v */\n", err) + return ferr + } + wire, tag := x&7, x>>3 + if wire == WireEndGroup { + w.unindent() + if _, werr := w.Write(endBraceNewline); werr != nil { + return werr + } + continue + } + if _, ferr := fmt.Fprint(w, tag); ferr != nil { + return ferr + } + if wire != WireStartGroup { + if err = w.WriteByte(':'); err != nil { + return err + } + } + if !w.compact || wire == WireStartGroup { + if err = w.WriteByte(' '); err != nil { + return err + } + } + switch wire { + case WireBytes: + buf, e := b.DecodeRawBytes(false) + if e == nil { + _, err = fmt.Fprintf(w, "%q", buf) + } else { + _, err = fmt.Fprintf(w, "/* %v */", e) + } + case WireFixed32: + x, err = b.DecodeFixed32() + err = writeUnknownInt(w, x, err) + case WireFixed64: + x, err = b.DecodeFixed64() + err = writeUnknownInt(w, x, err) + case WireStartGroup: + err = w.WriteByte('{') + w.indent() + case WireVarint: + x, err = b.DecodeVarint() + err = writeUnknownInt(w, x, err) + default: + _, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire) + } + if err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + } + return nil +} + +func writeUnknownInt(w *textWriter, x uint64, err error) error { + if err == nil { + _, err = fmt.Fprint(w, x) + } else { + _, err = fmt.Fprintf(w, "/* %v */", err) + } + return err +} + +type int32Slice []int32 + +func (s int32Slice) Len() int { return len(s) } +func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } +func (s int32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// writeExtensions writes all the extensions in pv. +// pv is assumed to be a pointer to a protocol message struct that is extendable. +func writeExtensions(w *textWriter, pv reflect.Value) error { + emap := extensionMaps[pv.Type().Elem()] + ep := pv.Interface().(extendableProto) + + // Order the extensions by ID. + // This isn't strictly necessary, but it will give us + // canonical output, which will also make testing easier. + var m map[int32]Extension + if em, ok := ep.(extensionsMap); ok { + m = em.ExtensionMap() + } else if em, ok := ep.(extensionsBytes); ok { + eb := em.GetExtensions() + var err error + m, err = BytesToExtensionsMap(*eb) + if err != nil { + return err + } + } + + ids := make([]int32, 0, len(m)) + for id := range m { + ids = append(ids, id) + } + sort.Sort(int32Slice(ids)) + + for _, extNum := range ids { + ext := m[extNum] + var desc *ExtensionDesc + if emap != nil { + desc = emap[extNum] + } + if desc == nil { + // Unknown extension. + if err := writeUnknownStruct(w, ext.enc); err != nil { + return err + } + continue + } + + pb, err := GetExtension(ep, desc) + if err != nil { + return fmt.Errorf("failed getting extension: %v", err) + } + + // Repeated extensions will appear as a slice. + if !desc.repeated() { + if err := writeExtension(w, desc.Name, pb); err != nil { + return err + } + } else { + v := reflect.ValueOf(pb) + for i := 0; i < v.Len(); i++ { + if err := writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil { + return err + } + } + } + } + return nil +} + +func writeExtension(w *textWriter, name string, pb interface{}) error { + if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil { + return err + } + if !w.compact { + if err := w.WriteByte(' '); err != nil { + return err + } + } + if err := writeAny(w, reflect.ValueOf(pb), nil); err != nil { + return err + } + if err := w.WriteByte('\n'); err != nil { + return err + } + return nil +} + +func (w *textWriter) writeIndent() { + if !w.complete { + return + } + remain := w.ind * 2 + for remain > 0 { + n := remain + if n > len(spaces) { + n = len(spaces) + } + w.w.Write(spaces[:n]) + remain -= n + } + w.complete = false +} + +// TextMarshaler is a configurable text format marshaler. +type TextMarshaler struct { + Compact bool // use compact text format (one line). +} + +// Marshal writes a given protocol buffer in text format. +// The only errors returned are from w. +func (m *TextMarshaler) Marshal(w io.Writer, pb Message) error { + val := reflect.ValueOf(pb) + if pb == nil || val.IsNil() { + w.Write([]byte("")) + return nil + } + var bw *bufio.Writer + ww, ok := w.(writer) + if !ok { + bw = bufio.NewWriter(w) + ww = bw + } + aw := &textWriter{ + w: ww, + complete: true, + compact: m.Compact, + } + + if tm, ok := pb.(encoding.TextMarshaler); ok { + text, err := tm.MarshalText() + if err != nil { + return err + } + if _, err = aw.Write(text); err != nil { + return err + } + if bw != nil { + return bw.Flush() + } + return nil + } + // Dereference the received pointer so we don't have outer < and >. + v := reflect.Indirect(val) + if err := writeStruct(aw, v); err != nil { + return err + } + if bw != nil { + return bw.Flush() + } + return nil +} + +// Text is the same as Marshal, but returns the string directly. +func (m *TextMarshaler) Text(pb Message) string { + var buf bytes.Buffer + m.Marshal(&buf, pb) + return buf.String() +} + +var ( + defaultTextMarshaler = TextMarshaler{} + compactTextMarshaler = TextMarshaler{Compact: true} +) + +// TODO: consider removing some of the Marshal functions below. + +// MarshalText writes a given protocol buffer in text format. +// The only errors returned are from w. +func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) } + +// MarshalTextString is the same as MarshalText, but returns the string directly. +func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) } + +// CompactText writes a given protocol buffer in compact text format (one line). +func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) } + +// CompactTextString is the same as CompactText, but returns the string directly. +func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) } diff --git a/vendor/github.com/gogo/protobuf/proto/text_gogo.go b/vendor/github.com/gogo/protobuf/proto/text_gogo.go new file mode 100644 index 0000000000..cdb23373c3 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/text_gogo.go @@ -0,0 +1,55 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "fmt" + "reflect" +) + +func writeEnum(w *textWriter, v reflect.Value, props *Properties) error { + m, ok := enumStringMaps[props.Enum] + if !ok { + if err := writeAny(w, v, props); err != nil { + return err + } + } + key := int32(0) + if v.Kind() == reflect.Ptr { + key = int32(v.Elem().Int()) + } else { + key = int32(v.Int()) + } + s, ok := m[key] + if !ok { + if err := writeAny(w, v, props); err != nil { + return err + } + } + _, err := fmt.Fprint(w, s) + return err +} diff --git a/vendor/github.com/gogo/protobuf/proto/text_parser.go b/vendor/github.com/gogo/protobuf/proto/text_parser.go new file mode 100644 index 0000000000..61b4bc8cc8 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/text_parser.go @@ -0,0 +1,849 @@ +// Extensions for Protocol Buffers to create more go like structures. +// +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf/gogoproto +// +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2010 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +// Functions for parsing the Text protocol buffer format. +// TODO: message sets. + +import ( + "encoding" + "errors" + "fmt" + "reflect" + "strconv" + "strings" + "unicode/utf8" +) + +type ParseError struct { + Message string + Line int // 1-based line number + Offset int // 0-based byte offset from start of input +} + +func (p *ParseError) Error() string { + if p.Line == 1 { + // show offset only for first line + return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message) + } + return fmt.Sprintf("line %d: %v", p.Line, p.Message) +} + +type token struct { + value string + err *ParseError + line int // line number + offset int // byte number from start of input, not start of line + unquoted string // the unquoted version of value, if it was a quoted string +} + +func (t *token) String() string { + if t.err == nil { + return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset) + } + return fmt.Sprintf("parse error: %v", t.err) +} + +type textParser struct { + s string // remaining input + done bool // whether the parsing is finished (success or error) + backed bool // whether back() was called + offset, line int + cur token +} + +func newTextParser(s string) *textParser { + p := new(textParser) + p.s = s + p.line = 1 + p.cur.line = 1 + return p +} + +func (p *textParser) errorf(format string, a ...interface{}) *ParseError { + pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset} + p.cur.err = pe + p.done = true + return pe +} + +// Numbers and identifiers are matched by [-+._A-Za-z0-9] +func isIdentOrNumberChar(c byte) bool { + switch { + case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z': + return true + case '0' <= c && c <= '9': + return true + } + switch c { + case '-', '+', '.', '_': + return true + } + return false +} + +func isWhitespace(c byte) bool { + switch c { + case ' ', '\t', '\n', '\r': + return true + } + return false +} + +func isQuote(c byte) bool { + switch c { + case '"', '\'': + return true + } + return false +} + +func (p *textParser) skipWhitespace() { + i := 0 + for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') { + if p.s[i] == '#' { + // comment; skip to end of line or input + for i < len(p.s) && p.s[i] != '\n' { + i++ + } + if i == len(p.s) { + break + } + } + if p.s[i] == '\n' { + p.line++ + } + i++ + } + p.offset += i + p.s = p.s[i:len(p.s)] + if len(p.s) == 0 { + p.done = true + } +} + +func (p *textParser) advance() { + // Skip whitespace + p.skipWhitespace() + if p.done { + return + } + + // Start of non-whitespace + p.cur.err = nil + p.cur.offset, p.cur.line = p.offset, p.line + p.cur.unquoted = "" + switch p.s[0] { + case '<', '>', '{', '}', ':', '[', ']', ';', ',': + // Single symbol + p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)] + case '"', '\'': + // Quoted string + i := 1 + for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' { + if p.s[i] == '\\' && i+1 < len(p.s) { + // skip escaped char + i++ + } + i++ + } + if i >= len(p.s) || p.s[i] != p.s[0] { + p.errorf("unmatched quote") + return + } + unq, err := unquoteC(p.s[1:i], rune(p.s[0])) + if err != nil { + p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err) + return + } + p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)] + p.cur.unquoted = unq + default: + i := 0 + for i < len(p.s) && isIdentOrNumberChar(p.s[i]) { + i++ + } + if i == 0 { + p.errorf("unexpected byte %#x", p.s[0]) + return + } + p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)] + } + p.offset += len(p.cur.value) +} + +var ( + errBadUTF8 = errors.New("proto: bad UTF-8") + errBadHex = errors.New("proto: bad hexadecimal") +) + +func unquoteC(s string, quote rune) (string, error) { + // This is based on C++'s tokenizer.cc. + // Despite its name, this is *not* parsing C syntax. + // For instance, "\0" is an invalid quoted string. + + // Avoid allocation in trivial cases. + simple := true + for _, r := range s { + if r == '\\' || r == quote { + simple = false + break + } + } + if simple { + return s, nil + } + + buf := make([]byte, 0, 3*len(s)/2) + for len(s) > 0 { + r, n := utf8.DecodeRuneInString(s) + if r == utf8.RuneError && n == 1 { + return "", errBadUTF8 + } + s = s[n:] + if r != '\\' { + if r < utf8.RuneSelf { + buf = append(buf, byte(r)) + } else { + buf = append(buf, string(r)...) + } + continue + } + + ch, tail, err := unescape(s) + if err != nil { + return "", err + } + buf = append(buf, ch...) + s = tail + } + return string(buf), nil +} + +func unescape(s string) (ch string, tail string, err error) { + r, n := utf8.DecodeRuneInString(s) + if r == utf8.RuneError && n == 1 { + return "", "", errBadUTF8 + } + s = s[n:] + switch r { + case 'a': + return "\a", s, nil + case 'b': + return "\b", s, nil + case 'f': + return "\f", s, nil + case 'n': + return "\n", s, nil + case 'r': + return "\r", s, nil + case 't': + return "\t", s, nil + case 'v': + return "\v", s, nil + case '?': + return "?", s, nil // trigraph workaround + case '\'', '"', '\\': + return string(r), s, nil + case '0', '1', '2', '3', '4', '5', '6', '7', 'x', 'X': + if len(s) < 2 { + return "", "", fmt.Errorf(`\%c requires 2 following digits`, r) + } + base := 8 + ss := s[:2] + s = s[2:] + if r == 'x' || r == 'X' { + base = 16 + } else { + ss = string(r) + ss + } + i, err := strconv.ParseUint(ss, base, 8) + if err != nil { + return "", "", err + } + return string([]byte{byte(i)}), s, nil + case 'u', 'U': + n := 4 + if r == 'U' { + n = 8 + } + if len(s) < n { + return "", "", fmt.Errorf(`\%c requires %d digits`, r, n) + } + + bs := make([]byte, n/2) + for i := 0; i < n; i += 2 { + a, ok1 := unhex(s[i]) + b, ok2 := unhex(s[i+1]) + if !ok1 || !ok2 { + return "", "", errBadHex + } + bs[i/2] = a<<4 | b + } + s = s[n:] + return string(bs), s, nil + } + return "", "", fmt.Errorf(`unknown escape \%c`, r) +} + +// Adapted from src/pkg/strconv/quote.go. +func unhex(b byte) (v byte, ok bool) { + switch { + case '0' <= b && b <= '9': + return b - '0', true + case 'a' <= b && b <= 'f': + return b - 'a' + 10, true + case 'A' <= b && b <= 'F': + return b - 'A' + 10, true + } + return 0, false +} + +// Back off the parser by one token. Can only be done between calls to next(). +// It makes the next advance() a no-op. +func (p *textParser) back() { p.backed = true } + +// Advances the parser and returns the new current token. +func (p *textParser) next() *token { + if p.backed || p.done { + p.backed = false + return &p.cur + } + p.advance() + if p.done { + p.cur.value = "" + } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) { + // Look for multiple quoted strings separated by whitespace, + // and concatenate them. + cat := p.cur + for { + p.skipWhitespace() + if p.done || !isQuote(p.s[0]) { + break + } + p.advance() + if p.cur.err != nil { + return &p.cur + } + cat.value += " " + p.cur.value + cat.unquoted += p.cur.unquoted + } + p.done = false // parser may have seen EOF, but we want to return cat + p.cur = cat + } + return &p.cur +} + +func (p *textParser) consumeToken(s string) error { + tok := p.next() + if tok.err != nil { + return tok.err + } + if tok.value != s { + p.back() + return p.errorf("expected %q, found %q", s, tok.value) + } + return nil +} + +// Return a RequiredNotSetError indicating which required field was not set. +func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError { + st := sv.Type() + sprops := GetProperties(st) + for i := 0; i < st.NumField(); i++ { + if !isNil(sv.Field(i)) { + continue + } + + props := sprops.Prop[i] + if props.Required { + return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)} + } + } + return &RequiredNotSetError{fmt.Sprintf("%v.", st)} // should not happen +} + +// Returns the index in the struct for the named field, as well as the parsed tag properties. +func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) { + i, ok := sprops.decoderOrigNames[name] + if ok { + return i, sprops.Prop[i], true + } + return -1, nil, false +} + +// Consume a ':' from the input stream (if the next token is a colon), +// returning an error if a colon is needed but not present. +func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError { + tok := p.next() + if tok.err != nil { + return tok.err + } + if tok.value != ":" { + // Colon is optional when the field is a group or message. + needColon := true + switch props.Wire { + case "group": + needColon = false + case "bytes": + // A "bytes" field is either a message, a string, or a repeated field; + // those three become *T, *string and []T respectively, so we can check for + // this field being a pointer to a non-string. + if typ.Kind() == reflect.Ptr { + // *T or *string + if typ.Elem().Kind() == reflect.String { + break + } + } else if typ.Kind() == reflect.Slice { + // []T or []*T + if typ.Elem().Kind() != reflect.Ptr { + break + } + } else if typ.Kind() == reflect.String { + // The proto3 exception is for a string field, + // which requires a colon. + break + } + needColon = false + } + if needColon { + return p.errorf("expected ':', found %q", tok.value) + } + p.back() + } + return nil +} + +func (p *textParser) readStruct(sv reflect.Value, terminator string) error { + st := sv.Type() + sprops := GetProperties(st) + reqCount := sprops.reqCount + var reqFieldErr error + fieldSet := make(map[string]bool) + // A struct is a sequence of "name: value", terminated by one of + // '>' or '}', or the end of the input. A name may also be + // "[extension]". + for { + tok := p.next() + if tok.err != nil { + return tok.err + } + if tok.value == terminator { + break + } + if tok.value == "[" { + // Looks like an extension. + // + // TODO: Check whether we need to handle + // namespace rooted names (e.g. ".something.Foo"). + tok = p.next() + if tok.err != nil { + return tok.err + } + var desc *ExtensionDesc + // This could be faster, but it's functional. + // TODO: Do something smarter than a linear scan. + for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) { + if d.Name == tok.value { + desc = d + break + } + } + if desc == nil { + return p.errorf("unrecognized extension %q", tok.value) + } + // Check the extension terminator. + tok = p.next() + if tok.err != nil { + return tok.err + } + if tok.value != "]" { + return p.errorf("unrecognized extension terminator %q", tok.value) + } + + props := &Properties{} + props.Parse(desc.Tag) + + typ := reflect.TypeOf(desc.ExtensionType) + if err := p.checkForColon(props, typ); err != nil { + return err + } + + rep := desc.repeated() + + // Read the extension structure, and set it in + // the value we're constructing. + var ext reflect.Value + if !rep { + ext = reflect.New(typ).Elem() + } else { + ext = reflect.New(typ.Elem()).Elem() + } + if err := p.readAny(ext, props); err != nil { + if _, ok := err.(*RequiredNotSetError); !ok { + return err + } + reqFieldErr = err + } + ep := sv.Addr().Interface().(extendableProto) + if !rep { + SetExtension(ep, desc, ext.Interface()) + } else { + old, err := GetExtension(ep, desc) + var sl reflect.Value + if err == nil { + sl = reflect.ValueOf(old) // existing slice + } else { + sl = reflect.MakeSlice(typ, 0, 1) + } + sl = reflect.Append(sl, ext) + SetExtension(ep, desc, sl.Interface()) + } + if err := p.consumeOptionalSeparator(); err != nil { + return err + } + continue + } + + // This is a normal, non-extension field. + name := tok.value + var dst reflect.Value + fi, props, ok := structFieldByName(sprops, name) + if ok { + dst = sv.Field(fi) + } else if oop, ok := sprops.OneofTypes[name]; ok { + // It is a oneof. + props = oop.Prop + nv := reflect.New(oop.Type.Elem()) + dst = nv.Elem().Field(0) + sv.Field(oop.Field).Set(nv) + } + if !dst.IsValid() { + return p.errorf("unknown field name %q in %v", name, st) + } + + if dst.Kind() == reflect.Map { + // Consume any colon. + if err := p.checkForColon(props, dst.Type()); err != nil { + return err + } + + // Construct the map if it doesn't already exist. + if dst.IsNil() { + dst.Set(reflect.MakeMap(dst.Type())) + } + key := reflect.New(dst.Type().Key()).Elem() + val := reflect.New(dst.Type().Elem()).Elem() + + // The map entry should be this sequence of tokens: + // < key : KEY value : VALUE > + // Technically the "key" and "value" could come in any order, + // but in practice they won't. + + tok := p.next() + var terminator string + switch tok.value { + case "<": + terminator = ">" + case "{": + terminator = "}" + default: + return p.errorf("expected '{' or '<', found %q", tok.value) + } + if err := p.consumeToken("key"); err != nil { + return err + } + if err := p.consumeToken(":"); err != nil { + return err + } + if err := p.readAny(key, props.mkeyprop); err != nil { + return err + } + if err := p.consumeOptionalSeparator(); err != nil { + return err + } + if err := p.consumeToken("value"); err != nil { + return err + } + if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { + return err + } + if err := p.readAny(val, props.mvalprop); err != nil { + return err + } + if err := p.consumeOptionalSeparator(); err != nil { + return err + } + if err := p.consumeToken(terminator); err != nil { + return err + } + + dst.SetMapIndex(key, val) + continue + } + + // Check that it's not already set if it's not a repeated field. + if !props.Repeated && fieldSet[name] { + return p.errorf("non-repeated field %q was repeated", name) + } + + if err := p.checkForColon(props, dst.Type()); err != nil { + return err + } + + // Parse into the field. + fieldSet[name] = true + if err := p.readAny(dst, props); err != nil { + if _, ok := err.(*RequiredNotSetError); !ok { + return err + } + reqFieldErr = err + } else if props.Required { + reqCount-- + } + + if err := p.consumeOptionalSeparator(); err != nil { + return err + } + + } + + if reqCount > 0 { + return p.missingRequiredFieldError(sv) + } + return reqFieldErr +} + +// consumeOptionalSeparator consumes an optional semicolon or comma. +// It is used in readStruct to provide backward compatibility. +func (p *textParser) consumeOptionalSeparator() error { + tok := p.next() + if tok.err != nil { + return tok.err + } + if tok.value != ";" && tok.value != "," { + p.back() + } + return nil +} + +func (p *textParser) readAny(v reflect.Value, props *Properties) error { + tok := p.next() + if tok.err != nil { + return tok.err + } + if tok.value == "" { + return p.errorf("unexpected EOF") + } + if len(props.CustomType) > 0 { + if props.Repeated { + t := reflect.TypeOf(v.Interface()) + if t.Kind() == reflect.Slice { + tc := reflect.TypeOf(new(Marshaler)) + ok := t.Elem().Implements(tc.Elem()) + if ok { + fv := v + flen := fv.Len() + if flen == fv.Cap() { + nav := reflect.MakeSlice(v.Type(), flen, 2*flen+1) + reflect.Copy(nav, fv) + fv.Set(nav) + } + fv.SetLen(flen + 1) + + // Read one. + p.back() + return p.readAny(fv.Index(flen), props) + } + } + } + if reflect.TypeOf(v.Interface()).Kind() == reflect.Ptr { + custom := reflect.New(props.ctype.Elem()).Interface().(Unmarshaler) + err := custom.Unmarshal([]byte(tok.unquoted)) + if err != nil { + return p.errorf("%v %v: %v", err, v.Type(), tok.value) + } + v.Set(reflect.ValueOf(custom)) + } else { + custom := reflect.New(reflect.TypeOf(v.Interface())).Interface().(Unmarshaler) + err := custom.Unmarshal([]byte(tok.unquoted)) + if err != nil { + return p.errorf("%v %v: %v", err, v.Type(), tok.value) + } + v.Set(reflect.Indirect(reflect.ValueOf(custom))) + } + return nil + } + switch fv := v; fv.Kind() { + case reflect.Slice: + at := v.Type() + if at.Elem().Kind() == reflect.Uint8 { + // Special case for []byte + if tok.value[0] != '"' && tok.value[0] != '\'' { + // Deliberately written out here, as the error after + // this switch statement would write "invalid []byte: ...", + // which is not as user-friendly. + return p.errorf("invalid string: %v", tok.value) + } + bytes := []byte(tok.unquoted) + fv.Set(reflect.ValueOf(bytes)) + return nil + } + // Repeated field. + if tok.value == "[" { + // Repeated field with list notation, like [1,2,3]. + for { + fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) + err := p.readAny(fv.Index(fv.Len()-1), props) + if err != nil { + return err + } + ntok := p.next() + if ntok.err != nil { + return ntok.err + } + if ntok.value == "]" { + break + } + if ntok.value != "," { + return p.errorf("Expected ']' or ',' found %q", ntok.value) + } + } + return nil + } + // One value of the repeated field. + p.back() + fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem())) + return p.readAny(fv.Index(fv.Len()-1), props) + case reflect.Bool: + // Either "true", "false", 1 or 0. + switch tok.value { + case "true", "1": + fv.SetBool(true) + return nil + case "false", "0": + fv.SetBool(false) + return nil + } + case reflect.Float32, reflect.Float64: + v := tok.value + // Ignore 'f' for compatibility with output generated by C++, but don't + // remove 'f' when the value is "-inf" or "inf". + if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" { + v = v[:len(v)-1] + } + if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil { + fv.SetFloat(f) + return nil + } + case reflect.Int32: + if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { + fv.SetInt(x) + return nil + } + + if len(props.Enum) == 0 { + break + } + m, ok := enumValueMaps[props.Enum] + if !ok { + break + } + x, ok := m[tok.value] + if !ok { + break + } + fv.SetInt(int64(x)) + return nil + case reflect.Int64: + if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil { + fv.SetInt(x) + return nil + } + + case reflect.Ptr: + // A basic field (indirected through pointer), or a repeated message/group + p.back() + fv.Set(reflect.New(fv.Type().Elem())) + return p.readAny(fv.Elem(), props) + case reflect.String: + if tok.value[0] == '"' || tok.value[0] == '\'' { + fv.SetString(tok.unquoted) + return nil + } + case reflect.Struct: + var terminator string + switch tok.value { + case "{": + terminator = "}" + case "<": + terminator = ">" + default: + return p.errorf("expected '{' or '<', found %q", tok.value) + } + // TODO: Handle nested messages which implement encoding.TextUnmarshaler. + return p.readStruct(fv, terminator) + case reflect.Uint32: + if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { + fv.SetUint(uint64(x)) + return nil + } + case reflect.Uint64: + if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil { + fv.SetUint(x) + return nil + } + } + return p.errorf("invalid %v: %v", v.Type(), tok.value) +} + +// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb +// before starting to unmarshal, so any existing data in pb is always removed. +// If a required field is not set and no other error occurs, +// UnmarshalText returns *RequiredNotSetError. +func UnmarshalText(s string, pb Message) error { + if um, ok := pb.(encoding.TextUnmarshaler); ok { + err := um.UnmarshalText([]byte(s)) + return err + } + pb.Reset() + v := reflect.ValueOf(pb) + if pe := newTextParser(s).readStruct(v.Elem(), ""); pe != nil { + return pe + } + return nil +} diff --git a/vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go b/vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go new file mode 100644 index 0000000000..c52878dd59 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/sortkeys/sortkeys.go @@ -0,0 +1,99 @@ +// Copyright (c) 2013, Vastech SA (PTY) LTD. All rights reserved. +// http://github.com/gogo/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package sortkeys + +import ( + "sort" +) + +func Strings(l []string) { + sort.Strings(l) +} + +func Float64s(l []float64) { + sort.Float64s(l) +} + +func Float32s(l []float32) { + sort.Sort(Float32Slice(l)) +} + +func Int64s(l []int64) { + sort.Sort(Int64Slice(l)) +} + +func Int32s(l []int32) { + sort.Sort(Int32Slice(l)) +} + +func Uint64s(l []uint64) { + sort.Sort(Uint64Slice(l)) +} + +func Uint32s(l []uint32) { + sort.Sort(Uint32Slice(l)) +} + +func Bools(l []bool) { + sort.Sort(BoolSlice(l)) +} + +type BoolSlice []bool + +func (p BoolSlice) Len() int { return len(p) } +func (p BoolSlice) Less(i, j int) bool { return p[j] } +func (p BoolSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +type Int64Slice []int64 + +func (p Int64Slice) Len() int { return len(p) } +func (p Int64Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p Int64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +type Int32Slice []int32 + +func (p Int32Slice) Len() int { return len(p) } +func (p Int32Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p Int32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +type Uint64Slice []uint64 + +func (p Uint64Slice) Len() int { return len(p) } +func (p Uint64Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p Uint64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +type Uint32Slice []uint32 + +func (p Uint32Slice) Len() int { return len(p) } +func (p Uint32Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p Uint32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +type Float32Slice []float32 + +func (p Float32Slice) Len() int { return len(p) } +func (p Float32Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p Float32Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/golang/glog/LICENSE b/vendor/github.com/golang/glog/LICENSE new file mode 100644 index 0000000000..37ec93a14f --- /dev/null +++ b/vendor/github.com/golang/glog/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README new file mode 100644 index 0000000000..5f9c11485e --- /dev/null +++ b/vendor/github.com/golang/glog/README @@ -0,0 +1,44 @@ +glog +==== + +Leveled execution logs for Go. + +This is an efficient pure Go implementation of leveled logs in the +manner of the open source C++ package + http://code.google.com/p/google-glog + +By binding methods to booleans it is possible to use the log package +without paying the expense of evaluating the arguments to the log. +Through the -vmodule flag, the package also provides fine-grained +control over logging at the file level. + +The comment from glog.go introduces the ideas: + + Package glog implements logging analogous to the Google-internal + C++ INFO/ERROR/V setup. It provides functions Info, Warning, + Error, Fatal, plus formatting variants such as Infof. It + also provides V-style logging controlled by the -v and + -vmodule=file=2 flags. + + Basic examples: + + glog.Info("Prepare to repel boarders") + + glog.Fatalf("Initialization failed: %s", err) + + See the documentation for the V function for an explanation + of these examples: + + if glog.V(2) { + glog.Info("Starting transaction...") + } + + glog.V(2).Infoln("Processed", nItems, "elements") + + +The repository contains an open source version of the log package +used inside Google. The master copy of the source lives inside +Google, not here. The code in this repo is for export only and is not itself +under development. Feature requests will be ignored. + +Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/glog/glog.go b/vendor/github.com/golang/glog/glog.go new file mode 100644 index 0000000000..3e63fffd5e --- /dev/null +++ b/vendor/github.com/golang/glog/glog.go @@ -0,0 +1,1177 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package glog implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. +// It provides functions Info, Warning, Error, Fatal, plus formatting variants such as +// Infof. It also provides V-style logging controlled by the -v and -vmodule=file=2 flags. +// +// Basic examples: +// +// glog.Info("Prepare to repel boarders") +// +// glog.Fatalf("Initialization failed: %s", err) +// +// See the documentation for the V function for an explanation of these examples: +// +// if glog.V(2) { +// glog.Info("Starting transaction...") +// } +// +// glog.V(2).Infoln("Processed", nItems, "elements") +// +// Log output is buffered and written periodically using Flush. Programs +// should call Flush before exiting to guarantee all log output is written. +// +// By default, all log statements write to files in a temporary directory. +// This package provides several flags that modify this behavior. +// As a result, flag.Parse must be called before any logging is done. +// +// -logtostderr=false +// Logs are written to standard error instead of to files. +// -alsologtostderr=false +// Logs are written to standard error as well as to files. +// -stderrthreshold=ERROR +// Log events at or above this severity are logged to standard +// error as well as to files. +// -log_dir="" +// Log files will be written to this directory instead of the +// default temporary directory. +// +// Other flags provide aids to debugging. +// +// -log_backtrace_at="" +// When set to a file and line number holding a logging statement, +// such as +// -log_backtrace_at=gopherflakes.go:234 +// a stack trace will be written to the Info log whenever execution +// hits that statement. (Unlike with -vmodule, the ".go" must be +// present.) +// -v=0 +// Enable V-leveled logging at the specified level. +// -vmodule="" +// The syntax of the argument is a comma-separated list of pattern=N, +// where pattern is a literal file name (minus the ".go" suffix) or +// "glob" pattern and N is a V level. For instance, +// -vmodule=gopher*=3 +// sets the V level to 3 in all Go files whose names begin "gopher". +// +package glog + +import ( + "bufio" + "bytes" + "errors" + "flag" + "fmt" + "io" + stdLog "log" + "os" + "path/filepath" + "runtime" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" +) + +// severity identifies the sort of log: info, warning etc. It also implements +// the flag.Value interface. The -stderrthreshold flag is of type severity and +// should be modified only through the flag.Value interface. The values match +// the corresponding constants in C++. +type severity int32 // sync/atomic int32 + +// These constants identify the log levels in order of increasing severity. +// A message written to a high-severity log file is also written to each +// lower-severity log file. +const ( + infoLog severity = iota + warningLog + errorLog + fatalLog + numSeverity = 4 +) + +const severityChar = "IWEF" + +var severityName = []string{ + infoLog: "INFO", + warningLog: "WARNING", + errorLog: "ERROR", + fatalLog: "FATAL", +} + +// get returns the value of the severity. +func (s *severity) get() severity { + return severity(atomic.LoadInt32((*int32)(s))) +} + +// set sets the value of the severity. +func (s *severity) set(val severity) { + atomic.StoreInt32((*int32)(s), int32(val)) +} + +// String is part of the flag.Value interface. +func (s *severity) String() string { + return strconv.FormatInt(int64(*s), 10) +} + +// Get is part of the flag.Value interface. +func (s *severity) Get() interface{} { + return *s +} + +// Set is part of the flag.Value interface. +func (s *severity) Set(value string) error { + var threshold severity + // Is it a known name? + if v, ok := severityByName(value); ok { + threshold = v + } else { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + threshold = severity(v) + } + logging.stderrThreshold.set(threshold) + return nil +} + +func severityByName(s string) (severity, bool) { + s = strings.ToUpper(s) + for i, name := range severityName { + if name == s { + return severity(i), true + } + } + return 0, false +} + +// OutputStats tracks the number of output lines and bytes written. +type OutputStats struct { + lines int64 + bytes int64 +} + +// Lines returns the number of lines written. +func (s *OutputStats) Lines() int64 { + return atomic.LoadInt64(&s.lines) +} + +// Bytes returns the number of bytes written. +func (s *OutputStats) Bytes() int64 { + return atomic.LoadInt64(&s.bytes) +} + +// Stats tracks the number of lines of output and number of bytes +// per severity level. Values must be read with atomic.LoadInt64. +var Stats struct { + Info, Warning, Error OutputStats +} + +var severityStats = [numSeverity]*OutputStats{ + infoLog: &Stats.Info, + warningLog: &Stats.Warning, + errorLog: &Stats.Error, +} + +// Level is exported because it appears in the arguments to V and is +// the type of the v flag, which can be set programmatically. +// It's a distinct type because we want to discriminate it from logType. +// Variables of type level are only changed under logging.mu. +// The -v flag is read only with atomic ops, so the state of the logging +// module is consistent. + +// Level is treated as a sync/atomic int32. + +// Level specifies a level of verbosity for V logs. *Level implements +// flag.Value; the -v flag is of type Level and should be modified +// only through the flag.Value interface. +type Level int32 + +// get returns the value of the Level. +func (l *Level) get() Level { + return Level(atomic.LoadInt32((*int32)(l))) +} + +// set sets the value of the Level. +func (l *Level) set(val Level) { + atomic.StoreInt32((*int32)(l), int32(val)) +} + +// String is part of the flag.Value interface. +func (l *Level) String() string { + return strconv.FormatInt(int64(*l), 10) +} + +// Get is part of the flag.Value interface. +func (l *Level) Get() interface{} { + return *l +} + +// Set is part of the flag.Value interface. +func (l *Level) Set(value string) error { + v, err := strconv.Atoi(value) + if err != nil { + return err + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(Level(v), logging.vmodule.filter, false) + return nil +} + +// moduleSpec represents the setting of the -vmodule flag. +type moduleSpec struct { + filter []modulePat +} + +// modulePat contains a filter for the -vmodule flag. +// It holds a verbosity level and a file pattern to match. +type modulePat struct { + pattern string + literal bool // The pattern is a literal string + level Level +} + +// match reports whether the file matches the pattern. It uses a string +// comparison if the pattern contains no metacharacters. +func (m *modulePat) match(file string) bool { + if m.literal { + return file == m.pattern + } + match, _ := filepath.Match(m.pattern, file) + return match +} + +func (m *moduleSpec) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + var b bytes.Buffer + for i, f := range m.filter { + if i > 0 { + b.WriteRune(',') + } + fmt.Fprintf(&b, "%s=%d", f.pattern, f.level) + } + return b.String() +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported. +func (m *moduleSpec) Get() interface{} { + return nil +} + +var errVmoduleSyntax = errors.New("syntax error: expect comma-separated list of filename=N") + +// Syntax: -vmodule=recordio=2,file=1,gfs*=3 +func (m *moduleSpec) Set(value string) error { + var filter []modulePat + for _, pat := range strings.Split(value, ",") { + if len(pat) == 0 { + // Empty strings such as from a trailing comma can be ignored. + continue + } + patLev := strings.Split(pat, "=") + if len(patLev) != 2 || len(patLev[0]) == 0 || len(patLev[1]) == 0 { + return errVmoduleSyntax + } + pattern := patLev[0] + v, err := strconv.Atoi(patLev[1]) + if err != nil { + return errors.New("syntax error: expect comma-separated list of filename=N") + } + if v < 0 { + return errors.New("negative value for vmodule level") + } + if v == 0 { + continue // Ignore. It's harmless but no point in paying the overhead. + } + // TODO: check syntax of filter? + filter = append(filter, modulePat{pattern, isLiteral(pattern), Level(v)}) + } + logging.mu.Lock() + defer logging.mu.Unlock() + logging.setVState(logging.verbosity, filter, true) + return nil +} + +// isLiteral reports whether the pattern is a literal string, that is, has no metacharacters +// that require filepath.Match to be called to match the pattern. +func isLiteral(pattern string) bool { + return !strings.ContainsAny(pattern, `\*?[]`) +} + +// traceLocation represents the setting of the -log_backtrace_at flag. +type traceLocation struct { + file string + line int +} + +// isSet reports whether the trace location has been specified. +// logging.mu is held. +func (t *traceLocation) isSet() bool { + return t.line > 0 +} + +// match reports whether the specified file and line matches the trace location. +// The argument file name is the full path, not the basename specified in the flag. +// logging.mu is held. +func (t *traceLocation) match(file string, line int) bool { + if t.line != line { + return false + } + if i := strings.LastIndex(file, "/"); i >= 0 { + file = file[i+1:] + } + return t.file == file +} + +func (t *traceLocation) String() string { + // Lock because the type is not atomic. TODO: clean this up. + logging.mu.Lock() + defer logging.mu.Unlock() + return fmt.Sprintf("%s:%d", t.file, t.line) +} + +// Get is part of the (Go 1.2) flag.Getter interface. It always returns nil for this flag type since the +// struct is not exported +func (t *traceLocation) Get() interface{} { + return nil +} + +var errTraceSyntax = errors.New("syntax error: expect file.go:234") + +// Syntax: -log_backtrace_at=gopherflakes.go:234 +// Note that unlike vmodule the file extension is included here. +func (t *traceLocation) Set(value string) error { + if value == "" { + // Unset. + t.line = 0 + t.file = "" + } + fields := strings.Split(value, ":") + if len(fields) != 2 { + return errTraceSyntax + } + file, line := fields[0], fields[1] + if !strings.Contains(file, ".") { + return errTraceSyntax + } + v, err := strconv.Atoi(line) + if err != nil { + return errTraceSyntax + } + if v <= 0 { + return errors.New("negative or zero value for level") + } + logging.mu.Lock() + defer logging.mu.Unlock() + t.line = v + t.file = file + return nil +} + +// flushSyncWriter is the interface satisfied by logging destinations. +type flushSyncWriter interface { + Flush() error + Sync() error + io.Writer +} + +func init() { + flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error instead of files") + flag.BoolVar(&logging.alsoToStderr, "alsologtostderr", false, "log to standard error as well as files") + flag.Var(&logging.verbosity, "v", "log level for V logs") + flag.Var(&logging.stderrThreshold, "stderrthreshold", "logs at or above this threshold go to stderr") + flag.Var(&logging.vmodule, "vmodule", "comma-separated list of pattern=N settings for file-filtered logging") + flag.Var(&logging.traceLocation, "log_backtrace_at", "when logging hits line file:N, emit a stack trace") + + // Default stderrThreshold is ERROR. + logging.stderrThreshold = errorLog + + logging.setVState(0, nil, false) + go logging.flushDaemon() +} + +// Flush flushes all pending log I/O. +func Flush() { + logging.lockAndFlushAll() +} + +// loggingT collects all the global state of the logging setup. +type loggingT struct { + // Boolean flags. Not handled atomically because the flag.Value interface + // does not let us avoid the =true, and that shorthand is necessary for + // compatibility. TODO: does this matter enough to fix? Seems unlikely. + toStderr bool // The -logtostderr flag. + alsoToStderr bool // The -alsologtostderr flag. + + // Level flag. Handled atomically. + stderrThreshold severity // The -stderrthreshold flag. + + // freeList is a list of byte buffers, maintained under freeListMu. + freeList *buffer + // freeListMu maintains the free list. It is separate from the main mutex + // so buffers can be grabbed and printed to without holding the main lock, + // for better parallelization. + freeListMu sync.Mutex + + // mu protects the remaining elements of this structure and is + // used to synchronize logging. + mu sync.Mutex + // file holds writer for each of the log types. + file [numSeverity]flushSyncWriter + // pcs is used in V to avoid an allocation when computing the caller's PC. + pcs [1]uintptr + // vmap is a cache of the V Level for each V() call site, identified by PC. + // It is wiped whenever the vmodule flag changes state. + vmap map[uintptr]Level + // filterLength stores the length of the vmodule filter chain. If greater + // than zero, it means vmodule is enabled. It may be read safely + // using sync.LoadInt32, but is only modified under mu. + filterLength int32 + // traceLocation is the state of the -log_backtrace_at flag. + traceLocation traceLocation + // These flags are modified only under lock, although verbosity may be fetched + // safely using atomic.LoadInt32. + vmodule moduleSpec // The state of the -vmodule flag. + verbosity Level // V logging level, the value of the -v flag/ +} + +// buffer holds a byte Buffer for reuse. The zero value is ready for use. +type buffer struct { + bytes.Buffer + tmp [64]byte // temporary byte array for creating headers. + next *buffer +} + +var logging loggingT + +// setVState sets a consistent state for V logging. +// l.mu is held. +func (l *loggingT) setVState(verbosity Level, filter []modulePat, setFilter bool) { + // Turn verbosity off so V will not fire while we are in transition. + logging.verbosity.set(0) + // Ditto for filter length. + atomic.StoreInt32(&logging.filterLength, 0) + + // Set the new filters and wipe the pc->Level map if the filter has changed. + if setFilter { + logging.vmodule.filter = filter + logging.vmap = make(map[uintptr]Level) + } + + // Things are consistent now, so enable filtering and verbosity. + // They are enabled in order opposite to that in V. + atomic.StoreInt32(&logging.filterLength, int32(len(filter))) + logging.verbosity.set(verbosity) +} + +// getBuffer returns a new, ready-to-use buffer. +func (l *loggingT) getBuffer() *buffer { + l.freeListMu.Lock() + b := l.freeList + if b != nil { + l.freeList = b.next + } + l.freeListMu.Unlock() + if b == nil { + b = new(buffer) + } else { + b.next = nil + b.Reset() + } + return b +} + +// putBuffer returns a buffer to the free list. +func (l *loggingT) putBuffer(b *buffer) { + if b.Len() >= 256 { + // Let big buffers die a natural death. + return + } + l.freeListMu.Lock() + b.next = l.freeList + l.freeList = b + l.freeListMu.Unlock() +} + +var timeNow = time.Now // Stubbed out for testing. + +/* +header formats a log header as defined by the C++ implementation. +It returns a buffer containing the formatted header and the user's file and line number. +The depth specifies how many stack frames above lives the source line to be identified in the log message. + +Log lines have this form: + Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg... +where the fields are defined as follows: + L A single character, representing the log level (eg 'I' for INFO) + mm The month (zero padded; ie May is '05') + dd The day (zero padded) + hh:mm:ss.uuuuuu Time in hours, minutes and fractional seconds + threadid The space-padded thread ID as returned by GetTID() + file The file name + line The line number + msg The user-supplied message +*/ +func (l *loggingT) header(s severity, depth int) (*buffer, string, int) { + _, file, line, ok := runtime.Caller(3 + depth) + if !ok { + file = "???" + line = 1 + } else { + slash := strings.LastIndex(file, "/") + if slash >= 0 { + file = file[slash+1:] + } + } + return l.formatHeader(s, file, line), file, line +} + +// formatHeader formats a log header using the provided file name and line number. +func (l *loggingT) formatHeader(s severity, file string, line int) *buffer { + now := timeNow() + if line < 0 { + line = 0 // not a real line number, but acceptable to someDigits + } + if s > fatalLog { + s = infoLog // for safety. + } + buf := l.getBuffer() + + // Avoid Fprintf, for speed. The format is so simple that we can do it quickly by hand. + // It's worth about 3X. Fprintf is hard. + _, month, day := now.Date() + hour, minute, second := now.Clock() + // Lmmdd hh:mm:ss.uuuuuu threadid file:line] + buf.tmp[0] = severityChar[s] + buf.twoDigits(1, int(month)) + buf.twoDigits(3, day) + buf.tmp[5] = ' ' + buf.twoDigits(6, hour) + buf.tmp[8] = ':' + buf.twoDigits(9, minute) + buf.tmp[11] = ':' + buf.twoDigits(12, second) + buf.tmp[14] = '.' + buf.nDigits(6, 15, now.Nanosecond()/1000, '0') + buf.tmp[21] = ' ' + buf.nDigits(7, 22, pid, ' ') // TODO: should be TID + buf.tmp[29] = ' ' + buf.Write(buf.tmp[:30]) + buf.WriteString(file) + buf.tmp[0] = ':' + n := buf.someDigits(1, line) + buf.tmp[n+1] = ']' + buf.tmp[n+2] = ' ' + buf.Write(buf.tmp[:n+3]) + return buf +} + +// Some custom tiny helper functions to print the log header efficiently. + +const digits = "0123456789" + +// twoDigits formats a zero-prefixed two-digit integer at buf.tmp[i]. +func (buf *buffer) twoDigits(i, d int) { + buf.tmp[i+1] = digits[d%10] + d /= 10 + buf.tmp[i] = digits[d%10] +} + +// nDigits formats an n-digit integer at buf.tmp[i], +// padding with pad on the left. +// It assumes d >= 0. +func (buf *buffer) nDigits(n, i, d int, pad byte) { + j := n - 1 + for ; j >= 0 && d > 0; j-- { + buf.tmp[i+j] = digits[d%10] + d /= 10 + } + for ; j >= 0; j-- { + buf.tmp[i+j] = pad + } +} + +// someDigits formats a zero-prefixed variable-width integer at buf.tmp[i]. +func (buf *buffer) someDigits(i, d int) int { + // Print into the top, then copy down. We know there's space for at least + // a 10-digit number. + j := len(buf.tmp) + for { + j-- + buf.tmp[j] = digits[d%10] + d /= 10 + if d == 0 { + break + } + } + return copy(buf.tmp[i:], buf.tmp[j:]) +} + +func (l *loggingT) println(s severity, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintln(buf, args...) + l.output(s, buf, file, line, false) +} + +func (l *loggingT) print(s severity, args ...interface{}) { + l.printDepth(s, 1, args...) +} + +func (l *loggingT) printDepth(s severity, depth int, args ...interface{}) { + buf, file, line := l.header(s, depth) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +func (l *loggingT) printf(s severity, format string, args ...interface{}) { + buf, file, line := l.header(s, 0) + fmt.Fprintf(buf, format, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, false) +} + +// printWithFileLine behaves like print but uses the provided file and line number. If +// alsoLogToStderr is true, the log message always appears on standard error; it +// will also appear in the log file unless --logtostderr is set. +func (l *loggingT) printWithFileLine(s severity, file string, line int, alsoToStderr bool, args ...interface{}) { + buf := l.formatHeader(s, file, line) + fmt.Fprint(buf, args...) + if buf.Bytes()[buf.Len()-1] != '\n' { + buf.WriteByte('\n') + } + l.output(s, buf, file, line, alsoToStderr) +} + +// output writes the data to the log files and releases the buffer. +func (l *loggingT) output(s severity, buf *buffer, file string, line int, alsoToStderr bool) { + l.mu.Lock() + if l.traceLocation.isSet() { + if l.traceLocation.match(file, line) { + buf.Write(stacks(false)) + } + } + data := buf.Bytes() + if l.toStderr { + os.Stderr.Write(data) + } else { + if alsoToStderr || l.alsoToStderr || s >= l.stderrThreshold.get() { + os.Stderr.Write(data) + } + if l.file[s] == nil { + if err := l.createFiles(s); err != nil { + os.Stderr.Write(data) // Make sure the message appears somewhere. + l.exit(err) + } + } + switch s { + case fatalLog: + l.file[fatalLog].Write(data) + fallthrough + case errorLog: + l.file[errorLog].Write(data) + fallthrough + case warningLog: + l.file[warningLog].Write(data) + fallthrough + case infoLog: + l.file[infoLog].Write(data) + } + } + if s == fatalLog { + // If we got here via Exit rather than Fatal, print no stacks. + if atomic.LoadUint32(&fatalNoStacks) > 0 { + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(1) + } + // Dump all goroutine stacks before exiting. + // First, make sure we see the trace for the current goroutine on standard error. + // If -logtostderr has been specified, the loop below will do that anyway + // as the first stack in the full dump. + if !l.toStderr { + os.Stderr.Write(stacks(false)) + } + // Write the stack trace for all goroutines to the files. + trace := stacks(true) + logExitFunc = func(error) {} // If we get a write error, we'll still exit below. + for log := fatalLog; log >= infoLog; log-- { + if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. + f.Write(trace) + } + } + l.mu.Unlock() + timeoutFlush(10 * time.Second) + os.Exit(255) // C++ uses -1, which is silly because it's anded with 255 anyway. + } + l.putBuffer(buf) + l.mu.Unlock() + if stats := severityStats[s]; stats != nil { + atomic.AddInt64(&stats.lines, 1) + atomic.AddInt64(&stats.bytes, int64(len(data))) + } +} + +// timeoutFlush calls Flush and returns when it completes or after timeout +// elapses, whichever happens first. This is needed because the hooks invoked +// by Flush may deadlock when glog.Fatal is called from a hook that holds +// a lock. +func timeoutFlush(timeout time.Duration) { + done := make(chan bool, 1) + go func() { + Flush() // calls logging.lockAndFlushAll() + done <- true + }() + select { + case <-done: + case <-time.After(timeout): + fmt.Fprintln(os.Stderr, "glog: Flush took longer than", timeout) + } +} + +// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. +func stacks(all bool) []byte { + // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. + n := 10000 + if all { + n = 100000 + } + var trace []byte + for i := 0; i < 5; i++ { + trace = make([]byte, n) + nbytes := runtime.Stack(trace, all) + if nbytes < len(trace) { + return trace[:nbytes] + } + n *= 2 + } + return trace +} + +// logExitFunc provides a simple mechanism to override the default behavior +// of exiting on error. Used in testing and to guarantee we reach a required exit +// for fatal logs. Instead, exit could be a function rather than a method but that +// would make its use clumsier. +var logExitFunc func(error) + +// exit is called if there is trouble creating or writing log files. +// It flushes the logs and exits the program; there's no point in hanging around. +// l.mu is held. +func (l *loggingT) exit(err error) { + fmt.Fprintf(os.Stderr, "log: exiting because of error: %s\n", err) + // If logExitFunc is set, we do that instead of exiting. + if logExitFunc != nil { + logExitFunc(err) + return + } + l.flushAll() + os.Exit(2) +} + +// syncBuffer joins a bufio.Writer to its underlying file, providing access to the +// file's Sync method and providing a wrapper for the Write method that provides log +// file rotation. There are conflicting methods, so the file cannot be embedded. +// l.mu is held for all its methods. +type syncBuffer struct { + logger *loggingT + *bufio.Writer + file *os.File + sev severity + nbytes uint64 // The number of bytes written to this file +} + +func (sb *syncBuffer) Sync() error { + return sb.file.Sync() +} + +func (sb *syncBuffer) Write(p []byte) (n int, err error) { + if sb.nbytes+uint64(len(p)) >= MaxSize { + if err := sb.rotateFile(time.Now()); err != nil { + sb.logger.exit(err) + } + } + n, err = sb.Writer.Write(p) + sb.nbytes += uint64(n) + if err != nil { + sb.logger.exit(err) + } + return +} + +// rotateFile closes the syncBuffer's file and starts a new one. +func (sb *syncBuffer) rotateFile(now time.Time) error { + if sb.file != nil { + sb.Flush() + sb.file.Close() + } + var err error + sb.file, _, err = create(severityName[sb.sev], now) + sb.nbytes = 0 + if err != nil { + return err + } + + sb.Writer = bufio.NewWriterSize(sb.file, bufferSize) + + // Write header. + var buf bytes.Buffer + fmt.Fprintf(&buf, "Log file created at: %s\n", now.Format("2006/01/02 15:04:05")) + fmt.Fprintf(&buf, "Running on machine: %s\n", host) + fmt.Fprintf(&buf, "Binary: Built with %s %s for %s/%s\n", runtime.Compiler, runtime.Version(), runtime.GOOS, runtime.GOARCH) + fmt.Fprintf(&buf, "Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg\n") + n, err := sb.file.Write(buf.Bytes()) + sb.nbytes += uint64(n) + return err +} + +// bufferSize sizes the buffer associated with each log file. It's large +// so that log records can accumulate without the logging thread blocking +// on disk I/O. The flushDaemon will block instead. +const bufferSize = 256 * 1024 + +// createFiles creates all the log files for severity from sev down to infoLog. +// l.mu is held. +func (l *loggingT) createFiles(sev severity) error { + now := time.Now() + // Files are created in decreasing severity order, so as soon as we find one + // has already been created, we can stop. + for s := sev; s >= infoLog && l.file[s] == nil; s-- { + sb := &syncBuffer{ + logger: l, + sev: s, + } + if err := sb.rotateFile(now); err != nil { + return err + } + l.file[s] = sb + } + return nil +} + +const flushInterval = 30 * time.Second + +// flushDaemon periodically flushes the log file buffers. +func (l *loggingT) flushDaemon() { + for _ = range time.NewTicker(flushInterval).C { + l.lockAndFlushAll() + } +} + +// lockAndFlushAll is like flushAll but locks l.mu first. +func (l *loggingT) lockAndFlushAll() { + l.mu.Lock() + l.flushAll() + l.mu.Unlock() +} + +// flushAll flushes all the logs and attempts to "sync" their data to disk. +// l.mu is held. +func (l *loggingT) flushAll() { + // Flush from fatal down, in case there's trouble flushing. + for s := fatalLog; s >= infoLog; s-- { + file := l.file[s] + if file != nil { + file.Flush() // ignore error + file.Sync() // ignore error + } + } +} + +// CopyStandardLogTo arranges for messages written to the Go "log" package's +// default logs to also appear in the Google logs for the named and lower +// severities. Subsequent changes to the standard log's default output location +// or format may break this behavior. +// +// Valid names are "INFO", "WARNING", "ERROR", and "FATAL". If the name is not +// recognized, CopyStandardLogTo panics. +func CopyStandardLogTo(name string) { + sev, ok := severityByName(name) + if !ok { + panic(fmt.Sprintf("log.CopyStandardLogTo(%q): unrecognized severity name", name)) + } + // Set a log format that captures the user's file and line: + // d.go:23: message + stdLog.SetFlags(stdLog.Lshortfile) + stdLog.SetOutput(logBridge(sev)) +} + +// logBridge provides the Write method that enables CopyStandardLogTo to connect +// Go's standard logs to the logs provided by this package. +type logBridge severity + +// Write parses the standard logging line and passes its components to the +// logger for severity(lb). +func (lb logBridge) Write(b []byte) (n int, err error) { + var ( + file = "???" + line = 1 + text string + ) + // Split "d.go:23: message" into "d.go", "23", and "message". + if parts := bytes.SplitN(b, []byte{':'}, 3); len(parts) != 3 || len(parts[0]) < 1 || len(parts[2]) < 1 { + text = fmt.Sprintf("bad log format: %s", b) + } else { + file = string(parts[0]) + text = string(parts[2][1:]) // skip leading space + line, err = strconv.Atoi(string(parts[1])) + if err != nil { + text = fmt.Sprintf("bad line number: %s", b) + line = 1 + } + } + // printWithFileLine with alsoToStderr=true, so standard log messages + // always appear on standard error. + logging.printWithFileLine(severity(lb), file, line, true, text) + return len(b), nil +} + +// setV computes and remembers the V level for a given PC +// when vmodule is enabled. +// File pattern matching takes the basename of the file, stripped +// of its .go suffix, and uses filepath.Match, which is a little more +// general than the *? matching used in C++. +// l.mu is held. +func (l *loggingT) setV(pc uintptr) Level { + fn := runtime.FuncForPC(pc) + file, _ := fn.FileLine(pc) + // The file is something like /a/b/c/d.go. We want just the d. + if strings.HasSuffix(file, ".go") { + file = file[:len(file)-3] + } + if slash := strings.LastIndex(file, "/"); slash >= 0 { + file = file[slash+1:] + } + for _, filter := range l.vmodule.filter { + if filter.match(file) { + l.vmap[pc] = filter.level + return filter.level + } + } + l.vmap[pc] = 0 + return 0 +} + +// Verbose is a boolean type that implements Infof (like Printf) etc. +// See the documentation of V for more information. +type Verbose bool + +// V reports whether verbosity at the call site is at least the requested level. +// The returned value is a boolean of type Verbose, which implements Info, Infoln +// and Infof. These methods will write to the Info log if called. +// Thus, one may write either +// if glog.V(2) { glog.Info("log this") } +// or +// glog.V(2).Info("log this") +// The second form is shorter but the first is cheaper if logging is off because it does +// not evaluate its arguments. +// +// Whether an individual call to V generates a log record depends on the setting of +// the -v and --vmodule flags; both are off by default. If the level in the call to +// V is at least the value of -v, or of -vmodule for the source file containing the +// call, the V call will log. +func V(level Level) Verbose { + // This function tries hard to be cheap unless there's work to do. + // The fast path is two atomic loads and compares. + + // Here is a cheap but safe test to see if V logging is enabled globally. + if logging.verbosity.get() >= level { + return Verbose(true) + } + + // It's off globally but it vmodule may still be set. + // Here is another cheap but safe test to see if vmodule is enabled. + if atomic.LoadInt32(&logging.filterLength) > 0 { + // Now we need a proper lock to use the logging structure. The pcs field + // is shared so we must lock before accessing it. This is fairly expensive, + // but if V logging is enabled we're slow anyway. + logging.mu.Lock() + defer logging.mu.Unlock() + if runtime.Callers(2, logging.pcs[:]) == 0 { + return Verbose(false) + } + v, ok := logging.vmap[logging.pcs[0]] + if !ok { + v = logging.setV(logging.pcs[0]) + } + return Verbose(v >= level) + } + return Verbose(false) +} + +// Info is equivalent to the global Info function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Info(args ...interface{}) { + if v { + logging.print(infoLog, args...) + } +} + +// Infoln is equivalent to the global Infoln function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infoln(args ...interface{}) { + if v { + logging.println(infoLog, args...) + } +} + +// Infof is equivalent to the global Infof function, guarded by the value of v. +// See the documentation of V for usage. +func (v Verbose) Infof(format string, args ...interface{}) { + if v { + logging.printf(infoLog, format, args...) + } +} + +// Info logs to the INFO log. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Info(args ...interface{}) { + logging.print(infoLog, args...) +} + +// InfoDepth acts as Info but uses depth to determine which call frame to log. +// InfoDepth(0, "msg") is the same as Info("msg"). +func InfoDepth(depth int, args ...interface{}) { + logging.printDepth(infoLog, depth, args...) +} + +// Infoln logs to the INFO log. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Infoln(args ...interface{}) { + logging.println(infoLog, args...) +} + +// Infof logs to the INFO log. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Infof(format string, args ...interface{}) { + logging.printf(infoLog, format, args...) +} + +// Warning logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Warning(args ...interface{}) { + logging.print(warningLog, args...) +} + +// WarningDepth acts as Warning but uses depth to determine which call frame to log. +// WarningDepth(0, "msg") is the same as Warning("msg"). +func WarningDepth(depth int, args ...interface{}) { + logging.printDepth(warningLog, depth, args...) +} + +// Warningln logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Warningln(args ...interface{}) { + logging.println(warningLog, args...) +} + +// Warningf logs to the WARNING and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Warningf(format string, args ...interface{}) { + logging.printf(warningLog, format, args...) +} + +// Error logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Error(args ...interface{}) { + logging.print(errorLog, args...) +} + +// ErrorDepth acts as Error but uses depth to determine which call frame to log. +// ErrorDepth(0, "msg") is the same as Error("msg"). +func ErrorDepth(depth int, args ...interface{}) { + logging.printDepth(errorLog, depth, args...) +} + +// Errorln logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Errorln(args ...interface{}) { + logging.println(errorLog, args...) +} + +// Errorf logs to the ERROR, WARNING, and INFO logs. +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Errorf(format string, args ...interface{}) { + logging.printf(errorLog, format, args...) +} + +// Fatal logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Fatal(args ...interface{}) { + logging.print(fatalLog, args...) +} + +// FatalDepth acts as Fatal but uses depth to determine which call frame to log. +// FatalDepth(0, "msg") is the same as Fatal("msg"). +func FatalDepth(depth int, args ...interface{}) { + logging.printDepth(fatalLog, depth, args...) +} + +// Fatalln logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Println; a newline is appended if missing. +func Fatalln(args ...interface{}) { + logging.println(fatalLog, args...) +} + +// Fatalf logs to the FATAL, ERROR, WARNING, and INFO logs, +// including a stack trace of all running goroutines, then calls os.Exit(255). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Fatalf(format string, args ...interface{}) { + logging.printf(fatalLog, format, args...) +} + +// fatalNoStacks is non-zero if we are to exit without dumping goroutine stacks. +// It allows Exit and relatives to use the Fatal logs. +var fatalNoStacks uint32 + +// Exit logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Print; a newline is appended if missing. +func Exit(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.print(fatalLog, args...) +} + +// ExitDepth acts as Exit but uses depth to determine which call frame to log. +// ExitDepth(0, "msg") is the same as Exit("msg"). +func ExitDepth(depth int, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printDepth(fatalLog, depth, args...) +} + +// Exitln logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +func Exitln(args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.println(fatalLog, args...) +} + +// Exitf logs to the FATAL, ERROR, WARNING, and INFO logs, then calls os.Exit(1). +// Arguments are handled in the manner of fmt.Printf; a newline is appended if missing. +func Exitf(format string, args ...interface{}) { + atomic.StoreUint32(&fatalNoStacks, 1) + logging.printf(fatalLog, format, args...) +} diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go new file mode 100644 index 0000000000..65075d2811 --- /dev/null +++ b/vendor/github.com/golang/glog/glog_file.go @@ -0,0 +1,124 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// File I/O for logs. + +package glog + +import ( + "errors" + "flag" + "fmt" + "os" + "os/user" + "path/filepath" + "strings" + "sync" + "time" +) + +// MaxSize is the maximum size of a log file in bytes. +var MaxSize uint64 = 1024 * 1024 * 1800 + +// logDirs lists the candidate directories for new log files. +var logDirs []string + +// If non-empty, overrides the choice of directory in which to write logs. +// See createLogDirs for the full list of possible destinations. +var logDir = flag.String("log_dir", "", "If non-empty, write log files in this directory") + +func createLogDirs() { + if *logDir != "" { + logDirs = append(logDirs, *logDir) + } + logDirs = append(logDirs, os.TempDir()) +} + +var ( + pid = os.Getpid() + program = filepath.Base(os.Args[0]) + host = "unknownhost" + userName = "unknownuser" +) + +func init() { + h, err := os.Hostname() + if err == nil { + host = shortHostname(h) + } + + current, err := user.Current() + if err == nil { + userName = current.Username + } + + // Sanitize userName since it may contain filepath separators on Windows. + userName = strings.Replace(userName, `\`, "_", -1) +} + +// shortHostname returns its argument, truncating at the first period. +// For instance, given "www.google.com" it returns "www". +func shortHostname(hostname string) string { + if i := strings.Index(hostname, "."); i >= 0 { + return hostname[:i] + } + return hostname +} + +// logName returns a new log file name containing tag, with start time t, and +// the name for the symlink for tag. +func logName(tag string, t time.Time) (name, link string) { + name = fmt.Sprintf("%s.%s.%s.log.%s.%04d%02d%02d-%02d%02d%02d.%d", + program, + host, + userName, + tag, + t.Year(), + t.Month(), + t.Day(), + t.Hour(), + t.Minute(), + t.Second(), + pid) + return name, program + "." + tag +} + +var onceLogDirs sync.Once + +// create creates a new log file and returns the file and its filename, which +// contains tag ("INFO", "FATAL", etc.) and t. If the file is created +// successfully, create also attempts to update the symlink for that tag, ignoring +// errors. +func create(tag string, t time.Time) (f *os.File, filename string, err error) { + onceLogDirs.Do(createLogDirs) + if len(logDirs) == 0 { + return nil, "", errors.New("log: no log dirs") + } + name, link := logName(tag, t) + var lastErr error + for _, dir := range logDirs { + fname := filepath.Join(dir, name) + f, err := os.Create(fname) + if err == nil { + symlink := filepath.Join(dir, link) + os.Remove(symlink) // ignore err + os.Symlink(name, symlink) // ignore err + return f, fname, nil + } + lastErr = err + } + return nil, "", fmt.Errorf("log: cannot create log: %v", lastErr) +} diff --git a/vendor/github.com/google/gofuzz/CONTRIBUTING.md b/vendor/github.com/google/gofuzz/CONTRIBUTING.md new file mode 100644 index 0000000000..51cf5cd1ad --- /dev/null +++ b/vendor/github.com/google/gofuzz/CONTRIBUTING.md @@ -0,0 +1,67 @@ +# How to contribute # + +We'd love to accept your patches and contributions to this project. There are +a just a few small guidelines you need to follow. + + +## Contributor License Agreement ## + +Contributions to any Google project must be accompanied by a Contributor +License Agreement. This is not a copyright **assignment**, it simply gives +Google permission to use and redistribute your contributions as part of the +project. + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual + CLA][]. + + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA][]. + +You generally only need to submit a CLA once, so if you've already submitted +one (even if it was for a different project), you probably don't need to do it +again. + +[individual CLA]: https://developers.google.com/open-source/cla/individual +[corporate CLA]: https://developers.google.com/open-source/cla/corporate + + +## Submitting a patch ## + + 1. It's generally best to start by opening a new issue describing the bug or + feature you're intending to fix. Even if you think it's relatively minor, + it's helpful to know what people are working on. Mention in the initial + issue that you are planning to work on that bug or feature so that it can + be assigned to you. + + 1. Follow the normal process of [forking][] the project, and setup a new + branch to work in. It's important that each group of changes be done in + separate branches in order to ensure that a pull request only includes the + commits related to that bug or feature. + + 1. Go makes it very simple to ensure properly formatted code, so always run + `go fmt` on your code before committing it. You should also run + [golint][] over your code. As noted in the [golint readme][], it's not + strictly necessary that your code be completely "lint-free", but this will + help you find common style issues. + + 1. Any significant changes should almost always be accompanied by tests. The + project already has good test coverage, so look at some of the existing + tests if you're unsure how to go about it. [gocov][] and [gocov-html][] + are invaluable tools for seeing which parts of your code aren't being + exercised by your tests. + + 1. Do your best to have [well-formed commit messages][] for each change. + This provides consistency throughout the project, and ensures that commit + messages are able to be formatted properly by various git tools. + + 1. Finally, push the commits to your fork and submit a [pull request][]. + +[forking]: https://help.github.com/articles/fork-a-repo +[golint]: https://github.com/golang/lint +[golint readme]: https://github.com/golang/lint/blob/master/README +[gocov]: https://github.com/axw/gocov +[gocov-html]: https://github.com/matm/gocov-html +[well-formed commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +[squash]: http://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits +[pull request]: https://help.github.com/articles/creating-a-pull-request diff --git a/vendor/github.com/google/gofuzz/LICENSE b/vendor/github.com/google/gofuzz/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/vendor/github.com/google/gofuzz/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/google/gofuzz/doc.go b/vendor/github.com/google/gofuzz/doc.go new file mode 100644 index 0000000000..9f9956d4a6 --- /dev/null +++ b/vendor/github.com/google/gofuzz/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package fuzz is a library for populating go objects with random values. +package fuzz diff --git a/vendor/github.com/google/gofuzz/fuzz.go b/vendor/github.com/google/gofuzz/fuzz.go new file mode 100644 index 0000000000..42d9a48b3e --- /dev/null +++ b/vendor/github.com/google/gofuzz/fuzz.go @@ -0,0 +1,446 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fuzz + +import ( + "fmt" + "math/rand" + "reflect" + "time" +) + +// fuzzFuncMap is a map from a type to a fuzzFunc that handles that type. +type fuzzFuncMap map[reflect.Type]reflect.Value + +// Fuzzer knows how to fill any object with random fields. +type Fuzzer struct { + fuzzFuncs fuzzFuncMap + defaultFuzzFuncs fuzzFuncMap + r *rand.Rand + nilChance float64 + minElements int + maxElements int +} + +// New returns a new Fuzzer. Customize your Fuzzer further by calling Funcs, +// RandSource, NilChance, or NumElements in any order. +func New() *Fuzzer { + f := &Fuzzer{ + defaultFuzzFuncs: fuzzFuncMap{ + reflect.TypeOf(&time.Time{}): reflect.ValueOf(fuzzTime), + }, + + fuzzFuncs: fuzzFuncMap{}, + r: rand.New(rand.NewSource(time.Now().UnixNano())), + nilChance: .2, + minElements: 1, + maxElements: 10, + } + return f +} + +// Funcs adds each entry in fuzzFuncs as a custom fuzzing function. +// +// Each entry in fuzzFuncs must be a function taking two parameters. +// The first parameter must be a pointer or map. It is the variable that +// function will fill with random data. The second parameter must be a +// fuzz.Continue, which will provide a source of randomness and a way +// to automatically continue fuzzing smaller pieces of the first parameter. +// +// These functions are called sensibly, e.g., if you wanted custom string +// fuzzing, the function `func(s *string, c fuzz.Continue)` would get +// called and passed the address of strings. Maps and pointers will always +// be made/new'd for you, ignoring the NilChange option. For slices, it +// doesn't make much sense to pre-create them--Fuzzer doesn't know how +// long you want your slice--so take a pointer to a slice, and make it +// yourself. (If you don't want your map/pointer type pre-made, take a +// pointer to it, and make it yourself.) See the examples for a range of +// custom functions. +func (f *Fuzzer) Funcs(fuzzFuncs ...interface{}) *Fuzzer { + for i := range fuzzFuncs { + v := reflect.ValueOf(fuzzFuncs[i]) + if v.Kind() != reflect.Func { + panic("Need only funcs!") + } + t := v.Type() + if t.NumIn() != 2 || t.NumOut() != 0 { + panic("Need 2 in and 0 out params!") + } + argT := t.In(0) + switch argT.Kind() { + case reflect.Ptr, reflect.Map: + default: + panic("fuzzFunc must take pointer or map type") + } + if t.In(1) != reflect.TypeOf(Continue{}) { + panic("fuzzFunc's second parameter must be type fuzz.Continue") + } + f.fuzzFuncs[argT] = v + } + return f +} + +// RandSource causes f to get values from the given source of randomness. +// Use if you want deterministic fuzzing. +func (f *Fuzzer) RandSource(s rand.Source) *Fuzzer { + f.r = rand.New(s) + return f +} + +// NilChance sets the probability of creating a nil pointer, map, or slice to +// 'p'. 'p' should be between 0 (no nils) and 1 (all nils), inclusive. +func (f *Fuzzer) NilChance(p float64) *Fuzzer { + if p < 0 || p > 1 { + panic("p should be between 0 and 1, inclusive.") + } + f.nilChance = p + return f +} + +// NumElements sets the minimum and maximum number of elements that will be +// added to a non-nil map or slice. +func (f *Fuzzer) NumElements(atLeast, atMost int) *Fuzzer { + if atLeast > atMost { + panic("atLeast must be <= atMost") + } + if atLeast < 0 { + panic("atLeast must be >= 0") + } + f.minElements = atLeast + f.maxElements = atMost + return f +} + +func (f *Fuzzer) genElementCount() int { + if f.minElements == f.maxElements { + return f.minElements + } + return f.minElements + f.r.Intn(f.maxElements-f.minElements) +} + +func (f *Fuzzer) genShouldFill() bool { + return f.r.Float64() > f.nilChance +} + +// Fuzz recursively fills all of obj's fields with something random. First +// this tries to find a custom fuzz function (see Funcs). If there is no +// custom function this tests whether the object implements fuzz.Interface and, +// if so, calls Fuzz on it to fuzz itself. If that fails, this will see if +// there is a default fuzz function provided by this package. If all of that +// fails, this will generate random values for all primitive fields and then +// recurse for all non-primitives. +// +// Not safe for cyclic or tree-like structs! +// +// obj must be a pointer. Only exported (public) fields can be set (thanks, golang :/ ) +// Intended for tests, so will panic on bad input or unimplemented fields. +func (f *Fuzzer) Fuzz(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + f.doFuzz(v, 0) +} + +// FuzzNoCustom is just like Fuzz, except that any custom fuzz function for +// obj's type will not be called and obj will not be tested for fuzz.Interface +// conformance. This applies only to obj and not other instances of obj's +// type. +// Not safe for cyclic or tree-like structs! +// obj must be a pointer. Only exported (public) fields can be set (thanks, golang :/ ) +// Intended for tests, so will panic on bad input or unimplemented fields. +func (f *Fuzzer) FuzzNoCustom(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + f.doFuzz(v, flagNoCustomFuzz) +} + +const ( + // Do not try to find a custom fuzz function. Does not apply recursively. + flagNoCustomFuzz uint64 = 1 << iota +) + +func (f *Fuzzer) doFuzz(v reflect.Value, flags uint64) { + if !v.CanSet() { + return + } + + if flags&flagNoCustomFuzz == 0 { + // Check for both pointer and non-pointer custom functions. + if v.CanAddr() && f.tryCustom(v.Addr()) { + return + } + if f.tryCustom(v) { + return + } + } + + if fn, ok := fillFuncMap[v.Kind()]; ok { + fn(v, f.r) + return + } + switch v.Kind() { + case reflect.Map: + if f.genShouldFill() { + v.Set(reflect.MakeMap(v.Type())) + n := f.genElementCount() + for i := 0; i < n; i++ { + key := reflect.New(v.Type().Key()).Elem() + f.doFuzz(key, 0) + val := reflect.New(v.Type().Elem()).Elem() + f.doFuzz(val, 0) + v.SetMapIndex(key, val) + } + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Ptr: + if f.genShouldFill() { + v.Set(reflect.New(v.Type().Elem())) + f.doFuzz(v.Elem(), 0) + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Slice: + if f.genShouldFill() { + n := f.genElementCount() + v.Set(reflect.MakeSlice(v.Type(), n, n)) + for i := 0; i < n; i++ { + f.doFuzz(v.Index(i), 0) + } + return + } + v.Set(reflect.Zero(v.Type())) + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + f.doFuzz(v.Field(i), 0) + } + case reflect.Array: + fallthrough + case reflect.Chan: + fallthrough + case reflect.Func: + fallthrough + case reflect.Interface: + fallthrough + default: + panic(fmt.Sprintf("Can't handle %#v", v.Interface())) + } +} + +// tryCustom searches for custom handlers, and returns true iff it finds a match +// and successfully randomizes v. +func (f *Fuzzer) tryCustom(v reflect.Value) bool { + // First: see if we have a fuzz function for it. + doCustom, ok := f.fuzzFuncs[v.Type()] + if !ok { + // Second: see if it can fuzz itself. + if v.CanInterface() { + intf := v.Interface() + if fuzzable, ok := intf.(Interface); ok { + fuzzable.Fuzz(Continue{f: f, Rand: f.r}) + return true + } + } + // Finally: see if there is a default fuzz function. + doCustom, ok = f.defaultFuzzFuncs[v.Type()] + if !ok { + return false + } + } + + switch v.Kind() { + case reflect.Ptr: + if v.IsNil() { + if !v.CanSet() { + return false + } + v.Set(reflect.New(v.Type().Elem())) + } + case reflect.Map: + if v.IsNil() { + if !v.CanSet() { + return false + } + v.Set(reflect.MakeMap(v.Type())) + } + default: + return false + } + + doCustom.Call([]reflect.Value{v, reflect.ValueOf(Continue{ + f: f, + Rand: f.r, + })}) + return true +} + +// Interface represents an object that knows how to fuzz itself. Any time we +// find a type that implements this interface we will delegate the act of +// fuzzing itself. +type Interface interface { + Fuzz(c Continue) +} + +// Continue can be passed to custom fuzzing functions to allow them to use +// the correct source of randomness and to continue fuzzing their members. +type Continue struct { + f *Fuzzer + + // For convenience, Continue implements rand.Rand via embedding. + // Use this for generating any randomness if you want your fuzzing + // to be repeatable for a given seed. + *rand.Rand +} + +// Fuzz continues fuzzing obj. obj must be a pointer. +func (c Continue) Fuzz(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + c.f.doFuzz(v, 0) +} + +// FuzzNoCustom continues fuzzing obj, except that any custom fuzz function for +// obj's type will not be called and obj will not be tested for fuzz.Interface +// conformance. This applies only to obj and not other instances of obj's +// type. +func (c Continue) FuzzNoCustom(obj interface{}) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + panic("needed ptr!") + } + v = v.Elem() + c.f.doFuzz(v, flagNoCustomFuzz) +} + +// RandString makes a random string up to 20 characters long. The returned string +// may include a variety of (valid) UTF-8 encodings. +func (c Continue) RandString() string { + return randString(c.Rand) +} + +// RandUint64 makes random 64 bit numbers. +// Weirdly, rand doesn't have a function that gives you 64 random bits. +func (c Continue) RandUint64() uint64 { + return randUint64(c.Rand) +} + +// RandBool returns true or false randomly. +func (c Continue) RandBool() bool { + return randBool(c.Rand) +} + +func fuzzInt(v reflect.Value, r *rand.Rand) { + v.SetInt(int64(randUint64(r))) +} + +func fuzzUint(v reflect.Value, r *rand.Rand) { + v.SetUint(randUint64(r)) +} + +func fuzzTime(t *time.Time, c Continue) { + var sec, nsec int64 + // Allow for about 1000 years of random time values, which keeps things + // like JSON parsing reasonably happy. + sec = c.Rand.Int63n(1000 * 365 * 24 * 60 * 60) + c.Fuzz(&nsec) + *t = time.Unix(sec, nsec) +} + +var fillFuncMap = map[reflect.Kind]func(reflect.Value, *rand.Rand){ + reflect.Bool: func(v reflect.Value, r *rand.Rand) { + v.SetBool(randBool(r)) + }, + reflect.Int: fuzzInt, + reflect.Int8: fuzzInt, + reflect.Int16: fuzzInt, + reflect.Int32: fuzzInt, + reflect.Int64: fuzzInt, + reflect.Uint: fuzzUint, + reflect.Uint8: fuzzUint, + reflect.Uint16: fuzzUint, + reflect.Uint32: fuzzUint, + reflect.Uint64: fuzzUint, + reflect.Uintptr: fuzzUint, + reflect.Float32: func(v reflect.Value, r *rand.Rand) { + v.SetFloat(float64(r.Float32())) + }, + reflect.Float64: func(v reflect.Value, r *rand.Rand) { + v.SetFloat(r.Float64()) + }, + reflect.Complex64: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, + reflect.Complex128: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, + reflect.String: func(v reflect.Value, r *rand.Rand) { + v.SetString(randString(r)) + }, + reflect.UnsafePointer: func(v reflect.Value, r *rand.Rand) { + panic("unimplemented") + }, +} + +// randBool returns true or false randomly. +func randBool(r *rand.Rand) bool { + if r.Int()&1 == 1 { + return true + } + return false +} + +type charRange struct { + first, last rune +} + +// choose returns a random unicode character from the given range, using the +// given randomness source. +func (r *charRange) choose(rand *rand.Rand) rune { + count := int64(r.last - r.first) + return r.first + rune(rand.Int63n(count)) +} + +var unicodeRanges = []charRange{ + {' ', '~'}, // ASCII characters + {'\u00a0', '\u02af'}, // Multi-byte encoded characters + {'\u4e00', '\u9fff'}, // Common CJK (even longer encodings) +} + +// randString makes a random string up to 20 characters long. The returned string +// may include a variety of (valid) UTF-8 encodings. +func randString(r *rand.Rand) string { + n := r.Intn(20) + runes := make([]rune, n) + for i := range runes { + runes[i] = unicodeRanges[r.Intn(len(unicodeRanges))].choose(r) + } + return string(runes) +} + +// randUint64 makes random 64 bit numbers. +// Weirdly, rand doesn't have a function that gives you 64 random bits. +func randUint64(r *rand.Rand) uint64 { + return uint64(r.Uint32())<<32 | uint64(r.Uint32()) +} diff --git a/vendor/github.com/jonboulle/clockwork/LICENSE b/vendor/github.com/jonboulle/clockwork/LICENSE new file mode 100644 index 0000000000..5c304d1a4a --- /dev/null +++ b/vendor/github.com/jonboulle/clockwork/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/jonboulle/clockwork/clockwork.go b/vendor/github.com/jonboulle/clockwork/clockwork.go new file mode 100644 index 0000000000..4b6918b522 --- /dev/null +++ b/vendor/github.com/jonboulle/clockwork/clockwork.go @@ -0,0 +1,161 @@ +package clockwork + +import ( + "sync" + "time" +) + +// Clock provides an interface that packages can use instead of directly +// using the time module, so that chronology-related behavior can be tested +type Clock interface { + After(d time.Duration) <-chan time.Time + Sleep(d time.Duration) + Now() time.Time +} + +// FakeClock provides an interface for a clock which can be +// manually advanced through time +type FakeClock interface { + Clock + // Advance advances the FakeClock to a new point in time, ensuring any existing + // sleepers are notified appropriately before returning + Advance(d time.Duration) + // BlockUntil will block until the FakeClock has the given number of + // sleepers (callers of Sleep or After) + BlockUntil(n int) +} + +// NewRealClock returns a Clock which simply delegates calls to the actual time +// package; it should be used by packages in production. +func NewRealClock() Clock { + return &realClock{} +} + +// NewFakeClock returns a FakeClock implementation which can be +// manually advanced through time for testing. +func NewFakeClock() FakeClock { + return &fakeClock{ + l: sync.RWMutex{}, + } +} + +type realClock struct{} + +func (rc *realClock) After(d time.Duration) <-chan time.Time { + return time.After(d) +} + +func (rc *realClock) Sleep(d time.Duration) { + time.Sleep(d) +} + +func (rc *realClock) Now() time.Time { + return time.Now() +} + +type fakeClock struct { + sleepers []*sleeper + blockers []*blocker + time time.Time + + l sync.RWMutex +} + +// sleeper represents a caller of After or Sleep +type sleeper struct { + until time.Time + done chan time.Time +} + +// blocker represents a caller of BlockUntil +type blocker struct { + count int + ch chan struct{} +} + +// After mimics time.After; it waits for the given duration to elapse on the +// fakeClock, then sends the current time on the returned channel. +func (fc *fakeClock) After(d time.Duration) <-chan time.Time { + fc.l.Lock() + defer fc.l.Unlock() + now := fc.time + done := make(chan time.Time, 1) + if d.Nanoseconds() == 0 { + // special case - trigger immediately + done <- now + } else { + // otherwise, add to the set of sleepers + s := &sleeper{ + until: now.Add(d), + done: done, + } + fc.sleepers = append(fc.sleepers, s) + // and notify any blockers + fc.blockers = notifyBlockers(fc.blockers, len(fc.sleepers)) + } + return done +} + +// notifyBlockers notifies all the blockers waiting until the +// given number of sleepers are waiting on the fakeClock. It +// returns an updated slice of blockers (i.e. those still waiting) +func notifyBlockers(blockers []*blocker, count int) (newBlockers []*blocker) { + for _, b := range blockers { + if b.count == count { + close(b.ch) + } else { + newBlockers = append(newBlockers, b) + } + } + return +} + +// Sleep blocks until the given duration has passed on the fakeClock +func (fc *fakeClock) Sleep(d time.Duration) { + <-fc.After(d) +} + +// Time returns the current time of the fakeClock +func (fc *fakeClock) Now() time.Time { + fc.l.Lock() + defer fc.l.Unlock() + return fc.time +} + +// Advance advances fakeClock to a new point in time, ensuring channels from any +// previous invocations of After are notified appropriately before returning +func (fc *fakeClock) Advance(d time.Duration) { + fc.l.Lock() + defer fc.l.Unlock() + end := fc.time.Add(d) + var newSleepers []*sleeper + for _, s := range fc.sleepers { + if end.Sub(s.until) >= 0 { + s.done <- end + } else { + newSleepers = append(newSleepers, s) + } + } + fc.sleepers = newSleepers + fc.blockers = notifyBlockers(fc.blockers, len(fc.sleepers)) + fc.time = end +} + +// BlockUntil will block until the fakeClock has the given number of sleepers +// (callers of Sleep or After) +func (fc *fakeClock) BlockUntil(n int) { + fc.l.Lock() + // Fast path: current number of sleepers is what we're looking for + if len(fc.sleepers) == n { + fc.l.Unlock() + return + } + // Otherwise, set up a new blocker + b := &blocker{ + count: n, + ch: make(chan struct{}), + } + fc.blockers = append(fc.blockers, b) + fc.l.Unlock() + <-b.ch +} diff --git a/vendor/github.com/juju/ratelimit/LICENSE b/vendor/github.com/juju/ratelimit/LICENSE new file mode 100644 index 0000000000..ade9307b39 --- /dev/null +++ b/vendor/github.com/juju/ratelimit/LICENSE @@ -0,0 +1,191 @@ +All files in this repository are licensed as follows. If you contribute +to this repository, it is assumed that you license your contribution +under the same license unless you state otherwise. + +All files Copyright (C) 2015 Canonical Ltd. unless otherwise specified in the file. + +This software is licensed under the LGPLv3, included below. + +As a special exception to the GNU Lesser General Public License version 3 +("LGPL3"), the copyright holders of this Library give you permission to +convey to a third party a Combined Work that links statically or dynamically +to this Library without providing any Minimal Corresponding Source or +Minimal Application Code as set out in 4d or providing the installation +information set out in section 4e, provided that you comply with the other +provisions of LGPL3 and provided that you meet, for the Application the +terms and conditions of the license(s) which apply to the Application. + +Except as stated in this special exception, the provisions of LGPL3 will +continue to comply in full to this Library. If you modify this Library, you +may apply this exception to your version of this Library, but you are not +obliged to do so. If you do not wish to do so, delete this exception +statement from your version. This exception does not (and cannot) modify any +license terms which apply to the Application, with which you must still +comply. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/github.com/juju/ratelimit/ratelimit.go b/vendor/github.com/juju/ratelimit/ratelimit.go new file mode 100644 index 0000000000..3ef32fbcc0 --- /dev/null +++ b/vendor/github.com/juju/ratelimit/ratelimit.go @@ -0,0 +1,245 @@ +// Copyright 2014 Canonical Ltd. +// Licensed under the LGPLv3 with static-linking exception. +// See LICENCE file for details. + +// The ratelimit package provides an efficient token bucket implementation +// that can be used to limit the rate of arbitrary things. +// See http://en.wikipedia.org/wiki/Token_bucket. +package ratelimit + +import ( + "math" + "strconv" + "sync" + "time" +) + +// Bucket represents a token bucket that fills at a predetermined rate. +// Methods on Bucket may be called concurrently. +type Bucket struct { + startTime time.Time + capacity int64 + quantum int64 + fillInterval time.Duration + + // The mutex guards the fields following it. + mu sync.Mutex + + // avail holds the number of available tokens + // in the bucket, as of availTick ticks from startTime. + // It will be negative when there are consumers + // waiting for tokens. + avail int64 + availTick int64 +} + +// NewBucket returns a new token bucket that fills at the +// rate of one token every fillInterval, up to the given +// maximum capacity. Both arguments must be +// positive. The bucket is initially full. +func NewBucket(fillInterval time.Duration, capacity int64) *Bucket { + return NewBucketWithQuantum(fillInterval, capacity, 1) +} + +// rateMargin specifes the allowed variance of actual +// rate from specified rate. 1% seems reasonable. +const rateMargin = 0.01 + +// NewBucketWithRate returns a token bucket that fills the bucket +// at the rate of rate tokens per second up to the given +// maximum capacity. Because of limited clock resolution, +// at high rates, the actual rate may be up to 1% different from the +// specified rate. +func NewBucketWithRate(rate float64, capacity int64) *Bucket { + for quantum := int64(1); quantum < 1<<50; quantum = nextQuantum(quantum) { + fillInterval := time.Duration(1e9 * float64(quantum) / rate) + if fillInterval <= 0 { + continue + } + tb := NewBucketWithQuantum(fillInterval, capacity, quantum) + if diff := math.Abs(tb.Rate() - rate); diff/rate <= rateMargin { + return tb + } + } + panic("cannot find suitable quantum for " + strconv.FormatFloat(rate, 'g', -1, 64)) +} + +// nextQuantum returns the next quantum to try after q. +// We grow the quantum exponentially, but slowly, so we +// get a good fit in the lower numbers. +func nextQuantum(q int64) int64 { + q1 := q * 11 / 10 + if q1 == q { + q1++ + } + return q1 +} + +// NewBucketWithQuantum is similar to NewBucket, but allows +// the specification of the quantum size - quantum tokens +// are added every fillInterval. +func NewBucketWithQuantum(fillInterval time.Duration, capacity, quantum int64) *Bucket { + if fillInterval <= 0 { + panic("token bucket fill interval is not > 0") + } + if capacity <= 0 { + panic("token bucket capacity is not > 0") + } + if quantum <= 0 { + panic("token bucket quantum is not > 0") + } + return &Bucket{ + startTime: time.Now(), + capacity: capacity, + quantum: quantum, + avail: capacity, + fillInterval: fillInterval, + } +} + +// Wait takes count tokens from the bucket, waiting until they are +// available. +func (tb *Bucket) Wait(count int64) { + if d := tb.Take(count); d > 0 { + time.Sleep(d) + } +} + +// WaitMaxDuration is like Wait except that it will +// only take tokens from the bucket if it needs to wait +// for no greater than maxWait. It reports whether +// any tokens have been removed from the bucket +// If no tokens have been removed, it returns immediately. +func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool { + d, ok := tb.TakeMaxDuration(count, maxWait) + if d > 0 { + time.Sleep(d) + } + return ok +} + +const infinityDuration time.Duration = 0x7fffffffffffffff + +// Take takes count tokens from the bucket without blocking. It returns +// the time that the caller should wait until the tokens are actually +// available. +// +// Note that if the request is irrevocable - there is no way to return +// tokens to the bucket once this method commits us to taking them. +func (tb *Bucket) Take(count int64) time.Duration { + d, _ := tb.take(time.Now(), count, infinityDuration) + return d +} + +// TakeMaxDuration is like Take, except that +// it will only take tokens from the bucket if the wait +// time for the tokens is no greater than maxWait. +// +// If it would take longer than maxWait for the tokens +// to become available, it does nothing and reports false, +// otherwise it returns the time that the caller should +// wait until the tokens are actually available, and reports +// true. +func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool) { + return tb.take(time.Now(), count, maxWait) +} + +// TakeAvailable takes up to count immediately available tokens from the +// bucket. It returns the number of tokens removed, or zero if there are +// no available tokens. It does not block. +func (tb *Bucket) TakeAvailable(count int64) int64 { + return tb.takeAvailable(time.Now(), count) +} + +// takeAvailable is the internal version of TakeAvailable - it takes the +// current time as an argument to enable easy testing. +func (tb *Bucket) takeAvailable(now time.Time, count int64) int64 { + if count <= 0 { + return 0 + } + tb.mu.Lock() + defer tb.mu.Unlock() + + tb.adjust(now) + if tb.avail <= 0 { + return 0 + } + if count > tb.avail { + count = tb.avail + } + tb.avail -= count + return count +} + +// Available returns the number of available tokens. It will be negative +// when there are consumers waiting for tokens. Note that if this +// returns greater than zero, it does not guarantee that calls that take +// tokens from the buffer will succeed, as the number of available +// tokens could have changed in the meantime. This method is intended +// primarily for metrics reporting and debugging. +func (tb *Bucket) Available() int64 { + return tb.available(time.Now()) +} + +// available is the internal version of available - it takes the current time as +// an argument to enable easy testing. +func (tb *Bucket) available(now time.Time) int64 { + tb.mu.Lock() + defer tb.mu.Unlock() + tb.adjust(now) + return tb.avail +} + +// Capacity returns the capacity that the bucket was created with. +func (tb *Bucket) Capacity() int64 { + return tb.capacity +} + +// Rate returns the fill rate of the bucket, in tokens per second. +func (tb *Bucket) Rate() float64 { + return 1e9 * float64(tb.quantum) / float64(tb.fillInterval) +} + +// take is the internal version of Take - it takes the current time as +// an argument to enable easy testing. +func (tb *Bucket) take(now time.Time, count int64, maxWait time.Duration) (time.Duration, bool) { + if count <= 0 { + return 0, true + } + tb.mu.Lock() + defer tb.mu.Unlock() + + currentTick := tb.adjust(now) + avail := tb.avail - count + if avail >= 0 { + tb.avail = avail + return 0, true + } + // Round up the missing tokens to the nearest multiple + // of quantum - the tokens won't be available until + // that tick. + endTick := currentTick + (-avail+tb.quantum-1)/tb.quantum + endTime := tb.startTime.Add(time.Duration(endTick) * tb.fillInterval) + waitTime := endTime.Sub(now) + if waitTime > maxWait { + return 0, false + } + tb.avail = avail + return waitTime, true +} + +// adjust adjusts the current bucket capacity based on the current time. +// It returns the current tick. +func (tb *Bucket) adjust(now time.Time) (currentTick int64) { + currentTick = int64(now.Sub(tb.startTime) / tb.fillInterval) + + if tb.avail >= tb.capacity { + return + } + tb.avail += (currentTick - tb.availTick) * tb.quantum + if tb.avail > tb.capacity { + tb.avail = tb.capacity + } + tb.availTick = currentTick + return +} diff --git a/vendor/github.com/juju/ratelimit/reader.go b/vendor/github.com/juju/ratelimit/reader.go new file mode 100644 index 0000000000..6403bf78d4 --- /dev/null +++ b/vendor/github.com/juju/ratelimit/reader.go @@ -0,0 +1,51 @@ +// Copyright 2014 Canonical Ltd. +// Licensed under the LGPLv3 with static-linking exception. +// See LICENCE file for details. + +package ratelimit + +import "io" + +type reader struct { + r io.Reader + bucket *Bucket +} + +// Reader returns a reader that is rate limited by +// the given token bucket. Each token in the bucket +// represents one byte. +func Reader(r io.Reader, bucket *Bucket) io.Reader { + return &reader{ + r: r, + bucket: bucket, + } +} + +func (r *reader) Read(buf []byte) (int, error) { + n, err := r.r.Read(buf) + if n <= 0 { + return n, err + } + r.bucket.Wait(int64(n)) + return n, err +} + +type writer struct { + w io.Writer + bucket *Bucket +} + +// Writer returns a reader that is rate limited by +// the given token bucket. Each token in the bucket +// represents one byte. +func Writer(w io.Writer, bucket *Bucket) io.Writer { + return &writer{ + w: w, + bucket: bucket, + } +} + +func (w *writer) Write(buf []byte) (int, error) { + w.bucket.Wait(int64(len(buf))) + return w.w.Write(buf) +} diff --git a/vendor/github.com/mailru/easyjson/LICENSE b/vendor/github.com/mailru/easyjson/LICENSE new file mode 100644 index 0000000000..fbff658f70 --- /dev/null +++ b/vendor/github.com/mailru/easyjson/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2016 Mail.Ru Group + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/mailru/easyjson/buffer/pool.go b/vendor/github.com/mailru/easyjson/buffer/pool.go new file mode 100644 index 0000000000..4de4a51db5 --- /dev/null +++ b/vendor/github.com/mailru/easyjson/buffer/pool.go @@ -0,0 +1,207 @@ +// Package buffer implements a buffer for serialization, consisting of a chain of []byte-s to +// reduce copying and to allow reuse of individual chunks. +package buffer + +import ( + "io" + "sync" +) + +// PoolConfig contains configuration for the allocation and reuse strategy. +type PoolConfig struct { + StartSize int // Minimum chunk size that is allocated. + PooledSize int // Minimum chunk size that is reused, reusing chunks too small will result in overhead. + MaxSize int // Maximum chunk size that will be allocated. +} + +var config = PoolConfig{ + StartSize: 128, + PooledSize: 512, + MaxSize: 32768, +} + +// Reuse pool: chunk size -> pool. +var buffers = map[int]*sync.Pool{} + +func initBuffers() { + for l := config.PooledSize; l <= config.MaxSize; l *= 2 { + buffers[l] = new(sync.Pool) + } +} + +func init() { + initBuffers() +} + +// Init sets up a non-default pooling and allocation strategy. Should be run before serialization is done. +func Init(cfg PoolConfig) { + config = cfg + initBuffers() +} + +// putBuf puts a chunk to reuse pool if it can be reused. +func putBuf(buf []byte) { + size := cap(buf) + if size < config.PooledSize { + return + } + if c := buffers[size]; c != nil { + c.Put(buf[:0]) + } +} + +// getBuf gets a chunk from reuse pool or creates a new one if reuse failed. +func getBuf(size int) []byte { + if size < config.PooledSize { + return make([]byte, 0, size) + } + + if c := buffers[size]; c != nil { + v := c.Get() + if v != nil { + return v.([]byte) + } + } + return make([]byte, 0, size) +} + +// Buffer is a buffer optimized for serialization without extra copying. +type Buffer struct { + + // Buf is the current chunk that can be used for serialization. + Buf []byte + + toPool []byte + bufs [][]byte +} + +// EnsureSpace makes sure that the current chunk contains at least s free bytes, +// possibly creating a new chunk. +func (b *Buffer) EnsureSpace(s int) { + if cap(b.Buf)-len(b.Buf) >= s { + return + } + l := len(b.Buf) + if l > 0 { + if cap(b.toPool) != cap(b.Buf) { + // Chunk was reallocated, toPool can be pooled. + putBuf(b.toPool) + } + if cap(b.bufs) == 0 { + b.bufs = make([][]byte, 0, 8) + } + b.bufs = append(b.bufs, b.Buf) + l = cap(b.toPool) * 2 + } else { + l = config.StartSize + } + + if l > config.MaxSize { + l = config.MaxSize + } + b.Buf = getBuf(l) + b.toPool = b.Buf +} + +// AppendByte appends a single byte to buffer. +func (b *Buffer) AppendByte(data byte) { + if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. + b.EnsureSpace(1) + } + b.Buf = append(b.Buf, data) +} + +// AppendBytes appends a byte slice to buffer. +func (b *Buffer) AppendBytes(data []byte) { + for len(data) > 0 { + if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. + b.EnsureSpace(1) + } + + sz := cap(b.Buf) - len(b.Buf) + if sz > len(data) { + sz = len(data) + } + + b.Buf = append(b.Buf, data[:sz]...) + data = data[sz:] + } +} + +// AppendBytes appends a string to buffer. +func (b *Buffer) AppendString(data string) { + for len(data) > 0 { + if cap(b.Buf) == len(b.Buf) { // EnsureSpace won't be inlined. + b.EnsureSpace(1) + } + + sz := cap(b.Buf) - len(b.Buf) + if sz > len(data) { + sz = len(data) + } + + b.Buf = append(b.Buf, data[:sz]...) + data = data[sz:] + } +} + +// Size computes the size of a buffer by adding sizes of every chunk. +func (b *Buffer) Size() int { + size := len(b.Buf) + for _, buf := range b.bufs { + size += len(buf) + } + return size +} + +// DumpTo outputs the contents of a buffer to a writer and resets the buffer. +func (b *Buffer) DumpTo(w io.Writer) (written int, err error) { + var n int + for _, buf := range b.bufs { + if err == nil { + n, err = w.Write(buf) + written += n + } + putBuf(buf) + } + + if err == nil { + n, err = w.Write(b.Buf) + written += n + } + putBuf(b.toPool) + + b.bufs = nil + b.Buf = nil + b.toPool = nil + + return +} + +// BuildBytes creates a single byte slice with all the contents of the buffer. Data is +// copied if it does not fit in a single chunk. +func (b *Buffer) BuildBytes() []byte { + if len(b.bufs) == 0 { + + ret := b.Buf + b.toPool = nil + b.Buf = nil + + return ret + } + + ret := make([]byte, 0, b.Size()) + for _, buf := range b.bufs { + ret = append(ret, buf...) + putBuf(buf) + } + + ret = append(ret, b.Buf...) + putBuf(b.toPool) + + b.bufs = nil + b.toPool = nil + b.Buf = nil + + return ret +} diff --git a/vendor/github.com/mailru/easyjson/jlexer/error.go b/vendor/github.com/mailru/easyjson/jlexer/error.go new file mode 100644 index 0000000000..e90ec40d05 --- /dev/null +++ b/vendor/github.com/mailru/easyjson/jlexer/error.go @@ -0,0 +1,15 @@ +package jlexer + +import "fmt" + +// LexerError implements the error interface and represents all possible errors that can be +// generated during parsing the JSON data. +type LexerError struct { + Reason string + Offset int + Data string +} + +func (l *LexerError) Error() string { + return fmt.Sprintf("parse error: %s near offset %d of '%s'", l.Reason, l.Offset, l.Data) +} diff --git a/vendor/github.com/mailru/easyjson/jlexer/lexer.go b/vendor/github.com/mailru/easyjson/jlexer/lexer.go new file mode 100644 index 0000000000..d700c0a32f --- /dev/null +++ b/vendor/github.com/mailru/easyjson/jlexer/lexer.go @@ -0,0 +1,956 @@ +// Package jlexer contains a JSON lexer implementation. +// +// It is expected that it is mostly used with generated parser code, so the interface is tuned +// for a parser that knows what kind of data is expected. +package jlexer + +import ( + "fmt" + "io" + "reflect" + "strconv" + "unicode/utf8" + "unsafe" +) + +// tokenKind determines type of a token. +type tokenKind byte + +const ( + tokenUndef tokenKind = iota // No token. + tokenDelim // Delimiter: one of '{', '}', '[' or ']'. + tokenString // A string literal, e.g. "abc\u1234" + tokenNumber // Number literal, e.g. 1.5e5 + tokenBool // Boolean literal: true or false. + tokenNull // null keyword. +) + +// token describes a single token: type, position in the input and value. +type token struct { + kind tokenKind // Type of a token. + + boolValue bool // Value if a boolean literal token. + byteValue []byte // Raw value of a token. + delimValue byte +} + +// Lexer is a JSON lexer: it iterates over JSON tokens in a byte slice. +type Lexer struct { + Data []byte // Input data given to the lexer. + + start int // Start of the current token. + pos int // Current unscanned position in the input stream. + token token // Last scanned token, if token.kind != tokenUndef. + + firstElement bool // Whether current element is the first in array or an object. + wantSep byte // A comma or a colon character, which need to occur before a token. + + err error // Error encountered during lexing, if any. +} + +// fetchToken scans the input for the next token. +func (r *Lexer) fetchToken() { + r.token.kind = tokenUndef + r.start = r.pos + + // Check if r.Data has r.pos element + // If it doesn't, it mean corrupted input data + if len(r.Data) < r.pos { + r.errParse("Unexpected end of data") + return + } + // Determine the type of a token by skipping whitespace and reading the + // first character. + for _, c := range r.Data[r.pos:] { + switch c { + case ':', ',': + if r.wantSep == c { + r.pos++ + r.start++ + r.wantSep = 0 + } else { + r.errSyntax() + } + + case ' ', '\t', '\r', '\n': + r.pos++ + r.start++ + + case '"': + if r.wantSep != 0 { + r.errSyntax() + } + + r.token.kind = tokenString + r.fetchString() + return + + case '{', '[': + if r.wantSep != 0 { + r.errSyntax() + } + r.firstElement = true + r.token.kind = tokenDelim + r.token.delimValue = r.Data[r.pos] + r.pos++ + return + + case '}', ']': + if !r.firstElement && (r.wantSep != ',') { + r.errSyntax() + } + r.wantSep = 0 + r.token.kind = tokenDelim + r.token.delimValue = r.Data[r.pos] + r.pos++ + return + + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-': + if r.wantSep != 0 { + r.errSyntax() + } + r.token.kind = tokenNumber + r.fetchNumber() + return + + case 'n': + if r.wantSep != 0 { + r.errSyntax() + } + + r.token.kind = tokenNull + r.fetchNull() + return + + case 't': + if r.wantSep != 0 { + r.errSyntax() + } + + r.token.kind = tokenBool + r.token.boolValue = true + r.fetchTrue() + return + + case 'f': + if r.wantSep != 0 { + r.errSyntax() + } + + r.token.kind = tokenBool + r.token.boolValue = false + r.fetchFalse() + return + + default: + r.errSyntax() + return + } + } + r.err = io.EOF + return +} + +// isTokenEnd returns true if the char can follow a non-delimiter token +func isTokenEnd(c byte) bool { + return c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == ':' +} + +// fetchNull fetches and checks remaining bytes of null keyword. +func (r *Lexer) fetchNull() { + r.pos += 4 + if r.pos > len(r.Data) || + r.Data[r.pos-3] != 'u' || + r.Data[r.pos-2] != 'l' || + r.Data[r.pos-1] != 'l' || + (r.pos != len(r.Data) && !isTokenEnd(r.Data[r.pos])) { + + r.pos -= 4 + r.errSyntax() + } +} + +// fetchTrue fetches and checks remaining bytes of true keyword. +func (r *Lexer) fetchTrue() { + r.pos += 4 + if r.pos > len(r.Data) || + r.Data[r.pos-3] != 'r' || + r.Data[r.pos-2] != 'u' || + r.Data[r.pos-1] != 'e' || + (r.pos != len(r.Data) && !isTokenEnd(r.Data[r.pos])) { + + r.pos -= 4 + r.errSyntax() + } +} + +// fetchFalse fetches and checks remaining bytes of false keyword. +func (r *Lexer) fetchFalse() { + r.pos += 5 + if r.pos > len(r.Data) || + r.Data[r.pos-4] != 'a' || + r.Data[r.pos-3] != 'l' || + r.Data[r.pos-2] != 's' || + r.Data[r.pos-1] != 'e' || + (r.pos != len(r.Data) && !isTokenEnd(r.Data[r.pos])) { + + r.pos -= 5 + r.errSyntax() + } +} + +// bytesToStr creates a string pointing at the slice to avoid copying. +// +// Warning: the string returned by the function should be used with care, as the whole input data +// chunk may be either blocked from being freed by GC because of a single string or the buffer.Data +// may be garbage-collected even when the string exists. +func bytesToStr(data []byte) string { + h := (*reflect.SliceHeader)(unsafe.Pointer(&data)) + shdr := reflect.StringHeader{h.Data, h.Len} + return *(*string)(unsafe.Pointer(&shdr)) +} + +// fetchNumber scans a number literal token. +func (r *Lexer) fetchNumber() { + hasE := false + afterE := false + hasDot := false + + r.pos++ + for i, c := range r.Data[r.pos:] { + switch { + case c >= '0' && c <= '9': + afterE = false + case c == '.' && !hasDot: + hasDot = true + case (c == 'e' || c == 'E') && !hasE: + hasE = true + hasDot = true + afterE = true + case (c == '+' || c == '-') && afterE: + afterE = false + default: + r.pos += i + if !isTokenEnd(c) { + r.errSyntax() + } else { + r.token.byteValue = r.Data[r.start:r.pos] + } + return + } + } + + r.pos = len(r.Data) + r.token.byteValue = r.Data[r.start:] +} + +// findStringLen tries to scan into the string literal for ending quote char to determine required size. +// The size will be exact if no escapes are present and may be inexact if there are escaped chars. +func findStringLen(data []byte) (hasEscapes bool, length int) { + delta := 0 + + for i := 0; i < len(data); i++ { + switch data[i] { + case '\\': + i++ + delta++ + if i < len(data) && data[i] == 'u' { + delta++ + } + case '"': + return (delta > 0), (i - delta) + } + } + + return false, len(data) +} + +// processEscape processes a single escape sequence and returns number of bytes processed. +func (r *Lexer) processEscape(data []byte) (int, error) { + if len(data) < 2 { + return 0, fmt.Errorf("syntax error at %v", string(data)) + } + + c := data[1] + switch c { + case '"', '/', '\\': + r.token.byteValue = append(r.token.byteValue, c) + return 2, nil + case 'b': + r.token.byteValue = append(r.token.byteValue, '\b') + return 2, nil + case 'f': + r.token.byteValue = append(r.token.byteValue, '\f') + return 2, nil + case 'n': + r.token.byteValue = append(r.token.byteValue, '\n') + return 2, nil + case 'r': + r.token.byteValue = append(r.token.byteValue, '\r') + return 2, nil + case 't': + r.token.byteValue = append(r.token.byteValue, '\t') + return 2, nil + case 'u': + default: + return 0, fmt.Errorf("syntax error") + } + + var val rune + + for i := 2; i < len(data) && i < 6; i++ { + var v byte + c = data[i] + switch c { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + v = c - '0' + case 'a', 'b', 'c', 'd', 'e', 'f': + v = c - 'a' + 10 + case 'A', 'B', 'C', 'D', 'E', 'F': + v = c - 'A' + 10 + default: + return 0, fmt.Errorf("syntax error") + } + + val <<= 4 + val |= rune(v) + } + + l := utf8.RuneLen(val) + if l == -1 { + return 0, fmt.Errorf("invalid unicode escape") + } + + var d [4]byte + utf8.EncodeRune(d[:], val) + r.token.byteValue = append(r.token.byteValue, d[:l]...) + return 6, nil +} + +// fetchString scans a string literal token. +func (r *Lexer) fetchString() { + r.pos++ + data := r.Data[r.pos:] + + hasEscapes, length := findStringLen(data) + if !hasEscapes { + r.token.byteValue = data[:length] + r.pos += length + 1 + return + } + + r.token.byteValue = make([]byte, 0, length) + p := 0 + for i := 0; i < len(data); { + switch data[i] { + case '"': + r.pos += i + 1 + r.token.byteValue = append(r.token.byteValue, data[p:i]...) + i++ + return + + case '\\': + r.token.byteValue = append(r.token.byteValue, data[p:i]...) + off, err := r.processEscape(data[i:]) + if err != nil { + r.errParse(err.Error()) + return + } + i += off + p = i + + default: + i++ + } + } + r.errParse("unterminated string literal") +} + +// scanToken scans the next token if no token is currently available in the lexer. +func (r *Lexer) scanToken() { + if r.token.kind != tokenUndef || r.err != nil { + return + } + + r.fetchToken() +} + +// consume resets the current token to allow scanning the next one. +func (r *Lexer) consume() { + r.token.kind = tokenUndef + r.token.delimValue = 0 +} + +// Ok returns true if no error (including io.EOF) was encountered during scanning. +func (r *Lexer) Ok() bool { + return r.err == nil +} + +const maxErrorContextLen = 13 + +func (r *Lexer) errParse(what string) { + if r.err == nil { + var str string + if len(r.Data)-r.pos <= maxErrorContextLen { + str = string(r.Data) + } else { + str = string(r.Data[r.pos:r.pos+maxErrorContextLen-3]) + "..." + } + r.err = &LexerError{ + Reason: what, + Offset: r.pos, + Data: str, + } + } +} + +func (r *Lexer) errSyntax() { + r.errParse("syntax error") +} + +func (r *Lexer) errInvalidToken(expected string) { + if r.err == nil { + var str string + if len(r.token.byteValue) <= maxErrorContextLen { + str = string(r.token.byteValue) + } else { + str = string(r.token.byteValue[:maxErrorContextLen-3]) + "..." + } + r.err = &LexerError{ + Reason: fmt.Sprintf("expected %s", expected), + Offset: r.pos, + Data: str, + } + } +} + +// Delim consumes a token and verifies that it is the given delimiter. +func (r *Lexer) Delim(c byte) { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.delimValue != c { + r.errInvalidToken(string([]byte{c})) + } + r.consume() +} + +// IsDelim returns true if there was no scanning error and next token is the given delimiter. +func (r *Lexer) IsDelim(c byte) bool { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + return !r.Ok() || r.token.delimValue == c +} + +// Null verifies that the next token is null and consumes it. +func (r *Lexer) Null() { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.kind != tokenNull { + r.errInvalidToken("null") + } + r.consume() +} + +// IsNull returns true if the next token is a null keyword. +func (r *Lexer) IsNull() bool { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + return r.Ok() && r.token.kind == tokenNull +} + +// Skip skips a single token. +func (r *Lexer) Skip() { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + r.consume() +} + +// SkipRecursive skips next array or object completely, or just skips a single token if not +// an array/object. +// +// Note: no syntax validation is performed on the skipped data. +func (r *Lexer) SkipRecursive() { + r.scanToken() + + var start, end byte + + if r.token.delimValue == '{' { + start, end = '{', '}' + } else if r.token.delimValue == '[' { + start, end = '[', ']' + } else { + r.consume() + return + } + + r.consume() + + level := 1 + inQuotes := false + wasEscape := false + + for i, c := range r.Data[r.pos:] { + switch { + case c == start && !inQuotes: + level++ + case c == end && !inQuotes: + level-- + if level == 0 { + r.pos += i + 1 + return + } + case c == '\\' && inQuotes: + wasEscape = true + continue + case c == '"' && inQuotes: + inQuotes = wasEscape + case c == '"': + inQuotes = true + } + wasEscape = false + } + r.pos = len(r.Data) + r.err = io.EOF +} + +// Raw fetches the next item recursively as a data slice +func (r *Lexer) Raw() []byte { + r.SkipRecursive() + if !r.Ok() { + return nil + } + return r.Data[r.start:r.pos] +} + +// UnsafeString returns the string value if the token is a string literal. +// +// Warning: returned string may point to the input buffer, so the string should not outlive +// the input buffer. Intended pattern of usage is as an argument to a switch statement. +func (r *Lexer) UnsafeString() string { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.kind != tokenString { + r.errInvalidToken("string") + return "" + } + + ret := bytesToStr(r.token.byteValue) + r.consume() + return ret +} + +// String reads a string literal. +func (r *Lexer) String() string { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.kind != tokenString { + r.errInvalidToken("string") + return "" + + } + ret := string(r.token.byteValue) + r.consume() + return ret +} + +// Bool reads a true or false boolean keyword. +func (r *Lexer) Bool() bool { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.kind != tokenBool { + r.errInvalidToken("bool") + return false + + } + ret := r.token.boolValue + r.consume() + return ret +} + +func (r *Lexer) number() string { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + if !r.Ok() || r.token.kind != tokenNumber { + r.errInvalidToken("number") + return "" + + } + ret := bytesToStr(r.token.byteValue) + r.consume() + return ret +} + +func (r *Lexer) Uint8() uint8 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 8) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint8(n) +} + +func (r *Lexer) Uint16() uint16 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 16) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint16(n) +} + +func (r *Lexer) Uint32() uint32 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 32) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint32(n) +} + +func (r *Lexer) Uint64() uint64 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 64) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return n +} + +func (r *Lexer) Uint() uint { + return uint(r.Uint64()) +} + +func (r *Lexer) Int8() int8 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 8) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int8(n) +} + +func (r *Lexer) Int16() int16 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 16) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int16(n) +} + +func (r *Lexer) Int32() int32 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 32) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int32(n) +} + +func (r *Lexer) Int64() int64 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 64) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return n +} + +func (r *Lexer) Int() int { + return int(r.Int64()) +} + +func (r *Lexer) Uint8Str() uint8 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 8) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint8(n) +} + +func (r *Lexer) Uint16Str() uint16 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 16) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint16(n) +} + +func (r *Lexer) Uint32Str() uint32 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 32) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return uint32(n) +} + +func (r *Lexer) Uint64Str() uint64 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseUint(s, 10, 64) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return n +} + +func (r *Lexer) UintStr() uint { + return uint(r.Uint64Str()) +} + +func (r *Lexer) Int8Str() int8 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 8) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int8(n) +} + +func (r *Lexer) Int16Str() int16 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 16) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int16(n) +} + +func (r *Lexer) Int32Str() int32 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 32) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return int32(n) +} + +func (r *Lexer) Int64Str() int64 { + s := r.UnsafeString() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseInt(s, 10, 64) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return n +} + +func (r *Lexer) IntStr() int { + return int(r.Int64Str()) +} + +func (r *Lexer) Float32() float32 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseFloat(s, 32) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return float32(n) +} + +func (r *Lexer) Float64() float64 { + s := r.number() + if !r.Ok() { + return 0 + } + + n, err := strconv.ParseFloat(s, 64) + if err != nil { + r.err = &LexerError{ + Reason: err.Error(), + } + } + return n +} + +func (r *Lexer) Error() error { + return r.err +} + +func (r *Lexer) AddError(e error) { + if r.err == nil { + r.err = e + } +} + +// Interface fetches an interface{} analogous to the 'encoding/json' package. +func (r *Lexer) Interface() interface{} { + if r.token.kind == tokenUndef && r.Ok() { + r.fetchToken() + } + + if !r.Ok() { + return nil + } + switch r.token.kind { + case tokenString: + return r.String() + case tokenNumber: + return r.Float64() + case tokenBool: + return r.Bool() + case tokenNull: + r.Null() + return nil + } + + if r.token.delimValue == '{' { + r.consume() + + ret := map[string]interface{}{} + for !r.IsDelim('}') { + key := r.String() + r.WantColon() + ret[key] = r.Interface() + r.WantComma() + } + r.Delim('}') + + if r.Ok() { + return ret + } else { + return nil + } + } else if r.token.delimValue == '[' { + r.consume() + + var ret []interface{} + for !r.IsDelim(']') { + ret = append(ret, r.Interface()) + r.WantComma() + } + r.Delim(']') + + if r.Ok() { + return ret + } else { + return nil + } + } + r.errSyntax() + return nil +} + +// WantComma requires a comma to be present before fetching next token. +func (r *Lexer) WantComma() { + r.wantSep = ',' + r.firstElement = false +} + +// WantColon requires a colon to be present before fetching next token. +func (r *Lexer) WantColon() { + r.wantSep = ':' + r.firstElement = false +} diff --git a/vendor/github.com/mailru/easyjson/jwriter/writer.go b/vendor/github.com/mailru/easyjson/jwriter/writer.go new file mode 100644 index 0000000000..907675f9ca --- /dev/null +++ b/vendor/github.com/mailru/easyjson/jwriter/writer.go @@ -0,0 +1,273 @@ +// Package jwriter contains a JSON writer. +package jwriter + +import ( + "io" + "strconv" + "unicode/utf8" + + "github.com/mailru/easyjson/buffer" +) + +// Writer is a JSON writer. +type Writer struct { + Error error + Buffer buffer.Buffer +} + +// Size returns the size of the data that was written out. +func (w *Writer) Size() int { + return w.Buffer.Size() +} + +// DumpTo outputs the data to given io.Writer, resetting the buffer. +func (w *Writer) DumpTo(out io.Writer) (written int, err error) { + return w.Buffer.DumpTo(out) +} + +// BuildBytes returns writer data as a single byte slice. +func (w *Writer) BuildBytes() ([]byte, error) { + if w.Error != nil { + return nil, w.Error + } + + return w.Buffer.BuildBytes(), nil +} + +// RawByte appends raw binary data to the buffer. +func (w *Writer) RawByte(c byte) { + w.Buffer.AppendByte(c) +} + +// RawByte appends raw binary data to the buffer. +func (w *Writer) RawString(s string) { + w.Buffer.AppendString(s) +} + +// RawByte appends raw binary data to the buffer or sets the error if it is given. Useful for +// calling with results of MarshalJSON-like functions. +func (w *Writer) Raw(data []byte, err error) { + switch { + case w.Error != nil: + return + case err != nil: + w.Error = err + case len(data) > 0: + w.Buffer.AppendBytes(data) + default: + w.RawString("null") + } +} + +func (w *Writer) Uint8(n uint8) { + w.Buffer.EnsureSpace(3) + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) +} + +func (w *Writer) Uint16(n uint16) { + w.Buffer.EnsureSpace(5) + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) +} + +func (w *Writer) Uint32(n uint32) { + w.Buffer.EnsureSpace(10) + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) +} + +func (w *Writer) Uint(n uint) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) +} + +func (w *Writer) Uint64(n uint64) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, n, 10) +} + +func (w *Writer) Int8(n int8) { + w.Buffer.EnsureSpace(4) + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) +} + +func (w *Writer) Int16(n int16) { + w.Buffer.EnsureSpace(6) + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) +} + +func (w *Writer) Int32(n int32) { + w.Buffer.EnsureSpace(11) + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) +} + +func (w *Writer) Int(n int) { + w.Buffer.EnsureSpace(21) + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) +} + +func (w *Writer) Int64(n int64) { + w.Buffer.EnsureSpace(21) + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, n, 10) +} + +func (w *Writer) Uint8Str(n uint8) { + w.Buffer.EnsureSpace(3) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Uint16Str(n uint16) { + w.Buffer.EnsureSpace(5) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Uint32Str(n uint32) { + w.Buffer.EnsureSpace(10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) UintStr(n uint) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, uint64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Uint64Str(n uint64) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendUint(w.Buffer.Buf, n, 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Int8Str(n int8) { + w.Buffer.EnsureSpace(4) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Int16Str(n int16) { + w.Buffer.EnsureSpace(6) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Int32Str(n int32) { + w.Buffer.EnsureSpace(11) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) IntStr(n int) { + w.Buffer.EnsureSpace(21) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, int64(n), 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Int64Str(n int64) { + w.Buffer.EnsureSpace(21) + w.Buffer.Buf = append(w.Buffer.Buf, '"') + w.Buffer.Buf = strconv.AppendInt(w.Buffer.Buf, n, 10) + w.Buffer.Buf = append(w.Buffer.Buf, '"') +} + +func (w *Writer) Float32(n float32) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = strconv.AppendFloat(w.Buffer.Buf, float64(n), 'g', -1, 32) +} + +func (w *Writer) Float64(n float64) { + w.Buffer.EnsureSpace(20) + w.Buffer.Buf = strconv.AppendFloat(w.Buffer.Buf, n, 'g', -1, 64) +} + +func (w *Writer) Bool(v bool) { + w.Buffer.EnsureSpace(5) + if v { + w.Buffer.Buf = append(w.Buffer.Buf, "true"...) + } else { + w.Buffer.Buf = append(w.Buffer.Buf, "false"...) + } +} + +const chars = "0123456789abcdef" + +func (w *Writer) String(s string) { + w.Buffer.AppendByte('"') + + // Portions of the string that contain no escapes are appended as + // byte slices. + + p := 0 // last non-escape symbol + + for i := 0; i < len(s); { + // single-with character + if c := s[i]; c < utf8.RuneSelf { + var escape byte + switch c { + case '\t': + escape = 't' + case '\r': + escape = 'r' + case '\n': + escape = 'n' + case '\\': + escape = '\\' + case '"': + escape = '"' + case '<', '>': + // do nothing + default: + if c >= 0x20 { + // no escaping is required + i++ + continue + } + } + if escape != 0 { + w.Buffer.AppendString(s[p:i]) + w.Buffer.AppendByte('\\') + w.Buffer.AppendByte(escape) + } else { + w.Buffer.AppendString(s[p:i]) + w.Buffer.AppendString(`\u00`) + w.Buffer.AppendByte(chars[c>>4]) + w.Buffer.AppendByte(chars[c&0xf]) + } + i++ + p = i + continue + } + + // broken utf + runeValue, runeWidth := utf8.DecodeRuneInString(s[i:]) + if runeValue == utf8.RuneError && runeWidth == 1 { + w.Buffer.AppendString(s[p:i]) + w.Buffer.AppendString(`\ufffd`) + i++ + p = i + continue + } + + // jsonp stuff - tab separator and line separator + if runeValue == '\u2028' || runeValue == '\u2029' { + w.Buffer.AppendString(s[p:i]) + w.Buffer.AppendString(`\u202`) + w.Buffer.AppendByte(chars[runeValue&0xf]) + i += runeWidth + p = i + continue + } + i += runeWidth + } + w.Buffer.AppendString(s[p:]) + w.Buffer.AppendByte('"') +} diff --git a/vendor/github.com/pborman/uuid/CONTRIBUTORS b/vendor/github.com/pborman/uuid/CONTRIBUTORS new file mode 100644 index 0000000000..b382a04eda --- /dev/null +++ b/vendor/github.com/pborman/uuid/CONTRIBUTORS @@ -0,0 +1 @@ +Paul Borman diff --git a/vendor/github.com/pborman/uuid/LICENSE b/vendor/github.com/pborman/uuid/LICENSE new file mode 100644 index 0000000000..5dc68268d9 --- /dev/null +++ b/vendor/github.com/pborman/uuid/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009,2014 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pborman/uuid/dce.go b/vendor/github.com/pborman/uuid/dce.go new file mode 100755 index 0000000000..50a0f2d099 --- /dev/null +++ b/vendor/github.com/pborman/uuid/dce.go @@ -0,0 +1,84 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "fmt" + "os" +) + +// A Domain represents a Version 2 domain +type Domain byte + +// Domain constants for DCE Security (Version 2) UUIDs. +const ( + Person = Domain(0) + Group = Domain(1) + Org = Domain(2) +) + +// NewDCESecurity returns a DCE Security (Version 2) UUID. +// +// The domain should be one of Person, Group or Org. +// On a POSIX system the id should be the users UID for the Person +// domain and the users GID for the Group. The meaning of id for +// the domain Org or on non-POSIX systems is site defined. +// +// For a given domain/id pair the same token may be returned for up to +// 7 minutes and 10 seconds. +func NewDCESecurity(domain Domain, id uint32) UUID { + uuid := NewUUID() + if uuid != nil { + uuid[6] = (uuid[6] & 0x0f) | 0x20 // Version 2 + uuid[9] = byte(domain) + binary.BigEndian.PutUint32(uuid[0:], id) + } + return uuid +} + +// NewDCEPerson returns a DCE Security (Version 2) UUID in the person +// domain with the id returned by os.Getuid. +// +// NewDCEPerson(Person, uint32(os.Getuid())) +func NewDCEPerson() UUID { + return NewDCESecurity(Person, uint32(os.Getuid())) +} + +// NewDCEGroup returns a DCE Security (Version 2) UUID in the group +// domain with the id returned by os.Getgid. +// +// NewDCEGroup(Group, uint32(os.Getgid())) +func NewDCEGroup() UUID { + return NewDCESecurity(Group, uint32(os.Getgid())) +} + +// Domain returns the domain for a Version 2 UUID or false. +func (uuid UUID) Domain() (Domain, bool) { + if v, _ := uuid.Version(); v != 2 { + return 0, false + } + return Domain(uuid[9]), true +} + +// Id returns the id for a Version 2 UUID or false. +func (uuid UUID) Id() (uint32, bool) { + if v, _ := uuid.Version(); v != 2 { + return 0, false + } + return binary.BigEndian.Uint32(uuid[0:4]), true +} + +func (d Domain) String() string { + switch d { + case Person: + return "Person" + case Group: + return "Group" + case Org: + return "Org" + } + return fmt.Sprintf("Domain%d", int(d)) +} diff --git a/vendor/github.com/pborman/uuid/doc.go b/vendor/github.com/pborman/uuid/doc.go new file mode 100755 index 0000000000..d8bd013e68 --- /dev/null +++ b/vendor/github.com/pborman/uuid/doc.go @@ -0,0 +1,8 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The uuid package generates and inspects UUIDs. +// +// UUIDs are based on RFC 4122 and DCE 1.1: Authentication and Security Services. +package uuid diff --git a/vendor/github.com/pborman/uuid/hash.go b/vendor/github.com/pborman/uuid/hash.go new file mode 100644 index 0000000000..cdd4192fd9 --- /dev/null +++ b/vendor/github.com/pborman/uuid/hash.go @@ -0,0 +1,53 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "crypto/md5" + "crypto/sha1" + "hash" +) + +// Well known Name Space IDs and UUIDs +var ( + NameSpace_DNS = Parse("6ba7b810-9dad-11d1-80b4-00c04fd430c8") + NameSpace_URL = Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8") + NameSpace_OID = Parse("6ba7b812-9dad-11d1-80b4-00c04fd430c8") + NameSpace_X500 = Parse("6ba7b814-9dad-11d1-80b4-00c04fd430c8") + NIL = Parse("00000000-0000-0000-0000-000000000000") +) + +// NewHash returns a new UUID dervied from the hash of space concatenated with +// data generated by h. The hash should be at least 16 byte in length. The +// first 16 bytes of the hash are used to form the UUID. The version of the +// UUID will be the lower 4 bits of version. NewHash is used to implement +// NewMD5 and NewSHA1. +func NewHash(h hash.Hash, space UUID, data []byte, version int) UUID { + h.Reset() + h.Write(space) + h.Write([]byte(data)) + s := h.Sum(nil) + uuid := make([]byte, 16) + copy(uuid, s) + uuid[6] = (uuid[6] & 0x0f) | uint8((version&0xf)<<4) + uuid[8] = (uuid[8] & 0x3f) | 0x80 // RFC 4122 variant + return uuid +} + +// NewMD5 returns a new MD5 (Version 3) UUID based on the +// supplied name space and data. +// +// NewHash(md5.New(), space, data, 3) +func NewMD5(space UUID, data []byte) UUID { + return NewHash(md5.New(), space, data, 3) +} + +// NewSHA1 returns a new SHA1 (Version 5) UUID based on the +// supplied name space and data. +// +// NewHash(sha1.New(), space, data, 5) +func NewSHA1(space UUID, data []byte) UUID { + return NewHash(sha1.New(), space, data, 5) +} diff --git a/vendor/github.com/pborman/uuid/json.go b/vendor/github.com/pborman/uuid/json.go new file mode 100644 index 0000000000..760580a504 --- /dev/null +++ b/vendor/github.com/pborman/uuid/json.go @@ -0,0 +1,30 @@ +// Copyright 2014 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "errors" + +func (u UUID) MarshalJSON() ([]byte, error) { + if len(u) == 0 { + return []byte(`""`), nil + } + return []byte(`"` + u.String() + `"`), nil +} + +func (u *UUID) UnmarshalJSON(data []byte) error { + if len(data) == 0 || string(data) == `""` { + return nil + } + if len(data) < 2 || data[0] != '"' || data[len(data)-1] != '"' { + return errors.New("invalid UUID format") + } + data = data[1 : len(data)-1] + uu := Parse(string(data)) + if uu == nil { + return errors.New("invalid UUID format") + } + *u = uu + return nil +} diff --git a/vendor/github.com/pborman/uuid/node.go b/vendor/github.com/pborman/uuid/node.go new file mode 100755 index 0000000000..dd0a8ac189 --- /dev/null +++ b/vendor/github.com/pborman/uuid/node.go @@ -0,0 +1,101 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import "net" + +var ( + interfaces []net.Interface // cached list of interfaces + ifname string // name of interface being used + nodeID []byte // hardware for version 1 UUIDs +) + +// NodeInterface returns the name of the interface from which the NodeID was +// derived. The interface "user" is returned if the NodeID was set by +// SetNodeID. +func NodeInterface() string { + return ifname +} + +// SetNodeInterface selects the hardware address to be used for Version 1 UUIDs. +// If name is "" then the first usable interface found will be used or a random +// Node ID will be generated. If a named interface cannot be found then false +// is returned. +// +// SetNodeInterface never fails when name is "". +func SetNodeInterface(name string) bool { + if interfaces == nil { + var err error + interfaces, err = net.Interfaces() + if err != nil && name != "" { + return false + } + } + + for _, ifs := range interfaces { + if len(ifs.HardwareAddr) >= 6 && (name == "" || name == ifs.Name) { + if setNodeID(ifs.HardwareAddr) { + ifname = ifs.Name + return true + } + } + } + + // We found no interfaces with a valid hardware address. If name + // does not specify a specific interface generate a random Node ID + // (section 4.1.6) + if name == "" { + if nodeID == nil { + nodeID = make([]byte, 6) + } + randomBits(nodeID) + return true + } + return false +} + +// NodeID returns a slice of a copy of the current Node ID, setting the Node ID +// if not already set. +func NodeID() []byte { + if nodeID == nil { + SetNodeInterface("") + } + nid := make([]byte, 6) + copy(nid, nodeID) + return nid +} + +// SetNodeID sets the Node ID to be used for Version 1 UUIDs. The first 6 bytes +// of id are used. If id is less than 6 bytes then false is returned and the +// Node ID is not set. +func SetNodeID(id []byte) bool { + if setNodeID(id) { + ifname = "user" + return true + } + return false +} + +func setNodeID(id []byte) bool { + if len(id) < 6 { + return false + } + if nodeID == nil { + nodeID = make([]byte, 6) + } + copy(nodeID, id) + return true +} + +// NodeID returns the 6 byte node id encoded in uuid. It returns nil if uuid is +// not valid. The NodeID is only well defined for version 1 and 2 UUIDs. +func (uuid UUID) NodeID() []byte { + if len(uuid) != 16 { + return nil + } + node := make([]byte, 6) + copy(node, uuid[10:]) + return node +} diff --git a/vendor/github.com/pborman/uuid/time.go b/vendor/github.com/pborman/uuid/time.go new file mode 100755 index 0000000000..7ebc9bef10 --- /dev/null +++ b/vendor/github.com/pborman/uuid/time.go @@ -0,0 +1,132 @@ +// Copyright 2014 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" + "sync" + "time" +) + +// A Time represents a time as the number of 100's of nanoseconds since 15 Oct +// 1582. +type Time int64 + +const ( + lillian = 2299160 // Julian day of 15 Oct 1582 + unix = 2440587 // Julian day of 1 Jan 1970 + epoch = unix - lillian // Days between epochs + g1582 = epoch * 86400 // seconds between epochs + g1582ns100 = g1582 * 10000000 // 100s of a nanoseconds between epochs +) + +var ( + mu sync.Mutex + lasttime uint64 // last time we returned + clock_seq uint16 // clock sequence for this run + + timeNow = time.Now // for testing +) + +// UnixTime converts t the number of seconds and nanoseconds using the Unix +// epoch of 1 Jan 1970. +func (t Time) UnixTime() (sec, nsec int64) { + sec = int64(t - g1582ns100) + nsec = (sec % 10000000) * 100 + sec /= 10000000 + return sec, nsec +} + +// GetTime returns the current Time (100s of nanoseconds since 15 Oct 1582) and +// clock sequence as well as adjusting the clock sequence as needed. An error +// is returned if the current time cannot be determined. +func GetTime() (Time, uint16, error) { + defer mu.Unlock() + mu.Lock() + return getTime() +} + +func getTime() (Time, uint16, error) { + t := timeNow() + + // If we don't have a clock sequence already, set one. + if clock_seq == 0 { + setClockSequence(-1) + } + now := uint64(t.UnixNano()/100) + g1582ns100 + + // If time has gone backwards with this clock sequence then we + // increment the clock sequence + if now <= lasttime { + clock_seq = ((clock_seq + 1) & 0x3fff) | 0x8000 + } + lasttime = now + return Time(now), clock_seq, nil +} + +// ClockSequence returns the current clock sequence, generating one if not +// already set. The clock sequence is only used for Version 1 UUIDs. +// +// The uuid package does not use global static storage for the clock sequence or +// the last time a UUID was generated. Unless SetClockSequence a new random +// clock sequence is generated the first time a clock sequence is requested by +// ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) sequence is generated +// for +func ClockSequence() int { + defer mu.Unlock() + mu.Lock() + return clockSequence() +} + +func clockSequence() int { + if clock_seq == 0 { + setClockSequence(-1) + } + return int(clock_seq & 0x3fff) +} + +// SetClockSeq sets the clock sequence to the lower 14 bits of seq. Setting to +// -1 causes a new sequence to be generated. +func SetClockSequence(seq int) { + defer mu.Unlock() + mu.Lock() + setClockSequence(seq) +} + +func setClockSequence(seq int) { + if seq == -1 { + var b [2]byte + randomBits(b[:]) // clock sequence + seq = int(b[0])<<8 | int(b[1]) + } + old_seq := clock_seq + clock_seq = uint16(seq&0x3fff) | 0x8000 // Set our variant + if old_seq != clock_seq { + lasttime = 0 + } +} + +// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in +// uuid. It returns false if uuid is not valid. The time is only well defined +// for version 1 and 2 UUIDs. +func (uuid UUID) Time() (Time, bool) { + if len(uuid) != 16 { + return 0, false + } + time := int64(binary.BigEndian.Uint32(uuid[0:4])) + time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32 + time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48 + return Time(time), true +} + +// ClockSequence returns the clock sequence encoded in uuid. It returns false +// if uuid is not valid. The clock sequence is only well defined for version 1 +// and 2 UUIDs. +func (uuid UUID) ClockSequence() (int, bool) { + if len(uuid) != 16 { + return 0, false + } + return int(binary.BigEndian.Uint16(uuid[8:10])) & 0x3fff, true +} diff --git a/vendor/github.com/pborman/uuid/util.go b/vendor/github.com/pborman/uuid/util.go new file mode 100644 index 0000000000..de40b102c4 --- /dev/null +++ b/vendor/github.com/pborman/uuid/util.go @@ -0,0 +1,43 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "io" +) + +// randomBits completely fills slice b with random data. +func randomBits(b []byte) { + if _, err := io.ReadFull(rander, b); err != nil { + panic(err.Error()) // rand should never fail + } +} + +// xvalues returns the value of a byte as a hexadecimal digit or 255. +var xvalues = []byte{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 10, 11, 12, 13, 14, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +} + +// xtob converts the the first two hex bytes of x into a byte. +func xtob(x string) (byte, bool) { + b1 := xvalues[x[0]] + b2 := xvalues[x[1]] + return (b1 << 4) | b2, b1 != 255 && b2 != 255 +} diff --git a/vendor/github.com/pborman/uuid/uuid.go b/vendor/github.com/pborman/uuid/uuid.go new file mode 100755 index 0000000000..2920fae632 --- /dev/null +++ b/vendor/github.com/pborman/uuid/uuid.go @@ -0,0 +1,163 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "bytes" + "crypto/rand" + "fmt" + "io" + "strings" +) + +// A UUID is a 128 bit (16 byte) Universal Unique IDentifier as defined in RFC +// 4122. +type UUID []byte + +// A Version represents a UUIDs version. +type Version byte + +// A Variant represents a UUIDs variant. +type Variant byte + +// Constants returned by Variant. +const ( + Invalid = Variant(iota) // Invalid UUID + RFC4122 // The variant specified in RFC4122 + Reserved // Reserved, NCS backward compatibility. + Microsoft // Reserved, Microsoft Corporation backward compatibility. + Future // Reserved for future definition. +) + +var rander = rand.Reader // random function + +// New returns a new random (version 4) UUID as a string. It is a convenience +// function for NewRandom().String(). +func New() string { + return NewRandom().String() +} + +// Parse decodes s into a UUID or returns nil. Both the UUID form of +// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx are decoded. +func Parse(s string) UUID { + if len(s) == 36+9 { + if strings.ToLower(s[:9]) != "urn:uuid:" { + return nil + } + s = s[9:] + } else if len(s) != 36 { + return nil + } + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return nil + } + uuid := make([]byte, 16) + for i, x := range []int{ + 0, 2, 4, 6, + 9, 11, + 14, 16, + 19, 21, + 24, 26, 28, 30, 32, 34} { + if v, ok := xtob(s[x:]); !ok { + return nil + } else { + uuid[i] = v + } + } + return uuid +} + +// Equal returns true if uuid1 and uuid2 are equal. +func Equal(uuid1, uuid2 UUID) bool { + return bytes.Equal(uuid1, uuid2) +} + +// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +// , or "" if uuid is invalid. +func (uuid UUID) String() string { + if uuid == nil || len(uuid) != 16 { + return "" + } + b := []byte(uuid) + return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x", + b[:4], b[4:6], b[6:8], b[8:10], b[10:]) +} + +// URN returns the RFC 2141 URN form of uuid, +// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid. +func (uuid UUID) URN() string { + if uuid == nil || len(uuid) != 16 { + return "" + } + b := []byte(uuid) + return fmt.Sprintf("urn:uuid:%08x-%04x-%04x-%04x-%012x", + b[:4], b[4:6], b[6:8], b[8:10], b[10:]) +} + +// Variant returns the variant encoded in uuid. It returns Invalid if +// uuid is invalid. +func (uuid UUID) Variant() Variant { + if len(uuid) != 16 { + return Invalid + } + switch { + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + default: + return Reserved + } + panic("unreachable") +} + +// Version returns the verison of uuid. It returns false if uuid is not +// valid. +func (uuid UUID) Version() (Version, bool) { + if len(uuid) != 16 { + return 0, false + } + return Version(uuid[6] >> 4), true +} + +func (v Version) String() string { + if v > 15 { + return fmt.Sprintf("BAD_VERSION_%d", v) + } + return fmt.Sprintf("VERSION_%d", v) +} + +func (v Variant) String() string { + switch v { + case RFC4122: + return "RFC4122" + case Reserved: + return "Reserved" + case Microsoft: + return "Microsoft" + case Future: + return "Future" + case Invalid: + return "Invalid" + } + return fmt.Sprintf("BadVariant%d", int(v)) +} + +// SetRand sets the random number generator to r, which implents io.Reader. +// If r.Read returns an error when the package requests random data then +// a panic will be issued. +// +// Calling SetRand with nil sets the random number generator to the default +// generator. +func SetRand(r io.Reader) { + if r == nil { + rander = rand.Reader + return + } + rander = r +} diff --git a/vendor/github.com/pborman/uuid/version1.go b/vendor/github.com/pborman/uuid/version1.go new file mode 100644 index 0000000000..0127eacfab --- /dev/null +++ b/vendor/github.com/pborman/uuid/version1.go @@ -0,0 +1,41 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +import ( + "encoding/binary" +) + +// NewUUID returns a Version 1 UUID based on the current NodeID and clock +// sequence, and the current time. If the NodeID has not been set by SetNodeID +// or SetNodeInterface then it will be set automatically. If the NodeID cannot +// be set NewUUID returns nil. If clock sequence has not been set by +// SetClockSequence then it will be set automatically. If GetTime fails to +// return the current NewUUID returns nil. +func NewUUID() UUID { + if nodeID == nil { + SetNodeInterface("") + } + + now, seq, err := GetTime() + if err != nil { + return nil + } + + uuid := make([]byte, 16) + + time_low := uint32(now & 0xffffffff) + time_mid := uint16((now >> 32) & 0xffff) + time_hi := uint16((now >> 48) & 0x0fff) + time_hi |= 0x1000 // Version 1 + + binary.BigEndian.PutUint32(uuid[0:], time_low) + binary.BigEndian.PutUint16(uuid[4:], time_mid) + binary.BigEndian.PutUint16(uuid[6:], time_hi) + binary.BigEndian.PutUint16(uuid[8:], seq) + copy(uuid[10:], nodeID) + + return uuid +} diff --git a/vendor/github.com/pborman/uuid/version4.go b/vendor/github.com/pborman/uuid/version4.go new file mode 100644 index 0000000000..b3d4a368dd --- /dev/null +++ b/vendor/github.com/pborman/uuid/version4.go @@ -0,0 +1,25 @@ +// Copyright 2011 Google Inc. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package uuid + +// Random returns a Random (Version 4) UUID or panics. +// +// The strength of the UUIDs is based on the strength of the crypto/rand +// package. +// +// A note about uniqueness derived from from the UUID Wikipedia entry: +// +// Randomly generated UUIDs have 122 random bits. One's annual risk of being +// hit by a meteorite is estimated to be one chance in 17 billion, that +// means the probability is about 0.00000000006 (6 × 10−11), +// equivalent to the odds of creating a few tens of trillions of UUIDs in a +// year and having one duplicate. +func NewRandom() UUID { + uuid := make([]byte, 16) + randomBits([]byte(uuid)) + uuid[6] = (uuid[6] & 0x0f) | 0x40 // Version 4 + uuid[8] = (uuid[8] & 0x3f) | 0x80 // Variant is 10 + return uuid +} diff --git a/vendor/github.com/pmezard/go-difflib/LICENSE b/vendor/github.com/pmezard/go-difflib/LICENSE new file mode 100644 index 0000000000..c67dad612a --- /dev/null +++ b/vendor/github.com/pmezard/go-difflib/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2013, Patrick Mezard +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + The names of its contributors may not be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pmezard/go-difflib/difflib/difflib.go b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go new file mode 100644 index 0000000000..64cc40fe1d --- /dev/null +++ b/vendor/github.com/pmezard/go-difflib/difflib/difflib.go @@ -0,0 +1,758 @@ +// Package difflib is a partial port of Python difflib module. +// +// It provides tools to compare sequences of strings and generate textual diffs. +// +// The following class and functions have been ported: +// +// - SequenceMatcher +// +// - unified_diff +// +// - context_diff +// +// Getting unified diffs was the main goal of the port. Keep in mind this code +// is mostly suitable to output text differences in a human friendly way, there +// are no guarantees generated diffs are consumable by patch(1). +package difflib + +import ( + "bufio" + "bytes" + "fmt" + "io" + "strings" +) + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func calculateRatio(matches, length int) float64 { + if length > 0 { + return 2.0 * float64(matches) / float64(length) + } + return 1.0 +} + +type Match struct { + A int + B int + Size int +} + +type OpCode struct { + Tag byte + I1 int + I2 int + J1 int + J2 int +} + +// SequenceMatcher compares sequence of strings. The basic +// algorithm predates, and is a little fancier than, an algorithm +// published in the late 1980's by Ratcliff and Obershelp under the +// hyperbolic name "gestalt pattern matching". The basic idea is to find +// the longest contiguous matching subsequence that contains no "junk" +// elements (R-O doesn't address junk). The same idea is then applied +// recursively to the pieces of the sequences to the left and to the right +// of the matching subsequence. This does not yield minimal edit +// sequences, but does tend to yield matches that "look right" to people. +// +// SequenceMatcher tries to compute a "human-friendly diff" between two +// sequences. Unlike e.g. UNIX(tm) diff, the fundamental notion is the +// longest *contiguous* & junk-free matching subsequence. That's what +// catches peoples' eyes. The Windows(tm) windiff has another interesting +// notion, pairing up elements that appear uniquely in each sequence. +// That, and the method here, appear to yield more intuitive difference +// reports than does diff. This method appears to be the least vulnerable +// to synching up on blocks of "junk lines", though (like blank lines in +// ordinary text files, or maybe "

" lines in HTML files). That may be +// because this is the only method of the 3 that has a *concept* of +// "junk" . +// +// Timing: Basic R-O is cubic time worst case and quadratic time expected +// case. SequenceMatcher is quadratic time for the worst case and has +// expected-case behavior dependent in a complicated way on how many +// elements the sequences have in common; best case time is linear. +type SequenceMatcher struct { + a []string + b []string + b2j map[string][]int + IsJunk func(string) bool + autoJunk bool + bJunk map[string]struct{} + matchingBlocks []Match + fullBCount map[string]int + bPopular map[string]struct{} + opCodes []OpCode +} + +func NewMatcher(a, b []string) *SequenceMatcher { + m := SequenceMatcher{autoJunk: true} + m.SetSeqs(a, b) + return &m +} + +func NewMatcherWithJunk(a, b []string, autoJunk bool, + isJunk func(string) bool) *SequenceMatcher { + + m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk} + m.SetSeqs(a, b) + return &m +} + +// Set two sequences to be compared. +func (m *SequenceMatcher) SetSeqs(a, b []string) { + m.SetSeq1(a) + m.SetSeq2(b) +} + +// Set the first sequence to be compared. The second sequence to be compared is +// not changed. +// +// SequenceMatcher computes and caches detailed information about the second +// sequence, so if you want to compare one sequence S against many sequences, +// use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other +// sequences. +// +// See also SetSeqs() and SetSeq2(). +func (m *SequenceMatcher) SetSeq1(a []string) { + if &a == &m.a { + return + } + m.a = a + m.matchingBlocks = nil + m.opCodes = nil +} + +// Set the second sequence to be compared. The first sequence to be compared is +// not changed. +func (m *SequenceMatcher) SetSeq2(b []string) { + if &b == &m.b { + return + } + m.b = b + m.matchingBlocks = nil + m.opCodes = nil + m.fullBCount = nil + m.chainB() +} + +func (m *SequenceMatcher) chainB() { + // Populate line -> index mapping + b2j := map[string][]int{} + for i, s := range m.b { + indices := b2j[s] + indices = append(indices, i) + b2j[s] = indices + } + + // Purge junk elements + m.bJunk = map[string]struct{}{} + if m.IsJunk != nil { + junk := m.bJunk + for s, _ := range b2j { + if m.IsJunk(s) { + junk[s] = struct{}{} + } + } + for s, _ := range junk { + delete(b2j, s) + } + } + + // Purge remaining popular elements + popular := map[string]struct{}{} + n := len(m.b) + if m.autoJunk && n >= 200 { + ntest := n/100 + 1 + for s, indices := range b2j { + if len(indices) > ntest { + popular[s] = struct{}{} + } + } + for s, _ := range popular { + delete(b2j, s) + } + } + m.bPopular = popular + m.b2j = b2j +} + +func (m *SequenceMatcher) isBJunk(s string) bool { + _, ok := m.bJunk[s] + return ok +} + +// Find longest matching block in a[alo:ahi] and b[blo:bhi]. +// +// If IsJunk is not defined: +// +// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where +// alo <= i <= i+k <= ahi +// blo <= j <= j+k <= bhi +// and for all (i',j',k') meeting those conditions, +// k >= k' +// i <= i' +// and if i == i', j <= j' +// +// In other words, of all maximal matching blocks, return one that +// starts earliest in a, and of all those maximal matching blocks that +// start earliest in a, return the one that starts earliest in b. +// +// If IsJunk is defined, first the longest matching block is +// determined as above, but with the additional restriction that no +// junk element appears in the block. Then that block is extended as +// far as possible by matching (only) junk elements on both sides. So +// the resulting block never matches on junk except as identical junk +// happens to be adjacent to an "interesting" match. +// +// If no blocks match, return (alo, blo, 0). +func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Match { + // CAUTION: stripping common prefix or suffix would be incorrect. + // E.g., + // ab + // acab + // Longest matching block is "ab", but if common prefix is + // stripped, it's "a" (tied with "b"). UNIX(tm) diff does so + // strip, so ends up claiming that ab is changed to acab by + // inserting "ca" in the middle. That's minimal but unintuitive: + // "it's obvious" that someone inserted "ac" at the front. + // Windiff ends up at the same place as diff, but by pairing up + // the unique 'b's and then matching the first two 'a's. + besti, bestj, bestsize := alo, blo, 0 + + // find longest junk-free match + // during an iteration of the loop, j2len[j] = length of longest + // junk-free match ending with a[i-1] and b[j] + j2len := map[int]int{} + for i := alo; i != ahi; i++ { + // look at all instances of a[i] in b; note that because + // b2j has no junk keys, the loop is skipped if a[i] is junk + newj2len := map[int]int{} + for _, j := range m.b2j[m.a[i]] { + // a[i] matches b[j] + if j < blo { + continue + } + if j >= bhi { + break + } + k := j2len[j-1] + 1 + newj2len[j] = k + if k > bestsize { + besti, bestj, bestsize = i-k+1, j-k+1, k + } + } + j2len = newj2len + } + + // Extend the best by non-junk elements on each end. In particular, + // "popular" non-junk elements aren't in b2j, which greatly speeds + // the inner loop above, but also means "the best" match so far + // doesn't contain any junk *or* popular non-junk elements. + for besti > alo && bestj > blo && !m.isBJunk(m.b[bestj-1]) && + m.a[besti-1] == m.b[bestj-1] { + besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 + } + for besti+bestsize < ahi && bestj+bestsize < bhi && + !m.isBJunk(m.b[bestj+bestsize]) && + m.a[besti+bestsize] == m.b[bestj+bestsize] { + bestsize += 1 + } + + // Now that we have a wholly interesting match (albeit possibly + // empty!), we may as well suck up the matching junk on each + // side of it too. Can't think of a good reason not to, and it + // saves post-processing the (possibly considerable) expense of + // figuring out what to do with it. In the case of an empty + // interesting match, this is clearly the right thing to do, + // because no other kind of match is possible in the regions. + for besti > alo && bestj > blo && m.isBJunk(m.b[bestj-1]) && + m.a[besti-1] == m.b[bestj-1] { + besti, bestj, bestsize = besti-1, bestj-1, bestsize+1 + } + for besti+bestsize < ahi && bestj+bestsize < bhi && + m.isBJunk(m.b[bestj+bestsize]) && + m.a[besti+bestsize] == m.b[bestj+bestsize] { + bestsize += 1 + } + + return Match{A: besti, B: bestj, Size: bestsize} +} + +// Return list of triples describing matching subsequences. +// +// Each triple is of the form (i, j, n), and means that +// a[i:i+n] == b[j:j+n]. The triples are monotonically increasing in +// i and in j. It's also guaranteed that if (i, j, n) and (i', j', n') are +// adjacent triples in the list, and the second is not the last triple in the +// list, then i+n != i' or j+n != j'. IOW, adjacent triples never describe +// adjacent equal blocks. +// +// The last triple is a dummy, (len(a), len(b), 0), and is the only +// triple with n==0. +func (m *SequenceMatcher) GetMatchingBlocks() []Match { + if m.matchingBlocks != nil { + return m.matchingBlocks + } + + var matchBlocks func(alo, ahi, blo, bhi int, matched []Match) []Match + matchBlocks = func(alo, ahi, blo, bhi int, matched []Match) []Match { + match := m.findLongestMatch(alo, ahi, blo, bhi) + i, j, k := match.A, match.B, match.Size + if match.Size > 0 { + if alo < i && blo < j { + matched = matchBlocks(alo, i, blo, j, matched) + } + matched = append(matched, match) + if i+k < ahi && j+k < bhi { + matched = matchBlocks(i+k, ahi, j+k, bhi, matched) + } + } + return matched + } + matched := matchBlocks(0, len(m.a), 0, len(m.b), nil) + + // It's possible that we have adjacent equal blocks in the + // matching_blocks list now. + nonAdjacent := []Match{} + i1, j1, k1 := 0, 0, 0 + for _, b := range matched { + // Is this block adjacent to i1, j1, k1? + i2, j2, k2 := b.A, b.B, b.Size + if i1+k1 == i2 && j1+k1 == j2 { + // Yes, so collapse them -- this just increases the length of + // the first block by the length of the second, and the first + // block so lengthened remains the block to compare against. + k1 += k2 + } else { + // Not adjacent. Remember the first block (k1==0 means it's + // the dummy we started with), and make the second block the + // new block to compare against. + if k1 > 0 { + nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) + } + i1, j1, k1 = i2, j2, k2 + } + } + if k1 > 0 { + nonAdjacent = append(nonAdjacent, Match{i1, j1, k1}) + } + + nonAdjacent = append(nonAdjacent, Match{len(m.a), len(m.b), 0}) + m.matchingBlocks = nonAdjacent + return m.matchingBlocks +} + +// Return list of 5-tuples describing how to turn a into b. +// +// Each tuple is of the form (tag, i1, i2, j1, j2). The first tuple +// has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the +// tuple preceding it, and likewise for j1 == the previous j2. +// +// The tags are characters, with these meanings: +// +// 'r' (replace): a[i1:i2] should be replaced by b[j1:j2] +// +// 'd' (delete): a[i1:i2] should be deleted, j1==j2 in this case. +// +// 'i' (insert): b[j1:j2] should be inserted at a[i1:i1], i1==i2 in this case. +// +// 'e' (equal): a[i1:i2] == b[j1:j2] +func (m *SequenceMatcher) GetOpCodes() []OpCode { + if m.opCodes != nil { + return m.opCodes + } + i, j := 0, 0 + matching := m.GetMatchingBlocks() + opCodes := make([]OpCode, 0, len(matching)) + for _, m := range matching { + // invariant: we've pumped out correct diffs to change + // a[:i] into b[:j], and the next matching block is + // a[ai:ai+size] == b[bj:bj+size]. So we need to pump + // out a diff to change a[i:ai] into b[j:bj], pump out + // the matching block, and move (i,j) beyond the match + ai, bj, size := m.A, m.B, m.Size + tag := byte(0) + if i < ai && j < bj { + tag = 'r' + } else if i < ai { + tag = 'd' + } else if j < bj { + tag = 'i' + } + if tag > 0 { + opCodes = append(opCodes, OpCode{tag, i, ai, j, bj}) + } + i, j = ai+size, bj+size + // the list of matching blocks is terminated by a + // sentinel with size 0 + if size > 0 { + opCodes = append(opCodes, OpCode{'e', ai, i, bj, j}) + } + } + m.opCodes = opCodes + return m.opCodes +} + +// Isolate change clusters by eliminating ranges with no changes. +// +// Return a generator of groups with up to n lines of context. +// Each group is in the same format as returned by GetOpCodes(). +func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode { + if n < 0 { + n = 3 + } + codes := m.GetOpCodes() + if len(codes) == 0 { + codes = []OpCode{OpCode{'e', 0, 1, 0, 1}} + } + // Fixup leading and trailing groups if they show no changes. + if codes[0].Tag == 'e' { + c := codes[0] + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + codes[0] = OpCode{c.Tag, max(i1, i2-n), i2, max(j1, j2-n), j2} + } + if codes[len(codes)-1].Tag == 'e' { + c := codes[len(codes)-1] + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + codes[len(codes)-1] = OpCode{c.Tag, i1, min(i2, i1+n), j1, min(j2, j1+n)} + } + nn := n + n + groups := [][]OpCode{} + group := []OpCode{} + for _, c := range codes { + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + // End the current group and start a new one whenever + // there is a large range with no changes. + if c.Tag == 'e' && i2-i1 > nn { + group = append(group, OpCode{c.Tag, i1, min(i2, i1+n), + j1, min(j2, j1+n)}) + groups = append(groups, group) + group = []OpCode{} + i1, j1 = max(i1, i2-n), max(j1, j2-n) + } + group = append(group, OpCode{c.Tag, i1, i2, j1, j2}) + } + if len(group) > 0 && !(len(group) == 1 && group[0].Tag == 'e') { + groups = append(groups, group) + } + return groups +} + +// Return a measure of the sequences' similarity (float in [0,1]). +// +// Where T is the total number of elements in both sequences, and +// M is the number of matches, this is 2.0*M / T. +// Note that this is 1 if the sequences are identical, and 0 if +// they have nothing in common. +// +// .Ratio() is expensive to compute if you haven't already computed +// .GetMatchingBlocks() or .GetOpCodes(), in which case you may +// want to try .QuickRatio() or .RealQuickRation() first to get an +// upper bound. +func (m *SequenceMatcher) Ratio() float64 { + matches := 0 + for _, m := range m.GetMatchingBlocks() { + matches += m.Size + } + return calculateRatio(matches, len(m.a)+len(m.b)) +} + +// Return an upper bound on ratio() relatively quickly. +// +// This isn't defined beyond that it is an upper bound on .Ratio(), and +// is faster to compute. +func (m *SequenceMatcher) QuickRatio() float64 { + // viewing a and b as multisets, set matches to the cardinality + // of their intersection; this counts the number of matches + // without regard to order, so is clearly an upper bound + if m.fullBCount == nil { + m.fullBCount = map[string]int{} + for _, s := range m.b { + m.fullBCount[s] = m.fullBCount[s] + 1 + } + } + + // avail[x] is the number of times x appears in 'b' less the + // number of times we've seen it in 'a' so far ... kinda + avail := map[string]int{} + matches := 0 + for _, s := range m.a { + n, ok := avail[s] + if !ok { + n = m.fullBCount[s] + } + avail[s] = n - 1 + if n > 0 { + matches += 1 + } + } + return calculateRatio(matches, len(m.a)+len(m.b)) +} + +// Return an upper bound on ratio() very quickly. +// +// This isn't defined beyond that it is an upper bound on .Ratio(), and +// is faster to compute than either .Ratio() or .QuickRatio(). +func (m *SequenceMatcher) RealQuickRatio() float64 { + la, lb := len(m.a), len(m.b) + return calculateRatio(min(la, lb), la+lb) +} + +// Convert range to the "ed" format +func formatRangeUnified(start, stop int) string { + // Per the diff spec at http://www.unix.org/single_unix_specification/ + beginning := start + 1 // lines start numbering with one + length := stop - start + if length == 1 { + return fmt.Sprintf("%d", beginning) + } + if length == 0 { + beginning -= 1 // empty ranges begin at line just before the range + } + return fmt.Sprintf("%d,%d", beginning, length) +} + +// Unified diff parameters +type UnifiedDiff struct { + A []string // First sequence lines + FromFile string // First file name + FromDate string // First file time + B []string // Second sequence lines + ToFile string // Second file name + ToDate string // Second file time + Eol string // Headers end of line, defaults to LF + Context int // Number of context lines +} + +// Compare two sequences of lines; generate the delta as a unified diff. +// +// Unified diffs are a compact way of showing line changes and a few +// lines of context. The number of context lines is set by 'n' which +// defaults to three. +// +// By default, the diff control lines (those with ---, +++, or @@) are +// created with a trailing newline. This is helpful so that inputs +// created from file.readlines() result in diffs that are suitable for +// file.writelines() since both the inputs and outputs have trailing +// newlines. +// +// For inputs that do not have trailing newlines, set the lineterm +// argument to "" so that the output will be uniformly newline free. +// +// The unidiff format normally has a header for filenames and modification +// times. Any or all of these may be specified using strings for +// 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'. +// The modification times are normally expressed in the ISO 8601 format. +func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error { + buf := bufio.NewWriter(writer) + defer buf.Flush() + w := func(format string, args ...interface{}) error { + _, err := buf.WriteString(fmt.Sprintf(format, args...)) + return err + } + + if len(diff.Eol) == 0 { + diff.Eol = "\n" + } + + started := false + m := NewMatcher(diff.A, diff.B) + for _, g := range m.GetGroupedOpCodes(diff.Context) { + if !started { + started = true + fromDate := "" + if len(diff.FromDate) > 0 { + fromDate = "\t" + diff.FromDate + } + toDate := "" + if len(diff.ToDate) > 0 { + toDate = "\t" + diff.ToDate + } + err := w("--- %s%s%s", diff.FromFile, fromDate, diff.Eol) + if err != nil { + return err + } + err = w("+++ %s%s%s", diff.ToFile, toDate, diff.Eol) + if err != nil { + return err + } + } + first, last := g[0], g[len(g)-1] + range1 := formatRangeUnified(first.I1, last.I2) + range2 := formatRangeUnified(first.J1, last.J2) + if err := w("@@ -%s +%s @@%s", range1, range2, diff.Eol); err != nil { + return err + } + for _, c := range g { + i1, i2, j1, j2 := c.I1, c.I2, c.J1, c.J2 + if c.Tag == 'e' { + for _, line := range diff.A[i1:i2] { + if err := w(" " + line); err != nil { + return err + } + } + continue + } + if c.Tag == 'r' || c.Tag == 'd' { + for _, line := range diff.A[i1:i2] { + if err := w("-" + line); err != nil { + return err + } + } + } + if c.Tag == 'r' || c.Tag == 'i' { + for _, line := range diff.B[j1:j2] { + if err := w("+" + line); err != nil { + return err + } + } + } + } + } + return nil +} + +// Like WriteUnifiedDiff but returns the diff a string. +func GetUnifiedDiffString(diff UnifiedDiff) (string, error) { + w := &bytes.Buffer{} + err := WriteUnifiedDiff(w, diff) + return string(w.Bytes()), err +} + +// Convert range to the "ed" format. +func formatRangeContext(start, stop int) string { + // Per the diff spec at http://www.unix.org/single_unix_specification/ + beginning := start + 1 // lines start numbering with one + length := stop - start + if length == 0 { + beginning -= 1 // empty ranges begin at line just before the range + } + if length <= 1 { + return fmt.Sprintf("%d", beginning) + } + return fmt.Sprintf("%d,%d", beginning, beginning+length-1) +} + +type ContextDiff UnifiedDiff + +// Compare two sequences of lines; generate the delta as a context diff. +// +// Context diffs are a compact way of showing line changes and a few +// lines of context. The number of context lines is set by diff.Context +// which defaults to three. +// +// By default, the diff control lines (those with *** or ---) are +// created with a trailing newline. +// +// For inputs that do not have trailing newlines, set the diff.Eol +// argument to "" so that the output will be uniformly newline free. +// +// The context diff format normally has a header for filenames and +// modification times. Any or all of these may be specified using +// strings for diff.FromFile, diff.ToFile, diff.FromDate, diff.ToDate. +// The modification times are normally expressed in the ISO 8601 format. +// If not specified, the strings default to blanks. +func WriteContextDiff(writer io.Writer, diff ContextDiff) error { + buf := bufio.NewWriter(writer) + defer buf.Flush() + var diffErr error + w := func(format string, args ...interface{}) { + _, err := buf.WriteString(fmt.Sprintf(format, args...)) + if diffErr == nil && err != nil { + diffErr = err + } + } + + if len(diff.Eol) == 0 { + diff.Eol = "\n" + } + + prefix := map[byte]string{ + 'i': "+ ", + 'd': "- ", + 'r': "! ", + 'e': " ", + } + + started := false + m := NewMatcher(diff.A, diff.B) + for _, g := range m.GetGroupedOpCodes(diff.Context) { + if !started { + started = true + fromDate := "" + if len(diff.FromDate) > 0 { + fromDate = "\t" + diff.FromDate + } + toDate := "" + if len(diff.ToDate) > 0 { + toDate = "\t" + diff.ToDate + } + w("*** %s%s%s", diff.FromFile, fromDate, diff.Eol) + w("--- %s%s%s", diff.ToFile, toDate, diff.Eol) + } + + first, last := g[0], g[len(g)-1] + w("***************" + diff.Eol) + + range1 := formatRangeContext(first.I1, last.I2) + w("*** %s ****%s", range1, diff.Eol) + for _, c := range g { + if c.Tag == 'r' || c.Tag == 'd' { + for _, cc := range g { + if cc.Tag == 'i' { + continue + } + for _, line := range diff.A[cc.I1:cc.I2] { + w(prefix[cc.Tag] + line) + } + } + break + } + } + + range2 := formatRangeContext(first.J1, last.J2) + w("--- %s ----%s", range2, diff.Eol) + for _, c := range g { + if c.Tag == 'r' || c.Tag == 'i' { + for _, cc := range g { + if cc.Tag == 'd' { + continue + } + for _, line := range diff.B[cc.J1:cc.J2] { + w(prefix[cc.Tag] + line) + } + } + break + } + } + } + return diffErr +} + +// Like WriteContextDiff but returns the diff a string. +func GetContextDiffString(diff ContextDiff) (string, error) { + w := &bytes.Buffer{} + err := WriteContextDiff(w, diff) + return string(w.Bytes()), err +} + +// Split a string on "\n" while preserving them. The output can be used +// as input for UnifiedDiff and ContextDiff structures. +func SplitLines(s string) []string { + lines := strings.SplitAfter(s, "\n") + lines[len(lines)-1] += "\n" + return lines +} diff --git a/vendor/github.com/spf13/pflag/LICENSE b/vendor/github.com/spf13/pflag/LICENSE new file mode 100644 index 0000000000..63ed1cfea1 --- /dev/null +++ b/vendor/github.com/spf13/pflag/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2012 Alex Ogier. All rights reserved. +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/spf13/pflag/bool.go b/vendor/github.com/spf13/pflag/bool.go new file mode 100644 index 0000000000..d272e40bdd --- /dev/null +++ b/vendor/github.com/spf13/pflag/bool.go @@ -0,0 +1,97 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// optional interface to indicate boolean flags that can be +// supplied without "=value" text +type boolFlag interface { + Value + IsBoolFlag() bool +} + +// -- bool Value +type boolValue bool + +func newBoolValue(val bool, p *bool) *boolValue { + *p = val + return (*boolValue)(p) +} + +func (b *boolValue) Set(s string) error { + v, err := strconv.ParseBool(s) + *b = boolValue(v) + return err +} + +func (b *boolValue) Type() string { + return "bool" +} + +func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) } + +func (b *boolValue) IsBoolFlag() bool { return true } + +func boolConv(sval string) (interface{}, error) { + return strconv.ParseBool(sval) +} + +// GetBool return the bool value of a flag with the given name +func (f *FlagSet) GetBool(name string) (bool, error) { + val, err := f.getFlagType(name, "bool", boolConv) + if err != nil { + return false, err + } + return val.(bool), nil +} + +// BoolVar defines a bool flag with specified name, default value, and usage string. +// The argument p points to a bool variable in which to store the value of the flag. +func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) { + f.BoolVarP(p, name, "", value, usage) +} + +// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolVarP(p *bool, name, shorthand string, value bool, usage string) { + flag := f.VarPF(newBoolValue(value, p), name, shorthand, usage) + flag.NoOptDefVal = "true" +} + +// BoolVar defines a bool flag with specified name, default value, and usage string. +// The argument p points to a bool variable in which to store the value of the flag. +func BoolVar(p *bool, name string, value bool, usage string) { + BoolVarP(p, name, "", value, usage) +} + +// BoolVarP is like BoolVar, but accepts a shorthand letter that can be used after a single dash. +func BoolVarP(p *bool, name, shorthand string, value bool, usage string) { + flag := CommandLine.VarPF(newBoolValue(value, p), name, shorthand, usage) + flag.NoOptDefVal = "true" +} + +// Bool defines a bool flag with specified name, default value, and usage string. +// The return value is the address of a bool variable that stores the value of the flag. +func (f *FlagSet) Bool(name string, value bool, usage string) *bool { + return f.BoolP(name, "", value, usage) +} + +// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BoolP(name, shorthand string, value bool, usage string) *bool { + p := new(bool) + f.BoolVarP(p, name, shorthand, value, usage) + return p +} + +// Bool defines a bool flag with specified name, default value, and usage string. +// The return value is the address of a bool variable that stores the value of the flag. +func Bool(name string, value bool, usage string) *bool { + return BoolP(name, "", value, usage) +} + +// BoolP is like Bool, but accepts a shorthand letter that can be used after a single dash. +func BoolP(name, shorthand string, value bool, usage string) *bool { + b := CommandLine.BoolP(name, shorthand, value, usage) + return b +} diff --git a/vendor/github.com/spf13/pflag/count.go b/vendor/github.com/spf13/pflag/count.go new file mode 100644 index 0000000000..7b1f142e78 --- /dev/null +++ b/vendor/github.com/spf13/pflag/count.go @@ -0,0 +1,97 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- count Value +type countValue int + +func newCountValue(val int, p *int) *countValue { + *p = val + return (*countValue)(p) +} + +func (i *countValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + // -1 means that no specific value was passed, so increment + if v == -1 { + *i = countValue(*i + 1) + } else { + *i = countValue(v) + } + return err +} + +func (i *countValue) Type() string { + return "count" +} + +func (i *countValue) String() string { return fmt.Sprintf("%v", *i) } + +func countConv(sval string) (interface{}, error) { + i, err := strconv.Atoi(sval) + if err != nil { + return nil, err + } + return i, nil +} + +// GetCount return the int value of a flag with the given name +func (f *FlagSet) GetCount(name string) (int, error) { + val, err := f.getFlagType(name, "count", countConv) + if err != nil { + return 0, err + } + return val.(int), nil +} + +// CountVar defines a count flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +// A count flag will add 1 to its value evey time it is found on the command line +func (f *FlagSet) CountVar(p *int, name string, usage string) { + f.CountVarP(p, name, "", usage) +} + +// CountVarP is like CountVar only take a shorthand for the flag name. +func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) { + flag := f.VarPF(newCountValue(0, p), name, shorthand, usage) + flag.NoOptDefVal = "-1" +} + +// CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set +func CountVar(p *int, name string, usage string) { + CommandLine.CountVar(p, name, usage) +} + +// CountVarP is like CountVar only take a shorthand for the flag name. +func CountVarP(p *int, name, shorthand string, usage string) { + CommandLine.CountVarP(p, name, shorthand, usage) +} + +// Count defines a count flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +// A count flag will add 1 to its value evey time it is found on the command line +func (f *FlagSet) Count(name string, usage string) *int { + p := new(int) + f.CountVarP(p, name, "", usage) + return p +} + +// CountP is like Count only takes a shorthand for the flag name. +func (f *FlagSet) CountP(name, shorthand string, usage string) *int { + p := new(int) + f.CountVarP(p, name, shorthand, usage) + return p +} + +// Count like Count only the flag is placed on the CommandLine isntead of a given flag set +func Count(name string, usage string) *int { + return CommandLine.CountP(name, "", usage) +} + +// CountP is like Count only takes a shorthand for the flag name. +func CountP(name, shorthand string, usage string) *int { + return CommandLine.CountP(name, shorthand, usage) +} diff --git a/vendor/github.com/spf13/pflag/duration.go b/vendor/github.com/spf13/pflag/duration.go new file mode 100644 index 0000000000..e9debef88e --- /dev/null +++ b/vendor/github.com/spf13/pflag/duration.go @@ -0,0 +1,86 @@ +package pflag + +import ( + "time" +) + +// -- time.Duration Value +type durationValue time.Duration + +func newDurationValue(val time.Duration, p *time.Duration) *durationValue { + *p = val + return (*durationValue)(p) +} + +func (d *durationValue) Set(s string) error { + v, err := time.ParseDuration(s) + *d = durationValue(v) + return err +} + +func (d *durationValue) Type() string { + return "duration" +} + +func (d *durationValue) String() string { return (*time.Duration)(d).String() } + +func durationConv(sval string) (interface{}, error) { + return time.ParseDuration(sval) +} + +// GetDuration return the duration value of a flag with the given name +func (f *FlagSet) GetDuration(name string) (time.Duration, error) { + val, err := f.getFlagType(name, "duration", durationConv) + if err != nil { + return 0, err + } + return val.(time.Duration), nil +} + +// DurationVar defines a time.Duration flag with specified name, default value, and usage string. +// The argument p points to a time.Duration variable in which to store the value of the flag. +func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) { + f.VarP(newDurationValue(value, p), name, "", usage) +} + +// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { + f.VarP(newDurationValue(value, p), name, shorthand, usage) +} + +// DurationVar defines a time.Duration flag with specified name, default value, and usage string. +// The argument p points to a time.Duration variable in which to store the value of the flag. +func DurationVar(p *time.Duration, name string, value time.Duration, usage string) { + CommandLine.VarP(newDurationValue(value, p), name, "", usage) +} + +// DurationVarP is like DurationVar, but accepts a shorthand letter that can be used after a single dash. +func DurationVarP(p *time.Duration, name, shorthand string, value time.Duration, usage string) { + CommandLine.VarP(newDurationValue(value, p), name, shorthand, usage) +} + +// Duration defines a time.Duration flag with specified name, default value, and usage string. +// The return value is the address of a time.Duration variable that stores the value of the flag. +func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration { + p := new(time.Duration) + f.DurationVarP(p, name, "", value, usage) + return p +} + +// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { + p := new(time.Duration) + f.DurationVarP(p, name, shorthand, value, usage) + return p +} + +// Duration defines a time.Duration flag with specified name, default value, and usage string. +// The return value is the address of a time.Duration variable that stores the value of the flag. +func Duration(name string, value time.Duration, usage string) *time.Duration { + return CommandLine.DurationP(name, "", value, usage) +} + +// DurationP is like Duration, but accepts a shorthand letter that can be used after a single dash. +func DurationP(name, shorthand string, value time.Duration, usage string) *time.Duration { + return CommandLine.DurationP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go new file mode 100644 index 0000000000..965df13797 --- /dev/null +++ b/vendor/github.com/spf13/pflag/flag.go @@ -0,0 +1,934 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package pflag is a drop-in replacement for Go's flag package, implementing +POSIX/GNU-style --flags. + +pflag is compatible with the GNU extensions to the POSIX recommendations +for command-line options. See +http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html + +Usage: + +pflag is a drop-in replacement of Go's native flag package. If you import +pflag under the name "flag" then all code should continue to function +with no changes. + + import flag "github.com/ogier/pflag" + + There is one exception to this: if you directly instantiate the Flag struct +there is one more field "Shorthand" that you will need to set. +Most code never instantiates this struct directly, and instead uses +functions such as String(), BoolVar(), and Var(), and is therefore +unaffected. + +Define flags using flag.String(), Bool(), Int(), etc. + +This declares an integer flag, -flagname, stored in the pointer ip, with type *int. + var ip = flag.Int("flagname", 1234, "help message for flagname") +If you like, you can bind the flag to a variable using the Var() functions. + var flagvar int + func init() { + flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname") + } +Or you can create custom flags that satisfy the Value interface (with +pointer receivers) and couple them to flag parsing by + flag.Var(&flagVal, "name", "help message for flagname") +For such flags, the default value is just the initial value of the variable. + +After all flags are defined, call + flag.Parse() +to parse the command line into the defined flags. + +Flags may then be used directly. If you're using the flags themselves, +they are all pointers; if you bind to variables, they're values. + fmt.Println("ip has value ", *ip) + fmt.Println("flagvar has value ", flagvar) + +After parsing, the arguments after the flag are available as the +slice flag.Args() or individually as flag.Arg(i). +The arguments are indexed from 0 through flag.NArg()-1. + +The pflag package also defines some new functions that are not in flag, +that give one-letter shorthands for flags. You can use these by appending +'P' to the name of any function that defines a flag. + var ip = flag.IntP("flagname", "f", 1234, "help message") + var flagvar bool + func init() { + flag.BoolVarP("boolname", "b", true, "help message") + } + flag.VarP(&flagVar, "varname", "v", 1234, "help message") +Shorthand letters can be used with single dashes on the command line. +Boolean shorthand flags can be combined with other shorthand flags. + +Command line flag syntax: + --flag // boolean flags only + --flag=x + +Unlike the flag package, a single dash before an option means something +different than a double dash. Single dashes signify a series of shorthand +letters for flags. All but the last shorthand letter must be boolean flags. + // boolean flags + -f + -abc + // non-boolean flags + -n 1234 + -Ifile + // mixed + -abcs "hello" + -abcn1234 + +Flag parsing stops after the terminator "--". Unlike the flag package, +flags can be interspersed with arguments anywhere on the command line +before this terminator. + +Integer flags accept 1234, 0664, 0x1234 and may be negative. +Boolean flags (in their long form) accept 1, 0, t, f, true, false, +TRUE, FALSE, True, False. +Duration flags accept any input valid for time.ParseDuration. + +The default set of command-line flags is controlled by +top-level functions. The FlagSet type allows one to define +independent sets of flags, such as to implement subcommands +in a command-line interface. The methods of FlagSet are +analogous to the top-level functions for the command-line +flag set. +*/ +package pflag + +import ( + "bytes" + "errors" + "fmt" + "io" + "os" + "sort" + "strings" +) + +// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined. +var ErrHelp = errors.New("pflag: help requested") + +// ErrorHandling defines how to handle flag parsing errors. +type ErrorHandling int + +const ( + // ContinueOnError will return an err from Parse() if an error is found + ContinueOnError ErrorHandling = iota + // ExitOnError will call os.Exit(2) if an error is found when parsing + ExitOnError + // PanicOnError will panic() if an error is found when parsing flags + PanicOnError +) + +// NormalizedName is a flag name that has been normalized according to rules +// for the FlagSet (e.g. making '-' and '_' equivalent). +type NormalizedName string + +// A FlagSet represents a set of defined flags. +type FlagSet struct { + // Usage is the function called when an error occurs while parsing flags. + // The field is a function (not a method) that may be changed to point to + // a custom error handler. + Usage func() + + name string + parsed bool + actual map[NormalizedName]*Flag + formal map[NormalizedName]*Flag + shorthands map[byte]*Flag + args []string // arguments after flags + argsLenAtDash int // len(args) when a '--' was located when parsing, or -1 if no -- + exitOnError bool // does the program exit if there's an error? + errorHandling ErrorHandling + output io.Writer // nil means stderr; use out() accessor + interspersed bool // allow interspersed option/non-option args + normalizeNameFunc func(f *FlagSet, name string) NormalizedName +} + +// A Flag represents the state of a flag. +type Flag struct { + Name string // name as it appears on command line + Shorthand string // one-letter abbreviated flag + Usage string // help message + Value Value // value as set + DefValue string // default value (as text); for usage message + Changed bool // If the user set the value (or if left to default) + NoOptDefVal string //default value (as text); if the flag is on the command line without any options + Deprecated string // If this flag is deprecated, this string is the new or now thing to use + Hidden bool // used by cobra.Command to allow flags to be hidden from help/usage text + ShorthandDeprecated string // If the shorthand of this flag is deprecated, this string is the new or now thing to use + Annotations map[string][]string // used by cobra.Command bash autocomple code +} + +// Value is the interface to the dynamic value stored in a flag. +// (The default value is represented as a string.) +type Value interface { + String() string + Set(string) error + Type() string +} + +// sortFlags returns the flags as a slice in lexicographical sorted order. +func sortFlags(flags map[NormalizedName]*Flag) []*Flag { + list := make(sort.StringSlice, len(flags)) + i := 0 + for k := range flags { + list[i] = string(k) + i++ + } + list.Sort() + result := make([]*Flag, len(list)) + for i, name := range list { + result[i] = flags[NormalizedName(name)] + } + return result +} + +// SetNormalizeFunc allows you to add a function which can translate flag names. +// Flags added to the FlagSet will be translated and then when anything tries to +// look up the flag that will also be translated. So it would be possible to create +// a flag named "getURL" and have it translated to "geturl". A user could then pass +// "--getUrl" which may also be translated to "geturl" and everything will work. +func (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) NormalizedName) { + f.normalizeNameFunc = n + for k, v := range f.formal { + delete(f.formal, k) + nname := f.normalizeFlagName(string(k)) + f.formal[nname] = v + v.Name = string(nname) + } +} + +// GetNormalizeFunc returns the previously set NormalizeFunc of a function which +// does no translation, if not set previously. +func (f *FlagSet) GetNormalizeFunc() func(f *FlagSet, name string) NormalizedName { + if f.normalizeNameFunc != nil { + return f.normalizeNameFunc + } + return func(f *FlagSet, name string) NormalizedName { return NormalizedName(name) } +} + +func (f *FlagSet) normalizeFlagName(name string) NormalizedName { + n := f.GetNormalizeFunc() + return n(f, name) +} + +func (f *FlagSet) out() io.Writer { + if f.output == nil { + return os.Stderr + } + return f.output +} + +// SetOutput sets the destination for usage and error messages. +// If output is nil, os.Stderr is used. +func (f *FlagSet) SetOutput(output io.Writer) { + f.output = output +} + +// VisitAll visits the flags in lexicographical order, calling fn for each. +// It visits all flags, even those not set. +func (f *FlagSet) VisitAll(fn func(*Flag)) { + for _, flag := range sortFlags(f.formal) { + fn(flag) + } +} + +// HasFlags returns a bool to indicate if the FlagSet has any flags definied. +func (f *FlagSet) HasFlags() bool { + return len(f.formal) > 0 +} + +// HasAvailableFlags returns a bool to indicate if the FlagSet has any flags +// definied that are not hidden or deprecated. +func (f *FlagSet) HasAvailableFlags() bool { + for _, flag := range f.formal { + if !flag.Hidden && len(flag.Deprecated) == 0 { + return true + } + } + return false +} + +// VisitAll visits the command-line flags in lexicographical order, calling +// fn for each. It visits all flags, even those not set. +func VisitAll(fn func(*Flag)) { + CommandLine.VisitAll(fn) +} + +// Visit visits the flags in lexicographical order, calling fn for each. +// It visits only those flags that have been set. +func (f *FlagSet) Visit(fn func(*Flag)) { + for _, flag := range sortFlags(f.actual) { + fn(flag) + } +} + +// Visit visits the command-line flags in lexicographical order, calling fn +// for each. It visits only those flags that have been set. +func Visit(fn func(*Flag)) { + CommandLine.Visit(fn) +} + +// Lookup returns the Flag structure of the named flag, returning nil if none exists. +func (f *FlagSet) Lookup(name string) *Flag { + return f.lookup(f.normalizeFlagName(name)) +} + +// lookup returns the Flag structure of the named flag, returning nil if none exists. +func (f *FlagSet) lookup(name NormalizedName) *Flag { + return f.formal[name] +} + +// func to return a given type for a given flag name +func (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval string) (interface{}, error)) (interface{}, error) { + flag := f.Lookup(name) + if flag == nil { + err := fmt.Errorf("flag accessed but not defined: %s", name) + return nil, err + } + + if flag.Value.Type() != ftype { + err := fmt.Errorf("trying to get %s value of flag of type %s", ftype, flag.Value.Type()) + return nil, err + } + + sval := flag.Value.String() + result, err := convFunc(sval) + if err != nil { + return nil, err + } + return result, nil +} + +// ArgsLenAtDash will return the length of f.Args at the moment when a -- was +// found during arg parsing. This allows your program to know which args were +// before the -- and which came after. +func (f *FlagSet) ArgsLenAtDash() int { + return f.argsLenAtDash +} + +// MarkDeprecated indicated that a flag is deprecated in your program. It will +// continue to function but will not show up in help or usage messages. Using +// this flag will also print the given usageMessage. +func (f *FlagSet) MarkDeprecated(name string, usageMessage string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + if len(usageMessage) == 0 { + return fmt.Errorf("deprecated message for flag %q must be set", name) + } + flag.Deprecated = usageMessage + return nil +} + +// MarkShorthandDeprecated will mark the shorthand of a flag deprecated in your +// program. It will continue to function but will not show up in help or usage +// messages. Using this flag will also print the given usageMessage. +func (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + if len(usageMessage) == 0 { + return fmt.Errorf("deprecated message for flag %q must be set", name) + } + flag.ShorthandDeprecated = usageMessage + return nil +} + +// MarkHidden sets a flag to 'hidden' in your program. It will continue to +// function but will not show up in help or usage messages. +func (f *FlagSet) MarkHidden(name string) error { + flag := f.Lookup(name) + if flag == nil { + return fmt.Errorf("flag %q does not exist", name) + } + flag.Hidden = true + return nil +} + +// Lookup returns the Flag structure of the named command-line flag, +// returning nil if none exists. +func Lookup(name string) *Flag { + return CommandLine.Lookup(name) +} + +// Set sets the value of the named flag. +func (f *FlagSet) Set(name, value string) error { + normalName := f.normalizeFlagName(name) + flag, ok := f.formal[normalName] + if !ok { + return fmt.Errorf("no such flag -%v", name) + } + err := flag.Value.Set(value) + if err != nil { + return err + } + if f.actual == nil { + f.actual = make(map[NormalizedName]*Flag) + } + f.actual[normalName] = flag + flag.Changed = true + if len(flag.Deprecated) > 0 { + fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated) + } + return nil +} + +// SetAnnotation allows one to set arbitrary annotations on a flag in the FlagSet. +// This is sometimes used by spf13/cobra programs which want to generate additional +// bash completion information. +func (f *FlagSet) SetAnnotation(name, key string, values []string) error { + normalName := f.normalizeFlagName(name) + flag, ok := f.formal[normalName] + if !ok { + return fmt.Errorf("no such flag -%v", name) + } + if flag.Annotations == nil { + flag.Annotations = map[string][]string{} + } + flag.Annotations[key] = values + return nil +} + +// Changed returns true if the flag was explicitly set during Parse() and false +// otherwise +func (f *FlagSet) Changed(name string) bool { + flag := f.Lookup(name) + // If a flag doesn't exist, it wasn't changed.... + if flag == nil { + return false + } + return flag.Changed +} + +// Set sets the value of the named command-line flag. +func Set(name, value string) error { + return CommandLine.Set(name, value) +} + +// PrintDefaults prints, to standard error unless configured +// otherwise, the default values of all defined flags in the set. +func (f *FlagSet) PrintDefaults() { + usages := f.FlagUsages() + fmt.Fprintf(f.out(), "%s", usages) +} + +// isZeroValue guesses whether the string represents the zero +// value for a flag. It is not accurate but in practice works OK. +func isZeroValue(value string) bool { + switch value { + case "false": + return true + case "": + return true + case "": + return true + case "0": + return true + } + return false +} + +// UnquoteUsage extracts a back-quoted name from the usage +// string for a flag and returns it and the un-quoted usage. +// Given "a `name` to show" it returns ("name", "a name to show"). +// If there are no back quotes, the name is an educated guess of the +// type of the flag's value, or the empty string if the flag is boolean. +func UnquoteUsage(flag *Flag) (name string, usage string) { + // Look for a back-quoted name, but avoid the strings package. + usage = flag.Usage + for i := 0; i < len(usage); i++ { + if usage[i] == '`' { + for j := i + 1; j < len(usage); j++ { + if usage[j] == '`' { + name = usage[i+1 : j] + usage = usage[:i] + name + usage[j+1:] + return name, usage + } + } + break // Only one back quote; use type name. + } + } + // No explicit name, so use type if we can find one. + name = "value" + switch flag.Value.(type) { + case boolFlag: + name = "" + case *durationValue: + name = "duration" + case *float64Value: + name = "float" + case *intValue, *int64Value: + name = "int" + case *stringValue: + name = "string" + case *uintValue, *uint64Value: + name = "uint" + } + return +} + +// FlagUsages Returns a string containing the usage information for all flags in +// the FlagSet +func (f *FlagSet) FlagUsages() string { + x := new(bytes.Buffer) + + lines := make([]string, 0, len(f.formal)) + + maxlen := 0 + f.VisitAll(func(flag *Flag) { + if len(flag.Deprecated) > 0 || flag.Hidden { + return + } + + line := "" + if len(flag.Shorthand) > 0 && len(flag.ShorthandDeprecated) == 0 { + line = fmt.Sprintf(" -%s, --%s", flag.Shorthand, flag.Name) + } else { + line = fmt.Sprintf(" --%s", flag.Name) + } + + varname, usage := UnquoteUsage(flag) + if len(varname) > 0 { + line += " " + varname + } + if len(flag.NoOptDefVal) > 0 { + switch flag.Value.Type() { + case "string": + line += fmt.Sprintf("[=%q]", flag.NoOptDefVal) + case "bool": + if flag.NoOptDefVal != "true" { + line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) + } + default: + line += fmt.Sprintf("[=%s]", flag.NoOptDefVal) + } + } + + // This special character will be replaced with spacing once the + // correct alignment is calculated + line += "\x00" + if len(line) > maxlen { + maxlen = len(line) + } + + line += usage + if !isZeroValue(flag.DefValue) { + if flag.Value.Type() == "string" { + line += fmt.Sprintf(" (default %q)", flag.DefValue) + } else { + line += fmt.Sprintf(" (default %s)", flag.DefValue) + } + } + + lines = append(lines, line) + }) + + for _, line := range lines { + sidx := strings.Index(line, "\x00") + spacing := strings.Repeat(" ", maxlen-sidx) + fmt.Fprintln(x, line[:sidx], spacing, line[sidx+1:]) + } + + return x.String() +} + +// PrintDefaults prints to standard error the default values of all defined command-line flags. +func PrintDefaults() { + CommandLine.PrintDefaults() +} + +// defaultUsage is the default function to print a usage message. +func defaultUsage(f *FlagSet) { + fmt.Fprintf(f.out(), "Usage of %s:\n", f.name) + f.PrintDefaults() +} + +// NOTE: Usage is not just defaultUsage(CommandLine) +// because it serves (via godoc flag Usage) as the example +// for how to write your own usage function. + +// Usage prints to standard error a usage message documenting all defined command-line flags. +// The function is a variable that may be changed to point to a custom function. +// By default it prints a simple header and calls PrintDefaults; for details about the +// format of the output and how to control it, see the documentation for PrintDefaults. +var Usage = func() { + fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) + PrintDefaults() +} + +// NFlag returns the number of flags that have been set. +func (f *FlagSet) NFlag() int { return len(f.actual) } + +// NFlag returns the number of command-line flags that have been set. +func NFlag() int { return len(CommandLine.actual) } + +// Arg returns the i'th argument. Arg(0) is the first remaining argument +// after flags have been processed. +func (f *FlagSet) Arg(i int) string { + if i < 0 || i >= len(f.args) { + return "" + } + return f.args[i] +} + +// Arg returns the i'th command-line argument. Arg(0) is the first remaining argument +// after flags have been processed. +func Arg(i int) string { + return CommandLine.Arg(i) +} + +// NArg is the number of arguments remaining after flags have been processed. +func (f *FlagSet) NArg() int { return len(f.args) } + +// NArg is the number of arguments remaining after flags have been processed. +func NArg() int { return len(CommandLine.args) } + +// Args returns the non-flag arguments. +func (f *FlagSet) Args() []string { return f.args } + +// Args returns the non-flag command-line arguments. +func Args() []string { return CommandLine.args } + +// Var defines a flag with the specified name and usage string. The type and +// value of the flag are represented by the first argument, of type Value, which +// typically holds a user-defined implementation of Value. For instance, the +// caller could create a flag that turns a comma-separated string into a slice +// of strings by giving the slice the methods of Value; in particular, Set would +// decompose the comma-separated string into the slice. +func (f *FlagSet) Var(value Value, name string, usage string) { + f.VarP(value, name, "", usage) +} + +// VarPF is like VarP, but returns the flag created +func (f *FlagSet) VarPF(value Value, name, shorthand, usage string) *Flag { + // Remember the default value as a string; it won't change. + flag := &Flag{ + Name: name, + Shorthand: shorthand, + Usage: usage, + Value: value, + DefValue: value.String(), + } + f.AddFlag(flag) + return flag +} + +// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) VarP(value Value, name, shorthand, usage string) { + _ = f.VarPF(value, name, shorthand, usage) +} + +// AddFlag will add the flag to the FlagSet +func (f *FlagSet) AddFlag(flag *Flag) { + // Call normalizeFlagName function only once + normalizedFlagName := f.normalizeFlagName(flag.Name) + + _, alreadythere := f.formal[normalizedFlagName] + if alreadythere { + msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name) + fmt.Fprintln(f.out(), msg) + panic(msg) // Happens only if flags are declared with identical names + } + if f.formal == nil { + f.formal = make(map[NormalizedName]*Flag) + } + + flag.Name = string(normalizedFlagName) + f.formal[normalizedFlagName] = flag + + if len(flag.Shorthand) == 0 { + return + } + if len(flag.Shorthand) > 1 { + fmt.Fprintf(f.out(), "%s shorthand more than ASCII character: %s\n", f.name, flag.Shorthand) + panic("shorthand is more than one character") + } + if f.shorthands == nil { + f.shorthands = make(map[byte]*Flag) + } + c := flag.Shorthand[0] + old, alreadythere := f.shorthands[c] + if alreadythere { + fmt.Fprintf(f.out(), "%s shorthand reused: %q for %s already used for %s\n", f.name, c, flag.Name, old.Name) + panic("shorthand redefinition") + } + f.shorthands[c] = flag +} + +// AddFlagSet adds one FlagSet to another. If a flag is already present in f +// the flag from newSet will be ignored +func (f *FlagSet) AddFlagSet(newSet *FlagSet) { + if newSet == nil { + return + } + newSet.VisitAll(func(flag *Flag) { + if f.Lookup(flag.Name) == nil { + f.AddFlag(flag) + } + }) +} + +// Var defines a flag with the specified name and usage string. The type and +// value of the flag are represented by the first argument, of type Value, which +// typically holds a user-defined implementation of Value. For instance, the +// caller could create a flag that turns a comma-separated string into a slice +// of strings by giving the slice the methods of Value; in particular, Set would +// decompose the comma-separated string into the slice. +func Var(value Value, name string, usage string) { + CommandLine.VarP(value, name, "", usage) +} + +// VarP is like Var, but accepts a shorthand letter that can be used after a single dash. +func VarP(value Value, name, shorthand, usage string) { + CommandLine.VarP(value, name, shorthand, usage) +} + +// failf prints to standard error a formatted error and usage message and +// returns the error. +func (f *FlagSet) failf(format string, a ...interface{}) error { + err := fmt.Errorf(format, a...) + fmt.Fprintln(f.out(), err) + f.usage() + return err +} + +// usage calls the Usage method for the flag set, or the usage function if +// the flag set is CommandLine. +func (f *FlagSet) usage() { + if f == CommandLine { + Usage() + } else if f.Usage == nil { + defaultUsage(f) + } else { + f.Usage() + } +} + +func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error { + if err := flag.Value.Set(value); err != nil { + return f.failf("invalid argument %q for %s: %v", value, origArg, err) + } + // mark as visited for Visit() + if f.actual == nil { + f.actual = make(map[NormalizedName]*Flag) + } + f.actual[f.normalizeFlagName(flag.Name)] = flag + flag.Changed = true + if len(flag.Deprecated) > 0 { + fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated) + } + if len(flag.ShorthandDeprecated) > 0 && containsShorthand(origArg, flag.Shorthand) { + fmt.Fprintf(os.Stderr, "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated) + } + return nil +} + +func containsShorthand(arg, shorthand string) bool { + // filter out flags -- + if strings.HasPrefix(arg, "-") { + return false + } + arg = strings.SplitN(arg, "=", 2)[0] + return strings.Contains(arg, shorthand) +} + +func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) { + a = args + name := s[2:] + if len(name) == 0 || name[0] == '-' || name[0] == '=' { + err = f.failf("bad flag syntax: %s", s) + return + } + split := strings.SplitN(name, "=", 2) + name = split[0] + flag, alreadythere := f.formal[f.normalizeFlagName(name)] + if !alreadythere { + if name == "help" { // special case for nice help message. + f.usage() + return a, ErrHelp + } + err = f.failf("unknown flag: --%s", name) + return + } + var value string + if len(split) == 2 { + // '--flag=arg' + value = split[1] + } else if len(flag.NoOptDefVal) > 0 { + // '--flag' (arg was optional) + value = flag.NoOptDefVal + } else if len(a) > 0 { + // '--flag arg' + value = a[0] + a = a[1:] + } else { + // '--flag' (arg was required) + err = f.failf("flag needs an argument: %s", s) + return + } + err = f.setFlag(flag, value, s) + return +} + +func (f *FlagSet) parseSingleShortArg(shorthands string, args []string) (outShorts string, outArgs []string, err error) { + if strings.HasPrefix(shorthands, "test.") { + return + } + outArgs = args + outShorts = shorthands[1:] + c := shorthands[0] + + flag, alreadythere := f.shorthands[c] + if !alreadythere { + if c == 'h' { // special case for nice help message. + f.usage() + err = ErrHelp + return + } + //TODO continue on error + err = f.failf("unknown shorthand flag: %q in -%s", c, shorthands) + return + } + var value string + if len(shorthands) > 2 && shorthands[1] == '=' { + value = shorthands[2:] + outShorts = "" + } else if len(flag.NoOptDefVal) > 0 { + value = flag.NoOptDefVal + } else if len(shorthands) > 1 { + value = shorthands[1:] + outShorts = "" + } else if len(args) > 0 { + value = args[0] + outArgs = args[1:] + } else { + err = f.failf("flag needs an argument: %q in -%s", c, shorthands) + return + } + err = f.setFlag(flag, value, shorthands) + return +} + +func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error) { + a = args + shorthands := s[1:] + + for len(shorthands) > 0 { + shorthands, a, err = f.parseSingleShortArg(shorthands, args) + if err != nil { + return + } + } + + return +} + +func (f *FlagSet) parseArgs(args []string) (err error) { + for len(args) > 0 { + s := args[0] + args = args[1:] + if len(s) == 0 || s[0] != '-' || len(s) == 1 { + if !f.interspersed { + f.args = append(f.args, s) + f.args = append(f.args, args...) + return nil + } + f.args = append(f.args, s) + continue + } + + if s[1] == '-' { + if len(s) == 2 { // "--" terminates the flags + f.argsLenAtDash = len(f.args) + f.args = append(f.args, args...) + break + } + args, err = f.parseLongArg(s, args) + } else { + args, err = f.parseShortArg(s, args) + } + if err != nil { + return + } + } + return +} + +// Parse parses flag definitions from the argument list, which should not +// include the command name. Must be called after all flags in the FlagSet +// are defined and before flags are accessed by the program. +// The return value will be ErrHelp if -help was set but not defined. +func (f *FlagSet) Parse(arguments []string) error { + f.parsed = true + f.args = make([]string, 0, len(arguments)) + err := f.parseArgs(arguments) + if err != nil { + switch f.errorHandling { + case ContinueOnError: + return err + case ExitOnError: + os.Exit(2) + case PanicOnError: + panic(err) + } + } + return nil +} + +// Parsed reports whether f.Parse has been called. +func (f *FlagSet) Parsed() bool { + return f.parsed +} + +// Parse parses the command-line flags from os.Args[1:]. Must be called +// after all flags are defined and before flags are accessed by the program. +func Parse() { + // Ignore errors; CommandLine is set for ExitOnError. + CommandLine.Parse(os.Args[1:]) +} + +// SetInterspersed sets whether to support interspersed option/non-option arguments. +func SetInterspersed(interspersed bool) { + CommandLine.SetInterspersed(interspersed) +} + +// Parsed returns true if the command-line flags have been parsed. +func Parsed() bool { + return CommandLine.Parsed() +} + +// CommandLine is the default set of command-line flags, parsed from os.Args. +var CommandLine = NewFlagSet(os.Args[0], ExitOnError) + +// NewFlagSet returns a new, empty flag set with the specified name and +// error handling property. +func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet { + f := &FlagSet{ + name: name, + errorHandling: errorHandling, + argsLenAtDash: -1, + interspersed: true, + } + return f +} + +// SetInterspersed sets whether to support interspersed option/non-option arguments. +func (f *FlagSet) SetInterspersed(interspersed bool) { + f.interspersed = interspersed +} + +// Init sets the name and error handling property for a flag set. +// By default, the zero FlagSet uses an empty name and the +// ContinueOnError error handling policy. +func (f *FlagSet) Init(name string, errorHandling ErrorHandling) { + f.name = name + f.errorHandling = errorHandling + f.argsLenAtDash = -1 +} diff --git a/vendor/github.com/spf13/pflag/float32.go b/vendor/github.com/spf13/pflag/float32.go new file mode 100644 index 0000000000..7683fae1b1 --- /dev/null +++ b/vendor/github.com/spf13/pflag/float32.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- float32 Value +type float32Value float32 + +func newFloat32Value(val float32, p *float32) *float32Value { + *p = val + return (*float32Value)(p) +} + +func (f *float32Value) Set(s string) error { + v, err := strconv.ParseFloat(s, 32) + *f = float32Value(v) + return err +} + +func (f *float32Value) Type() string { + return "float32" +} + +func (f *float32Value) String() string { return fmt.Sprintf("%v", *f) } + +func float32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseFloat(sval, 32) + if err != nil { + return 0, err + } + return float32(v), nil +} + +// GetFloat32 return the float32 value of a flag with the given name +func (f *FlagSet) GetFloat32(name string) (float32, error) { + val, err := f.getFlagType(name, "float32", float32Conv) + if err != nil { + return 0, err + } + return val.(float32), nil +} + +// Float32Var defines a float32 flag with specified name, default value, and usage string. +// The argument p points to a float32 variable in which to store the value of the flag. +func (f *FlagSet) Float32Var(p *float32, name string, value float32, usage string) { + f.VarP(newFloat32Value(value, p), name, "", usage) +} + +// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32VarP(p *float32, name, shorthand string, value float32, usage string) { + f.VarP(newFloat32Value(value, p), name, shorthand, usage) +} + +// Float32Var defines a float32 flag with specified name, default value, and usage string. +// The argument p points to a float32 variable in which to store the value of the flag. +func Float32Var(p *float32, name string, value float32, usage string) { + CommandLine.VarP(newFloat32Value(value, p), name, "", usage) +} + +// Float32VarP is like Float32Var, but accepts a shorthand letter that can be used after a single dash. +func Float32VarP(p *float32, name, shorthand string, value float32, usage string) { + CommandLine.VarP(newFloat32Value(value, p), name, shorthand, usage) +} + +// Float32 defines a float32 flag with specified name, default value, and usage string. +// The return value is the address of a float32 variable that stores the value of the flag. +func (f *FlagSet) Float32(name string, value float32, usage string) *float32 { + p := new(float32) + f.Float32VarP(p, name, "", value, usage) + return p +} + +// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32P(name, shorthand string, value float32, usage string) *float32 { + p := new(float32) + f.Float32VarP(p, name, shorthand, value, usage) + return p +} + +// Float32 defines a float32 flag with specified name, default value, and usage string. +// The return value is the address of a float32 variable that stores the value of the flag. +func Float32(name string, value float32, usage string) *float32 { + return CommandLine.Float32P(name, "", value, usage) +} + +// Float32P is like Float32, but accepts a shorthand letter that can be used after a single dash. +func Float32P(name, shorthand string, value float32, usage string) *float32 { + return CommandLine.Float32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/float64.go b/vendor/github.com/spf13/pflag/float64.go new file mode 100644 index 0000000000..50fbf8cc1a --- /dev/null +++ b/vendor/github.com/spf13/pflag/float64.go @@ -0,0 +1,87 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- float64 Value +type float64Value float64 + +func newFloat64Value(val float64, p *float64) *float64Value { + *p = val + return (*float64Value)(p) +} + +func (f *float64Value) Set(s string) error { + v, err := strconv.ParseFloat(s, 64) + *f = float64Value(v) + return err +} + +func (f *float64Value) Type() string { + return "float64" +} + +func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) } + +func float64Conv(sval string) (interface{}, error) { + return strconv.ParseFloat(sval, 64) +} + +// GetFloat64 return the float64 value of a flag with the given name +func (f *FlagSet) GetFloat64(name string) (float64, error) { + val, err := f.getFlagType(name, "float64", float64Conv) + if err != nil { + return 0, err + } + return val.(float64), nil +} + +// Float64Var defines a float64 flag with specified name, default value, and usage string. +// The argument p points to a float64 variable in which to store the value of the flag. +func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string) { + f.VarP(newFloat64Value(value, p), name, "", usage) +} + +// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64VarP(p *float64, name, shorthand string, value float64, usage string) { + f.VarP(newFloat64Value(value, p), name, shorthand, usage) +} + +// Float64Var defines a float64 flag with specified name, default value, and usage string. +// The argument p points to a float64 variable in which to store the value of the flag. +func Float64Var(p *float64, name string, value float64, usage string) { + CommandLine.VarP(newFloat64Value(value, p), name, "", usage) +} + +// Float64VarP is like Float64Var, but accepts a shorthand letter that can be used after a single dash. +func Float64VarP(p *float64, name, shorthand string, value float64, usage string) { + CommandLine.VarP(newFloat64Value(value, p), name, shorthand, usage) +} + +// Float64 defines a float64 flag with specified name, default value, and usage string. +// The return value is the address of a float64 variable that stores the value of the flag. +func (f *FlagSet) Float64(name string, value float64, usage string) *float64 { + p := new(float64) + f.Float64VarP(p, name, "", value, usage) + return p +} + +// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64P(name, shorthand string, value float64, usage string) *float64 { + p := new(float64) + f.Float64VarP(p, name, shorthand, value, usage) + return p +} + +// Float64 defines a float64 flag with specified name, default value, and usage string. +// The return value is the address of a float64 variable that stores the value of the flag. +func Float64(name string, value float64, usage string) *float64 { + return CommandLine.Float64P(name, "", value, usage) +} + +// Float64P is like Float64, but accepts a shorthand letter that can be used after a single dash. +func Float64P(name, shorthand string, value float64, usage string) *float64 { + return CommandLine.Float64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/golangflag.go b/vendor/github.com/spf13/pflag/golangflag.go new file mode 100644 index 0000000000..b056147fd8 --- /dev/null +++ b/vendor/github.com/spf13/pflag/golangflag.go @@ -0,0 +1,104 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pflag + +import ( + goflag "flag" + "fmt" + "reflect" + "strings" +) + +var _ = fmt.Print + +// flagValueWrapper implements pflag.Value around a flag.Value. The main +// difference here is the addition of the Type method that returns a string +// name of the type. As this is generally unknown, we approximate that with +// reflection. +type flagValueWrapper struct { + inner goflag.Value + flagType string +} + +// We are just copying the boolFlag interface out of goflag as that is what +// they use to decide if a flag should get "true" when no arg is given. +type goBoolFlag interface { + goflag.Value + IsBoolFlag() bool +} + +func wrapFlagValue(v goflag.Value) Value { + // If the flag.Value happens to also be a pflag.Value, just use it directly. + if pv, ok := v.(Value); ok { + return pv + } + + pv := &flagValueWrapper{ + inner: v, + } + + t := reflect.TypeOf(v) + if t.Kind() == reflect.Interface || t.Kind() == reflect.Ptr { + t = t.Elem() + } + + pv.flagType = strings.TrimSuffix(t.Name(), "Value") + return pv +} + +func (v *flagValueWrapper) String() string { + return v.inner.String() +} + +func (v *flagValueWrapper) Set(s string) error { + return v.inner.Set(s) +} + +func (v *flagValueWrapper) Type() string { + return v.flagType +} + +// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag +// If the *flag.Flag.Name was a single character (ex: `v`) it will be accessiblei +// with both `-v` and `--v` in flags. If the golang flag was more than a single +// character (ex: `verbose`) it will only be accessible via `--verbose` +func PFlagFromGoFlag(goflag *goflag.Flag) *Flag { + // Remember the default value as a string; it won't change. + flag := &Flag{ + Name: goflag.Name, + Usage: goflag.Usage, + Value: wrapFlagValue(goflag.Value), + // Looks like golang flags don't set DefValue correctly :-( + //DefValue: goflag.DefValue, + DefValue: goflag.Value.String(), + } + // Ex: if the golang flag was -v, allow both -v and --v to work + if len(flag.Name) == 1 { + flag.Shorthand = flag.Name + } + if fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() { + flag.NoOptDefVal = "true" + } + return flag +} + +// AddGoFlag will add the given *flag.Flag to the pflag.FlagSet +func (f *FlagSet) AddGoFlag(goflag *goflag.Flag) { + if f.Lookup(goflag.Name) != nil { + return + } + newflag := PFlagFromGoFlag(goflag) + f.AddFlag(newflag) +} + +// AddGoFlagSet will add the given *flag.FlagSet to the pflag.FlagSet +func (f *FlagSet) AddGoFlagSet(newSet *goflag.FlagSet) { + if newSet == nil { + return + } + newSet.VisitAll(func(goflag *goflag.Flag) { + f.AddGoFlag(goflag) + }) +} diff --git a/vendor/github.com/spf13/pflag/int.go b/vendor/github.com/spf13/pflag/int.go new file mode 100644 index 0000000000..b6560368a9 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int.go @@ -0,0 +1,87 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- int Value +type intValue int + +func newIntValue(val int, p *int) *intValue { + *p = val + return (*intValue)(p) +} + +func (i *intValue) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i = intValue(v) + return err +} + +func (i *intValue) Type() string { + return "int" +} + +func (i *intValue) String() string { return fmt.Sprintf("%v", *i) } + +func intConv(sval string) (interface{}, error) { + return strconv.Atoi(sval) +} + +// GetInt return the int value of a flag with the given name +func (f *FlagSet) GetInt(name string) (int, error) { + val, err := f.getFlagType(name, "int", intConv) + if err != nil { + return 0, err + } + return val.(int), nil +} + +// IntVar defines an int flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +func (f *FlagSet) IntVar(p *int, name string, value int, usage string) { + f.VarP(newIntValue(value, p), name, "", usage) +} + +// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntVarP(p *int, name, shorthand string, value int, usage string) { + f.VarP(newIntValue(value, p), name, shorthand, usage) +} + +// IntVar defines an int flag with specified name, default value, and usage string. +// The argument p points to an int variable in which to store the value of the flag. +func IntVar(p *int, name string, value int, usage string) { + CommandLine.VarP(newIntValue(value, p), name, "", usage) +} + +// IntVarP is like IntVar, but accepts a shorthand letter that can be used after a single dash. +func IntVarP(p *int, name, shorthand string, value int, usage string) { + CommandLine.VarP(newIntValue(value, p), name, shorthand, usage) +} + +// Int defines an int flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +func (f *FlagSet) Int(name string, value int, usage string) *int { + p := new(int) + f.IntVarP(p, name, "", value, usage) + return p +} + +// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntP(name, shorthand string, value int, usage string) *int { + p := new(int) + f.IntVarP(p, name, shorthand, value, usage) + return p +} + +// Int defines an int flag with specified name, default value, and usage string. +// The return value is the address of an int variable that stores the value of the flag. +func Int(name string, value int, usage string) *int { + return CommandLine.IntP(name, "", value, usage) +} + +// IntP is like Int, but accepts a shorthand letter that can be used after a single dash. +func IntP(name, shorthand string, value int, usage string) *int { + return CommandLine.IntP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int32.go b/vendor/github.com/spf13/pflag/int32.go new file mode 100644 index 0000000000..41659a9aff --- /dev/null +++ b/vendor/github.com/spf13/pflag/int32.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- int32 Value +type int32Value int32 + +func newInt32Value(val int32, p *int32) *int32Value { + *p = val + return (*int32Value)(p) +} + +func (i *int32Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 32) + *i = int32Value(v) + return err +} + +func (i *int32Value) Type() string { + return "int32" +} + +func (i *int32Value) String() string { return fmt.Sprintf("%v", *i) } + +func int32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseInt(sval, 0, 32) + if err != nil { + return 0, err + } + return int32(v), nil +} + +// GetInt32 return the int32 value of a flag with the given name +func (f *FlagSet) GetInt32(name string) (int32, error) { + val, err := f.getFlagType(name, "int32", int32Conv) + if err != nil { + return 0, err + } + return val.(int32), nil +} + +// Int32Var defines an int32 flag with specified name, default value, and usage string. +// The argument p points to an int32 variable in which to store the value of the flag. +func (f *FlagSet) Int32Var(p *int32, name string, value int32, usage string) { + f.VarP(newInt32Value(value, p), name, "", usage) +} + +// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32VarP(p *int32, name, shorthand string, value int32, usage string) { + f.VarP(newInt32Value(value, p), name, shorthand, usage) +} + +// Int32Var defines an int32 flag with specified name, default value, and usage string. +// The argument p points to an int32 variable in which to store the value of the flag. +func Int32Var(p *int32, name string, value int32, usage string) { + CommandLine.VarP(newInt32Value(value, p), name, "", usage) +} + +// Int32VarP is like Int32Var, but accepts a shorthand letter that can be used after a single dash. +func Int32VarP(p *int32, name, shorthand string, value int32, usage string) { + CommandLine.VarP(newInt32Value(value, p), name, shorthand, usage) +} + +// Int32 defines an int32 flag with specified name, default value, and usage string. +// The return value is the address of an int32 variable that stores the value of the flag. +func (f *FlagSet) Int32(name string, value int32, usage string) *int32 { + p := new(int32) + f.Int32VarP(p, name, "", value, usage) + return p +} + +// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32P(name, shorthand string, value int32, usage string) *int32 { + p := new(int32) + f.Int32VarP(p, name, shorthand, value, usage) + return p +} + +// Int32 defines an int32 flag with specified name, default value, and usage string. +// The return value is the address of an int32 variable that stores the value of the flag. +func Int32(name string, value int32, usage string) *int32 { + return CommandLine.Int32P(name, "", value, usage) +} + +// Int32P is like Int32, but accepts a shorthand letter that can be used after a single dash. +func Int32P(name, shorthand string, value int32, usage string) *int32 { + return CommandLine.Int32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int64.go b/vendor/github.com/spf13/pflag/int64.go new file mode 100644 index 0000000000..6e67e380f4 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int64.go @@ -0,0 +1,87 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- int64 Value +type int64Value int64 + +func newInt64Value(val int64, p *int64) *int64Value { + *p = val + return (*int64Value)(p) +} + +func (i *int64Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 64) + *i = int64Value(v) + return err +} + +func (i *int64Value) Type() string { + return "int64" +} + +func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) } + +func int64Conv(sval string) (interface{}, error) { + return strconv.ParseInt(sval, 0, 64) +} + +// GetInt64 return the int64 value of a flag with the given name +func (f *FlagSet) GetInt64(name string) (int64, error) { + val, err := f.getFlagType(name, "int64", int64Conv) + if err != nil { + return 0, err + } + return val.(int64), nil +} + +// Int64Var defines an int64 flag with specified name, default value, and usage string. +// The argument p points to an int64 variable in which to store the value of the flag. +func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) { + f.VarP(newInt64Value(value, p), name, "", usage) +} + +// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64VarP(p *int64, name, shorthand string, value int64, usage string) { + f.VarP(newInt64Value(value, p), name, shorthand, usage) +} + +// Int64Var defines an int64 flag with specified name, default value, and usage string. +// The argument p points to an int64 variable in which to store the value of the flag. +func Int64Var(p *int64, name string, value int64, usage string) { + CommandLine.VarP(newInt64Value(value, p), name, "", usage) +} + +// Int64VarP is like Int64Var, but accepts a shorthand letter that can be used after a single dash. +func Int64VarP(p *int64, name, shorthand string, value int64, usage string) { + CommandLine.VarP(newInt64Value(value, p), name, shorthand, usage) +} + +// Int64 defines an int64 flag with specified name, default value, and usage string. +// The return value is the address of an int64 variable that stores the value of the flag. +func (f *FlagSet) Int64(name string, value int64, usage string) *int64 { + p := new(int64) + f.Int64VarP(p, name, "", value, usage) + return p +} + +// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64P(name, shorthand string, value int64, usage string) *int64 { + p := new(int64) + f.Int64VarP(p, name, shorthand, value, usage) + return p +} + +// Int64 defines an int64 flag with specified name, default value, and usage string. +// The return value is the address of an int64 variable that stores the value of the flag. +func Int64(name string, value int64, usage string) *int64 { + return CommandLine.Int64P(name, "", value, usage) +} + +// Int64P is like Int64, but accepts a shorthand letter that can be used after a single dash. +func Int64P(name, shorthand string, value int64, usage string) *int64 { + return CommandLine.Int64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int8.go b/vendor/github.com/spf13/pflag/int8.go new file mode 100644 index 0000000000..400db21f5e --- /dev/null +++ b/vendor/github.com/spf13/pflag/int8.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- int8 Value +type int8Value int8 + +func newInt8Value(val int8, p *int8) *int8Value { + *p = val + return (*int8Value)(p) +} + +func (i *int8Value) Set(s string) error { + v, err := strconv.ParseInt(s, 0, 8) + *i = int8Value(v) + return err +} + +func (i *int8Value) Type() string { + return "int8" +} + +func (i *int8Value) String() string { return fmt.Sprintf("%v", *i) } + +func int8Conv(sval string) (interface{}, error) { + v, err := strconv.ParseInt(sval, 0, 8) + if err != nil { + return 0, err + } + return int8(v), nil +} + +// GetInt8 return the int8 value of a flag with the given name +func (f *FlagSet) GetInt8(name string) (int8, error) { + val, err := f.getFlagType(name, "int8", int8Conv) + if err != nil { + return 0, err + } + return val.(int8), nil +} + +// Int8Var defines an int8 flag with specified name, default value, and usage string. +// The argument p points to an int8 variable in which to store the value of the flag. +func (f *FlagSet) Int8Var(p *int8, name string, value int8, usage string) { + f.VarP(newInt8Value(value, p), name, "", usage) +} + +// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int8VarP(p *int8, name, shorthand string, value int8, usage string) { + f.VarP(newInt8Value(value, p), name, shorthand, usage) +} + +// Int8Var defines an int8 flag with specified name, default value, and usage string. +// The argument p points to an int8 variable in which to store the value of the flag. +func Int8Var(p *int8, name string, value int8, usage string) { + CommandLine.VarP(newInt8Value(value, p), name, "", usage) +} + +// Int8VarP is like Int8Var, but accepts a shorthand letter that can be used after a single dash. +func Int8VarP(p *int8, name, shorthand string, value int8, usage string) { + CommandLine.VarP(newInt8Value(value, p), name, shorthand, usage) +} + +// Int8 defines an int8 flag with specified name, default value, and usage string. +// The return value is the address of an int8 variable that stores the value of the flag. +func (f *FlagSet) Int8(name string, value int8, usage string) *int8 { + p := new(int8) + f.Int8VarP(p, name, "", value, usage) + return p +} + +// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int8P(name, shorthand string, value int8, usage string) *int8 { + p := new(int8) + f.Int8VarP(p, name, shorthand, value, usage) + return p +} + +// Int8 defines an int8 flag with specified name, default value, and usage string. +// The return value is the address of an int8 variable that stores the value of the flag. +func Int8(name string, value int8, usage string) *int8 { + return CommandLine.Int8P(name, "", value, usage) +} + +// Int8P is like Int8, but accepts a shorthand letter that can be used after a single dash. +func Int8P(name, shorthand string, value int8, usage string) *int8 { + return CommandLine.Int8P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int_slice.go b/vendor/github.com/spf13/pflag/int_slice.go new file mode 100644 index 0000000000..1e7c9edde9 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int_slice.go @@ -0,0 +1,128 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- intSlice Value +type intSliceValue struct { + value *[]int + changed bool +} + +func newIntSliceValue(val []int, p *[]int) *intSliceValue { + isv := new(intSliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *intSliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]int, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.Atoi(d) + if err != nil { + return err + } + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *intSliceValue) Type() string { + return "intSlice" +} + +func (s *intSliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%d", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func intSliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []int{}, nil + } + ss := strings.Split(val, ",") + out := make([]int, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.Atoi(d) + if err != nil { + return nil, err + } + + } + return out, nil +} + +// GetIntSlice return the []int value of a flag with the given name +func (f *FlagSet) GetIntSlice(name string) ([]int, error) { + val, err := f.getFlagType(name, "intSlice", intSliceConv) + if err != nil { + return []int{}, err + } + return val.([]int), nil +} + +// IntSliceVar defines a intSlice flag with specified name, default value, and usage string. +// The argument p points to a []int variable in which to store the value of the flag. +func (f *FlagSet) IntSliceVar(p *[]int, name string, value []int, usage string) { + f.VarP(newIntSliceValue(value, p), name, "", usage) +} + +// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { + f.VarP(newIntSliceValue(value, p), name, shorthand, usage) +} + +// IntSliceVar defines a int[] flag with specified name, default value, and usage string. +// The argument p points to a int[] variable in which to store the value of the flag. +func IntSliceVar(p *[]int, name string, value []int, usage string) { + CommandLine.VarP(newIntSliceValue(value, p), name, "", usage) +} + +// IntSliceVarP is like IntSliceVar, but accepts a shorthand letter that can be used after a single dash. +func IntSliceVarP(p *[]int, name, shorthand string, value []int, usage string) { + CommandLine.VarP(newIntSliceValue(value, p), name, shorthand, usage) +} + +// IntSlice defines a []int flag with specified name, default value, and usage string. +// The return value is the address of a []int variable that stores the value of the flag. +func (f *FlagSet) IntSlice(name string, value []int, usage string) *[]int { + p := []int{} + f.IntSliceVarP(&p, name, "", value, usage) + return &p +} + +// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IntSliceP(name, shorthand string, value []int, usage string) *[]int { + p := []int{} + f.IntSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// IntSlice defines a []int flag with specified name, default value, and usage string. +// The return value is the address of a []int variable that stores the value of the flag. +func IntSlice(name string, value []int, usage string) *[]int { + return CommandLine.IntSliceP(name, "", value, usage) +} + +// IntSliceP is like IntSlice, but accepts a shorthand letter that can be used after a single dash. +func IntSliceP(name, shorthand string, value []int, usage string) *[]int { + return CommandLine.IntSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ip.go b/vendor/github.com/spf13/pflag/ip.go new file mode 100644 index 0000000000..88a17430a0 --- /dev/null +++ b/vendor/github.com/spf13/pflag/ip.go @@ -0,0 +1,96 @@ +package pflag + +import ( + "fmt" + "net" + "strings" +) + +var _ = strings.TrimSpace + +// -- net.IP value +type ipValue net.IP + +func newIPValue(val net.IP, p *net.IP) *ipValue { + *p = val + return (*ipValue)(p) +} + +func (i *ipValue) String() string { return net.IP(*i).String() } +func (i *ipValue) Set(s string) error { + ip := net.ParseIP(strings.TrimSpace(s)) + if ip == nil { + return fmt.Errorf("failed to parse IP: %q", s) + } + *i = ipValue(ip) + return nil +} + +func (i *ipValue) Type() string { + return "ip" +} + +func ipConv(sval string) (interface{}, error) { + ip := net.ParseIP(sval) + if ip != nil { + return ip, nil + } + return nil, fmt.Errorf("invalid string being converted to IP address: %s", sval) +} + +// GetIP return the net.IP value of a flag with the given name +func (f *FlagSet) GetIP(name string) (net.IP, error) { + val, err := f.getFlagType(name, "ip", ipConv) + if err != nil { + return nil, err + } + return val.(net.IP), nil +} + +// IPVar defines an net.IP flag with specified name, default value, and usage string. +// The argument p points to an net.IP variable in which to store the value of the flag. +func (f *FlagSet) IPVar(p *net.IP, name string, value net.IP, usage string) { + f.VarP(newIPValue(value, p), name, "", usage) +} + +// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { + f.VarP(newIPValue(value, p), name, shorthand, usage) +} + +// IPVar defines an net.IP flag with specified name, default value, and usage string. +// The argument p points to an net.IP variable in which to store the value of the flag. +func IPVar(p *net.IP, name string, value net.IP, usage string) { + CommandLine.VarP(newIPValue(value, p), name, "", usage) +} + +// IPVarP is like IPVar, but accepts a shorthand letter that can be used after a single dash. +func IPVarP(p *net.IP, name, shorthand string, value net.IP, usage string) { + CommandLine.VarP(newIPValue(value, p), name, shorthand, usage) +} + +// IP defines an net.IP flag with specified name, default value, and usage string. +// The return value is the address of an net.IP variable that stores the value of the flag. +func (f *FlagSet) IP(name string, value net.IP, usage string) *net.IP { + p := new(net.IP) + f.IPVarP(p, name, "", value, usage) + return p +} + +// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPP(name, shorthand string, value net.IP, usage string) *net.IP { + p := new(net.IP) + f.IPVarP(p, name, shorthand, value, usage) + return p +} + +// IP defines an net.IP flag with specified name, default value, and usage string. +// The return value is the address of an net.IP variable that stores the value of the flag. +func IP(name string, value net.IP, usage string) *net.IP { + return CommandLine.IPP(name, "", value, usage) +} + +// IPP is like IP, but accepts a shorthand letter that can be used after a single dash. +func IPP(name, shorthand string, value net.IP, usage string) *net.IP { + return CommandLine.IPP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ipmask.go b/vendor/github.com/spf13/pflag/ipmask.go new file mode 100644 index 0000000000..5bd44bd21d --- /dev/null +++ b/vendor/github.com/spf13/pflag/ipmask.go @@ -0,0 +1,122 @@ +package pflag + +import ( + "fmt" + "net" + "strconv" +) + +// -- net.IPMask value +type ipMaskValue net.IPMask + +func newIPMaskValue(val net.IPMask, p *net.IPMask) *ipMaskValue { + *p = val + return (*ipMaskValue)(p) +} + +func (i *ipMaskValue) String() string { return net.IPMask(*i).String() } +func (i *ipMaskValue) Set(s string) error { + ip := ParseIPv4Mask(s) + if ip == nil { + return fmt.Errorf("failed to parse IP mask: %q", s) + } + *i = ipMaskValue(ip) + return nil +} + +func (i *ipMaskValue) Type() string { + return "ipMask" +} + +// ParseIPv4Mask written in IP form (e.g. 255.255.255.0). +// This function should really belong to the net package. +func ParseIPv4Mask(s string) net.IPMask { + mask := net.ParseIP(s) + if mask == nil { + if len(s) != 8 { + return nil + } + // net.IPMask.String() actually outputs things like ffffff00 + // so write a horrible parser for that as well :-( + m := []int{} + for i := 0; i < 4; i++ { + b := "0x" + s[2*i:2*i+2] + d, err := strconv.ParseInt(b, 0, 0) + if err != nil { + return nil + } + m = append(m, int(d)) + } + s := fmt.Sprintf("%d.%d.%d.%d", m[0], m[1], m[2], m[3]) + mask = net.ParseIP(s) + if mask == nil { + return nil + } + } + return net.IPv4Mask(mask[12], mask[13], mask[14], mask[15]) +} + +func parseIPv4Mask(sval string) (interface{}, error) { + mask := ParseIPv4Mask(sval) + if mask == nil { + return nil, fmt.Errorf("unable to parse %s as net.IPMask", sval) + } + return mask, nil +} + +// GetIPv4Mask return the net.IPv4Mask value of a flag with the given name +func (f *FlagSet) GetIPv4Mask(name string) (net.IPMask, error) { + val, err := f.getFlagType(name, "ipMask", parseIPv4Mask) + if err != nil { + return nil, err + } + return val.(net.IPMask), nil +} + +// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. +// The argument p points to an net.IPMask variable in which to store the value of the flag. +func (f *FlagSet) IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { + f.VarP(newIPMaskValue(value, p), name, "", usage) +} + +// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { + f.VarP(newIPMaskValue(value, p), name, shorthand, usage) +} + +// IPMaskVar defines an net.IPMask flag with specified name, default value, and usage string. +// The argument p points to an net.IPMask variable in which to store the value of the flag. +func IPMaskVar(p *net.IPMask, name string, value net.IPMask, usage string) { + CommandLine.VarP(newIPMaskValue(value, p), name, "", usage) +} + +// IPMaskVarP is like IPMaskVar, but accepts a shorthand letter that can be used after a single dash. +func IPMaskVarP(p *net.IPMask, name, shorthand string, value net.IPMask, usage string) { + CommandLine.VarP(newIPMaskValue(value, p), name, shorthand, usage) +} + +// IPMask defines an net.IPMask flag with specified name, default value, and usage string. +// The return value is the address of an net.IPMask variable that stores the value of the flag. +func (f *FlagSet) IPMask(name string, value net.IPMask, usage string) *net.IPMask { + p := new(net.IPMask) + f.IPMaskVarP(p, name, "", value, usage) + return p +} + +// IPMaskP is like IPMask, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { + p := new(net.IPMask) + f.IPMaskVarP(p, name, shorthand, value, usage) + return p +} + +// IPMask defines an net.IPMask flag with specified name, default value, and usage string. +// The return value is the address of an net.IPMask variable that stores the value of the flag. +func IPMask(name string, value net.IPMask, usage string) *net.IPMask { + return CommandLine.IPMaskP(name, "", value, usage) +} + +// IPMaskP is like IP, but accepts a shorthand letter that can be used after a single dash. +func IPMaskP(name, shorthand string, value net.IPMask, usage string) *net.IPMask { + return CommandLine.IPMaskP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/ipnet.go b/vendor/github.com/spf13/pflag/ipnet.go new file mode 100644 index 0000000000..149b764b1e --- /dev/null +++ b/vendor/github.com/spf13/pflag/ipnet.go @@ -0,0 +1,100 @@ +package pflag + +import ( + "fmt" + "net" + "strings" +) + +// IPNet adapts net.IPNet for use as a flag. +type ipNetValue net.IPNet + +func (ipnet ipNetValue) String() string { + n := net.IPNet(ipnet) + return n.String() +} + +func (ipnet *ipNetValue) Set(value string) error { + _, n, err := net.ParseCIDR(strings.TrimSpace(value)) + if err != nil { + return err + } + *ipnet = ipNetValue(*n) + return nil +} + +func (*ipNetValue) Type() string { + return "ipNet" +} + +var _ = strings.TrimSpace + +func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue { + *p = val + return (*ipNetValue)(p) +} + +func ipNetConv(sval string) (interface{}, error) { + _, n, err := net.ParseCIDR(strings.TrimSpace(sval)) + if err == nil { + return *n, nil + } + return nil, fmt.Errorf("invalid string being converted to IPNet: %s", sval) +} + +// GetIPNet return the net.IPNet value of a flag with the given name +func (f *FlagSet) GetIPNet(name string) (net.IPNet, error) { + val, err := f.getFlagType(name, "ipNet", ipNetConv) + if err != nil { + return net.IPNet{}, err + } + return val.(net.IPNet), nil +} + +// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. +// The argument p points to an net.IPNet variable in which to store the value of the flag. +func (f *FlagSet) IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { + f.VarP(newIPNetValue(value, p), name, "", usage) +} + +// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { + f.VarP(newIPNetValue(value, p), name, shorthand, usage) +} + +// IPNetVar defines an net.IPNet flag with specified name, default value, and usage string. +// The argument p points to an net.IPNet variable in which to store the value of the flag. +func IPNetVar(p *net.IPNet, name string, value net.IPNet, usage string) { + CommandLine.VarP(newIPNetValue(value, p), name, "", usage) +} + +// IPNetVarP is like IPNetVar, but accepts a shorthand letter that can be used after a single dash. +func IPNetVarP(p *net.IPNet, name, shorthand string, value net.IPNet, usage string) { + CommandLine.VarP(newIPNetValue(value, p), name, shorthand, usage) +} + +// IPNet defines an net.IPNet flag with specified name, default value, and usage string. +// The return value is the address of an net.IPNet variable that stores the value of the flag. +func (f *FlagSet) IPNet(name string, value net.IPNet, usage string) *net.IPNet { + p := new(net.IPNet) + f.IPNetVarP(p, name, "", value, usage) + return p +} + +// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { + p := new(net.IPNet) + f.IPNetVarP(p, name, shorthand, value, usage) + return p +} + +// IPNet defines an net.IPNet flag with specified name, default value, and usage string. +// The return value is the address of an net.IPNet variable that stores the value of the flag. +func IPNet(name string, value net.IPNet, usage string) *net.IPNet { + return CommandLine.IPNetP(name, "", value, usage) +} + +// IPNetP is like IPNet, but accepts a shorthand letter that can be used after a single dash. +func IPNetP(name, shorthand string, value net.IPNet, usage string) *net.IPNet { + return CommandLine.IPNetP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string.go b/vendor/github.com/spf13/pflag/string.go new file mode 100644 index 0000000000..e296136e5b --- /dev/null +++ b/vendor/github.com/spf13/pflag/string.go @@ -0,0 +1,82 @@ +package pflag + +import "fmt" + +// -- string Value +type stringValue string + +func newStringValue(val string, p *string) *stringValue { + *p = val + return (*stringValue)(p) +} + +func (s *stringValue) Set(val string) error { + *s = stringValue(val) + return nil +} +func (s *stringValue) Type() string { + return "string" +} + +func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) } + +func stringConv(sval string) (interface{}, error) { + return sval, nil +} + +// GetString return the string value of a flag with the given name +func (f *FlagSet) GetString(name string) (string, error) { + val, err := f.getFlagType(name, "string", stringConv) + if err != nil { + return "", err + } + return val.(string), nil +} + +// StringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a string variable in which to store the value of the flag. +func (f *FlagSet) StringVar(p *string, name string, value string, usage string) { + f.VarP(newStringValue(value, p), name, "", usage) +} + +// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringVarP(p *string, name, shorthand string, value string, usage string) { + f.VarP(newStringValue(value, p), name, shorthand, usage) +} + +// StringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a string variable in which to store the value of the flag. +func StringVar(p *string, name string, value string, usage string) { + CommandLine.VarP(newStringValue(value, p), name, "", usage) +} + +// StringVarP is like StringVar, but accepts a shorthand letter that can be used after a single dash. +func StringVarP(p *string, name, shorthand string, value string, usage string) { + CommandLine.VarP(newStringValue(value, p), name, shorthand, usage) +} + +// String defines a string flag with specified name, default value, and usage string. +// The return value is the address of a string variable that stores the value of the flag. +func (f *FlagSet) String(name string, value string, usage string) *string { + p := new(string) + f.StringVarP(p, name, "", value, usage) + return p +} + +// StringP is like String, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string { + p := new(string) + f.StringVarP(p, name, shorthand, value, usage) + return p +} + +// String defines a string flag with specified name, default value, and usage string. +// The return value is the address of a string variable that stores the value of the flag. +func String(name string, value string, usage string) *string { + return CommandLine.StringP(name, "", value, usage) +} + +// StringP is like String, but accepts a shorthand letter that can be used after a single dash. +func StringP(name, shorthand string, value string, usage string) *string { + return CommandLine.StringP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_slice.go b/vendor/github.com/spf13/pflag/string_slice.go new file mode 100644 index 0000000000..b53648b2e5 --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_slice.go @@ -0,0 +1,111 @@ +package pflag + +import ( + "encoding/csv" + "fmt" + "strings" +) + +var _ = fmt.Fprint + +// -- stringSlice Value +type stringSliceValue struct { + value *[]string + changed bool +} + +func newStringSliceValue(val []string, p *[]string) *stringSliceValue { + ssv := new(stringSliceValue) + ssv.value = p + *ssv.value = val + return ssv +} + +func (s *stringSliceValue) Set(val string) error { + stringReader := strings.NewReader(val) + csvReader := csv.NewReader(stringReader) + v, err := csvReader.Read() + if err != nil { + return err + } + if !s.changed { + *s.value = v + } else { + *s.value = append(*s.value, v...) + } + s.changed = true + return nil +} + +func (s *stringSliceValue) Type() string { + return "stringSlice" +} + +func (s *stringSliceValue) String() string { return "[" + strings.Join(*s.value, ",") + "]" } + +func stringSliceConv(sval string) (interface{}, error) { + sval = strings.Trim(sval, "[]") + // An empty string would cause a slice with one (empty) string + if len(sval) == 0 { + return []string{}, nil + } + v := strings.Split(sval, ",") + return v, nil +} + +// GetStringSlice return the []string value of a flag with the given name +func (f *FlagSet) GetStringSlice(name string) ([]string, error) { + val, err := f.getFlagType(name, "stringSlice", stringSliceConv) + if err != nil { + return []string{}, err + } + return val.([]string), nil +} + +// StringSliceVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the value of the flag. +func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) { + f.VarP(newStringSliceValue(value, p), name, "", usage) +} + +// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { + f.VarP(newStringSliceValue(value, p), name, shorthand, usage) +} + +// StringSliceVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a []string variable in which to store the value of the flag. +func StringSliceVar(p *[]string, name string, value []string, usage string) { + CommandLine.VarP(newStringSliceValue(value, p), name, "", usage) +} + +// StringSliceVarP is like StringSliceVar, but accepts a shorthand letter that can be used after a single dash. +func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string) { + CommandLine.VarP(newStringSliceValue(value, p), name, shorthand, usage) +} + +// StringSlice defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string { + p := []string{} + f.StringSliceVarP(&p, name, "", value, usage) + return &p +} + +// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage string) *[]string { + p := []string{} + f.StringSliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// StringSlice defines a string flag with specified name, default value, and usage string. +// The return value is the address of a []string variable that stores the value of the flag. +func StringSlice(name string, value []string, usage string) *[]string { + return CommandLine.StringSliceP(name, "", value, usage) +} + +// StringSliceP is like StringSlice, but accepts a shorthand letter that can be used after a single dash. +func StringSliceP(name, shorthand string, value []string, usage string) *[]string { + return CommandLine.StringSliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint.go b/vendor/github.com/spf13/pflag/uint.go new file mode 100644 index 0000000000..e142b49964 --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- uint Value +type uintValue uint + +func newUintValue(val uint, p *uint) *uintValue { + *p = val + return (*uintValue)(p) +} + +func (i *uintValue) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 64) + *i = uintValue(v) + return err +} + +func (i *uintValue) Type() string { + return "uint" +} + +func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) } + +func uintConv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 0) + if err != nil { + return 0, err + } + return uint(v), nil +} + +// GetUint return the uint value of a flag with the given name +func (f *FlagSet) GetUint(name string) (uint, error) { + val, err := f.getFlagType(name, "uint", uintConv) + if err != nil { + return 0, err + } + return val.(uint), nil +} + +// UintVar defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) { + f.VarP(newUintValue(value, p), name, "", usage) +} + +// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintVarP(p *uint, name, shorthand string, value uint, usage string) { + f.VarP(newUintValue(value, p), name, shorthand, usage) +} + +// UintVar defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func UintVar(p *uint, name string, value uint, usage string) { + CommandLine.VarP(newUintValue(value, p), name, "", usage) +} + +// UintVarP is like UintVar, but accepts a shorthand letter that can be used after a single dash. +func UintVarP(p *uint, name, shorthand string, value uint, usage string) { + CommandLine.VarP(newUintValue(value, p), name, shorthand, usage) +} + +// Uint defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func (f *FlagSet) Uint(name string, value uint, usage string) *uint { + p := new(uint) + f.UintVarP(p, name, "", value, usage) + return p +} + +// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) UintP(name, shorthand string, value uint, usage string) *uint { + p := new(uint) + f.UintVarP(p, name, shorthand, value, usage) + return p +} + +// Uint defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func Uint(name string, value uint, usage string) *uint { + return CommandLine.UintP(name, "", value, usage) +} + +// UintP is like Uint, but accepts a shorthand letter that can be used after a single dash. +func UintP(name, shorthand string, value uint, usage string) *uint { + return CommandLine.UintP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint16.go b/vendor/github.com/spf13/pflag/uint16.go new file mode 100644 index 0000000000..5c96c19dcf --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint16.go @@ -0,0 +1,89 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- uint16 value +type uint16Value uint16 + +func newUint16Value(val uint16, p *uint16) *uint16Value { + *p = val + return (*uint16Value)(p) +} +func (i *uint16Value) String() string { return fmt.Sprintf("%d", *i) } +func (i *uint16Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 16) + *i = uint16Value(v) + return err +} + +func (i *uint16Value) Type() string { + return "uint16" +} + +func uint16Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 16) + if err != nil { + return 0, err + } + return uint16(v), nil +} + +// GetUint16 return the uint16 value of a flag with the given name +func (f *FlagSet) GetUint16(name string) (uint16, error) { + val, err := f.getFlagType(name, "uint16", uint16Conv) + if err != nil { + return 0, err + } + return val.(uint16), nil +} + +// Uint16Var defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func (f *FlagSet) Uint16Var(p *uint16, name string, value uint16, usage string) { + f.VarP(newUint16Value(value, p), name, "", usage) +} + +// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { + f.VarP(newUint16Value(value, p), name, shorthand, usage) +} + +// Uint16Var defines a uint flag with specified name, default value, and usage string. +// The argument p points to a uint variable in which to store the value of the flag. +func Uint16Var(p *uint16, name string, value uint16, usage string) { + CommandLine.VarP(newUint16Value(value, p), name, "", usage) +} + +// Uint16VarP is like Uint16Var, but accepts a shorthand letter that can be used after a single dash. +func Uint16VarP(p *uint16, name, shorthand string, value uint16, usage string) { + CommandLine.VarP(newUint16Value(value, p), name, shorthand, usage) +} + +// Uint16 defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func (f *FlagSet) Uint16(name string, value uint16, usage string) *uint16 { + p := new(uint16) + f.Uint16VarP(p, name, "", value, usage) + return p +} + +// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint16P(name, shorthand string, value uint16, usage string) *uint16 { + p := new(uint16) + f.Uint16VarP(p, name, shorthand, value, usage) + return p +} + +// Uint16 defines a uint flag with specified name, default value, and usage string. +// The return value is the address of a uint variable that stores the value of the flag. +func Uint16(name string, value uint16, usage string) *uint16 { + return CommandLine.Uint16P(name, "", value, usage) +} + +// Uint16P is like Uint16, but accepts a shorthand letter that can be used after a single dash. +func Uint16P(name, shorthand string, value uint16, usage string) *uint16 { + return CommandLine.Uint16P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint32.go b/vendor/github.com/spf13/pflag/uint32.go new file mode 100644 index 0000000000..294fcaa32d --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint32.go @@ -0,0 +1,89 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- uint16 value +type uint32Value uint32 + +func newUint32Value(val uint32, p *uint32) *uint32Value { + *p = val + return (*uint32Value)(p) +} +func (i *uint32Value) String() string { return fmt.Sprintf("%d", *i) } +func (i *uint32Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 32) + *i = uint32Value(v) + return err +} + +func (i *uint32Value) Type() string { + return "uint32" +} + +func uint32Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 32) + if err != nil { + return 0, err + } + return uint32(v), nil +} + +// GetUint32 return the uint32 value of a flag with the given name +func (f *FlagSet) GetUint32(name string) (uint32, error) { + val, err := f.getFlagType(name, "uint32", uint32Conv) + if err != nil { + return 0, err + } + return val.(uint32), nil +} + +// Uint32Var defines a uint32 flag with specified name, default value, and usage string. +// The argument p points to a uint32 variable in which to store the value of the flag. +func (f *FlagSet) Uint32Var(p *uint32, name string, value uint32, usage string) { + f.VarP(newUint32Value(value, p), name, "", usage) +} + +// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { + f.VarP(newUint32Value(value, p), name, shorthand, usage) +} + +// Uint32Var defines a uint32 flag with specified name, default value, and usage string. +// The argument p points to a uint32 variable in which to store the value of the flag. +func Uint32Var(p *uint32, name string, value uint32, usage string) { + CommandLine.VarP(newUint32Value(value, p), name, "", usage) +} + +// Uint32VarP is like Uint32Var, but accepts a shorthand letter that can be used after a single dash. +func Uint32VarP(p *uint32, name, shorthand string, value uint32, usage string) { + CommandLine.VarP(newUint32Value(value, p), name, shorthand, usage) +} + +// Uint32 defines a uint32 flag with specified name, default value, and usage string. +// The return value is the address of a uint32 variable that stores the value of the flag. +func (f *FlagSet) Uint32(name string, value uint32, usage string) *uint32 { + p := new(uint32) + f.Uint32VarP(p, name, "", value, usage) + return p +} + +// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint32P(name, shorthand string, value uint32, usage string) *uint32 { + p := new(uint32) + f.Uint32VarP(p, name, shorthand, value, usage) + return p +} + +// Uint32 defines a uint32 flag with specified name, default value, and usage string. +// The return value is the address of a uint32 variable that stores the value of the flag. +func Uint32(name string, value uint32, usage string) *uint32 { + return CommandLine.Uint32P(name, "", value, usage) +} + +// Uint32P is like Uint32, but accepts a shorthand letter that can be used after a single dash. +func Uint32P(name, shorthand string, value uint32, usage string) *uint32 { + return CommandLine.Uint32P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint64.go b/vendor/github.com/spf13/pflag/uint64.go new file mode 100644 index 0000000000..c68188505a --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint64.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- uint64 Value +type uint64Value uint64 + +func newUint64Value(val uint64, p *uint64) *uint64Value { + *p = val + return (*uint64Value)(p) +} + +func (i *uint64Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 64) + *i = uint64Value(v) + return err +} + +func (i *uint64Value) Type() string { + return "uint64" +} + +func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) } + +func uint64Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 64) + if err != nil { + return 0, err + } + return uint64(v), nil +} + +// GetUint64 return the uint64 value of a flag with the given name +func (f *FlagSet) GetUint64(name string) (uint64, error) { + val, err := f.getFlagType(name, "uint64", uint64Conv) + if err != nil { + return 0, err + } + return val.(uint64), nil +} + +// Uint64Var defines a uint64 flag with specified name, default value, and usage string. +// The argument p points to a uint64 variable in which to store the value of the flag. +func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string) { + f.VarP(newUint64Value(value, p), name, "", usage) +} + +// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { + f.VarP(newUint64Value(value, p), name, shorthand, usage) +} + +// Uint64Var defines a uint64 flag with specified name, default value, and usage string. +// The argument p points to a uint64 variable in which to store the value of the flag. +func Uint64Var(p *uint64, name string, value uint64, usage string) { + CommandLine.VarP(newUint64Value(value, p), name, "", usage) +} + +// Uint64VarP is like Uint64Var, but accepts a shorthand letter that can be used after a single dash. +func Uint64VarP(p *uint64, name, shorthand string, value uint64, usage string) { + CommandLine.VarP(newUint64Value(value, p), name, shorthand, usage) +} + +// Uint64 defines a uint64 flag with specified name, default value, and usage string. +// The return value is the address of a uint64 variable that stores the value of the flag. +func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 { + p := new(uint64) + f.Uint64VarP(p, name, "", value, usage) + return p +} + +// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint64P(name, shorthand string, value uint64, usage string) *uint64 { + p := new(uint64) + f.Uint64VarP(p, name, shorthand, value, usage) + return p +} + +// Uint64 defines a uint64 flag with specified name, default value, and usage string. +// The return value is the address of a uint64 variable that stores the value of the flag. +func Uint64(name string, value uint64, usage string) *uint64 { + return CommandLine.Uint64P(name, "", value, usage) +} + +// Uint64P is like Uint64, but accepts a shorthand letter that can be used after a single dash. +func Uint64P(name, shorthand string, value uint64, usage string) *uint64 { + return CommandLine.Uint64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint8.go b/vendor/github.com/spf13/pflag/uint8.go new file mode 100644 index 0000000000..26db418adf --- /dev/null +++ b/vendor/github.com/spf13/pflag/uint8.go @@ -0,0 +1,91 @@ +package pflag + +import ( + "fmt" + "strconv" +) + +// -- uint8 Value +type uint8Value uint8 + +func newUint8Value(val uint8, p *uint8) *uint8Value { + *p = val + return (*uint8Value)(p) +} + +func (i *uint8Value) Set(s string) error { + v, err := strconv.ParseUint(s, 0, 8) + *i = uint8Value(v) + return err +} + +func (i *uint8Value) Type() string { + return "uint8" +} + +func (i *uint8Value) String() string { return fmt.Sprintf("%v", *i) } + +func uint8Conv(sval string) (interface{}, error) { + v, err := strconv.ParseUint(sval, 0, 8) + if err != nil { + return 0, err + } + return uint8(v), nil +} + +// GetUint8 return the uint8 value of a flag with the given name +func (f *FlagSet) GetUint8(name string) (uint8, error) { + val, err := f.getFlagType(name, "uint8", uint8Conv) + if err != nil { + return 0, err + } + return val.(uint8), nil +} + +// Uint8Var defines a uint8 flag with specified name, default value, and usage string. +// The argument p points to a uint8 variable in which to store the value of the flag. +func (f *FlagSet) Uint8Var(p *uint8, name string, value uint8, usage string) { + f.VarP(newUint8Value(value, p), name, "", usage) +} + +// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { + f.VarP(newUint8Value(value, p), name, shorthand, usage) +} + +// Uint8Var defines a uint8 flag with specified name, default value, and usage string. +// The argument p points to a uint8 variable in which to store the value of the flag. +func Uint8Var(p *uint8, name string, value uint8, usage string) { + CommandLine.VarP(newUint8Value(value, p), name, "", usage) +} + +// Uint8VarP is like Uint8Var, but accepts a shorthand letter that can be used after a single dash. +func Uint8VarP(p *uint8, name, shorthand string, value uint8, usage string) { + CommandLine.VarP(newUint8Value(value, p), name, shorthand, usage) +} + +// Uint8 defines a uint8 flag with specified name, default value, and usage string. +// The return value is the address of a uint8 variable that stores the value of the flag. +func (f *FlagSet) Uint8(name string, value uint8, usage string) *uint8 { + p := new(uint8) + f.Uint8VarP(p, name, "", value, usage) + return p +} + +// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Uint8P(name, shorthand string, value uint8, usage string) *uint8 { + p := new(uint8) + f.Uint8VarP(p, name, shorthand, value, usage) + return p +} + +// Uint8 defines a uint8 flag with specified name, default value, and usage string. +// The return value is the address of a uint8 variable that stores the value of the flag. +func Uint8(name string, value uint8, usage string) *uint8 { + return CommandLine.Uint8P(name, "", value, usage) +} + +// Uint8P is like Uint8, but accepts a shorthand letter that can be used after a single dash. +func Uint8P(name, shorthand string, value uint8, usage string) *uint8 { + return CommandLine.Uint8P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/stretchr/testify/LICENSE b/vendor/github.com/stretchr/testify/LICENSE new file mode 100644 index 0000000000..473b670a7c --- /dev/null +++ b/vendor/github.com/stretchr/testify/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2012 - 2013 Mat Ryer and Tyler Bunnell + +Please consider promoting this project if you find it useful. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go new file mode 100644 index 0000000000..e6a796046c --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -0,0 +1,387 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND +*/ + +package assert + +import ( + + http "net/http" + url "net/url" + time "time" +) + + +// Condition uses a Comparison to assert a complex condition. +func (a *Assertions) Condition(comp Comparison, msgAndArgs ...interface{}) bool { + return Condition(a.t, comp, msgAndArgs...) +} + + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Contains("Hello World", "World", "But 'Hello World' does contain 'World'") +// a.Contains(["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") +// a.Contains({"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + return Contains(a.t, s, contains, msgAndArgs...) +} + + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Empty(obj) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) bool { + return Empty(a.t, object, msgAndArgs...) +} + + +// Equal asserts that two objects are equal. +// +// a.Equal(123, 123, "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + return Equal(a.t, expected, actual, msgAndArgs...) +} + + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) bool { + return EqualError(a.t, theError, errString, msgAndArgs...) +} + + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValues(uint32(123), int32(123), "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + return EqualValues(a.t, expected, actual, msgAndArgs...) +} + + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Error(err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Error(err error, msgAndArgs ...interface{}) bool { + return Error(a.t, err, msgAndArgs...) +} + + +// Exactly asserts that two objects are equal is value and type. +// +// a.Exactly(int32(123), int64(123), "123 and 123 should NOT be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + return Exactly(a.t, expected, actual, msgAndArgs...) +} + + +// Fail reports a failure through +func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) bool { + return Fail(a.t, failureMessage, msgAndArgs...) +} + + +// FailNow fails test +func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) bool { + return FailNow(a.t, failureMessage, msgAndArgs...) +} + + +// False asserts that the specified value is false. +// +// a.False(myBool, "myBool should be false") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) False(value bool, msgAndArgs ...interface{}) bool { + return False(a.t, value, msgAndArgs...) +} + + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { + return HTTPBodyContains(a.t, handler, method, url, values, str) +} + + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) bool { + return HTTPBodyNotContains(a.t, handler, method, url, values, str) +} + + +// HTTPError asserts that a specified handler returns an error status code. +// +// a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values) bool { + return HTTPError(a.t, handler, method, url, values) +} + + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values) bool { + return HTTPRedirect(a.t, handler, method, url, values) +} + + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values) bool { + return HTTPSuccess(a.t, handler, method, url, values) +} + + +// Implements asserts that an object is implemented by the specified interface. +// +// a.Implements((*MyInterface)(nil), new(MyObject), "MyObject") +func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { + return Implements(a.t, interfaceObject, object, msgAndArgs...) +} + + +// InDelta asserts that the two numerals are within delta of each other. +// +// a.InDelta(math.Pi, (22 / 7.0), 0.01) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + return InDelta(a.t, expected, actual, delta, msgAndArgs...) +} + + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + return InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) +} + + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + return InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) +} + + +// InEpsilonSlice is the same as InEpsilon, except it compares two slices. +func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + return InEpsilonSlice(a.t, expected, actual, delta, msgAndArgs...) +} + + +// IsType asserts that the specified objects are of the same type. +func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + return IsType(a.t, expectedType, object, msgAndArgs...) +} + + +// JSONEq asserts that two JSON strings are equivalent. +// +// a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) bool { + return JSONEq(a.t, expected, actual, msgAndArgs...) +} + + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// a.Len(mySlice, 3, "The size of slice is not 3") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) bool { + return Len(a.t, object, length, msgAndArgs...) +} + + +// Nil asserts that the specified object is nil. +// +// a.Nil(err, "err should be nothing") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) bool { + return Nil(a.t, object, msgAndArgs...) +} + + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoError(err) { +// assert.Equal(t, actualObj, expectedObj) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) bool { + return NoError(a.t, err, msgAndArgs...) +} + + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContains("Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") +// a.NotContains(["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") +// a.NotContains({"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) bool { + return NotContains(a.t, s, contains, msgAndArgs...) +} + + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmpty(obj) { +// assert.Equal(t, "two", obj[1]) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) bool { + return NotEmpty(a.t, object, msgAndArgs...) +} + + +// NotEqual asserts that the specified values are NOT equal. +// +// a.NotEqual(obj1, obj2, "two objects shouldn't be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { + return NotEqual(a.t, expected, actual, msgAndArgs...) +} + + +// NotNil asserts that the specified object is not nil. +// +// a.NotNil(err, "err should be something") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) bool { + return NotNil(a.t, object, msgAndArgs...) +} + + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanics(func(){ +// RemainCalm() +// }, "Calling RemainCalm() should NOT panic") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotPanics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + return NotPanics(a.t, f, msgAndArgs...) +} + + +// NotRegexp asserts that a specified regexp does not match a string. +// +// a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +// a.NotRegexp("^start", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + return NotRegexp(a.t, rx, str, msgAndArgs...) +} + + +// NotZero asserts that i is not the zero value for its type and returns the truth. +func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) bool { + return NotZero(a.t, i, msgAndArgs...) +} + + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panics(func(){ +// GoCrazy() +// }, "Calling GoCrazy() should panic") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Panics(f PanicTestFunc, msgAndArgs ...interface{}) bool { + return Panics(a.t, f, msgAndArgs...) +} + + +// Regexp asserts that a specified regexp matches a string. +// +// a.Regexp(regexp.MustCompile("start"), "it's starting") +// a.Regexp("start...$", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + return Regexp(a.t, rx, str, msgAndArgs...) +} + + +// True asserts that the specified value is true. +// +// a.True(myBool, "myBool should be true") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) True(value bool, msgAndArgs ...interface{}) bool { + return True(a.t, value, msgAndArgs...) +} + + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// a.WithinDuration(time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + return WithinDuration(a.t, expected, actual, delta, msgAndArgs...) +} + + +// Zero asserts that i is the zero value for its type and returns the truth. +func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) bool { + return Zero(a.t, i, msgAndArgs...) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl new file mode 100644 index 0000000000..99f9acfbba --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go.tmpl @@ -0,0 +1,4 @@ +{{.CommentWithoutT "a"}} +func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) bool { + return {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) +} diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go new file mode 100644 index 0000000000..348d5f1bc2 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -0,0 +1,1007 @@ +package assert + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "math" + "reflect" + "regexp" + "runtime" + "strings" + "time" + "unicode" + "unicode/utf8" + + "github.com/davecgh/go-spew/spew" + "github.com/pmezard/go-difflib/difflib" +) + +// TestingT is an interface wrapper around *testing.T +type TestingT interface { + Errorf(format string, args ...interface{}) +} + +// Comparison a custom function that returns true on success and false on failure +type Comparison func() (success bool) + +/* + Helper functions +*/ + +// ObjectsAreEqual determines if two objects are considered equal. +// +// This function does no assertion of any kind. +func ObjectsAreEqual(expected, actual interface{}) bool { + + if expected == nil || actual == nil { + return expected == actual + } + + return reflect.DeepEqual(expected, actual) + +} + +// ObjectsAreEqualValues gets whether two objects are equal, or if their +// values are equal. +func ObjectsAreEqualValues(expected, actual interface{}) bool { + if ObjectsAreEqual(expected, actual) { + return true + } + + actualType := reflect.TypeOf(actual) + if actualType == nil { + return false + } + expectedValue := reflect.ValueOf(expected) + if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) { + // Attempt comparison after type conversion + return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual) + } + + return false +} + +/* CallerInfo is necessary because the assert functions use the testing object +internally, causing it to print the file:line of the assert method, rather than where +the problem actually occured in calling code.*/ + +// CallerInfo returns an array of strings containing the file and line number +// of each stack frame leading from the current test to the assert call that +// failed. +func CallerInfo() []string { + + pc := uintptr(0) + file := "" + line := 0 + ok := false + name := "" + + callers := []string{} + for i := 0; ; i++ { + pc, file, line, ok = runtime.Caller(i) + if !ok { + return nil + } + + // This is a huge edge case, but it will panic if this is the case, see #180 + if file == "" { + break + } + + parts := strings.Split(file, "/") + dir := parts[len(parts)-2] + file = parts[len(parts)-1] + if (dir != "assert" && dir != "mock" && dir != "require") || file == "mock_test.go" { + callers = append(callers, fmt.Sprintf("%s:%d", file, line)) + } + + f := runtime.FuncForPC(pc) + if f == nil { + break + } + name = f.Name() + // Drop the package + segments := strings.Split(name, ".") + name = segments[len(segments)-1] + if isTest(name, "Test") || + isTest(name, "Benchmark") || + isTest(name, "Example") { + break + } + } + + return callers +} + +// Stolen from the `go test` tool. +// isTest tells whether name looks like a test (or benchmark, according to prefix). +// It is a Test (say) if there is a character after Test that is not a lower-case letter. +// We don't want TesticularCancer. +func isTest(name, prefix string) bool { + if !strings.HasPrefix(name, prefix) { + return false + } + if len(name) == len(prefix) { // "Test" is ok + return true + } + rune, _ := utf8.DecodeRuneInString(name[len(prefix):]) + return !unicode.IsLower(rune) +} + +// getWhitespaceString returns a string that is long enough to overwrite the default +// output from the go testing framework. +func getWhitespaceString() string { + + _, file, line, ok := runtime.Caller(1) + if !ok { + return "" + } + parts := strings.Split(file, "/") + file = parts[len(parts)-1] + + return strings.Repeat(" ", len(fmt.Sprintf("%s:%d: ", file, line))) + +} + +func messageFromMsgAndArgs(msgAndArgs ...interface{}) string { + if len(msgAndArgs) == 0 || msgAndArgs == nil { + return "" + } + if len(msgAndArgs) == 1 { + return msgAndArgs[0].(string) + } + if len(msgAndArgs) > 1 { + return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...) + } + return "" +} + +// Indents all lines of the message by appending a number of tabs to each line, in an output format compatible with Go's +// test printing (see inner comment for specifics) +func indentMessageLines(message string, tabs int) string { + outBuf := new(bytes.Buffer) + + for i, scanner := 0, bufio.NewScanner(strings.NewReader(message)); scanner.Scan(); i++ { + if i != 0 { + outBuf.WriteRune('\n') + } + for ii := 0; ii < tabs; ii++ { + outBuf.WriteRune('\t') + // Bizarrely, all lines except the first need one fewer tabs prepended, so deliberately advance the counter + // by 1 prematurely. + if ii == 0 && i > 0 { + ii++ + } + } + outBuf.WriteString(scanner.Text()) + } + + return outBuf.String() +} + +type failNower interface { + FailNow() +} + +// FailNow fails test +func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + Fail(t, failureMessage, msgAndArgs...) + + // We cannot extend TestingT with FailNow() and + // maintain backwards compatibility, so we fallback + // to panicking when FailNow is not available in + // TestingT. + // See issue #263 + + if t, ok := t.(failNower); ok { + t.FailNow() + } else { + panic("test failed and t is missing `FailNow()`") + } + return false +} + +// Fail reports a failure through +func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) bool { + + message := messageFromMsgAndArgs(msgAndArgs...) + + errorTrace := strings.Join(CallerInfo(), "\n\r\t\t\t") + if len(message) > 0 { + t.Errorf("\r%s\r\tError Trace:\t%s\n"+ + "\r\tError:%s\n"+ + "\r\tMessages:\t%s\n\r", + getWhitespaceString(), + errorTrace, + indentMessageLines(failureMessage, 2), + message) + } else { + t.Errorf("\r%s\r\tError Trace:\t%s\n"+ + "\r\tError:%s\n\r", + getWhitespaceString(), + errorTrace, + indentMessageLines(failureMessage, 2)) + } + + return false +} + +// Implements asserts that an object is implemented by the specified interface. +// +// assert.Implements(t, (*MyInterface)(nil), new(MyObject), "MyObject") +func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) bool { + + interfaceType := reflect.TypeOf(interfaceObject).Elem() + + if !reflect.TypeOf(object).Implements(interfaceType) { + return Fail(t, fmt.Sprintf("%T must implement %v", object, interfaceType), msgAndArgs...) + } + + return true + +} + +// IsType asserts that the specified objects are of the same type. +func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) bool { + + if !ObjectsAreEqual(reflect.TypeOf(object), reflect.TypeOf(expectedType)) { + return Fail(t, fmt.Sprintf("Object expected to be of type %v, but was %v", reflect.TypeOf(expectedType), reflect.TypeOf(object)), msgAndArgs...) + } + + return true +} + +// Equal asserts that two objects are equal. +// +// assert.Equal(t, 123, 123, "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + + if !ObjectsAreEqual(expected, actual) { + diff := diff(expected, actual) + return Fail(t, fmt.Sprintf("Not equal: %#v (expected)\n"+ + " != %#v (actual)%s", expected, actual, diff), msgAndArgs...) + } + + return true + +} + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValues(t, uint32(123), int32(123), "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + + if !ObjectsAreEqualValues(expected, actual) { + return Fail(t, fmt.Sprintf("Not equal: %#v (expected)\n"+ + " != %#v (actual)", expected, actual), msgAndArgs...) + } + + return true + +} + +// Exactly asserts that two objects are equal is value and type. +// +// assert.Exactly(t, int32(123), int64(123), "123 and 123 should NOT be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func Exactly(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + + aType := reflect.TypeOf(expected) + bType := reflect.TypeOf(actual) + + if aType != bType { + return Fail(t, fmt.Sprintf("Types expected to match exactly\n\r\t%v != %v", aType, bType), msgAndArgs...) + } + + return Equal(t, expected, actual, msgAndArgs...) + +} + +// NotNil asserts that the specified object is not nil. +// +// assert.NotNil(t, err, "err should be something") +// +// Returns whether the assertion was successful (true) or not (false). +func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if !isNil(object) { + return true + } + return Fail(t, "Expected value not to be nil.", msgAndArgs...) +} + +// isNil checks if a specified object is nil or not, without Failing. +func isNil(object interface{}) bool { + if object == nil { + return true + } + + value := reflect.ValueOf(object) + kind := value.Kind() + if kind >= reflect.Chan && kind <= reflect.Slice && value.IsNil() { + return true + } + + return false +} + +// Nil asserts that the specified object is nil. +// +// assert.Nil(t, err, "err should be nothing") +// +// Returns whether the assertion was successful (true) or not (false). +func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + if isNil(object) { + return true + } + return Fail(t, fmt.Sprintf("Expected nil, but got: %#v", object), msgAndArgs...) +} + +var numericZeros = []interface{}{ + int(0), + int8(0), + int16(0), + int32(0), + int64(0), + uint(0), + uint8(0), + uint16(0), + uint32(0), + uint64(0), + float32(0), + float64(0), +} + +// isEmpty gets whether the specified object is considered empty or not. +func isEmpty(object interface{}) bool { + + if object == nil { + return true + } else if object == "" { + return true + } else if object == false { + return true + } + + for _, v := range numericZeros { + if object == v { + return true + } + } + + objValue := reflect.ValueOf(object) + + switch objValue.Kind() { + case reflect.Map: + fallthrough + case reflect.Slice, reflect.Chan: + { + return (objValue.Len() == 0) + } + case reflect.Struct: + switch object.(type) { + case time.Time: + return object.(time.Time).IsZero() + } + case reflect.Ptr: + { + if objValue.IsNil() { + return true + } + switch object.(type) { + case *time.Time: + return object.(*time.Time).IsZero() + default: + return false + } + } + } + return false +} + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Empty(t, obj) +// +// Returns whether the assertion was successful (true) or not (false). +func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + + pass := isEmpty(object) + if !pass { + Fail(t, fmt.Sprintf("Should be empty, but was %v", object), msgAndArgs...) + } + + return pass + +} + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmpty(t, obj) { +// assert.Equal(t, "two", obj[1]) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { + + pass := !isEmpty(object) + if !pass { + Fail(t, fmt.Sprintf("Should NOT be empty, but was %v", object), msgAndArgs...) + } + + return pass + +} + +// getLen try to get length of object. +// return (false, 0) if impossible. +func getLen(x interface{}) (ok bool, length int) { + v := reflect.ValueOf(x) + defer func() { + if e := recover(); e != nil { + ok = false + } + }() + return true, v.Len() +} + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// assert.Len(t, mySlice, 3, "The size of slice is not 3") +// +// Returns whether the assertion was successful (true) or not (false). +func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) bool { + ok, l := getLen(object) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", object), msgAndArgs...) + } + + if l != length { + return Fail(t, fmt.Sprintf("\"%s\" should have %d item(s), but has %d", object, length, l), msgAndArgs...) + } + return true +} + +// True asserts that the specified value is true. +// +// assert.True(t, myBool, "myBool should be true") +// +// Returns whether the assertion was successful (true) or not (false). +func True(t TestingT, value bool, msgAndArgs ...interface{}) bool { + + if value != true { + return Fail(t, "Should be true", msgAndArgs...) + } + + return true + +} + +// False asserts that the specified value is false. +// +// assert.False(t, myBool, "myBool should be false") +// +// Returns whether the assertion was successful (true) or not (false). +func False(t TestingT, value bool, msgAndArgs ...interface{}) bool { + + if value != false { + return Fail(t, "Should be false", msgAndArgs...) + } + + return true + +} + +// NotEqual asserts that the specified values are NOT equal. +// +// assert.NotEqual(t, obj1, obj2, "two objects shouldn't be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { + + if ObjectsAreEqual(expected, actual) { + return Fail(t, fmt.Sprintf("Should not be: %#v\n", actual), msgAndArgs...) + } + + return true + +} + +// containsElement try loop over the list check if the list includes the element. +// return (false, false) if impossible. +// return (true, false) if element was not found. +// return (true, true) if element was found. +func includeElement(list interface{}, element interface{}) (ok, found bool) { + + listValue := reflect.ValueOf(list) + elementValue := reflect.ValueOf(element) + defer func() { + if e := recover(); e != nil { + ok = false + found = false + } + }() + + if reflect.TypeOf(list).Kind() == reflect.String { + return true, strings.Contains(listValue.String(), elementValue.String()) + } + + if reflect.TypeOf(list).Kind() == reflect.Map { + mapKeys := listValue.MapKeys() + for i := 0; i < len(mapKeys); i++ { + if ObjectsAreEqual(mapKeys[i].Interface(), element) { + return true, true + } + } + return true, false + } + + for i := 0; i < listValue.Len(); i++ { + if ObjectsAreEqual(listValue.Index(i).Interface(), element) { + return true, true + } + } + return true, false + +} + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Contains(t, "Hello World", "World", "But 'Hello World' does contain 'World'") +// assert.Contains(t, ["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") +// assert.Contains(t, {"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") +// +// Returns whether the assertion was successful (true) or not (false). +func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + + ok, found := includeElement(s, contains) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) + } + if !found { + return Fail(t, fmt.Sprintf("\"%s\" does not contain \"%s\"", s, contains), msgAndArgs...) + } + + return true + +} + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContains(t, "Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") +// assert.NotContains(t, ["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") +// assert.NotContains(t, {"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") +// +// Returns whether the assertion was successful (true) or not (false). +func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...interface{}) bool { + + ok, found := includeElement(s, contains) + if !ok { + return Fail(t, fmt.Sprintf("\"%s\" could not be applied builtin len()", s), msgAndArgs...) + } + if found { + return Fail(t, fmt.Sprintf("\"%s\" should not contain \"%s\"", s, contains), msgAndArgs...) + } + + return true + +} + +// Condition uses a Comparison to assert a complex condition. +func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool { + result := comp() + if !result { + Fail(t, "Condition failed!", msgAndArgs...) + } + return result +} + +// PanicTestFunc defines a func that should be passed to the assert.Panics and assert.NotPanics +// methods, and represents a simple func that takes no arguments, and returns nothing. +type PanicTestFunc func() + +// didPanic returns true if the function passed to it panics. Otherwise, it returns false. +func didPanic(f PanicTestFunc) (bool, interface{}) { + + didPanic := false + var message interface{} + func() { + + defer func() { + if message = recover(); message != nil { + didPanic = true + } + }() + + // call the target function + f() + + }() + + return didPanic, message + +} + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panics(t, func(){ +// GoCrazy() +// }, "Calling GoCrazy() should panic") +// +// Returns whether the assertion was successful (true) or not (false). +func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + + if funcDidPanic, panicValue := didPanic(f); !funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) + } + + return true +} + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanics(t, func(){ +// RemainCalm() +// }, "Calling RemainCalm() should NOT panic") +// +// Returns whether the assertion was successful (true) or not (false). +func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool { + + if funcDidPanic, panicValue := didPanic(f); funcDidPanic { + return Fail(t, fmt.Sprintf("func %#v should not panic\n\r\tPanic value:\t%v", f, panicValue), msgAndArgs...) + } + + return true +} + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") +// +// Returns whether the assertion was successful (true) or not (false). +func WithinDuration(t TestingT, expected, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) bool { + + dt := expected.Sub(actual) + if dt < -delta || dt > delta { + return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) + } + + return true +} + +func toFloat(x interface{}) (float64, bool) { + var xf float64 + xok := true + + switch xn := x.(type) { + case uint8: + xf = float64(xn) + case uint16: + xf = float64(xn) + case uint32: + xf = float64(xn) + case uint64: + xf = float64(xn) + case int: + xf = float64(xn) + case int8: + xf = float64(xn) + case int16: + xf = float64(xn) + case int32: + xf = float64(xn) + case int64: + xf = float64(xn) + case float32: + xf = float64(xn) + case float64: + xf = float64(xn) + default: + xok = false + } + + return xf, xok +} + +// InDelta asserts that the two numerals are within delta of each other. +// +// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) +// +// Returns whether the assertion was successful (true) or not (false). +func InDelta(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + + af, aok := toFloat(expected) + bf, bok := toFloat(actual) + + if !aok || !bok { + return Fail(t, fmt.Sprintf("Parameters must be numerical"), msgAndArgs...) + } + + if math.IsNaN(af) { + return Fail(t, fmt.Sprintf("Actual must not be NaN"), msgAndArgs...) + } + + if math.IsNaN(bf) { + return Fail(t, fmt.Sprintf("Expected %v with delta %v, but was NaN", expected, delta), msgAndArgs...) + } + + dt := af - bf + if dt < -delta || dt > delta { + return Fail(t, fmt.Sprintf("Max difference between %v and %v allowed is %v, but difference was %v", expected, actual, delta, dt), msgAndArgs...) + } + + return true +} + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAndArgs ...interface{}) bool { + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Slice || + reflect.TypeOf(expected).Kind() != reflect.Slice { + return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) + } + + actualSlice := reflect.ValueOf(actual) + expectedSlice := reflect.ValueOf(expected) + + for i := 0; i < actualSlice.Len(); i++ { + result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta) + if !result { + return result + } + } + + return true +} + +func calcRelativeError(expected, actual interface{}) (float64, error) { + af, aok := toFloat(expected) + if !aok { + return 0, fmt.Errorf("expected value %q cannot be converted to float", expected) + } + if af == 0 { + return 0, fmt.Errorf("expected value must have a value other than zero to calculate the relative error") + } + bf, bok := toFloat(actual) + if !bok { + return 0, fmt.Errorf("expected value %q cannot be converted to float", actual) + } + + return math.Abs(af-bf) / math.Abs(af), nil +} + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +// +// Returns whether the assertion was successful (true) or not (false). +func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + actualEpsilon, err := calcRelativeError(expected, actual) + if err != nil { + return Fail(t, err.Error(), msgAndArgs...) + } + if actualEpsilon > epsilon { + return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+ + " < %#v (actual)", actualEpsilon, epsilon), msgAndArgs...) + } + + return true +} + +// InEpsilonSlice is the same as InEpsilon, except it compares each value from two slices. +func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, msgAndArgs ...interface{}) bool { + if expected == nil || actual == nil || + reflect.TypeOf(actual).Kind() != reflect.Slice || + reflect.TypeOf(expected).Kind() != reflect.Slice { + return Fail(t, fmt.Sprintf("Parameters must be slice"), msgAndArgs...) + } + + actualSlice := reflect.ValueOf(actual) + expectedSlice := reflect.ValueOf(expected) + + for i := 0; i < actualSlice.Len(); i++ { + result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon) + if !result { + return result + } + } + + return true +} + +/* + Errors +*/ + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoError(t, err) { +// assert.Equal(t, actualObj, expectedObj) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool { + if err != nil { + return Fail(t, fmt.Sprintf("Received unexpected error %q", err), msgAndArgs...) + } + + return true +} + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func Error(t TestingT, err error, msgAndArgs ...interface{}) bool { + + message := messageFromMsgAndArgs(msgAndArgs...) + if err == nil { + return Fail(t, "An error is expected but got nil. %s", message) + } + + return true +} + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) bool { + + message := messageFromMsgAndArgs(msgAndArgs...) + if !NotNil(t, theError, "An error is expected but got nil. %s", message) { + return false + } + s := "An error with value \"%s\" is expected but got \"%s\". %s" + return Equal(t, errString, theError.Error(), + s, errString, theError.Error(), message) +} + +// matchRegexp return true if a specified regexp matches a string. +func matchRegexp(rx interface{}, str interface{}) bool { + + var r *regexp.Regexp + if rr, ok := rx.(*regexp.Regexp); ok { + r = rr + } else { + r = regexp.MustCompile(fmt.Sprint(rx)) + } + + return (r.FindStringIndex(fmt.Sprint(str)) != nil) + +} + +// Regexp asserts that a specified regexp matches a string. +// +// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +// assert.Regexp(t, "start...$", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + + match := matchRegexp(rx, str) + + if !match { + Fail(t, fmt.Sprintf("Expect \"%v\" to match \"%v\"", str, rx), msgAndArgs...) + } + + return match +} + +// NotRegexp asserts that a specified regexp does not match a string. +// +// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +// assert.NotRegexp(t, "^start", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) bool { + match := matchRegexp(rx, str) + + if match { + Fail(t, fmt.Sprintf("Expect \"%v\" to NOT match \"%v\"", str, rx), msgAndArgs...) + } + + return !match + +} + +// Zero asserts that i is the zero value for its type and returns the truth. +func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if i != nil && !reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { + return Fail(t, fmt.Sprintf("Should be zero, but was %v", i), msgAndArgs...) + } + return true +} + +// NotZero asserts that i is not the zero value for its type and returns the truth. +func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) bool { + if i == nil || reflect.DeepEqual(i, reflect.Zero(reflect.TypeOf(i)).Interface()) { + return Fail(t, fmt.Sprintf("Should not be zero, but was %v", i), msgAndArgs...) + } + return true +} + +// JSONEq asserts that two JSON strings are equivalent. +// +// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +// +// Returns whether the assertion was successful (true) or not (false). +func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) bool { + var expectedJSONAsInterface, actualJSONAsInterface interface{} + + if err := json.Unmarshal([]byte(expected), &expectedJSONAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Expected value ('%s') is not valid json.\nJSON parsing error: '%s'", expected, err.Error()), msgAndArgs...) + } + + if err := json.Unmarshal([]byte(actual), &actualJSONAsInterface); err != nil { + return Fail(t, fmt.Sprintf("Input ('%s') needs to be valid json.\nJSON parsing error: '%s'", actual, err.Error()), msgAndArgs...) + } + + return Equal(t, expectedJSONAsInterface, actualJSONAsInterface, msgAndArgs...) +} + +func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) { + t := reflect.TypeOf(v) + k := t.Kind() + + if k == reflect.Ptr { + t = t.Elem() + k = t.Kind() + } + return t, k +} + +// diff returns a diff of both values as long as both are of the same type and +// are a struct, map, slice or array. Otherwise it returns an empty string. +func diff(expected interface{}, actual interface{}) string { + if expected == nil || actual == nil { + return "" + } + + et, ek := typeAndKind(expected) + at, _ := typeAndKind(actual) + + if et != at { + return "" + } + + if ek != reflect.Struct && ek != reflect.Map && ek != reflect.Slice && ek != reflect.Array { + return "" + } + + spew.Config.SortKeys = true + e := spew.Sdump(expected) + a := spew.Sdump(actual) + + diff, _ := difflib.GetUnifiedDiffString(difflib.UnifiedDiff{ + A: difflib.SplitLines(e), + B: difflib.SplitLines(a), + FromFile: "Expected", + FromDate: "", + ToFile: "Actual", + ToDate: "", + Context: 1, + }) + + return "\n\nDiff:\n" + diff +} diff --git a/vendor/github.com/stretchr/testify/assert/doc.go b/vendor/github.com/stretchr/testify/assert/doc.go new file mode 100644 index 0000000000..c9dccc4d6c --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/doc.go @@ -0,0 +1,45 @@ +// Package assert provides a set of comprehensive testing tools for use with the normal Go testing system. +// +// Example Usage +// +// The following is a complete example using assert in a standard test function: +// import ( +// "testing" +// "github.com/stretchr/testify/assert" +// ) +// +// func TestSomething(t *testing.T) { +// +// var a string = "Hello" +// var b string = "Hello" +// +// assert.Equal(t, a, b, "The two words should be the same.") +// +// } +// +// if you assert many times, use the format below: +// +// import ( +// "testing" +// "github.com/stretchr/testify/assert" +// ) +// +// func TestSomething(t *testing.T) { +// assert := assert.New(t) +// +// var a string = "Hello" +// var b string = "Hello" +// +// assert.Equal(a, b, "The two words should be the same.") +// } +// +// Assertions +// +// Assertions allow you to easily write test code, and are global funcs in the `assert` package. +// All assertion functions take, as the first argument, the `*testing.T` object provided by the +// testing framework. This allows the assertion funcs to write the failings and other details to +// the correct place. +// +// Every assertion function also takes an optional string message as the final argument, +// allowing custom error messages to be appended to the message the assertion method outputs. +package assert diff --git a/vendor/github.com/stretchr/testify/assert/errors.go b/vendor/github.com/stretchr/testify/assert/errors.go new file mode 100644 index 0000000000..ac9dc9d1d6 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/errors.go @@ -0,0 +1,10 @@ +package assert + +import ( + "errors" +) + +// AnError is an error instance useful for testing. If the code does not care +// about error specifics, and only needs to return the error for example, this +// error should be used to make the test code more readable. +var AnError = errors.New("assert.AnError general error for testing") diff --git a/vendor/github.com/stretchr/testify/assert/forward_assertions.go b/vendor/github.com/stretchr/testify/assert/forward_assertions.go new file mode 100644 index 0000000000..b867e95ea5 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/forward_assertions.go @@ -0,0 +1,16 @@ +package assert + +// Assertions provides assertion methods around the +// TestingT interface. +type Assertions struct { + t TestingT +} + +// New makes a new Assertions object for the specified TestingT. +func New(t TestingT) *Assertions { + return &Assertions{ + t: t, + } +} + +//go:generate go run ../_codegen/main.go -output-package=assert -template=assertion_forward.go.tmpl diff --git a/vendor/github.com/stretchr/testify/assert/http_assertions.go b/vendor/github.com/stretchr/testify/assert/http_assertions.go new file mode 100644 index 0000000000..e1b9442b5a --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/http_assertions.go @@ -0,0 +1,106 @@ +package assert + +import ( + "fmt" + "net/http" + "net/http/httptest" + "net/url" + "strings" +) + +// httpCode is a helper that returns HTTP code of the response. It returns -1 +// if building a new request fails. +func httpCode(handler http.HandlerFunc, method, url string, values url.Values) int { + w := httptest.NewRecorder() + req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) + if err != nil { + return -1 + } + handler(w, req) + return w.Code +} + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccess(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { + code := httpCode(handler, method, url, values) + if code == -1 { + return false + } + return code >= http.StatusOK && code <= http.StatusPartialContent +} + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPRedirect(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { + code := httpCode(handler, method, url, values) + if code == -1 { + return false + } + return code >= http.StatusMultipleChoices && code <= http.StatusTemporaryRedirect +} + +// HTTPError asserts that a specified handler returns an error status code. +// +// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPError(t TestingT, handler http.HandlerFunc, method, url string, values url.Values) bool { + code := httpCode(handler, method, url, values) + if code == -1 { + return false + } + return code >= http.StatusBadRequest +} + +// HTTPBody is a helper that returns HTTP body of the response. It returns +// empty string if building a new request fails. +func HTTPBody(handler http.HandlerFunc, method, url string, values url.Values) string { + w := httptest.NewRecorder() + req, err := http.NewRequest(method, url+"?"+values.Encode(), nil) + if err != nil { + return "" + } + handler(w, req) + return w.Body.String() +} + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { + body := HTTPBody(handler, method, url, values) + + contains := strings.Contains(body, fmt.Sprint(str)) + if !contains { + Fail(t, fmt.Sprintf("Expected response body for \"%s\" to contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body)) + } + + return contains +} + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method, url string, values url.Values, str interface{}) bool { + body := HTTPBody(handler, method, url, values) + + contains := strings.Contains(body, fmt.Sprint(str)) + if contains { + Fail(t, "Expected response body for %s to NOT contain \"%s\" but found \"%s\"", url+"?"+values.Encode(), str, body) + } + + return !contains +} diff --git a/vendor/github.com/stretchr/testify/require/doc.go b/vendor/github.com/stretchr/testify/require/doc.go new file mode 100644 index 0000000000..169de39221 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/doc.go @@ -0,0 +1,28 @@ +// Package require implements the same assertions as the `assert` package but +// stops test execution when a test fails. +// +// Example Usage +// +// The following is a complete example using require in a standard test function: +// import ( +// "testing" +// "github.com/stretchr/testify/require" +// ) +// +// func TestSomething(t *testing.T) { +// +// var a string = "Hello" +// var b string = "Hello" +// +// require.Equal(t, a, b, "The two words should be the same.") +// +// } +// +// Assertions +// +// The `require` package have same global functions as in the `assert` package, +// but instead of returning a boolean result they call `t.FailNow()`. +// +// Every assertion function also takes an optional string message as the final argument, +// allowing custom error messages to be appended to the message the assertion method outputs. +package require diff --git a/vendor/github.com/stretchr/testify/require/forward_requirements.go b/vendor/github.com/stretchr/testify/require/forward_requirements.go new file mode 100644 index 0000000000..d3c2ab9bc7 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/forward_requirements.go @@ -0,0 +1,16 @@ +package require + +// Assertions provides assertion methods around the +// TestingT interface. +type Assertions struct { + t TestingT +} + +// New makes a new Assertions object for the specified TestingT. +func New(t TestingT) *Assertions { + return &Assertions{ + t: t, + } +} + +//go:generate go run ../_codegen/main.go -output-package=require -template=require_forward.go.tmpl diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go new file mode 100644 index 0000000000..1bcfcb0d94 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -0,0 +1,464 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND +*/ + +package require + +import ( + + assert "github.com/stretchr/testify/assert" + http "net/http" + url "net/url" + time "time" +) + + +// Condition uses a Comparison to assert a complex condition. +func Condition(t TestingT, comp assert.Comparison, msgAndArgs ...interface{}) { + if !assert.Condition(t, comp, msgAndArgs...) { + t.FailNow() + } +} + + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// assert.Contains(t, "Hello World", "World", "But 'Hello World' does contain 'World'") +// assert.Contains(t, ["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") +// assert.Contains(t, {"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") +// +// Returns whether the assertion was successful (true) or not (false). +func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if !assert.Contains(t, s, contains, msgAndArgs...) { + t.FailNow() + } +} + + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// assert.Empty(t, obj) +// +// Returns whether the assertion was successful (true) or not (false). +func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if !assert.Empty(t, object, msgAndArgs...) { + t.FailNow() + } +} + + +// Equal asserts that two objects are equal. +// +// assert.Equal(t, 123, 123, "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if !assert.Equal(t, expected, actual, msgAndArgs...) { + t.FailNow() + } +} + + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) { + if !assert.EqualError(t, theError, errString, msgAndArgs...) { + t.FailNow() + } +} + + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// assert.EqualValues(t, uint32(123), int32(123), "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if !assert.EqualValues(t, expected, actual, msgAndArgs...) { + t.FailNow() + } +} + + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func Error(t TestingT, err error, msgAndArgs ...interface{}) { + if !assert.Error(t, err, msgAndArgs...) { + t.FailNow() + } +} + + +// Exactly asserts that two objects are equal is value and type. +// +// assert.Exactly(t, int32(123), int64(123), "123 and 123 should NOT be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if !assert.Exactly(t, expected, actual, msgAndArgs...) { + t.FailNow() + } +} + + +// Fail reports a failure through +func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) { + if !assert.Fail(t, failureMessage, msgAndArgs...) { + t.FailNow() + } +} + + +// FailNow fails test +func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{}) { + if !assert.FailNow(t, failureMessage, msgAndArgs...) { + t.FailNow() + } +} + + +// False asserts that the specified value is false. +// +// assert.False(t, myBool, "myBool should be false") +// +// Returns whether the assertion was successful (true) or not (false). +func False(t TestingT, value bool, msgAndArgs ...interface{}) { + if !assert.False(t, value, msgAndArgs...) { + t.FailNow() + } +} + + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// assert.HTTPBodyContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) { + if !assert.HTTPBodyContains(t, handler, method, url, values, str) { + t.FailNow() + } +} + + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// assert.HTTPBodyNotContains(t, myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) { + if !assert.HTTPBodyNotContains(t, handler, method, url, values, str) { + t.FailNow() + } +} + + +// HTTPError asserts that a specified handler returns an error status code. +// +// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values) { + if !assert.HTTPError(t, handler, method, url, values) { + t.FailNow() + } +} + + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values) { + if !assert.HTTPRedirect(t, handler, method, url, values) { + t.FailNow() + } +} + + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values) { + if !assert.HTTPSuccess(t, handler, method, url, values) { + t.FailNow() + } +} + + +// Implements asserts that an object is implemented by the specified interface. +// +// assert.Implements(t, (*MyInterface)(nil), new(MyObject), "MyObject") +func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { + if !assert.Implements(t, interfaceObject, object, msgAndArgs...) { + t.FailNow() + } +} + + +// InDelta asserts that the two numerals are within delta of each other. +// +// assert.InDelta(t, math.Pi, (22 / 7.0), 0.01) +// +// Returns whether the assertion was successful (true) or not (false). +func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if !assert.InDelta(t, expected, actual, delta, msgAndArgs...) { + t.FailNow() + } +} + + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func InDeltaSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if !assert.InDeltaSlice(t, expected, actual, delta, msgAndArgs...) { + t.FailNow() + } +} + + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +// +// Returns whether the assertion was successful (true) or not (false). +func InEpsilon(t TestingT, expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + if !assert.InEpsilon(t, expected, actual, epsilon, msgAndArgs...) { + t.FailNow() + } +} + + +// InEpsilonSlice is the same as InEpsilon, except it compares two slices. +func InEpsilonSlice(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + if !assert.InEpsilonSlice(t, expected, actual, delta, msgAndArgs...) { + t.FailNow() + } +} + + +// IsType asserts that the specified objects are of the same type. +func IsType(t TestingT, expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { + if !assert.IsType(t, expectedType, object, msgAndArgs...) { + t.FailNow() + } +} + + +// JSONEq asserts that two JSON strings are equivalent. +// +// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +// +// Returns whether the assertion was successful (true) or not (false). +func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) { + if !assert.JSONEq(t, expected, actual, msgAndArgs...) { + t.FailNow() + } +} + + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// assert.Len(t, mySlice, 3, "The size of slice is not 3") +// +// Returns whether the assertion was successful (true) or not (false). +func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) { + if !assert.Len(t, object, length, msgAndArgs...) { + t.FailNow() + } +} + + +// Nil asserts that the specified object is nil. +// +// assert.Nil(t, err, "err should be nothing") +// +// Returns whether the assertion was successful (true) or not (false). +func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if !assert.Nil(t, object, msgAndArgs...) { + t.FailNow() + } +} + + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if assert.NoError(t, err) { +// assert.Equal(t, actualObj, expectedObj) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func NoError(t TestingT, err error, msgAndArgs ...interface{}) { + if !assert.NoError(t, err, msgAndArgs...) { + t.FailNow() + } +} + + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// assert.NotContains(t, "Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") +// assert.NotContains(t, ["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") +// assert.NotContains(t, {"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") +// +// Returns whether the assertion was successful (true) or not (false). +func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { + if !assert.NotContains(t, s, contains, msgAndArgs...) { + t.FailNow() + } +} + + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if assert.NotEmpty(t, obj) { +// assert.Equal(t, "two", obj[1]) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if !assert.NotEmpty(t, object, msgAndArgs...) { + t.FailNow() + } +} + + +// NotEqual asserts that the specified values are NOT equal. +// +// assert.NotEqual(t, obj1, obj2, "two objects shouldn't be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + if !assert.NotEqual(t, expected, actual, msgAndArgs...) { + t.FailNow() + } +} + + +// NotNil asserts that the specified object is not nil. +// +// assert.NotNil(t, err, "err should be something") +// +// Returns whether the assertion was successful (true) or not (false). +func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { + if !assert.NotNil(t, object, msgAndArgs...) { + t.FailNow() + } +} + + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// assert.NotPanics(t, func(){ +// RemainCalm() +// }, "Calling RemainCalm() should NOT panic") +// +// Returns whether the assertion was successful (true) or not (false). +func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if !assert.NotPanics(t, f, msgAndArgs...) { + t.FailNow() + } +} + + +// NotRegexp asserts that a specified regexp does not match a string. +// +// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +// assert.NotRegexp(t, "^start", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if !assert.NotRegexp(t, rx, str, msgAndArgs...) { + t.FailNow() + } +} + + +// NotZero asserts that i is not the zero value for its type and returns the truth. +func NotZero(t TestingT, i interface{}, msgAndArgs ...interface{}) { + if !assert.NotZero(t, i, msgAndArgs...) { + t.FailNow() + } +} + + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// assert.Panics(t, func(){ +// GoCrazy() +// }, "Calling GoCrazy() should panic") +// +// Returns whether the assertion was successful (true) or not (false). +func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { + if !assert.Panics(t, f, msgAndArgs...) { + t.FailNow() + } +} + + +// Regexp asserts that a specified regexp matches a string. +// +// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") +// assert.Regexp(t, "start...$", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { + if !assert.Regexp(t, rx, str, msgAndArgs...) { + t.FailNow() + } +} + + +// True asserts that the specified value is true. +// +// assert.True(t, myBool, "myBool should be true") +// +// Returns whether the assertion was successful (true) or not (false). +func True(t TestingT, value bool, msgAndArgs ...interface{}) { + if !assert.True(t, value, msgAndArgs...) { + t.FailNow() + } +} + + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") +// +// Returns whether the assertion was successful (true) or not (false). +func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) { + if !assert.WithinDuration(t, expected, actual, delta, msgAndArgs...) { + t.FailNow() + } +} + + +// Zero asserts that i is the zero value for its type and returns the truth. +func Zero(t TestingT, i interface{}, msgAndArgs ...interface{}) { + if !assert.Zero(t, i, msgAndArgs...) { + t.FailNow() + } +} diff --git a/vendor/github.com/stretchr/testify/require/require.go.tmpl b/vendor/github.com/stretchr/testify/require/require.go.tmpl new file mode 100644 index 0000000000..ab1b1e9fd5 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require.go.tmpl @@ -0,0 +1,6 @@ +{{.Comment}} +func {{.DocInfo.Name}}(t TestingT, {{.Params}}) { + if !assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { + t.FailNow() + } +} diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go new file mode 100644 index 0000000000..58324f1055 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -0,0 +1,388 @@ +/* +* CODE GENERATED AUTOMATICALLY WITH github.com/stretchr/testify/_codegen +* THIS FILE MUST NOT BE EDITED BY HAND +*/ + +package require + +import ( + + assert "github.com/stretchr/testify/assert" + http "net/http" + url "net/url" + time "time" +) + + +// Condition uses a Comparison to assert a complex condition. +func (a *Assertions) Condition(comp assert.Comparison, msgAndArgs ...interface{}) { + Condition(a.t, comp, msgAndArgs...) +} + + +// Contains asserts that the specified string, list(array, slice...) or map contains the +// specified substring or element. +// +// a.Contains("Hello World", "World", "But 'Hello World' does contain 'World'") +// a.Contains(["Hello", "World"], "World", "But ["Hello", "World"] does contain 'World'") +// a.Contains({"Hello": "World"}, "Hello", "But {'Hello': 'World'} does contain 'Hello'") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Contains(s interface{}, contains interface{}, msgAndArgs ...interface{}) { + Contains(a.t, s, contains, msgAndArgs...) +} + + +// Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// a.Empty(obj) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Empty(object interface{}, msgAndArgs ...interface{}) { + Empty(a.t, object, msgAndArgs...) +} + + +// Equal asserts that two objects are equal. +// +// a.Equal(123, 123, "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Equal(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + Equal(a.t, expected, actual, msgAndArgs...) +} + + +// EqualError asserts that a function returned an error (i.e. not `nil`) +// and that it is equal to the provided error. +// +// actualObj, err := SomeFunction() +// if assert.Error(t, err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) EqualError(theError error, errString string, msgAndArgs ...interface{}) { + EqualError(a.t, theError, errString, msgAndArgs...) +} + + +// EqualValues asserts that two objects are equal or convertable to the same types +// and equal. +// +// a.EqualValues(uint32(123), int32(123), "123 and 123 should be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + EqualValues(a.t, expected, actual, msgAndArgs...) +} + + +// Error asserts that a function returned an error (i.e. not `nil`). +// +// actualObj, err := SomeFunction() +// if a.Error(err, "An error was expected") { +// assert.Equal(t, err, expectedError) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Error(err error, msgAndArgs ...interface{}) { + Error(a.t, err, msgAndArgs...) +} + + +// Exactly asserts that two objects are equal is value and type. +// +// a.Exactly(int32(123), int64(123), "123 and 123 should NOT be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Exactly(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + Exactly(a.t, expected, actual, msgAndArgs...) +} + + +// Fail reports a failure through +func (a *Assertions) Fail(failureMessage string, msgAndArgs ...interface{}) { + Fail(a.t, failureMessage, msgAndArgs...) +} + + +// FailNow fails test +func (a *Assertions) FailNow(failureMessage string, msgAndArgs ...interface{}) { + FailNow(a.t, failureMessage, msgAndArgs...) +} + + +// False asserts that the specified value is false. +// +// a.False(myBool, "myBool should be false") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) False(value bool, msgAndArgs ...interface{}) { + False(a.t, value, msgAndArgs...) +} + + +// HTTPBodyContains asserts that a specified handler returns a +// body that contains a string. +// +// a.HTTPBodyContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) { + HTTPBodyContains(a.t, handler, method, url, values, str) +} + + +// HTTPBodyNotContains asserts that a specified handler returns a +// body that does not contain a string. +// +// a.HTTPBodyNotContains(myHandler, "www.google.com", nil, "I'm Feeling Lucky") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPBodyNotContains(handler http.HandlerFunc, method string, url string, values url.Values, str interface{}) { + HTTPBodyNotContains(a.t, handler, method, url, values, str) +} + + +// HTTPError asserts that a specified handler returns an error status code. +// +// a.HTTPError(myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPError(handler http.HandlerFunc, method string, url string, values url.Values) { + HTTPError(a.t, handler, method, url, values) +} + + +// HTTPRedirect asserts that a specified handler returns a redirect status code. +// +// a.HTTPRedirect(myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPRedirect(handler http.HandlerFunc, method string, url string, values url.Values) { + HTTPRedirect(a.t, handler, method, url, values) +} + + +// HTTPSuccess asserts that a specified handler returns a success status code. +// +// a.HTTPSuccess(myHandler, "POST", "http://www.google.com", nil) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) HTTPSuccess(handler http.HandlerFunc, method string, url string, values url.Values) { + HTTPSuccess(a.t, handler, method, url, values) +} + + +// Implements asserts that an object is implemented by the specified interface. +// +// a.Implements((*MyInterface)(nil), new(MyObject), "MyObject") +func (a *Assertions) Implements(interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { + Implements(a.t, interfaceObject, object, msgAndArgs...) +} + + +// InDelta asserts that the two numerals are within delta of each other. +// +// a.InDelta(math.Pi, (22 / 7.0), 0.01) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) InDelta(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + InDelta(a.t, expected, actual, delta, msgAndArgs...) +} + + +// InDeltaSlice is the same as InDelta, except it compares two slices. +func (a *Assertions) InDeltaSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + InDeltaSlice(a.t, expected, actual, delta, msgAndArgs...) +} + + +// InEpsilon asserts that expected and actual have a relative error less than epsilon +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) InEpsilon(expected interface{}, actual interface{}, epsilon float64, msgAndArgs ...interface{}) { + InEpsilon(a.t, expected, actual, epsilon, msgAndArgs...) +} + + +// InEpsilonSlice is the same as InEpsilon, except it compares two slices. +func (a *Assertions) InEpsilonSlice(expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { + InEpsilonSlice(a.t, expected, actual, delta, msgAndArgs...) +} + + +// IsType asserts that the specified objects are of the same type. +func (a *Assertions) IsType(expectedType interface{}, object interface{}, msgAndArgs ...interface{}) { + IsType(a.t, expectedType, object, msgAndArgs...) +} + + +// JSONEq asserts that two JSON strings are equivalent. +// +// a.JSONEq(`{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) JSONEq(expected string, actual string, msgAndArgs ...interface{}) { + JSONEq(a.t, expected, actual, msgAndArgs...) +} + + +// Len asserts that the specified object has specific length. +// Len also fails if the object has a type that len() not accept. +// +// a.Len(mySlice, 3, "The size of slice is not 3") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Len(object interface{}, length int, msgAndArgs ...interface{}) { + Len(a.t, object, length, msgAndArgs...) +} + + +// Nil asserts that the specified object is nil. +// +// a.Nil(err, "err should be nothing") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Nil(object interface{}, msgAndArgs ...interface{}) { + Nil(a.t, object, msgAndArgs...) +} + + +// NoError asserts that a function returned no error (i.e. `nil`). +// +// actualObj, err := SomeFunction() +// if a.NoError(err) { +// assert.Equal(t, actualObj, expectedObj) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NoError(err error, msgAndArgs ...interface{}) { + NoError(a.t, err, msgAndArgs...) +} + + +// NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the +// specified substring or element. +// +// a.NotContains("Hello World", "Earth", "But 'Hello World' does NOT contain 'Earth'") +// a.NotContains(["Hello", "World"], "Earth", "But ['Hello', 'World'] does NOT contain 'Earth'") +// a.NotContains({"Hello": "World"}, "Earth", "But {'Hello': 'World'} does NOT contain 'Earth'") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotContains(s interface{}, contains interface{}, msgAndArgs ...interface{}) { + NotContains(a.t, s, contains, msgAndArgs...) +} + + +// NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either +// a slice or a channel with len == 0. +// +// if a.NotEmpty(obj) { +// assert.Equal(t, "two", obj[1]) +// } +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotEmpty(object interface{}, msgAndArgs ...interface{}) { + NotEmpty(a.t, object, msgAndArgs...) +} + + +// NotEqual asserts that the specified values are NOT equal. +// +// a.NotEqual(obj1, obj2, "two objects shouldn't be equal") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotEqual(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { + NotEqual(a.t, expected, actual, msgAndArgs...) +} + + +// NotNil asserts that the specified object is not nil. +// +// a.NotNil(err, "err should be something") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotNil(object interface{}, msgAndArgs ...interface{}) { + NotNil(a.t, object, msgAndArgs...) +} + + +// NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. +// +// a.NotPanics(func(){ +// RemainCalm() +// }, "Calling RemainCalm() should NOT panic") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotPanics(f assert.PanicTestFunc, msgAndArgs ...interface{}) { + NotPanics(a.t, f, msgAndArgs...) +} + + +// NotRegexp asserts that a specified regexp does not match a string. +// +// a.NotRegexp(regexp.MustCompile("starts"), "it's starting") +// a.NotRegexp("^start", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) NotRegexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) { + NotRegexp(a.t, rx, str, msgAndArgs...) +} + + +// NotZero asserts that i is not the zero value for its type and returns the truth. +func (a *Assertions) NotZero(i interface{}, msgAndArgs ...interface{}) { + NotZero(a.t, i, msgAndArgs...) +} + + +// Panics asserts that the code inside the specified PanicTestFunc panics. +// +// a.Panics(func(){ +// GoCrazy() +// }, "Calling GoCrazy() should panic") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Panics(f assert.PanicTestFunc, msgAndArgs ...interface{}) { + Panics(a.t, f, msgAndArgs...) +} + + +// Regexp asserts that a specified regexp matches a string. +// +// a.Regexp(regexp.MustCompile("start"), "it's starting") +// a.Regexp("start...$", "it's not starting") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) Regexp(rx interface{}, str interface{}, msgAndArgs ...interface{}) { + Regexp(a.t, rx, str, msgAndArgs...) +} + + +// True asserts that the specified value is true. +// +// a.True(myBool, "myBool should be true") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) True(value bool, msgAndArgs ...interface{}) { + True(a.t, value, msgAndArgs...) +} + + +// WithinDuration asserts that the two times are within duration delta of each other. +// +// a.WithinDuration(time.Now(), time.Now(), 10*time.Second, "The difference should not be more than 10s") +// +// Returns whether the assertion was successful (true) or not (false). +func (a *Assertions) WithinDuration(expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) { + WithinDuration(a.t, expected, actual, delta, msgAndArgs...) +} + + +// Zero asserts that i is the zero value for its type and returns the truth. +func (a *Assertions) Zero(i interface{}, msgAndArgs ...interface{}) { + Zero(a.t, i, msgAndArgs...) +} diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl b/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl new file mode 100644 index 0000000000..b93569e0a9 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/require_forward.go.tmpl @@ -0,0 +1,4 @@ +{{.CommentWithoutT "a"}} +func (a *Assertions) {{.DocInfo.Name}}({{.Params}}) { + {{.DocInfo.Name}}(a.t, {{.ForwardedParams}}) +} diff --git a/vendor/github.com/stretchr/testify/require/requirements.go b/vendor/github.com/stretchr/testify/require/requirements.go new file mode 100644 index 0000000000..41147562d8 --- /dev/null +++ b/vendor/github.com/stretchr/testify/require/requirements.go @@ -0,0 +1,9 @@ +package require + +// TestingT is an interface wrapper around *testing.T +type TestingT interface { + Errorf(format string, args ...interface{}) + FailNow() +} + +//go:generate go run ../_codegen/main.go -output-package=require -template=require.go.tmpl diff --git a/vendor/github.com/ugorji/go/LICENSE b/vendor/github.com/ugorji/go/LICENSE new file mode 100644 index 0000000000..95a0f0541c --- /dev/null +++ b/vendor/github.com/ugorji/go/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2012-2015 Ugorji Nwoke. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/ugorji/go/codec/0doc.go b/vendor/github.com/ugorji/go/codec/0doc.go new file mode 100644 index 0000000000..fd1385b45a --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/0doc.go @@ -0,0 +1,193 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +/* +High Performance, Feature-Rich Idiomatic Go codec/encoding library for +binc, msgpack, cbor, json. + +Supported Serialization formats are: + + - msgpack: https://github.com/msgpack/msgpack + - binc: http://github.com/ugorji/binc + - cbor: http://cbor.io http://tools.ietf.org/html/rfc7049 + - json: http://json.org http://tools.ietf.org/html/rfc7159 + - simple: + +To install: + + go get github.com/ugorji/go/codec + +This package understands the 'unsafe' tag, to allow using unsafe semantics: + + - When decoding into a struct, you need to read the field name as a string + so you can find the struct field it is mapped to. + Using `unsafe` will bypass the allocation and copying overhead of []byte->string conversion. + +To install using unsafe, pass the 'unsafe' tag: + + go get -tags=unsafe github.com/ugorji/go/codec + +For detailed usage information, read the primer at http://ugorji.net/blog/go-codec-primer . + +The idiomatic Go support is as seen in other encoding packages in +the standard library (ie json, xml, gob, etc). + +Rich Feature Set includes: + + - Simple but extremely powerful and feature-rich API + - Very High Performance. + Our extensive benchmarks show us outperforming Gob, Json, Bson, etc by 2-4X. + - Multiple conversions: + Package coerces types where appropriate + e.g. decode an int in the stream into a float, etc. + - Corner Cases: + Overflows, nil maps/slices, nil values in streams are handled correctly + - Standard field renaming via tags + - Support for omitting empty fields during an encoding + - Encoding from any value and decoding into pointer to any value + (struct, slice, map, primitives, pointers, interface{}, etc) + - Extensions to support efficient encoding/decoding of any named types + - Support encoding.(Binary|Text)(M|Unm)arshaler interfaces + - Decoding without a schema (into a interface{}). + Includes Options to configure what specific map or slice type to use + when decoding an encoded list or map into a nil interface{} + - Encode a struct as an array, and decode struct from an array in the data stream + - Comprehensive support for anonymous fields + - Fast (no-reflection) encoding/decoding of common maps and slices + - Code-generation for faster performance. + - Support binary (e.g. messagepack, cbor) and text (e.g. json) formats + - Support indefinite-length formats to enable true streaming + (for formats which support it e.g. json, cbor) + - Support canonical encoding, where a value is ALWAYS encoded as same sequence of bytes. + This mostly applies to maps, where iteration order is non-deterministic. + - NIL in data stream decoded as zero value + - Never silently skip data when decoding. + User decides whether to return an error or silently skip data when keys or indexes + in the data stream do not map to fields in the struct. + - Encode/Decode from/to chan types (for iterative streaming support) + - Drop-in replacement for encoding/json. `json:` key in struct tag supported. + - Provides a RPC Server and Client Codec for net/rpc communication protocol. + - Handle unique idiosynchracies of codecs e.g. + - For messagepack, configure how ambiguities in handling raw bytes are resolved + - For messagepack, provide rpc server/client codec to support + msgpack-rpc protocol defined at: + https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md + +Extension Support + +Users can register a function to handle the encoding or decoding of +their custom types. + +There are no restrictions on what the custom type can be. Some examples: + + type BisSet []int + type BitSet64 uint64 + type UUID string + type MyStructWithUnexportedFields struct { a int; b bool; c []int; } + type GifImage struct { ... } + +As an illustration, MyStructWithUnexportedFields would normally be +encoded as an empty map because it has no exported fields, while UUID +would be encoded as a string. However, with extension support, you can +encode any of these however you like. + +RPC + +RPC Client and Server Codecs are implemented, so the codecs can be used +with the standard net/rpc package. + +Usage + +The Handle is SAFE for concurrent READ, but NOT SAFE for concurrent modification. + +The Encoder and Decoder are NOT safe for concurrent use. + +Consequently, the usage model is basically: + + - Create and initialize the Handle before any use. + Once created, DO NOT modify it. + - Multiple Encoders or Decoders can now use the Handle concurrently. + They only read information off the Handle (never write). + - However, each Encoder or Decoder MUST not be used concurrently + - To re-use an Encoder/Decoder, call Reset(...) on it first. + This allows you use state maintained on the Encoder/Decoder. + +Sample usage model: + + // create and configure Handle + var ( + bh codec.BincHandle + mh codec.MsgpackHandle + ch codec.CborHandle + ) + + mh.MapType = reflect.TypeOf(map[string]interface{}(nil)) + + // configure extensions + // e.g. for msgpack, define functions and enable Time support for tag 1 + // mh.SetExt(reflect.TypeOf(time.Time{}), 1, myExt) + + // create and use decoder/encoder + var ( + r io.Reader + w io.Writer + b []byte + h = &bh // or mh to use msgpack + ) + + dec = codec.NewDecoder(r, h) + dec = codec.NewDecoderBytes(b, h) + err = dec.Decode(&v) + + enc = codec.NewEncoder(w, h) + enc = codec.NewEncoderBytes(&b, h) + err = enc.Encode(v) + + //RPC Server + go func() { + for { + conn, err := listener.Accept() + rpcCodec := codec.GoRpc.ServerCodec(conn, h) + //OR rpcCodec := codec.MsgpackSpecRpc.ServerCodec(conn, h) + rpc.ServeCodec(rpcCodec) + } + }() + + //RPC Communication (client side) + conn, err = net.Dial("tcp", "localhost:5555") + rpcCodec := codec.GoRpc.ClientCodec(conn, h) + //OR rpcCodec := codec.MsgpackSpecRpc.ClientCodec(conn, h) + client := rpc.NewClientWithCodec(rpcCodec) + +*/ +package codec + +// Benefits of go-codec: +// +// - encoding/json always reads whole file into memory first. +// This makes it unsuitable for parsing very large files. +// - encoding/xml cannot parse into a map[string]interface{} +// I found this out on reading https://github.com/clbanning/mxj + +// TODO: +// +// - (En|De)coder should store an error when it occurs. +// Until reset, subsequent calls return that error that was stored. +// This means that free panics must go away. +// All errors must be raised through errorf method. +// - Decoding using a chan is good, but incurs concurrency costs. +// This is because there's no fast way to use a channel without it +// having to switch goroutines constantly. +// Callback pattern is still the best. Maybe cnsider supporting something like: +// type X struct { +// Name string +// Ys []Y +// Ys chan <- Y +// Ys func(interface{}) -> call this interface for each entry in there. +// } +// - Consider adding a isZeroer interface { isZero() bool } +// It is used within isEmpty, for omitEmpty support. +// - Consider making Handle used AS-IS within the encoding/decoding session. +// This means that we don't cache Handle information within the (En|De)coder, +// except we really need it at Reset(...) +// - Handle recursive types during encoding/decoding? diff --git a/vendor/github.com/ugorji/go/codec/binc.go b/vendor/github.com/ugorji/go/codec/binc.go new file mode 100644 index 0000000000..c884d14dce --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/binc.go @@ -0,0 +1,918 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "math" + "reflect" + "time" +) + +const bincDoPrune = true // No longer needed. Needed before as C lib did not support pruning. + +// vd as low 4 bits (there are 16 slots) +const ( + bincVdSpecial byte = iota + bincVdPosInt + bincVdNegInt + bincVdFloat + + bincVdString + bincVdByteArray + bincVdArray + bincVdMap + + bincVdTimestamp + bincVdSmallInt + bincVdUnicodeOther + bincVdSymbol + + bincVdDecimal + _ // open slot + _ // open slot + bincVdCustomExt = 0x0f +) + +const ( + bincSpNil byte = iota + bincSpFalse + bincSpTrue + bincSpNan + bincSpPosInf + bincSpNegInf + bincSpZeroFloat + bincSpZero + bincSpNegOne +) + +const ( + bincFlBin16 byte = iota + bincFlBin32 + _ // bincFlBin32e + bincFlBin64 + _ // bincFlBin64e + // others not currently supported +) + +type bincEncDriver struct { + e *Encoder + w encWriter + m map[string]uint16 // symbols + b [scratchByteArrayLen]byte + s uint16 // symbols sequencer + encNoSeparator +} + +func (e *bincEncDriver) IsBuiltinType(rt uintptr) bool { + return rt == timeTypId +} + +func (e *bincEncDriver) EncodeBuiltin(rt uintptr, v interface{}) { + if rt == timeTypId { + var bs []byte + switch x := v.(type) { + case time.Time: + bs = encodeTime(x) + case *time.Time: + bs = encodeTime(*x) + default: + e.e.errorf("binc error encoding builtin: expect time.Time, received %T", v) + } + e.w.writen1(bincVdTimestamp<<4 | uint8(len(bs))) + e.w.writeb(bs) + } +} + +func (e *bincEncDriver) EncodeNil() { + e.w.writen1(bincVdSpecial<<4 | bincSpNil) +} + +func (e *bincEncDriver) EncodeBool(b bool) { + if b { + e.w.writen1(bincVdSpecial<<4 | bincSpTrue) + } else { + e.w.writen1(bincVdSpecial<<4 | bincSpFalse) + } +} + +func (e *bincEncDriver) EncodeFloat32(f float32) { + if f == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat) + return + } + e.w.writen1(bincVdFloat<<4 | bincFlBin32) + bigenHelper{e.b[:4], e.w}.writeUint32(math.Float32bits(f)) +} + +func (e *bincEncDriver) EncodeFloat64(f float64) { + if f == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZeroFloat) + return + } + bigen.PutUint64(e.b[:8], math.Float64bits(f)) + if bincDoPrune { + i := 7 + for ; i >= 0 && (e.b[i] == 0); i-- { + } + i++ + if i <= 6 { + e.w.writen1(bincVdFloat<<4 | 0x8 | bincFlBin64) + e.w.writen1(byte(i)) + e.w.writeb(e.b[:i]) + return + } + } + e.w.writen1(bincVdFloat<<4 | bincFlBin64) + e.w.writeb(e.b[:8]) +} + +func (e *bincEncDriver) encIntegerPrune(bd byte, pos bool, v uint64, lim uint8) { + if lim == 4 { + bigen.PutUint32(e.b[:lim], uint32(v)) + } else { + bigen.PutUint64(e.b[:lim], v) + } + if bincDoPrune { + i := pruneSignExt(e.b[:lim], pos) + e.w.writen1(bd | lim - 1 - byte(i)) + e.w.writeb(e.b[i:lim]) + } else { + e.w.writen1(bd | lim - 1) + e.w.writeb(e.b[:lim]) + } +} + +func (e *bincEncDriver) EncodeInt(v int64) { + const nbd byte = bincVdNegInt << 4 + if v >= 0 { + e.encUint(bincVdPosInt<<4, true, uint64(v)) + } else if v == -1 { + e.w.writen1(bincVdSpecial<<4 | bincSpNegOne) + } else { + e.encUint(bincVdNegInt<<4, false, uint64(-v)) + } +} + +func (e *bincEncDriver) EncodeUint(v uint64) { + e.encUint(bincVdPosInt<<4, true, v) +} + +func (e *bincEncDriver) encUint(bd byte, pos bool, v uint64) { + if v == 0 { + e.w.writen1(bincVdSpecial<<4 | bincSpZero) + } else if pos && v >= 1 && v <= 16 { + e.w.writen1(bincVdSmallInt<<4 | byte(v-1)) + } else if v <= math.MaxUint8 { + e.w.writen2(bd|0x0, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + bigenHelper{e.b[:2], e.w}.writeUint16(uint16(v)) + } else if v <= math.MaxUint32 { + e.encIntegerPrune(bd, pos, v, 4) + } else { + e.encIntegerPrune(bd, pos, v, 8) + } +} + +func (e *bincEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, _ *Encoder) { + bs := ext.WriteExt(rv) + if bs == nil { + e.EncodeNil() + return + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +} + +func (e *bincEncDriver) EncodeRawExt(re *RawExt, _ *Encoder) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *bincEncDriver) encodeExtPreamble(xtag byte, length int) { + e.encLen(bincVdCustomExt<<4, uint64(length)) + e.w.writen1(xtag) +} + +func (e *bincEncDriver) EncodeArrayStart(length int) { + e.encLen(bincVdArray<<4, uint64(length)) +} + +func (e *bincEncDriver) EncodeMapStart(length int) { + e.encLen(bincVdMap<<4, uint64(length)) +} + +func (e *bincEncDriver) EncodeString(c charEncoding, v string) { + l := uint64(len(v)) + e.encBytesLen(c, l) + if l > 0 { + e.w.writestr(v) + } +} + +func (e *bincEncDriver) EncodeSymbol(v string) { + // if WriteSymbolsNoRefs { + // e.encodeString(c_UTF8, v) + // return + // } + + //symbols only offer benefit when string length > 1. + //This is because strings with length 1 take only 2 bytes to store + //(bd with embedded length, and single byte for string val). + + l := len(v) + if l == 0 { + e.encBytesLen(c_UTF8, 0) + return + } else if l == 1 { + e.encBytesLen(c_UTF8, 1) + e.w.writen1(v[0]) + return + } + if e.m == nil { + e.m = make(map[string]uint16, 16) + } + ui, ok := e.m[v] + if ok { + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8) + bigenHelper{e.b[:2], e.w}.writeUint16(ui) + } + } else { + e.s++ + ui = e.s + //ui = uint16(atomic.AddUint32(&e.s, 1)) + e.m[v] = ui + var lenprec uint8 + if l <= math.MaxUint8 { + // lenprec = 0 + } else if l <= math.MaxUint16 { + lenprec = 1 + } else if int64(l) <= math.MaxUint32 { + lenprec = 2 + } else { + lenprec = 3 + } + if ui <= math.MaxUint8 { + e.w.writen2(bincVdSymbol<<4|0x0|0x4|lenprec, byte(ui)) + } else { + e.w.writen1(bincVdSymbol<<4 | 0x8 | 0x4 | lenprec) + bigenHelper{e.b[:2], e.w}.writeUint16(ui) + } + if lenprec == 0 { + e.w.writen1(byte(l)) + } else if lenprec == 1 { + bigenHelper{e.b[:2], e.w}.writeUint16(uint16(l)) + } else if lenprec == 2 { + bigenHelper{e.b[:4], e.w}.writeUint32(uint32(l)) + } else { + bigenHelper{e.b[:8], e.w}.writeUint64(uint64(l)) + } + e.w.writestr(v) + } +} + +func (e *bincEncDriver) EncodeStringBytes(c charEncoding, v []byte) { + l := uint64(len(v)) + e.encBytesLen(c, l) + if l > 0 { + e.w.writeb(v) + } +} + +func (e *bincEncDriver) encBytesLen(c charEncoding, length uint64) { + //TODO: support bincUnicodeOther (for now, just use string or bytearray) + if c == c_RAW { + e.encLen(bincVdByteArray<<4, length) + } else { + e.encLen(bincVdString<<4, length) + } +} + +func (e *bincEncDriver) encLen(bd byte, l uint64) { + if l < 12 { + e.w.writen1(bd | uint8(l+4)) + } else { + e.encLenNumber(bd, l) + } +} + +func (e *bincEncDriver) encLenNumber(bd byte, v uint64) { + if v <= math.MaxUint8 { + e.w.writen2(bd, byte(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd | 0x01) + bigenHelper{e.b[:2], e.w}.writeUint16(uint16(v)) + } else if v <= math.MaxUint32 { + e.w.writen1(bd | 0x02) + bigenHelper{e.b[:4], e.w}.writeUint32(uint32(v)) + } else { + e.w.writen1(bd | 0x03) + bigenHelper{e.b[:8], e.w}.writeUint64(uint64(v)) + } +} + +//------------------------------------ + +type bincDecSymbol struct { + s string + b []byte + i uint16 +} + +type bincDecDriver struct { + d *Decoder + h *BincHandle + r decReader + br bool // bytes reader + bdRead bool + bd byte + vd byte + vs byte + noStreamingCodec + decNoSeparator + b [scratchByteArrayLen]byte + + // linear searching on this slice is ok, + // because we typically expect < 32 symbols in each stream. + s []bincDecSymbol +} + +func (d *bincDecDriver) readNextBd() { + d.bd = d.r.readn1() + d.vd = d.bd >> 4 + d.vs = d.bd & 0x0f + d.bdRead = true +} + +func (d *bincDecDriver) ContainerType() (vt valueType) { + if d.vd == bincVdSpecial && d.vs == bincSpNil { + return valueTypeNil + } else if d.vd == bincVdByteArray { + return valueTypeBytes + } else if d.vd == bincVdString { + return valueTypeString + } else if d.vd == bincVdArray { + return valueTypeArray + } else if d.vd == bincVdMap { + return valueTypeMap + } else { + // d.d.errorf("isContainerType: unsupported parameter: %v", vt) + } + return valueTypeUnset +} + +func (d *bincDecDriver) TryDecodeAsNil() bool { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincVdSpecial<<4|bincSpNil { + d.bdRead = false + return true + } + return false +} + +func (d *bincDecDriver) IsBuiltinType(rt uintptr) bool { + return rt == timeTypId +} + +func (d *bincDecDriver) DecodeBuiltin(rt uintptr, v interface{}) { + if !d.bdRead { + d.readNextBd() + } + if rt == timeTypId { + if d.vd != bincVdTimestamp { + d.d.errorf("Invalid d.vd. Expecting 0x%x. Received: 0x%x", bincVdTimestamp, d.vd) + return + } + tt, err := decodeTime(d.r.readx(int(d.vs))) + if err != nil { + panic(err) + } + var vt *time.Time = v.(*time.Time) + *vt = tt + d.bdRead = false + } +} + +func (d *bincDecDriver) decFloatPre(vs, defaultLen byte) { + if vs&0x8 == 0 { + d.r.readb(d.b[0:defaultLen]) + } else { + l := d.r.readn1() + if l > 8 { + d.d.errorf("At most 8 bytes used to represent float. Received: %v bytes", l) + return + } + for i := l; i < 8; i++ { + d.b[i] = 0 + } + d.r.readb(d.b[0:l]) + } +} + +func (d *bincDecDriver) decFloat() (f float64) { + //if true { f = math.Float64frombits(bigen.Uint64(d.r.readx(8))); break; } + if x := d.vs & 0x7; x == bincFlBin32 { + d.decFloatPre(d.vs, 4) + f = float64(math.Float32frombits(bigen.Uint32(d.b[0:4]))) + } else if x == bincFlBin64 { + d.decFloatPre(d.vs, 8) + f = math.Float64frombits(bigen.Uint64(d.b[0:8])) + } else { + d.d.errorf("only float32 and float64 are supported. d.vd: 0x%x, d.vs: 0x%x", d.vd, d.vs) + return + } + return +} + +func (d *bincDecDriver) decUint() (v uint64) { + // need to inline the code (interface conversion and type assertion expensive) + switch d.vs { + case 0: + v = uint64(d.r.readn1()) + case 1: + d.r.readb(d.b[6:8]) + v = uint64(bigen.Uint16(d.b[6:8])) + case 2: + d.b[4] = 0 + d.r.readb(d.b[5:8]) + v = uint64(bigen.Uint32(d.b[4:8])) + case 3: + d.r.readb(d.b[4:8]) + v = uint64(bigen.Uint32(d.b[4:8])) + case 4, 5, 6: + lim := int(7 - d.vs) + d.r.readb(d.b[lim:8]) + for i := 0; i < lim; i++ { + d.b[i] = 0 + } + v = uint64(bigen.Uint64(d.b[:8])) + case 7: + d.r.readb(d.b[:8]) + v = uint64(bigen.Uint64(d.b[:8])) + default: + d.d.errorf("unsigned integers with greater than 64 bits of precision not supported") + return + } + return +} + +func (d *bincDecDriver) decCheckInteger() (ui uint64, neg bool) { + if !d.bdRead { + d.readNextBd() + } + vd, vs := d.vd, d.vs + if vd == bincVdPosInt { + ui = d.decUint() + } else if vd == bincVdNegInt { + ui = d.decUint() + neg = true + } else if vd == bincVdSmallInt { + ui = uint64(d.vs) + 1 + } else if vd == bincVdSpecial { + if vs == bincSpZero { + //i = 0 + } else if vs == bincSpNegOne { + neg = true + ui = 1 + } else { + d.d.errorf("numeric decode fails for special value: d.vs: 0x%x", d.vs) + return + } + } else { + d.d.errorf("number can only be decoded from uint or int values. d.bd: 0x%x, d.vd: 0x%x", d.bd, d.vd) + return + } + return +} + +func (d *bincDecDriver) DecodeInt(bitsize uint8) (i int64) { + ui, neg := d.decCheckInteger() + i, overflow := chkOvf.SignedInt(ui) + if overflow { + d.d.errorf("simple: overflow converting %v to signed integer", ui) + return + } + if neg { + i = -i + } + if chkOvf.Int(i, bitsize) { + d.d.errorf("binc: overflow integer: %v", i) + return + } + d.bdRead = false + return +} + +func (d *bincDecDriver) DecodeUint(bitsize uint8) (ui uint64) { + ui, neg := d.decCheckInteger() + if neg { + d.d.errorf("Assigning negative signed value to unsigned type") + return + } + if chkOvf.Uint(ui, bitsize) { + d.d.errorf("binc: overflow integer: %v", ui) + return + } + d.bdRead = false + return +} + +func (d *bincDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + if !d.bdRead { + d.readNextBd() + } + vd, vs := d.vd, d.vs + if vd == bincVdSpecial { + d.bdRead = false + if vs == bincSpNan { + return math.NaN() + } else if vs == bincSpPosInf { + return math.Inf(1) + } else if vs == bincSpZeroFloat || vs == bincSpZero { + return + } else if vs == bincSpNegInf { + return math.Inf(-1) + } else { + d.d.errorf("Invalid d.vs decoding float where d.vd=bincVdSpecial: %v", d.vs) + return + } + } else if vd == bincVdFloat { + f = d.decFloat() + } else { + f = float64(d.DecodeInt(64)) + } + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("binc: float32 overflow: %v", f) + return + } + d.bdRead = false + return +} + +// bool can be decoded from bool only (single byte). +func (d *bincDecDriver) DecodeBool() (b bool) { + if !d.bdRead { + d.readNextBd() + } + if bd := d.bd; bd == (bincVdSpecial | bincSpFalse) { + // b = false + } else if bd == (bincVdSpecial | bincSpTrue) { + b = true + } else { + d.d.errorf("Invalid single-byte value for bool: %s: %x", msgBadDesc, d.bd) + return + } + d.bdRead = false + return +} + +func (d *bincDecDriver) ReadMapStart() (length int) { + if d.vd != bincVdMap { + d.d.errorf("Invalid d.vd for map. Expecting 0x%x. Got: 0x%x", bincVdMap, d.vd) + return + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriver) ReadArrayStart() (length int) { + if d.vd != bincVdArray { + d.d.errorf("Invalid d.vd for array. Expecting 0x%x. Got: 0x%x", bincVdArray, d.vd) + return + } + length = d.decLen() + d.bdRead = false + return +} + +func (d *bincDecDriver) decLen() int { + if d.vs > 3 { + return int(d.vs - 4) + } + return int(d.decLenNumber()) +} + +func (d *bincDecDriver) decLenNumber() (v uint64) { + if x := d.vs; x == 0 { + v = uint64(d.r.readn1()) + } else if x == 1 { + d.r.readb(d.b[6:8]) + v = uint64(bigen.Uint16(d.b[6:8])) + } else if x == 2 { + d.r.readb(d.b[4:8]) + v = uint64(bigen.Uint32(d.b[4:8])) + } else { + d.r.readb(d.b[:8]) + v = bigen.Uint64(d.b[:8]) + } + return +} + +func (d *bincDecDriver) decStringAndBytes(bs []byte, withString, zerocopy bool) (bs2 []byte, s string) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincVdSpecial<<4|bincSpNil { + d.bdRead = false + return + } + var slen int = -1 + // var ok bool + switch d.vd { + case bincVdString, bincVdByteArray: + slen = d.decLen() + if zerocopy { + if d.br { + bs2 = d.r.readx(slen) + } else if len(bs) == 0 { + bs2 = decByteSlice(d.r, slen, d.b[:]) + } else { + bs2 = decByteSlice(d.r, slen, bs) + } + } else { + bs2 = decByteSlice(d.r, slen, bs) + } + if withString { + s = string(bs2) + } + case bincVdSymbol: + // zerocopy doesn't apply for symbols, + // as the values must be stored in a table for later use. + // + //from vs: extract numSymbolBytes, containsStringVal, strLenPrecision, + //extract symbol + //if containsStringVal, read it and put in map + //else look in map for string value + var symbol uint16 + vs := d.vs + if vs&0x8 == 0 { + symbol = uint16(d.r.readn1()) + } else { + symbol = uint16(bigen.Uint16(d.r.readx(2))) + } + if d.s == nil { + d.s = make([]bincDecSymbol, 0, 16) + } + + if vs&0x4 == 0 { + for i := range d.s { + j := &d.s[i] + if j.i == symbol { + bs2 = j.b + if withString { + if j.s == "" && bs2 != nil { + j.s = string(bs2) + } + s = j.s + } + break + } + } + } else { + switch vs & 0x3 { + case 0: + slen = int(d.r.readn1()) + case 1: + slen = int(bigen.Uint16(d.r.readx(2))) + case 2: + slen = int(bigen.Uint32(d.r.readx(4))) + case 3: + slen = int(bigen.Uint64(d.r.readx(8))) + } + // since using symbols, do not store any part of + // the parameter bs in the map, as it might be a shared buffer. + // bs2 = decByteSlice(d.r, slen, bs) + bs2 = decByteSlice(d.r, slen, nil) + if withString { + s = string(bs2) + } + d.s = append(d.s, bincDecSymbol{i: symbol, s: s, b: bs2}) + } + default: + d.d.errorf("Invalid d.vd. Expecting string:0x%x, bytearray:0x%x or symbol: 0x%x. Got: 0x%x", + bincVdString, bincVdByteArray, bincVdSymbol, d.vd) + return + } + d.bdRead = false + return +} + +func (d *bincDecDriver) DecodeString() (s string) { + // DecodeBytes does not accomodate symbols, whose impl stores string version in map. + // Use decStringAndBytes directly. + // return string(d.DecodeBytes(d.b[:], true, true)) + _, s = d.decStringAndBytes(d.b[:], true, true) + return +} + +func (d *bincDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + if isstring { + bsOut, _ = d.decStringAndBytes(bs, false, zerocopy) + return + } + if !d.bdRead { + d.readNextBd() + } + if d.bd == bincVdSpecial<<4|bincSpNil { + d.bdRead = false + return nil + } + var clen int + if d.vd == bincVdString || d.vd == bincVdByteArray { + clen = d.decLen() + } else { + d.d.errorf("Invalid d.vd for bytes. Expecting string:0x%x or bytearray:0x%x. Got: 0x%x", + bincVdString, bincVdByteArray, d.vd) + return + } + d.bdRead = false + if zerocopy { + if d.br { + return d.r.readx(clen) + } else if len(bs) == 0 { + bs = d.b[:] + } + } + return decByteSlice(d.r, clen, bs) +} + +func (d *bincDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { + if xtag > 0xff { + d.d.errorf("decodeExt: tag must be <= 0xff; got: %v", xtag) + return + } + realxtag1, xbs := d.decodeExtV(ext != nil, uint8(xtag)) + realxtag = uint64(realxtag1) + if ext == nil { + re := rv.(*RawExt) + re.Tag = realxtag + re.Data = detachZeroCopyBytes(d.br, re.Data, xbs) + } else { + ext.ReadExt(rv, xbs) + } + return +} + +func (d *bincDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []byte) { + if !d.bdRead { + d.readNextBd() + } + if d.vd == bincVdCustomExt { + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", xtag, tag) + return + } + xbs = d.r.readx(l) + } else if d.vd == bincVdByteArray { + xbs = d.DecodeBytes(nil, false, true) + } else { + d.d.errorf("Invalid d.vd for extensions (Expecting extensions or byte array). Got: 0x%x", d.vd) + return + } + d.bdRead = false + return +} + +func (d *bincDecDriver) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := &d.d.n + var decodeFurther bool + + switch d.vd { + case bincVdSpecial: + switch d.vs { + case bincSpNil: + n.v = valueTypeNil + case bincSpFalse: + n.v = valueTypeBool + n.b = false + case bincSpTrue: + n.v = valueTypeBool + n.b = true + case bincSpNan: + n.v = valueTypeFloat + n.f = math.NaN() + case bincSpPosInf: + n.v = valueTypeFloat + n.f = math.Inf(1) + case bincSpNegInf: + n.v = valueTypeFloat + n.f = math.Inf(-1) + case bincSpZeroFloat: + n.v = valueTypeFloat + n.f = float64(0) + case bincSpZero: + n.v = valueTypeUint + n.u = uint64(0) // int8(0) + case bincSpNegOne: + n.v = valueTypeInt + n.i = int64(-1) // int8(-1) + default: + d.d.errorf("decodeNaked: Unrecognized special value 0x%x", d.vs) + } + case bincVdSmallInt: + n.v = valueTypeUint + n.u = uint64(int8(d.vs)) + 1 // int8(d.vs) + 1 + case bincVdPosInt: + n.v = valueTypeUint + n.u = d.decUint() + case bincVdNegInt: + n.v = valueTypeInt + n.i = -(int64(d.decUint())) + case bincVdFloat: + n.v = valueTypeFloat + n.f = d.decFloat() + case bincVdSymbol: + n.v = valueTypeSymbol + n.s = d.DecodeString() + case bincVdString: + n.v = valueTypeString + n.s = d.DecodeString() + case bincVdByteArray: + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + case bincVdTimestamp: + n.v = valueTypeTimestamp + tt, err := decodeTime(d.r.readx(int(d.vs))) + if err != nil { + panic(err) + } + n.t = tt + case bincVdCustomExt: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(l) + case bincVdArray: + n.v = valueTypeArray + decodeFurther = true + case bincVdMap: + n.v = valueTypeMap + decodeFurther = true + default: + d.d.errorf("decodeNaked: Unrecognized d.vd: 0x%x", d.vd) + } + + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.u) + } + return +} + +//------------------------------------ + +//BincHandle is a Handle for the Binc Schema-Free Encoding Format +//defined at https://github.com/ugorji/binc . +// +//BincHandle currently supports all Binc features with the following EXCEPTIONS: +// - only integers up to 64 bits of precision are supported. +// big integers are unsupported. +// - Only IEEE 754 binary32 and binary64 floats are supported (ie Go float32 and float64 types). +// extended precision and decimal IEEE 754 floats are unsupported. +// - Only UTF-8 strings supported. +// Unicode_Other Binc types (UTF16, UTF32) are currently unsupported. +// +//Note that these EXCEPTIONS are temporary and full support is possible and may happen soon. +type BincHandle struct { + BasicHandle + binaryEncodingType +} + +func (h *BincHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, &setExtWrapper{b: ext}) +} + +func (h *BincHandle) newEncDriver(e *Encoder) encDriver { + return &bincEncDriver{e: e, w: e.w} +} + +func (h *BincHandle) newDecDriver(d *Decoder) decDriver { + return &bincDecDriver{d: d, r: d.r, h: h, br: d.bytes} +} + +func (e *bincEncDriver) reset() { + e.w = e.e.w +} + +func (d *bincDecDriver) reset() { + d.r = d.d.r +} + +var _ decDriver = (*bincDecDriver)(nil) +var _ encDriver = (*bincEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/cbor.go b/vendor/github.com/ugorji/go/codec/cbor.go new file mode 100644 index 0000000000..0e5d32b2ea --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/cbor.go @@ -0,0 +1,584 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "math" + "reflect" +) + +const ( + cborMajorUint byte = iota + cborMajorNegInt + cborMajorBytes + cborMajorText + cborMajorArray + cborMajorMap + cborMajorTag + cborMajorOther +) + +const ( + cborBdFalse byte = 0xf4 + iota + cborBdTrue + cborBdNil + cborBdUndefined + cborBdExt + cborBdFloat16 + cborBdFloat32 + cborBdFloat64 +) + +const ( + cborBdIndefiniteBytes byte = 0x5f + cborBdIndefiniteString = 0x7f + cborBdIndefiniteArray = 0x9f + cborBdIndefiniteMap = 0xbf + cborBdBreak = 0xff +) + +const ( + CborStreamBytes byte = 0x5f + CborStreamString = 0x7f + CborStreamArray = 0x9f + CborStreamMap = 0xbf + CborStreamBreak = 0xff +) + +const ( + cborBaseUint byte = 0x00 + cborBaseNegInt = 0x20 + cborBaseBytes = 0x40 + cborBaseString = 0x60 + cborBaseArray = 0x80 + cborBaseMap = 0xa0 + cborBaseTag = 0xc0 + cborBaseSimple = 0xe0 +) + +// ------------------- + +type cborEncDriver struct { + noBuiltInTypes + encNoSeparator + e *Encoder + w encWriter + h *CborHandle + x [8]byte +} + +func (e *cborEncDriver) EncodeNil() { + e.w.writen1(cborBdNil) +} + +func (e *cborEncDriver) EncodeBool(b bool) { + if b { + e.w.writen1(cborBdTrue) + } else { + e.w.writen1(cborBdFalse) + } +} + +func (e *cborEncDriver) EncodeFloat32(f float32) { + e.w.writen1(cborBdFloat32) + bigenHelper{e.x[:4], e.w}.writeUint32(math.Float32bits(f)) +} + +func (e *cborEncDriver) EncodeFloat64(f float64) { + e.w.writen1(cborBdFloat64) + bigenHelper{e.x[:8], e.w}.writeUint64(math.Float64bits(f)) +} + +func (e *cborEncDriver) encUint(v uint64, bd byte) { + if v <= 0x17 { + e.w.writen1(byte(v) + bd) + } else if v <= math.MaxUint8 { + e.w.writen2(bd+0x18, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 0x19) + bigenHelper{e.x[:2], e.w}.writeUint16(uint16(v)) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 0x1a) + bigenHelper{e.x[:4], e.w}.writeUint32(uint32(v)) + } else { // if v <= math.MaxUint64 { + e.w.writen1(bd + 0x1b) + bigenHelper{e.x[:8], e.w}.writeUint64(v) + } +} + +func (e *cborEncDriver) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-1-v), cborBaseNegInt) + } else { + e.encUint(uint64(v), cborBaseUint) + } +} + +func (e *cborEncDriver) EncodeUint(v uint64) { + e.encUint(v, cborBaseUint) +} + +func (e *cborEncDriver) encLen(bd byte, length int) { + e.encUint(uint64(length), bd) +} + +func (e *cborEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, en *Encoder) { + e.encUint(uint64(xtag), cborBaseTag) + if v := ext.ConvertExt(rv); v == nil { + e.EncodeNil() + } else { + en.encode(v) + } +} + +func (e *cborEncDriver) EncodeRawExt(re *RawExt, en *Encoder) { + e.encUint(uint64(re.Tag), cborBaseTag) + if re.Data != nil { + en.encode(re.Data) + } else if re.Value == nil { + e.EncodeNil() + } else { + en.encode(re.Value) + } +} + +func (e *cborEncDriver) EncodeArrayStart(length int) { + e.encLen(cborBaseArray, length) +} + +func (e *cborEncDriver) EncodeMapStart(length int) { + e.encLen(cborBaseMap, length) +} + +func (e *cborEncDriver) EncodeString(c charEncoding, v string) { + e.encLen(cborBaseString, len(v)) + e.w.writestr(v) +} + +func (e *cborEncDriver) EncodeSymbol(v string) { + e.EncodeString(c_UTF8, v) +} + +func (e *cborEncDriver) EncodeStringBytes(c charEncoding, v []byte) { + if c == c_RAW { + e.encLen(cborBaseBytes, len(v)) + } else { + e.encLen(cborBaseString, len(v)) + } + e.w.writeb(v) +} + +// ---------------------- + +type cborDecDriver struct { + d *Decoder + h *CborHandle + r decReader + b [scratchByteArrayLen]byte + br bool // bytes reader + bdRead bool + bd byte + noBuiltInTypes + decNoSeparator +} + +func (d *cborDecDriver) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *cborDecDriver) ContainerType() (vt valueType) { + if d.bd == cborBdNil { + return valueTypeNil + } else if d.bd == cborBdIndefiniteBytes || (d.bd >= cborBaseBytes && d.bd < cborBaseString) { + return valueTypeBytes + } else if d.bd == cborBdIndefiniteString || (d.bd >= cborBaseString && d.bd < cborBaseArray) { + return valueTypeString + } else if d.bd == cborBdIndefiniteArray || (d.bd >= cborBaseArray && d.bd < cborBaseMap) { + return valueTypeArray + } else if d.bd == cborBdIndefiniteMap || (d.bd >= cborBaseMap && d.bd < cborBaseTag) { + return valueTypeMap + } else { + // d.d.errorf("isContainerType: unsupported parameter: %v", vt) + } + return valueTypeUnset +} + +func (d *cborDecDriver) TryDecodeAsNil() bool { + if !d.bdRead { + d.readNextBd() + } + // treat Nil and Undefined as nil values + if d.bd == cborBdNil || d.bd == cborBdUndefined { + d.bdRead = false + return true + } + return false +} + +func (d *cborDecDriver) CheckBreak() bool { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdBreak { + d.bdRead = false + return true + } + return false +} + +func (d *cborDecDriver) decUint() (ui uint64) { + v := d.bd & 0x1f + if v <= 0x17 { + ui = uint64(v) + } else { + if v == 0x18 { + ui = uint64(d.r.readn1()) + } else if v == 0x19 { + ui = uint64(bigen.Uint16(d.r.readx(2))) + } else if v == 0x1a { + ui = uint64(bigen.Uint32(d.r.readx(4))) + } else if v == 0x1b { + ui = uint64(bigen.Uint64(d.r.readx(8))) + } else { + d.d.errorf("decUint: Invalid descriptor: %v", d.bd) + return + } + } + return +} + +func (d *cborDecDriver) decCheckInteger() (neg bool) { + if !d.bdRead { + d.readNextBd() + } + major := d.bd >> 5 + if major == cborMajorUint { + } else if major == cborMajorNegInt { + neg = true + } else { + d.d.errorf("invalid major: %v (bd: %v)", major, d.bd) + return + } + return +} + +func (d *cborDecDriver) DecodeInt(bitsize uint8) (i int64) { + neg := d.decCheckInteger() + ui := d.decUint() + // check if this number can be converted to an int without overflow + var overflow bool + if neg { + if i, overflow = chkOvf.SignedInt(ui + 1); overflow { + d.d.errorf("cbor: overflow converting %v to signed integer", ui+1) + return + } + i = -i + } else { + if i, overflow = chkOvf.SignedInt(ui); overflow { + d.d.errorf("cbor: overflow converting %v to signed integer", ui) + return + } + } + if chkOvf.Int(i, bitsize) { + d.d.errorf("cbor: overflow integer: %v", i) + return + } + d.bdRead = false + return +} + +func (d *cborDecDriver) DecodeUint(bitsize uint8) (ui uint64) { + if d.decCheckInteger() { + d.d.errorf("Assigning negative signed value to unsigned type") + return + } + ui = d.decUint() + if chkOvf.Uint(ui, bitsize) { + d.d.errorf("cbor: overflow integer: %v", ui) + return + } + d.bdRead = false + return +} + +func (d *cborDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + if !d.bdRead { + d.readNextBd() + } + if bd := d.bd; bd == cborBdFloat16 { + f = float64(math.Float32frombits(halfFloatToFloatBits(bigen.Uint16(d.r.readx(2))))) + } else if bd == cborBdFloat32 { + f = float64(math.Float32frombits(bigen.Uint32(d.r.readx(4)))) + } else if bd == cborBdFloat64 { + f = math.Float64frombits(bigen.Uint64(d.r.readx(8))) + } else if bd >= cborBaseUint && bd < cborBaseBytes { + f = float64(d.DecodeInt(64)) + } else { + d.d.errorf("Float only valid from float16/32/64: Invalid descriptor: %v", bd) + return + } + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("cbor: float32 overflow: %v", f) + return + } + d.bdRead = false + return +} + +// bool can be decoded from bool only (single byte). +func (d *cborDecDriver) DecodeBool() (b bool) { + if !d.bdRead { + d.readNextBd() + } + if bd := d.bd; bd == cborBdTrue { + b = true + } else if bd == cborBdFalse { + } else { + d.d.errorf("Invalid single-byte value for bool: %s: %x", msgBadDesc, d.bd) + return + } + d.bdRead = false + return +} + +func (d *cborDecDriver) ReadMapStart() (length int) { + d.bdRead = false + if d.bd == cborBdIndefiniteMap { + return -1 + } + return d.decLen() +} + +func (d *cborDecDriver) ReadArrayStart() (length int) { + d.bdRead = false + if d.bd == cborBdIndefiniteArray { + return -1 + } + return d.decLen() +} + +func (d *cborDecDriver) decLen() int { + return int(d.decUint()) +} + +func (d *cborDecDriver) decAppendIndefiniteBytes(bs []byte) []byte { + d.bdRead = false + for { + if d.CheckBreak() { + break + } + if major := d.bd >> 5; major != cborMajorBytes && major != cborMajorText { + d.d.errorf("cbor: expect bytes or string major type in indefinite string/bytes; got: %v, byte: %v", major, d.bd) + return nil + } + n := d.decLen() + oldLen := len(bs) + newLen := oldLen + n + if newLen > cap(bs) { + bs2 := make([]byte, newLen, 2*cap(bs)+n) + copy(bs2, bs) + bs = bs2 + } else { + bs = bs[:newLen] + } + d.r.readb(bs[oldLen:newLen]) + // bs = append(bs, d.r.readn()...) + d.bdRead = false + } + d.bdRead = false + return bs +} + +func (d *cborDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == cborBdNil || d.bd == cborBdUndefined { + d.bdRead = false + return nil + } + if d.bd == cborBdIndefiniteBytes || d.bd == cborBdIndefiniteString { + if bs == nil { + return d.decAppendIndefiniteBytes(nil) + } + return d.decAppendIndefiniteBytes(bs[:0]) + } + clen := d.decLen() + d.bdRead = false + if zerocopy { + if d.br { + return d.r.readx(clen) + } else if len(bs) == 0 { + bs = d.b[:] + } + } + return decByteSlice(d.r, clen, bs) +} + +func (d *cborDecDriver) DecodeString() (s string) { + return string(d.DecodeBytes(d.b[:], true, true)) +} + +func (d *cborDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { + if !d.bdRead { + d.readNextBd() + } + u := d.decUint() + d.bdRead = false + realxtag = u + if ext == nil { + re := rv.(*RawExt) + re.Tag = realxtag + d.d.decode(&re.Value) + } else if xtag != realxtag { + d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", realxtag, xtag) + return + } else { + var v interface{} + d.d.decode(&v) + ext.UpdateExt(rv, v) + } + d.bdRead = false + return +} + +func (d *cborDecDriver) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := &d.d.n + var decodeFurther bool + + switch d.bd { + case cborBdNil: + n.v = valueTypeNil + case cborBdFalse: + n.v = valueTypeBool + n.b = false + case cborBdTrue: + n.v = valueTypeBool + n.b = true + case cborBdFloat16, cborBdFloat32: + n.v = valueTypeFloat + n.f = d.DecodeFloat(true) + case cborBdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat(false) + case cborBdIndefiniteBytes: + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + case cborBdIndefiniteString: + n.v = valueTypeString + n.s = d.DecodeString() + case cborBdIndefiniteArray: + n.v = valueTypeArray + decodeFurther = true + case cborBdIndefiniteMap: + n.v = valueTypeMap + decodeFurther = true + default: + switch { + case d.bd >= cborBaseUint && d.bd < cborBaseNegInt: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt(64) + } else { + n.v = valueTypeUint + n.u = d.DecodeUint(64) + } + case d.bd >= cborBaseNegInt && d.bd < cborBaseBytes: + n.v = valueTypeInt + n.i = d.DecodeInt(64) + case d.bd >= cborBaseBytes && d.bd < cborBaseString: + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + case d.bd >= cborBaseString && d.bd < cborBaseArray: + n.v = valueTypeString + n.s = d.DecodeString() + case d.bd >= cborBaseArray && d.bd < cborBaseMap: + n.v = valueTypeArray + decodeFurther = true + case d.bd >= cborBaseMap && d.bd < cborBaseTag: + n.v = valueTypeMap + decodeFurther = true + case d.bd >= cborBaseTag && d.bd < cborBaseSimple: + n.v = valueTypeExt + n.u = d.decUint() + n.l = nil + d.bdRead = false + // d.d.decode(&re.Value) // handled by decode itself. + // decodeFurther = true + default: + d.d.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + return + } + } + + if !decodeFurther { + d.bdRead = false + } + return +} + +// ------------------------- + +// CborHandle is a Handle for the CBOR encoding format, +// defined at http://tools.ietf.org/html/rfc7049 and documented further at http://cbor.io . +// +// CBOR is comprehensively supported, including support for: +// - indefinite-length arrays/maps/bytes/strings +// - (extension) tags in range 0..0xffff (0 .. 65535) +// - half, single and double-precision floats +// - all numbers (1, 2, 4 and 8-byte signed and unsigned integers) +// - nil, true, false, ... +// - arrays and maps, bytes and text strings +// +// None of the optional extensions (with tags) defined in the spec are supported out-of-the-box. +// Users can implement them as needed (using SetExt), including spec-documented ones: +// - timestamp, BigNum, BigFloat, Decimals, Encoded Text (e.g. URL, regexp, base64, MIME Message), etc. +// +// To encode with indefinite lengths (streaming), users will use +// (Must)Encode methods of *Encoder, along with writing CborStreamXXX constants. +// +// For example, to encode "one-byte" as an indefinite length string: +// var buf bytes.Buffer +// e := NewEncoder(&buf, new(CborHandle)) +// buf.WriteByte(CborStreamString) +// e.MustEncode("one-") +// e.MustEncode("byte") +// buf.WriteByte(CborStreamBreak) +// encodedBytes := buf.Bytes() +// var vv interface{} +// NewDecoderBytes(buf.Bytes(), new(CborHandle)).MustDecode(&vv) +// // Now, vv contains the same string "one-byte" +// +type CborHandle struct { + binaryEncodingType + BasicHandle +} + +func (h *CborHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { + return h.SetExt(rt, tag, &setExtWrapper{i: ext}) +} + +func (h *CborHandle) newEncDriver(e *Encoder) encDriver { + return &cborEncDriver{e: e, w: e.w, h: h} +} + +func (h *CborHandle) newDecDriver(d *Decoder) decDriver { + return &cborDecDriver{d: d, r: d.r, h: h, br: d.bytes} +} + +func (e *cborEncDriver) reset() { + e.w = e.e.w +} + +func (d *cborDecDriver) reset() { + d.r = d.d.r +} + +var _ decDriver = (*cborDecDriver)(nil) +var _ encDriver = (*cborEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/decode.go b/vendor/github.com/ugorji/go/codec/decode.go new file mode 100644 index 0000000000..b3b99f0367 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/decode.go @@ -0,0 +1,2015 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + "errors" + "fmt" + "io" + "reflect" + "time" +) + +// Some tagging information for error messages. +const ( + msgBadDesc = "Unrecognized descriptor byte" + msgDecCannotExpandArr = "cannot expand go array from %v to stream length: %v" +) + +var ( + onlyMapOrArrayCanDecodeIntoStructErr = errors.New("only encoded map or array can be decoded into a struct") + cannotDecodeIntoNilErr = errors.New("cannot decode into nil") +) + +// decReader abstracts the reading source, allowing implementations that can +// read from an io.Reader or directly off a byte slice with zero-copying. +type decReader interface { + unreadn1() + + // readx will use the implementation scratch buffer if possible i.e. n < len(scratchbuf), OR + // just return a view of the []byte being decoded from. + // Ensure you call detachZeroCopyBytes later if this needs to be sent outside codec control. + readx(n int) []byte + readb([]byte) + readn1() uint8 + readn1eof() (v uint8, eof bool) + numread() int // number of bytes read + track() + stopTrack() []byte +} + +type decReaderByteScanner interface { + io.Reader + io.ByteScanner +} + +type decDriver interface { + // this will check if the next token is a break. + CheckBreak() bool + TryDecodeAsNil() bool + // vt is one of: Bytes, String, Nil, Slice or Map. Return unSet if not known. + ContainerType() (vt valueType) + IsBuiltinType(rt uintptr) bool + DecodeBuiltin(rt uintptr, v interface{}) + + // DecodeNaked will decode primitives (number, bool, string, []byte) and RawExt. + // For maps and arrays, it will not do the decoding in-band, but will signal + // the decoder, so that is done later, by setting the decNaked.valueType field. + // + // Note: Numbers are decoded as int64, uint64, float64 only (no smaller sized number types). + // for extensions, DecodeNaked must read the tag and the []byte if it exists. + // if the []byte is not read, then kInterfaceNaked will treat it as a Handle + // that stores the subsequent value in-band, and complete reading the RawExt. + // + // extensions should also use readx to decode them, for efficiency. + // kInterface will extract the detached byte slice if it has to pass it outside its realm. + DecodeNaked() + DecodeInt(bitsize uint8) (i int64) + DecodeUint(bitsize uint8) (ui uint64) + DecodeFloat(chkOverflow32 bool) (f float64) + DecodeBool() (b bool) + // DecodeString can also decode symbols. + // It looks redundant as DecodeBytes is available. + // However, some codecs (e.g. binc) support symbols and can + // return a pre-stored string value, meaning that it can bypass + // the cost of []byte->string conversion. + DecodeString() (s string) + + // DecodeBytes may be called directly, without going through reflection. + // Consequently, it must be designed to handle possible nil. + DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) + + // decodeExt will decode into a *RawExt or into an extension. + DecodeExt(v interface{}, xtag uint64, ext Ext) (realxtag uint64) + // decodeExt(verifyTag bool, tag byte) (xtag byte, xbs []byte) + ReadMapStart() int + ReadArrayStart() int + + reset() + uncacheRead() +} + +type decNoSeparator struct{} + +func (_ decNoSeparator) ReadEnd() {} +func (_ decNoSeparator) uncacheRead() {} + +type DecodeOptions struct { + // MapType specifies type to use during schema-less decoding of a map in the stream. + // If nil, we use map[interface{}]interface{} + MapType reflect.Type + + // SliceType specifies type to use during schema-less decoding of an array in the stream. + // If nil, we use []interface{} + SliceType reflect.Type + + // MaxInitLen defines the initial length that we "make" a collection (slice, chan or map) with. + // If 0 or negative, we default to a sensible value based on the size of an element in the collection. + // + // For example, when decoding, a stream may say that it has MAX_UINT elements. + // We should not auto-matically provision a slice of that length, to prevent Out-Of-Memory crash. + // Instead, we provision up to MaxInitLen, fill that up, and start appending after that. + MaxInitLen int + + // If ErrorIfNoField, return an error when decoding a map + // from a codec stream into a struct, and no matching struct field is found. + ErrorIfNoField bool + + // If ErrorIfNoArrayExpand, return an error when decoding a slice/array that cannot be expanded. + // For example, the stream contains an array of 8 items, but you are decoding into a [4]T array, + // or you are decoding into a slice of length 4 which is non-addressable (and so cannot be set). + ErrorIfNoArrayExpand bool + + // If SignedInteger, use the int64 during schema-less decoding of unsigned values (not uint64). + SignedInteger bool + + // MapValueReset controls how we decode into a map value. + // + // By default, we MAY retrieve the mapping for a key, and then decode into that. + // However, especially with big maps, that retrieval may be expensive and unnecessary + // if the stream already contains all that is necessary to recreate the value. + // + // If true, we will never retrieve the previous mapping, + // but rather decode into a new value and set that in the map. + // + // If false, we will retrieve the previous mapping if necessary e.g. + // the previous mapping is a pointer, or is a struct or array with pre-set state, + // or is an interface. + MapValueReset bool + + // InterfaceReset controls how we decode into an interface. + // + // By default, when we see a field that is an interface{...}, + // or a map with interface{...} value, we will attempt decoding into the + // "contained" value. + // + // However, this prevents us from reading a string into an interface{} + // that formerly contained a number. + // + // If true, we will decode into a new "blank" value, and set that in the interface. + // If false, we will decode into whatever is contained in the interface. + InterfaceReset bool + + // InternString controls interning of strings during decoding. + // + // Some handles, e.g. json, typically will read map keys as strings. + // If the set of keys are finite, it may help reduce allocation to + // look them up from a map (than to allocate them afresh). + // + // Note: Handles will be smart when using the intern functionality. + // So everything will not be interned. + InternString bool +} + +// ------------------------------------ + +// ioDecByteScanner implements Read(), ReadByte(...), UnreadByte(...) methods +// of io.Reader, io.ByteScanner. +type ioDecByteScanner struct { + r io.Reader + l byte // last byte + ls byte // last byte status. 0: init-canDoNothing, 1: canRead, 2: canUnread + b [1]byte // tiny buffer for reading single bytes +} + +func (z *ioDecByteScanner) Read(p []byte) (n int, err error) { + var firstByte bool + if z.ls == 1 { + z.ls = 2 + p[0] = z.l + if len(p) == 1 { + n = 1 + return + } + firstByte = true + p = p[1:] + } + n, err = z.r.Read(p) + if n > 0 { + if err == io.EOF && n == len(p) { + err = nil // read was successful, so postpone EOF (till next time) + } + z.l = p[n-1] + z.ls = 2 + } + if firstByte { + n++ + } + return +} + +func (z *ioDecByteScanner) ReadByte() (c byte, err error) { + n, err := z.Read(z.b[:]) + if n == 1 { + c = z.b[0] + if err == io.EOF { + err = nil // read was successful, so postpone EOF (till next time) + } + } + return +} + +func (z *ioDecByteScanner) UnreadByte() (err error) { + x := z.ls + if x == 0 { + err = errors.New("cannot unread - nothing has been read") + } else if x == 1 { + err = errors.New("cannot unread - last byte has not been read") + } else if x == 2 { + z.ls = 1 + } + return +} + +// ioDecReader is a decReader that reads off an io.Reader +type ioDecReader struct { + br decReaderByteScanner + // temp byte array re-used internally for efficiency during read. + // shares buffer with Decoder, so we keep size of struct within 8 words. + x *[scratchByteArrayLen]byte + bs ioDecByteScanner + n int // num read + tr []byte // tracking bytes read + trb bool +} + +func (z *ioDecReader) numread() int { + return z.n +} + +func (z *ioDecReader) readx(n int) (bs []byte) { + if n <= 0 { + return + } + if n < len(z.x) { + bs = z.x[:n] + } else { + bs = make([]byte, n) + } + if _, err := io.ReadAtLeast(z.br, bs, n); err != nil { + panic(err) + } + z.n += len(bs) + if z.trb { + z.tr = append(z.tr, bs...) + } + return +} + +func (z *ioDecReader) readb(bs []byte) { + if len(bs) == 0 { + return + } + n, err := io.ReadAtLeast(z.br, bs, len(bs)) + z.n += n + if err != nil { + panic(err) + } + if z.trb { + z.tr = append(z.tr, bs...) + } +} + +func (z *ioDecReader) readn1() (b uint8) { + b, err := z.br.ReadByte() + if err != nil { + panic(err) + } + z.n++ + if z.trb { + z.tr = append(z.tr, b) + } + return b +} + +func (z *ioDecReader) readn1eof() (b uint8, eof bool) { + b, err := z.br.ReadByte() + if err == nil { + z.n++ + if z.trb { + z.tr = append(z.tr, b) + } + } else if err == io.EOF { + eof = true + } else { + panic(err) + } + return +} + +func (z *ioDecReader) unreadn1() { + err := z.br.UnreadByte() + if err != nil { + panic(err) + } + z.n-- + if z.trb { + if l := len(z.tr) - 1; l >= 0 { + z.tr = z.tr[:l] + } + } +} + +func (z *ioDecReader) track() { + if z.tr != nil { + z.tr = z.tr[:0] + } + z.trb = true +} + +func (z *ioDecReader) stopTrack() (bs []byte) { + z.trb = false + return z.tr +} + +// ------------------------------------ + +var bytesDecReaderCannotUnreadErr = errors.New("cannot unread last byte read") + +// bytesDecReader is a decReader that reads off a byte slice with zero copying +type bytesDecReader struct { + b []byte // data + c int // cursor + a int // available + t int // track start +} + +func (z *bytesDecReader) reset(in []byte) { + z.b = in + z.a = len(in) + z.c = 0 + z.t = 0 +} + +func (z *bytesDecReader) numread() int { + return z.c +} + +func (z *bytesDecReader) unreadn1() { + if z.c == 0 || len(z.b) == 0 { + panic(bytesDecReaderCannotUnreadErr) + } + z.c-- + z.a++ + return +} + +func (z *bytesDecReader) readx(n int) (bs []byte) { + // slicing from a non-constant start position is more expensive, + // as more computation is required to decipher the pointer start position. + // However, we do it only once, and it's better than reslicing both z.b and return value. + + if n <= 0 { + } else if z.a == 0 { + panic(io.EOF) + } else if n > z.a { + panic(io.ErrUnexpectedEOF) + } else { + c0 := z.c + z.c = c0 + n + z.a = z.a - n + bs = z.b[c0:z.c] + } + return +} + +func (z *bytesDecReader) readn1() (v uint8) { + if z.a == 0 { + panic(io.EOF) + } + v = z.b[z.c] + z.c++ + z.a-- + return +} + +func (z *bytesDecReader) readn1eof() (v uint8, eof bool) { + if z.a == 0 { + eof = true + return + } + v = z.b[z.c] + z.c++ + z.a-- + return +} + +func (z *bytesDecReader) readb(bs []byte) { + copy(bs, z.readx(len(bs))) +} + +func (z *bytesDecReader) track() { + z.t = z.c +} + +func (z *bytesDecReader) stopTrack() (bs []byte) { + return z.b[z.t:z.c] +} + +// ------------------------------------ + +type decFnInfo struct { + d *Decoder + ti *typeInfo + xfFn Ext + xfTag uint64 + seq seqType +} + +// ---------------------------------------- + +type decFn struct { + i decFnInfo + f func(*decFnInfo, reflect.Value) +} + +func (f *decFnInfo) builtin(rv reflect.Value) { + f.d.d.DecodeBuiltin(f.ti.rtid, rv.Addr().Interface()) +} + +func (f *decFnInfo) rawExt(rv reflect.Value) { + f.d.d.DecodeExt(rv.Addr().Interface(), 0, nil) +} + +func (f *decFnInfo) ext(rv reflect.Value) { + f.d.d.DecodeExt(rv.Addr().Interface(), f.xfTag, f.xfFn) +} + +func (f *decFnInfo) getValueForUnmarshalInterface(rv reflect.Value, indir int8) (v interface{}) { + if indir == -1 { + v = rv.Addr().Interface() + } else if indir == 0 { + v = rv.Interface() + } else { + for j := int8(0); j < indir; j++ { + if rv.IsNil() { + rv.Set(reflect.New(rv.Type().Elem())) + } + rv = rv.Elem() + } + v = rv.Interface() + } + return +} + +func (f *decFnInfo) selferUnmarshal(rv reflect.Value) { + f.getValueForUnmarshalInterface(rv, f.ti.csIndir).(Selfer).CodecDecodeSelf(f.d) +} + +func (f *decFnInfo) binaryUnmarshal(rv reflect.Value) { + bm := f.getValueForUnmarshalInterface(rv, f.ti.bunmIndir).(encoding.BinaryUnmarshaler) + xbs := f.d.d.DecodeBytes(nil, false, true) + if fnerr := bm.UnmarshalBinary(xbs); fnerr != nil { + panic(fnerr) + } +} + +func (f *decFnInfo) textUnmarshal(rv reflect.Value) { + tm := f.getValueForUnmarshalInterface(rv, f.ti.tunmIndir).(encoding.TextUnmarshaler) + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) + if fnerr != nil { + panic(fnerr) + } +} + +func (f *decFnInfo) jsonUnmarshal(rv reflect.Value) { + tm := f.getValueForUnmarshalInterface(rv, f.ti.junmIndir).(jsonUnmarshaler) + // bs := f.d.d.DecodeBytes(f.d.b[:], true, true) + // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. + fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()) + if fnerr != nil { + panic(fnerr) + } +} + +func (f *decFnInfo) kErr(rv reflect.Value) { + f.d.errorf("no decoding function defined for kind %v", rv.Kind()) +} + +func (f *decFnInfo) kString(rv reflect.Value) { + rv.SetString(f.d.d.DecodeString()) +} + +func (f *decFnInfo) kBool(rv reflect.Value) { + rv.SetBool(f.d.d.DecodeBool()) +} + +func (f *decFnInfo) kInt(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(intBitsize)) +} + +func (f *decFnInfo) kInt64(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(64)) +} + +func (f *decFnInfo) kInt32(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(32)) +} + +func (f *decFnInfo) kInt8(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(8)) +} + +func (f *decFnInfo) kInt16(rv reflect.Value) { + rv.SetInt(f.d.d.DecodeInt(16)) +} + +func (f *decFnInfo) kFloat32(rv reflect.Value) { + rv.SetFloat(f.d.d.DecodeFloat(true)) +} + +func (f *decFnInfo) kFloat64(rv reflect.Value) { + rv.SetFloat(f.d.d.DecodeFloat(false)) +} + +func (f *decFnInfo) kUint8(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(8)) +} + +func (f *decFnInfo) kUint64(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(64)) +} + +func (f *decFnInfo) kUint(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(uintBitsize)) +} + +func (f *decFnInfo) kUintptr(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(uintBitsize)) +} + +func (f *decFnInfo) kUint32(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(32)) +} + +func (f *decFnInfo) kUint16(rv reflect.Value) { + rv.SetUint(f.d.d.DecodeUint(16)) +} + +// func (f *decFnInfo) kPtr(rv reflect.Value) { +// debugf(">>>>>>> ??? decode kPtr called - shouldn't get called") +// if rv.IsNil() { +// rv.Set(reflect.New(rv.Type().Elem())) +// } +// f.d.decodeValue(rv.Elem()) +// } + +// var kIntfCtr uint64 + +func (f *decFnInfo) kInterfaceNaked() (rvn reflect.Value) { + // nil interface: + // use some hieristics to decode it appropriately + // based on the detected next value in the stream. + d := f.d + d.d.DecodeNaked() + n := &d.n + if n.v == valueTypeNil { + return + } + // We cannot decode non-nil stream value into nil interface with methods (e.g. io.Reader). + // if num := f.ti.rt.NumMethod(); num > 0 { + if f.ti.numMeth > 0 { + d.errorf("cannot decode non-nil codec value into nil %v (%v methods)", f.ti.rt, f.ti.numMeth) + return + } + // var useRvn bool + switch n.v { + case valueTypeMap: + // if d.h.MapType == nil || d.h.MapType == mapIntfIntfTyp { + // } else if d.h.MapType == mapStrIntfTyp { // for json performance + // } + if d.mtid == 0 || d.mtid == mapIntfIntfTypId { + l := len(n.ms) + n.ms = append(n.ms, nil) + d.decode(&n.ms[l]) + rvn = reflect.ValueOf(&n.ms[l]).Elem() + n.ms = n.ms[:l] + } else if d.mtid == mapStrIntfTypId { // for json performance + l := len(n.ns) + n.ns = append(n.ns, nil) + d.decode(&n.ns[l]) + rvn = reflect.ValueOf(&n.ns[l]).Elem() + n.ns = n.ns[:l] + } else { + rvn = reflect.New(d.h.MapType).Elem() + d.decodeValue(rvn, nil) + } + case valueTypeArray: + // if d.h.SliceType == nil || d.h.SliceType == intfSliceTyp { + if d.stid == 0 || d.stid == intfSliceTypId { + l := len(n.ss) + n.ss = append(n.ss, nil) + d.decode(&n.ss[l]) + rvn = reflect.ValueOf(&n.ss[l]).Elem() + n.ss = n.ss[:l] + } else { + rvn = reflect.New(d.h.SliceType).Elem() + d.decodeValue(rvn, nil) + } + case valueTypeExt: + var v interface{} + tag, bytes := n.u, n.l // calling decode below might taint the values + if bytes == nil { + l := len(n.is) + n.is = append(n.is, nil) + v2 := &n.is[l] + n.is = n.is[:l] + d.decode(v2) + v = *v2 + } + bfn := d.h.getExtForTag(tag) + if bfn == nil { + var re RawExt + re.Tag = tag + re.Data = detachZeroCopyBytes(d.bytes, nil, bytes) + rvn = reflect.ValueOf(re) + } else { + rvnA := reflect.New(bfn.rt) + rvn = rvnA.Elem() + if bytes != nil { + bfn.ext.ReadExt(rvnA.Interface(), bytes) + } else { + bfn.ext.UpdateExt(rvnA.Interface(), v) + } + } + case valueTypeNil: + // no-op + case valueTypeInt: + rvn = reflect.ValueOf(&n.i).Elem() + case valueTypeUint: + rvn = reflect.ValueOf(&n.u).Elem() + case valueTypeFloat: + rvn = reflect.ValueOf(&n.f).Elem() + case valueTypeBool: + rvn = reflect.ValueOf(&n.b).Elem() + case valueTypeString, valueTypeSymbol: + rvn = reflect.ValueOf(&n.s).Elem() + case valueTypeBytes: + rvn = reflect.ValueOf(&n.l).Elem() + case valueTypeTimestamp: + rvn = reflect.ValueOf(&n.t).Elem() + default: + panic(fmt.Errorf("kInterfaceNaked: unexpected valueType: %d", n.v)) + } + return +} + +func (f *decFnInfo) kInterface(rv reflect.Value) { + // debugf("\t===> kInterface") + + // Note: + // A consequence of how kInterface works, is that + // if an interface already contains something, we try + // to decode into what was there before. + // We do not replace with a generic value (as got from decodeNaked). + + var rvn reflect.Value + if rv.IsNil() { + rvn = f.kInterfaceNaked() + if rvn.IsValid() { + rv.Set(rvn) + } + } else if f.d.h.InterfaceReset { + rvn = f.kInterfaceNaked() + if rvn.IsValid() { + rv.Set(rvn) + } else { + // reset to zero value based on current type in there. + rv.Set(reflect.Zero(rv.Elem().Type())) + } + } else { + rvn = rv.Elem() + // Note: interface{} is settable, but underlying type may not be. + // Consequently, we have to set the reflect.Value directly. + // if underlying type is settable (e.g. ptr or interface), + // we just decode into it. + // Else we create a settable value, decode into it, and set on the interface. + if rvn.CanSet() { + f.d.decodeValue(rvn, nil) + } else { + rvn2 := reflect.New(rvn.Type()).Elem() + rvn2.Set(rvn) + f.d.decodeValue(rvn2, nil) + rv.Set(rvn2) + } + } +} + +func (f *decFnInfo) kStruct(rv reflect.Value) { + fti := f.ti + d := f.d + dd := d.d + cr := d.cr + ctyp := dd.ContainerType() + if ctyp == valueTypeMap { + containerLen := dd.ReadMapStart() + if containerLen == 0 { + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return + } + tisfi := fti.sfi + hasLen := containerLen >= 0 + if hasLen { + for j := 0; j < containerLen; j++ { + // rvkencname := dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + rvkencname := stringView(dd.DecodeBytes(f.d.b[:], true, true)) + // rvksi := ti.getForEncName(rvkencname) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if k := fti.indexForEncName(rvkencname); k > -1 { + si := tisfi[k] + if dd.TryDecodeAsNil() { + si.setToZeroValue(rv) + } else { + d.decodeValue(si.field(rv, true), nil) + } + } else { + d.structFieldNotFound(-1, rvkencname) + } + } + } else { + for j := 0; !dd.CheckBreak(); j++ { + // rvkencname := dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + rvkencname := stringView(dd.DecodeBytes(f.d.b[:], true, true)) + // rvksi := ti.getForEncName(rvkencname) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if k := fti.indexForEncName(rvkencname); k > -1 { + si := tisfi[k] + if dd.TryDecodeAsNil() { + si.setToZeroValue(rv) + } else { + d.decodeValue(si.field(rv, true), nil) + } + } else { + d.structFieldNotFound(-1, rvkencname) + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + } else if ctyp == valueTypeArray { + containerLen := dd.ReadArrayStart() + if containerLen == 0 { + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } + return + } + // Not much gain from doing it two ways for array. + // Arrays are not used as much for structs. + hasLen := containerLen >= 0 + for j, si := range fti.sfip { + if hasLen { + if j == containerLen { + break + } + } else if dd.CheckBreak() { + break + } + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + if dd.TryDecodeAsNil() { + si.setToZeroValue(rv) + } else { + d.decodeValue(si.field(rv, true), nil) + } + } + if containerLen > len(fti.sfip) { + // read remaining values and throw away + for j := len(fti.sfip); j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + d.structFieldNotFound(j, "") + } + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } + } else { + f.d.error(onlyMapOrArrayCanDecodeIntoStructErr) + return + } +} + +func (f *decFnInfo) kSlice(rv reflect.Value) { + // A slice can be set from a map or array in stream. + // This way, the order can be kept (as order is lost with map). + ti := f.ti + d := f.d + dd := d.d + rtelem0 := ti.rt.Elem() + ctyp := dd.ContainerType() + if ctyp == valueTypeBytes || ctyp == valueTypeString { + // you can only decode bytes or string in the stream into a slice or array of bytes + if !(ti.rtid == uint8SliceTypId || rtelem0.Kind() == reflect.Uint8) { + f.d.errorf("bytes or string in the stream must be decoded into a slice or array of bytes, not %v", ti.rt) + } + if f.seq == seqTypeChan { + bs2 := dd.DecodeBytes(nil, false, true) + ch := rv.Interface().(chan<- byte) + for _, b := range bs2 { + ch <- b + } + } else { + rvbs := rv.Bytes() + bs2 := dd.DecodeBytes(rvbs, false, false) + if rvbs == nil && bs2 != nil || rvbs != nil && bs2 == nil || len(bs2) != len(rvbs) { + if rv.CanSet() { + rv.SetBytes(bs2) + } else { + copy(rvbs, bs2) + } + } + } + return + } + + // array := f.seq == seqTypeChan + + slh, containerLenS := d.decSliceHelperStart() // only expects valueType(Array|Map) + + // // an array can never return a nil slice. so no need to check f.array here. + if containerLenS == 0 { + if f.seq == seqTypeSlice { + if rv.IsNil() { + rv.Set(reflect.MakeSlice(ti.rt, 0, 0)) + } else { + rv.SetLen(0) + } + } else if f.seq == seqTypeChan { + if rv.IsNil() { + rv.Set(reflect.MakeChan(ti.rt, 0)) + } + } + slh.End() + return + } + + rtelem := rtelem0 + for rtelem.Kind() == reflect.Ptr { + rtelem = rtelem.Elem() + } + fn := d.getDecFn(rtelem, true, true) + + var rv0, rv9 reflect.Value + rv0 = rv + rvChanged := false + + // for j := 0; j < containerLenS; j++ { + var rvlen int + if containerLenS > 0 { // hasLen + if f.seq == seqTypeChan { + if rv.IsNil() { + rvlen, _ = decInferLen(containerLenS, f.d.h.MaxInitLen, int(rtelem0.Size())) + rv.Set(reflect.MakeChan(ti.rt, rvlen)) + } + // handle chan specially: + for j := 0; j < containerLenS; j++ { + rv9 = reflect.New(rtelem0).Elem() + slh.ElemContainerState(j) + d.decodeValue(rv9, fn) + rv.Send(rv9) + } + } else { // slice or array + var truncated bool // says len of sequence is not same as expected number of elements + numToRead := containerLenS // if truncated, reset numToRead + + rvcap := rv.Cap() + rvlen = rv.Len() + if containerLenS > rvcap { + if f.seq == seqTypeArray { + d.arrayCannotExpand(rvlen, containerLenS) + } else { + oldRvlenGtZero := rvlen > 0 + rvlen, truncated = decInferLen(containerLenS, f.d.h.MaxInitLen, int(rtelem0.Size())) + if truncated { + if rvlen <= rvcap { + rv.SetLen(rvlen) + } else { + rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) + rvChanged = true + } + } else { + rv = reflect.MakeSlice(ti.rt, rvlen, rvlen) + rvChanged = true + } + if rvChanged && oldRvlenGtZero && !isImmutableKind(rtelem0.Kind()) { + reflect.Copy(rv, rv0) // only copy up to length NOT cap i.e. rv0.Slice(0, rvcap) + } + rvcap = rvlen + } + numToRead = rvlen + } else if containerLenS != rvlen { + if f.seq == seqTypeSlice { + rv.SetLen(containerLenS) + rvlen = containerLenS + } + } + j := 0 + // we read up to the numToRead + for ; j < numToRead; j++ { + slh.ElemContainerState(j) + d.decodeValue(rv.Index(j), fn) + } + + // if slice, expand and read up to containerLenS (or EOF) iff truncated + // if array, swallow all the rest. + + if f.seq == seqTypeArray { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } else if truncated { // slice was truncated, as chan NOT in this block + for ; j < containerLenS; j++ { + rv = expandSliceValue(rv, 1) + rv9 = rv.Index(j) + if resetSliceElemToZeroValue { + rv9.Set(reflect.Zero(rtelem0)) + } + slh.ElemContainerState(j) + d.decodeValue(rv9, fn) + } + } + } + } else { + rvlen = rv.Len() + j := 0 + for ; !dd.CheckBreak(); j++ { + if f.seq == seqTypeChan { + slh.ElemContainerState(j) + rv9 = reflect.New(rtelem0).Elem() + d.decodeValue(rv9, fn) + rv.Send(rv9) + } else { + // if indefinite, etc, then expand the slice if necessary + var decodeIntoBlank bool + if j >= rvlen { + if f.seq == seqTypeArray { + d.arrayCannotExpand(rvlen, j+1) + decodeIntoBlank = true + } else { // if f.seq == seqTypeSlice + // rv = reflect.Append(rv, reflect.Zero(rtelem0)) // uses append logic, plus varargs + rv = expandSliceValue(rv, 1) + rv9 = rv.Index(j) + // rv.Index(rv.Len() - 1).Set(reflect.Zero(rtelem0)) + if resetSliceElemToZeroValue { + rv9.Set(reflect.Zero(rtelem0)) + } + rvlen++ + rvChanged = true + } + } else { // slice or array + rv9 = rv.Index(j) + } + slh.ElemContainerState(j) + if decodeIntoBlank { + d.swallow() + } else { // seqTypeSlice + d.decodeValue(rv9, fn) + } + } + } + if f.seq == seqTypeSlice { + if j < rvlen { + rv.SetLen(j) + } else if j == 0 && rv.IsNil() { + rv = reflect.MakeSlice(ti.rt, 0, 0) + rvChanged = true + } + } + } + slh.End() + + if rvChanged { + rv0.Set(rv) + } +} + +func (f *decFnInfo) kArray(rv reflect.Value) { + // f.d.decodeValue(rv.Slice(0, rv.Len())) + f.kSlice(rv.Slice(0, rv.Len())) +} + +func (f *decFnInfo) kMap(rv reflect.Value) { + d := f.d + dd := d.d + containerLen := dd.ReadMapStart() + cr := d.cr + ti := f.ti + if rv.IsNil() { + rv.Set(reflect.MakeMap(ti.rt)) + } + + if containerLen == 0 { + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return + } + + ktype, vtype := ti.rt.Key(), ti.rt.Elem() + ktypeId := reflect.ValueOf(ktype).Pointer() + vtypeKind := vtype.Kind() + var keyFn, valFn *decFn + var xtyp reflect.Type + for xtyp = ktype; xtyp.Kind() == reflect.Ptr; xtyp = xtyp.Elem() { + } + keyFn = d.getDecFn(xtyp, true, true) + for xtyp = vtype; xtyp.Kind() == reflect.Ptr; xtyp = xtyp.Elem() { + } + valFn = d.getDecFn(xtyp, true, true) + var mapGet, mapSet bool + if !f.d.h.MapValueReset { + // if pointer, mapGet = true + // if interface, mapGet = true if !DecodeNakedAlways (else false) + // if builtin, mapGet = false + // else mapGet = true + if vtypeKind == reflect.Ptr { + mapGet = true + } else if vtypeKind == reflect.Interface { + if !f.d.h.InterfaceReset { + mapGet = true + } + } else if !isImmutableKind(vtypeKind) { + mapGet = true + } + } + + var rvk, rvv, rvz reflect.Value + + // for j := 0; j < containerLen; j++ { + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + rvk = reflect.New(ktype).Elem() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + d.decodeValue(rvk, keyFn) + + // special case if a byte array. + if ktypeId == intfTypId { + rvk = rvk.Elem() + if rvk.Type() == uint8SliceTyp { + rvk = reflect.ValueOf(d.string(rvk.Bytes())) + } + } + mapSet = true // set to false if u do a get, and its a pointer, and exists + if mapGet { + rvv = rv.MapIndex(rvk) + if rvv.IsValid() { + if vtypeKind == reflect.Ptr { + mapSet = false + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + d.decodeValue(rvv, valFn) + if mapSet { + rv.SetMapIndex(rvk, rvv) + } + } + } else { + for j := 0; !dd.CheckBreak(); j++ { + rvk = reflect.New(ktype).Elem() + if cr != nil { + cr.sendContainerState(containerMapKey) + } + d.decodeValue(rvk, keyFn) + + // special case if a byte array. + if ktypeId == intfTypId { + rvk = rvk.Elem() + if rvk.Type() == uint8SliceTyp { + rvk = reflect.ValueOf(d.string(rvk.Bytes())) + } + } + mapSet = true // set to false if u do a get, and its a pointer, and exists + if mapGet { + rvv = rv.MapIndex(rvk) + if rvv.IsValid() { + if vtypeKind == reflect.Ptr { + mapSet = false + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + } else { + if rvz.IsValid() { + rvz.Set(reflect.Zero(vtype)) + } else { + rvz = reflect.New(vtype).Elem() + } + rvv = rvz + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + d.decodeValue(rvv, valFn) + if mapSet { + rv.SetMapIndex(rvk, rvv) + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +type decRtidFn struct { + rtid uintptr + fn decFn +} + +// decNaked is used to keep track of the primitives decoded. +// Without it, we would have to decode each primitive and wrap it +// in an interface{}, causing an allocation. +// In this model, the primitives are decoded in a "pseudo-atomic" fashion, +// so we can rest assured that no other decoding happens while these +// primitives are being decoded. +// +// maps and arrays are not handled by this mechanism. +// However, RawExt is, and we accomodate for extensions that decode +// RawExt from DecodeNaked, but need to decode the value subsequently. +// kInterfaceNaked and swallow, which call DecodeNaked, handle this caveat. +// +// However, decNaked also keeps some arrays of default maps and slices +// used in DecodeNaked. This way, we can get a pointer to it +// without causing a new heap allocation. +// +// kInterfaceNaked will ensure that there is no allocation for the common +// uses. +type decNaked struct { + // r RawExt // used for RawExt, uint, []byte. + u uint64 + i int64 + f float64 + l []byte + s string + t time.Time + b bool + v valueType + + // stacks for reducing allocation + is []interface{} + ms []map[interface{}]interface{} + ns []map[string]interface{} + ss [][]interface{} + // rs []RawExt + + // keep arrays at the bottom? Chance is that they are not used much. + ia [4]interface{} + ma [4]map[interface{}]interface{} + na [4]map[string]interface{} + sa [4][]interface{} + // ra [2]RawExt +} + +func (n *decNaked) reset() { + if n.ss != nil { + n.ss = n.ss[:0] + } + if n.is != nil { + n.is = n.is[:0] + } + if n.ms != nil { + n.ms = n.ms[:0] + } + if n.ns != nil { + n.ns = n.ns[:0] + } +} + +// A Decoder reads and decodes an object from an input stream in the codec format. +type Decoder struct { + // hopefully, reduce derefencing cost by laying the decReader inside the Decoder. + // Try to put things that go together to fit within a cache line (8 words). + + d decDriver + // NOTE: Decoder shouldn't call it's read methods, + // as the handler MAY need to do some coordination. + r decReader + // sa [initCollectionCap]decRtidFn + h *BasicHandle + hh Handle + + be bool // is binary encoding + bytes bool // is bytes reader + js bool // is json handle + + rb bytesDecReader + ri ioDecReader + cr containerStateRecv + + s []decRtidFn + f map[uintptr]*decFn + + // _ uintptr // for alignment purposes, so next one starts from a cache line + + // cache the mapTypeId and sliceTypeId for faster comparisons + mtid uintptr + stid uintptr + + n decNaked + b [scratchByteArrayLen]byte + is map[string]string // used for interning strings +} + +// NewDecoder returns a Decoder for decoding a stream of bytes from an io.Reader. +// +// For efficiency, Users are encouraged to pass in a memory buffered reader +// (eg bufio.Reader, bytes.Buffer). +func NewDecoder(r io.Reader, h Handle) *Decoder { + d := newDecoder(h) + d.Reset(r) + return d +} + +// NewDecoderBytes returns a Decoder which efficiently decodes directly +// from a byte slice with zero copying. +func NewDecoderBytes(in []byte, h Handle) *Decoder { + d := newDecoder(h) + d.ResetBytes(in) + return d +} + +func newDecoder(h Handle) *Decoder { + d := &Decoder{hh: h, h: h.getBasicHandle(), be: h.isBinary()} + n := &d.n + // n.rs = n.ra[:0] + n.ms = n.ma[:0] + n.is = n.ia[:0] + n.ns = n.na[:0] + n.ss = n.sa[:0] + _, d.js = h.(*JsonHandle) + if d.h.InternString { + d.is = make(map[string]string, 32) + } + d.d = h.newDecDriver(d) + d.cr, _ = d.d.(containerStateRecv) + // d.d = h.newDecDriver(decReaderT{true, &d.rb, &d.ri}) + return d +} + +func (d *Decoder) resetCommon() { + d.n.reset() + d.d.reset() + // reset all things which were cached from the Handle, + // but could be changed. + d.mtid, d.stid = 0, 0 + if d.h.MapType != nil { + d.mtid = reflect.ValueOf(d.h.MapType).Pointer() + } + if d.h.SliceType != nil { + d.stid = reflect.ValueOf(d.h.SliceType).Pointer() + } +} + +func (d *Decoder) Reset(r io.Reader) { + d.ri.x = &d.b + // d.s = d.sa[:0] + d.ri.bs.r = r + var ok bool + d.ri.br, ok = r.(decReaderByteScanner) + if !ok { + d.ri.br = &d.ri.bs + } + d.r = &d.ri + d.resetCommon() +} + +func (d *Decoder) ResetBytes(in []byte) { + // d.s = d.sa[:0] + d.rb.reset(in) + d.r = &d.rb + d.resetCommon() +} + +// func (d *Decoder) sendContainerState(c containerState) { +// if d.cr != nil { +// d.cr.sendContainerState(c) +// } +// } + +// Decode decodes the stream from reader and stores the result in the +// value pointed to by v. v cannot be a nil pointer. v can also be +// a reflect.Value of a pointer. +// +// Note that a pointer to a nil interface is not a nil pointer. +// If you do not know what type of stream it is, pass in a pointer to a nil interface. +// We will decode and store a value in that nil interface. +// +// Sample usages: +// // Decoding into a non-nil typed value +// var f float32 +// err = codec.NewDecoder(r, handle).Decode(&f) +// +// // Decoding into nil interface +// var v interface{} +// dec := codec.NewDecoder(r, handle) +// err = dec.Decode(&v) +// +// When decoding into a nil interface{}, we will decode into an appropriate value based +// on the contents of the stream: +// - Numbers are decoded as float64, int64 or uint64. +// - Other values are decoded appropriately depending on the type: +// bool, string, []byte, time.Time, etc +// - Extensions are decoded as RawExt (if no ext function registered for the tag) +// Configurations exist on the Handle to override defaults +// (e.g. for MapType, SliceType and how to decode raw bytes). +// +// When decoding into a non-nil interface{} value, the mode of encoding is based on the +// type of the value. When a value is seen: +// - If an extension is registered for it, call that extension function +// - If it implements BinaryUnmarshaler, call its UnmarshalBinary(data []byte) error +// - Else decode it based on its reflect.Kind +// +// There are some special rules when decoding into containers (slice/array/map/struct). +// Decode will typically use the stream contents to UPDATE the container. +// - A map can be decoded from a stream map, by updating matching keys. +// - A slice can be decoded from a stream array, +// by updating the first n elements, where n is length of the stream. +// - A slice can be decoded from a stream map, by decoding as if +// it contains a sequence of key-value pairs. +// - A struct can be decoded from a stream map, by updating matching fields. +// - A struct can be decoded from a stream array, +// by updating fields as they occur in the struct (by index). +// +// When decoding a stream map or array with length of 0 into a nil map or slice, +// we reset the destination map or slice to a zero-length value. +// +// However, when decoding a stream nil, we reset the destination container +// to its "zero" value (e.g. nil for slice/map, etc). +// +func (d *Decoder) Decode(v interface{}) (err error) { + defer panicToErr(&err) + d.decode(v) + return +} + +// this is not a smart swallow, as it allocates objects and does unnecessary work. +func (d *Decoder) swallowViaHammer() { + var blank interface{} + d.decodeValue(reflect.ValueOf(&blank).Elem(), nil) +} + +func (d *Decoder) swallow() { + // smarter decode that just swallows the content + dd := d.d + if dd.TryDecodeAsNil() { + return + } + cr := d.cr + switch dd.ContainerType() { + case valueTypeMap: + containerLen := dd.ReadMapStart() + clenGtEqualZero := containerLen >= 0 + for j := 0; ; j++ { + if clenGtEqualZero { + if j >= containerLen { + break + } + } else if dd.CheckBreak() { + break + } + if cr != nil { + cr.sendContainerState(containerMapKey) + } + d.swallow() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + d.swallow() + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + case valueTypeArray: + containerLenS := dd.ReadArrayStart() + clenGtEqualZero := containerLenS >= 0 + for j := 0; ; j++ { + if clenGtEqualZero { + if j >= containerLenS { + break + } + } else if dd.CheckBreak() { + break + } + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + d.swallow() + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } + case valueTypeBytes: + dd.DecodeBytes(d.b[:], false, true) + case valueTypeString: + dd.DecodeBytes(d.b[:], true, true) + // dd.DecodeStringAsBytes(d.b[:]) + default: + // these are all primitives, which we can get from decodeNaked + // if RawExt using Value, complete the processing. + dd.DecodeNaked() + if n := &d.n; n.v == valueTypeExt && n.l == nil { + l := len(n.is) + n.is = append(n.is, nil) + v2 := &n.is[l] + n.is = n.is[:l] + d.decode(v2) + } + } +} + +// MustDecode is like Decode, but panics if unable to Decode. +// This provides insight to the code location that triggered the error. +func (d *Decoder) MustDecode(v interface{}) { + d.decode(v) +} + +func (d *Decoder) decode(iv interface{}) { + // if ics, ok := iv.(Selfer); ok { + // ics.CodecDecodeSelf(d) + // return + // } + + if d.d.TryDecodeAsNil() { + switch v := iv.(type) { + case nil: + case *string: + *v = "" + case *bool: + *v = false + case *int: + *v = 0 + case *int8: + *v = 0 + case *int16: + *v = 0 + case *int32: + *v = 0 + case *int64: + *v = 0 + case *uint: + *v = 0 + case *uint8: + *v = 0 + case *uint16: + *v = 0 + case *uint32: + *v = 0 + case *uint64: + *v = 0 + case *float32: + *v = 0 + case *float64: + *v = 0 + case *[]uint8: + *v = nil + case reflect.Value: + if v.Kind() != reflect.Ptr || v.IsNil() { + d.errNotValidPtrValue(v) + } + // d.chkPtrValue(v) + v = v.Elem() + if v.IsValid() { + v.Set(reflect.Zero(v.Type())) + } + default: + rv := reflect.ValueOf(iv) + if rv.Kind() != reflect.Ptr || rv.IsNil() { + d.errNotValidPtrValue(rv) + } + // d.chkPtrValue(rv) + rv = rv.Elem() + if rv.IsValid() { + rv.Set(reflect.Zero(rv.Type())) + } + } + return + } + + switch v := iv.(type) { + case nil: + d.error(cannotDecodeIntoNilErr) + return + + case Selfer: + v.CodecDecodeSelf(d) + + case reflect.Value: + if v.Kind() != reflect.Ptr || v.IsNil() { + d.errNotValidPtrValue(v) + } + // d.chkPtrValue(v) + d.decodeValueNotNil(v.Elem(), nil) + + case *string: + + *v = d.d.DecodeString() + case *bool: + *v = d.d.DecodeBool() + case *int: + *v = int(d.d.DecodeInt(intBitsize)) + case *int8: + *v = int8(d.d.DecodeInt(8)) + case *int16: + *v = int16(d.d.DecodeInt(16)) + case *int32: + *v = int32(d.d.DecodeInt(32)) + case *int64: + *v = d.d.DecodeInt(64) + case *uint: + *v = uint(d.d.DecodeUint(uintBitsize)) + case *uint8: + *v = uint8(d.d.DecodeUint(8)) + case *uint16: + *v = uint16(d.d.DecodeUint(16)) + case *uint32: + *v = uint32(d.d.DecodeUint(32)) + case *uint64: + *v = d.d.DecodeUint(64) + case *float32: + *v = float32(d.d.DecodeFloat(true)) + case *float64: + *v = d.d.DecodeFloat(false) + case *[]uint8: + *v = d.d.DecodeBytes(*v, false, false) + + case *interface{}: + d.decodeValueNotNil(reflect.ValueOf(iv).Elem(), nil) + + default: + if !fastpathDecodeTypeSwitch(iv, d) { + d.decodeI(iv, true, false, false, false) + } + } +} + +func (d *Decoder) preDecodeValue(rv reflect.Value, tryNil bool) (rv2 reflect.Value, proceed bool) { + if tryNil && d.d.TryDecodeAsNil() { + // No need to check if a ptr, recursively, to determine + // whether to set value to nil. + // Just always set value to its zero type. + if rv.IsValid() { // rv.CanSet() // always settable, except it's invalid + rv.Set(reflect.Zero(rv.Type())) + } + return + } + + // If stream is not containing a nil value, then we can deref to the base + // non-pointer value, and decode into that. + for rv.Kind() == reflect.Ptr { + if rv.IsNil() { + rv.Set(reflect.New(rv.Type().Elem())) + } + rv = rv.Elem() + } + return rv, true +} + +func (d *Decoder) decodeI(iv interface{}, checkPtr, tryNil, checkFastpath, checkCodecSelfer bool) { + rv := reflect.ValueOf(iv) + if checkPtr { + if rv.Kind() != reflect.Ptr || rv.IsNil() { + d.errNotValidPtrValue(rv) + } + // d.chkPtrValue(rv) + } + rv, proceed := d.preDecodeValue(rv, tryNil) + if proceed { + fn := d.getDecFn(rv.Type(), checkFastpath, checkCodecSelfer) + fn.f(&fn.i, rv) + } +} + +func (d *Decoder) decodeValue(rv reflect.Value, fn *decFn) { + if rv, proceed := d.preDecodeValue(rv, true); proceed { + if fn == nil { + fn = d.getDecFn(rv.Type(), true, true) + } + fn.f(&fn.i, rv) + } +} + +func (d *Decoder) decodeValueNotNil(rv reflect.Value, fn *decFn) { + if rv, proceed := d.preDecodeValue(rv, false); proceed { + if fn == nil { + fn = d.getDecFn(rv.Type(), true, true) + } + fn.f(&fn.i, rv) + } +} + +func (d *Decoder) getDecFn(rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *decFn) { + rtid := reflect.ValueOf(rt).Pointer() + + // retrieve or register a focus'ed function for this type + // to eliminate need to do the retrieval multiple times + + // if d.f == nil && d.s == nil { debugf("---->Creating new dec f map for type: %v\n", rt) } + var ok bool + if useMapForCodecCache { + fn, ok = d.f[rtid] + } else { + for i := range d.s { + v := &(d.s[i]) + if v.rtid == rtid { + fn, ok = &(v.fn), true + break + } + } + } + if ok { + return + } + + if useMapForCodecCache { + if d.f == nil { + d.f = make(map[uintptr]*decFn, initCollectionCap) + } + fn = new(decFn) + d.f[rtid] = fn + } else { + if d.s == nil { + d.s = make([]decRtidFn, 0, initCollectionCap) + } + d.s = append(d.s, decRtidFn{rtid: rtid}) + fn = &(d.s[len(d.s)-1]).fn + } + + // debugf("\tCreating new dec fn for type: %v\n", rt) + ti := d.h.getTypeInfo(rtid, rt) + fi := &(fn.i) + fi.d = d + fi.ti = ti + + // An extension can be registered for any type, regardless of the Kind + // (e.g. type BitSet int64, type MyStruct { / * unexported fields * / }, type X []int, etc. + // + // We can't check if it's an extension byte here first, because the user may have + // registered a pointer or non-pointer type, meaning we may have to recurse first + // before matching a mapped type, even though the extension byte is already detected. + // + // NOTE: if decoding into a nil interface{}, we return a non-nil + // value except even if the container registers a length of 0. + if checkCodecSelfer && ti.cs { + fn.f = (*decFnInfo).selferUnmarshal + } else if rtid == rawExtTypId { + fn.f = (*decFnInfo).rawExt + } else if d.d.IsBuiltinType(rtid) { + fn.f = (*decFnInfo).builtin + } else if xfFn := d.h.getExt(rtid); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.f = (*decFnInfo).ext + } else if supportMarshalInterfaces && d.be && ti.bunm { + fn.f = (*decFnInfo).binaryUnmarshal + } else if supportMarshalInterfaces && !d.be && d.js && ti.junm { + //If JSON, we should check JSONUnmarshal before textUnmarshal + fn.f = (*decFnInfo).jsonUnmarshal + } else if supportMarshalInterfaces && !d.be && ti.tunm { + fn.f = (*decFnInfo).textUnmarshal + } else { + rk := rt.Kind() + if fastpathEnabled && checkFastpath && (rk == reflect.Map || rk == reflect.Slice) { + if rt.PkgPath() == "" { + if idx := fastpathAV.index(rtid); idx != -1 { + fn.f = fastpathAV[idx].decfn + } + } else { + // use mapping for underlying type if there + ok = false + var rtu reflect.Type + if rk == reflect.Map { + rtu = reflect.MapOf(rt.Key(), rt.Elem()) + } else { + rtu = reflect.SliceOf(rt.Elem()) + } + rtuid := reflect.ValueOf(rtu).Pointer() + if idx := fastpathAV.index(rtuid); idx != -1 { + xfnf := fastpathAV[idx].decfn + xrt := fastpathAV[idx].rt + fn.f = func(xf *decFnInfo, xrv reflect.Value) { + // xfnf(xf, xrv.Convert(xrt)) + xfnf(xf, xrv.Addr().Convert(reflect.PtrTo(xrt)).Elem()) + } + } + } + } + if fn.f == nil { + switch rk { + case reflect.String: + fn.f = (*decFnInfo).kString + case reflect.Bool: + fn.f = (*decFnInfo).kBool + case reflect.Int: + fn.f = (*decFnInfo).kInt + case reflect.Int64: + fn.f = (*decFnInfo).kInt64 + case reflect.Int32: + fn.f = (*decFnInfo).kInt32 + case reflect.Int8: + fn.f = (*decFnInfo).kInt8 + case reflect.Int16: + fn.f = (*decFnInfo).kInt16 + case reflect.Float32: + fn.f = (*decFnInfo).kFloat32 + case reflect.Float64: + fn.f = (*decFnInfo).kFloat64 + case reflect.Uint8: + fn.f = (*decFnInfo).kUint8 + case reflect.Uint64: + fn.f = (*decFnInfo).kUint64 + case reflect.Uint: + fn.f = (*decFnInfo).kUint + case reflect.Uint32: + fn.f = (*decFnInfo).kUint32 + case reflect.Uint16: + fn.f = (*decFnInfo).kUint16 + // case reflect.Ptr: + // fn.f = (*decFnInfo).kPtr + case reflect.Uintptr: + fn.f = (*decFnInfo).kUintptr + case reflect.Interface: + fn.f = (*decFnInfo).kInterface + case reflect.Struct: + fn.f = (*decFnInfo).kStruct + case reflect.Chan: + fi.seq = seqTypeChan + fn.f = (*decFnInfo).kSlice + case reflect.Slice: + fi.seq = seqTypeSlice + fn.f = (*decFnInfo).kSlice + case reflect.Array: + fi.seq = seqTypeArray + fn.f = (*decFnInfo).kArray + case reflect.Map: + fn.f = (*decFnInfo).kMap + default: + fn.f = (*decFnInfo).kErr + } + } + } + + return +} + +func (d *Decoder) structFieldNotFound(index int, rvkencname string) { + if d.h.ErrorIfNoField { + if index >= 0 { + d.errorf("no matching struct field found when decoding stream array at index %v", index) + return + } else if rvkencname != "" { + d.errorf("no matching struct field found when decoding stream map with key %s", rvkencname) + return + } + } + d.swallow() +} + +func (d *Decoder) arrayCannotExpand(sliceLen, streamLen int) { + if d.h.ErrorIfNoArrayExpand { + d.errorf("cannot expand array len during decode from %v to %v", sliceLen, streamLen) + } +} + +func (d *Decoder) chkPtrValue(rv reflect.Value) { + // We can only decode into a non-nil pointer + if rv.Kind() == reflect.Ptr && !rv.IsNil() { + return + } + d.errNotValidPtrValue(rv) +} + +func (d *Decoder) errNotValidPtrValue(rv reflect.Value) { + if !rv.IsValid() { + d.error(cannotDecodeIntoNilErr) + return + } + if !rv.CanInterface() { + d.errorf("cannot decode into a value without an interface: %v", rv) + return + } + rvi := rv.Interface() + d.errorf("cannot decode into non-pointer or nil pointer. Got: %v, %T, %v", rv.Kind(), rvi, rvi) +} + +func (d *Decoder) error(err error) { + panic(err) +} + +func (d *Decoder) errorf(format string, params ...interface{}) { + params2 := make([]interface{}, len(params)+1) + params2[0] = d.r.numread() + copy(params2[1:], params) + err := fmt.Errorf("[pos %d]: "+format, params2...) + panic(err) +} + +func (d *Decoder) string(v []byte) (s string) { + if d.is != nil { + s, ok := d.is[string(v)] // no allocation here. + if !ok { + s = string(v) + d.is[s] = s + } + return s + } + return string(v) // don't return stringView, as we need a real string here. +} + +func (d *Decoder) intern(s string) { + if d.is != nil { + d.is[s] = s + } +} + +func (d *Decoder) nextValueBytes() []byte { + d.d.uncacheRead() + d.r.track() + d.swallow() + return d.r.stopTrack() +} + +// -------------------------------------------------- + +// decSliceHelper assists when decoding into a slice, from a map or an array in the stream. +// A slice can be set from a map or array in stream. This supports the MapBySlice interface. +type decSliceHelper struct { + d *Decoder + // ct valueType + array bool +} + +func (d *Decoder) decSliceHelperStart() (x decSliceHelper, clen int) { + dd := d.d + ctyp := dd.ContainerType() + if ctyp == valueTypeArray { + x.array = true + clen = dd.ReadArrayStart() + } else if ctyp == valueTypeMap { + clen = dd.ReadMapStart() * 2 + } else { + d.errorf("only encoded map or array can be decoded into a slice (%d)", ctyp) + } + // x.ct = ctyp + x.d = d + return +} + +func (x decSliceHelper) End() { + cr := x.d.cr + if cr == nil { + return + } + if x.array { + cr.sendContainerState(containerArrayEnd) + } else { + cr.sendContainerState(containerMapEnd) + } +} + +func (x decSliceHelper) ElemContainerState(index int) { + cr := x.d.cr + if cr == nil { + return + } + if x.array { + cr.sendContainerState(containerArrayElem) + } else { + if index%2 == 0 { + cr.sendContainerState(containerMapKey) + } else { + cr.sendContainerState(containerMapValue) + } + } +} + +func decByteSlice(r decReader, clen int, bs []byte) (bsOut []byte) { + if clen == 0 { + return zeroByteSlice + } + if len(bs) == clen { + bsOut = bs + } else if cap(bs) >= clen { + bsOut = bs[:clen] + } else { + bsOut = make([]byte, clen) + } + r.readb(bsOut) + return +} + +func detachZeroCopyBytes(isBytesReader bool, dest []byte, in []byte) (out []byte) { + if xlen := len(in); xlen > 0 { + if isBytesReader || xlen <= scratchByteArrayLen { + if cap(dest) >= xlen { + out = dest[:xlen] + } else { + out = make([]byte, xlen) + } + copy(out, in) + return + } + } + return in +} + +// decInferLen will infer a sensible length, given the following: +// - clen: length wanted. +// - maxlen: max length to be returned. +// if <= 0, it is unset, and we infer it based on the unit size +// - unit: number of bytes for each element of the collection +func decInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { + // handle when maxlen is not set i.e. <= 0 + if clen <= 0 { + return + } + if maxlen <= 0 { + // no maxlen defined. Use maximum of 256K memory, with a floor of 4K items. + // maxlen = 256 * 1024 / unit + // if maxlen < (4 * 1024) { + // maxlen = 4 * 1024 + // } + if unit < (256 / 4) { + maxlen = 256 * 1024 / unit + } else { + maxlen = 4 * 1024 + } + } + if clen > maxlen { + rvlen = maxlen + truncated = true + } else { + rvlen = clen + } + return + // if clen <= 0 { + // rvlen = 0 + // } else if maxlen > 0 && clen > maxlen { + // rvlen = maxlen + // truncated = true + // } else { + // rvlen = clen + // } + // return +} + +// // implement overall decReader wrapping both, for possible use inline: +// type decReaderT struct { +// bytes bool +// rb *bytesDecReader +// ri *ioDecReader +// } +// +// // implement *Decoder as a decReader. +// // Using decReaderT (defined just above) caused performance degradation +// // possibly because of constant copying the value, +// // and some value->interface conversion causing allocation. +// func (d *Decoder) unreadn1() { +// if d.bytes { +// d.rb.unreadn1() +// } else { +// d.ri.unreadn1() +// } +// } +// ... for other methods of decReader. +// Testing showed that performance improvement was negligible. diff --git a/vendor/github.com/ugorji/go/codec/encode.go b/vendor/github.com/ugorji/go/codec/encode.go new file mode 100644 index 0000000000..99af6fa555 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/encode.go @@ -0,0 +1,1405 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "encoding" + "fmt" + "io" + "reflect" + "sort" + "sync" +) + +const ( + defEncByteBufSize = 1 << 6 // 4:16, 6:64, 8:256, 10:1024 +) + +// AsSymbolFlag defines what should be encoded as symbols. +type AsSymbolFlag uint8 + +const ( + // AsSymbolDefault is default. + // Currently, this means only encode struct field names as symbols. + // The default is subject to change. + AsSymbolDefault AsSymbolFlag = iota + + // AsSymbolAll means encode anything which could be a symbol as a symbol. + AsSymbolAll = 0xfe + + // AsSymbolNone means do not encode anything as a symbol. + AsSymbolNone = 1 << iota + + // AsSymbolMapStringKeys means encode keys in map[string]XXX as symbols. + AsSymbolMapStringKeysFlag + + // AsSymbolStructFieldName means encode struct field names as symbols. + AsSymbolStructFieldNameFlag +) + +// encWriter abstracts writing to a byte array or to an io.Writer. +type encWriter interface { + writeb([]byte) + writestr(string) + writen1(byte) + writen2(byte, byte) + atEndOfEncode() +} + +// encDriver abstracts the actual codec (binc vs msgpack, etc) +type encDriver interface { + IsBuiltinType(rt uintptr) bool + EncodeBuiltin(rt uintptr, v interface{}) + EncodeNil() + EncodeInt(i int64) + EncodeUint(i uint64) + EncodeBool(b bool) + EncodeFloat32(f float32) + EncodeFloat64(f float64) + // encodeExtPreamble(xtag byte, length int) + EncodeRawExt(re *RawExt, e *Encoder) + EncodeExt(v interface{}, xtag uint64, ext Ext, e *Encoder) + EncodeArrayStart(length int) + EncodeMapStart(length int) + EncodeString(c charEncoding, v string) + EncodeSymbol(v string) + EncodeStringBytes(c charEncoding, v []byte) + //TODO + //encBignum(f *big.Int) + //encStringRunes(c charEncoding, v []rune) + + reset() +} + +type encDriverAsis interface { + EncodeAsis(v []byte) +} + +type encNoSeparator struct{} + +func (_ encNoSeparator) EncodeEnd() {} + +type ioEncWriterWriter interface { + WriteByte(c byte) error + WriteString(s string) (n int, err error) + Write(p []byte) (n int, err error) +} + +type ioEncStringWriter interface { + WriteString(s string) (n int, err error) +} + +type EncodeOptions struct { + // Encode a struct as an array, and not as a map + StructToArray bool + + // Canonical representation means that encoding a value will always result in the same + // sequence of bytes. + // + // This only affects maps, as the iteration order for maps is random. + // + // The implementation MAY use the natural sort order for the map keys if possible: + // + // - If there is a natural sort order (ie for number, bool, string or []byte keys), + // then the map keys are first sorted in natural order and then written + // with corresponding map values to the strema. + // - If there is no natural sort order, then the map keys will first be + // encoded into []byte, and then sorted, + // before writing the sorted keys and the corresponding map values to the stream. + // + Canonical bool + + // AsSymbols defines what should be encoded as symbols. + // + // Encoding as symbols can reduce the encoded size significantly. + // + // However, during decoding, each string to be encoded as a symbol must + // be checked to see if it has been seen before. Consequently, encoding time + // will increase if using symbols, because string comparisons has a clear cost. + // + // Sample values: + // AsSymbolNone + // AsSymbolAll + // AsSymbolMapStringKeys + // AsSymbolMapStringKeysFlag | AsSymbolStructFieldNameFlag + AsSymbols AsSymbolFlag +} + +// --------------------------------------------- + +type simpleIoEncWriterWriter struct { + w io.Writer + bw io.ByteWriter + sw ioEncStringWriter +} + +func (o *simpleIoEncWriterWriter) WriteByte(c byte) (err error) { + if o.bw != nil { + return o.bw.WriteByte(c) + } + _, err = o.w.Write([]byte{c}) + return +} + +func (o *simpleIoEncWriterWriter) WriteString(s string) (n int, err error) { + if o.sw != nil { + return o.sw.WriteString(s) + } + // return o.w.Write([]byte(s)) + return o.w.Write(bytesView(s)) +} + +func (o *simpleIoEncWriterWriter) Write(p []byte) (n int, err error) { + return o.w.Write(p) +} + +// ---------------------------------------- + +// ioEncWriter implements encWriter and can write to an io.Writer implementation +type ioEncWriter struct { + w ioEncWriterWriter + s simpleIoEncWriterWriter + // x [8]byte // temp byte array re-used internally for efficiency +} + +func (z *ioEncWriter) writeb(bs []byte) { + if len(bs) == 0 { + return + } + n, err := z.w.Write(bs) + if err != nil { + panic(err) + } + if n != len(bs) { + panic(fmt.Errorf("incorrect num bytes written. Expecting: %v, Wrote: %v", len(bs), n)) + } +} + +func (z *ioEncWriter) writestr(s string) { + n, err := z.w.WriteString(s) + if err != nil { + panic(err) + } + if n != len(s) { + panic(fmt.Errorf("incorrect num bytes written. Expecting: %v, Wrote: %v", len(s), n)) + } +} + +func (z *ioEncWriter) writen1(b byte) { + if err := z.w.WriteByte(b); err != nil { + panic(err) + } +} + +func (z *ioEncWriter) writen2(b1 byte, b2 byte) { + z.writen1(b1) + z.writen1(b2) +} + +func (z *ioEncWriter) atEndOfEncode() {} + +// ---------------------------------------- + +// bytesEncWriter implements encWriter and can write to an byte slice. +// It is used by Marshal function. +type bytesEncWriter struct { + b []byte + c int // cursor + out *[]byte // write out on atEndOfEncode +} + +func (z *bytesEncWriter) writeb(s []byte) { + if len(s) > 0 { + c := z.grow(len(s)) + copy(z.b[c:], s) + } +} + +func (z *bytesEncWriter) writestr(s string) { + if len(s) > 0 { + c := z.grow(len(s)) + copy(z.b[c:], s) + } +} + +func (z *bytesEncWriter) writen1(b1 byte) { + c := z.grow(1) + z.b[c] = b1 +} + +func (z *bytesEncWriter) writen2(b1 byte, b2 byte) { + c := z.grow(2) + z.b[c] = b1 + z.b[c+1] = b2 +} + +func (z *bytesEncWriter) atEndOfEncode() { + *(z.out) = z.b[:z.c] +} + +func (z *bytesEncWriter) grow(n int) (oldcursor int) { + oldcursor = z.c + z.c = oldcursor + n + if z.c > len(z.b) { + if z.c > cap(z.b) { + // appendslice logic (if cap < 1024, *2, else *1.25): more expensive. many copy calls. + // bytes.Buffer model (2*cap + n): much better + // bs := make([]byte, 2*cap(z.b)+n) + bs := make([]byte, growCap(cap(z.b), 1, n)) + copy(bs, z.b[:oldcursor]) + z.b = bs + } else { + z.b = z.b[:cap(z.b)] + } + } + return +} + +// --------------------------------------------- + +type encFnInfo struct { + e *Encoder + ti *typeInfo + xfFn Ext + xfTag uint64 + seq seqType +} + +func (f *encFnInfo) builtin(rv reflect.Value) { + f.e.e.EncodeBuiltin(f.ti.rtid, rv.Interface()) +} + +func (f *encFnInfo) rawExt(rv reflect.Value) { + // rev := rv.Interface().(RawExt) + // f.e.e.EncodeRawExt(&rev, f.e) + var re *RawExt + if rv.CanAddr() { + re = rv.Addr().Interface().(*RawExt) + } else { + rev := rv.Interface().(RawExt) + re = &rev + } + f.e.e.EncodeRawExt(re, f.e) +} + +func (f *encFnInfo) ext(rv reflect.Value) { + // if this is a struct|array and it was addressable, then pass the address directly (not the value) + if k := rv.Kind(); (k == reflect.Struct || k == reflect.Array) && rv.CanAddr() { + rv = rv.Addr() + } + f.e.e.EncodeExt(rv.Interface(), f.xfTag, f.xfFn, f.e) +} + +func (f *encFnInfo) getValueForMarshalInterface(rv reflect.Value, indir int8) (v interface{}, proceed bool) { + if indir == 0 { + v = rv.Interface() + } else if indir == -1 { + // If a non-pointer was passed to Encode(), then that value is not addressable. + // Take addr if addresable, else copy value to an addressable value. + if rv.CanAddr() { + v = rv.Addr().Interface() + } else { + rv2 := reflect.New(rv.Type()) + rv2.Elem().Set(rv) + v = rv2.Interface() + // fmt.Printf("rv.Type: %v, rv2.Type: %v, v: %v\n", rv.Type(), rv2.Type(), v) + } + } else { + for j := int8(0); j < indir; j++ { + if rv.IsNil() { + f.e.e.EncodeNil() + return + } + rv = rv.Elem() + } + v = rv.Interface() + } + return v, true +} + +func (f *encFnInfo) selferMarshal(rv reflect.Value) { + if v, proceed := f.getValueForMarshalInterface(rv, f.ti.csIndir); proceed { + v.(Selfer).CodecEncodeSelf(f.e) + } +} + +func (f *encFnInfo) binaryMarshal(rv reflect.Value) { + if v, proceed := f.getValueForMarshalInterface(rv, f.ti.bmIndir); proceed { + bs, fnerr := v.(encoding.BinaryMarshaler).MarshalBinary() + f.e.marshal(bs, fnerr, false, c_RAW) + } +} + +func (f *encFnInfo) textMarshal(rv reflect.Value) { + if v, proceed := f.getValueForMarshalInterface(rv, f.ti.tmIndir); proceed { + // debugf(">>>> encoding.TextMarshaler: %T", rv.Interface()) + bs, fnerr := v.(encoding.TextMarshaler).MarshalText() + f.e.marshal(bs, fnerr, false, c_UTF8) + } +} + +func (f *encFnInfo) jsonMarshal(rv reflect.Value) { + if v, proceed := f.getValueForMarshalInterface(rv, f.ti.jmIndir); proceed { + bs, fnerr := v.(jsonMarshaler).MarshalJSON() + f.e.marshal(bs, fnerr, true, c_UTF8) + } +} + +func (f *encFnInfo) kBool(rv reflect.Value) { + f.e.e.EncodeBool(rv.Bool()) +} + +func (f *encFnInfo) kString(rv reflect.Value) { + f.e.e.EncodeString(c_UTF8, rv.String()) +} + +func (f *encFnInfo) kFloat64(rv reflect.Value) { + f.e.e.EncodeFloat64(rv.Float()) +} + +func (f *encFnInfo) kFloat32(rv reflect.Value) { + f.e.e.EncodeFloat32(float32(rv.Float())) +} + +func (f *encFnInfo) kInt(rv reflect.Value) { + f.e.e.EncodeInt(rv.Int()) +} + +func (f *encFnInfo) kUint(rv reflect.Value) { + f.e.e.EncodeUint(rv.Uint()) +} + +func (f *encFnInfo) kInvalid(rv reflect.Value) { + f.e.e.EncodeNil() +} + +func (f *encFnInfo) kErr(rv reflect.Value) { + f.e.errorf("unsupported kind %s, for %#v", rv.Kind(), rv) +} + +func (f *encFnInfo) kSlice(rv reflect.Value) { + ti := f.ti + // array may be non-addressable, so we have to manage with care + // (don't call rv.Bytes, rv.Slice, etc). + // E.g. type struct S{B [2]byte}; + // Encode(S{}) will bomb on "panic: slice of unaddressable array". + e := f.e + if f.seq != seqTypeArray { + if rv.IsNil() { + e.e.EncodeNil() + return + } + // If in this method, then there was no extension function defined. + // So it's okay to treat as []byte. + if ti.rtid == uint8SliceTypId { + e.e.EncodeStringBytes(c_RAW, rv.Bytes()) + return + } + } + cr := e.cr + rtelem := ti.rt.Elem() + l := rv.Len() + if ti.rtid == uint8SliceTypId || rtelem.Kind() == reflect.Uint8 { + switch f.seq { + case seqTypeArray: + // if l == 0 { e.e.encodeStringBytes(c_RAW, nil) } else + if rv.CanAddr() { + e.e.EncodeStringBytes(c_RAW, rv.Slice(0, l).Bytes()) + } else { + var bs []byte + if l <= cap(e.b) { + bs = e.b[:l] + } else { + bs = make([]byte, l) + } + reflect.Copy(reflect.ValueOf(bs), rv) + // TODO: Test that reflect.Copy works instead of manual one-by-one + // for i := 0; i < l; i++ { + // bs[i] = byte(rv.Index(i).Uint()) + // } + e.e.EncodeStringBytes(c_RAW, bs) + } + case seqTypeSlice: + e.e.EncodeStringBytes(c_RAW, rv.Bytes()) + case seqTypeChan: + bs := e.b[:0] + // do not use range, so that the number of elements encoded + // does not change, and encoding does not hang waiting on someone to close chan. + // for b := range rv.Interface().(<-chan byte) { + // bs = append(bs, b) + // } + ch := rv.Interface().(<-chan byte) + for i := 0; i < l; i++ { + bs = append(bs, <-ch) + } + e.e.EncodeStringBytes(c_RAW, bs) + } + return + } + + if ti.mbs { + if l%2 == 1 { + e.errorf("mapBySlice requires even slice length, but got %v", l) + return + } + e.e.EncodeMapStart(l / 2) + } else { + e.e.EncodeArrayStart(l) + } + + if l > 0 { + for rtelem.Kind() == reflect.Ptr { + rtelem = rtelem.Elem() + } + // if kind is reflect.Interface, do not pre-determine the + // encoding type, because preEncodeValue may break it down to + // a concrete type and kInterface will bomb. + var fn *encFn + if rtelem.Kind() != reflect.Interface { + rtelemid := reflect.ValueOf(rtelem).Pointer() + fn = e.getEncFn(rtelemid, rtelem, true, true) + } + // TODO: Consider perf implication of encoding odd index values as symbols if type is string + for j := 0; j < l; j++ { + if cr != nil { + if ti.mbs { + if l%2 == 0 { + cr.sendContainerState(containerMapKey) + } else { + cr.sendContainerState(containerMapValue) + } + } else { + cr.sendContainerState(containerArrayElem) + } + } + if f.seq == seqTypeChan { + if rv2, ok2 := rv.Recv(); ok2 { + e.encodeValue(rv2, fn) + } else { + e.encode(nil) // WE HAVE TO DO SOMETHING, so nil if nothing received. + } + } else { + e.encodeValue(rv.Index(j), fn) + } + } + } + + if cr != nil { + if ti.mbs { + cr.sendContainerState(containerMapEnd) + } else { + cr.sendContainerState(containerArrayEnd) + } + } +} + +func (f *encFnInfo) kStruct(rv reflect.Value) { + fti := f.ti + e := f.e + cr := e.cr + tisfi := fti.sfip + toMap := !(fti.toArray || e.h.StructToArray) + newlen := len(fti.sfi) + + // Use sync.Pool to reduce allocating slices unnecessarily. + // The cost of the occasional locking is less than the cost of new allocation. + pool, poolv, fkvs := encStructPoolGet(newlen) + + // if toMap, use the sorted array. If toArray, use unsorted array (to match sequence in struct) + if toMap { + tisfi = fti.sfi + } + newlen = 0 + var kv stringRv + for _, si := range tisfi { + kv.r = si.field(rv, false) + // if si.i != -1 { + // rvals[newlen] = rv.Field(int(si.i)) + // } else { + // rvals[newlen] = rv.FieldByIndex(si.is) + // } + if toMap { + if si.omitEmpty && isEmptyValue(kv.r) { + continue + } + kv.v = si.encName + } else { + // use the zero value. + // if a reference or struct, set to nil (so you do not output too much) + if si.omitEmpty && isEmptyValue(kv.r) { + switch kv.r.Kind() { + case reflect.Struct, reflect.Interface, reflect.Ptr, reflect.Array, + reflect.Map, reflect.Slice: + kv.r = reflect.Value{} //encode as nil + } + } + } + fkvs[newlen] = kv + newlen++ + } + + // debugf(">>>> kStruct: newlen: %v", newlen) + // sep := !e.be + ee := e.e //don't dereference everytime + + if toMap { + ee.EncodeMapStart(newlen) + // asSymbols := e.h.AsSymbols&AsSymbolStructFieldNameFlag != 0 + asSymbols := e.h.AsSymbols == AsSymbolDefault || e.h.AsSymbols&AsSymbolStructFieldNameFlag != 0 + for j := 0; j < newlen; j++ { + kv = fkvs[j] + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(kv.v) + } else { + ee.EncodeString(c_UTF8, kv.v) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(kv.r, nil) + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + } else { + ee.EncodeArrayStart(newlen) + for j := 0; j < newlen; j++ { + kv = fkvs[j] + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + e.encodeValue(kv.r, nil) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } + } + + // do not use defer. Instead, use explicit pool return at end of function. + // defer has a cost we are trying to avoid. + // If there is a panic and these slices are not returned, it is ok. + if pool != nil { + pool.Put(poolv) + } +} + +// func (f *encFnInfo) kPtr(rv reflect.Value) { +// debugf(">>>>>>> ??? encode kPtr called - shouldn't get called") +// if rv.IsNil() { +// f.e.e.encodeNil() +// return +// } +// f.e.encodeValue(rv.Elem()) +// } + +func (f *encFnInfo) kInterface(rv reflect.Value) { + if rv.IsNil() { + f.e.e.EncodeNil() + return + } + f.e.encodeValue(rv.Elem(), nil) +} + +func (f *encFnInfo) kMap(rv reflect.Value) { + ee := f.e.e + if rv.IsNil() { + ee.EncodeNil() + return + } + + l := rv.Len() + ee.EncodeMapStart(l) + e := f.e + cr := e.cr + if l == 0 { + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return + } + var asSymbols bool + // determine the underlying key and val encFn's for the map. + // This eliminates some work which is done for each loop iteration i.e. + // rv.Type(), ref.ValueOf(rt).Pointer(), then check map/list for fn. + // + // However, if kind is reflect.Interface, do not pre-determine the + // encoding type, because preEncodeValue may break it down to + // a concrete type and kInterface will bomb. + var keyFn, valFn *encFn + ti := f.ti + rtkey := ti.rt.Key() + rtval := ti.rt.Elem() + rtkeyid := reflect.ValueOf(rtkey).Pointer() + // keyTypeIsString := f.ti.rt.Key().Kind() == reflect.String + var keyTypeIsString = rtkeyid == stringTypId + if keyTypeIsString { + asSymbols = e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + } else { + for rtkey.Kind() == reflect.Ptr { + rtkey = rtkey.Elem() + } + if rtkey.Kind() != reflect.Interface { + rtkeyid = reflect.ValueOf(rtkey).Pointer() + keyFn = e.getEncFn(rtkeyid, rtkey, true, true) + } + } + for rtval.Kind() == reflect.Ptr { + rtval = rtval.Elem() + } + if rtval.Kind() != reflect.Interface { + rtvalid := reflect.ValueOf(rtval).Pointer() + valFn = e.getEncFn(rtvalid, rtval, true, true) + } + mks := rv.MapKeys() + // for j, lmks := 0, len(mks); j < lmks; j++ { + + if e.h.Canonical { + e.kMapCanonical(rtkeyid, rtkey, rv, mks, valFn, asSymbols) + } else { + for j := range mks { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if keyTypeIsString { + if asSymbols { + ee.EncodeSymbol(mks[j].String()) + } else { + ee.EncodeString(c_UTF8, mks[j].String()) + } + } else { + e.encodeValue(mks[j], keyFn) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mks[j]), valFn) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (e *Encoder) kMapCanonical(rtkeyid uintptr, rtkey reflect.Type, rv reflect.Value, mks []reflect.Value, valFn *encFn, asSymbols bool) { + ee := e.e + cr := e.cr + // we previously did out-of-band if an extension was registered. + // This is not necessary, as the natural kind is sufficient for ordering. + + if rtkeyid == uint8SliceTypId { + mksv := make([]bytesRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Bytes() + } + sort.Sort(bytesRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeStringBytes(c_RAW, mksv[i].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + } else { + switch rtkey.Kind() { + case reflect.Bool: + mksv := make([]boolRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Bool() + } + sort.Sort(boolRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(mksv[i].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + case reflect.String: + mksv := make([]stringRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.String() + } + sort.Sort(stringRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(mksv[i].v) + } else { + ee.EncodeString(c_UTF8, mksv[i].v) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr: + mksv := make([]uintRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Uint() + } + sort.Sort(uintRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(mksv[i].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + mksv := make([]intRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Int() + } + sort.Sort(intRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(mksv[i].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + case reflect.Float32: + mksv := make([]floatRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + sort.Sort(floatRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(mksv[i].v)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + case reflect.Float64: + mksv := make([]floatRv, len(mks)) + for i, k := range mks { + v := &mksv[i] + v.r = k + v.v = k.Float() + } + sort.Sort(floatRvSlice(mksv)) + for i := range mksv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(mksv[i].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksv[i].r), valFn) + } + default: + // out-of-band + // first encode each key to a []byte first, then sort them, then record + var mksv []byte = make([]byte, 0, len(mks)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + mksbv := make([]bytesRv, len(mks)) + for i, k := range mks { + v := &mksbv[i] + l := len(mksv) + e2.MustEncode(k) + v.r = k + v.v = mksv[l:] + // fmt.Printf(">>>>> %s\n", mksv[l:]) + } + sort.Sort(bytesRvSlice(mksbv)) + for j := range mksbv { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(mksbv[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encodeValue(rv.MapIndex(mksbv[j].r), valFn) + } + } + } +} + +// -------------------------------------------------- + +// encFn encapsulates the captured variables and the encode function. +// This way, we only do some calculations one times, and pass to the +// code block that should be called (encapsulated in a function) +// instead of executing the checks every time. +type encFn struct { + i encFnInfo + f func(*encFnInfo, reflect.Value) +} + +// -------------------------------------------------- + +type encRtidFn struct { + rtid uintptr + fn encFn +} + +// An Encoder writes an object to an output stream in the codec format. +type Encoder struct { + // hopefully, reduce derefencing cost by laying the encWriter inside the Encoder + e encDriver + // NOTE: Encoder shouldn't call it's write methods, + // as the handler MAY need to do some coordination. + w encWriter + s []encRtidFn + be bool // is binary encoding + js bool // is json handle + + wi ioEncWriter + wb bytesEncWriter + + h *BasicHandle + hh Handle + + cr containerStateRecv + as encDriverAsis + + f map[uintptr]*encFn + b [scratchByteArrayLen]byte +} + +// NewEncoder returns an Encoder for encoding into an io.Writer. +// +// For efficiency, Users are encouraged to pass in a memory buffered writer +// (eg bufio.Writer, bytes.Buffer). +func NewEncoder(w io.Writer, h Handle) *Encoder { + e := newEncoder(h) + e.Reset(w) + return e +} + +// NewEncoderBytes returns an encoder for encoding directly and efficiently +// into a byte slice, using zero-copying to temporary slices. +// +// It will potentially replace the output byte slice pointed to. +// After encoding, the out parameter contains the encoded contents. +func NewEncoderBytes(out *[]byte, h Handle) *Encoder { + e := newEncoder(h) + e.ResetBytes(out) + return e +} + +func newEncoder(h Handle) *Encoder { + e := &Encoder{hh: h, h: h.getBasicHandle(), be: h.isBinary()} + _, e.js = h.(*JsonHandle) + e.e = h.newEncDriver(e) + e.as, _ = e.e.(encDriverAsis) + e.cr, _ = e.e.(containerStateRecv) + return e +} + +// Reset the Encoder with a new output stream. +// +// This accomodates using the state of the Encoder, +// where it has "cached" information about sub-engines. +func (e *Encoder) Reset(w io.Writer) { + ww, ok := w.(ioEncWriterWriter) + if ok { + e.wi.w = ww + } else { + sww := &e.wi.s + sww.w = w + sww.bw, _ = w.(io.ByteWriter) + sww.sw, _ = w.(ioEncStringWriter) + e.wi.w = sww + //ww = bufio.NewWriterSize(w, defEncByteBufSize) + } + e.w = &e.wi + e.e.reset() +} + +func (e *Encoder) ResetBytes(out *[]byte) { + in := *out + if in == nil { + in = make([]byte, defEncByteBufSize) + } + e.wb.b, e.wb.out, e.wb.c = in, out, 0 + e.w = &e.wb + e.e.reset() +} + +// func (e *Encoder) sendContainerState(c containerState) { +// if e.cr != nil { +// e.cr.sendContainerState(c) +// } +// } + +// Encode writes an object into a stream. +// +// Encoding can be configured via the struct tag for the fields. +// The "codec" key in struct field's tag value is the key name, +// followed by an optional comma and options. +// Note that the "json" key is used in the absence of the "codec" key. +// +// To set an option on all fields (e.g. omitempty on all fields), you +// can create a field called _struct, and set flags on it. +// +// Struct values "usually" encode as maps. Each exported struct field is encoded unless: +// - the field's tag is "-", OR +// - the field is empty (empty or the zero value) and its tag specifies the "omitempty" option. +// +// When encoding as a map, the first string in the tag (before the comma) +// is the map key string to use when encoding. +// +// However, struct values may encode as arrays. This happens when: +// - StructToArray Encode option is set, OR +// - the tag on the _struct field sets the "toarray" option +// +// Values with types that implement MapBySlice are encoded as stream maps. +// +// The empty values (for omitempty option) are false, 0, any nil pointer +// or interface value, and any array, slice, map, or string of length zero. +// +// Anonymous fields are encoded inline except: +// - the struct tag specifies a replacement name (first value) +// - the field is of an interface type +// +// Examples: +// +// // NOTE: 'json:' can be used as struct tag key, in place 'codec:' below. +// type MyStruct struct { +// _struct bool `codec:",omitempty"` //set omitempty for every field +// Field1 string `codec:"-"` //skip this field +// Field2 int `codec:"myName"` //Use key "myName" in encode stream +// Field3 int32 `codec:",omitempty"` //use key "Field3". Omit if empty. +// Field4 bool `codec:"f4,omitempty"` //use key "f4". Omit if empty. +// io.Reader //use key "Reader". +// MyStruct `codec:"my1" //use key "my1". +// MyStruct //inline it +// ... +// } +// +// type MyStruct struct { +// _struct bool `codec:",omitempty,toarray"` //set omitempty for every field +// //and encode struct as an array +// } +// +// The mode of encoding is based on the type of the value. When a value is seen: +// - If a Selfer, call its CodecEncodeSelf method +// - If an extension is registered for it, call that extension function +// - If it implements encoding.(Binary|Text|JSON)Marshaler, call its Marshal(Binary|Text|JSON) method +// - Else encode it based on its reflect.Kind +// +// Note that struct field names and keys in map[string]XXX will be treated as symbols. +// Some formats support symbols (e.g. binc) and will properly encode the string +// only once in the stream, and use a tag to refer to it thereafter. +func (e *Encoder) Encode(v interface{}) (err error) { + defer panicToErr(&err) + e.encode(v) + e.w.atEndOfEncode() + return +} + +// MustEncode is like Encode, but panics if unable to Encode. +// This provides insight to the code location that triggered the error. +func (e *Encoder) MustEncode(v interface{}) { + e.encode(v) + e.w.atEndOfEncode() +} + +// comment out these (Must)Write methods. They were only put there to support cbor. +// However, users already have access to the streams, and can write directly. +// +// // Write allows users write to the Encoder stream directly. +// func (e *Encoder) Write(bs []byte) (err error) { +// defer panicToErr(&err) +// e.w.writeb(bs) +// return +// } +// // MustWrite is like write, but panics if unable to Write. +// func (e *Encoder) MustWrite(bs []byte) { +// e.w.writeb(bs) +// } + +func (e *Encoder) encode(iv interface{}) { + // if ics, ok := iv.(Selfer); ok { + // ics.CodecEncodeSelf(e) + // return + // } + + switch v := iv.(type) { + case nil: + e.e.EncodeNil() + case Selfer: + v.CodecEncodeSelf(e) + + case reflect.Value: + e.encodeValue(v, nil) + + case string: + e.e.EncodeString(c_UTF8, v) + case bool: + e.e.EncodeBool(v) + case int: + e.e.EncodeInt(int64(v)) + case int8: + e.e.EncodeInt(int64(v)) + case int16: + e.e.EncodeInt(int64(v)) + case int32: + e.e.EncodeInt(int64(v)) + case int64: + e.e.EncodeInt(v) + case uint: + e.e.EncodeUint(uint64(v)) + case uint8: + e.e.EncodeUint(uint64(v)) + case uint16: + e.e.EncodeUint(uint64(v)) + case uint32: + e.e.EncodeUint(uint64(v)) + case uint64: + e.e.EncodeUint(v) + case float32: + e.e.EncodeFloat32(v) + case float64: + e.e.EncodeFloat64(v) + + case []uint8: + e.e.EncodeStringBytes(c_RAW, v) + + case *string: + e.e.EncodeString(c_UTF8, *v) + case *bool: + e.e.EncodeBool(*v) + case *int: + e.e.EncodeInt(int64(*v)) + case *int8: + e.e.EncodeInt(int64(*v)) + case *int16: + e.e.EncodeInt(int64(*v)) + case *int32: + e.e.EncodeInt(int64(*v)) + case *int64: + e.e.EncodeInt(*v) + case *uint: + e.e.EncodeUint(uint64(*v)) + case *uint8: + e.e.EncodeUint(uint64(*v)) + case *uint16: + e.e.EncodeUint(uint64(*v)) + case *uint32: + e.e.EncodeUint(uint64(*v)) + case *uint64: + e.e.EncodeUint(*v) + case *float32: + e.e.EncodeFloat32(*v) + case *float64: + e.e.EncodeFloat64(*v) + + case *[]uint8: + e.e.EncodeStringBytes(c_RAW, *v) + + default: + const checkCodecSelfer1 = true // in case T is passed, where *T is a Selfer, still checkCodecSelfer + if !fastpathEncodeTypeSwitch(iv, e) { + e.encodeI(iv, false, checkCodecSelfer1) + } + } +} + +func (e *Encoder) encodeI(iv interface{}, checkFastpath, checkCodecSelfer bool) { + if rv, proceed := e.preEncodeValue(reflect.ValueOf(iv)); proceed { + rt := rv.Type() + rtid := reflect.ValueOf(rt).Pointer() + fn := e.getEncFn(rtid, rt, checkFastpath, checkCodecSelfer) + fn.f(&fn.i, rv) + } +} + +func (e *Encoder) preEncodeValue(rv reflect.Value) (rv2 reflect.Value, proceed bool) { + // use a goto statement instead of a recursive function for ptr/interface. +TOP: + switch rv.Kind() { + case reflect.Ptr, reflect.Interface: + if rv.IsNil() { + e.e.EncodeNil() + return + } + rv = rv.Elem() + goto TOP + case reflect.Slice, reflect.Map: + if rv.IsNil() { + e.e.EncodeNil() + return + } + case reflect.Invalid, reflect.Func: + e.e.EncodeNil() + return + } + + return rv, true +} + +func (e *Encoder) encodeValue(rv reflect.Value, fn *encFn) { + // if a valid fn is passed, it MUST BE for the dereferenced type of rv + if rv, proceed := e.preEncodeValue(rv); proceed { + if fn == nil { + rt := rv.Type() + rtid := reflect.ValueOf(rt).Pointer() + fn = e.getEncFn(rtid, rt, true, true) + } + fn.f(&fn.i, rv) + } +} + +func (e *Encoder) getEncFn(rtid uintptr, rt reflect.Type, checkFastpath, checkCodecSelfer bool) (fn *encFn) { + // rtid := reflect.ValueOf(rt).Pointer() + var ok bool + if useMapForCodecCache { + fn, ok = e.f[rtid] + } else { + for i := range e.s { + v := &(e.s[i]) + if v.rtid == rtid { + fn, ok = &(v.fn), true + break + } + } + } + if ok { + return + } + + if useMapForCodecCache { + if e.f == nil { + e.f = make(map[uintptr]*encFn, initCollectionCap) + } + fn = new(encFn) + e.f[rtid] = fn + } else { + if e.s == nil { + e.s = make([]encRtidFn, 0, initCollectionCap) + } + e.s = append(e.s, encRtidFn{rtid: rtid}) + fn = &(e.s[len(e.s)-1]).fn + } + + ti := e.h.getTypeInfo(rtid, rt) + fi := &(fn.i) + fi.e = e + fi.ti = ti + + if checkCodecSelfer && ti.cs { + fn.f = (*encFnInfo).selferMarshal + } else if rtid == rawExtTypId { + fn.f = (*encFnInfo).rawExt + } else if e.e.IsBuiltinType(rtid) { + fn.f = (*encFnInfo).builtin + } else if xfFn := e.h.getExt(rtid); xfFn != nil { + fi.xfTag, fi.xfFn = xfFn.tag, xfFn.ext + fn.f = (*encFnInfo).ext + } else if supportMarshalInterfaces && e.be && ti.bm { + fn.f = (*encFnInfo).binaryMarshal + } else if supportMarshalInterfaces && !e.be && e.js && ti.jm { + //If JSON, we should check JSONMarshal before textMarshal + fn.f = (*encFnInfo).jsonMarshal + } else if supportMarshalInterfaces && !e.be && ti.tm { + fn.f = (*encFnInfo).textMarshal + } else { + rk := rt.Kind() + if fastpathEnabled && checkFastpath && (rk == reflect.Map || rk == reflect.Slice) { + if rt.PkgPath() == "" { + if idx := fastpathAV.index(rtid); idx != -1 { + fn.f = fastpathAV[idx].encfn + } + } else { + ok = false + // use mapping for underlying type if there + var rtu reflect.Type + if rk == reflect.Map { + rtu = reflect.MapOf(rt.Key(), rt.Elem()) + } else { + rtu = reflect.SliceOf(rt.Elem()) + } + rtuid := reflect.ValueOf(rtu).Pointer() + if idx := fastpathAV.index(rtuid); idx != -1 { + xfnf := fastpathAV[idx].encfn + xrt := fastpathAV[idx].rt + fn.f = func(xf *encFnInfo, xrv reflect.Value) { + xfnf(xf, xrv.Convert(xrt)) + } + } + } + } + if fn.f == nil { + switch rk { + case reflect.Bool: + fn.f = (*encFnInfo).kBool + case reflect.String: + fn.f = (*encFnInfo).kString + case reflect.Float64: + fn.f = (*encFnInfo).kFloat64 + case reflect.Float32: + fn.f = (*encFnInfo).kFloat32 + case reflect.Int, reflect.Int8, reflect.Int64, reflect.Int32, reflect.Int16: + fn.f = (*encFnInfo).kInt + case reflect.Uint8, reflect.Uint64, reflect.Uint, reflect.Uint32, reflect.Uint16, reflect.Uintptr: + fn.f = (*encFnInfo).kUint + case reflect.Invalid: + fn.f = (*encFnInfo).kInvalid + case reflect.Chan: + fi.seq = seqTypeChan + fn.f = (*encFnInfo).kSlice + case reflect.Slice: + fi.seq = seqTypeSlice + fn.f = (*encFnInfo).kSlice + case reflect.Array: + fi.seq = seqTypeArray + fn.f = (*encFnInfo).kSlice + case reflect.Struct: + fn.f = (*encFnInfo).kStruct + // case reflect.Ptr: + // fn.f = (*encFnInfo).kPtr + case reflect.Interface: + fn.f = (*encFnInfo).kInterface + case reflect.Map: + fn.f = (*encFnInfo).kMap + default: + fn.f = (*encFnInfo).kErr + } + } + } + + return +} + +func (e *Encoder) marshal(bs []byte, fnerr error, asis bool, c charEncoding) { + if fnerr != nil { + panic(fnerr) + } + if bs == nil { + e.e.EncodeNil() + } else if asis { + e.asis(bs) + } else { + e.e.EncodeStringBytes(c, bs) + } +} + +func (e *Encoder) asis(v []byte) { + if e.as == nil { + e.w.writeb(v) + } else { + e.as.EncodeAsis(v) + } +} + +func (e *Encoder) errorf(format string, params ...interface{}) { + err := fmt.Errorf(format, params...) + panic(err) +} + +// ---------------------------------------- + +const encStructPoolLen = 5 + +// encStructPool is an array of sync.Pool. +// Each element of the array pools one of encStructPool(8|16|32|64). +// It allows the re-use of slices up to 64 in length. +// A performance cost of encoding structs was collecting +// which values were empty and should be omitted. +// We needed slices of reflect.Value and string to collect them. +// This shared pool reduces the amount of unnecessary creation we do. +// The cost is that of locking sometimes, but sync.Pool is efficient +// enough to reduce thread contention. +var encStructPool [encStructPoolLen]sync.Pool + +func init() { + encStructPool[0].New = func() interface{} { return new([8]stringRv) } + encStructPool[1].New = func() interface{} { return new([16]stringRv) } + encStructPool[2].New = func() interface{} { return new([32]stringRv) } + encStructPool[3].New = func() interface{} { return new([64]stringRv) } + encStructPool[4].New = func() interface{} { return new([128]stringRv) } +} + +func encStructPoolGet(newlen int) (p *sync.Pool, v interface{}, s []stringRv) { + // if encStructPoolLen != 5 { // constant chec, so removed at build time. + // panic(errors.New("encStructPoolLen must be equal to 4")) // defensive, in case it is changed + // } + // idxpool := newlen / 8 + + // if pool == nil { + // fkvs = make([]stringRv, newlen) + // } else { + // poolv = pool.Get() + // switch vv := poolv.(type) { + // case *[8]stringRv: + // fkvs = vv[:newlen] + // case *[16]stringRv: + // fkvs = vv[:newlen] + // case *[32]stringRv: + // fkvs = vv[:newlen] + // case *[64]stringRv: + // fkvs = vv[:newlen] + // case *[128]stringRv: + // fkvs = vv[:newlen] + // } + // } + + if newlen <= 8 { + p = &encStructPool[0] + v = p.Get() + s = v.(*[8]stringRv)[:newlen] + } else if newlen <= 16 { + p = &encStructPool[1] + v = p.Get() + s = v.(*[16]stringRv)[:newlen] + } else if newlen <= 32 { + p = &encStructPool[2] + v = p.Get() + s = v.(*[32]stringRv)[:newlen] + } else if newlen <= 64 { + p = &encStructPool[3] + v = p.Get() + s = v.(*[64]stringRv)[:newlen] + } else if newlen <= 128 { + p = &encStructPool[4] + v = p.Get() + s = v.(*[128]stringRv)[:newlen] + } else { + s = make([]stringRv, newlen) + } + return +} + +// ---------------------------------------- + +// func encErr(format string, params ...interface{}) { +// doPanic(msgTagEnc, format, params...) +// } diff --git a/vendor/github.com/ugorji/go/codec/fast-path.generated.go b/vendor/github.com/ugorji/go/codec/fast-path.generated.go new file mode 100644 index 0000000000..d968a500fd --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/fast-path.generated.go @@ -0,0 +1,38900 @@ +// +build !notfastpath + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED from fast-path.go.tmpl +// ************************************************************ + +package codec + +// Fast path functions try to create a fast path encode or decode implementation +// for common maps and slices. +// +// We define the functions and register then in this single file +// so as not to pollute the encode.go and decode.go, and create a dependency in there. +// This file can be omitted without causing a build failure. +// +// The advantage of fast paths is: +// - Many calls bypass reflection altogether +// +// Currently support +// - slice of all builtin types, +// - map of all builtin types to string or interface value +// - symetrical maps of all builtin types (e.g. str-str, uint8-uint8) +// This should provide adequate "typical" implementations. +// +// Note that fast track decode functions must handle values for which an address cannot be obtained. +// For example: +// m2 := map[string]int{} +// p2 := []interface{}{m2} +// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. +// + +import ( + "reflect" + "sort" +) + +const fastpathCheckNilFalse = false // for reflect +const fastpathCheckNilTrue = true // for type switch + +type fastpathT struct{} + +var fastpathTV fastpathT + +type fastpathE struct { + rtid uintptr + rt reflect.Type + encfn func(*encFnInfo, reflect.Value) + decfn func(*decFnInfo, reflect.Value) +} + +type fastpathA [271]fastpathE + +func (x *fastpathA) index(rtid uintptr) int { + // use binary search to grab the index (adapted from sort/search.go) + h, i, j := 0, 0, 271 // len(x) + for i < j { + h = i + (j-i)/2 + if x[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + } + if i < 271 && x[i].rtid == rtid { + return i + } + return -1 +} + +type fastpathAslice []fastpathE + +func (x fastpathAslice) Len() int { return len(x) } +func (x fastpathAslice) Less(i, j int) bool { return x[i].rtid < x[j].rtid } +func (x fastpathAslice) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +var fastpathAV fastpathA + +// due to possible initialization loop error, make fastpath in an init() +func init() { + if !fastpathEnabled { + return + } + i := 0 + fn := func(v interface{}, fe func(*encFnInfo, reflect.Value), fd func(*decFnInfo, reflect.Value)) (f fastpathE) { + xrt := reflect.TypeOf(v) + xptr := reflect.ValueOf(xrt).Pointer() + fastpathAV[i] = fastpathE{xptr, xrt, fe, fd} + i++ + return + } + + fn([]interface{}(nil), (*encFnInfo).fastpathEncSliceIntfR, (*decFnInfo).fastpathDecSliceIntfR) + fn([]string(nil), (*encFnInfo).fastpathEncSliceStringR, (*decFnInfo).fastpathDecSliceStringR) + fn([]float32(nil), (*encFnInfo).fastpathEncSliceFloat32R, (*decFnInfo).fastpathDecSliceFloat32R) + fn([]float64(nil), (*encFnInfo).fastpathEncSliceFloat64R, (*decFnInfo).fastpathDecSliceFloat64R) + fn([]uint(nil), (*encFnInfo).fastpathEncSliceUintR, (*decFnInfo).fastpathDecSliceUintR) + fn([]uint16(nil), (*encFnInfo).fastpathEncSliceUint16R, (*decFnInfo).fastpathDecSliceUint16R) + fn([]uint32(nil), (*encFnInfo).fastpathEncSliceUint32R, (*decFnInfo).fastpathDecSliceUint32R) + fn([]uint64(nil), (*encFnInfo).fastpathEncSliceUint64R, (*decFnInfo).fastpathDecSliceUint64R) + fn([]uintptr(nil), (*encFnInfo).fastpathEncSliceUintptrR, (*decFnInfo).fastpathDecSliceUintptrR) + fn([]int(nil), (*encFnInfo).fastpathEncSliceIntR, (*decFnInfo).fastpathDecSliceIntR) + fn([]int8(nil), (*encFnInfo).fastpathEncSliceInt8R, (*decFnInfo).fastpathDecSliceInt8R) + fn([]int16(nil), (*encFnInfo).fastpathEncSliceInt16R, (*decFnInfo).fastpathDecSliceInt16R) + fn([]int32(nil), (*encFnInfo).fastpathEncSliceInt32R, (*decFnInfo).fastpathDecSliceInt32R) + fn([]int64(nil), (*encFnInfo).fastpathEncSliceInt64R, (*decFnInfo).fastpathDecSliceInt64R) + fn([]bool(nil), (*encFnInfo).fastpathEncSliceBoolR, (*decFnInfo).fastpathDecSliceBoolR) + + fn(map[interface{}]interface{}(nil), (*encFnInfo).fastpathEncMapIntfIntfR, (*decFnInfo).fastpathDecMapIntfIntfR) + fn(map[interface{}]string(nil), (*encFnInfo).fastpathEncMapIntfStringR, (*decFnInfo).fastpathDecMapIntfStringR) + fn(map[interface{}]uint(nil), (*encFnInfo).fastpathEncMapIntfUintR, (*decFnInfo).fastpathDecMapIntfUintR) + fn(map[interface{}]uint8(nil), (*encFnInfo).fastpathEncMapIntfUint8R, (*decFnInfo).fastpathDecMapIntfUint8R) + fn(map[interface{}]uint16(nil), (*encFnInfo).fastpathEncMapIntfUint16R, (*decFnInfo).fastpathDecMapIntfUint16R) + fn(map[interface{}]uint32(nil), (*encFnInfo).fastpathEncMapIntfUint32R, (*decFnInfo).fastpathDecMapIntfUint32R) + fn(map[interface{}]uint64(nil), (*encFnInfo).fastpathEncMapIntfUint64R, (*decFnInfo).fastpathDecMapIntfUint64R) + fn(map[interface{}]uintptr(nil), (*encFnInfo).fastpathEncMapIntfUintptrR, (*decFnInfo).fastpathDecMapIntfUintptrR) + fn(map[interface{}]int(nil), (*encFnInfo).fastpathEncMapIntfIntR, (*decFnInfo).fastpathDecMapIntfIntR) + fn(map[interface{}]int8(nil), (*encFnInfo).fastpathEncMapIntfInt8R, (*decFnInfo).fastpathDecMapIntfInt8R) + fn(map[interface{}]int16(nil), (*encFnInfo).fastpathEncMapIntfInt16R, (*decFnInfo).fastpathDecMapIntfInt16R) + fn(map[interface{}]int32(nil), (*encFnInfo).fastpathEncMapIntfInt32R, (*decFnInfo).fastpathDecMapIntfInt32R) + fn(map[interface{}]int64(nil), (*encFnInfo).fastpathEncMapIntfInt64R, (*decFnInfo).fastpathDecMapIntfInt64R) + fn(map[interface{}]float32(nil), (*encFnInfo).fastpathEncMapIntfFloat32R, (*decFnInfo).fastpathDecMapIntfFloat32R) + fn(map[interface{}]float64(nil), (*encFnInfo).fastpathEncMapIntfFloat64R, (*decFnInfo).fastpathDecMapIntfFloat64R) + fn(map[interface{}]bool(nil), (*encFnInfo).fastpathEncMapIntfBoolR, (*decFnInfo).fastpathDecMapIntfBoolR) + fn(map[string]interface{}(nil), (*encFnInfo).fastpathEncMapStringIntfR, (*decFnInfo).fastpathDecMapStringIntfR) + fn(map[string]string(nil), (*encFnInfo).fastpathEncMapStringStringR, (*decFnInfo).fastpathDecMapStringStringR) + fn(map[string]uint(nil), (*encFnInfo).fastpathEncMapStringUintR, (*decFnInfo).fastpathDecMapStringUintR) + fn(map[string]uint8(nil), (*encFnInfo).fastpathEncMapStringUint8R, (*decFnInfo).fastpathDecMapStringUint8R) + fn(map[string]uint16(nil), (*encFnInfo).fastpathEncMapStringUint16R, (*decFnInfo).fastpathDecMapStringUint16R) + fn(map[string]uint32(nil), (*encFnInfo).fastpathEncMapStringUint32R, (*decFnInfo).fastpathDecMapStringUint32R) + fn(map[string]uint64(nil), (*encFnInfo).fastpathEncMapStringUint64R, (*decFnInfo).fastpathDecMapStringUint64R) + fn(map[string]uintptr(nil), (*encFnInfo).fastpathEncMapStringUintptrR, (*decFnInfo).fastpathDecMapStringUintptrR) + fn(map[string]int(nil), (*encFnInfo).fastpathEncMapStringIntR, (*decFnInfo).fastpathDecMapStringIntR) + fn(map[string]int8(nil), (*encFnInfo).fastpathEncMapStringInt8R, (*decFnInfo).fastpathDecMapStringInt8R) + fn(map[string]int16(nil), (*encFnInfo).fastpathEncMapStringInt16R, (*decFnInfo).fastpathDecMapStringInt16R) + fn(map[string]int32(nil), (*encFnInfo).fastpathEncMapStringInt32R, (*decFnInfo).fastpathDecMapStringInt32R) + fn(map[string]int64(nil), (*encFnInfo).fastpathEncMapStringInt64R, (*decFnInfo).fastpathDecMapStringInt64R) + fn(map[string]float32(nil), (*encFnInfo).fastpathEncMapStringFloat32R, (*decFnInfo).fastpathDecMapStringFloat32R) + fn(map[string]float64(nil), (*encFnInfo).fastpathEncMapStringFloat64R, (*decFnInfo).fastpathDecMapStringFloat64R) + fn(map[string]bool(nil), (*encFnInfo).fastpathEncMapStringBoolR, (*decFnInfo).fastpathDecMapStringBoolR) + fn(map[float32]interface{}(nil), (*encFnInfo).fastpathEncMapFloat32IntfR, (*decFnInfo).fastpathDecMapFloat32IntfR) + fn(map[float32]string(nil), (*encFnInfo).fastpathEncMapFloat32StringR, (*decFnInfo).fastpathDecMapFloat32StringR) + fn(map[float32]uint(nil), (*encFnInfo).fastpathEncMapFloat32UintR, (*decFnInfo).fastpathDecMapFloat32UintR) + fn(map[float32]uint8(nil), (*encFnInfo).fastpathEncMapFloat32Uint8R, (*decFnInfo).fastpathDecMapFloat32Uint8R) + fn(map[float32]uint16(nil), (*encFnInfo).fastpathEncMapFloat32Uint16R, (*decFnInfo).fastpathDecMapFloat32Uint16R) + fn(map[float32]uint32(nil), (*encFnInfo).fastpathEncMapFloat32Uint32R, (*decFnInfo).fastpathDecMapFloat32Uint32R) + fn(map[float32]uint64(nil), (*encFnInfo).fastpathEncMapFloat32Uint64R, (*decFnInfo).fastpathDecMapFloat32Uint64R) + fn(map[float32]uintptr(nil), (*encFnInfo).fastpathEncMapFloat32UintptrR, (*decFnInfo).fastpathDecMapFloat32UintptrR) + fn(map[float32]int(nil), (*encFnInfo).fastpathEncMapFloat32IntR, (*decFnInfo).fastpathDecMapFloat32IntR) + fn(map[float32]int8(nil), (*encFnInfo).fastpathEncMapFloat32Int8R, (*decFnInfo).fastpathDecMapFloat32Int8R) + fn(map[float32]int16(nil), (*encFnInfo).fastpathEncMapFloat32Int16R, (*decFnInfo).fastpathDecMapFloat32Int16R) + fn(map[float32]int32(nil), (*encFnInfo).fastpathEncMapFloat32Int32R, (*decFnInfo).fastpathDecMapFloat32Int32R) + fn(map[float32]int64(nil), (*encFnInfo).fastpathEncMapFloat32Int64R, (*decFnInfo).fastpathDecMapFloat32Int64R) + fn(map[float32]float32(nil), (*encFnInfo).fastpathEncMapFloat32Float32R, (*decFnInfo).fastpathDecMapFloat32Float32R) + fn(map[float32]float64(nil), (*encFnInfo).fastpathEncMapFloat32Float64R, (*decFnInfo).fastpathDecMapFloat32Float64R) + fn(map[float32]bool(nil), (*encFnInfo).fastpathEncMapFloat32BoolR, (*decFnInfo).fastpathDecMapFloat32BoolR) + fn(map[float64]interface{}(nil), (*encFnInfo).fastpathEncMapFloat64IntfR, (*decFnInfo).fastpathDecMapFloat64IntfR) + fn(map[float64]string(nil), (*encFnInfo).fastpathEncMapFloat64StringR, (*decFnInfo).fastpathDecMapFloat64StringR) + fn(map[float64]uint(nil), (*encFnInfo).fastpathEncMapFloat64UintR, (*decFnInfo).fastpathDecMapFloat64UintR) + fn(map[float64]uint8(nil), (*encFnInfo).fastpathEncMapFloat64Uint8R, (*decFnInfo).fastpathDecMapFloat64Uint8R) + fn(map[float64]uint16(nil), (*encFnInfo).fastpathEncMapFloat64Uint16R, (*decFnInfo).fastpathDecMapFloat64Uint16R) + fn(map[float64]uint32(nil), (*encFnInfo).fastpathEncMapFloat64Uint32R, (*decFnInfo).fastpathDecMapFloat64Uint32R) + fn(map[float64]uint64(nil), (*encFnInfo).fastpathEncMapFloat64Uint64R, (*decFnInfo).fastpathDecMapFloat64Uint64R) + fn(map[float64]uintptr(nil), (*encFnInfo).fastpathEncMapFloat64UintptrR, (*decFnInfo).fastpathDecMapFloat64UintptrR) + fn(map[float64]int(nil), (*encFnInfo).fastpathEncMapFloat64IntR, (*decFnInfo).fastpathDecMapFloat64IntR) + fn(map[float64]int8(nil), (*encFnInfo).fastpathEncMapFloat64Int8R, (*decFnInfo).fastpathDecMapFloat64Int8R) + fn(map[float64]int16(nil), (*encFnInfo).fastpathEncMapFloat64Int16R, (*decFnInfo).fastpathDecMapFloat64Int16R) + fn(map[float64]int32(nil), (*encFnInfo).fastpathEncMapFloat64Int32R, (*decFnInfo).fastpathDecMapFloat64Int32R) + fn(map[float64]int64(nil), (*encFnInfo).fastpathEncMapFloat64Int64R, (*decFnInfo).fastpathDecMapFloat64Int64R) + fn(map[float64]float32(nil), (*encFnInfo).fastpathEncMapFloat64Float32R, (*decFnInfo).fastpathDecMapFloat64Float32R) + fn(map[float64]float64(nil), (*encFnInfo).fastpathEncMapFloat64Float64R, (*decFnInfo).fastpathDecMapFloat64Float64R) + fn(map[float64]bool(nil), (*encFnInfo).fastpathEncMapFloat64BoolR, (*decFnInfo).fastpathDecMapFloat64BoolR) + fn(map[uint]interface{}(nil), (*encFnInfo).fastpathEncMapUintIntfR, (*decFnInfo).fastpathDecMapUintIntfR) + fn(map[uint]string(nil), (*encFnInfo).fastpathEncMapUintStringR, (*decFnInfo).fastpathDecMapUintStringR) + fn(map[uint]uint(nil), (*encFnInfo).fastpathEncMapUintUintR, (*decFnInfo).fastpathDecMapUintUintR) + fn(map[uint]uint8(nil), (*encFnInfo).fastpathEncMapUintUint8R, (*decFnInfo).fastpathDecMapUintUint8R) + fn(map[uint]uint16(nil), (*encFnInfo).fastpathEncMapUintUint16R, (*decFnInfo).fastpathDecMapUintUint16R) + fn(map[uint]uint32(nil), (*encFnInfo).fastpathEncMapUintUint32R, (*decFnInfo).fastpathDecMapUintUint32R) + fn(map[uint]uint64(nil), (*encFnInfo).fastpathEncMapUintUint64R, (*decFnInfo).fastpathDecMapUintUint64R) + fn(map[uint]uintptr(nil), (*encFnInfo).fastpathEncMapUintUintptrR, (*decFnInfo).fastpathDecMapUintUintptrR) + fn(map[uint]int(nil), (*encFnInfo).fastpathEncMapUintIntR, (*decFnInfo).fastpathDecMapUintIntR) + fn(map[uint]int8(nil), (*encFnInfo).fastpathEncMapUintInt8R, (*decFnInfo).fastpathDecMapUintInt8R) + fn(map[uint]int16(nil), (*encFnInfo).fastpathEncMapUintInt16R, (*decFnInfo).fastpathDecMapUintInt16R) + fn(map[uint]int32(nil), (*encFnInfo).fastpathEncMapUintInt32R, (*decFnInfo).fastpathDecMapUintInt32R) + fn(map[uint]int64(nil), (*encFnInfo).fastpathEncMapUintInt64R, (*decFnInfo).fastpathDecMapUintInt64R) + fn(map[uint]float32(nil), (*encFnInfo).fastpathEncMapUintFloat32R, (*decFnInfo).fastpathDecMapUintFloat32R) + fn(map[uint]float64(nil), (*encFnInfo).fastpathEncMapUintFloat64R, (*decFnInfo).fastpathDecMapUintFloat64R) + fn(map[uint]bool(nil), (*encFnInfo).fastpathEncMapUintBoolR, (*decFnInfo).fastpathDecMapUintBoolR) + fn(map[uint8]interface{}(nil), (*encFnInfo).fastpathEncMapUint8IntfR, (*decFnInfo).fastpathDecMapUint8IntfR) + fn(map[uint8]string(nil), (*encFnInfo).fastpathEncMapUint8StringR, (*decFnInfo).fastpathDecMapUint8StringR) + fn(map[uint8]uint(nil), (*encFnInfo).fastpathEncMapUint8UintR, (*decFnInfo).fastpathDecMapUint8UintR) + fn(map[uint8]uint8(nil), (*encFnInfo).fastpathEncMapUint8Uint8R, (*decFnInfo).fastpathDecMapUint8Uint8R) + fn(map[uint8]uint16(nil), (*encFnInfo).fastpathEncMapUint8Uint16R, (*decFnInfo).fastpathDecMapUint8Uint16R) + fn(map[uint8]uint32(nil), (*encFnInfo).fastpathEncMapUint8Uint32R, (*decFnInfo).fastpathDecMapUint8Uint32R) + fn(map[uint8]uint64(nil), (*encFnInfo).fastpathEncMapUint8Uint64R, (*decFnInfo).fastpathDecMapUint8Uint64R) + fn(map[uint8]uintptr(nil), (*encFnInfo).fastpathEncMapUint8UintptrR, (*decFnInfo).fastpathDecMapUint8UintptrR) + fn(map[uint8]int(nil), (*encFnInfo).fastpathEncMapUint8IntR, (*decFnInfo).fastpathDecMapUint8IntR) + fn(map[uint8]int8(nil), (*encFnInfo).fastpathEncMapUint8Int8R, (*decFnInfo).fastpathDecMapUint8Int8R) + fn(map[uint8]int16(nil), (*encFnInfo).fastpathEncMapUint8Int16R, (*decFnInfo).fastpathDecMapUint8Int16R) + fn(map[uint8]int32(nil), (*encFnInfo).fastpathEncMapUint8Int32R, (*decFnInfo).fastpathDecMapUint8Int32R) + fn(map[uint8]int64(nil), (*encFnInfo).fastpathEncMapUint8Int64R, (*decFnInfo).fastpathDecMapUint8Int64R) + fn(map[uint8]float32(nil), (*encFnInfo).fastpathEncMapUint8Float32R, (*decFnInfo).fastpathDecMapUint8Float32R) + fn(map[uint8]float64(nil), (*encFnInfo).fastpathEncMapUint8Float64R, (*decFnInfo).fastpathDecMapUint8Float64R) + fn(map[uint8]bool(nil), (*encFnInfo).fastpathEncMapUint8BoolR, (*decFnInfo).fastpathDecMapUint8BoolR) + fn(map[uint16]interface{}(nil), (*encFnInfo).fastpathEncMapUint16IntfR, (*decFnInfo).fastpathDecMapUint16IntfR) + fn(map[uint16]string(nil), (*encFnInfo).fastpathEncMapUint16StringR, (*decFnInfo).fastpathDecMapUint16StringR) + fn(map[uint16]uint(nil), (*encFnInfo).fastpathEncMapUint16UintR, (*decFnInfo).fastpathDecMapUint16UintR) + fn(map[uint16]uint8(nil), (*encFnInfo).fastpathEncMapUint16Uint8R, (*decFnInfo).fastpathDecMapUint16Uint8R) + fn(map[uint16]uint16(nil), (*encFnInfo).fastpathEncMapUint16Uint16R, (*decFnInfo).fastpathDecMapUint16Uint16R) + fn(map[uint16]uint32(nil), (*encFnInfo).fastpathEncMapUint16Uint32R, (*decFnInfo).fastpathDecMapUint16Uint32R) + fn(map[uint16]uint64(nil), (*encFnInfo).fastpathEncMapUint16Uint64R, (*decFnInfo).fastpathDecMapUint16Uint64R) + fn(map[uint16]uintptr(nil), (*encFnInfo).fastpathEncMapUint16UintptrR, (*decFnInfo).fastpathDecMapUint16UintptrR) + fn(map[uint16]int(nil), (*encFnInfo).fastpathEncMapUint16IntR, (*decFnInfo).fastpathDecMapUint16IntR) + fn(map[uint16]int8(nil), (*encFnInfo).fastpathEncMapUint16Int8R, (*decFnInfo).fastpathDecMapUint16Int8R) + fn(map[uint16]int16(nil), (*encFnInfo).fastpathEncMapUint16Int16R, (*decFnInfo).fastpathDecMapUint16Int16R) + fn(map[uint16]int32(nil), (*encFnInfo).fastpathEncMapUint16Int32R, (*decFnInfo).fastpathDecMapUint16Int32R) + fn(map[uint16]int64(nil), (*encFnInfo).fastpathEncMapUint16Int64R, (*decFnInfo).fastpathDecMapUint16Int64R) + fn(map[uint16]float32(nil), (*encFnInfo).fastpathEncMapUint16Float32R, (*decFnInfo).fastpathDecMapUint16Float32R) + fn(map[uint16]float64(nil), (*encFnInfo).fastpathEncMapUint16Float64R, (*decFnInfo).fastpathDecMapUint16Float64R) + fn(map[uint16]bool(nil), (*encFnInfo).fastpathEncMapUint16BoolR, (*decFnInfo).fastpathDecMapUint16BoolR) + fn(map[uint32]interface{}(nil), (*encFnInfo).fastpathEncMapUint32IntfR, (*decFnInfo).fastpathDecMapUint32IntfR) + fn(map[uint32]string(nil), (*encFnInfo).fastpathEncMapUint32StringR, (*decFnInfo).fastpathDecMapUint32StringR) + fn(map[uint32]uint(nil), (*encFnInfo).fastpathEncMapUint32UintR, (*decFnInfo).fastpathDecMapUint32UintR) + fn(map[uint32]uint8(nil), (*encFnInfo).fastpathEncMapUint32Uint8R, (*decFnInfo).fastpathDecMapUint32Uint8R) + fn(map[uint32]uint16(nil), (*encFnInfo).fastpathEncMapUint32Uint16R, (*decFnInfo).fastpathDecMapUint32Uint16R) + fn(map[uint32]uint32(nil), (*encFnInfo).fastpathEncMapUint32Uint32R, (*decFnInfo).fastpathDecMapUint32Uint32R) + fn(map[uint32]uint64(nil), (*encFnInfo).fastpathEncMapUint32Uint64R, (*decFnInfo).fastpathDecMapUint32Uint64R) + fn(map[uint32]uintptr(nil), (*encFnInfo).fastpathEncMapUint32UintptrR, (*decFnInfo).fastpathDecMapUint32UintptrR) + fn(map[uint32]int(nil), (*encFnInfo).fastpathEncMapUint32IntR, (*decFnInfo).fastpathDecMapUint32IntR) + fn(map[uint32]int8(nil), (*encFnInfo).fastpathEncMapUint32Int8R, (*decFnInfo).fastpathDecMapUint32Int8R) + fn(map[uint32]int16(nil), (*encFnInfo).fastpathEncMapUint32Int16R, (*decFnInfo).fastpathDecMapUint32Int16R) + fn(map[uint32]int32(nil), (*encFnInfo).fastpathEncMapUint32Int32R, (*decFnInfo).fastpathDecMapUint32Int32R) + fn(map[uint32]int64(nil), (*encFnInfo).fastpathEncMapUint32Int64R, (*decFnInfo).fastpathDecMapUint32Int64R) + fn(map[uint32]float32(nil), (*encFnInfo).fastpathEncMapUint32Float32R, (*decFnInfo).fastpathDecMapUint32Float32R) + fn(map[uint32]float64(nil), (*encFnInfo).fastpathEncMapUint32Float64R, (*decFnInfo).fastpathDecMapUint32Float64R) + fn(map[uint32]bool(nil), (*encFnInfo).fastpathEncMapUint32BoolR, (*decFnInfo).fastpathDecMapUint32BoolR) + fn(map[uint64]interface{}(nil), (*encFnInfo).fastpathEncMapUint64IntfR, (*decFnInfo).fastpathDecMapUint64IntfR) + fn(map[uint64]string(nil), (*encFnInfo).fastpathEncMapUint64StringR, (*decFnInfo).fastpathDecMapUint64StringR) + fn(map[uint64]uint(nil), (*encFnInfo).fastpathEncMapUint64UintR, (*decFnInfo).fastpathDecMapUint64UintR) + fn(map[uint64]uint8(nil), (*encFnInfo).fastpathEncMapUint64Uint8R, (*decFnInfo).fastpathDecMapUint64Uint8R) + fn(map[uint64]uint16(nil), (*encFnInfo).fastpathEncMapUint64Uint16R, (*decFnInfo).fastpathDecMapUint64Uint16R) + fn(map[uint64]uint32(nil), (*encFnInfo).fastpathEncMapUint64Uint32R, (*decFnInfo).fastpathDecMapUint64Uint32R) + fn(map[uint64]uint64(nil), (*encFnInfo).fastpathEncMapUint64Uint64R, (*decFnInfo).fastpathDecMapUint64Uint64R) + fn(map[uint64]uintptr(nil), (*encFnInfo).fastpathEncMapUint64UintptrR, (*decFnInfo).fastpathDecMapUint64UintptrR) + fn(map[uint64]int(nil), (*encFnInfo).fastpathEncMapUint64IntR, (*decFnInfo).fastpathDecMapUint64IntR) + fn(map[uint64]int8(nil), (*encFnInfo).fastpathEncMapUint64Int8R, (*decFnInfo).fastpathDecMapUint64Int8R) + fn(map[uint64]int16(nil), (*encFnInfo).fastpathEncMapUint64Int16R, (*decFnInfo).fastpathDecMapUint64Int16R) + fn(map[uint64]int32(nil), (*encFnInfo).fastpathEncMapUint64Int32R, (*decFnInfo).fastpathDecMapUint64Int32R) + fn(map[uint64]int64(nil), (*encFnInfo).fastpathEncMapUint64Int64R, (*decFnInfo).fastpathDecMapUint64Int64R) + fn(map[uint64]float32(nil), (*encFnInfo).fastpathEncMapUint64Float32R, (*decFnInfo).fastpathDecMapUint64Float32R) + fn(map[uint64]float64(nil), (*encFnInfo).fastpathEncMapUint64Float64R, (*decFnInfo).fastpathDecMapUint64Float64R) + fn(map[uint64]bool(nil), (*encFnInfo).fastpathEncMapUint64BoolR, (*decFnInfo).fastpathDecMapUint64BoolR) + fn(map[uintptr]interface{}(nil), (*encFnInfo).fastpathEncMapUintptrIntfR, (*decFnInfo).fastpathDecMapUintptrIntfR) + fn(map[uintptr]string(nil), (*encFnInfo).fastpathEncMapUintptrStringR, (*decFnInfo).fastpathDecMapUintptrStringR) + fn(map[uintptr]uint(nil), (*encFnInfo).fastpathEncMapUintptrUintR, (*decFnInfo).fastpathDecMapUintptrUintR) + fn(map[uintptr]uint8(nil), (*encFnInfo).fastpathEncMapUintptrUint8R, (*decFnInfo).fastpathDecMapUintptrUint8R) + fn(map[uintptr]uint16(nil), (*encFnInfo).fastpathEncMapUintptrUint16R, (*decFnInfo).fastpathDecMapUintptrUint16R) + fn(map[uintptr]uint32(nil), (*encFnInfo).fastpathEncMapUintptrUint32R, (*decFnInfo).fastpathDecMapUintptrUint32R) + fn(map[uintptr]uint64(nil), (*encFnInfo).fastpathEncMapUintptrUint64R, (*decFnInfo).fastpathDecMapUintptrUint64R) + fn(map[uintptr]uintptr(nil), (*encFnInfo).fastpathEncMapUintptrUintptrR, (*decFnInfo).fastpathDecMapUintptrUintptrR) + fn(map[uintptr]int(nil), (*encFnInfo).fastpathEncMapUintptrIntR, (*decFnInfo).fastpathDecMapUintptrIntR) + fn(map[uintptr]int8(nil), (*encFnInfo).fastpathEncMapUintptrInt8R, (*decFnInfo).fastpathDecMapUintptrInt8R) + fn(map[uintptr]int16(nil), (*encFnInfo).fastpathEncMapUintptrInt16R, (*decFnInfo).fastpathDecMapUintptrInt16R) + fn(map[uintptr]int32(nil), (*encFnInfo).fastpathEncMapUintptrInt32R, (*decFnInfo).fastpathDecMapUintptrInt32R) + fn(map[uintptr]int64(nil), (*encFnInfo).fastpathEncMapUintptrInt64R, (*decFnInfo).fastpathDecMapUintptrInt64R) + fn(map[uintptr]float32(nil), (*encFnInfo).fastpathEncMapUintptrFloat32R, (*decFnInfo).fastpathDecMapUintptrFloat32R) + fn(map[uintptr]float64(nil), (*encFnInfo).fastpathEncMapUintptrFloat64R, (*decFnInfo).fastpathDecMapUintptrFloat64R) + fn(map[uintptr]bool(nil), (*encFnInfo).fastpathEncMapUintptrBoolR, (*decFnInfo).fastpathDecMapUintptrBoolR) + fn(map[int]interface{}(nil), (*encFnInfo).fastpathEncMapIntIntfR, (*decFnInfo).fastpathDecMapIntIntfR) + fn(map[int]string(nil), (*encFnInfo).fastpathEncMapIntStringR, (*decFnInfo).fastpathDecMapIntStringR) + fn(map[int]uint(nil), (*encFnInfo).fastpathEncMapIntUintR, (*decFnInfo).fastpathDecMapIntUintR) + fn(map[int]uint8(nil), (*encFnInfo).fastpathEncMapIntUint8R, (*decFnInfo).fastpathDecMapIntUint8R) + fn(map[int]uint16(nil), (*encFnInfo).fastpathEncMapIntUint16R, (*decFnInfo).fastpathDecMapIntUint16R) + fn(map[int]uint32(nil), (*encFnInfo).fastpathEncMapIntUint32R, (*decFnInfo).fastpathDecMapIntUint32R) + fn(map[int]uint64(nil), (*encFnInfo).fastpathEncMapIntUint64R, (*decFnInfo).fastpathDecMapIntUint64R) + fn(map[int]uintptr(nil), (*encFnInfo).fastpathEncMapIntUintptrR, (*decFnInfo).fastpathDecMapIntUintptrR) + fn(map[int]int(nil), (*encFnInfo).fastpathEncMapIntIntR, (*decFnInfo).fastpathDecMapIntIntR) + fn(map[int]int8(nil), (*encFnInfo).fastpathEncMapIntInt8R, (*decFnInfo).fastpathDecMapIntInt8R) + fn(map[int]int16(nil), (*encFnInfo).fastpathEncMapIntInt16R, (*decFnInfo).fastpathDecMapIntInt16R) + fn(map[int]int32(nil), (*encFnInfo).fastpathEncMapIntInt32R, (*decFnInfo).fastpathDecMapIntInt32R) + fn(map[int]int64(nil), (*encFnInfo).fastpathEncMapIntInt64R, (*decFnInfo).fastpathDecMapIntInt64R) + fn(map[int]float32(nil), (*encFnInfo).fastpathEncMapIntFloat32R, (*decFnInfo).fastpathDecMapIntFloat32R) + fn(map[int]float64(nil), (*encFnInfo).fastpathEncMapIntFloat64R, (*decFnInfo).fastpathDecMapIntFloat64R) + fn(map[int]bool(nil), (*encFnInfo).fastpathEncMapIntBoolR, (*decFnInfo).fastpathDecMapIntBoolR) + fn(map[int8]interface{}(nil), (*encFnInfo).fastpathEncMapInt8IntfR, (*decFnInfo).fastpathDecMapInt8IntfR) + fn(map[int8]string(nil), (*encFnInfo).fastpathEncMapInt8StringR, (*decFnInfo).fastpathDecMapInt8StringR) + fn(map[int8]uint(nil), (*encFnInfo).fastpathEncMapInt8UintR, (*decFnInfo).fastpathDecMapInt8UintR) + fn(map[int8]uint8(nil), (*encFnInfo).fastpathEncMapInt8Uint8R, (*decFnInfo).fastpathDecMapInt8Uint8R) + fn(map[int8]uint16(nil), (*encFnInfo).fastpathEncMapInt8Uint16R, (*decFnInfo).fastpathDecMapInt8Uint16R) + fn(map[int8]uint32(nil), (*encFnInfo).fastpathEncMapInt8Uint32R, (*decFnInfo).fastpathDecMapInt8Uint32R) + fn(map[int8]uint64(nil), (*encFnInfo).fastpathEncMapInt8Uint64R, (*decFnInfo).fastpathDecMapInt8Uint64R) + fn(map[int8]uintptr(nil), (*encFnInfo).fastpathEncMapInt8UintptrR, (*decFnInfo).fastpathDecMapInt8UintptrR) + fn(map[int8]int(nil), (*encFnInfo).fastpathEncMapInt8IntR, (*decFnInfo).fastpathDecMapInt8IntR) + fn(map[int8]int8(nil), (*encFnInfo).fastpathEncMapInt8Int8R, (*decFnInfo).fastpathDecMapInt8Int8R) + fn(map[int8]int16(nil), (*encFnInfo).fastpathEncMapInt8Int16R, (*decFnInfo).fastpathDecMapInt8Int16R) + fn(map[int8]int32(nil), (*encFnInfo).fastpathEncMapInt8Int32R, (*decFnInfo).fastpathDecMapInt8Int32R) + fn(map[int8]int64(nil), (*encFnInfo).fastpathEncMapInt8Int64R, (*decFnInfo).fastpathDecMapInt8Int64R) + fn(map[int8]float32(nil), (*encFnInfo).fastpathEncMapInt8Float32R, (*decFnInfo).fastpathDecMapInt8Float32R) + fn(map[int8]float64(nil), (*encFnInfo).fastpathEncMapInt8Float64R, (*decFnInfo).fastpathDecMapInt8Float64R) + fn(map[int8]bool(nil), (*encFnInfo).fastpathEncMapInt8BoolR, (*decFnInfo).fastpathDecMapInt8BoolR) + fn(map[int16]interface{}(nil), (*encFnInfo).fastpathEncMapInt16IntfR, (*decFnInfo).fastpathDecMapInt16IntfR) + fn(map[int16]string(nil), (*encFnInfo).fastpathEncMapInt16StringR, (*decFnInfo).fastpathDecMapInt16StringR) + fn(map[int16]uint(nil), (*encFnInfo).fastpathEncMapInt16UintR, (*decFnInfo).fastpathDecMapInt16UintR) + fn(map[int16]uint8(nil), (*encFnInfo).fastpathEncMapInt16Uint8R, (*decFnInfo).fastpathDecMapInt16Uint8R) + fn(map[int16]uint16(nil), (*encFnInfo).fastpathEncMapInt16Uint16R, (*decFnInfo).fastpathDecMapInt16Uint16R) + fn(map[int16]uint32(nil), (*encFnInfo).fastpathEncMapInt16Uint32R, (*decFnInfo).fastpathDecMapInt16Uint32R) + fn(map[int16]uint64(nil), (*encFnInfo).fastpathEncMapInt16Uint64R, (*decFnInfo).fastpathDecMapInt16Uint64R) + fn(map[int16]uintptr(nil), (*encFnInfo).fastpathEncMapInt16UintptrR, (*decFnInfo).fastpathDecMapInt16UintptrR) + fn(map[int16]int(nil), (*encFnInfo).fastpathEncMapInt16IntR, (*decFnInfo).fastpathDecMapInt16IntR) + fn(map[int16]int8(nil), (*encFnInfo).fastpathEncMapInt16Int8R, (*decFnInfo).fastpathDecMapInt16Int8R) + fn(map[int16]int16(nil), (*encFnInfo).fastpathEncMapInt16Int16R, (*decFnInfo).fastpathDecMapInt16Int16R) + fn(map[int16]int32(nil), (*encFnInfo).fastpathEncMapInt16Int32R, (*decFnInfo).fastpathDecMapInt16Int32R) + fn(map[int16]int64(nil), (*encFnInfo).fastpathEncMapInt16Int64R, (*decFnInfo).fastpathDecMapInt16Int64R) + fn(map[int16]float32(nil), (*encFnInfo).fastpathEncMapInt16Float32R, (*decFnInfo).fastpathDecMapInt16Float32R) + fn(map[int16]float64(nil), (*encFnInfo).fastpathEncMapInt16Float64R, (*decFnInfo).fastpathDecMapInt16Float64R) + fn(map[int16]bool(nil), (*encFnInfo).fastpathEncMapInt16BoolR, (*decFnInfo).fastpathDecMapInt16BoolR) + fn(map[int32]interface{}(nil), (*encFnInfo).fastpathEncMapInt32IntfR, (*decFnInfo).fastpathDecMapInt32IntfR) + fn(map[int32]string(nil), (*encFnInfo).fastpathEncMapInt32StringR, (*decFnInfo).fastpathDecMapInt32StringR) + fn(map[int32]uint(nil), (*encFnInfo).fastpathEncMapInt32UintR, (*decFnInfo).fastpathDecMapInt32UintR) + fn(map[int32]uint8(nil), (*encFnInfo).fastpathEncMapInt32Uint8R, (*decFnInfo).fastpathDecMapInt32Uint8R) + fn(map[int32]uint16(nil), (*encFnInfo).fastpathEncMapInt32Uint16R, (*decFnInfo).fastpathDecMapInt32Uint16R) + fn(map[int32]uint32(nil), (*encFnInfo).fastpathEncMapInt32Uint32R, (*decFnInfo).fastpathDecMapInt32Uint32R) + fn(map[int32]uint64(nil), (*encFnInfo).fastpathEncMapInt32Uint64R, (*decFnInfo).fastpathDecMapInt32Uint64R) + fn(map[int32]uintptr(nil), (*encFnInfo).fastpathEncMapInt32UintptrR, (*decFnInfo).fastpathDecMapInt32UintptrR) + fn(map[int32]int(nil), (*encFnInfo).fastpathEncMapInt32IntR, (*decFnInfo).fastpathDecMapInt32IntR) + fn(map[int32]int8(nil), (*encFnInfo).fastpathEncMapInt32Int8R, (*decFnInfo).fastpathDecMapInt32Int8R) + fn(map[int32]int16(nil), (*encFnInfo).fastpathEncMapInt32Int16R, (*decFnInfo).fastpathDecMapInt32Int16R) + fn(map[int32]int32(nil), (*encFnInfo).fastpathEncMapInt32Int32R, (*decFnInfo).fastpathDecMapInt32Int32R) + fn(map[int32]int64(nil), (*encFnInfo).fastpathEncMapInt32Int64R, (*decFnInfo).fastpathDecMapInt32Int64R) + fn(map[int32]float32(nil), (*encFnInfo).fastpathEncMapInt32Float32R, (*decFnInfo).fastpathDecMapInt32Float32R) + fn(map[int32]float64(nil), (*encFnInfo).fastpathEncMapInt32Float64R, (*decFnInfo).fastpathDecMapInt32Float64R) + fn(map[int32]bool(nil), (*encFnInfo).fastpathEncMapInt32BoolR, (*decFnInfo).fastpathDecMapInt32BoolR) + fn(map[int64]interface{}(nil), (*encFnInfo).fastpathEncMapInt64IntfR, (*decFnInfo).fastpathDecMapInt64IntfR) + fn(map[int64]string(nil), (*encFnInfo).fastpathEncMapInt64StringR, (*decFnInfo).fastpathDecMapInt64StringR) + fn(map[int64]uint(nil), (*encFnInfo).fastpathEncMapInt64UintR, (*decFnInfo).fastpathDecMapInt64UintR) + fn(map[int64]uint8(nil), (*encFnInfo).fastpathEncMapInt64Uint8R, (*decFnInfo).fastpathDecMapInt64Uint8R) + fn(map[int64]uint16(nil), (*encFnInfo).fastpathEncMapInt64Uint16R, (*decFnInfo).fastpathDecMapInt64Uint16R) + fn(map[int64]uint32(nil), (*encFnInfo).fastpathEncMapInt64Uint32R, (*decFnInfo).fastpathDecMapInt64Uint32R) + fn(map[int64]uint64(nil), (*encFnInfo).fastpathEncMapInt64Uint64R, (*decFnInfo).fastpathDecMapInt64Uint64R) + fn(map[int64]uintptr(nil), (*encFnInfo).fastpathEncMapInt64UintptrR, (*decFnInfo).fastpathDecMapInt64UintptrR) + fn(map[int64]int(nil), (*encFnInfo).fastpathEncMapInt64IntR, (*decFnInfo).fastpathDecMapInt64IntR) + fn(map[int64]int8(nil), (*encFnInfo).fastpathEncMapInt64Int8R, (*decFnInfo).fastpathDecMapInt64Int8R) + fn(map[int64]int16(nil), (*encFnInfo).fastpathEncMapInt64Int16R, (*decFnInfo).fastpathDecMapInt64Int16R) + fn(map[int64]int32(nil), (*encFnInfo).fastpathEncMapInt64Int32R, (*decFnInfo).fastpathDecMapInt64Int32R) + fn(map[int64]int64(nil), (*encFnInfo).fastpathEncMapInt64Int64R, (*decFnInfo).fastpathDecMapInt64Int64R) + fn(map[int64]float32(nil), (*encFnInfo).fastpathEncMapInt64Float32R, (*decFnInfo).fastpathDecMapInt64Float32R) + fn(map[int64]float64(nil), (*encFnInfo).fastpathEncMapInt64Float64R, (*decFnInfo).fastpathDecMapInt64Float64R) + fn(map[int64]bool(nil), (*encFnInfo).fastpathEncMapInt64BoolR, (*decFnInfo).fastpathDecMapInt64BoolR) + fn(map[bool]interface{}(nil), (*encFnInfo).fastpathEncMapBoolIntfR, (*decFnInfo).fastpathDecMapBoolIntfR) + fn(map[bool]string(nil), (*encFnInfo).fastpathEncMapBoolStringR, (*decFnInfo).fastpathDecMapBoolStringR) + fn(map[bool]uint(nil), (*encFnInfo).fastpathEncMapBoolUintR, (*decFnInfo).fastpathDecMapBoolUintR) + fn(map[bool]uint8(nil), (*encFnInfo).fastpathEncMapBoolUint8R, (*decFnInfo).fastpathDecMapBoolUint8R) + fn(map[bool]uint16(nil), (*encFnInfo).fastpathEncMapBoolUint16R, (*decFnInfo).fastpathDecMapBoolUint16R) + fn(map[bool]uint32(nil), (*encFnInfo).fastpathEncMapBoolUint32R, (*decFnInfo).fastpathDecMapBoolUint32R) + fn(map[bool]uint64(nil), (*encFnInfo).fastpathEncMapBoolUint64R, (*decFnInfo).fastpathDecMapBoolUint64R) + fn(map[bool]uintptr(nil), (*encFnInfo).fastpathEncMapBoolUintptrR, (*decFnInfo).fastpathDecMapBoolUintptrR) + fn(map[bool]int(nil), (*encFnInfo).fastpathEncMapBoolIntR, (*decFnInfo).fastpathDecMapBoolIntR) + fn(map[bool]int8(nil), (*encFnInfo).fastpathEncMapBoolInt8R, (*decFnInfo).fastpathDecMapBoolInt8R) + fn(map[bool]int16(nil), (*encFnInfo).fastpathEncMapBoolInt16R, (*decFnInfo).fastpathDecMapBoolInt16R) + fn(map[bool]int32(nil), (*encFnInfo).fastpathEncMapBoolInt32R, (*decFnInfo).fastpathDecMapBoolInt32R) + fn(map[bool]int64(nil), (*encFnInfo).fastpathEncMapBoolInt64R, (*decFnInfo).fastpathDecMapBoolInt64R) + fn(map[bool]float32(nil), (*encFnInfo).fastpathEncMapBoolFloat32R, (*decFnInfo).fastpathDecMapBoolFloat32R) + fn(map[bool]float64(nil), (*encFnInfo).fastpathEncMapBoolFloat64R, (*decFnInfo).fastpathDecMapBoolFloat64R) + fn(map[bool]bool(nil), (*encFnInfo).fastpathEncMapBoolBoolR, (*decFnInfo).fastpathDecMapBoolBoolR) + + sort.Sort(fastpathAslice(fastpathAV[:])) +} + +// -- encode + +// -- -- fast path type switch +func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { + + case []interface{}: + fastpathTV.EncSliceIntfV(v, fastpathCheckNilTrue, e) + case *[]interface{}: + fastpathTV.EncSliceIntfV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]interface{}: + fastpathTV.EncMapIntfIntfV(v, fastpathCheckNilTrue, e) + case *map[interface{}]interface{}: + fastpathTV.EncMapIntfIntfV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]string: + fastpathTV.EncMapIntfStringV(v, fastpathCheckNilTrue, e) + case *map[interface{}]string: + fastpathTV.EncMapIntfStringV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint: + fastpathTV.EncMapIntfUintV(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint: + fastpathTV.EncMapIntfUintV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint8: + fastpathTV.EncMapIntfUint8V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint8: + fastpathTV.EncMapIntfUint8V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint16: + fastpathTV.EncMapIntfUint16V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint16: + fastpathTV.EncMapIntfUint16V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint32: + fastpathTV.EncMapIntfUint32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint32: + fastpathTV.EncMapIntfUint32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint64: + fastpathTV.EncMapIntfUint64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint64: + fastpathTV.EncMapIntfUint64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uintptr: + fastpathTV.EncMapIntfUintptrV(v, fastpathCheckNilTrue, e) + case *map[interface{}]uintptr: + fastpathTV.EncMapIntfUintptrV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int: + fastpathTV.EncMapIntfIntV(v, fastpathCheckNilTrue, e) + case *map[interface{}]int: + fastpathTV.EncMapIntfIntV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int8: + fastpathTV.EncMapIntfInt8V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int8: + fastpathTV.EncMapIntfInt8V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int16: + fastpathTV.EncMapIntfInt16V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int16: + fastpathTV.EncMapIntfInt16V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int32: + fastpathTV.EncMapIntfInt32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int32: + fastpathTV.EncMapIntfInt32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int64: + fastpathTV.EncMapIntfInt64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int64: + fastpathTV.EncMapIntfInt64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]float32: + fastpathTV.EncMapIntfFloat32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]float32: + fastpathTV.EncMapIntfFloat32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]float64: + fastpathTV.EncMapIntfFloat64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]float64: + fastpathTV.EncMapIntfFloat64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]bool: + fastpathTV.EncMapIntfBoolV(v, fastpathCheckNilTrue, e) + case *map[interface{}]bool: + fastpathTV.EncMapIntfBoolV(*v, fastpathCheckNilTrue, e) + + case []string: + fastpathTV.EncSliceStringV(v, fastpathCheckNilTrue, e) + case *[]string: + fastpathTV.EncSliceStringV(*v, fastpathCheckNilTrue, e) + + case map[string]interface{}: + fastpathTV.EncMapStringIntfV(v, fastpathCheckNilTrue, e) + case *map[string]interface{}: + fastpathTV.EncMapStringIntfV(*v, fastpathCheckNilTrue, e) + + case map[string]string: + fastpathTV.EncMapStringStringV(v, fastpathCheckNilTrue, e) + case *map[string]string: + fastpathTV.EncMapStringStringV(*v, fastpathCheckNilTrue, e) + + case map[string]uint: + fastpathTV.EncMapStringUintV(v, fastpathCheckNilTrue, e) + case *map[string]uint: + fastpathTV.EncMapStringUintV(*v, fastpathCheckNilTrue, e) + + case map[string]uint8: + fastpathTV.EncMapStringUint8V(v, fastpathCheckNilTrue, e) + case *map[string]uint8: + fastpathTV.EncMapStringUint8V(*v, fastpathCheckNilTrue, e) + + case map[string]uint16: + fastpathTV.EncMapStringUint16V(v, fastpathCheckNilTrue, e) + case *map[string]uint16: + fastpathTV.EncMapStringUint16V(*v, fastpathCheckNilTrue, e) + + case map[string]uint32: + fastpathTV.EncMapStringUint32V(v, fastpathCheckNilTrue, e) + case *map[string]uint32: + fastpathTV.EncMapStringUint32V(*v, fastpathCheckNilTrue, e) + + case map[string]uint64: + fastpathTV.EncMapStringUint64V(v, fastpathCheckNilTrue, e) + case *map[string]uint64: + fastpathTV.EncMapStringUint64V(*v, fastpathCheckNilTrue, e) + + case map[string]uintptr: + fastpathTV.EncMapStringUintptrV(v, fastpathCheckNilTrue, e) + case *map[string]uintptr: + fastpathTV.EncMapStringUintptrV(*v, fastpathCheckNilTrue, e) + + case map[string]int: + fastpathTV.EncMapStringIntV(v, fastpathCheckNilTrue, e) + case *map[string]int: + fastpathTV.EncMapStringIntV(*v, fastpathCheckNilTrue, e) + + case map[string]int8: + fastpathTV.EncMapStringInt8V(v, fastpathCheckNilTrue, e) + case *map[string]int8: + fastpathTV.EncMapStringInt8V(*v, fastpathCheckNilTrue, e) + + case map[string]int16: + fastpathTV.EncMapStringInt16V(v, fastpathCheckNilTrue, e) + case *map[string]int16: + fastpathTV.EncMapStringInt16V(*v, fastpathCheckNilTrue, e) + + case map[string]int32: + fastpathTV.EncMapStringInt32V(v, fastpathCheckNilTrue, e) + case *map[string]int32: + fastpathTV.EncMapStringInt32V(*v, fastpathCheckNilTrue, e) + + case map[string]int64: + fastpathTV.EncMapStringInt64V(v, fastpathCheckNilTrue, e) + case *map[string]int64: + fastpathTV.EncMapStringInt64V(*v, fastpathCheckNilTrue, e) + + case map[string]float32: + fastpathTV.EncMapStringFloat32V(v, fastpathCheckNilTrue, e) + case *map[string]float32: + fastpathTV.EncMapStringFloat32V(*v, fastpathCheckNilTrue, e) + + case map[string]float64: + fastpathTV.EncMapStringFloat64V(v, fastpathCheckNilTrue, e) + case *map[string]float64: + fastpathTV.EncMapStringFloat64V(*v, fastpathCheckNilTrue, e) + + case map[string]bool: + fastpathTV.EncMapStringBoolV(v, fastpathCheckNilTrue, e) + case *map[string]bool: + fastpathTV.EncMapStringBoolV(*v, fastpathCheckNilTrue, e) + + case []float32: + fastpathTV.EncSliceFloat32V(v, fastpathCheckNilTrue, e) + case *[]float32: + fastpathTV.EncSliceFloat32V(*v, fastpathCheckNilTrue, e) + + case map[float32]interface{}: + fastpathTV.EncMapFloat32IntfV(v, fastpathCheckNilTrue, e) + case *map[float32]interface{}: + fastpathTV.EncMapFloat32IntfV(*v, fastpathCheckNilTrue, e) + + case map[float32]string: + fastpathTV.EncMapFloat32StringV(v, fastpathCheckNilTrue, e) + case *map[float32]string: + fastpathTV.EncMapFloat32StringV(*v, fastpathCheckNilTrue, e) + + case map[float32]uint: + fastpathTV.EncMapFloat32UintV(v, fastpathCheckNilTrue, e) + case *map[float32]uint: + fastpathTV.EncMapFloat32UintV(*v, fastpathCheckNilTrue, e) + + case map[float32]uint8: + fastpathTV.EncMapFloat32Uint8V(v, fastpathCheckNilTrue, e) + case *map[float32]uint8: + fastpathTV.EncMapFloat32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint16: + fastpathTV.EncMapFloat32Uint16V(v, fastpathCheckNilTrue, e) + case *map[float32]uint16: + fastpathTV.EncMapFloat32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint32: + fastpathTV.EncMapFloat32Uint32V(v, fastpathCheckNilTrue, e) + case *map[float32]uint32: + fastpathTV.EncMapFloat32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint64: + fastpathTV.EncMapFloat32Uint64V(v, fastpathCheckNilTrue, e) + case *map[float32]uint64: + fastpathTV.EncMapFloat32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[float32]uintptr: + fastpathTV.EncMapFloat32UintptrV(v, fastpathCheckNilTrue, e) + case *map[float32]uintptr: + fastpathTV.EncMapFloat32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[float32]int: + fastpathTV.EncMapFloat32IntV(v, fastpathCheckNilTrue, e) + case *map[float32]int: + fastpathTV.EncMapFloat32IntV(*v, fastpathCheckNilTrue, e) + + case map[float32]int8: + fastpathTV.EncMapFloat32Int8V(v, fastpathCheckNilTrue, e) + case *map[float32]int8: + fastpathTV.EncMapFloat32Int8V(*v, fastpathCheckNilTrue, e) + + case map[float32]int16: + fastpathTV.EncMapFloat32Int16V(v, fastpathCheckNilTrue, e) + case *map[float32]int16: + fastpathTV.EncMapFloat32Int16V(*v, fastpathCheckNilTrue, e) + + case map[float32]int32: + fastpathTV.EncMapFloat32Int32V(v, fastpathCheckNilTrue, e) + case *map[float32]int32: + fastpathTV.EncMapFloat32Int32V(*v, fastpathCheckNilTrue, e) + + case map[float32]int64: + fastpathTV.EncMapFloat32Int64V(v, fastpathCheckNilTrue, e) + case *map[float32]int64: + fastpathTV.EncMapFloat32Int64V(*v, fastpathCheckNilTrue, e) + + case map[float32]float32: + fastpathTV.EncMapFloat32Float32V(v, fastpathCheckNilTrue, e) + case *map[float32]float32: + fastpathTV.EncMapFloat32Float32V(*v, fastpathCheckNilTrue, e) + + case map[float32]float64: + fastpathTV.EncMapFloat32Float64V(v, fastpathCheckNilTrue, e) + case *map[float32]float64: + fastpathTV.EncMapFloat32Float64V(*v, fastpathCheckNilTrue, e) + + case map[float32]bool: + fastpathTV.EncMapFloat32BoolV(v, fastpathCheckNilTrue, e) + case *map[float32]bool: + fastpathTV.EncMapFloat32BoolV(*v, fastpathCheckNilTrue, e) + + case []float64: + fastpathTV.EncSliceFloat64V(v, fastpathCheckNilTrue, e) + case *[]float64: + fastpathTV.EncSliceFloat64V(*v, fastpathCheckNilTrue, e) + + case map[float64]interface{}: + fastpathTV.EncMapFloat64IntfV(v, fastpathCheckNilTrue, e) + case *map[float64]interface{}: + fastpathTV.EncMapFloat64IntfV(*v, fastpathCheckNilTrue, e) + + case map[float64]string: + fastpathTV.EncMapFloat64StringV(v, fastpathCheckNilTrue, e) + case *map[float64]string: + fastpathTV.EncMapFloat64StringV(*v, fastpathCheckNilTrue, e) + + case map[float64]uint: + fastpathTV.EncMapFloat64UintV(v, fastpathCheckNilTrue, e) + case *map[float64]uint: + fastpathTV.EncMapFloat64UintV(*v, fastpathCheckNilTrue, e) + + case map[float64]uint8: + fastpathTV.EncMapFloat64Uint8V(v, fastpathCheckNilTrue, e) + case *map[float64]uint8: + fastpathTV.EncMapFloat64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint16: + fastpathTV.EncMapFloat64Uint16V(v, fastpathCheckNilTrue, e) + case *map[float64]uint16: + fastpathTV.EncMapFloat64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint32: + fastpathTV.EncMapFloat64Uint32V(v, fastpathCheckNilTrue, e) + case *map[float64]uint32: + fastpathTV.EncMapFloat64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint64: + fastpathTV.EncMapFloat64Uint64V(v, fastpathCheckNilTrue, e) + case *map[float64]uint64: + fastpathTV.EncMapFloat64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[float64]uintptr: + fastpathTV.EncMapFloat64UintptrV(v, fastpathCheckNilTrue, e) + case *map[float64]uintptr: + fastpathTV.EncMapFloat64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[float64]int: + fastpathTV.EncMapFloat64IntV(v, fastpathCheckNilTrue, e) + case *map[float64]int: + fastpathTV.EncMapFloat64IntV(*v, fastpathCheckNilTrue, e) + + case map[float64]int8: + fastpathTV.EncMapFloat64Int8V(v, fastpathCheckNilTrue, e) + case *map[float64]int8: + fastpathTV.EncMapFloat64Int8V(*v, fastpathCheckNilTrue, e) + + case map[float64]int16: + fastpathTV.EncMapFloat64Int16V(v, fastpathCheckNilTrue, e) + case *map[float64]int16: + fastpathTV.EncMapFloat64Int16V(*v, fastpathCheckNilTrue, e) + + case map[float64]int32: + fastpathTV.EncMapFloat64Int32V(v, fastpathCheckNilTrue, e) + case *map[float64]int32: + fastpathTV.EncMapFloat64Int32V(*v, fastpathCheckNilTrue, e) + + case map[float64]int64: + fastpathTV.EncMapFloat64Int64V(v, fastpathCheckNilTrue, e) + case *map[float64]int64: + fastpathTV.EncMapFloat64Int64V(*v, fastpathCheckNilTrue, e) + + case map[float64]float32: + fastpathTV.EncMapFloat64Float32V(v, fastpathCheckNilTrue, e) + case *map[float64]float32: + fastpathTV.EncMapFloat64Float32V(*v, fastpathCheckNilTrue, e) + + case map[float64]float64: + fastpathTV.EncMapFloat64Float64V(v, fastpathCheckNilTrue, e) + case *map[float64]float64: + fastpathTV.EncMapFloat64Float64V(*v, fastpathCheckNilTrue, e) + + case map[float64]bool: + fastpathTV.EncMapFloat64BoolV(v, fastpathCheckNilTrue, e) + case *map[float64]bool: + fastpathTV.EncMapFloat64BoolV(*v, fastpathCheckNilTrue, e) + + case []uint: + fastpathTV.EncSliceUintV(v, fastpathCheckNilTrue, e) + case *[]uint: + fastpathTV.EncSliceUintV(*v, fastpathCheckNilTrue, e) + + case map[uint]interface{}: + fastpathTV.EncMapUintIntfV(v, fastpathCheckNilTrue, e) + case *map[uint]interface{}: + fastpathTV.EncMapUintIntfV(*v, fastpathCheckNilTrue, e) + + case map[uint]string: + fastpathTV.EncMapUintStringV(v, fastpathCheckNilTrue, e) + case *map[uint]string: + fastpathTV.EncMapUintStringV(*v, fastpathCheckNilTrue, e) + + case map[uint]uint: + fastpathTV.EncMapUintUintV(v, fastpathCheckNilTrue, e) + case *map[uint]uint: + fastpathTV.EncMapUintUintV(*v, fastpathCheckNilTrue, e) + + case map[uint]uint8: + fastpathTV.EncMapUintUint8V(v, fastpathCheckNilTrue, e) + case *map[uint]uint8: + fastpathTV.EncMapUintUint8V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint16: + fastpathTV.EncMapUintUint16V(v, fastpathCheckNilTrue, e) + case *map[uint]uint16: + fastpathTV.EncMapUintUint16V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint32: + fastpathTV.EncMapUintUint32V(v, fastpathCheckNilTrue, e) + case *map[uint]uint32: + fastpathTV.EncMapUintUint32V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint64: + fastpathTV.EncMapUintUint64V(v, fastpathCheckNilTrue, e) + case *map[uint]uint64: + fastpathTV.EncMapUintUint64V(*v, fastpathCheckNilTrue, e) + + case map[uint]uintptr: + fastpathTV.EncMapUintUintptrV(v, fastpathCheckNilTrue, e) + case *map[uint]uintptr: + fastpathTV.EncMapUintUintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint]int: + fastpathTV.EncMapUintIntV(v, fastpathCheckNilTrue, e) + case *map[uint]int: + fastpathTV.EncMapUintIntV(*v, fastpathCheckNilTrue, e) + + case map[uint]int8: + fastpathTV.EncMapUintInt8V(v, fastpathCheckNilTrue, e) + case *map[uint]int8: + fastpathTV.EncMapUintInt8V(*v, fastpathCheckNilTrue, e) + + case map[uint]int16: + fastpathTV.EncMapUintInt16V(v, fastpathCheckNilTrue, e) + case *map[uint]int16: + fastpathTV.EncMapUintInt16V(*v, fastpathCheckNilTrue, e) + + case map[uint]int32: + fastpathTV.EncMapUintInt32V(v, fastpathCheckNilTrue, e) + case *map[uint]int32: + fastpathTV.EncMapUintInt32V(*v, fastpathCheckNilTrue, e) + + case map[uint]int64: + fastpathTV.EncMapUintInt64V(v, fastpathCheckNilTrue, e) + case *map[uint]int64: + fastpathTV.EncMapUintInt64V(*v, fastpathCheckNilTrue, e) + + case map[uint]float32: + fastpathTV.EncMapUintFloat32V(v, fastpathCheckNilTrue, e) + case *map[uint]float32: + fastpathTV.EncMapUintFloat32V(*v, fastpathCheckNilTrue, e) + + case map[uint]float64: + fastpathTV.EncMapUintFloat64V(v, fastpathCheckNilTrue, e) + case *map[uint]float64: + fastpathTV.EncMapUintFloat64V(*v, fastpathCheckNilTrue, e) + + case map[uint]bool: + fastpathTV.EncMapUintBoolV(v, fastpathCheckNilTrue, e) + case *map[uint]bool: + fastpathTV.EncMapUintBoolV(*v, fastpathCheckNilTrue, e) + + case map[uint8]interface{}: + fastpathTV.EncMapUint8IntfV(v, fastpathCheckNilTrue, e) + case *map[uint8]interface{}: + fastpathTV.EncMapUint8IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint8]string: + fastpathTV.EncMapUint8StringV(v, fastpathCheckNilTrue, e) + case *map[uint8]string: + fastpathTV.EncMapUint8StringV(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint: + fastpathTV.EncMapUint8UintV(v, fastpathCheckNilTrue, e) + case *map[uint8]uint: + fastpathTV.EncMapUint8UintV(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint8: + fastpathTV.EncMapUint8Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint8: + fastpathTV.EncMapUint8Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint16: + fastpathTV.EncMapUint8Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint16: + fastpathTV.EncMapUint8Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint32: + fastpathTV.EncMapUint8Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint32: + fastpathTV.EncMapUint8Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint64: + fastpathTV.EncMapUint8Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint64: + fastpathTV.EncMapUint8Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uintptr: + fastpathTV.EncMapUint8UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint8]uintptr: + fastpathTV.EncMapUint8UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint8]int: + fastpathTV.EncMapUint8IntV(v, fastpathCheckNilTrue, e) + case *map[uint8]int: + fastpathTV.EncMapUint8IntV(*v, fastpathCheckNilTrue, e) + + case map[uint8]int8: + fastpathTV.EncMapUint8Int8V(v, fastpathCheckNilTrue, e) + case *map[uint8]int8: + fastpathTV.EncMapUint8Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int16: + fastpathTV.EncMapUint8Int16V(v, fastpathCheckNilTrue, e) + case *map[uint8]int16: + fastpathTV.EncMapUint8Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int32: + fastpathTV.EncMapUint8Int32V(v, fastpathCheckNilTrue, e) + case *map[uint8]int32: + fastpathTV.EncMapUint8Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int64: + fastpathTV.EncMapUint8Int64V(v, fastpathCheckNilTrue, e) + case *map[uint8]int64: + fastpathTV.EncMapUint8Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]float32: + fastpathTV.EncMapUint8Float32V(v, fastpathCheckNilTrue, e) + case *map[uint8]float32: + fastpathTV.EncMapUint8Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]float64: + fastpathTV.EncMapUint8Float64V(v, fastpathCheckNilTrue, e) + case *map[uint8]float64: + fastpathTV.EncMapUint8Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]bool: + fastpathTV.EncMapUint8BoolV(v, fastpathCheckNilTrue, e) + case *map[uint8]bool: + fastpathTV.EncMapUint8BoolV(*v, fastpathCheckNilTrue, e) + + case []uint16: + fastpathTV.EncSliceUint16V(v, fastpathCheckNilTrue, e) + case *[]uint16: + fastpathTV.EncSliceUint16V(*v, fastpathCheckNilTrue, e) + + case map[uint16]interface{}: + fastpathTV.EncMapUint16IntfV(v, fastpathCheckNilTrue, e) + case *map[uint16]interface{}: + fastpathTV.EncMapUint16IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint16]string: + fastpathTV.EncMapUint16StringV(v, fastpathCheckNilTrue, e) + case *map[uint16]string: + fastpathTV.EncMapUint16StringV(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint: + fastpathTV.EncMapUint16UintV(v, fastpathCheckNilTrue, e) + case *map[uint16]uint: + fastpathTV.EncMapUint16UintV(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint8: + fastpathTV.EncMapUint16Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint8: + fastpathTV.EncMapUint16Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint16: + fastpathTV.EncMapUint16Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint16: + fastpathTV.EncMapUint16Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint32: + fastpathTV.EncMapUint16Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint32: + fastpathTV.EncMapUint16Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint64: + fastpathTV.EncMapUint16Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint64: + fastpathTV.EncMapUint16Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uintptr: + fastpathTV.EncMapUint16UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint16]uintptr: + fastpathTV.EncMapUint16UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint16]int: + fastpathTV.EncMapUint16IntV(v, fastpathCheckNilTrue, e) + case *map[uint16]int: + fastpathTV.EncMapUint16IntV(*v, fastpathCheckNilTrue, e) + + case map[uint16]int8: + fastpathTV.EncMapUint16Int8V(v, fastpathCheckNilTrue, e) + case *map[uint16]int8: + fastpathTV.EncMapUint16Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int16: + fastpathTV.EncMapUint16Int16V(v, fastpathCheckNilTrue, e) + case *map[uint16]int16: + fastpathTV.EncMapUint16Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int32: + fastpathTV.EncMapUint16Int32V(v, fastpathCheckNilTrue, e) + case *map[uint16]int32: + fastpathTV.EncMapUint16Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int64: + fastpathTV.EncMapUint16Int64V(v, fastpathCheckNilTrue, e) + case *map[uint16]int64: + fastpathTV.EncMapUint16Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]float32: + fastpathTV.EncMapUint16Float32V(v, fastpathCheckNilTrue, e) + case *map[uint16]float32: + fastpathTV.EncMapUint16Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]float64: + fastpathTV.EncMapUint16Float64V(v, fastpathCheckNilTrue, e) + case *map[uint16]float64: + fastpathTV.EncMapUint16Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]bool: + fastpathTV.EncMapUint16BoolV(v, fastpathCheckNilTrue, e) + case *map[uint16]bool: + fastpathTV.EncMapUint16BoolV(*v, fastpathCheckNilTrue, e) + + case []uint32: + fastpathTV.EncSliceUint32V(v, fastpathCheckNilTrue, e) + case *[]uint32: + fastpathTV.EncSliceUint32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]interface{}: + fastpathTV.EncMapUint32IntfV(v, fastpathCheckNilTrue, e) + case *map[uint32]interface{}: + fastpathTV.EncMapUint32IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint32]string: + fastpathTV.EncMapUint32StringV(v, fastpathCheckNilTrue, e) + case *map[uint32]string: + fastpathTV.EncMapUint32StringV(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint: + fastpathTV.EncMapUint32UintV(v, fastpathCheckNilTrue, e) + case *map[uint32]uint: + fastpathTV.EncMapUint32UintV(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint8: + fastpathTV.EncMapUint32Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint8: + fastpathTV.EncMapUint32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint16: + fastpathTV.EncMapUint32Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint16: + fastpathTV.EncMapUint32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint32: + fastpathTV.EncMapUint32Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint32: + fastpathTV.EncMapUint32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint64: + fastpathTV.EncMapUint32Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint64: + fastpathTV.EncMapUint32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uintptr: + fastpathTV.EncMapUint32UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint32]uintptr: + fastpathTV.EncMapUint32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint32]int: + fastpathTV.EncMapUint32IntV(v, fastpathCheckNilTrue, e) + case *map[uint32]int: + fastpathTV.EncMapUint32IntV(*v, fastpathCheckNilTrue, e) + + case map[uint32]int8: + fastpathTV.EncMapUint32Int8V(v, fastpathCheckNilTrue, e) + case *map[uint32]int8: + fastpathTV.EncMapUint32Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int16: + fastpathTV.EncMapUint32Int16V(v, fastpathCheckNilTrue, e) + case *map[uint32]int16: + fastpathTV.EncMapUint32Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int32: + fastpathTV.EncMapUint32Int32V(v, fastpathCheckNilTrue, e) + case *map[uint32]int32: + fastpathTV.EncMapUint32Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int64: + fastpathTV.EncMapUint32Int64V(v, fastpathCheckNilTrue, e) + case *map[uint32]int64: + fastpathTV.EncMapUint32Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]float32: + fastpathTV.EncMapUint32Float32V(v, fastpathCheckNilTrue, e) + case *map[uint32]float32: + fastpathTV.EncMapUint32Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]float64: + fastpathTV.EncMapUint32Float64V(v, fastpathCheckNilTrue, e) + case *map[uint32]float64: + fastpathTV.EncMapUint32Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]bool: + fastpathTV.EncMapUint32BoolV(v, fastpathCheckNilTrue, e) + case *map[uint32]bool: + fastpathTV.EncMapUint32BoolV(*v, fastpathCheckNilTrue, e) + + case []uint64: + fastpathTV.EncSliceUint64V(v, fastpathCheckNilTrue, e) + case *[]uint64: + fastpathTV.EncSliceUint64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]interface{}: + fastpathTV.EncMapUint64IntfV(v, fastpathCheckNilTrue, e) + case *map[uint64]interface{}: + fastpathTV.EncMapUint64IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint64]string: + fastpathTV.EncMapUint64StringV(v, fastpathCheckNilTrue, e) + case *map[uint64]string: + fastpathTV.EncMapUint64StringV(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint: + fastpathTV.EncMapUint64UintV(v, fastpathCheckNilTrue, e) + case *map[uint64]uint: + fastpathTV.EncMapUint64UintV(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint8: + fastpathTV.EncMapUint64Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint8: + fastpathTV.EncMapUint64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint16: + fastpathTV.EncMapUint64Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint16: + fastpathTV.EncMapUint64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint32: + fastpathTV.EncMapUint64Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint32: + fastpathTV.EncMapUint64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint64: + fastpathTV.EncMapUint64Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint64: + fastpathTV.EncMapUint64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uintptr: + fastpathTV.EncMapUint64UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint64]uintptr: + fastpathTV.EncMapUint64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint64]int: + fastpathTV.EncMapUint64IntV(v, fastpathCheckNilTrue, e) + case *map[uint64]int: + fastpathTV.EncMapUint64IntV(*v, fastpathCheckNilTrue, e) + + case map[uint64]int8: + fastpathTV.EncMapUint64Int8V(v, fastpathCheckNilTrue, e) + case *map[uint64]int8: + fastpathTV.EncMapUint64Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int16: + fastpathTV.EncMapUint64Int16V(v, fastpathCheckNilTrue, e) + case *map[uint64]int16: + fastpathTV.EncMapUint64Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int32: + fastpathTV.EncMapUint64Int32V(v, fastpathCheckNilTrue, e) + case *map[uint64]int32: + fastpathTV.EncMapUint64Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int64: + fastpathTV.EncMapUint64Int64V(v, fastpathCheckNilTrue, e) + case *map[uint64]int64: + fastpathTV.EncMapUint64Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]float32: + fastpathTV.EncMapUint64Float32V(v, fastpathCheckNilTrue, e) + case *map[uint64]float32: + fastpathTV.EncMapUint64Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]float64: + fastpathTV.EncMapUint64Float64V(v, fastpathCheckNilTrue, e) + case *map[uint64]float64: + fastpathTV.EncMapUint64Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]bool: + fastpathTV.EncMapUint64BoolV(v, fastpathCheckNilTrue, e) + case *map[uint64]bool: + fastpathTV.EncMapUint64BoolV(*v, fastpathCheckNilTrue, e) + + case []uintptr: + fastpathTV.EncSliceUintptrV(v, fastpathCheckNilTrue, e) + case *[]uintptr: + fastpathTV.EncSliceUintptrV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]interface{}: + fastpathTV.EncMapUintptrIntfV(v, fastpathCheckNilTrue, e) + case *map[uintptr]interface{}: + fastpathTV.EncMapUintptrIntfV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]string: + fastpathTV.EncMapUintptrStringV(v, fastpathCheckNilTrue, e) + case *map[uintptr]string: + fastpathTV.EncMapUintptrStringV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint: + fastpathTV.EncMapUintptrUintV(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint: + fastpathTV.EncMapUintptrUintV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint8: + fastpathTV.EncMapUintptrUint8V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint8: + fastpathTV.EncMapUintptrUint8V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint16: + fastpathTV.EncMapUintptrUint16V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint16: + fastpathTV.EncMapUintptrUint16V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint32: + fastpathTV.EncMapUintptrUint32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint32: + fastpathTV.EncMapUintptrUint32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint64: + fastpathTV.EncMapUintptrUint64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint64: + fastpathTV.EncMapUintptrUint64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uintptr: + fastpathTV.EncMapUintptrUintptrV(v, fastpathCheckNilTrue, e) + case *map[uintptr]uintptr: + fastpathTV.EncMapUintptrUintptrV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int: + fastpathTV.EncMapUintptrIntV(v, fastpathCheckNilTrue, e) + case *map[uintptr]int: + fastpathTV.EncMapUintptrIntV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int8: + fastpathTV.EncMapUintptrInt8V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int8: + fastpathTV.EncMapUintptrInt8V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int16: + fastpathTV.EncMapUintptrInt16V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int16: + fastpathTV.EncMapUintptrInt16V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int32: + fastpathTV.EncMapUintptrInt32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int32: + fastpathTV.EncMapUintptrInt32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int64: + fastpathTV.EncMapUintptrInt64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int64: + fastpathTV.EncMapUintptrInt64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]float32: + fastpathTV.EncMapUintptrFloat32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]float32: + fastpathTV.EncMapUintptrFloat32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]float64: + fastpathTV.EncMapUintptrFloat64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]float64: + fastpathTV.EncMapUintptrFloat64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]bool: + fastpathTV.EncMapUintptrBoolV(v, fastpathCheckNilTrue, e) + case *map[uintptr]bool: + fastpathTV.EncMapUintptrBoolV(*v, fastpathCheckNilTrue, e) + + case []int: + fastpathTV.EncSliceIntV(v, fastpathCheckNilTrue, e) + case *[]int: + fastpathTV.EncSliceIntV(*v, fastpathCheckNilTrue, e) + + case map[int]interface{}: + fastpathTV.EncMapIntIntfV(v, fastpathCheckNilTrue, e) + case *map[int]interface{}: + fastpathTV.EncMapIntIntfV(*v, fastpathCheckNilTrue, e) + + case map[int]string: + fastpathTV.EncMapIntStringV(v, fastpathCheckNilTrue, e) + case *map[int]string: + fastpathTV.EncMapIntStringV(*v, fastpathCheckNilTrue, e) + + case map[int]uint: + fastpathTV.EncMapIntUintV(v, fastpathCheckNilTrue, e) + case *map[int]uint: + fastpathTV.EncMapIntUintV(*v, fastpathCheckNilTrue, e) + + case map[int]uint8: + fastpathTV.EncMapIntUint8V(v, fastpathCheckNilTrue, e) + case *map[int]uint8: + fastpathTV.EncMapIntUint8V(*v, fastpathCheckNilTrue, e) + + case map[int]uint16: + fastpathTV.EncMapIntUint16V(v, fastpathCheckNilTrue, e) + case *map[int]uint16: + fastpathTV.EncMapIntUint16V(*v, fastpathCheckNilTrue, e) + + case map[int]uint32: + fastpathTV.EncMapIntUint32V(v, fastpathCheckNilTrue, e) + case *map[int]uint32: + fastpathTV.EncMapIntUint32V(*v, fastpathCheckNilTrue, e) + + case map[int]uint64: + fastpathTV.EncMapIntUint64V(v, fastpathCheckNilTrue, e) + case *map[int]uint64: + fastpathTV.EncMapIntUint64V(*v, fastpathCheckNilTrue, e) + + case map[int]uintptr: + fastpathTV.EncMapIntUintptrV(v, fastpathCheckNilTrue, e) + case *map[int]uintptr: + fastpathTV.EncMapIntUintptrV(*v, fastpathCheckNilTrue, e) + + case map[int]int: + fastpathTV.EncMapIntIntV(v, fastpathCheckNilTrue, e) + case *map[int]int: + fastpathTV.EncMapIntIntV(*v, fastpathCheckNilTrue, e) + + case map[int]int8: + fastpathTV.EncMapIntInt8V(v, fastpathCheckNilTrue, e) + case *map[int]int8: + fastpathTV.EncMapIntInt8V(*v, fastpathCheckNilTrue, e) + + case map[int]int16: + fastpathTV.EncMapIntInt16V(v, fastpathCheckNilTrue, e) + case *map[int]int16: + fastpathTV.EncMapIntInt16V(*v, fastpathCheckNilTrue, e) + + case map[int]int32: + fastpathTV.EncMapIntInt32V(v, fastpathCheckNilTrue, e) + case *map[int]int32: + fastpathTV.EncMapIntInt32V(*v, fastpathCheckNilTrue, e) + + case map[int]int64: + fastpathTV.EncMapIntInt64V(v, fastpathCheckNilTrue, e) + case *map[int]int64: + fastpathTV.EncMapIntInt64V(*v, fastpathCheckNilTrue, e) + + case map[int]float32: + fastpathTV.EncMapIntFloat32V(v, fastpathCheckNilTrue, e) + case *map[int]float32: + fastpathTV.EncMapIntFloat32V(*v, fastpathCheckNilTrue, e) + + case map[int]float64: + fastpathTV.EncMapIntFloat64V(v, fastpathCheckNilTrue, e) + case *map[int]float64: + fastpathTV.EncMapIntFloat64V(*v, fastpathCheckNilTrue, e) + + case map[int]bool: + fastpathTV.EncMapIntBoolV(v, fastpathCheckNilTrue, e) + case *map[int]bool: + fastpathTV.EncMapIntBoolV(*v, fastpathCheckNilTrue, e) + + case []int8: + fastpathTV.EncSliceInt8V(v, fastpathCheckNilTrue, e) + case *[]int8: + fastpathTV.EncSliceInt8V(*v, fastpathCheckNilTrue, e) + + case map[int8]interface{}: + fastpathTV.EncMapInt8IntfV(v, fastpathCheckNilTrue, e) + case *map[int8]interface{}: + fastpathTV.EncMapInt8IntfV(*v, fastpathCheckNilTrue, e) + + case map[int8]string: + fastpathTV.EncMapInt8StringV(v, fastpathCheckNilTrue, e) + case *map[int8]string: + fastpathTV.EncMapInt8StringV(*v, fastpathCheckNilTrue, e) + + case map[int8]uint: + fastpathTV.EncMapInt8UintV(v, fastpathCheckNilTrue, e) + case *map[int8]uint: + fastpathTV.EncMapInt8UintV(*v, fastpathCheckNilTrue, e) + + case map[int8]uint8: + fastpathTV.EncMapInt8Uint8V(v, fastpathCheckNilTrue, e) + case *map[int8]uint8: + fastpathTV.EncMapInt8Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint16: + fastpathTV.EncMapInt8Uint16V(v, fastpathCheckNilTrue, e) + case *map[int8]uint16: + fastpathTV.EncMapInt8Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint32: + fastpathTV.EncMapInt8Uint32V(v, fastpathCheckNilTrue, e) + case *map[int8]uint32: + fastpathTV.EncMapInt8Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint64: + fastpathTV.EncMapInt8Uint64V(v, fastpathCheckNilTrue, e) + case *map[int8]uint64: + fastpathTV.EncMapInt8Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int8]uintptr: + fastpathTV.EncMapInt8UintptrV(v, fastpathCheckNilTrue, e) + case *map[int8]uintptr: + fastpathTV.EncMapInt8UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int8]int: + fastpathTV.EncMapInt8IntV(v, fastpathCheckNilTrue, e) + case *map[int8]int: + fastpathTV.EncMapInt8IntV(*v, fastpathCheckNilTrue, e) + + case map[int8]int8: + fastpathTV.EncMapInt8Int8V(v, fastpathCheckNilTrue, e) + case *map[int8]int8: + fastpathTV.EncMapInt8Int8V(*v, fastpathCheckNilTrue, e) + + case map[int8]int16: + fastpathTV.EncMapInt8Int16V(v, fastpathCheckNilTrue, e) + case *map[int8]int16: + fastpathTV.EncMapInt8Int16V(*v, fastpathCheckNilTrue, e) + + case map[int8]int32: + fastpathTV.EncMapInt8Int32V(v, fastpathCheckNilTrue, e) + case *map[int8]int32: + fastpathTV.EncMapInt8Int32V(*v, fastpathCheckNilTrue, e) + + case map[int8]int64: + fastpathTV.EncMapInt8Int64V(v, fastpathCheckNilTrue, e) + case *map[int8]int64: + fastpathTV.EncMapInt8Int64V(*v, fastpathCheckNilTrue, e) + + case map[int8]float32: + fastpathTV.EncMapInt8Float32V(v, fastpathCheckNilTrue, e) + case *map[int8]float32: + fastpathTV.EncMapInt8Float32V(*v, fastpathCheckNilTrue, e) + + case map[int8]float64: + fastpathTV.EncMapInt8Float64V(v, fastpathCheckNilTrue, e) + case *map[int8]float64: + fastpathTV.EncMapInt8Float64V(*v, fastpathCheckNilTrue, e) + + case map[int8]bool: + fastpathTV.EncMapInt8BoolV(v, fastpathCheckNilTrue, e) + case *map[int8]bool: + fastpathTV.EncMapInt8BoolV(*v, fastpathCheckNilTrue, e) + + case []int16: + fastpathTV.EncSliceInt16V(v, fastpathCheckNilTrue, e) + case *[]int16: + fastpathTV.EncSliceInt16V(*v, fastpathCheckNilTrue, e) + + case map[int16]interface{}: + fastpathTV.EncMapInt16IntfV(v, fastpathCheckNilTrue, e) + case *map[int16]interface{}: + fastpathTV.EncMapInt16IntfV(*v, fastpathCheckNilTrue, e) + + case map[int16]string: + fastpathTV.EncMapInt16StringV(v, fastpathCheckNilTrue, e) + case *map[int16]string: + fastpathTV.EncMapInt16StringV(*v, fastpathCheckNilTrue, e) + + case map[int16]uint: + fastpathTV.EncMapInt16UintV(v, fastpathCheckNilTrue, e) + case *map[int16]uint: + fastpathTV.EncMapInt16UintV(*v, fastpathCheckNilTrue, e) + + case map[int16]uint8: + fastpathTV.EncMapInt16Uint8V(v, fastpathCheckNilTrue, e) + case *map[int16]uint8: + fastpathTV.EncMapInt16Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint16: + fastpathTV.EncMapInt16Uint16V(v, fastpathCheckNilTrue, e) + case *map[int16]uint16: + fastpathTV.EncMapInt16Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint32: + fastpathTV.EncMapInt16Uint32V(v, fastpathCheckNilTrue, e) + case *map[int16]uint32: + fastpathTV.EncMapInt16Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint64: + fastpathTV.EncMapInt16Uint64V(v, fastpathCheckNilTrue, e) + case *map[int16]uint64: + fastpathTV.EncMapInt16Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int16]uintptr: + fastpathTV.EncMapInt16UintptrV(v, fastpathCheckNilTrue, e) + case *map[int16]uintptr: + fastpathTV.EncMapInt16UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int16]int: + fastpathTV.EncMapInt16IntV(v, fastpathCheckNilTrue, e) + case *map[int16]int: + fastpathTV.EncMapInt16IntV(*v, fastpathCheckNilTrue, e) + + case map[int16]int8: + fastpathTV.EncMapInt16Int8V(v, fastpathCheckNilTrue, e) + case *map[int16]int8: + fastpathTV.EncMapInt16Int8V(*v, fastpathCheckNilTrue, e) + + case map[int16]int16: + fastpathTV.EncMapInt16Int16V(v, fastpathCheckNilTrue, e) + case *map[int16]int16: + fastpathTV.EncMapInt16Int16V(*v, fastpathCheckNilTrue, e) + + case map[int16]int32: + fastpathTV.EncMapInt16Int32V(v, fastpathCheckNilTrue, e) + case *map[int16]int32: + fastpathTV.EncMapInt16Int32V(*v, fastpathCheckNilTrue, e) + + case map[int16]int64: + fastpathTV.EncMapInt16Int64V(v, fastpathCheckNilTrue, e) + case *map[int16]int64: + fastpathTV.EncMapInt16Int64V(*v, fastpathCheckNilTrue, e) + + case map[int16]float32: + fastpathTV.EncMapInt16Float32V(v, fastpathCheckNilTrue, e) + case *map[int16]float32: + fastpathTV.EncMapInt16Float32V(*v, fastpathCheckNilTrue, e) + + case map[int16]float64: + fastpathTV.EncMapInt16Float64V(v, fastpathCheckNilTrue, e) + case *map[int16]float64: + fastpathTV.EncMapInt16Float64V(*v, fastpathCheckNilTrue, e) + + case map[int16]bool: + fastpathTV.EncMapInt16BoolV(v, fastpathCheckNilTrue, e) + case *map[int16]bool: + fastpathTV.EncMapInt16BoolV(*v, fastpathCheckNilTrue, e) + + case []int32: + fastpathTV.EncSliceInt32V(v, fastpathCheckNilTrue, e) + case *[]int32: + fastpathTV.EncSliceInt32V(*v, fastpathCheckNilTrue, e) + + case map[int32]interface{}: + fastpathTV.EncMapInt32IntfV(v, fastpathCheckNilTrue, e) + case *map[int32]interface{}: + fastpathTV.EncMapInt32IntfV(*v, fastpathCheckNilTrue, e) + + case map[int32]string: + fastpathTV.EncMapInt32StringV(v, fastpathCheckNilTrue, e) + case *map[int32]string: + fastpathTV.EncMapInt32StringV(*v, fastpathCheckNilTrue, e) + + case map[int32]uint: + fastpathTV.EncMapInt32UintV(v, fastpathCheckNilTrue, e) + case *map[int32]uint: + fastpathTV.EncMapInt32UintV(*v, fastpathCheckNilTrue, e) + + case map[int32]uint8: + fastpathTV.EncMapInt32Uint8V(v, fastpathCheckNilTrue, e) + case *map[int32]uint8: + fastpathTV.EncMapInt32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint16: + fastpathTV.EncMapInt32Uint16V(v, fastpathCheckNilTrue, e) + case *map[int32]uint16: + fastpathTV.EncMapInt32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint32: + fastpathTV.EncMapInt32Uint32V(v, fastpathCheckNilTrue, e) + case *map[int32]uint32: + fastpathTV.EncMapInt32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint64: + fastpathTV.EncMapInt32Uint64V(v, fastpathCheckNilTrue, e) + case *map[int32]uint64: + fastpathTV.EncMapInt32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int32]uintptr: + fastpathTV.EncMapInt32UintptrV(v, fastpathCheckNilTrue, e) + case *map[int32]uintptr: + fastpathTV.EncMapInt32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int32]int: + fastpathTV.EncMapInt32IntV(v, fastpathCheckNilTrue, e) + case *map[int32]int: + fastpathTV.EncMapInt32IntV(*v, fastpathCheckNilTrue, e) + + case map[int32]int8: + fastpathTV.EncMapInt32Int8V(v, fastpathCheckNilTrue, e) + case *map[int32]int8: + fastpathTV.EncMapInt32Int8V(*v, fastpathCheckNilTrue, e) + + case map[int32]int16: + fastpathTV.EncMapInt32Int16V(v, fastpathCheckNilTrue, e) + case *map[int32]int16: + fastpathTV.EncMapInt32Int16V(*v, fastpathCheckNilTrue, e) + + case map[int32]int32: + fastpathTV.EncMapInt32Int32V(v, fastpathCheckNilTrue, e) + case *map[int32]int32: + fastpathTV.EncMapInt32Int32V(*v, fastpathCheckNilTrue, e) + + case map[int32]int64: + fastpathTV.EncMapInt32Int64V(v, fastpathCheckNilTrue, e) + case *map[int32]int64: + fastpathTV.EncMapInt32Int64V(*v, fastpathCheckNilTrue, e) + + case map[int32]float32: + fastpathTV.EncMapInt32Float32V(v, fastpathCheckNilTrue, e) + case *map[int32]float32: + fastpathTV.EncMapInt32Float32V(*v, fastpathCheckNilTrue, e) + + case map[int32]float64: + fastpathTV.EncMapInt32Float64V(v, fastpathCheckNilTrue, e) + case *map[int32]float64: + fastpathTV.EncMapInt32Float64V(*v, fastpathCheckNilTrue, e) + + case map[int32]bool: + fastpathTV.EncMapInt32BoolV(v, fastpathCheckNilTrue, e) + case *map[int32]bool: + fastpathTV.EncMapInt32BoolV(*v, fastpathCheckNilTrue, e) + + case []int64: + fastpathTV.EncSliceInt64V(v, fastpathCheckNilTrue, e) + case *[]int64: + fastpathTV.EncSliceInt64V(*v, fastpathCheckNilTrue, e) + + case map[int64]interface{}: + fastpathTV.EncMapInt64IntfV(v, fastpathCheckNilTrue, e) + case *map[int64]interface{}: + fastpathTV.EncMapInt64IntfV(*v, fastpathCheckNilTrue, e) + + case map[int64]string: + fastpathTV.EncMapInt64StringV(v, fastpathCheckNilTrue, e) + case *map[int64]string: + fastpathTV.EncMapInt64StringV(*v, fastpathCheckNilTrue, e) + + case map[int64]uint: + fastpathTV.EncMapInt64UintV(v, fastpathCheckNilTrue, e) + case *map[int64]uint: + fastpathTV.EncMapInt64UintV(*v, fastpathCheckNilTrue, e) + + case map[int64]uint8: + fastpathTV.EncMapInt64Uint8V(v, fastpathCheckNilTrue, e) + case *map[int64]uint8: + fastpathTV.EncMapInt64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint16: + fastpathTV.EncMapInt64Uint16V(v, fastpathCheckNilTrue, e) + case *map[int64]uint16: + fastpathTV.EncMapInt64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint32: + fastpathTV.EncMapInt64Uint32V(v, fastpathCheckNilTrue, e) + case *map[int64]uint32: + fastpathTV.EncMapInt64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint64: + fastpathTV.EncMapInt64Uint64V(v, fastpathCheckNilTrue, e) + case *map[int64]uint64: + fastpathTV.EncMapInt64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int64]uintptr: + fastpathTV.EncMapInt64UintptrV(v, fastpathCheckNilTrue, e) + case *map[int64]uintptr: + fastpathTV.EncMapInt64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int64]int: + fastpathTV.EncMapInt64IntV(v, fastpathCheckNilTrue, e) + case *map[int64]int: + fastpathTV.EncMapInt64IntV(*v, fastpathCheckNilTrue, e) + + case map[int64]int8: + fastpathTV.EncMapInt64Int8V(v, fastpathCheckNilTrue, e) + case *map[int64]int8: + fastpathTV.EncMapInt64Int8V(*v, fastpathCheckNilTrue, e) + + case map[int64]int16: + fastpathTV.EncMapInt64Int16V(v, fastpathCheckNilTrue, e) + case *map[int64]int16: + fastpathTV.EncMapInt64Int16V(*v, fastpathCheckNilTrue, e) + + case map[int64]int32: + fastpathTV.EncMapInt64Int32V(v, fastpathCheckNilTrue, e) + case *map[int64]int32: + fastpathTV.EncMapInt64Int32V(*v, fastpathCheckNilTrue, e) + + case map[int64]int64: + fastpathTV.EncMapInt64Int64V(v, fastpathCheckNilTrue, e) + case *map[int64]int64: + fastpathTV.EncMapInt64Int64V(*v, fastpathCheckNilTrue, e) + + case map[int64]float32: + fastpathTV.EncMapInt64Float32V(v, fastpathCheckNilTrue, e) + case *map[int64]float32: + fastpathTV.EncMapInt64Float32V(*v, fastpathCheckNilTrue, e) + + case map[int64]float64: + fastpathTV.EncMapInt64Float64V(v, fastpathCheckNilTrue, e) + case *map[int64]float64: + fastpathTV.EncMapInt64Float64V(*v, fastpathCheckNilTrue, e) + + case map[int64]bool: + fastpathTV.EncMapInt64BoolV(v, fastpathCheckNilTrue, e) + case *map[int64]bool: + fastpathTV.EncMapInt64BoolV(*v, fastpathCheckNilTrue, e) + + case []bool: + fastpathTV.EncSliceBoolV(v, fastpathCheckNilTrue, e) + case *[]bool: + fastpathTV.EncSliceBoolV(*v, fastpathCheckNilTrue, e) + + case map[bool]interface{}: + fastpathTV.EncMapBoolIntfV(v, fastpathCheckNilTrue, e) + case *map[bool]interface{}: + fastpathTV.EncMapBoolIntfV(*v, fastpathCheckNilTrue, e) + + case map[bool]string: + fastpathTV.EncMapBoolStringV(v, fastpathCheckNilTrue, e) + case *map[bool]string: + fastpathTV.EncMapBoolStringV(*v, fastpathCheckNilTrue, e) + + case map[bool]uint: + fastpathTV.EncMapBoolUintV(v, fastpathCheckNilTrue, e) + case *map[bool]uint: + fastpathTV.EncMapBoolUintV(*v, fastpathCheckNilTrue, e) + + case map[bool]uint8: + fastpathTV.EncMapBoolUint8V(v, fastpathCheckNilTrue, e) + case *map[bool]uint8: + fastpathTV.EncMapBoolUint8V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint16: + fastpathTV.EncMapBoolUint16V(v, fastpathCheckNilTrue, e) + case *map[bool]uint16: + fastpathTV.EncMapBoolUint16V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint32: + fastpathTV.EncMapBoolUint32V(v, fastpathCheckNilTrue, e) + case *map[bool]uint32: + fastpathTV.EncMapBoolUint32V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint64: + fastpathTV.EncMapBoolUint64V(v, fastpathCheckNilTrue, e) + case *map[bool]uint64: + fastpathTV.EncMapBoolUint64V(*v, fastpathCheckNilTrue, e) + + case map[bool]uintptr: + fastpathTV.EncMapBoolUintptrV(v, fastpathCheckNilTrue, e) + case *map[bool]uintptr: + fastpathTV.EncMapBoolUintptrV(*v, fastpathCheckNilTrue, e) + + case map[bool]int: + fastpathTV.EncMapBoolIntV(v, fastpathCheckNilTrue, e) + case *map[bool]int: + fastpathTV.EncMapBoolIntV(*v, fastpathCheckNilTrue, e) + + case map[bool]int8: + fastpathTV.EncMapBoolInt8V(v, fastpathCheckNilTrue, e) + case *map[bool]int8: + fastpathTV.EncMapBoolInt8V(*v, fastpathCheckNilTrue, e) + + case map[bool]int16: + fastpathTV.EncMapBoolInt16V(v, fastpathCheckNilTrue, e) + case *map[bool]int16: + fastpathTV.EncMapBoolInt16V(*v, fastpathCheckNilTrue, e) + + case map[bool]int32: + fastpathTV.EncMapBoolInt32V(v, fastpathCheckNilTrue, e) + case *map[bool]int32: + fastpathTV.EncMapBoolInt32V(*v, fastpathCheckNilTrue, e) + + case map[bool]int64: + fastpathTV.EncMapBoolInt64V(v, fastpathCheckNilTrue, e) + case *map[bool]int64: + fastpathTV.EncMapBoolInt64V(*v, fastpathCheckNilTrue, e) + + case map[bool]float32: + fastpathTV.EncMapBoolFloat32V(v, fastpathCheckNilTrue, e) + case *map[bool]float32: + fastpathTV.EncMapBoolFloat32V(*v, fastpathCheckNilTrue, e) + + case map[bool]float64: + fastpathTV.EncMapBoolFloat64V(v, fastpathCheckNilTrue, e) + case *map[bool]float64: + fastpathTV.EncMapBoolFloat64V(*v, fastpathCheckNilTrue, e) + + case map[bool]bool: + fastpathTV.EncMapBoolBoolV(v, fastpathCheckNilTrue, e) + case *map[bool]bool: + fastpathTV.EncMapBoolBoolV(*v, fastpathCheckNilTrue, e) + + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +func fastpathEncodeTypeSwitchSlice(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { + + case []interface{}: + fastpathTV.EncSliceIntfV(v, fastpathCheckNilTrue, e) + case *[]interface{}: + fastpathTV.EncSliceIntfV(*v, fastpathCheckNilTrue, e) + + case []string: + fastpathTV.EncSliceStringV(v, fastpathCheckNilTrue, e) + case *[]string: + fastpathTV.EncSliceStringV(*v, fastpathCheckNilTrue, e) + + case []float32: + fastpathTV.EncSliceFloat32V(v, fastpathCheckNilTrue, e) + case *[]float32: + fastpathTV.EncSliceFloat32V(*v, fastpathCheckNilTrue, e) + + case []float64: + fastpathTV.EncSliceFloat64V(v, fastpathCheckNilTrue, e) + case *[]float64: + fastpathTV.EncSliceFloat64V(*v, fastpathCheckNilTrue, e) + + case []uint: + fastpathTV.EncSliceUintV(v, fastpathCheckNilTrue, e) + case *[]uint: + fastpathTV.EncSliceUintV(*v, fastpathCheckNilTrue, e) + + case []uint16: + fastpathTV.EncSliceUint16V(v, fastpathCheckNilTrue, e) + case *[]uint16: + fastpathTV.EncSliceUint16V(*v, fastpathCheckNilTrue, e) + + case []uint32: + fastpathTV.EncSliceUint32V(v, fastpathCheckNilTrue, e) + case *[]uint32: + fastpathTV.EncSliceUint32V(*v, fastpathCheckNilTrue, e) + + case []uint64: + fastpathTV.EncSliceUint64V(v, fastpathCheckNilTrue, e) + case *[]uint64: + fastpathTV.EncSliceUint64V(*v, fastpathCheckNilTrue, e) + + case []uintptr: + fastpathTV.EncSliceUintptrV(v, fastpathCheckNilTrue, e) + case *[]uintptr: + fastpathTV.EncSliceUintptrV(*v, fastpathCheckNilTrue, e) + + case []int: + fastpathTV.EncSliceIntV(v, fastpathCheckNilTrue, e) + case *[]int: + fastpathTV.EncSliceIntV(*v, fastpathCheckNilTrue, e) + + case []int8: + fastpathTV.EncSliceInt8V(v, fastpathCheckNilTrue, e) + case *[]int8: + fastpathTV.EncSliceInt8V(*v, fastpathCheckNilTrue, e) + + case []int16: + fastpathTV.EncSliceInt16V(v, fastpathCheckNilTrue, e) + case *[]int16: + fastpathTV.EncSliceInt16V(*v, fastpathCheckNilTrue, e) + + case []int32: + fastpathTV.EncSliceInt32V(v, fastpathCheckNilTrue, e) + case *[]int32: + fastpathTV.EncSliceInt32V(*v, fastpathCheckNilTrue, e) + + case []int64: + fastpathTV.EncSliceInt64V(v, fastpathCheckNilTrue, e) + case *[]int64: + fastpathTV.EncSliceInt64V(*v, fastpathCheckNilTrue, e) + + case []bool: + fastpathTV.EncSliceBoolV(v, fastpathCheckNilTrue, e) + case *[]bool: + fastpathTV.EncSliceBoolV(*v, fastpathCheckNilTrue, e) + + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { + + case map[interface{}]interface{}: + fastpathTV.EncMapIntfIntfV(v, fastpathCheckNilTrue, e) + case *map[interface{}]interface{}: + fastpathTV.EncMapIntfIntfV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]string: + fastpathTV.EncMapIntfStringV(v, fastpathCheckNilTrue, e) + case *map[interface{}]string: + fastpathTV.EncMapIntfStringV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint: + fastpathTV.EncMapIntfUintV(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint: + fastpathTV.EncMapIntfUintV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint8: + fastpathTV.EncMapIntfUint8V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint8: + fastpathTV.EncMapIntfUint8V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint16: + fastpathTV.EncMapIntfUint16V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint16: + fastpathTV.EncMapIntfUint16V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint32: + fastpathTV.EncMapIntfUint32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint32: + fastpathTV.EncMapIntfUint32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uint64: + fastpathTV.EncMapIntfUint64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]uint64: + fastpathTV.EncMapIntfUint64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]uintptr: + fastpathTV.EncMapIntfUintptrV(v, fastpathCheckNilTrue, e) + case *map[interface{}]uintptr: + fastpathTV.EncMapIntfUintptrV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int: + fastpathTV.EncMapIntfIntV(v, fastpathCheckNilTrue, e) + case *map[interface{}]int: + fastpathTV.EncMapIntfIntV(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int8: + fastpathTV.EncMapIntfInt8V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int8: + fastpathTV.EncMapIntfInt8V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int16: + fastpathTV.EncMapIntfInt16V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int16: + fastpathTV.EncMapIntfInt16V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int32: + fastpathTV.EncMapIntfInt32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int32: + fastpathTV.EncMapIntfInt32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]int64: + fastpathTV.EncMapIntfInt64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]int64: + fastpathTV.EncMapIntfInt64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]float32: + fastpathTV.EncMapIntfFloat32V(v, fastpathCheckNilTrue, e) + case *map[interface{}]float32: + fastpathTV.EncMapIntfFloat32V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]float64: + fastpathTV.EncMapIntfFloat64V(v, fastpathCheckNilTrue, e) + case *map[interface{}]float64: + fastpathTV.EncMapIntfFloat64V(*v, fastpathCheckNilTrue, e) + + case map[interface{}]bool: + fastpathTV.EncMapIntfBoolV(v, fastpathCheckNilTrue, e) + case *map[interface{}]bool: + fastpathTV.EncMapIntfBoolV(*v, fastpathCheckNilTrue, e) + + case map[string]interface{}: + fastpathTV.EncMapStringIntfV(v, fastpathCheckNilTrue, e) + case *map[string]interface{}: + fastpathTV.EncMapStringIntfV(*v, fastpathCheckNilTrue, e) + + case map[string]string: + fastpathTV.EncMapStringStringV(v, fastpathCheckNilTrue, e) + case *map[string]string: + fastpathTV.EncMapStringStringV(*v, fastpathCheckNilTrue, e) + + case map[string]uint: + fastpathTV.EncMapStringUintV(v, fastpathCheckNilTrue, e) + case *map[string]uint: + fastpathTV.EncMapStringUintV(*v, fastpathCheckNilTrue, e) + + case map[string]uint8: + fastpathTV.EncMapStringUint8V(v, fastpathCheckNilTrue, e) + case *map[string]uint8: + fastpathTV.EncMapStringUint8V(*v, fastpathCheckNilTrue, e) + + case map[string]uint16: + fastpathTV.EncMapStringUint16V(v, fastpathCheckNilTrue, e) + case *map[string]uint16: + fastpathTV.EncMapStringUint16V(*v, fastpathCheckNilTrue, e) + + case map[string]uint32: + fastpathTV.EncMapStringUint32V(v, fastpathCheckNilTrue, e) + case *map[string]uint32: + fastpathTV.EncMapStringUint32V(*v, fastpathCheckNilTrue, e) + + case map[string]uint64: + fastpathTV.EncMapStringUint64V(v, fastpathCheckNilTrue, e) + case *map[string]uint64: + fastpathTV.EncMapStringUint64V(*v, fastpathCheckNilTrue, e) + + case map[string]uintptr: + fastpathTV.EncMapStringUintptrV(v, fastpathCheckNilTrue, e) + case *map[string]uintptr: + fastpathTV.EncMapStringUintptrV(*v, fastpathCheckNilTrue, e) + + case map[string]int: + fastpathTV.EncMapStringIntV(v, fastpathCheckNilTrue, e) + case *map[string]int: + fastpathTV.EncMapStringIntV(*v, fastpathCheckNilTrue, e) + + case map[string]int8: + fastpathTV.EncMapStringInt8V(v, fastpathCheckNilTrue, e) + case *map[string]int8: + fastpathTV.EncMapStringInt8V(*v, fastpathCheckNilTrue, e) + + case map[string]int16: + fastpathTV.EncMapStringInt16V(v, fastpathCheckNilTrue, e) + case *map[string]int16: + fastpathTV.EncMapStringInt16V(*v, fastpathCheckNilTrue, e) + + case map[string]int32: + fastpathTV.EncMapStringInt32V(v, fastpathCheckNilTrue, e) + case *map[string]int32: + fastpathTV.EncMapStringInt32V(*v, fastpathCheckNilTrue, e) + + case map[string]int64: + fastpathTV.EncMapStringInt64V(v, fastpathCheckNilTrue, e) + case *map[string]int64: + fastpathTV.EncMapStringInt64V(*v, fastpathCheckNilTrue, e) + + case map[string]float32: + fastpathTV.EncMapStringFloat32V(v, fastpathCheckNilTrue, e) + case *map[string]float32: + fastpathTV.EncMapStringFloat32V(*v, fastpathCheckNilTrue, e) + + case map[string]float64: + fastpathTV.EncMapStringFloat64V(v, fastpathCheckNilTrue, e) + case *map[string]float64: + fastpathTV.EncMapStringFloat64V(*v, fastpathCheckNilTrue, e) + + case map[string]bool: + fastpathTV.EncMapStringBoolV(v, fastpathCheckNilTrue, e) + case *map[string]bool: + fastpathTV.EncMapStringBoolV(*v, fastpathCheckNilTrue, e) + + case map[float32]interface{}: + fastpathTV.EncMapFloat32IntfV(v, fastpathCheckNilTrue, e) + case *map[float32]interface{}: + fastpathTV.EncMapFloat32IntfV(*v, fastpathCheckNilTrue, e) + + case map[float32]string: + fastpathTV.EncMapFloat32StringV(v, fastpathCheckNilTrue, e) + case *map[float32]string: + fastpathTV.EncMapFloat32StringV(*v, fastpathCheckNilTrue, e) + + case map[float32]uint: + fastpathTV.EncMapFloat32UintV(v, fastpathCheckNilTrue, e) + case *map[float32]uint: + fastpathTV.EncMapFloat32UintV(*v, fastpathCheckNilTrue, e) + + case map[float32]uint8: + fastpathTV.EncMapFloat32Uint8V(v, fastpathCheckNilTrue, e) + case *map[float32]uint8: + fastpathTV.EncMapFloat32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint16: + fastpathTV.EncMapFloat32Uint16V(v, fastpathCheckNilTrue, e) + case *map[float32]uint16: + fastpathTV.EncMapFloat32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint32: + fastpathTV.EncMapFloat32Uint32V(v, fastpathCheckNilTrue, e) + case *map[float32]uint32: + fastpathTV.EncMapFloat32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[float32]uint64: + fastpathTV.EncMapFloat32Uint64V(v, fastpathCheckNilTrue, e) + case *map[float32]uint64: + fastpathTV.EncMapFloat32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[float32]uintptr: + fastpathTV.EncMapFloat32UintptrV(v, fastpathCheckNilTrue, e) + case *map[float32]uintptr: + fastpathTV.EncMapFloat32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[float32]int: + fastpathTV.EncMapFloat32IntV(v, fastpathCheckNilTrue, e) + case *map[float32]int: + fastpathTV.EncMapFloat32IntV(*v, fastpathCheckNilTrue, e) + + case map[float32]int8: + fastpathTV.EncMapFloat32Int8V(v, fastpathCheckNilTrue, e) + case *map[float32]int8: + fastpathTV.EncMapFloat32Int8V(*v, fastpathCheckNilTrue, e) + + case map[float32]int16: + fastpathTV.EncMapFloat32Int16V(v, fastpathCheckNilTrue, e) + case *map[float32]int16: + fastpathTV.EncMapFloat32Int16V(*v, fastpathCheckNilTrue, e) + + case map[float32]int32: + fastpathTV.EncMapFloat32Int32V(v, fastpathCheckNilTrue, e) + case *map[float32]int32: + fastpathTV.EncMapFloat32Int32V(*v, fastpathCheckNilTrue, e) + + case map[float32]int64: + fastpathTV.EncMapFloat32Int64V(v, fastpathCheckNilTrue, e) + case *map[float32]int64: + fastpathTV.EncMapFloat32Int64V(*v, fastpathCheckNilTrue, e) + + case map[float32]float32: + fastpathTV.EncMapFloat32Float32V(v, fastpathCheckNilTrue, e) + case *map[float32]float32: + fastpathTV.EncMapFloat32Float32V(*v, fastpathCheckNilTrue, e) + + case map[float32]float64: + fastpathTV.EncMapFloat32Float64V(v, fastpathCheckNilTrue, e) + case *map[float32]float64: + fastpathTV.EncMapFloat32Float64V(*v, fastpathCheckNilTrue, e) + + case map[float32]bool: + fastpathTV.EncMapFloat32BoolV(v, fastpathCheckNilTrue, e) + case *map[float32]bool: + fastpathTV.EncMapFloat32BoolV(*v, fastpathCheckNilTrue, e) + + case map[float64]interface{}: + fastpathTV.EncMapFloat64IntfV(v, fastpathCheckNilTrue, e) + case *map[float64]interface{}: + fastpathTV.EncMapFloat64IntfV(*v, fastpathCheckNilTrue, e) + + case map[float64]string: + fastpathTV.EncMapFloat64StringV(v, fastpathCheckNilTrue, e) + case *map[float64]string: + fastpathTV.EncMapFloat64StringV(*v, fastpathCheckNilTrue, e) + + case map[float64]uint: + fastpathTV.EncMapFloat64UintV(v, fastpathCheckNilTrue, e) + case *map[float64]uint: + fastpathTV.EncMapFloat64UintV(*v, fastpathCheckNilTrue, e) + + case map[float64]uint8: + fastpathTV.EncMapFloat64Uint8V(v, fastpathCheckNilTrue, e) + case *map[float64]uint8: + fastpathTV.EncMapFloat64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint16: + fastpathTV.EncMapFloat64Uint16V(v, fastpathCheckNilTrue, e) + case *map[float64]uint16: + fastpathTV.EncMapFloat64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint32: + fastpathTV.EncMapFloat64Uint32V(v, fastpathCheckNilTrue, e) + case *map[float64]uint32: + fastpathTV.EncMapFloat64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[float64]uint64: + fastpathTV.EncMapFloat64Uint64V(v, fastpathCheckNilTrue, e) + case *map[float64]uint64: + fastpathTV.EncMapFloat64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[float64]uintptr: + fastpathTV.EncMapFloat64UintptrV(v, fastpathCheckNilTrue, e) + case *map[float64]uintptr: + fastpathTV.EncMapFloat64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[float64]int: + fastpathTV.EncMapFloat64IntV(v, fastpathCheckNilTrue, e) + case *map[float64]int: + fastpathTV.EncMapFloat64IntV(*v, fastpathCheckNilTrue, e) + + case map[float64]int8: + fastpathTV.EncMapFloat64Int8V(v, fastpathCheckNilTrue, e) + case *map[float64]int8: + fastpathTV.EncMapFloat64Int8V(*v, fastpathCheckNilTrue, e) + + case map[float64]int16: + fastpathTV.EncMapFloat64Int16V(v, fastpathCheckNilTrue, e) + case *map[float64]int16: + fastpathTV.EncMapFloat64Int16V(*v, fastpathCheckNilTrue, e) + + case map[float64]int32: + fastpathTV.EncMapFloat64Int32V(v, fastpathCheckNilTrue, e) + case *map[float64]int32: + fastpathTV.EncMapFloat64Int32V(*v, fastpathCheckNilTrue, e) + + case map[float64]int64: + fastpathTV.EncMapFloat64Int64V(v, fastpathCheckNilTrue, e) + case *map[float64]int64: + fastpathTV.EncMapFloat64Int64V(*v, fastpathCheckNilTrue, e) + + case map[float64]float32: + fastpathTV.EncMapFloat64Float32V(v, fastpathCheckNilTrue, e) + case *map[float64]float32: + fastpathTV.EncMapFloat64Float32V(*v, fastpathCheckNilTrue, e) + + case map[float64]float64: + fastpathTV.EncMapFloat64Float64V(v, fastpathCheckNilTrue, e) + case *map[float64]float64: + fastpathTV.EncMapFloat64Float64V(*v, fastpathCheckNilTrue, e) + + case map[float64]bool: + fastpathTV.EncMapFloat64BoolV(v, fastpathCheckNilTrue, e) + case *map[float64]bool: + fastpathTV.EncMapFloat64BoolV(*v, fastpathCheckNilTrue, e) + + case map[uint]interface{}: + fastpathTV.EncMapUintIntfV(v, fastpathCheckNilTrue, e) + case *map[uint]interface{}: + fastpathTV.EncMapUintIntfV(*v, fastpathCheckNilTrue, e) + + case map[uint]string: + fastpathTV.EncMapUintStringV(v, fastpathCheckNilTrue, e) + case *map[uint]string: + fastpathTV.EncMapUintStringV(*v, fastpathCheckNilTrue, e) + + case map[uint]uint: + fastpathTV.EncMapUintUintV(v, fastpathCheckNilTrue, e) + case *map[uint]uint: + fastpathTV.EncMapUintUintV(*v, fastpathCheckNilTrue, e) + + case map[uint]uint8: + fastpathTV.EncMapUintUint8V(v, fastpathCheckNilTrue, e) + case *map[uint]uint8: + fastpathTV.EncMapUintUint8V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint16: + fastpathTV.EncMapUintUint16V(v, fastpathCheckNilTrue, e) + case *map[uint]uint16: + fastpathTV.EncMapUintUint16V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint32: + fastpathTV.EncMapUintUint32V(v, fastpathCheckNilTrue, e) + case *map[uint]uint32: + fastpathTV.EncMapUintUint32V(*v, fastpathCheckNilTrue, e) + + case map[uint]uint64: + fastpathTV.EncMapUintUint64V(v, fastpathCheckNilTrue, e) + case *map[uint]uint64: + fastpathTV.EncMapUintUint64V(*v, fastpathCheckNilTrue, e) + + case map[uint]uintptr: + fastpathTV.EncMapUintUintptrV(v, fastpathCheckNilTrue, e) + case *map[uint]uintptr: + fastpathTV.EncMapUintUintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint]int: + fastpathTV.EncMapUintIntV(v, fastpathCheckNilTrue, e) + case *map[uint]int: + fastpathTV.EncMapUintIntV(*v, fastpathCheckNilTrue, e) + + case map[uint]int8: + fastpathTV.EncMapUintInt8V(v, fastpathCheckNilTrue, e) + case *map[uint]int8: + fastpathTV.EncMapUintInt8V(*v, fastpathCheckNilTrue, e) + + case map[uint]int16: + fastpathTV.EncMapUintInt16V(v, fastpathCheckNilTrue, e) + case *map[uint]int16: + fastpathTV.EncMapUintInt16V(*v, fastpathCheckNilTrue, e) + + case map[uint]int32: + fastpathTV.EncMapUintInt32V(v, fastpathCheckNilTrue, e) + case *map[uint]int32: + fastpathTV.EncMapUintInt32V(*v, fastpathCheckNilTrue, e) + + case map[uint]int64: + fastpathTV.EncMapUintInt64V(v, fastpathCheckNilTrue, e) + case *map[uint]int64: + fastpathTV.EncMapUintInt64V(*v, fastpathCheckNilTrue, e) + + case map[uint]float32: + fastpathTV.EncMapUintFloat32V(v, fastpathCheckNilTrue, e) + case *map[uint]float32: + fastpathTV.EncMapUintFloat32V(*v, fastpathCheckNilTrue, e) + + case map[uint]float64: + fastpathTV.EncMapUintFloat64V(v, fastpathCheckNilTrue, e) + case *map[uint]float64: + fastpathTV.EncMapUintFloat64V(*v, fastpathCheckNilTrue, e) + + case map[uint]bool: + fastpathTV.EncMapUintBoolV(v, fastpathCheckNilTrue, e) + case *map[uint]bool: + fastpathTV.EncMapUintBoolV(*v, fastpathCheckNilTrue, e) + + case map[uint8]interface{}: + fastpathTV.EncMapUint8IntfV(v, fastpathCheckNilTrue, e) + case *map[uint8]interface{}: + fastpathTV.EncMapUint8IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint8]string: + fastpathTV.EncMapUint8StringV(v, fastpathCheckNilTrue, e) + case *map[uint8]string: + fastpathTV.EncMapUint8StringV(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint: + fastpathTV.EncMapUint8UintV(v, fastpathCheckNilTrue, e) + case *map[uint8]uint: + fastpathTV.EncMapUint8UintV(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint8: + fastpathTV.EncMapUint8Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint8: + fastpathTV.EncMapUint8Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint16: + fastpathTV.EncMapUint8Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint16: + fastpathTV.EncMapUint8Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint32: + fastpathTV.EncMapUint8Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint32: + fastpathTV.EncMapUint8Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uint64: + fastpathTV.EncMapUint8Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint8]uint64: + fastpathTV.EncMapUint8Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]uintptr: + fastpathTV.EncMapUint8UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint8]uintptr: + fastpathTV.EncMapUint8UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint8]int: + fastpathTV.EncMapUint8IntV(v, fastpathCheckNilTrue, e) + case *map[uint8]int: + fastpathTV.EncMapUint8IntV(*v, fastpathCheckNilTrue, e) + + case map[uint8]int8: + fastpathTV.EncMapUint8Int8V(v, fastpathCheckNilTrue, e) + case *map[uint8]int8: + fastpathTV.EncMapUint8Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int16: + fastpathTV.EncMapUint8Int16V(v, fastpathCheckNilTrue, e) + case *map[uint8]int16: + fastpathTV.EncMapUint8Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int32: + fastpathTV.EncMapUint8Int32V(v, fastpathCheckNilTrue, e) + case *map[uint8]int32: + fastpathTV.EncMapUint8Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]int64: + fastpathTV.EncMapUint8Int64V(v, fastpathCheckNilTrue, e) + case *map[uint8]int64: + fastpathTV.EncMapUint8Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]float32: + fastpathTV.EncMapUint8Float32V(v, fastpathCheckNilTrue, e) + case *map[uint8]float32: + fastpathTV.EncMapUint8Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint8]float64: + fastpathTV.EncMapUint8Float64V(v, fastpathCheckNilTrue, e) + case *map[uint8]float64: + fastpathTV.EncMapUint8Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint8]bool: + fastpathTV.EncMapUint8BoolV(v, fastpathCheckNilTrue, e) + case *map[uint8]bool: + fastpathTV.EncMapUint8BoolV(*v, fastpathCheckNilTrue, e) + + case map[uint16]interface{}: + fastpathTV.EncMapUint16IntfV(v, fastpathCheckNilTrue, e) + case *map[uint16]interface{}: + fastpathTV.EncMapUint16IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint16]string: + fastpathTV.EncMapUint16StringV(v, fastpathCheckNilTrue, e) + case *map[uint16]string: + fastpathTV.EncMapUint16StringV(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint: + fastpathTV.EncMapUint16UintV(v, fastpathCheckNilTrue, e) + case *map[uint16]uint: + fastpathTV.EncMapUint16UintV(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint8: + fastpathTV.EncMapUint16Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint8: + fastpathTV.EncMapUint16Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint16: + fastpathTV.EncMapUint16Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint16: + fastpathTV.EncMapUint16Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint32: + fastpathTV.EncMapUint16Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint32: + fastpathTV.EncMapUint16Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uint64: + fastpathTV.EncMapUint16Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint16]uint64: + fastpathTV.EncMapUint16Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]uintptr: + fastpathTV.EncMapUint16UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint16]uintptr: + fastpathTV.EncMapUint16UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint16]int: + fastpathTV.EncMapUint16IntV(v, fastpathCheckNilTrue, e) + case *map[uint16]int: + fastpathTV.EncMapUint16IntV(*v, fastpathCheckNilTrue, e) + + case map[uint16]int8: + fastpathTV.EncMapUint16Int8V(v, fastpathCheckNilTrue, e) + case *map[uint16]int8: + fastpathTV.EncMapUint16Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int16: + fastpathTV.EncMapUint16Int16V(v, fastpathCheckNilTrue, e) + case *map[uint16]int16: + fastpathTV.EncMapUint16Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int32: + fastpathTV.EncMapUint16Int32V(v, fastpathCheckNilTrue, e) + case *map[uint16]int32: + fastpathTV.EncMapUint16Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]int64: + fastpathTV.EncMapUint16Int64V(v, fastpathCheckNilTrue, e) + case *map[uint16]int64: + fastpathTV.EncMapUint16Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]float32: + fastpathTV.EncMapUint16Float32V(v, fastpathCheckNilTrue, e) + case *map[uint16]float32: + fastpathTV.EncMapUint16Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint16]float64: + fastpathTV.EncMapUint16Float64V(v, fastpathCheckNilTrue, e) + case *map[uint16]float64: + fastpathTV.EncMapUint16Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint16]bool: + fastpathTV.EncMapUint16BoolV(v, fastpathCheckNilTrue, e) + case *map[uint16]bool: + fastpathTV.EncMapUint16BoolV(*v, fastpathCheckNilTrue, e) + + case map[uint32]interface{}: + fastpathTV.EncMapUint32IntfV(v, fastpathCheckNilTrue, e) + case *map[uint32]interface{}: + fastpathTV.EncMapUint32IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint32]string: + fastpathTV.EncMapUint32StringV(v, fastpathCheckNilTrue, e) + case *map[uint32]string: + fastpathTV.EncMapUint32StringV(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint: + fastpathTV.EncMapUint32UintV(v, fastpathCheckNilTrue, e) + case *map[uint32]uint: + fastpathTV.EncMapUint32UintV(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint8: + fastpathTV.EncMapUint32Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint8: + fastpathTV.EncMapUint32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint16: + fastpathTV.EncMapUint32Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint16: + fastpathTV.EncMapUint32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint32: + fastpathTV.EncMapUint32Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint32: + fastpathTV.EncMapUint32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uint64: + fastpathTV.EncMapUint32Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint32]uint64: + fastpathTV.EncMapUint32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]uintptr: + fastpathTV.EncMapUint32UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint32]uintptr: + fastpathTV.EncMapUint32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint32]int: + fastpathTV.EncMapUint32IntV(v, fastpathCheckNilTrue, e) + case *map[uint32]int: + fastpathTV.EncMapUint32IntV(*v, fastpathCheckNilTrue, e) + + case map[uint32]int8: + fastpathTV.EncMapUint32Int8V(v, fastpathCheckNilTrue, e) + case *map[uint32]int8: + fastpathTV.EncMapUint32Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int16: + fastpathTV.EncMapUint32Int16V(v, fastpathCheckNilTrue, e) + case *map[uint32]int16: + fastpathTV.EncMapUint32Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int32: + fastpathTV.EncMapUint32Int32V(v, fastpathCheckNilTrue, e) + case *map[uint32]int32: + fastpathTV.EncMapUint32Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]int64: + fastpathTV.EncMapUint32Int64V(v, fastpathCheckNilTrue, e) + case *map[uint32]int64: + fastpathTV.EncMapUint32Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]float32: + fastpathTV.EncMapUint32Float32V(v, fastpathCheckNilTrue, e) + case *map[uint32]float32: + fastpathTV.EncMapUint32Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint32]float64: + fastpathTV.EncMapUint32Float64V(v, fastpathCheckNilTrue, e) + case *map[uint32]float64: + fastpathTV.EncMapUint32Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint32]bool: + fastpathTV.EncMapUint32BoolV(v, fastpathCheckNilTrue, e) + case *map[uint32]bool: + fastpathTV.EncMapUint32BoolV(*v, fastpathCheckNilTrue, e) + + case map[uint64]interface{}: + fastpathTV.EncMapUint64IntfV(v, fastpathCheckNilTrue, e) + case *map[uint64]interface{}: + fastpathTV.EncMapUint64IntfV(*v, fastpathCheckNilTrue, e) + + case map[uint64]string: + fastpathTV.EncMapUint64StringV(v, fastpathCheckNilTrue, e) + case *map[uint64]string: + fastpathTV.EncMapUint64StringV(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint: + fastpathTV.EncMapUint64UintV(v, fastpathCheckNilTrue, e) + case *map[uint64]uint: + fastpathTV.EncMapUint64UintV(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint8: + fastpathTV.EncMapUint64Uint8V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint8: + fastpathTV.EncMapUint64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint16: + fastpathTV.EncMapUint64Uint16V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint16: + fastpathTV.EncMapUint64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint32: + fastpathTV.EncMapUint64Uint32V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint32: + fastpathTV.EncMapUint64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uint64: + fastpathTV.EncMapUint64Uint64V(v, fastpathCheckNilTrue, e) + case *map[uint64]uint64: + fastpathTV.EncMapUint64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]uintptr: + fastpathTV.EncMapUint64UintptrV(v, fastpathCheckNilTrue, e) + case *map[uint64]uintptr: + fastpathTV.EncMapUint64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[uint64]int: + fastpathTV.EncMapUint64IntV(v, fastpathCheckNilTrue, e) + case *map[uint64]int: + fastpathTV.EncMapUint64IntV(*v, fastpathCheckNilTrue, e) + + case map[uint64]int8: + fastpathTV.EncMapUint64Int8V(v, fastpathCheckNilTrue, e) + case *map[uint64]int8: + fastpathTV.EncMapUint64Int8V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int16: + fastpathTV.EncMapUint64Int16V(v, fastpathCheckNilTrue, e) + case *map[uint64]int16: + fastpathTV.EncMapUint64Int16V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int32: + fastpathTV.EncMapUint64Int32V(v, fastpathCheckNilTrue, e) + case *map[uint64]int32: + fastpathTV.EncMapUint64Int32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]int64: + fastpathTV.EncMapUint64Int64V(v, fastpathCheckNilTrue, e) + case *map[uint64]int64: + fastpathTV.EncMapUint64Int64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]float32: + fastpathTV.EncMapUint64Float32V(v, fastpathCheckNilTrue, e) + case *map[uint64]float32: + fastpathTV.EncMapUint64Float32V(*v, fastpathCheckNilTrue, e) + + case map[uint64]float64: + fastpathTV.EncMapUint64Float64V(v, fastpathCheckNilTrue, e) + case *map[uint64]float64: + fastpathTV.EncMapUint64Float64V(*v, fastpathCheckNilTrue, e) + + case map[uint64]bool: + fastpathTV.EncMapUint64BoolV(v, fastpathCheckNilTrue, e) + case *map[uint64]bool: + fastpathTV.EncMapUint64BoolV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]interface{}: + fastpathTV.EncMapUintptrIntfV(v, fastpathCheckNilTrue, e) + case *map[uintptr]interface{}: + fastpathTV.EncMapUintptrIntfV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]string: + fastpathTV.EncMapUintptrStringV(v, fastpathCheckNilTrue, e) + case *map[uintptr]string: + fastpathTV.EncMapUintptrStringV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint: + fastpathTV.EncMapUintptrUintV(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint: + fastpathTV.EncMapUintptrUintV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint8: + fastpathTV.EncMapUintptrUint8V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint8: + fastpathTV.EncMapUintptrUint8V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint16: + fastpathTV.EncMapUintptrUint16V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint16: + fastpathTV.EncMapUintptrUint16V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint32: + fastpathTV.EncMapUintptrUint32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint32: + fastpathTV.EncMapUintptrUint32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uint64: + fastpathTV.EncMapUintptrUint64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]uint64: + fastpathTV.EncMapUintptrUint64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]uintptr: + fastpathTV.EncMapUintptrUintptrV(v, fastpathCheckNilTrue, e) + case *map[uintptr]uintptr: + fastpathTV.EncMapUintptrUintptrV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int: + fastpathTV.EncMapUintptrIntV(v, fastpathCheckNilTrue, e) + case *map[uintptr]int: + fastpathTV.EncMapUintptrIntV(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int8: + fastpathTV.EncMapUintptrInt8V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int8: + fastpathTV.EncMapUintptrInt8V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int16: + fastpathTV.EncMapUintptrInt16V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int16: + fastpathTV.EncMapUintptrInt16V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int32: + fastpathTV.EncMapUintptrInt32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int32: + fastpathTV.EncMapUintptrInt32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]int64: + fastpathTV.EncMapUintptrInt64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]int64: + fastpathTV.EncMapUintptrInt64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]float32: + fastpathTV.EncMapUintptrFloat32V(v, fastpathCheckNilTrue, e) + case *map[uintptr]float32: + fastpathTV.EncMapUintptrFloat32V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]float64: + fastpathTV.EncMapUintptrFloat64V(v, fastpathCheckNilTrue, e) + case *map[uintptr]float64: + fastpathTV.EncMapUintptrFloat64V(*v, fastpathCheckNilTrue, e) + + case map[uintptr]bool: + fastpathTV.EncMapUintptrBoolV(v, fastpathCheckNilTrue, e) + case *map[uintptr]bool: + fastpathTV.EncMapUintptrBoolV(*v, fastpathCheckNilTrue, e) + + case map[int]interface{}: + fastpathTV.EncMapIntIntfV(v, fastpathCheckNilTrue, e) + case *map[int]interface{}: + fastpathTV.EncMapIntIntfV(*v, fastpathCheckNilTrue, e) + + case map[int]string: + fastpathTV.EncMapIntStringV(v, fastpathCheckNilTrue, e) + case *map[int]string: + fastpathTV.EncMapIntStringV(*v, fastpathCheckNilTrue, e) + + case map[int]uint: + fastpathTV.EncMapIntUintV(v, fastpathCheckNilTrue, e) + case *map[int]uint: + fastpathTV.EncMapIntUintV(*v, fastpathCheckNilTrue, e) + + case map[int]uint8: + fastpathTV.EncMapIntUint8V(v, fastpathCheckNilTrue, e) + case *map[int]uint8: + fastpathTV.EncMapIntUint8V(*v, fastpathCheckNilTrue, e) + + case map[int]uint16: + fastpathTV.EncMapIntUint16V(v, fastpathCheckNilTrue, e) + case *map[int]uint16: + fastpathTV.EncMapIntUint16V(*v, fastpathCheckNilTrue, e) + + case map[int]uint32: + fastpathTV.EncMapIntUint32V(v, fastpathCheckNilTrue, e) + case *map[int]uint32: + fastpathTV.EncMapIntUint32V(*v, fastpathCheckNilTrue, e) + + case map[int]uint64: + fastpathTV.EncMapIntUint64V(v, fastpathCheckNilTrue, e) + case *map[int]uint64: + fastpathTV.EncMapIntUint64V(*v, fastpathCheckNilTrue, e) + + case map[int]uintptr: + fastpathTV.EncMapIntUintptrV(v, fastpathCheckNilTrue, e) + case *map[int]uintptr: + fastpathTV.EncMapIntUintptrV(*v, fastpathCheckNilTrue, e) + + case map[int]int: + fastpathTV.EncMapIntIntV(v, fastpathCheckNilTrue, e) + case *map[int]int: + fastpathTV.EncMapIntIntV(*v, fastpathCheckNilTrue, e) + + case map[int]int8: + fastpathTV.EncMapIntInt8V(v, fastpathCheckNilTrue, e) + case *map[int]int8: + fastpathTV.EncMapIntInt8V(*v, fastpathCheckNilTrue, e) + + case map[int]int16: + fastpathTV.EncMapIntInt16V(v, fastpathCheckNilTrue, e) + case *map[int]int16: + fastpathTV.EncMapIntInt16V(*v, fastpathCheckNilTrue, e) + + case map[int]int32: + fastpathTV.EncMapIntInt32V(v, fastpathCheckNilTrue, e) + case *map[int]int32: + fastpathTV.EncMapIntInt32V(*v, fastpathCheckNilTrue, e) + + case map[int]int64: + fastpathTV.EncMapIntInt64V(v, fastpathCheckNilTrue, e) + case *map[int]int64: + fastpathTV.EncMapIntInt64V(*v, fastpathCheckNilTrue, e) + + case map[int]float32: + fastpathTV.EncMapIntFloat32V(v, fastpathCheckNilTrue, e) + case *map[int]float32: + fastpathTV.EncMapIntFloat32V(*v, fastpathCheckNilTrue, e) + + case map[int]float64: + fastpathTV.EncMapIntFloat64V(v, fastpathCheckNilTrue, e) + case *map[int]float64: + fastpathTV.EncMapIntFloat64V(*v, fastpathCheckNilTrue, e) + + case map[int]bool: + fastpathTV.EncMapIntBoolV(v, fastpathCheckNilTrue, e) + case *map[int]bool: + fastpathTV.EncMapIntBoolV(*v, fastpathCheckNilTrue, e) + + case map[int8]interface{}: + fastpathTV.EncMapInt8IntfV(v, fastpathCheckNilTrue, e) + case *map[int8]interface{}: + fastpathTV.EncMapInt8IntfV(*v, fastpathCheckNilTrue, e) + + case map[int8]string: + fastpathTV.EncMapInt8StringV(v, fastpathCheckNilTrue, e) + case *map[int8]string: + fastpathTV.EncMapInt8StringV(*v, fastpathCheckNilTrue, e) + + case map[int8]uint: + fastpathTV.EncMapInt8UintV(v, fastpathCheckNilTrue, e) + case *map[int8]uint: + fastpathTV.EncMapInt8UintV(*v, fastpathCheckNilTrue, e) + + case map[int8]uint8: + fastpathTV.EncMapInt8Uint8V(v, fastpathCheckNilTrue, e) + case *map[int8]uint8: + fastpathTV.EncMapInt8Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint16: + fastpathTV.EncMapInt8Uint16V(v, fastpathCheckNilTrue, e) + case *map[int8]uint16: + fastpathTV.EncMapInt8Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint32: + fastpathTV.EncMapInt8Uint32V(v, fastpathCheckNilTrue, e) + case *map[int8]uint32: + fastpathTV.EncMapInt8Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int8]uint64: + fastpathTV.EncMapInt8Uint64V(v, fastpathCheckNilTrue, e) + case *map[int8]uint64: + fastpathTV.EncMapInt8Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int8]uintptr: + fastpathTV.EncMapInt8UintptrV(v, fastpathCheckNilTrue, e) + case *map[int8]uintptr: + fastpathTV.EncMapInt8UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int8]int: + fastpathTV.EncMapInt8IntV(v, fastpathCheckNilTrue, e) + case *map[int8]int: + fastpathTV.EncMapInt8IntV(*v, fastpathCheckNilTrue, e) + + case map[int8]int8: + fastpathTV.EncMapInt8Int8V(v, fastpathCheckNilTrue, e) + case *map[int8]int8: + fastpathTV.EncMapInt8Int8V(*v, fastpathCheckNilTrue, e) + + case map[int8]int16: + fastpathTV.EncMapInt8Int16V(v, fastpathCheckNilTrue, e) + case *map[int8]int16: + fastpathTV.EncMapInt8Int16V(*v, fastpathCheckNilTrue, e) + + case map[int8]int32: + fastpathTV.EncMapInt8Int32V(v, fastpathCheckNilTrue, e) + case *map[int8]int32: + fastpathTV.EncMapInt8Int32V(*v, fastpathCheckNilTrue, e) + + case map[int8]int64: + fastpathTV.EncMapInt8Int64V(v, fastpathCheckNilTrue, e) + case *map[int8]int64: + fastpathTV.EncMapInt8Int64V(*v, fastpathCheckNilTrue, e) + + case map[int8]float32: + fastpathTV.EncMapInt8Float32V(v, fastpathCheckNilTrue, e) + case *map[int8]float32: + fastpathTV.EncMapInt8Float32V(*v, fastpathCheckNilTrue, e) + + case map[int8]float64: + fastpathTV.EncMapInt8Float64V(v, fastpathCheckNilTrue, e) + case *map[int8]float64: + fastpathTV.EncMapInt8Float64V(*v, fastpathCheckNilTrue, e) + + case map[int8]bool: + fastpathTV.EncMapInt8BoolV(v, fastpathCheckNilTrue, e) + case *map[int8]bool: + fastpathTV.EncMapInt8BoolV(*v, fastpathCheckNilTrue, e) + + case map[int16]interface{}: + fastpathTV.EncMapInt16IntfV(v, fastpathCheckNilTrue, e) + case *map[int16]interface{}: + fastpathTV.EncMapInt16IntfV(*v, fastpathCheckNilTrue, e) + + case map[int16]string: + fastpathTV.EncMapInt16StringV(v, fastpathCheckNilTrue, e) + case *map[int16]string: + fastpathTV.EncMapInt16StringV(*v, fastpathCheckNilTrue, e) + + case map[int16]uint: + fastpathTV.EncMapInt16UintV(v, fastpathCheckNilTrue, e) + case *map[int16]uint: + fastpathTV.EncMapInt16UintV(*v, fastpathCheckNilTrue, e) + + case map[int16]uint8: + fastpathTV.EncMapInt16Uint8V(v, fastpathCheckNilTrue, e) + case *map[int16]uint8: + fastpathTV.EncMapInt16Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint16: + fastpathTV.EncMapInt16Uint16V(v, fastpathCheckNilTrue, e) + case *map[int16]uint16: + fastpathTV.EncMapInt16Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint32: + fastpathTV.EncMapInt16Uint32V(v, fastpathCheckNilTrue, e) + case *map[int16]uint32: + fastpathTV.EncMapInt16Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int16]uint64: + fastpathTV.EncMapInt16Uint64V(v, fastpathCheckNilTrue, e) + case *map[int16]uint64: + fastpathTV.EncMapInt16Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int16]uintptr: + fastpathTV.EncMapInt16UintptrV(v, fastpathCheckNilTrue, e) + case *map[int16]uintptr: + fastpathTV.EncMapInt16UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int16]int: + fastpathTV.EncMapInt16IntV(v, fastpathCheckNilTrue, e) + case *map[int16]int: + fastpathTV.EncMapInt16IntV(*v, fastpathCheckNilTrue, e) + + case map[int16]int8: + fastpathTV.EncMapInt16Int8V(v, fastpathCheckNilTrue, e) + case *map[int16]int8: + fastpathTV.EncMapInt16Int8V(*v, fastpathCheckNilTrue, e) + + case map[int16]int16: + fastpathTV.EncMapInt16Int16V(v, fastpathCheckNilTrue, e) + case *map[int16]int16: + fastpathTV.EncMapInt16Int16V(*v, fastpathCheckNilTrue, e) + + case map[int16]int32: + fastpathTV.EncMapInt16Int32V(v, fastpathCheckNilTrue, e) + case *map[int16]int32: + fastpathTV.EncMapInt16Int32V(*v, fastpathCheckNilTrue, e) + + case map[int16]int64: + fastpathTV.EncMapInt16Int64V(v, fastpathCheckNilTrue, e) + case *map[int16]int64: + fastpathTV.EncMapInt16Int64V(*v, fastpathCheckNilTrue, e) + + case map[int16]float32: + fastpathTV.EncMapInt16Float32V(v, fastpathCheckNilTrue, e) + case *map[int16]float32: + fastpathTV.EncMapInt16Float32V(*v, fastpathCheckNilTrue, e) + + case map[int16]float64: + fastpathTV.EncMapInt16Float64V(v, fastpathCheckNilTrue, e) + case *map[int16]float64: + fastpathTV.EncMapInt16Float64V(*v, fastpathCheckNilTrue, e) + + case map[int16]bool: + fastpathTV.EncMapInt16BoolV(v, fastpathCheckNilTrue, e) + case *map[int16]bool: + fastpathTV.EncMapInt16BoolV(*v, fastpathCheckNilTrue, e) + + case map[int32]interface{}: + fastpathTV.EncMapInt32IntfV(v, fastpathCheckNilTrue, e) + case *map[int32]interface{}: + fastpathTV.EncMapInt32IntfV(*v, fastpathCheckNilTrue, e) + + case map[int32]string: + fastpathTV.EncMapInt32StringV(v, fastpathCheckNilTrue, e) + case *map[int32]string: + fastpathTV.EncMapInt32StringV(*v, fastpathCheckNilTrue, e) + + case map[int32]uint: + fastpathTV.EncMapInt32UintV(v, fastpathCheckNilTrue, e) + case *map[int32]uint: + fastpathTV.EncMapInt32UintV(*v, fastpathCheckNilTrue, e) + + case map[int32]uint8: + fastpathTV.EncMapInt32Uint8V(v, fastpathCheckNilTrue, e) + case *map[int32]uint8: + fastpathTV.EncMapInt32Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint16: + fastpathTV.EncMapInt32Uint16V(v, fastpathCheckNilTrue, e) + case *map[int32]uint16: + fastpathTV.EncMapInt32Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint32: + fastpathTV.EncMapInt32Uint32V(v, fastpathCheckNilTrue, e) + case *map[int32]uint32: + fastpathTV.EncMapInt32Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int32]uint64: + fastpathTV.EncMapInt32Uint64V(v, fastpathCheckNilTrue, e) + case *map[int32]uint64: + fastpathTV.EncMapInt32Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int32]uintptr: + fastpathTV.EncMapInt32UintptrV(v, fastpathCheckNilTrue, e) + case *map[int32]uintptr: + fastpathTV.EncMapInt32UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int32]int: + fastpathTV.EncMapInt32IntV(v, fastpathCheckNilTrue, e) + case *map[int32]int: + fastpathTV.EncMapInt32IntV(*v, fastpathCheckNilTrue, e) + + case map[int32]int8: + fastpathTV.EncMapInt32Int8V(v, fastpathCheckNilTrue, e) + case *map[int32]int8: + fastpathTV.EncMapInt32Int8V(*v, fastpathCheckNilTrue, e) + + case map[int32]int16: + fastpathTV.EncMapInt32Int16V(v, fastpathCheckNilTrue, e) + case *map[int32]int16: + fastpathTV.EncMapInt32Int16V(*v, fastpathCheckNilTrue, e) + + case map[int32]int32: + fastpathTV.EncMapInt32Int32V(v, fastpathCheckNilTrue, e) + case *map[int32]int32: + fastpathTV.EncMapInt32Int32V(*v, fastpathCheckNilTrue, e) + + case map[int32]int64: + fastpathTV.EncMapInt32Int64V(v, fastpathCheckNilTrue, e) + case *map[int32]int64: + fastpathTV.EncMapInt32Int64V(*v, fastpathCheckNilTrue, e) + + case map[int32]float32: + fastpathTV.EncMapInt32Float32V(v, fastpathCheckNilTrue, e) + case *map[int32]float32: + fastpathTV.EncMapInt32Float32V(*v, fastpathCheckNilTrue, e) + + case map[int32]float64: + fastpathTV.EncMapInt32Float64V(v, fastpathCheckNilTrue, e) + case *map[int32]float64: + fastpathTV.EncMapInt32Float64V(*v, fastpathCheckNilTrue, e) + + case map[int32]bool: + fastpathTV.EncMapInt32BoolV(v, fastpathCheckNilTrue, e) + case *map[int32]bool: + fastpathTV.EncMapInt32BoolV(*v, fastpathCheckNilTrue, e) + + case map[int64]interface{}: + fastpathTV.EncMapInt64IntfV(v, fastpathCheckNilTrue, e) + case *map[int64]interface{}: + fastpathTV.EncMapInt64IntfV(*v, fastpathCheckNilTrue, e) + + case map[int64]string: + fastpathTV.EncMapInt64StringV(v, fastpathCheckNilTrue, e) + case *map[int64]string: + fastpathTV.EncMapInt64StringV(*v, fastpathCheckNilTrue, e) + + case map[int64]uint: + fastpathTV.EncMapInt64UintV(v, fastpathCheckNilTrue, e) + case *map[int64]uint: + fastpathTV.EncMapInt64UintV(*v, fastpathCheckNilTrue, e) + + case map[int64]uint8: + fastpathTV.EncMapInt64Uint8V(v, fastpathCheckNilTrue, e) + case *map[int64]uint8: + fastpathTV.EncMapInt64Uint8V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint16: + fastpathTV.EncMapInt64Uint16V(v, fastpathCheckNilTrue, e) + case *map[int64]uint16: + fastpathTV.EncMapInt64Uint16V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint32: + fastpathTV.EncMapInt64Uint32V(v, fastpathCheckNilTrue, e) + case *map[int64]uint32: + fastpathTV.EncMapInt64Uint32V(*v, fastpathCheckNilTrue, e) + + case map[int64]uint64: + fastpathTV.EncMapInt64Uint64V(v, fastpathCheckNilTrue, e) + case *map[int64]uint64: + fastpathTV.EncMapInt64Uint64V(*v, fastpathCheckNilTrue, e) + + case map[int64]uintptr: + fastpathTV.EncMapInt64UintptrV(v, fastpathCheckNilTrue, e) + case *map[int64]uintptr: + fastpathTV.EncMapInt64UintptrV(*v, fastpathCheckNilTrue, e) + + case map[int64]int: + fastpathTV.EncMapInt64IntV(v, fastpathCheckNilTrue, e) + case *map[int64]int: + fastpathTV.EncMapInt64IntV(*v, fastpathCheckNilTrue, e) + + case map[int64]int8: + fastpathTV.EncMapInt64Int8V(v, fastpathCheckNilTrue, e) + case *map[int64]int8: + fastpathTV.EncMapInt64Int8V(*v, fastpathCheckNilTrue, e) + + case map[int64]int16: + fastpathTV.EncMapInt64Int16V(v, fastpathCheckNilTrue, e) + case *map[int64]int16: + fastpathTV.EncMapInt64Int16V(*v, fastpathCheckNilTrue, e) + + case map[int64]int32: + fastpathTV.EncMapInt64Int32V(v, fastpathCheckNilTrue, e) + case *map[int64]int32: + fastpathTV.EncMapInt64Int32V(*v, fastpathCheckNilTrue, e) + + case map[int64]int64: + fastpathTV.EncMapInt64Int64V(v, fastpathCheckNilTrue, e) + case *map[int64]int64: + fastpathTV.EncMapInt64Int64V(*v, fastpathCheckNilTrue, e) + + case map[int64]float32: + fastpathTV.EncMapInt64Float32V(v, fastpathCheckNilTrue, e) + case *map[int64]float32: + fastpathTV.EncMapInt64Float32V(*v, fastpathCheckNilTrue, e) + + case map[int64]float64: + fastpathTV.EncMapInt64Float64V(v, fastpathCheckNilTrue, e) + case *map[int64]float64: + fastpathTV.EncMapInt64Float64V(*v, fastpathCheckNilTrue, e) + + case map[int64]bool: + fastpathTV.EncMapInt64BoolV(v, fastpathCheckNilTrue, e) + case *map[int64]bool: + fastpathTV.EncMapInt64BoolV(*v, fastpathCheckNilTrue, e) + + case map[bool]interface{}: + fastpathTV.EncMapBoolIntfV(v, fastpathCheckNilTrue, e) + case *map[bool]interface{}: + fastpathTV.EncMapBoolIntfV(*v, fastpathCheckNilTrue, e) + + case map[bool]string: + fastpathTV.EncMapBoolStringV(v, fastpathCheckNilTrue, e) + case *map[bool]string: + fastpathTV.EncMapBoolStringV(*v, fastpathCheckNilTrue, e) + + case map[bool]uint: + fastpathTV.EncMapBoolUintV(v, fastpathCheckNilTrue, e) + case *map[bool]uint: + fastpathTV.EncMapBoolUintV(*v, fastpathCheckNilTrue, e) + + case map[bool]uint8: + fastpathTV.EncMapBoolUint8V(v, fastpathCheckNilTrue, e) + case *map[bool]uint8: + fastpathTV.EncMapBoolUint8V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint16: + fastpathTV.EncMapBoolUint16V(v, fastpathCheckNilTrue, e) + case *map[bool]uint16: + fastpathTV.EncMapBoolUint16V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint32: + fastpathTV.EncMapBoolUint32V(v, fastpathCheckNilTrue, e) + case *map[bool]uint32: + fastpathTV.EncMapBoolUint32V(*v, fastpathCheckNilTrue, e) + + case map[bool]uint64: + fastpathTV.EncMapBoolUint64V(v, fastpathCheckNilTrue, e) + case *map[bool]uint64: + fastpathTV.EncMapBoolUint64V(*v, fastpathCheckNilTrue, e) + + case map[bool]uintptr: + fastpathTV.EncMapBoolUintptrV(v, fastpathCheckNilTrue, e) + case *map[bool]uintptr: + fastpathTV.EncMapBoolUintptrV(*v, fastpathCheckNilTrue, e) + + case map[bool]int: + fastpathTV.EncMapBoolIntV(v, fastpathCheckNilTrue, e) + case *map[bool]int: + fastpathTV.EncMapBoolIntV(*v, fastpathCheckNilTrue, e) + + case map[bool]int8: + fastpathTV.EncMapBoolInt8V(v, fastpathCheckNilTrue, e) + case *map[bool]int8: + fastpathTV.EncMapBoolInt8V(*v, fastpathCheckNilTrue, e) + + case map[bool]int16: + fastpathTV.EncMapBoolInt16V(v, fastpathCheckNilTrue, e) + case *map[bool]int16: + fastpathTV.EncMapBoolInt16V(*v, fastpathCheckNilTrue, e) + + case map[bool]int32: + fastpathTV.EncMapBoolInt32V(v, fastpathCheckNilTrue, e) + case *map[bool]int32: + fastpathTV.EncMapBoolInt32V(*v, fastpathCheckNilTrue, e) + + case map[bool]int64: + fastpathTV.EncMapBoolInt64V(v, fastpathCheckNilTrue, e) + case *map[bool]int64: + fastpathTV.EncMapBoolInt64V(*v, fastpathCheckNilTrue, e) + + case map[bool]float32: + fastpathTV.EncMapBoolFloat32V(v, fastpathCheckNilTrue, e) + case *map[bool]float32: + fastpathTV.EncMapBoolFloat32V(*v, fastpathCheckNilTrue, e) + + case map[bool]float64: + fastpathTV.EncMapBoolFloat64V(v, fastpathCheckNilTrue, e) + case *map[bool]float64: + fastpathTV.EncMapBoolFloat64V(*v, fastpathCheckNilTrue, e) + + case map[bool]bool: + fastpathTV.EncMapBoolBoolV(v, fastpathCheckNilTrue, e) + case *map[bool]bool: + fastpathTV.EncMapBoolBoolV(*v, fastpathCheckNilTrue, e) + + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +// -- -- fast path functions + +func (f *encFnInfo) fastpathEncSliceIntfR(rv reflect.Value) { + fastpathTV.EncSliceIntfV(rv.Interface().([]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceIntfV(v []interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + e.encode(v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceStringR(rv reflect.Value) { + fastpathTV.EncSliceStringV(rv.Interface().([]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceStringV(v []string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeString(c_UTF8, v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceFloat32R(rv reflect.Value) { + fastpathTV.EncSliceFloat32V(rv.Interface().([]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceFloat32V(v []float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeFloat32(v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceFloat64R(rv reflect.Value) { + fastpathTV.EncSliceFloat64V(rv.Interface().([]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceFloat64V(v []float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeFloat64(v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceUintR(rv reflect.Value) { + fastpathTV.EncSliceUintV(rv.Interface().([]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceUintV(v []uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeUint(uint64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceUint16R(rv reflect.Value) { + fastpathTV.EncSliceUint16V(rv.Interface().([]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceUint16V(v []uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeUint(uint64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceUint32R(rv reflect.Value) { + fastpathTV.EncSliceUint32V(rv.Interface().([]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceUint32V(v []uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeUint(uint64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceUint64R(rv reflect.Value) { + fastpathTV.EncSliceUint64V(rv.Interface().([]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceUint64V(v []uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeUint(uint64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceUintptrR(rv reflect.Value) { + fastpathTV.EncSliceUintptrV(rv.Interface().([]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceUintptrV(v []uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + e.encode(v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceIntR(rv reflect.Value) { + fastpathTV.EncSliceIntV(rv.Interface().([]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceIntV(v []int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeInt(int64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceInt8R(rv reflect.Value) { + fastpathTV.EncSliceInt8V(rv.Interface().([]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceInt8V(v []int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeInt(int64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceInt16R(rv reflect.Value) { + fastpathTV.EncSliceInt16V(rv.Interface().([]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceInt16V(v []int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeInt(int64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceInt32R(rv reflect.Value) { + fastpathTV.EncSliceInt32V(rv.Interface().([]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceInt32V(v []int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeInt(int64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceInt64R(rv reflect.Value) { + fastpathTV.EncSliceInt64V(rv.Interface().([]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceInt64V(v []int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeInt(int64(v2)) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncSliceBoolR(rv reflect.Value) { + fastpathTV.EncSliceBoolV(rv.Interface().([]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncSliceBoolV(v []bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { + cr.sendContainerState(containerArrayElem) + } + ee.EncodeBool(v2) + } + if cr != nil { + cr.sendContainerState(containerArrayEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfIntfR(rv reflect.Value) { + fastpathTV.EncMapIntfIntfV(rv.Interface().(map[interface{}]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfStringR(rv reflect.Value) { + fastpathTV.EncMapIntfStringV(rv.Interface().(map[interface{}]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfStringV(v map[interface{}]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUintR(rv reflect.Value) { + fastpathTV.EncMapIntfUintV(rv.Interface().(map[interface{}]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUintV(v map[interface{}]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUint8R(rv reflect.Value) { + fastpathTV.EncMapIntfUint8V(rv.Interface().(map[interface{}]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUint8V(v map[interface{}]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUint16R(rv reflect.Value) { + fastpathTV.EncMapIntfUint16V(rv.Interface().(map[interface{}]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUint16V(v map[interface{}]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUint32R(rv reflect.Value) { + fastpathTV.EncMapIntfUint32V(rv.Interface().(map[interface{}]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUint32V(v map[interface{}]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUint64R(rv reflect.Value) { + fastpathTV.EncMapIntfUint64V(rv.Interface().(map[interface{}]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUint64V(v map[interface{}]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfUintptrR(rv reflect.Value) { + fastpathTV.EncMapIntfUintptrV(rv.Interface().(map[interface{}]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfIntR(rv reflect.Value) { + fastpathTV.EncMapIntfIntV(rv.Interface().(map[interface{}]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfIntV(v map[interface{}]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfInt8R(rv reflect.Value) { + fastpathTV.EncMapIntfInt8V(rv.Interface().(map[interface{}]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfInt8V(v map[interface{}]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfInt16R(rv reflect.Value) { + fastpathTV.EncMapIntfInt16V(rv.Interface().(map[interface{}]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfInt16V(v map[interface{}]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfInt32R(rv reflect.Value) { + fastpathTV.EncMapIntfInt32V(rv.Interface().(map[interface{}]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfInt32V(v map[interface{}]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfInt64R(rv reflect.Value) { + fastpathTV.EncMapIntfInt64V(rv.Interface().(map[interface{}]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfInt64V(v map[interface{}]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfFloat32R(rv reflect.Value) { + fastpathTV.EncMapIntfFloat32V(rv.Interface().(map[interface{}]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfFloat32V(v map[interface{}]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfFloat64R(rv reflect.Value) { + fastpathTV.EncMapIntfFloat64V(rv.Interface().(map[interface{}]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfFloat64V(v map[interface{}]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntfBoolR(rv reflect.Value) { + fastpathTV.EncMapIntfBoolV(rv.Interface().(map[interface{}]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntfBoolV(v map[interface{}]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.asis(v2[j].v) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[v2[j].i]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringIntfR(rv reflect.Value) { + fastpathTV.EncMapStringIntfV(rv.Interface().(map[string]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringIntfV(v map[string]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringStringR(rv reflect.Value) { + fastpathTV.EncMapStringStringV(rv.Interface().(map[string]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringStringV(v map[string]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUintR(rv reflect.Value) { + fastpathTV.EncMapStringUintV(rv.Interface().(map[string]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUintV(v map[string]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUint8R(rv reflect.Value) { + fastpathTV.EncMapStringUint8V(rv.Interface().(map[string]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUint8V(v map[string]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUint16R(rv reflect.Value) { + fastpathTV.EncMapStringUint16V(rv.Interface().(map[string]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUint16V(v map[string]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUint32R(rv reflect.Value) { + fastpathTV.EncMapStringUint32V(rv.Interface().(map[string]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUint32V(v map[string]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUint64R(rv reflect.Value) { + fastpathTV.EncMapStringUint64V(rv.Interface().(map[string]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUint64V(v map[string]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringUintptrR(rv reflect.Value) { + fastpathTV.EncMapStringUintptrV(rv.Interface().(map[string]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringUintptrV(v map[string]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringIntR(rv reflect.Value) { + fastpathTV.EncMapStringIntV(rv.Interface().(map[string]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringIntV(v map[string]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringInt8R(rv reflect.Value) { + fastpathTV.EncMapStringInt8V(rv.Interface().(map[string]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringInt8V(v map[string]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringInt16R(rv reflect.Value) { + fastpathTV.EncMapStringInt16V(rv.Interface().(map[string]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringInt16V(v map[string]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringInt32R(rv reflect.Value) { + fastpathTV.EncMapStringInt32V(rv.Interface().(map[string]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringInt32V(v map[string]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringInt64R(rv reflect.Value) { + fastpathTV.EncMapStringInt64V(rv.Interface().(map[string]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringInt64V(v map[string]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[string(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringFloat32R(rv reflect.Value) { + fastpathTV.EncMapStringFloat32V(rv.Interface().(map[string]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringFloat32V(v map[string]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringFloat64R(rv reflect.Value) { + fastpathTV.EncMapStringFloat64V(rv.Interface().(map[string]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringFloat64V(v map[string]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapStringBoolR(rv reflect.Value) { + fastpathTV.EncMapStringBoolV(rv.Interface().(map[string]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapStringBoolV(v map[string]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + if e.h.Canonical { + v2 := make([]string, len(v)) + var i int + for k, _ := range v { + v2[i] = string(k) + i++ + } + sort.Sort(stringSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[string(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32IntfR(rv reflect.Value) { + fastpathTV.EncMapFloat32IntfV(rv.Interface().(map[float32]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32IntfV(v map[float32]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32StringR(rv reflect.Value) { + fastpathTV.EncMapFloat32StringV(rv.Interface().(map[float32]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32StringV(v map[float32]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32UintR(rv reflect.Value) { + fastpathTV.EncMapFloat32UintV(rv.Interface().(map[float32]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32UintV(v map[float32]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Uint8R(rv reflect.Value) { + fastpathTV.EncMapFloat32Uint8V(rv.Interface().(map[float32]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Uint8V(v map[float32]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Uint16R(rv reflect.Value) { + fastpathTV.EncMapFloat32Uint16V(rv.Interface().(map[float32]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Uint16V(v map[float32]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Uint32R(rv reflect.Value) { + fastpathTV.EncMapFloat32Uint32V(rv.Interface().(map[float32]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Uint32V(v map[float32]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Uint64R(rv reflect.Value) { + fastpathTV.EncMapFloat32Uint64V(rv.Interface().(map[float32]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Uint64V(v map[float32]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32UintptrR(rv reflect.Value) { + fastpathTV.EncMapFloat32UintptrV(rv.Interface().(map[float32]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32IntR(rv reflect.Value) { + fastpathTV.EncMapFloat32IntV(rv.Interface().(map[float32]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32IntV(v map[float32]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Int8R(rv reflect.Value) { + fastpathTV.EncMapFloat32Int8V(rv.Interface().(map[float32]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Int8V(v map[float32]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Int16R(rv reflect.Value) { + fastpathTV.EncMapFloat32Int16V(rv.Interface().(map[float32]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Int16V(v map[float32]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Int32R(rv reflect.Value) { + fastpathTV.EncMapFloat32Int32V(rv.Interface().(map[float32]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Int32V(v map[float32]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Int64R(rv reflect.Value) { + fastpathTV.EncMapFloat32Int64V(rv.Interface().(map[float32]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Int64V(v map[float32]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Float32R(rv reflect.Value) { + fastpathTV.EncMapFloat32Float32V(rv.Interface().(map[float32]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Float32V(v map[float32]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32Float64R(rv reflect.Value) { + fastpathTV.EncMapFloat32Float64V(rv.Interface().(map[float32]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32Float64V(v map[float32]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat32BoolR(rv reflect.Value) { + fastpathTV.EncMapFloat32BoolV(rv.Interface().(map[float32]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat32BoolV(v map[float32]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(float32(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[float32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat32(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64IntfR(rv reflect.Value) { + fastpathTV.EncMapFloat64IntfV(rv.Interface().(map[float64]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64IntfV(v map[float64]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64StringR(rv reflect.Value) { + fastpathTV.EncMapFloat64StringV(rv.Interface().(map[float64]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64StringV(v map[float64]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64UintR(rv reflect.Value) { + fastpathTV.EncMapFloat64UintV(rv.Interface().(map[float64]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64UintV(v map[float64]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Uint8R(rv reflect.Value) { + fastpathTV.EncMapFloat64Uint8V(rv.Interface().(map[float64]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Uint8V(v map[float64]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Uint16R(rv reflect.Value) { + fastpathTV.EncMapFloat64Uint16V(rv.Interface().(map[float64]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Uint16V(v map[float64]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Uint32R(rv reflect.Value) { + fastpathTV.EncMapFloat64Uint32V(rv.Interface().(map[float64]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Uint32V(v map[float64]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Uint64R(rv reflect.Value) { + fastpathTV.EncMapFloat64Uint64V(rv.Interface().(map[float64]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Uint64V(v map[float64]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64UintptrR(rv reflect.Value) { + fastpathTV.EncMapFloat64UintptrV(rv.Interface().(map[float64]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64IntR(rv reflect.Value) { + fastpathTV.EncMapFloat64IntV(rv.Interface().(map[float64]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64IntV(v map[float64]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Int8R(rv reflect.Value) { + fastpathTV.EncMapFloat64Int8V(rv.Interface().(map[float64]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Int8V(v map[float64]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Int16R(rv reflect.Value) { + fastpathTV.EncMapFloat64Int16V(rv.Interface().(map[float64]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Int16V(v map[float64]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Int32R(rv reflect.Value) { + fastpathTV.EncMapFloat64Int32V(rv.Interface().(map[float64]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Int32V(v map[float64]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Int64R(rv reflect.Value) { + fastpathTV.EncMapFloat64Int64V(rv.Interface().(map[float64]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Int64V(v map[float64]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[float64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Float32R(rv reflect.Value) { + fastpathTV.EncMapFloat64Float32V(rv.Interface().(map[float64]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Float32V(v map[float64]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64Float64R(rv reflect.Value) { + fastpathTV.EncMapFloat64Float64V(rv.Interface().(map[float64]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64Float64V(v map[float64]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapFloat64BoolR(rv reflect.Value) { + fastpathTV.EncMapFloat64BoolV(rv.Interface().(map[float64]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapFloat64BoolV(v map[float64]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]float64, len(v)) + var i int + for k, _ := range v { + v2[i] = float64(k) + i++ + } + sort.Sort(floatSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(float64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[float64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeFloat64(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintIntfR(rv reflect.Value) { + fastpathTV.EncMapUintIntfV(rv.Interface().(map[uint]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintIntfV(v map[uint]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintStringR(rv reflect.Value) { + fastpathTV.EncMapUintStringV(rv.Interface().(map[uint]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintStringV(v map[uint]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUintR(rv reflect.Value) { + fastpathTV.EncMapUintUintV(rv.Interface().(map[uint]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUintV(v map[uint]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUint8R(rv reflect.Value) { + fastpathTV.EncMapUintUint8V(rv.Interface().(map[uint]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUint8V(v map[uint]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUint16R(rv reflect.Value) { + fastpathTV.EncMapUintUint16V(rv.Interface().(map[uint]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUint16V(v map[uint]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUint32R(rv reflect.Value) { + fastpathTV.EncMapUintUint32V(rv.Interface().(map[uint]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUint32V(v map[uint]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUint64R(rv reflect.Value) { + fastpathTV.EncMapUintUint64V(rv.Interface().(map[uint]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUint64V(v map[uint]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintUintptrR(rv reflect.Value) { + fastpathTV.EncMapUintUintptrV(rv.Interface().(map[uint]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintUintptrV(v map[uint]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintIntR(rv reflect.Value) { + fastpathTV.EncMapUintIntV(rv.Interface().(map[uint]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintIntV(v map[uint]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintInt8R(rv reflect.Value) { + fastpathTV.EncMapUintInt8V(rv.Interface().(map[uint]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintInt8V(v map[uint]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintInt16R(rv reflect.Value) { + fastpathTV.EncMapUintInt16V(rv.Interface().(map[uint]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintInt16V(v map[uint]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintInt32R(rv reflect.Value) { + fastpathTV.EncMapUintInt32V(rv.Interface().(map[uint]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintInt32V(v map[uint]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintInt64R(rv reflect.Value) { + fastpathTV.EncMapUintInt64V(rv.Interface().(map[uint]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintInt64V(v map[uint]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintFloat32R(rv reflect.Value) { + fastpathTV.EncMapUintFloat32V(rv.Interface().(map[uint]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintFloat32V(v map[uint]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintFloat64R(rv reflect.Value) { + fastpathTV.EncMapUintFloat64V(rv.Interface().(map[uint]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintFloat64V(v map[uint]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintBoolR(rv reflect.Value) { + fastpathTV.EncMapUintBoolV(rv.Interface().(map[uint]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintBoolV(v map[uint]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uint(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8IntfR(rv reflect.Value) { + fastpathTV.EncMapUint8IntfV(rv.Interface().(map[uint8]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8IntfV(v map[uint8]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8StringR(rv reflect.Value) { + fastpathTV.EncMapUint8StringV(rv.Interface().(map[uint8]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8StringV(v map[uint8]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8UintR(rv reflect.Value) { + fastpathTV.EncMapUint8UintV(rv.Interface().(map[uint8]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8UintV(v map[uint8]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Uint8R(rv reflect.Value) { + fastpathTV.EncMapUint8Uint8V(rv.Interface().(map[uint8]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Uint8V(v map[uint8]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Uint16R(rv reflect.Value) { + fastpathTV.EncMapUint8Uint16V(rv.Interface().(map[uint8]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Uint16V(v map[uint8]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Uint32R(rv reflect.Value) { + fastpathTV.EncMapUint8Uint32V(rv.Interface().(map[uint8]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Uint32V(v map[uint8]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Uint64R(rv reflect.Value) { + fastpathTV.EncMapUint8Uint64V(rv.Interface().(map[uint8]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Uint64V(v map[uint8]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8UintptrR(rv reflect.Value) { + fastpathTV.EncMapUint8UintptrV(rv.Interface().(map[uint8]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8IntR(rv reflect.Value) { + fastpathTV.EncMapUint8IntV(rv.Interface().(map[uint8]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8IntV(v map[uint8]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Int8R(rv reflect.Value) { + fastpathTV.EncMapUint8Int8V(rv.Interface().(map[uint8]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Int8V(v map[uint8]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Int16R(rv reflect.Value) { + fastpathTV.EncMapUint8Int16V(rv.Interface().(map[uint8]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Int16V(v map[uint8]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Int32R(rv reflect.Value) { + fastpathTV.EncMapUint8Int32V(rv.Interface().(map[uint8]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Int32V(v map[uint8]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Int64R(rv reflect.Value) { + fastpathTV.EncMapUint8Int64V(rv.Interface().(map[uint8]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Int64V(v map[uint8]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Float32R(rv reflect.Value) { + fastpathTV.EncMapUint8Float32V(rv.Interface().(map[uint8]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Float32V(v map[uint8]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8Float64R(rv reflect.Value) { + fastpathTV.EncMapUint8Float64V(rv.Interface().(map[uint8]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8Float64V(v map[uint8]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint8BoolR(rv reflect.Value) { + fastpathTV.EncMapUint8BoolV(rv.Interface().(map[uint8]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint8BoolV(v map[uint8]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uint8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16IntfR(rv reflect.Value) { + fastpathTV.EncMapUint16IntfV(rv.Interface().(map[uint16]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16IntfV(v map[uint16]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16StringR(rv reflect.Value) { + fastpathTV.EncMapUint16StringV(rv.Interface().(map[uint16]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16StringV(v map[uint16]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16UintR(rv reflect.Value) { + fastpathTV.EncMapUint16UintV(rv.Interface().(map[uint16]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16UintV(v map[uint16]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Uint8R(rv reflect.Value) { + fastpathTV.EncMapUint16Uint8V(rv.Interface().(map[uint16]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Uint8V(v map[uint16]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Uint16R(rv reflect.Value) { + fastpathTV.EncMapUint16Uint16V(rv.Interface().(map[uint16]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Uint16V(v map[uint16]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Uint32R(rv reflect.Value) { + fastpathTV.EncMapUint16Uint32V(rv.Interface().(map[uint16]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Uint32V(v map[uint16]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Uint64R(rv reflect.Value) { + fastpathTV.EncMapUint16Uint64V(rv.Interface().(map[uint16]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Uint64V(v map[uint16]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16UintptrR(rv reflect.Value) { + fastpathTV.EncMapUint16UintptrV(rv.Interface().(map[uint16]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16IntR(rv reflect.Value) { + fastpathTV.EncMapUint16IntV(rv.Interface().(map[uint16]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16IntV(v map[uint16]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Int8R(rv reflect.Value) { + fastpathTV.EncMapUint16Int8V(rv.Interface().(map[uint16]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Int8V(v map[uint16]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Int16R(rv reflect.Value) { + fastpathTV.EncMapUint16Int16V(rv.Interface().(map[uint16]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Int16V(v map[uint16]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Int32R(rv reflect.Value) { + fastpathTV.EncMapUint16Int32V(rv.Interface().(map[uint16]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Int32V(v map[uint16]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Int64R(rv reflect.Value) { + fastpathTV.EncMapUint16Int64V(rv.Interface().(map[uint16]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Int64V(v map[uint16]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Float32R(rv reflect.Value) { + fastpathTV.EncMapUint16Float32V(rv.Interface().(map[uint16]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Float32V(v map[uint16]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16Float64R(rv reflect.Value) { + fastpathTV.EncMapUint16Float64V(rv.Interface().(map[uint16]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16Float64V(v map[uint16]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint16BoolR(rv reflect.Value) { + fastpathTV.EncMapUint16BoolV(rv.Interface().(map[uint16]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint16BoolV(v map[uint16]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uint16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32IntfR(rv reflect.Value) { + fastpathTV.EncMapUint32IntfV(rv.Interface().(map[uint32]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32IntfV(v map[uint32]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32StringR(rv reflect.Value) { + fastpathTV.EncMapUint32StringV(rv.Interface().(map[uint32]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32StringV(v map[uint32]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32UintR(rv reflect.Value) { + fastpathTV.EncMapUint32UintV(rv.Interface().(map[uint32]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32UintV(v map[uint32]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Uint8R(rv reflect.Value) { + fastpathTV.EncMapUint32Uint8V(rv.Interface().(map[uint32]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Uint8V(v map[uint32]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Uint16R(rv reflect.Value) { + fastpathTV.EncMapUint32Uint16V(rv.Interface().(map[uint32]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Uint16V(v map[uint32]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Uint32R(rv reflect.Value) { + fastpathTV.EncMapUint32Uint32V(rv.Interface().(map[uint32]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Uint32V(v map[uint32]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Uint64R(rv reflect.Value) { + fastpathTV.EncMapUint32Uint64V(rv.Interface().(map[uint32]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Uint64V(v map[uint32]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32UintptrR(rv reflect.Value) { + fastpathTV.EncMapUint32UintptrV(rv.Interface().(map[uint32]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32IntR(rv reflect.Value) { + fastpathTV.EncMapUint32IntV(rv.Interface().(map[uint32]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32IntV(v map[uint32]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Int8R(rv reflect.Value) { + fastpathTV.EncMapUint32Int8V(rv.Interface().(map[uint32]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Int8V(v map[uint32]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Int16R(rv reflect.Value) { + fastpathTV.EncMapUint32Int16V(rv.Interface().(map[uint32]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Int16V(v map[uint32]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Int32R(rv reflect.Value) { + fastpathTV.EncMapUint32Int32V(rv.Interface().(map[uint32]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Int32V(v map[uint32]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Int64R(rv reflect.Value) { + fastpathTV.EncMapUint32Int64V(rv.Interface().(map[uint32]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Int64V(v map[uint32]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Float32R(rv reflect.Value) { + fastpathTV.EncMapUint32Float32V(rv.Interface().(map[uint32]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Float32V(v map[uint32]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32Float64R(rv reflect.Value) { + fastpathTV.EncMapUint32Float64V(rv.Interface().(map[uint32]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32Float64V(v map[uint32]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint32BoolR(rv reflect.Value) { + fastpathTV.EncMapUint32BoolV(rv.Interface().(map[uint32]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint32BoolV(v map[uint32]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uint32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64IntfR(rv reflect.Value) { + fastpathTV.EncMapUint64IntfV(rv.Interface().(map[uint64]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64IntfV(v map[uint64]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64StringR(rv reflect.Value) { + fastpathTV.EncMapUint64StringV(rv.Interface().(map[uint64]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64StringV(v map[uint64]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64UintR(rv reflect.Value) { + fastpathTV.EncMapUint64UintV(rv.Interface().(map[uint64]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64UintV(v map[uint64]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Uint8R(rv reflect.Value) { + fastpathTV.EncMapUint64Uint8V(rv.Interface().(map[uint64]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Uint8V(v map[uint64]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Uint16R(rv reflect.Value) { + fastpathTV.EncMapUint64Uint16V(rv.Interface().(map[uint64]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Uint16V(v map[uint64]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Uint32R(rv reflect.Value) { + fastpathTV.EncMapUint64Uint32V(rv.Interface().(map[uint64]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Uint32V(v map[uint64]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Uint64R(rv reflect.Value) { + fastpathTV.EncMapUint64Uint64V(rv.Interface().(map[uint64]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Uint64V(v map[uint64]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64UintptrR(rv reflect.Value) { + fastpathTV.EncMapUint64UintptrV(rv.Interface().(map[uint64]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64IntR(rv reflect.Value) { + fastpathTV.EncMapUint64IntV(rv.Interface().(map[uint64]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64IntV(v map[uint64]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Int8R(rv reflect.Value) { + fastpathTV.EncMapUint64Int8V(rv.Interface().(map[uint64]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Int8V(v map[uint64]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Int16R(rv reflect.Value) { + fastpathTV.EncMapUint64Int16V(rv.Interface().(map[uint64]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Int16V(v map[uint64]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Int32R(rv reflect.Value) { + fastpathTV.EncMapUint64Int32V(rv.Interface().(map[uint64]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Int32V(v map[uint64]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Int64R(rv reflect.Value) { + fastpathTV.EncMapUint64Int64V(rv.Interface().(map[uint64]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Int64V(v map[uint64]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uint64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Float32R(rv reflect.Value) { + fastpathTV.EncMapUint64Float32V(rv.Interface().(map[uint64]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Float32V(v map[uint64]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64Float64R(rv reflect.Value) { + fastpathTV.EncMapUint64Float64V(rv.Interface().(map[uint64]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64Float64V(v map[uint64]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUint64BoolR(rv reflect.Value) { + fastpathTV.EncMapUint64BoolV(rv.Interface().(map[uint64]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUint64BoolV(v map[uint64]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(uint64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uint64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeUint(uint64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrIntfR(rv reflect.Value) { + fastpathTV.EncMapUintptrIntfV(rv.Interface().(map[uintptr]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrStringR(rv reflect.Value) { + fastpathTV.EncMapUintptrStringV(rv.Interface().(map[uintptr]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrStringV(v map[uintptr]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUintR(rv reflect.Value) { + fastpathTV.EncMapUintptrUintV(rv.Interface().(map[uintptr]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUintV(v map[uintptr]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUint8R(rv reflect.Value) { + fastpathTV.EncMapUintptrUint8V(rv.Interface().(map[uintptr]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUint16R(rv reflect.Value) { + fastpathTV.EncMapUintptrUint16V(rv.Interface().(map[uintptr]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUint32R(rv reflect.Value) { + fastpathTV.EncMapUintptrUint32V(rv.Interface().(map[uintptr]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUint64R(rv reflect.Value) { + fastpathTV.EncMapUintptrUint64V(rv.Interface().(map[uintptr]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrUintptrR(rv reflect.Value) { + fastpathTV.EncMapUintptrUintptrV(rv.Interface().(map[uintptr]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrIntR(rv reflect.Value) { + fastpathTV.EncMapUintptrIntV(rv.Interface().(map[uintptr]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrIntV(v map[uintptr]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrInt8R(rv reflect.Value) { + fastpathTV.EncMapUintptrInt8V(rv.Interface().(map[uintptr]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrInt8V(v map[uintptr]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrInt16R(rv reflect.Value) { + fastpathTV.EncMapUintptrInt16V(rv.Interface().(map[uintptr]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrInt16V(v map[uintptr]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrInt32R(rv reflect.Value) { + fastpathTV.EncMapUintptrInt32V(rv.Interface().(map[uintptr]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrInt32V(v map[uintptr]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrInt64R(rv reflect.Value) { + fastpathTV.EncMapUintptrInt64V(rv.Interface().(map[uintptr]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrInt64V(v map[uintptr]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[uintptr(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrFloat32R(rv reflect.Value) { + fastpathTV.EncMapUintptrFloat32V(rv.Interface().(map[uintptr]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrFloat64R(rv reflect.Value) { + fastpathTV.EncMapUintptrFloat64V(rv.Interface().(map[uintptr]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapUintptrBoolR(rv reflect.Value) { + fastpathTV.EncMapUintptrBoolV(rv.Interface().(map[uintptr]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapUintptrBoolV(v map[uintptr]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]uint64, len(v)) + var i int + for k, _ := range v { + v2[i] = uint64(k) + i++ + } + sort.Sort(uintSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(uintptr(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[uintptr(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + e.encode(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntIntfR(rv reflect.Value) { + fastpathTV.EncMapIntIntfV(rv.Interface().(map[int]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntIntfV(v map[int]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntStringR(rv reflect.Value) { + fastpathTV.EncMapIntStringV(rv.Interface().(map[int]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntStringV(v map[int]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUintR(rv reflect.Value) { + fastpathTV.EncMapIntUintV(rv.Interface().(map[int]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUintV(v map[int]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUint8R(rv reflect.Value) { + fastpathTV.EncMapIntUint8V(rv.Interface().(map[int]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUint8V(v map[int]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUint16R(rv reflect.Value) { + fastpathTV.EncMapIntUint16V(rv.Interface().(map[int]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUint16V(v map[int]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUint32R(rv reflect.Value) { + fastpathTV.EncMapIntUint32V(rv.Interface().(map[int]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUint32V(v map[int]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUint64R(rv reflect.Value) { + fastpathTV.EncMapIntUint64V(rv.Interface().(map[int]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUint64V(v map[int]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntUintptrR(rv reflect.Value) { + fastpathTV.EncMapIntUintptrV(rv.Interface().(map[int]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntUintptrV(v map[int]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntIntR(rv reflect.Value) { + fastpathTV.EncMapIntIntV(rv.Interface().(map[int]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntIntV(v map[int]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntInt8R(rv reflect.Value) { + fastpathTV.EncMapIntInt8V(rv.Interface().(map[int]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntInt8V(v map[int]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntInt16R(rv reflect.Value) { + fastpathTV.EncMapIntInt16V(rv.Interface().(map[int]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntInt16V(v map[int]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntInt32R(rv reflect.Value) { + fastpathTV.EncMapIntInt32V(rv.Interface().(map[int]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntInt32V(v map[int]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntInt64R(rv reflect.Value) { + fastpathTV.EncMapIntInt64V(rv.Interface().(map[int]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntInt64V(v map[int]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntFloat32R(rv reflect.Value) { + fastpathTV.EncMapIntFloat32V(rv.Interface().(map[int]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntFloat32V(v map[int]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntFloat64R(rv reflect.Value) { + fastpathTV.EncMapIntFloat64V(rv.Interface().(map[int]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntFloat64V(v map[int]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapIntBoolR(rv reflect.Value) { + fastpathTV.EncMapIntBoolV(rv.Interface().(map[int]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapIntBoolV(v map[int]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[int(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8IntfR(rv reflect.Value) { + fastpathTV.EncMapInt8IntfV(rv.Interface().(map[int8]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8IntfV(v map[int8]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8StringR(rv reflect.Value) { + fastpathTV.EncMapInt8StringV(rv.Interface().(map[int8]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8StringV(v map[int8]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8UintR(rv reflect.Value) { + fastpathTV.EncMapInt8UintV(rv.Interface().(map[int8]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8UintV(v map[int8]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Uint8R(rv reflect.Value) { + fastpathTV.EncMapInt8Uint8V(rv.Interface().(map[int8]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Uint8V(v map[int8]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Uint16R(rv reflect.Value) { + fastpathTV.EncMapInt8Uint16V(rv.Interface().(map[int8]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Uint16V(v map[int8]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Uint32R(rv reflect.Value) { + fastpathTV.EncMapInt8Uint32V(rv.Interface().(map[int8]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Uint32V(v map[int8]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Uint64R(rv reflect.Value) { + fastpathTV.EncMapInt8Uint64V(rv.Interface().(map[int8]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Uint64V(v map[int8]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8UintptrR(rv reflect.Value) { + fastpathTV.EncMapInt8UintptrV(rv.Interface().(map[int8]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8UintptrV(v map[int8]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8IntR(rv reflect.Value) { + fastpathTV.EncMapInt8IntV(rv.Interface().(map[int8]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8IntV(v map[int8]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Int8R(rv reflect.Value) { + fastpathTV.EncMapInt8Int8V(rv.Interface().(map[int8]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Int8V(v map[int8]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Int16R(rv reflect.Value) { + fastpathTV.EncMapInt8Int16V(rv.Interface().(map[int8]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Int16V(v map[int8]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Int32R(rv reflect.Value) { + fastpathTV.EncMapInt8Int32V(rv.Interface().(map[int8]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Int32V(v map[int8]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Int64R(rv reflect.Value) { + fastpathTV.EncMapInt8Int64V(rv.Interface().(map[int8]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Int64V(v map[int8]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int8(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Float32R(rv reflect.Value) { + fastpathTV.EncMapInt8Float32V(rv.Interface().(map[int8]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Float32V(v map[int8]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8Float64R(rv reflect.Value) { + fastpathTV.EncMapInt8Float64V(rv.Interface().(map[int8]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8Float64V(v map[int8]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt8BoolR(rv reflect.Value) { + fastpathTV.EncMapInt8BoolV(rv.Interface().(map[int8]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt8BoolV(v map[int8]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int8(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[int8(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16IntfR(rv reflect.Value) { + fastpathTV.EncMapInt16IntfV(rv.Interface().(map[int16]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16IntfV(v map[int16]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16StringR(rv reflect.Value) { + fastpathTV.EncMapInt16StringV(rv.Interface().(map[int16]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16StringV(v map[int16]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16UintR(rv reflect.Value) { + fastpathTV.EncMapInt16UintV(rv.Interface().(map[int16]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16UintV(v map[int16]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Uint8R(rv reflect.Value) { + fastpathTV.EncMapInt16Uint8V(rv.Interface().(map[int16]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Uint8V(v map[int16]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Uint16R(rv reflect.Value) { + fastpathTV.EncMapInt16Uint16V(rv.Interface().(map[int16]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Uint16V(v map[int16]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Uint32R(rv reflect.Value) { + fastpathTV.EncMapInt16Uint32V(rv.Interface().(map[int16]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Uint32V(v map[int16]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Uint64R(rv reflect.Value) { + fastpathTV.EncMapInt16Uint64V(rv.Interface().(map[int16]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Uint64V(v map[int16]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16UintptrR(rv reflect.Value) { + fastpathTV.EncMapInt16UintptrV(rv.Interface().(map[int16]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16UintptrV(v map[int16]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16IntR(rv reflect.Value) { + fastpathTV.EncMapInt16IntV(rv.Interface().(map[int16]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16IntV(v map[int16]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Int8R(rv reflect.Value) { + fastpathTV.EncMapInt16Int8V(rv.Interface().(map[int16]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Int8V(v map[int16]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Int16R(rv reflect.Value) { + fastpathTV.EncMapInt16Int16V(rv.Interface().(map[int16]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Int16V(v map[int16]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Int32R(rv reflect.Value) { + fastpathTV.EncMapInt16Int32V(rv.Interface().(map[int16]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Int32V(v map[int16]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Int64R(rv reflect.Value) { + fastpathTV.EncMapInt16Int64V(rv.Interface().(map[int16]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Int64V(v map[int16]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int16(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Float32R(rv reflect.Value) { + fastpathTV.EncMapInt16Float32V(rv.Interface().(map[int16]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Float32V(v map[int16]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16Float64R(rv reflect.Value) { + fastpathTV.EncMapInt16Float64V(rv.Interface().(map[int16]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16Float64V(v map[int16]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt16BoolR(rv reflect.Value) { + fastpathTV.EncMapInt16BoolV(rv.Interface().(map[int16]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt16BoolV(v map[int16]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int16(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[int16(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32IntfR(rv reflect.Value) { + fastpathTV.EncMapInt32IntfV(rv.Interface().(map[int32]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32IntfV(v map[int32]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32StringR(rv reflect.Value) { + fastpathTV.EncMapInt32StringV(rv.Interface().(map[int32]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32StringV(v map[int32]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32UintR(rv reflect.Value) { + fastpathTV.EncMapInt32UintV(rv.Interface().(map[int32]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32UintV(v map[int32]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Uint8R(rv reflect.Value) { + fastpathTV.EncMapInt32Uint8V(rv.Interface().(map[int32]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Uint8V(v map[int32]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Uint16R(rv reflect.Value) { + fastpathTV.EncMapInt32Uint16V(rv.Interface().(map[int32]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Uint16V(v map[int32]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Uint32R(rv reflect.Value) { + fastpathTV.EncMapInt32Uint32V(rv.Interface().(map[int32]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Uint32V(v map[int32]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Uint64R(rv reflect.Value) { + fastpathTV.EncMapInt32Uint64V(rv.Interface().(map[int32]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Uint64V(v map[int32]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32UintptrR(rv reflect.Value) { + fastpathTV.EncMapInt32UintptrV(rv.Interface().(map[int32]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32UintptrV(v map[int32]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32IntR(rv reflect.Value) { + fastpathTV.EncMapInt32IntV(rv.Interface().(map[int32]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32IntV(v map[int32]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Int8R(rv reflect.Value) { + fastpathTV.EncMapInt32Int8V(rv.Interface().(map[int32]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Int8V(v map[int32]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Int16R(rv reflect.Value) { + fastpathTV.EncMapInt32Int16V(rv.Interface().(map[int32]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Int16V(v map[int32]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Int32R(rv reflect.Value) { + fastpathTV.EncMapInt32Int32V(rv.Interface().(map[int32]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Int32V(v map[int32]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Int64R(rv reflect.Value) { + fastpathTV.EncMapInt32Int64V(rv.Interface().(map[int32]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Int64V(v map[int32]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int32(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Float32R(rv reflect.Value) { + fastpathTV.EncMapInt32Float32V(rv.Interface().(map[int32]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Float32V(v map[int32]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32Float64R(rv reflect.Value) { + fastpathTV.EncMapInt32Float64V(rv.Interface().(map[int32]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32Float64V(v map[int32]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt32BoolR(rv reflect.Value) { + fastpathTV.EncMapInt32BoolV(rv.Interface().(map[int32]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt32BoolV(v map[int32]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int32(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[int32(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64IntfR(rv reflect.Value) { + fastpathTV.EncMapInt64IntfV(rv.Interface().(map[int64]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64IntfV(v map[int64]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64StringR(rv reflect.Value) { + fastpathTV.EncMapInt64StringV(rv.Interface().(map[int64]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64StringV(v map[int64]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64UintR(rv reflect.Value) { + fastpathTV.EncMapInt64UintV(rv.Interface().(map[int64]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64UintV(v map[int64]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Uint8R(rv reflect.Value) { + fastpathTV.EncMapInt64Uint8V(rv.Interface().(map[int64]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Uint8V(v map[int64]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Uint16R(rv reflect.Value) { + fastpathTV.EncMapInt64Uint16V(rv.Interface().(map[int64]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Uint16V(v map[int64]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Uint32R(rv reflect.Value) { + fastpathTV.EncMapInt64Uint32V(rv.Interface().(map[int64]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Uint32V(v map[int64]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Uint64R(rv reflect.Value) { + fastpathTV.EncMapInt64Uint64V(rv.Interface().(map[int64]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Uint64V(v map[int64]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64UintptrR(rv reflect.Value) { + fastpathTV.EncMapInt64UintptrV(rv.Interface().(map[int64]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64UintptrV(v map[int64]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64IntR(rv reflect.Value) { + fastpathTV.EncMapInt64IntV(rv.Interface().(map[int64]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64IntV(v map[int64]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Int8R(rv reflect.Value) { + fastpathTV.EncMapInt64Int8V(rv.Interface().(map[int64]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Int8V(v map[int64]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Int16R(rv reflect.Value) { + fastpathTV.EncMapInt64Int16V(rv.Interface().(map[int64]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Int16V(v map[int64]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Int32R(rv reflect.Value) { + fastpathTV.EncMapInt64Int32V(rv.Interface().(map[int64]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Int32V(v map[int64]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Int64R(rv reflect.Value) { + fastpathTV.EncMapInt64Int64V(rv.Interface().(map[int64]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Int64V(v map[int64]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[int64(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Float32R(rv reflect.Value) { + fastpathTV.EncMapInt64Float32V(rv.Interface().(map[int64]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Float32V(v map[int64]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64Float64R(rv reflect.Value) { + fastpathTV.EncMapInt64Float64V(rv.Interface().(map[int64]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64Float64V(v map[int64]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapInt64BoolR(rv reflect.Value) { + fastpathTV.EncMapInt64BoolV(rv.Interface().(map[int64]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapInt64BoolV(v map[int64]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]int64, len(v)) + var i int + for k, _ := range v { + v2[i] = int64(k) + i++ + } + sort.Sort(intSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(int64(k2))) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[int64(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeInt(int64(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolIntfR(rv reflect.Value) { + fastpathTV.EncMapBoolIntfV(rv.Interface().(map[bool]interface{}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolIntfV(v map[bool]interface{}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolStringR(rv reflect.Value) { + fastpathTV.EncMapBoolStringV(rv.Interface().(map[bool]string), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolStringV(v map[bool]string, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeString(c_UTF8, v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUintR(rv reflect.Value) { + fastpathTV.EncMapBoolUintV(rv.Interface().(map[bool]uint), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUintV(v map[bool]uint, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUint8R(rv reflect.Value) { + fastpathTV.EncMapBoolUint8V(rv.Interface().(map[bool]uint8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUint8V(v map[bool]uint8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUint16R(rv reflect.Value) { + fastpathTV.EncMapBoolUint16V(rv.Interface().(map[bool]uint16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUint16V(v map[bool]uint16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUint32R(rv reflect.Value) { + fastpathTV.EncMapBoolUint32V(rv.Interface().(map[bool]uint32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUint32V(v map[bool]uint32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUint64R(rv reflect.Value) { + fastpathTV.EncMapBoolUint64V(rv.Interface().(map[bool]uint64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUint64V(v map[bool]uint64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeUint(uint64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolUintptrR(rv reflect.Value) { + fastpathTV.EncMapBoolUintptrV(rv.Interface().(map[bool]uintptr), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolUintptrV(v map[bool]uintptr, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + e.encode(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolIntR(rv reflect.Value) { + fastpathTV.EncMapBoolIntV(rv.Interface().(map[bool]int), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolIntV(v map[bool]int, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolInt8R(rv reflect.Value) { + fastpathTV.EncMapBoolInt8V(rv.Interface().(map[bool]int8), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolInt8V(v map[bool]int8, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolInt16R(rv reflect.Value) { + fastpathTV.EncMapBoolInt16V(rv.Interface().(map[bool]int16), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolInt16V(v map[bool]int16, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolInt32R(rv reflect.Value) { + fastpathTV.EncMapBoolInt32V(rv.Interface().(map[bool]int32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolInt32V(v map[bool]int32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolInt64R(rv reflect.Value) { + fastpathTV.EncMapBoolInt64V(rv.Interface().(map[bool]int64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolInt64V(v map[bool]int64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v[bool(k2)])) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeInt(int64(v2)) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolFloat32R(rv reflect.Value) { + fastpathTV.EncMapBoolFloat32V(rv.Interface().(map[bool]float32), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolFloat32V(v map[bool]float32, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat32(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolFloat64R(rv reflect.Value) { + fastpathTV.EncMapBoolFloat64V(rv.Interface().(map[bool]float64), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolFloat64V(v map[bool]float64, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeFloat64(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +func (f *encFnInfo) fastpathEncMapBoolBoolR(rv reflect.Value) { + fastpathTV.EncMapBoolBoolV(rv.Interface().(map[bool]bool), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) EncMapBoolBoolV(v map[bool]bool, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + if e.h.Canonical { + v2 := make([]bool, len(v)) + var i int + for k, _ := range v { + v2[i] = bool(k) + i++ + } + sort.Sort(boolSlice(v2)) + for _, k2 := range v2 { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(bool(k2)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v[bool(k2)]) + } + } else { + for k2, v2 := range v { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + ee.EncodeBool(k2) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + ee.EncodeBool(v2) + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } +} + +// -- decode + +// -- -- fast path type switch +func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { + + case []interface{}: + fastpathTV.DecSliceIntfV(v, fastpathCheckNilFalse, false, d) + case *[]interface{}: + v2, changed2 := fastpathTV.DecSliceIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]interface{}: + fastpathTV.DecMapIntfIntfV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]interface{}: + v2, changed2 := fastpathTV.DecMapIntfIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]string: + fastpathTV.DecMapIntfStringV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]string: + v2, changed2 := fastpathTV.DecMapIntfStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uint: + fastpathTV.DecMapIntfUintV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uint: + v2, changed2 := fastpathTV.DecMapIntfUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uint8: + fastpathTV.DecMapIntfUint8V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uint8: + v2, changed2 := fastpathTV.DecMapIntfUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uint16: + fastpathTV.DecMapIntfUint16V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uint16: + v2, changed2 := fastpathTV.DecMapIntfUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uint32: + fastpathTV.DecMapIntfUint32V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uint32: + v2, changed2 := fastpathTV.DecMapIntfUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uint64: + fastpathTV.DecMapIntfUint64V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uint64: + v2, changed2 := fastpathTV.DecMapIntfUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]uintptr: + fastpathTV.DecMapIntfUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]uintptr: + v2, changed2 := fastpathTV.DecMapIntfUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]int: + fastpathTV.DecMapIntfIntV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]int: + v2, changed2 := fastpathTV.DecMapIntfIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]int8: + fastpathTV.DecMapIntfInt8V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]int8: + v2, changed2 := fastpathTV.DecMapIntfInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]int16: + fastpathTV.DecMapIntfInt16V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]int16: + v2, changed2 := fastpathTV.DecMapIntfInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]int32: + fastpathTV.DecMapIntfInt32V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]int32: + v2, changed2 := fastpathTV.DecMapIntfInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]int64: + fastpathTV.DecMapIntfInt64V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]int64: + v2, changed2 := fastpathTV.DecMapIntfInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]float32: + fastpathTV.DecMapIntfFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]float32: + v2, changed2 := fastpathTV.DecMapIntfFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]float64: + fastpathTV.DecMapIntfFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]float64: + v2, changed2 := fastpathTV.DecMapIntfFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[interface{}]bool: + fastpathTV.DecMapIntfBoolV(v, fastpathCheckNilFalse, false, d) + case *map[interface{}]bool: + v2, changed2 := fastpathTV.DecMapIntfBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []string: + fastpathTV.DecSliceStringV(v, fastpathCheckNilFalse, false, d) + case *[]string: + v2, changed2 := fastpathTV.DecSliceStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]interface{}: + fastpathTV.DecMapStringIntfV(v, fastpathCheckNilFalse, false, d) + case *map[string]interface{}: + v2, changed2 := fastpathTV.DecMapStringIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]string: + fastpathTV.DecMapStringStringV(v, fastpathCheckNilFalse, false, d) + case *map[string]string: + v2, changed2 := fastpathTV.DecMapStringStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uint: + fastpathTV.DecMapStringUintV(v, fastpathCheckNilFalse, false, d) + case *map[string]uint: + v2, changed2 := fastpathTV.DecMapStringUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uint8: + fastpathTV.DecMapStringUint8V(v, fastpathCheckNilFalse, false, d) + case *map[string]uint8: + v2, changed2 := fastpathTV.DecMapStringUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uint16: + fastpathTV.DecMapStringUint16V(v, fastpathCheckNilFalse, false, d) + case *map[string]uint16: + v2, changed2 := fastpathTV.DecMapStringUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uint32: + fastpathTV.DecMapStringUint32V(v, fastpathCheckNilFalse, false, d) + case *map[string]uint32: + v2, changed2 := fastpathTV.DecMapStringUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uint64: + fastpathTV.DecMapStringUint64V(v, fastpathCheckNilFalse, false, d) + case *map[string]uint64: + v2, changed2 := fastpathTV.DecMapStringUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]uintptr: + fastpathTV.DecMapStringUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[string]uintptr: + v2, changed2 := fastpathTV.DecMapStringUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]int: + fastpathTV.DecMapStringIntV(v, fastpathCheckNilFalse, false, d) + case *map[string]int: + v2, changed2 := fastpathTV.DecMapStringIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]int8: + fastpathTV.DecMapStringInt8V(v, fastpathCheckNilFalse, false, d) + case *map[string]int8: + v2, changed2 := fastpathTV.DecMapStringInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]int16: + fastpathTV.DecMapStringInt16V(v, fastpathCheckNilFalse, false, d) + case *map[string]int16: + v2, changed2 := fastpathTV.DecMapStringInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]int32: + fastpathTV.DecMapStringInt32V(v, fastpathCheckNilFalse, false, d) + case *map[string]int32: + v2, changed2 := fastpathTV.DecMapStringInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]int64: + fastpathTV.DecMapStringInt64V(v, fastpathCheckNilFalse, false, d) + case *map[string]int64: + v2, changed2 := fastpathTV.DecMapStringInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]float32: + fastpathTV.DecMapStringFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[string]float32: + v2, changed2 := fastpathTV.DecMapStringFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]float64: + fastpathTV.DecMapStringFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[string]float64: + v2, changed2 := fastpathTV.DecMapStringFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[string]bool: + fastpathTV.DecMapStringBoolV(v, fastpathCheckNilFalse, false, d) + case *map[string]bool: + v2, changed2 := fastpathTV.DecMapStringBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []float32: + fastpathTV.DecSliceFloat32V(v, fastpathCheckNilFalse, false, d) + case *[]float32: + v2, changed2 := fastpathTV.DecSliceFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]interface{}: + fastpathTV.DecMapFloat32IntfV(v, fastpathCheckNilFalse, false, d) + case *map[float32]interface{}: + v2, changed2 := fastpathTV.DecMapFloat32IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]string: + fastpathTV.DecMapFloat32StringV(v, fastpathCheckNilFalse, false, d) + case *map[float32]string: + v2, changed2 := fastpathTV.DecMapFloat32StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uint: + fastpathTV.DecMapFloat32UintV(v, fastpathCheckNilFalse, false, d) + case *map[float32]uint: + v2, changed2 := fastpathTV.DecMapFloat32UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uint8: + fastpathTV.DecMapFloat32Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[float32]uint8: + v2, changed2 := fastpathTV.DecMapFloat32Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uint16: + fastpathTV.DecMapFloat32Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[float32]uint16: + v2, changed2 := fastpathTV.DecMapFloat32Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uint32: + fastpathTV.DecMapFloat32Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[float32]uint32: + v2, changed2 := fastpathTV.DecMapFloat32Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uint64: + fastpathTV.DecMapFloat32Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[float32]uint64: + v2, changed2 := fastpathTV.DecMapFloat32Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]uintptr: + fastpathTV.DecMapFloat32UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[float32]uintptr: + v2, changed2 := fastpathTV.DecMapFloat32UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]int: + fastpathTV.DecMapFloat32IntV(v, fastpathCheckNilFalse, false, d) + case *map[float32]int: + v2, changed2 := fastpathTV.DecMapFloat32IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]int8: + fastpathTV.DecMapFloat32Int8V(v, fastpathCheckNilFalse, false, d) + case *map[float32]int8: + v2, changed2 := fastpathTV.DecMapFloat32Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]int16: + fastpathTV.DecMapFloat32Int16V(v, fastpathCheckNilFalse, false, d) + case *map[float32]int16: + v2, changed2 := fastpathTV.DecMapFloat32Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]int32: + fastpathTV.DecMapFloat32Int32V(v, fastpathCheckNilFalse, false, d) + case *map[float32]int32: + v2, changed2 := fastpathTV.DecMapFloat32Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]int64: + fastpathTV.DecMapFloat32Int64V(v, fastpathCheckNilFalse, false, d) + case *map[float32]int64: + v2, changed2 := fastpathTV.DecMapFloat32Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]float32: + fastpathTV.DecMapFloat32Float32V(v, fastpathCheckNilFalse, false, d) + case *map[float32]float32: + v2, changed2 := fastpathTV.DecMapFloat32Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]float64: + fastpathTV.DecMapFloat32Float64V(v, fastpathCheckNilFalse, false, d) + case *map[float32]float64: + v2, changed2 := fastpathTV.DecMapFloat32Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float32]bool: + fastpathTV.DecMapFloat32BoolV(v, fastpathCheckNilFalse, false, d) + case *map[float32]bool: + v2, changed2 := fastpathTV.DecMapFloat32BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []float64: + fastpathTV.DecSliceFloat64V(v, fastpathCheckNilFalse, false, d) + case *[]float64: + v2, changed2 := fastpathTV.DecSliceFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]interface{}: + fastpathTV.DecMapFloat64IntfV(v, fastpathCheckNilFalse, false, d) + case *map[float64]interface{}: + v2, changed2 := fastpathTV.DecMapFloat64IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]string: + fastpathTV.DecMapFloat64StringV(v, fastpathCheckNilFalse, false, d) + case *map[float64]string: + v2, changed2 := fastpathTV.DecMapFloat64StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uint: + fastpathTV.DecMapFloat64UintV(v, fastpathCheckNilFalse, false, d) + case *map[float64]uint: + v2, changed2 := fastpathTV.DecMapFloat64UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uint8: + fastpathTV.DecMapFloat64Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[float64]uint8: + v2, changed2 := fastpathTV.DecMapFloat64Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uint16: + fastpathTV.DecMapFloat64Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[float64]uint16: + v2, changed2 := fastpathTV.DecMapFloat64Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uint32: + fastpathTV.DecMapFloat64Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[float64]uint32: + v2, changed2 := fastpathTV.DecMapFloat64Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uint64: + fastpathTV.DecMapFloat64Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[float64]uint64: + v2, changed2 := fastpathTV.DecMapFloat64Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]uintptr: + fastpathTV.DecMapFloat64UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[float64]uintptr: + v2, changed2 := fastpathTV.DecMapFloat64UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]int: + fastpathTV.DecMapFloat64IntV(v, fastpathCheckNilFalse, false, d) + case *map[float64]int: + v2, changed2 := fastpathTV.DecMapFloat64IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]int8: + fastpathTV.DecMapFloat64Int8V(v, fastpathCheckNilFalse, false, d) + case *map[float64]int8: + v2, changed2 := fastpathTV.DecMapFloat64Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]int16: + fastpathTV.DecMapFloat64Int16V(v, fastpathCheckNilFalse, false, d) + case *map[float64]int16: + v2, changed2 := fastpathTV.DecMapFloat64Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]int32: + fastpathTV.DecMapFloat64Int32V(v, fastpathCheckNilFalse, false, d) + case *map[float64]int32: + v2, changed2 := fastpathTV.DecMapFloat64Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]int64: + fastpathTV.DecMapFloat64Int64V(v, fastpathCheckNilFalse, false, d) + case *map[float64]int64: + v2, changed2 := fastpathTV.DecMapFloat64Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]float32: + fastpathTV.DecMapFloat64Float32V(v, fastpathCheckNilFalse, false, d) + case *map[float64]float32: + v2, changed2 := fastpathTV.DecMapFloat64Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]float64: + fastpathTV.DecMapFloat64Float64V(v, fastpathCheckNilFalse, false, d) + case *map[float64]float64: + v2, changed2 := fastpathTV.DecMapFloat64Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[float64]bool: + fastpathTV.DecMapFloat64BoolV(v, fastpathCheckNilFalse, false, d) + case *map[float64]bool: + v2, changed2 := fastpathTV.DecMapFloat64BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []uint: + fastpathTV.DecSliceUintV(v, fastpathCheckNilFalse, false, d) + case *[]uint: + v2, changed2 := fastpathTV.DecSliceUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]interface{}: + fastpathTV.DecMapUintIntfV(v, fastpathCheckNilFalse, false, d) + case *map[uint]interface{}: + v2, changed2 := fastpathTV.DecMapUintIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]string: + fastpathTV.DecMapUintStringV(v, fastpathCheckNilFalse, false, d) + case *map[uint]string: + v2, changed2 := fastpathTV.DecMapUintStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uint: + fastpathTV.DecMapUintUintV(v, fastpathCheckNilFalse, false, d) + case *map[uint]uint: + v2, changed2 := fastpathTV.DecMapUintUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uint8: + fastpathTV.DecMapUintUint8V(v, fastpathCheckNilFalse, false, d) + case *map[uint]uint8: + v2, changed2 := fastpathTV.DecMapUintUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uint16: + fastpathTV.DecMapUintUint16V(v, fastpathCheckNilFalse, false, d) + case *map[uint]uint16: + v2, changed2 := fastpathTV.DecMapUintUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uint32: + fastpathTV.DecMapUintUint32V(v, fastpathCheckNilFalse, false, d) + case *map[uint]uint32: + v2, changed2 := fastpathTV.DecMapUintUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uint64: + fastpathTV.DecMapUintUint64V(v, fastpathCheckNilFalse, false, d) + case *map[uint]uint64: + v2, changed2 := fastpathTV.DecMapUintUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]uintptr: + fastpathTV.DecMapUintUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uint]uintptr: + v2, changed2 := fastpathTV.DecMapUintUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]int: + fastpathTV.DecMapUintIntV(v, fastpathCheckNilFalse, false, d) + case *map[uint]int: + v2, changed2 := fastpathTV.DecMapUintIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]int8: + fastpathTV.DecMapUintInt8V(v, fastpathCheckNilFalse, false, d) + case *map[uint]int8: + v2, changed2 := fastpathTV.DecMapUintInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]int16: + fastpathTV.DecMapUintInt16V(v, fastpathCheckNilFalse, false, d) + case *map[uint]int16: + v2, changed2 := fastpathTV.DecMapUintInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]int32: + fastpathTV.DecMapUintInt32V(v, fastpathCheckNilFalse, false, d) + case *map[uint]int32: + v2, changed2 := fastpathTV.DecMapUintInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]int64: + fastpathTV.DecMapUintInt64V(v, fastpathCheckNilFalse, false, d) + case *map[uint]int64: + v2, changed2 := fastpathTV.DecMapUintInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]float32: + fastpathTV.DecMapUintFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[uint]float32: + v2, changed2 := fastpathTV.DecMapUintFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]float64: + fastpathTV.DecMapUintFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[uint]float64: + v2, changed2 := fastpathTV.DecMapUintFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint]bool: + fastpathTV.DecMapUintBoolV(v, fastpathCheckNilFalse, false, d) + case *map[uint]bool: + v2, changed2 := fastpathTV.DecMapUintBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]interface{}: + fastpathTV.DecMapUint8IntfV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]interface{}: + v2, changed2 := fastpathTV.DecMapUint8IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]string: + fastpathTV.DecMapUint8StringV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]string: + v2, changed2 := fastpathTV.DecMapUint8StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uint: + fastpathTV.DecMapUint8UintV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uint: + v2, changed2 := fastpathTV.DecMapUint8UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uint8: + fastpathTV.DecMapUint8Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uint8: + v2, changed2 := fastpathTV.DecMapUint8Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uint16: + fastpathTV.DecMapUint8Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uint16: + v2, changed2 := fastpathTV.DecMapUint8Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uint32: + fastpathTV.DecMapUint8Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uint32: + v2, changed2 := fastpathTV.DecMapUint8Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uint64: + fastpathTV.DecMapUint8Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uint64: + v2, changed2 := fastpathTV.DecMapUint8Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]uintptr: + fastpathTV.DecMapUint8UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]uintptr: + v2, changed2 := fastpathTV.DecMapUint8UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]int: + fastpathTV.DecMapUint8IntV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]int: + v2, changed2 := fastpathTV.DecMapUint8IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]int8: + fastpathTV.DecMapUint8Int8V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]int8: + v2, changed2 := fastpathTV.DecMapUint8Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]int16: + fastpathTV.DecMapUint8Int16V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]int16: + v2, changed2 := fastpathTV.DecMapUint8Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]int32: + fastpathTV.DecMapUint8Int32V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]int32: + v2, changed2 := fastpathTV.DecMapUint8Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]int64: + fastpathTV.DecMapUint8Int64V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]int64: + v2, changed2 := fastpathTV.DecMapUint8Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]float32: + fastpathTV.DecMapUint8Float32V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]float32: + v2, changed2 := fastpathTV.DecMapUint8Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]float64: + fastpathTV.DecMapUint8Float64V(v, fastpathCheckNilFalse, false, d) + case *map[uint8]float64: + v2, changed2 := fastpathTV.DecMapUint8Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint8]bool: + fastpathTV.DecMapUint8BoolV(v, fastpathCheckNilFalse, false, d) + case *map[uint8]bool: + v2, changed2 := fastpathTV.DecMapUint8BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []uint16: + fastpathTV.DecSliceUint16V(v, fastpathCheckNilFalse, false, d) + case *[]uint16: + v2, changed2 := fastpathTV.DecSliceUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]interface{}: + fastpathTV.DecMapUint16IntfV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]interface{}: + v2, changed2 := fastpathTV.DecMapUint16IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]string: + fastpathTV.DecMapUint16StringV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]string: + v2, changed2 := fastpathTV.DecMapUint16StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uint: + fastpathTV.DecMapUint16UintV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uint: + v2, changed2 := fastpathTV.DecMapUint16UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uint8: + fastpathTV.DecMapUint16Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uint8: + v2, changed2 := fastpathTV.DecMapUint16Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uint16: + fastpathTV.DecMapUint16Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uint16: + v2, changed2 := fastpathTV.DecMapUint16Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uint32: + fastpathTV.DecMapUint16Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uint32: + v2, changed2 := fastpathTV.DecMapUint16Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uint64: + fastpathTV.DecMapUint16Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uint64: + v2, changed2 := fastpathTV.DecMapUint16Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]uintptr: + fastpathTV.DecMapUint16UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]uintptr: + v2, changed2 := fastpathTV.DecMapUint16UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]int: + fastpathTV.DecMapUint16IntV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]int: + v2, changed2 := fastpathTV.DecMapUint16IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]int8: + fastpathTV.DecMapUint16Int8V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]int8: + v2, changed2 := fastpathTV.DecMapUint16Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]int16: + fastpathTV.DecMapUint16Int16V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]int16: + v2, changed2 := fastpathTV.DecMapUint16Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]int32: + fastpathTV.DecMapUint16Int32V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]int32: + v2, changed2 := fastpathTV.DecMapUint16Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]int64: + fastpathTV.DecMapUint16Int64V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]int64: + v2, changed2 := fastpathTV.DecMapUint16Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]float32: + fastpathTV.DecMapUint16Float32V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]float32: + v2, changed2 := fastpathTV.DecMapUint16Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]float64: + fastpathTV.DecMapUint16Float64V(v, fastpathCheckNilFalse, false, d) + case *map[uint16]float64: + v2, changed2 := fastpathTV.DecMapUint16Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint16]bool: + fastpathTV.DecMapUint16BoolV(v, fastpathCheckNilFalse, false, d) + case *map[uint16]bool: + v2, changed2 := fastpathTV.DecMapUint16BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []uint32: + fastpathTV.DecSliceUint32V(v, fastpathCheckNilFalse, false, d) + case *[]uint32: + v2, changed2 := fastpathTV.DecSliceUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]interface{}: + fastpathTV.DecMapUint32IntfV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]interface{}: + v2, changed2 := fastpathTV.DecMapUint32IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]string: + fastpathTV.DecMapUint32StringV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]string: + v2, changed2 := fastpathTV.DecMapUint32StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uint: + fastpathTV.DecMapUint32UintV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uint: + v2, changed2 := fastpathTV.DecMapUint32UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uint8: + fastpathTV.DecMapUint32Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uint8: + v2, changed2 := fastpathTV.DecMapUint32Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uint16: + fastpathTV.DecMapUint32Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uint16: + v2, changed2 := fastpathTV.DecMapUint32Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uint32: + fastpathTV.DecMapUint32Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uint32: + v2, changed2 := fastpathTV.DecMapUint32Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uint64: + fastpathTV.DecMapUint32Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uint64: + v2, changed2 := fastpathTV.DecMapUint32Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]uintptr: + fastpathTV.DecMapUint32UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]uintptr: + v2, changed2 := fastpathTV.DecMapUint32UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]int: + fastpathTV.DecMapUint32IntV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]int: + v2, changed2 := fastpathTV.DecMapUint32IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]int8: + fastpathTV.DecMapUint32Int8V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]int8: + v2, changed2 := fastpathTV.DecMapUint32Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]int16: + fastpathTV.DecMapUint32Int16V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]int16: + v2, changed2 := fastpathTV.DecMapUint32Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]int32: + fastpathTV.DecMapUint32Int32V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]int32: + v2, changed2 := fastpathTV.DecMapUint32Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]int64: + fastpathTV.DecMapUint32Int64V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]int64: + v2, changed2 := fastpathTV.DecMapUint32Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]float32: + fastpathTV.DecMapUint32Float32V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]float32: + v2, changed2 := fastpathTV.DecMapUint32Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]float64: + fastpathTV.DecMapUint32Float64V(v, fastpathCheckNilFalse, false, d) + case *map[uint32]float64: + v2, changed2 := fastpathTV.DecMapUint32Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint32]bool: + fastpathTV.DecMapUint32BoolV(v, fastpathCheckNilFalse, false, d) + case *map[uint32]bool: + v2, changed2 := fastpathTV.DecMapUint32BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []uint64: + fastpathTV.DecSliceUint64V(v, fastpathCheckNilFalse, false, d) + case *[]uint64: + v2, changed2 := fastpathTV.DecSliceUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]interface{}: + fastpathTV.DecMapUint64IntfV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]interface{}: + v2, changed2 := fastpathTV.DecMapUint64IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]string: + fastpathTV.DecMapUint64StringV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]string: + v2, changed2 := fastpathTV.DecMapUint64StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uint: + fastpathTV.DecMapUint64UintV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uint: + v2, changed2 := fastpathTV.DecMapUint64UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uint8: + fastpathTV.DecMapUint64Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uint8: + v2, changed2 := fastpathTV.DecMapUint64Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uint16: + fastpathTV.DecMapUint64Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uint16: + v2, changed2 := fastpathTV.DecMapUint64Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uint32: + fastpathTV.DecMapUint64Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uint32: + v2, changed2 := fastpathTV.DecMapUint64Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uint64: + fastpathTV.DecMapUint64Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uint64: + v2, changed2 := fastpathTV.DecMapUint64Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]uintptr: + fastpathTV.DecMapUint64UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]uintptr: + v2, changed2 := fastpathTV.DecMapUint64UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]int: + fastpathTV.DecMapUint64IntV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]int: + v2, changed2 := fastpathTV.DecMapUint64IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]int8: + fastpathTV.DecMapUint64Int8V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]int8: + v2, changed2 := fastpathTV.DecMapUint64Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]int16: + fastpathTV.DecMapUint64Int16V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]int16: + v2, changed2 := fastpathTV.DecMapUint64Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]int32: + fastpathTV.DecMapUint64Int32V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]int32: + v2, changed2 := fastpathTV.DecMapUint64Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]int64: + fastpathTV.DecMapUint64Int64V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]int64: + v2, changed2 := fastpathTV.DecMapUint64Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]float32: + fastpathTV.DecMapUint64Float32V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]float32: + v2, changed2 := fastpathTV.DecMapUint64Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]float64: + fastpathTV.DecMapUint64Float64V(v, fastpathCheckNilFalse, false, d) + case *map[uint64]float64: + v2, changed2 := fastpathTV.DecMapUint64Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uint64]bool: + fastpathTV.DecMapUint64BoolV(v, fastpathCheckNilFalse, false, d) + case *map[uint64]bool: + v2, changed2 := fastpathTV.DecMapUint64BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []uintptr: + fastpathTV.DecSliceUintptrV(v, fastpathCheckNilFalse, false, d) + case *[]uintptr: + v2, changed2 := fastpathTV.DecSliceUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]interface{}: + fastpathTV.DecMapUintptrIntfV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]interface{}: + v2, changed2 := fastpathTV.DecMapUintptrIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]string: + fastpathTV.DecMapUintptrStringV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]string: + v2, changed2 := fastpathTV.DecMapUintptrStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uint: + fastpathTV.DecMapUintptrUintV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uint: + v2, changed2 := fastpathTV.DecMapUintptrUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uint8: + fastpathTV.DecMapUintptrUint8V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uint8: + v2, changed2 := fastpathTV.DecMapUintptrUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uint16: + fastpathTV.DecMapUintptrUint16V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uint16: + v2, changed2 := fastpathTV.DecMapUintptrUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uint32: + fastpathTV.DecMapUintptrUint32V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uint32: + v2, changed2 := fastpathTV.DecMapUintptrUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uint64: + fastpathTV.DecMapUintptrUint64V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uint64: + v2, changed2 := fastpathTV.DecMapUintptrUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]uintptr: + fastpathTV.DecMapUintptrUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]uintptr: + v2, changed2 := fastpathTV.DecMapUintptrUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]int: + fastpathTV.DecMapUintptrIntV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]int: + v2, changed2 := fastpathTV.DecMapUintptrIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]int8: + fastpathTV.DecMapUintptrInt8V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]int8: + v2, changed2 := fastpathTV.DecMapUintptrInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]int16: + fastpathTV.DecMapUintptrInt16V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]int16: + v2, changed2 := fastpathTV.DecMapUintptrInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]int32: + fastpathTV.DecMapUintptrInt32V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]int32: + v2, changed2 := fastpathTV.DecMapUintptrInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]int64: + fastpathTV.DecMapUintptrInt64V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]int64: + v2, changed2 := fastpathTV.DecMapUintptrInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]float32: + fastpathTV.DecMapUintptrFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]float32: + v2, changed2 := fastpathTV.DecMapUintptrFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]float64: + fastpathTV.DecMapUintptrFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]float64: + v2, changed2 := fastpathTV.DecMapUintptrFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[uintptr]bool: + fastpathTV.DecMapUintptrBoolV(v, fastpathCheckNilFalse, false, d) + case *map[uintptr]bool: + v2, changed2 := fastpathTV.DecMapUintptrBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []int: + fastpathTV.DecSliceIntV(v, fastpathCheckNilFalse, false, d) + case *[]int: + v2, changed2 := fastpathTV.DecSliceIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]interface{}: + fastpathTV.DecMapIntIntfV(v, fastpathCheckNilFalse, false, d) + case *map[int]interface{}: + v2, changed2 := fastpathTV.DecMapIntIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]string: + fastpathTV.DecMapIntStringV(v, fastpathCheckNilFalse, false, d) + case *map[int]string: + v2, changed2 := fastpathTV.DecMapIntStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uint: + fastpathTV.DecMapIntUintV(v, fastpathCheckNilFalse, false, d) + case *map[int]uint: + v2, changed2 := fastpathTV.DecMapIntUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uint8: + fastpathTV.DecMapIntUint8V(v, fastpathCheckNilFalse, false, d) + case *map[int]uint8: + v2, changed2 := fastpathTV.DecMapIntUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uint16: + fastpathTV.DecMapIntUint16V(v, fastpathCheckNilFalse, false, d) + case *map[int]uint16: + v2, changed2 := fastpathTV.DecMapIntUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uint32: + fastpathTV.DecMapIntUint32V(v, fastpathCheckNilFalse, false, d) + case *map[int]uint32: + v2, changed2 := fastpathTV.DecMapIntUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uint64: + fastpathTV.DecMapIntUint64V(v, fastpathCheckNilFalse, false, d) + case *map[int]uint64: + v2, changed2 := fastpathTV.DecMapIntUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]uintptr: + fastpathTV.DecMapIntUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[int]uintptr: + v2, changed2 := fastpathTV.DecMapIntUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]int: + fastpathTV.DecMapIntIntV(v, fastpathCheckNilFalse, false, d) + case *map[int]int: + v2, changed2 := fastpathTV.DecMapIntIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]int8: + fastpathTV.DecMapIntInt8V(v, fastpathCheckNilFalse, false, d) + case *map[int]int8: + v2, changed2 := fastpathTV.DecMapIntInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]int16: + fastpathTV.DecMapIntInt16V(v, fastpathCheckNilFalse, false, d) + case *map[int]int16: + v2, changed2 := fastpathTV.DecMapIntInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]int32: + fastpathTV.DecMapIntInt32V(v, fastpathCheckNilFalse, false, d) + case *map[int]int32: + v2, changed2 := fastpathTV.DecMapIntInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]int64: + fastpathTV.DecMapIntInt64V(v, fastpathCheckNilFalse, false, d) + case *map[int]int64: + v2, changed2 := fastpathTV.DecMapIntInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]float32: + fastpathTV.DecMapIntFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[int]float32: + v2, changed2 := fastpathTV.DecMapIntFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]float64: + fastpathTV.DecMapIntFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[int]float64: + v2, changed2 := fastpathTV.DecMapIntFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int]bool: + fastpathTV.DecMapIntBoolV(v, fastpathCheckNilFalse, false, d) + case *map[int]bool: + v2, changed2 := fastpathTV.DecMapIntBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []int8: + fastpathTV.DecSliceInt8V(v, fastpathCheckNilFalse, false, d) + case *[]int8: + v2, changed2 := fastpathTV.DecSliceInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]interface{}: + fastpathTV.DecMapInt8IntfV(v, fastpathCheckNilFalse, false, d) + case *map[int8]interface{}: + v2, changed2 := fastpathTV.DecMapInt8IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]string: + fastpathTV.DecMapInt8StringV(v, fastpathCheckNilFalse, false, d) + case *map[int8]string: + v2, changed2 := fastpathTV.DecMapInt8StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uint: + fastpathTV.DecMapInt8UintV(v, fastpathCheckNilFalse, false, d) + case *map[int8]uint: + v2, changed2 := fastpathTV.DecMapInt8UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uint8: + fastpathTV.DecMapInt8Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[int8]uint8: + v2, changed2 := fastpathTV.DecMapInt8Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uint16: + fastpathTV.DecMapInt8Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[int8]uint16: + v2, changed2 := fastpathTV.DecMapInt8Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uint32: + fastpathTV.DecMapInt8Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[int8]uint32: + v2, changed2 := fastpathTV.DecMapInt8Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uint64: + fastpathTV.DecMapInt8Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[int8]uint64: + v2, changed2 := fastpathTV.DecMapInt8Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]uintptr: + fastpathTV.DecMapInt8UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[int8]uintptr: + v2, changed2 := fastpathTV.DecMapInt8UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]int: + fastpathTV.DecMapInt8IntV(v, fastpathCheckNilFalse, false, d) + case *map[int8]int: + v2, changed2 := fastpathTV.DecMapInt8IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]int8: + fastpathTV.DecMapInt8Int8V(v, fastpathCheckNilFalse, false, d) + case *map[int8]int8: + v2, changed2 := fastpathTV.DecMapInt8Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]int16: + fastpathTV.DecMapInt8Int16V(v, fastpathCheckNilFalse, false, d) + case *map[int8]int16: + v2, changed2 := fastpathTV.DecMapInt8Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]int32: + fastpathTV.DecMapInt8Int32V(v, fastpathCheckNilFalse, false, d) + case *map[int8]int32: + v2, changed2 := fastpathTV.DecMapInt8Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]int64: + fastpathTV.DecMapInt8Int64V(v, fastpathCheckNilFalse, false, d) + case *map[int8]int64: + v2, changed2 := fastpathTV.DecMapInt8Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]float32: + fastpathTV.DecMapInt8Float32V(v, fastpathCheckNilFalse, false, d) + case *map[int8]float32: + v2, changed2 := fastpathTV.DecMapInt8Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]float64: + fastpathTV.DecMapInt8Float64V(v, fastpathCheckNilFalse, false, d) + case *map[int8]float64: + v2, changed2 := fastpathTV.DecMapInt8Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int8]bool: + fastpathTV.DecMapInt8BoolV(v, fastpathCheckNilFalse, false, d) + case *map[int8]bool: + v2, changed2 := fastpathTV.DecMapInt8BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []int16: + fastpathTV.DecSliceInt16V(v, fastpathCheckNilFalse, false, d) + case *[]int16: + v2, changed2 := fastpathTV.DecSliceInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]interface{}: + fastpathTV.DecMapInt16IntfV(v, fastpathCheckNilFalse, false, d) + case *map[int16]interface{}: + v2, changed2 := fastpathTV.DecMapInt16IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]string: + fastpathTV.DecMapInt16StringV(v, fastpathCheckNilFalse, false, d) + case *map[int16]string: + v2, changed2 := fastpathTV.DecMapInt16StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uint: + fastpathTV.DecMapInt16UintV(v, fastpathCheckNilFalse, false, d) + case *map[int16]uint: + v2, changed2 := fastpathTV.DecMapInt16UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uint8: + fastpathTV.DecMapInt16Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[int16]uint8: + v2, changed2 := fastpathTV.DecMapInt16Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uint16: + fastpathTV.DecMapInt16Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[int16]uint16: + v2, changed2 := fastpathTV.DecMapInt16Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uint32: + fastpathTV.DecMapInt16Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[int16]uint32: + v2, changed2 := fastpathTV.DecMapInt16Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uint64: + fastpathTV.DecMapInt16Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[int16]uint64: + v2, changed2 := fastpathTV.DecMapInt16Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]uintptr: + fastpathTV.DecMapInt16UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[int16]uintptr: + v2, changed2 := fastpathTV.DecMapInt16UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]int: + fastpathTV.DecMapInt16IntV(v, fastpathCheckNilFalse, false, d) + case *map[int16]int: + v2, changed2 := fastpathTV.DecMapInt16IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]int8: + fastpathTV.DecMapInt16Int8V(v, fastpathCheckNilFalse, false, d) + case *map[int16]int8: + v2, changed2 := fastpathTV.DecMapInt16Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]int16: + fastpathTV.DecMapInt16Int16V(v, fastpathCheckNilFalse, false, d) + case *map[int16]int16: + v2, changed2 := fastpathTV.DecMapInt16Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]int32: + fastpathTV.DecMapInt16Int32V(v, fastpathCheckNilFalse, false, d) + case *map[int16]int32: + v2, changed2 := fastpathTV.DecMapInt16Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]int64: + fastpathTV.DecMapInt16Int64V(v, fastpathCheckNilFalse, false, d) + case *map[int16]int64: + v2, changed2 := fastpathTV.DecMapInt16Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]float32: + fastpathTV.DecMapInt16Float32V(v, fastpathCheckNilFalse, false, d) + case *map[int16]float32: + v2, changed2 := fastpathTV.DecMapInt16Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]float64: + fastpathTV.DecMapInt16Float64V(v, fastpathCheckNilFalse, false, d) + case *map[int16]float64: + v2, changed2 := fastpathTV.DecMapInt16Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int16]bool: + fastpathTV.DecMapInt16BoolV(v, fastpathCheckNilFalse, false, d) + case *map[int16]bool: + v2, changed2 := fastpathTV.DecMapInt16BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []int32: + fastpathTV.DecSliceInt32V(v, fastpathCheckNilFalse, false, d) + case *[]int32: + v2, changed2 := fastpathTV.DecSliceInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]interface{}: + fastpathTV.DecMapInt32IntfV(v, fastpathCheckNilFalse, false, d) + case *map[int32]interface{}: + v2, changed2 := fastpathTV.DecMapInt32IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]string: + fastpathTV.DecMapInt32StringV(v, fastpathCheckNilFalse, false, d) + case *map[int32]string: + v2, changed2 := fastpathTV.DecMapInt32StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uint: + fastpathTV.DecMapInt32UintV(v, fastpathCheckNilFalse, false, d) + case *map[int32]uint: + v2, changed2 := fastpathTV.DecMapInt32UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uint8: + fastpathTV.DecMapInt32Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[int32]uint8: + v2, changed2 := fastpathTV.DecMapInt32Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uint16: + fastpathTV.DecMapInt32Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[int32]uint16: + v2, changed2 := fastpathTV.DecMapInt32Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uint32: + fastpathTV.DecMapInt32Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[int32]uint32: + v2, changed2 := fastpathTV.DecMapInt32Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uint64: + fastpathTV.DecMapInt32Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[int32]uint64: + v2, changed2 := fastpathTV.DecMapInt32Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]uintptr: + fastpathTV.DecMapInt32UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[int32]uintptr: + v2, changed2 := fastpathTV.DecMapInt32UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]int: + fastpathTV.DecMapInt32IntV(v, fastpathCheckNilFalse, false, d) + case *map[int32]int: + v2, changed2 := fastpathTV.DecMapInt32IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]int8: + fastpathTV.DecMapInt32Int8V(v, fastpathCheckNilFalse, false, d) + case *map[int32]int8: + v2, changed2 := fastpathTV.DecMapInt32Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]int16: + fastpathTV.DecMapInt32Int16V(v, fastpathCheckNilFalse, false, d) + case *map[int32]int16: + v2, changed2 := fastpathTV.DecMapInt32Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]int32: + fastpathTV.DecMapInt32Int32V(v, fastpathCheckNilFalse, false, d) + case *map[int32]int32: + v2, changed2 := fastpathTV.DecMapInt32Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]int64: + fastpathTV.DecMapInt32Int64V(v, fastpathCheckNilFalse, false, d) + case *map[int32]int64: + v2, changed2 := fastpathTV.DecMapInt32Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]float32: + fastpathTV.DecMapInt32Float32V(v, fastpathCheckNilFalse, false, d) + case *map[int32]float32: + v2, changed2 := fastpathTV.DecMapInt32Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]float64: + fastpathTV.DecMapInt32Float64V(v, fastpathCheckNilFalse, false, d) + case *map[int32]float64: + v2, changed2 := fastpathTV.DecMapInt32Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int32]bool: + fastpathTV.DecMapInt32BoolV(v, fastpathCheckNilFalse, false, d) + case *map[int32]bool: + v2, changed2 := fastpathTV.DecMapInt32BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []int64: + fastpathTV.DecSliceInt64V(v, fastpathCheckNilFalse, false, d) + case *[]int64: + v2, changed2 := fastpathTV.DecSliceInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]interface{}: + fastpathTV.DecMapInt64IntfV(v, fastpathCheckNilFalse, false, d) + case *map[int64]interface{}: + v2, changed2 := fastpathTV.DecMapInt64IntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]string: + fastpathTV.DecMapInt64StringV(v, fastpathCheckNilFalse, false, d) + case *map[int64]string: + v2, changed2 := fastpathTV.DecMapInt64StringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uint: + fastpathTV.DecMapInt64UintV(v, fastpathCheckNilFalse, false, d) + case *map[int64]uint: + v2, changed2 := fastpathTV.DecMapInt64UintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uint8: + fastpathTV.DecMapInt64Uint8V(v, fastpathCheckNilFalse, false, d) + case *map[int64]uint8: + v2, changed2 := fastpathTV.DecMapInt64Uint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uint16: + fastpathTV.DecMapInt64Uint16V(v, fastpathCheckNilFalse, false, d) + case *map[int64]uint16: + v2, changed2 := fastpathTV.DecMapInt64Uint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uint32: + fastpathTV.DecMapInt64Uint32V(v, fastpathCheckNilFalse, false, d) + case *map[int64]uint32: + v2, changed2 := fastpathTV.DecMapInt64Uint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uint64: + fastpathTV.DecMapInt64Uint64V(v, fastpathCheckNilFalse, false, d) + case *map[int64]uint64: + v2, changed2 := fastpathTV.DecMapInt64Uint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]uintptr: + fastpathTV.DecMapInt64UintptrV(v, fastpathCheckNilFalse, false, d) + case *map[int64]uintptr: + v2, changed2 := fastpathTV.DecMapInt64UintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]int: + fastpathTV.DecMapInt64IntV(v, fastpathCheckNilFalse, false, d) + case *map[int64]int: + v2, changed2 := fastpathTV.DecMapInt64IntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]int8: + fastpathTV.DecMapInt64Int8V(v, fastpathCheckNilFalse, false, d) + case *map[int64]int8: + v2, changed2 := fastpathTV.DecMapInt64Int8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]int16: + fastpathTV.DecMapInt64Int16V(v, fastpathCheckNilFalse, false, d) + case *map[int64]int16: + v2, changed2 := fastpathTV.DecMapInt64Int16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]int32: + fastpathTV.DecMapInt64Int32V(v, fastpathCheckNilFalse, false, d) + case *map[int64]int32: + v2, changed2 := fastpathTV.DecMapInt64Int32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]int64: + fastpathTV.DecMapInt64Int64V(v, fastpathCheckNilFalse, false, d) + case *map[int64]int64: + v2, changed2 := fastpathTV.DecMapInt64Int64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]float32: + fastpathTV.DecMapInt64Float32V(v, fastpathCheckNilFalse, false, d) + case *map[int64]float32: + v2, changed2 := fastpathTV.DecMapInt64Float32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]float64: + fastpathTV.DecMapInt64Float64V(v, fastpathCheckNilFalse, false, d) + case *map[int64]float64: + v2, changed2 := fastpathTV.DecMapInt64Float64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[int64]bool: + fastpathTV.DecMapInt64BoolV(v, fastpathCheckNilFalse, false, d) + case *map[int64]bool: + v2, changed2 := fastpathTV.DecMapInt64BoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case []bool: + fastpathTV.DecSliceBoolV(v, fastpathCheckNilFalse, false, d) + case *[]bool: + v2, changed2 := fastpathTV.DecSliceBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]interface{}: + fastpathTV.DecMapBoolIntfV(v, fastpathCheckNilFalse, false, d) + case *map[bool]interface{}: + v2, changed2 := fastpathTV.DecMapBoolIntfV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]string: + fastpathTV.DecMapBoolStringV(v, fastpathCheckNilFalse, false, d) + case *map[bool]string: + v2, changed2 := fastpathTV.DecMapBoolStringV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uint: + fastpathTV.DecMapBoolUintV(v, fastpathCheckNilFalse, false, d) + case *map[bool]uint: + v2, changed2 := fastpathTV.DecMapBoolUintV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uint8: + fastpathTV.DecMapBoolUint8V(v, fastpathCheckNilFalse, false, d) + case *map[bool]uint8: + v2, changed2 := fastpathTV.DecMapBoolUint8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uint16: + fastpathTV.DecMapBoolUint16V(v, fastpathCheckNilFalse, false, d) + case *map[bool]uint16: + v2, changed2 := fastpathTV.DecMapBoolUint16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uint32: + fastpathTV.DecMapBoolUint32V(v, fastpathCheckNilFalse, false, d) + case *map[bool]uint32: + v2, changed2 := fastpathTV.DecMapBoolUint32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uint64: + fastpathTV.DecMapBoolUint64V(v, fastpathCheckNilFalse, false, d) + case *map[bool]uint64: + v2, changed2 := fastpathTV.DecMapBoolUint64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]uintptr: + fastpathTV.DecMapBoolUintptrV(v, fastpathCheckNilFalse, false, d) + case *map[bool]uintptr: + v2, changed2 := fastpathTV.DecMapBoolUintptrV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]int: + fastpathTV.DecMapBoolIntV(v, fastpathCheckNilFalse, false, d) + case *map[bool]int: + v2, changed2 := fastpathTV.DecMapBoolIntV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]int8: + fastpathTV.DecMapBoolInt8V(v, fastpathCheckNilFalse, false, d) + case *map[bool]int8: + v2, changed2 := fastpathTV.DecMapBoolInt8V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]int16: + fastpathTV.DecMapBoolInt16V(v, fastpathCheckNilFalse, false, d) + case *map[bool]int16: + v2, changed2 := fastpathTV.DecMapBoolInt16V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]int32: + fastpathTV.DecMapBoolInt32V(v, fastpathCheckNilFalse, false, d) + case *map[bool]int32: + v2, changed2 := fastpathTV.DecMapBoolInt32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]int64: + fastpathTV.DecMapBoolInt64V(v, fastpathCheckNilFalse, false, d) + case *map[bool]int64: + v2, changed2 := fastpathTV.DecMapBoolInt64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]float32: + fastpathTV.DecMapBoolFloat32V(v, fastpathCheckNilFalse, false, d) + case *map[bool]float32: + v2, changed2 := fastpathTV.DecMapBoolFloat32V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]float64: + fastpathTV.DecMapBoolFloat64V(v, fastpathCheckNilFalse, false, d) + case *map[bool]float64: + v2, changed2 := fastpathTV.DecMapBoolFloat64V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + case map[bool]bool: + fastpathTV.DecMapBoolBoolV(v, fastpathCheckNilFalse, false, d) + case *map[bool]bool: + v2, changed2 := fastpathTV.DecMapBoolBoolV(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } + + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +// -- -- fast path functions + +func (f *decFnInfo) fastpathDecSliceIntfR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]interface{}) + v, changed := fastpathTV.DecSliceIntfV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]interface{}) + fastpathTV.DecSliceIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceIntfX(vp *[]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecSliceIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceIntfV(v []interface{}, checkNil bool, canChange bool, d *Decoder) (_ []interface{}, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []interface{}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 16) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]interface{}, xlen) + } + } else { + v = make([]interface{}, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + d.decode(&v[j]) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, nil) + slh.ElemContainerState(j) + d.decode(&v[j]) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []interface{}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]interface{}, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, nil) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + d.decode(&v[j]) + + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceStringR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]string) + v, changed := fastpathTV.DecSliceStringV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]string) + fastpathTV.DecSliceStringV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceStringX(vp *[]string, checkNil bool, d *Decoder) { + v, changed := f.DecSliceStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceStringV(v []string, checkNil bool, canChange bool, d *Decoder) (_ []string, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []string{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 16) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]string, xlen) + } + } else { + v = make([]string, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = dd.DecodeString() + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, "") + slh.ElemContainerState(j) + v[j] = dd.DecodeString() + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []string{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]string, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, "") + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeString() + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceFloat32R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]float32) + v, changed := fastpathTV.DecSliceFloat32V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]float32) + fastpathTV.DecSliceFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceFloat32X(vp *[]float32, checkNil bool, d *Decoder) { + v, changed := f.DecSliceFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceFloat32V(v []float32, checkNil bool, canChange bool, d *Decoder) (_ []float32, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []float32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]float32, xlen) + } + } else { + v = make([]float32, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = float32(dd.DecodeFloat(true)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = float32(dd.DecodeFloat(true)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []float32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]float32, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = float32(dd.DecodeFloat(true)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceFloat64R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]float64) + v, changed := fastpathTV.DecSliceFloat64V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]float64) + fastpathTV.DecSliceFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceFloat64X(vp *[]float64, checkNil bool, d *Decoder) { + v, changed := f.DecSliceFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceFloat64V(v []float64, checkNil bool, canChange bool, d *Decoder) (_ []float64, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []float64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]float64, xlen) + } + } else { + v = make([]float64, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = dd.DecodeFloat(false) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeFloat(false) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []float64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]float64, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeFloat(false) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceUintR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]uint) + v, changed := fastpathTV.DecSliceUintV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]uint) + fastpathTV.DecSliceUintV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceUintX(vp *[]uint, checkNil bool, d *Decoder) { + v, changed := f.DecSliceUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceUintV(v []uint, checkNil bool, canChange bool, d *Decoder) (_ []uint, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []uint{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint, xlen) + } + } else { + v = make([]uint, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = uint(dd.DecodeUint(uintBitsize)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint(dd.DecodeUint(uintBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]uint, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint(dd.DecodeUint(uintBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceUint16R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]uint16) + v, changed := fastpathTV.DecSliceUint16V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]uint16) + fastpathTV.DecSliceUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceUint16X(vp *[]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecSliceUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceUint16V(v []uint16, checkNil bool, canChange bool, d *Decoder) (_ []uint16, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []uint16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 2) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint16, xlen) + } + } else { + v = make([]uint16, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = uint16(dd.DecodeUint(16)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint16(dd.DecodeUint(16)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]uint16, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint16(dd.DecodeUint(16)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceUint32R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]uint32) + v, changed := fastpathTV.DecSliceUint32V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]uint32) + fastpathTV.DecSliceUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceUint32X(vp *[]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecSliceUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceUint32V(v []uint32, checkNil bool, canChange bool, d *Decoder) (_ []uint32, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []uint32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint32, xlen) + } + } else { + v = make([]uint32, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = uint32(dd.DecodeUint(32)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uint32(dd.DecodeUint(32)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]uint32, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uint32(dd.DecodeUint(32)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceUint64R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]uint64) + v, changed := fastpathTV.DecSliceUint64V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]uint64) + fastpathTV.DecSliceUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceUint64X(vp *[]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecSliceUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceUint64V(v []uint64, checkNil bool, canChange bool, d *Decoder) (_ []uint64, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []uint64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uint64, xlen) + } + } else { + v = make([]uint64, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = dd.DecodeUint(64) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeUint(64) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uint64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]uint64, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeUint(64) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceUintptrR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]uintptr) + v, changed := fastpathTV.DecSliceUintptrV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]uintptr) + fastpathTV.DecSliceUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceUintptrX(vp *[]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecSliceUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceUintptrV(v []uintptr, checkNil bool, canChange bool, d *Decoder) (_ []uintptr, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []uintptr{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]uintptr, xlen) + } + } else { + v = make([]uintptr, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = uintptr(dd.DecodeUint(uintBitsize)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = uintptr(dd.DecodeUint(uintBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []uintptr{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]uintptr, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = uintptr(dd.DecodeUint(uintBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceIntR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]int) + v, changed := fastpathTV.DecSliceIntV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]int) + fastpathTV.DecSliceIntV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceIntX(vp *[]int, checkNil bool, d *Decoder) { + v, changed := f.DecSliceIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceIntV(v []int, checkNil bool, canChange bool, d *Decoder) (_ []int, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []int{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int, xlen) + } + } else { + v = make([]int, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = int(dd.DecodeInt(intBitsize)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int(dd.DecodeInt(intBitsize)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]int, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int(dd.DecodeInt(intBitsize)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceInt8R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]int8) + v, changed := fastpathTV.DecSliceInt8V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]int8) + fastpathTV.DecSliceInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceInt8X(vp *[]int8, checkNil bool, d *Decoder) { + v, changed := f.DecSliceInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceInt8V(v []int8, checkNil bool, canChange bool, d *Decoder) (_ []int8, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []int8{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 1) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int8, xlen) + } + } else { + v = make([]int8, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = int8(dd.DecodeInt(8)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int8(dd.DecodeInt(8)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int8{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]int8, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int8(dd.DecodeInt(8)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceInt16R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]int16) + v, changed := fastpathTV.DecSliceInt16V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]int16) + fastpathTV.DecSliceInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceInt16X(vp *[]int16, checkNil bool, d *Decoder) { + v, changed := f.DecSliceInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceInt16V(v []int16, checkNil bool, canChange bool, d *Decoder) (_ []int16, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []int16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 2) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int16, xlen) + } + } else { + v = make([]int16, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = int16(dd.DecodeInt(16)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int16(dd.DecodeInt(16)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int16{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]int16, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int16(dd.DecodeInt(16)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceInt32R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]int32) + v, changed := fastpathTV.DecSliceInt32V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]int32) + fastpathTV.DecSliceInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceInt32X(vp *[]int32, checkNil bool, d *Decoder) { + v, changed := f.DecSliceInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceInt32V(v []int32, checkNil bool, canChange bool, d *Decoder) (_ []int32, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []int32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 4) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int32, xlen) + } + } else { + v = make([]int32, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = int32(dd.DecodeInt(32)) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = int32(dd.DecodeInt(32)) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int32{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]int32, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = int32(dd.DecodeInt(32)) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceInt64R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]int64) + v, changed := fastpathTV.DecSliceInt64V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]int64) + fastpathTV.DecSliceInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceInt64X(vp *[]int64, checkNil bool, d *Decoder) { + v, changed := f.DecSliceInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceInt64V(v []int64, checkNil bool, canChange bool, d *Decoder) (_ []int64, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []int64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 8) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]int64, xlen) + } + } else { + v = make([]int64, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = dd.DecodeInt(64) + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, 0) + slh.ElemContainerState(j) + v[j] = dd.DecodeInt(64) + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []int64{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]int64, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, 0) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeInt(64) + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecSliceBoolR(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { + vp := rv.Addr().Interface().(*[]bool) + v, changed := fastpathTV.DecSliceBoolV(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]bool) + fastpathTV.DecSliceBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) DecSliceBoolX(vp *[]bool, checkNil bool, d *Decoder) { + v, changed := f.DecSliceBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecSliceBoolV(v []bool, checkNil bool, canChange bool, d *Decoder) (_ []bool, changed bool) { + dd := d.d + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []bool{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, 1) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]bool, xlen) + } + } else { + v = make([]bool, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + v[j] = dd.DecodeBool() + } + if xtrunc { + for ; j < containerLenS; j++ { + v = append(v, false) + slh.ElemContainerState(j) + v[j] = dd.DecodeBool() + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() + if breakFound { + if canChange { + if v == nil { + v = []bool{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]bool, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, false) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { + v[j] = dd.DecodeBool() + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]interface{}) + v, changed := fastpathTV.DecMapIntfIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]interface{}) + fastpathTV.DecMapIntfIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfIntfX(vp *map[interface{}]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfIntfV(v map[interface{}]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) + v = make(map[interface{}]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk interface{} + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]string) + v, changed := fastpathTV.DecMapIntfStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]string) + fastpathTV.DecMapIntfStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfStringX(vp *map[interface{}]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfStringV(v map[interface{}]string, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) + v = make(map[interface{}]string, xlen) + changed = true + } + + var mk interface{} + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uint) + v, changed := fastpathTV.DecMapIntfUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uint) + fastpathTV.DecMapIntfUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUintX(vp *map[interface{}]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUintV(v map[interface{}]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]uint, xlen) + changed = true + } + + var mk interface{} + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uint8) + v, changed := fastpathTV.DecMapIntfUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uint8) + fastpathTV.DecMapIntfUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUint8X(vp *map[interface{}]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUint8V(v map[interface{}]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[interface{}]uint8, xlen) + changed = true + } + + var mk interface{} + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uint16) + v, changed := fastpathTV.DecMapIntfUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uint16) + fastpathTV.DecMapIntfUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUint16X(vp *map[interface{}]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUint16V(v map[interface{}]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[interface{}]uint16, xlen) + changed = true + } + + var mk interface{} + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uint32) + v, changed := fastpathTV.DecMapIntfUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uint32) + fastpathTV.DecMapIntfUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUint32X(vp *map[interface{}]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUint32V(v map[interface{}]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[interface{}]uint32, xlen) + changed = true + } + + var mk interface{} + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uint64) + v, changed := fastpathTV.DecMapIntfUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uint64) + fastpathTV.DecMapIntfUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUint64X(vp *map[interface{}]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUint64V(v map[interface{}]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]uint64, xlen) + changed = true + } + + var mk interface{} + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]uintptr) + v, changed := fastpathTV.DecMapIntfUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]uintptr) + fastpathTV.DecMapIntfUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfUintptrX(vp *map[interface{}]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfUintptrV(v map[interface{}]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]uintptr, xlen) + changed = true + } + + var mk interface{} + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]int) + v, changed := fastpathTV.DecMapIntfIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]int) + fastpathTV.DecMapIntfIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfIntX(vp *map[interface{}]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfIntV(v map[interface{}]int, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]int, xlen) + changed = true + } + + var mk interface{} + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]int8) + v, changed := fastpathTV.DecMapIntfInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]int8) + fastpathTV.DecMapIntfInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfInt8X(vp *map[interface{}]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfInt8V(v map[interface{}]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[interface{}]int8, xlen) + changed = true + } + + var mk interface{} + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]int16) + v, changed := fastpathTV.DecMapIntfInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]int16) + fastpathTV.DecMapIntfInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfInt16X(vp *map[interface{}]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfInt16V(v map[interface{}]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[interface{}]int16, xlen) + changed = true + } + + var mk interface{} + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]int32) + v, changed := fastpathTV.DecMapIntfInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]int32) + fastpathTV.DecMapIntfInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfInt32X(vp *map[interface{}]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfInt32V(v map[interface{}]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[interface{}]int32, xlen) + changed = true + } + + var mk interface{} + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]int64) + v, changed := fastpathTV.DecMapIntfInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]int64) + fastpathTV.DecMapIntfInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfInt64X(vp *map[interface{}]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfInt64V(v map[interface{}]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]int64, xlen) + changed = true + } + + var mk interface{} + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]float32) + v, changed := fastpathTV.DecMapIntfFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]float32) + fastpathTV.DecMapIntfFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfFloat32X(vp *map[interface{}]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfFloat32V(v map[interface{}]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[interface{}]float32, xlen) + changed = true + } + + var mk interface{} + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]float64) + v, changed := fastpathTV.DecMapIntfFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]float64) + fastpathTV.DecMapIntfFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfFloat64X(vp *map[interface{}]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfFloat64V(v map[interface{}]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[interface{}]float64, xlen) + changed = true + } + + var mk interface{} + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntfBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[interface{}]bool) + v, changed := fastpathTV.DecMapIntfBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[interface{}]bool) + fastpathTV.DecMapIntfBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntfBoolX(vp *map[interface{}]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntfBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntfBoolV(v map[interface{}]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[interface{}]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[interface{}]bool, xlen) + changed = true + } + + var mk interface{} + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) + } + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]interface{}) + v, changed := fastpathTV.DecMapStringIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]interface{}) + fastpathTV.DecMapStringIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringIntfX(vp *map[string]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringIntfV(v map[string]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[string]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) + v = make(map[string]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk string + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]string) + v, changed := fastpathTV.DecMapStringStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]string) + fastpathTV.DecMapStringStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringStringX(vp *map[string]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringStringV(v map[string]string, checkNil bool, canChange bool, + d *Decoder) (_ map[string]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 32) + v = make(map[string]string, xlen) + changed = true + } + + var mk string + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uint) + v, changed := fastpathTV.DecMapStringUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uint) + fastpathTV.DecMapStringUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUintX(vp *map[string]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUintV(v map[string]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]uint, xlen) + changed = true + } + + var mk string + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uint8) + v, changed := fastpathTV.DecMapStringUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uint8) + fastpathTV.DecMapStringUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUint8X(vp *map[string]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUint8V(v map[string]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[string]uint8, xlen) + changed = true + } + + var mk string + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uint16) + v, changed := fastpathTV.DecMapStringUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uint16) + fastpathTV.DecMapStringUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUint16X(vp *map[string]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUint16V(v map[string]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[string]uint16, xlen) + changed = true + } + + var mk string + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uint32) + v, changed := fastpathTV.DecMapStringUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uint32) + fastpathTV.DecMapStringUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUint32X(vp *map[string]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUint32V(v map[string]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[string]uint32, xlen) + changed = true + } + + var mk string + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uint64) + v, changed := fastpathTV.DecMapStringUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uint64) + fastpathTV.DecMapStringUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUint64X(vp *map[string]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUint64V(v map[string]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]uint64, xlen) + changed = true + } + + var mk string + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]uintptr) + v, changed := fastpathTV.DecMapStringUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]uintptr) + fastpathTV.DecMapStringUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringUintptrX(vp *map[string]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringUintptrV(v map[string]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[string]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]uintptr, xlen) + changed = true + } + + var mk string + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]int) + v, changed := fastpathTV.DecMapStringIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]int) + fastpathTV.DecMapStringIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringIntX(vp *map[string]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringIntV(v map[string]int, checkNil bool, canChange bool, + d *Decoder) (_ map[string]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]int, xlen) + changed = true + } + + var mk string + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]int8) + v, changed := fastpathTV.DecMapStringInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]int8) + fastpathTV.DecMapStringInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringInt8X(vp *map[string]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringInt8V(v map[string]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[string]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[string]int8, xlen) + changed = true + } + + var mk string + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]int16) + v, changed := fastpathTV.DecMapStringInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]int16) + fastpathTV.DecMapStringInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringInt16X(vp *map[string]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringInt16V(v map[string]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[string]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[string]int16, xlen) + changed = true + } + + var mk string + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]int32) + v, changed := fastpathTV.DecMapStringInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]int32) + fastpathTV.DecMapStringInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringInt32X(vp *map[string]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringInt32V(v map[string]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[string]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[string]int32, xlen) + changed = true + } + + var mk string + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]int64) + v, changed := fastpathTV.DecMapStringInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]int64) + fastpathTV.DecMapStringInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringInt64X(vp *map[string]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringInt64V(v map[string]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[string]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]int64, xlen) + changed = true + } + + var mk string + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]float32) + v, changed := fastpathTV.DecMapStringFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]float32) + fastpathTV.DecMapStringFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringFloat32X(vp *map[string]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringFloat32V(v map[string]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[string]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[string]float32, xlen) + changed = true + } + + var mk string + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]float64) + v, changed := fastpathTV.DecMapStringFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]float64) + fastpathTV.DecMapStringFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringFloat64X(vp *map[string]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringFloat64V(v map[string]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[string]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[string]float64, xlen) + changed = true + } + + var mk string + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapStringBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[string]bool) + v, changed := fastpathTV.DecMapStringBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[string]bool) + fastpathTV.DecMapStringBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapStringBoolX(vp *map[string]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapStringBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapStringBoolV(v map[string]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[string]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[string]bool, xlen) + changed = true + } + + var mk string + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeString() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]interface{}) + v, changed := fastpathTV.DecMapFloat32IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]interface{}) + fastpathTV.DecMapFloat32IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32IntfX(vp *map[float32]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32IntfV(v map[float32]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[float32]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk float32 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]string) + v, changed := fastpathTV.DecMapFloat32StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]string) + fastpathTV.DecMapFloat32StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32StringX(vp *map[float32]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32StringV(v map[float32]string, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[float32]string, xlen) + changed = true + } + + var mk float32 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uint) + v, changed := fastpathTV.DecMapFloat32UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uint) + fastpathTV.DecMapFloat32UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32UintX(vp *map[float32]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32UintV(v map[float32]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]uint, xlen) + changed = true + } + + var mk float32 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uint8) + v, changed := fastpathTV.DecMapFloat32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uint8) + fastpathTV.DecMapFloat32Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Uint8X(vp *map[float32]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Uint8V(v map[float32]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[float32]uint8, xlen) + changed = true + } + + var mk float32 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uint16) + v, changed := fastpathTV.DecMapFloat32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uint16) + fastpathTV.DecMapFloat32Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Uint16X(vp *map[float32]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Uint16V(v map[float32]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[float32]uint16, xlen) + changed = true + } + + var mk float32 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uint32) + v, changed := fastpathTV.DecMapFloat32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uint32) + fastpathTV.DecMapFloat32Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Uint32X(vp *map[float32]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Uint32V(v map[float32]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[float32]uint32, xlen) + changed = true + } + + var mk float32 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uint64) + v, changed := fastpathTV.DecMapFloat32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uint64) + fastpathTV.DecMapFloat32Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Uint64X(vp *map[float32]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Uint64V(v map[float32]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]uint64, xlen) + changed = true + } + + var mk float32 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]uintptr) + v, changed := fastpathTV.DecMapFloat32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]uintptr) + fastpathTV.DecMapFloat32UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32UintptrX(vp *map[float32]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32UintptrV(v map[float32]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]uintptr, xlen) + changed = true + } + + var mk float32 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]int) + v, changed := fastpathTV.DecMapFloat32IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]int) + fastpathTV.DecMapFloat32IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32IntX(vp *map[float32]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32IntV(v map[float32]int, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]int, xlen) + changed = true + } + + var mk float32 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]int8) + v, changed := fastpathTV.DecMapFloat32Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]int8) + fastpathTV.DecMapFloat32Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Int8X(vp *map[float32]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Int8V(v map[float32]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[float32]int8, xlen) + changed = true + } + + var mk float32 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]int16) + v, changed := fastpathTV.DecMapFloat32Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]int16) + fastpathTV.DecMapFloat32Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Int16X(vp *map[float32]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Int16V(v map[float32]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[float32]int16, xlen) + changed = true + } + + var mk float32 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]int32) + v, changed := fastpathTV.DecMapFloat32Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]int32) + fastpathTV.DecMapFloat32Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Int32X(vp *map[float32]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Int32V(v map[float32]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[float32]int32, xlen) + changed = true + } + + var mk float32 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]int64) + v, changed := fastpathTV.DecMapFloat32Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]int64) + fastpathTV.DecMapFloat32Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Int64X(vp *map[float32]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Int64V(v map[float32]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]int64, xlen) + changed = true + } + + var mk float32 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]float32) + v, changed := fastpathTV.DecMapFloat32Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]float32) + fastpathTV.DecMapFloat32Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Float32X(vp *map[float32]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Float32V(v map[float32]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[float32]float32, xlen) + changed = true + } + + var mk float32 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]float64) + v, changed := fastpathTV.DecMapFloat32Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]float64) + fastpathTV.DecMapFloat32Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32Float64X(vp *map[float32]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32Float64V(v map[float32]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float32]float64, xlen) + changed = true + } + + var mk float32 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat32BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float32]bool) + v, changed := fastpathTV.DecMapFloat32BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float32]bool) + fastpathTV.DecMapFloat32BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat32BoolX(vp *map[float32]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat32BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat32BoolV(v map[float32]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[float32]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[float32]bool, xlen) + changed = true + } + + var mk float32 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = float32(dd.DecodeFloat(true)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]interface{}) + v, changed := fastpathTV.DecMapFloat64IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]interface{}) + fastpathTV.DecMapFloat64IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64IntfX(vp *map[float64]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64IntfV(v map[float64]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[float64]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk float64 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]string) + v, changed := fastpathTV.DecMapFloat64StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]string) + fastpathTV.DecMapFloat64StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64StringX(vp *map[float64]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64StringV(v map[float64]string, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[float64]string, xlen) + changed = true + } + + var mk float64 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uint) + v, changed := fastpathTV.DecMapFloat64UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uint) + fastpathTV.DecMapFloat64UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64UintX(vp *map[float64]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64UintV(v map[float64]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]uint, xlen) + changed = true + } + + var mk float64 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uint8) + v, changed := fastpathTV.DecMapFloat64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uint8) + fastpathTV.DecMapFloat64Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Uint8X(vp *map[float64]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Uint8V(v map[float64]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[float64]uint8, xlen) + changed = true + } + + var mk float64 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uint16) + v, changed := fastpathTV.DecMapFloat64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uint16) + fastpathTV.DecMapFloat64Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Uint16X(vp *map[float64]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Uint16V(v map[float64]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[float64]uint16, xlen) + changed = true + } + + var mk float64 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uint32) + v, changed := fastpathTV.DecMapFloat64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uint32) + fastpathTV.DecMapFloat64Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Uint32X(vp *map[float64]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Uint32V(v map[float64]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float64]uint32, xlen) + changed = true + } + + var mk float64 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uint64) + v, changed := fastpathTV.DecMapFloat64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uint64) + fastpathTV.DecMapFloat64Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Uint64X(vp *map[float64]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Uint64V(v map[float64]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]uint64, xlen) + changed = true + } + + var mk float64 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]uintptr) + v, changed := fastpathTV.DecMapFloat64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]uintptr) + fastpathTV.DecMapFloat64UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64UintptrX(vp *map[float64]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64UintptrV(v map[float64]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]uintptr, xlen) + changed = true + } + + var mk float64 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]int) + v, changed := fastpathTV.DecMapFloat64IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]int) + fastpathTV.DecMapFloat64IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64IntX(vp *map[float64]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64IntV(v map[float64]int, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]int, xlen) + changed = true + } + + var mk float64 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]int8) + v, changed := fastpathTV.DecMapFloat64Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]int8) + fastpathTV.DecMapFloat64Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Int8X(vp *map[float64]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Int8V(v map[float64]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[float64]int8, xlen) + changed = true + } + + var mk float64 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]int16) + v, changed := fastpathTV.DecMapFloat64Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]int16) + fastpathTV.DecMapFloat64Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Int16X(vp *map[float64]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Int16V(v map[float64]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[float64]int16, xlen) + changed = true + } + + var mk float64 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]int32) + v, changed := fastpathTV.DecMapFloat64Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]int32) + fastpathTV.DecMapFloat64Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Int32X(vp *map[float64]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Int32V(v map[float64]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float64]int32, xlen) + changed = true + } + + var mk float64 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]int64) + v, changed := fastpathTV.DecMapFloat64Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]int64) + fastpathTV.DecMapFloat64Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Int64X(vp *map[float64]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Int64V(v map[float64]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]int64, xlen) + changed = true + } + + var mk float64 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]float32) + v, changed := fastpathTV.DecMapFloat64Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]float32) + fastpathTV.DecMapFloat64Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Float32X(vp *map[float64]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Float32V(v map[float64]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[float64]float32, xlen) + changed = true + } + + var mk float64 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]float64) + v, changed := fastpathTV.DecMapFloat64Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]float64) + fastpathTV.DecMapFloat64Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64Float64X(vp *map[float64]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64Float64V(v map[float64]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[float64]float64, xlen) + changed = true + } + + var mk float64 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapFloat64BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[float64]bool) + v, changed := fastpathTV.DecMapFloat64BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[float64]bool) + fastpathTV.DecMapFloat64BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapFloat64BoolX(vp *map[float64]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapFloat64BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapFloat64BoolV(v map[float64]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[float64]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[float64]bool, xlen) + changed = true + } + + var mk float64 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeFloat(false) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]interface{}) + v, changed := fastpathTV.DecMapUintIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]interface{}) + fastpathTV.DecMapUintIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintIntfX(vp *map[uint]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintIntfV(v map[uint]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uint]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uint + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]string) + v, changed := fastpathTV.DecMapUintStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]string) + fastpathTV.DecMapUintStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintStringX(vp *map[uint]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintStringV(v map[uint]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uint]string, xlen) + changed = true + } + + var mk uint + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uint) + v, changed := fastpathTV.DecMapUintUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uint) + fastpathTV.DecMapUintUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUintX(vp *map[uint]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUintV(v map[uint]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]uint, xlen) + changed = true + } + + var mk uint + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uint8) + v, changed := fastpathTV.DecMapUintUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uint8) + fastpathTV.DecMapUintUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUint8X(vp *map[uint]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUint8V(v map[uint]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint]uint8, xlen) + changed = true + } + + var mk uint + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uint16) + v, changed := fastpathTV.DecMapUintUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uint16) + fastpathTV.DecMapUintUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUint16X(vp *map[uint]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUint16V(v map[uint]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint]uint16, xlen) + changed = true + } + + var mk uint + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uint32) + v, changed := fastpathTV.DecMapUintUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uint32) + fastpathTV.DecMapUintUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUint32X(vp *map[uint]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUint32V(v map[uint]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint]uint32, xlen) + changed = true + } + + var mk uint + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uint64) + v, changed := fastpathTV.DecMapUintUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uint64) + fastpathTV.DecMapUintUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUint64X(vp *map[uint]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUint64V(v map[uint]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]uint64, xlen) + changed = true + } + + var mk uint + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]uintptr) + v, changed := fastpathTV.DecMapUintUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]uintptr) + fastpathTV.DecMapUintUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintUintptrX(vp *map[uint]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintUintptrV(v map[uint]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]uintptr, xlen) + changed = true + } + + var mk uint + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]int) + v, changed := fastpathTV.DecMapUintIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]int) + fastpathTV.DecMapUintIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintIntX(vp *map[uint]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintIntV(v map[uint]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]int, xlen) + changed = true + } + + var mk uint + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]int8) + v, changed := fastpathTV.DecMapUintInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]int8) + fastpathTV.DecMapUintInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintInt8X(vp *map[uint]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintInt8V(v map[uint]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint]int8, xlen) + changed = true + } + + var mk uint + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]int16) + v, changed := fastpathTV.DecMapUintInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]int16) + fastpathTV.DecMapUintInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintInt16X(vp *map[uint]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintInt16V(v map[uint]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint]int16, xlen) + changed = true + } + + var mk uint + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]int32) + v, changed := fastpathTV.DecMapUintInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]int32) + fastpathTV.DecMapUintInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintInt32X(vp *map[uint]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintInt32V(v map[uint]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint]int32, xlen) + changed = true + } + + var mk uint + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]int64) + v, changed := fastpathTV.DecMapUintInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]int64) + fastpathTV.DecMapUintInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintInt64X(vp *map[uint]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintInt64V(v map[uint]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]int64, xlen) + changed = true + } + + var mk uint + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]float32) + v, changed := fastpathTV.DecMapUintFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]float32) + fastpathTV.DecMapUintFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintFloat32X(vp *map[uint]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintFloat32V(v map[uint]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint]float32, xlen) + changed = true + } + + var mk uint + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]float64) + v, changed := fastpathTV.DecMapUintFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]float64) + fastpathTV.DecMapUintFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintFloat64X(vp *map[uint]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintFloat64V(v map[uint]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint]float64, xlen) + changed = true + } + + var mk uint + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint]bool) + v, changed := fastpathTV.DecMapUintBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint]bool) + fastpathTV.DecMapUintBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintBoolX(vp *map[uint]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintBoolV(v map[uint]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uint]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint]bool, xlen) + changed = true + } + + var mk uint + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]interface{}) + v, changed := fastpathTV.DecMapUint8IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]interface{}) + fastpathTV.DecMapUint8IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8IntfX(vp *map[uint8]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8IntfV(v map[uint8]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[uint8]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uint8 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]string) + v, changed := fastpathTV.DecMapUint8StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]string) + fastpathTV.DecMapUint8StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8StringX(vp *map[uint8]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8StringV(v map[uint8]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[uint8]string, xlen) + changed = true + } + + var mk uint8 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uint) + v, changed := fastpathTV.DecMapUint8UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uint) + fastpathTV.DecMapUint8UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8UintX(vp *map[uint8]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8UintV(v map[uint8]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]uint, xlen) + changed = true + } + + var mk uint8 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uint8) + v, changed := fastpathTV.DecMapUint8Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uint8) + fastpathTV.DecMapUint8Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Uint8X(vp *map[uint8]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Uint8V(v map[uint8]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[uint8]uint8, xlen) + changed = true + } + + var mk uint8 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uint16) + v, changed := fastpathTV.DecMapUint8Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uint16) + fastpathTV.DecMapUint8Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Uint16X(vp *map[uint8]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Uint16V(v map[uint8]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[uint8]uint16, xlen) + changed = true + } + + var mk uint8 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uint32) + v, changed := fastpathTV.DecMapUint8Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uint32) + fastpathTV.DecMapUint8Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Uint32X(vp *map[uint8]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Uint32V(v map[uint8]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint8]uint32, xlen) + changed = true + } + + var mk uint8 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uint64) + v, changed := fastpathTV.DecMapUint8Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uint64) + fastpathTV.DecMapUint8Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Uint64X(vp *map[uint8]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Uint64V(v map[uint8]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]uint64, xlen) + changed = true + } + + var mk uint8 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]uintptr) + v, changed := fastpathTV.DecMapUint8UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]uintptr) + fastpathTV.DecMapUint8UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8UintptrX(vp *map[uint8]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8UintptrV(v map[uint8]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]uintptr, xlen) + changed = true + } + + var mk uint8 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]int) + v, changed := fastpathTV.DecMapUint8IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]int) + fastpathTV.DecMapUint8IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8IntX(vp *map[uint8]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8IntV(v map[uint8]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]int, xlen) + changed = true + } + + var mk uint8 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]int8) + v, changed := fastpathTV.DecMapUint8Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]int8) + fastpathTV.DecMapUint8Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Int8X(vp *map[uint8]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Int8V(v map[uint8]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[uint8]int8, xlen) + changed = true + } + + var mk uint8 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]int16) + v, changed := fastpathTV.DecMapUint8Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]int16) + fastpathTV.DecMapUint8Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Int16X(vp *map[uint8]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Int16V(v map[uint8]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[uint8]int16, xlen) + changed = true + } + + var mk uint8 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]int32) + v, changed := fastpathTV.DecMapUint8Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]int32) + fastpathTV.DecMapUint8Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Int32X(vp *map[uint8]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Int32V(v map[uint8]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint8]int32, xlen) + changed = true + } + + var mk uint8 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]int64) + v, changed := fastpathTV.DecMapUint8Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]int64) + fastpathTV.DecMapUint8Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Int64X(vp *map[uint8]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Int64V(v map[uint8]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]int64, xlen) + changed = true + } + + var mk uint8 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]float32) + v, changed := fastpathTV.DecMapUint8Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]float32) + fastpathTV.DecMapUint8Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Float32X(vp *map[uint8]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Float32V(v map[uint8]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint8]float32, xlen) + changed = true + } + + var mk uint8 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]float64) + v, changed := fastpathTV.DecMapUint8Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]float64) + fastpathTV.DecMapUint8Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8Float64X(vp *map[uint8]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8Float64V(v map[uint8]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint8]float64, xlen) + changed = true + } + + var mk uint8 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint8BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint8]bool) + v, changed := fastpathTV.DecMapUint8BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint8]bool) + fastpathTV.DecMapUint8BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint8BoolX(vp *map[uint8]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint8BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint8BoolV(v map[uint8]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uint8]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[uint8]bool, xlen) + changed = true + } + + var mk uint8 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint8(dd.DecodeUint(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]interface{}) + v, changed := fastpathTV.DecMapUint16IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]interface{}) + fastpathTV.DecMapUint16IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16IntfX(vp *map[uint16]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16IntfV(v map[uint16]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[uint16]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uint16 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]string) + v, changed := fastpathTV.DecMapUint16StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]string) + fastpathTV.DecMapUint16StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16StringX(vp *map[uint16]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16StringV(v map[uint16]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[uint16]string, xlen) + changed = true + } + + var mk uint16 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uint) + v, changed := fastpathTV.DecMapUint16UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uint) + fastpathTV.DecMapUint16UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16UintX(vp *map[uint16]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16UintV(v map[uint16]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]uint, xlen) + changed = true + } + + var mk uint16 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uint8) + v, changed := fastpathTV.DecMapUint16Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uint8) + fastpathTV.DecMapUint16Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Uint8X(vp *map[uint16]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Uint8V(v map[uint16]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[uint16]uint8, xlen) + changed = true + } + + var mk uint16 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uint16) + v, changed := fastpathTV.DecMapUint16Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uint16) + fastpathTV.DecMapUint16Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Uint16X(vp *map[uint16]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Uint16V(v map[uint16]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) + v = make(map[uint16]uint16, xlen) + changed = true + } + + var mk uint16 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uint32) + v, changed := fastpathTV.DecMapUint16Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uint32) + fastpathTV.DecMapUint16Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Uint32X(vp *map[uint16]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Uint32V(v map[uint16]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[uint16]uint32, xlen) + changed = true + } + + var mk uint16 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uint64) + v, changed := fastpathTV.DecMapUint16Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uint64) + fastpathTV.DecMapUint16Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Uint64X(vp *map[uint16]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Uint64V(v map[uint16]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]uint64, xlen) + changed = true + } + + var mk uint16 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]uintptr) + v, changed := fastpathTV.DecMapUint16UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]uintptr) + fastpathTV.DecMapUint16UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16UintptrX(vp *map[uint16]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16UintptrV(v map[uint16]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]uintptr, xlen) + changed = true + } + + var mk uint16 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]int) + v, changed := fastpathTV.DecMapUint16IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]int) + fastpathTV.DecMapUint16IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16IntX(vp *map[uint16]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16IntV(v map[uint16]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]int, xlen) + changed = true + } + + var mk uint16 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]int8) + v, changed := fastpathTV.DecMapUint16Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]int8) + fastpathTV.DecMapUint16Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Int8X(vp *map[uint16]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Int8V(v map[uint16]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[uint16]int8, xlen) + changed = true + } + + var mk uint16 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]int16) + v, changed := fastpathTV.DecMapUint16Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]int16) + fastpathTV.DecMapUint16Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Int16X(vp *map[uint16]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Int16V(v map[uint16]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) + v = make(map[uint16]int16, xlen) + changed = true + } + + var mk uint16 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]int32) + v, changed := fastpathTV.DecMapUint16Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]int32) + fastpathTV.DecMapUint16Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Int32X(vp *map[uint16]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Int32V(v map[uint16]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[uint16]int32, xlen) + changed = true + } + + var mk uint16 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]int64) + v, changed := fastpathTV.DecMapUint16Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]int64) + fastpathTV.DecMapUint16Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Int64X(vp *map[uint16]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Int64V(v map[uint16]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]int64, xlen) + changed = true + } + + var mk uint16 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]float32) + v, changed := fastpathTV.DecMapUint16Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]float32) + fastpathTV.DecMapUint16Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Float32X(vp *map[uint16]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Float32V(v map[uint16]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[uint16]float32, xlen) + changed = true + } + + var mk uint16 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]float64) + v, changed := fastpathTV.DecMapUint16Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]float64) + fastpathTV.DecMapUint16Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16Float64X(vp *map[uint16]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16Float64V(v map[uint16]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint16]float64, xlen) + changed = true + } + + var mk uint16 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint16BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint16]bool) + v, changed := fastpathTV.DecMapUint16BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint16]bool) + fastpathTV.DecMapUint16BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint16BoolX(vp *map[uint16]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint16BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint16BoolV(v map[uint16]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uint16]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[uint16]bool, xlen) + changed = true + } + + var mk uint16 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint16(dd.DecodeUint(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]interface{}) + v, changed := fastpathTV.DecMapUint32IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]interface{}) + fastpathTV.DecMapUint32IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32IntfX(vp *map[uint32]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32IntfV(v map[uint32]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[uint32]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uint32 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]string) + v, changed := fastpathTV.DecMapUint32StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]string) + fastpathTV.DecMapUint32StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32StringX(vp *map[uint32]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32StringV(v map[uint32]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[uint32]string, xlen) + changed = true + } + + var mk uint32 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uint) + v, changed := fastpathTV.DecMapUint32UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uint) + fastpathTV.DecMapUint32UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32UintX(vp *map[uint32]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32UintV(v map[uint32]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]uint, xlen) + changed = true + } + + var mk uint32 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uint8) + v, changed := fastpathTV.DecMapUint32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uint8) + fastpathTV.DecMapUint32Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Uint8X(vp *map[uint32]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Uint8V(v map[uint32]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint32]uint8, xlen) + changed = true + } + + var mk uint32 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uint16) + v, changed := fastpathTV.DecMapUint32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uint16) + fastpathTV.DecMapUint32Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Uint16X(vp *map[uint32]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Uint16V(v map[uint32]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[uint32]uint16, xlen) + changed = true + } + + var mk uint32 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uint32) + v, changed := fastpathTV.DecMapUint32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uint32) + fastpathTV.DecMapUint32Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Uint32X(vp *map[uint32]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Uint32V(v map[uint32]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[uint32]uint32, xlen) + changed = true + } + + var mk uint32 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uint64) + v, changed := fastpathTV.DecMapUint32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uint64) + fastpathTV.DecMapUint32Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Uint64X(vp *map[uint32]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Uint64V(v map[uint32]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]uint64, xlen) + changed = true + } + + var mk uint32 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]uintptr) + v, changed := fastpathTV.DecMapUint32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]uintptr) + fastpathTV.DecMapUint32UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32UintptrX(vp *map[uint32]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32UintptrV(v map[uint32]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]uintptr, xlen) + changed = true + } + + var mk uint32 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]int) + v, changed := fastpathTV.DecMapUint32IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]int) + fastpathTV.DecMapUint32IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32IntX(vp *map[uint32]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32IntV(v map[uint32]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]int, xlen) + changed = true + } + + var mk uint32 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]int8) + v, changed := fastpathTV.DecMapUint32Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]int8) + fastpathTV.DecMapUint32Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Int8X(vp *map[uint32]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Int8V(v map[uint32]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint32]int8, xlen) + changed = true + } + + var mk uint32 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]int16) + v, changed := fastpathTV.DecMapUint32Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]int16) + fastpathTV.DecMapUint32Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Int16X(vp *map[uint32]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Int16V(v map[uint32]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[uint32]int16, xlen) + changed = true + } + + var mk uint32 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]int32) + v, changed := fastpathTV.DecMapUint32Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]int32) + fastpathTV.DecMapUint32Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Int32X(vp *map[uint32]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Int32V(v map[uint32]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[uint32]int32, xlen) + changed = true + } + + var mk uint32 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]int64) + v, changed := fastpathTV.DecMapUint32Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]int64) + fastpathTV.DecMapUint32Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Int64X(vp *map[uint32]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Int64V(v map[uint32]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]int64, xlen) + changed = true + } + + var mk uint32 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]float32) + v, changed := fastpathTV.DecMapUint32Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]float32) + fastpathTV.DecMapUint32Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Float32X(vp *map[uint32]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Float32V(v map[uint32]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[uint32]float32, xlen) + changed = true + } + + var mk uint32 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]float64) + v, changed := fastpathTV.DecMapUint32Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]float64) + fastpathTV.DecMapUint32Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32Float64X(vp *map[uint32]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32Float64V(v map[uint32]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint32]float64, xlen) + changed = true + } + + var mk uint32 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint32BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint32]bool) + v, changed := fastpathTV.DecMapUint32BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint32]bool) + fastpathTV.DecMapUint32BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint32BoolX(vp *map[uint32]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint32BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint32BoolV(v map[uint32]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uint32]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[uint32]bool, xlen) + changed = true + } + + var mk uint32 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uint32(dd.DecodeUint(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]interface{}) + v, changed := fastpathTV.DecMapUint64IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]interface{}) + fastpathTV.DecMapUint64IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64IntfX(vp *map[uint64]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64IntfV(v map[uint64]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uint64]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uint64 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]string) + v, changed := fastpathTV.DecMapUint64StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]string) + fastpathTV.DecMapUint64StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64StringX(vp *map[uint64]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64StringV(v map[uint64]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uint64]string, xlen) + changed = true + } + + var mk uint64 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uint) + v, changed := fastpathTV.DecMapUint64UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uint) + fastpathTV.DecMapUint64UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64UintX(vp *map[uint64]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64UintV(v map[uint64]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]uint, xlen) + changed = true + } + + var mk uint64 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uint8) + v, changed := fastpathTV.DecMapUint64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uint8) + fastpathTV.DecMapUint64Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Uint8X(vp *map[uint64]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Uint8V(v map[uint64]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint64]uint8, xlen) + changed = true + } + + var mk uint64 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uint16) + v, changed := fastpathTV.DecMapUint64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uint16) + fastpathTV.DecMapUint64Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Uint16X(vp *map[uint64]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Uint16V(v map[uint64]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint64]uint16, xlen) + changed = true + } + + var mk uint64 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uint32) + v, changed := fastpathTV.DecMapUint64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uint32) + fastpathTV.DecMapUint64Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Uint32X(vp *map[uint64]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Uint32V(v map[uint64]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint64]uint32, xlen) + changed = true + } + + var mk uint64 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uint64) + v, changed := fastpathTV.DecMapUint64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uint64) + fastpathTV.DecMapUint64Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Uint64X(vp *map[uint64]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Uint64V(v map[uint64]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]uint64, xlen) + changed = true + } + + var mk uint64 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]uintptr) + v, changed := fastpathTV.DecMapUint64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]uintptr) + fastpathTV.DecMapUint64UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64UintptrX(vp *map[uint64]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64UintptrV(v map[uint64]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]uintptr, xlen) + changed = true + } + + var mk uint64 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]int) + v, changed := fastpathTV.DecMapUint64IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]int) + fastpathTV.DecMapUint64IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64IntX(vp *map[uint64]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64IntV(v map[uint64]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]int, xlen) + changed = true + } + + var mk uint64 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]int8) + v, changed := fastpathTV.DecMapUint64Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]int8) + fastpathTV.DecMapUint64Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Int8X(vp *map[uint64]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Int8V(v map[uint64]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint64]int8, xlen) + changed = true + } + + var mk uint64 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]int16) + v, changed := fastpathTV.DecMapUint64Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]int16) + fastpathTV.DecMapUint64Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Int16X(vp *map[uint64]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Int16V(v map[uint64]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uint64]int16, xlen) + changed = true + } + + var mk uint64 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]int32) + v, changed := fastpathTV.DecMapUint64Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]int32) + fastpathTV.DecMapUint64Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Int32X(vp *map[uint64]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Int32V(v map[uint64]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint64]int32, xlen) + changed = true + } + + var mk uint64 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]int64) + v, changed := fastpathTV.DecMapUint64Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]int64) + fastpathTV.DecMapUint64Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Int64X(vp *map[uint64]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Int64V(v map[uint64]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]int64, xlen) + changed = true + } + + var mk uint64 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]float32) + v, changed := fastpathTV.DecMapUint64Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]float32) + fastpathTV.DecMapUint64Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Float32X(vp *map[uint64]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Float32V(v map[uint64]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uint64]float32, xlen) + changed = true + } + + var mk uint64 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]float64) + v, changed := fastpathTV.DecMapUint64Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]float64) + fastpathTV.DecMapUint64Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64Float64X(vp *map[uint64]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64Float64V(v map[uint64]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uint64]float64, xlen) + changed = true + } + + var mk uint64 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUint64BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uint64]bool) + v, changed := fastpathTV.DecMapUint64BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uint64]bool) + fastpathTV.DecMapUint64BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUint64BoolX(vp *map[uint64]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUint64BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUint64BoolV(v map[uint64]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uint64]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uint64]bool, xlen) + changed = true + } + + var mk uint64 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeUint(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]interface{}) + v, changed := fastpathTV.DecMapUintptrIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]interface{}) + fastpathTV.DecMapUintptrIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrIntfX(vp *map[uintptr]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrIntfV(v map[uintptr]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uintptr]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk uintptr + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]string) + v, changed := fastpathTV.DecMapUintptrStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]string) + fastpathTV.DecMapUintptrStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrStringX(vp *map[uintptr]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrStringV(v map[uintptr]string, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[uintptr]string, xlen) + changed = true + } + + var mk uintptr + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uint) + v, changed := fastpathTV.DecMapUintptrUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uint) + fastpathTV.DecMapUintptrUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUintX(vp *map[uintptr]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUintV(v map[uintptr]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]uint, xlen) + changed = true + } + + var mk uintptr + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uint8) + v, changed := fastpathTV.DecMapUintptrUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uint8) + fastpathTV.DecMapUintptrUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUint8X(vp *map[uintptr]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUint8V(v map[uintptr]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uintptr]uint8, xlen) + changed = true + } + + var mk uintptr + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uint16) + v, changed := fastpathTV.DecMapUintptrUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uint16) + fastpathTV.DecMapUintptrUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUint16X(vp *map[uintptr]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUint16V(v map[uintptr]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uintptr]uint16, xlen) + changed = true + } + + var mk uintptr + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uint32) + v, changed := fastpathTV.DecMapUintptrUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uint32) + fastpathTV.DecMapUintptrUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUint32X(vp *map[uintptr]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUint32V(v map[uintptr]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uintptr]uint32, xlen) + changed = true + } + + var mk uintptr + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uint64) + v, changed := fastpathTV.DecMapUintptrUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uint64) + fastpathTV.DecMapUintptrUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUint64X(vp *map[uintptr]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUint64V(v map[uintptr]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]uint64, xlen) + changed = true + } + + var mk uintptr + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]uintptr) + v, changed := fastpathTV.DecMapUintptrUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]uintptr) + fastpathTV.DecMapUintptrUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrUintptrX(vp *map[uintptr]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrUintptrV(v map[uintptr]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]uintptr, xlen) + changed = true + } + + var mk uintptr + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]int) + v, changed := fastpathTV.DecMapUintptrIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]int) + fastpathTV.DecMapUintptrIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrIntX(vp *map[uintptr]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrIntV(v map[uintptr]int, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]int, xlen) + changed = true + } + + var mk uintptr + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]int8) + v, changed := fastpathTV.DecMapUintptrInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]int8) + fastpathTV.DecMapUintptrInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrInt8X(vp *map[uintptr]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrInt8V(v map[uintptr]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uintptr]int8, xlen) + changed = true + } + + var mk uintptr + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]int16) + v, changed := fastpathTV.DecMapUintptrInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]int16) + fastpathTV.DecMapUintptrInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrInt16X(vp *map[uintptr]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrInt16V(v map[uintptr]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[uintptr]int16, xlen) + changed = true + } + + var mk uintptr + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]int32) + v, changed := fastpathTV.DecMapUintptrInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]int32) + fastpathTV.DecMapUintptrInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrInt32X(vp *map[uintptr]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrInt32V(v map[uintptr]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uintptr]int32, xlen) + changed = true + } + + var mk uintptr + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]int64) + v, changed := fastpathTV.DecMapUintptrInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]int64) + fastpathTV.DecMapUintptrInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrInt64X(vp *map[uintptr]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrInt64V(v map[uintptr]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]int64, xlen) + changed = true + } + + var mk uintptr + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]float32) + v, changed := fastpathTV.DecMapUintptrFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]float32) + fastpathTV.DecMapUintptrFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrFloat32X(vp *map[uintptr]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrFloat32V(v map[uintptr]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[uintptr]float32, xlen) + changed = true + } + + var mk uintptr + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]float64) + v, changed := fastpathTV.DecMapUintptrFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]float64) + fastpathTV.DecMapUintptrFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrFloat64X(vp *map[uintptr]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrFloat64V(v map[uintptr]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[uintptr]float64, xlen) + changed = true + } + + var mk uintptr + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapUintptrBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[uintptr]bool) + v, changed := fastpathTV.DecMapUintptrBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[uintptr]bool) + fastpathTV.DecMapUintptrBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapUintptrBoolX(vp *map[uintptr]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapUintptrBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapUintptrBoolV(v map[uintptr]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[uintptr]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[uintptr]bool, xlen) + changed = true + } + + var mk uintptr + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = uintptr(dd.DecodeUint(uintBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]interface{}) + v, changed := fastpathTV.DecMapIntIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]interface{}) + fastpathTV.DecMapIntIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntIntfX(vp *map[int]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntIntfV(v map[int]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[int]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[int]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk int + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]string) + v, changed := fastpathTV.DecMapIntStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]string) + fastpathTV.DecMapIntStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntStringX(vp *map[int]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntStringV(v map[int]string, checkNil bool, canChange bool, + d *Decoder) (_ map[int]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[int]string, xlen) + changed = true + } + + var mk int + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uint) + v, changed := fastpathTV.DecMapIntUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uint) + fastpathTV.DecMapIntUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUintX(vp *map[int]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUintV(v map[int]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]uint, xlen) + changed = true + } + + var mk int + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uint8) + v, changed := fastpathTV.DecMapIntUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uint8) + fastpathTV.DecMapIntUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUint8X(vp *map[int]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUint8V(v map[int]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int]uint8, xlen) + changed = true + } + + var mk int + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uint16) + v, changed := fastpathTV.DecMapIntUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uint16) + fastpathTV.DecMapIntUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUint16X(vp *map[int]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUint16V(v map[int]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int]uint16, xlen) + changed = true + } + + var mk int + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uint32) + v, changed := fastpathTV.DecMapIntUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uint32) + fastpathTV.DecMapIntUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUint32X(vp *map[int]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUint32V(v map[int]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int]uint32, xlen) + changed = true + } + + var mk int + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uint64) + v, changed := fastpathTV.DecMapIntUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uint64) + fastpathTV.DecMapIntUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUint64X(vp *map[int]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUint64V(v map[int]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]uint64, xlen) + changed = true + } + + var mk int + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]uintptr) + v, changed := fastpathTV.DecMapIntUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]uintptr) + fastpathTV.DecMapIntUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntUintptrX(vp *map[int]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntUintptrV(v map[int]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[int]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]uintptr, xlen) + changed = true + } + + var mk int + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]int) + v, changed := fastpathTV.DecMapIntIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]int) + fastpathTV.DecMapIntIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntIntX(vp *map[int]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntIntV(v map[int]int, checkNil bool, canChange bool, + d *Decoder) (_ map[int]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]int, xlen) + changed = true + } + + var mk int + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]int8) + v, changed := fastpathTV.DecMapIntInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]int8) + fastpathTV.DecMapIntInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntInt8X(vp *map[int]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntInt8V(v map[int]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[int]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int]int8, xlen) + changed = true + } + + var mk int + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]int16) + v, changed := fastpathTV.DecMapIntInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]int16) + fastpathTV.DecMapIntInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntInt16X(vp *map[int]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntInt16V(v map[int]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[int]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int]int16, xlen) + changed = true + } + + var mk int + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]int32) + v, changed := fastpathTV.DecMapIntInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]int32) + fastpathTV.DecMapIntInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntInt32X(vp *map[int]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntInt32V(v map[int]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[int]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int]int32, xlen) + changed = true + } + + var mk int + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]int64) + v, changed := fastpathTV.DecMapIntInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]int64) + fastpathTV.DecMapIntInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntInt64X(vp *map[int]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntInt64V(v map[int]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[int]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]int64, xlen) + changed = true + } + + var mk int + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]float32) + v, changed := fastpathTV.DecMapIntFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]float32) + fastpathTV.DecMapIntFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntFloat32X(vp *map[int]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntFloat32V(v map[int]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[int]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int]float32, xlen) + changed = true + } + + var mk int + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]float64) + v, changed := fastpathTV.DecMapIntFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]float64) + fastpathTV.DecMapIntFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntFloat64X(vp *map[int]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntFloat64V(v map[int]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[int]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int]float64, xlen) + changed = true + } + + var mk int + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapIntBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int]bool) + v, changed := fastpathTV.DecMapIntBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int]bool) + fastpathTV.DecMapIntBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapIntBoolX(vp *map[int]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapIntBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapIntBoolV(v map[int]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[int]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int]bool, xlen) + changed = true + } + + var mk int + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int(dd.DecodeInt(intBitsize)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]interface{}) + v, changed := fastpathTV.DecMapInt8IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]interface{}) + fastpathTV.DecMapInt8IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8IntfX(vp *map[int8]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8IntfV(v map[int8]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[int8]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk int8 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]string) + v, changed := fastpathTV.DecMapInt8StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]string) + fastpathTV.DecMapInt8StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8StringX(vp *map[int8]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8StringV(v map[int8]string, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[int8]string, xlen) + changed = true + } + + var mk int8 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uint) + v, changed := fastpathTV.DecMapInt8UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uint) + fastpathTV.DecMapInt8UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8UintX(vp *map[int8]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8UintV(v map[int8]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]uint, xlen) + changed = true + } + + var mk int8 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uint8) + v, changed := fastpathTV.DecMapInt8Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uint8) + fastpathTV.DecMapInt8Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Uint8X(vp *map[int8]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Uint8V(v map[int8]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[int8]uint8, xlen) + changed = true + } + + var mk int8 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uint16) + v, changed := fastpathTV.DecMapInt8Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uint16) + fastpathTV.DecMapInt8Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Uint16X(vp *map[int8]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Uint16V(v map[int8]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[int8]uint16, xlen) + changed = true + } + + var mk int8 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uint32) + v, changed := fastpathTV.DecMapInt8Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uint32) + fastpathTV.DecMapInt8Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Uint32X(vp *map[int8]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Uint32V(v map[int8]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int8]uint32, xlen) + changed = true + } + + var mk int8 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uint64) + v, changed := fastpathTV.DecMapInt8Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uint64) + fastpathTV.DecMapInt8Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Uint64X(vp *map[int8]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Uint64V(v map[int8]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]uint64, xlen) + changed = true + } + + var mk int8 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]uintptr) + v, changed := fastpathTV.DecMapInt8UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]uintptr) + fastpathTV.DecMapInt8UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8UintptrX(vp *map[int8]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8UintptrV(v map[int8]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]uintptr, xlen) + changed = true + } + + var mk int8 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]int) + v, changed := fastpathTV.DecMapInt8IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]int) + fastpathTV.DecMapInt8IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8IntX(vp *map[int8]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8IntV(v map[int8]int, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]int, xlen) + changed = true + } + + var mk int8 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]int8) + v, changed := fastpathTV.DecMapInt8Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]int8) + fastpathTV.DecMapInt8Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Int8X(vp *map[int8]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Int8V(v map[int8]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[int8]int8, xlen) + changed = true + } + + var mk int8 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]int16) + v, changed := fastpathTV.DecMapInt8Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]int16) + fastpathTV.DecMapInt8Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Int16X(vp *map[int8]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Int16V(v map[int8]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[int8]int16, xlen) + changed = true + } + + var mk int8 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]int32) + v, changed := fastpathTV.DecMapInt8Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]int32) + fastpathTV.DecMapInt8Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Int32X(vp *map[int8]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Int32V(v map[int8]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int8]int32, xlen) + changed = true + } + + var mk int8 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]int64) + v, changed := fastpathTV.DecMapInt8Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]int64) + fastpathTV.DecMapInt8Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Int64X(vp *map[int8]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Int64V(v map[int8]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]int64, xlen) + changed = true + } + + var mk int8 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]float32) + v, changed := fastpathTV.DecMapInt8Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]float32) + fastpathTV.DecMapInt8Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Float32X(vp *map[int8]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Float32V(v map[int8]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int8]float32, xlen) + changed = true + } + + var mk int8 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]float64) + v, changed := fastpathTV.DecMapInt8Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]float64) + fastpathTV.DecMapInt8Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8Float64X(vp *map[int8]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8Float64V(v map[int8]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int8]float64, xlen) + changed = true + } + + var mk int8 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt8BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int8]bool) + v, changed := fastpathTV.DecMapInt8BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int8]bool) + fastpathTV.DecMapInt8BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt8BoolX(vp *map[int8]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt8BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt8BoolV(v map[int8]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[int8]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[int8]bool, xlen) + changed = true + } + + var mk int8 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int8(dd.DecodeInt(8)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]interface{}) + v, changed := fastpathTV.DecMapInt16IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]interface{}) + fastpathTV.DecMapInt16IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16IntfX(vp *map[int16]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16IntfV(v map[int16]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[int16]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk int16 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]string) + v, changed := fastpathTV.DecMapInt16StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]string) + fastpathTV.DecMapInt16StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16StringX(vp *map[int16]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16StringV(v map[int16]string, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 18) + v = make(map[int16]string, xlen) + changed = true + } + + var mk int16 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uint) + v, changed := fastpathTV.DecMapInt16UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uint) + fastpathTV.DecMapInt16UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16UintX(vp *map[int16]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16UintV(v map[int16]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]uint, xlen) + changed = true + } + + var mk int16 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uint8) + v, changed := fastpathTV.DecMapInt16Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uint8) + fastpathTV.DecMapInt16Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Uint8X(vp *map[int16]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Uint8V(v map[int16]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[int16]uint8, xlen) + changed = true + } + + var mk int16 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uint16) + v, changed := fastpathTV.DecMapInt16Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uint16) + fastpathTV.DecMapInt16Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Uint16X(vp *map[int16]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Uint16V(v map[int16]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) + v = make(map[int16]uint16, xlen) + changed = true + } + + var mk int16 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uint32) + v, changed := fastpathTV.DecMapInt16Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uint32) + fastpathTV.DecMapInt16Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Uint32X(vp *map[int16]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Uint32V(v map[int16]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[int16]uint32, xlen) + changed = true + } + + var mk int16 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uint64) + v, changed := fastpathTV.DecMapInt16Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uint64) + fastpathTV.DecMapInt16Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Uint64X(vp *map[int16]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Uint64V(v map[int16]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]uint64, xlen) + changed = true + } + + var mk int16 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]uintptr) + v, changed := fastpathTV.DecMapInt16UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]uintptr) + fastpathTV.DecMapInt16UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16UintptrX(vp *map[int16]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16UintptrV(v map[int16]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]uintptr, xlen) + changed = true + } + + var mk int16 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]int) + v, changed := fastpathTV.DecMapInt16IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]int) + fastpathTV.DecMapInt16IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16IntX(vp *map[int16]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16IntV(v map[int16]int, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]int, xlen) + changed = true + } + + var mk int16 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]int8) + v, changed := fastpathTV.DecMapInt16Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]int8) + fastpathTV.DecMapInt16Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Int8X(vp *map[int16]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Int8V(v map[int16]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[int16]int8, xlen) + changed = true + } + + var mk int16 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]int16) + v, changed := fastpathTV.DecMapInt16Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]int16) + fastpathTV.DecMapInt16Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Int16X(vp *map[int16]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Int16V(v map[int16]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 4) + v = make(map[int16]int16, xlen) + changed = true + } + + var mk int16 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]int32) + v, changed := fastpathTV.DecMapInt16Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]int32) + fastpathTV.DecMapInt16Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Int32X(vp *map[int16]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Int32V(v map[int16]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[int16]int32, xlen) + changed = true + } + + var mk int16 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]int64) + v, changed := fastpathTV.DecMapInt16Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]int64) + fastpathTV.DecMapInt16Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Int64X(vp *map[int16]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Int64V(v map[int16]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]int64, xlen) + changed = true + } + + var mk int16 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]float32) + v, changed := fastpathTV.DecMapInt16Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]float32) + fastpathTV.DecMapInt16Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Float32X(vp *map[int16]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Float32V(v map[int16]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[int16]float32, xlen) + changed = true + } + + var mk int16 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]float64) + v, changed := fastpathTV.DecMapInt16Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]float64) + fastpathTV.DecMapInt16Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16Float64X(vp *map[int16]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16Float64V(v map[int16]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int16]float64, xlen) + changed = true + } + + var mk int16 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt16BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int16]bool) + v, changed := fastpathTV.DecMapInt16BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int16]bool) + fastpathTV.DecMapInt16BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt16BoolX(vp *map[int16]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt16BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt16BoolV(v map[int16]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[int16]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[int16]bool, xlen) + changed = true + } + + var mk int16 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int16(dd.DecodeInt(16)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]interface{}) + v, changed := fastpathTV.DecMapInt32IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]interface{}) + fastpathTV.DecMapInt32IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32IntfX(vp *map[int32]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32IntfV(v map[int32]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[int32]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk int32 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]string) + v, changed := fastpathTV.DecMapInt32StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]string) + fastpathTV.DecMapInt32StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32StringX(vp *map[int32]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32StringV(v map[int32]string, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 20) + v = make(map[int32]string, xlen) + changed = true + } + + var mk int32 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uint) + v, changed := fastpathTV.DecMapInt32UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uint) + fastpathTV.DecMapInt32UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32UintX(vp *map[int32]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32UintV(v map[int32]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]uint, xlen) + changed = true + } + + var mk int32 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uint8) + v, changed := fastpathTV.DecMapInt32Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uint8) + fastpathTV.DecMapInt32Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Uint8X(vp *map[int32]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Uint8V(v map[int32]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int32]uint8, xlen) + changed = true + } + + var mk int32 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uint16) + v, changed := fastpathTV.DecMapInt32Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uint16) + fastpathTV.DecMapInt32Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Uint16X(vp *map[int32]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Uint16V(v map[int32]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[int32]uint16, xlen) + changed = true + } + + var mk int32 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uint32) + v, changed := fastpathTV.DecMapInt32Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uint32) + fastpathTV.DecMapInt32Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Uint32X(vp *map[int32]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Uint32V(v map[int32]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[int32]uint32, xlen) + changed = true + } + + var mk int32 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uint64) + v, changed := fastpathTV.DecMapInt32Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uint64) + fastpathTV.DecMapInt32Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Uint64X(vp *map[int32]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Uint64V(v map[int32]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]uint64, xlen) + changed = true + } + + var mk int32 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]uintptr) + v, changed := fastpathTV.DecMapInt32UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]uintptr) + fastpathTV.DecMapInt32UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32UintptrX(vp *map[int32]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32UintptrV(v map[int32]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]uintptr, xlen) + changed = true + } + + var mk int32 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]int) + v, changed := fastpathTV.DecMapInt32IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]int) + fastpathTV.DecMapInt32IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32IntX(vp *map[int32]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32IntV(v map[int32]int, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]int, xlen) + changed = true + } + + var mk int32 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]int8) + v, changed := fastpathTV.DecMapInt32Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]int8) + fastpathTV.DecMapInt32Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Int8X(vp *map[int32]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Int8V(v map[int32]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int32]int8, xlen) + changed = true + } + + var mk int32 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]int16) + v, changed := fastpathTV.DecMapInt32Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]int16) + fastpathTV.DecMapInt32Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Int16X(vp *map[int32]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Int16V(v map[int32]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 6) + v = make(map[int32]int16, xlen) + changed = true + } + + var mk int32 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]int32) + v, changed := fastpathTV.DecMapInt32Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]int32) + fastpathTV.DecMapInt32Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Int32X(vp *map[int32]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Int32V(v map[int32]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[int32]int32, xlen) + changed = true + } + + var mk int32 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]int64) + v, changed := fastpathTV.DecMapInt32Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]int64) + fastpathTV.DecMapInt32Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Int64X(vp *map[int32]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Int64V(v map[int32]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]int64, xlen) + changed = true + } + + var mk int32 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]float32) + v, changed := fastpathTV.DecMapInt32Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]float32) + fastpathTV.DecMapInt32Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Float32X(vp *map[int32]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Float32V(v map[int32]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 8) + v = make(map[int32]float32, xlen) + changed = true + } + + var mk int32 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]float64) + v, changed := fastpathTV.DecMapInt32Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]float64) + fastpathTV.DecMapInt32Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32Float64X(vp *map[int32]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32Float64V(v map[int32]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int32]float64, xlen) + changed = true + } + + var mk int32 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt32BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int32]bool) + v, changed := fastpathTV.DecMapInt32BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int32]bool) + fastpathTV.DecMapInt32BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt32BoolX(vp *map[int32]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt32BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt32BoolV(v map[int32]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[int32]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[int32]bool, xlen) + changed = true + } + + var mk int32 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = int32(dd.DecodeInt(32)) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64IntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]interface{}) + v, changed := fastpathTV.DecMapInt64IntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]interface{}) + fastpathTV.DecMapInt64IntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64IntfX(vp *map[int64]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64IntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64IntfV(v map[int64]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[int64]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk int64 + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64StringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]string) + v, changed := fastpathTV.DecMapInt64StringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]string) + fastpathTV.DecMapInt64StringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64StringX(vp *map[int64]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64StringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64StringV(v map[int64]string, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 24) + v = make(map[int64]string, xlen) + changed = true + } + + var mk int64 + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64UintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uint) + v, changed := fastpathTV.DecMapInt64UintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uint) + fastpathTV.DecMapInt64UintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64UintX(vp *map[int64]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64UintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64UintV(v map[int64]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]uint, xlen) + changed = true + } + + var mk int64 + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Uint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uint8) + v, changed := fastpathTV.DecMapInt64Uint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uint8) + fastpathTV.DecMapInt64Uint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Uint8X(vp *map[int64]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Uint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Uint8V(v map[int64]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int64]uint8, xlen) + changed = true + } + + var mk int64 + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Uint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uint16) + v, changed := fastpathTV.DecMapInt64Uint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uint16) + fastpathTV.DecMapInt64Uint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Uint16X(vp *map[int64]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Uint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Uint16V(v map[int64]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int64]uint16, xlen) + changed = true + } + + var mk int64 + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Uint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uint32) + v, changed := fastpathTV.DecMapInt64Uint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uint32) + fastpathTV.DecMapInt64Uint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Uint32X(vp *map[int64]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Uint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Uint32V(v map[int64]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int64]uint32, xlen) + changed = true + } + + var mk int64 + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Uint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uint64) + v, changed := fastpathTV.DecMapInt64Uint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uint64) + fastpathTV.DecMapInt64Uint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Uint64X(vp *map[int64]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Uint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Uint64V(v map[int64]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]uint64, xlen) + changed = true + } + + var mk int64 + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64UintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]uintptr) + v, changed := fastpathTV.DecMapInt64UintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]uintptr) + fastpathTV.DecMapInt64UintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64UintptrX(vp *map[int64]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64UintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64UintptrV(v map[int64]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]uintptr, xlen) + changed = true + } + + var mk int64 + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64IntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]int) + v, changed := fastpathTV.DecMapInt64IntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]int) + fastpathTV.DecMapInt64IntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64IntX(vp *map[int64]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64IntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64IntV(v map[int64]int, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]int, xlen) + changed = true + } + + var mk int64 + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Int8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]int8) + v, changed := fastpathTV.DecMapInt64Int8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]int8) + fastpathTV.DecMapInt64Int8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Int8X(vp *map[int64]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Int8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Int8V(v map[int64]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int64]int8, xlen) + changed = true + } + + var mk int64 + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Int16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]int16) + v, changed := fastpathTV.DecMapInt64Int16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]int16) + fastpathTV.DecMapInt64Int16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Int16X(vp *map[int64]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Int16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Int16V(v map[int64]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 10) + v = make(map[int64]int16, xlen) + changed = true + } + + var mk int64 + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Int32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]int32) + v, changed := fastpathTV.DecMapInt64Int32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]int32) + fastpathTV.DecMapInt64Int32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Int32X(vp *map[int64]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Int32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Int32V(v map[int64]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int64]int32, xlen) + changed = true + } + + var mk int64 + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Int64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]int64) + v, changed := fastpathTV.DecMapInt64Int64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]int64) + fastpathTV.DecMapInt64Int64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Int64X(vp *map[int64]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Int64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Int64V(v map[int64]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]int64, xlen) + changed = true + } + + var mk int64 + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Float32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]float32) + v, changed := fastpathTV.DecMapInt64Float32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]float32) + fastpathTV.DecMapInt64Float32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Float32X(vp *map[int64]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Float32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Float32V(v map[int64]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 12) + v = make(map[int64]float32, xlen) + changed = true + } + + var mk int64 + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64Float64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]float64) + v, changed := fastpathTV.DecMapInt64Float64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]float64) + fastpathTV.DecMapInt64Float64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64Float64X(vp *map[int64]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64Float64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64Float64V(v map[int64]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 16) + v = make(map[int64]float64, xlen) + changed = true + } + + var mk int64 + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapInt64BoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[int64]bool) + v, changed := fastpathTV.DecMapInt64BoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[int64]bool) + fastpathTV.DecMapInt64BoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapInt64BoolX(vp *map[int64]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapInt64BoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapInt64BoolV(v map[int64]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[int64]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[int64]bool, xlen) + changed = true + } + + var mk int64 + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeInt(64) + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolIntfR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]interface{}) + v, changed := fastpathTV.DecMapBoolIntfV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]interface{}) + fastpathTV.DecMapBoolIntfV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolIntfX(vp *map[bool]interface{}, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolIntfV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolIntfV(v map[bool]interface{}, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]interface{}, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[bool]interface{}, xlen) + changed = true + } + mapGet := !d.h.MapValueReset && !d.h.InterfaceReset + var mk bool + var mv interface{} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + if mapGet { + mv = v[mk] + } else { + mv = nil + } + d.decode(&mv) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolStringR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]string) + v, changed := fastpathTV.DecMapBoolStringV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]string) + fastpathTV.DecMapBoolStringV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolStringX(vp *map[bool]string, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolStringV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolStringV(v map[bool]string, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]string, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 17) + v = make(map[bool]string, xlen) + changed = true + } + + var mk bool + var mv string + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeString() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUintR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uint) + v, changed := fastpathTV.DecMapBoolUintV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uint) + fastpathTV.DecMapBoolUintV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUintX(vp *map[bool]uint, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUintV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUintV(v map[bool]uint, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uint, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]uint, xlen) + changed = true + } + + var mk bool + var mv uint + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUint8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uint8) + v, changed := fastpathTV.DecMapBoolUint8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uint8) + fastpathTV.DecMapBoolUint8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUint8X(vp *map[bool]uint8, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUint8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUint8V(v map[bool]uint8, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uint8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[bool]uint8, xlen) + changed = true + } + + var mk bool + var mv uint8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint8(dd.DecodeUint(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUint16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uint16) + v, changed := fastpathTV.DecMapBoolUint16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uint16) + fastpathTV.DecMapBoolUint16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUint16X(vp *map[bool]uint16, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUint16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUint16V(v map[bool]uint16, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uint16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[bool]uint16, xlen) + changed = true + } + + var mk bool + var mv uint16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint16(dd.DecodeUint(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUint32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uint32) + v, changed := fastpathTV.DecMapBoolUint32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uint32) + fastpathTV.DecMapBoolUint32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUint32X(vp *map[bool]uint32, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUint32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUint32V(v map[bool]uint32, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uint32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[bool]uint32, xlen) + changed = true + } + + var mk bool + var mv uint32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uint32(dd.DecodeUint(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUint64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uint64) + v, changed := fastpathTV.DecMapBoolUint64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uint64) + fastpathTV.DecMapBoolUint64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUint64X(vp *map[bool]uint64, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUint64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUint64V(v map[bool]uint64, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uint64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]uint64, xlen) + changed = true + } + + var mk bool + var mv uint64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeUint(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolUintptrR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]uintptr) + v, changed := fastpathTV.DecMapBoolUintptrV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]uintptr) + fastpathTV.DecMapBoolUintptrV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolUintptrX(vp *map[bool]uintptr, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolUintptrV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolUintptrV(v map[bool]uintptr, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]uintptr, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]uintptr, xlen) + changed = true + } + + var mk bool + var mv uintptr + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = uintptr(dd.DecodeUint(uintBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolIntR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]int) + v, changed := fastpathTV.DecMapBoolIntV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]int) + fastpathTV.DecMapBoolIntV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolIntX(vp *map[bool]int, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolIntV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolIntV(v map[bool]int, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]int, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]int, xlen) + changed = true + } + + var mk bool + var mv int + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int(dd.DecodeInt(intBitsize)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolInt8R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]int8) + v, changed := fastpathTV.DecMapBoolInt8V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]int8) + fastpathTV.DecMapBoolInt8V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolInt8X(vp *map[bool]int8, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolInt8V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolInt8V(v map[bool]int8, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]int8, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[bool]int8, xlen) + changed = true + } + + var mk bool + var mv int8 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int8(dd.DecodeInt(8)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolInt16R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]int16) + v, changed := fastpathTV.DecMapBoolInt16V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]int16) + fastpathTV.DecMapBoolInt16V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolInt16X(vp *map[bool]int16, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolInt16V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolInt16V(v map[bool]int16, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]int16, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 3) + v = make(map[bool]int16, xlen) + changed = true + } + + var mk bool + var mv int16 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int16(dd.DecodeInt(16)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolInt32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]int32) + v, changed := fastpathTV.DecMapBoolInt32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]int32) + fastpathTV.DecMapBoolInt32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolInt32X(vp *map[bool]int32, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolInt32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolInt32V(v map[bool]int32, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]int32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[bool]int32, xlen) + changed = true + } + + var mk bool + var mv int32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = int32(dd.DecodeInt(32)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolInt64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]int64) + v, changed := fastpathTV.DecMapBoolInt64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]int64) + fastpathTV.DecMapBoolInt64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolInt64X(vp *map[bool]int64, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolInt64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolInt64V(v map[bool]int64, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]int64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]int64, xlen) + changed = true + } + + var mk bool + var mv int64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeInt(64) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolFloat32R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]float32) + v, changed := fastpathTV.DecMapBoolFloat32V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]float32) + fastpathTV.DecMapBoolFloat32V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolFloat32X(vp *map[bool]float32, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolFloat32V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolFloat32V(v map[bool]float32, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]float32, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 5) + v = make(map[bool]float32, xlen) + changed = true + } + + var mk bool + var mv float32 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = float32(dd.DecodeFloat(true)) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolFloat64R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]float64) + v, changed := fastpathTV.DecMapBoolFloat64V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]float64) + fastpathTV.DecMapBoolFloat64V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolFloat64X(vp *map[bool]float64, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolFloat64V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolFloat64V(v map[bool]float64, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]float64, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 9) + v = make(map[bool]float64, xlen) + changed = true + } + + var mk bool + var mv float64 + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeFloat(false) + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} + +func (f *decFnInfo) fastpathDecMapBoolBoolR(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[bool]bool) + v, changed := fastpathTV.DecMapBoolBoolV(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[bool]bool) + fastpathTV.DecMapBoolBoolV(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) DecMapBoolBoolX(vp *map[bool]bool, checkNil bool, d *Decoder) { + v, changed := f.DecMapBoolBoolV(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) DecMapBoolBoolV(v map[bool]bool, checkNil bool, canChange bool, + d *Decoder) (_ map[bool]bool, changed bool) { + dd := d.d + cr := d.cr + + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, 2) + v = make(map[bool]bool, xlen) + changed = true + } + + var mk bool + var mv bool + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { + cr.sendContainerState(containerMapKey) + } + mk = dd.DecodeBool() + if cr != nil { + cr.sendContainerState(containerMapValue) + } + mv = dd.DecodeBool() + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { + cr.sendContainerState(containerMapEnd) + } + return v, changed +} diff --git a/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl new file mode 100644 index 0000000000..58cc6df4c5 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl @@ -0,0 +1,511 @@ +// +build !notfastpath + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED from fast-path.go.tmpl +// ************************************************************ + +package codec + +// Fast path functions try to create a fast path encode or decode implementation +// for common maps and slices. +// +// We define the functions and register then in this single file +// so as not to pollute the encode.go and decode.go, and create a dependency in there. +// This file can be omitted without causing a build failure. +// +// The advantage of fast paths is: +// - Many calls bypass reflection altogether +// +// Currently support +// - slice of all builtin types, +// - map of all builtin types to string or interface value +// - symetrical maps of all builtin types (e.g. str-str, uint8-uint8) +// This should provide adequate "typical" implementations. +// +// Note that fast track decode functions must handle values for which an address cannot be obtained. +// For example: +// m2 := map[string]int{} +// p2 := []interface{}{m2} +// // decoding into p2 will bomb if fast track functions do not treat like unaddressable. +// + +import ( + "reflect" + "sort" +) + +const fastpathCheckNilFalse = false // for reflect +const fastpathCheckNilTrue = true // for type switch + +type fastpathT struct {} + +var fastpathTV fastpathT + +type fastpathE struct { + rtid uintptr + rt reflect.Type + encfn func(*encFnInfo, reflect.Value) + decfn func(*decFnInfo, reflect.Value) +} + +type fastpathA [{{ .FastpathLen }}]fastpathE + +func (x *fastpathA) index(rtid uintptr) int { + // use binary search to grab the index (adapted from sort/search.go) + h, i, j := 0, 0, {{ .FastpathLen }} // len(x) + for i < j { + h = i + (j-i)/2 + if x[h].rtid < rtid { + i = h + 1 + } else { + j = h + } + } + if i < {{ .FastpathLen }} && x[i].rtid == rtid { + return i + } + return -1 +} + +type fastpathAslice []fastpathE + +func (x fastpathAslice) Len() int { return len(x) } +func (x fastpathAslice) Less(i, j int) bool { return x[i].rtid < x[j].rtid } +func (x fastpathAslice) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +var fastpathAV fastpathA + +// due to possible initialization loop error, make fastpath in an init() +func init() { + if !fastpathEnabled { + return + } + i := 0 + fn := func(v interface{}, fe func(*encFnInfo, reflect.Value), fd func(*decFnInfo, reflect.Value)) (f fastpathE) { + xrt := reflect.TypeOf(v) + xptr := reflect.ValueOf(xrt).Pointer() + fastpathAV[i] = fastpathE{xptr, xrt, fe, fd} + i++ + return + } + + {{range .Values}}{{if not .Primitive}}{{if not .MapKey }} + fn([]{{ .Elem }}(nil), (*encFnInfo).{{ .MethodNamePfx "fastpathEnc" false }}R, (*decFnInfo).{{ .MethodNamePfx "fastpathDec" false }}R){{end}}{{end}}{{end}} + + {{range .Values}}{{if not .Primitive}}{{if .MapKey }} + fn(map[{{ .MapKey }}]{{ .Elem }}(nil), (*encFnInfo).{{ .MethodNamePfx "fastpathEnc" false }}R, (*decFnInfo).{{ .MethodNamePfx "fastpathDec" false }}R){{end}}{{end}}{{end}} + + sort.Sort(fastpathAslice(fastpathAV[:])) +} + +// -- encode + +// -- -- fast path type switch +func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} + case []{{ .Elem }}:{{else}} + case map[{{ .MapKey }}]{{ .Elem }}:{{end}} + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, fastpathCheckNilTrue, e){{if not .MapKey }} + case *[]{{ .Elem }}:{{else}} + case *map[{{ .MapKey }}]{{ .Elem }}:{{end}} + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, fastpathCheckNilTrue, e) +{{end}}{{end}} + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +func fastpathEncodeTypeSwitchSlice(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} + case []{{ .Elem }}: + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, fastpathCheckNilTrue, e) + case *[]{{ .Elem }}: + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, fastpathCheckNilTrue, e) +{{end}}{{end}}{{end}} + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if .MapKey }} + case map[{{ .MapKey }}]{{ .Elem }}: + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(v, fastpathCheckNilTrue, e) + case *map[{{ .MapKey }}]{{ .Elem }}: + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(*v, fastpathCheckNilTrue, e) +{{end}}{{end}}{{end}} + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +// -- -- fast path functions +{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} + +func (f *encFnInfo) {{ .MethodNamePfx "fastpathEnc" false }}R(rv reflect.Value) { + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv.Interface().([]{{ .Elem }}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v []{{ .Elem }}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeArrayStart(len(v)) + for _, v2 := range v { + if cr != nil { cr.sendContainerState(containerArrayElem) } + {{ encmd .Elem "v2"}} + } + if cr != nil { cr.sendContainerState(containerArrayEnd) }{{/* ee.EncodeEnd() */}} +} + +{{end}}{{end}}{{end}} + +{{range .Values}}{{if not .Primitive}}{{if .MapKey }} + +func (f *encFnInfo) {{ .MethodNamePfx "fastpathEnc" false }}R(rv reflect.Value) { + fastpathTV.{{ .MethodNamePfx "Enc" false }}V(rv.Interface().(map[{{ .MapKey }}]{{ .Elem }}), fastpathCheckNilFalse, f.e) +} +func (_ fastpathT) {{ .MethodNamePfx "Enc" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, checkNil bool, e *Encoder) { + ee := e.e + cr := e.cr + if checkNil && v == nil { + ee.EncodeNil() + return + } + ee.EncodeMapStart(len(v)) + {{if eq .MapKey "string"}}asSymbols := e.h.AsSymbols&AsSymbolMapStringKeysFlag != 0 + {{end}}if e.h.Canonical { + {{if eq .MapKey "interface{}"}}{{/* out of band + */}}var mksv []byte = make([]byte, 0, len(v)*16) // temporary byte slice for the encoding + e2 := NewEncoderBytes(&mksv, e.hh) + v2 := make([]bytesI, len(v)) + var i, l int + var vp *bytesI {{/* put loop variables outside. seems currently needed for better perf */}} + for k2, _ := range v { + l = len(mksv) + e2.MustEncode(k2) + vp = &v2[i] + vp.v = mksv[l:] + vp.i = k2 + i++ + } + sort.Sort(bytesISlice(v2)) + for j := range v2 { + if cr != nil { cr.sendContainerState(containerMapKey) } + e.asis(v2[j].v) + if cr != nil { cr.sendContainerState(containerMapValue) } + e.encode(v[v2[j].i]) + } {{else}}{{ $x := sorttype .MapKey true}}v2 := make([]{{ $x }}, len(v)) + var i int + for k, _ := range v { + v2[i] = {{ $x }}(k) + i++ + } + sort.Sort({{ sorttype .MapKey false}}(v2)) + for _, k2 := range v2 { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{if eq .MapKey "string"}}if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + }{{else}}{{ $y := printf "%s(k2)" .MapKey }}{{ encmd .MapKey $y }}{{end}} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ $y := printf "v[%s(k2)]" .MapKey }}{{ encmd .Elem $y }} + } {{end}} + } else { + for k2, v2 := range v { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{if eq .MapKey "string"}}if asSymbols { + ee.EncodeSymbol(k2) + } else { + ee.EncodeString(c_UTF8, k2) + }{{else}}{{ encmd .MapKey "k2"}}{{end}} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ encmd .Elem "v2"}} + } + } + if cr != nil { cr.sendContainerState(containerMapEnd) }{{/* ee.EncodeEnd() */}} +} + +{{end}}{{end}}{{end}} + +// -- decode + +// -- -- fast path type switch +func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { + if !fastpathEnabled { + return false + } + switch v := iv.(type) { +{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} + case []{{ .Elem }}:{{else}} + case map[{{ .MapKey }}]{{ .Elem }}:{{end}} + fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, fastpathCheckNilFalse, false, d){{if not .MapKey }} + case *[]{{ .Elem }}:{{else}} + case *map[{{ .MapKey }}]{{ .Elem }}:{{end}} + v2, changed2 := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*v, fastpathCheckNilFalse, true, d) + if changed2 { + *v = v2 + } +{{end}}{{end}} + default: + _ = v // TODO: workaround https://github.com/golang/go/issues/12927 (remove after go 1.6 release) + return false + } + return true +} + +// -- -- fast path functions +{{range .Values}}{{if not .Primitive}}{{if not .MapKey }} +{{/* +Slices can change if they +- did not come from an array +- are addressable (from a ptr) +- are settable (e.g. contained in an interface{}) +*/}} +func (f *decFnInfo) {{ .MethodNamePfx "fastpathDec" false }}R(rv reflect.Value) { + array := f.seq == seqTypeArray + if !array && rv.CanAddr() { {{/* // CanSet => CanAddr + Exported */}} + vp := rv.Addr().Interface().(*[]{{ .Elem }}) + v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, fastpathCheckNilFalse, !array, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().([]{{ .Elem }}) + fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, fastpathCheckNilFalse, false, f.d) + } +} + +func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *[]{{ .Elem }}, checkNil bool, d *Decoder) { + v, changed := f.{{ .MethodNamePfx "Dec" false }}V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v []{{ .Elem }}, checkNil bool, canChange bool, d *Decoder) (_ []{{ .Elem }}, changed bool) { + dd := d.d + {{/* // if dd.isContainerType(valueTypeNil) { dd.TryDecodeAsNil() */}} + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + slh, containerLenS := d.decSliceHelperStart() + if containerLenS == 0 { + if canChange { + if v == nil { + v = []{{ .Elem }}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + + if containerLenS > 0 { + x2read := containerLenS + var xtrunc bool + if containerLenS > cap(v) { + if canChange { {{/* + // fast-path is for "basic" immutable types, so no need to copy them over + // s := make([]{{ .Elem }}, decInferLen(containerLenS, d.h.MaxInitLen)) + // copy(s, v[:cap(v)]) + // v = s */}} + var xlen int + xlen, xtrunc = decInferLen(containerLenS, d.h.MaxInitLen, {{ .Size }}) + if xtrunc { + if xlen <= cap(v) { + v = v[:xlen] + } else { + v = make([]{{ .Elem }}, xlen) + } + } else { + v = make([]{{ .Elem }}, xlen) + } + changed = true + } else { + d.arrayCannotExpand(len(v), containerLenS) + } + x2read = len(v) + } else if containerLenS != len(v) { + if canChange { + v = v[:containerLenS] + changed = true + } + } {{/* // all checks done. cannot go past len. */}} + j := 0 + for ; j < x2read; j++ { + slh.ElemContainerState(j) + {{ if eq .Elem "interface{}" }}d.decode(&v[j]){{ else }}v[j] = {{ decmd .Elem }}{{ end }} + } + if xtrunc { {{/* // means canChange=true, changed=true already. */}} + for ; j < containerLenS; j++ { + v = append(v, {{ zerocmd .Elem }}) + slh.ElemContainerState(j) + {{ if eq .Elem "interface{}" }}d.decode(&v[j]){{ else }}v[j] = {{ decmd .Elem }}{{ end }} + } + } else if !canChange { + for ; j < containerLenS; j++ { + slh.ElemContainerState(j) + d.swallow() + } + } + } else { + breakFound := dd.CheckBreak() {{/* check break first, so we can initialize v with a capacity of 4 if necessary */}} + if breakFound { + if canChange { + if v == nil { + v = []{{ .Elem }}{} + } else if len(v) != 0 { + v = v[:0] + } + changed = true + } + slh.End() + return + } + if cap(v) == 0 { + v = make([]{{ .Elem }}, 1, 4) + changed = true + } + j := 0 + for ; !breakFound; j++ { + if j >= len(v) { + if canChange { + v = append(v, {{ zerocmd .Elem }}) + changed = true + } else { + d.arrayCannotExpand(len(v), j+1) + } + } + slh.ElemContainerState(j) + if j < len(v) { {{/* // all checks done. cannot go past len. */}} + {{ if eq .Elem "interface{}" }}d.decode(&v[j]) + {{ else }}v[j] = {{ decmd .Elem }}{{ end }} + } else { + d.swallow() + } + breakFound = dd.CheckBreak() + } + if canChange && j < len(v) { + v = v[:j] + changed = true + } + } + slh.End() + return v, changed +} + +{{end}}{{end}}{{end}} + + +{{range .Values}}{{if not .Primitive}}{{if .MapKey }} +{{/* +Maps can change if they are +- addressable (from a ptr) +- settable (e.g. contained in an interface{}) +*/}} +func (f *decFnInfo) {{ .MethodNamePfx "fastpathDec" false }}R(rv reflect.Value) { + if rv.CanAddr() { + vp := rv.Addr().Interface().(*map[{{ .MapKey }}]{{ .Elem }}) + v, changed := fastpathTV.{{ .MethodNamePfx "Dec" false }}V(*vp, fastpathCheckNilFalse, true, f.d) + if changed { + *vp = v + } + } else { + v := rv.Interface().(map[{{ .MapKey }}]{{ .Elem }}) + fastpathTV.{{ .MethodNamePfx "Dec" false }}V(v, fastpathCheckNilFalse, false, f.d) + } +} +func (f fastpathT) {{ .MethodNamePfx "Dec" false }}X(vp *map[{{ .MapKey }}]{{ .Elem }}, checkNil bool, d *Decoder) { + v, changed := f.{{ .MethodNamePfx "Dec" false }}V(*vp, checkNil, true, d) + if changed { + *vp = v + } +} +func (_ fastpathT) {{ .MethodNamePfx "Dec" false }}V(v map[{{ .MapKey }}]{{ .Elem }}, checkNil bool, canChange bool, + d *Decoder) (_ map[{{ .MapKey }}]{{ .Elem }}, changed bool) { + dd := d.d + cr := d.cr + {{/* // if dd.isContainerType(valueTypeNil) {dd.TryDecodeAsNil() */}} + if checkNil && dd.TryDecodeAsNil() { + if v != nil { + changed = true + } + return nil, changed + } + + containerLen := dd.ReadMapStart() + if canChange && v == nil { + xlen, _ := decInferLen(containerLen, d.h.MaxInitLen, {{ .Size }}) + v = make(map[{{ .MapKey }}]{{ .Elem }}, xlen) + changed = true + } + {{ if eq .Elem "interface{}" }}mapGet := !d.h.MapValueReset && !d.h.InterfaceReset{{end}} + var mk {{ .MapKey }} + var mv {{ .Elem }} + if containerLen > 0 { + for j := 0; j < containerLen; j++ { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{ if eq .MapKey "interface{}" }}mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}} + }{{ else }}mk = {{ decmd .MapKey }}{{ end }} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil } + d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }} + if v != nil { + v[mk] = mv + } + } + } else if containerLen < 0 { + for j := 0; !dd.CheckBreak(); j++ { + if cr != nil { cr.sendContainerState(containerMapKey) } + {{ if eq .MapKey "interface{}" }}mk = nil + d.decode(&mk) + if bv, bok := mk.([]byte); bok { + mk = d.string(bv) {{/* // maps cannot have []byte as key. switch to string. */}} + }{{ else }}mk = {{ decmd .MapKey }}{{ end }} + if cr != nil { cr.sendContainerState(containerMapValue) } + {{ if eq .Elem "interface{}" }}if mapGet { mv = v[mk] } else { mv = nil } + d.decode(&mv){{ else }}mv = {{ decmd .Elem }}{{ end }} + if v != nil { + v[mk] = mv + } + } + } + if cr != nil { cr.sendContainerState(containerMapEnd) } + return v, changed +} + +{{end}}{{end}}{{end}} diff --git a/vendor/github.com/ugorji/go/codec/fast-path.not.go b/vendor/github.com/ugorji/go/codec/fast-path.not.go new file mode 100644 index 0000000000..d6f5f0c911 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/fast-path.not.go @@ -0,0 +1,32 @@ +// +build notfastpath + +package codec + +import "reflect" + +// The generated fast-path code is very large, and adds a few seconds to the build time. +// This causes test execution, execution of small tools which use codec, etc +// to take a long time. +// +// To mitigate, we now support the notfastpath tag. +// This tag disables fastpath during build, allowing for faster build, test execution, +// short-program runs, etc. + +func fastpathDecodeTypeSwitch(iv interface{}, d *Decoder) bool { return false } +func fastpathEncodeTypeSwitch(iv interface{}, e *Encoder) bool { return false } +func fastpathEncodeTypeSwitchSlice(iv interface{}, e *Encoder) bool { return false } +func fastpathEncodeTypeSwitchMap(iv interface{}, e *Encoder) bool { return false } + +type fastpathT struct{} +type fastpathE struct { + rtid uintptr + rt reflect.Type + encfn func(*encFnInfo, reflect.Value) + decfn func(*decFnInfo, reflect.Value) +} +type fastpathA [0]fastpathE + +func (x fastpathA) index(rtid uintptr) int { return -1 } + +var fastpathAV fastpathA +var fastpathTV fastpathT diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl new file mode 100644 index 0000000000..2caae5bfda --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl @@ -0,0 +1,101 @@ +{{var "v"}} := {{if not isArray}}*{{end}}{{ .Varname }} +{{var "h"}}, {{var "l"}} := z.DecSliceHelperStart() {{/* // helper, containerLenS */}} +var {{var "c"}} bool {{/* // changed */}} +if {{var "l"}} == 0 { + {{if isSlice }}if {{var "v"}} == nil { + {{var "v"}} = []{{ .Typ }}{} + {{var "c"}} = true + } else if len({{var "v"}}) != 0 { + {{var "v"}} = {{var "v"}}[:0] + {{var "c"}} = true + } {{end}} {{if isChan }}if {{var "v"}} == nil { + {{var "v"}} = make({{ .CTyp }}, 0) + {{var "c"}} = true + } {{end}} +} else if {{var "l"}} > 0 { + {{if isChan }}if {{var "v"}} == nil { + {{var "rl"}}, _ = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + {{var "v"}} = make({{ .CTyp }}, {{var "rl"}}) + {{var "c"}} = true + } + for {{var "r"}} := 0; {{var "r"}} < {{var "l"}}; {{var "r"}}++ { + {{var "h"}}.ElemContainerState({{var "r"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + } + {{ else }} var {{var "rr"}}, {{var "rl"}} int {{/* // num2read, length of slice/array/chan */}} + var {{var "rt"}} bool {{/* truncated */}} + if {{var "l"}} > cap({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "l"}}) + {{ else }}{{if not .Immutable }} + {{var "rg"}} := len({{var "v"}}) > 0 + {{var "v2"}} := {{var "v"}} {{end}} + {{var "rl"}}, {{var "rt"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + if {{var "rt"}} { + if {{var "rl"}} <= cap({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } + {{var "c"}} = true + {{var "rr"}} = len({{var "v"}}) {{if not .Immutable }} + if {{var "rg"}} { copy({{var "v"}}, {{var "v2"}}) } {{end}} {{end}}{{/* end not Immutable, isArray */}} + } {{if isSlice }} else if {{var "l"}} != len({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "l"}}] + {{var "c"}} = true + } {{end}} {{/* end isSlice:47 */}} + {{var "j"}} := 0 + for ; {{var "j"}} < {{var "rr"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + {{if isArray }}for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + z.DecSwallow() + } + {{ else }}if {{var "rt"}} { + for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "v"}} = append({{var "v"}}, {{ zero}}) + {{var "h"}}.ElemContainerState({{var "j"}}) + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + } {{end}} {{/* end isArray:56 */}} + {{end}} {{/* end isChan:16 */}} +} else { {{/* len < 0 */}} + {{var "j"}} := 0 + for ; !r.CheckBreak(); {{var "j"}}++ { + {{if isChan }} + {{var "h"}}.ElemContainerState({{var "j"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + {{ else }} + if {{var "j"}} >= len({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "j"}}+1) + {{ else }}{{var "v"}} = append({{var "v"}}, {{zero}})// var {{var "z"}} {{ .Typ }} + {{var "c"}} = true {{end}} + } + {{var "h"}}.ElemContainerState({{var "j"}}) + if {{var "j"}} < len({{var "v"}}) { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } else { + z.DecSwallow() + } + {{end}} + } + {{if isSlice }}if {{var "j"}} < len({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "j"}}] + {{var "c"}} = true + } else if {{var "j"}} == 0 && {{var "v"}} == nil { + {{var "v"}} = []{{ .Typ }}{} + {{var "c"}} = true + }{{end}} +} +{{var "h"}}.End() +{{if not isArray }}if {{var "c"}} { + *{{ .Varname }} = {{var "v"}} +}{{end}} diff --git a/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl new file mode 100644 index 0000000000..77400e0a11 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl @@ -0,0 +1,58 @@ +{{var "v"}} := *{{ .Varname }} +{{var "l"}} := r.ReadMapStart() +{{var "bh"}} := z.DecBasicHandle() +if {{var "v"}} == nil { + {{var "rl"}}, _ := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) + {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) + *{{ .Varname }} = {{var "v"}} +} +var {{var "mk"}} {{ .KTyp }} +var {{var "mv"}} {{ .Typ }} +var {{var "mg"}} {{if decElemKindPtr}}, {{var "ms"}}, {{var "mok"}}{{end}} bool +if {{var "bh"}}.MapValueReset { + {{if decElemKindPtr}}{{var "mg"}} = true + {{else if decElemKindIntf}}if !{{var "bh"}}.InterfaceReset { {{var "mg"}} = true } + {{else if not decElemKindImmutable}}{{var "mg"}} = true + {{end}} } +if {{var "l"}} > 0 { +for {{var "j"}} := 0; {{var "j"}} < {{var "l"}}; {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true{{end}} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} +} else if {{var "l"}} < 0 { +for {{var "j"}} := 0; !r.CheckBreak(); {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true {{ end }} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} +} // else len==0: TODO: Should we clear map entries? +z.DecSendContainerState(codecSelfer_containerMapEnd{{ .Sfx }}) diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.generated.go b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go new file mode 100644 index 0000000000..22bce776bb --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen-helper.generated.go @@ -0,0 +1,233 @@ +// //+build ignore + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED from gen-helper.go.tmpl +// ************************************************************ + +package codec + +import ( + "encoding" + "reflect" +) + +// This file is used to generate helper code for codecgen. +// The values here i.e. genHelper(En|De)coder are not to be used directly by +// library users. They WILL change continously and without notice. +// +// To help enforce this, we create an unexported type with exported members. +// The only way to get the type is via the one exported type that we control (somewhat). +// +// When static codecs are created for types, they will use this value +// to perform encoding or decoding of primitives or known slice or map types. + +// GenHelperEncoder is exported so that it can be used externally by codecgen. +// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. +func GenHelperEncoder(e *Encoder) (genHelperEncoder, encDriver) { + return genHelperEncoder{e: e}, e.e +} + +// GenHelperDecoder is exported so that it can be used externally by codecgen. +// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. +func GenHelperDecoder(d *Decoder) (genHelperDecoder, decDriver) { + return genHelperDecoder{d: d}, d.d +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +type genHelperEncoder struct { + e *Encoder + F fastpathT +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +type genHelperDecoder struct { + d *Decoder + F fastpathT +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBasicHandle() *BasicHandle { + return f.e.h +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBinary() bool { + return f.e.be // f.e.hh.isBinaryEncoding() +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncFallback(iv interface{}) { + // println(">>>>>>>>> EncFallback") + f.e.encodeI(iv, false, false) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) { + bs, fnerr := iv.MarshalText() + f.e.marshal(bs, fnerr, false, c_UTF8) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) { + bs, fnerr := iv.MarshalJSON() + f.e.marshal(bs, fnerr, true, c_UTF8) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) { + bs, fnerr := iv.MarshalBinary() + f.e.marshal(bs, fnerr, false, c_RAW) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) TimeRtidIfBinc() uintptr { + if _, ok := f.e.hh.(*BincHandle); ok { + return timeTypId + } + return 0 +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) IsJSONHandle() bool { + return f.e.js +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) HasExtensions() bool { + return len(f.e.h.extHandle) != 0 +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncExt(v interface{}) (r bool) { + rt := reflect.TypeOf(v) + if rt.Kind() == reflect.Ptr { + rt = rt.Elem() + } + rtid := reflect.ValueOf(rt).Pointer() + if xfFn := f.e.h.getExt(rtid); xfFn != nil { + f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e) + return true + } + return false +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncSendContainerState(c containerState) { + if f.e.cr != nil { + f.e.cr.sendContainerState(c) + } +} + +// ---------------- DECODER FOLLOWS ----------------- + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBasicHandle() *BasicHandle { + return f.d.h +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBinary() bool { + return f.d.be // f.d.hh.isBinaryEncoding() +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSwallow() { + f.d.swallow() +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecScratchBuffer() []byte { + return f.d.b[:] +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) { + // println(">>>>>>>>> DecFallback") + f.d.decodeI(iv, chkPtr, false, false, false) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) { + return f.d.decSliceHelperStart() +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) { + f.d.structFieldNotFound(index, name) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { + f.d.arrayCannotExpand(sliceLen, streamLen) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) + if fnerr != nil { + panic(fnerr) + } +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { + // bs := f.dd.DecodeBytes(f.d.b[:], true, true) + // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. + fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()) + if fnerr != nil { + panic(fnerr) + } +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { + fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, false, true)) + if fnerr != nil { + panic(fnerr) + } +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) TimeRtidIfBinc() uintptr { + if _, ok := f.d.hh.(*BincHandle); ok { + return timeTypId + } + return 0 +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) IsJSONHandle() bool { + return f.d.js +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) HasExtensions() bool { + return len(f.d.h.extHandle) != 0 +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecExt(v interface{}) (r bool) { + rt := reflect.TypeOf(v).Elem() + rtid := reflect.ValueOf(rt).Pointer() + if xfFn := f.d.h.getExt(rtid); xfFn != nil { + f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext) + return true + } + return false +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { + return decInferLen(clen, maxlen, unit) +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSendContainerState(c containerState) { + if f.d.cr != nil { + f.d.cr.sendContainerState(c) + } +} diff --git a/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl new file mode 100644 index 0000000000..31958574ff --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl @@ -0,0 +1,364 @@ +// //+build ignore + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED from gen-helper.go.tmpl +// ************************************************************ + +package codec + +import ( + "encoding" + "reflect" +) + +// This file is used to generate helper code for codecgen. +// The values here i.e. genHelper(En|De)coder are not to be used directly by +// library users. They WILL change continously and without notice. +// +// To help enforce this, we create an unexported type with exported members. +// The only way to get the type is via the one exported type that we control (somewhat). +// +// When static codecs are created for types, they will use this value +// to perform encoding or decoding of primitives or known slice or map types. + +// GenHelperEncoder is exported so that it can be used externally by codecgen. +// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. +func GenHelperEncoder(e *Encoder) (genHelperEncoder, encDriver) { + return genHelperEncoder{e:e}, e.e +} + +// GenHelperDecoder is exported so that it can be used externally by codecgen. +// Library users: DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE. +func GenHelperDecoder(d *Decoder) (genHelperDecoder, decDriver) { + return genHelperDecoder{d:d}, d.d +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +type genHelperEncoder struct { + e *Encoder + F fastpathT +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +type genHelperDecoder struct { + d *Decoder + F fastpathT +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBasicHandle() *BasicHandle { + return f.e.h +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBinary() bool { + return f.e.be // f.e.hh.isBinaryEncoding() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncFallback(iv interface{}) { + // println(">>>>>>>>> EncFallback") + f.e.encodeI(iv, false, false) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncTextMarshal(iv encoding.TextMarshaler) { + bs, fnerr := iv.MarshalText() + f.e.marshal(bs, fnerr, false, c_UTF8) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncJSONMarshal(iv jsonMarshaler) { + bs, fnerr := iv.MarshalJSON() + f.e.marshal(bs, fnerr, true, c_UTF8) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBinaryMarshal(iv encoding.BinaryMarshaler) { + bs, fnerr := iv.MarshalBinary() + f.e.marshal(bs, fnerr, false, c_RAW) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) TimeRtidIfBinc() uintptr { + if _, ok := f.e.hh.(*BincHandle); ok { + return timeTypId + } + return 0 +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) IsJSONHandle() bool { + return f.e.js +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) HasExtensions() bool { + return len(f.e.h.extHandle) != 0 +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncExt(v interface{}) (r bool) { + rt := reflect.TypeOf(v) + if rt.Kind() == reflect.Ptr { + rt = rt.Elem() + } + rtid := reflect.ValueOf(rt).Pointer() + if xfFn := f.e.h.getExt(rtid); xfFn != nil { + f.e.e.EncodeExt(v, xfFn.tag, xfFn.ext, f.e) + return true + } + return false +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncSendContainerState(c containerState) { + if f.e.cr != nil { + f.e.cr.sendContainerState(c) + } +} + +// ---------------- DECODER FOLLOWS ----------------- + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBasicHandle() *BasicHandle { + return f.d.h +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBinary() bool { + return f.d.be // f.d.hh.isBinaryEncoding() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSwallow() { + f.d.swallow() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecScratchBuffer() []byte { + return f.d.b[:] +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecFallback(iv interface{}, chkPtr bool) { + // println(">>>>>>>>> DecFallback") + f.d.decodeI(iv, chkPtr, false, false, false) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSliceHelperStart() (decSliceHelper, int) { + return f.d.decSliceHelperStart() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecStructFieldNotFound(index int, name string) { + f.d.structFieldNotFound(index, name) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecArrayCannotExpand(sliceLen, streamLen int) { + f.d.arrayCannotExpand(sliceLen, streamLen) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecTextUnmarshal(tm encoding.TextUnmarshaler) { + fnerr := tm.UnmarshalText(f.d.d.DecodeBytes(f.d.b[:], true, true)) + if fnerr != nil { + panic(fnerr) + } +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecJSONUnmarshal(tm jsonUnmarshaler) { + // bs := f.dd.DecodeBytes(f.d.b[:], true, true) + // grab the bytes to be read, as UnmarshalJSON needs the full JSON so as to unmarshal it itself. + fnerr := tm.UnmarshalJSON(f.d.nextValueBytes()) + if fnerr != nil { + panic(fnerr) + } +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBinaryUnmarshal(bm encoding.BinaryUnmarshaler) { + fnerr := bm.UnmarshalBinary(f.d.d.DecodeBytes(nil, false, true)) + if fnerr != nil { + panic(fnerr) + } +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) TimeRtidIfBinc() uintptr { + if _, ok := f.d.hh.(*BincHandle); ok { + return timeTypId + } + return 0 +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) IsJSONHandle() bool { + return f.d.js +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) HasExtensions() bool { + return len(f.d.h.extHandle) != 0 +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecExt(v interface{}) (r bool) { + rt := reflect.TypeOf(v).Elem() + rtid := reflect.ValueOf(rt).Pointer() + if xfFn := f.d.h.getExt(rtid); xfFn != nil { + f.d.d.DecodeExt(v, xfFn.tag, xfFn.ext) + return true + } + return false +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecInferLen(clen, maxlen, unit int) (rvlen int, truncated bool) { + return decInferLen(clen, maxlen, unit) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecSendContainerState(c containerState) { + if f.d.cr != nil { + f.d.cr.sendContainerState(c) + } +} + +{{/* + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncDriver() encDriver { + return f.e.e +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecDriver() decDriver { + return f.d.d +} + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncNil() { + f.e.e.EncodeNil() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncBytes(v []byte) { + f.e.e.EncodeStringBytes(c_RAW, v) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncArrayStart(length int) { + f.e.e.EncodeArrayStart(length) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncArrayEnd() { + f.e.e.EncodeArrayEnd() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncArrayEntrySeparator() { + f.e.e.EncodeArrayEntrySeparator() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncMapStart(length int) { + f.e.e.EncodeMapStart(length) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncMapEnd() { + f.e.e.EncodeMapEnd() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncMapEntrySeparator() { + f.e.e.EncodeMapEntrySeparator() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) EncMapKVSeparator() { + f.e.e.EncodeMapKVSeparator() +} + +// --------- + +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecBytes(v *[]byte) { + *v = f.d.d.DecodeBytes(*v) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecTryNil() bool { + return f.d.d.TryDecodeAsNil() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecContainerIsNil() (b bool) { + return f.d.d.IsContainerType(valueTypeNil) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecContainerIsMap() (b bool) { + return f.d.d.IsContainerType(valueTypeMap) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecContainerIsArray() (b bool) { + return f.d.d.IsContainerType(valueTypeArray) +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecCheckBreak() bool { + return f.d.d.CheckBreak() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecMapStart() int { + return f.d.d.ReadMapStart() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecArrayStart() int { + return f.d.d.ReadArrayStart() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecMapEnd() { + f.d.d.ReadMapEnd() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecArrayEnd() { + f.d.d.ReadArrayEnd() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecArrayEntrySeparator() { + f.d.d.ReadArrayEntrySeparator() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecMapEntrySeparator() { + f.d.d.ReadMapEntrySeparator() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) DecMapKVSeparator() { + f.d.d.ReadMapKVSeparator() +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) ReadStringAsBytes(bs []byte) []byte { + return f.d.d.DecodeStringAsBytes(bs) +} + + +// -- encode calls (primitives) +{{range .Values}}{{if .Primitive }}{{if ne .Primitive "interface{}" }} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) {{ .MethodNamePfx "Enc" true }}(v {{ .Primitive }}) { + ee := f.e.e + {{ encmd .Primitive "v" }} +} +{{ end }}{{ end }}{{ end }} + +// -- decode calls (primitives) +{{range .Values}}{{if .Primitive }}{{if ne .Primitive "interface{}" }} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) {{ .MethodNamePfx "Dec" true }}(vp *{{ .Primitive }}) { + dd := f.d.d + *vp = {{ decmd .Primitive }} +} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperDecoder) {{ .MethodNamePfx "Read" true }}() (v {{ .Primitive }}) { + dd := f.d.d + v = {{ decmd .Primitive }} + return +} +{{ end }}{{ end }}{{ end }} + + +// -- encode calls (slices/maps) +{{range .Values}}{{if not .Primitive }}{{if .Slice }} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) {{ .MethodNamePfx "Enc" false }}(v []{{ .Elem }}) { {{ else }} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +func (f genHelperEncoder) {{ .MethodNamePfx "Enc" false }}(v map[{{ .MapKey }}]{{ .Elem }}) { {{end}} + f.F.{{ .MethodNamePfx "Enc" false }}V(v, false, f.e) +} +{{ end }}{{ end }} + +// -- decode calls (slices/maps) +{{range .Values}}{{if not .Primitive }} +// FOR USE BY CODECGEN ONLY. IT *WILL* CHANGE WITHOUT NOTICE. *DO NOT USE* +{{if .Slice }}func (f genHelperDecoder) {{ .MethodNamePfx "Dec" false }}(vp *[]{{ .Elem }}) { +{{else}}func (f genHelperDecoder) {{ .MethodNamePfx "Dec" false }}(vp *map[{{ .MapKey }}]{{ .Elem }}) { {{end}} + v, changed := f.F.{{ .MethodNamePfx "Dec" false }}V(*vp, false, true, f.d) + if changed { + *vp = v + } +} +{{ end }}{{ end }} +*/}} diff --git a/vendor/github.com/ugorji/go/codec/gen.generated.go b/vendor/github.com/ugorji/go/codec/gen.generated.go new file mode 100644 index 0000000000..f3c1b70608 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen.generated.go @@ -0,0 +1,171 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +// DO NOT EDIT. THIS FILE IS AUTO-GENERATED FROM gen-dec-(map|array).go.tmpl + +const genDecMapTmpl = ` +{{var "v"}} := *{{ .Varname }} +{{var "l"}} := r.ReadMapStart() +{{var "bh"}} := z.DecBasicHandle() +if {{var "v"}} == nil { + {{var "rl"}}, _ := z.DecInferLen({{var "l"}}, {{var "bh"}}.MaxInitLen, {{ .Size }}) + {{var "v"}} = make(map[{{ .KTyp }}]{{ .Typ }}, {{var "rl"}}) + *{{ .Varname }} = {{var "v"}} +} +var {{var "mk"}} {{ .KTyp }} +var {{var "mv"}} {{ .Typ }} +var {{var "mg"}} {{if decElemKindPtr}}, {{var "ms"}}, {{var "mok"}}{{end}} bool +if {{var "bh"}}.MapValueReset { + {{if decElemKindPtr}}{{var "mg"}} = true + {{else if decElemKindIntf}}if !{{var "bh"}}.InterfaceReset { {{var "mg"}} = true } + {{else if not decElemKindImmutable}}{{var "mg"}} = true + {{end}} } +if {{var "l"}} > 0 { +for {{var "j"}} := 0; {{var "j"}} < {{var "l"}}; {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true{{end}} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} +} else if {{var "l"}} < 0 { +for {{var "j"}} := 0; !r.CheckBreak(); {{var "j"}}++ { + z.DecSendContainerState(codecSelfer_containerMapKey{{ .Sfx }}) + {{ $x := printf "%vmk%v" .TempVar .Rand }}{{ decLineVarK $x }} +{{ if eq .KTyp "interface{}" }}{{/* // special case if a byte array. */}}if {{var "bv"}}, {{var "bok"}} := {{var "mk"}}.([]byte); {{var "bok"}} { + {{var "mk"}} = string({{var "bv"}}) + }{{ end }}{{if decElemKindPtr}} + {{var "ms"}} = true {{ end }} + if {{var "mg"}} { + {{if decElemKindPtr}}{{var "mv"}}, {{var "mok"}} = {{var "v"}}[{{var "mk"}}] + if {{var "mok"}} { + {{var "ms"}} = false + } {{else}}{{var "mv"}} = {{var "v"}}[{{var "mk"}}] {{end}} + } {{if not decElemKindImmutable}}else { {{var "mv"}} = {{decElemZero}} }{{end}} + z.DecSendContainerState(codecSelfer_containerMapValue{{ .Sfx }}) + {{ $x := printf "%vmv%v" .TempVar .Rand }}{{ decLineVar $x }} + if {{if decElemKindPtr}} {{var "ms"}} && {{end}} {{var "v"}} != nil { + {{var "v"}}[{{var "mk"}}] = {{var "mv"}} + } +} +} // else len==0: TODO: Should we clear map entries? +z.DecSendContainerState(codecSelfer_containerMapEnd{{ .Sfx }}) +` + +const genDecListTmpl = ` +{{var "v"}} := {{if not isArray}}*{{end}}{{ .Varname }} +{{var "h"}}, {{var "l"}} := z.DecSliceHelperStart() {{/* // helper, containerLenS */}} +var {{var "c"}} bool {{/* // changed */}} +if {{var "l"}} == 0 { + {{if isSlice }}if {{var "v"}} == nil { + {{var "v"}} = []{{ .Typ }}{} + {{var "c"}} = true + } else if len({{var "v"}}) != 0 { + {{var "v"}} = {{var "v"}}[:0] + {{var "c"}} = true + } {{end}} {{if isChan }}if {{var "v"}} == nil { + {{var "v"}} = make({{ .CTyp }}, 0) + {{var "c"}} = true + } {{end}} +} else if {{var "l"}} > 0 { + {{if isChan }}if {{var "v"}} == nil { + {{var "rl"}}, _ = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + {{var "v"}} = make({{ .CTyp }}, {{var "rl"}}) + {{var "c"}} = true + } + for {{var "r"}} := 0; {{var "r"}} < {{var "l"}}; {{var "r"}}++ { + {{var "h"}}.ElemContainerState({{var "r"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + } + {{ else }} var {{var "rr"}}, {{var "rl"}} int {{/* // num2read, length of slice/array/chan */}} + var {{var "rt"}} bool {{/* truncated */}} + if {{var "l"}} > cap({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "l"}}) + {{ else }}{{if not .Immutable }} + {{var "rg"}} := len({{var "v"}}) > 0 + {{var "v2"}} := {{var "v"}} {{end}} + {{var "rl"}}, {{var "rt"}} = z.DecInferLen({{var "l"}}, z.DecBasicHandle().MaxInitLen, {{ .Size }}) + if {{var "rt"}} { + if {{var "rl"}} <= cap({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "rl"}}] + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } + } else { + {{var "v"}} = make([]{{ .Typ }}, {{var "rl"}}) + } + {{var "c"}} = true + {{var "rr"}} = len({{var "v"}}) {{if not .Immutable }} + if {{var "rg"}} { copy({{var "v"}}, {{var "v2"}}) } {{end}} {{end}}{{/* end not Immutable, isArray */}} + } {{if isSlice }} else if {{var "l"}} != len({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "l"}}] + {{var "c"}} = true + } {{end}} {{/* end isSlice:47 */}} + {{var "j"}} := 0 + for ; {{var "j"}} < {{var "rr"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + {{if isArray }}for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "h"}}.ElemContainerState({{var "j"}}) + z.DecSwallow() + } + {{ else }}if {{var "rt"}} { + for ; {{var "j"}} < {{var "l"}} ; {{var "j"}}++ { + {{var "v"}} = append({{var "v"}}, {{ zero}}) + {{var "h"}}.ElemContainerState({{var "j"}}) + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } + } {{end}} {{/* end isArray:56 */}} + {{end}} {{/* end isChan:16 */}} +} else { {{/* len < 0 */}} + {{var "j"}} := 0 + for ; !r.CheckBreak(); {{var "j"}}++ { + {{if isChan }} + {{var "h"}}.ElemContainerState({{var "j"}}) + var {{var "t"}} {{ .Typ }} + {{ $x := printf "%st%s" .TempVar .Rand }}{{ decLineVar $x }} + {{var "v"}} <- {{var "t"}} + {{ else }} + if {{var "j"}} >= len({{var "v"}}) { + {{if isArray }}z.DecArrayCannotExpand(len({{var "v"}}), {{var "j"}}+1) + {{ else }}{{var "v"}} = append({{var "v"}}, {{zero}})// var {{var "z"}} {{ .Typ }} + {{var "c"}} = true {{end}} + } + {{var "h"}}.ElemContainerState({{var "j"}}) + if {{var "j"}} < len({{var "v"}}) { + {{ $x := printf "%[1]vv%[2]v[%[1]vj%[2]v]" .TempVar .Rand }}{{ decLineVar $x }} + } else { + z.DecSwallow() + } + {{end}} + } + {{if isSlice }}if {{var "j"}} < len({{var "v"}}) { + {{var "v"}} = {{var "v"}}[:{{var "j"}}] + {{var "c"}} = true + } else if {{var "j"}} == 0 && {{var "v"}} == nil { + {{var "v"}} = []{{ .Typ }}{} + {{var "c"}} = true + }{{end}} +} +{{var "h"}}.End() +{{if not isArray }}if {{var "c"}} { + *{{ .Varname }} = {{var "v"}} +}{{end}} +` diff --git a/vendor/github.com/ugorji/go/codec/gen.go b/vendor/github.com/ugorji/go/codec/gen.go new file mode 100644 index 0000000000..a075e7c0d6 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/gen.go @@ -0,0 +1,1920 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "bytes" + "encoding/base64" + "errors" + "fmt" + "go/format" + "io" + "io/ioutil" + "math/rand" + "os" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "sync" + "text/template" + "time" +) + +// --------------------------------------------------- +// codecgen supports the full cycle of reflection-based codec: +// - RawExt +// - Builtins +// - Extensions +// - (Binary|Text|JSON)(Unm|M)arshal +// - generic by-kind +// +// This means that, for dynamic things, we MUST use reflection to at least get the reflect.Type. +// In those areas, we try to only do reflection or interface-conversion when NECESSARY: +// - Extensions, only if Extensions are configured. +// +// However, codecgen doesn't support the following: +// - Canonical option. (codecgen IGNORES it currently) +// This is just because it has not been implemented. +// +// During encode/decode, Selfer takes precedence. +// A type implementing Selfer will know how to encode/decode itself statically. +// +// The following field types are supported: +// array: [n]T +// slice: []T +// map: map[K]V +// primitive: [u]int[n], float(32|64), bool, string +// struct +// +// --------------------------------------------------- +// Note that a Selfer cannot call (e|d).(En|De)code on itself, +// as this will cause a circular reference, as (En|De)code will call Selfer methods. +// Any type that implements Selfer must implement completely and not fallback to (En|De)code. +// +// In addition, code in this file manages the generation of fast-path implementations of +// encode/decode of slices/maps of primitive keys/values. +// +// Users MUST re-generate their implementations whenever the code shape changes. +// The generated code will panic if it was generated with a version older than the supporting library. +// --------------------------------------------------- +// +// codec framework is very feature rich. +// When encoding or decoding into an interface, it depends on the runtime type of the interface. +// The type of the interface may be a named type, an extension, etc. +// Consequently, we fallback to runtime codec for encoding/decoding interfaces. +// In addition, we fallback for any value which cannot be guaranteed at runtime. +// This allows us support ANY value, including any named types, specifically those which +// do not implement our interfaces (e.g. Selfer). +// +// This explains some slowness compared to other code generation codecs (e.g. msgp). +// This reduction in speed is only seen when your refers to interfaces, +// e.g. type T struct { A interface{}; B []interface{}; C map[string]interface{} } +// +// codecgen will panic if the file was generated with an old version of the library in use. +// +// Note: +// It was a concious decision to have gen.go always explicitly call EncodeNil or TryDecodeAsNil. +// This way, there isn't a function call overhead just to see that we should not enter a block of code. + +// GenVersion is the current version of codecgen. +// +// NOTE: Increment this value each time codecgen changes fundamentally. +// Fundamental changes are: +// - helper methods change (signature change, new ones added, some removed, etc) +// - codecgen command line changes +// +// v1: Initial Version +// v2: +// v3: Changes for Kubernetes: +// changes in signature of some unpublished helper methods and codecgen cmdline arguments. +// v4: Removed separator support from (en|de)cDriver, and refactored codec(gen) +// v5: changes to support faster json decoding. Let encoder/decoder maintain state of collections. +const GenVersion = 5 + +const ( + genCodecPkg = "codec1978" + genTempVarPfx = "yy" + genTopLevelVarName = "x" + + // ignore canBeNil parameter, and always set to true. + // This is because nil can appear anywhere, so we should always check. + genAnythingCanBeNil = true + + // if genUseOneFunctionForDecStructMap, make a single codecDecodeSelferFromMap function; + // else make codecDecodeSelferFromMap{LenPrefix,CheckBreak} so that conditionals + // are not executed a lot. + // + // From testing, it didn't make much difference in runtime, so keep as true (one function only) + genUseOneFunctionForDecStructMap = true +) + +type genStructMapStyle uint8 + +const ( + genStructMapStyleConsolidated genStructMapStyle = iota + genStructMapStyleLenPrefix + genStructMapStyleCheckBreak +) + +var ( + genAllTypesSamePkgErr = errors.New("All types must be in the same package") + genExpectArrayOrMapErr = errors.New("unexpected type. Expecting array/map/slice") + genBase64enc = base64.NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__") + genQNameRegex = regexp.MustCompile(`[A-Za-z_.]+`) +) + +// genRunner holds some state used during a Gen run. +type genRunner struct { + w io.Writer // output + c uint64 // counter used for generating varsfx + t []reflect.Type // list of types to run selfer on + + tc reflect.Type // currently running selfer on this type + te map[uintptr]bool // types for which the encoder has been created + td map[uintptr]bool // types for which the decoder has been created + cp string // codec import path + + im map[string]reflect.Type // imports to add + imn map[string]string // package names of imports to add + imc uint64 // counter for import numbers + + is map[reflect.Type]struct{} // types seen during import search + bp string // base PkgPath, for which we are generating for + + cpfx string // codec package prefix + unsafe bool // is unsafe to be used in generated code? + + tm map[reflect.Type]struct{} // types for which enc/dec must be generated + ts []reflect.Type // types for which enc/dec must be generated + + xs string // top level variable/constant suffix + hn string // fn helper type name + + ti *TypeInfos + // rr *rand.Rand // random generator for file-specific types +} + +// Gen will write a complete go file containing Selfer implementations for each +// type passed. All the types must be in the same package. +// +// Library users: *DO NOT USE IT DIRECTLY. IT WILL CHANGE CONTINOUSLY WITHOUT NOTICE.* +func Gen(w io.Writer, buildTags, pkgName, uid string, useUnsafe bool, ti *TypeInfos, typ ...reflect.Type) { + if len(typ) == 0 { + return + } + x := genRunner{ + unsafe: useUnsafe, + w: w, + t: typ, + te: make(map[uintptr]bool), + td: make(map[uintptr]bool), + im: make(map[string]reflect.Type), + imn: make(map[string]string), + is: make(map[reflect.Type]struct{}), + tm: make(map[reflect.Type]struct{}), + ts: []reflect.Type{}, + bp: genImportPath(typ[0]), + xs: uid, + ti: ti, + } + if x.ti == nil { + x.ti = defTypeInfos + } + if x.xs == "" { + rr := rand.New(rand.NewSource(time.Now().UnixNano())) + x.xs = strconv.FormatInt(rr.Int63n(9999), 10) + } + + // gather imports first: + x.cp = genImportPath(reflect.TypeOf(x)) + x.imn[x.cp] = genCodecPkg + for _, t := range typ { + // fmt.Printf("###########: PkgPath: '%v', Name: '%s'\n", genImportPath(t), t.Name()) + if genImportPath(t) != x.bp { + panic(genAllTypesSamePkgErr) + } + x.genRefPkgs(t) + } + if buildTags != "" { + x.line("//+build " + buildTags) + x.line("") + } + x.line(` + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +`) + x.line("package " + pkgName) + x.line("") + x.line("import (") + if x.cp != x.bp { + x.cpfx = genCodecPkg + "." + x.linef("%s \"%s\"", genCodecPkg, x.cp) + } + // use a sorted set of im keys, so that we can get consistent output + imKeys := make([]string, 0, len(x.im)) + for k, _ := range x.im { + imKeys = append(imKeys, k) + } + sort.Strings(imKeys) + for _, k := range imKeys { // for k, _ := range x.im { + x.linef("%s \"%s\"", x.imn[k], k) + } + // add required packages + for _, k := range [...]string{"reflect", "unsafe", "runtime", "fmt", "errors"} { + if _, ok := x.im[k]; !ok { + if k == "unsafe" && !x.unsafe { + continue + } + x.line("\"" + k + "\"") + } + } + x.line(")") + x.line("") + + x.line("const (") + x.linef("// ----- content types ----") + x.linef("codecSelferC_UTF8%s = %v", x.xs, int64(c_UTF8)) + x.linef("codecSelferC_RAW%s = %v", x.xs, int64(c_RAW)) + x.linef("// ----- value types used ----") + x.linef("codecSelferValueTypeArray%s = %v", x.xs, int64(valueTypeArray)) + x.linef("codecSelferValueTypeMap%s = %v", x.xs, int64(valueTypeMap)) + x.linef("// ----- containerStateValues ----") + x.linef("codecSelfer_containerMapKey%s = %v", x.xs, int64(containerMapKey)) + x.linef("codecSelfer_containerMapValue%s = %v", x.xs, int64(containerMapValue)) + x.linef("codecSelfer_containerMapEnd%s = %v", x.xs, int64(containerMapEnd)) + x.linef("codecSelfer_containerArrayElem%s = %v", x.xs, int64(containerArrayElem)) + x.linef("codecSelfer_containerArrayEnd%s = %v", x.xs, int64(containerArrayEnd)) + x.line(")") + x.line("var (") + x.line("codecSelferBitsize" + x.xs + " = uint8(reflect.TypeOf(uint(0)).Bits())") + x.line("codecSelferOnlyMapOrArrayEncodeToStructErr" + x.xs + " = errors.New(`only encoded map or array can be decoded into a struct`)") + x.line(")") + x.line("") + + if x.unsafe { + x.line("type codecSelferUnsafeString" + x.xs + " struct { Data uintptr; Len int}") + x.line("") + } + x.hn = "codecSelfer" + x.xs + x.line("type " + x.hn + " struct{}") + x.line("") + + x.line("func init() {") + x.linef("if %sGenVersion != %v {", x.cpfx, GenVersion) + x.line("_, file, _, _ := runtime.Caller(0)") + x.line(`err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", `) + x.linef(`%v, %sGenVersion, file)`, GenVersion, x.cpfx) + x.line("panic(err)") + x.linef("}") + x.line("if false { // reference the types, but skip this branch at build/run time") + var n int + // for k, t := range x.im { + for _, k := range imKeys { + t := x.im[k] + x.linef("var v%v %s.%s", n, x.imn[k], t.Name()) + n++ + } + if x.unsafe { + x.linef("var v%v unsafe.Pointer", n) + n++ + } + if n > 0 { + x.out("_") + for i := 1; i < n; i++ { + x.out(", _") + } + x.out(" = v0") + for i := 1; i < n; i++ { + x.outf(", v%v", i) + } + } + x.line("} ") // close if false + x.line("}") // close init + x.line("") + + // generate rest of type info + for _, t := range typ { + x.tc = t + x.selfer(true) + x.selfer(false) + } + + for _, t := range x.ts { + rtid := reflect.ValueOf(t).Pointer() + // generate enc functions for all these slice/map types. + x.linef("func (x %s) enc%s(v %s%s, e *%sEncoder) {", x.hn, x.genMethodNameT(t), x.arr2str(t, "*"), x.genTypeName(t), x.cpfx) + x.genRequiredMethodVars(true) + switch t.Kind() { + case reflect.Array, reflect.Slice, reflect.Chan: + x.encListFallback("v", t) + case reflect.Map: + x.encMapFallback("v", t) + default: + panic(genExpectArrayOrMapErr) + } + x.line("}") + x.line("") + + // generate dec functions for all these slice/map types. + x.linef("func (x %s) dec%s(v *%s, d *%sDecoder) {", x.hn, x.genMethodNameT(t), x.genTypeName(t), x.cpfx) + x.genRequiredMethodVars(false) + switch t.Kind() { + case reflect.Array, reflect.Slice, reflect.Chan: + x.decListFallback("v", rtid, t) + case reflect.Map: + x.decMapFallback("v", rtid, t) + default: + panic(genExpectArrayOrMapErr) + } + x.line("}") + x.line("") + } + + x.line("") +} + +func (x *genRunner) checkForSelfer(t reflect.Type, varname string) bool { + // return varname != genTopLevelVarName && t != x.tc + // the only time we checkForSelfer is if we are not at the TOP of the generated code. + return varname != genTopLevelVarName +} + +func (x *genRunner) arr2str(t reflect.Type, s string) string { + if t.Kind() == reflect.Array { + return s + } + return "" +} + +func (x *genRunner) genRequiredMethodVars(encode bool) { + x.line("var h " + x.hn) + if encode { + x.line("z, r := " + x.cpfx + "GenHelperEncoder(e)") + } else { + x.line("z, r := " + x.cpfx + "GenHelperDecoder(d)") + } + x.line("_, _, _ = h, z, r") +} + +func (x *genRunner) genRefPkgs(t reflect.Type) { + if _, ok := x.is[t]; ok { + return + } + // fmt.Printf(">>>>>>: PkgPath: '%v', Name: '%s'\n", genImportPath(t), t.Name()) + x.is[t] = struct{}{} + tpkg, tname := genImportPath(t), t.Name() + if tpkg != "" && tpkg != x.bp && tpkg != x.cp && tname != "" && tname[0] >= 'A' && tname[0] <= 'Z' { + if _, ok := x.im[tpkg]; !ok { + x.im[tpkg] = t + if idx := strings.LastIndex(tpkg, "/"); idx < 0 { + x.imn[tpkg] = tpkg + } else { + x.imc++ + x.imn[tpkg] = "pkg" + strconv.FormatUint(x.imc, 10) + "_" + tpkg[idx+1:] + } + } + } + switch t.Kind() { + case reflect.Array, reflect.Slice, reflect.Ptr, reflect.Chan: + x.genRefPkgs(t.Elem()) + case reflect.Map: + x.genRefPkgs(t.Elem()) + x.genRefPkgs(t.Key()) + case reflect.Struct: + for i := 0; i < t.NumField(); i++ { + if fname := t.Field(i).Name; fname != "" && fname[0] >= 'A' && fname[0] <= 'Z' { + x.genRefPkgs(t.Field(i).Type) + } + } + } +} + +func (x *genRunner) line(s string) { + x.out(s) + if len(s) == 0 || s[len(s)-1] != '\n' { + x.out("\n") + } +} + +func (x *genRunner) varsfx() string { + x.c++ + return strconv.FormatUint(x.c, 10) +} + +func (x *genRunner) out(s string) { + if _, err := io.WriteString(x.w, s); err != nil { + panic(err) + } +} + +func (x *genRunner) linef(s string, params ...interface{}) { + x.line(fmt.Sprintf(s, params...)) +} + +func (x *genRunner) outf(s string, params ...interface{}) { + x.out(fmt.Sprintf(s, params...)) +} + +func (x *genRunner) genTypeName(t reflect.Type) (n string) { + // defer func() { fmt.Printf(">>>> ####: genTypeName: t: %v, name: '%s'\n", t, n) }() + + // if the type has a PkgPath, which doesn't match the current package, + // then include it. + // We cannot depend on t.String() because it includes current package, + // or t.PkgPath because it includes full import path, + // + var ptrPfx string + for t.Kind() == reflect.Ptr { + ptrPfx += "*" + t = t.Elem() + } + if tn := t.Name(); tn != "" { + return ptrPfx + x.genTypeNamePrim(t) + } + switch t.Kind() { + case reflect.Map: + return ptrPfx + "map[" + x.genTypeName(t.Key()) + "]" + x.genTypeName(t.Elem()) + case reflect.Slice: + return ptrPfx + "[]" + x.genTypeName(t.Elem()) + case reflect.Array: + return ptrPfx + "[" + strconv.FormatInt(int64(t.Len()), 10) + "]" + x.genTypeName(t.Elem()) + case reflect.Chan: + return ptrPfx + t.ChanDir().String() + " " + x.genTypeName(t.Elem()) + default: + if t == intfTyp { + return ptrPfx + "interface{}" + } else { + return ptrPfx + x.genTypeNamePrim(t) + } + } +} + +func (x *genRunner) genTypeNamePrim(t reflect.Type) (n string) { + if t.Name() == "" { + return t.String() + } else if genImportPath(t) == "" || genImportPath(t) == genImportPath(x.tc) { + return t.Name() + } else { + return x.imn[genImportPath(t)] + "." + t.Name() + // return t.String() // best way to get the package name inclusive + } +} + +func (x *genRunner) genZeroValueR(t reflect.Type) string { + // if t is a named type, w + switch t.Kind() { + case reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func, + reflect.Slice, reflect.Map, reflect.Invalid: + return "nil" + case reflect.Bool: + return "false" + case reflect.String: + return `""` + case reflect.Struct, reflect.Array: + return x.genTypeName(t) + "{}" + default: // all numbers + return "0" + } +} + +func (x *genRunner) genMethodNameT(t reflect.Type) (s string) { + return genMethodNameT(t, x.tc) +} + +func (x *genRunner) selfer(encode bool) { + t := x.tc + t0 := t + // always make decode use a pointer receiver, + // and structs always use a ptr receiver (encode|decode) + isptr := !encode || t.Kind() == reflect.Struct + fnSigPfx := "func (x " + if isptr { + fnSigPfx += "*" + } + fnSigPfx += x.genTypeName(t) + + x.out(fnSigPfx) + if isptr { + t = reflect.PtrTo(t) + } + if encode { + x.line(") CodecEncodeSelf(e *" + x.cpfx + "Encoder) {") + x.genRequiredMethodVars(true) + // x.enc(genTopLevelVarName, t) + x.encVar(genTopLevelVarName, t) + } else { + x.line(") CodecDecodeSelf(d *" + x.cpfx + "Decoder) {") + x.genRequiredMethodVars(false) + // do not use decVar, as there is no need to check TryDecodeAsNil + // or way to elegantly handle that, and also setting it to a + // non-nil value doesn't affect the pointer passed. + // x.decVar(genTopLevelVarName, t, false) + x.dec(genTopLevelVarName, t0) + } + x.line("}") + x.line("") + + if encode || t0.Kind() != reflect.Struct { + return + } + + // write is containerMap + if genUseOneFunctionForDecStructMap { + x.out(fnSigPfx) + x.line(") codecDecodeSelfFromMap(l int, d *" + x.cpfx + "Decoder) {") + x.genRequiredMethodVars(false) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleConsolidated) + x.line("}") + x.line("") + } else { + x.out(fnSigPfx) + x.line(") codecDecodeSelfFromMapLenPrefix(l int, d *" + x.cpfx + "Decoder) {") + x.genRequiredMethodVars(false) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleLenPrefix) + x.line("}") + x.line("") + + x.out(fnSigPfx) + x.line(") codecDecodeSelfFromMapCheckBreak(l int, d *" + x.cpfx + "Decoder) {") + x.genRequiredMethodVars(false) + x.decStructMap(genTopLevelVarName, "l", reflect.ValueOf(t0).Pointer(), t0, genStructMapStyleCheckBreak) + x.line("}") + x.line("") + } + + // write containerArray + x.out(fnSigPfx) + x.line(") codecDecodeSelfFromArray(l int, d *" + x.cpfx + "Decoder) {") + x.genRequiredMethodVars(false) + x.decStructArray(genTopLevelVarName, "l", "return", reflect.ValueOf(t0).Pointer(), t0) + x.line("}") + x.line("") + +} + +// used for chan, array, slice, map +func (x *genRunner) xtraSM(varname string, encode bool, t reflect.Type) { + if encode { + x.linef("h.enc%s((%s%s)(%s), e)", x.genMethodNameT(t), x.arr2str(t, "*"), x.genTypeName(t), varname) + } else { + x.linef("h.dec%s((*%s)(%s), d)", x.genMethodNameT(t), x.genTypeName(t), varname) + } + if _, ok := x.tm[t]; !ok { + x.tm[t] = struct{}{} + x.ts = append(x.ts, t) + } +} + +// encVar will encode a variable. +// The parameter, t, is the reflect.Type of the variable itself +func (x *genRunner) encVar(varname string, t reflect.Type) { + // fmt.Printf(">>>>>> varname: %s, t: %v\n", varname, t) + var checkNil bool + switch t.Kind() { + case reflect.Ptr, reflect.Interface, reflect.Slice, reflect.Map, reflect.Chan: + checkNil = true + } + if checkNil { + x.linef("if %s == nil { r.EncodeNil() } else { ", varname) + } + switch t.Kind() { + case reflect.Ptr: + switch t.Elem().Kind() { + case reflect.Struct, reflect.Array: + x.enc(varname, genNonPtr(t)) + default: + i := x.varsfx() + x.line(genTempVarPfx + i + " := *" + varname) + x.enc(genTempVarPfx+i, genNonPtr(t)) + } + case reflect.Struct, reflect.Array: + i := x.varsfx() + x.line(genTempVarPfx + i + " := &" + varname) + x.enc(genTempVarPfx+i, t) + default: + x.enc(varname, t) + } + + if checkNil { + x.line("}") + } + +} + +// enc will encode a variable (varname) of type T, +// except t is of kind reflect.Struct or reflect.Array, wherein varname is of type *T (to prevent copying) +func (x *genRunner) enc(varname string, t reflect.Type) { + // varName here must be to a pointer to a struct/array, or to a value directly. + rtid := reflect.ValueOf(t).Pointer() + // We call CodecEncodeSelf if one of the following are honored: + // - the type already implements Selfer, call that + // - the type has a Selfer implementation just created, use that + // - the type is in the list of the ones we will generate for, but it is not currently being generated + + tptr := reflect.PtrTo(t) + tk := t.Kind() + if x.checkForSelfer(t, varname) { + if t.Implements(selferTyp) || (tptr.Implements(selferTyp) && (tk == reflect.Array || tk == reflect.Struct)) { + x.line(varname + ".CodecEncodeSelf(e)") + return + } + + if _, ok := x.te[rtid]; ok { + x.line(varname + ".CodecEncodeSelf(e)") + return + } + } + + inlist := false + for _, t0 := range x.t { + if t == t0 { + inlist = true + if x.checkForSelfer(t, varname) { + x.line(varname + ".CodecEncodeSelf(e)") + return + } + break + } + } + + var rtidAdded bool + if t == x.tc { + x.te[rtid] = true + rtidAdded = true + } + + // check if + // - type is RawExt + // - the type implements (Text|JSON|Binary)(Unm|M)arshal + mi := x.varsfx() + x.linef("%sm%s := z.EncBinary()", genTempVarPfx, mi) + x.linef("_ = %sm%s", genTempVarPfx, mi) + x.line("if false {") //start if block + defer func() { x.line("}") }() //end if block + + if t == rawExtTyp { + x.linef("} else { r.EncodeRawExt(%v, e)", varname) + return + } + // HACK: Support for Builtins. + // Currently, only Binc supports builtins, and the only builtin type is time.Time. + // Have a method that returns the rtid for time.Time if Handle is Binc. + if t == timeTyp { + vrtid := genTempVarPfx + "m" + x.varsfx() + x.linef("} else if %s := z.TimeRtidIfBinc(); %s != 0 { ", vrtid, vrtid) + x.linef("r.EncodeBuiltin(%s, %s)", vrtid, varname) + } + // only check for extensions if the type is named, and has a packagePath. + if genImportPath(t) != "" && t.Name() != "" { + // first check if extensions are configued, before doing the interface conversion + x.linef("} else if z.HasExtensions() && z.EncExt(%s) {", varname) + } + if t.Implements(binaryMarshalerTyp) || tptr.Implements(binaryMarshalerTyp) { + x.linef("} else if %sm%s { z.EncBinaryMarshal(%v) ", genTempVarPfx, mi, varname) + } + if t.Implements(jsonMarshalerTyp) || tptr.Implements(jsonMarshalerTyp) { + x.linef("} else if !%sm%s && z.IsJSONHandle() { z.EncJSONMarshal(%v) ", genTempVarPfx, mi, varname) + } else if t.Implements(textMarshalerTyp) || tptr.Implements(textMarshalerTyp) { + x.linef("} else if !%sm%s { z.EncTextMarshal(%v) ", genTempVarPfx, mi, varname) + } + + x.line("} else {") + + switch t.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + x.line("r.EncodeInt(int64(" + varname + "))") + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + x.line("r.EncodeUint(uint64(" + varname + "))") + case reflect.Float32: + x.line("r.EncodeFloat32(float32(" + varname + "))") + case reflect.Float64: + x.line("r.EncodeFloat64(float64(" + varname + "))") + case reflect.Bool: + x.line("r.EncodeBool(bool(" + varname + "))") + case reflect.String: + x.line("r.EncodeString(codecSelferC_UTF8" + x.xs + ", string(" + varname + "))") + case reflect.Chan: + x.xtraSM(varname, true, t) + // x.encListFallback(varname, rtid, t) + case reflect.Array: + x.xtraSM(varname, true, t) + case reflect.Slice: + // if nil, call dedicated function + // if a []uint8, call dedicated function + // if a known fastpath slice, call dedicated function + // else write encode function in-line. + // - if elements are primitives or Selfers, call dedicated function on each member. + // - else call Encoder.encode(XXX) on it. + if rtid == uint8SliceTypId { + x.line("r.EncodeStringBytes(codecSelferC_RAW" + x.xs + ", []byte(" + varname + "))") + } else if fastpathAV.index(rtid) != -1 { + g := x.newGenV(t) + x.line("z.F." + g.MethodNamePfx("Enc", false) + "V(" + varname + ", false, e)") + } else { + x.xtraSM(varname, true, t) + // x.encListFallback(varname, rtid, t) + } + case reflect.Map: + // if nil, call dedicated function + // if a known fastpath map, call dedicated function + // else write encode function in-line. + // - if elements are primitives or Selfers, call dedicated function on each member. + // - else call Encoder.encode(XXX) on it. + // x.line("if " + varname + " == nil { \nr.EncodeNil()\n } else { ") + if fastpathAV.index(rtid) != -1 { + g := x.newGenV(t) + x.line("z.F." + g.MethodNamePfx("Enc", false) + "V(" + varname + ", false, e)") + } else { + x.xtraSM(varname, true, t) + // x.encMapFallback(varname, rtid, t) + } + case reflect.Struct: + if !inlist { + delete(x.te, rtid) + x.line("z.EncFallback(" + varname + ")") + break + } + x.encStruct(varname, rtid, t) + default: + if rtidAdded { + delete(x.te, rtid) + } + x.line("z.EncFallback(" + varname + ")") + } +} + +func (x *genRunner) encZero(t reflect.Type) { + switch t.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + x.line("r.EncodeInt(0)") + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + x.line("r.EncodeUint(0)") + case reflect.Float32: + x.line("r.EncodeFloat32(0)") + case reflect.Float64: + x.line("r.EncodeFloat64(0)") + case reflect.Bool: + x.line("r.EncodeBool(false)") + case reflect.String: + x.line("r.EncodeString(codecSelferC_UTF8" + x.xs + `, "")`) + default: + x.line("r.EncodeNil()") + } +} + +func (x *genRunner) encStruct(varname string, rtid uintptr, t reflect.Type) { + // Use knowledge from structfieldinfo (mbs, encodable fields. Ignore omitempty. ) + // replicate code in kStruct i.e. for each field, deref type to non-pointer, and call x.enc on it + + // if t === type currently running selfer on, do for all + ti := x.ti.get(rtid, t) + i := x.varsfx() + sepVarname := genTempVarPfx + "sep" + i + numfieldsvar := genTempVarPfx + "q" + i + ti2arrayvar := genTempVarPfx + "r" + i + struct2arrvar := genTempVarPfx + "2arr" + i + + x.line(sepVarname + " := !z.EncBinary()") + x.linef("%s := z.EncBasicHandle().StructToArray", struct2arrvar) + tisfi := ti.sfip // always use sequence from file. decStruct expects same thing. + // due to omitEmpty, we need to calculate the + // number of non-empty things we write out first. + // This is required as we need to pre-determine the size of the container, + // to support length-prefixing. + x.linef("var %s [%v]bool", numfieldsvar, len(tisfi)) + x.linef("_, _, _ = %s, %s, %s", sepVarname, numfieldsvar, struct2arrvar) + x.linef("const %s bool = %v", ti2arrayvar, ti.toArray) + nn := 0 + for j, si := range tisfi { + if !si.omitEmpty { + nn++ + continue + } + var t2 reflect.StructField + var omitline string + if si.i != -1 { + t2 = t.Field(int(si.i)) + } else { + t2typ := t + varname3 := varname + for _, ix := range si.is { + for t2typ.Kind() == reflect.Ptr { + t2typ = t2typ.Elem() + } + t2 = t2typ.Field(ix) + t2typ = t2.Type + varname3 = varname3 + "." + t2.Name + if t2typ.Kind() == reflect.Ptr { + omitline += varname3 + " != nil && " + } + } + } + // never check omitEmpty on a struct type, as it may contain uncomparable map/slice/etc. + // also, for maps/slices/arrays, check if len ! 0 (not if == zero value) + switch t2.Type.Kind() { + case reflect.Struct: + omitline += " true" + case reflect.Map, reflect.Slice, reflect.Array, reflect.Chan: + omitline += "len(" + varname + "." + t2.Name + ") != 0" + default: + omitline += varname + "." + t2.Name + " != " + x.genZeroValueR(t2.Type) + } + x.linef("%s[%v] = %s", numfieldsvar, j, omitline) + } + x.linef("var %snn%s int", genTempVarPfx, i) + x.linef("if %s || %s {", ti2arrayvar, struct2arrvar) // if ti.toArray { + x.line("r.EncodeArrayStart(" + strconv.FormatInt(int64(len(tisfi)), 10) + ")") + x.linef("} else {") // if not ti.toArray + x.linef("%snn%s = %v", genTempVarPfx, i, nn) + x.linef("for _, b := range %s { if b { %snn%s++ } }", numfieldsvar, genTempVarPfx, i) + x.linef("r.EncodeMapStart(%snn%s)", genTempVarPfx, i) + x.linef("%snn%s = %v", genTempVarPfx, i, 0) + // x.line("r.EncodeMapStart(" + strconv.FormatInt(int64(len(tisfi)), 10) + ")") + x.line("}") // close if not StructToArray + + for j, si := range tisfi { + i := x.varsfx() + isNilVarName := genTempVarPfx + "n" + i + var labelUsed bool + var t2 reflect.StructField + if si.i != -1 { + t2 = t.Field(int(si.i)) + } else { + t2typ := t + varname3 := varname + for _, ix := range si.is { + // fmt.Printf("%%%% %v, ix: %v\n", t2typ, ix) + for t2typ.Kind() == reflect.Ptr { + t2typ = t2typ.Elem() + } + t2 = t2typ.Field(ix) + t2typ = t2.Type + varname3 = varname3 + "." + t2.Name + if t2typ.Kind() == reflect.Ptr { + if !labelUsed { + x.line("var " + isNilVarName + " bool") + } + x.line("if " + varname3 + " == nil { " + isNilVarName + " = true ") + x.line("goto LABEL" + i) + x.line("}") + labelUsed = true + // "varname3 = new(" + x.genTypeName(t3.Elem()) + ") }") + } + } + // t2 = t.FieldByIndex(si.is) + } + if labelUsed { + x.line("LABEL" + i + ":") + } + // if the type of the field is a Selfer, or one of the ones + + x.linef("if %s || %s {", ti2arrayvar, struct2arrvar) // if ti.toArray + if labelUsed { + x.line("if " + isNilVarName + " { r.EncodeNil() } else { ") + } + x.linef("z.EncSendContainerState(codecSelfer_containerArrayElem%s)", x.xs) + if si.omitEmpty { + x.linef("if %s[%v] {", numfieldsvar, j) + } + x.encVar(varname+"."+t2.Name, t2.Type) + if si.omitEmpty { + x.linef("} else {") + x.encZero(t2.Type) + x.linef("}") + } + if labelUsed { + x.line("}") + } + + x.linef("} else {") // if not ti.toArray + + if si.omitEmpty { + x.linef("if %s[%v] {", numfieldsvar, j) + } + x.linef("z.EncSendContainerState(codecSelfer_containerMapKey%s)", x.xs) + x.line("r.EncodeString(codecSelferC_UTF8" + x.xs + ", string(\"" + si.encName + "\"))") + x.linef("z.EncSendContainerState(codecSelfer_containerMapValue%s)", x.xs) + if labelUsed { + x.line("if " + isNilVarName + " { r.EncodeNil() } else { ") + x.encVar(varname+"."+t2.Name, t2.Type) + x.line("}") + } else { + x.encVar(varname+"."+t2.Name, t2.Type) + } + if si.omitEmpty { + x.line("}") + } + x.linef("} ") // end if/else ti.toArray + } + x.linef("if %s || %s {", ti2arrayvar, struct2arrvar) // if ti.toArray { + x.linef("z.EncSendContainerState(codecSelfer_containerArrayEnd%s)", x.xs) + x.line("} else {") + x.linef("z.EncSendContainerState(codecSelfer_containerMapEnd%s)", x.xs) + x.line("}") + +} + +func (x *genRunner) encListFallback(varname string, t reflect.Type) { + i := x.varsfx() + g := genTempVarPfx + x.line("r.EncodeArrayStart(len(" + varname + "))") + if t.Kind() == reflect.Chan { + x.linef("for %si%s, %si2%s := 0, len(%s); %si%s < %si2%s; %si%s++ {", g, i, g, i, varname, g, i, g, i, g, i) + x.linef("z.EncSendContainerState(codecSelfer_containerArrayElem%s)", x.xs) + x.linef("%sv%s := <-%s", g, i, varname) + } else { + // x.linef("for %si%s, %sv%s := range %s {", genTempVarPfx, i, genTempVarPfx, i, varname) + x.linef("for _, %sv%s := range %s {", genTempVarPfx, i, varname) + x.linef("z.EncSendContainerState(codecSelfer_containerArrayElem%s)", x.xs) + } + x.encVar(genTempVarPfx+"v"+i, t.Elem()) + x.line("}") + x.linef("z.EncSendContainerState(codecSelfer_containerArrayEnd%s)", x.xs) +} + +func (x *genRunner) encMapFallback(varname string, t reflect.Type) { + // TODO: expand this to handle canonical. + i := x.varsfx() + x.line("r.EncodeMapStart(len(" + varname + "))") + x.linef("for %sk%s, %sv%s := range %s {", genTempVarPfx, i, genTempVarPfx, i, varname) + // x.line("for " + genTempVarPfx + "k" + i + ", " + genTempVarPfx + "v" + i + " := range " + varname + " {") + x.linef("z.EncSendContainerState(codecSelfer_containerMapKey%s)", x.xs) + x.encVar(genTempVarPfx+"k"+i, t.Key()) + x.linef("z.EncSendContainerState(codecSelfer_containerMapValue%s)", x.xs) + x.encVar(genTempVarPfx+"v"+i, t.Elem()) + x.line("}") + x.linef("z.EncSendContainerState(codecSelfer_containerMapEnd%s)", x.xs) +} + +func (x *genRunner) decVar(varname string, t reflect.Type, canBeNil bool) { + // We only encode as nil if a nillable value. + // This removes some of the wasted checks for TryDecodeAsNil. + // We need to think about this more, to see what happens if omitempty, etc + // cause a nil value to be stored when something is expected. + // This could happen when decoding from a struct encoded as an array. + // For that, decVar should be called with canNil=true, to force true as its value. + i := x.varsfx() + if !canBeNil { + canBeNil = genAnythingCanBeNil || !genIsImmutable(t) + } + if canBeNil { + x.line("if r.TryDecodeAsNil() {") + if t.Kind() == reflect.Ptr { + x.line("if " + varname + " != nil { ") + + // if varname is a field of a struct (has a dot in it), + // then just set it to nil + if strings.IndexByte(varname, '.') != -1 { + x.line(varname + " = nil") + } else { + x.line("*" + varname + " = " + x.genZeroValueR(t.Elem())) + } + x.line("}") + } else { + x.line(varname + " = " + x.genZeroValueR(t)) + } + x.line("} else {") + } else { + x.line("// cannot be nil") + } + if t.Kind() != reflect.Ptr { + if x.decTryAssignPrimitive(varname, t) { + x.line(genTempVarPfx + "v" + i + " := &" + varname) + x.dec(genTempVarPfx+"v"+i, t) + } + } else { + x.linef("if %s == nil { %s = new(%s) }", varname, varname, x.genTypeName(t.Elem())) + // Ensure we set underlying ptr to a non-nil value (so we can deref to it later). + // There's a chance of a **T in here which is nil. + var ptrPfx string + for t = t.Elem(); t.Kind() == reflect.Ptr; t = t.Elem() { + ptrPfx += "*" + x.linef("if %s%s == nil { %s%s = new(%s)}", + ptrPfx, varname, ptrPfx, varname, x.genTypeName(t)) + } + // if varname has [ in it, then create temp variable for this ptr thingie + if strings.Index(varname, "[") >= 0 { + varname2 := genTempVarPfx + "w" + i + x.line(varname2 + " := " + varname) + varname = varname2 + } + + if ptrPfx == "" { + x.dec(varname, t) + } else { + x.line(genTempVarPfx + "z" + i + " := " + ptrPfx + varname) + x.dec(genTempVarPfx+"z"+i, t) + } + + } + + if canBeNil { + x.line("} ") + } +} + +func (x *genRunner) dec(varname string, t reflect.Type) { + // assumptions: + // - the varname is to a pointer already. No need to take address of it + // - t is always a baseType T (not a *T, etc). + rtid := reflect.ValueOf(t).Pointer() + tptr := reflect.PtrTo(t) + if x.checkForSelfer(t, varname) { + if t.Implements(selferTyp) || tptr.Implements(selferTyp) { + x.line(varname + ".CodecDecodeSelf(d)") + return + } + if _, ok := x.td[rtid]; ok { + x.line(varname + ".CodecDecodeSelf(d)") + return + } + } + + inlist := false + for _, t0 := range x.t { + if t == t0 { + inlist = true + if x.checkForSelfer(t, varname) { + x.line(varname + ".CodecDecodeSelf(d)") + return + } + break + } + } + + var rtidAdded bool + if t == x.tc { + x.td[rtid] = true + rtidAdded = true + } + + // check if + // - type is RawExt + // - the type implements (Text|JSON|Binary)(Unm|M)arshal + mi := x.varsfx() + x.linef("%sm%s := z.DecBinary()", genTempVarPfx, mi) + x.linef("_ = %sm%s", genTempVarPfx, mi) + x.line("if false {") //start if block + defer func() { x.line("}") }() //end if block + + if t == rawExtTyp { + x.linef("} else { r.DecodeExt(%v, 0, nil)", varname) + return + } + + // HACK: Support for Builtins. + // Currently, only Binc supports builtins, and the only builtin type is time.Time. + // Have a method that returns the rtid for time.Time if Handle is Binc. + if t == timeTyp { + vrtid := genTempVarPfx + "m" + x.varsfx() + x.linef("} else if %s := z.TimeRtidIfBinc(); %s != 0 { ", vrtid, vrtid) + x.linef("r.DecodeBuiltin(%s, %s)", vrtid, varname) + } + // only check for extensions if the type is named, and has a packagePath. + if genImportPath(t) != "" && t.Name() != "" { + // first check if extensions are configued, before doing the interface conversion + x.linef("} else if z.HasExtensions() && z.DecExt(%s) {", varname) + } + + if t.Implements(binaryUnmarshalerTyp) || tptr.Implements(binaryUnmarshalerTyp) { + x.linef("} else if %sm%s { z.DecBinaryUnmarshal(%v) ", genTempVarPfx, mi, varname) + } + if t.Implements(jsonUnmarshalerTyp) || tptr.Implements(jsonUnmarshalerTyp) { + x.linef("} else if !%sm%s && z.IsJSONHandle() { z.DecJSONUnmarshal(%v)", genTempVarPfx, mi, varname) + } else if t.Implements(textUnmarshalerTyp) || tptr.Implements(textUnmarshalerTyp) { + x.linef("} else if !%sm%s { z.DecTextUnmarshal(%v)", genTempVarPfx, mi, varname) + } + + x.line("} else {") + + // Since these are pointers, we cannot share, and have to use them one by one + switch t.Kind() { + case reflect.Int: + x.line("*((*int)(" + varname + ")) = int(r.DecodeInt(codecSelferBitsize" + x.xs + "))") + // x.line("z.DecInt((*int)(" + varname + "))") + case reflect.Int8: + x.line("*((*int8)(" + varname + ")) = int8(r.DecodeInt(8))") + // x.line("z.DecInt8((*int8)(" + varname + "))") + case reflect.Int16: + x.line("*((*int16)(" + varname + ")) = int16(r.DecodeInt(16))") + // x.line("z.DecInt16((*int16)(" + varname + "))") + case reflect.Int32: + x.line("*((*int32)(" + varname + ")) = int32(r.DecodeInt(32))") + // x.line("z.DecInt32((*int32)(" + varname + "))") + case reflect.Int64: + x.line("*((*int64)(" + varname + ")) = int64(r.DecodeInt(64))") + // x.line("z.DecInt64((*int64)(" + varname + "))") + + case reflect.Uint: + x.line("*((*uint)(" + varname + ")) = uint(r.DecodeUint(codecSelferBitsize" + x.xs + "))") + // x.line("z.DecUint((*uint)(" + varname + "))") + case reflect.Uint8: + x.line("*((*uint8)(" + varname + ")) = uint8(r.DecodeUint(8))") + // x.line("z.DecUint8((*uint8)(" + varname + "))") + case reflect.Uint16: + x.line("*((*uint16)(" + varname + ")) = uint16(r.DecodeUint(16))") + //x.line("z.DecUint16((*uint16)(" + varname + "))") + case reflect.Uint32: + x.line("*((*uint32)(" + varname + ")) = uint32(r.DecodeUint(32))") + //x.line("z.DecUint32((*uint32)(" + varname + "))") + case reflect.Uint64: + x.line("*((*uint64)(" + varname + ")) = uint64(r.DecodeUint(64))") + //x.line("z.DecUint64((*uint64)(" + varname + "))") + case reflect.Uintptr: + x.line("*((*uintptr)(" + varname + ")) = uintptr(r.DecodeUint(codecSelferBitsize" + x.xs + "))") + + case reflect.Float32: + x.line("*((*float32)(" + varname + ")) = float32(r.DecodeFloat(true))") + //x.line("z.DecFloat32((*float32)(" + varname + "))") + case reflect.Float64: + x.line("*((*float64)(" + varname + ")) = float64(r.DecodeFloat(false))") + // x.line("z.DecFloat64((*float64)(" + varname + "))") + + case reflect.Bool: + x.line("*((*bool)(" + varname + ")) = r.DecodeBool()") + // x.line("z.DecBool((*bool)(" + varname + "))") + case reflect.String: + x.line("*((*string)(" + varname + ")) = r.DecodeString()") + // x.line("z.DecString((*string)(" + varname + "))") + case reflect.Array, reflect.Chan: + x.xtraSM(varname, false, t) + // x.decListFallback(varname, rtid, true, t) + case reflect.Slice: + // if a []uint8, call dedicated function + // if a known fastpath slice, call dedicated function + // else write encode function in-line. + // - if elements are primitives or Selfers, call dedicated function on each member. + // - else call Encoder.encode(XXX) on it. + if rtid == uint8SliceTypId { + x.line("*" + varname + " = r.DecodeBytes(*(*[]byte)(" + varname + "), false, false)") + } else if fastpathAV.index(rtid) != -1 { + g := x.newGenV(t) + x.line("z.F." + g.MethodNamePfx("Dec", false) + "X(" + varname + ", false, d)") + } else { + x.xtraSM(varname, false, t) + // x.decListFallback(varname, rtid, false, t) + } + case reflect.Map: + // if a known fastpath map, call dedicated function + // else write encode function in-line. + // - if elements are primitives or Selfers, call dedicated function on each member. + // - else call Encoder.encode(XXX) on it. + if fastpathAV.index(rtid) != -1 { + g := x.newGenV(t) + x.line("z.F." + g.MethodNamePfx("Dec", false) + "X(" + varname + ", false, d)") + } else { + x.xtraSM(varname, false, t) + // x.decMapFallback(varname, rtid, t) + } + case reflect.Struct: + if inlist { + x.decStruct(varname, rtid, t) + } else { + // delete(x.td, rtid) + x.line("z.DecFallback(" + varname + ", false)") + } + default: + if rtidAdded { + delete(x.te, rtid) + } + x.line("z.DecFallback(" + varname + ", true)") + } +} + +func (x *genRunner) decTryAssignPrimitive(varname string, t reflect.Type) (tryAsPtr bool) { + // We have to use the actual type name when doing a direct assignment. + // We don't have the luxury of casting the pointer to the underlying type. + // + // Consequently, in the situation of a + // type Message int32 + // var x Message + // var i int32 = 32 + // x = i // this will bomb + // x = Message(i) // this will work + // *((*int32)(&x)) = i // this will work + // + // Consequently, we replace: + // case reflect.Uint32: x.line(varname + " = uint32(r.DecodeUint(32))") + // with: + // case reflect.Uint32: x.line(varname + " = " + genTypeNamePrim(t, x.tc) + "(r.DecodeUint(32))") + + xfn := func(t reflect.Type) string { + return x.genTypeNamePrim(t) + } + switch t.Kind() { + case reflect.Int: + x.linef("%s = %s(r.DecodeInt(codecSelferBitsize%s))", varname, xfn(t), x.xs) + case reflect.Int8: + x.linef("%s = %s(r.DecodeInt(8))", varname, xfn(t)) + case reflect.Int16: + x.linef("%s = %s(r.DecodeInt(16))", varname, xfn(t)) + case reflect.Int32: + x.linef("%s = %s(r.DecodeInt(32))", varname, xfn(t)) + case reflect.Int64: + x.linef("%s = %s(r.DecodeInt(64))", varname, xfn(t)) + + case reflect.Uint: + x.linef("%s = %s(r.DecodeUint(codecSelferBitsize%s))", varname, xfn(t), x.xs) + case reflect.Uint8: + x.linef("%s = %s(r.DecodeUint(8))", varname, xfn(t)) + case reflect.Uint16: + x.linef("%s = %s(r.DecodeUint(16))", varname, xfn(t)) + case reflect.Uint32: + x.linef("%s = %s(r.DecodeUint(32))", varname, xfn(t)) + case reflect.Uint64: + x.linef("%s = %s(r.DecodeUint(64))", varname, xfn(t)) + case reflect.Uintptr: + x.linef("%s = %s(r.DecodeUint(codecSelferBitsize%s))", varname, xfn(t), x.xs) + + case reflect.Float32: + x.linef("%s = %s(r.DecodeFloat(true))", varname, xfn(t)) + case reflect.Float64: + x.linef("%s = %s(r.DecodeFloat(false))", varname, xfn(t)) + + case reflect.Bool: + x.linef("%s = %s(r.DecodeBool())", varname, xfn(t)) + case reflect.String: + x.linef("%s = %s(r.DecodeString())", varname, xfn(t)) + default: + tryAsPtr = true + } + return +} + +func (x *genRunner) decListFallback(varname string, rtid uintptr, t reflect.Type) { + type tstruc struct { + TempVar string + Rand string + Varname string + CTyp string + Typ string + Immutable bool + Size int + } + telem := t.Elem() + ts := tstruc{genTempVarPfx, x.varsfx(), varname, x.genTypeName(t), x.genTypeName(telem), genIsImmutable(telem), int(telem.Size())} + + funcs := make(template.FuncMap) + + funcs["decLineVar"] = func(varname string) string { + x.decVar(varname, telem, false) + return "" + } + funcs["decLine"] = func(pfx string) string { + x.decVar(ts.TempVar+pfx+ts.Rand, reflect.PtrTo(telem), false) + return "" + } + funcs["var"] = func(s string) string { + return ts.TempVar + s + ts.Rand + } + funcs["zero"] = func() string { + return x.genZeroValueR(telem) + } + funcs["isArray"] = func() bool { + return t.Kind() == reflect.Array + } + funcs["isSlice"] = func() bool { + return t.Kind() == reflect.Slice + } + funcs["isChan"] = func() bool { + return t.Kind() == reflect.Chan + } + tm, err := template.New("").Funcs(funcs).Parse(genDecListTmpl) + if err != nil { + panic(err) + } + if err = tm.Execute(x.w, &ts); err != nil { + panic(err) + } +} + +func (x *genRunner) decMapFallback(varname string, rtid uintptr, t reflect.Type) { + type tstruc struct { + TempVar string + Sfx string + Rand string + Varname string + KTyp string + Typ string + Size int + } + telem := t.Elem() + tkey := t.Key() + ts := tstruc{ + genTempVarPfx, x.xs, x.varsfx(), varname, x.genTypeName(tkey), + x.genTypeName(telem), int(telem.Size() + tkey.Size()), + } + + funcs := make(template.FuncMap) + funcs["decElemZero"] = func() string { + return x.genZeroValueR(telem) + } + funcs["decElemKindImmutable"] = func() bool { + return genIsImmutable(telem) + } + funcs["decElemKindPtr"] = func() bool { + return telem.Kind() == reflect.Ptr + } + funcs["decElemKindIntf"] = func() bool { + return telem.Kind() == reflect.Interface + } + funcs["decLineVarK"] = func(varname string) string { + x.decVar(varname, tkey, false) + return "" + } + funcs["decLineVar"] = func(varname string) string { + x.decVar(varname, telem, false) + return "" + } + funcs["decLineK"] = func(pfx string) string { + x.decVar(ts.TempVar+pfx+ts.Rand, reflect.PtrTo(tkey), false) + return "" + } + funcs["decLine"] = func(pfx string) string { + x.decVar(ts.TempVar+pfx+ts.Rand, reflect.PtrTo(telem), false) + return "" + } + funcs["var"] = func(s string) string { + return ts.TempVar + s + ts.Rand + } + + tm, err := template.New("").Funcs(funcs).Parse(genDecMapTmpl) + if err != nil { + panic(err) + } + if err = tm.Execute(x.w, &ts); err != nil { + panic(err) + } +} + +func (x *genRunner) decStructMapSwitch(kName string, varname string, rtid uintptr, t reflect.Type) { + ti := x.ti.get(rtid, t) + tisfi := ti.sfip // always use sequence from file. decStruct expects same thing. + x.line("switch (" + kName + ") {") + for _, si := range tisfi { + x.line("case \"" + si.encName + "\":") + var t2 reflect.StructField + if si.i != -1 { + t2 = t.Field(int(si.i)) + } else { + //we must accomodate anonymous fields, where the embedded field is a nil pointer in the value. + // t2 = t.FieldByIndex(si.is) + t2typ := t + varname3 := varname + for _, ix := range si.is { + for t2typ.Kind() == reflect.Ptr { + t2typ = t2typ.Elem() + } + t2 = t2typ.Field(ix) + t2typ = t2.Type + varname3 = varname3 + "." + t2.Name + if t2typ.Kind() == reflect.Ptr { + x.linef("if %s == nil { %s = new(%s) }", varname3, varname3, x.genTypeName(t2typ.Elem())) + } + } + } + x.decVar(varname+"."+t2.Name, t2.Type, false) + } + x.line("default:") + // pass the slice here, so that the string will not escape, and maybe save allocation + x.line("z.DecStructFieldNotFound(-1, " + kName + ")") + x.line("} // end switch " + kName) +} + +func (x *genRunner) decStructMap(varname, lenvarname string, rtid uintptr, t reflect.Type, style genStructMapStyle) { + tpfx := genTempVarPfx + i := x.varsfx() + kName := tpfx + "s" + i + + // We thought to use ReadStringAsBytes, as go compiler might optimize the copy out. + // However, using that was more expensive, as it seems that the switch expression + // is evaluated each time. + // + // We could depend on decodeString using a temporary/shared buffer internally. + // However, this model of creating a byte array, and using explicitly is faster, + // and allows optional use of unsafe []byte->string conversion without alloc. + + // Also, ensure that the slice array doesn't escape. + // That will help escape analysis prevent allocation when it gets better. + + // x.line("var " + kName + "Arr = [32]byte{} // default string to decode into") + // x.line("var " + kName + "Slc = " + kName + "Arr[:] // default slice to decode into") + // use the scratch buffer to avoid allocation (most field names are < 32). + + x.line("var " + kName + "Slc = z.DecScratchBuffer() // default slice to decode into") + + x.line("_ = " + kName + "Slc") + switch style { + case genStructMapStyleLenPrefix: + x.linef("for %sj%s := 0; %sj%s < %s; %sj%s++ {", tpfx, i, tpfx, i, lenvarname, tpfx, i) + case genStructMapStyleCheckBreak: + x.linef("for %sj%s := 0; !r.CheckBreak(); %sj%s++ {", tpfx, i, tpfx, i) + default: // 0, otherwise. + x.linef("var %shl%s bool = %s >= 0", tpfx, i, lenvarname) // has length + x.linef("for %sj%s := 0; ; %sj%s++ {", tpfx, i, tpfx, i) + x.linef("if %shl%s { if %sj%s >= %s { break }", tpfx, i, tpfx, i, lenvarname) + x.line("} else { if r.CheckBreak() { break }; }") + } + x.linef("z.DecSendContainerState(codecSelfer_containerMapKey%s)", x.xs) + x.line(kName + "Slc = r.DecodeBytes(" + kName + "Slc, true, true)") + // let string be scoped to this loop alone, so it doesn't escape. + if x.unsafe { + x.line(kName + "SlcHdr := codecSelferUnsafeString" + x.xs + "{uintptr(unsafe.Pointer(&" + + kName + "Slc[0])), len(" + kName + "Slc)}") + x.line(kName + " := *(*string)(unsafe.Pointer(&" + kName + "SlcHdr))") + } else { + x.line(kName + " := string(" + kName + "Slc)") + } + x.linef("z.DecSendContainerState(codecSelfer_containerMapValue%s)", x.xs) + x.decStructMapSwitch(kName, varname, rtid, t) + + x.line("} // end for " + tpfx + "j" + i) + x.linef("z.DecSendContainerState(codecSelfer_containerMapEnd%s)", x.xs) +} + +func (x *genRunner) decStructArray(varname, lenvarname, breakString string, rtid uintptr, t reflect.Type) { + tpfx := genTempVarPfx + i := x.varsfx() + ti := x.ti.get(rtid, t) + tisfi := ti.sfip // always use sequence from file. decStruct expects same thing. + x.linef("var %sj%s int", tpfx, i) + x.linef("var %sb%s bool", tpfx, i) // break + x.linef("var %shl%s bool = %s >= 0", tpfx, i, lenvarname) // has length + for _, si := range tisfi { + var t2 reflect.StructField + if si.i != -1 { + t2 = t.Field(int(si.i)) + } else { + //we must accomodate anonymous fields, where the embedded field is a nil pointer in the value. + // t2 = t.FieldByIndex(si.is) + t2typ := t + varname3 := varname + for _, ix := range si.is { + for t2typ.Kind() == reflect.Ptr { + t2typ = t2typ.Elem() + } + t2 = t2typ.Field(ix) + t2typ = t2.Type + varname3 = varname3 + "." + t2.Name + if t2typ.Kind() == reflect.Ptr { + x.linef("if %s == nil { %s = new(%s) }", varname3, varname3, x.genTypeName(t2typ.Elem())) + } + } + } + + x.linef("%sj%s++; if %shl%s { %sb%s = %sj%s > %s } else { %sb%s = r.CheckBreak() }", + tpfx, i, tpfx, i, tpfx, i, + tpfx, i, lenvarname, tpfx, i) + x.linef("if %sb%s { z.DecSendContainerState(codecSelfer_containerArrayEnd%s); %s }", + tpfx, i, x.xs, breakString) + x.linef("z.DecSendContainerState(codecSelfer_containerArrayElem%s)", x.xs) + x.decVar(varname+"."+t2.Name, t2.Type, true) + } + // read remaining values and throw away. + x.line("for {") + x.linef("%sj%s++; if %shl%s { %sb%s = %sj%s > %s } else { %sb%s = r.CheckBreak() }", + tpfx, i, tpfx, i, tpfx, i, + tpfx, i, lenvarname, tpfx, i) + x.linef("if %sb%s { break }", tpfx, i) + x.linef("z.DecSendContainerState(codecSelfer_containerArrayElem%s)", x.xs) + x.linef(`z.DecStructFieldNotFound(%sj%s - 1, "")`, tpfx, i) + x.line("}") + x.linef("z.DecSendContainerState(codecSelfer_containerArrayEnd%s)", x.xs) +} + +func (x *genRunner) decStruct(varname string, rtid uintptr, t reflect.Type) { + // if container is map + i := x.varsfx() + x.linef("%sct%s := r.ContainerType()", genTempVarPfx, i) + x.linef("if %sct%s == codecSelferValueTypeMap%s {", genTempVarPfx, i, x.xs) + x.line(genTempVarPfx + "l" + i + " := r.ReadMapStart()") + x.linef("if %sl%s == 0 {", genTempVarPfx, i) + x.linef("z.DecSendContainerState(codecSelfer_containerMapEnd%s)", x.xs) + if genUseOneFunctionForDecStructMap { + x.line("} else { ") + x.linef("x.codecDecodeSelfFromMap(%sl%s, d)", genTempVarPfx, i) + } else { + x.line("} else if " + genTempVarPfx + "l" + i + " > 0 { ") + x.line("x.codecDecodeSelfFromMapLenPrefix(" + genTempVarPfx + "l" + i + ", d)") + x.line("} else {") + x.line("x.codecDecodeSelfFromMapCheckBreak(" + genTempVarPfx + "l" + i + ", d)") + } + x.line("}") + + // else if container is array + x.linef("} else if %sct%s == codecSelferValueTypeArray%s {", genTempVarPfx, i, x.xs) + x.line(genTempVarPfx + "l" + i + " := r.ReadArrayStart()") + x.linef("if %sl%s == 0 {", genTempVarPfx, i) + x.linef("z.DecSendContainerState(codecSelfer_containerArrayEnd%s)", x.xs) + x.line("} else { ") + x.linef("x.codecDecodeSelfFromArray(%sl%s, d)", genTempVarPfx, i) + x.line("}") + // else panic + x.line("} else { ") + x.line("panic(codecSelferOnlyMapOrArrayEncodeToStructErr" + x.xs + ")") + x.line("} ") +} + +// -------- + +type genV struct { + // genV is either a primitive (Primitive != "") or a map (MapKey != "") or a slice + MapKey string + Elem string + Primitive string + Size int +} + +func (x *genRunner) newGenV(t reflect.Type) (v genV) { + switch t.Kind() { + case reflect.Slice, reflect.Array: + te := t.Elem() + v.Elem = x.genTypeName(te) + v.Size = int(te.Size()) + case reflect.Map: + te, tk := t.Elem(), t.Key() + v.Elem = x.genTypeName(te) + v.MapKey = x.genTypeName(tk) + v.Size = int(te.Size() + tk.Size()) + default: + panic("unexpected type for newGenV. Requires map or slice type") + } + return +} + +func (x *genV) MethodNamePfx(prefix string, prim bool) string { + var name []byte + if prefix != "" { + name = append(name, prefix...) + } + if prim { + name = append(name, genTitleCaseName(x.Primitive)...) + } else { + if x.MapKey == "" { + name = append(name, "Slice"...) + } else { + name = append(name, "Map"...) + name = append(name, genTitleCaseName(x.MapKey)...) + } + name = append(name, genTitleCaseName(x.Elem)...) + } + return string(name) + +} + +var genCheckVendor = os.Getenv("GO15VENDOREXPERIMENT") == "1" + +// genImportPath returns import path of a non-predeclared named typed, or an empty string otherwise. +// +// This handles the misbehaviour that occurs when 1.5-style vendoring is enabled, +// where PkgPath returns the full path, including the vendoring pre-fix that should have been stripped. +// We strip it here. +func genImportPath(t reflect.Type) (s string) { + s = t.PkgPath() + if genCheckVendor { + // HACK: Misbehaviour occurs in go 1.5. May have to re-visit this later. + // if s contains /vendor/ OR startsWith vendor/, then return everything after it. + const vendorStart = "vendor/" + const vendorInline = "/vendor/" + if i := strings.LastIndex(s, vendorInline); i >= 0 { + s = s[i+len(vendorInline):] + } else if strings.HasPrefix(s, vendorStart) { + s = s[len(vendorStart):] + } + } + return +} + +func genNonPtr(t reflect.Type) reflect.Type { + for t.Kind() == reflect.Ptr { + t = t.Elem() + } + return t +} + +func genTitleCaseName(s string) string { + switch s { + case "interface{}": + return "Intf" + default: + return strings.ToUpper(s[0:1]) + s[1:] + } +} + +func genMethodNameT(t reflect.Type, tRef reflect.Type) (n string) { + var ptrPfx string + for t.Kind() == reflect.Ptr { + ptrPfx += "Ptrto" + t = t.Elem() + } + tstr := t.String() + if tn := t.Name(); tn != "" { + if tRef != nil && genImportPath(t) == genImportPath(tRef) { + return ptrPfx + tn + } else { + if genQNameRegex.MatchString(tstr) { + return ptrPfx + strings.Replace(tstr, ".", "_", 1000) + } else { + return ptrPfx + genCustomTypeName(tstr) + } + } + } + switch t.Kind() { + case reflect.Map: + return ptrPfx + "Map" + genMethodNameT(t.Key(), tRef) + genMethodNameT(t.Elem(), tRef) + case reflect.Slice: + return ptrPfx + "Slice" + genMethodNameT(t.Elem(), tRef) + case reflect.Array: + return ptrPfx + "Array" + strconv.FormatInt(int64(t.Len()), 10) + genMethodNameT(t.Elem(), tRef) + case reflect.Chan: + var cx string + switch t.ChanDir() { + case reflect.SendDir: + cx = "ChanSend" + case reflect.RecvDir: + cx = "ChanRecv" + default: + cx = "Chan" + } + return ptrPfx + cx + genMethodNameT(t.Elem(), tRef) + default: + if t == intfTyp { + return ptrPfx + "Interface" + } else { + if tRef != nil && genImportPath(t) == genImportPath(tRef) { + if t.Name() != "" { + return ptrPfx + t.Name() + } else { + return ptrPfx + genCustomTypeName(tstr) + } + } else { + // best way to get the package name inclusive + // return ptrPfx + strings.Replace(tstr, ".", "_", 1000) + // return ptrPfx + genBase64enc.EncodeToString([]byte(tstr)) + if t.Name() != "" && genQNameRegex.MatchString(tstr) { + return ptrPfx + strings.Replace(tstr, ".", "_", 1000) + } else { + return ptrPfx + genCustomTypeName(tstr) + } + } + } + } +} + +// genCustomNameForType base64encodes the t.String() value in such a way +// that it can be used within a function name. +func genCustomTypeName(tstr string) string { + len2 := genBase64enc.EncodedLen(len(tstr)) + bufx := make([]byte, len2) + genBase64enc.Encode(bufx, []byte(tstr)) + for i := len2 - 1; i >= 0; i-- { + if bufx[i] == '=' { + len2-- + } else { + break + } + } + return string(bufx[:len2]) +} + +func genIsImmutable(t reflect.Type) (v bool) { + return isImmutableKind(t.Kind()) +} + +type genInternal struct { + Values []genV + Unsafe bool +} + +func (x genInternal) FastpathLen() (l int) { + for _, v := range x.Values { + if v.Primitive == "" { + l++ + } + } + return +} + +func genInternalZeroValue(s string) string { + switch s { + case "interface{}": + return "nil" + case "bool": + return "false" + case "string": + return `""` + default: + return "0" + } +} + +func genInternalEncCommandAsString(s string, vname string) string { + switch s { + case "uint", "uint8", "uint16", "uint32", "uint64": + return "ee.EncodeUint(uint64(" + vname + "))" + case "int", "int8", "int16", "int32", "int64": + return "ee.EncodeInt(int64(" + vname + "))" + case "string": + return "ee.EncodeString(c_UTF8, " + vname + ")" + case "float32": + return "ee.EncodeFloat32(" + vname + ")" + case "float64": + return "ee.EncodeFloat64(" + vname + ")" + case "bool": + return "ee.EncodeBool(" + vname + ")" + case "symbol": + return "ee.EncodeSymbol(" + vname + ")" + default: + return "e.encode(" + vname + ")" + } +} + +func genInternalDecCommandAsString(s string) string { + switch s { + case "uint": + return "uint(dd.DecodeUint(uintBitsize))" + case "uint8": + return "uint8(dd.DecodeUint(8))" + case "uint16": + return "uint16(dd.DecodeUint(16))" + case "uint32": + return "uint32(dd.DecodeUint(32))" + case "uint64": + return "dd.DecodeUint(64)" + case "uintptr": + return "uintptr(dd.DecodeUint(uintBitsize))" + case "int": + return "int(dd.DecodeInt(intBitsize))" + case "int8": + return "int8(dd.DecodeInt(8))" + case "int16": + return "int16(dd.DecodeInt(16))" + case "int32": + return "int32(dd.DecodeInt(32))" + case "int64": + return "dd.DecodeInt(64)" + + case "string": + return "dd.DecodeString()" + case "float32": + return "float32(dd.DecodeFloat(true))" + case "float64": + return "dd.DecodeFloat(false)" + case "bool": + return "dd.DecodeBool()" + default: + panic(errors.New("gen internal: unknown type for decode: " + s)) + } +} + +func genInternalSortType(s string, elem bool) string { + for _, v := range [...]string{"int", "uint", "float", "bool", "string"} { + if strings.HasPrefix(s, v) { + if elem { + if v == "int" || v == "uint" || v == "float" { + return v + "64" + } else { + return v + } + } + return v + "Slice" + } + } + panic("sorttype: unexpected type: " + s) +} + +// var genInternalMu sync.Mutex +var genInternalV genInternal +var genInternalTmplFuncs template.FuncMap +var genInternalOnce sync.Once + +func genInternalInit() { + types := [...]string{ + "interface{}", + "string", + "float32", + "float64", + "uint", + "uint8", + "uint16", + "uint32", + "uint64", + "uintptr", + "int", + "int8", + "int16", + "int32", + "int64", + "bool", + } + // keep as slice, so it is in specific iteration order. + // Initial order was uint64, string, interface{}, int, int64 + mapvaltypes := [...]string{ + "interface{}", + "string", + "uint", + "uint8", + "uint16", + "uint32", + "uint64", + "uintptr", + "int", + "int8", + "int16", + "int32", + "int64", + "float32", + "float64", + "bool", + } + wordSizeBytes := int(intBitsize) / 8 + + mapvaltypes2 := map[string]int{ + "interface{}": 2 * wordSizeBytes, + "string": 2 * wordSizeBytes, + "uint": 1 * wordSizeBytes, + "uint8": 1, + "uint16": 2, + "uint32": 4, + "uint64": 8, + "uintptr": 1 * wordSizeBytes, + "int": 1 * wordSizeBytes, + "int8": 1, + "int16": 2, + "int32": 4, + "int64": 8, + "float32": 4, + "float64": 8, + "bool": 1, + } + var gt genInternal + + // For each slice or map type, there must be a (symetrical) Encode and Decode fast-path function + for _, s := range types { + gt.Values = append(gt.Values, genV{Primitive: s, Size: mapvaltypes2[s]}) + if s != "uint8" { // do not generate fast path for slice of bytes. Treat specially already. + gt.Values = append(gt.Values, genV{Elem: s, Size: mapvaltypes2[s]}) + } + if _, ok := mapvaltypes2[s]; !ok { + gt.Values = append(gt.Values, genV{MapKey: s, Elem: s, Size: 2 * mapvaltypes2[s]}) + } + for _, ms := range mapvaltypes { + gt.Values = append(gt.Values, genV{MapKey: s, Elem: ms, Size: mapvaltypes2[s] + mapvaltypes2[ms]}) + } + } + + funcs := make(template.FuncMap) + // funcs["haspfx"] = strings.HasPrefix + funcs["encmd"] = genInternalEncCommandAsString + funcs["decmd"] = genInternalDecCommandAsString + funcs["zerocmd"] = genInternalZeroValue + funcs["hasprefix"] = strings.HasPrefix + funcs["sorttype"] = genInternalSortType + + genInternalV = gt + genInternalTmplFuncs = funcs +} + +// genInternalGoFile is used to generate source files from templates. +// It is run by the program author alone. +// Unfortunately, it has to be exported so that it can be called from a command line tool. +// *** DO NOT USE *** +func genInternalGoFile(r io.Reader, w io.Writer, safe bool) (err error) { + genInternalOnce.Do(genInternalInit) + + gt := genInternalV + gt.Unsafe = !safe + + t := template.New("").Funcs(genInternalTmplFuncs) + + tmplstr, err := ioutil.ReadAll(r) + if err != nil { + return + } + + if t, err = t.Parse(string(tmplstr)); err != nil { + return + } + + var out bytes.Buffer + err = t.Execute(&out, gt) + if err != nil { + return + } + + bout, err := format.Source(out.Bytes()) + if err != nil { + w.Write(out.Bytes()) // write out if error, so we can still see. + // w.Write(bout) // write out if error, as much as possible, so we can still see. + return + } + w.Write(bout) + return +} diff --git a/vendor/github.com/ugorji/go/codec/helper.go b/vendor/github.com/ugorji/go/codec/helper.go new file mode 100644 index 0000000000..560014ae39 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/helper.go @@ -0,0 +1,1129 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +// Contains code shared by both encode and decode. + +// Some shared ideas around encoding/decoding +// ------------------------------------------ +// +// If an interface{} is passed, we first do a type assertion to see if it is +// a primitive type or a map/slice of primitive types, and use a fastpath to handle it. +// +// If we start with a reflect.Value, we are already in reflect.Value land and +// will try to grab the function for the underlying Type and directly call that function. +// This is more performant than calling reflect.Value.Interface(). +// +// This still helps us bypass many layers of reflection, and give best performance. +// +// Containers +// ------------ +// Containers in the stream are either associative arrays (key-value pairs) or +// regular arrays (indexed by incrementing integers). +// +// Some streams support indefinite-length containers, and use a breaking +// byte-sequence to denote that the container has come to an end. +// +// Some streams also are text-based, and use explicit separators to denote the +// end/beginning of different values. +// +// During encode, we use a high-level condition to determine how to iterate through +// the container. That decision is based on whether the container is text-based (with +// separators) or binary (without separators). If binary, we do not even call the +// encoding of separators. +// +// During decode, we use a different high-level condition to determine how to iterate +// through the containers. That decision is based on whether the stream contained +// a length prefix, or if it used explicit breaks. If length-prefixed, we assume that +// it has to be binary, and we do not even try to read separators. +// +// The only codec that may suffer (slightly) is cbor, and only when decoding indefinite-length. +// It may suffer because we treat it like a text-based codec, and read separators. +// However, this read is a no-op and the cost is insignificant. +// +// Philosophy +// ------------ +// On decode, this codec will update containers appropriately: +// - If struct, update fields from stream into fields of struct. +// If field in stream not found in struct, handle appropriately (based on option). +// If a struct field has no corresponding value in the stream, leave it AS IS. +// If nil in stream, set value to nil/zero value. +// - If map, update map from stream. +// If the stream value is NIL, set the map to nil. +// - if slice, try to update up to length of array in stream. +// if container len is less than stream array length, +// and container cannot be expanded, handled (based on option). +// This means you can decode 4-element stream array into 1-element array. +// +// ------------------------------------ +// On encode, user can specify omitEmpty. This means that the value will be omitted +// if the zero value. The problem may occur during decode, where omitted values do not affect +// the value being decoded into. This means that if decoding into a struct with an +// int field with current value=5, and the field is omitted in the stream, then after +// decoding, the value will still be 5 (not 0). +// omitEmpty only works if you guarantee that you always decode into zero-values. +// +// ------------------------------------ +// We could have truncated a map to remove keys not available in the stream, +// or set values in the struct which are not in the stream to their zero values. +// We decided against it because there is no efficient way to do it. +// We may introduce it as an option later. +// However, that will require enabling it for both runtime and code generation modes. +// +// To support truncate, we need to do 2 passes over the container: +// map +// - first collect all keys (e.g. in k1) +// - for each key in stream, mark k1 that the key should not be removed +// - after updating map, do second pass and call delete for all keys in k1 which are not marked +// struct: +// - for each field, track the *typeInfo s1 +// - iterate through all s1, and for each one not marked, set value to zero +// - this involves checking the possible anonymous fields which are nil ptrs. +// too much work. +// +// ------------------------------------------ +// Error Handling is done within the library using panic. +// +// This way, the code doesn't have to keep checking if an error has happened, +// and we don't have to keep sending the error value along with each call +// or storing it in the En|Decoder and checking it constantly along the way. +// +// The disadvantage is that small functions which use panics cannot be inlined. +// The code accounts for that by only using panics behind an interface; +// since interface calls cannot be inlined, this is irrelevant. +// +// We considered storing the error is En|Decoder. +// - once it has its err field set, it cannot be used again. +// - panicing will be optional, controlled by const flag. +// - code should always check error first and return early. +// We eventually decided against it as it makes the code clumsier to always +// check for these error conditions. + +import ( + "bytes" + "encoding" + "encoding/binary" + "errors" + "fmt" + "math" + "reflect" + "sort" + "strings" + "sync" + "time" +) + +const ( + scratchByteArrayLen = 32 + initCollectionCap = 32 // 32 is defensive. 16 is preferred. + + // Support encoding.(Binary|Text)(Unm|M)arshaler. + // This constant flag will enable or disable it. + supportMarshalInterfaces = true + + // Each Encoder or Decoder uses a cache of functions based on conditionals, + // so that the conditionals are not run every time. + // + // Either a map or a slice is used to keep track of the functions. + // The map is more natural, but has a higher cost than a slice/array. + // This flag (useMapForCodecCache) controls which is used. + // + // From benchmarks, slices with linear search perform better with < 32 entries. + // We have typically seen a high threshold of about 24 entries. + useMapForCodecCache = false + + // for debugging, set this to false, to catch panic traces. + // Note that this will always cause rpc tests to fail, since they need io.EOF sent via panic. + recoverPanicToErr = true + + // Fast path functions try to create a fast path encode or decode implementation + // for common maps and slices, by by-passing reflection altogether. + fastpathEnabled = true + + // if checkStructForEmptyValue, check structs fields to see if an empty value. + // This could be an expensive call, so possibly disable it. + checkStructForEmptyValue = false + + // if derefForIsEmptyValue, deref pointers and interfaces when checking isEmptyValue + derefForIsEmptyValue = false + + // if resetSliceElemToZeroValue, then on decoding a slice, reset the element to a zero value first. + // Only concern is that, if the slice already contained some garbage, we will decode into that garbage. + // The chances of this are slim, so leave this "optimization". + // TODO: should this be true, to ensure that we always decode into a "zero" "empty" value? + resetSliceElemToZeroValue bool = false +) + +var oneByteArr = [1]byte{0} +var zeroByteSlice = oneByteArr[:0:0] + +type charEncoding uint8 + +const ( + c_RAW charEncoding = iota + c_UTF8 + c_UTF16LE + c_UTF16BE + c_UTF32LE + c_UTF32BE +) + +// valueType is the stream type +type valueType uint8 + +const ( + valueTypeUnset valueType = iota + valueTypeNil + valueTypeInt + valueTypeUint + valueTypeFloat + valueTypeBool + valueTypeString + valueTypeSymbol + valueTypeBytes + valueTypeMap + valueTypeArray + valueTypeTimestamp + valueTypeExt + + // valueTypeInvalid = 0xff +) + +type seqType uint8 + +const ( + _ seqType = iota + seqTypeArray + seqTypeSlice + seqTypeChan +) + +// note that containerMapStart and containerArraySend are not sent. +// This is because the ReadXXXStart and EncodeXXXStart already does these. +type containerState uint8 + +const ( + _ containerState = iota + + containerMapStart // slot left open, since Driver method already covers it + containerMapKey + containerMapValue + containerMapEnd + containerArrayStart // slot left open, since Driver methods already cover it + containerArrayElem + containerArrayEnd +) + +type containerStateRecv interface { + sendContainerState(containerState) +} + +// mirror json.Marshaler and json.Unmarshaler here, +// so we don't import the encoding/json package +type jsonMarshaler interface { + MarshalJSON() ([]byte, error) +} +type jsonUnmarshaler interface { + UnmarshalJSON([]byte) error +} + +var ( + bigen = binary.BigEndian + structInfoFieldName = "_struct" + + mapStrIntfTyp = reflect.TypeOf(map[string]interface{}(nil)) + mapIntfIntfTyp = reflect.TypeOf(map[interface{}]interface{}(nil)) + intfSliceTyp = reflect.TypeOf([]interface{}(nil)) + intfTyp = intfSliceTyp.Elem() + + stringTyp = reflect.TypeOf("") + timeTyp = reflect.TypeOf(time.Time{}) + rawExtTyp = reflect.TypeOf(RawExt{}) + uint8SliceTyp = reflect.TypeOf([]uint8(nil)) + + mapBySliceTyp = reflect.TypeOf((*MapBySlice)(nil)).Elem() + + binaryMarshalerTyp = reflect.TypeOf((*encoding.BinaryMarshaler)(nil)).Elem() + binaryUnmarshalerTyp = reflect.TypeOf((*encoding.BinaryUnmarshaler)(nil)).Elem() + + textMarshalerTyp = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() + textUnmarshalerTyp = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() + + jsonMarshalerTyp = reflect.TypeOf((*jsonMarshaler)(nil)).Elem() + jsonUnmarshalerTyp = reflect.TypeOf((*jsonUnmarshaler)(nil)).Elem() + + selferTyp = reflect.TypeOf((*Selfer)(nil)).Elem() + + uint8SliceTypId = reflect.ValueOf(uint8SliceTyp).Pointer() + rawExtTypId = reflect.ValueOf(rawExtTyp).Pointer() + intfTypId = reflect.ValueOf(intfTyp).Pointer() + timeTypId = reflect.ValueOf(timeTyp).Pointer() + stringTypId = reflect.ValueOf(stringTyp).Pointer() + + mapStrIntfTypId = reflect.ValueOf(mapStrIntfTyp).Pointer() + mapIntfIntfTypId = reflect.ValueOf(mapIntfIntfTyp).Pointer() + intfSliceTypId = reflect.ValueOf(intfSliceTyp).Pointer() + // mapBySliceTypId = reflect.ValueOf(mapBySliceTyp).Pointer() + + intBitsize uint8 = uint8(reflect.TypeOf(int(0)).Bits()) + uintBitsize uint8 = uint8(reflect.TypeOf(uint(0)).Bits()) + + bsAll0x00 = []byte{0, 0, 0, 0, 0, 0, 0, 0} + bsAll0xff = []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} + + chkOvf checkOverflow + + noFieldNameToStructFieldInfoErr = errors.New("no field name passed to parseStructFieldInfo") +) + +var defTypeInfos = NewTypeInfos([]string{"codec", "json"}) + +// Selfer defines methods by which a value can encode or decode itself. +// +// Any type which implements Selfer will be able to encode or decode itself. +// Consequently, during (en|de)code, this takes precedence over +// (text|binary)(M|Unm)arshal or extension support. +type Selfer interface { + CodecEncodeSelf(*Encoder) + CodecDecodeSelf(*Decoder) +} + +// MapBySlice represents a slice which should be encoded as a map in the stream. +// The slice contains a sequence of key-value pairs. +// This affords storing a map in a specific sequence in the stream. +// +// The support of MapBySlice affords the following: +// - A slice type which implements MapBySlice will be encoded as a map +// - A slice can be decoded from a map in the stream +type MapBySlice interface { + MapBySlice() +} + +// WARNING: DO NOT USE DIRECTLY. EXPORTED FOR GODOC BENEFIT. WILL BE REMOVED. +// +// BasicHandle encapsulates the common options and extension functions. +type BasicHandle struct { + // TypeInfos is used to get the type info for any type. + // + // If not configured, the default TypeInfos is used, which uses struct tag keys: codec, json + TypeInfos *TypeInfos + + extHandle + EncodeOptions + DecodeOptions +} + +func (x *BasicHandle) getBasicHandle() *BasicHandle { + return x +} + +func (x *BasicHandle) getTypeInfo(rtid uintptr, rt reflect.Type) (pti *typeInfo) { + if x.TypeInfos != nil { + return x.TypeInfos.get(rtid, rt) + } + return defTypeInfos.get(rtid, rt) +} + +// Handle is the interface for a specific encoding format. +// +// Typically, a Handle is pre-configured before first time use, +// and not modified while in use. Such a pre-configured Handle +// is safe for concurrent access. +type Handle interface { + getBasicHandle() *BasicHandle + newEncDriver(w *Encoder) encDriver + newDecDriver(r *Decoder) decDriver + isBinary() bool +} + +// RawExt represents raw unprocessed extension data. +// Some codecs will decode extension data as a *RawExt if there is no registered extension for the tag. +// +// Only one of Data or Value is nil. If Data is nil, then the content of the RawExt is in the Value. +type RawExt struct { + Tag uint64 + // Data is the []byte which represents the raw ext. If Data is nil, ext is exposed in Value. + // Data is used by codecs (e.g. binc, msgpack, simple) which do custom serialization of the types + Data []byte + // Value represents the extension, if Data is nil. + // Value is used by codecs (e.g. cbor) which use the format to do custom serialization of the types. + Value interface{} +} + +// BytesExt handles custom (de)serialization of types to/from []byte. +// It is used by codecs (e.g. binc, msgpack, simple) which do custom serialization of the types. +type BytesExt interface { + // WriteExt converts a value to a []byte. + // + // Note: v *may* be a pointer to the extension type, if the extension type was a struct or array. + WriteExt(v interface{}) []byte + + // ReadExt updates a value from a []byte. + ReadExt(dst interface{}, src []byte) +} + +// InterfaceExt handles custom (de)serialization of types to/from another interface{} value. +// The Encoder or Decoder will then handle the further (de)serialization of that known type. +// +// It is used by codecs (e.g. cbor, json) which use the format to do custom serialization of the types. +type InterfaceExt interface { + // ConvertExt converts a value into a simpler interface for easy encoding e.g. convert time.Time to int64. + // + // Note: v *may* be a pointer to the extension type, if the extension type was a struct or array. + ConvertExt(v interface{}) interface{} + + // UpdateExt updates a value from a simpler interface for easy decoding e.g. convert int64 to time.Time. + UpdateExt(dst interface{}, src interface{}) +} + +// Ext handles custom (de)serialization of custom types / extensions. +type Ext interface { + BytesExt + InterfaceExt +} + +// addExtWrapper is a wrapper implementation to support former AddExt exported method. +type addExtWrapper struct { + encFn func(reflect.Value) ([]byte, error) + decFn func(reflect.Value, []byte) error +} + +func (x addExtWrapper) WriteExt(v interface{}) []byte { + bs, err := x.encFn(reflect.ValueOf(v)) + if err != nil { + panic(err) + } + return bs +} + +func (x addExtWrapper) ReadExt(v interface{}, bs []byte) { + if err := x.decFn(reflect.ValueOf(v), bs); err != nil { + panic(err) + } +} + +func (x addExtWrapper) ConvertExt(v interface{}) interface{} { + return x.WriteExt(v) +} + +func (x addExtWrapper) UpdateExt(dest interface{}, v interface{}) { + x.ReadExt(dest, v.([]byte)) +} + +type setExtWrapper struct { + b BytesExt + i InterfaceExt +} + +func (x *setExtWrapper) WriteExt(v interface{}) []byte { + if x.b == nil { + panic("BytesExt.WriteExt is not supported") + } + return x.b.WriteExt(v) +} + +func (x *setExtWrapper) ReadExt(v interface{}, bs []byte) { + if x.b == nil { + panic("BytesExt.WriteExt is not supported") + + } + x.b.ReadExt(v, bs) +} + +func (x *setExtWrapper) ConvertExt(v interface{}) interface{} { + if x.i == nil { + panic("InterfaceExt.ConvertExt is not supported") + + } + return x.i.ConvertExt(v) +} + +func (x *setExtWrapper) UpdateExt(dest interface{}, v interface{}) { + if x.i == nil { + panic("InterfaceExxt.UpdateExt is not supported") + + } + x.i.UpdateExt(dest, v) +} + +// type errorString string +// func (x errorString) Error() string { return string(x) } + +type binaryEncodingType struct{} + +func (_ binaryEncodingType) isBinary() bool { return true } + +type textEncodingType struct{} + +func (_ textEncodingType) isBinary() bool { return false } + +// noBuiltInTypes is embedded into many types which do not support builtins +// e.g. msgpack, simple, cbor. +type noBuiltInTypes struct{} + +func (_ noBuiltInTypes) IsBuiltinType(rt uintptr) bool { return false } +func (_ noBuiltInTypes) EncodeBuiltin(rt uintptr, v interface{}) {} +func (_ noBuiltInTypes) DecodeBuiltin(rt uintptr, v interface{}) {} + +type noStreamingCodec struct{} + +func (_ noStreamingCodec) CheckBreak() bool { return false } + +// bigenHelper. +// Users must already slice the x completely, because we will not reslice. +type bigenHelper struct { + x []byte // must be correctly sliced to appropriate len. slicing is a cost. + w encWriter +} + +func (z bigenHelper) writeUint16(v uint16) { + bigen.PutUint16(z.x, v) + z.w.writeb(z.x) +} + +func (z bigenHelper) writeUint32(v uint32) { + bigen.PutUint32(z.x, v) + z.w.writeb(z.x) +} + +func (z bigenHelper) writeUint64(v uint64) { + bigen.PutUint64(z.x, v) + z.w.writeb(z.x) +} + +type extTypeTagFn struct { + rtid uintptr + rt reflect.Type + tag uint64 + ext Ext +} + +type extHandle []extTypeTagFn + +// DEPRECATED: Use SetBytesExt or SetInterfaceExt on the Handle instead. +// +// AddExt registes an encode and decode function for a reflect.Type. +// AddExt internally calls SetExt. +// To deregister an Ext, call AddExt with nil encfn and/or nil decfn. +func (o *extHandle) AddExt( + rt reflect.Type, tag byte, + encfn func(reflect.Value) ([]byte, error), decfn func(reflect.Value, []byte) error, +) (err error) { + if encfn == nil || decfn == nil { + return o.SetExt(rt, uint64(tag), nil) + } + return o.SetExt(rt, uint64(tag), addExtWrapper{encfn, decfn}) +} + +// DEPRECATED: Use SetBytesExt or SetInterfaceExt on the Handle instead. +// +// Note that the type must be a named type, and specifically not +// a pointer or Interface. An error is returned if that is not honored. +// +// To Deregister an ext, call SetExt with nil Ext +func (o *extHandle) SetExt(rt reflect.Type, tag uint64, ext Ext) (err error) { + // o is a pointer, because we may need to initialize it + if rt.PkgPath() == "" || rt.Kind() == reflect.Interface { + err = fmt.Errorf("codec.Handle.AddExt: Takes named type, especially not a pointer or interface: %T", + reflect.Zero(rt).Interface()) + return + } + + rtid := reflect.ValueOf(rt).Pointer() + for _, v := range *o { + if v.rtid == rtid { + v.tag, v.ext = tag, ext + return + } + } + + if *o == nil { + *o = make([]extTypeTagFn, 0, 4) + } + *o = append(*o, extTypeTagFn{rtid, rt, tag, ext}) + return +} + +func (o extHandle) getExt(rtid uintptr) *extTypeTagFn { + var v *extTypeTagFn + for i := range o { + v = &o[i] + if v.rtid == rtid { + return v + } + } + return nil +} + +func (o extHandle) getExtForTag(tag uint64) *extTypeTagFn { + var v *extTypeTagFn + for i := range o { + v = &o[i] + if v.tag == tag { + return v + } + } + return nil +} + +type structFieldInfo struct { + encName string // encode name + + // only one of 'i' or 'is' can be set. If 'i' is -1, then 'is' has been set. + + is []int // (recursive/embedded) field index in struct + i int16 // field index in struct + omitEmpty bool + toArray bool // if field is _struct, is the toArray set? +} + +// func (si *structFieldInfo) isZero() bool { +// return si.encName == "" && len(si.is) == 0 && si.i == 0 && !si.omitEmpty && !si.toArray +// } + +// rv returns the field of the struct. +// If anonymous, it returns an Invalid +func (si *structFieldInfo) field(v reflect.Value, update bool) (rv2 reflect.Value) { + if si.i != -1 { + v = v.Field(int(si.i)) + return v + } + // replicate FieldByIndex + for _, x := range si.is { + for v.Kind() == reflect.Ptr { + if v.IsNil() { + if !update { + return + } + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + v = v.Field(x) + } + return v +} + +func (si *structFieldInfo) setToZeroValue(v reflect.Value) { + if si.i != -1 { + v = v.Field(int(si.i)) + v.Set(reflect.Zero(v.Type())) + // v.Set(reflect.New(v.Type()).Elem()) + // v.Set(reflect.New(v.Type())) + } else { + // replicate FieldByIndex + for _, x := range si.is { + for v.Kind() == reflect.Ptr { + if v.IsNil() { + return + } + v = v.Elem() + } + v = v.Field(x) + } + v.Set(reflect.Zero(v.Type())) + } +} + +func parseStructFieldInfo(fname string, stag string) *structFieldInfo { + // if fname == "" { + // panic(noFieldNameToStructFieldInfoErr) + // } + si := structFieldInfo{ + encName: fname, + } + + if stag != "" { + for i, s := range strings.Split(stag, ",") { + if i == 0 { + if s != "" { + si.encName = s + } + } else { + if s == "omitempty" { + si.omitEmpty = true + } else if s == "toarray" { + si.toArray = true + } + } + } + } + // si.encNameBs = []byte(si.encName) + return &si +} + +type sfiSortedByEncName []*structFieldInfo + +func (p sfiSortedByEncName) Len() int { + return len(p) +} + +func (p sfiSortedByEncName) Less(i, j int) bool { + return p[i].encName < p[j].encName +} + +func (p sfiSortedByEncName) Swap(i, j int) { + p[i], p[j] = p[j], p[i] +} + +// typeInfo keeps information about each type referenced in the encode/decode sequence. +// +// During an encode/decode sequence, we work as below: +// - If base is a built in type, en/decode base value +// - If base is registered as an extension, en/decode base value +// - If type is binary(M/Unm)arshaler, call Binary(M/Unm)arshal method +// - If type is text(M/Unm)arshaler, call Text(M/Unm)arshal method +// - Else decode appropriately based on the reflect.Kind +type typeInfo struct { + sfi []*structFieldInfo // sorted. Used when enc/dec struct to map. + sfip []*structFieldInfo // unsorted. Used when enc/dec struct to array. + + rt reflect.Type + rtid uintptr + + numMeth uint16 // number of methods + + // baseId gives pointer to the base reflect.Type, after deferencing + // the pointers. E.g. base type of ***time.Time is time.Time. + base reflect.Type + baseId uintptr + baseIndir int8 // number of indirections to get to base + + mbs bool // base type (T or *T) is a MapBySlice + + bm bool // base type (T or *T) is a binaryMarshaler + bunm bool // base type (T or *T) is a binaryUnmarshaler + bmIndir int8 // number of indirections to get to binaryMarshaler type + bunmIndir int8 // number of indirections to get to binaryUnmarshaler type + + tm bool // base type (T or *T) is a textMarshaler + tunm bool // base type (T or *T) is a textUnmarshaler + tmIndir int8 // number of indirections to get to textMarshaler type + tunmIndir int8 // number of indirections to get to textUnmarshaler type + + jm bool // base type (T or *T) is a jsonMarshaler + junm bool // base type (T or *T) is a jsonUnmarshaler + jmIndir int8 // number of indirections to get to jsonMarshaler type + junmIndir int8 // number of indirections to get to jsonUnmarshaler type + + cs bool // base type (T or *T) is a Selfer + csIndir int8 // number of indirections to get to Selfer type + + toArray bool // whether this (struct) type should be encoded as an array +} + +func (ti *typeInfo) indexForEncName(name string) int { + //tisfi := ti.sfi + const binarySearchThreshold = 16 + if sfilen := len(ti.sfi); sfilen < binarySearchThreshold { + // linear search. faster than binary search in my testing up to 16-field structs. + for i, si := range ti.sfi { + if si.encName == name { + return i + } + } + } else { + // binary search. adapted from sort/search.go. + h, i, j := 0, 0, sfilen + for i < j { + h = i + (j-i)/2 + if ti.sfi[h].encName < name { + i = h + 1 + } else { + j = h + } + } + if i < sfilen && ti.sfi[i].encName == name { + return i + } + } + return -1 +} + +// TypeInfos caches typeInfo for each type on first inspection. +// +// It is configured with a set of tag keys, which are used to get +// configuration for the type. +type TypeInfos struct { + infos map[uintptr]*typeInfo + mu sync.RWMutex + tags []string +} + +// NewTypeInfos creates a TypeInfos given a set of struct tags keys. +// +// This allows users customize the struct tag keys which contain configuration +// of their types. +func NewTypeInfos(tags []string) *TypeInfos { + return &TypeInfos{tags: tags, infos: make(map[uintptr]*typeInfo, 64)} +} + +func (x *TypeInfos) structTag(t reflect.StructTag) (s string) { + // check for tags: codec, json, in that order. + // this allows seamless support for many configured structs. + for _, x := range x.tags { + s = t.Get(x) + if s != "" { + return s + } + } + return +} + +func (x *TypeInfos) get(rtid uintptr, rt reflect.Type) (pti *typeInfo) { + var ok bool + x.mu.RLock() + pti, ok = x.infos[rtid] + x.mu.RUnlock() + if ok { + return + } + + // do not hold lock while computing this. + // it may lead to duplication, but that's ok. + ti := typeInfo{rt: rt, rtid: rtid} + ti.numMeth = uint16(rt.NumMethod()) + + var indir int8 + if ok, indir = implementsIntf(rt, binaryMarshalerTyp); ok { + ti.bm, ti.bmIndir = true, indir + } + if ok, indir = implementsIntf(rt, binaryUnmarshalerTyp); ok { + ti.bunm, ti.bunmIndir = true, indir + } + if ok, indir = implementsIntf(rt, textMarshalerTyp); ok { + ti.tm, ti.tmIndir = true, indir + } + if ok, indir = implementsIntf(rt, textUnmarshalerTyp); ok { + ti.tunm, ti.tunmIndir = true, indir + } + if ok, indir = implementsIntf(rt, jsonMarshalerTyp); ok { + ti.jm, ti.jmIndir = true, indir + } + if ok, indir = implementsIntf(rt, jsonUnmarshalerTyp); ok { + ti.junm, ti.junmIndir = true, indir + } + if ok, indir = implementsIntf(rt, selferTyp); ok { + ti.cs, ti.csIndir = true, indir + } + if ok, _ = implementsIntf(rt, mapBySliceTyp); ok { + ti.mbs = true + } + + pt := rt + var ptIndir int8 + // for ; pt.Kind() == reflect.Ptr; pt, ptIndir = pt.Elem(), ptIndir+1 { } + for pt.Kind() == reflect.Ptr { + pt = pt.Elem() + ptIndir++ + } + if ptIndir == 0 { + ti.base = rt + ti.baseId = rtid + } else { + ti.base = pt + ti.baseId = reflect.ValueOf(pt).Pointer() + ti.baseIndir = ptIndir + } + + if rt.Kind() == reflect.Struct { + var siInfo *structFieldInfo + if f, ok := rt.FieldByName(structInfoFieldName); ok { + siInfo = parseStructFieldInfo(structInfoFieldName, x.structTag(f.Tag)) + ti.toArray = siInfo.toArray + } + sfip := make([]*structFieldInfo, 0, rt.NumField()) + x.rget(rt, nil, make(map[string]bool, 16), &sfip, siInfo) + + ti.sfip = make([]*structFieldInfo, len(sfip)) + ti.sfi = make([]*structFieldInfo, len(sfip)) + copy(ti.sfip, sfip) + sort.Sort(sfiSortedByEncName(sfip)) + copy(ti.sfi, sfip) + } + // sfi = sfip + + x.mu.Lock() + if pti, ok = x.infos[rtid]; !ok { + pti = &ti + x.infos[rtid] = pti + } + x.mu.Unlock() + return +} + +func (x *TypeInfos) rget(rt reflect.Type, indexstack []int, fnameToHastag map[string]bool, + sfi *[]*structFieldInfo, siInfo *structFieldInfo, +) { + for j := 0; j < rt.NumField(); j++ { + f := rt.Field(j) + fkind := f.Type.Kind() + // skip if a func type, or is unexported, or structTag value == "-" + if fkind == reflect.Func { + continue + } + // if r1, _ := utf8.DecodeRuneInString(f.Name); r1 == utf8.RuneError || !unicode.IsUpper(r1) { + if f.PkgPath != "" && !f.Anonymous { // unexported, not embedded + continue + } + stag := x.structTag(f.Tag) + if stag == "-" { + continue + } + var si *structFieldInfo + // if anonymous and no struct tag (or it's blank), and a struct (or pointer to struct), inline it. + if f.Anonymous && fkind != reflect.Interface { + doInline := stag == "" + if !doInline { + si = parseStructFieldInfo("", stag) + doInline = si.encName == "" + // doInline = si.isZero() + } + if doInline { + ft := f.Type + for ft.Kind() == reflect.Ptr { + ft = ft.Elem() + } + if ft.Kind() == reflect.Struct { + indexstack2 := make([]int, len(indexstack)+1, len(indexstack)+4) + copy(indexstack2, indexstack) + indexstack2[len(indexstack)] = j + // indexstack2 := append(append(make([]int, 0, len(indexstack)+4), indexstack...), j) + x.rget(ft, indexstack2, fnameToHastag, sfi, siInfo) + continue + } + } + } + + // after the anonymous dance: if an unexported field, skip + if f.PkgPath != "" { // unexported + continue + } + + // do not let fields with same name in embedded structs override field at higher level. + // this must be done after anonymous check, to allow anonymous field + // still include their child fields + if _, ok := fnameToHastag[f.Name]; ok { + continue + } + if f.Name == "" { + panic(noFieldNameToStructFieldInfoErr) + } + if si == nil { + si = parseStructFieldInfo(f.Name, stag) + } else if si.encName == "" { + si.encName = f.Name + } + // si.ikind = int(f.Type.Kind()) + if len(indexstack) == 0 { + si.i = int16(j) + } else { + si.i = -1 + si.is = append(append(make([]int, 0, len(indexstack)+4), indexstack...), j) + } + + if siInfo != nil { + if siInfo.omitEmpty { + si.omitEmpty = true + } + } + *sfi = append(*sfi, si) + fnameToHastag[f.Name] = stag != "" + } +} + +func panicToErr(err *error) { + if recoverPanicToErr { + if x := recover(); x != nil { + //debug.PrintStack() + panicValToErr(x, err) + } + } +} + +// func doPanic(tag string, format string, params ...interface{}) { +// params2 := make([]interface{}, len(params)+1) +// params2[0] = tag +// copy(params2[1:], params) +// panic(fmt.Errorf("%s: "+format, params2...)) +// } + +func isImmutableKind(k reflect.Kind) (v bool) { + return false || + k == reflect.Int || + k == reflect.Int8 || + k == reflect.Int16 || + k == reflect.Int32 || + k == reflect.Int64 || + k == reflect.Uint || + k == reflect.Uint8 || + k == reflect.Uint16 || + k == reflect.Uint32 || + k == reflect.Uint64 || + k == reflect.Uintptr || + k == reflect.Float32 || + k == reflect.Float64 || + k == reflect.Bool || + k == reflect.String +} + +// these functions must be inlinable, and not call anybody +type checkOverflow struct{} + +func (_ checkOverflow) Float32(f float64) (overflow bool) { + if f < 0 { + f = -f + } + return math.MaxFloat32 < f && f <= math.MaxFloat64 +} + +func (_ checkOverflow) Uint(v uint64, bitsize uint8) (overflow bool) { + if bitsize == 0 || bitsize >= 64 || v == 0 { + return + } + if trunc := (v << (64 - bitsize)) >> (64 - bitsize); v != trunc { + overflow = true + } + return +} + +func (_ checkOverflow) Int(v int64, bitsize uint8) (overflow bool) { + if bitsize == 0 || bitsize >= 64 || v == 0 { + return + } + if trunc := (v << (64 - bitsize)) >> (64 - bitsize); v != trunc { + overflow = true + } + return +} + +func (_ checkOverflow) SignedInt(v uint64) (i int64, overflow bool) { + //e.g. -127 to 128 for int8 + pos := (v >> 63) == 0 + ui2 := v & 0x7fffffffffffffff + if pos { + if ui2 > math.MaxInt64 { + overflow = true + return + } + } else { + if ui2 > math.MaxInt64-1 { + overflow = true + return + } + } + i = int64(v) + return +} + +// ------------------ SORT ----------------- + +func isNaN(f float64) bool { return f != f } + +// ----------------------- + +type intSlice []int64 +type uintSlice []uint64 +type floatSlice []float64 +type boolSlice []bool +type stringSlice []string +type bytesSlice [][]byte + +func (p intSlice) Len() int { return len(p) } +func (p intSlice) Less(i, j int) bool { return p[i] < p[j] } +func (p intSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p uintSlice) Len() int { return len(p) } +func (p uintSlice) Less(i, j int) bool { return p[i] < p[j] } +func (p uintSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p floatSlice) Len() int { return len(p) } +func (p floatSlice) Less(i, j int) bool { + return p[i] < p[j] || isNaN(p[i]) && !isNaN(p[j]) +} +func (p floatSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p stringSlice) Len() int { return len(p) } +func (p stringSlice) Less(i, j int) bool { return p[i] < p[j] } +func (p stringSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p bytesSlice) Len() int { return len(p) } +func (p bytesSlice) Less(i, j int) bool { return bytes.Compare(p[i], p[j]) == -1 } +func (p bytesSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p boolSlice) Len() int { return len(p) } +func (p boolSlice) Less(i, j int) bool { return !p[i] && p[j] } +func (p boolSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +// --------------------- + +type intRv struct { + v int64 + r reflect.Value +} +type intRvSlice []intRv +type uintRv struct { + v uint64 + r reflect.Value +} +type uintRvSlice []uintRv +type floatRv struct { + v float64 + r reflect.Value +} +type floatRvSlice []floatRv +type boolRv struct { + v bool + r reflect.Value +} +type boolRvSlice []boolRv +type stringRv struct { + v string + r reflect.Value +} +type stringRvSlice []stringRv +type bytesRv struct { + v []byte + r reflect.Value +} +type bytesRvSlice []bytesRv + +func (p intRvSlice) Len() int { return len(p) } +func (p intRvSlice) Less(i, j int) bool { return p[i].v < p[j].v } +func (p intRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p uintRvSlice) Len() int { return len(p) } +func (p uintRvSlice) Less(i, j int) bool { return p[i].v < p[j].v } +func (p uintRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p floatRvSlice) Len() int { return len(p) } +func (p floatRvSlice) Less(i, j int) bool { + return p[i].v < p[j].v || isNaN(p[i].v) && !isNaN(p[j].v) +} +func (p floatRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p stringRvSlice) Len() int { return len(p) } +func (p stringRvSlice) Less(i, j int) bool { return p[i].v < p[j].v } +func (p stringRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p bytesRvSlice) Len() int { return len(p) } +func (p bytesRvSlice) Less(i, j int) bool { return bytes.Compare(p[i].v, p[j].v) == -1 } +func (p bytesRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p boolRvSlice) Len() int { return len(p) } +func (p boolRvSlice) Less(i, j int) bool { return !p[i].v && p[j].v } +func (p boolRvSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +// ----------------- + +type bytesI struct { + v []byte + i interface{} +} + +type bytesISlice []bytesI + +func (p bytesISlice) Len() int { return len(p) } +func (p bytesISlice) Less(i, j int) bool { return bytes.Compare(p[i].v, p[j].v) == -1 } +func (p bytesISlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/ugorji/go/codec/helper_internal.go b/vendor/github.com/ugorji/go/codec/helper_internal.go new file mode 100644 index 0000000000..dea981fbb7 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/helper_internal.go @@ -0,0 +1,242 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +// All non-std package dependencies live in this file, +// so porting to different environment is easy (just update functions). + +import ( + "errors" + "fmt" + "math" + "reflect" +) + +func panicValToErr(panicVal interface{}, err *error) { + if panicVal == nil { + return + } + // case nil + switch xerr := panicVal.(type) { + case error: + *err = xerr + case string: + *err = errors.New(xerr) + default: + *err = fmt.Errorf("%v", panicVal) + } + return +} + +func hIsEmptyValue(v reflect.Value, deref, checkStruct bool) bool { + switch v.Kind() { + case reflect.Invalid: + return true + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + if deref { + if v.IsNil() { + return true + } + return hIsEmptyValue(v.Elem(), deref, checkStruct) + } else { + return v.IsNil() + } + case reflect.Struct: + if !checkStruct { + return false + } + // return true if all fields are empty. else return false. + // we cannot use equality check, because some fields may be maps/slices/etc + // and consequently the structs are not comparable. + // return v.Interface() == reflect.Zero(v.Type()).Interface() + for i, n := 0, v.NumField(); i < n; i++ { + if !hIsEmptyValue(v.Field(i), deref, checkStruct) { + return false + } + } + return true + } + return false +} + +func isEmptyValue(v reflect.Value) bool { + return hIsEmptyValue(v, derefForIsEmptyValue, checkStructForEmptyValue) +} + +func pruneSignExt(v []byte, pos bool) (n int) { + if len(v) < 2 { + } else if pos && v[0] == 0 { + for ; v[n] == 0 && n+1 < len(v) && (v[n+1]&(1<<7) == 0); n++ { + } + } else if !pos && v[0] == 0xff { + for ; v[n] == 0xff && n+1 < len(v) && (v[n+1]&(1<<7) != 0); n++ { + } + } + return +} + +func implementsIntf(typ, iTyp reflect.Type) (success bool, indir int8) { + if typ == nil { + return + } + rt := typ + // The type might be a pointer and we need to keep + // dereferencing to the base type until we find an implementation. + for { + if rt.Implements(iTyp) { + return true, indir + } + if p := rt; p.Kind() == reflect.Ptr { + indir++ + if indir >= math.MaxInt8 { // insane number of indirections + return false, 0 + } + rt = p.Elem() + continue + } + break + } + // No luck yet, but if this is a base type (non-pointer), the pointer might satisfy. + if typ.Kind() != reflect.Ptr { + // Not a pointer, but does the pointer work? + if reflect.PtrTo(typ).Implements(iTyp) { + return true, -1 + } + } + return false, 0 +} + +// validate that this function is correct ... +// culled from OGRE (Object-Oriented Graphics Rendering Engine) +// function: halfToFloatI (http://stderr.org/doc/ogre-doc/api/OgreBitwise_8h-source.html) +func halfFloatToFloatBits(yy uint16) (d uint32) { + y := uint32(yy) + s := (y >> 15) & 0x01 + e := (y >> 10) & 0x1f + m := y & 0x03ff + + if e == 0 { + if m == 0 { // plu or minus 0 + return s << 31 + } else { // Denormalized number -- renormalize it + for (m & 0x00000400) == 0 { + m <<= 1 + e -= 1 + } + e += 1 + const zz uint32 = 0x0400 + m &= ^zz + } + } else if e == 31 { + if m == 0 { // Inf + return (s << 31) | 0x7f800000 + } else { // NaN + return (s << 31) | 0x7f800000 | (m << 13) + } + } + e = e + (127 - 15) + m = m << 13 + return (s << 31) | (e << 23) | m +} + +// GrowCap will return a new capacity for a slice, given the following: +// - oldCap: current capacity +// - unit: in-memory size of an element +// - num: number of elements to add +func growCap(oldCap, unit, num int) (newCap int) { + // appendslice logic (if cap < 1024, *2, else *1.25): + // leads to many copy calls, especially when copying bytes. + // bytes.Buffer model (2*cap + n): much better for bytes. + // smarter way is to take the byte-size of the appended element(type) into account + + // maintain 3 thresholds: + // t1: if cap <= t1, newcap = 2x + // t2: if cap <= t2, newcap = 1.75x + // t3: if cap <= t3, newcap = 1.5x + // else newcap = 1.25x + // + // t1, t2, t3 >= 1024 always. + // i.e. if unit size >= 16, then always do 2x or 1.25x (ie t1, t2, t3 are all same) + // + // With this, appending for bytes increase by: + // 100% up to 4K + // 75% up to 8K + // 50% up to 16K + // 25% beyond that + + // unit can be 0 e.g. for struct{}{}; handle that appropriately + var t1, t2, t3 int // thresholds + if unit <= 1 { + t1, t2, t3 = 4*1024, 8*1024, 16*1024 + } else if unit < 16 { + t3 = 16 / unit * 1024 + t1 = t3 * 1 / 4 + t2 = t3 * 2 / 4 + } else { + t1, t2, t3 = 1024, 1024, 1024 + } + + var x int // temporary variable + + // x is multiplier here: one of 5, 6, 7 or 8; incr of 25%, 50%, 75% or 100% respectively + if oldCap <= t1 { // [0,t1] + x = 8 + } else if oldCap > t3 { // (t3,infinity] + x = 5 + } else if oldCap <= t2 { // (t1,t2] + x = 7 + } else { // (t2,t3] + x = 6 + } + newCap = x * oldCap / 4 + + if num > 0 { + newCap += num + } + + // ensure newCap is a multiple of 64 (if it is > 64) or 16. + if newCap > 64 { + if x = newCap % 64; x != 0 { + x = newCap / 64 + newCap = 64 * (x + 1) + } + } else { + if x = newCap % 16; x != 0 { + x = newCap / 16 + newCap = 16 * (x + 1) + } + } + return +} + +func expandSliceValue(s reflect.Value, num int) reflect.Value { + if num <= 0 { + return s + } + l0 := s.Len() + l1 := l0 + num // new slice length + if l1 < l0 { + panic("ExpandSlice: slice overflow") + } + c0 := s.Cap() + if l1 <= c0 { + return s.Slice(0, l1) + } + st := s.Type() + c1 := growCap(c0, int(st.Elem().Size()), num) + s2 := reflect.MakeSlice(st, l1, c1) + // println("expandslicevalue: cap-old: ", c0, ", cap-new: ", c1, ", len-new: ", l1) + reflect.Copy(s2, s) + return s2 +} diff --git a/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go new file mode 100644 index 0000000000..7c2ffc0fde --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go @@ -0,0 +1,20 @@ +//+build !unsafe + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +// stringView returns a view of the []byte as a string. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. +func stringView(v []byte) string { + return string(v) +} + +// bytesView returns a view of the string as a []byte. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. +func bytesView(v string) []byte { + return []byte(v) +} diff --git a/vendor/github.com/ugorji/go/codec/helper_unsafe.go b/vendor/github.com/ugorji/go/codec/helper_unsafe.go new file mode 100644 index 0000000000..373b2b1027 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/helper_unsafe.go @@ -0,0 +1,45 @@ +//+build unsafe + +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "unsafe" +) + +// This file has unsafe variants of some helper methods. + +type unsafeString struct { + Data uintptr + Len int +} + +type unsafeBytes struct { + Data uintptr + Len int + Cap int +} + +// stringView returns a view of the []byte as a string. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. +func stringView(v []byte) string { + if len(v) == 0 { + return "" + } + x := unsafeString{uintptr(unsafe.Pointer(&v[0])), len(v)} + return *(*string)(unsafe.Pointer(&x)) +} + +// bytesView returns a view of the string as a []byte. +// In unsafe mode, it doesn't incur allocation and copying caused by conversion. +// In regular safe mode, it is an allocation and copy. +func bytesView(v string) []byte { + if len(v) == 0 { + return zeroByteSlice + } + x := unsafeBytes{uintptr(unsafe.Pointer(&v)), len(v), len(v)} + return *(*[]byte)(unsafe.Pointer(&x)) +} diff --git a/vendor/github.com/ugorji/go/codec/json.go b/vendor/github.com/ugorji/go/codec/json.go new file mode 100644 index 0000000000..a18a5f7063 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/json.go @@ -0,0 +1,1072 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +// By default, this json support uses base64 encoding for bytes, because you cannot +// store and read any arbitrary string in json (only unicode). +// However, the user can configre how to encode/decode bytes. +// +// This library specifically supports UTF-8 for encoding and decoding only. +// +// Note that the library will happily encode/decode things which are not valid +// json e.g. a map[int64]string. We do it for consistency. With valid json, +// we will encode and decode appropriately. +// Users can specify their map type if necessary to force it. +// +// Note: +// - we cannot use strconv.Quote and strconv.Unquote because json quotes/unquotes differently. +// We implement it here. +// - Also, strconv.ParseXXX for floats and integers +// - only works on strings resulting in unnecessary allocation and []byte-string conversion. +// - it does a lot of redundant checks, because json numbers are simpler that what it supports. +// - We parse numbers (floats and integers) directly here. +// We only delegate parsing floats if it is a hairy float which could cause a loss of precision. +// In that case, we delegate to strconv.ParseFloat. +// +// Note: +// - encode does not beautify. There is no whitespace when encoding. +// - rpc calls which take single integer arguments or write single numeric arguments will need care. + +// Top-level methods of json(End|Dec)Driver (which are implementations of (en|de)cDriver +// MUST not call one-another. + +import ( + "bytes" + "encoding/base64" + "fmt" + "reflect" + "strconv" + "unicode/utf16" + "unicode/utf8" +) + +//-------------------------------- + +var jsonLiterals = [...]byte{'t', 'r', 'u', 'e', 'f', 'a', 'l', 's', 'e', 'n', 'u', 'l', 'l'} + +var jsonFloat64Pow10 = [...]float64{ + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, + 1e20, 1e21, 1e22, +} + +var jsonUint64Pow10 = [...]uint64{ + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, + 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, +} + +const ( + // jsonUnreadAfterDecNum controls whether we unread after decoding a number. + // + // instead of unreading, just update d.tok (iff it's not a whitespace char) + // However, doing this means that we may HOLD onto some data which belongs to another stream. + // Thus, it is safest to unread the data when done. + // keep behind a constant flag for now. + jsonUnreadAfterDecNum = true + + // If !jsonValidateSymbols, decoding will be faster, by skipping some checks: + // - If we see first character of null, false or true, + // do not validate subsequent characters. + // - e.g. if we see a n, assume null and skip next 3 characters, + // and do not validate they are ull. + // P.S. Do not expect a significant decoding boost from this. + jsonValidateSymbols = true + + // if jsonTruncateMantissa, truncate mantissa if trailing 0's. + // This is important because it could allow some floats to be decoded without + // deferring to strconv.ParseFloat. + jsonTruncateMantissa = true + + // if mantissa >= jsonNumUintCutoff before multiplying by 10, this is an overflow + jsonNumUintCutoff = (1<<64-1)/uint64(10) + 1 // cutoff64(base) + + // if mantissa >= jsonNumUintMaxVal, this is an overflow + jsonNumUintMaxVal = 1<= slen { + e.bs = e.bs[:slen] + } else { + e.bs = make([]byte, slen) + } + base64.StdEncoding.Encode(e.bs, v) + e.w.writen1('"') + e.w.writeb(e.bs) + e.w.writen1('"') + } else { + // e.EncodeString(c, string(v)) + e.quoteStr(stringView(v)) + } +} + +func (e *jsonEncDriver) EncodeAsis(v []byte) { + e.w.writeb(v) +} + +func (e *jsonEncDriver) quoteStr(s string) { + // adapted from std pkg encoding/json + const hex = "0123456789abcdef" + w := e.w + w.writen1('"') + start := 0 + for i := 0; i < len(s); { + if b := s[i]; b < utf8.RuneSelf { + if 0x20 <= b && b != '\\' && b != '"' && b != '<' && b != '>' && b != '&' { + i++ + continue + } + if start < i { + w.writestr(s[start:i]) + } + switch b { + case '\\', '"': + w.writen2('\\', b) + case '\n': + w.writen2('\\', 'n') + case '\r': + w.writen2('\\', 'r') + case '\b': + w.writen2('\\', 'b') + case '\f': + w.writen2('\\', 'f') + case '\t': + w.writen2('\\', 't') + default: + // encode all bytes < 0x20 (except \r, \n). + // also encode < > & to prevent security holes when served to some browsers. + w.writestr(`\u00`) + w.writen2(hex[b>>4], hex[b&0xF]) + } + i++ + start = i + continue + } + c, size := utf8.DecodeRuneInString(s[i:]) + if c == utf8.RuneError && size == 1 { + if start < i { + w.writestr(s[start:i]) + } + w.writestr(`\ufffd`) + i += size + start = i + continue + } + // U+2028 is LINE SEPARATOR. U+2029 is PARAGRAPH SEPARATOR. + // Both technically valid JSON, but bomb on JSONP, so fix here. + if c == '\u2028' || c == '\u2029' { + if start < i { + w.writestr(s[start:i]) + } + w.writestr(`\u202`) + w.writen1(hex[c&0xF]) + i += size + start = i + continue + } + i += size + } + if start < len(s) { + w.writestr(s[start:]) + } + w.writen1('"') +} + +//-------------------------------- + +type jsonNum struct { + // bytes []byte // may have [+-.eE0-9] + mantissa uint64 // where mantissa ends, and maybe dot begins. + exponent int16 // exponent value. + manOverflow bool + neg bool // started with -. No initial sign in the bytes above. + dot bool // has dot + explicitExponent bool // explicit exponent +} + +func (x *jsonNum) reset() { + x.manOverflow = false + x.neg = false + x.dot = false + x.explicitExponent = false + x.mantissa = 0 + x.exponent = 0 +} + +// uintExp is called only if exponent > 0. +func (x *jsonNum) uintExp() (n uint64, overflow bool) { + n = x.mantissa + e := x.exponent + if e >= int16(len(jsonUint64Pow10)) { + overflow = true + return + } + n *= jsonUint64Pow10[e] + if n < x.mantissa || n > jsonNumUintMaxVal { + overflow = true + return + } + return + // for i := int16(0); i < e; i++ { + // if n >= jsonNumUintCutoff { + // overflow = true + // return + // } + // n *= 10 + // } + // return +} + +// these constants are only used withn floatVal. +// They are brought out, so that floatVal can be inlined. +const ( + jsonUint64MantissaBits = 52 + jsonMaxExponent = int16(len(jsonFloat64Pow10)) - 1 +) + +func (x *jsonNum) floatVal() (f float64, parseUsingStrConv bool) { + // We do not want to lose precision. + // Consequently, we will delegate to strconv.ParseFloat if any of the following happen: + // - There are more digits than in math.MaxUint64: 18446744073709551615 (20 digits) + // We expect up to 99.... (19 digits) + // - The mantissa cannot fit into a 52 bits of uint64 + // - The exponent is beyond our scope ie beyong 22. + parseUsingStrConv = x.manOverflow || + x.exponent > jsonMaxExponent || + (x.exponent < 0 && -(x.exponent) > jsonMaxExponent) || + x.mantissa>>jsonUint64MantissaBits != 0 + + if parseUsingStrConv { + return + } + + // all good. so handle parse here. + f = float64(x.mantissa) + // fmt.Printf(".Float: uint64 value: %v, float: %v\n", m, f) + if x.neg { + f = -f + } + if x.exponent > 0 { + f *= jsonFloat64Pow10[x.exponent] + } else if x.exponent < 0 { + f /= jsonFloat64Pow10[-x.exponent] + } + return +} + +type jsonDecDriver struct { + noBuiltInTypes + d *Decoder + h *JsonHandle + r decReader + + c containerState + // tok is used to store the token read right after skipWhiteSpace. + tok uint8 + + bstr [8]byte // scratch used for string \UXXX parsing + b [64]byte // scratch, used for parsing strings or numbers + b2 [64]byte // scratch, used only for decodeBytes (after base64) + bs []byte // scratch. Initialized from b. Used for parsing strings or numbers. + + se setExtWrapper + + n jsonNum +} + +func jsonIsWS(b byte) bool { + return b == ' ' || b == '\t' || b == '\r' || b == '\n' +} + +// // This will skip whitespace characters and return the next byte to read. +// // The next byte determines what the value will be one of. +// func (d *jsonDecDriver) skipWhitespace() { +// // fast-path: do not enter loop. Just check first (in case no whitespace). +// b := d.r.readn1() +// if jsonIsWS(b) { +// r := d.r +// for b = r.readn1(); jsonIsWS(b); b = r.readn1() { +// } +// } +// d.tok = b +// } + +func (d *jsonDecDriver) uncacheRead() { + if d.tok != 0 { + d.r.unreadn1() + d.tok = 0 + } +} + +func (d *jsonDecDriver) sendContainerState(c containerState) { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + var xc uint8 // char expected + if c == containerMapKey { + if d.c != containerMapStart { + xc = ',' + } + } else if c == containerMapValue { + xc = ':' + } else if c == containerMapEnd { + xc = '}' + } else if c == containerArrayElem { + if d.c != containerArrayStart { + xc = ',' + } + } else if c == containerArrayEnd { + xc = ']' + } + if xc != 0 { + if d.tok != xc { + d.d.errorf("json: expect char '%c' but got char '%c'", xc, d.tok) + } + d.tok = 0 + } + d.c = c +} + +func (d *jsonDecDriver) CheckBreak() bool { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok == '}' || d.tok == ']' { + // d.tok = 0 // only checking, not consuming + return true + } + return false +} + +func (d *jsonDecDriver) readStrIdx(fromIdx, toIdx uint8) { + bs := d.r.readx(int(toIdx - fromIdx)) + d.tok = 0 + if jsonValidateSymbols { + if !bytes.Equal(bs, jsonLiterals[fromIdx:toIdx]) { + d.d.errorf("json: expecting %s: got %s", jsonLiterals[fromIdx:toIdx], bs) + return + } + } +} + +func (d *jsonDecDriver) TryDecodeAsNil() bool { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok == 'n' { + d.readStrIdx(10, 13) // ull + return true + } + return false +} + +func (d *jsonDecDriver) DecodeBool() bool { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok == 'f' { + d.readStrIdx(5, 9) // alse + return false + } + if d.tok == 't' { + d.readStrIdx(1, 4) // rue + return true + } + d.d.errorf("json: decode bool: got first char %c", d.tok) + return false // "unreachable" +} + +func (d *jsonDecDriver) ReadMapStart() int { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok != '{' { + d.d.errorf("json: expect char '%c' but got char '%c'", '{', d.tok) + } + d.tok = 0 + d.c = containerMapStart + return -1 +} + +func (d *jsonDecDriver) ReadArrayStart() int { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok != '[' { + d.d.errorf("json: expect char '%c' but got char '%c'", '[', d.tok) + } + d.tok = 0 + d.c = containerArrayStart + return -1 +} + +func (d *jsonDecDriver) ContainerType() (vt valueType) { + // check container type by checking the first char + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if b := d.tok; b == '{' { + return valueTypeMap + } else if b == '[' { + return valueTypeArray + } else if b == 'n' { + return valueTypeNil + } else if b == '"' { + return valueTypeString + } + return valueTypeUnset + // d.d.errorf("isContainerType: unsupported parameter: %v", vt) + // return false // "unreachable" +} + +func (d *jsonDecDriver) decNum(storeBytes bool) { + // If it is has a . or an e|E, decode as a float; else decode as an int. + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + b := d.tok + if !(b == '+' || b == '-' || b == '.' || (b >= '0' && b <= '9')) { + d.d.errorf("json: decNum: got first char '%c'", b) + return + } + d.tok = 0 + + const cutoff = (1<<64-1)/uint64(10) + 1 // cutoff64(base) + const jsonNumUintMaxVal = 1<= jsonNumUintCutoff { + n.manOverflow = true + break + } + v := uint64(b - '0') + n.mantissa *= 10 + if v != 0 { + n1 := n.mantissa + v + if n1 < n.mantissa || n1 > jsonNumUintMaxVal { + n.manOverflow = true // n+v overflows + break + } + n.mantissa = n1 + } + case 6: + state = 7 + fallthrough + case 7: + if !(b == '0' && e == 0) { + e = e*10 + int16(b-'0') + } + default: + break LOOP + } + default: + break LOOP + } + if storeBytes { + d.bs = append(d.bs, b) + } + b, eof = r.readn1eof() + } + + if jsonTruncateMantissa && n.mantissa != 0 { + for n.mantissa%10 == 0 { + n.mantissa /= 10 + n.exponent++ + } + } + + if e != 0 { + if eNeg { + n.exponent -= e + } else { + n.exponent += e + } + } + + // d.n = n + + if !eof { + if jsonUnreadAfterDecNum { + r.unreadn1() + } else { + if !jsonIsWS(b) { + d.tok = b + } + } + } + // fmt.Printf("1: n: bytes: %s, neg: %v, dot: %v, exponent: %v, mantissaEndIndex: %v\n", + // n.bytes, n.neg, n.dot, n.exponent, n.mantissaEndIndex) + return +} + +func (d *jsonDecDriver) DecodeInt(bitsize uint8) (i int64) { + d.decNum(false) + n := &d.n + if n.manOverflow { + d.d.errorf("json: overflow integer after: %v", n.mantissa) + return + } + var u uint64 + if n.exponent == 0 { + u = n.mantissa + } else if n.exponent < 0 { + d.d.errorf("json: fractional integer") + return + } else if n.exponent > 0 { + var overflow bool + if u, overflow = n.uintExp(); overflow { + d.d.errorf("json: overflow integer") + return + } + } + i = int64(u) + if n.neg { + i = -i + } + if chkOvf.Int(i, bitsize) { + d.d.errorf("json: overflow %v bits: %s", bitsize, d.bs) + return + } + // fmt.Printf("DecodeInt: %v\n", i) + return +} + +// floatVal MUST only be called after a decNum, as d.bs now contains the bytes of the number +func (d *jsonDecDriver) floatVal() (f float64) { + f, useStrConv := d.n.floatVal() + if useStrConv { + var err error + if f, err = strconv.ParseFloat(stringView(d.bs), 64); err != nil { + panic(fmt.Errorf("parse float: %s, %v", d.bs, err)) + } + if d.n.neg { + f = -f + } + } + return +} + +func (d *jsonDecDriver) DecodeUint(bitsize uint8) (u uint64) { + d.decNum(false) + n := &d.n + if n.neg { + d.d.errorf("json: unsigned integer cannot be negative") + return + } + if n.manOverflow { + d.d.errorf("json: overflow integer after: %v", n.mantissa) + return + } + if n.exponent == 0 { + u = n.mantissa + } else if n.exponent < 0 { + d.d.errorf("json: fractional integer") + return + } else if n.exponent > 0 { + var overflow bool + if u, overflow = n.uintExp(); overflow { + d.d.errorf("json: overflow integer") + return + } + } + if chkOvf.Uint(u, bitsize) { + d.d.errorf("json: overflow %v bits: %s", bitsize, d.bs) + return + } + // fmt.Printf("DecodeUint: %v\n", u) + return +} + +func (d *jsonDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + d.decNum(true) + f = d.floatVal() + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("json: overflow float32: %v, %s", f, d.bs) + return + } + return +} + +func (d *jsonDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { + if ext == nil { + re := rv.(*RawExt) + re.Tag = xtag + d.d.decode(&re.Value) + } else { + var v interface{} + d.d.decode(&v) + ext.UpdateExt(rv, v) + } + return +} + +func (d *jsonDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + // if decoding into raw bytes, and the RawBytesExt is configured, use it to decode. + if !isstring && d.se.i != nil { + bsOut = bs + d.DecodeExt(&bsOut, 0, &d.se) + return + } + d.appendStringAsBytes() + // if isstring, then just return the bytes, even if it is using the scratch buffer. + // the bytes will be converted to a string as needed. + if isstring { + return d.bs + } + bs0 := d.bs + slen := base64.StdEncoding.DecodedLen(len(bs0)) + if slen <= cap(bs) { + bsOut = bs[:slen] + } else if zerocopy && slen <= cap(d.b2) { + bsOut = d.b2[:slen] + } else { + bsOut = make([]byte, slen) + } + slen2, err := base64.StdEncoding.Decode(bsOut, bs0) + if err != nil { + d.d.errorf("json: error decoding base64 binary '%s': %v", bs0, err) + return nil + } + if slen != slen2 { + bsOut = bsOut[:slen2] + } + return +} + +func (d *jsonDecDriver) DecodeString() (s string) { + d.appendStringAsBytes() + // if x := d.s.sc; x != nil && x.so && x.st == '}' { // map key + if d.c == containerMapKey { + return d.d.string(d.bs) + } + return string(d.bs) +} + +func (d *jsonDecDriver) appendStringAsBytes() { + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + if d.tok != '"' { + d.d.errorf("json: expect char '%c' but got char '%c'", '"', d.tok) + } + d.tok = 0 + + v := d.bs[:0] + var c uint8 + r := d.r + for { + c = r.readn1() + if c == '"' { + break + } else if c == '\\' { + c = r.readn1() + switch c { + case '"', '\\', '/', '\'': + v = append(v, c) + case 'b': + v = append(v, '\b') + case 'f': + v = append(v, '\f') + case 'n': + v = append(v, '\n') + case 'r': + v = append(v, '\r') + case 't': + v = append(v, '\t') + case 'u': + rr := d.jsonU4(false) + // fmt.Printf("$$$$$$$$$: is surrogate: %v\n", utf16.IsSurrogate(rr)) + if utf16.IsSurrogate(rr) { + rr = utf16.DecodeRune(rr, d.jsonU4(true)) + } + w2 := utf8.EncodeRune(d.bstr[:], rr) + v = append(v, d.bstr[:w2]...) + default: + d.d.errorf("json: unsupported escaped value: %c", c) + } + } else { + v = append(v, c) + } + } + d.bs = v +} + +func (d *jsonDecDriver) jsonU4(checkSlashU bool) rune { + r := d.r + if checkSlashU && !(r.readn1() == '\\' && r.readn1() == 'u') { + d.d.errorf(`json: unquoteStr: invalid unicode sequence. Expecting \u`) + return 0 + } + // u, _ := strconv.ParseUint(string(d.bstr[:4]), 16, 64) + var u uint32 + for i := 0; i < 4; i++ { + v := r.readn1() + if '0' <= v && v <= '9' { + v = v - '0' + } else if 'a' <= v && v <= 'z' { + v = v - 'a' + 10 + } else if 'A' <= v && v <= 'Z' { + v = v - 'A' + 10 + } else { + d.d.errorf(`json: unquoteStr: invalid hex char in \u unicode sequence: %q`, v) + return 0 + } + u = u*16 + uint32(v) + } + return rune(u) +} + +func (d *jsonDecDriver) DecodeNaked() { + z := &d.d.n + // var decodeFurther bool + + if d.tok == 0 { + var b byte + r := d.r + for b = r.readn1(); jsonIsWS(b); b = r.readn1() { + } + d.tok = b + } + switch d.tok { + case 'n': + d.readStrIdx(10, 13) // ull + z.v = valueTypeNil + case 'f': + d.readStrIdx(5, 9) // alse + z.v = valueTypeBool + z.b = false + case 't': + d.readStrIdx(1, 4) // rue + z.v = valueTypeBool + z.b = true + case '{': + z.v = valueTypeMap + // d.tok = 0 // don't consume. kInterfaceNaked will call ReadMapStart + // decodeFurther = true + case '[': + z.v = valueTypeArray + // d.tok = 0 // don't consume. kInterfaceNaked will call ReadArrayStart + // decodeFurther = true + case '"': + z.v = valueTypeString + z.s = d.DecodeString() + default: // number + d.decNum(true) + n := &d.n + // if the string had a any of [.eE], then decode as float. + switch { + case n.explicitExponent, n.dot, n.exponent < 0, n.manOverflow: + z.v = valueTypeFloat + z.f = d.floatVal() + case n.exponent == 0: + u := n.mantissa + switch { + case n.neg: + z.v = valueTypeInt + z.i = -int64(u) + case d.h.SignedInteger: + z.v = valueTypeInt + z.i = int64(u) + default: + z.v = valueTypeUint + z.u = u + } + default: + u, overflow := n.uintExp() + switch { + case overflow: + z.v = valueTypeFloat + z.f = d.floatVal() + case n.neg: + z.v = valueTypeInt + z.i = -int64(u) + case d.h.SignedInteger: + z.v = valueTypeInt + z.i = int64(u) + default: + z.v = valueTypeUint + z.u = u + } + } + // fmt.Printf("DecodeNaked: Number: %T, %v\n", v, v) + } + // if decodeFurther { + // d.s.sc.retryRead() + // } + return +} + +//---------------------- + +// JsonHandle is a handle for JSON encoding format. +// +// Json is comprehensively supported: +// - decodes numbers into interface{} as int, uint or float64 +// - configurable way to encode/decode []byte . +// by default, encodes and decodes []byte using base64 Std Encoding +// - UTF-8 support for encoding and decoding +// +// It has better performance than the json library in the standard library, +// by leveraging the performance improvements of the codec library and +// minimizing allocations. +// +// In addition, it doesn't read more bytes than necessary during a decode, which allows +// reading multiple values from a stream containing json and non-json content. +// For example, a user can read a json value, then a cbor value, then a msgpack value, +// all from the same stream in sequence. +type JsonHandle struct { + textEncodingType + BasicHandle + // RawBytesExt, if configured, is used to encode and decode raw bytes in a custom way. + // If not configured, raw bytes are encoded to/from base64 text. + RawBytesExt InterfaceExt +} + +func (h *JsonHandle) SetInterfaceExt(rt reflect.Type, tag uint64, ext InterfaceExt) (err error) { + return h.SetExt(rt, tag, &setExtWrapper{i: ext}) +} + +func (h *JsonHandle) newEncDriver(e *Encoder) encDriver { + hd := jsonEncDriver{e: e, w: e.w, h: h} + hd.bs = hd.b[:0] + hd.se.i = h.RawBytesExt + return &hd +} + +func (h *JsonHandle) newDecDriver(d *Decoder) decDriver { + // d := jsonDecDriver{r: r.(*bytesDecReader), h: h} + hd := jsonDecDriver{d: d, r: d.r, h: h} + hd.bs = hd.b[:0] + hd.se.i = h.RawBytesExt + return &hd +} + +func (e *jsonEncDriver) reset() { + e.w = e.e.w +} + +func (d *jsonDecDriver) reset() { + d.r = d.d.r +} + +var jsonEncodeTerminate = []byte{' '} + +func (h *JsonHandle) rpcEncodeTerminate() []byte { + return jsonEncodeTerminate +} + +var _ decDriver = (*jsonDecDriver)(nil) +var _ encDriver = (*jsonEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/msgpack.go b/vendor/github.com/ugorji/go/codec/msgpack.go new file mode 100644 index 0000000000..5eb4c96368 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/msgpack.go @@ -0,0 +1,844 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +/* +MSGPACK + +Msgpack-c implementation powers the c, c++, python, ruby, etc libraries. +We need to maintain compatibility with it and how it encodes integer values +without caring about the type. + +For compatibility with behaviour of msgpack-c reference implementation: + - Go intX (>0) and uintX + IS ENCODED AS + msgpack +ve fixnum, unsigned + - Go intX (<0) + IS ENCODED AS + msgpack -ve fixnum, signed + +*/ +package codec + +import ( + "fmt" + "io" + "math" + "net/rpc" + "reflect" +) + +const ( + mpPosFixNumMin byte = 0x00 + mpPosFixNumMax = 0x7f + mpFixMapMin = 0x80 + mpFixMapMax = 0x8f + mpFixArrayMin = 0x90 + mpFixArrayMax = 0x9f + mpFixStrMin = 0xa0 + mpFixStrMax = 0xbf + mpNil = 0xc0 + _ = 0xc1 + mpFalse = 0xc2 + mpTrue = 0xc3 + mpFloat = 0xca + mpDouble = 0xcb + mpUint8 = 0xcc + mpUint16 = 0xcd + mpUint32 = 0xce + mpUint64 = 0xcf + mpInt8 = 0xd0 + mpInt16 = 0xd1 + mpInt32 = 0xd2 + mpInt64 = 0xd3 + + // extensions below + mpBin8 = 0xc4 + mpBin16 = 0xc5 + mpBin32 = 0xc6 + mpExt8 = 0xc7 + mpExt16 = 0xc8 + mpExt32 = 0xc9 + mpFixExt1 = 0xd4 + mpFixExt2 = 0xd5 + mpFixExt4 = 0xd6 + mpFixExt8 = 0xd7 + mpFixExt16 = 0xd8 + + mpStr8 = 0xd9 // new + mpStr16 = 0xda + mpStr32 = 0xdb + + mpArray16 = 0xdc + mpArray32 = 0xdd + + mpMap16 = 0xde + mpMap32 = 0xdf + + mpNegFixNumMin = 0xe0 + mpNegFixNumMax = 0xff +) + +// MsgpackSpecRpcMultiArgs is a special type which signifies to the MsgpackSpecRpcCodec +// that the backend RPC service takes multiple arguments, which have been arranged +// in sequence in the slice. +// +// The Codec then passes it AS-IS to the rpc service (without wrapping it in an +// array of 1 element). +type MsgpackSpecRpcMultiArgs []interface{} + +// A MsgpackContainer type specifies the different types of msgpackContainers. +type msgpackContainerType struct { + fixCutoff int + bFixMin, b8, b16, b32 byte + hasFixMin, has8, has8Always bool +} + +var ( + msgpackContainerStr = msgpackContainerType{32, mpFixStrMin, mpStr8, mpStr16, mpStr32, true, true, false} + msgpackContainerBin = msgpackContainerType{0, 0, mpBin8, mpBin16, mpBin32, false, true, true} + msgpackContainerList = msgpackContainerType{16, mpFixArrayMin, 0, mpArray16, mpArray32, true, false, false} + msgpackContainerMap = msgpackContainerType{16, mpFixMapMin, 0, mpMap16, mpMap32, true, false, false} +) + +//--------------------------------------------- + +type msgpackEncDriver struct { + noBuiltInTypes + encNoSeparator + e *Encoder + w encWriter + h *MsgpackHandle + x [8]byte +} + +func (e *msgpackEncDriver) EncodeNil() { + e.w.writen1(mpNil) +} + +func (e *msgpackEncDriver) EncodeInt(i int64) { + if i >= 0 { + e.EncodeUint(uint64(i)) + } else if i >= -32 { + e.w.writen1(byte(i)) + } else if i >= math.MinInt8 { + e.w.writen2(mpInt8, byte(i)) + } else if i >= math.MinInt16 { + e.w.writen1(mpInt16) + bigenHelper{e.x[:2], e.w}.writeUint16(uint16(i)) + } else if i >= math.MinInt32 { + e.w.writen1(mpInt32) + bigenHelper{e.x[:4], e.w}.writeUint32(uint32(i)) + } else { + e.w.writen1(mpInt64) + bigenHelper{e.x[:8], e.w}.writeUint64(uint64(i)) + } +} + +func (e *msgpackEncDriver) EncodeUint(i uint64) { + if i <= math.MaxInt8 { + e.w.writen1(byte(i)) + } else if i <= math.MaxUint8 { + e.w.writen2(mpUint8, byte(i)) + } else if i <= math.MaxUint16 { + e.w.writen1(mpUint16) + bigenHelper{e.x[:2], e.w}.writeUint16(uint16(i)) + } else if i <= math.MaxUint32 { + e.w.writen1(mpUint32) + bigenHelper{e.x[:4], e.w}.writeUint32(uint32(i)) + } else { + e.w.writen1(mpUint64) + bigenHelper{e.x[:8], e.w}.writeUint64(uint64(i)) + } +} + +func (e *msgpackEncDriver) EncodeBool(b bool) { + if b { + e.w.writen1(mpTrue) + } else { + e.w.writen1(mpFalse) + } +} + +func (e *msgpackEncDriver) EncodeFloat32(f float32) { + e.w.writen1(mpFloat) + bigenHelper{e.x[:4], e.w}.writeUint32(math.Float32bits(f)) +} + +func (e *msgpackEncDriver) EncodeFloat64(f float64) { + e.w.writen1(mpDouble) + bigenHelper{e.x[:8], e.w}.writeUint64(math.Float64bits(f)) +} + +func (e *msgpackEncDriver) EncodeExt(v interface{}, xtag uint64, ext Ext, _ *Encoder) { + bs := ext.WriteExt(v) + if bs == nil { + e.EncodeNil() + return + } + if e.h.WriteExt { + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) + } else { + e.EncodeStringBytes(c_RAW, bs) + } +} + +func (e *msgpackEncDriver) EncodeRawExt(re *RawExt, _ *Encoder) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *msgpackEncDriver) encodeExtPreamble(xtag byte, l int) { + if l == 1 { + e.w.writen2(mpFixExt1, xtag) + } else if l == 2 { + e.w.writen2(mpFixExt2, xtag) + } else if l == 4 { + e.w.writen2(mpFixExt4, xtag) + } else if l == 8 { + e.w.writen2(mpFixExt8, xtag) + } else if l == 16 { + e.w.writen2(mpFixExt16, xtag) + } else if l < 256 { + e.w.writen2(mpExt8, byte(l)) + e.w.writen1(xtag) + } else if l < 65536 { + e.w.writen1(mpExt16) + bigenHelper{e.x[:2], e.w}.writeUint16(uint16(l)) + e.w.writen1(xtag) + } else { + e.w.writen1(mpExt32) + bigenHelper{e.x[:4], e.w}.writeUint32(uint32(l)) + e.w.writen1(xtag) + } +} + +func (e *msgpackEncDriver) EncodeArrayStart(length int) { + e.writeContainerLen(msgpackContainerList, length) +} + +func (e *msgpackEncDriver) EncodeMapStart(length int) { + e.writeContainerLen(msgpackContainerMap, length) +} + +func (e *msgpackEncDriver) EncodeString(c charEncoding, s string) { + if c == c_RAW && e.h.WriteExt { + e.writeContainerLen(msgpackContainerBin, len(s)) + } else { + e.writeContainerLen(msgpackContainerStr, len(s)) + } + if len(s) > 0 { + e.w.writestr(s) + } +} + +func (e *msgpackEncDriver) EncodeSymbol(v string) { + e.EncodeString(c_UTF8, v) +} + +func (e *msgpackEncDriver) EncodeStringBytes(c charEncoding, bs []byte) { + if c == c_RAW && e.h.WriteExt { + e.writeContainerLen(msgpackContainerBin, len(bs)) + } else { + e.writeContainerLen(msgpackContainerStr, len(bs)) + } + if len(bs) > 0 { + e.w.writeb(bs) + } +} + +func (e *msgpackEncDriver) writeContainerLen(ct msgpackContainerType, l int) { + if ct.hasFixMin && l < ct.fixCutoff { + e.w.writen1(ct.bFixMin | byte(l)) + } else if ct.has8 && l < 256 && (ct.has8Always || e.h.WriteExt) { + e.w.writen2(ct.b8, uint8(l)) + } else if l < 65536 { + e.w.writen1(ct.b16) + bigenHelper{e.x[:2], e.w}.writeUint16(uint16(l)) + } else { + e.w.writen1(ct.b32) + bigenHelper{e.x[:4], e.w}.writeUint32(uint32(l)) + } +} + +//--------------------------------------------- + +type msgpackDecDriver struct { + d *Decoder + r decReader // *Decoder decReader decReaderT + h *MsgpackHandle + b [scratchByteArrayLen]byte + bd byte + bdRead bool + br bool // bytes reader + noBuiltInTypes + noStreamingCodec + decNoSeparator +} + +// Note: This returns either a primitive (int, bool, etc) for non-containers, +// or a containerType, or a specific type denoting nil or extension. +// It is called when a nil interface{} is passed, leaving it up to the DecDriver +// to introspect the stream and decide how best to decode. +// It deciphers the value by looking at the stream first. +func (d *msgpackDecDriver) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + bd := d.bd + n := &d.d.n + var decodeFurther bool + + switch bd { + case mpNil: + n.v = valueTypeNil + d.bdRead = false + case mpFalse: + n.v = valueTypeBool + n.b = false + case mpTrue: + n.v = valueTypeBool + n.b = true + + case mpFloat: + n.v = valueTypeFloat + n.f = float64(math.Float32frombits(bigen.Uint32(d.r.readx(4)))) + case mpDouble: + n.v = valueTypeFloat + n.f = math.Float64frombits(bigen.Uint64(d.r.readx(8))) + + case mpUint8: + n.v = valueTypeUint + n.u = uint64(d.r.readn1()) + case mpUint16: + n.v = valueTypeUint + n.u = uint64(bigen.Uint16(d.r.readx(2))) + case mpUint32: + n.v = valueTypeUint + n.u = uint64(bigen.Uint32(d.r.readx(4))) + case mpUint64: + n.v = valueTypeUint + n.u = uint64(bigen.Uint64(d.r.readx(8))) + + case mpInt8: + n.v = valueTypeInt + n.i = int64(int8(d.r.readn1())) + case mpInt16: + n.v = valueTypeInt + n.i = int64(int16(bigen.Uint16(d.r.readx(2)))) + case mpInt32: + n.v = valueTypeInt + n.i = int64(int32(bigen.Uint32(d.r.readx(4)))) + case mpInt64: + n.v = valueTypeInt + n.i = int64(int64(bigen.Uint64(d.r.readx(8)))) + + default: + switch { + case bd >= mpPosFixNumMin && bd <= mpPosFixNumMax: + // positive fixnum (always signed) + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd >= mpNegFixNumMin && bd <= mpNegFixNumMax: + // negative fixnum + n.v = valueTypeInt + n.i = int64(int8(bd)) + case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax: + if d.h.RawToString { + n.v = valueTypeString + n.s = d.DecodeString() + } else { + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + } + case bd == mpBin8, bd == mpBin16, bd == mpBin32: + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + case bd == mpArray16, bd == mpArray32, bd >= mpFixArrayMin && bd <= mpFixArrayMax: + n.v = valueTypeArray + decodeFurther = true + case bd == mpMap16, bd == mpMap32, bd >= mpFixMapMin && bd <= mpFixMapMax: + n.v = valueTypeMap + decodeFurther = true + case bd >= mpFixExt1 && bd <= mpFixExt16, bd >= mpExt8 && bd <= mpExt32: + n.v = valueTypeExt + clen := d.readExtLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(clen) + default: + d.d.errorf("Nil-Deciphered DecodeValue: %s: hex: %x, dec: %d", msgBadDesc, bd, bd) + } + } + if !decodeFurther { + d.bdRead = false + } + if n.v == valueTypeUint && d.h.SignedInteger { + n.v = valueTypeInt + n.i = int64(n.v) + } + return +} + +// int can be decoded from msgpack type: intXXX or uintXXX +func (d *msgpackDecDriver) DecodeInt(bitsize uint8) (i int64) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case mpUint8: + i = int64(uint64(d.r.readn1())) + case mpUint16: + i = int64(uint64(bigen.Uint16(d.r.readx(2)))) + case mpUint32: + i = int64(uint64(bigen.Uint32(d.r.readx(4)))) + case mpUint64: + i = int64(bigen.Uint64(d.r.readx(8))) + case mpInt8: + i = int64(int8(d.r.readn1())) + case mpInt16: + i = int64(int16(bigen.Uint16(d.r.readx(2)))) + case mpInt32: + i = int64(int32(bigen.Uint32(d.r.readx(4)))) + case mpInt64: + i = int64(bigen.Uint64(d.r.readx(8))) + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + i = int64(int8(d.bd)) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + i = int64(int8(d.bd)) + default: + d.d.errorf("Unhandled single-byte unsigned integer value: %s: %x", msgBadDesc, d.bd) + return + } + } + // check overflow (logic adapted from std pkg reflect/value.go OverflowUint() + if bitsize > 0 { + if trunc := (i << (64 - bitsize)) >> (64 - bitsize); i != trunc { + d.d.errorf("Overflow int value: %v", i) + return + } + } + d.bdRead = false + return +} + +// uint can be decoded from msgpack type: intXXX or uintXXX +func (d *msgpackDecDriver) DecodeUint(bitsize uint8) (ui uint64) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case mpUint8: + ui = uint64(d.r.readn1()) + case mpUint16: + ui = uint64(bigen.Uint16(d.r.readx(2))) + case mpUint32: + ui = uint64(bigen.Uint32(d.r.readx(4))) + case mpUint64: + ui = bigen.Uint64(d.r.readx(8)) + case mpInt8: + if i := int64(int8(d.r.readn1())); i >= 0 { + ui = uint64(i) + } else { + d.d.errorf("Assigning negative signed value: %v, to unsigned type", i) + return + } + case mpInt16: + if i := int64(int16(bigen.Uint16(d.r.readx(2)))); i >= 0 { + ui = uint64(i) + } else { + d.d.errorf("Assigning negative signed value: %v, to unsigned type", i) + return + } + case mpInt32: + if i := int64(int32(bigen.Uint32(d.r.readx(4)))); i >= 0 { + ui = uint64(i) + } else { + d.d.errorf("Assigning negative signed value: %v, to unsigned type", i) + return + } + case mpInt64: + if i := int64(bigen.Uint64(d.r.readx(8))); i >= 0 { + ui = uint64(i) + } else { + d.d.errorf("Assigning negative signed value: %v, to unsigned type", i) + return + } + default: + switch { + case d.bd >= mpPosFixNumMin && d.bd <= mpPosFixNumMax: + ui = uint64(d.bd) + case d.bd >= mpNegFixNumMin && d.bd <= mpNegFixNumMax: + d.d.errorf("Assigning negative signed value: %v, to unsigned type", int(d.bd)) + return + default: + d.d.errorf("Unhandled single-byte unsigned integer value: %s: %x", msgBadDesc, d.bd) + return + } + } + // check overflow (logic adapted from std pkg reflect/value.go OverflowUint() + if bitsize > 0 { + if trunc := (ui << (64 - bitsize)) >> (64 - bitsize); ui != trunc { + d.d.errorf("Overflow uint value: %v", ui) + return + } + } + d.bdRead = false + return +} + +// float can either be decoded from msgpack type: float, double or intX +func (d *msgpackDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == mpFloat { + f = float64(math.Float32frombits(bigen.Uint32(d.r.readx(4)))) + } else if d.bd == mpDouble { + f = math.Float64frombits(bigen.Uint64(d.r.readx(8))) + } else { + f = float64(d.DecodeInt(0)) + } + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("msgpack: float32 overflow: %v", f) + return + } + d.bdRead = false + return +} + +// bool can be decoded from bool, fixnum 0 or 1. +func (d *msgpackDecDriver) DecodeBool() (b bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == mpFalse || d.bd == 0 { + // b = false + } else if d.bd == mpTrue || d.bd == 1 { + b = true + } else { + d.d.errorf("Invalid single-byte value for bool: %s: %x", msgBadDesc, d.bd) + return + } + d.bdRead = false + return +} + +func (d *msgpackDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + if !d.bdRead { + d.readNextBd() + } + var clen int + // ignore isstring. Expect that the bytes may be found from msgpackContainerStr or msgpackContainerBin + if bd := d.bd; bd == mpBin8 || bd == mpBin16 || bd == mpBin32 { + clen = d.readContainerLen(msgpackContainerBin) + } else { + clen = d.readContainerLen(msgpackContainerStr) + } + // println("DecodeBytes: clen: ", clen) + d.bdRead = false + // bytes may be nil, so handle it. if nil, clen=-1. + if clen < 0 { + return nil + } + if zerocopy { + if d.br { + return d.r.readx(clen) + } else if len(bs) == 0 { + bs = d.b[:] + } + } + return decByteSlice(d.r, clen, bs) +} + +func (d *msgpackDecDriver) DecodeString() (s string) { + return string(d.DecodeBytes(d.b[:], true, true)) +} + +func (d *msgpackDecDriver) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *msgpackDecDriver) ContainerType() (vt valueType) { + bd := d.bd + if bd == mpNil { + return valueTypeNil + } else if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 || + (!d.h.RawToString && + (bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || (bd >= mpFixStrMin && bd <= mpFixStrMax))) { + return valueTypeBytes + } else if d.h.RawToString && + (bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || (bd >= mpFixStrMin && bd <= mpFixStrMax)) { + return valueTypeString + } else if bd == mpArray16 || bd == mpArray32 || (bd >= mpFixArrayMin && bd <= mpFixArrayMax) { + return valueTypeArray + } else if bd == mpMap16 || bd == mpMap32 || (bd >= mpFixMapMin && bd <= mpFixMapMax) { + return valueTypeMap + } else { + // d.d.errorf("isContainerType: unsupported parameter: %v", vt) + } + return valueTypeUnset +} + +func (d *msgpackDecDriver) TryDecodeAsNil() (v bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == mpNil { + d.bdRead = false + v = true + } + return +} + +func (d *msgpackDecDriver) readContainerLen(ct msgpackContainerType) (clen int) { + bd := d.bd + if bd == mpNil { + clen = -1 // to represent nil + } else if bd == ct.b8 { + clen = int(d.r.readn1()) + } else if bd == ct.b16 { + clen = int(bigen.Uint16(d.r.readx(2))) + } else if bd == ct.b32 { + clen = int(bigen.Uint32(d.r.readx(4))) + } else if (ct.bFixMin & bd) == ct.bFixMin { + clen = int(ct.bFixMin ^ bd) + } else { + d.d.errorf("readContainerLen: %s: hex: %x, decimal: %d", msgBadDesc, bd, bd) + return + } + d.bdRead = false + return +} + +func (d *msgpackDecDriver) ReadMapStart() int { + return d.readContainerLen(msgpackContainerMap) +} + +func (d *msgpackDecDriver) ReadArrayStart() int { + return d.readContainerLen(msgpackContainerList) +} + +func (d *msgpackDecDriver) readExtLen() (clen int) { + switch d.bd { + case mpNil: + clen = -1 // to represent nil + case mpFixExt1: + clen = 1 + case mpFixExt2: + clen = 2 + case mpFixExt4: + clen = 4 + case mpFixExt8: + clen = 8 + case mpFixExt16: + clen = 16 + case mpExt8: + clen = int(d.r.readn1()) + case mpExt16: + clen = int(bigen.Uint16(d.r.readx(2))) + case mpExt32: + clen = int(bigen.Uint32(d.r.readx(4))) + default: + d.d.errorf("decoding ext bytes: found unexpected byte: %x", d.bd) + return + } + return +} + +func (d *msgpackDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { + if xtag > 0xff { + d.d.errorf("decodeExt: tag must be <= 0xff; got: %v", xtag) + return + } + realxtag1, xbs := d.decodeExtV(ext != nil, uint8(xtag)) + realxtag = uint64(realxtag1) + if ext == nil { + re := rv.(*RawExt) + re.Tag = realxtag + re.Data = detachZeroCopyBytes(d.br, re.Data, xbs) + } else { + ext.ReadExt(rv, xbs) + } + return +} + +func (d *msgpackDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []byte) { + if !d.bdRead { + d.readNextBd() + } + xbd := d.bd + if xbd == mpBin8 || xbd == mpBin16 || xbd == mpBin32 { + xbs = d.DecodeBytes(nil, false, true) + } else if xbd == mpStr8 || xbd == mpStr16 || xbd == mpStr32 || + (xbd >= mpFixStrMin && xbd <= mpFixStrMax) { + xbs = d.DecodeBytes(nil, true, true) + } else { + clen := d.readExtLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", xtag, tag) + return + } + xbs = d.r.readx(clen) + } + d.bdRead = false + return +} + +//-------------------------------------------------- + +//MsgpackHandle is a Handle for the Msgpack Schema-Free Encoding Format. +type MsgpackHandle struct { + BasicHandle + + // RawToString controls how raw bytes are decoded into a nil interface{}. + RawToString bool + + // WriteExt flag supports encoding configured extensions with extension tags. + // It also controls whether other elements of the new spec are encoded (ie Str8). + // + // With WriteExt=false, configured extensions are serialized as raw bytes + // and Str8 is not encoded. + // + // A stream can still be decoded into a typed value, provided an appropriate value + // is provided, but the type cannot be inferred from the stream. If no appropriate + // type is provided (e.g. decoding into a nil interface{}), you get back + // a []byte or string based on the setting of RawToString. + WriteExt bool + binaryEncodingType +} + +func (h *MsgpackHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, &setExtWrapper{b: ext}) +} + +func (h *MsgpackHandle) newEncDriver(e *Encoder) encDriver { + return &msgpackEncDriver{e: e, w: e.w, h: h} +} + +func (h *MsgpackHandle) newDecDriver(d *Decoder) decDriver { + return &msgpackDecDriver{d: d, r: d.r, h: h, br: d.bytes} +} + +func (e *msgpackEncDriver) reset() { + e.w = e.e.w +} + +func (d *msgpackDecDriver) reset() { + d.r = d.d.r +} + +//-------------------------------------------------- + +type msgpackSpecRpcCodec struct { + rpcCodec +} + +// /////////////// Spec RPC Codec /////////////////// +func (c *msgpackSpecRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error { + // WriteRequest can write to both a Go service, and other services that do + // not abide by the 1 argument rule of a Go service. + // We discriminate based on if the body is a MsgpackSpecRpcMultiArgs + var bodyArr []interface{} + if m, ok := body.(MsgpackSpecRpcMultiArgs); ok { + bodyArr = ([]interface{})(m) + } else { + bodyArr = []interface{}{body} + } + r2 := []interface{}{0, uint32(r.Seq), r.ServiceMethod, bodyArr} + return c.write(r2, nil, false, true) +} + +func (c *msgpackSpecRpcCodec) WriteResponse(r *rpc.Response, body interface{}) error { + var moe interface{} + if r.Error != "" { + moe = r.Error + } + if moe != nil && body != nil { + body = nil + } + r2 := []interface{}{1, uint32(r.Seq), moe, body} + return c.write(r2, nil, false, true) +} + +func (c *msgpackSpecRpcCodec) ReadResponseHeader(r *rpc.Response) error { + return c.parseCustomHeader(1, &r.Seq, &r.Error) +} + +func (c *msgpackSpecRpcCodec) ReadRequestHeader(r *rpc.Request) error { + return c.parseCustomHeader(0, &r.Seq, &r.ServiceMethod) +} + +func (c *msgpackSpecRpcCodec) ReadRequestBody(body interface{}) error { + if body == nil { // read and discard + return c.read(nil) + } + bodyArr := []interface{}{body} + return c.read(&bodyArr) +} + +func (c *msgpackSpecRpcCodec) parseCustomHeader(expectTypeByte byte, msgid *uint64, methodOrError *string) (err error) { + + if c.isClosed() { + return io.EOF + } + + // We read the response header by hand + // so that the body can be decoded on its own from the stream at a later time. + + const fia byte = 0x94 //four item array descriptor value + // Not sure why the panic of EOF is swallowed above. + // if bs1 := c.dec.r.readn1(); bs1 != fia { + // err = fmt.Errorf("Unexpected value for array descriptor: Expecting %v. Received %v", fia, bs1) + // return + // } + var b byte + b, err = c.br.ReadByte() + if err != nil { + return + } + if b != fia { + err = fmt.Errorf("Unexpected value for array descriptor: Expecting %v. Received %v", fia, b) + return + } + + if err = c.read(&b); err != nil { + return + } + if b != expectTypeByte { + err = fmt.Errorf("Unexpected byte descriptor in header. Expecting %v. Received %v", expectTypeByte, b) + return + } + if err = c.read(msgid); err != nil { + return + } + if err = c.read(methodOrError); err != nil { + return + } + return +} + +//-------------------------------------------------- + +// msgpackSpecRpc is the implementation of Rpc that uses custom communication protocol +// as defined in the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md +type msgpackSpecRpc struct{} + +// MsgpackSpecRpc implements Rpc using the communication protocol defined in +// the msgpack spec at https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md . +// Its methods (ServerCodec and ClientCodec) return values that implement RpcCodecBuffered. +var MsgpackSpecRpc msgpackSpecRpc + +func (x msgpackSpecRpc) ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec { + return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +} + +func (x msgpackSpecRpc) ClientCodec(conn io.ReadWriteCloser, h Handle) rpc.ClientCodec { + return &msgpackSpecRpcCodec{newRPCCodec(conn, h)} +} + +var _ decDriver = (*msgpackDecDriver)(nil) +var _ encDriver = (*msgpackEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/noop.go b/vendor/github.com/ugorji/go/codec/noop.go new file mode 100644 index 0000000000..cfee3d084d --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/noop.go @@ -0,0 +1,213 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "math/rand" + "time" +) + +// NoopHandle returns a no-op handle. It basically does nothing. +// It is only useful for benchmarking, as it gives an idea of the +// overhead from the codec framework. +// +// LIBRARY USERS: *** DO NOT USE *** +func NoopHandle(slen int) *noopHandle { + h := noopHandle{} + h.rand = rand.New(rand.NewSource(time.Now().UnixNano())) + h.B = make([][]byte, slen) + h.S = make([]string, slen) + for i := 0; i < len(h.S); i++ { + b := make([]byte, i+1) + for j := 0; j < len(b); j++ { + b[j] = 'a' + byte(i) + } + h.B[i] = b + h.S[i] = string(b) + } + return &h +} + +// noopHandle does nothing. +// It is used to simulate the overhead of the codec framework. +type noopHandle struct { + BasicHandle + binaryEncodingType + noopDrv // noopDrv is unexported here, so we can get a copy of it when needed. +} + +type noopDrv struct { + d *Decoder + e *Encoder + i int + S []string + B [][]byte + mks []bool // stack. if map (true), else if array (false) + mk bool // top of stack. what container are we on? map or array? + ct valueType // last response for IsContainerType. + cb int // counter for ContainerType + rand *rand.Rand +} + +func (h *noopDrv) r(v int) int { return h.rand.Intn(v) } +func (h *noopDrv) m(v int) int { h.i++; return h.i % v } + +func (h *noopDrv) newEncDriver(e *Encoder) encDriver { h.e = e; return h } +func (h *noopDrv) newDecDriver(d *Decoder) decDriver { h.d = d; return h } + +func (h *noopDrv) reset() {} +func (h *noopDrv) uncacheRead() {} + +// --- encDriver + +// stack functions (for map and array) +func (h *noopDrv) start(b bool) { + // println("start", len(h.mks)+1) + h.mks = append(h.mks, b) + h.mk = b +} +func (h *noopDrv) end() { + // println("end: ", len(h.mks)-1) + h.mks = h.mks[:len(h.mks)-1] + if len(h.mks) > 0 { + h.mk = h.mks[len(h.mks)-1] + } else { + h.mk = false + } +} + +func (h *noopDrv) EncodeBuiltin(rt uintptr, v interface{}) {} +func (h *noopDrv) EncodeNil() {} +func (h *noopDrv) EncodeInt(i int64) {} +func (h *noopDrv) EncodeUint(i uint64) {} +func (h *noopDrv) EncodeBool(b bool) {} +func (h *noopDrv) EncodeFloat32(f float32) {} +func (h *noopDrv) EncodeFloat64(f float64) {} +func (h *noopDrv) EncodeRawExt(re *RawExt, e *Encoder) {} +func (h *noopDrv) EncodeArrayStart(length int) { h.start(true) } +func (h *noopDrv) EncodeMapStart(length int) { h.start(false) } +func (h *noopDrv) EncodeEnd() { h.end() } + +func (h *noopDrv) EncodeString(c charEncoding, v string) {} +func (h *noopDrv) EncodeSymbol(v string) {} +func (h *noopDrv) EncodeStringBytes(c charEncoding, v []byte) {} + +func (h *noopDrv) EncodeExt(rv interface{}, xtag uint64, ext Ext, e *Encoder) {} + +// ---- decDriver +func (h *noopDrv) initReadNext() {} +func (h *noopDrv) CheckBreak() bool { return false } +func (h *noopDrv) IsBuiltinType(rt uintptr) bool { return false } +func (h *noopDrv) DecodeBuiltin(rt uintptr, v interface{}) {} +func (h *noopDrv) DecodeInt(bitsize uint8) (i int64) { return int64(h.m(15)) } +func (h *noopDrv) DecodeUint(bitsize uint8) (ui uint64) { return uint64(h.m(35)) } +func (h *noopDrv) DecodeFloat(chkOverflow32 bool) (f float64) { return float64(h.m(95)) } +func (h *noopDrv) DecodeBool() (b bool) { return h.m(2) == 0 } +func (h *noopDrv) DecodeString() (s string) { return h.S[h.m(8)] } + +// func (h *noopDrv) DecodeStringAsBytes(bs []byte) []byte { return h.DecodeBytes(bs) } + +func (h *noopDrv) DecodeBytes(bs []byte, isstring, zerocopy bool) []byte { return h.B[h.m(len(h.B))] } + +func (h *noopDrv) ReadEnd() { h.end() } + +// toggle map/slice +func (h *noopDrv) ReadMapStart() int { h.start(true); return h.m(10) } +func (h *noopDrv) ReadArrayStart() int { h.start(false); return h.m(10) } + +func (h *noopDrv) ContainerType() (vt valueType) { + // return h.m(2) == 0 + // handle kStruct, which will bomb is it calls this and doesn't get back a map or array. + // consequently, if the return value is not map or array, reset it to one of them based on h.m(7) % 2 + // for kstruct: at least one out of every 2 times, return one of valueTypeMap or Array (else kstruct bombs) + // however, every 10th time it is called, we just return something else. + var vals = [...]valueType{valueTypeArray, valueTypeMap} + // ------------ TAKE ------------ + // if h.cb%2 == 0 { + // if h.ct == valueTypeMap || h.ct == valueTypeArray { + // } else { + // h.ct = vals[h.m(2)] + // } + // } else if h.cb%5 == 0 { + // h.ct = valueType(h.m(8)) + // } else { + // h.ct = vals[h.m(2)] + // } + // ------------ TAKE ------------ + // if h.cb%16 == 0 { + // h.ct = valueType(h.cb % 8) + // } else { + // h.ct = vals[h.cb%2] + // } + h.ct = vals[h.cb%2] + h.cb++ + return h.ct + + // if h.ct == valueTypeNil || h.ct == valueTypeString || h.ct == valueTypeBytes { + // return h.ct + // } + // return valueTypeUnset + // TODO: may need to tweak this so it works. + // if h.ct == valueTypeMap && vt == valueTypeArray || h.ct == valueTypeArray && vt == valueTypeMap { + // h.cb = !h.cb + // h.ct = vt + // return h.cb + // } + // // go in a loop and check it. + // h.ct = vt + // h.cb = h.m(7) == 0 + // return h.cb +} +func (h *noopDrv) TryDecodeAsNil() bool { + if h.mk { + return false + } else { + return h.m(8) == 0 + } +} +func (h *noopDrv) DecodeExt(rv interface{}, xtag uint64, ext Ext) uint64 { + return 0 +} + +func (h *noopDrv) DecodeNaked() { + // use h.r (random) not h.m() because h.m() could cause the same value to be given. + var sk int + if h.mk { + // if mapkey, do not support values of nil OR bytes, array, map or rawext + sk = h.r(7) + 1 + } else { + sk = h.r(12) + } + n := &h.d.n + switch sk { + case 0: + n.v = valueTypeNil + case 1: + n.v, n.b = valueTypeBool, false + case 2: + n.v, n.b = valueTypeBool, true + case 3: + n.v, n.i = valueTypeInt, h.DecodeInt(64) + case 4: + n.v, n.u = valueTypeUint, h.DecodeUint(64) + case 5: + n.v, n.f = valueTypeFloat, h.DecodeFloat(true) + case 6: + n.v, n.f = valueTypeFloat, h.DecodeFloat(false) + case 7: + n.v, n.s = valueTypeString, h.DecodeString() + case 8: + n.v, n.l = valueTypeBytes, h.B[h.m(len(h.B))] + case 9: + n.v = valueTypeArray + case 10: + n.v = valueTypeMap + default: + n.v = valueTypeExt + n.u = h.DecodeUint(64) + n.l = h.B[h.m(len(h.B))] + } + h.ct = n.v + return +} diff --git a/vendor/github.com/ugorji/go/codec/prebuild.go b/vendor/github.com/ugorji/go/codec/prebuild.go new file mode 100644 index 0000000000..2353263e88 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/prebuild.go @@ -0,0 +1,3 @@ +package codec + +//go:generate bash prebuild.sh diff --git a/vendor/github.com/ugorji/go/codec/rpc.go b/vendor/github.com/ugorji/go/codec/rpc.go new file mode 100644 index 0000000000..dad53d0c61 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/rpc.go @@ -0,0 +1,180 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "bufio" + "io" + "net/rpc" + "sync" +) + +// rpcEncodeTerminator allows a handler specify a []byte terminator to send after each Encode. +// +// Some codecs like json need to put a space after each encoded value, to serve as a +// delimiter for things like numbers (else json codec will continue reading till EOF). +type rpcEncodeTerminator interface { + rpcEncodeTerminate() []byte +} + +// Rpc provides a rpc Server or Client Codec for rpc communication. +type Rpc interface { + ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec + ClientCodec(conn io.ReadWriteCloser, h Handle) rpc.ClientCodec +} + +// RpcCodecBuffered allows access to the underlying bufio.Reader/Writer +// used by the rpc connection. It accomodates use-cases where the connection +// should be used by rpc and non-rpc functions, e.g. streaming a file after +// sending an rpc response. +type RpcCodecBuffered interface { + BufferedReader() *bufio.Reader + BufferedWriter() *bufio.Writer +} + +// ------------------------------------- + +// rpcCodec defines the struct members and common methods. +type rpcCodec struct { + rwc io.ReadWriteCloser + dec *Decoder + enc *Encoder + bw *bufio.Writer + br *bufio.Reader + mu sync.Mutex + h Handle + + cls bool + clsmu sync.RWMutex +} + +func newRPCCodec(conn io.ReadWriteCloser, h Handle) rpcCodec { + bw := bufio.NewWriter(conn) + br := bufio.NewReader(conn) + return rpcCodec{ + rwc: conn, + bw: bw, + br: br, + enc: NewEncoder(bw, h), + dec: NewDecoder(br, h), + h: h, + } +} + +func (c *rpcCodec) BufferedReader() *bufio.Reader { + return c.br +} + +func (c *rpcCodec) BufferedWriter() *bufio.Writer { + return c.bw +} + +func (c *rpcCodec) write(obj1, obj2 interface{}, writeObj2, doFlush bool) (err error) { + if c.isClosed() { + return io.EOF + } + if err = c.enc.Encode(obj1); err != nil { + return + } + t, tOk := c.h.(rpcEncodeTerminator) + if tOk { + c.bw.Write(t.rpcEncodeTerminate()) + } + if writeObj2 { + if err = c.enc.Encode(obj2); err != nil { + return + } + if tOk { + c.bw.Write(t.rpcEncodeTerminate()) + } + } + if doFlush { + return c.bw.Flush() + } + return +} + +func (c *rpcCodec) read(obj interface{}) (err error) { + if c.isClosed() { + return io.EOF + } + //If nil is passed in, we should still attempt to read content to nowhere. + if obj == nil { + var obj2 interface{} + return c.dec.Decode(&obj2) + } + return c.dec.Decode(obj) +} + +func (c *rpcCodec) isClosed() bool { + c.clsmu.RLock() + x := c.cls + c.clsmu.RUnlock() + return x +} + +func (c *rpcCodec) Close() error { + if c.isClosed() { + return io.EOF + } + c.clsmu.Lock() + c.cls = true + c.clsmu.Unlock() + return c.rwc.Close() +} + +func (c *rpcCodec) ReadResponseBody(body interface{}) error { + return c.read(body) +} + +// ------------------------------------- + +type goRpcCodec struct { + rpcCodec +} + +func (c *goRpcCodec) WriteRequest(r *rpc.Request, body interface{}) error { + // Must protect for concurrent access as per API + c.mu.Lock() + defer c.mu.Unlock() + return c.write(r, body, true, true) +} + +func (c *goRpcCodec) WriteResponse(r *rpc.Response, body interface{}) error { + c.mu.Lock() + defer c.mu.Unlock() + return c.write(r, body, true, true) +} + +func (c *goRpcCodec) ReadResponseHeader(r *rpc.Response) error { + return c.read(r) +} + +func (c *goRpcCodec) ReadRequestHeader(r *rpc.Request) error { + return c.read(r) +} + +func (c *goRpcCodec) ReadRequestBody(body interface{}) error { + return c.read(body) +} + +// ------------------------------------- + +// goRpc is the implementation of Rpc that uses the communication protocol +// as defined in net/rpc package. +type goRpc struct{} + +// GoRpc implements Rpc using the communication protocol defined in net/rpc package. +// Its methods (ServerCodec and ClientCodec) return values that implement RpcCodecBuffered. +var GoRpc goRpc + +func (x goRpc) ServerCodec(conn io.ReadWriteCloser, h Handle) rpc.ServerCodec { + return &goRpcCodec{newRPCCodec(conn, h)} +} + +func (x goRpc) ClientCodec(conn io.ReadWriteCloser, h Handle) rpc.ClientCodec { + return &goRpcCodec{newRPCCodec(conn, h)} +} + +var _ RpcCodecBuffered = (*rpcCodec)(nil) // ensure *rpcCodec implements RpcCodecBuffered diff --git a/vendor/github.com/ugorji/go/codec/simple.go b/vendor/github.com/ugorji/go/codec/simple.go new file mode 100644 index 0000000000..c150496509 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/simple.go @@ -0,0 +1,518 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "math" + "reflect" +) + +const ( + _ uint8 = iota + simpleVdNil = 1 + simpleVdFalse = 2 + simpleVdTrue = 3 + simpleVdFloat32 = 4 + simpleVdFloat64 = 5 + + // each lasts for 4 (ie n, n+1, n+2, n+3) + simpleVdPosInt = 8 + simpleVdNegInt = 12 + + // containers: each lasts for 4 (ie n, n+1, n+2, ... n+7) + simpleVdString = 216 + simpleVdByteArray = 224 + simpleVdArray = 232 + simpleVdMap = 240 + simpleVdExt = 248 +) + +type simpleEncDriver struct { + noBuiltInTypes + encNoSeparator + e *Encoder + h *SimpleHandle + w encWriter + b [8]byte +} + +func (e *simpleEncDriver) EncodeNil() { + e.w.writen1(simpleVdNil) +} + +func (e *simpleEncDriver) EncodeBool(b bool) { + if b { + e.w.writen1(simpleVdTrue) + } else { + e.w.writen1(simpleVdFalse) + } +} + +func (e *simpleEncDriver) EncodeFloat32(f float32) { + e.w.writen1(simpleVdFloat32) + bigenHelper{e.b[:4], e.w}.writeUint32(math.Float32bits(f)) +} + +func (e *simpleEncDriver) EncodeFloat64(f float64) { + e.w.writen1(simpleVdFloat64) + bigenHelper{e.b[:8], e.w}.writeUint64(math.Float64bits(f)) +} + +func (e *simpleEncDriver) EncodeInt(v int64) { + if v < 0 { + e.encUint(uint64(-v), simpleVdNegInt) + } else { + e.encUint(uint64(v), simpleVdPosInt) + } +} + +func (e *simpleEncDriver) EncodeUint(v uint64) { + e.encUint(v, simpleVdPosInt) +} + +func (e *simpleEncDriver) encUint(v uint64, bd uint8) { + if v <= math.MaxUint8 { + e.w.writen2(bd, uint8(v)) + } else if v <= math.MaxUint16 { + e.w.writen1(bd + 1) + bigenHelper{e.b[:2], e.w}.writeUint16(uint16(v)) + } else if v <= math.MaxUint32 { + e.w.writen1(bd + 2) + bigenHelper{e.b[:4], e.w}.writeUint32(uint32(v)) + } else { // if v <= math.MaxUint64 { + e.w.writen1(bd + 3) + bigenHelper{e.b[:8], e.w}.writeUint64(v) + } +} + +func (e *simpleEncDriver) encLen(bd byte, length int) { + if length == 0 { + e.w.writen1(bd) + } else if length <= math.MaxUint8 { + e.w.writen1(bd + 1) + e.w.writen1(uint8(length)) + } else if length <= math.MaxUint16 { + e.w.writen1(bd + 2) + bigenHelper{e.b[:2], e.w}.writeUint16(uint16(length)) + } else if int64(length) <= math.MaxUint32 { + e.w.writen1(bd + 3) + bigenHelper{e.b[:4], e.w}.writeUint32(uint32(length)) + } else { + e.w.writen1(bd + 4) + bigenHelper{e.b[:8], e.w}.writeUint64(uint64(length)) + } +} + +func (e *simpleEncDriver) EncodeExt(rv interface{}, xtag uint64, ext Ext, _ *Encoder) { + bs := ext.WriteExt(rv) + if bs == nil { + e.EncodeNil() + return + } + e.encodeExtPreamble(uint8(xtag), len(bs)) + e.w.writeb(bs) +} + +func (e *simpleEncDriver) EncodeRawExt(re *RawExt, _ *Encoder) { + e.encodeExtPreamble(uint8(re.Tag), len(re.Data)) + e.w.writeb(re.Data) +} + +func (e *simpleEncDriver) encodeExtPreamble(xtag byte, length int) { + e.encLen(simpleVdExt, length) + e.w.writen1(xtag) +} + +func (e *simpleEncDriver) EncodeArrayStart(length int) { + e.encLen(simpleVdArray, length) +} + +func (e *simpleEncDriver) EncodeMapStart(length int) { + e.encLen(simpleVdMap, length) +} + +func (e *simpleEncDriver) EncodeString(c charEncoding, v string) { + e.encLen(simpleVdString, len(v)) + e.w.writestr(v) +} + +func (e *simpleEncDriver) EncodeSymbol(v string) { + e.EncodeString(c_UTF8, v) +} + +func (e *simpleEncDriver) EncodeStringBytes(c charEncoding, v []byte) { + e.encLen(simpleVdByteArray, len(v)) + e.w.writeb(v) +} + +//------------------------------------ + +type simpleDecDriver struct { + d *Decoder + h *SimpleHandle + r decReader + bdRead bool + bd byte + br bool // bytes reader + noBuiltInTypes + noStreamingCodec + decNoSeparator + b [scratchByteArrayLen]byte +} + +func (d *simpleDecDriver) readNextBd() { + d.bd = d.r.readn1() + d.bdRead = true +} + +func (d *simpleDecDriver) ContainerType() (vt valueType) { + if d.bd == simpleVdNil { + return valueTypeNil + } else if d.bd == simpleVdByteArray || d.bd == simpleVdByteArray+1 || + d.bd == simpleVdByteArray+2 || d.bd == simpleVdByteArray+3 || d.bd == simpleVdByteArray+4 { + return valueTypeBytes + } else if d.bd == simpleVdString || d.bd == simpleVdString+1 || + d.bd == simpleVdString+2 || d.bd == simpleVdString+3 || d.bd == simpleVdString+4 { + return valueTypeString + } else if d.bd == simpleVdArray || d.bd == simpleVdArray+1 || + d.bd == simpleVdArray+2 || d.bd == simpleVdArray+3 || d.bd == simpleVdArray+4 { + return valueTypeArray + } else if d.bd == simpleVdMap || d.bd == simpleVdMap+1 || + d.bd == simpleVdMap+2 || d.bd == simpleVdMap+3 || d.bd == simpleVdMap+4 { + return valueTypeMap + } else { + // d.d.errorf("isContainerType: unsupported parameter: %v", vt) + } + return valueTypeUnset +} + +func (d *simpleDecDriver) TryDecodeAsNil() bool { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdNil { + d.bdRead = false + return true + } + return false +} + +func (d *simpleDecDriver) decCheckInteger() (ui uint64, neg bool) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case simpleVdPosInt: + ui = uint64(d.r.readn1()) + case simpleVdPosInt + 1: + ui = uint64(bigen.Uint16(d.r.readx(2))) + case simpleVdPosInt + 2: + ui = uint64(bigen.Uint32(d.r.readx(4))) + case simpleVdPosInt + 3: + ui = uint64(bigen.Uint64(d.r.readx(8))) + case simpleVdNegInt: + ui = uint64(d.r.readn1()) + neg = true + case simpleVdNegInt + 1: + ui = uint64(bigen.Uint16(d.r.readx(2))) + neg = true + case simpleVdNegInt + 2: + ui = uint64(bigen.Uint32(d.r.readx(4))) + neg = true + case simpleVdNegInt + 3: + ui = uint64(bigen.Uint64(d.r.readx(8))) + neg = true + default: + d.d.errorf("decIntAny: Integer only valid from pos/neg integer1..8. Invalid descriptor: %v", d.bd) + return + } + // don't do this check, because callers may only want the unsigned value. + // if ui > math.MaxInt64 { + // d.d.errorf("decIntAny: Integer out of range for signed int64: %v", ui) + // return + // } + return +} + +func (d *simpleDecDriver) DecodeInt(bitsize uint8) (i int64) { + ui, neg := d.decCheckInteger() + i, overflow := chkOvf.SignedInt(ui) + if overflow { + d.d.errorf("simple: overflow converting %v to signed integer", ui) + return + } + if neg { + i = -i + } + if chkOvf.Int(i, bitsize) { + d.d.errorf("simple: overflow integer: %v", i) + return + } + d.bdRead = false + return +} + +func (d *simpleDecDriver) DecodeUint(bitsize uint8) (ui uint64) { + ui, neg := d.decCheckInteger() + if neg { + d.d.errorf("Assigning negative signed value to unsigned type") + return + } + if chkOvf.Uint(ui, bitsize) { + d.d.errorf("simple: overflow integer: %v", ui) + return + } + d.bdRead = false + return +} + +func (d *simpleDecDriver) DecodeFloat(chkOverflow32 bool) (f float64) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdFloat32 { + f = float64(math.Float32frombits(bigen.Uint32(d.r.readx(4)))) + } else if d.bd == simpleVdFloat64 { + f = math.Float64frombits(bigen.Uint64(d.r.readx(8))) + } else { + if d.bd >= simpleVdPosInt && d.bd <= simpleVdNegInt+3 { + f = float64(d.DecodeInt(64)) + } else { + d.d.errorf("Float only valid from float32/64: Invalid descriptor: %v", d.bd) + return + } + } + if chkOverflow32 && chkOvf.Float32(f) { + d.d.errorf("msgpack: float32 overflow: %v", f) + return + } + d.bdRead = false + return +} + +// bool can be decoded from bool only (single byte). +func (d *simpleDecDriver) DecodeBool() (b bool) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdTrue { + b = true + } else if d.bd == simpleVdFalse { + } else { + d.d.errorf("Invalid single-byte value for bool: %s: %x", msgBadDesc, d.bd) + return + } + d.bdRead = false + return +} + +func (d *simpleDecDriver) ReadMapStart() (length int) { + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriver) ReadArrayStart() (length int) { + d.bdRead = false + return d.decLen() +} + +func (d *simpleDecDriver) decLen() int { + switch d.bd % 8 { + case 0: + return 0 + case 1: + return int(d.r.readn1()) + case 2: + return int(bigen.Uint16(d.r.readx(2))) + case 3: + ui := uint64(bigen.Uint32(d.r.readx(4))) + if chkOvf.Uint(ui, intBitsize) { + d.d.errorf("simple: overflow integer: %v", ui) + return 0 + } + return int(ui) + case 4: + ui := bigen.Uint64(d.r.readx(8)) + if chkOvf.Uint(ui, intBitsize) { + d.d.errorf("simple: overflow integer: %v", ui) + return 0 + } + return int(ui) + } + d.d.errorf("decLen: Cannot read length: bd%8 must be in range 0..4. Got: %d", d.bd%8) + return -1 +} + +func (d *simpleDecDriver) DecodeString() (s string) { + return string(d.DecodeBytes(d.b[:], true, true)) +} + +func (d *simpleDecDriver) DecodeBytes(bs []byte, isstring, zerocopy bool) (bsOut []byte) { + if !d.bdRead { + d.readNextBd() + } + if d.bd == simpleVdNil { + d.bdRead = false + return + } + clen := d.decLen() + d.bdRead = false + if zerocopy { + if d.br { + return d.r.readx(clen) + } else if len(bs) == 0 { + bs = d.b[:] + } + } + return decByteSlice(d.r, clen, bs) +} + +func (d *simpleDecDriver) DecodeExt(rv interface{}, xtag uint64, ext Ext) (realxtag uint64) { + if xtag > 0xff { + d.d.errorf("decodeExt: tag must be <= 0xff; got: %v", xtag) + return + } + realxtag1, xbs := d.decodeExtV(ext != nil, uint8(xtag)) + realxtag = uint64(realxtag1) + if ext == nil { + re := rv.(*RawExt) + re.Tag = realxtag + re.Data = detachZeroCopyBytes(d.br, re.Data, xbs) + } else { + ext.ReadExt(rv, xbs) + } + return +} + +func (d *simpleDecDriver) decodeExtV(verifyTag bool, tag byte) (xtag byte, xbs []byte) { + if !d.bdRead { + d.readNextBd() + } + switch d.bd { + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + l := d.decLen() + xtag = d.r.readn1() + if verifyTag && xtag != tag { + d.d.errorf("Wrong extension tag. Got %b. Expecting: %v", xtag, tag) + return + } + xbs = d.r.readx(l) + case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + xbs = d.DecodeBytes(nil, false, true) + default: + d.d.errorf("Invalid d.bd for extensions (Expecting extensions or byte array). Got: 0x%x", d.bd) + return + } + d.bdRead = false + return +} + +func (d *simpleDecDriver) DecodeNaked() { + if !d.bdRead { + d.readNextBd() + } + + n := &d.d.n + var decodeFurther bool + + switch d.bd { + case simpleVdNil: + n.v = valueTypeNil + case simpleVdFalse: + n.v = valueTypeBool + n.b = false + case simpleVdTrue: + n.v = valueTypeBool + n.b = true + case simpleVdPosInt, simpleVdPosInt + 1, simpleVdPosInt + 2, simpleVdPosInt + 3: + if d.h.SignedInteger { + n.v = valueTypeInt + n.i = d.DecodeInt(64) + } else { + n.v = valueTypeUint + n.u = d.DecodeUint(64) + } + case simpleVdNegInt, simpleVdNegInt + 1, simpleVdNegInt + 2, simpleVdNegInt + 3: + n.v = valueTypeInt + n.i = d.DecodeInt(64) + case simpleVdFloat32: + n.v = valueTypeFloat + n.f = d.DecodeFloat(true) + case simpleVdFloat64: + n.v = valueTypeFloat + n.f = d.DecodeFloat(false) + case simpleVdString, simpleVdString + 1, simpleVdString + 2, simpleVdString + 3, simpleVdString + 4: + n.v = valueTypeString + n.s = d.DecodeString() + case simpleVdByteArray, simpleVdByteArray + 1, simpleVdByteArray + 2, simpleVdByteArray + 3, simpleVdByteArray + 4: + n.v = valueTypeBytes + n.l = d.DecodeBytes(nil, false, false) + case simpleVdExt, simpleVdExt + 1, simpleVdExt + 2, simpleVdExt + 3, simpleVdExt + 4: + n.v = valueTypeExt + l := d.decLen() + n.u = uint64(d.r.readn1()) + n.l = d.r.readx(l) + case simpleVdArray, simpleVdArray + 1, simpleVdArray + 2, simpleVdArray + 3, simpleVdArray + 4: + n.v = valueTypeArray + decodeFurther = true + case simpleVdMap, simpleVdMap + 1, simpleVdMap + 2, simpleVdMap + 3, simpleVdMap + 4: + n.v = valueTypeMap + decodeFurther = true + default: + d.d.errorf("decodeNaked: Unrecognized d.bd: 0x%x", d.bd) + } + + if !decodeFurther { + d.bdRead = false + } + return +} + +//------------------------------------ + +// SimpleHandle is a Handle for a very simple encoding format. +// +// simple is a simplistic codec similar to binc, but not as compact. +// - Encoding of a value is always preceeded by the descriptor byte (bd) +// - True, false, nil are encoded fully in 1 byte (the descriptor) +// - Integers (intXXX, uintXXX) are encoded in 1, 2, 4 or 8 bytes (plus a descriptor byte). +// There are positive (uintXXX and intXXX >= 0) and negative (intXXX < 0) integers. +// - Floats are encoded in 4 or 8 bytes (plus a descriptor byte) +// - Lenght of containers (strings, bytes, array, map, extensions) +// are encoded in 0, 1, 2, 4 or 8 bytes. +// Zero-length containers have no length encoded. +// For others, the number of bytes is given by pow(2, bd%3) +// - maps are encoded as [bd] [length] [[key][value]]... +// - arrays are encoded as [bd] [length] [value]... +// - extensions are encoded as [bd] [length] [tag] [byte]... +// - strings/bytearrays are encoded as [bd] [length] [byte]... +// +// The full spec will be published soon. +type SimpleHandle struct { + BasicHandle + binaryEncodingType +} + +func (h *SimpleHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) { + return h.SetExt(rt, tag, &setExtWrapper{b: ext}) +} + +func (h *SimpleHandle) newEncDriver(e *Encoder) encDriver { + return &simpleEncDriver{e: e, w: e.w, h: h} +} + +func (h *SimpleHandle) newDecDriver(d *Decoder) decDriver { + return &simpleDecDriver{d: d, r: d.r, h: h, br: d.bytes} +} + +func (e *simpleEncDriver) reset() { + e.w = e.e.w +} + +func (d *simpleDecDriver) reset() { + d.r = d.d.r +} + +var _ decDriver = (*simpleDecDriver)(nil) +var _ encDriver = (*simpleEncDriver)(nil) diff --git a/vendor/github.com/ugorji/go/codec/test.py b/vendor/github.com/ugorji/go/codec/test.py new file mode 100755 index 0000000000..dfe3b0c9a0 --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/test.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python + +# This will create golden files in a directory passed to it. +# A Test calls this internally to create the golden files +# So it can process them (so we don't have to checkin the files). + +# Ensure msgpack-python and cbor are installed first, using: +# sudo apt-get install python-dev +# sudo apt-get install python-pip +# pip install --user msgpack-python msgpack-rpc-python cbor + +import cbor, msgpack, msgpackrpc, sys, os, threading + +def get_test_data_list(): + # get list with all primitive types, and a combo type + l0 = [ + -8, + -1616, + -32323232, + -6464646464646464, + 192, + 1616, + 32323232, + 6464646464646464, + 192, + -3232.0, + -6464646464.0, + 3232.0, + 6464646464.0, + False, + True, + None, + u"someday", + u"", + u"bytestring", + 1328176922000002000, + -2206187877999998000, + 270, + -2013855847999995777, + #-6795364578871345152, + ] + l1 = [ + { "true": True, + "false": False }, + { "true": "True", + "false": False, + "uint16(1616)": 1616 }, + { "list": [1616, 32323232, True, -3232.0, {"TRUE":True, "FALSE":False}, [True, False] ], + "int32":32323232, "bool": True, + "LONG STRING": "123456789012345678901234567890123456789012345678901234567890", + "SHORT STRING": "1234567890" }, + { True: "true", 8: False, "false": 0 } + ] + + l = [] + l.extend(l0) + l.append(l0) + l.extend(l1) + return l + +def build_test_data(destdir): + l = get_test_data_list() + for i in range(len(l)): + # packer = msgpack.Packer() + serialized = msgpack.dumps(l[i]) + f = open(os.path.join(destdir, str(i) + '.msgpack.golden'), 'wb') + f.write(serialized) + f.close() + serialized = cbor.dumps(l[i]) + f = open(os.path.join(destdir, str(i) + '.cbor.golden'), 'wb') + f.write(serialized) + f.close() + +def doRpcServer(port, stopTimeSec): + class EchoHandler(object): + def Echo123(self, msg1, msg2, msg3): + return ("1:%s 2:%s 3:%s" % (msg1, msg2, msg3)) + def EchoStruct(self, msg): + return ("%s" % msg) + + addr = msgpackrpc.Address('localhost', port) + server = msgpackrpc.Server(EchoHandler()) + server.listen(addr) + # run thread to stop it after stopTimeSec seconds if > 0 + if stopTimeSec > 0: + def myStopRpcServer(): + server.stop() + t = threading.Timer(stopTimeSec, myStopRpcServer) + t.start() + server.start() + +def doRpcClientToPythonSvc(port): + address = msgpackrpc.Address('localhost', port) + client = msgpackrpc.Client(address, unpack_encoding='utf-8') + print client.call("Echo123", "A1", "B2", "C3") + print client.call("EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"}) + +def doRpcClientToGoSvc(port): + # print ">>>> port: ", port, " <<<<<" + address = msgpackrpc.Address('localhost', port) + client = msgpackrpc.Client(address, unpack_encoding='utf-8') + print client.call("TestRpcInt.Echo123", ["A1", "B2", "C3"]) + print client.call("TestRpcInt.EchoStruct", {"A" :"Aa", "B":"Bb", "C":"Cc"}) + +def doMain(args): + if len(args) == 2 and args[0] == "testdata": + build_test_data(args[1]) + elif len(args) == 3 and args[0] == "rpc-server": + doRpcServer(int(args[1]), int(args[2])) + elif len(args) == 2 and args[0] == "rpc-client-python-service": + doRpcClientToPythonSvc(int(args[1])) + elif len(args) == 2 and args[0] == "rpc-client-go-service": + doRpcClientToGoSvc(int(args[1])) + else: + print("Usage: test.py " + + "[testdata|rpc-server|rpc-client-python-service|rpc-client-go-service] ...") + +if __name__ == "__main__": + doMain(sys.argv[1:]) + diff --git a/vendor/github.com/ugorji/go/codec/time.go b/vendor/github.com/ugorji/go/codec/time.go new file mode 100644 index 0000000000..fc4c63e1de --- /dev/null +++ b/vendor/github.com/ugorji/go/codec/time.go @@ -0,0 +1,222 @@ +// Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved. +// Use of this source code is governed by a MIT license found in the LICENSE file. + +package codec + +import ( + "fmt" + "time" +) + +var ( + timeDigits = [...]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} +) + +type timeExt struct{} + +func (x timeExt) WriteExt(v interface{}) (bs []byte) { + switch v2 := v.(type) { + case time.Time: + bs = encodeTime(v2) + case *time.Time: + bs = encodeTime(*v2) + default: + panic(fmt.Errorf("unsupported format for time conversion: expecting time.Time; got %T", v2)) + } + return +} +func (x timeExt) ReadExt(v interface{}, bs []byte) { + tt, err := decodeTime(bs) + if err != nil { + panic(err) + } + *(v.(*time.Time)) = tt +} + +func (x timeExt) ConvertExt(v interface{}) interface{} { + return x.WriteExt(v) +} +func (x timeExt) UpdateExt(v interface{}, src interface{}) { + x.ReadExt(v, src.([]byte)) +} + +// EncodeTime encodes a time.Time as a []byte, including +// information on the instant in time and UTC offset. +// +// Format Description +// +// A timestamp is composed of 3 components: +// +// - secs: signed integer representing seconds since unix epoch +// - nsces: unsigned integer representing fractional seconds as a +// nanosecond offset within secs, in the range 0 <= nsecs < 1e9 +// - tz: signed integer representing timezone offset in minutes east of UTC, +// and a dst (daylight savings time) flag +// +// When encoding a timestamp, the first byte is the descriptor, which +// defines which components are encoded and how many bytes are used to +// encode secs and nsecs components. *If secs/nsecs is 0 or tz is UTC, it +// is not encoded in the byte array explicitly*. +// +// Descriptor 8 bits are of the form `A B C DDD EE`: +// A: Is secs component encoded? 1 = true +// B: Is nsecs component encoded? 1 = true +// C: Is tz component encoded? 1 = true +// DDD: Number of extra bytes for secs (range 0-7). +// If A = 1, secs encoded in DDD+1 bytes. +// If A = 0, secs is not encoded, and is assumed to be 0. +// If A = 1, then we need at least 1 byte to encode secs. +// DDD says the number of extra bytes beyond that 1. +// E.g. if DDD=0, then secs is represented in 1 byte. +// if DDD=2, then secs is represented in 3 bytes. +// EE: Number of extra bytes for nsecs (range 0-3). +// If B = 1, nsecs encoded in EE+1 bytes (similar to secs/DDD above) +// +// Following the descriptor bytes, subsequent bytes are: +// +// secs component encoded in `DDD + 1` bytes (if A == 1) +// nsecs component encoded in `EE + 1` bytes (if B == 1) +// tz component encoded in 2 bytes (if C == 1) +// +// secs and nsecs components are integers encoded in a BigEndian +// 2-complement encoding format. +// +// tz component is encoded as 2 bytes (16 bits). Most significant bit 15 to +// Least significant bit 0 are described below: +// +// Timezone offset has a range of -12:00 to +14:00 (ie -720 to +840 minutes). +// Bit 15 = have\_dst: set to 1 if we set the dst flag. +// Bit 14 = dst\_on: set to 1 if dst is in effect at the time, or 0 if not. +// Bits 13..0 = timezone offset in minutes. It is a signed integer in Big Endian format. +// +func encodeTime(t time.Time) []byte { + //t := rv.Interface().(time.Time) + tsecs, tnsecs := t.Unix(), t.Nanosecond() + var ( + bd byte + btmp [8]byte + bs [16]byte + i int = 1 + ) + l := t.Location() + if l == time.UTC { + l = nil + } + if tsecs != 0 { + bd = bd | 0x80 + bigen.PutUint64(btmp[:], uint64(tsecs)) + f := pruneSignExt(btmp[:], tsecs >= 0) + bd = bd | (byte(7-f) << 2) + copy(bs[i:], btmp[f:]) + i = i + (8 - f) + } + if tnsecs != 0 { + bd = bd | 0x40 + bigen.PutUint32(btmp[:4], uint32(tnsecs)) + f := pruneSignExt(btmp[:4], true) + bd = bd | byte(3-f) + copy(bs[i:], btmp[f:4]) + i = i + (4 - f) + } + if l != nil { + bd = bd | 0x20 + // Note that Go Libs do not give access to dst flag. + _, zoneOffset := t.Zone() + //zoneName, zoneOffset := t.Zone() + zoneOffset /= 60 + z := uint16(zoneOffset) + bigen.PutUint16(btmp[:2], z) + // clear dst flags + bs[i] = btmp[0] & 0x3f + bs[i+1] = btmp[1] + i = i + 2 + } + bs[0] = bd + return bs[0:i] +} + +// DecodeTime decodes a []byte into a time.Time. +func decodeTime(bs []byte) (tt time.Time, err error) { + bd := bs[0] + var ( + tsec int64 + tnsec uint32 + tz uint16 + i byte = 1 + i2 byte + n byte + ) + if bd&(1<<7) != 0 { + var btmp [8]byte + n = ((bd >> 2) & 0x7) + 1 + i2 = i + n + copy(btmp[8-n:], bs[i:i2]) + //if first bit of bs[i] is set, then fill btmp[0..8-n] with 0xff (ie sign extend it) + if bs[i]&(1<<7) != 0 { + copy(btmp[0:8-n], bsAll0xff) + //for j,k := byte(0), 8-n; j < k; j++ { btmp[j] = 0xff } + } + i = i2 + tsec = int64(bigen.Uint64(btmp[:])) + } + if bd&(1<<6) != 0 { + var btmp [4]byte + n = (bd & 0x3) + 1 + i2 = i + n + copy(btmp[4-n:], bs[i:i2]) + i = i2 + tnsec = bigen.Uint32(btmp[:]) + } + if bd&(1<<5) == 0 { + tt = time.Unix(tsec, int64(tnsec)).UTC() + return + } + // In stdlib time.Parse, when a date is parsed without a zone name, it uses "" as zone name. + // However, we need name here, so it can be shown when time is printed. + // Zone name is in form: UTC-08:00. + // Note that Go Libs do not give access to dst flag, so we ignore dst bits + + i2 = i + 2 + tz = bigen.Uint16(bs[i:i2]) + i = i2 + // sign extend sign bit into top 2 MSB (which were dst bits): + if tz&(1<<13) == 0 { // positive + tz = tz & 0x3fff //clear 2 MSBs: dst bits + } else { // negative + tz = tz | 0xc000 //set 2 MSBs: dst bits + //tzname[3] = '-' (TODO: verify. this works here) + } + tzint := int16(tz) + if tzint == 0 { + tt = time.Unix(tsec, int64(tnsec)).UTC() + } else { + // For Go Time, do not use a descriptive timezone. + // It's unnecessary, and makes it harder to do a reflect.DeepEqual. + // The Offset already tells what the offset should be, if not on UTC and unknown zone name. + // var zoneName = timeLocUTCName(tzint) + tt = time.Unix(tsec, int64(tnsec)).In(time.FixedZone("", int(tzint)*60)) + } + return +} + +func timeLocUTCName(tzint int16) string { + if tzint == 0 { + return "UTC" + } + var tzname = []byte("UTC+00:00") + //tzname := fmt.Sprintf("UTC%s%02d:%02d", tzsign, tz/60, tz%60) //perf issue using Sprintf. inline below. + //tzhr, tzmin := tz/60, tz%60 //faster if u convert to int first + var tzhr, tzmin int16 + if tzint < 0 { + tzname[3] = '-' // (TODO: verify. this works here) + tzhr, tzmin = -tzint/60, (-tzint)%60 + } else { + tzhr, tzmin = tzint/60, tzint%60 + } + tzname[4] = timeDigits[tzhr/10] + tzname[5] = timeDigits[tzhr%10] + tzname[7] = timeDigits[tzmin/10] + tzname[8] = timeDigits[tzmin%10] + return string(tzname) + //return time.FixedZone(string(tzname), int(tzint)*60) +} diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile new file mode 100644 index 0000000000..53fc525797 --- /dev/null +++ b/vendor/golang.org/x/net/http2/Dockerfile @@ -0,0 +1,51 @@ +# +# This Dockerfile builds a recent curl with HTTP/2 client support, using +# a recent nghttp2 build. +# +# See the Makefile for how to tag it. If Docker and that image is found, the +# Go tests use this curl binary for integration tests. +# + +FROM ubuntu:trusty + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y git-core build-essential wget + +RUN apt-get install -y --no-install-recommends \ + autotools-dev libtool pkg-config zlib1g-dev \ + libcunit1-dev libssl-dev libxml2-dev libevent-dev \ + automake autoconf + +# The list of packages nghttp2 recommends for h2load: +RUN apt-get install -y --no-install-recommends make binutils \ + autoconf automake autotools-dev \ + libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev \ + libev-dev libevent-dev libjansson-dev libjemalloc-dev \ + cython python3.4-dev python-setuptools + +# Note: setting NGHTTP2_VER before the git clone, so an old git clone isn't cached: +ENV NGHTTP2_VER 895da9a +RUN cd /root && git clone https://github.com/tatsuhiro-t/nghttp2.git + +WORKDIR /root/nghttp2 +RUN git reset --hard $NGHTTP2_VER +RUN autoreconf -i +RUN automake +RUN autoconf +RUN ./configure +RUN make +RUN make install + +WORKDIR /root +RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz +RUN tar -zxvf curl-7.45.0.tar.gz +WORKDIR /root/curl-7.45.0 +RUN ./configure --with-ssl --with-nghttp2=/usr/local +RUN make +RUN make install +RUN ldconfig + +CMD ["-h"] +ENTRYPOINT ["/usr/local/bin/curl"] + diff --git a/vendor/golang.org/x/net/http2/Makefile b/vendor/golang.org/x/net/http2/Makefile new file mode 100644 index 0000000000..55fd826f77 --- /dev/null +++ b/vendor/golang.org/x/net/http2/Makefile @@ -0,0 +1,3 @@ +curlimage: + docker build -t gohttp2/curl . + diff --git a/vendor/golang.org/x/net/http2/README b/vendor/golang.org/x/net/http2/README new file mode 100644 index 0000000000..360d5aa379 --- /dev/null +++ b/vendor/golang.org/x/net/http2/README @@ -0,0 +1,20 @@ +This is a work-in-progress HTTP/2 implementation for Go. + +It will eventually live in the Go standard library and won't require +any changes to your code to use. It will just be automatic. + +Status: + +* The server support is pretty good. A few things are missing + but are being worked on. +* The client work has just started but shares a lot of code + is coming along much quicker. + +Docs are at https://godoc.org/golang.org/x/net/http2 + +Demo test server at https://http2.golang.org/ + +Help & bug reports welcome! + +Contributing: https://golang.org/doc/contribute.html +Bugs: https://golang.org/issue/new?title=x/net/http2:+ diff --git a/vendor/golang.org/x/net/http2/client_conn_pool.go b/vendor/golang.org/x/net/http2/client_conn_pool.go new file mode 100644 index 0000000000..547e238a58 --- /dev/null +++ b/vendor/golang.org/x/net/http2/client_conn_pool.go @@ -0,0 +1,255 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Transport code's client connection pooling. + +package http2 + +import ( + "crypto/tls" + "net/http" + "sync" +) + +// ClientConnPool manages a pool of HTTP/2 client connections. +type ClientConnPool interface { + GetClientConn(req *http.Request, addr string) (*ClientConn, error) + MarkDead(*ClientConn) +} + +// clientConnPoolIdleCloser is the interface implemented by ClientConnPool +// implementations which can close their idle connections. +type clientConnPoolIdleCloser interface { + ClientConnPool + closeIdleConnections() +} + +var ( + _ clientConnPoolIdleCloser = (*clientConnPool)(nil) + _ clientConnPoolIdleCloser = noDialClientConnPool{} +) + +// TODO: use singleflight for dialing and addConnCalls? +type clientConnPool struct { + t *Transport + + mu sync.Mutex // TODO: maybe switch to RWMutex + // TODO: add support for sharing conns based on cert names + // (e.g. share conn for googleapis.com and appspot.com) + conns map[string][]*ClientConn // key is host:port + dialing map[string]*dialCall // currently in-flight dials + keys map[*ClientConn][]string + addConnCalls map[string]*addConnCall // in-flight addConnIfNeede calls +} + +func (p *clientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { + return p.getClientConn(req, addr, dialOnMiss) +} + +const ( + dialOnMiss = true + noDialOnMiss = false +) + +func (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMiss bool) (*ClientConn, error) { + if req.Close && dialOnMiss { + // It gets its own connection. + cc, err := p.t.dialClientConn(addr) + if err != nil { + return nil, err + } + cc.singleUse = true + return cc, nil + } + p.mu.Lock() + for _, cc := range p.conns[addr] { + if cc.CanTakeNewRequest() { + p.mu.Unlock() + return cc, nil + } + } + if !dialOnMiss { + p.mu.Unlock() + return nil, ErrNoCachedConn + } + call := p.getStartDialLocked(addr) + p.mu.Unlock() + <-call.done + return call.res, call.err +} + +// dialCall is an in-flight Transport dial call to a host. +type dialCall struct { + p *clientConnPool + done chan struct{} // closed when done + res *ClientConn // valid after done is closed + err error // valid after done is closed +} + +// requires p.mu is held. +func (p *clientConnPool) getStartDialLocked(addr string) *dialCall { + if call, ok := p.dialing[addr]; ok { + // A dial is already in-flight. Don't start another. + return call + } + call := &dialCall{p: p, done: make(chan struct{})} + if p.dialing == nil { + p.dialing = make(map[string]*dialCall) + } + p.dialing[addr] = call + go call.dial(addr) + return call +} + +// run in its own goroutine. +func (c *dialCall) dial(addr string) { + c.res, c.err = c.p.t.dialClientConn(addr) + close(c.done) + + c.p.mu.Lock() + delete(c.p.dialing, addr) + if c.err == nil { + c.p.addConnLocked(addr, c.res) + } + c.p.mu.Unlock() +} + +// addConnIfNeeded makes a NewClientConn out of c if a connection for key doesn't +// already exist. It coalesces concurrent calls with the same key. +// This is used by the http1 Transport code when it creates a new connection. Because +// the http1 Transport doesn't de-dup TCP dials to outbound hosts (because it doesn't know +// the protocol), it can get into a situation where it has multiple TLS connections. +// This code decides which ones live or die. +// The return value used is whether c was used. +// c is never closed. +func (p *clientConnPool) addConnIfNeeded(key string, t *Transport, c *tls.Conn) (used bool, err error) { + p.mu.Lock() + for _, cc := range p.conns[key] { + if cc.CanTakeNewRequest() { + p.mu.Unlock() + return false, nil + } + } + call, dup := p.addConnCalls[key] + if !dup { + if p.addConnCalls == nil { + p.addConnCalls = make(map[string]*addConnCall) + } + call = &addConnCall{ + p: p, + done: make(chan struct{}), + } + p.addConnCalls[key] = call + go call.run(t, key, c) + } + p.mu.Unlock() + + <-call.done + if call.err != nil { + return false, call.err + } + return !dup, nil +} + +type addConnCall struct { + p *clientConnPool + done chan struct{} // closed when done + err error +} + +func (c *addConnCall) run(t *Transport, key string, tc *tls.Conn) { + cc, err := t.NewClientConn(tc) + + p := c.p + p.mu.Lock() + if err != nil { + c.err = err + } else { + p.addConnLocked(key, cc) + } + delete(p.addConnCalls, key) + p.mu.Unlock() + close(c.done) +} + +func (p *clientConnPool) addConn(key string, cc *ClientConn) { + p.mu.Lock() + p.addConnLocked(key, cc) + p.mu.Unlock() +} + +// p.mu must be held +func (p *clientConnPool) addConnLocked(key string, cc *ClientConn) { + for _, v := range p.conns[key] { + if v == cc { + return + } + } + if p.conns == nil { + p.conns = make(map[string][]*ClientConn) + } + if p.keys == nil { + p.keys = make(map[*ClientConn][]string) + } + p.conns[key] = append(p.conns[key], cc) + p.keys[cc] = append(p.keys[cc], key) +} + +func (p *clientConnPool) MarkDead(cc *ClientConn) { + p.mu.Lock() + defer p.mu.Unlock() + for _, key := range p.keys[cc] { + vv, ok := p.conns[key] + if !ok { + continue + } + newList := filterOutClientConn(vv, cc) + if len(newList) > 0 { + p.conns[key] = newList + } else { + delete(p.conns, key) + } + } + delete(p.keys, cc) +} + +func (p *clientConnPool) closeIdleConnections() { + p.mu.Lock() + defer p.mu.Unlock() + // TODO: don't close a cc if it was just added to the pool + // milliseconds ago and has never been used. There's currently + // a small race window with the HTTP/1 Transport's integration + // where it can add an idle conn just before using it, and + // somebody else can concurrently call CloseIdleConns and + // break some caller's RoundTrip. + for _, vv := range p.conns { + for _, cc := range vv { + cc.closeIfIdle() + } + } +} + +func filterOutClientConn(in []*ClientConn, exclude *ClientConn) []*ClientConn { + out := in[:0] + for _, v := range in { + if v != exclude { + out = append(out, v) + } + } + // If we filtered it out, zero out the last item to prevent + // the GC from seeing it. + if len(in) != len(out) { + in[len(in)-1] = nil + } + return out +} + +// noDialClientConnPool is an implementation of http2.ClientConnPool +// which never dials. We let the HTTP/1.1 client dial and use its TLS +// connection instead. +type noDialClientConnPool struct{ *clientConnPool } + +func (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { + return p.getClientConn(req, addr, noDialOnMiss) +} diff --git a/vendor/golang.org/x/net/http2/configure_transport.go b/vendor/golang.org/x/net/http2/configure_transport.go new file mode 100644 index 0000000000..4f720f530b --- /dev/null +++ b/vendor/golang.org/x/net/http2/configure_transport.go @@ -0,0 +1,80 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.6 + +package http2 + +import ( + "crypto/tls" + "fmt" + "net/http" +) + +func configureTransport(t1 *http.Transport) (*Transport, error) { + connPool := new(clientConnPool) + t2 := &Transport{ + ConnPool: noDialClientConnPool{connPool}, + t1: t1, + } + connPool.t = t2 + if err := registerHTTPSProtocol(t1, noDialH2RoundTripper{t2}); err != nil { + return nil, err + } + if t1.TLSClientConfig == nil { + t1.TLSClientConfig = new(tls.Config) + } + if !strSliceContains(t1.TLSClientConfig.NextProtos, "h2") { + t1.TLSClientConfig.NextProtos = append([]string{"h2"}, t1.TLSClientConfig.NextProtos...) + } + if !strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1") { + t1.TLSClientConfig.NextProtos = append(t1.TLSClientConfig.NextProtos, "http/1.1") + } + upgradeFn := func(authority string, c *tls.Conn) http.RoundTripper { + addr := authorityAddr("https", authority) + if used, err := connPool.addConnIfNeeded(addr, t2, c); err != nil { + go c.Close() + return erringRoundTripper{err} + } else if !used { + // Turns out we don't need this c. + // For example, two goroutines made requests to the same host + // at the same time, both kicking off TCP dials. (since protocol + // was unknown) + go c.Close() + } + return t2 + } + if m := t1.TLSNextProto; len(m) == 0 { + t1.TLSNextProto = map[string]func(string, *tls.Conn) http.RoundTripper{ + "h2": upgradeFn, + } + } else { + m["h2"] = upgradeFn + } + return t2, nil +} + +// registerHTTPSProtocol calls Transport.RegisterProtocol but +// convering panics into errors. +func registerHTTPSProtocol(t *http.Transport, rt http.RoundTripper) (err error) { + defer func() { + if e := recover(); e != nil { + err = fmt.Errorf("%v", e) + } + }() + t.RegisterProtocol("https", rt) + return nil +} + +// noDialH2RoundTripper is a RoundTripper which only tries to complete the request +// if there's already has a cached connection to the host. +type noDialH2RoundTripper struct{ t *Transport } + +func (rt noDialH2RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + res, err := rt.t.RoundTrip(req) + if err == ErrNoCachedConn { + return nil, http.ErrSkipAltProtocol + } + return res, err +} diff --git a/vendor/golang.org/x/net/http2/errors.go b/vendor/golang.org/x/net/http2/errors.go new file mode 100644 index 0000000000..71a4e29056 --- /dev/null +++ b/vendor/golang.org/x/net/http2/errors.go @@ -0,0 +1,122 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "errors" + "fmt" +) + +// An ErrCode is an unsigned 32-bit error code as defined in the HTTP/2 spec. +type ErrCode uint32 + +const ( + ErrCodeNo ErrCode = 0x0 + ErrCodeProtocol ErrCode = 0x1 + ErrCodeInternal ErrCode = 0x2 + ErrCodeFlowControl ErrCode = 0x3 + ErrCodeSettingsTimeout ErrCode = 0x4 + ErrCodeStreamClosed ErrCode = 0x5 + ErrCodeFrameSize ErrCode = 0x6 + ErrCodeRefusedStream ErrCode = 0x7 + ErrCodeCancel ErrCode = 0x8 + ErrCodeCompression ErrCode = 0x9 + ErrCodeConnect ErrCode = 0xa + ErrCodeEnhanceYourCalm ErrCode = 0xb + ErrCodeInadequateSecurity ErrCode = 0xc + ErrCodeHTTP11Required ErrCode = 0xd +) + +var errCodeName = map[ErrCode]string{ + ErrCodeNo: "NO_ERROR", + ErrCodeProtocol: "PROTOCOL_ERROR", + ErrCodeInternal: "INTERNAL_ERROR", + ErrCodeFlowControl: "FLOW_CONTROL_ERROR", + ErrCodeSettingsTimeout: "SETTINGS_TIMEOUT", + ErrCodeStreamClosed: "STREAM_CLOSED", + ErrCodeFrameSize: "FRAME_SIZE_ERROR", + ErrCodeRefusedStream: "REFUSED_STREAM", + ErrCodeCancel: "CANCEL", + ErrCodeCompression: "COMPRESSION_ERROR", + ErrCodeConnect: "CONNECT_ERROR", + ErrCodeEnhanceYourCalm: "ENHANCE_YOUR_CALM", + ErrCodeInadequateSecurity: "INADEQUATE_SECURITY", + ErrCodeHTTP11Required: "HTTP_1_1_REQUIRED", +} + +func (e ErrCode) String() string { + if s, ok := errCodeName[e]; ok { + return s + } + return fmt.Sprintf("unknown error code 0x%x", uint32(e)) +} + +// ConnectionError is an error that results in the termination of the +// entire connection. +type ConnectionError ErrCode + +func (e ConnectionError) Error() string { return fmt.Sprintf("connection error: %s", ErrCode(e)) } + +// StreamError is an error that only affects one stream within an +// HTTP/2 connection. +type StreamError struct { + StreamID uint32 + Code ErrCode +} + +func (e StreamError) Error() string { + return fmt.Sprintf("stream error: stream ID %d; %v", e.StreamID, e.Code) +} + +// 6.9.1 The Flow Control Window +// "If a sender receives a WINDOW_UPDATE that causes a flow control +// window to exceed this maximum it MUST terminate either the stream +// or the connection, as appropriate. For streams, [...]; for the +// connection, a GOAWAY frame with a FLOW_CONTROL_ERROR code." +type goAwayFlowError struct{} + +func (goAwayFlowError) Error() string { return "connection exceeded flow control window size" } + +// connErrorReason wraps a ConnectionError with an informative error about why it occurs. + +// Errors of this type are only returned by the frame parser functions +// and converted into ConnectionError(ErrCodeProtocol). +type connError struct { + Code ErrCode + Reason string +} + +func (e connError) Error() string { + return fmt.Sprintf("http2: connection error: %v: %v", e.Code, e.Reason) +} + +type pseudoHeaderError string + +func (e pseudoHeaderError) Error() string { + return fmt.Sprintf("invalid pseudo-header %q", string(e)) +} + +type duplicatePseudoHeaderError string + +func (e duplicatePseudoHeaderError) Error() string { + return fmt.Sprintf("duplicate pseudo-header %q", string(e)) +} + +type headerFieldNameError string + +func (e headerFieldNameError) Error() string { + return fmt.Sprintf("invalid header field name %q", string(e)) +} + +type headerFieldValueError string + +func (e headerFieldValueError) Error() string { + return fmt.Sprintf("invalid header field value %q", string(e)) +} + +var ( + errMixPseudoHeaderTypes = errors.New("mix of request and response pseudo headers") + errPseudoAfterRegular = errors.New("pseudo header field after regular") +) diff --git a/vendor/golang.org/x/net/http2/fixed_buffer.go b/vendor/golang.org/x/net/http2/fixed_buffer.go new file mode 100644 index 0000000000..47da0f0bf7 --- /dev/null +++ b/vendor/golang.org/x/net/http2/fixed_buffer.go @@ -0,0 +1,60 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "errors" +) + +// fixedBuffer is an io.ReadWriter backed by a fixed size buffer. +// It never allocates, but moves old data as new data is written. +type fixedBuffer struct { + buf []byte + r, w int +} + +var ( + errReadEmpty = errors.New("read from empty fixedBuffer") + errWriteFull = errors.New("write on full fixedBuffer") +) + +// Read copies bytes from the buffer into p. +// It is an error to read when no data is available. +func (b *fixedBuffer) Read(p []byte) (n int, err error) { + if b.r == b.w { + return 0, errReadEmpty + } + n = copy(p, b.buf[b.r:b.w]) + b.r += n + if b.r == b.w { + b.r = 0 + b.w = 0 + } + return n, nil +} + +// Len returns the number of bytes of the unread portion of the buffer. +func (b *fixedBuffer) Len() int { + return b.w - b.r +} + +// Write copies bytes from p into the buffer. +// It is an error to write more data than the buffer can hold. +func (b *fixedBuffer) Write(p []byte) (n int, err error) { + // Slide existing data to beginning. + if b.r > 0 && len(p) > len(b.buf)-b.w { + copy(b.buf, b.buf[b.r:b.w]) + b.w -= b.r + b.r = 0 + } + + // Write new data. + n = copy(b.buf[b.w:], p) + b.w += n + if n < len(p) { + err = errWriteFull + } + return n, err +} diff --git a/vendor/golang.org/x/net/http2/flow.go b/vendor/golang.org/x/net/http2/flow.go new file mode 100644 index 0000000000..957de25420 --- /dev/null +++ b/vendor/golang.org/x/net/http2/flow.go @@ -0,0 +1,50 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Flow control + +package http2 + +// flow is the flow control window's size. +type flow struct { + // n is the number of DATA bytes we're allowed to send. + // A flow is kept both on a conn and a per-stream. + n int32 + + // conn points to the shared connection-level flow that is + // shared by all streams on that conn. It is nil for the flow + // that's on the conn directly. + conn *flow +} + +func (f *flow) setConnFlow(cf *flow) { f.conn = cf } + +func (f *flow) available() int32 { + n := f.n + if f.conn != nil && f.conn.n < n { + n = f.conn.n + } + return n +} + +func (f *flow) take(n int32) { + if n > f.available() { + panic("internal error: took too much") + } + f.n -= n + if f.conn != nil { + f.conn.n -= n + } +} + +// add adds n bytes (positive or negative) to the flow control window. +// It returns false if the sum would exceed 2^31-1. +func (f *flow) add(n int32) bool { + remain := (1<<31 - 1) - f.n + if n > remain { + return false + } + f.n += n + return true +} diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go new file mode 100644 index 0000000000..981d407a71 --- /dev/null +++ b/vendor/golang.org/x/net/http2/frame.go @@ -0,0 +1,1507 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "log" + "strings" + "sync" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/lex/httplex" +) + +const frameHeaderLen = 9 + +var padZeros = make([]byte, 255) // zeros for padding + +// A FrameType is a registered frame type as defined in +// http://http2.github.io/http2-spec/#rfc.section.11.2 +type FrameType uint8 + +const ( + FrameData FrameType = 0x0 + FrameHeaders FrameType = 0x1 + FramePriority FrameType = 0x2 + FrameRSTStream FrameType = 0x3 + FrameSettings FrameType = 0x4 + FramePushPromise FrameType = 0x5 + FramePing FrameType = 0x6 + FrameGoAway FrameType = 0x7 + FrameWindowUpdate FrameType = 0x8 + FrameContinuation FrameType = 0x9 +) + +var frameName = map[FrameType]string{ + FrameData: "DATA", + FrameHeaders: "HEADERS", + FramePriority: "PRIORITY", + FrameRSTStream: "RST_STREAM", + FrameSettings: "SETTINGS", + FramePushPromise: "PUSH_PROMISE", + FramePing: "PING", + FrameGoAway: "GOAWAY", + FrameWindowUpdate: "WINDOW_UPDATE", + FrameContinuation: "CONTINUATION", +} + +func (t FrameType) String() string { + if s, ok := frameName[t]; ok { + return s + } + return fmt.Sprintf("UNKNOWN_FRAME_TYPE_%d", uint8(t)) +} + +// Flags is a bitmask of HTTP/2 flags. +// The meaning of flags varies depending on the frame type. +type Flags uint8 + +// Has reports whether f contains all (0 or more) flags in v. +func (f Flags) Has(v Flags) bool { + return (f & v) == v +} + +// Frame-specific FrameHeader flag bits. +const ( + // Data Frame + FlagDataEndStream Flags = 0x1 + FlagDataPadded Flags = 0x8 + + // Headers Frame + FlagHeadersEndStream Flags = 0x1 + FlagHeadersEndHeaders Flags = 0x4 + FlagHeadersPadded Flags = 0x8 + FlagHeadersPriority Flags = 0x20 + + // Settings Frame + FlagSettingsAck Flags = 0x1 + + // Ping Frame + FlagPingAck Flags = 0x1 + + // Continuation Frame + FlagContinuationEndHeaders Flags = 0x4 + + FlagPushPromiseEndHeaders Flags = 0x4 + FlagPushPromisePadded Flags = 0x8 +) + +var flagName = map[FrameType]map[Flags]string{ + FrameData: { + FlagDataEndStream: "END_STREAM", + FlagDataPadded: "PADDED", + }, + FrameHeaders: { + FlagHeadersEndStream: "END_STREAM", + FlagHeadersEndHeaders: "END_HEADERS", + FlagHeadersPadded: "PADDED", + FlagHeadersPriority: "PRIORITY", + }, + FrameSettings: { + FlagSettingsAck: "ACK", + }, + FramePing: { + FlagPingAck: "ACK", + }, + FrameContinuation: { + FlagContinuationEndHeaders: "END_HEADERS", + }, + FramePushPromise: { + FlagPushPromiseEndHeaders: "END_HEADERS", + FlagPushPromisePadded: "PADDED", + }, +} + +// a frameParser parses a frame given its FrameHeader and payload +// bytes. The length of payload will always equal fh.Length (which +// might be 0). +type frameParser func(fh FrameHeader, payload []byte) (Frame, error) + +var frameParsers = map[FrameType]frameParser{ + FrameData: parseDataFrame, + FrameHeaders: parseHeadersFrame, + FramePriority: parsePriorityFrame, + FrameRSTStream: parseRSTStreamFrame, + FrameSettings: parseSettingsFrame, + FramePushPromise: parsePushPromise, + FramePing: parsePingFrame, + FrameGoAway: parseGoAwayFrame, + FrameWindowUpdate: parseWindowUpdateFrame, + FrameContinuation: parseContinuationFrame, +} + +func typeFrameParser(t FrameType) frameParser { + if f := frameParsers[t]; f != nil { + return f + } + return parseUnknownFrame +} + +// A FrameHeader is the 9 byte header of all HTTP/2 frames. +// +// See http://http2.github.io/http2-spec/#FrameHeader +type FrameHeader struct { + valid bool // caller can access []byte fields in the Frame + + // Type is the 1 byte frame type. There are ten standard frame + // types, but extension frame types may be written by WriteRawFrame + // and will be returned by ReadFrame (as UnknownFrame). + Type FrameType + + // Flags are the 1 byte of 8 potential bit flags per frame. + // They are specific to the frame type. + Flags Flags + + // Length is the length of the frame, not including the 9 byte header. + // The maximum size is one byte less than 16MB (uint24), but only + // frames up to 16KB are allowed without peer agreement. + Length uint32 + + // StreamID is which stream this frame is for. Certain frames + // are not stream-specific, in which case this field is 0. + StreamID uint32 +} + +// Header returns h. It exists so FrameHeaders can be embedded in other +// specific frame types and implement the Frame interface. +func (h FrameHeader) Header() FrameHeader { return h } + +func (h FrameHeader) String() string { + var buf bytes.Buffer + buf.WriteString("[FrameHeader ") + h.writeDebug(&buf) + buf.WriteByte(']') + return buf.String() +} + +func (h FrameHeader) writeDebug(buf *bytes.Buffer) { + buf.WriteString(h.Type.String()) + if h.Flags != 0 { + buf.WriteString(" flags=") + set := 0 + for i := uint8(0); i < 8; i++ { + if h.Flags&(1< 1 { + buf.WriteByte('|') + } + name := flagName[h.Type][Flags(1<>24), + byte(streamID>>16), + byte(streamID>>8), + byte(streamID)) +} + +func (f *Framer) endWrite() error { + // Now that we know the final size, fill in the FrameHeader in + // the space previously reserved for it. Abuse append. + length := len(f.wbuf) - frameHeaderLen + if length >= (1 << 24) { + return ErrFrameTooLarge + } + _ = append(f.wbuf[:0], + byte(length>>16), + byte(length>>8), + byte(length)) + if logFrameWrites { + f.logWrite() + } + + n, err := f.w.Write(f.wbuf) + if err == nil && n != len(f.wbuf) { + err = io.ErrShortWrite + } + return err +} + +func (f *Framer) logWrite() { + if f.debugFramer == nil { + f.debugFramerBuf = new(bytes.Buffer) + f.debugFramer = NewFramer(nil, f.debugFramerBuf) + f.debugFramer.logReads = false // we log it ourselves, saying "wrote" below + // Let us read anything, even if we accidentally wrote it + // in the wrong order: + f.debugFramer.AllowIllegalReads = true + } + f.debugFramerBuf.Write(f.wbuf) + fr, err := f.debugFramer.ReadFrame() + if err != nil { + log.Printf("http2: Framer %p: failed to decode just-written frame", f) + return + } + log.Printf("http2: Framer %p: wrote %v", f, summarizeFrame(fr)) +} + +func (f *Framer) writeByte(v byte) { f.wbuf = append(f.wbuf, v) } +func (f *Framer) writeBytes(v []byte) { f.wbuf = append(f.wbuf, v...) } +func (f *Framer) writeUint16(v uint16) { f.wbuf = append(f.wbuf, byte(v>>8), byte(v)) } +func (f *Framer) writeUint32(v uint32) { + f.wbuf = append(f.wbuf, byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) +} + +const ( + minMaxFrameSize = 1 << 14 + maxFrameSize = 1<<24 - 1 +) + +// NewFramer returns a Framer that writes frames to w and reads them from r. +func NewFramer(w io.Writer, r io.Reader) *Framer { + fr := &Framer{ + w: w, + r: r, + logReads: logFrameReads, + } + fr.getReadBuf = func(size uint32) []byte { + if cap(fr.readBuf) >= int(size) { + return fr.readBuf[:size] + } + fr.readBuf = make([]byte, size) + return fr.readBuf + } + fr.SetMaxReadFrameSize(maxFrameSize) + return fr +} + +// SetMaxReadFrameSize sets the maximum size of a frame +// that will be read by a subsequent call to ReadFrame. +// It is the caller's responsibility to advertise this +// limit with a SETTINGS frame. +func (fr *Framer) SetMaxReadFrameSize(v uint32) { + if v > maxFrameSize { + v = maxFrameSize + } + fr.maxReadSize = v +} + +// ErrorDetail returns a more detailed error of the last error +// returned by Framer.ReadFrame. For instance, if ReadFrame +// returns a StreamError with code PROTOCOL_ERROR, ErrorDetail +// will say exactly what was invalid. ErrorDetail is not guaranteed +// to return a non-nil value and like the rest of the http2 package, +// its return value is not protected by an API compatibility promise. +// ErrorDetail is reset after the next call to ReadFrame. +func (fr *Framer) ErrorDetail() error { + return fr.errDetail +} + +// ErrFrameTooLarge is returned from Framer.ReadFrame when the peer +// sends a frame that is larger than declared with SetMaxReadFrameSize. +var ErrFrameTooLarge = errors.New("http2: frame too large") + +// terminalReadFrameError reports whether err is an unrecoverable +// error from ReadFrame and no other frames should be read. +func terminalReadFrameError(err error) bool { + if _, ok := err.(StreamError); ok { + return false + } + return err != nil +} + +// ReadFrame reads a single frame. The returned Frame is only valid +// until the next call to ReadFrame. +// +// If the frame is larger than previously set with SetMaxReadFrameSize, the +// returned error is ErrFrameTooLarge. Other errors may be of type +// ConnectionError, StreamError, or anything else from the underlying +// reader. +func (fr *Framer) ReadFrame() (Frame, error) { + fr.errDetail = nil + if fr.lastFrame != nil { + fr.lastFrame.invalidate() + } + fh, err := readFrameHeader(fr.headerBuf[:], fr.r) + if err != nil { + return nil, err + } + if fh.Length > fr.maxReadSize { + return nil, ErrFrameTooLarge + } + payload := fr.getReadBuf(fh.Length) + if _, err := io.ReadFull(fr.r, payload); err != nil { + return nil, err + } + f, err := typeFrameParser(fh.Type)(fh, payload) + if err != nil { + if ce, ok := err.(connError); ok { + return nil, fr.connError(ce.Code, ce.Reason) + } + return nil, err + } + if err := fr.checkFrameOrder(f); err != nil { + return nil, err + } + if fr.logReads { + log.Printf("http2: Framer %p: read %v", fr, summarizeFrame(f)) + } + if fh.Type == FrameHeaders && fr.ReadMetaHeaders != nil { + return fr.readMetaFrame(f.(*HeadersFrame)) + } + return f, nil +} + +// connError returns ConnectionError(code) but first +// stashes away a public reason to the caller can optionally relay it +// to the peer before hanging up on them. This might help others debug +// their implementations. +func (fr *Framer) connError(code ErrCode, reason string) error { + fr.errDetail = errors.New(reason) + return ConnectionError(code) +} + +// checkFrameOrder reports an error if f is an invalid frame to return +// next from ReadFrame. Mostly it checks whether HEADERS and +// CONTINUATION frames are contiguous. +func (fr *Framer) checkFrameOrder(f Frame) error { + last := fr.lastFrame + fr.lastFrame = f + if fr.AllowIllegalReads { + return nil + } + + fh := f.Header() + if fr.lastHeaderStream != 0 { + if fh.Type != FrameContinuation { + return fr.connError(ErrCodeProtocol, + fmt.Sprintf("got %s for stream %d; expected CONTINUATION following %s for stream %d", + fh.Type, fh.StreamID, + last.Header().Type, fr.lastHeaderStream)) + } + if fh.StreamID != fr.lastHeaderStream { + return fr.connError(ErrCodeProtocol, + fmt.Sprintf("got CONTINUATION for stream %d; expected stream %d", + fh.StreamID, fr.lastHeaderStream)) + } + } else if fh.Type == FrameContinuation { + return fr.connError(ErrCodeProtocol, fmt.Sprintf("unexpected CONTINUATION for stream %d", fh.StreamID)) + } + + switch fh.Type { + case FrameHeaders, FrameContinuation: + if fh.Flags.Has(FlagHeadersEndHeaders) { + fr.lastHeaderStream = 0 + } else { + fr.lastHeaderStream = fh.StreamID + } + } + + return nil +} + +// A DataFrame conveys arbitrary, variable-length sequences of octets +// associated with a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.1 +type DataFrame struct { + FrameHeader + data []byte +} + +func (f *DataFrame) StreamEnded() bool { + return f.FrameHeader.Flags.Has(FlagDataEndStream) +} + +// Data returns the frame's data octets, not including any padding +// size byte or padding suffix bytes. +// The caller must not retain the returned memory past the next +// call to ReadFrame. +func (f *DataFrame) Data() []byte { + f.checkValid() + return f.data +} + +func parseDataFrame(fh FrameHeader, payload []byte) (Frame, error) { + if fh.StreamID == 0 { + // DATA frames MUST be associated with a stream. If a + // DATA frame is received whose stream identifier + // field is 0x0, the recipient MUST respond with a + // connection error (Section 5.4.1) of type + // PROTOCOL_ERROR. + return nil, connError{ErrCodeProtocol, "DATA frame with stream ID 0"} + } + f := &DataFrame{ + FrameHeader: fh, + } + var padSize byte + if fh.Flags.Has(FlagDataPadded) { + var err error + payload, padSize, err = readByte(payload) + if err != nil { + return nil, err + } + } + if int(padSize) > len(payload) { + // If the length of the padding is greater than the + // length of the frame payload, the recipient MUST + // treat this as a connection error. + // Filed: https://github.com/http2/http2-spec/issues/610 + return nil, connError{ErrCodeProtocol, "pad size larger than data payload"} + } + f.data = payload[:len(payload)-int(padSize)] + return f, nil +} + +var ( + errStreamID = errors.New("invalid stream ID") + errDepStreamID = errors.New("invalid dependent stream ID") +) + +func validStreamIDOrZero(streamID uint32) bool { + return streamID&(1<<31) == 0 +} + +func validStreamID(streamID uint32) bool { + return streamID != 0 && streamID&(1<<31) == 0 +} + +// WriteData writes a DATA frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error { + // TODO: ignoring padding for now. will add when somebody cares. + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if endStream { + flags |= FlagDataEndStream + } + f.startWrite(FrameData, flags, streamID) + f.wbuf = append(f.wbuf, data...) + return f.endWrite() +} + +// A SettingsFrame conveys configuration parameters that affect how +// endpoints communicate, such as preferences and constraints on peer +// behavior. +// +// See http://http2.github.io/http2-spec/#SETTINGS +type SettingsFrame struct { + FrameHeader + p []byte +} + +func parseSettingsFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.Flags.Has(FlagSettingsAck) && fh.Length > 0 { + // When this (ACK 0x1) bit is set, the payload of the + // SETTINGS frame MUST be empty. Receipt of a + // SETTINGS frame with the ACK flag set and a length + // field value other than 0 MUST be treated as a + // connection error (Section 5.4.1) of type + // FRAME_SIZE_ERROR. + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID != 0 { + // SETTINGS frames always apply to a connection, + // never a single stream. The stream identifier for a + // SETTINGS frame MUST be zero (0x0). If an endpoint + // receives a SETTINGS frame whose stream identifier + // field is anything other than 0x0, the endpoint MUST + // respond with a connection error (Section 5.4.1) of + // type PROTOCOL_ERROR. + return nil, ConnectionError(ErrCodeProtocol) + } + if len(p)%6 != 0 { + // Expecting even number of 6 byte settings. + return nil, ConnectionError(ErrCodeFrameSize) + } + f := &SettingsFrame{FrameHeader: fh, p: p} + if v, ok := f.Value(SettingInitialWindowSize); ok && v > (1<<31)-1 { + // Values above the maximum flow control window size of 2^31 - 1 MUST + // be treated as a connection error (Section 5.4.1) of type + // FLOW_CONTROL_ERROR. + return nil, ConnectionError(ErrCodeFlowControl) + } + return f, nil +} + +func (f *SettingsFrame) IsAck() bool { + return f.FrameHeader.Flags.Has(FlagSettingsAck) +} + +func (f *SettingsFrame) Value(s SettingID) (v uint32, ok bool) { + f.checkValid() + buf := f.p + for len(buf) > 0 { + settingID := SettingID(binary.BigEndian.Uint16(buf[:2])) + if settingID == s { + return binary.BigEndian.Uint32(buf[2:6]), true + } + buf = buf[6:] + } + return 0, false +} + +// ForeachSetting runs fn for each setting. +// It stops and returns the first error. +func (f *SettingsFrame) ForeachSetting(fn func(Setting) error) error { + f.checkValid() + buf := f.p + for len(buf) > 0 { + if err := fn(Setting{ + SettingID(binary.BigEndian.Uint16(buf[:2])), + binary.BigEndian.Uint32(buf[2:6]), + }); err != nil { + return err + } + buf = buf[6:] + } + return nil +} + +// WriteSettings writes a SETTINGS frame with zero or more settings +// specified and the ACK bit not set. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteSettings(settings ...Setting) error { + f.startWrite(FrameSettings, 0, 0) + for _, s := range settings { + f.writeUint16(uint16(s.ID)) + f.writeUint32(s.Val) + } + return f.endWrite() +} + +// WriteSettings writes an empty SETTINGS frame with the ACK bit set. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteSettingsAck() error { + f.startWrite(FrameSettings, FlagSettingsAck, 0) + return f.endWrite() +} + +// A PingFrame is a mechanism for measuring a minimal round trip time +// from the sender, as well as determining whether an idle connection +// is still functional. +// See http://http2.github.io/http2-spec/#rfc.section.6.7 +type PingFrame struct { + FrameHeader + Data [8]byte +} + +func (f *PingFrame) IsAck() bool { return f.Flags.Has(FlagPingAck) } + +func parsePingFrame(fh FrameHeader, payload []byte) (Frame, error) { + if len(payload) != 8 { + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID != 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + f := &PingFrame{FrameHeader: fh} + copy(f.Data[:], payload) + return f, nil +} + +func (f *Framer) WritePing(ack bool, data [8]byte) error { + var flags Flags + if ack { + flags = FlagPingAck + } + f.startWrite(FramePing, flags, 0) + f.writeBytes(data[:]) + return f.endWrite() +} + +// A GoAwayFrame informs the remote peer to stop creating streams on this connection. +// See http://http2.github.io/http2-spec/#rfc.section.6.8 +type GoAwayFrame struct { + FrameHeader + LastStreamID uint32 + ErrCode ErrCode + debugData []byte +} + +// DebugData returns any debug data in the GOAWAY frame. Its contents +// are not defined. +// The caller must not retain the returned memory past the next +// call to ReadFrame. +func (f *GoAwayFrame) DebugData() []byte { + f.checkValid() + return f.debugData +} + +func parseGoAwayFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.StreamID != 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + if len(p) < 8 { + return nil, ConnectionError(ErrCodeFrameSize) + } + return &GoAwayFrame{ + FrameHeader: fh, + LastStreamID: binary.BigEndian.Uint32(p[:4]) & (1<<31 - 1), + ErrCode: ErrCode(binary.BigEndian.Uint32(p[4:8])), + debugData: p[8:], + }, nil +} + +func (f *Framer) WriteGoAway(maxStreamID uint32, code ErrCode, debugData []byte) error { + f.startWrite(FrameGoAway, 0, 0) + f.writeUint32(maxStreamID & (1<<31 - 1)) + f.writeUint32(uint32(code)) + f.writeBytes(debugData) + return f.endWrite() +} + +// An UnknownFrame is the frame type returned when the frame type is unknown +// or no specific frame type parser exists. +type UnknownFrame struct { + FrameHeader + p []byte +} + +// Payload returns the frame's payload (after the header). It is not +// valid to call this method after a subsequent call to +// Framer.ReadFrame, nor is it valid to retain the returned slice. +// The memory is owned by the Framer and is invalidated when the next +// frame is read. +func (f *UnknownFrame) Payload() []byte { + f.checkValid() + return f.p +} + +func parseUnknownFrame(fh FrameHeader, p []byte) (Frame, error) { + return &UnknownFrame{fh, p}, nil +} + +// A WindowUpdateFrame is used to implement flow control. +// See http://http2.github.io/http2-spec/#rfc.section.6.9 +type WindowUpdateFrame struct { + FrameHeader + Increment uint32 // never read with high bit set +} + +func parseWindowUpdateFrame(fh FrameHeader, p []byte) (Frame, error) { + if len(p) != 4 { + return nil, ConnectionError(ErrCodeFrameSize) + } + inc := binary.BigEndian.Uint32(p[:4]) & 0x7fffffff // mask off high reserved bit + if inc == 0 { + // A receiver MUST treat the receipt of a + // WINDOW_UPDATE frame with an flow control window + // increment of 0 as a stream error (Section 5.4.2) of + // type PROTOCOL_ERROR; errors on the connection flow + // control window MUST be treated as a connection + // error (Section 5.4.1). + if fh.StreamID == 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + return nil, StreamError{fh.StreamID, ErrCodeProtocol} + } + return &WindowUpdateFrame{ + FrameHeader: fh, + Increment: inc, + }, nil +} + +// WriteWindowUpdate writes a WINDOW_UPDATE frame. +// The increment value must be between 1 and 2,147,483,647, inclusive. +// If the Stream ID is zero, the window update applies to the +// connection as a whole. +func (f *Framer) WriteWindowUpdate(streamID, incr uint32) error { + // "The legal range for the increment to the flow control window is 1 to 2^31-1 (2,147,483,647) octets." + if (incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites { + return errors.New("illegal window increment value") + } + f.startWrite(FrameWindowUpdate, 0, streamID) + f.writeUint32(incr) + return f.endWrite() +} + +// A HeadersFrame is used to open a stream and additionally carries a +// header block fragment. +type HeadersFrame struct { + FrameHeader + + // Priority is set if FlagHeadersPriority is set in the FrameHeader. + Priority PriorityParam + + headerFragBuf []byte // not owned +} + +func (f *HeadersFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *HeadersFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagHeadersEndHeaders) +} + +func (f *HeadersFrame) StreamEnded() bool { + return f.FrameHeader.Flags.Has(FlagHeadersEndStream) +} + +func (f *HeadersFrame) HasPriority() bool { + return f.FrameHeader.Flags.Has(FlagHeadersPriority) +} + +func parseHeadersFrame(fh FrameHeader, p []byte) (_ Frame, err error) { + hf := &HeadersFrame{ + FrameHeader: fh, + } + if fh.StreamID == 0 { + // HEADERS frames MUST be associated with a stream. If a HEADERS frame + // is received whose stream identifier field is 0x0, the recipient MUST + // respond with a connection error (Section 5.4.1) of type + // PROTOCOL_ERROR. + return nil, connError{ErrCodeProtocol, "HEADERS frame with stream ID 0"} + } + var padLength uint8 + if fh.Flags.Has(FlagHeadersPadded) { + if p, padLength, err = readByte(p); err != nil { + return + } + } + if fh.Flags.Has(FlagHeadersPriority) { + var v uint32 + p, v, err = readUint32(p) + if err != nil { + return nil, err + } + hf.Priority.StreamDep = v & 0x7fffffff + hf.Priority.Exclusive = (v != hf.Priority.StreamDep) // high bit was set + p, hf.Priority.Weight, err = readByte(p) + if err != nil { + return nil, err + } + } + if len(p)-int(padLength) <= 0 { + return nil, StreamError{fh.StreamID, ErrCodeProtocol} + } + hf.headerFragBuf = p[:len(p)-int(padLength)] + return hf, nil +} + +// HeadersFrameParam are the parameters for writing a HEADERS frame. +type HeadersFrameParam struct { + // StreamID is the required Stream ID to initiate. + StreamID uint32 + // BlockFragment is part (or all) of a Header Block. + BlockFragment []byte + + // EndStream indicates that the header block is the last that + // the endpoint will send for the identified stream. Setting + // this flag causes the stream to enter one of "half closed" + // states. + EndStream bool + + // EndHeaders indicates that this frame contains an entire + // header block and is not followed by any + // CONTINUATION frames. + EndHeaders bool + + // PadLength is the optional number of bytes of zeros to add + // to this frame. + PadLength uint8 + + // Priority, if non-zero, includes stream priority information + // in the HEADER frame. + Priority PriorityParam +} + +// WriteHeaders writes a single HEADERS frame. +// +// This is a low-level header writing method. Encoding headers and +// splitting them into any necessary CONTINUATION frames is handled +// elsewhere. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteHeaders(p HeadersFrameParam) error { + if !validStreamID(p.StreamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if p.PadLength != 0 { + flags |= FlagHeadersPadded + } + if p.EndStream { + flags |= FlagHeadersEndStream + } + if p.EndHeaders { + flags |= FlagHeadersEndHeaders + } + if !p.Priority.IsZero() { + flags |= FlagHeadersPriority + } + f.startWrite(FrameHeaders, flags, p.StreamID) + if p.PadLength != 0 { + f.writeByte(p.PadLength) + } + if !p.Priority.IsZero() { + v := p.Priority.StreamDep + if !validStreamIDOrZero(v) && !f.AllowIllegalWrites { + return errDepStreamID + } + if p.Priority.Exclusive { + v |= 1 << 31 + } + f.writeUint32(v) + f.writeByte(p.Priority.Weight) + } + f.wbuf = append(f.wbuf, p.BlockFragment...) + f.wbuf = append(f.wbuf, padZeros[:p.PadLength]...) + return f.endWrite() +} + +// A PriorityFrame specifies the sender-advised priority of a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.3 +type PriorityFrame struct { + FrameHeader + PriorityParam +} + +// PriorityParam are the stream prioritzation parameters. +type PriorityParam struct { + // StreamDep is a 31-bit stream identifier for the + // stream that this stream depends on. Zero means no + // dependency. + StreamDep uint32 + + // Exclusive is whether the dependency is exclusive. + Exclusive bool + + // Weight is the stream's zero-indexed weight. It should be + // set together with StreamDep, or neither should be set. Per + // the spec, "Add one to the value to obtain a weight between + // 1 and 256." + Weight uint8 +} + +func (p PriorityParam) IsZero() bool { + return p == PriorityParam{} +} + +func parsePriorityFrame(fh FrameHeader, payload []byte) (Frame, error) { + if fh.StreamID == 0 { + return nil, connError{ErrCodeProtocol, "PRIORITY frame with stream ID 0"} + } + if len(payload) != 5 { + return nil, connError{ErrCodeFrameSize, fmt.Sprintf("PRIORITY frame payload size was %d; want 5", len(payload))} + } + v := binary.BigEndian.Uint32(payload[:4]) + streamID := v & 0x7fffffff // mask off high bit + return &PriorityFrame{ + FrameHeader: fh, + PriorityParam: PriorityParam{ + Weight: payload[4], + StreamDep: streamID, + Exclusive: streamID != v, // was high bit set? + }, + }, nil +} + +// WritePriority writes a PRIORITY frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WritePriority(streamID uint32, p PriorityParam) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + if !validStreamIDOrZero(p.StreamDep) { + return errDepStreamID + } + f.startWrite(FramePriority, 0, streamID) + v := p.StreamDep + if p.Exclusive { + v |= 1 << 31 + } + f.writeUint32(v) + f.writeByte(p.Weight) + return f.endWrite() +} + +// A RSTStreamFrame allows for abnormal termination of a stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.4 +type RSTStreamFrame struct { + FrameHeader + ErrCode ErrCode +} + +func parseRSTStreamFrame(fh FrameHeader, p []byte) (Frame, error) { + if len(p) != 4 { + return nil, ConnectionError(ErrCodeFrameSize) + } + if fh.StreamID == 0 { + return nil, ConnectionError(ErrCodeProtocol) + } + return &RSTStreamFrame{fh, ErrCode(binary.BigEndian.Uint32(p[:4]))}, nil +} + +// WriteRSTStream writes a RST_STREAM frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteRSTStream(streamID uint32, code ErrCode) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + f.startWrite(FrameRSTStream, 0, streamID) + f.writeUint32(uint32(code)) + return f.endWrite() +} + +// A ContinuationFrame is used to continue a sequence of header block fragments. +// See http://http2.github.io/http2-spec/#rfc.section.6.10 +type ContinuationFrame struct { + FrameHeader + headerFragBuf []byte +} + +func parseContinuationFrame(fh FrameHeader, p []byte) (Frame, error) { + if fh.StreamID == 0 { + return nil, connError{ErrCodeProtocol, "CONTINUATION frame with stream ID 0"} + } + return &ContinuationFrame{fh, p}, nil +} + +func (f *ContinuationFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *ContinuationFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagContinuationEndHeaders) +} + +// WriteContinuation writes a CONTINUATION frame. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WriteContinuation(streamID uint32, endHeaders bool, headerBlockFragment []byte) error { + if !validStreamID(streamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if endHeaders { + flags |= FlagContinuationEndHeaders + } + f.startWrite(FrameContinuation, flags, streamID) + f.wbuf = append(f.wbuf, headerBlockFragment...) + return f.endWrite() +} + +// A PushPromiseFrame is used to initiate a server stream. +// See http://http2.github.io/http2-spec/#rfc.section.6.6 +type PushPromiseFrame struct { + FrameHeader + PromiseID uint32 + headerFragBuf []byte // not owned +} + +func (f *PushPromiseFrame) HeaderBlockFragment() []byte { + f.checkValid() + return f.headerFragBuf +} + +func (f *PushPromiseFrame) HeadersEnded() bool { + return f.FrameHeader.Flags.Has(FlagPushPromiseEndHeaders) +} + +func parsePushPromise(fh FrameHeader, p []byte) (_ Frame, err error) { + pp := &PushPromiseFrame{ + FrameHeader: fh, + } + if pp.StreamID == 0 { + // PUSH_PROMISE frames MUST be associated with an existing, + // peer-initiated stream. The stream identifier of a + // PUSH_PROMISE frame indicates the stream it is associated + // with. If the stream identifier field specifies the value + // 0x0, a recipient MUST respond with a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + return nil, ConnectionError(ErrCodeProtocol) + } + // The PUSH_PROMISE frame includes optional padding. + // Padding fields and flags are identical to those defined for DATA frames + var padLength uint8 + if fh.Flags.Has(FlagPushPromisePadded) { + if p, padLength, err = readByte(p); err != nil { + return + } + } + + p, pp.PromiseID, err = readUint32(p) + if err != nil { + return + } + pp.PromiseID = pp.PromiseID & (1<<31 - 1) + + if int(padLength) > len(p) { + // like the DATA frame, error out if padding is longer than the body. + return nil, ConnectionError(ErrCodeProtocol) + } + pp.headerFragBuf = p[:len(p)-int(padLength)] + return pp, nil +} + +// PushPromiseParam are the parameters for writing a PUSH_PROMISE frame. +type PushPromiseParam struct { + // StreamID is the required Stream ID to initiate. + StreamID uint32 + + // PromiseID is the required Stream ID which this + // Push Promises + PromiseID uint32 + + // BlockFragment is part (or all) of a Header Block. + BlockFragment []byte + + // EndHeaders indicates that this frame contains an entire + // header block and is not followed by any + // CONTINUATION frames. + EndHeaders bool + + // PadLength is the optional number of bytes of zeros to add + // to this frame. + PadLength uint8 +} + +// WritePushPromise writes a single PushPromise Frame. +// +// As with Header Frames, This is the low level call for writing +// individual frames. Continuation frames are handled elsewhere. +// +// It will perform exactly one Write to the underlying Writer. +// It is the caller's responsibility to not call other Write methods concurrently. +func (f *Framer) WritePushPromise(p PushPromiseParam) error { + if !validStreamID(p.StreamID) && !f.AllowIllegalWrites { + return errStreamID + } + var flags Flags + if p.PadLength != 0 { + flags |= FlagPushPromisePadded + } + if p.EndHeaders { + flags |= FlagPushPromiseEndHeaders + } + f.startWrite(FramePushPromise, flags, p.StreamID) + if p.PadLength != 0 { + f.writeByte(p.PadLength) + } + if !validStreamID(p.PromiseID) && !f.AllowIllegalWrites { + return errStreamID + } + f.writeUint32(p.PromiseID) + f.wbuf = append(f.wbuf, p.BlockFragment...) + f.wbuf = append(f.wbuf, padZeros[:p.PadLength]...) + return f.endWrite() +} + +// WriteRawFrame writes a raw frame. This can be used to write +// extension frames unknown to this package. +func (f *Framer) WriteRawFrame(t FrameType, flags Flags, streamID uint32, payload []byte) error { + f.startWrite(t, flags, streamID) + f.writeBytes(payload) + return f.endWrite() +} + +func readByte(p []byte) (remain []byte, b byte, err error) { + if len(p) == 0 { + return nil, 0, io.ErrUnexpectedEOF + } + return p[1:], p[0], nil +} + +func readUint32(p []byte) (remain []byte, v uint32, err error) { + if len(p) < 4 { + return nil, 0, io.ErrUnexpectedEOF + } + return p[4:], binary.BigEndian.Uint32(p[:4]), nil +} + +type streamEnder interface { + StreamEnded() bool +} + +type headersEnder interface { + HeadersEnded() bool +} + +type headersOrContinuation interface { + headersEnder + HeaderBlockFragment() []byte +} + +// A MetaHeadersFrame is the representation of one HEADERS frame and +// zero or more contiguous CONTINUATION frames and the decoding of +// their HPACK-encoded contents. +// +// This type of frame does not appear on the wire and is only returned +// by the Framer when Framer.ReadMetaHeaders is set. +type MetaHeadersFrame struct { + *HeadersFrame + + // Fields are the fields contained in the HEADERS and + // CONTINUATION frames. The underlying slice is owned by the + // Framer and must not be retained after the next call to + // ReadFrame. + // + // Fields are guaranteed to be in the correct http2 order and + // not have unknown pseudo header fields or invalid header + // field names or values. Required pseudo header fields may be + // missing, however. Use the MetaHeadersFrame.Pseudo accessor + // method access pseudo headers. + Fields []hpack.HeaderField + + // Truncated is whether the max header list size limit was hit + // and Fields is incomplete. The hpack decoder state is still + // valid, however. + Truncated bool +} + +// PseudoValue returns the given pseudo header field's value. +// The provided pseudo field should not contain the leading colon. +func (mh *MetaHeadersFrame) PseudoValue(pseudo string) string { + for _, hf := range mh.Fields { + if !hf.IsPseudo() { + return "" + } + if hf.Name[1:] == pseudo { + return hf.Value + } + } + return "" +} + +// RegularFields returns the regular (non-pseudo) header fields of mh. +// The caller does not own the returned slice. +func (mh *MetaHeadersFrame) RegularFields() []hpack.HeaderField { + for i, hf := range mh.Fields { + if !hf.IsPseudo() { + return mh.Fields[i:] + } + } + return nil +} + +// PseudoFields returns the pseudo header fields of mh. +// The caller does not own the returned slice. +func (mh *MetaHeadersFrame) PseudoFields() []hpack.HeaderField { + for i, hf := range mh.Fields { + if !hf.IsPseudo() { + return mh.Fields[:i] + } + } + return mh.Fields +} + +func (mh *MetaHeadersFrame) checkPseudos() error { + var isRequest, isResponse bool + pf := mh.PseudoFields() + for i, hf := range pf { + switch hf.Name { + case ":method", ":path", ":scheme", ":authority": + isRequest = true + case ":status": + isResponse = true + default: + return pseudoHeaderError(hf.Name) + } + // Check for duplicates. + // This would be a bad algorithm, but N is 4. + // And this doesn't allocate. + for _, hf2 := range pf[:i] { + if hf.Name == hf2.Name { + return duplicatePseudoHeaderError(hf.Name) + } + } + } + if isRequest && isResponse { + return errMixPseudoHeaderTypes + } + return nil +} + +func (fr *Framer) maxHeaderStringLen() int { + v := fr.maxHeaderListSize() + if uint32(int(v)) == v { + return int(v) + } + // They had a crazy big number for MaxHeaderBytes anyway, + // so give them unlimited header lengths: + return 0 +} + +// readMetaFrame returns 0 or more CONTINUATION frames from fr and +// merge them into into the provided hf and returns a MetaHeadersFrame +// with the decoded hpack values. +func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { + if fr.AllowIllegalReads { + return nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders") + } + mh := &MetaHeadersFrame{ + HeadersFrame: hf, + } + var remainSize = fr.maxHeaderListSize() + var sawRegular bool + + var invalid error // pseudo header field errors + hdec := fr.ReadMetaHeaders + hdec.SetEmitEnabled(true) + hdec.SetMaxStringLength(fr.maxHeaderStringLen()) + hdec.SetEmitFunc(func(hf hpack.HeaderField) { + if !httplex.ValidHeaderFieldValue(hf.Value) { + invalid = headerFieldValueError(hf.Value) + } + isPseudo := strings.HasPrefix(hf.Name, ":") + if isPseudo { + if sawRegular { + invalid = errPseudoAfterRegular + } + } else { + sawRegular = true + if !validWireHeaderFieldName(hf.Name) { + invalid = headerFieldNameError(hf.Name) + } + } + + if invalid != nil { + hdec.SetEmitEnabled(false) + return + } + + size := hf.Size() + if size > remainSize { + hdec.SetEmitEnabled(false) + mh.Truncated = true + return + } + remainSize -= size + + mh.Fields = append(mh.Fields, hf) + }) + // Lose reference to MetaHeadersFrame: + defer hdec.SetEmitFunc(func(hf hpack.HeaderField) {}) + + var hc headersOrContinuation = hf + for { + frag := hc.HeaderBlockFragment() + if _, err := hdec.Write(frag); err != nil { + return nil, ConnectionError(ErrCodeCompression) + } + + if hc.HeadersEnded() { + break + } + if f, err := fr.ReadFrame(); err != nil { + return nil, err + } else { + hc = f.(*ContinuationFrame) // guaranteed by checkFrameOrder + } + } + + mh.HeadersFrame.headerFragBuf = nil + mh.HeadersFrame.invalidate() + + if err := hdec.Close(); err != nil { + return nil, ConnectionError(ErrCodeCompression) + } + if invalid != nil { + fr.errDetail = invalid + return nil, StreamError{mh.StreamID, ErrCodeProtocol} + } + if err := mh.checkPseudos(); err != nil { + fr.errDetail = err + return nil, StreamError{mh.StreamID, ErrCodeProtocol} + } + return mh, nil +} + +func summarizeFrame(f Frame) string { + var buf bytes.Buffer + f.Header().writeDebug(&buf) + switch f := f.(type) { + case *SettingsFrame: + n := 0 + f.ForeachSetting(func(s Setting) error { + n++ + if n == 1 { + buf.WriteString(", settings:") + } + fmt.Fprintf(&buf, " %v=%v,", s.ID, s.Val) + return nil + }) + if n > 0 { + buf.Truncate(buf.Len() - 1) // remove trailing comma + } + case *DataFrame: + data := f.Data() + const max = 256 + if len(data) > max { + data = data[:max] + } + fmt.Fprintf(&buf, " data=%q", data) + if len(f.Data()) > max { + fmt.Fprintf(&buf, " (%d bytes omitted)", len(f.Data())-max) + } + case *WindowUpdateFrame: + if f.StreamID == 0 { + buf.WriteString(" (conn)") + } + fmt.Fprintf(&buf, " incr=%v", f.Increment) + case *PingFrame: + fmt.Fprintf(&buf, " ping=%q", f.Data[:]) + case *GoAwayFrame: + fmt.Fprintf(&buf, " LastStreamID=%v ErrCode=%v Debug=%q", + f.LastStreamID, f.ErrCode, f.debugData) + case *RSTStreamFrame: + fmt.Fprintf(&buf, " ErrCode=%v", f.ErrCode) + } + return buf.String() +} diff --git a/vendor/golang.org/x/net/http2/go16.go b/vendor/golang.org/x/net/http2/go16.go new file mode 100644 index 0000000000..2b72855f55 --- /dev/null +++ b/vendor/golang.org/x/net/http2/go16.go @@ -0,0 +1,43 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.6 + +package http2 + +import ( + "crypto/tls" + "net/http" + "time" +) + +func transportExpectContinueTimeout(t1 *http.Transport) time.Duration { + return t1.ExpectContinueTimeout +} + +// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec. +func isBadCipher(cipher uint16) bool { + switch cipher { + case tls.TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_GCM_SHA256, + tls.TLS_RSA_WITH_AES_256_GCM_SHA384, + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: + // Reject cipher suites from Appendix A. + // "This list includes those cipher suites that do not + // offer an ephemeral key exchange and those that are + // based on the TLS null, stream or block cipher type" + return true + default: + return false + } +} diff --git a/vendor/golang.org/x/net/http2/go17.go b/vendor/golang.org/x/net/http2/go17.go new file mode 100644 index 0000000000..730319dd5a --- /dev/null +++ b/vendor/golang.org/x/net/http2/go17.go @@ -0,0 +1,94 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7 + +package http2 + +import ( + "context" + "net" + "net/http" + "net/http/httptrace" + "time" +) + +type contextContext interface { + context.Context +} + +func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) { + ctx, cancel = context.WithCancel(context.Background()) + ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr()) + if hs := opts.baseConfig(); hs != nil { + ctx = context.WithValue(ctx, http.ServerContextKey, hs) + } + return +} + +func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) { + return context.WithCancel(ctx) +} + +func requestWithContext(req *http.Request, ctx contextContext) *http.Request { + return req.WithContext(ctx) +} + +type clientTrace httptrace.ClientTrace + +func reqContext(r *http.Request) context.Context { return r.Context() } + +func setResponseUncompressed(res *http.Response) { res.Uncompressed = true } + +func traceGotConn(req *http.Request, cc *ClientConn) { + trace := httptrace.ContextClientTrace(req.Context()) + if trace == nil || trace.GotConn == nil { + return + } + ci := httptrace.GotConnInfo{Conn: cc.tconn} + cc.mu.Lock() + ci.Reused = cc.nextStreamID > 1 + ci.WasIdle = len(cc.streams) == 0 && ci.Reused + if ci.WasIdle && !cc.lastActive.IsZero() { + ci.IdleTime = time.Now().Sub(cc.lastActive) + } + cc.mu.Unlock() + + trace.GotConn(ci) +} + +func traceWroteHeaders(trace *clientTrace) { + if trace != nil && trace.WroteHeaders != nil { + trace.WroteHeaders() + } +} + +func traceGot100Continue(trace *clientTrace) { + if trace != nil && trace.Got100Continue != nil { + trace.Got100Continue() + } +} + +func traceWait100Continue(trace *clientTrace) { + if trace != nil && trace.Wait100Continue != nil { + trace.Wait100Continue() + } +} + +func traceWroteRequest(trace *clientTrace, err error) { + if trace != nil && trace.WroteRequest != nil { + trace.WroteRequest(httptrace.WroteRequestInfo{Err: err}) + } +} + +func traceFirstResponseByte(trace *clientTrace) { + if trace != nil && trace.GotFirstResponseByte != nil { + trace.GotFirstResponseByte() + } +} + +func requestTrace(req *http.Request) *clientTrace { + trace := httptrace.ContextClientTrace(req.Context()) + return (*clientTrace)(trace) +} diff --git a/vendor/golang.org/x/net/http2/gotrack.go b/vendor/golang.org/x/net/http2/gotrack.go new file mode 100644 index 0000000000..9933c9f8c7 --- /dev/null +++ b/vendor/golang.org/x/net/http2/gotrack.go @@ -0,0 +1,170 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Defensive debug-only utility to track that functions run on the +// goroutine that they're supposed to. + +package http2 + +import ( + "bytes" + "errors" + "fmt" + "os" + "runtime" + "strconv" + "sync" +) + +var DebugGoroutines = os.Getenv("DEBUG_HTTP2_GOROUTINES") == "1" + +type goroutineLock uint64 + +func newGoroutineLock() goroutineLock { + if !DebugGoroutines { + return 0 + } + return goroutineLock(curGoroutineID()) +} + +func (g goroutineLock) check() { + if !DebugGoroutines { + return + } + if curGoroutineID() != uint64(g) { + panic("running on the wrong goroutine") + } +} + +func (g goroutineLock) checkNotOn() { + if !DebugGoroutines { + return + } + if curGoroutineID() == uint64(g) { + panic("running on the wrong goroutine") + } +} + +var goroutineSpace = []byte("goroutine ") + +func curGoroutineID() uint64 { + bp := littleBuf.Get().(*[]byte) + defer littleBuf.Put(bp) + b := *bp + b = b[:runtime.Stack(b, false)] + // Parse the 4707 out of "goroutine 4707 [" + b = bytes.TrimPrefix(b, goroutineSpace) + i := bytes.IndexByte(b, ' ') + if i < 0 { + panic(fmt.Sprintf("No space found in %q", b)) + } + b = b[:i] + n, err := parseUintBytes(b, 10, 64) + if err != nil { + panic(fmt.Sprintf("Failed to parse goroutine ID out of %q: %v", b, err)) + } + return n +} + +var littleBuf = sync.Pool{ + New: func() interface{} { + buf := make([]byte, 64) + return &buf + }, +} + +// parseUintBytes is like strconv.ParseUint, but using a []byte. +func parseUintBytes(s []byte, base int, bitSize int) (n uint64, err error) { + var cutoff, maxVal uint64 + + if bitSize == 0 { + bitSize = int(strconv.IntSize) + } + + s0 := s + switch { + case len(s) < 1: + err = strconv.ErrSyntax + goto Error + + case 2 <= base && base <= 36: + // valid base; nothing to do + + case base == 0: + // Look for octal, hex prefix. + switch { + case s[0] == '0' && len(s) > 1 && (s[1] == 'x' || s[1] == 'X'): + base = 16 + s = s[2:] + if len(s) < 1 { + err = strconv.ErrSyntax + goto Error + } + case s[0] == '0': + base = 8 + default: + base = 10 + } + + default: + err = errors.New("invalid base " + strconv.Itoa(base)) + goto Error + } + + n = 0 + cutoff = cutoff64(base) + maxVal = 1<= base { + n = 0 + err = strconv.ErrSyntax + goto Error + } + + if n >= cutoff { + // n*base overflows + n = 1<<64 - 1 + err = strconv.ErrRange + goto Error + } + n *= uint64(base) + + n1 := n + uint64(v) + if n1 < n || n1 > maxVal { + // n+v overflows + n = 1<<64 - 1 + err = strconv.ErrRange + goto Error + } + n = n1 + } + + return n, nil + +Error: + return n, &strconv.NumError{Func: "ParseUint", Num: string(s0), Err: err} +} + +// Return the first number n such that n*base >= 1<<64. +func cutoff64(base int) uint64 { + if base < 2 { + return 0 + } + return (1<<64-1)/uint64(base) + 1 +} diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/http2/headermap.go new file mode 100644 index 0000000000..c2805f6ac4 --- /dev/null +++ b/vendor/golang.org/x/net/http2/headermap.go @@ -0,0 +1,78 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "net/http" + "strings" +) + +var ( + commonLowerHeader = map[string]string{} // Go-Canonical-Case -> lower-case + commonCanonHeader = map[string]string{} // lower-case -> Go-Canonical-Case +) + +func init() { + for _, v := range []string{ + "accept", + "accept-charset", + "accept-encoding", + "accept-language", + "accept-ranges", + "age", + "access-control-allow-origin", + "allow", + "authorization", + "cache-control", + "content-disposition", + "content-encoding", + "content-language", + "content-length", + "content-location", + "content-range", + "content-type", + "cookie", + "date", + "etag", + "expect", + "expires", + "from", + "host", + "if-match", + "if-modified-since", + "if-none-match", + "if-unmodified-since", + "last-modified", + "link", + "location", + "max-forwards", + "proxy-authenticate", + "proxy-authorization", + "range", + "referer", + "refresh", + "retry-after", + "server", + "set-cookie", + "strict-transport-security", + "trailer", + "transfer-encoding", + "user-agent", + "vary", + "via", + "www-authenticate", + } { + chk := http.CanonicalHeaderKey(v) + commonLowerHeader[chk] = v + commonCanonHeader[v] = chk + } +} + +func lowerHeader(v string) string { + if s, ok := commonLowerHeader[v]; ok { + return s + } + return strings.ToLower(v) +} diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go new file mode 100644 index 0000000000..f9bb033984 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -0,0 +1,251 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package hpack + +import ( + "io" +) + +const ( + uint32Max = ^uint32(0) + initialHeaderTableSize = 4096 +) + +type Encoder struct { + dynTab dynamicTable + // minSize is the minimum table size set by + // SetMaxDynamicTableSize after the previous Header Table Size + // Update. + minSize uint32 + // maxSizeLimit is the maximum table size this encoder + // supports. This will protect the encoder from too large + // size. + maxSizeLimit uint32 + // tableSizeUpdate indicates whether "Header Table Size + // Update" is required. + tableSizeUpdate bool + w io.Writer + buf []byte +} + +// NewEncoder returns a new Encoder which performs HPACK encoding. An +// encoded data is written to w. +func NewEncoder(w io.Writer) *Encoder { + e := &Encoder{ + minSize: uint32Max, + maxSizeLimit: initialHeaderTableSize, + tableSizeUpdate: false, + w: w, + } + e.dynTab.setMaxSize(initialHeaderTableSize) + return e +} + +// WriteField encodes f into a single Write to e's underlying Writer. +// This function may also produce bytes for "Header Table Size Update" +// if necessary. If produced, it is done before encoding f. +func (e *Encoder) WriteField(f HeaderField) error { + e.buf = e.buf[:0] + + if e.tableSizeUpdate { + e.tableSizeUpdate = false + if e.minSize < e.dynTab.maxSize { + e.buf = appendTableSize(e.buf, e.minSize) + } + e.minSize = uint32Max + e.buf = appendTableSize(e.buf, e.dynTab.maxSize) + } + + idx, nameValueMatch := e.searchTable(f) + if nameValueMatch { + e.buf = appendIndexed(e.buf, idx) + } else { + indexing := e.shouldIndex(f) + if indexing { + e.dynTab.add(f) + } + + if idx == 0 { + e.buf = appendNewName(e.buf, f, indexing) + } else { + e.buf = appendIndexedName(e.buf, f, idx, indexing) + } + } + n, err := e.w.Write(e.buf) + if err == nil && n != len(e.buf) { + err = io.ErrShortWrite + } + return err +} + +// searchTable searches f in both stable and dynamic header tables. +// The static header table is searched first. Only when there is no +// exact match for both name and value, the dynamic header table is +// then searched. If there is no match, i is 0. If both name and value +// match, i is the matched index and nameValueMatch becomes true. If +// only name matches, i points to that index and nameValueMatch +// becomes false. +func (e *Encoder) searchTable(f HeaderField) (i uint64, nameValueMatch bool) { + for idx, hf := range staticTable { + if !constantTimeStringCompare(hf.Name, f.Name) { + continue + } + if i == 0 { + i = uint64(idx + 1) + } + if f.Sensitive { + continue + } + if !constantTimeStringCompare(hf.Value, f.Value) { + continue + } + i = uint64(idx + 1) + nameValueMatch = true + return + } + + j, nameValueMatch := e.dynTab.search(f) + if nameValueMatch || (i == 0 && j != 0) { + i = j + uint64(len(staticTable)) + } + return +} + +// SetMaxDynamicTableSize changes the dynamic header table size to v. +// The actual size is bounded by the value passed to +// SetMaxDynamicTableSizeLimit. +func (e *Encoder) SetMaxDynamicTableSize(v uint32) { + if v > e.maxSizeLimit { + v = e.maxSizeLimit + } + if v < e.minSize { + e.minSize = v + } + e.tableSizeUpdate = true + e.dynTab.setMaxSize(v) +} + +// SetMaxDynamicTableSizeLimit changes the maximum value that can be +// specified in SetMaxDynamicTableSize to v. By default, it is set to +// 4096, which is the same size of the default dynamic header table +// size described in HPACK specification. If the current maximum +// dynamic header table size is strictly greater than v, "Header Table +// Size Update" will be done in the next WriteField call and the +// maximum dynamic header table size is truncated to v. +func (e *Encoder) SetMaxDynamicTableSizeLimit(v uint32) { + e.maxSizeLimit = v + if e.dynTab.maxSize > v { + e.tableSizeUpdate = true + e.dynTab.setMaxSize(v) + } +} + +// shouldIndex reports whether f should be indexed. +func (e *Encoder) shouldIndex(f HeaderField) bool { + return !f.Sensitive && f.Size() <= e.dynTab.maxSize +} + +// appendIndexed appends index i, as encoded in "Indexed Header Field" +// representation, to dst and returns the extended buffer. +func appendIndexed(dst []byte, i uint64) []byte { + first := len(dst) + dst = appendVarInt(dst, 7, i) + dst[first] |= 0x80 + return dst +} + +// appendNewName appends f, as encoded in one of "Literal Header field +// - New Name" representation variants, to dst and returns the +// extended buffer. +// +// If f.Sensitive is true, "Never Indexed" representation is used. If +// f.Sensitive is false and indexing is true, "Inremental Indexing" +// representation is used. +func appendNewName(dst []byte, f HeaderField, indexing bool) []byte { + dst = append(dst, encodeTypeByte(indexing, f.Sensitive)) + dst = appendHpackString(dst, f.Name) + return appendHpackString(dst, f.Value) +} + +// appendIndexedName appends f and index i referring indexed name +// entry, as encoded in one of "Literal Header field - Indexed Name" +// representation variants, to dst and returns the extended buffer. +// +// If f.Sensitive is true, "Never Indexed" representation is used. If +// f.Sensitive is false and indexing is true, "Incremental Indexing" +// representation is used. +func appendIndexedName(dst []byte, f HeaderField, i uint64, indexing bool) []byte { + first := len(dst) + var n byte + if indexing { + n = 6 + } else { + n = 4 + } + dst = appendVarInt(dst, n, i) + dst[first] |= encodeTypeByte(indexing, f.Sensitive) + return appendHpackString(dst, f.Value) +} + +// appendTableSize appends v, as encoded in "Header Table Size Update" +// representation, to dst and returns the extended buffer. +func appendTableSize(dst []byte, v uint32) []byte { + first := len(dst) + dst = appendVarInt(dst, 5, uint64(v)) + dst[first] |= 0x20 + return dst +} + +// appendVarInt appends i, as encoded in variable integer form using n +// bit prefix, to dst and returns the extended buffer. +// +// See +// http://http2.github.io/http2-spec/compression.html#integer.representation +func appendVarInt(dst []byte, n byte, i uint64) []byte { + k := uint64((1 << n) - 1) + if i < k { + return append(dst, byte(i)) + } + dst = append(dst, byte(k)) + i -= k + for ; i >= 128; i >>= 7 { + dst = append(dst, byte(0x80|(i&0x7f))) + } + return append(dst, byte(i)) +} + +// appendHpackString appends s, as encoded in "String Literal" +// representation, to dst and returns the the extended buffer. +// +// s will be encoded in Huffman codes only when it produces strictly +// shorter byte string. +func appendHpackString(dst []byte, s string) []byte { + huffmanLength := HuffmanEncodeLength(s) + if huffmanLength < uint64(len(s)) { + first := len(dst) + dst = appendVarInt(dst, 7, huffmanLength) + dst = AppendHuffmanString(dst, s) + dst[first] |= 0x80 + } else { + dst = appendVarInt(dst, 7, uint64(len(s))) + dst = append(dst, s...) + } + return dst +} + +// encodeTypeByte returns type byte. If sensitive is true, type byte +// for "Never Indexed" representation is returned. If sensitive is +// false and indexing is true, type byte for "Incremental Indexing" +// representation is returned. Otherwise, type byte for "Without +// Indexing" is returned. +func encodeTypeByte(indexing, sensitive bool) byte { + if sensitive { + return 0x10 + } + if indexing { + return 0x40 + } + return 0 +} diff --git a/vendor/golang.org/x/net/http2/hpack/hpack.go b/vendor/golang.org/x/net/http2/hpack/hpack.go new file mode 100644 index 0000000000..8aa197ad67 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/hpack.go @@ -0,0 +1,542 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package hpack implements HPACK, a compression format for +// efficiently representing HTTP header fields in the context of HTTP/2. +// +// See http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09 +package hpack + +import ( + "bytes" + "errors" + "fmt" +) + +// A DecodingError is something the spec defines as a decoding error. +type DecodingError struct { + Err error +} + +func (de DecodingError) Error() string { + return fmt.Sprintf("decoding error: %v", de.Err) +} + +// An InvalidIndexError is returned when an encoder references a table +// entry before the static table or after the end of the dynamic table. +type InvalidIndexError int + +func (e InvalidIndexError) Error() string { + return fmt.Sprintf("invalid indexed representation index %d", int(e)) +} + +// A HeaderField is a name-value pair. Both the name and value are +// treated as opaque sequences of octets. +type HeaderField struct { + Name, Value string + + // Sensitive means that this header field should never be + // indexed. + Sensitive bool +} + +// IsPseudo reports whether the header field is an http2 pseudo header. +// That is, it reports whether it starts with a colon. +// It is not otherwise guaranteed to be a valid pseudo header field, +// though. +func (hf HeaderField) IsPseudo() bool { + return len(hf.Name) != 0 && hf.Name[0] == ':' +} + +func (hf HeaderField) String() string { + var suffix string + if hf.Sensitive { + suffix = " (sensitive)" + } + return fmt.Sprintf("header field %q = %q%s", hf.Name, hf.Value, suffix) +} + +// Size returns the size of an entry per RFC 7540 section 5.2. +func (hf HeaderField) Size() uint32 { + // http://http2.github.io/http2-spec/compression.html#rfc.section.4.1 + // "The size of the dynamic table is the sum of the size of + // its entries. The size of an entry is the sum of its name's + // length in octets (as defined in Section 5.2), its value's + // length in octets (see Section 5.2), plus 32. The size of + // an entry is calculated using the length of the name and + // value without any Huffman encoding applied." + + // This can overflow if somebody makes a large HeaderField + // Name and/or Value by hand, but we don't care, because that + // won't happen on the wire because the encoding doesn't allow + // it. + return uint32(len(hf.Name) + len(hf.Value) + 32) +} + +// A Decoder is the decoding context for incremental processing of +// header blocks. +type Decoder struct { + dynTab dynamicTable + emit func(f HeaderField) + + emitEnabled bool // whether calls to emit are enabled + maxStrLen int // 0 means unlimited + + // buf is the unparsed buffer. It's only written to + // saveBuf if it was truncated in the middle of a header + // block. Because it's usually not owned, we can only + // process it under Write. + buf []byte // not owned; only valid during Write + + // saveBuf is previous data passed to Write which we weren't able + // to fully parse before. Unlike buf, we own this data. + saveBuf bytes.Buffer +} + +// NewDecoder returns a new decoder with the provided maximum dynamic +// table size. The emitFunc will be called for each valid field +// parsed, in the same goroutine as calls to Write, before Write returns. +func NewDecoder(maxDynamicTableSize uint32, emitFunc func(f HeaderField)) *Decoder { + d := &Decoder{ + emit: emitFunc, + emitEnabled: true, + } + d.dynTab.allowedMaxSize = maxDynamicTableSize + d.dynTab.setMaxSize(maxDynamicTableSize) + return d +} + +// ErrStringLength is returned by Decoder.Write when the max string length +// (as configured by Decoder.SetMaxStringLength) would be violated. +var ErrStringLength = errors.New("hpack: string too long") + +// SetMaxStringLength sets the maximum size of a HeaderField name or +// value string. If a string exceeds this length (even after any +// decompression), Write will return ErrStringLength. +// A value of 0 means unlimited and is the default from NewDecoder. +func (d *Decoder) SetMaxStringLength(n int) { + d.maxStrLen = n +} + +// SetEmitFunc changes the callback used when new header fields +// are decoded. +// It must be non-nil. It does not affect EmitEnabled. +func (d *Decoder) SetEmitFunc(emitFunc func(f HeaderField)) { + d.emit = emitFunc +} + +// SetEmitEnabled controls whether the emitFunc provided to NewDecoder +// should be called. The default is true. +// +// This facility exists to let servers enforce MAX_HEADER_LIST_SIZE +// while still decoding and keeping in-sync with decoder state, but +// without doing unnecessary decompression or generating unnecessary +// garbage for header fields past the limit. +func (d *Decoder) SetEmitEnabled(v bool) { d.emitEnabled = v } + +// EmitEnabled reports whether calls to the emitFunc provided to NewDecoder +// are currently enabled. The default is true. +func (d *Decoder) EmitEnabled() bool { return d.emitEnabled } + +// TODO: add method *Decoder.Reset(maxSize, emitFunc) to let callers re-use Decoders and their +// underlying buffers for garbage reasons. + +func (d *Decoder) SetMaxDynamicTableSize(v uint32) { + d.dynTab.setMaxSize(v) +} + +// SetAllowedMaxDynamicTableSize sets the upper bound that the encoded +// stream (via dynamic table size updates) may set the maximum size +// to. +func (d *Decoder) SetAllowedMaxDynamicTableSize(v uint32) { + d.dynTab.allowedMaxSize = v +} + +type dynamicTable struct { + // ents is the FIFO described at + // http://http2.github.io/http2-spec/compression.html#rfc.section.2.3.2 + // The newest (low index) is append at the end, and items are + // evicted from the front. + ents []HeaderField + size uint32 + maxSize uint32 // current maxSize + allowedMaxSize uint32 // maxSize may go up to this, inclusive +} + +func (dt *dynamicTable) setMaxSize(v uint32) { + dt.maxSize = v + dt.evict() +} + +// TODO: change dynamicTable to be a struct with a slice and a size int field, +// per http://http2.github.io/http2-spec/compression.html#rfc.section.4.1: +// +// +// Then make add increment the size. maybe the max size should move from Decoder to +// dynamicTable and add should return an ok bool if there was enough space. +// +// Later we'll need a remove operation on dynamicTable. + +func (dt *dynamicTable) add(f HeaderField) { + dt.ents = append(dt.ents, f) + dt.size += f.Size() + dt.evict() +} + +// If we're too big, evict old stuff (front of the slice) +func (dt *dynamicTable) evict() { + base := dt.ents // keep base pointer of slice + for dt.size > dt.maxSize { + dt.size -= dt.ents[0].Size() + dt.ents = dt.ents[1:] + } + + // Shift slice contents down if we evicted things. + if len(dt.ents) != len(base) { + copy(base, dt.ents) + dt.ents = base[:len(dt.ents)] + } +} + +// constantTimeStringCompare compares string a and b in a constant +// time manner. +func constantTimeStringCompare(a, b string) bool { + if len(a) != len(b) { + return false + } + + c := byte(0) + + for i := 0; i < len(a); i++ { + c |= a[i] ^ b[i] + } + + return c == 0 +} + +// Search searches f in the table. The return value i is 0 if there is +// no name match. If there is name match or name/value match, i is the +// index of that entry (1-based). If both name and value match, +// nameValueMatch becomes true. +func (dt *dynamicTable) search(f HeaderField) (i uint64, nameValueMatch bool) { + l := len(dt.ents) + for j := l - 1; j >= 0; j-- { + ent := dt.ents[j] + if !constantTimeStringCompare(ent.Name, f.Name) { + continue + } + if i == 0 { + i = uint64(l - j) + } + if f.Sensitive { + continue + } + if !constantTimeStringCompare(ent.Value, f.Value) { + continue + } + i = uint64(l - j) + nameValueMatch = true + return + } + return +} + +func (d *Decoder) maxTableIndex() int { + return len(d.dynTab.ents) + len(staticTable) +} + +func (d *Decoder) at(i uint64) (hf HeaderField, ok bool) { + if i < 1 { + return + } + if i > uint64(d.maxTableIndex()) { + return + } + if i <= uint64(len(staticTable)) { + return staticTable[i-1], true + } + dents := d.dynTab.ents + return dents[len(dents)-(int(i)-len(staticTable))], true +} + +// Decode decodes an entire block. +// +// TODO: remove this method and make it incremental later? This is +// easier for debugging now. +func (d *Decoder) DecodeFull(p []byte) ([]HeaderField, error) { + var hf []HeaderField + saveFunc := d.emit + defer func() { d.emit = saveFunc }() + d.emit = func(f HeaderField) { hf = append(hf, f) } + if _, err := d.Write(p); err != nil { + return nil, err + } + if err := d.Close(); err != nil { + return nil, err + } + return hf, nil +} + +func (d *Decoder) Close() error { + if d.saveBuf.Len() > 0 { + d.saveBuf.Reset() + return DecodingError{errors.New("truncated headers")} + } + return nil +} + +func (d *Decoder) Write(p []byte) (n int, err error) { + if len(p) == 0 { + // Prevent state machine CPU attacks (making us redo + // work up to the point of finding out we don't have + // enough data) + return + } + // Only copy the data if we have to. Optimistically assume + // that p will contain a complete header block. + if d.saveBuf.Len() == 0 { + d.buf = p + } else { + d.saveBuf.Write(p) + d.buf = d.saveBuf.Bytes() + d.saveBuf.Reset() + } + + for len(d.buf) > 0 { + err = d.parseHeaderFieldRepr() + if err == errNeedMore { + // Extra paranoia, making sure saveBuf won't + // get too large. All the varint and string + // reading code earlier should already catch + // overlong things and return ErrStringLength, + // but keep this as a last resort. + const varIntOverhead = 8 // conservative + if d.maxStrLen != 0 && int64(len(d.buf)) > 2*(int64(d.maxStrLen)+varIntOverhead) { + return 0, ErrStringLength + } + d.saveBuf.Write(d.buf) + return len(p), nil + } + if err != nil { + break + } + } + return len(p), err +} + +// errNeedMore is an internal sentinel error value that means the +// buffer is truncated and we need to read more data before we can +// continue parsing. +var errNeedMore = errors.New("need more data") + +type indexType int + +const ( + indexedTrue indexType = iota + indexedFalse + indexedNever +) + +func (v indexType) indexed() bool { return v == indexedTrue } +func (v indexType) sensitive() bool { return v == indexedNever } + +// returns errNeedMore if there isn't enough data available. +// any other error is fatal. +// consumes d.buf iff it returns nil. +// precondition: must be called with len(d.buf) > 0 +func (d *Decoder) parseHeaderFieldRepr() error { + b := d.buf[0] + switch { + case b&128 != 0: + // Indexed representation. + // High bit set? + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.1 + return d.parseFieldIndexed() + case b&192 == 64: + // 6.2.1 Literal Header Field with Incremental Indexing + // 0b10xxxxxx: top two bits are 10 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.1 + return d.parseFieldLiteral(6, indexedTrue) + case b&240 == 0: + // 6.2.2 Literal Header Field without Indexing + // 0b0000xxxx: top four bits are 0000 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.2 + return d.parseFieldLiteral(4, indexedFalse) + case b&240 == 16: + // 6.2.3 Literal Header Field never Indexed + // 0b0001xxxx: top four bits are 0001 + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.2.3 + return d.parseFieldLiteral(4, indexedNever) + case b&224 == 32: + // 6.3 Dynamic Table Size Update + // Top three bits are '001'. + // http://http2.github.io/http2-spec/compression.html#rfc.section.6.3 + return d.parseDynamicTableSizeUpdate() + } + + return DecodingError{errors.New("invalid encoding")} +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseFieldIndexed() error { + buf := d.buf + idx, buf, err := readVarInt(7, buf) + if err != nil { + return err + } + hf, ok := d.at(idx) + if !ok { + return DecodingError{InvalidIndexError(idx)} + } + d.buf = buf + return d.callEmit(HeaderField{Name: hf.Name, Value: hf.Value}) +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseFieldLiteral(n uint8, it indexType) error { + buf := d.buf + nameIdx, buf, err := readVarInt(n, buf) + if err != nil { + return err + } + + var hf HeaderField + wantStr := d.emitEnabled || it.indexed() + if nameIdx > 0 { + ihf, ok := d.at(nameIdx) + if !ok { + return DecodingError{InvalidIndexError(nameIdx)} + } + hf.Name = ihf.Name + } else { + hf.Name, buf, err = d.readString(buf, wantStr) + if err != nil { + return err + } + } + hf.Value, buf, err = d.readString(buf, wantStr) + if err != nil { + return err + } + d.buf = buf + if it.indexed() { + d.dynTab.add(hf) + } + hf.Sensitive = it.sensitive() + return d.callEmit(hf) +} + +func (d *Decoder) callEmit(hf HeaderField) error { + if d.maxStrLen != 0 { + if len(hf.Name) > d.maxStrLen || len(hf.Value) > d.maxStrLen { + return ErrStringLength + } + } + if d.emitEnabled { + d.emit(hf) + } + return nil +} + +// (same invariants and behavior as parseHeaderFieldRepr) +func (d *Decoder) parseDynamicTableSizeUpdate() error { + buf := d.buf + size, buf, err := readVarInt(5, buf) + if err != nil { + return err + } + if size > uint64(d.dynTab.allowedMaxSize) { + return DecodingError{errors.New("dynamic table size update too large")} + } + d.dynTab.setMaxSize(uint32(size)) + d.buf = buf + return nil +} + +var errVarintOverflow = DecodingError{errors.New("varint integer overflow")} + +// readVarInt reads an unsigned variable length integer off the +// beginning of p. n is the parameter as described in +// http://http2.github.io/http2-spec/compression.html#rfc.section.5.1. +// +// n must always be between 1 and 8. +// +// The returned remain buffer is either a smaller suffix of p, or err != nil. +// The error is errNeedMore if p doesn't contain a complete integer. +func readVarInt(n byte, p []byte) (i uint64, remain []byte, err error) { + if n < 1 || n > 8 { + panic("bad n") + } + if len(p) == 0 { + return 0, p, errNeedMore + } + i = uint64(p[0]) + if n < 8 { + i &= (1 << uint64(n)) - 1 + } + if i < (1< 0 { + b := p[0] + p = p[1:] + i += uint64(b&127) << m + if b&128 == 0 { + return i, p, nil + } + m += 7 + if m >= 63 { // TODO: proper overflow check. making this up. + return 0, origP, errVarintOverflow + } + } + return 0, origP, errNeedMore +} + +// readString decodes an hpack string from p. +// +// wantStr is whether s will be used. If false, decompression and +// []byte->string garbage are skipped if s will be ignored +// anyway. This does mean that huffman decoding errors for non-indexed +// strings past the MAX_HEADER_LIST_SIZE are ignored, but the server +// is returning an error anyway, and because they're not indexed, the error +// won't affect the decoding state. +func (d *Decoder) readString(p []byte, wantStr bool) (s string, remain []byte, err error) { + if len(p) == 0 { + return "", p, errNeedMore + } + isHuff := p[0]&128 != 0 + strLen, p, err := readVarInt(7, p) + if err != nil { + return "", p, err + } + if d.maxStrLen != 0 && strLen > uint64(d.maxStrLen) { + return "", nil, ErrStringLength + } + if uint64(len(p)) < strLen { + return "", p, errNeedMore + } + if !isHuff { + if wantStr { + s = string(p[:strLen]) + } + return s, p[strLen:], nil + } + + if wantStr { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() // don't trust others + defer bufPool.Put(buf) + if err := huffmanDecode(buf, d.maxStrLen, p[:strLen]); err != nil { + buf.Reset() + return "", nil, err + } + s = buf.String() + buf.Reset() // be nice to GC + } + return s, p[strLen:], nil +} diff --git a/vendor/golang.org/x/net/http2/hpack/huffman.go b/vendor/golang.org/x/net/http2/hpack/huffman.go new file mode 100644 index 0000000000..8850e39467 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/huffman.go @@ -0,0 +1,212 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package hpack + +import ( + "bytes" + "errors" + "io" + "sync" +) + +var bufPool = sync.Pool{ + New: func() interface{} { return new(bytes.Buffer) }, +} + +// HuffmanDecode decodes the string in v and writes the expanded +// result to w, returning the number of bytes written to w and the +// Write call's return value. At most one Write call is made. +func HuffmanDecode(w io.Writer, v []byte) (int, error) { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() + defer bufPool.Put(buf) + if err := huffmanDecode(buf, 0, v); err != nil { + return 0, err + } + return w.Write(buf.Bytes()) +} + +// HuffmanDecodeToString decodes the string in v. +func HuffmanDecodeToString(v []byte) (string, error) { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() + defer bufPool.Put(buf) + if err := huffmanDecode(buf, 0, v); err != nil { + return "", err + } + return buf.String(), nil +} + +// ErrInvalidHuffman is returned for errors found decoding +// Huffman-encoded strings. +var ErrInvalidHuffman = errors.New("hpack: invalid Huffman-encoded data") + +// huffmanDecode decodes v to buf. +// If maxLen is greater than 0, attempts to write more to buf than +// maxLen bytes will return ErrStringLength. +func huffmanDecode(buf *bytes.Buffer, maxLen int, v []byte) error { + n := rootHuffmanNode + // cur is the bit buffer that has not been fed into n. + // cbits is the number of low order bits in cur that are valid. + // sbits is the number of bits of the symbol prefix being decoded. + cur, cbits, sbits := uint(0), uint8(0), uint8(0) + for _, b := range v { + cur = cur<<8 | uint(b) + cbits += 8 + sbits += 8 + for cbits >= 8 { + idx := byte(cur >> (cbits - 8)) + n = n.children[idx] + if n == nil { + return ErrInvalidHuffman + } + if n.children == nil { + if maxLen != 0 && buf.Len() == maxLen { + return ErrStringLength + } + buf.WriteByte(n.sym) + cbits -= n.codeLen + n = rootHuffmanNode + sbits = cbits + } else { + cbits -= 8 + } + } + } + for cbits > 0 { + n = n.children[byte(cur<<(8-cbits))] + if n == nil { + return ErrInvalidHuffman + } + if n.children != nil || n.codeLen > cbits { + break + } + if maxLen != 0 && buf.Len() == maxLen { + return ErrStringLength + } + buf.WriteByte(n.sym) + cbits -= n.codeLen + n = rootHuffmanNode + sbits = cbits + } + if sbits > 7 { + // Either there was an incomplete symbol, or overlong padding. + // Both are decoding errors per RFC 7541 section 5.2. + return ErrInvalidHuffman + } + if mask := uint(1< 8 { + codeLen -= 8 + i := uint8(code >> codeLen) + if cur.children[i] == nil { + cur.children[i] = newInternalNode() + } + cur = cur.children[i] + } + shift := 8 - codeLen + start, end := int(uint8(code<> (nbits - rembits)) + dst[len(dst)-1] |= t + } + + return dst +} + +// HuffmanEncodeLength returns the number of bytes required to encode +// s in Huffman codes. The result is round up to byte boundary. +func HuffmanEncodeLength(s string) uint64 { + n := uint64(0) + for i := 0; i < len(s); i++ { + n += uint64(huffmanCodeLen[s[i]]) + } + return (n + 7) / 8 +} + +// appendByteToHuffmanCode appends Huffman code for c to dst and +// returns the extended buffer and the remaining bits in the last +// element. The appending is not byte aligned and the remaining bits +// in the last element of dst is given in rembits. +func appendByteToHuffmanCode(dst []byte, rembits uint8, c byte) ([]byte, uint8) { + code := huffmanCodes[c] + nbits := huffmanCodeLen[c] + + for { + if rembits > nbits { + t := uint8(code << (rembits - nbits)) + dst[len(dst)-1] |= t + rembits -= nbits + break + } + + t := uint8(code >> (nbits - rembits)) + dst[len(dst)-1] |= t + + nbits -= rembits + rembits = 8 + + if nbits == 0 { + break + } + + dst = append(dst, 0) + } + + return dst, rembits +} diff --git a/vendor/golang.org/x/net/http2/hpack/tables.go b/vendor/golang.org/x/net/http2/hpack/tables.go new file mode 100644 index 0000000000..b9283a0233 --- /dev/null +++ b/vendor/golang.org/x/net/http2/hpack/tables.go @@ -0,0 +1,352 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package hpack + +func pair(name, value string) HeaderField { + return HeaderField{Name: name, Value: value} +} + +// http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-07#appendix-B +var staticTable = [...]HeaderField{ + pair(":authority", ""), // index 1 (1-based) + pair(":method", "GET"), + pair(":method", "POST"), + pair(":path", "/"), + pair(":path", "/index.html"), + pair(":scheme", "http"), + pair(":scheme", "https"), + pair(":status", "200"), + pair(":status", "204"), + pair(":status", "206"), + pair(":status", "304"), + pair(":status", "400"), + pair(":status", "404"), + pair(":status", "500"), + pair("accept-charset", ""), + pair("accept-encoding", "gzip, deflate"), + pair("accept-language", ""), + pair("accept-ranges", ""), + pair("accept", ""), + pair("access-control-allow-origin", ""), + pair("age", ""), + pair("allow", ""), + pair("authorization", ""), + pair("cache-control", ""), + pair("content-disposition", ""), + pair("content-encoding", ""), + pair("content-language", ""), + pair("content-length", ""), + pair("content-location", ""), + pair("content-range", ""), + pair("content-type", ""), + pair("cookie", ""), + pair("date", ""), + pair("etag", ""), + pair("expect", ""), + pair("expires", ""), + pair("from", ""), + pair("host", ""), + pair("if-match", ""), + pair("if-modified-since", ""), + pair("if-none-match", ""), + pair("if-range", ""), + pair("if-unmodified-since", ""), + pair("last-modified", ""), + pair("link", ""), + pair("location", ""), + pair("max-forwards", ""), + pair("proxy-authenticate", ""), + pair("proxy-authorization", ""), + pair("range", ""), + pair("referer", ""), + pair("refresh", ""), + pair("retry-after", ""), + pair("server", ""), + pair("set-cookie", ""), + pair("strict-transport-security", ""), + pair("transfer-encoding", ""), + pair("user-agent", ""), + pair("vary", ""), + pair("via", ""), + pair("www-authenticate", ""), +} + +var huffmanCodes = [256]uint32{ + 0x1ff8, + 0x7fffd8, + 0xfffffe2, + 0xfffffe3, + 0xfffffe4, + 0xfffffe5, + 0xfffffe6, + 0xfffffe7, + 0xfffffe8, + 0xffffea, + 0x3ffffffc, + 0xfffffe9, + 0xfffffea, + 0x3ffffffd, + 0xfffffeb, + 0xfffffec, + 0xfffffed, + 0xfffffee, + 0xfffffef, + 0xffffff0, + 0xffffff1, + 0xffffff2, + 0x3ffffffe, + 0xffffff3, + 0xffffff4, + 0xffffff5, + 0xffffff6, + 0xffffff7, + 0xffffff8, + 0xffffff9, + 0xffffffa, + 0xffffffb, + 0x14, + 0x3f8, + 0x3f9, + 0xffa, + 0x1ff9, + 0x15, + 0xf8, + 0x7fa, + 0x3fa, + 0x3fb, + 0xf9, + 0x7fb, + 0xfa, + 0x16, + 0x17, + 0x18, + 0x0, + 0x1, + 0x2, + 0x19, + 0x1a, + 0x1b, + 0x1c, + 0x1d, + 0x1e, + 0x1f, + 0x5c, + 0xfb, + 0x7ffc, + 0x20, + 0xffb, + 0x3fc, + 0x1ffa, + 0x21, + 0x5d, + 0x5e, + 0x5f, + 0x60, + 0x61, + 0x62, + 0x63, + 0x64, + 0x65, + 0x66, + 0x67, + 0x68, + 0x69, + 0x6a, + 0x6b, + 0x6c, + 0x6d, + 0x6e, + 0x6f, + 0x70, + 0x71, + 0x72, + 0xfc, + 0x73, + 0xfd, + 0x1ffb, + 0x7fff0, + 0x1ffc, + 0x3ffc, + 0x22, + 0x7ffd, + 0x3, + 0x23, + 0x4, + 0x24, + 0x5, + 0x25, + 0x26, + 0x27, + 0x6, + 0x74, + 0x75, + 0x28, + 0x29, + 0x2a, + 0x7, + 0x2b, + 0x76, + 0x2c, + 0x8, + 0x9, + 0x2d, + 0x77, + 0x78, + 0x79, + 0x7a, + 0x7b, + 0x7ffe, + 0x7fc, + 0x3ffd, + 0x1ffd, + 0xffffffc, + 0xfffe6, + 0x3fffd2, + 0xfffe7, + 0xfffe8, + 0x3fffd3, + 0x3fffd4, + 0x3fffd5, + 0x7fffd9, + 0x3fffd6, + 0x7fffda, + 0x7fffdb, + 0x7fffdc, + 0x7fffdd, + 0x7fffde, + 0xffffeb, + 0x7fffdf, + 0xffffec, + 0xffffed, + 0x3fffd7, + 0x7fffe0, + 0xffffee, + 0x7fffe1, + 0x7fffe2, + 0x7fffe3, + 0x7fffe4, + 0x1fffdc, + 0x3fffd8, + 0x7fffe5, + 0x3fffd9, + 0x7fffe6, + 0x7fffe7, + 0xffffef, + 0x3fffda, + 0x1fffdd, + 0xfffe9, + 0x3fffdb, + 0x3fffdc, + 0x7fffe8, + 0x7fffe9, + 0x1fffde, + 0x7fffea, + 0x3fffdd, + 0x3fffde, + 0xfffff0, + 0x1fffdf, + 0x3fffdf, + 0x7fffeb, + 0x7fffec, + 0x1fffe0, + 0x1fffe1, + 0x3fffe0, + 0x1fffe2, + 0x7fffed, + 0x3fffe1, + 0x7fffee, + 0x7fffef, + 0xfffea, + 0x3fffe2, + 0x3fffe3, + 0x3fffe4, + 0x7ffff0, + 0x3fffe5, + 0x3fffe6, + 0x7ffff1, + 0x3ffffe0, + 0x3ffffe1, + 0xfffeb, + 0x7fff1, + 0x3fffe7, + 0x7ffff2, + 0x3fffe8, + 0x1ffffec, + 0x3ffffe2, + 0x3ffffe3, + 0x3ffffe4, + 0x7ffffde, + 0x7ffffdf, + 0x3ffffe5, + 0xfffff1, + 0x1ffffed, + 0x7fff2, + 0x1fffe3, + 0x3ffffe6, + 0x7ffffe0, + 0x7ffffe1, + 0x3ffffe7, + 0x7ffffe2, + 0xfffff2, + 0x1fffe4, + 0x1fffe5, + 0x3ffffe8, + 0x3ffffe9, + 0xffffffd, + 0x7ffffe3, + 0x7ffffe4, + 0x7ffffe5, + 0xfffec, + 0xfffff3, + 0xfffed, + 0x1fffe6, + 0x3fffe9, + 0x1fffe7, + 0x1fffe8, + 0x7ffff3, + 0x3fffea, + 0x3fffeb, + 0x1ffffee, + 0x1ffffef, + 0xfffff4, + 0xfffff5, + 0x3ffffea, + 0x7ffff4, + 0x3ffffeb, + 0x7ffffe6, + 0x3ffffec, + 0x3ffffed, + 0x7ffffe7, + 0x7ffffe8, + 0x7ffffe9, + 0x7ffffea, + 0x7ffffeb, + 0xffffffe, + 0x7ffffec, + 0x7ffffed, + 0x7ffffee, + 0x7ffffef, + 0x7fffff0, + 0x3ffffee, +} + +var huffmanCodeLen = [256]uint8{ + 13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28, + 28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10, + 13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6, + 15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5, + 6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28, + 20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23, + 24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24, + 22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23, + 21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23, + 26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25, + 19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27, + 20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23, + 26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26, +} diff --git a/vendor/golang.org/x/net/http2/http2.go b/vendor/golang.org/x/net/http2/http2.go new file mode 100644 index 0000000000..0173aed64a --- /dev/null +++ b/vendor/golang.org/x/net/http2/http2.go @@ -0,0 +1,351 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package http2 implements the HTTP/2 protocol. +// +// This package is low-level and intended to be used directly by very +// few people. Most users will use it indirectly through the automatic +// use by the net/http package (from Go 1.6 and later). +// For use in earlier Go versions see ConfigureServer. (Transport support +// requires Go 1.6 or later) +// +// See https://http2.github.io/ for more information on HTTP/2. +// +// See https://http2.golang.org/ for a test server running this code. +package http2 + +import ( + "bufio" + "crypto/tls" + "errors" + "fmt" + "io" + "net/http" + "os" + "sort" + "strconv" + "strings" + "sync" + + "golang.org/x/net/lex/httplex" +) + +var ( + VerboseLogs bool + logFrameWrites bool + logFrameReads bool +) + +func init() { + e := os.Getenv("GODEBUG") + if strings.Contains(e, "http2debug=1") { + VerboseLogs = true + } + if strings.Contains(e, "http2debug=2") { + VerboseLogs = true + logFrameWrites = true + logFrameReads = true + } +} + +const ( + // ClientPreface is the string that must be sent by new + // connections from clients. + ClientPreface = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" + + // SETTINGS_MAX_FRAME_SIZE default + // http://http2.github.io/http2-spec/#rfc.section.6.5.2 + initialMaxFrameSize = 16384 + + // NextProtoTLS is the NPN/ALPN protocol negotiated during + // HTTP/2's TLS setup. + NextProtoTLS = "h2" + + // http://http2.github.io/http2-spec/#SettingValues + initialHeaderTableSize = 4096 + + initialWindowSize = 65535 // 6.9.2 Initial Flow Control Window Size + + defaultMaxReadFrameSize = 1 << 20 +) + +var ( + clientPreface = []byte(ClientPreface) +) + +type streamState int + +const ( + stateIdle streamState = iota + stateOpen + stateHalfClosedLocal + stateHalfClosedRemote + stateResvLocal + stateResvRemote + stateClosed +) + +var stateName = [...]string{ + stateIdle: "Idle", + stateOpen: "Open", + stateHalfClosedLocal: "HalfClosedLocal", + stateHalfClosedRemote: "HalfClosedRemote", + stateResvLocal: "ResvLocal", + stateResvRemote: "ResvRemote", + stateClosed: "Closed", +} + +func (st streamState) String() string { + return stateName[st] +} + +// Setting is a setting parameter: which setting it is, and its value. +type Setting struct { + // ID is which setting is being set. + // See http://http2.github.io/http2-spec/#SettingValues + ID SettingID + + // Val is the value. + Val uint32 +} + +func (s Setting) String() string { + return fmt.Sprintf("[%v = %d]", s.ID, s.Val) +} + +// Valid reports whether the setting is valid. +func (s Setting) Valid() error { + // Limits and error codes from 6.5.2 Defined SETTINGS Parameters + switch s.ID { + case SettingEnablePush: + if s.Val != 1 && s.Val != 0 { + return ConnectionError(ErrCodeProtocol) + } + case SettingInitialWindowSize: + if s.Val > 1<<31-1 { + return ConnectionError(ErrCodeFlowControl) + } + case SettingMaxFrameSize: + if s.Val < 16384 || s.Val > 1<<24-1 { + return ConnectionError(ErrCodeProtocol) + } + } + return nil +} + +// A SettingID is an HTTP/2 setting as defined in +// http://http2.github.io/http2-spec/#iana-settings +type SettingID uint16 + +const ( + SettingHeaderTableSize SettingID = 0x1 + SettingEnablePush SettingID = 0x2 + SettingMaxConcurrentStreams SettingID = 0x3 + SettingInitialWindowSize SettingID = 0x4 + SettingMaxFrameSize SettingID = 0x5 + SettingMaxHeaderListSize SettingID = 0x6 +) + +var settingName = map[SettingID]string{ + SettingHeaderTableSize: "HEADER_TABLE_SIZE", + SettingEnablePush: "ENABLE_PUSH", + SettingMaxConcurrentStreams: "MAX_CONCURRENT_STREAMS", + SettingInitialWindowSize: "INITIAL_WINDOW_SIZE", + SettingMaxFrameSize: "MAX_FRAME_SIZE", + SettingMaxHeaderListSize: "MAX_HEADER_LIST_SIZE", +} + +func (s SettingID) String() string { + if v, ok := settingName[s]; ok { + return v + } + return fmt.Sprintf("UNKNOWN_SETTING_%d", uint16(s)) +} + +var ( + errInvalidHeaderFieldName = errors.New("http2: invalid header field name") + errInvalidHeaderFieldValue = errors.New("http2: invalid header field value") +) + +// validWireHeaderFieldName reports whether v is a valid header field +// name (key). See httplex.ValidHeaderName for the base rules. +// +// Further, http2 says: +// "Just as in HTTP/1.x, header field names are strings of ASCII +// characters that are compared in a case-insensitive +// fashion. However, header field names MUST be converted to +// lowercase prior to their encoding in HTTP/2. " +func validWireHeaderFieldName(v string) bool { + if len(v) == 0 { + return false + } + for _, r := range v { + if !httplex.IsTokenRune(r) { + return false + } + if 'A' <= r && r <= 'Z' { + return false + } + } + return true +} + +var httpCodeStringCommon = map[int]string{} // n -> strconv.Itoa(n) + +func init() { + for i := 100; i <= 999; i++ { + if v := http.StatusText(i); v != "" { + httpCodeStringCommon[i] = strconv.Itoa(i) + } + } +} + +func httpCodeString(code int) string { + if s, ok := httpCodeStringCommon[code]; ok { + return s + } + return strconv.Itoa(code) +} + +// from pkg io +type stringWriter interface { + WriteString(s string) (n int, err error) +} + +// A gate lets two goroutines coordinate their activities. +type gate chan struct{} + +func (g gate) Done() { g <- struct{}{} } +func (g gate) Wait() { <-g } + +// A closeWaiter is like a sync.WaitGroup but only goes 1 to 0 (open to closed). +type closeWaiter chan struct{} + +// Init makes a closeWaiter usable. +// It exists because so a closeWaiter value can be placed inside a +// larger struct and have the Mutex and Cond's memory in the same +// allocation. +func (cw *closeWaiter) Init() { + *cw = make(chan struct{}) +} + +// Close marks the closeWaiter as closed and unblocks any waiters. +func (cw closeWaiter) Close() { + close(cw) +} + +// Wait waits for the closeWaiter to become closed. +func (cw closeWaiter) Wait() { + <-cw +} + +// bufferedWriter is a buffered writer that writes to w. +// Its buffered writer is lazily allocated as needed, to minimize +// idle memory usage with many connections. +type bufferedWriter struct { + w io.Writer // immutable + bw *bufio.Writer // non-nil when data is buffered +} + +func newBufferedWriter(w io.Writer) *bufferedWriter { + return &bufferedWriter{w: w} +} + +var bufWriterPool = sync.Pool{ + New: func() interface{} { + // TODO: pick something better? this is a bit under + // (3 x typical 1500 byte MTU) at least. + return bufio.NewWriterSize(nil, 4<<10) + }, +} + +func (w *bufferedWriter) Write(p []byte) (n int, err error) { + if w.bw == nil { + bw := bufWriterPool.Get().(*bufio.Writer) + bw.Reset(w.w) + w.bw = bw + } + return w.bw.Write(p) +} + +func (w *bufferedWriter) Flush() error { + bw := w.bw + if bw == nil { + return nil + } + err := bw.Flush() + bw.Reset(nil) + bufWriterPool.Put(bw) + w.bw = nil + return err +} + +func mustUint31(v int32) uint32 { + if v < 0 || v > 2147483647 { + panic("out of range") + } + return uint32(v) +} + +// bodyAllowedForStatus reports whether a given response status code +// permits a body. See RFC 2616, section 4.4. +func bodyAllowedForStatus(status int) bool { + switch { + case status >= 100 && status <= 199: + return false + case status == 204: + return false + case status == 304: + return false + } + return true +} + +type httpError struct { + msg string + timeout bool +} + +func (e *httpError) Error() string { return e.msg } +func (e *httpError) Timeout() bool { return e.timeout } +func (e *httpError) Temporary() bool { return true } + +var errTimeout error = &httpError{msg: "http2: timeout awaiting response headers", timeout: true} + +type connectionStater interface { + ConnectionState() tls.ConnectionState +} + +var sorterPool = sync.Pool{New: func() interface{} { return new(sorter) }} + +type sorter struct { + v []string // owned by sorter +} + +func (s *sorter) Len() int { return len(s.v) } +func (s *sorter) Swap(i, j int) { s.v[i], s.v[j] = s.v[j], s.v[i] } +func (s *sorter) Less(i, j int) bool { return s.v[i] < s.v[j] } + +// Keys returns the sorted keys of h. +// +// The returned slice is only valid until s used again or returned to +// its pool. +func (s *sorter) Keys(h http.Header) []string { + keys := s.v[:0] + for k := range h { + keys = append(keys, k) + } + s.v = keys + sort.Sort(s) + return keys +} + +func (s *sorter) SortStrings(ss []string) { + // Our sorter works on s.v, which sorter owners, so + // stash it away while we sort the user's buffer. + save := s.v + s.v = ss + sort.Sort(s) + s.v = save +} diff --git a/vendor/golang.org/x/net/http2/not_go16.go b/vendor/golang.org/x/net/http2/not_go16.go new file mode 100644 index 0000000000..efd2e1282c --- /dev/null +++ b/vendor/golang.org/x/net/http2/not_go16.go @@ -0,0 +1,46 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.6 + +package http2 + +import ( + "crypto/tls" + "net/http" + "time" +) + +func configureTransport(t1 *http.Transport) (*Transport, error) { + return nil, errTransportVersion +} + +func transportExpectContinueTimeout(t1 *http.Transport) time.Duration { + return 0 + +} + +// isBadCipher reports whether the cipher is blacklisted by the HTTP/2 spec. +func isBadCipher(cipher uint16) bool { + switch cipher { + case tls.TLS_RSA_WITH_RC4_128_SHA, + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_RSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: + // Reject cipher suites from Appendix A. + // "This list includes those cipher suites that do not + // offer an ephemeral key exchange and those that are + // based on the TLS null, stream or block cipher type" + return true + default: + return false + } +} diff --git a/vendor/golang.org/x/net/http2/not_go17.go b/vendor/golang.org/x/net/http2/not_go17.go new file mode 100644 index 0000000000..28df0c16bf --- /dev/null +++ b/vendor/golang.org/x/net/http2/not_go17.go @@ -0,0 +1,51 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.7 + +package http2 + +import ( + "net" + "net/http" +) + +type contextContext interface{} + +type fakeContext struct{} + +func (fakeContext) Done() <-chan struct{} { return nil } +func (fakeContext) Err() error { panic("should not be called") } + +func reqContext(r *http.Request) fakeContext { + return fakeContext{} +} + +func setResponseUncompressed(res *http.Response) { + // Nothing. +} + +type clientTrace struct{} + +func requestTrace(*http.Request) *clientTrace { return nil } +func traceGotConn(*http.Request, *ClientConn) {} +func traceFirstResponseByte(*clientTrace) {} +func traceWroteHeaders(*clientTrace) {} +func traceWroteRequest(*clientTrace, error) {} +func traceGot100Continue(trace *clientTrace) {} +func traceWait100Continue(trace *clientTrace) {} + +func nop() {} + +func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx contextContext, cancel func()) { + return nil, nop +} + +func contextWithCancel(ctx contextContext) (_ contextContext, cancel func()) { + return ctx, nop +} + +func requestWithContext(req *http.Request, ctx contextContext) *http.Request { + return req +} diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go new file mode 100644 index 0000000000..53b7a1daf6 --- /dev/null +++ b/vendor/golang.org/x/net/http2/pipe.go @@ -0,0 +1,153 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "errors" + "io" + "sync" +) + +// pipe is a goroutine-safe io.Reader/io.Writer pair. It's like +// io.Pipe except there are no PipeReader/PipeWriter halves, and the +// underlying buffer is an interface. (io.Pipe is always unbuffered) +type pipe struct { + mu sync.Mutex + c sync.Cond // c.L lazily initialized to &p.mu + b pipeBuffer + err error // read error once empty. non-nil means closed. + breakErr error // immediate read error (caller doesn't see rest of b) + donec chan struct{} // closed on error + readFn func() // optional code to run in Read before error +} + +type pipeBuffer interface { + Len() int + io.Writer + io.Reader +} + +func (p *pipe) Len() int { + p.mu.Lock() + defer p.mu.Unlock() + return p.b.Len() +} + +// Read waits until data is available and copies bytes +// from the buffer into p. +func (p *pipe) Read(d []byte) (n int, err error) { + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + for { + if p.breakErr != nil { + return 0, p.breakErr + } + if p.b.Len() > 0 { + return p.b.Read(d) + } + if p.err != nil { + if p.readFn != nil { + p.readFn() // e.g. copy trailers + p.readFn = nil // not sticky like p.err + } + return 0, p.err + } + p.c.Wait() + } +} + +var errClosedPipeWrite = errors.New("write on closed buffer") + +// Write copies bytes from p into the buffer and wakes a reader. +// It is an error to write more data than the buffer can hold. +func (p *pipe) Write(d []byte) (n int, err error) { + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + defer p.c.Signal() + if p.err != nil { + return 0, errClosedPipeWrite + } + return p.b.Write(d) +} + +// CloseWithError causes the next Read (waking up a current blocked +// Read if needed) to return the provided err after all data has been +// read. +// +// The error must be non-nil. +func (p *pipe) CloseWithError(err error) { p.closeWithError(&p.err, err, nil) } + +// BreakWithError causes the next Read (waking up a current blocked +// Read if needed) to return the provided err immediately, without +// waiting for unread data. +func (p *pipe) BreakWithError(err error) { p.closeWithError(&p.breakErr, err, nil) } + +// closeWithErrorAndCode is like CloseWithError but also sets some code to run +// in the caller's goroutine before returning the error. +func (p *pipe) closeWithErrorAndCode(err error, fn func()) { p.closeWithError(&p.err, err, fn) } + +func (p *pipe) closeWithError(dst *error, err error, fn func()) { + if err == nil { + panic("err must be non-nil") + } + p.mu.Lock() + defer p.mu.Unlock() + if p.c.L == nil { + p.c.L = &p.mu + } + defer p.c.Signal() + if *dst != nil { + // Already been done. + return + } + p.readFn = fn + *dst = err + p.closeDoneLocked() +} + +// requires p.mu be held. +func (p *pipe) closeDoneLocked() { + if p.donec == nil { + return + } + // Close if unclosed. This isn't racy since we always + // hold p.mu while closing. + select { + case <-p.donec: + default: + close(p.donec) + } +} + +// Err returns the error (if any) first set by BreakWithError or CloseWithError. +func (p *pipe) Err() error { + p.mu.Lock() + defer p.mu.Unlock() + if p.breakErr != nil { + return p.breakErr + } + return p.err +} + +// Done returns a channel which is closed if and when this pipe is closed +// with CloseWithError. +func (p *pipe) Done() <-chan struct{} { + p.mu.Lock() + defer p.mu.Unlock() + if p.donec == nil { + p.donec = make(chan struct{}) + if p.err != nil || p.breakErr != nil { + // Already hit an error. + p.closeDoneLocked() + } + } + return p.donec +} diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go new file mode 100644 index 0000000000..f368738f7c --- /dev/null +++ b/vendor/golang.org/x/net/http2/server.go @@ -0,0 +1,2263 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// TODO: replace all <-sc.doneServing with reads from the stream's cw +// instead, and make sure that on close we close all open +// streams. then remove doneServing? + +// TODO: re-audit GOAWAY support. Consider each incoming frame type and +// whether it should be ignored during graceful shutdown. + +// TODO: disconnect idle clients. GFE seems to do 4 minutes. make +// configurable? or maximum number of idle clients and remove the +// oldest? + +// TODO: turn off the serve goroutine when idle, so +// an idle conn only has the readFrames goroutine active. (which could +// also be optimized probably to pin less memory in crypto/tls). This +// would involve tracking when the serve goroutine is active (atomic +// int32 read/CAS probably?) and starting it up when frames arrive, +// and shutting it down when all handlers exit. the occasional PING +// packets could use time.AfterFunc to call sc.wakeStartServeLoop() +// (which is a no-op if already running) and then queue the PING write +// as normal. The serve loop would then exit in most cases (if no +// Handlers running) and not be woken up again until the PING packet +// returns. + +// TODO (maybe): add a mechanism for Handlers to going into +// half-closed-local mode (rw.(io.Closer) test?) but not exit their +// handler, and continue to be able to read from the +// Request.Body. This would be a somewhat semantic change from HTTP/1 +// (or at least what we expose in net/http), so I'd probably want to +// add it there too. For now, this package says that returning from +// the Handler ServeHTTP function means you're both done reading and +// done writing, without a way to stop just one or the other. + +package http2 + +import ( + "bufio" + "bytes" + "crypto/tls" + "errors" + "fmt" + "io" + "log" + "net" + "net/http" + "net/textproto" + "net/url" + "os" + "reflect" + "runtime" + "strconv" + "strings" + "sync" + "time" + + "golang.org/x/net/http2/hpack" +) + +const ( + prefaceTimeout = 10 * time.Second + firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway + handlerChunkWriteSize = 4 << 10 + defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? +) + +var ( + errClientDisconnected = errors.New("client disconnected") + errClosedBody = errors.New("body closed by handler") + errHandlerComplete = errors.New("http2: request body closed due to handler exiting") + errStreamClosed = errors.New("http2: stream closed") +) + +var responseWriterStatePool = sync.Pool{ + New: func() interface{} { + rws := &responseWriterState{} + rws.bw = bufio.NewWriterSize(chunkWriter{rws}, handlerChunkWriteSize) + return rws + }, +} + +// Test hooks. +var ( + testHookOnConn func() + testHookGetServerConn func(*serverConn) + testHookOnPanicMu *sync.Mutex // nil except in tests + testHookOnPanic func(sc *serverConn, panicVal interface{}) (rePanic bool) +) + +// Server is an HTTP/2 server. +type Server struct { + // MaxHandlers limits the number of http.Handler ServeHTTP goroutines + // which may run at a time over all connections. + // Negative or zero no limit. + // TODO: implement + MaxHandlers int + + // MaxConcurrentStreams optionally specifies the number of + // concurrent streams that each client may have open at a + // time. This is unrelated to the number of http.Handler goroutines + // which may be active globally, which is MaxHandlers. + // If zero, MaxConcurrentStreams defaults to at least 100, per + // the HTTP/2 spec's recommendations. + MaxConcurrentStreams uint32 + + // MaxReadFrameSize optionally specifies the largest frame + // this server is willing to read. A valid value is between + // 16k and 16M, inclusive. If zero or otherwise invalid, a + // default value is used. + MaxReadFrameSize uint32 + + // PermitProhibitedCipherSuites, if true, permits the use of + // cipher suites prohibited by the HTTP/2 spec. + PermitProhibitedCipherSuites bool +} + +func (s *Server) maxReadFrameSize() uint32 { + if v := s.MaxReadFrameSize; v >= minMaxFrameSize && v <= maxFrameSize { + return v + } + return defaultMaxReadFrameSize +} + +func (s *Server) maxConcurrentStreams() uint32 { + if v := s.MaxConcurrentStreams; v > 0 { + return v + } + return defaultMaxStreams +} + +// ConfigureServer adds HTTP/2 support to a net/http Server. +// +// The configuration conf may be nil. +// +// ConfigureServer must be called before s begins serving. +func ConfigureServer(s *http.Server, conf *Server) error { + if conf == nil { + conf = new(Server) + } + + if s.TLSConfig == nil { + s.TLSConfig = new(tls.Config) + } else if s.TLSConfig.CipherSuites != nil { + // If they already provided a CipherSuite list, return + // an error if it has a bad order or is missing + // ECDHE_RSA_WITH_AES_128_GCM_SHA256. + const requiredCipher = tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + haveRequired := false + sawBad := false + for i, cs := range s.TLSConfig.CipherSuites { + if cs == requiredCipher { + haveRequired = true + } + if isBadCipher(cs) { + sawBad = true + } else if sawBad { + return fmt.Errorf("http2: TLSConfig.CipherSuites index %d contains an HTTP/2-approved cipher suite (%#04x), but it comes after unapproved cipher suites. With this configuration, clients that don't support previous, approved cipher suites may be given an unapproved one and reject the connection.", i, cs) + } + } + if !haveRequired { + return fmt.Errorf("http2: TLSConfig.CipherSuites is missing HTTP/2-required TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256") + } + } + + // Note: not setting MinVersion to tls.VersionTLS12, + // as we don't want to interfere with HTTP/1.1 traffic + // on the user's server. We enforce TLS 1.2 later once + // we accept a connection. Ideally this should be done + // during next-proto selection, but using TLS <1.2 with + // HTTP/2 is still the client's bug. + + s.TLSConfig.PreferServerCipherSuites = true + + haveNPN := false + for _, p := range s.TLSConfig.NextProtos { + if p == NextProtoTLS { + haveNPN = true + break + } + } + if !haveNPN { + s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, NextProtoTLS) + } + // h2-14 is temporary (as of 2015-03-05) while we wait for all browsers + // to switch to "h2". + s.TLSConfig.NextProtos = append(s.TLSConfig.NextProtos, "h2-14") + + if s.TLSNextProto == nil { + s.TLSNextProto = map[string]func(*http.Server, *tls.Conn, http.Handler){} + } + protoHandler := func(hs *http.Server, c *tls.Conn, h http.Handler) { + if testHookOnConn != nil { + testHookOnConn() + } + conf.ServeConn(c, &ServeConnOpts{ + Handler: h, + BaseConfig: hs, + }) + } + s.TLSNextProto[NextProtoTLS] = protoHandler + s.TLSNextProto["h2-14"] = protoHandler // temporary; see above. + return nil +} + +// ServeConnOpts are options for the Server.ServeConn method. +type ServeConnOpts struct { + // BaseConfig optionally sets the base configuration + // for values. If nil, defaults are used. + BaseConfig *http.Server + + // Handler specifies which handler to use for processing + // requests. If nil, BaseConfig.Handler is used. If BaseConfig + // or BaseConfig.Handler is nil, http.DefaultServeMux is used. + Handler http.Handler +} + +func (o *ServeConnOpts) baseConfig() *http.Server { + if o != nil && o.BaseConfig != nil { + return o.BaseConfig + } + return new(http.Server) +} + +func (o *ServeConnOpts) handler() http.Handler { + if o != nil { + if o.Handler != nil { + return o.Handler + } + if o.BaseConfig != nil && o.BaseConfig.Handler != nil { + return o.BaseConfig.Handler + } + } + return http.DefaultServeMux +} + +// ServeConn serves HTTP/2 requests on the provided connection and +// blocks until the connection is no longer readable. +// +// ServeConn starts speaking HTTP/2 assuming that c has not had any +// reads or writes. It writes its initial settings frame and expects +// to be able to read the preface and settings frame from the +// client. If c has a ConnectionState method like a *tls.Conn, the +// ConnectionState is used to verify the TLS ciphersuite and to set +// the Request.TLS field in Handlers. +// +// ServeConn does not support h2c by itself. Any h2c support must be +// implemented in terms of providing a suitably-behaving net.Conn. +// +// The opts parameter is optional. If nil, default values are used. +func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { + baseCtx, cancel := serverConnBaseContext(c, opts) + defer cancel() + + sc := &serverConn{ + srv: s, + hs: opts.baseConfig(), + conn: c, + baseCtx: baseCtx, + remoteAddrStr: c.RemoteAddr().String(), + bw: newBufferedWriter(c), + handler: opts.handler(), + streams: make(map[uint32]*stream), + readFrameCh: make(chan readFrameResult), + wantWriteFrameCh: make(chan frameWriteMsg, 8), + wroteFrameCh: make(chan frameWriteResult, 1), // buffered; one send in writeFrameAsync + bodyReadCh: make(chan bodyReadMsg), // buffering doesn't matter either way + doneServing: make(chan struct{}), + advMaxStreams: s.maxConcurrentStreams(), + writeSched: writeScheduler{ + maxFrameSize: initialMaxFrameSize, + }, + initialWindowSize: initialWindowSize, + headerTableSize: initialHeaderTableSize, + serveG: newGoroutineLock(), + pushEnabled: true, + } + + sc.flow.add(initialWindowSize) + sc.inflow.add(initialWindowSize) + sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf) + + fr := NewFramer(sc.bw, c) + fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) + fr.MaxHeaderListSize = sc.maxHeaderListSize() + fr.SetMaxReadFrameSize(s.maxReadFrameSize()) + sc.framer = fr + + if tc, ok := c.(connectionStater); ok { + sc.tlsState = new(tls.ConnectionState) + *sc.tlsState = tc.ConnectionState() + // 9.2 Use of TLS Features + // An implementation of HTTP/2 over TLS MUST use TLS + // 1.2 or higher with the restrictions on feature set + // and cipher suite described in this section. Due to + // implementation limitations, it might not be + // possible to fail TLS negotiation. An endpoint MUST + // immediately terminate an HTTP/2 connection that + // does not meet the TLS requirements described in + // this section with a connection error (Section + // 5.4.1) of type INADEQUATE_SECURITY. + if sc.tlsState.Version < tls.VersionTLS12 { + sc.rejectConn(ErrCodeInadequateSecurity, "TLS version too low") + return + } + + if sc.tlsState.ServerName == "" { + // Client must use SNI, but we don't enforce that anymore, + // since it was causing problems when connecting to bare IP + // addresses during development. + // + // TODO: optionally enforce? Or enforce at the time we receive + // a new request, and verify the the ServerName matches the :authority? + // But that precludes proxy situations, perhaps. + // + // So for now, do nothing here again. + } + + if !s.PermitProhibitedCipherSuites && isBadCipher(sc.tlsState.CipherSuite) { + // "Endpoints MAY choose to generate a connection error + // (Section 5.4.1) of type INADEQUATE_SECURITY if one of + // the prohibited cipher suites are negotiated." + // + // We choose that. In my opinion, the spec is weak + // here. It also says both parties must support at least + // TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 so there's no + // excuses here. If we really must, we could allow an + // "AllowInsecureWeakCiphers" option on the server later. + // Let's see how it plays out first. + sc.rejectConn(ErrCodeInadequateSecurity, fmt.Sprintf("Prohibited TLS 1.2 Cipher Suite: %x", sc.tlsState.CipherSuite)) + return + } + } + + if hook := testHookGetServerConn; hook != nil { + hook(sc) + } + sc.serve() +} + +func (sc *serverConn) rejectConn(err ErrCode, debug string) { + sc.vlogf("http2: server rejecting conn: %v, %s", err, debug) + // ignoring errors. hanging up anyway. + sc.framer.WriteGoAway(0, err, []byte(debug)) + sc.bw.Flush() + sc.conn.Close() +} + +type serverConn struct { + // Immutable: + srv *Server + hs *http.Server + conn net.Conn + bw *bufferedWriter // writing to conn + handler http.Handler + baseCtx contextContext + framer *Framer + doneServing chan struct{} // closed when serverConn.serve ends + readFrameCh chan readFrameResult // written by serverConn.readFrames + wantWriteFrameCh chan frameWriteMsg // from handlers -> serve + wroteFrameCh chan frameWriteResult // from writeFrameAsync -> serve, tickles more frame writes + bodyReadCh chan bodyReadMsg // from handlers -> serve + testHookCh chan func(int) // code to run on the serve loop + flow flow // conn-wide (not stream-specific) outbound flow control + inflow flow // conn-wide inbound flow control + tlsState *tls.ConnectionState // shared by all handlers, like net/http + remoteAddrStr string + + // Everything following is owned by the serve loop; use serveG.check(): + serveG goroutineLock // used to verify funcs are on serve() + pushEnabled bool + sawFirstSettings bool // got the initial SETTINGS frame after the preface + needToSendSettingsAck bool + unackedSettings int // how many SETTINGS have we sent without ACKs? + clientMaxStreams uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit) + advMaxStreams uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client + curOpenStreams uint32 // client's number of open streams + maxStreamID uint32 // max ever seen + streams map[uint32]*stream + initialWindowSize int32 + headerTableSize uint32 + peerMaxHeaderListSize uint32 // zero means unknown (default) + canonHeader map[string]string // http2-lower-case -> Go-Canonical-Case + writingFrame bool // started write goroutine but haven't heard back on wroteFrameCh + needsFrameFlush bool // last frame write wasn't a flush + writeSched writeScheduler + inGoAway bool // we've started to or sent GOAWAY + needToSendGoAway bool // we need to schedule a GOAWAY frame write + goAwayCode ErrCode + shutdownTimerCh <-chan time.Time // nil until used + shutdownTimer *time.Timer // nil until used + freeRequestBodyBuf []byte // if non-nil, a free initialWindowSize buffer for getRequestBodyBuf + + // Owned by the writeFrameAsync goroutine: + headerWriteBuf bytes.Buffer + hpackEncoder *hpack.Encoder +} + +func (sc *serverConn) maxHeaderListSize() uint32 { + n := sc.hs.MaxHeaderBytes + if n <= 0 { + n = http.DefaultMaxHeaderBytes + } + // http2's count is in a slightly different unit and includes 32 bytes per pair. + // So, take the net/http.Server value and pad it up a bit, assuming 10 headers. + const perFieldOverhead = 32 // per http2 spec + const typicalHeaders = 10 // conservative + return uint32(n + typicalHeaders*perFieldOverhead) +} + +// stream represents a stream. This is the minimal metadata needed by +// the serve goroutine. Most of the actual stream state is owned by +// the http.Handler's goroutine in the responseWriter. Because the +// responseWriter's responseWriterState is recycled at the end of a +// handler, this struct intentionally has no pointer to the +// *responseWriter{,State} itself, as the Handler ending nils out the +// responseWriter's state field. +type stream struct { + // immutable: + sc *serverConn + id uint32 + body *pipe // non-nil if expecting DATA frames + cw closeWaiter // closed wait stream transitions to closed state + ctx contextContext + cancelCtx func() + + // owned by serverConn's serve loop: + bodyBytes int64 // body bytes seen so far + declBodyBytes int64 // or -1 if undeclared + flow flow // limits writing from Handler to client + inflow flow // what the client is allowed to POST/etc to us + parent *stream // or nil + numTrailerValues int64 + weight uint8 + state streamState + sentReset bool // only true once detached from streams map + gotReset bool // only true once detacted from streams map + gotTrailerHeader bool // HEADER frame for trailers was seen + wroteHeaders bool // whether we wrote headers (not status 100) + reqBuf []byte + + trailer http.Header // accumulated trailers + reqTrailer http.Header // handler's Request.Trailer +} + +func (sc *serverConn) Framer() *Framer { return sc.framer } +func (sc *serverConn) CloseConn() error { return sc.conn.Close() } +func (sc *serverConn) Flush() error { return sc.bw.Flush() } +func (sc *serverConn) HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) { + return sc.hpackEncoder, &sc.headerWriteBuf +} + +func (sc *serverConn) state(streamID uint32) (streamState, *stream) { + sc.serveG.check() + // http://http2.github.io/http2-spec/#rfc.section.5.1 + if st, ok := sc.streams[streamID]; ok { + return st.state, st + } + // "The first use of a new stream identifier implicitly closes all + // streams in the "idle" state that might have been initiated by + // that peer with a lower-valued stream identifier. For example, if + // a client sends a HEADERS frame on stream 7 without ever sending a + // frame on stream 5, then stream 5 transitions to the "closed" + // state when the first frame for stream 7 is sent or received." + if streamID <= sc.maxStreamID { + return stateClosed, nil + } + return stateIdle, nil +} + +// setConnState calls the net/http ConnState hook for this connection, if configured. +// Note that the net/http package does StateNew and StateClosed for us. +// There is currently no plan for StateHijacked or hijacking HTTP/2 connections. +func (sc *serverConn) setConnState(state http.ConnState) { + if sc.hs.ConnState != nil { + sc.hs.ConnState(sc.conn, state) + } +} + +func (sc *serverConn) vlogf(format string, args ...interface{}) { + if VerboseLogs { + sc.logf(format, args...) + } +} + +func (sc *serverConn) logf(format string, args ...interface{}) { + if lg := sc.hs.ErrorLog; lg != nil { + lg.Printf(format, args...) + } else { + log.Printf(format, args...) + } +} + +// errno returns v's underlying uintptr, else 0. +// +// TODO: remove this helper function once http2 can use build +// tags. See comment in isClosedConnError. +func errno(v error) uintptr { + if rv := reflect.ValueOf(v); rv.Kind() == reflect.Uintptr { + return uintptr(rv.Uint()) + } + return 0 +} + +// isClosedConnError reports whether err is an error from use of a closed +// network connection. +func isClosedConnError(err error) bool { + if err == nil { + return false + } + + // TODO: remove this string search and be more like the Windows + // case below. That might involve modifying the standard library + // to return better error types. + str := err.Error() + if strings.Contains(str, "use of closed network connection") { + return true + } + + // TODO(bradfitz): x/tools/cmd/bundle doesn't really support + // build tags, so I can't make an http2_windows.go file with + // Windows-specific stuff. Fix that and move this, once we + // have a way to bundle this into std's net/http somehow. + if runtime.GOOS == "windows" { + if oe, ok := err.(*net.OpError); ok && oe.Op == "read" { + if se, ok := oe.Err.(*os.SyscallError); ok && se.Syscall == "wsarecv" { + const WSAECONNABORTED = 10053 + const WSAECONNRESET = 10054 + if n := errno(se.Err); n == WSAECONNRESET || n == WSAECONNABORTED { + return true + } + } + } + } + return false +} + +func (sc *serverConn) condlogf(err error, format string, args ...interface{}) { + if err == nil { + return + } + if err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) { + // Boring, expected errors. + sc.vlogf(format, args...) + } else { + sc.logf(format, args...) + } +} + +func (sc *serverConn) canonicalHeader(v string) string { + sc.serveG.check() + cv, ok := commonCanonHeader[v] + if ok { + return cv + } + cv, ok = sc.canonHeader[v] + if ok { + return cv + } + if sc.canonHeader == nil { + sc.canonHeader = make(map[string]string) + } + cv = http.CanonicalHeaderKey(v) + sc.canonHeader[v] = cv + return cv +} + +type readFrameResult struct { + f Frame // valid until readMore is called + err error + + // readMore should be called once the consumer no longer needs or + // retains f. After readMore, f is invalid and more frames can be + // read. + readMore func() +} + +// readFrames is the loop that reads incoming frames. +// It takes care to only read one frame at a time, blocking until the +// consumer is done with the frame. +// It's run on its own goroutine. +func (sc *serverConn) readFrames() { + gate := make(gate) + gateDone := gate.Done + for { + f, err := sc.framer.ReadFrame() + select { + case sc.readFrameCh <- readFrameResult{f, err, gateDone}: + case <-sc.doneServing: + return + } + select { + case <-gate: + case <-sc.doneServing: + return + } + if terminalReadFrameError(err) { + return + } + } +} + +// frameWriteResult is the message passed from writeFrameAsync to the serve goroutine. +type frameWriteResult struct { + wm frameWriteMsg // what was written (or attempted) + err error // result of the writeFrame call +} + +// writeFrameAsync runs in its own goroutine and writes a single frame +// and then reports when it's done. +// At most one goroutine can be running writeFrameAsync at a time per +// serverConn. +func (sc *serverConn) writeFrameAsync(wm frameWriteMsg) { + err := wm.write.writeFrame(sc) + sc.wroteFrameCh <- frameWriteResult{wm, err} +} + +func (sc *serverConn) closeAllStreamsOnConnClose() { + sc.serveG.check() + for _, st := range sc.streams { + sc.closeStream(st, errClientDisconnected) + } +} + +func (sc *serverConn) stopShutdownTimer() { + sc.serveG.check() + if t := sc.shutdownTimer; t != nil { + t.Stop() + } +} + +func (sc *serverConn) notePanic() { + // Note: this is for serverConn.serve panicking, not http.Handler code. + if testHookOnPanicMu != nil { + testHookOnPanicMu.Lock() + defer testHookOnPanicMu.Unlock() + } + if testHookOnPanic != nil { + if e := recover(); e != nil { + if testHookOnPanic(sc, e) { + panic(e) + } + } + } +} + +func (sc *serverConn) serve() { + sc.serveG.check() + defer sc.notePanic() + defer sc.conn.Close() + defer sc.closeAllStreamsOnConnClose() + defer sc.stopShutdownTimer() + defer close(sc.doneServing) // unblocks handlers trying to send + + if VerboseLogs { + sc.vlogf("http2: server connection from %v on %p", sc.conn.RemoteAddr(), sc.hs) + } + + sc.writeFrame(frameWriteMsg{ + write: writeSettings{ + {SettingMaxFrameSize, sc.srv.maxReadFrameSize()}, + {SettingMaxConcurrentStreams, sc.advMaxStreams}, + {SettingMaxHeaderListSize, sc.maxHeaderListSize()}, + + // TODO: more actual settings, notably + // SettingInitialWindowSize, but then we also + // want to bump up the conn window size the + // same amount here right after the settings + }, + }) + sc.unackedSettings++ + + if err := sc.readPreface(); err != nil { + sc.condlogf(err, "http2: server: error reading preface from client %v: %v", sc.conn.RemoteAddr(), err) + return + } + // Now that we've got the preface, get us out of the + // "StateNew" state. We can't go directly to idle, though. + // Active means we read some data and anticipate a request. We'll + // do another Active when we get a HEADERS frame. + sc.setConnState(http.StateActive) + sc.setConnState(http.StateIdle) + + go sc.readFrames() // closed by defer sc.conn.Close above + + settingsTimer := time.NewTimer(firstSettingsTimeout) + loopNum := 0 + for { + loopNum++ + select { + case wm := <-sc.wantWriteFrameCh: + sc.writeFrame(wm) + case res := <-sc.wroteFrameCh: + sc.wroteFrame(res) + case res := <-sc.readFrameCh: + if !sc.processFrameFromReader(res) { + return + } + res.readMore() + if settingsTimer.C != nil { + settingsTimer.Stop() + settingsTimer.C = nil + } + case m := <-sc.bodyReadCh: + sc.noteBodyRead(m.st, m.n) + case <-settingsTimer.C: + sc.logf("timeout waiting for SETTINGS frames from %v", sc.conn.RemoteAddr()) + return + case <-sc.shutdownTimerCh: + sc.vlogf("GOAWAY close timer fired; closing conn from %v", sc.conn.RemoteAddr()) + return + case fn := <-sc.testHookCh: + fn(loopNum) + } + } +} + +// readPreface reads the ClientPreface greeting from the peer +// or returns an error on timeout or an invalid greeting. +func (sc *serverConn) readPreface() error { + errc := make(chan error, 1) + go func() { + // Read the client preface + buf := make([]byte, len(ClientPreface)) + if _, err := io.ReadFull(sc.conn, buf); err != nil { + errc <- err + } else if !bytes.Equal(buf, clientPreface) { + errc <- fmt.Errorf("bogus greeting %q", buf) + } else { + errc <- nil + } + }() + timer := time.NewTimer(prefaceTimeout) // TODO: configurable on *Server? + defer timer.Stop() + select { + case <-timer.C: + return errors.New("timeout waiting for client preface") + case err := <-errc: + if err == nil { + if VerboseLogs { + sc.vlogf("http2: server: client %v said hello", sc.conn.RemoteAddr()) + } + } + return err + } +} + +var errChanPool = sync.Pool{ + New: func() interface{} { return make(chan error, 1) }, +} + +var writeDataPool = sync.Pool{ + New: func() interface{} { return new(writeData) }, +} + +// writeDataFromHandler writes DATA response frames from a handler on +// the given stream. +func (sc *serverConn) writeDataFromHandler(stream *stream, data []byte, endStream bool) error { + ch := errChanPool.Get().(chan error) + writeArg := writeDataPool.Get().(*writeData) + *writeArg = writeData{stream.id, data, endStream} + err := sc.writeFrameFromHandler(frameWriteMsg{ + write: writeArg, + stream: stream, + done: ch, + }) + if err != nil { + return err + } + var frameWriteDone bool // the frame write is done (successfully or not) + select { + case err = <-ch: + frameWriteDone = true + case <-sc.doneServing: + return errClientDisconnected + case <-stream.cw: + // If both ch and stream.cw were ready (as might + // happen on the final Write after an http.Handler + // ends), prefer the write result. Otherwise this + // might just be us successfully closing the stream. + // The writeFrameAsync and serve goroutines guarantee + // that the ch send will happen before the stream.cw + // close. + select { + case err = <-ch: + frameWriteDone = true + default: + return errStreamClosed + } + } + errChanPool.Put(ch) + if frameWriteDone { + writeDataPool.Put(writeArg) + } + return err +} + +// writeFrameFromHandler sends wm to sc.wantWriteFrameCh, but aborts +// if the connection has gone away. +// +// This must not be run from the serve goroutine itself, else it might +// deadlock writing to sc.wantWriteFrameCh (which is only mildly +// buffered and is read by serve itself). If you're on the serve +// goroutine, call writeFrame instead. +func (sc *serverConn) writeFrameFromHandler(wm frameWriteMsg) error { + sc.serveG.checkNotOn() // NOT + select { + case sc.wantWriteFrameCh <- wm: + return nil + case <-sc.doneServing: + // Serve loop is gone. + // Client has closed their connection to the server. + return errClientDisconnected + } +} + +// writeFrame schedules a frame to write and sends it if there's nothing +// already being written. +// +// There is no pushback here (the serve goroutine never blocks). It's +// the http.Handlers that block, waiting for their previous frames to +// make it onto the wire +// +// If you're not on the serve goroutine, use writeFrameFromHandler instead. +func (sc *serverConn) writeFrame(wm frameWriteMsg) { + sc.serveG.check() + + var ignoreWrite bool + + // Don't send a 100-continue response if we've already sent headers. + // See golang.org/issue/14030. + switch wm.write.(type) { + case *writeResHeaders: + wm.stream.wroteHeaders = true + case write100ContinueHeadersFrame: + if wm.stream.wroteHeaders { + ignoreWrite = true + } + } + + if !ignoreWrite { + sc.writeSched.add(wm) + } + sc.scheduleFrameWrite() +} + +// startFrameWrite starts a goroutine to write wm (in a separate +// goroutine since that might block on the network), and updates the +// serve goroutine's state about the world, updated from info in wm. +func (sc *serverConn) startFrameWrite(wm frameWriteMsg) { + sc.serveG.check() + if sc.writingFrame { + panic("internal error: can only be writing one frame at a time") + } + + st := wm.stream + if st != nil { + switch st.state { + case stateHalfClosedLocal: + panic("internal error: attempt to send frame on half-closed-local stream") + case stateClosed: + if st.sentReset || st.gotReset { + // Skip this frame. + sc.scheduleFrameWrite() + return + } + panic(fmt.Sprintf("internal error: attempt to send a write %v on a closed stream", wm)) + } + } + + sc.writingFrame = true + sc.needsFrameFlush = true + go sc.writeFrameAsync(wm) +} + +// errHandlerPanicked is the error given to any callers blocked in a read from +// Request.Body when the main goroutine panics. Since most handlers read in the +// the main ServeHTTP goroutine, this will show up rarely. +var errHandlerPanicked = errors.New("http2: handler panicked") + +// wroteFrame is called on the serve goroutine with the result of +// whatever happened on writeFrameAsync. +func (sc *serverConn) wroteFrame(res frameWriteResult) { + sc.serveG.check() + if !sc.writingFrame { + panic("internal error: expected to be already writing a frame") + } + sc.writingFrame = false + + wm := res.wm + st := wm.stream + + closeStream := endsStream(wm.write) + + if _, ok := wm.write.(handlerPanicRST); ok { + sc.closeStream(st, errHandlerPanicked) + } + + // Reply (if requested) to the blocked ServeHTTP goroutine. + if ch := wm.done; ch != nil { + select { + case ch <- res.err: + default: + panic(fmt.Sprintf("unbuffered done channel passed in for type %T", wm.write)) + } + } + wm.write = nil // prevent use (assume it's tainted after wm.done send) + + if closeStream { + if st == nil { + panic("internal error: expecting non-nil stream") + } + switch st.state { + case stateOpen: + // Here we would go to stateHalfClosedLocal in + // theory, but since our handler is done and + // the net/http package provides no mechanism + // for finishing writing to a ResponseWriter + // while still reading data (see possible TODO + // at top of this file), we go into closed + // state here anyway, after telling the peer + // we're hanging up on them. + st.state = stateHalfClosedLocal // won't last long, but necessary for closeStream via resetStream + errCancel := StreamError{st.id, ErrCodeCancel} + sc.resetStream(errCancel) + case stateHalfClosedRemote: + sc.closeStream(st, errHandlerComplete) + } + } + + sc.scheduleFrameWrite() +} + +// scheduleFrameWrite tickles the frame writing scheduler. +// +// If a frame is already being written, nothing happens. This will be called again +// when the frame is done being written. +// +// If a frame isn't being written we need to send one, the best frame +// to send is selected, preferring first things that aren't +// stream-specific (e.g. ACKing settings), and then finding the +// highest priority stream. +// +// If a frame isn't being written and there's nothing else to send, we +// flush the write buffer. +func (sc *serverConn) scheduleFrameWrite() { + sc.serveG.check() + if sc.writingFrame { + return + } + if sc.needToSendGoAway { + sc.needToSendGoAway = false + sc.startFrameWrite(frameWriteMsg{ + write: &writeGoAway{ + maxStreamID: sc.maxStreamID, + code: sc.goAwayCode, + }, + }) + return + } + if sc.needToSendSettingsAck { + sc.needToSendSettingsAck = false + sc.startFrameWrite(frameWriteMsg{write: writeSettingsAck{}}) + return + } + if !sc.inGoAway { + if wm, ok := sc.writeSched.take(); ok { + sc.startFrameWrite(wm) + return + } + } + if sc.needsFrameFlush { + sc.startFrameWrite(frameWriteMsg{write: flushFrameWriter{}}) + sc.needsFrameFlush = false // after startFrameWrite, since it sets this true + return + } +} + +func (sc *serverConn) goAway(code ErrCode) { + sc.serveG.check() + if sc.inGoAway { + return + } + if code != ErrCodeNo { + sc.shutDownIn(250 * time.Millisecond) + } else { + // TODO: configurable + sc.shutDownIn(1 * time.Second) + } + sc.inGoAway = true + sc.needToSendGoAway = true + sc.goAwayCode = code + sc.scheduleFrameWrite() +} + +func (sc *serverConn) shutDownIn(d time.Duration) { + sc.serveG.check() + sc.shutdownTimer = time.NewTimer(d) + sc.shutdownTimerCh = sc.shutdownTimer.C +} + +func (sc *serverConn) resetStream(se StreamError) { + sc.serveG.check() + sc.writeFrame(frameWriteMsg{write: se}) + if st, ok := sc.streams[se.StreamID]; ok { + st.sentReset = true + sc.closeStream(st, se) + } +} + +// processFrameFromReader processes the serve loop's read from readFrameCh from the +// frame-reading goroutine. +// processFrameFromReader returns whether the connection should be kept open. +func (sc *serverConn) processFrameFromReader(res readFrameResult) bool { + sc.serveG.check() + err := res.err + if err != nil { + if err == ErrFrameTooLarge { + sc.goAway(ErrCodeFrameSize) + return true // goAway will close the loop + } + clientGone := err == io.EOF || err == io.ErrUnexpectedEOF || isClosedConnError(err) + if clientGone { + // TODO: could we also get into this state if + // the peer does a half close + // (e.g. CloseWrite) because they're done + // sending frames but they're still wanting + // our open replies? Investigate. + // TODO: add CloseWrite to crypto/tls.Conn first + // so we have a way to test this? I suppose + // just for testing we could have a non-TLS mode. + return false + } + } else { + f := res.f + if VerboseLogs { + sc.vlogf("http2: server read frame %v", summarizeFrame(f)) + } + err = sc.processFrame(f) + if err == nil { + return true + } + } + + switch ev := err.(type) { + case StreamError: + sc.resetStream(ev) + return true + case goAwayFlowError: + sc.goAway(ErrCodeFlowControl) + return true + case ConnectionError: + sc.logf("http2: server connection error from %v: %v", sc.conn.RemoteAddr(), ev) + sc.goAway(ErrCode(ev)) + return true // goAway will handle shutdown + default: + if res.err != nil { + sc.vlogf("http2: server closing client connection; error reading frame from client %s: %v", sc.conn.RemoteAddr(), err) + } else { + sc.logf("http2: server closing client connection: %v", err) + } + return false + } +} + +func (sc *serverConn) processFrame(f Frame) error { + sc.serveG.check() + + // First frame received must be SETTINGS. + if !sc.sawFirstSettings { + if _, ok := f.(*SettingsFrame); !ok { + return ConnectionError(ErrCodeProtocol) + } + sc.sawFirstSettings = true + } + + switch f := f.(type) { + case *SettingsFrame: + return sc.processSettings(f) + case *MetaHeadersFrame: + return sc.processHeaders(f) + case *WindowUpdateFrame: + return sc.processWindowUpdate(f) + case *PingFrame: + return sc.processPing(f) + case *DataFrame: + return sc.processData(f) + case *RSTStreamFrame: + return sc.processResetStream(f) + case *PriorityFrame: + return sc.processPriority(f) + case *PushPromiseFrame: + // A client cannot push. Thus, servers MUST treat the receipt of a PUSH_PROMISE + // frame as a connection error (Section 5.4.1) of type PROTOCOL_ERROR. + return ConnectionError(ErrCodeProtocol) + default: + sc.vlogf("http2: server ignoring frame: %v", f.Header()) + return nil + } +} + +func (sc *serverConn) processPing(f *PingFrame) error { + sc.serveG.check() + if f.IsAck() { + // 6.7 PING: " An endpoint MUST NOT respond to PING frames + // containing this flag." + return nil + } + if f.StreamID != 0 { + // "PING frames are not associated with any individual + // stream. If a PING frame is received with a stream + // identifier field value other than 0x0, the recipient MUST + // respond with a connection error (Section 5.4.1) of type + // PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) + } + sc.writeFrame(frameWriteMsg{write: writePingAck{f}}) + return nil +} + +func (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error { + sc.serveG.check() + switch { + case f.StreamID != 0: // stream-level flow control + st := sc.streams[f.StreamID] + if st == nil { + // "WINDOW_UPDATE can be sent by a peer that has sent a + // frame bearing the END_STREAM flag. This means that a + // receiver could receive a WINDOW_UPDATE frame on a "half + // closed (remote)" or "closed" stream. A receiver MUST + // NOT treat this as an error, see Section 5.1." + return nil + } + if !st.flow.add(int32(f.Increment)) { + return StreamError{f.StreamID, ErrCodeFlowControl} + } + default: // connection-level flow control + if !sc.flow.add(int32(f.Increment)) { + return goAwayFlowError{} + } + } + sc.scheduleFrameWrite() + return nil +} + +func (sc *serverConn) processResetStream(f *RSTStreamFrame) error { + sc.serveG.check() + + state, st := sc.state(f.StreamID) + if state == stateIdle { + // 6.4 "RST_STREAM frames MUST NOT be sent for a + // stream in the "idle" state. If a RST_STREAM frame + // identifying an idle stream is received, the + // recipient MUST treat this as a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + return ConnectionError(ErrCodeProtocol) + } + if st != nil { + st.gotReset = true + st.cancelCtx() + sc.closeStream(st, StreamError{f.StreamID, f.ErrCode}) + } + return nil +} + +func (sc *serverConn) closeStream(st *stream, err error) { + sc.serveG.check() + if st.state == stateIdle || st.state == stateClosed { + panic(fmt.Sprintf("invariant; can't close stream in state %v", st.state)) + } + st.state = stateClosed + sc.curOpenStreams-- + if sc.curOpenStreams == 0 { + sc.setConnState(http.StateIdle) + } + delete(sc.streams, st.id) + if p := st.body; p != nil { + p.CloseWithError(err) + } + st.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc + sc.writeSched.forgetStream(st.id) + if st.reqBuf != nil { + // Stash this request body buffer (64k) away for reuse + // by a future POST/PUT/etc. + // + // TODO(bradfitz): share on the server? sync.Pool? + // Server requires locks and might hurt contention. + // sync.Pool might work, or might be worse, depending + // on goroutine CPU migrations. (get and put on + // separate CPUs). Maybe a mix of strategies. But + // this is an easy win for now. + sc.freeRequestBodyBuf = st.reqBuf + } +} + +func (sc *serverConn) processSettings(f *SettingsFrame) error { + sc.serveG.check() + if f.IsAck() { + sc.unackedSettings-- + if sc.unackedSettings < 0 { + // Why is the peer ACKing settings we never sent? + // The spec doesn't mention this case, but + // hang up on them anyway. + return ConnectionError(ErrCodeProtocol) + } + return nil + } + if err := f.ForeachSetting(sc.processSetting); err != nil { + return err + } + sc.needToSendSettingsAck = true + sc.scheduleFrameWrite() + return nil +} + +func (sc *serverConn) processSetting(s Setting) error { + sc.serveG.check() + if err := s.Valid(); err != nil { + return err + } + if VerboseLogs { + sc.vlogf("http2: server processing setting %v", s) + } + switch s.ID { + case SettingHeaderTableSize: + sc.headerTableSize = s.Val + sc.hpackEncoder.SetMaxDynamicTableSize(s.Val) + case SettingEnablePush: + sc.pushEnabled = s.Val != 0 + case SettingMaxConcurrentStreams: + sc.clientMaxStreams = s.Val + case SettingInitialWindowSize: + return sc.processSettingInitialWindowSize(s.Val) + case SettingMaxFrameSize: + sc.writeSched.maxFrameSize = s.Val + case SettingMaxHeaderListSize: + sc.peerMaxHeaderListSize = s.Val + default: + // Unknown setting: "An endpoint that receives a SETTINGS + // frame with any unknown or unsupported identifier MUST + // ignore that setting." + if VerboseLogs { + sc.vlogf("http2: server ignoring unknown setting %v", s) + } + } + return nil +} + +func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { + sc.serveG.check() + // Note: val already validated to be within range by + // processSetting's Valid call. + + // "A SETTINGS frame can alter the initial flow control window + // size for all current streams. When the value of + // SETTINGS_INITIAL_WINDOW_SIZE changes, a receiver MUST + // adjust the size of all stream flow control windows that it + // maintains by the difference between the new value and the + // old value." + old := sc.initialWindowSize + sc.initialWindowSize = int32(val) + growth := sc.initialWindowSize - old // may be negative + for _, st := range sc.streams { + if !st.flow.add(growth) { + // 6.9.2 Initial Flow Control Window Size + // "An endpoint MUST treat a change to + // SETTINGS_INITIAL_WINDOW_SIZE that causes any flow + // control window to exceed the maximum size as a + // connection error (Section 5.4.1) of type + // FLOW_CONTROL_ERROR." + return ConnectionError(ErrCodeFlowControl) + } + } + return nil +} + +func (sc *serverConn) processData(f *DataFrame) error { + sc.serveG.check() + // "If a DATA frame is received whose stream is not in "open" + // or "half closed (local)" state, the recipient MUST respond + // with a stream error (Section 5.4.2) of type STREAM_CLOSED." + id := f.Header().StreamID + st, ok := sc.streams[id] + if !ok || st.state != stateOpen || st.gotTrailerHeader { + // This includes sending a RST_STREAM if the stream is + // in stateHalfClosedLocal (which currently means that + // the http.Handler returned, so it's done reading & + // done writing). Try to stop the client from sending + // more DATA. + return StreamError{id, ErrCodeStreamClosed} + } + if st.body == nil { + panic("internal error: should have a body in this state") + } + data := f.Data() + + // Sender sending more than they'd declared? + if st.declBodyBytes != -1 && st.bodyBytes+int64(len(data)) > st.declBodyBytes { + st.body.CloseWithError(fmt.Errorf("sender tried to send more than declared Content-Length of %d bytes", st.declBodyBytes)) + return StreamError{id, ErrCodeStreamClosed} + } + if len(data) > 0 { + // Check whether the client has flow control quota. + if int(st.inflow.available()) < len(data) { + return StreamError{id, ErrCodeFlowControl} + } + st.inflow.take(int32(len(data))) + wrote, err := st.body.Write(data) + if err != nil { + return StreamError{id, ErrCodeStreamClosed} + } + if wrote != len(data) { + panic("internal error: bad Writer") + } + st.bodyBytes += int64(len(data)) + } + if f.StreamEnded() { + st.endStream() + } + return nil +} + +// endStream closes a Request.Body's pipe. It is called when a DATA +// frame says a request body is over (or after trailers). +func (st *stream) endStream() { + sc := st.sc + sc.serveG.check() + + if st.declBodyBytes != -1 && st.declBodyBytes != st.bodyBytes { + st.body.CloseWithError(fmt.Errorf("request declared a Content-Length of %d but only wrote %d bytes", + st.declBodyBytes, st.bodyBytes)) + } else { + st.body.closeWithErrorAndCode(io.EOF, st.copyTrailersToHandlerRequest) + st.body.CloseWithError(io.EOF) + } + st.state = stateHalfClosedRemote +} + +// copyTrailersToHandlerRequest is run in the Handler's goroutine in +// its Request.Body.Read just before it gets io.EOF. +func (st *stream) copyTrailersToHandlerRequest() { + for k, vv := range st.trailer { + if _, ok := st.reqTrailer[k]; ok { + // Only copy it over it was pre-declared. + st.reqTrailer[k] = vv + } + } +} + +func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { + sc.serveG.check() + id := f.Header().StreamID + if sc.inGoAway { + // Ignore. + return nil + } + // http://http2.github.io/http2-spec/#rfc.section.5.1.1 + // Streams initiated by a client MUST use odd-numbered stream + // identifiers. [...] An endpoint that receives an unexpected + // stream identifier MUST respond with a connection error + // (Section 5.4.1) of type PROTOCOL_ERROR. + if id%2 != 1 { + return ConnectionError(ErrCodeProtocol) + } + // A HEADERS frame can be used to create a new stream or + // send a trailer for an open one. If we already have a stream + // open, let it process its own HEADERS frame (trailers at this + // point, if it's valid). + st := sc.streams[f.Header().StreamID] + if st != nil { + return st.processTrailerHeaders(f) + } + + // [...] The identifier of a newly established stream MUST be + // numerically greater than all streams that the initiating + // endpoint has opened or reserved. [...] An endpoint that + // receives an unexpected stream identifier MUST respond with + // a connection error (Section 5.4.1) of type PROTOCOL_ERROR. + if id <= sc.maxStreamID { + return ConnectionError(ErrCodeProtocol) + } + sc.maxStreamID = id + + ctx, cancelCtx := contextWithCancel(sc.baseCtx) + st = &stream{ + sc: sc, + id: id, + state: stateOpen, + ctx: ctx, + cancelCtx: cancelCtx, + } + if f.StreamEnded() { + st.state = stateHalfClosedRemote + } + st.cw.Init() + + st.flow.conn = &sc.flow // link to conn-level counter + st.flow.add(sc.initialWindowSize) + st.inflow.conn = &sc.inflow // link to conn-level counter + st.inflow.add(initialWindowSize) // TODO: update this when we send a higher initial window size in the initial settings + + sc.streams[id] = st + if f.HasPriority() { + adjustStreamPriority(sc.streams, st.id, f.Priority) + } + sc.curOpenStreams++ + if sc.curOpenStreams == 1 { + sc.setConnState(http.StateActive) + } + if sc.curOpenStreams > sc.advMaxStreams { + // "Endpoints MUST NOT exceed the limit set by their + // peer. An endpoint that receives a HEADERS frame + // that causes their advertised concurrent stream + // limit to be exceeded MUST treat this as a stream + // error (Section 5.4.2) of type PROTOCOL_ERROR or + // REFUSED_STREAM." + if sc.unackedSettings == 0 { + // They should know better. + return StreamError{st.id, ErrCodeProtocol} + } + // Assume it's a network race, where they just haven't + // received our last SETTINGS update. But actually + // this can't happen yet, because we don't yet provide + // a way for users to adjust server parameters at + // runtime. + return StreamError{st.id, ErrCodeRefusedStream} + } + + rw, req, err := sc.newWriterAndRequest(st, f) + if err != nil { + return err + } + st.reqTrailer = req.Trailer + if st.reqTrailer != nil { + st.trailer = make(http.Header) + } + st.body = req.Body.(*requestBody).pipe // may be nil + st.declBodyBytes = req.ContentLength + + handler := sc.handler.ServeHTTP + if f.Truncated { + // Their header list was too long. Send a 431 error. + handler = handleHeaderListTooLong + } else if err := checkValidHTTP2Request(req); err != nil { + handler = new400Handler(err) + } + + go sc.runHandler(rw, req, handler) + return nil +} + +func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { + sc := st.sc + sc.serveG.check() + if st.gotTrailerHeader { + return ConnectionError(ErrCodeProtocol) + } + st.gotTrailerHeader = true + if !f.StreamEnded() { + return StreamError{st.id, ErrCodeProtocol} + } + + if len(f.PseudoFields()) > 0 { + return StreamError{st.id, ErrCodeProtocol} + } + if st.trailer != nil { + for _, hf := range f.RegularFields() { + key := sc.canonicalHeader(hf.Name) + if !ValidTrailerHeader(key) { + // TODO: send more details to the peer somehow. But http2 has + // no way to send debug data at a stream level. Discuss with + // HTTP folk. + return StreamError{st.id, ErrCodeProtocol} + } + st.trailer[key] = append(st.trailer[key], hf.Value) + } + } + st.endStream() + return nil +} + +func (sc *serverConn) processPriority(f *PriorityFrame) error { + adjustStreamPriority(sc.streams, f.StreamID, f.PriorityParam) + return nil +} + +func adjustStreamPriority(streams map[uint32]*stream, streamID uint32, priority PriorityParam) { + st, ok := streams[streamID] + if !ok { + // TODO: not quite correct (this streamID might + // already exist in the dep tree, but be closed), but + // close enough for now. + return + } + st.weight = priority.Weight + parent := streams[priority.StreamDep] // might be nil + if parent == st { + // if client tries to set this stream to be the parent of itself + // ignore and keep going + return + } + + // section 5.3.3: If a stream is made dependent on one of its + // own dependencies, the formerly dependent stream is first + // moved to be dependent on the reprioritized stream's previous + // parent. The moved dependency retains its weight. + for piter := parent; piter != nil; piter = piter.parent { + if piter == st { + parent.parent = st.parent + break + } + } + st.parent = parent + if priority.Exclusive && (st.parent != nil || priority.StreamDep == 0) { + for _, openStream := range streams { + if openStream != st && openStream.parent == st.parent { + openStream.parent = st + } + } + } +} + +func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*responseWriter, *http.Request, error) { + sc.serveG.check() + + method := f.PseudoValue("method") + path := f.PseudoValue("path") + scheme := f.PseudoValue("scheme") + authority := f.PseudoValue("authority") + + isConnect := method == "CONNECT" + if isConnect { + if path != "" || scheme != "" || authority == "" { + return nil, nil, StreamError{f.StreamID, ErrCodeProtocol} + } + } else if method == "" || path == "" || + (scheme != "https" && scheme != "http") { + // See 8.1.2.6 Malformed Requests and Responses: + // + // Malformed requests or responses that are detected + // MUST be treated as a stream error (Section 5.4.2) + // of type PROTOCOL_ERROR." + // + // 8.1.2.3 Request Pseudo-Header Fields + // "All HTTP/2 requests MUST include exactly one valid + // value for the :method, :scheme, and :path + // pseudo-header fields" + return nil, nil, StreamError{f.StreamID, ErrCodeProtocol} + } + + bodyOpen := !f.StreamEnded() + if method == "HEAD" && bodyOpen { + // HEAD requests can't have bodies + return nil, nil, StreamError{f.StreamID, ErrCodeProtocol} + } + var tlsState *tls.ConnectionState // nil if not scheme https + + if scheme == "https" { + tlsState = sc.tlsState + } + + header := make(http.Header) + for _, hf := range f.RegularFields() { + header.Add(sc.canonicalHeader(hf.Name), hf.Value) + } + + if authority == "" { + authority = header.Get("Host") + } + needsContinue := header.Get("Expect") == "100-continue" + if needsContinue { + header.Del("Expect") + } + // Merge Cookie headers into one "; "-delimited value. + if cookies := header["Cookie"]; len(cookies) > 1 { + header.Set("Cookie", strings.Join(cookies, "; ")) + } + + // Setup Trailers + var trailer http.Header + for _, v := range header["Trailer"] { + for _, key := range strings.Split(v, ",") { + key = http.CanonicalHeaderKey(strings.TrimSpace(key)) + switch key { + case "Transfer-Encoding", "Trailer", "Content-Length": + // Bogus. (copy of http1 rules) + // Ignore. + default: + if trailer == nil { + trailer = make(http.Header) + } + trailer[key] = nil + } + } + } + delete(header, "Trailer") + + body := &requestBody{ + conn: sc, + stream: st, + needsContinue: needsContinue, + } + var url_ *url.URL + var requestURI string + if isConnect { + url_ = &url.URL{Host: authority} + requestURI = authority // mimic HTTP/1 server behavior + } else { + var err error + url_, err = url.ParseRequestURI(path) + if err != nil { + return nil, nil, StreamError{f.StreamID, ErrCodeProtocol} + } + requestURI = path + } + req := &http.Request{ + Method: method, + URL: url_, + RemoteAddr: sc.remoteAddrStr, + Header: header, + RequestURI: requestURI, + Proto: "HTTP/2.0", + ProtoMajor: 2, + ProtoMinor: 0, + TLS: tlsState, + Host: authority, + Body: body, + Trailer: trailer, + } + req = requestWithContext(req, st.ctx) + if bodyOpen { + // Disabled, per golang.org/issue/14960: + // st.reqBuf = sc.getRequestBodyBuf() + // TODO: remove this 64k of garbage per request (again, but without a data race): + buf := make([]byte, initialWindowSize) + + body.pipe = &pipe{ + b: &fixedBuffer{buf: buf}, + } + + if vv, ok := header["Content-Length"]; ok { + req.ContentLength, _ = strconv.ParseInt(vv[0], 10, 64) + } else { + req.ContentLength = -1 + } + } + + rws := responseWriterStatePool.Get().(*responseWriterState) + bwSave := rws.bw + *rws = responseWriterState{} // zero all the fields + rws.conn = sc + rws.bw = bwSave + rws.bw.Reset(chunkWriter{rws}) + rws.stream = st + rws.req = req + rws.body = body + + rw := &responseWriter{rws: rws} + return rw, req, nil +} + +func (sc *serverConn) getRequestBodyBuf() []byte { + sc.serveG.check() + if buf := sc.freeRequestBodyBuf; buf != nil { + sc.freeRequestBodyBuf = nil + return buf + } + return make([]byte, initialWindowSize) +} + +// Run on its own goroutine. +func (sc *serverConn) runHandler(rw *responseWriter, req *http.Request, handler func(http.ResponseWriter, *http.Request)) { + didPanic := true + defer func() { + rw.rws.stream.cancelCtx() + if didPanic { + e := recover() + // Same as net/http: + const size = 64 << 10 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + sc.writeFrameFromHandler(frameWriteMsg{ + write: handlerPanicRST{rw.rws.stream.id}, + stream: rw.rws.stream, + }) + sc.logf("http2: panic serving %v: %v\n%s", sc.conn.RemoteAddr(), e, buf) + return + } + rw.handlerDone() + }() + handler(rw, req) + didPanic = false +} + +func handleHeaderListTooLong(w http.ResponseWriter, r *http.Request) { + // 10.5.1 Limits on Header Block Size: + // .. "A server that receives a larger header block than it is + // willing to handle can send an HTTP 431 (Request Header Fields Too + // Large) status code" + const statusRequestHeaderFieldsTooLarge = 431 // only in Go 1.6+ + w.WriteHeader(statusRequestHeaderFieldsTooLarge) + io.WriteString(w, "

HTTP Error 431

Request Header Field(s) Too Large

") +} + +// called from handler goroutines. +// h may be nil. +func (sc *serverConn) writeHeaders(st *stream, headerData *writeResHeaders) error { + sc.serveG.checkNotOn() // NOT on + var errc chan error + if headerData.h != nil { + // If there's a header map (which we don't own), so we have to block on + // waiting for this frame to be written, so an http.Flush mid-handler + // writes out the correct value of keys, before a handler later potentially + // mutates it. + errc = errChanPool.Get().(chan error) + } + if err := sc.writeFrameFromHandler(frameWriteMsg{ + write: headerData, + stream: st, + done: errc, + }); err != nil { + return err + } + if errc != nil { + select { + case err := <-errc: + errChanPool.Put(errc) + return err + case <-sc.doneServing: + return errClientDisconnected + case <-st.cw: + return errStreamClosed + } + } + return nil +} + +// called from handler goroutines. +func (sc *serverConn) write100ContinueHeaders(st *stream) { + sc.writeFrameFromHandler(frameWriteMsg{ + write: write100ContinueHeadersFrame{st.id}, + stream: st, + }) +} + +// A bodyReadMsg tells the server loop that the http.Handler read n +// bytes of the DATA from the client on the given stream. +type bodyReadMsg struct { + st *stream + n int +} + +// called from handler goroutines. +// Notes that the handler for the given stream ID read n bytes of its body +// and schedules flow control tokens to be sent. +func (sc *serverConn) noteBodyReadFromHandler(st *stream, n int) { + sc.serveG.checkNotOn() // NOT on + select { + case sc.bodyReadCh <- bodyReadMsg{st, n}: + case <-sc.doneServing: + } +} + +func (sc *serverConn) noteBodyRead(st *stream, n int) { + sc.serveG.check() + sc.sendWindowUpdate(nil, n) // conn-level + if st.state != stateHalfClosedRemote && st.state != stateClosed { + // Don't send this WINDOW_UPDATE if the stream is closed + // remotely. + sc.sendWindowUpdate(st, n) + } +} + +// st may be nil for conn-level +func (sc *serverConn) sendWindowUpdate(st *stream, n int) { + sc.serveG.check() + // "The legal range for the increment to the flow control + // window is 1 to 2^31-1 (2,147,483,647) octets." + // A Go Read call on 64-bit machines could in theory read + // a larger Read than this. Very unlikely, but we handle it here + // rather than elsewhere for now. + const maxUint31 = 1<<31 - 1 + for n >= maxUint31 { + sc.sendWindowUpdate32(st, maxUint31) + n -= maxUint31 + } + sc.sendWindowUpdate32(st, int32(n)) +} + +// st may be nil for conn-level +func (sc *serverConn) sendWindowUpdate32(st *stream, n int32) { + sc.serveG.check() + if n == 0 { + return + } + if n < 0 { + panic("negative update") + } + var streamID uint32 + if st != nil { + streamID = st.id + } + sc.writeFrame(frameWriteMsg{ + write: writeWindowUpdate{streamID: streamID, n: uint32(n)}, + stream: st, + }) + var ok bool + if st == nil { + ok = sc.inflow.add(n) + } else { + ok = st.inflow.add(n) + } + if !ok { + panic("internal error; sent too many window updates without decrements?") + } +} + +type requestBody struct { + stream *stream + conn *serverConn + closed bool + pipe *pipe // non-nil if we have a HTTP entity message body + needsContinue bool // need to send a 100-continue +} + +func (b *requestBody) Close() error { + if b.pipe != nil { + b.pipe.BreakWithError(errClosedBody) + } + b.closed = true + return nil +} + +func (b *requestBody) Read(p []byte) (n int, err error) { + if b.needsContinue { + b.needsContinue = false + b.conn.write100ContinueHeaders(b.stream) + } + if b.pipe == nil { + return 0, io.EOF + } + n, err = b.pipe.Read(p) + if n > 0 { + b.conn.noteBodyReadFromHandler(b.stream, n) + } + return +} + +// responseWriter is the http.ResponseWriter implementation. It's +// intentionally small (1 pointer wide) to minimize garbage. The +// responseWriterState pointer inside is zeroed at the end of a +// request (in handlerDone) and calls on the responseWriter thereafter +// simply crash (caller's mistake), but the much larger responseWriterState +// and buffers are reused between multiple requests. +type responseWriter struct { + rws *responseWriterState +} + +// Optional http.ResponseWriter interfaces implemented. +var ( + _ http.CloseNotifier = (*responseWriter)(nil) + _ http.Flusher = (*responseWriter)(nil) + _ stringWriter = (*responseWriter)(nil) +) + +type responseWriterState struct { + // immutable within a request: + stream *stream + req *http.Request + body *requestBody // to close at end of request, if DATA frames didn't + conn *serverConn + + // TODO: adjust buffer writing sizes based on server config, frame size updates from peer, etc + bw *bufio.Writer // writing to a chunkWriter{this *responseWriterState} + + // mutated by http.Handler goroutine: + handlerHeader http.Header // nil until called + snapHeader http.Header // snapshot of handlerHeader at WriteHeader time + trailers []string // set in writeChunk + status int // status code passed to WriteHeader + wroteHeader bool // WriteHeader called (explicitly or implicitly). Not necessarily sent to user yet. + sentHeader bool // have we sent the header frame? + handlerDone bool // handler has finished + + sentContentLen int64 // non-zero if handler set a Content-Length header + wroteBytes int64 + + closeNotifierMu sync.Mutex // guards closeNotifierCh + closeNotifierCh chan bool // nil until first used +} + +type chunkWriter struct{ rws *responseWriterState } + +func (cw chunkWriter) Write(p []byte) (n int, err error) { return cw.rws.writeChunk(p) } + +func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) != 0 } + +// declareTrailer is called for each Trailer header when the +// response header is written. It notes that a header will need to be +// written in the trailers at the end of the response. +func (rws *responseWriterState) declareTrailer(k string) { + k = http.CanonicalHeaderKey(k) + if !ValidTrailerHeader(k) { + // Forbidden by RFC 2616 14.40. + rws.conn.logf("ignoring invalid trailer %q", k) + return + } + if !strSliceContains(rws.trailers, k) { + rws.trailers = append(rws.trailers, k) + } +} + +// writeChunk writes chunks from the bufio.Writer. But because +// bufio.Writer may bypass its chunking, sometimes p may be +// arbitrarily large. +// +// writeChunk is also responsible (on the first chunk) for sending the +// HEADER response. +func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { + if !rws.wroteHeader { + rws.writeHeader(200) + } + + isHeadResp := rws.req.Method == "HEAD" + if !rws.sentHeader { + rws.sentHeader = true + var ctype, clen string + if clen = rws.snapHeader.Get("Content-Length"); clen != "" { + rws.snapHeader.Del("Content-Length") + clen64, err := strconv.ParseInt(clen, 10, 64) + if err == nil && clen64 >= 0 { + rws.sentContentLen = clen64 + } else { + clen = "" + } + } + if clen == "" && rws.handlerDone && bodyAllowedForStatus(rws.status) && (len(p) > 0 || !isHeadResp) { + clen = strconv.Itoa(len(p)) + } + _, hasContentType := rws.snapHeader["Content-Type"] + if !hasContentType && bodyAllowedForStatus(rws.status) { + ctype = http.DetectContentType(p) + } + var date string + if _, ok := rws.snapHeader["Date"]; !ok { + // TODO(bradfitz): be faster here, like net/http? measure. + date = time.Now().UTC().Format(http.TimeFormat) + } + + for _, v := range rws.snapHeader["Trailer"] { + foreachHeaderElement(v, rws.declareTrailer) + } + + endStream := (rws.handlerDone && !rws.hasTrailers() && len(p) == 0) || isHeadResp + err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + streamID: rws.stream.id, + httpResCode: rws.status, + h: rws.snapHeader, + endStream: endStream, + contentType: ctype, + contentLength: clen, + date: date, + }) + if err != nil { + return 0, err + } + if endStream { + return 0, nil + } + } + if isHeadResp { + return len(p), nil + } + if len(p) == 0 && !rws.handlerDone { + return 0, nil + } + + if rws.handlerDone { + rws.promoteUndeclaredTrailers() + } + + endStream := rws.handlerDone && !rws.hasTrailers() + if len(p) > 0 || endStream { + // only send a 0 byte DATA frame if we're ending the stream. + if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil { + return 0, err + } + } + + if rws.handlerDone && rws.hasTrailers() { + err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + streamID: rws.stream.id, + h: rws.handlerHeader, + trailers: rws.trailers, + endStream: true, + }) + return len(p), err + } + return len(p), nil +} + +// TrailerPrefix is a magic prefix for ResponseWriter.Header map keys +// that, if present, signals that the map entry is actually for +// the response trailers, and not the response headers. The prefix +// is stripped after the ServeHTTP call finishes and the values are +// sent in the trailers. +// +// This mechanism is intended only for trailers that are not known +// prior to the headers being written. If the set of trailers is fixed +// or known before the header is written, the normal Go trailers mechanism +// is preferred: +// https://golang.org/pkg/net/http/#ResponseWriter +// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers +const TrailerPrefix = "Trailer:" + +// promoteUndeclaredTrailers permits http.Handlers to set trailers +// after the header has already been flushed. Because the Go +// ResponseWriter interface has no way to set Trailers (only the +// Header), and because we didn't want to expand the ResponseWriter +// interface, and because nobody used trailers, and because RFC 2616 +// says you SHOULD (but not must) predeclare any trailers in the +// header, the official ResponseWriter rules said trailers in Go must +// be predeclared, and then we reuse the same ResponseWriter.Header() +// map to mean both Headers and Trailers. When it's time to write the +// Trailers, we pick out the fields of Headers that were declared as +// trailers. That worked for a while, until we found the first major +// user of Trailers in the wild: gRPC (using them only over http2), +// and gRPC libraries permit setting trailers mid-stream without +// predeclarnig them. So: change of plans. We still permit the old +// way, but we also permit this hack: if a Header() key begins with +// "Trailer:", the suffix of that key is a Trailer. Because ':' is an +// invalid token byte anyway, there is no ambiguity. (And it's already +// filtered out) It's mildly hacky, but not terrible. +// +// This method runs after the Handler is done and promotes any Header +// fields to be trailers. +func (rws *responseWriterState) promoteUndeclaredTrailers() { + for k, vv := range rws.handlerHeader { + if !strings.HasPrefix(k, TrailerPrefix) { + continue + } + trailerKey := strings.TrimPrefix(k, TrailerPrefix) + rws.declareTrailer(trailerKey) + rws.handlerHeader[http.CanonicalHeaderKey(trailerKey)] = vv + } + + if len(rws.trailers) > 1 { + sorter := sorterPool.Get().(*sorter) + sorter.SortStrings(rws.trailers) + sorterPool.Put(sorter) + } +} + +func (w *responseWriter) Flush() { + rws := w.rws + if rws == nil { + panic("Header called after Handler finished") + } + if rws.bw.Buffered() > 0 { + if err := rws.bw.Flush(); err != nil { + // Ignore the error. The frame writer already knows. + return + } + } else { + // The bufio.Writer won't call chunkWriter.Write + // (writeChunk with zero bytes, so we have to do it + // ourselves to force the HTTP response header and/or + // final DATA frame (with END_STREAM) to be sent. + rws.writeChunk(nil) + } +} + +func (w *responseWriter) CloseNotify() <-chan bool { + rws := w.rws + if rws == nil { + panic("CloseNotify called after Handler finished") + } + rws.closeNotifierMu.Lock() + ch := rws.closeNotifierCh + if ch == nil { + ch = make(chan bool, 1) + rws.closeNotifierCh = ch + go func() { + rws.stream.cw.Wait() // wait for close + ch <- true + }() + } + rws.closeNotifierMu.Unlock() + return ch +} + +func (w *responseWriter) Header() http.Header { + rws := w.rws + if rws == nil { + panic("Header called after Handler finished") + } + if rws.handlerHeader == nil { + rws.handlerHeader = make(http.Header) + } + return rws.handlerHeader +} + +func (w *responseWriter) WriteHeader(code int) { + rws := w.rws + if rws == nil { + panic("WriteHeader called after Handler finished") + } + rws.writeHeader(code) +} + +func (rws *responseWriterState) writeHeader(code int) { + if !rws.wroteHeader { + rws.wroteHeader = true + rws.status = code + if len(rws.handlerHeader) > 0 { + rws.snapHeader = cloneHeader(rws.handlerHeader) + } + } +} + +func cloneHeader(h http.Header) http.Header { + h2 := make(http.Header, len(h)) + for k, vv := range h { + vv2 := make([]string, len(vv)) + copy(vv2, vv) + h2[k] = vv2 + } + return h2 +} + +// The Life Of A Write is like this: +// +// * Handler calls w.Write or w.WriteString -> +// * -> rws.bw (*bufio.Writer) -> +// * (Handler migth call Flush) +// * -> chunkWriter{rws} +// * -> responseWriterState.writeChunk(p []byte) +// * -> responseWriterState.writeChunk (most of the magic; see comment there) +func (w *responseWriter) Write(p []byte) (n int, err error) { + return w.write(len(p), p, "") +} + +func (w *responseWriter) WriteString(s string) (n int, err error) { + return w.write(len(s), nil, s) +} + +// either dataB or dataS is non-zero. +func (w *responseWriter) write(lenData int, dataB []byte, dataS string) (n int, err error) { + rws := w.rws + if rws == nil { + panic("Write called after Handler finished") + } + if !rws.wroteHeader { + w.WriteHeader(200) + } + if !bodyAllowedForStatus(rws.status) { + return 0, http.ErrBodyNotAllowed + } + rws.wroteBytes += int64(len(dataB)) + int64(len(dataS)) // only one can be set + if rws.sentContentLen != 0 && rws.wroteBytes > rws.sentContentLen { + // TODO: send a RST_STREAM + return 0, errors.New("http2: handler wrote more than declared Content-Length") + } + + if dataB != nil { + return rws.bw.Write(dataB) + } else { + return rws.bw.WriteString(dataS) + } +} + +func (w *responseWriter) handlerDone() { + rws := w.rws + rws.handlerDone = true + w.Flush() + w.rws = nil + responseWriterStatePool.Put(rws) +} + +// foreachHeaderElement splits v according to the "#rule" construction +// in RFC 2616 section 2.1 and calls fn for each non-empty element. +func foreachHeaderElement(v string, fn func(string)) { + v = textproto.TrimString(v) + if v == "" { + return + } + if !strings.Contains(v, ",") { + fn(v) + return + } + for _, f := range strings.Split(v, ",") { + if f = textproto.TrimString(f); f != "" { + fn(f) + } + } +} + +// From http://httpwg.org/specs/rfc7540.html#rfc.section.8.1.2.2 +var connHeaders = []string{ + "Connection", + "Keep-Alive", + "Proxy-Connection", + "Transfer-Encoding", + "Upgrade", +} + +// checkValidHTTP2Request checks whether req is a valid HTTP/2 request, +// per RFC 7540 Section 8.1.2.2. +// The returned error is reported to users. +func checkValidHTTP2Request(req *http.Request) error { + for _, h := range connHeaders { + if _, ok := req.Header[h]; ok { + return fmt.Errorf("request header %q is not valid in HTTP/2", h) + } + } + te := req.Header["Te"] + if len(te) > 0 && (len(te) > 1 || (te[0] != "trailers" && te[0] != "")) { + return errors.New(`request header "TE" may only be "trailers" in HTTP/2`) + } + return nil +} + +func new400Handler(err error) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + http.Error(w, err.Error(), http.StatusBadRequest) + } +} + +// ValidTrailerHeader reports whether name is a valid header field name to appear +// in trailers. +// See: http://tools.ietf.org/html/rfc7230#section-4.1.2 +func ValidTrailerHeader(name string) bool { + name = http.CanonicalHeaderKey(name) + if strings.HasPrefix(name, "If-") || badTrailer[name] { + return false + } + return true +} + +var badTrailer = map[string]bool{ + "Authorization": true, + "Cache-Control": true, + "Connection": true, + "Content-Encoding": true, + "Content-Length": true, + "Content-Range": true, + "Content-Type": true, + "Expect": true, + "Host": true, + "Keep-Alive": true, + "Max-Forwards": true, + "Pragma": true, + "Proxy-Authenticate": true, + "Proxy-Authorization": true, + "Proxy-Connection": true, + "Range": true, + "Realm": true, + "Te": true, + "Trailer": true, + "Transfer-Encoding": true, + "Www-Authenticate": true, +} diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go new file mode 100644 index 0000000000..fb8dd997b7 --- /dev/null +++ b/vendor/golang.org/x/net/http2/transport.go @@ -0,0 +1,1868 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Transport code. + +package http2 + +import ( + "bufio" + "bytes" + "compress/gzip" + "crypto/tls" + "errors" + "fmt" + "io" + "io/ioutil" + "log" + "net" + "net/http" + "sort" + "strconv" + "strings" + "sync" + "time" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/lex/httplex" +) + +const ( + // transportDefaultConnFlow is how many connection-level flow control + // tokens we give the server at start-up, past the default 64k. + transportDefaultConnFlow = 1 << 30 + + // transportDefaultStreamFlow is how many stream-level flow + // control tokens we announce to the peer, and how many bytes + // we buffer per stream. + transportDefaultStreamFlow = 4 << 20 + + // transportDefaultStreamMinRefresh is the minimum number of bytes we'll send + // a stream-level WINDOW_UPDATE for at a time. + transportDefaultStreamMinRefresh = 4 << 10 + + defaultUserAgent = "Go-http-client/2.0" +) + +// Transport is an HTTP/2 Transport. +// +// A Transport internally caches connections to servers. It is safe +// for concurrent use by multiple goroutines. +type Transport struct { + // DialTLS specifies an optional dial function for creating + // TLS connections for requests. + // + // If DialTLS is nil, tls.Dial is used. + // + // If the returned net.Conn has a ConnectionState method like tls.Conn, + // it will be used to set http.Response.TLS. + DialTLS func(network, addr string, cfg *tls.Config) (net.Conn, error) + + // TLSClientConfig specifies the TLS configuration to use with + // tls.Client. If nil, the default configuration is used. + TLSClientConfig *tls.Config + + // ConnPool optionally specifies an alternate connection pool to use. + // If nil, the default is used. + ConnPool ClientConnPool + + // DisableCompression, if true, prevents the Transport from + // requesting compression with an "Accept-Encoding: gzip" + // request header when the Request contains no existing + // Accept-Encoding value. If the Transport requests gzip on + // its own and gets a gzipped response, it's transparently + // decoded in the Response.Body. However, if the user + // explicitly requested gzip it is not automatically + // uncompressed. + DisableCompression bool + + // AllowHTTP, if true, permits HTTP/2 requests using the insecure, + // plain-text "http" scheme. Note that this does not enable h2c support. + AllowHTTP bool + + // MaxHeaderListSize is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to + // send in the initial settings frame. It is how many bytes + // of response headers are allow. Unlike the http2 spec, zero here + // means to use a default limit (currently 10MB). If you actually + // want to advertise an ulimited value to the peer, Transport + // interprets the highest possible value here (0xffffffff or 1<<32-1) + // to mean no limit. + MaxHeaderListSize uint32 + + // t1, if non-nil, is the standard library Transport using + // this transport. Its settings are used (but not its + // RoundTrip method, etc). + t1 *http.Transport + + connPoolOnce sync.Once + connPoolOrDef ClientConnPool // non-nil version of ConnPool +} + +func (t *Transport) maxHeaderListSize() uint32 { + if t.MaxHeaderListSize == 0 { + return 10 << 20 + } + if t.MaxHeaderListSize == 0xffffffff { + return 0 + } + return t.MaxHeaderListSize +} + +func (t *Transport) disableCompression() bool { + return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression) +} + +var errTransportVersion = errors.New("http2: ConfigureTransport is only supported starting at Go 1.6") + +// ConfigureTransport configures a net/http HTTP/1 Transport to use HTTP/2. +// It requires Go 1.6 or later and returns an error if the net/http package is too old +// or if t1 has already been HTTP/2-enabled. +func ConfigureTransport(t1 *http.Transport) error { + _, err := configureTransport(t1) // in configure_transport.go (go1.6) or not_go16.go + return err +} + +func (t *Transport) connPool() ClientConnPool { + t.connPoolOnce.Do(t.initConnPool) + return t.connPoolOrDef +} + +func (t *Transport) initConnPool() { + if t.ConnPool != nil { + t.connPoolOrDef = t.ConnPool + } else { + t.connPoolOrDef = &clientConnPool{t: t} + } +} + +// ClientConn is the state of a single HTTP/2 client connection to an +// HTTP/2 server. +type ClientConn struct { + t *Transport + tconn net.Conn // usually *tls.Conn, except specialized impls + tlsState *tls.ConnectionState // nil only for specialized impls + singleUse bool // whether being used for a single http.Request + + // readLoop goroutine fields: + readerDone chan struct{} // closed on error + readerErr error // set before readerDone is closed + + mu sync.Mutex // guards following + cond *sync.Cond // hold mu; broadcast on flow/closed changes + flow flow // our conn-level flow control quota (cs.flow is per stream) + inflow flow // peer's conn-level flow control + closed bool + goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received + goAwayDebug string // goAway frame's debug data, retained as a string + streams map[uint32]*clientStream // client-initiated + nextStreamID uint32 + bw *bufio.Writer + br *bufio.Reader + fr *Framer + lastActive time.Time + + // Settings from peer: + maxFrameSize uint32 + maxConcurrentStreams uint32 + initialWindowSize uint32 + hbuf bytes.Buffer // HPACK encoder writes into this + henc *hpack.Encoder + freeBuf [][]byte + + wmu sync.Mutex // held while writing; acquire AFTER mu if holding both + werr error // first write error that has occurred +} + +// clientStream is the state for a single HTTP/2 stream. One of these +// is created for each Transport.RoundTrip call. +type clientStream struct { + cc *ClientConn + req *http.Request + trace *clientTrace // or nil + ID uint32 + resc chan resAndError + bufPipe pipe // buffered pipe with the flow-controlled response payload + requestedGzip bool + on100 func() // optional code to run if get a 100 continue response + + flow flow // guarded by cc.mu + inflow flow // guarded by cc.mu + bytesRemain int64 // -1 means unknown; owned by transportResponseBody.Read + readErr error // sticky read error; owned by transportResponseBody.Read + stopReqBody error // if non-nil, stop writing req body; guarded by cc.mu + + peerReset chan struct{} // closed on peer reset + resetErr error // populated before peerReset is closed + + done chan struct{} // closed when stream remove from cc.streams map; close calls guarded by cc.mu + + // owned by clientConnReadLoop: + firstByte bool // got the first response byte + pastHeaders bool // got first MetaHeadersFrame (actual headers) + pastTrailers bool // got optional second MetaHeadersFrame (trailers) + + trailer http.Header // accumulated trailers + resTrailer *http.Header // client's Response.Trailer +} + +// awaitRequestCancel runs in its own goroutine and waits for the user +// to cancel a RoundTrip request, its context to expire, or for the +// request to be done (any way it might be removed from the cc.streams +// map: peer reset, successful completion, TCP connection breakage, +// etc) +func (cs *clientStream) awaitRequestCancel(req *http.Request) { + ctx := reqContext(req) + if req.Cancel == nil && ctx.Done() == nil { + return + } + select { + case <-req.Cancel: + cs.bufPipe.CloseWithError(errRequestCanceled) + cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + case <-ctx.Done(): + cs.bufPipe.CloseWithError(ctx.Err()) + cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + case <-cs.done: + } +} + +// checkResetOrDone reports any error sent in a RST_STREAM frame by the +// server, or errStreamClosed if the stream is complete. +func (cs *clientStream) checkResetOrDone() error { + select { + case <-cs.peerReset: + return cs.resetErr + case <-cs.done: + return errStreamClosed + default: + return nil + } +} + +func (cs *clientStream) abortRequestBodyWrite(err error) { + if err == nil { + panic("nil error") + } + cc := cs.cc + cc.mu.Lock() + cs.stopReqBody = err + cc.cond.Broadcast() + cc.mu.Unlock() +} + +type stickyErrWriter struct { + w io.Writer + err *error +} + +func (sew stickyErrWriter) Write(p []byte) (n int, err error) { + if *sew.err != nil { + return 0, *sew.err + } + n, err = sew.w.Write(p) + *sew.err = err + return +} + +var ErrNoCachedConn = errors.New("http2: no cached connection was available") + +// RoundTripOpt are options for the Transport.RoundTripOpt method. +type RoundTripOpt struct { + // OnlyCachedConn controls whether RoundTripOpt may + // create a new TCP connection. If set true and + // no cached connection is available, RoundTripOpt + // will return ErrNoCachedConn. + OnlyCachedConn bool +} + +func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) { + return t.RoundTripOpt(req, RoundTripOpt{}) +} + +// authorityAddr returns a given authority (a host/IP, or host:port / ip:port) +// and returns a host:port. The port 443 is added if needed. +func authorityAddr(scheme string, authority string) (addr string) { + if _, _, err := net.SplitHostPort(authority); err == nil { + return authority + } + port := "443" + if scheme == "http" { + port = "80" + } + return net.JoinHostPort(authority, port) +} + +// RoundTripOpt is like RoundTrip, but takes options. +func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) { + if !(req.URL.Scheme == "https" || (req.URL.Scheme == "http" && t.AllowHTTP)) { + return nil, errors.New("http2: unsupported scheme") + } + + addr := authorityAddr(req.URL.Scheme, req.URL.Host) + for { + cc, err := t.connPool().GetClientConn(req, addr) + if err != nil { + t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err) + return nil, err + } + traceGotConn(req, cc) + res, err := cc.RoundTrip(req) + if shouldRetryRequest(req, err) { + continue + } + if err != nil { + t.vlogf("RoundTrip failure: %v", err) + return nil, err + } + return res, nil + } +} + +// CloseIdleConnections closes any connections which were previously +// connected from previous requests but are now sitting idle. +// It does not interrupt any connections currently in use. +func (t *Transport) CloseIdleConnections() { + if cp, ok := t.connPool().(clientConnPoolIdleCloser); ok { + cp.closeIdleConnections() + } +} + +var ( + errClientConnClosed = errors.New("http2: client conn is closed") + errClientConnUnusable = errors.New("http2: client conn not usable") +) + +func shouldRetryRequest(req *http.Request, err error) bool { + // TODO: retry GET requests (no bodies) more aggressively, if shutdown + // before response. + return err == errClientConnUnusable +} + +func (t *Transport) dialClientConn(addr string) (*ClientConn, error) { + host, _, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + tconn, err := t.dialTLS()("tcp", addr, t.newTLSConfig(host)) + if err != nil { + return nil, err + } + return t.NewClientConn(tconn) +} + +func (t *Transport) newTLSConfig(host string) *tls.Config { + cfg := new(tls.Config) + if t.TLSClientConfig != nil { + *cfg = *t.TLSClientConfig + } + if !strSliceContains(cfg.NextProtos, NextProtoTLS) { + cfg.NextProtos = append([]string{NextProtoTLS}, cfg.NextProtos...) + } + if cfg.ServerName == "" { + cfg.ServerName = host + } + return cfg +} + +func (t *Transport) dialTLS() func(string, string, *tls.Config) (net.Conn, error) { + if t.DialTLS != nil { + return t.DialTLS + } + return t.dialTLSDefault +} + +func (t *Transport) dialTLSDefault(network, addr string, cfg *tls.Config) (net.Conn, error) { + cn, err := tls.Dial(network, addr, cfg) + if err != nil { + return nil, err + } + if err := cn.Handshake(); err != nil { + return nil, err + } + if !cfg.InsecureSkipVerify { + if err := cn.VerifyHostname(cfg.ServerName); err != nil { + return nil, err + } + } + state := cn.ConnectionState() + if p := state.NegotiatedProtocol; p != NextProtoTLS { + return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) + } + if !state.NegotiatedProtocolIsMutual { + return nil, errors.New("http2: could not negotiate protocol mutually") + } + return cn, nil +} + +// disableKeepAlives reports whether connections should be closed as +// soon as possible after handling the first request. +func (t *Transport) disableKeepAlives() bool { + return t.t1 != nil && t.t1.DisableKeepAlives +} + +func (t *Transport) expectContinueTimeout() time.Duration { + if t.t1 == nil { + return 0 + } + return transportExpectContinueTimeout(t.t1) +} + +func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) { + if VerboseLogs { + t.vlogf("http2: Transport creating client conn to %v", c.RemoteAddr()) + } + if _, err := c.Write(clientPreface); err != nil { + t.vlogf("client preface write error: %v", err) + return nil, err + } + + cc := &ClientConn{ + t: t, + tconn: c, + readerDone: make(chan struct{}), + nextStreamID: 1, + maxFrameSize: 16 << 10, // spec default + initialWindowSize: 65535, // spec default + maxConcurrentStreams: 1000, // "infinite", per spec. 1000 seems good enough. + streams: make(map[uint32]*clientStream), + } + cc.cond = sync.NewCond(&cc.mu) + cc.flow.add(int32(initialWindowSize)) + + // TODO: adjust this writer size to account for frame size + + // MTU + crypto/tls record padding. + cc.bw = bufio.NewWriter(stickyErrWriter{c, &cc.werr}) + cc.br = bufio.NewReader(c) + cc.fr = NewFramer(cc.bw, cc.br) + cc.fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) + cc.fr.MaxHeaderListSize = t.maxHeaderListSize() + + // TODO: SetMaxDynamicTableSize, SetMaxDynamicTableSizeLimit on + // henc in response to SETTINGS frames? + cc.henc = hpack.NewEncoder(&cc.hbuf) + + if cs, ok := c.(connectionStater); ok { + state := cs.ConnectionState() + cc.tlsState = &state + } + + initialSettings := []Setting{ + {ID: SettingEnablePush, Val: 0}, + {ID: SettingInitialWindowSize, Val: transportDefaultStreamFlow}, + } + if max := t.maxHeaderListSize(); max != 0 { + initialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max}) + } + cc.fr.WriteSettings(initialSettings...) + cc.fr.WriteWindowUpdate(0, transportDefaultConnFlow) + cc.inflow.add(transportDefaultConnFlow + initialWindowSize) + cc.bw.Flush() + if cc.werr != nil { + return nil, cc.werr + } + + // Read the obligatory SETTINGS frame + f, err := cc.fr.ReadFrame() + if err != nil { + return nil, err + } + sf, ok := f.(*SettingsFrame) + if !ok { + return nil, fmt.Errorf("expected settings frame, got: %T", f) + } + cc.fr.WriteSettingsAck() + cc.bw.Flush() + + sf.ForeachSetting(func(s Setting) error { + switch s.ID { + case SettingMaxFrameSize: + cc.maxFrameSize = s.Val + case SettingMaxConcurrentStreams: + cc.maxConcurrentStreams = s.Val + case SettingInitialWindowSize: + cc.initialWindowSize = s.Val + default: + // TODO(bradfitz): handle more; at least SETTINGS_HEADER_TABLE_SIZE? + t.vlogf("Unhandled Setting: %v", s) + } + return nil + }) + + go cc.readLoop() + return cc, nil +} + +func (cc *ClientConn) setGoAway(f *GoAwayFrame) { + cc.mu.Lock() + defer cc.mu.Unlock() + + old := cc.goAway + cc.goAway = f + + // Merge the previous and current GoAway error frames. + if cc.goAwayDebug == "" { + cc.goAwayDebug = string(f.DebugData()) + } + if old != nil && old.ErrCode != ErrCodeNo { + cc.goAway.ErrCode = old.ErrCode + } +} + +func (cc *ClientConn) CanTakeNewRequest() bool { + cc.mu.Lock() + defer cc.mu.Unlock() + return cc.canTakeNewRequestLocked() +} + +func (cc *ClientConn) canTakeNewRequestLocked() bool { + if cc.singleUse && cc.nextStreamID > 1 { + return false + } + return cc.goAway == nil && !cc.closed && + int64(len(cc.streams)+1) < int64(cc.maxConcurrentStreams) && + cc.nextStreamID < 2147483647 +} + +func (cc *ClientConn) closeIfIdle() { + cc.mu.Lock() + if len(cc.streams) > 0 { + cc.mu.Unlock() + return + } + cc.closed = true + // TODO: do clients send GOAWAY too? maybe? Just Close: + cc.mu.Unlock() + + cc.tconn.Close() +} + +const maxAllocFrameSize = 512 << 10 + +// frameBuffer returns a scratch buffer suitable for writing DATA frames. +// They're capped at the min of the peer's max frame size or 512KB +// (kinda arbitrarily), but definitely capped so we don't allocate 4GB +// bufers. +func (cc *ClientConn) frameScratchBuffer() []byte { + cc.mu.Lock() + size := cc.maxFrameSize + if size > maxAllocFrameSize { + size = maxAllocFrameSize + } + for i, buf := range cc.freeBuf { + if len(buf) >= int(size) { + cc.freeBuf[i] = nil + cc.mu.Unlock() + return buf[:size] + } + } + cc.mu.Unlock() + return make([]byte, size) +} + +func (cc *ClientConn) putFrameScratchBuffer(buf []byte) { + cc.mu.Lock() + defer cc.mu.Unlock() + const maxBufs = 4 // arbitrary; 4 concurrent requests per conn? investigate. + if len(cc.freeBuf) < maxBufs { + cc.freeBuf = append(cc.freeBuf, buf) + return + } + for i, old := range cc.freeBuf { + if old == nil { + cc.freeBuf[i] = buf + return + } + } + // forget about it. +} + +// errRequestCanceled is a copy of net/http's errRequestCanceled because it's not +// exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests. +var errRequestCanceled = errors.New("net/http: request canceled") + +func commaSeparatedTrailers(req *http.Request) (string, error) { + keys := make([]string, 0, len(req.Trailer)) + for k := range req.Trailer { + k = http.CanonicalHeaderKey(k) + switch k { + case "Transfer-Encoding", "Trailer", "Content-Length": + return "", &badStringError{"invalid Trailer key", k} + } + keys = append(keys, k) + } + if len(keys) > 0 { + sort.Strings(keys) + // TODO: could do better allocation-wise here, but trailers are rare, + // so being lazy for now. + return strings.Join(keys, ","), nil + } + return "", nil +} + +func (cc *ClientConn) responseHeaderTimeout() time.Duration { + if cc.t.t1 != nil { + return cc.t.t1.ResponseHeaderTimeout + } + // No way to do this (yet?) with just an http2.Transport. Probably + // no need. Request.Cancel this is the new way. We only need to support + // this for compatibility with the old http.Transport fields when + // we're doing transparent http2. + return 0 +} + +// checkConnHeaders checks whether req has any invalid connection-level headers. +// per RFC 7540 section 8.1.2.2: Connection-Specific Header Fields. +// Certain headers are special-cased as okay but not transmitted later. +func checkConnHeaders(req *http.Request) error { + if v := req.Header.Get("Upgrade"); v != "" { + return errors.New("http2: invalid Upgrade request header") + } + if v := req.Header.Get("Transfer-Encoding"); (v != "" && v != "chunked") || len(req.Header["Transfer-Encoding"]) > 1 { + return errors.New("http2: invalid Transfer-Encoding request header") + } + if v := req.Header.Get("Connection"); (v != "" && v != "close" && v != "keep-alive") || len(req.Header["Connection"]) > 1 { + return errors.New("http2: invalid Connection request header") + } + return nil +} + +func bodyAndLength(req *http.Request) (body io.Reader, contentLen int64) { + body = req.Body + if body == nil { + return nil, 0 + } + if req.ContentLength != 0 { + return req.Body, req.ContentLength + } + + // We have a body but a zero content length. Test to see if + // it's actually zero or just unset. + var buf [1]byte + n, rerr := io.ReadFull(body, buf[:]) + if rerr != nil && rerr != io.EOF { + return errorReader{rerr}, -1 + } + if n == 1 { + // Oh, guess there is data in this Body Reader after all. + // The ContentLength field just wasn't set. + // Stich the Body back together again, re-attaching our + // consumed byte. + return io.MultiReader(bytes.NewReader(buf[:]), body), -1 + } + // Body is actually zero bytes. + return nil, 0 +} + +func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { + if err := checkConnHeaders(req); err != nil { + return nil, err + } + + trailers, err := commaSeparatedTrailers(req) + if err != nil { + return nil, err + } + hasTrailers := trailers != "" + + body, contentLen := bodyAndLength(req) + hasBody := body != nil + + cc.mu.Lock() + cc.lastActive = time.Now() + if cc.closed || !cc.canTakeNewRequestLocked() { + cc.mu.Unlock() + return nil, errClientConnUnusable + } + + // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? + var requestedGzip bool + if !cc.t.disableCompression() && + req.Header.Get("Accept-Encoding") == "" && + req.Header.Get("Range") == "" && + req.Method != "HEAD" { + // Request gzip only, not deflate. Deflate is ambiguous and + // not as universally supported anyway. + // See: http://www.gzip.org/zlib/zlib_faq.html#faq38 + // + // Note that we don't request this for HEAD requests, + // due to a bug in nginx: + // http://trac.nginx.org/nginx/ticket/358 + // https://golang.org/issue/5522 + // + // We don't request gzip if the request is for a range, since + // auto-decoding a portion of a gzipped document will just fail + // anyway. See https://golang.org/issue/8923 + requestedGzip = true + } + + // we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is + // sent by writeRequestBody below, along with any Trailers, + // again in form HEADERS{1}, CONTINUATION{0,}) + hdrs, err := cc.encodeHeaders(req, requestedGzip, trailers, contentLen) + if err != nil { + cc.mu.Unlock() + return nil, err + } + + cs := cc.newStream() + cs.req = req + cs.trace = requestTrace(req) + cs.requestedGzip = requestedGzip + bodyWriter := cc.t.getBodyWriterState(cs, body) + cs.on100 = bodyWriter.on100 + + cc.wmu.Lock() + endStream := !hasBody && !hasTrailers + werr := cc.writeHeaders(cs.ID, endStream, hdrs) + cc.wmu.Unlock() + traceWroteHeaders(cs.trace) + cc.mu.Unlock() + + if werr != nil { + if hasBody { + req.Body.Close() // per RoundTripper contract + bodyWriter.cancel() + } + cc.forgetStreamID(cs.ID) + // Don't bother sending a RST_STREAM (our write already failed; + // no need to keep writing) + traceWroteRequest(cs.trace, werr) + return nil, werr + } + + var respHeaderTimer <-chan time.Time + if hasBody { + bodyWriter.scheduleBodyWrite() + } else { + traceWroteRequest(cs.trace, nil) + if d := cc.responseHeaderTimeout(); d != 0 { + timer := time.NewTimer(d) + defer timer.Stop() + respHeaderTimer = timer.C + } + } + + readLoopResCh := cs.resc + bodyWritten := false + ctx := reqContext(req) + + for { + select { + case re := <-readLoopResCh: + res := re.res + if re.err != nil || res.StatusCode > 299 { + // On error or status code 3xx, 4xx, 5xx, etc abort any + // ongoing write, assuming that the server doesn't care + // about our request body. If the server replied with 1xx or + // 2xx, however, then assume the server DOES potentially + // want our body (e.g. full-duplex streaming: + // golang.org/issue/13444). If it turns out the server + // doesn't, they'll RST_STREAM us soon enough. This is a + // heuristic to avoid adding knobs to Transport. Hopefully + // we can keep it. + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWrite) + } + if re.err != nil { + cc.forgetStreamID(cs.ID) + return nil, re.err + } + res.Request = req + res.TLS = cc.tlsState + return res, nil + case <-respHeaderTimer: + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, errTimeout + case <-ctx.Done(): + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, ctx.Err() + case <-req.Cancel: + cc.forgetStreamID(cs.ID) + if !hasBody || bodyWritten { + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } else { + bodyWriter.cancel() + cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) + } + return nil, errRequestCanceled + case <-cs.peerReset: + // processResetStream already removed the + // stream from the streams map; no need for + // forgetStreamID. + return nil, cs.resetErr + case err := <-bodyWriter.resc: + if err != nil { + return nil, err + } + bodyWritten = true + if d := cc.responseHeaderTimeout(); d != 0 { + timer := time.NewTimer(d) + defer timer.Stop() + respHeaderTimer = timer.C + } + } + } +} + +// requires cc.wmu be held +func (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, hdrs []byte) error { + first := true // first frame written (HEADERS is first, then CONTINUATION) + frameSize := int(cc.maxFrameSize) + for len(hdrs) > 0 && cc.werr == nil { + chunk := hdrs + if len(chunk) > frameSize { + chunk = chunk[:frameSize] + } + hdrs = hdrs[len(chunk):] + endHeaders := len(hdrs) == 0 + if first { + cc.fr.WriteHeaders(HeadersFrameParam{ + StreamID: streamID, + BlockFragment: chunk, + EndStream: endStream, + EndHeaders: endHeaders, + }) + first = false + } else { + cc.fr.WriteContinuation(streamID, endHeaders, chunk) + } + } + // TODO(bradfitz): this Flush could potentially block (as + // could the WriteHeaders call(s) above), which means they + // wouldn't respond to Request.Cancel being readable. That's + // rare, but this should probably be in a goroutine. + cc.bw.Flush() + return cc.werr +} + +// internal error values; they don't escape to callers +var ( + // abort request body write; don't send cancel + errStopReqBodyWrite = errors.New("http2: aborting request body write") + + // abort request body write, but send stream reset of cancel. + errStopReqBodyWriteAndCancel = errors.New("http2: canceling request") +) + +func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (err error) { + cc := cs.cc + sentEnd := false // whether we sent the final DATA frame w/ END_STREAM + buf := cc.frameScratchBuffer() + defer cc.putFrameScratchBuffer(buf) + + defer func() { + traceWroteRequest(cs.trace, err) + // TODO: write h12Compare test showing whether + // Request.Body is closed by the Transport, + // and in multiple cases: server replies <=299 and >299 + // while still writing request body + cerr := bodyCloser.Close() + if err == nil { + err = cerr + } + }() + + req := cs.req + hasTrailers := req.Trailer != nil + + var sawEOF bool + for !sawEOF { + n, err := body.Read(buf) + if err == io.EOF { + sawEOF = true + err = nil + } else if err != nil { + return err + } + + remain := buf[:n] + for len(remain) > 0 && err == nil { + var allowed int32 + allowed, err = cs.awaitFlowControl(len(remain)) + switch { + case err == errStopReqBodyWrite: + return err + case err == errStopReqBodyWriteAndCancel: + cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + return err + case err != nil: + return err + } + cc.wmu.Lock() + data := remain[:allowed] + remain = remain[allowed:] + sentEnd = sawEOF && len(remain) == 0 && !hasTrailers + err = cc.fr.WriteData(cs.ID, sentEnd, data) + if err == nil { + // TODO(bradfitz): this flush is for latency, not bandwidth. + // Most requests won't need this. Make this opt-in or opt-out? + // Use some heuristic on the body type? Nagel-like timers? + // Based on 'n'? Only last chunk of this for loop, unless flow control + // tokens are low? For now, always: + err = cc.bw.Flush() + } + cc.wmu.Unlock() + } + if err != nil { + return err + } + } + + cc.wmu.Lock() + if !sentEnd { + var trls []byte + if hasTrailers { + cc.mu.Lock() + trls = cc.encodeTrailers(req) + cc.mu.Unlock() + } + + // Avoid forgetting to send an END_STREAM if the encoded + // trailers are 0 bytes. Both results produce and END_STREAM. + if len(trls) > 0 { + err = cc.writeHeaders(cs.ID, true, trls) + } else { + err = cc.fr.WriteData(cs.ID, true, nil) + } + } + if ferr := cc.bw.Flush(); ferr != nil && err == nil { + err = ferr + } + cc.wmu.Unlock() + + return err +} + +// awaitFlowControl waits for [1, min(maxBytes, cc.cs.maxFrameSize)] flow +// control tokens from the server. +// It returns either the non-zero number of tokens taken or an error +// if the stream is dead. +func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) { + cc := cs.cc + cc.mu.Lock() + defer cc.mu.Unlock() + for { + if cc.closed { + return 0, errClientConnClosed + } + if cs.stopReqBody != nil { + return 0, cs.stopReqBody + } + if err := cs.checkResetOrDone(); err != nil { + return 0, err + } + if a := cs.flow.available(); a > 0 { + take := a + if int(take) > maxBytes { + + take = int32(maxBytes) // can't truncate int; take is int32 + } + if take > int32(cc.maxFrameSize) { + take = int32(cc.maxFrameSize) + } + cs.flow.take(take) + return take, nil + } + cc.cond.Wait() + } +} + +type badStringError struct { + what string + str string +} + +func (e *badStringError) Error() string { return fmt.Sprintf("%s %q", e.what, e.str) } + +// requires cc.mu be held. +func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { + cc.hbuf.Reset() + + host := req.Host + if host == "" { + host = req.URL.Host + } + + // Check for any invalid headers and return an error before we + // potentially pollute our hpack state. (We want to be able to + // continue to reuse the hpack encoder for future requests) + for k, vv := range req.Header { + if !httplex.ValidHeaderFieldName(k) { + return nil, fmt.Errorf("invalid HTTP header name %q", k) + } + for _, v := range vv { + if !httplex.ValidHeaderFieldValue(v) { + return nil, fmt.Errorf("invalid HTTP header value %q for header %q", v, k) + } + } + } + + // 8.1.2.3 Request Pseudo-Header Fields + // The :path pseudo-header field includes the path and query parts of the + // target URI (the path-absolute production and optionally a '?' character + // followed by the query production (see Sections 3.3 and 3.4 of + // [RFC3986]). + cc.writeHeader(":authority", host) + cc.writeHeader(":method", req.Method) + if req.Method != "CONNECT" { + cc.writeHeader(":path", req.URL.RequestURI()) + cc.writeHeader(":scheme", "https") + } + if trailers != "" { + cc.writeHeader("trailer", trailers) + } + + var didUA bool + for k, vv := range req.Header { + lowKey := strings.ToLower(k) + switch lowKey { + case "host", "content-length": + // Host is :authority, already sent. + // Content-Length is automatic, set below. + continue + case "connection", "proxy-connection", "transfer-encoding", "upgrade", "keep-alive": + // Per 8.1.2.2 Connection-Specific Header + // Fields, don't send connection-specific + // fields. We have already checked if any + // are error-worthy so just ignore the rest. + continue + case "user-agent": + // Match Go's http1 behavior: at most one + // User-Agent. If set to nil or empty string, + // then omit it. Otherwise if not mentioned, + // include the default (below). + didUA = true + if len(vv) < 1 { + continue + } + vv = vv[:1] + if vv[0] == "" { + continue + } + } + for _, v := range vv { + cc.writeHeader(lowKey, v) + } + } + if shouldSendReqContentLength(req.Method, contentLength) { + cc.writeHeader("content-length", strconv.FormatInt(contentLength, 10)) + } + if addGzipHeader { + cc.writeHeader("accept-encoding", "gzip") + } + if !didUA { + cc.writeHeader("user-agent", defaultUserAgent) + } + return cc.hbuf.Bytes(), nil +} + +// shouldSendReqContentLength reports whether the http2.Transport should send +// a "content-length" request header. This logic is basically a copy of the net/http +// transferWriter.shouldSendContentLength. +// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown). +// -1 means unknown. +func shouldSendReqContentLength(method string, contentLength int64) bool { + if contentLength > 0 { + return true + } + if contentLength < 0 { + return false + } + // For zero bodies, whether we send a content-length depends on the method. + // It also kinda doesn't matter for http2 either way, with END_STREAM. + switch method { + case "POST", "PUT", "PATCH": + return true + default: + return false + } +} + +// requires cc.mu be held. +func (cc *ClientConn) encodeTrailers(req *http.Request) []byte { + cc.hbuf.Reset() + for k, vv := range req.Trailer { + // Transfer-Encoding, etc.. have already been filter at the + // start of RoundTrip + lowKey := strings.ToLower(k) + for _, v := range vv { + cc.writeHeader(lowKey, v) + } + } + return cc.hbuf.Bytes() +} + +func (cc *ClientConn) writeHeader(name, value string) { + if VerboseLogs { + log.Printf("http2: Transport encoding header %q = %q", name, value) + } + cc.henc.WriteField(hpack.HeaderField{Name: name, Value: value}) +} + +type resAndError struct { + res *http.Response + err error +} + +// requires cc.mu be held. +func (cc *ClientConn) newStream() *clientStream { + cs := &clientStream{ + cc: cc, + ID: cc.nextStreamID, + resc: make(chan resAndError, 1), + peerReset: make(chan struct{}), + done: make(chan struct{}), + } + cs.flow.add(int32(cc.initialWindowSize)) + cs.flow.setConnFlow(&cc.flow) + cs.inflow.add(transportDefaultStreamFlow) + cs.inflow.setConnFlow(&cc.inflow) + cc.nextStreamID += 2 + cc.streams[cs.ID] = cs + return cs +} + +func (cc *ClientConn) forgetStreamID(id uint32) { + cc.streamByID(id, true) +} + +func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream { + cc.mu.Lock() + defer cc.mu.Unlock() + cs := cc.streams[id] + if andRemove && cs != nil && !cc.closed { + cc.lastActive = time.Now() + delete(cc.streams, id) + close(cs.done) + cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + } + return cs +} + +// clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop. +type clientConnReadLoop struct { + cc *ClientConn + activeRes map[uint32]*clientStream // keyed by streamID + closeWhenIdle bool +} + +// readLoop runs in its own goroutine and reads and dispatches frames. +func (cc *ClientConn) readLoop() { + rl := &clientConnReadLoop{ + cc: cc, + activeRes: make(map[uint32]*clientStream), + } + + defer rl.cleanup() + cc.readerErr = rl.run() + if ce, ok := cc.readerErr.(ConnectionError); ok { + cc.wmu.Lock() + cc.fr.WriteGoAway(0, ErrCode(ce), nil) + cc.wmu.Unlock() + } +} + +// GoAwayError is returned by the Transport when the server closes the +// TCP connection after sending a GOAWAY frame. +type GoAwayError struct { + LastStreamID uint32 + ErrCode ErrCode + DebugData string +} + +func (e GoAwayError) Error() string { + return fmt.Sprintf("http2: server sent GOAWAY and closed the connection; LastStreamID=%v, ErrCode=%v, debug=%q", + e.LastStreamID, e.ErrCode, e.DebugData) +} + +func (rl *clientConnReadLoop) cleanup() { + cc := rl.cc + defer cc.tconn.Close() + defer cc.t.connPool().MarkDead(cc) + defer close(cc.readerDone) + + // Close any response bodies if the server closes prematurely. + // TODO: also do this if we've written the headers but not + // gotten a response yet. + err := cc.readerErr + cc.mu.Lock() + if err == io.EOF { + if cc.goAway != nil { + err = GoAwayError{ + LastStreamID: cc.goAway.LastStreamID, + ErrCode: cc.goAway.ErrCode, + DebugData: cc.goAwayDebug, + } + } else { + err = io.ErrUnexpectedEOF + } + } + for _, cs := range rl.activeRes { + cs.bufPipe.CloseWithError(err) + } + for _, cs := range cc.streams { + select { + case cs.resc <- resAndError{err: err}: + default: + } + close(cs.done) + } + cc.closed = true + cc.cond.Broadcast() + cc.mu.Unlock() +} + +func (rl *clientConnReadLoop) run() error { + cc := rl.cc + rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse + gotReply := false // ever saw a reply + for { + f, err := cc.fr.ReadFrame() + if err != nil { + cc.vlogf("Transport readFrame error: (%T) %v", err, err) + } + if se, ok := err.(StreamError); ok { + if cs := cc.streamByID(se.StreamID, true /*ended; remove it*/); cs != nil { + rl.endStreamError(cs, cc.fr.errDetail) + } + continue + } else if err != nil { + return err + } + if VerboseLogs { + cc.vlogf("http2: Transport received %s", summarizeFrame(f)) + } + maybeIdle := false // whether frame might transition us to idle + + switch f := f.(type) { + case *MetaHeadersFrame: + err = rl.processHeaders(f) + maybeIdle = true + gotReply = true + case *DataFrame: + err = rl.processData(f) + maybeIdle = true + case *GoAwayFrame: + err = rl.processGoAway(f) + maybeIdle = true + case *RSTStreamFrame: + err = rl.processResetStream(f) + maybeIdle = true + case *SettingsFrame: + err = rl.processSettings(f) + case *PushPromiseFrame: + err = rl.processPushPromise(f) + case *WindowUpdateFrame: + err = rl.processWindowUpdate(f) + case *PingFrame: + err = rl.processPing(f) + default: + cc.logf("Transport: unhandled response frame type %T", f) + } + if err != nil { + return err + } + if rl.closeWhenIdle && gotReply && maybeIdle && len(rl.activeRes) == 0 { + cc.closeIfIdle() + } + } +} + +func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, f.StreamEnded()) + if cs == nil { + // We'd get here if we canceled a request while the + // server had its response still in flight. So if this + // was just something we canceled, ignore it. + return nil + } + if !cs.firstByte { + if cs.trace != nil { + // TODO(bradfitz): move first response byte earlier, + // when we first read the 9 byte header, not waiting + // until all the HEADERS+CONTINUATION frames have been + // merged. This works for now. + traceFirstResponseByte(cs.trace) + } + cs.firstByte = true + } + if !cs.pastHeaders { + cs.pastHeaders = true + } else { + return rl.processTrailers(cs, f) + } + + res, err := rl.handleResponse(cs, f) + if err != nil { + if _, ok := err.(ConnectionError); ok { + return err + } + // Any other error type is a stream error. + cs.cc.writeStreamReset(f.StreamID, ErrCodeProtocol, err) + cs.resc <- resAndError{err: err} + return nil // return nil from process* funcs to keep conn alive + } + if res == nil { + // (nil, nil) special case. See handleResponse docs. + return nil + } + if res.Body != noBody { + rl.activeRes[cs.ID] = cs + } + cs.resTrailer = &res.Trailer + cs.resc <- resAndError{res: res} + return nil +} + +// may return error types nil, or ConnectionError. Any other error value +// is a StreamError of type ErrCodeProtocol. The returned error in that case +// is the detail. +// +// As a special case, handleResponse may return (nil, nil) to skip the +// frame (currently only used for 100 expect continue). This special +// case is going away after Issue 13851 is fixed. +func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFrame) (*http.Response, error) { + if f.Truncated { + return nil, errResponseHeaderListSize + } + + status := f.PseudoValue("status") + if status == "" { + return nil, errors.New("missing status pseudo header") + } + statusCode, err := strconv.Atoi(status) + if err != nil { + return nil, errors.New("malformed non-numeric status pseudo header") + } + + if statusCode == 100 { + traceGot100Continue(cs.trace) + if cs.on100 != nil { + cs.on100() // forces any write delay timer to fire + } + cs.pastHeaders = false // do it all again + return nil, nil + } + + header := make(http.Header) + res := &http.Response{ + Proto: "HTTP/2.0", + ProtoMajor: 2, + Header: header, + StatusCode: statusCode, + Status: status + " " + http.StatusText(statusCode), + } + for _, hf := range f.RegularFields() { + key := http.CanonicalHeaderKey(hf.Name) + if key == "Trailer" { + t := res.Trailer + if t == nil { + t = make(http.Header) + res.Trailer = t + } + foreachHeaderElement(hf.Value, func(v string) { + t[http.CanonicalHeaderKey(v)] = nil + }) + } else { + header[key] = append(header[key], hf.Value) + } + } + + streamEnded := f.StreamEnded() + isHead := cs.req.Method == "HEAD" + if !streamEnded || isHead { + res.ContentLength = -1 + if clens := res.Header["Content-Length"]; len(clens) == 1 { + if clen64, err := strconv.ParseInt(clens[0], 10, 64); err == nil { + res.ContentLength = clen64 + } else { + // TODO: care? unlike http/1, it won't mess up our framing, so it's + // more safe smuggling-wise to ignore. + } + } else if len(clens) > 1 { + // TODO: care? unlike http/1, it won't mess up our framing, so it's + // more safe smuggling-wise to ignore. + } + } + + if streamEnded || isHead { + res.Body = noBody + return res, nil + } + + buf := new(bytes.Buffer) // TODO(bradfitz): recycle this garbage + cs.bufPipe = pipe{b: buf} + cs.bytesRemain = res.ContentLength + res.Body = transportResponseBody{cs} + go cs.awaitRequestCancel(cs.req) + + if cs.requestedGzip && res.Header.Get("Content-Encoding") == "gzip" { + res.Header.Del("Content-Encoding") + res.Header.Del("Content-Length") + res.ContentLength = -1 + res.Body = &gzipReader{body: res.Body} + setResponseUncompressed(res) + } + return res, nil +} + +func (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFrame) error { + if cs.pastTrailers { + // Too many HEADERS frames for this stream. + return ConnectionError(ErrCodeProtocol) + } + cs.pastTrailers = true + if !f.StreamEnded() { + // We expect that any headers for trailers also + // has END_STREAM. + return ConnectionError(ErrCodeProtocol) + } + if len(f.PseudoFields()) > 0 { + // No pseudo header fields are defined for trailers. + // TODO: ConnectionError might be overly harsh? Check. + return ConnectionError(ErrCodeProtocol) + } + + trailer := make(http.Header) + for _, hf := range f.RegularFields() { + key := http.CanonicalHeaderKey(hf.Name) + trailer[key] = append(trailer[key], hf.Value) + } + cs.trailer = trailer + + rl.endStream(cs) + return nil +} + +// transportResponseBody is the concrete type of Transport.RoundTrip's +// Response.Body. It is an io.ReadCloser. On Read, it reads from cs.body. +// On Close it sends RST_STREAM if EOF wasn't already seen. +type transportResponseBody struct { + cs *clientStream +} + +func (b transportResponseBody) Read(p []byte) (n int, err error) { + cs := b.cs + cc := cs.cc + + if cs.readErr != nil { + return 0, cs.readErr + } + n, err = b.cs.bufPipe.Read(p) + if cs.bytesRemain != -1 { + if int64(n) > cs.bytesRemain { + n = int(cs.bytesRemain) + if err == nil { + err = errors.New("net/http: server replied with more than declared Content-Length; truncated") + cc.writeStreamReset(cs.ID, ErrCodeProtocol, err) + } + cs.readErr = err + return int(cs.bytesRemain), err + } + cs.bytesRemain -= int64(n) + if err == io.EOF && cs.bytesRemain > 0 { + err = io.ErrUnexpectedEOF + cs.readErr = err + return n, err + } + } + if n == 0 { + // No flow control tokens to send back. + return + } + + cc.mu.Lock() + defer cc.mu.Unlock() + + var connAdd, streamAdd int32 + // Check the conn-level first, before the stream-level. + if v := cc.inflow.available(); v < transportDefaultConnFlow/2 { + connAdd = transportDefaultConnFlow - v + cc.inflow.add(connAdd) + } + if err == nil { // No need to refresh if the stream is over or failed. + // Consider any buffered body data (read from the conn but not + // consumed by the client) when computing flow control for this + // stream. + v := int(cs.inflow.available()) + cs.bufPipe.Len() + if v < transportDefaultStreamFlow-transportDefaultStreamMinRefresh { + streamAdd = int32(transportDefaultStreamFlow - v) + cs.inflow.add(streamAdd) + } + } + if connAdd != 0 || streamAdd != 0 { + cc.wmu.Lock() + defer cc.wmu.Unlock() + if connAdd != 0 { + cc.fr.WriteWindowUpdate(0, mustUint31(connAdd)) + } + if streamAdd != 0 { + cc.fr.WriteWindowUpdate(cs.ID, mustUint31(streamAdd)) + } + cc.bw.Flush() + } + return +} + +var errClosedResponseBody = errors.New("http2: response body closed") + +func (b transportResponseBody) Close() error { + cs := b.cs + if cs.bufPipe.Err() != io.EOF { + // TODO: write test for this + cs.cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) + } + cs.bufPipe.BreakWithError(errClosedResponseBody) + return nil +} + +func (rl *clientConnReadLoop) processData(f *DataFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, f.StreamEnded()) + if cs == nil { + cc.mu.Lock() + neverSent := cc.nextStreamID + cc.mu.Unlock() + if f.StreamID >= neverSent { + // We never asked for this. + cc.logf("http2: Transport received unsolicited DATA frame; closing connection") + return ConnectionError(ErrCodeProtocol) + } + // We probably did ask for this, but canceled. Just ignore it. + // TODO: be stricter here? only silently ignore things which + // we canceled, but not things which were closed normally + // by the peer? Tough without accumulating too much state. + return nil + } + if data := f.Data(); len(data) > 0 { + if cs.bufPipe.b == nil { + // Data frame after it's already closed? + cc.logf("http2: Transport received DATA frame for closed stream; closing connection") + return ConnectionError(ErrCodeProtocol) + } + + // Check connection-level flow control. + cc.mu.Lock() + if cs.inflow.available() >= int32(len(data)) { + cs.inflow.take(int32(len(data))) + } else { + cc.mu.Unlock() + return ConnectionError(ErrCodeFlowControl) + } + cc.mu.Unlock() + + if _, err := cs.bufPipe.Write(data); err != nil { + rl.endStreamError(cs, err) + return err + } + } + + if f.StreamEnded() { + rl.endStream(cs) + } + return nil +} + +var errInvalidTrailers = errors.New("http2: invalid trailers") + +func (rl *clientConnReadLoop) endStream(cs *clientStream) { + // TODO: check that any declared content-length matches, like + // server.go's (*stream).endStream method. + rl.endStreamError(cs, nil) +} + +func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { + var code func() + if err == nil { + err = io.EOF + code = cs.copyTrailers + } + cs.bufPipe.closeWithErrorAndCode(err, code) + delete(rl.activeRes, cs.ID) + if cs.req.Close || cs.req.Header.Get("Connection") == "close" { + rl.closeWhenIdle = true + } +} + +func (cs *clientStream) copyTrailers() { + for k, vv := range cs.trailer { + t := cs.resTrailer + if *t == nil { + *t = make(http.Header) + } + (*t)[k] = vv + } +} + +func (rl *clientConnReadLoop) processGoAway(f *GoAwayFrame) error { + cc := rl.cc + cc.t.connPool().MarkDead(cc) + if f.ErrCode != 0 { + // TODO: deal with GOAWAY more. particularly the error code + cc.vlogf("transport got GOAWAY with error code = %v", f.ErrCode) + } + cc.setGoAway(f) + return nil +} + +func (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error { + cc := rl.cc + cc.mu.Lock() + defer cc.mu.Unlock() + return f.ForeachSetting(func(s Setting) error { + switch s.ID { + case SettingMaxFrameSize: + cc.maxFrameSize = s.Val + case SettingMaxConcurrentStreams: + cc.maxConcurrentStreams = s.Val + case SettingInitialWindowSize: + // TODO: error if this is too large. + + // TODO: adjust flow control of still-open + // frames by the difference of the old initial + // window size and this one. + cc.initialWindowSize = s.Val + default: + // TODO(bradfitz): handle more settings? SETTINGS_HEADER_TABLE_SIZE probably. + cc.vlogf("Unhandled Setting: %v", s) + } + return nil + }) +} + +func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { + cc := rl.cc + cs := cc.streamByID(f.StreamID, false) + if f.StreamID != 0 && cs == nil { + return nil + } + + cc.mu.Lock() + defer cc.mu.Unlock() + + fl := &cc.flow + if cs != nil { + fl = &cs.flow + } + if !fl.add(int32(f.Increment)) { + return ConnectionError(ErrCodeFlowControl) + } + cc.cond.Broadcast() + return nil +} + +func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { + cs := rl.cc.streamByID(f.StreamID, true) + if cs == nil { + // TODO: return error if server tries to RST_STEAM an idle stream + return nil + } + select { + case <-cs.peerReset: + // Already reset. + // This is the only goroutine + // which closes this, so there + // isn't a race. + default: + err := StreamError{cs.ID, f.ErrCode} + cs.resetErr = err + close(cs.peerReset) + cs.bufPipe.CloseWithError(err) + cs.cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + } + delete(rl.activeRes, cs.ID) + return nil +} + +func (rl *clientConnReadLoop) processPing(f *PingFrame) error { + if f.IsAck() { + // 6.7 PING: " An endpoint MUST NOT respond to PING frames + // containing this flag." + return nil + } + cc := rl.cc + cc.wmu.Lock() + defer cc.wmu.Unlock() + if err := cc.fr.WritePing(true, f.Data); err != nil { + return err + } + return cc.bw.Flush() +} + +func (rl *clientConnReadLoop) processPushPromise(f *PushPromiseFrame) error { + // We told the peer we don't want them. + // Spec says: + // "PUSH_PROMISE MUST NOT be sent if the SETTINGS_ENABLE_PUSH + // setting of the peer endpoint is set to 0. An endpoint that + // has set this setting and has received acknowledgement MUST + // treat the receipt of a PUSH_PROMISE frame as a connection + // error (Section 5.4.1) of type PROTOCOL_ERROR." + return ConnectionError(ErrCodeProtocol) +} + +func (cc *ClientConn) writeStreamReset(streamID uint32, code ErrCode, err error) { + // TODO: do something with err? send it as a debug frame to the peer? + // But that's only in GOAWAY. Invent a new frame type? Is there one already? + cc.wmu.Lock() + cc.fr.WriteRSTStream(streamID, code) + cc.bw.Flush() + cc.wmu.Unlock() +} + +var ( + errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit") + errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers") +) + +func (cc *ClientConn) logf(format string, args ...interface{}) { + cc.t.logf(format, args...) +} + +func (cc *ClientConn) vlogf(format string, args ...interface{}) { + cc.t.vlogf(format, args...) +} + +func (t *Transport) vlogf(format string, args ...interface{}) { + if VerboseLogs { + t.logf(format, args...) + } +} + +func (t *Transport) logf(format string, args ...interface{}) { + log.Printf(format, args...) +} + +var noBody io.ReadCloser = ioutil.NopCloser(bytes.NewReader(nil)) + +func strSliceContains(ss []string, s string) bool { + for _, v := range ss { + if v == s { + return true + } + } + return false +} + +type erringRoundTripper struct{ err error } + +func (rt erringRoundTripper) RoundTrip(*http.Request) (*http.Response, error) { return nil, rt.err } + +// gzipReader wraps a response body so it can lazily +// call gzip.NewReader on the first call to Read +type gzipReader struct { + body io.ReadCloser // underlying Response.Body + zr *gzip.Reader // lazily-initialized gzip reader + zerr error // sticky error +} + +func (gz *gzipReader) Read(p []byte) (n int, err error) { + if gz.zerr != nil { + return 0, gz.zerr + } + if gz.zr == nil { + gz.zr, err = gzip.NewReader(gz.body) + if err != nil { + gz.zerr = err + return 0, err + } + } + return gz.zr.Read(p) +} + +func (gz *gzipReader) Close() error { + return gz.body.Close() +} + +type errorReader struct{ err error } + +func (r errorReader) Read(p []byte) (int, error) { return 0, r.err } + +// bodyWriterState encapsulates various state around the Transport's writing +// of the request body, particularly regarding doing delayed writes of the body +// when the request contains "Expect: 100-continue". +type bodyWriterState struct { + cs *clientStream + timer *time.Timer // if non-nil, we're doing a delayed write + fnonce *sync.Once // to call fn with + fn func() // the code to run in the goroutine, writing the body + resc chan error // result of fn's execution + delay time.Duration // how long we should delay a delayed write for +} + +func (t *Transport) getBodyWriterState(cs *clientStream, body io.Reader) (s bodyWriterState) { + s.cs = cs + if body == nil { + return + } + resc := make(chan error, 1) + s.resc = resc + s.fn = func() { + resc <- cs.writeRequestBody(body, cs.req.Body) + } + s.delay = t.expectContinueTimeout() + if s.delay == 0 || + !httplex.HeaderValuesContainsToken( + cs.req.Header["Expect"], + "100-continue") { + return + } + s.fnonce = new(sync.Once) + + // Arm the timer with a very large duration, which we'll + // intentionally lower later. It has to be large now because + // we need a handle to it before writing the headers, but the + // s.delay value is defined to not start until after the + // request headers were written. + const hugeDuration = 365 * 24 * time.Hour + s.timer = time.AfterFunc(hugeDuration, func() { + s.fnonce.Do(s.fn) + }) + return +} + +func (s bodyWriterState) cancel() { + if s.timer != nil { + s.timer.Stop() + } +} + +func (s bodyWriterState) on100() { + if s.timer == nil { + // If we didn't do a delayed write, ignore the server's + // bogus 100 continue response. + return + } + s.timer.Stop() + go func() { s.fnonce.Do(s.fn) }() +} + +// scheduleBodyWrite starts writing the body, either immediately (in +// the common case) or after the delay timeout. It should not be +// called until after the headers have been written. +func (s bodyWriterState) scheduleBodyWrite() { + if s.timer == nil { + // We're not doing a delayed write (see + // getBodyWriterState), so just start the writing + // goroutine immediately. + go s.fn() + return + } + traceWait100Continue(s.cs.trace) + if s.timer.Stop() { + s.timer.Reset(s.delay) + } +} diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go new file mode 100644 index 0000000000..27ef0dd4d7 --- /dev/null +++ b/vendor/golang.org/x/net/http2/write.go @@ -0,0 +1,264 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import ( + "bytes" + "fmt" + "log" + "net/http" + "time" + + "golang.org/x/net/http2/hpack" + "golang.org/x/net/lex/httplex" +) + +// writeFramer is implemented by any type that is used to write frames. +type writeFramer interface { + writeFrame(writeContext) error +} + +// writeContext is the interface needed by the various frame writer +// types below. All the writeFrame methods below are scheduled via the +// frame writing scheduler (see writeScheduler in writesched.go). +// +// This interface is implemented by *serverConn. +// +// TODO: decide whether to a) use this in the client code (which didn't +// end up using this yet, because it has a simpler design, not +// currently implementing priorities), or b) delete this and +// make the server code a bit more concrete. +type writeContext interface { + Framer() *Framer + Flush() error + CloseConn() error + // HeaderEncoder returns an HPACK encoder that writes to the + // returned buffer. + HeaderEncoder() (*hpack.Encoder, *bytes.Buffer) +} + +// endsStream reports whether the given frame writer w will locally +// close the stream. +func endsStream(w writeFramer) bool { + switch v := w.(type) { + case *writeData: + return v.endStream + case *writeResHeaders: + return v.endStream + case nil: + // This can only happen if the caller reuses w after it's + // been intentionally nil'ed out to prevent use. Keep this + // here to catch future refactoring breaking it. + panic("endsStream called on nil writeFramer") + } + return false +} + +type flushFrameWriter struct{} + +func (flushFrameWriter) writeFrame(ctx writeContext) error { + return ctx.Flush() +} + +type writeSettings []Setting + +func (s writeSettings) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteSettings([]Setting(s)...) +} + +type writeGoAway struct { + maxStreamID uint32 + code ErrCode +} + +func (p *writeGoAway) writeFrame(ctx writeContext) error { + err := ctx.Framer().WriteGoAway(p.maxStreamID, p.code, nil) + if p.code != 0 { + ctx.Flush() // ignore error: we're hanging up on them anyway + time.Sleep(50 * time.Millisecond) + ctx.CloseConn() + } + return err +} + +type writeData struct { + streamID uint32 + p []byte + endStream bool +} + +func (w *writeData) String() string { + return fmt.Sprintf("writeData(stream=%d, p=%d, endStream=%v)", w.streamID, len(w.p), w.endStream) +} + +func (w *writeData) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteData(w.streamID, w.endStream, w.p) +} + +// handlerPanicRST is the message sent from handler goroutines when +// the handler panics. +type handlerPanicRST struct { + StreamID uint32 +} + +func (hp handlerPanicRST) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteRSTStream(hp.StreamID, ErrCodeInternal) +} + +func (se StreamError) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteRSTStream(se.StreamID, se.Code) +} + +type writePingAck struct{ pf *PingFrame } + +func (w writePingAck) writeFrame(ctx writeContext) error { + return ctx.Framer().WritePing(true, w.pf.Data) +} + +type writeSettingsAck struct{} + +func (writeSettingsAck) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteSettingsAck() +} + +// writeResHeaders is a request to write a HEADERS and 0+ CONTINUATION frames +// for HTTP response headers or trailers from a server handler. +type writeResHeaders struct { + streamID uint32 + httpResCode int // 0 means no ":status" line + h http.Header // may be nil + trailers []string // if non-nil, which keys of h to write. nil means all. + endStream bool + + date string + contentType string + contentLength string +} + +func encKV(enc *hpack.Encoder, k, v string) { + if VerboseLogs { + log.Printf("http2: server encoding header %q = %q", k, v) + } + enc.WriteField(hpack.HeaderField{Name: k, Value: v}) +} + +func (w *writeResHeaders) writeFrame(ctx writeContext) error { + enc, buf := ctx.HeaderEncoder() + buf.Reset() + + if w.httpResCode != 0 { + encKV(enc, ":status", httpCodeString(w.httpResCode)) + } + + encodeHeaders(enc, w.h, w.trailers) + + if w.contentType != "" { + encKV(enc, "content-type", w.contentType) + } + if w.contentLength != "" { + encKV(enc, "content-length", w.contentLength) + } + if w.date != "" { + encKV(enc, "date", w.date) + } + + headerBlock := buf.Bytes() + if len(headerBlock) == 0 && w.trailers == nil { + panic("unexpected empty hpack") + } + + // For now we're lazy and just pick the minimum MAX_FRAME_SIZE + // that all peers must support (16KB). Later we could care + // more and send larger frames if the peer advertised it, but + // there's little point. Most headers are small anyway (so we + // generally won't have CONTINUATION frames), and extra frames + // only waste 9 bytes anyway. + const maxFrameSize = 16384 + + first := true + for len(headerBlock) > 0 { + frag := headerBlock + if len(frag) > maxFrameSize { + frag = frag[:maxFrameSize] + } + headerBlock = headerBlock[len(frag):] + endHeaders := len(headerBlock) == 0 + var err error + if first { + first = false + err = ctx.Framer().WriteHeaders(HeadersFrameParam{ + StreamID: w.streamID, + BlockFragment: frag, + EndStream: w.endStream, + EndHeaders: endHeaders, + }) + } else { + err = ctx.Framer().WriteContinuation(w.streamID, endHeaders, frag) + } + if err != nil { + return err + } + } + return nil +} + +type write100ContinueHeadersFrame struct { + streamID uint32 +} + +func (w write100ContinueHeadersFrame) writeFrame(ctx writeContext) error { + enc, buf := ctx.HeaderEncoder() + buf.Reset() + encKV(enc, ":status", "100") + return ctx.Framer().WriteHeaders(HeadersFrameParam{ + StreamID: w.streamID, + BlockFragment: buf.Bytes(), + EndStream: false, + EndHeaders: true, + }) +} + +type writeWindowUpdate struct { + streamID uint32 // or 0 for conn-level + n uint32 +} + +func (wu writeWindowUpdate) writeFrame(ctx writeContext) error { + return ctx.Framer().WriteWindowUpdate(wu.streamID, wu.n) +} + +func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) { + if keys == nil { + sorter := sorterPool.Get().(*sorter) + // Using defer here, since the returned keys from the + // sorter.Keys method is only valid until the sorter + // is returned: + defer sorterPool.Put(sorter) + keys = sorter.Keys(h) + } + for _, k := range keys { + vv := h[k] + k = lowerHeader(k) + if !validWireHeaderFieldName(k) { + // Skip it as backup paranoia. Per + // golang.org/issue/14048, these should + // already be rejected at a higher level. + continue + } + isTE := k == "transfer-encoding" + for _, v := range vv { + if !httplex.ValidHeaderFieldValue(v) { + // TODO: return an error? golang.org/issue/14048 + // For now just omit it. + continue + } + // TODO: more of "8.1.2.2 Connection-Specific Header Fields" + if isTE && v != "trailers" { + continue + } + encKV(enc, k, v) + } + } +} diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go new file mode 100644 index 0000000000..c24316ce7b --- /dev/null +++ b/vendor/golang.org/x/net/http2/writesched.go @@ -0,0 +1,283 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package http2 + +import "fmt" + +// frameWriteMsg is a request to write a frame. +type frameWriteMsg struct { + // write is the interface value that does the writing, once the + // writeScheduler (below) has decided to select this frame + // to write. The write functions are all defined in write.go. + write writeFramer + + stream *stream // used for prioritization. nil for non-stream frames. + + // done, if non-nil, must be a buffered channel with space for + // 1 message and is sent the return value from write (or an + // earlier error) when the frame has been written. + done chan error +} + +// for debugging only: +func (wm frameWriteMsg) String() string { + var streamID uint32 + if wm.stream != nil { + streamID = wm.stream.id + } + var des string + if s, ok := wm.write.(fmt.Stringer); ok { + des = s.String() + } else { + des = fmt.Sprintf("%T", wm.write) + } + return fmt.Sprintf("[frameWriteMsg stream=%d, ch=%v, type: %v]", streamID, wm.done != nil, des) +} + +// writeScheduler tracks pending frames to write, priorities, and decides +// the next one to use. It is not thread-safe. +type writeScheduler struct { + // zero are frames not associated with a specific stream. + // They're sent before any stream-specific freams. + zero writeQueue + + // maxFrameSize is the maximum size of a DATA frame + // we'll write. Must be non-zero and between 16K-16M. + maxFrameSize uint32 + + // sq contains the stream-specific queues, keyed by stream ID. + // when a stream is idle, it's deleted from the map. + sq map[uint32]*writeQueue + + // canSend is a slice of memory that's reused between frame + // scheduling decisions to hold the list of writeQueues (from sq) + // which have enough flow control data to send. After canSend is + // built, the best is selected. + canSend []*writeQueue + + // pool of empty queues for reuse. + queuePool []*writeQueue +} + +func (ws *writeScheduler) putEmptyQueue(q *writeQueue) { + if len(q.s) != 0 { + panic("queue must be empty") + } + ws.queuePool = append(ws.queuePool, q) +} + +func (ws *writeScheduler) getEmptyQueue() *writeQueue { + ln := len(ws.queuePool) + if ln == 0 { + return new(writeQueue) + } + q := ws.queuePool[ln-1] + ws.queuePool = ws.queuePool[:ln-1] + return q +} + +func (ws *writeScheduler) empty() bool { return ws.zero.empty() && len(ws.sq) == 0 } + +func (ws *writeScheduler) add(wm frameWriteMsg) { + st := wm.stream + if st == nil { + ws.zero.push(wm) + } else { + ws.streamQueue(st.id).push(wm) + } +} + +func (ws *writeScheduler) streamQueue(streamID uint32) *writeQueue { + if q, ok := ws.sq[streamID]; ok { + return q + } + if ws.sq == nil { + ws.sq = make(map[uint32]*writeQueue) + } + q := ws.getEmptyQueue() + ws.sq[streamID] = q + return q +} + +// take returns the most important frame to write and removes it from the scheduler. +// It is illegal to call this if the scheduler is empty or if there are no connection-level +// flow control bytes available. +func (ws *writeScheduler) take() (wm frameWriteMsg, ok bool) { + if ws.maxFrameSize == 0 { + panic("internal error: ws.maxFrameSize not initialized or invalid") + } + + // If there any frames not associated with streams, prefer those first. + // These are usually SETTINGS, etc. + if !ws.zero.empty() { + return ws.zero.shift(), true + } + if len(ws.sq) == 0 { + return + } + + // Next, prioritize frames on streams that aren't DATA frames (no cost). + for id, q := range ws.sq { + if q.firstIsNoCost() { + return ws.takeFrom(id, q) + } + } + + // Now, all that remains are DATA frames with non-zero bytes to + // send. So pick the best one. + if len(ws.canSend) != 0 { + panic("should be empty") + } + for _, q := range ws.sq { + if n := ws.streamWritableBytes(q); n > 0 { + ws.canSend = append(ws.canSend, q) + } + } + if len(ws.canSend) == 0 { + return + } + defer ws.zeroCanSend() + + // TODO: find the best queue + q := ws.canSend[0] + + return ws.takeFrom(q.streamID(), q) +} + +// zeroCanSend is defered from take. +func (ws *writeScheduler) zeroCanSend() { + for i := range ws.canSend { + ws.canSend[i] = nil + } + ws.canSend = ws.canSend[:0] +} + +// streamWritableBytes returns the number of DATA bytes we could write +// from the given queue's stream, if this stream/queue were +// selected. It is an error to call this if q's head isn't a +// *writeData. +func (ws *writeScheduler) streamWritableBytes(q *writeQueue) int32 { + wm := q.head() + ret := wm.stream.flow.available() // max we can write + if ret == 0 { + return 0 + } + if int32(ws.maxFrameSize) < ret { + ret = int32(ws.maxFrameSize) + } + if ret == 0 { + panic("internal error: ws.maxFrameSize not initialized or invalid") + } + wd := wm.write.(*writeData) + if len(wd.p) < int(ret) { + ret = int32(len(wd.p)) + } + return ret +} + +func (ws *writeScheduler) takeFrom(id uint32, q *writeQueue) (wm frameWriteMsg, ok bool) { + wm = q.head() + // If the first item in this queue costs flow control tokens + // and we don't have enough, write as much as we can. + if wd, ok := wm.write.(*writeData); ok && len(wd.p) > 0 { + allowed := wm.stream.flow.available() // max we can write + if allowed == 0 { + // No quota available. Caller can try the next stream. + return frameWriteMsg{}, false + } + if int32(ws.maxFrameSize) < allowed { + allowed = int32(ws.maxFrameSize) + } + // TODO: further restrict the allowed size, because even if + // the peer says it's okay to write 16MB data frames, we might + // want to write smaller ones to properly weight competing + // streams' priorities. + + if len(wd.p) > int(allowed) { + wm.stream.flow.take(allowed) + chunk := wd.p[:allowed] + wd.p = wd.p[allowed:] + // Make up a new write message of a valid size, rather + // than shifting one off the queue. + return frameWriteMsg{ + stream: wm.stream, + write: &writeData{ + streamID: wd.streamID, + p: chunk, + // even if the original had endStream set, there + // arebytes remaining because len(wd.p) > allowed, + // so we know endStream is false: + endStream: false, + }, + // our caller is blocking on the final DATA frame, not + // these intermediates, so no need to wait: + done: nil, + }, true + } + wm.stream.flow.take(int32(len(wd.p))) + } + + q.shift() + if q.empty() { + ws.putEmptyQueue(q) + delete(ws.sq, id) + } + return wm, true +} + +func (ws *writeScheduler) forgetStream(id uint32) { + q, ok := ws.sq[id] + if !ok { + return + } + delete(ws.sq, id) + + // But keep it for others later. + for i := range q.s { + q.s[i] = frameWriteMsg{} + } + q.s = q.s[:0] + ws.putEmptyQueue(q) +} + +type writeQueue struct { + s []frameWriteMsg +} + +// streamID returns the stream ID for a non-empty stream-specific queue. +func (q *writeQueue) streamID() uint32 { return q.s[0].stream.id } + +func (q *writeQueue) empty() bool { return len(q.s) == 0 } + +func (q *writeQueue) push(wm frameWriteMsg) { + q.s = append(q.s, wm) +} + +// head returns the next item that would be removed by shift. +func (q *writeQueue) head() frameWriteMsg { + if len(q.s) == 0 { + panic("invalid use of queue") + } + return q.s[0] +} + +func (q *writeQueue) shift() frameWriteMsg { + if len(q.s) == 0 { + panic("invalid use of queue") + } + wm := q.s[0] + // TODO: less copy-happy queue. + copy(q.s, q.s[1:]) + q.s[len(q.s)-1] = frameWriteMsg{} + q.s = q.s[:len(q.s)-1] + return wm +} + +func (q *writeQueue) firstIsNoCost() bool { + if df, ok := q.s[0].write.(*writeData); ok { + return len(df.p) == 0 + } + return true +} diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna.go new file mode 100644 index 0000000000..35ff39d81b --- /dev/null +++ b/vendor/golang.org/x/net/idna/idna.go @@ -0,0 +1,68 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package idna implements IDNA2008 (Internationalized Domain Names for +// Applications), defined in RFC 5890, RFC 5891, RFC 5892, RFC 5893 and +// RFC 5894. +package idna + +import ( + "strings" + "unicode/utf8" +) + +// TODO(nigeltao): specify when errors occur. For example, is ToASCII(".") or +// ToASCII("foo\x00") an error? See also http://www.unicode.org/faq/idn.html#11 + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +// ToASCII converts a domain or domain label to its ASCII form. For example, +// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and +// ToASCII("golang") is "golang". +func ToASCII(s string) (string, error) { + if ascii(s) { + return s, nil + } + labels := strings.Split(s, ".") + for i, label := range labels { + if !ascii(label) { + a, err := encode(acePrefix, label) + if err != nil { + return "", err + } + labels[i] = a + } + } + return strings.Join(labels, "."), nil +} + +// ToUnicode converts a domain or domain label to its Unicode form. For example, +// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and +// ToUnicode("golang") is "golang". +func ToUnicode(s string) (string, error) { + if !strings.Contains(s, acePrefix) { + return s, nil + } + labels := strings.Split(s, ".") + for i, label := range labels { + if strings.HasPrefix(label, acePrefix) { + u, err := decode(label[len(acePrefix):]) + if err != nil { + return "", err + } + labels[i] = u + } + } + return strings.Join(labels, "."), nil +} + +func ascii(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/net/idna/punycode.go b/vendor/golang.org/x/net/idna/punycode.go new file mode 100644 index 0000000000..92e733f6a7 --- /dev/null +++ b/vendor/golang.org/x/net/idna/punycode.go @@ -0,0 +1,200 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package idna + +// This file implements the Punycode algorithm from RFC 3492. + +import ( + "fmt" + "math" + "strings" + "unicode/utf8" +) + +// These parameter values are specified in section 5. +// +// All computation is done with int32s, so that overflow behavior is identical +// regardless of whether int is 32-bit or 64-bit. +const ( + base int32 = 36 + damp int32 = 700 + initialBias int32 = 72 + initialN int32 = 128 + skew int32 = 38 + tmax int32 = 26 + tmin int32 = 1 +) + +// decode decodes a string as specified in section 6.2. +func decode(encoded string) (string, error) { + if encoded == "" { + return "", nil + } + pos := 1 + strings.LastIndex(encoded, "-") + if pos == 1 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + if pos == len(encoded) { + return encoded[:len(encoded)-1], nil + } + output := make([]rune, 0, len(encoded)) + if pos != 0 { + for _, r := range encoded[:pos-1] { + output = append(output, r) + } + } + i, n, bias := int32(0), initialN, initialBias + for pos < len(encoded) { + oldI, w := i, int32(1) + for k := base; ; k += base { + if pos == len(encoded) { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + digit, ok := decodeDigit(encoded[pos]) + if !ok { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + pos++ + i += digit * w + if i < 0 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + t := k - bias + if t < tmin { + t = tmin + } else if t > tmax { + t = tmax + } + if digit < t { + break + } + w *= base - t + if w >= math.MaxInt32/base { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + } + x := int32(len(output) + 1) + bias = adapt(i-oldI, x, oldI == 0) + n += i / x + i %= x + if n > utf8.MaxRune || len(output) >= 1024 { + return "", fmt.Errorf("idna: invalid label %q", encoded) + } + output = append(output, 0) + copy(output[i+1:], output[i:]) + output[i] = n + i++ + } + return string(output), nil +} + +// encode encodes a string as specified in section 6.3 and prepends prefix to +// the result. +// +// The "while h < length(input)" line in the specification becomes "for +// remaining != 0" in the Go code, because len(s) in Go is in bytes, not runes. +func encode(prefix, s string) (string, error) { + output := make([]byte, len(prefix), len(prefix)+1+2*len(s)) + copy(output, prefix) + delta, n, bias := int32(0), initialN, initialBias + b, remaining := int32(0), int32(0) + for _, r := range s { + if r < 0x80 { + b++ + output = append(output, byte(r)) + } else { + remaining++ + } + } + h := b + if b > 0 { + output = append(output, '-') + } + for remaining != 0 { + m := int32(0x7fffffff) + for _, r := range s { + if m > r && r >= n { + m = r + } + } + delta += (m - n) * (h + 1) + if delta < 0 { + return "", fmt.Errorf("idna: invalid label %q", s) + } + n = m + for _, r := range s { + if r < n { + delta++ + if delta < 0 { + return "", fmt.Errorf("idna: invalid label %q", s) + } + continue + } + if r > n { + continue + } + q := delta + for k := base; ; k += base { + t := k - bias + if t < tmin { + t = tmin + } else if t > tmax { + t = tmax + } + if q < t { + break + } + output = append(output, encodeDigit(t+(q-t)%(base-t))) + q = (q - t) / (base - t) + } + output = append(output, encodeDigit(q)) + bias = adapt(delta, h+1, h == b) + delta = 0 + h++ + remaining-- + } + delta++ + n++ + } + return string(output), nil +} + +func decodeDigit(x byte) (digit int32, ok bool) { + switch { + case '0' <= x && x <= '9': + return int32(x - ('0' - 26)), true + case 'A' <= x && x <= 'Z': + return int32(x - 'A'), true + case 'a' <= x && x <= 'z': + return int32(x - 'a'), true + } + return 0, false +} + +func encodeDigit(digit int32) byte { + switch { + case 0 <= digit && digit < 26: + return byte(digit + 'a') + case 26 <= digit && digit < 36: + return byte(digit + ('0' - 26)) + } + panic("idna: internal error in punycode encoding") +} + +// adapt is the bias adaptation function specified in section 6.1. +func adapt(delta, numPoints int32, firstTime bool) int32 { + if firstTime { + delta /= damp + } else { + delta /= 2 + } + delta += delta / numPoints + k := int32(0) + for delta > ((base-tmin)*tmax)/2 { + delta /= base - tmin + k += base + } + return k + (base-tmin+1)*delta/(delta+skew) +} diff --git a/vendor/golang.org/x/net/lex/httplex/httplex.go b/vendor/golang.org/x/net/lex/httplex/httplex.go new file mode 100644 index 0000000000..bd0ec24f44 --- /dev/null +++ b/vendor/golang.org/x/net/lex/httplex/httplex.go @@ -0,0 +1,312 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package httplex contains rules around lexical matters of various +// HTTP-related specifications. +// +// This package is shared by the standard library (which vendors it) +// and x/net/http2. It comes with no API stability promise. +package httplex + +import ( + "strings" + "unicode/utf8" +) + +var isTokenTable = [127]bool{ + '!': true, + '#': true, + '$': true, + '%': true, + '&': true, + '\'': true, + '*': true, + '+': true, + '-': true, + '.': true, + '0': true, + '1': true, + '2': true, + '3': true, + '4': true, + '5': true, + '6': true, + '7': true, + '8': true, + '9': true, + 'A': true, + 'B': true, + 'C': true, + 'D': true, + 'E': true, + 'F': true, + 'G': true, + 'H': true, + 'I': true, + 'J': true, + 'K': true, + 'L': true, + 'M': true, + 'N': true, + 'O': true, + 'P': true, + 'Q': true, + 'R': true, + 'S': true, + 'T': true, + 'U': true, + 'W': true, + 'V': true, + 'X': true, + 'Y': true, + 'Z': true, + '^': true, + '_': true, + '`': true, + 'a': true, + 'b': true, + 'c': true, + 'd': true, + 'e': true, + 'f': true, + 'g': true, + 'h': true, + 'i': true, + 'j': true, + 'k': true, + 'l': true, + 'm': true, + 'n': true, + 'o': true, + 'p': true, + 'q': true, + 'r': true, + 's': true, + 't': true, + 'u': true, + 'v': true, + 'w': true, + 'x': true, + 'y': true, + 'z': true, + '|': true, + '~': true, +} + +func IsTokenRune(r rune) bool { + i := int(r) + return i < len(isTokenTable) && isTokenTable[i] +} + +func isNotToken(r rune) bool { + return !IsTokenRune(r) +} + +// HeaderValuesContainsToken reports whether any string in values +// contains the provided token, ASCII case-insensitively. +func HeaderValuesContainsToken(values []string, token string) bool { + for _, v := range values { + if headerValueContainsToken(v, token) { + return true + } + } + return false +} + +// isOWS reports whether b is an optional whitespace byte, as defined +// by RFC 7230 section 3.2.3. +func isOWS(b byte) bool { return b == ' ' || b == '\t' } + +// trimOWS returns x with all optional whitespace removes from the +// beginning and end. +func trimOWS(x string) string { + // TODO: consider using strings.Trim(x, " \t") instead, + // if and when it's fast enough. See issue 10292. + // But this ASCII-only code will probably always beat UTF-8 + // aware code. + for len(x) > 0 && isOWS(x[0]) { + x = x[1:] + } + for len(x) > 0 && isOWS(x[len(x)-1]) { + x = x[:len(x)-1] + } + return x +} + +// headerValueContainsToken reports whether v (assumed to be a +// 0#element, in the ABNF extension described in RFC 7230 section 7) +// contains token amongst its comma-separated tokens, ASCII +// case-insensitively. +func headerValueContainsToken(v string, token string) bool { + v = trimOWS(v) + if comma := strings.IndexByte(v, ','); comma != -1 { + return tokenEqual(trimOWS(v[:comma]), token) || headerValueContainsToken(v[comma+1:], token) + } + return tokenEqual(v, token) +} + +// lowerASCII returns the ASCII lowercase version of b. +func lowerASCII(b byte) byte { + if 'A' <= b && b <= 'Z' { + return b + ('a' - 'A') + } + return b +} + +// tokenEqual reports whether t1 and t2 are equal, ASCII case-insensitively. +func tokenEqual(t1, t2 string) bool { + if len(t1) != len(t2) { + return false + } + for i, b := range t1 { + if b >= utf8.RuneSelf { + // No UTF-8 or non-ASCII allowed in tokens. + return false + } + if lowerASCII(byte(b)) != lowerASCII(t2[i]) { + return false + } + } + return true +} + +// isLWS reports whether b is linear white space, according +// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 +// LWS = [CRLF] 1*( SP | HT ) +func isLWS(b byte) bool { return b == ' ' || b == '\t' } + +// isCTL reports whether b is a control byte, according +// to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 +// CTL = +func isCTL(b byte) bool { + const del = 0x7f // a CTL + return b < ' ' || b == del +} + +// ValidHeaderFieldName reports whether v is a valid HTTP/1.x header name. +// HTTP/2 imposes the additional restriction that uppercase ASCII +// letters are not allowed. +// +// RFC 7230 says: +// header-field = field-name ":" OWS field-value OWS +// field-name = token +// token = 1*tchar +// tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / +// "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA +func ValidHeaderFieldName(v string) bool { + if len(v) == 0 { + return false + } + for _, r := range v { + if !IsTokenRune(r) { + return false + } + } + return true +} + +// ValidHostHeader reports whether h is a valid host header. +func ValidHostHeader(h string) bool { + // The latest spec is actually this: + // + // http://tools.ietf.org/html/rfc7230#section-5.4 + // Host = uri-host [ ":" port ] + // + // Where uri-host is: + // http://tools.ietf.org/html/rfc3986#section-3.2.2 + // + // But we're going to be much more lenient for now and just + // search for any byte that's not a valid byte in any of those + // expressions. + for i := 0; i < len(h); i++ { + if !validHostByte[h[i]] { + return false + } + } + return true +} + +// See the validHostHeader comment. +var validHostByte = [256]bool{ + '0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true, + '8': true, '9': true, + + 'a': true, 'b': true, 'c': true, 'd': true, 'e': true, 'f': true, 'g': true, 'h': true, + 'i': true, 'j': true, 'k': true, 'l': true, 'm': true, 'n': true, 'o': true, 'p': true, + 'q': true, 'r': true, 's': true, 't': true, 'u': true, 'v': true, 'w': true, 'x': true, + 'y': true, 'z': true, + + 'A': true, 'B': true, 'C': true, 'D': true, 'E': true, 'F': true, 'G': true, 'H': true, + 'I': true, 'J': true, 'K': true, 'L': true, 'M': true, 'N': true, 'O': true, 'P': true, + 'Q': true, 'R': true, 'S': true, 'T': true, 'U': true, 'V': true, 'W': true, 'X': true, + 'Y': true, 'Z': true, + + '!': true, // sub-delims + '$': true, // sub-delims + '%': true, // pct-encoded (and used in IPv6 zones) + '&': true, // sub-delims + '(': true, // sub-delims + ')': true, // sub-delims + '*': true, // sub-delims + '+': true, // sub-delims + ',': true, // sub-delims + '-': true, // unreserved + '.': true, // unreserved + ':': true, // IPv6address + Host expression's optional port + ';': true, // sub-delims + '=': true, // sub-delims + '[': true, + '\'': true, // sub-delims + ']': true, + '_': true, // unreserved + '~': true, // unreserved +} + +// ValidHeaderFieldValue reports whether v is a valid "field-value" according to +// http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 : +// +// message-header = field-name ":" [ field-value ] +// field-value = *( field-content | LWS ) +// field-content = +// +// http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 : +// +// TEXT = +// LWS = [CRLF] 1*( SP | HT ) +// CTL = +// +// RFC 7230 says: +// field-value = *( field-content / obs-fold ) +// obj-fold = N/A to http2, and deprecated +// field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] +// field-vchar = VCHAR / obs-text +// obs-text = %x80-FF +// VCHAR = "any visible [USASCII] character" +// +// http2 further says: "Similarly, HTTP/2 allows header field values +// that are not valid. While most of the values that can be encoded +// will not alter header field parsing, carriage return (CR, ASCII +// 0xd), line feed (LF, ASCII 0xa), and the zero character (NUL, ASCII +// 0x0) might be exploited by an attacker if they are translated +// verbatim. Any request or response that contains a character not +// permitted in a header field value MUST be treated as malformed +// (Section 8.1.2.6). Valid characters are defined by the +// field-content ABNF rule in Section 3.2 of [RFC7230]." +// +// This function does not (yet?) properly handle the rejection of +// strings that begin or end with SP or HTAB. +func ValidHeaderFieldValue(v string) bool { + for i := 0; i < len(v); i++ { + b := v[i] + if isCTL(b) && !isLWS(b) { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE new file mode 100644 index 0000000000..6a66aea5ea --- /dev/null +++ b/vendor/golang.org/x/text/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/text/PATENTS b/vendor/golang.org/x/text/PATENTS new file mode 100644 index 0000000000..733099041f --- /dev/null +++ b/vendor/golang.org/x/text/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/text/cases/cases.go b/vendor/golang.org/x/text/cases/cases.go new file mode 100644 index 0000000000..13b3a5716d --- /dev/null +++ b/vendor/golang.org/x/text/cases/cases.go @@ -0,0 +1,129 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_trieval.go + +// Package cases provides general and language-specific case mappers. +package cases + +import ( + "golang.org/x/text/language" + "golang.org/x/text/transform" +) + +// References: +// - Unicode Reference Manual Chapter 3.13, 4.2, and 5.18. +// - http://www.unicode.org/reports/tr29/ +// - http://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt +// - http://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt +// - http://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt +// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt +// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt +// - http://userguide.icu-project.org/transforms/casemappings + +// TODO: +// - Case folding +// - Wide and Narrow? +// - Segmenter option for title casing. +// - ASCII fast paths +// - Encode Soft-Dotted property within trie somehow. + +// A Caser transforms given input to a certain case. It implements +// transform.Transformer. +// +// A Caser may be stateful and should therefore not be shared between +// goroutines. +type Caser struct { + t transform.Transformer +} + +// Bytes returns a new byte slice with the result of converting b to the case +// form implemented by c. +func (c Caser) Bytes(b []byte) []byte { + b, _, _ = transform.Bytes(c.t, b) + return b +} + +// String returns a string with the result of transforming s to the case form +// implemented by c. +func (c Caser) String(s string) string { + s, _, _ = transform.String(c.t, s) + return s +} + +// Reset resets the Caser to be reused for new input after a previous call to +// Transform. +func (c Caser) Reset() { c.t.Reset() } + +// Transform implements the Transformer interface and transforms the given input +// to the case form implemented by c. +func (c Caser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return c.t.Transform(dst, src, atEOF) +} + +// Upper returns a Caser for language-specific uppercasing. +func Upper(t language.Tag, opts ...Option) Caser { + return Caser{makeUpper(t, getOpts(opts...))} +} + +// Lower returns a Caser for language-specific lowercasing. +func Lower(t language.Tag, opts ...Option) Caser { + return Caser{makeLower(t, getOpts(opts...))} +} + +// Title returns a Caser for language-specific title casing. It uses an +// approximation of the default Unicode Word Break algorithm. +func Title(t language.Tag, opts ...Option) Caser { + return Caser{makeTitle(t, getOpts(opts...))} +} + +// Fold returns a Caser that implements Unicode case folding. The returned Caser +// is stateless and safe to use concurrently by multiple goroutines. +// +// Case folding does not normalize the input and may not preserve a normal form. +// Use the collate or search package for more convenient and linguistically +// sound comparisons. Use unicode/precis for string comparisons where security +// aspects are a concern. +func Fold(opts ...Option) Caser { + return Caser{makeFold(getOpts(opts...))} +} + +// An Option is used to modify the behavior of a Caser. +type Option func(o *options) + +var ( + // NoLower disables the lowercasing of non-leading letters for a title + // caser. + NoLower Option = noLower + + // Compact omits mappings in case folding for characters that would grow the + // input. (Unimplemented.) + Compact Option = compact +) + +// TODO: option to preserve a normal form, if applicable? + +type options struct { + noLower bool + simple bool + + // TODO: segmenter, max ignorable, alternative versions, etc. + + noFinalSigma bool // Only used for testing. +} + +func getOpts(o ...Option) (res options) { + for _, f := range o { + f(&res) + } + return +} + +func noLower(o *options) { + o.noLower = true +} + +func compact(o *options) { + o.simple = true +} diff --git a/vendor/golang.org/x/text/cases/context.go b/vendor/golang.org/x/text/cases/context.go new file mode 100644 index 0000000000..0d2e497ebc --- /dev/null +++ b/vendor/golang.org/x/text/cases/context.go @@ -0,0 +1,281 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +import ( + "golang.org/x/text/transform" +) + +// A context is used for iterating over source bytes, fetching case info and +// writing to a destination buffer. +// +// Casing operations may need more than one rune of context to decide how a rune +// should be cased. Casing implementations should call checkpoint on context +// whenever it is known to be safe to return the runes processed so far. +// +// It is recommended for implementations to not allow for more than 30 case +// ignorables as lookahead (analogous to the limit in norm) and to use state if +// unbounded lookahead is needed for cased runes. +type context struct { + dst, src []byte + atEOF bool + + pDst int // pDst points past the last written rune in dst. + pSrc int // pSrc points to the start of the currently scanned rune. + + // checkpoints safe to return in Transform, where nDst <= pDst and nSrc <= pSrc. + nDst, nSrc int + err error + + sz int // size of current rune + info info // case information of currently scanned rune + + // State preserved across calls to Transform. + isMidWord bool // false if next cased letter needs to be title-cased. +} + +func (c *context) Reset() { + c.isMidWord = false +} + +// ret returns the return values for the Transform method. It checks whether +// there were insufficient bytes in src to complete and introduces an error +// accordingly, if necessary. +func (c *context) ret() (nDst, nSrc int, err error) { + if c.err != nil || c.nSrc == len(c.src) { + return c.nDst, c.nSrc, c.err + } + // This point is only reached by mappers if there was no short destination + // buffer. This means that the source buffer was exhausted and that c.sz was + // set to 0 by next. + if c.atEOF && c.pSrc == len(c.src) { + return c.pDst, c.pSrc, nil + } + return c.nDst, c.nSrc, transform.ErrShortSrc +} + +// checkpoint sets the return value buffer points for Transform to the current +// positions. +func (c *context) checkpoint() { + if c.err == nil { + c.nDst, c.nSrc = c.pDst, c.pSrc+c.sz + } +} + +// unreadRune causes the last rune read by next to be reread on the next +// invocation of next. Only one unreadRune may be called after a call to next. +func (c *context) unreadRune() { + c.sz = 0 +} + +func (c *context) next() bool { + c.pSrc += c.sz + if c.pSrc == len(c.src) || c.err != nil { + c.info, c.sz = 0, 0 + return false + } + v, sz := trie.lookup(c.src[c.pSrc:]) + c.info, c.sz = info(v), sz + if c.sz == 0 { + if c.atEOF { + // A zero size means we have an incomplete rune. If we are atEOF, + // this means it is an illegal rune, which we will consume one + // byte at a time. + c.sz = 1 + } else { + c.err = transform.ErrShortSrc + return false + } + } + return true +} + +// writeBytes adds bytes to dst. +func (c *context) writeBytes(b []byte) bool { + if len(c.dst)-c.pDst < len(b) { + c.err = transform.ErrShortDst + return false + } + // This loop is faster than using copy. + for _, ch := range b { + c.dst[c.pDst] = ch + c.pDst++ + } + return true +} + +// writeString writes the given string to dst. +func (c *context) writeString(s string) bool { + if len(c.dst)-c.pDst < len(s) { + c.err = transform.ErrShortDst + return false + } + // This loop is faster than using copy. + for i := 0; i < len(s); i++ { + c.dst[c.pDst] = s[i] + c.pDst++ + } + return true +} + +// copy writes the current rune to dst. +func (c *context) copy() bool { + return c.writeBytes(c.src[c.pSrc : c.pSrc+c.sz]) +} + +// copyXOR copies the current rune to dst and modifies it by applying the XOR +// pattern of the case info. It is the responsibility of the caller to ensure +// that this is a rune with a XOR pattern defined. +func (c *context) copyXOR() bool { + if !c.copy() { + return false + } + if c.info&xorIndexBit == 0 { + // Fast path for 6-bit XOR pattern, which covers most cases. + c.dst[c.pDst-1] ^= byte(c.info >> xorShift) + } else { + // Interpret XOR bits as an index. + // TODO: test performance for unrolling this loop. Verify that we have + // at least two bytes and at most three. + idx := c.info >> xorShift + for p := c.pDst - 1; ; p-- { + c.dst[p] ^= xorData[idx] + idx-- + if xorData[idx] == 0 { + break + } + } + } + return true +} + +// hasPrefix returns true if src[pSrc:] starts with the given string. +func (c *context) hasPrefix(s string) bool { + b := c.src[c.pSrc:] + if len(b) < len(s) { + return false + } + for i, c := range b[:len(s)] { + if c != s[i] { + return false + } + } + return true +} + +// caseType returns an info with only the case bits, normalized to either +// cLower, cUpper, cTitle or cUncased. +func (c *context) caseType() info { + cm := c.info & 0x7 + if cm < 4 { + return cm + } + if cm >= cXORCase { + // xor the last bit of the rune with the case type bits. + b := c.src[c.pSrc+c.sz-1] + return info(b&1) ^ cm&0x3 + } + if cm == cIgnorableCased { + return cLower + } + return cUncased +} + +// lower writes the lowercase version of the current rune to dst. +func lower(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cLower { + return c.copy() + } + if c.info&exceptionBit == 0 { + return c.copyXOR() + } + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { + return c.writeString(e[offset : offset+nLower]) + } + return c.copy() +} + +// upper writes the uppercase version of the current rune to dst. +func upper(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cUpper { + return c.copy() + } + if c.info&exceptionBit == 0 { + return c.copyXOR() + } + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + // Get length of first special case mapping. + n := (e[1] >> lengthBits) & lengthMask + if ct == cTitle { + // The first special case mapping is for lower. Set n to the second. + if n == noChange { + n = 0 + } + n, e = e[1]&lengthMask, e[n:] + } + if n != noChange { + return c.writeString(e[offset : offset+n]) + } + return c.copy() +} + +// title writes the title case version of the current rune to dst. +func title(c *context) bool { + ct := c.caseType() + if c.info&hasMappingMask == 0 || ct == cTitle { + return c.copy() + } + if c.info&exceptionBit == 0 { + if ct == cLower { + return c.copyXOR() + } + return c.copy() + } + // Get the exception data. + e := exceptions[c.info>>exceptionShift:] + offset := 2 + e[0]&lengthMask // size of header + fold string + + nFirst := (e[1] >> lengthBits) & lengthMask + if nTitle := e[1] & lengthMask; nTitle != noChange { + if nFirst != noChange { + e = e[nFirst:] + } + return c.writeString(e[offset : offset+nTitle]) + } + if ct == cLower && nFirst != noChange { + // Use the uppercase version instead. + return c.writeString(e[offset : offset+nFirst]) + } + // Already in correct case. + return c.copy() +} + +// foldFull writes the foldFull version of the current rune to dst. +func foldFull(c *context) bool { + if c.info&hasMappingMask == 0 { + return c.copy() + } + ct := c.caseType() + if c.info&exceptionBit == 0 { + if ct != cLower || c.info&inverseFoldBit != 0 { + return c.copyXOR() + } + return c.copy() + } + e := exceptions[c.info>>exceptionShift:] + n := e[0] & lengthMask + if n == 0 { + if ct == cLower { + return c.copy() + } + n = (e[1] >> lengthBits) & lengthMask + } + return c.writeString(e[2 : 2+n]) +} diff --git a/vendor/golang.org/x/text/cases/fold.go b/vendor/golang.org/x/text/cases/fold.go new file mode 100644 index 0000000000..e95bfa8ea2 --- /dev/null +++ b/vendor/golang.org/x/text/cases/fold.go @@ -0,0 +1,26 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +import "golang.org/x/text/transform" + +type caseFolder struct{ transform.NopResetter } + +// caseFolder implements the Transformer interface for doing case folding. +func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() { + foldFull(&c) + c.checkpoint() + } + return c.ret() +} + +func makeFold(o options) transform.Transformer { + // TODO: Special case folding, through option Language, Special/Turkic, or + // both. + // TODO: Implement Compact options. + return &caseFolder{} +} diff --git a/vendor/golang.org/x/text/cases/gen.go b/vendor/golang.org/x/text/cases/gen.go new file mode 100644 index 0000000000..f46170fca1 --- /dev/null +++ b/vendor/golang.org/x/text/cases/gen.go @@ -0,0 +1,831 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// This program generates the trie for casing operations. The Unicode casing +// algorithm requires the lookup of various properties and mappings for each +// rune. The table generated by this generator combines several of the most +// frequently used of these into a single trie so that they can be accessed +// with a single lookup. +package main + +import ( + "bytes" + "fmt" + "io" + "io/ioutil" + "log" + "reflect" + "strconv" + "strings" + "unicode" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" + "golang.org/x/text/internal/ucd" + "golang.org/x/text/unicode/norm" +) + +func main() { + gen.Init() + genTables() + genTablesTest() + gen.Repackage("gen_trieval.go", "trieval.go", "cases") +} + +// runeInfo contains all information for a rune that we care about for casing +// operations. +type runeInfo struct { + Rune rune + + entry info // trie value for this rune. + + CaseMode info + + // Simple case mappings. + Simple [1 + maxCaseMode][]rune + + // Special casing + HasSpecial bool + Conditional bool + Special [1 + maxCaseMode][]rune + + // Folding + FoldSimple rune + FoldSpecial rune + FoldFull []rune + + // TODO: FC_NFKC, or equivalent data. + + // Properties + SoftDotted bool + CaseIgnorable bool + Cased bool + DecomposeGreek bool + BreakType string + BreakCat breakCategory + + // We care mostly about 0, Above, and IotaSubscript. + CCC byte +} + +type breakCategory int + +const ( + breakBreak breakCategory = iota + breakLetter + breakIgnored +) + +// mapping returns the case mapping for the given case type. +func (r *runeInfo) mapping(c info) string { + if r.HasSpecial { + return string(r.Special[c]) + } + if len(r.Simple[c]) != 0 { + return string(r.Simple[c]) + } + return string(r.Rune) +} + +func parse(file string, f func(p *ucd.Parser)) { + ucd.Parse(gen.OpenUCDFile(file), f) +} + +func parseUCD() []runeInfo { + chars := make([]runeInfo, unicode.MaxRune) + + get := func(r rune) *runeInfo { + c := &chars[r] + c.Rune = r + return c + } + + parse("UnicodeData.txt", func(p *ucd.Parser) { + ri := get(p.Rune(0)) + ri.CCC = byte(p.Int(ucd.CanonicalCombiningClass)) + ri.Simple[cLower] = p.Runes(ucd.SimpleLowercaseMapping) + ri.Simple[cUpper] = p.Runes(ucd.SimpleUppercaseMapping) + ri.Simple[cTitle] = p.Runes(ucd.SimpleTitlecaseMapping) + if p.String(ucd.GeneralCategory) == "Lt" { + ri.CaseMode = cTitle + } + }) + + // ; + parse("PropList.txt", func(p *ucd.Parser) { + if p.String(1) == "Soft_Dotted" { + chars[p.Rune(0)].SoftDotted = true + } + }) + + // ; + parse("DerivedCoreProperties.txt", func(p *ucd.Parser) { + ri := get(p.Rune(0)) + switch p.String(1) { + case "Case_Ignorable": + ri.CaseIgnorable = true + case "Cased": + ri.Cased = true + case "Lowercase": + ri.CaseMode = cLower + case "Uppercase": + ri.CaseMode = cUpper + } + }) + + // ; ; ; <upper> ; (<condition_list> ;)? + parse("SpecialCasing.txt", func(p *ucd.Parser) { + // We drop all conditional special casing and deal with them manually in + // the language-specific case mappers. Rune 0x03A3 is the only one with + // a conditional formatting that is not language-specific. However, + // dealing with this letter is tricky, especially in a streaming + // context, so we deal with it in the Caser for Greek specifically. + ri := get(p.Rune(0)) + if p.String(4) == "" { + ri.HasSpecial = true + ri.Special[cLower] = p.Runes(1) + ri.Special[cTitle] = p.Runes(2) + ri.Special[cUpper] = p.Runes(3) + } else { + ri.Conditional = true + } + }) + + // TODO: Use text breaking according to UAX #29. + // <code>; <word break type> + parse("auxiliary/WordBreakProperty.txt", func(p *ucd.Parser) { + ri := get(p.Rune(0)) + ri.BreakType = p.String(1) + + // We collapse the word breaking properties onto the categories we need. + switch p.String(1) { // TODO: officially we need to canonicalize. + case "Format", "MidLetter", "MidNumLet", "Single_Quote": + ri.BreakCat = breakIgnored + case "ALetter", "Hebrew_Letter", "Numeric", "Extend", "ExtendNumLet": + ri.BreakCat = breakLetter + } + }) + + // <code>; <type>; <mapping> + parse("CaseFolding.txt", func(p *ucd.Parser) { + ri := get(p.Rune(0)) + switch p.String(1) { + case "C": + ri.FoldSimple = p.Rune(2) + ri.FoldFull = p.Runes(2) + case "S": + ri.FoldSimple = p.Rune(2) + case "T": + ri.FoldSpecial = p.Rune(2) + case "F": + ri.FoldFull = p.Runes(2) + default: + log.Fatalf("%U: unknown type: %s", p.Rune(0), p.String(1)) + } + }) + + return chars +} + +func genTables() { + chars := parseUCD() + verifyProperties(chars) + + t := triegen.NewTrie("case") + for i := range chars { + c := &chars[i] + makeEntry(c) + t.Insert(rune(i), uint64(c.entry)) + } + + w := gen.NewCodeWriter() + defer w.WriteGoFile("tables.go", "cases") + + gen.WriteUnicodeVersion(w) + + // TODO: write CLDR version after adding a mechanism to detect that the + // tables on which the manually created locale-sensitive casing code is + // based hasn't changed. + + w.WriteVar("xorData", string(xorData)) + w.WriteVar("exceptions", string(exceptionData)) + + sz, err := t.Gen(w, triegen.Compact(&sparseCompacter{})) + if err != nil { + log.Fatal(err) + } + w.Size += sz +} + +func makeEntry(ri *runeInfo) { + if ri.CaseIgnorable { + if ri.Cased { + ri.entry = cIgnorableCased + } else { + ri.entry = cIgnorableUncased + } + } else { + ri.entry = ri.CaseMode + } + + // TODO: handle soft-dotted. + + ccc := cccOther + switch ri.CCC { + case 0: // Not_Reordered + ccc = cccZero + case above: // Above + ccc = cccAbove + } + if ri.BreakCat == breakBreak { + ccc = cccBreak + } + + ri.entry |= ccc + + if ri.CaseMode == cUncased { + return + } + + // Need to do something special. + if ri.CaseMode == cTitle || ri.HasSpecial || ri.mapping(cTitle) != ri.mapping(cUpper) { + makeException(ri) + return + } + if f := string(ri.FoldFull); len(f) > 0 && f != ri.mapping(cUpper) && f != ri.mapping(cLower) { + makeException(ri) + return + } + + // Rune is either lowercase or uppercase. + + orig := string(ri.Rune) + mapped := "" + if ri.CaseMode == cUpper { + mapped = ri.mapping(cLower) + } else { + mapped = ri.mapping(cUpper) + } + + if len(orig) != len(mapped) { + makeException(ri) + return + } + + if string(ri.FoldFull) == ri.mapping(cUpper) { + ri.entry |= inverseFoldBit + } + + n := len(orig) + + // Create per-byte XOR mask. + var b []byte + for i := 0; i < n; i++ { + b = append(b, orig[i]^mapped[i]) + } + + // Remove leading 0 bytes, but keep at least one byte. + for ; len(b) > 1 && b[0] == 0; b = b[1:] { + } + + if len(b) == 1 && b[0]&0xc0 == 0 { + ri.entry |= info(b[0]) << xorShift + return + } + + key := string(b) + x, ok := xorCache[key] + if !ok { + xorData = append(xorData, 0) // for detecting start of sequence + xorData = append(xorData, b...) + + x = len(xorData) - 1 + xorCache[key] = x + } + ri.entry |= info(x<<xorShift) | xorIndexBit +} + +var xorCache = map[string]int{} + +// xorData contains byte-wise XOR data for the least significant bytes of a +// UTF-8 encoded rune. An index points to the last byte. The sequence starts +// with a zero terminator. +var xorData = []byte{} + +// See the comments in gen_trieval.go re "the exceptions slice". +var exceptionData = []byte{0} + +// makeException encodes case mappings that cannot be expressed in a simple +// XOR diff. +func makeException(ri *runeInfo) { + ccc := ri.entry & cccMask + // Set exception bit and retain case type. + ri.entry &= 0x0007 + ri.entry |= exceptionBit + + if len(exceptionData) >= 1<<numExceptionBits { + log.Fatalf("%U:exceptionData too large %x > %d bits", ri.Rune, len(exceptionData), numExceptionBits) + } + + // Set the offset in the exceptionData array. + ri.entry |= info(len(exceptionData) << exceptionShift) + + orig := string(ri.Rune) + tc := ri.mapping(cTitle) + uc := ri.mapping(cUpper) + lc := ri.mapping(cLower) + ff := string(ri.FoldFull) + + // addString sets the length of a string and adds it to the expansions array. + addString := func(s string, b *byte) { + if len(s) == 0 { + // Zero-length mappings exist, but only for conditional casing, + // which we are representing outside of this table. + log.Fatalf("%U: has zero-length mapping.", ri.Rune) + } + *b <<= 3 + if s != orig { + n := len(s) + if n > 7 { + log.Fatalf("%U: mapping larger than 7 (%d)", ri.Rune, n) + } + *b |= byte(n) + exceptionData = append(exceptionData, s...) + } + } + + // byte 0: + exceptionData = append(exceptionData, byte(ccc)|byte(len(ff))) + + // byte 1: + p := len(exceptionData) + exceptionData = append(exceptionData, 0) + + if len(ff) > 7 { // May be zero-length. + log.Fatalf("%U: fold string larger than 7 (%d)", ri.Rune, len(ff)) + } + exceptionData = append(exceptionData, ff...) + ct := ri.CaseMode + if ct != cLower { + addString(lc, &exceptionData[p]) + } + if ct != cUpper { + addString(uc, &exceptionData[p]) + } + if ct != cTitle { + // If title is the same as upper, we set it to the original string so + // that it will be marked as not present. This implies title case is + // the same as upper case. + if tc == uc { + tc = orig + } + addString(tc, &exceptionData[p]) + } +} + +// sparseCompacter is a trie value block Compacter. There are many cases where +// successive runes alternate between lower- and upper-case. This Compacter +// exploits this by adding a special case type where the case value is obtained +// from or-ing it with the least-significant bit of the rune, creating large +// ranges of equal case values that compress well. +type sparseCompacter struct { + sparseBlocks [][]uint16 + sparseOffsets []uint16 + sparseCount int +} + +// makeSparse returns the number of elements that compact block would contain +// as well as the modified values. +func makeSparse(vals []uint64) ([]uint16, int) { + // Copy the values. + values := make([]uint16, len(vals)) + for i, v := range vals { + values[i] = uint16(v) + } + + alt := func(i int, v uint16) uint16 { + if cm := info(v & fullCasedMask); cm == cUpper || cm == cLower { + // Convert cLower or cUpper to cXORCase value, which has the form 11x. + xor := v + xor &^= 1 + xor |= uint16(i&1) ^ (v & 1) + xor |= 0x4 + return xor + } + return v + } + + var count int + var previous uint16 + for i, v := range values { + if v != 0 { + // Try if the unmodified value is equal to the previous. + if v == previous { + continue + } + + // Try if the xor-ed value is equal to the previous value. + a := alt(i, v) + if a == previous { + values[i] = a + continue + } + + // This is a new value. + count++ + + // Use the xor-ed value if it will be identical to the next value. + if p := i + 1; p < len(values) && alt(p, values[p]) == a { + values[i] = a + v = a + } + } + previous = v + } + return values, count +} + +func (s *sparseCompacter) Size(v []uint64) (int, bool) { + _, n := makeSparse(v) + + // We limit using this method to having 16 entries. + if n > 16 { + return 0, false + } + + return 2 + int(reflect.TypeOf(valueRange{}).Size())*n, true +} + +func (s *sparseCompacter) Store(v []uint64) uint32 { + h := uint32(len(s.sparseOffsets)) + values, sz := makeSparse(v) + s.sparseBlocks = append(s.sparseBlocks, values) + s.sparseOffsets = append(s.sparseOffsets, uint16(s.sparseCount)) + s.sparseCount += sz + return h +} + +func (s *sparseCompacter) Handler() string { + // The sparse global variable and its lookup method is defined in gen_trieval.go. + return "sparse.lookup" +} + +func (s *sparseCompacter) Print(w io.Writer) (retErr error) { + p := func(format string, args ...interface{}) { + _, err := fmt.Fprintf(w, format, args...) + if retErr == nil && err != nil { + retErr = err + } + } + + ls := len(s.sparseBlocks) + if ls == len(s.sparseOffsets) { + s.sparseOffsets = append(s.sparseOffsets, uint16(s.sparseCount)) + } + p("// sparseOffsets: %d entries, %d bytes\n", ls+1, (ls+1)*2) + p("var sparseOffsets = %#v\n\n", s.sparseOffsets) + + ns := s.sparseCount + p("// sparseValues: %d entries, %d bytes\n", ns, ns*4) + p("var sparseValues = [%d]valueRange {", ns) + for i, values := range s.sparseBlocks { + p("\n// Block %#x, offset %#x", i, s.sparseOffsets[i]) + var v uint16 + for i, nv := range values { + if nv != v { + if v != 0 { + p(",hi:%#02x},", 0x80+i-1) + } + if nv != 0 { + p("\n{value:%#04x,lo:%#02x", nv, 0x80+i) + } + } + v = nv + } + if v != 0 { + p(",hi:%#02x},", 0x80+len(values)-1) + } + } + p("\n}\n\n") + return +} + +// verifyProperties that properties of the runes that are relied upon in the +// implementation. Each property is marked with an identifier that is referred +// to in the places where it is used. +func verifyProperties(chars []runeInfo) { + for i, c := range chars { + r := rune(i) + + // Rune properties. + + // A.1: modifier never changes on lowercase. [ltLower] + if c.CCC > 0 && unicode.ToLower(r) != r { + log.Fatalf("%U: non-starter changes when lowercased", r) + } + + // A.2: properties of decompositions starting with I or J. [ltLower] + d := norm.NFD.PropertiesString(string(r)).Decomposition() + if len(d) > 0 { + if d[0] == 'I' || d[0] == 'J' { + // A.2.1: we expect at least an ASCII character and a modifier. + if len(d) < 3 { + log.Fatalf("%U: length of decomposition was %d; want >= 3", r, len(d)) + } + + // All subsequent runes are modifiers and all have the same CCC. + runes := []rune(string(d[1:])) + ccc := chars[runes[0]].CCC + + for _, mr := range runes[1:] { + mc := chars[mr] + + // A.2.2: all modifiers have a CCC of Above or less. + if ccc == 0 || ccc > above { + log.Fatalf("%U: CCC of successive rune (%U) was %d; want (0,230]", r, mr, ccc) + } + + // A.2.3: a sequence of modifiers all have the same CCC. + if mc.CCC != ccc { + log.Fatalf("%U: CCC of follow-up modifier (%U) was %d; want %d", r, mr, mc.CCC, ccc) + } + + // A.2.4: for each trailing r, r in [0x300, 0x311] <=> CCC == Above. + if (ccc == above) != (0x300 <= mr && mr <= 0x311) { + log.Fatalf("%U: modifier %U in [U+0300, U+0311] != ccc(%U) == 230", r, mr, mr) + } + + if i += len(string(mr)); i >= len(d) { + break + } + } + } + } + + // A.3: no U+0307 in decomposition of Soft-Dotted rune. [ltUpper] + if unicode.Is(unicode.Soft_Dotted, r) && strings.Contains(string(d), "\u0307") { + log.Fatalf("%U: decomposition of soft-dotted rune may not contain U+0307", r) + } + + // A.4: only rune U+0345 may be of CCC Iota_Subscript. [elUpper] + if c.CCC == iotaSubscript && r != 0x0345 { + log.Fatalf("%U: only rune U+0345 may have CCC Iota_Subscript", r) + } + + // A.5: soft-dotted runes do not have exceptions. + if c.SoftDotted && c.entry&exceptionBit != 0 { + log.Fatalf("%U: soft-dotted has exception", r) + } + + // A.6: Greek decomposition. [elUpper] + if unicode.Is(unicode.Greek, r) { + if b := norm.NFD.PropertiesString(string(r)).Decomposition(); b != nil { + runes := []rune(string(b)) + // A.6.1: If a Greek rune decomposes and the first rune of the + // decomposition is greater than U+00FF, the rune is always + // great and not a modifier. + if f := runes[0]; unicode.IsMark(f) || f > 0xFF && !unicode.Is(unicode.Greek, f) { + log.Fatalf("%U: expeced first rune of Greek decomposition to be letter, found %U", r, f) + } + // A.6.2: Any follow-up rune in a Greek decomposition is a + // modifier of which the first should be gobbled in + // decomposition. + for _, m := range runes[1:] { + switch m { + case 0x0313, 0x0314, 0x0301, 0x0300, 0x0306, 0x0342, 0x0308, 0x0304, 0x345: + default: + log.Fatalf("%U: modifier %U is outside of expeced Greek modifier set", r, m) + } + } + } + } + + // Breaking properties. + + // B.1: all runes with CCC > 0 are of break type Extend. + if c.CCC > 0 && c.BreakType != "Extend" { + log.Fatalf("%U: CCC == %d, but got break type %s; want Extend", r, c.CCC, c.BreakType) + } + + // B.2: all cased runes with c.CCC == 0 are of break type ALetter. + if c.CCC == 0 && c.Cased && c.BreakType != "ALetter" { + log.Fatalf("%U: cased, but got break type %s; want ALetter", r, c.BreakType) + } + + // B.3: letter category. + if c.CCC == 0 && c.BreakCat != breakBreak && !c.CaseIgnorable { + if c.BreakCat != breakLetter { + log.Fatalf("%U: check for letter break type gave %d; want %d", r, c.BreakCat, breakLetter) + } + } + } +} + +func genTablesTest() { + w := &bytes.Buffer{} + + fmt.Fprintln(w, "var (") + printProperties(w, "DerivedCoreProperties.txt", "Case_Ignorable", verifyIgnore) + + // We discard the output as we know we have perfect functions. We run them + // just to verify the properties are correct. + n := printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Cased", verifyCased) + n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Lowercase", verifyLower) + n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Uppercase", verifyUpper) + if n > 0 { + log.Fatalf("One of the discarded properties does not have a perfect filter.") + } + + // <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? + fmt.Fprintln(w, "\tspecial = map[rune]struct{ toLower, toTitle, toUpper string }{") + parse("SpecialCasing.txt", func(p *ucd.Parser) { + // Skip conditional entries. + if p.String(4) != "" { + return + } + r := p.Rune(0) + fmt.Fprintf(w, "\t\t0x%04x: {%q, %q, %q},\n", + r, string(p.Runes(1)), string(p.Runes(2)), string(p.Runes(3))) + }) + fmt.Fprint(w, "\t}\n\n") + + // <code>; <type>; <runes> + table := map[rune]struct{ simple, full, special string }{} + parse("CaseFolding.txt", func(p *ucd.Parser) { + r := p.Rune(0) + t := p.String(1) + v := string(p.Runes(2)) + if t != "T" && v == string(unicode.ToLower(r)) { + return + } + x := table[r] + switch t { + case "C": + x.full = v + x.simple = v + case "S": + x.simple = v + case "F": + x.full = v + case "T": + x.special = v + } + table[r] = x + }) + fmt.Fprintln(w, "\tfoldMap = map[rune]struct{ simple, full, special string }{") + for r := rune(0); r < 0x10FFFF; r++ { + x, ok := table[r] + if !ok { + continue + } + fmt.Fprintf(w, "\t\t0x%04x: {%q, %q, %q},\n", r, x.simple, x.full, x.special) + } + fmt.Fprint(w, "\t}\n\n") + + // Break property + notBreak := map[rune]bool{} + parse("auxiliary/WordBreakProperty.txt", func(p *ucd.Parser) { + switch p.String(1) { + case "Extend", "Format", "MidLetter", "MidNumLet", "Single_Quote", + "ALetter", "Hebrew_Letter", "Numeric", "ExtendNumLet": + notBreak[p.Rune(0)] = true + } + }) + + fmt.Fprintln(w, "\tbreakProp = []struct{ lo, hi rune }{") + inBreak := false + for r := rune(0); r <= lastRuneForTesting; r++ { + if isBreak := !notBreak[r]; isBreak != inBreak { + if isBreak { + fmt.Fprintf(w, "\t\t{0x%x, ", r) + } else { + fmt.Fprintf(w, "0x%x},\n", r-1) + } + inBreak = isBreak + } + } + if inBreak { + fmt.Fprintf(w, "0x%x},\n", lastRuneForTesting) + } + fmt.Fprint(w, "\t}\n\n") + + // Word break test + // Filter out all samples that do not contain cased characters. + cased := map[rune]bool{} + parse("DerivedCoreProperties.txt", func(p *ucd.Parser) { + if p.String(1) == "Cased" { + cased[p.Rune(0)] = true + } + }) + + fmt.Fprintln(w, "\tbreakTest = []string{") + parse("auxiliary/WordBreakTest.txt", func(p *ucd.Parser) { + c := strings.Split(p.String(0), " ") + + const sep = '|' + numCased := 0 + test := "" + for ; len(c) >= 2; c = c[2:] { + if c[0] == "÷" && test != "" { + test += string(sep) + } + i, err := strconv.ParseUint(c[1], 16, 32) + r := rune(i) + if err != nil { + log.Fatalf("Invalid rune %q.", c[1]) + } + if r == sep { + log.Fatalf("Separator %q not allowed in test data. Pick another one.", sep) + } + if cased[r] { + numCased++ + } + test += string(r) + } + if numCased > 1 { + fmt.Fprintf(w, "\t\t%q,\n", test) + } + }) + fmt.Fprintln(w, "\t}") + + fmt.Fprintln(w, ")") + + gen.WriteGoFile("tables_test.go", "cases", w.Bytes()) +} + +// These functions are just used for verification that their definition have not +// changed in the Unicode Standard. + +func verifyCased(r rune) bool { + return verifyLower(r) || verifyUpper(r) || unicode.IsTitle(r) +} + +func verifyLower(r rune) bool { + return unicode.IsLower(r) || unicode.Is(unicode.Other_Lowercase, r) +} + +func verifyUpper(r rune) bool { + return unicode.IsUpper(r) || unicode.Is(unicode.Other_Uppercase, r) +} + +// verifyIgnore is an approximation of the Case_Ignorable property using the +// core unicode package. It is used to reduce the size of the test data. +func verifyIgnore(r rune) bool { + props := []*unicode.RangeTable{ + unicode.Mn, + unicode.Me, + unicode.Cf, + unicode.Lm, + unicode.Sk, + } + for _, p := range props { + if unicode.Is(p, r) { + return true + } + } + return false +} + +// printProperties prints tables of rune properties from the given UCD file. +// A filter func f can be given to exclude certain values. A rune r will have +// the indicated property if it is in the generated table or if f(r). +func printProperties(w io.Writer, file, property string, f func(r rune) bool) int { + verify := map[rune]bool{} + n := 0 + varNameParts := strings.Split(property, "_") + varNameParts[0] = strings.ToLower(varNameParts[0]) + fmt.Fprintf(w, "\t%s = map[rune]bool{\n", strings.Join(varNameParts, "")) + parse(file, func(p *ucd.Parser) { + if p.String(1) == property { + r := p.Rune(0) + verify[r] = true + if !f(r) { + n++ + fmt.Fprintf(w, "\t\t0x%.4x: true,\n", r) + } + } + }) + fmt.Fprint(w, "\t}\n\n") + + // Verify that f is correct, that is, it represents a subset of the property. + for r := rune(0); r <= lastRuneForTesting; r++ { + if !verify[r] && f(r) { + log.Fatalf("Incorrect filter func for property %q.", property) + } + } + return n +} + +// The newCaseTrie, sparseValues and sparseOffsets definitions below are +// placeholders referred to by gen_trieval.go. The real definitions are +// generated by this program and written to tables.go. + +func newCaseTrie(int) int { return 0 } + +var ( + sparseValues [0]valueRange + sparseOffsets [0]uint16 +) diff --git a/vendor/golang.org/x/text/cases/gen_trieval.go b/vendor/golang.org/x/text/cases/gen_trieval.go new file mode 100644 index 0000000000..cf1a99d5e5 --- /dev/null +++ b/vendor/golang.org/x/text/cases/gen_trieval.go @@ -0,0 +1,217 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// This file contains definitions for interpreting the trie value of the case +// trie generated by "go run gen*.go". It is shared by both the generator +// program and the resultant package. Sharing is achieved by the generator +// copying gen_trieval.go to trieval.go and changing what's above this comment. + +// info holds case information for a single rune. It is the value returned +// by a trie lookup. Most mapping information can be stored in a single 16-bit +// value. If not, for example when a rune is mapped to multiple runes, the value +// stores some basic case data and an index into an array with additional data. +// +// The per-rune values have the following format: +// +// if (exception) { +// 15..5 unsigned exception index +// 4 unused +// } else { +// 15..8 XOR pattern or index to XOR pattern for case mapping +// Only 13..8 are used for XOR patterns. +// 7 inverseFold (fold to upper, not to lower) +// 6 index: interpret the XOR pattern as an index +// 5..4 CCC: zero (normal or break), above or other +// } +// 3 exception: interpret this value as an exception index +// (TODO: is this bit necessary? Probably implied from case mode.) +// 2..0 case mode +// +// For the non-exceptional cases, a rune must be either uncased, lowercase or +// uppercase. If the rune is cased, the XOR pattern maps either a lowercase +// rune to uppercase or an uppercase rune to lowercase (applied to the 10 +// least-significant bits of the rune). +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + casedMask = 0x0003 + fullCasedMask = 0x0007 + ignorableMask = 0x0006 + ignorableValue = 0x0004 + + inverseFoldBit = 1 << 7 + + exceptionBit = 1 << 3 + exceptionShift = 5 + numExceptionBits = 11 + + xorIndexBit = 1 << 6 + xorShift = 8 + + // There is no mapping if all xor bits and the exception bit are zero. + hasMappingMask = 0xffc0 | exceptionBit +) + +// The case mode bits encodes the case type of a rune. This includes uncased, +// title, upper and lower case and case ignorable. (For a definition of these +// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare +// cases, a rune can be both cased and case-ignorable. This is encoded by +// cIgnorableCased. A rune of this type is always lower case. Some runes are +// cased while not having a mapping. +// +// A common pattern for scripts in the Unicode standard is for upper and lower +// case runes to alternate for increasing rune values (e.g. the accented Latin +// ranges starting from U+0100 and U+1E00 among others and some Cyrillic +// characters). We use this property by defining a cXORCase mode, where the case +// mode (always upper or lower case) is derived from the rune value. As the XOR +// pattern for case mappings is often identical for successive runes, using +// cXORCase can result in large series of identical trie values. This, in turn, +// allows us to better compress the trie blocks. +const ( + cUncased info = iota // 000 + cTitle // 001 + cLower // 010 + cUpper // 011 + cIgnorableUncased // 100 + cIgnorableCased // 101 // lower case if mappings exist + cXORCase // 11x // case is cLower | ((rune&1) ^ x) + + maxCaseMode = cUpper +) + +func (c info) isCased() bool { + return c&casedMask != 0 +} + +func (c info) isCaseIgnorable() bool { + return c&ignorableMask == ignorableValue +} + +func (c info) isCaseIgnorableAndNonBreakStarter() bool { + return c&(fullCasedMask|cccMask) == (ignorableValue | cccZero) +} + +func (c info) isNotCasedAndNotCaseIgnorable() bool { + return c&fullCasedMask == 0 +} + +func (c info) isCaseIgnorableAndNotCased() bool { + return c&fullCasedMask == cIgnorableUncased +} + +// The case mapping implementation will need to know about various Canonical +// Combining Class (CCC) values. We encode two of these in the trie value: +// cccZero (0) and cccAbove (230). If the value is cccOther, it means that +// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that +// the rune also has the break category Break (see below). +const ( + cccBreak info = iota << 4 + cccZero + cccAbove + cccOther + + cccMask = cccBreak | cccZero | cccAbove | cccOther +) + +const ( + starter = 0 + above = 230 + iotaSubscript = 240 +) + +// The exceptions slice holds data that does not fit in a normal info entry. +// The entry is pointed to by the exception index in an entry. It has the +// following format: +// +// Header +// byte 0: +// 7..6 unused +// 5..4 CCC type (same bits as entry) +// 3 unused +// 2..0 length of fold +// +// byte 1: +// 7..6 unused +// 5..3 length of 1st mapping of case type +// 2..0 length of 2nd mapping of case type +// +// case 1st 2nd +// lower -> upper, title +// upper -> lower, title +// title -> lower, upper +// +// Lengths with the value 0x7 indicate no value and implies no change. +// A length of 0 indicates a mapping to zero-length string. +// +// Body bytes: +// case folding bytes +// lowercase mapping bytes +// uppercase mapping bytes +// titlecase mapping bytes +// closure mapping bytes (for NFKC_Casefold). (TODO) +// +// Fallbacks: +// missing fold -> lower +// missing title -> upper +// all missing -> original rune +// +// exceptions starts with a dummy byte to enforce that there is no zero index +// value. +const ( + lengthMask = 0x07 + lengthBits = 3 + noChange = 0 +) + +// References to generated trie. + +var trie = newCaseTrie(0) + +var sparse = sparseBlocks{ + values: sparseValues[:], + offsets: sparseOffsets[:], +} + +// Sparse block lookup code. + +// valueRange is an entry in a sparse block. +type valueRange struct { + value uint16 + lo, hi byte +} + +type sparseBlocks struct { + values []valueRange + offsets []uint16 +} + +// lookup returns the value from values block n for byte b using binary search. +func (s *sparseBlocks) lookup(n uint32, b byte) uint16 { + lo := s.offsets[n] + hi := s.offsets[n+1] + for lo < hi { + m := lo + (hi-lo)/2 + r := s.values[m] + if r.lo <= b && b <= r.hi { + return r.value + } + if b < r.lo { + hi = m + } else { + lo = m + 1 + } + } + return 0 +} + +// lastRuneForTesting is the last rune used for testing. Everything after this +// is boring. +const lastRuneForTesting = rune(0x1FFFF) diff --git a/vendor/golang.org/x/text/cases/info.go b/vendor/golang.org/x/text/cases/info.go new file mode 100644 index 0000000000..669d7ae1fa --- /dev/null +++ b/vendor/golang.org/x/text/cases/info.go @@ -0,0 +1,83 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +func (c info) cccVal() info { + if c&exceptionBit != 0 { + return info(exceptions[c>>exceptionShift]) & cccMask + } + return c & cccMask +} + +func (c info) cccType() info { + ccc := c.cccVal() + if ccc <= cccZero { + return cccZero + } + return ccc +} + +// TODO: Implement full Unicode breaking algorithm: +// 1) Implement breaking in separate package. +// 2) Use the breaker here. +// 3) Compare table size and performance of using the more generic breaker. +// +// Note that we can extend the current algorithm to be much more accurate. This +// only makes sense, though, if the performance and/or space penalty of using +// the generic breaker is big. Extra data will only be needed for non-cased +// runes, which means there are sufficient bits left in the caseType. +// Also note that the standard breaking algorithm doesn't always make sense +// for title casing. For example, a4a -> A4a, but a"4a -> A"4A (where " stands +// for modifier \u0308). +// ICU prohibits breaking in such cases as well. + +// For the purpose of title casing we use an approximation of the Unicode Word +// Breaking algorithm defined in Annex #29: +// http://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table. +// +// For our approximation, we group the Word Break types into the following +// categories, with associated rules: +// +// 1) Letter: +// ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend. +// Rule: Never break between consecutive runes of this category. +// +// 2) Mid: +// Format, MidLetter, MidNumLet, Single_Quote. +// (Cf. case-ignorable: MidLetter, MidNumLet or cat is Mn, Me, Cf, Lm or Sk). +// Rule: Don't break between Letter and Mid, but break between two Mids. +// +// 3) Break: +// Any other category, including NewLine, CR, LF and Double_Quote. These +// categories should always result in a break between two cased letters. +// Rule: Always break. +// +// Note 1: the Katakana and MidNum categories can, in esoteric cases, result in +// preventing a break between two cased letters. For now we will ignore this +// (e.g. [ALetter] [ExtendNumLet] [Katakana] [ExtendNumLet] [ALetter] and +// [ALetter] [Numeric] [MidNum] [Numeric] [ALetter].) +// +// Note 2: the rule for Mid is very approximate, but works in most cases. To +// improve, we could store the categories in the trie value and use a FA to +// manage breaks. See TODO comment above. +// +// Note 3: according to the spec, it is possible for the Extend category to +// introduce breaks between other categories grouped in Letter. However, this +// is undesirable for our purposes. ICU prevents breaks in such cases as well. + +// isBreak returns whether this rune should introduce a break. +func (c info) isBreak() bool { + return c.cccVal() == cccBreak +} + +// isLetter returns whether the rune is of break type ALetter, Hebrew_Letter, +// Numeric, ExtendNumLet, or Extend. +func (c info) isLetter() bool { + ccc := c.cccVal() + if ccc == cccZero { + return !c.isCaseIgnorable() + } + return ccc != cccBreak +} diff --git a/vendor/golang.org/x/text/cases/map.go b/vendor/golang.org/x/text/cases/map.go new file mode 100644 index 0000000000..f2a8e96d09 --- /dev/null +++ b/vendor/golang.org/x/text/cases/map.go @@ -0,0 +1,599 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cases + +// This file contains the definitions of case mappings for all supported +// languages. The rules for the language-specific tailorings were taken and +// modified from the CLDR transform definitions in common/transforms. + +import ( + "strings" + "unicode" + "unicode/utf8" + + "golang.org/x/text/language" + "golang.org/x/text/transform" + "golang.org/x/text/unicode/norm" +) + +// A mapFunc takes a context set to the current rune and writes the mapped +// version to the same context. It may advance the context to the next rune. It +// returns whether a checkpoint is possible: whether the pDst bytes written to +// dst so far won't need changing as we see more source bytes. +type mapFunc func(*context) bool + +// maxIgnorable defines the maximum number of ignorables to consider for +// lookahead operations. +const maxIgnorable = 30 + +// supported lists the language tags for which we have tailorings. +const supported = "und af az el lt nl tr" + +func init() { + tags := []language.Tag{} + for _, s := range strings.Split(supported, " ") { + tags = append(tags, language.MustParse(s)) + } + matcher = language.NewMatcher(tags) + Supported = language.NewCoverage(tags) +} + +var ( + matcher language.Matcher + + Supported language.Coverage + + // We keep the following lists separate, instead of having a single per- + // language struct, to give the compiler a chance to remove unused code. + + // Some uppercase mappers are stateless, so we can precompute the + // Transformers and save a bit on runtime allocations. + upperFunc = []mapFunc{ + nil, // und + nil, // af + aztrUpper(upper), // az + elUpper, // el + ltUpper(upper), // lt + nil, // nl + aztrUpper(upper), // tr + } + + undUpper transform.Transformer = &undUpperCaser{} + + lowerFunc = []mapFunc{ + lower, // und + lower, // af + aztrLower, // az + lower, // el + ltLower, // lt + lower, // nl + aztrLower, // tr + } + + titleInfos = []struct { + title, lower mapFunc + rewrite func(*context) + }{ + {title, lower, nil}, // und + {title, lower, afnlRewrite}, // af + {aztrUpper(title), aztrLower, nil}, // az + {title, lower, nil}, // el + {ltUpper(title), ltLower, nil}, // lt + {nlTitle, lower, afnlRewrite}, // nl + {aztrUpper(title), aztrLower, nil}, // tr + } +) + +func makeUpper(t language.Tag, o options) transform.Transformer { + _, i, _ := matcher.Match(t) + f := upperFunc[i] + if f == nil { + return undUpper + } + return &simpleCaser{f: f} +} + +func makeLower(t language.Tag, o options) transform.Transformer { + _, i, _ := matcher.Match(t) + f := lowerFunc[i] + if o.noFinalSigma { + return &simpleCaser{f: f} + } + return &lowerCaser{ + first: f, + midWord: finalSigma(f), + } +} + +func makeTitle(t language.Tag, o options) transform.Transformer { + _, i, _ := matcher.Match(t) + x := &titleInfos[i] + lower := x.lower + if o.noLower { + lower = (*context).copy + } else if !o.noFinalSigma { + lower = finalSigma(lower) + } + return &titleCaser{ + title: x.title, + lower: lower, + rewrite: x.rewrite, + } +} + +// TODO: consider a similar special case for the fast majority lower case. This +// is a bit more involved so will require some more precise benchmarking to +// justify it. + +type undUpperCaser struct{ transform.NopResetter } + +// undUpperCaser implements the Transformer interface for doing an upper case +// mapping for the root locale (und). It eliminates the need for an allocation +// as it prevents escaping by not using function pointers. +func (t *undUpperCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + c := context{dst: dst, src: src, atEOF: atEOF} + for c.next() { + upper(&c) + c.checkpoint() + } + return c.ret() +} + +type simpleCaser struct { + context + f mapFunc +} + +// simpleCaser implements the Transformer interface for doing a case operation +// on a rune-by-rune basis. +func (t *simpleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + t.context = context{dst: dst, src: src, atEOF: atEOF} + c := &t.context + for c.next() && t.f(c) { + c.checkpoint() + } + return c.ret() +} + +// lowerCaser implements the Transformer interface. The default Unicode lower +// casing requires different treatment for the first and subsequent characters +// of a word, most notably to handle the Greek final Sigma. +type lowerCaser struct { + context + + first, midWord mapFunc +} + +func (t *lowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + t.context = context{dst: dst, src: src, atEOF: atEOF} + c := &t.context + + for isInterWord := true; c.next(); { + if isInterWord { + if c.info.isCased() { + if !t.first(c) { + break + } + isInterWord = false + } else if !c.copy() { + break + } + } else { + if c.info.isNotCasedAndNotCaseIgnorable() { + if !c.copy() { + break + } + isInterWord = true + } else if !t.midWord(c) { + break + } + } + c.checkpoint() + } + return c.ret() +} + +// titleCaser implements the Transformer interface. Title casing algorithms +// distinguish between the first letter of a word and subsequent letters of the +// same word. It uses state to avoid requiring a potentially infinite lookahead. +type titleCaser struct { + context + + // rune mappings used by the actual casing algorithms. + title, lower mapFunc + + rewrite func(*context) +} + +// Transform implements the standard Unicode title case algorithm as defined in +// Chapter 3 of The Unicode Standard: +// toTitlecase(X): Find the word boundaries in X according to Unicode Standard +// Annex #29, "Unicode Text Segmentation." For each word boundary, find the +// first cased character F following the word boundary. If F exists, map F to +// Titlecase_Mapping(F); then map all characters C between F and the following +// word boundary to Lowercase_Mapping(C). +func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + t.context = context{dst: dst, src: src, atEOF: atEOF, isMidWord: t.isMidWord} + c := &t.context + + if !c.next() { + return c.ret() + } + + for { + p := c.info + if t.rewrite != nil { + t.rewrite(c) + } + + wasMid := p.isCaseIgnorableAndNonBreakStarter() + // Break out of this loop on failure to ensure we do not modify the + // state incorrectly. + if p.isCased() && !p.isCaseIgnorableAndNotCased() { + if !c.isMidWord { + if !t.title(c) { + break + } + c.isMidWord = true + } else if !t.lower(c) { + break + } + } else if !c.copy() { + break + } + + // TODO: make this an "else if" if we can prove that no rune that does + // not match the first condition of the if statement can be a break. + if p.isBreak() { + c.isMidWord = false + } + + // As we save the state of the transformer, it is safe to call + // checkpoint after any successful write. + c.checkpoint() + + if !c.next() { + break + } + if wasMid && c.info.isCaseIgnorableAndNonBreakStarter() { + c.isMidWord = false + } + } + return c.ret() +} + +// finalSigma adds Greek final Sigma handing to another casing function. It +// determines whether a lowercased sigma should be σ or ς, by looking ahead for +// case-ignorables and a cased letters. +func finalSigma(f mapFunc) mapFunc { + return func(c *context) bool { + // ::NFD(); + // # 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA + // Σ } [:case-ignorable:]* [:cased:] → σ; + // [:cased:] [:case-ignorable:]* { Σ → ς; + // ::Any-Lower; + // ::NFC(); + + if !c.hasPrefix("Σ") { + return f(c) + } + + p := c.pDst + c.writeString("ς") + // We need to do one more iteration after maxIgnorable, as a cased + // letter is not an ignorable and may modify the result. + for i := 0; i < maxIgnorable+1; i++ { + if !c.next() { + return false + } + if !c.info.isCaseIgnorable() { + if c.info.isCased() { + // p+1 is guaranteed to be in bounds: if writing ς was + // successful, p+1 will contain the second byte of ς. If not, + // this function will have returned after c.next returned false. + c.dst[p+1]++ // ς → σ + } + c.unreadRune() + return true + } + // A case ignorable may also introduce a word break, so we may need + // to continue searching even after detecting a break. + c.isMidWord = c.isMidWord && !c.info.isBreak() + c.copy() + } + return true + } +} + +// elUpper implements Greek upper casing, which entails removing a predefined +// set of non-blocked modifiers. Note that these accents should not be removed +// for title casing! +// Example: "Οδός" -> "ΟΔΟΣ". +func elUpper(c *context) bool { + // From CLDR: + // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Above:]]*? { [\u0313\u0314\u0301\u0300\u0306\u0342\u0308\u0304] → ; + // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Iota_Subscript:]]*? { \u0345 → ; + + r, _ := utf8.DecodeRune(c.src[c.pSrc:]) + oldPDst := c.pDst + if !upper(c) { + return false + } + if !unicode.Is(unicode.Greek, r) { + return true + } + i := 0 + // Take the properties of the uppercased rune that is already written to the + // destination. This saves us the trouble of having to uppercase the + // decomposed rune again. + if b := norm.NFD.Properties(c.dst[oldPDst:]).Decomposition(); b != nil { + // Restore the destination position and process the decomposed rune. + r, sz := utf8.DecodeRune(b) + if r <= 0xFF { // See A.6.1 + return true + } + c.pDst = oldPDst + // Insert the first rune and ignore the modifiers. See A.6.2. + c.writeBytes(b[:sz]) + i = len(b[sz:]) / 2 // Greek modifiers are always of length 2. + } + + for ; i < maxIgnorable && c.next(); i++ { + switch r, _ := utf8.DecodeRune(c.src[c.pSrc:]); r { + // Above and Iota Subscript + case 0x0300, // U+0300 COMBINING GRAVE ACCENT + 0x0301, // U+0301 COMBINING ACUTE ACCENT + 0x0304, // U+0304 COMBINING MACRON + 0x0306, // U+0306 COMBINING BREVE + 0x0308, // U+0308 COMBINING DIAERESIS + 0x0313, // U+0313 COMBINING COMMA ABOVE + 0x0314, // U+0314 COMBINING REVERSED COMMA ABOVE + 0x0342, // U+0342 COMBINING GREEK PERISPOMENI + 0x0345: // U+0345 COMBINING GREEK YPOGEGRAMMENI + // No-op. Gobble the modifier. + + default: + switch v, _ := trie.lookup(c.src[c.pSrc:]); info(v).cccType() { + case cccZero: + c.unreadRune() + return true + + // We don't need to test for IotaSubscript as the only rune that + // qualifies (U+0345) was already excluded in the switch statement + // above. See A.4. + + case cccAbove: + return c.copy() + default: + // Some other modifier. We're still allowed to gobble Greek + // modifiers after this. + c.copy() + } + } + } + return i == maxIgnorable +} + +func ltLower(c *context) bool { + // From CLDR: + // # Introduce an explicit dot above when lowercasing capital I's and J's + // # whenever there are more accents above. + // # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) + // # 0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I + // # 004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J + // # 012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK + // # 00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE + // # 00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE + // # 0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE + // ::NFD(); + // I } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0307; + // J } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → j \u0307; + // Į } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → į \u0307; + // Ì → i \u0307 \u0300; + // Í → i \u0307 \u0301; + // Ĩ → i \u0307 \u0303; + // ::Any-Lower(); + // ::NFC(); + + i := 0 + if r := c.src[c.pSrc]; r < utf8.RuneSelf { + lower(c) + if r != 'I' && r != 'J' { + return true + } + } else { + p := norm.NFD.Properties(c.src[c.pSrc:]) + if d := p.Decomposition(); len(d) >= 3 && (d[0] == 'I' || d[0] == 'J') { + // UTF-8 optimization: the decomposition will only have an above + // modifier if the last rune of the decomposition is in [U+300-U+311]. + // In all other cases, a decomposition starting with I is always + // an I followed by modifiers that are not cased themselves. See A.2. + if d[1] == 0xCC && d[2] <= 0x91 { // A.2.4. + if !c.writeBytes(d[:1]) { + return false + } + c.dst[c.pDst-1] += 'a' - 'A' // lower + + // Assumption: modifier never changes on lowercase. See A.1. + // Assumption: all modifiers added have CCC = Above. See A.2.3. + return c.writeString("\u0307") && c.writeBytes(d[1:]) + } + // In all other cases the additional modifiers will have a CCC + // that is less than 230 (Above). We will insert the U+0307, if + // needed, after these modifiers so that a string in FCD form + // will remain so. See A.2.2. + lower(c) + i = 1 + } else { + return lower(c) + } + } + + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccZero: + c.unreadRune() + return true + case cccAbove: + return c.writeString("\u0307") && c.copy() // See A.1. + default: + c.copy() // See A.1. + } + } + return i == maxIgnorable +} + +func ltUpper(f mapFunc) mapFunc { + return func(c *context) bool { + // From CLDR: + // ::NFD(); + // [:Soft_Dotted:] [^[:ccc=Not_Reordered:][:ccc=Above:]]* { \u0307 → ; + // ::Any-Upper(); + // ::NFC(); + + // TODO: See A.5. A soft-dotted rune never has an exception. This would + // allow us to overload the exception bit and encode this property in + // info. Need to measure performance impact of this. + r, _ := utf8.DecodeRune(c.src[c.pSrc:]) + oldPDst := c.pDst + if !f(c) { + return false + } + if !unicode.Is(unicode.Soft_Dotted, r) { + return true + } + + // We don't need to do an NFD normalization, as a soft-dotted rune never + // contains U+0307. See A.3. + + i := 0 + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccZero: + c.unreadRune() + return true + case cccAbove: + if c.hasPrefix("\u0307") { + // We don't do a full NFC, but rather combine runes for + // some of the common cases. (Returning NFC or + // preserving normal form is neither a requirement nor + // a possibility anyway). + if !c.next() { + return false + } + if c.dst[oldPDst] == 'I' && c.pDst == oldPDst+1 && c.src[c.pSrc] == 0xcc { + s := "" + switch c.src[c.pSrc+1] { + case 0x80: // U+0300 COMBINING GRAVE ACCENT + s = "\u00cc" // U+00CC LATIN CAPITAL LETTER I WITH GRAVE + case 0x81: // U+0301 COMBINING ACUTE ACCENT + s = "\u00cd" // U+00CD LATIN CAPITAL LETTER I WITH ACUTE + case 0x83: // U+0303 COMBINING TILDE + s = "\u0128" // U+0128 LATIN CAPITAL LETTER I WITH TILDE + case 0x88: // U+0308 COMBINING DIAERESIS + s = "\u00cf" // U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS + default: + } + if s != "" { + c.pDst = oldPDst + return c.writeString(s) + } + } + } + return c.copy() + default: + c.copy() + } + } + return i == maxIgnorable + } +} + +func aztrUpper(f mapFunc) mapFunc { + return func(c *context) bool { + // i→İ; + if c.src[c.pSrc] == 'i' { + return c.writeString("İ") + } + return f(c) + } +} + +func aztrLower(c *context) (done bool) { + // From CLDR: + // # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri + // # 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE + // İ→i; + // # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. + // # This matches the behavior of the canonically equivalent I-dot_above + // # 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE + // # When lowercasing, unless an I is before a dot_above, it turns into a dotless i. + // # 0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I + // I([^[:ccc=Not_Reordered:][:ccc=Above:]]*)\u0307 → i$1 ; + // I→ı ; + // ::Any-Lower(); + if c.hasPrefix("\u0130") { // İ + return c.writeString("i") + } + if c.src[c.pSrc] != 'I' { + return lower(c) + } + + // We ignore the lower-case I for now, but insert it later when we know + // which form we need. + start := c.pSrc + c.sz + + i := 0 +Loop: + // We check for up to n ignorables before \u0307. As \u0307 is an + // ignorable as well, n is maxIgnorable-1. + for ; i < maxIgnorable && c.next(); i++ { + switch c.info.cccType() { + case cccAbove: + if c.hasPrefix("\u0307") { + return c.writeString("i") && c.writeBytes(c.src[start:c.pSrc]) // ignore U+0307 + } + done = true + break Loop + case cccZero: + c.unreadRune() + done = true + break Loop + default: + // We'll write this rune after we know which starter to use. + } + } + if i == maxIgnorable { + done = true + } + return c.writeString("ı") && c.writeBytes(c.src[start:c.pSrc+c.sz]) && done +} + +func nlTitle(c *context) bool { + // From CLDR: + // # Special titlecasing for Dutch initial "ij". + // ::Any-Title(); + // # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29) + // [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ; + if c.src[c.pSrc] != 'I' && c.src[c.pSrc] != 'i' { + return title(c) + } + + if !c.writeString("I") || !c.next() { + return false + } + if c.src[c.pSrc] == 'j' || c.src[c.pSrc] == 'J' { + return c.writeString("J") + } + c.unreadRune() + return true +} + +// Not part of CLDR, but see http://unicode.org/cldr/trac/ticket/7078. +func afnlRewrite(c *context) { + if c.hasPrefix("'") || c.hasPrefix("’") { + c.isMidWord = true + } +} diff --git a/vendor/golang.org/x/text/cases/tables.go b/vendor/golang.org/x/text/cases/tables.go new file mode 100644 index 0000000000..4257e57aef --- /dev/null +++ b/vendor/golang.org/x/text/cases/tables.go @@ -0,0 +1,2213 @@ +// This file was generated by go generate; DO NOT EDIT + +package cases + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var xorData string = "" + // Size: 185 bytes + "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + + "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + + "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + + "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + + "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + + "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + + "\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" + + "\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" + + "\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22" + +var exceptions string = "" + // Size: 1852 bytes + "\x00\x12\x10μΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x08I\x13\x18ʼnʼN\x11\x08sS" + + "\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj\x12\x12" + + "njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x18ǰJ̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10\x12DZDz" + + "\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x18Ȿ\x10\x18Ɀ\x10\x18Ɐ\x10\x18Ɑ\x10\x18Ɒ\x10" + + "\x18Ɜ\x10\x18Ɡ\x10\x18Ɥ\x10\x18Ɦ\x10\x18Ɪ\x10\x18Ɫ\x10\x18Ɬ\x10\x18Ɱ\x10" + + "\x18Ɽ\x10\x18Ʇ\x10\x18Ʝ\x10\x18Ʞ2\x10ιΙ\x160ΐΪ́\x160ΰΫ́\x12\x10σΣ" + + "\x12\x10βΒ\x12\x10θΘ\x12\x10φΦ\x12\x10πΠ\x12\x10κΚ\x12\x10ρΡ\x12\x10εΕ" + + "\x14$եւԵՒԵւ\x12\x10вВ\x12\x10дД\x12\x10оО\x12\x10сС\x12\x10тТ\x12\x10тТ" + + "\x12\x10ъЪ\x12\x10ѣѢ\x13\x18ꙋꙊ\x13\x18ẖH̱\x13\x18ẗT̈\x13\x18ẘW̊\x13" + + "\x18ẙY̊\x13\x18aʾAʾ\x13\x18ṡṠ\x12\x10ssß\x14 ὐΥ̓\x160ὒΥ̓̀\x160ὔΥ̓́" + + "\x160ὖΥ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" + + "\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" + + "\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" + + "\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" + + "Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" + + "\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" + + "\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" + + "\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" + + "ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14 ᾶΑ͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x10ι" + + "Ι\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14 ῆΗ͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ" + + "\x160ῒΪ̀\x160ΐΪ́\x14 ῖΙ͂\x160ῗΪ͂\x160ῢΫ̀\x160ΰΫ́\x14 ῤΡ" + + "̓\x14 ῦΥ͂\x160ῧΫ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ\x14 ῶΩ͂\x166ῶιΩ" + + "͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ" + + "\x10\x10Ⱥ\x10\x10Ⱦ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12" + + "\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12" + + "\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFFFf\x12\x12fiFIFi\x12\x12flFLFl\x13" + + "\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12stSTSt\x12\x12stSTSt\x14$մնՄՆՄն" + + "\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄխ" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *caseTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return caseValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := caseIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = caseIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = caseIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *caseTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return caseValues[c0] + } + i := caseIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = caseIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = caseIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// caseTrie. Total size: 11750 bytes (11.47 KiB). Checksum: 9ec26581a3006e0d. +type caseTrie struct{} + +func newCaseTrie(i int) *caseTrie { + return &caseTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 18: + return uint16(caseValues[n<<6+uint32(b)]) + default: + n -= 18 + return uint16(sparse.lookup(n, b)) + } +} + +// caseValues: 20 blocks, 1280 entries, 2560 bytes +// The third block is the zero block. +var caseValues = [1280]uint16{ + // Block 0x0, offset 0x0 + 0x27: 0x0014, + 0x2e: 0x0014, + 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, + 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0014, + // Block 0x1, offset 0x40 + 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, + 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, + 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, + 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, + 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, + 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, + 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, + 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, + 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, + 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, + 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, + 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, + 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, + 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, + 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, + 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, + 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, + 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, + 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, + 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, + // Block 0x4, offset 0x100 + 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x04cb, 0x105: 0x05c9, + 0x106: 0x06ca, 0x107: 0x078b, 0x108: 0x0889, 0x109: 0x098a, 0x10a: 0x0a4b, 0x10b: 0x0b49, + 0x10c: 0x0c4a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, + 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, + 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, + 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, + 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, + 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, + 0x130: 0x0d0a, 0x131: 0x0e0b, 0x132: 0x0f09, 0x133: 0x100a, 0x134: 0x0113, 0x135: 0x0112, + 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, + 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, + // Block 0x5, offset 0x140 + 0x140: 0x136a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, + 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, + 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x140a, 0x151: 0x14aa, + 0x152: 0x154a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, + 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x15ea, 0x15d: 0x0012, + 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x168a, 0x162: 0x0012, 0x163: 0x2052, + 0x164: 0x0012, 0x165: 0x172a, 0x166: 0x17ca, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, + 0x16a: 0x186a, 0x16b: 0x190a, 0x16c: 0x19aa, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, + 0x170: 0x0012, 0x171: 0x1a4a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, + 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, + 0x17c: 0x0012, 0x17d: 0x1aea, 0x17e: 0x0012, 0x17f: 0x0012, + // Block 0x6, offset 0x180 + 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, + 0x186: 0x0012, 0x187: 0x1b8a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, + 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, + 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, + 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x1c2a, + 0x19e: 0x1cca, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, + 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, + 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, + 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, + 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, + 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x1d6d, + 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, + 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, + 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, + 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, + 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, + 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, + 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, + 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, + 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, + 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, + // Block 0x8, offset 0x200 + 0x204: 0x0004, 0x205: 0x0004, + 0x206: 0x2a13, 0x207: 0x0014, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, + 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x1e2a, 0x211: 0x2013, + 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, + 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, + 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, + 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, + 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, + 0x230: 0x1fea, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, + 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, + 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, + // Block 0x9, offset 0x240 + 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x21aa, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, + 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, + 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x226a, 0x251: 0x232a, + 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x23ea, 0x256: 0x24aa, 0x257: 0x1812, + 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, + 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, + 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, + 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, + 0x270: 0x256a, 0x271: 0x262a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x26ea, + 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, + 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, + // Block 0xa, offset 0x280 + 0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812, + 0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813, + 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x372a, 0x291: 0x0812, + 0x292: 0x386a, 0x293: 0x0812, 0x294: 0x3a2a, 0x295: 0x0812, 0x296: 0x3bea, 0x297: 0x0812, + 0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813, + 0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812, + 0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813, + 0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813, + 0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152, + 0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52, + 0x2bc: 0x4d52, 0x2bd: 0x4d52, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x3daa, 0x2c1: 0x3f8a, 0x2c2: 0x416a, 0x2c3: 0x434a, 0x2c4: 0x452a, 0x2c5: 0x470a, + 0x2c6: 0x48ea, 0x2c7: 0x4aca, 0x2c8: 0x4ca9, 0x2c9: 0x4e89, 0x2ca: 0x5069, 0x2cb: 0x5249, + 0x2cc: 0x5429, 0x2cd: 0x5609, 0x2ce: 0x57e9, 0x2cf: 0x59c9, 0x2d0: 0x5baa, 0x2d1: 0x5d8a, + 0x2d2: 0x5f6a, 0x2d3: 0x614a, 0x2d4: 0x632a, 0x2d5: 0x650a, 0x2d6: 0x66ea, 0x2d7: 0x68ca, + 0x2d8: 0x6aa9, 0x2d9: 0x6c89, 0x2da: 0x6e69, 0x2db: 0x7049, 0x2dc: 0x7229, 0x2dd: 0x7409, + 0x2de: 0x75e9, 0x2df: 0x77c9, 0x2e0: 0x79aa, 0x2e1: 0x7b8a, 0x2e2: 0x7d6a, 0x2e3: 0x7f4a, + 0x2e4: 0x812a, 0x2e5: 0x830a, 0x2e6: 0x84ea, 0x2e7: 0x86ca, 0x2e8: 0x88a9, 0x2e9: 0x8a89, + 0x2ea: 0x8c69, 0x2eb: 0x8e49, 0x2ec: 0x9029, 0x2ed: 0x9209, 0x2ee: 0x93e9, 0x2ef: 0x95c9, + 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x97aa, 0x2f3: 0x99ca, 0x2f4: 0x9b6a, + 0x2f6: 0x9d2a, 0x2f7: 0x9e6a, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53, + 0x2fc: 0xa0e9, 0x2fd: 0x0004, 0x2fe: 0xa28a, 0x2ff: 0x0004, + // Block 0xc, offset 0x300 + 0x300: 0x0004, 0x301: 0x0004, 0x302: 0xa34a, 0x303: 0xa56a, 0x304: 0xa70a, + 0x306: 0xa8ca, 0x307: 0xaa0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153, + 0x30c: 0xac89, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812, + 0x312: 0xae2a, 0x313: 0xafea, 0x316: 0xb1aa, 0x317: 0xb2ea, + 0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004, + 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0xb4aa, 0x323: 0xb66a, + 0x324: 0xb82a, 0x325: 0x0912, 0x326: 0xb96a, 0x327: 0xbaaa, 0x328: 0x0813, 0x329: 0x0813, + 0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004, + 0x332: 0xbc6a, 0x333: 0xbe8a, 0x334: 0xc02a, + 0x336: 0xc1ea, 0x337: 0xc32a, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53, + 0x33c: 0xc5a9, 0x33d: 0x0004, 0x33e: 0x0004, + // Block 0xd, offset 0x340 + 0x342: 0x0013, + 0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013, + 0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013, + 0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013, + 0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013, + 0x364: 0x0013, 0x366: 0xc74b, 0x368: 0x0013, + 0x36a: 0xc80b, 0x36b: 0xc88b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012, + 0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010, + 0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012, + 0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013, + // Block 0xe, offset 0x380 + 0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13, + 0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13, + 0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052, + 0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352, + 0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12, + 0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12, + 0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552, + 0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552, + 0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952, + 0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952, + 0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952, + 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0xc94b, 0x3e3: 0x8853, + 0x3e4: 0xca0b, 0x3e5: 0xcaca, 0x3e6: 0xcb4a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313, + 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0xcbcb, 0x3ee: 0xcc8b, 0x3ef: 0xcd4b, + 0x3f0: 0xce0b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313, + 0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012, + 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0xcecb, 0x3ff: 0xcf8b, + // Block 0x10, offset 0x400 + 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, + 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0004, 0x40a: 0x0004, 0x40b: 0x0713, + 0x40c: 0x0712, 0x40d: 0xd04b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, + 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, + 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, + 0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112, + 0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112, + 0x42a: 0xd10b, 0x42b: 0xd1cb, 0x42c: 0xd28b, 0x42d: 0xd34b, 0x42e: 0xd40b, + 0x430: 0xd4cb, 0x431: 0xd58b, 0x432: 0xd64b, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112, + 0x436: 0x0113, 0x437: 0x0112, + // Block 0x11, offset 0x440 + 0x440: 0xd70a, 0x441: 0xd80a, 0x442: 0xd90a, 0x443: 0xda0a, 0x444: 0xdb6a, 0x445: 0xdcca, + 0x446: 0xddca, + 0x453: 0xdeca, 0x454: 0xe08a, 0x455: 0xe24a, 0x456: 0xe40a, 0x457: 0xe5ca, + 0x45d: 0x0010, + 0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010, + 0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010, + 0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010, + 0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010, + 0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010, + 0x47c: 0x0010, 0x47e: 0x0010, + // Block 0x12, offset 0x480 + 0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213, + 0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613, + 0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213, + 0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13, + 0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213, + 0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212, + 0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12, + 0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212, + 0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612, + 0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212, + 0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212, + // Block 0x13, offset 0x4c0 + 0x4c2: 0x0010, + 0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010, + 0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010, + 0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010, + 0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010, + 0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, + 0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010, + 0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, + 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, + 0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, + 0x4fc: 0x0010, 0x4fe: 0x0010, +} + +// caseIndex: 25 blocks, 1600 entries, 3200 bytes +// Block 0 is the zero block. +var caseIndex = [1600]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02, + 0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, + 0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20, + 0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, + 0xf0: 0x14, 0xf3: 0x16, + // Block 0x4, offset 0x100 + 0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30, + 0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38, + 0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40, + 0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48, + // Block 0x5, offset 0x140 + 0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23, + 0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, + 0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23, + 0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, + 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, + 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, + 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, + 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a, + // Block 0x6, offset 0x180 + 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a, + 0x192: 0x7b, 0x193: 0x0c, + 0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, + 0x1b8: 0x82, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87, + // Block 0x8, offset 0x200 + 0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23, + 0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23, + 0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23, + 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91, + 0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, + 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, + 0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23, + 0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23, + // Block 0x9, offset 0x240 + 0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23, + 0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23, + 0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23, + 0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23, + 0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23, + 0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23, + 0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23, + 0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23, + // Block 0xa, offset 0x280 + 0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23, + 0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23, + 0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23, + 0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2, + // Block 0xb, offset 0x2c0 + 0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, + 0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, + 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, + // Block 0xc, offset 0x300 + 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, + 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, + 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, + 0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3, + 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, + 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, + 0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, + // Block 0xd, offset 0x340 + 0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda, + 0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf, + 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, + 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, + 0x362: 0xeb, 0x363: 0xec, + 0x36b: 0xed, + 0x370: 0xee, 0x371: 0xef, 0x372: 0xf0, + // Block 0xe, offset 0x380 + 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, + 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf1, + 0x390: 0x23, 0x391: 0xf2, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf3, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, + 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, + 0x3d0: 0xf2, + // Block 0x10, offset 0x400 + 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, + 0x418: 0x23, 0x419: 0xf4, + // Block 0x11, offset 0x440 + 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, + 0x468: 0xed, 0x469: 0xf5, 0x46b: 0xf6, 0x46c: 0xf7, 0x46d: 0xf8, 0x46e: 0xf9, + 0x47c: 0x23, 0x47d: 0xfa, 0x47e: 0xfb, 0x47f: 0xfc, + // Block 0x12, offset 0x480 + 0x4b0: 0x23, 0x4b1: 0xfd, 0x4b2: 0xfe, + // Block 0x13, offset 0x4c0 + 0x4c5: 0xff, 0x4c6: 0x100, + 0x4c9: 0x101, + 0x4d0: 0x102, 0x4d1: 0x103, 0x4d2: 0x104, 0x4d3: 0x105, 0x4d4: 0x106, 0x4d5: 0x107, 0x4d6: 0x108, 0x4d7: 0x109, + 0x4d8: 0x10a, 0x4d9: 0x10b, 0x4da: 0x10c, 0x4db: 0x10d, 0x4dc: 0x10e, 0x4dd: 0x10f, 0x4de: 0x110, 0x4df: 0x111, + 0x4e8: 0x112, 0x4e9: 0x113, 0x4ea: 0x114, + // Block 0x14, offset 0x500 + 0x500: 0x115, + 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x116, 0x524: 0x10, 0x525: 0x117, + 0x538: 0x118, 0x539: 0x11, 0x53a: 0x119, + // Block 0x15, offset 0x540 + 0x544: 0x11a, 0x545: 0x11b, 0x546: 0x11c, + 0x54f: 0x11d, + // Block 0x16, offset 0x580 + 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, + 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x11e, 0x5c1: 0x11f, 0x5c4: 0x11f, 0x5c5: 0x11f, 0x5c6: 0x11f, 0x5c7: 0x120, + // Block 0x18, offset 0x600 + 0x620: 0x15, +} + +// sparseOffsets: 272 entries, 544 bytes +var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xc0, 0xce, 0xd4, 0xe2, 0xed, 0xf8, 0x103, 0x10f, 0x119, 0x124, 0x12f, 0x13b, 0x147, 0x14f, 0x157, 0x161, 0x16c, 0x178, 0x17e, 0x189, 0x18e, 0x196, 0x199, 0x19e, 0x1a2, 0x1a6, 0x1ad, 0x1b6, 0x1be, 0x1bf, 0x1c8, 0x1cf, 0x1d7, 0x1dd, 0x1e3, 0x1e8, 0x1ec, 0x1ef, 0x1f1, 0x1f4, 0x1f9, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x207, 0x20c, 0x210, 0x219, 0x21c, 0x21f, 0x225, 0x226, 0x231, 0x232, 0x233, 0x238, 0x245, 0x24d, 0x255, 0x25e, 0x267, 0x270, 0x275, 0x278, 0x281, 0x28e, 0x290, 0x297, 0x299, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c2, 0x2c8, 0x2c9, 0x2d7, 0x2dc, 0x2df, 0x2e4, 0x2e8, 0x2ee, 0x2f3, 0x2f6, 0x2fb, 0x300, 0x301, 0x307, 0x309, 0x30a, 0x30c, 0x30e, 0x311, 0x312, 0x314, 0x317, 0x31d, 0x321, 0x323, 0x329, 0x330, 0x334, 0x33d, 0x33e, 0x346, 0x34a, 0x34f, 0x357, 0x35d, 0x363, 0x36d, 0x372, 0x37b, 0x381, 0x388, 0x38c, 0x394, 0x396, 0x398, 0x39b, 0x39d, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a5, 0x3ab, 0x3b0, 0x3b2, 0x3b8, 0x3bb, 0x3bd, 0x3c3, 0x3c8, 0x3ca, 0x3cb, 0x3cc, 0x3cd, 0x3cf, 0x3d1, 0x3d3, 0x3d6, 0x3d8, 0x3db, 0x3e3, 0x3e6, 0x3ea, 0x3f2, 0x3f4, 0x3f5, 0x3f6, 0x3f8, 0x3fe, 0x400, 0x401, 0x403, 0x405, 0x407, 0x414, 0x415, 0x416, 0x41a, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x424, 0x428, 0x42e, 0x430, 0x437, 0x43a, 0x43e, 0x444, 0x44d, 0x453, 0x459, 0x463, 0x46d, 0x46f, 0x476, 0x47c, 0x482, 0x488, 0x48b, 0x491, 0x494, 0x49c, 0x49d, 0x4a4, 0x4a5, 0x4a8, 0x4a9, 0x4af, 0x4b2, 0x4ba, 0x4bb, 0x4bc, 0x4bd, 0x4be, 0x4c0, 0x4c2, 0x4c4, 0x4c8, 0x4c9, 0x4cb, 0x4cc, 0x4cd, 0x4cf, 0x4d4, 0x4d9, 0x4dd, 0x4de, 0x4e1, 0x4e5, 0x4f0, 0x4f4, 0x4fc, 0x501, 0x505, 0x508, 0x50c, 0x50f, 0x512, 0x517, 0x51b, 0x51f, 0x523, 0x527, 0x529, 0x52b, 0x52e, 0x533, 0x535, 0x53a, 0x543, 0x548, 0x549, 0x54c, 0x54d, 0x54e, 0x550, 0x551, 0x552} + +// sparseValues: 1362 entries, 5448 bytes +var sparseValues = [1362]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0004, lo: 0xa8, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xaa}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0004, lo: 0xaf, hi: 0xaf}, + {value: 0x0004, lo: 0xb4, hi: 0xb4}, + {value: 0x002a, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0004, lo: 0xb8, hi: 0xb8}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + // Block 0x1, offset 0x9 + {value: 0x2013, lo: 0x80, hi: 0x96}, + {value: 0x2013, lo: 0x98, hi: 0x9e}, + {value: 0x00ea, lo: 0x9f, hi: 0x9f}, + {value: 0x2012, lo: 0xa0, hi: 0xb6}, + {value: 0x2012, lo: 0xb8, hi: 0xbe}, + {value: 0x0252, lo: 0xbf, hi: 0xbf}, + // Block 0x2, offset 0xf + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x01eb, lo: 0xb0, hi: 0xb0}, + {value: 0x02ea, lo: 0xb1, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb7}, + {value: 0x0012, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x0553, lo: 0xbf, hi: 0xbf}, + // Block 0x3, offset 0x18 + {value: 0x0552, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x034a, lo: 0x89, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xb7}, + {value: 0x0253, lo: 0xb8, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x0316, lo: 0xbd, hi: 0xbe}, + {value: 0x044a, lo: 0xbf, hi: 0xbf}, + // Block 0x4, offset 0x24 + {value: 0x0117, lo: 0x80, hi: 0x9f}, + {value: 0x2f53, lo: 0xa0, hi: 0xa0}, + {value: 0x0012, lo: 0xa1, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xb3}, + {value: 0x0012, lo: 0xb4, hi: 0xb9}, + {value: 0x10cb, lo: 0xba, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x2953, lo: 0xbd, hi: 0xbd}, + {value: 0x11cb, lo: 0xbe, hi: 0xbe}, + {value: 0x12ca, lo: 0xbf, hi: 0xbf}, + // Block 0x5, offset 0x2e + {value: 0x0015, lo: 0x80, hi: 0x81}, + {value: 0x0004, lo: 0x82, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x91}, + {value: 0x0004, lo: 0x92, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0x97}, + {value: 0x0004, lo: 0x98, hi: 0x9f}, + {value: 0x0015, lo: 0xa0, hi: 0xa4}, + {value: 0x0004, lo: 0xa5, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xac}, + {value: 0x0004, lo: 0xad, hi: 0xad}, + {value: 0x0014, lo: 0xae, hi: 0xae}, + {value: 0x0004, lo: 0xaf, hi: 0xbf}, + // Block 0x6, offset 0x3a + {value: 0x0024, lo: 0x80, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbf}, + // Block 0x7, offset 0x3d + {value: 0x6553, lo: 0x80, hi: 0x8f}, + {value: 0x2013, lo: 0x90, hi: 0x9f}, + {value: 0x5f53, lo: 0xa0, hi: 0xaf}, + {value: 0x2012, lo: 0xb0, hi: 0xbf}, + // Block 0x8, offset 0x41 + {value: 0x5f52, lo: 0x80, hi: 0x8f}, + {value: 0x6552, lo: 0x90, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x9, offset 0x44 + {value: 0x0117, lo: 0x80, hi: 0x81}, + {value: 0x0024, lo: 0x83, hi: 0x87}, + {value: 0x0014, lo: 0x88, hi: 0x89}, + {value: 0x0117, lo: 0x8a, hi: 0xbf}, + // Block 0xa, offset 0x48 + {value: 0x0f13, lo: 0x80, hi: 0x80}, + {value: 0x0316, lo: 0x81, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0316, lo: 0x85, hi: 0x86}, + {value: 0x0f16, lo: 0x87, hi: 0x88}, + {value: 0x0316, lo: 0x89, hi: 0x8a}, + {value: 0x0716, lo: 0x8b, hi: 0x8c}, + {value: 0x0316, lo: 0x8d, hi: 0x8e}, + {value: 0x0f12, lo: 0x8f, hi: 0x8f}, + {value: 0x0117, lo: 0x90, hi: 0xbf}, + // Block 0xb, offset 0x52 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x6553, lo: 0xb1, hi: 0xbf}, + // Block 0xc, offset 0x54 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6853, lo: 0x90, hi: 0x96}, + {value: 0x0014, lo: 0x99, hi: 0x99}, + {value: 0x6552, lo: 0xa1, hi: 0xaf}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0xd, offset 0x59 + {value: 0x6852, lo: 0x80, hi: 0x86}, + {value: 0x27aa, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0024, lo: 0x92, hi: 0x95}, + {value: 0x0034, lo: 0x96, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x99}, + {value: 0x0034, lo: 0x9a, hi: 0x9b}, + {value: 0x0024, lo: 0x9c, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa7}, + {value: 0x0024, lo: 0xa8, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xbd}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xe, offset 0x69 + {value: 0x0034, lo: 0x81, hi: 0x82}, + {value: 0x0024, lo: 0x84, hi: 0x84}, + {value: 0x0034, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + // Block 0xf, offset 0x70 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0024, lo: 0x90, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0014, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x10, offset 0x75 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x8a}, + {value: 0x0034, lo: 0x8b, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9c}, + {value: 0x0024, lo: 0x9d, hi: 0x9e}, + {value: 0x0034, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0034, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x11, offset 0x83 + {value: 0x0010, lo: 0x80, hi: 0xbf}, + // Block 0x12, offset 0x84 + {value: 0x0010, lo: 0x80, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0024, lo: 0x9f, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xaa, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x13, offset 0x92 + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0034, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0034, lo: 0xb1, hi: 0xb1}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbc}, + {value: 0x0024, lo: 0xbd, hi: 0xbd}, + {value: 0x0034, lo: 0xbe, hi: 0xbe}, + {value: 0x0024, lo: 0xbf, hi: 0xbf}, + // Block 0x14, offset 0xa1 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0024, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x88}, + {value: 0x0024, lo: 0x89, hi: 0x8a}, + {value: 0x0010, lo: 0x8d, hi: 0xbf}, + // Block 0x15, offset 0xab + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x16, offset 0xae + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0024, lo: 0xab, hi: 0xb1}, + {value: 0x0034, lo: 0xb2, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + // Block 0x17, offset 0xb4 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0024, lo: 0x96, hi: 0x99}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0xa3}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xad}, + // Block 0x18, offset 0xbc + {value: 0x0010, lo: 0x80, hi: 0x98}, + {value: 0x0034, lo: 0x99, hi: 0x9b}, + // Block 0x19, offset 0xbe + {value: 0x0010, lo: 0xa0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbd}, + // Block 0x1a, offset 0xc0 + {value: 0x0024, lo: 0x94, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0034, lo: 0xa3, hi: 0xa3}, + {value: 0x0024, lo: 0xa4, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0024, lo: 0xaa, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xb2}, + {value: 0x0024, lo: 0xb3, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbf}, + // Block 0x1b, offset 0xce + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1c, offset 0xd4 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0024, lo: 0x93, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x98, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0x1d, offset 0xe2 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb6, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x1e, offset 0xed + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xb1}, + // Block 0x1f, offset 0xf8 + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x20, offset 0x103 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x91, hi: 0x91}, + {value: 0x0010, lo: 0x99, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x21, offset 0x10f + {value: 0x0014, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x22, offset 0x119 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x85}, + {value: 0x0014, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x89, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + // Block 0x23, offset 0x124 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x24, offset 0x12f + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9c, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + // Block 0x25, offset 0x13b + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8a}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + {value: 0x0010, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0010, lo: 0xa8, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x26, offset 0x147 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x82}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x27, offset 0x14f + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb9}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbf}, + // Block 0x28, offset 0x157 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x88}, + {value: 0x0014, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0034, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + // Block 0x29, offset 0x161 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x2a, offset 0x16c + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x95, hi: 0x96}, + {value: 0x0010, lo: 0x9e, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb1, hi: 0xb2}, + // Block 0x2b, offset 0x178 + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0xba}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x2c, offset 0x17e + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8e, hi: 0x8e}, + {value: 0x0010, lo: 0x94, hi: 0x97}, + {value: 0x0010, lo: 0x9f, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa3}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xba, hi: 0xbf}, + // Block 0x2d, offset 0x189 + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x96}, + {value: 0x0010, lo: 0x9a, hi: 0xb1}, + {value: 0x0010, lo: 0xb3, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x2e, offset 0x18e + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x8f, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x94}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9f}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + // Block 0x2f, offset 0x196 + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xba}, + // Block 0x30, offset 0x199 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x31, offset 0x19e + {value: 0x0014, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb4, hi: 0xb7}, + {value: 0x0034, lo: 0xb8, hi: 0xb9}, + {value: 0x0014, lo: 0xbb, hi: 0xbc}, + // Block 0x32, offset 0x1a2 + {value: 0x0004, lo: 0x86, hi: 0x86}, + {value: 0x0034, lo: 0x88, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x33, offset 0x1a6 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0034, lo: 0x98, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0034, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x34, offset 0x1ad + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xac}, + {value: 0x0034, lo: 0xb1, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xba, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x1b6 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0024, lo: 0x82, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0024, lo: 0x86, hi: 0x87}, + {value: 0x0010, lo: 0x88, hi: 0x8c}, + {value: 0x0014, lo: 0x8d, hi: 0x97}, + {value: 0x0014, lo: 0x99, hi: 0xbc}, + // Block 0x36, offset 0x1be + {value: 0x0034, lo: 0x86, hi: 0x86}, + // Block 0x37, offset 0x1bf + {value: 0x0010, lo: 0xab, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + {value: 0x0010, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbe}, + // Block 0x38, offset 0x1c8 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x96, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0x9e, hi: 0xa0}, + {value: 0x0010, lo: 0xa2, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xad}, + {value: 0x0014, lo: 0xb1, hi: 0xb4}, + // Block 0x39, offset 0x1cf + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x6c53, lo: 0xa0, hi: 0xbf}, + // Block 0x3a, offset 0x1d7 + {value: 0x7053, lo: 0x80, hi: 0x85}, + {value: 0x7053, lo: 0x87, hi: 0x87}, + {value: 0x7053, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xba}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x3b, offset 0x1dd + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x9a, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x3c, offset 0x1e3 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x3d, offset 0x1e8 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x82, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3e, offset 0x1ec + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0010, lo: 0x92, hi: 0x95}, + {value: 0x0010, lo: 0x98, hi: 0xbf}, + // Block 0x3f, offset 0x1ef + {value: 0x0010, lo: 0x80, hi: 0x9a}, + {value: 0x0024, lo: 0x9d, hi: 0x9f}, + // Block 0x40, offset 0x1f1 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x7453, lo: 0xa0, hi: 0xaf}, + {value: 0x7853, lo: 0xb0, hi: 0xbf}, + // Block 0x41, offset 0x1f4 + {value: 0x7c53, lo: 0x80, hi: 0x8f}, + {value: 0x8053, lo: 0x90, hi: 0x9f}, + {value: 0x7c53, lo: 0xa0, hi: 0xaf}, + {value: 0x0813, lo: 0xb0, hi: 0xb5}, + {value: 0x0892, lo: 0xb8, hi: 0xbd}, + // Block 0x42, offset 0x1f9 + {value: 0x0010, lo: 0x81, hi: 0xbf}, + // Block 0x43, offset 0x1fa + {value: 0x0010, lo: 0x80, hi: 0xac}, + {value: 0x0010, lo: 0xaf, hi: 0xbf}, + // Block 0x44, offset 0x1fc + {value: 0x0010, lo: 0x81, hi: 0x9a}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x45, offset 0x1fe + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xae, hi: 0xb8}, + // Block 0x46, offset 0x200 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + {value: 0x0010, lo: 0x8e, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0034, lo: 0x94, hi: 0x94}, + {value: 0x0010, lo: 0xa0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + // Block 0x47, offset 0x207 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0014, lo: 0x92, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xac}, + {value: 0x0010, lo: 0xae, hi: 0xb0}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + // Block 0x48, offset 0x20c + {value: 0x0014, lo: 0xb4, hi: 0xb5}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0x49, offset 0x210 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0014, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0014, lo: 0x89, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0004, lo: 0x97, hi: 0x97}, + {value: 0x0024, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0x4a, offset 0x219 + {value: 0x0014, lo: 0x8b, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x4b, offset 0x21c + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb7}, + // Block 0x4c, offset 0x21f + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x4d, offset 0x225 + {value: 0x0010, lo: 0x80, hi: 0xb5}, + // Block 0x4e, offset 0x226 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xb9}, + {value: 0x0024, lo: 0xba, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbb}, + // Block 0x4f, offset 0x231 + {value: 0x0010, lo: 0x86, hi: 0x8f}, + // Block 0x50, offset 0x232 + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x51, offset 0x233 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0024, lo: 0x97, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x98}, + {value: 0x0010, lo: 0x99, hi: 0x9a}, + {value: 0x0014, lo: 0x9b, hi: 0x9b}, + // Block 0x52, offset 0x238 + {value: 0x0010, lo: 0x95, hi: 0x95}, + {value: 0x0014, lo: 0x96, hi: 0x96}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0014, lo: 0x98, hi: 0x9e}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa2}, + {value: 0x0010, lo: 0xa3, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xac}, + {value: 0x0010, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0024, lo: 0xb5, hi: 0xbc}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x53, offset 0x245 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xa7, hi: 0xa7}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + {value: 0x0034, lo: 0xb5, hi: 0xba}, + {value: 0x0024, lo: 0xbb, hi: 0xbc}, + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0x54, offset 0x24d + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x55, offset 0x255 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x83}, + {value: 0x0030, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x8b}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xab, hi: 0xab}, + {value: 0x0034, lo: 0xac, hi: 0xac}, + {value: 0x0024, lo: 0xad, hi: 0xb3}, + // Block 0x56, offset 0x25e + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0030, lo: 0xaa, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xbf}, + // Block 0x57, offset 0x267 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa9}, + {value: 0x0010, lo: 0xaa, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0030, lo: 0xb2, hi: 0xb3}, + // Block 0x58, offset 0x270 + {value: 0x0010, lo: 0x80, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0x59, offset 0x275 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8d, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x5a, offset 0x278 + {value: 0x296a, lo: 0x80, hi: 0x80}, + {value: 0x2a2a, lo: 0x81, hi: 0x81}, + {value: 0x2aea, lo: 0x82, hi: 0x82}, + {value: 0x2baa, lo: 0x83, hi: 0x83}, + {value: 0x2c6a, lo: 0x84, hi: 0x84}, + {value: 0x2d2a, lo: 0x85, hi: 0x85}, + {value: 0x2dea, lo: 0x86, hi: 0x86}, + {value: 0x2eaa, lo: 0x87, hi: 0x87}, + {value: 0x2f6a, lo: 0x88, hi: 0x88}, + // Block 0x5b, offset 0x281 + {value: 0x0024, lo: 0x90, hi: 0x92}, + {value: 0x0034, lo: 0x94, hi: 0x99}, + {value: 0x0024, lo: 0x9a, hi: 0x9b}, + {value: 0x0034, lo: 0x9c, hi: 0x9f}, + {value: 0x0024, lo: 0xa0, hi: 0xa0}, + {value: 0x0010, lo: 0xa1, hi: 0xa1}, + {value: 0x0034, lo: 0xa2, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xb3}, + {value: 0x0024, lo: 0xb4, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb6}, + {value: 0x0024, lo: 0xb8, hi: 0xb9}, + // Block 0x5c, offset 0x28e + {value: 0x0012, lo: 0x80, hi: 0xab}, + {value: 0x0015, lo: 0xac, hi: 0xbf}, + // Block 0x5d, offset 0x290 + {value: 0x0015, lo: 0x80, hi: 0xaa}, + {value: 0x0012, lo: 0xab, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb8}, + {value: 0x8452, lo: 0xb9, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbc}, + {value: 0x8852, lo: 0xbd, hi: 0xbd}, + {value: 0x0012, lo: 0xbe, hi: 0xbf}, + // Block 0x5e, offset 0x297 + {value: 0x0012, lo: 0x80, hi: 0x9a}, + {value: 0x0015, lo: 0x9b, hi: 0xbf}, + // Block 0x5f, offset 0x299 + {value: 0x0024, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0024, lo: 0x83, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0024, lo: 0x8b, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x90}, + {value: 0x0024, lo: 0x91, hi: 0xb5}, + {value: 0x0024, lo: 0xbb, hi: 0xbb}, + {value: 0x0034, lo: 0xbc, hi: 0xbd}, + {value: 0x0024, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x60, offset 0x2a4 + {value: 0x0117, lo: 0x80, hi: 0xbf}, + // Block 0x61, offset 0x2a5 + {value: 0x0117, lo: 0x80, hi: 0x95}, + {value: 0x306a, lo: 0x96, hi: 0x96}, + {value: 0x316a, lo: 0x97, hi: 0x97}, + {value: 0x326a, lo: 0x98, hi: 0x98}, + {value: 0x336a, lo: 0x99, hi: 0x99}, + {value: 0x346a, lo: 0x9a, hi: 0x9a}, + {value: 0x356a, lo: 0x9b, hi: 0x9b}, + {value: 0x0012, lo: 0x9c, hi: 0x9d}, + {value: 0x366b, lo: 0x9e, hi: 0x9e}, + {value: 0x0012, lo: 0x9f, hi: 0x9f}, + {value: 0x0117, lo: 0xa0, hi: 0xbf}, + // Block 0x62, offset 0x2b0 + {value: 0x0812, lo: 0x80, hi: 0x87}, + {value: 0x0813, lo: 0x88, hi: 0x8f}, + {value: 0x0812, lo: 0x90, hi: 0x95}, + {value: 0x0813, lo: 0x98, hi: 0x9d}, + {value: 0x0812, lo: 0xa0, hi: 0xa7}, + {value: 0x0813, lo: 0xa8, hi: 0xaf}, + {value: 0x0812, lo: 0xb0, hi: 0xb7}, + {value: 0x0813, lo: 0xb8, hi: 0xbf}, + // Block 0x63, offset 0x2b8 + {value: 0x0004, lo: 0x8b, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0004, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8f}, + {value: 0x0014, lo: 0x98, hi: 0x99}, + {value: 0x0014, lo: 0xa4, hi: 0xa4}, + {value: 0x0014, lo: 0xa7, hi: 0xa7}, + {value: 0x0014, lo: 0xaa, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xaf}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x64, offset 0x2c2 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x94, hi: 0x94}, + {value: 0x0014, lo: 0xa0, hi: 0xa4}, + {value: 0x0014, lo: 0xa6, hi: 0xaf}, + {value: 0x0015, lo: 0xb1, hi: 0xb1}, + {value: 0x0015, lo: 0xbf, hi: 0xbf}, + // Block 0x65, offset 0x2c8 + {value: 0x0015, lo: 0x90, hi: 0x9c}, + // Block 0x66, offset 0x2c9 + {value: 0x0024, lo: 0x90, hi: 0x91}, + {value: 0x0034, lo: 0x92, hi: 0x93}, + {value: 0x0024, lo: 0x94, hi: 0x97}, + {value: 0x0034, lo: 0x98, hi: 0x9a}, + {value: 0x0024, lo: 0x9b, hi: 0x9c}, + {value: 0x0014, lo: 0x9d, hi: 0xa0}, + {value: 0x0024, lo: 0xa1, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa4}, + {value: 0x0034, lo: 0xa5, hi: 0xa6}, + {value: 0x0024, lo: 0xa7, hi: 0xa7}, + {value: 0x0034, lo: 0xa8, hi: 0xa8}, + {value: 0x0024, lo: 0xa9, hi: 0xa9}, + {value: 0x0034, lo: 0xaa, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + // Block 0x67, offset 0x2d7 + {value: 0x0016, lo: 0x85, hi: 0x86}, + {value: 0x0012, lo: 0x87, hi: 0x89}, + {value: 0x9d52, lo: 0x8e, hi: 0x8e}, + {value: 0x1013, lo: 0xa0, hi: 0xaf}, + {value: 0x1012, lo: 0xb0, hi: 0xbf}, + // Block 0x68, offset 0x2dc + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0716, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x88}, + // Block 0x69, offset 0x2df + {value: 0xa053, lo: 0xb6, hi: 0xb7}, + {value: 0xa353, lo: 0xb8, hi: 0xb9}, + {value: 0xa653, lo: 0xba, hi: 0xbb}, + {value: 0xa353, lo: 0xbc, hi: 0xbd}, + {value: 0xa053, lo: 0xbe, hi: 0xbf}, + // Block 0x6a, offset 0x2e4 + {value: 0x3013, lo: 0x80, hi: 0x8f}, + {value: 0x6553, lo: 0x90, hi: 0x9f}, + {value: 0xa953, lo: 0xa0, hi: 0xae}, + {value: 0x3012, lo: 0xb0, hi: 0xbf}, + // Block 0x6b, offset 0x2e8 + {value: 0x0117, lo: 0x80, hi: 0xa3}, + {value: 0x0012, lo: 0xa4, hi: 0xa4}, + {value: 0x0716, lo: 0xab, hi: 0xac}, + {value: 0x0316, lo: 0xad, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xb3}, + // Block 0x6c, offset 0x2ee + {value: 0x6c52, lo: 0x80, hi: 0x9f}, + {value: 0x7052, lo: 0xa0, hi: 0xa5}, + {value: 0x7052, lo: 0xa7, hi: 0xa7}, + {value: 0x7052, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x6d, offset 0x2f3 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0x6e, offset 0x2f6 + {value: 0x0010, lo: 0x80, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0010, lo: 0xb0, hi: 0xb6}, + {value: 0x0010, lo: 0xb8, hi: 0xbe}, + // Block 0x6f, offset 0x2fb + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x8e}, + {value: 0x0010, lo: 0x90, hi: 0x96}, + {value: 0x0010, lo: 0x98, hi: 0x9e}, + {value: 0x0024, lo: 0xa0, hi: 0xbf}, + // Block 0x70, offset 0x300 + {value: 0x0014, lo: 0xaf, hi: 0xaf}, + // Block 0x71, offset 0x301 + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0xaa, hi: 0xad}, + {value: 0x0030, lo: 0xae, hi: 0xaf}, + {value: 0x0004, lo: 0xb1, hi: 0xb5}, + {value: 0x0014, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + // Block 0x72, offset 0x307 + {value: 0x0034, lo: 0x99, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9e}, + // Block 0x73, offset 0x309 + {value: 0x0004, lo: 0xbc, hi: 0xbe}, + // Block 0x74, offset 0x30a + {value: 0x0010, lo: 0x85, hi: 0xad}, + {value: 0x0010, lo: 0xb1, hi: 0xbf}, + // Block 0x75, offset 0x30c + {value: 0x0010, lo: 0x80, hi: 0x8e}, + {value: 0x0010, lo: 0xa0, hi: 0xba}, + // Block 0x76, offset 0x30e + {value: 0x0010, lo: 0x80, hi: 0x94}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0x96, hi: 0xbf}, + // Block 0x77, offset 0x311 + {value: 0x0010, lo: 0x80, hi: 0x8c}, + // Block 0x78, offset 0x312 + {value: 0x0010, lo: 0x90, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + // Block 0x79, offset 0x314 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0xab}, + // Block 0x7a, offset 0x317 + {value: 0x0117, lo: 0x80, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xae}, + {value: 0x0024, lo: 0xaf, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb2}, + {value: 0x0024, lo: 0xb4, hi: 0xbd}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x7b, offset 0x31d + {value: 0x0117, lo: 0x80, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9d}, + {value: 0x0024, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0x7c, offset 0x321 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb1}, + // Block 0x7d, offset 0x323 + {value: 0x0004, lo: 0x80, hi: 0x96}, + {value: 0x0014, lo: 0x97, hi: 0x9f}, + {value: 0x0004, lo: 0xa0, hi: 0xa1}, + {value: 0x0117, lo: 0xa2, hi: 0xaf}, + {value: 0x0012, lo: 0xb0, hi: 0xb1}, + {value: 0x0117, lo: 0xb2, hi: 0xbf}, + // Block 0x7e, offset 0x329 + {value: 0x0117, lo: 0x80, hi: 0xaf}, + {value: 0x0015, lo: 0xb0, hi: 0xb0}, + {value: 0x0012, lo: 0xb1, hi: 0xb8}, + {value: 0x0316, lo: 0xb9, hi: 0xba}, + {value: 0x0716, lo: 0xbb, hi: 0xbc}, + {value: 0x8453, lo: 0xbd, hi: 0xbd}, + {value: 0x0117, lo: 0xbe, hi: 0xbf}, + // Block 0x7f, offset 0x330 + {value: 0x0010, lo: 0xb7, hi: 0xb7}, + {value: 0x0015, lo: 0xb8, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbf}, + // Block 0x80, offset 0x334 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0014, lo: 0x82, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8b}, + {value: 0x0010, lo: 0x8c, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa6}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + // Block 0x81, offset 0x33d + {value: 0x0010, lo: 0x80, hi: 0xb3}, + // Block 0x82, offset 0x33e + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0034, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x85, hi: 0x85}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0024, lo: 0xa0, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb7}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x83, offset 0x346 + {value: 0x0010, lo: 0x80, hi: 0xa5}, + {value: 0x0014, lo: 0xa6, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x84, offset 0x34a + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0014, lo: 0x87, hi: 0x91}, + {value: 0x0010, lo: 0x92, hi: 0x92}, + {value: 0x0030, lo: 0x93, hi: 0x93}, + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0x85, offset 0x34f + {value: 0x0014, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xb9}, + {value: 0x0010, lo: 0xba, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0x86, offset 0x357 + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0004, lo: 0xa6, hi: 0xa6}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x87, offset 0x35d + {value: 0x0010, lo: 0x80, hi: 0xa8}, + {value: 0x0014, lo: 0xa9, hi: 0xae}, + {value: 0x0010, lo: 0xaf, hi: 0xb0}, + {value: 0x0014, lo: 0xb1, hi: 0xb2}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0x88, offset 0x363 + {value: 0x0010, lo: 0x80, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x8b}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0010, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbd}, + // Block 0x89, offset 0x36d + {value: 0x0024, lo: 0xb0, hi: 0xb0}, + {value: 0x0024, lo: 0xb2, hi: 0xb3}, + {value: 0x0034, lo: 0xb4, hi: 0xb4}, + {value: 0x0024, lo: 0xb7, hi: 0xb8}, + {value: 0x0024, lo: 0xbe, hi: 0xbf}, + // Block 0x8a, offset 0x372 + {value: 0x0024, lo: 0x81, hi: 0x81}, + {value: 0x0004, lo: 0x9d, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xab}, + {value: 0x0014, lo: 0xac, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb2, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + // Block 0x8b, offset 0x37b + {value: 0x0010, lo: 0x81, hi: 0x86}, + {value: 0x0010, lo: 0x89, hi: 0x8e}, + {value: 0x0010, lo: 0x91, hi: 0x96}, + {value: 0x0010, lo: 0xa0, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0x8c, offset 0x381 + {value: 0x0012, lo: 0x80, hi: 0x92}, + {value: 0xac52, lo: 0x93, hi: 0x93}, + {value: 0x0012, lo: 0x94, hi: 0x9a}, + {value: 0x0004, lo: 0x9b, hi: 0x9b}, + {value: 0x0015, lo: 0x9c, hi: 0x9f}, + {value: 0x0012, lo: 0xa0, hi: 0xa5}, + {value: 0x74d2, lo: 0xb0, hi: 0xbf}, + // Block 0x8d, offset 0x388 + {value: 0x78d2, lo: 0x80, hi: 0x8f}, + {value: 0x7cd2, lo: 0x90, hi: 0x9f}, + {value: 0x80d2, lo: 0xa0, hi: 0xaf}, + {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, + // Block 0x8e, offset 0x38c + {value: 0x0010, lo: 0x80, hi: 0xa4}, + {value: 0x0014, lo: 0xa5, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa7}, + {value: 0x0014, lo: 0xa8, hi: 0xa8}, + {value: 0x0010, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0034, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0x8f, offset 0x394 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0x90, offset 0x396 + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x8b, hi: 0xbb}, + // Block 0x91, offset 0x398 + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x86, hi: 0xbf}, + // Block 0x92, offset 0x39b + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0004, lo: 0xb2, hi: 0xbf}, + // Block 0x93, offset 0x39d + {value: 0x0004, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x93, hi: 0xbf}, + // Block 0x94, offset 0x39f + {value: 0x0010, lo: 0x80, hi: 0xbd}, + // Block 0x95, offset 0x3a0 + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0x96, offset 0x3a1 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0xbf}, + // Block 0x97, offset 0x3a3 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0xb0, hi: 0xbb}, + // Block 0x98, offset 0x3a5 + {value: 0x0014, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x93, hi: 0x93}, + {value: 0x0024, lo: 0xa0, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xad}, + {value: 0x0024, lo: 0xae, hi: 0xaf}, + {value: 0x0010, lo: 0xb3, hi: 0xb4}, + // Block 0x99, offset 0x3ab + {value: 0x0010, lo: 0x8d, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0x92}, + {value: 0x0014, lo: 0x95, hi: 0x95}, + {value: 0x0010, lo: 0xb0, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0x9a, offset 0x3b0 + {value: 0x0010, lo: 0x80, hi: 0xbc}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0x9b, offset 0x3b2 + {value: 0x0014, lo: 0x87, hi: 0x87}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0014, lo: 0x9a, hi: 0x9a}, + {value: 0x5f53, lo: 0xa1, hi: 0xba}, + {value: 0x0004, lo: 0xbe, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0x9c, offset 0x3b8 + {value: 0x0004, lo: 0x80, hi: 0x80}, + {value: 0x5f52, lo: 0x81, hi: 0x9a}, + {value: 0x0004, lo: 0xb0, hi: 0xb0}, + // Block 0x9d, offset 0x3bb + {value: 0x0014, lo: 0x9e, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xbe}, + // Block 0x9e, offset 0x3bd + {value: 0x0010, lo: 0x82, hi: 0x87}, + {value: 0x0010, lo: 0x8a, hi: 0x8f}, + {value: 0x0010, lo: 0x92, hi: 0x97}, + {value: 0x0010, lo: 0x9a, hi: 0x9c}, + {value: 0x0004, lo: 0xa3, hi: 0xa3}, + {value: 0x0014, lo: 0xb9, hi: 0xbb}, + // Block 0x9f, offset 0x3c3 + {value: 0x0010, lo: 0x80, hi: 0x8b}, + {value: 0x0010, lo: 0x8d, hi: 0xa6}, + {value: 0x0010, lo: 0xa8, hi: 0xba}, + {value: 0x0010, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xa0, offset 0x3c8 + {value: 0x0010, lo: 0x80, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x9d}, + // Block 0xa1, offset 0x3ca + {value: 0x0010, lo: 0x80, hi: 0xba}, + // Block 0xa2, offset 0x3cb + {value: 0x0010, lo: 0x80, hi: 0xb4}, + // Block 0xa3, offset 0x3cc + {value: 0x0034, lo: 0xbd, hi: 0xbd}, + // Block 0xa4, offset 0x3cd + {value: 0x0010, lo: 0x80, hi: 0x9c}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa5, offset 0x3cf + {value: 0x0010, lo: 0x80, hi: 0x90}, + {value: 0x0034, lo: 0xa0, hi: 0xa0}, + // Block 0xa6, offset 0x3d1 + {value: 0x0010, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xa7, offset 0x3d3 + {value: 0x0010, lo: 0x80, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0xb5}, + {value: 0x0024, lo: 0xb6, hi: 0xba}, + // Block 0xa8, offset 0x3d6 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xbf}, + // Block 0xa9, offset 0x3d8 + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x91, hi: 0x95}, + // Block 0xaa, offset 0x3db + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x97}, + {value: 0xaf53, lo: 0x98, hi: 0x9f}, + {value: 0xb253, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbf}, + // Block 0xab, offset 0x3e3 + {value: 0xaf52, lo: 0x80, hi: 0x87}, + {value: 0xb252, lo: 0x88, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0xbf}, + // Block 0xac, offset 0x3e6 + {value: 0x0010, lo: 0x80, hi: 0x9d}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0xb253, lo: 0xb0, hi: 0xb7}, + {value: 0xaf53, lo: 0xb8, hi: 0xbf}, + // Block 0xad, offset 0x3ea + {value: 0x2813, lo: 0x80, hi: 0x87}, + {value: 0x3813, lo: 0x88, hi: 0x8f}, + {value: 0x2813, lo: 0x90, hi: 0x93}, + {value: 0xb252, lo: 0x98, hi: 0x9f}, + {value: 0xaf52, lo: 0xa0, hi: 0xa7}, + {value: 0x2812, lo: 0xa8, hi: 0xaf}, + {value: 0x3812, lo: 0xb0, hi: 0xb7}, + {value: 0x2812, lo: 0xb8, hi: 0xbb}, + // Block 0xae, offset 0x3f2 + {value: 0x0010, lo: 0x80, hi: 0xa7}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xaf, offset 0x3f4 + {value: 0x0010, lo: 0x80, hi: 0xa3}, + // Block 0xb0, offset 0x3f5 + {value: 0x0010, lo: 0x80, hi: 0xb6}, + // Block 0xb1, offset 0x3f6 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xa7}, + // Block 0xb2, offset 0x3f8 + {value: 0x0010, lo: 0x80, hi: 0x85}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xb5}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0010, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x3fe + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb6}, + // Block 0xb4, offset 0x400 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + // Block 0xb5, offset 0x401 + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb5}, + // Block 0xb6, offset 0x403 + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb9}, + // Block 0xb7, offset 0x405 + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0010, lo: 0xbe, hi: 0xbf}, + // Block 0xb8, offset 0x407 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x83}, + {value: 0x0014, lo: 0x85, hi: 0x86}, + {value: 0x0014, lo: 0x8c, hi: 0x8c}, + {value: 0x0034, lo: 0x8d, hi: 0x8d}, + {value: 0x0014, lo: 0x8e, hi: 0x8e}, + {value: 0x0024, lo: 0x8f, hi: 0x8f}, + {value: 0x0010, lo: 0x90, hi: 0x93}, + {value: 0x0010, lo: 0x95, hi: 0x97}, + {value: 0x0010, lo: 0x99, hi: 0xb3}, + {value: 0x0024, lo: 0xb8, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xb9, offset 0x414 + {value: 0x0010, lo: 0xa0, hi: 0xbc}, + // Block 0xba, offset 0x415 + {value: 0x0010, lo: 0x80, hi: 0x9c}, + // Block 0xbb, offset 0x416 + {value: 0x0010, lo: 0x80, hi: 0x87}, + {value: 0x0010, lo: 0x89, hi: 0xa4}, + {value: 0x0024, lo: 0xa5, hi: 0xa5}, + {value: 0x0034, lo: 0xa6, hi: 0xa6}, + // Block 0xbc, offset 0x41a + {value: 0x0010, lo: 0x80, hi: 0x95}, + {value: 0x0010, lo: 0xa0, hi: 0xb2}, + // Block 0xbd, offset 0x41c + {value: 0x0010, lo: 0x80, hi: 0x91}, + // Block 0xbe, offset 0x41d + {value: 0x0010, lo: 0x80, hi: 0x88}, + // Block 0xbf, offset 0x41e + {value: 0x5653, lo: 0x80, hi: 0xb2}, + // Block 0xc0, offset 0x41f + {value: 0x5652, lo: 0x80, hi: 0xb2}, + // Block 0xc1, offset 0x420 + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xc2, offset 0x424 + {value: 0x0014, lo: 0x80, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0xa6, hi: 0xaf}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xc3, offset 0x428 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb6}, + {value: 0x0010, lo: 0xb7, hi: 0xb8}, + {value: 0x0034, lo: 0xb9, hi: 0xba}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + // Block 0xc4, offset 0x42e + {value: 0x0010, lo: 0x90, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xc5, offset 0x430 + {value: 0x0024, lo: 0x80, hi: 0x82}, + {value: 0x0010, lo: 0x83, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb4}, + {value: 0x0010, lo: 0xb6, hi: 0xbf}, + // Block 0xc6, offset 0x437 + {value: 0x0010, lo: 0x90, hi: 0xb2}, + {value: 0x0034, lo: 0xb3, hi: 0xb3}, + {value: 0x0010, lo: 0xb6, hi: 0xb6}, + // Block 0xc7, offset 0x43a + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0xb5}, + {value: 0x0014, lo: 0xb6, hi: 0xbe}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xc8, offset 0x43e + {value: 0x0030, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0014, lo: 0x8b, hi: 0x8c}, + {value: 0x0010, lo: 0x90, hi: 0x9a}, + {value: 0x0010, lo: 0x9c, hi: 0x9c}, + // Block 0xc9, offset 0x444 + {value: 0x0010, lo: 0x80, hi: 0x91}, + {value: 0x0010, lo: 0x93, hi: 0xae}, + {value: 0x0014, lo: 0xaf, hi: 0xb1}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0014, lo: 0xb4, hi: 0xb4}, + {value: 0x0030, lo: 0xb5, hi: 0xb5}, + {value: 0x0034, lo: 0xb6, hi: 0xb6}, + {value: 0x0014, lo: 0xb7, hi: 0xb7}, + {value: 0x0014, lo: 0xbe, hi: 0xbe}, + // Block 0xca, offset 0x44d + {value: 0x0010, lo: 0x80, hi: 0x86}, + {value: 0x0010, lo: 0x88, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0x8d}, + {value: 0x0010, lo: 0x8f, hi: 0x9d}, + {value: 0x0010, lo: 0x9f, hi: 0xa8}, + {value: 0x0010, lo: 0xb0, hi: 0xbf}, + // Block 0xcb, offset 0x453 + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0014, lo: 0x9f, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa2}, + {value: 0x0014, lo: 0xa3, hi: 0xa8}, + {value: 0x0034, lo: 0xa9, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xcc, offset 0x459 + {value: 0x0014, lo: 0x80, hi: 0x81}, + {value: 0x0010, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x8c}, + {value: 0x0010, lo: 0x8f, hi: 0x90}, + {value: 0x0010, lo: 0x93, hi: 0xa8}, + {value: 0x0010, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb5, hi: 0xb9}, + {value: 0x0034, lo: 0xbc, hi: 0xbc}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xcd, offset 0x463 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x84}, + {value: 0x0010, lo: 0x87, hi: 0x88}, + {value: 0x0010, lo: 0x8b, hi: 0x8c}, + {value: 0x0030, lo: 0x8d, hi: 0x8d}, + {value: 0x0010, lo: 0x90, hi: 0x90}, + {value: 0x0010, lo: 0x97, hi: 0x97}, + {value: 0x0010, lo: 0x9d, hi: 0xa3}, + {value: 0x0024, lo: 0xa6, hi: 0xac}, + {value: 0x0024, lo: 0xb0, hi: 0xb4}, + // Block 0xce, offset 0x46d + {value: 0x0010, lo: 0x80, hi: 0xb7}, + {value: 0x0014, lo: 0xb8, hi: 0xbf}, + // Block 0xcf, offset 0x46f + {value: 0x0010, lo: 0x80, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x82}, + {value: 0x0014, lo: 0x83, hi: 0x84}, + {value: 0x0010, lo: 0x85, hi: 0x85}, + {value: 0x0034, lo: 0x86, hi: 0x86}, + {value: 0x0010, lo: 0x87, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd0, offset 0x476 + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xb8}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0014, lo: 0xba, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbe}, + {value: 0x0014, lo: 0xbf, hi: 0xbf}, + // Block 0xd1, offset 0x47c + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x81, hi: 0x81}, + {value: 0x0034, lo: 0x82, hi: 0x83}, + {value: 0x0010, lo: 0x84, hi: 0x85}, + {value: 0x0010, lo: 0x87, hi: 0x87}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd2, offset 0x482 + {value: 0x0010, lo: 0x80, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb5}, + {value: 0x0010, lo: 0xb8, hi: 0xbb}, + {value: 0x0014, lo: 0xbc, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x488 + {value: 0x0034, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x98, hi: 0x9b}, + {value: 0x0014, lo: 0x9c, hi: 0x9d}, + // Block 0xd4, offset 0x48b + {value: 0x0010, lo: 0x80, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0010, lo: 0xbb, hi: 0xbc}, + {value: 0x0014, lo: 0xbd, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xd5, offset 0x491 + {value: 0x0014, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x84, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0xd6, offset 0x494 + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0014, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xac, hi: 0xac}, + {value: 0x0014, lo: 0xad, hi: 0xad}, + {value: 0x0010, lo: 0xae, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb5}, + {value: 0x0030, lo: 0xb6, hi: 0xb6}, + {value: 0x0034, lo: 0xb7, hi: 0xb7}, + // Block 0xd7, offset 0x49c + {value: 0x0010, lo: 0x80, hi: 0x89}, + // Block 0xd8, offset 0x49d + {value: 0x0014, lo: 0x9d, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa1}, + {value: 0x0014, lo: 0xa2, hi: 0xa5}, + {value: 0x0010, lo: 0xa6, hi: 0xa6}, + {value: 0x0014, lo: 0xa7, hi: 0xaa}, + {value: 0x0034, lo: 0xab, hi: 0xab}, + {value: 0x0010, lo: 0xb0, hi: 0xb9}, + // Block 0xd9, offset 0x4a4 + {value: 0x5f53, lo: 0xa0, hi: 0xbf}, + // Block 0xda, offset 0x4a5 + {value: 0x5f52, lo: 0x80, hi: 0x9f}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + {value: 0x0010, lo: 0xbf, hi: 0xbf}, + // Block 0xdb, offset 0x4a8 + {value: 0x0010, lo: 0x80, hi: 0xb8}, + // Block 0xdc, offset 0x4a9 + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x8a, hi: 0xaf}, + {value: 0x0014, lo: 0xb0, hi: 0xb6}, + {value: 0x0014, lo: 0xb8, hi: 0xbd}, + {value: 0x0010, lo: 0xbe, hi: 0xbe}, + {value: 0x0034, lo: 0xbf, hi: 0xbf}, + // Block 0xdd, offset 0x4af + {value: 0x0010, lo: 0x80, hi: 0x80}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xb2, hi: 0xbf}, + // Block 0xde, offset 0x4b2 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + {value: 0x0014, lo: 0x92, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xa9}, + {value: 0x0014, lo: 0xaa, hi: 0xb0}, + {value: 0x0010, lo: 0xb1, hi: 0xb1}, + {value: 0x0014, lo: 0xb2, hi: 0xb3}, + {value: 0x0010, lo: 0xb4, hi: 0xb4}, + {value: 0x0014, lo: 0xb5, hi: 0xb6}, + // Block 0xdf, offset 0x4ba + {value: 0x0010, lo: 0x80, hi: 0x99}, + // Block 0xe0, offset 0x4bb + {value: 0x0010, lo: 0x80, hi: 0xae}, + // Block 0xe1, offset 0x4bc + {value: 0x0010, lo: 0x80, hi: 0x83}, + // Block 0xe2, offset 0x4bd + {value: 0x0010, lo: 0x80, hi: 0x86}, + // Block 0xe3, offset 0x4be + {value: 0x0010, lo: 0x80, hi: 0x9e}, + {value: 0x0010, lo: 0xa0, hi: 0xa9}, + // Block 0xe4, offset 0x4c0 + {value: 0x0010, lo: 0x90, hi: 0xad}, + {value: 0x0034, lo: 0xb0, hi: 0xb4}, + // Block 0xe5, offset 0x4c2 + {value: 0x0010, lo: 0x80, hi: 0xaf}, + {value: 0x0024, lo: 0xb0, hi: 0xb6}, + // Block 0xe6, offset 0x4c4 + {value: 0x0014, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0010, lo: 0xa3, hi: 0xb7}, + {value: 0x0010, lo: 0xbd, hi: 0xbf}, + // Block 0xe7, offset 0x4c8 + {value: 0x0010, lo: 0x80, hi: 0x8f}, + // Block 0xe8, offset 0x4c9 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0010, lo: 0x90, hi: 0xbe}, + // Block 0xe9, offset 0x4cb + {value: 0x0014, lo: 0x8f, hi: 0x9f}, + // Block 0xea, offset 0x4cc + {value: 0x0014, lo: 0xa0, hi: 0xa0}, + // Block 0xeb, offset 0x4cd + {value: 0x0010, lo: 0x80, hi: 0xaa}, + {value: 0x0010, lo: 0xb0, hi: 0xbc}, + // Block 0xec, offset 0x4cf + {value: 0x0010, lo: 0x80, hi: 0x88}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + {value: 0x0014, lo: 0x9d, hi: 0x9d}, + {value: 0x0034, lo: 0x9e, hi: 0x9e}, + {value: 0x0014, lo: 0xa0, hi: 0xa3}, + // Block 0xed, offset 0x4d4 + {value: 0x0030, lo: 0xa5, hi: 0xa6}, + {value: 0x0034, lo: 0xa7, hi: 0xa9}, + {value: 0x0030, lo: 0xad, hi: 0xb2}, + {value: 0x0014, lo: 0xb3, hi: 0xba}, + {value: 0x0034, lo: 0xbb, hi: 0xbf}, + // Block 0xee, offset 0x4d9 + {value: 0x0034, lo: 0x80, hi: 0x82}, + {value: 0x0024, lo: 0x85, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8b}, + {value: 0x0024, lo: 0xaa, hi: 0xad}, + // Block 0xef, offset 0x4dd + {value: 0x0024, lo: 0x82, hi: 0x84}, + // Block 0xf0, offset 0x4de + {value: 0x0013, lo: 0x80, hi: 0x99}, + {value: 0x0012, lo: 0x9a, hi: 0xb3}, + {value: 0x0013, lo: 0xb4, hi: 0xbf}, + // Block 0xf1, offset 0x4e1 + {value: 0x0013, lo: 0x80, hi: 0x8d}, + {value: 0x0012, lo: 0x8e, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0xa7}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xf2, offset 0x4e5 + {value: 0x0013, lo: 0x80, hi: 0x81}, + {value: 0x0012, lo: 0x82, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0x9c}, + {value: 0x0013, lo: 0x9e, hi: 0x9f}, + {value: 0x0013, lo: 0xa2, hi: 0xa2}, + {value: 0x0013, lo: 0xa5, hi: 0xa6}, + {value: 0x0013, lo: 0xa9, hi: 0xac}, + {value: 0x0013, lo: 0xae, hi: 0xb5}, + {value: 0x0012, lo: 0xb6, hi: 0xb9}, + {value: 0x0012, lo: 0xbb, hi: 0xbb}, + {value: 0x0012, lo: 0xbd, hi: 0xbf}, + // Block 0xf3, offset 0x4f0 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0012, lo: 0x85, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xf4, offset 0x4f4 + {value: 0x0012, lo: 0x80, hi: 0x83}, + {value: 0x0013, lo: 0x84, hi: 0x85}, + {value: 0x0013, lo: 0x87, hi: 0x8a}, + {value: 0x0013, lo: 0x8d, hi: 0x94}, + {value: 0x0013, lo: 0x96, hi: 0x9c}, + {value: 0x0012, lo: 0x9e, hi: 0xb7}, + {value: 0x0013, lo: 0xb8, hi: 0xb9}, + {value: 0x0013, lo: 0xbb, hi: 0xbe}, + // Block 0xf5, offset 0x4fc + {value: 0x0013, lo: 0x80, hi: 0x84}, + {value: 0x0013, lo: 0x86, hi: 0x86}, + {value: 0x0013, lo: 0x8a, hi: 0x90}, + {value: 0x0012, lo: 0x92, hi: 0xab}, + {value: 0x0013, lo: 0xac, hi: 0xbf}, + // Block 0xf6, offset 0x501 + {value: 0x0013, lo: 0x80, hi: 0x85}, + {value: 0x0012, lo: 0x86, hi: 0x9f}, + {value: 0x0013, lo: 0xa0, hi: 0xb9}, + {value: 0x0012, lo: 0xba, hi: 0xbf}, + // Block 0xf7, offset 0x505 + {value: 0x0012, lo: 0x80, hi: 0x93}, + {value: 0x0013, lo: 0x94, hi: 0xad}, + {value: 0x0012, lo: 0xae, hi: 0xbf}, + // Block 0xf8, offset 0x508 + {value: 0x0012, lo: 0x80, hi: 0x87}, + {value: 0x0013, lo: 0x88, hi: 0xa1}, + {value: 0x0012, lo: 0xa2, hi: 0xbb}, + {value: 0x0013, lo: 0xbc, hi: 0xbf}, + // Block 0xf9, offset 0x50c + {value: 0x0013, lo: 0x80, hi: 0x95}, + {value: 0x0012, lo: 0x96, hi: 0xaf}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0xfa, offset 0x50f + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0012, lo: 0x8a, hi: 0xa5}, + {value: 0x0013, lo: 0xa8, hi: 0xbf}, + // Block 0xfb, offset 0x512 + {value: 0x0013, lo: 0x80, hi: 0x80}, + {value: 0x0012, lo: 0x82, hi: 0x9a}, + {value: 0x0012, lo: 0x9c, hi: 0xa1}, + {value: 0x0013, lo: 0xa2, hi: 0xba}, + {value: 0x0012, lo: 0xbc, hi: 0xbf}, + // Block 0xfc, offset 0x517 + {value: 0x0012, lo: 0x80, hi: 0x94}, + {value: 0x0012, lo: 0x96, hi: 0x9b}, + {value: 0x0013, lo: 0x9c, hi: 0xb4}, + {value: 0x0012, lo: 0xb6, hi: 0xbf}, + // Block 0xfd, offset 0x51b + {value: 0x0012, lo: 0x80, hi: 0x8e}, + {value: 0x0012, lo: 0x90, hi: 0x95}, + {value: 0x0013, lo: 0x96, hi: 0xae}, + {value: 0x0012, lo: 0xb0, hi: 0xbf}, + // Block 0xfe, offset 0x51f + {value: 0x0012, lo: 0x80, hi: 0x88}, + {value: 0x0012, lo: 0x8a, hi: 0x8f}, + {value: 0x0013, lo: 0x90, hi: 0xa8}, + {value: 0x0012, lo: 0xaa, hi: 0xbf}, + // Block 0xff, offset 0x523 + {value: 0x0012, lo: 0x80, hi: 0x82}, + {value: 0x0012, lo: 0x84, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8b}, + {value: 0x0010, lo: 0x8e, hi: 0xbf}, + // Block 0x100, offset 0x527 + {value: 0x0014, lo: 0x80, hi: 0xb6}, + {value: 0x0014, lo: 0xbb, hi: 0xbf}, + // Block 0x101, offset 0x529 + {value: 0x0014, lo: 0x80, hi: 0xac}, + {value: 0x0014, lo: 0xb5, hi: 0xb5}, + // Block 0x102, offset 0x52b + {value: 0x0014, lo: 0x84, hi: 0x84}, + {value: 0x0014, lo: 0x9b, hi: 0x9f}, + {value: 0x0014, lo: 0xa1, hi: 0xaf}, + // Block 0x103, offset 0x52e + {value: 0x0024, lo: 0x80, hi: 0x86}, + {value: 0x0024, lo: 0x88, hi: 0x98}, + {value: 0x0024, lo: 0x9b, hi: 0xa1}, + {value: 0x0024, lo: 0xa3, hi: 0xa4}, + {value: 0x0024, lo: 0xa6, hi: 0xaa}, + // Block 0x104, offset 0x533 + {value: 0x0010, lo: 0x80, hi: 0x84}, + {value: 0x0034, lo: 0x90, hi: 0x96}, + // Block 0x105, offset 0x535 + {value: 0xb552, lo: 0x80, hi: 0x81}, + {value: 0xb852, lo: 0x82, hi: 0x83}, + {value: 0x0024, lo: 0x84, hi: 0x89}, + {value: 0x0034, lo: 0x8a, hi: 0x8a}, + {value: 0x0010, lo: 0x90, hi: 0x99}, + // Block 0x106, offset 0x53a + {value: 0x0010, lo: 0x80, hi: 0x83}, + {value: 0x0010, lo: 0x85, hi: 0x9f}, + {value: 0x0010, lo: 0xa1, hi: 0xa2}, + {value: 0x0010, lo: 0xa4, hi: 0xa4}, + {value: 0x0010, lo: 0xa7, hi: 0xa7}, + {value: 0x0010, lo: 0xa9, hi: 0xb2}, + {value: 0x0010, lo: 0xb4, hi: 0xb7}, + {value: 0x0010, lo: 0xb9, hi: 0xb9}, + {value: 0x0010, lo: 0xbb, hi: 0xbb}, + // Block 0x107, offset 0x543 + {value: 0x0010, lo: 0x80, hi: 0x89}, + {value: 0x0010, lo: 0x8b, hi: 0x9b}, + {value: 0x0010, lo: 0xa1, hi: 0xa3}, + {value: 0x0010, lo: 0xa5, hi: 0xa9}, + {value: 0x0010, lo: 0xab, hi: 0xbb}, + // Block 0x108, offset 0x548 + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x109, offset 0x549 + {value: 0x0013, lo: 0x80, hi: 0x89}, + {value: 0x0013, lo: 0x90, hi: 0xa9}, + {value: 0x0013, lo: 0xb0, hi: 0xbf}, + // Block 0x10a, offset 0x54c + {value: 0x0013, lo: 0x80, hi: 0x89}, + // Block 0x10b, offset 0x54d + {value: 0x0004, lo: 0xbb, hi: 0xbf}, + // Block 0x10c, offset 0x54e + {value: 0x0014, lo: 0x81, hi: 0x81}, + {value: 0x0014, lo: 0xa0, hi: 0xbf}, + // Block 0x10d, offset 0x550 + {value: 0x0014, lo: 0x80, hi: 0xbf}, + // Block 0x10e, offset 0x551 + {value: 0x0014, lo: 0x80, hi: 0xaf}, +} + +// Total table size 13819 bytes (13KiB); checksum: 4CC48DA3 diff --git a/vendor/golang.org/x/text/cases/trieval.go b/vendor/golang.org/x/text/cases/trieval.go new file mode 100644 index 0000000000..7f2aa5b01b --- /dev/null +++ b/vendor/golang.org/x/text/cases/trieval.go @@ -0,0 +1,213 @@ +// This file was generated by go generate; DO NOT EDIT + +package cases + +// This file contains definitions for interpreting the trie value of the case +// trie generated by "go run gen*.go". It is shared by both the generator +// program and the resultant package. Sharing is achieved by the generator +// copying gen_trieval.go to trieval.go and changing what's above this comment. + +// info holds case information for a single rune. It is the value returned +// by a trie lookup. Most mapping information can be stored in a single 16-bit +// value. If not, for example when a rune is mapped to multiple runes, the value +// stores some basic case data and an index into an array with additional data. +// +// The per-rune values have the following format: +// +// if (exception) { +// 15..5 unsigned exception index +// 4 unused +// } else { +// 15..8 XOR pattern or index to XOR pattern for case mapping +// Only 13..8 are used for XOR patterns. +// 7 inverseFold (fold to upper, not to lower) +// 6 index: interpret the XOR pattern as an index +// 5..4 CCC: zero (normal or break), above or other +// } +// 3 exception: interpret this value as an exception index +// (TODO: is this bit necessary? Probably implied from case mode.) +// 2..0 case mode +// +// For the non-exceptional cases, a rune must be either uncased, lowercase or +// uppercase. If the rune is cased, the XOR pattern maps either a lowercase +// rune to uppercase or an uppercase rune to lowercase (applied to the 10 +// least-significant bits of the rune). +// +// See the definitions below for a more detailed description of the various +// bits. +type info uint16 + +const ( + casedMask = 0x0003 + fullCasedMask = 0x0007 + ignorableMask = 0x0006 + ignorableValue = 0x0004 + + inverseFoldBit = 1 << 7 + + exceptionBit = 1 << 3 + exceptionShift = 5 + numExceptionBits = 11 + + xorIndexBit = 1 << 6 + xorShift = 8 + + // There is no mapping if all xor bits and the exception bit are zero. + hasMappingMask = 0xffc0 | exceptionBit +) + +// The case mode bits encodes the case type of a rune. This includes uncased, +// title, upper and lower case and case ignorable. (For a definition of these +// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare +// cases, a rune can be both cased and case-ignorable. This is encoded by +// cIgnorableCased. A rune of this type is always lower case. Some runes are +// cased while not having a mapping. +// +// A common pattern for scripts in the Unicode standard is for upper and lower +// case runes to alternate for increasing rune values (e.g. the accented Latin +// ranges starting from U+0100 and U+1E00 among others and some Cyrillic +// characters). We use this property by defining a cXORCase mode, where the case +// mode (always upper or lower case) is derived from the rune value. As the XOR +// pattern for case mappings is often identical for successive runes, using +// cXORCase can result in large series of identical trie values. This, in turn, +// allows us to better compress the trie blocks. +const ( + cUncased info = iota // 000 + cTitle // 001 + cLower // 010 + cUpper // 011 + cIgnorableUncased // 100 + cIgnorableCased // 101 // lower case if mappings exist + cXORCase // 11x // case is cLower | ((rune&1) ^ x) + + maxCaseMode = cUpper +) + +func (c info) isCased() bool { + return c&casedMask != 0 +} + +func (c info) isCaseIgnorable() bool { + return c&ignorableMask == ignorableValue +} + +func (c info) isCaseIgnorableAndNonBreakStarter() bool { + return c&(fullCasedMask|cccMask) == (ignorableValue | cccZero) +} + +func (c info) isNotCasedAndNotCaseIgnorable() bool { + return c&fullCasedMask == 0 +} + +func (c info) isCaseIgnorableAndNotCased() bool { + return c&fullCasedMask == cIgnorableUncased +} + +// The case mapping implementation will need to know about various Canonical +// Combining Class (CCC) values. We encode two of these in the trie value: +// cccZero (0) and cccAbove (230). If the value is cccOther, it means that +// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that +// the rune also has the break category Break (see below). +const ( + cccBreak info = iota << 4 + cccZero + cccAbove + cccOther + + cccMask = cccBreak | cccZero | cccAbove | cccOther +) + +const ( + starter = 0 + above = 230 + iotaSubscript = 240 +) + +// The exceptions slice holds data that does not fit in a normal info entry. +// The entry is pointed to by the exception index in an entry. It has the +// following format: +// +// Header +// byte 0: +// 7..6 unused +// 5..4 CCC type (same bits as entry) +// 3 unused +// 2..0 length of fold +// +// byte 1: +// 7..6 unused +// 5..3 length of 1st mapping of case type +// 2..0 length of 2nd mapping of case type +// +// case 1st 2nd +// lower -> upper, title +// upper -> lower, title +// title -> lower, upper +// +// Lengths with the value 0x7 indicate no value and implies no change. +// A length of 0 indicates a mapping to zero-length string. +// +// Body bytes: +// case folding bytes +// lowercase mapping bytes +// uppercase mapping bytes +// titlecase mapping bytes +// closure mapping bytes (for NFKC_Casefold). (TODO) +// +// Fallbacks: +// missing fold -> lower +// missing title -> upper +// all missing -> original rune +// +// exceptions starts with a dummy byte to enforce that there is no zero index +// value. +const ( + lengthMask = 0x07 + lengthBits = 3 + noChange = 0 +) + +// References to generated trie. + +var trie = newCaseTrie(0) + +var sparse = sparseBlocks{ + values: sparseValues[:], + offsets: sparseOffsets[:], +} + +// Sparse block lookup code. + +// valueRange is an entry in a sparse block. +type valueRange struct { + value uint16 + lo, hi byte +} + +type sparseBlocks struct { + values []valueRange + offsets []uint16 +} + +// lookup returns the value from values block n for byte b using binary search. +func (s *sparseBlocks) lookup(n uint32, b byte) uint16 { + lo := s.offsets[n] + hi := s.offsets[n+1] + for lo < hi { + m := lo + (hi-lo)/2 + r := s.values[m] + if r.lo <= b && b <= r.hi { + return r.value + } + if b < r.lo { + hi = m + } else { + lo = m + 1 + } + } + return 0 +} + +// lastRuneForTesting is the last rune used for testing. Everything after this +// is boring. +const lastRuneForTesting = rune(0x1FFFF) diff --git a/vendor/golang.org/x/text/internal/tag/tag.go b/vendor/golang.org/x/text/internal/tag/tag.go new file mode 100644 index 0000000000..2cf4ecd292 --- /dev/null +++ b/vendor/golang.org/x/text/internal/tag/tag.go @@ -0,0 +1,100 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tag contains functionality handling tags and related data. +package tag + +import "sort" + +// An Index converts tags to a compact numeric value. +// +// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can +// be used to store additional information about the tag. +type Index string + +// Elem returns the element data at the given index. +func (s Index) Elem(x int) string { + return string(s[x*4 : x*4+4]) +} + +// Index reports the index of the given key or -1 if it could not be found. +// Only the first len(key) bytes from the start of the 4-byte entries will be +// considered for the search and the first match in Index will be returned. +func (s Index) Index(key []byte) int { + n := len(key) + // search the index of the first entry with an equal or higher value than + // key in s. + index := sort.Search(len(s)/4, func(i int) bool { + return cmp(s[i*4:i*4+n], key) != -1 + }) + i := index * 4 + if cmp(s[i:i+len(key)], key) != 0 { + return -1 + } + return index +} + +// Next finds the next occurrence of key after index x, which must have been +// obtained from a call to Index using the same key. It returns x+1 or -1. +func (s Index) Next(key []byte, x int) int { + if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 { + return x + } + return -1 +} + +// cmp returns an integer comparing a and b lexicographically. +func cmp(a Index, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + for i, c := range b[:n] { + switch { + case a[i] > c: + return 1 + case a[i] < c: + return -1 + } + } + switch { + case len(a) < len(b): + return -1 + case len(a) > len(b): + return 1 + } + return 0 +} + +// Compare returns an integer comparing a and b lexicographically. +func Compare(a string, b []byte) int { + return cmp(Index(a), b) +} + +// FixCase reformats b to the same pattern of cases as form. +// If returns false if string b is malformed. +func FixCase(form string, b []byte) bool { + if len(form) != len(b) { + return false + } + for i, c := range b { + if form[i] <= 'Z' { + if c >= 'a' { + c -= 'z' - 'Z' + } + if c < 'A' || 'Z' < c { + return false + } + } else { + if c <= 'Z' { + c += 'z' - 'Z' + } + if c < 'a' || 'z' < c { + return false + } + } + b[i] = c + } + return true +} diff --git a/vendor/golang.org/x/text/language/Makefile b/vendor/golang.org/x/text/language/Makefile new file mode 100644 index 0000000000..79f005784f --- /dev/null +++ b/vendor/golang.org/x/text/language/Makefile @@ -0,0 +1,16 @@ +# Copyright 2013 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +CLEANFILES+=maketables + +maketables: maketables.go + go build $^ + +tables: maketables + ./maketables > tables.go + gofmt -w -s tables.go + +# Build (but do not run) maketables during testing, +# just to make sure it still compiles. +testshort: maketables diff --git a/vendor/golang.org/x/text/language/common.go b/vendor/golang.org/x/text/language/common.go new file mode 100644 index 0000000000..a255bb0a50 --- /dev/null +++ b/vendor/golang.org/x/text/language/common.go @@ -0,0 +1,16 @@ +// This file was generated by go generate; DO NOT EDIT + +package language + +// This file contains code common to the maketables.go and the package code. + +// langAliasType is the type of an alias in langAliasMap. +type langAliasType int8 + +const ( + langDeprecated langAliasType = iota + langMacro + langLegacy + + langAliasTypeUnknown langAliasType = -1 +) diff --git a/vendor/golang.org/x/text/language/coverage.go b/vendor/golang.org/x/text/language/coverage.go new file mode 100644 index 0000000000..101fd23c1d --- /dev/null +++ b/vendor/golang.org/x/text/language/coverage.go @@ -0,0 +1,197 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "fmt" + "sort" +) + +// The Coverage interface is used to define the level of coverage of an +// internationalization service. Note that not all types are supported by all +// services. As lists may be generated on the fly, it is recommended that users +// of a Coverage cache the results. +type Coverage interface { + // Tags returns the list of supported tags. + Tags() []Tag + + // BaseLanguages returns the list of supported base languages. + BaseLanguages() []Base + + // Scripts returns the list of supported scripts. + Scripts() []Script + + // Regions returns the list of supported regions. + Regions() []Region +} + +var ( + // Supported defines a Coverage that lists all supported subtags. Tags + // always returns nil. + Supported Coverage = allSubtags{} +) + +// TODO: +// - Support Variants, numbering systems. +// - CLDR coverage levels. +// - Set of common tags defined in this package. + +type allSubtags struct{} + +// Regions returns the list of supported regions. As all regions are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" region is not returned. +func (s allSubtags) Regions() []Region { + reg := make([]Region, numRegions) + for i := range reg { + reg[i] = Region{regionID(i + 1)} + } + return reg +} + +// Scripts returns the list of supported scripts. As all scripts are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" script is not returned. +func (s allSubtags) Scripts() []Script { + scr := make([]Script, numScripts) + for i := range scr { + scr[i] = Script{scriptID(i + 1)} + } + return scr +} + +// BaseLanguages returns the list of all supported base languages. It generates +// the list by traversing the internal structures. +func (s allSubtags) BaseLanguages() []Base { + base := make([]Base, 0, numLanguages) + for i := 0; i < langNoIndexOffset; i++ { + // We included "und" already for the value 0. + if i != nonCanonicalUnd { + base = append(base, Base{langID(i)}) + } + } + i := langNoIndexOffset + for _, v := range langNoIndex { + for k := 0; k < 8; k++ { + if v&1 == 1 { + base = append(base, Base{langID(i)}) + } + v >>= 1 + i++ + } + } + return base +} + +// Tags always returns nil. +func (s allSubtags) Tags() []Tag { + return nil +} + +// coverage is used used by NewCoverage which is used as a convenient way for +// creating Coverage implementations for partially defined data. Very often a +// package will only need to define a subset of slices. coverage provides a +// convenient way to do this. Moreover, packages using NewCoverage, instead of +// their own implementation, will not break if later new slice types are added. +type coverage struct { + tags func() []Tag + bases func() []Base + scripts func() []Script + regions func() []Region +} + +func (s *coverage) Tags() []Tag { + if s.tags == nil { + return nil + } + return s.tags() +} + +// bases implements sort.Interface and is used to sort base languages. +type bases []Base + +func (b bases) Len() int { + return len(b) +} + +func (b bases) Swap(i, j int) { + b[i], b[j] = b[j], b[i] +} + +func (b bases) Less(i, j int) bool { + return b[i].langID < b[j].langID +} + +// BaseLanguages returns the result from calling s.bases if it is specified or +// otherwise derives the set of supported base languages from tags. +func (s *coverage) BaseLanguages() []Base { + if s.bases == nil { + tags := s.Tags() + if len(tags) == 0 { + return nil + } + a := make([]Base, len(tags)) + for i, t := range tags { + a[i] = Base{langID(t.lang)} + } + sort.Sort(bases(a)) + k := 0 + for i := 1; i < len(a); i++ { + if a[k] != a[i] { + k++ + a[k] = a[i] + } + } + return a[:k+1] + } + return s.bases() +} + +func (s *coverage) Scripts() []Script { + if s.scripts == nil { + return nil + } + return s.scripts() +} + +func (s *coverage) Regions() []Region { + if s.regions == nil { + return nil + } + return s.regions() +} + +// NewCoverage returns a Coverage for the given lists. It is typically used by +// packages providing internationalization services to define their level of +// coverage. A list may be of type []T or func() []T, where T is either Tag, +// Base, Script or Region. The returned Coverage derives the value for Bases +// from Tags if no func or slice for []Base is specified. For other unspecified +// types the returned Coverage will return nil for the respective methods. +func NewCoverage(list ...interface{}) Coverage { + s := &coverage{} + for _, x := range list { + switch v := x.(type) { + case func() []Base: + s.bases = v + case func() []Script: + s.scripts = v + case func() []Region: + s.regions = v + case func() []Tag: + s.tags = v + case []Base: + s.bases = func() []Base { return v } + case []Script: + s.scripts = func() []Script { return v } + case []Region: + s.regions = func() []Region { return v } + case []Tag: + s.tags = func() []Tag { return v } + default: + panic(fmt.Sprintf("language: unsupported set type %T", v)) + } + } + return s +} diff --git a/vendor/golang.org/x/text/language/gen_common.go b/vendor/golang.org/x/text/language/gen_common.go new file mode 100644 index 0000000000..83ce180133 --- /dev/null +++ b/vendor/golang.org/x/text/language/gen_common.go @@ -0,0 +1,20 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// This file contains code common to the maketables.go and the package code. + +// langAliasType is the type of an alias in langAliasMap. +type langAliasType int8 + +const ( + langDeprecated langAliasType = iota + langMacro + langLegacy + + langAliasTypeUnknown langAliasType = -1 +) diff --git a/vendor/golang.org/x/text/language/gen_index.go b/vendor/golang.org/x/text/language/gen_index.go new file mode 100644 index 0000000000..eef555cd3a --- /dev/null +++ b/vendor/golang.org/x/text/language/gen_index.go @@ -0,0 +1,162 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// This file generates derivative tables based on the language package itself. + +import ( + "bytes" + "flag" + "fmt" + "io/ioutil" + "log" + "reflect" + "sort" + "strings" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/language" + "golang.org/x/text/unicode/cldr" +) + +var ( + test = flag.Bool("test", false, + "test existing tables; can be used to compare web data with package data.") + + draft = flag.String("draft", + "contributed", + `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) +) + +func main() { + gen.Init() + + // Read the CLDR zip file. + r := gen.OpenCLDRCoreZip() + defer r.Close() + + d := &cldr.Decoder{} + data, err := d.DecodeZip(r) + if err != nil { + log.Fatalf("DecodeZip: %v", err) + } + + w := gen.NewCodeWriter() + defer func() { + buf := &bytes.Buffer{} + + if _, err = w.WriteGo(buf, "language"); err != nil { + log.Fatalf("Error formatting file index.go: %v", err) + } + + // Since we're generating a table for our own package we need to rewrite + // doing the equivalent of go fmt -r 'language.b -> b'. Using + // bytes.Replace will do. + out := bytes.Replace(buf.Bytes(), []byte("language."), nil, -1) + if err := ioutil.WriteFile("index.go", out, 0600); err != nil { + log.Fatalf("Could not create file index.go: %v", err) + } + }() + + m := map[language.Tag]bool{} + for _, lang := range data.Locales() { + // We include all locales unconditionally to be consistent with en_US. + // We want en_US, even though it has no data associated with it. + + // TODO: put any of the languages for which no data exists at the end + // of the index. This allows all components based on ICU to use that + // as the cutoff point. + // if x := data.RawLDML(lang); false || + // x.LocaleDisplayNames != nil || + // x.Characters != nil || + // x.Delimiters != nil || + // x.Measurement != nil || + // x.Dates != nil || + // x.Numbers != nil || + // x.Units != nil || + // x.ListPatterns != nil || + // x.Collations != nil || + // x.Segmentations != nil || + // x.Rbnf != nil || + // x.Annotations != nil || + // x.Metadata != nil { + + // TODO: support POSIX natively, albeit non-standard. + tag := language.Make(strings.Replace(lang, "_POSIX", "-u-va-posix", 1)) + m[tag] = true + // } + } + // Include locales for plural rules, which uses a different structure. + for _, plurals := range data.Supplemental().Plurals { + for _, rules := range plurals.PluralRules { + for _, lang := range strings.Split(rules.Locales, " ") { + m[language.Make(lang)] = true + } + } + } + + var core, special []language.Tag + + for t := range m { + if x := t.Extensions(); len(x) != 0 && fmt.Sprint(x) != "[u-va-posix]" { + log.Fatalf("Unexpected extension %v in %v", x, t) + } + if len(t.Variants()) == 0 && len(t.Extensions()) == 0 { + core = append(core, t) + } else { + special = append(special, t) + } + } + + w.WriteComment(` + NumCompactTags is the number of common tags. The maximum tag is + NumCompactTags-1.`) + w.WriteConst("NumCompactTags", len(core)+len(special)) + + sort.Sort(byAlpha(special)) + w.WriteVar("specialTags", special) + + // TODO: order by frequency? + sort.Sort(byAlpha(core)) + + // Size computations are just an estimate. + w.Size += int(reflect.TypeOf(map[uint32]uint16{}).Size()) + w.Size += len(core) * 6 // size of uint32 and uint16 + + fmt.Fprintln(w) + fmt.Fprintln(w, "var coreTags = map[uint32]uint16{") + fmt.Fprintln(w, "0x0: 0, // und") + i := len(special) + 1 // Und and special tags already written. + for _, t := range core { + if t == language.Und { + continue + } + fmt.Fprint(w.Hash, t, i) + b, s, r := t.Raw() + fmt.Fprintf(w, "0x%s%s%s: %d, // %s\n", + getIndex(b, 3), // 3 is enough as it is guaranteed to be a compact number + getIndex(s, 2), + getIndex(r, 3), + i, t) + i++ + } + fmt.Fprintln(w, "}") +} + +// getIndex prints the subtag type and extracts its index of size nibble. +// If the index is less than n nibbles, the result is prefixed with 0s. +func getIndex(x interface{}, n int) string { + s := fmt.Sprintf("%#v", x) // s is of form Type{typeID: 0x00} + s = s[strings.Index(s, "0x")+2 : len(s)-1] + return strings.Repeat("0", n-len(s)) + s +} + +type byAlpha []language.Tag + +func (a byAlpha) Len() int { return len(a) } +func (a byAlpha) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byAlpha) Less(i, j int) bool { return a[i].String() < a[j].String() } diff --git a/vendor/golang.org/x/text/language/go1_1.go b/vendor/golang.org/x/text/language/go1_1.go new file mode 100644 index 0000000000..380f4c09f7 --- /dev/null +++ b/vendor/golang.org/x/text/language/go1_1.go @@ -0,0 +1,38 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.2 + +package language + +import "sort" + +func sortStable(s sort.Interface) { + ss := stableSort{ + s: s, + pos: make([]int, s.Len()), + } + for i := range ss.pos { + ss.pos[i] = i + } + sort.Sort(&ss) +} + +type stableSort struct { + s sort.Interface + pos []int +} + +func (s *stableSort) Len() int { + return len(s.pos) +} + +func (s *stableSort) Less(i, j int) bool { + return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j] +} + +func (s *stableSort) Swap(i, j int) { + s.s.Swap(i, j) + s.pos[i], s.pos[j] = s.pos[j], s.pos[i] +} diff --git a/vendor/golang.org/x/text/language/go1_2.go b/vendor/golang.org/x/text/language/go1_2.go new file mode 100644 index 0000000000..38268c57a3 --- /dev/null +++ b/vendor/golang.org/x/text/language/go1_2.go @@ -0,0 +1,11 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.2 + +package language + +import "sort" + +var sortStable = sort.Stable diff --git a/vendor/golang.org/x/text/language/index.go b/vendor/golang.org/x/text/language/index.go new file mode 100644 index 0000000000..7fa9cc82d1 --- /dev/null +++ b/vendor/golang.org/x/text/language/index.go @@ -0,0 +1,762 @@ +// This file was generated by go generate; DO NOT EDIT + +package language + +// NumCompactTags is the number of common tags. The maximum tag is +// NumCompactTags-1. +const NumCompactTags = 747 + +var specialTags = []Tag{ // 2 elements + 0: {lang: 0x61, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"}, + 1: {lang: 0x9b, region: 0x132, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"}, +} // Size: 72 bytes + +var coreTags = map[uint32]uint16{ + 0x0: 0, // und + 0x00a00000: 3, // af + 0x00a000d0: 4, // af-NA + 0x00a0015e: 5, // af-ZA + 0x00b00000: 6, // agq + 0x00b00051: 7, // agq-CM + 0x00d00000: 8, // ak + 0x00d0007e: 9, // ak-GH + 0x01100000: 10, // am + 0x0110006e: 11, // am-ET + 0x01500000: 12, // ar + 0x01500001: 13, // ar-001 + 0x01500022: 14, // ar-AE + 0x01500038: 15, // ar-BH + 0x01500061: 16, // ar-DJ + 0x01500066: 17, // ar-DZ + 0x0150006a: 18, // ar-EG + 0x0150006b: 19, // ar-EH + 0x0150006c: 20, // ar-ER + 0x01500095: 21, // ar-IL + 0x01500099: 22, // ar-IQ + 0x0150009f: 23, // ar-JO + 0x015000a6: 24, // ar-KM + 0x015000aa: 25, // ar-KW + 0x015000ae: 26, // ar-LB + 0x015000b7: 27, // ar-LY + 0x015000b8: 28, // ar-MA + 0x015000c7: 29, // ar-MR + 0x015000df: 30, // ar-OM + 0x015000eb: 31, // ar-PS + 0x015000f1: 32, // ar-QA + 0x01500106: 33, // ar-SA + 0x01500109: 34, // ar-SD + 0x01500113: 35, // ar-SO + 0x01500115: 36, // ar-SS + 0x0150011a: 37, // ar-SY + 0x0150011e: 38, // ar-TD + 0x01500126: 39, // ar-TN + 0x0150015b: 40, // ar-YE + 0x01c00000: 41, // as + 0x01c00097: 42, // as-IN + 0x01d00000: 43, // asa + 0x01d0012d: 44, // asa-TZ + 0x01f00000: 45, // ast + 0x01f0006d: 46, // ast-ES + 0x02400000: 47, // az + 0x0241e000: 48, // az-Cyrl + 0x0241e031: 49, // az-Cyrl-AZ + 0x02452000: 50, // az-Latn + 0x02452031: 51, // az-Latn-AZ + 0x02a00000: 52, // bas + 0x02a00051: 53, // bas-CM + 0x02f00000: 54, // be + 0x02f00046: 55, // be-BY + 0x03100000: 56, // bem + 0x0310015f: 57, // bem-ZM + 0x03300000: 58, // bez + 0x0330012d: 59, // bez-TZ + 0x03800000: 60, // bg + 0x03800037: 61, // bg-BG + 0x03c00000: 62, // bh + 0x04900000: 63, // bm + 0x049000c1: 64, // bm-ML + 0x04b00000: 65, // bn + 0x04b00034: 66, // bn-BD + 0x04b00097: 67, // bn-IN + 0x04c00000: 68, // bo + 0x04c00052: 69, // bo-CN + 0x04c00097: 70, // bo-IN + 0x05000000: 71, // br + 0x05000076: 72, // br-FR + 0x05300000: 73, // brx + 0x05300097: 74, // brx-IN + 0x05400000: 75, // bs + 0x0541e000: 76, // bs-Cyrl + 0x0541e032: 77, // bs-Cyrl-BA + 0x05452000: 78, // bs-Latn + 0x05452032: 79, // bs-Latn-BA + 0x06100000: 80, // ca + 0x06100021: 81, // ca-AD + 0x0610006d: 82, // ca-ES + 0x06100076: 83, // ca-FR + 0x0610009c: 84, // ca-IT + 0x06400000: 85, // ce + 0x06400104: 86, // ce-RU + 0x06600000: 87, // cgg + 0x0660012f: 88, // cgg-UG + 0x06c00000: 89, // chr + 0x06c00132: 90, // chr-US + 0x06f00000: 91, // ckb + 0x06f00099: 92, // ckb-IQ + 0x06f0009a: 93, // ckb-IR + 0x07900000: 94, // cs + 0x0790005d: 95, // cs-CZ + 0x07d00000: 96, // cu + 0x07d00104: 97, // cu-RU + 0x07f00000: 98, // cy + 0x07f00079: 99, // cy-GB + 0x08000000: 100, // da + 0x08000062: 101, // da-DK + 0x08000080: 102, // da-GL + 0x08300000: 103, // dav + 0x083000a2: 104, // dav-KE + 0x08500000: 105, // de + 0x0850002d: 106, // de-AT + 0x08500035: 107, // de-BE + 0x0850004d: 108, // de-CH + 0x0850005f: 109, // de-DE + 0x085000b0: 110, // de-LI + 0x085000b5: 111, // de-LU + 0x08800000: 112, // dje + 0x088000d2: 113, // dje-NE + 0x08b00000: 114, // dsb + 0x08b0005f: 115, // dsb-DE + 0x08f00000: 116, // dua + 0x08f00051: 117, // dua-CM + 0x09000000: 118, // dv + 0x09100000: 119, // dyo + 0x09100112: 120, // dyo-SN + 0x09300000: 121, // dz + 0x09300042: 122, // dz-BT + 0x09400000: 123, // ebu + 0x094000a2: 124, // ebu-KE + 0x09500000: 125, // ee + 0x0950007e: 126, // ee-GH + 0x09500120: 127, // ee-TG + 0x09a00000: 128, // el + 0x09a0005c: 129, // el-CY + 0x09a00085: 130, // el-GR + 0x09b00000: 131, // en + 0x09b00001: 132, // en-001 + 0x09b0001a: 133, // en-150 + 0x09b00024: 134, // en-AG + 0x09b00025: 135, // en-AI + 0x09b0002c: 136, // en-AS + 0x09b0002d: 137, // en-AT + 0x09b0002e: 138, // en-AU + 0x09b00033: 139, // en-BB + 0x09b00035: 140, // en-BE + 0x09b00039: 141, // en-BI + 0x09b0003c: 142, // en-BM + 0x09b00041: 143, // en-BS + 0x09b00045: 144, // en-BW + 0x09b00047: 145, // en-BZ + 0x09b00048: 146, // en-CA + 0x09b00049: 147, // en-CC + 0x09b0004d: 148, // en-CH + 0x09b0004f: 149, // en-CK + 0x09b00051: 150, // en-CM + 0x09b0005b: 151, // en-CX + 0x09b0005c: 152, // en-CY + 0x09b0005f: 153, // en-DE + 0x09b00060: 154, // en-DG + 0x09b00062: 155, // en-DK + 0x09b00063: 156, // en-DM + 0x09b0006c: 157, // en-ER + 0x09b00070: 158, // en-FI + 0x09b00071: 159, // en-FJ + 0x09b00072: 160, // en-FK + 0x09b00073: 161, // en-FM + 0x09b00079: 162, // en-GB + 0x09b0007a: 163, // en-GD + 0x09b0007d: 164, // en-GG + 0x09b0007e: 165, // en-GH + 0x09b0007f: 166, // en-GI + 0x09b00081: 167, // en-GM + 0x09b00088: 168, // en-GU + 0x09b0008a: 169, // en-GY + 0x09b0008b: 170, // en-HK + 0x09b00094: 171, // en-IE + 0x09b00095: 172, // en-IL + 0x09b00096: 173, // en-IM + 0x09b00097: 174, // en-IN + 0x09b00098: 175, // en-IO + 0x09b0009d: 176, // en-JE + 0x09b0009e: 177, // en-JM + 0x09b000a2: 178, // en-KE + 0x09b000a5: 179, // en-KI + 0x09b000a7: 180, // en-KN + 0x09b000ab: 181, // en-KY + 0x09b000af: 182, // en-LC + 0x09b000b2: 183, // en-LR + 0x09b000b3: 184, // en-LS + 0x09b000bd: 185, // en-MG + 0x09b000be: 186, // en-MH + 0x09b000c4: 187, // en-MO + 0x09b000c5: 188, // en-MP + 0x09b000c8: 189, // en-MS + 0x09b000c9: 190, // en-MT + 0x09b000ca: 191, // en-MU + 0x09b000cc: 192, // en-MW + 0x09b000ce: 193, // en-MY + 0x09b000d0: 194, // en-NA + 0x09b000d3: 195, // en-NF + 0x09b000d4: 196, // en-NG + 0x09b000d7: 197, // en-NL + 0x09b000db: 198, // en-NR + 0x09b000dd: 199, // en-NU + 0x09b000de: 200, // en-NZ + 0x09b000e4: 201, // en-PG + 0x09b000e5: 202, // en-PH + 0x09b000e6: 203, // en-PK + 0x09b000e9: 204, // en-PN + 0x09b000ea: 205, // en-PR + 0x09b000ee: 206, // en-PW + 0x09b00105: 207, // en-RW + 0x09b00107: 208, // en-SB + 0x09b00108: 209, // en-SC + 0x09b00109: 210, // en-SD + 0x09b0010a: 211, // en-SE + 0x09b0010b: 212, // en-SG + 0x09b0010c: 213, // en-SH + 0x09b0010d: 214, // en-SI + 0x09b00110: 215, // en-SL + 0x09b00115: 216, // en-SS + 0x09b00119: 217, // en-SX + 0x09b0011b: 218, // en-SZ + 0x09b0011d: 219, // en-TC + 0x09b00123: 220, // en-TK + 0x09b00127: 221, // en-TO + 0x09b0012a: 222, // en-TT + 0x09b0012b: 223, // en-TV + 0x09b0012d: 224, // en-TZ + 0x09b0012f: 225, // en-UG + 0x09b00131: 226, // en-UM + 0x09b00132: 227, // en-US + 0x09b00136: 228, // en-VC + 0x09b00139: 229, // en-VG + 0x09b0013a: 230, // en-VI + 0x09b0013c: 231, // en-VU + 0x09b0013f: 232, // en-WS + 0x09b0015e: 233, // en-ZA + 0x09b0015f: 234, // en-ZM + 0x09b00161: 235, // en-ZW + 0x09c00000: 236, // eo + 0x09c00001: 237, // eo-001 + 0x09d00000: 238, // es + 0x09d0001e: 239, // es-419 + 0x09d0002b: 240, // es-AR + 0x09d0003e: 241, // es-BO + 0x09d00040: 242, // es-BR + 0x09d00050: 243, // es-CL + 0x09d00053: 244, // es-CO + 0x09d00055: 245, // es-CR + 0x09d00058: 246, // es-CU + 0x09d00064: 247, // es-DO + 0x09d00067: 248, // es-EA + 0x09d00068: 249, // es-EC + 0x09d0006d: 250, // es-ES + 0x09d00084: 251, // es-GQ + 0x09d00087: 252, // es-GT + 0x09d0008d: 253, // es-HN + 0x09d00092: 254, // es-IC + 0x09d000cd: 255, // es-MX + 0x09d000d6: 256, // es-NI + 0x09d000e0: 257, // es-PA + 0x09d000e2: 258, // es-PE + 0x09d000e5: 259, // es-PH + 0x09d000ea: 260, // es-PR + 0x09d000ef: 261, // es-PY + 0x09d00118: 262, // es-SV + 0x09d00132: 263, // es-US + 0x09d00133: 264, // es-UY + 0x09d00138: 265, // es-VE + 0x09f00000: 266, // et + 0x09f00069: 267, // et-EE + 0x0a100000: 268, // eu + 0x0a10006d: 269, // eu-ES + 0x0a200000: 270, // ewo + 0x0a200051: 271, // ewo-CM + 0x0a400000: 272, // fa + 0x0a400023: 273, // fa-AF + 0x0a40009a: 274, // fa-IR + 0x0a600000: 275, // ff + 0x0a600051: 276, // ff-CM + 0x0a600082: 277, // ff-GN + 0x0a6000c7: 278, // ff-MR + 0x0a600112: 279, // ff-SN + 0x0a800000: 280, // fi + 0x0a800070: 281, // fi-FI + 0x0aa00000: 282, // fil + 0x0aa000e5: 283, // fil-PH + 0x0ad00000: 284, // fo + 0x0ad00062: 285, // fo-DK + 0x0ad00074: 286, // fo-FO + 0x0af00000: 287, // fr + 0x0af00035: 288, // fr-BE + 0x0af00036: 289, // fr-BF + 0x0af00039: 290, // fr-BI + 0x0af0003a: 291, // fr-BJ + 0x0af0003b: 292, // fr-BL + 0x0af00048: 293, // fr-CA + 0x0af0004a: 294, // fr-CD + 0x0af0004b: 295, // fr-CF + 0x0af0004c: 296, // fr-CG + 0x0af0004d: 297, // fr-CH + 0x0af0004e: 298, // fr-CI + 0x0af00051: 299, // fr-CM + 0x0af00061: 300, // fr-DJ + 0x0af00066: 301, // fr-DZ + 0x0af00076: 302, // fr-FR + 0x0af00078: 303, // fr-GA + 0x0af0007c: 304, // fr-GF + 0x0af00082: 305, // fr-GN + 0x0af00083: 306, // fr-GP + 0x0af00084: 307, // fr-GQ + 0x0af0008f: 308, // fr-HT + 0x0af000a6: 309, // fr-KM + 0x0af000b5: 310, // fr-LU + 0x0af000b8: 311, // fr-MA + 0x0af000b9: 312, // fr-MC + 0x0af000bc: 313, // fr-MF + 0x0af000bd: 314, // fr-MG + 0x0af000c1: 315, // fr-ML + 0x0af000c6: 316, // fr-MQ + 0x0af000c7: 317, // fr-MR + 0x0af000ca: 318, // fr-MU + 0x0af000d1: 319, // fr-NC + 0x0af000d2: 320, // fr-NE + 0x0af000e3: 321, // fr-PF + 0x0af000e8: 322, // fr-PM + 0x0af00100: 323, // fr-RE + 0x0af00105: 324, // fr-RW + 0x0af00108: 325, // fr-SC + 0x0af00112: 326, // fr-SN + 0x0af0011a: 327, // fr-SY + 0x0af0011e: 328, // fr-TD + 0x0af00120: 329, // fr-TG + 0x0af00126: 330, // fr-TN + 0x0af0013c: 331, // fr-VU + 0x0af0013d: 332, // fr-WF + 0x0af0015c: 333, // fr-YT + 0x0b600000: 334, // fur + 0x0b60009c: 335, // fur-IT + 0x0b900000: 336, // fy + 0x0b9000d7: 337, // fy-NL + 0x0ba00000: 338, // ga + 0x0ba00094: 339, // ga-IE + 0x0c200000: 340, // gd + 0x0c200079: 341, // gd-GB + 0x0c800000: 342, // gl + 0x0c80006d: 343, // gl-ES + 0x0d200000: 344, // gsw + 0x0d20004d: 345, // gsw-CH + 0x0d200076: 346, // gsw-FR + 0x0d2000b0: 347, // gsw-LI + 0x0d300000: 348, // gu + 0x0d300097: 349, // gu-IN + 0x0d700000: 350, // guw + 0x0d800000: 351, // guz + 0x0d8000a2: 352, // guz-KE + 0x0d900000: 353, // gv + 0x0d900096: 354, // gv-IM + 0x0dc00000: 355, // ha + 0x0dc0007e: 356, // ha-GH + 0x0dc000d2: 357, // ha-NE + 0x0dc000d4: 358, // ha-NG + 0x0de00000: 359, // haw + 0x0de00132: 360, // haw-US + 0x0e000000: 361, // he + 0x0e000095: 362, // he-IL + 0x0e100000: 363, // hi + 0x0e100097: 364, // hi-IN + 0x0ee00000: 365, // hr + 0x0ee00032: 366, // hr-BA + 0x0ee0008e: 367, // hr-HR + 0x0ef00000: 368, // hsb + 0x0ef0005f: 369, // hsb-DE + 0x0f200000: 370, // hu + 0x0f200090: 371, // hu-HU + 0x0f300000: 372, // hy + 0x0f300027: 373, // hy-AM + 0x0f800000: 374, // id + 0x0f800093: 375, // id-ID + 0x0fa00000: 376, // ig + 0x0fa000d4: 377, // ig-NG + 0x0fb00000: 378, // ii + 0x0fb00052: 379, // ii-CN + 0x10200000: 380, // is + 0x1020009b: 381, // is-IS + 0x10300000: 382, // it + 0x1030004d: 383, // it-CH + 0x1030009c: 384, // it-IT + 0x10300111: 385, // it-SM + 0x10400000: 386, // iu + 0x10700000: 387, // ja + 0x107000a0: 388, // ja-JP + 0x10900000: 389, // jbo + 0x10a00000: 390, // jgo + 0x10a00051: 391, // jgo-CM + 0x10c00000: 392, // jmc + 0x10c0012d: 393, // jmc-TZ + 0x10f00000: 394, // jv + 0x11100000: 395, // ka + 0x1110007b: 396, // ka-GE + 0x11300000: 397, // kab + 0x11300066: 398, // kab-DZ + 0x11500000: 399, // kaj + 0x11600000: 400, // kam + 0x116000a2: 401, // kam-KE + 0x11900000: 402, // kcg + 0x11b00000: 403, // kde + 0x11b0012d: 404, // kde-TZ + 0x11d00000: 405, // kea + 0x11d00059: 406, // kea-CV + 0x12800000: 407, // khq + 0x128000c1: 408, // khq-ML + 0x12b00000: 409, // ki + 0x12b000a2: 410, // ki-KE + 0x12f00000: 411, // kk + 0x12f000ac: 412, // kk-KZ + 0x13000000: 413, // kkj + 0x13000051: 414, // kkj-CM + 0x13100000: 415, // kl + 0x13100080: 416, // kl-GL + 0x13200000: 417, // kln + 0x132000a2: 418, // kln-KE + 0x13300000: 419, // km + 0x133000a4: 420, // km-KH + 0x13500000: 421, // kn + 0x13500097: 422, // kn-IN + 0x13600000: 423, // ko + 0x136000a8: 424, // ko-KP + 0x136000a9: 425, // ko-KR + 0x13800000: 426, // kok + 0x13800097: 427, // kok-IN + 0x14100000: 428, // ks + 0x14100097: 429, // ks-IN + 0x14200000: 430, // ksb + 0x1420012d: 431, // ksb-TZ + 0x14300000: 432, // ksf + 0x14300051: 433, // ksf-CM + 0x14400000: 434, // ksh + 0x1440005f: 435, // ksh-DE + 0x14500000: 436, // ku + 0x14a00000: 437, // kw + 0x14a00079: 438, // kw-GB + 0x14d00000: 439, // ky + 0x14d000a3: 440, // ky-KG + 0x15100000: 441, // lag + 0x1510012d: 442, // lag-TZ + 0x15400000: 443, // lb + 0x154000b5: 444, // lb-LU + 0x15a00000: 445, // lg + 0x15a0012f: 446, // lg-UG + 0x16100000: 447, // lkt + 0x16100132: 448, // lkt-US + 0x16400000: 449, // ln + 0x16400029: 450, // ln-AO + 0x1640004a: 451, // ln-CD + 0x1640004b: 452, // ln-CF + 0x1640004c: 453, // ln-CG + 0x16500000: 454, // lo + 0x165000ad: 455, // lo-LA + 0x16800000: 456, // lrc + 0x16800099: 457, // lrc-IQ + 0x1680009a: 458, // lrc-IR + 0x16900000: 459, // lt + 0x169000b4: 460, // lt-LT + 0x16b00000: 461, // lu + 0x16b0004a: 462, // lu-CD + 0x16d00000: 463, // luo + 0x16d000a2: 464, // luo-KE + 0x16e00000: 465, // luy + 0x16e000a2: 466, // luy-KE + 0x17000000: 467, // lv + 0x170000b6: 468, // lv-LV + 0x17a00000: 469, // mas + 0x17a000a2: 470, // mas-KE + 0x17a0012d: 471, // mas-TZ + 0x18000000: 472, // mer + 0x180000a2: 473, // mer-KE + 0x18200000: 474, // mfe + 0x182000ca: 475, // mfe-MU + 0x18300000: 476, // mg + 0x183000bd: 477, // mg-MG + 0x18400000: 478, // mgh + 0x184000cf: 479, // mgh-MZ + 0x18500000: 480, // mgo + 0x18500051: 481, // mgo-CM + 0x18c00000: 482, // mk + 0x18c000c0: 483, // mk-MK + 0x18d00000: 484, // ml + 0x18d00097: 485, // ml-IN + 0x18f00000: 486, // mn + 0x18f000c3: 487, // mn-MN + 0x19600000: 488, // mr + 0x19600097: 489, // mr-IN + 0x19a00000: 490, // ms + 0x19a0003d: 491, // ms-BN + 0x19a000ce: 492, // ms-MY + 0x19a0010b: 493, // ms-SG + 0x19b00000: 494, // mt + 0x19b000c9: 495, // mt-MT + 0x19d00000: 496, // mua + 0x19d00051: 497, // mua-CM + 0x1a500000: 498, // my + 0x1a5000c2: 499, // my-MM + 0x1a900000: 500, // mzn + 0x1a90009a: 501, // mzn-IR + 0x1ab00000: 502, // nah + 0x1ae00000: 503, // naq + 0x1ae000d0: 504, // naq-NA + 0x1af00000: 505, // nb + 0x1af000d8: 506, // nb-NO + 0x1af0010e: 507, // nb-SJ + 0x1b100000: 508, // nd + 0x1b100161: 509, // nd-ZW + 0x1b400000: 510, // ne + 0x1b400097: 511, // ne-IN + 0x1b4000d9: 512, // ne-NP + 0x1bd00000: 513, // nl + 0x1bd0002f: 514, // nl-AW + 0x1bd00035: 515, // nl-BE + 0x1bd0003f: 516, // nl-BQ + 0x1bd0005a: 517, // nl-CW + 0x1bd000d7: 518, // nl-NL + 0x1bd00114: 519, // nl-SR + 0x1bd00119: 520, // nl-SX + 0x1be00000: 521, // nmg + 0x1be00051: 522, // nmg-CM + 0x1bf00000: 523, // nn + 0x1bf000d8: 524, // nn-NO + 0x1c000000: 525, // nnh + 0x1c000051: 526, // nnh-CM + 0x1c100000: 527, // no + 0x1c500000: 528, // nqo + 0x1c600000: 529, // nr + 0x1c800000: 530, // nso + 0x1c900000: 531, // nus + 0x1c900115: 532, // nus-SS + 0x1cc00000: 533, // ny + 0x1ce00000: 534, // nyn + 0x1ce0012f: 535, // nyn-UG + 0x1d200000: 536, // om + 0x1d20006e: 537, // om-ET + 0x1d2000a2: 538, // om-KE + 0x1d300000: 539, // or + 0x1d300097: 540, // or-IN + 0x1d400000: 541, // os + 0x1d40007b: 542, // os-GE + 0x1d400104: 543, // os-RU + 0x1d700000: 544, // pa + 0x1d705000: 545, // pa-Arab + 0x1d7050e6: 546, // pa-Arab-PK + 0x1d72f000: 547, // pa-Guru + 0x1d72f097: 548, // pa-Guru-IN + 0x1db00000: 549, // pap + 0x1e700000: 550, // pl + 0x1e7000e7: 551, // pl-PL + 0x1ed00000: 552, // prg + 0x1ed00001: 553, // prg-001 + 0x1ee00000: 554, // ps + 0x1ee00023: 555, // ps-AF + 0x1ef00000: 556, // pt + 0x1ef00029: 557, // pt-AO + 0x1ef00040: 558, // pt-BR + 0x1ef0004d: 559, // pt-CH + 0x1ef00059: 560, // pt-CV + 0x1ef00084: 561, // pt-GQ + 0x1ef00089: 562, // pt-GW + 0x1ef000b5: 563, // pt-LU + 0x1ef000c4: 564, // pt-MO + 0x1ef000cf: 565, // pt-MZ + 0x1ef000ec: 566, // pt-PT + 0x1ef00116: 567, // pt-ST + 0x1ef00124: 568, // pt-TL + 0x1f100000: 569, // qu + 0x1f10003e: 570, // qu-BO + 0x1f100068: 571, // qu-EC + 0x1f1000e2: 572, // qu-PE + 0x1fc00000: 573, // rm + 0x1fc0004d: 574, // rm-CH + 0x20100000: 575, // rn + 0x20100039: 576, // rn-BI + 0x20300000: 577, // ro + 0x203000ba: 578, // ro-MD + 0x20300102: 579, // ro-RO + 0x20500000: 580, // rof + 0x2050012d: 581, // rof-TZ + 0x20700000: 582, // ru + 0x20700046: 583, // ru-BY + 0x207000a3: 584, // ru-KG + 0x207000ac: 585, // ru-KZ + 0x207000ba: 586, // ru-MD + 0x20700104: 587, // ru-RU + 0x2070012e: 588, // ru-UA + 0x20a00000: 589, // rw + 0x20a00105: 590, // rw-RW + 0x20b00000: 591, // rwk + 0x20b0012d: 592, // rwk-TZ + 0x20f00000: 593, // sah + 0x20f00104: 594, // sah-RU + 0x21000000: 595, // saq + 0x210000a2: 596, // saq-KE + 0x21400000: 597, // sbp + 0x2140012d: 598, // sbp-TZ + 0x21c00000: 599, // sdh + 0x21d00000: 600, // se + 0x21d00070: 601, // se-FI + 0x21d000d8: 602, // se-NO + 0x21d0010a: 603, // se-SE + 0x21f00000: 604, // seh + 0x21f000cf: 605, // seh-MZ + 0x22100000: 606, // ses + 0x221000c1: 607, // ses-ML + 0x22200000: 608, // sg + 0x2220004b: 609, // sg-CF + 0x22600000: 610, // shi + 0x22652000: 611, // shi-Latn + 0x226520b8: 612, // shi-Latn-MA + 0x226d2000: 613, // shi-Tfng + 0x226d20b8: 614, // shi-Tfng-MA + 0x22800000: 615, // si + 0x228000b1: 616, // si-LK + 0x22a00000: 617, // sk + 0x22a0010f: 618, // sk-SK + 0x22c00000: 619, // sl + 0x22c0010d: 620, // sl-SI + 0x23000000: 621, // sma + 0x23100000: 622, // smi + 0x23200000: 623, // smj + 0x23300000: 624, // smn + 0x23300070: 625, // smn-FI + 0x23500000: 626, // sms + 0x23600000: 627, // sn + 0x23600161: 628, // sn-ZW + 0x23800000: 629, // so + 0x23800061: 630, // so-DJ + 0x2380006e: 631, // so-ET + 0x238000a2: 632, // so-KE + 0x23800113: 633, // so-SO + 0x23a00000: 634, // sq + 0x23a00026: 635, // sq-AL + 0x23a000c0: 636, // sq-MK + 0x23a0014a: 637, // sq-XK + 0x23b00000: 638, // sr + 0x23b1e000: 639, // sr-Cyrl + 0x23b1e032: 640, // sr-Cyrl-BA + 0x23b1e0bb: 641, // sr-Cyrl-ME + 0x23b1e103: 642, // sr-Cyrl-RS + 0x23b1e14a: 643, // sr-Cyrl-XK + 0x23b52000: 644, // sr-Latn + 0x23b52032: 645, // sr-Latn-BA + 0x23b520bb: 646, // sr-Latn-ME + 0x23b52103: 647, // sr-Latn-RS + 0x23b5214a: 648, // sr-Latn-XK + 0x24000000: 649, // ss + 0x24100000: 650, // ssy + 0x24200000: 651, // st + 0x24700000: 652, // sv + 0x24700030: 653, // sv-AX + 0x24700070: 654, // sv-FI + 0x2470010a: 655, // sv-SE + 0x24800000: 656, // sw + 0x2480004a: 657, // sw-CD + 0x248000a2: 658, // sw-KE + 0x2480012d: 659, // sw-TZ + 0x2480012f: 660, // sw-UG + 0x24f00000: 661, // syr + 0x25100000: 662, // ta + 0x25100097: 663, // ta-IN + 0x251000b1: 664, // ta-LK + 0x251000ce: 665, // ta-MY + 0x2510010b: 666, // ta-SG + 0x25800000: 667, // te + 0x25800097: 668, // te-IN + 0x25a00000: 669, // teo + 0x25a000a2: 670, // teo-KE + 0x25a0012f: 671, // teo-UG + 0x25d00000: 672, // th + 0x25d00121: 673, // th-TH + 0x26100000: 674, // ti + 0x2610006c: 675, // ti-ER + 0x2610006e: 676, // ti-ET + 0x26200000: 677, // tig + 0x26400000: 678, // tk + 0x26400125: 679, // tk-TM + 0x26b00000: 680, // tn + 0x26c00000: 681, // to + 0x26c00127: 682, // to-TO + 0x26f00000: 683, // tr + 0x26f0005c: 684, // tr-CY + 0x26f00129: 685, // tr-TR + 0x27200000: 686, // ts + 0x27e00000: 687, // twq + 0x27e000d2: 688, // twq-NE + 0x28200000: 689, // tzm + 0x282000b8: 690, // tzm-MA + 0x28400000: 691, // ug + 0x28400052: 692, // ug-CN + 0x28600000: 693, // uk + 0x2860012e: 694, // uk-UA + 0x28c00000: 695, // ur + 0x28c00097: 696, // ur-IN + 0x28c000e6: 697, // ur-PK + 0x28d00000: 698, // uz + 0x28d05000: 699, // uz-Arab + 0x28d05023: 700, // uz-Arab-AF + 0x28d1e000: 701, // uz-Cyrl + 0x28d1e134: 702, // uz-Cyrl-UZ + 0x28d52000: 703, // uz-Latn + 0x28d52134: 704, // uz-Latn-UZ + 0x28e00000: 705, // vai + 0x28e52000: 706, // vai-Latn + 0x28e520b2: 707, // vai-Latn-LR + 0x28ed9000: 708, // vai-Vaii + 0x28ed90b2: 709, // vai-Vaii-LR + 0x28f00000: 710, // ve + 0x29200000: 711, // vi + 0x2920013b: 712, // vi-VN + 0x29700000: 713, // vo + 0x29700001: 714, // vo-001 + 0x29a00000: 715, // vun + 0x29a0012d: 716, // vun-TZ + 0x29b00000: 717, // wa + 0x29c00000: 718, // wae + 0x29c0004d: 719, // wae-CH + 0x2a400000: 720, // wo + 0x2a900000: 721, // xh + 0x2b100000: 722, // xog + 0x2b10012f: 723, // xog-UG + 0x2b700000: 724, // yav + 0x2b700051: 725, // yav-CM + 0x2b900000: 726, // yi + 0x2b900001: 727, // yi-001 + 0x2ba00000: 728, // yo + 0x2ba0003a: 729, // yo-BJ + 0x2ba000d4: 730, // yo-NG + 0x2bd00000: 731, // yue + 0x2bd0008b: 732, // yue-HK + 0x2c300000: 733, // zgh + 0x2c3000b8: 734, // zgh-MA + 0x2c400000: 735, // zh + 0x2c434000: 736, // zh-Hans + 0x2c434052: 737, // zh-Hans-CN + 0x2c43408b: 738, // zh-Hans-HK + 0x2c4340c4: 739, // zh-Hans-MO + 0x2c43410b: 740, // zh-Hans-SG + 0x2c435000: 741, // zh-Hant + 0x2c43508b: 742, // zh-Hant-HK + 0x2c4350c4: 743, // zh-Hant-MO + 0x2c43512c: 744, // zh-Hant-TW + 0x2c600000: 745, // zu + 0x2c60015e: 746, // zu-ZA +} + +// Total table size 4550 bytes (4KiB); checksum: B6D49547 diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go new file mode 100644 index 0000000000..5c6dcbd94d --- /dev/null +++ b/vendor/golang.org/x/text/language/language.go @@ -0,0 +1,975 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run maketables.go gen_common.go -output tables.go +//go:generate go run gen_index.go + +// Package language implements BCP 47 language tags and related functionality. +// +// The Tag type, which is used to represent languages, is agnostic to the +// meaning of its subtags. Tags are not fully canonicalized to preserve +// information that may be valuable in certain contexts. As a consequence, two +// different tags may represent identical languages. +// +// Initializing language- or locale-specific components usually consists of +// two steps. The first step is to select a display language based on the +// preferred languages of the user and the languages supported by an application. +// The second step is to create the language-specific services based on +// this selection. Each is discussed in more details below. +// +// Matching preferred against supported languages +// +// An application may support various languages. This list is typically limited +// by the languages for which there exists translations of the user interface. +// Similarly, a user may provide a list of preferred languages which is limited +// by the languages understood by this user. +// An application should use a Matcher to find the best supported language based +// on the user's preferred list. +// Matchers are aware of the intricacies of equivalence between languages. +// The default Matcher implementation takes into account things such as +// deprecated subtags, legacy tags, and mutual intelligibility between scripts +// and languages. +// +// A Matcher for English, Australian English, Danish, and standard Mandarin can +// be defined as follows: +// +// var matcher = language.NewMatcher([]language.Tag{ +// language.English, // The first language is used as fallback. +// language.MustParse("en-AU"), +// language.Danish, +// language.Chinese, +// }) +// +// The following code selects the best match for someone speaking Spanish and +// Norwegian: +// +// preferred := []language.Tag{ language.Spanish, language.Norwegian } +// tag, _, _ := matcher.Match(preferred...) +// +// In this case, the best match is Danish, as Danish is sufficiently a match to +// Norwegian to not have to fall back to the default. +// See ParseAcceptLanguage on how to handle the Accept-Language HTTP header. +// +// Selecting language-specific services +// +// One should always use the Tag returned by the Matcher to create an instance +// of any of the language-specific services provided by the text repository. +// This prevents the mixing of languages, such as having a different language for +// messages and display names, as well as improper casing or sorting order for +// the selected language. +// Using the returned Tag also allows user-defined settings, such as collation +// order or numbering system to be transparently passed as options. +// +// If you have language-specific data in your application, however, it will in +// most cases suffice to use the index returned by the matcher to identify +// the user language. +// The following loop provides an alternative in case this is not sufficient: +// +// supported := map[language.Tag]data{ +// language.English: enData, +// language.MustParse("en-AU"): enAUData, +// language.Danish: daData, +// language.Chinese: zhData, +// } +// tag, _, _ := matcher.Match(preferred...) +// for ; tag != language.Und; tag = tag.Parent() { +// if v, ok := supported[tag]; ok { +// return v +// } +// } +// return enData // should not reach here +// +// Repeatedly taking the Parent of the tag returned by Match will eventually +// match one of the tags used to initialize the Matcher. +// +// Canonicalization +// +// By default, only legacy and deprecated tags are converted into their +// canonical equivalent. All other information is preserved. This approach makes +// the confidence scores more accurate and allows matchers to distinguish +// between variants that are otherwise lost. +// +// As a consequence, two tags that should be treated as identical according to +// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The +// Matchers will handle such distinctions, though, and are aware of the +// equivalence relations. The CanonType type can be used to alter the +// canonicalization form. +// +// References +// +// BCP 47 - Tags for Identifying Languages +// http://tools.ietf.org/html/bcp47 +package language + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "errors" + "fmt" + "strings" +) + +const ( + // maxCoreSize is the maximum size of a BCP 47 tag without variants and + // extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes. + maxCoreSize = 12 + + // max99thPercentileSize is a somewhat arbitrary buffer size that presumably + // is large enough to hold at least 99% of the BCP 47 tags. + max99thPercentileSize = 32 + + // maxSimpleUExtensionSize is the maximum size of a -u extension with one + // key-type pair. Equals len("-u-") + key (2) + dash + max value (8). + maxSimpleUExtensionSize = 14 +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. +type Tag struct { + lang langID + region regionID + script scriptID + pVariant byte // offset in str, includes preceding '-' + pExt uint16 // offset of first extension, includes preceding '-' + + // str is the string representation of the Tag. It will only be used if the + // tag has variants or extensions. + str string +} + +// Make is a convenience wrapper for Parse that omits the error. +// In case of an error, a sensible default is returned. +func Make(s string) Tag { + return Default.Make(s) +} + +// Make is a convenience wrapper for c.Parse that omits the error. +// In case of an error, a sensible default is returned. +func (c CanonType) Make(s string) Tag { + t, _ := c.Parse(s) + return t +} + +// Raw returns the raw base language, script and region, without making an +// attempt to infer their values. +func (t Tag) Raw() (b Base, s Script, r Region) { + return Base{t.lang}, Script{t.script}, Region{t.region} +} + +// equalTags compares language, script and region subtags only. +func (t Tag) equalTags(a Tag) bool { + return t.lang == a.lang && t.script == a.script && t.region == a.region +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + if int(t.pVariant) < len(t.str) { + return false + } + return t.equalTags(und) +} + +// private reports whether the Tag consists solely of a private use tag. +func (t Tag) private() bool { + return t.str != "" && t.pVariant == 0 +} + +// CanonType can be used to enable or disable various types of canonicalization. +type CanonType int + +const ( + // Replace deprecated base languages with their preferred replacements. + DeprecatedBase CanonType = 1 << iota + // Replace deprecated scripts with their preferred replacements. + DeprecatedScript + // Replace deprecated regions with their preferred replacements. + DeprecatedRegion + // Remove redundant scripts. + SuppressScript + // Normalize legacy encodings. This includes legacy languages defined in + // CLDR as well as bibliographic codes defined in ISO-639. + Legacy + // Map the dominant language of a macro language group to the macro language + // subtag. For example cmn -> zh. + Macro + // The CLDR flag should be used if full compatibility with CLDR is required. + // There are a few cases where language.Tag may differ from CLDR. To follow all + // of CLDR's suggestions, use All|CLDR. + CLDR + + // Raw can be used to Compose or Parse without Canonicalization. + Raw CanonType = 0 + + // Replace all deprecated tags with their preferred replacements. + Deprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion + + // All canonicalizations recommended by BCP 47. + BCP47 = Deprecated | SuppressScript + + // All canonicalizations. + All = BCP47 | Legacy | Macro + + // Default is the canonicalization used by Parse, Make and Compose. To + // preserve as much information as possible, canonicalizations that remove + // potentially valuable information are not included. The Matcher is + // designed to recognize similar tags that would be the same if + // they were canonicalized using All. + Default = Deprecated | Legacy + + canonLang = DeprecatedBase | Legacy | Macro + + // TODO: LikelyScript, LikelyRegion: suppress similar to ICU. +) + +// canonicalize returns the canonicalized equivalent of the tag and +// whether there was any change. +func (t Tag) canonicalize(c CanonType) (Tag, bool) { + if c == Raw { + return t, false + } + changed := false + if c&SuppressScript != 0 { + if t.lang < langNoIndexOffset && uint8(t.script) == suppressScript[t.lang] { + t.script = 0 + changed = true + } + } + if c&canonLang != 0 { + for { + if l, aliasType := normLang(t.lang); l != t.lang { + switch aliasType { + case langLegacy: + if c&Legacy != 0 { + if t.lang == _sh && t.script == 0 { + t.script = _Latn + } + t.lang = l + changed = true + } + case langMacro: + if c&Macro != 0 { + // We deviate here from CLDR. The mapping "nb" -> "no" + // qualifies as a typical Macro language mapping. However, + // for legacy reasons, CLDR maps "no", the macro language + // code for Norwegian, to the dominant variant "nb". This + // change is currently under consideration for CLDR as well. + // See http://unicode.org/cldr/trac/ticket/2698 and also + // http://unicode.org/cldr/trac/ticket/1790 for some of the + // practical implications. TODO: this check could be removed + // if CLDR adopts this change. + if c&CLDR == 0 || t.lang != _nb { + changed = true + t.lang = l + } + } + case langDeprecated: + if c&DeprecatedBase != 0 { + if t.lang == _mo && t.region == 0 { + t.region = _MD + } + t.lang = l + changed = true + // Other canonicalization types may still apply. + continue + } + } + } else if c&Legacy != 0 && t.lang == _no && c&CLDR != 0 { + t.lang = _nb + changed = true + } + break + } + } + if c&DeprecatedScript != 0 { + if t.script == _Qaai { + changed = true + t.script = _Zinh + } + } + if c&DeprecatedRegion != 0 { + if r := normRegion(t.region); r != 0 { + changed = true + t.region = r + } + } + return t, changed +} + +// Canonicalize returns the canonicalized equivalent of the tag. +func (c CanonType) Canonicalize(t Tag) (Tag, error) { + t, changed := t.canonicalize(c) + if changed { + t.remakeString() + } + return t, nil +} + +// Confidence indicates the level of certainty for a given return value. +// For example, Serbian may be written in Cyrillic or Latin script. +// The confidence level indicates whether a value was explicitly specified, +// whether it is typically the only possible value, or whether there is +// an ambiguity. +type Confidence int + +const ( + No Confidence = iota // full confidence that there was no match + Low // most likely value picked out of a set of alternatives + High // value is generally assumed to be the correct match + Exact // exact match or explicitly specified value +) + +var confName = []string{"No", "Low", "High", "Exact"} + +func (c Confidence) String() string { + return confName[c] +} + +// remakeString is used to update t.str in case lang, script or region changed. +// It is assumed that pExt and pVariant still point to the start of the +// respective parts. +func (t *Tag) remakeString() { + if t.str == "" { + return + } + extra := t.str[t.pVariant:] + if t.pVariant > 0 { + extra = extra[1:] + } + if t.equalTags(und) && strings.HasPrefix(extra, "x-") { + t.str = extra + t.pVariant = 0 + t.pExt = 0 + return + } + var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases. + b := buf[:t.genCoreBytes(buf[:])] + if extra != "" { + diff := len(b) - int(t.pVariant) + b = append(b, '-') + b = append(b, extra...) + t.pVariant = uint8(int(t.pVariant) + diff) + t.pExt = uint16(int(t.pExt) + diff) + } else { + t.pVariant = uint8(len(b)) + t.pExt = uint16(len(b)) + } + t.str = string(b) +} + +// genCoreBytes writes a string for the base languages, script and region tags +// to the given buffer and returns the number of bytes written. It will never +// write more than maxCoreSize bytes. +func (t *Tag) genCoreBytes(buf []byte) int { + n := t.lang.stringToBuf(buf[:]) + if t.script != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.script.String()) + } + if t.region != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.region.String()) + } + return n +} + +// String returns the canonical string representation of the language tag. +func (t Tag) String() string { + if t.str != "" { + return t.str + } + if t.script == 0 && t.region == 0 { + return t.lang.String() + } + buf := [maxCoreSize]byte{} + return string(buf[:t.genCoreBytes(buf[:])]) +} + +// Base returns the base language of the language tag. If the base language is +// unspecified, an attempt will be made to infer it from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Base() (Base, Confidence) { + if t.lang != 0 { + return Base{t.lang}, Exact + } + c := High + if t.script == 0 && !(Region{t.region}).IsCountry() { + c = Low + } + if tag, err := addTags(t); err == nil && tag.lang != 0 { + return Base{tag.lang}, c + } + return Base{0}, No +} + +// Script infers the script for the language tag. If it was not explicitly given, it will infer +// a most likely candidate. +// If more than one script is commonly used for a language, the most likely one +// is returned with a low confidence indication. For example, it returns (Cyrl, Low) +// for Serbian. +// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined) +// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks +// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts. +// See http://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for +// unknown value in CLDR. (Zzzz, Exact) is returned if Zzzz was explicitly specified. +// Note that an inferred script is never guaranteed to be the correct one. Latin is +// almost exclusively used for Afrikaans, but Arabic has been used for some texts +// in the past. Also, the script that is commonly used may change over time. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Script() (Script, Confidence) { + if t.script != 0 { + return Script{t.script}, Exact + } + sc, c := scriptID(_Zzzz), No + if t.lang < langNoIndexOffset { + if scr := scriptID(suppressScript[t.lang]); scr != 0 { + // Note: it is not always the case that a language with a suppress + // script value is only written in one script (e.g. kk, ms, pa). + if t.region == 0 { + return Script{scriptID(scr)}, High + } + sc, c = scr, High + } + } + if tag, err := addTags(t); err == nil { + if tag.script != sc { + sc, c = tag.script, Low + } + } else { + t, _ = (Deprecated | Macro).Canonicalize(t) + if tag, err := addTags(t); err == nil && tag.script != sc { + sc, c = tag.script, Low + } + } + return Script{sc}, c +} + +// Region returns the region for the language tag. If it was not explicitly given, it will +// infer a most likely candidate from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Region() (Region, Confidence) { + if t.region != 0 { + return Region{t.region}, Exact + } + if t, err := addTags(t); err == nil { + return Region{t.region}, Low // TODO: differentiate between high and low. + } + t, _ = (Deprecated | Macro).Canonicalize(t) + if tag, err := addTags(t); err == nil { + return Region{tag.region}, Low + } + return Region{_ZZ}, No // TODO: return world instead of undetermined? +} + +// Variant returns the variants specified explicitly for this language tag. +// or nil if no variant was specified. +func (t Tag) Variants() []Variant { + v := []Variant{} + if int(t.pVariant) < int(t.pExt) { + for x, str := "", t.str[t.pVariant:t.pExt]; str != ""; { + x, str = nextToken(str) + v = append(v, Variant{x}) + } + } + return v +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +func (t Tag) Parent() Tag { + if t.str != "" { + // Strip the variants and extensions. + t, _ = Raw.Compose(t.Raw()) + if t.region == 0 && t.script != 0 && t.lang != 0 { + base, _ := addTags(Tag{lang: t.lang}) + if base.script == t.script { + return Tag{lang: t.lang} + } + } + return t + } + if t.lang != 0 { + if t.region != 0 { + maxScript := t.script + if maxScript == 0 { + max, _ := addTags(t) + maxScript = max.script + } + + for i := range parents { + if langID(parents[i].lang) == t.lang && scriptID(parents[i].maxScript) == maxScript { + for _, r := range parents[i].fromRegion { + if regionID(r) == t.region { + return Tag{ + lang: t.lang, + script: scriptID(parents[i].script), + region: regionID(parents[i].toRegion), + } + } + } + } + } + + // Strip the script if it is the default one. + base, _ := addTags(Tag{lang: t.lang}) + if base.script != maxScript { + return Tag{lang: t.lang, script: maxScript} + } + return Tag{lang: t.lang} + } else if t.script != 0 { + // The parent for an base-script pair with a non-default script is + // "und" instead of the base language. + base, _ := addTags(Tag{lang: t.lang}) + if base.script != t.script { + return und + } + return Tag{lang: t.lang} + } + } + return und +} + +// returns token t and the rest of the string. +func nextToken(s string) (t, tail string) { + p := strings.Index(s[1:], "-") + if p == -1 { + return s[1:], "" + } + p++ + return s[1:p], s[p:] +} + +// Extension is a single BCP 47 extension. +type Extension struct { + s string +} + +// String returns the string representation of the extension, including the +// type tag. +func (e Extension) String() string { + return e.s +} + +// ParseExtension parses s as an extension and returns it on success. +func ParseExtension(s string) (e Extension, err error) { + scan := makeScannerString(s) + var end int + if n := len(scan.token); n != 1 { + return Extension{}, errSyntax + } + scan.toLower(0, len(scan.b)) + end = parseExtension(&scan) + if end != len(s) { + return Extension{}, errSyntax + } + return Extension{string(scan.b)}, nil +} + +// Type returns the one-byte extension type of e. It returns 0 for the zero +// exception. +func (e Extension) Type() byte { + if e.s == "" { + return 0 + } + return e.s[0] +} + +// Tokens returns the list of tokens of e. +func (e Extension) Tokens() []string { + return strings.Split(e.s, "-") +} + +// Extension returns the extension of type x for tag t. It will return +// false for ok if t does not have the requested extension. The returned +// extension will be invalid in this case. +func (t Tag) Extension(x byte) (ext Extension, ok bool) { + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + if ext[0] == x { + return Extension{ext}, true + } + } + return Extension{string(x)}, false +} + +// Extensions returns all extensions of t. +func (t Tag) Extensions() []Extension { + e := []Extension{} + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + e = append(e, Extension{ext}) + } + return e +} + +// TypeForKey returns the type associated with the given key, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// TypeForKey will traverse the inheritance chain to get the correct value. +func (t Tag) TypeForKey(key string) string { + if start, end, _ := t.findTypeForKey(key); end != start { + return t.str[start:end] + } + return "" +} + +var ( + errPrivateUse = errors.New("cannot set a key on a private use tag") + errInvalidArguments = errors.New("invalid key or type") +) + +// SetTypeForKey returns a new Tag with the key set to type, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// An empty value removes an existing pair with the same key. +func (t Tag) SetTypeForKey(key, value string) (Tag, error) { + if t.private() { + return t, errPrivateUse + } + if len(key) != 2 { + return t, errInvalidArguments + } + + // Remove the setting if value is "". + if value == "" { + start, end, _ := t.findTypeForKey(key) + if start != end { + // Remove key tag and leading '-'. + start -= 4 + + // Remove a possible empty extension. + if (end == len(t.str) || t.str[end+2] == '-') && t.str[start-2] == '-' { + start -= 2 + } + if start == int(t.pVariant) && end == len(t.str) { + t.str = "" + t.pVariant, t.pExt = 0, 0 + } else { + t.str = fmt.Sprintf("%s%s", t.str[:start], t.str[end:]) + } + } + return t, nil + } + + if len(value) < 3 || len(value) > 8 { + return t, errInvalidArguments + } + + var ( + buf [maxCoreSize + maxSimpleUExtensionSize]byte + uStart int // start of the -u extension. + ) + + // Generate the tag string if needed. + if t.str == "" { + uStart = t.genCoreBytes(buf[:]) + buf[uStart] = '-' + uStart++ + } + + // Create new key-type pair and parse it to verify. + b := buf[uStart:] + copy(b, "u-") + copy(b[2:], key) + b[4] = '-' + b = b[:5+copy(b[5:], value)] + scan := makeScanner(b) + if parseExtensions(&scan); scan.err != nil { + return t, scan.err + } + + // Assemble the replacement string. + if t.str == "" { + t.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1) + t.str = string(buf[:uStart+len(b)]) + } else { + s := t.str + start, end, hasExt := t.findTypeForKey(key) + if start == end { + if hasExt { + b = b[2:] + } + t.str = fmt.Sprintf("%s-%s%s", s[:start], b, s[end:]) + } else { + t.str = fmt.Sprintf("%s%s%s", s[:start], value, s[end:]) + } + } + return t, nil +} + +// findKeyAndType returns the start and end position for the type corresponding +// to key or the point at which to insert the key-value pair if the type +// wasn't found. The hasExt return value reports whether an -u extension was present. +// Note: the extensions are typically very small and are likely to contain +// only one key-type pair. +func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) { + p := int(t.pExt) + if len(key) != 2 || p == len(t.str) || p == 0 { + return p, p, false + } + s := t.str + + // Find the correct extension. + for p++; s[p] != 'u'; p++ { + if s[p] > 'u' { + p-- + return p, p, false + } + if p = nextExtension(s, p); p == len(s) { + return len(s), len(s), false + } + } + // Proceed to the hyphen following the extension name. + p++ + + // curKey is the key currently being processed. + curKey := "" + + // Iterate over keys until we get the end of a section. + for { + // p points to the hyphen preceding the current token. + if p3 := p + 3; s[p3] == '-' { + // Found a key. + // Check whether we just processed the key that was requested. + if curKey == key { + return start, p, true + } + // Set to the next key and continue scanning type tokens. + curKey = s[p+1 : p3] + if curKey > key { + return p, p, true + } + // Start of the type token sequence. + start = p + 4 + // A type is at least 3 characters long. + p += 7 // 4 + 3 + } else { + // Attribute or type, which is at least 3 characters long. + p += 4 + } + // p points past the third character of a type or attribute. + max := p + 5 // maximum length of token plus hyphen. + if len(s) < max { + max = len(s) + } + for ; p < max && s[p] != '-'; p++ { + } + // Bail if we have exhausted all tokens or if the next token starts + // a new extension. + if p == len(s) || s[p+2] == '-' { + if curKey == key { + return start, p, true + } + return p, p, true + } + } +} + +// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags +// for which data exists in the text repository. The index will change over time +// and should not be stored in persistent storage. Extensions, except for the +// 'va' type of the 'u' extension, are ignored. It will return 0, false if no +// compact tag exists, where 0 is the index for the root language (Und). +func CompactIndex(t Tag) (index int, ok bool) { + // TODO: perhaps give more frequent tags a lower index. + // TODO: we could make the indexes stable. This will excluded some + // possibilities for optimization, so don't do this quite yet. + b, s, r := t.Raw() + if len(t.str) > 0 { + if strings.HasPrefix(t.str, "x-") { + // We have no entries for user-defined tags. + return 0, false + } + if uint16(t.pVariant) != t.pExt { + // There are no tags with variants and an u-va type. + if t.TypeForKey("va") != "" { + return 0, false + } + t, _ = Raw.Compose(b, s, r, t.Variants()) + } else if _, ok := t.Extension('u'); ok { + // Strip all but the 'va' entry. + variant := t.TypeForKey("va") + t, _ = Raw.Compose(b, s, r) + t, _ = t.SetTypeForKey("va", variant) + } + if len(t.str) > 0 { + // We have some variants. + for i, s := range specialTags { + if s == t { + return i + 1, true + } + } + return 0, false + } + } + // No variants specified: just compare core components. + // The key has the form lllssrrr, where l, s, and r are nibbles for + // respectively the langID, scriptID, and regionID. + key := uint32(b.langID) << (8 + 12) + key |= uint32(s.scriptID) << 12 + key |= uint32(r.regionID) + x, ok := coreTags[key] + return int(x), ok +} + +// Base is an ISO 639 language code, used for encoding the base language +// of a language tag. +type Base struct { + langID +} + +// ParseBase parses a 2- or 3-letter ISO 639 code. +// It returns a ValueError if s is a well-formed but unknown language identifier +// or another error if another error occurred. +func ParseBase(s string) (Base, error) { + if n := len(s); n < 2 || 3 < n { + return Base{}, errSyntax + } + var buf [3]byte + l, err := getLangID(buf[:copy(buf[:], s)]) + return Base{l}, err +} + +// Script is a 4-letter ISO 15924 code for representing scripts. +// It is idiomatically represented in title case. +type Script struct { + scriptID +} + +// ParseScript parses a 4-letter ISO 15924 code. +// It returns a ValueError if s is a well-formed but unknown script identifier +// or another error if another error occurred. +func ParseScript(s string) (Script, error) { + if len(s) != 4 { + return Script{}, errSyntax + } + var buf [4]byte + sc, err := getScriptID(script, buf[:copy(buf[:], s)]) + return Script{sc}, err +} + +// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions. +type Region struct { + regionID +} + +// EncodeM49 returns the Region for the given UN M.49 code. +// It returns an error if r is not a valid code. +func EncodeM49(r int) (Region, error) { + rid, err := getRegionM49(r) + return Region{rid}, err +} + +// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. +// It returns a ValueError if s is a well-formed but unknown region identifier +// or another error if another error occurred. +func ParseRegion(s string) (Region, error) { + if n := len(s); n < 2 || 3 < n { + return Region{}, errSyntax + } + var buf [3]byte + r, err := getRegionID(buf[:copy(buf[:], s)]) + return Region{r}, err +} + +// IsCountry returns whether this region is a country or autonomous area. This +// includes non-standard definitions from CLDR. +func (r Region) IsCountry() bool { + if r.regionID == 0 || r.IsGroup() || r.IsPrivateUse() && r.regionID != _XK { + return false + } + return true +} + +// IsGroup returns whether this region defines a collection of regions. This +// includes non-standard definitions from CLDR. +func (r Region) IsGroup() bool { + if r.regionID == 0 { + return false + } + return int(regionInclusion[r.regionID]) < len(regionContainment) +} + +// Contains returns whether Region c is contained by Region r. It returns true +// if c == r. +func (r Region) Contains(c Region) bool { + return r.regionID.contains(c.regionID) +} + +func (r regionID) contains(c regionID) bool { + if r == c { + return true + } + g := regionInclusion[r] + if g >= nRegionGroups { + return false + } + m := regionContainment[g] + + d := regionInclusion[c] + b := regionInclusionBits[d] + + // A contained country may belong to multiple disjoint groups. Matching any + // of these indicates containment. If the contained region is a group, it + // must strictly be a subset. + if d >= nRegionGroups { + return b&m != 0 + } + return b&^m == 0 +} + +var errNoTLD = errors.New("language: region is not a valid ccTLD") + +// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. +// In all other cases it returns either the region itself or an error. +// +// This method may return an error for a region for which there exists a +// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The +// region will already be canonicalized it was obtained from a Tag that was +// obtained using any of the default methods. +func (r Region) TLD() (Region, error) { + // See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the + // difference between ISO 3166-1 and IANA ccTLD. + if r.regionID == _GB { + r = Region{_UK} + } + if (r.typ() & ccTLD) == 0 { + return Region{}, errNoTLD + } + return r, nil +} + +// Canonicalize returns the region or a possible replacement if the region is +// deprecated. It will not return a replacement for deprecated regions that +// are split into multiple regions. +func (r Region) Canonicalize() Region { + if cr := normRegion(r.regionID); cr != 0 { + return Region{cr} + } + return r +} + +// Variant represents a registered variant of a language as defined by BCP 47. +type Variant struct { + variant string +} + +// ParseVariant parses and returns a Variant. An error is returned if s is not +// a valid variant. +func ParseVariant(s string) (Variant, error) { + s = strings.ToLower(s) + if _, ok := variantIndex[s]; ok { + return Variant{s}, nil + } + return Variant{}, mkErrInvalid([]byte(s)) +} + +// String returns the string representation of the variant. +func (v Variant) String() string { + return v.variant +} diff --git a/vendor/golang.org/x/text/language/lookup.go b/vendor/golang.org/x/text/language/lookup.go new file mode 100644 index 0000000000..1d80ac3708 --- /dev/null +++ b/vendor/golang.org/x/text/language/lookup.go @@ -0,0 +1,396 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "fmt" + "sort" + "strconv" + + "golang.org/x/text/internal/tag" +) + +// findIndex tries to find the given tag in idx and returns a standardized error +// if it could not be found. +func findIndex(idx tag.Index, key []byte, form string) (index int, err error) { + if !tag.FixCase(form, key) { + return 0, errSyntax + } + i := idx.Index(key) + if i == -1 { + return 0, mkErrInvalid(key) + } + return i, nil +} + +func searchUint(imap []uint16, key uint16) int { + return sort.Search(len(imap), func(i int) bool { + return imap[i] >= key + }) +} + +type langID uint16 + +// getLangID returns the langID of s if s is a canonical subtag +// or langUnknown if s is not a canonical subtag. +func getLangID(s []byte) (langID, error) { + if len(s) == 2 { + return getLangISO2(s) + } + return getLangISO3(s) +} + +// mapLang returns the mapped langID of id according to mapping m. +func normLang(id langID) (langID, langAliasType) { + k := sort.Search(len(langAliasMap), func(i int) bool { + return langAliasMap[i].from >= uint16(id) + }) + if k < len(langAliasMap) && langAliasMap[k].from == uint16(id) { + return langID(langAliasMap[k].to), langAliasTypes[k] + } + return id, langAliasTypeUnknown +} + +// getLangISO2 returns the langID for the given 2-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO2(s []byte) (langID, error) { + if !tag.FixCase("zz", s) { + return 0, errSyntax + } + if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 { + return langID(i), nil + } + return 0, mkErrInvalid(s) +} + +const base = 'z' - 'a' + 1 + +func strToInt(s []byte) uint { + v := uint(0) + for i := 0; i < len(s); i++ { + v *= base + v += uint(s[i] - 'a') + } + return v +} + +// converts the given integer to the original ASCII string passed to strToInt. +// len(s) must match the number of characters obtained. +func intToStr(v uint, s []byte) { + for i := len(s) - 1; i >= 0; i-- { + s[i] = byte(v%base) + 'a' + v /= base + } +} + +// getLangISO3 returns the langID for the given 3-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO3(s []byte) (langID, error) { + if tag.FixCase("und", s) { + // first try to match canonical 3-letter entries + for i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) { + if e := lang.Elem(i); e[3] == 0 && e[2] == s[2] { + // We treat "und" as special and always translate it to "unspecified". + // Note that ZZ and Zzzz are private use and are not treated as + // unspecified by default. + id := langID(i) + if id == nonCanonicalUnd { + return 0, nil + } + return id, nil + } + } + if i := altLangISO3.Index(s); i != -1 { + return langID(altLangIndex[altLangISO3.Elem(i)[3]]), nil + } + n := strToInt(s) + if langNoIndex[n/8]&(1<<(n%8)) != 0 { + return langID(n) + langNoIndexOffset, nil + } + // Check for non-canonical uses of ISO3. + for i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) { + if e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] { + return langID(i), nil + } + } + return 0, mkErrInvalid(s) + } + return 0, errSyntax +} + +// stringToBuf writes the string to b and returns the number of bytes +// written. cap(b) must be >= 3. +func (id langID) stringToBuf(b []byte) int { + if id >= langNoIndexOffset { + intToStr(uint(id)-langNoIndexOffset, b[:3]) + return 3 + } else if id == 0 { + return copy(b, "und") + } + l := lang[id<<2:] + if l[3] == 0 { + return copy(b, l[:3]) + } + return copy(b, l[:2]) +} + +// String returns the BCP 47 representation of the langID. +// Use b as variable name, instead of id, to ensure the variable +// used is consistent with that of Base in which this type is embedded. +func (b langID) String() string { + if b == 0 { + return "und" + } else if b >= langNoIndexOffset { + b -= langNoIndexOffset + buf := [3]byte{} + intToStr(uint(b), buf[:]) + return string(buf[:]) + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } + return l[:2] +} + +// ISO3 returns the ISO 639-3 language code. +func (b langID) ISO3() string { + if b == 0 || b >= langNoIndexOffset { + return b.String() + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } else if l[2] == 0 { + return altLangISO3.Elem(int(l[3]))[:3] + } + // This allocation will only happen for 3-letter ISO codes + // that are non-canonical BCP 47 language identifiers. + return l[0:1] + l[2:4] +} + +// IsPrivateUse reports whether this language code is reserved for private use. +func (b langID) IsPrivateUse() bool { + return langPrivateStart <= b && b <= langPrivateEnd +} + +type regionID uint16 + +// getRegionID returns the region id for s if s is a valid 2-letter region code +// or unknownRegion. +func getRegionID(s []byte) (regionID, error) { + if len(s) == 3 { + if isAlpha(s[0]) { + return getRegionISO3(s) + } + if i, err := strconv.ParseUint(string(s), 10, 10); err == nil { + return getRegionM49(int(i)) + } + } + return getRegionISO2(s) +} + +// getRegionISO2 returns the regionID for the given 2-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO2(s []byte) (regionID, error) { + i, err := findIndex(regionISO, s, "ZZ") + if err != nil { + return 0, err + } + return regionID(i) + isoRegionOffset, nil +} + +// getRegionISO3 returns the regionID for the given 3-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO3(s []byte) (regionID, error) { + if tag.FixCase("ZZZ", s) { + for i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) { + if e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] { + return regionID(i) + isoRegionOffset, nil + } + } + for i := 0; i < len(altRegionISO3); i += 3 { + if tag.Compare(altRegionISO3[i:i+3], s) == 0 { + return regionID(altRegionIDs[i/3]), nil + } + } + return 0, mkErrInvalid(s) + } + return 0, errSyntax +} + +func getRegionM49(n int) (regionID, error) { + if 0 < n && n <= 999 { + const ( + searchBits = 7 + regionBits = 9 + regionMask = 1<<regionBits - 1 + ) + idx := n >> searchBits + buf := fromM49[m49Index[idx]:m49Index[idx+1]] + val := uint16(n) << regionBits // we rely on bits shifting out + i := sort.Search(len(buf), func(i int) bool { + return buf[i] >= val + }) + if r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val { + return regionID(r & regionMask), nil + } + } + var e ValueError + fmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n) + return 0, e +} + +// normRegion returns a region if r is deprecated or 0 otherwise. +// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ). +// TODO: consider mapping split up regions to new most populous one (like CLDR). +func normRegion(r regionID) regionID { + m := regionOldMap + k := sort.Search(len(m), func(i int) bool { + return m[i].from >= uint16(r) + }) + if k < len(m) && m[k].from == uint16(r) { + return regionID(m[k].to) + } + return 0 +} + +const ( + iso3166UserAssigned = 1 << iota + ccTLD + bcp47Region +) + +func (r regionID) typ() byte { + return regionTypes[r] +} + +// String returns the BCP 47 representation for the region. +// It returns "ZZ" for an unspecified region. +func (r regionID) String() string { + if r < isoRegionOffset { + if r == 0 { + return "ZZ" + } + return fmt.Sprintf("%03d", r.M49()) + } + r -= isoRegionOffset + return regionISO.Elem(int(r))[:2] +} + +// ISO3 returns the 3-letter ISO code of r. +// Note that not all regions have a 3-letter ISO code. +// In such cases this method returns "ZZZ". +func (r regionID) ISO3() string { + if r < isoRegionOffset { + return "ZZZ" + } + r -= isoRegionOffset + reg := regionISO.Elem(int(r)) + switch reg[2] { + case 0: + return altRegionISO3[reg[3]:][:3] + case ' ': + return "ZZZ" + } + return reg[0:1] + reg[2:4] +} + +// M49 returns the UN M.49 encoding of r, or 0 if this encoding +// is not defined for r. +func (r regionID) M49() int { + return int(m49[r]) +} + +// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This +// may include private-use tags that are assigned by CLDR and used in this +// implementation. So IsPrivateUse and IsCountry can be simultaneously true. +func (r regionID) IsPrivateUse() bool { + return r.typ()&iso3166UserAssigned != 0 +} + +type scriptID uint8 + +// getScriptID returns the script id for string s. It assumes that s +// is of the format [A-Z][a-z]{3}. +func getScriptID(idx tag.Index, s []byte) (scriptID, error) { + i, err := findIndex(idx, s, "Zzzz") + return scriptID(i), err +} + +// String returns the script code in title case. +// It returns "Zzzz" for an unspecified script. +func (s scriptID) String() string { + if s == 0 { + return "Zzzz" + } + return script.Elem(int(s)) +} + +// IsPrivateUse reports whether this script code is reserved for private use. +func (s scriptID) IsPrivateUse() bool { + return _Qaaa <= s && s <= _Qabx +} + +const ( + maxAltTaglen = len("en-US-POSIX") + maxLen = maxAltTaglen +) + +var ( + // grandfatheredMap holds a mapping from legacy and grandfathered tags to + // their base language or index to more elaborate tag. + grandfatheredMap = map[[maxLen]byte]int16{ + [maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban + [maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami + [maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn + [maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak + [maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon + [maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux + [maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo + [maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn + [maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao + [maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay + [maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu + [maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok + [maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL + [maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE + [maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu + [maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan + [maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang + + // Grandfathered tags with no modern replacement will be converted as + // follows: + [maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish + [maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed + [maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default + [maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian + [maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min + + // CLDR-specific tag. + [maxLen]byte{'r', 'o', 'o', 't'}: 0, // root + [maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX" + } + + altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102} + + altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix" +) + +func grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) { + if v, ok := grandfatheredMap[s]; ok { + if v < 0 { + return Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true + } + t.lang = langID(v) + return t, true + } + return t, false +} diff --git a/vendor/golang.org/x/text/language/maketables.go b/vendor/golang.org/x/text/language/maketables.go new file mode 100644 index 0000000000..2cc995b379 --- /dev/null +++ b/vendor/golang.org/x/text/language/maketables.go @@ -0,0 +1,1635 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Language tag table generator. +// Data read from the web. + +package main + +import ( + "bufio" + "flag" + "fmt" + "io" + "io/ioutil" + "log" + "math" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/tag" + "golang.org/x/text/unicode/cldr" +) + +var ( + test = flag.Bool("test", + false, + "test existing tables; can be used to compare web data with package data.") + outputFile = flag.String("output", + "tables.go", + "output file for generated tables") +) + +var comment = []string{ + ` +lang holds an alphabetically sorted list of ISO-639 language identifiers. +All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag. +For 2-byte language identifiers, the two successive bytes have the following meaning: + - if the first letter of the 2- and 3-letter ISO codes are the same: + the second and third letter of the 3-letter ISO code. + - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3. +For 3-byte language identifiers the 4th byte is 0.`, + ` +langNoIndex is a bit vector of all 3-letter language codes that are not used as an index +in lookup tables. The language ids for these language codes are derived directly +from the letters and are not consecutive.`, + ` +altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives +to 2-letter language codes that cannot be derived using the method described above. +Each 3-letter code is followed by its 1-byte langID.`, + ` +altLangIndex is used to convert indexes in altLangISO3 to langIDs.`, + ` +langAliasMap maps langIDs to their suggested replacements.`, + ` +script is an alphabetically sorted list of ISO 15924 codes. The index +of the script in the string, divided by 4, is the internal scriptID.`, + ` +isoRegionOffset needs to be added to the index of regionISO to obtain the regionID +for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for +the UN.M49 codes used for groups.)`, + ` +regionISO holds a list of alphabetically sorted 2-letter ISO region codes. +Each 2-letter codes is followed by two bytes with the following meaning: + - [A-Z}{2}: the first letter of the 2-letter code plus these two + letters form the 3-letter ISO code. + - 0, n: index into altRegionISO3.`, + ` +regionTypes defines the status of a region for various standards.`, + ` +m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are +codes indicating collections of regions.`, + ` +m49Index gives indexes into fromM49 based on the three most significant bits +of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in + fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]] +for an entry where the first 7 bits match the 7 lsb of the UN.M49 code. +The region code is stored in the 9 lsb of the indexed value.`, + ` +fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.`, + ` +altRegionISO3 holds a list of 3-letter region codes that cannot be +mapped to 2-letter codes using the default algorithm. This is a short list.`, + ` +altRegionIDs holds a list of regionIDs the positions of which match those +of the 3-letter ISO codes in altRegionISO3.`, + ` +variantNumSpecialized is the number of specialized variants in variants.`, + ` +suppressScript is an index from langID to the dominant script for that language, +if it exists. If a script is given, it should be suppressed from the language tag.`, + ` +likelyLang is a lookup table, indexed by langID, for the most likely +scripts and regions given incomplete information. If more entries exist for a +given language, region and script are the index and size respectively +of the list in likelyLangList.`, + ` +likelyLangList holds lists info associated with likelyLang.`, + ` +likelyRegion is a lookup table, indexed by regionID, for the most likely +languages and scripts given incomplete information. If more entries exist +for a given regionID, lang and script are the index and size respectively +of the list in likelyRegionList. +TODO: exclude containers and user-definable regions from the list.`, + ` +likelyRegionList holds lists info associated with likelyRegion.`, + ` +likelyScript is a lookup table, indexed by scriptID, for the most likely +languages and regions given a script.`, + ` +matchLang holds pairs of langIDs of base languages that are typically +mutually intelligible. Each pair is associated with a confidence and +whether the intelligibility goes one or both ways.`, + ` +matchScript holds pairs of scriptIDs where readers of one script +can typically also read the other. Each is associated with a confidence.`, + ` +nRegionGroups is the number of region groups.`, + ` +regionInclusion maps region identifiers to sets of regions in regionInclusionBits, +where each set holds all groupings that are directly connected in a region +containment graph.`, + ` +regionInclusionBits is an array of bit vectors where every vector represents +a set of region groupings. These sets are used to compute the distance +between two regions for the purpose of language matching.`, + ` +regionInclusionNext marks, for each entry in regionInclusionBits, the set of +all groups that are reachable from the groups set in the respective entry.`, +} + +// TODO: consider changing some of these structures to tries. This can reduce +// memory, but may increase the need for memory allocations. This could be +// mitigated if we can piggyback on language tags for common cases. + +func failOnError(e error) { + if e != nil { + log.Panic(e) + } +} + +type setType int + +const ( + Indexed setType = 1 + iota // all elements must be of same size + Linear +) + +type stringSet struct { + s []string + sorted, frozen bool + + // We often need to update values after the creation of an index is completed. + // We include a convenience map for keeping track of this. + update map[string]string + typ setType // used for checking. +} + +func (ss *stringSet) clone() stringSet { + c := *ss + c.s = append([]string(nil), c.s...) + return c +} + +func (ss *stringSet) setType(t setType) { + if ss.typ != t && ss.typ != 0 { + log.Panicf("type %d cannot be assigned as it was already %d", t, ss.typ) + } +} + +// parse parses a whitespace-separated string and initializes ss with its +// components. +func (ss *stringSet) parse(s string) { + scan := bufio.NewScanner(strings.NewReader(s)) + scan.Split(bufio.ScanWords) + for scan.Scan() { + ss.add(scan.Text()) + } +} + +func (ss *stringSet) assertChangeable() { + if ss.frozen { + log.Panic("attempt to modify a frozen stringSet") + } +} + +func (ss *stringSet) add(s string) { + ss.assertChangeable() + ss.s = append(ss.s, s) + ss.sorted = ss.frozen +} + +func (ss *stringSet) freeze() { + ss.compact() + ss.frozen = true +} + +func (ss *stringSet) compact() { + if ss.sorted { + return + } + a := ss.s + sort.Strings(a) + k := 0 + for i := 1; i < len(a); i++ { + if a[k] != a[i] { + a[k+1] = a[i] + k++ + } + } + ss.s = a[:k+1] + ss.sorted = ss.frozen +} + +type funcSorter struct { + fn func(a, b string) bool + sort.StringSlice +} + +func (s funcSorter) Less(i, j int) bool { + return s.fn(s.StringSlice[i], s.StringSlice[j]) +} + +func (ss *stringSet) sortFunc(f func(a, b string) bool) { + ss.compact() + sort.Sort(funcSorter{f, sort.StringSlice(ss.s)}) +} + +func (ss *stringSet) remove(s string) { + ss.assertChangeable() + if i, ok := ss.find(s); ok { + copy(ss.s[i:], ss.s[i+1:]) + ss.s = ss.s[:len(ss.s)-1] + } +} + +func (ss *stringSet) replace(ol, nu string) { + ss.s[ss.index(ol)] = nu + ss.sorted = ss.frozen +} + +func (ss *stringSet) index(s string) int { + ss.setType(Indexed) + i, ok := ss.find(s) + if !ok { + if i < len(ss.s) { + log.Panicf("find: item %q is not in list. Closest match is %q.", s, ss.s[i]) + } + log.Panicf("find: item %q is not in list", s) + + } + return i +} + +func (ss *stringSet) find(s string) (int, bool) { + ss.compact() + i := sort.SearchStrings(ss.s, s) + return i, i != len(ss.s) && ss.s[i] == s +} + +func (ss *stringSet) slice() []string { + ss.compact() + return ss.s +} + +func (ss *stringSet) updateLater(v, key string) { + if ss.update == nil { + ss.update = map[string]string{} + } + ss.update[v] = key +} + +// join joins the string and ensures that all entries are of the same length. +func (ss *stringSet) join() string { + ss.setType(Indexed) + n := len(ss.s[0]) + for _, s := range ss.s { + if len(s) != n { + log.Panicf("join: not all entries are of the same length: %q", s) + } + } + ss.s = append(ss.s, strings.Repeat("\xff", n)) + return strings.Join(ss.s, "") +} + +// ianaEntry holds information for an entry in the IANA Language Subtag Repository. +// All types use the same entry. +// See http://tools.ietf.org/html/bcp47#section-5.1 for a description of the various +// fields. +type ianaEntry struct { + typ string + description []string + scope string + added string + preferred string + deprecated string + suppressScript string + macro string + prefix []string +} + +type builder struct { + w *gen.CodeWriter + hw io.Writer // MultiWriter for w and w.Hash + data *cldr.CLDR + supp *cldr.SupplementalData + + // indices + locale stringSet // common locales + lang stringSet // canonical language ids (2 or 3 letter ISO codes) with data + langNoIndex stringSet // 3-letter ISO codes with no associated data + script stringSet // 4-letter ISO codes + region stringSet // 2-letter ISO or 3-digit UN M49 codes + variant stringSet // 4-8-alphanumeric variant code. + + // Region codes that are groups with their corresponding group IDs. + groups map[int]index + + // langInfo + registry map[string]*ianaEntry +} + +type index uint + +func newBuilder(w *gen.CodeWriter) *builder { + r := gen.OpenCLDRCoreZip() + defer r.Close() + d := &cldr.Decoder{} + data, err := d.DecodeZip(r) + failOnError(err) + b := builder{ + w: w, + hw: io.MultiWriter(w, w.Hash), + data: data, + supp: data.Supplemental(), + } + b.parseRegistry() + return &b +} + +func (b *builder) parseRegistry() { + r := gen.OpenIANAFile("assignments/language-subtag-registry") + defer r.Close() + b.registry = make(map[string]*ianaEntry) + + scan := bufio.NewScanner(r) + scan.Split(bufio.ScanWords) + var record *ianaEntry + for more := scan.Scan(); more; { + key := scan.Text() + more = scan.Scan() + value := scan.Text() + switch key { + case "Type:": + record = &ianaEntry{typ: value} + case "Subtag:", "Tag:": + if s := strings.SplitN(value, "..", 2); len(s) > 1 { + for a := s[0]; a <= s[1]; a = inc(a) { + b.addToRegistry(a, record) + } + } else { + b.addToRegistry(value, record) + } + case "Suppress-Script:": + record.suppressScript = value + case "Added:": + record.added = value + case "Deprecated:": + record.deprecated = value + case "Macrolanguage:": + record.macro = value + case "Preferred-Value:": + record.preferred = value + case "Prefix:": + record.prefix = append(record.prefix, value) + case "Scope:": + record.scope = value + case "Description:": + buf := []byte(value) + for more = scan.Scan(); more; more = scan.Scan() { + b := scan.Bytes() + if b[0] == '%' || b[len(b)-1] == ':' { + break + } + buf = append(buf, ' ') + buf = append(buf, b...) + } + record.description = append(record.description, string(buf)) + continue + default: + continue + } + more = scan.Scan() + } + if scan.Err() != nil { + log.Panic(scan.Err()) + } +} + +func (b *builder) addToRegistry(key string, entry *ianaEntry) { + if info, ok := b.registry[key]; ok { + if info.typ != "language" || entry.typ != "extlang" { + log.Fatalf("parseRegistry: tag %q already exists", key) + } + } else { + b.registry[key] = entry + } +} + +var commentIndex = make(map[string]string) + +func init() { + for _, s := range comment { + key := strings.TrimSpace(strings.SplitN(s, " ", 2)[0]) + commentIndex[key] = s + } +} + +func (b *builder) comment(name string) { + if s := commentIndex[name]; len(s) > 0 { + b.w.WriteComment(s) + } else { + fmt.Fprintln(b.w) + } +} + +func (b *builder) pf(f string, x ...interface{}) { + fmt.Fprintf(b.hw, f, x...) + fmt.Fprint(b.hw, "\n") +} + +func (b *builder) p(x ...interface{}) { + fmt.Fprintln(b.hw, x...) +} + +func (b *builder) addSize(s int) { + b.w.Size += s + b.pf("// Size: %d bytes", s) +} + +func (b *builder) writeConst(name string, x interface{}) { + b.comment(name) + b.w.WriteConst(name, x) +} + +// writeConsts computes f(v) for all v in values and writes the results +// as constants named _v to a single constant block. +func (b *builder) writeConsts(f func(string) int, values ...string) { + b.pf("const (") + for _, v := range values { + b.pf("\t_%s = %v", v, f(v)) + } + b.pf(")") +} + +// writeType writes the type of the given value, which must be a struct. +func (b *builder) writeType(value interface{}) { + b.comment(reflect.TypeOf(value).Name()) + b.w.WriteType(value) +} + +func (b *builder) writeSlice(name string, ss interface{}) { + b.writeSliceAddSize(name, 0, ss) +} + +func (b *builder) writeSliceAddSize(name string, extraSize int, ss interface{}) { + b.comment(name) + b.w.Size += extraSize + v := reflect.ValueOf(ss) + t := v.Type().Elem() + b.pf("// Size: %d bytes, %d elements", v.Len()*int(t.Size())+extraSize, v.Len()) + + fmt.Fprintf(b.w, "var %s = ", name) + b.w.WriteArray(ss) + b.p() +} + +type fromTo struct { + from, to uint16 +} + +func (b *builder) writeSortedMap(name string, ss *stringSet, index func(s string) uint16) { + ss.sortFunc(func(a, b string) bool { + return index(a) < index(b) + }) + m := []fromTo{} + for _, s := range ss.s { + m = append(m, fromTo{index(s), index(ss.update[s])}) + } + b.writeSlice(name, m) +} + +const base = 'z' - 'a' + 1 + +func strToInt(s string) uint { + v := uint(0) + for i := 0; i < len(s); i++ { + v *= base + v += uint(s[i] - 'a') + } + return v +} + +// converts the given integer to the original ASCII string passed to strToInt. +// len(s) must match the number of characters obtained. +func intToStr(v uint, s []byte) { + for i := len(s) - 1; i >= 0; i-- { + s[i] = byte(v%base) + 'a' + v /= base + } +} + +func (b *builder) writeBitVector(name string, ss []string) { + vec := make([]uint8, int(math.Ceil(math.Pow(base, float64(len(ss[0])))/8))) + for _, s := range ss { + v := strToInt(s) + vec[v/8] |= 1 << (v % 8) + } + b.writeSlice(name, vec) +} + +// TODO: convert this type into a list or two-stage trie. +func (b *builder) writeMapFunc(name string, m map[string]string, f func(string) uint16) { + b.comment(name) + v := reflect.ValueOf(m) + sz := v.Len() * (2 + int(v.Type().Key().Size())) + for _, k := range m { + sz += len(k) + } + b.addSize(sz) + keys := []string{} + b.pf(`var %s = map[string]uint16{`, name) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + b.pf("\t%q: %v,", k, f(m[k])) + } + b.p("}") +} + +func (b *builder) writeMap(name string, m interface{}) { + b.comment(name) + v := reflect.ValueOf(m) + sz := v.Len() * (2 + int(v.Type().Key().Size()) + int(v.Type().Elem().Size())) + b.addSize(sz) + f := strings.FieldsFunc(fmt.Sprintf("%#v", m), func(r rune) bool { + return strings.IndexRune("{}, ", r) != -1 + }) + sort.Strings(f[1:]) + b.pf(`var %s = %s{`, name, f[0]) + for _, kv := range f[1:] { + b.pf("\t%s,", kv) + } + b.p("}") +} + +func (b *builder) langIndex(s string) uint16 { + if s == "und" { + return 0 + } + if i, ok := b.lang.find(s); ok { + return uint16(i) + } + return uint16(strToInt(s)) + uint16(len(b.lang.s)) +} + +// inc advances the string to its lexicographical successor. +func inc(s string) string { + const maxTagLength = 4 + var buf [maxTagLength]byte + intToStr(strToInt(strings.ToLower(s))+1, buf[:len(s)]) + for i := 0; i < len(s); i++ { + if s[i] <= 'Z' { + buf[i] -= 'a' - 'A' + } + } + return string(buf[:len(s)]) +} + +func (b *builder) parseIndices() { + meta := b.supp.Metadata + + for k, v := range b.registry { + var ss *stringSet + switch v.typ { + case "language": + if len(k) == 2 || v.suppressScript != "" || v.scope == "special" { + b.lang.add(k) + continue + } else { + ss = &b.langNoIndex + } + case "region": + ss = &b.region + case "script": + ss = &b.script + case "variant": + ss = &b.variant + default: + continue + } + ss.add(k) + } + // Include any language for which there is data. + for _, lang := range b.data.Locales() { + if x := b.data.RawLDML(lang); false || + x.LocaleDisplayNames != nil || + x.Characters != nil || + x.Delimiters != nil || + x.Measurement != nil || + x.Dates != nil || + x.Numbers != nil || + x.Units != nil || + x.ListPatterns != nil || + x.Collations != nil || + x.Segmentations != nil || + x.Rbnf != nil || + x.Annotations != nil || + x.Metadata != nil { + + from := strings.Split(lang, "_") + if lang := from[0]; lang != "root" { + b.lang.add(lang) + } + } + } + // Include locales for plural rules, which uses a different structure. + for _, plurals := range b.data.Supplemental().Plurals { + for _, rules := range plurals.PluralRules { + for _, lang := range strings.Split(rules.Locales, " ") { + if lang = strings.Split(lang, "_")[0]; lang != "root" { + b.lang.add(lang) + } + } + } + } + // Include languages in likely subtags. + for _, m := range b.supp.LikelySubtags.LikelySubtag { + from := strings.Split(m.From, "_") + b.lang.add(from[0]) + } + // Include ISO-639 alpha-3 bibliographic entries. + for _, a := range meta.Alias.LanguageAlias { + if a.Reason == "bibliographic" { + b.langNoIndex.add(a.Type) + } + } + // Include regions in territoryAlias (not all are in the IANA registry!) + for _, reg := range b.supp.Metadata.Alias.TerritoryAlias { + if len(reg.Type) == 2 { + b.region.add(reg.Type) + } + } + + for _, s := range b.lang.s { + if len(s) == 3 { + b.langNoIndex.remove(s) + } + } + b.writeConst("numLanguages", len(b.lang.slice())+len(b.langNoIndex.slice())) + b.writeConst("numScripts", len(b.script.slice())) + b.writeConst("numRegions", len(b.region.slice())) + + // Add dummy codes at the start of each list to represent "unspecified". + b.lang.add("---") + b.script.add("----") + b.region.add("---") + + // common locales + b.locale.parse(meta.DefaultContent.Locales) +} + +func (b *builder) computeRegionGroups() { + b.groups = make(map[int]index) + + // Create group indices. + for i := 1; b.region.s[i][0] < 'A'; i++ { // Base M49 indices on regionID. + b.groups[i] = index(len(b.groups)) + } + for _, g := range b.supp.TerritoryContainment.Group { + group := b.region.index(g.Type) + if _, ok := b.groups[group]; !ok { + b.groups[group] = index(len(b.groups)) + } + } + if len(b.groups) > 32 { + log.Fatalf("only 32 groups supported, found %d", len(b.groups)) + } + b.writeConst("nRegionGroups", len(b.groups)) +} + +var langConsts = []string{ + "af", "am", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "en", "es", + "et", "fa", "fi", "fil", "fr", "gu", "he", "hi", "hr", "hu", "hy", "id", "is", + "it", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", "ml", + "mn", "mo", "mr", "ms", "mul", "my", "nb", "ne", "nl", "no", "pa", "pl", "pt", + "ro", "ru", "sh", "si", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te", "th", + "tl", "tn", "tr", "uk", "ur", "uz", "vi", "zh", "zu", + + // constants for grandfathered tags (if not already defined) + "jbo", "ami", "bnn", "hak", "tlh", "lb", "nv", "pwn", "tao", "tay", "tsu", + "nn", "sfb", "vgt", "sgg", "cmn", "nan", "hsn", +} + +// writeLanguage generates all tables needed for language canonicalization. +func (b *builder) writeLanguage() { + meta := b.supp.Metadata + + b.writeConst("nonCanonicalUnd", b.lang.index("und")) + b.writeConsts(func(s string) int { return int(b.langIndex(s)) }, langConsts...) + b.writeConst("langPrivateStart", b.langIndex("qaa")) + b.writeConst("langPrivateEnd", b.langIndex("qtz")) + + // Get language codes that need to be mapped (overlong 3-letter codes, + // deprecated 2-letter codes, legacy and grandfathered tags.) + langAliasMap := stringSet{} + aliasTypeMap := map[string]langAliasType{} + + // altLangISO3 get the alternative ISO3 names that need to be mapped. + altLangISO3 := stringSet{} + // Add dummy start to avoid the use of index 0. + altLangISO3.add("---") + altLangISO3.updateLater("---", "aa") + + lang := b.lang.clone() + for _, a := range meta.Alias.LanguageAlias { + if a.Replacement == "" { + a.Replacement = "und" + } + // TODO: support mapping to tags + repl := strings.SplitN(a.Replacement, "_", 2)[0] + if a.Reason == "overlong" { + if len(a.Replacement) == 2 && len(a.Type) == 3 { + lang.updateLater(a.Replacement, a.Type) + } + } else if len(a.Type) <= 3 { + switch a.Reason { + case "macrolanguage": + aliasTypeMap[a.Type] = langMacro + case "deprecated": + // handled elsewhere + continue + case "bibliographic", "legacy": + if a.Type == "no" { + continue + } + aliasTypeMap[a.Type] = langLegacy + default: + log.Fatalf("new %s alias: %s", a.Reason, a.Type) + } + langAliasMap.add(a.Type) + langAliasMap.updateLater(a.Type, repl) + } + } + // Manually add the mapping of "nb" (Norwegian) to its macro language. + // This can be removed if CLDR adopts this change. + langAliasMap.add("nb") + langAliasMap.updateLater("nb", "no") + aliasTypeMap["nb"] = langMacro + + for k, v := range b.registry { + // Also add deprecated values for 3-letter ISO codes, which CLDR omits. + if v.typ == "language" && v.deprecated != "" && v.preferred != "" { + langAliasMap.add(k) + langAliasMap.updateLater(k, v.preferred) + aliasTypeMap[k] = langDeprecated + } + } + // Fix CLDR mappings. + lang.updateLater("tl", "tgl") + lang.updateLater("sh", "hbs") + lang.updateLater("mo", "mol") + lang.updateLater("no", "nor") + lang.updateLater("tw", "twi") + lang.updateLater("nb", "nob") + lang.updateLater("ak", "aka") + + // Ensure that each 2-letter code is matched with a 3-letter code. + for _, v := range lang.s[1:] { + s, ok := lang.update[v] + if !ok { + if s, ok = lang.update[langAliasMap.update[v]]; !ok { + continue + } + lang.update[v] = s + } + if v[0] != s[0] { + altLangISO3.add(s) + altLangISO3.updateLater(s, v) + } + } + + // Complete canonialized language tags. + lang.freeze() + for i, v := range lang.s { + // We can avoid these manual entries by using the IANI registry directly. + // Seems easier to update the list manually, as changes are rare. + // The panic in this loop will trigger if we miss an entry. + add := "" + if s, ok := lang.update[v]; ok { + if s[0] == v[0] { + add = s[1:] + } else { + add = string([]byte{0, byte(altLangISO3.index(s))}) + } + } else if len(v) == 3 { + add = "\x00" + } else { + log.Panicf("no data for long form of %q", v) + } + lang.s[i] += add + } + b.writeConst("lang", tag.Index(lang.join())) + + b.writeConst("langNoIndexOffset", len(b.lang.s)) + + // space of all valid 3-letter language identifiers. + b.writeBitVector("langNoIndex", b.langNoIndex.slice()) + + altLangIndex := []uint16{} + for i, s := range altLangISO3.slice() { + altLangISO3.s[i] += string([]byte{byte(len(altLangIndex))}) + if i > 0 { + idx := b.lang.index(altLangISO3.update[s]) + altLangIndex = append(altLangIndex, uint16(idx)) + } + } + b.writeConst("altLangISO3", tag.Index(altLangISO3.join())) + b.writeSlice("altLangIndex", altLangIndex) + + b.writeSortedMap("langAliasMap", &langAliasMap, b.langIndex) + types := make([]langAliasType, len(langAliasMap.s)) + for i, s := range langAliasMap.s { + types[i] = aliasTypeMap[s] + } + b.writeSlice("langAliasTypes", types) +} + +var scriptConsts = []string{ + "Latn", "Hani", "Hans", "Hant", "Qaaa", "Qaai", "Qabx", "Zinh", "Zyyy", + "Zzzz", +} + +func (b *builder) writeScript() { + b.writeConsts(b.script.index, scriptConsts...) + b.writeConst("script", tag.Index(b.script.join())) + + supp := make([]uint8, len(b.lang.slice())) + for i, v := range b.lang.slice()[1:] { + if sc := b.registry[v].suppressScript; sc != "" { + supp[i+1] = uint8(b.script.index(sc)) + } + } + b.writeSlice("suppressScript", supp) + + // There is only one deprecated script in CLDR. This value is hard-coded. + // We check here if the code must be updated. + for _, a := range b.supp.Metadata.Alias.ScriptAlias { + if a.Type != "Qaai" { + log.Panicf("unexpected deprecated stript %q", a.Type) + } + } +} + +func parseM49(s string) int16 { + if len(s) == 0 { + return 0 + } + v, err := strconv.ParseUint(s, 10, 10) + failOnError(err) + return int16(v) +} + +var regionConsts = []string{ + "001", "419", "BR", "CA", "ES", "GB", "MD", "PT", "UK", "US", + "ZZ", "XA", "XC", "XK", // Unofficial tag for Kosovo. +} + +func (b *builder) writeRegion() { + b.writeConsts(b.region.index, regionConsts...) + + isoOffset := b.region.index("AA") + m49map := make([]int16, len(b.region.slice())) + fromM49map := make(map[int16]int) + altRegionISO3 := "" + altRegionIDs := []uint16{} + + b.writeConst("isoRegionOffset", isoOffset) + + // 2-letter region lookup and mapping to numeric codes. + regionISO := b.region.clone() + regionISO.s = regionISO.s[isoOffset:] + regionISO.sorted = false + + regionTypes := make([]byte, len(b.region.s)) + + // Is the region valid BCP 47? + for s, e := range b.registry { + if len(s) == 2 && s == strings.ToUpper(s) { + i := b.region.index(s) + for _, d := range e.description { + if strings.Contains(d, "Private use") { + regionTypes[i] = iso3166UserAssgined + } + } + regionTypes[i] |= bcp47Region + } + } + + // Is the region a valid ccTLD? + r := gen.OpenIANAFile("domains/root/db") + defer r.Close() + + buf, err := ioutil.ReadAll(r) + failOnError(err) + re := regexp.MustCompile(`"/domains/root/db/([a-z]{2}).html"`) + for _, m := range re.FindAllSubmatch(buf, -1) { + i := b.region.index(strings.ToUpper(string(m[1]))) + regionTypes[i] |= ccTLD + } + + b.writeSlice("regionTypes", regionTypes) + + iso3Set := make(map[string]int) + update := func(iso2, iso3 string) { + i := regionISO.index(iso2) + if j, ok := iso3Set[iso3]; !ok && iso3[0] == iso2[0] { + regionISO.s[i] += iso3[1:] + iso3Set[iso3] = -1 + } else { + if ok && j >= 0 { + regionISO.s[i] += string([]byte{0, byte(j)}) + } else { + iso3Set[iso3] = len(altRegionISO3) + regionISO.s[i] += string([]byte{0, byte(len(altRegionISO3))}) + altRegionISO3 += iso3 + altRegionIDs = append(altRegionIDs, uint16(isoOffset+i)) + } + } + } + for _, tc := range b.supp.CodeMappings.TerritoryCodes { + i := regionISO.index(tc.Type) + isoOffset + if d := m49map[i]; d != 0 { + log.Panicf("%s found as a duplicate UN.M49 code of %03d", tc.Numeric, d) + } + m49 := parseM49(tc.Numeric) + m49map[i] = m49 + if r := fromM49map[m49]; r == 0 { + fromM49map[m49] = i + } else if r != i { + dep := b.registry[regionISO.s[r-isoOffset]].deprecated + if t := b.registry[tc.Type]; t != nil && dep != "" && (t.deprecated == "" || t.deprecated > dep) { + fromM49map[m49] = i + } + } + } + for _, ta := range b.supp.Metadata.Alias.TerritoryAlias { + if len(ta.Type) == 3 && ta.Type[0] <= '9' && len(ta.Replacement) == 2 { + from := parseM49(ta.Type) + if r := fromM49map[from]; r == 0 { + fromM49map[from] = regionISO.index(ta.Replacement) + isoOffset + } + } + } + for _, tc := range b.supp.CodeMappings.TerritoryCodes { + if len(tc.Alpha3) == 3 { + update(tc.Type, tc.Alpha3) + } + } + // This entries are not included in territoryCodes. Mostly 3-letter variants + // of deleted codes and an entry for QU. + for _, m := range []struct{ iso2, iso3 string }{ + {"CT", "CTE"}, + {"DY", "DHY"}, + {"HV", "HVO"}, + {"JT", "JTN"}, + {"MI", "MID"}, + {"NH", "NHB"}, + {"NQ", "ATN"}, + {"PC", "PCI"}, + {"PU", "PUS"}, + {"PZ", "PCZ"}, + {"RH", "RHO"}, + {"VD", "VDR"}, + {"WK", "WAK"}, + // These three-letter codes are used for others as well. + {"FQ", "ATF"}, + } { + update(m.iso2, m.iso3) + } + for i, s := range regionISO.s { + if len(s) != 4 { + regionISO.s[i] = s + " " + } + } + b.writeConst("regionISO", tag.Index(regionISO.join())) + b.writeConst("altRegionISO3", altRegionISO3) + b.writeSlice("altRegionIDs", altRegionIDs) + + // Create list of deprecated regions. + // TODO: consider inserting SF -> FI. Not included by CLDR, but is the only + // Transitionally-reserved mapping not included. + regionOldMap := stringSet{} + // Include regions in territoryAlias (not all are in the IANA registry!) + for _, reg := range b.supp.Metadata.Alias.TerritoryAlias { + if len(reg.Type) == 2 && reg.Reason == "deprecated" && len(reg.Replacement) == 2 { + regionOldMap.add(reg.Type) + regionOldMap.updateLater(reg.Type, reg.Replacement) + i, _ := regionISO.find(reg.Type) + j, _ := regionISO.find(reg.Replacement) + if k := m49map[i+isoOffset]; k == 0 { + m49map[i+isoOffset] = m49map[j+isoOffset] + } + } + } + b.writeSortedMap("regionOldMap", ®ionOldMap, func(s string) uint16 { + return uint16(b.region.index(s)) + }) + // 3-digit region lookup, groupings. + for i := 1; i < isoOffset; i++ { + m := parseM49(b.region.s[i]) + m49map[i] = m + fromM49map[m] = i + } + b.writeSlice("m49", m49map) + + const ( + searchBits = 7 + regionBits = 9 + ) + if len(m49map) >= 1<<regionBits { + log.Fatalf("Maximum number of regions exceeded: %d > %d", len(m49map), 1<<regionBits) + } + m49Index := [9]int16{} + fromM49 := []uint16{} + m49 := []int{} + for k, _ := range fromM49map { + m49 = append(m49, int(k)) + } + sort.Ints(m49) + for _, k := range m49[1:] { + val := (k & (1<<searchBits - 1)) << regionBits + fromM49 = append(fromM49, uint16(val|fromM49map[int16(k)])) + m49Index[1:][k>>searchBits] = int16(len(fromM49)) + } + b.writeSlice("m49Index", m49Index) + b.writeSlice("fromM49", fromM49) +} + +const ( + // TODO: put these lists in regionTypes as user data? Could be used for + // various optimizations and refinements and could be exposed in the API. + iso3166Except = "AC CP DG EA EU FX IC SU TA UK" + iso3166Trans = "AN BU CS NT TP YU ZR" // SF is not in our set of Regions. + // DY and RH are actually not deleted, but indeterminately reserved. + iso3166DelCLDR = "CT DD DY FQ HV JT MI NH NQ PC PU PZ RH VD WK YD" +) + +const ( + iso3166UserAssgined = 1 << iota + ccTLD + bcp47Region +) + +func find(list []string, s string) int { + for i, t := range list { + if t == s { + return i + } + } + return -1 +} + +// writeVariants generates per-variant information and creates a map from variant +// name to index value. We assign index values such that sorting multiple +// variants by index value will result in the correct order. +// There are two types of variants: specialized and general. Specialized variants +// are only applicable to certain language or language-script pairs. Generalized +// variants apply to any language. Generalized variants always sort after +// specialized variants. We will therefore always assign a higher index value +// to a generalized variant than any other variant. Generalized variants are +// sorted alphabetically among themselves. +// Specialized variants may also sort after other specialized variants. Such +// variants will be ordered after any of the variants they may follow. +// We assume that if a variant x is followed by a variant y, then for any prefix +// p of x, p-x is a prefix of y. This allows us to order tags based on the +// maximum of the length of any of its prefixes. +// TODO: it is possible to define a set of Prefix values on variants such that +// a total order cannot be defined to the point that this algorithm breaks. +// In other words, we cannot guarantee the same order of variants for the +// future using the same algorithm or for non-compliant combinations of +// variants. For this reason, consider using simple alphabetic sorting +// of variants and ignore Prefix restrictions altogether. +func (b *builder) writeVariant() { + generalized := stringSet{} + specialized := stringSet{} + specializedExtend := stringSet{} + // Collate the variants by type and check assumptions. + for _, v := range b.variant.slice() { + e := b.registry[v] + if len(e.prefix) == 0 { + generalized.add(v) + continue + } + c := strings.Split(e.prefix[0], "-") + hasScriptOrRegion := false + if len(c) > 1 { + _, hasScriptOrRegion = b.script.find(c[1]) + if !hasScriptOrRegion { + _, hasScriptOrRegion = b.region.find(c[1]) + + } + } + if len(c) == 1 || len(c) == 2 && hasScriptOrRegion { + // Variant is preceded by a language. + specialized.add(v) + continue + } + // Variant is preceded by another variant. + specializedExtend.add(v) + prefix := c[0] + "-" + if hasScriptOrRegion { + prefix += c[1] + } + for _, p := range e.prefix { + // Verify that the prefix minus the last element is a prefix of the + // predecessor element. + i := strings.LastIndex(p, "-") + pred := b.registry[p[i+1:]] + if find(pred.prefix, p[:i]) < 0 { + log.Fatalf("prefix %q for variant %q not consistent with predecessor spec", p, v) + } + // The sorting used below does not work in the general case. It works + // if we assume that variants that may be followed by others only have + // prefixes of the same length. Verify this. + count := strings.Count(p[:i], "-") + for _, q := range pred.prefix { + if c := strings.Count(q, "-"); c != count { + log.Fatalf("variant %q preceding %q has a prefix %q of size %d; want %d", p[i+1:], v, q, c, count) + } + } + if !strings.HasPrefix(p, prefix) { + log.Fatalf("prefix %q of variant %q should start with %q", p, v, prefix) + } + } + } + + // Sort extended variants. + a := specializedExtend.s + less := func(v, w string) bool { + // Sort by the maximum number of elements. + maxCount := func(s string) (max int) { + for _, p := range b.registry[s].prefix { + if c := strings.Count(p, "-"); c > max { + max = c + } + } + return + } + if cv, cw := maxCount(v), maxCount(w); cv != cw { + return cv < cw + } + // Sort by name as tie breaker. + return v < w + } + sort.Sort(funcSorter{less, sort.StringSlice(a)}) + specializedExtend.frozen = true + + // Create index from variant name to index. + variantIndex := make(map[string]uint8) + add := func(s []string) { + for _, v := range s { + variantIndex[v] = uint8(len(variantIndex)) + } + } + add(specialized.slice()) + add(specializedExtend.s) + numSpecialized := len(variantIndex) + add(generalized.slice()) + if n := len(variantIndex); n > 255 { + log.Fatalf("maximum number of variants exceeded: was %d; want <= 255", n) + } + b.writeMap("variantIndex", variantIndex) + b.writeConst("variantNumSpecialized", numSpecialized) +} + +func (b *builder) writeLanguageInfo() { +} + +// writeLikelyData writes tables that are used both for finding parent relations and for +// language matching. Each entry contains additional bits to indicate the status of the +// data to know when it cannot be used for parent relations. +func (b *builder) writeLikelyData() { + const ( + isList = 1 << iota + scriptInFrom + regionInFrom + ) + type ( // generated types + likelyScriptRegion struct { + region uint16 + script uint8 + flags uint8 + } + likelyLangScript struct { + lang uint16 + script uint8 + flags uint8 + } + likelyLangRegion struct { + lang uint16 + region uint16 + } + // likelyTag is used for getting likely tags for group regions, where + // the likely region might be a region contained in the group. + likelyTag struct { + lang uint16 + region uint16 + script uint8 + } + ) + var ( // generated variables + likelyRegionGroup = make([]likelyTag, len(b.groups)) + likelyLang = make([]likelyScriptRegion, len(b.lang.s)) + likelyRegion = make([]likelyLangScript, len(b.region.s)) + likelyScript = make([]likelyLangRegion, len(b.script.s)) + likelyLangList = []likelyScriptRegion{} + likelyRegionList = []likelyLangScript{} + ) + type fromTo struct { + from, to []string + } + langToOther := map[int][]fromTo{} + regionToOther := map[int][]fromTo{} + for _, m := range b.supp.LikelySubtags.LikelySubtag { + from := strings.Split(m.From, "_") + to := strings.Split(m.To, "_") + if len(to) != 3 { + log.Fatalf("invalid number of subtags in %q: found %d, want 3", m.To, len(to)) + } + if len(from) > 3 { + log.Fatalf("invalid number of subtags: found %d, want 1-3", len(from)) + } + if from[0] != to[0] && from[0] != "und" { + log.Fatalf("unexpected language change in expansion: %s -> %s", from, to) + } + if len(from) == 3 { + if from[2] != to[2] { + log.Fatalf("unexpected region change in expansion: %s -> %s", from, to) + } + if from[0] != "und" { + log.Fatalf("unexpected fully specified from tag: %s -> %s", from, to) + } + } + if len(from) == 1 || from[0] != "und" { + id := 0 + if from[0] != "und" { + id = b.lang.index(from[0]) + } + langToOther[id] = append(langToOther[id], fromTo{from, to}) + } else if len(from) == 2 && len(from[1]) == 4 { + sid := b.script.index(from[1]) + likelyScript[sid].lang = uint16(b.langIndex(to[0])) + likelyScript[sid].region = uint16(b.region.index(to[2])) + } else { + r := b.region.index(from[len(from)-1]) + if id, ok := b.groups[r]; ok { + if from[0] != "und" { + log.Fatalf("region changed unexpectedly: %s -> %s", from, to) + } + likelyRegionGroup[id].lang = uint16(b.langIndex(to[0])) + likelyRegionGroup[id].script = uint8(b.script.index(to[1])) + likelyRegionGroup[id].region = uint16(b.region.index(to[2])) + } else { + regionToOther[r] = append(regionToOther[r], fromTo{from, to}) + } + } + } + b.writeType(likelyLangRegion{}) + b.writeSlice("likelyScript", likelyScript) + + for id := range b.lang.s { + list := langToOther[id] + if len(list) == 1 { + likelyLang[id].region = uint16(b.region.index(list[0].to[2])) + likelyLang[id].script = uint8(b.script.index(list[0].to[1])) + } else if len(list) > 1 { + likelyLang[id].flags = isList + likelyLang[id].region = uint16(len(likelyLangList)) + likelyLang[id].script = uint8(len(list)) + for _, x := range list { + flags := uint8(0) + if len(x.from) > 1 { + if x.from[1] == x.to[2] { + flags = regionInFrom + } else { + flags = scriptInFrom + } + } + likelyLangList = append(likelyLangList, likelyScriptRegion{ + region: uint16(b.region.index(x.to[2])), + script: uint8(b.script.index(x.to[1])), + flags: flags, + }) + } + } + } + // TODO: merge suppressScript data with this table. + b.writeType(likelyScriptRegion{}) + b.writeSlice("likelyLang", likelyLang) + b.writeSlice("likelyLangList", likelyLangList) + + for id := range b.region.s { + list := regionToOther[id] + if len(list) == 1 { + likelyRegion[id].lang = uint16(b.langIndex(list[0].to[0])) + likelyRegion[id].script = uint8(b.script.index(list[0].to[1])) + if len(list[0].from) > 2 { + likelyRegion[id].flags = scriptInFrom + } + } else if len(list) > 1 { + likelyRegion[id].flags = isList + likelyRegion[id].lang = uint16(len(likelyRegionList)) + likelyRegion[id].script = uint8(len(list)) + for i, x := range list { + if len(x.from) == 2 && i != 0 || i > 0 && len(x.from) != 3 { + log.Fatalf("unspecified script must be first in list: %v at %d", x.from, i) + } + x := likelyLangScript{ + lang: uint16(b.langIndex(x.to[0])), + script: uint8(b.script.index(x.to[1])), + } + if len(list[0].from) > 2 { + x.flags = scriptInFrom + } + likelyRegionList = append(likelyRegionList, x) + } + } + } + b.writeType(likelyLangScript{}) + b.writeSlice("likelyRegion", likelyRegion) + b.writeSlice("likelyRegionList", likelyRegionList) + + b.writeType(likelyTag{}) + b.writeSlice("likelyRegionGroup", likelyRegionGroup) +} + +type mutualIntelligibility struct { + want, have uint16 + conf uint8 + oneway bool +} + +type scriptIntelligibility struct { + lang uint16 // langID or 0 if * + want, have uint8 + conf uint8 +} + +type sortByConf []mutualIntelligibility + +func (l sortByConf) Less(a, b int) bool { + return l[a].conf > l[b].conf +} + +func (l sortByConf) Swap(a, b int) { + l[a], l[b] = l[b], l[a] +} + +func (l sortByConf) Len() int { + return len(l) +} + +// toConf converts a percentage value [0, 100] to a confidence class. +func toConf(pct uint8) uint8 { + switch { + case pct == 100: + return 3 // Exact + case pct >= 90: + return 2 // High + case pct > 50: + return 1 // Low + default: + return 0 // No + } +} + +// writeMatchData writes tables with languages and scripts for which there is +// mutual intelligibility. The data is based on CLDR's languageMatching data. +// Note that we use a different algorithm than the one defined by CLDR and that +// we slightly modify the data. For example, we convert scores to confidence levels. +// We also drop all region-related data as we use a different algorithm to +// determine region equivalence. +func (b *builder) writeMatchData() { + b.writeType(mutualIntelligibility{}) + b.writeType(scriptIntelligibility{}) + lm := b.supp.LanguageMatching.LanguageMatches + cldr.MakeSlice(&lm).SelectAnyOf("type", "written") + + matchLang := []mutualIntelligibility{} + matchScript := []scriptIntelligibility{} + // Convert the languageMatch entries in lists keyed by desired language. + for _, m := range lm[0].LanguageMatch { + // Different versions of CLDR use different separators. + desired := strings.Replace(m.Desired, "-", "_", -1) + supported := strings.Replace(m.Supported, "-", "_", -1) + d := strings.Split(desired, "_") + s := strings.Split(supported, "_") + if len(d) != len(s) || len(d) > 2 { + // Skip all entries with regions and work around CLDR bug. + continue + } + pct, _ := strconv.ParseInt(m.Percent, 10, 8) + if len(d) == 2 && d[0] == s[0] && len(d[1]) == 4 { + // language-script pair. + lang := uint16(0) + if d[0] != "*" { + lang = uint16(b.langIndex(d[0])) + } + matchScript = append(matchScript, scriptIntelligibility{ + lang: lang, + want: uint8(b.script.index(d[1])), + have: uint8(b.script.index(s[1])), + conf: toConf(uint8(pct)), + }) + if m.Oneway != "true" { + matchScript = append(matchScript, scriptIntelligibility{ + lang: lang, + want: uint8(b.script.index(s[1])), + have: uint8(b.script.index(d[1])), + conf: toConf(uint8(pct)), + }) + } + } else if len(d) == 1 && d[0] != "*" { + if pct == 100 { + // nb == no is already handled by macro mapping. Check there + // really is only this case. + if d[0] != "no" || s[0] != "nb" { + log.Fatalf("unhandled equivalence %s == %s", s[0], d[0]) + } + continue + } + matchLang = append(matchLang, mutualIntelligibility{ + want: uint16(b.langIndex(d[0])), + have: uint16(b.langIndex(s[0])), + conf: uint8(pct), + oneway: m.Oneway == "true", + }) + } else { + // TODO: Handle other mappings. + a := []string{"*;*", "*_*;*_*", "es_MX;es_419"} + s := strings.Join([]string{desired, supported}, ";") + if i := sort.SearchStrings(a, s); i == len(a) || a[i] != s { + log.Printf("%q not handled", s) + } + } + } + sort.Stable(sortByConf(matchLang)) + // collapse percentage into confidence classes + for i, m := range matchLang { + matchLang[i].conf = toConf(m.conf) + } + b.writeSlice("matchLang", matchLang) + b.writeSlice("matchScript", matchScript) +} + +func (b *builder) writeRegionInclusionData() { + var ( + // mm holds for each group the set of groups with a distance of 1. + mm = make(map[int][]index) + + // containment holds for each group the transitive closure of + // containment of other groups. + containment = make(map[index][]index) + ) + for _, g := range b.supp.TerritoryContainment.Group { + group := b.region.index(g.Type) + groupIdx := b.groups[group] + for _, mem := range strings.Split(g.Contains, " ") { + r := b.region.index(mem) + mm[r] = append(mm[r], groupIdx) + if g, ok := b.groups[r]; ok { + mm[group] = append(mm[group], g) + containment[groupIdx] = append(containment[groupIdx], g) + } + } + } + + regionContainment := make([]uint32, len(b.groups)) + for _, g := range b.groups { + l := containment[g] + + // Compute the transitive closure of containment. + for i := 0; i < len(l); i++ { + l = append(l, containment[l[i]]...) + } + + // Compute the bitmask. + regionContainment[g] = 1 << g + for _, v := range l { + regionContainment[g] |= 1 << v + } + // log.Printf("%d: %X", g, regionContainment[g]) + } + b.writeSlice("regionContainment", regionContainment) + + regionInclusion := make([]uint8, len(b.region.s)) + bvs := make(map[uint32]index) + // Make the first bitvector positions correspond with the groups. + for r, i := range b.groups { + bv := uint32(1 << i) + for _, g := range mm[r] { + bv |= 1 << g + } + bvs[bv] = i + regionInclusion[r] = uint8(bvs[bv]) + } + for r := 1; r < len(b.region.s); r++ { + if _, ok := b.groups[r]; !ok { + bv := uint32(0) + for _, g := range mm[r] { + bv |= 1 << g + } + if bv == 0 { + // Pick the world for unspecified regions. + bv = 1 << b.groups[b.region.index("001")] + } + if _, ok := bvs[bv]; !ok { + bvs[bv] = index(len(bvs)) + } + regionInclusion[r] = uint8(bvs[bv]) + } + } + b.writeSlice("regionInclusion", regionInclusion) + regionInclusionBits := make([]uint32, len(bvs)) + for k, v := range bvs { + regionInclusionBits[v] = uint32(k) + } + // Add bit vectors for increasingly large distances until a fixed point is reached. + regionInclusionNext := []uint8{} + for i := 0; i < len(regionInclusionBits); i++ { + bits := regionInclusionBits[i] + next := bits + for i := uint(0); i < uint(len(b.groups)); i++ { + if bits&(1<<i) != 0 { + next |= regionInclusionBits[i] + } + } + if _, ok := bvs[next]; !ok { + bvs[next] = index(len(bvs)) + regionInclusionBits = append(regionInclusionBits, next) + } + regionInclusionNext = append(regionInclusionNext, uint8(bvs[next])) + } + b.writeSlice("regionInclusionBits", regionInclusionBits) + b.writeSlice("regionInclusionNext", regionInclusionNext) +} + +type parentRel struct { + lang uint16 + script uint8 + maxScript uint8 + toRegion uint16 + fromRegion []uint16 +} + +func (b *builder) writeParents() { + b.writeType(parentRel{}) + + parents := []parentRel{} + + // Construct parent overrides. + n := 0 + for _, p := range b.data.Supplemental().ParentLocales.ParentLocale { + // Skipping non-standard scripts to root is implemented using addTags. + if p.Parent == "root" { + continue + } + + sub := strings.Split(p.Parent, "_") + parent := parentRel{lang: b.langIndex(sub[0])} + if len(sub) == 2 { + // TODO: check that all undefined scripts are indeed Latn in these + // cases. + parent.maxScript = uint8(b.script.index("Latn")) + parent.toRegion = uint16(b.region.index(sub[1])) + } else { + parent.script = uint8(b.script.index(sub[1])) + parent.maxScript = parent.script + parent.toRegion = uint16(b.region.index(sub[2])) + } + for _, c := range strings.Split(p.Locales, " ") { + region := b.region.index(c[strings.LastIndex(c, "_")+1:]) + parent.fromRegion = append(parent.fromRegion, uint16(region)) + } + parents = append(parents, parent) + n += len(parent.fromRegion) + } + b.writeSliceAddSize("parents", n*2, parents) +} + +func main() { + gen.Init() + + gen.Repackage("gen_common.go", "common.go", "language") + + w := gen.NewCodeWriter() + defer w.WriteGoFile("tables.go", "language") + + fmt.Fprintln(w, `import "golang.org/x/text/internal/tag"`) + + b := newBuilder(w) + gen.WriteCLDRVersion(w) + + b.parseIndices() + b.writeType(fromTo{}) + b.writeLanguage() + b.writeScript() + b.writeRegion() + b.writeVariant() + // TODO: b.writeLocale() + b.computeRegionGroups() + b.writeLikelyData() + b.writeMatchData() + b.writeRegionInclusionData() + b.writeParents() +} diff --git a/vendor/golang.org/x/text/language/match.go b/vendor/golang.org/x/text/language/match.go new file mode 100644 index 0000000000..eec72bcc1f --- /dev/null +++ b/vendor/golang.org/x/text/language/match.go @@ -0,0 +1,840 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import "errors" + +// Matcher is the interface that wraps the Match method. +// +// Match returns the best match for any of the given tags, along with +// a unique index associated with the returned tag and a confidence +// score. +type Matcher interface { + Match(t ...Tag) (tag Tag, index int, c Confidence) +} + +// Comprehends reports the confidence score for a speaker of a given language +// to being able to comprehend the written form of an alternative language. +func Comprehends(speaker, alternative Tag) Confidence { + _, _, c := NewMatcher([]Tag{alternative}).Match(speaker) + return c +} + +// NewMatcher returns a Matcher that matches an ordered list of preferred tags +// against a list of supported tags based on written intelligibility, closeness +// of dialect, equivalence of subtags and various other rules. It is initialized +// with the list of supported tags. The first element is used as the default +// value in case no match is found. +// +// Its Match method matches the first of the given Tags to reach a certain +// confidence threshold. The tags passed to Match should therefore be specified +// in order of preference. Extensions are ignored for matching. +// +// The index returned by the Match method corresponds to the index of the +// matched tag in t, but is augmented with the Unicode extension ('u')of the +// corresponding preferred tag. This allows user locale options to be passed +// transparently. +func NewMatcher(t []Tag) Matcher { + return newMatcher(t) +} + +func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) { + match, w, c := m.getBest(want...) + if match == nil { + t = m.default_.tag + } else { + t, index = match.tag, match.index + } + // Copy options from the user-provided tag into the result tag. This is hard + // to do after the fact, so we do it here. + // TODO: consider also adding in variants that are compatible with the + // matched language. + // TODO: Add back region if it is non-ambiguous? Or create another tag to + // preserve the region? + if u, ok := w.Extension('u'); ok { + t, _ = Raw.Compose(t, u) + } + return t, index, c +} + +type scriptRegionFlags uint8 + +const ( + isList = 1 << iota + scriptInFrom + regionInFrom +) + +func (t *Tag) setUndefinedLang(id langID) { + if t.lang == 0 { + t.lang = id + } +} + +func (t *Tag) setUndefinedScript(id scriptID) { + if t.script == 0 { + t.script = id + } +} + +func (t *Tag) setUndefinedRegion(id regionID) { + if t.region == 0 || t.region.contains(id) { + t.region = id + } +} + +// ErrMissingLikelyTagsData indicates no information was available +// to compute likely values of missing tags. +var ErrMissingLikelyTagsData = errors.New("missing likely tags data") + +// addLikelySubtags sets subtags to their most likely value, given the locale. +// In most cases this means setting fields for unknown values, but in some +// cases it may alter a value. It returns a ErrMissingLikelyTagsData error +// if the given locale cannot be expanded. +func (t Tag) addLikelySubtags() (Tag, error) { + id, err := addTags(t) + if err != nil { + return t, err + } else if id.equalTags(t) { + return t, nil + } + id.remakeString() + return id, nil +} + +// specializeRegion attempts to specialize a group region. +func specializeRegion(t *Tag) bool { + if i := regionInclusion[t.region]; i < nRegionGroups { + x := likelyRegionGroup[i] + if langID(x.lang) == t.lang && scriptID(x.script) == t.script { + t.region = regionID(x.region) + } + return true + } + return false +} + +func addTags(t Tag) (Tag, error) { + // We leave private use identifiers alone. + if t.private() { + return t, nil + } + if t.script != 0 && t.region != 0 { + if t.lang != 0 { + // already fully specified + specializeRegion(&t) + return t, nil + } + // Search matches for und-script-region. Note that for these cases + // region will never be a group so there is no need to check for this. + list := likelyRegion[t.region : t.region+1] + if x := list[0]; x.flags&isList != 0 { + list = likelyRegionList[x.lang : x.lang+uint16(x.script)] + } + for _, x := range list { + // Deviating from the spec. See match_test.go for details. + if scriptID(x.script) == t.script { + t.setUndefinedLang(langID(x.lang)) + return t, nil + } + } + } + if t.lang != 0 { + // Search matches for lang-script and lang-region, where lang != und. + if t.lang < langNoIndexOffset { + x := likelyLang[t.lang] + if x.flags&isList != 0 { + list := likelyLangList[x.region : x.region+uint16(x.script)] + if t.script != 0 { + for _, x := range list { + if scriptID(x.script) == t.script && x.flags&scriptInFrom != 0 { + t.setUndefinedRegion(regionID(x.region)) + return t, nil + } + } + } else if t.region != 0 { + count := 0 + goodScript := true + tt := t + for _, x := range list { + // We visit all entries for which the script was not + // defined, including the ones where the region was not + // defined. This allows for proper disambiguation within + // regions. + if x.flags&scriptInFrom == 0 && t.region.contains(regionID(x.region)) { + tt.region = regionID(x.region) + tt.setUndefinedScript(scriptID(x.script)) + goodScript = goodScript && tt.script == scriptID(x.script) + count++ + } + } + if count == 1 { + return tt, nil + } + // Even if we fail to find a unique Region, we might have + // an unambiguous script. + if goodScript { + t.script = tt.script + } + } + } + } + } else { + // Search matches for und-script. + if t.script != 0 { + x := likelyScript[t.script] + if x.region != 0 { + t.setUndefinedRegion(regionID(x.region)) + t.setUndefinedLang(langID(x.lang)) + return t, nil + } + } + // Search matches for und-region. If und-script-region exists, it would + // have been found earlier. + if t.region != 0 { + if i := regionInclusion[t.region]; i < nRegionGroups { + x := likelyRegionGroup[i] + if x.region != 0 { + t.setUndefinedLang(langID(x.lang)) + t.setUndefinedScript(scriptID(x.script)) + t.region = regionID(x.region) + } + } else { + x := likelyRegion[t.region] + if x.flags&isList != 0 { + x = likelyRegionList[x.lang] + } + if x.script != 0 && x.flags != scriptInFrom { + t.setUndefinedLang(langID(x.lang)) + t.setUndefinedScript(scriptID(x.script)) + return t, nil + } + } + } + } + + // Search matches for lang. + if t.lang < langNoIndexOffset { + x := likelyLang[t.lang] + if x.flags&isList != 0 { + x = likelyLangList[x.region] + } + if x.region != 0 { + t.setUndefinedScript(scriptID(x.script)) + t.setUndefinedRegion(regionID(x.region)) + } + specializeRegion(&t) + if t.lang == 0 { + t.lang = _en // default language + } + return t, nil + } + return t, ErrMissingLikelyTagsData +} + +func (t *Tag) setTagsFrom(id Tag) { + t.lang = id.lang + t.script = id.script + t.region = id.region +} + +// minimize removes the region or script subtags from t such that +// t.addLikelySubtags() == t.minimize().addLikelySubtags(). +func (t Tag) minimize() (Tag, error) { + t, err := minimizeTags(t) + if err != nil { + return t, err + } + t.remakeString() + return t, nil +} + +// minimizeTags mimics the behavior of the ICU 51 C implementation. +func minimizeTags(t Tag) (Tag, error) { + if t.equalTags(und) { + return t, nil + } + max, err := addTags(t) + if err != nil { + return t, err + } + for _, id := range [...]Tag{ + {lang: t.lang}, + {lang: t.lang, region: t.region}, + {lang: t.lang, script: t.script}, + } { + if x, err := addTags(id); err == nil && max.equalTags(x) { + t.setTagsFrom(id) + break + } + } + return t, nil +} + +// Tag Matching +// CLDR defines an algorithm for finding the best match between two sets of language +// tags. The basic algorithm defines how to score a possible match and then find +// the match with the best score +// (see http://www.unicode.org/reports/tr35/#LanguageMatching). +// Using scoring has several disadvantages. The scoring obfuscates the importance of +// the various factors considered, making the algorithm harder to understand. Using +// scoring also requires the full score to be computed for each pair of tags. +// +// We will use a different algorithm which aims to have the following properties: +// - clarity on the precedence of the various selection factors, and +// - improved performance by allowing early termination of a comparison. +// +// Matching algorithm (overview) +// Input: +// - supported: a set of supported tags +// - default: the default tag to return in case there is no match +// - desired: list of desired tags, ordered by preference, starting with +// the most-preferred. +// +// Algorithm: +// 1) Set the best match to the lowest confidence level +// 2) For each tag in "desired": +// a) For each tag in "supported": +// 1) compute the match between the two tags. +// 2) if the match is better than the previous best match, replace it +// with the new match. (see next section) +// b) if the current best match is above a certain threshold, return this +// match without proceeding to the next tag in "desired". [See Note 1] +// 3) If the best match so far is below a certain threshold, return "default". +// +// Ranking: +// We use two phases to determine whether one pair of tags are a better match +// than another pair of tags. First, we determine a rough confidence level. If the +// levels are different, the one with the highest confidence wins. +// Second, if the rough confidence levels are identical, we use a set of tie-breaker +// rules. +// +// The confidence level of matching a pair of tags is determined by finding the +// lowest confidence level of any matches of the corresponding subtags (the +// result is deemed as good as its weakest link). +// We define the following levels: +// Exact - An exact match of a subtag, before adding likely subtags. +// MaxExact - An exact match of a subtag, after adding likely subtags. +// [See Note 2]. +// High - High level of mutual intelligibility between different subtag +// variants. +// Low - Low level of mutual intelligibility between different subtag +// variants. +// No - No mutual intelligibility. +// +// The following levels can occur for each type of subtag: +// Base: Exact, MaxExact, High, Low, No +// Script: Exact, MaxExact [see Note 3], Low, No +// Region: Exact, MaxExact, High +// Variant: Exact, High +// Private: Exact, No +// +// Any result with a confidence level of Low or higher is deemed a possible match. +// Once a desired tag matches any of the supported tags with a level of MaxExact +// or higher, the next desired tag is not considered (see Step 2.b). +// Note that CLDR provides languageMatching data that defines close equivalence +// classes for base languages, scripts and regions. +// +// Tie-breaking +// If we get the same confidence level for two matches, we apply a sequence of +// tie-breaking rules. The first that succeeds defines the result. The rules are +// applied in the following order. +// 1) Original language was defined and was identical. +// 2) Original region was defined and was identical. +// 3) Distance between two maximized regions was the smallest. +// 4) Original script was defined and was identical. +// 5) Distance from want tag to have tag using the parent relation [see Note 5.] +// If there is still no winner after these rules are applied, the first match +// found wins. +// +// Notes: +// [1] Note that even if we may not have a perfect match, if a match is above a +// certain threshold, it is considered a better match than any other match +// to a tag later in the list of preferred language tags. +// [2] In practice, as matching of Exact is done in a separate phase from +// matching the other levels, we reuse the Exact level to mean MaxExact in +// the second phase. As a consequence, we only need the levels defined by +// the Confidence type. The MaxExact confidence level is mapped to High in +// the public API. +// [3] We do not differentiate between maximized script values that were derived +// from suppressScript versus most likely tag data. We determined that in +// ranking the two, one ranks just after the other. Moreover, the two cannot +// occur concurrently. As a consequence, they are identical for practical +// purposes. +// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign +// the MaxExact level to allow iw vs he to still be a closer match than +// en-AU vs en-US, for example. +// [5] In CLDR a locale inherits fields that are unspecified for this locale +// from its parent. Therefore, if a locale is a parent of another locale, +// it is a strong measure for closeness, especially when no other tie +// breaker rule applies. One could also argue it is inconsistent, for +// example, when pt-AO matches pt (which CLDR equates with pt-BR), even +// though its parent is pt-PT according to the inheritance rules. +// +// Implementation Details: +// There are several performance considerations worth pointing out. Most notably, +// we preprocess as much as possible (within reason) at the time of creation of a +// matcher. This includes: +// - creating a per-language map, which includes data for the raw base language +// and its canonicalized variant (if applicable), +// - expanding entries for the equivalence classes defined in CLDR's +// languageMatch data. +// The per-language map ensures that typically only a very small number of tags +// need to be considered. The pre-expansion of canonicalized subtags and +// equivalence classes reduces the amount of map lookups that need to be done at +// runtime. + +// matcher keeps a set of supported language tags, indexed by language. +type matcher struct { + default_ *haveTag + index map[langID]*matchHeader + passSettings bool +} + +// matchHeader has the lists of tags for exact matches and matches based on +// maximized and canonicalized tags for a given language. +type matchHeader struct { + exact []haveTag + max []haveTag +} + +// haveTag holds a supported Tag and its maximized script and region. The maximized +// or canonicalized language is not stored as it is not needed during matching. +type haveTag struct { + tag Tag + + // index of this tag in the original list of supported tags. + index int + + // conf is the maximum confidence that can result from matching this haveTag. + // When conf < Exact this means it was inserted after applying a CLDR equivalence rule. + conf Confidence + + // Maximized region and script. + maxRegion regionID + maxScript scriptID + + // altScript may be checked as an alternative match to maxScript. If altScript + // matches, the confidence level for this match is Low. Theoretically there + // could be multiple alternative scripts. This does not occur in practice. + altScript scriptID + + // nextMax is the index of the next haveTag with the same maximized tags. + nextMax uint16 +} + +func makeHaveTag(tag Tag, index int) (haveTag, langID) { + max := tag + if tag.lang != 0 { + max, _ = max.canonicalize(All) + max, _ = addTags(max) + max.remakeString() + } + return haveTag{tag, index, Exact, max.region, max.script, altScript(max.lang, max.script), 0}, max.lang +} + +// altScript returns an alternative script that may match the given script with +// a low confidence. At the moment, the langMatch data allows for at most one +// script to map to another and we rely on this to keep the code simple. +func altScript(l langID, s scriptID) scriptID { + for _, alt := range matchScript { + if (alt.lang == 0 || langID(alt.lang) == l) && scriptID(alt.have) == s { + return scriptID(alt.want) + } + } + return 0 +} + +// addIfNew adds a haveTag to the list of tags only if it is a unique tag. +// Tags that have the same maximized values are linked by index. +func (h *matchHeader) addIfNew(n haveTag, exact bool) { + // Don't add new exact matches. + for _, v := range h.exact { + if v.tag.equalsRest(n.tag) { + return + } + } + if exact { + h.exact = append(h.exact, n) + } + // Allow duplicate maximized tags, but create a linked list to allow quickly + // comparing the equivalents and bail out. + for i, v := range h.max { + if v.maxScript == n.maxScript && + v.maxRegion == n.maxRegion && + v.tag.variantOrPrivateTagStr() == n.tag.variantOrPrivateTagStr() { + for h.max[i].nextMax != 0 { + i = int(h.max[i].nextMax) + } + h.max[i].nextMax = uint16(len(h.max)) + break + } + } + h.max = append(h.max, n) +} + +// header returns the matchHeader for the given language. It creates one if +// it doesn't already exist. +func (m *matcher) header(l langID) *matchHeader { + if h := m.index[l]; h != nil { + return h + } + h := &matchHeader{} + m.index[l] = h + return h +} + +// newMatcher builds an index for the given supported tags and returns it as +// a matcher. It also expands the index by considering various equivalence classes +// for a given tag. +func newMatcher(supported []Tag) *matcher { + m := &matcher{ + index: make(map[langID]*matchHeader), + } + if len(supported) == 0 { + m.default_ = &haveTag{} + return m + } + // Add supported languages to the index. Add exact matches first to give + // them precedence. + for i, tag := range supported { + pair, _ := makeHaveTag(tag, i) + m.header(tag.lang).addIfNew(pair, true) + } + m.default_ = &m.header(supported[0].lang).exact[0] + for i, tag := range supported { + pair, max := makeHaveTag(tag, i) + if max != tag.lang { + m.header(max).addIfNew(pair, false) + } + } + + // update is used to add indexes in the map for equivalent languages. + // If force is true, the update will also apply to derived entries. To + // avoid applying a "transitive closure", use false. + update := func(want, have uint16, conf Confidence, force bool) { + if hh := m.index[langID(have)]; hh != nil { + if !force && len(hh.exact) == 0 { + return + } + hw := m.header(langID(want)) + for _, v := range hh.max { + if conf < v.conf { + v.conf = conf + } + v.nextMax = 0 // this value needs to be recomputed + if v.altScript != 0 { + v.altScript = altScript(langID(want), v.maxScript) + } + hw.addIfNew(v, conf == Exact && len(hh.exact) > 0) + } + } + } + + // Add entries for languages with mutual intelligibility as defined by CLDR's + // languageMatch data. + for _, ml := range matchLang { + update(ml.want, ml.have, Confidence(ml.conf), false) + if !ml.oneway { + update(ml.have, ml.want, Confidence(ml.conf), false) + } + } + + // Add entries for possible canonicalizations. This is an optimization to + // ensure that only one map lookup needs to be done at runtime per desired tag. + // First we match deprecated equivalents. If they are perfect equivalents + // (their canonicalization simply substitutes a different language code, but + // nothing else), the match confidence is Exact, otherwise it is High. + for i, lm := range langAliasMap { + if lm.from == _sh { + continue + } + + // If deprecated codes match and there is no fiddling with the script or + // or region, we consider it an exact match. + conf := Exact + if langAliasTypes[i] != langMacro { + if !isExactEquivalent(langID(lm.from)) { + conf = High + } + update(lm.to, lm.from, conf, true) + } + update(lm.from, lm.to, conf, true) + } + return m +} + +// getBest gets the best matching tag in m for any of the given tags, taking into +// account the order of preference of the given tags. +func (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) { + best := bestMatch{} + for _, w := range want { + var max Tag + // Check for exact match first. + h := m.index[w.lang] + if w.lang != 0 { + // Base language is defined. + if h == nil { + continue + } + for i := range h.exact { + have := &h.exact[i] + if have.tag.equalsRest(w) { + return have, w, Exact + } + } + max, _ = w.canonicalize(Legacy | Deprecated) + max, _ = addTags(max) + } else { + // Base language is not defined. + if h != nil { + for i := range h.exact { + have := &h.exact[i] + if have.tag.equalsRest(w) { + return have, w, Exact + } + } + } + if w.script == 0 && w.region == 0 { + // We skip all tags matching und for approximate matching, including + // private tags. + continue + } + max, _ = addTags(w) + if h = m.index[max.lang]; h == nil { + continue + } + } + // Check for match based on maximized tag. + for i := range h.max { + have := &h.max[i] + best.update(have, w, max.script, max.region) + if best.conf == Exact { + for have.nextMax != 0 { + have = &h.max[have.nextMax] + best.update(have, w, max.script, max.region) + } + return best.have, best.want, High + } + } + } + if best.conf <= No { + if len(want) != 0 { + return nil, want[0], No + } + return nil, Tag{}, No + } + return best.have, best.want, best.conf +} + +// bestMatch accumulates the best match so far. +type bestMatch struct { + have *haveTag + want Tag + conf Confidence + // Cached results from applying tie-breaking rules. + origLang bool + origReg bool + regDist uint8 + origScript bool + parentDist uint8 // 255 if have is not an ancestor of want tag. +} + +// update updates the existing best match if the new pair is considered to be a +// better match. +// To determine if the given pair is a better match, it first computes the rough +// confidence level. If this surpasses the current match, it will replace it and +// update the tie-breaker rule cache. If there is a tie, it proceeds with applying +// a series of tie-breaker rules. If there is no conclusive winner after applying +// the tie-breaker rules, it leaves the current match as the preferred match. +func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion regionID) { + // Bail if the maximum attainable confidence is below that of the current best match. + c := have.conf + if c < m.conf { + return + } + if have.maxScript != maxScript { + // There is usually very little comprehension between different scripts. + // In a few cases there may still be Low comprehension. This possibility is + // pre-computed and stored in have.altScript. + if Low < m.conf || have.altScript != maxScript { + return + } + c = Low + } else if have.maxRegion != maxRegion { + // There is usually a small difference between languages across regions. + // We use the region distance (below) to disambiguate between equal matches. + if High < c { + c = High + } + } + + // We store the results of the computations of the tie-breaker rules along + // with the best match. There is no need to do the checks once we determine + // we have a winner, but we do still need to do the tie-breaker computations. + // We use "beaten" to keep track if we still need to do the checks. + beaten := false // true if the new pair defeats the current one. + if c != m.conf { + if c < m.conf { + return + } + beaten = true + } + + // Tie-breaker rules: + // We prefer if the pre-maximized language was specified and identical. + origLang := have.tag.lang == tag.lang && tag.lang != 0 + if !beaten && m.origLang != origLang { + if m.origLang { + return + } + beaten = true + } + + // We prefer if the pre-maximized region was specified and identical. + origReg := have.tag.region == tag.region && tag.region != 0 + if !beaten && m.origReg != origReg { + if m.origReg { + return + } + beaten = true + } + + // Next we prefer smaller distances between regions, as defined by regionDist. + regDist := regionDist(have.maxRegion, maxRegion, tag.lang) + if !beaten && m.regDist != regDist { + if regDist > m.regDist { + return + } + beaten = true + } + + // Next we prefer if the pre-maximized script was specified and identical. + origScript := have.tag.script == tag.script && tag.script != 0 + if !beaten && m.origScript != origScript { + if m.origScript { + return + } + beaten = true + } + + // Finally we prefer tags which have a closer parent relationship. + parentDist := parentDistance(have.tag.region, tag) + if !beaten && m.parentDist != parentDist { + if parentDist > m.parentDist { + return + } + beaten = true + } + + // Update m to the newly found best match. + if beaten { + m.have = have + m.want = tag + m.conf = c + m.origLang = origLang + m.origReg = origReg + m.origScript = origScript + m.regDist = regDist + m.parentDist = parentDist + } +} + +// parentDistance returns the number of times Parent must be called before the +// regions match. It is assumed that it has already been checked that lang and +// script are identical. If haveRegion does not occur in the ancestor chain of +// tag, it returns 255. +func parentDistance(haveRegion regionID, tag Tag) uint8 { + p := tag.Parent() + d := uint8(1) + for haveRegion != p.region { + if p.region == 0 { + return 255 + } + p = p.Parent() + d++ + } + return d +} + +// regionDist wraps regionDistance with some exceptions to the algorithmic distance. +func regionDist(a, b regionID, lang langID) uint8 { + if lang == _en { + // Two variants of non-US English are close to each other, regardless of distance. + if a != _US && b != _US { + return 2 + } + } + return uint8(regionDistance(a, b)) +} + +// regionDistance computes the distance between two regions based on the +// distance in the graph of region containments as defined in CLDR. It iterates +// over increasingly inclusive sets of groups, represented as bit vectors, until +// the source bit vector has bits in common with the destination vector. +func regionDistance(a, b regionID) int { + if a == b { + return 0 + } + p, q := regionInclusion[a], regionInclusion[b] + if p < nRegionGroups { + p, q = q, p + } + set := regionInclusionBits + if q < nRegionGroups && set[p]&(1<<q) != 0 { + return 1 + } + d := 2 + for goal := set[q]; set[p]&goal == 0; p = regionInclusionNext[p] { + d++ + } + return d +} + +func (t Tag) variants() string { + if t.pVariant == 0 { + return "" + } + return t.str[t.pVariant:t.pExt] +} + +// variantOrPrivateTagStr returns variants or private use tags. +func (t Tag) variantOrPrivateTagStr() string { + if t.pExt > 0 { + return t.str[t.pVariant:t.pExt] + } + return t.str[t.pVariant:] +} + +// equalsRest compares everything except the language. +func (a Tag) equalsRest(b Tag) bool { + // TODO: don't include extensions in this comparison. To do this efficiently, + // though, we should handle private tags separately. + return a.script == b.script && a.region == b.region && a.variantOrPrivateTagStr() == b.variantOrPrivateTagStr() +} + +// isExactEquivalent returns true if canonicalizing the language will not alter +// the script or region of a tag. +func isExactEquivalent(l langID) bool { + for _, o := range notEquivalent { + if o == l { + return false + } + } + return true +} + +var notEquivalent []langID + +func init() { + // Create a list of all languages for which canonicalization may alter the + // script or region. + for _, lm := range langAliasMap { + tag := Tag{lang: langID(lm.from)} + if tag, _ = tag.canonicalize(All); tag.script != 0 || tag.region != 0 { + notEquivalent = append(notEquivalent, langID(lm.from)) + } + } +} diff --git a/vendor/golang.org/x/text/language/parse.go b/vendor/golang.org/x/text/language/parse.go new file mode 100644 index 0000000000..cfa28f56e2 --- /dev/null +++ b/vendor/golang.org/x/text/language/parse.go @@ -0,0 +1,859 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "errors" + "fmt" + "sort" + "strconv" + "strings" + + "golang.org/x/text/internal/tag" +) + +// isAlpha returns true if the byte is not a digit. +// b must be an ASCII letter or digit. +func isAlpha(b byte) bool { + return b > '9' +} + +// isAlphaNum returns true if the string contains only ASCII letters or digits. +func isAlphaNum(s []byte) bool { + for _, c := range s { + if !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') { + return false + } + } + return true +} + +// errSyntax is returned by any of the parsing functions when the +// input is not well-formed, according to BCP 47. +// TODO: return the position at which the syntax error occurred? +var errSyntax = errors.New("language: tag is not well-formed") + +// ValueError is returned by any of the parsing functions when the +// input is well-formed but the respective subtag is not recognized +// as a valid value. +type ValueError struct { + v [8]byte +} + +func mkErrInvalid(s []byte) error { + var e ValueError + copy(e.v[:], s) + return e +} + +func (e ValueError) tag() []byte { + n := bytes.IndexByte(e.v[:], 0) + if n == -1 { + n = 8 + } + return e.v[:n] +} + +// Error implements the error interface. +func (e ValueError) Error() string { + return fmt.Sprintf("language: subtag %q is well-formed but unknown", e.tag()) +} + +// Subtag returns the subtag for which the error occurred. +func (e ValueError) Subtag() string { + return string(e.tag()) +} + +// scanner is used to scan BCP 47 tokens, which are separated by _ or -. +type scanner struct { + b []byte + bytes [max99thPercentileSize]byte + token []byte + start int // start position of the current token + end int // end position of the current token + next int // next point for scan + err error + done bool +} + +func makeScannerString(s string) scanner { + scan := scanner{} + if len(s) <= len(scan.bytes) { + scan.b = scan.bytes[:copy(scan.bytes[:], s)] + } else { + scan.b = []byte(s) + } + scan.init() + return scan +} + +// makeScanner returns a scanner using b as the input buffer. +// b is not copied and may be modified by the scanner routines. +func makeScanner(b []byte) scanner { + scan := scanner{b: b} + scan.init() + return scan +} + +func (s *scanner) init() { + for i, c := range s.b { + if c == '_' { + s.b[i] = '-' + } + } + s.scan() +} + +// restToLower converts the string between start and end to lower case. +func (s *scanner) toLower(start, end int) { + for i := start; i < end; i++ { + c := s.b[i] + if 'A' <= c && c <= 'Z' { + s.b[i] += 'a' - 'A' + } + } +} + +func (s *scanner) setError(e error) { + if s.err == nil || (e == errSyntax && s.err != errSyntax) { + s.err = e + } +} + +// resizeRange shrinks or grows the array at position oldStart such that +// a new string of size newSize can fit between oldStart and oldEnd. +// Sets the scan point to after the resized range. +func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { + s.start = oldStart + if end := oldStart + newSize; end != oldEnd { + diff := end - oldEnd + if end < cap(s.b) { + b := make([]byte, len(s.b)+diff) + copy(b, s.b[:oldStart]) + copy(b[end:], s.b[oldEnd:]) + s.b = b + } else { + s.b = append(s.b[end:], s.b[oldEnd:]...) + } + s.next = end + (s.next - s.end) + s.end = end + } +} + +// replace replaces the current token with repl. +func (s *scanner) replace(repl string) { + s.resizeRange(s.start, s.end, len(repl)) + copy(s.b[s.start:], repl) +} + +// gobble removes the current token from the input. +// Caller must call scan after calling gobble. +func (s *scanner) gobble(e error) { + s.setError(e) + if s.start == 0 { + s.b = s.b[:+copy(s.b, s.b[s.next:])] + s.end = 0 + } else { + s.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])] + s.end = s.start - 1 + } + s.next = s.start +} + +// deleteRange removes the given range from s.b before the current token. +func (s *scanner) deleteRange(start, end int) { + s.setError(errSyntax) + s.b = s.b[:start+copy(s.b[start:], s.b[end:])] + diff := end - start + s.next -= diff + s.start -= diff + s.end -= diff +} + +// scan parses the next token of a BCP 47 string. Tokens that are larger +// than 8 characters or include non-alphanumeric characters result in an error +// and are gobbled and removed from the output. +// It returns the end position of the last token consumed. +func (s *scanner) scan() (end int) { + end = s.end + s.token = nil + for s.start = s.next; s.next < len(s.b); { + i := bytes.IndexByte(s.b[s.next:], '-') + if i == -1 { + s.end = len(s.b) + s.next = len(s.b) + i = s.end - s.start + } else { + s.end = s.next + i + s.next = s.end + 1 + } + token := s.b[s.start:s.end] + if i < 1 || i > 8 || !isAlphaNum(token) { + s.gobble(errSyntax) + continue + } + s.token = token + return end + } + if n := len(s.b); n > 0 && s.b[n-1] == '-' { + s.setError(errSyntax) + s.b = s.b[:len(s.b)-1] + } + s.done = true + return end +} + +// acceptMinSize parses multiple tokens of the given size or greater. +// It returns the end position of the last token consumed. +func (s *scanner) acceptMinSize(min int) (end int) { + end = s.end + s.scan() + for ; len(s.token) >= min; s.scan() { + end = s.end + } + return end +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the default canonicalization type. +func Parse(s string) (t Tag, err error) { + return Default.Parse(s) +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the the canonicalization type c. +func (c CanonType) Parse(s string) (t Tag, err error) { + // TODO: consider supporting old-style locale key-value pairs. + if s == "" { + return und, errSyntax + } + if len(s) <= maxAltTaglen { + b := [maxAltTaglen]byte{} + for i, c := range s { + // Generating invalid UTF-8 is okay as it won't match. + if 'A' <= c && c <= 'Z' { + c += 'a' - 'A' + } else if c == '_' { + c = '-' + } + b[i] = byte(c) + } + if t, ok := grandfathered(b); ok { + return t, nil + } + } + scan := makeScannerString(s) + t, err = parse(&scan, s) + t, changed := t.canonicalize(c) + if changed { + t.remakeString() + } + return t, err +} + +func parse(scan *scanner, s string) (t Tag, err error) { + t = und + var end int + if n := len(scan.token); n <= 1 { + scan.toLower(0, len(scan.b)) + if n == 0 || scan.token[0] != 'x' { + return t, errSyntax + } + end = parseExtensions(scan) + } else if n >= 4 { + return und, errSyntax + } else { // the usual case + t, end = parseTag(scan) + if n := len(scan.token); n == 1 { + t.pExt = uint16(end) + end = parseExtensions(scan) + } else if end < len(scan.b) { + scan.setError(errSyntax) + scan.b = scan.b[:end] + } + } + if int(t.pVariant) < len(scan.b) { + if end < len(s) { + s = s[:end] + } + if len(s) > 0 && tag.Compare(s, scan.b) == 0 { + t.str = s + } else { + t.str = string(scan.b) + } + } else { + t.pVariant, t.pExt = 0, 0 + } + return t, scan.err +} + +// parseTag parses language, script, region and variants. +// It returns a Tag and the end position in the input that was parsed. +func parseTag(scan *scanner) (t Tag, end int) { + var e error + // TODO: set an error if an unknown lang, script or region is encountered. + t.lang, e = getLangID(scan.token) + scan.setError(e) + scan.replace(t.lang.String()) + langStart := scan.start + end = scan.scan() + for len(scan.token) == 3 && isAlpha(scan.token[0]) { + // From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent + // to a tag of the form <extlang>. + lang, e := getLangID(scan.token) + if lang != 0 { + t.lang = lang + copy(scan.b[langStart:], lang.String()) + scan.b[langStart+3] = '-' + scan.start = langStart + 4 + } + scan.gobble(e) + end = scan.scan() + } + if len(scan.token) == 4 && isAlpha(scan.token[0]) { + t.script, e = getScriptID(script, scan.token) + if t.script == 0 { + scan.gobble(e) + } + end = scan.scan() + } + if n := len(scan.token); n >= 2 && n <= 3 { + t.region, e = getRegionID(scan.token) + if t.region == 0 { + scan.gobble(e) + } else { + scan.replace(t.region.String()) + } + end = scan.scan() + } + scan.toLower(scan.start, len(scan.b)) + t.pVariant = byte(end) + end = parseVariants(scan, end, t) + t.pExt = uint16(end) + return t, end +} + +var separator = []byte{'-'} + +// parseVariants scans tokens as long as each token is a valid variant string. +// Duplicate variants are removed. +func parseVariants(scan *scanner, end int, t Tag) int { + start := scan.start + varIDBuf := [4]uint8{} + variantBuf := [4][]byte{} + varID := varIDBuf[:0] + variant := variantBuf[:0] + last := -1 + needSort := false + for ; len(scan.token) >= 4; scan.scan() { + // TODO: measure the impact of needing this conversion and redesign + // the data structure if there is an issue. + v, ok := variantIndex[string(scan.token)] + if !ok { + // unknown variant + // TODO: allow user-defined variants? + scan.gobble(mkErrInvalid(scan.token)) + continue + } + varID = append(varID, v) + variant = append(variant, scan.token) + if !needSort { + if last < int(v) { + last = int(v) + } else { + needSort = true + // There is no legal combinations of more than 7 variants + // (and this is by no means a useful sequence). + const maxVariants = 8 + if len(varID) > maxVariants { + break + } + } + } + end = scan.end + } + if needSort { + sort.Sort(variantsSort{varID, variant}) + k, l := 0, -1 + for i, v := range varID { + w := int(v) + if l == w { + // Remove duplicates. + continue + } + varID[k] = varID[i] + variant[k] = variant[i] + k++ + l = w + } + if str := bytes.Join(variant[:k], separator); len(str) == 0 { + end = start - 1 + } else { + scan.resizeRange(start, end, len(str)) + copy(scan.b[scan.start:], str) + end = scan.end + } + } + return end +} + +type variantsSort struct { + i []uint8 + v [][]byte +} + +func (s variantsSort) Len() int { + return len(s.i) +} + +func (s variantsSort) Swap(i, j int) { + s.i[i], s.i[j] = s.i[j], s.i[i] + s.v[i], s.v[j] = s.v[j], s.v[i] +} + +func (s variantsSort) Less(i, j int) bool { + return s.i[i] < s.i[j] +} + +type bytesSort [][]byte + +func (b bytesSort) Len() int { + return len(b) +} + +func (b bytesSort) Swap(i, j int) { + b[i], b[j] = b[j], b[i] +} + +func (b bytesSort) Less(i, j int) bool { + return bytes.Compare(b[i], b[j]) == -1 +} + +// parseExtensions parses and normalizes the extensions in the buffer. +// It returns the last position of scan.b that is part of any extension. +// It also trims scan.b to remove excess parts accordingly. +func parseExtensions(scan *scanner) int { + start := scan.start + exts := [][]byte{} + private := []byte{} + end := scan.end + for len(scan.token) == 1 { + extStart := scan.start + ext := scan.token[0] + end = parseExtension(scan) + extension := scan.b[extStart:end] + if len(extension) < 3 || (ext != 'x' && len(extension) < 4) { + scan.setError(errSyntax) + end = extStart + continue + } else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) { + scan.b = scan.b[:end] + return end + } else if ext == 'x' { + private = extension + break + } + exts = append(exts, extension) + } + sort.Sort(bytesSort(exts)) + if len(private) > 0 { + exts = append(exts, private) + } + scan.b = scan.b[:start] + if len(exts) > 0 { + scan.b = append(scan.b, bytes.Join(exts, separator)...) + } else if start > 0 { + // Strip trailing '-'. + scan.b = scan.b[:start-1] + } + return end +} + +// parseExtension parses a single extension and returns the position of +// the extension end. +func parseExtension(scan *scanner) int { + start, end := scan.start, scan.end + switch scan.token[0] { + case 'u': + attrStart := end + scan.scan() + for last := []byte{}; len(scan.token) > 2; scan.scan() { + if bytes.Compare(scan.token, last) != -1 { + // Attributes are unsorted. Start over from scratch. + p := attrStart + 1 + scan.next = p + attrs := [][]byte{} + for scan.scan(); len(scan.token) > 2; scan.scan() { + attrs = append(attrs, scan.token) + end = scan.end + } + sort.Sort(bytesSort(attrs)) + copy(scan.b[p:], bytes.Join(attrs, separator)) + break + } + last = scan.token + end = scan.end + } + var last, key []byte + for attrEnd := end; len(scan.token) == 2; last = key { + key = scan.token + keyEnd := scan.end + end = scan.acceptMinSize(3) + // TODO: check key value validity + if keyEnd == end || bytes.Compare(key, last) != 1 { + // We have an invalid key or the keys are not sorted. + // Start scanning keys from scratch and reorder. + p := attrEnd + 1 + scan.next = p + keys := [][]byte{} + for scan.scan(); len(scan.token) == 2; { + keyStart, keyEnd := scan.start, scan.end + end = scan.acceptMinSize(3) + if keyEnd != end { + keys = append(keys, scan.b[keyStart:end]) + } else { + scan.setError(errSyntax) + end = keyStart + } + } + sort.Sort(bytesSort(keys)) + reordered := bytes.Join(keys, separator) + if e := p + len(reordered); e < end { + scan.deleteRange(e, end) + end = e + } + copy(scan.b[p:], bytes.Join(keys, separator)) + break + } + } + case 't': + scan.scan() + if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) { + _, end = parseTag(scan) + scan.toLower(start, end) + } + for len(scan.token) == 2 && !isAlpha(scan.token[1]) { + end = scan.acceptMinSize(3) + } + case 'x': + end = scan.acceptMinSize(1) + default: + end = scan.acceptMinSize(2) + } + return end +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. A Tag overwrites all former values and typically +// only makes sense as the first argument. The resulting tag is returned after +// canonicalizing using the Default CanonType. If one or more errors are +// encountered, one of the errors is returned. +func Compose(part ...interface{}) (t Tag, err error) { + return Default.Compose(part...) +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. A Tag overwrites all former values and typically +// only makes sense as the first argument. The resulting tag is returned after +// canonicalizing using CanonType c. If one or more errors are encountered, +// one of the errors is returned. +func (c CanonType) Compose(part ...interface{}) (t Tag, err error) { + var b builder + if err = b.update(part...); err != nil { + return und, err + } + t, _ = b.tag.canonicalize(c) + + if len(b.ext) > 0 || len(b.variant) > 0 { + sort.Sort(sortVariant(b.variant)) + sort.Strings(b.ext) + if b.private != "" { + b.ext = append(b.ext, b.private) + } + n := maxCoreSize + tokenLen(b.variant...) + tokenLen(b.ext...) + buf := make([]byte, n) + p := t.genCoreBytes(buf) + t.pVariant = byte(p) + p += appendTokens(buf[p:], b.variant...) + t.pExt = uint16(p) + p += appendTokens(buf[p:], b.ext...) + t.str = string(buf[:p]) + } else if b.private != "" { + t.str = b.private + t.remakeString() + } + return +} + +type builder struct { + tag Tag + + private string // the x extension + ext []string + variant []string + + err error +} + +func (b *builder) addExt(e string) { + if e == "" { + } else if e[0] == 'x' { + b.private = e + } else { + b.ext = append(b.ext, e) + } +} + +var errInvalidArgument = errors.New("invalid Extension or Variant") + +func (b *builder) update(part ...interface{}) (err error) { + replace := func(l *[]string, s string, eq func(a, b string) bool) bool { + if s == "" { + b.err = errInvalidArgument + return true + } + for i, v := range *l { + if eq(v, s) { + (*l)[i] = s + return true + } + } + return false + } + for _, x := range part { + switch v := x.(type) { + case Tag: + b.tag.lang = v.lang + b.tag.region = v.region + b.tag.script = v.script + if v.str != "" { + b.variant = nil + for x, s := "", v.str[v.pVariant:v.pExt]; s != ""; { + x, s = nextToken(s) + b.variant = append(b.variant, x) + } + b.ext, b.private = nil, "" + for i, e := int(v.pExt), ""; i < len(v.str); { + i, e = getExtension(v.str, i) + b.addExt(e) + } + } + case Base: + b.tag.lang = v.langID + case Script: + b.tag.script = v.scriptID + case Region: + b.tag.region = v.regionID + case Variant: + if !replace(&b.variant, v.variant, func(a, b string) bool { return a == b }) { + b.variant = append(b.variant, v.variant) + } + case Extension: + if !replace(&b.ext, v.s, func(a, b string) bool { return a[0] == b[0] }) { + b.addExt(v.s) + } + case []Variant: + b.variant = nil + for _, x := range v { + b.update(x) + } + case []Extension: + b.ext, b.private = nil, "" + for _, e := range v { + b.update(e) + } + // TODO: support parsing of raw strings based on morphology or just extensions? + case error: + err = v + } + } + return +} + +func tokenLen(token ...string) (n int) { + for _, t := range token { + n += len(t) + 1 + } + return +} + +func appendTokens(b []byte, token ...string) int { + p := 0 + for _, t := range token { + b[p] = '-' + copy(b[p+1:], t) + p += 1 + len(t) + } + return p +} + +type sortVariant []string + +func (s sortVariant) Len() int { + return len(s) +} + +func (s sortVariant) Swap(i, j int) { + s[j], s[i] = s[i], s[j] +} + +func (s sortVariant) Less(i, j int) bool { + return variantIndex[s[i]] < variantIndex[s[j]] +} + +func findExt(list []string, x byte) int { + for i, e := range list { + if e[0] == x { + return i + } + } + return -1 +} + +// getExtension returns the name, body and end position of the extension. +func getExtension(s string, p int) (end int, ext string) { + if s[p] == '-' { + p++ + } + if s[p] == 'x' { + return len(s), s[p:] + } + end = nextExtension(s, p) + return end, s[p:end] +} + +// nextExtension finds the next extension within the string, searching +// for the -<char>- pattern from position p. +// In the fast majority of cases, language tags will have at most +// one extension and extensions tend to be small. +func nextExtension(s string, p int) int { + for n := len(s) - 3; p < n; { + if s[p] == '-' { + if s[p+2] == '-' { + return p + } + p += 3 + } else { + p++ + } + } + return len(s) +} + +var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") + +// ParseAcceptLanguage parses the contents of a Accept-Language header as +// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and +// a list of corresponding quality weights. It is more permissive than RFC 2616 +// and may return non-nil slices even if the input is not valid. +// The Tags will be sorted by highest weight first and then by first occurrence. +// Tags with a weight of zero will be dropped. An error will be returned if the +// input could not be parsed. +func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) { + var entry string + for s != "" { + if entry, s = split(s, ','); entry == "" { + continue + } + + entry, weight := split(entry, ';') + + // Scan the language. + t, err := Parse(entry) + if err != nil { + id, ok := acceptFallback[entry] + if !ok { + return nil, nil, err + } + t = Tag{lang: id} + } + + // Scan the optional weight. + w := 1.0 + if weight != "" { + weight = consume(weight, 'q') + weight = consume(weight, '=') + // consume returns the empty string when a token could not be + // consumed, resulting in an error for ParseFloat. + if w, err = strconv.ParseFloat(weight, 32); err != nil { + return nil, nil, errInvalidWeight + } + // Drop tags with a quality weight of 0. + if w <= 0 { + continue + } + } + + tag = append(tag, t) + q = append(q, float32(w)) + } + sortStable(&tagSort{tag, q}) + return tag, q, nil +} + +// consume removes a leading token c from s and returns the result or the empty +// string if there is no such token. +func consume(s string, c byte) string { + if s == "" || s[0] != c { + return "" + } + return strings.TrimSpace(s[1:]) +} + +func split(s string, c byte) (head, tail string) { + if i := strings.IndexByte(s, c); i >= 0 { + return strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:]) + } + return strings.TrimSpace(s), "" +} + +// Add hack mapping to deal with a small number of cases that that occur +// in Accept-Language (with reasonable frequency). +var acceptFallback = map[string]langID{ + "english": _en, + "deutsch": _de, + "italian": _it, + "french": _fr, + "*": _mul, // defined in the spec to match all languages. +} + +type tagSort struct { + tag []Tag + q []float32 +} + +func (s *tagSort) Len() int { + return len(s.q) +} + +func (s *tagSort) Less(i, j int) bool { + return s.q[i] > s.q[j] +} + +func (s *tagSort) Swap(i, j int) { + s.tag[i], s.tag[j] = s.tag[j], s.tag[i] + s.q[i], s.q[j] = s.q[j], s.q[i] +} diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go new file mode 100644 index 0000000000..5de0f856af --- /dev/null +++ b/vendor/golang.org/x/text/language/tables.go @@ -0,0 +1,2791 @@ +// This file was generated by go generate; DO NOT EDIT + +package language + +import "golang.org/x/text/internal/tag" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "29" + +const numLanguages = 8654 + +const numScripts = 230 + +const numRegions = 354 + +type fromTo struct { + from uint16 + to uint16 +} + +const nonCanonicalUnd = 649 +const ( + _af = 10 + _am = 17 + _ar = 21 + _az = 36 + _bg = 56 + _bn = 75 + _ca = 97 + _cs = 121 + _da = 128 + _de = 133 + _el = 154 + _en = 155 + _es = 157 + _et = 159 + _fa = 164 + _fi = 168 + _fil = 170 + _fr = 175 + _gu = 211 + _he = 224 + _hi = 225 + _hr = 238 + _hu = 242 + _hy = 243 + _id = 248 + _is = 258 + _it = 259 + _ja = 263 + _ka = 273 + _kk = 303 + _km = 307 + _kn = 309 + _ko = 310 + _ky = 333 + _lo = 357 + _lt = 361 + _lv = 368 + _mk = 396 + _ml = 397 + _mn = 399 + _mo = 402 + _mr = 406 + _ms = 410 + _mul = 414 + _my = 421 + _nb = 431 + _ne = 436 + _nl = 445 + _no = 449 + _pa = 471 + _pl = 487 + _pt = 495 + _ro = 515 + _ru = 519 + _sh = 549 + _si = 552 + _sk = 554 + _sl = 556 + _sq = 570 + _sr = 571 + _sv = 583 + _sw = 584 + _ta = 593 + _te = 600 + _th = 605 + _tl = 616 + _tn = 619 + _tr = 623 + _uk = 646 + _ur = 652 + _uz = 653 + _vi = 658 + _zh = 708 + _zu = 710 + _jbo = 265 + _ami = 1033 + _bnn = 1740 + _hak = 221 + _tlh = 13850 + _lb = 340 + _nv = 458 + _pwn = 11438 + _tao = 13571 + _tay = 13581 + _tsu = 14045 + _nn = 447 + _sfb = 13012 + _vgt = 15084 + _sgg = 13043 + _cmn = 2390 + _nan = 428 + _hsn = 240 +) + +const langPrivateStart = 0x2d09 + +const langPrivateEnd = 0x2f10 + +// lang holds an alphabetically sorted list of ISO-639 language identifiers. +// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag. +// For 2-byte language identifiers, the two successive bytes have the following meaning: +// - if the first letter of the 2- and 3-letter ISO codes are the same: +// the second and third letter of the 3-letter ISO code. +// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3. +// For 3-byte language identifiers the 4th byte is 0. +var lang tag.Index = "" + // Size: 2856 bytes + "---\x00aaarabbkabr\x00ace\x00ach\x00ada\x00ady\x00aeveaeb\x00affragq\x00" + + "aho\x00akkaakk\x00aln\x00alt\x00ammhamo\x00anrgaoz\x00arraarc\x00arn\x00" + + "aro\x00arq\x00ary\x00arz\x00assmasa\x00ase\x00ast\x00atj\x00avvaawa\x00a" + + "yymazzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bax\x00bbc\x00bbj\x00bci" + + "\x00beelbej\x00bem\x00bew\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc" + + "\x00bgn\x00bgx\x00bhihbhb\x00bhi\x00bhk\x00bho\x00biisbik\x00bin\x00bjj" + + "\x00bjn\x00bkm\x00bku\x00blt\x00bmambmq\x00bnenboodbpy\x00bqi\x00bqv\x00" + + "brrebra\x00brh\x00brx\x00bsosbsq\x00bss\x00bto\x00btv\x00bua\x00buc\x00b" + + "ug\x00bum\x00bvb\x00byn\x00byv\x00bze\x00caatcch\x00ccp\x00ceheceb\x00cg" + + "g\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00ckb\x00cooscop" + + "\x00cps\x00crrecrj\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd" + + "\x00cuhucvhvcyymdaandak\x00dar\x00dav\x00dcc\x00deeuden\x00dgr\x00dje" + + "\x00dnj\x00doi\x00dsb\x00dtm\x00dtp\x00dty\x00dua\x00dvivdyo\x00dyu\x00d" + + "zzoebu\x00eeweefi\x00egl\x00egy\x00eky\x00elllenngeopoes\x00\x05esu\x00e" + + "tstett\x00euusewo\x00ext\x00faasfan\x00ffulffm\x00fiinfia\x00fil\x00fit" + + "\x00fjijfoaofon\x00frrafrc\x00frp\x00frr\x00frs\x00fud\x00fuq\x00fur\x00" + + "fuv\x00fvr\x00fyrygalegaa\x00gag\x00gan\x00gay\x00gbm\x00gbz\x00gcr\x00g" + + "dlagez\x00ggn\x00gil\x00gjk\x00gju\x00gllgglk\x00gnrngom\x00gon\x00gor" + + "\x00gos\x00got\x00grc\x00grt\x00gsw\x00guujgub\x00guc\x00gur\x00guw\x00g" + + "uz\x00gvlvgvr\x00gwi\x00haauhak\x00haw\x00haz\x00heebhiinhif\x00hil\x00h" + + "lu\x00hmd\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00hrrvhs" + + "b\x00hsn\x00htathuunhyyehzerianaiba\x00ibb\x00idndieleigboiiiiikpkikt" + + "\x00ilo\x00inndinh\x00iodoisslittaiukuiw\x00\x03izh\x00japnjam\x00jbo" + + "\x00jgo\x00ji\x00\x06jmc\x00jml\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac" + + "\x00kaj\x00kam\x00kao\x00kbd\x00kcg\x00kck\x00kde\x00kdt\x00kea\x00ken" + + "\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgp\x00kha\x00khb\x00khn\x00khq\x00k" + + "ht\x00khw\x00kiikkiu\x00kjuakjg\x00kkazkkj\x00klalkln\x00kmhmkmb\x00knan" + + "koorkoi\x00kok\x00kos\x00kpe\x00kraukrc\x00kri\x00krj\x00krl\x00kru\x00k" + + "sasksb\x00ksf\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw\x00\x01kxm\x00kx" + + "p\x00kyirlaatlab\x00lad\x00lag\x00lah\x00laj\x00lbtzlbe\x00lbw\x00lcp" + + "\x00lep\x00lez\x00lgugliimlif\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lmn" + + "\x00lmo\x00lninloaolol\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy" + + "\x00luz\x00lvavlwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00m" + + "an\x00mas\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00mfa\x00mfe\x00mgl" + + "gmgh\x00mgo\x00mgp\x00mgy\x00mhahmirimin\x00mis\x00mkkdmlalmls\x00mnonmn" + + "i\x00mnw\x00moolmoe\x00moh\x00mos\x00mrarmrd\x00mrj\x00mro\x00mssamtltmt" + + "r\x00mua\x00mul\x00mus\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00myyamyv\x00" + + "myx\x00myz\x00mzn\x00naaunah\x00nan\x00nap\x00naq\x00nbobnch\x00nddendc" + + "\x00nds\x00neepnew\x00ngdongl\x00nhe\x00nhw\x00nij\x00niu\x00njo\x00nlld" + + "nmg\x00nnnonnh\x00noornod\x00noe\x00non\x00nqo\x00nrblnsk\x00nso\x00nus" + + "\x00nvavnxq\x00nyyanym\x00nyn\x00nzi\x00occiojjiomrmorriosssosa\x00otk" + + "\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pcd\x00pcm\x00pdc\x00pdt\x00p" + + "eo\x00pfl\x00phn\x00pilipka\x00pko\x00plolpms\x00pnt\x00pon\x00pra\x00pr" + + "d\x00prg\x00psusptorpuu\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn" + + "\x00ria\x00rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng" + + "\x00roonrob\x00rof\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00ryu\x00s" + + "aansaf\x00sah\x00saq\x00sas\x00sat\x00saz\x00sbp\x00scrdsck\x00scn\x00sc" + + "o\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga" + + "\x00sgs\x00sh\x00\x02shi\x00shn\x00siinsid\x00sklkskr\x00sllvsli\x00sly" + + "\x00smmosma\x00smi\x00smj\x00smn\x00smp\x00sms\x00snnasnk\x00soomsou\x00" + + "sqqisrrpsrb\x00srn\x00srr\x00srx\x00ssswssy\x00stotstq\x00suunsuk\x00sus" + + "\x00svweswwaswb\x00swc\x00swg\x00swv\x00sxn\x00syl\x00syr\x00szl\x00taam" + + "taj\x00tbw\x00tcy\x00tdd\x00tdg\x00tdh\x00teeltem\x00teo\x00tet\x00tggkt" + + "hhathl\x00thq\x00thr\x00tiirtig\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlglt" + + "ly\x00tmh\x00tnsntoontog\x00tpi\x00trurtru\x00trv\x00tssotsd\x00tsf\x00t" + + "sg\x00tsj\x00ttatttj\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00txg\x00ty" + + "ahtyv\x00tzm\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx" + + "\x00urrduzzbvai\x00veenvec\x00vep\x00viievic\x00vls\x00vmf\x00vmw\x00voo" + + "lvot\x00vro\x00vun\x00walnwae\x00wal\x00war\x00wbp\x00wbq\x00wbr\x00wls" + + "\x00wni\x00woolwtm\x00wuu\x00xav\x00xcr\x00xhhoxlc\x00xld\x00xmf\x00xmn" + + "\x00xmr\x00xna\x00xnr\x00xog\x00xpr\x00xsa\x00xsr\x00yao\x00yap\x00yav" + + "\x00ybb\x00yiidyooryrl\x00yua\x00yue\x00zahazag\x00zbl\x00zdj\x00zea\x00" + + "zgh\x00zhhozmi\x00zuulzxx\x00zza\x00\xff\xff\xff\xff" + +const langNoIndexOffset = 713 + +// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index +// in lookup tables. The language ids for these language codes are derived directly +// from the letters and are not consecutive. +// Size: 2197 bytes, 2197 elements +var langNoIndex = [2197]uint8{ + // Entry 0 - 3F + 0xff, 0xfd, 0xfd, 0xfe, 0xef, 0xf7, 0xbf, 0xd2, + 0xfb, 0xbf, 0xfe, 0xfa, 0xb7, 0x1d, 0x3c, 0x57, + 0x6f, 0x97, 0x73, 0xf8, 0xff, 0xef, 0xff, 0x70, + 0xaf, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x85, 0x62, + 0xe9, 0xbf, 0xfd, 0xff, 0xff, 0xf7, 0xfd, 0x77, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, + 0xc9, 0xff, 0xff, 0xff, 0x4d, 0xb8, 0x0a, 0x6a, + 0x7e, 0xfa, 0xe3, 0xfe, 0x7e, 0xff, 0x77, 0xff, + // Entry 40 - 7F + 0xff, 0xff, 0xff, 0xdf, 0x2b, 0xf4, 0xf1, 0xe0, + 0x5d, 0xe7, 0x9f, 0x14, 0x07, 0x20, 0xdf, 0xed, + 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0xf7, + 0x7e, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, + 0xff, 0xff, 0x5f, 0xfc, 0xdb, 0xfd, 0xbf, 0xb5, + 0x7b, 0xdf, 0x7f, 0xf7, 0xeb, 0xfe, 0xff, 0xa7, + 0xbd, 0xff, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xef, + 0xff, 0xff, 0x9f, 0xff, 0xff, 0xef, 0xff, 0xdf, + // Entry 80 - BF + 0xff, 0xff, 0xf3, 0xff, 0xfb, 0x2f, 0xff, 0xff, + 0xfb, 0xee, 0xff, 0xbd, 0xdb, 0xff, 0xdf, 0xf7, + 0xff, 0xfa, 0xfd, 0xff, 0x7e, 0xaf, 0x7b, 0xfe, + 0x7f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xdf, 0xff, + 0xff, 0xdf, 0xfb, 0xff, 0xfd, 0xfc, 0xfb, 0xff, + 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xbf, 0xfd, 0xd5, + 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, + 0x08, 0x24, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, + // Entry C0 - FF + 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96, + 0x9b, 0x14, 0x88, 0xf6, 0x7b, 0xe7, 0x17, 0x56, + 0x55, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef, + 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, + 0xbc, 0x87, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35, + 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00, + 0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x40, 0x00, 0x40, 0x92, 0x21, 0xd0, 0xbf, 0x5d, + // Entry 100 - 13F + 0xfd, 0xde, 0xfe, 0x5e, 0x00, 0x00, 0x02, 0x64, + 0x8d, 0x19, 0xc1, 0xdf, 0x79, 0x22, 0x00, 0x00, + 0x00, 0xdf, 0x6d, 0xdc, 0x26, 0xe5, 0xd9, 0xf3, + 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x01, 0x0c, + 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f, + 0x56, 0x89, 0x5e, 0xb7, 0xec, 0xef, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc0, 0x77, 0xda, 0x57, + 0x90, 0x69, 0x01, 0x2c, 0x96, 0x79, 0xe0, 0xff, + // Entry 140 - 17F + 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x56, + 0x01, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x16, + 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09, + 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04, + 0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04, + 0x00, 0x00, 0x50, 0xd5, 0x2d, 0x00, 0x64, 0x35, + 0x24, 0x53, 0xf5, 0xd4, 0xbd, 0xe2, 0xcd, 0x03, + // Entry 180 - 1BF + 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x17, 0x39, 0x01, 0xdd, 0x57, 0x98, + 0x21, 0x98, 0xa5, 0x00, 0x00, 0x01, 0x40, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0xb0, 0xfe, + 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + // Entry 1C0 - 1FF + 0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x20, 0x04, 0xa6, 0x08, 0x04, 0x00, 0x08, + 0x81, 0x50, 0x00, 0x00, 0x08, 0x11, 0x86, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x55, + 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x60, + 0x3b, 0x83, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xbe, 0xdf, 0xff, 0xfe, 0xbf, + // Entry 200 - 23F + 0xdf, 0xc7, 0x83, 0x82, 0xc0, 0xff, 0xdf, 0x27, + 0xcf, 0x5f, 0xe7, 0x01, 0x10, 0x20, 0xb2, 0xc5, + 0xa4, 0x45, 0x25, 0x9b, 0x03, 0xcf, 0xf0, 0xdf, + 0x03, 0xc4, 0x08, 0x10, 0x01, 0x0e, 0x01, 0xe3, + 0x92, 0x54, 0xdb, 0x38, 0xf1, 0x7f, 0xf7, 0x6d, + 0xf9, 0xff, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01, + 0x21, 0x12, 0x6c, 0x5f, 0xdd, 0x0f, 0x85, 0x4f, + 0x40, 0x40, 0x00, 0x04, 0xf9, 0xfd, 0xbd, 0xd4, + // Entry 240 - 27F + 0xe8, 0x13, 0xf4, 0x27, 0xa3, 0x0d, 0x00, 0x00, + 0x20, 0x7b, 0x39, 0x02, 0x05, 0x84, 0x00, 0xf0, + 0xbf, 0x7f, 0xda, 0x00, 0x18, 0x04, 0x81, 0x00, + 0x00, 0x00, 0x80, 0x10, 0x94, 0x1c, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04, + 0x08, 0xb4, 0x7c, 0xa5, 0x0c, 0x40, 0x00, 0x00, + 0x11, 0x04, 0x04, 0x6c, 0x00, 0x20, 0x70, 0xff, + 0xfb, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x6e, + // Entry 280 - 2BF + 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05, + 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51, + 0xe2, 0xff, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x60, + 0xe5, 0x48, 0x14, 0x89, 0x20, 0xc0, 0x47, 0x80, + 0x07, 0x00, 0x00, 0x00, 0xcc, 0x50, 0x40, 0x24, + 0x85, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, + // Entry 2C0 - 2FF + 0x02, 0x50, 0x88, 0x11, 0x00, 0xd1, 0x6c, 0xee, + 0x50, 0x27, 0x1d, 0x11, 0x69, 0x06, 0x59, 0xe9, + 0x33, 0x08, 0x00, 0x20, 0x05, 0x40, 0x10, 0x00, + 0x00, 0x00, 0x50, 0x44, 0x96, 0x49, 0xd6, 0x5d, + 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x80, 0x00, 0x40, 0x45, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x04, 0x08, + 0xf8, 0xeb, 0xf6, 0x39, 0xc4, 0x89, 0x16, 0x00, + // Entry 300 - 33F + 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa2, + 0x01, 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x00, + 0x04, 0x10, 0xf0, 0x9d, 0x95, 0x13, 0x04, 0x80, + 0x00, 0x01, 0xd0, 0x12, 0x40, 0x00, 0x10, 0xb0, + 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00, + 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0xc0, + 0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00, + // Entry 340 - 37F + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x00, 0x00, 0xf8, 0x85, 0xe3, + 0xdd, 0xff, 0xff, 0xff, 0xbb, 0xff, 0x7f, 0xfb, + 0xff, 0xfc, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xf6, + 0xfb, 0xfe, 0xf7, 0x1f, 0xff, 0xb3, 0xed, 0xff, + 0xdb, 0xed, 0xff, 0xfe, 0xff, 0xfe, 0xdf, 0xff, + 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xdf, 0xaf, 0x9c, 0xff, 0xfb, 0xff, + // Entry 380 - 3BF + 0xff, 0xff, 0xff, 0xff, 0xef, 0xd2, 0xbb, 0xdf, + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef, + 0xfd, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xff, + 0xef, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x5f, 0xd3, 0x7b, 0xfd, 0xd9, 0xdf, 0xef, + 0xbc, 0x18, 0x05, 0x2c, 0xff, 0x07, 0xf0, 0xff, + 0xf7, 0x5f, 0x00, 0x08, 0x00, 0xc3, 0x3d, 0x1b, + 0x06, 0xe6, 0x72, 0xf0, 0xdd, 0x3c, 0x7f, 0x44, + // Entry 3C0 - 3FF + 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xfd, 0xff, 0x57, + 0xf2, 0xff, 0x39, 0xff, 0xf2, 0x1e, 0x95, 0xf7, + 0xf7, 0xff, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00, + 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11, + 0x84, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01, + 0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10, + 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, + 0xf9, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + // Entry 400 - 43F + 0xd7, 0x6f, 0xff, 0xff, 0xdf, 0x7d, 0xbb, 0xff, + 0xff, 0xff, 0xf7, 0xf3, 0xef, 0xff, 0xff, 0xf7, + 0xff, 0xdf, 0xdb, 0x7f, 0xff, 0xff, 0x7f, 0xff, + 0xff, 0xff, 0xef, 0xff, 0xbc, 0xff, 0xff, 0xfb, + 0xff, 0xfb, 0xff, 0xde, 0x76, 0xbd, 0xff, 0xf7, + 0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xf3, 0xfe, + 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xde, + 0xf7, 0xbb, 0xef, 0xf7, 0xff, 0xfb, 0xbf, 0xdf, + // Entry 440 - 47F + 0xfd, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0x5f, 0x7d, + 0x7f, 0xff, 0xff, 0xf7, 0xe5, 0xfc, 0xff, 0xfd, + 0x7f, 0x7f, 0xff, 0x9e, 0xae, 0xff, 0xee, 0xff, + 0x7f, 0xf7, 0x7b, 0x02, 0x82, 0x04, 0xff, 0xf7, + 0xff, 0xbf, 0xd7, 0xef, 0xfe, 0xdf, 0xf7, 0xfe, + 0xe2, 0x8e, 0xe7, 0xff, 0xf7, 0xff, 0x56, 0xbd, + 0xcd, 0xff, 0xfb, 0xff, 0xff, 0xdf, 0xef, 0xff, + 0xe5, 0xdf, 0x7d, 0x0f, 0xa7, 0x51, 0x04, 0x44, + // Entry 480 - 4BF + 0x13, 0xd0, 0x5d, 0xaf, 0xa6, 0xfd, 0xb9, 0xff, + 0x63, 0x5d, 0x5b, 0xff, 0xff, 0xbf, 0x3f, 0x20, + 0x14, 0x00, 0x57, 0x51, 0x82, 0x65, 0xf5, 0x49, + 0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05, + 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04, + 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x51, 0x60, 0x05, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x01, 0x20, 0x00, 0x18, 0x01, 0x92, 0xb1, + // Entry 4C0 - 4FF + 0xfd, 0x67, 0x4b, 0x06, 0x95, 0x06, 0x57, 0xed, + 0xfb, 0x4c, 0x9d, 0x7b, 0x83, 0x04, 0x62, 0x40, + 0x00, 0x15, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83, + 0xf9, 0x4f, 0x10, 0x8c, 0xc9, 0x46, 0xde, 0xf7, + 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00, + 0x01, 0x40, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x7d, + 0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, + // Entry 500 - 53F + 0xb0, 0xff, 0x79, 0x7a, 0x04, 0x00, 0x00, 0x49, + 0x2d, 0x14, 0x27, 0x77, 0xed, 0xf1, 0xbf, 0xef, + 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xfc, + 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xf5, 0xff, + 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7f, 0x10, + 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9, + 0x5f, 0x05, 0x86, 0xef, 0xf5, 0x77, 0xbd, 0x3c, + 0x00, 0x00, 0x00, 0x43, 0x71, 0x42, 0x00, 0x40, + // Entry 540 - 57F + 0x00, 0x00, 0x01, 0x43, 0x19, 0x00, 0x08, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + // Entry 580 - 5BF + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d, + 0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xde, 0xff, 0xbf, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x30, 0x95, 0xe3, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x04, 0x16, 0x00, 0x01, 0x02, 0x00, 0x81, + 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40, + // Entry 5C0 - 5FF + 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0x7e, 0x02, + 0xaa, 0x10, 0x5d, 0xd8, 0x52, 0x00, 0x80, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x02, 0x02, + 0x19, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d, + 0x31, 0x00, 0x00, 0x00, 0x01, 0x50, 0x02, 0x20, + 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, + 0x00, 0x1f, 0xdf, 0xf2, 0xfd, 0xff, 0xfd, 0x3f, + 0x9f, 0x18, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe, + // Entry 600 - 63F + 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xfd, + 0xb7, 0xf7, 0xff, 0xf3, 0xdf, 0xff, 0x6f, 0xf1, + 0x7b, 0xf1, 0x7f, 0xdf, 0x7f, 0xbf, 0xfe, 0xb7, + 0xee, 0x1c, 0xfb, 0xdb, 0xef, 0xdf, 0xff, 0xfd, + 0x7e, 0xbe, 0x57, 0xff, 0x6f, 0x81, 0x76, 0x1f, + 0xd4, 0x77, 0xf5, 0xfd, 0xff, 0xff, 0xeb, 0xfe, + 0xbf, 0x5f, 0x57, 0x1b, 0xeb, 0x5f, 0x50, 0x18, + 0x02, 0xfa, 0xff, 0x9d, 0x15, 0x97, 0x15, 0x0f, + // Entry 640 - 67F + 0x75, 0xc4, 0x7d, 0x81, 0x82, 0xf1, 0xd7, 0x7e, + 0xff, 0xff, 0xff, 0xef, 0xff, 0xfd, 0xdd, 0xde, + 0xfc, 0xfd, 0xf6, 0x5f, 0x7a, 0x1f, 0x40, 0x98, + 0x02, 0xff, 0xe3, 0xff, 0xf3, 0xd6, 0xf2, 0xff, + 0xfb, 0xdf, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4, + 0xf5, 0xbe, 0xff, 0xff, 0xf3, 0xf7, 0xff, 0xf7, + 0x7f, 0xff, 0xff, 0xbe, 0xdb, 0xf7, 0xd7, 0xf9, + 0xef, 0x2f, 0x80, 0xbf, 0xc5, 0xff, 0xff, 0xf3, + // Entry 680 - 6BF + 0x97, 0x9d, 0xff, 0xff, 0xf7, 0xcf, 0xfd, 0xbf, + 0xde, 0x7f, 0x06, 0x1d, 0x57, 0xff, 0xf8, 0xda, + 0x5d, 0xce, 0x7d, 0x16, 0xb9, 0xea, 0x69, 0xa0, + 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x48, + 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06, + 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x04, 0x00, 0x10, 0x8c, 0x58, 0xd5, 0x0d, 0x0f, + // Entry 6C0 - 6FF + 0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08, + 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, + 0x00, 0xdc, 0xff, 0xeb, 0x1f, 0x58, 0x08, 0x41, + 0x04, 0xa0, 0x04, 0x00, 0x30, 0x12, 0x40, 0x22, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xaf, + 0x6f, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00, + // Entry 700 - 73F + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x80, 0x86, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x01, + 0xdf, 0x18, 0x00, 0x00, 0x02, 0xf0, 0xfd, 0x79, + 0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 740 - 77F + 0x00, 0x00, 0x00, 0xef, 0xf7, 0xfd, 0xcf, 0x7e, + 0xa0, 0x11, 0x10, 0x00, 0x00, 0x92, 0x01, 0x44, + 0xcd, 0xf9, 0x5e, 0x00, 0x01, 0x00, 0x30, 0x14, + 0x04, 0x55, 0x10, 0x01, 0x04, 0xf6, 0x3f, 0x7a, + 0x05, 0x04, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55, + 0x97, 0x7c, 0x9f, 0x71, 0xcc, 0x78, 0xd1, 0x43, + 0xf5, 0x57, 0x67, 0x14, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2c, 0xf7, 0xdb, 0x1f, 0x54, 0x60, + // Entry 780 - 7BF + 0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0xaa, 0x01, + 0x00, 0x00, 0x30, 0x00, 0x24, 0x44, 0x00, 0x00, + 0x10, 0x03, 0x11, 0x02, 0x01, 0x00, 0x00, 0xf0, + 0xf5, 0xff, 0xd5, 0xd7, 0xbc, 0x70, 0xd6, 0x78, + 0x78, 0x15, 0x50, 0x00, 0xa4, 0x84, 0xe9, 0x41, + 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x00, + 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, + 0xff, 0xef, 0xff, 0x4f, 0x85, 0x53, 0xf4, 0xed, + // Entry 7C0 - 7FF + 0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xf5, 0x42, + 0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0xc0, 0x56, + 0xcc, 0x16, 0x9e, 0xfb, 0x35, 0x7d, 0xef, 0xff, + 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x5d, + 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80, + 0x10, 0x20, 0x24, 0x00, 0xff, 0x3f, 0xdf, 0x67, + 0xfe, 0x01, 0x06, 0x88, 0x0a, 0x40, 0x16, 0x01, + 0x01, 0x15, 0x2b, 0x3e, 0x01, 0x00, 0x00, 0x10, + // Entry 800 - 83F + 0x90, 0x69, 0x45, 0x02, 0x02, 0x01, 0xe1, 0xbf, + 0xbf, 0x03, 0x00, 0x00, 0x10, 0xd4, 0xa7, 0xd1, + 0x54, 0x9e, 0x44, 0xdf, 0xfd, 0x8f, 0x66, 0xb3, + 0x55, 0x20, 0xd4, 0xc3, 0xd8, 0x30, 0x3d, 0x80, + 0x00, 0x00, 0x00, 0x4c, 0xd4, 0x11, 0xc5, 0x84, + 0x6e, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbf, 0xdb, + 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10, + 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00, + // Entry 840 - 87F + 0xf0, 0xfb, 0xfd, 0x3f, 0x05, 0x00, 0x12, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28, + 0x84, 0x00, 0x33, 0xc0, 0x23, 0x24, 0x00, 0x00, + 0x00, 0xcb, 0xe4, 0x3a, 0x42, 0xc8, 0x14, 0xf1, + 0xef, 0xff, 0x7f, 0x16, 0x01, 0x01, 0x84, 0x50, + 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40, + 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1, + // Entry 880 - 8BF + 0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24, + 0x0a, 0x00, 0x80, 0x00, 0x00, +} + +// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives +// to 2-letter language codes that cannot be derived using the method described above. +// Each 3-letter code is followed by its 1-byte langID. +var altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff" + +// altLangIndex is used to convert indexes in altLangISO3 to langIDs. +// Size: 12 bytes, 6 elements +var altLangIndex = [6]uint16{ + 0x014a, 0x0225, 0x0105, 0x020a, 0x009d, 0x010b, +} + +// langAliasMap maps langIDs to their suggested replacements. +// Size: 640 bytes, 160 elements +var langAliasMap = [160]fromTo{ + 0: {from: 0xc4, to: 0xda}, + 1: {from: 0xff, to: 0xf8}, + 2: {from: 0x105, to: 0xe0}, + 3: {from: 0x10b, to: 0x2b9}, + 4: {from: 0x110, to: 0x10f}, + 5: {from: 0x192, to: 0x203}, + 6: {from: 0x1af, to: 0x1c1}, + 7: {from: 0x225, to: 0x23b}, + 8: {from: 0x268, to: 0xaa}, + 9: {from: 0x274, to: 0x252}, + 10: {from: 0x27d, to: 0xd}, + 11: {from: 0x2d5, to: 0x2db}, + 12: {from: 0x326, to: 0x93}, + 13: {from: 0x3c7, to: 0x1c48}, + 14: {from: 0x3e8, to: 0x23a}, + 15: {from: 0x3f9, to: 0x23a}, + 16: {from: 0x484, to: 0x15}, + 17: {from: 0x48f, to: 0xf3}, + 18: {from: 0x4d5, to: 0x1f38}, + 19: {from: 0x54a, to: 0x23}, + 20: {from: 0x550, to: 0x2732}, + 21: {from: 0x55c, to: 0x24}, + 22: {from: 0x57d, to: 0xa1}, + 23: {from: 0x5a3, to: 0x26}, + 24: {from: 0x5ac, to: 0x42}, + 25: {from: 0x615, to: 0x5a7}, + 26: {from: 0x65a, to: 0xc7a}, + 27: {from: 0x786, to: 0x1a5}, + 28: {from: 0x7cd, to: 0x16e}, + 29: {from: 0x7d4, to: 0x59}, + 30: {from: 0x855, to: 0x30b9}, + 31: {from: 0x8cf, to: 0x2c4}, + 32: {from: 0x90c, to: 0x23f1}, + 33: {from: 0x915, to: 0x95a}, + 34: {from: 0x932, to: 0x24f}, + 35: {from: 0x953, to: 0x3fc0}, + 36: {from: 0x956, to: 0x2c4}, + 37: {from: 0x995, to: 0x2b3e}, + 38: {from: 0x9c5, to: 0x2f18}, + 39: {from: 0xa50, to: 0x73}, + 40: {from: 0xa9f, to: 0x79}, + 41: {from: 0xb5f, to: 0x8a}, + 42: {from: 0xb6e, to: 0x1a2}, + 43: {from: 0xb8f, to: 0xb92}, + 44: {from: 0xb95, to: 0x2c8}, + 45: {from: 0xc76, to: 0x1df1}, + 46: {from: 0xc85, to: 0x2c31}, + 47: {from: 0xcd0, to: 0x1bd}, + 48: {from: 0xe67, to: 0x9f}, + 49: {from: 0xe9b, to: 0x179}, + 50: {from: 0xf37, to: 0xfc}, + 51: {from: 0x1010, to: 0xd}, + 52: {from: 0x11bb, to: 0xaf}, + 53: {from: 0x1207, to: 0xa6}, + 54: {from: 0x12b6, to: 0xb32}, + 55: {from: 0x12ba, to: 0x1d2}, + 56: {from: 0x12c9, to: 0x145c}, + 57: {from: 0x1317, to: 0x111}, + 58: {from: 0x131a, to: 0x85}, + 59: {from: 0x133a, to: 0x3a46}, + 60: {from: 0x1401, to: 0xcc}, + 61: {from: 0x145f, to: 0x9a}, + 62: {from: 0x1497, to: 0x278f}, + 63: {from: 0x14af, to: 0xca}, + 64: {from: 0x14be, to: 0xcd6}, + 65: {from: 0x1511, to: 0x12bb}, + 66: {from: 0x15a0, to: 0x154d}, + 67: {from: 0x15ad, to: 0x168a}, + 68: {from: 0x1621, to: 0x23f}, + 69: {from: 0x1710, to: 0x1a98}, + 70: {from: 0x180b, to: 0x2947}, + 71: {from: 0x1821, to: 0x102}, + 72: {from: 0x18f1, to: 0x104}, + 73: {from: 0x191d, to: 0x12ac}, + 74: {from: 0x1dcf, to: 0x3548}, + 75: {from: 0x1dd4, to: 0x1e74}, + 76: {from: 0x1df1, to: 0x18f}, + 77: {from: 0x1e7a, to: 0x145}, + 78: {from: 0x1e85, to: 0x13b}, + 79: {from: 0x1e89, to: 0x122}, + 80: {from: 0x1e90, to: 0x138}, + 81: {from: 0x1ea6, to: 0x1f82}, + 82: {from: 0x1ecc, to: 0x147}, + 83: {from: 0x1f30, to: 0x8d}, + 84: {from: 0x1f65, to: 0x12f8}, + 85: {from: 0x1f7d, to: 0x4235}, + 86: {from: 0x1f8b, to: 0x371a}, + 87: {from: 0x1fc4, to: 0x8d}, + 88: {from: 0x1fce, to: 0x8d}, + 89: {from: 0x1ff9, to: 0x6c1}, + 90: {from: 0x20ad, to: 0x2fbd}, + 91: {from: 0x2119, to: 0x30fc}, + 92: {from: 0x2209, to: 0x170}, + 93: {from: 0x227b, to: 0x18c}, + 94: {from: 0x2287, to: 0x189}, + 95: {from: 0x2291, to: 0x19a}, + 96: {from: 0x22e7, to: 0x8f2}, + 97: {from: 0x2340, to: 0x69}, + 98: {from: 0x23d5, to: 0x179}, + 99: {from: 0x2460, to: 0x244b}, + 100: {from: 0x2490, to: 0x1f4}, + 101: {from: 0x24be, to: 0x3a46}, + 102: {from: 0x24fc, to: 0x244b}, + 103: {from: 0x2520, to: 0x40ef}, + 104: {from: 0x2686, to: 0x25ce}, + 105: {from: 0x26ab, to: 0x1b4}, + 106: {from: 0x271d, to: 0x2b3e}, + 107: {from: 0x28b1, to: 0x1d1}, + 108: {from: 0x2993, to: 0x1d3}, + 109: {from: 0x29d6, to: 0x3a46}, + 110: {from: 0x2a93, to: 0x1ee}, + 111: {from: 0x2aaa, to: 0x32e}, + 112: {from: 0x2ade, to: 0xa4}, + 113: {from: 0x2adf, to: 0xa4}, + 114: {from: 0x2b96, to: 0x183}, + 115: {from: 0x2b9f, to: 0x1763}, + 116: {from: 0x2bb1, to: 0x2b2c}, + 117: {from: 0x2bb8, to: 0x152}, + 118: {from: 0x2beb, to: 0x37}, + 119: {from: 0x2bfc, to: 0x2019}, + 120: {from: 0x2c37, to: 0x2c32}, + 121: {from: 0x2c86, to: 0x2c6e}, + 122: {from: 0x2f2a, to: 0x1f1}, + 123: {from: 0x30fd, to: 0x3125}, + 124: {from: 0x31c1, to: 0x203}, + 125: {from: 0x3285, to: 0x1667}, + 126: {from: 0x337d, to: 0x22a}, + 127: {from: 0x33ef, to: 0x132}, + 128: {from: 0x340d, to: 0x215}, + 129: {from: 0x3494, to: 0x248}, + 130: {from: 0x3557, to: 0x8d}, + 131: {from: 0x35ad, to: 0x3689}, + 132: {from: 0x35c2, to: 0x2a32}, + 133: {from: 0x35c6, to: 0x4c}, + 134: {from: 0x35c9, to: 0x2fbf}, + 135: {from: 0x3603, to: 0x373d}, + 136: {from: 0x3629, to: 0x3d57}, + 137: {from: 0x363c, to: 0x376e}, + 138: {from: 0x364b, to: 0x1d3b}, + 139: {from: 0x364c, to: 0x2c31}, + 140: {from: 0x36f3, to: 0x26a}, + 141: {from: 0x38e5, to: 0xb28}, + 142: {from: 0x390f, to: 0xe91}, + 143: {from: 0x3a30, to: 0x28d}, + 144: {from: 0x3d54, to: 0x7f}, + 145: {from: 0x3f9f, to: 0x828}, + 146: {from: 0x4055, to: 0x30a}, + 147: {from: 0x4090, to: 0x3cf7}, + 148: {from: 0x410f, to: 0x13a}, + 149: {from: 0x4162, to: 0x3462}, + 150: {from: 0x4164, to: 0x86}, + 151: {from: 0x4246, to: 0x30b9}, + 152: {from: 0x427a, to: 0x2b9}, + 153: {from: 0x4361, to: 0x21a0}, + 154: {from: 0x4374, to: 0x2473}, + 155: {from: 0x43a7, to: 0x4645}, + 156: {from: 0x4445, to: 0x4437}, + 157: {from: 0x44d5, to: 0x44dc}, + 158: {from: 0x46ad, to: 0x19a}, + 159: {from: 0x473e, to: 0x2be}, +} + +// Size: 160 bytes, 160 elements +var langAliasTypes = [160]langAliasType{ + // Entry 0 - 3F + 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, 1, + 1, 2, 0, 1, 0, 1, 2, 1, 1, 0, 0, 2, 1, 1, 0, 2, + 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 2, + 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1, + // Entry 40 - 7F + 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 0, 0, 1, 1, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 2, 2, 2, + 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, + 2, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 2, 1, + // Entry 80 - BF + 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, + 2, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, +} + +const ( + _Latn = 82 + _Hani = 50 + _Hans = 52 + _Hant = 53 + _Qaaa = 131 + _Qaai = 139 + _Qabx = 180 + _Zinh = 224 + _Zyyy = 229 + _Zzzz = 230 +) + +// script is an alphabetically sorted list of ISO 15924 codes. The index +// of the script in the string, divided by 4, is the internal scriptID. +var script tag.Index = "" + // Size: 928 bytes + "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + + "BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgyd" + + "EgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" + + "HatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKanaKharKhmrKhoj" + + "KitlKitsKndaKoreKpelKthiLanaLaooLatfLatgLatnLekeLepcLimbLinaLinbLisuLoma" + + "LyciLydiMahjMandManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymr" + + "NarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlp" + + "PhlvPhnxPiqdPlrdPrtiQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" + + "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" + + "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" + + "QabxRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrc" + + "SyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirh" + + "UgarVaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff" + + "\xff" + +// suppressScript is an index from langID to the dominant script for that language, +// if it exists. If a script is given, it should be suppressed from the language tag. +// Size: 713 bytes, 713 elements +var suppressScript = [713]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x27, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 40 - 7F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + // Entry 80 - BF + 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0xd4, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2d, 0x52, 0x52, 0x52, 0x00, 0x52, + 0x00, 0x52, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x52, + 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry C0 - FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x37, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, + 0x00, 0x52, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + // Entry 100 - 13F + 0x00, 0x00, 0x52, 0x52, 0x00, 0x37, 0x00, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x52, 0x00, 0x46, 0x00, 0x4a, 0x4b, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 140 - 17F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + // Entry 180 - 1BF + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x52, 0x00, 0x52, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52, + // Entry 1C0 - 1FF + 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x52, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x75, 0x00, 0x00, 0x00, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x52, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + // Entry 200 - 23F + 0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 240 - 27F + 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, + 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd0, 0x52, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, + 0x00, 0x27, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, + 0x52, 0x00, 0x52, 0x52, 0x52, 0x00, 0x52, 0x52, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + // Entry 280 - 2BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x52, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 2C0 - 2FF + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, + 0x00, +} + +const ( + _001 = 1 + _419 = 30 + _BR = 64 + _CA = 72 + _ES = 109 + _GB = 121 + _MD = 186 + _PT = 236 + _UK = 304 + _US = 306 + _ZZ = 354 + _XA = 320 + _XC = 322 + _XK = 330 +) + +// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID +// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for +// the UN.M49 codes used for groups.) +const isoRegionOffset = 31 + +// regionTypes defines the status of a region for various standards. +// Size: 355 bytes, 355 elements +var regionTypes = [355]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 40 - 7F + 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x04, 0x00, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, + 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 80 - BF + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + // Entry C0 - FF + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, + 0x06, 0x06, 0x00, 0x06, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, + 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + // Entry 100 - 13F + 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, + // Entry 140 - 17F + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x04, 0x06, 0x06, 0x04, 0x06, 0x06, + 0x04, 0x06, 0x05, +} + +// regionISO holds a list of alphabetically sorted 2-letter ISO region codes. +// Each 2-letter codes is followed by two bytes with the following meaning: +// - [A-Z}{2}: the first letter of the 2-letter code plus these two +// letters form the 3-letter ISO code. +// - 0, n: index into altRegionISO3. +var regionISO tag.Index = "" + // Size: 1300 bytes + "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" + + "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" + + "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" + + "CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADOOMDY" + + "HYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03FIINFJJIFKLKFMSMFOROFQ" + + "\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQNQGRRC" + + "GS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERLILSRIM" + + "MNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM\x00\x09" + + "KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSOLTTULUUX" + + "LVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNPMQTQMRRT" + + "MSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLDNOORNPPL" + + "NQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM\x00\x12" + + "PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSSQTTTQU" + + "\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLBSCYCSD" + + "DNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXMSYYRSZ" + + "WZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTTTOTVUV" + + "TWWNTZZAUAKRUGGAUK UMMIUSSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVNNMVUUTWFLF" + + "WKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXNNNXOOOXPPP" + + "XQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUGZAAFZMMBZR" + + "ARZWWEZZZZ\xff\xff\xff\xff" + +// altRegionISO3 holds a list of 3-letter region codes that cannot be +// mapped to 2-letter codes using the default algorithm. This is a short list. +var altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN" + +// altRegionIDs holds a list of regionIDs the positions of which match those +// of the 3-letter ISO codes in altRegionISO3. +// Size: 22 bytes, 11 elements +var altRegionIDs = [11]uint16{ + 0x0056, 0x006f, 0x0086, 0x00a6, 0x00a8, 0x00ab, 0x00e8, 0x0103, + 0x011f, 0x015c, 0x00da, +} + +// Size: 80 bytes, 20 elements +var regionOldMap = [20]fromTo{ + 0: {from: 0x43, to: 0xc2}, + 1: {from: 0x57, to: 0xa5}, + 2: {from: 0x5e, to: 0x5f}, + 3: {from: 0x65, to: 0x3a}, + 4: {from: 0x77, to: 0x76}, + 5: {from: 0x91, to: 0x36}, + 6: {from: 0xa1, to: 0x131}, + 7: {from: 0xbf, to: 0x131}, + 8: {from: 0xd5, to: 0x13c}, + 9: {from: 0xda, to: 0x2a}, + 10: {from: 0xed, to: 0x131}, + 11: {from: 0xf0, to: 0xe0}, + 12: {from: 0xfa, to: 0x6f}, + 13: {from: 0x101, to: 0x161}, + 14: {from: 0x128, to: 0x124}, + 15: {from: 0x130, to: 0x79}, + 16: {from: 0x137, to: 0x13b}, + 17: {from: 0x13e, to: 0x131}, + 18: {from: 0x15a, to: 0x15b}, + 19: {from: 0x160, to: 0x4a}, +} + +// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are +// codes indicating collections of regions. +// Size: 710 bytes, 355 elements +var m49 = [355]int16{ + // Entry 0 - 3F + 0, 1, 2, 3, 5, 9, 11, 13, + 14, 15, 17, 18, 19, 21, 29, 30, + 34, 35, 39, 53, 54, 57, 61, 142, + 143, 145, 150, 151, 154, 155, 419, 958, + 0, 20, 784, 4, 28, 660, 8, 51, + 530, 24, 10, 32, 16, 40, 36, 533, + 248, 31, 70, 52, 50, 56, 854, 100, + 48, 108, 204, 652, 60, 96, 68, 535, + // Entry 40 - 7F + 76, 44, 64, 104, 74, 72, 112, 84, + 124, 166, 180, 140, 178, 756, 384, 184, + 152, 120, 156, 170, 0, 188, 891, 296, + 192, 132, 531, 162, 196, 203, 278, 276, + 0, 262, 208, 212, 214, 204, 12, 0, + 218, 233, 818, 732, 232, 724, 231, 967, + 246, 242, 238, 583, 234, 0, 250, 249, + 266, 826, 308, 268, 254, 831, 288, 292, + // Entry 80 - BF + 304, 270, 324, 312, 226, 300, 239, 320, + 316, 624, 328, 344, 334, 340, 191, 332, + 348, 854, 0, 360, 372, 376, 833, 356, + 86, 368, 364, 352, 380, 832, 388, 400, + 392, 581, 404, 417, 116, 296, 174, 659, + 408, 410, 414, 136, 398, 418, 422, 662, + 438, 144, 430, 426, 440, 442, 428, 434, + 504, 492, 498, 499, 663, 450, 584, 581, + // Entry C0 - FF + 807, 466, 104, 496, 446, 580, 474, 478, + 500, 470, 480, 462, 454, 484, 458, 508, + 516, 540, 562, 574, 566, 548, 558, 528, + 578, 524, 10, 520, 536, 570, 554, 512, + 591, 0, 604, 258, 598, 608, 586, 616, + 666, 612, 630, 275, 620, 581, 585, 600, + 591, 634, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, + // Entry 100 - 13F + 638, 716, 642, 688, 643, 646, 682, 90, + 690, 729, 752, 702, 654, 705, 744, 703, + 694, 674, 686, 706, 740, 728, 678, 810, + 222, 534, 760, 748, 0, 796, 148, 260, + 768, 764, 762, 772, 626, 795, 788, 776, + 626, 792, 780, 798, 158, 834, 804, 800, + 826, 581, 840, 858, 860, 336, 670, 704, + 862, 92, 850, 704, 548, 876, 581, 882, + // Entry 140 - 17F + 973, 974, 975, 976, 977, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 996, + 997, 998, 720, 887, 175, 891, 710, 894, + 180, 716, 999, +} + +// m49Index gives indexes into fromM49 based on the three most significant bits +// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in +// fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]] +// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code. +// The region code is stored in the 9 lsb of the indexed value. +// Size: 18 bytes, 9 elements +var m49Index = [9]int16{ + 0, 59, 107, 142, 180, 219, 258, 290, + 332, +} + +// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details. +// Size: 664 bytes, 332 elements +var fromM49 = [332]uint16{ + // Entry 0 - 3F + 0x0201, 0x0402, 0x0603, 0x0823, 0x0a04, 0x1026, 0x1205, 0x142a, + 0x1606, 0x1866, 0x1a07, 0x1c08, 0x1e09, 0x202c, 0x220a, 0x240b, + 0x260c, 0x2821, 0x2a0d, 0x3029, 0x3824, 0x3a0e, 0x3c0f, 0x3e31, + 0x402b, 0x4410, 0x4611, 0x482e, 0x4e12, 0x502d, 0x5841, 0x6038, + 0x6434, 0x6627, 0x6833, 0x6a13, 0x6c14, 0x7035, 0x7215, 0x783c, + 0x7a16, 0x8042, 0x883e, 0x8c32, 0x9045, 0x9444, 0x9840, 0xa847, + 0xac98, 0xb507, 0xb939, 0xc03d, 0xc837, 0xd0c2, 0xd839, 0xe046, + 0xe8a4, 0xf051, 0xf848, 0x0859, 0x10ab, 0x184b, 0x1c17, 0x1e18, + // Entry 40 - 7F + 0x20b1, 0x2219, 0x291e, 0x2c1a, 0x2e1b, 0x3050, 0x341c, 0x361d, + 0x3852, 0x3d2c, 0x445b, 0x4c49, 0x5453, 0x5ca6, 0x5f5c, 0x644c, + 0x684a, 0x704f, 0x7855, 0x7e8e, 0x8058, 0x885c, 0x965d, 0x983a, + 0xa062, 0xa863, 0xac64, 0xb468, 0xbd18, 0xc484, 0xcc6e, 0xce6e, + 0xd06c, 0xd269, 0xd474, 0xdc72, 0xde86, 0xe471, 0xec70, 0xf030, + 0xf277, 0xf476, 0xfc7c, 0x04e3, 0x091f, 0x0c61, 0x1478, 0x187b, + 0x1c81, 0x26eb, 0x285f, 0x2c5e, 0x305f, 0x407e, 0x487f, 0x50a5, + 0x5885, 0x6080, 0x687a, 0x7083, 0x7888, 0x8087, 0x8882, 0x908a, + // Entry 80 - BF + 0x988f, 0x9c8c, 0xa135, 0xa88d, 0xb08b, 0xb890, 0xc09b, 0xc897, + 0xd093, 0xd89a, 0xe099, 0xe894, 0xf095, 0xf89c, 0x004e, 0x089e, + 0x10a0, 0x1cac, 0x209f, 0x28a2, 0x30a8, 0x34a9, 0x3caa, 0x42a3, + 0x44ad, 0x461e, 0x4cae, 0x54b3, 0x58b6, 0x5cb2, 0x64b7, 0x6cb0, + 0x70b4, 0x74b5, 0x7cc4, 0x84bd, 0x8ccc, 0x94ce, 0x9ccb, 0xa4c1, + 0xacc9, 0xb4c6, 0xbcc7, 0xc0ca, 0xc8cd, 0xd8b9, 0xe0c3, 0xe4ba, + 0xe6bb, 0xe8c8, 0xf0b8, 0xf8cf, 0x00df, 0x08d0, 0x10db, 0x18d9, + 0x20d7, 0x2428, 0x265a, 0x2a2f, 0x2d19, 0x2e3f, 0x30dc, 0x38d1, + // Entry C0 - FF + 0x493c, 0x54de, 0x5cd6, 0x64d2, 0x6cd4, 0x74dd, 0x7cd3, 0x84d8, + 0x88c5, 0x8b31, 0x8e73, 0x90be, 0x92ee, 0x94e6, 0x9ee0, 0xace4, + 0xb0ef, 0xb8e2, 0xc0e5, 0xc8e9, 0xd0e7, 0xd8ec, 0xe089, 0xe524, + 0xecea, 0xf4f1, 0xfd00, 0x0502, 0x0704, 0x0d05, 0x183b, 0x1d0c, + 0x26a7, 0x2825, 0x2caf, 0x2ebc, 0x34e8, 0x3d36, 0x4511, 0x4d16, + 0x5506, 0x5d12, 0x6103, 0x6508, 0x6d10, 0x7d0b, 0x7f0f, 0x813b, + 0x830d, 0x8513, 0x8d5e, 0x9961, 0xa15a, 0xa86d, 0xb115, 0xb309, + 0xb86b, 0xc109, 0xc914, 0xd10e, 0xd91b, 0xe10a, 0xe84d, 0xf11a, + // Entry 100 - 13F + 0xf522, 0xf921, 0x0120, 0x0923, 0x1127, 0x192a, 0x2022, 0x2926, + 0x3129, 0x3725, 0x391d, 0x3d2b, 0x412f, 0x492e, 0x4ec0, 0x5517, + 0x646a, 0x7479, 0x7e7d, 0x809d, 0x8296, 0x852d, 0x9132, 0xa53a, + 0xac36, 0xb533, 0xb934, 0xbd38, 0xd93d, 0xe53f, 0xed5b, 0xef5b, + 0xf656, 0xfd5f, 0x7c1f, 0x7ef2, 0x80f3, 0x82f4, 0x84f5, 0x86f6, + 0x88f7, 0x8af8, 0x8cf9, 0x8e6f, 0x90fb, 0x92fc, 0x94fd, 0x96fe, + 0x98ff, 0x9b40, 0x9d41, 0x9f42, 0xa143, 0xa344, 0xa545, 0xa746, + 0xa947, 0xab48, 0xad49, 0xaf4a, 0xb14b, 0xb34c, 0xb54d, 0xb74e, + // Entry 140 - 17F + 0xb94f, 0xbb50, 0xbd51, 0xbf52, 0xc153, 0xc354, 0xc555, 0xc756, + 0xc957, 0xcb58, 0xcd59, 0xcf62, +} + +// Size: 1444 bytes +var variantIndex = map[string]uint8{ + "1606nict": 0x0, + "1694acad": 0x1, + "1901": 0x2, + "1959acad": 0x3, + "1994": 0x45, + "1996": 0x4, + "abl1943": 0x5, + "alalc97": 0x47, + "aluku": 0x6, + "ao1990": 0x7, + "arevela": 0x8, + "arevmda": 0x9, + "baku1926": 0xa, + "balanka": 0xb, + "barla": 0xc, + "basiceng": 0xd, + "bauddha": 0xe, + "biscayan": 0xf, + "biske": 0x40, + "bohoric": 0x10, + "boont": 0x11, + "colb1945": 0x12, + "cornu": 0x13, + "dajnko": 0x14, + "ekavsk": 0x15, + "emodeng": 0x16, + "fonipa": 0x48, + "fonupa": 0x49, + "fonxsamp": 0x4a, + "hepburn": 0x17, + "heploc": 0x46, + "hognorsk": 0x18, + "ijekavsk": 0x19, + "itihasa": 0x1a, + "jauer": 0x1b, + "jyutping": 0x1c, + "kkcor": 0x1d, + "kociewie": 0x1e, + "kscor": 0x1f, + "laukika": 0x20, + "lipaw": 0x41, + "luna1918": 0x21, + "metelko": 0x22, + "monoton": 0x23, + "ndyuka": 0x24, + "nedis": 0x25, + "newfound": 0x26, + "njiva": 0x42, + "nulik": 0x27, + "osojs": 0x43, + "oxendict": 0x28, + "pamaka": 0x29, + "petr1708": 0x2a, + "pinyin": 0x2b, + "polyton": 0x2c, + "puter": 0x2d, + "rigik": 0x2e, + "rozaj": 0x2f, + "rumgr": 0x30, + "scotland": 0x31, + "scouse": 0x32, + "simple": 0x4b, + "solba": 0x44, + "sotav": 0x33, + "surmiran": 0x34, + "sursilv": 0x35, + "sutsilv": 0x36, + "tarask": 0x37, + "uccor": 0x38, + "ucrcor": 0x39, + "ulster": 0x3a, + "unifon": 0x3b, + "vaidika": 0x3c, + "valencia": 0x3d, + "vallader": 0x3e, + "wadegile": 0x3f, +} + +// variantNumSpecialized is the number of specialized variants in variants. +const variantNumSpecialized = 71 + +// nRegionGroups is the number of region groups. +const nRegionGroups = 32 + +type likelyLangRegion struct { + lang uint16 + region uint16 +} + +// likelyScript is a lookup table, indexed by scriptID, for the most likely +// languages and regions given a script. +// Size: 928 bytes, 232 elements +var likelyScript = [232]likelyLangRegion{ + 1: {lang: 0xa6, region: 0x82}, + 3: {lang: 0x159, region: 0x104}, + 4: {lang: 0xc, region: 0x97}, + 5: {lang: 0x15, region: 0x6a}, + 7: {lang: 0x16, region: 0x9a}, + 8: {lang: 0xf3, region: 0x27}, + 9: {lang: 0x8, region: 0x9a}, + 10: {lang: 0x27, region: 0x93}, + 11: {lang: 0x2b, region: 0x51}, + 12: {lang: 0x55, region: 0xb2}, + 13: {lang: 0x2c, region: 0x93}, + 14: {lang: 0x4b, region: 0x34}, + 15: {lang: 0x20d, region: 0x97}, + 17: {lang: 0x2c4, region: 0x12c}, + 18: {lang: 0x1e5, region: 0x97}, + 19: {lang: 0xaf, region: 0x76}, + 20: {lang: 0x5b, region: 0x93}, + 21: {lang: 0x47, region: 0xe5}, + 22: {lang: 0x63, region: 0x34}, + 23: {lang: 0x73, region: 0x48}, + 24: {lang: 0x2a8, region: 0x129}, + 25: {lang: 0x6e, region: 0x13b}, + 26: {lang: 0x6c, region: 0x132}, + 28: {lang: 0x71, region: 0x6a}, + 29: {lang: 0xd0, region: 0x5c}, + 30: {lang: 0x207, region: 0x104}, + 32: {lang: 0xe1, region: 0x97}, + 34: {lang: 0xaf, region: 0x76}, + 37: {lang: 0x98, region: 0x6a}, + 38: {lang: 0x23a, region: 0x26}, + 39: {lang: 0x11, region: 0x6e}, + 41: {lang: 0x111, region: 0x7b}, + 42: {lang: 0x7d, region: 0x37}, + 43: {lang: 0xcf, region: 0x12e}, + 44: {lang: 0x20d, region: 0x97}, + 45: {lang: 0x9a, region: 0x85}, + 46: {lang: 0xd3, region: 0x97}, + 47: {lang: 0x1d7, region: 0x97}, + 48: {lang: 0x2c4, region: 0x12c}, + 49: {lang: 0x136, region: 0xa9}, + 50: {lang: 0x2c4, region: 0x52}, + 51: {lang: 0xe9, region: 0xe5}, + 52: {lang: 0x2c4, region: 0x52}, + 53: {lang: 0x2c4, region: 0x12c}, + 54: {lang: 0x18b, region: 0x99}, + 55: {lang: 0xe0, region: 0x95}, + 56: {lang: 0x107, region: 0xa0}, + 57: {lang: 0xe4, region: 0x129}, + 58: {lang: 0xe8, region: 0xad}, + 60: {lang: 0xf2, region: 0x90}, + 62: {lang: 0xa0, region: 0x9c}, + 63: {lang: 0x136, region: 0xa9}, + 64: {lang: 0x10f, region: 0x93}, + 65: {lang: 0x107, region: 0xa0}, + 67: {lang: 0x99, region: 0xc2}, + 68: {lang: 0x107, region: 0xa0}, + 69: {lang: 0x1eb, region: 0xe6}, + 70: {lang: 0x133, region: 0xa4}, + 71: {lang: 0x21a, region: 0x97}, + 74: {lang: 0x135, region: 0x97}, + 75: {lang: 0x136, region: 0xa9}, + 77: {lang: 0x40, region: 0x97}, + 78: {lang: 0x1c2, region: 0x121}, + 79: {lang: 0x165, region: 0xad}, + 84: {lang: 0x158, region: 0x97}, + 85: {lang: 0x15c, region: 0x97}, + 86: {lang: 0x14f, region: 0x85}, + 87: {lang: 0xd0, region: 0x85}, + 88: {lang: 0x15e, region: 0x52}, + 90: {lang: 0x2aa, region: 0x129}, + 91: {lang: 0x2ab, region: 0x129}, + 92: {lang: 0xe1, region: 0x97}, + 93: {lang: 0x1a8, region: 0x9a}, + 94: {lang: 0x2ad, region: 0x52}, + 95: {lang: 0x4c, region: 0x52}, + 97: {lang: 0x17f, region: 0x110}, + 98: {lang: 0x2ae, region: 0x109}, + 99: {lang: 0x2ae, region: 0x109}, + 100: {lang: 0x18d, region: 0x97}, + 101: {lang: 0x196, region: 0x97}, + 102: {lang: 0x18f, region: 0x52}, + 104: {lang: 0x199, region: 0x34}, + 105: {lang: 0x190, region: 0x97}, + 106: {lang: 0x22b, region: 0xe6}, + 107: {lang: 0x1a5, region: 0xc2}, + 108: {lang: 0x2af, region: 0x106}, + 109: {lang: 0x16, region: 0x9f}, + 110: {lang: 0x1b5, region: 0xd9}, + 112: {lang: 0x179, region: 0x82}, + 114: {lang: 0x223, region: 0x94}, + 115: {lang: 0x212, region: 0x97}, + 116: {lang: 0x1d6, region: 0xc3}, + 117: {lang: 0x1d3, region: 0x97}, + 118: {lang: 0x1d5, region: 0x132}, + 119: {lang: 0x238, region: 0x113}, + 120: {lang: 0x16, region: 0x11a}, + 121: {lang: 0x7c, region: 0xc2}, + 122: {lang: 0x147, region: 0x104}, + 123: {lang: 0x172, region: 0x52}, + 124: {lang: 0x1d9, region: 0x9a}, + 125: {lang: 0x1d9, region: 0x52}, + 127: {lang: 0x1e3, region: 0xae}, + 129: {lang: 0xe5, region: 0x52}, + 130: {lang: 0x2b2, region: 0x9a}, + 181: {lang: 0x1f6, region: 0x93}, + 183: {lang: 0x1c4, region: 0x10a}, + 184: {lang: 0x234, region: 0x95}, + 186: {lang: 0x2b3, region: 0x15b}, + 187: {lang: 0x213, region: 0x97}, + 188: {lang: 0x1e, region: 0x132}, + 189: {lang: 0x9b, region: 0x79}, + 190: {lang: 0x20d, region: 0x97}, + 191: {lang: 0x20d, region: 0x97}, + 192: {lang: 0x21a, region: 0x97}, + 193: {lang: 0x228, region: 0xb1}, + 194: {lang: 0x23c, region: 0x97}, + 195: {lang: 0x244, region: 0x93}, + 196: {lang: 0x24e, region: 0x34}, + 197: {lang: 0x24f, region: 0x99}, + 201: {lang: 0x253, region: 0xe5}, + 202: {lang: 0x8a, region: 0x97}, + 203: {lang: 0x255, region: 0x52}, + 204: {lang: 0x126, region: 0x52}, + 205: {lang: 0x251, region: 0x97}, + 206: {lang: 0x27f, region: 0x52}, + 207: {lang: 0x48, region: 0x13b}, + 208: {lang: 0x258, region: 0x97}, + 210: {lang: 0x2c3, region: 0xb8}, + 211: {lang: 0xaa, region: 0xe5}, + 212: {lang: 0x90, region: 0xcb}, + 213: {lang: 0x25d, region: 0x121}, + 214: {lang: 0x4c, region: 0x52}, + 215: {lang: 0x177, region: 0x97}, + 216: {lang: 0x285, region: 0x11a}, + 217: {lang: 0x28e, region: 0xb2}, + 219: {lang: 0xec, region: 0x97}, + 221: {lang: 0x1e1, region: 0x9a}, + 222: {lang: 0xe, region: 0x99}, + 223: {lang: 0xfb, region: 0x52}, +} + +type likelyScriptRegion struct { + region uint16 + script uint8 + flags uint8 +} + +// likelyLang is a lookup table, indexed by langID, for the most likely +// scripts and regions given incomplete information. If more entries exist for a +// given language, region and script are the index and size respectively +// of the list in likelyLangList. +// Size: 2852 bytes, 713 elements +var likelyLang = [713]likelyScriptRegion{ + 0: {region: 0x132, script: 0x52, flags: 0x0}, + 1: {region: 0x6e, script: 0x52, flags: 0x0}, + 2: {region: 0x7b, script: 0x1e, flags: 0x0}, + 3: {region: 0x7e, script: 0x52, flags: 0x0}, + 4: {region: 0x93, script: 0x52, flags: 0x0}, + 5: {region: 0x12f, script: 0x52, flags: 0x0}, + 6: {region: 0x7e, script: 0x52, flags: 0x0}, + 7: {region: 0x104, script: 0x1e, flags: 0x0}, + 8: {region: 0x9a, script: 0x9, flags: 0x0}, + 9: {region: 0x126, script: 0x5, flags: 0x0}, + 10: {region: 0x15e, script: 0x52, flags: 0x0}, + 11: {region: 0x51, script: 0x52, flags: 0x0}, + 12: {region: 0x97, script: 0x4, flags: 0x0}, + 13: {region: 0x7e, script: 0x52, flags: 0x0}, + 14: {region: 0x99, script: 0xde, flags: 0x0}, + 15: {region: 0x14a, script: 0x52, flags: 0x0}, + 16: {region: 0x104, script: 0x1e, flags: 0x0}, + 17: {region: 0x6e, script: 0x27, flags: 0x0}, + 18: {region: 0xd4, script: 0x52, flags: 0x0}, + 20: {region: 0x93, script: 0x52, flags: 0x0}, + 21: {region: 0x6a, script: 0x5, flags: 0x0}, + 22: {region: 0x0, script: 0x3, flags: 0x1}, + 23: {region: 0x50, script: 0x52, flags: 0x0}, + 24: {region: 0x3e, script: 0x52, flags: 0x0}, + 25: {region: 0x66, script: 0x5, flags: 0x0}, + 26: {region: 0xb8, script: 0x5, flags: 0x0}, + 27: {region: 0x6a, script: 0x5, flags: 0x0}, + 28: {region: 0x97, script: 0xe, flags: 0x0}, + 29: {region: 0x12d, script: 0x52, flags: 0x0}, + 30: {region: 0x132, script: 0xbc, flags: 0x0}, + 31: {region: 0x6d, script: 0x52, flags: 0x0}, + 32: {region: 0x48, script: 0x52, flags: 0x0}, + 33: {region: 0x104, script: 0x1e, flags: 0x0}, + 34: {region: 0x97, script: 0x20, flags: 0x0}, + 35: {region: 0x3e, script: 0x52, flags: 0x0}, + 36: {region: 0x3, script: 0x5, flags: 0x1}, + 37: {region: 0x104, script: 0x1e, flags: 0x0}, + 38: {region: 0xe6, script: 0x5, flags: 0x0}, + 39: {region: 0x93, script: 0x52, flags: 0x0}, + 40: {region: 0xd9, script: 0x20, flags: 0x0}, + 41: {region: 0x2d, script: 0x52, flags: 0x0}, + 42: {region: 0x51, script: 0x52, flags: 0x0}, + 43: {region: 0x51, script: 0xb, flags: 0x0}, + 44: {region: 0x93, script: 0x52, flags: 0x0}, + 45: {region: 0x51, script: 0x52, flags: 0x0}, + 46: {region: 0x4e, script: 0x52, flags: 0x0}, + 47: {region: 0x46, script: 0x1e, flags: 0x0}, + 48: {region: 0x109, script: 0x5, flags: 0x0}, + 49: {region: 0x15f, script: 0x52, flags: 0x0}, + 50: {region: 0x93, script: 0x52, flags: 0x0}, + 51: {region: 0x12d, script: 0x52, flags: 0x0}, + 52: {region: 0x51, script: 0x52, flags: 0x0}, + 53: {region: 0x97, script: 0xcd, flags: 0x0}, + 54: {region: 0xe6, script: 0x5, flags: 0x0}, + 55: {region: 0x97, script: 0x20, flags: 0x0}, + 56: {region: 0x37, script: 0x1e, flags: 0x0}, + 57: {region: 0x97, script: 0x20, flags: 0x0}, + 58: {region: 0xe6, script: 0x5, flags: 0x0}, + 59: {region: 0x129, script: 0x2d, flags: 0x0}, + 61: {region: 0x97, script: 0x20, flags: 0x0}, + 62: {region: 0x97, script: 0x20, flags: 0x0}, + 63: {region: 0xe5, script: 0x52, flags: 0x0}, + 64: {region: 0x97, script: 0x20, flags: 0x0}, + 65: {region: 0x13c, script: 0x52, flags: 0x0}, + 66: {region: 0xe5, script: 0x52, flags: 0x0}, + 67: {region: 0xd4, script: 0x52, flags: 0x0}, + 68: {region: 0x97, script: 0x20, flags: 0x0}, + 69: {region: 0x93, script: 0x52, flags: 0x0}, + 70: {region: 0x51, script: 0x52, flags: 0x0}, + 71: {region: 0xe5, script: 0x52, flags: 0x0}, + 72: {region: 0x13b, script: 0xcf, flags: 0x0}, + 73: {region: 0xc1, script: 0x52, flags: 0x0}, + 74: {region: 0xc1, script: 0x52, flags: 0x0}, + 75: {region: 0x34, script: 0xe, flags: 0x0}, + 76: {region: 0x52, script: 0xd6, flags: 0x0}, + 77: {region: 0x97, script: 0xe, flags: 0x0}, + 78: {region: 0x9a, script: 0x5, flags: 0x0}, + 79: {region: 0x4e, script: 0x52, flags: 0x0}, + 80: {region: 0x76, script: 0x52, flags: 0x0}, + 81: {region: 0x97, script: 0x20, flags: 0x0}, + 82: {region: 0xe6, script: 0x5, flags: 0x0}, + 83: {region: 0x97, script: 0x20, flags: 0x0}, + 84: {region: 0x32, script: 0x52, flags: 0x0}, + 85: {region: 0xb2, script: 0xc, flags: 0x0}, + 86: {region: 0x51, script: 0x52, flags: 0x0}, + 87: {region: 0xe5, script: 0x52, flags: 0x0}, + 88: {region: 0xe6, script: 0x20, flags: 0x0}, + 89: {region: 0x104, script: 0x1e, flags: 0x0}, + 90: {region: 0x15c, script: 0x52, flags: 0x0}, + 91: {region: 0x93, script: 0x52, flags: 0x0}, + 92: {region: 0x51, script: 0x52, flags: 0x0}, + 93: {region: 0x84, script: 0x52, flags: 0x0}, + 94: {region: 0x6c, script: 0x27, flags: 0x0}, + 95: {region: 0x51, script: 0x52, flags: 0x0}, + 96: {region: 0xc1, script: 0x52, flags: 0x0}, + 97: {region: 0x6d, script: 0x52, flags: 0x0}, + 98: {region: 0xd4, script: 0x52, flags: 0x0}, + 99: {region: 0x8, script: 0x2, flags: 0x1}, + 100: {region: 0x104, script: 0x1e, flags: 0x0}, + 101: {region: 0xe5, script: 0x52, flags: 0x0}, + 102: {region: 0x12f, script: 0x52, flags: 0x0}, + 103: {region: 0x88, script: 0x52, flags: 0x0}, + 104: {region: 0x73, script: 0x52, flags: 0x0}, + 105: {region: 0x104, script: 0x1e, flags: 0x0}, + 106: {region: 0x132, script: 0x52, flags: 0x0}, + 107: {region: 0x48, script: 0x52, flags: 0x0}, + 108: {region: 0x132, script: 0x1a, flags: 0x0}, + 109: {region: 0xa4, script: 0x5, flags: 0x0}, + 110: {region: 0x13b, script: 0x19, flags: 0x0}, + 111: {region: 0x99, script: 0x5, flags: 0x0}, + 112: {region: 0x76, script: 0x52, flags: 0x0}, + 113: {region: 0x6a, script: 0x1c, flags: 0x0}, + 114: {region: 0xe5, script: 0x52, flags: 0x0}, + 115: {region: 0x48, script: 0x17, flags: 0x0}, + 116: {region: 0x48, script: 0x17, flags: 0x0}, + 117: {region: 0x48, script: 0x17, flags: 0x0}, + 118: {region: 0x48, script: 0x17, flags: 0x0}, + 119: {region: 0x48, script: 0x17, flags: 0x0}, + 120: {region: 0x108, script: 0x52, flags: 0x0}, + 121: {region: 0x5d, script: 0x52, flags: 0x0}, + 122: {region: 0xe7, script: 0x52, flags: 0x0}, + 123: {region: 0x48, script: 0x17, flags: 0x0}, + 124: {region: 0xc2, script: 0x79, flags: 0x0}, + 125: {region: 0xa, script: 0x2, flags: 0x1}, + 126: {region: 0x104, script: 0x1e, flags: 0x0}, + 127: {region: 0x79, script: 0x52, flags: 0x0}, + 128: {region: 0x62, script: 0x52, flags: 0x0}, + 129: {region: 0x132, script: 0x52, flags: 0x0}, + 130: {region: 0x104, script: 0x1e, flags: 0x0}, + 131: {region: 0xa2, script: 0x52, flags: 0x0}, + 132: {region: 0x97, script: 0x5, flags: 0x0}, + 133: {region: 0x5f, script: 0x52, flags: 0x0}, + 134: {region: 0x48, script: 0x52, flags: 0x0}, + 135: {region: 0x48, script: 0x52, flags: 0x0}, + 136: {region: 0xd2, script: 0x52, flags: 0x0}, + 137: {region: 0x4e, script: 0x52, flags: 0x0}, + 138: {region: 0x97, script: 0x5, flags: 0x0}, + 139: {region: 0x5f, script: 0x52, flags: 0x0}, + 140: {region: 0xc1, script: 0x52, flags: 0x0}, + 141: {region: 0xce, script: 0x52, flags: 0x0}, + 142: {region: 0xd9, script: 0x20, flags: 0x0}, + 143: {region: 0x51, script: 0x52, flags: 0x0}, + 144: {region: 0xcb, script: 0xd4, flags: 0x0}, + 145: {region: 0x112, script: 0x52, flags: 0x0}, + 146: {region: 0x36, script: 0x52, flags: 0x0}, + 147: {region: 0x42, script: 0xd6, flags: 0x0}, + 148: {region: 0xa2, script: 0x52, flags: 0x0}, + 149: {region: 0x7e, script: 0x52, flags: 0x0}, + 150: {region: 0xd4, script: 0x52, flags: 0x0}, + 151: {region: 0x9c, script: 0x52, flags: 0x0}, + 152: {region: 0x6a, script: 0x25, flags: 0x0}, + 153: {region: 0xc2, script: 0x43, flags: 0x0}, + 154: {region: 0x85, script: 0x2d, flags: 0x0}, + 155: {region: 0xc, script: 0x2, flags: 0x1}, + 156: {region: 0x1, script: 0x52, flags: 0x0}, + 157: {region: 0x6d, script: 0x52, flags: 0x0}, + 158: {region: 0x132, script: 0x52, flags: 0x0}, + 159: {region: 0x69, script: 0x52, flags: 0x0}, + 160: {region: 0x9c, script: 0x3e, flags: 0x0}, + 161: {region: 0x6d, script: 0x52, flags: 0x0}, + 162: {region: 0x51, script: 0x52, flags: 0x0}, + 163: {region: 0x6d, script: 0x52, flags: 0x0}, + 164: {region: 0x9a, script: 0x5, flags: 0x0}, + 165: {region: 0x84, script: 0x52, flags: 0x0}, + 166: {region: 0xe, script: 0x2, flags: 0x1}, + 167: {region: 0xc1, script: 0x52, flags: 0x0}, + 168: {region: 0x70, script: 0x52, flags: 0x0}, + 169: {region: 0x109, script: 0x5, flags: 0x0}, + 170: {region: 0xe5, script: 0x52, flags: 0x0}, + 171: {region: 0x10a, script: 0x52, flags: 0x0}, + 172: {region: 0x71, script: 0x52, flags: 0x0}, + 173: {region: 0x74, script: 0x52, flags: 0x0}, + 174: {region: 0x3a, script: 0x52, flags: 0x0}, + 175: {region: 0x76, script: 0x52, flags: 0x0}, + 176: {region: 0x132, script: 0x52, flags: 0x0}, + 177: {region: 0x76, script: 0x52, flags: 0x0}, + 178: {region: 0x5f, script: 0x52, flags: 0x0}, + 179: {region: 0x5f, script: 0x52, flags: 0x0}, + 180: {region: 0x13d, script: 0x52, flags: 0x0}, + 181: {region: 0xd2, script: 0x52, flags: 0x0}, + 182: {region: 0x9c, script: 0x52, flags: 0x0}, + 183: {region: 0xd4, script: 0x52, flags: 0x0}, + 184: {region: 0x109, script: 0x52, flags: 0x0}, + 185: {region: 0xd7, script: 0x52, flags: 0x0}, + 186: {region: 0x94, script: 0x52, flags: 0x0}, + 187: {region: 0x7e, script: 0x52, flags: 0x0}, + 188: {region: 0xba, script: 0x52, flags: 0x0}, + 189: {region: 0x52, script: 0x34, flags: 0x0}, + 190: {region: 0x93, script: 0x52, flags: 0x0}, + 191: {region: 0x97, script: 0x20, flags: 0x0}, + 192: {region: 0x9a, script: 0x5, flags: 0x0}, + 193: {region: 0x7c, script: 0x52, flags: 0x0}, + 194: {region: 0x79, script: 0x52, flags: 0x0}, + 195: {region: 0x6e, script: 0x27, flags: 0x0}, + 196: {region: 0xd9, script: 0x20, flags: 0x0}, + 197: {region: 0xa5, script: 0x52, flags: 0x0}, + 198: {region: 0xe6, script: 0x5, flags: 0x0}, + 199: {region: 0xe6, script: 0x5, flags: 0x0}, + 200: {region: 0x6d, script: 0x52, flags: 0x0}, + 201: {region: 0x9a, script: 0x5, flags: 0x0}, + 202: {region: 0xef, script: 0x52, flags: 0x0}, + 203: {region: 0x97, script: 0x20, flags: 0x0}, + 204: {region: 0x97, script: 0xd0, flags: 0x0}, + 205: {region: 0x93, script: 0x52, flags: 0x0}, + 206: {region: 0xd7, script: 0x52, flags: 0x0}, + 207: {region: 0x12e, script: 0x2b, flags: 0x0}, + 208: {region: 0x10, script: 0x2, flags: 0x1}, + 209: {region: 0x97, script: 0xe, flags: 0x0}, + 210: {region: 0x4d, script: 0x52, flags: 0x0}, + 211: {region: 0x97, script: 0x2e, flags: 0x0}, + 212: {region: 0x40, script: 0x52, flags: 0x0}, + 213: {region: 0x53, script: 0x52, flags: 0x0}, + 214: {region: 0x7e, script: 0x52, flags: 0x0}, + 216: {region: 0xa2, script: 0x52, flags: 0x0}, + 217: {region: 0x96, script: 0x52, flags: 0x0}, + 218: {region: 0xd9, script: 0x20, flags: 0x0}, + 219: {region: 0x48, script: 0x52, flags: 0x0}, + 220: {region: 0x12, script: 0x3, flags: 0x1}, + 221: {region: 0x52, script: 0x34, flags: 0x0}, + 222: {region: 0x132, script: 0x52, flags: 0x0}, + 223: {region: 0x23, script: 0x5, flags: 0x0}, + 224: {region: 0x95, script: 0x37, flags: 0x0}, + 225: {region: 0x97, script: 0x20, flags: 0x0}, + 226: {region: 0x71, script: 0x52, flags: 0x0}, + 227: {region: 0xe5, script: 0x52, flags: 0x0}, + 228: {region: 0x129, script: 0x39, flags: 0x0}, + 229: {region: 0x52, script: 0x81, flags: 0x0}, + 230: {region: 0xe6, script: 0x5, flags: 0x0}, + 231: {region: 0x97, script: 0x20, flags: 0x0}, + 232: {region: 0xad, script: 0x3a, flags: 0x0}, + 233: {region: 0xe5, script: 0x52, flags: 0x0}, + 234: {region: 0xe6, script: 0x5, flags: 0x0}, + 235: {region: 0xe4, script: 0x52, flags: 0x0}, + 236: {region: 0x97, script: 0x20, flags: 0x0}, + 237: {region: 0x97, script: 0x20, flags: 0x0}, + 238: {region: 0x8e, script: 0x52, flags: 0x0}, + 239: {region: 0x5f, script: 0x52, flags: 0x0}, + 240: {region: 0x52, script: 0x34, flags: 0x0}, + 241: {region: 0x8f, script: 0x52, flags: 0x0}, + 242: {region: 0x90, script: 0x52, flags: 0x0}, + 243: {region: 0x27, script: 0x8, flags: 0x0}, + 244: {region: 0xd0, script: 0x52, flags: 0x0}, + 245: {region: 0x76, script: 0x52, flags: 0x0}, + 246: {region: 0xce, script: 0x52, flags: 0x0}, + 247: {region: 0xd4, script: 0x52, flags: 0x0}, + 248: {region: 0x93, script: 0x52, flags: 0x0}, + 250: {region: 0xd4, script: 0x52, flags: 0x0}, + 251: {region: 0x52, script: 0xdf, flags: 0x0}, + 252: {region: 0x132, script: 0x52, flags: 0x0}, + 253: {region: 0x48, script: 0x52, flags: 0x0}, + 254: {region: 0xe5, script: 0x52, flags: 0x0}, + 255: {region: 0x93, script: 0x52, flags: 0x0}, + 256: {region: 0x104, script: 0x1e, flags: 0x0}, + 258: {region: 0x9b, script: 0x52, flags: 0x0}, + 259: {region: 0x9c, script: 0x52, flags: 0x0}, + 260: {region: 0x48, script: 0x17, flags: 0x0}, + 261: {region: 0x95, script: 0x37, flags: 0x0}, + 262: {region: 0x104, script: 0x52, flags: 0x0}, + 263: {region: 0xa0, script: 0x41, flags: 0x0}, + 264: {region: 0x9e, script: 0x52, flags: 0x0}, + 266: {region: 0x51, script: 0x52, flags: 0x0}, + 267: {region: 0x12e, script: 0x37, flags: 0x0}, + 268: {region: 0x12d, script: 0x52, flags: 0x0}, + 269: {region: 0xd9, script: 0x20, flags: 0x0}, + 270: {region: 0x62, script: 0x52, flags: 0x0}, + 271: {region: 0x93, script: 0x52, flags: 0x0}, + 272: {region: 0x93, script: 0x52, flags: 0x0}, + 273: {region: 0x7b, script: 0x29, flags: 0x0}, + 274: {region: 0x134, script: 0x1e, flags: 0x0}, + 275: {region: 0x66, script: 0x52, flags: 0x0}, + 276: {region: 0xc2, script: 0x52, flags: 0x0}, + 277: {region: 0xd4, script: 0x52, flags: 0x0}, + 278: {region: 0xa2, script: 0x52, flags: 0x0}, + 279: {region: 0xc1, script: 0x52, flags: 0x0}, + 280: {region: 0x104, script: 0x1e, flags: 0x0}, + 281: {region: 0xd4, script: 0x52, flags: 0x0}, + 282: {region: 0x161, script: 0x52, flags: 0x0}, + 283: {region: 0x12d, script: 0x52, flags: 0x0}, + 284: {region: 0x121, script: 0xd5, flags: 0x0}, + 285: {region: 0x59, script: 0x52, flags: 0x0}, + 286: {region: 0x51, script: 0x52, flags: 0x0}, + 287: {region: 0x4e, script: 0x52, flags: 0x0}, + 288: {region: 0x97, script: 0x20, flags: 0x0}, + 289: {region: 0x97, script: 0x20, flags: 0x0}, + 290: {region: 0x4a, script: 0x52, flags: 0x0}, + 291: {region: 0x93, script: 0x52, flags: 0x0}, + 292: {region: 0x40, script: 0x52, flags: 0x0}, + 293: {region: 0x97, script: 0x52, flags: 0x0}, + 294: {region: 0x52, script: 0xcc, flags: 0x0}, + 295: {region: 0x97, script: 0x20, flags: 0x0}, + 296: {region: 0xc1, script: 0x52, flags: 0x0}, + 297: {region: 0x97, script: 0x6b, flags: 0x0}, + 298: {region: 0xe6, script: 0x5, flags: 0x0}, + 299: {region: 0xa2, script: 0x52, flags: 0x0}, + 300: {region: 0x129, script: 0x52, flags: 0x0}, + 301: {region: 0xd0, script: 0x52, flags: 0x0}, + 302: {region: 0xad, script: 0x4f, flags: 0x0}, + 303: {region: 0x15, script: 0x6, flags: 0x1}, + 304: {region: 0x51, script: 0x52, flags: 0x0}, + 305: {region: 0x80, script: 0x52, flags: 0x0}, + 306: {region: 0xa2, script: 0x52, flags: 0x0}, + 307: {region: 0xa4, script: 0x46, flags: 0x0}, + 308: {region: 0x29, script: 0x52, flags: 0x0}, + 309: {region: 0x97, script: 0x4a, flags: 0x0}, + 310: {region: 0xa9, script: 0x4b, flags: 0x0}, + 311: {region: 0x104, script: 0x1e, flags: 0x0}, + 312: {region: 0x97, script: 0x20, flags: 0x0}, + 313: {region: 0x73, script: 0x52, flags: 0x0}, + 314: {region: 0xb2, script: 0x52, flags: 0x0}, + 316: {region: 0x104, script: 0x1e, flags: 0x0}, + 317: {region: 0x110, script: 0x52, flags: 0x0}, + 318: {region: 0xe5, script: 0x52, flags: 0x0}, + 319: {region: 0x104, script: 0x52, flags: 0x0}, + 320: {region: 0x97, script: 0x20, flags: 0x0}, + 321: {region: 0x97, script: 0x5, flags: 0x0}, + 322: {region: 0x12d, script: 0x52, flags: 0x0}, + 323: {region: 0x51, script: 0x52, flags: 0x0}, + 324: {region: 0x5f, script: 0x52, flags: 0x0}, + 325: {region: 0x1b, script: 0x3, flags: 0x1}, + 326: {region: 0x104, script: 0x1e, flags: 0x0}, + 327: {region: 0x104, script: 0x1e, flags: 0x0}, + 328: {region: 0x93, script: 0x52, flags: 0x0}, + 329: {region: 0xe6, script: 0x5, flags: 0x0}, + 330: {region: 0x79, script: 0x52, flags: 0x0}, + 331: {region: 0x121, script: 0xd5, flags: 0x0}, + 332: {region: 0xe6, script: 0x5, flags: 0x0}, + 333: {region: 0x1e, script: 0x5, flags: 0x1}, + 334: {region: 0x135, script: 0x52, flags: 0x0}, + 335: {region: 0x85, script: 0x56, flags: 0x0}, + 336: {region: 0x95, script: 0x37, flags: 0x0}, + 337: {region: 0x12d, script: 0x52, flags: 0x0}, + 338: {region: 0xe6, script: 0x5, flags: 0x0}, + 339: {region: 0x12f, script: 0x52, flags: 0x0}, + 340: {region: 0xb5, script: 0x52, flags: 0x0}, + 341: {region: 0x104, script: 0x1e, flags: 0x0}, + 342: {region: 0x93, script: 0x52, flags: 0x0}, + 343: {region: 0x52, script: 0xd5, flags: 0x0}, + 344: {region: 0x97, script: 0x54, flags: 0x0}, + 345: {region: 0x104, script: 0x1e, flags: 0x0}, + 346: {region: 0x12f, script: 0x52, flags: 0x0}, + 347: {region: 0xd7, script: 0x52, flags: 0x0}, + 348: {region: 0x23, script: 0x2, flags: 0x1}, + 349: {region: 0x9c, script: 0x52, flags: 0x0}, + 350: {region: 0x52, script: 0x58, flags: 0x0}, + 351: {region: 0x93, script: 0x52, flags: 0x0}, + 352: {region: 0x9a, script: 0x5, flags: 0x0}, + 353: {region: 0x132, script: 0x52, flags: 0x0}, + 354: {region: 0x97, script: 0xd0, flags: 0x0}, + 355: {region: 0x9c, script: 0x52, flags: 0x0}, + 356: {region: 0x4a, script: 0x52, flags: 0x0}, + 357: {region: 0xad, script: 0x4f, flags: 0x0}, + 358: {region: 0x4a, script: 0x52, flags: 0x0}, + 359: {region: 0x15f, script: 0x52, flags: 0x0}, + 360: {region: 0x9a, script: 0x5, flags: 0x0}, + 361: {region: 0xb4, script: 0x52, flags: 0x0}, + 362: {region: 0xb6, script: 0x52, flags: 0x0}, + 363: {region: 0x4a, script: 0x52, flags: 0x0}, + 364: {region: 0x4a, script: 0x52, flags: 0x0}, + 365: {region: 0xa2, script: 0x52, flags: 0x0}, + 366: {region: 0xa2, script: 0x52, flags: 0x0}, + 367: {region: 0x9a, script: 0x5, flags: 0x0}, + 368: {region: 0xb6, script: 0x52, flags: 0x0}, + 369: {region: 0x121, script: 0xd5, flags: 0x0}, + 370: {region: 0x52, script: 0x34, flags: 0x0}, + 371: {region: 0x129, script: 0x52, flags: 0x0}, + 372: {region: 0x93, script: 0x52, flags: 0x0}, + 373: {region: 0x51, script: 0x52, flags: 0x0}, + 374: {region: 0x97, script: 0x20, flags: 0x0}, + 375: {region: 0x97, script: 0x20, flags: 0x0}, + 376: {region: 0x93, script: 0x52, flags: 0x0}, + 377: {region: 0x25, script: 0x3, flags: 0x1}, + 378: {region: 0xa2, script: 0x52, flags: 0x0}, + 379: {region: 0xcd, script: 0x52, flags: 0x0}, + 380: {region: 0x104, script: 0x1e, flags: 0x0}, + 381: {region: 0xe5, script: 0x52, flags: 0x0}, + 382: {region: 0x93, script: 0x52, flags: 0x0}, + 383: {region: 0x110, script: 0x52, flags: 0x0}, + 384: {region: 0xa2, script: 0x52, flags: 0x0}, + 385: {region: 0x121, script: 0x5, flags: 0x0}, + 386: {region: 0xca, script: 0x52, flags: 0x0}, + 387: {region: 0xbd, script: 0x52, flags: 0x0}, + 388: {region: 0xcf, script: 0x52, flags: 0x0}, + 389: {region: 0x51, script: 0x52, flags: 0x0}, + 390: {region: 0xd9, script: 0x20, flags: 0x0}, + 391: {region: 0x12d, script: 0x52, flags: 0x0}, + 392: {region: 0xbe, script: 0x52, flags: 0x0}, + 393: {region: 0xde, script: 0x52, flags: 0x0}, + 394: {region: 0x93, script: 0x52, flags: 0x0}, + 395: {region: 0x99, script: 0x36, flags: 0x0}, + 396: {region: 0xc0, script: 0x1e, flags: 0x0}, + 397: {region: 0x97, script: 0x64, flags: 0x0}, + 398: {region: 0x109, script: 0x52, flags: 0x0}, + 399: {region: 0x28, script: 0x3, flags: 0x1}, + 400: {region: 0x97, script: 0xe, flags: 0x0}, + 401: {region: 0xc2, script: 0x6b, flags: 0x0}, + 403: {region: 0x48, script: 0x52, flags: 0x0}, + 404: {region: 0x48, script: 0x52, flags: 0x0}, + 405: {region: 0x36, script: 0x52, flags: 0x0}, + 406: {region: 0x97, script: 0x20, flags: 0x0}, + 407: {region: 0xd9, script: 0x20, flags: 0x0}, + 408: {region: 0x104, script: 0x1e, flags: 0x0}, + 409: {region: 0x34, script: 0x68, flags: 0x0}, + 410: {region: 0x2b, script: 0x3, flags: 0x1}, + 411: {region: 0xc9, script: 0x52, flags: 0x0}, + 412: {region: 0x97, script: 0x20, flags: 0x0}, + 413: {region: 0x51, script: 0x52, flags: 0x0}, + 415: {region: 0x132, script: 0x52, flags: 0x0}, + 416: {region: 0xe6, script: 0x5, flags: 0x0}, + 417: {region: 0xc1, script: 0x52, flags: 0x0}, + 418: {region: 0x97, script: 0x20, flags: 0x0}, + 419: {region: 0x93, script: 0x52, flags: 0x0}, + 420: {region: 0x161, script: 0x52, flags: 0x0}, + 421: {region: 0xc2, script: 0x6b, flags: 0x0}, + 422: {region: 0x104, script: 0x1e, flags: 0x0}, + 423: {region: 0x12f, script: 0x52, flags: 0x0}, + 424: {region: 0x9a, script: 0x5d, flags: 0x0}, + 425: {region: 0x9a, script: 0x5, flags: 0x0}, + 426: {region: 0xdb, script: 0x52, flags: 0x0}, + 428: {region: 0x52, script: 0x34, flags: 0x0}, + 429: {region: 0x9c, script: 0x52, flags: 0x0}, + 430: {region: 0xd0, script: 0x52, flags: 0x0}, + 431: {region: 0xd8, script: 0x52, flags: 0x0}, + 432: {region: 0xcd, script: 0x52, flags: 0x0}, + 433: {region: 0x161, script: 0x52, flags: 0x0}, + 434: {region: 0xcf, script: 0x52, flags: 0x0}, + 435: {region: 0x5f, script: 0x52, flags: 0x0}, + 436: {region: 0xd9, script: 0x20, flags: 0x0}, + 437: {region: 0xd9, script: 0x20, flags: 0x0}, + 438: {region: 0xd0, script: 0x52, flags: 0x0}, + 439: {region: 0xcf, script: 0x52, flags: 0x0}, + 440: {region: 0xcd, script: 0x52, flags: 0x0}, + 441: {region: 0xcd, script: 0x52, flags: 0x0}, + 442: {region: 0x93, script: 0x52, flags: 0x0}, + 443: {region: 0xdd, script: 0x52, flags: 0x0}, + 444: {region: 0x97, script: 0x52, flags: 0x0}, + 445: {region: 0xd7, script: 0x52, flags: 0x0}, + 446: {region: 0x51, script: 0x52, flags: 0x0}, + 447: {region: 0xd8, script: 0x52, flags: 0x0}, + 448: {region: 0x51, script: 0x52, flags: 0x0}, + 449: {region: 0xd8, script: 0x52, flags: 0x0}, + 450: {region: 0x121, script: 0x4e, flags: 0x0}, + 451: {region: 0x97, script: 0x20, flags: 0x0}, + 452: {region: 0x10a, script: 0xb7, flags: 0x0}, + 453: {region: 0x82, script: 0x70, flags: 0x0}, + 454: {region: 0x15e, script: 0x52, flags: 0x0}, + 455: {region: 0x48, script: 0x17, flags: 0x0}, + 456: {region: 0x15e, script: 0x52, flags: 0x0}, + 457: {region: 0x115, script: 0x52, flags: 0x0}, + 458: {region: 0x132, script: 0x52, flags: 0x0}, + 459: {region: 0x52, script: 0x52, flags: 0x0}, + 460: {region: 0xcc, script: 0x52, flags: 0x0}, + 461: {region: 0x12d, script: 0x52, flags: 0x0}, + 462: {region: 0x12f, script: 0x52, flags: 0x0}, + 463: {region: 0x7e, script: 0x52, flags: 0x0}, + 464: {region: 0x76, script: 0x52, flags: 0x0}, + 466: {region: 0x6e, script: 0x52, flags: 0x0}, + 467: {region: 0x97, script: 0x75, flags: 0x0}, + 468: {region: 0x7b, script: 0x1e, flags: 0x0}, + 469: {region: 0x132, script: 0x76, flags: 0x0}, + 470: {region: 0xc3, script: 0x74, flags: 0x0}, + 471: {region: 0x2e, script: 0x3, flags: 0x1}, + 472: {region: 0xe5, script: 0x52, flags: 0x0}, + 473: {region: 0x31, script: 0x2, flags: 0x1}, + 474: {region: 0xe5, script: 0x52, flags: 0x0}, + 475: {region: 0x2f, script: 0x52, flags: 0x0}, + 476: {region: 0xee, script: 0x52, flags: 0x0}, + 477: {region: 0x76, script: 0x52, flags: 0x0}, + 478: {region: 0xd4, script: 0x52, flags: 0x0}, + 479: {region: 0x132, script: 0x52, flags: 0x0}, + 480: {region: 0x48, script: 0x52, flags: 0x0}, + 481: {region: 0x9a, script: 0xdd, flags: 0x0}, + 482: {region: 0x5f, script: 0x52, flags: 0x0}, + 483: {region: 0xae, script: 0x7f, flags: 0x0}, + 485: {region: 0x97, script: 0x12, flags: 0x0}, + 486: {region: 0xa2, script: 0x52, flags: 0x0}, + 487: {region: 0xe7, script: 0x52, flags: 0x0}, + 488: {region: 0x9c, script: 0x52, flags: 0x0}, + 489: {region: 0x85, script: 0x2d, flags: 0x0}, + 490: {region: 0x73, script: 0x52, flags: 0x0}, + 491: {region: 0xe6, script: 0x45, flags: 0x0}, + 492: {region: 0x9a, script: 0x5, flags: 0x0}, + 493: {region: 0x1, script: 0x52, flags: 0x0}, + 494: {region: 0x23, script: 0x5, flags: 0x0}, + 495: {region: 0x40, script: 0x52, flags: 0x0}, + 496: {region: 0x78, script: 0x52, flags: 0x0}, + 497: {region: 0xe2, script: 0x52, flags: 0x0}, + 498: {region: 0x87, script: 0x52, flags: 0x0}, + 499: {region: 0x68, script: 0x52, flags: 0x0}, + 500: {region: 0x97, script: 0x20, flags: 0x0}, + 501: {region: 0x100, script: 0x52, flags: 0x0}, + 502: {region: 0x93, script: 0x52, flags: 0x0}, + 503: {region: 0x9c, script: 0x52, flags: 0x0}, + 504: {region: 0x97, script: 0x52, flags: 0x0}, + 505: {region: 0x33, script: 0x2, flags: 0x1}, + 506: {region: 0xd9, script: 0x20, flags: 0x0}, + 507: {region: 0x34, script: 0xe, flags: 0x0}, + 508: {region: 0x4d, script: 0x52, flags: 0x0}, + 509: {region: 0x70, script: 0x52, flags: 0x0}, + 510: {region: 0x4d, script: 0x52, flags: 0x0}, + 511: {region: 0x9a, script: 0x5, flags: 0x0}, + 512: {region: 0x10a, script: 0x52, flags: 0x0}, + 513: {region: 0x39, script: 0x52, flags: 0x0}, + 514: {region: 0xcf, script: 0x52, flags: 0x0}, + 515: {region: 0x102, script: 0x52, flags: 0x0}, + 516: {region: 0x93, script: 0x52, flags: 0x0}, + 517: {region: 0x12d, script: 0x52, flags: 0x0}, + 518: {region: 0x71, script: 0x52, flags: 0x0}, + 519: {region: 0x104, script: 0x1e, flags: 0x0}, + 520: {region: 0x12e, script: 0x1e, flags: 0x0}, + 521: {region: 0x107, script: 0x52, flags: 0x0}, + 522: {region: 0x105, script: 0x52, flags: 0x0}, + 523: {region: 0x12d, script: 0x52, flags: 0x0}, + 524: {region: 0xa0, script: 0x44, flags: 0x0}, + 525: {region: 0x97, script: 0x20, flags: 0x0}, + 526: {region: 0x7e, script: 0x52, flags: 0x0}, + 527: {region: 0x104, script: 0x1e, flags: 0x0}, + 528: {region: 0xa2, script: 0x52, flags: 0x0}, + 529: {region: 0x93, script: 0x52, flags: 0x0}, + 530: {region: 0x97, script: 0x52, flags: 0x0}, + 531: {region: 0x97, script: 0xbb, flags: 0x0}, + 532: {region: 0x12d, script: 0x52, flags: 0x0}, + 533: {region: 0x9c, script: 0x52, flags: 0x0}, + 534: {region: 0x97, script: 0x20, flags: 0x0}, + 535: {region: 0x9c, script: 0x52, flags: 0x0}, + 536: {region: 0x79, script: 0x52, flags: 0x0}, + 537: {region: 0x48, script: 0x52, flags: 0x0}, + 538: {region: 0x35, script: 0x4, flags: 0x1}, + 539: {region: 0x9c, script: 0x52, flags: 0x0}, + 540: {region: 0x9a, script: 0x5, flags: 0x0}, + 541: {region: 0xd8, script: 0x52, flags: 0x0}, + 542: {region: 0x4e, script: 0x52, flags: 0x0}, + 543: {region: 0xcf, script: 0x52, flags: 0x0}, + 544: {region: 0xcd, script: 0x52, flags: 0x0}, + 545: {region: 0xc1, script: 0x52, flags: 0x0}, + 546: {region: 0x4b, script: 0x52, flags: 0x0}, + 547: {region: 0x94, script: 0x72, flags: 0x0}, + 548: {region: 0xb4, script: 0x52, flags: 0x0}, + 550: {region: 0xb8, script: 0xd2, flags: 0x0}, + 551: {region: 0xc2, script: 0x6b, flags: 0x0}, + 552: {region: 0xb1, script: 0xc1, flags: 0x0}, + 553: {region: 0x6e, script: 0x52, flags: 0x0}, + 554: {region: 0x10f, script: 0x52, flags: 0x0}, + 555: {region: 0xe6, script: 0x5, flags: 0x0}, + 556: {region: 0x10d, script: 0x52, flags: 0x0}, + 557: {region: 0xe7, script: 0x52, flags: 0x0}, + 558: {region: 0x93, script: 0x52, flags: 0x0}, + 559: {region: 0x13f, script: 0x52, flags: 0x0}, + 560: {region: 0x10a, script: 0x52, flags: 0x0}, + 562: {region: 0x10a, script: 0x52, flags: 0x0}, + 563: {region: 0x70, script: 0x52, flags: 0x0}, + 564: {region: 0x95, script: 0xb8, flags: 0x0}, + 565: {region: 0x70, script: 0x52, flags: 0x0}, + 566: {region: 0x161, script: 0x52, flags: 0x0}, + 567: {region: 0xc1, script: 0x52, flags: 0x0}, + 568: {region: 0x113, script: 0x52, flags: 0x0}, + 569: {region: 0x121, script: 0xd5, flags: 0x0}, + 570: {region: 0x26, script: 0x52, flags: 0x0}, + 571: {region: 0x39, script: 0x5, flags: 0x1}, + 572: {region: 0x97, script: 0xc2, flags: 0x0}, + 573: {region: 0x114, script: 0x52, flags: 0x0}, + 574: {region: 0x112, script: 0x52, flags: 0x0}, + 575: {region: 0x97, script: 0x20, flags: 0x0}, + 576: {region: 0x15e, script: 0x52, flags: 0x0}, + 577: {region: 0x6c, script: 0x52, flags: 0x0}, + 578: {region: 0x15e, script: 0x52, flags: 0x0}, + 579: {region: 0x5f, script: 0x52, flags: 0x0}, + 580: {region: 0x93, script: 0x52, flags: 0x0}, + 581: {region: 0x12d, script: 0x52, flags: 0x0}, + 582: {region: 0x82, script: 0x52, flags: 0x0}, + 583: {region: 0x10a, script: 0x52, flags: 0x0}, + 584: {region: 0x12d, script: 0x52, flags: 0x0}, + 585: {region: 0x15c, script: 0x5, flags: 0x0}, + 586: {region: 0x4a, script: 0x52, flags: 0x0}, + 587: {region: 0x5f, script: 0x52, flags: 0x0}, + 588: {region: 0x97, script: 0x20, flags: 0x0}, + 589: {region: 0x93, script: 0x52, flags: 0x0}, + 590: {region: 0x34, script: 0xe, flags: 0x0}, + 591: {region: 0x99, script: 0xc5, flags: 0x0}, + 592: {region: 0xe7, script: 0x52, flags: 0x0}, + 593: {region: 0x97, script: 0xcd, flags: 0x0}, + 594: {region: 0xd9, script: 0x20, flags: 0x0}, + 595: {region: 0xe5, script: 0x52, flags: 0x0}, + 596: {region: 0x97, script: 0x4a, flags: 0x0}, + 597: {region: 0x52, script: 0xcb, flags: 0x0}, + 598: {region: 0xd9, script: 0x20, flags: 0x0}, + 599: {region: 0xd9, script: 0x20, flags: 0x0}, + 600: {region: 0x97, script: 0xd0, flags: 0x0}, + 601: {region: 0x110, script: 0x52, flags: 0x0}, + 602: {region: 0x12f, script: 0x52, flags: 0x0}, + 603: {region: 0x124, script: 0x52, flags: 0x0}, + 604: {region: 0x3e, script: 0x3, flags: 0x1}, + 605: {region: 0x121, script: 0xd5, flags: 0x0}, + 606: {region: 0xd9, script: 0x20, flags: 0x0}, + 607: {region: 0xd9, script: 0x20, flags: 0x0}, + 608: {region: 0xd9, script: 0x20, flags: 0x0}, + 609: {region: 0x6e, script: 0x27, flags: 0x0}, + 610: {region: 0x6c, script: 0x27, flags: 0x0}, + 611: {region: 0xd4, script: 0x52, flags: 0x0}, + 612: {region: 0x125, script: 0x52, flags: 0x0}, + 613: {region: 0x123, script: 0x52, flags: 0x0}, + 614: {region: 0x31, script: 0x52, flags: 0x0}, + 615: {region: 0xd9, script: 0x20, flags: 0x0}, + 616: {region: 0xe5, script: 0x52, flags: 0x0}, + 617: {region: 0x31, script: 0x52, flags: 0x0}, + 618: {region: 0xd2, script: 0x52, flags: 0x0}, + 619: {region: 0x15e, script: 0x52, flags: 0x0}, + 620: {region: 0x127, script: 0x52, flags: 0x0}, + 621: {region: 0xcc, script: 0x52, flags: 0x0}, + 622: {region: 0xe4, script: 0x52, flags: 0x0}, + 623: {region: 0x129, script: 0x52, flags: 0x0}, + 624: {region: 0x129, script: 0x52, flags: 0x0}, + 625: {region: 0x12c, script: 0x52, flags: 0x0}, + 626: {region: 0x15e, script: 0x52, flags: 0x0}, + 627: {region: 0x85, script: 0x2d, flags: 0x0}, + 628: {region: 0xd9, script: 0x20, flags: 0x0}, + 629: {region: 0xe5, script: 0x52, flags: 0x0}, + 630: {region: 0x42, script: 0xd6, flags: 0x0}, + 631: {region: 0x104, script: 0x1e, flags: 0x0}, + 632: {region: 0x12f, script: 0x52, flags: 0x0}, + 633: {region: 0x121, script: 0xd5, flags: 0x0}, + 634: {region: 0x31, script: 0x52, flags: 0x0}, + 635: {region: 0xcc, script: 0x52, flags: 0x0}, + 636: {region: 0x12b, script: 0x52, flags: 0x0}, + 638: {region: 0xd2, script: 0x52, flags: 0x0}, + 639: {region: 0x52, script: 0xce, flags: 0x0}, + 640: {region: 0xe3, script: 0x52, flags: 0x0}, + 641: {region: 0x104, script: 0x1e, flags: 0x0}, + 642: {region: 0xb8, script: 0x52, flags: 0x0}, + 643: {region: 0x104, script: 0x1e, flags: 0x0}, + 644: {region: 0x41, script: 0x4, flags: 0x1}, + 645: {region: 0x11a, script: 0xd8, flags: 0x0}, + 646: {region: 0x12e, script: 0x1e, flags: 0x0}, + 647: {region: 0x73, script: 0x52, flags: 0x0}, + 648: {region: 0x29, script: 0x52, flags: 0x0}, + 650: {region: 0x45, script: 0x3, flags: 0x1}, + 651: {region: 0x97, script: 0xe, flags: 0x0}, + 652: {region: 0xe6, script: 0x5, flags: 0x0}, + 653: {region: 0x48, script: 0x4, flags: 0x1}, + 654: {region: 0xb2, script: 0xd9, flags: 0x0}, + 655: {region: 0x15e, script: 0x52, flags: 0x0}, + 656: {region: 0x9c, script: 0x52, flags: 0x0}, + 657: {region: 0x104, script: 0x52, flags: 0x0}, + 658: {region: 0x13b, script: 0x52, flags: 0x0}, + 659: {region: 0x119, script: 0x52, flags: 0x0}, + 660: {region: 0x35, script: 0x52, flags: 0x0}, + 661: {region: 0x5f, script: 0x52, flags: 0x0}, + 662: {region: 0xcf, script: 0x52, flags: 0x0}, + 663: {region: 0x1, script: 0x52, flags: 0x0}, + 664: {region: 0x104, script: 0x52, flags: 0x0}, + 665: {region: 0x69, script: 0x52, flags: 0x0}, + 666: {region: 0x12d, script: 0x52, flags: 0x0}, + 667: {region: 0x35, script: 0x52, flags: 0x0}, + 668: {region: 0x4d, script: 0x52, flags: 0x0}, + 669: {region: 0x6e, script: 0x27, flags: 0x0}, + 670: {region: 0xe5, script: 0x52, flags: 0x0}, + 671: {region: 0x2e, script: 0x52, flags: 0x0}, + 672: {region: 0x97, script: 0xd0, flags: 0x0}, + 673: {region: 0x97, script: 0x20, flags: 0x0}, + 674: {region: 0x13d, script: 0x52, flags: 0x0}, + 675: {region: 0xa6, script: 0x5, flags: 0x0}, + 676: {region: 0x112, script: 0x52, flags: 0x0}, + 677: {region: 0x97, script: 0x20, flags: 0x0}, + 678: {region: 0x52, script: 0x34, flags: 0x0}, + 679: {region: 0x40, script: 0x52, flags: 0x0}, + 680: {region: 0x129, script: 0x18, flags: 0x0}, + 681: {region: 0x15e, script: 0x52, flags: 0x0}, + 682: {region: 0x129, script: 0x5a, flags: 0x0}, + 683: {region: 0x129, script: 0x5b, flags: 0x0}, + 684: {region: 0x7b, script: 0x29, flags: 0x0}, + 685: {region: 0x52, script: 0x5e, flags: 0x0}, + 686: {region: 0x109, script: 0x62, flags: 0x0}, + 687: {region: 0x106, script: 0x6c, flags: 0x0}, + 688: {region: 0x97, script: 0x20, flags: 0x0}, + 689: {region: 0x12f, script: 0x52, flags: 0x0}, + 690: {region: 0x9a, script: 0x82, flags: 0x0}, + 691: {region: 0x15b, script: 0xba, flags: 0x0}, + 692: {region: 0xd9, script: 0x20, flags: 0x0}, + 693: {region: 0xcf, script: 0x52, flags: 0x0}, + 694: {region: 0x73, script: 0x52, flags: 0x0}, + 695: {region: 0x51, script: 0x52, flags: 0x0}, + 696: {region: 0x51, script: 0x52, flags: 0x0}, + 697: {region: 0x1, script: 0x37, flags: 0x0}, + 698: {region: 0xd4, script: 0x52, flags: 0x0}, + 699: {region: 0x40, script: 0x52, flags: 0x0}, + 700: {region: 0xcd, script: 0x52, flags: 0x0}, + 701: {region: 0x4c, script: 0x3, flags: 0x1}, + 702: {region: 0x52, script: 0x52, flags: 0x0}, + 703: {region: 0x109, script: 0x52, flags: 0x0}, + 705: {region: 0xa6, script: 0x5, flags: 0x0}, + 706: {region: 0xd7, script: 0x52, flags: 0x0}, + 707: {region: 0xb8, script: 0xd2, flags: 0x0}, + 708: {region: 0x4f, script: 0x14, flags: 0x1}, + 709: {region: 0xce, script: 0x52, flags: 0x0}, + 710: {region: 0x15e, script: 0x52, flags: 0x0}, + 712: {region: 0x129, script: 0x52, flags: 0x0}, +} + +// likelyLangList holds lists info associated with likelyLang. +// Size: 396 bytes, 99 elements +var likelyLangList = [99]likelyScriptRegion{ + 0: {region: 0x9a, script: 0x7, flags: 0x0}, + 1: {region: 0x9f, script: 0x6d, flags: 0x2}, + 2: {region: 0x11a, script: 0x78, flags: 0x2}, + 3: {region: 0x31, script: 0x52, flags: 0x0}, + 4: {region: 0x99, script: 0x5, flags: 0x4}, + 5: {region: 0x9a, script: 0x5, flags: 0x4}, + 6: {region: 0x104, script: 0x1e, flags: 0x4}, + 7: {region: 0x9a, script: 0x5, flags: 0x2}, + 8: {region: 0x97, script: 0xe, flags: 0x0}, + 9: {region: 0x34, script: 0x16, flags: 0x2}, + 10: {region: 0x104, script: 0x1e, flags: 0x0}, + 11: {region: 0x37, script: 0x2a, flags: 0x2}, + 12: {region: 0x132, script: 0x52, flags: 0x0}, + 13: {region: 0x79, script: 0xbd, flags: 0x2}, + 14: {region: 0x112, script: 0x52, flags: 0x0}, + 15: {region: 0x82, script: 0x1, flags: 0x2}, + 16: {region: 0x5c, script: 0x1d, flags: 0x0}, + 17: {region: 0x85, script: 0x57, flags: 0x2}, + 18: {region: 0xd4, script: 0x52, flags: 0x0}, + 19: {region: 0x51, script: 0x5, flags: 0x4}, + 20: {region: 0x109, script: 0x5, flags: 0x4}, + 21: {region: 0xac, script: 0x1e, flags: 0x0}, + 22: {region: 0x23, script: 0x5, flags: 0x4}, + 23: {region: 0x52, script: 0x5, flags: 0x4}, + 24: {region: 0x9a, script: 0x5, flags: 0x4}, + 25: {region: 0xc3, script: 0x5, flags: 0x4}, + 26: {region: 0x52, script: 0x5, flags: 0x2}, + 27: {region: 0x129, script: 0x52, flags: 0x0}, + 28: {region: 0xae, script: 0x5, flags: 0x4}, + 29: {region: 0x99, script: 0x5, flags: 0x2}, + 30: {region: 0xa3, script: 0x1e, flags: 0x0}, + 31: {region: 0x52, script: 0x5, flags: 0x4}, + 32: {region: 0x129, script: 0x52, flags: 0x4}, + 33: {region: 0x52, script: 0x5, flags: 0x2}, + 34: {region: 0x129, script: 0x52, flags: 0x2}, + 35: {region: 0xd9, script: 0x20, flags: 0x0}, + 36: {region: 0x97, script: 0x55, flags: 0x2}, + 37: {region: 0x81, script: 0x52, flags: 0x0}, + 38: {region: 0x82, script: 0x70, flags: 0x4}, + 39: {region: 0x82, script: 0x70, flags: 0x2}, + 40: {region: 0xc3, script: 0x1e, flags: 0x0}, + 41: {region: 0x52, script: 0x66, flags: 0x4}, + 42: {region: 0x52, script: 0x66, flags: 0x2}, + 43: {region: 0xce, script: 0x52, flags: 0x0}, + 44: {region: 0x49, script: 0x5, flags: 0x4}, + 45: {region: 0x93, script: 0x5, flags: 0x4}, + 46: {region: 0x97, script: 0x2f, flags: 0x0}, + 47: {region: 0xe6, script: 0x5, flags: 0x4}, + 48: {region: 0xe6, script: 0x5, flags: 0x2}, + 49: {region: 0x9a, script: 0x7c, flags: 0x0}, + 50: {region: 0x52, script: 0x7d, flags: 0x2}, + 51: {region: 0xb8, script: 0xd2, flags: 0x0}, + 52: {region: 0xd7, script: 0x52, flags: 0x4}, + 53: {region: 0xe6, script: 0x5, flags: 0x0}, + 54: {region: 0x97, script: 0x20, flags: 0x2}, + 55: {region: 0x97, script: 0x47, flags: 0x2}, + 56: {region: 0x97, script: 0xc0, flags: 0x2}, + 57: {region: 0x103, script: 0x1e, flags: 0x0}, + 58: {region: 0xbb, script: 0x52, flags: 0x4}, + 59: {region: 0x102, script: 0x52, flags: 0x4}, + 60: {region: 0x104, script: 0x52, flags: 0x4}, + 61: {region: 0x129, script: 0x52, flags: 0x4}, + 62: {region: 0x122, script: 0x1e, flags: 0x0}, + 63: {region: 0xe6, script: 0x5, flags: 0x4}, + 64: {region: 0xe6, script: 0x5, flags: 0x2}, + 65: {region: 0x52, script: 0x5, flags: 0x0}, + 66: {region: 0xac, script: 0x1e, flags: 0x4}, + 67: {region: 0xc3, script: 0x1e, flags: 0x4}, + 68: {region: 0xac, script: 0x1e, flags: 0x2}, + 69: {region: 0x97, script: 0xe, flags: 0x0}, + 70: {region: 0xd9, script: 0x20, flags: 0x4}, + 71: {region: 0xd9, script: 0x20, flags: 0x2}, + 72: {region: 0x134, script: 0x52, flags: 0x0}, + 73: {region: 0x23, script: 0x5, flags: 0x4}, + 74: {region: 0x52, script: 0x1e, flags: 0x4}, + 75: {region: 0x23, script: 0x5, flags: 0x2}, + 76: {region: 0x8b, script: 0x35, flags: 0x0}, + 77: {region: 0x52, script: 0x34, flags: 0x4}, + 78: {region: 0x52, script: 0x34, flags: 0x2}, + 79: {region: 0x52, script: 0x34, flags: 0x0}, + 80: {region: 0x2e, script: 0x35, flags: 0x4}, + 81: {region: 0x3d, script: 0x35, flags: 0x4}, + 82: {region: 0x79, script: 0x35, flags: 0x4}, + 83: {region: 0x7c, script: 0x35, flags: 0x4}, + 84: {region: 0x8b, script: 0x35, flags: 0x4}, + 85: {region: 0x93, script: 0x35, flags: 0x4}, + 86: {region: 0xc4, script: 0x35, flags: 0x4}, + 87: {region: 0xce, script: 0x35, flags: 0x4}, + 88: {region: 0xe0, script: 0x35, flags: 0x4}, + 89: {region: 0xe3, script: 0x35, flags: 0x4}, + 90: {region: 0xe5, script: 0x35, flags: 0x4}, + 91: {region: 0x114, script: 0x35, flags: 0x4}, + 92: {region: 0x121, script: 0x35, flags: 0x4}, + 93: {region: 0x12c, script: 0x35, flags: 0x4}, + 94: {region: 0x132, script: 0x35, flags: 0x4}, + 95: {region: 0x13b, script: 0x35, flags: 0x4}, + 96: {region: 0x12c, script: 0x11, flags: 0x2}, + 97: {region: 0x12c, script: 0x30, flags: 0x2}, + 98: {region: 0x12c, script: 0x35, flags: 0x2}, +} + +type likelyLangScript struct { + lang uint16 + script uint8 + flags uint8 +} + +// likelyRegion is a lookup table, indexed by regionID, for the most likely +// languages and scripts given incomplete information. If more entries exist +// for a given regionID, lang and script are the index and size respectively +// of the list in likelyRegionList. +// TODO: exclude containers and user-definable regions from the list. +// Size: 1420 bytes, 355 elements +var likelyRegion = [355]likelyLangScript{ + 33: {lang: 0x61, script: 0x52, flags: 0x0}, + 34: {lang: 0x15, script: 0x5, flags: 0x0}, + 35: {lang: 0x0, script: 0x2, flags: 0x1}, + 38: {lang: 0x2, script: 0x2, flags: 0x1}, + 39: {lang: 0x4, script: 0x2, flags: 0x1}, + 41: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 42: {lang: 0x0, script: 0x52, flags: 0x0}, + 43: {lang: 0x9d, script: 0x52, flags: 0x0}, + 44: {lang: 0x22f, script: 0x52, flags: 0x0}, + 45: {lang: 0x85, script: 0x52, flags: 0x0}, + 47: {lang: 0x1bd, script: 0x52, flags: 0x0}, + 48: {lang: 0x247, script: 0x52, flags: 0x0}, + 49: {lang: 0x24, script: 0x52, flags: 0x0}, + 50: {lang: 0x6, script: 0x2, flags: 0x1}, + 52: {lang: 0x4b, script: 0xe, flags: 0x0}, + 53: {lang: 0x1bd, script: 0x52, flags: 0x0}, + 54: {lang: 0xaf, script: 0x52, flags: 0x0}, + 55: {lang: 0x38, script: 0x1e, flags: 0x0}, + 56: {lang: 0x15, script: 0x5, flags: 0x0}, + 57: {lang: 0x201, script: 0x52, flags: 0x0}, + 58: {lang: 0xaf, script: 0x52, flags: 0x0}, + 59: {lang: 0xaf, script: 0x52, flags: 0x0}, + 61: {lang: 0x19a, script: 0x52, flags: 0x0}, + 62: {lang: 0x9d, script: 0x52, flags: 0x0}, + 63: {lang: 0x1db, script: 0x52, flags: 0x0}, + 64: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 66: {lang: 0x8, script: 0x2, flags: 0x1}, + 68: {lang: 0x0, script: 0x52, flags: 0x0}, + 70: {lang: 0x2f, script: 0x1e, flags: 0x0}, + 72: {lang: 0x2b9, script: 0x37, flags: 0x2}, + 73: {lang: 0x19a, script: 0x5, flags: 0x2}, + 74: {lang: 0x248, script: 0x52, flags: 0x0}, + 75: {lang: 0xaf, script: 0x52, flags: 0x0}, + 76: {lang: 0xaf, script: 0x52, flags: 0x0}, + 77: {lang: 0x85, script: 0x52, flags: 0x0}, + 78: {lang: 0xaf, script: 0x52, flags: 0x0}, + 80: {lang: 0x9d, script: 0x52, flags: 0x0}, + 81: {lang: 0xaf, script: 0x52, flags: 0x0}, + 82: {lang: 0xa, script: 0x5, flags: 0x1}, + 83: {lang: 0x9d, script: 0x52, flags: 0x0}, + 84: {lang: 0x0, script: 0x52, flags: 0x0}, + 85: {lang: 0x9d, script: 0x52, flags: 0x0}, + 88: {lang: 0x9d, script: 0x52, flags: 0x0}, + 89: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 90: {lang: 0x1db, script: 0x52, flags: 0x0}, + 92: {lang: 0xf, script: 0x2, flags: 0x1}, + 93: {lang: 0x79, script: 0x52, flags: 0x0}, + 95: {lang: 0x85, script: 0x52, flags: 0x0}, + 97: {lang: 0x1, script: 0x52, flags: 0x0}, + 98: {lang: 0x80, script: 0x52, flags: 0x0}, + 100: {lang: 0x9d, script: 0x52, flags: 0x0}, + 102: {lang: 0x11, script: 0x2, flags: 0x1}, + 103: {lang: 0x9d, script: 0x52, flags: 0x0}, + 104: {lang: 0x9d, script: 0x52, flags: 0x0}, + 105: {lang: 0x9f, script: 0x52, flags: 0x0}, + 106: {lang: 0x15, script: 0x5, flags: 0x0}, + 107: {lang: 0x15, script: 0x5, flags: 0x0}, + 108: {lang: 0x261, script: 0x27, flags: 0x0}, + 109: {lang: 0x9d, script: 0x52, flags: 0x0}, + 110: {lang: 0x13, script: 0x2, flags: 0x1}, + 112: {lang: 0xa8, script: 0x52, flags: 0x0}, + 113: {lang: 0xe2, script: 0x20, flags: 0x2}, + 116: {lang: 0xad, script: 0x52, flags: 0x0}, + 118: {lang: 0xaf, script: 0x52, flags: 0x0}, + 120: {lang: 0xaf, script: 0x52, flags: 0x0}, + 121: {lang: 0x15, script: 0x2, flags: 0x1}, + 123: {lang: 0x17, script: 0x3, flags: 0x1}, + 124: {lang: 0xaf, script: 0x52, flags: 0x0}, + 126: {lang: 0xd, script: 0x52, flags: 0x0}, + 128: {lang: 0x131, script: 0x52, flags: 0x0}, + 130: {lang: 0xaf, script: 0x52, flags: 0x0}, + 131: {lang: 0xaf, script: 0x52, flags: 0x0}, + 132: {lang: 0x9d, script: 0x52, flags: 0x0}, + 133: {lang: 0x1a, script: 0x2, flags: 0x1}, + 134: {lang: 0x0, script: 0x52, flags: 0x0}, + 135: {lang: 0x9d, script: 0x52, flags: 0x0}, + 137: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 139: {lang: 0x2c4, script: 0x35, flags: 0x0}, + 140: {lang: 0x0, script: 0x52, flags: 0x0}, + 141: {lang: 0x9d, script: 0x52, flags: 0x0}, + 142: {lang: 0xee, script: 0x52, flags: 0x0}, + 143: {lang: 0xf1, script: 0x52, flags: 0x0}, + 144: {lang: 0xf2, script: 0x52, flags: 0x0}, + 146: {lang: 0x9d, script: 0x52, flags: 0x0}, + 147: {lang: 0x1c, script: 0x2, flags: 0x1}, + 149: {lang: 0xe0, script: 0x37, flags: 0x0}, + 151: {lang: 0x1e, script: 0x3, flags: 0x1}, + 153: {lang: 0x15, script: 0x5, flags: 0x0}, + 154: {lang: 0x21, script: 0x2, flags: 0x1}, + 155: {lang: 0x102, script: 0x52, flags: 0x0}, + 156: {lang: 0x103, script: 0x52, flags: 0x0}, + 159: {lang: 0x15, script: 0x5, flags: 0x0}, + 160: {lang: 0x107, script: 0x41, flags: 0x0}, + 162: {lang: 0x248, script: 0x52, flags: 0x0}, + 163: {lang: 0x14d, script: 0x1e, flags: 0x0}, + 164: {lang: 0x23, script: 0x3, flags: 0x1}, + 166: {lang: 0x26, script: 0x2, flags: 0x1}, + 168: {lang: 0x136, script: 0x4b, flags: 0x0}, + 169: {lang: 0x136, script: 0x4b, flags: 0x0}, + 170: {lang: 0x15, script: 0x5, flags: 0x0}, + 172: {lang: 0x207, script: 0x1e, flags: 0x0}, + 173: {lang: 0x28, script: 0x2, flags: 0x1}, + 174: {lang: 0x15, script: 0x5, flags: 0x0}, + 176: {lang: 0x85, script: 0x52, flags: 0x0}, + 177: {lang: 0x228, script: 0xc1, flags: 0x0}, + 179: {lang: 0x242, script: 0x52, flags: 0x0}, + 180: {lang: 0x169, script: 0x52, flags: 0x0}, + 181: {lang: 0xaf, script: 0x52, flags: 0x0}, + 182: {lang: 0x170, script: 0x52, flags: 0x0}, + 183: {lang: 0x15, script: 0x5, flags: 0x0}, + 184: {lang: 0x2a, script: 0x2, flags: 0x1}, + 185: {lang: 0xaf, script: 0x52, flags: 0x0}, + 186: {lang: 0x2c, script: 0x2, flags: 0x1}, + 187: {lang: 0x23b, script: 0x52, flags: 0x0}, + 188: {lang: 0xaf, script: 0x52, flags: 0x0}, + 189: {lang: 0x183, script: 0x52, flags: 0x0}, + 192: {lang: 0x2e, script: 0x2, flags: 0x1}, + 193: {lang: 0x49, script: 0x52, flags: 0x0}, + 194: {lang: 0x30, script: 0x2, flags: 0x1}, + 195: {lang: 0x32, script: 0x2, flags: 0x1}, + 196: {lang: 0x34, script: 0x2, flags: 0x1}, + 198: {lang: 0xaf, script: 0x52, flags: 0x0}, + 199: {lang: 0x36, script: 0x2, flags: 0x1}, + 201: {lang: 0x19b, script: 0x52, flags: 0x0}, + 202: {lang: 0x38, script: 0x3, flags: 0x1}, + 203: {lang: 0x90, script: 0xd4, flags: 0x0}, + 205: {lang: 0x9d, script: 0x52, flags: 0x0}, + 206: {lang: 0x19a, script: 0x52, flags: 0x0}, + 207: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 208: {lang: 0xa, script: 0x52, flags: 0x0}, + 209: {lang: 0xaf, script: 0x52, flags: 0x0}, + 210: {lang: 0xdc, script: 0x52, flags: 0x0}, + 212: {lang: 0xdc, script: 0x5, flags: 0x2}, + 214: {lang: 0x9d, script: 0x52, flags: 0x0}, + 215: {lang: 0x1bd, script: 0x52, flags: 0x0}, + 216: {lang: 0x1af, script: 0x52, flags: 0x0}, + 217: {lang: 0x1b4, script: 0x20, flags: 0x0}, + 223: {lang: 0x15, script: 0x5, flags: 0x0}, + 224: {lang: 0x9d, script: 0x52, flags: 0x0}, + 226: {lang: 0x9d, script: 0x52, flags: 0x0}, + 227: {lang: 0xaf, script: 0x52, flags: 0x0}, + 228: {lang: 0x26e, script: 0x52, flags: 0x0}, + 229: {lang: 0xaa, script: 0x52, flags: 0x0}, + 230: {lang: 0x3b, script: 0x3, flags: 0x1}, + 231: {lang: 0x3e, script: 0x2, flags: 0x1}, + 232: {lang: 0xaf, script: 0x52, flags: 0x0}, + 234: {lang: 0x9d, script: 0x52, flags: 0x0}, + 235: {lang: 0x15, script: 0x5, flags: 0x0}, + 236: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 238: {lang: 0x1dc, script: 0x52, flags: 0x0}, + 239: {lang: 0xca, script: 0x52, flags: 0x0}, + 241: {lang: 0x15, script: 0x5, flags: 0x0}, + 256: {lang: 0xaf, script: 0x52, flags: 0x0}, + 258: {lang: 0x40, script: 0x2, flags: 0x1}, + 259: {lang: 0x23b, script: 0x1e, flags: 0x0}, + 260: {lang: 0x42, script: 0x2, flags: 0x1}, + 261: {lang: 0x20a, script: 0x52, flags: 0x0}, + 262: {lang: 0x15, script: 0x5, flags: 0x0}, + 264: {lang: 0xaf, script: 0x52, flags: 0x0}, + 265: {lang: 0x15, script: 0x5, flags: 0x0}, + 266: {lang: 0x44, script: 0x2, flags: 0x1}, + 269: {lang: 0x22c, script: 0x52, flags: 0x0}, + 270: {lang: 0x1af, script: 0x52, flags: 0x0}, + 271: {lang: 0x46, script: 0x2, flags: 0x1}, + 273: {lang: 0x103, script: 0x52, flags: 0x0}, + 274: {lang: 0xaf, script: 0x52, flags: 0x0}, + 275: {lang: 0x238, script: 0x52, flags: 0x0}, + 276: {lang: 0x1bd, script: 0x52, flags: 0x0}, + 278: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 280: {lang: 0x9d, script: 0x52, flags: 0x0}, + 282: {lang: 0x48, script: 0x2, flags: 0x1}, + 286: {lang: 0xaf, script: 0x52, flags: 0x0}, + 287: {lang: 0xaf, script: 0x52, flags: 0x0}, + 288: {lang: 0xaf, script: 0x52, flags: 0x0}, + 289: {lang: 0x4a, script: 0x3, flags: 0x1}, + 290: {lang: 0x4d, script: 0x2, flags: 0x1}, + 291: {lang: 0x265, script: 0x52, flags: 0x0}, + 292: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 293: {lang: 0x264, script: 0x52, flags: 0x0}, + 294: {lang: 0x4f, script: 0x2, flags: 0x1}, + 295: {lang: 0x26c, script: 0x52, flags: 0x0}, + 297: {lang: 0x51, script: 0x4, flags: 0x1}, + 299: {lang: 0x27c, script: 0x52, flags: 0x0}, + 300: {lang: 0x55, script: 0x2, flags: 0x1}, + 301: {lang: 0x248, script: 0x52, flags: 0x0}, + 302: {lang: 0x57, script: 0x3, flags: 0x1}, + 303: {lang: 0x248, script: 0x52, flags: 0x0}, + 306: {lang: 0x2b9, script: 0x37, flags: 0x2}, + 307: {lang: 0x9d, script: 0x52, flags: 0x0}, + 308: {lang: 0x28d, script: 0x52, flags: 0x0}, + 309: {lang: 0x103, script: 0x52, flags: 0x0}, + 312: {lang: 0x9d, script: 0x52, flags: 0x0}, + 315: {lang: 0x292, script: 0x52, flags: 0x0}, + 316: {lang: 0x41, script: 0x52, flags: 0x0}, + 317: {lang: 0xaf, script: 0x52, flags: 0x0}, + 319: {lang: 0x22f, script: 0x52, flags: 0x0}, + 330: {lang: 0x5a, script: 0x2, flags: 0x1}, + 347: {lang: 0x15, script: 0x5, flags: 0x0}, + 348: {lang: 0x5c, script: 0x2, flags: 0x1}, + 353: {lang: 0x236, script: 0x52, flags: 0x0}, +} + +// likelyRegionList holds lists info associated with likelyRegion. +// Size: 376 bytes, 94 elements +var likelyRegionList = [94]likelyLangScript{ + 0: {lang: 0xa4, script: 0x5, flags: 0x0}, + 1: {lang: 0x264, script: 0x52, flags: 0x0}, + 2: {lang: 0x23a, script: 0x52, flags: 0x0}, + 3: {lang: 0x18c, script: 0x1e, flags: 0x0}, + 4: {lang: 0xf3, script: 0x8, flags: 0x0}, + 5: {lang: 0x145, script: 0x52, flags: 0x0}, + 6: {lang: 0x54, script: 0x52, flags: 0x0}, + 7: {lang: 0x23b, script: 0x1e, flags: 0x0}, + 8: {lang: 0x93, script: 0xd6, flags: 0x0}, + 9: {lang: 0x1b4, script: 0x20, flags: 0x0}, + 10: {lang: 0x2c4, script: 0x34, flags: 0x0}, + 11: {lang: 0x284, script: 0x5, flags: 0x0}, + 12: {lang: 0x2bd, script: 0x35, flags: 0x0}, + 13: {lang: 0x2be, script: 0x52, flags: 0x0}, + 14: {lang: 0x157, script: 0xd5, flags: 0x0}, + 15: {lang: 0x9a, script: 0x2d, flags: 0x0}, + 16: {lang: 0x26f, script: 0x52, flags: 0x0}, + 17: {lang: 0x15, script: 0x5, flags: 0x0}, + 18: {lang: 0xaf, script: 0x52, flags: 0x0}, + 19: {lang: 0x11, script: 0x27, flags: 0x0}, + 20: {lang: 0x9b, script: 0x52, flags: 0x0}, + 21: {lang: 0x141, script: 0x5, flags: 0x2}, + 22: {lang: 0x2b9, script: 0x37, flags: 0x2}, + 23: {lang: 0x111, script: 0x29, flags: 0x0}, + 24: {lang: 0x2, script: 0x1e, flags: 0x0}, + 25: {lang: 0x145, script: 0x52, flags: 0x0}, + 26: {lang: 0x9a, script: 0x2d, flags: 0x0}, + 27: {lang: 0x18c, script: 0x1e, flags: 0x0}, + 28: {lang: 0xf8, script: 0x52, flags: 0x0}, + 29: {lang: 0x19a, script: 0x5, flags: 0x0}, + 30: {lang: 0xe1, script: 0x20, flags: 0x0}, + 31: {lang: 0x28c, script: 0x5, flags: 0x0}, + 32: {lang: 0x129, script: 0x6b, flags: 0x0}, + 33: {lang: 0xa4, script: 0x5, flags: 0x0}, + 34: {lang: 0x264, script: 0x52, flags: 0x0}, + 35: {lang: 0x133, script: 0x46, flags: 0x0}, + 36: {lang: 0x6d, script: 0x5, flags: 0x0}, + 37: {lang: 0x11c, script: 0xd5, flags: 0x0}, + 38: {lang: 0x15, script: 0x5, flags: 0x0}, + 39: {lang: 0xaf, script: 0x52, flags: 0x0}, + 40: {lang: 0x165, script: 0x4f, flags: 0x0}, + 41: {lang: 0x11c, script: 0xd5, flags: 0x0}, + 42: {lang: 0x15, script: 0x5, flags: 0x0}, + 43: {lang: 0xaf, script: 0x52, flags: 0x0}, + 44: {lang: 0x203, script: 0x52, flags: 0x0}, + 45: {lang: 0x286, script: 0x1e, flags: 0x0}, + 46: {lang: 0x18c, script: 0x1e, flags: 0x0}, + 47: {lang: 0x23a, script: 0x52, flags: 0x0}, + 48: {lang: 0x1a5, script: 0x6b, flags: 0x0}, + 49: {lang: 0x114, script: 0x52, flags: 0x0}, + 50: {lang: 0x18f, script: 0x1e, flags: 0x0}, + 51: {lang: 0x12f, script: 0x5, flags: 0x0}, + 52: {lang: 0x2c4, script: 0x35, flags: 0x0}, + 53: {lang: 0x1ef, script: 0x52, flags: 0x0}, + 54: {lang: 0x15, script: 0x5, flags: 0x0}, + 55: {lang: 0xaf, script: 0x52, flags: 0x0}, + 56: {lang: 0x182, script: 0x52, flags: 0x0}, + 57: {lang: 0x28c, script: 0x5, flags: 0x0}, + 58: {lang: 0x40, script: 0x20, flags: 0x0}, + 59: {lang: 0x28c, script: 0x5, flags: 0x0}, + 60: {lang: 0x28c, script: 0x5, flags: 0x0}, + 61: {lang: 0x58, script: 0x20, flags: 0x0}, + 62: {lang: 0x1e7, script: 0x52, flags: 0x0}, + 63: {lang: 0x2f, script: 0x1e, flags: 0x0}, + 64: {lang: 0x203, script: 0x52, flags: 0x0}, + 65: {lang: 0x38, script: 0x1e, flags: 0x0}, + 66: {lang: 0x207, script: 0x1e, flags: 0x0}, + 67: {lang: 0x13f, script: 0x52, flags: 0x0}, + 68: {lang: 0x247, script: 0x52, flags: 0x0}, + 69: {lang: 0x2b9, script: 0x37, flags: 0x0}, + 70: {lang: 0x22a, script: 0x52, flags: 0x0}, + 71: {lang: 0x286, script: 0x1e, flags: 0x0}, + 72: {lang: 0x15, script: 0x5, flags: 0x0}, + 73: {lang: 0xaf, script: 0x52, flags: 0x0}, + 74: {lang: 0x25d, script: 0xd5, flags: 0x0}, + 75: {lang: 0x181, script: 0x5, flags: 0x0}, + 76: {lang: 0x191, script: 0x6b, flags: 0x0}, + 77: {lang: 0x25c, script: 0x1e, flags: 0x0}, + 78: {lang: 0xa4, script: 0x5, flags: 0x0}, + 79: {lang: 0x15, script: 0x5, flags: 0x0}, + 80: {lang: 0xaf, script: 0x52, flags: 0x0}, + 81: {lang: 0x26f, script: 0x52, flags: 0x0}, + 82: {lang: 0x24, script: 0x5, flags: 0x0}, + 83: {lang: 0x118, script: 0x1e, flags: 0x0}, + 84: {lang: 0x3b, script: 0x2d, flags: 0x0}, + 85: {lang: 0x2c4, script: 0x35, flags: 0x0}, + 86: {lang: 0x271, script: 0x52, flags: 0x0}, + 87: {lang: 0x286, script: 0x1e, flags: 0x0}, + 88: {lang: 0x2b9, script: 0x37, flags: 0x0}, + 89: {lang: 0x1e7, script: 0x52, flags: 0x0}, + 90: {lang: 0x23a, script: 0x52, flags: 0x0}, + 91: {lang: 0x23b, script: 0x1e, flags: 0x0}, + 92: {lang: 0xaf, script: 0x52, flags: 0x0}, + 93: {lang: 0x249, script: 0x5, flags: 0x0}, +} + +type likelyTag struct { + lang uint16 + region uint16 + script uint8 +} + +// Size: 192 bytes, 32 elements +var likelyRegionGroup = [32]likelyTag{ + 1: {lang: 0x9b, region: 0xd4, script: 0x52}, + 2: {lang: 0x9b, region: 0x132, script: 0x52}, + 3: {lang: 0x1ef, region: 0x40, script: 0x52}, + 4: {lang: 0x9b, region: 0x2e, script: 0x52}, + 5: {lang: 0x9b, region: 0xd4, script: 0x52}, + 6: {lang: 0x9d, region: 0xcd, script: 0x52}, + 7: {lang: 0x248, region: 0x12d, script: 0x52}, + 8: {lang: 0x15, region: 0x6a, script: 0x5}, + 9: {lang: 0x248, region: 0x4a, script: 0x52}, + 10: {lang: 0x9b, region: 0x15e, script: 0x52}, + 11: {lang: 0x9b, region: 0x132, script: 0x52}, + 12: {lang: 0x9b, region: 0x132, script: 0x52}, + 13: {lang: 0x9d, region: 0x58, script: 0x52}, + 14: {lang: 0x2c4, region: 0x52, script: 0x34}, + 15: {lang: 0xe1, region: 0x97, script: 0x20}, + 16: {lang: 0xf8, region: 0x93, script: 0x52}, + 17: {lang: 0x103, region: 0x9c, script: 0x52}, + 18: {lang: 0x9b, region: 0x2e, script: 0x52}, + 19: {lang: 0x9b, region: 0xe4, script: 0x52}, + 20: {lang: 0x9b, region: 0x88, script: 0x52}, + 21: {lang: 0x22f, region: 0x13f, script: 0x52}, + 22: {lang: 0x2c4, region: 0x52, script: 0x34}, + 23: {lang: 0x28d, region: 0x134, script: 0x52}, + 24: {lang: 0x15, region: 0x106, script: 0x5}, + 25: {lang: 0x207, region: 0x104, script: 0x1e}, + 26: {lang: 0x207, region: 0x104, script: 0x1e}, + 27: {lang: 0x9b, region: 0x79, script: 0x52}, + 28: {lang: 0x85, region: 0x5f, script: 0x52}, + 29: {lang: 0x9d, region: 0x1e, script: 0x52}, + 30: {lang: 0x9b, region: 0x98, script: 0x52}, + 31: {lang: 0x9b, region: 0x79, script: 0x52}, +} + +type mutualIntelligibility struct { + want uint16 + have uint16 + conf uint8 + oneway bool +} + +type scriptIntelligibility struct { + lang uint16 + want uint8 + have uint8 + conf uint8 +} + +// matchLang holds pairs of langIDs of base languages that are typically +// mutually intelligible. Each pair is associated with a confidence and +// whether the intelligibility goes one or both ways. +// Size: 708 bytes, 118 elements +var matchLang = [118]mutualIntelligibility{ + 0: {want: 0x1c1, have: 0x1af, conf: 0x2, oneway: false}, + 1: {want: 0x145, have: 0x6f, conf: 0x2, oneway: false}, + 2: {want: 0xee, have: 0x54, conf: 0x2, oneway: false}, + 3: {want: 0x225, have: 0x54, conf: 0x2, oneway: false}, + 4: {want: 0x23b, have: 0x54, conf: 0x2, oneway: false}, + 5: {want: 0x225, have: 0xee, conf: 0x2, oneway: false}, + 6: {want: 0x23b, have: 0xee, conf: 0x2, oneway: false}, + 7: {want: 0x225, have: 0x23b, conf: 0x2, oneway: false}, + 8: {want: 0x241, have: 0x1, conf: 0x2, oneway: false}, + 9: {want: 0xd2, have: 0x85, conf: 0x2, oneway: true}, + 10: {want: 0x154, have: 0x85, conf: 0x2, oneway: true}, + 11: {want: 0x80, have: 0x1c1, conf: 0x2, oneway: false}, + 12: {want: 0x80, have: 0x1af, conf: 0x2, oneway: false}, + 13: {want: 0x6f, have: 0x145, conf: 0x2, oneway: false}, + 14: {want: 0x2, have: 0x207, conf: 0x2, oneway: true}, + 15: {want: 0x5, have: 0x9b, conf: 0x2, oneway: true}, + 16: {want: 0xa, have: 0x1bd, conf: 0x2, oneway: true}, + 17: {want: 0xd, have: 0x9b, conf: 0x2, oneway: true}, + 18: {want: 0x23, have: 0x9d, conf: 0x2, oneway: true}, + 19: {want: 0x24, have: 0x207, conf: 0x2, oneway: true}, + 20: {want: 0x2f, have: 0x207, conf: 0x2, oneway: true}, + 21: {want: 0x31, have: 0x9b, conf: 0x2, oneway: true}, + 22: {want: 0x3c, have: 0xe1, conf: 0x2, oneway: true}, + 23: {want: 0x4b, have: 0x9b, conf: 0x2, oneway: true}, + 24: {want: 0x50, have: 0xaf, conf: 0x2, oneway: true}, + 25: {want: 0x65, have: 0xaa, conf: 0x2, oneway: true}, + 26: {want: 0x6c, have: 0x9b, conf: 0x2, oneway: true}, + 27: {want: 0x6f, have: 0x15, conf: 0x2, oneway: true}, + 28: {want: 0x70, have: 0xaf, conf: 0x2, oneway: true}, + 29: {want: 0x78, have: 0xaf, conf: 0x2, oneway: true}, + 30: {want: 0x7f, have: 0x9b, conf: 0x2, oneway: true}, + 31: {want: 0x95, have: 0x9b, conf: 0x2, oneway: true}, + 32: {want: 0x9c, have: 0x9b, conf: 0x2, oneway: true}, + 33: {want: 0x9f, have: 0xa8, conf: 0x2, oneway: true}, + 34: {want: 0xa1, have: 0x9d, conf: 0x2, oneway: true}, + 35: {want: 0xad, have: 0x80, conf: 0x2, oneway: true}, + 36: {want: 0xb9, have: 0x1bd, conf: 0x2, oneway: true}, + 37: {want: 0xba, have: 0x9b, conf: 0x2, oneway: true}, + 38: {want: 0xbb, have: 0x9b, conf: 0x2, oneway: true}, + 39: {want: 0xc2, have: 0x9b, conf: 0x2, oneway: true}, + 40: {want: 0xc8, have: 0x9d, conf: 0x2, oneway: true}, + 41: {want: 0xca, have: 0x9d, conf: 0x2, oneway: true}, + 42: {want: 0xd3, have: 0xe1, conf: 0x2, oneway: true}, + 43: {want: 0xdc, have: 0x9b, conf: 0x2, oneway: true}, + 44: {want: 0xde, have: 0x9b, conf: 0x2, oneway: true}, + 45: {want: 0xf1, have: 0xaf, conf: 0x2, oneway: true}, + 46: {want: 0xf3, have: 0x207, conf: 0x2, oneway: true}, + 47: {want: 0xf5, have: 0x9b, conf: 0x2, oneway: true}, + 48: {want: 0xfa, have: 0x9b, conf: 0x2, oneway: true}, + 49: {want: 0x102, have: 0x9b, conf: 0x2, oneway: true}, + 50: {want: 0x10f, have: 0xf8, conf: 0x2, oneway: true}, + 51: {want: 0x111, have: 0x9b, conf: 0x2, oneway: true}, + 52: {want: 0x122, have: 0xaf, conf: 0x2, oneway: true}, + 53: {want: 0x12f, have: 0x207, conf: 0x2, oneway: true}, + 54: {want: 0x133, have: 0x9b, conf: 0x2, oneway: true}, + 55: {want: 0x135, have: 0x9b, conf: 0x2, oneway: true}, + 56: {want: 0x13d, have: 0x9b, conf: 0x2, oneway: true}, + 57: {want: 0x145, have: 0x26f, conf: 0x2, oneway: true}, + 58: {want: 0x14d, have: 0x207, conf: 0x2, oneway: true}, + 59: {want: 0x14e, have: 0x103, conf: 0x2, oneway: true}, + 60: {want: 0x15a, have: 0x9b, conf: 0x2, oneway: true}, + 61: {want: 0x164, have: 0xaf, conf: 0x2, oneway: true}, + 62: {want: 0x165, have: 0x9b, conf: 0x2, oneway: true}, + 63: {want: 0x167, have: 0x9b, conf: 0x2, oneway: true}, + 64: {want: 0x16c, have: 0xaf, conf: 0x2, oneway: true}, + 65: {want: 0x182, have: 0x9b, conf: 0x2, oneway: true}, + 66: {want: 0x183, have: 0xaf, conf: 0x2, oneway: true}, + 67: {want: 0x189, have: 0x9b, conf: 0x2, oneway: true}, + 68: {want: 0x18c, have: 0x38, conf: 0x2, oneway: true}, + 69: {want: 0x18d, have: 0x9b, conf: 0x2, oneway: true}, + 70: {want: 0x18f, have: 0x207, conf: 0x2, oneway: true}, + 71: {want: 0x196, have: 0xe1, conf: 0x2, oneway: true}, + 72: {want: 0x19a, have: 0xf8, conf: 0x2, oneway: true}, + 73: {want: 0x19b, have: 0x9b, conf: 0x2, oneway: true}, + 74: {want: 0x1a5, have: 0x9b, conf: 0x2, oneway: true}, + 75: {want: 0x1b4, have: 0x9b, conf: 0x2, oneway: true}, + 76: {want: 0x1bf, have: 0x1af, conf: 0x2, oneway: false}, + 77: {want: 0x1bf, have: 0x1c1, conf: 0x2, oneway: true}, + 78: {want: 0x1c8, have: 0x9b, conf: 0x2, oneway: true}, + 79: {want: 0x1cc, have: 0x9b, conf: 0x2, oneway: true}, + 80: {want: 0x1ce, have: 0x9b, conf: 0x2, oneway: true}, + 81: {want: 0x1d0, have: 0xaf, conf: 0x2, oneway: true}, + 82: {want: 0x1d2, have: 0x9b, conf: 0x2, oneway: true}, + 83: {want: 0x1d3, have: 0x9b, conf: 0x2, oneway: true}, + 84: {want: 0x1d7, have: 0x9b, conf: 0x2, oneway: true}, + 85: {want: 0x1de, have: 0x9b, conf: 0x2, oneway: true}, + 86: {want: 0x1ee, have: 0x9b, conf: 0x2, oneway: true}, + 87: {want: 0x1f1, have: 0x9d, conf: 0x2, oneway: true}, + 88: {want: 0x1fc, have: 0x85, conf: 0x2, oneway: true}, + 89: {want: 0x201, have: 0x9b, conf: 0x2, oneway: true}, + 90: {want: 0x20a, have: 0xaf, conf: 0x2, oneway: true}, + 91: {want: 0x20d, have: 0xe1, conf: 0x2, oneway: true}, + 92: {want: 0x21a, have: 0x9b, conf: 0x2, oneway: true}, + 93: {want: 0x228, have: 0x9b, conf: 0x2, oneway: true}, + 94: {want: 0x236, have: 0x9b, conf: 0x2, oneway: true}, + 95: {want: 0x238, have: 0x9b, conf: 0x2, oneway: true}, + 96: {want: 0x23a, have: 0x9b, conf: 0x2, oneway: true}, + 97: {want: 0x242, have: 0x9b, conf: 0x2, oneway: true}, + 98: {want: 0x244, have: 0xf8, conf: 0x2, oneway: true}, + 99: {want: 0x248, have: 0x9b, conf: 0x2, oneway: true}, + 100: {want: 0x251, have: 0x9b, conf: 0x2, oneway: true}, + 101: {want: 0x258, have: 0x9b, conf: 0x2, oneway: true}, + 102: {want: 0x25c, have: 0x207, conf: 0x2, oneway: true}, + 103: {want: 0x261, have: 0x9b, conf: 0x2, oneway: true}, + 104: {want: 0x264, have: 0x207, conf: 0x2, oneway: true}, + 105: {want: 0x361a, have: 0x9b, conf: 0x2, oneway: true}, + 106: {want: 0x26b, have: 0x9b, conf: 0x2, oneway: true}, + 107: {want: 0x26c, have: 0x9b, conf: 0x2, oneway: true}, + 108: {want: 0x277, have: 0x207, conf: 0x2, oneway: true}, + 109: {want: 0x27b, have: 0x9b, conf: 0x2, oneway: true}, + 110: {want: 0x284, have: 0x2c4, conf: 0x2, oneway: true}, + 111: {want: 0x28c, have: 0x9b, conf: 0x2, oneway: true}, + 112: {want: 0x28d, have: 0x207, conf: 0x2, oneway: true}, + 113: {want: 0x2a4, have: 0xaf, conf: 0x2, oneway: true}, + 114: {want: 0x2a9, have: 0x9b, conf: 0x2, oneway: true}, + 115: {want: 0x2b9, have: 0x9b, conf: 0x2, oneway: true}, + 116: {want: 0x2ba, have: 0x9b, conf: 0x2, oneway: true}, + 117: {want: 0x2c6, have: 0x9b, conf: 0x2, oneway: true}, +} + +// matchScript holds pairs of scriptIDs where readers of one script +// can typically also read the other. Each is associated with a confidence. +// Size: 24 bytes, 4 elements +var matchScript = [4]scriptIntelligibility{ + 0: {lang: 0x23b, want: 0x52, have: 0x1e, conf: 0x2}, + 1: {lang: 0x23b, want: 0x1e, have: 0x52, conf: 0x2}, + 2: {lang: 0x0, want: 0x34, have: 0x35, conf: 0x1}, + 3: {lang: 0x0, want: 0x35, have: 0x34, conf: 0x1}, +} + +// Size: 128 bytes, 32 elements +var regionContainment = [32]uint32{ + 0xffffffff, 0x000007a2, 0x00003044, 0x00000008, + 0x403c0010, 0x00000020, 0x00000040, 0x00000080, + 0x00000100, 0x00000200, 0x00000400, 0x2000384c, + 0x00001000, 0x00002000, 0x00004000, 0x00008000, + 0x00010000, 0x00020000, 0x00040000, 0x00080000, + 0x00100000, 0x00200000, 0x01c1c000, 0x00800000, + 0x01000000, 0x1e020000, 0x04000000, 0x08000000, + 0x10000000, 0x20002048, 0x40000000, 0x80000000, +} + +// regionInclusion maps region identifiers to sets of regions in regionInclusionBits, +// where each set holds all groupings that are directly connected in a region +// containment graph. +// Size: 355 bytes, 355 elements +var regionInclusion = [355]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x25, 0x22, 0x23, + 0x25, 0x26, 0x21, 0x27, 0x28, 0x29, 0x2a, 0x25, + 0x2b, 0x23, 0x22, 0x25, 0x24, 0x29, 0x2c, 0x2d, + 0x23, 0x2e, 0x2c, 0x25, 0x2f, 0x30, 0x27, 0x25, + // Entry 40 - 7F + 0x27, 0x25, 0x24, 0x30, 0x21, 0x31, 0x32, 0x33, + 0x2f, 0x21, 0x26, 0x26, 0x26, 0x34, 0x2c, 0x28, + 0x27, 0x26, 0x35, 0x27, 0x21, 0x33, 0x22, 0x20, + 0x25, 0x2c, 0x25, 0x21, 0x36, 0x2d, 0x34, 0x29, + 0x21, 0x2e, 0x37, 0x25, 0x25, 0x20, 0x38, 0x38, + 0x27, 0x37, 0x38, 0x38, 0x2e, 0x39, 0x2e, 0x1f, + 0x37, 0x3a, 0x27, 0x3b, 0x2b, 0x20, 0x29, 0x34, + 0x26, 0x37, 0x25, 0x23, 0x27, 0x2b, 0x2c, 0x22, + // Entry 80 - BF + 0x2f, 0x2c, 0x2c, 0x25, 0x26, 0x39, 0x21, 0x33, + 0x3b, 0x2c, 0x27, 0x35, 0x21, 0x33, 0x39, 0x25, + 0x2d, 0x20, 0x38, 0x30, 0x37, 0x23, 0x2b, 0x24, + 0x21, 0x23, 0x24, 0x2b, 0x39, 0x2b, 0x25, 0x23, + 0x35, 0x20, 0x2e, 0x3c, 0x30, 0x3b, 0x2e, 0x25, + 0x35, 0x35, 0x23, 0x25, 0x3c, 0x30, 0x23, 0x25, + 0x34, 0x24, 0x2c, 0x31, 0x37, 0x29, 0x37, 0x38, + 0x38, 0x34, 0x32, 0x22, 0x25, 0x2e, 0x3b, 0x20, + // Entry C0 - FF + 0x22, 0x2c, 0x30, 0x35, 0x35, 0x3b, 0x25, 0x2c, + 0x25, 0x39, 0x2e, 0x24, 0x2e, 0x33, 0x30, 0x2e, + 0x31, 0x3a, 0x2c, 0x2a, 0x2c, 0x20, 0x33, 0x29, + 0x2b, 0x24, 0x20, 0x3b, 0x23, 0x28, 0x2a, 0x23, + 0x33, 0x20, 0x27, 0x28, 0x3a, 0x30, 0x24, 0x2d, + 0x2f, 0x28, 0x25, 0x23, 0x39, 0x20, 0x3b, 0x27, + 0x20, 0x23, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + // Entry 100 - 13F + 0x2e, 0x20, 0x2d, 0x22, 0x32, 0x2e, 0x23, 0x3a, + 0x2e, 0x38, 0x37, 0x30, 0x2c, 0x39, 0x2b, 0x2d, + 0x2c, 0x22, 0x2c, 0x2e, 0x27, 0x2e, 0x26, 0x32, + 0x33, 0x25, 0x23, 0x31, 0x21, 0x25, 0x26, 0x21, + 0x2c, 0x30, 0x3c, 0x28, 0x30, 0x3c, 0x38, 0x28, + 0x30, 0x23, 0x25, 0x28, 0x35, 0x2e, 0x32, 0x2e, + 0x20, 0x21, 0x2f, 0x27, 0x3c, 0x22, 0x25, 0x20, + 0x27, 0x25, 0x25, 0x30, 0x3a, 0x28, 0x20, 0x28, + // Entry 140 - 17F + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x23, 0x23, 0x2e, 0x22, 0x31, 0x2e, + 0x26, 0x2e, 0x20, +} + +// regionInclusionBits is an array of bit vectors where every vector represents +// a set of region groupings. These sets are used to compute the distance +// between two regions for the purpose of language matching. +// Size: 288 bytes, 72 elements +var regionInclusionBits = [72]uint32{ + // Entry 0 - 1F + 0x82400813, 0x000007a3, 0x00003844, 0x20000808, + 0x403c0011, 0x00000022, 0x20000844, 0x00000082, + 0x00000102, 0x00000202, 0x00000402, 0x2000384d, + 0x00001804, 0x20002804, 0x00404000, 0x00408000, + 0x00410000, 0x02020000, 0x00040010, 0x00080010, + 0x00100010, 0x00200010, 0x01c1c001, 0x00c00000, + 0x01400000, 0x1e020001, 0x06000000, 0x0a000000, + 0x12000000, 0x20002848, 0x40000010, 0x80000001, + // Entry 20 - 3F + 0x00000001, 0x40000000, 0x00020000, 0x01000000, + 0x00008000, 0x00002000, 0x00000200, 0x00000008, + 0x00200000, 0x90000000, 0x00040000, 0x08000000, + 0x00000020, 0x84000000, 0x00000080, 0x00001000, + 0x00010000, 0x00000400, 0x04000000, 0x00000040, + 0x10000000, 0x00004000, 0x81000000, 0x88000000, + 0x00000100, 0x80020000, 0x00080000, 0x00100000, + 0x00800000, 0xffffffff, 0x82400fb3, 0xc27c0813, + // Entry 40 - 5F + 0xa240385f, 0x83c1c813, 0x9e420813, 0x92000001, + 0x86000001, 0x81400001, 0x8a000001, 0x82020001, +} + +// regionInclusionNext marks, for each entry in regionInclusionBits, the set of +// all groups that are reachable from the groups set in the respective entry. +// Size: 72 bytes, 72 elements +var regionInclusionNext = [72]uint8{ + // Entry 0 - 3F + 0x3d, 0x3e, 0x0b, 0x0b, 0x3f, 0x01, 0x0b, 0x01, + 0x01, 0x01, 0x01, 0x40, 0x0b, 0x0b, 0x16, 0x16, + 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x41, 0x16, + 0x16, 0x42, 0x19, 0x19, 0x19, 0x0b, 0x04, 0x00, + 0x00, 0x1e, 0x11, 0x18, 0x0f, 0x0d, 0x09, 0x03, + 0x15, 0x43, 0x12, 0x1b, 0x05, 0x44, 0x07, 0x0c, + 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x45, 0x46, + 0x08, 0x47, 0x13, 0x14, 0x17, 0x3d, 0x3d, 0x3d, + // Entry 40 - 7F + 0x3d, 0x3d, 0x3d, 0x42, 0x42, 0x41, 0x42, 0x42, +} + +type parentRel struct { + lang uint16 + script uint8 + maxScript uint8 + toRegion uint16 + fromRegion []uint16 +} + +// Size: 412 bytes, 5 elements +var parents = [5]parentRel{ + 0: {lang: 0x9b, script: 0x0, maxScript: 0x52, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x71, 0x72, 0x73, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x81, 0x8a, 0x8b, 0x94, 0x95, 0x96, 0x97, 0x98, 0x9d, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc4, 0xc8, 0xc9, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xde, 0xe4, 0xe5, 0xe6, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x10b, 0x10c, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x139, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}}, + 1: {lang: 0x9b, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x70, 0xd7, 0x10a, 0x10d}}, + 2: {lang: 0x9d, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}}, + 3: {lang: 0x1ef, script: 0x0, maxScript: 0x52, toRegion: 0xec, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x84, 0x89, 0xb5, 0xc4, 0xcf, 0x116, 0x124}}, + 4: {lang: 0x2c4, script: 0x35, maxScript: 0x35, toRegion: 0x8b, fromRegion: []uint16{0xc4}}, +} + +// Total table size 20315 bytes (19KiB); checksum: C16EF251 diff --git a/vendor/golang.org/x/text/language/tags.go b/vendor/golang.org/x/text/language/tags.go new file mode 100644 index 0000000000..de30155a26 --- /dev/null +++ b/vendor/golang.org/x/text/language/tags.go @@ -0,0 +1,143 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// TODO: Various sets of commonly use tags and regions. + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func MustParse(s string) Tag { + t, err := Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func (c CanonType) MustParse(s string) Tag { + t, err := c.Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. +// It simplifies safe initialization of Base values. +func MustParseBase(s string) Base { + b, err := ParseBase(s) + if err != nil { + panic(err) + } + return b +} + +// MustParseScript is like ParseScript, but panics if the given script cannot be +// parsed. It simplifies safe initialization of Script values. +func MustParseScript(s string) Script { + scr, err := ParseScript(s) + if err != nil { + panic(err) + } + return scr +} + +// MustParseRegion is like ParseRegion, but panics if the given region cannot be +// parsed. It simplifies safe initialization of Region values. +func MustParseRegion(s string) Region { + r, err := ParseRegion(s) + if err != nil { + panic(err) + } + return r +} + +var ( + und = Tag{} + + Und Tag = Tag{} + + Afrikaans Tag = Tag{lang: _af} // af + Amharic Tag = Tag{lang: _am} // am + Arabic Tag = Tag{lang: _ar} // ar + ModernStandardArabic Tag = Tag{lang: _ar, region: _001} // ar-001 + Azerbaijani Tag = Tag{lang: _az} // az + Bulgarian Tag = Tag{lang: _bg} // bg + Bengali Tag = Tag{lang: _bn} // bn + Catalan Tag = Tag{lang: _ca} // ca + Czech Tag = Tag{lang: _cs} // cs + Danish Tag = Tag{lang: _da} // da + German Tag = Tag{lang: _de} // de + Greek Tag = Tag{lang: _el} // el + English Tag = Tag{lang: _en} // en + AmericanEnglish Tag = Tag{lang: _en, region: _US} // en-US + BritishEnglish Tag = Tag{lang: _en, region: _GB} // en-GB + Spanish Tag = Tag{lang: _es} // es + EuropeanSpanish Tag = Tag{lang: _es, region: _ES} // es-ES + LatinAmericanSpanish Tag = Tag{lang: _es, region: _419} // es-419 + Estonian Tag = Tag{lang: _et} // et + Persian Tag = Tag{lang: _fa} // fa + Finnish Tag = Tag{lang: _fi} // fi + Filipino Tag = Tag{lang: _fil} // fil + French Tag = Tag{lang: _fr} // fr + CanadianFrench Tag = Tag{lang: _fr, region: _CA} // fr-CA + Gujarati Tag = Tag{lang: _gu} // gu + Hebrew Tag = Tag{lang: _he} // he + Hindi Tag = Tag{lang: _hi} // hi + Croatian Tag = Tag{lang: _hr} // hr + Hungarian Tag = Tag{lang: _hu} // hu + Armenian Tag = Tag{lang: _hy} // hy + Indonesian Tag = Tag{lang: _id} // id + Icelandic Tag = Tag{lang: _is} // is + Italian Tag = Tag{lang: _it} // it + Japanese Tag = Tag{lang: _ja} // ja + Georgian Tag = Tag{lang: _ka} // ka + Kazakh Tag = Tag{lang: _kk} // kk + Khmer Tag = Tag{lang: _km} // km + Kannada Tag = Tag{lang: _kn} // kn + Korean Tag = Tag{lang: _ko} // ko + Kirghiz Tag = Tag{lang: _ky} // ky + Lao Tag = Tag{lang: _lo} // lo + Lithuanian Tag = Tag{lang: _lt} // lt + Latvian Tag = Tag{lang: _lv} // lv + Macedonian Tag = Tag{lang: _mk} // mk + Malayalam Tag = Tag{lang: _ml} // ml + Mongolian Tag = Tag{lang: _mn} // mn + Marathi Tag = Tag{lang: _mr} // mr + Malay Tag = Tag{lang: _ms} // ms + Burmese Tag = Tag{lang: _my} // my + Nepali Tag = Tag{lang: _ne} // ne + Dutch Tag = Tag{lang: _nl} // nl + Norwegian Tag = Tag{lang: _no} // no + Punjabi Tag = Tag{lang: _pa} // pa + Polish Tag = Tag{lang: _pl} // pl + Portuguese Tag = Tag{lang: _pt} // pt + BrazilianPortuguese Tag = Tag{lang: _pt, region: _BR} // pt-BR + EuropeanPortuguese Tag = Tag{lang: _pt, region: _PT} // pt-PT + Romanian Tag = Tag{lang: _ro} // ro + Russian Tag = Tag{lang: _ru} // ru + Sinhala Tag = Tag{lang: _si} // si + Slovak Tag = Tag{lang: _sk} // sk + Slovenian Tag = Tag{lang: _sl} // sl + Albanian Tag = Tag{lang: _sq} // sq + Serbian Tag = Tag{lang: _sr} // sr + SerbianLatin Tag = Tag{lang: _sr, script: _Latn} // sr-Latn + Swedish Tag = Tag{lang: _sv} // sv + Swahili Tag = Tag{lang: _sw} // sw + Tamil Tag = Tag{lang: _ta} // ta + Telugu Tag = Tag{lang: _te} // te + Thai Tag = Tag{lang: _th} // th + Turkish Tag = Tag{lang: _tr} // tr + Ukrainian Tag = Tag{lang: _uk} // uk + Urdu Tag = Tag{lang: _ur} // ur + Uzbek Tag = Tag{lang: _uz} // uz + Vietnamese Tag = Tag{lang: _vi} // vi + Chinese Tag = Tag{lang: _zh} // zh + SimplifiedChinese Tag = Tag{lang: _zh, script: _Hans} // zh-Hans + TraditionalChinese Tag = Tag{lang: _zh, script: _Hant} // zh-Hant + Zulu Tag = Tag{lang: _zu} // zu +) diff --git a/vendor/golang.org/x/text/runes/cond.go b/vendor/golang.org/x/text/runes/cond.go new file mode 100644 index 0000000000..ae7a921585 --- /dev/null +++ b/vendor/golang.org/x/text/runes/cond.go @@ -0,0 +1,126 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runes + +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is. +// This is done for various reasons: +// - To retain the semantics of the Nop transformer: if input is passed to a Nop +// one would expect it to be unchanged. +// - It would be very expensive to pass a converted RuneError to a transformer: +// a transformer might need more source bytes after RuneError, meaning that +// the only way to pass it safely is to create a new buffer and manage the +// intermingling of RuneErrors and normal input. +// - Many transformers leave ill-formed UTF-8 as is, so this is not +// inconsistent. Generally ill-formed UTF-8 is only replaced if it is a +// logical consequence of the operation (as for Map) or if it otherwise would +// pose security concerns (as for Remove). +// - An alternative would be to return an error on ill-formed UTF-8, but this +// would be inconsistent with other operations. + +// If returns a transformer that applies tIn to consecutive runes for which +// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset +// is called on tIn and tNotIn at the start of each run. A Nop transformer will +// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated +// to RuneError to determine which transformer to apply, but is passed as is to +// the respective transformer. +func If(s Set, tIn, tNotIn transform.Transformer) Transformer { + if tIn == nil && tNotIn == nil { + return Transformer{transform.Nop} + } + if tIn == nil { + tIn = transform.Nop + } + if tNotIn == nil { + tNotIn = transform.Nop + } + a := &cond{ + tIn: tIn, + tNotIn: tNotIn, + f: s.Contains, + } + a.Reset() + return Transformer{a} +} + +type cond struct { + tIn, tNotIn transform.Transformer + f func(rune) bool + check func(rune) bool // current check to perform + t transform.Transformer // current transformer to use +} + +// Reset implements transform.Transformer. +func (t *cond) Reset() { + t.check = t.is + t.t = t.tIn + t.t.Reset() // notIn will be reset on first usage. +} + +func (t *cond) is(r rune) bool { + if t.f(r) { + return true + } + t.check = t.isNot + t.t = t.tNotIn + t.tNotIn.Reset() + return false +} + +func (t *cond) isNot(r rune) bool { + if !t.f(r) { + return true + } + t.check = t.is + t.t = t.tIn + t.tIn.Reset() + return false +} + +func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + p := 0 + for nSrc < len(src) && err == nil { + // Don't process too much at a time, as the work might be wasted if the + // destination buffer isn't large enough to hold the result or a + // transform returns an error early. + const maxChunk = 4096 + max := len(src) + if n := nSrc + maxChunk; n < len(src) { + max = n + } + atEnd := false + size := 0 + current := t.t + for ; p < max; p += size { + var r rune + r, size = utf8.DecodeRune(src[p:]) + if r == utf8.RuneError && size == 1 { + if !atEOF && !utf8.FullRune(src[p:]) { + err = transform.ErrShortSrc + break + } + } + if !t.check(r) { + // The next rune will be the start of a new run. + atEnd = true + break + } + } + nDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src))) + nDst += nDst2 + nSrc += nSrc2 + if err2 != nil { + return nDst, nSrc, err2 + } + // At this point either err != nil or t.check will pass for the rune at p. + p = nSrc + size + } + return nDst, nSrc, err +} diff --git a/vendor/golang.org/x/text/runes/runes.go b/vendor/golang.org/x/text/runes/runes.go new file mode 100644 index 0000000000..291de656b2 --- /dev/null +++ b/vendor/golang.org/x/text/runes/runes.go @@ -0,0 +1,278 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package runes provide transforms for UTF-8 encoded text. +package runes + +import ( + "unicode" + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// A Set is a collection of runes. +type Set interface { + // Contains returns true if r is contained in the set. + Contains(r rune) bool +} + +type setFunc func(rune) bool + +func (s setFunc) Contains(r rune) bool { + return s(r) +} + +// Note: using funcs here instead of wrapping types result in cleaner +// documentation and a smaller API. + +// In creates a Set with a Contains method that returns true for all runes in +// the given RangeTable. +func In(rt *unicode.RangeTable) Set { + return setFunc(func(r rune) bool { return unicode.Is(rt, r) }) +} + +// In creates a Set with a Contains method that returns true for all runes not +// in the given RangeTable. +func NotIn(rt *unicode.RangeTable) Set { + return setFunc(func(r rune) bool { return !unicode.Is(rt, r) }) +} + +// Predicate creates a Set with a Contains method that returns f(r). +func Predicate(f func(rune) bool) Set { + return setFunc(f) +} + +// Transformer implements the transform.Transformer interface. +type Transformer struct { + transform.Transformer +} + +// Bytes returns a new byte slice with the result of converting b using t. It +// calls Reset on t. It returns nil if any error was found. This can only happen +// if an error-producing Transformer is passed to If. +func (t Transformer) Bytes(b []byte) []byte { + b, _, err := transform.Bytes(t, b) + if err != nil { + return nil + } + return b +} + +// String returns a string with the result of converting s using t. It calls +// Reset on t. It returns the empty string if any error was found. This can only +// happen if an error-producing Transformer is passed to If. +func (t Transformer) String(s string) string { + s, _, err := transform.String(t, s) + if err != nil { + return "" + } + return s +} + +// TODO: +// - Copy: copying strings and bytes in whole-rune units. +// - Validation (maybe) +// - Well-formed-ness (maybe) + +const runeErrorString = string(utf8.RuneError) + +// Remove returns a Transformer that removes runes r for which s.Contains(r). +// Illegal input bytes are replaced by RuneError before being passed to f. +func Remove(s Set) Transformer { + if f, ok := s.(setFunc); ok { + // This little trick cuts the running time of BenchmarkRemove for sets + // created by Predicate roughly in half. + // TODO: special-case RangeTables as well. + return Transformer{remove(f)} + } + return Transformer{remove(s.Contains)} +} + +// TODO: remove transform.RemoveFunc. + +type remove func(r rune) bool + +func (remove) Reset() {} + +// Transform implements transform.Transformer. +func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for r, size := rune(0), 0; nSrc < len(src); { + if r = rune(src[nSrc]); r < utf8.RuneSelf { + size = 1 + } else { + r, size = utf8.DecodeRune(src[nSrc:]) + + if size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + // We replace illegal bytes with RuneError. Not doing so might + // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. + // The resulting byte sequence may subsequently contain runes + // for which t(r) is true that were passed unnoticed. + if !t(utf8.RuneError) { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + } + nSrc++ + continue + } + } + + if t(r) { + nSrc += size + continue + } + if nDst+size > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < size; i++ { + dst[nDst] = src[nSrc] + nDst++ + nSrc++ + } + } + return +} + +// Map returns a Transformer that maps the runes in the input using the given +// mapping. Illegal bytes in the input are converted to utf8.RuneError before +// being passed to the mapping func. +func Map(mapping func(rune) rune) Transformer { + return Transformer{mapper(mapping)} +} + +type mapper func(rune) rune + +func (mapper) Reset() {} + +// Transform implements transform.Transformer. +func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + var replacement rune + var b [utf8.UTFMax]byte + + for r, size := rune(0), 0; nSrc < len(src); { + if r = rune(src[nSrc]); r < utf8.RuneSelf { + if replacement = t(r); replacement < utf8.RuneSelf { + if nDst == len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = byte(replacement) + nDst++ + nSrc++ + continue + } + size = 1 + } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + + if replacement = t(utf8.RuneError); replacement == utf8.RuneError { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + nSrc++ + continue + } + } else if replacement = t(r); replacement == r { + if nDst+size > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < size; i++ { + dst[nDst] = src[nSrc] + nDst++ + nSrc++ + } + continue + } + + n := utf8.EncodeRune(b[:], replacement) + + if nDst+n > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < n; i++ { + dst[nDst] = b[i] + nDst++ + } + nSrc += size + } + return +} + +// ReplaceIllFormed returns a transformer that replaces all input bytes that are +// not part of a well-formed UTF-8 code sequence with utf8.RuneError. +func ReplaceIllFormed() Transformer { + return Transformer{&replaceIllFormed{}} +} + +type replaceIllFormed struct{ transform.NopResetter } + +func (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for nSrc < len(src) { + r, size := utf8.DecodeRune(src[nSrc:]) + + // Look for an ASCII rune. + if r < utf8.RuneSelf { + if nDst == len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = byte(r) + nDst++ + nSrc++ + continue + } + + // Look for a valid non-ASCII rune. + if r != utf8.RuneError || size != 1 { + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + err = transform.ErrShortDst + break + } + nDst += size + nSrc += size + continue + } + + // Look for short source data. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + + // We have an invalid rune. + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + nSrc++ + } + return nDst, nSrc, err +} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule.go b/vendor/golang.org/x/text/secure/bidirule/bidirule.go new file mode 100644 index 0000000000..277257fd79 --- /dev/null +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule.go @@ -0,0 +1,290 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package bidirule implements the Bidi Rule defined by RFC 5893. +// +// This package is under development. The API may change without notice and +// without preserving backward compatibility. +package bidirule + +import ( + "errors" + "unicode/utf8" + + "golang.org/x/text/transform" + "golang.org/x/text/unicode/bidi" +) + +// This file contains an implementation of RFC 5893: Right-to-Left Scripts for +// Internationalized Domain Names for Applications (IDNA) +// +// A label is an individual component of a domain name. Labels are usually +// shown separated by dots; for example, the domain name "www.example.com" is +// composed of three labels: "www", "example", and "com". +// +// An RTL label is a label that contains at least one character of class R, AL, +// or AN. An LTR label is any label that is not an RTL label. +// +// A "Bidi domain name" is a domain name that contains at least one RTL label. +// +// The following guarantees can be made based on the above: +// +// o In a domain name consisting of only labels that satisfy the rule, +// the requirements of Section 3 are satisfied. Note that even LTR +// labels and pure ASCII labels have to be tested. +// +// o In a domain name consisting of only LDH labels (as defined in the +// Definitions document [RFC5890]) and labels that satisfy the rule, +// the requirements of Section 3 are satisfied as long as a label +// that starts with an ASCII digit does not come after a +// right-to-left label. +// +// No guarantee is given for other combinations. + +// ErrInvalid indicates a label is invalid according to the Bidi Rule. +var ErrInvalid = errors.New("bidirule: failed Bidi Rule") + +type ruleState uint8 + +const ( + ruleInitial ruleState = iota + ruleLTR + ruleLTRFinal + ruleRTL + ruleRTLFinal + ruleInvalid +) + +type ruleTransition struct { + next ruleState + mask uint16 +} + +var transitions = [...][2]ruleTransition{ + // [2.1] The first character must be a character with Bidi property L, R, or + // AL. If it has the R or AL property, it is an RTL label; if it has the L + // property, it is an LTR label. + ruleInitial: { + {ruleLTRFinal, 1 << bidi.L}, + {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL}, + }, + ruleRTL: { + // [2.3] In an RTL label, the end of the label must be a character with + // Bidi property R, AL, EN, or AN, followed by zero or more characters + // with Bidi property NSM. + {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN}, + + // [2.2] In an RTL label, only characters with the Bidi properties R, + // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed. + // We exclude the entries from [2.3] + {ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM}, + }, + ruleRTLFinal: { + // [2.3] In an RTL label, the end of the label must be a character with + // Bidi property R, AL, EN, or AN, followed by zero or more characters + // with Bidi property NSM. + {ruleRTLFinal, 1<<bidi.R | 1<<bidi.AL | 1<<bidi.EN | 1<<bidi.AN | 1<<bidi.NSM}, + + // [2.2] In an RTL label, only characters with the Bidi properties R, + // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed. + // We exclude the entries from [2.3] and NSM. + {ruleRTL, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN}, + }, + ruleLTR: { + // [2.6] In an LTR label, the end of the label must be a character with + // Bidi property L or EN, followed by zero or more characters with Bidi + // property NSM. + {ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN}, + + // [2.5] In an LTR label, only characters with the Bidi properties L, + // EN, ES, CS, ET, ON, BN, or NSM are allowed. + // We exclude the entries from [2.6]. + {ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN | 1<<bidi.NSM}, + }, + ruleLTRFinal: { + // [2.6] In an LTR label, the end of the label must be a character with + // Bidi property L or EN, followed by zero or more characters with Bidi + // property NSM. + {ruleLTRFinal, 1<<bidi.L | 1<<bidi.EN | 1<<bidi.NSM}, + + // [2.5] In an LTR label, only characters with the Bidi properties L, + // EN, ES, CS, ET, ON, BN, or NSM are allowed. + // We exclude the entries from [2.6]. + {ruleLTR, 1<<bidi.ES | 1<<bidi.CS | 1<<bidi.ET | 1<<bidi.ON | 1<<bidi.BN}, + }, + ruleInvalid: { + {ruleInvalid, 0}, + {ruleInvalid, 0}, + }, +} + +// [2.4] In an RTL label, if an EN is present, no AN may be present, and +// vice versa. +const exclusiveRTL = uint16(1<<bidi.EN | 1<<bidi.AN) + +// Direction reports the direction of the given label as defined by RFC 5893 or +// an error if b is not a valid label according to the Bidi Rule. +func Direction(b []byte) (bidi.Direction, error) { + t := Transformer{} + if n, ok := t.advance(b); ok && n == len(b) { + switch t.state { + case ruleLTRFinal, ruleInitial: + return bidi.LeftToRight, nil + case ruleRTLFinal: + return bidi.RightToLeft, nil + } + } + return bidi.Neutral, ErrInvalid +} + +// DirectionString reports the direction of the given label as defined by RFC +// 5893 or an error if s is not a valid label according to the Bidi Rule. +func DirectionString(s string) (bidi.Direction, error) { + t := Transformer{} + if n, ok := t.advanceString(s); ok && n == len(s) { + switch t.state { + case ruleLTRFinal, ruleInitial: + return bidi.LeftToRight, nil + case ruleRTLFinal: + return bidi.RightToLeft, nil + } + } + return bidi.Neutral, ErrInvalid +} + +// New returns a Transformer that verifies that input adheres to the Bidi Rule. +func New() *Transformer { + return &Transformer{} +} + +// Transformer implements transform.Transform. +type Transformer struct { + state ruleState + seen uint16 +} + +// Reset implements transform.Transformer. +func (t *Transformer) Reset() { *t = Transformer{} } + +// Transform implements transform.Transformer. This Transformer has state and +// needs to be reset between uses. +func (t *Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if len(dst) < len(src) { + src = src[:len(dst)] + atEOF = false + err = transform.ErrShortDst + } + n, err1 := t.Span(src, atEOF) + copy(dst, src[:n]) + if err == nil || err1 != nil && err1 != transform.ErrShortSrc { + err = err1 + } + return n, n, err +} + +// Span returns the first n bytes of src that conform to the Bidi rule. +func (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) { + if t.state == ruleInvalid { + return 0, ErrInvalid + } + n, ok := t.advance(src) + switch { + case !ok: + err = ErrInvalid + case n < len(src): + if !atEOF { + err = transform.ErrShortSrc + break + } + err = ErrInvalid + case t.state != ruleLTRFinal && t.state != ruleRTLFinal && t.state != ruleInitial: + err = ErrInvalid + } + return n, err +} + +// Precomputing the ASCII values decreases running time for the ASCII fast path +// by about 30%. +var asciiTable [128]bidi.Properties + +func init() { + for i := range asciiTable { + p, _ := bidi.LookupRune(rune(i)) + asciiTable[i] = p + } +} + +func (t *Transformer) advance(s []byte) (n int, ok bool) { + var e bidi.Properties + var sz int + for n < len(s) { + if s[n] < utf8.RuneSelf { + e, sz = asciiTable[s[n]], 1 + } else { + e, sz = bidi.Lookup(s[n:]) + if sz <= 1 { + if sz == 1 { + return n, false // invalid UTF-8 + } + return n, true // incomplete UTF-8 encoding + } + } + // TODO: using CompactClass results in noticeable speedup. + // See unicode/bidi/prop.go:Properties.CompactClass. + c := uint16(1 << e.Class()) + t.seen |= c + if t.seen&exclusiveRTL == exclusiveRTL { + t.state = ruleInvalid + return n, false + } + switch tr := transitions[t.state]; { + case tr[0].mask&c != 0: + t.state = tr[0].next + case tr[1].mask&c != 0: + t.state = tr[1].next + default: + t.state = ruleInvalid + return n, false + } + n += sz + } + return n, true +} + +func (t *Transformer) advanceString(s string) (n int, ok bool) { + var e bidi.Properties + var sz int + for n < len(s) { + if s[n] < utf8.RuneSelf { + e, sz = asciiTable[s[n]], 1 + } else { + e, sz = bidi.LookupString(s[n:]) + if sz <= 1 { + if sz == 1 { + return n, false // invalid UTF-8 + } + return n, true // incomplete UTF-8 encoding + } + } + // TODO: using CompactClass results in noticeable speedup. + // See unicode/bidi/prop.go:Properties.CompactClass. + c := uint16(1 << e.Class()) + t.seen |= c + if t.seen&exclusiveRTL == exclusiveRTL { + t.state = ruleInvalid + return n, false + } + switch tr := transitions[t.state]; { + case tr[0].mask&c != 0: + t.state = tr[0].next + case tr[1].mask&c != 0: + t.state = tr[1].next + default: + t.state = ruleInvalid + return n, false + } + n += sz + } + return n, true +} diff --git a/vendor/golang.org/x/text/secure/precis/class.go b/vendor/golang.org/x/text/secure/precis/class.go new file mode 100644 index 0000000000..f6b56413ba --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/class.go @@ -0,0 +1,36 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import ( + "unicode/utf8" +) + +// TODO: Add contextual character rules from Appendix A of RFC5892. + +// A class is a set of characters that match certain derived properties. The +// PRECIS framework defines two classes: The Freeform class and the Identifier +// class. The freeform class should be used for profiles where expressiveness is +// prioritized over safety such as nicknames or passwords. The identifier class +// should be used for profiles where safety is the first priority such as +// addressable network labels and usernames. +type class struct { + validFrom property +} + +// Contains satisfies the runes.Set interface and returns whether the given rune +// is a member of the class. +func (c class) Contains(r rune) bool { + b := make([]byte, 4) + n := utf8.EncodeRune(b, r) + + trieval, _ := dpTrie.lookup(b[:n]) + return c.validFrom <= property(trieval) +} + +var ( + identifier = &class{validFrom: pValid} + freeform = &class{validFrom: idDisOrFreePVal} +) diff --git a/vendor/golang.org/x/text/secure/precis/context.go b/vendor/golang.org/x/text/secure/precis/context.go new file mode 100644 index 0000000000..2dcaf29d7a --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/context.go @@ -0,0 +1,139 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import "errors" + +// This file contains tables and code related to context rules. + +type catBitmap uint16 + +const ( + // These bits, once set depending on the current value, are never unset. + bJapanese catBitmap = 1 << iota + bArabicIndicDigit + bExtendedArabicIndicDigit + + // These bits are set on each iteration depending on the current value. + bJoinStart + bJoinMid + bJoinEnd + bVirama + bLatinSmallL + bGreek + bHebrew + + // These bits indicated which of the permanent bits need to be set at the + // end of the checks. + bMustHaveJapn + + permanent = bJapanese | bArabicIndicDigit | bExtendedArabicIndicDigit | bMustHaveJapn +) + +const finalShift = 10 + +var errContext = errors.New("precis: contextual rule violated") + +func init() { + // Programmatically set these required bits as, manually setting them seems + // too error prone. + for i, ct := range categoryTransitions { + categoryTransitions[i].keep |= permanent + categoryTransitions[i].accept |= ct.term + } +} + +var categoryTransitions = []struct { + keep catBitmap // mask selecting which bits to keep from the previous state + set catBitmap // mask for which bits to set for this transition + + // These bitmaps are used for rules that require lookahead. + // term&accept == term must be true, which is enforced programmatically. + term catBitmap // bits accepted as termination condition + accept catBitmap // bits that pass, but not sufficient as termination + + // The rule function cannot take a *context as an argument, as it would + // cause the context to escape, adding significant overhead. + rule func(beforeBits catBitmap) (doLookahead bool, err error) +}{ + joiningL: {set: bJoinStart}, + joiningD: {set: bJoinStart | bJoinEnd}, + joiningT: {keep: bJoinStart, set: bJoinMid}, + joiningR: {set: bJoinEnd}, + viramaModifier: {set: bVirama}, + viramaJoinT: {set: bVirama | bJoinMid}, + latinSmallL: {set: bLatinSmallL}, + greek: {set: bGreek}, + greekJoinT: {set: bGreek | bJoinMid}, + hebrew: {set: bHebrew}, + hebrewJoinT: {set: bHebrew | bJoinMid}, + japanese: {set: bJapanese}, + katakanaMiddleDot: {set: bMustHaveJapn}, + + zeroWidthNonJoiner: { + term: bJoinEnd, + accept: bJoinMid, + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bVirama != 0 { + return false, nil + } + if before&bJoinStart == 0 { + return false, errContext + } + return true, nil + }, + }, + zeroWidthJoiner: { + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bVirama == 0 { + err = errContext + } + return false, err + }, + }, + middleDot: { + term: bLatinSmallL, + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bLatinSmallL == 0 { + return false, errContext + } + return true, nil + }, + }, + greekLowerNumeralSign: { + set: bGreek, + term: bGreek, + rule: func(before catBitmap) (doLookAhead bool, err error) { + return true, nil + }, + }, + hebrewPreceding: { + set: bHebrew, + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bHebrew == 0 { + err = errContext + } + return false, err + }, + }, + arabicIndicDigit: { + set: bArabicIndicDigit, + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bExtendedArabicIndicDigit != 0 { + err = errContext + } + return false, err + }, + }, + extendedArabicIndicDigit: { + set: bExtendedArabicIndicDigit, + rule: func(before catBitmap) (doLookAhead bool, err error) { + if before&bArabicIndicDigit != 0 { + err = errContext + } + return false, err + }, + }, +} diff --git a/vendor/golang.org/x/text/secure/precis/doc.go b/vendor/golang.org/x/text/secure/precis/doc.go new file mode 100644 index 0000000000..aa76205e6a --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/doc.go @@ -0,0 +1,14 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package precis contains types and functions for the preparation, +// enforcement, and comparison of internationalized strings ("PRECIS") as +// defined in RFC 7564. It also contains several pre-defined profiles for +// passwords, nicknames, and usernames as defined in RFC 7613 and RFC 7700. +// +// BE ADVISED: This package is under construction and the API may change in +// backwards incompatible ways and without notice. +package precis + +//go:generate go run gen.go gen_trieval.go diff --git a/vendor/golang.org/x/text/secure/precis/gen.go b/vendor/golang.org/x/text/secure/precis/gen.go new file mode 100644 index 0000000000..dba9004a6c --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/gen.go @@ -0,0 +1,310 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Unicode table generator. +// Data read from the web. + +// +build ignore + +package main + +import ( + "flag" + "log" + "unicode" + "unicode/utf8" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" + "golang.org/x/text/internal/ucd" + "golang.org/x/text/unicode/norm" + "golang.org/x/text/unicode/rangetable" +) + +var outputFile = flag.String("output", "tables.go", "output file for generated tables; default tables.go") + +var assigned, disallowedRunes *unicode.RangeTable + +var runeCategory = map[rune]category{} + +var overrides = map[category]category{ + viramaModifier: viramaJoinT, + greek: greekJoinT, + hebrew: hebrewJoinT, +} + +func setCategory(r rune, cat category) { + if c, ok := runeCategory[r]; ok { + if override, ok := overrides[c]; cat == joiningT && ok { + cat = override + } else { + log.Fatalf("%U: multiple categories for rune (%v and %v)", r, c, cat) + } + } + runeCategory[r] = cat +} + +func init() { + if numCategories > 1<<propShift { + log.Fatalf("Number of categories is %d; may at most be %d", numCategories, 1<<propShift) + } +} + +func main() { + gen.Init() + + // Load data + runes := []rune{} + // PrecisIgnorableProperties: https://tools.ietf.org/html/rfc7564#section-9.13 + ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) { + if p.String(1) == "Default_Ignorable_Code_Point" { + runes = append(runes, p.Rune(0)) + } + }) + ucd.Parse(gen.OpenUCDFile("PropList.txt"), func(p *ucd.Parser) { + switch p.String(1) { + case "Noncharacter_Code_Point": + runes = append(runes, p.Rune(0)) + } + }) + // OldHangulJamo: https://tools.ietf.org/html/rfc5892#section-2.9 + ucd.Parse(gen.OpenUCDFile("HangulSyllableType.txt"), func(p *ucd.Parser) { + switch p.String(1) { + case "L", "V", "T": + runes = append(runes, p.Rune(0)) + } + }) + + disallowedRunes = rangetable.New(runes...) + assigned = rangetable.Assigned(unicode.Version) + + // Load category data. + runeCategory['l'] = latinSmallL + ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { + const cccVirama = 9 + if p.Int(ucd.CanonicalCombiningClass) == cccVirama { + setCategory(p.Rune(0), viramaModifier) + } + }) + ucd.Parse(gen.OpenUCDFile("Scripts.txt"), func(p *ucd.Parser) { + switch p.String(1) { + case "Greek": + setCategory(p.Rune(0), greek) + case "Hebrew": + setCategory(p.Rune(0), hebrew) + case "Hiragana", "Katakana", "Han": + setCategory(p.Rune(0), japanese) + } + }) + + // Set the rule categories associated with exceptions. This overrides any + // previously set categories. The original categories are manually + // reintroduced in the categoryTransitions table. + for r, e := range exceptions { + if e.cat != 0 { + runeCategory[r] = e.cat + } + } + cat := map[string]category{ + "L": joiningL, + "D": joiningD, + "T": joiningT, + + "R": joiningR, + } + ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { + switch v := p.String(1); v { + case "L", "D", "T", "R": + setCategory(p.Rune(0), cat[v]) + } + }) + + writeTables() + gen.Repackage("gen_trieval.go", "trieval.go", "precis") +} + +type exception struct { + prop property + cat category +} + +func init() { + // Programmatically add the Arabic and Indic digits to the exceptions map. + // See comment in the exceptions map below why these are marked disallowed. + for i := rune(0); i <= 9; i++ { + exceptions[0x0660+i] = exception{ + prop: disallowed, + cat: arabicIndicDigit, + } + exceptions[0x06F0+i] = exception{ + prop: disallowed, + cat: extendedArabicIndicDigit, + } + } +} + +// The Exceptions class as defined in RFC 5892 +// https://tools.ietf.org/html/rfc5892#section-2.6 +var exceptions = map[rune]exception{ + 0x00DF: {prop: pValid}, + 0x03C2: {prop: pValid}, + 0x06FD: {prop: pValid}, + 0x06FE: {prop: pValid}, + 0x0F0B: {prop: pValid}, + 0x3007: {prop: pValid}, + + // ContextO|J rules are marked as disallowed, taking a "guilty until proven + // innocent" approach. The main reason for this is that the check for + // whether a context rule should be applied can be moved to the logic for + // handing disallowed runes, taken it off the common path. The exception to + // this rule is for katakanaMiddleDot, as the rule logic is handled without + // using a rule function. + + // ContextJ (Join control) + 0x200C: {prop: disallowed, cat: zeroWidthNonJoiner}, + 0x200D: {prop: disallowed, cat: zeroWidthJoiner}, + + // ContextO + 0x00B7: {prop: disallowed, cat: middleDot}, + 0x0375: {prop: disallowed, cat: greekLowerNumeralSign}, + 0x05F3: {prop: disallowed, cat: hebrewPreceding}, // punctuation Geresh + 0x05F4: {prop: disallowed, cat: hebrewPreceding}, // punctuation Gershayim + 0x30FB: {prop: pValid, cat: katakanaMiddleDot}, + + // These are officially ContextO, but the implementation does not require + // special treatment of these, so we simply mark them as valid. + 0x0660: {prop: pValid}, + 0x0661: {prop: pValid}, + 0x0662: {prop: pValid}, + 0x0663: {prop: pValid}, + 0x0664: {prop: pValid}, + 0x0665: {prop: pValid}, + 0x0666: {prop: pValid}, + 0x0667: {prop: pValid}, + 0x0668: {prop: pValid}, + 0x0669: {prop: pValid}, + 0x06F0: {prop: pValid}, + 0x06F1: {prop: pValid}, + 0x06F2: {prop: pValid}, + 0x06F3: {prop: pValid}, + 0x06F4: {prop: pValid}, + 0x06F5: {prop: pValid}, + 0x06F6: {prop: pValid}, + 0x06F7: {prop: pValid}, + 0x06F8: {prop: pValid}, + 0x06F9: {prop: pValid}, + + 0x0640: {prop: disallowed}, + 0x07FA: {prop: disallowed}, + 0x302E: {prop: disallowed}, + 0x302F: {prop: disallowed}, + 0x3031: {prop: disallowed}, + 0x3032: {prop: disallowed}, + 0x3033: {prop: disallowed}, + 0x3034: {prop: disallowed}, + 0x3035: {prop: disallowed}, + 0x303B: {prop: disallowed}, +} + +// LetterDigits: https://tools.ietf.org/html/rfc5892#section-2.1 +// r in {Ll, Lu, Lo, Nd, Lm, Mn, Mc}. +func isLetterDigits(r rune) bool { + return unicode.In(r, + unicode.Ll, unicode.Lu, unicode.Lm, unicode.Lo, // Letters + unicode.Mn, unicode.Mc, // Modifiers + unicode.Nd, // Digits + ) +} + +func isIdDisAndFreePVal(r rune) bool { + return unicode.In(r, + // OtherLetterDigits: https://tools.ietf.org/html/rfc7564#section-9.18 + // r in in {Lt, Nl, No, Me} + unicode.Lt, unicode.Nl, unicode.No, // Other letters / numbers + unicode.Me, // Modifiers + + // Spaces: https://tools.ietf.org/html/rfc7564#section-9.14 + // r in in {Zs} + unicode.Zs, + + // Symbols: https://tools.ietf.org/html/rfc7564#section-9.15 + // r in {Sm, Sc, Sk, So} + unicode.Sm, unicode.Sc, unicode.Sk, unicode.So, + + // Punctuation: https://tools.ietf.org/html/rfc7564#section-9.16 + // r in {Pc, Pd, Ps, Pe, Pi, Pf, Po} + unicode.Pc, unicode.Pd, unicode.Ps, unicode.Pe, + unicode.Pi, unicode.Pf, unicode.Po, + ) +} + +// HasCompat: https://tools.ietf.org/html/rfc7564#section-9.17 +func hasCompat(r rune) bool { + return !norm.NFKC.IsNormalString(string(r)) +} + +// From https://tools.ietf.org/html/rfc5892: +// +// If .cp. .in. Exceptions Then Exceptions(cp); +// Else If .cp. .in. BackwardCompatible Then BackwardCompatible(cp); +// Else If .cp. .in. Unassigned Then UNASSIGNED; +// Else If .cp. .in. ASCII7 Then PVALID; +// Else If .cp. .in. JoinControl Then CONTEXTJ; +// Else If .cp. .in. OldHangulJamo Then DISALLOWED; +// Else If .cp. .in. PrecisIgnorableProperties Then DISALLOWED; +// Else If .cp. .in. Controls Then DISALLOWED; +// Else If .cp. .in. HasCompat Then ID_DIS or FREE_PVAL; +// Else If .cp. .in. LetterDigits Then PVALID; +// Else If .cp. .in. OtherLetterDigits Then ID_DIS or FREE_PVAL; +// Else If .cp. .in. Spaces Then ID_DIS or FREE_PVAL; +// Else If .cp. .in. Symbols Then ID_DIS or FREE_PVAL; +// Else If .cp. .in. Punctuation Then ID_DIS or FREE_PVAL; +// Else DISALLOWED; + +func writeTables() { + propTrie := triegen.NewTrie("derivedProperties") + w := gen.NewCodeWriter() + defer w.WriteGoFile(*outputFile, "precis") + gen.WriteUnicodeVersion(w) + + // Iterate over all the runes... + for i := rune(0); i < unicode.MaxRune; i++ { + r := rune(i) + + if !utf8.ValidRune(r) { + continue + } + + e, ok := exceptions[i] + p := e.prop + switch { + case ok: + case !unicode.In(r, assigned): + p = unassigned + case r >= 0x0021 && r <= 0x007e: // Is ASCII 7 + p = pValid + case unicode.In(r, disallowedRunes, unicode.Cc): + p = disallowed + case hasCompat(r): + p = idDisOrFreePVal + case isLetterDigits(r): + p = pValid + case isIdDisAndFreePVal(r): + p = idDisOrFreePVal + default: + p = disallowed + } + cat := runeCategory[r] + // Don't set category for runes that are disallowed. + if p == disallowed { + cat = exceptions[r].cat + } + propTrie.Insert(r, uint64(p)|uint64(cat)) + } + sz, err := propTrie.Gen(w) + if err != nil { + log.Fatal(err) + } + w.Size += sz +} diff --git a/vendor/golang.org/x/text/secure/precis/gen_trieval.go b/vendor/golang.org/x/text/secure/precis/gen_trieval.go new file mode 100644 index 0000000000..308510c9a4 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/gen_trieval.go @@ -0,0 +1,68 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// entry is the entry of a trie table +// 7..6 property (unassigned, disallowed, maybe, valid) +// 5..0 category +type entry uint8 + +const ( + propShift = 6 + propMask = 0xc0 + catMask = 0x3f +) + +func (e entry) property() property { return property(e & propMask) } +func (e entry) category() category { return category(e & catMask) } + +type property uint8 + +// The order of these constants matter. A Profile may consider runes to be +// allowed either from pValid or idDisOrFreePVal. +const ( + unassigned property = iota << propShift + disallowed + idDisOrFreePVal // disallowed for Identifier, pValid for FreeForm + pValid +) + +// compute permutations of all properties and specialCategories. +type category uint8 + +const ( + other category = iota + + // Special rune types + joiningL + joiningD + joiningT + joiningR + viramaModifier + viramaJoinT // Virama + JoiningT + latinSmallL // U+006c + greek + greekJoinT // Greek + JoiningT + hebrew + hebrewJoinT // Hebrew + JoiningT + japanese // hirigana, katakana, han + + // Special rune types associated with contextual rules defined in + // https://tools.ietf.org/html/rfc5892#appendix-A. + // ContextO + zeroWidthNonJoiner // rule 1 + zeroWidthJoiner // rule 2 + // ContextJ + middleDot // rule 3 + greekLowerNumeralSign // rule 4 + hebrewPreceding // rule 5 and 6 + katakanaMiddleDot // rule 7 + arabicIndicDigit // rule 8 + extendedArabicIndicDigit // rule 9 + + numCategories +) diff --git a/vendor/golang.org/x/text/secure/precis/nickname.go b/vendor/golang.org/x/text/secure/precis/nickname.go new file mode 100644 index 0000000000..cd54b9e697 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/nickname.go @@ -0,0 +1,70 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import ( + "unicode" + "unicode/utf8" + + "golang.org/x/text/transform" +) + +type nickAdditionalMapping struct { + // TODO: This transformer needs to be stateless somehow… + notStart bool + prevSpace bool +} + +func (t *nickAdditionalMapping) Reset() { + t.prevSpace = false + t.notStart = false +} + +func (t *nickAdditionalMapping) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + // RFC 7700 §2.1. Rules + // + // 2. Additional Mapping Rule: The additional mapping rule consists of + // the following sub-rules. + // + // 1. Any instances of non-ASCII space MUST be mapped to ASCII + // space (U+0020); a non-ASCII space is any Unicode code point + // having a general category of "Zs", naturally with the + // exception of U+0020. + // + // 2. Any instances of the ASCII space character at the beginning + // or end of a nickname MUST be removed (e.g., "stpeter " is + // mapped to "stpeter"). + // + // 3. Interior sequences of more than one ASCII space character + // MUST be mapped to a single ASCII space character (e.g., + // "St Peter" is mapped to "St Peter"). + + for nSrc < len(src) { + r, size := utf8.DecodeRune(src[nSrc:]) + if size == 0 { // Incomplete UTF-8 encoding + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + size = 1 + } + if unicode.Is(unicode.Zs, r) { + t.prevSpace = true + } else { + if t.prevSpace && t.notStart { + dst[nDst] = ' ' + nDst += 1 + } + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + nDst += size + return nDst, nSrc, transform.ErrShortDst + } + nDst += size + t.prevSpace = false + t.notStart = true + } + nSrc += size + } + return nDst, nSrc, nil +} diff --git a/vendor/golang.org/x/text/secure/precis/options.go b/vendor/golang.org/x/text/secure/precis/options.go new file mode 100644 index 0000000000..ec63783ef7 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/options.go @@ -0,0 +1,106 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import ( + "golang.org/x/text/cases" + "golang.org/x/text/runes" + "golang.org/x/text/transform" + "golang.org/x/text/unicode/norm" + "golang.org/x/text/width" +) + +// An Option is used to define the behavior and rules of a Profile. +type Option func(*options) + +type options struct { + // Preparation options + foldWidth bool + + // Enforcement options + cases transform.Transformer + disallow runes.Set + norm norm.Form + additional []func() transform.Transformer + width *width.Transformer + disallowEmpty bool + bidiRule bool + + // Comparison options + ignorecase bool +} + +func getOpts(o ...Option) (res options) { + for _, f := range o { + f(&res) + } + return +} + +var ( + // The IgnoreCase option causes the profile to perform a case insensitive + // comparison during the PRECIS comparison step. + IgnoreCase Option = ignoreCase + + // The FoldWidth option causes the profile to map non-canonical wide and + // narrow variants to their decomposition mapping. This is useful for + // profiles that are based on the identifier class which would otherwise + // disallow such characters. + FoldWidth Option = foldWidth + + // The DisallowEmpty option causes the enforcement step to return an error if + // the resulting string would be empty. + DisallowEmpty Option = disallowEmpty + + // The BidiRule option causes the Bidi Rule defined in RFC 5893 to be + // applied. + BidiRule Option = bidiRule +) + +var ( + ignoreCase = func(o *options) { + o.ignorecase = true + } + foldWidth = func(o *options) { + o.foldWidth = true + } + disallowEmpty = func(o *options) { + o.disallowEmpty = true + } + bidiRule = func(o *options) { + o.bidiRule = true + } +) + +// The AdditionalMapping option defines the additional mapping rule for the +// Profile by applying Transformer's in sequence. +func AdditionalMapping(t ...func() transform.Transformer) Option { + return func(o *options) { + o.additional = t + } +} + +// The Norm option defines a Profile's normalization rule. Defaults to NFC. +func Norm(f norm.Form) Option { + return func(o *options) { + o.norm = f + } +} + +// The FoldCase option defines a Profile's case mapping rule. Options can be +// provided to determine the type of case folding used. +func FoldCase(opts ...cases.Option) Option { + return func(o *options) { + o.cases = cases.Fold(opts...) + } +} + +// The Disallow option further restricts a Profile's allowed characters beyond +// what is disallowed by the underlying string class. +func Disallow(set runes.Set) Option { + return func(o *options) { + o.disallow = set + } +} diff --git a/vendor/golang.org/x/text/secure/precis/profile.go b/vendor/golang.org/x/text/secure/precis/profile.go new file mode 100644 index 0000000000..fd5c422fbc --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/profile.go @@ -0,0 +1,330 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import ( + "errors" + "unicode/utf8" + + "golang.org/x/text/runes" + "golang.org/x/text/secure/bidirule" + "golang.org/x/text/transform" + "golang.org/x/text/width" +) + +var ( + errDisallowedRune = errors.New("precis: disallowed rune encountered") +) + +var dpTrie = newDerivedPropertiesTrie(0) + +// A Profile represents a set of rules for normalizing and validating strings in +// the PRECIS framework. +type Profile struct { + options + class *class +} + +// NewIdentifier creates a new PRECIS profile based on the Identifier string +// class. Profiles created from this class are suitable for use where safety is +// prioritized over expressiveness like network identifiers, user accounts, chat +// rooms, and file names. +func NewIdentifier(opts ...Option) *Profile { + return &Profile{ + options: getOpts(opts...), + class: identifier, + } +} + +// NewFreeform creates a new PRECIS profile based on the Freeform string class. +// Profiles created from this class are suitable for use where expressiveness is +// prioritized over safety like passwords, and display-elements such as +// nicknames in a chat room. +func NewFreeform(opts ...Option) *Profile { + return &Profile{ + options: getOpts(opts...), + class: freeform, + } +} + +// NewTransformer creates a new transform.Transformer that performs the PRECIS +// preparation and enforcement steps on the given UTF-8 encoded bytes. +func (p *Profile) NewTransformer() *Transformer { + var ts []transform.Transformer + + // These transforms are applied in the order defined in + // https://tools.ietf.org/html/rfc7564#section-7 + + if p.options.foldWidth { + ts = append(ts, width.Fold) + } + + for _, f := range p.options.additional { + ts = append(ts, f()) + } + + if p.options.cases != nil { + ts = append(ts, p.options.cases) + } + + ts = append(ts, p.options.norm) + + if p.options.bidiRule { + ts = append(ts, bidirule.New()) + } + + ts = append(ts, &checker{p: p, allowed: p.Allowed()}) + + // TODO: Add the disallow empty rule with a dummy transformer? + + return &Transformer{transform.Chain(ts...)} +} + +var errEmptyString = errors.New("precis: transformation resulted in empty string") + +type buffers struct { + src []byte + buf [2][]byte + next int +} + +func (b *buffers) init(n int) { + b.buf[0] = make([]byte, 0, n) + b.buf[1] = make([]byte, 0, n) +} + +func (b *buffers) apply(t transform.Transformer) (err error) { + // TODO: use Span, once available. + x := b.next & 1 + b.src, _, err = transform.Append(t, b.buf[x][:0], b.src) + b.buf[x] = b.src + b.next++ + return err +} + +func (b *buffers) enforce(p *Profile, src []byte) (str []byte, err error) { + b.src = src + + // These transforms are applied in the order defined in + // https://tools.ietf.org/html/rfc7564#section-7 + + // TODO: allow different width transforms options. + if p.options.foldWidth { + // TODO: use Span, once available. + if err = b.apply(width.Fold); err != nil { + return nil, err + } + } + for _, f := range p.options.additional { + if err = b.apply(f()); err != nil { + return nil, err + } + } + if p.options.cases != nil { + if err = b.apply(p.options.cases); err != nil { + return nil, err + } + } + if n := p.norm.QuickSpan(b.src); n < len(b.src) { + x := b.next & 1 + n = copy(b.buf[x], b.src[:n]) + b.src, _, err = transform.Append(p.norm, b.buf[x][:n], b.src[n:]) + b.buf[x] = b.src + b.next++ + if err != nil { + return nil, err + } + } + if p.options.bidiRule { + if err := b.apply(bidirule.New()); err != nil { + return nil, err + } + } + c := checker{p: p} + if _, err := c.span(b.src, true); err != nil { + return nil, err + } + if p.disallow != nil { + for i := 0; i < len(b.src); { + r, size := utf8.DecodeRune(b.src[i:]) + if p.disallow.Contains(r) { + return nil, errDisallowedRune + } + i += size + } + } + + // TODO: Add the disallow empty rule with a dummy transformer? + + if p.options.disallowEmpty && len(b.src) == 0 { + return nil, errEmptyString + } + return b.src, nil +} + +// Append appends the result of applying p to src writing the result to dst. +// It returns an error if the input string is invalid. +func (p *Profile) Append(dst, src []byte) ([]byte, error) { + var buf buffers + buf.init(8 + len(src) + len(src)>>2) + b, err := buf.enforce(p, src) + if err != nil { + return nil, err + } + return append(dst, b...), nil +} + +// Bytes returns a new byte slice with the result of applying the profile to b. +func (p *Profile) Bytes(b []byte) ([]byte, error) { + var buf buffers + buf.init(8 + len(b) + len(b)>>2) + b, err := buf.enforce(p, b) + if err != nil { + return nil, err + } + if buf.next == 0 { + c := make([]byte, len(b)) + copy(c, b) + return c, nil + } + return b, nil +} + +// String returns a string with the result of applying the profile to s. +func (p *Profile) String(s string) (string, error) { + var buf buffers + buf.init(8 + len(s) + len(s)>>2) + b, err := buf.enforce(p, []byte(s)) + if err != nil { + return "", err + } + return string(b), nil +} + +// Compare enforces both strings, and then compares them for bit-string identity +// (byte-for-byte equality). If either string cannot be enforced, the comparison +// is false. +func (p *Profile) Compare(a, b string) bool { + a, err := p.String(a) + if err != nil { + return false + } + b, err = p.String(b) + if err != nil { + return false + } + + // TODO: This is out of order. Need to extract the transformation logic and + // put this in where the normal case folding would go (but only for + // comparison). + if p.options.ignorecase { + a = width.Fold.String(a) + b = width.Fold.String(a) + } + + return a == b +} + +// Allowed returns a runes.Set containing every rune that is a member of the +// underlying profile's string class and not disallowed by any profile specific +// rules. +func (p *Profile) Allowed() runes.Set { + if p.options.disallow != nil { + return runes.Predicate(func(r rune) bool { + return p.class.Contains(r) && !p.options.disallow.Contains(r) + }) + } + return p.class +} + +type checker struct { + p *Profile + allowed runes.Set + + beforeBits catBitmap + termBits catBitmap + acceptBits catBitmap +} + +func (c *checker) Reset() { + c.beforeBits = 0 + c.termBits = 0 + c.acceptBits = 0 +} + +func (c *checker) span(src []byte, atEOF bool) (n int, err error) { + for n < len(src) { + e, sz := dpTrie.lookup(src[n:]) + d := categoryTransitions[category(e&catMask)] + if sz == 0 { + if !atEOF { + return n, transform.ErrShortSrc + } + return n, errDisallowedRune + } + if property(e) < c.p.class.validFrom { + if d.rule == nil { + return n, errDisallowedRune + } + doLookAhead, err := d.rule(c.beforeBits) + if err != nil { + return n, err + } + if doLookAhead { + c.beforeBits &= d.keep + c.beforeBits |= d.set + // We may still have a lookahead rule which we will require to + // complete (by checking termBits == 0) before setting the new + // bits. + if c.termBits != 0 && (!c.checkLookahead() || c.termBits == 0) { + return n, err + } + c.termBits = d.term + c.acceptBits = d.accept + n += sz + continue + } + } + c.beforeBits &= d.keep + c.beforeBits |= d.set + if c.termBits != 0 && !c.checkLookahead() { + return n, errContext + } + n += sz + } + if m := c.beforeBits >> finalShift; c.beforeBits&m != m || c.termBits != 0 { + err = errContext + } + return n, err +} + +func (c *checker) checkLookahead() bool { + switch { + case c.beforeBits&c.termBits != 0: + c.termBits = 0 + c.acceptBits = 0 + case c.beforeBits&c.acceptBits != 0: + default: + return false + } + return true +} + +// TODO: we may get rid of this transform if transform.Chain understands +// something like a Spanner interface. +func (c checker) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + short := false + if len(dst) < len(src) { + src = src[:len(dst)] + atEOF = false + short = true + } + nSrc, err = c.span(src, atEOF) + nDst = copy(dst, src[:nSrc]) + if short && (err == transform.ErrShortSrc || err == nil) { + err = transform.ErrShortDst + } + return nDst, nSrc, err +} diff --git a/vendor/golang.org/x/text/secure/precis/profiles.go b/vendor/golang.org/x/text/secure/precis/profiles.go new file mode 100644 index 0000000000..ad50ae857d --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/profiles.go @@ -0,0 +1,56 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import ( + "unicode" + + "golang.org/x/text/runes" + "golang.org/x/text/transform" + "golang.org/x/text/unicode/norm" +) + +var ( + Nickname *Profile = nickname // Implements the Nickname profile specified in RFC 7700. + UsernameCaseMapped *Profile = usernameCaseMap // Implements the UsernameCaseMapped profile specified in RFC 7613. + UsernameCasePreserved *Profile = usernameNoCaseMap // Implements the UsernameCasePreserved profile specified in RFC 7613. + OpaqueString *Profile = opaquestring // Implements the OpaqueString profile defined in RFC 7613 for passwords and other secure labels. +) + +// TODO: mvl: "Ultimately, I would manually define the structs for the internal +// profiles. This avoid pulling in unneeded tables when they are not used." +var ( + nickname = NewFreeform( + AdditionalMapping(func() transform.Transformer { + return &nickAdditionalMapping{} + }), + IgnoreCase, + Norm(norm.NFKC), + DisallowEmpty, + ) + usernameCaseMap = NewIdentifier( + FoldWidth, + FoldCase(), + Norm(norm.NFC), + BidiRule, + ) + usernameNoCaseMap = NewIdentifier( + FoldWidth, + Norm(norm.NFC), + BidiRule, + ) + opaquestring = NewFreeform( + AdditionalMapping(func() transform.Transformer { + return runes.Map(func(r rune) rune { + if unicode.Is(unicode.Zs, r) { + return ' ' + } + return r + }) + }), + Norm(norm.NFC), + DisallowEmpty, + ) +) diff --git a/vendor/golang.org/x/text/secure/precis/tables.go b/vendor/golang.org/x/text/secure/precis/tables.go new file mode 100644 index 0000000000..a9b500deb0 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/tables.go @@ -0,0 +1,3788 @@ +// This file was generated by go generate; DO NOT EDIT + +package precis + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *derivedPropertiesTrie) lookup(s []byte) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return derivedPropertiesValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = derivedPropertiesIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = derivedPropertiesIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = derivedPropertiesIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *derivedPropertiesTrie) lookupUnsafe(s []byte) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return derivedPropertiesValues[c0] + } + i := derivedPropertiesIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *derivedPropertiesTrie) lookupString(s string) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return derivedPropertiesValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = derivedPropertiesIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := derivedPropertiesIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = derivedPropertiesIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = derivedPropertiesIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *derivedPropertiesTrie) lookupStringUnsafe(s string) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return derivedPropertiesValues[c0] + } + i := derivedPropertiesIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// derivedPropertiesTrie. Total size: 25344 bytes (24.75 KiB). Checksum: c5b977d76d42d8a. +type derivedPropertiesTrie struct{} + +func newDerivedPropertiesTrie(i int) *derivedPropertiesTrie { + return &derivedPropertiesTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *derivedPropertiesTrie) lookupValue(n uint32, b byte) uint8 { + switch { + default: + return uint8(derivedPropertiesValues[n<<6+uint32(b)]) + } +} + +// derivedPropertiesValues: 324 blocks, 20736 entries, 20736 bytes +// The third block is the zero block. +var derivedPropertiesValues = [20736]uint8{ + // Block 0x0, offset 0x0 + 0x00: 0x0040, 0x01: 0x0040, 0x02: 0x0040, 0x03: 0x0040, 0x04: 0x0040, 0x05: 0x0040, + 0x06: 0x0040, 0x07: 0x0040, 0x08: 0x0040, 0x09: 0x0040, 0x0a: 0x0040, 0x0b: 0x0040, + 0x0c: 0x0040, 0x0d: 0x0040, 0x0e: 0x0040, 0x0f: 0x0040, 0x10: 0x0040, 0x11: 0x0040, + 0x12: 0x0040, 0x13: 0x0040, 0x14: 0x0040, 0x15: 0x0040, 0x16: 0x0040, 0x17: 0x0040, + 0x18: 0x0040, 0x19: 0x0040, 0x1a: 0x0040, 0x1b: 0x0040, 0x1c: 0x0040, 0x1d: 0x0040, + 0x1e: 0x0040, 0x1f: 0x0040, 0x20: 0x0080, 0x21: 0x00c0, 0x22: 0x00c0, 0x23: 0x00c0, + 0x24: 0x00c0, 0x25: 0x00c0, 0x26: 0x00c0, 0x27: 0x00c0, 0x28: 0x00c0, 0x29: 0x00c0, + 0x2a: 0x00c0, 0x2b: 0x00c0, 0x2c: 0x00c0, 0x2d: 0x00c0, 0x2e: 0x00c0, 0x2f: 0x00c0, + 0x30: 0x00c0, 0x31: 0x00c0, 0x32: 0x00c0, 0x33: 0x00c0, 0x34: 0x00c0, 0x35: 0x00c0, + 0x36: 0x00c0, 0x37: 0x00c0, 0x38: 0x00c0, 0x39: 0x00c0, 0x3a: 0x00c0, 0x3b: 0x00c0, + 0x3c: 0x00c0, 0x3d: 0x00c0, 0x3e: 0x00c0, 0x3f: 0x00c0, + // Block 0x1, offset 0x40 + 0x40: 0x00c0, 0x41: 0x00c0, 0x42: 0x00c0, 0x43: 0x00c0, 0x44: 0x00c0, 0x45: 0x00c0, + 0x46: 0x00c0, 0x47: 0x00c0, 0x48: 0x00c0, 0x49: 0x00c0, 0x4a: 0x00c0, 0x4b: 0x00c0, + 0x4c: 0x00c0, 0x4d: 0x00c0, 0x4e: 0x00c0, 0x4f: 0x00c0, 0x50: 0x00c0, 0x51: 0x00c0, + 0x52: 0x00c0, 0x53: 0x00c0, 0x54: 0x00c0, 0x55: 0x00c0, 0x56: 0x00c0, 0x57: 0x00c0, + 0x58: 0x00c0, 0x59: 0x00c0, 0x5a: 0x00c0, 0x5b: 0x00c0, 0x5c: 0x00c0, 0x5d: 0x00c0, + 0x5e: 0x00c0, 0x5f: 0x00c0, 0x60: 0x00c0, 0x61: 0x00c0, 0x62: 0x00c0, 0x63: 0x00c0, + 0x64: 0x00c0, 0x65: 0x00c0, 0x66: 0x00c0, 0x67: 0x00c0, 0x68: 0x00c0, 0x69: 0x00c0, + 0x6a: 0x00c0, 0x6b: 0x00c0, 0x6c: 0x00c7, 0x6d: 0x00c0, 0x6e: 0x00c0, 0x6f: 0x00c0, + 0x70: 0x00c0, 0x71: 0x00c0, 0x72: 0x00c0, 0x73: 0x00c0, 0x74: 0x00c0, 0x75: 0x00c0, + 0x76: 0x00c0, 0x77: 0x00c0, 0x78: 0x00c0, 0x79: 0x00c0, 0x7a: 0x00c0, 0x7b: 0x00c0, + 0x7c: 0x00c0, 0x7d: 0x00c0, 0x7e: 0x00c0, 0x7f: 0x0040, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, + 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, + 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, + 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, + 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, + 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x0080, 0xe1: 0x0080, 0xe2: 0x0080, 0xe3: 0x0080, + 0xe4: 0x0080, 0xe5: 0x0080, 0xe6: 0x0080, 0xe7: 0x0080, 0xe8: 0x0080, 0xe9: 0x0080, + 0xea: 0x0080, 0xeb: 0x0080, 0xec: 0x0080, 0xed: 0x0040, 0xee: 0x0080, 0xef: 0x0080, + 0xf0: 0x0080, 0xf1: 0x0080, 0xf2: 0x0080, 0xf3: 0x0080, 0xf4: 0x0080, 0xf5: 0x0080, + 0xf6: 0x0080, 0xf7: 0x004f, 0xf8: 0x0080, 0xf9: 0x0080, 0xfa: 0x0080, 0xfb: 0x0080, + 0xfc: 0x0080, 0xfd: 0x0080, 0xfe: 0x0080, 0xff: 0x0080, + // Block 0x4, offset 0x100 + 0x100: 0x00c0, 0x101: 0x00c0, 0x102: 0x00c0, 0x103: 0x00c0, 0x104: 0x00c0, 0x105: 0x00c0, + 0x106: 0x00c0, 0x107: 0x00c0, 0x108: 0x00c0, 0x109: 0x00c0, 0x10a: 0x00c0, 0x10b: 0x00c0, + 0x10c: 0x00c0, 0x10d: 0x00c0, 0x10e: 0x00c0, 0x10f: 0x00c0, 0x110: 0x00c0, 0x111: 0x00c0, + 0x112: 0x00c0, 0x113: 0x00c0, 0x114: 0x00c0, 0x115: 0x00c0, 0x116: 0x00c0, 0x117: 0x0080, + 0x118: 0x00c0, 0x119: 0x00c0, 0x11a: 0x00c0, 0x11b: 0x00c0, 0x11c: 0x00c0, 0x11d: 0x00c0, + 0x11e: 0x00c0, 0x11f: 0x00c0, 0x120: 0x00c0, 0x121: 0x00c0, 0x122: 0x00c0, 0x123: 0x00c0, + 0x124: 0x00c0, 0x125: 0x00c0, 0x126: 0x00c0, 0x127: 0x00c0, 0x128: 0x00c0, 0x129: 0x00c0, + 0x12a: 0x00c0, 0x12b: 0x00c0, 0x12c: 0x00c0, 0x12d: 0x00c0, 0x12e: 0x00c0, 0x12f: 0x00c0, + 0x130: 0x00c0, 0x131: 0x00c0, 0x132: 0x00c0, 0x133: 0x00c0, 0x134: 0x00c0, 0x135: 0x00c0, + 0x136: 0x00c0, 0x137: 0x0080, 0x138: 0x00c0, 0x139: 0x00c0, 0x13a: 0x00c0, 0x13b: 0x00c0, + 0x13c: 0x00c0, 0x13d: 0x00c0, 0x13e: 0x00c0, 0x13f: 0x00c0, + // Block 0x5, offset 0x140 + 0x140: 0x00c0, 0x141: 0x00c0, 0x142: 0x00c0, 0x143: 0x00c0, 0x144: 0x00c0, 0x145: 0x00c0, + 0x146: 0x00c0, 0x147: 0x00c0, 0x148: 0x00c0, 0x149: 0x00c0, 0x14a: 0x00c0, 0x14b: 0x00c0, + 0x14c: 0x00c0, 0x14d: 0x00c0, 0x14e: 0x00c0, 0x14f: 0x00c0, 0x150: 0x00c0, 0x151: 0x00c0, + 0x152: 0x00c0, 0x153: 0x00c0, 0x154: 0x00c0, 0x155: 0x00c0, 0x156: 0x00c0, 0x157: 0x00c0, + 0x158: 0x00c0, 0x159: 0x00c0, 0x15a: 0x00c0, 0x15b: 0x00c0, 0x15c: 0x00c0, 0x15d: 0x00c0, + 0x15e: 0x00c0, 0x15f: 0x00c0, 0x160: 0x00c0, 0x161: 0x00c0, 0x162: 0x00c0, 0x163: 0x00c0, + 0x164: 0x00c0, 0x165: 0x00c0, 0x166: 0x00c0, 0x167: 0x00c0, 0x168: 0x00c0, 0x169: 0x00c0, + 0x16a: 0x00c0, 0x16b: 0x00c0, 0x16c: 0x00c0, 0x16d: 0x00c0, 0x16e: 0x00c0, 0x16f: 0x00c0, + 0x170: 0x00c0, 0x171: 0x00c0, 0x172: 0x0080, 0x173: 0x0080, 0x174: 0x00c0, 0x175: 0x00c0, + 0x176: 0x00c0, 0x177: 0x00c0, 0x178: 0x00c0, 0x179: 0x00c0, 0x17a: 0x00c0, 0x17b: 0x00c0, + 0x17c: 0x00c0, 0x17d: 0x00c0, 0x17e: 0x00c0, 0x17f: 0x0080, + // Block 0x6, offset 0x180 + 0x180: 0x0080, 0x181: 0x00c0, 0x182: 0x00c0, 0x183: 0x00c0, 0x184: 0x00c0, 0x185: 0x00c0, + 0x186: 0x00c0, 0x187: 0x00c0, 0x188: 0x00c0, 0x189: 0x0080, 0x18a: 0x00c0, 0x18b: 0x00c0, + 0x18c: 0x00c0, 0x18d: 0x00c0, 0x18e: 0x00c0, 0x18f: 0x00c0, 0x190: 0x00c0, 0x191: 0x00c0, + 0x192: 0x00c0, 0x193: 0x00c0, 0x194: 0x00c0, 0x195: 0x00c0, 0x196: 0x00c0, 0x197: 0x00c0, + 0x198: 0x00c0, 0x199: 0x00c0, 0x19a: 0x00c0, 0x19b: 0x00c0, 0x19c: 0x00c0, 0x19d: 0x00c0, + 0x19e: 0x00c0, 0x19f: 0x00c0, 0x1a0: 0x00c0, 0x1a1: 0x00c0, 0x1a2: 0x00c0, 0x1a3: 0x00c0, + 0x1a4: 0x00c0, 0x1a5: 0x00c0, 0x1a6: 0x00c0, 0x1a7: 0x00c0, 0x1a8: 0x00c0, 0x1a9: 0x00c0, + 0x1aa: 0x00c0, 0x1ab: 0x00c0, 0x1ac: 0x00c0, 0x1ad: 0x00c0, 0x1ae: 0x00c0, 0x1af: 0x00c0, + 0x1b0: 0x00c0, 0x1b1: 0x00c0, 0x1b2: 0x00c0, 0x1b3: 0x00c0, 0x1b4: 0x00c0, 0x1b5: 0x00c0, + 0x1b6: 0x00c0, 0x1b7: 0x00c0, 0x1b8: 0x00c0, 0x1b9: 0x00c0, 0x1ba: 0x00c0, 0x1bb: 0x00c0, + 0x1bc: 0x00c0, 0x1bd: 0x00c0, 0x1be: 0x00c0, 0x1bf: 0x0080, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x00c0, 0x1c1: 0x00c0, 0x1c2: 0x00c0, 0x1c3: 0x00c0, 0x1c4: 0x00c0, 0x1c5: 0x00c0, + 0x1c6: 0x00c0, 0x1c7: 0x00c0, 0x1c8: 0x00c0, 0x1c9: 0x00c0, 0x1ca: 0x00c0, 0x1cb: 0x00c0, + 0x1cc: 0x00c0, 0x1cd: 0x00c0, 0x1ce: 0x00c0, 0x1cf: 0x00c0, 0x1d0: 0x00c0, 0x1d1: 0x00c0, + 0x1d2: 0x00c0, 0x1d3: 0x00c0, 0x1d4: 0x00c0, 0x1d5: 0x00c0, 0x1d6: 0x00c0, 0x1d7: 0x00c0, + 0x1d8: 0x00c0, 0x1d9: 0x00c0, 0x1da: 0x00c0, 0x1db: 0x00c0, 0x1dc: 0x00c0, 0x1dd: 0x00c0, + 0x1de: 0x00c0, 0x1df: 0x00c0, 0x1e0: 0x00c0, 0x1e1: 0x00c0, 0x1e2: 0x00c0, 0x1e3: 0x00c0, + 0x1e4: 0x00c0, 0x1e5: 0x00c0, 0x1e6: 0x00c0, 0x1e7: 0x00c0, 0x1e8: 0x00c0, 0x1e9: 0x00c0, + 0x1ea: 0x00c0, 0x1eb: 0x00c0, 0x1ec: 0x00c0, 0x1ed: 0x00c0, 0x1ee: 0x00c0, 0x1ef: 0x00c0, + 0x1f0: 0x00c0, 0x1f1: 0x00c0, 0x1f2: 0x00c0, 0x1f3: 0x00c0, 0x1f4: 0x00c0, 0x1f5: 0x00c0, + 0x1f6: 0x00c0, 0x1f7: 0x00c0, 0x1f8: 0x00c0, 0x1f9: 0x00c0, 0x1fa: 0x00c0, 0x1fb: 0x00c0, + 0x1fc: 0x00c0, 0x1fd: 0x00c0, 0x1fe: 0x00c0, 0x1ff: 0x00c0, + // Block 0x8, offset 0x200 + 0x200: 0x00c0, 0x201: 0x00c0, 0x202: 0x00c0, 0x203: 0x00c0, 0x204: 0x0080, 0x205: 0x0080, + 0x206: 0x0080, 0x207: 0x0080, 0x208: 0x0080, 0x209: 0x0080, 0x20a: 0x0080, 0x20b: 0x0080, + 0x20c: 0x0080, 0x20d: 0x00c0, 0x20e: 0x00c0, 0x20f: 0x00c0, 0x210: 0x00c0, 0x211: 0x00c0, + 0x212: 0x00c0, 0x213: 0x00c0, 0x214: 0x00c0, 0x215: 0x00c0, 0x216: 0x00c0, 0x217: 0x00c0, + 0x218: 0x00c0, 0x219: 0x00c0, 0x21a: 0x00c0, 0x21b: 0x00c0, 0x21c: 0x00c0, 0x21d: 0x00c0, + 0x21e: 0x00c0, 0x21f: 0x00c0, 0x220: 0x00c0, 0x221: 0x00c0, 0x222: 0x00c0, 0x223: 0x00c0, + 0x224: 0x00c0, 0x225: 0x00c0, 0x226: 0x00c0, 0x227: 0x00c0, 0x228: 0x00c0, 0x229: 0x00c0, + 0x22a: 0x00c0, 0x22b: 0x00c0, 0x22c: 0x00c0, 0x22d: 0x00c0, 0x22e: 0x00c0, 0x22f: 0x00c0, + 0x230: 0x00c0, 0x231: 0x0080, 0x232: 0x0080, 0x233: 0x0080, 0x234: 0x00c0, 0x235: 0x00c0, + 0x236: 0x00c0, 0x237: 0x00c0, 0x238: 0x00c0, 0x239: 0x00c0, 0x23a: 0x00c0, 0x23b: 0x00c0, + 0x23c: 0x00c0, 0x23d: 0x00c0, 0x23e: 0x00c0, 0x23f: 0x00c0, + // Block 0x9, offset 0x240 + 0x240: 0x00c0, 0x241: 0x00c0, 0x242: 0x00c0, 0x243: 0x00c0, 0x244: 0x00c0, 0x245: 0x00c0, + 0x246: 0x00c0, 0x247: 0x00c0, 0x248: 0x00c0, 0x249: 0x00c0, 0x24a: 0x00c0, 0x24b: 0x00c0, + 0x24c: 0x00c0, 0x24d: 0x00c0, 0x24e: 0x00c0, 0x24f: 0x00c0, 0x250: 0x00c0, 0x251: 0x00c0, + 0x252: 0x00c0, 0x253: 0x00c0, 0x254: 0x00c0, 0x255: 0x00c0, 0x256: 0x00c0, 0x257: 0x00c0, + 0x258: 0x00c0, 0x259: 0x00c0, 0x25a: 0x00c0, 0x25b: 0x00c0, 0x25c: 0x00c0, 0x25d: 0x00c0, + 0x25e: 0x00c0, 0x25f: 0x00c0, 0x260: 0x00c0, 0x261: 0x00c0, 0x262: 0x00c0, 0x263: 0x00c0, + 0x264: 0x00c0, 0x265: 0x00c0, 0x266: 0x00c0, 0x267: 0x00c0, 0x268: 0x00c0, 0x269: 0x00c0, + 0x26a: 0x00c0, 0x26b: 0x00c0, 0x26c: 0x00c0, 0x26d: 0x00c0, 0x26e: 0x00c0, 0x26f: 0x00c0, + 0x270: 0x0080, 0x271: 0x0080, 0x272: 0x0080, 0x273: 0x0080, 0x274: 0x0080, 0x275: 0x0080, + 0x276: 0x0080, 0x277: 0x0080, 0x278: 0x0080, 0x279: 0x00c0, 0x27a: 0x00c0, 0x27b: 0x00c0, + 0x27c: 0x00c0, 0x27d: 0x00c0, 0x27e: 0x00c0, 0x27f: 0x00c0, + // Block 0xa, offset 0x280 + 0x280: 0x00c0, 0x281: 0x00c0, 0x282: 0x0080, 0x283: 0x0080, 0x284: 0x0080, 0x285: 0x0080, + 0x286: 0x00c0, 0x287: 0x00c0, 0x288: 0x00c0, 0x289: 0x00c0, 0x28a: 0x00c0, 0x28b: 0x00c0, + 0x28c: 0x00c0, 0x28d: 0x00c0, 0x28e: 0x00c0, 0x28f: 0x00c0, 0x290: 0x00c0, 0x291: 0x00c0, + 0x292: 0x0080, 0x293: 0x0080, 0x294: 0x0080, 0x295: 0x0080, 0x296: 0x0080, 0x297: 0x0080, + 0x298: 0x0080, 0x299: 0x0080, 0x29a: 0x0080, 0x29b: 0x0080, 0x29c: 0x0080, 0x29d: 0x0080, + 0x29e: 0x0080, 0x29f: 0x0080, 0x2a0: 0x0080, 0x2a1: 0x0080, 0x2a2: 0x0080, 0x2a3: 0x0080, + 0x2a4: 0x0080, 0x2a5: 0x0080, 0x2a6: 0x0080, 0x2a7: 0x0080, 0x2a8: 0x0080, 0x2a9: 0x0080, + 0x2aa: 0x0080, 0x2ab: 0x0080, 0x2ac: 0x00c0, 0x2ad: 0x0080, 0x2ae: 0x00c0, 0x2af: 0x0080, + 0x2b0: 0x0080, 0x2b1: 0x0080, 0x2b2: 0x0080, 0x2b3: 0x0080, 0x2b4: 0x0080, 0x2b5: 0x0080, + 0x2b6: 0x0080, 0x2b7: 0x0080, 0x2b8: 0x0080, 0x2b9: 0x0080, 0x2ba: 0x0080, 0x2bb: 0x0080, + 0x2bc: 0x0080, 0x2bd: 0x0080, 0x2be: 0x0080, 0x2bf: 0x0080, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x00c3, 0x2c1: 0x00c3, 0x2c2: 0x00c3, 0x2c3: 0x00c3, 0x2c4: 0x00c3, 0x2c5: 0x00c3, + 0x2c6: 0x00c3, 0x2c7: 0x00c3, 0x2c8: 0x00c3, 0x2c9: 0x00c3, 0x2ca: 0x00c3, 0x2cb: 0x00c3, + 0x2cc: 0x00c3, 0x2cd: 0x00c3, 0x2ce: 0x00c3, 0x2cf: 0x00c3, 0x2d0: 0x00c3, 0x2d1: 0x00c3, + 0x2d2: 0x00c3, 0x2d3: 0x00c3, 0x2d4: 0x00c3, 0x2d5: 0x00c3, 0x2d6: 0x00c3, 0x2d7: 0x00c3, + 0x2d8: 0x00c3, 0x2d9: 0x00c3, 0x2da: 0x00c3, 0x2db: 0x00c3, 0x2dc: 0x00c3, 0x2dd: 0x00c3, + 0x2de: 0x00c3, 0x2df: 0x00c3, 0x2e0: 0x00c3, 0x2e1: 0x00c3, 0x2e2: 0x00c3, 0x2e3: 0x00c3, + 0x2e4: 0x00c3, 0x2e5: 0x00c3, 0x2e6: 0x00c3, 0x2e7: 0x00c3, 0x2e8: 0x00c3, 0x2e9: 0x00c3, + 0x2ea: 0x00c3, 0x2eb: 0x00c3, 0x2ec: 0x00c3, 0x2ed: 0x00c3, 0x2ee: 0x00c3, 0x2ef: 0x00c3, + 0x2f0: 0x00c3, 0x2f1: 0x00c3, 0x2f2: 0x00c3, 0x2f3: 0x00c3, 0x2f4: 0x00c3, 0x2f5: 0x00c3, + 0x2f6: 0x00c3, 0x2f7: 0x00c3, 0x2f8: 0x00c3, 0x2f9: 0x00c3, 0x2fa: 0x00c3, 0x2fb: 0x00c3, + 0x2fc: 0x00c3, 0x2fd: 0x00c3, 0x2fe: 0x00c3, 0x2ff: 0x00c3, + // Block 0xc, offset 0x300 + 0x300: 0x0083, 0x301: 0x0083, 0x302: 0x00c3, 0x303: 0x0083, 0x304: 0x0083, 0x305: 0x00c3, + 0x306: 0x00c3, 0x307: 0x00c3, 0x308: 0x00c3, 0x309: 0x00c3, 0x30a: 0x00c3, 0x30b: 0x00c3, + 0x30c: 0x00c3, 0x30d: 0x00c3, 0x30e: 0x00c3, 0x30f: 0x0040, 0x310: 0x00c3, 0x311: 0x00c3, + 0x312: 0x00c3, 0x313: 0x00c3, 0x314: 0x00c3, 0x315: 0x00c3, 0x316: 0x00c3, 0x317: 0x00c3, + 0x318: 0x00c3, 0x319: 0x00c3, 0x31a: 0x00c3, 0x31b: 0x00c3, 0x31c: 0x00c3, 0x31d: 0x00c3, + 0x31e: 0x00c3, 0x31f: 0x00c3, 0x320: 0x00c3, 0x321: 0x00c3, 0x322: 0x00c3, 0x323: 0x00c3, + 0x324: 0x00c3, 0x325: 0x00c3, 0x326: 0x00c3, 0x327: 0x00c3, 0x328: 0x00c3, 0x329: 0x00c3, + 0x32a: 0x00c3, 0x32b: 0x00c3, 0x32c: 0x00c3, 0x32d: 0x00c3, 0x32e: 0x00c3, 0x32f: 0x00c3, + 0x330: 0x00c8, 0x331: 0x00c8, 0x332: 0x00c8, 0x333: 0x00c8, 0x334: 0x0080, 0x335: 0x0050, + 0x336: 0x00c8, 0x337: 0x00c8, 0x33a: 0x0088, 0x33b: 0x00c8, + 0x33c: 0x00c8, 0x33d: 0x00c8, 0x33e: 0x0080, 0x33f: 0x00c8, + // Block 0xd, offset 0x340 + 0x344: 0x0088, 0x345: 0x0080, + 0x346: 0x00c8, 0x347: 0x0080, 0x348: 0x00c8, 0x349: 0x00c8, 0x34a: 0x00c8, + 0x34c: 0x00c8, 0x34e: 0x00c8, 0x34f: 0x00c8, 0x350: 0x00c8, 0x351: 0x00c8, + 0x352: 0x00c8, 0x353: 0x00c8, 0x354: 0x00c8, 0x355: 0x00c8, 0x356: 0x00c8, 0x357: 0x00c8, + 0x358: 0x00c8, 0x359: 0x00c8, 0x35a: 0x00c8, 0x35b: 0x00c8, 0x35c: 0x00c8, 0x35d: 0x00c8, + 0x35e: 0x00c8, 0x35f: 0x00c8, 0x360: 0x00c8, 0x361: 0x00c8, 0x363: 0x00c8, + 0x364: 0x00c8, 0x365: 0x00c8, 0x366: 0x00c8, 0x367: 0x00c8, 0x368: 0x00c8, 0x369: 0x00c8, + 0x36a: 0x00c8, 0x36b: 0x00c8, 0x36c: 0x00c8, 0x36d: 0x00c8, 0x36e: 0x00c8, 0x36f: 0x00c8, + 0x370: 0x00c8, 0x371: 0x00c8, 0x372: 0x00c8, 0x373: 0x00c8, 0x374: 0x00c8, 0x375: 0x00c8, + 0x376: 0x00c8, 0x377: 0x00c8, 0x378: 0x00c8, 0x379: 0x00c8, 0x37a: 0x00c8, 0x37b: 0x00c8, + 0x37c: 0x00c8, 0x37d: 0x00c8, 0x37e: 0x00c8, 0x37f: 0x00c8, + // Block 0xe, offset 0x380 + 0x380: 0x00c8, 0x381: 0x00c8, 0x382: 0x00c8, 0x383: 0x00c8, 0x384: 0x00c8, 0x385: 0x00c8, + 0x386: 0x00c8, 0x387: 0x00c8, 0x388: 0x00c8, 0x389: 0x00c8, 0x38a: 0x00c8, 0x38b: 0x00c8, + 0x38c: 0x00c8, 0x38d: 0x00c8, 0x38e: 0x00c8, 0x38f: 0x00c8, 0x390: 0x0088, 0x391: 0x0088, + 0x392: 0x0088, 0x393: 0x0088, 0x394: 0x0088, 0x395: 0x0088, 0x396: 0x0088, 0x397: 0x00c8, + 0x398: 0x00c8, 0x399: 0x00c8, 0x39a: 0x00c8, 0x39b: 0x00c8, 0x39c: 0x00c8, 0x39d: 0x00c8, + 0x39e: 0x00c8, 0x39f: 0x00c8, 0x3a0: 0x00c8, 0x3a1: 0x00c8, 0x3a2: 0x00c0, 0x3a3: 0x00c0, + 0x3a4: 0x00c0, 0x3a5: 0x00c0, 0x3a6: 0x00c0, 0x3a7: 0x00c0, 0x3a8: 0x00c0, 0x3a9: 0x00c0, + 0x3aa: 0x00c0, 0x3ab: 0x00c0, 0x3ac: 0x00c0, 0x3ad: 0x00c0, 0x3ae: 0x00c0, 0x3af: 0x00c0, + 0x3b0: 0x0088, 0x3b1: 0x0088, 0x3b2: 0x0088, 0x3b3: 0x00c8, 0x3b4: 0x0088, 0x3b5: 0x0088, + 0x3b6: 0x0088, 0x3b7: 0x00c8, 0x3b8: 0x00c8, 0x3b9: 0x0088, 0x3ba: 0x00c8, 0x3bb: 0x00c8, + 0x3bc: 0x00c8, 0x3bd: 0x00c8, 0x3be: 0x00c8, 0x3bf: 0x00c8, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x00c0, 0x3c1: 0x00c0, 0x3c2: 0x0080, 0x3c3: 0x00c3, 0x3c4: 0x00c3, 0x3c5: 0x00c3, + 0x3c6: 0x00c3, 0x3c7: 0x00c3, 0x3c8: 0x0083, 0x3c9: 0x0083, 0x3ca: 0x00c0, 0x3cb: 0x00c0, + 0x3cc: 0x00c0, 0x3cd: 0x00c0, 0x3ce: 0x00c0, 0x3cf: 0x00c0, 0x3d0: 0x00c0, 0x3d1: 0x00c0, + 0x3d2: 0x00c0, 0x3d3: 0x00c0, 0x3d4: 0x00c0, 0x3d5: 0x00c0, 0x3d6: 0x00c0, 0x3d7: 0x00c0, + 0x3d8: 0x00c0, 0x3d9: 0x00c0, 0x3da: 0x00c0, 0x3db: 0x00c0, 0x3dc: 0x00c0, 0x3dd: 0x00c0, + 0x3de: 0x00c0, 0x3df: 0x00c0, 0x3e0: 0x00c0, 0x3e1: 0x00c0, 0x3e2: 0x00c0, 0x3e3: 0x00c0, + 0x3e4: 0x00c0, 0x3e5: 0x00c0, 0x3e6: 0x00c0, 0x3e7: 0x00c0, 0x3e8: 0x00c0, 0x3e9: 0x00c0, + 0x3ea: 0x00c0, 0x3eb: 0x00c0, 0x3ec: 0x00c0, 0x3ed: 0x00c0, 0x3ee: 0x00c0, 0x3ef: 0x00c0, + 0x3f0: 0x00c0, 0x3f1: 0x00c0, 0x3f2: 0x00c0, 0x3f3: 0x00c0, 0x3f4: 0x00c0, 0x3f5: 0x00c0, + 0x3f6: 0x00c0, 0x3f7: 0x00c0, 0x3f8: 0x00c0, 0x3f9: 0x00c0, 0x3fa: 0x00c0, 0x3fb: 0x00c0, + 0x3fc: 0x00c0, 0x3fd: 0x00c0, 0x3fe: 0x00c0, 0x3ff: 0x00c0, + // Block 0x10, offset 0x400 + 0x400: 0x00c0, 0x401: 0x00c0, 0x402: 0x00c0, 0x403: 0x00c0, 0x404: 0x00c0, 0x405: 0x00c0, + 0x406: 0x00c0, 0x407: 0x00c0, 0x408: 0x00c0, 0x409: 0x00c0, 0x40a: 0x00c0, 0x40b: 0x00c0, + 0x40c: 0x00c0, 0x40d: 0x00c0, 0x40e: 0x00c0, 0x40f: 0x00c0, 0x410: 0x00c0, 0x411: 0x00c0, + 0x412: 0x00c0, 0x413: 0x00c0, 0x414: 0x00c0, 0x415: 0x00c0, 0x416: 0x00c0, 0x417: 0x00c0, + 0x418: 0x00c0, 0x419: 0x00c0, 0x41a: 0x00c0, 0x41b: 0x00c0, 0x41c: 0x00c0, 0x41d: 0x00c0, + 0x41e: 0x00c0, 0x41f: 0x00c0, 0x420: 0x00c0, 0x421: 0x00c0, 0x422: 0x00c0, 0x423: 0x00c0, + 0x424: 0x00c0, 0x425: 0x00c0, 0x426: 0x00c0, 0x427: 0x00c0, 0x428: 0x00c0, 0x429: 0x00c0, + 0x42a: 0x00c0, 0x42b: 0x00c0, 0x42c: 0x00c0, 0x42d: 0x00c0, 0x42e: 0x00c0, 0x42f: 0x00c0, + 0x431: 0x00c0, 0x432: 0x00c0, 0x433: 0x00c0, 0x434: 0x00c0, 0x435: 0x00c0, + 0x436: 0x00c0, 0x437: 0x00c0, 0x438: 0x00c0, 0x439: 0x00c0, 0x43a: 0x00c0, 0x43b: 0x00c0, + 0x43c: 0x00c0, 0x43d: 0x00c0, 0x43e: 0x00c0, 0x43f: 0x00c0, + // Block 0x11, offset 0x440 + 0x440: 0x00c0, 0x441: 0x00c0, 0x442: 0x00c0, 0x443: 0x00c0, 0x444: 0x00c0, 0x445: 0x00c0, + 0x446: 0x00c0, 0x447: 0x00c0, 0x448: 0x00c0, 0x449: 0x00c0, 0x44a: 0x00c0, 0x44b: 0x00c0, + 0x44c: 0x00c0, 0x44d: 0x00c0, 0x44e: 0x00c0, 0x44f: 0x00c0, 0x450: 0x00c0, 0x451: 0x00c0, + 0x452: 0x00c0, 0x453: 0x00c0, 0x454: 0x00c0, 0x455: 0x00c0, 0x456: 0x00c0, + 0x459: 0x00c0, 0x45a: 0x0080, 0x45b: 0x0080, 0x45c: 0x0080, 0x45d: 0x0080, + 0x45e: 0x0080, 0x45f: 0x0080, 0x461: 0x00c0, 0x462: 0x00c0, 0x463: 0x00c0, + 0x464: 0x00c0, 0x465: 0x00c0, 0x466: 0x00c0, 0x467: 0x00c0, 0x468: 0x00c0, 0x469: 0x00c0, + 0x46a: 0x00c0, 0x46b: 0x00c0, 0x46c: 0x00c0, 0x46d: 0x00c0, 0x46e: 0x00c0, 0x46f: 0x00c0, + 0x470: 0x00c0, 0x471: 0x00c0, 0x472: 0x00c0, 0x473: 0x00c0, 0x474: 0x00c0, 0x475: 0x00c0, + 0x476: 0x00c0, 0x477: 0x00c0, 0x478: 0x00c0, 0x479: 0x00c0, 0x47a: 0x00c0, 0x47b: 0x00c0, + 0x47c: 0x00c0, 0x47d: 0x00c0, 0x47e: 0x00c0, 0x47f: 0x00c0, + // Block 0x12, offset 0x480 + 0x480: 0x00c0, 0x481: 0x00c0, 0x482: 0x00c0, 0x483: 0x00c0, 0x484: 0x00c0, 0x485: 0x00c0, + 0x486: 0x00c0, 0x487: 0x0080, 0x489: 0x0080, 0x48a: 0x0080, + 0x48d: 0x0080, 0x48e: 0x0080, 0x48f: 0x0080, 0x491: 0x00cb, + 0x492: 0x00cb, 0x493: 0x00cb, 0x494: 0x00cb, 0x495: 0x00cb, 0x496: 0x00cb, 0x497: 0x00cb, + 0x498: 0x00cb, 0x499: 0x00cb, 0x49a: 0x00cb, 0x49b: 0x00cb, 0x49c: 0x00cb, 0x49d: 0x00cb, + 0x49e: 0x00cb, 0x49f: 0x00cb, 0x4a0: 0x00cb, 0x4a1: 0x00cb, 0x4a2: 0x00cb, 0x4a3: 0x00cb, + 0x4a4: 0x00cb, 0x4a5: 0x00cb, 0x4a6: 0x00cb, 0x4a7: 0x00cb, 0x4a8: 0x00cb, 0x4a9: 0x00cb, + 0x4aa: 0x00cb, 0x4ab: 0x00cb, 0x4ac: 0x00cb, 0x4ad: 0x00cb, 0x4ae: 0x00cb, 0x4af: 0x00cb, + 0x4b0: 0x00cb, 0x4b1: 0x00cb, 0x4b2: 0x00cb, 0x4b3: 0x00cb, 0x4b4: 0x00cb, 0x4b5: 0x00cb, + 0x4b6: 0x00cb, 0x4b7: 0x00cb, 0x4b8: 0x00cb, 0x4b9: 0x00cb, 0x4ba: 0x00cb, 0x4bb: 0x00cb, + 0x4bc: 0x00cb, 0x4bd: 0x00cb, 0x4be: 0x008a, 0x4bf: 0x00cb, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x008a, 0x4c1: 0x00cb, 0x4c2: 0x00cb, 0x4c3: 0x008a, 0x4c4: 0x00cb, 0x4c5: 0x00cb, + 0x4c6: 0x008a, 0x4c7: 0x00cb, + 0x4d0: 0x00ca, 0x4d1: 0x00ca, + 0x4d2: 0x00ca, 0x4d3: 0x00ca, 0x4d4: 0x00ca, 0x4d5: 0x00ca, 0x4d6: 0x00ca, 0x4d7: 0x00ca, + 0x4d8: 0x00ca, 0x4d9: 0x00ca, 0x4da: 0x00ca, 0x4db: 0x00ca, 0x4dc: 0x00ca, 0x4dd: 0x00ca, + 0x4de: 0x00ca, 0x4df: 0x00ca, 0x4e0: 0x00ca, 0x4e1: 0x00ca, 0x4e2: 0x00ca, 0x4e3: 0x00ca, + 0x4e4: 0x00ca, 0x4e5: 0x00ca, 0x4e6: 0x00ca, 0x4e7: 0x00ca, 0x4e8: 0x00ca, 0x4e9: 0x00ca, + 0x4ea: 0x00ca, + 0x4f0: 0x00ca, 0x4f1: 0x00ca, 0x4f2: 0x00ca, 0x4f3: 0x0051, 0x4f4: 0x0051, + // Block 0x14, offset 0x500 + 0x500: 0x0040, 0x501: 0x0040, 0x502: 0x0040, 0x503: 0x0040, 0x504: 0x0040, 0x505: 0x0040, + 0x506: 0x0080, 0x507: 0x0080, 0x508: 0x0080, 0x509: 0x0080, 0x50a: 0x0080, 0x50b: 0x0080, + 0x50c: 0x0080, 0x50d: 0x0080, 0x50e: 0x0080, 0x50f: 0x0080, 0x510: 0x00c3, 0x511: 0x00c3, + 0x512: 0x00c3, 0x513: 0x00c3, 0x514: 0x00c3, 0x515: 0x00c3, 0x516: 0x00c3, 0x517: 0x00c3, + 0x518: 0x00c3, 0x519: 0x00c3, 0x51a: 0x00c3, 0x51b: 0x0080, 0x51c: 0x0040, + 0x51e: 0x0080, 0x51f: 0x0080, 0x520: 0x00c2, 0x521: 0x00c0, 0x522: 0x00c4, 0x523: 0x00c4, + 0x524: 0x00c4, 0x525: 0x00c4, 0x526: 0x00c2, 0x527: 0x00c4, 0x528: 0x00c2, 0x529: 0x00c4, + 0x52a: 0x00c2, 0x52b: 0x00c2, 0x52c: 0x00c2, 0x52d: 0x00c2, 0x52e: 0x00c2, 0x52f: 0x00c4, + 0x530: 0x00c4, 0x531: 0x00c4, 0x532: 0x00c4, 0x533: 0x00c2, 0x534: 0x00c2, 0x535: 0x00c2, + 0x536: 0x00c2, 0x537: 0x00c2, 0x538: 0x00c2, 0x539: 0x00c2, 0x53a: 0x00c2, 0x53b: 0x00c2, + 0x53c: 0x00c2, 0x53d: 0x00c2, 0x53e: 0x00c2, 0x53f: 0x00c2, + // Block 0x15, offset 0x540 + 0x540: 0x0040, 0x541: 0x00c2, 0x542: 0x00c2, 0x543: 0x00c2, 0x544: 0x00c2, 0x545: 0x00c2, + 0x546: 0x00c2, 0x547: 0x00c2, 0x548: 0x00c4, 0x549: 0x00c2, 0x54a: 0x00c2, 0x54b: 0x00c3, + 0x54c: 0x00c3, 0x54d: 0x00c3, 0x54e: 0x00c3, 0x54f: 0x00c3, 0x550: 0x00c3, 0x551: 0x00c3, + 0x552: 0x00c3, 0x553: 0x00c3, 0x554: 0x00c3, 0x555: 0x00c3, 0x556: 0x00c3, 0x557: 0x00c3, + 0x558: 0x00c3, 0x559: 0x00c3, 0x55a: 0x00c3, 0x55b: 0x00c3, 0x55c: 0x00c3, 0x55d: 0x00c3, + 0x55e: 0x00c3, 0x55f: 0x00c3, 0x560: 0x0053, 0x561: 0x0053, 0x562: 0x0053, 0x563: 0x0053, + 0x564: 0x0053, 0x565: 0x0053, 0x566: 0x0053, 0x567: 0x0053, 0x568: 0x0053, 0x569: 0x0053, + 0x56a: 0x0080, 0x56b: 0x0080, 0x56c: 0x0080, 0x56d: 0x0080, 0x56e: 0x00c2, 0x56f: 0x00c2, + 0x570: 0x00c3, 0x571: 0x00c4, 0x572: 0x00c4, 0x573: 0x00c4, 0x574: 0x00c0, 0x575: 0x0084, + 0x576: 0x0084, 0x577: 0x0084, 0x578: 0x0082, 0x579: 0x00c2, 0x57a: 0x00c2, 0x57b: 0x00c2, + 0x57c: 0x00c2, 0x57d: 0x00c2, 0x57e: 0x00c2, 0x57f: 0x00c2, + // Block 0x16, offset 0x580 + 0x580: 0x00c2, 0x581: 0x00c2, 0x582: 0x00c2, 0x583: 0x00c2, 0x584: 0x00c2, 0x585: 0x00c2, + 0x586: 0x00c2, 0x587: 0x00c2, 0x588: 0x00c4, 0x589: 0x00c4, 0x58a: 0x00c4, 0x58b: 0x00c4, + 0x58c: 0x00c4, 0x58d: 0x00c4, 0x58e: 0x00c4, 0x58f: 0x00c4, 0x590: 0x00c4, 0x591: 0x00c4, + 0x592: 0x00c4, 0x593: 0x00c4, 0x594: 0x00c4, 0x595: 0x00c4, 0x596: 0x00c4, 0x597: 0x00c4, + 0x598: 0x00c4, 0x599: 0x00c4, 0x59a: 0x00c2, 0x59b: 0x00c2, 0x59c: 0x00c2, 0x59d: 0x00c2, + 0x59e: 0x00c2, 0x59f: 0x00c2, 0x5a0: 0x00c2, 0x5a1: 0x00c2, 0x5a2: 0x00c2, 0x5a3: 0x00c2, + 0x5a4: 0x00c2, 0x5a5: 0x00c2, 0x5a6: 0x00c2, 0x5a7: 0x00c2, 0x5a8: 0x00c2, 0x5a9: 0x00c2, + 0x5aa: 0x00c2, 0x5ab: 0x00c2, 0x5ac: 0x00c2, 0x5ad: 0x00c2, 0x5ae: 0x00c2, 0x5af: 0x00c2, + 0x5b0: 0x00c2, 0x5b1: 0x00c2, 0x5b2: 0x00c2, 0x5b3: 0x00c2, 0x5b4: 0x00c2, 0x5b5: 0x00c2, + 0x5b6: 0x00c2, 0x5b7: 0x00c2, 0x5b8: 0x00c2, 0x5b9: 0x00c2, 0x5ba: 0x00c2, 0x5bb: 0x00c2, + 0x5bc: 0x00c2, 0x5bd: 0x00c2, 0x5be: 0x00c2, 0x5bf: 0x00c2, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x00c4, 0x5c1: 0x00c2, 0x5c2: 0x00c2, 0x5c3: 0x00c4, 0x5c4: 0x00c4, 0x5c5: 0x00c4, + 0x5c6: 0x00c4, 0x5c7: 0x00c4, 0x5c8: 0x00c4, 0x5c9: 0x00c4, 0x5ca: 0x00c4, 0x5cb: 0x00c4, + 0x5cc: 0x00c2, 0x5cd: 0x00c4, 0x5ce: 0x00c2, 0x5cf: 0x00c4, 0x5d0: 0x00c2, 0x5d1: 0x00c2, + 0x5d2: 0x00c4, 0x5d3: 0x00c4, 0x5d4: 0x0080, 0x5d5: 0x00c4, 0x5d6: 0x00c3, 0x5d7: 0x00c3, + 0x5d8: 0x00c3, 0x5d9: 0x00c3, 0x5da: 0x00c3, 0x5db: 0x00c3, 0x5dc: 0x00c3, 0x5dd: 0x0040, + 0x5de: 0x0080, 0x5df: 0x00c3, 0x5e0: 0x00c3, 0x5e1: 0x00c3, 0x5e2: 0x00c3, 0x5e3: 0x00c3, + 0x5e4: 0x00c3, 0x5e5: 0x00c0, 0x5e6: 0x00c0, 0x5e7: 0x00c3, 0x5e8: 0x00c3, 0x5e9: 0x0080, + 0x5ea: 0x00c3, 0x5eb: 0x00c3, 0x5ec: 0x00c3, 0x5ed: 0x00c3, 0x5ee: 0x00c4, 0x5ef: 0x00c4, + 0x5f0: 0x0054, 0x5f1: 0x0054, 0x5f2: 0x0054, 0x5f3: 0x0054, 0x5f4: 0x0054, 0x5f5: 0x0054, + 0x5f6: 0x0054, 0x5f7: 0x0054, 0x5f8: 0x0054, 0x5f9: 0x0054, 0x5fa: 0x00c2, 0x5fb: 0x00c2, + 0x5fc: 0x00c2, 0x5fd: 0x00c0, 0x5fe: 0x00c0, 0x5ff: 0x00c2, + // Block 0x18, offset 0x600 + 0x600: 0x0080, 0x601: 0x0080, 0x602: 0x0080, 0x603: 0x0080, 0x604: 0x0080, 0x605: 0x0080, + 0x606: 0x0080, 0x607: 0x0080, 0x608: 0x0080, 0x609: 0x0080, 0x60a: 0x0080, 0x60b: 0x0080, + 0x60c: 0x0080, 0x60d: 0x0080, 0x60f: 0x0040, 0x610: 0x00c4, 0x611: 0x00c3, + 0x612: 0x00c2, 0x613: 0x00c2, 0x614: 0x00c2, 0x615: 0x00c4, 0x616: 0x00c4, 0x617: 0x00c4, + 0x618: 0x00c4, 0x619: 0x00c4, 0x61a: 0x00c2, 0x61b: 0x00c2, 0x61c: 0x00c2, 0x61d: 0x00c2, + 0x61e: 0x00c4, 0x61f: 0x00c2, 0x620: 0x00c2, 0x621: 0x00c2, 0x622: 0x00c2, 0x623: 0x00c2, + 0x624: 0x00c2, 0x625: 0x00c2, 0x626: 0x00c2, 0x627: 0x00c2, 0x628: 0x00c4, 0x629: 0x00c2, + 0x62a: 0x00c4, 0x62b: 0x00c2, 0x62c: 0x00c4, 0x62d: 0x00c2, 0x62e: 0x00c2, 0x62f: 0x00c4, + 0x630: 0x00c3, 0x631: 0x00c3, 0x632: 0x00c3, 0x633: 0x00c3, 0x634: 0x00c3, 0x635: 0x00c3, + 0x636: 0x00c3, 0x637: 0x00c3, 0x638: 0x00c3, 0x639: 0x00c3, 0x63a: 0x00c3, 0x63b: 0x00c3, + 0x63c: 0x00c3, 0x63d: 0x00c3, 0x63e: 0x00c3, 0x63f: 0x00c3, + // Block 0x19, offset 0x640 + 0x640: 0x00c3, 0x641: 0x00c3, 0x642: 0x00c3, 0x643: 0x00c3, 0x644: 0x00c3, 0x645: 0x00c3, + 0x646: 0x00c3, 0x647: 0x00c3, 0x648: 0x00c3, 0x649: 0x00c3, 0x64a: 0x00c3, + 0x64d: 0x00c4, 0x64e: 0x00c2, 0x64f: 0x00c2, 0x650: 0x00c2, 0x651: 0x00c2, + 0x652: 0x00c2, 0x653: 0x00c2, 0x654: 0x00c2, 0x655: 0x00c2, 0x656: 0x00c2, 0x657: 0x00c2, + 0x658: 0x00c2, 0x659: 0x00c4, 0x65a: 0x00c4, 0x65b: 0x00c4, 0x65c: 0x00c2, 0x65d: 0x00c2, + 0x65e: 0x00c2, 0x65f: 0x00c2, 0x660: 0x00c2, 0x661: 0x00c2, 0x662: 0x00c2, 0x663: 0x00c2, + 0x664: 0x00c2, 0x665: 0x00c2, 0x666: 0x00c2, 0x667: 0x00c2, 0x668: 0x00c2, 0x669: 0x00c2, + 0x66a: 0x00c2, 0x66b: 0x00c4, 0x66c: 0x00c4, 0x66d: 0x00c2, 0x66e: 0x00c2, 0x66f: 0x00c2, + 0x670: 0x00c2, 0x671: 0x00c4, 0x672: 0x00c2, 0x673: 0x00c4, 0x674: 0x00c4, 0x675: 0x00c2, + 0x676: 0x00c2, 0x677: 0x00c2, 0x678: 0x00c4, 0x679: 0x00c4, 0x67a: 0x00c2, 0x67b: 0x00c2, + 0x67c: 0x00c2, 0x67d: 0x00c2, 0x67e: 0x00c2, 0x67f: 0x00c2, + // Block 0x1a, offset 0x680 + 0x680: 0x00c0, 0x681: 0x00c0, 0x682: 0x00c0, 0x683: 0x00c0, 0x684: 0x00c0, 0x685: 0x00c0, + 0x686: 0x00c0, 0x687: 0x00c0, 0x688: 0x00c0, 0x689: 0x00c0, 0x68a: 0x00c0, 0x68b: 0x00c0, + 0x68c: 0x00c0, 0x68d: 0x00c0, 0x68e: 0x00c0, 0x68f: 0x00c0, 0x690: 0x00c0, 0x691: 0x00c0, + 0x692: 0x00c0, 0x693: 0x00c0, 0x694: 0x00c0, 0x695: 0x00c0, 0x696: 0x00c0, 0x697: 0x00c0, + 0x698: 0x00c0, 0x699: 0x00c0, 0x69a: 0x00c0, 0x69b: 0x00c0, 0x69c: 0x00c0, 0x69d: 0x00c0, + 0x69e: 0x00c0, 0x69f: 0x00c0, 0x6a0: 0x00c0, 0x6a1: 0x00c0, 0x6a2: 0x00c0, 0x6a3: 0x00c0, + 0x6a4: 0x00c0, 0x6a5: 0x00c0, 0x6a6: 0x00c3, 0x6a7: 0x00c3, 0x6a8: 0x00c3, 0x6a9: 0x00c3, + 0x6aa: 0x00c3, 0x6ab: 0x00c3, 0x6ac: 0x00c3, 0x6ad: 0x00c3, 0x6ae: 0x00c3, 0x6af: 0x00c3, + 0x6b0: 0x00c3, 0x6b1: 0x00c0, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x00c0, 0x6c1: 0x00c0, 0x6c2: 0x00c0, 0x6c3: 0x00c0, 0x6c4: 0x00c0, 0x6c5: 0x00c0, + 0x6c6: 0x00c0, 0x6c7: 0x00c0, 0x6c8: 0x00c0, 0x6c9: 0x00c0, 0x6ca: 0x00c2, 0x6cb: 0x00c2, + 0x6cc: 0x00c2, 0x6cd: 0x00c2, 0x6ce: 0x00c2, 0x6cf: 0x00c2, 0x6d0: 0x00c2, 0x6d1: 0x00c2, + 0x6d2: 0x00c2, 0x6d3: 0x00c2, 0x6d4: 0x00c2, 0x6d5: 0x00c2, 0x6d6: 0x00c2, 0x6d7: 0x00c2, + 0x6d8: 0x00c2, 0x6d9: 0x00c2, 0x6da: 0x00c2, 0x6db: 0x00c2, 0x6dc: 0x00c2, 0x6dd: 0x00c2, + 0x6de: 0x00c2, 0x6df: 0x00c2, 0x6e0: 0x00c2, 0x6e1: 0x00c2, 0x6e2: 0x00c2, 0x6e3: 0x00c2, + 0x6e4: 0x00c2, 0x6e5: 0x00c2, 0x6e6: 0x00c2, 0x6e7: 0x00c2, 0x6e8: 0x00c2, 0x6e9: 0x00c2, + 0x6ea: 0x00c2, 0x6eb: 0x00c3, 0x6ec: 0x00c3, 0x6ed: 0x00c3, 0x6ee: 0x00c3, 0x6ef: 0x00c3, + 0x6f0: 0x00c3, 0x6f1: 0x00c3, 0x6f2: 0x00c3, 0x6f3: 0x00c3, 0x6f4: 0x00c0, 0x6f5: 0x00c0, + 0x6f6: 0x0080, 0x6f7: 0x0080, 0x6f8: 0x0080, 0x6f9: 0x0080, 0x6fa: 0x0040, + // Block 0x1c, offset 0x700 + 0x700: 0x00c0, 0x701: 0x00c0, 0x702: 0x00c0, 0x703: 0x00c0, 0x704: 0x00c0, 0x705: 0x00c0, + 0x706: 0x00c0, 0x707: 0x00c0, 0x708: 0x00c0, 0x709: 0x00c0, 0x70a: 0x00c0, 0x70b: 0x00c0, + 0x70c: 0x00c0, 0x70d: 0x00c0, 0x70e: 0x00c0, 0x70f: 0x00c0, 0x710: 0x00c0, 0x711: 0x00c0, + 0x712: 0x00c0, 0x713: 0x00c0, 0x714: 0x00c0, 0x715: 0x00c0, 0x716: 0x00c3, 0x717: 0x00c3, + 0x718: 0x00c3, 0x719: 0x00c3, 0x71a: 0x00c0, 0x71b: 0x00c3, 0x71c: 0x00c3, 0x71d: 0x00c3, + 0x71e: 0x00c3, 0x71f: 0x00c3, 0x720: 0x00c3, 0x721: 0x00c3, 0x722: 0x00c3, 0x723: 0x00c3, + 0x724: 0x00c0, 0x725: 0x00c3, 0x726: 0x00c3, 0x727: 0x00c3, 0x728: 0x00c0, 0x729: 0x00c3, + 0x72a: 0x00c3, 0x72b: 0x00c3, 0x72c: 0x00c3, 0x72d: 0x00c3, + 0x730: 0x0080, 0x731: 0x0080, 0x732: 0x0080, 0x733: 0x0080, 0x734: 0x0080, 0x735: 0x0080, + 0x736: 0x0080, 0x737: 0x0080, 0x738: 0x0080, 0x739: 0x0080, 0x73a: 0x0080, 0x73b: 0x0080, + 0x73c: 0x0080, 0x73d: 0x0080, 0x73e: 0x0080, + // Block 0x1d, offset 0x740 + 0x740: 0x00c4, 0x741: 0x00c2, 0x742: 0x00c2, 0x743: 0x00c2, 0x744: 0x00c2, 0x745: 0x00c2, + 0x746: 0x00c4, 0x747: 0x00c4, 0x748: 0x00c2, 0x749: 0x00c4, 0x74a: 0x00c2, 0x74b: 0x00c2, + 0x74c: 0x00c2, 0x74d: 0x00c2, 0x74e: 0x00c2, 0x74f: 0x00c2, 0x750: 0x00c2, 0x751: 0x00c2, + 0x752: 0x00c2, 0x753: 0x00c2, 0x754: 0x00c4, 0x755: 0x00c2, 0x756: 0x00c0, 0x757: 0x00c0, + 0x758: 0x00c0, 0x759: 0x00c3, 0x75a: 0x00c3, 0x75b: 0x00c3, + 0x75e: 0x0080, + // Block 0x1e, offset 0x780 + 0x7a0: 0x00c2, 0x7a1: 0x00c2, 0x7a2: 0x00c2, 0x7a3: 0x00c2, + 0x7a4: 0x00c2, 0x7a5: 0x00c2, 0x7a6: 0x00c2, 0x7a7: 0x00c2, 0x7a8: 0x00c2, 0x7a9: 0x00c2, + 0x7aa: 0x00c4, 0x7ab: 0x00c4, 0x7ac: 0x00c4, 0x7ad: 0x00c0, 0x7ae: 0x00c4, 0x7af: 0x00c2, + 0x7b0: 0x00c2, 0x7b1: 0x00c4, 0x7b2: 0x00c4, 0x7b3: 0x00c2, 0x7b4: 0x00c2, + 0x7b6: 0x00c2, 0x7b7: 0x00c2, 0x7b8: 0x00c2, 0x7b9: 0x00c4, 0x7ba: 0x00c2, 0x7bb: 0x00c2, + 0x7bc: 0x00c2, 0x7bd: 0x00c2, + // Block 0x1f, offset 0x7c0 + 0x7d4: 0x00c3, 0x7d5: 0x00c3, 0x7d6: 0x00c3, 0x7d7: 0x00c3, + 0x7d8: 0x00c3, 0x7d9: 0x00c3, 0x7da: 0x00c3, 0x7db: 0x00c3, 0x7dc: 0x00c3, 0x7dd: 0x00c3, + 0x7de: 0x00c3, 0x7df: 0x00c3, 0x7e0: 0x00c3, 0x7e1: 0x00c3, 0x7e2: 0x0040, 0x7e3: 0x00c3, + 0x7e4: 0x00c3, 0x7e5: 0x00c3, 0x7e6: 0x00c3, 0x7e7: 0x00c3, 0x7e8: 0x00c3, 0x7e9: 0x00c3, + 0x7ea: 0x00c3, 0x7eb: 0x00c3, 0x7ec: 0x00c3, 0x7ed: 0x00c3, 0x7ee: 0x00c3, 0x7ef: 0x00c3, + 0x7f0: 0x00c3, 0x7f1: 0x00c3, 0x7f2: 0x00c3, 0x7f3: 0x00c3, 0x7f4: 0x00c3, 0x7f5: 0x00c3, + 0x7f6: 0x00c3, 0x7f7: 0x00c3, 0x7f8: 0x00c3, 0x7f9: 0x00c3, 0x7fa: 0x00c3, 0x7fb: 0x00c3, + 0x7fc: 0x00c3, 0x7fd: 0x00c3, 0x7fe: 0x00c3, 0x7ff: 0x00c3, + // Block 0x20, offset 0x800 + 0x800: 0x00c3, 0x801: 0x00c3, 0x802: 0x00c3, 0x803: 0x00c0, 0x804: 0x00c0, 0x805: 0x00c0, + 0x806: 0x00c0, 0x807: 0x00c0, 0x808: 0x00c0, 0x809: 0x00c0, 0x80a: 0x00c0, 0x80b: 0x00c0, + 0x80c: 0x00c0, 0x80d: 0x00c0, 0x80e: 0x00c0, 0x80f: 0x00c0, 0x810: 0x00c0, 0x811: 0x00c0, + 0x812: 0x00c0, 0x813: 0x00c0, 0x814: 0x00c0, 0x815: 0x00c0, 0x816: 0x00c0, 0x817: 0x00c0, + 0x818: 0x00c0, 0x819: 0x00c0, 0x81a: 0x00c0, 0x81b: 0x00c0, 0x81c: 0x00c0, 0x81d: 0x00c0, + 0x81e: 0x00c0, 0x81f: 0x00c0, 0x820: 0x00c0, 0x821: 0x00c0, 0x822: 0x00c0, 0x823: 0x00c0, + 0x824: 0x00c0, 0x825: 0x00c0, 0x826: 0x00c0, 0x827: 0x00c0, 0x828: 0x00c0, 0x829: 0x00c0, + 0x82a: 0x00c0, 0x82b: 0x00c0, 0x82c: 0x00c0, 0x82d: 0x00c0, 0x82e: 0x00c0, 0x82f: 0x00c0, + 0x830: 0x00c0, 0x831: 0x00c0, 0x832: 0x00c0, 0x833: 0x00c0, 0x834: 0x00c0, 0x835: 0x00c0, + 0x836: 0x00c0, 0x837: 0x00c0, 0x838: 0x00c0, 0x839: 0x00c0, 0x83a: 0x00c3, 0x83b: 0x00c0, + 0x83c: 0x00c3, 0x83d: 0x00c0, 0x83e: 0x00c0, 0x83f: 0x00c0, + // Block 0x21, offset 0x840 + 0x840: 0x00c0, 0x841: 0x00c3, 0x842: 0x00c3, 0x843: 0x00c3, 0x844: 0x00c3, 0x845: 0x00c3, + 0x846: 0x00c3, 0x847: 0x00c3, 0x848: 0x00c3, 0x849: 0x00c0, 0x84a: 0x00c0, 0x84b: 0x00c0, + 0x84c: 0x00c0, 0x84d: 0x00c6, 0x84e: 0x00c0, 0x84f: 0x00c0, 0x850: 0x00c0, 0x851: 0x00c3, + 0x852: 0x00c3, 0x853: 0x00c3, 0x854: 0x00c3, 0x855: 0x00c3, 0x856: 0x00c3, 0x857: 0x00c3, + 0x858: 0x0080, 0x859: 0x0080, 0x85a: 0x0080, 0x85b: 0x0080, 0x85c: 0x0080, 0x85d: 0x0080, + 0x85e: 0x0080, 0x85f: 0x0080, 0x860: 0x00c0, 0x861: 0x00c0, 0x862: 0x00c3, 0x863: 0x00c3, + 0x864: 0x0080, 0x865: 0x0080, 0x866: 0x00c0, 0x867: 0x00c0, 0x868: 0x00c0, 0x869: 0x00c0, + 0x86a: 0x00c0, 0x86b: 0x00c0, 0x86c: 0x00c0, 0x86d: 0x00c0, 0x86e: 0x00c0, 0x86f: 0x00c0, + 0x870: 0x0080, 0x871: 0x00c0, 0x872: 0x00c0, 0x873: 0x00c0, 0x874: 0x00c0, 0x875: 0x00c0, + 0x876: 0x00c0, 0x877: 0x00c0, 0x878: 0x00c0, 0x879: 0x00c0, 0x87a: 0x00c0, 0x87b: 0x00c0, + 0x87c: 0x00c0, 0x87d: 0x00c0, 0x87e: 0x00c0, 0x87f: 0x00c0, + // Block 0x22, offset 0x880 + 0x880: 0x00c0, 0x881: 0x00c3, 0x882: 0x00c0, 0x883: 0x00c0, 0x885: 0x00c0, + 0x886: 0x00c0, 0x887: 0x00c0, 0x888: 0x00c0, 0x889: 0x00c0, 0x88a: 0x00c0, 0x88b: 0x00c0, + 0x88c: 0x00c0, 0x88f: 0x00c0, 0x890: 0x00c0, + 0x893: 0x00c0, 0x894: 0x00c0, 0x895: 0x00c0, 0x896: 0x00c0, 0x897: 0x00c0, + 0x898: 0x00c0, 0x899: 0x00c0, 0x89a: 0x00c0, 0x89b: 0x00c0, 0x89c: 0x00c0, 0x89d: 0x00c0, + 0x89e: 0x00c0, 0x89f: 0x00c0, 0x8a0: 0x00c0, 0x8a1: 0x00c0, 0x8a2: 0x00c0, 0x8a3: 0x00c0, + 0x8a4: 0x00c0, 0x8a5: 0x00c0, 0x8a6: 0x00c0, 0x8a7: 0x00c0, 0x8a8: 0x00c0, + 0x8aa: 0x00c0, 0x8ab: 0x00c0, 0x8ac: 0x00c0, 0x8ad: 0x00c0, 0x8ae: 0x00c0, 0x8af: 0x00c0, + 0x8b0: 0x00c0, 0x8b2: 0x00c0, + 0x8b6: 0x00c0, 0x8b7: 0x00c0, 0x8b8: 0x00c0, 0x8b9: 0x00c0, + 0x8bc: 0x00c3, 0x8bd: 0x00c0, 0x8be: 0x00c0, 0x8bf: 0x00c0, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x00c0, 0x8c1: 0x00c3, 0x8c2: 0x00c3, 0x8c3: 0x00c3, 0x8c4: 0x00c3, + 0x8c7: 0x00c0, 0x8c8: 0x00c0, 0x8cb: 0x00c0, + 0x8cc: 0x00c0, 0x8cd: 0x00c6, 0x8ce: 0x00c0, + 0x8d7: 0x00c0, + 0x8dc: 0x0080, 0x8dd: 0x0080, + 0x8df: 0x0080, 0x8e0: 0x00c0, 0x8e1: 0x00c0, 0x8e2: 0x00c3, 0x8e3: 0x00c3, + 0x8e6: 0x00c0, 0x8e7: 0x00c0, 0x8e8: 0x00c0, 0x8e9: 0x00c0, + 0x8ea: 0x00c0, 0x8eb: 0x00c0, 0x8ec: 0x00c0, 0x8ed: 0x00c0, 0x8ee: 0x00c0, 0x8ef: 0x00c0, + 0x8f0: 0x00c0, 0x8f1: 0x00c0, 0x8f2: 0x0080, 0x8f3: 0x0080, 0x8f4: 0x0080, 0x8f5: 0x0080, + 0x8f6: 0x0080, 0x8f7: 0x0080, 0x8f8: 0x0080, 0x8f9: 0x0080, 0x8fa: 0x0080, 0x8fb: 0x0080, + // Block 0x24, offset 0x900 + 0x901: 0x00c3, 0x902: 0x00c3, 0x903: 0x00c0, 0x905: 0x00c0, + 0x906: 0x00c0, 0x907: 0x00c0, 0x908: 0x00c0, 0x909: 0x00c0, 0x90a: 0x00c0, + 0x90f: 0x00c0, 0x910: 0x00c0, + 0x913: 0x00c0, 0x914: 0x00c0, 0x915: 0x00c0, 0x916: 0x00c0, 0x917: 0x00c0, + 0x918: 0x00c0, 0x919: 0x00c0, 0x91a: 0x00c0, 0x91b: 0x00c0, 0x91c: 0x00c0, 0x91d: 0x00c0, + 0x91e: 0x00c0, 0x91f: 0x00c0, 0x920: 0x00c0, 0x921: 0x00c0, 0x922: 0x00c0, 0x923: 0x00c0, + 0x924: 0x00c0, 0x925: 0x00c0, 0x926: 0x00c0, 0x927: 0x00c0, 0x928: 0x00c0, + 0x92a: 0x00c0, 0x92b: 0x00c0, 0x92c: 0x00c0, 0x92d: 0x00c0, 0x92e: 0x00c0, 0x92f: 0x00c0, + 0x930: 0x00c0, 0x932: 0x00c0, 0x933: 0x0080, 0x935: 0x00c0, + 0x936: 0x0080, 0x938: 0x00c0, 0x939: 0x00c0, + 0x93c: 0x00c3, 0x93e: 0x00c0, 0x93f: 0x00c0, + // Block 0x25, offset 0x940 + 0x940: 0x00c0, 0x941: 0x00c3, 0x942: 0x00c3, + 0x947: 0x00c3, 0x948: 0x00c3, 0x94b: 0x00c3, + 0x94c: 0x00c3, 0x94d: 0x00c6, 0x951: 0x00c3, + 0x959: 0x0080, 0x95a: 0x0080, 0x95b: 0x0080, 0x95c: 0x00c0, + 0x95e: 0x0080, + 0x966: 0x00c0, 0x967: 0x00c0, 0x968: 0x00c0, 0x969: 0x00c0, + 0x96a: 0x00c0, 0x96b: 0x00c0, 0x96c: 0x00c0, 0x96d: 0x00c0, 0x96e: 0x00c0, 0x96f: 0x00c0, + 0x970: 0x00c3, 0x971: 0x00c3, 0x972: 0x00c0, 0x973: 0x00c0, 0x974: 0x00c0, 0x975: 0x00c3, + // Block 0x26, offset 0x980 + 0x981: 0x00c3, 0x982: 0x00c3, 0x983: 0x00c0, 0x985: 0x00c0, + 0x986: 0x00c0, 0x987: 0x00c0, 0x988: 0x00c0, 0x989: 0x00c0, 0x98a: 0x00c0, 0x98b: 0x00c0, + 0x98c: 0x00c0, 0x98d: 0x00c0, 0x98f: 0x00c0, 0x990: 0x00c0, 0x991: 0x00c0, + 0x993: 0x00c0, 0x994: 0x00c0, 0x995: 0x00c0, 0x996: 0x00c0, 0x997: 0x00c0, + 0x998: 0x00c0, 0x999: 0x00c0, 0x99a: 0x00c0, 0x99b: 0x00c0, 0x99c: 0x00c0, 0x99d: 0x00c0, + 0x99e: 0x00c0, 0x99f: 0x00c0, 0x9a0: 0x00c0, 0x9a1: 0x00c0, 0x9a2: 0x00c0, 0x9a3: 0x00c0, + 0x9a4: 0x00c0, 0x9a5: 0x00c0, 0x9a6: 0x00c0, 0x9a7: 0x00c0, 0x9a8: 0x00c0, + 0x9aa: 0x00c0, 0x9ab: 0x00c0, 0x9ac: 0x00c0, 0x9ad: 0x00c0, 0x9ae: 0x00c0, 0x9af: 0x00c0, + 0x9b0: 0x00c0, 0x9b2: 0x00c0, 0x9b3: 0x00c0, 0x9b5: 0x00c0, + 0x9b6: 0x00c0, 0x9b7: 0x00c0, 0x9b8: 0x00c0, 0x9b9: 0x00c0, + 0x9bc: 0x00c3, 0x9bd: 0x00c0, 0x9be: 0x00c0, 0x9bf: 0x00c0, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x00c0, 0x9c1: 0x00c3, 0x9c2: 0x00c3, 0x9c3: 0x00c3, 0x9c4: 0x00c3, 0x9c5: 0x00c3, + 0x9c7: 0x00c3, 0x9c8: 0x00c3, 0x9c9: 0x00c0, 0x9cb: 0x00c0, + 0x9cc: 0x00c0, 0x9cd: 0x00c6, 0x9d0: 0x00c0, + 0x9e0: 0x00c0, 0x9e1: 0x00c0, 0x9e2: 0x00c3, 0x9e3: 0x00c3, + 0x9e6: 0x00c0, 0x9e7: 0x00c0, 0x9e8: 0x00c0, 0x9e9: 0x00c0, + 0x9ea: 0x00c0, 0x9eb: 0x00c0, 0x9ec: 0x00c0, 0x9ed: 0x00c0, 0x9ee: 0x00c0, 0x9ef: 0x00c0, + 0x9f0: 0x0080, 0x9f1: 0x0080, + 0x9f9: 0x00c0, + // Block 0x28, offset 0xa00 + 0xa01: 0x00c3, 0xa02: 0x00c0, 0xa03: 0x00c0, 0xa05: 0x00c0, + 0xa06: 0x00c0, 0xa07: 0x00c0, 0xa08: 0x00c0, 0xa09: 0x00c0, 0xa0a: 0x00c0, 0xa0b: 0x00c0, + 0xa0c: 0x00c0, 0xa0f: 0x00c0, 0xa10: 0x00c0, + 0xa13: 0x00c0, 0xa14: 0x00c0, 0xa15: 0x00c0, 0xa16: 0x00c0, 0xa17: 0x00c0, + 0xa18: 0x00c0, 0xa19: 0x00c0, 0xa1a: 0x00c0, 0xa1b: 0x00c0, 0xa1c: 0x00c0, 0xa1d: 0x00c0, + 0xa1e: 0x00c0, 0xa1f: 0x00c0, 0xa20: 0x00c0, 0xa21: 0x00c0, 0xa22: 0x00c0, 0xa23: 0x00c0, + 0xa24: 0x00c0, 0xa25: 0x00c0, 0xa26: 0x00c0, 0xa27: 0x00c0, 0xa28: 0x00c0, + 0xa2a: 0x00c0, 0xa2b: 0x00c0, 0xa2c: 0x00c0, 0xa2d: 0x00c0, 0xa2e: 0x00c0, 0xa2f: 0x00c0, + 0xa30: 0x00c0, 0xa32: 0x00c0, 0xa33: 0x00c0, 0xa35: 0x00c0, + 0xa36: 0x00c0, 0xa37: 0x00c0, 0xa38: 0x00c0, 0xa39: 0x00c0, + 0xa3c: 0x00c3, 0xa3d: 0x00c0, 0xa3e: 0x00c0, 0xa3f: 0x00c3, + // Block 0x29, offset 0xa40 + 0xa40: 0x00c0, 0xa41: 0x00c3, 0xa42: 0x00c3, 0xa43: 0x00c3, 0xa44: 0x00c3, + 0xa47: 0x00c0, 0xa48: 0x00c0, 0xa4b: 0x00c0, + 0xa4c: 0x00c0, 0xa4d: 0x00c6, + 0xa56: 0x00c3, 0xa57: 0x00c0, + 0xa5c: 0x0080, 0xa5d: 0x0080, + 0xa5f: 0x00c0, 0xa60: 0x00c0, 0xa61: 0x00c0, 0xa62: 0x00c3, 0xa63: 0x00c3, + 0xa66: 0x00c0, 0xa67: 0x00c0, 0xa68: 0x00c0, 0xa69: 0x00c0, + 0xa6a: 0x00c0, 0xa6b: 0x00c0, 0xa6c: 0x00c0, 0xa6d: 0x00c0, 0xa6e: 0x00c0, 0xa6f: 0x00c0, + 0xa70: 0x0080, 0xa71: 0x00c0, 0xa72: 0x0080, 0xa73: 0x0080, 0xa74: 0x0080, 0xa75: 0x0080, + 0xa76: 0x0080, 0xa77: 0x0080, + // Block 0x2a, offset 0xa80 + 0xa82: 0x00c3, 0xa83: 0x00c0, 0xa85: 0x00c0, + 0xa86: 0x00c0, 0xa87: 0x00c0, 0xa88: 0x00c0, 0xa89: 0x00c0, 0xa8a: 0x00c0, + 0xa8e: 0x00c0, 0xa8f: 0x00c0, 0xa90: 0x00c0, + 0xa92: 0x00c0, 0xa93: 0x00c0, 0xa94: 0x00c0, 0xa95: 0x00c0, + 0xa99: 0x00c0, 0xa9a: 0x00c0, 0xa9c: 0x00c0, + 0xa9e: 0x00c0, 0xa9f: 0x00c0, 0xaa3: 0x00c0, + 0xaa4: 0x00c0, 0xaa8: 0x00c0, 0xaa9: 0x00c0, + 0xaaa: 0x00c0, 0xaae: 0x00c0, 0xaaf: 0x00c0, + 0xab0: 0x00c0, 0xab1: 0x00c0, 0xab2: 0x00c0, 0xab3: 0x00c0, 0xab4: 0x00c0, 0xab5: 0x00c0, + 0xab6: 0x00c0, 0xab7: 0x00c0, 0xab8: 0x00c0, 0xab9: 0x00c0, + 0xabe: 0x00c0, 0xabf: 0x00c0, + // Block 0x2b, offset 0xac0 + 0xac0: 0x00c3, 0xac1: 0x00c0, 0xac2: 0x00c0, + 0xac6: 0x00c0, 0xac7: 0x00c0, 0xac8: 0x00c0, 0xaca: 0x00c0, 0xacb: 0x00c0, + 0xacc: 0x00c0, 0xacd: 0x00c6, 0xad0: 0x00c0, + 0xad7: 0x00c0, + 0xae6: 0x00c0, 0xae7: 0x00c0, 0xae8: 0x00c0, 0xae9: 0x00c0, + 0xaea: 0x00c0, 0xaeb: 0x00c0, 0xaec: 0x00c0, 0xaed: 0x00c0, 0xaee: 0x00c0, 0xaef: 0x00c0, + 0xaf0: 0x0080, 0xaf1: 0x0080, 0xaf2: 0x0080, 0xaf3: 0x0080, 0xaf4: 0x0080, 0xaf5: 0x0080, + 0xaf6: 0x0080, 0xaf7: 0x0080, 0xaf8: 0x0080, 0xaf9: 0x0080, 0xafa: 0x0080, + // Block 0x2c, offset 0xb00 + 0xb00: 0x00c3, 0xb01: 0x00c0, 0xb02: 0x00c0, 0xb03: 0x00c0, 0xb05: 0x00c0, + 0xb06: 0x00c0, 0xb07: 0x00c0, 0xb08: 0x00c0, 0xb09: 0x00c0, 0xb0a: 0x00c0, 0xb0b: 0x00c0, + 0xb0c: 0x00c0, 0xb0e: 0x00c0, 0xb0f: 0x00c0, 0xb10: 0x00c0, + 0xb12: 0x00c0, 0xb13: 0x00c0, 0xb14: 0x00c0, 0xb15: 0x00c0, 0xb16: 0x00c0, 0xb17: 0x00c0, + 0xb18: 0x00c0, 0xb19: 0x00c0, 0xb1a: 0x00c0, 0xb1b: 0x00c0, 0xb1c: 0x00c0, 0xb1d: 0x00c0, + 0xb1e: 0x00c0, 0xb1f: 0x00c0, 0xb20: 0x00c0, 0xb21: 0x00c0, 0xb22: 0x00c0, 0xb23: 0x00c0, + 0xb24: 0x00c0, 0xb25: 0x00c0, 0xb26: 0x00c0, 0xb27: 0x00c0, 0xb28: 0x00c0, + 0xb2a: 0x00c0, 0xb2b: 0x00c0, 0xb2c: 0x00c0, 0xb2d: 0x00c0, 0xb2e: 0x00c0, 0xb2f: 0x00c0, + 0xb30: 0x00c0, 0xb31: 0x00c0, 0xb32: 0x00c0, 0xb33: 0x00c0, 0xb34: 0x00c0, 0xb35: 0x00c0, + 0xb36: 0x00c0, 0xb37: 0x00c0, 0xb38: 0x00c0, 0xb39: 0x00c0, + 0xb3d: 0x00c0, 0xb3e: 0x00c3, 0xb3f: 0x00c3, + // Block 0x2d, offset 0xb40 + 0xb40: 0x00c3, 0xb41: 0x00c0, 0xb42: 0x00c0, 0xb43: 0x00c0, 0xb44: 0x00c0, + 0xb46: 0x00c3, 0xb47: 0x00c3, 0xb48: 0x00c3, 0xb4a: 0x00c3, 0xb4b: 0x00c3, + 0xb4c: 0x00c3, 0xb4d: 0x00c6, + 0xb55: 0x00c3, 0xb56: 0x00c3, + 0xb58: 0x00c0, 0xb59: 0x00c0, 0xb5a: 0x00c0, + 0xb60: 0x00c0, 0xb61: 0x00c0, 0xb62: 0x00c3, 0xb63: 0x00c3, + 0xb66: 0x00c0, 0xb67: 0x00c0, 0xb68: 0x00c0, 0xb69: 0x00c0, + 0xb6a: 0x00c0, 0xb6b: 0x00c0, 0xb6c: 0x00c0, 0xb6d: 0x00c0, 0xb6e: 0x00c0, 0xb6f: 0x00c0, + 0xb78: 0x0080, 0xb79: 0x0080, 0xb7a: 0x0080, 0xb7b: 0x0080, + 0xb7c: 0x0080, 0xb7d: 0x0080, 0xb7e: 0x0080, 0xb7f: 0x0080, + // Block 0x2e, offset 0xb80 + 0xb80: 0x00c0, 0xb81: 0x00c3, 0xb82: 0x00c0, 0xb83: 0x00c0, 0xb85: 0x00c0, + 0xb86: 0x00c0, 0xb87: 0x00c0, 0xb88: 0x00c0, 0xb89: 0x00c0, 0xb8a: 0x00c0, 0xb8b: 0x00c0, + 0xb8c: 0x00c0, 0xb8e: 0x00c0, 0xb8f: 0x00c0, 0xb90: 0x00c0, + 0xb92: 0x00c0, 0xb93: 0x00c0, 0xb94: 0x00c0, 0xb95: 0x00c0, 0xb96: 0x00c0, 0xb97: 0x00c0, + 0xb98: 0x00c0, 0xb99: 0x00c0, 0xb9a: 0x00c0, 0xb9b: 0x00c0, 0xb9c: 0x00c0, 0xb9d: 0x00c0, + 0xb9e: 0x00c0, 0xb9f: 0x00c0, 0xba0: 0x00c0, 0xba1: 0x00c0, 0xba2: 0x00c0, 0xba3: 0x00c0, + 0xba4: 0x00c0, 0xba5: 0x00c0, 0xba6: 0x00c0, 0xba7: 0x00c0, 0xba8: 0x00c0, + 0xbaa: 0x00c0, 0xbab: 0x00c0, 0xbac: 0x00c0, 0xbad: 0x00c0, 0xbae: 0x00c0, 0xbaf: 0x00c0, + 0xbb0: 0x00c0, 0xbb1: 0x00c0, 0xbb2: 0x00c0, 0xbb3: 0x00c0, 0xbb5: 0x00c0, + 0xbb6: 0x00c0, 0xbb7: 0x00c0, 0xbb8: 0x00c0, 0xbb9: 0x00c0, + 0xbbc: 0x00c3, 0xbbd: 0x00c0, 0xbbe: 0x00c0, 0xbbf: 0x00c3, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x00c0, 0xbc1: 0x00c0, 0xbc2: 0x00c0, 0xbc3: 0x00c0, 0xbc4: 0x00c0, + 0xbc6: 0x00c3, 0xbc7: 0x00c0, 0xbc8: 0x00c0, 0xbca: 0x00c0, 0xbcb: 0x00c0, + 0xbcc: 0x00c3, 0xbcd: 0x00c6, + 0xbd5: 0x00c0, 0xbd6: 0x00c0, + 0xbde: 0x00c0, 0xbe0: 0x00c0, 0xbe1: 0x00c0, 0xbe2: 0x00c3, 0xbe3: 0x00c3, + 0xbe6: 0x00c0, 0xbe7: 0x00c0, 0xbe8: 0x00c0, 0xbe9: 0x00c0, + 0xbea: 0x00c0, 0xbeb: 0x00c0, 0xbec: 0x00c0, 0xbed: 0x00c0, 0xbee: 0x00c0, 0xbef: 0x00c0, + 0xbf1: 0x00c0, 0xbf2: 0x00c0, + // Block 0x30, offset 0xc00 + 0xc01: 0x00c3, 0xc02: 0x00c0, 0xc03: 0x00c0, 0xc05: 0x00c0, + 0xc06: 0x00c0, 0xc07: 0x00c0, 0xc08: 0x00c0, 0xc09: 0x00c0, 0xc0a: 0x00c0, 0xc0b: 0x00c0, + 0xc0c: 0x00c0, 0xc0e: 0x00c0, 0xc0f: 0x00c0, 0xc10: 0x00c0, + 0xc12: 0x00c0, 0xc13: 0x00c0, 0xc14: 0x00c0, 0xc15: 0x00c0, 0xc16: 0x00c0, 0xc17: 0x00c0, + 0xc18: 0x00c0, 0xc19: 0x00c0, 0xc1a: 0x00c0, 0xc1b: 0x00c0, 0xc1c: 0x00c0, 0xc1d: 0x00c0, + 0xc1e: 0x00c0, 0xc1f: 0x00c0, 0xc20: 0x00c0, 0xc21: 0x00c0, 0xc22: 0x00c0, 0xc23: 0x00c0, + 0xc24: 0x00c0, 0xc25: 0x00c0, 0xc26: 0x00c0, 0xc27: 0x00c0, 0xc28: 0x00c0, 0xc29: 0x00c0, + 0xc2a: 0x00c0, 0xc2b: 0x00c0, 0xc2c: 0x00c0, 0xc2d: 0x00c0, 0xc2e: 0x00c0, 0xc2f: 0x00c0, + 0xc30: 0x00c0, 0xc31: 0x00c0, 0xc32: 0x00c0, 0xc33: 0x00c0, 0xc34: 0x00c0, 0xc35: 0x00c0, + 0xc36: 0x00c0, 0xc37: 0x00c0, 0xc38: 0x00c0, 0xc39: 0x00c0, 0xc3a: 0x00c0, + 0xc3d: 0x00c0, 0xc3e: 0x00c0, 0xc3f: 0x00c0, + // Block 0x31, offset 0xc40 + 0xc40: 0x00c0, 0xc41: 0x00c3, 0xc42: 0x00c3, 0xc43: 0x00c3, 0xc44: 0x00c3, + 0xc46: 0x00c0, 0xc47: 0x00c0, 0xc48: 0x00c0, 0xc4a: 0x00c0, 0xc4b: 0x00c0, + 0xc4c: 0x00c0, 0xc4d: 0x00c6, 0xc4e: 0x00c0, 0xc4f: 0x0080, + 0xc54: 0x00c0, 0xc55: 0x00c0, 0xc56: 0x00c0, 0xc57: 0x00c0, + 0xc58: 0x0080, 0xc59: 0x0080, 0xc5a: 0x0080, 0xc5b: 0x0080, 0xc5c: 0x0080, 0xc5d: 0x0080, + 0xc5e: 0x0080, 0xc5f: 0x00c0, 0xc60: 0x00c0, 0xc61: 0x00c0, 0xc62: 0x00c3, 0xc63: 0x00c3, + 0xc66: 0x00c0, 0xc67: 0x00c0, 0xc68: 0x00c0, 0xc69: 0x00c0, + 0xc6a: 0x00c0, 0xc6b: 0x00c0, 0xc6c: 0x00c0, 0xc6d: 0x00c0, 0xc6e: 0x00c0, 0xc6f: 0x00c0, + 0xc70: 0x0080, 0xc71: 0x0080, 0xc72: 0x0080, 0xc73: 0x0080, 0xc74: 0x0080, 0xc75: 0x0080, + 0xc76: 0x0080, 0xc77: 0x0080, 0xc78: 0x0080, 0xc79: 0x0080, 0xc7a: 0x00c0, 0xc7b: 0x00c0, + 0xc7c: 0x00c0, 0xc7d: 0x00c0, 0xc7e: 0x00c0, 0xc7f: 0x00c0, + // Block 0x32, offset 0xc80 + 0xc82: 0x00c0, 0xc83: 0x00c0, 0xc85: 0x00c0, + 0xc86: 0x00c0, 0xc87: 0x00c0, 0xc88: 0x00c0, 0xc89: 0x00c0, 0xc8a: 0x00c0, 0xc8b: 0x00c0, + 0xc8c: 0x00c0, 0xc8d: 0x00c0, 0xc8e: 0x00c0, 0xc8f: 0x00c0, 0xc90: 0x00c0, 0xc91: 0x00c0, + 0xc92: 0x00c0, 0xc93: 0x00c0, 0xc94: 0x00c0, 0xc95: 0x00c0, 0xc96: 0x00c0, + 0xc9a: 0x00c0, 0xc9b: 0x00c0, 0xc9c: 0x00c0, 0xc9d: 0x00c0, + 0xc9e: 0x00c0, 0xc9f: 0x00c0, 0xca0: 0x00c0, 0xca1: 0x00c0, 0xca2: 0x00c0, 0xca3: 0x00c0, + 0xca4: 0x00c0, 0xca5: 0x00c0, 0xca6: 0x00c0, 0xca7: 0x00c0, 0xca8: 0x00c0, 0xca9: 0x00c0, + 0xcaa: 0x00c0, 0xcab: 0x00c0, 0xcac: 0x00c0, 0xcad: 0x00c0, 0xcae: 0x00c0, 0xcaf: 0x00c0, + 0xcb0: 0x00c0, 0xcb1: 0x00c0, 0xcb3: 0x00c0, 0xcb4: 0x00c0, 0xcb5: 0x00c0, + 0xcb6: 0x00c0, 0xcb7: 0x00c0, 0xcb8: 0x00c0, 0xcb9: 0x00c0, 0xcba: 0x00c0, 0xcbb: 0x00c0, + 0xcbd: 0x00c0, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x00c0, 0xcc1: 0x00c0, 0xcc2: 0x00c0, 0xcc3: 0x00c0, 0xcc4: 0x00c0, 0xcc5: 0x00c0, + 0xcc6: 0x00c0, 0xcca: 0x00c6, + 0xccf: 0x00c0, 0xcd0: 0x00c0, 0xcd1: 0x00c0, + 0xcd2: 0x00c3, 0xcd3: 0x00c3, 0xcd4: 0x00c3, 0xcd6: 0x00c3, + 0xcd8: 0x00c0, 0xcd9: 0x00c0, 0xcda: 0x00c0, 0xcdb: 0x00c0, 0xcdc: 0x00c0, 0xcdd: 0x00c0, + 0xcde: 0x00c0, 0xcdf: 0x00c0, + 0xce6: 0x00c0, 0xce7: 0x00c0, 0xce8: 0x00c0, 0xce9: 0x00c0, + 0xcea: 0x00c0, 0xceb: 0x00c0, 0xcec: 0x00c0, 0xced: 0x00c0, 0xcee: 0x00c0, 0xcef: 0x00c0, + 0xcf2: 0x00c0, 0xcf3: 0x00c0, 0xcf4: 0x0080, + // Block 0x34, offset 0xd00 + 0xd01: 0x00c0, 0xd02: 0x00c0, 0xd03: 0x00c0, 0xd04: 0x00c0, 0xd05: 0x00c0, + 0xd06: 0x00c0, 0xd07: 0x00c0, 0xd08: 0x00c0, 0xd09: 0x00c0, 0xd0a: 0x00c0, 0xd0b: 0x00c0, + 0xd0c: 0x00c0, 0xd0d: 0x00c0, 0xd0e: 0x00c0, 0xd0f: 0x00c0, 0xd10: 0x00c0, 0xd11: 0x00c0, + 0xd12: 0x00c0, 0xd13: 0x00c0, 0xd14: 0x00c0, 0xd15: 0x00c0, 0xd16: 0x00c0, 0xd17: 0x00c0, + 0xd18: 0x00c0, 0xd19: 0x00c0, 0xd1a: 0x00c0, 0xd1b: 0x00c0, 0xd1c: 0x00c0, 0xd1d: 0x00c0, + 0xd1e: 0x00c0, 0xd1f: 0x00c0, 0xd20: 0x00c0, 0xd21: 0x00c0, 0xd22: 0x00c0, 0xd23: 0x00c0, + 0xd24: 0x00c0, 0xd25: 0x00c0, 0xd26: 0x00c0, 0xd27: 0x00c0, 0xd28: 0x00c0, 0xd29: 0x00c0, + 0xd2a: 0x00c0, 0xd2b: 0x00c0, 0xd2c: 0x00c0, 0xd2d: 0x00c0, 0xd2e: 0x00c0, 0xd2f: 0x00c0, + 0xd30: 0x00c0, 0xd31: 0x00c3, 0xd32: 0x00c0, 0xd33: 0x0080, 0xd34: 0x00c3, 0xd35: 0x00c3, + 0xd36: 0x00c3, 0xd37: 0x00c3, 0xd38: 0x00c3, 0xd39: 0x00c3, 0xd3a: 0x00c6, + 0xd3f: 0x0080, + // Block 0x35, offset 0xd40 + 0xd40: 0x00c0, 0xd41: 0x00c0, 0xd42: 0x00c0, 0xd43: 0x00c0, 0xd44: 0x00c0, 0xd45: 0x00c0, + 0xd46: 0x00c0, 0xd47: 0x00c3, 0xd48: 0x00c3, 0xd49: 0x00c3, 0xd4a: 0x00c3, 0xd4b: 0x00c3, + 0xd4c: 0x00c3, 0xd4d: 0x00c3, 0xd4e: 0x00c3, 0xd4f: 0x0080, 0xd50: 0x00c0, 0xd51: 0x00c0, + 0xd52: 0x00c0, 0xd53: 0x00c0, 0xd54: 0x00c0, 0xd55: 0x00c0, 0xd56: 0x00c0, 0xd57: 0x00c0, + 0xd58: 0x00c0, 0xd59: 0x00c0, 0xd5a: 0x0080, 0xd5b: 0x0080, + // Block 0x36, offset 0xd80 + 0xd81: 0x00c0, 0xd82: 0x00c0, 0xd84: 0x00c0, + 0xd87: 0x00c0, 0xd88: 0x00c0, 0xd8a: 0x00c0, + 0xd8d: 0x00c0, + 0xd94: 0x00c0, 0xd95: 0x00c0, 0xd96: 0x00c0, 0xd97: 0x00c0, + 0xd99: 0x00c0, 0xd9a: 0x00c0, 0xd9b: 0x00c0, 0xd9c: 0x00c0, 0xd9d: 0x00c0, + 0xd9e: 0x00c0, 0xd9f: 0x00c0, 0xda1: 0x00c0, 0xda2: 0x00c0, 0xda3: 0x00c0, + 0xda5: 0x00c0, 0xda7: 0x00c0, + 0xdaa: 0x00c0, 0xdab: 0x00c0, 0xdad: 0x00c0, 0xdae: 0x00c0, 0xdaf: 0x00c0, + 0xdb0: 0x00c0, 0xdb1: 0x00c3, 0xdb2: 0x00c0, 0xdb3: 0x0080, 0xdb4: 0x00c3, 0xdb5: 0x00c3, + 0xdb6: 0x00c3, 0xdb7: 0x00c3, 0xdb8: 0x00c3, 0xdb9: 0x00c3, 0xdbb: 0x00c3, + 0xdbc: 0x00c3, 0xdbd: 0x00c0, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x00c0, 0xdc1: 0x00c0, 0xdc2: 0x00c0, 0xdc3: 0x00c0, 0xdc4: 0x00c0, + 0xdc6: 0x00c0, 0xdc8: 0x00c3, 0xdc9: 0x00c3, 0xdca: 0x00c3, 0xdcb: 0x00c3, + 0xdcc: 0x00c3, 0xdcd: 0x00c3, 0xdd0: 0x00c0, 0xdd1: 0x00c0, + 0xdd2: 0x00c0, 0xdd3: 0x00c0, 0xdd4: 0x00c0, 0xdd5: 0x00c0, 0xdd6: 0x00c0, 0xdd7: 0x00c0, + 0xdd8: 0x00c0, 0xdd9: 0x00c0, 0xddc: 0x0080, 0xddd: 0x0080, + 0xdde: 0x00c0, 0xddf: 0x00c0, + // Block 0x38, offset 0xe00 + 0xe00: 0x00c0, 0xe01: 0x0080, 0xe02: 0x0080, 0xe03: 0x0080, 0xe04: 0x0080, 0xe05: 0x0080, + 0xe06: 0x0080, 0xe07: 0x0080, 0xe08: 0x0080, 0xe09: 0x0080, 0xe0a: 0x0080, 0xe0b: 0x00c0, + 0xe0c: 0x0080, 0xe0d: 0x0080, 0xe0e: 0x0080, 0xe0f: 0x0080, 0xe10: 0x0080, 0xe11: 0x0080, + 0xe12: 0x0080, 0xe13: 0x0080, 0xe14: 0x0080, 0xe15: 0x0080, 0xe16: 0x0080, 0xe17: 0x0080, + 0xe18: 0x00c3, 0xe19: 0x00c3, 0xe1a: 0x0080, 0xe1b: 0x0080, 0xe1c: 0x0080, 0xe1d: 0x0080, + 0xe1e: 0x0080, 0xe1f: 0x0080, 0xe20: 0x00c0, 0xe21: 0x00c0, 0xe22: 0x00c0, 0xe23: 0x00c0, + 0xe24: 0x00c0, 0xe25: 0x00c0, 0xe26: 0x00c0, 0xe27: 0x00c0, 0xe28: 0x00c0, 0xe29: 0x00c0, + 0xe2a: 0x0080, 0xe2b: 0x0080, 0xe2c: 0x0080, 0xe2d: 0x0080, 0xe2e: 0x0080, 0xe2f: 0x0080, + 0xe30: 0x0080, 0xe31: 0x0080, 0xe32: 0x0080, 0xe33: 0x0080, 0xe34: 0x0080, 0xe35: 0x00c3, + 0xe36: 0x0080, 0xe37: 0x00c3, 0xe38: 0x0080, 0xe39: 0x00c3, 0xe3a: 0x0080, 0xe3b: 0x0080, + 0xe3c: 0x0080, 0xe3d: 0x0080, 0xe3e: 0x00c0, 0xe3f: 0x00c0, + // Block 0x39, offset 0xe40 + 0xe40: 0x00c0, 0xe41: 0x00c0, 0xe42: 0x00c0, 0xe43: 0x0080, 0xe44: 0x00c0, 0xe45: 0x00c0, + 0xe46: 0x00c0, 0xe47: 0x00c0, 0xe49: 0x00c0, 0xe4a: 0x00c0, 0xe4b: 0x00c0, + 0xe4c: 0x00c0, 0xe4d: 0x0080, 0xe4e: 0x00c0, 0xe4f: 0x00c0, 0xe50: 0x00c0, 0xe51: 0x00c0, + 0xe52: 0x0080, 0xe53: 0x00c0, 0xe54: 0x00c0, 0xe55: 0x00c0, 0xe56: 0x00c0, 0xe57: 0x0080, + 0xe58: 0x00c0, 0xe59: 0x00c0, 0xe5a: 0x00c0, 0xe5b: 0x00c0, 0xe5c: 0x0080, 0xe5d: 0x00c0, + 0xe5e: 0x00c0, 0xe5f: 0x00c0, 0xe60: 0x00c0, 0xe61: 0x00c0, 0xe62: 0x00c0, 0xe63: 0x00c0, + 0xe64: 0x00c0, 0xe65: 0x00c0, 0xe66: 0x00c0, 0xe67: 0x00c0, 0xe68: 0x00c0, 0xe69: 0x0080, + 0xe6a: 0x00c0, 0xe6b: 0x00c0, 0xe6c: 0x00c0, + 0xe71: 0x00c3, 0xe72: 0x00c3, 0xe73: 0x0083, 0xe74: 0x00c3, 0xe75: 0x0083, + 0xe76: 0x0083, 0xe77: 0x0083, 0xe78: 0x0083, 0xe79: 0x0083, 0xe7a: 0x00c3, 0xe7b: 0x00c3, + 0xe7c: 0x00c3, 0xe7d: 0x00c3, 0xe7e: 0x00c3, 0xe7f: 0x00c0, + // Block 0x3a, offset 0xe80 + 0xe80: 0x00c3, 0xe81: 0x0083, 0xe82: 0x00c3, 0xe83: 0x00c3, 0xe84: 0x00c6, 0xe85: 0x0080, + 0xe86: 0x00c3, 0xe87: 0x00c3, 0xe88: 0x00c0, 0xe89: 0x00c0, 0xe8a: 0x00c0, 0xe8b: 0x00c0, + 0xe8c: 0x00c0, 0xe8d: 0x00c3, 0xe8e: 0x00c3, 0xe8f: 0x00c3, 0xe90: 0x00c3, 0xe91: 0x00c3, + 0xe92: 0x00c3, 0xe93: 0x0083, 0xe94: 0x00c3, 0xe95: 0x00c3, 0xe96: 0x00c3, 0xe97: 0x00c3, + 0xe99: 0x00c3, 0xe9a: 0x00c3, 0xe9b: 0x00c3, 0xe9c: 0x00c3, 0xe9d: 0x0083, + 0xe9e: 0x00c3, 0xe9f: 0x00c3, 0xea0: 0x00c3, 0xea1: 0x00c3, 0xea2: 0x0083, 0xea3: 0x00c3, + 0xea4: 0x00c3, 0xea5: 0x00c3, 0xea6: 0x00c3, 0xea7: 0x0083, 0xea8: 0x00c3, 0xea9: 0x00c3, + 0xeaa: 0x00c3, 0xeab: 0x00c3, 0xeac: 0x0083, 0xead: 0x00c3, 0xeae: 0x00c3, 0xeaf: 0x00c3, + 0xeb0: 0x00c3, 0xeb1: 0x00c3, 0xeb2: 0x00c3, 0xeb3: 0x00c3, 0xeb4: 0x00c3, 0xeb5: 0x00c3, + 0xeb6: 0x00c3, 0xeb7: 0x00c3, 0xeb8: 0x00c3, 0xeb9: 0x0083, 0xeba: 0x00c3, 0xebb: 0x00c3, + 0xebc: 0x00c3, 0xebe: 0x0080, 0xebf: 0x0080, + // Block 0x3b, offset 0xec0 + 0xec0: 0x0080, 0xec1: 0x0080, 0xec2: 0x0080, 0xec3: 0x0080, 0xec4: 0x0080, 0xec5: 0x0080, + 0xec6: 0x00c3, 0xec7: 0x0080, 0xec8: 0x0080, 0xec9: 0x0080, 0xeca: 0x0080, 0xecb: 0x0080, + 0xecc: 0x0080, 0xece: 0x0080, 0xecf: 0x0080, 0xed0: 0x0080, 0xed1: 0x0080, + 0xed2: 0x0080, 0xed3: 0x0080, 0xed4: 0x0080, 0xed5: 0x0080, 0xed6: 0x0080, 0xed7: 0x0080, + 0xed8: 0x0080, 0xed9: 0x0080, 0xeda: 0x0080, + // Block 0x3c, offset 0xf00 + 0xf00: 0x00c0, 0xf01: 0x00c0, 0xf02: 0x00c0, 0xf03: 0x00c0, 0xf04: 0x00c0, 0xf05: 0x00c0, + 0xf06: 0x00c0, 0xf07: 0x00c0, 0xf08: 0x00c0, 0xf09: 0x00c0, 0xf0a: 0x00c0, 0xf0b: 0x00c0, + 0xf0c: 0x00c0, 0xf0d: 0x00c0, 0xf0e: 0x00c0, 0xf0f: 0x00c0, 0xf10: 0x00c0, 0xf11: 0x00c0, + 0xf12: 0x00c0, 0xf13: 0x00c0, 0xf14: 0x00c0, 0xf15: 0x00c0, 0xf16: 0x00c0, 0xf17: 0x00c0, + 0xf18: 0x00c0, 0xf19: 0x00c0, 0xf1a: 0x00c0, 0xf1b: 0x00c0, 0xf1c: 0x00c0, 0xf1d: 0x00c0, + 0xf1e: 0x00c0, 0xf1f: 0x00c0, 0xf20: 0x00c0, 0xf21: 0x00c0, 0xf22: 0x00c0, 0xf23: 0x00c0, + 0xf24: 0x00c0, 0xf25: 0x00c0, 0xf26: 0x00c0, 0xf27: 0x00c0, 0xf28: 0x00c0, 0xf29: 0x00c0, + 0xf2a: 0x00c0, 0xf2b: 0x00c0, 0xf2c: 0x00c0, 0xf2d: 0x00c3, 0xf2e: 0x00c3, 0xf2f: 0x00c3, + 0xf30: 0x00c3, 0xf31: 0x00c0, 0xf32: 0x00c3, 0xf33: 0x00c3, 0xf34: 0x00c3, 0xf35: 0x00c3, + 0xf36: 0x00c3, 0xf37: 0x00c3, 0xf38: 0x00c0, 0xf39: 0x00c6, 0xf3a: 0x00c6, 0xf3b: 0x00c0, + 0xf3c: 0x00c0, 0xf3d: 0x00c3, 0xf3e: 0x00c3, 0xf3f: 0x00c0, + // Block 0x3d, offset 0xf40 + 0xf40: 0x00c0, 0xf41: 0x00c0, 0xf42: 0x00c0, 0xf43: 0x00c0, 0xf44: 0x00c0, 0xf45: 0x00c0, + 0xf46: 0x00c0, 0xf47: 0x00c0, 0xf48: 0x00c0, 0xf49: 0x00c0, 0xf4a: 0x0080, 0xf4b: 0x0080, + 0xf4c: 0x0080, 0xf4d: 0x0080, 0xf4e: 0x0080, 0xf4f: 0x0080, 0xf50: 0x00c0, 0xf51: 0x00c0, + 0xf52: 0x00c0, 0xf53: 0x00c0, 0xf54: 0x00c0, 0xf55: 0x00c0, 0xf56: 0x00c0, 0xf57: 0x00c0, + 0xf58: 0x00c3, 0xf59: 0x00c3, 0xf5a: 0x00c0, 0xf5b: 0x00c0, 0xf5c: 0x00c0, 0xf5d: 0x00c0, + 0xf5e: 0x00c3, 0xf5f: 0x00c3, 0xf60: 0x00c3, 0xf61: 0x00c0, 0xf62: 0x00c0, 0xf63: 0x00c0, + 0xf64: 0x00c0, 0xf65: 0x00c0, 0xf66: 0x00c0, 0xf67: 0x00c0, 0xf68: 0x00c0, 0xf69: 0x00c0, + 0xf6a: 0x00c0, 0xf6b: 0x00c0, 0xf6c: 0x00c0, 0xf6d: 0x00c0, 0xf6e: 0x00c0, 0xf6f: 0x00c0, + 0xf70: 0x00c0, 0xf71: 0x00c3, 0xf72: 0x00c3, 0xf73: 0x00c3, 0xf74: 0x00c3, 0xf75: 0x00c0, + 0xf76: 0x00c0, 0xf77: 0x00c0, 0xf78: 0x00c0, 0xf79: 0x00c0, 0xf7a: 0x00c0, 0xf7b: 0x00c0, + 0xf7c: 0x00c0, 0xf7d: 0x00c0, 0xf7e: 0x00c0, 0xf7f: 0x00c0, + // Block 0x3e, offset 0xf80 + 0xf80: 0x00c0, 0xf81: 0x00c0, 0xf82: 0x00c3, 0xf83: 0x00c0, 0xf84: 0x00c0, 0xf85: 0x00c3, + 0xf86: 0x00c3, 0xf87: 0x00c0, 0xf88: 0x00c0, 0xf89: 0x00c0, 0xf8a: 0x00c0, 0xf8b: 0x00c0, + 0xf8c: 0x00c0, 0xf8d: 0x00c3, 0xf8e: 0x00c0, 0xf8f: 0x00c0, 0xf90: 0x00c0, 0xf91: 0x00c0, + 0xf92: 0x00c0, 0xf93: 0x00c0, 0xf94: 0x00c0, 0xf95: 0x00c0, 0xf96: 0x00c0, 0xf97: 0x00c0, + 0xf98: 0x00c0, 0xf99: 0x00c0, 0xf9a: 0x00c0, 0xf9b: 0x00c0, 0xf9c: 0x00c0, 0xf9d: 0x00c3, + 0xf9e: 0x0080, 0xf9f: 0x0080, 0xfa0: 0x00c0, 0xfa1: 0x00c0, 0xfa2: 0x00c0, 0xfa3: 0x00c0, + 0xfa4: 0x00c0, 0xfa5: 0x00c0, 0xfa6: 0x00c0, 0xfa7: 0x00c0, 0xfa8: 0x00c0, 0xfa9: 0x00c0, + 0xfaa: 0x00c0, 0xfab: 0x00c0, 0xfac: 0x00c0, 0xfad: 0x00c0, 0xfae: 0x00c0, 0xfaf: 0x00c0, + 0xfb0: 0x00c0, 0xfb1: 0x00c0, 0xfb2: 0x00c0, 0xfb3: 0x00c0, 0xfb4: 0x00c0, 0xfb5: 0x00c0, + 0xfb6: 0x00c0, 0xfb7: 0x00c0, 0xfb8: 0x00c0, 0xfb9: 0x00c0, 0xfba: 0x00c0, 0xfbb: 0x00c0, + 0xfbc: 0x00c0, 0xfbd: 0x00c0, 0xfbe: 0x00c0, 0xfbf: 0x00c0, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x00c0, 0xfc1: 0x00c0, 0xfc2: 0x00c0, 0xfc3: 0x00c0, 0xfc4: 0x00c0, 0xfc5: 0x00c0, + 0xfc7: 0x00c0, + 0xfcd: 0x00c0, 0xfd0: 0x00c0, 0xfd1: 0x00c0, + 0xfd2: 0x00c0, 0xfd3: 0x00c0, 0xfd4: 0x00c0, 0xfd5: 0x00c0, 0xfd6: 0x00c0, 0xfd7: 0x00c0, + 0xfd8: 0x00c0, 0xfd9: 0x00c0, 0xfda: 0x00c0, 0xfdb: 0x00c0, 0xfdc: 0x00c0, 0xfdd: 0x00c0, + 0xfde: 0x00c0, 0xfdf: 0x00c0, 0xfe0: 0x00c0, 0xfe1: 0x00c0, 0xfe2: 0x00c0, 0xfe3: 0x00c0, + 0xfe4: 0x00c0, 0xfe5: 0x00c0, 0xfe6: 0x00c0, 0xfe7: 0x00c0, 0xfe8: 0x00c0, 0xfe9: 0x00c0, + 0xfea: 0x00c0, 0xfeb: 0x00c0, 0xfec: 0x00c0, 0xfed: 0x00c0, 0xfee: 0x00c0, 0xfef: 0x00c0, + 0xff0: 0x00c0, 0xff1: 0x00c0, 0xff2: 0x00c0, 0xff3: 0x00c0, 0xff4: 0x00c0, 0xff5: 0x00c0, + 0xff6: 0x00c0, 0xff7: 0x00c0, 0xff8: 0x00c0, 0xff9: 0x00c0, 0xffa: 0x00c0, 0xffb: 0x0080, + 0xffc: 0x0080, 0xffd: 0x00c0, 0xffe: 0x00c0, 0xfff: 0x00c0, + // Block 0x40, offset 0x1000 + 0x1000: 0x0040, 0x1001: 0x0040, 0x1002: 0x0040, 0x1003: 0x0040, 0x1004: 0x0040, 0x1005: 0x0040, + 0x1006: 0x0040, 0x1007: 0x0040, 0x1008: 0x0040, 0x1009: 0x0040, 0x100a: 0x0040, 0x100b: 0x0040, + 0x100c: 0x0040, 0x100d: 0x0040, 0x100e: 0x0040, 0x100f: 0x0040, 0x1010: 0x0040, 0x1011: 0x0040, + 0x1012: 0x0040, 0x1013: 0x0040, 0x1014: 0x0040, 0x1015: 0x0040, 0x1016: 0x0040, 0x1017: 0x0040, + 0x1018: 0x0040, 0x1019: 0x0040, 0x101a: 0x0040, 0x101b: 0x0040, 0x101c: 0x0040, 0x101d: 0x0040, + 0x101e: 0x0040, 0x101f: 0x0040, 0x1020: 0x0040, 0x1021: 0x0040, 0x1022: 0x0040, 0x1023: 0x0040, + 0x1024: 0x0040, 0x1025: 0x0040, 0x1026: 0x0040, 0x1027: 0x0040, 0x1028: 0x0040, 0x1029: 0x0040, + 0x102a: 0x0040, 0x102b: 0x0040, 0x102c: 0x0040, 0x102d: 0x0040, 0x102e: 0x0040, 0x102f: 0x0040, + 0x1030: 0x0040, 0x1031: 0x0040, 0x1032: 0x0040, 0x1033: 0x0040, 0x1034: 0x0040, 0x1035: 0x0040, + 0x1036: 0x0040, 0x1037: 0x0040, 0x1038: 0x0040, 0x1039: 0x0040, 0x103a: 0x0040, 0x103b: 0x0040, + 0x103c: 0x0040, 0x103d: 0x0040, 0x103e: 0x0040, 0x103f: 0x0040, + // Block 0x41, offset 0x1040 + 0x1040: 0x00c0, 0x1041: 0x00c0, 0x1042: 0x00c0, 0x1043: 0x00c0, 0x1044: 0x00c0, 0x1045: 0x00c0, + 0x1046: 0x00c0, 0x1047: 0x00c0, 0x1048: 0x00c0, 0x104a: 0x00c0, 0x104b: 0x00c0, + 0x104c: 0x00c0, 0x104d: 0x00c0, 0x1050: 0x00c0, 0x1051: 0x00c0, + 0x1052: 0x00c0, 0x1053: 0x00c0, 0x1054: 0x00c0, 0x1055: 0x00c0, 0x1056: 0x00c0, + 0x1058: 0x00c0, 0x105a: 0x00c0, 0x105b: 0x00c0, 0x105c: 0x00c0, 0x105d: 0x00c0, + 0x1060: 0x00c0, 0x1061: 0x00c0, 0x1062: 0x00c0, 0x1063: 0x00c0, + 0x1064: 0x00c0, 0x1065: 0x00c0, 0x1066: 0x00c0, 0x1067: 0x00c0, 0x1068: 0x00c0, 0x1069: 0x00c0, + 0x106a: 0x00c0, 0x106b: 0x00c0, 0x106c: 0x00c0, 0x106d: 0x00c0, 0x106e: 0x00c0, 0x106f: 0x00c0, + 0x1070: 0x00c0, 0x1071: 0x00c0, 0x1072: 0x00c0, 0x1073: 0x00c0, 0x1074: 0x00c0, 0x1075: 0x00c0, + 0x1076: 0x00c0, 0x1077: 0x00c0, 0x1078: 0x00c0, 0x1079: 0x00c0, 0x107a: 0x00c0, 0x107b: 0x00c0, + 0x107c: 0x00c0, 0x107d: 0x00c0, 0x107e: 0x00c0, 0x107f: 0x00c0, + // Block 0x42, offset 0x1080 + 0x1080: 0x00c0, 0x1081: 0x00c0, 0x1082: 0x00c0, 0x1083: 0x00c0, 0x1084: 0x00c0, 0x1085: 0x00c0, + 0x1086: 0x00c0, 0x1087: 0x00c0, 0x1088: 0x00c0, 0x108a: 0x00c0, 0x108b: 0x00c0, + 0x108c: 0x00c0, 0x108d: 0x00c0, 0x1090: 0x00c0, 0x1091: 0x00c0, + 0x1092: 0x00c0, 0x1093: 0x00c0, 0x1094: 0x00c0, 0x1095: 0x00c0, 0x1096: 0x00c0, 0x1097: 0x00c0, + 0x1098: 0x00c0, 0x1099: 0x00c0, 0x109a: 0x00c0, 0x109b: 0x00c0, 0x109c: 0x00c0, 0x109d: 0x00c0, + 0x109e: 0x00c0, 0x109f: 0x00c0, 0x10a0: 0x00c0, 0x10a1: 0x00c0, 0x10a2: 0x00c0, 0x10a3: 0x00c0, + 0x10a4: 0x00c0, 0x10a5: 0x00c0, 0x10a6: 0x00c0, 0x10a7: 0x00c0, 0x10a8: 0x00c0, 0x10a9: 0x00c0, + 0x10aa: 0x00c0, 0x10ab: 0x00c0, 0x10ac: 0x00c0, 0x10ad: 0x00c0, 0x10ae: 0x00c0, 0x10af: 0x00c0, + 0x10b0: 0x00c0, 0x10b2: 0x00c0, 0x10b3: 0x00c0, 0x10b4: 0x00c0, 0x10b5: 0x00c0, + 0x10b8: 0x00c0, 0x10b9: 0x00c0, 0x10ba: 0x00c0, 0x10bb: 0x00c0, + 0x10bc: 0x00c0, 0x10bd: 0x00c0, 0x10be: 0x00c0, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x00c0, 0x10c2: 0x00c0, 0x10c3: 0x00c0, 0x10c4: 0x00c0, 0x10c5: 0x00c0, + 0x10c8: 0x00c0, 0x10c9: 0x00c0, 0x10ca: 0x00c0, 0x10cb: 0x00c0, + 0x10cc: 0x00c0, 0x10cd: 0x00c0, 0x10ce: 0x00c0, 0x10cf: 0x00c0, 0x10d0: 0x00c0, 0x10d1: 0x00c0, + 0x10d2: 0x00c0, 0x10d3: 0x00c0, 0x10d4: 0x00c0, 0x10d5: 0x00c0, 0x10d6: 0x00c0, + 0x10d8: 0x00c0, 0x10d9: 0x00c0, 0x10da: 0x00c0, 0x10db: 0x00c0, 0x10dc: 0x00c0, 0x10dd: 0x00c0, + 0x10de: 0x00c0, 0x10df: 0x00c0, 0x10e0: 0x00c0, 0x10e1: 0x00c0, 0x10e2: 0x00c0, 0x10e3: 0x00c0, + 0x10e4: 0x00c0, 0x10e5: 0x00c0, 0x10e6: 0x00c0, 0x10e7: 0x00c0, 0x10e8: 0x00c0, 0x10e9: 0x00c0, + 0x10ea: 0x00c0, 0x10eb: 0x00c0, 0x10ec: 0x00c0, 0x10ed: 0x00c0, 0x10ee: 0x00c0, 0x10ef: 0x00c0, + 0x10f0: 0x00c0, 0x10f1: 0x00c0, 0x10f2: 0x00c0, 0x10f3: 0x00c0, 0x10f4: 0x00c0, 0x10f5: 0x00c0, + 0x10f6: 0x00c0, 0x10f7: 0x00c0, 0x10f8: 0x00c0, 0x10f9: 0x00c0, 0x10fa: 0x00c0, 0x10fb: 0x00c0, + 0x10fc: 0x00c0, 0x10fd: 0x00c0, 0x10fe: 0x00c0, 0x10ff: 0x00c0, + // Block 0x44, offset 0x1100 + 0x1100: 0x00c0, 0x1101: 0x00c0, 0x1102: 0x00c0, 0x1103: 0x00c0, 0x1104: 0x00c0, 0x1105: 0x00c0, + 0x1106: 0x00c0, 0x1107: 0x00c0, 0x1108: 0x00c0, 0x1109: 0x00c0, 0x110a: 0x00c0, 0x110b: 0x00c0, + 0x110c: 0x00c0, 0x110d: 0x00c0, 0x110e: 0x00c0, 0x110f: 0x00c0, 0x1110: 0x00c0, + 0x1112: 0x00c0, 0x1113: 0x00c0, 0x1114: 0x00c0, 0x1115: 0x00c0, + 0x1118: 0x00c0, 0x1119: 0x00c0, 0x111a: 0x00c0, 0x111b: 0x00c0, 0x111c: 0x00c0, 0x111d: 0x00c0, + 0x111e: 0x00c0, 0x111f: 0x00c0, 0x1120: 0x00c0, 0x1121: 0x00c0, 0x1122: 0x00c0, 0x1123: 0x00c0, + 0x1124: 0x00c0, 0x1125: 0x00c0, 0x1126: 0x00c0, 0x1127: 0x00c0, 0x1128: 0x00c0, 0x1129: 0x00c0, + 0x112a: 0x00c0, 0x112b: 0x00c0, 0x112c: 0x00c0, 0x112d: 0x00c0, 0x112e: 0x00c0, 0x112f: 0x00c0, + 0x1130: 0x00c0, 0x1131: 0x00c0, 0x1132: 0x00c0, 0x1133: 0x00c0, 0x1134: 0x00c0, 0x1135: 0x00c0, + 0x1136: 0x00c0, 0x1137: 0x00c0, 0x1138: 0x00c0, 0x1139: 0x00c0, 0x113a: 0x00c0, 0x113b: 0x00c0, + 0x113c: 0x00c0, 0x113d: 0x00c0, 0x113e: 0x00c0, 0x113f: 0x00c0, + // Block 0x45, offset 0x1140 + 0x1140: 0x00c0, 0x1141: 0x00c0, 0x1142: 0x00c0, 0x1143: 0x00c0, 0x1144: 0x00c0, 0x1145: 0x00c0, + 0x1146: 0x00c0, 0x1147: 0x00c0, 0x1148: 0x00c0, 0x1149: 0x00c0, 0x114a: 0x00c0, 0x114b: 0x00c0, + 0x114c: 0x00c0, 0x114d: 0x00c0, 0x114e: 0x00c0, 0x114f: 0x00c0, 0x1150: 0x00c0, 0x1151: 0x00c0, + 0x1152: 0x00c0, 0x1153: 0x00c0, 0x1154: 0x00c0, 0x1155: 0x00c0, 0x1156: 0x00c0, 0x1157: 0x00c0, + 0x1158: 0x00c0, 0x1159: 0x00c0, 0x115a: 0x00c0, 0x115d: 0x00c3, + 0x115e: 0x00c3, 0x115f: 0x00c3, 0x1160: 0x0080, 0x1161: 0x0080, 0x1162: 0x0080, 0x1163: 0x0080, + 0x1164: 0x0080, 0x1165: 0x0080, 0x1166: 0x0080, 0x1167: 0x0080, 0x1168: 0x0080, 0x1169: 0x0080, + 0x116a: 0x0080, 0x116b: 0x0080, 0x116c: 0x0080, 0x116d: 0x0080, 0x116e: 0x0080, 0x116f: 0x0080, + 0x1170: 0x0080, 0x1171: 0x0080, 0x1172: 0x0080, 0x1173: 0x0080, 0x1174: 0x0080, 0x1175: 0x0080, + 0x1176: 0x0080, 0x1177: 0x0080, 0x1178: 0x0080, 0x1179: 0x0080, 0x117a: 0x0080, 0x117b: 0x0080, + 0x117c: 0x0080, + // Block 0x46, offset 0x1180 + 0x1180: 0x00c0, 0x1181: 0x00c0, 0x1182: 0x00c0, 0x1183: 0x00c0, 0x1184: 0x00c0, 0x1185: 0x00c0, + 0x1186: 0x00c0, 0x1187: 0x00c0, 0x1188: 0x00c0, 0x1189: 0x00c0, 0x118a: 0x00c0, 0x118b: 0x00c0, + 0x118c: 0x00c0, 0x118d: 0x00c0, 0x118e: 0x00c0, 0x118f: 0x00c0, 0x1190: 0x0080, 0x1191: 0x0080, + 0x1192: 0x0080, 0x1193: 0x0080, 0x1194: 0x0080, 0x1195: 0x0080, 0x1196: 0x0080, 0x1197: 0x0080, + 0x1198: 0x0080, 0x1199: 0x0080, + 0x11a0: 0x00c0, 0x11a1: 0x00c0, 0x11a2: 0x00c0, 0x11a3: 0x00c0, + 0x11a4: 0x00c0, 0x11a5: 0x00c0, 0x11a6: 0x00c0, 0x11a7: 0x00c0, 0x11a8: 0x00c0, 0x11a9: 0x00c0, + 0x11aa: 0x00c0, 0x11ab: 0x00c0, 0x11ac: 0x00c0, 0x11ad: 0x00c0, 0x11ae: 0x00c0, 0x11af: 0x00c0, + 0x11b0: 0x00c0, 0x11b1: 0x00c0, 0x11b2: 0x00c0, 0x11b3: 0x00c0, 0x11b4: 0x00c0, 0x11b5: 0x00c0, + 0x11b6: 0x00c0, 0x11b7: 0x00c0, 0x11b8: 0x00c0, 0x11b9: 0x00c0, 0x11ba: 0x00c0, 0x11bb: 0x00c0, + 0x11bc: 0x00c0, 0x11bd: 0x00c0, 0x11be: 0x00c0, 0x11bf: 0x00c0, + // Block 0x47, offset 0x11c0 + 0x11c0: 0x00c0, 0x11c1: 0x00c0, 0x11c2: 0x00c0, 0x11c3: 0x00c0, 0x11c4: 0x00c0, 0x11c5: 0x00c0, + 0x11c6: 0x00c0, 0x11c7: 0x00c0, 0x11c8: 0x00c0, 0x11c9: 0x00c0, 0x11ca: 0x00c0, 0x11cb: 0x00c0, + 0x11cc: 0x00c0, 0x11cd: 0x00c0, 0x11ce: 0x00c0, 0x11cf: 0x00c0, 0x11d0: 0x00c0, 0x11d1: 0x00c0, + 0x11d2: 0x00c0, 0x11d3: 0x00c0, 0x11d4: 0x00c0, 0x11d5: 0x00c0, 0x11d6: 0x00c0, 0x11d7: 0x00c0, + 0x11d8: 0x00c0, 0x11d9: 0x00c0, 0x11da: 0x00c0, 0x11db: 0x00c0, 0x11dc: 0x00c0, 0x11dd: 0x00c0, + 0x11de: 0x00c0, 0x11df: 0x00c0, 0x11e0: 0x00c0, 0x11e1: 0x00c0, 0x11e2: 0x00c0, 0x11e3: 0x00c0, + 0x11e4: 0x00c0, 0x11e5: 0x00c0, 0x11e6: 0x00c0, 0x11e7: 0x00c0, 0x11e8: 0x00c0, 0x11e9: 0x00c0, + 0x11ea: 0x00c0, 0x11eb: 0x00c0, 0x11ec: 0x00c0, 0x11ed: 0x00c0, 0x11ee: 0x00c0, 0x11ef: 0x00c0, + 0x11f0: 0x00c0, 0x11f1: 0x00c0, 0x11f2: 0x00c0, 0x11f3: 0x00c0, 0x11f4: 0x00c0, 0x11f5: 0x00c0, + 0x11f8: 0x00c0, 0x11f9: 0x00c0, 0x11fa: 0x00c0, 0x11fb: 0x00c0, + 0x11fc: 0x00c0, 0x11fd: 0x00c0, + // Block 0x48, offset 0x1200 + 0x1200: 0x0080, 0x1201: 0x00c0, 0x1202: 0x00c0, 0x1203: 0x00c0, 0x1204: 0x00c0, 0x1205: 0x00c0, + 0x1206: 0x00c0, 0x1207: 0x00c0, 0x1208: 0x00c0, 0x1209: 0x00c0, 0x120a: 0x00c0, 0x120b: 0x00c0, + 0x120c: 0x00c0, 0x120d: 0x00c0, 0x120e: 0x00c0, 0x120f: 0x00c0, 0x1210: 0x00c0, 0x1211: 0x00c0, + 0x1212: 0x00c0, 0x1213: 0x00c0, 0x1214: 0x00c0, 0x1215: 0x00c0, 0x1216: 0x00c0, 0x1217: 0x00c0, + 0x1218: 0x00c0, 0x1219: 0x00c0, 0x121a: 0x00c0, 0x121b: 0x00c0, 0x121c: 0x00c0, 0x121d: 0x00c0, + 0x121e: 0x00c0, 0x121f: 0x00c0, 0x1220: 0x00c0, 0x1221: 0x00c0, 0x1222: 0x00c0, 0x1223: 0x00c0, + 0x1224: 0x00c0, 0x1225: 0x00c0, 0x1226: 0x00c0, 0x1227: 0x00c0, 0x1228: 0x00c0, 0x1229: 0x00c0, + 0x122a: 0x00c0, 0x122b: 0x00c0, 0x122c: 0x00c0, 0x122d: 0x00c0, 0x122e: 0x00c0, 0x122f: 0x00c0, + 0x1230: 0x00c0, 0x1231: 0x00c0, 0x1232: 0x00c0, 0x1233: 0x00c0, 0x1234: 0x00c0, 0x1235: 0x00c0, + 0x1236: 0x00c0, 0x1237: 0x00c0, 0x1238: 0x00c0, 0x1239: 0x00c0, 0x123a: 0x00c0, 0x123b: 0x00c0, + 0x123c: 0x00c0, 0x123d: 0x00c0, 0x123e: 0x00c0, 0x123f: 0x00c0, + // Block 0x49, offset 0x1240 + 0x1240: 0x00c0, 0x1241: 0x00c0, 0x1242: 0x00c0, 0x1243: 0x00c0, 0x1244: 0x00c0, 0x1245: 0x00c0, + 0x1246: 0x00c0, 0x1247: 0x00c0, 0x1248: 0x00c0, 0x1249: 0x00c0, 0x124a: 0x00c0, 0x124b: 0x00c0, + 0x124c: 0x00c0, 0x124d: 0x00c0, 0x124e: 0x00c0, 0x124f: 0x00c0, 0x1250: 0x00c0, 0x1251: 0x00c0, + 0x1252: 0x00c0, 0x1253: 0x00c0, 0x1254: 0x00c0, 0x1255: 0x00c0, 0x1256: 0x00c0, 0x1257: 0x00c0, + 0x1258: 0x00c0, 0x1259: 0x00c0, 0x125a: 0x00c0, 0x125b: 0x00c0, 0x125c: 0x00c0, 0x125d: 0x00c0, + 0x125e: 0x00c0, 0x125f: 0x00c0, 0x1260: 0x00c0, 0x1261: 0x00c0, 0x1262: 0x00c0, 0x1263: 0x00c0, + 0x1264: 0x00c0, 0x1265: 0x00c0, 0x1266: 0x00c0, 0x1267: 0x00c0, 0x1268: 0x00c0, 0x1269: 0x00c0, + 0x126a: 0x00c0, 0x126b: 0x00c0, 0x126c: 0x00c0, 0x126d: 0x0080, 0x126e: 0x0080, 0x126f: 0x00c0, + 0x1270: 0x00c0, 0x1271: 0x00c0, 0x1272: 0x00c0, 0x1273: 0x00c0, 0x1274: 0x00c0, 0x1275: 0x00c0, + 0x1276: 0x00c0, 0x1277: 0x00c0, 0x1278: 0x00c0, 0x1279: 0x00c0, 0x127a: 0x00c0, 0x127b: 0x00c0, + 0x127c: 0x00c0, 0x127d: 0x00c0, 0x127e: 0x00c0, 0x127f: 0x00c0, + // Block 0x4a, offset 0x1280 + 0x1280: 0x0080, 0x1281: 0x00c0, 0x1282: 0x00c0, 0x1283: 0x00c0, 0x1284: 0x00c0, 0x1285: 0x00c0, + 0x1286: 0x00c0, 0x1287: 0x00c0, 0x1288: 0x00c0, 0x1289: 0x00c0, 0x128a: 0x00c0, 0x128b: 0x00c0, + 0x128c: 0x00c0, 0x128d: 0x00c0, 0x128e: 0x00c0, 0x128f: 0x00c0, 0x1290: 0x00c0, 0x1291: 0x00c0, + 0x1292: 0x00c0, 0x1293: 0x00c0, 0x1294: 0x00c0, 0x1295: 0x00c0, 0x1296: 0x00c0, 0x1297: 0x00c0, + 0x1298: 0x00c0, 0x1299: 0x00c0, 0x129a: 0x00c0, 0x129b: 0x0080, 0x129c: 0x0080, + 0x12a0: 0x00c0, 0x12a1: 0x00c0, 0x12a2: 0x00c0, 0x12a3: 0x00c0, + 0x12a4: 0x00c0, 0x12a5: 0x00c0, 0x12a6: 0x00c0, 0x12a7: 0x00c0, 0x12a8: 0x00c0, 0x12a9: 0x00c0, + 0x12aa: 0x00c0, 0x12ab: 0x00c0, 0x12ac: 0x00c0, 0x12ad: 0x00c0, 0x12ae: 0x00c0, 0x12af: 0x00c0, + 0x12b0: 0x00c0, 0x12b1: 0x00c0, 0x12b2: 0x00c0, 0x12b3: 0x00c0, 0x12b4: 0x00c0, 0x12b5: 0x00c0, + 0x12b6: 0x00c0, 0x12b7: 0x00c0, 0x12b8: 0x00c0, 0x12b9: 0x00c0, 0x12ba: 0x00c0, 0x12bb: 0x00c0, + 0x12bc: 0x00c0, 0x12bd: 0x00c0, 0x12be: 0x00c0, 0x12bf: 0x00c0, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x00c0, 0x12c1: 0x00c0, 0x12c2: 0x00c0, 0x12c3: 0x00c0, 0x12c4: 0x00c0, 0x12c5: 0x00c0, + 0x12c6: 0x00c0, 0x12c7: 0x00c0, 0x12c8: 0x00c0, 0x12c9: 0x00c0, 0x12ca: 0x00c0, 0x12cb: 0x00c0, + 0x12cc: 0x00c0, 0x12cd: 0x00c0, 0x12ce: 0x00c0, 0x12cf: 0x00c0, 0x12d0: 0x00c0, 0x12d1: 0x00c0, + 0x12d2: 0x00c0, 0x12d3: 0x00c0, 0x12d4: 0x00c0, 0x12d5: 0x00c0, 0x12d6: 0x00c0, 0x12d7: 0x00c0, + 0x12d8: 0x00c0, 0x12d9: 0x00c0, 0x12da: 0x00c0, 0x12db: 0x00c0, 0x12dc: 0x00c0, 0x12dd: 0x00c0, + 0x12de: 0x00c0, 0x12df: 0x00c0, 0x12e0: 0x00c0, 0x12e1: 0x00c0, 0x12e2: 0x00c0, 0x12e3: 0x00c0, + 0x12e4: 0x00c0, 0x12e5: 0x00c0, 0x12e6: 0x00c0, 0x12e7: 0x00c0, 0x12e8: 0x00c0, 0x12e9: 0x00c0, + 0x12ea: 0x00c0, 0x12eb: 0x0080, 0x12ec: 0x0080, 0x12ed: 0x0080, 0x12ee: 0x0080, 0x12ef: 0x0080, + 0x12f0: 0x0080, 0x12f1: 0x00c0, 0x12f2: 0x00c0, 0x12f3: 0x00c0, 0x12f4: 0x00c0, 0x12f5: 0x00c0, + 0x12f6: 0x00c0, 0x12f7: 0x00c0, 0x12f8: 0x00c0, + // Block 0x4c, offset 0x1300 + 0x1300: 0x00c0, 0x1301: 0x00c0, 0x1302: 0x00c0, 0x1303: 0x00c0, 0x1304: 0x00c0, 0x1305: 0x00c0, + 0x1306: 0x00c0, 0x1307: 0x00c0, 0x1308: 0x00c0, 0x1309: 0x00c0, 0x130a: 0x00c0, 0x130b: 0x00c0, + 0x130c: 0x00c0, 0x130e: 0x00c0, 0x130f: 0x00c0, 0x1310: 0x00c0, 0x1311: 0x00c0, + 0x1312: 0x00c3, 0x1313: 0x00c3, 0x1314: 0x00c6, + 0x1320: 0x00c0, 0x1321: 0x00c0, 0x1322: 0x00c0, 0x1323: 0x00c0, + 0x1324: 0x00c0, 0x1325: 0x00c0, 0x1326: 0x00c0, 0x1327: 0x00c0, 0x1328: 0x00c0, 0x1329: 0x00c0, + 0x132a: 0x00c0, 0x132b: 0x00c0, 0x132c: 0x00c0, 0x132d: 0x00c0, 0x132e: 0x00c0, 0x132f: 0x00c0, + 0x1330: 0x00c0, 0x1331: 0x00c0, 0x1332: 0x00c3, 0x1333: 0x00c3, 0x1334: 0x00c6, 0x1335: 0x0080, + 0x1336: 0x0080, + // Block 0x4d, offset 0x1340 + 0x1340: 0x00c0, 0x1341: 0x00c0, 0x1342: 0x00c0, 0x1343: 0x00c0, 0x1344: 0x00c0, 0x1345: 0x00c0, + 0x1346: 0x00c0, 0x1347: 0x00c0, 0x1348: 0x00c0, 0x1349: 0x00c0, 0x134a: 0x00c0, 0x134b: 0x00c0, + 0x134c: 0x00c0, 0x134d: 0x00c0, 0x134e: 0x00c0, 0x134f: 0x00c0, 0x1350: 0x00c0, 0x1351: 0x00c0, + 0x1352: 0x00c3, 0x1353: 0x00c3, + 0x1360: 0x00c0, 0x1361: 0x00c0, 0x1362: 0x00c0, 0x1363: 0x00c0, + 0x1364: 0x00c0, 0x1365: 0x00c0, 0x1366: 0x00c0, 0x1367: 0x00c0, 0x1368: 0x00c0, 0x1369: 0x00c0, + 0x136a: 0x00c0, 0x136b: 0x00c0, 0x136c: 0x00c0, 0x136e: 0x00c0, 0x136f: 0x00c0, + 0x1370: 0x00c0, 0x1372: 0x00c3, 0x1373: 0x00c3, + // Block 0x4e, offset 0x1380 + 0x1380: 0x00c0, 0x1381: 0x00c0, 0x1382: 0x00c0, 0x1383: 0x00c0, 0x1384: 0x00c0, 0x1385: 0x00c0, + 0x1386: 0x00c0, 0x1387: 0x00c0, 0x1388: 0x00c0, 0x1389: 0x00c0, 0x138a: 0x00c0, 0x138b: 0x00c0, + 0x138c: 0x00c0, 0x138d: 0x00c0, 0x138e: 0x00c0, 0x138f: 0x00c0, 0x1390: 0x00c0, 0x1391: 0x00c0, + 0x1392: 0x00c0, 0x1393: 0x00c0, 0x1394: 0x00c0, 0x1395: 0x00c0, 0x1396: 0x00c0, 0x1397: 0x00c0, + 0x1398: 0x00c0, 0x1399: 0x00c0, 0x139a: 0x00c0, 0x139b: 0x00c0, 0x139c: 0x00c0, 0x139d: 0x00c0, + 0x139e: 0x00c0, 0x139f: 0x00c0, 0x13a0: 0x00c0, 0x13a1: 0x00c0, 0x13a2: 0x00c0, 0x13a3: 0x00c0, + 0x13a4: 0x00c0, 0x13a5: 0x00c0, 0x13a6: 0x00c0, 0x13a7: 0x00c0, 0x13a8: 0x00c0, 0x13a9: 0x00c0, + 0x13aa: 0x00c0, 0x13ab: 0x00c0, 0x13ac: 0x00c0, 0x13ad: 0x00c0, 0x13ae: 0x00c0, 0x13af: 0x00c0, + 0x13b0: 0x00c0, 0x13b1: 0x00c0, 0x13b2: 0x00c0, 0x13b3: 0x00c0, 0x13b4: 0x0040, 0x13b5: 0x0040, + 0x13b6: 0x00c0, 0x13b7: 0x00c3, 0x13b8: 0x00c3, 0x13b9: 0x00c3, 0x13ba: 0x00c3, 0x13bb: 0x00c3, + 0x13bc: 0x00c3, 0x13bd: 0x00c3, 0x13be: 0x00c0, 0x13bf: 0x00c0, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x00c0, 0x13c1: 0x00c0, 0x13c2: 0x00c0, 0x13c3: 0x00c0, 0x13c4: 0x00c0, 0x13c5: 0x00c0, + 0x13c6: 0x00c3, 0x13c7: 0x00c0, 0x13c8: 0x00c0, 0x13c9: 0x00c3, 0x13ca: 0x00c3, 0x13cb: 0x00c3, + 0x13cc: 0x00c3, 0x13cd: 0x00c3, 0x13ce: 0x00c3, 0x13cf: 0x00c3, 0x13d0: 0x00c3, 0x13d1: 0x00c3, + 0x13d2: 0x00c6, 0x13d3: 0x00c3, 0x13d4: 0x0080, 0x13d5: 0x0080, 0x13d6: 0x0080, 0x13d7: 0x00c0, + 0x13d8: 0x0080, 0x13d9: 0x0080, 0x13da: 0x0080, 0x13db: 0x0080, 0x13dc: 0x00c0, 0x13dd: 0x00c3, + 0x13e0: 0x00c0, 0x13e1: 0x00c0, 0x13e2: 0x00c0, 0x13e3: 0x00c0, + 0x13e4: 0x00c0, 0x13e5: 0x00c0, 0x13e6: 0x00c0, 0x13e7: 0x00c0, 0x13e8: 0x00c0, 0x13e9: 0x00c0, + 0x13f0: 0x0080, 0x13f1: 0x0080, 0x13f2: 0x0080, 0x13f3: 0x0080, 0x13f4: 0x0080, 0x13f5: 0x0080, + 0x13f6: 0x0080, 0x13f7: 0x0080, 0x13f8: 0x0080, 0x13f9: 0x0080, + // Block 0x50, offset 0x1400 + 0x1400: 0x0080, 0x1401: 0x0080, 0x1402: 0x0080, 0x1403: 0x0080, 0x1404: 0x0080, 0x1405: 0x0080, + 0x1406: 0x0080, 0x1407: 0x0082, 0x1408: 0x0080, 0x1409: 0x0080, 0x140a: 0x0080, 0x140b: 0x0040, + 0x140c: 0x0040, 0x140d: 0x0040, 0x140e: 0x0040, 0x1410: 0x00c0, 0x1411: 0x00c0, + 0x1412: 0x00c0, 0x1413: 0x00c0, 0x1414: 0x00c0, 0x1415: 0x00c0, 0x1416: 0x00c0, 0x1417: 0x00c0, + 0x1418: 0x00c0, 0x1419: 0x00c0, + 0x1420: 0x00c2, 0x1421: 0x00c2, 0x1422: 0x00c2, 0x1423: 0x00c2, + 0x1424: 0x00c2, 0x1425: 0x00c2, 0x1426: 0x00c2, 0x1427: 0x00c2, 0x1428: 0x00c2, 0x1429: 0x00c2, + 0x142a: 0x00c2, 0x142b: 0x00c2, 0x142c: 0x00c2, 0x142d: 0x00c2, 0x142e: 0x00c2, 0x142f: 0x00c2, + 0x1430: 0x00c2, 0x1431: 0x00c2, 0x1432: 0x00c2, 0x1433: 0x00c2, 0x1434: 0x00c2, 0x1435: 0x00c2, + 0x1436: 0x00c2, 0x1437: 0x00c2, 0x1438: 0x00c2, 0x1439: 0x00c2, 0x143a: 0x00c2, 0x143b: 0x00c2, + 0x143c: 0x00c2, 0x143d: 0x00c2, 0x143e: 0x00c2, 0x143f: 0x00c2, + // Block 0x51, offset 0x1440 + 0x1440: 0x00c2, 0x1441: 0x00c2, 0x1442: 0x00c2, 0x1443: 0x00c2, 0x1444: 0x00c2, 0x1445: 0x00c2, + 0x1446: 0x00c2, 0x1447: 0x00c2, 0x1448: 0x00c2, 0x1449: 0x00c2, 0x144a: 0x00c2, 0x144b: 0x00c2, + 0x144c: 0x00c2, 0x144d: 0x00c2, 0x144e: 0x00c2, 0x144f: 0x00c2, 0x1450: 0x00c2, 0x1451: 0x00c2, + 0x1452: 0x00c2, 0x1453: 0x00c2, 0x1454: 0x00c2, 0x1455: 0x00c2, 0x1456: 0x00c2, 0x1457: 0x00c2, + 0x1458: 0x00c2, 0x1459: 0x00c2, 0x145a: 0x00c2, 0x145b: 0x00c2, 0x145c: 0x00c2, 0x145d: 0x00c2, + 0x145e: 0x00c2, 0x145f: 0x00c2, 0x1460: 0x00c2, 0x1461: 0x00c2, 0x1462: 0x00c2, 0x1463: 0x00c2, + 0x1464: 0x00c2, 0x1465: 0x00c2, 0x1466: 0x00c2, 0x1467: 0x00c2, 0x1468: 0x00c2, 0x1469: 0x00c2, + 0x146a: 0x00c2, 0x146b: 0x00c2, 0x146c: 0x00c2, 0x146d: 0x00c2, 0x146e: 0x00c2, 0x146f: 0x00c2, + 0x1470: 0x00c2, 0x1471: 0x00c2, 0x1472: 0x00c2, 0x1473: 0x00c2, 0x1474: 0x00c2, 0x1475: 0x00c2, + 0x1476: 0x00c2, 0x1477: 0x00c2, + // Block 0x52, offset 0x1480 + 0x1480: 0x00c0, 0x1481: 0x00c0, 0x1482: 0x00c0, 0x1483: 0x00c0, 0x1484: 0x00c0, 0x1485: 0x00c3, + 0x1486: 0x00c3, 0x1487: 0x00c2, 0x1488: 0x00c2, 0x1489: 0x00c2, 0x148a: 0x00c2, 0x148b: 0x00c2, + 0x148c: 0x00c2, 0x148d: 0x00c2, 0x148e: 0x00c2, 0x148f: 0x00c2, 0x1490: 0x00c2, 0x1491: 0x00c2, + 0x1492: 0x00c2, 0x1493: 0x00c2, 0x1494: 0x00c2, 0x1495: 0x00c2, 0x1496: 0x00c2, 0x1497: 0x00c2, + 0x1498: 0x00c2, 0x1499: 0x00c2, 0x149a: 0x00c2, 0x149b: 0x00c2, 0x149c: 0x00c2, 0x149d: 0x00c2, + 0x149e: 0x00c2, 0x149f: 0x00c2, 0x14a0: 0x00c2, 0x14a1: 0x00c2, 0x14a2: 0x00c2, 0x14a3: 0x00c2, + 0x14a4: 0x00c2, 0x14a5: 0x00c2, 0x14a6: 0x00c2, 0x14a7: 0x00c2, 0x14a8: 0x00c2, 0x14a9: 0x00c3, + 0x14aa: 0x00c2, + 0x14b0: 0x00c0, 0x14b1: 0x00c0, 0x14b2: 0x00c0, 0x14b3: 0x00c0, 0x14b4: 0x00c0, 0x14b5: 0x00c0, + 0x14b6: 0x00c0, 0x14b7: 0x00c0, 0x14b8: 0x00c0, 0x14b9: 0x00c0, 0x14ba: 0x00c0, 0x14bb: 0x00c0, + 0x14bc: 0x00c0, 0x14bd: 0x00c0, 0x14be: 0x00c0, 0x14bf: 0x00c0, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x00c0, 0x14c1: 0x00c0, 0x14c2: 0x00c0, 0x14c3: 0x00c0, 0x14c4: 0x00c0, 0x14c5: 0x00c0, + 0x14c6: 0x00c0, 0x14c7: 0x00c0, 0x14c8: 0x00c0, 0x14c9: 0x00c0, 0x14ca: 0x00c0, 0x14cb: 0x00c0, + 0x14cc: 0x00c0, 0x14cd: 0x00c0, 0x14ce: 0x00c0, 0x14cf: 0x00c0, 0x14d0: 0x00c0, 0x14d1: 0x00c0, + 0x14d2: 0x00c0, 0x14d3: 0x00c0, 0x14d4: 0x00c0, 0x14d5: 0x00c0, 0x14d6: 0x00c0, 0x14d7: 0x00c0, + 0x14d8: 0x00c0, 0x14d9: 0x00c0, 0x14da: 0x00c0, 0x14db: 0x00c0, 0x14dc: 0x00c0, 0x14dd: 0x00c0, + 0x14de: 0x00c0, 0x14df: 0x00c0, 0x14e0: 0x00c0, 0x14e1: 0x00c0, 0x14e2: 0x00c0, 0x14e3: 0x00c0, + 0x14e4: 0x00c0, 0x14e5: 0x00c0, 0x14e6: 0x00c0, 0x14e7: 0x00c0, 0x14e8: 0x00c0, 0x14e9: 0x00c0, + 0x14ea: 0x00c0, 0x14eb: 0x00c0, 0x14ec: 0x00c0, 0x14ed: 0x00c0, 0x14ee: 0x00c0, 0x14ef: 0x00c0, + 0x14f0: 0x00c0, 0x14f1: 0x00c0, 0x14f2: 0x00c0, 0x14f3: 0x00c0, 0x14f4: 0x00c0, 0x14f5: 0x00c0, + // Block 0x54, offset 0x1500 + 0x1500: 0x00c0, 0x1501: 0x00c0, 0x1502: 0x00c0, 0x1503: 0x00c0, 0x1504: 0x00c0, 0x1505: 0x00c0, + 0x1506: 0x00c0, 0x1507: 0x00c0, 0x1508: 0x00c0, 0x1509: 0x00c0, 0x150a: 0x00c0, 0x150b: 0x00c0, + 0x150c: 0x00c0, 0x150d: 0x00c0, 0x150e: 0x00c0, 0x150f: 0x00c0, 0x1510: 0x00c0, 0x1511: 0x00c0, + 0x1512: 0x00c0, 0x1513: 0x00c0, 0x1514: 0x00c0, 0x1515: 0x00c0, 0x1516: 0x00c0, 0x1517: 0x00c0, + 0x1518: 0x00c0, 0x1519: 0x00c0, 0x151a: 0x00c0, 0x151b: 0x00c0, 0x151c: 0x00c0, 0x151d: 0x00c0, + 0x151e: 0x00c0, 0x1520: 0x00c3, 0x1521: 0x00c3, 0x1522: 0x00c3, 0x1523: 0x00c0, + 0x1524: 0x00c0, 0x1525: 0x00c0, 0x1526: 0x00c0, 0x1527: 0x00c3, 0x1528: 0x00c3, 0x1529: 0x00c0, + 0x152a: 0x00c0, 0x152b: 0x00c0, + 0x1530: 0x00c0, 0x1531: 0x00c0, 0x1532: 0x00c3, 0x1533: 0x00c0, 0x1534: 0x00c0, 0x1535: 0x00c0, + 0x1536: 0x00c0, 0x1537: 0x00c0, 0x1538: 0x00c0, 0x1539: 0x00c3, 0x153a: 0x00c3, 0x153b: 0x00c3, + // Block 0x55, offset 0x1540 + 0x1540: 0x0080, 0x1544: 0x0080, 0x1545: 0x0080, + 0x1546: 0x00c0, 0x1547: 0x00c0, 0x1548: 0x00c0, 0x1549: 0x00c0, 0x154a: 0x00c0, 0x154b: 0x00c0, + 0x154c: 0x00c0, 0x154d: 0x00c0, 0x154e: 0x00c0, 0x154f: 0x00c0, 0x1550: 0x00c0, 0x1551: 0x00c0, + 0x1552: 0x00c0, 0x1553: 0x00c0, 0x1554: 0x00c0, 0x1555: 0x00c0, 0x1556: 0x00c0, 0x1557: 0x00c0, + 0x1558: 0x00c0, 0x1559: 0x00c0, 0x155a: 0x00c0, 0x155b: 0x00c0, 0x155c: 0x00c0, 0x155d: 0x00c0, + 0x155e: 0x00c0, 0x155f: 0x00c0, 0x1560: 0x00c0, 0x1561: 0x00c0, 0x1562: 0x00c0, 0x1563: 0x00c0, + 0x1564: 0x00c0, 0x1565: 0x00c0, 0x1566: 0x00c0, 0x1567: 0x00c0, 0x1568: 0x00c0, 0x1569: 0x00c0, + 0x156a: 0x00c0, 0x156b: 0x00c0, 0x156c: 0x00c0, 0x156d: 0x00c0, + 0x1570: 0x00c0, 0x1571: 0x00c0, 0x1572: 0x00c0, 0x1573: 0x00c0, 0x1574: 0x00c0, + // Block 0x56, offset 0x1580 + 0x1580: 0x00c0, 0x1581: 0x00c0, 0x1582: 0x00c0, 0x1583: 0x00c0, 0x1584: 0x00c0, 0x1585: 0x00c0, + 0x1586: 0x00c0, 0x1587: 0x00c0, 0x1588: 0x00c0, 0x1589: 0x00c0, 0x158a: 0x00c0, 0x158b: 0x00c0, + 0x158c: 0x00c0, 0x158d: 0x00c0, 0x158e: 0x00c0, 0x158f: 0x00c0, 0x1590: 0x00c0, 0x1591: 0x00c0, + 0x1592: 0x00c0, 0x1593: 0x00c0, 0x1594: 0x00c0, 0x1595: 0x00c0, 0x1596: 0x00c0, 0x1597: 0x00c0, + 0x1598: 0x00c0, 0x1599: 0x00c0, 0x159a: 0x00c0, 0x159b: 0x00c0, 0x159c: 0x00c0, 0x159d: 0x00c0, + 0x159e: 0x00c0, 0x159f: 0x00c0, 0x15a0: 0x00c0, 0x15a1: 0x00c0, 0x15a2: 0x00c0, 0x15a3: 0x00c0, + 0x15a4: 0x00c0, 0x15a5: 0x00c0, 0x15a6: 0x00c0, 0x15a7: 0x00c0, 0x15a8: 0x00c0, 0x15a9: 0x00c0, + 0x15aa: 0x00c0, 0x15ab: 0x00c0, + 0x15b0: 0x00c0, 0x15b1: 0x00c0, 0x15b2: 0x00c0, 0x15b3: 0x00c0, 0x15b4: 0x00c0, 0x15b5: 0x00c0, + 0x15b6: 0x00c0, 0x15b7: 0x00c0, 0x15b8: 0x00c0, 0x15b9: 0x00c0, 0x15ba: 0x00c0, 0x15bb: 0x00c0, + 0x15bc: 0x00c0, 0x15bd: 0x00c0, 0x15be: 0x00c0, 0x15bf: 0x00c0, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x00c0, 0x15c1: 0x00c0, 0x15c2: 0x00c0, 0x15c3: 0x00c0, 0x15c4: 0x00c0, 0x15c5: 0x00c0, + 0x15c6: 0x00c0, 0x15c7: 0x00c0, 0x15c8: 0x00c0, 0x15c9: 0x00c0, + 0x15d0: 0x00c0, 0x15d1: 0x00c0, + 0x15d2: 0x00c0, 0x15d3: 0x00c0, 0x15d4: 0x00c0, 0x15d5: 0x00c0, 0x15d6: 0x00c0, 0x15d7: 0x00c0, + 0x15d8: 0x00c0, 0x15d9: 0x00c0, 0x15da: 0x0080, + 0x15de: 0x0080, 0x15df: 0x0080, 0x15e0: 0x0080, 0x15e1: 0x0080, 0x15e2: 0x0080, 0x15e3: 0x0080, + 0x15e4: 0x0080, 0x15e5: 0x0080, 0x15e6: 0x0080, 0x15e7: 0x0080, 0x15e8: 0x0080, 0x15e9: 0x0080, + 0x15ea: 0x0080, 0x15eb: 0x0080, 0x15ec: 0x0080, 0x15ed: 0x0080, 0x15ee: 0x0080, 0x15ef: 0x0080, + 0x15f0: 0x0080, 0x15f1: 0x0080, 0x15f2: 0x0080, 0x15f3: 0x0080, 0x15f4: 0x0080, 0x15f5: 0x0080, + 0x15f6: 0x0080, 0x15f7: 0x0080, 0x15f8: 0x0080, 0x15f9: 0x0080, 0x15fa: 0x0080, 0x15fb: 0x0080, + 0x15fc: 0x0080, 0x15fd: 0x0080, 0x15fe: 0x0080, 0x15ff: 0x0080, + // Block 0x58, offset 0x1600 + 0x1600: 0x00c0, 0x1601: 0x00c0, 0x1602: 0x00c0, 0x1603: 0x00c0, 0x1604: 0x00c0, 0x1605: 0x00c0, + 0x1606: 0x00c0, 0x1607: 0x00c0, 0x1608: 0x00c0, 0x1609: 0x00c0, 0x160a: 0x00c0, 0x160b: 0x00c0, + 0x160c: 0x00c0, 0x160d: 0x00c0, 0x160e: 0x00c0, 0x160f: 0x00c0, 0x1610: 0x00c0, 0x1611: 0x00c0, + 0x1612: 0x00c0, 0x1613: 0x00c0, 0x1614: 0x00c0, 0x1615: 0x00c0, 0x1616: 0x00c0, 0x1617: 0x00c3, + 0x1618: 0x00c3, 0x1619: 0x00c0, 0x161a: 0x00c0, 0x161b: 0x00c3, + 0x161e: 0x0080, 0x161f: 0x0080, 0x1620: 0x00c0, 0x1621: 0x00c0, 0x1622: 0x00c0, 0x1623: 0x00c0, + 0x1624: 0x00c0, 0x1625: 0x00c0, 0x1626: 0x00c0, 0x1627: 0x00c0, 0x1628: 0x00c0, 0x1629: 0x00c0, + 0x162a: 0x00c0, 0x162b: 0x00c0, 0x162c: 0x00c0, 0x162d: 0x00c0, 0x162e: 0x00c0, 0x162f: 0x00c0, + 0x1630: 0x00c0, 0x1631: 0x00c0, 0x1632: 0x00c0, 0x1633: 0x00c0, 0x1634: 0x00c0, 0x1635: 0x00c0, + 0x1636: 0x00c0, 0x1637: 0x00c0, 0x1638: 0x00c0, 0x1639: 0x00c0, 0x163a: 0x00c0, 0x163b: 0x00c0, + 0x163c: 0x00c0, 0x163d: 0x00c0, 0x163e: 0x00c0, 0x163f: 0x00c0, + // Block 0x59, offset 0x1640 + 0x1640: 0x00c0, 0x1641: 0x00c0, 0x1642: 0x00c0, 0x1643: 0x00c0, 0x1644: 0x00c0, 0x1645: 0x00c0, + 0x1646: 0x00c0, 0x1647: 0x00c0, 0x1648: 0x00c0, 0x1649: 0x00c0, 0x164a: 0x00c0, 0x164b: 0x00c0, + 0x164c: 0x00c0, 0x164d: 0x00c0, 0x164e: 0x00c0, 0x164f: 0x00c0, 0x1650: 0x00c0, 0x1651: 0x00c0, + 0x1652: 0x00c0, 0x1653: 0x00c0, 0x1654: 0x00c0, 0x1655: 0x00c0, 0x1656: 0x00c3, 0x1657: 0x00c0, + 0x1658: 0x00c3, 0x1659: 0x00c3, 0x165a: 0x00c3, 0x165b: 0x00c3, 0x165c: 0x00c3, 0x165d: 0x00c3, + 0x165e: 0x00c3, 0x1660: 0x00c6, 0x1661: 0x00c0, 0x1662: 0x00c3, 0x1663: 0x00c0, + 0x1664: 0x00c0, 0x1665: 0x00c3, 0x1666: 0x00c3, 0x1667: 0x00c3, 0x1668: 0x00c3, 0x1669: 0x00c3, + 0x166a: 0x00c3, 0x166b: 0x00c3, 0x166c: 0x00c3, 0x166d: 0x00c0, 0x166e: 0x00c0, 0x166f: 0x00c0, + 0x1670: 0x00c0, 0x1671: 0x00c0, 0x1672: 0x00c0, 0x1673: 0x00c3, 0x1674: 0x00c3, 0x1675: 0x00c3, + 0x1676: 0x00c3, 0x1677: 0x00c3, 0x1678: 0x00c3, 0x1679: 0x00c3, 0x167a: 0x00c3, 0x167b: 0x00c3, + 0x167c: 0x00c3, 0x167f: 0x00c3, + // Block 0x5a, offset 0x1680 + 0x1680: 0x00c0, 0x1681: 0x00c0, 0x1682: 0x00c0, 0x1683: 0x00c0, 0x1684: 0x00c0, 0x1685: 0x00c0, + 0x1686: 0x00c0, 0x1687: 0x00c0, 0x1688: 0x00c0, 0x1689: 0x00c0, + 0x1690: 0x00c0, 0x1691: 0x00c0, + 0x1692: 0x00c0, 0x1693: 0x00c0, 0x1694: 0x00c0, 0x1695: 0x00c0, 0x1696: 0x00c0, 0x1697: 0x00c0, + 0x1698: 0x00c0, 0x1699: 0x00c0, + 0x16a0: 0x0080, 0x16a1: 0x0080, 0x16a2: 0x0080, 0x16a3: 0x0080, + 0x16a4: 0x0080, 0x16a5: 0x0080, 0x16a6: 0x0080, 0x16a7: 0x00c0, 0x16a8: 0x0080, 0x16a9: 0x0080, + 0x16aa: 0x0080, 0x16ab: 0x0080, 0x16ac: 0x0080, 0x16ad: 0x0080, + 0x16b0: 0x00c3, 0x16b1: 0x00c3, 0x16b2: 0x00c3, 0x16b3: 0x00c3, 0x16b4: 0x00c3, 0x16b5: 0x00c3, + 0x16b6: 0x00c3, 0x16b7: 0x00c3, 0x16b8: 0x00c3, 0x16b9: 0x00c3, 0x16ba: 0x00c3, 0x16bb: 0x00c3, + 0x16bc: 0x00c3, 0x16bd: 0x00c3, 0x16be: 0x0083, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x00c3, 0x16c1: 0x00c3, 0x16c2: 0x00c3, 0x16c3: 0x00c3, 0x16c4: 0x00c0, 0x16c5: 0x00c0, + 0x16c6: 0x00c0, 0x16c7: 0x00c0, 0x16c8: 0x00c0, 0x16c9: 0x00c0, 0x16ca: 0x00c0, 0x16cb: 0x00c0, + 0x16cc: 0x00c0, 0x16cd: 0x00c0, 0x16ce: 0x00c0, 0x16cf: 0x00c0, 0x16d0: 0x00c0, 0x16d1: 0x00c0, + 0x16d2: 0x00c0, 0x16d3: 0x00c0, 0x16d4: 0x00c0, 0x16d5: 0x00c0, 0x16d6: 0x00c0, 0x16d7: 0x00c0, + 0x16d8: 0x00c0, 0x16d9: 0x00c0, 0x16da: 0x00c0, 0x16db: 0x00c0, 0x16dc: 0x00c0, 0x16dd: 0x00c0, + 0x16de: 0x00c0, 0x16df: 0x00c0, 0x16e0: 0x00c0, 0x16e1: 0x00c0, 0x16e2: 0x00c0, 0x16e3: 0x00c0, + 0x16e4: 0x00c0, 0x16e5: 0x00c0, 0x16e6: 0x00c0, 0x16e7: 0x00c0, 0x16e8: 0x00c0, 0x16e9: 0x00c0, + 0x16ea: 0x00c0, 0x16eb: 0x00c0, 0x16ec: 0x00c0, 0x16ed: 0x00c0, 0x16ee: 0x00c0, 0x16ef: 0x00c0, + 0x16f0: 0x00c0, 0x16f1: 0x00c0, 0x16f2: 0x00c0, 0x16f3: 0x00c0, 0x16f4: 0x00c3, 0x16f5: 0x00c0, + 0x16f6: 0x00c3, 0x16f7: 0x00c3, 0x16f8: 0x00c3, 0x16f9: 0x00c3, 0x16fa: 0x00c3, 0x16fb: 0x00c0, + 0x16fc: 0x00c3, 0x16fd: 0x00c0, 0x16fe: 0x00c0, 0x16ff: 0x00c0, + // Block 0x5c, offset 0x1700 + 0x1700: 0x00c0, 0x1701: 0x00c0, 0x1702: 0x00c3, 0x1703: 0x00c0, 0x1704: 0x00c5, 0x1705: 0x00c0, + 0x1706: 0x00c0, 0x1707: 0x00c0, 0x1708: 0x00c0, 0x1709: 0x00c0, 0x170a: 0x00c0, 0x170b: 0x00c0, + 0x1710: 0x00c0, 0x1711: 0x00c0, + 0x1712: 0x00c0, 0x1713: 0x00c0, 0x1714: 0x00c0, 0x1715: 0x00c0, 0x1716: 0x00c0, 0x1717: 0x00c0, + 0x1718: 0x00c0, 0x1719: 0x00c0, 0x171a: 0x0080, 0x171b: 0x0080, 0x171c: 0x0080, 0x171d: 0x0080, + 0x171e: 0x0080, 0x171f: 0x0080, 0x1720: 0x0080, 0x1721: 0x0080, 0x1722: 0x0080, 0x1723: 0x0080, + 0x1724: 0x0080, 0x1725: 0x0080, 0x1726: 0x0080, 0x1727: 0x0080, 0x1728: 0x0080, 0x1729: 0x0080, + 0x172a: 0x0080, 0x172b: 0x00c3, 0x172c: 0x00c3, 0x172d: 0x00c3, 0x172e: 0x00c3, 0x172f: 0x00c3, + 0x1730: 0x00c3, 0x1731: 0x00c3, 0x1732: 0x00c3, 0x1733: 0x00c3, 0x1734: 0x0080, 0x1735: 0x0080, + 0x1736: 0x0080, 0x1737: 0x0080, 0x1738: 0x0080, 0x1739: 0x0080, 0x173a: 0x0080, 0x173b: 0x0080, + 0x173c: 0x0080, + // Block 0x5d, offset 0x1740 + 0x1740: 0x00c3, 0x1741: 0x00c3, 0x1742: 0x00c0, 0x1743: 0x00c0, 0x1744: 0x00c0, 0x1745: 0x00c0, + 0x1746: 0x00c0, 0x1747: 0x00c0, 0x1748: 0x00c0, 0x1749: 0x00c0, 0x174a: 0x00c0, 0x174b: 0x00c0, + 0x174c: 0x00c0, 0x174d: 0x00c0, 0x174e: 0x00c0, 0x174f: 0x00c0, 0x1750: 0x00c0, 0x1751: 0x00c0, + 0x1752: 0x00c0, 0x1753: 0x00c0, 0x1754: 0x00c0, 0x1755: 0x00c0, 0x1756: 0x00c0, 0x1757: 0x00c0, + 0x1758: 0x00c0, 0x1759: 0x00c0, 0x175a: 0x00c0, 0x175b: 0x00c0, 0x175c: 0x00c0, 0x175d: 0x00c0, + 0x175e: 0x00c0, 0x175f: 0x00c0, 0x1760: 0x00c0, 0x1761: 0x00c0, 0x1762: 0x00c3, 0x1763: 0x00c3, + 0x1764: 0x00c3, 0x1765: 0x00c3, 0x1766: 0x00c0, 0x1767: 0x00c0, 0x1768: 0x00c3, 0x1769: 0x00c3, + 0x176a: 0x00c5, 0x176b: 0x00c6, 0x176c: 0x00c3, 0x176d: 0x00c3, 0x176e: 0x00c0, 0x176f: 0x00c0, + 0x1770: 0x00c0, 0x1771: 0x00c0, 0x1772: 0x00c0, 0x1773: 0x00c0, 0x1774: 0x00c0, 0x1775: 0x00c0, + 0x1776: 0x00c0, 0x1777: 0x00c0, 0x1778: 0x00c0, 0x1779: 0x00c0, 0x177a: 0x00c0, 0x177b: 0x00c0, + 0x177c: 0x00c0, 0x177d: 0x00c0, 0x177e: 0x00c0, 0x177f: 0x00c0, + // Block 0x5e, offset 0x1780 + 0x1780: 0x00c0, 0x1781: 0x00c0, 0x1782: 0x00c0, 0x1783: 0x00c0, 0x1784: 0x00c0, 0x1785: 0x00c0, + 0x1786: 0x00c0, 0x1787: 0x00c0, 0x1788: 0x00c0, 0x1789: 0x00c0, 0x178a: 0x00c0, 0x178b: 0x00c0, + 0x178c: 0x00c0, 0x178d: 0x00c0, 0x178e: 0x00c0, 0x178f: 0x00c0, 0x1790: 0x00c0, 0x1791: 0x00c0, + 0x1792: 0x00c0, 0x1793: 0x00c0, 0x1794: 0x00c0, 0x1795: 0x00c0, 0x1796: 0x00c0, 0x1797: 0x00c0, + 0x1798: 0x00c0, 0x1799: 0x00c0, 0x179a: 0x00c0, 0x179b: 0x00c0, 0x179c: 0x00c0, 0x179d: 0x00c0, + 0x179e: 0x00c0, 0x179f: 0x00c0, 0x17a0: 0x00c0, 0x17a1: 0x00c0, 0x17a2: 0x00c0, 0x17a3: 0x00c0, + 0x17a4: 0x00c0, 0x17a5: 0x00c0, 0x17a6: 0x00c3, 0x17a7: 0x00c0, 0x17a8: 0x00c3, 0x17a9: 0x00c3, + 0x17aa: 0x00c0, 0x17ab: 0x00c0, 0x17ac: 0x00c0, 0x17ad: 0x00c3, 0x17ae: 0x00c0, 0x17af: 0x00c3, + 0x17b0: 0x00c3, 0x17b1: 0x00c3, 0x17b2: 0x00c5, 0x17b3: 0x00c5, + 0x17bc: 0x0080, 0x17bd: 0x0080, 0x17be: 0x0080, 0x17bf: 0x0080, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x00c0, 0x17c1: 0x00c0, 0x17c2: 0x00c0, 0x17c3: 0x00c0, 0x17c4: 0x00c0, 0x17c5: 0x00c0, + 0x17c6: 0x00c0, 0x17c7: 0x00c0, 0x17c8: 0x00c0, 0x17c9: 0x00c0, 0x17ca: 0x00c0, 0x17cb: 0x00c0, + 0x17cc: 0x00c0, 0x17cd: 0x00c0, 0x17ce: 0x00c0, 0x17cf: 0x00c0, 0x17d0: 0x00c0, 0x17d1: 0x00c0, + 0x17d2: 0x00c0, 0x17d3: 0x00c0, 0x17d4: 0x00c0, 0x17d5: 0x00c0, 0x17d6: 0x00c0, 0x17d7: 0x00c0, + 0x17d8: 0x00c0, 0x17d9: 0x00c0, 0x17da: 0x00c0, 0x17db: 0x00c0, 0x17dc: 0x00c0, 0x17dd: 0x00c0, + 0x17de: 0x00c0, 0x17df: 0x00c0, 0x17e0: 0x00c0, 0x17e1: 0x00c0, 0x17e2: 0x00c0, 0x17e3: 0x00c0, + 0x17e4: 0x00c0, 0x17e5: 0x00c0, 0x17e6: 0x00c0, 0x17e7: 0x00c0, 0x17e8: 0x00c0, 0x17e9: 0x00c0, + 0x17ea: 0x00c0, 0x17eb: 0x00c0, 0x17ec: 0x00c3, 0x17ed: 0x00c3, 0x17ee: 0x00c3, 0x17ef: 0x00c3, + 0x17f0: 0x00c3, 0x17f1: 0x00c3, 0x17f2: 0x00c3, 0x17f3: 0x00c3, 0x17f4: 0x00c0, 0x17f5: 0x00c0, + 0x17f6: 0x00c3, 0x17f7: 0x00c3, 0x17fb: 0x0080, + 0x17fc: 0x0080, 0x17fd: 0x0080, 0x17fe: 0x0080, 0x17ff: 0x0080, + // Block 0x60, offset 0x1800 + 0x1800: 0x00c0, 0x1801: 0x00c0, 0x1802: 0x00c0, 0x1803: 0x00c0, 0x1804: 0x00c0, 0x1805: 0x00c0, + 0x1806: 0x00c0, 0x1807: 0x00c0, 0x1808: 0x00c0, 0x1809: 0x00c0, + 0x180d: 0x00c0, 0x180e: 0x00c0, 0x180f: 0x00c0, 0x1810: 0x00c0, 0x1811: 0x00c0, + 0x1812: 0x00c0, 0x1813: 0x00c0, 0x1814: 0x00c0, 0x1815: 0x00c0, 0x1816: 0x00c0, 0x1817: 0x00c0, + 0x1818: 0x00c0, 0x1819: 0x00c0, 0x181a: 0x00c0, 0x181b: 0x00c0, 0x181c: 0x00c0, 0x181d: 0x00c0, + 0x181e: 0x00c0, 0x181f: 0x00c0, 0x1820: 0x00c0, 0x1821: 0x00c0, 0x1822: 0x00c0, 0x1823: 0x00c0, + 0x1824: 0x00c0, 0x1825: 0x00c0, 0x1826: 0x00c0, 0x1827: 0x00c0, 0x1828: 0x00c0, 0x1829: 0x00c0, + 0x182a: 0x00c0, 0x182b: 0x00c0, 0x182c: 0x00c0, 0x182d: 0x00c0, 0x182e: 0x00c0, 0x182f: 0x00c0, + 0x1830: 0x00c0, 0x1831: 0x00c0, 0x1832: 0x00c0, 0x1833: 0x00c0, 0x1834: 0x00c0, 0x1835: 0x00c0, + 0x1836: 0x00c0, 0x1837: 0x00c0, 0x1838: 0x00c0, 0x1839: 0x00c0, 0x183a: 0x00c0, 0x183b: 0x00c0, + 0x183c: 0x00c0, 0x183d: 0x00c0, 0x183e: 0x0080, 0x183f: 0x0080, + // Block 0x61, offset 0x1840 + 0x1840: 0x00c0, 0x1841: 0x00c0, 0x1842: 0x00c0, 0x1843: 0x00c0, 0x1844: 0x00c0, 0x1845: 0x00c0, + 0x1846: 0x00c0, 0x1847: 0x00c0, 0x1848: 0x00c0, + // Block 0x62, offset 0x1880 + 0x1880: 0x0080, 0x1881: 0x0080, 0x1882: 0x0080, 0x1883: 0x0080, 0x1884: 0x0080, 0x1885: 0x0080, + 0x1886: 0x0080, 0x1887: 0x0080, + 0x1890: 0x00c3, 0x1891: 0x00c3, + 0x1892: 0x00c3, 0x1893: 0x0080, 0x1894: 0x00c3, 0x1895: 0x00c3, 0x1896: 0x00c3, 0x1897: 0x00c3, + 0x1898: 0x00c3, 0x1899: 0x00c3, 0x189a: 0x00c3, 0x189b: 0x00c3, 0x189c: 0x00c3, 0x189d: 0x00c3, + 0x189e: 0x00c3, 0x189f: 0x00c3, 0x18a0: 0x00c3, 0x18a1: 0x00c0, 0x18a2: 0x00c3, 0x18a3: 0x00c3, + 0x18a4: 0x00c3, 0x18a5: 0x00c3, 0x18a6: 0x00c3, 0x18a7: 0x00c3, 0x18a8: 0x00c3, 0x18a9: 0x00c0, + 0x18aa: 0x00c0, 0x18ab: 0x00c0, 0x18ac: 0x00c0, 0x18ad: 0x00c3, 0x18ae: 0x00c0, 0x18af: 0x00c0, + 0x18b0: 0x00c0, 0x18b1: 0x00c0, 0x18b2: 0x00c0, 0x18b3: 0x00c0, 0x18b4: 0x00c3, 0x18b5: 0x00c0, + 0x18b6: 0x00c0, 0x18b8: 0x00c3, 0x18b9: 0x00c3, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x00c0, 0x18c1: 0x00c0, 0x18c2: 0x00c0, 0x18c3: 0x00c0, 0x18c4: 0x00c0, 0x18c5: 0x00c0, + 0x18c6: 0x00c0, 0x18c7: 0x00c0, 0x18c8: 0x00c0, 0x18c9: 0x00c0, 0x18ca: 0x00c0, 0x18cb: 0x00c0, + 0x18cc: 0x00c0, 0x18cd: 0x00c0, 0x18ce: 0x00c0, 0x18cf: 0x00c0, 0x18d0: 0x00c0, 0x18d1: 0x00c0, + 0x18d2: 0x00c0, 0x18d3: 0x00c0, 0x18d4: 0x00c0, 0x18d5: 0x00c0, 0x18d6: 0x00c0, 0x18d7: 0x00c0, + 0x18d8: 0x00c0, 0x18d9: 0x00c0, 0x18da: 0x00c0, 0x18db: 0x00c0, 0x18dc: 0x00c0, 0x18dd: 0x00c0, + 0x18de: 0x00c0, 0x18df: 0x00c0, 0x18e0: 0x00c0, 0x18e1: 0x00c0, 0x18e2: 0x00c0, 0x18e3: 0x00c0, + 0x18e4: 0x00c0, 0x18e5: 0x00c0, 0x18e6: 0x00c8, 0x18e7: 0x00c8, 0x18e8: 0x00c8, 0x18e9: 0x00c8, + 0x18ea: 0x00c8, 0x18eb: 0x00c0, 0x18ec: 0x0080, 0x18ed: 0x0080, 0x18ee: 0x0080, 0x18ef: 0x00c0, + 0x18f0: 0x0080, 0x18f1: 0x0080, 0x18f2: 0x0080, 0x18f3: 0x0080, 0x18f4: 0x0080, 0x18f5: 0x0080, + 0x18f6: 0x0080, 0x18f7: 0x0080, 0x18f8: 0x0080, 0x18f9: 0x0080, 0x18fa: 0x0080, 0x18fb: 0x00c0, + 0x18fc: 0x0080, 0x18fd: 0x0080, 0x18fe: 0x0080, 0x18ff: 0x0080, + // Block 0x64, offset 0x1900 + 0x1900: 0x0080, 0x1901: 0x0080, 0x1902: 0x0080, 0x1903: 0x0080, 0x1904: 0x0080, 0x1905: 0x0080, + 0x1906: 0x0080, 0x1907: 0x0080, 0x1908: 0x0080, 0x1909: 0x0080, 0x190a: 0x0080, 0x190b: 0x0080, + 0x190c: 0x0080, 0x190d: 0x0080, 0x190e: 0x00c0, 0x190f: 0x0080, 0x1910: 0x0080, 0x1911: 0x0080, + 0x1912: 0x0080, 0x1913: 0x0080, 0x1914: 0x0080, 0x1915: 0x0080, 0x1916: 0x0080, 0x1917: 0x0080, + 0x1918: 0x0080, 0x1919: 0x0080, 0x191a: 0x0080, 0x191b: 0x0080, 0x191c: 0x0080, 0x191d: 0x0088, + 0x191e: 0x0088, 0x191f: 0x0088, 0x1920: 0x0088, 0x1921: 0x0088, 0x1922: 0x0080, 0x1923: 0x0080, + 0x1924: 0x0080, 0x1925: 0x0080, 0x1926: 0x0088, 0x1927: 0x0088, 0x1928: 0x0088, 0x1929: 0x0088, + 0x192a: 0x0088, 0x192b: 0x00c0, 0x192c: 0x00c0, 0x192d: 0x00c0, 0x192e: 0x00c0, 0x192f: 0x00c0, + 0x1930: 0x00c0, 0x1931: 0x00c0, 0x1932: 0x00c0, 0x1933: 0x00c0, 0x1934: 0x00c0, 0x1935: 0x00c0, + 0x1936: 0x00c0, 0x1937: 0x00c0, 0x1938: 0x0080, 0x1939: 0x00c0, 0x193a: 0x00c0, 0x193b: 0x00c0, + 0x193c: 0x00c0, 0x193d: 0x00c0, 0x193e: 0x00c0, 0x193f: 0x00c0, + // Block 0x65, offset 0x1940 + 0x1940: 0x00c0, 0x1941: 0x00c0, 0x1942: 0x00c0, 0x1943: 0x00c0, 0x1944: 0x00c0, 0x1945: 0x00c0, + 0x1946: 0x00c0, 0x1947: 0x00c0, 0x1948: 0x00c0, 0x1949: 0x00c0, 0x194a: 0x00c0, 0x194b: 0x00c0, + 0x194c: 0x00c0, 0x194d: 0x00c0, 0x194e: 0x00c0, 0x194f: 0x00c0, 0x1950: 0x00c0, 0x1951: 0x00c0, + 0x1952: 0x00c0, 0x1953: 0x00c0, 0x1954: 0x00c0, 0x1955: 0x00c0, 0x1956: 0x00c0, 0x1957: 0x00c0, + 0x1958: 0x00c0, 0x1959: 0x00c0, 0x195a: 0x00c0, 0x195b: 0x0080, 0x195c: 0x0080, 0x195d: 0x0080, + 0x195e: 0x0080, 0x195f: 0x0080, 0x1960: 0x0080, 0x1961: 0x0080, 0x1962: 0x0080, 0x1963: 0x0080, + 0x1964: 0x0080, 0x1965: 0x0080, 0x1966: 0x0080, 0x1967: 0x0080, 0x1968: 0x0080, 0x1969: 0x0080, + 0x196a: 0x0080, 0x196b: 0x0080, 0x196c: 0x0080, 0x196d: 0x0080, 0x196e: 0x0080, 0x196f: 0x0080, + 0x1970: 0x0080, 0x1971: 0x0080, 0x1972: 0x0080, 0x1973: 0x0080, 0x1974: 0x0080, 0x1975: 0x0080, + 0x1976: 0x0080, 0x1977: 0x0080, 0x1978: 0x0080, 0x1979: 0x0080, 0x197a: 0x0080, 0x197b: 0x0080, + 0x197c: 0x0080, 0x197d: 0x0080, 0x197e: 0x0080, 0x197f: 0x0088, + // Block 0x66, offset 0x1980 + 0x1980: 0x00c3, 0x1981: 0x00c3, 0x1982: 0x00c3, 0x1983: 0x00c3, 0x1984: 0x00c3, 0x1985: 0x00c3, + 0x1986: 0x00c3, 0x1987: 0x00c3, 0x1988: 0x00c3, 0x1989: 0x00c3, 0x198a: 0x00c3, 0x198b: 0x00c3, + 0x198c: 0x00c3, 0x198d: 0x00c3, 0x198e: 0x00c3, 0x198f: 0x00c3, 0x1990: 0x00c3, 0x1991: 0x00c3, + 0x1992: 0x00c3, 0x1993: 0x00c3, 0x1994: 0x00c3, 0x1995: 0x00c3, 0x1996: 0x00c3, 0x1997: 0x00c3, + 0x1998: 0x00c3, 0x1999: 0x00c3, 0x199a: 0x00c3, 0x199b: 0x00c3, 0x199c: 0x00c3, 0x199d: 0x00c3, + 0x199e: 0x00c3, 0x199f: 0x00c3, 0x19a0: 0x00c3, 0x19a1: 0x00c3, 0x19a2: 0x00c3, 0x19a3: 0x00c3, + 0x19a4: 0x00c3, 0x19a5: 0x00c3, 0x19a6: 0x00c3, 0x19a7: 0x00c3, 0x19a8: 0x00c3, 0x19a9: 0x00c3, + 0x19aa: 0x00c3, 0x19ab: 0x00c3, 0x19ac: 0x00c3, 0x19ad: 0x00c3, 0x19ae: 0x00c3, 0x19af: 0x00c3, + 0x19b0: 0x00c3, 0x19b1: 0x00c3, 0x19b2: 0x00c3, 0x19b3: 0x00c3, 0x19b4: 0x00c3, 0x19b5: 0x00c3, + 0x19bb: 0x00c3, + 0x19bc: 0x00c3, 0x19bd: 0x00c3, 0x19be: 0x00c3, 0x19bf: 0x00c3, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x00c0, 0x19c1: 0x00c0, 0x19c2: 0x00c0, 0x19c3: 0x00c0, 0x19c4: 0x00c0, 0x19c5: 0x00c0, + 0x19c6: 0x00c0, 0x19c7: 0x00c0, 0x19c8: 0x00c0, 0x19c9: 0x00c0, 0x19ca: 0x00c0, 0x19cb: 0x00c0, + 0x19cc: 0x00c0, 0x19cd: 0x00c0, 0x19ce: 0x00c0, 0x19cf: 0x00c0, 0x19d0: 0x00c0, 0x19d1: 0x00c0, + 0x19d2: 0x00c0, 0x19d3: 0x00c0, 0x19d4: 0x00c0, 0x19d5: 0x00c0, 0x19d6: 0x00c0, 0x19d7: 0x00c0, + 0x19d8: 0x00c0, 0x19d9: 0x00c0, 0x19da: 0x0080, 0x19db: 0x0080, 0x19dc: 0x00c0, 0x19dd: 0x00c0, + 0x19de: 0x00c0, 0x19df: 0x00c0, 0x19e0: 0x00c0, 0x19e1: 0x00c0, 0x19e2: 0x00c0, 0x19e3: 0x00c0, + 0x19e4: 0x00c0, 0x19e5: 0x00c0, 0x19e6: 0x00c0, 0x19e7: 0x00c0, 0x19e8: 0x00c0, 0x19e9: 0x00c0, + 0x19ea: 0x00c0, 0x19eb: 0x00c0, 0x19ec: 0x00c0, 0x19ed: 0x00c0, 0x19ee: 0x00c0, 0x19ef: 0x00c0, + 0x19f0: 0x00c0, 0x19f1: 0x00c0, 0x19f2: 0x00c0, 0x19f3: 0x00c0, 0x19f4: 0x00c0, 0x19f5: 0x00c0, + 0x19f6: 0x00c0, 0x19f7: 0x00c0, 0x19f8: 0x00c0, 0x19f9: 0x00c0, 0x19fa: 0x00c0, 0x19fb: 0x00c0, + 0x19fc: 0x00c0, 0x19fd: 0x00c0, 0x19fe: 0x00c0, 0x19ff: 0x00c0, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x00c8, 0x1a01: 0x00c8, 0x1a02: 0x00c8, 0x1a03: 0x00c8, 0x1a04: 0x00c8, 0x1a05: 0x00c8, + 0x1a06: 0x00c8, 0x1a07: 0x00c8, 0x1a08: 0x00c8, 0x1a09: 0x00c8, 0x1a0a: 0x00c8, 0x1a0b: 0x00c8, + 0x1a0c: 0x00c8, 0x1a0d: 0x00c8, 0x1a0e: 0x00c8, 0x1a0f: 0x00c8, 0x1a10: 0x00c8, 0x1a11: 0x00c8, + 0x1a12: 0x00c8, 0x1a13: 0x00c8, 0x1a14: 0x00c8, 0x1a15: 0x00c8, + 0x1a18: 0x00c8, 0x1a19: 0x00c8, 0x1a1a: 0x00c8, 0x1a1b: 0x00c8, 0x1a1c: 0x00c8, 0x1a1d: 0x00c8, + 0x1a20: 0x00c8, 0x1a21: 0x00c8, 0x1a22: 0x00c8, 0x1a23: 0x00c8, + 0x1a24: 0x00c8, 0x1a25: 0x00c8, 0x1a26: 0x00c8, 0x1a27: 0x00c8, 0x1a28: 0x00c8, 0x1a29: 0x00c8, + 0x1a2a: 0x00c8, 0x1a2b: 0x00c8, 0x1a2c: 0x00c8, 0x1a2d: 0x00c8, 0x1a2e: 0x00c8, 0x1a2f: 0x00c8, + 0x1a30: 0x00c8, 0x1a31: 0x00c8, 0x1a32: 0x00c8, 0x1a33: 0x00c8, 0x1a34: 0x00c8, 0x1a35: 0x00c8, + 0x1a36: 0x00c8, 0x1a37: 0x00c8, 0x1a38: 0x00c8, 0x1a39: 0x00c8, 0x1a3a: 0x00c8, 0x1a3b: 0x00c8, + 0x1a3c: 0x00c8, 0x1a3d: 0x00c8, 0x1a3e: 0x00c8, 0x1a3f: 0x00c8, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x00c8, 0x1a41: 0x00c8, 0x1a42: 0x00c8, 0x1a43: 0x00c8, 0x1a44: 0x00c8, 0x1a45: 0x00c8, + 0x1a48: 0x00c8, 0x1a49: 0x00c8, 0x1a4a: 0x00c8, 0x1a4b: 0x00c8, + 0x1a4c: 0x00c8, 0x1a4d: 0x00c8, 0x1a50: 0x00c8, 0x1a51: 0x00c8, + 0x1a52: 0x00c8, 0x1a53: 0x00c8, 0x1a54: 0x00c8, 0x1a55: 0x00c8, 0x1a56: 0x00c8, 0x1a57: 0x00c8, + 0x1a59: 0x00c8, 0x1a5b: 0x00c8, 0x1a5d: 0x00c8, + 0x1a5f: 0x00c8, 0x1a60: 0x00c8, 0x1a61: 0x00c8, 0x1a62: 0x00c8, 0x1a63: 0x00c8, + 0x1a64: 0x00c8, 0x1a65: 0x00c8, 0x1a66: 0x00c8, 0x1a67: 0x00c8, 0x1a68: 0x00c8, 0x1a69: 0x00c8, + 0x1a6a: 0x00c8, 0x1a6b: 0x00c8, 0x1a6c: 0x00c8, 0x1a6d: 0x00c8, 0x1a6e: 0x00c8, 0x1a6f: 0x00c8, + 0x1a70: 0x00c8, 0x1a71: 0x0088, 0x1a72: 0x00c8, 0x1a73: 0x0088, 0x1a74: 0x00c8, 0x1a75: 0x0088, + 0x1a76: 0x00c8, 0x1a77: 0x0088, 0x1a78: 0x00c8, 0x1a79: 0x0088, 0x1a7a: 0x00c8, 0x1a7b: 0x0088, + 0x1a7c: 0x00c8, 0x1a7d: 0x0088, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x00c8, 0x1a81: 0x00c8, 0x1a82: 0x00c8, 0x1a83: 0x00c8, 0x1a84: 0x00c8, 0x1a85: 0x00c8, + 0x1a86: 0x00c8, 0x1a87: 0x00c8, 0x1a88: 0x0088, 0x1a89: 0x0088, 0x1a8a: 0x0088, 0x1a8b: 0x0088, + 0x1a8c: 0x0088, 0x1a8d: 0x0088, 0x1a8e: 0x0088, 0x1a8f: 0x0088, 0x1a90: 0x00c8, 0x1a91: 0x00c8, + 0x1a92: 0x00c8, 0x1a93: 0x00c8, 0x1a94: 0x00c8, 0x1a95: 0x00c8, 0x1a96: 0x00c8, 0x1a97: 0x00c8, + 0x1a98: 0x0088, 0x1a99: 0x0088, 0x1a9a: 0x0088, 0x1a9b: 0x0088, 0x1a9c: 0x0088, 0x1a9d: 0x0088, + 0x1a9e: 0x0088, 0x1a9f: 0x0088, 0x1aa0: 0x00c8, 0x1aa1: 0x00c8, 0x1aa2: 0x00c8, 0x1aa3: 0x00c8, + 0x1aa4: 0x00c8, 0x1aa5: 0x00c8, 0x1aa6: 0x00c8, 0x1aa7: 0x00c8, 0x1aa8: 0x0088, 0x1aa9: 0x0088, + 0x1aaa: 0x0088, 0x1aab: 0x0088, 0x1aac: 0x0088, 0x1aad: 0x0088, 0x1aae: 0x0088, 0x1aaf: 0x0088, + 0x1ab0: 0x00c8, 0x1ab1: 0x00c8, 0x1ab2: 0x00c8, 0x1ab3: 0x00c8, 0x1ab4: 0x00c8, + 0x1ab6: 0x00c8, 0x1ab7: 0x00c8, 0x1ab8: 0x00c8, 0x1ab9: 0x00c8, 0x1aba: 0x00c8, 0x1abb: 0x0088, + 0x1abc: 0x0088, 0x1abd: 0x0088, 0x1abe: 0x0088, 0x1abf: 0x0088, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x0088, 0x1ac1: 0x0088, 0x1ac2: 0x00c8, 0x1ac3: 0x00c8, 0x1ac4: 0x00c8, + 0x1ac6: 0x00c8, 0x1ac7: 0x00c8, 0x1ac8: 0x00c8, 0x1ac9: 0x0088, 0x1aca: 0x00c8, 0x1acb: 0x0088, + 0x1acc: 0x0088, 0x1acd: 0x0088, 0x1ace: 0x0088, 0x1acf: 0x0088, 0x1ad0: 0x00c8, 0x1ad1: 0x00c8, + 0x1ad2: 0x00c8, 0x1ad3: 0x0088, 0x1ad6: 0x00c8, 0x1ad7: 0x00c8, + 0x1ad8: 0x00c8, 0x1ad9: 0x00c8, 0x1ada: 0x00c8, 0x1adb: 0x0088, 0x1add: 0x0088, + 0x1ade: 0x0088, 0x1adf: 0x0088, 0x1ae0: 0x00c8, 0x1ae1: 0x00c8, 0x1ae2: 0x00c8, 0x1ae3: 0x0088, + 0x1ae4: 0x00c8, 0x1ae5: 0x00c8, 0x1ae6: 0x00c8, 0x1ae7: 0x00c8, 0x1ae8: 0x00c8, 0x1ae9: 0x00c8, + 0x1aea: 0x00c8, 0x1aeb: 0x0088, 0x1aec: 0x00c8, 0x1aed: 0x0088, 0x1aee: 0x0088, 0x1aef: 0x0088, + 0x1af2: 0x00c8, 0x1af3: 0x00c8, 0x1af4: 0x00c8, + 0x1af6: 0x00c8, 0x1af7: 0x00c8, 0x1af8: 0x00c8, 0x1af9: 0x0088, 0x1afa: 0x00c8, 0x1afb: 0x0088, + 0x1afc: 0x0088, 0x1afd: 0x0088, 0x1afe: 0x0088, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x0080, 0x1b01: 0x0080, 0x1b02: 0x0080, 0x1b03: 0x0080, 0x1b04: 0x0080, 0x1b05: 0x0080, + 0x1b06: 0x0080, 0x1b07: 0x0080, 0x1b08: 0x0080, 0x1b09: 0x0080, 0x1b0a: 0x0080, 0x1b0b: 0x0040, + 0x1b0c: 0x004d, 0x1b0d: 0x004e, 0x1b0e: 0x0040, 0x1b0f: 0x0040, 0x1b10: 0x0080, 0x1b11: 0x0080, + 0x1b12: 0x0080, 0x1b13: 0x0080, 0x1b14: 0x0080, 0x1b15: 0x0080, 0x1b16: 0x0080, 0x1b17: 0x0080, + 0x1b18: 0x0080, 0x1b19: 0x0080, 0x1b1a: 0x0080, 0x1b1b: 0x0080, 0x1b1c: 0x0080, 0x1b1d: 0x0080, + 0x1b1e: 0x0080, 0x1b1f: 0x0080, 0x1b20: 0x0080, 0x1b21: 0x0080, 0x1b22: 0x0080, 0x1b23: 0x0080, + 0x1b24: 0x0080, 0x1b25: 0x0080, 0x1b26: 0x0080, 0x1b27: 0x0080, 0x1b28: 0x0040, 0x1b29: 0x0040, + 0x1b2a: 0x0040, 0x1b2b: 0x0040, 0x1b2c: 0x0040, 0x1b2d: 0x0040, 0x1b2e: 0x0040, 0x1b2f: 0x0080, + 0x1b30: 0x0080, 0x1b31: 0x0080, 0x1b32: 0x0080, 0x1b33: 0x0080, 0x1b34: 0x0080, 0x1b35: 0x0080, + 0x1b36: 0x0080, 0x1b37: 0x0080, 0x1b38: 0x0080, 0x1b39: 0x0080, 0x1b3a: 0x0080, 0x1b3b: 0x0080, + 0x1b3c: 0x0080, 0x1b3d: 0x0080, 0x1b3e: 0x0080, 0x1b3f: 0x0080, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x0080, 0x1b41: 0x0080, 0x1b42: 0x0080, 0x1b43: 0x0080, 0x1b44: 0x0080, 0x1b45: 0x0080, + 0x1b46: 0x0080, 0x1b47: 0x0080, 0x1b48: 0x0080, 0x1b49: 0x0080, 0x1b4a: 0x0080, 0x1b4b: 0x0080, + 0x1b4c: 0x0080, 0x1b4d: 0x0080, 0x1b4e: 0x0080, 0x1b4f: 0x0080, 0x1b50: 0x0080, 0x1b51: 0x0080, + 0x1b52: 0x0080, 0x1b53: 0x0080, 0x1b54: 0x0080, 0x1b55: 0x0080, 0x1b56: 0x0080, 0x1b57: 0x0080, + 0x1b58: 0x0080, 0x1b59: 0x0080, 0x1b5a: 0x0080, 0x1b5b: 0x0080, 0x1b5c: 0x0080, 0x1b5d: 0x0080, + 0x1b5e: 0x0080, 0x1b5f: 0x0080, 0x1b60: 0x0040, 0x1b61: 0x0040, 0x1b62: 0x0040, 0x1b63: 0x0040, + 0x1b64: 0x0040, 0x1b66: 0x0040, 0x1b67: 0x0040, 0x1b68: 0x0040, 0x1b69: 0x0040, + 0x1b6a: 0x0040, 0x1b6b: 0x0040, 0x1b6c: 0x0040, 0x1b6d: 0x0040, 0x1b6e: 0x0040, 0x1b6f: 0x0040, + 0x1b70: 0x0080, 0x1b71: 0x0080, 0x1b74: 0x0080, 0x1b75: 0x0080, + 0x1b76: 0x0080, 0x1b77: 0x0080, 0x1b78: 0x0080, 0x1b79: 0x0080, 0x1b7a: 0x0080, 0x1b7b: 0x0080, + 0x1b7c: 0x0080, 0x1b7d: 0x0080, 0x1b7e: 0x0080, 0x1b7f: 0x0080, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x0080, 0x1b81: 0x0080, 0x1b82: 0x0080, 0x1b83: 0x0080, 0x1b84: 0x0080, 0x1b85: 0x0080, + 0x1b86: 0x0080, 0x1b87: 0x0080, 0x1b88: 0x0080, 0x1b89: 0x0080, 0x1b8a: 0x0080, 0x1b8b: 0x0080, + 0x1b8c: 0x0080, 0x1b8d: 0x0080, 0x1b8e: 0x0080, 0x1b90: 0x0080, 0x1b91: 0x0080, + 0x1b92: 0x0080, 0x1b93: 0x0080, 0x1b94: 0x0080, 0x1b95: 0x0080, 0x1b96: 0x0080, 0x1b97: 0x0080, + 0x1b98: 0x0080, 0x1b99: 0x0080, 0x1b9a: 0x0080, 0x1b9b: 0x0080, 0x1b9c: 0x0080, + 0x1ba0: 0x0080, 0x1ba1: 0x0080, 0x1ba2: 0x0080, 0x1ba3: 0x0080, + 0x1ba4: 0x0080, 0x1ba5: 0x0080, 0x1ba6: 0x0080, 0x1ba7: 0x0080, 0x1ba8: 0x0080, 0x1ba9: 0x0080, + 0x1baa: 0x0080, 0x1bab: 0x0080, 0x1bac: 0x0080, 0x1bad: 0x0080, 0x1bae: 0x0080, 0x1baf: 0x0080, + 0x1bb0: 0x0080, 0x1bb1: 0x0080, 0x1bb2: 0x0080, 0x1bb3: 0x0080, 0x1bb4: 0x0080, 0x1bb5: 0x0080, + 0x1bb6: 0x0080, 0x1bb7: 0x0080, 0x1bb8: 0x0080, 0x1bb9: 0x0080, 0x1bba: 0x0080, 0x1bbb: 0x0080, + 0x1bbc: 0x0080, 0x1bbd: 0x0080, 0x1bbe: 0x0080, + // Block 0x6f, offset 0x1bc0 + 0x1bd0: 0x00c3, 0x1bd1: 0x00c3, + 0x1bd2: 0x00c3, 0x1bd3: 0x00c3, 0x1bd4: 0x00c3, 0x1bd5: 0x00c3, 0x1bd6: 0x00c3, 0x1bd7: 0x00c3, + 0x1bd8: 0x00c3, 0x1bd9: 0x00c3, 0x1bda: 0x00c3, 0x1bdb: 0x00c3, 0x1bdc: 0x00c3, 0x1bdd: 0x0083, + 0x1bde: 0x0083, 0x1bdf: 0x0083, 0x1be0: 0x0083, 0x1be1: 0x00c3, 0x1be2: 0x0083, 0x1be3: 0x0083, + 0x1be4: 0x0083, 0x1be5: 0x00c3, 0x1be6: 0x00c3, 0x1be7: 0x00c3, 0x1be8: 0x00c3, 0x1be9: 0x00c3, + 0x1bea: 0x00c3, 0x1beb: 0x00c3, 0x1bec: 0x00c3, 0x1bed: 0x00c3, 0x1bee: 0x00c3, 0x1bef: 0x00c3, + 0x1bf0: 0x00c3, + // Block 0x70, offset 0x1c00 + 0x1c00: 0x0080, 0x1c01: 0x0080, 0x1c02: 0x0080, 0x1c03: 0x0080, 0x1c04: 0x0080, 0x1c05: 0x0080, + 0x1c06: 0x0080, 0x1c07: 0x0080, 0x1c08: 0x0080, 0x1c09: 0x0080, 0x1c0a: 0x0080, 0x1c0b: 0x0080, + 0x1c0c: 0x0080, 0x1c0d: 0x0080, 0x1c0e: 0x0080, 0x1c0f: 0x0080, 0x1c10: 0x0080, 0x1c11: 0x0080, + 0x1c12: 0x0080, 0x1c13: 0x0080, 0x1c14: 0x0080, 0x1c15: 0x0080, 0x1c16: 0x0080, 0x1c17: 0x0080, + 0x1c18: 0x0080, 0x1c19: 0x0080, 0x1c1a: 0x0080, 0x1c1b: 0x0080, 0x1c1c: 0x0080, 0x1c1d: 0x0080, + 0x1c1e: 0x0080, 0x1c1f: 0x0080, 0x1c20: 0x0080, 0x1c21: 0x0080, 0x1c22: 0x0080, 0x1c23: 0x0080, + 0x1c24: 0x0080, 0x1c25: 0x0080, 0x1c26: 0x0088, 0x1c27: 0x0080, 0x1c28: 0x0080, 0x1c29: 0x0080, + 0x1c2a: 0x0080, 0x1c2b: 0x0080, 0x1c2c: 0x0080, 0x1c2d: 0x0080, 0x1c2e: 0x0080, 0x1c2f: 0x0080, + 0x1c30: 0x0080, 0x1c31: 0x0080, 0x1c32: 0x00c0, 0x1c33: 0x0080, 0x1c34: 0x0080, 0x1c35: 0x0080, + 0x1c36: 0x0080, 0x1c37: 0x0080, 0x1c38: 0x0080, 0x1c39: 0x0080, 0x1c3a: 0x0080, 0x1c3b: 0x0080, + 0x1c3c: 0x0080, 0x1c3d: 0x0080, 0x1c3e: 0x0080, 0x1c3f: 0x0080, + // Block 0x71, offset 0x1c40 + 0x1c40: 0x0080, 0x1c41: 0x0080, 0x1c42: 0x0080, 0x1c43: 0x0080, 0x1c44: 0x0080, 0x1c45: 0x0080, + 0x1c46: 0x0080, 0x1c47: 0x0080, 0x1c48: 0x0080, 0x1c49: 0x0080, 0x1c4a: 0x0080, 0x1c4b: 0x0080, + 0x1c4c: 0x0080, 0x1c4d: 0x0080, 0x1c4e: 0x00c0, 0x1c4f: 0x0080, 0x1c50: 0x0080, 0x1c51: 0x0080, + 0x1c52: 0x0080, 0x1c53: 0x0080, 0x1c54: 0x0080, 0x1c55: 0x0080, 0x1c56: 0x0080, 0x1c57: 0x0080, + 0x1c58: 0x0080, 0x1c59: 0x0080, 0x1c5a: 0x0080, 0x1c5b: 0x0080, 0x1c5c: 0x0080, 0x1c5d: 0x0080, + 0x1c5e: 0x0080, 0x1c5f: 0x0080, 0x1c60: 0x0080, 0x1c61: 0x0080, 0x1c62: 0x0080, 0x1c63: 0x0080, + 0x1c64: 0x0080, 0x1c65: 0x0080, 0x1c66: 0x0080, 0x1c67: 0x0080, 0x1c68: 0x0080, 0x1c69: 0x0080, + 0x1c6a: 0x0080, 0x1c6b: 0x0080, 0x1c6c: 0x0080, 0x1c6d: 0x0080, 0x1c6e: 0x0080, 0x1c6f: 0x0080, + 0x1c70: 0x0080, 0x1c71: 0x0080, 0x1c72: 0x0080, 0x1c73: 0x0080, 0x1c74: 0x0080, 0x1c75: 0x0080, + 0x1c76: 0x0080, 0x1c77: 0x0080, 0x1c78: 0x0080, 0x1c79: 0x0080, 0x1c7a: 0x0080, 0x1c7b: 0x0080, + 0x1c7c: 0x0080, 0x1c7d: 0x0080, 0x1c7e: 0x0080, 0x1c7f: 0x0080, + // Block 0x72, offset 0x1c80 + 0x1c80: 0x0080, 0x1c81: 0x0080, 0x1c82: 0x0080, 0x1c83: 0x00c0, 0x1c84: 0x00c0, 0x1c85: 0x0080, + 0x1c86: 0x0080, 0x1c87: 0x0080, 0x1c88: 0x0080, 0x1c89: 0x0080, 0x1c8a: 0x0080, 0x1c8b: 0x0080, + 0x1c90: 0x0080, 0x1c91: 0x0080, + 0x1c92: 0x0080, 0x1c93: 0x0080, 0x1c94: 0x0080, 0x1c95: 0x0080, 0x1c96: 0x0080, 0x1c97: 0x0080, + 0x1c98: 0x0080, 0x1c99: 0x0080, 0x1c9a: 0x0080, 0x1c9b: 0x0080, 0x1c9c: 0x0080, 0x1c9d: 0x0080, + 0x1c9e: 0x0080, 0x1c9f: 0x0080, 0x1ca0: 0x0080, 0x1ca1: 0x0080, 0x1ca2: 0x0080, 0x1ca3: 0x0080, + 0x1ca4: 0x0080, 0x1ca5: 0x0080, 0x1ca6: 0x0080, 0x1ca7: 0x0080, 0x1ca8: 0x0080, 0x1ca9: 0x0080, + 0x1caa: 0x0080, 0x1cab: 0x0080, 0x1cac: 0x0080, 0x1cad: 0x0080, 0x1cae: 0x0080, 0x1caf: 0x0080, + 0x1cb0: 0x0080, 0x1cb1: 0x0080, 0x1cb2: 0x0080, 0x1cb3: 0x0080, 0x1cb4: 0x0080, 0x1cb5: 0x0080, + 0x1cb6: 0x0080, 0x1cb7: 0x0080, 0x1cb8: 0x0080, 0x1cb9: 0x0080, 0x1cba: 0x0080, 0x1cbb: 0x0080, + 0x1cbc: 0x0080, 0x1cbd: 0x0080, 0x1cbe: 0x0080, 0x1cbf: 0x0080, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x0080, 0x1cc1: 0x0080, 0x1cc2: 0x0080, 0x1cc3: 0x0080, 0x1cc4: 0x0080, 0x1cc5: 0x0080, + 0x1cc6: 0x0080, 0x1cc7: 0x0080, 0x1cc8: 0x0080, 0x1cc9: 0x0080, 0x1cca: 0x0080, 0x1ccb: 0x0080, + 0x1ccc: 0x0080, 0x1ccd: 0x0080, 0x1cce: 0x0080, 0x1ccf: 0x0080, 0x1cd0: 0x0080, 0x1cd1: 0x0080, + 0x1cd2: 0x0080, 0x1cd3: 0x0080, 0x1cd4: 0x0080, 0x1cd5: 0x0080, 0x1cd6: 0x0080, 0x1cd7: 0x0080, + 0x1cd8: 0x0080, 0x1cd9: 0x0080, 0x1cda: 0x0080, 0x1cdb: 0x0080, 0x1cdc: 0x0080, 0x1cdd: 0x0080, + 0x1cde: 0x0080, 0x1cdf: 0x0080, 0x1ce0: 0x0080, 0x1ce1: 0x0080, 0x1ce2: 0x0080, 0x1ce3: 0x0080, + 0x1ce4: 0x0080, 0x1ce5: 0x0080, 0x1ce6: 0x0080, 0x1ce7: 0x0080, 0x1ce8: 0x0080, 0x1ce9: 0x0080, + 0x1cea: 0x0080, 0x1ceb: 0x0080, 0x1cec: 0x0080, 0x1ced: 0x0080, 0x1cee: 0x0080, 0x1cef: 0x0080, + 0x1cf0: 0x0080, 0x1cf1: 0x0080, 0x1cf2: 0x0080, 0x1cf3: 0x0080, 0x1cf4: 0x0080, 0x1cf5: 0x0080, + 0x1cf6: 0x0080, 0x1cf7: 0x0080, 0x1cf8: 0x0080, 0x1cf9: 0x0080, 0x1cfa: 0x0080, 0x1cfb: 0x0080, + 0x1cfc: 0x0080, 0x1cfd: 0x0080, 0x1cfe: 0x0080, 0x1cff: 0x0080, + // Block 0x74, offset 0x1d00 + 0x1d00: 0x0080, 0x1d01: 0x0080, 0x1d02: 0x0080, 0x1d03: 0x0080, 0x1d04: 0x0080, 0x1d05: 0x0080, + 0x1d06: 0x0080, 0x1d07: 0x0080, 0x1d08: 0x0080, 0x1d09: 0x0080, 0x1d0a: 0x0080, 0x1d0b: 0x0080, + 0x1d0c: 0x0080, 0x1d0d: 0x0080, 0x1d0e: 0x0080, 0x1d0f: 0x0080, 0x1d10: 0x0080, 0x1d11: 0x0080, + 0x1d12: 0x0080, 0x1d13: 0x0080, 0x1d14: 0x0080, 0x1d15: 0x0080, 0x1d16: 0x0080, 0x1d17: 0x0080, + 0x1d18: 0x0080, 0x1d19: 0x0080, 0x1d1a: 0x0080, 0x1d1b: 0x0080, 0x1d1c: 0x0080, 0x1d1d: 0x0080, + 0x1d1e: 0x0080, 0x1d1f: 0x0080, 0x1d20: 0x0080, 0x1d21: 0x0080, 0x1d22: 0x0080, 0x1d23: 0x0080, + 0x1d24: 0x0080, 0x1d25: 0x0080, 0x1d26: 0x0080, 0x1d27: 0x0080, 0x1d28: 0x0080, 0x1d29: 0x0080, + 0x1d2a: 0x0080, 0x1d2b: 0x0080, 0x1d2c: 0x0080, 0x1d2d: 0x0080, 0x1d2e: 0x0080, 0x1d2f: 0x0080, + 0x1d30: 0x0080, 0x1d31: 0x0080, 0x1d32: 0x0080, 0x1d33: 0x0080, 0x1d34: 0x0080, 0x1d35: 0x0080, + 0x1d36: 0x0080, 0x1d37: 0x0080, 0x1d38: 0x0080, 0x1d39: 0x0080, 0x1d3a: 0x0080, 0x1d3b: 0x0080, + 0x1d3c: 0x0080, 0x1d3d: 0x0080, 0x1d3e: 0x0080, + // Block 0x75, offset 0x1d40 + 0x1d40: 0x0080, 0x1d41: 0x0080, 0x1d42: 0x0080, 0x1d43: 0x0080, 0x1d44: 0x0080, 0x1d45: 0x0080, + 0x1d46: 0x0080, 0x1d47: 0x0080, 0x1d48: 0x0080, 0x1d49: 0x0080, 0x1d4a: 0x0080, 0x1d4b: 0x0080, + 0x1d4c: 0x0080, 0x1d4d: 0x0080, 0x1d4e: 0x0080, 0x1d4f: 0x0080, 0x1d50: 0x0080, 0x1d51: 0x0080, + 0x1d52: 0x0080, 0x1d53: 0x0080, 0x1d54: 0x0080, 0x1d55: 0x0080, 0x1d56: 0x0080, 0x1d57: 0x0080, + 0x1d58: 0x0080, 0x1d59: 0x0080, 0x1d5a: 0x0080, 0x1d5b: 0x0080, 0x1d5c: 0x0080, 0x1d5d: 0x0080, + 0x1d5e: 0x0080, 0x1d5f: 0x0080, 0x1d60: 0x0080, 0x1d61: 0x0080, 0x1d62: 0x0080, 0x1d63: 0x0080, + 0x1d64: 0x0080, 0x1d65: 0x0080, 0x1d66: 0x0080, + // Block 0x76, offset 0x1d80 + 0x1d80: 0x0080, 0x1d81: 0x0080, 0x1d82: 0x0080, 0x1d83: 0x0080, 0x1d84: 0x0080, 0x1d85: 0x0080, + 0x1d86: 0x0080, 0x1d87: 0x0080, 0x1d88: 0x0080, 0x1d89: 0x0080, 0x1d8a: 0x0080, + 0x1da0: 0x0080, 0x1da1: 0x0080, 0x1da2: 0x0080, 0x1da3: 0x0080, + 0x1da4: 0x0080, 0x1da5: 0x0080, 0x1da6: 0x0080, 0x1da7: 0x0080, 0x1da8: 0x0080, 0x1da9: 0x0080, + 0x1daa: 0x0080, 0x1dab: 0x0080, 0x1dac: 0x0080, 0x1dad: 0x0080, 0x1dae: 0x0080, 0x1daf: 0x0080, + 0x1db0: 0x0080, 0x1db1: 0x0080, 0x1db2: 0x0080, 0x1db3: 0x0080, 0x1db4: 0x0080, 0x1db5: 0x0080, + 0x1db6: 0x0080, 0x1db7: 0x0080, 0x1db8: 0x0080, 0x1db9: 0x0080, 0x1dba: 0x0080, 0x1dbb: 0x0080, + 0x1dbc: 0x0080, 0x1dbd: 0x0080, 0x1dbe: 0x0080, 0x1dbf: 0x0080, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0x0080, 0x1dc1: 0x0080, 0x1dc2: 0x0080, 0x1dc3: 0x0080, 0x1dc4: 0x0080, 0x1dc5: 0x0080, + 0x1dc6: 0x0080, 0x1dc7: 0x0080, 0x1dc8: 0x0080, 0x1dc9: 0x0080, 0x1dca: 0x0080, 0x1dcb: 0x0080, + 0x1dcc: 0x0080, 0x1dcd: 0x0080, 0x1dce: 0x0080, 0x1dcf: 0x0080, 0x1dd0: 0x0080, 0x1dd1: 0x0080, + 0x1dd2: 0x0080, 0x1dd3: 0x0080, 0x1dd4: 0x0080, 0x1dd5: 0x0080, 0x1dd6: 0x0080, 0x1dd7: 0x0080, + 0x1dd8: 0x0080, 0x1dd9: 0x0080, 0x1dda: 0x0080, 0x1ddb: 0x0080, 0x1ddc: 0x0080, 0x1ddd: 0x0080, + 0x1dde: 0x0080, 0x1ddf: 0x0080, 0x1de0: 0x0080, 0x1de1: 0x0080, 0x1de2: 0x0080, 0x1de3: 0x0080, + 0x1de4: 0x0080, 0x1de5: 0x0080, 0x1de6: 0x0080, 0x1de7: 0x0080, 0x1de8: 0x0080, 0x1de9: 0x0080, + 0x1dea: 0x0080, 0x1deb: 0x0080, 0x1dec: 0x0080, 0x1ded: 0x0080, 0x1dee: 0x0080, 0x1def: 0x0080, + 0x1df0: 0x0080, 0x1df1: 0x0080, 0x1df2: 0x0080, 0x1df3: 0x0080, + 0x1df6: 0x0080, 0x1df7: 0x0080, 0x1df8: 0x0080, 0x1df9: 0x0080, 0x1dfa: 0x0080, 0x1dfb: 0x0080, + 0x1dfc: 0x0080, 0x1dfd: 0x0080, 0x1dfe: 0x0080, 0x1dff: 0x0080, + // Block 0x78, offset 0x1e00 + 0x1e00: 0x0080, 0x1e01: 0x0080, 0x1e02: 0x0080, 0x1e03: 0x0080, 0x1e04: 0x0080, 0x1e05: 0x0080, + 0x1e06: 0x0080, 0x1e07: 0x0080, 0x1e08: 0x0080, 0x1e09: 0x0080, 0x1e0a: 0x0080, 0x1e0b: 0x0080, + 0x1e0c: 0x0080, 0x1e0d: 0x0080, 0x1e0e: 0x0080, 0x1e0f: 0x0080, 0x1e10: 0x0080, 0x1e11: 0x0080, + 0x1e12: 0x0080, 0x1e13: 0x0080, 0x1e14: 0x0080, 0x1e15: 0x0080, + 0x1e18: 0x0080, 0x1e19: 0x0080, 0x1e1a: 0x0080, 0x1e1b: 0x0080, 0x1e1c: 0x0080, 0x1e1d: 0x0080, + 0x1e1e: 0x0080, 0x1e1f: 0x0080, 0x1e20: 0x0080, 0x1e21: 0x0080, 0x1e22: 0x0080, 0x1e23: 0x0080, + 0x1e24: 0x0080, 0x1e25: 0x0080, 0x1e26: 0x0080, 0x1e27: 0x0080, 0x1e28: 0x0080, 0x1e29: 0x0080, + 0x1e2a: 0x0080, 0x1e2b: 0x0080, 0x1e2c: 0x0080, 0x1e2d: 0x0080, 0x1e2e: 0x0080, 0x1e2f: 0x0080, + 0x1e30: 0x0080, 0x1e31: 0x0080, 0x1e32: 0x0080, 0x1e33: 0x0080, 0x1e34: 0x0080, 0x1e35: 0x0080, + 0x1e36: 0x0080, 0x1e37: 0x0080, 0x1e38: 0x0080, 0x1e39: 0x0080, + 0x1e3d: 0x0080, 0x1e3e: 0x0080, 0x1e3f: 0x0080, + // Block 0x79, offset 0x1e40 + 0x1e40: 0x0080, 0x1e41: 0x0080, 0x1e42: 0x0080, 0x1e43: 0x0080, 0x1e44: 0x0080, 0x1e45: 0x0080, + 0x1e46: 0x0080, 0x1e47: 0x0080, 0x1e48: 0x0080, 0x1e4a: 0x0080, 0x1e4b: 0x0080, + 0x1e4c: 0x0080, 0x1e4d: 0x0080, 0x1e4e: 0x0080, 0x1e4f: 0x0080, 0x1e50: 0x0080, 0x1e51: 0x0080, + 0x1e6c: 0x0080, 0x1e6d: 0x0080, 0x1e6e: 0x0080, 0x1e6f: 0x0080, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0x00c0, 0x1e81: 0x00c0, 0x1e82: 0x00c0, 0x1e83: 0x00c0, 0x1e84: 0x00c0, 0x1e85: 0x00c0, + 0x1e86: 0x00c0, 0x1e87: 0x00c0, 0x1e88: 0x00c0, 0x1e89: 0x00c0, 0x1e8a: 0x00c0, 0x1e8b: 0x00c0, + 0x1e8c: 0x00c0, 0x1e8d: 0x00c0, 0x1e8e: 0x00c0, 0x1e8f: 0x00c0, 0x1e90: 0x00c0, 0x1e91: 0x00c0, + 0x1e92: 0x00c0, 0x1e93: 0x00c0, 0x1e94: 0x00c0, 0x1e95: 0x00c0, 0x1e96: 0x00c0, 0x1e97: 0x00c0, + 0x1e98: 0x00c0, 0x1e99: 0x00c0, 0x1e9a: 0x00c0, 0x1e9b: 0x00c0, 0x1e9c: 0x00c0, 0x1e9d: 0x00c0, + 0x1e9e: 0x00c0, 0x1e9f: 0x00c0, 0x1ea0: 0x00c0, 0x1ea1: 0x00c0, 0x1ea2: 0x00c0, 0x1ea3: 0x00c0, + 0x1ea4: 0x00c0, 0x1ea5: 0x00c0, 0x1ea6: 0x00c0, 0x1ea7: 0x00c0, 0x1ea8: 0x00c0, 0x1ea9: 0x00c0, + 0x1eaa: 0x00c0, 0x1eab: 0x00c0, 0x1eac: 0x00c0, 0x1ead: 0x00c0, 0x1eae: 0x00c0, + 0x1eb0: 0x00c0, 0x1eb1: 0x00c0, 0x1eb2: 0x00c0, 0x1eb3: 0x00c0, 0x1eb4: 0x00c0, 0x1eb5: 0x00c0, + 0x1eb6: 0x00c0, 0x1eb7: 0x00c0, 0x1eb8: 0x00c0, 0x1eb9: 0x00c0, 0x1eba: 0x00c0, 0x1ebb: 0x00c0, + 0x1ebc: 0x00c0, 0x1ebd: 0x00c0, 0x1ebe: 0x00c0, 0x1ebf: 0x00c0, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0x00c0, 0x1ec1: 0x00c0, 0x1ec2: 0x00c0, 0x1ec3: 0x00c0, 0x1ec4: 0x00c0, 0x1ec5: 0x00c0, + 0x1ec6: 0x00c0, 0x1ec7: 0x00c0, 0x1ec8: 0x00c0, 0x1ec9: 0x00c0, 0x1eca: 0x00c0, 0x1ecb: 0x00c0, + 0x1ecc: 0x00c0, 0x1ecd: 0x00c0, 0x1ece: 0x00c0, 0x1ecf: 0x00c0, 0x1ed0: 0x00c0, 0x1ed1: 0x00c0, + 0x1ed2: 0x00c0, 0x1ed3: 0x00c0, 0x1ed4: 0x00c0, 0x1ed5: 0x00c0, 0x1ed6: 0x00c0, 0x1ed7: 0x00c0, + 0x1ed8: 0x00c0, 0x1ed9: 0x00c0, 0x1eda: 0x00c0, 0x1edb: 0x00c0, 0x1edc: 0x00c0, 0x1edd: 0x00c0, + 0x1ede: 0x00c0, 0x1ee0: 0x00c0, 0x1ee1: 0x00c0, 0x1ee2: 0x00c0, 0x1ee3: 0x00c0, + 0x1ee4: 0x00c0, 0x1ee5: 0x00c0, 0x1ee6: 0x00c0, 0x1ee7: 0x00c0, 0x1ee8: 0x00c0, 0x1ee9: 0x00c0, + 0x1eea: 0x00c0, 0x1eeb: 0x00c0, 0x1eec: 0x00c0, 0x1eed: 0x00c0, 0x1eee: 0x00c0, 0x1eef: 0x00c0, + 0x1ef0: 0x00c0, 0x1ef1: 0x00c0, 0x1ef2: 0x00c0, 0x1ef3: 0x00c0, 0x1ef4: 0x00c0, 0x1ef5: 0x00c0, + 0x1ef6: 0x00c0, 0x1ef7: 0x00c0, 0x1ef8: 0x00c0, 0x1ef9: 0x00c0, 0x1efa: 0x00c0, 0x1efb: 0x00c0, + 0x1efc: 0x0080, 0x1efd: 0x0080, 0x1efe: 0x00c0, 0x1eff: 0x00c0, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0x00c0, 0x1f01: 0x00c0, 0x1f02: 0x00c0, 0x1f03: 0x00c0, 0x1f04: 0x00c0, 0x1f05: 0x00c0, + 0x1f06: 0x00c0, 0x1f07: 0x00c0, 0x1f08: 0x00c0, 0x1f09: 0x00c0, 0x1f0a: 0x00c0, 0x1f0b: 0x00c0, + 0x1f0c: 0x00c0, 0x1f0d: 0x00c0, 0x1f0e: 0x00c0, 0x1f0f: 0x00c0, 0x1f10: 0x00c0, 0x1f11: 0x00c0, + 0x1f12: 0x00c0, 0x1f13: 0x00c0, 0x1f14: 0x00c0, 0x1f15: 0x00c0, 0x1f16: 0x00c0, 0x1f17: 0x00c0, + 0x1f18: 0x00c0, 0x1f19: 0x00c0, 0x1f1a: 0x00c0, 0x1f1b: 0x00c0, 0x1f1c: 0x00c0, 0x1f1d: 0x00c0, + 0x1f1e: 0x00c0, 0x1f1f: 0x00c0, 0x1f20: 0x00c0, 0x1f21: 0x00c0, 0x1f22: 0x00c0, 0x1f23: 0x00c0, + 0x1f24: 0x00c0, 0x1f25: 0x0080, 0x1f26: 0x0080, 0x1f27: 0x0080, 0x1f28: 0x0080, 0x1f29: 0x0080, + 0x1f2a: 0x0080, 0x1f2b: 0x00c0, 0x1f2c: 0x00c0, 0x1f2d: 0x00c0, 0x1f2e: 0x00c0, 0x1f2f: 0x00c3, + 0x1f30: 0x00c3, 0x1f31: 0x00c3, 0x1f32: 0x00c0, 0x1f33: 0x00c0, + 0x1f39: 0x0080, 0x1f3a: 0x0080, 0x1f3b: 0x0080, + 0x1f3c: 0x0080, 0x1f3d: 0x0080, 0x1f3e: 0x0080, 0x1f3f: 0x0080, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0x00c0, 0x1f41: 0x00c0, 0x1f42: 0x00c0, 0x1f43: 0x00c0, 0x1f44: 0x00c0, 0x1f45: 0x00c0, + 0x1f46: 0x00c0, 0x1f47: 0x00c0, 0x1f48: 0x00c0, 0x1f49: 0x00c0, 0x1f4a: 0x00c0, 0x1f4b: 0x00c0, + 0x1f4c: 0x00c0, 0x1f4d: 0x00c0, 0x1f4e: 0x00c0, 0x1f4f: 0x00c0, 0x1f50: 0x00c0, 0x1f51: 0x00c0, + 0x1f52: 0x00c0, 0x1f53: 0x00c0, 0x1f54: 0x00c0, 0x1f55: 0x00c0, 0x1f56: 0x00c0, 0x1f57: 0x00c0, + 0x1f58: 0x00c0, 0x1f59: 0x00c0, 0x1f5a: 0x00c0, 0x1f5b: 0x00c0, 0x1f5c: 0x00c0, 0x1f5d: 0x00c0, + 0x1f5e: 0x00c0, 0x1f5f: 0x00c0, 0x1f60: 0x00c0, 0x1f61: 0x00c0, 0x1f62: 0x00c0, 0x1f63: 0x00c0, + 0x1f64: 0x00c0, 0x1f65: 0x00c0, 0x1f67: 0x00c0, + 0x1f6d: 0x00c0, + 0x1f70: 0x00c0, 0x1f71: 0x00c0, 0x1f72: 0x00c0, 0x1f73: 0x00c0, 0x1f74: 0x00c0, 0x1f75: 0x00c0, + 0x1f76: 0x00c0, 0x1f77: 0x00c0, 0x1f78: 0x00c0, 0x1f79: 0x00c0, 0x1f7a: 0x00c0, 0x1f7b: 0x00c0, + 0x1f7c: 0x00c0, 0x1f7d: 0x00c0, 0x1f7e: 0x00c0, 0x1f7f: 0x00c0, + // Block 0x7e, offset 0x1f80 + 0x1f80: 0x00c0, 0x1f81: 0x00c0, 0x1f82: 0x00c0, 0x1f83: 0x00c0, 0x1f84: 0x00c0, 0x1f85: 0x00c0, + 0x1f86: 0x00c0, 0x1f87: 0x00c0, 0x1f88: 0x00c0, 0x1f89: 0x00c0, 0x1f8a: 0x00c0, 0x1f8b: 0x00c0, + 0x1f8c: 0x00c0, 0x1f8d: 0x00c0, 0x1f8e: 0x00c0, 0x1f8f: 0x00c0, 0x1f90: 0x00c0, 0x1f91: 0x00c0, + 0x1f92: 0x00c0, 0x1f93: 0x00c0, 0x1f94: 0x00c0, 0x1f95: 0x00c0, 0x1f96: 0x00c0, 0x1f97: 0x00c0, + 0x1f98: 0x00c0, 0x1f99: 0x00c0, 0x1f9a: 0x00c0, 0x1f9b: 0x00c0, 0x1f9c: 0x00c0, 0x1f9d: 0x00c0, + 0x1f9e: 0x00c0, 0x1f9f: 0x00c0, 0x1fa0: 0x00c0, 0x1fa1: 0x00c0, 0x1fa2: 0x00c0, 0x1fa3: 0x00c0, + 0x1fa4: 0x00c0, 0x1fa5: 0x00c0, 0x1fa6: 0x00c0, 0x1fa7: 0x00c0, + 0x1faf: 0x0080, + 0x1fb0: 0x0080, + 0x1fbf: 0x00c6, + // Block 0x7f, offset 0x1fc0 + 0x1fc0: 0x00c0, 0x1fc1: 0x00c0, 0x1fc2: 0x00c0, 0x1fc3: 0x00c0, 0x1fc4: 0x00c0, 0x1fc5: 0x00c0, + 0x1fc6: 0x00c0, 0x1fc7: 0x00c0, 0x1fc8: 0x00c0, 0x1fc9: 0x00c0, 0x1fca: 0x00c0, 0x1fcb: 0x00c0, + 0x1fcc: 0x00c0, 0x1fcd: 0x00c0, 0x1fce: 0x00c0, 0x1fcf: 0x00c0, 0x1fd0: 0x00c0, 0x1fd1: 0x00c0, + 0x1fd2: 0x00c0, 0x1fd3: 0x00c0, 0x1fd4: 0x00c0, 0x1fd5: 0x00c0, 0x1fd6: 0x00c0, + 0x1fe0: 0x00c0, 0x1fe1: 0x00c0, 0x1fe2: 0x00c0, 0x1fe3: 0x00c0, + 0x1fe4: 0x00c0, 0x1fe5: 0x00c0, 0x1fe6: 0x00c0, 0x1fe8: 0x00c0, 0x1fe9: 0x00c0, + 0x1fea: 0x00c0, 0x1feb: 0x00c0, 0x1fec: 0x00c0, 0x1fed: 0x00c0, 0x1fee: 0x00c0, + 0x1ff0: 0x00c0, 0x1ff1: 0x00c0, 0x1ff2: 0x00c0, 0x1ff3: 0x00c0, 0x1ff4: 0x00c0, 0x1ff5: 0x00c0, + 0x1ff6: 0x00c0, 0x1ff8: 0x00c0, 0x1ff9: 0x00c0, 0x1ffa: 0x00c0, 0x1ffb: 0x00c0, + 0x1ffc: 0x00c0, 0x1ffd: 0x00c0, 0x1ffe: 0x00c0, + // Block 0x80, offset 0x2000 + 0x2000: 0x00c0, 0x2001: 0x00c0, 0x2002: 0x00c0, 0x2003: 0x00c0, 0x2004: 0x00c0, 0x2005: 0x00c0, + 0x2006: 0x00c0, 0x2008: 0x00c0, 0x2009: 0x00c0, 0x200a: 0x00c0, 0x200b: 0x00c0, + 0x200c: 0x00c0, 0x200d: 0x00c0, 0x200e: 0x00c0, 0x2010: 0x00c0, 0x2011: 0x00c0, + 0x2012: 0x00c0, 0x2013: 0x00c0, 0x2014: 0x00c0, 0x2015: 0x00c0, 0x2016: 0x00c0, + 0x2018: 0x00c0, 0x2019: 0x00c0, 0x201a: 0x00c0, 0x201b: 0x00c0, 0x201c: 0x00c0, 0x201d: 0x00c0, + 0x201e: 0x00c0, 0x2020: 0x00c3, 0x2021: 0x00c3, 0x2022: 0x00c3, 0x2023: 0x00c3, + 0x2024: 0x00c3, 0x2025: 0x00c3, 0x2026: 0x00c3, 0x2027: 0x00c3, 0x2028: 0x00c3, 0x2029: 0x00c3, + 0x202a: 0x00c3, 0x202b: 0x00c3, 0x202c: 0x00c3, 0x202d: 0x00c3, 0x202e: 0x00c3, 0x202f: 0x00c3, + 0x2030: 0x00c3, 0x2031: 0x00c3, 0x2032: 0x00c3, 0x2033: 0x00c3, 0x2034: 0x00c3, 0x2035: 0x00c3, + 0x2036: 0x00c3, 0x2037: 0x00c3, 0x2038: 0x00c3, 0x2039: 0x00c3, 0x203a: 0x00c3, 0x203b: 0x00c3, + 0x203c: 0x00c3, 0x203d: 0x00c3, 0x203e: 0x00c3, 0x203f: 0x00c3, + // Block 0x81, offset 0x2040 + 0x2040: 0x0080, 0x2041: 0x0080, 0x2042: 0x0080, 0x2043: 0x0080, 0x2044: 0x0080, 0x2045: 0x0080, + 0x2046: 0x0080, 0x2047: 0x0080, 0x2048: 0x0080, 0x2049: 0x0080, 0x204a: 0x0080, 0x204b: 0x0080, + 0x204c: 0x0080, 0x204d: 0x0080, 0x204e: 0x0080, 0x204f: 0x0080, 0x2050: 0x0080, 0x2051: 0x0080, + 0x2052: 0x0080, 0x2053: 0x0080, 0x2054: 0x0080, 0x2055: 0x0080, 0x2056: 0x0080, 0x2057: 0x0080, + 0x2058: 0x0080, 0x2059: 0x0080, 0x205a: 0x0080, 0x205b: 0x0080, 0x205c: 0x0080, 0x205d: 0x0080, + 0x205e: 0x0080, 0x205f: 0x0080, 0x2060: 0x0080, 0x2061: 0x0080, 0x2062: 0x0080, 0x2063: 0x0080, + 0x2064: 0x0080, 0x2065: 0x0080, 0x2066: 0x0080, 0x2067: 0x0080, 0x2068: 0x0080, 0x2069: 0x0080, + 0x206a: 0x0080, 0x206b: 0x0080, 0x206c: 0x0080, 0x206d: 0x0080, 0x206e: 0x0080, 0x206f: 0x00c0, + 0x2070: 0x0080, 0x2071: 0x0080, 0x2072: 0x0080, 0x2073: 0x0080, 0x2074: 0x0080, 0x2075: 0x0080, + 0x2076: 0x0080, 0x2077: 0x0080, 0x2078: 0x0080, 0x2079: 0x0080, 0x207a: 0x0080, 0x207b: 0x0080, + 0x207c: 0x0080, 0x207d: 0x0080, 0x207e: 0x0080, 0x207f: 0x0080, + // Block 0x82, offset 0x2080 + 0x2080: 0x0080, 0x2081: 0x0080, 0x2082: 0x0080, 0x2083: 0x0080, 0x2084: 0x0080, + // Block 0x83, offset 0x20c0 + 0x20c0: 0x008c, 0x20c1: 0x008c, 0x20c2: 0x008c, 0x20c3: 0x008c, 0x20c4: 0x008c, 0x20c5: 0x008c, + 0x20c6: 0x008c, 0x20c7: 0x008c, 0x20c8: 0x008c, 0x20c9: 0x008c, 0x20ca: 0x008c, 0x20cb: 0x008c, + 0x20cc: 0x008c, 0x20cd: 0x008c, 0x20ce: 0x008c, 0x20cf: 0x008c, 0x20d0: 0x008c, 0x20d1: 0x008c, + 0x20d2: 0x008c, 0x20d3: 0x008c, 0x20d4: 0x008c, 0x20d5: 0x008c, 0x20d6: 0x008c, 0x20d7: 0x008c, + 0x20d8: 0x008c, 0x20d9: 0x008c, 0x20db: 0x008c, 0x20dc: 0x008c, 0x20dd: 0x008c, + 0x20de: 0x008c, 0x20df: 0x008c, 0x20e0: 0x008c, 0x20e1: 0x008c, 0x20e2: 0x008c, 0x20e3: 0x008c, + 0x20e4: 0x008c, 0x20e5: 0x008c, 0x20e6: 0x008c, 0x20e7: 0x008c, 0x20e8: 0x008c, 0x20e9: 0x008c, + 0x20ea: 0x008c, 0x20eb: 0x008c, 0x20ec: 0x008c, 0x20ed: 0x008c, 0x20ee: 0x008c, 0x20ef: 0x008c, + 0x20f0: 0x008c, 0x20f1: 0x008c, 0x20f2: 0x008c, 0x20f3: 0x008c, 0x20f4: 0x008c, 0x20f5: 0x008c, + 0x20f6: 0x008c, 0x20f7: 0x008c, 0x20f8: 0x008c, 0x20f9: 0x008c, 0x20fa: 0x008c, 0x20fb: 0x008c, + 0x20fc: 0x008c, 0x20fd: 0x008c, 0x20fe: 0x008c, 0x20ff: 0x008c, + // Block 0x84, offset 0x2100 + 0x2100: 0x008c, 0x2101: 0x008c, 0x2102: 0x008c, 0x2103: 0x008c, 0x2104: 0x008c, 0x2105: 0x008c, + 0x2106: 0x008c, 0x2107: 0x008c, 0x2108: 0x008c, 0x2109: 0x008c, 0x210a: 0x008c, 0x210b: 0x008c, + 0x210c: 0x008c, 0x210d: 0x008c, 0x210e: 0x008c, 0x210f: 0x008c, 0x2110: 0x008c, 0x2111: 0x008c, + 0x2112: 0x008c, 0x2113: 0x008c, 0x2114: 0x008c, 0x2115: 0x008c, 0x2116: 0x008c, 0x2117: 0x008c, + 0x2118: 0x008c, 0x2119: 0x008c, 0x211a: 0x008c, 0x211b: 0x008c, 0x211c: 0x008c, 0x211d: 0x008c, + 0x211e: 0x008c, 0x211f: 0x008c, 0x2120: 0x008c, 0x2121: 0x008c, 0x2122: 0x008c, 0x2123: 0x008c, + 0x2124: 0x008c, 0x2125: 0x008c, 0x2126: 0x008c, 0x2127: 0x008c, 0x2128: 0x008c, 0x2129: 0x008c, + 0x212a: 0x008c, 0x212b: 0x008c, 0x212c: 0x008c, 0x212d: 0x008c, 0x212e: 0x008c, 0x212f: 0x008c, + 0x2130: 0x008c, 0x2131: 0x008c, 0x2132: 0x008c, 0x2133: 0x008c, + // Block 0x85, offset 0x2140 + 0x2140: 0x008c, 0x2141: 0x008c, 0x2142: 0x008c, 0x2143: 0x008c, 0x2144: 0x008c, 0x2145: 0x008c, + 0x2146: 0x008c, 0x2147: 0x008c, 0x2148: 0x008c, 0x2149: 0x008c, 0x214a: 0x008c, 0x214b: 0x008c, + 0x214c: 0x008c, 0x214d: 0x008c, 0x214e: 0x008c, 0x214f: 0x008c, 0x2150: 0x008c, 0x2151: 0x008c, + 0x2152: 0x008c, 0x2153: 0x008c, 0x2154: 0x008c, 0x2155: 0x008c, 0x2156: 0x008c, 0x2157: 0x008c, + 0x2158: 0x008c, 0x2159: 0x008c, 0x215a: 0x008c, 0x215b: 0x008c, 0x215c: 0x008c, 0x215d: 0x008c, + 0x215e: 0x008c, 0x215f: 0x008c, 0x2160: 0x008c, 0x2161: 0x008c, 0x2162: 0x008c, 0x2163: 0x008c, + 0x2164: 0x008c, 0x2165: 0x008c, 0x2166: 0x008c, 0x2167: 0x008c, 0x2168: 0x008c, 0x2169: 0x008c, + 0x216a: 0x008c, 0x216b: 0x008c, 0x216c: 0x008c, 0x216d: 0x008c, 0x216e: 0x008c, 0x216f: 0x008c, + 0x2170: 0x008c, 0x2171: 0x008c, 0x2172: 0x008c, 0x2173: 0x008c, 0x2174: 0x008c, 0x2175: 0x008c, + 0x2176: 0x008c, 0x2177: 0x008c, 0x2178: 0x008c, 0x2179: 0x008c, 0x217a: 0x008c, 0x217b: 0x008c, + 0x217c: 0x008c, 0x217d: 0x008c, 0x217e: 0x008c, 0x217f: 0x008c, + // Block 0x86, offset 0x2180 + 0x2180: 0x008c, 0x2181: 0x008c, 0x2182: 0x008c, 0x2183: 0x008c, 0x2184: 0x008c, 0x2185: 0x008c, + 0x2186: 0x008c, 0x2187: 0x008c, 0x2188: 0x008c, 0x2189: 0x008c, 0x218a: 0x008c, 0x218b: 0x008c, + 0x218c: 0x008c, 0x218d: 0x008c, 0x218e: 0x008c, 0x218f: 0x008c, 0x2190: 0x008c, 0x2191: 0x008c, + 0x2192: 0x008c, 0x2193: 0x008c, 0x2194: 0x008c, 0x2195: 0x008c, + 0x21b0: 0x0080, 0x21b1: 0x0080, 0x21b2: 0x0080, 0x21b3: 0x0080, 0x21b4: 0x0080, 0x21b5: 0x0080, + 0x21b6: 0x0080, 0x21b7: 0x0080, 0x21b8: 0x0080, 0x21b9: 0x0080, 0x21ba: 0x0080, 0x21bb: 0x0080, + // Block 0x87, offset 0x21c0 + 0x21c0: 0x0080, 0x21c1: 0x0080, 0x21c2: 0x0080, 0x21c3: 0x0080, 0x21c4: 0x0080, 0x21c5: 0x00cc, + 0x21c6: 0x00c0, 0x21c7: 0x00cc, 0x21c8: 0x0080, 0x21c9: 0x0080, 0x21ca: 0x0080, 0x21cb: 0x0080, + 0x21cc: 0x0080, 0x21cd: 0x0080, 0x21ce: 0x0080, 0x21cf: 0x0080, 0x21d0: 0x0080, 0x21d1: 0x0080, + 0x21d2: 0x0080, 0x21d3: 0x0080, 0x21d4: 0x0080, 0x21d5: 0x0080, 0x21d6: 0x0080, 0x21d7: 0x0080, + 0x21d8: 0x0080, 0x21d9: 0x0080, 0x21da: 0x0080, 0x21db: 0x0080, 0x21dc: 0x0080, 0x21dd: 0x0080, + 0x21de: 0x0080, 0x21df: 0x0080, 0x21e0: 0x0080, 0x21e1: 0x008c, 0x21e2: 0x008c, 0x21e3: 0x008c, + 0x21e4: 0x008c, 0x21e5: 0x008c, 0x21e6: 0x008c, 0x21e7: 0x008c, 0x21e8: 0x008c, 0x21e9: 0x008c, + 0x21ea: 0x00c3, 0x21eb: 0x00c3, 0x21ec: 0x00c3, 0x21ed: 0x00c3, 0x21ee: 0x0040, 0x21ef: 0x0040, + 0x21f0: 0x0080, 0x21f1: 0x0040, 0x21f2: 0x0040, 0x21f3: 0x0040, 0x21f4: 0x0040, 0x21f5: 0x0040, + 0x21f6: 0x0080, 0x21f7: 0x0080, 0x21f8: 0x008c, 0x21f9: 0x008c, 0x21fa: 0x008c, 0x21fb: 0x0040, + 0x21fc: 0x00c0, 0x21fd: 0x0080, 0x21fe: 0x0080, 0x21ff: 0x0080, + // Block 0x88, offset 0x2200 + 0x2201: 0x00cc, 0x2202: 0x00cc, 0x2203: 0x00cc, 0x2204: 0x00cc, 0x2205: 0x00cc, + 0x2206: 0x00cc, 0x2207: 0x00cc, 0x2208: 0x00cc, 0x2209: 0x00cc, 0x220a: 0x00cc, 0x220b: 0x00cc, + 0x220c: 0x00cc, 0x220d: 0x00cc, 0x220e: 0x00cc, 0x220f: 0x00cc, 0x2210: 0x00cc, 0x2211: 0x00cc, + 0x2212: 0x00cc, 0x2213: 0x00cc, 0x2214: 0x00cc, 0x2215: 0x00cc, 0x2216: 0x00cc, 0x2217: 0x00cc, + 0x2218: 0x00cc, 0x2219: 0x00cc, 0x221a: 0x00cc, 0x221b: 0x00cc, 0x221c: 0x00cc, 0x221d: 0x00cc, + 0x221e: 0x00cc, 0x221f: 0x00cc, 0x2220: 0x00cc, 0x2221: 0x00cc, 0x2222: 0x00cc, 0x2223: 0x00cc, + 0x2224: 0x00cc, 0x2225: 0x00cc, 0x2226: 0x00cc, 0x2227: 0x00cc, 0x2228: 0x00cc, 0x2229: 0x00cc, + 0x222a: 0x00cc, 0x222b: 0x00cc, 0x222c: 0x00cc, 0x222d: 0x00cc, 0x222e: 0x00cc, 0x222f: 0x00cc, + 0x2230: 0x00cc, 0x2231: 0x00cc, 0x2232: 0x00cc, 0x2233: 0x00cc, 0x2234: 0x00cc, 0x2235: 0x00cc, + 0x2236: 0x00cc, 0x2237: 0x00cc, 0x2238: 0x00cc, 0x2239: 0x00cc, 0x223a: 0x00cc, 0x223b: 0x00cc, + 0x223c: 0x00cc, 0x223d: 0x00cc, 0x223e: 0x00cc, 0x223f: 0x00cc, + // Block 0x89, offset 0x2240 + 0x2240: 0x00cc, 0x2241: 0x00cc, 0x2242: 0x00cc, 0x2243: 0x00cc, 0x2244: 0x00cc, 0x2245: 0x00cc, + 0x2246: 0x00cc, 0x2247: 0x00cc, 0x2248: 0x00cc, 0x2249: 0x00cc, 0x224a: 0x00cc, 0x224b: 0x00cc, + 0x224c: 0x00cc, 0x224d: 0x00cc, 0x224e: 0x00cc, 0x224f: 0x00cc, 0x2250: 0x00cc, 0x2251: 0x00cc, + 0x2252: 0x00cc, 0x2253: 0x00cc, 0x2254: 0x00cc, 0x2255: 0x00cc, 0x2256: 0x00cc, + 0x2259: 0x00c3, 0x225a: 0x00c3, 0x225b: 0x0080, 0x225c: 0x0080, 0x225d: 0x00cc, + 0x225e: 0x00cc, 0x225f: 0x008c, 0x2260: 0x0080, 0x2261: 0x00cc, 0x2262: 0x00cc, 0x2263: 0x00cc, + 0x2264: 0x00cc, 0x2265: 0x00cc, 0x2266: 0x00cc, 0x2267: 0x00cc, 0x2268: 0x00cc, 0x2269: 0x00cc, + 0x226a: 0x00cc, 0x226b: 0x00cc, 0x226c: 0x00cc, 0x226d: 0x00cc, 0x226e: 0x00cc, 0x226f: 0x00cc, + 0x2270: 0x00cc, 0x2271: 0x00cc, 0x2272: 0x00cc, 0x2273: 0x00cc, 0x2274: 0x00cc, 0x2275: 0x00cc, + 0x2276: 0x00cc, 0x2277: 0x00cc, 0x2278: 0x00cc, 0x2279: 0x00cc, 0x227a: 0x00cc, 0x227b: 0x00cc, + 0x227c: 0x00cc, 0x227d: 0x00cc, 0x227e: 0x00cc, 0x227f: 0x00cc, + // Block 0x8a, offset 0x2280 + 0x2280: 0x00cc, 0x2281: 0x00cc, 0x2282: 0x00cc, 0x2283: 0x00cc, 0x2284: 0x00cc, 0x2285: 0x00cc, + 0x2286: 0x00cc, 0x2287: 0x00cc, 0x2288: 0x00cc, 0x2289: 0x00cc, 0x228a: 0x00cc, 0x228b: 0x00cc, + 0x228c: 0x00cc, 0x228d: 0x00cc, 0x228e: 0x00cc, 0x228f: 0x00cc, 0x2290: 0x00cc, 0x2291: 0x00cc, + 0x2292: 0x00cc, 0x2293: 0x00cc, 0x2294: 0x00cc, 0x2295: 0x00cc, 0x2296: 0x00cc, 0x2297: 0x00cc, + 0x2298: 0x00cc, 0x2299: 0x00cc, 0x229a: 0x00cc, 0x229b: 0x00cc, 0x229c: 0x00cc, 0x229d: 0x00cc, + 0x229e: 0x00cc, 0x229f: 0x00cc, 0x22a0: 0x00cc, 0x22a1: 0x00cc, 0x22a2: 0x00cc, 0x22a3: 0x00cc, + 0x22a4: 0x00cc, 0x22a5: 0x00cc, 0x22a6: 0x00cc, 0x22a7: 0x00cc, 0x22a8: 0x00cc, 0x22a9: 0x00cc, + 0x22aa: 0x00cc, 0x22ab: 0x00cc, 0x22ac: 0x00cc, 0x22ad: 0x00cc, 0x22ae: 0x00cc, 0x22af: 0x00cc, + 0x22b0: 0x00cc, 0x22b1: 0x00cc, 0x22b2: 0x00cc, 0x22b3: 0x00cc, 0x22b4: 0x00cc, 0x22b5: 0x00cc, + 0x22b6: 0x00cc, 0x22b7: 0x00cc, 0x22b8: 0x00cc, 0x22b9: 0x00cc, 0x22ba: 0x00cc, 0x22bb: 0x00d2, + 0x22bc: 0x00c0, 0x22bd: 0x00cc, 0x22be: 0x00cc, 0x22bf: 0x008c, + // Block 0x8b, offset 0x22c0 + 0x22c5: 0x00c0, + 0x22c6: 0x00c0, 0x22c7: 0x00c0, 0x22c8: 0x00c0, 0x22c9: 0x00c0, 0x22ca: 0x00c0, 0x22cb: 0x00c0, + 0x22cc: 0x00c0, 0x22cd: 0x00c0, 0x22ce: 0x00c0, 0x22cf: 0x00c0, 0x22d0: 0x00c0, 0x22d1: 0x00c0, + 0x22d2: 0x00c0, 0x22d3: 0x00c0, 0x22d4: 0x00c0, 0x22d5: 0x00c0, 0x22d6: 0x00c0, 0x22d7: 0x00c0, + 0x22d8: 0x00c0, 0x22d9: 0x00c0, 0x22da: 0x00c0, 0x22db: 0x00c0, 0x22dc: 0x00c0, 0x22dd: 0x00c0, + 0x22de: 0x00c0, 0x22df: 0x00c0, 0x22e0: 0x00c0, 0x22e1: 0x00c0, 0x22e2: 0x00c0, 0x22e3: 0x00c0, + 0x22e4: 0x00c0, 0x22e5: 0x00c0, 0x22e6: 0x00c0, 0x22e7: 0x00c0, 0x22e8: 0x00c0, 0x22e9: 0x00c0, + 0x22ea: 0x00c0, 0x22eb: 0x00c0, 0x22ec: 0x00c0, 0x22ed: 0x00c0, + 0x22f1: 0x0080, 0x22f2: 0x0080, 0x22f3: 0x0080, 0x22f4: 0x0080, 0x22f5: 0x0080, + 0x22f6: 0x0080, 0x22f7: 0x0080, 0x22f8: 0x0080, 0x22f9: 0x0080, 0x22fa: 0x0080, 0x22fb: 0x0080, + 0x22fc: 0x0080, 0x22fd: 0x0080, 0x22fe: 0x0080, 0x22ff: 0x0080, + // Block 0x8c, offset 0x2300 + 0x2300: 0x0080, 0x2301: 0x0080, 0x2302: 0x0080, 0x2303: 0x0080, 0x2304: 0x0080, 0x2305: 0x0080, + 0x2306: 0x0080, 0x2307: 0x0080, 0x2308: 0x0080, 0x2309: 0x0080, 0x230a: 0x0080, 0x230b: 0x0080, + 0x230c: 0x0080, 0x230d: 0x0080, 0x230e: 0x0080, 0x230f: 0x0080, 0x2310: 0x0080, 0x2311: 0x0080, + 0x2312: 0x0080, 0x2313: 0x0080, 0x2314: 0x0080, 0x2315: 0x0080, 0x2316: 0x0080, 0x2317: 0x0080, + 0x2318: 0x0080, 0x2319: 0x0080, 0x231a: 0x0080, 0x231b: 0x0080, 0x231c: 0x0080, 0x231d: 0x0080, + 0x231e: 0x0080, 0x231f: 0x0080, 0x2320: 0x0080, 0x2321: 0x0080, 0x2322: 0x0080, 0x2323: 0x0080, + 0x2324: 0x0040, 0x2325: 0x0080, 0x2326: 0x0080, 0x2327: 0x0080, 0x2328: 0x0080, 0x2329: 0x0080, + 0x232a: 0x0080, 0x232b: 0x0080, 0x232c: 0x0080, 0x232d: 0x0080, 0x232e: 0x0080, 0x232f: 0x0080, + 0x2330: 0x0080, 0x2331: 0x0080, 0x2332: 0x0080, 0x2333: 0x0080, 0x2334: 0x0080, 0x2335: 0x0080, + 0x2336: 0x0080, 0x2337: 0x0080, 0x2338: 0x0080, 0x2339: 0x0080, 0x233a: 0x0080, 0x233b: 0x0080, + 0x233c: 0x0080, 0x233d: 0x0080, 0x233e: 0x0080, 0x233f: 0x0080, + // Block 0x8d, offset 0x2340 + 0x2340: 0x0080, 0x2341: 0x0080, 0x2342: 0x0080, 0x2343: 0x0080, 0x2344: 0x0080, 0x2345: 0x0080, + 0x2346: 0x0080, 0x2347: 0x0080, 0x2348: 0x0080, 0x2349: 0x0080, 0x234a: 0x0080, 0x234b: 0x0080, + 0x234c: 0x0080, 0x234d: 0x0080, 0x234e: 0x0080, 0x2350: 0x0080, 0x2351: 0x0080, + 0x2352: 0x0080, 0x2353: 0x0080, 0x2354: 0x0080, 0x2355: 0x0080, 0x2356: 0x0080, 0x2357: 0x0080, + 0x2358: 0x0080, 0x2359: 0x0080, 0x235a: 0x0080, 0x235b: 0x0080, 0x235c: 0x0080, 0x235d: 0x0080, + 0x235e: 0x0080, 0x235f: 0x0080, 0x2360: 0x00c0, 0x2361: 0x00c0, 0x2362: 0x00c0, 0x2363: 0x00c0, + 0x2364: 0x00c0, 0x2365: 0x00c0, 0x2366: 0x00c0, 0x2367: 0x00c0, 0x2368: 0x00c0, 0x2369: 0x00c0, + 0x236a: 0x00c0, 0x236b: 0x00c0, 0x236c: 0x00c0, 0x236d: 0x00c0, 0x236e: 0x00c0, 0x236f: 0x00c0, + 0x2370: 0x00c0, 0x2371: 0x00c0, 0x2372: 0x00c0, 0x2373: 0x00c0, 0x2374: 0x00c0, 0x2375: 0x00c0, + 0x2376: 0x00c0, 0x2377: 0x00c0, 0x2378: 0x00c0, 0x2379: 0x00c0, 0x237a: 0x00c0, + // Block 0x8e, offset 0x2380 + 0x2380: 0x0080, 0x2381: 0x0080, 0x2382: 0x0080, 0x2383: 0x0080, 0x2384: 0x0080, 0x2385: 0x0080, + 0x2386: 0x0080, 0x2387: 0x0080, 0x2388: 0x0080, 0x2389: 0x0080, 0x238a: 0x0080, 0x238b: 0x0080, + 0x238c: 0x0080, 0x238d: 0x0080, 0x238e: 0x0080, 0x238f: 0x0080, 0x2390: 0x0080, 0x2391: 0x0080, + 0x2392: 0x0080, 0x2393: 0x0080, 0x2394: 0x0080, 0x2395: 0x0080, 0x2396: 0x0080, 0x2397: 0x0080, + 0x2398: 0x0080, 0x2399: 0x0080, 0x239a: 0x0080, 0x239b: 0x0080, 0x239c: 0x0080, 0x239d: 0x0080, + 0x239e: 0x0080, 0x239f: 0x0080, 0x23a0: 0x0080, 0x23a1: 0x0080, 0x23a2: 0x0080, 0x23a3: 0x0080, + 0x23b0: 0x00cc, 0x23b1: 0x00cc, 0x23b2: 0x00cc, 0x23b3: 0x00cc, 0x23b4: 0x00cc, 0x23b5: 0x00cc, + 0x23b6: 0x00cc, 0x23b7: 0x00cc, 0x23b8: 0x00cc, 0x23b9: 0x00cc, 0x23ba: 0x00cc, 0x23bb: 0x00cc, + 0x23bc: 0x00cc, 0x23bd: 0x00cc, 0x23be: 0x00cc, 0x23bf: 0x00cc, + // Block 0x8f, offset 0x23c0 + 0x23c0: 0x0080, 0x23c1: 0x0080, 0x23c2: 0x0080, 0x23c3: 0x0080, 0x23c4: 0x0080, 0x23c5: 0x0080, + 0x23c6: 0x0080, 0x23c7: 0x0080, 0x23c8: 0x0080, 0x23c9: 0x0080, 0x23ca: 0x0080, 0x23cb: 0x0080, + 0x23cc: 0x0080, 0x23cd: 0x0080, 0x23ce: 0x0080, 0x23cf: 0x0080, 0x23d0: 0x0080, 0x23d1: 0x0080, + 0x23d2: 0x0080, 0x23d3: 0x0080, 0x23d4: 0x0080, 0x23d5: 0x0080, 0x23d6: 0x0080, 0x23d7: 0x0080, + 0x23d8: 0x0080, 0x23d9: 0x0080, 0x23da: 0x0080, 0x23db: 0x0080, 0x23dc: 0x0080, 0x23dd: 0x0080, + 0x23de: 0x0080, 0x23e0: 0x0080, 0x23e1: 0x0080, 0x23e2: 0x0080, 0x23e3: 0x0080, + 0x23e4: 0x0080, 0x23e5: 0x0080, 0x23e6: 0x0080, 0x23e7: 0x0080, 0x23e8: 0x0080, 0x23e9: 0x0080, + 0x23ea: 0x0080, 0x23eb: 0x0080, 0x23ec: 0x0080, 0x23ed: 0x0080, 0x23ee: 0x0080, 0x23ef: 0x0080, + 0x23f0: 0x0080, 0x23f1: 0x0080, 0x23f2: 0x0080, 0x23f3: 0x0080, 0x23f4: 0x0080, 0x23f5: 0x0080, + 0x23f6: 0x0080, 0x23f7: 0x0080, 0x23f8: 0x0080, 0x23f9: 0x0080, 0x23fa: 0x0080, 0x23fb: 0x0080, + 0x23fc: 0x0080, 0x23fd: 0x0080, 0x23fe: 0x0080, 0x23ff: 0x0080, + // Block 0x90, offset 0x2400 + 0x2400: 0x0080, 0x2401: 0x0080, 0x2402: 0x0080, 0x2403: 0x0080, 0x2404: 0x0080, 0x2405: 0x0080, + 0x2406: 0x0080, 0x2407: 0x0080, 0x2408: 0x0080, 0x2409: 0x0080, 0x240a: 0x0080, 0x240b: 0x0080, + 0x240c: 0x0080, 0x240d: 0x0080, 0x240e: 0x0080, 0x240f: 0x0080, 0x2410: 0x008c, 0x2411: 0x008c, + 0x2412: 0x008c, 0x2413: 0x008c, 0x2414: 0x008c, 0x2415: 0x008c, 0x2416: 0x008c, 0x2417: 0x008c, + 0x2418: 0x008c, 0x2419: 0x008c, 0x241a: 0x008c, 0x241b: 0x008c, 0x241c: 0x008c, 0x241d: 0x008c, + 0x241e: 0x008c, 0x241f: 0x008c, 0x2420: 0x008c, 0x2421: 0x008c, 0x2422: 0x008c, 0x2423: 0x008c, + 0x2424: 0x008c, 0x2425: 0x008c, 0x2426: 0x008c, 0x2427: 0x008c, 0x2428: 0x008c, 0x2429: 0x008c, + 0x242a: 0x008c, 0x242b: 0x008c, 0x242c: 0x008c, 0x242d: 0x008c, 0x242e: 0x008c, 0x242f: 0x008c, + 0x2430: 0x008c, 0x2431: 0x008c, 0x2432: 0x008c, 0x2433: 0x008c, 0x2434: 0x008c, 0x2435: 0x008c, + 0x2436: 0x008c, 0x2437: 0x008c, 0x2438: 0x008c, 0x2439: 0x008c, 0x243a: 0x008c, 0x243b: 0x008c, + 0x243c: 0x008c, 0x243d: 0x008c, 0x243e: 0x008c, + // Block 0x91, offset 0x2440 + 0x2440: 0x008c, 0x2441: 0x008c, 0x2442: 0x008c, 0x2443: 0x008c, 0x2444: 0x008c, 0x2445: 0x008c, + 0x2446: 0x008c, 0x2447: 0x008c, 0x2448: 0x008c, 0x2449: 0x008c, 0x244a: 0x008c, 0x244b: 0x008c, + 0x244c: 0x008c, 0x244d: 0x008c, 0x244e: 0x008c, 0x244f: 0x008c, 0x2450: 0x008c, 0x2451: 0x008c, + 0x2452: 0x008c, 0x2453: 0x008c, 0x2454: 0x008c, 0x2455: 0x008c, 0x2456: 0x008c, 0x2457: 0x008c, + 0x2458: 0x0080, 0x2459: 0x0080, 0x245a: 0x0080, 0x245b: 0x0080, 0x245c: 0x0080, 0x245d: 0x0080, + 0x245e: 0x0080, 0x245f: 0x0080, 0x2460: 0x0080, 0x2461: 0x0080, 0x2462: 0x0080, 0x2463: 0x0080, + 0x2464: 0x0080, 0x2465: 0x0080, 0x2466: 0x0080, 0x2467: 0x0080, 0x2468: 0x0080, 0x2469: 0x0080, + 0x246a: 0x0080, 0x246b: 0x0080, 0x246c: 0x0080, 0x246d: 0x0080, 0x246e: 0x0080, 0x246f: 0x0080, + 0x2470: 0x0080, 0x2471: 0x0080, 0x2472: 0x0080, 0x2473: 0x0080, 0x2474: 0x0080, 0x2475: 0x0080, + 0x2476: 0x0080, 0x2477: 0x0080, 0x2478: 0x0080, 0x2479: 0x0080, 0x247a: 0x0080, 0x247b: 0x0080, + 0x247c: 0x0080, 0x247d: 0x0080, 0x247e: 0x0080, 0x247f: 0x0080, + // Block 0x92, offset 0x2480 + 0x2480: 0x00cc, 0x2481: 0x00cc, 0x2482: 0x00cc, 0x2483: 0x00cc, 0x2484: 0x00cc, 0x2485: 0x00cc, + 0x2486: 0x00cc, 0x2487: 0x00cc, 0x2488: 0x00cc, 0x2489: 0x00cc, 0x248a: 0x00cc, 0x248b: 0x00cc, + 0x248c: 0x00cc, 0x248d: 0x00cc, 0x248e: 0x00cc, 0x248f: 0x00cc, 0x2490: 0x00cc, 0x2491: 0x00cc, + 0x2492: 0x00cc, 0x2493: 0x00cc, 0x2494: 0x00cc, 0x2495: 0x00cc, 0x2496: 0x00cc, 0x2497: 0x00cc, + 0x2498: 0x00cc, 0x2499: 0x00cc, 0x249a: 0x00cc, 0x249b: 0x00cc, 0x249c: 0x00cc, 0x249d: 0x00cc, + 0x249e: 0x00cc, 0x249f: 0x00cc, 0x24a0: 0x00cc, 0x24a1: 0x00cc, 0x24a2: 0x00cc, 0x24a3: 0x00cc, + 0x24a4: 0x00cc, 0x24a5: 0x00cc, 0x24a6: 0x00cc, 0x24a7: 0x00cc, 0x24a8: 0x00cc, 0x24a9: 0x00cc, + 0x24aa: 0x00cc, 0x24ab: 0x00cc, 0x24ac: 0x00cc, 0x24ad: 0x00cc, 0x24ae: 0x00cc, 0x24af: 0x00cc, + 0x24b0: 0x00cc, 0x24b1: 0x00cc, 0x24b2: 0x00cc, 0x24b3: 0x00cc, 0x24b4: 0x00cc, 0x24b5: 0x00cc, + 0x24b6: 0x00cc, 0x24b7: 0x00cc, 0x24b8: 0x00cc, 0x24b9: 0x00cc, 0x24ba: 0x00cc, 0x24bb: 0x00cc, + 0x24bc: 0x00cc, 0x24bd: 0x00cc, 0x24be: 0x00cc, 0x24bf: 0x00cc, + // Block 0x93, offset 0x24c0 + 0x24c0: 0x00cc, 0x24c1: 0x00cc, 0x24c2: 0x00cc, 0x24c3: 0x00cc, 0x24c4: 0x00cc, 0x24c5: 0x00cc, + 0x24c6: 0x00cc, 0x24c7: 0x00cc, 0x24c8: 0x00cc, 0x24c9: 0x00cc, 0x24ca: 0x00cc, 0x24cb: 0x00cc, + 0x24cc: 0x00cc, 0x24cd: 0x00cc, 0x24ce: 0x00cc, 0x24cf: 0x00cc, 0x24d0: 0x00cc, 0x24d1: 0x00cc, + 0x24d2: 0x00cc, 0x24d3: 0x00cc, 0x24d4: 0x00cc, 0x24d5: 0x00cc, 0x24d6: 0x00cc, 0x24d7: 0x00cc, + 0x24d8: 0x00cc, 0x24d9: 0x00cc, 0x24da: 0x00cc, 0x24db: 0x00cc, 0x24dc: 0x00cc, 0x24dd: 0x00cc, + 0x24de: 0x00cc, 0x24df: 0x00cc, 0x24e0: 0x00cc, 0x24e1: 0x00cc, 0x24e2: 0x00cc, 0x24e3: 0x00cc, + 0x24e4: 0x00cc, 0x24e5: 0x00cc, 0x24e6: 0x00cc, 0x24e7: 0x00cc, 0x24e8: 0x00cc, 0x24e9: 0x00cc, + 0x24ea: 0x00cc, 0x24eb: 0x00cc, 0x24ec: 0x00cc, 0x24ed: 0x00cc, 0x24ee: 0x00cc, 0x24ef: 0x00cc, + 0x24f0: 0x00cc, 0x24f1: 0x00cc, 0x24f2: 0x00cc, 0x24f3: 0x00cc, 0x24f4: 0x00cc, 0x24f5: 0x00cc, + // Block 0x94, offset 0x2500 + 0x2500: 0x00cc, 0x2501: 0x00cc, 0x2502: 0x00cc, 0x2503: 0x00cc, 0x2504: 0x00cc, 0x2505: 0x00cc, + 0x2506: 0x00cc, 0x2507: 0x00cc, 0x2508: 0x00cc, 0x2509: 0x00cc, 0x250a: 0x00cc, 0x250b: 0x00cc, + 0x250c: 0x00cc, 0x250d: 0x00cc, 0x250e: 0x00cc, 0x250f: 0x00cc, 0x2510: 0x00cc, 0x2511: 0x00cc, + 0x2512: 0x00cc, 0x2513: 0x00cc, 0x2514: 0x00cc, 0x2515: 0x00cc, + // Block 0x95, offset 0x2540 + 0x2540: 0x00c0, 0x2541: 0x00c0, 0x2542: 0x00c0, 0x2543: 0x00c0, 0x2544: 0x00c0, 0x2545: 0x00c0, + 0x2546: 0x00c0, 0x2547: 0x00c0, 0x2548: 0x00c0, 0x2549: 0x00c0, 0x254a: 0x00c0, 0x254b: 0x00c0, + 0x254c: 0x00c0, 0x2550: 0x0080, 0x2551: 0x0080, + 0x2552: 0x0080, 0x2553: 0x0080, 0x2554: 0x0080, 0x2555: 0x0080, 0x2556: 0x0080, 0x2557: 0x0080, + 0x2558: 0x0080, 0x2559: 0x0080, 0x255a: 0x0080, 0x255b: 0x0080, 0x255c: 0x0080, 0x255d: 0x0080, + 0x255e: 0x0080, 0x255f: 0x0080, 0x2560: 0x0080, 0x2561: 0x0080, 0x2562: 0x0080, 0x2563: 0x0080, + 0x2564: 0x0080, 0x2565: 0x0080, 0x2566: 0x0080, 0x2567: 0x0080, 0x2568: 0x0080, 0x2569: 0x0080, + 0x256a: 0x0080, 0x256b: 0x0080, 0x256c: 0x0080, 0x256d: 0x0080, 0x256e: 0x0080, 0x256f: 0x0080, + 0x2570: 0x0080, 0x2571: 0x0080, 0x2572: 0x0080, 0x2573: 0x0080, 0x2574: 0x0080, 0x2575: 0x0080, + 0x2576: 0x0080, 0x2577: 0x0080, 0x2578: 0x0080, 0x2579: 0x0080, 0x257a: 0x0080, 0x257b: 0x0080, + 0x257c: 0x0080, 0x257d: 0x0080, 0x257e: 0x0080, 0x257f: 0x0080, + // Block 0x96, offset 0x2580 + 0x2580: 0x0080, 0x2581: 0x0080, 0x2582: 0x0080, 0x2583: 0x0080, 0x2584: 0x0080, 0x2585: 0x0080, + 0x2586: 0x0080, + 0x2590: 0x00c0, 0x2591: 0x00c0, + 0x2592: 0x00c0, 0x2593: 0x00c0, 0x2594: 0x00c0, 0x2595: 0x00c0, 0x2596: 0x00c0, 0x2597: 0x00c0, + 0x2598: 0x00c0, 0x2599: 0x00c0, 0x259a: 0x00c0, 0x259b: 0x00c0, 0x259c: 0x00c0, 0x259d: 0x00c0, + 0x259e: 0x00c0, 0x259f: 0x00c0, 0x25a0: 0x00c0, 0x25a1: 0x00c0, 0x25a2: 0x00c0, 0x25a3: 0x00c0, + 0x25a4: 0x00c0, 0x25a5: 0x00c0, 0x25a6: 0x00c0, 0x25a7: 0x00c0, 0x25a8: 0x00c0, 0x25a9: 0x00c0, + 0x25aa: 0x00c0, 0x25ab: 0x00c0, 0x25ac: 0x00c0, 0x25ad: 0x00c0, 0x25ae: 0x00c0, 0x25af: 0x00c0, + 0x25b0: 0x00c0, 0x25b1: 0x00c0, 0x25b2: 0x00c0, 0x25b3: 0x00c0, 0x25b4: 0x00c0, 0x25b5: 0x00c0, + 0x25b6: 0x00c0, 0x25b7: 0x00c0, 0x25b8: 0x00c0, 0x25b9: 0x00c0, 0x25ba: 0x00c0, 0x25bb: 0x00c0, + 0x25bc: 0x00c0, 0x25bd: 0x00c0, 0x25be: 0x0080, 0x25bf: 0x0080, + // Block 0x97, offset 0x25c0 + 0x25c0: 0x00c0, 0x25c1: 0x00c0, 0x25c2: 0x00c0, 0x25c3: 0x00c0, 0x25c4: 0x00c0, 0x25c5: 0x00c0, + 0x25c6: 0x00c0, 0x25c7: 0x00c0, 0x25c8: 0x00c0, 0x25c9: 0x00c0, 0x25ca: 0x00c0, 0x25cb: 0x00c0, + 0x25cc: 0x00c0, 0x25cd: 0x0080, 0x25ce: 0x0080, 0x25cf: 0x0080, 0x25d0: 0x00c0, 0x25d1: 0x00c0, + 0x25d2: 0x00c0, 0x25d3: 0x00c0, 0x25d4: 0x00c0, 0x25d5: 0x00c0, 0x25d6: 0x00c0, 0x25d7: 0x00c0, + 0x25d8: 0x00c0, 0x25d9: 0x00c0, 0x25da: 0x00c0, 0x25db: 0x00c0, 0x25dc: 0x00c0, 0x25dd: 0x00c0, + 0x25de: 0x00c0, 0x25df: 0x00c0, 0x25e0: 0x00c0, 0x25e1: 0x00c0, 0x25e2: 0x00c0, 0x25e3: 0x00c0, + 0x25e4: 0x00c0, 0x25e5: 0x00c0, 0x25e6: 0x00c0, 0x25e7: 0x00c0, 0x25e8: 0x00c0, 0x25e9: 0x00c0, + 0x25ea: 0x00c0, 0x25eb: 0x00c0, + // Block 0x98, offset 0x2600 + 0x2600: 0x00c0, 0x2601: 0x00c0, 0x2602: 0x00c0, 0x2603: 0x00c0, 0x2604: 0x00c0, 0x2605: 0x00c0, + 0x2606: 0x00c0, 0x2607: 0x00c0, 0x2608: 0x00c0, 0x2609: 0x00c0, 0x260a: 0x00c0, 0x260b: 0x00c0, + 0x260c: 0x00c0, 0x260d: 0x00c0, 0x260e: 0x00c0, 0x260f: 0x00c0, 0x2610: 0x00c0, 0x2611: 0x00c0, + 0x2612: 0x00c0, 0x2613: 0x00c0, 0x2614: 0x00c0, 0x2615: 0x00c0, 0x2616: 0x00c0, 0x2617: 0x00c0, + 0x2618: 0x00c0, 0x2619: 0x00c0, 0x261a: 0x00c0, 0x261b: 0x00c0, 0x261c: 0x00c0, 0x261d: 0x00c0, + 0x261e: 0x00c0, 0x261f: 0x00c0, 0x2620: 0x00c0, 0x2621: 0x00c0, 0x2622: 0x00c0, 0x2623: 0x00c0, + 0x2624: 0x00c0, 0x2625: 0x00c0, 0x2626: 0x00c0, 0x2627: 0x00c0, 0x2628: 0x00c0, 0x2629: 0x00c0, + 0x262a: 0x00c0, 0x262b: 0x00c0, 0x262c: 0x00c0, 0x262d: 0x00c0, 0x262e: 0x00c0, 0x262f: 0x00c3, + 0x2630: 0x0083, 0x2631: 0x0083, 0x2632: 0x0083, 0x2633: 0x0080, 0x2634: 0x00c3, 0x2635: 0x00c3, + 0x2636: 0x00c3, 0x2637: 0x00c3, 0x2638: 0x00c3, 0x2639: 0x00c3, 0x263a: 0x00c3, 0x263b: 0x00c3, + 0x263c: 0x00c3, 0x263d: 0x00c3, 0x263e: 0x0080, 0x263f: 0x00c0, + // Block 0x99, offset 0x2640 + 0x2640: 0x00c0, 0x2641: 0x00c0, 0x2642: 0x00c0, 0x2643: 0x00c0, 0x2644: 0x00c0, 0x2645: 0x00c0, + 0x2646: 0x00c0, 0x2647: 0x00c0, 0x2648: 0x00c0, 0x2649: 0x00c0, 0x264a: 0x00c0, 0x264b: 0x00c0, + 0x264c: 0x00c0, 0x264d: 0x00c0, 0x264e: 0x00c0, 0x264f: 0x00c0, 0x2650: 0x00c0, 0x2651: 0x00c0, + 0x2652: 0x00c0, 0x2653: 0x00c0, 0x2654: 0x00c0, 0x2655: 0x00c0, 0x2656: 0x00c0, 0x2657: 0x00c0, + 0x2658: 0x00c0, 0x2659: 0x00c0, 0x265a: 0x00c0, 0x265b: 0x00c0, 0x265c: 0x0080, 0x265d: 0x0080, + 0x265e: 0x00c3, 0x265f: 0x00c3, 0x2660: 0x00c0, 0x2661: 0x00c0, 0x2662: 0x00c0, 0x2663: 0x00c0, + 0x2664: 0x00c0, 0x2665: 0x00c0, 0x2666: 0x00c0, 0x2667: 0x00c0, 0x2668: 0x00c0, 0x2669: 0x00c0, + 0x266a: 0x00c0, 0x266b: 0x00c0, 0x266c: 0x00c0, 0x266d: 0x00c0, 0x266e: 0x00c0, 0x266f: 0x00c0, + 0x2670: 0x00c0, 0x2671: 0x00c0, 0x2672: 0x00c0, 0x2673: 0x00c0, 0x2674: 0x00c0, 0x2675: 0x00c0, + 0x2676: 0x00c0, 0x2677: 0x00c0, 0x2678: 0x00c0, 0x2679: 0x00c0, 0x267a: 0x00c0, 0x267b: 0x00c0, + 0x267c: 0x00c0, 0x267d: 0x00c0, 0x267e: 0x00c0, 0x267f: 0x00c0, + // Block 0x9a, offset 0x2680 + 0x2680: 0x00c0, 0x2681: 0x00c0, 0x2682: 0x00c0, 0x2683: 0x00c0, 0x2684: 0x00c0, 0x2685: 0x00c0, + 0x2686: 0x00c0, 0x2687: 0x00c0, 0x2688: 0x00c0, 0x2689: 0x00c0, 0x268a: 0x00c0, 0x268b: 0x00c0, + 0x268c: 0x00c0, 0x268d: 0x00c0, 0x268e: 0x00c0, 0x268f: 0x00c0, 0x2690: 0x00c0, 0x2691: 0x00c0, + 0x2692: 0x00c0, 0x2693: 0x00c0, 0x2694: 0x00c0, 0x2695: 0x00c0, 0x2696: 0x00c0, 0x2697: 0x00c0, + 0x2698: 0x00c0, 0x2699: 0x00c0, 0x269a: 0x00c0, 0x269b: 0x00c0, 0x269c: 0x00c0, 0x269d: 0x00c0, + 0x269e: 0x00c0, 0x269f: 0x00c0, 0x26a0: 0x00c0, 0x26a1: 0x00c0, 0x26a2: 0x00c0, 0x26a3: 0x00c0, + 0x26a4: 0x00c0, 0x26a5: 0x00c0, 0x26a6: 0x0080, 0x26a7: 0x0080, 0x26a8: 0x0080, 0x26a9: 0x0080, + 0x26aa: 0x0080, 0x26ab: 0x0080, 0x26ac: 0x0080, 0x26ad: 0x0080, 0x26ae: 0x0080, 0x26af: 0x0080, + 0x26b0: 0x00c3, 0x26b1: 0x00c3, 0x26b2: 0x0080, 0x26b3: 0x0080, 0x26b4: 0x0080, 0x26b5: 0x0080, + 0x26b6: 0x0080, 0x26b7: 0x0080, + // Block 0x9b, offset 0x26c0 + 0x26c0: 0x0080, 0x26c1: 0x0080, 0x26c2: 0x0080, 0x26c3: 0x0080, 0x26c4: 0x0080, 0x26c5: 0x0080, + 0x26c6: 0x0080, 0x26c7: 0x0080, 0x26c8: 0x0080, 0x26c9: 0x0080, 0x26ca: 0x0080, 0x26cb: 0x0080, + 0x26cc: 0x0080, 0x26cd: 0x0080, 0x26ce: 0x0080, 0x26cf: 0x0080, 0x26d0: 0x0080, 0x26d1: 0x0080, + 0x26d2: 0x0080, 0x26d3: 0x0080, 0x26d4: 0x0080, 0x26d5: 0x0080, 0x26d6: 0x0080, 0x26d7: 0x00c0, + 0x26d8: 0x00c0, 0x26d9: 0x00c0, 0x26da: 0x00c0, 0x26db: 0x00c0, 0x26dc: 0x00c0, 0x26dd: 0x00c0, + 0x26de: 0x00c0, 0x26df: 0x00c0, 0x26e0: 0x0080, 0x26e1: 0x0080, 0x26e2: 0x00c0, 0x26e3: 0x00c0, + 0x26e4: 0x00c0, 0x26e5: 0x00c0, 0x26e6: 0x00c0, 0x26e7: 0x00c0, 0x26e8: 0x00c0, 0x26e9: 0x00c0, + 0x26ea: 0x00c0, 0x26eb: 0x00c0, 0x26ec: 0x00c0, 0x26ed: 0x00c0, 0x26ee: 0x00c0, 0x26ef: 0x00c0, + 0x26f0: 0x00c0, 0x26f1: 0x00c0, 0x26f2: 0x00c0, 0x26f3: 0x00c0, 0x26f4: 0x00c0, 0x26f5: 0x00c0, + 0x26f6: 0x00c0, 0x26f7: 0x00c0, 0x26f8: 0x00c0, 0x26f9: 0x00c0, 0x26fa: 0x00c0, 0x26fb: 0x00c0, + 0x26fc: 0x00c0, 0x26fd: 0x00c0, 0x26fe: 0x00c0, 0x26ff: 0x00c0, + // Block 0x9c, offset 0x2700 + 0x2700: 0x00c0, 0x2701: 0x00c0, 0x2702: 0x00c0, 0x2703: 0x00c0, 0x2704: 0x00c0, 0x2705: 0x00c0, + 0x2706: 0x00c0, 0x2707: 0x00c0, 0x2708: 0x00c0, 0x2709: 0x00c0, 0x270a: 0x00c0, 0x270b: 0x00c0, + 0x270c: 0x00c0, 0x270d: 0x00c0, 0x270e: 0x00c0, 0x270f: 0x00c0, 0x2710: 0x00c0, 0x2711: 0x00c0, + 0x2712: 0x00c0, 0x2713: 0x00c0, 0x2714: 0x00c0, 0x2715: 0x00c0, 0x2716: 0x00c0, 0x2717: 0x00c0, + 0x2718: 0x00c0, 0x2719: 0x00c0, 0x271a: 0x00c0, 0x271b: 0x00c0, 0x271c: 0x00c0, 0x271d: 0x00c0, + 0x271e: 0x00c0, 0x271f: 0x00c0, 0x2720: 0x00c0, 0x2721: 0x00c0, 0x2722: 0x00c0, 0x2723: 0x00c0, + 0x2724: 0x00c0, 0x2725: 0x00c0, 0x2726: 0x00c0, 0x2727: 0x00c0, 0x2728: 0x00c0, 0x2729: 0x00c0, + 0x272a: 0x00c0, 0x272b: 0x00c0, 0x272c: 0x00c0, 0x272d: 0x00c0, 0x272e: 0x00c0, 0x272f: 0x00c0, + 0x2730: 0x0080, 0x2731: 0x00c0, 0x2732: 0x00c0, 0x2733: 0x00c0, 0x2734: 0x00c0, 0x2735: 0x00c0, + 0x2736: 0x00c0, 0x2737: 0x00c0, 0x2738: 0x00c0, 0x2739: 0x00c0, 0x273a: 0x00c0, 0x273b: 0x00c0, + 0x273c: 0x00c0, 0x273d: 0x00c0, 0x273e: 0x00c0, 0x273f: 0x00c0, + // Block 0x9d, offset 0x2740 + 0x2740: 0x00c0, 0x2741: 0x00c0, 0x2742: 0x00c0, 0x2743: 0x00c0, 0x2744: 0x00c0, 0x2745: 0x00c0, + 0x2746: 0x00c0, 0x2747: 0x00c0, 0x2748: 0x00c0, 0x2749: 0x0080, 0x274a: 0x0080, 0x274b: 0x00c0, + 0x274c: 0x00c0, 0x274d: 0x00c0, 0x274e: 0x00c0, 0x274f: 0x00c0, 0x2750: 0x00c0, 0x2751: 0x00c0, + 0x2752: 0x00c0, 0x2753: 0x00c0, 0x2754: 0x00c0, 0x2755: 0x00c0, 0x2756: 0x00c0, 0x2757: 0x00c0, + 0x2758: 0x00c0, 0x2759: 0x00c0, 0x275a: 0x00c0, 0x275b: 0x00c0, 0x275c: 0x00c0, 0x275d: 0x00c0, + 0x275e: 0x00c0, 0x275f: 0x00c0, 0x2760: 0x00c0, 0x2761: 0x00c0, 0x2762: 0x00c0, 0x2763: 0x00c0, + 0x2764: 0x00c0, 0x2765: 0x00c0, 0x2766: 0x00c0, 0x2767: 0x00c0, 0x2768: 0x00c0, 0x2769: 0x00c0, + 0x276a: 0x00c0, 0x276b: 0x00c0, 0x276c: 0x00c0, 0x276d: 0x00c0, 0x276e: 0x00c0, + 0x2770: 0x00c0, 0x2771: 0x00c0, 0x2772: 0x00c0, 0x2773: 0x00c0, 0x2774: 0x00c0, 0x2775: 0x00c0, + 0x2776: 0x00c0, 0x2777: 0x00c0, + // Block 0x9e, offset 0x2780 + 0x27b7: 0x00c0, 0x27b8: 0x0080, 0x27b9: 0x0080, 0x27ba: 0x00c0, 0x27bb: 0x00c0, + 0x27bc: 0x00c0, 0x27bd: 0x00c0, 0x27be: 0x00c0, 0x27bf: 0x00c0, + // Block 0x9f, offset 0x27c0 + 0x27c0: 0x00c0, 0x27c1: 0x00c0, 0x27c2: 0x00c3, 0x27c3: 0x00c0, 0x27c4: 0x00c0, 0x27c5: 0x00c0, + 0x27c6: 0x00c6, 0x27c7: 0x00c0, 0x27c8: 0x00c0, 0x27c9: 0x00c0, 0x27ca: 0x00c0, 0x27cb: 0x00c3, + 0x27cc: 0x00c0, 0x27cd: 0x00c0, 0x27ce: 0x00c0, 0x27cf: 0x00c0, 0x27d0: 0x00c0, 0x27d1: 0x00c0, + 0x27d2: 0x00c0, 0x27d3: 0x00c0, 0x27d4: 0x00c0, 0x27d5: 0x00c0, 0x27d6: 0x00c0, 0x27d7: 0x00c0, + 0x27d8: 0x00c0, 0x27d9: 0x00c0, 0x27da: 0x00c0, 0x27db: 0x00c0, 0x27dc: 0x00c0, 0x27dd: 0x00c0, + 0x27de: 0x00c0, 0x27df: 0x00c0, 0x27e0: 0x00c0, 0x27e1: 0x00c0, 0x27e2: 0x00c0, 0x27e3: 0x00c0, + 0x27e4: 0x00c0, 0x27e5: 0x00c3, 0x27e6: 0x00c3, 0x27e7: 0x00c0, 0x27e8: 0x0080, 0x27e9: 0x0080, + 0x27ea: 0x0080, 0x27eb: 0x0080, + 0x27f0: 0x0080, 0x27f1: 0x0080, 0x27f2: 0x0080, 0x27f3: 0x0080, 0x27f4: 0x0080, 0x27f5: 0x0080, + 0x27f6: 0x0080, 0x27f7: 0x0080, 0x27f8: 0x0080, 0x27f9: 0x0080, + // Block 0xa0, offset 0x2800 + 0x2800: 0x00c2, 0x2801: 0x00c2, 0x2802: 0x00c2, 0x2803: 0x00c2, 0x2804: 0x00c2, 0x2805: 0x00c2, + 0x2806: 0x00c2, 0x2807: 0x00c2, 0x2808: 0x00c2, 0x2809: 0x00c2, 0x280a: 0x00c2, 0x280b: 0x00c2, + 0x280c: 0x00c2, 0x280d: 0x00c2, 0x280e: 0x00c2, 0x280f: 0x00c2, 0x2810: 0x00c2, 0x2811: 0x00c2, + 0x2812: 0x00c2, 0x2813: 0x00c2, 0x2814: 0x00c2, 0x2815: 0x00c2, 0x2816: 0x00c2, 0x2817: 0x00c2, + 0x2818: 0x00c2, 0x2819: 0x00c2, 0x281a: 0x00c2, 0x281b: 0x00c2, 0x281c: 0x00c2, 0x281d: 0x00c2, + 0x281e: 0x00c2, 0x281f: 0x00c2, 0x2820: 0x00c2, 0x2821: 0x00c2, 0x2822: 0x00c2, 0x2823: 0x00c2, + 0x2824: 0x00c2, 0x2825: 0x00c2, 0x2826: 0x00c2, 0x2827: 0x00c2, 0x2828: 0x00c2, 0x2829: 0x00c2, + 0x282a: 0x00c2, 0x282b: 0x00c2, 0x282c: 0x00c2, 0x282d: 0x00c2, 0x282e: 0x00c2, 0x282f: 0x00c2, + 0x2830: 0x00c2, 0x2831: 0x00c2, 0x2832: 0x00c1, 0x2833: 0x00c0, 0x2834: 0x0080, 0x2835: 0x0080, + 0x2836: 0x0080, 0x2837: 0x0080, + // Block 0xa1, offset 0x2840 + 0x2840: 0x00c0, 0x2841: 0x00c0, 0x2842: 0x00c0, 0x2843: 0x00c0, 0x2844: 0x00c6, 0x2845: 0x00c3, + 0x284e: 0x0080, 0x284f: 0x0080, 0x2850: 0x00c0, 0x2851: 0x00c0, + 0x2852: 0x00c0, 0x2853: 0x00c0, 0x2854: 0x00c0, 0x2855: 0x00c0, 0x2856: 0x00c0, 0x2857: 0x00c0, + 0x2858: 0x00c0, 0x2859: 0x00c0, + 0x2860: 0x00c3, 0x2861: 0x00c3, 0x2862: 0x00c3, 0x2863: 0x00c3, + 0x2864: 0x00c3, 0x2865: 0x00c3, 0x2866: 0x00c3, 0x2867: 0x00c3, 0x2868: 0x00c3, 0x2869: 0x00c3, + 0x286a: 0x00c3, 0x286b: 0x00c3, 0x286c: 0x00c3, 0x286d: 0x00c3, 0x286e: 0x00c3, 0x286f: 0x00c3, + 0x2870: 0x00c3, 0x2871: 0x00c3, 0x2872: 0x00c0, 0x2873: 0x00c0, 0x2874: 0x00c0, 0x2875: 0x00c0, + 0x2876: 0x00c0, 0x2877: 0x00c0, 0x2878: 0x0080, 0x2879: 0x0080, 0x287a: 0x0080, 0x287b: 0x00c0, + 0x287c: 0x0080, 0x287d: 0x00c0, + // Block 0xa2, offset 0x2880 + 0x2880: 0x00c0, 0x2881: 0x00c0, 0x2882: 0x00c0, 0x2883: 0x00c0, 0x2884: 0x00c0, 0x2885: 0x00c0, + 0x2886: 0x00c0, 0x2887: 0x00c0, 0x2888: 0x00c0, 0x2889: 0x00c0, 0x288a: 0x00c0, 0x288b: 0x00c0, + 0x288c: 0x00c0, 0x288d: 0x00c0, 0x288e: 0x00c0, 0x288f: 0x00c0, 0x2890: 0x00c0, 0x2891: 0x00c0, + 0x2892: 0x00c0, 0x2893: 0x00c0, 0x2894: 0x00c0, 0x2895: 0x00c0, 0x2896: 0x00c0, 0x2897: 0x00c0, + 0x2898: 0x00c0, 0x2899: 0x00c0, 0x289a: 0x00c0, 0x289b: 0x00c0, 0x289c: 0x00c0, 0x289d: 0x00c0, + 0x289e: 0x00c0, 0x289f: 0x00c0, 0x28a0: 0x00c0, 0x28a1: 0x00c0, 0x28a2: 0x00c0, 0x28a3: 0x00c0, + 0x28a4: 0x00c0, 0x28a5: 0x00c0, 0x28a6: 0x00c3, 0x28a7: 0x00c3, 0x28a8: 0x00c3, 0x28a9: 0x00c3, + 0x28aa: 0x00c3, 0x28ab: 0x00c3, 0x28ac: 0x00c3, 0x28ad: 0x00c3, 0x28ae: 0x0080, 0x28af: 0x0080, + 0x28b0: 0x00c0, 0x28b1: 0x00c0, 0x28b2: 0x00c0, 0x28b3: 0x00c0, 0x28b4: 0x00c0, 0x28b5: 0x00c0, + 0x28b6: 0x00c0, 0x28b7: 0x00c0, 0x28b8: 0x00c0, 0x28b9: 0x00c0, 0x28ba: 0x00c0, 0x28bb: 0x00c0, + 0x28bc: 0x00c0, 0x28bd: 0x00c0, 0x28be: 0x00c0, 0x28bf: 0x00c0, + // Block 0xa3, offset 0x28c0 + 0x28c0: 0x00c0, 0x28c1: 0x00c0, 0x28c2: 0x00c0, 0x28c3: 0x00c0, 0x28c4: 0x00c0, 0x28c5: 0x00c0, + 0x28c6: 0x00c0, 0x28c7: 0x00c3, 0x28c8: 0x00c3, 0x28c9: 0x00c3, 0x28ca: 0x00c3, 0x28cb: 0x00c3, + 0x28cc: 0x00c3, 0x28cd: 0x00c3, 0x28ce: 0x00c3, 0x28cf: 0x00c3, 0x28d0: 0x00c3, 0x28d1: 0x00c3, + 0x28d2: 0x00c0, 0x28d3: 0x00c5, + 0x28df: 0x0080, 0x28e0: 0x0040, 0x28e1: 0x0040, 0x28e2: 0x0040, 0x28e3: 0x0040, + 0x28e4: 0x0040, 0x28e5: 0x0040, 0x28e6: 0x0040, 0x28e7: 0x0040, 0x28e8: 0x0040, 0x28e9: 0x0040, + 0x28ea: 0x0040, 0x28eb: 0x0040, 0x28ec: 0x0040, 0x28ed: 0x0040, 0x28ee: 0x0040, 0x28ef: 0x0040, + 0x28f0: 0x0040, 0x28f1: 0x0040, 0x28f2: 0x0040, 0x28f3: 0x0040, 0x28f4: 0x0040, 0x28f5: 0x0040, + 0x28f6: 0x0040, 0x28f7: 0x0040, 0x28f8: 0x0040, 0x28f9: 0x0040, 0x28fa: 0x0040, 0x28fb: 0x0040, + 0x28fc: 0x0040, + // Block 0xa4, offset 0x2900 + 0x2900: 0x00c3, 0x2901: 0x00c3, 0x2902: 0x00c3, 0x2903: 0x00c0, 0x2904: 0x00c0, 0x2905: 0x00c0, + 0x2906: 0x00c0, 0x2907: 0x00c0, 0x2908: 0x00c0, 0x2909: 0x00c0, 0x290a: 0x00c0, 0x290b: 0x00c0, + 0x290c: 0x00c0, 0x290d: 0x00c0, 0x290e: 0x00c0, 0x290f: 0x00c0, 0x2910: 0x00c0, 0x2911: 0x00c0, + 0x2912: 0x00c0, 0x2913: 0x00c0, 0x2914: 0x00c0, 0x2915: 0x00c0, 0x2916: 0x00c0, 0x2917: 0x00c0, + 0x2918: 0x00c0, 0x2919: 0x00c0, 0x291a: 0x00c0, 0x291b: 0x00c0, 0x291c: 0x00c0, 0x291d: 0x00c0, + 0x291e: 0x00c0, 0x291f: 0x00c0, 0x2920: 0x00c0, 0x2921: 0x00c0, 0x2922: 0x00c0, 0x2923: 0x00c0, + 0x2924: 0x00c0, 0x2925: 0x00c0, 0x2926: 0x00c0, 0x2927: 0x00c0, 0x2928: 0x00c0, 0x2929: 0x00c0, + 0x292a: 0x00c0, 0x292b: 0x00c0, 0x292c: 0x00c0, 0x292d: 0x00c0, 0x292e: 0x00c0, 0x292f: 0x00c0, + 0x2930: 0x00c0, 0x2931: 0x00c0, 0x2932: 0x00c0, 0x2933: 0x00c3, 0x2934: 0x00c0, 0x2935: 0x00c0, + 0x2936: 0x00c3, 0x2937: 0x00c3, 0x2938: 0x00c3, 0x2939: 0x00c3, 0x293a: 0x00c0, 0x293b: 0x00c0, + 0x293c: 0x00c3, 0x293d: 0x00c0, 0x293e: 0x00c0, 0x293f: 0x00c0, + // Block 0xa5, offset 0x2940 + 0x2940: 0x00c5, 0x2941: 0x0080, 0x2942: 0x0080, 0x2943: 0x0080, 0x2944: 0x0080, 0x2945: 0x0080, + 0x2946: 0x0080, 0x2947: 0x0080, 0x2948: 0x0080, 0x2949: 0x0080, 0x294a: 0x0080, 0x294b: 0x0080, + 0x294c: 0x0080, 0x294d: 0x0080, 0x294f: 0x00c0, 0x2950: 0x00c0, 0x2951: 0x00c0, + 0x2952: 0x00c0, 0x2953: 0x00c0, 0x2954: 0x00c0, 0x2955: 0x00c0, 0x2956: 0x00c0, 0x2957: 0x00c0, + 0x2958: 0x00c0, 0x2959: 0x00c0, + 0x295e: 0x0080, 0x295f: 0x0080, 0x2960: 0x00c0, 0x2961: 0x00c0, 0x2962: 0x00c0, 0x2963: 0x00c0, + 0x2964: 0x00c0, 0x2965: 0x00c3, 0x2966: 0x00c0, 0x2967: 0x00c0, 0x2968: 0x00c0, 0x2969: 0x00c0, + 0x296a: 0x00c0, 0x296b: 0x00c0, 0x296c: 0x00c0, 0x296d: 0x00c0, 0x296e: 0x00c0, 0x296f: 0x00c0, + 0x2970: 0x00c0, 0x2971: 0x00c0, 0x2972: 0x00c0, 0x2973: 0x00c0, 0x2974: 0x00c0, 0x2975: 0x00c0, + 0x2976: 0x00c0, 0x2977: 0x00c0, 0x2978: 0x00c0, 0x2979: 0x00c0, 0x297a: 0x00c0, 0x297b: 0x00c0, + 0x297c: 0x00c0, 0x297d: 0x00c0, 0x297e: 0x00c0, + // Block 0xa6, offset 0x2980 + 0x2980: 0x00c0, 0x2981: 0x00c0, 0x2982: 0x00c0, 0x2983: 0x00c0, 0x2984: 0x00c0, 0x2985: 0x00c0, + 0x2986: 0x00c0, 0x2987: 0x00c0, 0x2988: 0x00c0, 0x2989: 0x00c0, 0x298a: 0x00c0, 0x298b: 0x00c0, + 0x298c: 0x00c0, 0x298d: 0x00c0, 0x298e: 0x00c0, 0x298f: 0x00c0, 0x2990: 0x00c0, 0x2991: 0x00c0, + 0x2992: 0x00c0, 0x2993: 0x00c0, 0x2994: 0x00c0, 0x2995: 0x00c0, 0x2996: 0x00c0, 0x2997: 0x00c0, + 0x2998: 0x00c0, 0x2999: 0x00c0, 0x299a: 0x00c0, 0x299b: 0x00c0, 0x299c: 0x00c0, 0x299d: 0x00c0, + 0x299e: 0x00c0, 0x299f: 0x00c0, 0x29a0: 0x00c0, 0x29a1: 0x00c0, 0x29a2: 0x00c0, 0x29a3: 0x00c0, + 0x29a4: 0x00c0, 0x29a5: 0x00c0, 0x29a6: 0x00c0, 0x29a7: 0x00c0, 0x29a8: 0x00c0, 0x29a9: 0x00c3, + 0x29aa: 0x00c3, 0x29ab: 0x00c3, 0x29ac: 0x00c3, 0x29ad: 0x00c3, 0x29ae: 0x00c3, 0x29af: 0x00c0, + 0x29b0: 0x00c0, 0x29b1: 0x00c3, 0x29b2: 0x00c3, 0x29b3: 0x00c0, 0x29b4: 0x00c0, 0x29b5: 0x00c3, + 0x29b6: 0x00c3, + // Block 0xa7, offset 0x29c0 + 0x29c0: 0x00c0, 0x29c1: 0x00c0, 0x29c2: 0x00c0, 0x29c3: 0x00c3, 0x29c4: 0x00c0, 0x29c5: 0x00c0, + 0x29c6: 0x00c0, 0x29c7: 0x00c0, 0x29c8: 0x00c0, 0x29c9: 0x00c0, 0x29ca: 0x00c0, 0x29cb: 0x00c0, + 0x29cc: 0x00c3, 0x29cd: 0x00c0, 0x29d0: 0x00c0, 0x29d1: 0x00c0, + 0x29d2: 0x00c0, 0x29d3: 0x00c0, 0x29d4: 0x00c0, 0x29d5: 0x00c0, 0x29d6: 0x00c0, 0x29d7: 0x00c0, + 0x29d8: 0x00c0, 0x29d9: 0x00c0, 0x29dc: 0x0080, 0x29dd: 0x0080, + 0x29de: 0x0080, 0x29df: 0x0080, 0x29e0: 0x00c0, 0x29e1: 0x00c0, 0x29e2: 0x00c0, 0x29e3: 0x00c0, + 0x29e4: 0x00c0, 0x29e5: 0x00c0, 0x29e6: 0x00c0, 0x29e7: 0x00c0, 0x29e8: 0x00c0, 0x29e9: 0x00c0, + 0x29ea: 0x00c0, 0x29eb: 0x00c0, 0x29ec: 0x00c0, 0x29ed: 0x00c0, 0x29ee: 0x00c0, 0x29ef: 0x00c0, + 0x29f0: 0x00c0, 0x29f1: 0x00c0, 0x29f2: 0x00c0, 0x29f3: 0x00c0, 0x29f4: 0x00c0, 0x29f5: 0x00c0, + 0x29f6: 0x00c0, 0x29f7: 0x0080, 0x29f8: 0x0080, 0x29f9: 0x0080, 0x29fa: 0x00c0, 0x29fb: 0x00c0, + 0x29fc: 0x00c3, 0x29fd: 0x00c0, 0x29fe: 0x00c0, 0x29ff: 0x00c0, + // Block 0xa8, offset 0x2a00 + 0x2a00: 0x00c0, 0x2a01: 0x00c0, 0x2a02: 0x00c0, 0x2a03: 0x00c0, 0x2a04: 0x00c0, 0x2a05: 0x00c0, + 0x2a06: 0x00c0, 0x2a07: 0x00c0, 0x2a08: 0x00c0, 0x2a09: 0x00c0, 0x2a0a: 0x00c0, 0x2a0b: 0x00c0, + 0x2a0c: 0x00c0, 0x2a0d: 0x00c0, 0x2a0e: 0x00c0, 0x2a0f: 0x00c0, 0x2a10: 0x00c0, 0x2a11: 0x00c0, + 0x2a12: 0x00c0, 0x2a13: 0x00c0, 0x2a14: 0x00c0, 0x2a15: 0x00c0, 0x2a16: 0x00c0, 0x2a17: 0x00c0, + 0x2a18: 0x00c0, 0x2a19: 0x00c0, 0x2a1a: 0x00c0, 0x2a1b: 0x00c0, 0x2a1c: 0x00c0, 0x2a1d: 0x00c0, + 0x2a1e: 0x00c0, 0x2a1f: 0x00c0, 0x2a20: 0x00c0, 0x2a21: 0x00c0, 0x2a22: 0x00c0, 0x2a23: 0x00c0, + 0x2a24: 0x00c0, 0x2a25: 0x00c0, 0x2a26: 0x00c0, 0x2a27: 0x00c0, 0x2a28: 0x00c0, 0x2a29: 0x00c0, + 0x2a2a: 0x00c0, 0x2a2b: 0x00c0, 0x2a2c: 0x00c0, 0x2a2d: 0x00c0, 0x2a2e: 0x00c0, 0x2a2f: 0x00c0, + 0x2a30: 0x00c3, 0x2a31: 0x00c0, 0x2a32: 0x00c3, 0x2a33: 0x00c3, 0x2a34: 0x00c3, 0x2a35: 0x00c0, + 0x2a36: 0x00c0, 0x2a37: 0x00c3, 0x2a38: 0x00c3, 0x2a39: 0x00c0, 0x2a3a: 0x00c0, 0x2a3b: 0x00c0, + 0x2a3c: 0x00c0, 0x2a3d: 0x00c0, 0x2a3e: 0x00c3, 0x2a3f: 0x00c3, + // Block 0xa9, offset 0x2a40 + 0x2a40: 0x00c0, 0x2a41: 0x00c3, 0x2a42: 0x00c0, + 0x2a5b: 0x00c0, 0x2a5c: 0x00c0, 0x2a5d: 0x00c0, + 0x2a5e: 0x0080, 0x2a5f: 0x0080, 0x2a60: 0x00c0, 0x2a61: 0x00c0, 0x2a62: 0x00c0, 0x2a63: 0x00c0, + 0x2a64: 0x00c0, 0x2a65: 0x00c0, 0x2a66: 0x00c0, 0x2a67: 0x00c0, 0x2a68: 0x00c0, 0x2a69: 0x00c0, + 0x2a6a: 0x00c0, 0x2a6b: 0x00c0, 0x2a6c: 0x00c3, 0x2a6d: 0x00c3, 0x2a6e: 0x00c0, 0x2a6f: 0x00c0, + 0x2a70: 0x0080, 0x2a71: 0x0080, 0x2a72: 0x00c0, 0x2a73: 0x00c0, 0x2a74: 0x00c0, 0x2a75: 0x00c0, + 0x2a76: 0x00c6, + // Block 0xaa, offset 0x2a80 + 0x2a81: 0x00c0, 0x2a82: 0x00c0, 0x2a83: 0x00c0, 0x2a84: 0x00c0, 0x2a85: 0x00c0, + 0x2a86: 0x00c0, 0x2a89: 0x00c0, 0x2a8a: 0x00c0, 0x2a8b: 0x00c0, + 0x2a8c: 0x00c0, 0x2a8d: 0x00c0, 0x2a8e: 0x00c0, 0x2a91: 0x00c0, + 0x2a92: 0x00c0, 0x2a93: 0x00c0, 0x2a94: 0x00c0, 0x2a95: 0x00c0, 0x2a96: 0x00c0, + 0x2aa0: 0x00c0, 0x2aa1: 0x00c0, 0x2aa2: 0x00c0, 0x2aa3: 0x00c0, + 0x2aa4: 0x00c0, 0x2aa5: 0x00c0, 0x2aa6: 0x00c0, 0x2aa8: 0x00c0, 0x2aa9: 0x00c0, + 0x2aaa: 0x00c0, 0x2aab: 0x00c0, 0x2aac: 0x00c0, 0x2aad: 0x00c0, 0x2aae: 0x00c0, + 0x2ab0: 0x00c0, 0x2ab1: 0x00c0, 0x2ab2: 0x00c0, 0x2ab3: 0x00c0, 0x2ab4: 0x00c0, 0x2ab5: 0x00c0, + 0x2ab6: 0x00c0, 0x2ab7: 0x00c0, 0x2ab8: 0x00c0, 0x2ab9: 0x00c0, 0x2aba: 0x00c0, 0x2abb: 0x00c0, + 0x2abc: 0x00c0, 0x2abd: 0x00c0, 0x2abe: 0x00c0, 0x2abf: 0x00c0, + // Block 0xab, offset 0x2ac0 + 0x2ac0: 0x00c0, 0x2ac1: 0x00c0, 0x2ac2: 0x00c0, 0x2ac3: 0x00c0, 0x2ac4: 0x00c0, 0x2ac5: 0x00c0, + 0x2ac6: 0x00c0, 0x2ac7: 0x00c0, 0x2ac8: 0x00c0, 0x2ac9: 0x00c0, 0x2aca: 0x00c0, 0x2acb: 0x00c0, + 0x2acc: 0x00c0, 0x2acd: 0x00c0, 0x2ace: 0x00c0, 0x2acf: 0x00c0, 0x2ad0: 0x00c0, 0x2ad1: 0x00c0, + 0x2ad2: 0x00c0, 0x2ad3: 0x00c0, 0x2ad4: 0x00c0, 0x2ad5: 0x00c0, 0x2ad6: 0x00c0, 0x2ad7: 0x00c0, + 0x2ad8: 0x00c0, 0x2ad9: 0x00c0, 0x2ada: 0x00c0, 0x2adb: 0x0080, 0x2adc: 0x0080, 0x2add: 0x0080, + 0x2ade: 0x0080, 0x2adf: 0x0080, 0x2ae0: 0x00c0, 0x2ae1: 0x00c0, 0x2ae2: 0x00c0, 0x2ae3: 0x00c0, + 0x2ae4: 0x00c0, 0x2ae5: 0x00c8, + 0x2af0: 0x00c0, 0x2af1: 0x00c0, 0x2af2: 0x00c0, 0x2af3: 0x00c0, 0x2af4: 0x00c0, 0x2af5: 0x00c0, + 0x2af6: 0x00c0, 0x2af7: 0x00c0, 0x2af8: 0x00c0, 0x2af9: 0x00c0, 0x2afa: 0x00c0, 0x2afb: 0x00c0, + 0x2afc: 0x00c0, 0x2afd: 0x00c0, 0x2afe: 0x00c0, 0x2aff: 0x00c0, + // Block 0xac, offset 0x2b00 + 0x2b00: 0x00c0, 0x2b01: 0x00c0, 0x2b02: 0x00c0, 0x2b03: 0x00c0, 0x2b04: 0x00c0, 0x2b05: 0x00c0, + 0x2b06: 0x00c0, 0x2b07: 0x00c0, 0x2b08: 0x00c0, 0x2b09: 0x00c0, 0x2b0a: 0x00c0, 0x2b0b: 0x00c0, + 0x2b0c: 0x00c0, 0x2b0d: 0x00c0, 0x2b0e: 0x00c0, 0x2b0f: 0x00c0, 0x2b10: 0x00c0, 0x2b11: 0x00c0, + 0x2b12: 0x00c0, 0x2b13: 0x00c0, 0x2b14: 0x00c0, 0x2b15: 0x00c0, 0x2b16: 0x00c0, 0x2b17: 0x00c0, + 0x2b18: 0x00c0, 0x2b19: 0x00c0, 0x2b1a: 0x00c0, 0x2b1b: 0x00c0, 0x2b1c: 0x00c0, 0x2b1d: 0x00c0, + 0x2b1e: 0x00c0, 0x2b1f: 0x00c0, 0x2b20: 0x00c0, 0x2b21: 0x00c0, 0x2b22: 0x00c0, 0x2b23: 0x00c0, + 0x2b24: 0x00c0, 0x2b25: 0x00c3, 0x2b26: 0x00c0, 0x2b27: 0x00c0, 0x2b28: 0x00c3, 0x2b29: 0x00c0, + 0x2b2a: 0x00c0, 0x2b2b: 0x0080, 0x2b2c: 0x00c0, 0x2b2d: 0x00c6, + 0x2b30: 0x00c0, 0x2b31: 0x00c0, 0x2b32: 0x00c0, 0x2b33: 0x00c0, 0x2b34: 0x00c0, 0x2b35: 0x00c0, + 0x2b36: 0x00c0, 0x2b37: 0x00c0, 0x2b38: 0x00c0, 0x2b39: 0x00c0, + // Block 0xad, offset 0x2b40 + 0x2b40: 0x00c0, 0x2b41: 0x00c0, 0x2b42: 0x00c0, 0x2b43: 0x00c0, 0x2b44: 0x00c0, 0x2b45: 0x00c0, + 0x2b46: 0x00c0, 0x2b47: 0x00c0, 0x2b48: 0x00c0, 0x2b49: 0x00c0, 0x2b4a: 0x00c0, 0x2b4b: 0x00c0, + 0x2b4c: 0x00c0, 0x2b4d: 0x00c0, 0x2b4e: 0x00c0, 0x2b4f: 0x00c0, 0x2b50: 0x00c0, 0x2b51: 0x00c0, + 0x2b52: 0x00c0, 0x2b53: 0x00c0, 0x2b54: 0x00c0, 0x2b55: 0x00c0, 0x2b56: 0x00c0, 0x2b57: 0x00c0, + 0x2b58: 0x00c0, 0x2b59: 0x00c0, 0x2b5a: 0x00c0, 0x2b5b: 0x00c0, 0x2b5c: 0x00c0, 0x2b5d: 0x00c0, + 0x2b5e: 0x00c0, 0x2b5f: 0x00c0, 0x2b60: 0x00c0, 0x2b61: 0x00c0, 0x2b62: 0x00c0, 0x2b63: 0x00c0, + 0x2b70: 0x0040, 0x2b71: 0x0040, 0x2b72: 0x0040, 0x2b73: 0x0040, 0x2b74: 0x0040, 0x2b75: 0x0040, + 0x2b76: 0x0040, 0x2b77: 0x0040, 0x2b78: 0x0040, 0x2b79: 0x0040, 0x2b7a: 0x0040, 0x2b7b: 0x0040, + 0x2b7c: 0x0040, 0x2b7d: 0x0040, 0x2b7e: 0x0040, 0x2b7f: 0x0040, + // Block 0xae, offset 0x2b80 + 0x2b80: 0x0040, 0x2b81: 0x0040, 0x2b82: 0x0040, 0x2b83: 0x0040, 0x2b84: 0x0040, 0x2b85: 0x0040, + 0x2b86: 0x0040, 0x2b8b: 0x0040, + 0x2b8c: 0x0040, 0x2b8d: 0x0040, 0x2b8e: 0x0040, 0x2b8f: 0x0040, 0x2b90: 0x0040, 0x2b91: 0x0040, + 0x2b92: 0x0040, 0x2b93: 0x0040, 0x2b94: 0x0040, 0x2b95: 0x0040, 0x2b96: 0x0040, 0x2b97: 0x0040, + 0x2b98: 0x0040, 0x2b99: 0x0040, 0x2b9a: 0x0040, 0x2b9b: 0x0040, 0x2b9c: 0x0040, 0x2b9d: 0x0040, + 0x2b9e: 0x0040, 0x2b9f: 0x0040, 0x2ba0: 0x0040, 0x2ba1: 0x0040, 0x2ba2: 0x0040, 0x2ba3: 0x0040, + 0x2ba4: 0x0040, 0x2ba5: 0x0040, 0x2ba6: 0x0040, 0x2ba7: 0x0040, 0x2ba8: 0x0040, 0x2ba9: 0x0040, + 0x2baa: 0x0040, 0x2bab: 0x0040, 0x2bac: 0x0040, 0x2bad: 0x0040, 0x2bae: 0x0040, 0x2baf: 0x0040, + 0x2bb0: 0x0040, 0x2bb1: 0x0040, 0x2bb2: 0x0040, 0x2bb3: 0x0040, 0x2bb4: 0x0040, 0x2bb5: 0x0040, + 0x2bb6: 0x0040, 0x2bb7: 0x0040, 0x2bb8: 0x0040, 0x2bb9: 0x0040, 0x2bba: 0x0040, 0x2bbb: 0x0040, + // Block 0xaf, offset 0x2bc0 + 0x2bc0: 0x008c, 0x2bc1: 0x008c, 0x2bc2: 0x008c, 0x2bc3: 0x008c, 0x2bc4: 0x008c, 0x2bc5: 0x008c, + 0x2bc6: 0x008c, 0x2bc7: 0x008c, 0x2bc8: 0x008c, 0x2bc9: 0x008c, 0x2bca: 0x008c, 0x2bcb: 0x008c, + 0x2bcc: 0x008c, 0x2bcd: 0x008c, 0x2bce: 0x00cc, 0x2bcf: 0x00cc, 0x2bd0: 0x008c, 0x2bd1: 0x00cc, + 0x2bd2: 0x008c, 0x2bd3: 0x00cc, 0x2bd4: 0x00cc, 0x2bd5: 0x008c, 0x2bd6: 0x008c, 0x2bd7: 0x008c, + 0x2bd8: 0x008c, 0x2bd9: 0x008c, 0x2bda: 0x008c, 0x2bdb: 0x008c, 0x2bdc: 0x008c, 0x2bdd: 0x008c, + 0x2bde: 0x008c, 0x2bdf: 0x00cc, 0x2be0: 0x008c, 0x2be1: 0x00cc, 0x2be2: 0x008c, 0x2be3: 0x00cc, + 0x2be4: 0x00cc, 0x2be5: 0x008c, 0x2be6: 0x008c, 0x2be7: 0x00cc, 0x2be8: 0x00cc, 0x2be9: 0x00cc, + 0x2bea: 0x008c, 0x2beb: 0x008c, 0x2bec: 0x008c, 0x2bed: 0x008c, 0x2bee: 0x008c, 0x2bef: 0x008c, + 0x2bf0: 0x008c, 0x2bf1: 0x008c, 0x2bf2: 0x008c, 0x2bf3: 0x008c, 0x2bf4: 0x008c, 0x2bf5: 0x008c, + 0x2bf6: 0x008c, 0x2bf7: 0x008c, 0x2bf8: 0x008c, 0x2bf9: 0x008c, 0x2bfa: 0x008c, 0x2bfb: 0x008c, + 0x2bfc: 0x008c, 0x2bfd: 0x008c, 0x2bfe: 0x008c, 0x2bff: 0x008c, + // Block 0xb0, offset 0x2c00 + 0x2c00: 0x008c, 0x2c01: 0x008c, 0x2c02: 0x008c, 0x2c03: 0x008c, 0x2c04: 0x008c, 0x2c05: 0x008c, + 0x2c06: 0x008c, 0x2c07: 0x008c, 0x2c08: 0x008c, 0x2c09: 0x008c, 0x2c0a: 0x008c, 0x2c0b: 0x008c, + 0x2c0c: 0x008c, 0x2c0d: 0x008c, 0x2c0e: 0x008c, 0x2c0f: 0x008c, 0x2c10: 0x008c, 0x2c11: 0x008c, + 0x2c12: 0x008c, 0x2c13: 0x008c, 0x2c14: 0x008c, 0x2c15: 0x008c, 0x2c16: 0x008c, 0x2c17: 0x008c, + 0x2c18: 0x008c, 0x2c19: 0x008c, 0x2c1a: 0x008c, 0x2c1b: 0x008c, 0x2c1c: 0x008c, 0x2c1d: 0x008c, + 0x2c1e: 0x008c, 0x2c1f: 0x008c, 0x2c20: 0x008c, 0x2c21: 0x008c, 0x2c22: 0x008c, 0x2c23: 0x008c, + 0x2c24: 0x008c, 0x2c25: 0x008c, 0x2c26: 0x008c, 0x2c27: 0x008c, 0x2c28: 0x008c, 0x2c29: 0x008c, + 0x2c2a: 0x008c, 0x2c2b: 0x008c, 0x2c2c: 0x008c, 0x2c2d: 0x008c, + 0x2c30: 0x008c, 0x2c31: 0x008c, 0x2c32: 0x008c, 0x2c33: 0x008c, 0x2c34: 0x008c, 0x2c35: 0x008c, + 0x2c36: 0x008c, 0x2c37: 0x008c, 0x2c38: 0x008c, 0x2c39: 0x008c, 0x2c3a: 0x008c, 0x2c3b: 0x008c, + 0x2c3c: 0x008c, 0x2c3d: 0x008c, 0x2c3e: 0x008c, 0x2c3f: 0x008c, + // Block 0xb1, offset 0x2c40 + 0x2c40: 0x008c, 0x2c41: 0x008c, 0x2c42: 0x008c, 0x2c43: 0x008c, 0x2c44: 0x008c, 0x2c45: 0x008c, + 0x2c46: 0x008c, 0x2c47: 0x008c, 0x2c48: 0x008c, 0x2c49: 0x008c, 0x2c4a: 0x008c, 0x2c4b: 0x008c, + 0x2c4c: 0x008c, 0x2c4d: 0x008c, 0x2c4e: 0x008c, 0x2c4f: 0x008c, 0x2c50: 0x008c, 0x2c51: 0x008c, + 0x2c52: 0x008c, 0x2c53: 0x008c, 0x2c54: 0x008c, 0x2c55: 0x008c, 0x2c56: 0x008c, 0x2c57: 0x008c, + 0x2c58: 0x008c, 0x2c59: 0x008c, + // Block 0xb2, offset 0x2c80 + 0x2c80: 0x0080, 0x2c81: 0x0080, 0x2c82: 0x0080, 0x2c83: 0x0080, 0x2c84: 0x0080, 0x2c85: 0x0080, + 0x2c86: 0x0080, + 0x2c93: 0x0080, 0x2c94: 0x0080, 0x2c95: 0x0080, 0x2c96: 0x0080, 0x2c97: 0x0080, + 0x2c9d: 0x008a, + 0x2c9e: 0x00cb, 0x2c9f: 0x008a, 0x2ca0: 0x008a, 0x2ca1: 0x008a, 0x2ca2: 0x008a, 0x2ca3: 0x008a, + 0x2ca4: 0x008a, 0x2ca5: 0x008a, 0x2ca6: 0x008a, 0x2ca7: 0x008a, 0x2ca8: 0x008a, 0x2ca9: 0x008a, + 0x2caa: 0x008a, 0x2cab: 0x008a, 0x2cac: 0x008a, 0x2cad: 0x008a, 0x2cae: 0x008a, 0x2caf: 0x008a, + 0x2cb0: 0x008a, 0x2cb1: 0x008a, 0x2cb2: 0x008a, 0x2cb3: 0x008a, 0x2cb4: 0x008a, 0x2cb5: 0x008a, + 0x2cb6: 0x008a, 0x2cb8: 0x008a, 0x2cb9: 0x008a, 0x2cba: 0x008a, 0x2cbb: 0x008a, + 0x2cbc: 0x008a, 0x2cbe: 0x008a, + // Block 0xb3, offset 0x2cc0 + 0x2cc0: 0x008a, 0x2cc1: 0x008a, 0x2cc3: 0x008a, 0x2cc4: 0x008a, + 0x2cc6: 0x008a, 0x2cc7: 0x008a, 0x2cc8: 0x008a, 0x2cc9: 0x008a, 0x2cca: 0x008a, 0x2ccb: 0x008a, + 0x2ccc: 0x008a, 0x2ccd: 0x008a, 0x2cce: 0x008a, 0x2ccf: 0x008a, 0x2cd0: 0x0080, 0x2cd1: 0x0080, + 0x2cd2: 0x0080, 0x2cd3: 0x0080, 0x2cd4: 0x0080, 0x2cd5: 0x0080, 0x2cd6: 0x0080, 0x2cd7: 0x0080, + 0x2cd8: 0x0080, 0x2cd9: 0x0080, 0x2cda: 0x0080, 0x2cdb: 0x0080, 0x2cdc: 0x0080, 0x2cdd: 0x0080, + 0x2cde: 0x0080, 0x2cdf: 0x0080, 0x2ce0: 0x0080, 0x2ce1: 0x0080, 0x2ce2: 0x0080, 0x2ce3: 0x0080, + 0x2ce4: 0x0080, 0x2ce5: 0x0080, 0x2ce6: 0x0080, 0x2ce7: 0x0080, 0x2ce8: 0x0080, 0x2ce9: 0x0080, + 0x2cea: 0x0080, 0x2ceb: 0x0080, 0x2cec: 0x0080, 0x2ced: 0x0080, 0x2cee: 0x0080, 0x2cef: 0x0080, + 0x2cf0: 0x0080, 0x2cf1: 0x0080, 0x2cf2: 0x0080, 0x2cf3: 0x0080, 0x2cf4: 0x0080, 0x2cf5: 0x0080, + 0x2cf6: 0x0080, 0x2cf7: 0x0080, 0x2cf8: 0x0080, 0x2cf9: 0x0080, 0x2cfa: 0x0080, 0x2cfb: 0x0080, + 0x2cfc: 0x0080, 0x2cfd: 0x0080, 0x2cfe: 0x0080, 0x2cff: 0x0080, + // Block 0xb4, offset 0x2d00 + 0x2d00: 0x0080, 0x2d01: 0x0080, + 0x2d13: 0x0080, 0x2d14: 0x0080, 0x2d15: 0x0080, 0x2d16: 0x0080, 0x2d17: 0x0080, + 0x2d18: 0x0080, 0x2d19: 0x0080, 0x2d1a: 0x0080, 0x2d1b: 0x0080, 0x2d1c: 0x0080, 0x2d1d: 0x0080, + 0x2d1e: 0x0080, 0x2d1f: 0x0080, 0x2d20: 0x0080, 0x2d21: 0x0080, 0x2d22: 0x0080, 0x2d23: 0x0080, + 0x2d24: 0x0080, 0x2d25: 0x0080, 0x2d26: 0x0080, 0x2d27: 0x0080, 0x2d28: 0x0080, 0x2d29: 0x0080, + 0x2d2a: 0x0080, 0x2d2b: 0x0080, 0x2d2c: 0x0080, 0x2d2d: 0x0080, 0x2d2e: 0x0080, 0x2d2f: 0x0080, + 0x2d30: 0x0080, 0x2d31: 0x0080, 0x2d32: 0x0080, 0x2d33: 0x0080, 0x2d34: 0x0080, 0x2d35: 0x0080, + 0x2d36: 0x0080, 0x2d37: 0x0080, 0x2d38: 0x0080, 0x2d39: 0x0080, 0x2d3a: 0x0080, 0x2d3b: 0x0080, + 0x2d3c: 0x0080, 0x2d3d: 0x0080, 0x2d3e: 0x0080, 0x2d3f: 0x0080, + // Block 0xb5, offset 0x2d40 + 0x2d50: 0x0080, 0x2d51: 0x0080, + 0x2d52: 0x0080, 0x2d53: 0x0080, 0x2d54: 0x0080, 0x2d55: 0x0080, 0x2d56: 0x0080, 0x2d57: 0x0080, + 0x2d58: 0x0080, 0x2d59: 0x0080, 0x2d5a: 0x0080, 0x2d5b: 0x0080, 0x2d5c: 0x0080, 0x2d5d: 0x0080, + 0x2d5e: 0x0080, 0x2d5f: 0x0080, 0x2d60: 0x0080, 0x2d61: 0x0080, 0x2d62: 0x0080, 0x2d63: 0x0080, + 0x2d64: 0x0080, 0x2d65: 0x0080, 0x2d66: 0x0080, 0x2d67: 0x0080, 0x2d68: 0x0080, 0x2d69: 0x0080, + 0x2d6a: 0x0080, 0x2d6b: 0x0080, 0x2d6c: 0x0080, 0x2d6d: 0x0080, 0x2d6e: 0x0080, 0x2d6f: 0x0080, + 0x2d70: 0x0080, 0x2d71: 0x0080, 0x2d72: 0x0080, 0x2d73: 0x0080, 0x2d74: 0x0080, 0x2d75: 0x0080, + 0x2d76: 0x0080, 0x2d77: 0x0080, 0x2d78: 0x0080, 0x2d79: 0x0080, 0x2d7a: 0x0080, 0x2d7b: 0x0080, + 0x2d7c: 0x0080, 0x2d7d: 0x0080, 0x2d7e: 0x0080, 0x2d7f: 0x0080, + // Block 0xb6, offset 0x2d80 + 0x2d80: 0x0080, 0x2d81: 0x0080, 0x2d82: 0x0080, 0x2d83: 0x0080, 0x2d84: 0x0080, 0x2d85: 0x0080, + 0x2d86: 0x0080, 0x2d87: 0x0080, 0x2d88: 0x0080, 0x2d89: 0x0080, 0x2d8a: 0x0080, 0x2d8b: 0x0080, + 0x2d8c: 0x0080, 0x2d8d: 0x0080, 0x2d8e: 0x0080, 0x2d8f: 0x0080, + 0x2d92: 0x0080, 0x2d93: 0x0080, 0x2d94: 0x0080, 0x2d95: 0x0080, 0x2d96: 0x0080, 0x2d97: 0x0080, + 0x2d98: 0x0080, 0x2d99: 0x0080, 0x2d9a: 0x0080, 0x2d9b: 0x0080, 0x2d9c: 0x0080, 0x2d9d: 0x0080, + 0x2d9e: 0x0080, 0x2d9f: 0x0080, 0x2da0: 0x0080, 0x2da1: 0x0080, 0x2da2: 0x0080, 0x2da3: 0x0080, + 0x2da4: 0x0080, 0x2da5: 0x0080, 0x2da6: 0x0080, 0x2da7: 0x0080, 0x2da8: 0x0080, 0x2da9: 0x0080, + 0x2daa: 0x0080, 0x2dab: 0x0080, 0x2dac: 0x0080, 0x2dad: 0x0080, 0x2dae: 0x0080, 0x2daf: 0x0080, + 0x2db0: 0x0080, 0x2db1: 0x0080, 0x2db2: 0x0080, 0x2db3: 0x0080, 0x2db4: 0x0080, 0x2db5: 0x0080, + 0x2db6: 0x0080, 0x2db7: 0x0080, 0x2db8: 0x0080, 0x2db9: 0x0080, 0x2dba: 0x0080, 0x2dbb: 0x0080, + 0x2dbc: 0x0080, 0x2dbd: 0x0080, 0x2dbe: 0x0080, 0x2dbf: 0x0080, + // Block 0xb7, offset 0x2dc0 + 0x2dc0: 0x0080, 0x2dc1: 0x0080, 0x2dc2: 0x0080, 0x2dc3: 0x0080, 0x2dc4: 0x0080, 0x2dc5: 0x0080, + 0x2dc6: 0x0080, 0x2dc7: 0x0080, + 0x2df0: 0x0080, 0x2df1: 0x0080, 0x2df2: 0x0080, 0x2df3: 0x0080, 0x2df4: 0x0080, 0x2df5: 0x0080, + 0x2df6: 0x0080, 0x2df7: 0x0080, 0x2df8: 0x0080, 0x2df9: 0x0080, 0x2dfa: 0x0080, 0x2dfb: 0x0080, + 0x2dfc: 0x0080, 0x2dfd: 0x0080, + // Block 0xb8, offset 0x2e00 + 0x2e00: 0x0040, 0x2e01: 0x0040, 0x2e02: 0x0040, 0x2e03: 0x0040, 0x2e04: 0x0040, 0x2e05: 0x0040, + 0x2e06: 0x0040, 0x2e07: 0x0040, 0x2e08: 0x0040, 0x2e09: 0x0040, 0x2e0a: 0x0040, 0x2e0b: 0x0040, + 0x2e0c: 0x0040, 0x2e0d: 0x0040, 0x2e0e: 0x0040, 0x2e0f: 0x0040, 0x2e10: 0x0080, 0x2e11: 0x0080, + 0x2e12: 0x0080, 0x2e13: 0x0080, 0x2e14: 0x0080, 0x2e15: 0x0080, 0x2e16: 0x0080, 0x2e17: 0x0080, + 0x2e18: 0x0080, 0x2e19: 0x0080, + 0x2e20: 0x00c3, 0x2e21: 0x00c3, 0x2e22: 0x00c3, 0x2e23: 0x00c3, + 0x2e24: 0x00c3, 0x2e25: 0x00c3, 0x2e26: 0x00c3, 0x2e27: 0x00c3, 0x2e28: 0x00c3, 0x2e29: 0x00c3, + 0x2e2a: 0x00c3, 0x2e2b: 0x00c3, 0x2e2c: 0x00c3, 0x2e2d: 0x00c3, 0x2e2e: 0x00c3, 0x2e2f: 0x00c3, + 0x2e30: 0x0080, 0x2e31: 0x0080, 0x2e32: 0x0080, 0x2e33: 0x0080, 0x2e34: 0x0080, 0x2e35: 0x0080, + 0x2e36: 0x0080, 0x2e37: 0x0080, 0x2e38: 0x0080, 0x2e39: 0x0080, 0x2e3a: 0x0080, 0x2e3b: 0x0080, + 0x2e3c: 0x0080, 0x2e3d: 0x0080, 0x2e3e: 0x0080, 0x2e3f: 0x0080, + // Block 0xb9, offset 0x2e40 + 0x2e40: 0x0080, 0x2e41: 0x0080, 0x2e42: 0x0080, 0x2e43: 0x0080, 0x2e44: 0x0080, 0x2e45: 0x0080, + 0x2e46: 0x0080, 0x2e47: 0x0080, 0x2e48: 0x0080, 0x2e49: 0x0080, 0x2e4a: 0x0080, 0x2e4b: 0x0080, + 0x2e4c: 0x0080, 0x2e4d: 0x0080, 0x2e4e: 0x0080, 0x2e4f: 0x0080, 0x2e50: 0x0080, 0x2e51: 0x0080, + 0x2e52: 0x0080, 0x2e54: 0x0080, 0x2e55: 0x0080, 0x2e56: 0x0080, 0x2e57: 0x0080, + 0x2e58: 0x0080, 0x2e59: 0x0080, 0x2e5a: 0x0080, 0x2e5b: 0x0080, 0x2e5c: 0x0080, 0x2e5d: 0x0080, + 0x2e5e: 0x0080, 0x2e5f: 0x0080, 0x2e60: 0x0080, 0x2e61: 0x0080, 0x2e62: 0x0080, 0x2e63: 0x0080, + 0x2e64: 0x0080, 0x2e65: 0x0080, 0x2e66: 0x0080, 0x2e68: 0x0080, 0x2e69: 0x0080, + 0x2e6a: 0x0080, 0x2e6b: 0x0080, + 0x2e70: 0x0080, 0x2e71: 0x0080, 0x2e72: 0x0080, 0x2e73: 0x00c0, 0x2e74: 0x0080, + 0x2e76: 0x0080, 0x2e77: 0x0080, 0x2e78: 0x0080, 0x2e79: 0x0080, 0x2e7a: 0x0080, 0x2e7b: 0x0080, + 0x2e7c: 0x0080, 0x2e7d: 0x0080, 0x2e7e: 0x0080, 0x2e7f: 0x0080, + // Block 0xba, offset 0x2e80 + 0x2e80: 0x0080, 0x2e81: 0x0080, 0x2e82: 0x0080, 0x2e83: 0x0080, 0x2e84: 0x0080, 0x2e85: 0x0080, + 0x2e86: 0x0080, 0x2e87: 0x0080, 0x2e88: 0x0080, 0x2e89: 0x0080, 0x2e8a: 0x0080, 0x2e8b: 0x0080, + 0x2e8c: 0x0080, 0x2e8d: 0x0080, 0x2e8e: 0x0080, 0x2e8f: 0x0080, 0x2e90: 0x0080, 0x2e91: 0x0080, + 0x2e92: 0x0080, 0x2e93: 0x0080, 0x2e94: 0x0080, 0x2e95: 0x0080, 0x2e96: 0x0080, 0x2e97: 0x0080, + 0x2e98: 0x0080, 0x2e99: 0x0080, 0x2e9a: 0x0080, 0x2e9b: 0x0080, 0x2e9c: 0x0080, 0x2e9d: 0x0080, + 0x2e9e: 0x0080, 0x2e9f: 0x0080, 0x2ea0: 0x0080, 0x2ea1: 0x0080, 0x2ea2: 0x0080, 0x2ea3: 0x0080, + 0x2ea4: 0x0080, 0x2ea5: 0x0080, 0x2ea6: 0x0080, 0x2ea7: 0x0080, 0x2ea8: 0x0080, 0x2ea9: 0x0080, + 0x2eaa: 0x0080, 0x2eab: 0x0080, 0x2eac: 0x0080, 0x2ead: 0x0080, 0x2eae: 0x0080, 0x2eaf: 0x0080, + 0x2eb0: 0x0080, 0x2eb1: 0x0080, 0x2eb2: 0x0080, 0x2eb3: 0x0080, 0x2eb4: 0x0080, 0x2eb5: 0x0080, + 0x2eb6: 0x0080, 0x2eb7: 0x0080, 0x2eb8: 0x0080, 0x2eb9: 0x0080, 0x2eba: 0x0080, 0x2ebb: 0x0080, + 0x2ebc: 0x0080, 0x2ebf: 0x0040, + // Block 0xbb, offset 0x2ec0 + 0x2ec1: 0x0080, 0x2ec2: 0x0080, 0x2ec3: 0x0080, 0x2ec4: 0x0080, 0x2ec5: 0x0080, + 0x2ec6: 0x0080, 0x2ec7: 0x0080, 0x2ec8: 0x0080, 0x2ec9: 0x0080, 0x2eca: 0x0080, 0x2ecb: 0x0080, + 0x2ecc: 0x0080, 0x2ecd: 0x0080, 0x2ece: 0x0080, 0x2ecf: 0x0080, 0x2ed0: 0x0080, 0x2ed1: 0x0080, + 0x2ed2: 0x0080, 0x2ed3: 0x0080, 0x2ed4: 0x0080, 0x2ed5: 0x0080, 0x2ed6: 0x0080, 0x2ed7: 0x0080, + 0x2ed8: 0x0080, 0x2ed9: 0x0080, 0x2eda: 0x0080, 0x2edb: 0x0080, 0x2edc: 0x0080, 0x2edd: 0x0080, + 0x2ede: 0x0080, 0x2edf: 0x0080, 0x2ee0: 0x0080, 0x2ee1: 0x0080, 0x2ee2: 0x0080, 0x2ee3: 0x0080, + 0x2ee4: 0x0080, 0x2ee5: 0x0080, 0x2ee6: 0x0080, 0x2ee7: 0x0080, 0x2ee8: 0x0080, 0x2ee9: 0x0080, + 0x2eea: 0x0080, 0x2eeb: 0x0080, 0x2eec: 0x0080, 0x2eed: 0x0080, 0x2eee: 0x0080, 0x2eef: 0x0080, + 0x2ef0: 0x0080, 0x2ef1: 0x0080, 0x2ef2: 0x0080, 0x2ef3: 0x0080, 0x2ef4: 0x0080, 0x2ef5: 0x0080, + 0x2ef6: 0x0080, 0x2ef7: 0x0080, 0x2ef8: 0x0080, 0x2ef9: 0x0080, 0x2efa: 0x0080, 0x2efb: 0x0080, + 0x2efc: 0x0080, 0x2efd: 0x0080, 0x2efe: 0x0080, 0x2eff: 0x0080, + // Block 0xbc, offset 0x2f00 + 0x2f00: 0x0080, 0x2f01: 0x0080, 0x2f02: 0x0080, 0x2f03: 0x0080, 0x2f04: 0x0080, 0x2f05: 0x0080, + 0x2f06: 0x0080, 0x2f07: 0x0080, 0x2f08: 0x0080, 0x2f09: 0x0080, 0x2f0a: 0x0080, 0x2f0b: 0x0080, + 0x2f0c: 0x0080, 0x2f0d: 0x0080, 0x2f0e: 0x0080, 0x2f0f: 0x0080, 0x2f10: 0x0080, 0x2f11: 0x0080, + 0x2f12: 0x0080, 0x2f13: 0x0080, 0x2f14: 0x0080, 0x2f15: 0x0080, 0x2f16: 0x0080, 0x2f17: 0x0080, + 0x2f18: 0x0080, 0x2f19: 0x0080, 0x2f1a: 0x0080, 0x2f1b: 0x0080, 0x2f1c: 0x0080, 0x2f1d: 0x0080, + 0x2f1e: 0x0080, 0x2f1f: 0x0080, 0x2f20: 0x0080, 0x2f21: 0x0080, 0x2f22: 0x0080, 0x2f23: 0x0080, + 0x2f24: 0x0080, 0x2f25: 0x0080, 0x2f26: 0x008c, 0x2f27: 0x008c, 0x2f28: 0x008c, 0x2f29: 0x008c, + 0x2f2a: 0x008c, 0x2f2b: 0x008c, 0x2f2c: 0x008c, 0x2f2d: 0x008c, 0x2f2e: 0x008c, 0x2f2f: 0x008c, + 0x2f30: 0x0080, 0x2f31: 0x008c, 0x2f32: 0x008c, 0x2f33: 0x008c, 0x2f34: 0x008c, 0x2f35: 0x008c, + 0x2f36: 0x008c, 0x2f37: 0x008c, 0x2f38: 0x008c, 0x2f39: 0x008c, 0x2f3a: 0x008c, 0x2f3b: 0x008c, + 0x2f3c: 0x008c, 0x2f3d: 0x008c, 0x2f3e: 0x008c, 0x2f3f: 0x008c, + // Block 0xbd, offset 0x2f40 + 0x2f40: 0x008c, 0x2f41: 0x008c, 0x2f42: 0x008c, 0x2f43: 0x008c, 0x2f44: 0x008c, 0x2f45: 0x008c, + 0x2f46: 0x008c, 0x2f47: 0x008c, 0x2f48: 0x008c, 0x2f49: 0x008c, 0x2f4a: 0x008c, 0x2f4b: 0x008c, + 0x2f4c: 0x008c, 0x2f4d: 0x008c, 0x2f4e: 0x008c, 0x2f4f: 0x008c, 0x2f50: 0x008c, 0x2f51: 0x008c, + 0x2f52: 0x008c, 0x2f53: 0x008c, 0x2f54: 0x008c, 0x2f55: 0x008c, 0x2f56: 0x008c, 0x2f57: 0x008c, + 0x2f58: 0x008c, 0x2f59: 0x008c, 0x2f5a: 0x008c, 0x2f5b: 0x008c, 0x2f5c: 0x008c, 0x2f5d: 0x008c, + 0x2f5e: 0x0080, 0x2f5f: 0x0080, 0x2f60: 0x0040, 0x2f61: 0x0080, 0x2f62: 0x0080, 0x2f63: 0x0080, + 0x2f64: 0x0080, 0x2f65: 0x0080, 0x2f66: 0x0080, 0x2f67: 0x0080, 0x2f68: 0x0080, 0x2f69: 0x0080, + 0x2f6a: 0x0080, 0x2f6b: 0x0080, 0x2f6c: 0x0080, 0x2f6d: 0x0080, 0x2f6e: 0x0080, 0x2f6f: 0x0080, + 0x2f70: 0x0080, 0x2f71: 0x0080, 0x2f72: 0x0080, 0x2f73: 0x0080, 0x2f74: 0x0080, 0x2f75: 0x0080, + 0x2f76: 0x0080, 0x2f77: 0x0080, 0x2f78: 0x0080, 0x2f79: 0x0080, 0x2f7a: 0x0080, 0x2f7b: 0x0080, + 0x2f7c: 0x0080, 0x2f7d: 0x0080, 0x2f7e: 0x0080, + // Block 0xbe, offset 0x2f80 + 0x2f82: 0x0080, 0x2f83: 0x0080, 0x2f84: 0x0080, 0x2f85: 0x0080, + 0x2f86: 0x0080, 0x2f87: 0x0080, 0x2f8a: 0x0080, 0x2f8b: 0x0080, + 0x2f8c: 0x0080, 0x2f8d: 0x0080, 0x2f8e: 0x0080, 0x2f8f: 0x0080, + 0x2f92: 0x0080, 0x2f93: 0x0080, 0x2f94: 0x0080, 0x2f95: 0x0080, 0x2f96: 0x0080, 0x2f97: 0x0080, + 0x2f9a: 0x0080, 0x2f9b: 0x0080, 0x2f9c: 0x0080, + 0x2fa0: 0x0080, 0x2fa1: 0x0080, 0x2fa2: 0x0080, 0x2fa3: 0x0080, + 0x2fa4: 0x0080, 0x2fa5: 0x0080, 0x2fa6: 0x0080, 0x2fa8: 0x0080, 0x2fa9: 0x0080, + 0x2faa: 0x0080, 0x2fab: 0x0080, 0x2fac: 0x0080, 0x2fad: 0x0080, 0x2fae: 0x0080, + 0x2fb9: 0x0040, 0x2fba: 0x0040, 0x2fbb: 0x0040, + 0x2fbc: 0x0080, 0x2fbd: 0x0080, + // Block 0xbf, offset 0x2fc0 + 0x2fc0: 0x00c0, 0x2fc1: 0x00c0, 0x2fc2: 0x00c0, 0x2fc3: 0x00c0, 0x2fc4: 0x00c0, 0x2fc5: 0x00c0, + 0x2fc6: 0x00c0, 0x2fc7: 0x00c0, 0x2fc8: 0x00c0, 0x2fc9: 0x00c0, 0x2fca: 0x00c0, 0x2fcb: 0x00c0, + 0x2fcd: 0x00c0, 0x2fce: 0x00c0, 0x2fcf: 0x00c0, 0x2fd0: 0x00c0, 0x2fd1: 0x00c0, + 0x2fd2: 0x00c0, 0x2fd3: 0x00c0, 0x2fd4: 0x00c0, 0x2fd5: 0x00c0, 0x2fd6: 0x00c0, 0x2fd7: 0x00c0, + 0x2fd8: 0x00c0, 0x2fd9: 0x00c0, 0x2fda: 0x00c0, 0x2fdb: 0x00c0, 0x2fdc: 0x00c0, 0x2fdd: 0x00c0, + 0x2fde: 0x00c0, 0x2fdf: 0x00c0, 0x2fe0: 0x00c0, 0x2fe1: 0x00c0, 0x2fe2: 0x00c0, 0x2fe3: 0x00c0, + 0x2fe4: 0x00c0, 0x2fe5: 0x00c0, 0x2fe6: 0x00c0, 0x2fe8: 0x00c0, 0x2fe9: 0x00c0, + 0x2fea: 0x00c0, 0x2feb: 0x00c0, 0x2fec: 0x00c0, 0x2fed: 0x00c0, 0x2fee: 0x00c0, 0x2fef: 0x00c0, + 0x2ff0: 0x00c0, 0x2ff1: 0x00c0, 0x2ff2: 0x00c0, 0x2ff3: 0x00c0, 0x2ff4: 0x00c0, 0x2ff5: 0x00c0, + 0x2ff6: 0x00c0, 0x2ff7: 0x00c0, 0x2ff8: 0x00c0, 0x2ff9: 0x00c0, 0x2ffa: 0x00c0, + 0x2ffc: 0x00c0, 0x2ffd: 0x00c0, 0x2fff: 0x00c0, + // Block 0xc0, offset 0x3000 + 0x3000: 0x00c0, 0x3001: 0x00c0, 0x3002: 0x00c0, 0x3003: 0x00c0, 0x3004: 0x00c0, 0x3005: 0x00c0, + 0x3006: 0x00c0, 0x3007: 0x00c0, 0x3008: 0x00c0, 0x3009: 0x00c0, 0x300a: 0x00c0, 0x300b: 0x00c0, + 0x300c: 0x00c0, 0x300d: 0x00c0, 0x3010: 0x00c0, 0x3011: 0x00c0, + 0x3012: 0x00c0, 0x3013: 0x00c0, 0x3014: 0x00c0, 0x3015: 0x00c0, 0x3016: 0x00c0, 0x3017: 0x00c0, + 0x3018: 0x00c0, 0x3019: 0x00c0, 0x301a: 0x00c0, 0x301b: 0x00c0, 0x301c: 0x00c0, 0x301d: 0x00c0, + // Block 0xc1, offset 0x3040 + 0x3040: 0x00c0, 0x3041: 0x00c0, 0x3042: 0x00c0, 0x3043: 0x00c0, 0x3044: 0x00c0, 0x3045: 0x00c0, + 0x3046: 0x00c0, 0x3047: 0x00c0, 0x3048: 0x00c0, 0x3049: 0x00c0, 0x304a: 0x00c0, 0x304b: 0x00c0, + 0x304c: 0x00c0, 0x304d: 0x00c0, 0x304e: 0x00c0, 0x304f: 0x00c0, 0x3050: 0x00c0, 0x3051: 0x00c0, + 0x3052: 0x00c0, 0x3053: 0x00c0, 0x3054: 0x00c0, 0x3055: 0x00c0, 0x3056: 0x00c0, 0x3057: 0x00c0, + 0x3058: 0x00c0, 0x3059: 0x00c0, 0x305a: 0x00c0, 0x305b: 0x00c0, 0x305c: 0x00c0, 0x305d: 0x00c0, + 0x305e: 0x00c0, 0x305f: 0x00c0, 0x3060: 0x00c0, 0x3061: 0x00c0, 0x3062: 0x00c0, 0x3063: 0x00c0, + 0x3064: 0x00c0, 0x3065: 0x00c0, 0x3066: 0x00c0, 0x3067: 0x00c0, 0x3068: 0x00c0, 0x3069: 0x00c0, + 0x306a: 0x00c0, 0x306b: 0x00c0, 0x306c: 0x00c0, 0x306d: 0x00c0, 0x306e: 0x00c0, 0x306f: 0x00c0, + 0x3070: 0x00c0, 0x3071: 0x00c0, 0x3072: 0x00c0, 0x3073: 0x00c0, 0x3074: 0x00c0, 0x3075: 0x00c0, + 0x3076: 0x00c0, 0x3077: 0x00c0, 0x3078: 0x00c0, 0x3079: 0x00c0, 0x307a: 0x00c0, + // Block 0xc2, offset 0x3080 + 0x3080: 0x0080, 0x3081: 0x0080, 0x3082: 0x0080, + 0x3087: 0x0080, 0x3088: 0x0080, 0x3089: 0x0080, 0x308a: 0x0080, 0x308b: 0x0080, + 0x308c: 0x0080, 0x308d: 0x0080, 0x308e: 0x0080, 0x308f: 0x0080, 0x3090: 0x0080, 0x3091: 0x0080, + 0x3092: 0x0080, 0x3093: 0x0080, 0x3094: 0x0080, 0x3095: 0x0080, 0x3096: 0x0080, 0x3097: 0x0080, + 0x3098: 0x0080, 0x3099: 0x0080, 0x309a: 0x0080, 0x309b: 0x0080, 0x309c: 0x0080, 0x309d: 0x0080, + 0x309e: 0x0080, 0x309f: 0x0080, 0x30a0: 0x0080, 0x30a1: 0x0080, 0x30a2: 0x0080, 0x30a3: 0x0080, + 0x30a4: 0x0080, 0x30a5: 0x0080, 0x30a6: 0x0080, 0x30a7: 0x0080, 0x30a8: 0x0080, 0x30a9: 0x0080, + 0x30aa: 0x0080, 0x30ab: 0x0080, 0x30ac: 0x0080, 0x30ad: 0x0080, 0x30ae: 0x0080, 0x30af: 0x0080, + 0x30b0: 0x0080, 0x30b1: 0x0080, 0x30b2: 0x0080, 0x30b3: 0x0080, + 0x30b7: 0x0080, 0x30b8: 0x0080, 0x30b9: 0x0080, 0x30ba: 0x0080, 0x30bb: 0x0080, + 0x30bc: 0x0080, 0x30bd: 0x0080, 0x30be: 0x0080, 0x30bf: 0x0080, + // Block 0xc3, offset 0x30c0 + 0x30c0: 0x0088, 0x30c1: 0x0088, 0x30c2: 0x0088, 0x30c3: 0x0088, 0x30c4: 0x0088, 0x30c5: 0x0088, + 0x30c6: 0x0088, 0x30c7: 0x0088, 0x30c8: 0x0088, 0x30c9: 0x0088, 0x30ca: 0x0088, 0x30cb: 0x0088, + 0x30cc: 0x0088, 0x30cd: 0x0088, 0x30ce: 0x0088, 0x30cf: 0x0088, 0x30d0: 0x0088, 0x30d1: 0x0088, + 0x30d2: 0x0088, 0x30d3: 0x0088, 0x30d4: 0x0088, 0x30d5: 0x0088, 0x30d6: 0x0088, 0x30d7: 0x0088, + 0x30d8: 0x0088, 0x30d9: 0x0088, 0x30da: 0x0088, 0x30db: 0x0088, 0x30dc: 0x0088, 0x30dd: 0x0088, + 0x30de: 0x0088, 0x30df: 0x0088, 0x30e0: 0x0088, 0x30e1: 0x0088, 0x30e2: 0x0088, 0x30e3: 0x0088, + 0x30e4: 0x0088, 0x30e5: 0x0088, 0x30e6: 0x0088, 0x30e7: 0x0088, 0x30e8: 0x0088, 0x30e9: 0x0088, + 0x30ea: 0x0088, 0x30eb: 0x0088, 0x30ec: 0x0088, 0x30ed: 0x0088, 0x30ee: 0x0088, 0x30ef: 0x0088, + 0x30f0: 0x0088, 0x30f1: 0x0088, 0x30f2: 0x0088, 0x30f3: 0x0088, 0x30f4: 0x0088, 0x30f5: 0x0088, + 0x30f6: 0x0088, 0x30f7: 0x0088, 0x30f8: 0x0088, 0x30f9: 0x0088, 0x30fa: 0x0088, 0x30fb: 0x0088, + 0x30fc: 0x0088, 0x30fd: 0x0088, 0x30fe: 0x0088, 0x30ff: 0x0088, + // Block 0xc4, offset 0x3100 + 0x3100: 0x0088, 0x3101: 0x0088, 0x3102: 0x0088, 0x3103: 0x0088, 0x3104: 0x0088, 0x3105: 0x0088, + 0x3106: 0x0088, 0x3107: 0x0088, 0x3108: 0x0088, 0x3109: 0x0088, 0x310a: 0x0088, 0x310b: 0x0088, + 0x310c: 0x0088, 0x310d: 0x0088, 0x310e: 0x0088, 0x3110: 0x0080, 0x3111: 0x0080, + 0x3112: 0x0080, 0x3113: 0x0080, 0x3114: 0x0080, 0x3115: 0x0080, 0x3116: 0x0080, 0x3117: 0x0080, + 0x3118: 0x0080, 0x3119: 0x0080, 0x311a: 0x0080, 0x311b: 0x0080, + 0x3120: 0x0088, + // Block 0xc5, offset 0x3140 + 0x3150: 0x0080, 0x3151: 0x0080, + 0x3152: 0x0080, 0x3153: 0x0080, 0x3154: 0x0080, 0x3155: 0x0080, 0x3156: 0x0080, 0x3157: 0x0080, + 0x3158: 0x0080, 0x3159: 0x0080, 0x315a: 0x0080, 0x315b: 0x0080, 0x315c: 0x0080, 0x315d: 0x0080, + 0x315e: 0x0080, 0x315f: 0x0080, 0x3160: 0x0080, 0x3161: 0x0080, 0x3162: 0x0080, 0x3163: 0x0080, + 0x3164: 0x0080, 0x3165: 0x0080, 0x3166: 0x0080, 0x3167: 0x0080, 0x3168: 0x0080, 0x3169: 0x0080, + 0x316a: 0x0080, 0x316b: 0x0080, 0x316c: 0x0080, 0x316d: 0x0080, 0x316e: 0x0080, 0x316f: 0x0080, + 0x3170: 0x0080, 0x3171: 0x0080, 0x3172: 0x0080, 0x3173: 0x0080, 0x3174: 0x0080, 0x3175: 0x0080, + 0x3176: 0x0080, 0x3177: 0x0080, 0x3178: 0x0080, 0x3179: 0x0080, 0x317a: 0x0080, 0x317b: 0x0080, + 0x317c: 0x0080, 0x317d: 0x00c3, + // Block 0xc6, offset 0x3180 + 0x3180: 0x00c0, 0x3181: 0x00c0, 0x3182: 0x00c0, 0x3183: 0x00c0, 0x3184: 0x00c0, 0x3185: 0x00c0, + 0x3186: 0x00c0, 0x3187: 0x00c0, 0x3188: 0x00c0, 0x3189: 0x00c0, 0x318a: 0x00c0, 0x318b: 0x00c0, + 0x318c: 0x00c0, 0x318d: 0x00c0, 0x318e: 0x00c0, 0x318f: 0x00c0, 0x3190: 0x00c0, 0x3191: 0x00c0, + 0x3192: 0x00c0, 0x3193: 0x00c0, 0x3194: 0x00c0, 0x3195: 0x00c0, 0x3196: 0x00c0, 0x3197: 0x00c0, + 0x3198: 0x00c0, 0x3199: 0x00c0, 0x319a: 0x00c0, 0x319b: 0x00c0, 0x319c: 0x00c0, + 0x31a0: 0x00c0, 0x31a1: 0x00c0, 0x31a2: 0x00c0, 0x31a3: 0x00c0, + 0x31a4: 0x00c0, 0x31a5: 0x00c0, 0x31a6: 0x00c0, 0x31a7: 0x00c0, 0x31a8: 0x00c0, 0x31a9: 0x00c0, + 0x31aa: 0x00c0, 0x31ab: 0x00c0, 0x31ac: 0x00c0, 0x31ad: 0x00c0, 0x31ae: 0x00c0, 0x31af: 0x00c0, + 0x31b0: 0x00c0, 0x31b1: 0x00c0, 0x31b2: 0x00c0, 0x31b3: 0x00c0, 0x31b4: 0x00c0, 0x31b5: 0x00c0, + 0x31b6: 0x00c0, 0x31b7: 0x00c0, 0x31b8: 0x00c0, 0x31b9: 0x00c0, 0x31ba: 0x00c0, 0x31bb: 0x00c0, + 0x31bc: 0x00c0, 0x31bd: 0x00c0, 0x31be: 0x00c0, 0x31bf: 0x00c0, + // Block 0xc7, offset 0x31c0 + 0x31c0: 0x00c0, 0x31c1: 0x00c0, 0x31c2: 0x00c0, 0x31c3: 0x00c0, 0x31c4: 0x00c0, 0x31c5: 0x00c0, + 0x31c6: 0x00c0, 0x31c7: 0x00c0, 0x31c8: 0x00c0, 0x31c9: 0x00c0, 0x31ca: 0x00c0, 0x31cb: 0x00c0, + 0x31cc: 0x00c0, 0x31cd: 0x00c0, 0x31ce: 0x00c0, 0x31cf: 0x00c0, 0x31d0: 0x00c0, + 0x31e0: 0x00c3, 0x31e1: 0x0080, 0x31e2: 0x0080, 0x31e3: 0x0080, + 0x31e4: 0x0080, 0x31e5: 0x0080, 0x31e6: 0x0080, 0x31e7: 0x0080, 0x31e8: 0x0080, 0x31e9: 0x0080, + 0x31ea: 0x0080, 0x31eb: 0x0080, 0x31ec: 0x0080, 0x31ed: 0x0080, 0x31ee: 0x0080, 0x31ef: 0x0080, + 0x31f0: 0x0080, 0x31f1: 0x0080, 0x31f2: 0x0080, 0x31f3: 0x0080, 0x31f4: 0x0080, 0x31f5: 0x0080, + 0x31f6: 0x0080, 0x31f7: 0x0080, 0x31f8: 0x0080, 0x31f9: 0x0080, 0x31fa: 0x0080, 0x31fb: 0x0080, + // Block 0xc8, offset 0x3200 + 0x3200: 0x00c0, 0x3201: 0x00c0, 0x3202: 0x00c0, 0x3203: 0x00c0, 0x3204: 0x00c0, 0x3205: 0x00c0, + 0x3206: 0x00c0, 0x3207: 0x00c0, 0x3208: 0x00c0, 0x3209: 0x00c0, 0x320a: 0x00c0, 0x320b: 0x00c0, + 0x320c: 0x00c0, 0x320d: 0x00c0, 0x320e: 0x00c0, 0x320f: 0x00c0, 0x3210: 0x00c0, 0x3211: 0x00c0, + 0x3212: 0x00c0, 0x3213: 0x00c0, 0x3214: 0x00c0, 0x3215: 0x00c0, 0x3216: 0x00c0, 0x3217: 0x00c0, + 0x3218: 0x00c0, 0x3219: 0x00c0, 0x321a: 0x00c0, 0x321b: 0x00c0, 0x321c: 0x00c0, 0x321d: 0x00c0, + 0x321e: 0x00c0, 0x321f: 0x00c0, 0x3220: 0x0080, 0x3221: 0x0080, 0x3222: 0x0080, 0x3223: 0x0080, + 0x3230: 0x00c0, 0x3231: 0x00c0, 0x3232: 0x00c0, 0x3233: 0x00c0, 0x3234: 0x00c0, 0x3235: 0x00c0, + 0x3236: 0x00c0, 0x3237: 0x00c0, 0x3238: 0x00c0, 0x3239: 0x00c0, 0x323a: 0x00c0, 0x323b: 0x00c0, + 0x323c: 0x00c0, 0x323d: 0x00c0, 0x323e: 0x00c0, 0x323f: 0x00c0, + // Block 0xc9, offset 0x3240 + 0x3240: 0x00c0, 0x3241: 0x0080, 0x3242: 0x00c0, 0x3243: 0x00c0, 0x3244: 0x00c0, 0x3245: 0x00c0, + 0x3246: 0x00c0, 0x3247: 0x00c0, 0x3248: 0x00c0, 0x3249: 0x00c0, 0x324a: 0x0080, + 0x3250: 0x00c0, 0x3251: 0x00c0, + 0x3252: 0x00c0, 0x3253: 0x00c0, 0x3254: 0x00c0, 0x3255: 0x00c0, 0x3256: 0x00c0, 0x3257: 0x00c0, + 0x3258: 0x00c0, 0x3259: 0x00c0, 0x325a: 0x00c0, 0x325b: 0x00c0, 0x325c: 0x00c0, 0x325d: 0x00c0, + 0x325e: 0x00c0, 0x325f: 0x00c0, 0x3260: 0x00c0, 0x3261: 0x00c0, 0x3262: 0x00c0, 0x3263: 0x00c0, + 0x3264: 0x00c0, 0x3265: 0x00c0, 0x3266: 0x00c0, 0x3267: 0x00c0, 0x3268: 0x00c0, 0x3269: 0x00c0, + 0x326a: 0x00c0, 0x326b: 0x00c0, 0x326c: 0x00c0, 0x326d: 0x00c0, 0x326e: 0x00c0, 0x326f: 0x00c0, + 0x3270: 0x00c0, 0x3271: 0x00c0, 0x3272: 0x00c0, 0x3273: 0x00c0, 0x3274: 0x00c0, 0x3275: 0x00c0, + 0x3276: 0x00c3, 0x3277: 0x00c3, 0x3278: 0x00c3, 0x3279: 0x00c3, 0x327a: 0x00c3, + // Block 0xca, offset 0x3280 + 0x3280: 0x00c0, 0x3281: 0x00c0, 0x3282: 0x00c0, 0x3283: 0x00c0, 0x3284: 0x00c0, 0x3285: 0x00c0, + 0x3286: 0x00c0, 0x3287: 0x00c0, 0x3288: 0x00c0, 0x3289: 0x00c0, 0x328a: 0x00c0, 0x328b: 0x00c0, + 0x328c: 0x00c0, 0x328d: 0x00c0, 0x328e: 0x00c0, 0x328f: 0x00c0, 0x3290: 0x00c0, 0x3291: 0x00c0, + 0x3292: 0x00c0, 0x3293: 0x00c0, 0x3294: 0x00c0, 0x3295: 0x00c0, 0x3296: 0x00c0, 0x3297: 0x00c0, + 0x3298: 0x00c0, 0x3299: 0x00c0, 0x329a: 0x00c0, 0x329b: 0x00c0, 0x329c: 0x00c0, 0x329d: 0x00c0, + 0x329f: 0x0080, 0x32a0: 0x00c0, 0x32a1: 0x00c0, 0x32a2: 0x00c0, 0x32a3: 0x00c0, + 0x32a4: 0x00c0, 0x32a5: 0x00c0, 0x32a6: 0x00c0, 0x32a7: 0x00c0, 0x32a8: 0x00c0, 0x32a9: 0x00c0, + 0x32aa: 0x00c0, 0x32ab: 0x00c0, 0x32ac: 0x00c0, 0x32ad: 0x00c0, 0x32ae: 0x00c0, 0x32af: 0x00c0, + 0x32b0: 0x00c0, 0x32b1: 0x00c0, 0x32b2: 0x00c0, 0x32b3: 0x00c0, 0x32b4: 0x00c0, 0x32b5: 0x00c0, + 0x32b6: 0x00c0, 0x32b7: 0x00c0, 0x32b8: 0x00c0, 0x32b9: 0x00c0, 0x32ba: 0x00c0, 0x32bb: 0x00c0, + 0x32bc: 0x00c0, 0x32bd: 0x00c0, 0x32be: 0x00c0, 0x32bf: 0x00c0, + // Block 0xcb, offset 0x32c0 + 0x32c0: 0x00c0, 0x32c1: 0x00c0, 0x32c2: 0x00c0, 0x32c3: 0x00c0, + 0x32c8: 0x00c0, 0x32c9: 0x00c0, 0x32ca: 0x00c0, 0x32cb: 0x00c0, + 0x32cc: 0x00c0, 0x32cd: 0x00c0, 0x32ce: 0x00c0, 0x32cf: 0x00c0, 0x32d0: 0x0080, 0x32d1: 0x0080, + 0x32d2: 0x0080, 0x32d3: 0x0080, 0x32d4: 0x0080, 0x32d5: 0x0080, + // Block 0xcc, offset 0x3300 + 0x3300: 0x00c0, 0x3301: 0x00c0, 0x3302: 0x00c0, 0x3303: 0x00c0, 0x3304: 0x00c0, 0x3305: 0x00c0, + 0x3306: 0x00c0, 0x3307: 0x00c0, 0x3308: 0x00c0, 0x3309: 0x00c0, 0x330a: 0x00c0, 0x330b: 0x00c0, + 0x330c: 0x00c0, 0x330d: 0x00c0, 0x330e: 0x00c0, 0x330f: 0x00c0, 0x3310: 0x00c0, 0x3311: 0x00c0, + 0x3312: 0x00c0, 0x3313: 0x00c0, 0x3314: 0x00c0, 0x3315: 0x00c0, 0x3316: 0x00c0, 0x3317: 0x00c0, + 0x3318: 0x00c0, 0x3319: 0x00c0, 0x331a: 0x00c0, 0x331b: 0x00c0, 0x331c: 0x00c0, 0x331d: 0x00c0, + 0x3320: 0x00c0, 0x3321: 0x00c0, 0x3322: 0x00c0, 0x3323: 0x00c0, + 0x3324: 0x00c0, 0x3325: 0x00c0, 0x3326: 0x00c0, 0x3327: 0x00c0, 0x3328: 0x00c0, 0x3329: 0x00c0, + 0x3330: 0x00c0, 0x3331: 0x00c0, 0x3332: 0x00c0, 0x3333: 0x00c0, 0x3334: 0x00c0, 0x3335: 0x00c0, + 0x3336: 0x00c0, 0x3337: 0x00c0, 0x3338: 0x00c0, 0x3339: 0x00c0, 0x333a: 0x00c0, 0x333b: 0x00c0, + 0x333c: 0x00c0, 0x333d: 0x00c0, 0x333e: 0x00c0, 0x333f: 0x00c0, + // Block 0xcd, offset 0x3340 + 0x3340: 0x00c0, 0x3341: 0x00c0, 0x3342: 0x00c0, 0x3343: 0x00c0, 0x3344: 0x00c0, 0x3345: 0x00c0, + 0x3346: 0x00c0, 0x3347: 0x00c0, 0x3348: 0x00c0, 0x3349: 0x00c0, 0x334a: 0x00c0, 0x334b: 0x00c0, + 0x334c: 0x00c0, 0x334d: 0x00c0, 0x334e: 0x00c0, 0x334f: 0x00c0, 0x3350: 0x00c0, 0x3351: 0x00c0, + 0x3352: 0x00c0, 0x3353: 0x00c0, + 0x3358: 0x00c0, 0x3359: 0x00c0, 0x335a: 0x00c0, 0x335b: 0x00c0, 0x335c: 0x00c0, 0x335d: 0x00c0, + 0x335e: 0x00c0, 0x335f: 0x00c0, 0x3360: 0x00c0, 0x3361: 0x00c0, 0x3362: 0x00c0, 0x3363: 0x00c0, + 0x3364: 0x00c0, 0x3365: 0x00c0, 0x3366: 0x00c0, 0x3367: 0x00c0, 0x3368: 0x00c0, 0x3369: 0x00c0, + 0x336a: 0x00c0, 0x336b: 0x00c0, 0x336c: 0x00c0, 0x336d: 0x00c0, 0x336e: 0x00c0, 0x336f: 0x00c0, + 0x3370: 0x00c0, 0x3371: 0x00c0, 0x3372: 0x00c0, 0x3373: 0x00c0, 0x3374: 0x00c0, 0x3375: 0x00c0, + 0x3376: 0x00c0, 0x3377: 0x00c0, 0x3378: 0x00c0, 0x3379: 0x00c0, 0x337a: 0x00c0, 0x337b: 0x00c0, + // Block 0xce, offset 0x3380 + 0x3380: 0x00c0, 0x3381: 0x00c0, 0x3382: 0x00c0, 0x3383: 0x00c0, 0x3384: 0x00c0, 0x3385: 0x00c0, + 0x3386: 0x00c0, 0x3387: 0x00c0, 0x3388: 0x00c0, 0x3389: 0x00c0, 0x338a: 0x00c0, 0x338b: 0x00c0, + 0x338c: 0x00c0, 0x338d: 0x00c0, 0x338e: 0x00c0, 0x338f: 0x00c0, 0x3390: 0x00c0, 0x3391: 0x00c0, + 0x3392: 0x00c0, 0x3393: 0x00c0, 0x3394: 0x00c0, 0x3395: 0x00c0, 0x3396: 0x00c0, 0x3397: 0x00c0, + 0x3398: 0x00c0, 0x3399: 0x00c0, 0x339a: 0x00c0, 0x339b: 0x00c0, 0x339c: 0x00c0, 0x339d: 0x00c0, + 0x339e: 0x00c0, 0x339f: 0x00c0, 0x33a0: 0x00c0, 0x33a1: 0x00c0, 0x33a2: 0x00c0, 0x33a3: 0x00c0, + 0x33a4: 0x00c0, 0x33a5: 0x00c0, 0x33a6: 0x00c0, 0x33a7: 0x00c0, + 0x33b0: 0x00c0, 0x33b1: 0x00c0, 0x33b2: 0x00c0, 0x33b3: 0x00c0, 0x33b4: 0x00c0, 0x33b5: 0x00c0, + 0x33b6: 0x00c0, 0x33b7: 0x00c0, 0x33b8: 0x00c0, 0x33b9: 0x00c0, 0x33ba: 0x00c0, 0x33bb: 0x00c0, + 0x33bc: 0x00c0, 0x33bd: 0x00c0, 0x33be: 0x00c0, 0x33bf: 0x00c0, + // Block 0xcf, offset 0x33c0 + 0x33c0: 0x00c0, 0x33c1: 0x00c0, 0x33c2: 0x00c0, 0x33c3: 0x00c0, 0x33c4: 0x00c0, 0x33c5: 0x00c0, + 0x33c6: 0x00c0, 0x33c7: 0x00c0, 0x33c8: 0x00c0, 0x33c9: 0x00c0, 0x33ca: 0x00c0, 0x33cb: 0x00c0, + 0x33cc: 0x00c0, 0x33cd: 0x00c0, 0x33ce: 0x00c0, 0x33cf: 0x00c0, 0x33d0: 0x00c0, 0x33d1: 0x00c0, + 0x33d2: 0x00c0, 0x33d3: 0x00c0, 0x33d4: 0x00c0, 0x33d5: 0x00c0, 0x33d6: 0x00c0, 0x33d7: 0x00c0, + 0x33d8: 0x00c0, 0x33d9: 0x00c0, 0x33da: 0x00c0, 0x33db: 0x00c0, 0x33dc: 0x00c0, 0x33dd: 0x00c0, + 0x33de: 0x00c0, 0x33df: 0x00c0, 0x33e0: 0x00c0, 0x33e1: 0x00c0, 0x33e2: 0x00c0, 0x33e3: 0x00c0, + 0x33ef: 0x0080, + // Block 0xd0, offset 0x3400 + 0x3400: 0x00c0, 0x3401: 0x00c0, 0x3402: 0x00c0, 0x3403: 0x00c0, 0x3404: 0x00c0, 0x3405: 0x00c0, + 0x3406: 0x00c0, 0x3407: 0x00c0, 0x3408: 0x00c0, 0x3409: 0x00c0, 0x340a: 0x00c0, 0x340b: 0x00c0, + 0x340c: 0x00c0, 0x340d: 0x00c0, 0x340e: 0x00c0, 0x340f: 0x00c0, 0x3410: 0x00c0, 0x3411: 0x00c0, + 0x3412: 0x00c0, 0x3413: 0x00c0, 0x3414: 0x00c0, 0x3415: 0x00c0, 0x3416: 0x00c0, 0x3417: 0x00c0, + 0x3418: 0x00c0, 0x3419: 0x00c0, 0x341a: 0x00c0, 0x341b: 0x00c0, 0x341c: 0x00c0, 0x341d: 0x00c0, + 0x341e: 0x00c0, 0x341f: 0x00c0, 0x3420: 0x00c0, 0x3421: 0x00c0, 0x3422: 0x00c0, 0x3423: 0x00c0, + 0x3424: 0x00c0, 0x3425: 0x00c0, 0x3426: 0x00c0, 0x3427: 0x00c0, 0x3428: 0x00c0, 0x3429: 0x00c0, + 0x342a: 0x00c0, 0x342b: 0x00c0, 0x342c: 0x00c0, 0x342d: 0x00c0, 0x342e: 0x00c0, 0x342f: 0x00c0, + 0x3430: 0x00c0, 0x3431: 0x00c0, 0x3432: 0x00c0, 0x3433: 0x00c0, 0x3434: 0x00c0, 0x3435: 0x00c0, + 0x3436: 0x00c0, + // Block 0xd1, offset 0x3440 + 0x3440: 0x00c0, 0x3441: 0x00c0, 0x3442: 0x00c0, 0x3443: 0x00c0, 0x3444: 0x00c0, 0x3445: 0x00c0, + 0x3446: 0x00c0, 0x3447: 0x00c0, 0x3448: 0x00c0, 0x3449: 0x00c0, 0x344a: 0x00c0, 0x344b: 0x00c0, + 0x344c: 0x00c0, 0x344d: 0x00c0, 0x344e: 0x00c0, 0x344f: 0x00c0, 0x3450: 0x00c0, 0x3451: 0x00c0, + 0x3452: 0x00c0, 0x3453: 0x00c0, 0x3454: 0x00c0, 0x3455: 0x00c0, + 0x3460: 0x00c0, 0x3461: 0x00c0, 0x3462: 0x00c0, 0x3463: 0x00c0, + 0x3464: 0x00c0, 0x3465: 0x00c0, 0x3466: 0x00c0, 0x3467: 0x00c0, + // Block 0xd2, offset 0x3480 + 0x3480: 0x00c0, 0x3481: 0x00c0, 0x3482: 0x00c0, 0x3483: 0x00c0, 0x3484: 0x00c0, 0x3485: 0x00c0, + 0x3488: 0x00c0, 0x348a: 0x00c0, 0x348b: 0x00c0, + 0x348c: 0x00c0, 0x348d: 0x00c0, 0x348e: 0x00c0, 0x348f: 0x00c0, 0x3490: 0x00c0, 0x3491: 0x00c0, + 0x3492: 0x00c0, 0x3493: 0x00c0, 0x3494: 0x00c0, 0x3495: 0x00c0, 0x3496: 0x00c0, 0x3497: 0x00c0, + 0x3498: 0x00c0, 0x3499: 0x00c0, 0x349a: 0x00c0, 0x349b: 0x00c0, 0x349c: 0x00c0, 0x349d: 0x00c0, + 0x349e: 0x00c0, 0x349f: 0x00c0, 0x34a0: 0x00c0, 0x34a1: 0x00c0, 0x34a2: 0x00c0, 0x34a3: 0x00c0, + 0x34a4: 0x00c0, 0x34a5: 0x00c0, 0x34a6: 0x00c0, 0x34a7: 0x00c0, 0x34a8: 0x00c0, 0x34a9: 0x00c0, + 0x34aa: 0x00c0, 0x34ab: 0x00c0, 0x34ac: 0x00c0, 0x34ad: 0x00c0, 0x34ae: 0x00c0, 0x34af: 0x00c0, + 0x34b0: 0x00c0, 0x34b1: 0x00c0, 0x34b2: 0x00c0, 0x34b3: 0x00c0, 0x34b4: 0x00c0, 0x34b5: 0x00c0, + 0x34b7: 0x00c0, 0x34b8: 0x00c0, + 0x34bc: 0x00c0, 0x34bf: 0x00c0, + // Block 0xd3, offset 0x34c0 + 0x34c0: 0x00c0, 0x34c1: 0x00c0, 0x34c2: 0x00c0, 0x34c3: 0x00c0, 0x34c4: 0x00c0, 0x34c5: 0x00c0, + 0x34c6: 0x00c0, 0x34c7: 0x00c0, 0x34c8: 0x00c0, 0x34c9: 0x00c0, 0x34ca: 0x00c0, 0x34cb: 0x00c0, + 0x34cc: 0x00c0, 0x34cd: 0x00c0, 0x34ce: 0x00c0, 0x34cf: 0x00c0, 0x34d0: 0x00c0, 0x34d1: 0x00c0, + 0x34d2: 0x00c0, 0x34d3: 0x00c0, 0x34d4: 0x00c0, 0x34d5: 0x00c0, 0x34d7: 0x0080, + 0x34d8: 0x0080, 0x34d9: 0x0080, 0x34da: 0x0080, 0x34db: 0x0080, 0x34dc: 0x0080, 0x34dd: 0x0080, + 0x34de: 0x0080, 0x34df: 0x0080, 0x34e0: 0x00c0, 0x34e1: 0x00c0, 0x34e2: 0x00c0, 0x34e3: 0x00c0, + 0x34e4: 0x00c0, 0x34e5: 0x00c0, 0x34e6: 0x00c0, 0x34e7: 0x00c0, 0x34e8: 0x00c0, 0x34e9: 0x00c0, + 0x34ea: 0x00c0, 0x34eb: 0x00c0, 0x34ec: 0x00c0, 0x34ed: 0x00c0, 0x34ee: 0x00c0, 0x34ef: 0x00c0, + 0x34f0: 0x00c0, 0x34f1: 0x00c0, 0x34f2: 0x00c0, 0x34f3: 0x00c0, 0x34f4: 0x00c0, 0x34f5: 0x00c0, + 0x34f6: 0x00c0, 0x34f7: 0x0080, 0x34f8: 0x0080, 0x34f9: 0x0080, 0x34fa: 0x0080, 0x34fb: 0x0080, + 0x34fc: 0x0080, 0x34fd: 0x0080, 0x34fe: 0x0080, 0x34ff: 0x0080, + // Block 0xd4, offset 0x3500 + 0x3500: 0x00c0, 0x3501: 0x00c0, 0x3502: 0x00c0, 0x3503: 0x00c0, 0x3504: 0x00c0, 0x3505: 0x00c0, + 0x3506: 0x00c0, 0x3507: 0x00c0, 0x3508: 0x00c0, 0x3509: 0x00c0, 0x350a: 0x00c0, 0x350b: 0x00c0, + 0x350c: 0x00c0, 0x350d: 0x00c0, 0x350e: 0x00c0, 0x350f: 0x00c0, 0x3510: 0x00c0, 0x3511: 0x00c0, + 0x3512: 0x00c0, 0x3513: 0x00c0, 0x3514: 0x00c0, 0x3515: 0x00c0, 0x3516: 0x00c0, 0x3517: 0x00c0, + 0x3518: 0x00c0, 0x3519: 0x00c0, 0x351a: 0x00c0, 0x351b: 0x00c0, 0x351c: 0x00c0, 0x351d: 0x00c0, + 0x351e: 0x00c0, + 0x3527: 0x0080, 0x3528: 0x0080, 0x3529: 0x0080, + 0x352a: 0x0080, 0x352b: 0x0080, 0x352c: 0x0080, 0x352d: 0x0080, 0x352e: 0x0080, 0x352f: 0x0080, + // Block 0xd5, offset 0x3540 + 0x3560: 0x00c0, 0x3561: 0x00c0, 0x3562: 0x00c0, 0x3563: 0x00c0, + 0x3564: 0x00c0, 0x3565: 0x00c0, 0x3566: 0x00c0, 0x3567: 0x00c0, 0x3568: 0x00c0, 0x3569: 0x00c0, + 0x356a: 0x00c0, 0x356b: 0x00c0, 0x356c: 0x00c0, 0x356d: 0x00c0, 0x356e: 0x00c0, 0x356f: 0x00c0, + 0x3570: 0x00c0, 0x3571: 0x00c0, 0x3572: 0x00c0, 0x3574: 0x00c0, 0x3575: 0x00c0, + 0x357b: 0x0080, + 0x357c: 0x0080, 0x357d: 0x0080, 0x357e: 0x0080, 0x357f: 0x0080, + // Block 0xd6, offset 0x3580 + 0x3580: 0x00c0, 0x3581: 0x00c0, 0x3582: 0x00c0, 0x3583: 0x00c0, 0x3584: 0x00c0, 0x3585: 0x00c0, + 0x3586: 0x00c0, 0x3587: 0x00c0, 0x3588: 0x00c0, 0x3589: 0x00c0, 0x358a: 0x00c0, 0x358b: 0x00c0, + 0x358c: 0x00c0, 0x358d: 0x00c0, 0x358e: 0x00c0, 0x358f: 0x00c0, 0x3590: 0x00c0, 0x3591: 0x00c0, + 0x3592: 0x00c0, 0x3593: 0x00c0, 0x3594: 0x00c0, 0x3595: 0x00c0, 0x3596: 0x0080, 0x3597: 0x0080, + 0x3598: 0x0080, 0x3599: 0x0080, 0x359a: 0x0080, 0x359b: 0x0080, + 0x359f: 0x0080, 0x35a0: 0x00c0, 0x35a1: 0x00c0, 0x35a2: 0x00c0, 0x35a3: 0x00c0, + 0x35a4: 0x00c0, 0x35a5: 0x00c0, 0x35a6: 0x00c0, 0x35a7: 0x00c0, 0x35a8: 0x00c0, 0x35a9: 0x00c0, + 0x35aa: 0x00c0, 0x35ab: 0x00c0, 0x35ac: 0x00c0, 0x35ad: 0x00c0, 0x35ae: 0x00c0, 0x35af: 0x00c0, + 0x35b0: 0x00c0, 0x35b1: 0x00c0, 0x35b2: 0x00c0, 0x35b3: 0x00c0, 0x35b4: 0x00c0, 0x35b5: 0x00c0, + 0x35b6: 0x00c0, 0x35b7: 0x00c0, 0x35b8: 0x00c0, 0x35b9: 0x00c0, + 0x35bf: 0x0080, + // Block 0xd7, offset 0x35c0 + 0x35c0: 0x00c0, 0x35c1: 0x00c0, 0x35c2: 0x00c0, 0x35c3: 0x00c0, 0x35c4: 0x00c0, 0x35c5: 0x00c0, + 0x35c6: 0x00c0, 0x35c7: 0x00c0, 0x35c8: 0x00c0, 0x35c9: 0x00c0, 0x35ca: 0x00c0, 0x35cb: 0x00c0, + 0x35cc: 0x00c0, 0x35cd: 0x00c0, 0x35ce: 0x00c0, 0x35cf: 0x00c0, 0x35d0: 0x00c0, 0x35d1: 0x00c0, + 0x35d2: 0x00c0, 0x35d3: 0x00c0, 0x35d4: 0x00c0, 0x35d5: 0x00c0, 0x35d6: 0x00c0, 0x35d7: 0x00c0, + 0x35d8: 0x00c0, 0x35d9: 0x00c0, 0x35da: 0x00c0, 0x35db: 0x00c0, 0x35dc: 0x00c0, 0x35dd: 0x00c0, + 0x35de: 0x00c0, 0x35df: 0x00c0, 0x35e0: 0x00c0, 0x35e1: 0x00c0, 0x35e2: 0x00c0, 0x35e3: 0x00c0, + 0x35e4: 0x00c0, 0x35e5: 0x00c0, 0x35e6: 0x00c0, 0x35e7: 0x00c0, 0x35e8: 0x00c0, 0x35e9: 0x00c0, + 0x35ea: 0x00c0, 0x35eb: 0x00c0, 0x35ec: 0x00c0, 0x35ed: 0x00c0, 0x35ee: 0x00c0, 0x35ef: 0x00c0, + 0x35f0: 0x00c0, 0x35f1: 0x00c0, 0x35f2: 0x00c0, 0x35f3: 0x00c0, 0x35f4: 0x00c0, 0x35f5: 0x00c0, + 0x35f6: 0x00c0, 0x35f7: 0x00c0, + 0x35fc: 0x0080, 0x35fd: 0x0080, 0x35fe: 0x00c0, 0x35ff: 0x00c0, + // Block 0xd8, offset 0x3600 + 0x3600: 0x00c0, 0x3601: 0x00c3, 0x3602: 0x00c3, 0x3603: 0x00c3, 0x3605: 0x00c3, + 0x3606: 0x00c3, + 0x360c: 0x00c3, 0x360d: 0x00c3, 0x360e: 0x00c3, 0x360f: 0x00c3, 0x3610: 0x00c0, 0x3611: 0x00c0, + 0x3612: 0x00c0, 0x3613: 0x00c0, 0x3615: 0x00c0, 0x3616: 0x00c0, 0x3617: 0x00c0, + 0x3619: 0x00c0, 0x361a: 0x00c0, 0x361b: 0x00c0, 0x361c: 0x00c0, 0x361d: 0x00c0, + 0x361e: 0x00c0, 0x361f: 0x00c0, 0x3620: 0x00c0, 0x3621: 0x00c0, 0x3622: 0x00c0, 0x3623: 0x00c0, + 0x3624: 0x00c0, 0x3625: 0x00c0, 0x3626: 0x00c0, 0x3627: 0x00c0, 0x3628: 0x00c0, 0x3629: 0x00c0, + 0x362a: 0x00c0, 0x362b: 0x00c0, 0x362c: 0x00c0, 0x362d: 0x00c0, 0x362e: 0x00c0, 0x362f: 0x00c0, + 0x3630: 0x00c0, 0x3631: 0x00c0, 0x3632: 0x00c0, 0x3633: 0x00c0, + 0x3638: 0x00c3, 0x3639: 0x00c3, 0x363a: 0x00c3, + 0x363f: 0x00c6, + // Block 0xd9, offset 0x3640 + 0x3640: 0x0080, 0x3641: 0x0080, 0x3642: 0x0080, 0x3643: 0x0080, 0x3644: 0x0080, 0x3645: 0x0080, + 0x3646: 0x0080, 0x3647: 0x0080, + 0x3650: 0x0080, 0x3651: 0x0080, + 0x3652: 0x0080, 0x3653: 0x0080, 0x3654: 0x0080, 0x3655: 0x0080, 0x3656: 0x0080, 0x3657: 0x0080, + 0x3658: 0x0080, + 0x3660: 0x00c0, 0x3661: 0x00c0, 0x3662: 0x00c0, 0x3663: 0x00c0, + 0x3664: 0x00c0, 0x3665: 0x00c0, 0x3666: 0x00c0, 0x3667: 0x00c0, 0x3668: 0x00c0, 0x3669: 0x00c0, + 0x366a: 0x00c0, 0x366b: 0x00c0, 0x366c: 0x00c0, 0x366d: 0x00c0, 0x366e: 0x00c0, 0x366f: 0x00c0, + 0x3670: 0x00c0, 0x3671: 0x00c0, 0x3672: 0x00c0, 0x3673: 0x00c0, 0x3674: 0x00c0, 0x3675: 0x00c0, + 0x3676: 0x00c0, 0x3677: 0x00c0, 0x3678: 0x00c0, 0x3679: 0x00c0, 0x367a: 0x00c0, 0x367b: 0x00c0, + 0x367c: 0x00c0, 0x367d: 0x0080, 0x367e: 0x0080, 0x367f: 0x0080, + // Block 0xda, offset 0x3680 + 0x3680: 0x00c0, 0x3681: 0x00c0, 0x3682: 0x00c0, 0x3683: 0x00c0, 0x3684: 0x00c0, 0x3685: 0x00c0, + 0x3686: 0x00c0, 0x3687: 0x00c0, 0x3688: 0x00c0, 0x3689: 0x00c0, 0x368a: 0x00c0, 0x368b: 0x00c0, + 0x368c: 0x00c0, 0x368d: 0x00c0, 0x368e: 0x00c0, 0x368f: 0x00c0, 0x3690: 0x00c0, 0x3691: 0x00c0, + 0x3692: 0x00c0, 0x3693: 0x00c0, 0x3694: 0x00c0, 0x3695: 0x00c0, 0x3696: 0x00c0, 0x3697: 0x00c0, + 0x3698: 0x00c0, 0x3699: 0x00c0, 0x369a: 0x00c0, 0x369b: 0x00c0, 0x369c: 0x00c0, 0x369d: 0x0080, + 0x369e: 0x0080, 0x369f: 0x0080, + // Block 0xdb, offset 0x36c0 + 0x36c0: 0x00c2, 0x36c1: 0x00c2, 0x36c2: 0x00c2, 0x36c3: 0x00c2, 0x36c4: 0x00c2, 0x36c5: 0x00c4, + 0x36c6: 0x00c0, 0x36c7: 0x00c4, 0x36c8: 0x0080, 0x36c9: 0x00c4, 0x36ca: 0x00c4, 0x36cb: 0x00c0, + 0x36cc: 0x00c0, 0x36cd: 0x00c1, 0x36ce: 0x00c4, 0x36cf: 0x00c4, 0x36d0: 0x00c4, 0x36d1: 0x00c4, + 0x36d2: 0x00c4, 0x36d3: 0x00c2, 0x36d4: 0x00c2, 0x36d5: 0x00c2, 0x36d6: 0x00c2, 0x36d7: 0x00c1, + 0x36d8: 0x00c2, 0x36d9: 0x00c2, 0x36da: 0x00c2, 0x36db: 0x00c2, 0x36dc: 0x00c2, 0x36dd: 0x00c4, + 0x36de: 0x00c2, 0x36df: 0x00c2, 0x36e0: 0x00c2, 0x36e1: 0x00c4, 0x36e2: 0x00c0, 0x36e3: 0x00c0, + 0x36e4: 0x00c4, 0x36e5: 0x00c3, 0x36e6: 0x00c3, + 0x36eb: 0x0082, 0x36ec: 0x0082, 0x36ed: 0x0082, 0x36ee: 0x0082, 0x36ef: 0x0084, + 0x36f0: 0x0080, 0x36f1: 0x0080, 0x36f2: 0x0080, 0x36f3: 0x0080, 0x36f4: 0x0080, 0x36f5: 0x0080, + 0x36f6: 0x0080, + // Block 0xdc, offset 0x3700 + 0x3700: 0x00c0, 0x3701: 0x00c0, 0x3702: 0x00c0, 0x3703: 0x00c0, 0x3704: 0x00c0, 0x3705: 0x00c0, + 0x3706: 0x00c0, 0x3707: 0x00c0, 0x3708: 0x00c0, 0x3709: 0x00c0, 0x370a: 0x00c0, 0x370b: 0x00c0, + 0x370c: 0x00c0, 0x370d: 0x00c0, 0x370e: 0x00c0, 0x370f: 0x00c0, 0x3710: 0x00c0, 0x3711: 0x00c0, + 0x3712: 0x00c0, 0x3713: 0x00c0, 0x3714: 0x00c0, 0x3715: 0x00c0, 0x3716: 0x00c0, 0x3717: 0x00c0, + 0x3718: 0x00c0, 0x3719: 0x00c0, 0x371a: 0x00c0, 0x371b: 0x00c0, 0x371c: 0x00c0, 0x371d: 0x00c0, + 0x371e: 0x00c0, 0x371f: 0x00c0, 0x3720: 0x00c0, 0x3721: 0x00c0, 0x3722: 0x00c0, 0x3723: 0x00c0, + 0x3724: 0x00c0, 0x3725: 0x00c0, 0x3726: 0x00c0, 0x3727: 0x00c0, 0x3728: 0x00c0, 0x3729: 0x00c0, + 0x372a: 0x00c0, 0x372b: 0x00c0, 0x372c: 0x00c0, 0x372d: 0x00c0, 0x372e: 0x00c0, 0x372f: 0x00c0, + 0x3730: 0x00c0, 0x3731: 0x00c0, 0x3732: 0x00c0, 0x3733: 0x00c0, 0x3734: 0x00c0, 0x3735: 0x00c0, + 0x3739: 0x0080, 0x373a: 0x0080, 0x373b: 0x0080, + 0x373c: 0x0080, 0x373d: 0x0080, 0x373e: 0x0080, 0x373f: 0x0080, + // Block 0xdd, offset 0x3740 + 0x3740: 0x00c0, 0x3741: 0x00c0, 0x3742: 0x00c0, 0x3743: 0x00c0, 0x3744: 0x00c0, 0x3745: 0x00c0, + 0x3746: 0x00c0, 0x3747: 0x00c0, 0x3748: 0x00c0, 0x3749: 0x00c0, 0x374a: 0x00c0, 0x374b: 0x00c0, + 0x374c: 0x00c0, 0x374d: 0x00c0, 0x374e: 0x00c0, 0x374f: 0x00c0, 0x3750: 0x00c0, 0x3751: 0x00c0, + 0x3752: 0x00c0, 0x3753: 0x00c0, 0x3754: 0x00c0, 0x3755: 0x00c0, + 0x3758: 0x0080, 0x3759: 0x0080, 0x375a: 0x0080, 0x375b: 0x0080, 0x375c: 0x0080, 0x375d: 0x0080, + 0x375e: 0x0080, 0x375f: 0x0080, 0x3760: 0x00c0, 0x3761: 0x00c0, 0x3762: 0x00c0, 0x3763: 0x00c0, + 0x3764: 0x00c0, 0x3765: 0x00c0, 0x3766: 0x00c0, 0x3767: 0x00c0, 0x3768: 0x00c0, 0x3769: 0x00c0, + 0x376a: 0x00c0, 0x376b: 0x00c0, 0x376c: 0x00c0, 0x376d: 0x00c0, 0x376e: 0x00c0, 0x376f: 0x00c0, + 0x3770: 0x00c0, 0x3771: 0x00c0, 0x3772: 0x00c0, + 0x3778: 0x0080, 0x3779: 0x0080, 0x377a: 0x0080, 0x377b: 0x0080, + 0x377c: 0x0080, 0x377d: 0x0080, 0x377e: 0x0080, 0x377f: 0x0080, + // Block 0xde, offset 0x3780 + 0x3780: 0x00c2, 0x3781: 0x00c4, 0x3782: 0x00c2, 0x3783: 0x00c4, 0x3784: 0x00c4, 0x3785: 0x00c4, + 0x3786: 0x00c2, 0x3787: 0x00c2, 0x3788: 0x00c2, 0x3789: 0x00c4, 0x378a: 0x00c2, 0x378b: 0x00c2, + 0x378c: 0x00c4, 0x378d: 0x00c2, 0x378e: 0x00c4, 0x378f: 0x00c4, 0x3790: 0x00c2, 0x3791: 0x00c4, + 0x3799: 0x0080, 0x379a: 0x0080, 0x379b: 0x0080, 0x379c: 0x0080, + 0x37a9: 0x0084, + 0x37aa: 0x0084, 0x37ab: 0x0084, 0x37ac: 0x0084, 0x37ad: 0x0082, 0x37ae: 0x0082, 0x37af: 0x0080, + // Block 0xdf, offset 0x37c0 + 0x37c0: 0x00c0, 0x37c1: 0x00c0, 0x37c2: 0x00c0, 0x37c3: 0x00c0, 0x37c4: 0x00c0, 0x37c5: 0x00c0, + 0x37c6: 0x00c0, 0x37c7: 0x00c0, 0x37c8: 0x00c0, 0x37c9: 0x00c0, 0x37ca: 0x00c0, 0x37cb: 0x00c0, + 0x37cc: 0x00c0, 0x37cd: 0x00c0, 0x37ce: 0x00c0, 0x37cf: 0x00c0, 0x37d0: 0x00c0, 0x37d1: 0x00c0, + 0x37d2: 0x00c0, 0x37d3: 0x00c0, 0x37d4: 0x00c0, 0x37d5: 0x00c0, 0x37d6: 0x00c0, 0x37d7: 0x00c0, + 0x37d8: 0x00c0, 0x37d9: 0x00c0, 0x37da: 0x00c0, 0x37db: 0x00c0, 0x37dc: 0x00c0, 0x37dd: 0x00c0, + 0x37de: 0x00c0, 0x37df: 0x00c0, 0x37e0: 0x00c0, 0x37e1: 0x00c0, 0x37e2: 0x00c0, 0x37e3: 0x00c0, + 0x37e4: 0x00c0, 0x37e5: 0x00c0, 0x37e6: 0x00c0, 0x37e7: 0x00c0, 0x37e8: 0x00c0, 0x37e9: 0x00c0, + 0x37ea: 0x00c0, 0x37eb: 0x00c0, 0x37ec: 0x00c0, 0x37ed: 0x00c0, 0x37ee: 0x00c0, 0x37ef: 0x00c0, + 0x37f0: 0x00c0, 0x37f1: 0x00c0, 0x37f2: 0x00c0, + // Block 0xe0, offset 0x3800 + 0x3800: 0x00c0, 0x3801: 0x00c0, 0x3802: 0x00c0, 0x3803: 0x00c0, 0x3804: 0x00c0, 0x3805: 0x00c0, + 0x3806: 0x00c0, 0x3807: 0x00c0, 0x3808: 0x00c0, 0x3809: 0x00c0, 0x380a: 0x00c0, 0x380b: 0x00c0, + 0x380c: 0x00c0, 0x380d: 0x00c0, 0x380e: 0x00c0, 0x380f: 0x00c0, 0x3810: 0x00c0, 0x3811: 0x00c0, + 0x3812: 0x00c0, 0x3813: 0x00c0, 0x3814: 0x00c0, 0x3815: 0x00c0, 0x3816: 0x00c0, 0x3817: 0x00c0, + 0x3818: 0x00c0, 0x3819: 0x00c0, 0x381a: 0x00c0, 0x381b: 0x00c0, 0x381c: 0x00c0, 0x381d: 0x00c0, + 0x381e: 0x00c0, 0x381f: 0x00c0, 0x3820: 0x00c0, 0x3821: 0x00c0, 0x3822: 0x00c0, 0x3823: 0x00c0, + 0x3824: 0x00c0, 0x3825: 0x00c0, 0x3826: 0x00c0, 0x3827: 0x00c0, 0x3828: 0x00c0, 0x3829: 0x00c0, + 0x382a: 0x00c0, 0x382b: 0x00c0, 0x382c: 0x00c0, 0x382d: 0x00c0, 0x382e: 0x00c0, 0x382f: 0x00c0, + 0x3830: 0x00c0, 0x3831: 0x00c0, 0x3832: 0x00c0, + 0x383a: 0x0080, 0x383b: 0x0080, + 0x383c: 0x0080, 0x383d: 0x0080, 0x383e: 0x0080, 0x383f: 0x0080, + // Block 0xe1, offset 0x3840 + 0x3860: 0x0080, 0x3861: 0x0080, 0x3862: 0x0080, 0x3863: 0x0080, + 0x3864: 0x0080, 0x3865: 0x0080, 0x3866: 0x0080, 0x3867: 0x0080, 0x3868: 0x0080, 0x3869: 0x0080, + 0x386a: 0x0080, 0x386b: 0x0080, 0x386c: 0x0080, 0x386d: 0x0080, 0x386e: 0x0080, 0x386f: 0x0080, + 0x3870: 0x0080, 0x3871: 0x0080, 0x3872: 0x0080, 0x3873: 0x0080, 0x3874: 0x0080, 0x3875: 0x0080, + 0x3876: 0x0080, 0x3877: 0x0080, 0x3878: 0x0080, 0x3879: 0x0080, 0x387a: 0x0080, 0x387b: 0x0080, + 0x387c: 0x0080, 0x387d: 0x0080, 0x387e: 0x0080, + // Block 0xe2, offset 0x3880 + 0x3880: 0x00c0, 0x3881: 0x00c3, 0x3882: 0x00c0, 0x3883: 0x00c0, 0x3884: 0x00c0, 0x3885: 0x00c0, + 0x3886: 0x00c0, 0x3887: 0x00c0, 0x3888: 0x00c0, 0x3889: 0x00c0, 0x388a: 0x00c0, 0x388b: 0x00c0, + 0x388c: 0x00c0, 0x388d: 0x00c0, 0x388e: 0x00c0, 0x388f: 0x00c0, 0x3890: 0x00c0, 0x3891: 0x00c0, + 0x3892: 0x00c0, 0x3893: 0x00c0, 0x3894: 0x00c0, 0x3895: 0x00c0, 0x3896: 0x00c0, 0x3897: 0x00c0, + 0x3898: 0x00c0, 0x3899: 0x00c0, 0x389a: 0x00c0, 0x389b: 0x00c0, 0x389c: 0x00c0, 0x389d: 0x00c0, + 0x389e: 0x00c0, 0x389f: 0x00c0, 0x38a0: 0x00c0, 0x38a1: 0x00c0, 0x38a2: 0x00c0, 0x38a3: 0x00c0, + 0x38a4: 0x00c0, 0x38a5: 0x00c0, 0x38a6: 0x00c0, 0x38a7: 0x00c0, 0x38a8: 0x00c0, 0x38a9: 0x00c0, + 0x38aa: 0x00c0, 0x38ab: 0x00c0, 0x38ac: 0x00c0, 0x38ad: 0x00c0, 0x38ae: 0x00c0, 0x38af: 0x00c0, + 0x38b0: 0x00c0, 0x38b1: 0x00c0, 0x38b2: 0x00c0, 0x38b3: 0x00c0, 0x38b4: 0x00c0, 0x38b5: 0x00c0, + 0x38b6: 0x00c0, 0x38b7: 0x00c0, 0x38b8: 0x00c3, 0x38b9: 0x00c3, 0x38ba: 0x00c3, 0x38bb: 0x00c3, + 0x38bc: 0x00c3, 0x38bd: 0x00c3, 0x38be: 0x00c3, 0x38bf: 0x00c3, + // Block 0xe3, offset 0x38c0 + 0x38c0: 0x00c3, 0x38c1: 0x00c3, 0x38c2: 0x00c3, 0x38c3: 0x00c3, 0x38c4: 0x00c3, 0x38c5: 0x00c3, + 0x38c6: 0x00c6, 0x38c7: 0x0080, 0x38c8: 0x0080, 0x38c9: 0x0080, 0x38ca: 0x0080, 0x38cb: 0x0080, + 0x38cc: 0x0080, 0x38cd: 0x0080, + 0x38d2: 0x0080, 0x38d3: 0x0080, 0x38d4: 0x0080, 0x38d5: 0x0080, 0x38d6: 0x0080, 0x38d7: 0x0080, + 0x38d8: 0x0080, 0x38d9: 0x0080, 0x38da: 0x0080, 0x38db: 0x0080, 0x38dc: 0x0080, 0x38dd: 0x0080, + 0x38de: 0x0080, 0x38df: 0x0080, 0x38e0: 0x0080, 0x38e1: 0x0080, 0x38e2: 0x0080, 0x38e3: 0x0080, + 0x38e4: 0x0080, 0x38e5: 0x0080, 0x38e6: 0x00c0, 0x38e7: 0x00c0, 0x38e8: 0x00c0, 0x38e9: 0x00c0, + 0x38ea: 0x00c0, 0x38eb: 0x00c0, 0x38ec: 0x00c0, 0x38ed: 0x00c0, 0x38ee: 0x00c0, 0x38ef: 0x00c0, + 0x38ff: 0x00c6, + // Block 0xe4, offset 0x3900 + 0x3900: 0x00c3, 0x3901: 0x00c3, 0x3902: 0x00c0, 0x3903: 0x00c0, 0x3904: 0x00c0, 0x3905: 0x00c0, + 0x3906: 0x00c0, 0x3907: 0x00c0, 0x3908: 0x00c0, 0x3909: 0x00c0, 0x390a: 0x00c0, 0x390b: 0x00c0, + 0x390c: 0x00c0, 0x390d: 0x00c0, 0x390e: 0x00c0, 0x390f: 0x00c0, 0x3910: 0x00c0, 0x3911: 0x00c0, + 0x3912: 0x00c0, 0x3913: 0x00c0, 0x3914: 0x00c0, 0x3915: 0x00c0, 0x3916: 0x00c0, 0x3917: 0x00c0, + 0x3918: 0x00c0, 0x3919: 0x00c0, 0x391a: 0x00c0, 0x391b: 0x00c0, 0x391c: 0x00c0, 0x391d: 0x00c0, + 0x391e: 0x00c0, 0x391f: 0x00c0, 0x3920: 0x00c0, 0x3921: 0x00c0, 0x3922: 0x00c0, 0x3923: 0x00c0, + 0x3924: 0x00c0, 0x3925: 0x00c0, 0x3926: 0x00c0, 0x3927: 0x00c0, 0x3928: 0x00c0, 0x3929: 0x00c0, + 0x392a: 0x00c0, 0x392b: 0x00c0, 0x392c: 0x00c0, 0x392d: 0x00c0, 0x392e: 0x00c0, 0x392f: 0x00c0, + 0x3930: 0x00c0, 0x3931: 0x00c0, 0x3932: 0x00c0, 0x3933: 0x00c3, 0x3934: 0x00c3, 0x3935: 0x00c3, + 0x3936: 0x00c3, 0x3937: 0x00c0, 0x3938: 0x00c0, 0x3939: 0x00c6, 0x393a: 0x00c3, 0x393b: 0x0080, + 0x393c: 0x0080, 0x393d: 0x0040, 0x393e: 0x0080, 0x393f: 0x0080, + // Block 0xe5, offset 0x3940 + 0x3940: 0x0080, 0x3941: 0x0080, + 0x3950: 0x00c0, 0x3951: 0x00c0, + 0x3952: 0x00c0, 0x3953: 0x00c0, 0x3954: 0x00c0, 0x3955: 0x00c0, 0x3956: 0x00c0, 0x3957: 0x00c0, + 0x3958: 0x00c0, 0x3959: 0x00c0, 0x395a: 0x00c0, 0x395b: 0x00c0, 0x395c: 0x00c0, 0x395d: 0x00c0, + 0x395e: 0x00c0, 0x395f: 0x00c0, 0x3960: 0x00c0, 0x3961: 0x00c0, 0x3962: 0x00c0, 0x3963: 0x00c0, + 0x3964: 0x00c0, 0x3965: 0x00c0, 0x3966: 0x00c0, 0x3967: 0x00c0, 0x3968: 0x00c0, + 0x3970: 0x00c0, 0x3971: 0x00c0, 0x3972: 0x00c0, 0x3973: 0x00c0, 0x3974: 0x00c0, 0x3975: 0x00c0, + 0x3976: 0x00c0, 0x3977: 0x00c0, 0x3978: 0x00c0, 0x3979: 0x00c0, + // Block 0xe6, offset 0x3980 + 0x3980: 0x00c3, 0x3981: 0x00c3, 0x3982: 0x00c3, 0x3983: 0x00c0, 0x3984: 0x00c0, 0x3985: 0x00c0, + 0x3986: 0x00c0, 0x3987: 0x00c0, 0x3988: 0x00c0, 0x3989: 0x00c0, 0x398a: 0x00c0, 0x398b: 0x00c0, + 0x398c: 0x00c0, 0x398d: 0x00c0, 0x398e: 0x00c0, 0x398f: 0x00c0, 0x3990: 0x00c0, 0x3991: 0x00c0, + 0x3992: 0x00c0, 0x3993: 0x00c0, 0x3994: 0x00c0, 0x3995: 0x00c0, 0x3996: 0x00c0, 0x3997: 0x00c0, + 0x3998: 0x00c0, 0x3999: 0x00c0, 0x399a: 0x00c0, 0x399b: 0x00c0, 0x399c: 0x00c0, 0x399d: 0x00c0, + 0x399e: 0x00c0, 0x399f: 0x00c0, 0x39a0: 0x00c0, 0x39a1: 0x00c0, 0x39a2: 0x00c0, 0x39a3: 0x00c0, + 0x39a4: 0x00c0, 0x39a5: 0x00c0, 0x39a6: 0x00c0, 0x39a7: 0x00c3, 0x39a8: 0x00c3, 0x39a9: 0x00c3, + 0x39aa: 0x00c3, 0x39ab: 0x00c3, 0x39ac: 0x00c0, 0x39ad: 0x00c3, 0x39ae: 0x00c3, 0x39af: 0x00c3, + 0x39b0: 0x00c3, 0x39b1: 0x00c3, 0x39b2: 0x00c3, 0x39b3: 0x00c6, 0x39b4: 0x00c6, + 0x39b6: 0x00c0, 0x39b7: 0x00c0, 0x39b8: 0x00c0, 0x39b9: 0x00c0, 0x39ba: 0x00c0, 0x39bb: 0x00c0, + 0x39bc: 0x00c0, 0x39bd: 0x00c0, 0x39be: 0x00c0, 0x39bf: 0x00c0, + // Block 0xe7, offset 0x39c0 + 0x39c0: 0x0080, 0x39c1: 0x0080, 0x39c2: 0x0080, 0x39c3: 0x0080, + 0x39d0: 0x00c0, 0x39d1: 0x00c0, + 0x39d2: 0x00c0, 0x39d3: 0x00c0, 0x39d4: 0x00c0, 0x39d5: 0x00c0, 0x39d6: 0x00c0, 0x39d7: 0x00c0, + 0x39d8: 0x00c0, 0x39d9: 0x00c0, 0x39da: 0x00c0, 0x39db: 0x00c0, 0x39dc: 0x00c0, 0x39dd: 0x00c0, + 0x39de: 0x00c0, 0x39df: 0x00c0, 0x39e0: 0x00c0, 0x39e1: 0x00c0, 0x39e2: 0x00c0, 0x39e3: 0x00c0, + 0x39e4: 0x00c0, 0x39e5: 0x00c0, 0x39e6: 0x00c0, 0x39e7: 0x00c0, 0x39e8: 0x00c0, 0x39e9: 0x00c0, + 0x39ea: 0x00c0, 0x39eb: 0x00c0, 0x39ec: 0x00c0, 0x39ed: 0x00c0, 0x39ee: 0x00c0, 0x39ef: 0x00c0, + 0x39f0: 0x00c0, 0x39f1: 0x00c0, 0x39f2: 0x00c0, 0x39f3: 0x00c3, 0x39f4: 0x0080, 0x39f5: 0x0080, + 0x39f6: 0x00c0, + // Block 0xe8, offset 0x3a00 + 0x3a00: 0x00c3, 0x3a01: 0x00c3, 0x3a02: 0x00c0, 0x3a03: 0x00c0, 0x3a04: 0x00c0, 0x3a05: 0x00c0, + 0x3a06: 0x00c0, 0x3a07: 0x00c0, 0x3a08: 0x00c0, 0x3a09: 0x00c0, 0x3a0a: 0x00c0, 0x3a0b: 0x00c0, + 0x3a0c: 0x00c0, 0x3a0d: 0x00c0, 0x3a0e: 0x00c0, 0x3a0f: 0x00c0, 0x3a10: 0x00c0, 0x3a11: 0x00c0, + 0x3a12: 0x00c0, 0x3a13: 0x00c0, 0x3a14: 0x00c0, 0x3a15: 0x00c0, 0x3a16: 0x00c0, 0x3a17: 0x00c0, + 0x3a18: 0x00c0, 0x3a19: 0x00c0, 0x3a1a: 0x00c0, 0x3a1b: 0x00c0, 0x3a1c: 0x00c0, 0x3a1d: 0x00c0, + 0x3a1e: 0x00c0, 0x3a1f: 0x00c0, 0x3a20: 0x00c0, 0x3a21: 0x00c0, 0x3a22: 0x00c0, 0x3a23: 0x00c0, + 0x3a24: 0x00c0, 0x3a25: 0x00c0, 0x3a26: 0x00c0, 0x3a27: 0x00c0, 0x3a28: 0x00c0, 0x3a29: 0x00c0, + 0x3a2a: 0x00c0, 0x3a2b: 0x00c0, 0x3a2c: 0x00c0, 0x3a2d: 0x00c0, 0x3a2e: 0x00c0, 0x3a2f: 0x00c0, + 0x3a30: 0x00c0, 0x3a31: 0x00c0, 0x3a32: 0x00c0, 0x3a33: 0x00c0, 0x3a34: 0x00c0, 0x3a35: 0x00c0, + 0x3a36: 0x00c3, 0x3a37: 0x00c3, 0x3a38: 0x00c3, 0x3a39: 0x00c3, 0x3a3a: 0x00c3, 0x3a3b: 0x00c3, + 0x3a3c: 0x00c3, 0x3a3d: 0x00c3, 0x3a3e: 0x00c3, 0x3a3f: 0x00c0, + // Block 0xe9, offset 0x3a40 + 0x3a40: 0x00c5, 0x3a41: 0x00c0, 0x3a42: 0x00c0, 0x3a43: 0x00c0, 0x3a44: 0x00c0, 0x3a45: 0x0080, + 0x3a46: 0x0080, 0x3a47: 0x0080, 0x3a48: 0x0080, 0x3a49: 0x0080, 0x3a4a: 0x00c3, 0x3a4b: 0x00c3, + 0x3a4c: 0x00c3, 0x3a4d: 0x0080, 0x3a50: 0x00c0, 0x3a51: 0x00c0, + 0x3a52: 0x00c0, 0x3a53: 0x00c0, 0x3a54: 0x00c0, 0x3a55: 0x00c0, 0x3a56: 0x00c0, 0x3a57: 0x00c0, + 0x3a58: 0x00c0, 0x3a59: 0x00c0, 0x3a5a: 0x00c0, 0x3a5b: 0x0080, 0x3a5c: 0x00c0, 0x3a5d: 0x0080, + 0x3a5e: 0x0080, 0x3a5f: 0x0080, 0x3a61: 0x0080, 0x3a62: 0x0080, 0x3a63: 0x0080, + 0x3a64: 0x0080, 0x3a65: 0x0080, 0x3a66: 0x0080, 0x3a67: 0x0080, 0x3a68: 0x0080, 0x3a69: 0x0080, + 0x3a6a: 0x0080, 0x3a6b: 0x0080, 0x3a6c: 0x0080, 0x3a6d: 0x0080, 0x3a6e: 0x0080, 0x3a6f: 0x0080, + 0x3a70: 0x0080, 0x3a71: 0x0080, 0x3a72: 0x0080, 0x3a73: 0x0080, 0x3a74: 0x0080, + // Block 0xea, offset 0x3a80 + 0x3a80: 0x00c0, 0x3a81: 0x00c0, 0x3a82: 0x00c0, 0x3a83: 0x00c0, 0x3a84: 0x00c0, 0x3a85: 0x00c0, + 0x3a86: 0x00c0, 0x3a87: 0x00c0, 0x3a88: 0x00c0, 0x3a89: 0x00c0, 0x3a8a: 0x00c0, 0x3a8b: 0x00c0, + 0x3a8c: 0x00c0, 0x3a8d: 0x00c0, 0x3a8e: 0x00c0, 0x3a8f: 0x00c0, 0x3a90: 0x00c0, 0x3a91: 0x00c0, + 0x3a93: 0x00c0, 0x3a94: 0x00c0, 0x3a95: 0x00c0, 0x3a96: 0x00c0, 0x3a97: 0x00c0, + 0x3a98: 0x00c0, 0x3a99: 0x00c0, 0x3a9a: 0x00c0, 0x3a9b: 0x00c0, 0x3a9c: 0x00c0, 0x3a9d: 0x00c0, + 0x3a9e: 0x00c0, 0x3a9f: 0x00c0, 0x3aa0: 0x00c0, 0x3aa1: 0x00c0, 0x3aa2: 0x00c0, 0x3aa3: 0x00c0, + 0x3aa4: 0x00c0, 0x3aa5: 0x00c0, 0x3aa6: 0x00c0, 0x3aa7: 0x00c0, 0x3aa8: 0x00c0, 0x3aa9: 0x00c0, + 0x3aaa: 0x00c0, 0x3aab: 0x00c0, 0x3aac: 0x00c0, 0x3aad: 0x00c0, 0x3aae: 0x00c0, 0x3aaf: 0x00c3, + 0x3ab0: 0x00c3, 0x3ab1: 0x00c3, 0x3ab2: 0x00c0, 0x3ab3: 0x00c0, 0x3ab4: 0x00c3, 0x3ab5: 0x00c5, + 0x3ab6: 0x00c3, 0x3ab7: 0x00c3, 0x3ab8: 0x0080, 0x3ab9: 0x0080, 0x3aba: 0x0080, 0x3abb: 0x0080, + 0x3abc: 0x0080, 0x3abd: 0x0080, 0x3abe: 0x00c3, + // Block 0xeb, offset 0x3ac0 + 0x3ac0: 0x00c0, 0x3ac1: 0x00c0, 0x3ac2: 0x00c0, 0x3ac3: 0x00c0, 0x3ac4: 0x00c0, 0x3ac5: 0x00c0, + 0x3ac6: 0x00c0, 0x3ac8: 0x00c0, 0x3aca: 0x00c0, 0x3acb: 0x00c0, + 0x3acc: 0x00c0, 0x3acd: 0x00c0, 0x3acf: 0x00c0, 0x3ad0: 0x00c0, 0x3ad1: 0x00c0, + 0x3ad2: 0x00c0, 0x3ad3: 0x00c0, 0x3ad4: 0x00c0, 0x3ad5: 0x00c0, 0x3ad6: 0x00c0, 0x3ad7: 0x00c0, + 0x3ad8: 0x00c0, 0x3ad9: 0x00c0, 0x3ada: 0x00c0, 0x3adb: 0x00c0, 0x3adc: 0x00c0, 0x3add: 0x00c0, + 0x3adf: 0x00c0, 0x3ae0: 0x00c0, 0x3ae1: 0x00c0, 0x3ae2: 0x00c0, 0x3ae3: 0x00c0, + 0x3ae4: 0x00c0, 0x3ae5: 0x00c0, 0x3ae6: 0x00c0, 0x3ae7: 0x00c0, 0x3ae8: 0x00c0, 0x3ae9: 0x0080, + 0x3af0: 0x00c0, 0x3af1: 0x00c0, 0x3af2: 0x00c0, 0x3af3: 0x00c0, 0x3af4: 0x00c0, 0x3af5: 0x00c0, + 0x3af6: 0x00c0, 0x3af7: 0x00c0, 0x3af8: 0x00c0, 0x3af9: 0x00c0, 0x3afa: 0x00c0, 0x3afb: 0x00c0, + 0x3afc: 0x00c0, 0x3afd: 0x00c0, 0x3afe: 0x00c0, 0x3aff: 0x00c0, + // Block 0xec, offset 0x3b00 + 0x3b00: 0x00c0, 0x3b01: 0x00c0, 0x3b02: 0x00c0, 0x3b03: 0x00c0, 0x3b04: 0x00c0, 0x3b05: 0x00c0, + 0x3b06: 0x00c0, 0x3b07: 0x00c0, 0x3b08: 0x00c0, 0x3b09: 0x00c0, 0x3b0a: 0x00c0, 0x3b0b: 0x00c0, + 0x3b0c: 0x00c0, 0x3b0d: 0x00c0, 0x3b0e: 0x00c0, 0x3b0f: 0x00c0, 0x3b10: 0x00c0, 0x3b11: 0x00c0, + 0x3b12: 0x00c0, 0x3b13: 0x00c0, 0x3b14: 0x00c0, 0x3b15: 0x00c0, 0x3b16: 0x00c0, 0x3b17: 0x00c0, + 0x3b18: 0x00c0, 0x3b19: 0x00c0, 0x3b1a: 0x00c0, 0x3b1b: 0x00c0, 0x3b1c: 0x00c0, 0x3b1d: 0x00c0, + 0x3b1e: 0x00c0, 0x3b1f: 0x00c3, 0x3b20: 0x00c0, 0x3b21: 0x00c0, 0x3b22: 0x00c0, 0x3b23: 0x00c3, + 0x3b24: 0x00c3, 0x3b25: 0x00c3, 0x3b26: 0x00c3, 0x3b27: 0x00c3, 0x3b28: 0x00c3, 0x3b29: 0x00c3, + 0x3b2a: 0x00c6, + 0x3b30: 0x00c0, 0x3b31: 0x00c0, 0x3b32: 0x00c0, 0x3b33: 0x00c0, 0x3b34: 0x00c0, 0x3b35: 0x00c0, + 0x3b36: 0x00c0, 0x3b37: 0x00c0, 0x3b38: 0x00c0, 0x3b39: 0x00c0, + // Block 0xed, offset 0x3b40 + 0x3b40: 0x00c3, 0x3b41: 0x00c3, 0x3b42: 0x00c0, 0x3b43: 0x00c0, 0x3b45: 0x00c0, + 0x3b46: 0x00c0, 0x3b47: 0x00c0, 0x3b48: 0x00c0, 0x3b49: 0x00c0, 0x3b4a: 0x00c0, 0x3b4b: 0x00c0, + 0x3b4c: 0x00c0, 0x3b4f: 0x00c0, 0x3b50: 0x00c0, + 0x3b53: 0x00c0, 0x3b54: 0x00c0, 0x3b55: 0x00c0, 0x3b56: 0x00c0, 0x3b57: 0x00c0, + 0x3b58: 0x00c0, 0x3b59: 0x00c0, 0x3b5a: 0x00c0, 0x3b5b: 0x00c0, 0x3b5c: 0x00c0, 0x3b5d: 0x00c0, + 0x3b5e: 0x00c0, 0x3b5f: 0x00c0, 0x3b60: 0x00c0, 0x3b61: 0x00c0, 0x3b62: 0x00c0, 0x3b63: 0x00c0, + 0x3b64: 0x00c0, 0x3b65: 0x00c0, 0x3b66: 0x00c0, 0x3b67: 0x00c0, 0x3b68: 0x00c0, + 0x3b6a: 0x00c0, 0x3b6b: 0x00c0, 0x3b6c: 0x00c0, 0x3b6d: 0x00c0, 0x3b6e: 0x00c0, 0x3b6f: 0x00c0, + 0x3b70: 0x00c0, 0x3b72: 0x00c0, 0x3b73: 0x00c0, 0x3b75: 0x00c0, + 0x3b76: 0x00c0, 0x3b77: 0x00c0, 0x3b78: 0x00c0, 0x3b79: 0x00c0, + 0x3b7c: 0x00c3, 0x3b7d: 0x00c0, 0x3b7e: 0x00c0, 0x3b7f: 0x00c0, + // Block 0xee, offset 0x3b80 + 0x3b80: 0x00c3, 0x3b81: 0x00c0, 0x3b82: 0x00c0, 0x3b83: 0x00c0, 0x3b84: 0x00c0, + 0x3b87: 0x00c0, 0x3b88: 0x00c0, 0x3b8b: 0x00c0, + 0x3b8c: 0x00c0, 0x3b8d: 0x00c5, 0x3b90: 0x00c0, + 0x3b97: 0x00c0, + 0x3b9d: 0x00c0, + 0x3b9e: 0x00c0, 0x3b9f: 0x00c0, 0x3ba0: 0x00c0, 0x3ba1: 0x00c0, 0x3ba2: 0x00c0, 0x3ba3: 0x00c0, + 0x3ba6: 0x00c3, 0x3ba7: 0x00c3, 0x3ba8: 0x00c3, 0x3ba9: 0x00c3, + 0x3baa: 0x00c3, 0x3bab: 0x00c3, 0x3bac: 0x00c3, + 0x3bb0: 0x00c3, 0x3bb1: 0x00c3, 0x3bb2: 0x00c3, 0x3bb3: 0x00c3, 0x3bb4: 0x00c3, + // Block 0xef, offset 0x3bc0 + 0x3bc0: 0x00c0, 0x3bc1: 0x00c0, 0x3bc2: 0x00c0, 0x3bc3: 0x00c0, 0x3bc4: 0x00c0, 0x3bc5: 0x00c0, + 0x3bc6: 0x00c0, 0x3bc7: 0x00c0, 0x3bc8: 0x00c0, 0x3bc9: 0x00c0, 0x3bca: 0x00c0, 0x3bcb: 0x00c0, + 0x3bcc: 0x00c0, 0x3bcd: 0x00c0, 0x3bce: 0x00c0, 0x3bcf: 0x00c0, 0x3bd0: 0x00c0, 0x3bd1: 0x00c0, + 0x3bd2: 0x00c0, 0x3bd3: 0x00c0, 0x3bd4: 0x00c0, 0x3bd5: 0x00c0, 0x3bd6: 0x00c0, 0x3bd7: 0x00c0, + 0x3bd8: 0x00c0, 0x3bd9: 0x00c0, 0x3bda: 0x00c0, 0x3bdb: 0x00c0, 0x3bdc: 0x00c0, 0x3bdd: 0x00c0, + 0x3bde: 0x00c0, 0x3bdf: 0x00c0, 0x3be0: 0x00c0, 0x3be1: 0x00c0, 0x3be2: 0x00c0, 0x3be3: 0x00c0, + 0x3be4: 0x00c0, 0x3be5: 0x00c0, 0x3be6: 0x00c0, 0x3be7: 0x00c0, 0x3be8: 0x00c0, 0x3be9: 0x00c0, + 0x3bea: 0x00c0, 0x3beb: 0x00c0, 0x3bec: 0x00c0, 0x3bed: 0x00c0, 0x3bee: 0x00c0, 0x3bef: 0x00c0, + 0x3bf0: 0x00c0, 0x3bf1: 0x00c0, 0x3bf2: 0x00c0, 0x3bf3: 0x00c0, 0x3bf4: 0x00c0, 0x3bf5: 0x00c0, + 0x3bf6: 0x00c0, 0x3bf7: 0x00c0, 0x3bf8: 0x00c3, 0x3bf9: 0x00c3, 0x3bfa: 0x00c3, 0x3bfb: 0x00c3, + 0x3bfc: 0x00c3, 0x3bfd: 0x00c3, 0x3bfe: 0x00c3, 0x3bff: 0x00c3, + // Block 0xf0, offset 0x3c00 + 0x3c00: 0x00c0, 0x3c01: 0x00c0, 0x3c02: 0x00c6, 0x3c03: 0x00c3, 0x3c04: 0x00c3, 0x3c05: 0x00c0, + 0x3c06: 0x00c3, 0x3c07: 0x00c0, 0x3c08: 0x00c0, 0x3c09: 0x00c0, 0x3c0a: 0x00c0, 0x3c0b: 0x0080, + 0x3c0c: 0x0080, 0x3c0d: 0x0080, 0x3c0e: 0x0080, 0x3c0f: 0x0080, 0x3c10: 0x00c0, 0x3c11: 0x00c0, + 0x3c12: 0x00c0, 0x3c13: 0x00c0, 0x3c14: 0x00c0, 0x3c15: 0x00c0, 0x3c16: 0x00c0, 0x3c17: 0x00c0, + 0x3c18: 0x00c0, 0x3c19: 0x00c0, 0x3c1b: 0x0080, 0x3c1d: 0x0080, + // Block 0xf1, offset 0x3c40 + 0x3c40: 0x00c0, 0x3c41: 0x00c0, 0x3c42: 0x00c0, 0x3c43: 0x00c0, 0x3c44: 0x00c0, 0x3c45: 0x00c0, + 0x3c46: 0x00c0, 0x3c47: 0x00c0, 0x3c48: 0x00c0, 0x3c49: 0x00c0, 0x3c4a: 0x00c0, 0x3c4b: 0x00c0, + 0x3c4c: 0x00c0, 0x3c4d: 0x00c0, 0x3c4e: 0x00c0, 0x3c4f: 0x00c0, 0x3c50: 0x00c0, 0x3c51: 0x00c0, + 0x3c52: 0x00c0, 0x3c53: 0x00c0, 0x3c54: 0x00c0, 0x3c55: 0x00c0, 0x3c56: 0x00c0, 0x3c57: 0x00c0, + 0x3c58: 0x00c0, 0x3c59: 0x00c0, 0x3c5a: 0x00c0, 0x3c5b: 0x00c0, 0x3c5c: 0x00c0, 0x3c5d: 0x00c0, + 0x3c5e: 0x00c0, 0x3c5f: 0x00c0, 0x3c60: 0x00c0, 0x3c61: 0x00c0, 0x3c62: 0x00c0, 0x3c63: 0x00c0, + 0x3c64: 0x00c0, 0x3c65: 0x00c0, 0x3c66: 0x00c0, 0x3c67: 0x00c0, 0x3c68: 0x00c0, 0x3c69: 0x00c0, + 0x3c6a: 0x00c0, 0x3c6b: 0x00c0, 0x3c6c: 0x00c0, 0x3c6d: 0x00c0, 0x3c6e: 0x00c0, 0x3c6f: 0x00c0, + 0x3c70: 0x00c0, 0x3c71: 0x00c0, 0x3c72: 0x00c0, 0x3c73: 0x00c3, 0x3c74: 0x00c3, 0x3c75: 0x00c3, + 0x3c76: 0x00c3, 0x3c77: 0x00c3, 0x3c78: 0x00c3, 0x3c79: 0x00c0, 0x3c7a: 0x00c3, 0x3c7b: 0x00c0, + 0x3c7c: 0x00c0, 0x3c7d: 0x00c0, 0x3c7e: 0x00c0, 0x3c7f: 0x00c3, + // Block 0xf2, offset 0x3c80 + 0x3c80: 0x00c3, 0x3c81: 0x00c0, 0x3c82: 0x00c6, 0x3c83: 0x00c3, 0x3c84: 0x00c0, 0x3c85: 0x00c0, + 0x3c86: 0x0080, 0x3c87: 0x00c0, + 0x3c90: 0x00c0, 0x3c91: 0x00c0, + 0x3c92: 0x00c0, 0x3c93: 0x00c0, 0x3c94: 0x00c0, 0x3c95: 0x00c0, 0x3c96: 0x00c0, 0x3c97: 0x00c0, + 0x3c98: 0x00c0, 0x3c99: 0x00c0, + // Block 0xf3, offset 0x3cc0 + 0x3cc0: 0x00c0, 0x3cc1: 0x00c0, 0x3cc2: 0x00c0, 0x3cc3: 0x00c0, 0x3cc4: 0x00c0, 0x3cc5: 0x00c0, + 0x3cc6: 0x00c0, 0x3cc7: 0x00c0, 0x3cc8: 0x00c0, 0x3cc9: 0x00c0, 0x3cca: 0x00c0, 0x3ccb: 0x00c0, + 0x3ccc: 0x00c0, 0x3ccd: 0x00c0, 0x3cce: 0x00c0, 0x3ccf: 0x00c0, 0x3cd0: 0x00c0, 0x3cd1: 0x00c0, + 0x3cd2: 0x00c0, 0x3cd3: 0x00c0, 0x3cd4: 0x00c0, 0x3cd5: 0x00c0, 0x3cd6: 0x00c0, 0x3cd7: 0x00c0, + 0x3cd8: 0x00c0, 0x3cd9: 0x00c0, 0x3cda: 0x00c0, 0x3cdb: 0x00c0, 0x3cdc: 0x00c0, 0x3cdd: 0x00c0, + 0x3cde: 0x00c0, 0x3cdf: 0x00c0, 0x3ce0: 0x00c0, 0x3ce1: 0x00c0, 0x3ce2: 0x00c0, 0x3ce3: 0x00c0, + 0x3ce4: 0x00c0, 0x3ce5: 0x00c0, 0x3ce6: 0x00c0, 0x3ce7: 0x00c0, 0x3ce8: 0x00c0, 0x3ce9: 0x00c0, + 0x3cea: 0x00c0, 0x3ceb: 0x00c0, 0x3cec: 0x00c0, 0x3ced: 0x00c0, 0x3cee: 0x00c0, 0x3cef: 0x00c0, + 0x3cf0: 0x00c0, 0x3cf1: 0x00c0, 0x3cf2: 0x00c3, 0x3cf3: 0x00c3, 0x3cf4: 0x00c3, 0x3cf5: 0x00c3, + 0x3cf8: 0x00c0, 0x3cf9: 0x00c0, 0x3cfa: 0x00c0, 0x3cfb: 0x00c0, + 0x3cfc: 0x00c3, 0x3cfd: 0x00c3, 0x3cfe: 0x00c0, 0x3cff: 0x00c6, + // Block 0xf4, offset 0x3d00 + 0x3d00: 0x00c3, 0x3d01: 0x0080, 0x3d02: 0x0080, 0x3d03: 0x0080, 0x3d04: 0x0080, 0x3d05: 0x0080, + 0x3d06: 0x0080, 0x3d07: 0x0080, 0x3d08: 0x0080, 0x3d09: 0x0080, 0x3d0a: 0x0080, 0x3d0b: 0x0080, + 0x3d0c: 0x0080, 0x3d0d: 0x0080, 0x3d0e: 0x0080, 0x3d0f: 0x0080, 0x3d10: 0x0080, 0x3d11: 0x0080, + 0x3d12: 0x0080, 0x3d13: 0x0080, 0x3d14: 0x0080, 0x3d15: 0x0080, 0x3d16: 0x0080, 0x3d17: 0x0080, + 0x3d18: 0x00c0, 0x3d19: 0x00c0, 0x3d1a: 0x00c0, 0x3d1b: 0x00c0, 0x3d1c: 0x00c3, 0x3d1d: 0x00c3, + // Block 0xf5, offset 0x3d40 + 0x3d40: 0x00c0, 0x3d41: 0x00c0, 0x3d42: 0x00c0, 0x3d43: 0x00c0, 0x3d44: 0x00c0, 0x3d45: 0x00c0, + 0x3d46: 0x00c0, 0x3d47: 0x00c0, 0x3d48: 0x00c0, 0x3d49: 0x00c0, 0x3d4a: 0x00c0, 0x3d4b: 0x00c0, + 0x3d4c: 0x00c0, 0x3d4d: 0x00c0, 0x3d4e: 0x00c0, 0x3d4f: 0x00c0, 0x3d50: 0x00c0, 0x3d51: 0x00c0, + 0x3d52: 0x00c0, 0x3d53: 0x00c0, 0x3d54: 0x00c0, 0x3d55: 0x00c0, 0x3d56: 0x00c0, 0x3d57: 0x00c0, + 0x3d58: 0x00c0, 0x3d59: 0x00c0, 0x3d5a: 0x00c0, 0x3d5b: 0x00c0, 0x3d5c: 0x00c0, 0x3d5d: 0x00c0, + 0x3d5e: 0x00c0, 0x3d5f: 0x00c0, 0x3d60: 0x00c0, 0x3d61: 0x00c0, 0x3d62: 0x00c0, 0x3d63: 0x00c0, + 0x3d64: 0x00c0, 0x3d65: 0x00c0, 0x3d66: 0x00c0, 0x3d67: 0x00c0, 0x3d68: 0x00c0, 0x3d69: 0x00c0, + 0x3d6a: 0x00c0, 0x3d6b: 0x00c0, 0x3d6c: 0x00c0, 0x3d6d: 0x00c0, 0x3d6e: 0x00c0, 0x3d6f: 0x00c0, + 0x3d70: 0x00c0, 0x3d71: 0x00c0, 0x3d72: 0x00c0, 0x3d73: 0x00c3, 0x3d74: 0x00c3, 0x3d75: 0x00c3, + 0x3d76: 0x00c3, 0x3d77: 0x00c3, 0x3d78: 0x00c3, 0x3d79: 0x00c3, 0x3d7a: 0x00c3, 0x3d7b: 0x00c0, + 0x3d7c: 0x00c0, 0x3d7d: 0x00c3, 0x3d7e: 0x00c0, 0x3d7f: 0x00c6, + // Block 0xf6, offset 0x3d80 + 0x3d80: 0x00c3, 0x3d81: 0x0080, 0x3d82: 0x0080, 0x3d83: 0x0080, 0x3d84: 0x00c0, + 0x3d90: 0x00c0, 0x3d91: 0x00c0, + 0x3d92: 0x00c0, 0x3d93: 0x00c0, 0x3d94: 0x00c0, 0x3d95: 0x00c0, 0x3d96: 0x00c0, 0x3d97: 0x00c0, + 0x3d98: 0x00c0, 0x3d99: 0x00c0, + 0x3da0: 0x0080, 0x3da1: 0x0080, 0x3da2: 0x0080, 0x3da3: 0x0080, + 0x3da4: 0x0080, 0x3da5: 0x0080, 0x3da6: 0x0080, 0x3da7: 0x0080, 0x3da8: 0x0080, 0x3da9: 0x0080, + 0x3daa: 0x0080, 0x3dab: 0x0080, 0x3dac: 0x0080, + // Block 0xf7, offset 0x3dc0 + 0x3dc0: 0x00c0, 0x3dc1: 0x00c0, 0x3dc2: 0x00c0, 0x3dc3: 0x00c0, 0x3dc4: 0x00c0, 0x3dc5: 0x00c0, + 0x3dc6: 0x00c0, 0x3dc7: 0x00c0, 0x3dc8: 0x00c0, 0x3dc9: 0x00c0, 0x3dca: 0x00c0, 0x3dcb: 0x00c0, + 0x3dcc: 0x00c0, 0x3dcd: 0x00c0, 0x3dce: 0x00c0, 0x3dcf: 0x00c0, 0x3dd0: 0x00c0, 0x3dd1: 0x00c0, + 0x3dd2: 0x00c0, 0x3dd3: 0x00c0, 0x3dd4: 0x00c0, 0x3dd5: 0x00c0, 0x3dd6: 0x00c0, 0x3dd7: 0x00c0, + 0x3dd8: 0x00c0, 0x3dd9: 0x00c0, 0x3dda: 0x00c0, 0x3ddb: 0x00c0, 0x3ddc: 0x00c0, 0x3ddd: 0x00c0, + 0x3dde: 0x00c0, 0x3ddf: 0x00c0, 0x3de0: 0x00c0, 0x3de1: 0x00c0, 0x3de2: 0x00c0, 0x3de3: 0x00c0, + 0x3de4: 0x00c0, 0x3de5: 0x00c0, 0x3de6: 0x00c0, 0x3de7: 0x00c0, 0x3de8: 0x00c0, 0x3de9: 0x00c0, + 0x3dea: 0x00c0, 0x3deb: 0x00c3, 0x3dec: 0x00c0, 0x3ded: 0x00c3, 0x3dee: 0x00c0, 0x3def: 0x00c0, + 0x3df0: 0x00c3, 0x3df1: 0x00c3, 0x3df2: 0x00c3, 0x3df3: 0x00c3, 0x3df4: 0x00c3, 0x3df5: 0x00c3, + 0x3df6: 0x00c5, 0x3df7: 0x00c3, + // Block 0xf8, offset 0x3e00 + 0x3e00: 0x00c0, 0x3e01: 0x00c0, 0x3e02: 0x00c0, 0x3e03: 0x00c0, 0x3e04: 0x00c0, 0x3e05: 0x00c0, + 0x3e06: 0x00c0, 0x3e07: 0x00c0, 0x3e08: 0x00c0, 0x3e09: 0x00c0, + // Block 0xf9, offset 0x3e40 + 0x3e40: 0x00c0, 0x3e41: 0x00c0, 0x3e42: 0x00c0, 0x3e43: 0x00c0, 0x3e44: 0x00c0, 0x3e45: 0x00c0, + 0x3e46: 0x00c0, 0x3e47: 0x00c0, 0x3e48: 0x00c0, 0x3e49: 0x00c0, 0x3e4a: 0x00c0, 0x3e4b: 0x00c0, + 0x3e4c: 0x00c0, 0x3e4d: 0x00c0, 0x3e4e: 0x00c0, 0x3e4f: 0x00c0, 0x3e50: 0x00c0, 0x3e51: 0x00c0, + 0x3e52: 0x00c0, 0x3e53: 0x00c0, 0x3e54: 0x00c0, 0x3e55: 0x00c0, 0x3e56: 0x00c0, 0x3e57: 0x00c0, + 0x3e58: 0x00c0, 0x3e59: 0x00c0, 0x3e5d: 0x00c3, + 0x3e5e: 0x00c3, 0x3e5f: 0x00c3, 0x3e60: 0x00c0, 0x3e61: 0x00c0, 0x3e62: 0x00c3, 0x3e63: 0x00c3, + 0x3e64: 0x00c3, 0x3e65: 0x00c3, 0x3e66: 0x00c0, 0x3e67: 0x00c3, 0x3e68: 0x00c3, 0x3e69: 0x00c3, + 0x3e6a: 0x00c3, 0x3e6b: 0x00c6, + 0x3e70: 0x00c0, 0x3e71: 0x00c0, 0x3e72: 0x00c0, 0x3e73: 0x00c0, 0x3e74: 0x00c0, 0x3e75: 0x00c0, + 0x3e76: 0x00c0, 0x3e77: 0x00c0, 0x3e78: 0x00c0, 0x3e79: 0x00c0, 0x3e7a: 0x0080, 0x3e7b: 0x0080, + 0x3e7c: 0x0080, 0x3e7d: 0x0080, 0x3e7e: 0x0080, 0x3e7f: 0x0080, + // Block 0xfa, offset 0x3e80 + 0x3ea0: 0x00c0, 0x3ea1: 0x00c0, 0x3ea2: 0x00c0, 0x3ea3: 0x00c0, + 0x3ea4: 0x00c0, 0x3ea5: 0x00c0, 0x3ea6: 0x00c0, 0x3ea7: 0x00c0, 0x3ea8: 0x00c0, 0x3ea9: 0x00c0, + 0x3eaa: 0x00c0, 0x3eab: 0x00c0, 0x3eac: 0x00c0, 0x3ead: 0x00c0, 0x3eae: 0x00c0, 0x3eaf: 0x00c0, + 0x3eb0: 0x00c0, 0x3eb1: 0x00c0, 0x3eb2: 0x00c0, 0x3eb3: 0x00c0, 0x3eb4: 0x00c0, 0x3eb5: 0x00c0, + 0x3eb6: 0x00c0, 0x3eb7: 0x00c0, 0x3eb8: 0x00c0, 0x3eb9: 0x00c0, 0x3eba: 0x00c0, 0x3ebb: 0x00c0, + 0x3ebc: 0x00c0, 0x3ebd: 0x00c0, 0x3ebe: 0x00c0, 0x3ebf: 0x00c0, + // Block 0xfb, offset 0x3ec0 + 0x3ec0: 0x00c0, 0x3ec1: 0x00c0, 0x3ec2: 0x00c0, 0x3ec3: 0x00c0, 0x3ec4: 0x00c0, 0x3ec5: 0x00c0, + 0x3ec6: 0x00c0, 0x3ec7: 0x00c0, 0x3ec8: 0x00c0, 0x3ec9: 0x00c0, 0x3eca: 0x00c0, 0x3ecb: 0x00c0, + 0x3ecc: 0x00c0, 0x3ecd: 0x00c0, 0x3ece: 0x00c0, 0x3ecf: 0x00c0, 0x3ed0: 0x00c0, 0x3ed1: 0x00c0, + 0x3ed2: 0x00c0, 0x3ed3: 0x00c0, 0x3ed4: 0x00c0, 0x3ed5: 0x00c0, 0x3ed6: 0x00c0, 0x3ed7: 0x00c0, + 0x3ed8: 0x00c0, 0x3ed9: 0x00c0, 0x3eda: 0x00c0, 0x3edb: 0x00c0, 0x3edc: 0x00c0, 0x3edd: 0x00c0, + 0x3ede: 0x00c0, 0x3edf: 0x00c0, 0x3ee0: 0x00c0, 0x3ee1: 0x00c0, 0x3ee2: 0x00c0, 0x3ee3: 0x00c0, + 0x3ee4: 0x00c0, 0x3ee5: 0x00c0, 0x3ee6: 0x00c0, 0x3ee7: 0x00c0, 0x3ee8: 0x00c0, 0x3ee9: 0x00c0, + 0x3eea: 0x0080, 0x3eeb: 0x0080, 0x3eec: 0x0080, 0x3eed: 0x0080, 0x3eee: 0x0080, 0x3eef: 0x0080, + 0x3ef0: 0x0080, 0x3ef1: 0x0080, 0x3ef2: 0x0080, + 0x3eff: 0x00c0, + // Block 0xfc, offset 0x3f00 + 0x3f00: 0x00c0, 0x3f01: 0x00c0, 0x3f02: 0x00c0, 0x3f03: 0x00c0, 0x3f04: 0x00c0, 0x3f05: 0x00c0, + 0x3f06: 0x00c0, 0x3f07: 0x00c0, 0x3f08: 0x00c0, 0x3f09: 0x00c0, 0x3f0a: 0x00c0, 0x3f0b: 0x00c0, + 0x3f0c: 0x00c0, 0x3f0d: 0x00c0, 0x3f0e: 0x00c0, 0x3f0f: 0x00c0, 0x3f10: 0x00c0, 0x3f11: 0x00c0, + 0x3f12: 0x00c0, 0x3f13: 0x00c0, 0x3f14: 0x00c0, 0x3f15: 0x00c0, 0x3f16: 0x00c0, 0x3f17: 0x00c0, + 0x3f18: 0x00c0, 0x3f19: 0x00c0, 0x3f1a: 0x00c0, 0x3f1b: 0x00c0, 0x3f1c: 0x00c0, 0x3f1d: 0x00c0, + 0x3f1e: 0x00c0, 0x3f1f: 0x00c0, 0x3f20: 0x00c0, 0x3f21: 0x00c0, 0x3f22: 0x00c0, 0x3f23: 0x00c0, + 0x3f24: 0x00c0, 0x3f25: 0x00c0, 0x3f26: 0x00c0, 0x3f27: 0x00c0, 0x3f28: 0x00c0, 0x3f29: 0x00c0, + 0x3f2a: 0x00c0, 0x3f2b: 0x00c0, 0x3f2c: 0x00c0, 0x3f2d: 0x00c0, 0x3f2e: 0x00c0, 0x3f2f: 0x00c0, + 0x3f30: 0x00c0, 0x3f31: 0x00c0, 0x3f32: 0x00c0, 0x3f33: 0x00c0, 0x3f34: 0x00c0, 0x3f35: 0x00c0, + 0x3f36: 0x00c0, 0x3f37: 0x00c0, 0x3f38: 0x00c0, + // Block 0xfd, offset 0x3f40 + 0x3f40: 0x00c0, 0x3f41: 0x00c0, 0x3f42: 0x00c0, 0x3f43: 0x00c0, 0x3f44: 0x00c0, 0x3f45: 0x00c0, + 0x3f46: 0x00c0, 0x3f47: 0x00c0, 0x3f48: 0x00c0, 0x3f4a: 0x00c0, 0x3f4b: 0x00c0, + 0x3f4c: 0x00c0, 0x3f4d: 0x00c0, 0x3f4e: 0x00c0, 0x3f4f: 0x00c0, 0x3f50: 0x00c0, 0x3f51: 0x00c0, + 0x3f52: 0x00c0, 0x3f53: 0x00c0, 0x3f54: 0x00c0, 0x3f55: 0x00c0, 0x3f56: 0x00c0, 0x3f57: 0x00c0, + 0x3f58: 0x00c0, 0x3f59: 0x00c0, 0x3f5a: 0x00c0, 0x3f5b: 0x00c0, 0x3f5c: 0x00c0, 0x3f5d: 0x00c0, + 0x3f5e: 0x00c0, 0x3f5f: 0x00c0, 0x3f60: 0x00c0, 0x3f61: 0x00c0, 0x3f62: 0x00c0, 0x3f63: 0x00c0, + 0x3f64: 0x00c0, 0x3f65: 0x00c0, 0x3f66: 0x00c0, 0x3f67: 0x00c0, 0x3f68: 0x00c0, 0x3f69: 0x00c0, + 0x3f6a: 0x00c0, 0x3f6b: 0x00c0, 0x3f6c: 0x00c0, 0x3f6d: 0x00c0, 0x3f6e: 0x00c0, 0x3f6f: 0x00c0, + 0x3f70: 0x00c3, 0x3f71: 0x00c3, 0x3f72: 0x00c3, 0x3f73: 0x00c3, 0x3f74: 0x00c3, 0x3f75: 0x00c3, + 0x3f76: 0x00c3, 0x3f78: 0x00c3, 0x3f79: 0x00c3, 0x3f7a: 0x00c3, 0x3f7b: 0x00c3, + 0x3f7c: 0x00c3, 0x3f7d: 0x00c3, 0x3f7e: 0x00c0, 0x3f7f: 0x00c6, + // Block 0xfe, offset 0x3f80 + 0x3f80: 0x00c0, 0x3f81: 0x0080, 0x3f82: 0x0080, 0x3f83: 0x0080, 0x3f84: 0x0080, 0x3f85: 0x0080, + 0x3f90: 0x00c0, 0x3f91: 0x00c0, + 0x3f92: 0x00c0, 0x3f93: 0x00c0, 0x3f94: 0x00c0, 0x3f95: 0x00c0, 0x3f96: 0x00c0, 0x3f97: 0x00c0, + 0x3f98: 0x00c0, 0x3f99: 0x00c0, 0x3f9a: 0x0080, 0x3f9b: 0x0080, 0x3f9c: 0x0080, 0x3f9d: 0x0080, + 0x3f9e: 0x0080, 0x3f9f: 0x0080, 0x3fa0: 0x0080, 0x3fa1: 0x0080, 0x3fa2: 0x0080, 0x3fa3: 0x0080, + 0x3fa4: 0x0080, 0x3fa5: 0x0080, 0x3fa6: 0x0080, 0x3fa7: 0x0080, 0x3fa8: 0x0080, 0x3fa9: 0x0080, + 0x3faa: 0x0080, 0x3fab: 0x0080, 0x3fac: 0x0080, + 0x3fb0: 0x0080, 0x3fb1: 0x0080, 0x3fb2: 0x00c0, 0x3fb3: 0x00c0, 0x3fb4: 0x00c0, 0x3fb5: 0x00c0, + 0x3fb6: 0x00c0, 0x3fb7: 0x00c0, 0x3fb8: 0x00c0, 0x3fb9: 0x00c0, 0x3fba: 0x00c0, 0x3fbb: 0x00c0, + 0x3fbc: 0x00c0, 0x3fbd: 0x00c0, 0x3fbe: 0x00c0, 0x3fbf: 0x00c0, + // Block 0xff, offset 0x3fc0 + 0x3fc0: 0x00c0, 0x3fc1: 0x00c0, 0x3fc2: 0x00c0, 0x3fc3: 0x00c0, 0x3fc4: 0x00c0, 0x3fc5: 0x00c0, + 0x3fc6: 0x00c0, 0x3fc7: 0x00c0, 0x3fc8: 0x00c0, 0x3fc9: 0x00c0, 0x3fca: 0x00c0, 0x3fcb: 0x00c0, + 0x3fcc: 0x00c0, 0x3fcd: 0x00c0, 0x3fce: 0x00c0, 0x3fcf: 0x00c0, + 0x3fd2: 0x00c3, 0x3fd3: 0x00c3, 0x3fd4: 0x00c3, 0x3fd5: 0x00c3, 0x3fd6: 0x00c3, 0x3fd7: 0x00c3, + 0x3fd8: 0x00c3, 0x3fd9: 0x00c3, 0x3fda: 0x00c3, 0x3fdb: 0x00c3, 0x3fdc: 0x00c3, 0x3fdd: 0x00c3, + 0x3fde: 0x00c3, 0x3fdf: 0x00c3, 0x3fe0: 0x00c3, 0x3fe1: 0x00c3, 0x3fe2: 0x00c3, 0x3fe3: 0x00c3, + 0x3fe4: 0x00c3, 0x3fe5: 0x00c3, 0x3fe6: 0x00c3, 0x3fe7: 0x00c3, 0x3fe9: 0x00c0, + 0x3fea: 0x00c3, 0x3feb: 0x00c3, 0x3fec: 0x00c3, 0x3fed: 0x00c3, 0x3fee: 0x00c3, 0x3fef: 0x00c3, + 0x3ff0: 0x00c3, 0x3ff1: 0x00c0, 0x3ff2: 0x00c3, 0x3ff3: 0x00c3, 0x3ff4: 0x00c0, 0x3ff5: 0x00c3, + 0x3ff6: 0x00c3, + // Block 0x100, offset 0x4000 + 0x4000: 0x00c0, 0x4001: 0x00c0, 0x4002: 0x00c0, 0x4003: 0x00c0, 0x4004: 0x00c0, 0x4005: 0x00c0, + 0x4006: 0x00c0, 0x4007: 0x00c0, 0x4008: 0x00c0, 0x4009: 0x00c0, 0x400a: 0x00c0, 0x400b: 0x00c0, + 0x400c: 0x00c0, 0x400d: 0x00c0, 0x400e: 0x00c0, 0x400f: 0x00c0, 0x4010: 0x00c0, 0x4011: 0x00c0, + 0x4012: 0x00c0, 0x4013: 0x00c0, 0x4014: 0x00c0, 0x4015: 0x00c0, 0x4016: 0x00c0, 0x4017: 0x00c0, + 0x4018: 0x00c0, 0x4019: 0x00c0, + // Block 0x101, offset 0x4040 + 0x4040: 0x0080, 0x4041: 0x0080, 0x4042: 0x0080, 0x4043: 0x0080, 0x4044: 0x0080, 0x4045: 0x0080, + 0x4046: 0x0080, 0x4047: 0x0080, 0x4048: 0x0080, 0x4049: 0x0080, 0x404a: 0x0080, 0x404b: 0x0080, + 0x404c: 0x0080, 0x404d: 0x0080, 0x404e: 0x0080, 0x404f: 0x0080, 0x4050: 0x0080, 0x4051: 0x0080, + 0x4052: 0x0080, 0x4053: 0x0080, 0x4054: 0x0080, 0x4055: 0x0080, 0x4056: 0x0080, 0x4057: 0x0080, + 0x4058: 0x0080, 0x4059: 0x0080, 0x405a: 0x0080, 0x405b: 0x0080, 0x405c: 0x0080, 0x405d: 0x0080, + 0x405e: 0x0080, 0x405f: 0x0080, 0x4060: 0x0080, 0x4061: 0x0080, 0x4062: 0x0080, 0x4063: 0x0080, + 0x4064: 0x0080, 0x4065: 0x0080, 0x4066: 0x0080, 0x4067: 0x0080, 0x4068: 0x0080, 0x4069: 0x0080, + 0x406a: 0x0080, 0x406b: 0x0080, 0x406c: 0x0080, 0x406d: 0x0080, 0x406e: 0x0080, + 0x4070: 0x0080, 0x4071: 0x0080, 0x4072: 0x0080, 0x4073: 0x0080, 0x4074: 0x0080, + // Block 0x102, offset 0x4080 + 0x4080: 0x00c0, 0x4081: 0x00c0, 0x4082: 0x00c0, 0x4083: 0x00c0, + // Block 0x103, offset 0x40c0 + 0x40c0: 0x00c0, 0x40c1: 0x00c0, 0x40c2: 0x00c0, 0x40c3: 0x00c0, 0x40c4: 0x00c0, 0x40c5: 0x00c0, + 0x40c6: 0x00c0, 0x40c7: 0x00c0, 0x40c8: 0x00c0, 0x40c9: 0x00c0, 0x40ca: 0x00c0, 0x40cb: 0x00c0, + 0x40cc: 0x00c0, 0x40cd: 0x00c0, 0x40ce: 0x00c0, 0x40cf: 0x00c0, 0x40d0: 0x00c0, 0x40d1: 0x00c0, + 0x40d2: 0x00c0, 0x40d3: 0x00c0, 0x40d4: 0x00c0, 0x40d5: 0x00c0, 0x40d6: 0x00c0, 0x40d7: 0x00c0, + 0x40d8: 0x00c0, 0x40d9: 0x00c0, 0x40da: 0x00c0, 0x40db: 0x00c0, 0x40dc: 0x00c0, 0x40dd: 0x00c0, + 0x40de: 0x00c0, 0x40df: 0x00c0, 0x40e0: 0x00c0, 0x40e1: 0x00c0, 0x40e2: 0x00c0, 0x40e3: 0x00c0, + 0x40e4: 0x00c0, 0x40e5: 0x00c0, 0x40e6: 0x00c0, 0x40e7: 0x00c0, 0x40e8: 0x00c0, 0x40e9: 0x00c0, + 0x40ea: 0x00c0, 0x40eb: 0x00c0, 0x40ec: 0x00c0, 0x40ed: 0x00c0, 0x40ee: 0x00c0, + // Block 0x104, offset 0x4100 + 0x4100: 0x00c0, 0x4101: 0x00c0, 0x4102: 0x00c0, 0x4103: 0x00c0, 0x4104: 0x00c0, 0x4105: 0x00c0, + 0x4106: 0x00c0, + // Block 0x105, offset 0x4140 + 0x4140: 0x00c0, 0x4141: 0x00c0, 0x4142: 0x00c0, 0x4143: 0x00c0, 0x4144: 0x00c0, 0x4145: 0x00c0, + 0x4146: 0x00c0, 0x4147: 0x00c0, 0x4148: 0x00c0, 0x4149: 0x00c0, 0x414a: 0x00c0, 0x414b: 0x00c0, + 0x414c: 0x00c0, 0x414d: 0x00c0, 0x414e: 0x00c0, 0x414f: 0x00c0, 0x4150: 0x00c0, 0x4151: 0x00c0, + 0x4152: 0x00c0, 0x4153: 0x00c0, 0x4154: 0x00c0, 0x4155: 0x00c0, 0x4156: 0x00c0, 0x4157: 0x00c0, + 0x4158: 0x00c0, 0x4159: 0x00c0, 0x415a: 0x00c0, 0x415b: 0x00c0, 0x415c: 0x00c0, 0x415d: 0x00c0, + 0x415e: 0x00c0, 0x4160: 0x00c0, 0x4161: 0x00c0, 0x4162: 0x00c0, 0x4163: 0x00c0, + 0x4164: 0x00c0, 0x4165: 0x00c0, 0x4166: 0x00c0, 0x4167: 0x00c0, 0x4168: 0x00c0, 0x4169: 0x00c0, + 0x416e: 0x0080, 0x416f: 0x0080, + // Block 0x106, offset 0x4180 + 0x4190: 0x00c0, 0x4191: 0x00c0, + 0x4192: 0x00c0, 0x4193: 0x00c0, 0x4194: 0x00c0, 0x4195: 0x00c0, 0x4196: 0x00c0, 0x4197: 0x00c0, + 0x4198: 0x00c0, 0x4199: 0x00c0, 0x419a: 0x00c0, 0x419b: 0x00c0, 0x419c: 0x00c0, 0x419d: 0x00c0, + 0x419e: 0x00c0, 0x419f: 0x00c0, 0x41a0: 0x00c0, 0x41a1: 0x00c0, 0x41a2: 0x00c0, 0x41a3: 0x00c0, + 0x41a4: 0x00c0, 0x41a5: 0x00c0, 0x41a6: 0x00c0, 0x41a7: 0x00c0, 0x41a8: 0x00c0, 0x41a9: 0x00c0, + 0x41aa: 0x00c0, 0x41ab: 0x00c0, 0x41ac: 0x00c0, 0x41ad: 0x00c0, + 0x41b0: 0x00c3, 0x41b1: 0x00c3, 0x41b2: 0x00c3, 0x41b3: 0x00c3, 0x41b4: 0x00c3, 0x41b5: 0x0080, + // Block 0x107, offset 0x41c0 + 0x41c0: 0x00c0, 0x41c1: 0x00c0, 0x41c2: 0x00c0, 0x41c3: 0x00c0, 0x41c4: 0x00c0, 0x41c5: 0x00c0, + 0x41c6: 0x00c0, 0x41c7: 0x00c0, 0x41c8: 0x00c0, 0x41c9: 0x00c0, 0x41ca: 0x00c0, 0x41cb: 0x00c0, + 0x41cc: 0x00c0, 0x41cd: 0x00c0, 0x41ce: 0x00c0, 0x41cf: 0x00c0, 0x41d0: 0x00c0, 0x41d1: 0x00c0, + 0x41d2: 0x00c0, 0x41d3: 0x00c0, 0x41d4: 0x00c0, 0x41d5: 0x00c0, 0x41d6: 0x00c0, 0x41d7: 0x00c0, + 0x41d8: 0x00c0, 0x41d9: 0x00c0, 0x41da: 0x00c0, 0x41db: 0x00c0, 0x41dc: 0x00c0, 0x41dd: 0x00c0, + 0x41de: 0x00c0, 0x41df: 0x00c0, 0x41e0: 0x00c0, 0x41e1: 0x00c0, 0x41e2: 0x00c0, 0x41e3: 0x00c0, + 0x41e4: 0x00c0, 0x41e5: 0x00c0, 0x41e6: 0x00c0, 0x41e7: 0x00c0, 0x41e8: 0x00c0, 0x41e9: 0x00c0, + 0x41ea: 0x00c0, 0x41eb: 0x00c0, 0x41ec: 0x00c0, 0x41ed: 0x00c0, 0x41ee: 0x00c0, 0x41ef: 0x00c0, + 0x41f0: 0x00c3, 0x41f1: 0x00c3, 0x41f2: 0x00c3, 0x41f3: 0x00c3, 0x41f4: 0x00c3, 0x41f5: 0x00c3, + 0x41f6: 0x00c3, 0x41f7: 0x0080, 0x41f8: 0x0080, 0x41f9: 0x0080, 0x41fa: 0x0080, 0x41fb: 0x0080, + 0x41fc: 0x0080, 0x41fd: 0x0080, 0x41fe: 0x0080, 0x41ff: 0x0080, + // Block 0x108, offset 0x4200 + 0x4200: 0x00c0, 0x4201: 0x00c0, 0x4202: 0x00c0, 0x4203: 0x00c0, 0x4204: 0x0080, 0x4205: 0x0080, + 0x4210: 0x00c0, 0x4211: 0x00c0, + 0x4212: 0x00c0, 0x4213: 0x00c0, 0x4214: 0x00c0, 0x4215: 0x00c0, 0x4216: 0x00c0, 0x4217: 0x00c0, + 0x4218: 0x00c0, 0x4219: 0x00c0, 0x421b: 0x0080, 0x421c: 0x0080, 0x421d: 0x0080, + 0x421e: 0x0080, 0x421f: 0x0080, 0x4220: 0x0080, 0x4221: 0x0080, 0x4223: 0x00c0, + 0x4224: 0x00c0, 0x4225: 0x00c0, 0x4226: 0x00c0, 0x4227: 0x00c0, 0x4228: 0x00c0, 0x4229: 0x00c0, + 0x422a: 0x00c0, 0x422b: 0x00c0, 0x422c: 0x00c0, 0x422d: 0x00c0, 0x422e: 0x00c0, 0x422f: 0x00c0, + 0x4230: 0x00c0, 0x4231: 0x00c0, 0x4232: 0x00c0, 0x4233: 0x00c0, 0x4234: 0x00c0, 0x4235: 0x00c0, + 0x4236: 0x00c0, 0x4237: 0x00c0, + 0x423d: 0x00c0, 0x423e: 0x00c0, 0x423f: 0x00c0, + // Block 0x109, offset 0x4240 + 0x4240: 0x00c0, 0x4241: 0x00c0, 0x4242: 0x00c0, 0x4243: 0x00c0, 0x4244: 0x00c0, 0x4245: 0x00c0, + 0x4246: 0x00c0, 0x4247: 0x00c0, 0x4248: 0x00c0, 0x4249: 0x00c0, 0x424a: 0x00c0, 0x424b: 0x00c0, + 0x424c: 0x00c0, 0x424d: 0x00c0, 0x424e: 0x00c0, 0x424f: 0x00c0, + // Block 0x10a, offset 0x4280 + 0x4280: 0x00c0, 0x4281: 0x00c0, 0x4282: 0x00c0, 0x4283: 0x00c0, 0x4284: 0x00c0, + 0x4290: 0x00c0, 0x4291: 0x00c0, + 0x4292: 0x00c0, 0x4293: 0x00c0, 0x4294: 0x00c0, 0x4295: 0x00c0, 0x4296: 0x00c0, 0x4297: 0x00c0, + 0x4298: 0x00c0, 0x4299: 0x00c0, 0x429a: 0x00c0, 0x429b: 0x00c0, 0x429c: 0x00c0, 0x429d: 0x00c0, + 0x429e: 0x00c0, 0x429f: 0x00c0, 0x42a0: 0x00c0, 0x42a1: 0x00c0, 0x42a2: 0x00c0, 0x42a3: 0x00c0, + 0x42a4: 0x00c0, 0x42a5: 0x00c0, 0x42a6: 0x00c0, 0x42a7: 0x00c0, 0x42a8: 0x00c0, 0x42a9: 0x00c0, + 0x42aa: 0x00c0, 0x42ab: 0x00c0, 0x42ac: 0x00c0, 0x42ad: 0x00c0, 0x42ae: 0x00c0, 0x42af: 0x00c0, + 0x42b0: 0x00c0, 0x42b1: 0x00c0, 0x42b2: 0x00c0, 0x42b3: 0x00c0, 0x42b4: 0x00c0, 0x42b5: 0x00c0, + 0x42b6: 0x00c0, 0x42b7: 0x00c0, 0x42b8: 0x00c0, 0x42b9: 0x00c0, 0x42ba: 0x00c0, 0x42bb: 0x00c0, + 0x42bc: 0x00c0, 0x42bd: 0x00c0, 0x42be: 0x00c0, + // Block 0x10b, offset 0x42c0 + 0x42cf: 0x00c3, 0x42d0: 0x00c3, 0x42d1: 0x00c3, + 0x42d2: 0x00c3, 0x42d3: 0x00c0, 0x42d4: 0x00c0, 0x42d5: 0x00c0, 0x42d6: 0x00c0, 0x42d7: 0x00c0, + 0x42d8: 0x00c0, 0x42d9: 0x00c0, 0x42da: 0x00c0, 0x42db: 0x00c0, 0x42dc: 0x00c0, 0x42dd: 0x00c0, + 0x42de: 0x00c0, 0x42df: 0x00c0, + // Block 0x10c, offset 0x4300 + 0x4320: 0x00c0, + // Block 0x10d, offset 0x4340 + 0x4340: 0x00c0, 0x4341: 0x00c0, 0x4342: 0x00c0, 0x4343: 0x00c0, 0x4344: 0x00c0, 0x4345: 0x00c0, + 0x4346: 0x00c0, 0x4347: 0x00c0, 0x4348: 0x00c0, 0x4349: 0x00c0, 0x434a: 0x00c0, 0x434b: 0x00c0, + 0x434c: 0x00c0, 0x434d: 0x00c0, 0x434e: 0x00c0, 0x434f: 0x00c0, 0x4350: 0x00c0, 0x4351: 0x00c0, + 0x4352: 0x00c0, 0x4353: 0x00c0, 0x4354: 0x00c0, 0x4355: 0x00c0, 0x4356: 0x00c0, 0x4357: 0x00c0, + 0x4358: 0x00c0, 0x4359: 0x00c0, 0x435a: 0x00c0, 0x435b: 0x00c0, 0x435c: 0x00c0, 0x435d: 0x00c0, + 0x435e: 0x00c0, 0x435f: 0x00c0, 0x4360: 0x00c0, 0x4361: 0x00c0, 0x4362: 0x00c0, 0x4363: 0x00c0, + 0x4364: 0x00c0, 0x4365: 0x00c0, 0x4366: 0x00c0, 0x4367: 0x00c0, 0x4368: 0x00c0, 0x4369: 0x00c0, + 0x436a: 0x00c0, 0x436b: 0x00c0, 0x436c: 0x00c0, + // Block 0x10e, offset 0x4380 + 0x4380: 0x00cc, 0x4381: 0x00cc, + // Block 0x10f, offset 0x43c0 + 0x43c0: 0x00c0, 0x43c1: 0x00c0, 0x43c2: 0x00c0, 0x43c3: 0x00c0, 0x43c4: 0x00c0, 0x43c5: 0x00c0, + 0x43c6: 0x00c0, 0x43c7: 0x00c0, 0x43c8: 0x00c0, 0x43c9: 0x00c0, 0x43ca: 0x00c0, 0x43cb: 0x00c0, + 0x43cc: 0x00c0, 0x43cd: 0x00c0, 0x43ce: 0x00c0, 0x43cf: 0x00c0, 0x43d0: 0x00c0, 0x43d1: 0x00c0, + 0x43d2: 0x00c0, 0x43d3: 0x00c0, 0x43d4: 0x00c0, 0x43d5: 0x00c0, 0x43d6: 0x00c0, 0x43d7: 0x00c0, + 0x43d8: 0x00c0, 0x43d9: 0x00c0, 0x43da: 0x00c0, 0x43db: 0x00c0, 0x43dc: 0x00c0, 0x43dd: 0x00c0, + 0x43de: 0x00c0, 0x43df: 0x00c0, 0x43e0: 0x00c0, 0x43e1: 0x00c0, 0x43e2: 0x00c0, 0x43e3: 0x00c0, + 0x43e4: 0x00c0, 0x43e5: 0x00c0, 0x43e6: 0x00c0, 0x43e7: 0x00c0, 0x43e8: 0x00c0, 0x43e9: 0x00c0, + 0x43ea: 0x00c0, + 0x43f0: 0x00c0, 0x43f1: 0x00c0, 0x43f2: 0x00c0, 0x43f3: 0x00c0, 0x43f4: 0x00c0, 0x43f5: 0x00c0, + 0x43f6: 0x00c0, 0x43f7: 0x00c0, 0x43f8: 0x00c0, 0x43f9: 0x00c0, 0x43fa: 0x00c0, 0x43fb: 0x00c0, + 0x43fc: 0x00c0, + // Block 0x110, offset 0x4400 + 0x4400: 0x00c0, 0x4401: 0x00c0, 0x4402: 0x00c0, 0x4403: 0x00c0, 0x4404: 0x00c0, 0x4405: 0x00c0, + 0x4406: 0x00c0, 0x4407: 0x00c0, 0x4408: 0x00c0, + 0x4410: 0x00c0, 0x4411: 0x00c0, + 0x4412: 0x00c0, 0x4413: 0x00c0, 0x4414: 0x00c0, 0x4415: 0x00c0, 0x4416: 0x00c0, 0x4417: 0x00c0, + 0x4418: 0x00c0, 0x4419: 0x00c0, 0x441c: 0x0080, 0x441d: 0x00c3, + 0x441e: 0x00c3, 0x441f: 0x0080, 0x4420: 0x0040, 0x4421: 0x0040, 0x4422: 0x0040, 0x4423: 0x0040, + // Block 0x111, offset 0x4440 + 0x4440: 0x0080, 0x4441: 0x0080, 0x4442: 0x0080, 0x4443: 0x0080, 0x4444: 0x0080, 0x4445: 0x0080, + 0x4446: 0x0080, 0x4447: 0x0080, 0x4448: 0x0080, 0x4449: 0x0080, 0x444a: 0x0080, 0x444b: 0x0080, + 0x444c: 0x0080, 0x444d: 0x0080, 0x444e: 0x0080, 0x444f: 0x0080, 0x4450: 0x0080, 0x4451: 0x0080, + 0x4452: 0x0080, 0x4453: 0x0080, 0x4454: 0x0080, 0x4455: 0x0080, 0x4456: 0x0080, 0x4457: 0x0080, + 0x4458: 0x0080, 0x4459: 0x0080, 0x445a: 0x0080, 0x445b: 0x0080, 0x445c: 0x0080, 0x445d: 0x0080, + 0x445e: 0x0080, 0x445f: 0x0080, 0x4460: 0x0080, 0x4461: 0x0080, 0x4462: 0x0080, 0x4463: 0x0080, + 0x4464: 0x0080, 0x4465: 0x0080, 0x4466: 0x0080, 0x4467: 0x0080, 0x4468: 0x0080, 0x4469: 0x0080, + 0x446a: 0x0080, 0x446b: 0x0080, 0x446c: 0x0080, 0x446d: 0x0080, 0x446e: 0x0080, 0x446f: 0x0080, + 0x4470: 0x0080, 0x4471: 0x0080, 0x4472: 0x0080, 0x4473: 0x0080, 0x4474: 0x0080, 0x4475: 0x0080, + // Block 0x112, offset 0x4480 + 0x4480: 0x0080, 0x4481: 0x0080, 0x4482: 0x0080, 0x4483: 0x0080, 0x4484: 0x0080, 0x4485: 0x0080, + 0x4486: 0x0080, 0x4487: 0x0080, 0x4488: 0x0080, 0x4489: 0x0080, 0x448a: 0x0080, 0x448b: 0x0080, + 0x448c: 0x0080, 0x448d: 0x0080, 0x448e: 0x0080, 0x448f: 0x0080, 0x4490: 0x0080, 0x4491: 0x0080, + 0x4492: 0x0080, 0x4493: 0x0080, 0x4494: 0x0080, 0x4495: 0x0080, 0x4496: 0x0080, 0x4497: 0x0080, + 0x4498: 0x0080, 0x4499: 0x0080, 0x449a: 0x0080, 0x449b: 0x0080, 0x449c: 0x0080, 0x449d: 0x0080, + 0x449e: 0x0080, 0x449f: 0x0080, 0x44a0: 0x0080, 0x44a1: 0x0080, 0x44a2: 0x0080, 0x44a3: 0x0080, + 0x44a4: 0x0080, 0x44a5: 0x0080, 0x44a6: 0x0080, 0x44a9: 0x0080, + 0x44aa: 0x0080, 0x44ab: 0x0080, 0x44ac: 0x0080, 0x44ad: 0x0080, 0x44ae: 0x0080, 0x44af: 0x0080, + 0x44b0: 0x0080, 0x44b1: 0x0080, 0x44b2: 0x0080, 0x44b3: 0x0080, 0x44b4: 0x0080, 0x44b5: 0x0080, + 0x44b6: 0x0080, 0x44b7: 0x0080, 0x44b8: 0x0080, 0x44b9: 0x0080, 0x44ba: 0x0080, 0x44bb: 0x0080, + 0x44bc: 0x0080, 0x44bd: 0x0080, 0x44be: 0x0080, 0x44bf: 0x0080, + // Block 0x113, offset 0x44c0 + 0x44c0: 0x0080, 0x44c1: 0x0080, 0x44c2: 0x0080, 0x44c3: 0x0080, 0x44c4: 0x0080, 0x44c5: 0x0080, + 0x44c6: 0x0080, 0x44c7: 0x0080, 0x44c8: 0x0080, 0x44c9: 0x0080, 0x44ca: 0x0080, 0x44cb: 0x0080, + 0x44cc: 0x0080, 0x44cd: 0x0080, 0x44ce: 0x0080, 0x44cf: 0x0080, 0x44d0: 0x0080, 0x44d1: 0x0080, + 0x44d2: 0x0080, 0x44d3: 0x0080, 0x44d4: 0x0080, 0x44d5: 0x0080, 0x44d6: 0x0080, 0x44d7: 0x0080, + 0x44d8: 0x0080, 0x44d9: 0x0080, 0x44da: 0x0080, 0x44db: 0x0080, 0x44dc: 0x0080, 0x44dd: 0x0080, + 0x44de: 0x0080, 0x44df: 0x0080, 0x44e0: 0x0080, 0x44e1: 0x0080, 0x44e2: 0x0080, 0x44e3: 0x0080, + 0x44e4: 0x0080, 0x44e5: 0x00c0, 0x44e6: 0x00c0, 0x44e7: 0x00c3, 0x44e8: 0x00c3, 0x44e9: 0x00c3, + 0x44ea: 0x0080, 0x44eb: 0x0080, 0x44ec: 0x0080, 0x44ed: 0x00c0, 0x44ee: 0x00c0, 0x44ef: 0x00c0, + 0x44f0: 0x00c0, 0x44f1: 0x00c0, 0x44f2: 0x00c0, 0x44f3: 0x0040, 0x44f4: 0x0040, 0x44f5: 0x0040, + 0x44f6: 0x0040, 0x44f7: 0x0040, 0x44f8: 0x0040, 0x44f9: 0x0040, 0x44fa: 0x0040, 0x44fb: 0x00c3, + 0x44fc: 0x00c3, 0x44fd: 0x00c3, 0x44fe: 0x00c3, 0x44ff: 0x00c3, + // Block 0x114, offset 0x4500 + 0x4500: 0x00c3, 0x4501: 0x00c3, 0x4502: 0x00c3, 0x4503: 0x0080, 0x4504: 0x0080, 0x4505: 0x00c3, + 0x4506: 0x00c3, 0x4507: 0x00c3, 0x4508: 0x00c3, 0x4509: 0x00c3, 0x450a: 0x00c3, 0x450b: 0x00c3, + 0x450c: 0x0080, 0x450d: 0x0080, 0x450e: 0x0080, 0x450f: 0x0080, 0x4510: 0x0080, 0x4511: 0x0080, + 0x4512: 0x0080, 0x4513: 0x0080, 0x4514: 0x0080, 0x4515: 0x0080, 0x4516: 0x0080, 0x4517: 0x0080, + 0x4518: 0x0080, 0x4519: 0x0080, 0x451a: 0x0080, 0x451b: 0x0080, 0x451c: 0x0080, 0x451d: 0x0080, + 0x451e: 0x0080, 0x451f: 0x0080, 0x4520: 0x0080, 0x4521: 0x0080, 0x4522: 0x0080, 0x4523: 0x0080, + 0x4524: 0x0080, 0x4525: 0x0080, 0x4526: 0x0080, 0x4527: 0x0080, 0x4528: 0x0080, 0x4529: 0x0080, + 0x452a: 0x00c3, 0x452b: 0x00c3, 0x452c: 0x00c3, 0x452d: 0x00c3, 0x452e: 0x0080, 0x452f: 0x0080, + 0x4530: 0x0080, 0x4531: 0x0080, 0x4532: 0x0080, 0x4533: 0x0080, 0x4534: 0x0080, 0x4535: 0x0080, + 0x4536: 0x0080, 0x4537: 0x0080, 0x4538: 0x0080, 0x4539: 0x0080, 0x453a: 0x0080, 0x453b: 0x0080, + 0x453c: 0x0080, 0x453d: 0x0080, 0x453e: 0x0080, 0x453f: 0x0080, + // Block 0x115, offset 0x4540 + 0x4540: 0x0080, 0x4541: 0x0080, 0x4542: 0x0080, 0x4543: 0x0080, 0x4544: 0x0080, 0x4545: 0x0080, + 0x4546: 0x0080, 0x4547: 0x0080, 0x4548: 0x0080, 0x4549: 0x0080, 0x454a: 0x0080, 0x454b: 0x0080, + 0x454c: 0x0080, 0x454d: 0x0080, 0x454e: 0x0080, 0x454f: 0x0080, 0x4550: 0x0080, 0x4551: 0x0080, + 0x4552: 0x0080, 0x4553: 0x0080, 0x4554: 0x0080, 0x4555: 0x0080, 0x4556: 0x0080, 0x4557: 0x0080, + 0x4558: 0x0080, 0x4559: 0x0080, 0x455a: 0x0080, 0x455b: 0x0080, 0x455c: 0x0080, 0x455d: 0x0080, + 0x455e: 0x0080, 0x455f: 0x0080, 0x4560: 0x0080, 0x4561: 0x0080, 0x4562: 0x0080, 0x4563: 0x0080, + 0x4564: 0x0080, 0x4565: 0x0080, 0x4566: 0x0080, 0x4567: 0x0080, 0x4568: 0x0080, + // Block 0x116, offset 0x4580 + 0x4580: 0x0088, 0x4581: 0x0088, 0x4582: 0x00c9, 0x4583: 0x00c9, 0x4584: 0x00c9, 0x4585: 0x0088, + // Block 0x117, offset 0x45c0 + 0x45c0: 0x0080, 0x45c1: 0x0080, 0x45c2: 0x0080, 0x45c3: 0x0080, 0x45c4: 0x0080, 0x45c5: 0x0080, + 0x45c6: 0x0080, 0x45c7: 0x0080, 0x45c8: 0x0080, 0x45c9: 0x0080, 0x45ca: 0x0080, 0x45cb: 0x0080, + 0x45cc: 0x0080, 0x45cd: 0x0080, 0x45ce: 0x0080, 0x45cf: 0x0080, 0x45d0: 0x0080, 0x45d1: 0x0080, + 0x45d2: 0x0080, 0x45d3: 0x0080, 0x45d4: 0x0080, 0x45d5: 0x0080, 0x45d6: 0x0080, + 0x45e0: 0x0080, 0x45e1: 0x0080, 0x45e2: 0x0080, 0x45e3: 0x0080, + 0x45e4: 0x0080, 0x45e5: 0x0080, 0x45e6: 0x0080, 0x45e7: 0x0080, 0x45e8: 0x0080, 0x45e9: 0x0080, + 0x45ea: 0x0080, 0x45eb: 0x0080, 0x45ec: 0x0080, 0x45ed: 0x0080, 0x45ee: 0x0080, 0x45ef: 0x0080, + 0x45f0: 0x0080, 0x45f1: 0x0080, + // Block 0x118, offset 0x4600 + 0x4600: 0x0080, 0x4601: 0x0080, 0x4602: 0x0080, 0x4603: 0x0080, 0x4604: 0x0080, 0x4605: 0x0080, + 0x4606: 0x0080, 0x4607: 0x0080, 0x4608: 0x0080, 0x4609: 0x0080, 0x460a: 0x0080, 0x460b: 0x0080, + 0x460c: 0x0080, 0x460d: 0x0080, 0x460e: 0x0080, 0x460f: 0x0080, 0x4610: 0x0080, 0x4611: 0x0080, + 0x4612: 0x0080, 0x4613: 0x0080, 0x4614: 0x0080, 0x4616: 0x0080, 0x4617: 0x0080, + 0x4618: 0x0080, 0x4619: 0x0080, 0x461a: 0x0080, 0x461b: 0x0080, 0x461c: 0x0080, 0x461d: 0x0080, + 0x461e: 0x0080, 0x461f: 0x0080, 0x4620: 0x0080, 0x4621: 0x0080, 0x4622: 0x0080, 0x4623: 0x0080, + 0x4624: 0x0080, 0x4625: 0x0080, 0x4626: 0x0080, 0x4627: 0x0080, 0x4628: 0x0080, 0x4629: 0x0080, + 0x462a: 0x0080, 0x462b: 0x0080, 0x462c: 0x0080, 0x462d: 0x0080, 0x462e: 0x0080, 0x462f: 0x0080, + 0x4630: 0x0080, 0x4631: 0x0080, 0x4632: 0x0080, 0x4633: 0x0080, 0x4634: 0x0080, 0x4635: 0x0080, + 0x4636: 0x0080, 0x4637: 0x0080, 0x4638: 0x0080, 0x4639: 0x0080, 0x463a: 0x0080, 0x463b: 0x0080, + 0x463c: 0x0080, 0x463d: 0x0080, 0x463e: 0x0080, 0x463f: 0x0080, + // Block 0x119, offset 0x4640 + 0x4640: 0x0080, 0x4641: 0x0080, 0x4642: 0x0080, 0x4643: 0x0080, 0x4644: 0x0080, 0x4645: 0x0080, + 0x4646: 0x0080, 0x4647: 0x0080, 0x4648: 0x0080, 0x4649: 0x0080, 0x464a: 0x0080, 0x464b: 0x0080, + 0x464c: 0x0080, 0x464d: 0x0080, 0x464e: 0x0080, 0x464f: 0x0080, 0x4650: 0x0080, 0x4651: 0x0080, + 0x4652: 0x0080, 0x4653: 0x0080, 0x4654: 0x0080, 0x4655: 0x0080, 0x4656: 0x0080, 0x4657: 0x0080, + 0x4658: 0x0080, 0x4659: 0x0080, 0x465a: 0x0080, 0x465b: 0x0080, 0x465c: 0x0080, + 0x465e: 0x0080, 0x465f: 0x0080, 0x4662: 0x0080, + 0x4665: 0x0080, 0x4666: 0x0080, 0x4669: 0x0080, + 0x466a: 0x0080, 0x466b: 0x0080, 0x466c: 0x0080, 0x466e: 0x0080, 0x466f: 0x0080, + 0x4670: 0x0080, 0x4671: 0x0080, 0x4672: 0x0080, 0x4673: 0x0080, 0x4674: 0x0080, 0x4675: 0x0080, + 0x4676: 0x0080, 0x4677: 0x0080, 0x4678: 0x0080, 0x4679: 0x0080, 0x467b: 0x0080, + 0x467d: 0x0080, 0x467e: 0x0080, 0x467f: 0x0080, + // Block 0x11a, offset 0x4680 + 0x4680: 0x0080, 0x4681: 0x0080, 0x4682: 0x0080, 0x4683: 0x0080, 0x4685: 0x0080, + 0x4686: 0x0080, 0x4687: 0x0080, 0x4688: 0x0080, 0x4689: 0x0080, 0x468a: 0x0080, 0x468b: 0x0080, + 0x468c: 0x0080, 0x468d: 0x0080, 0x468e: 0x0080, 0x468f: 0x0080, 0x4690: 0x0080, 0x4691: 0x0080, + 0x4692: 0x0080, 0x4693: 0x0080, 0x4694: 0x0080, 0x4695: 0x0080, 0x4696: 0x0080, 0x4697: 0x0080, + 0x4698: 0x0080, 0x4699: 0x0080, 0x469a: 0x0080, 0x469b: 0x0080, 0x469c: 0x0080, 0x469d: 0x0080, + 0x469e: 0x0080, 0x469f: 0x0080, 0x46a0: 0x0080, 0x46a1: 0x0080, 0x46a2: 0x0080, 0x46a3: 0x0080, + 0x46a4: 0x0080, 0x46a5: 0x0080, 0x46a6: 0x0080, 0x46a7: 0x0080, 0x46a8: 0x0080, 0x46a9: 0x0080, + 0x46aa: 0x0080, 0x46ab: 0x0080, 0x46ac: 0x0080, 0x46ad: 0x0080, 0x46ae: 0x0080, 0x46af: 0x0080, + 0x46b0: 0x0080, 0x46b1: 0x0080, 0x46b2: 0x0080, 0x46b3: 0x0080, 0x46b4: 0x0080, 0x46b5: 0x0080, + 0x46b6: 0x0080, 0x46b7: 0x0080, 0x46b8: 0x0080, 0x46b9: 0x0080, 0x46ba: 0x0080, 0x46bb: 0x0080, + 0x46bc: 0x0080, 0x46bd: 0x0080, 0x46be: 0x0080, 0x46bf: 0x0080, + // Block 0x11b, offset 0x46c0 + 0x46c0: 0x0080, 0x46c1: 0x0080, 0x46c2: 0x0080, 0x46c3: 0x0080, 0x46c4: 0x0080, 0x46c5: 0x0080, + 0x46c7: 0x0080, 0x46c8: 0x0080, 0x46c9: 0x0080, 0x46ca: 0x0080, + 0x46cd: 0x0080, 0x46ce: 0x0080, 0x46cf: 0x0080, 0x46d0: 0x0080, 0x46d1: 0x0080, + 0x46d2: 0x0080, 0x46d3: 0x0080, 0x46d4: 0x0080, 0x46d6: 0x0080, 0x46d7: 0x0080, + 0x46d8: 0x0080, 0x46d9: 0x0080, 0x46da: 0x0080, 0x46db: 0x0080, 0x46dc: 0x0080, + 0x46de: 0x0080, 0x46df: 0x0080, 0x46e0: 0x0080, 0x46e1: 0x0080, 0x46e2: 0x0080, 0x46e3: 0x0080, + 0x46e4: 0x0080, 0x46e5: 0x0080, 0x46e6: 0x0080, 0x46e7: 0x0080, 0x46e8: 0x0080, 0x46e9: 0x0080, + 0x46ea: 0x0080, 0x46eb: 0x0080, 0x46ec: 0x0080, 0x46ed: 0x0080, 0x46ee: 0x0080, 0x46ef: 0x0080, + 0x46f0: 0x0080, 0x46f1: 0x0080, 0x46f2: 0x0080, 0x46f3: 0x0080, 0x46f4: 0x0080, 0x46f5: 0x0080, + 0x46f6: 0x0080, 0x46f7: 0x0080, 0x46f8: 0x0080, 0x46f9: 0x0080, 0x46fb: 0x0080, + 0x46fc: 0x0080, 0x46fd: 0x0080, 0x46fe: 0x0080, + // Block 0x11c, offset 0x4700 + 0x4700: 0x0080, 0x4701: 0x0080, 0x4702: 0x0080, 0x4703: 0x0080, 0x4704: 0x0080, + 0x4706: 0x0080, 0x470a: 0x0080, 0x470b: 0x0080, + 0x470c: 0x0080, 0x470d: 0x0080, 0x470e: 0x0080, 0x470f: 0x0080, 0x4710: 0x0080, + 0x4712: 0x0080, 0x4713: 0x0080, 0x4714: 0x0080, 0x4715: 0x0080, 0x4716: 0x0080, 0x4717: 0x0080, + 0x4718: 0x0080, 0x4719: 0x0080, 0x471a: 0x0080, 0x471b: 0x0080, 0x471c: 0x0080, 0x471d: 0x0080, + 0x471e: 0x0080, 0x471f: 0x0080, 0x4720: 0x0080, 0x4721: 0x0080, 0x4722: 0x0080, 0x4723: 0x0080, + 0x4724: 0x0080, 0x4725: 0x0080, 0x4726: 0x0080, 0x4727: 0x0080, 0x4728: 0x0080, 0x4729: 0x0080, + 0x472a: 0x0080, 0x472b: 0x0080, 0x472c: 0x0080, 0x472d: 0x0080, 0x472e: 0x0080, 0x472f: 0x0080, + 0x4730: 0x0080, 0x4731: 0x0080, 0x4732: 0x0080, 0x4733: 0x0080, 0x4734: 0x0080, 0x4735: 0x0080, + 0x4736: 0x0080, 0x4737: 0x0080, 0x4738: 0x0080, 0x4739: 0x0080, 0x473a: 0x0080, 0x473b: 0x0080, + 0x473c: 0x0080, 0x473d: 0x0080, 0x473e: 0x0080, 0x473f: 0x0080, + // Block 0x11d, offset 0x4740 + 0x4740: 0x0080, 0x4741: 0x0080, 0x4742: 0x0080, 0x4743: 0x0080, 0x4744: 0x0080, 0x4745: 0x0080, + 0x4746: 0x0080, 0x4747: 0x0080, 0x4748: 0x0080, 0x4749: 0x0080, 0x474a: 0x0080, 0x474b: 0x0080, + 0x474c: 0x0080, 0x474d: 0x0080, 0x474e: 0x0080, 0x474f: 0x0080, 0x4750: 0x0080, 0x4751: 0x0080, + 0x4752: 0x0080, 0x4753: 0x0080, 0x4754: 0x0080, 0x4755: 0x0080, 0x4756: 0x0080, 0x4757: 0x0080, + 0x4758: 0x0080, 0x4759: 0x0080, 0x475a: 0x0080, 0x475b: 0x0080, 0x475c: 0x0080, 0x475d: 0x0080, + 0x475e: 0x0080, 0x475f: 0x0080, 0x4760: 0x0080, 0x4761: 0x0080, 0x4762: 0x0080, 0x4763: 0x0080, + 0x4764: 0x0080, 0x4765: 0x0080, 0x4768: 0x0080, 0x4769: 0x0080, + 0x476a: 0x0080, 0x476b: 0x0080, 0x476c: 0x0080, 0x476d: 0x0080, 0x476e: 0x0080, 0x476f: 0x0080, + 0x4770: 0x0080, 0x4771: 0x0080, 0x4772: 0x0080, 0x4773: 0x0080, 0x4774: 0x0080, 0x4775: 0x0080, + 0x4776: 0x0080, 0x4777: 0x0080, 0x4778: 0x0080, 0x4779: 0x0080, 0x477a: 0x0080, 0x477b: 0x0080, + 0x477c: 0x0080, 0x477d: 0x0080, 0x477e: 0x0080, 0x477f: 0x0080, + // Block 0x11e, offset 0x4780 + 0x4780: 0x0080, 0x4781: 0x0080, 0x4782: 0x0080, 0x4783: 0x0080, 0x4784: 0x0080, 0x4785: 0x0080, + 0x4786: 0x0080, 0x4787: 0x0080, 0x4788: 0x0080, 0x4789: 0x0080, 0x478a: 0x0080, 0x478b: 0x0080, + 0x478e: 0x0080, 0x478f: 0x0080, 0x4790: 0x0080, 0x4791: 0x0080, + 0x4792: 0x0080, 0x4793: 0x0080, 0x4794: 0x0080, 0x4795: 0x0080, 0x4796: 0x0080, 0x4797: 0x0080, + 0x4798: 0x0080, 0x4799: 0x0080, 0x479a: 0x0080, 0x479b: 0x0080, 0x479c: 0x0080, 0x479d: 0x0080, + 0x479e: 0x0080, 0x479f: 0x0080, 0x47a0: 0x0080, 0x47a1: 0x0080, 0x47a2: 0x0080, 0x47a3: 0x0080, + 0x47a4: 0x0080, 0x47a5: 0x0080, 0x47a6: 0x0080, 0x47a7: 0x0080, 0x47a8: 0x0080, 0x47a9: 0x0080, + 0x47aa: 0x0080, 0x47ab: 0x0080, 0x47ac: 0x0080, 0x47ad: 0x0080, 0x47ae: 0x0080, 0x47af: 0x0080, + 0x47b0: 0x0080, 0x47b1: 0x0080, 0x47b2: 0x0080, 0x47b3: 0x0080, 0x47b4: 0x0080, 0x47b5: 0x0080, + 0x47b6: 0x0080, 0x47b7: 0x0080, 0x47b8: 0x0080, 0x47b9: 0x0080, 0x47ba: 0x0080, 0x47bb: 0x0080, + 0x47bc: 0x0080, 0x47bd: 0x0080, 0x47be: 0x0080, 0x47bf: 0x0080, + // Block 0x11f, offset 0x47c0 + 0x47c0: 0x00c3, 0x47c1: 0x00c3, 0x47c2: 0x00c3, 0x47c3: 0x00c3, 0x47c4: 0x00c3, 0x47c5: 0x00c3, + 0x47c6: 0x00c3, 0x47c7: 0x00c3, 0x47c8: 0x00c3, 0x47c9: 0x00c3, 0x47ca: 0x00c3, 0x47cb: 0x00c3, + 0x47cc: 0x00c3, 0x47cd: 0x00c3, 0x47ce: 0x00c3, 0x47cf: 0x00c3, 0x47d0: 0x00c3, 0x47d1: 0x00c3, + 0x47d2: 0x00c3, 0x47d3: 0x00c3, 0x47d4: 0x00c3, 0x47d5: 0x00c3, 0x47d6: 0x00c3, 0x47d7: 0x00c3, + 0x47d8: 0x00c3, 0x47d9: 0x00c3, 0x47da: 0x00c3, 0x47db: 0x00c3, 0x47dc: 0x00c3, 0x47dd: 0x00c3, + 0x47de: 0x00c3, 0x47df: 0x00c3, 0x47e0: 0x00c3, 0x47e1: 0x00c3, 0x47e2: 0x00c3, 0x47e3: 0x00c3, + 0x47e4: 0x00c3, 0x47e5: 0x00c3, 0x47e6: 0x00c3, 0x47e7: 0x00c3, 0x47e8: 0x00c3, 0x47e9: 0x00c3, + 0x47ea: 0x00c3, 0x47eb: 0x00c3, 0x47ec: 0x00c3, 0x47ed: 0x00c3, 0x47ee: 0x00c3, 0x47ef: 0x00c3, + 0x47f0: 0x00c3, 0x47f1: 0x00c3, 0x47f2: 0x00c3, 0x47f3: 0x00c3, 0x47f4: 0x00c3, 0x47f5: 0x00c3, + 0x47f6: 0x00c3, 0x47f7: 0x0080, 0x47f8: 0x0080, 0x47f9: 0x0080, 0x47fa: 0x0080, 0x47fb: 0x00c3, + 0x47fc: 0x00c3, 0x47fd: 0x00c3, 0x47fe: 0x00c3, 0x47ff: 0x00c3, + // Block 0x120, offset 0x4800 + 0x4800: 0x00c3, 0x4801: 0x00c3, 0x4802: 0x00c3, 0x4803: 0x00c3, 0x4804: 0x00c3, 0x4805: 0x00c3, + 0x4806: 0x00c3, 0x4807: 0x00c3, 0x4808: 0x00c3, 0x4809: 0x00c3, 0x480a: 0x00c3, 0x480b: 0x00c3, + 0x480c: 0x00c3, 0x480d: 0x00c3, 0x480e: 0x00c3, 0x480f: 0x00c3, 0x4810: 0x00c3, 0x4811: 0x00c3, + 0x4812: 0x00c3, 0x4813: 0x00c3, 0x4814: 0x00c3, 0x4815: 0x00c3, 0x4816: 0x00c3, 0x4817: 0x00c3, + 0x4818: 0x00c3, 0x4819: 0x00c3, 0x481a: 0x00c3, 0x481b: 0x00c3, 0x481c: 0x00c3, 0x481d: 0x00c3, + 0x481e: 0x00c3, 0x481f: 0x00c3, 0x4820: 0x00c3, 0x4821: 0x00c3, 0x4822: 0x00c3, 0x4823: 0x00c3, + 0x4824: 0x00c3, 0x4825: 0x00c3, 0x4826: 0x00c3, 0x4827: 0x00c3, 0x4828: 0x00c3, 0x4829: 0x00c3, + 0x482a: 0x00c3, 0x482b: 0x00c3, 0x482c: 0x00c3, 0x482d: 0x0080, 0x482e: 0x0080, 0x482f: 0x0080, + 0x4830: 0x0080, 0x4831: 0x0080, 0x4832: 0x0080, 0x4833: 0x0080, 0x4834: 0x0080, 0x4835: 0x00c3, + 0x4836: 0x0080, 0x4837: 0x0080, 0x4838: 0x0080, 0x4839: 0x0080, 0x483a: 0x0080, 0x483b: 0x0080, + 0x483c: 0x0080, 0x483d: 0x0080, 0x483e: 0x0080, 0x483f: 0x0080, + // Block 0x121, offset 0x4840 + 0x4840: 0x0080, 0x4841: 0x0080, 0x4842: 0x0080, 0x4843: 0x0080, 0x4844: 0x00c3, 0x4845: 0x0080, + 0x4846: 0x0080, 0x4847: 0x0080, 0x4848: 0x0080, 0x4849: 0x0080, 0x484a: 0x0080, 0x484b: 0x0080, + 0x485b: 0x00c3, 0x485c: 0x00c3, 0x485d: 0x00c3, + 0x485e: 0x00c3, 0x485f: 0x00c3, 0x4861: 0x00c3, 0x4862: 0x00c3, 0x4863: 0x00c3, + 0x4864: 0x00c3, 0x4865: 0x00c3, 0x4866: 0x00c3, 0x4867: 0x00c3, 0x4868: 0x00c3, 0x4869: 0x00c3, + 0x486a: 0x00c3, 0x486b: 0x00c3, 0x486c: 0x00c3, 0x486d: 0x00c3, 0x486e: 0x00c3, 0x486f: 0x00c3, + // Block 0x122, offset 0x4880 + 0x4880: 0x00c3, 0x4881: 0x00c3, 0x4882: 0x00c3, 0x4883: 0x00c3, 0x4884: 0x00c3, 0x4885: 0x00c3, + 0x4886: 0x00c3, 0x4888: 0x00c3, 0x4889: 0x00c3, 0x488a: 0x00c3, 0x488b: 0x00c3, + 0x488c: 0x00c3, 0x488d: 0x00c3, 0x488e: 0x00c3, 0x488f: 0x00c3, 0x4890: 0x00c3, 0x4891: 0x00c3, + 0x4892: 0x00c3, 0x4893: 0x00c3, 0x4894: 0x00c3, 0x4895: 0x00c3, 0x4896: 0x00c3, 0x4897: 0x00c3, + 0x4898: 0x00c3, 0x489b: 0x00c3, 0x489c: 0x00c3, 0x489d: 0x00c3, + 0x489e: 0x00c3, 0x489f: 0x00c3, 0x48a0: 0x00c3, 0x48a1: 0x00c3, 0x48a3: 0x00c3, + 0x48a4: 0x00c3, 0x48a6: 0x00c3, 0x48a7: 0x00c3, 0x48a8: 0x00c3, 0x48a9: 0x00c3, + 0x48aa: 0x00c3, + // Block 0x123, offset 0x48c0 + 0x48c0: 0x00c0, 0x48c1: 0x00c0, 0x48c2: 0x00c0, 0x48c3: 0x00c0, 0x48c4: 0x00c0, + 0x48c7: 0x0080, 0x48c8: 0x0080, 0x48c9: 0x0080, 0x48ca: 0x0080, 0x48cb: 0x0080, + 0x48cc: 0x0080, 0x48cd: 0x0080, 0x48ce: 0x0080, 0x48cf: 0x0080, 0x48d0: 0x00c3, 0x48d1: 0x00c3, + 0x48d2: 0x00c3, 0x48d3: 0x00c3, 0x48d4: 0x00c3, 0x48d5: 0x00c3, 0x48d6: 0x00c3, + // Block 0x124, offset 0x4900 + 0x4900: 0x00c2, 0x4901: 0x00c2, 0x4902: 0x00c2, 0x4903: 0x00c2, 0x4904: 0x00c2, 0x4905: 0x00c2, + 0x4906: 0x00c2, 0x4907: 0x00c2, 0x4908: 0x00c2, 0x4909: 0x00c2, 0x490a: 0x00c2, 0x490b: 0x00c2, + 0x490c: 0x00c2, 0x490d: 0x00c2, 0x490e: 0x00c2, 0x490f: 0x00c2, 0x4910: 0x00c2, 0x4911: 0x00c2, + 0x4912: 0x00c2, 0x4913: 0x00c2, 0x4914: 0x00c2, 0x4915: 0x00c2, 0x4916: 0x00c2, 0x4917: 0x00c2, + 0x4918: 0x00c2, 0x4919: 0x00c2, 0x491a: 0x00c2, 0x491b: 0x00c2, 0x491c: 0x00c2, 0x491d: 0x00c2, + 0x491e: 0x00c2, 0x491f: 0x00c2, 0x4920: 0x00c2, 0x4921: 0x00c2, 0x4922: 0x00c2, 0x4923: 0x00c2, + 0x4924: 0x00c2, 0x4925: 0x00c2, 0x4926: 0x00c2, 0x4927: 0x00c2, 0x4928: 0x00c2, 0x4929: 0x00c2, + 0x492a: 0x00c2, 0x492b: 0x00c2, 0x492c: 0x00c2, 0x492d: 0x00c2, 0x492e: 0x00c2, 0x492f: 0x00c2, + 0x4930: 0x00c2, 0x4931: 0x00c2, 0x4932: 0x00c2, 0x4933: 0x00c2, 0x4934: 0x00c2, 0x4935: 0x00c2, + 0x4936: 0x00c2, 0x4937: 0x00c2, 0x4938: 0x00c2, 0x4939: 0x00c2, 0x493a: 0x00c2, 0x493b: 0x00c2, + 0x493c: 0x00c2, 0x493d: 0x00c2, 0x493e: 0x00c2, 0x493f: 0x00c2, + // Block 0x125, offset 0x4940 + 0x4940: 0x00c2, 0x4941: 0x00c2, 0x4942: 0x00c2, 0x4943: 0x00c2, 0x4944: 0x00c3, 0x4945: 0x00c3, + 0x4946: 0x00c3, 0x4947: 0x00c3, 0x4948: 0x00c3, 0x4949: 0x00c3, 0x494a: 0x00c3, + 0x4950: 0x00c0, 0x4951: 0x00c0, + 0x4952: 0x00c0, 0x4953: 0x00c0, 0x4954: 0x00c0, 0x4955: 0x00c0, 0x4956: 0x00c0, 0x4957: 0x00c0, + 0x4958: 0x00c0, 0x4959: 0x00c0, + 0x495e: 0x0080, 0x495f: 0x0080, + // Block 0x126, offset 0x4980 + 0x4980: 0x0080, 0x4981: 0x0080, 0x4982: 0x0080, 0x4983: 0x0080, 0x4985: 0x0080, + 0x4986: 0x0080, 0x4987: 0x0080, 0x4988: 0x0080, 0x4989: 0x0080, 0x498a: 0x0080, 0x498b: 0x0080, + 0x498c: 0x0080, 0x498d: 0x0080, 0x498e: 0x0080, 0x498f: 0x0080, 0x4990: 0x0080, 0x4991: 0x0080, + 0x4992: 0x0080, 0x4993: 0x0080, 0x4994: 0x0080, 0x4995: 0x0080, 0x4996: 0x0080, 0x4997: 0x0080, + 0x4998: 0x0080, 0x4999: 0x0080, 0x499a: 0x0080, 0x499b: 0x0080, 0x499c: 0x0080, 0x499d: 0x0080, + 0x499e: 0x0080, 0x499f: 0x0080, 0x49a1: 0x0080, 0x49a2: 0x0080, + 0x49a4: 0x0080, 0x49a7: 0x0080, 0x49a9: 0x0080, + 0x49aa: 0x0080, 0x49ab: 0x0080, 0x49ac: 0x0080, 0x49ad: 0x0080, 0x49ae: 0x0080, 0x49af: 0x0080, + 0x49b0: 0x0080, 0x49b1: 0x0080, 0x49b2: 0x0080, 0x49b4: 0x0080, 0x49b5: 0x0080, + 0x49b6: 0x0080, 0x49b7: 0x0080, 0x49b9: 0x0080, 0x49bb: 0x0080, + // Block 0x127, offset 0x49c0 + 0x49c2: 0x0080, + 0x49c7: 0x0080, 0x49c9: 0x0080, 0x49cb: 0x0080, + 0x49cd: 0x0080, 0x49ce: 0x0080, 0x49cf: 0x0080, 0x49d1: 0x0080, + 0x49d2: 0x0080, 0x49d4: 0x0080, 0x49d7: 0x0080, + 0x49d9: 0x0080, 0x49db: 0x0080, 0x49dd: 0x0080, + 0x49df: 0x0080, 0x49e1: 0x0080, 0x49e2: 0x0080, + 0x49e4: 0x0080, 0x49e7: 0x0080, 0x49e8: 0x0080, 0x49e9: 0x0080, + 0x49ea: 0x0080, 0x49ec: 0x0080, 0x49ed: 0x0080, 0x49ee: 0x0080, 0x49ef: 0x0080, + 0x49f0: 0x0080, 0x49f1: 0x0080, 0x49f2: 0x0080, 0x49f4: 0x0080, 0x49f5: 0x0080, + 0x49f6: 0x0080, 0x49f7: 0x0080, 0x49f9: 0x0080, 0x49fa: 0x0080, 0x49fb: 0x0080, + 0x49fc: 0x0080, 0x49fe: 0x0080, + // Block 0x128, offset 0x4a00 + 0x4a00: 0x0080, 0x4a01: 0x0080, 0x4a02: 0x0080, 0x4a03: 0x0080, 0x4a04: 0x0080, 0x4a05: 0x0080, + 0x4a06: 0x0080, 0x4a07: 0x0080, 0x4a08: 0x0080, 0x4a09: 0x0080, 0x4a0b: 0x0080, + 0x4a0c: 0x0080, 0x4a0d: 0x0080, 0x4a0e: 0x0080, 0x4a0f: 0x0080, 0x4a10: 0x0080, 0x4a11: 0x0080, + 0x4a12: 0x0080, 0x4a13: 0x0080, 0x4a14: 0x0080, 0x4a15: 0x0080, 0x4a16: 0x0080, 0x4a17: 0x0080, + 0x4a18: 0x0080, 0x4a19: 0x0080, 0x4a1a: 0x0080, 0x4a1b: 0x0080, + 0x4a21: 0x0080, 0x4a22: 0x0080, 0x4a23: 0x0080, + 0x4a25: 0x0080, 0x4a26: 0x0080, 0x4a27: 0x0080, 0x4a28: 0x0080, 0x4a29: 0x0080, + 0x4a2b: 0x0080, 0x4a2c: 0x0080, 0x4a2d: 0x0080, 0x4a2e: 0x0080, 0x4a2f: 0x0080, + 0x4a30: 0x0080, 0x4a31: 0x0080, 0x4a32: 0x0080, 0x4a33: 0x0080, 0x4a34: 0x0080, 0x4a35: 0x0080, + 0x4a36: 0x0080, 0x4a37: 0x0080, 0x4a38: 0x0080, 0x4a39: 0x0080, 0x4a3a: 0x0080, 0x4a3b: 0x0080, + // Block 0x129, offset 0x4a40 + 0x4a70: 0x0080, 0x4a71: 0x0080, + // Block 0x12a, offset 0x4a80 + 0x4a80: 0x0080, 0x4a81: 0x0080, 0x4a82: 0x0080, 0x4a83: 0x0080, 0x4a84: 0x0080, 0x4a85: 0x0080, + 0x4a86: 0x0080, 0x4a87: 0x0080, 0x4a88: 0x0080, 0x4a89: 0x0080, 0x4a8a: 0x0080, 0x4a8b: 0x0080, + 0x4a8c: 0x0080, 0x4a8d: 0x0080, 0x4a8e: 0x0080, 0x4a8f: 0x0080, 0x4a90: 0x0080, 0x4a91: 0x0080, + 0x4a92: 0x0080, 0x4a93: 0x0080, 0x4a94: 0x0080, 0x4a95: 0x0080, 0x4a96: 0x0080, 0x4a97: 0x0080, + 0x4a98: 0x0080, 0x4a99: 0x0080, 0x4a9a: 0x0080, 0x4a9b: 0x0080, 0x4a9c: 0x0080, 0x4a9d: 0x0080, + 0x4a9e: 0x0080, 0x4a9f: 0x0080, 0x4aa0: 0x0080, 0x4aa1: 0x0080, 0x4aa2: 0x0080, 0x4aa3: 0x0080, + 0x4aa4: 0x0080, 0x4aa5: 0x0080, 0x4aa6: 0x0080, 0x4aa7: 0x0080, 0x4aa8: 0x0080, 0x4aa9: 0x0080, + 0x4aaa: 0x0080, 0x4aab: 0x0080, + 0x4ab0: 0x0080, 0x4ab1: 0x0080, 0x4ab2: 0x0080, 0x4ab3: 0x0080, 0x4ab4: 0x0080, 0x4ab5: 0x0080, + 0x4ab6: 0x0080, 0x4ab7: 0x0080, 0x4ab8: 0x0080, 0x4ab9: 0x0080, 0x4aba: 0x0080, 0x4abb: 0x0080, + 0x4abc: 0x0080, 0x4abd: 0x0080, 0x4abe: 0x0080, 0x4abf: 0x0080, + // Block 0x12b, offset 0x4ac0 + 0x4ac0: 0x0080, 0x4ac1: 0x0080, 0x4ac2: 0x0080, 0x4ac3: 0x0080, 0x4ac4: 0x0080, 0x4ac5: 0x0080, + 0x4ac6: 0x0080, 0x4ac7: 0x0080, 0x4ac8: 0x0080, 0x4ac9: 0x0080, 0x4aca: 0x0080, 0x4acb: 0x0080, + 0x4acc: 0x0080, 0x4acd: 0x0080, 0x4ace: 0x0080, 0x4acf: 0x0080, 0x4ad0: 0x0080, 0x4ad1: 0x0080, + 0x4ad2: 0x0080, 0x4ad3: 0x0080, + 0x4ae0: 0x0080, 0x4ae1: 0x0080, 0x4ae2: 0x0080, 0x4ae3: 0x0080, + 0x4ae4: 0x0080, 0x4ae5: 0x0080, 0x4ae6: 0x0080, 0x4ae7: 0x0080, 0x4ae8: 0x0080, 0x4ae9: 0x0080, + 0x4aea: 0x0080, 0x4aeb: 0x0080, 0x4aec: 0x0080, 0x4aed: 0x0080, 0x4aee: 0x0080, + 0x4af1: 0x0080, 0x4af2: 0x0080, 0x4af3: 0x0080, 0x4af4: 0x0080, 0x4af5: 0x0080, + 0x4af6: 0x0080, 0x4af7: 0x0080, 0x4af8: 0x0080, 0x4af9: 0x0080, 0x4afa: 0x0080, 0x4afb: 0x0080, + 0x4afc: 0x0080, 0x4afd: 0x0080, 0x4afe: 0x0080, 0x4aff: 0x0080, + // Block 0x12c, offset 0x4b00 + 0x4b01: 0x0080, 0x4b02: 0x0080, 0x4b03: 0x0080, 0x4b04: 0x0080, 0x4b05: 0x0080, + 0x4b06: 0x0080, 0x4b07: 0x0080, 0x4b08: 0x0080, 0x4b09: 0x0080, 0x4b0a: 0x0080, 0x4b0b: 0x0080, + 0x4b0c: 0x0080, 0x4b0d: 0x0080, 0x4b0e: 0x0080, 0x4b0f: 0x0080, 0x4b11: 0x0080, + 0x4b12: 0x0080, 0x4b13: 0x0080, 0x4b14: 0x0080, 0x4b15: 0x0080, 0x4b16: 0x0080, 0x4b17: 0x0080, + 0x4b18: 0x0080, 0x4b19: 0x0080, 0x4b1a: 0x0080, 0x4b1b: 0x0080, 0x4b1c: 0x0080, 0x4b1d: 0x0080, + 0x4b1e: 0x0080, 0x4b1f: 0x0080, 0x4b20: 0x0080, 0x4b21: 0x0080, 0x4b22: 0x0080, 0x4b23: 0x0080, + 0x4b24: 0x0080, 0x4b25: 0x0080, 0x4b26: 0x0080, 0x4b27: 0x0080, 0x4b28: 0x0080, 0x4b29: 0x0080, + 0x4b2a: 0x0080, 0x4b2b: 0x0080, 0x4b2c: 0x0080, 0x4b2d: 0x0080, 0x4b2e: 0x0080, 0x4b2f: 0x0080, + 0x4b30: 0x0080, 0x4b31: 0x0080, 0x4b32: 0x0080, 0x4b33: 0x0080, 0x4b34: 0x0080, 0x4b35: 0x0080, + // Block 0x12d, offset 0x4b40 + 0x4b40: 0x0080, 0x4b41: 0x0080, 0x4b42: 0x0080, 0x4b43: 0x0080, 0x4b44: 0x0080, 0x4b45: 0x0080, + 0x4b46: 0x0080, 0x4b47: 0x0080, 0x4b48: 0x0080, 0x4b49: 0x0080, 0x4b4a: 0x0080, 0x4b4b: 0x0080, + 0x4b4c: 0x0080, 0x4b50: 0x0080, 0x4b51: 0x0080, + 0x4b52: 0x0080, 0x4b53: 0x0080, 0x4b54: 0x0080, 0x4b55: 0x0080, 0x4b56: 0x0080, 0x4b57: 0x0080, + 0x4b58: 0x0080, 0x4b59: 0x0080, 0x4b5a: 0x0080, 0x4b5b: 0x0080, 0x4b5c: 0x0080, 0x4b5d: 0x0080, + 0x4b5e: 0x0080, 0x4b5f: 0x0080, 0x4b60: 0x0080, 0x4b61: 0x0080, 0x4b62: 0x0080, 0x4b63: 0x0080, + 0x4b64: 0x0080, 0x4b65: 0x0080, 0x4b66: 0x0080, 0x4b67: 0x0080, 0x4b68: 0x0080, 0x4b69: 0x0080, + 0x4b6a: 0x0080, 0x4b6b: 0x0080, 0x4b6c: 0x0080, 0x4b6d: 0x0080, 0x4b6e: 0x0080, + 0x4b70: 0x0080, 0x4b71: 0x0080, 0x4b72: 0x0080, 0x4b73: 0x0080, 0x4b74: 0x0080, 0x4b75: 0x0080, + 0x4b76: 0x0080, 0x4b77: 0x0080, 0x4b78: 0x0080, 0x4b79: 0x0080, 0x4b7a: 0x0080, 0x4b7b: 0x0080, + 0x4b7c: 0x0080, 0x4b7d: 0x0080, 0x4b7e: 0x0080, 0x4b7f: 0x0080, + // Block 0x12e, offset 0x4b80 + 0x4b80: 0x0080, 0x4b81: 0x0080, 0x4b82: 0x0080, 0x4b83: 0x0080, 0x4b84: 0x0080, 0x4b85: 0x0080, + 0x4b86: 0x0080, 0x4b87: 0x0080, 0x4b88: 0x0080, 0x4b89: 0x0080, 0x4b8a: 0x0080, 0x4b8b: 0x0080, + 0x4b8c: 0x0080, 0x4b8d: 0x0080, 0x4b8e: 0x0080, 0x4b8f: 0x0080, 0x4b90: 0x0080, 0x4b91: 0x0080, + 0x4b92: 0x0080, 0x4b93: 0x0080, 0x4b94: 0x0080, 0x4b95: 0x0080, 0x4b96: 0x0080, 0x4b97: 0x0080, + 0x4b98: 0x0080, 0x4b99: 0x0080, 0x4b9a: 0x0080, 0x4b9b: 0x0080, 0x4b9c: 0x0080, 0x4b9d: 0x0080, + 0x4b9e: 0x0080, 0x4b9f: 0x0080, 0x4ba0: 0x0080, 0x4ba1: 0x0080, 0x4ba2: 0x0080, 0x4ba3: 0x0080, + 0x4ba4: 0x0080, 0x4ba5: 0x0080, 0x4ba6: 0x0080, 0x4ba7: 0x0080, 0x4ba8: 0x0080, 0x4ba9: 0x0080, + 0x4baa: 0x0080, 0x4bab: 0x0080, 0x4bac: 0x0080, + // Block 0x12f, offset 0x4bc0 + 0x4be6: 0x0080, 0x4be7: 0x0080, 0x4be8: 0x0080, 0x4be9: 0x0080, + 0x4bea: 0x0080, 0x4beb: 0x0080, 0x4bec: 0x0080, 0x4bed: 0x0080, 0x4bee: 0x0080, 0x4bef: 0x0080, + 0x4bf0: 0x0080, 0x4bf1: 0x0080, 0x4bf2: 0x0080, 0x4bf3: 0x0080, 0x4bf4: 0x0080, 0x4bf5: 0x0080, + 0x4bf6: 0x0080, 0x4bf7: 0x0080, 0x4bf8: 0x0080, 0x4bf9: 0x0080, 0x4bfa: 0x0080, 0x4bfb: 0x0080, + 0x4bfc: 0x0080, 0x4bfd: 0x0080, 0x4bfe: 0x0080, 0x4bff: 0x0080, + // Block 0x130, offset 0x4c00 + 0x4c00: 0x008c, 0x4c01: 0x0080, 0x4c02: 0x0080, + 0x4c10: 0x0080, 0x4c11: 0x0080, + 0x4c12: 0x0080, 0x4c13: 0x0080, 0x4c14: 0x0080, 0x4c15: 0x0080, 0x4c16: 0x0080, 0x4c17: 0x0080, + 0x4c18: 0x0080, 0x4c19: 0x0080, 0x4c1a: 0x0080, 0x4c1b: 0x0080, 0x4c1c: 0x0080, 0x4c1d: 0x0080, + 0x4c1e: 0x0080, 0x4c1f: 0x0080, 0x4c20: 0x0080, 0x4c21: 0x0080, 0x4c22: 0x0080, 0x4c23: 0x0080, + 0x4c24: 0x0080, 0x4c25: 0x0080, 0x4c26: 0x0080, 0x4c27: 0x0080, 0x4c28: 0x0080, 0x4c29: 0x0080, + 0x4c2a: 0x0080, 0x4c2b: 0x0080, 0x4c2c: 0x0080, 0x4c2d: 0x0080, 0x4c2e: 0x0080, 0x4c2f: 0x0080, + 0x4c30: 0x0080, 0x4c31: 0x0080, 0x4c32: 0x0080, 0x4c33: 0x0080, 0x4c34: 0x0080, 0x4c35: 0x0080, + 0x4c36: 0x0080, 0x4c37: 0x0080, 0x4c38: 0x0080, 0x4c39: 0x0080, 0x4c3a: 0x0080, 0x4c3b: 0x0080, + // Block 0x131, offset 0x4c40 + 0x4c40: 0x0080, 0x4c41: 0x0080, 0x4c42: 0x0080, 0x4c43: 0x0080, 0x4c44: 0x0080, 0x4c45: 0x0080, + 0x4c46: 0x0080, 0x4c47: 0x0080, 0x4c48: 0x0080, + 0x4c50: 0x0080, 0x4c51: 0x0080, + // Block 0x132, offset 0x4c80 + 0x4c80: 0x0080, 0x4c81: 0x0080, 0x4c82: 0x0080, 0x4c83: 0x0080, 0x4c84: 0x0080, 0x4c85: 0x0080, + 0x4c86: 0x0080, 0x4c87: 0x0080, 0x4c88: 0x0080, 0x4c89: 0x0080, 0x4c8a: 0x0080, 0x4c8b: 0x0080, + 0x4c8c: 0x0080, 0x4c8d: 0x0080, 0x4c8e: 0x0080, 0x4c8f: 0x0080, 0x4c90: 0x0080, 0x4c91: 0x0080, + 0x4c92: 0x0080, + 0x4ca0: 0x0080, 0x4ca1: 0x0080, 0x4ca2: 0x0080, 0x4ca3: 0x0080, + 0x4ca4: 0x0080, 0x4ca5: 0x0080, 0x4ca6: 0x0080, 0x4ca7: 0x0080, 0x4ca8: 0x0080, 0x4ca9: 0x0080, + 0x4caa: 0x0080, 0x4cab: 0x0080, 0x4cac: 0x0080, + 0x4cb0: 0x0080, 0x4cb1: 0x0080, 0x4cb2: 0x0080, 0x4cb3: 0x0080, 0x4cb4: 0x0080, 0x4cb5: 0x0080, + 0x4cb6: 0x0080, + // Block 0x133, offset 0x4cc0 + 0x4cc0: 0x0080, 0x4cc1: 0x0080, 0x4cc2: 0x0080, 0x4cc3: 0x0080, 0x4cc4: 0x0080, 0x4cc5: 0x0080, + 0x4cc6: 0x0080, 0x4cc7: 0x0080, 0x4cc8: 0x0080, 0x4cc9: 0x0080, 0x4cca: 0x0080, 0x4ccb: 0x0080, + 0x4ccc: 0x0080, 0x4ccd: 0x0080, 0x4cce: 0x0080, 0x4ccf: 0x0080, 0x4cd0: 0x0080, 0x4cd1: 0x0080, + 0x4cd2: 0x0080, 0x4cd3: 0x0080, 0x4cd4: 0x0080, 0x4cd5: 0x0080, 0x4cd6: 0x0080, 0x4cd7: 0x0080, + 0x4cd8: 0x0080, 0x4cd9: 0x0080, 0x4cda: 0x0080, 0x4cdb: 0x0080, 0x4cdc: 0x0080, 0x4cdd: 0x0080, + 0x4cde: 0x0080, 0x4cdf: 0x0080, 0x4ce0: 0x0080, 0x4ce1: 0x0080, 0x4ce2: 0x0080, 0x4ce3: 0x0080, + 0x4ce4: 0x0080, 0x4ce5: 0x0080, 0x4ce6: 0x0080, 0x4ce7: 0x0080, 0x4ce8: 0x0080, 0x4ce9: 0x0080, + 0x4cea: 0x0080, 0x4ceb: 0x0080, 0x4cec: 0x0080, 0x4ced: 0x0080, 0x4cee: 0x0080, 0x4cef: 0x0080, + 0x4cf0: 0x0080, 0x4cf1: 0x0080, 0x4cf2: 0x0080, 0x4cf3: 0x0080, + // Block 0x134, offset 0x4d00 + 0x4d00: 0x0080, 0x4d01: 0x0080, 0x4d02: 0x0080, 0x4d03: 0x0080, 0x4d04: 0x0080, 0x4d05: 0x0080, + 0x4d06: 0x0080, 0x4d07: 0x0080, 0x4d08: 0x0080, 0x4d09: 0x0080, 0x4d0a: 0x0080, 0x4d0b: 0x0080, + 0x4d0c: 0x0080, 0x4d0d: 0x0080, 0x4d0e: 0x0080, 0x4d0f: 0x0080, 0x4d10: 0x0080, 0x4d11: 0x0080, + 0x4d12: 0x0080, 0x4d13: 0x0080, 0x4d14: 0x0080, + // Block 0x135, offset 0x4d40 + 0x4d40: 0x0080, 0x4d41: 0x0080, 0x4d42: 0x0080, 0x4d43: 0x0080, 0x4d44: 0x0080, 0x4d45: 0x0080, + 0x4d46: 0x0080, 0x4d47: 0x0080, 0x4d48: 0x0080, 0x4d49: 0x0080, 0x4d4a: 0x0080, 0x4d4b: 0x0080, + 0x4d50: 0x0080, 0x4d51: 0x0080, + 0x4d52: 0x0080, 0x4d53: 0x0080, 0x4d54: 0x0080, 0x4d55: 0x0080, 0x4d56: 0x0080, 0x4d57: 0x0080, + 0x4d58: 0x0080, 0x4d59: 0x0080, 0x4d5a: 0x0080, 0x4d5b: 0x0080, 0x4d5c: 0x0080, 0x4d5d: 0x0080, + 0x4d5e: 0x0080, 0x4d5f: 0x0080, 0x4d60: 0x0080, 0x4d61: 0x0080, 0x4d62: 0x0080, 0x4d63: 0x0080, + 0x4d64: 0x0080, 0x4d65: 0x0080, 0x4d66: 0x0080, 0x4d67: 0x0080, 0x4d68: 0x0080, 0x4d69: 0x0080, + 0x4d6a: 0x0080, 0x4d6b: 0x0080, 0x4d6c: 0x0080, 0x4d6d: 0x0080, 0x4d6e: 0x0080, 0x4d6f: 0x0080, + 0x4d70: 0x0080, 0x4d71: 0x0080, 0x4d72: 0x0080, 0x4d73: 0x0080, 0x4d74: 0x0080, 0x4d75: 0x0080, + 0x4d76: 0x0080, 0x4d77: 0x0080, 0x4d78: 0x0080, 0x4d79: 0x0080, 0x4d7a: 0x0080, 0x4d7b: 0x0080, + 0x4d7c: 0x0080, 0x4d7d: 0x0080, 0x4d7e: 0x0080, 0x4d7f: 0x0080, + // Block 0x136, offset 0x4d80 + 0x4d80: 0x0080, 0x4d81: 0x0080, 0x4d82: 0x0080, 0x4d83: 0x0080, 0x4d84: 0x0080, 0x4d85: 0x0080, + 0x4d86: 0x0080, 0x4d87: 0x0080, + 0x4d90: 0x0080, 0x4d91: 0x0080, + 0x4d92: 0x0080, 0x4d93: 0x0080, 0x4d94: 0x0080, 0x4d95: 0x0080, 0x4d96: 0x0080, 0x4d97: 0x0080, + 0x4d98: 0x0080, 0x4d99: 0x0080, + 0x4da0: 0x0080, 0x4da1: 0x0080, 0x4da2: 0x0080, 0x4da3: 0x0080, + 0x4da4: 0x0080, 0x4da5: 0x0080, 0x4da6: 0x0080, 0x4da7: 0x0080, 0x4da8: 0x0080, 0x4da9: 0x0080, + 0x4daa: 0x0080, 0x4dab: 0x0080, 0x4dac: 0x0080, 0x4dad: 0x0080, 0x4dae: 0x0080, 0x4daf: 0x0080, + 0x4db0: 0x0080, 0x4db1: 0x0080, 0x4db2: 0x0080, 0x4db3: 0x0080, 0x4db4: 0x0080, 0x4db5: 0x0080, + 0x4db6: 0x0080, 0x4db7: 0x0080, 0x4db8: 0x0080, 0x4db9: 0x0080, 0x4dba: 0x0080, 0x4dbb: 0x0080, + 0x4dbc: 0x0080, 0x4dbd: 0x0080, 0x4dbe: 0x0080, 0x4dbf: 0x0080, + // Block 0x137, offset 0x4dc0 + 0x4dc0: 0x0080, 0x4dc1: 0x0080, 0x4dc2: 0x0080, 0x4dc3: 0x0080, 0x4dc4: 0x0080, 0x4dc5: 0x0080, + 0x4dc6: 0x0080, 0x4dc7: 0x0080, + 0x4dd0: 0x0080, 0x4dd1: 0x0080, + 0x4dd2: 0x0080, 0x4dd3: 0x0080, 0x4dd4: 0x0080, 0x4dd5: 0x0080, 0x4dd6: 0x0080, 0x4dd7: 0x0080, + 0x4dd8: 0x0080, 0x4dd9: 0x0080, 0x4dda: 0x0080, 0x4ddb: 0x0080, 0x4ddc: 0x0080, 0x4ddd: 0x0080, + 0x4dde: 0x0080, 0x4ddf: 0x0080, 0x4de0: 0x0080, 0x4de1: 0x0080, 0x4de2: 0x0080, 0x4de3: 0x0080, + 0x4de4: 0x0080, 0x4de5: 0x0080, 0x4de6: 0x0080, 0x4de7: 0x0080, 0x4de8: 0x0080, 0x4de9: 0x0080, + 0x4dea: 0x0080, 0x4deb: 0x0080, 0x4dec: 0x0080, 0x4ded: 0x0080, + // Block 0x138, offset 0x4e00 + 0x4e10: 0x0080, 0x4e11: 0x0080, + 0x4e12: 0x0080, 0x4e13: 0x0080, 0x4e14: 0x0080, 0x4e15: 0x0080, 0x4e16: 0x0080, 0x4e17: 0x0080, + 0x4e18: 0x0080, 0x4e19: 0x0080, 0x4e1a: 0x0080, 0x4e1b: 0x0080, 0x4e1c: 0x0080, 0x4e1d: 0x0080, + 0x4e1e: 0x0080, 0x4e20: 0x0080, 0x4e21: 0x0080, 0x4e22: 0x0080, 0x4e23: 0x0080, + 0x4e24: 0x0080, 0x4e25: 0x0080, 0x4e26: 0x0080, 0x4e27: 0x0080, + 0x4e30: 0x0080, 0x4e33: 0x0080, 0x4e34: 0x0080, 0x4e35: 0x0080, + 0x4e36: 0x0080, 0x4e37: 0x0080, 0x4e38: 0x0080, 0x4e39: 0x0080, 0x4e3a: 0x0080, 0x4e3b: 0x0080, + 0x4e3c: 0x0080, 0x4e3d: 0x0080, 0x4e3e: 0x0080, + // Block 0x139, offset 0x4e40 + 0x4e40: 0x0080, 0x4e41: 0x0080, 0x4e42: 0x0080, 0x4e43: 0x0080, 0x4e44: 0x0080, 0x4e45: 0x0080, + 0x4e46: 0x0080, 0x4e47: 0x0080, 0x4e48: 0x0080, 0x4e49: 0x0080, 0x4e4a: 0x0080, 0x4e4b: 0x0080, + 0x4e50: 0x0080, 0x4e51: 0x0080, + 0x4e52: 0x0080, 0x4e53: 0x0080, 0x4e54: 0x0080, 0x4e55: 0x0080, 0x4e56: 0x0080, 0x4e57: 0x0080, + 0x4e58: 0x0080, 0x4e59: 0x0080, 0x4e5a: 0x0080, 0x4e5b: 0x0080, 0x4e5c: 0x0080, 0x4e5d: 0x0080, + 0x4e5e: 0x0080, + // Block 0x13a, offset 0x4e80 + 0x4e80: 0x0080, 0x4e81: 0x0080, 0x4e82: 0x0080, 0x4e83: 0x0080, 0x4e84: 0x0080, 0x4e85: 0x0080, + 0x4e86: 0x0080, 0x4e87: 0x0080, 0x4e88: 0x0080, 0x4e89: 0x0080, 0x4e8a: 0x0080, 0x4e8b: 0x0080, + 0x4e8c: 0x0080, 0x4e8d: 0x0080, 0x4e8e: 0x0080, 0x4e8f: 0x0080, 0x4e90: 0x0080, 0x4e91: 0x0080, + // Block 0x13b, offset 0x4ec0 + 0x4ec0: 0x0080, + // Block 0x13c, offset 0x4f00 + 0x4f00: 0x00cc, 0x4f01: 0x00cc, 0x4f02: 0x00cc, 0x4f03: 0x00cc, 0x4f04: 0x00cc, 0x4f05: 0x00cc, + 0x4f06: 0x00cc, 0x4f07: 0x00cc, 0x4f08: 0x00cc, 0x4f09: 0x00cc, 0x4f0a: 0x00cc, 0x4f0b: 0x00cc, + 0x4f0c: 0x00cc, 0x4f0d: 0x00cc, 0x4f0e: 0x00cc, 0x4f0f: 0x00cc, 0x4f10: 0x00cc, 0x4f11: 0x00cc, + 0x4f12: 0x00cc, 0x4f13: 0x00cc, 0x4f14: 0x00cc, 0x4f15: 0x00cc, 0x4f16: 0x00cc, + // Block 0x13d, offset 0x4f40 + 0x4f40: 0x00cc, 0x4f41: 0x00cc, 0x4f42: 0x00cc, 0x4f43: 0x00cc, 0x4f44: 0x00cc, 0x4f45: 0x00cc, + 0x4f46: 0x00cc, 0x4f47: 0x00cc, 0x4f48: 0x00cc, 0x4f49: 0x00cc, 0x4f4a: 0x00cc, 0x4f4b: 0x00cc, + 0x4f4c: 0x00cc, 0x4f4d: 0x00cc, 0x4f4e: 0x00cc, 0x4f4f: 0x00cc, 0x4f50: 0x00cc, 0x4f51: 0x00cc, + 0x4f52: 0x00cc, 0x4f53: 0x00cc, 0x4f54: 0x00cc, 0x4f55: 0x00cc, 0x4f56: 0x00cc, 0x4f57: 0x00cc, + 0x4f58: 0x00cc, 0x4f59: 0x00cc, 0x4f5a: 0x00cc, 0x4f5b: 0x00cc, 0x4f5c: 0x00cc, 0x4f5d: 0x00cc, + 0x4f5e: 0x00cc, 0x4f5f: 0x00cc, 0x4f60: 0x00cc, 0x4f61: 0x00cc, 0x4f62: 0x00cc, 0x4f63: 0x00cc, + 0x4f64: 0x00cc, 0x4f65: 0x00cc, 0x4f66: 0x00cc, 0x4f67: 0x00cc, 0x4f68: 0x00cc, 0x4f69: 0x00cc, + 0x4f6a: 0x00cc, 0x4f6b: 0x00cc, 0x4f6c: 0x00cc, 0x4f6d: 0x00cc, 0x4f6e: 0x00cc, 0x4f6f: 0x00cc, + 0x4f70: 0x00cc, 0x4f71: 0x00cc, 0x4f72: 0x00cc, 0x4f73: 0x00cc, 0x4f74: 0x00cc, + // Block 0x13e, offset 0x4f80 + 0x4f80: 0x00cc, 0x4f81: 0x00cc, 0x4f82: 0x00cc, 0x4f83: 0x00cc, 0x4f84: 0x00cc, 0x4f85: 0x00cc, + 0x4f86: 0x00cc, 0x4f87: 0x00cc, 0x4f88: 0x00cc, 0x4f89: 0x00cc, 0x4f8a: 0x00cc, 0x4f8b: 0x00cc, + 0x4f8c: 0x00cc, 0x4f8d: 0x00cc, 0x4f8e: 0x00cc, 0x4f8f: 0x00cc, 0x4f90: 0x00cc, 0x4f91: 0x00cc, + 0x4f92: 0x00cc, 0x4f93: 0x00cc, 0x4f94: 0x00cc, 0x4f95: 0x00cc, 0x4f96: 0x00cc, 0x4f97: 0x00cc, + 0x4f98: 0x00cc, 0x4f99: 0x00cc, 0x4f9a: 0x00cc, 0x4f9b: 0x00cc, 0x4f9c: 0x00cc, 0x4f9d: 0x00cc, + 0x4fa0: 0x00cc, 0x4fa1: 0x00cc, 0x4fa2: 0x00cc, 0x4fa3: 0x00cc, + 0x4fa4: 0x00cc, 0x4fa5: 0x00cc, 0x4fa6: 0x00cc, 0x4fa7: 0x00cc, 0x4fa8: 0x00cc, 0x4fa9: 0x00cc, + 0x4faa: 0x00cc, 0x4fab: 0x00cc, 0x4fac: 0x00cc, 0x4fad: 0x00cc, 0x4fae: 0x00cc, 0x4faf: 0x00cc, + 0x4fb0: 0x00cc, 0x4fb1: 0x00cc, 0x4fb2: 0x00cc, 0x4fb3: 0x00cc, 0x4fb4: 0x00cc, 0x4fb5: 0x00cc, + 0x4fb6: 0x00cc, 0x4fb7: 0x00cc, 0x4fb8: 0x00cc, 0x4fb9: 0x00cc, 0x4fba: 0x00cc, 0x4fbb: 0x00cc, + 0x4fbc: 0x00cc, 0x4fbd: 0x00cc, 0x4fbe: 0x00cc, 0x4fbf: 0x00cc, + // Block 0x13f, offset 0x4fc0 + 0x4fc0: 0x00cc, 0x4fc1: 0x00cc, 0x4fc2: 0x00cc, 0x4fc3: 0x00cc, 0x4fc4: 0x00cc, 0x4fc5: 0x00cc, + 0x4fc6: 0x00cc, 0x4fc7: 0x00cc, 0x4fc8: 0x00cc, 0x4fc9: 0x00cc, 0x4fca: 0x00cc, 0x4fcb: 0x00cc, + 0x4fcc: 0x00cc, 0x4fcd: 0x00cc, 0x4fce: 0x00cc, 0x4fcf: 0x00cc, 0x4fd0: 0x00cc, 0x4fd1: 0x00cc, + 0x4fd2: 0x00cc, 0x4fd3: 0x00cc, 0x4fd4: 0x00cc, 0x4fd5: 0x00cc, 0x4fd6: 0x00cc, 0x4fd7: 0x00cc, + 0x4fd8: 0x00cc, 0x4fd9: 0x00cc, 0x4fda: 0x00cc, 0x4fdb: 0x00cc, 0x4fdc: 0x00cc, 0x4fdd: 0x00cc, + 0x4fde: 0x00cc, 0x4fdf: 0x00cc, 0x4fe0: 0x00cc, 0x4fe1: 0x00cc, + // Block 0x140, offset 0x5000 + 0x5000: 0x008c, 0x5001: 0x008c, 0x5002: 0x008c, 0x5003: 0x008c, 0x5004: 0x008c, 0x5005: 0x008c, + 0x5006: 0x008c, 0x5007: 0x008c, 0x5008: 0x008c, 0x5009: 0x008c, 0x500a: 0x008c, 0x500b: 0x008c, + 0x500c: 0x008c, 0x500d: 0x008c, 0x500e: 0x008c, 0x500f: 0x008c, 0x5010: 0x008c, 0x5011: 0x008c, + 0x5012: 0x008c, 0x5013: 0x008c, 0x5014: 0x008c, 0x5015: 0x008c, 0x5016: 0x008c, 0x5017: 0x008c, + 0x5018: 0x008c, 0x5019: 0x008c, 0x501a: 0x008c, 0x501b: 0x008c, 0x501c: 0x008c, 0x501d: 0x008c, + // Block 0x141, offset 0x5040 + 0x5041: 0x0040, + 0x5060: 0x0040, 0x5061: 0x0040, 0x5062: 0x0040, 0x5063: 0x0040, + 0x5064: 0x0040, 0x5065: 0x0040, 0x5066: 0x0040, 0x5067: 0x0040, 0x5068: 0x0040, 0x5069: 0x0040, + 0x506a: 0x0040, 0x506b: 0x0040, 0x506c: 0x0040, 0x506d: 0x0040, 0x506e: 0x0040, 0x506f: 0x0040, + 0x5070: 0x0040, 0x5071: 0x0040, 0x5072: 0x0040, 0x5073: 0x0040, 0x5074: 0x0040, 0x5075: 0x0040, + 0x5076: 0x0040, 0x5077: 0x0040, 0x5078: 0x0040, 0x5079: 0x0040, 0x507a: 0x0040, 0x507b: 0x0040, + 0x507c: 0x0040, 0x507d: 0x0040, 0x507e: 0x0040, 0x507f: 0x0040, + // Block 0x142, offset 0x5080 + 0x5080: 0x0040, 0x5081: 0x0040, 0x5082: 0x0040, 0x5083: 0x0040, 0x5084: 0x0040, 0x5085: 0x0040, + 0x5086: 0x0040, 0x5087: 0x0040, 0x5088: 0x0040, 0x5089: 0x0040, 0x508a: 0x0040, 0x508b: 0x0040, + 0x508c: 0x0040, 0x508d: 0x0040, 0x508e: 0x0040, 0x508f: 0x0040, 0x5090: 0x0040, 0x5091: 0x0040, + 0x5092: 0x0040, 0x5093: 0x0040, 0x5094: 0x0040, 0x5095: 0x0040, 0x5096: 0x0040, 0x5097: 0x0040, + 0x5098: 0x0040, 0x5099: 0x0040, 0x509a: 0x0040, 0x509b: 0x0040, 0x509c: 0x0040, 0x509d: 0x0040, + 0x509e: 0x0040, 0x509f: 0x0040, 0x50a0: 0x0040, 0x50a1: 0x0040, 0x50a2: 0x0040, 0x50a3: 0x0040, + 0x50a4: 0x0040, 0x50a5: 0x0040, 0x50a6: 0x0040, 0x50a7: 0x0040, 0x50a8: 0x0040, 0x50a9: 0x0040, + 0x50aa: 0x0040, 0x50ab: 0x0040, 0x50ac: 0x0040, 0x50ad: 0x0040, 0x50ae: 0x0040, 0x50af: 0x0040, + // Block 0x143, offset 0x50c0 + 0x50c0: 0x0040, 0x50c1: 0x0040, 0x50c2: 0x0040, 0x50c3: 0x0040, 0x50c4: 0x0040, 0x50c5: 0x0040, + 0x50c6: 0x0040, 0x50c7: 0x0040, 0x50c8: 0x0040, 0x50c9: 0x0040, 0x50ca: 0x0040, 0x50cb: 0x0040, + 0x50cc: 0x0040, 0x50cd: 0x0040, 0x50ce: 0x0040, 0x50cf: 0x0040, 0x50d0: 0x0040, 0x50d1: 0x0040, + 0x50d2: 0x0040, 0x50d3: 0x0040, 0x50d4: 0x0040, 0x50d5: 0x0040, 0x50d6: 0x0040, 0x50d7: 0x0040, + 0x50d8: 0x0040, 0x50d9: 0x0040, 0x50da: 0x0040, 0x50db: 0x0040, 0x50dc: 0x0040, 0x50dd: 0x0040, + 0x50de: 0x0040, 0x50df: 0x0040, 0x50e0: 0x0040, 0x50e1: 0x0040, 0x50e2: 0x0040, 0x50e3: 0x0040, + 0x50e4: 0x0040, 0x50e5: 0x0040, 0x50e6: 0x0040, 0x50e7: 0x0040, 0x50e8: 0x0040, 0x50e9: 0x0040, + 0x50ea: 0x0040, 0x50eb: 0x0040, 0x50ec: 0x0040, 0x50ed: 0x0040, 0x50ee: 0x0040, 0x50ef: 0x0040, + 0x50f0: 0x0040, 0x50f1: 0x0040, 0x50f2: 0x0040, 0x50f3: 0x0040, 0x50f4: 0x0040, 0x50f5: 0x0040, + 0x50f6: 0x0040, 0x50f7: 0x0040, 0x50f8: 0x0040, 0x50f9: 0x0040, 0x50fa: 0x0040, 0x50fb: 0x0040, + 0x50fc: 0x0040, 0x50fd: 0x0040, +} + +// derivedPropertiesIndex: 36 blocks, 2304 entries, 4608 bytes +// Block 0 is the zero block. +var derivedPropertiesIndex = [2304]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc6: 0x05, 0xc7: 0x06, + 0xc8: 0x05, 0xc9: 0x05, 0xca: 0x07, 0xcb: 0x08, 0xcc: 0x09, 0xcd: 0x0a, 0xce: 0x0b, 0xcf: 0x0c, + 0xd0: 0x05, 0xd1: 0x05, 0xd2: 0x0d, 0xd3: 0x05, 0xd4: 0x0e, 0xd5: 0x0f, 0xd6: 0x10, 0xd7: 0x11, + 0xd8: 0x12, 0xd9: 0x13, 0xda: 0x14, 0xdb: 0x15, 0xdc: 0x16, 0xdd: 0x17, 0xde: 0x18, 0xdf: 0x19, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x0a, 0xec: 0x0a, 0xed: 0x0b, 0xee: 0x0c, 0xef: 0x0d, + 0xf0: 0x1d, 0xf3: 0x20, 0xf4: 0x21, + // Block 0x4, offset 0x100 + 0x120: 0x1a, 0x121: 0x1b, 0x122: 0x1c, 0x123: 0x1d, 0x124: 0x1e, 0x125: 0x1f, 0x126: 0x20, 0x127: 0x21, + 0x128: 0x22, 0x129: 0x23, 0x12a: 0x24, 0x12b: 0x25, 0x12c: 0x26, 0x12d: 0x27, 0x12e: 0x28, 0x12f: 0x29, + 0x130: 0x2a, 0x131: 0x2b, 0x132: 0x2c, 0x133: 0x2d, 0x134: 0x2e, 0x135: 0x2f, 0x136: 0x30, 0x137: 0x31, + 0x138: 0x32, 0x139: 0x33, 0x13a: 0x34, 0x13b: 0x35, 0x13c: 0x36, 0x13d: 0x37, 0x13e: 0x38, 0x13f: 0x39, + // Block 0x5, offset 0x140 + 0x140: 0x3a, 0x141: 0x3b, 0x142: 0x3c, 0x143: 0x3d, 0x144: 0x3e, 0x145: 0x3e, 0x146: 0x3e, 0x147: 0x3e, + 0x148: 0x05, 0x149: 0x3f, 0x14a: 0x40, 0x14b: 0x41, 0x14c: 0x42, 0x14d: 0x43, 0x14e: 0x44, 0x14f: 0x45, + 0x150: 0x46, 0x151: 0x05, 0x152: 0x05, 0x153: 0x05, 0x154: 0x05, 0x155: 0x05, 0x156: 0x05, 0x157: 0x05, + 0x158: 0x05, 0x159: 0x47, 0x15a: 0x48, 0x15b: 0x49, 0x15c: 0x4a, 0x15d: 0x4b, 0x15e: 0x4c, 0x15f: 0x4d, + 0x160: 0x4e, 0x161: 0x4f, 0x162: 0x50, 0x163: 0x51, 0x164: 0x52, 0x165: 0x53, 0x166: 0x54, 0x167: 0x55, + 0x168: 0x56, 0x169: 0x57, 0x16a: 0x58, 0x16c: 0x59, 0x16d: 0x5a, 0x16e: 0x5b, 0x16f: 0x5c, + 0x170: 0x5d, 0x171: 0x5e, 0x172: 0x5f, 0x173: 0x60, 0x174: 0x61, 0x175: 0x62, 0x176: 0x63, 0x177: 0x64, + 0x178: 0x05, 0x179: 0x05, 0x17a: 0x65, 0x17b: 0x05, 0x17c: 0x66, 0x17d: 0x67, 0x17e: 0x68, 0x17f: 0x69, + // Block 0x6, offset 0x180 + 0x180: 0x6a, 0x181: 0x6b, 0x182: 0x6c, 0x183: 0x6d, 0x184: 0x6e, 0x185: 0x6f, 0x186: 0x70, 0x187: 0x71, + 0x188: 0x71, 0x189: 0x71, 0x18a: 0x71, 0x18b: 0x71, 0x18c: 0x71, 0x18d: 0x71, 0x18e: 0x71, 0x18f: 0x72, + 0x190: 0x73, 0x191: 0x74, 0x192: 0x71, 0x193: 0x71, 0x194: 0x71, 0x195: 0x71, 0x196: 0x71, 0x197: 0x71, + 0x198: 0x71, 0x199: 0x71, 0x19a: 0x71, 0x19b: 0x71, 0x19c: 0x71, 0x19d: 0x71, 0x19e: 0x71, 0x19f: 0x71, + 0x1a0: 0x71, 0x1a1: 0x71, 0x1a2: 0x71, 0x1a3: 0x71, 0x1a4: 0x71, 0x1a5: 0x71, 0x1a6: 0x71, 0x1a7: 0x71, + 0x1a8: 0x71, 0x1a9: 0x71, 0x1aa: 0x71, 0x1ab: 0x71, 0x1ac: 0x71, 0x1ad: 0x75, 0x1ae: 0x76, 0x1af: 0x77, + 0x1b0: 0x78, 0x1b1: 0x79, 0x1b2: 0x05, 0x1b3: 0x7a, 0x1b4: 0x7b, 0x1b5: 0x7c, 0x1b6: 0x7d, 0x1b7: 0x7e, + 0x1b8: 0x7f, 0x1b9: 0x80, 0x1ba: 0x81, 0x1bb: 0x82, 0x1bc: 0x83, 0x1bd: 0x83, 0x1be: 0x83, 0x1bf: 0x84, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x85, 0x1c1: 0x86, 0x1c2: 0x87, 0x1c3: 0x88, 0x1c4: 0x89, 0x1c5: 0x8a, 0x1c6: 0x8b, 0x1c7: 0x8c, + 0x1c8: 0x8d, 0x1c9: 0x71, 0x1ca: 0x71, 0x1cb: 0x8e, 0x1cc: 0x83, 0x1cd: 0x8f, 0x1ce: 0x71, 0x1cf: 0x71, + 0x1d0: 0x90, 0x1d1: 0x90, 0x1d2: 0x90, 0x1d3: 0x90, 0x1d4: 0x90, 0x1d5: 0x90, 0x1d6: 0x90, 0x1d7: 0x90, + 0x1d8: 0x90, 0x1d9: 0x90, 0x1da: 0x90, 0x1db: 0x90, 0x1dc: 0x90, 0x1dd: 0x90, 0x1de: 0x90, 0x1df: 0x90, + 0x1e0: 0x90, 0x1e1: 0x90, 0x1e2: 0x90, 0x1e3: 0x90, 0x1e4: 0x90, 0x1e5: 0x90, 0x1e6: 0x90, 0x1e7: 0x90, + 0x1e8: 0x90, 0x1e9: 0x90, 0x1ea: 0x90, 0x1eb: 0x90, 0x1ec: 0x90, 0x1ed: 0x90, 0x1ee: 0x90, 0x1ef: 0x90, + 0x1f0: 0x90, 0x1f1: 0x90, 0x1f2: 0x90, 0x1f3: 0x90, 0x1f4: 0x90, 0x1f5: 0x90, 0x1f6: 0x90, 0x1f7: 0x90, + 0x1f8: 0x90, 0x1f9: 0x90, 0x1fa: 0x90, 0x1fb: 0x90, 0x1fc: 0x90, 0x1fd: 0x90, 0x1fe: 0x90, 0x1ff: 0x90, + // Block 0x8, offset 0x200 + 0x200: 0x90, 0x201: 0x90, 0x202: 0x90, 0x203: 0x90, 0x204: 0x90, 0x205: 0x90, 0x206: 0x90, 0x207: 0x90, + 0x208: 0x90, 0x209: 0x90, 0x20a: 0x90, 0x20b: 0x90, 0x20c: 0x90, 0x20d: 0x90, 0x20e: 0x90, 0x20f: 0x90, + 0x210: 0x90, 0x211: 0x90, 0x212: 0x90, 0x213: 0x90, 0x214: 0x90, 0x215: 0x90, 0x216: 0x90, 0x217: 0x90, + 0x218: 0x90, 0x219: 0x90, 0x21a: 0x90, 0x21b: 0x90, 0x21c: 0x90, 0x21d: 0x90, 0x21e: 0x90, 0x21f: 0x90, + 0x220: 0x90, 0x221: 0x90, 0x222: 0x90, 0x223: 0x90, 0x224: 0x90, 0x225: 0x90, 0x226: 0x90, 0x227: 0x90, + 0x228: 0x90, 0x229: 0x90, 0x22a: 0x90, 0x22b: 0x90, 0x22c: 0x90, 0x22d: 0x90, 0x22e: 0x90, 0x22f: 0x90, + 0x230: 0x90, 0x231: 0x90, 0x232: 0x90, 0x233: 0x90, 0x234: 0x90, 0x235: 0x90, 0x236: 0x91, 0x237: 0x71, + 0x238: 0x90, 0x239: 0x90, 0x23a: 0x90, 0x23b: 0x90, 0x23c: 0x90, 0x23d: 0x90, 0x23e: 0x90, 0x23f: 0x90, + // Block 0x9, offset 0x240 + 0x240: 0x90, 0x241: 0x90, 0x242: 0x90, 0x243: 0x90, 0x244: 0x90, 0x245: 0x90, 0x246: 0x90, 0x247: 0x90, + 0x248: 0x90, 0x249: 0x90, 0x24a: 0x90, 0x24b: 0x90, 0x24c: 0x90, 0x24d: 0x90, 0x24e: 0x90, 0x24f: 0x90, + 0x250: 0x90, 0x251: 0x90, 0x252: 0x90, 0x253: 0x90, 0x254: 0x90, 0x255: 0x90, 0x256: 0x90, 0x257: 0x90, + 0x258: 0x90, 0x259: 0x90, 0x25a: 0x90, 0x25b: 0x90, 0x25c: 0x90, 0x25d: 0x90, 0x25e: 0x90, 0x25f: 0x90, + 0x260: 0x90, 0x261: 0x90, 0x262: 0x90, 0x263: 0x90, 0x264: 0x90, 0x265: 0x90, 0x266: 0x90, 0x267: 0x90, + 0x268: 0x90, 0x269: 0x90, 0x26a: 0x90, 0x26b: 0x90, 0x26c: 0x90, 0x26d: 0x90, 0x26e: 0x90, 0x26f: 0x90, + 0x270: 0x90, 0x271: 0x90, 0x272: 0x90, 0x273: 0x90, 0x274: 0x90, 0x275: 0x90, 0x276: 0x90, 0x277: 0x90, + 0x278: 0x90, 0x279: 0x90, 0x27a: 0x90, 0x27b: 0x90, 0x27c: 0x90, 0x27d: 0x90, 0x27e: 0x90, 0x27f: 0x90, + // Block 0xa, offset 0x280 + 0x280: 0x90, 0x281: 0x90, 0x282: 0x90, 0x283: 0x90, 0x284: 0x90, 0x285: 0x90, 0x286: 0x90, 0x287: 0x90, + 0x288: 0x90, 0x289: 0x90, 0x28a: 0x90, 0x28b: 0x90, 0x28c: 0x90, 0x28d: 0x90, 0x28e: 0x90, 0x28f: 0x90, + 0x290: 0x90, 0x291: 0x90, 0x292: 0x90, 0x293: 0x90, 0x294: 0x90, 0x295: 0x90, 0x296: 0x90, 0x297: 0x90, + 0x298: 0x90, 0x299: 0x90, 0x29a: 0x90, 0x29b: 0x90, 0x29c: 0x90, 0x29d: 0x90, 0x29e: 0x90, 0x29f: 0x90, + 0x2a0: 0x90, 0x2a1: 0x90, 0x2a2: 0x90, 0x2a3: 0x90, 0x2a4: 0x90, 0x2a5: 0x90, 0x2a6: 0x90, 0x2a7: 0x90, + 0x2a8: 0x90, 0x2a9: 0x90, 0x2aa: 0x90, 0x2ab: 0x90, 0x2ac: 0x90, 0x2ad: 0x90, 0x2ae: 0x90, 0x2af: 0x90, + 0x2b0: 0x90, 0x2b1: 0x90, 0x2b2: 0x90, 0x2b3: 0x90, 0x2b4: 0x90, 0x2b5: 0x90, 0x2b6: 0x90, 0x2b7: 0x90, + 0x2b8: 0x90, 0x2b9: 0x90, 0x2ba: 0x90, 0x2bb: 0x90, 0x2bc: 0x90, 0x2bd: 0x90, 0x2be: 0x90, 0x2bf: 0x92, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x05, 0x2c1: 0x05, 0x2c2: 0x05, 0x2c3: 0x05, 0x2c4: 0x05, 0x2c5: 0x05, 0x2c6: 0x05, 0x2c7: 0x05, + 0x2c8: 0x05, 0x2c9: 0x05, 0x2ca: 0x05, 0x2cb: 0x05, 0x2cc: 0x05, 0x2cd: 0x05, 0x2ce: 0x05, 0x2cf: 0x05, + 0x2d0: 0x05, 0x2d1: 0x05, 0x2d2: 0x93, 0x2d3: 0x94, 0x2d4: 0x05, 0x2d5: 0x05, 0x2d6: 0x05, 0x2d7: 0x05, + 0x2d8: 0x95, 0x2d9: 0x96, 0x2da: 0x97, 0x2db: 0x98, 0x2dc: 0x99, 0x2dd: 0x9a, 0x2de: 0x9b, 0x2df: 0x9c, + 0x2e0: 0x9d, 0x2e1: 0x9e, 0x2e2: 0x05, 0x2e3: 0x9f, 0x2e4: 0xa0, 0x2e5: 0xa1, 0x2e6: 0xa2, 0x2e7: 0xa3, + 0x2e8: 0xa4, 0x2e9: 0xa5, 0x2ea: 0xa6, 0x2eb: 0xa7, 0x2ec: 0xa8, 0x2ed: 0xa9, 0x2ee: 0x05, 0x2ef: 0xaa, + 0x2f0: 0x05, 0x2f1: 0x05, 0x2f2: 0x05, 0x2f3: 0x05, 0x2f4: 0x05, 0x2f5: 0x05, 0x2f6: 0x05, 0x2f7: 0x05, + 0x2f8: 0x05, 0x2f9: 0x05, 0x2fa: 0x05, 0x2fb: 0x05, 0x2fc: 0x05, 0x2fd: 0x05, 0x2fe: 0x05, 0x2ff: 0x05, + // Block 0xc, offset 0x300 + 0x300: 0x05, 0x301: 0x05, 0x302: 0x05, 0x303: 0x05, 0x304: 0x05, 0x305: 0x05, 0x306: 0x05, 0x307: 0x05, + 0x308: 0x05, 0x309: 0x05, 0x30a: 0x05, 0x30b: 0x05, 0x30c: 0x05, 0x30d: 0x05, 0x30e: 0x05, 0x30f: 0x05, + 0x310: 0x05, 0x311: 0x05, 0x312: 0x05, 0x313: 0x05, 0x314: 0x05, 0x315: 0x05, 0x316: 0x05, 0x317: 0x05, + 0x318: 0x05, 0x319: 0x05, 0x31a: 0x05, 0x31b: 0x05, 0x31c: 0x05, 0x31d: 0x05, 0x31e: 0x05, 0x31f: 0x05, + 0x320: 0x05, 0x321: 0x05, 0x322: 0x05, 0x323: 0x05, 0x324: 0x05, 0x325: 0x05, 0x326: 0x05, 0x327: 0x05, + 0x328: 0x05, 0x329: 0x05, 0x32a: 0x05, 0x32b: 0x05, 0x32c: 0x05, 0x32d: 0x05, 0x32e: 0x05, 0x32f: 0x05, + 0x330: 0x05, 0x331: 0x05, 0x332: 0x05, 0x333: 0x05, 0x334: 0x05, 0x335: 0x05, 0x336: 0x05, 0x337: 0x05, + 0x338: 0x05, 0x339: 0x05, 0x33a: 0x05, 0x33b: 0x05, 0x33c: 0x05, 0x33d: 0x05, 0x33e: 0x05, 0x33f: 0x05, + // Block 0xd, offset 0x340 + 0x340: 0x05, 0x341: 0x05, 0x342: 0x05, 0x343: 0x05, 0x344: 0x05, 0x345: 0x05, 0x346: 0x05, 0x347: 0x05, + 0x348: 0x05, 0x349: 0x05, 0x34a: 0x05, 0x34b: 0x05, 0x34c: 0x05, 0x34d: 0x05, 0x34e: 0x05, 0x34f: 0x05, + 0x350: 0x05, 0x351: 0x05, 0x352: 0x05, 0x353: 0x05, 0x354: 0x05, 0x355: 0x05, 0x356: 0x05, 0x357: 0x05, + 0x358: 0x05, 0x359: 0x05, 0x35a: 0x05, 0x35b: 0x05, 0x35c: 0x05, 0x35d: 0x05, 0x35e: 0xab, 0x35f: 0xac, + // Block 0xe, offset 0x380 + 0x380: 0x3e, 0x381: 0x3e, 0x382: 0x3e, 0x383: 0x3e, 0x384: 0x3e, 0x385: 0x3e, 0x386: 0x3e, 0x387: 0x3e, + 0x388: 0x3e, 0x389: 0x3e, 0x38a: 0x3e, 0x38b: 0x3e, 0x38c: 0x3e, 0x38d: 0x3e, 0x38e: 0x3e, 0x38f: 0x3e, + 0x390: 0x3e, 0x391: 0x3e, 0x392: 0x3e, 0x393: 0x3e, 0x394: 0x3e, 0x395: 0x3e, 0x396: 0x3e, 0x397: 0x3e, + 0x398: 0x3e, 0x399: 0x3e, 0x39a: 0x3e, 0x39b: 0x3e, 0x39c: 0x3e, 0x39d: 0x3e, 0x39e: 0x3e, 0x39f: 0x3e, + 0x3a0: 0x3e, 0x3a1: 0x3e, 0x3a2: 0x3e, 0x3a3: 0x3e, 0x3a4: 0x3e, 0x3a5: 0x3e, 0x3a6: 0x3e, 0x3a7: 0x3e, + 0x3a8: 0x3e, 0x3a9: 0x3e, 0x3aa: 0x3e, 0x3ab: 0x3e, 0x3ac: 0x3e, 0x3ad: 0x3e, 0x3ae: 0x3e, 0x3af: 0x3e, + 0x3b0: 0x3e, 0x3b1: 0x3e, 0x3b2: 0x3e, 0x3b3: 0x3e, 0x3b4: 0x3e, 0x3b5: 0x3e, 0x3b6: 0x3e, 0x3b7: 0x3e, + 0x3b8: 0x3e, 0x3b9: 0x3e, 0x3ba: 0x3e, 0x3bb: 0x3e, 0x3bc: 0x3e, 0x3bd: 0x3e, 0x3be: 0x3e, 0x3bf: 0x3e, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x3e, 0x3c1: 0x3e, 0x3c2: 0x3e, 0x3c3: 0x3e, 0x3c4: 0x3e, 0x3c5: 0x3e, 0x3c6: 0x3e, 0x3c7: 0x3e, + 0x3c8: 0x3e, 0x3c9: 0x3e, 0x3ca: 0x3e, 0x3cb: 0x3e, 0x3cc: 0x3e, 0x3cd: 0x3e, 0x3ce: 0x3e, 0x3cf: 0x3e, + 0x3d0: 0x3e, 0x3d1: 0x3e, 0x3d2: 0x3e, 0x3d3: 0x3e, 0x3d4: 0x3e, 0x3d5: 0x3e, 0x3d6: 0x3e, 0x3d7: 0x3e, + 0x3d8: 0x3e, 0x3d9: 0x3e, 0x3da: 0x3e, 0x3db: 0x3e, 0x3dc: 0x3e, 0x3dd: 0x3e, 0x3de: 0x3e, 0x3df: 0x3e, + 0x3e0: 0x3e, 0x3e1: 0x3e, 0x3e2: 0x3e, 0x3e3: 0x3e, 0x3e4: 0x83, 0x3e5: 0x83, 0x3e6: 0x83, 0x3e7: 0x83, + 0x3e8: 0xad, 0x3e9: 0xae, 0x3ea: 0x83, 0x3eb: 0xaf, 0x3ec: 0xb0, 0x3ed: 0xb1, 0x3ee: 0x71, 0x3ef: 0xb2, + 0x3f0: 0x71, 0x3f1: 0x71, 0x3f2: 0x71, 0x3f3: 0x71, 0x3f4: 0x71, 0x3f5: 0xb3, 0x3f6: 0xb4, 0x3f7: 0xb5, + 0x3f8: 0xb6, 0x3f9: 0xb7, 0x3fa: 0x71, 0x3fb: 0xb8, 0x3fc: 0xb9, 0x3fd: 0xba, 0x3fe: 0xbb, 0x3ff: 0xbc, + // Block 0x10, offset 0x400 + 0x400: 0xbd, 0x401: 0xbe, 0x402: 0x05, 0x403: 0xbf, 0x404: 0xc0, 0x405: 0xc1, 0x406: 0xc2, 0x407: 0xc3, + 0x40a: 0xc4, 0x40b: 0xc5, 0x40c: 0xc6, 0x40d: 0xc7, 0x40e: 0xc8, 0x40f: 0xc9, + 0x410: 0x05, 0x411: 0x05, 0x412: 0xca, 0x413: 0xcb, 0x414: 0xcc, 0x415: 0xcd, + 0x418: 0x05, 0x419: 0x05, 0x41a: 0x05, 0x41b: 0x05, 0x41c: 0xce, 0x41d: 0xcf, + 0x420: 0xd0, 0x421: 0xd1, 0x422: 0xd2, 0x423: 0xd3, 0x424: 0xd4, 0x426: 0xd5, 0x427: 0xb4, + 0x428: 0xd6, 0x429: 0xd7, 0x42a: 0xd8, 0x42b: 0xd9, 0x42c: 0xda, 0x42d: 0xdb, 0x42e: 0xdc, + 0x430: 0x05, 0x431: 0x5f, 0x432: 0xdd, 0x433: 0xde, + 0x439: 0xdf, + // Block 0x11, offset 0x440 + 0x440: 0xe0, 0x441: 0xe1, 0x442: 0xe2, 0x443: 0xe3, 0x444: 0xe4, 0x445: 0xe5, 0x446: 0xe6, 0x447: 0xe7, + 0x448: 0xe8, 0x44a: 0xe9, 0x44b: 0xea, 0x44c: 0xeb, 0x44d: 0xec, + 0x450: 0xed, 0x451: 0xee, 0x452: 0xef, 0x453: 0xf0, 0x456: 0xf1, 0x457: 0xf2, + 0x458: 0xf3, 0x459: 0xf4, 0x45a: 0xf5, 0x45b: 0xf6, 0x45c: 0xf7, + 0x462: 0xf8, 0x463: 0xf9, + 0x46b: 0xfa, + 0x470: 0xfb, 0x471: 0xfc, 0x472: 0xfd, + // Block 0x12, offset 0x480 + 0x480: 0x05, 0x481: 0x05, 0x482: 0x05, 0x483: 0x05, 0x484: 0x05, 0x485: 0x05, 0x486: 0x05, 0x487: 0x05, + 0x488: 0x05, 0x489: 0x05, 0x48a: 0x05, 0x48b: 0x05, 0x48c: 0x05, 0x48d: 0x05, 0x48e: 0xfe, + 0x490: 0x71, 0x491: 0xff, 0x492: 0x05, 0x493: 0x05, 0x494: 0x05, 0x495: 0x100, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x05, 0x4c1: 0x05, 0x4c2: 0x05, 0x4c3: 0x05, 0x4c4: 0x05, 0x4c5: 0x05, 0x4c6: 0x05, 0x4c7: 0x05, + 0x4c8: 0x05, 0x4c9: 0x05, 0x4ca: 0x05, 0x4cb: 0x05, 0x4cc: 0x05, 0x4cd: 0x05, 0x4ce: 0x05, 0x4cf: 0x05, + 0x4d0: 0x101, + // Block 0x14, offset 0x500 + 0x510: 0x05, 0x511: 0x05, 0x512: 0x05, 0x513: 0x05, 0x514: 0x05, 0x515: 0x05, 0x516: 0x05, 0x517: 0x05, + 0x518: 0x05, 0x519: 0x102, + // Block 0x15, offset 0x540 + 0x560: 0x05, 0x561: 0x05, 0x562: 0x05, 0x563: 0x05, 0x564: 0x05, 0x565: 0x05, 0x566: 0x05, 0x567: 0x05, + 0x568: 0xfa, 0x569: 0x103, 0x56b: 0x104, 0x56c: 0x105, 0x56d: 0x106, 0x56e: 0x107, + 0x57c: 0x05, 0x57d: 0x108, 0x57e: 0x109, 0x57f: 0x10a, + // Block 0x16, offset 0x580 + 0x580: 0x05, 0x581: 0x05, 0x582: 0x05, 0x583: 0x05, 0x584: 0x05, 0x585: 0x05, 0x586: 0x05, 0x587: 0x05, + 0x588: 0x05, 0x589: 0x05, 0x58a: 0x05, 0x58b: 0x05, 0x58c: 0x05, 0x58d: 0x05, 0x58e: 0x05, 0x58f: 0x05, + 0x590: 0x05, 0x591: 0x05, 0x592: 0x05, 0x593: 0x05, 0x594: 0x05, 0x595: 0x05, 0x596: 0x05, 0x597: 0x05, + 0x598: 0x05, 0x599: 0x05, 0x59a: 0x05, 0x59b: 0x05, 0x59c: 0x05, 0x59d: 0x05, 0x59e: 0x05, 0x59f: 0x10b, + 0x5a0: 0x05, 0x5a1: 0x05, 0x5a2: 0x05, 0x5a3: 0x05, 0x5a4: 0x05, 0x5a5: 0x05, 0x5a6: 0x05, 0x5a7: 0x05, + 0x5a8: 0x05, 0x5a9: 0x05, 0x5aa: 0x05, 0x5ab: 0xdd, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x10c, + 0x5f0: 0x05, 0x5f1: 0x10d, 0x5f2: 0x10e, + // Block 0x18, offset 0x600 + 0x600: 0x71, 0x601: 0x71, 0x602: 0x71, 0x603: 0x10f, 0x604: 0x110, 0x605: 0x111, 0x606: 0x112, 0x607: 0x113, + 0x608: 0xc1, 0x609: 0x114, 0x60c: 0x71, 0x60d: 0x115, + 0x610: 0x71, 0x611: 0x116, 0x612: 0x117, 0x613: 0x118, 0x614: 0x119, 0x615: 0x11a, 0x616: 0x71, 0x617: 0x71, + 0x618: 0x71, 0x619: 0x71, 0x61a: 0x11b, 0x61b: 0x71, 0x61c: 0x71, 0x61d: 0x71, 0x61e: 0x71, 0x61f: 0x11c, + 0x620: 0x71, 0x621: 0x71, 0x622: 0x71, 0x623: 0x71, 0x624: 0x71, 0x625: 0x71, 0x626: 0x71, 0x627: 0x71, + 0x628: 0x11d, 0x629: 0x11e, 0x62a: 0x11f, + // Block 0x19, offset 0x640 + 0x640: 0x120, + 0x660: 0x05, 0x661: 0x05, 0x662: 0x05, 0x663: 0x121, 0x664: 0x122, 0x665: 0x123, + 0x678: 0x124, 0x679: 0x125, 0x67a: 0x126, 0x67b: 0x127, + // Block 0x1a, offset 0x680 + 0x680: 0x128, 0x681: 0x71, 0x682: 0x129, 0x683: 0x12a, 0x684: 0x12b, 0x685: 0x128, 0x686: 0x12c, 0x687: 0x12d, + 0x688: 0x12e, 0x689: 0x12f, 0x68c: 0x71, 0x68d: 0x71, 0x68e: 0x71, 0x68f: 0x71, + 0x690: 0x71, 0x691: 0x71, 0x692: 0x71, 0x693: 0x71, 0x694: 0x71, 0x695: 0x71, 0x696: 0x71, 0x697: 0x71, + 0x698: 0x71, 0x699: 0x71, 0x69a: 0x71, 0x69b: 0x130, 0x69c: 0x71, 0x69d: 0x131, 0x69e: 0x71, 0x69f: 0x132, + 0x6a0: 0x133, 0x6a1: 0x134, 0x6a2: 0x135, 0x6a4: 0x136, 0x6a5: 0x137, 0x6a6: 0x138, 0x6a7: 0x139, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x90, 0x6c1: 0x90, 0x6c2: 0x90, 0x6c3: 0x90, 0x6c4: 0x90, 0x6c5: 0x90, 0x6c6: 0x90, 0x6c7: 0x90, + 0x6c8: 0x90, 0x6c9: 0x90, 0x6ca: 0x90, 0x6cb: 0x90, 0x6cc: 0x90, 0x6cd: 0x90, 0x6ce: 0x90, 0x6cf: 0x90, + 0x6d0: 0x90, 0x6d1: 0x90, 0x6d2: 0x90, 0x6d3: 0x90, 0x6d4: 0x90, 0x6d5: 0x90, 0x6d6: 0x90, 0x6d7: 0x90, + 0x6d8: 0x90, 0x6d9: 0x90, 0x6da: 0x90, 0x6db: 0x13a, 0x6dc: 0x90, 0x6dd: 0x90, 0x6de: 0x90, 0x6df: 0x90, + 0x6e0: 0x90, 0x6e1: 0x90, 0x6e2: 0x90, 0x6e3: 0x90, 0x6e4: 0x90, 0x6e5: 0x90, 0x6e6: 0x90, 0x6e7: 0x90, + 0x6e8: 0x90, 0x6e9: 0x90, 0x6ea: 0x90, 0x6eb: 0x90, 0x6ec: 0x90, 0x6ed: 0x90, 0x6ee: 0x90, 0x6ef: 0x90, + 0x6f0: 0x90, 0x6f1: 0x90, 0x6f2: 0x90, 0x6f3: 0x90, 0x6f4: 0x90, 0x6f5: 0x90, 0x6f6: 0x90, 0x6f7: 0x90, + 0x6f8: 0x90, 0x6f9: 0x90, 0x6fa: 0x90, 0x6fb: 0x90, 0x6fc: 0x90, 0x6fd: 0x90, 0x6fe: 0x90, 0x6ff: 0x90, + // Block 0x1c, offset 0x700 + 0x700: 0x90, 0x701: 0x90, 0x702: 0x90, 0x703: 0x90, 0x704: 0x90, 0x705: 0x90, 0x706: 0x90, 0x707: 0x90, + 0x708: 0x90, 0x709: 0x90, 0x70a: 0x90, 0x70b: 0x90, 0x70c: 0x90, 0x70d: 0x90, 0x70e: 0x90, 0x70f: 0x90, + 0x710: 0x90, 0x711: 0x90, 0x712: 0x90, 0x713: 0x90, 0x714: 0x90, 0x715: 0x90, 0x716: 0x90, 0x717: 0x90, + 0x718: 0x90, 0x719: 0x90, 0x71a: 0x90, 0x71b: 0x90, 0x71c: 0x13b, 0x71d: 0x90, 0x71e: 0x90, 0x71f: 0x90, + 0x720: 0x13c, 0x721: 0x90, 0x722: 0x90, 0x723: 0x90, 0x724: 0x90, 0x725: 0x90, 0x726: 0x90, 0x727: 0x90, + 0x728: 0x90, 0x729: 0x90, 0x72a: 0x90, 0x72b: 0x90, 0x72c: 0x90, 0x72d: 0x90, 0x72e: 0x90, 0x72f: 0x90, + 0x730: 0x90, 0x731: 0x90, 0x732: 0x90, 0x733: 0x90, 0x734: 0x90, 0x735: 0x90, 0x736: 0x90, 0x737: 0x90, + 0x738: 0x90, 0x739: 0x90, 0x73a: 0x90, 0x73b: 0x90, 0x73c: 0x90, 0x73d: 0x90, 0x73e: 0x90, 0x73f: 0x90, + // Block 0x1d, offset 0x740 + 0x740: 0x90, 0x741: 0x90, 0x742: 0x90, 0x743: 0x90, 0x744: 0x90, 0x745: 0x90, 0x746: 0x90, 0x747: 0x90, + 0x748: 0x90, 0x749: 0x90, 0x74a: 0x90, 0x74b: 0x90, 0x74c: 0x90, 0x74d: 0x90, 0x74e: 0x90, 0x74f: 0x90, + 0x750: 0x90, 0x751: 0x90, 0x752: 0x90, 0x753: 0x90, 0x754: 0x90, 0x755: 0x90, 0x756: 0x90, 0x757: 0x90, + 0x758: 0x90, 0x759: 0x90, 0x75a: 0x90, 0x75b: 0x90, 0x75c: 0x90, 0x75d: 0x90, 0x75e: 0x90, 0x75f: 0x90, + 0x760: 0x90, 0x761: 0x90, 0x762: 0x90, 0x763: 0x90, 0x764: 0x90, 0x765: 0x90, 0x766: 0x90, 0x767: 0x90, + 0x768: 0x90, 0x769: 0x90, 0x76a: 0x90, 0x76b: 0x90, 0x76c: 0x90, 0x76d: 0x90, 0x76e: 0x90, 0x76f: 0x90, + 0x770: 0x90, 0x771: 0x90, 0x772: 0x90, 0x773: 0x90, 0x774: 0x90, 0x775: 0x90, 0x776: 0x90, 0x777: 0x90, + 0x778: 0x90, 0x779: 0x90, 0x77a: 0x13d, + // Block 0x1e, offset 0x780 + 0x7a0: 0x83, 0x7a1: 0x83, 0x7a2: 0x83, 0x7a3: 0x83, 0x7a4: 0x83, 0x7a5: 0x83, 0x7a6: 0x83, 0x7a7: 0x83, + 0x7a8: 0x13e, + // Block 0x1f, offset 0x7c0 + 0x7d0: 0x0e, 0x7d1: 0x0f, 0x7d2: 0x10, 0x7d3: 0x11, 0x7d4: 0x12, 0x7d6: 0x13, 0x7d7: 0x0a, + 0x7d8: 0x14, 0x7db: 0x15, 0x7dd: 0x16, 0x7de: 0x17, 0x7df: 0x18, + 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, + 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x19, 0x7eb: 0x1a, 0x7ec: 0x1b, 0x7ef: 0x1c, + // Block 0x20, offset 0x800 + 0x800: 0x13f, 0x801: 0x3e, 0x804: 0x3e, 0x805: 0x3e, 0x806: 0x3e, 0x807: 0x140, + // Block 0x21, offset 0x840 + 0x840: 0x3e, 0x841: 0x3e, 0x842: 0x3e, 0x843: 0x3e, 0x844: 0x3e, 0x845: 0x3e, 0x846: 0x3e, 0x847: 0x3e, + 0x848: 0x3e, 0x849: 0x3e, 0x84a: 0x3e, 0x84b: 0x3e, 0x84c: 0x3e, 0x84d: 0x3e, 0x84e: 0x3e, 0x84f: 0x3e, + 0x850: 0x3e, 0x851: 0x3e, 0x852: 0x3e, 0x853: 0x3e, 0x854: 0x3e, 0x855: 0x3e, 0x856: 0x3e, 0x857: 0x3e, + 0x858: 0x3e, 0x859: 0x3e, 0x85a: 0x3e, 0x85b: 0x3e, 0x85c: 0x3e, 0x85d: 0x3e, 0x85e: 0x3e, 0x85f: 0x3e, + 0x860: 0x3e, 0x861: 0x3e, 0x862: 0x3e, 0x863: 0x3e, 0x864: 0x3e, 0x865: 0x3e, 0x866: 0x3e, 0x867: 0x3e, + 0x868: 0x3e, 0x869: 0x3e, 0x86a: 0x3e, 0x86b: 0x3e, 0x86c: 0x3e, 0x86d: 0x3e, 0x86e: 0x3e, 0x86f: 0x3e, + 0x870: 0x3e, 0x871: 0x3e, 0x872: 0x3e, 0x873: 0x3e, 0x874: 0x3e, 0x875: 0x3e, 0x876: 0x3e, 0x877: 0x3e, + 0x878: 0x3e, 0x879: 0x3e, 0x87a: 0x3e, 0x87b: 0x3e, 0x87c: 0x3e, 0x87d: 0x3e, 0x87e: 0x3e, 0x87f: 0x141, + // Block 0x22, offset 0x880 + 0x8a0: 0x1e, + 0x8b0: 0x0c, 0x8b1: 0x0c, 0x8b2: 0x0c, 0x8b3: 0x0c, 0x8b4: 0x0c, 0x8b5: 0x0c, 0x8b6: 0x0c, 0x8b7: 0x0c, + 0x8b8: 0x0c, 0x8b9: 0x0c, 0x8ba: 0x0c, 0x8bb: 0x0c, 0x8bc: 0x0c, 0x8bd: 0x0c, 0x8be: 0x0c, 0x8bf: 0x1f, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0c, 0x8c1: 0x0c, 0x8c2: 0x0c, 0x8c3: 0x0c, 0x8c4: 0x0c, 0x8c5: 0x0c, 0x8c6: 0x0c, 0x8c7: 0x0c, + 0x8c8: 0x0c, 0x8c9: 0x0c, 0x8ca: 0x0c, 0x8cb: 0x0c, 0x8cc: 0x0c, 0x8cd: 0x0c, 0x8ce: 0x0c, 0x8cf: 0x1f, +} + +// Total table size 25344 bytes (24KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/secure/precis/transformer.go b/vendor/golang.org/x/text/secure/precis/transformer.go new file mode 100644 index 0000000000..97ce5e757d --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/transformer.go @@ -0,0 +1,32 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package precis + +import "golang.org/x/text/transform" + +// Transformer implements the transform.Transformer interface. +type Transformer struct { + t transform.Transformer +} + +// Reset implements the transform.Transformer interface. +func (t Transformer) Reset() { t.t.Reset() } + +// Transform implements the transform.Transformer interface. +func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return t.t.Transform(dst, src, atEOF) +} + +// Bytes returns a new byte slice with the result of applying t to b. +func (t Transformer) Bytes(b []byte) []byte { + b, _, _ = transform.Bytes(t, b) + return b +} + +// String returns a string with the result of applying t to s. +func (t Transformer) String(s string) string { + s, _, _ = transform.String(t, s) + return s +} diff --git a/vendor/golang.org/x/text/secure/precis/trieval.go b/vendor/golang.org/x/text/secure/precis/trieval.go new file mode 100644 index 0000000000..fed7d75952 --- /dev/null +++ b/vendor/golang.org/x/text/secure/precis/trieval.go @@ -0,0 +1,64 @@ +// This file was generated by go generate; DO NOT EDIT + +package precis + +// entry is the entry of a trie table +// 7..6 property (unassigned, disallowed, maybe, valid) +// 5..0 category +type entry uint8 + +const ( + propShift = 6 + propMask = 0xc0 + catMask = 0x3f +) + +func (e entry) property() property { return property(e & propMask) } +func (e entry) category() category { return category(e & catMask) } + +type property uint8 + +// The order of these constants matter. A Profile may consider runes to be +// allowed either from pValid or idDisOrFreePVal. +const ( + unassigned property = iota << propShift + disallowed + idDisOrFreePVal // disallowed for Identifier, pValid for FreeForm + pValid +) + +// compute permutations of all properties and specialCategories. +type category uint8 + +const ( + other category = iota + + // Special rune types + joiningL + joiningD + joiningT + joiningR + viramaModifier + viramaJoinT // Virama + JoiningT + latinSmallL // U+006c + greek + greekJoinT // Greek + JoiningT + hebrew + hebrewJoinT // Hebrew + JoiningT + japanese // hirigana, katakana, han + + // Special rune types associated with contextual rules defined in + // https://tools.ietf.org/html/rfc5892#appendix-A. + // ContextO + zeroWidthNonJoiner // rule 1 + zeroWidthJoiner // rule 2 + // ContextJ + middleDot // rule 3 + greekLowerNumeralSign // rule 4 + hebrewPreceding // rule 5 and 6 + katakanaMiddleDot // rule 7 + arabicIndicDigit // rule 8 + extendedArabicIndicDigit // rule 9 + + numCategories +) diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go new file mode 100644 index 0000000000..51862b02bf --- /dev/null +++ b/vendor/golang.org/x/text/transform/transform.go @@ -0,0 +1,661 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package transform provides reader and writer wrappers that transform the +// bytes passing through as well as various transformations. Example +// transformations provided by other packages include normalization and +// conversion between character sets. +package transform + +import ( + "bytes" + "errors" + "io" + "unicode/utf8" +) + +var ( + // ErrShortDst means that the destination buffer was too short to + // receive all of the transformed bytes. + ErrShortDst = errors.New("transform: short destination buffer") + + // ErrShortSrc means that the source buffer has insufficient data to + // complete the transformation. + ErrShortSrc = errors.New("transform: short source buffer") + + // errInconsistentByteCount means that Transform returned success (nil + // error) but also returned nSrc inconsistent with the src argument. + errInconsistentByteCount = errors.New("transform: inconsistent byte count returned") + + // errShortInternal means that an internal buffer is not large enough + // to make progress and the Transform operation must be aborted. + errShortInternal = errors.New("transform: short internal buffer") +) + +// Transformer transforms bytes. +type Transformer interface { + // Transform writes to dst the transformed bytes read from src, and + // returns the number of dst bytes written and src bytes read. The + // atEOF argument tells whether src represents the last bytes of the + // input. + // + // Callers should always process the nDst bytes produced and account + // for the nSrc bytes consumed before considering the error err. + // + // A nil error means that all of the transformed bytes (whether freshly + // transformed from src or left over from previous Transform calls) + // were written to dst. A nil error can be returned regardless of + // whether atEOF is true. If err is nil then nSrc must equal len(src); + // the converse is not necessarily true. + // + // ErrShortDst means that dst was too short to receive all of the + // transformed bytes. ErrShortSrc means that src had insufficient data + // to complete the transformation. If both conditions apply, then + // either error may be returned. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) + + // Reset resets the state and allows a Transformer to be reused. + Reset() +} + +// NopResetter can be embedded by implementations of Transformer to add a nop +// Reset method. +type NopResetter struct{} + +// Reset implements the Reset method of the Transformer interface. +func (NopResetter) Reset() {} + +// Reader wraps another io.Reader by transforming the bytes read. +type Reader struct { + r io.Reader + t Transformer + err error + + // dst[dst0:dst1] contains bytes that have been transformed by t but + // not yet copied out via Read. + dst []byte + dst0, dst1 int + + // src[src0:src1] contains bytes that have been read from r but not + // yet transformed through t. + src []byte + src0, src1 int + + // transformComplete is whether the transformation is complete, + // regardless of whether or not it was successful. + transformComplete bool +} + +const defaultBufSize = 4096 + +// NewReader returns a new Reader that wraps r by transforming the bytes read +// via t. It calls Reset on t. +func NewReader(r io.Reader, t Transformer) *Reader { + t.Reset() + return &Reader{ + r: r, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Read implements the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + n, err := 0, error(nil) + for { + // Copy out any transformed bytes and return the final error if we are done. + if r.dst0 != r.dst1 { + n = copy(p, r.dst[r.dst0:r.dst1]) + r.dst0 += n + if r.dst0 == r.dst1 && r.transformComplete { + return n, r.err + } + return n, nil + } else if r.transformComplete { + return 0, r.err + } + + // Try to transform some source bytes, or to flush the transformer if we + // are out of source bytes. We do this even if r.r.Read returned an error. + // As the io.Reader documentation says, "process the n > 0 bytes returned + // before considering the error". + if r.src0 != r.src1 || r.err != nil { + r.dst0 = 0 + r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) + r.src0 += n + + switch { + case err == nil: + if r.src0 != r.src1 { + r.err = errInconsistentByteCount + } + // The Transform call was successful; we are complete if we + // cannot read more bytes into src. + r.transformComplete = r.err != nil + continue + case err == ErrShortDst && (r.dst1 != 0 || n != 0): + // Make room in dst by copying out, and try again. + continue + case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: + // Read more bytes into src via the code below, and try again. + default: + r.transformComplete = true + // The reader error (r.err) takes precedence over the + // transformer error (err) unless r.err is nil or io.EOF. + if r.err == nil || r.err == io.EOF { + r.err = err + } + continue + } + } + + // Move any untransformed source bytes to the start of the buffer + // and read more bytes. + if r.src0 != 0 { + r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1]) + } + n, r.err = r.r.Read(r.src[r.src1:]) + r.src1 += n + } +} + +// TODO: implement ReadByte (and ReadRune??). + +// Writer wraps another io.Writer by transforming the bytes read. +// The user needs to call Close to flush unwritten bytes that may +// be buffered. +type Writer struct { + w io.Writer + t Transformer + dst []byte + + // src[:n] contains bytes that have not yet passed through t. + src []byte + n int +} + +// NewWriter returns a new Writer that wraps w by transforming the bytes written +// via t. It calls Reset on t. +func NewWriter(w io.Writer, t Transformer) *Writer { + t.Reset() + return &Writer{ + w: w, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Write implements the io.Writer interface. If there are not enough +// bytes available to complete a Transform, the bytes will be buffered +// for the next write. Call Close to convert the remaining bytes. +func (w *Writer) Write(data []byte) (n int, err error) { + src := data + if w.n > 0 { + // Append bytes from data to the last remainder. + // TODO: limit the amount copied on first try. + n = copy(w.src[w.n:], data) + w.n += n + src = w.src[:w.n] + } + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, false) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return n, werr + } + src = src[nSrc:] + if w.n == 0 { + n += nSrc + } else if len(src) <= n { + // Enough bytes from w.src have been consumed. We make src point + // to data instead to reduce the copying. + w.n = 0 + n -= len(src) + src = data[n:] + if n < len(data) && (err == nil || err == ErrShortSrc) { + continue + } + } + switch err { + case ErrShortDst: + // This error is okay as long as we are making progress. + if nDst > 0 || nSrc > 0 { + continue + } + case ErrShortSrc: + if len(src) < len(w.src) { + m := copy(w.src, src) + // If w.n > 0, bytes from data were already copied to w.src and n + // was already set to the number of bytes consumed. + if w.n == 0 { + n += m + } + w.n = m + err = nil + } else if nDst > 0 || nSrc > 0 { + // Not enough buffer to store the remainder. Keep processing as + // long as there is progress. Without this case, transforms that + // require a lookahead larger than the buffer may result in an + // error. This is not something one may expect to be common in + // practice, but it may occur when buffers are set to small + // sizes during testing. + continue + } + case nil: + if w.n > 0 { + err = errInconsistentByteCount + } + } + return n, err + } +} + +// Close implements the io.Closer interface. +func (w *Writer) Close() error { + src := w.src[:w.n] + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, true) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return werr + } + if err != ErrShortDst { + return err + } + src = src[nSrc:] + } +} + +type nop struct{ NopResetter } + +func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := copy(dst, src) + if n < len(src) { + err = ErrShortDst + } + return n, n, err +} + +type discard struct{ NopResetter } + +func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return 0, len(src), nil +} + +var ( + // Discard is a Transformer for which all Transform calls succeed + // by consuming all bytes and writing nothing. + Discard Transformer = discard{} + + // Nop is a Transformer that copies src to dst. + Nop Transformer = nop{} +) + +// chain is a sequence of links. A chain with N Transformers has N+1 links and +// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst +// buffers given to chain.Transform and the middle N-1 buffers are intermediate +// buffers owned by the chain. The i'th link transforms bytes from the i'th +// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer +// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N). +type chain struct { + link []link + err error + // errStart is the index at which the error occurred plus 1. Processing + // errStart at this level at the next call to Transform. As long as + // errStart > 0, chain will not consume any more source bytes. + errStart int +} + +func (c *chain) fatalError(errIndex int, err error) { + if i := errIndex + 1; i > c.errStart { + c.errStart = i + c.err = err + } +} + +type link struct { + t Transformer + // b[p:n] holds the bytes to be transformed by t. + b []byte + p int + n int +} + +func (l *link) src() []byte { + return l.b[l.p:l.n] +} + +func (l *link) dst() []byte { + return l.b[l.n:] +} + +// Chain returns a Transformer that applies t in sequence. +func Chain(t ...Transformer) Transformer { + if len(t) == 0 { + return nop{} + } + c := &chain{link: make([]link, len(t)+1)} + for i, tt := range t { + c.link[i].t = tt + } + // Allocate intermediate buffers. + b := make([][defaultBufSize]byte, len(t)-1) + for i := range b { + c.link[i+1].b = b[i][:] + } + return c +} + +// Reset resets the state of Chain. It calls Reset on all the Transformers. +func (c *chain) Reset() { + for i, l := range c.link { + if l.t != nil { + l.t.Reset() + } + c.link[i].p, c.link[i].n = 0, 0 + } +} + +// Transform applies the transformers of c in sequence. +func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + // Set up src and dst in the chain. + srcL := &c.link[0] + dstL := &c.link[len(c.link)-1] + srcL.b, srcL.p, srcL.n = src, 0, len(src) + dstL.b, dstL.n = dst, 0 + var lastFull, needProgress bool // for detecting progress + + // i is the index of the next Transformer to apply, for i in [low, high]. + // low is the lowest index for which c.link[low] may still produce bytes. + // high is the highest index for which c.link[high] has a Transformer. + // The error returned by Transform determines whether to increase or + // decrease i. We try to completely fill a buffer before converting it. + for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; { + in, out := &c.link[i], &c.link[i+1] + nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i) + out.n += nDst + in.p += nSrc + if i > 0 && in.p == in.n { + in.p, in.n = 0, 0 + } + needProgress, lastFull = lastFull, false + switch err0 { + case ErrShortDst: + // Process the destination buffer next. Return if we are already + // at the high index. + if i == high { + return dstL.n, srcL.p, ErrShortDst + } + if out.n != 0 { + i++ + // If the Transformer at the next index is not able to process any + // source bytes there is nothing that can be done to make progress + // and the bytes will remain unprocessed. lastFull is used to + // detect this and break out of the loop with a fatal error. + lastFull = true + continue + } + // The destination buffer was too small, but is completely empty. + // Return a fatal error as this transformation can never complete. + c.fatalError(i, errShortInternal) + case ErrShortSrc: + if i == 0 { + // Save ErrShortSrc in err. All other errors take precedence. + err = ErrShortSrc + break + } + // Source bytes were depleted before filling up the destination buffer. + // Verify we made some progress, move the remaining bytes to the errStart + // and try to get more source bytes. + if needProgress && nSrc == 0 || in.n-in.p == len(in.b) { + // There were not enough source bytes to proceed while the source + // buffer cannot hold any more bytes. Return a fatal error as this + // transformation can never complete. + c.fatalError(i, errShortInternal) + break + } + // in.b is an internal buffer and we can make progress. + in.p, in.n = 0, copy(in.b, in.src()) + fallthrough + case nil: + // if i == low, we have depleted the bytes at index i or any lower levels. + // In that case we increase low and i. In all other cases we decrease i to + // fetch more bytes before proceeding to the next index. + if i > low { + i-- + continue + } + default: + c.fatalError(i, err0) + } + // Exhausted level low or fatal error: increase low and continue + // to process the bytes accepted so far. + i++ + low = i + } + + // If c.errStart > 0, this means we found a fatal error. We will clear + // all upstream buffers. At this point, no more progress can be made + // downstream, as Transform would have bailed while handling ErrShortDst. + if c.errStart > 0 { + for i := 1; i < c.errStart; i++ { + c.link[i].p, c.link[i].n = 0, 0 + } + err, c.errStart, c.err = c.err, 0, nil + } + return dstL.n, srcL.p, err +} + +// RemoveFunc returns a Transformer that removes from the input all runes r for +// which f(r) is true. Illegal bytes in the input are replaced by RuneError. +func RemoveFunc(f func(r rune) bool) Transformer { + return removeF(f) +} + +type removeF func(r rune) bool + +func (removeF) Reset() {} + +// Transform implements the Transformer interface. +func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] { + + if r = rune(src[0]); r < utf8.RuneSelf { + sz = 1 + } else { + r, sz = utf8.DecodeRune(src) + + if sz == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src) { + err = ErrShortSrc + break + } + // We replace illegal bytes with RuneError. Not doing so might + // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. + // The resulting byte sequence may subsequently contain runes + // for which t(r) is true that were passed unnoticed. + if !t(r) { + if nDst+3 > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], "\uFFFD") + } + nSrc++ + continue + } + } + + if !t(r) { + if nDst+sz > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], src[:sz]) + } + nSrc += sz + } + return +} + +// grow returns a new []byte that is longer than b, and copies the first n bytes +// of b to the start of the new slice. +func grow(b []byte, n int) []byte { + m := len(b) + if m <= 32 { + m = 64 + } else if m <= 256 { + m *= 2 + } else { + m += m >> 1 + } + buf := make([]byte, m) + copy(buf, b[:n]) + return buf +} + +const initialBufSize = 128 + +// String returns a string with the result of converting s[:n] using t, where +// n <= len(s). If err == nil, n will be len(s). It calls Reset on t. +func String(t Transformer, s string) (result string, n int, err error) { + t.Reset() + if s == "" { + // Fast path for the common case for empty input. Results in about a + // 86% reduction of running time for BenchmarkStringLowerEmpty. + if _, _, err := t.Transform(nil, nil, true); err == nil { + return "", 0, nil + } + } + + // Allocate only once. Note that both dst and src escape when passed to + // Transform. + buf := [2 * initialBufSize]byte{} + dst := buf[:initialBufSize:initialBufSize] + src := buf[initialBufSize : 2*initialBufSize] + + // The input string s is transformed in multiple chunks (starting with a + // chunk size of initialBufSize). nDst and nSrc are per-chunk (or + // per-Transform-call) indexes, pDst and pSrc are overall indexes. + nDst, nSrc := 0, 0 + pDst, pSrc := 0, 0 + + // pPrefix is the length of a common prefix: the first pPrefix bytes of the + // result will equal the first pPrefix bytes of s. It is not guaranteed to + // be the largest such value, but if pPrefix, len(result) and len(s) are + // all equal after the final transform (i.e. calling Transform with atEOF + // being true returned nil error) then we don't need to allocate a new + // result string. + pPrefix := 0 + for { + // Invariant: pDst == pPrefix && pSrc == pPrefix. + + n := copy(src, s[pSrc:]) + nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s)) + pDst += nDst + pSrc += nSrc + + // TODO: let transformers implement an optional Spanner interface, akin + // to norm's QuickSpan. This would even allow us to avoid any allocation. + if !bytes.Equal(dst[:nDst], src[:nSrc]) { + break + } + pPrefix = pSrc + if err == ErrShortDst { + // A buffer can only be short if a transformer modifies its input. + break + } else if err == ErrShortSrc { + if nSrc == 0 { + // No progress was made. + break + } + // Equal so far and !atEOF, so continue checking. + } else if err != nil || pPrefix == len(s) { + return string(s[:pPrefix]), pPrefix, err + } + } + // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc. + + // We have transformed the first pSrc bytes of the input s to become pDst + // transformed bytes. Those transformed bytes are discontiguous: the first + // pPrefix of them equal s[:pPrefix] and the last nDst of them equal + // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so + // that they become one contiguous slice: dst[:pDst]. + if pPrefix != 0 { + newDst := dst + if pDst > len(newDst) { + newDst = make([]byte, len(s)+nDst-nSrc) + } + copy(newDst[pPrefix:pDst], dst[:nDst]) + copy(newDst[:pPrefix], s[:pPrefix]) + dst = newDst + } + + // Prevent duplicate Transform calls with atEOF being true at the end of + // the input. Also return if we have an unrecoverable error. + if (err == nil && pSrc == len(s)) || + (err != nil && err != ErrShortDst && err != ErrShortSrc) { + return string(dst[:pDst]), pSrc, err + } + + // Transform the remaining input, growing dst and src buffers as necessary. + for { + n := copy(src, s[pSrc:]) + nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], pSrc+n == len(s)) + pDst += nDst + pSrc += nSrc + + // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can + // make progress. This may avoid excessive allocations. + if err == ErrShortDst { + if nDst == 0 { + dst = grow(dst, pDst) + } + } else if err == ErrShortSrc { + if nSrc == 0 { + src = grow(src, 0) + } + } else if err != nil || pSrc == len(s) { + return string(dst[:pDst]), pSrc, err + } + } +} + +// Bytes returns a new byte slice with the result of converting b[:n] using t, +// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t. +func Bytes(t Transformer, b []byte) (result []byte, n int, err error) { + return doAppend(t, 0, make([]byte, len(b)), b) +} + +// Append appends the result of converting src[:n] using t to dst, where +// n <= len(src), If err == nil, n will be len(src). It calls Reset on t. +func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) { + if len(dst) == cap(dst) { + n := len(src) + len(dst) // It is okay for this to be 0. + b := make([]byte, n) + dst = b[:copy(b, dst)] + } + return doAppend(t, len(dst), dst[:cap(dst)], src) +} + +func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) { + t.Reset() + pSrc := 0 + for { + nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true) + pDst += nDst + pSrc += nSrc + if err != ErrShortDst { + return dst[:pDst], pSrc, err + } + + // Grow the destination buffer, but do not grow as long as we can make + // progress. This may avoid excessive allocations. + if nDst == 0 { + dst = grow(dst, pDst) + } + } +} diff --git a/vendor/golang.org/x/text/unicode/bidi/bidi.go b/vendor/golang.org/x/text/unicode/bidi/bidi.go new file mode 100644 index 0000000000..1254119b54 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/bidi.go @@ -0,0 +1,198 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_trieval.go gen_ranges.go + +// Package bidi contains functionality for bidirectional text support. +// +// See http://www.unicode.org/reports/tr9. +// +// NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways +// and without notice. +package bidi + +// TODO: +// The following functionality would not be hard to implement, but hinges on +// the definition of a Segmenter interface. For now this is up to the user. +// - Iterate over paragraphs +// - Segmenter to iterate over runs directly from a given text. +// Also: +// - Transformer for reordering? +// - Transformer (validator, really) for Bidi Rule. + +// This API tries to avoid dealing with embedding levels for now. Under the hood +// these will be computed, but the question is to which extent the user should +// know they exist. We should at some point allow the user to specify an +// embedding hierarchy, though. + +// A Direction indicates the overall flow of text. +type Direction int + +const ( + // LeftToRight indicates the text contains no right-to-left characters and + // that either there are some left-to-right characters or the option + // DefaultDirection(LeftToRight) was passed. + LeftToRight Direction = iota + + // RightToLeft indicates the text contains no left-to-right characters and + // that either there are some right-to-left characters or the option + // DefaultDirection(RightToLeft) was passed. + RightToLeft + + // Mixed indicates text contains both left-to-right and right-to-left + // characters. + Mixed + + // Neutral means that text contains no left-to-right and right-to-left + // characters and that no default direction has been set. + Neutral +) + +type options struct{} + +// An Option is an option for Bidi processing. +type Option func(*options) + +// ICU allows the user to define embedding levels. This may be used, for example, +// to use hierarchical structure of markup languages to define embeddings. +// The following option may be a way to expose this functionality in this API. +// // LevelFunc sets a function that associates nesting levels with the given text. +// // The levels function will be called with monotonically increasing values for p. +// func LevelFunc(levels func(p int) int) Option { +// panic("unimplemented") +// } + +// DefaultDirection sets the default direction for a Paragraph. The direction is +// overridden if the text contains directional characters. +func DefaultDirection(d Direction) Option { + panic("unimplemented") +} + +// A Paragraph holds a single Paragraph for Bidi processing. +type Paragraph struct { + // buffers +} + +// SetBytes configures p for the given paragraph text. It replaces text +// previously set by SetBytes or SetString. If b contains a paragraph separator +// it will only process the first paragraph and report the number of bytes +// consumed from b including this separator. Error may be non-nil if options are +// given. +func (p *Paragraph) SetBytes(b []byte, opts ...Option) (n int, err error) { + panic("unimplemented") +} + +// SetString configures p for the given paragraph text. It replaces text +// previously set by SetBytes or SetString. If b contains a paragraph separator +// it will only process the first paragraph and report the number of bytes +// consumed from b including this separator. Error may be non-nil if options are +// given. +func (p *Paragraph) SetString(s string, opts ...Option) (n int, err error) { + panic("unimplemented") +} + +// IsLeftToRight reports whether the principle direction of rendering for this +// paragraphs is left-to-right. If this returns false, the principle direction +// of rendering is right-to-left. +func (p *Paragraph) IsLeftToRight() bool { + panic("unimplemented") +} + +// Direction returns the direction of the text of this paragraph. +// +// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. +func (p *Paragraph) Direction() Direction { + panic("unimplemented") +} + +// RunAt reports the Run at the given position of the input text. +// +// This method can be used for computing line breaks on paragraphs. +func (p *Paragraph) RunAt(pos int) Run { + panic("unimplemented") +} + +// Order computes the visual ordering of all the runs in a Paragraph. +func (p *Paragraph) Order() (Ordering, error) { + panic("unimplemented") +} + +// Line computes the visual ordering of runs for a single line starting and +// ending at the given positions in the original text. +func (p *Paragraph) Line(start, end int) (Ordering, error) { + panic("unimplemented") +} + +// An Ordering holds the computed visual order of runs of a Paragraph. Calling +// SetBytes or SetString on the originating Paragraph invalidates an Ordering. +// The methods of an Ordering should only be called by one goroutine at a time. +type Ordering struct{} + +// Direction reports the directionality of the runs. +// +// The direction may be LeftToRight, RightToLeft, Mixed, or Neutral. +func (o *Ordering) Direction() Direction { + panic("unimplemented") +} + +// NumRuns returns the number of runs. +func (o *Ordering) NumRuns() int { + panic("unimplemented") +} + +// Run returns the ith run within the ordering. +func (o *Ordering) Run(i int) Run { + panic("unimplemented") +} + +// TODO: perhaps with options. +// // Reorder creates a reader that reads the runes in visual order per character. +// // Modifiers remain after the runes they modify. +// func (l *Runs) Reorder() io.Reader { +// panic("unimplemented") +// } + +// A Run is a continuous sequence of characters of a single direction. +type Run struct { +} + +// String returns the text of the run in its original order. +func (r *Run) String() string { + panic("unimplemented") +} + +// Bytes returns the text of the run in its original order. +func (r *Run) Bytes() []byte { + panic("unimplemented") +} + +// TODO: methods for +// - Display order +// - headers and footers +// - bracket replacement. + +// Direction reports the direction of the run. +func (r *Run) Direction() Direction { + panic("unimplemented") +} + +// Position of the Run within the text passed to SetBytes or SetString of the +// originating Paragraph value. +func (r *Run) Pos() (start, end int) { + panic("unimplemented") +} + +// AppendReverse reverses the order of characters of in, appends them to out, +// and returns the result. Modifiers will still follow the runes they modify. +// Brackets are replaced with their counterparts. +func AppendReverse(out, in []byte) []byte { + panic("unimplemented") +} + +// ReverseString reverses the order of characters in s and returns a new string. +// Modifiers will still follow the runes they modify. Brackets are replaced with +// their counterparts. +func ReverseString(s string) string { + panic("unimplemented") +} diff --git a/vendor/golang.org/x/text/unicode/bidi/bracket.go b/vendor/golang.org/x/text/unicode/bidi/bracket.go new file mode 100644 index 0000000000..e88119d1b1 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/bracket.go @@ -0,0 +1,307 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bidi + +import ( + "container/list" + "fmt" + "sort" +) + +// This file contains a port of the reference implementation of the +// Bidi Parentheses Algorithm: +// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java +// +// The implementation in this file covers definitions BD14-BD16 and rule N0 +// of UAX#9. +// +// Some preprocessing is done for each rune before data is passed to this +// algorithm: +// - opening and closing brackets are identified +// - a bracket pair type, like '(' and ')' is assigned a unique identifier that +// is identical for the opening and closing bracket. It is left to do these +// mappings. +// - The BPA algorithm requires that bracket characters that are canonical +// equivalents of each other be able to be substituted for each other. +// It is the responsibility of the caller to do this canonicalization. +// +// In implementing BD16, this implementation departs slightly from the "logical" +// algorithm defined in UAX#9. In particular, the stack referenced there +// supports operations that go beyond a "basic" stack. An equivalent +// implementation based on a linked list is used here. + +// Bidi_Paired_Bracket_Type +// BD14. An opening paired bracket is a character whose +// Bidi_Paired_Bracket_Type property value is Open. +// +// BD15. A closing paired bracket is a character whose +// Bidi_Paired_Bracket_Type property value is Close. +type bracketType byte + +const ( + bpNone bracketType = iota + bpOpen + bpClose +) + +// bracketPair holds a pair of index values for opening and closing bracket +// location of a bracket pair. +type bracketPair struct { + opener int + closer int +} + +func (b *bracketPair) String() string { + return fmt.Sprintf("(%v, %v)", b.opener, b.closer) +} + +// bracketPairs is a slice of bracketPairs with a sort.Interface implementation. +type bracketPairs []bracketPair + +func (b bracketPairs) Len() int { return len(b) } +func (b bracketPairs) Swap(i, j int) { b[i], b[j] = b[j], b[i] } +func (b bracketPairs) Less(i, j int) bool { return b[i].opener < b[j].opener } + +// resolvePairedBrackets runs the paired bracket part of the UBA algorithm. +// +// For each rune, it takes the indexes into the original string, the class the +// bracket type (in pairTypes) and the bracket identifier (pairValues). It also +// takes the direction type for the start-of-sentence and the embedding level. +// +// The identifiers for bracket types are the rune of the canonicalized opening +// bracket for brackets (open or close) or 0 for runes that are not brackets. +func resolvePairedBrackets(s *isolatingRunSequence) { + p := bracketPairer{ + sos: s.sos, + openers: list.New(), + codesIsolatedRun: s.types, + indexes: s.indexes, + } + dirEmbed := L + if s.level&1 != 0 { + dirEmbed = R + } + p.locateBrackets(s.p.pairTypes, s.p.pairValues) + p.resolveBrackets(dirEmbed) +} + +type bracketPairer struct { + sos Class // direction corresponding to start of sequence + + // The following is a restatement of BD 16 using non-algorithmic language. + // + // A bracket pair is a pair of characters consisting of an opening + // paired bracket and a closing paired bracket such that the + // Bidi_Paired_Bracket property value of the former equals the latter, + // subject to the following constraints. + // - both characters of a pair occur in the same isolating run sequence + // - the closing character of a pair follows the opening character + // - any bracket character can belong at most to one pair, the earliest possible one + // - any bracket character not part of a pair is treated like an ordinary character + // - pairs may nest properly, but their spans may not overlap otherwise + + // Bracket characters with canonical decompositions are supposed to be + // treated as if they had been normalized, to allow normalized and non- + // normalized text to give the same result. In this implementation that step + // is pushed out to the caller. The caller has to ensure that the pairValue + // slices contain the rune of the opening bracket after normalization for + // any opening or closing bracket. + + openers *list.List // list of positions for opening brackets + + // bracket pair positions sorted by location of opening bracket + pairPositions bracketPairs + + codesIsolatedRun []Class // directional bidi codes for an isolated run + indexes []int // array of index values into the original string + +} + +// matchOpener reports whether characters at given positions form a matching +// bracket pair. +func (p *bracketPairer) matchOpener(pairValues []rune, opener, closer int) bool { + return pairValues[p.indexes[opener]] == pairValues[p.indexes[closer]] +} + +// locateBrackets locates matching bracket pairs according to BD16. +// +// This implementation uses a linked list instead of a stack, because, while +// elements are added at the front (like a push) they are not generally removed +// in atomic 'pop' operations, reducing the benefit of the stack archetype. +func (p *bracketPairer) locateBrackets(pairTypes []bracketType, pairValues []rune) { + // traverse the run + // do that explicitly (not in a for-each) so we can record position + for i, index := range p.indexes { + + // look at the bracket type for each character + switch pairTypes[index] { + case bpNone: + // continue scanning + + case bpOpen: + // remember opener location, most recent first + p.openers.PushFront(i) + + case bpClose: + // see if there is a match + count := 0 + for elem := p.openers.Front(); elem != nil; elem = elem.Next() { + count++ + opener := elem.Value.(int) + if p.matchOpener(pairValues, opener, i) { + // if the opener matches, add nested pair to the ordered list + p.pairPositions = append(p.pairPositions, bracketPair{opener, i}) + // remove up to and including matched opener + for ; count > 0; count-- { + p.openers.Remove(p.openers.Front()) + } + break + } + } + sort.Sort(p.pairPositions) + // if we get here, the closing bracket matched no openers + // and gets ignored + } + } +} + +// Bracket pairs within an isolating run sequence are processed as units so +// that both the opening and the closing paired bracket in a pair resolve to +// the same direction. +// +// N0. Process bracket pairs in an isolating run sequence sequentially in +// the logical order of the text positions of the opening paired brackets +// using the logic given below. Within this scope, bidirectional types EN +// and AN are treated as R. +// +// Identify the bracket pairs in the current isolating run sequence +// according to BD16. For each bracket-pair element in the list of pairs of +// text positions: +// +// a Inspect the bidirectional types of the characters enclosed within the +// bracket pair. +// +// b If any strong type (either L or R) matching the embedding direction is +// found, set the type for both brackets in the pair to match the embedding +// direction. +// +// o [ e ] o -> o e e e o +// +// o [ o e ] -> o e o e e +// +// o [ NI e ] -> o e NI e e +// +// c Otherwise, if a strong type (opposite the embedding direction) is +// found, test for adjacent strong types as follows: 1 First, check +// backwards before the opening paired bracket until the first strong type +// (L, R, or sos) is found. If that first preceding strong type is opposite +// the embedding direction, then set the type for both brackets in the pair +// to that type. 2 Otherwise, set the type for both brackets in the pair to +// the embedding direction. +// +// o [ o ] e -> o o o o e +// +// o [ o NI ] o -> o o o NI o o +// +// e [ o ] o -> e e o e o +// +// e [ o ] e -> e e o e e +// +// e ( o [ o ] NI ) e -> e e o o o o NI e e +// +// d Otherwise, do not set the type for the current bracket pair. Note that +// if the enclosed text contains no strong types the paired brackets will +// both resolve to the same level when resolved individually using rules N1 +// and N2. +// +// e ( NI ) o -> e ( NI ) o + +// getStrongTypeN0 maps character's directional code to strong type as required +// by rule N0. +// +// TODO: have separate type for "strong" directionality. +func (p *bracketPairer) getStrongTypeN0(index int) Class { + switch p.codesIsolatedRun[index] { + // in the scope of N0, number types are treated as R + case EN, AN, AL, R: + return R + case L: + return L + default: + return ON + } +} + +// classifyPairContent reports the strong types contained inside a Bracket Pair, +// assuming the given embedding direction. +// +// It returns ON if no strong type is found. If a single strong type is found, +// it returns this this type. Otherwise it returns the embedding direction. +// +// TODO: use separate type for "strong" directionality. +func (p *bracketPairer) classifyPairContent(loc bracketPair, dirEmbed Class) Class { + dirOpposite := ON + for i := loc.opener + 1; i < loc.closer; i++ { + dir := p.getStrongTypeN0(i) + if dir == ON { + continue + } + if dir == dirEmbed { + return dir // type matching embedding direction found + } + dirOpposite = dir + } + // return ON if no strong type found, or class opposite to dirEmbed + return dirOpposite +} + +// classBeforePair determines which strong types are present before a Bracket +// Pair. Return R or L if strong type found, otherwise ON. +func (p *bracketPairer) classBeforePair(loc bracketPair) Class { + for i := loc.opener - 1; i >= 0; i-- { + if dir := p.getStrongTypeN0(i); dir != ON { + return dir + } + } + // no strong types found, return sos + return p.sos +} + +// assignBracketType implements rule N0 for a single bracket pair. +func (p *bracketPairer) assignBracketType(loc bracketPair, dirEmbed Class) { + // rule "N0, a", inspect contents of pair + dirPair := p.classifyPairContent(loc, dirEmbed) + + // dirPair is now L, R, or N (no strong type found) + + // the following logical tests are performed out of order compared to + // the statement of the rules but yield the same results + if dirPair == ON { + return // case "d" - nothing to do + } + + if dirPair != dirEmbed { + // case "c": strong type found, opposite - check before (c.1) + dirPair = p.classBeforePair(loc) + if dirPair == dirEmbed || dirPair == ON { + // no strong opposite type found before - use embedding (c.2) + dirPair = dirEmbed + } + } + // else: case "b", strong type found matching embedding, + // no explicit action needed, as dirPair is already set to embedding + // direction + + // set the bracket types to the type found + p.codesIsolatedRun[loc.opener] = dirPair + p.codesIsolatedRun[loc.closer] = dirPair +} + +// resolveBrackets implements rule N0 for a list of pairs. +func (p *bracketPairer) resolveBrackets(dirEmbed Class) { + for _, loc := range p.pairPositions { + p.assignBracketType(loc, dirEmbed) + } +} diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go new file mode 100644 index 0000000000..381f30ad0a --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/core.go @@ -0,0 +1,1055 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bidi + +import "log" + +// This implementation is a port based on the reference implementation found at: +// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/ +// +// described in Unicode Bidirectional Algorithm (UAX #9). +// +// Input: +// There are two levels of input to the algorithm, since clients may prefer to +// supply some information from out-of-band sources rather than relying on the +// default behavior. +// +// - Bidi class array +// - Bidi class array, with externally supplied base line direction +// +// Output: +// Output is separated into several stages: +// +// - levels array over entire paragraph +// - reordering array over entire paragraph +// - levels array over line +// - reordering array over line +// +// Note that for conformance to the Unicode Bidirectional Algorithm, +// implementations are only required to generate correct reordering and +// character directionality (odd or even levels) over a line. Generating +// identical level arrays over a line is not required. Bidi explicit format +// codes (LRE, RLE, LRO, RLO, PDF) and BN can be assigned arbitrary levels and +// positions as long as the rest of the input is properly reordered. +// +// As the algorithm is defined to operate on a single paragraph at a time, this +// implementation is written to handle single paragraphs. Thus rule P1 is +// presumed by this implementation-- the data provided to the implementation is +// assumed to be a single paragraph, and either contains no 'B' codes, or a +// single 'B' code at the end of the input. 'B' is allowed as input to +// illustrate how the algorithm assigns it a level. +// +// Also note that rules L3 and L4 depend on the rendering engine that uses the +// result of the bidi algorithm. This implementation assumes that the rendering +// engine expects combining marks in visual order (e.g. to the left of their +// base character in RTL runs) and that it adjusts the glyphs used to render +// mirrored characters that are in RTL runs so that they render appropriately. + +// level is the embedding level of a character. Even embedding levels indicate +// left-to-right order and odd levels indicate right-to-left order. The special +// level of -1 is reserved for undefined order. +type level int8 + +const implicitLevel level = -1 + +// in returns if x is equal to any of the values in set. +func (c Class) in(set ...Class) bool { + for _, s := range set { + if c == s { + return true + } + } + return false +} + +// A paragraph contains the state of a paragraph. +type paragraph struct { + initialTypes []Class + + // Arrays of properties needed for paired bracket evaluation in N0 + pairTypes []bracketType // paired Bracket types for paragraph + pairValues []rune // rune for opening bracket or pbOpen and pbClose; 0 for pbNone + + embeddingLevel level // default: = implicitLevel; + + // at the paragraph levels + resultTypes []Class + resultLevels []level + + // Index of matching PDI for isolate initiator characters. For other + // characters, the value of matchingPDI will be set to -1. For isolate + // initiators with no matching PDI, matchingPDI will be set to the length of + // the input string. + matchingPDI []int + + // Index of matching isolate initiator for PDI characters. For other + // characters, and for PDIs with no matching isolate initiator, the value of + // matchingIsolateInitiator will be set to -1. + matchingIsolateInitiator []int +} + +// newParagraph initializes a paragraph. The user needs to supply a few arrays +// corresponding to the preprocessed text input. The types correspond to the +// Unicode BiDi classes for each rune. pairTypes indicates the bracket type for +// each rune. pairValues provides a unique bracket class identifier for each +// rune (suggested is the rune of the open bracket for opening and matching +// close brackets, after normalization). The embedding levels are optional, but +// may be supplied to encode embedding levels of styled text. +// +// TODO: return an error. +func newParagraph(types []Class, pairTypes []bracketType, pairValues []rune, levels level) *paragraph { + validateTypes(types) + validatePbTypes(pairTypes) + validatePbValues(pairValues, pairTypes) + validateParagraphEmbeddingLevel(levels) + + p := ¶graph{ + initialTypes: append([]Class(nil), types...), + embeddingLevel: levels, + + pairTypes: pairTypes, + pairValues: pairValues, + + resultTypes: append([]Class(nil), types...), + } + p.run() + return p +} + +func (p *paragraph) Len() int { return len(p.initialTypes) } + +// The algorithm. Does not include line-based processing (Rules L1, L2). +// These are applied later in the line-based phase of the algorithm. +func (p *paragraph) run() { + p.determineMatchingIsolates() + + // 1) determining the paragraph level + // Rule P1 is the requirement for entering this algorithm. + // Rules P2, P3. + // If no externally supplied paragraph embedding level, use default. + if p.embeddingLevel == implicitLevel { + p.embeddingLevel = p.determineParagraphEmbeddingLevel(0, p.Len()) + } + + // Initialize result levels to paragraph embedding level. + p.resultLevels = make([]level, p.Len()) + setLevels(p.resultLevels, p.embeddingLevel) + + // 2) Explicit levels and directions + // Rules X1-X8. + p.determineExplicitEmbeddingLevels() + + // Rule X9. + // We do not remove the embeddings, the overrides, the PDFs, and the BNs + // from the string explicitly. But they are not copied into isolating run + // sequences when they are created, so they are removed for all + // practical purposes. + + // Rule X10. + // Run remainder of algorithm one isolating run sequence at a time + for _, seq := range p.determineIsolatingRunSequences() { + // 3) resolving weak types + // Rules W1-W7. + seq.resolveWeakTypes() + + // 4a) resolving paired brackets + // Rule N0 + resolvePairedBrackets(seq) + + // 4b) resolving neutral types + // Rules N1-N3. + seq.resolveNeutralTypes() + + // 5) resolving implicit embedding levels + // Rules I1, I2. + seq.resolveImplicitLevels() + + // Apply the computed levels and types + seq.applyLevelsAndTypes() + } + + // Assign appropriate levels to 'hide' LREs, RLEs, LROs, RLOs, PDFs, and + // BNs. This is for convenience, so the resulting level array will have + // a value for every character. + p.assignLevelsToCharactersRemovedByX9() +} + +// determineMatchingIsolates determines the matching PDI for each isolate +// initiator and vice versa. +// +// Definition BD9. +// +// At the end of this function: +// +// - The member variable matchingPDI is set to point to the index of the +// matching PDI character for each isolate initiator character. If there is +// no matching PDI, it is set to the length of the input text. For other +// characters, it is set to -1. +// - The member variable matchingIsolateInitiator is set to point to the +// index of the matching isolate initiator character for each PDI character. +// If there is no matching isolate initiator, or the character is not a PDI, +// it is set to -1. +func (p *paragraph) determineMatchingIsolates() { + p.matchingPDI = make([]int, p.Len()) + p.matchingIsolateInitiator = make([]int, p.Len()) + + for i := range p.matchingIsolateInitiator { + p.matchingIsolateInitiator[i] = -1 + } + + for i := range p.matchingPDI { + p.matchingPDI[i] = -1 + + if t := p.resultTypes[i]; t.in(LRI, RLI, FSI) { + depthCounter := 1 + for j := i + 1; j < p.Len(); j++ { + if u := p.resultTypes[j]; u.in(LRI, RLI, FSI) { + depthCounter++ + } else if u == PDI { + if depthCounter--; depthCounter == 0 { + p.matchingPDI[i] = j + p.matchingIsolateInitiator[j] = i + break + } + } + } + if p.matchingPDI[i] == -1 { + p.matchingPDI[i] = p.Len() + } + } + } +} + +// determineParagraphEmbeddingLevel reports the resolved paragraph direction of +// the substring limited by the given range [start, end). +// +// Determines the paragraph level based on rules P2, P3. This is also used +// in rule X5c to find if an FSI should resolve to LRI or RLI. +func (p *paragraph) determineParagraphEmbeddingLevel(start, end int) level { + var strongType Class = unknownClass + + // Rule P2. + for i := start; i < end; i++ { + if t := p.resultTypes[i]; t.in(L, AL, R) { + strongType = t + break + } else if t.in(FSI, LRI, RLI) { + i = p.matchingPDI[i] // skip over to the matching PDI + if i > end { + log.Panic("assert (i <= end)") + } + } + } + // Rule P3. + switch strongType { + case unknownClass: // none found + // default embedding level when no strong types found is 0. + return 0 + case L: + return 0 + default: // AL, R + return 1 + } +} + +const maxDepth = 125 + +// This stack will store the embedding levels and override and isolated +// statuses +type directionalStatusStack struct { + stackCounter int + embeddingLevelStack [maxDepth + 1]level + overrideStatusStack [maxDepth + 1]Class + isolateStatusStack [maxDepth + 1]bool +} + +func (s *directionalStatusStack) empty() { s.stackCounter = 0 } +func (s *directionalStatusStack) pop() { s.stackCounter-- } +func (s *directionalStatusStack) depth() int { return s.stackCounter } + +func (s *directionalStatusStack) push(level level, overrideStatus Class, isolateStatus bool) { + s.embeddingLevelStack[s.stackCounter] = level + s.overrideStatusStack[s.stackCounter] = overrideStatus + s.isolateStatusStack[s.stackCounter] = isolateStatus + s.stackCounter++ +} + +func (s *directionalStatusStack) lastEmbeddingLevel() level { + return s.embeddingLevelStack[s.stackCounter-1] +} + +func (s *directionalStatusStack) lastDirectionalOverrideStatus() Class { + return s.overrideStatusStack[s.stackCounter-1] +} + +func (s *directionalStatusStack) lastDirectionalIsolateStatus() bool { + return s.isolateStatusStack[s.stackCounter-1] +} + +// Determine explicit levels using rules X1 - X8 +func (p *paragraph) determineExplicitEmbeddingLevels() { + var stack directionalStatusStack + var overflowIsolateCount, overflowEmbeddingCount, validIsolateCount int + + // Rule X1. + stack.push(p.embeddingLevel, ON, false) + + for i, t := range p.resultTypes { + // Rules X2, X3, X4, X5, X5a, X5b, X5c + switch t { + case RLE, LRE, RLO, LRO, RLI, LRI, FSI: + isIsolate := t.in(RLI, LRI, FSI) + isRTL := t.in(RLE, RLO, RLI) + + // override if this is an FSI that resolves to RLI + if t == FSI { + isRTL = (p.determineParagraphEmbeddingLevel(i+1, p.matchingPDI[i]) == 1) + } + if isIsolate { + p.resultLevels[i] = stack.lastEmbeddingLevel() + } + + var newLevel level + if isRTL { + // least greater odd + newLevel = (stack.lastEmbeddingLevel() + 1) | 1 + } else { + // least greater even + newLevel = (stack.lastEmbeddingLevel() + 2) &^ 1 + } + + if newLevel <= maxDepth && overflowIsolateCount == 0 && overflowEmbeddingCount == 0 { + if isIsolate { + validIsolateCount++ + } + // Push new embedding level, override status, and isolated + // status. + // No check for valid stack counter, since the level check + // suffices. + switch t { + case LRO: + stack.push(newLevel, L, isIsolate) + case RLO: + stack.push(newLevel, R, isIsolate) + default: + stack.push(newLevel, ON, isIsolate) + } + // Not really part of the spec + if !isIsolate { + p.resultLevels[i] = newLevel + } + } else { + // This is an invalid explicit formatting character, + // so apply the "Otherwise" part of rules X2-X5b. + if isIsolate { + overflowIsolateCount++ + } else { // !isIsolate + if overflowIsolateCount == 0 { + overflowEmbeddingCount++ + } + } + } + + // Rule X6a + case PDI: + if overflowIsolateCount > 0 { + overflowIsolateCount-- + } else if validIsolateCount == 0 { + // do nothing + } else { + overflowEmbeddingCount = 0 + for !stack.lastDirectionalIsolateStatus() { + stack.pop() + } + stack.pop() + validIsolateCount-- + } + p.resultLevels[i] = stack.lastEmbeddingLevel() + + // Rule X7 + case PDF: + // Not really part of the spec + p.resultLevels[i] = stack.lastEmbeddingLevel() + + if overflowIsolateCount > 0 { + // do nothing + } else if overflowEmbeddingCount > 0 { + overflowEmbeddingCount-- + } else if !stack.lastDirectionalIsolateStatus() && stack.depth() >= 2 { + stack.pop() + } + + case B: // paragraph separator. + // Rule X8. + + // These values are reset for clarity, in this implementation B + // can only occur as the last code in the array. + stack.empty() + overflowIsolateCount = 0 + overflowEmbeddingCount = 0 + validIsolateCount = 0 + p.resultLevels[i] = p.embeddingLevel + + default: + p.resultLevels[i] = stack.lastEmbeddingLevel() + if stack.lastDirectionalOverrideStatus() != ON { + p.resultTypes[i] = stack.lastDirectionalOverrideStatus() + } + } + } +} + +type isolatingRunSequence struct { + p *paragraph + + indexes []int // indexes to the original string + + types []Class // type of each character using the index + resolvedLevels []level // resolved levels after application of rules + level level + sos, eos Class +} + +func (i *isolatingRunSequence) Len() int { return len(i.indexes) } + +func maxLevel(a, b level) level { + if a > b { + return a + } + return b +} + +// Rule X10, second bullet: Determine the start-of-sequence (sos) and end-of-sequence (eos) types, +// either L or R, for each isolating run sequence. +func (p *paragraph) isolatingRunSequence(indexes []int) *isolatingRunSequence { + length := len(indexes) + types := make([]Class, length) + for i, x := range indexes { + types[i] = p.resultTypes[x] + } + + // assign level, sos and eos + prevChar := indexes[0] - 1 + for prevChar >= 0 && isRemovedByX9(p.initialTypes[prevChar]) { + prevChar-- + } + prevLevel := p.embeddingLevel + if prevChar >= 0 { + prevLevel = p.resultLevels[prevChar] + } + + var succLevel level + lastType := types[length-1] + if lastType.in(LRI, RLI, FSI) { + succLevel = p.embeddingLevel + } else { + // the first character after the end of run sequence + limit := indexes[length-1] + 1 + for ; limit < p.Len() && isRemovedByX9(p.initialTypes[limit]); limit++ { + + } + succLevel = p.embeddingLevel + if limit < p.Len() { + succLevel = p.resultLevels[limit] + } + } + level := p.resultLevels[indexes[0]] + return &isolatingRunSequence{ + p: p, + indexes: indexes, + types: types, + level: level, + sos: typeForLevel(maxLevel(prevLevel, level)), + eos: typeForLevel(maxLevel(succLevel, level)), + } +} + +// Resolving weak types Rules W1-W7. +// +// Note that some weak types (EN, AN) remain after this processing is +// complete. +func (s *isolatingRunSequence) resolveWeakTypes() { + + // on entry, only these types remain + s.assertOnly(L, R, AL, EN, ES, ET, AN, CS, B, S, WS, ON, NSM, LRI, RLI, FSI, PDI) + + // Rule W1. + // Changes all NSMs. + preceedingCharacterType := s.sos + for i, t := range s.types { + if t == NSM { + s.types[i] = preceedingCharacterType + } else { + if t.in(LRI, RLI, FSI, PDI) { + preceedingCharacterType = ON + } + preceedingCharacterType = t + } + } + + // Rule W2. + // EN does not change at the start of the run, because sos != AL. + for i, t := range s.types { + if t == EN { + for j := i - 1; j >= 0; j-- { + if t := s.types[j]; t.in(L, R, AL) { + if t == AL { + s.types[i] = AN + } + break + } + } + } + } + + // Rule W3. + for i, t := range s.types { + if t == AL { + s.types[i] = R + } + } + + // Rule W4. + // Since there must be values on both sides for this rule to have an + // effect, the scan skips the first and last value. + // + // Although the scan proceeds left to right, and changes the type + // values in a way that would appear to affect the computations + // later in the scan, there is actually no problem. A change in the + // current value can only affect the value to its immediate right, + // and only affect it if it is ES or CS. But the current value can + // only change if the value to its right is not ES or CS. Thus + // either the current value will not change, or its change will have + // no effect on the remainder of the analysis. + + for i := 1; i < s.Len()-1; i++ { + t := s.types[i] + if t == ES || t == CS { + prevSepType := s.types[i-1] + succSepType := s.types[i+1] + if prevSepType == EN && succSepType == EN { + s.types[i] = EN + } else if s.types[i] == CS && prevSepType == AN && succSepType == AN { + s.types[i] = AN + } + } + } + + // Rule W5. + for i, t := range s.types { + if t == ET { + // locate end of sequence + runStart := i + runEnd := s.findRunLimit(runStart, ET) + + // check values at ends of sequence + t := s.sos + if runStart > 0 { + t = s.types[runStart-1] + } + if t != EN { + t = s.eos + if runEnd < len(s.types) { + t = s.types[runEnd] + } + } + if t == EN { + setTypes(s.types[runStart:runEnd], EN) + } + // continue at end of sequence + i = runEnd + } + } + + // Rule W6. + for i, t := range s.types { + if t.in(ES, ET, CS) { + s.types[i] = ON + } + } + + // Rule W7. + for i, t := range s.types { + if t == EN { + // set default if we reach start of run + prevStrongType := s.sos + for j := i - 1; j >= 0; j-- { + t = s.types[j] + if t == L || t == R { // AL's have been changed to R + prevStrongType = t + break + } + } + if prevStrongType == L { + s.types[i] = L + } + } + } +} + +// 6) resolving neutral types Rules N1-N2. +func (s *isolatingRunSequence) resolveNeutralTypes() { + + // on entry, only these types can be in resultTypes + s.assertOnly(L, R, EN, AN, B, S, WS, ON, RLI, LRI, FSI, PDI) + + for i, t := range s.types { + switch t { + case WS, ON, B, S, RLI, LRI, FSI, PDI: + // find bounds of run of neutrals + runStart := i + runEnd := s.findRunLimit(runStart, B, S, WS, ON, RLI, LRI, FSI, PDI) + + // determine effective types at ends of run + var leadType, trailType Class + + // Note that the character found can only be L, R, AN, or + // EN. + if runStart == 0 { + leadType = s.sos + } else { + leadType = s.types[runStart-1] + if leadType.in(AN, EN) { + leadType = R + } + } + if runEnd == len(s.types) { + trailType = s.eos + } else { + trailType = s.types[runEnd] + if trailType.in(AN, EN) { + trailType = R + } + } + + var resolvedType Class + if leadType == trailType { + // Rule N1. + resolvedType = leadType + } else { + // Rule N2. + // Notice the embedding level of the run is used, not + // the paragraph embedding level. + resolvedType = typeForLevel(s.level) + } + + setTypes(s.types[runStart:runEnd], resolvedType) + + // skip over run of (former) neutrals + i = runEnd + } + } +} + +func setLevels(levels []level, newLevel level) { + for i := range levels { + levels[i] = newLevel + } +} + +func setTypes(types []Class, newType Class) { + for i := range types { + types[i] = newType + } +} + +// 7) resolving implicit embedding levels Rules I1, I2. +func (s *isolatingRunSequence) resolveImplicitLevels() { + + // on entry, only these types can be in resultTypes + s.assertOnly(L, R, EN, AN) + + s.resolvedLevels = make([]level, len(s.types)) + setLevels(s.resolvedLevels, s.level) + + if (s.level & 1) == 0 { // even level + for i, t := range s.types { + // Rule I1. + if t == L { + // no change + } else if t == R { + s.resolvedLevels[i] += 1 + } else { // t == AN || t == EN + s.resolvedLevels[i] += 2 + } + } + } else { // odd level + for i, t := range s.types { + // Rule I2. + if t == R { + // no change + } else { // t == L || t == AN || t == EN + s.resolvedLevels[i] += 1 + } + } + } +} + +// Applies the levels and types resolved in rules W1-I2 to the +// resultLevels array. +func (s *isolatingRunSequence) applyLevelsAndTypes() { + for i, x := range s.indexes { + s.p.resultTypes[x] = s.types[i] + s.p.resultLevels[x] = s.resolvedLevels[i] + } +} + +// Return the limit of the run consisting only of the types in validSet +// starting at index. This checks the value at index, and will return +// index if that value is not in validSet. +func (s *isolatingRunSequence) findRunLimit(index int, validSet ...Class) int { +loop: + for ; index < len(s.types); index++ { + t := s.types[index] + for _, valid := range validSet { + if t == valid { + continue loop + } + } + return index // didn't find a match in validSet + } + return len(s.types) +} + +// Algorithm validation. Assert that all values in types are in the +// provided set. +func (s *isolatingRunSequence) assertOnly(codes ...Class) { +loop: + for i, t := range s.types { + for _, c := range codes { + if t == c { + continue loop + } + } + log.Panicf("invalid bidi code %s present in assertOnly at position %d", t, s.indexes[i]) + } +} + +// determineLevelRuns returns an array of level runs. Each level run is +// described as an array of indexes into the input string. +// +// Determines the level runs. Rule X9 will be applied in determining the +// runs, in the way that makes sure the characters that are supposed to be +// removed are not included in the runs. +func (p *paragraph) determineLevelRuns() [][]int { + run := []int{} + allRuns := [][]int{} + currentLevel := implicitLevel + + for i := range p.initialTypes { + if !isRemovedByX9(p.initialTypes[i]) { + if p.resultLevels[i] != currentLevel { + // we just encountered a new run; wrap up last run + if currentLevel >= 0 { // only wrap it up if there was a run + allRuns = append(allRuns, run) + run = nil + } + // Start new run + currentLevel = p.resultLevels[i] + } + run = append(run, i) + } + } + // Wrap up the final run, if any + if len(run) > 0 { + allRuns = append(allRuns, run) + } + return allRuns +} + +// Definition BD13. Determine isolating run sequences. +func (p *paragraph) determineIsolatingRunSequences() []*isolatingRunSequence { + levelRuns := p.determineLevelRuns() + + // Compute the run that each character belongs to + runForCharacter := make([]int, p.Len()) + for i, run := range levelRuns { + for _, index := range run { + runForCharacter[index] = i + } + } + + sequences := []*isolatingRunSequence{} + + var currentRunSequence []int + + for _, run := range levelRuns { + first := run[0] + if p.initialTypes[first] != PDI || p.matchingIsolateInitiator[first] == -1 { + currentRunSequence = nil + // int run = i; + for { + // Copy this level run into currentRunSequence + currentRunSequence = append(currentRunSequence, run...) + + last := currentRunSequence[len(currentRunSequence)-1] + lastT := p.initialTypes[last] + if lastT.in(LRI, RLI, FSI) && p.matchingPDI[last] != p.Len() { + run = levelRuns[runForCharacter[p.matchingPDI[last]]] + } else { + break + } + } + sequences = append(sequences, p.isolatingRunSequence(currentRunSequence)) + } + } + return sequences +} + +// Assign level information to characters removed by rule X9. This is for +// ease of relating the level information to the original input data. Note +// that the levels assigned to these codes are arbitrary, they're chosen so +// as to avoid breaking level runs. +func (p *paragraph) assignLevelsToCharactersRemovedByX9() { + for i, t := range p.initialTypes { + if t.in(LRE, RLE, LRO, RLO, PDF, BN) { + p.resultTypes[i] = t + p.resultLevels[i] = -1 + } + } + // now propagate forward the levels information (could have + // propagated backward, the main thing is not to introduce a level + // break where one doesn't already exist). + + if p.resultLevels[0] == -1 { + p.resultLevels[0] = p.embeddingLevel + } + for i := 1; i < len(p.initialTypes); i++ { + if p.resultLevels[i] == -1 { + p.resultLevels[i] = p.resultLevels[i-1] + } + } + // Embedding information is for informational purposes only so need not be + // adjusted. +} + +// +// Output +// + +// getLevels computes levels array breaking lines at offsets in linebreaks. +// Rule L1. +// +// The linebreaks array must include at least one value. The values must be +// in strictly increasing order (no duplicates) between 1 and the length of +// the text, inclusive. The last value must be the length of the text. +func (p *paragraph) getLevels(linebreaks []int) []level { + // Note that since the previous processing has removed all + // P, S, and WS values from resultTypes, the values referred to + // in these rules are the initial types, before any processing + // has been applied (including processing of overrides). + // + // This example implementation has reinserted explicit format codes + // and BN, in order that the levels array correspond to the + // initial text. Their final placement is not normative. + // These codes are treated like WS in this implementation, + // so they don't interrupt sequences of WS. + + validateLineBreaks(linebreaks, p.Len()) + + result := append([]level(nil), p.resultLevels...) + + // don't worry about linebreaks since if there is a break within + // a series of WS values preceding S, the linebreak itself + // causes the reset. + for i, t := range p.initialTypes { + if t.in(B, S) { + // Rule L1, clauses one and two. + result[i] = p.embeddingLevel + + // Rule L1, clause three. + for j := i - 1; j >= 0; j-- { + if isWhitespace(p.initialTypes[j]) { // including format codes + result[j] = p.embeddingLevel + } else { + break + } + } + } + } + + // Rule L1, clause four. + start := 0 + for _, limit := range linebreaks { + for j := limit - 1; j >= start; j-- { + if isWhitespace(p.initialTypes[j]) { // including format codes + result[j] = p.embeddingLevel + } else { + break + } + } + start = limit + } + + return result +} + +// getReordering returns the reordering of lines from a visual index to a +// logical index for line breaks at the given offsets. +// +// Lines are concatenated from left to right. So for example, the fifth +// character from the left on the third line is +// +// getReordering(linebreaks)[linebreaks[1] + 4] +// +// (linebreaks[1] is the position after the last character of the second +// line, which is also the index of the first character on the third line, +// and adding four gets the fifth character from the left). +// +// The linebreaks array must include at least one value. The values must be +// in strictly increasing order (no duplicates) between 1 and the length of +// the text, inclusive. The last value must be the length of the text. +func (p *paragraph) getReordering(linebreaks []int) []int { + validateLineBreaks(linebreaks, p.Len()) + + return computeMultilineReordering(p.getLevels(linebreaks), linebreaks) +} + +// Return multiline reordering array for a given level array. Reordering +// does not occur across a line break. +func computeMultilineReordering(levels []level, linebreaks []int) []int { + result := make([]int, len(levels)) + + start := 0 + for _, limit := range linebreaks { + tempLevels := make([]level, limit-start) + copy(tempLevels, levels[start:]) + + for j, order := range computeReordering(tempLevels) { + result[start+j] = order + start + } + start = limit + } + return result +} + +// Return reordering array for a given level array. This reorders a single +// line. The reordering is a visual to logical map. For example, the +// leftmost char is string.charAt(order[0]). Rule L2. +func computeReordering(levels []level) []int { + result := make([]int, len(levels)) + // initialize order + for i := range result { + result[i] = i + } + + // locate highest level found on line. + // Note the rules say text, but no reordering across line bounds is + // performed, so this is sufficient. + highestLevel := level(0) + lowestOddLevel := level(maxDepth + 2) + for _, level := range levels { + if level > highestLevel { + highestLevel = level + } + if level&1 != 0 && level < lowestOddLevel { + lowestOddLevel = level + } + } + + for level := highestLevel; level >= lowestOddLevel; level-- { + for i := 0; i < len(levels); i++ { + if levels[i] >= level { + // find range of text at or above this level + start := i + limit := i + 1 + for limit < len(levels) && levels[limit] >= level { + limit++ + } + + for j, k := start, limit-1; j < k; j, k = j+1, k-1 { + result[j], result[k] = result[k], result[j] + } + // skip to end of level run + i = limit + } + } + } + + return result +} + +// isWhitespace reports whether the type is considered a whitespace type for the +// line break rules. +func isWhitespace(c Class) bool { + switch c { + case LRE, RLE, LRO, RLO, PDF, LRI, RLI, FSI, PDI, BN, WS: + return true + } + return false +} + +// isRemovedByX9 reports whether the type is one of the types removed in X9. +func isRemovedByX9(c Class) bool { + switch c { + case LRE, RLE, LRO, RLO, PDF, BN: + return true + } + return false +} + +// typeForLevel reports the strong type (L or R) corresponding to the level. +func typeForLevel(level level) Class { + if (level & 0x1) == 0 { + return L + } + return R +} + +// TODO: change validation to not panic + +func validateTypes(types []Class) { + if len(types) == 0 { + log.Panic("types is null") + } + for i, t := range types[:len(types)-1] { + if t == B { + log.Panicf("B type before end of paragraph at index: %d", i) + } + } +} + +func validateParagraphEmbeddingLevel(embeddingLevel level) { + if embeddingLevel != implicitLevel && + embeddingLevel != 0 && + embeddingLevel != 1 { + log.Panicf("illegal paragraph embedding level: %d", embeddingLevel) + } +} + +func validateLineBreaks(linebreaks []int, textLength int) { + prev := 0 + for i, next := range linebreaks { + if next <= prev { + log.Panicf("bad linebreak: %d at index: %d", next, i) + } + prev = next + } + if prev != textLength { + log.Panicf("last linebreak was %d, want %d", prev, textLength) + } +} + +func validatePbTypes(pairTypes []bracketType) { + if len(pairTypes) == 0 { + log.Panic("pairTypes is null") + } + for i, pt := range pairTypes { + switch pt { + case bpNone, bpOpen, bpClose: + default: + log.Panicf("illegal pairType value at %d: %v", i, pairTypes[i]) + } + } +} + +func validatePbValues(pairValues []rune, pairTypes []bracketType) { + if pairValues == nil { + log.Panic("pairValues is null") + } + if len(pairTypes) != len(pairValues) { + log.Panic("pairTypes is different length from pairValues") + } +} diff --git a/vendor/golang.org/x/text/unicode/bidi/gen.go b/vendor/golang.org/x/text/unicode/bidi/gen.go new file mode 100644 index 0000000000..040f3013d5 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/gen.go @@ -0,0 +1,133 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +import ( + "flag" + "log" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" + "golang.org/x/text/internal/ucd" +) + +var outputFile = flag.String("out", "tables.go", "output file") + +func main() { + gen.Init() + gen.Repackage("gen_trieval.go", "trieval.go", "bidi") + gen.Repackage("gen_ranges.go", "ranges_test.go", "bidi") + + genTables() +} + +// bidiClass names and codes taken from class "bc" in +// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt +var bidiClass = map[string]Class{ + "AL": AL, // ArabicLetter + "AN": AN, // ArabicNumber + "B": B, // ParagraphSeparator + "BN": BN, // BoundaryNeutral + "CS": CS, // CommonSeparator + "EN": EN, // EuropeanNumber + "ES": ES, // EuropeanSeparator + "ET": ET, // EuropeanTerminator + "L": L, // LeftToRight + "NSM": NSM, // NonspacingMark + "ON": ON, // OtherNeutral + "R": R, // RightToLeft + "S": S, // SegmentSeparator + "WS": WS, // WhiteSpace + + "FSI": Control, + "PDF": Control, + "PDI": Control, + "LRE": Control, + "LRI": Control, + "LRO": Control, + "RLE": Control, + "RLI": Control, + "RLO": Control, +} + +func genTables() { + if numClass > 0x0F { + log.Fatalf("Too many Class constants (%#x > 0x0F).", numClass) + } + w := gen.NewCodeWriter() + defer w.WriteGoFile(*outputFile, "bidi") + + gen.WriteUnicodeVersion(w) + + t := triegen.NewTrie("bidi") + + // Build data about bracket mapping. These bits need to be or-ed with + // any other bits. + orMask := map[rune]uint64{} + + xorMap := map[rune]int{} + xorMasks := []rune{0} // First value is no-op. + + ucd.Parse(gen.OpenUCDFile("BidiBrackets.txt"), func(p *ucd.Parser) { + r1 := p.Rune(0) + r2 := p.Rune(1) + xor := r1 ^ r2 + if _, ok := xorMap[xor]; !ok { + xorMap[xor] = len(xorMasks) + xorMasks = append(xorMasks, xor) + } + entry := uint64(xorMap[xor]) << xorMaskShift + switch p.String(2) { + case "o": + entry |= openMask + case "c", "n": + default: + log.Fatalf("Unknown bracket class %q.", p.String(2)) + } + orMask[r1] = entry + }) + + w.WriteComment(` + xorMasks contains masks to be xor-ed with brackets to get the reverse + version.`) + w.WriteVar("xorMasks", xorMasks) + + done := map[rune]bool{} + + insert := func(r rune, c Class) { + if !done[r] { + t.Insert(r, orMask[r]|uint64(c)) + done[r] = true + } + } + + // Insert the derived BiDi properties. + ucd.Parse(gen.OpenUCDFile("extracted/DerivedBidiClass.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + class, ok := bidiClass[p.String(1)] + if !ok { + log.Fatalf("%U: Unknown BiDi class %q", r, p.String(1)) + } + insert(r, class) + }) + visitDefaults(insert) + + // TODO: use sparse blocks. This would reduce table size considerably + // from the looks of it. + + sz, err := t.Gen(w) + if err != nil { + log.Fatal(err) + } + w.Size += sz +} + +// dummy values to make methods in gen_common compile. The real versions +// will be generated by this file to tables.go. +var ( + xorMasks []rune +) diff --git a/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go b/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go new file mode 100644 index 0000000000..51bd68fa7f --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/gen_ranges.go @@ -0,0 +1,57 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +import ( + "unicode" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/ucd" + "golang.org/x/text/unicode/rangetable" +) + +// These tables are hand-extracted from: +// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt +func visitDefaults(fn func(r rune, c Class)) { + // first write default values for ranges listed above. + visitRunes(fn, AL, []rune{ + 0x0600, 0x07BF, // Arabic + 0x08A0, 0x08FF, // Arabic Extended-A + 0xFB50, 0xFDCF, // Arabic Presentation Forms + 0xFDF0, 0xFDFF, + 0xFE70, 0xFEFF, + 0x0001EE00, 0x0001EEFF, // Arabic Mathematical Alpha Symbols + }) + visitRunes(fn, R, []rune{ + 0x0590, 0x05FF, // Hebrew + 0x07C0, 0x089F, // Nko et al. + 0xFB1D, 0xFB4F, + 0x00010800, 0x00010FFF, // Cypriot Syllabary et. al. + 0x0001E800, 0x0001EDFF, + 0x0001EF00, 0x0001EFFF, + }) + visitRunes(fn, ET, []rune{ // European Terminator + 0x20A0, 0x20Cf, // Currency symbols + }) + rangetable.Visit(unicode.Noncharacter_Code_Point, func(r rune) { + fn(r, BN) // Boundary Neutral + }) + ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) { + if p.String(1) == "Default_Ignorable_Code_Point" { + fn(p.Rune(0), BN) // Boundary Neutral + } + }) +} + +func visitRunes(fn func(r rune, c Class), c Class, runes []rune) { + for i := 0; i < len(runes); i += 2 { + lo, hi := runes[i], runes[i+1] + for j := lo; j <= hi; j++ { + fn(j, c) + } + } +} diff --git a/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go b/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go new file mode 100644 index 0000000000..9cb9942894 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/gen_trieval.go @@ -0,0 +1,64 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// Class is the Unicode BiDi class. Each rune has a single class. +type Class uint + +const ( + L Class = iota // LeftToRight + R // RightToLeft + EN // EuropeanNumber + ES // EuropeanSeparator + ET // EuropeanTerminator + AN // ArabicNumber + CS // CommonSeparator + B // ParagraphSeparator + S // SegmentSeparator + WS // WhiteSpace + ON // OtherNeutral + BN // BoundaryNeutral + NSM // NonspacingMark + AL // ArabicLetter + Control // Control LRO - PDI + + numClass + + LRO // LeftToRightOverride + RLO // RightToLeftOverride + LRE // LeftToRightEmbedding + RLE // RightToLeftEmbedding + PDF // PopDirectionalFormat + LRI // LeftToRightIsolate + RLI // RightToLeftIsolate + FSI // FirstStrongIsolate + PDI // PopDirectionalIsolate + + unknownClass = ^Class(0) +) + +var controlToClass = map[rune]Class{ + 0x202D: LRO, // LeftToRightOverride, + 0x202E: RLO, // RightToLeftOverride, + 0x202A: LRE, // LeftToRightEmbedding, + 0x202B: RLE, // RightToLeftEmbedding, + 0x202C: PDF, // PopDirectionalFormat, + 0x2066: LRI, // LeftToRightIsolate, + 0x2067: RLI, // RightToLeftIsolate, + 0x2068: FSI, // FirstStrongIsolate, + 0x2069: PDI, // PopDirectionalIsolate, +} + +// A trie entry has the following bits: +// 7..5 XOR mask for brackets +// 4 1: Bracket open, 0: Bracket close +// 3..0 Class type + +const ( + openMask = 0x10 + xorMaskShift = 5 +) diff --git a/vendor/golang.org/x/text/unicode/bidi/prop.go b/vendor/golang.org/x/text/unicode/bidi/prop.go new file mode 100644 index 0000000000..7c9484e1f5 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/prop.go @@ -0,0 +1,206 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bidi + +import "unicode/utf8" + +// Properties provides access to BiDi properties of runes. +type Properties struct { + entry uint8 + last uint8 +} + +var trie = newBidiTrie(0) + +// TODO: using this for bidirule reduces the running time by about 5%. Consider +// if this is worth exposing or if we can find a way to speed up the Class +// method. +// +// // CompactClass is like Class, but maps all of the BiDi control classes +// // (LRO, RLO, LRE, RLE, PDF, LRI, RLI, FSI, PDI) to the class Control. +// func (p Properties) CompactClass() Class { +// return Class(p.entry & 0x0F) +// } + +// Class returns the Bidi class for p. +func (p Properties) Class() Class { + c := Class(p.entry & 0x0F) + if c == Control { + c = controlByteToClass[p.last&0xF] + } + return c +} + +// IsBracket reports whether the rune is a bracket. +func (p Properties) IsBracket() bool { return p.entry&0xF0 != 0 } + +// IsOpeningBracket reports whether the rune is an opening bracket. +// IsBracket must return true. +func (p Properties) IsOpeningBracket() bool { return p.entry&openMask != 0 } + +// TODO: find a better API and expose. +func (p Properties) reverseBracket(r rune) rune { + return xorMasks[p.entry>>xorMaskShift] ^ r +} + +var controlByteToClass = [16]Class{ + 0xD: LRO, // U+202D LeftToRightOverride, + 0xE: RLO, // U+202E RightToLeftOverride, + 0xA: LRE, // U+202A LeftToRightEmbedding, + 0xB: RLE, // U+202B RightToLeftEmbedding, + 0xC: PDF, // U+202C PopDirectionalFormat, + 0x6: LRI, // U+2066 LeftToRightIsolate, + 0x7: RLI, // U+2067 RightToLeftIsolate, + 0x8: FSI, // U+2068 FirstStrongIsolate, + 0x9: PDI, // U+2069 PopDirectionalIsolate, +} + +// LookupRune returns properties for r. +func LookupRune(r rune) (p Properties, size int) { + var buf [4]byte + n := utf8.EncodeRune(buf[:], r) + return Lookup(buf[:n]) +} + +// TODO: these lookup methods are based on the generated trie code. The returned +// sizes have slightly different semantics from the generated code, in that it +// always returns size==1 for an illegal UTF-8 byte (instead of the length +// of the maximum invalid subsequence). Most Transformers, like unicode/norm, +// leave invalid UTF-8 untouched, in which case it has performance benefits to +// do so (without changing the semantics). Bidi requires the semantics used here +// for the bidirule implementation to be compatible with the Go semantics. +// They ultimately should perhaps be adopted by all trie implementations, for +// convenience sake. +// This unrolled code also boosts performance of the secure/bidirule package by +// about 30%. +// So, to remove this code: +// - add option to trie generator to define return type. +// - always return 1 byte size for ill-formed UTF-8 runes. + +// Lookup returns properties for the first rune in s and the width in bytes of +// its encoding. The size will be 0 if s does not hold enough bytes to complete +// the encoding. +func Lookup(s []byte) (p Properties, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return Properties{entry: bidiValues[c0]}, 1 + case c0 < 0xC2: + return Properties{}, 1 + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c1)}, 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return Properties{}, 1 + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c3)}, 4 + } + // Illegal rune + return Properties{}, 1 +} + +// LookupString returns properties for the first rune in s and the width in +// bytes of its encoding. The size will be 0 if s does not hold enough bytes to +// complete the encoding. +func LookupString(s string) (p Properties, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return Properties{entry: bidiValues[c0]}, 1 + case c0 < 0xC2: + return Properties{}, 1 + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c1)}, 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c2), last: c2}, 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return Properties{}, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return Properties{}, 1 + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return Properties{}, 1 + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return Properties{}, 1 + } + return Properties{entry: trie.lookupValue(uint32(i), c3)}, 4 + } + // Illegal rune + return Properties{}, 1 +} diff --git a/vendor/golang.org/x/text/unicode/bidi/tables.go b/vendor/golang.org/x/text/unicode/bidi/tables.go new file mode 100644 index 0000000000..2d4dde07c5 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/tables.go @@ -0,0 +1,1779 @@ +// This file was generated by go generate; DO NOT EDIT + +package bidi + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +// xorMasks contains masks to be xor-ed with brackets to get the reverse +// version. +var xorMasks = []int32{ // 8 elements + 0, 1, 6, 7, 3, 15, 29, 63, +} // Size: 56 bytes + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookup(s []byte) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupUnsafe(s []byte) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookupString(s string) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupStringUnsafe(s string) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// bidiTrie. Total size: 15744 bytes (15.38 KiB). Checksum: b4c3b70954803b86. +type bidiTrie struct{} + +func newBidiTrie(i int) *bidiTrie { + return &bidiTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 { + switch { + default: + return uint8(bidiValues[n<<6+uint32(b)]) + } +} + +// bidiValues: 222 blocks, 14208 entries, 14208 bytes +// The third block is the zero block. +var bidiValues = [14208]uint8{ + // Block 0x0, offset 0x0 + 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b, + 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008, + 0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b, + 0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b, + 0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007, + 0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004, + 0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a, + 0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006, + 0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002, + 0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a, + 0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a, + // Block 0x1, offset 0x40 + 0x40: 0x000a, + 0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a, + 0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a, + 0x7b: 0x005a, + 0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007, + 0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b, + 0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b, + 0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b, + 0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b, + 0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004, + 0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a, + 0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a, + 0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a, + 0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a, + 0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a, + // Block 0x4, offset 0x100 + 0x117: 0x000a, + 0x137: 0x000a, + // Block 0x5, offset 0x140 + 0x179: 0x000a, 0x17a: 0x000a, + // Block 0x6, offset 0x180 + 0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a, + 0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a, + 0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a, + 0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a, + 0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a, + 0x19e: 0x000a, 0x19f: 0x000a, + 0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a, + 0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a, + 0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a, + 0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a, + 0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c, + 0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c, + 0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c, + 0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c, + 0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c, + 0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c, + 0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c, + 0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c, + 0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c, + 0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c, + 0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c, + // Block 0x8, offset 0x200 + 0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c, + 0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c, + 0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c, + 0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c, + 0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c, + 0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c, + 0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c, + 0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c, + 0x234: 0x000a, 0x235: 0x000a, + 0x23e: 0x000a, + // Block 0x9, offset 0x240 + 0x244: 0x000a, 0x245: 0x000a, + 0x247: 0x000a, + // Block 0xa, offset 0x280 + 0x2b6: 0x000a, + // Block 0xb, offset 0x2c0 + 0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c, + 0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c, + // Block 0xc, offset 0x300 + 0x30a: 0x000a, + 0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c, + 0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c, + 0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c, + 0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c, + 0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c, + 0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c, + 0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c, + 0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c, + 0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c, + // Block 0xd, offset 0x340 + 0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c, + 0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001, + 0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001, + 0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001, + 0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001, + 0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001, + 0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001, + 0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001, + 0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001, + 0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001, + 0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001, + // Block 0xe, offset 0x380 + 0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005, + 0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d, + 0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c, + 0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c, + 0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d, + 0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d, + 0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d, + 0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d, + 0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d, + 0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d, + 0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d, + 0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c, + 0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c, + 0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c, + 0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c, + 0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005, + 0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005, + 0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d, + 0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d, + 0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d, + 0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d, + // Block 0x10, offset 0x400 + 0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d, + 0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d, + 0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d, + 0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d, + 0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d, + 0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d, + 0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d, + 0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d, + 0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d, + 0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d, + 0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d, + // Block 0x11, offset 0x440 + 0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d, + 0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d, + 0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d, + 0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c, + 0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005, + 0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c, + 0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a, + 0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d, + 0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002, + 0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d, + 0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d, + // Block 0x12, offset 0x480 + 0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d, + 0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d, + 0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c, + 0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d, + 0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d, + 0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d, + 0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d, + 0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d, + 0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c, + 0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c, + 0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c, + 0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d, + 0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d, + 0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d, + 0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d, + 0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d, + 0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d, + 0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d, + 0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d, + 0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d, + 0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d, + // Block 0x14, offset 0x500 + 0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d, + 0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d, + 0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d, + 0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d, + 0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d, + 0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d, + 0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c, + 0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c, + 0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d, + 0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d, + 0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d, + // Block 0x15, offset 0x540 + 0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001, + 0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001, + 0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001, + 0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001, + 0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001, + 0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001, + 0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001, + 0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c, + 0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001, + 0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001, + 0x57c: 0x0001, 0x57d: 0x0001, 0x57e: 0x0001, 0x57f: 0x0001, + // Block 0x16, offset 0x580 + 0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001, + 0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001, + 0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001, + 0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c, + 0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c, + 0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c, + 0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c, + 0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001, + 0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001, + 0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001, + 0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001, + 0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001, + 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001, + 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001, + 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001, + 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x0001, 0x5e1: 0x0001, 0x5e2: 0x0001, 0x5e3: 0x0001, + 0x5e4: 0x0001, 0x5e5: 0x0001, 0x5e6: 0x0001, 0x5e7: 0x0001, 0x5e8: 0x0001, 0x5e9: 0x0001, + 0x5ea: 0x0001, 0x5eb: 0x0001, 0x5ec: 0x0001, 0x5ed: 0x0001, 0x5ee: 0x0001, 0x5ef: 0x0001, + 0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001, + 0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001, + 0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001, + // Block 0x18, offset 0x600 + 0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001, + 0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001, + 0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001, + 0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001, + 0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001, + 0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d, + 0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d, + 0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d, + 0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d, + 0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d, + 0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d, + // Block 0x19, offset 0x640 + 0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d, + 0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d, + 0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d, + 0x652: 0x000d, 0x653: 0x000d, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c, + 0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c, + 0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c, + 0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c, + 0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c, + 0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c, + 0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c, + 0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c, + // Block 0x1a, offset 0x680 + 0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c, + 0x6ba: 0x000c, + 0x6bc: 0x000c, + // Block 0x1b, offset 0x6c0 + 0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c, + 0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c, + 0x6cd: 0x000c, 0x6d1: 0x000c, + 0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c, + 0x6e2: 0x000c, 0x6e3: 0x000c, + // Block 0x1c, offset 0x700 + 0x701: 0x000c, + 0x73c: 0x000c, + // Block 0x1d, offset 0x740 + 0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c, + 0x74d: 0x000c, + 0x762: 0x000c, 0x763: 0x000c, + 0x772: 0x0004, 0x773: 0x0004, + 0x77b: 0x0004, + // Block 0x1e, offset 0x780 + 0x781: 0x000c, 0x782: 0x000c, + 0x7bc: 0x000c, + // Block 0x1f, offset 0x7c0 + 0x7c1: 0x000c, 0x7c2: 0x000c, + 0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c, + 0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c, + 0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c, + // Block 0x20, offset 0x800 + 0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c, + 0x807: 0x000c, 0x808: 0x000c, + 0x80d: 0x000c, + 0x822: 0x000c, 0x823: 0x000c, + 0x831: 0x0004, + // Block 0x21, offset 0x840 + 0x841: 0x000c, + 0x87c: 0x000c, 0x87f: 0x000c, + // Block 0x22, offset 0x880 + 0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c, + 0x88d: 0x000c, + 0x896: 0x000c, + 0x8a2: 0x000c, 0x8a3: 0x000c, + // Block 0x23, offset 0x8c0 + 0x8c2: 0x000c, + // Block 0x24, offset 0x900 + 0x900: 0x000c, + 0x90d: 0x000c, + 0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a, + 0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a, + // Block 0x25, offset 0x940 + 0x940: 0x000c, + 0x97e: 0x000c, 0x97f: 0x000c, + // Block 0x26, offset 0x980 + 0x980: 0x000c, + 0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c, + 0x98c: 0x000c, 0x98d: 0x000c, + 0x995: 0x000c, 0x996: 0x000c, + 0x9a2: 0x000c, 0x9a3: 0x000c, + 0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a, + 0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a, + // Block 0x27, offset 0x9c0 + 0x9cc: 0x000c, 0x9cd: 0x000c, + 0x9e2: 0x000c, 0x9e3: 0x000c, + // Block 0x28, offset 0xa00 + 0xa01: 0x000c, + // Block 0x29, offset 0xa40 + 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c, + 0xa4d: 0x000c, + 0xa62: 0x000c, 0xa63: 0x000c, + // Block 0x2a, offset 0xa80 + 0xa8a: 0x000c, + 0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c, + // Block 0x2b, offset 0xac0 + 0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c, + 0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c, + 0xaff: 0x0004, + // Block 0x2c, offset 0xb00 + 0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c, + 0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c, + // Block 0x2d, offset 0xb40 + 0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c, + 0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c, + 0xb7c: 0x000c, + // Block 0x2e, offset 0xb80 + 0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c, + 0xb8c: 0x000c, 0xb8d: 0x000c, + // Block 0x2f, offset 0xbc0 + 0xbd8: 0x000c, 0xbd9: 0x000c, + 0xbf5: 0x000c, + 0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a, + 0xbfc: 0x003a, 0xbfd: 0x002a, + // Block 0x30, offset 0xc00 + 0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c, + 0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c, + 0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c, + // Block 0x31, offset 0xc40 + 0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c, + 0xc46: 0x000c, 0xc47: 0x000c, + 0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c, + 0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c, + 0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c, + 0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c, + 0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c, + 0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c, + 0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c, + 0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c, + 0xc7c: 0x000c, + // Block 0x32, offset 0xc80 + 0xc86: 0x000c, + // Block 0x33, offset 0xcc0 + 0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c, + 0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c, + 0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c, + 0xcfd: 0x000c, 0xcfe: 0x000c, + // Block 0x34, offset 0xd00 + 0xd18: 0x000c, 0xd19: 0x000c, + 0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c, + 0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, + // Block 0x35, offset 0xd40 + 0xd42: 0x000c, 0xd45: 0x000c, + 0xd46: 0x000c, + 0xd4d: 0x000c, + 0xd5d: 0x000c, + // Block 0x36, offset 0xd80 + 0xd9d: 0x000c, + 0xd9e: 0x000c, 0xd9f: 0x000c, + // Block 0x37, offset 0xdc0 + 0xdd0: 0x000a, 0xdd1: 0x000a, + 0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a, + 0xdd8: 0x000a, 0xdd9: 0x000a, + // Block 0x38, offset 0xe00 + 0xe00: 0x000a, + // Block 0x39, offset 0xe40 + 0xe40: 0x0009, + 0xe5b: 0x007a, 0xe5c: 0x006a, + // Block 0x3a, offset 0xe80 + 0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c, + 0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c, + // Block 0x3b, offset 0xec0 + 0xed2: 0x000c, 0xed3: 0x000c, + 0xef2: 0x000c, 0xef3: 0x000c, + // Block 0x3c, offset 0xf00 + 0xf34: 0x000c, 0xf35: 0x000c, + 0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c, + 0xf3c: 0x000c, 0xf3d: 0x000c, + // Block 0x3d, offset 0xf40 + 0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c, + 0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c, + 0xf52: 0x000c, 0xf53: 0x000c, + 0xf5b: 0x0004, 0xf5d: 0x000c, + 0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a, + 0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a, + // Block 0x3e, offset 0xf80 + 0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a, + 0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c, + 0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b, + // Block 0x3f, offset 0xfc0 + 0xfc5: 0x000c, + 0xfc6: 0x000c, + 0xfe9: 0x000c, + // Block 0x40, offset 0x1000 + 0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c, + 0x1027: 0x000c, 0x1028: 0x000c, + 0x1032: 0x000c, + 0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c, + // Block 0x41, offset 0x1040 + 0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a, + // Block 0x42, offset 0x1080 + 0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a, + 0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a, + 0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a, + 0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a, + 0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a, + 0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a, + // Block 0x43, offset 0x10c0 + 0x10d7: 0x000c, + 0x10d8: 0x000c, 0x10db: 0x000c, + // Block 0x44, offset 0x1100 + 0x1116: 0x000c, + 0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c, + 0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c, + 0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c, + 0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c, + 0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c, + 0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c, + 0x113c: 0x000c, 0x113f: 0x000c, + // Block 0x45, offset 0x1140 + 0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c, + 0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c, + 0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c, + // Block 0x46, offset 0x1180 + 0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c, + 0x11b4: 0x000c, + 0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, + 0x11bc: 0x000c, + // Block 0x47, offset 0x11c0 + 0x11c2: 0x000c, + 0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c, + 0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c, + // Block 0x48, offset 0x1200 + 0x1200: 0x000c, 0x1201: 0x000c, + 0x1222: 0x000c, 0x1223: 0x000c, + 0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c, + 0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c, + // Block 0x49, offset 0x1240 + 0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c, + 0x126d: 0x000c, 0x126f: 0x000c, + 0x1270: 0x000c, 0x1271: 0x000c, + // Block 0x4a, offset 0x1280 + 0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c, + 0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c, + 0x12b6: 0x000c, 0x12b7: 0x000c, + // Block 0x4b, offset 0x12c0 + 0x12d0: 0x000c, 0x12d1: 0x000c, + 0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c, + 0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c, + 0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c, + 0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c, + 0x12ed: 0x000c, + 0x12f4: 0x000c, + 0x12f8: 0x000c, 0x12f9: 0x000c, + // Block 0x4c, offset 0x1300 + 0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c, + 0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c, + 0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c, + 0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c, + 0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c, + 0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c, + 0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c, + 0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c, + 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c, + 0x133b: 0x000c, + 0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c, + // Block 0x4d, offset 0x1340 + 0x137d: 0x000a, 0x137f: 0x000a, + // Block 0x4e, offset 0x1380 + 0x1380: 0x000a, 0x1381: 0x000a, + 0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a, + 0x139d: 0x000a, + 0x139e: 0x000a, 0x139f: 0x000a, + 0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a, + 0x13bd: 0x000a, 0x13be: 0x000a, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009, + 0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b, + 0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a, + 0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a, + 0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a, + 0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a, + 0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007, + 0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006, + 0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a, + 0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a, + 0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a, + // Block 0x50, offset 0x1400 + 0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a, + 0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a, + 0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a, + 0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a, + 0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a, + 0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b, + 0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e, + 0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b, + 0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002, + 0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003, + 0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a, + // Block 0x51, offset 0x1440 + 0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002, + 0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003, + 0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a, + 0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004, + 0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004, + 0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004, + 0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004, + 0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004, + 0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004, + // Block 0x52, offset 0x1480 + 0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004, + 0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004, + 0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c, + 0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c, + 0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c, + 0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c, + 0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c, + 0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c, + 0x14b0: 0x000c, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a, + 0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a, + 0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a, + 0x14d8: 0x000a, + 0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a, + 0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a, + 0x14ee: 0x0004, + 0x14fa: 0x000a, 0x14fb: 0x000a, + // Block 0x54, offset 0x1500 + 0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, + 0x150a: 0x000a, 0x150b: 0x000a, + 0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a, + 0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a, + 0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a, + 0x151e: 0x000a, 0x151f: 0x000a, + // Block 0x55, offset 0x1540 + 0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a, + 0x1550: 0x000a, 0x1551: 0x000a, + 0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a, + 0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a, + 0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a, + 0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a, + 0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a, + 0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a, + 0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a, + 0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a, + // Block 0x56, offset 0x1580 + 0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a, + 0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a, + 0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a, + 0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a, + 0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a, + 0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a, + 0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a, + 0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a, + 0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a, + 0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a, + 0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a, + 0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a, + 0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a, + 0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a, + 0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a, + 0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a, + 0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a, + 0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a, + 0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a, + 0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a, + 0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a, + // Block 0x58, offset 0x1600 + 0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a, + 0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a, + 0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a, + 0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a, + 0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a, + 0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a, + 0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a, + 0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a, + 0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a, + // Block 0x59, offset 0x1640 + 0x167b: 0x000a, + 0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a, + // Block 0x5a, offset 0x1680 + 0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a, + 0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a, + 0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a, + 0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a, + 0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a, + 0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a, + 0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a, + 0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a, + 0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a, + 0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a, + 0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a, + 0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a, + 0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a, + 0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a, + 0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a, + 0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a, + 0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, 0x16e7: 0x000a, 0x16e8: 0x000a, 0x16e9: 0x000a, + 0x16ea: 0x000a, 0x16eb: 0x000a, 0x16ec: 0x000a, 0x16ed: 0x000a, 0x16ee: 0x000a, 0x16ef: 0x000a, + 0x16f0: 0x000a, 0x16f1: 0x000a, 0x16f2: 0x000a, 0x16f3: 0x000a, 0x16f4: 0x000a, 0x16f5: 0x000a, + 0x16f6: 0x000a, 0x16f7: 0x000a, 0x16f8: 0x000a, 0x16f9: 0x000a, 0x16fa: 0x000a, 0x16fb: 0x000a, + 0x16fc: 0x000a, 0x16fd: 0x000a, 0x16fe: 0x000a, + // Block 0x5c, offset 0x1700 + 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a, + 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, 0x170b: 0x000a, + 0x170c: 0x000a, 0x170d: 0x000a, 0x170e: 0x000a, 0x170f: 0x000a, 0x1710: 0x000a, 0x1711: 0x000a, + 0x1712: 0x000a, 0x1713: 0x000a, 0x1714: 0x000a, 0x1715: 0x000a, 0x1716: 0x000a, 0x1717: 0x000a, + 0x1718: 0x000a, 0x1719: 0x000a, 0x171a: 0x000a, 0x171b: 0x000a, 0x171c: 0x000a, 0x171d: 0x000a, + 0x171e: 0x000a, 0x171f: 0x000a, 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, + 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, + // Block 0x5d, offset 0x1740 + 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a, + 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x000a, 0x1749: 0x000a, 0x174a: 0x000a, + 0x1760: 0x000a, 0x1761: 0x000a, 0x1762: 0x000a, 0x1763: 0x000a, + 0x1764: 0x000a, 0x1765: 0x000a, 0x1766: 0x000a, 0x1767: 0x000a, 0x1768: 0x000a, 0x1769: 0x000a, + 0x176a: 0x000a, 0x176b: 0x000a, 0x176c: 0x000a, 0x176d: 0x000a, 0x176e: 0x000a, 0x176f: 0x000a, + 0x1770: 0x000a, 0x1771: 0x000a, 0x1772: 0x000a, 0x1773: 0x000a, 0x1774: 0x000a, 0x1775: 0x000a, + 0x1776: 0x000a, 0x1777: 0x000a, 0x1778: 0x000a, 0x1779: 0x000a, 0x177a: 0x000a, 0x177b: 0x000a, + 0x177c: 0x000a, 0x177d: 0x000a, 0x177e: 0x000a, 0x177f: 0x000a, + // Block 0x5e, offset 0x1780 + 0x1780: 0x000a, 0x1781: 0x000a, 0x1782: 0x000a, 0x1783: 0x000a, 0x1784: 0x000a, 0x1785: 0x000a, + 0x1786: 0x000a, 0x1787: 0x000a, 0x1788: 0x0002, 0x1789: 0x0002, 0x178a: 0x0002, 0x178b: 0x0002, + 0x178c: 0x0002, 0x178d: 0x0002, 0x178e: 0x0002, 0x178f: 0x0002, 0x1790: 0x0002, 0x1791: 0x0002, + 0x1792: 0x0002, 0x1793: 0x0002, 0x1794: 0x0002, 0x1795: 0x0002, 0x1796: 0x0002, 0x1797: 0x0002, + 0x1798: 0x0002, 0x1799: 0x0002, 0x179a: 0x0002, 0x179b: 0x0002, + // Block 0x5f, offset 0x17c0 + 0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ec: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a, + 0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a, + 0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a, + 0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a, + // Block 0x60, offset 0x1800 + 0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a, + 0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a, + 0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a, + 0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a, + 0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a, + 0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a, + 0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x000a, 0x1829: 0x000a, + 0x182a: 0x000a, 0x182b: 0x000a, 0x182d: 0x000a, 0x182e: 0x000a, 0x182f: 0x000a, + 0x1830: 0x000a, 0x1831: 0x000a, 0x1832: 0x000a, 0x1833: 0x000a, 0x1834: 0x000a, 0x1835: 0x000a, + 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a, + 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a, + // Block 0x61, offset 0x1840 + 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x000a, + 0x1846: 0x000a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, + 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a, + 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a, + 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a, + 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a, + 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x000a, 0x1867: 0x000a, 0x1868: 0x003a, 0x1869: 0x002a, + 0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a, + 0x1870: 0x003a, 0x1871: 0x002a, 0x1872: 0x003a, 0x1873: 0x002a, 0x1874: 0x003a, 0x1875: 0x002a, + 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a, + 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a, + // Block 0x62, offset 0x1880 + 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x000a, 0x1884: 0x000a, 0x1885: 0x009a, + 0x1886: 0x008a, 0x1887: 0x000a, 0x1888: 0x000a, 0x1889: 0x000a, 0x188a: 0x000a, 0x188b: 0x000a, + 0x188c: 0x000a, 0x188d: 0x000a, 0x188e: 0x000a, 0x188f: 0x000a, 0x1890: 0x000a, 0x1891: 0x000a, + 0x1892: 0x000a, 0x1893: 0x000a, 0x1894: 0x000a, 0x1895: 0x000a, 0x1896: 0x000a, 0x1897: 0x000a, + 0x1898: 0x000a, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, + 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a, + 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x003a, 0x18a7: 0x002a, 0x18a8: 0x003a, 0x18a9: 0x002a, + 0x18aa: 0x003a, 0x18ab: 0x002a, 0x18ac: 0x003a, 0x18ad: 0x002a, 0x18ae: 0x003a, 0x18af: 0x002a, + 0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a, + 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a, + 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x007a, 0x18c4: 0x006a, 0x18c5: 0x009a, + 0x18c6: 0x008a, 0x18c7: 0x00ba, 0x18c8: 0x00aa, 0x18c9: 0x009a, 0x18ca: 0x008a, 0x18cb: 0x007a, + 0x18cc: 0x006a, 0x18cd: 0x00da, 0x18ce: 0x002a, 0x18cf: 0x003a, 0x18d0: 0x00ca, 0x18d1: 0x009a, + 0x18d2: 0x008a, 0x18d3: 0x007a, 0x18d4: 0x006a, 0x18d5: 0x009a, 0x18d6: 0x008a, 0x18d7: 0x00ba, + 0x18d8: 0x00aa, 0x18d9: 0x000a, 0x18da: 0x000a, 0x18db: 0x000a, 0x18dc: 0x000a, 0x18dd: 0x000a, + 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a, + 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a, + 0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a, + 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a, + 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a, + 0x18fc: 0x000a, 0x18fd: 0x000a, 0x18fe: 0x000a, 0x18ff: 0x000a, + // Block 0x64, offset 0x1900 + 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a, + 0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a, + 0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a, + 0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a, + 0x1918: 0x003a, 0x1919: 0x002a, 0x191a: 0x003a, 0x191b: 0x002a, 0x191c: 0x000a, 0x191d: 0x000a, + 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a, + 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a, + 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a, + 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, 0x1934: 0x000a, 0x1935: 0x000a, + 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a, + 0x193c: 0x003a, 0x193d: 0x002a, 0x193e: 0x000a, 0x193f: 0x000a, + // Block 0x65, offset 0x1940 + 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a, + 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a, + 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a, + 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, 0x1956: 0x000a, 0x1957: 0x000a, + 0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a, + 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a, + 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a, + 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a, + 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, + 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a, + 0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a, + // Block 0x66, offset 0x1980 + 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a, + 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x1989: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, + 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a, + 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, + 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a, + 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a, + 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a, + 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, + 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a, + 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, + 0x19bd: 0x000a, 0x19be: 0x000a, 0x19bf: 0x000a, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x000a, 0x19c1: 0x000a, 0x19c2: 0x000a, 0x19c3: 0x000a, 0x19c4: 0x000a, 0x19c5: 0x000a, + 0x19c6: 0x000a, 0x19c7: 0x000a, 0x19c8: 0x000a, 0x19ca: 0x000a, 0x19cb: 0x000a, + 0x19cc: 0x000a, 0x19cd: 0x000a, 0x19ce: 0x000a, 0x19cf: 0x000a, 0x19d0: 0x000a, 0x19d1: 0x000a, + 0x19ec: 0x000a, 0x19ed: 0x000a, 0x19ee: 0x000a, 0x19ef: 0x000a, + // Block 0x68, offset 0x1a00 + 0x1a25: 0x000a, 0x1a26: 0x000a, 0x1a27: 0x000a, 0x1a28: 0x000a, 0x1a29: 0x000a, + 0x1a2a: 0x000a, 0x1a2f: 0x000c, + 0x1a30: 0x000c, 0x1a31: 0x000c, + 0x1a39: 0x000a, 0x1a3a: 0x000a, 0x1a3b: 0x000a, + 0x1a3c: 0x000a, 0x1a3d: 0x000a, 0x1a3e: 0x000a, 0x1a3f: 0x000a, + // Block 0x69, offset 0x1a40 + 0x1a7f: 0x000c, + // Block 0x6a, offset 0x1a80 + 0x1aa0: 0x000c, 0x1aa1: 0x000c, 0x1aa2: 0x000c, 0x1aa3: 0x000c, + 0x1aa4: 0x000c, 0x1aa5: 0x000c, 0x1aa6: 0x000c, 0x1aa7: 0x000c, 0x1aa8: 0x000c, 0x1aa9: 0x000c, + 0x1aaa: 0x000c, 0x1aab: 0x000c, 0x1aac: 0x000c, 0x1aad: 0x000c, 0x1aae: 0x000c, 0x1aaf: 0x000c, + 0x1ab0: 0x000c, 0x1ab1: 0x000c, 0x1ab2: 0x000c, 0x1ab3: 0x000c, 0x1ab4: 0x000c, 0x1ab5: 0x000c, + 0x1ab6: 0x000c, 0x1ab7: 0x000c, 0x1ab8: 0x000c, 0x1ab9: 0x000c, 0x1aba: 0x000c, 0x1abb: 0x000c, + 0x1abc: 0x000c, 0x1abd: 0x000c, 0x1abe: 0x000c, 0x1abf: 0x000c, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a, + 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a, + 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, 0x1acf: 0x000a, 0x1ad0: 0x000a, 0x1ad1: 0x000a, + 0x1ad2: 0x000a, 0x1ad3: 0x000a, 0x1ad4: 0x000a, 0x1ad5: 0x000a, 0x1ad6: 0x000a, 0x1ad7: 0x000a, + 0x1ad8: 0x000a, 0x1ad9: 0x000a, 0x1ada: 0x000a, 0x1adb: 0x000a, 0x1adc: 0x000a, 0x1add: 0x000a, + 0x1ade: 0x000a, 0x1adf: 0x000a, 0x1ae0: 0x000a, 0x1ae1: 0x000a, 0x1ae2: 0x003a, 0x1ae3: 0x002a, + 0x1ae4: 0x003a, 0x1ae5: 0x002a, 0x1ae6: 0x003a, 0x1ae7: 0x002a, 0x1ae8: 0x003a, 0x1ae9: 0x002a, + 0x1aea: 0x000a, 0x1aeb: 0x000a, 0x1aec: 0x000a, 0x1aed: 0x000a, 0x1aee: 0x000a, 0x1aef: 0x000a, + 0x1af0: 0x000a, 0x1af1: 0x000a, 0x1af2: 0x000a, 0x1af3: 0x000a, 0x1af4: 0x000a, 0x1af5: 0x000a, + 0x1af6: 0x000a, 0x1af7: 0x000a, 0x1af8: 0x000a, 0x1af9: 0x000a, 0x1afa: 0x000a, 0x1afb: 0x000a, + 0x1afc: 0x000a, 0x1afd: 0x000a, 0x1afe: 0x000a, 0x1aff: 0x000a, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a, + 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a, + 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a, + 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a, + 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, + 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a, + 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a, + 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a, + 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, 0x1b74: 0x000a, 0x1b75: 0x000a, + 0x1b76: 0x000a, 0x1b77: 0x000a, 0x1b78: 0x000a, 0x1b79: 0x000a, 0x1b7a: 0x000a, 0x1b7b: 0x000a, + 0x1b7c: 0x000a, 0x1b7d: 0x000a, 0x1b7e: 0x000a, 0x1b7f: 0x000a, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a, + 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a, + 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a, + 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, 0x1b96: 0x000a, 0x1b97: 0x000a, + 0x1b98: 0x000a, 0x1b99: 0x000a, 0x1b9a: 0x000a, 0x1b9b: 0x000a, 0x1b9c: 0x000a, 0x1b9d: 0x000a, + 0x1b9e: 0x000a, 0x1b9f: 0x000a, 0x1ba0: 0x000a, 0x1ba1: 0x000a, 0x1ba2: 0x000a, 0x1ba3: 0x000a, + 0x1ba4: 0x000a, 0x1ba5: 0x000a, 0x1ba6: 0x000a, 0x1ba7: 0x000a, 0x1ba8: 0x000a, 0x1ba9: 0x000a, + 0x1baa: 0x000a, 0x1bab: 0x000a, 0x1bac: 0x000a, 0x1bad: 0x000a, 0x1bae: 0x000a, 0x1baf: 0x000a, + 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x000a, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, 0x1bc5: 0x000a, + 0x1bc6: 0x000a, 0x1bc7: 0x000a, 0x1bc8: 0x000a, 0x1bc9: 0x000a, 0x1bca: 0x000a, 0x1bcb: 0x000a, + 0x1bcc: 0x000a, 0x1bcd: 0x000a, 0x1bce: 0x000a, 0x1bcf: 0x000a, 0x1bd0: 0x000a, 0x1bd1: 0x000a, + 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x000a, 0x1bd5: 0x000a, + 0x1bf0: 0x000a, 0x1bf1: 0x000a, 0x1bf2: 0x000a, 0x1bf3: 0x000a, 0x1bf4: 0x000a, 0x1bf5: 0x000a, + 0x1bf6: 0x000a, 0x1bf7: 0x000a, 0x1bf8: 0x000a, 0x1bf9: 0x000a, 0x1bfa: 0x000a, 0x1bfb: 0x000a, + // Block 0x70, offset 0x1c00 + 0x1c00: 0x0009, 0x1c01: 0x000a, 0x1c02: 0x000a, 0x1c03: 0x000a, 0x1c04: 0x000a, + 0x1c08: 0x003a, 0x1c09: 0x002a, 0x1c0a: 0x003a, 0x1c0b: 0x002a, + 0x1c0c: 0x003a, 0x1c0d: 0x002a, 0x1c0e: 0x003a, 0x1c0f: 0x002a, 0x1c10: 0x003a, 0x1c11: 0x002a, + 0x1c12: 0x000a, 0x1c13: 0x000a, 0x1c14: 0x003a, 0x1c15: 0x002a, 0x1c16: 0x003a, 0x1c17: 0x002a, + 0x1c18: 0x003a, 0x1c19: 0x002a, 0x1c1a: 0x003a, 0x1c1b: 0x002a, 0x1c1c: 0x000a, 0x1c1d: 0x000a, + 0x1c1e: 0x000a, 0x1c1f: 0x000a, 0x1c20: 0x000a, + 0x1c2a: 0x000c, 0x1c2b: 0x000c, 0x1c2c: 0x000c, 0x1c2d: 0x000c, + 0x1c30: 0x000a, + 0x1c36: 0x000a, 0x1c37: 0x000a, + 0x1c3d: 0x000a, 0x1c3e: 0x000a, 0x1c3f: 0x000a, + // Block 0x71, offset 0x1c40 + 0x1c59: 0x000c, 0x1c5a: 0x000c, 0x1c5b: 0x000a, 0x1c5c: 0x000a, + 0x1c60: 0x000a, + // Block 0x72, offset 0x1c80 + 0x1cbb: 0x000a, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x000a, 0x1cc1: 0x000a, 0x1cc2: 0x000a, 0x1cc3: 0x000a, 0x1cc4: 0x000a, 0x1cc5: 0x000a, + 0x1cc6: 0x000a, 0x1cc7: 0x000a, 0x1cc8: 0x000a, 0x1cc9: 0x000a, 0x1cca: 0x000a, 0x1ccb: 0x000a, + 0x1ccc: 0x000a, 0x1ccd: 0x000a, 0x1cce: 0x000a, 0x1ccf: 0x000a, 0x1cd0: 0x000a, 0x1cd1: 0x000a, + 0x1cd2: 0x000a, 0x1cd3: 0x000a, 0x1cd4: 0x000a, 0x1cd5: 0x000a, 0x1cd6: 0x000a, 0x1cd7: 0x000a, + 0x1cd8: 0x000a, 0x1cd9: 0x000a, 0x1cda: 0x000a, 0x1cdb: 0x000a, 0x1cdc: 0x000a, 0x1cdd: 0x000a, + 0x1cde: 0x000a, 0x1cdf: 0x000a, 0x1ce0: 0x000a, 0x1ce1: 0x000a, 0x1ce2: 0x000a, 0x1ce3: 0x000a, + // Block 0x74, offset 0x1d00 + 0x1d1d: 0x000a, + 0x1d1e: 0x000a, + // Block 0x75, offset 0x1d40 + 0x1d50: 0x000a, 0x1d51: 0x000a, + 0x1d52: 0x000a, 0x1d53: 0x000a, 0x1d54: 0x000a, 0x1d55: 0x000a, 0x1d56: 0x000a, 0x1d57: 0x000a, + 0x1d58: 0x000a, 0x1d59: 0x000a, 0x1d5a: 0x000a, 0x1d5b: 0x000a, 0x1d5c: 0x000a, 0x1d5d: 0x000a, + 0x1d5e: 0x000a, 0x1d5f: 0x000a, + 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, + // Block 0x76, offset 0x1d80 + 0x1db1: 0x000a, 0x1db2: 0x000a, 0x1db3: 0x000a, 0x1db4: 0x000a, 0x1db5: 0x000a, + 0x1db6: 0x000a, 0x1db7: 0x000a, 0x1db8: 0x000a, 0x1db9: 0x000a, 0x1dba: 0x000a, 0x1dbb: 0x000a, + 0x1dbc: 0x000a, 0x1dbd: 0x000a, 0x1dbe: 0x000a, 0x1dbf: 0x000a, + // Block 0x77, offset 0x1dc0 + 0x1dcc: 0x000a, 0x1dcd: 0x000a, 0x1dce: 0x000a, 0x1dcf: 0x000a, + // Block 0x78, offset 0x1e00 + 0x1e37: 0x000a, 0x1e38: 0x000a, 0x1e39: 0x000a, 0x1e3a: 0x000a, + // Block 0x79, offset 0x1e40 + 0x1e5e: 0x000a, 0x1e5f: 0x000a, + 0x1e7f: 0x000a, + // Block 0x7a, offset 0x1e80 + 0x1e90: 0x000a, 0x1e91: 0x000a, + 0x1e92: 0x000a, 0x1e93: 0x000a, 0x1e94: 0x000a, 0x1e95: 0x000a, 0x1e96: 0x000a, 0x1e97: 0x000a, + 0x1e98: 0x000a, 0x1e99: 0x000a, 0x1e9a: 0x000a, 0x1e9b: 0x000a, 0x1e9c: 0x000a, 0x1e9d: 0x000a, + 0x1e9e: 0x000a, 0x1e9f: 0x000a, 0x1ea0: 0x000a, 0x1ea1: 0x000a, 0x1ea2: 0x000a, 0x1ea3: 0x000a, + 0x1ea4: 0x000a, 0x1ea5: 0x000a, 0x1ea6: 0x000a, 0x1ea7: 0x000a, 0x1ea8: 0x000a, 0x1ea9: 0x000a, + 0x1eaa: 0x000a, 0x1eab: 0x000a, 0x1eac: 0x000a, 0x1ead: 0x000a, 0x1eae: 0x000a, 0x1eaf: 0x000a, + 0x1eb0: 0x000a, 0x1eb1: 0x000a, 0x1eb2: 0x000a, 0x1eb3: 0x000a, 0x1eb4: 0x000a, 0x1eb5: 0x000a, + 0x1eb6: 0x000a, 0x1eb7: 0x000a, 0x1eb8: 0x000a, 0x1eb9: 0x000a, 0x1eba: 0x000a, 0x1ebb: 0x000a, + 0x1ebc: 0x000a, 0x1ebd: 0x000a, 0x1ebe: 0x000a, 0x1ebf: 0x000a, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0x000a, 0x1ec1: 0x000a, 0x1ec2: 0x000a, 0x1ec3: 0x000a, 0x1ec4: 0x000a, 0x1ec5: 0x000a, + 0x1ec6: 0x000a, + // Block 0x7c, offset 0x1f00 + 0x1f0d: 0x000a, 0x1f0e: 0x000a, 0x1f0f: 0x000a, + // Block 0x7d, offset 0x1f40 + 0x1f6f: 0x000c, + 0x1f70: 0x000c, 0x1f71: 0x000c, 0x1f72: 0x000c, 0x1f73: 0x000a, 0x1f74: 0x000c, 0x1f75: 0x000c, + 0x1f76: 0x000c, 0x1f77: 0x000c, 0x1f78: 0x000c, 0x1f79: 0x000c, 0x1f7a: 0x000c, 0x1f7b: 0x000c, + 0x1f7c: 0x000c, 0x1f7d: 0x000c, 0x1f7e: 0x000a, 0x1f7f: 0x000a, + // Block 0x7e, offset 0x1f80 + 0x1f9e: 0x000c, 0x1f9f: 0x000c, + // Block 0x7f, offset 0x1fc0 + 0x1ff0: 0x000c, 0x1ff1: 0x000c, + // Block 0x80, offset 0x2000 + 0x2000: 0x000a, 0x2001: 0x000a, 0x2002: 0x000a, 0x2003: 0x000a, 0x2004: 0x000a, 0x2005: 0x000a, + 0x2006: 0x000a, 0x2007: 0x000a, 0x2008: 0x000a, 0x2009: 0x000a, 0x200a: 0x000a, 0x200b: 0x000a, + 0x200c: 0x000a, 0x200d: 0x000a, 0x200e: 0x000a, 0x200f: 0x000a, 0x2010: 0x000a, 0x2011: 0x000a, + 0x2012: 0x000a, 0x2013: 0x000a, 0x2014: 0x000a, 0x2015: 0x000a, 0x2016: 0x000a, 0x2017: 0x000a, + 0x2018: 0x000a, 0x2019: 0x000a, 0x201a: 0x000a, 0x201b: 0x000a, 0x201c: 0x000a, 0x201d: 0x000a, + 0x201e: 0x000a, 0x201f: 0x000a, 0x2020: 0x000a, 0x2021: 0x000a, + // Block 0x81, offset 0x2040 + 0x2048: 0x000a, + // Block 0x82, offset 0x2080 + 0x2082: 0x000c, + 0x2086: 0x000c, 0x208b: 0x000c, + 0x20a5: 0x000c, 0x20a6: 0x000c, 0x20a8: 0x000a, 0x20a9: 0x000a, + 0x20aa: 0x000a, 0x20ab: 0x000a, + 0x20b8: 0x0004, 0x20b9: 0x0004, + // Block 0x83, offset 0x20c0 + 0x20f4: 0x000a, 0x20f5: 0x000a, + 0x20f6: 0x000a, 0x20f7: 0x000a, + // Block 0x84, offset 0x2100 + 0x2104: 0x000c, 0x2105: 0x000c, + 0x2120: 0x000c, 0x2121: 0x000c, 0x2122: 0x000c, 0x2123: 0x000c, + 0x2124: 0x000c, 0x2125: 0x000c, 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, + 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, 0x212e: 0x000c, 0x212f: 0x000c, + 0x2130: 0x000c, 0x2131: 0x000c, + // Block 0x85, offset 0x2140 + 0x2166: 0x000c, 0x2167: 0x000c, 0x2168: 0x000c, 0x2169: 0x000c, + 0x216a: 0x000c, 0x216b: 0x000c, 0x216c: 0x000c, 0x216d: 0x000c, + // Block 0x86, offset 0x2180 + 0x2187: 0x000c, 0x2188: 0x000c, 0x2189: 0x000c, 0x218a: 0x000c, 0x218b: 0x000c, + 0x218c: 0x000c, 0x218d: 0x000c, 0x218e: 0x000c, 0x218f: 0x000c, 0x2190: 0x000c, 0x2191: 0x000c, + // Block 0x87, offset 0x21c0 + 0x21c0: 0x000c, 0x21c1: 0x000c, 0x21c2: 0x000c, + 0x21f3: 0x000c, + 0x21f6: 0x000c, 0x21f7: 0x000c, 0x21f8: 0x000c, 0x21f9: 0x000c, + 0x21fc: 0x000c, + // Block 0x88, offset 0x2200 + 0x2225: 0x000c, + // Block 0x89, offset 0x2240 + 0x2269: 0x000c, + 0x226a: 0x000c, 0x226b: 0x000c, 0x226c: 0x000c, 0x226d: 0x000c, 0x226e: 0x000c, + 0x2271: 0x000c, 0x2272: 0x000c, 0x2275: 0x000c, + 0x2276: 0x000c, + // Block 0x8a, offset 0x2280 + 0x2283: 0x000c, + 0x228c: 0x000c, + 0x22bc: 0x000c, + // Block 0x8b, offset 0x22c0 + 0x22f0: 0x000c, 0x22f2: 0x000c, 0x22f3: 0x000c, 0x22f4: 0x000c, + 0x22f7: 0x000c, 0x22f8: 0x000c, + 0x22fe: 0x000c, 0x22ff: 0x000c, + // Block 0x8c, offset 0x2300 + 0x2301: 0x000c, + 0x232c: 0x000c, 0x232d: 0x000c, + 0x2336: 0x000c, + // Block 0x8d, offset 0x2340 + 0x2365: 0x000c, 0x2368: 0x000c, + 0x236d: 0x000c, + // Block 0x8e, offset 0x2380 + 0x239d: 0x0001, + 0x239e: 0x000c, 0x239f: 0x0001, 0x23a0: 0x0001, 0x23a1: 0x0001, 0x23a2: 0x0001, 0x23a3: 0x0001, + 0x23a4: 0x0001, 0x23a5: 0x0001, 0x23a6: 0x0001, 0x23a7: 0x0001, 0x23a8: 0x0001, 0x23a9: 0x0003, + 0x23aa: 0x0001, 0x23ab: 0x0001, 0x23ac: 0x0001, 0x23ad: 0x0001, 0x23ae: 0x0001, 0x23af: 0x0001, + 0x23b0: 0x0001, 0x23b1: 0x0001, 0x23b2: 0x0001, 0x23b3: 0x0001, 0x23b4: 0x0001, 0x23b5: 0x0001, + 0x23b6: 0x0001, 0x23b7: 0x0001, 0x23b8: 0x0001, 0x23b9: 0x0001, 0x23ba: 0x0001, 0x23bb: 0x0001, + 0x23bc: 0x0001, 0x23bd: 0x0001, 0x23be: 0x0001, 0x23bf: 0x0001, + // Block 0x8f, offset 0x23c0 + 0x23c0: 0x0001, 0x23c1: 0x0001, 0x23c2: 0x0001, 0x23c3: 0x0001, 0x23c4: 0x0001, 0x23c5: 0x0001, + 0x23c6: 0x0001, 0x23c7: 0x0001, 0x23c8: 0x0001, 0x23c9: 0x0001, 0x23ca: 0x0001, 0x23cb: 0x0001, + 0x23cc: 0x0001, 0x23cd: 0x0001, 0x23ce: 0x0001, 0x23cf: 0x0001, 0x23d0: 0x000d, 0x23d1: 0x000d, + 0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d, + 0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d, + 0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d, + 0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d, + 0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d, + 0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d, + 0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d, + 0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000d, 0x23ff: 0x000d, + // Block 0x90, offset 0x2400 + 0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d, + 0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d, + 0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000d, 0x2411: 0x000d, + 0x2412: 0x000d, 0x2413: 0x000d, 0x2414: 0x000d, 0x2415: 0x000d, 0x2416: 0x000d, 0x2417: 0x000d, + 0x2418: 0x000d, 0x2419: 0x000d, 0x241a: 0x000d, 0x241b: 0x000d, 0x241c: 0x000d, 0x241d: 0x000d, + 0x241e: 0x000d, 0x241f: 0x000d, 0x2420: 0x000d, 0x2421: 0x000d, 0x2422: 0x000d, 0x2423: 0x000d, + 0x2424: 0x000d, 0x2425: 0x000d, 0x2426: 0x000d, 0x2427: 0x000d, 0x2428: 0x000d, 0x2429: 0x000d, + 0x242a: 0x000d, 0x242b: 0x000d, 0x242c: 0x000d, 0x242d: 0x000d, 0x242e: 0x000d, 0x242f: 0x000d, + 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d, + 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d, + 0x243c: 0x000d, 0x243d: 0x000d, 0x243e: 0x000a, 0x243f: 0x000a, + // Block 0x91, offset 0x2440 + 0x2440: 0x000d, 0x2441: 0x000d, 0x2442: 0x000d, 0x2443: 0x000d, 0x2444: 0x000d, 0x2445: 0x000d, + 0x2446: 0x000d, 0x2447: 0x000d, 0x2448: 0x000d, 0x2449: 0x000d, 0x244a: 0x000d, 0x244b: 0x000d, + 0x244c: 0x000d, 0x244d: 0x000d, 0x244e: 0x000d, 0x244f: 0x000d, 0x2450: 0x000b, 0x2451: 0x000b, + 0x2452: 0x000b, 0x2453: 0x000b, 0x2454: 0x000b, 0x2455: 0x000b, 0x2456: 0x000b, 0x2457: 0x000b, + 0x2458: 0x000b, 0x2459: 0x000b, 0x245a: 0x000b, 0x245b: 0x000b, 0x245c: 0x000b, 0x245d: 0x000b, + 0x245e: 0x000b, 0x245f: 0x000b, 0x2460: 0x000b, 0x2461: 0x000b, 0x2462: 0x000b, 0x2463: 0x000b, + 0x2464: 0x000b, 0x2465: 0x000b, 0x2466: 0x000b, 0x2467: 0x000b, 0x2468: 0x000b, 0x2469: 0x000b, + 0x246a: 0x000b, 0x246b: 0x000b, 0x246c: 0x000b, 0x246d: 0x000b, 0x246e: 0x000b, 0x246f: 0x000b, + 0x2470: 0x000d, 0x2471: 0x000d, 0x2472: 0x000d, 0x2473: 0x000d, 0x2474: 0x000d, 0x2475: 0x000d, + 0x2476: 0x000d, 0x2477: 0x000d, 0x2478: 0x000d, 0x2479: 0x000d, 0x247a: 0x000d, 0x247b: 0x000d, + 0x247c: 0x000d, 0x247d: 0x000a, 0x247e: 0x000d, 0x247f: 0x000d, + // Block 0x92, offset 0x2480 + 0x2480: 0x000c, 0x2481: 0x000c, 0x2482: 0x000c, 0x2483: 0x000c, 0x2484: 0x000c, 0x2485: 0x000c, + 0x2486: 0x000c, 0x2487: 0x000c, 0x2488: 0x000c, 0x2489: 0x000c, 0x248a: 0x000c, 0x248b: 0x000c, + 0x248c: 0x000c, 0x248d: 0x000c, 0x248e: 0x000c, 0x248f: 0x000c, 0x2490: 0x000a, 0x2491: 0x000a, + 0x2492: 0x000a, 0x2493: 0x000a, 0x2494: 0x000a, 0x2495: 0x000a, 0x2496: 0x000a, 0x2497: 0x000a, + 0x2498: 0x000a, 0x2499: 0x000a, + 0x24a0: 0x000c, 0x24a1: 0x000c, 0x24a2: 0x000c, 0x24a3: 0x000c, + 0x24a4: 0x000c, 0x24a5: 0x000c, 0x24a6: 0x000c, 0x24a7: 0x000c, 0x24a8: 0x000c, 0x24a9: 0x000c, + 0x24aa: 0x000c, 0x24ab: 0x000c, 0x24ac: 0x000c, 0x24ad: 0x000c, 0x24ae: 0x000c, 0x24af: 0x000c, + 0x24b0: 0x000a, 0x24b1: 0x000a, 0x24b2: 0x000a, 0x24b3: 0x000a, 0x24b4: 0x000a, 0x24b5: 0x000a, + 0x24b6: 0x000a, 0x24b7: 0x000a, 0x24b8: 0x000a, 0x24b9: 0x000a, 0x24ba: 0x000a, 0x24bb: 0x000a, + 0x24bc: 0x000a, 0x24bd: 0x000a, 0x24be: 0x000a, 0x24bf: 0x000a, + // Block 0x93, offset 0x24c0 + 0x24c0: 0x000a, 0x24c1: 0x000a, 0x24c2: 0x000a, 0x24c3: 0x000a, 0x24c4: 0x000a, 0x24c5: 0x000a, + 0x24c6: 0x000a, 0x24c7: 0x000a, 0x24c8: 0x000a, 0x24c9: 0x000a, 0x24ca: 0x000a, 0x24cb: 0x000a, + 0x24cc: 0x000a, 0x24cd: 0x000a, 0x24ce: 0x000a, 0x24cf: 0x000a, 0x24d0: 0x0006, 0x24d1: 0x000a, + 0x24d2: 0x0006, 0x24d4: 0x000a, 0x24d5: 0x0006, 0x24d6: 0x000a, 0x24d7: 0x000a, + 0x24d8: 0x000a, 0x24d9: 0x009a, 0x24da: 0x008a, 0x24db: 0x007a, 0x24dc: 0x006a, 0x24dd: 0x009a, + 0x24de: 0x008a, 0x24df: 0x0004, 0x24e0: 0x000a, 0x24e1: 0x000a, 0x24e2: 0x0003, 0x24e3: 0x0003, + 0x24e4: 0x000a, 0x24e5: 0x000a, 0x24e6: 0x000a, 0x24e8: 0x000a, 0x24e9: 0x0004, + 0x24ea: 0x0004, 0x24eb: 0x000a, + 0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d, + 0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d, + 0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000d, + // Block 0x94, offset 0x2500 + 0x2500: 0x000d, 0x2501: 0x000d, 0x2502: 0x000d, 0x2503: 0x000d, 0x2504: 0x000d, 0x2505: 0x000d, + 0x2506: 0x000d, 0x2507: 0x000d, 0x2508: 0x000d, 0x2509: 0x000d, 0x250a: 0x000d, 0x250b: 0x000d, + 0x250c: 0x000d, 0x250d: 0x000d, 0x250e: 0x000d, 0x250f: 0x000d, 0x2510: 0x000d, 0x2511: 0x000d, + 0x2512: 0x000d, 0x2513: 0x000d, 0x2514: 0x000d, 0x2515: 0x000d, 0x2516: 0x000d, 0x2517: 0x000d, + 0x2518: 0x000d, 0x2519: 0x000d, 0x251a: 0x000d, 0x251b: 0x000d, 0x251c: 0x000d, 0x251d: 0x000d, + 0x251e: 0x000d, 0x251f: 0x000d, 0x2520: 0x000d, 0x2521: 0x000d, 0x2522: 0x000d, 0x2523: 0x000d, + 0x2524: 0x000d, 0x2525: 0x000d, 0x2526: 0x000d, 0x2527: 0x000d, 0x2528: 0x000d, 0x2529: 0x000d, + 0x252a: 0x000d, 0x252b: 0x000d, 0x252c: 0x000d, 0x252d: 0x000d, 0x252e: 0x000d, 0x252f: 0x000d, + 0x2530: 0x000d, 0x2531: 0x000d, 0x2532: 0x000d, 0x2533: 0x000d, 0x2534: 0x000d, 0x2535: 0x000d, + 0x2536: 0x000d, 0x2537: 0x000d, 0x2538: 0x000d, 0x2539: 0x000d, 0x253a: 0x000d, 0x253b: 0x000d, + 0x253c: 0x000d, 0x253d: 0x000d, 0x253e: 0x000d, 0x253f: 0x000b, + // Block 0x95, offset 0x2540 + 0x2541: 0x000a, 0x2542: 0x000a, 0x2543: 0x0004, 0x2544: 0x0004, 0x2545: 0x0004, + 0x2546: 0x000a, 0x2547: 0x000a, 0x2548: 0x003a, 0x2549: 0x002a, 0x254a: 0x000a, 0x254b: 0x0003, + 0x254c: 0x0006, 0x254d: 0x0003, 0x254e: 0x0006, 0x254f: 0x0006, 0x2550: 0x0002, 0x2551: 0x0002, + 0x2552: 0x0002, 0x2553: 0x0002, 0x2554: 0x0002, 0x2555: 0x0002, 0x2556: 0x0002, 0x2557: 0x0002, + 0x2558: 0x0002, 0x2559: 0x0002, 0x255a: 0x0006, 0x255b: 0x000a, 0x255c: 0x000a, 0x255d: 0x000a, + 0x255e: 0x000a, 0x255f: 0x000a, 0x2560: 0x000a, + 0x257b: 0x005a, + 0x257c: 0x000a, 0x257d: 0x004a, 0x257e: 0x000a, 0x257f: 0x000a, + // Block 0x96, offset 0x2580 + 0x2580: 0x000a, + 0x259b: 0x005a, 0x259c: 0x000a, 0x259d: 0x004a, + 0x259e: 0x000a, 0x259f: 0x00fa, 0x25a0: 0x00ea, 0x25a1: 0x000a, 0x25a2: 0x003a, 0x25a3: 0x002a, + 0x25a4: 0x000a, 0x25a5: 0x000a, + // Block 0x97, offset 0x25c0 + 0x25e0: 0x0004, 0x25e1: 0x0004, 0x25e2: 0x000a, 0x25e3: 0x000a, + 0x25e4: 0x000a, 0x25e5: 0x0004, 0x25e6: 0x0004, 0x25e8: 0x000a, 0x25e9: 0x000a, + 0x25ea: 0x000a, 0x25eb: 0x000a, 0x25ec: 0x000a, 0x25ed: 0x000a, 0x25ee: 0x000a, + 0x25f0: 0x000b, 0x25f1: 0x000b, 0x25f2: 0x000b, 0x25f3: 0x000b, 0x25f4: 0x000b, 0x25f5: 0x000b, + 0x25f6: 0x000b, 0x25f7: 0x000b, 0x25f8: 0x000b, 0x25f9: 0x000a, 0x25fa: 0x000a, 0x25fb: 0x000a, + 0x25fc: 0x000a, 0x25fd: 0x000a, 0x25fe: 0x000b, 0x25ff: 0x000b, + // Block 0x98, offset 0x2600 + 0x2601: 0x000a, + // Block 0x99, offset 0x2640 + 0x2640: 0x000a, 0x2641: 0x000a, 0x2642: 0x000a, 0x2643: 0x000a, 0x2644: 0x000a, 0x2645: 0x000a, + 0x2646: 0x000a, 0x2647: 0x000a, 0x2648: 0x000a, 0x2649: 0x000a, 0x264a: 0x000a, 0x264b: 0x000a, + 0x264c: 0x000a, 0x2650: 0x000a, 0x2651: 0x000a, + 0x2652: 0x000a, 0x2653: 0x000a, 0x2654: 0x000a, 0x2655: 0x000a, 0x2656: 0x000a, 0x2657: 0x000a, + 0x2658: 0x000a, 0x2659: 0x000a, 0x265a: 0x000a, 0x265b: 0x000a, + 0x2660: 0x000a, + // Block 0x9a, offset 0x2680 + 0x26bd: 0x000c, + // Block 0x9b, offset 0x26c0 + 0x26e0: 0x000c, 0x26e1: 0x0002, 0x26e2: 0x0002, 0x26e3: 0x0002, + 0x26e4: 0x0002, 0x26e5: 0x0002, 0x26e6: 0x0002, 0x26e7: 0x0002, 0x26e8: 0x0002, 0x26e9: 0x0002, + 0x26ea: 0x0002, 0x26eb: 0x0002, 0x26ec: 0x0002, 0x26ed: 0x0002, 0x26ee: 0x0002, 0x26ef: 0x0002, + 0x26f0: 0x0002, 0x26f1: 0x0002, 0x26f2: 0x0002, 0x26f3: 0x0002, 0x26f4: 0x0002, 0x26f5: 0x0002, + 0x26f6: 0x0002, 0x26f7: 0x0002, 0x26f8: 0x0002, 0x26f9: 0x0002, 0x26fa: 0x0002, 0x26fb: 0x0002, + // Block 0x9c, offset 0x2700 + 0x2736: 0x000c, 0x2737: 0x000c, 0x2738: 0x000c, 0x2739: 0x000c, 0x273a: 0x000c, + // Block 0x9d, offset 0x2740 + 0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001, + 0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001, + 0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001, + 0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001, + 0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001, + 0x275e: 0x0001, 0x275f: 0x0001, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001, + 0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001, + 0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001, + 0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001, + 0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001, + 0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001, + // Block 0x9e, offset 0x2780 + 0x2780: 0x0001, 0x2781: 0x0001, 0x2782: 0x0001, 0x2783: 0x0001, 0x2784: 0x0001, 0x2785: 0x0001, + 0x2786: 0x0001, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, + 0x278c: 0x0001, 0x278d: 0x0001, 0x278e: 0x0001, 0x278f: 0x0001, 0x2790: 0x0001, 0x2791: 0x0001, + 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001, + 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001, + 0x279e: 0x0001, 0x279f: 0x000a, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, + 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001, + 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001, + 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001, + 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x0001, 0x27b9: 0x0001, 0x27ba: 0x0001, 0x27bb: 0x0001, + 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x0001, + // Block 0x9f, offset 0x27c0 + 0x27c0: 0x0001, 0x27c1: 0x000c, 0x27c2: 0x000c, 0x27c3: 0x000c, 0x27c4: 0x0001, 0x27c5: 0x000c, + 0x27c6: 0x000c, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, + 0x27cc: 0x000c, 0x27cd: 0x000c, 0x27ce: 0x000c, 0x27cf: 0x000c, 0x27d0: 0x0001, 0x27d1: 0x0001, + 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001, + 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001, + 0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001, + 0x27e4: 0x0001, 0x27e5: 0x0001, 0x27e6: 0x0001, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, + 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001, + 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001, + 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x000c, 0x27f9: 0x000c, 0x27fa: 0x000c, 0x27fb: 0x0001, + 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x000c, + // Block 0xa0, offset 0x2800 + 0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001, + 0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001, + 0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001, + 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001, + 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001, + 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001, + 0x2824: 0x0001, 0x2825: 0x000c, 0x2826: 0x000c, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, + 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001, + 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001, + 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x0001, 0x283a: 0x0001, 0x283b: 0x0001, + 0x283c: 0x0001, 0x283d: 0x0001, 0x283e: 0x0001, 0x283f: 0x0001, + // Block 0xa1, offset 0x2840 + 0x2840: 0x0001, 0x2841: 0x0001, 0x2842: 0x0001, 0x2843: 0x0001, 0x2844: 0x0001, 0x2845: 0x0001, + 0x2846: 0x0001, 0x2847: 0x0001, 0x2848: 0x0001, 0x2849: 0x0001, 0x284a: 0x0001, 0x284b: 0x0001, + 0x284c: 0x0001, 0x284d: 0x0001, 0x284e: 0x0001, 0x284f: 0x0001, 0x2850: 0x0001, 0x2851: 0x0001, + 0x2852: 0x0001, 0x2853: 0x0001, 0x2854: 0x0001, 0x2855: 0x0001, 0x2856: 0x0001, 0x2857: 0x0001, + 0x2858: 0x0001, 0x2859: 0x0001, 0x285a: 0x0001, 0x285b: 0x0001, 0x285c: 0x0001, 0x285d: 0x0001, + 0x285e: 0x0001, 0x285f: 0x0001, 0x2860: 0x0001, 0x2861: 0x0001, 0x2862: 0x0001, 0x2863: 0x0001, + 0x2864: 0x0001, 0x2865: 0x0001, 0x2866: 0x0001, 0x2867: 0x0001, 0x2868: 0x0001, 0x2869: 0x0001, + 0x286a: 0x0001, 0x286b: 0x0001, 0x286c: 0x0001, 0x286d: 0x0001, 0x286e: 0x0001, 0x286f: 0x0001, + 0x2870: 0x0001, 0x2871: 0x0001, 0x2872: 0x0001, 0x2873: 0x0001, 0x2874: 0x0001, 0x2875: 0x0001, + 0x2876: 0x0001, 0x2877: 0x0001, 0x2878: 0x0001, 0x2879: 0x000a, 0x287a: 0x000a, 0x287b: 0x000a, + 0x287c: 0x000a, 0x287d: 0x000a, 0x287e: 0x000a, 0x287f: 0x000a, + // Block 0xa2, offset 0x2880 + 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001, + 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001, + 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001, + 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001, + 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001, + 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005, + 0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005, + 0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005, + 0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005, + 0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005, + 0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001, + // Block 0xa3, offset 0x28c0 + 0x28c1: 0x000c, + 0x28f8: 0x000c, 0x28f9: 0x000c, 0x28fa: 0x000c, 0x28fb: 0x000c, + 0x28fc: 0x000c, 0x28fd: 0x000c, 0x28fe: 0x000c, 0x28ff: 0x000c, + // Block 0xa4, offset 0x2900 + 0x2900: 0x000c, 0x2901: 0x000c, 0x2902: 0x000c, 0x2903: 0x000c, 0x2904: 0x000c, 0x2905: 0x000c, + 0x2906: 0x000c, + 0x2912: 0x000a, 0x2913: 0x000a, 0x2914: 0x000a, 0x2915: 0x000a, 0x2916: 0x000a, 0x2917: 0x000a, + 0x2918: 0x000a, 0x2919: 0x000a, 0x291a: 0x000a, 0x291b: 0x000a, 0x291c: 0x000a, 0x291d: 0x000a, + 0x291e: 0x000a, 0x291f: 0x000a, 0x2920: 0x000a, 0x2921: 0x000a, 0x2922: 0x000a, 0x2923: 0x000a, + 0x2924: 0x000a, 0x2925: 0x000a, + 0x293f: 0x000c, + // Block 0xa5, offset 0x2940 + 0x2940: 0x000c, 0x2941: 0x000c, + 0x2973: 0x000c, 0x2974: 0x000c, 0x2975: 0x000c, + 0x2976: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c, + // Block 0xa6, offset 0x2980 + 0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c, + 0x29a7: 0x000c, 0x29a8: 0x000c, 0x29a9: 0x000c, + 0x29aa: 0x000c, 0x29ab: 0x000c, 0x29ad: 0x000c, 0x29ae: 0x000c, 0x29af: 0x000c, + 0x29b0: 0x000c, 0x29b1: 0x000c, 0x29b2: 0x000c, 0x29b3: 0x000c, 0x29b4: 0x000c, + // Block 0xa7, offset 0x29c0 + 0x29f3: 0x000c, + // Block 0xa8, offset 0x2a00 + 0x2a00: 0x000c, 0x2a01: 0x000c, + 0x2a36: 0x000c, 0x2a37: 0x000c, 0x2a38: 0x000c, 0x2a39: 0x000c, 0x2a3a: 0x000c, 0x2a3b: 0x000c, + 0x2a3c: 0x000c, 0x2a3d: 0x000c, 0x2a3e: 0x000c, + // Block 0xa9, offset 0x2a40 + 0x2a4a: 0x000c, 0x2a4b: 0x000c, + 0x2a4c: 0x000c, + // Block 0xaa, offset 0x2a80 + 0x2aaf: 0x000c, + 0x2ab0: 0x000c, 0x2ab1: 0x000c, 0x2ab4: 0x000c, + 0x2ab6: 0x000c, 0x2ab7: 0x000c, + 0x2abe: 0x000c, + // Block 0xab, offset 0x2ac0 + 0x2adf: 0x000c, 0x2ae3: 0x000c, + 0x2ae4: 0x000c, 0x2ae5: 0x000c, 0x2ae6: 0x000c, 0x2ae7: 0x000c, 0x2ae8: 0x000c, 0x2ae9: 0x000c, + 0x2aea: 0x000c, + // Block 0xac, offset 0x2b00 + 0x2b00: 0x000c, 0x2b01: 0x000c, + 0x2b3c: 0x000c, + // Block 0xad, offset 0x2b40 + 0x2b40: 0x000c, + 0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c, + 0x2b6a: 0x000c, 0x2b6b: 0x000c, 0x2b6c: 0x000c, + 0x2b70: 0x000c, 0x2b71: 0x000c, 0x2b72: 0x000c, 0x2b73: 0x000c, 0x2b74: 0x000c, + // Block 0xae, offset 0x2b80 + 0x2bb8: 0x000c, 0x2bb9: 0x000c, 0x2bba: 0x000c, 0x2bbb: 0x000c, + 0x2bbc: 0x000c, 0x2bbd: 0x000c, 0x2bbe: 0x000c, 0x2bbf: 0x000c, + // Block 0xaf, offset 0x2bc0 + 0x2bc2: 0x000c, 0x2bc3: 0x000c, 0x2bc4: 0x000c, + 0x2bc6: 0x000c, + // Block 0xb0, offset 0x2c00 + 0x2c33: 0x000c, 0x2c34: 0x000c, 0x2c35: 0x000c, + 0x2c36: 0x000c, 0x2c37: 0x000c, 0x2c38: 0x000c, 0x2c3a: 0x000c, + 0x2c3f: 0x000c, + // Block 0xb1, offset 0x2c40 + 0x2c40: 0x000c, 0x2c42: 0x000c, 0x2c43: 0x000c, + // Block 0xb2, offset 0x2c80 + 0x2cb2: 0x000c, 0x2cb3: 0x000c, 0x2cb4: 0x000c, 0x2cb5: 0x000c, + 0x2cbc: 0x000c, 0x2cbd: 0x000c, 0x2cbf: 0x000c, + // Block 0xb3, offset 0x2cc0 + 0x2cc0: 0x000c, + 0x2cdc: 0x000c, 0x2cdd: 0x000c, + // Block 0xb4, offset 0x2d00 + 0x2d33: 0x000c, 0x2d34: 0x000c, 0x2d35: 0x000c, + 0x2d36: 0x000c, 0x2d37: 0x000c, 0x2d38: 0x000c, 0x2d39: 0x000c, 0x2d3a: 0x000c, + 0x2d3d: 0x000c, 0x2d3f: 0x000c, + // Block 0xb5, offset 0x2d40 + 0x2d40: 0x000c, + 0x2d60: 0x000a, 0x2d61: 0x000a, 0x2d62: 0x000a, 0x2d63: 0x000a, + 0x2d64: 0x000a, 0x2d65: 0x000a, 0x2d66: 0x000a, 0x2d67: 0x000a, 0x2d68: 0x000a, 0x2d69: 0x000a, + 0x2d6a: 0x000a, 0x2d6b: 0x000a, 0x2d6c: 0x000a, + // Block 0xb6, offset 0x2d80 + 0x2dab: 0x000c, 0x2dad: 0x000c, + 0x2db0: 0x000c, 0x2db1: 0x000c, 0x2db2: 0x000c, 0x2db3: 0x000c, 0x2db4: 0x000c, 0x2db5: 0x000c, + 0x2db7: 0x000c, + // Block 0xb7, offset 0x2dc0 + 0x2ddd: 0x000c, + 0x2dde: 0x000c, 0x2ddf: 0x000c, 0x2de2: 0x000c, 0x2de3: 0x000c, + 0x2de4: 0x000c, 0x2de5: 0x000c, 0x2de7: 0x000c, 0x2de8: 0x000c, 0x2de9: 0x000c, + 0x2dea: 0x000c, 0x2deb: 0x000c, + // Block 0xb8, offset 0x2e00 + 0x2e30: 0x000c, 0x2e31: 0x000c, 0x2e32: 0x000c, 0x2e33: 0x000c, 0x2e34: 0x000c, 0x2e35: 0x000c, + 0x2e36: 0x000c, 0x2e38: 0x000c, 0x2e39: 0x000c, 0x2e3a: 0x000c, 0x2e3b: 0x000c, + 0x2e3c: 0x000c, 0x2e3d: 0x000c, + // Block 0xb9, offset 0x2e40 + 0x2e52: 0x000c, 0x2e53: 0x000c, 0x2e54: 0x000c, 0x2e55: 0x000c, 0x2e56: 0x000c, 0x2e57: 0x000c, + 0x2e58: 0x000c, 0x2e59: 0x000c, 0x2e5a: 0x000c, 0x2e5b: 0x000c, 0x2e5c: 0x000c, 0x2e5d: 0x000c, + 0x2e5e: 0x000c, 0x2e5f: 0x000c, 0x2e60: 0x000c, 0x2e61: 0x000c, 0x2e62: 0x000c, 0x2e63: 0x000c, + 0x2e64: 0x000c, 0x2e65: 0x000c, 0x2e66: 0x000c, 0x2e67: 0x000c, + 0x2e6a: 0x000c, 0x2e6b: 0x000c, 0x2e6c: 0x000c, 0x2e6d: 0x000c, 0x2e6e: 0x000c, 0x2e6f: 0x000c, + 0x2e70: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e75: 0x000c, + 0x2e76: 0x000c, + // Block 0xba, offset 0x2e80 + 0x2eb0: 0x000c, 0x2eb1: 0x000c, 0x2eb2: 0x000c, 0x2eb3: 0x000c, 0x2eb4: 0x000c, + // Block 0xbb, offset 0x2ec0 + 0x2ef0: 0x000c, 0x2ef1: 0x000c, 0x2ef2: 0x000c, 0x2ef3: 0x000c, 0x2ef4: 0x000c, 0x2ef5: 0x000c, + 0x2ef6: 0x000c, + // Block 0xbc, offset 0x2f00 + 0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c, + 0x2f12: 0x000c, + // Block 0xbd, offset 0x2f40 + 0x2f5d: 0x000c, + 0x2f5e: 0x000c, 0x2f60: 0x000b, 0x2f61: 0x000b, 0x2f62: 0x000b, 0x2f63: 0x000b, + // Block 0xbe, offset 0x2f80 + 0x2fa7: 0x000c, 0x2fa8: 0x000c, 0x2fa9: 0x000c, + 0x2fb3: 0x000b, 0x2fb4: 0x000b, 0x2fb5: 0x000b, + 0x2fb6: 0x000b, 0x2fb7: 0x000b, 0x2fb8: 0x000b, 0x2fb9: 0x000b, 0x2fba: 0x000b, 0x2fbb: 0x000c, + 0x2fbc: 0x000c, 0x2fbd: 0x000c, 0x2fbe: 0x000c, 0x2fbf: 0x000c, + // Block 0xbf, offset 0x2fc0 + 0x2fc0: 0x000c, 0x2fc1: 0x000c, 0x2fc2: 0x000c, 0x2fc5: 0x000c, + 0x2fc6: 0x000c, 0x2fc7: 0x000c, 0x2fc8: 0x000c, 0x2fc9: 0x000c, 0x2fca: 0x000c, 0x2fcb: 0x000c, + 0x2fea: 0x000c, 0x2feb: 0x000c, 0x2fec: 0x000c, 0x2fed: 0x000c, + // Block 0xc0, offset 0x3000 + 0x3000: 0x000a, 0x3001: 0x000a, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000a, + // Block 0xc1, offset 0x3040 + 0x3040: 0x000a, 0x3041: 0x000a, 0x3042: 0x000a, 0x3043: 0x000a, 0x3044: 0x000a, 0x3045: 0x000a, + 0x3046: 0x000a, 0x3047: 0x000a, 0x3048: 0x000a, 0x3049: 0x000a, 0x304a: 0x000a, 0x304b: 0x000a, + 0x304c: 0x000a, 0x304d: 0x000a, 0x304e: 0x000a, 0x304f: 0x000a, 0x3050: 0x000a, 0x3051: 0x000a, + 0x3052: 0x000a, 0x3053: 0x000a, 0x3054: 0x000a, 0x3055: 0x000a, 0x3056: 0x000a, + // Block 0xc2, offset 0x3080 + 0x309b: 0x000a, + // Block 0xc3, offset 0x30c0 + 0x30d5: 0x000a, + // Block 0xc4, offset 0x3100 + 0x310f: 0x000a, + // Block 0xc5, offset 0x3140 + 0x3149: 0x000a, + // Block 0xc6, offset 0x3180 + 0x3183: 0x000a, + 0x318e: 0x0002, 0x318f: 0x0002, 0x3190: 0x0002, 0x3191: 0x0002, + 0x3192: 0x0002, 0x3193: 0x0002, 0x3194: 0x0002, 0x3195: 0x0002, 0x3196: 0x0002, 0x3197: 0x0002, + 0x3198: 0x0002, 0x3199: 0x0002, 0x319a: 0x0002, 0x319b: 0x0002, 0x319c: 0x0002, 0x319d: 0x0002, + 0x319e: 0x0002, 0x319f: 0x0002, 0x31a0: 0x0002, 0x31a1: 0x0002, 0x31a2: 0x0002, 0x31a3: 0x0002, + 0x31a4: 0x0002, 0x31a5: 0x0002, 0x31a6: 0x0002, 0x31a7: 0x0002, 0x31a8: 0x0002, 0x31a9: 0x0002, + 0x31aa: 0x0002, 0x31ab: 0x0002, 0x31ac: 0x0002, 0x31ad: 0x0002, 0x31ae: 0x0002, 0x31af: 0x0002, + 0x31b0: 0x0002, 0x31b1: 0x0002, 0x31b2: 0x0002, 0x31b3: 0x0002, 0x31b4: 0x0002, 0x31b5: 0x0002, + 0x31b6: 0x0002, 0x31b7: 0x0002, 0x31b8: 0x0002, 0x31b9: 0x0002, 0x31ba: 0x0002, 0x31bb: 0x0002, + 0x31bc: 0x0002, 0x31bd: 0x0002, 0x31be: 0x0002, 0x31bf: 0x0002, + // Block 0xc7, offset 0x31c0 + 0x31c0: 0x000c, 0x31c1: 0x000c, 0x31c2: 0x000c, 0x31c3: 0x000c, 0x31c4: 0x000c, 0x31c5: 0x000c, + 0x31c6: 0x000c, 0x31c7: 0x000c, 0x31c8: 0x000c, 0x31c9: 0x000c, 0x31ca: 0x000c, 0x31cb: 0x000c, + 0x31cc: 0x000c, 0x31cd: 0x000c, 0x31ce: 0x000c, 0x31cf: 0x000c, 0x31d0: 0x000c, 0x31d1: 0x000c, + 0x31d2: 0x000c, 0x31d3: 0x000c, 0x31d4: 0x000c, 0x31d5: 0x000c, 0x31d6: 0x000c, 0x31d7: 0x000c, + 0x31d8: 0x000c, 0x31d9: 0x000c, 0x31da: 0x000c, 0x31db: 0x000c, 0x31dc: 0x000c, 0x31dd: 0x000c, + 0x31de: 0x000c, 0x31df: 0x000c, 0x31e0: 0x000c, 0x31e1: 0x000c, 0x31e2: 0x000c, 0x31e3: 0x000c, + 0x31e4: 0x000c, 0x31e5: 0x000c, 0x31e6: 0x000c, 0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c, + 0x31ea: 0x000c, 0x31eb: 0x000c, 0x31ec: 0x000c, 0x31ed: 0x000c, 0x31ee: 0x000c, 0x31ef: 0x000c, + 0x31f0: 0x000c, 0x31f1: 0x000c, 0x31f2: 0x000c, 0x31f3: 0x000c, 0x31f4: 0x000c, 0x31f5: 0x000c, + 0x31f6: 0x000c, 0x31fb: 0x000c, + 0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c, + // Block 0xc8, offset 0x3200 + 0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3203: 0x000c, 0x3204: 0x000c, 0x3205: 0x000c, + 0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c, + 0x320c: 0x000c, 0x320d: 0x000c, 0x320e: 0x000c, 0x320f: 0x000c, 0x3210: 0x000c, 0x3211: 0x000c, + 0x3212: 0x000c, 0x3213: 0x000c, 0x3214: 0x000c, 0x3215: 0x000c, 0x3216: 0x000c, 0x3217: 0x000c, + 0x3218: 0x000c, 0x3219: 0x000c, 0x321a: 0x000c, 0x321b: 0x000c, 0x321c: 0x000c, 0x321d: 0x000c, + 0x321e: 0x000c, 0x321f: 0x000c, 0x3220: 0x000c, 0x3221: 0x000c, 0x3222: 0x000c, 0x3223: 0x000c, + 0x3224: 0x000c, 0x3225: 0x000c, 0x3226: 0x000c, 0x3227: 0x000c, 0x3228: 0x000c, 0x3229: 0x000c, + 0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c, + 0x3235: 0x000c, + // Block 0xc9, offset 0x3240 + 0x3244: 0x000c, + 0x325b: 0x000c, 0x325c: 0x000c, 0x325d: 0x000c, + 0x325e: 0x000c, 0x325f: 0x000c, 0x3261: 0x000c, 0x3262: 0x000c, 0x3263: 0x000c, + 0x3264: 0x000c, 0x3265: 0x000c, 0x3266: 0x000c, 0x3267: 0x000c, 0x3268: 0x000c, 0x3269: 0x000c, + 0x326a: 0x000c, 0x326b: 0x000c, 0x326c: 0x000c, 0x326d: 0x000c, 0x326e: 0x000c, 0x326f: 0x000c, + // Block 0xca, offset 0x3280 + 0x3280: 0x000c, 0x3281: 0x000c, 0x3282: 0x000c, 0x3283: 0x000c, 0x3284: 0x000c, 0x3285: 0x000c, + 0x3286: 0x000c, 0x3288: 0x000c, 0x3289: 0x000c, 0x328a: 0x000c, 0x328b: 0x000c, + 0x328c: 0x000c, 0x328d: 0x000c, 0x328e: 0x000c, 0x328f: 0x000c, 0x3290: 0x000c, 0x3291: 0x000c, + 0x3292: 0x000c, 0x3293: 0x000c, 0x3294: 0x000c, 0x3295: 0x000c, 0x3296: 0x000c, 0x3297: 0x000c, + 0x3298: 0x000c, 0x329b: 0x000c, 0x329c: 0x000c, 0x329d: 0x000c, + 0x329e: 0x000c, 0x329f: 0x000c, 0x32a0: 0x000c, 0x32a1: 0x000c, 0x32a3: 0x000c, + 0x32a4: 0x000c, 0x32a6: 0x000c, 0x32a7: 0x000c, 0x32a8: 0x000c, 0x32a9: 0x000c, + 0x32aa: 0x000c, + // Block 0xcb, offset 0x32c0 + 0x32c0: 0x0001, 0x32c1: 0x0001, 0x32c2: 0x0001, 0x32c3: 0x0001, 0x32c4: 0x0001, 0x32c5: 0x0001, + 0x32c6: 0x0001, 0x32c7: 0x0001, 0x32c8: 0x0001, 0x32c9: 0x0001, 0x32ca: 0x0001, 0x32cb: 0x0001, + 0x32cc: 0x0001, 0x32cd: 0x0001, 0x32ce: 0x0001, 0x32cf: 0x0001, 0x32d0: 0x000c, 0x32d1: 0x000c, + 0x32d2: 0x000c, 0x32d3: 0x000c, 0x32d4: 0x000c, 0x32d5: 0x000c, 0x32d6: 0x000c, 0x32d7: 0x0001, + 0x32d8: 0x0001, 0x32d9: 0x0001, 0x32da: 0x0001, 0x32db: 0x0001, 0x32dc: 0x0001, 0x32dd: 0x0001, + 0x32de: 0x0001, 0x32df: 0x0001, 0x32e0: 0x0001, 0x32e1: 0x0001, 0x32e2: 0x0001, 0x32e3: 0x0001, + 0x32e4: 0x0001, 0x32e5: 0x0001, 0x32e6: 0x0001, 0x32e7: 0x0001, 0x32e8: 0x0001, 0x32e9: 0x0001, + 0x32ea: 0x0001, 0x32eb: 0x0001, 0x32ec: 0x0001, 0x32ed: 0x0001, 0x32ee: 0x0001, 0x32ef: 0x0001, + 0x32f0: 0x0001, 0x32f1: 0x0001, 0x32f2: 0x0001, 0x32f3: 0x0001, 0x32f4: 0x0001, 0x32f5: 0x0001, + 0x32f6: 0x0001, 0x32f7: 0x0001, 0x32f8: 0x0001, 0x32f9: 0x0001, 0x32fa: 0x0001, 0x32fb: 0x0001, + 0x32fc: 0x0001, 0x32fd: 0x0001, 0x32fe: 0x0001, 0x32ff: 0x0001, + // Block 0xcc, offset 0x3300 + 0x3300: 0x0001, 0x3301: 0x0001, 0x3302: 0x0001, 0x3303: 0x0001, 0x3304: 0x000c, 0x3305: 0x000c, + 0x3306: 0x000c, 0x3307: 0x000c, 0x3308: 0x000c, 0x3309: 0x000c, 0x330a: 0x000c, 0x330b: 0x0001, + 0x330c: 0x0001, 0x330d: 0x0001, 0x330e: 0x0001, 0x330f: 0x0001, 0x3310: 0x0001, 0x3311: 0x0001, + 0x3312: 0x0001, 0x3313: 0x0001, 0x3314: 0x0001, 0x3315: 0x0001, 0x3316: 0x0001, 0x3317: 0x0001, + 0x3318: 0x0001, 0x3319: 0x0001, 0x331a: 0x0001, 0x331b: 0x0001, 0x331c: 0x0001, 0x331d: 0x0001, + 0x331e: 0x0001, 0x331f: 0x0001, 0x3320: 0x0001, 0x3321: 0x0001, 0x3322: 0x0001, 0x3323: 0x0001, + 0x3324: 0x0001, 0x3325: 0x0001, 0x3326: 0x0001, 0x3327: 0x0001, 0x3328: 0x0001, 0x3329: 0x0001, + 0x332a: 0x0001, 0x332b: 0x0001, 0x332c: 0x0001, 0x332d: 0x0001, 0x332e: 0x0001, 0x332f: 0x0001, + 0x3330: 0x0001, 0x3331: 0x0001, 0x3332: 0x0001, 0x3333: 0x0001, 0x3334: 0x0001, 0x3335: 0x0001, + 0x3336: 0x0001, 0x3337: 0x0001, 0x3338: 0x0001, 0x3339: 0x0001, 0x333a: 0x0001, 0x333b: 0x0001, + 0x333c: 0x0001, 0x333d: 0x0001, 0x333e: 0x0001, 0x333f: 0x0001, + // Block 0xcd, offset 0x3340 + 0x3340: 0x000d, 0x3341: 0x000d, 0x3342: 0x000d, 0x3343: 0x000d, 0x3344: 0x000d, 0x3345: 0x000d, + 0x3346: 0x000d, 0x3347: 0x000d, 0x3348: 0x000d, 0x3349: 0x000d, 0x334a: 0x000d, 0x334b: 0x000d, + 0x334c: 0x000d, 0x334d: 0x000d, 0x334e: 0x000d, 0x334f: 0x000d, 0x3350: 0x000d, 0x3351: 0x000d, + 0x3352: 0x000d, 0x3353: 0x000d, 0x3354: 0x000d, 0x3355: 0x000d, 0x3356: 0x000d, 0x3357: 0x000d, + 0x3358: 0x000d, 0x3359: 0x000d, 0x335a: 0x000d, 0x335b: 0x000d, 0x335c: 0x000d, 0x335d: 0x000d, + 0x335e: 0x000d, 0x335f: 0x000d, 0x3360: 0x000d, 0x3361: 0x000d, 0x3362: 0x000d, 0x3363: 0x000d, + 0x3364: 0x000d, 0x3365: 0x000d, 0x3366: 0x000d, 0x3367: 0x000d, 0x3368: 0x000d, 0x3369: 0x000d, + 0x336a: 0x000d, 0x336b: 0x000d, 0x336c: 0x000d, 0x336d: 0x000d, 0x336e: 0x000d, 0x336f: 0x000d, + 0x3370: 0x000a, 0x3371: 0x000a, 0x3372: 0x000d, 0x3373: 0x000d, 0x3374: 0x000d, 0x3375: 0x000d, + 0x3376: 0x000d, 0x3377: 0x000d, 0x3378: 0x000d, 0x3379: 0x000d, 0x337a: 0x000d, 0x337b: 0x000d, + 0x337c: 0x000d, 0x337d: 0x000d, 0x337e: 0x000d, 0x337f: 0x000d, + // Block 0xce, offset 0x3380 + 0x3380: 0x000a, 0x3381: 0x000a, 0x3382: 0x000a, 0x3383: 0x000a, 0x3384: 0x000a, 0x3385: 0x000a, + 0x3386: 0x000a, 0x3387: 0x000a, 0x3388: 0x000a, 0x3389: 0x000a, 0x338a: 0x000a, 0x338b: 0x000a, + 0x338c: 0x000a, 0x338d: 0x000a, 0x338e: 0x000a, 0x338f: 0x000a, 0x3390: 0x000a, 0x3391: 0x000a, + 0x3392: 0x000a, 0x3393: 0x000a, 0x3394: 0x000a, 0x3395: 0x000a, 0x3396: 0x000a, 0x3397: 0x000a, + 0x3398: 0x000a, 0x3399: 0x000a, 0x339a: 0x000a, 0x339b: 0x000a, 0x339c: 0x000a, 0x339d: 0x000a, + 0x339e: 0x000a, 0x339f: 0x000a, 0x33a0: 0x000a, 0x33a1: 0x000a, 0x33a2: 0x000a, 0x33a3: 0x000a, + 0x33a4: 0x000a, 0x33a5: 0x000a, 0x33a6: 0x000a, 0x33a7: 0x000a, 0x33a8: 0x000a, 0x33a9: 0x000a, + 0x33aa: 0x000a, 0x33ab: 0x000a, + 0x33b0: 0x000a, 0x33b1: 0x000a, 0x33b2: 0x000a, 0x33b3: 0x000a, 0x33b4: 0x000a, 0x33b5: 0x000a, + 0x33b6: 0x000a, 0x33b7: 0x000a, 0x33b8: 0x000a, 0x33b9: 0x000a, 0x33ba: 0x000a, 0x33bb: 0x000a, + 0x33bc: 0x000a, 0x33bd: 0x000a, 0x33be: 0x000a, 0x33bf: 0x000a, + // Block 0xcf, offset 0x33c0 + 0x33c0: 0x000a, 0x33c1: 0x000a, 0x33c2: 0x000a, 0x33c3: 0x000a, 0x33c4: 0x000a, 0x33c5: 0x000a, + 0x33c6: 0x000a, 0x33c7: 0x000a, 0x33c8: 0x000a, 0x33c9: 0x000a, 0x33ca: 0x000a, 0x33cb: 0x000a, + 0x33cc: 0x000a, 0x33cd: 0x000a, 0x33ce: 0x000a, 0x33cf: 0x000a, 0x33d0: 0x000a, 0x33d1: 0x000a, + 0x33d2: 0x000a, 0x33d3: 0x000a, + 0x33e0: 0x000a, 0x33e1: 0x000a, 0x33e2: 0x000a, 0x33e3: 0x000a, + 0x33e4: 0x000a, 0x33e5: 0x000a, 0x33e6: 0x000a, 0x33e7: 0x000a, 0x33e8: 0x000a, 0x33e9: 0x000a, + 0x33ea: 0x000a, 0x33eb: 0x000a, 0x33ec: 0x000a, 0x33ed: 0x000a, 0x33ee: 0x000a, + 0x33f1: 0x000a, 0x33f2: 0x000a, 0x33f3: 0x000a, 0x33f4: 0x000a, 0x33f5: 0x000a, + 0x33f6: 0x000a, 0x33f7: 0x000a, 0x33f8: 0x000a, 0x33f9: 0x000a, 0x33fa: 0x000a, 0x33fb: 0x000a, + 0x33fc: 0x000a, 0x33fd: 0x000a, 0x33fe: 0x000a, 0x33ff: 0x000a, + // Block 0xd0, offset 0x3400 + 0x3401: 0x000a, 0x3402: 0x000a, 0x3403: 0x000a, 0x3404: 0x000a, 0x3405: 0x000a, + 0x3406: 0x000a, 0x3407: 0x000a, 0x3408: 0x000a, 0x3409: 0x000a, 0x340a: 0x000a, 0x340b: 0x000a, + 0x340c: 0x000a, 0x340d: 0x000a, 0x340e: 0x000a, 0x340f: 0x000a, 0x3411: 0x000a, + 0x3412: 0x000a, 0x3413: 0x000a, 0x3414: 0x000a, 0x3415: 0x000a, 0x3416: 0x000a, 0x3417: 0x000a, + 0x3418: 0x000a, 0x3419: 0x000a, 0x341a: 0x000a, 0x341b: 0x000a, 0x341c: 0x000a, 0x341d: 0x000a, + 0x341e: 0x000a, 0x341f: 0x000a, 0x3420: 0x000a, 0x3421: 0x000a, 0x3422: 0x000a, 0x3423: 0x000a, + 0x3424: 0x000a, 0x3425: 0x000a, 0x3426: 0x000a, 0x3427: 0x000a, 0x3428: 0x000a, 0x3429: 0x000a, + 0x342a: 0x000a, 0x342b: 0x000a, 0x342c: 0x000a, 0x342d: 0x000a, 0x342e: 0x000a, 0x342f: 0x000a, + 0x3430: 0x000a, 0x3431: 0x000a, 0x3432: 0x000a, 0x3433: 0x000a, 0x3434: 0x000a, 0x3435: 0x000a, + // Block 0xd1, offset 0x3440 + 0x3440: 0x0002, 0x3441: 0x0002, 0x3442: 0x0002, 0x3443: 0x0002, 0x3444: 0x0002, 0x3445: 0x0002, + 0x3446: 0x0002, 0x3447: 0x0002, 0x3448: 0x0002, 0x3449: 0x0002, 0x344a: 0x0002, 0x344b: 0x000a, + 0x344c: 0x000a, + // Block 0xd2, offset 0x3480 + 0x34aa: 0x000a, 0x34ab: 0x000a, + // Block 0xd3, offset 0x34c0 + 0x34c0: 0x000a, 0x34c1: 0x000a, 0x34c2: 0x000a, 0x34c3: 0x000a, 0x34c4: 0x000a, 0x34c5: 0x000a, + 0x34c6: 0x000a, 0x34c7: 0x000a, 0x34c8: 0x000a, 0x34c9: 0x000a, 0x34ca: 0x000a, 0x34cb: 0x000a, + 0x34cc: 0x000a, 0x34cd: 0x000a, 0x34ce: 0x000a, 0x34cf: 0x000a, 0x34d0: 0x000a, 0x34d1: 0x000a, + 0x34d2: 0x000a, + 0x34e0: 0x000a, 0x34e1: 0x000a, 0x34e2: 0x000a, 0x34e3: 0x000a, + 0x34e4: 0x000a, 0x34e5: 0x000a, 0x34e6: 0x000a, 0x34e7: 0x000a, 0x34e8: 0x000a, 0x34e9: 0x000a, + 0x34ea: 0x000a, 0x34eb: 0x000a, 0x34ec: 0x000a, + 0x34f0: 0x000a, 0x34f1: 0x000a, 0x34f2: 0x000a, 0x34f3: 0x000a, 0x34f4: 0x000a, 0x34f5: 0x000a, + 0x34f6: 0x000a, + // Block 0xd4, offset 0x3500 + 0x3500: 0x000a, 0x3501: 0x000a, 0x3502: 0x000a, 0x3503: 0x000a, 0x3504: 0x000a, 0x3505: 0x000a, + 0x3506: 0x000a, 0x3507: 0x000a, 0x3508: 0x000a, 0x3509: 0x000a, 0x350a: 0x000a, 0x350b: 0x000a, + 0x350c: 0x000a, 0x350d: 0x000a, 0x350e: 0x000a, 0x350f: 0x000a, 0x3510: 0x000a, 0x3511: 0x000a, + 0x3512: 0x000a, 0x3513: 0x000a, 0x3514: 0x000a, + // Block 0xd5, offset 0x3540 + 0x3540: 0x000a, 0x3541: 0x000a, 0x3542: 0x000a, 0x3543: 0x000a, 0x3544: 0x000a, 0x3545: 0x000a, + 0x3546: 0x000a, 0x3547: 0x000a, 0x3548: 0x000a, 0x3549: 0x000a, 0x354a: 0x000a, 0x354b: 0x000a, + 0x3550: 0x000a, 0x3551: 0x000a, + 0x3552: 0x000a, 0x3553: 0x000a, 0x3554: 0x000a, 0x3555: 0x000a, 0x3556: 0x000a, 0x3557: 0x000a, + 0x3558: 0x000a, 0x3559: 0x000a, 0x355a: 0x000a, 0x355b: 0x000a, 0x355c: 0x000a, 0x355d: 0x000a, + 0x355e: 0x000a, 0x355f: 0x000a, 0x3560: 0x000a, 0x3561: 0x000a, 0x3562: 0x000a, 0x3563: 0x000a, + 0x3564: 0x000a, 0x3565: 0x000a, 0x3566: 0x000a, 0x3567: 0x000a, 0x3568: 0x000a, 0x3569: 0x000a, + 0x356a: 0x000a, 0x356b: 0x000a, 0x356c: 0x000a, 0x356d: 0x000a, 0x356e: 0x000a, 0x356f: 0x000a, + 0x3570: 0x000a, 0x3571: 0x000a, 0x3572: 0x000a, 0x3573: 0x000a, 0x3574: 0x000a, 0x3575: 0x000a, + 0x3576: 0x000a, 0x3577: 0x000a, 0x3578: 0x000a, 0x3579: 0x000a, 0x357a: 0x000a, 0x357b: 0x000a, + 0x357c: 0x000a, 0x357d: 0x000a, 0x357e: 0x000a, 0x357f: 0x000a, + // Block 0xd6, offset 0x3580 + 0x3580: 0x000a, 0x3581: 0x000a, 0x3582: 0x000a, 0x3583: 0x000a, 0x3584: 0x000a, 0x3585: 0x000a, + 0x3586: 0x000a, 0x3587: 0x000a, + 0x3590: 0x000a, 0x3591: 0x000a, + 0x3592: 0x000a, 0x3593: 0x000a, 0x3594: 0x000a, 0x3595: 0x000a, 0x3596: 0x000a, 0x3597: 0x000a, + 0x3598: 0x000a, 0x3599: 0x000a, + 0x35a0: 0x000a, 0x35a1: 0x000a, 0x35a2: 0x000a, 0x35a3: 0x000a, + 0x35a4: 0x000a, 0x35a5: 0x000a, 0x35a6: 0x000a, 0x35a7: 0x000a, 0x35a8: 0x000a, 0x35a9: 0x000a, + 0x35aa: 0x000a, 0x35ab: 0x000a, 0x35ac: 0x000a, 0x35ad: 0x000a, 0x35ae: 0x000a, 0x35af: 0x000a, + 0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000a, 0x35b3: 0x000a, 0x35b4: 0x000a, 0x35b5: 0x000a, + 0x35b6: 0x000a, 0x35b7: 0x000a, 0x35b8: 0x000a, 0x35b9: 0x000a, 0x35ba: 0x000a, 0x35bb: 0x000a, + 0x35bc: 0x000a, 0x35bd: 0x000a, 0x35be: 0x000a, 0x35bf: 0x000a, + // Block 0xd7, offset 0x35c0 + 0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a, + 0x35c6: 0x000a, 0x35c7: 0x000a, + 0x35d0: 0x000a, 0x35d1: 0x000a, + 0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a, + 0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a, + 0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a, + 0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a, + 0x35ea: 0x000a, 0x35eb: 0x000a, 0x35ec: 0x000a, 0x35ed: 0x000a, + // Block 0xd8, offset 0x3600 + 0x3610: 0x000a, 0x3611: 0x000a, + 0x3612: 0x000a, 0x3613: 0x000a, 0x3614: 0x000a, 0x3615: 0x000a, 0x3616: 0x000a, 0x3617: 0x000a, + 0x3618: 0x000a, 0x3619: 0x000a, 0x361a: 0x000a, 0x361b: 0x000a, 0x361c: 0x000a, 0x361d: 0x000a, + 0x361e: 0x000a, 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a, + 0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, + 0x3630: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a, + 0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a, + 0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a, + // Block 0xd9, offset 0x3640 + 0x3640: 0x000a, 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a, + 0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a, + 0x3650: 0x000a, 0x3651: 0x000a, + 0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a, + 0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a, + 0x365e: 0x000a, + // Block 0xda, offset 0x3680 + 0x3680: 0x000a, 0x3681: 0x000a, 0x3682: 0x000a, 0x3683: 0x000a, 0x3684: 0x000a, 0x3685: 0x000a, + 0x3686: 0x000a, 0x3687: 0x000a, 0x3688: 0x000a, 0x3689: 0x000a, 0x368a: 0x000a, 0x368b: 0x000a, + 0x368c: 0x000a, 0x368d: 0x000a, 0x368e: 0x000a, 0x368f: 0x000a, 0x3690: 0x000a, 0x3691: 0x000a, + // Block 0xdb, offset 0x36c0 + 0x36fe: 0x000b, 0x36ff: 0x000b, + // Block 0xdc, offset 0x3700 + 0x3700: 0x000b, 0x3701: 0x000b, 0x3702: 0x000b, 0x3703: 0x000b, 0x3704: 0x000b, 0x3705: 0x000b, + 0x3706: 0x000b, 0x3707: 0x000b, 0x3708: 0x000b, 0x3709: 0x000b, 0x370a: 0x000b, 0x370b: 0x000b, + 0x370c: 0x000b, 0x370d: 0x000b, 0x370e: 0x000b, 0x370f: 0x000b, 0x3710: 0x000b, 0x3711: 0x000b, + 0x3712: 0x000b, 0x3713: 0x000b, 0x3714: 0x000b, 0x3715: 0x000b, 0x3716: 0x000b, 0x3717: 0x000b, + 0x3718: 0x000b, 0x3719: 0x000b, 0x371a: 0x000b, 0x371b: 0x000b, 0x371c: 0x000b, 0x371d: 0x000b, + 0x371e: 0x000b, 0x371f: 0x000b, 0x3720: 0x000b, 0x3721: 0x000b, 0x3722: 0x000b, 0x3723: 0x000b, + 0x3724: 0x000b, 0x3725: 0x000b, 0x3726: 0x000b, 0x3727: 0x000b, 0x3728: 0x000b, 0x3729: 0x000b, + 0x372a: 0x000b, 0x372b: 0x000b, 0x372c: 0x000b, 0x372d: 0x000b, 0x372e: 0x000b, 0x372f: 0x000b, + 0x3730: 0x000b, 0x3731: 0x000b, 0x3732: 0x000b, 0x3733: 0x000b, 0x3734: 0x000b, 0x3735: 0x000b, + 0x3736: 0x000b, 0x3737: 0x000b, 0x3738: 0x000b, 0x3739: 0x000b, 0x373a: 0x000b, 0x373b: 0x000b, + 0x373c: 0x000b, 0x373d: 0x000b, 0x373e: 0x000b, 0x373f: 0x000b, + // Block 0xdd, offset 0x3740 + 0x3740: 0x000c, 0x3741: 0x000c, 0x3742: 0x000c, 0x3743: 0x000c, 0x3744: 0x000c, 0x3745: 0x000c, + 0x3746: 0x000c, 0x3747: 0x000c, 0x3748: 0x000c, 0x3749: 0x000c, 0x374a: 0x000c, 0x374b: 0x000c, + 0x374c: 0x000c, 0x374d: 0x000c, 0x374e: 0x000c, 0x374f: 0x000c, 0x3750: 0x000c, 0x3751: 0x000c, + 0x3752: 0x000c, 0x3753: 0x000c, 0x3754: 0x000c, 0x3755: 0x000c, 0x3756: 0x000c, 0x3757: 0x000c, + 0x3758: 0x000c, 0x3759: 0x000c, 0x375a: 0x000c, 0x375b: 0x000c, 0x375c: 0x000c, 0x375d: 0x000c, + 0x375e: 0x000c, 0x375f: 0x000c, 0x3760: 0x000c, 0x3761: 0x000c, 0x3762: 0x000c, 0x3763: 0x000c, + 0x3764: 0x000c, 0x3765: 0x000c, 0x3766: 0x000c, 0x3767: 0x000c, 0x3768: 0x000c, 0x3769: 0x000c, + 0x376a: 0x000c, 0x376b: 0x000c, 0x376c: 0x000c, 0x376d: 0x000c, 0x376e: 0x000c, 0x376f: 0x000c, + 0x3770: 0x000b, 0x3771: 0x000b, 0x3772: 0x000b, 0x3773: 0x000b, 0x3774: 0x000b, 0x3775: 0x000b, + 0x3776: 0x000b, 0x3777: 0x000b, 0x3778: 0x000b, 0x3779: 0x000b, 0x377a: 0x000b, 0x377b: 0x000b, + 0x377c: 0x000b, 0x377d: 0x000b, 0x377e: 0x000b, 0x377f: 0x000b, +} + +// bidiIndex: 24 blocks, 1536 entries, 1536 bytes +// Block 0 is the zero block. +var bidiIndex = [1536]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x02, + 0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08, + 0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b, + 0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, + 0xea: 0x07, 0xef: 0x08, + 0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15, + // Block 0x4, offset 0x100 + 0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b, + 0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22, + 0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28, + 0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30, + // Block 0x5, offset 0x140 + 0x140: 0x31, 0x141: 0x32, 0x142: 0x33, + 0x14d: 0x34, 0x14e: 0x35, + 0x150: 0x36, + 0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b, + 0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40, + 0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47, + 0x170: 0x48, 0x173: 0x49, 0x177: 0x4a, + 0x17e: 0x4b, 0x17f: 0x4c, + // Block 0x6, offset 0x180 + 0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54, + 0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x59, + 0x190: 0x5a, 0x191: 0x5b, 0x192: 0x5c, 0x193: 0x5d, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54, + 0x198: 0x54, 0x199: 0x54, 0x19a: 0x5e, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5f, 0x19e: 0x54, 0x19f: 0x60, + 0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x61, 0x1a7: 0x62, + 0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x63, 0x1ae: 0x64, 0x1af: 0x65, + 0x1b3: 0x66, 0x1b5: 0x67, 0x1b7: 0x68, + 0x1b8: 0x69, 0x1b9: 0x6a, 0x1ba: 0x6b, 0x1bb: 0x6c, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6d, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x6e, 0x1c2: 0x6f, 0x1c3: 0x70, 0x1c7: 0x71, + 0x1c8: 0x72, 0x1c9: 0x73, 0x1ca: 0x74, 0x1cb: 0x75, 0x1cd: 0x76, 0x1cf: 0x77, + // Block 0x8, offset 0x200 + 0x237: 0x54, + // Block 0x9, offset 0x240 + 0x252: 0x78, 0x253: 0x79, + 0x258: 0x7a, 0x259: 0x7b, 0x25a: 0x7c, 0x25b: 0x7d, 0x25c: 0x7e, 0x25e: 0x7f, + 0x260: 0x80, 0x261: 0x81, 0x263: 0x82, 0x264: 0x83, 0x265: 0x84, 0x266: 0x85, 0x267: 0x86, + 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26f: 0x8b, + // Block 0xa, offset 0x280 + 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x0e, 0x2af: 0x0e, + 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8e, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8f, + 0x2b8: 0x90, 0x2b9: 0x91, 0x2ba: 0x0e, 0x2bb: 0x92, 0x2bc: 0x93, 0x2bd: 0x94, 0x2bf: 0x95, + // Block 0xb, offset 0x2c0 + 0x2c4: 0x96, 0x2c5: 0x54, 0x2c6: 0x97, 0x2c7: 0x98, + 0x2cb: 0x99, 0x2cd: 0x9a, + 0x2e0: 0x9b, 0x2e1: 0x9b, 0x2e2: 0x9b, 0x2e3: 0x9b, 0x2e4: 0x9c, 0x2e5: 0x9b, 0x2e6: 0x9b, 0x2e7: 0x9b, + 0x2e8: 0x9d, 0x2e9: 0x9b, 0x2ea: 0x9b, 0x2eb: 0x9e, 0x2ec: 0x9f, 0x2ed: 0x9b, 0x2ee: 0x9b, 0x2ef: 0x9b, + 0x2f0: 0x9b, 0x2f1: 0x9b, 0x2f2: 0x9b, 0x2f3: 0x9b, 0x2f4: 0x9b, 0x2f5: 0x9b, 0x2f6: 0x9b, 0x2f7: 0x9b, + 0x2f8: 0x9b, 0x2f9: 0xa0, 0x2fa: 0x9b, 0x2fb: 0x9b, 0x2fc: 0x9b, 0x2fd: 0x9b, 0x2fe: 0x9b, 0x2ff: 0x9b, + // Block 0xc, offset 0x300 + 0x300: 0xa1, 0x301: 0xa2, 0x302: 0xa3, 0x304: 0xa4, 0x305: 0xa5, 0x306: 0xa6, 0x307: 0xa7, + 0x308: 0xa8, 0x30b: 0xa9, 0x30c: 0xaa, 0x30d: 0xab, + 0x310: 0xac, 0x311: 0xad, 0x312: 0xae, 0x313: 0xaf, 0x316: 0xb0, 0x317: 0xb1, + 0x318: 0xb2, 0x319: 0xb3, 0x31a: 0xb4, 0x31c: 0xb5, + 0x330: 0xb6, 0x332: 0xb7, + // Block 0xd, offset 0x340 + 0x36b: 0xb8, 0x36c: 0xb9, + 0x37e: 0xba, + // Block 0xe, offset 0x380 + 0x3b2: 0xbb, + // Block 0xf, offset 0x3c0 + 0x3c5: 0xbc, 0x3c6: 0xbd, + 0x3c8: 0x54, 0x3c9: 0xbe, 0x3cc: 0x54, 0x3cd: 0xbf, + 0x3db: 0xc0, 0x3dc: 0xc1, 0x3dd: 0xc2, 0x3de: 0xc3, 0x3df: 0xc4, + 0x3e8: 0xc5, 0x3e9: 0xc6, 0x3ea: 0xc7, + // Block 0x10, offset 0x400 + 0x400: 0xc8, + 0x420: 0x9b, 0x421: 0x9b, 0x422: 0x9b, 0x423: 0xc9, 0x424: 0x9b, 0x425: 0xca, 0x426: 0x9b, 0x427: 0x9b, + 0x428: 0x9b, 0x429: 0x9b, 0x42a: 0x9b, 0x42b: 0x9b, 0x42c: 0x9b, 0x42d: 0x9b, 0x42e: 0x9b, 0x42f: 0x9b, + 0x430: 0x9b, 0x431: 0x9b, 0x432: 0x9b, 0x433: 0x9b, 0x434: 0x9b, 0x435: 0x9b, 0x436: 0x9b, 0x437: 0x9b, + 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xcb, 0x43c: 0x9b, 0x43d: 0x9b, 0x43e: 0x9b, 0x43f: 0x9b, + // Block 0x11, offset 0x440 + 0x440: 0xcc, 0x441: 0x54, 0x442: 0xcd, 0x443: 0xce, 0x444: 0xcf, 0x445: 0xd0, + 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54, + 0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54, + 0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xd1, 0x45c: 0x54, 0x45d: 0x6c, 0x45e: 0x54, 0x45f: 0xd2, + 0x460: 0xd3, 0x461: 0xd4, 0x462: 0xd5, 0x464: 0xd6, 0x465: 0xd7, 0x466: 0xd8, 0x467: 0x36, + 0x47f: 0xd9, + // Block 0x12, offset 0x480 + 0x4bf: 0xd9, + // Block 0x13, offset 0x4c0 + 0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b, + 0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f, + 0x4ef: 0x10, + 0x4ff: 0x10, + // Block 0x14, offset 0x500 + 0x50f: 0x10, + 0x51f: 0x10, + 0x52f: 0x10, + 0x53f: 0x10, + // Block 0x15, offset 0x540 + 0x540: 0xda, 0x541: 0xda, 0x542: 0xda, 0x543: 0xda, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xdb, + 0x548: 0xda, 0x549: 0xda, 0x54a: 0xda, 0x54b: 0xda, 0x54c: 0xda, 0x54d: 0xda, 0x54e: 0xda, 0x54f: 0xda, + 0x550: 0xda, 0x551: 0xda, 0x552: 0xda, 0x553: 0xda, 0x554: 0xda, 0x555: 0xda, 0x556: 0xda, 0x557: 0xda, + 0x558: 0xda, 0x559: 0xda, 0x55a: 0xda, 0x55b: 0xda, 0x55c: 0xda, 0x55d: 0xda, 0x55e: 0xda, 0x55f: 0xda, + 0x560: 0xda, 0x561: 0xda, 0x562: 0xda, 0x563: 0xda, 0x564: 0xda, 0x565: 0xda, 0x566: 0xda, 0x567: 0xda, + 0x568: 0xda, 0x569: 0xda, 0x56a: 0xda, 0x56b: 0xda, 0x56c: 0xda, 0x56d: 0xda, 0x56e: 0xda, 0x56f: 0xda, + 0x570: 0xda, 0x571: 0xda, 0x572: 0xda, 0x573: 0xda, 0x574: 0xda, 0x575: 0xda, 0x576: 0xda, 0x577: 0xda, + 0x578: 0xda, 0x579: 0xda, 0x57a: 0xda, 0x57b: 0xda, 0x57c: 0xda, 0x57d: 0xda, 0x57e: 0xda, 0x57f: 0xda, + // Block 0x16, offset 0x580 + 0x58f: 0x10, + 0x59f: 0x10, + 0x5a0: 0x13, + 0x5af: 0x10, + 0x5bf: 0x10, + // Block 0x17, offset 0x5c0 + 0x5cf: 0x10, +} + +// Total table size 15800 bytes (15KiB); checksum: F50EF68C diff --git a/vendor/golang.org/x/text/unicode/bidi/trieval.go b/vendor/golang.org/x/text/unicode/bidi/trieval.go new file mode 100644 index 0000000000..bebd855efd --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/trieval.go @@ -0,0 +1,60 @@ +// This file was generated by go generate; DO NOT EDIT + +package bidi + +// Class is the Unicode BiDi class. Each rune has a single class. +type Class uint + +const ( + L Class = iota // LeftToRight + R // RightToLeft + EN // EuropeanNumber + ES // EuropeanSeparator + ET // EuropeanTerminator + AN // ArabicNumber + CS // CommonSeparator + B // ParagraphSeparator + S // SegmentSeparator + WS // WhiteSpace + ON // OtherNeutral + BN // BoundaryNeutral + NSM // NonspacingMark + AL // ArabicLetter + Control // Control LRO - PDI + + numClass + + LRO // LeftToRightOverride + RLO // RightToLeftOverride + LRE // LeftToRightEmbedding + RLE // RightToLeftEmbedding + PDF // PopDirectionalFormat + LRI // LeftToRightIsolate + RLI // RightToLeftIsolate + FSI // FirstStrongIsolate + PDI // PopDirectionalIsolate + + unknownClass = ^Class(0) +) + +var controlToClass = map[rune]Class{ + 0x202D: LRO, // LeftToRightOverride, + 0x202E: RLO, // RightToLeftOverride, + 0x202A: LRE, // LeftToRightEmbedding, + 0x202B: RLE, // RightToLeftEmbedding, + 0x202C: PDF, // PopDirectionalFormat, + 0x2066: LRI, // LeftToRightIsolate, + 0x2067: RLI, // RightToLeftIsolate, + 0x2068: FSI, // FirstStrongIsolate, + 0x2069: PDI, // PopDirectionalIsolate, +} + +// A trie entry has the following bits: +// 7..5 XOR mask for brackets +// 4 1: Bracket open, 0: Bracket close +// 3..0 Class type + +const ( + openMask = 0x10 + xorMaskShift = 5 +) diff --git a/vendor/golang.org/x/text/unicode/norm/composition.go b/vendor/golang.org/x/text/unicode/norm/composition.go new file mode 100644 index 0000000000..d17b278adc --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/composition.go @@ -0,0 +1,514 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +import "unicode/utf8" + +const ( + maxNonStarters = 30 + // The maximum number of characters needed for a buffer is + // maxNonStarters + 1 for the starter + 1 for the GCJ + maxBufferSize = maxNonStarters + 2 + maxNFCExpansion = 3 // NFC(0x1D160) + maxNFKCExpansion = 18 // NFKC(0xFDFA) + + maxByteBufferSize = utf8.UTFMax * maxBufferSize // 128 +) + +// ssState is used for reporting the segment state after inserting a rune. +// It is returned by streamSafe.next. +type ssState int + +const ( + // Indicates a rune was successfully added to the segment. + ssSuccess ssState = iota + // Indicates a rune starts a new segment and should not be added. + ssStarter + // Indicates a rune caused a segment overflow and a CGJ should be inserted. + ssOverflow +) + +// streamSafe implements the policy of when a CGJ should be inserted. +type streamSafe uint8 + +// mkStreamSafe is a shorthand for declaring a streamSafe var and calling +// first on it. +func mkStreamSafe(p Properties) streamSafe { + return streamSafe(p.nTrailingNonStarters()) +} + +// first inserts the first rune of a segment. +func (ss *streamSafe) first(p Properties) { + if *ss != 0 { + panic("!= 0") + } + *ss = streamSafe(p.nTrailingNonStarters()) +} + +// insert returns a ssState value to indicate whether a rune represented by p +// can be inserted. +func (ss *streamSafe) next(p Properties) ssState { + if *ss > maxNonStarters { + panic("streamSafe was not reset") + } + n := p.nLeadingNonStarters() + if *ss += streamSafe(n); *ss > maxNonStarters { + *ss = 0 + return ssOverflow + } + // The Stream-Safe Text Processing prescribes that the counting can stop + // as soon as a starter is encountered. However, there are some starters, + // like Jamo V and T, that can combine with other runes, leaving their + // successive non-starters appended to the previous, possibly causing an + // overflow. We will therefore consider any rune with a non-zero nLead to + // be a non-starter. Note that it always hold that if nLead > 0 then + // nLead == nTrail. + if n == 0 { + *ss = 0 + return ssStarter + } + return ssSuccess +} + +// backwards is used for checking for overflow and segment starts +// when traversing a string backwards. Users do not need to call first +// for the first rune. The state of the streamSafe retains the count of +// the non-starters loaded. +func (ss *streamSafe) backwards(p Properties) ssState { + if *ss > maxNonStarters { + panic("streamSafe was not reset") + } + c := *ss + streamSafe(p.nTrailingNonStarters()) + if c > maxNonStarters { + return ssOverflow + } + *ss = c + if p.nLeadingNonStarters() == 0 { + return ssStarter + } + return ssSuccess +} + +func (ss streamSafe) isMax() bool { + return ss == maxNonStarters +} + +// GraphemeJoiner is inserted after maxNonStarters non-starter runes. +const GraphemeJoiner = "\u034F" + +// reorderBuffer is used to normalize a single segment. Characters inserted with +// insert are decomposed and reordered based on CCC. The compose method can +// be used to recombine characters. Note that the byte buffer does not hold +// the UTF-8 characters in order. Only the rune array is maintained in sorted +// order. flush writes the resulting segment to a byte array. +type reorderBuffer struct { + rune [maxBufferSize]Properties // Per character info. + byte [maxByteBufferSize]byte // UTF-8 buffer. Referenced by runeInfo.pos. + nbyte uint8 // Number or bytes. + ss streamSafe // For limiting length of non-starter sequence. + nrune int // Number of runeInfos. + f formInfo + + src input + nsrc int + tmpBytes input + + out []byte + flushF func(*reorderBuffer) bool +} + +func (rb *reorderBuffer) init(f Form, src []byte) { + rb.f = *formTable[f] + rb.src.setBytes(src) + rb.nsrc = len(src) + rb.ss = 0 +} + +func (rb *reorderBuffer) initString(f Form, src string) { + rb.f = *formTable[f] + rb.src.setString(src) + rb.nsrc = len(src) + rb.ss = 0 +} + +func (rb *reorderBuffer) setFlusher(out []byte, f func(*reorderBuffer) bool) { + rb.out = out + rb.flushF = f +} + +// reset discards all characters from the buffer. +func (rb *reorderBuffer) reset() { + rb.nrune = 0 + rb.nbyte = 0 + rb.ss = 0 +} + +func (rb *reorderBuffer) doFlush() bool { + if rb.f.composing { + rb.compose() + } + res := rb.flushF(rb) + rb.reset() + return res +} + +// appendFlush appends the normalized segment to rb.out. +func appendFlush(rb *reorderBuffer) bool { + for i := 0; i < rb.nrune; i++ { + start := rb.rune[i].pos + end := start + rb.rune[i].size + rb.out = append(rb.out, rb.byte[start:end]...) + } + return true +} + +// flush appends the normalized segment to out and resets rb. +func (rb *reorderBuffer) flush(out []byte) []byte { + for i := 0; i < rb.nrune; i++ { + start := rb.rune[i].pos + end := start + rb.rune[i].size + out = append(out, rb.byte[start:end]...) + } + rb.reset() + return out +} + +// flushCopy copies the normalized segment to buf and resets rb. +// It returns the number of bytes written to buf. +func (rb *reorderBuffer) flushCopy(buf []byte) int { + p := 0 + for i := 0; i < rb.nrune; i++ { + runep := rb.rune[i] + p += copy(buf[p:], rb.byte[runep.pos:runep.pos+runep.size]) + } + rb.reset() + return p +} + +// insertOrdered inserts a rune in the buffer, ordered by Canonical Combining Class. +// It returns false if the buffer is not large enough to hold the rune. +// It is used internally by insert and insertString only. +func (rb *reorderBuffer) insertOrdered(info Properties) { + n := rb.nrune + b := rb.rune[:] + cc := info.ccc + if cc > 0 { + // Find insertion position + move elements to make room. + for ; n > 0; n-- { + if b[n-1].ccc <= cc { + break + } + b[n] = b[n-1] + } + } + rb.nrune += 1 + pos := uint8(rb.nbyte) + rb.nbyte += utf8.UTFMax + info.pos = pos + b[n] = info +} + +// insertErr is an error code returned by insert. Using this type instead +// of error improves performance up to 20% for many of the benchmarks. +type insertErr int + +const ( + iSuccess insertErr = -iota + iShortDst + iShortSrc +) + +// insertFlush inserts the given rune in the buffer ordered by CCC. +// If a decomposition with multiple segments are encountered, they leading +// ones are flushed. +// It returns a non-zero error code if the rune was not inserted. +func (rb *reorderBuffer) insertFlush(src input, i int, info Properties) insertErr { + if rune := src.hangul(i); rune != 0 { + rb.decomposeHangul(rune) + return iSuccess + } + if info.hasDecomposition() { + return rb.insertDecomposed(info.Decomposition()) + } + rb.insertSingle(src, i, info) + return iSuccess +} + +// insertUnsafe inserts the given rune in the buffer ordered by CCC. +// It is assumed there is sufficient space to hold the runes. It is the +// responsibility of the caller to ensure this. This can be done by checking +// the state returned by the streamSafe type. +func (rb *reorderBuffer) insertUnsafe(src input, i int, info Properties) { + if rune := src.hangul(i); rune != 0 { + rb.decomposeHangul(rune) + } + if info.hasDecomposition() { + // TODO: inline. + rb.insertDecomposed(info.Decomposition()) + } else { + rb.insertSingle(src, i, info) + } +} + +// insertDecomposed inserts an entry in to the reorderBuffer for each rune +// in dcomp. dcomp must be a sequence of decomposed UTF-8-encoded runes. +// It flushes the buffer on each new segment start. +func (rb *reorderBuffer) insertDecomposed(dcomp []byte) insertErr { + rb.tmpBytes.setBytes(dcomp) + for i := 0; i < len(dcomp); { + info := rb.f.info(rb.tmpBytes, i) + if info.BoundaryBefore() && rb.nrune > 0 && !rb.doFlush() { + return iShortDst + } + i += copy(rb.byte[rb.nbyte:], dcomp[i:i+int(info.size)]) + rb.insertOrdered(info) + } + return iSuccess +} + +// insertSingle inserts an entry in the reorderBuffer for the rune at +// position i. info is the runeInfo for the rune at position i. +func (rb *reorderBuffer) insertSingle(src input, i int, info Properties) { + src.copySlice(rb.byte[rb.nbyte:], i, i+int(info.size)) + rb.insertOrdered(info) +} + +// insertCGJ inserts a Combining Grapheme Joiner (0x034f) into rb. +func (rb *reorderBuffer) insertCGJ() { + rb.insertSingle(input{str: GraphemeJoiner}, 0, Properties{size: uint8(len(GraphemeJoiner))}) +} + +// appendRune inserts a rune at the end of the buffer. It is used for Hangul. +func (rb *reorderBuffer) appendRune(r rune) { + bn := rb.nbyte + sz := utf8.EncodeRune(rb.byte[bn:], rune(r)) + rb.nbyte += utf8.UTFMax + rb.rune[rb.nrune] = Properties{pos: bn, size: uint8(sz)} + rb.nrune++ +} + +// assignRune sets a rune at position pos. It is used for Hangul and recomposition. +func (rb *reorderBuffer) assignRune(pos int, r rune) { + bn := rb.rune[pos].pos + sz := utf8.EncodeRune(rb.byte[bn:], rune(r)) + rb.rune[pos] = Properties{pos: bn, size: uint8(sz)} +} + +// runeAt returns the rune at position n. It is used for Hangul and recomposition. +func (rb *reorderBuffer) runeAt(n int) rune { + inf := rb.rune[n] + r, _ := utf8.DecodeRune(rb.byte[inf.pos : inf.pos+inf.size]) + return r +} + +// bytesAt returns the UTF-8 encoding of the rune at position n. +// It is used for Hangul and recomposition. +func (rb *reorderBuffer) bytesAt(n int) []byte { + inf := rb.rune[n] + return rb.byte[inf.pos : int(inf.pos)+int(inf.size)] +} + +// For Hangul we combine algorithmically, instead of using tables. +const ( + hangulBase = 0xAC00 // UTF-8(hangulBase) -> EA B0 80 + hangulBase0 = 0xEA + hangulBase1 = 0xB0 + hangulBase2 = 0x80 + + hangulEnd = hangulBase + jamoLVTCount // UTF-8(0xD7A4) -> ED 9E A4 + hangulEnd0 = 0xED + hangulEnd1 = 0x9E + hangulEnd2 = 0xA4 + + jamoLBase = 0x1100 // UTF-8(jamoLBase) -> E1 84 00 + jamoLBase0 = 0xE1 + jamoLBase1 = 0x84 + jamoLEnd = 0x1113 + jamoVBase = 0x1161 + jamoVEnd = 0x1176 + jamoTBase = 0x11A7 + jamoTEnd = 0x11C3 + + jamoTCount = 28 + jamoVCount = 21 + jamoVTCount = 21 * 28 + jamoLVTCount = 19 * 21 * 28 +) + +const hangulUTF8Size = 3 + +func isHangul(b []byte) bool { + if len(b) < hangulUTF8Size { + return false + } + b0 := b[0] + if b0 < hangulBase0 { + return false + } + b1 := b[1] + switch { + case b0 == hangulBase0: + return b1 >= hangulBase1 + case b0 < hangulEnd0: + return true + case b0 > hangulEnd0: + return false + case b1 < hangulEnd1: + return true + } + return b1 == hangulEnd1 && b[2] < hangulEnd2 +} + +func isHangulString(b string) bool { + if len(b) < hangulUTF8Size { + return false + } + b0 := b[0] + if b0 < hangulBase0 { + return false + } + b1 := b[1] + switch { + case b0 == hangulBase0: + return b1 >= hangulBase1 + case b0 < hangulEnd0: + return true + case b0 > hangulEnd0: + return false + case b1 < hangulEnd1: + return true + } + return b1 == hangulEnd1 && b[2] < hangulEnd2 +} + +// Caller must ensure len(b) >= 2. +func isJamoVT(b []byte) bool { + // True if (rune & 0xff00) == jamoLBase + return b[0] == jamoLBase0 && (b[1]&0xFC) == jamoLBase1 +} + +func isHangulWithoutJamoT(b []byte) bool { + c, _ := utf8.DecodeRune(b) + c -= hangulBase + return c < jamoLVTCount && c%jamoTCount == 0 +} + +// decomposeHangul writes the decomposed Hangul to buf and returns the number +// of bytes written. len(buf) should be at least 9. +func decomposeHangul(buf []byte, r rune) int { + const JamoUTF8Len = 3 + r -= hangulBase + x := r % jamoTCount + r /= jamoTCount + utf8.EncodeRune(buf, jamoLBase+r/jamoVCount) + utf8.EncodeRune(buf[JamoUTF8Len:], jamoVBase+r%jamoVCount) + if x != 0 { + utf8.EncodeRune(buf[2*JamoUTF8Len:], jamoTBase+x) + return 3 * JamoUTF8Len + } + return 2 * JamoUTF8Len +} + +// decomposeHangul algorithmically decomposes a Hangul rune into +// its Jamo components. +// See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul. +func (rb *reorderBuffer) decomposeHangul(r rune) { + r -= hangulBase + x := r % jamoTCount + r /= jamoTCount + rb.appendRune(jamoLBase + r/jamoVCount) + rb.appendRune(jamoVBase + r%jamoVCount) + if x != 0 { + rb.appendRune(jamoTBase + x) + } +} + +// combineHangul algorithmically combines Jamo character components into Hangul. +// See http://unicode.org/reports/tr15/#Hangul for details on combining Hangul. +func (rb *reorderBuffer) combineHangul(s, i, k int) { + b := rb.rune[:] + bn := rb.nrune + for ; i < bn; i++ { + cccB := b[k-1].ccc + cccC := b[i].ccc + if cccB == 0 { + s = k - 1 + } + if s != k-1 && cccB >= cccC { + // b[i] is blocked by greater-equal cccX below it + b[k] = b[i] + k++ + } else { + l := rb.runeAt(s) // also used to compare to hangulBase + v := rb.runeAt(i) // also used to compare to jamoT + switch { + case jamoLBase <= l && l < jamoLEnd && + jamoVBase <= v && v < jamoVEnd: + // 11xx plus 116x to LV + rb.assignRune(s, hangulBase+ + (l-jamoLBase)*jamoVTCount+(v-jamoVBase)*jamoTCount) + case hangulBase <= l && l < hangulEnd && + jamoTBase < v && v < jamoTEnd && + ((l-hangulBase)%jamoTCount) == 0: + // ACxx plus 11Ax to LVT + rb.assignRune(s, l+v-jamoTBase) + default: + b[k] = b[i] + k++ + } + } + } + rb.nrune = k +} + +// compose recombines the runes in the buffer. +// It should only be used to recompose a single segment, as it will not +// handle alternations between Hangul and non-Hangul characters correctly. +func (rb *reorderBuffer) compose() { + // UAX #15, section X5 , including Corrigendum #5 + // "In any character sequence beginning with starter S, a character C is + // blocked from S if and only if there is some character B between S + // and C, and either B is a starter or it has the same or higher + // combining class as C." + bn := rb.nrune + if bn == 0 { + return + } + k := 1 + b := rb.rune[:] + for s, i := 0, 1; i < bn; i++ { + if isJamoVT(rb.bytesAt(i)) { + // Redo from start in Hangul mode. Necessary to support + // U+320E..U+321E in NFKC mode. + rb.combineHangul(s, i, k) + return + } + ii := b[i] + // We can only use combineForward as a filter if we later + // get the info for the combined character. This is more + // expensive than using the filter. Using combinesBackward() + // is safe. + if ii.combinesBackward() { + cccB := b[k-1].ccc + cccC := ii.ccc + blocked := false // b[i] blocked by starter or greater or equal CCC? + if cccB == 0 { + s = k - 1 + } else { + blocked = s != k-1 && cccB >= cccC + } + if !blocked { + combined := combine(rb.runeAt(s), rb.runeAt(i)) + if combined != 0 { + rb.assignRune(s, combined) + continue + } + } + } + b[k] = b[i] + k++ + } + rb.nrune = k +} diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo.go b/vendor/golang.org/x/text/unicode/norm/forminfo.go new file mode 100644 index 0000000000..15a67c653a --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/forminfo.go @@ -0,0 +1,256 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +// This file contains Form-specific logic and wrappers for data in tables.go. + +// Rune info is stored in a separate trie per composing form. A composing form +// and its corresponding decomposing form share the same trie. Each trie maps +// a rune to a uint16. The values take two forms. For v >= 0x8000: +// bits +// 15: 1 (inverse of NFD_QD bit of qcInfo) +// 13..7: qcInfo (see below). isYesD is always true (no decompostion). +// 6..0: ccc (compressed CCC value). +// For v < 0x8000, the respective rune has a decomposition and v is an index +// into a byte array of UTF-8 decomposition sequences and additional info and +// has the form: +// <header> <decomp_byte>* [<tccc> [<lccc>]] +// The header contains the number of bytes in the decomposition (excluding this +// length byte). The two most significant bits of this length byte correspond +// to bit 5 and 4 of qcInfo (see below). The byte sequence itself starts at v+1. +// The byte sequence is followed by a trailing and leading CCC if the values +// for these are not zero. The value of v determines which ccc are appended +// to the sequences. For v < firstCCC, there are none, for v >= firstCCC, +// the sequence is followed by a trailing ccc, and for v >= firstLeadingCC +// there is an additional leading ccc. The value of tccc itself is the +// trailing CCC shifted left 2 bits. The two least-significant bits of tccc +// are the number of trailing non-starters. + +const ( + qcInfoMask = 0x3F // to clear all but the relevant bits in a qcInfo + headerLenMask = 0x3F // extract the length value from the header byte + headerFlagsMask = 0xC0 // extract the qcInfo bits from the header byte +) + +// Properties provides access to normalization properties of a rune. +type Properties struct { + pos uint8 // start position in reorderBuffer; used in composition.go + size uint8 // length of UTF-8 encoding of this rune + ccc uint8 // leading canonical combining class (ccc if not decomposition) + tccc uint8 // trailing canonical combining class (ccc if not decomposition) + nLead uint8 // number of leading non-starters. + flags qcInfo // quick check flags + index uint16 +} + +// functions dispatchable per form +type lookupFunc func(b input, i int) Properties + +// formInfo holds Form-specific functions and tables. +type formInfo struct { + form Form + composing, compatibility bool // form type + info lookupFunc + nextMain iterFunc +} + +var formTable []*formInfo + +func init() { + formTable = make([]*formInfo, 4) + + for i := range formTable { + f := &formInfo{} + formTable[i] = f + f.form = Form(i) + if Form(i) == NFKD || Form(i) == NFKC { + f.compatibility = true + f.info = lookupInfoNFKC + } else { + f.info = lookupInfoNFC + } + f.nextMain = nextDecomposed + if Form(i) == NFC || Form(i) == NFKC { + f.nextMain = nextComposed + f.composing = true + } + } +} + +// We do not distinguish between boundaries for NFC, NFD, etc. to avoid +// unexpected behavior for the user. For example, in NFD, there is a boundary +// after 'a'. However, 'a' might combine with modifiers, so from the application's +// perspective it is not a good boundary. We will therefore always use the +// boundaries for the combining variants. + +// BoundaryBefore returns true if this rune starts a new segment and +// cannot combine with any rune on the left. +func (p Properties) BoundaryBefore() bool { + if p.ccc == 0 && !p.combinesBackward() { + return true + } + // We assume that the CCC of the first character in a decomposition + // is always non-zero if different from info.ccc and that we can return + // false at this point. This is verified by maketables. + return false +} + +// BoundaryAfter returns true if runes cannot combine with or otherwise +// interact with this or previous runes. +func (p Properties) BoundaryAfter() bool { + // TODO: loosen these conditions. + return p.isInert() +} + +// We pack quick check data in 4 bits: +// 5: Combines forward (0 == false, 1 == true) +// 4..3: NFC_QC Yes(00), No (10), or Maybe (11) +// 2: NFD_QC Yes (0) or No (1). No also means there is a decomposition. +// 1..0: Number of trailing non-starters. +// +// When all 4 bits are zero, the character is inert, meaning it is never +// influenced by normalization. +type qcInfo uint8 + +func (p Properties) isYesC() bool { return p.flags&0x10 == 0 } +func (p Properties) isYesD() bool { return p.flags&0x4 == 0 } + +func (p Properties) combinesForward() bool { return p.flags&0x20 != 0 } +func (p Properties) combinesBackward() bool { return p.flags&0x8 != 0 } // == isMaybe +func (p Properties) hasDecomposition() bool { return p.flags&0x4 != 0 } // == isNoD + +func (p Properties) isInert() bool { + return p.flags&qcInfoMask == 0 && p.ccc == 0 +} + +func (p Properties) multiSegment() bool { + return p.index >= firstMulti && p.index < endMulti +} + +func (p Properties) nLeadingNonStarters() uint8 { + return p.nLead +} + +func (p Properties) nTrailingNonStarters() uint8 { + return uint8(p.flags & 0x03) +} + +// Decomposition returns the decomposition for the underlying rune +// or nil if there is none. +func (p Properties) Decomposition() []byte { + // TODO: create the decomposition for Hangul? + if p.index == 0 { + return nil + } + i := p.index + n := decomps[i] & headerLenMask + i++ + return decomps[i : i+uint16(n)] +} + +// Size returns the length of UTF-8 encoding of the rune. +func (p Properties) Size() int { + return int(p.size) +} + +// CCC returns the canonical combining class of the underlying rune. +func (p Properties) CCC() uint8 { + if p.index >= firstCCCZeroExcept { + return 0 + } + return ccc[p.ccc] +} + +// LeadCCC returns the CCC of the first rune in the decomposition. +// If there is no decomposition, LeadCCC equals CCC. +func (p Properties) LeadCCC() uint8 { + return ccc[p.ccc] +} + +// TrailCCC returns the CCC of the last rune in the decomposition. +// If there is no decomposition, TrailCCC equals CCC. +func (p Properties) TrailCCC() uint8 { + return ccc[p.tccc] +} + +// Recomposition +// We use 32-bit keys instead of 64-bit for the two codepoint keys. +// This clips off the bits of three entries, but we know this will not +// result in a collision. In the unlikely event that changes to +// UnicodeData.txt introduce collisions, the compiler will catch it. +// Note that the recomposition map for NFC and NFKC are identical. + +// combine returns the combined rune or 0 if it doesn't exist. +func combine(a, b rune) rune { + key := uint32(uint16(a))<<16 + uint32(uint16(b)) + return recompMap[key] +} + +func lookupInfoNFC(b input, i int) Properties { + v, sz := b.charinfoNFC(i) + return compInfo(v, sz) +} + +func lookupInfoNFKC(b input, i int) Properties { + v, sz := b.charinfoNFKC(i) + return compInfo(v, sz) +} + +// Properties returns properties for the first rune in s. +func (f Form) Properties(s []byte) Properties { + if f == NFC || f == NFD { + return compInfo(nfcData.lookup(s)) + } + return compInfo(nfkcData.lookup(s)) +} + +// PropertiesString returns properties for the first rune in s. +func (f Form) PropertiesString(s string) Properties { + if f == NFC || f == NFD { + return compInfo(nfcData.lookupString(s)) + } + return compInfo(nfkcData.lookupString(s)) +} + +// compInfo converts the information contained in v and sz +// to a Properties. See the comment at the top of the file +// for more information on the format. +func compInfo(v uint16, sz int) Properties { + if v == 0 { + return Properties{size: uint8(sz)} + } else if v >= 0x8000 { + p := Properties{ + size: uint8(sz), + ccc: uint8(v), + tccc: uint8(v), + flags: qcInfo(v >> 8), + } + if p.ccc > 0 || p.combinesBackward() { + p.nLead = uint8(p.flags & 0x3) + } + return p + } + // has decomposition + h := decomps[v] + f := (qcInfo(h&headerFlagsMask) >> 2) | 0x4 + p := Properties{size: uint8(sz), flags: f, index: v} + if v >= firstCCC { + v += uint16(h&headerLenMask) + 1 + c := decomps[v] + p.tccc = c >> 2 + p.flags |= qcInfo(c & 0x3) + if v >= firstLeadingCCC { + p.nLead = c & 0x3 + if v >= firstStarterWithNLead { + // We were tricked. Remove the decomposition. + p.flags &= 0x03 + p.index = 0 + return p + } + p.ccc = decomps[v+1] + } + } + return p +} diff --git a/vendor/golang.org/x/text/unicode/norm/input.go b/vendor/golang.org/x/text/unicode/norm/input.go new file mode 100644 index 0000000000..045d4ccce2 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/input.go @@ -0,0 +1,105 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +import "unicode/utf8" + +type input struct { + str string + bytes []byte +} + +func inputBytes(str []byte) input { + return input{bytes: str} +} + +func inputString(str string) input { + return input{str: str} +} + +func (in *input) setBytes(str []byte) { + in.str = "" + in.bytes = str +} + +func (in *input) setString(str string) { + in.str = str + in.bytes = nil +} + +func (in *input) _byte(p int) byte { + if in.bytes == nil { + return in.str[p] + } + return in.bytes[p] +} + +func (in *input) skipASCII(p, max int) int { + if in.bytes == nil { + for ; p < max && in.str[p] < utf8.RuneSelf; p++ { + } + } else { + for ; p < max && in.bytes[p] < utf8.RuneSelf; p++ { + } + } + return p +} + +func (in *input) skipContinuationBytes(p int) int { + if in.bytes == nil { + for ; p < len(in.str) && !utf8.RuneStart(in.str[p]); p++ { + } + } else { + for ; p < len(in.bytes) && !utf8.RuneStart(in.bytes[p]); p++ { + } + } + return p +} + +func (in *input) appendSlice(buf []byte, b, e int) []byte { + if in.bytes != nil { + return append(buf, in.bytes[b:e]...) + } + for i := b; i < e; i++ { + buf = append(buf, in.str[i]) + } + return buf +} + +func (in *input) copySlice(buf []byte, b, e int) int { + if in.bytes == nil { + return copy(buf, in.str[b:e]) + } + return copy(buf, in.bytes[b:e]) +} + +func (in *input) charinfoNFC(p int) (uint16, int) { + if in.bytes == nil { + return nfcData.lookupString(in.str[p:]) + } + return nfcData.lookup(in.bytes[p:]) +} + +func (in *input) charinfoNFKC(p int) (uint16, int) { + if in.bytes == nil { + return nfkcData.lookupString(in.str[p:]) + } + return nfkcData.lookup(in.bytes[p:]) +} + +func (in *input) hangul(p int) (r rune) { + if in.bytes == nil { + if !isHangulString(in.str[p:]) { + return 0 + } + r, _ = utf8.DecodeRuneInString(in.str[p:]) + } else { + if !isHangul(in.bytes[p:]) { + return 0 + } + r, _ = utf8.DecodeRune(in.bytes[p:]) + } + return r +} diff --git a/vendor/golang.org/x/text/unicode/norm/iter.go b/vendor/golang.org/x/text/unicode/norm/iter.go new file mode 100644 index 0000000000..0a42a72de8 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/iter.go @@ -0,0 +1,450 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +import ( + "fmt" + "unicode/utf8" +) + +// MaxSegmentSize is the maximum size of a byte buffer needed to consider any +// sequence of starter and non-starter runes for the purpose of normalization. +const MaxSegmentSize = maxByteBufferSize + +// An Iter iterates over a string or byte slice, while normalizing it +// to a given Form. +type Iter struct { + rb reorderBuffer + buf [maxByteBufferSize]byte + info Properties // first character saved from previous iteration + next iterFunc // implementation of next depends on form + asciiF iterFunc + + p int // current position in input source + multiSeg []byte // remainder of multi-segment decomposition +} + +type iterFunc func(*Iter) []byte + +// Init initializes i to iterate over src after normalizing it to Form f. +func (i *Iter) Init(f Form, src []byte) { + i.p = 0 + if len(src) == 0 { + i.setDone() + i.rb.nsrc = 0 + return + } + i.multiSeg = nil + i.rb.init(f, src) + i.next = i.rb.f.nextMain + i.asciiF = nextASCIIBytes + i.info = i.rb.f.info(i.rb.src, i.p) +} + +// InitString initializes i to iterate over src after normalizing it to Form f. +func (i *Iter) InitString(f Form, src string) { + i.p = 0 + if len(src) == 0 { + i.setDone() + i.rb.nsrc = 0 + return + } + i.multiSeg = nil + i.rb.initString(f, src) + i.next = i.rb.f.nextMain + i.asciiF = nextASCIIString + i.info = i.rb.f.info(i.rb.src, i.p) +} + +// Seek sets the segment to be returned by the next call to Next to start +// at position p. It is the responsibility of the caller to set p to the +// start of a UTF8 rune. +func (i *Iter) Seek(offset int64, whence int) (int64, error) { + var abs int64 + switch whence { + case 0: + abs = offset + case 1: + abs = int64(i.p) + offset + case 2: + abs = int64(i.rb.nsrc) + offset + default: + return 0, fmt.Errorf("norm: invalid whence") + } + if abs < 0 { + return 0, fmt.Errorf("norm: negative position") + } + if int(abs) >= i.rb.nsrc { + i.setDone() + return int64(i.p), nil + } + i.p = int(abs) + i.multiSeg = nil + i.next = i.rb.f.nextMain + i.info = i.rb.f.info(i.rb.src, i.p) + return abs, nil +} + +// returnSlice returns a slice of the underlying input type as a byte slice. +// If the underlying is of type []byte, it will simply return a slice. +// If the underlying is of type string, it will copy the slice to the buffer +// and return that. +func (i *Iter) returnSlice(a, b int) []byte { + if i.rb.src.bytes == nil { + return i.buf[:copy(i.buf[:], i.rb.src.str[a:b])] + } + return i.rb.src.bytes[a:b] +} + +// Pos returns the byte position at which the next call to Next will commence processing. +func (i *Iter) Pos() int { + return i.p +} + +func (i *Iter) setDone() { + i.next = nextDone + i.p = i.rb.nsrc +} + +// Done returns true if there is no more input to process. +func (i *Iter) Done() bool { + return i.p >= i.rb.nsrc +} + +// Next returns f(i.input[i.Pos():n]), where n is a boundary of i.input. +// For any input a and b for which f(a) == f(b), subsequent calls +// to Next will return the same segments. +// Modifying runes are grouped together with the preceding starter, if such a starter exists. +// Although not guaranteed, n will typically be the smallest possible n. +func (i *Iter) Next() []byte { + return i.next(i) +} + +func nextASCIIBytes(i *Iter) []byte { + p := i.p + 1 + if p >= i.rb.nsrc { + i.setDone() + return i.rb.src.bytes[i.p:p] + } + if i.rb.src.bytes[p] < utf8.RuneSelf { + p0 := i.p + i.p = p + return i.rb.src.bytes[p0:p] + } + i.info = i.rb.f.info(i.rb.src, i.p) + i.next = i.rb.f.nextMain + return i.next(i) +} + +func nextASCIIString(i *Iter) []byte { + p := i.p + 1 + if p >= i.rb.nsrc { + i.buf[0] = i.rb.src.str[i.p] + i.setDone() + return i.buf[:1] + } + if i.rb.src.str[p] < utf8.RuneSelf { + i.buf[0] = i.rb.src.str[i.p] + i.p = p + return i.buf[:1] + } + i.info = i.rb.f.info(i.rb.src, i.p) + i.next = i.rb.f.nextMain + return i.next(i) +} + +func nextHangul(i *Iter) []byte { + p := i.p + next := p + hangulUTF8Size + if next >= i.rb.nsrc { + i.setDone() + } else if i.rb.src.hangul(next) == 0 { + i.info = i.rb.f.info(i.rb.src, i.p) + i.next = i.rb.f.nextMain + return i.next(i) + } + i.p = next + return i.buf[:decomposeHangul(i.buf[:], i.rb.src.hangul(p))] +} + +func nextDone(i *Iter) []byte { + return nil +} + +// nextMulti is used for iterating over multi-segment decompositions +// for decomposing normal forms. +func nextMulti(i *Iter) []byte { + j := 0 + d := i.multiSeg + // skip first rune + for j = 1; j < len(d) && !utf8.RuneStart(d[j]); j++ { + } + for j < len(d) { + info := i.rb.f.info(input{bytes: d}, j) + if info.BoundaryBefore() { + i.multiSeg = d[j:] + return d[:j] + } + j += int(info.size) + } + // treat last segment as normal decomposition + i.next = i.rb.f.nextMain + return i.next(i) +} + +// nextMultiNorm is used for iterating over multi-segment decompositions +// for composing normal forms. +func nextMultiNorm(i *Iter) []byte { + j := 0 + d := i.multiSeg + for j < len(d) { + info := i.rb.f.info(input{bytes: d}, j) + if info.BoundaryBefore() { + i.rb.compose() + seg := i.buf[:i.rb.flushCopy(i.buf[:])] + i.rb.ss.first(info) + i.rb.insertUnsafe(input{bytes: d}, j, info) + i.multiSeg = d[j+int(info.size):] + return seg + } + i.rb.ss.next(info) + i.rb.insertUnsafe(input{bytes: d}, j, info) + j += int(info.size) + } + i.multiSeg = nil + i.next = nextComposed + return doNormComposed(i) +} + +// nextDecomposed is the implementation of Next for forms NFD and NFKD. +func nextDecomposed(i *Iter) (next []byte) { + outp := 0 + inCopyStart, outCopyStart := i.p, 0 + ss := mkStreamSafe(i.info) + for { + if sz := int(i.info.size); sz <= 1 { + p := i.p + i.p++ // ASCII or illegal byte. Either way, advance by 1. + if i.p >= i.rb.nsrc { + i.setDone() + return i.returnSlice(p, i.p) + } else if i.rb.src._byte(i.p) < utf8.RuneSelf { + i.next = i.asciiF + return i.returnSlice(p, i.p) + } + outp++ + } else if d := i.info.Decomposition(); d != nil { + // Note: If leading CCC != 0, then len(d) == 2 and last is also non-zero. + // Case 1: there is a leftover to copy. In this case the decomposition + // must begin with a modifier and should always be appended. + // Case 2: no leftover. Simply return d if followed by a ccc == 0 value. + p := outp + len(d) + if outp > 0 { + i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p) + if p > len(i.buf) { + return i.buf[:outp] + } + } else if i.info.multiSegment() { + // outp must be 0 as multi-segment decompositions always + // start a new segment. + if i.multiSeg == nil { + i.multiSeg = d + i.next = nextMulti + return nextMulti(i) + } + // We are in the last segment. Treat as normal decomposition. + d = i.multiSeg + i.multiSeg = nil + p = len(d) + } + prevCC := i.info.tccc + if i.p += sz; i.p >= i.rb.nsrc { + i.setDone() + i.info = Properties{} // Force BoundaryBefore to succeed. + } else { + i.info = i.rb.f.info(i.rb.src, i.p) + } + switch ss.next(i.info) { + case ssOverflow: + i.next = nextCGJDecompose + fallthrough + case ssStarter: + if outp > 0 { + copy(i.buf[outp:], d) + return i.buf[:p] + } + return d + } + copy(i.buf[outp:], d) + outp = p + inCopyStart, outCopyStart = i.p, outp + if i.info.ccc < prevCC { + goto doNorm + } + continue + } else if r := i.rb.src.hangul(i.p); r != 0 { + outp = decomposeHangul(i.buf[:], r) + i.p += hangulUTF8Size + inCopyStart, outCopyStart = i.p, outp + if i.p >= i.rb.nsrc { + i.setDone() + break + } else if i.rb.src.hangul(i.p) != 0 { + i.next = nextHangul + return i.buf[:outp] + } + } else { + p := outp + sz + if p > len(i.buf) { + break + } + outp = p + i.p += sz + } + if i.p >= i.rb.nsrc { + i.setDone() + break + } + prevCC := i.info.tccc + i.info = i.rb.f.info(i.rb.src, i.p) + if v := ss.next(i.info); v == ssStarter { + break + } else if v == ssOverflow { + i.next = nextCGJDecompose + break + } + if i.info.ccc < prevCC { + goto doNorm + } + } + if outCopyStart == 0 { + return i.returnSlice(inCopyStart, i.p) + } else if inCopyStart < i.p { + i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p) + } + return i.buf[:outp] +doNorm: + // Insert what we have decomposed so far in the reorderBuffer. + // As we will only reorder, there will always be enough room. + i.rb.src.copySlice(i.buf[outCopyStart:], inCopyStart, i.p) + i.rb.insertDecomposed(i.buf[0:outp]) + return doNormDecomposed(i) +} + +func doNormDecomposed(i *Iter) []byte { + for { + if s := i.rb.ss.next(i.info); s == ssOverflow { + i.next = nextCGJDecompose + break + } + i.rb.insertUnsafe(i.rb.src, i.p, i.info) + if i.p += int(i.info.size); i.p >= i.rb.nsrc { + i.setDone() + break + } + i.info = i.rb.f.info(i.rb.src, i.p) + if i.info.ccc == 0 { + break + } + } + // new segment or too many combining characters: exit normalization + return i.buf[:i.rb.flushCopy(i.buf[:])] +} + +func nextCGJDecompose(i *Iter) []byte { + i.rb.ss = 0 + i.rb.insertCGJ() + i.next = nextDecomposed + buf := doNormDecomposed(i) + return buf +} + +// nextComposed is the implementation of Next for forms NFC and NFKC. +func nextComposed(i *Iter) []byte { + outp, startp := 0, i.p + var prevCC uint8 + ss := mkStreamSafe(i.info) + for { + if !i.info.isYesC() { + goto doNorm + } + prevCC = i.info.tccc + sz := int(i.info.size) + if sz == 0 { + sz = 1 // illegal rune: copy byte-by-byte + } + p := outp + sz + if p > len(i.buf) { + break + } + outp = p + i.p += sz + if i.p >= i.rb.nsrc { + i.setDone() + break + } else if i.rb.src._byte(i.p) < utf8.RuneSelf { + i.next = i.asciiF + break + } + i.info = i.rb.f.info(i.rb.src, i.p) + if v := ss.next(i.info); v == ssStarter { + break + } else if v == ssOverflow { + i.next = nextCGJCompose + break + } + if i.info.ccc < prevCC { + goto doNorm + } + } + return i.returnSlice(startp, i.p) +doNorm: + i.p = startp + i.info = i.rb.f.info(i.rb.src, i.p) + if i.info.multiSegment() { + d := i.info.Decomposition() + info := i.rb.f.info(input{bytes: d}, 0) + i.rb.insertUnsafe(input{bytes: d}, 0, info) + i.multiSeg = d[int(info.size):] + i.next = nextMultiNorm + return nextMultiNorm(i) + } + i.rb.ss.first(i.info) + i.rb.insertUnsafe(i.rb.src, i.p, i.info) + return doNormComposed(i) +} + +func doNormComposed(i *Iter) []byte { + // First rune should already be inserted. + for { + if i.p += int(i.info.size); i.p >= i.rb.nsrc { + i.setDone() + break + } + i.info = i.rb.f.info(i.rb.src, i.p) + if s := i.rb.ss.next(i.info); s == ssStarter { + break + } else if s == ssOverflow { + i.next = nextCGJCompose + break + } + i.rb.insertUnsafe(i.rb.src, i.p, i.info) + } + i.rb.compose() + seg := i.buf[:i.rb.flushCopy(i.buf[:])] + return seg +} + +func nextCGJCompose(i *Iter) []byte { + i.rb.ss = 0 // instead of first + i.rb.insertCGJ() + i.next = nextComposed + // Note that we treat any rune with nLeadingNonStarters > 0 as a non-starter, + // even if they are not. This is particularly dubious for U+FF9E and UFF9A. + // If we ever change that, insert a check here. + i.rb.ss.first(i.info) + i.rb.insertUnsafe(i.rb.src, i.p, i.info) + return doNormComposed(i) +} diff --git a/vendor/golang.org/x/text/unicode/norm/maketables.go b/vendor/golang.org/x/text/unicode/norm/maketables.go new file mode 100644 index 0000000000..07bdff6bdc --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/maketables.go @@ -0,0 +1,978 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Normalization table generator. +// Data read from the web. +// See forminfo.go for a description of the trie values associated with each rune. + +package main + +import ( + "bytes" + "flag" + "fmt" + "io" + "log" + "sort" + "strconv" + "strings" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" + "golang.org/x/text/internal/ucd" +) + +func main() { + gen.Init() + loadUnicodeData() + compactCCC() + loadCompositionExclusions() + completeCharFields(FCanonical) + completeCharFields(FCompatibility) + computeNonStarterCounts() + verifyComputed() + printChars() + if *test { + testDerived() + printTestdata() + } else { + makeTables() + } +} + +var ( + tablelist = flag.String("tables", + "all", + "comma-separated list of which tables to generate; "+ + "can be 'decomp', 'recomp', 'info' and 'all'") + test = flag.Bool("test", + false, + "test existing tables against DerivedNormalizationProps and generate test data for regression testing") + verbose = flag.Bool("verbose", + false, + "write data to stdout as it is parsed") +) + +const MaxChar = 0x10FFFF // anything above this shouldn't exist + +// Quick Check properties of runes allow us to quickly +// determine whether a rune may occur in a normal form. +// For a given normal form, a rune may be guaranteed to occur +// verbatim (QC=Yes), may or may not combine with another +// rune (QC=Maybe), or may not occur (QC=No). +type QCResult int + +const ( + QCUnknown QCResult = iota + QCYes + QCNo + QCMaybe +) + +func (r QCResult) String() string { + switch r { + case QCYes: + return "Yes" + case QCNo: + return "No" + case QCMaybe: + return "Maybe" + } + return "***UNKNOWN***" +} + +const ( + FCanonical = iota // NFC or NFD + FCompatibility // NFKC or NFKD + FNumberOfFormTypes +) + +const ( + MComposed = iota // NFC or NFKC + MDecomposed // NFD or NFKD + MNumberOfModes +) + +// This contains only the properties we're interested in. +type Char struct { + name string + codePoint rune // if zero, this index is not a valid code point. + ccc uint8 // canonical combining class + origCCC uint8 + excludeInComp bool // from CompositionExclusions.txt + compatDecomp bool // it has a compatibility expansion + + nTrailingNonStarters uint8 + nLeadingNonStarters uint8 // must be equal to trailing if non-zero + + forms [FNumberOfFormTypes]FormInfo // For FCanonical and FCompatibility + + state State +} + +var chars = make([]Char, MaxChar+1) +var cccMap = make(map[uint8]uint8) + +func (c Char) String() string { + buf := new(bytes.Buffer) + + fmt.Fprintf(buf, "%U [%s]:\n", c.codePoint, c.name) + fmt.Fprintf(buf, " ccc: %v\n", c.ccc) + fmt.Fprintf(buf, " excludeInComp: %v\n", c.excludeInComp) + fmt.Fprintf(buf, " compatDecomp: %v\n", c.compatDecomp) + fmt.Fprintf(buf, " state: %v\n", c.state) + fmt.Fprintf(buf, " NFC:\n") + fmt.Fprint(buf, c.forms[FCanonical]) + fmt.Fprintf(buf, " NFKC:\n") + fmt.Fprint(buf, c.forms[FCompatibility]) + + return buf.String() +} + +// In UnicodeData.txt, some ranges are marked like this: +// 3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; +// 4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; +// parseCharacter keeps a state variable indicating the weirdness. +type State int + +const ( + SNormal State = iota // known to be zero for the type + SFirst + SLast + SMissing +) + +var lastChar = rune('\u0000') + +func (c Char) isValid() bool { + return c.codePoint != 0 && c.state != SMissing +} + +type FormInfo struct { + quickCheck [MNumberOfModes]QCResult // index: MComposed or MDecomposed + verified [MNumberOfModes]bool // index: MComposed or MDecomposed + + combinesForward bool // May combine with rune on the right + combinesBackward bool // May combine with rune on the left + isOneWay bool // Never appears in result + inDecomp bool // Some decompositions result in this char. + decomp Decomposition + expandedDecomp Decomposition +} + +func (f FormInfo) String() string { + buf := bytes.NewBuffer(make([]byte, 0)) + + fmt.Fprintf(buf, " quickCheck[C]: %v\n", f.quickCheck[MComposed]) + fmt.Fprintf(buf, " quickCheck[D]: %v\n", f.quickCheck[MDecomposed]) + fmt.Fprintf(buf, " cmbForward: %v\n", f.combinesForward) + fmt.Fprintf(buf, " cmbBackward: %v\n", f.combinesBackward) + fmt.Fprintf(buf, " isOneWay: %v\n", f.isOneWay) + fmt.Fprintf(buf, " inDecomp: %v\n", f.inDecomp) + fmt.Fprintf(buf, " decomposition: %X\n", f.decomp) + fmt.Fprintf(buf, " expandedDecomp: %X\n", f.expandedDecomp) + + return buf.String() +} + +type Decomposition []rune + +func parseDecomposition(s string, skipfirst bool) (a []rune, err error) { + decomp := strings.Split(s, " ") + if len(decomp) > 0 && skipfirst { + decomp = decomp[1:] + } + for _, d := range decomp { + point, err := strconv.ParseUint(d, 16, 64) + if err != nil { + return a, err + } + a = append(a, rune(point)) + } + return a, nil +} + +func loadUnicodeData() { + f := gen.OpenUCDFile("UnicodeData.txt") + defer f.Close() + p := ucd.New(f) + for p.Next() { + r := p.Rune(ucd.CodePoint) + char := &chars[r] + + char.ccc = uint8(p.Uint(ucd.CanonicalCombiningClass)) + decmap := p.String(ucd.DecompMapping) + + exp, err := parseDecomposition(decmap, false) + isCompat := false + if err != nil { + if len(decmap) > 0 { + exp, err = parseDecomposition(decmap, true) + if err != nil { + log.Fatalf(`%U: bad decomp |%v|: "%s"`, r, decmap, err) + } + isCompat = true + } + } + + char.name = p.String(ucd.Name) + char.codePoint = r + char.forms[FCompatibility].decomp = exp + if !isCompat { + char.forms[FCanonical].decomp = exp + } else { + char.compatDecomp = true + } + if len(decmap) > 0 { + char.forms[FCompatibility].decomp = exp + } + } + if err := p.Err(); err != nil { + log.Fatal(err) + } +} + +// compactCCC converts the sparse set of CCC values to a continguous one, +// reducing the number of bits needed from 8 to 6. +func compactCCC() { + m := make(map[uint8]uint8) + for i := range chars { + c := &chars[i] + m[c.ccc] = 0 + } + cccs := []int{} + for v, _ := range m { + cccs = append(cccs, int(v)) + } + sort.Ints(cccs) + for i, c := range cccs { + cccMap[uint8(i)] = uint8(c) + m[uint8(c)] = uint8(i) + } + for i := range chars { + c := &chars[i] + c.origCCC = c.ccc + c.ccc = m[c.ccc] + } + if len(m) >= 1<<6 { + log.Fatalf("too many difference CCC values: %d >= 64", len(m)) + } +} + +// CompositionExclusions.txt has form: +// 0958 # ... +// See http://unicode.org/reports/tr44/ for full explanation +func loadCompositionExclusions() { + f := gen.OpenUCDFile("CompositionExclusions.txt") + defer f.Close() + p := ucd.New(f) + for p.Next() { + c := &chars[p.Rune(0)] + if c.excludeInComp { + log.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint) + } + c.excludeInComp = true + } + if e := p.Err(); e != nil { + log.Fatal(e) + } +} + +// hasCompatDecomp returns true if any of the recursive +// decompositions contains a compatibility expansion. +// In this case, the character may not occur in NFK*. +func hasCompatDecomp(r rune) bool { + c := &chars[r] + if c.compatDecomp { + return true + } + for _, d := range c.forms[FCompatibility].decomp { + if hasCompatDecomp(d) { + return true + } + } + return false +} + +// Hangul related constants. +const ( + HangulBase = 0xAC00 + HangulEnd = 0xD7A4 // hangulBase + Jamo combinations (19 * 21 * 28) + + JamoLBase = 0x1100 + JamoLEnd = 0x1113 + JamoVBase = 0x1161 + JamoVEnd = 0x1176 + JamoTBase = 0x11A8 + JamoTEnd = 0x11C3 + + JamoLVTCount = 19 * 21 * 28 + JamoTCount = 28 +) + +func isHangul(r rune) bool { + return HangulBase <= r && r < HangulEnd +} + +func isHangulWithoutJamoT(r rune) bool { + if !isHangul(r) { + return false + } + r -= HangulBase + return r < JamoLVTCount && r%JamoTCount == 0 +} + +func ccc(r rune) uint8 { + return chars[r].ccc +} + +// Insert a rune in a buffer, ordered by Canonical Combining Class. +func insertOrdered(b Decomposition, r rune) Decomposition { + n := len(b) + b = append(b, 0) + cc := ccc(r) + if cc > 0 { + // Use bubble sort. + for ; n > 0; n-- { + if ccc(b[n-1]) <= cc { + break + } + b[n] = b[n-1] + } + } + b[n] = r + return b +} + +// Recursively decompose. +func decomposeRecursive(form int, r rune, d Decomposition) Decomposition { + dcomp := chars[r].forms[form].decomp + if len(dcomp) == 0 { + return insertOrdered(d, r) + } + for _, c := range dcomp { + d = decomposeRecursive(form, c, d) + } + return d +} + +func completeCharFields(form int) { + // Phase 0: pre-expand decomposition. + for i := range chars { + f := &chars[i].forms[form] + if len(f.decomp) == 0 { + continue + } + exp := make(Decomposition, 0) + for _, c := range f.decomp { + exp = decomposeRecursive(form, c, exp) + } + f.expandedDecomp = exp + } + + // Phase 1: composition exclusion, mark decomposition. + for i := range chars { + c := &chars[i] + f := &c.forms[form] + + // Marks script-specific exclusions and version restricted. + f.isOneWay = c.excludeInComp + + // Singletons + f.isOneWay = f.isOneWay || len(f.decomp) == 1 + + // Non-starter decompositions + if len(f.decomp) > 1 { + chk := c.ccc != 0 || chars[f.decomp[0]].ccc != 0 + f.isOneWay = f.isOneWay || chk + } + + // Runes that decompose into more than two runes. + f.isOneWay = f.isOneWay || len(f.decomp) > 2 + + if form == FCompatibility { + f.isOneWay = f.isOneWay || hasCompatDecomp(c.codePoint) + } + + for _, r := range f.decomp { + chars[r].forms[form].inDecomp = true + } + } + + // Phase 2: forward and backward combining. + for i := range chars { + c := &chars[i] + f := &c.forms[form] + + if !f.isOneWay && len(f.decomp) == 2 { + f0 := &chars[f.decomp[0]].forms[form] + f1 := &chars[f.decomp[1]].forms[form] + if !f0.isOneWay { + f0.combinesForward = true + } + if !f1.isOneWay { + f1.combinesBackward = true + } + } + if isHangulWithoutJamoT(rune(i)) { + f.combinesForward = true + } + } + + // Phase 3: quick check values. + for i := range chars { + c := &chars[i] + f := &c.forms[form] + + switch { + case len(f.decomp) > 0: + f.quickCheck[MDecomposed] = QCNo + case isHangul(rune(i)): + f.quickCheck[MDecomposed] = QCNo + default: + f.quickCheck[MDecomposed] = QCYes + } + switch { + case f.isOneWay: + f.quickCheck[MComposed] = QCNo + case (i & 0xffff00) == JamoLBase: + f.quickCheck[MComposed] = QCYes + if JamoLBase <= i && i < JamoLEnd { + f.combinesForward = true + } + if JamoVBase <= i && i < JamoVEnd { + f.quickCheck[MComposed] = QCMaybe + f.combinesBackward = true + f.combinesForward = true + } + if JamoTBase <= i && i < JamoTEnd { + f.quickCheck[MComposed] = QCMaybe + f.combinesBackward = true + } + case !f.combinesBackward: + f.quickCheck[MComposed] = QCYes + default: + f.quickCheck[MComposed] = QCMaybe + } + } +} + +func computeNonStarterCounts() { + // Phase 4: leading and trailing non-starter count + for i := range chars { + c := &chars[i] + + runes := []rune{rune(i)} + // We always use FCompatibility so that the CGJ insertion points do not + // change for repeated normalizations with different forms. + if exp := c.forms[FCompatibility].expandedDecomp; len(exp) > 0 { + runes = exp + } + // We consider runes that combine backwards to be non-starters for the + // purpose of Stream-Safe Text Processing. + for _, r := range runes { + if cr := &chars[r]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward { + break + } + c.nLeadingNonStarters++ + } + for i := len(runes) - 1; i >= 0; i-- { + if cr := &chars[runes[i]]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward { + break + } + c.nTrailingNonStarters++ + } + if c.nTrailingNonStarters > 3 { + log.Fatalf("%U: Decomposition with more than 3 (%d) trailing modifiers (%U)", i, c.nTrailingNonStarters, runes) + } + + if isHangul(rune(i)) { + c.nTrailingNonStarters = 2 + if isHangulWithoutJamoT(rune(i)) { + c.nTrailingNonStarters = 1 + } + } + + if l, t := c.nLeadingNonStarters, c.nTrailingNonStarters; l > 0 && l != t { + log.Fatalf("%U: number of leading and trailing non-starters should be equal (%d vs %d)", i, l, t) + } + if t := c.nTrailingNonStarters; t > 3 { + log.Fatalf("%U: number of trailing non-starters is %d > 3", t) + } + } +} + +func printBytes(w io.Writer, b []byte, name string) { + fmt.Fprintf(w, "// %s: %d bytes\n", name, len(b)) + fmt.Fprintf(w, "var %s = [...]byte {", name) + for i, c := range b { + switch { + case i%64 == 0: + fmt.Fprintf(w, "\n// Bytes %x - %x\n", i, i+63) + case i%8 == 0: + fmt.Fprintf(w, "\n") + } + fmt.Fprintf(w, "0x%.2X, ", c) + } + fmt.Fprint(w, "\n}\n\n") +} + +// See forminfo.go for format. +func makeEntry(f *FormInfo, c *Char) uint16 { + e := uint16(0) + if r := c.codePoint; HangulBase <= r && r < HangulEnd { + e |= 0x40 + } + if f.combinesForward { + e |= 0x20 + } + if f.quickCheck[MDecomposed] == QCNo { + e |= 0x4 + } + switch f.quickCheck[MComposed] { + case QCYes: + case QCNo: + e |= 0x10 + case QCMaybe: + e |= 0x18 + default: + log.Fatalf("Illegal quickcheck value %v.", f.quickCheck[MComposed]) + } + e |= uint16(c.nTrailingNonStarters) + return e +} + +// decompSet keeps track of unique decompositions, grouped by whether +// the decomposition is followed by a trailing and/or leading CCC. +type decompSet [7]map[string]bool + +const ( + normalDecomp = iota + firstMulti + firstCCC + endMulti + firstLeadingCCC + firstCCCZeroExcept + firstStarterWithNLead + lastDecomp +) + +var cname = []string{"firstMulti", "firstCCC", "endMulti", "firstLeadingCCC", "firstCCCZeroExcept", "firstStarterWithNLead", "lastDecomp"} + +func makeDecompSet() decompSet { + m := decompSet{} + for i := range m { + m[i] = make(map[string]bool) + } + return m +} +func (m *decompSet) insert(key int, s string) { + m[key][s] = true +} + +func printCharInfoTables(w io.Writer) int { + mkstr := func(r rune, f *FormInfo) (int, string) { + d := f.expandedDecomp + s := string([]rune(d)) + if max := 1 << 6; len(s) >= max { + const msg = "%U: too many bytes in decomposition: %d >= %d" + log.Fatalf(msg, r, len(s), max) + } + head := uint8(len(s)) + if f.quickCheck[MComposed] != QCYes { + head |= 0x40 + } + if f.combinesForward { + head |= 0x80 + } + s = string([]byte{head}) + s + + lccc := ccc(d[0]) + tccc := ccc(d[len(d)-1]) + cc := ccc(r) + if cc != 0 && lccc == 0 && tccc == 0 { + log.Fatalf("%U: trailing and leading ccc are 0 for non-zero ccc %d", r, cc) + } + if tccc < lccc && lccc != 0 { + const msg = "%U: lccc (%d) must be <= tcc (%d)" + log.Fatalf(msg, r, lccc, tccc) + } + index := normalDecomp + nTrail := chars[r].nTrailingNonStarters + if tccc > 0 || lccc > 0 || nTrail > 0 { + tccc <<= 2 + tccc |= nTrail + s += string([]byte{tccc}) + index = endMulti + for _, r := range d[1:] { + if ccc(r) == 0 { + index = firstCCC + } + } + if lccc > 0 { + s += string([]byte{lccc}) + if index == firstCCC { + log.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r) + } + index = firstLeadingCCC + } + if cc != lccc { + if cc != 0 { + log.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc) + } + index = firstCCCZeroExcept + } + } else if len(d) > 1 { + index = firstMulti + } + return index, s + } + + decompSet := makeDecompSet() + const nLeadStr = "\x00\x01" // 0-byte length and tccc with nTrail. + decompSet.insert(firstStarterWithNLead, nLeadStr) + + // Store the uniqued decompositions in a byte buffer, + // preceded by their byte length. + for _, c := range chars { + for _, f := range c.forms { + if len(f.expandedDecomp) == 0 { + continue + } + if f.combinesBackward { + log.Fatalf("%U: combinesBackward and decompose", c.codePoint) + } + index, s := mkstr(c.codePoint, &f) + decompSet.insert(index, s) + } + } + + decompositions := bytes.NewBuffer(make([]byte, 0, 10000)) + size := 0 + positionMap := make(map[string]uint16) + decompositions.WriteString("\000") + fmt.Fprintln(w, "const (") + for i, m := range decompSet { + sa := []string{} + for s := range m { + sa = append(sa, s) + } + sort.Strings(sa) + for _, s := range sa { + p := decompositions.Len() + decompositions.WriteString(s) + positionMap[s] = uint16(p) + } + if cname[i] != "" { + fmt.Fprintf(w, "%s = 0x%X\n", cname[i], decompositions.Len()) + } + } + fmt.Fprintln(w, "maxDecomp = 0x8000") + fmt.Fprintln(w, ")") + b := decompositions.Bytes() + printBytes(w, b, "decomps") + size += len(b) + + varnames := []string{"nfc", "nfkc"} + for i := 0; i < FNumberOfFormTypes; i++ { + trie := triegen.NewTrie(varnames[i]) + + for r, c := range chars { + f := c.forms[i] + d := f.expandedDecomp + if len(d) != 0 { + _, key := mkstr(c.codePoint, &f) + trie.Insert(rune(r), uint64(positionMap[key])) + if c.ccc != ccc(d[0]) { + // We assume the lead ccc of a decomposition !=0 in this case. + if ccc(d[0]) == 0 { + log.Fatalf("Expected leading CCC to be non-zero; ccc is %d", c.ccc) + } + } + } else if c.nLeadingNonStarters > 0 && len(f.expandedDecomp) == 0 && c.ccc == 0 && !f.combinesBackward { + // Handle cases where it can't be detected that the nLead should be equal + // to nTrail. + trie.Insert(c.codePoint, uint64(positionMap[nLeadStr])) + } else if v := makeEntry(&f, &c)<<8 | uint16(c.ccc); v != 0 { + trie.Insert(c.codePoint, uint64(0x8000|v)) + } + } + sz, err := trie.Gen(w, triegen.Compact(&normCompacter{name: varnames[i]})) + if err != nil { + log.Fatal(err) + } + size += sz + } + return size +} + +func contains(sa []string, s string) bool { + for _, a := range sa { + if a == s { + return true + } + } + return false +} + +func makeTables() { + w := &bytes.Buffer{} + + size := 0 + if *tablelist == "" { + return + } + list := strings.Split(*tablelist, ",") + if *tablelist == "all" { + list = []string{"recomp", "info"} + } + + // Compute maximum decomposition size. + max := 0 + for _, c := range chars { + if n := len(string(c.forms[FCompatibility].expandedDecomp)); n > max { + max = n + } + } + + fmt.Fprintln(w, "const (") + fmt.Fprintln(w, "\t// Version is the Unicode edition from which the tables are derived.") + fmt.Fprintf(w, "\tVersion = %q\n", gen.UnicodeVersion()) + fmt.Fprintln(w) + fmt.Fprintln(w, "\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform") + fmt.Fprintln(w, "\t// may need to write atomically for any Form. Making a destination buffer at") + fmt.Fprintln(w, "\t// least this size ensures that Transform can always make progress and that") + fmt.Fprintln(w, "\t// the user does not need to grow the buffer on an ErrShortDst.") + fmt.Fprintf(w, "\tMaxTransformChunkSize = %d+maxNonStarters*4\n", len(string(0x034F))+max) + fmt.Fprintln(w, ")\n") + + // Print the CCC remap table. + size += len(cccMap) + fmt.Fprintf(w, "var ccc = [%d]uint8{", len(cccMap)) + for i := 0; i < len(cccMap); i++ { + if i%8 == 0 { + fmt.Fprintln(w) + } + fmt.Fprintf(w, "%3d, ", cccMap[uint8(i)]) + } + fmt.Fprintln(w, "\n}\n") + + if contains(list, "info") { + size += printCharInfoTables(w) + } + + if contains(list, "recomp") { + // Note that we use 32 bit keys, instead of 64 bit. + // This clips the bits of three entries, but we know + // this won't cause a collision. The compiler will catch + // any changes made to UnicodeData.txt that introduces + // a collision. + // Note that the recomposition map for NFC and NFKC + // are identical. + + // Recomposition map + nrentries := 0 + for _, c := range chars { + f := c.forms[FCanonical] + if !f.isOneWay && len(f.decomp) > 0 { + nrentries++ + } + } + sz := nrentries * 8 + size += sz + fmt.Fprintf(w, "// recompMap: %d bytes (entries only)\n", sz) + fmt.Fprintln(w, "var recompMap = map[uint32]rune{") + for i, c := range chars { + f := c.forms[FCanonical] + d := f.decomp + if !f.isOneWay && len(d) > 0 { + key := uint32(uint16(d[0]))<<16 + uint32(uint16(d[1])) + fmt.Fprintf(w, "0x%.8X: 0x%.4X,\n", key, i) + } + } + fmt.Fprintf(w, "}\n\n") + } + + fmt.Fprintf(w, "// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size) + gen.WriteGoFile("tables.go", "norm", w.Bytes()) +} + +func printChars() { + if *verbose { + for _, c := range chars { + if !c.isValid() || c.state == SMissing { + continue + } + fmt.Println(c) + } + } +} + +// verifyComputed does various consistency tests. +func verifyComputed() { + for i, c := range chars { + for _, f := range c.forms { + isNo := (f.quickCheck[MDecomposed] == QCNo) + if (len(f.decomp) > 0) != isNo && !isHangul(rune(i)) { + log.Fatalf("%U: NF*D QC must be No if rune decomposes", i) + } + + isMaybe := f.quickCheck[MComposed] == QCMaybe + if f.combinesBackward != isMaybe { + log.Fatalf("%U: NF*C QC must be Maybe if combinesBackward", i) + } + if len(f.decomp) > 0 && f.combinesForward && isMaybe { + log.Fatalf("%U: NF*C QC must be Yes or No if combinesForward and decomposes", i) + } + + if len(f.expandedDecomp) != 0 { + continue + } + if a, b := c.nLeadingNonStarters > 0, (c.ccc > 0 || f.combinesBackward); a != b { + // We accept these runes to be treated differently (it only affects + // segment breaking in iteration, most likely on improper use), but + // reconsider if more characters are added. + // U+FF9E HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;; + // U+FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;; + // U+3133 HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; + // U+318E HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;; + // U+FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; + // U+FFDC HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;; + if i != 0xFF9E && i != 0xFF9F && !(0x3133 <= i && i <= 0x318E) && !(0xFFA3 <= i && i <= 0xFFDC) { + log.Fatalf("%U: nLead was %v; want %v", i, a, b) + } + } + } + nfc := c.forms[FCanonical] + nfkc := c.forms[FCompatibility] + if nfc.combinesBackward != nfkc.combinesBackward { + log.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint) + } + } +} + +// Use values in DerivedNormalizationProps.txt to compare against the +// values we computed. +// DerivedNormalizationProps.txt has form: +// 00C0..00C5 ; NFD_QC; N # ... +// 0374 ; NFD_QC; N # ... +// See http://unicode.org/reports/tr44/ for full explanation +func testDerived() { + f := gen.OpenUCDFile("DerivedNormalizationProps.txt") + defer f.Close() + p := ucd.New(f) + for p.Next() { + r := p.Rune(0) + c := &chars[r] + + var ftype, mode int + qt := p.String(1) + switch qt { + case "NFC_QC": + ftype, mode = FCanonical, MComposed + case "NFD_QC": + ftype, mode = FCanonical, MDecomposed + case "NFKC_QC": + ftype, mode = FCompatibility, MComposed + case "NFKD_QC": + ftype, mode = FCompatibility, MDecomposed + default: + continue + } + var qr QCResult + switch p.String(2) { + case "Y": + qr = QCYes + case "N": + qr = QCNo + case "M": + qr = QCMaybe + default: + log.Fatalf(`Unexpected quick check value "%s"`, p.String(2)) + } + if got := c.forms[ftype].quickCheck[mode]; got != qr { + log.Printf("%U: FAILED %s (was %v need %v)\n", r, qt, got, qr) + } + c.forms[ftype].verified[mode] = true + } + if err := p.Err(); err != nil { + log.Fatal(err) + } + // Any unspecified value must be QCYes. Verify this. + for i, c := range chars { + for j, fd := range c.forms { + for k, qr := range fd.quickCheck { + if !fd.verified[k] && qr != QCYes { + m := "%U: FAIL F:%d M:%d (was %v need Yes) %s\n" + log.Printf(m, i, j, k, qr, c.name) + } + } + } + } +} + +var testHeader = `const ( + Yes = iota + No + Maybe +) + +type formData struct { + qc uint8 + combinesForward bool + decomposition string +} + +type runeData struct { + r rune + ccc uint8 + nLead uint8 + nTrail uint8 + f [2]formData // 0: canonical; 1: compatibility +} + +func f(qc uint8, cf bool, dec string) [2]formData { + return [2]formData{{qc, cf, dec}, {qc, cf, dec}} +} + +func g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData { + return [2]formData{{qc, cf, d}, {qck, cfk, dk}} +} + +var testData = []runeData{ +` + +func printTestdata() { + type lastInfo struct { + ccc uint8 + nLead uint8 + nTrail uint8 + f string + } + + last := lastInfo{} + w := &bytes.Buffer{} + fmt.Fprintf(w, testHeader) + for r, c := range chars { + f := c.forms[FCanonical] + qc, cf, d := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp) + f = c.forms[FCompatibility] + qck, cfk, dk := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp) + s := "" + if d == dk && qc == qck && cf == cfk { + s = fmt.Sprintf("f(%s, %v, %q)", qc, cf, d) + } else { + s = fmt.Sprintf("g(%s, %s, %v, %v, %q, %q)", qc, qck, cf, cfk, d, dk) + } + current := lastInfo{c.ccc, c.nLeadingNonStarters, c.nTrailingNonStarters, s} + if last != current { + fmt.Fprintf(w, "\t{0x%x, %d, %d, %d, %s},\n", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s) + last = current + } + } + fmt.Fprintln(w, "}") + gen.WriteGoFile("data_test.go", "norm", w.Bytes()) +} diff --git a/vendor/golang.org/x/text/unicode/norm/normalize.go b/vendor/golang.org/x/text/unicode/norm/normalize.go new file mode 100644 index 0000000000..a70805c266 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/normalize.go @@ -0,0 +1,576 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run maketables.go triegen.go +//go:generate go run maketables.go triegen.go -test + +// Package norm contains types and functions for normalizing Unicode strings. +package norm + +import "unicode/utf8" + +// A Form denotes a canonical representation of Unicode code points. +// The Unicode-defined normalization and equivalence forms are: +// +// NFC Unicode Normalization Form C +// NFD Unicode Normalization Form D +// NFKC Unicode Normalization Form KC +// NFKD Unicode Normalization Form KD +// +// For a Form f, this documentation uses the notation f(x) to mean +// the bytes or string x converted to the given form. +// A position n in x is called a boundary if conversion to the form can +// proceed independently on both sides: +// f(x) == append(f(x[0:n]), f(x[n:])...) +// +// References: http://unicode.org/reports/tr15/ and +// http://unicode.org/notes/tn5/. +type Form int + +const ( + NFC Form = iota + NFD + NFKC + NFKD +) + +// Bytes returns f(b). May return b if f(b) = b. +func (f Form) Bytes(b []byte) []byte { + src := inputBytes(b) + ft := formTable[f] + n, ok := ft.quickSpan(src, 0, len(b), true) + if ok { + return b + } + out := make([]byte, n, len(b)) + copy(out, b[0:n]) + rb := reorderBuffer{f: *ft, src: src, nsrc: len(b), out: out, flushF: appendFlush} + return doAppendInner(&rb, n) +} + +// String returns f(s). +func (f Form) String(s string) string { + src := inputString(s) + ft := formTable[f] + n, ok := ft.quickSpan(src, 0, len(s), true) + if ok { + return s + } + out := make([]byte, n, len(s)) + copy(out, s[0:n]) + rb := reorderBuffer{f: *ft, src: src, nsrc: len(s), out: out, flushF: appendFlush} + return string(doAppendInner(&rb, n)) +} + +// IsNormal returns true if b == f(b). +func (f Form) IsNormal(b []byte) bool { + src := inputBytes(b) + ft := formTable[f] + bp, ok := ft.quickSpan(src, 0, len(b), true) + if ok { + return true + } + rb := reorderBuffer{f: *ft, src: src, nsrc: len(b)} + rb.setFlusher(nil, cmpNormalBytes) + for bp < len(b) { + rb.out = b[bp:] + if bp = decomposeSegment(&rb, bp, true); bp < 0 { + return false + } + bp, _ = rb.f.quickSpan(rb.src, bp, len(b), true) + } + return true +} + +func cmpNormalBytes(rb *reorderBuffer) bool { + b := rb.out + for i := 0; i < rb.nrune; i++ { + info := rb.rune[i] + if int(info.size) > len(b) { + return false + } + p := info.pos + pe := p + info.size + for ; p < pe; p++ { + if b[0] != rb.byte[p] { + return false + } + b = b[1:] + } + } + return true +} + +// IsNormalString returns true if s == f(s). +func (f Form) IsNormalString(s string) bool { + src := inputString(s) + ft := formTable[f] + bp, ok := ft.quickSpan(src, 0, len(s), true) + if ok { + return true + } + rb := reorderBuffer{f: *ft, src: src, nsrc: len(s)} + rb.setFlusher(nil, func(rb *reorderBuffer) bool { + for i := 0; i < rb.nrune; i++ { + info := rb.rune[i] + if bp+int(info.size) > len(s) { + return false + } + p := info.pos + pe := p + info.size + for ; p < pe; p++ { + if s[bp] != rb.byte[p] { + return false + } + bp++ + } + } + return true + }) + for bp < len(s) { + if bp = decomposeSegment(&rb, bp, true); bp < 0 { + return false + } + bp, _ = rb.f.quickSpan(rb.src, bp, len(s), true) + } + return true +} + +// patchTail fixes a case where a rune may be incorrectly normalized +// if it is followed by illegal continuation bytes. It returns the +// patched buffer and whether the decomposition is still in progress. +func patchTail(rb *reorderBuffer) bool { + info, p := lastRuneStart(&rb.f, rb.out) + if p == -1 || info.size == 0 { + return true + } + end := p + int(info.size) + extra := len(rb.out) - end + if extra > 0 { + // Potentially allocating memory. However, this only + // happens with ill-formed UTF-8. + x := make([]byte, 0) + x = append(x, rb.out[len(rb.out)-extra:]...) + rb.out = rb.out[:end] + decomposeToLastBoundary(rb) + rb.doFlush() + rb.out = append(rb.out, x...) + return false + } + buf := rb.out[p:] + rb.out = rb.out[:p] + decomposeToLastBoundary(rb) + if s := rb.ss.next(info); s == ssStarter { + rb.doFlush() + rb.ss.first(info) + } else if s == ssOverflow { + rb.doFlush() + rb.insertCGJ() + rb.ss = 0 + } + rb.insertUnsafe(inputBytes(buf), 0, info) + return true +} + +func appendQuick(rb *reorderBuffer, i int) int { + if rb.nsrc == i { + return i + } + end, _ := rb.f.quickSpan(rb.src, i, rb.nsrc, true) + rb.out = rb.src.appendSlice(rb.out, i, end) + return end +} + +// Append returns f(append(out, b...)). +// The buffer out must be nil, empty, or equal to f(out). +func (f Form) Append(out []byte, src ...byte) []byte { + return f.doAppend(out, inputBytes(src), len(src)) +} + +func (f Form) doAppend(out []byte, src input, n int) []byte { + if n == 0 { + return out + } + ft := formTable[f] + // Attempt to do a quickSpan first so we can avoid initializing the reorderBuffer. + if len(out) == 0 { + p, _ := ft.quickSpan(src, 0, n, true) + out = src.appendSlice(out, 0, p) + if p == n { + return out + } + rb := reorderBuffer{f: *ft, src: src, nsrc: n, out: out, flushF: appendFlush} + return doAppendInner(&rb, p) + } + rb := reorderBuffer{f: *ft, src: src, nsrc: n} + return doAppend(&rb, out, 0) +} + +func doAppend(rb *reorderBuffer, out []byte, p int) []byte { + rb.setFlusher(out, appendFlush) + src, n := rb.src, rb.nsrc + doMerge := len(out) > 0 + if q := src.skipContinuationBytes(p); q > p { + // Move leading non-starters to destination. + rb.out = src.appendSlice(rb.out, p, q) + p = q + doMerge = patchTail(rb) + } + fd := &rb.f + if doMerge { + var info Properties + if p < n { + info = fd.info(src, p) + if !info.BoundaryBefore() || info.nLeadingNonStarters() > 0 { + if p == 0 { + decomposeToLastBoundary(rb) + } + p = decomposeSegment(rb, p, true) + } + } + if info.size == 0 { + rb.doFlush() + // Append incomplete UTF-8 encoding. + return src.appendSlice(rb.out, p, n) + } + if rb.nrune > 0 { + return doAppendInner(rb, p) + } + } + p = appendQuick(rb, p) + return doAppendInner(rb, p) +} + +func doAppendInner(rb *reorderBuffer, p int) []byte { + for n := rb.nsrc; p < n; { + p = decomposeSegment(rb, p, true) + p = appendQuick(rb, p) + } + return rb.out +} + +// AppendString returns f(append(out, []byte(s))). +// The buffer out must be nil, empty, or equal to f(out). +func (f Form) AppendString(out []byte, src string) []byte { + return f.doAppend(out, inputString(src), len(src)) +} + +// QuickSpan returns a boundary n such that b[0:n] == f(b[0:n]). +// It is not guaranteed to return the largest such n. +func (f Form) QuickSpan(b []byte) int { + n, _ := formTable[f].quickSpan(inputBytes(b), 0, len(b), true) + return n +} + +// quickSpan returns a boundary n such that src[0:n] == f(src[0:n]) and +// whether any non-normalized parts were found. If atEOF is false, n will +// not point past the last segment if this segment might be become +// non-normalized by appending other runes. +func (f *formInfo) quickSpan(src input, i, end int, atEOF bool) (n int, ok bool) { + var lastCC uint8 + ss := streamSafe(0) + lastSegStart := i + for n = end; i < n; { + if j := src.skipASCII(i, n); i != j { + i = j + lastSegStart = i - 1 + lastCC = 0 + ss = 0 + continue + } + info := f.info(src, i) + if info.size == 0 { + if atEOF { + // include incomplete runes + return n, true + } + return lastSegStart, true + } + // This block needs to be before the next, because it is possible to + // have an overflow for runes that are starters (e.g. with U+FF9E). + switch ss.next(info) { + case ssStarter: + ss.first(info) + lastSegStart = i + case ssOverflow: + return lastSegStart, false + case ssSuccess: + if lastCC > info.ccc { + return lastSegStart, false + } + } + if f.composing { + if !info.isYesC() { + break + } + } else { + if !info.isYesD() { + break + } + } + lastCC = info.ccc + i += int(info.size) + } + if i == n { + if !atEOF { + n = lastSegStart + } + return n, true + } + return lastSegStart, false +} + +// QuickSpanString returns a boundary n such that b[0:n] == f(s[0:n]). +// It is not guaranteed to return the largest such n. +func (f Form) QuickSpanString(s string) int { + n, _ := formTable[f].quickSpan(inputString(s), 0, len(s), true) + return n +} + +// FirstBoundary returns the position i of the first boundary in b +// or -1 if b contains no boundary. +func (f Form) FirstBoundary(b []byte) int { + return f.firstBoundary(inputBytes(b), len(b)) +} + +func (f Form) firstBoundary(src input, nsrc int) int { + i := src.skipContinuationBytes(0) + if i >= nsrc { + return -1 + } + fd := formTable[f] + ss := streamSafe(0) + // We should call ss.first here, but we can't as the first rune is + // skipped already. This means FirstBoundary can't really determine + // CGJ insertion points correctly. Luckily it doesn't have to. + for { + info := fd.info(src, i) + if info.size == 0 { + return -1 + } + if s := ss.next(info); s != ssSuccess { + return i + } + i += int(info.size) + if i >= nsrc { + if !info.BoundaryAfter() && !ss.isMax() { + return -1 + } + return nsrc + } + } +} + +// FirstBoundaryInString returns the position i of the first boundary in s +// or -1 if s contains no boundary. +func (f Form) FirstBoundaryInString(s string) int { + return f.firstBoundary(inputString(s), len(s)) +} + +// NextBoundary reports the index of the boundary between the first and next +// segment in b or -1 if atEOF is false and there are not enough bytes to +// determine this boundary. +func (f Form) NextBoundary(b []byte, atEOF bool) int { + return f.nextBoundary(inputBytes(b), len(b), atEOF) +} + +// NextBoundaryInString reports the index of the boundary between the first and +// next segment in b or -1 if atEOF is false and there are not enough bytes to +// determine this boundary. +func (f Form) NextBoundaryInString(s string, atEOF bool) int { + return f.nextBoundary(inputString(s), len(s), atEOF) +} + +func (f Form) nextBoundary(src input, nsrc int, atEOF bool) int { + if nsrc == 0 { + if atEOF { + return 0 + } + return -1 + } + fd := formTable[f] + info := fd.info(src, 0) + if info.size == 0 { + if atEOF { + return 1 + } + return -1 + } + ss := streamSafe(0) + ss.first(info) + + for i := int(info.size); i < nsrc; i += int(info.size) { + info = fd.info(src, i) + if info.size == 0 { + if atEOF { + return i + } + return -1 + } + if s := ss.next(info); s != ssSuccess { + return i + } + } + if !atEOF && !info.BoundaryAfter() && !ss.isMax() { + return -1 + } + return nsrc +} + +// LastBoundary returns the position i of the last boundary in b +// or -1 if b contains no boundary. +func (f Form) LastBoundary(b []byte) int { + return lastBoundary(formTable[f], b) +} + +func lastBoundary(fd *formInfo, b []byte) int { + i := len(b) + info, p := lastRuneStart(fd, b) + if p == -1 { + return -1 + } + if info.size == 0 { // ends with incomplete rune + if p == 0 { // starts with incomplete rune + return -1 + } + i = p + info, p = lastRuneStart(fd, b[:i]) + if p == -1 { // incomplete UTF-8 encoding or non-starter bytes without a starter + return i + } + } + if p+int(info.size) != i { // trailing non-starter bytes: illegal UTF-8 + return i + } + if info.BoundaryAfter() { + return i + } + ss := streamSafe(0) + v := ss.backwards(info) + for i = p; i >= 0 && v != ssStarter; i = p { + info, p = lastRuneStart(fd, b[:i]) + if v = ss.backwards(info); v == ssOverflow { + break + } + if p+int(info.size) != i { + if p == -1 { // no boundary found + return -1 + } + return i // boundary after an illegal UTF-8 encoding + } + } + return i +} + +// decomposeSegment scans the first segment in src into rb. It inserts 0x034f +// (Grapheme Joiner) when it encounters a sequence of more than 30 non-starters +// and returns the number of bytes consumed from src or iShortDst or iShortSrc. +func decomposeSegment(rb *reorderBuffer, sp int, atEOF bool) int { + // Force one character to be consumed. + info := rb.f.info(rb.src, sp) + if info.size == 0 { + return 0 + } + if rb.nrune > 0 { + if s := rb.ss.next(info); s == ssStarter { + goto end + } else if s == ssOverflow { + rb.insertCGJ() + goto end + } + } else { + rb.ss.first(info) + } + if err := rb.insertFlush(rb.src, sp, info); err != iSuccess { + return int(err) + } + for { + sp += int(info.size) + if sp >= rb.nsrc { + if !atEOF && !info.BoundaryAfter() { + return int(iShortSrc) + } + break + } + info = rb.f.info(rb.src, sp) + if info.size == 0 { + if !atEOF { + return int(iShortSrc) + } + break + } + if s := rb.ss.next(info); s == ssStarter { + break + } else if s == ssOverflow { + rb.insertCGJ() + break + } + if err := rb.insertFlush(rb.src, sp, info); err != iSuccess { + return int(err) + } + } +end: + if !rb.doFlush() { + return int(iShortDst) + } + return sp +} + +// lastRuneStart returns the runeInfo and position of the last +// rune in buf or the zero runeInfo and -1 if no rune was found. +func lastRuneStart(fd *formInfo, buf []byte) (Properties, int) { + p := len(buf) - 1 + for ; p >= 0 && !utf8.RuneStart(buf[p]); p-- { + } + if p < 0 { + return Properties{}, -1 + } + return fd.info(inputBytes(buf), p), p +} + +// decomposeToLastBoundary finds an open segment at the end of the buffer +// and scans it into rb. Returns the buffer minus the last segment. +func decomposeToLastBoundary(rb *reorderBuffer) { + fd := &rb.f + info, i := lastRuneStart(fd, rb.out) + if int(info.size) != len(rb.out)-i { + // illegal trailing continuation bytes + return + } + if info.BoundaryAfter() { + return + } + var add [maxNonStarters + 1]Properties // stores runeInfo in reverse order + padd := 0 + ss := streamSafe(0) + p := len(rb.out) + for { + add[padd] = info + v := ss.backwards(info) + if v == ssOverflow { + // Note that if we have an overflow, it the string we are appending to + // is not correctly normalized. In this case the behavior is undefined. + break + } + padd++ + p -= int(info.size) + if v == ssStarter || p < 0 { + break + } + info, i = lastRuneStart(fd, rb.out[:p]) + if int(info.size) != p-i { + break + } + } + rb.ss = ss + // Copy bytes for insertion as we may need to overwrite rb.out. + var buf [maxBufferSize * utf8.UTFMax]byte + cp := buf[:copy(buf[:], rb.out[p:])] + rb.out = rb.out[:p] + for padd--; padd >= 0; padd-- { + info = add[padd] + rb.insertUnsafe(inputBytes(cp), 0, info) + cp = cp[info.size:] + } +} diff --git a/vendor/golang.org/x/text/unicode/norm/readwriter.go b/vendor/golang.org/x/text/unicode/norm/readwriter.go new file mode 100644 index 0000000000..4fa0e04b21 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/readwriter.go @@ -0,0 +1,126 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +import "io" + +type normWriter struct { + rb reorderBuffer + w io.Writer + buf []byte +} + +// Write implements the standard write interface. If the last characters are +// not at a normalization boundary, the bytes will be buffered for the next +// write. The remaining bytes will be written on close. +func (w *normWriter) Write(data []byte) (n int, err error) { + // Process data in pieces to keep w.buf size bounded. + const chunk = 4000 + + for len(data) > 0 { + // Normalize into w.buf. + m := len(data) + if m > chunk { + m = chunk + } + w.rb.src = inputBytes(data[:m]) + w.rb.nsrc = m + w.buf = doAppend(&w.rb, w.buf, 0) + data = data[m:] + n += m + + // Write out complete prefix, save remainder. + // Note that lastBoundary looks back at most 31 runes. + i := lastBoundary(&w.rb.f, w.buf) + if i == -1 { + i = 0 + } + if i > 0 { + if _, err = w.w.Write(w.buf[:i]); err != nil { + break + } + bn := copy(w.buf, w.buf[i:]) + w.buf = w.buf[:bn] + } + } + return n, err +} + +// Close forces data that remains in the buffer to be written. +func (w *normWriter) Close() error { + if len(w.buf) > 0 { + _, err := w.w.Write(w.buf) + if err != nil { + return err + } + } + return nil +} + +// Writer returns a new writer that implements Write(b) +// by writing f(b) to w. The returned writer may use an +// an internal buffer to maintain state across Write calls. +// Calling its Close method writes any buffered data to w. +func (f Form) Writer(w io.Writer) io.WriteCloser { + wr := &normWriter{rb: reorderBuffer{}, w: w} + wr.rb.init(f, nil) + return wr +} + +type normReader struct { + rb reorderBuffer + r io.Reader + inbuf []byte + outbuf []byte + bufStart int + lastBoundary int + err error +} + +// Read implements the standard read interface. +func (r *normReader) Read(p []byte) (int, error) { + for { + if r.lastBoundary-r.bufStart > 0 { + n := copy(p, r.outbuf[r.bufStart:r.lastBoundary]) + r.bufStart += n + if r.lastBoundary-r.bufStart > 0 { + return n, nil + } + return n, r.err + } + if r.err != nil { + return 0, r.err + } + outn := copy(r.outbuf, r.outbuf[r.lastBoundary:]) + r.outbuf = r.outbuf[0:outn] + r.bufStart = 0 + + n, err := r.r.Read(r.inbuf) + r.rb.src = inputBytes(r.inbuf[0:n]) + r.rb.nsrc, r.err = n, err + if n > 0 { + r.outbuf = doAppend(&r.rb, r.outbuf, 0) + } + if err == io.EOF { + r.lastBoundary = len(r.outbuf) + } else { + r.lastBoundary = lastBoundary(&r.rb.f, r.outbuf) + if r.lastBoundary == -1 { + r.lastBoundary = 0 + } + } + } + panic("should not reach here") +} + +// Reader returns a new reader that implements Read +// by reading data from r and returning f(data). +func (f Form) Reader(r io.Reader) io.Reader { + const chunk = 4000 + buf := make([]byte, chunk) + rr := &normReader{rb: reorderBuffer{}, r: r, inbuf: buf} + rr.rb.init(f, buf) + return rr +} diff --git a/vendor/golang.org/x/text/unicode/norm/tables.go b/vendor/golang.org/x/text/unicode/norm/tables.go new file mode 100644 index 0000000000..a56697b571 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/tables.go @@ -0,0 +1,7627 @@ +// This file was generated by go generate; DO NOT EDIT + +package norm + +const ( + // Version is the Unicode edition from which the tables are derived. + Version = "9.0.0" + + // MaxTransformChunkSize indicates the maximum number of bytes that Transform + // may need to write atomically for any Form. Making a destination buffer at + // least this size ensures that Transform can always make progress and that + // the user does not need to grow the buffer on an ErrShortDst. + MaxTransformChunkSize = 35 + maxNonStarters*4 +) + +var ccc = [55]uint8{ + 0, 1, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, + 84, 91, 103, 107, 118, 122, 129, 130, + 132, 202, 214, 216, 218, 220, 222, 224, + 226, 228, 230, 232, 233, 234, 240, +} + +const ( + firstMulti = 0x186D + firstCCC = 0x2C9E + endMulti = 0x2F60 + firstLeadingCCC = 0x4A44 + firstCCCZeroExcept = 0x4A5A + firstStarterWithNLead = 0x4A81 + lastDecomp = 0x4A83 + maxDecomp = 0x8000 +) + +// decomps: 19075 bytes +var decomps = [...]byte{ + // Bytes 0 - 3f + 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41, + 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41, + 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41, + 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41, + 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41, + 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41, + 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41, + 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41, + // Bytes 40 - 7f + 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41, + 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41, + 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41, + 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41, + 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41, + 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, + 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41, + 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, + // Bytes 80 - bf + 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41, + 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41, + 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41, + 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41, + 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41, + 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41, + 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41, + 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42, + // Bytes c0 - ff + 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5, + 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2, + 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42, + 0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, + 0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, + 0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, + 0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, + 0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, + // Bytes 100 - 13f + 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42, + 0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F, + 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9, + 0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42, + 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB, + 0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9, + 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42, + 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5, + // Bytes 140 - 17f + 0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, + 0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42, + 0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A, + 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA, + 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42, + 0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F, + 0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE, + 0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42, + // Bytes 180 - 1bf + 0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97, + 0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE, + 0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42, + 0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F, + 0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE, + 0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42, + 0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8, + 0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE, + // Bytes 1c0 - 1ff + 0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42, + 0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7, + 0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE, + 0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42, + 0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF, + 0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF, + 0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42, + 0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87, + // Bytes 200 - 23f + 0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF, + 0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42, + 0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90, + 0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7, + 0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42, + 0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2, + 0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8, + 0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42, + // Bytes 240 - 27f + 0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB, + 0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8, + 0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42, + 0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3, + 0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8, + 0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42, + 0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81, + 0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9, + // Bytes 280 - 2bf + 0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42, + 0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89, + 0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9, + 0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42, + 0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE, + 0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA, + 0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42, + 0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C, + // Bytes 2c0 - 2ff + 0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA, + 0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42, + 0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9, + 0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA, + 0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42, + 0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81, + 0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB, + 0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42, + // Bytes 300 - 33f + 0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90, + 0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43, + 0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43, + 0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43, + 0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43, + 0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43, + 0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43, + 0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43, + // Bytes 340 - 37f + 0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43, + 0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43, + 0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43, + 0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43, + 0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43, + 0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43, + 0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43, + 0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43, + // Bytes 380 - 3bf + 0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43, + 0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43, + 0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43, + 0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43, + 0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43, + 0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43, + 0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43, + 0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43, + // Bytes 3c0 - 3ff + 0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43, + 0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43, + 0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43, + 0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43, + 0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43, + 0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43, + 0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43, + 0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43, + // Bytes 400 - 43f + 0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43, + 0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43, + 0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43, + 0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43, + 0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43, + 0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43, + 0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43, + 0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, + // Bytes 440 - 47f + 0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, + 0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, + 0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, + 0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, + 0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, + 0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, + 0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, + 0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, + // Bytes 480 - 4bf + 0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43, + 0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43, + 0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43, + 0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43, + 0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43, + 0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43, + 0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43, + 0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43, + // Bytes 4c0 - 4ff + 0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43, + 0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43, + 0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43, + 0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43, + 0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43, + 0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43, + 0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43, + 0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43, + // Bytes 500 - 53f + 0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43, + 0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43, + 0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43, + 0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43, + 0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43, + 0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43, + 0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43, + 0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43, + // Bytes 540 - 57f + 0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43, + 0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43, + 0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43, + 0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43, + 0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43, + 0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43, + 0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43, + 0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43, + // Bytes 580 - 5bf + 0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43, + 0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43, + 0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43, + 0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43, + 0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43, + 0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43, + 0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43, + 0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43, + // Bytes 5c0 - 5ff + 0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43, + 0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43, + 0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43, + 0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43, + 0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43, + 0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43, + 0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43, + 0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43, + // Bytes 600 - 63f + 0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43, + 0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43, + 0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43, + 0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43, + 0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43, + 0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43, + 0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43, + 0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43, + // Bytes 640 - 67f + 0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43, + 0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43, + 0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43, + 0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43, + 0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43, + 0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43, + 0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43, + 0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43, + // Bytes 680 - 6bf + 0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43, + 0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43, + 0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43, + 0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43, + 0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43, + 0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43, + 0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43, + 0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43, + // Bytes 6c0 - 6ff + 0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43, + 0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43, + 0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43, + 0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43, + 0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43, + 0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43, + 0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43, + 0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43, + // Bytes 700 - 73f + 0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43, + 0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43, + 0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43, + 0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43, + 0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43, + 0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43, + 0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43, + 0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43, + // Bytes 740 - 77f + 0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43, + 0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43, + 0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43, + 0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43, + 0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43, + 0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43, + 0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43, + 0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43, + // Bytes 780 - 7bf + 0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43, + 0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43, + 0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43, + 0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43, + 0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43, + 0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43, + 0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43, + 0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43, + // Bytes 7c0 - 7ff + 0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43, + 0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43, + 0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43, + 0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43, + 0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43, + 0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43, + 0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43, + 0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43, + // Bytes 800 - 83f + 0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43, + 0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43, + 0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43, + 0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43, + 0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43, + 0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43, + 0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43, + 0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43, + // Bytes 840 - 87f + 0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43, + 0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43, + 0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43, + 0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43, + 0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43, + 0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43, + 0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43, + 0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43, + // Bytes 880 - 8bf + 0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43, + 0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43, + 0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43, + 0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43, + 0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43, + 0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43, + 0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43, + 0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43, + // Bytes 8c0 - 8ff + 0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43, + 0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43, + 0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43, + 0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43, + 0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43, + 0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43, + 0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43, + 0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43, + // Bytes 900 - 93f + 0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43, + 0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43, + 0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43, + 0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43, + 0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43, + 0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43, + 0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43, + 0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43, + // Bytes 940 - 97f + 0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43, + 0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43, + 0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43, + 0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43, + 0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43, + 0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43, + 0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43, + 0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43, + // Bytes 980 - 9bf + 0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43, + 0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43, + 0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43, + 0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43, + 0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43, + 0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43, + 0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43, + 0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43, + // Bytes 9c0 - 9ff + 0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43, + 0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43, + 0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43, + 0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43, + 0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43, + 0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43, + 0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43, + 0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43, + // Bytes a00 - a3f + 0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43, + 0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43, + 0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43, + 0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43, + 0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43, + 0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43, + 0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43, + 0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43, + // Bytes a40 - a7f + 0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43, + 0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43, + 0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43, + 0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43, + 0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43, + 0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43, + 0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43, + 0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43, + // Bytes a80 - abf + 0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43, + 0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43, + 0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43, + 0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43, + 0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43, + 0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43, + 0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43, + 0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43, + // Bytes ac0 - aff + 0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43, + 0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43, + 0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43, + 0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43, + 0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43, + 0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43, + 0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43, + 0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43, + // Bytes b00 - b3f + 0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43, + 0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43, + 0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43, + 0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43, + 0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43, + 0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43, + 0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43, + 0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43, + // Bytes b40 - b7f + 0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43, + 0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43, + 0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43, + 0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43, + 0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43, + 0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43, + 0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43, + 0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43, + // Bytes b80 - bbf + 0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43, + 0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43, + 0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43, + 0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43, + 0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43, + 0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43, + 0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43, + 0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43, + // Bytes bc0 - bff + 0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43, + 0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43, + 0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43, + 0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43, + 0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43, + 0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43, + 0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43, + 0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43, + // Bytes c00 - c3f + 0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43, + 0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43, + 0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43, + 0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43, + 0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43, + 0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43, + 0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43, + 0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43, + // Bytes c40 - c7f + 0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43, + 0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43, + 0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43, + 0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43, + 0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43, + 0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43, + 0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43, + 0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43, + // Bytes c80 - cbf + 0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43, + 0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43, + 0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43, + 0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43, + 0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43, + 0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43, + 0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43, + 0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43, + // Bytes cc0 - cff + 0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43, + 0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43, + 0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43, + 0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43, + 0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43, + 0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43, + 0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43, + 0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43, + // Bytes d00 - d3f + 0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43, + 0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43, + 0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43, + 0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43, + 0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43, + 0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43, + 0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43, + 0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43, + // Bytes d40 - d7f + 0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43, + 0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43, + 0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43, + 0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43, + 0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43, + 0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43, + 0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43, + 0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43, + // Bytes d80 - dbf + 0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43, + 0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43, + 0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43, + 0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43, + 0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43, + 0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43, + 0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43, + 0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43, + // Bytes dc0 - dff + 0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43, + 0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43, + 0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43, + 0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43, + 0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43, + 0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43, + 0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43, + 0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43, + // Bytes e00 - e3f + 0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43, + 0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43, + 0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43, + 0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43, + 0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43, + 0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43, + 0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43, + 0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43, + // Bytes e40 - e7f + 0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43, + 0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43, + 0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43, + 0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43, + 0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43, + 0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43, + 0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43, + 0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43, + // Bytes e80 - ebf + 0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43, + 0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43, + 0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43, + 0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43, + 0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43, + 0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43, + 0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43, + 0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43, + // Bytes ec0 - eff + 0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43, + 0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43, + 0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43, + 0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43, + 0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43, + 0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43, + 0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43, + 0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43, + // Bytes f00 - f3f + 0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43, + 0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43, + 0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43, + 0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43, + 0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43, + 0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43, + 0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43, + 0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43, + // Bytes f40 - f7f + 0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43, + 0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43, + 0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43, + 0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43, + 0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43, + 0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43, + 0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43, + 0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43, + // Bytes f80 - fbf + 0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43, + 0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43, + 0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43, + 0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43, + 0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43, + 0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43, + 0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43, + 0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43, + // Bytes fc0 - fff + 0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43, + 0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43, + 0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43, + 0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43, + 0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43, + 0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43, + 0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43, + 0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43, + // Bytes 1000 - 103f + 0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43, + 0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43, + 0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43, + 0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43, + 0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43, + 0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43, + 0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43, + 0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43, + // Bytes 1040 - 107f + 0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43, + 0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43, + 0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43, + 0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43, + 0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43, + 0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43, + 0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43, + 0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43, + // Bytes 1080 - 10bf + 0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43, + 0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43, + 0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43, + 0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43, + 0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43, + 0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43, + 0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43, + 0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43, + // Bytes 10c0 - 10ff + 0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43, + 0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43, + 0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43, + 0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43, + 0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43, + 0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43, + 0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43, + 0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43, + // Bytes 1100 - 113f + 0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43, + 0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43, + 0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43, + 0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43, + 0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43, + 0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43, + 0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43, + 0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43, + // Bytes 1140 - 117f + 0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43, + 0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43, + 0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43, + 0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43, + 0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43, + 0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43, + 0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43, + 0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43, + // Bytes 1180 - 11bf + 0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43, + 0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43, + 0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43, + 0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43, + 0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43, + 0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43, + 0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43, + 0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43, + // Bytes 11c0 - 11ff + 0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43, + 0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43, + 0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43, + 0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43, + 0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43, + 0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43, + 0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43, + 0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43, + // Bytes 1200 - 123f + 0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43, + 0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43, + 0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43, + 0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43, + 0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43, + 0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43, + 0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43, + 0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43, + // Bytes 1240 - 127f + 0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43, + 0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43, + 0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43, + 0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43, + 0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43, + 0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43, + 0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43, + 0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43, + // Bytes 1280 - 12bf + 0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43, + 0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43, + 0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43, + 0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43, + 0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43, + 0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43, + 0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43, + 0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43, + // Bytes 12c0 - 12ff + 0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43, + 0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43, + 0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43, + 0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43, + 0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43, + 0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43, + 0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43, + 0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43, + // Bytes 1300 - 133f + 0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43, + 0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43, + 0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43, + 0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43, + 0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43, + 0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43, + 0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43, + 0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43, + // Bytes 1340 - 137f + 0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43, + 0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43, + 0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43, + 0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43, + 0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43, + 0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43, + 0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43, + 0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43, + // Bytes 1380 - 13bf + 0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43, + 0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43, + 0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43, + 0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43, + 0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43, + 0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43, + 0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43, + 0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43, + // Bytes 13c0 - 13ff + 0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43, + 0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43, + 0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43, + 0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43, + 0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43, + 0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43, + 0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43, + 0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43, + // Bytes 1400 - 143f + 0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43, + 0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43, + 0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43, + 0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43, + 0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43, + 0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43, + 0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43, + 0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43, + // Bytes 1440 - 147f + 0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43, + 0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43, + 0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43, + 0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43, + 0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43, + 0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43, + 0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43, + 0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43, + // Bytes 1480 - 14bf + 0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43, + 0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43, + 0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43, + 0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43, + 0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43, + 0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43, + 0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43, + 0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43, + // Bytes 14c0 - 14ff + 0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43, + 0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43, + 0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43, + 0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43, + 0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43, + 0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43, + 0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43, + 0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43, + // Bytes 1500 - 153f + 0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43, + 0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43, + 0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43, + 0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43, + 0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43, + 0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43, + 0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43, + 0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43, + // Bytes 1540 - 157f + 0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43, + 0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43, + 0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43, + 0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43, + 0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43, + 0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43, + 0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43, + 0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43, + // Bytes 1580 - 15bf + 0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43, + 0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43, + 0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43, + 0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43, + 0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43, + 0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43, + 0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43, + 0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43, + // Bytes 15c0 - 15ff + 0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43, + 0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43, + 0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43, + 0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43, + 0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43, + 0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43, + 0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43, + 0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43, + // Bytes 1600 - 163f + 0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43, + 0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43, + 0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43, + 0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43, + 0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43, + 0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43, + 0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43, + 0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43, + // Bytes 1640 - 167f + 0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44, + 0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94, + 0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0, + 0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA, + 0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0, + 0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44, + 0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93, + 0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0, + // Bytes 1680 - 16bf + 0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88, + 0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1, + 0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44, + 0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86, + 0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0, + 0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94, + 0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2, + 0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44, + // Bytes 16c0 - 16ff + 0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80, + 0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0, + 0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93, + 0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3, + 0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44, + 0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A, + 0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0, + 0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA, + // Bytes 1700 - 173f + 0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3, + 0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44, + 0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE, + 0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0, + 0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB, + 0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4, + 0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44, + 0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2, + // Bytes 1740 - 177f + 0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0, + 0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84, + 0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5, + 0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44, + 0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89, + 0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0, + 0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A, + 0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5, + // Bytes 1780 - 17bf + 0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44, + 0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2, + 0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0, + 0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A, + 0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6, + 0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44, + 0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93, + 0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0, + // Bytes 17c0 - 17ff + 0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7, + 0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6, + 0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44, + 0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5, + 0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0, + 0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92, + 0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7, + 0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44, + // Bytes 1800 - 183f + 0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2, + 0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0, + 0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92, + 0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8, + 0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44, + 0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85, + 0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0, + 0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A, + // Bytes 1840 - 187f + 0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9, + 0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44, + 0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84, + 0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0, + 0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92, + 0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21, + 0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30, + 0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42, + // Bytes 1880 - 18bf + 0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31, + 0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31, + 0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42, + 0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39, + 0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32, + 0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42, + 0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35, + 0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32, + // Bytes 18c0 - 18ff + 0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42, + 0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31, + 0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33, + 0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42, + 0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39, + 0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34, + 0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42, + 0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35, + // Bytes 1900 - 193f + 0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34, + 0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42, + 0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C, + 0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37, + 0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42, + 0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D, + 0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41, + 0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42, + // Bytes 1940 - 197f + 0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A, + 0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48, + 0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42, + 0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A, + 0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49, + 0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42, + 0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A, + 0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D, + // Bytes 1980 - 19bf + 0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, + 0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, + 0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, + 0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, + 0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, + 0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, + 0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, + 0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, + // Bytes 19c0 - 19ff + 0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, + 0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, + 0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, + 0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, + 0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, + 0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, + 0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, + 0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, + // Bytes 1a00 - 1a3f + 0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, + 0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, + 0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, + 0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, + 0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, + 0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, + 0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, + 0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, + // Bytes 1a40 - 1a7f + 0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, + 0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, + 0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, + 0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, + 0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, + 0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, + 0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, + 0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, + // Bytes 1a80 - 1abf + 0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, + 0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, + 0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, + 0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, + 0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, + 0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, + 0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, + 0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, + // Bytes 1ac0 - 1aff + 0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, + 0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, + 0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, + 0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, + 0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, + 0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, + 0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, + 0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, + // Bytes 1b00 - 1b3f + 0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, + 0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, + 0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, + 0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, + 0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, + 0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, + 0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, + 0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, + // Bytes 1b40 - 1b7f + 0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, + 0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, + 0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, + 0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, + 0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, + 0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, + 0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, + 0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, + // Bytes 1b80 - 1bbf + 0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, + 0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, + 0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, + 0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, + 0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, + 0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, + 0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, + 0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, + // Bytes 1bc0 - 1bff + 0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, + 0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, + 0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, + 0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, + 0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, + 0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, + 0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, + 0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, + // Bytes 1c00 - 1c3f + 0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, + 0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, + 0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, + 0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, + 0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, + 0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, + 0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, + 0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, + // Bytes 1c40 - 1c7f + 0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, + 0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, + 0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, + 0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, + 0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, + 0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, + 0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, + 0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, + // Bytes 1c80 - 1cbf + 0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, + 0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, + 0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, + 0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, + 0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, + 0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, + 0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, + 0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, + // Bytes 1cc0 - 1cff + 0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, + 0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, + 0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, + 0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, + 0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, + 0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, + 0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, + 0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, + // Bytes 1d00 - 1d3f + 0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, + 0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, + 0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, + 0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, + 0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, + 0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, + 0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, + 0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, + // Bytes 1d40 - 1d7f + 0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, + 0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, + 0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, + 0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, + 0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, + 0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, + 0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, + 0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, + // Bytes 1d80 - 1dbf + 0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, + 0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, + 0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, + 0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, + 0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, + 0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, + 0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, + 0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, + // Bytes 1dc0 - 1dff + 0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, + 0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, + 0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, + 0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, + 0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, + 0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, + 0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, + 0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, + // Bytes 1e00 - 1e3f + 0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, + 0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, + 0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, + 0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, + 0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, + 0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, + 0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, + 0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, + // Bytes 1e40 - 1e7f + 0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, + 0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, + 0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, + 0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, + 0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, + 0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, + 0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, + 0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, + // Bytes 1e80 - 1ebf + 0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, + 0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, + 0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, + 0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, + 0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, + 0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, + 0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, + 0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, + // Bytes 1ec0 - 1eff + 0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, + 0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, + 0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, + 0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, + 0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, + 0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, + 0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, + 0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, + // Bytes 1f00 - 1f3f + 0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, + 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, + 0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, + 0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, + 0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, + 0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, + 0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, + 0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, + // Bytes 1f40 - 1f7f + 0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, + 0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, + 0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, + 0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, + 0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, + 0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, + 0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, + 0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, + // Bytes 1f80 - 1fbf + 0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, + 0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, + 0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, + 0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, + 0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, + 0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, + 0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, + 0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, + // Bytes 1fc0 - 1fff + 0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, + 0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, + 0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, + 0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, + 0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, + 0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, + 0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, + 0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, + // Bytes 2000 - 203f + 0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, + 0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, + 0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, + 0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, + 0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, + 0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, + 0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, + 0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, + // Bytes 2040 - 207f + 0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, + 0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, + 0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, + 0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, + // Bytes 2080 - 20bf + 0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, + 0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, + 0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, + 0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, + // Bytes 20c0 - 20ff + 0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, + 0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, + 0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, + 0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, + 0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, + 0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, + 0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, + 0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, + // Bytes 2100 - 213f + 0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, + 0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, + 0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, + 0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, + 0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, + 0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, + 0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, + 0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, + // Bytes 2140 - 217f + 0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, + 0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, + 0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, + 0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, + 0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, + 0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, + 0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, + 0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, + // Bytes 2180 - 21bf + 0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, + 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, + 0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, + 0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, + 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, + // Bytes 21c0 - 21ff + 0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, + // Bytes 2200 - 223f + 0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, + // Bytes 2240 - 227f + 0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, + 0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, + 0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, + // Bytes 2280 - 22bf + 0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, + 0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, + 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, + 0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, + 0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, + // Bytes 22c0 - 22ff + 0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, + 0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, + 0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, + 0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, + 0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, + 0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, + 0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, + 0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, + // Bytes 2300 - 233f + 0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, + 0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, + 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, + 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, + 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, + 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, + 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, + // Bytes 2340 - 237f + 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, + 0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, + 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, + 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, + 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, + // Bytes 2380 - 23bf + 0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, + 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, + 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, + 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, + 0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, + 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, + 0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, + // Bytes 23c0 - 23ff + 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, + 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, + 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, + 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, + 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, + 0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, + 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, + // Bytes 2400 - 243f + 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, + 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, + 0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, + 0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, + 0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, + 0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, + 0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, + 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, + // Bytes 2440 - 247f + 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, + 0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, + 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, + 0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, + 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, + 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, + // Bytes 2480 - 24bf + 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, + 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, + 0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, + 0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, + 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, + 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, + 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, + 0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, + // Bytes 24c0 - 24ff + 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, + 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, + 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, + 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, + 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, + 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, + // Bytes 2500 - 253f + 0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, + 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, + 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, + 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, + 0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, + 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, + 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, + // Bytes 2540 - 257f + 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, + 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, + 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, + 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, + 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, + 0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, + 0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, + // Bytes 2580 - 25bf + 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, + 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, + 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, + 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, + // Bytes 25c0 - 25ff + 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, + 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, + 0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, + // Bytes 2600 - 263f + 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, + 0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, + 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, + 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, + 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, + // Bytes 2640 - 267f + 0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, + 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, + 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, + 0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, + 0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, + 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, + 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, + 0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, + // Bytes 2680 - 26bf + 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, + 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, + 0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, + 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, + 0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, + 0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, + // Bytes 26c0 - 26ff + 0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, + 0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, + 0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, + 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, + 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, + 0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, + 0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, + 0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, + // Bytes 2700 - 273f + 0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, + 0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, + 0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, + 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, + 0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, + 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, + 0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, + // Bytes 2740 - 277f + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, + 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + 0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, + 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, + 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, + // Bytes 2780 - 27bf + 0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, + 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + 0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, + 0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, + 0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, + // Bytes 27c0 - 27ff + 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, + 0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, + 0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, + 0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, + 0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, + 0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, + 0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, + 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, + // Bytes 2800 - 283f + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, + 0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, + 0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, + 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, + 0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, + 0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, + 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, + // Bytes 2840 - 287f + 0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, + 0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, + 0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, + 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, + 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, + 0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, + 0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, + 0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, + // Bytes 2880 - 28bf + 0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, + 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, + 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, + 0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, + // Bytes 28c0 - 28ff + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, + 0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, + 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, + 0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, + 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, + 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, + 0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, + // Bytes 2900 - 293f + 0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, + 0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, + // Bytes 2940 - 297f + 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, + 0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, + 0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, + 0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, + // Bytes 2980 - 29bf + 0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, + 0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, + 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, + // Bytes 29c0 - 29ff + 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, + 0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, + // Bytes 2a00 - 2a3f + 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, + 0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, + 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, + 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + // Bytes 2a40 - 2a7f + 0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, + 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, + // Bytes 2a80 - 2abf + 0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, + 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, + 0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, + // Bytes 2ac0 - 2aff + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, + 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, + 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, + 0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, + 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, + 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, + 0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, + // Bytes 2b00 - 2b3f + 0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, + 0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, + 0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, + // Bytes 2b40 - 2b7f + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, + // Bytes 2b80 - 2bbf + 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, + 0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, + 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, + 0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, + // Bytes 2bc0 - 2bff + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + // Bytes 2c00 - 2c3f + 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, + 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, + 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, + 0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, + 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, + // Bytes 2c40 - 2c7f + 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, + 0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, + 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9, + // Bytes 2c80 - 2cbf + 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, + 0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, + 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, + 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0, + 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0, + 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0, + 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0, + 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0, + // Bytes 2cc0 - 2cff + 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0, + 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, + 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, + 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, + 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, + 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0, + // Bytes 2d00 - 2d3f + 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, + 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0, + 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, + 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1, + 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1, + 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + // Bytes 2d40 - 2d7f + 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0, + // Bytes 2d80 - 2dbf + 0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, + 0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, + 0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, + 0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, + 0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, + 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, + 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, + 0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, + // Bytes 2dc0 - 2dff + 0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, + 0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, + 0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, + 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, + 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44, + 0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC, + 0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9, + // Bytes 2e00 - 2e3f + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9, + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, + 0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, + // Bytes 2e40 - 2e7f + 0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, + 0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, + // Bytes 2e80 - 2ebf + 0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, + 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, + 0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, + 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, + 0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C, + 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + // Bytes 2ec0 - 2eff + 0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83, + 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, + 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, + 0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, + 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82, + 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, + // Bytes 2f00 - 2f3f + 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F, + 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, + 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95, + // Bytes 2f40 - 2f7f + 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, + 0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, + 0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, + 0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, + 0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81, + 0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41, + // Bytes 2f80 - 2fbf + 0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9, + 0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC, + 0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03, + 0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8, + 0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42, + 0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5, + 0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC, + 0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03, + // Bytes 2fc0 - 2fff + 0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87, + 0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44, + 0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5, + 0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC, + 0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03, + 0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83, + 0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45, + 0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9, + // Bytes 3000 - 303f + 0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC, + 0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03, + 0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8, + 0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45, + 0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9, + 0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC, + 0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03, + 0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87, + // Bytes 3040 - 307f + 0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47, + 0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9, + 0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC, + 0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03, + 0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7, + 0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49, + 0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9, + 0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC, + // Bytes 3080 - 30bf + 0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03, + 0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87, + 0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49, + 0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9, + 0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC, + 0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03, + 0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82, + 0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B, + // Bytes 30c0 - 30ff + 0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5, + 0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC, + 0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03, + 0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7, + 0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C, + 0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9, + 0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC, + 0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03, + // Bytes 3100 - 313f + 0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83, + 0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E, + 0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5, + 0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC, + 0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03, + 0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81, + 0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F, + 0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9, + // Bytes 3140 - 317f + 0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC, + 0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03, + 0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87, + 0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52, + 0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9, + 0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC, + 0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03, + 0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82, + // Bytes 3180 - 31bf + 0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53, + 0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5, + 0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC, + 0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03, + 0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7, + 0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54, + 0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9, + 0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC, + // Bytes 31c0 - 31ff + 0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03, + 0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A, + 0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55, + 0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9, + 0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC, + 0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03, + 0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD, + 0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56, + // Bytes 3200 - 323f + 0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5, + 0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC, + 0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03, + 0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88, + 0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58, + 0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9, + 0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC, + 0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03, + // Bytes 3240 - 327f + 0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84, + 0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59, + 0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9, + 0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC, + 0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03, + 0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C, + 0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, + 0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9, + // Bytes 3280 - 32bf + 0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC, + 0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03, + 0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C, + 0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61, + 0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5, + 0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC, + 0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03, + 0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81, + // Bytes 32c0 - 32ff + 0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63, + 0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9, + 0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC, + 0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03, + 0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD, + 0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65, + 0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9, + 0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC, + // Bytes 3300 - 333f + 0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03, + 0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89, + 0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65, + 0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9, + 0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC, + 0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03, + 0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81, + 0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67, + // Bytes 3340 - 337f + 0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9, + 0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, + 0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03, + 0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87, + 0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68, + 0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5, + 0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC, + 0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03, + // Bytes 3380 - 33bf + 0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81, + 0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69, + 0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9, + 0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC, + 0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03, + 0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91, + 0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69, + 0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5, + // Bytes 33c0 - 33ff + 0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC, + 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03, + 0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3, + 0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B, + 0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9, + 0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC, + 0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03, + 0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81, + // Bytes 3400 - 343f + 0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D, + 0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9, + 0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC, + 0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03, + 0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3, + 0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E, + 0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5, + 0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC, + // Bytes 3440 - 347f + 0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03, + 0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B, + 0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F, + 0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9, + 0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC, + 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03, + 0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C, + 0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72, + // Bytes 3480 - 34bf + 0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5, + 0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC, + 0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03, + 0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7, + 0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74, + 0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9, + 0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC, + 0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03, + // Bytes 34c0 - 34ff + 0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1, + 0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75, + 0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9, + 0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC, + 0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03, + 0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C, + 0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75, + 0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5, + // Bytes 3500 - 353f + 0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC, + 0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03, + 0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83, + 0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77, + 0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9, + 0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC, + 0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03, + 0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3, + // Bytes 3540 - 357f + 0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78, + 0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9, + 0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC, + 0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03, + 0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87, + 0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79, + 0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9, + 0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC, + // Bytes 3580 - 35bf + 0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03, + 0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C, + 0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, + 0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80, + 0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04, + 0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86, + 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84, + 0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04, + // Bytes 35c0 - 35ff + 0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6, + 0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81, + 0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04, + 0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92, + 0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80, + 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04, + 0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85, + // Bytes 3600 - 363f + 0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97, + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04, + 0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99, + 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84, + 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04, + 0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F, + // Bytes 3640 - 367f + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04, + 0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5, + 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84, + 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04, + 0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9, + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04, + // Bytes 3680 - 36bf + 0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85, + 0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7, + 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80, + 0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04, + 0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82, + // Bytes 36c0 - 36ff + 0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81, + 0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94, + 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04, + 0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85, + 0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86, + 0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04, + 0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92, + // Bytes 3700 - 373f + 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81, + 0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04, + 0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04, + // Bytes 3740 - 377f + 0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98, + 0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84, + 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04, + 0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A, + 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04, + 0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, + // Bytes 3780 - 37bf + 0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5, + 0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6, + // Bytes 37c0 - 37ff + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04, + 0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8, + 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04, + 0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83, + 0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86, + 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04, + // Bytes 3800 - 383f + 0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87, + 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88, + 0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04, + 0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4, + 0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, + 0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04, + 0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8, + 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88, + // Bytes 3840 - 387f + 0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04, + 0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7, + 0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94, + 0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04, + 0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92, + 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94, + 0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA, + 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, + // Bytes 3880 - 38bf + 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41, + 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC, + 0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86, + 0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, + 0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, + 0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA, + 0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, + 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41, + // Bytes 38c0 - 38ff + 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC, + 0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7, + 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, + 0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, + 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA, + 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, + 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45, + 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, + // Bytes 3900 - 393f + 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7, + 0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC, + 0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, + 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, + 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, + 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F, + 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC, + 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83, + // Bytes 3940 - 397f + 0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC, + 0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, + 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, + 0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, + 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F, + 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, + 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, + 0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, + // Bytes 3980 - 39bf + 0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, + 0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, + 0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, + 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53, + 0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, + 0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3, + 0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC, + 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, + // Bytes 39c0 - 39ff + 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, + 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55, + 0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC, + 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B, + 0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, + 0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, + 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, + // Bytes 3a00 - 3a3f + 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, + 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61, + 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC, + 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86, + 0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, + 0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, + 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA, + 0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, + // Bytes 3a40 - 3a7f + 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61, + 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC, + 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3, + 0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC, + 0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, + 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA, + 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, + 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65, + // Bytes 3a80 - 3abf + 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC, + 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3, + 0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC, + 0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, + 0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, + 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, + 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F, + 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC, + // Bytes 3ac0 - 3aff + 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83, + 0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, + 0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, + 0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA, + 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, + 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F, + 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC, + 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, + // Bytes 3b00 - 3b3f + 0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, + 0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, + 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, + 0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, + 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72, + 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC, + 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C, + 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC, + // Bytes 3b40 - 3b7f + 0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, + 0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA, + 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05, + 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75, + 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC, + 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B, + 0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, + 0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, + // Bytes 3b80 - 3bbf + 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA, + 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05, + 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1, + 0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE, + 0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, + 0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, + 0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, + 0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, + // Bytes 3bc0 - 3bff + 0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, + 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, + // Bytes 3c00 - 3c3f + 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, + 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + // Bytes 3c40 - 3c7f + 0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, + 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + // Bytes 3c80 - 3cbf + 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + 0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, + // Bytes 3cc0 - 3cff + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, + 0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + // Bytes 3d00 - 3d3f + 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + // Bytes 3d40 - 3d7f + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + // Bytes 3d80 - 3dbf + 0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + // Bytes 3dc0 - 3dff + 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + // Bytes 3e00 - 3e3f + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + // Bytes 3e40 - 3e7f + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA, + // Bytes 3e80 - 3ebf + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + // Bytes 3ec0 - 3eff + 0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + 0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85, + 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11, + // Bytes 3f00 - 3f3f + 0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 3f40 - 3f7f + 0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 3f80 - 3fbf + 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D, + // Bytes 3fc0 - 3fff + 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4000 - 403f + 0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4040 - 407f + 0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4080 - 40bf + 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 40c0 - 40ff + 0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D, + 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + // Bytes 4100 - 413f + 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + // Bytes 4140 - 417f + 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, + // Bytes 4180 - 41bf + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + // Bytes 41c0 - 41ff + 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, + // Bytes 4200 - 423f + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, + 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF, + 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + 0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, + // Bytes 4240 - 427f + 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, + 0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, + 0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2, + 0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43, + 0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84, + 0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20, + 0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9, + 0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC, + // Bytes 4280 - 42bf + 0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43, + 0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94, + 0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20, + 0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5, + 0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD, + 0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43, + 0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D, + 0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20, + // Bytes 42c0 - 42ff + 0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D, + 0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9, + 0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43, + 0x73, 0xCC, 0x87, 0xC9, 0x43, 0xE1, 0x85, 0xA1, + 0x01, 0x43, 0xE1, 0x85, 0xA2, 0x01, 0x43, 0xE1, + 0x85, 0xA3, 0x01, 0x43, 0xE1, 0x85, 0xA4, 0x01, + 0x43, 0xE1, 0x85, 0xA5, 0x01, 0x43, 0xE1, 0x85, + 0xA6, 0x01, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x43, + // Bytes 4300 - 433f + 0xE1, 0x85, 0xA8, 0x01, 0x43, 0xE1, 0x85, 0xA9, + 0x01, 0x43, 0xE1, 0x85, 0xAA, 0x01, 0x43, 0xE1, + 0x85, 0xAB, 0x01, 0x43, 0xE1, 0x85, 0xAC, 0x01, + 0x43, 0xE1, 0x85, 0xAD, 0x01, 0x43, 0xE1, 0x85, + 0xAE, 0x01, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x43, + 0xE1, 0x85, 0xB0, 0x01, 0x43, 0xE1, 0x85, 0xB1, + 0x01, 0x43, 0xE1, 0x85, 0xB2, 0x01, 0x43, 0xE1, + 0x85, 0xB3, 0x01, 0x43, 0xE1, 0x85, 0xB4, 0x01, + // Bytes 4340 - 437f + 0x43, 0xE1, 0x85, 0xB5, 0x01, 0x43, 0xE1, 0x86, + 0xAA, 0x01, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x43, + 0xE1, 0x86, 0xAD, 0x01, 0x43, 0xE1, 0x86, 0xB0, + 0x01, 0x43, 0xE1, 0x86, 0xB1, 0x01, 0x43, 0xE1, + 0x86, 0xB2, 0x01, 0x43, 0xE1, 0x86, 0xB3, 0x01, + 0x43, 0xE1, 0x86, 0xB4, 0x01, 0x43, 0xE1, 0x86, + 0xB5, 0x01, 0x44, 0x20, 0xE3, 0x82, 0x99, 0x0D, + 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D, 0x44, 0xC2, + // Bytes 4380 - 43bf + 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE, 0x91, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC, 0x81, 0xC9, + 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x9F, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x81, 0xC9, + 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x44, 0xCE, + 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB1, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC, 0x81, 0xC9, + // Bytes 43c0 - 43ff + 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xBF, 0xCC, + 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC, 0x81, 0xC9, + 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9, 0x44, 0xD7, + 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7, 0x90, 0xD6, + 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7, 0x92, 0xD6, + // Bytes 4400 - 443f + 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7, 0x95, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7, 0x99, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + // Bytes 4440 - 447f + 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7, 0x9C, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA3, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49, 0x44, 0xD7, + 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA7, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6, 0xBC, 0x41, + // Bytes 4480 - 44bf + 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7, 0xA9, 0xD7, + 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31, 0x44, 0xD8, + 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8, 0xA7, 0xD9, + 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x94, 0xC9, + 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, 0x44, 0xD8, + 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8, 0xB1, 0xD9, + // Bytes 44c0 - 44ff + 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9, 0x8B, 0x59, + 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65, 0x44, 0xD9, + 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9, 0x80, 0xD9, + 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9, 0x91, 0x71, + 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75, 0x44, 0xD9, + 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x88, 0xD9, + 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9, 0xB0, 0x79, + 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x44, 0xDB, + // Bytes 4500 - 453f + 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB, 0x95, 0xD9, + 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x80, + 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xCA, + 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xCA, 0x45, + 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x45, 0x20, + 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xCC, 0x94, + 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x94, 0xCC, + // Bytes 4540 - 457f + 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94, 0xCD, 0x82, + 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9, 0x91, 0x72, + 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x72, 0x45, + 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72, 0x45, 0x20, + 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, + 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20, 0xD9, 0x91, + 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB, 0x9D, 0xCC, + 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, + // Bytes 4580 - 45bf + 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC, 0x88, 0xCC, + 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, + 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, + 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9, 0x8E, 0xD9, + 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9, 0x8F, 0xD9, + 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9, 0x90, 0xD9, + 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96, 0xE0, 0xA4, + // Bytes 45c0 - 45ff + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, + 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1, 0xE0, 0xA6, + 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2, 0xE0, 0xA6, + // Bytes 4600 - 463f + 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF, 0xE0, 0xA6, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8, 0xE0, 0xA8, + 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1, 0xE0, 0xAC, + // Bytes 4640 - 467f + 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2, 0xE0, 0xAC, + 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2, 0xE0, 0xBE, + 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3, 0xE0, 0xBE, + 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86, 0xE3, 0x82, + 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85, 0x97, 0xF0, + 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x85, + 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, + 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, + // Bytes 4680 - 46bf + 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, + 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2, 0xE0, 0xBD, + 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49, 0xE0, 0xBE, + 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, + 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, + // Bytes 46c0 - 46ff + 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1, 0xAE, + 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE, 0x4C, 0xF0, + 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, + 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + // Bytes 4700 - 473f + 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, + 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x83, 0x41, + 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC, 0x86, 0xC9, + 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83, 0x41, 0xCC, + 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A, 0xC9, 0x83, + 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43, 0xCC, 0xA7, + // Bytes 4740 - 477f + 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9, 0x83, 0x45, + 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC, 0xA3, 0xB5, + 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83, 0x49, 0xCC, + 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3, 0xB5, 0x83, + 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F, 0xCC, 0x83, + 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9, 0x83, 0x4F, + 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC, 0x88, 0xC9, + 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83, 0x4F, 0xCC, + // Bytes 4780 - 47bf + 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8, 0xA5, 0x83, + 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53, 0xCC, 0x81, + 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9, 0x83, 0x53, + 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC, 0x83, 0xC9, + 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83, 0x55, 0xCC, + 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B, 0xAD, 0x83, + 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61, 0xCC, 0x86, + 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9, 0x83, 0x61, + // Bytes 47c0 - 47ff + 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC, 0x8A, 0xC9, + 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83, 0x63, 0xCC, + 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82, 0xC9, 0x83, + 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65, 0xCC, 0xA3, + 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5, 0x83, 0x69, + 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC, 0xA3, 0xB5, + 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83, 0x6F, 0xCC, + 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84, 0xC9, 0x83, + // Bytes 4800 - 483f + 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F, 0xCC, 0x88, + 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD, 0x83, 0x6F, + 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0xA8, 0xA5, + 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83, 0x73, 0xCC, + 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C, 0xC9, 0x83, + 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75, 0xCC, 0x83, + 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9, 0x83, 0x75, + 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC, 0x9B, 0xAD, + // Bytes 4840 - 487f + 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9, 0x84, 0xCE, + 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x95, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9, 0x84, 0xCE, + 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0x99, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9, 0x84, 0xCE, + 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA5, 0xCC, + // Bytes 4880 - 48bf + 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, + 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE, 0xB5, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9, 0x84, 0xCE, + // Bytes 48c0 - 48ff + 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9, 0x84, 0xCE, + 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9, 0x84, 0xCE, + 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF, 0x85, 0xCC, + 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x93, 0xC9, + // Bytes 4900 - 493f + 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9, 0x84, 0xCF, + 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF, 0x89, 0xCC, + 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x93, 0xC9, + 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9, 0x84, 0xCF, + 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE, 0x91, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0x91, 0xCC, + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0x91, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0x91, 0xCC, + // Bytes 4940 - 497f + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0x91, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0x91, 0xCC, + 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0x97, 0xCC, + // Bytes 4980 - 49bf + 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xA9, 0xCC, + 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + // Bytes 49c0 - 49ff + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xB1, 0xCC, + 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + // Bytes 4a00 - 4a3f + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, 0xB7, 0xCC, + 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF, 0x89, 0xCC, + // Bytes 4a40 - 4a7f + 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC, 0x80, 0xC9, + 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32, 0x42, 0xCC, + 0x93, 0xC9, 0x32, 0x44, 0xCC, 0x88, 0xCC, 0x81, + 0xCA, 0x32, 0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, + 0x43, 0xE3, 0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, + 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, + 0x46, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, + // Bytes 4a80 - 4abf + 0x26, 0x00, 0x01, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfcTrie. Total size: 10332 bytes (10.09 KiB). Checksum: ad355b768fddb1b6. +type nfcTrie struct{} + +func newNfcTrie(i int) *nfcTrie { + return &nfcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 44: + return uint16(nfcValues[n<<6+uint32(b)]) + default: + n -= 44 + return uint16(nfcSparse.lookup(n, b)) + } +} + +// nfcValues: 46 blocks, 2944 entries, 5888 bytes +// The third block is the zero block. +var nfcValues = [2944]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x471e, 0xc3: 0x2f79, 0xc4: 0x472d, 0xc5: 0x4732, + 0xc6: 0xa000, 0xc7: 0x473c, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x4741, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x4755, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x475f, 0xd5: 0x4764, 0xd6: 0x4773, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x47a5, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x47af, 0xe3: 0x3285, + 0xe4: 0x47be, 0xe5: 0x47c3, 0xe6: 0xa000, 0xe7: 0x47cd, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x47d2, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x47e6, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x47f0, 0xf5: 0x47f5, + 0xf6: 0x4804, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x4836, 0xfd: 0x3550, 0xff: 0x3569, + // Block 0x4, offset 0x100 + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x4723, 0x103: 0x47b4, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6, + 0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5, + 0x112: 0x4746, 0x113: 0x47d7, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302, + 0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339, + 0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352, + 0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e, + 0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6, + 0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0, + 0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc, + 0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, + // Block 0x5, offset 0x140 + 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118, + 0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, + 0x14c: 0x4769, 0x14d: 0x47fa, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c, + 0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x478c, 0x15b: 0x481d, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x4791, 0x161: 0x4822, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x479b, 0x169: 0x482c, + 0x16a: 0x47a0, 0x16b: 0x4831, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2, + 0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528, + 0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267, + 0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000, + // Block 0x6, offset 0x180 + 0x184: 0x8100, 0x185: 0x8100, + 0x186: 0x8100, + 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140, + 0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8, + 0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50, + 0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5, + 0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf, + 0x1aa: 0x4782, 0x1ab: 0x4813, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd, + 0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334, + 0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46, + 0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316, + 0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac, + 0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479, + 0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6, + 0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5, + 0x1de: 0x305a, 0x1df: 0x3366, + 0x1e6: 0x4728, 0x1e7: 0x47b9, 0x1e8: 0x4750, 0x1e9: 0x47e1, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x476e, 0x1ef: 0x47ff, + 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, + // Block 0x8, offset 0x200 + 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, + 0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932, + 0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932, + 0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d, + 0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d, + 0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d, + 0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d, + 0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d, + 0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d, + 0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132, + // Block 0x9, offset 0x240 + 0x240: 0x4a44, 0x241: 0x4a49, 0x242: 0x9932, 0x243: 0x4a4e, 0x244: 0x4a53, 0x245: 0x9936, + 0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132, + 0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132, + 0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132, + 0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135, + 0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132, + 0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132, + 0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132, + 0x274: 0x0170, + 0x27a: 0x8100, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x8100, 0x285: 0x35a1, + 0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625, + 0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x4894, 0x2ad: 0x3697, 0x2ae: 0x48be, 0x2af: 0x36a9, + 0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b, + 0x2c6: 0xa000, 0x2c7: 0x3709, + 0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000, + 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000, + 0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000, + 0x2de: 0xa000, 0x2e3: 0xa000, + 0x2e7: 0xa000, + 0x2eb: 0xa000, 0x2ed: 0xa000, + 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000, + 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000, + 0x2fe: 0xa000, + // Block 0xc, offset 0x300 + 0x301: 0x3733, 0x302: 0x37b7, + 0x310: 0x370f, 0x311: 0x3793, + 0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab, + 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd, + 0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf, + 0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000, + 0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed, + 0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805, + 0x338: 0x3787, 0x339: 0x380b, + // Block 0xd, offset 0x340 + 0x351: 0x812d, + 0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132, + 0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132, + 0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d, + 0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132, + 0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132, + 0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a, + 0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f, + 0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112, + // Block 0xe, offset 0x380 + 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116, + 0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c, + 0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132, + 0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132, + 0x39e: 0x8132, 0x39f: 0x812d, + 0x3b0: 0x811e, + // Block 0xf, offset 0x3c0 + 0x3c5: 0xa000, + 0x3c6: 0x2d26, 0x3c7: 0xa000, 0x3c8: 0x2d2e, 0x3c9: 0xa000, 0x3ca: 0x2d36, 0x3cb: 0xa000, + 0x3cc: 0x2d3e, 0x3cd: 0xa000, 0x3ce: 0x2d46, 0x3d1: 0xa000, + 0x3d2: 0x2d4e, + 0x3f4: 0x8102, 0x3f5: 0x9900, + 0x3fa: 0xa000, 0x3fb: 0x2d56, + 0x3fc: 0xa000, 0x3fd: 0x2d5e, 0x3fe: 0xa000, 0x3ff: 0xa000, + // Block 0x10, offset 0x400 + 0x400: 0x2f97, 0x401: 0x32a3, 0x402: 0x2fa1, 0x403: 0x32ad, 0x404: 0x2fa6, 0x405: 0x32b2, + 0x406: 0x2fab, 0x407: 0x32b7, 0x408: 0x38cc, 0x409: 0x3a5b, 0x40a: 0x2fc4, 0x40b: 0x32d0, + 0x40c: 0x2fce, 0x40d: 0x32da, 0x40e: 0x2fdd, 0x40f: 0x32e9, 0x410: 0x2fd3, 0x411: 0x32df, + 0x412: 0x2fd8, 0x413: 0x32e4, 0x414: 0x38ef, 0x415: 0x3a7e, 0x416: 0x38f6, 0x417: 0x3a85, + 0x418: 0x3019, 0x419: 0x3325, 0x41a: 0x301e, 0x41b: 0x332a, 0x41c: 0x3904, 0x41d: 0x3a93, + 0x41e: 0x3023, 0x41f: 0x332f, 0x420: 0x3032, 0x421: 0x333e, 0x422: 0x3050, 0x423: 0x335c, + 0x424: 0x305f, 0x425: 0x336b, 0x426: 0x3055, 0x427: 0x3361, 0x428: 0x3064, 0x429: 0x3370, + 0x42a: 0x3069, 0x42b: 0x3375, 0x42c: 0x30af, 0x42d: 0x33bb, 0x42e: 0x390b, 0x42f: 0x3a9a, + 0x430: 0x30b9, 0x431: 0x33ca, 0x432: 0x30c3, 0x433: 0x33d4, 0x434: 0x30cd, 0x435: 0x33de, + 0x436: 0x475a, 0x437: 0x47eb, 0x438: 0x3912, 0x439: 0x3aa1, 0x43a: 0x30e6, 0x43b: 0x33f7, + 0x43c: 0x30e1, 0x43d: 0x33f2, 0x43e: 0x30eb, 0x43f: 0x33fc, + // Block 0x11, offset 0x440 + 0x440: 0x30f0, 0x441: 0x3401, 0x442: 0x30f5, 0x443: 0x3406, 0x444: 0x3109, 0x445: 0x341a, + 0x446: 0x3113, 0x447: 0x3424, 0x448: 0x3122, 0x449: 0x3433, 0x44a: 0x311d, 0x44b: 0x342e, + 0x44c: 0x3935, 0x44d: 0x3ac4, 0x44e: 0x3943, 0x44f: 0x3ad2, 0x450: 0x394a, 0x451: 0x3ad9, + 0x452: 0x3951, 0x453: 0x3ae0, 0x454: 0x314f, 0x455: 0x3460, 0x456: 0x3154, 0x457: 0x3465, + 0x458: 0x315e, 0x459: 0x346f, 0x45a: 0x4787, 0x45b: 0x4818, 0x45c: 0x3997, 0x45d: 0x3b26, + 0x45e: 0x3177, 0x45f: 0x3488, 0x460: 0x3181, 0x461: 0x3492, 0x462: 0x4796, 0x463: 0x4827, + 0x464: 0x399e, 0x465: 0x3b2d, 0x466: 0x39a5, 0x467: 0x3b34, 0x468: 0x39ac, 0x469: 0x3b3b, + 0x46a: 0x3190, 0x46b: 0x34a1, 0x46c: 0x319a, 0x46d: 0x34b0, 0x46e: 0x31ae, 0x46f: 0x34c4, + 0x470: 0x31a9, 0x471: 0x34bf, 0x472: 0x31ea, 0x473: 0x3500, 0x474: 0x31f9, 0x475: 0x350f, + 0x476: 0x31f4, 0x477: 0x350a, 0x478: 0x39b3, 0x479: 0x3b42, 0x47a: 0x39ba, 0x47b: 0x3b49, + 0x47c: 0x31fe, 0x47d: 0x3514, 0x47e: 0x3203, 0x47f: 0x3519, + // Block 0x12, offset 0x480 + 0x480: 0x3208, 0x481: 0x351e, 0x482: 0x320d, 0x483: 0x3523, 0x484: 0x321c, 0x485: 0x3532, + 0x486: 0x3217, 0x487: 0x352d, 0x488: 0x3221, 0x489: 0x353c, 0x48a: 0x3226, 0x48b: 0x3541, + 0x48c: 0x322b, 0x48d: 0x3546, 0x48e: 0x3249, 0x48f: 0x3564, 0x490: 0x3262, 0x491: 0x3582, + 0x492: 0x3271, 0x493: 0x3591, 0x494: 0x3276, 0x495: 0x3596, 0x496: 0x337a, 0x497: 0x34a6, + 0x498: 0x3537, 0x499: 0x3573, 0x49b: 0x35d1, + 0x4a0: 0x4737, 0x4a1: 0x47c8, 0x4a2: 0x2f83, 0x4a3: 0x328f, + 0x4a4: 0x3878, 0x4a5: 0x3a07, 0x4a6: 0x3871, 0x4a7: 0x3a00, 0x4a8: 0x3886, 0x4a9: 0x3a15, + 0x4aa: 0x387f, 0x4ab: 0x3a0e, 0x4ac: 0x38be, 0x4ad: 0x3a4d, 0x4ae: 0x3894, 0x4af: 0x3a23, + 0x4b0: 0x388d, 0x4b1: 0x3a1c, 0x4b2: 0x38a2, 0x4b3: 0x3a31, 0x4b4: 0x389b, 0x4b5: 0x3a2a, + 0x4b6: 0x38c5, 0x4b7: 0x3a54, 0x4b8: 0x474b, 0x4b9: 0x47dc, 0x4ba: 0x3000, 0x4bb: 0x330c, + 0x4bc: 0x2fec, 0x4bd: 0x32f8, 0x4be: 0x38da, 0x4bf: 0x3a69, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x38d3, 0x4c1: 0x3a62, 0x4c2: 0x38e8, 0x4c3: 0x3a77, 0x4c4: 0x38e1, 0x4c5: 0x3a70, + 0x4c6: 0x38fd, 0x4c7: 0x3a8c, 0x4c8: 0x3091, 0x4c9: 0x339d, 0x4ca: 0x30a5, 0x4cb: 0x33b1, + 0x4cc: 0x477d, 0x4cd: 0x480e, 0x4ce: 0x3136, 0x4cf: 0x3447, 0x4d0: 0x3920, 0x4d1: 0x3aaf, + 0x4d2: 0x3919, 0x4d3: 0x3aa8, 0x4d4: 0x392e, 0x4d5: 0x3abd, 0x4d6: 0x3927, 0x4d7: 0x3ab6, + 0x4d8: 0x3989, 0x4d9: 0x3b18, 0x4da: 0x396d, 0x4db: 0x3afc, 0x4dc: 0x3966, 0x4dd: 0x3af5, + 0x4de: 0x397b, 0x4df: 0x3b0a, 0x4e0: 0x3974, 0x4e1: 0x3b03, 0x4e2: 0x3982, 0x4e3: 0x3b11, + 0x4e4: 0x31e5, 0x4e5: 0x34fb, 0x4e6: 0x31c7, 0x4e7: 0x34dd, 0x4e8: 0x39e4, 0x4e9: 0x3b73, + 0x4ea: 0x39dd, 0x4eb: 0x3b6c, 0x4ec: 0x39f2, 0x4ed: 0x3b81, 0x4ee: 0x39eb, 0x4ef: 0x3b7a, + 0x4f0: 0x39f9, 0x4f1: 0x3b88, 0x4f2: 0x3230, 0x4f3: 0x354b, 0x4f4: 0x3258, 0x4f5: 0x3578, + 0x4f6: 0x3253, 0x4f7: 0x356e, 0x4f8: 0x323f, 0x4f9: 0x355a, + // Block 0x14, offset 0x500 + 0x500: 0x489a, 0x501: 0x48a0, 0x502: 0x49b4, 0x503: 0x49cc, 0x504: 0x49bc, 0x505: 0x49d4, + 0x506: 0x49c4, 0x507: 0x49dc, 0x508: 0x4840, 0x509: 0x4846, 0x50a: 0x4924, 0x50b: 0x493c, + 0x50c: 0x492c, 0x50d: 0x4944, 0x50e: 0x4934, 0x50f: 0x494c, 0x510: 0x48ac, 0x511: 0x48b2, + 0x512: 0x3db8, 0x513: 0x3dc8, 0x514: 0x3dc0, 0x515: 0x3dd0, + 0x518: 0x484c, 0x519: 0x4852, 0x51a: 0x3ce8, 0x51b: 0x3cf8, 0x51c: 0x3cf0, 0x51d: 0x3d00, + 0x520: 0x48c4, 0x521: 0x48ca, 0x522: 0x49e4, 0x523: 0x49fc, + 0x524: 0x49ec, 0x525: 0x4a04, 0x526: 0x49f4, 0x527: 0x4a0c, 0x528: 0x4858, 0x529: 0x485e, + 0x52a: 0x4954, 0x52b: 0x496c, 0x52c: 0x495c, 0x52d: 0x4974, 0x52e: 0x4964, 0x52f: 0x497c, + 0x530: 0x48dc, 0x531: 0x48e2, 0x532: 0x3e18, 0x533: 0x3e30, 0x534: 0x3e20, 0x535: 0x3e38, + 0x536: 0x3e28, 0x537: 0x3e40, 0x538: 0x4864, 0x539: 0x486a, 0x53a: 0x3d18, 0x53b: 0x3d30, + 0x53c: 0x3d20, 0x53d: 0x3d38, 0x53e: 0x3d28, 0x53f: 0x3d40, + // Block 0x15, offset 0x540 + 0x540: 0x48e8, 0x541: 0x48ee, 0x542: 0x3e48, 0x543: 0x3e58, 0x544: 0x3e50, 0x545: 0x3e60, + 0x548: 0x4870, 0x549: 0x4876, 0x54a: 0x3d48, 0x54b: 0x3d58, + 0x54c: 0x3d50, 0x54d: 0x3d60, 0x550: 0x48fa, 0x551: 0x4900, + 0x552: 0x3e80, 0x553: 0x3e98, 0x554: 0x3e88, 0x555: 0x3ea0, 0x556: 0x3e90, 0x557: 0x3ea8, + 0x559: 0x487c, 0x55b: 0x3d68, 0x55d: 0x3d70, + 0x55f: 0x3d78, 0x560: 0x4912, 0x561: 0x4918, 0x562: 0x4a14, 0x563: 0x4a2c, + 0x564: 0x4a1c, 0x565: 0x4a34, 0x566: 0x4a24, 0x567: 0x4a3c, 0x568: 0x4882, 0x569: 0x4888, + 0x56a: 0x4984, 0x56b: 0x499c, 0x56c: 0x498c, 0x56d: 0x49a4, 0x56e: 0x4994, 0x56f: 0x49ac, + 0x570: 0x488e, 0x571: 0x43b4, 0x572: 0x3691, 0x573: 0x43ba, 0x574: 0x48b8, 0x575: 0x43c0, + 0x576: 0x36a3, 0x577: 0x43c6, 0x578: 0x36c1, 0x579: 0x43cc, 0x57a: 0x36d9, 0x57b: 0x43d2, + 0x57c: 0x4906, 0x57d: 0x43d8, + // Block 0x16, offset 0x580 + 0x580: 0x3da0, 0x581: 0x3da8, 0x582: 0x4184, 0x583: 0x41a2, 0x584: 0x418e, 0x585: 0x41ac, + 0x586: 0x4198, 0x587: 0x41b6, 0x588: 0x3cd8, 0x589: 0x3ce0, 0x58a: 0x40d0, 0x58b: 0x40ee, + 0x58c: 0x40da, 0x58d: 0x40f8, 0x58e: 0x40e4, 0x58f: 0x4102, 0x590: 0x3de8, 0x591: 0x3df0, + 0x592: 0x41c0, 0x593: 0x41de, 0x594: 0x41ca, 0x595: 0x41e8, 0x596: 0x41d4, 0x597: 0x41f2, + 0x598: 0x3d08, 0x599: 0x3d10, 0x59a: 0x410c, 0x59b: 0x412a, 0x59c: 0x4116, 0x59d: 0x4134, + 0x59e: 0x4120, 0x59f: 0x413e, 0x5a0: 0x3ec0, 0x5a1: 0x3ec8, 0x5a2: 0x41fc, 0x5a3: 0x421a, + 0x5a4: 0x4206, 0x5a5: 0x4224, 0x5a6: 0x4210, 0x5a7: 0x422e, 0x5a8: 0x3d80, 0x5a9: 0x3d88, + 0x5aa: 0x4148, 0x5ab: 0x4166, 0x5ac: 0x4152, 0x5ad: 0x4170, 0x5ae: 0x415c, 0x5af: 0x417a, + 0x5b0: 0x3685, 0x5b1: 0x367f, 0x5b2: 0x3d90, 0x5b3: 0x368b, 0x5b4: 0x3d98, + 0x5b6: 0x48a6, 0x5b7: 0x3db0, 0x5b8: 0x35f5, 0x5b9: 0x35ef, 0x5ba: 0x35e3, 0x5bb: 0x4384, + 0x5bc: 0x35fb, 0x5bd: 0x8100, 0x5be: 0x01d3, 0x5bf: 0xa100, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x8100, 0x5c1: 0x35a7, 0x5c2: 0x3dd8, 0x5c3: 0x369d, 0x5c4: 0x3de0, + 0x5c6: 0x48d0, 0x5c7: 0x3df8, 0x5c8: 0x3601, 0x5c9: 0x438a, 0x5ca: 0x360d, 0x5cb: 0x4390, + 0x5cc: 0x3619, 0x5cd: 0x3b8f, 0x5ce: 0x3b96, 0x5cf: 0x3b9d, 0x5d0: 0x36b5, 0x5d1: 0x36af, + 0x5d2: 0x3e00, 0x5d3: 0x457a, 0x5d6: 0x36bb, 0x5d7: 0x3e10, + 0x5d8: 0x3631, 0x5d9: 0x362b, 0x5da: 0x361f, 0x5db: 0x4396, 0x5dd: 0x3ba4, + 0x5de: 0x3bab, 0x5df: 0x3bb2, 0x5e0: 0x36eb, 0x5e1: 0x36e5, 0x5e2: 0x3e68, 0x5e3: 0x4582, + 0x5e4: 0x36cd, 0x5e5: 0x36d3, 0x5e6: 0x36f1, 0x5e7: 0x3e78, 0x5e8: 0x3661, 0x5e9: 0x365b, + 0x5ea: 0x364f, 0x5eb: 0x43a2, 0x5ec: 0x3649, 0x5ed: 0x359b, 0x5ee: 0x437e, 0x5ef: 0x0081, + 0x5f2: 0x3eb0, 0x5f3: 0x36f7, 0x5f4: 0x3eb8, + 0x5f6: 0x491e, 0x5f7: 0x3ed0, 0x5f8: 0x363d, 0x5f9: 0x439c, 0x5fa: 0x366d, 0x5fb: 0x43ae, + 0x5fc: 0x3679, 0x5fd: 0x4256, 0x5fe: 0xa100, + // Block 0x18, offset 0x600 + 0x601: 0x3c06, 0x603: 0xa000, 0x604: 0x3c0d, 0x605: 0xa000, + 0x607: 0x3c14, 0x608: 0xa000, 0x609: 0x3c1b, + 0x60d: 0xa000, + 0x620: 0x2f65, 0x621: 0xa000, 0x622: 0x3c29, + 0x624: 0xa000, 0x625: 0xa000, + 0x62d: 0x3c22, 0x62e: 0x2f60, 0x62f: 0x2f6a, + 0x630: 0x3c30, 0x631: 0x3c37, 0x632: 0xa000, 0x633: 0xa000, 0x634: 0x3c3e, 0x635: 0x3c45, + 0x636: 0xa000, 0x637: 0xa000, 0x638: 0x3c4c, 0x639: 0x3c53, 0x63a: 0xa000, 0x63b: 0xa000, + 0x63c: 0xa000, 0x63d: 0xa000, + // Block 0x19, offset 0x640 + 0x640: 0x3c5a, 0x641: 0x3c61, 0x642: 0xa000, 0x643: 0xa000, 0x644: 0x3c76, 0x645: 0x3c7d, + 0x646: 0xa000, 0x647: 0xa000, 0x648: 0x3c84, 0x649: 0x3c8b, + 0x651: 0xa000, + 0x652: 0xa000, + 0x662: 0xa000, + 0x668: 0xa000, 0x669: 0xa000, + 0x66b: 0xa000, 0x66c: 0x3ca0, 0x66d: 0x3ca7, 0x66e: 0x3cae, 0x66f: 0x3cb5, + 0x672: 0xa000, 0x673: 0xa000, 0x674: 0xa000, 0x675: 0xa000, + // Block 0x1a, offset 0x680 + 0x686: 0xa000, 0x68b: 0xa000, + 0x68c: 0x3f08, 0x68d: 0xa000, 0x68e: 0x3f10, 0x68f: 0xa000, 0x690: 0x3f18, 0x691: 0xa000, + 0x692: 0x3f20, 0x693: 0xa000, 0x694: 0x3f28, 0x695: 0xa000, 0x696: 0x3f30, 0x697: 0xa000, + 0x698: 0x3f38, 0x699: 0xa000, 0x69a: 0x3f40, 0x69b: 0xa000, 0x69c: 0x3f48, 0x69d: 0xa000, + 0x69e: 0x3f50, 0x69f: 0xa000, 0x6a0: 0x3f58, 0x6a1: 0xa000, 0x6a2: 0x3f60, + 0x6a4: 0xa000, 0x6a5: 0x3f68, 0x6a6: 0xa000, 0x6a7: 0x3f70, 0x6a8: 0xa000, 0x6a9: 0x3f78, + 0x6af: 0xa000, + 0x6b0: 0x3f80, 0x6b1: 0x3f88, 0x6b2: 0xa000, 0x6b3: 0x3f90, 0x6b4: 0x3f98, 0x6b5: 0xa000, + 0x6b6: 0x3fa0, 0x6b7: 0x3fa8, 0x6b8: 0xa000, 0x6b9: 0x3fb0, 0x6ba: 0x3fb8, 0x6bb: 0xa000, + 0x6bc: 0x3fc0, 0x6bd: 0x3fc8, + // Block 0x1b, offset 0x6c0 + 0x6d4: 0x3f00, + 0x6d9: 0x9903, 0x6da: 0x9903, 0x6db: 0x8100, 0x6dc: 0x8100, 0x6dd: 0xa000, + 0x6de: 0x3fd0, + 0x6e6: 0xa000, + 0x6eb: 0xa000, 0x6ec: 0x3fe0, 0x6ed: 0xa000, 0x6ee: 0x3fe8, 0x6ef: 0xa000, + 0x6f0: 0x3ff0, 0x6f1: 0xa000, 0x6f2: 0x3ff8, 0x6f3: 0xa000, 0x6f4: 0x4000, 0x6f5: 0xa000, + 0x6f6: 0x4008, 0x6f7: 0xa000, 0x6f8: 0x4010, 0x6f9: 0xa000, 0x6fa: 0x4018, 0x6fb: 0xa000, + 0x6fc: 0x4020, 0x6fd: 0xa000, 0x6fe: 0x4028, 0x6ff: 0xa000, + // Block 0x1c, offset 0x700 + 0x700: 0x4030, 0x701: 0xa000, 0x702: 0x4038, 0x704: 0xa000, 0x705: 0x4040, + 0x706: 0xa000, 0x707: 0x4048, 0x708: 0xa000, 0x709: 0x4050, + 0x70f: 0xa000, 0x710: 0x4058, 0x711: 0x4060, + 0x712: 0xa000, 0x713: 0x4068, 0x714: 0x4070, 0x715: 0xa000, 0x716: 0x4078, 0x717: 0x4080, + 0x718: 0xa000, 0x719: 0x4088, 0x71a: 0x4090, 0x71b: 0xa000, 0x71c: 0x4098, 0x71d: 0x40a0, + 0x72f: 0xa000, + 0x730: 0xa000, 0x731: 0xa000, 0x732: 0xa000, 0x734: 0x3fd8, + 0x737: 0x40a8, 0x738: 0x40b0, 0x739: 0x40b8, 0x73a: 0x40c0, + 0x73d: 0xa000, 0x73e: 0x40c8, + // Block 0x1d, offset 0x740 + 0x740: 0x1377, 0x741: 0x0cfb, 0x742: 0x13d3, 0x743: 0x139f, 0x744: 0x0e57, 0x745: 0x06eb, + 0x746: 0x08df, 0x747: 0x162b, 0x748: 0x162b, 0x749: 0x0a0b, 0x74a: 0x145f, 0x74b: 0x0943, + 0x74c: 0x0a07, 0x74d: 0x0bef, 0x74e: 0x0fcf, 0x74f: 0x115f, 0x750: 0x1297, 0x751: 0x12d3, + 0x752: 0x1307, 0x753: 0x141b, 0x754: 0x0d73, 0x755: 0x0dff, 0x756: 0x0eab, 0x757: 0x0f43, + 0x758: 0x125f, 0x759: 0x1447, 0x75a: 0x1573, 0x75b: 0x070f, 0x75c: 0x08b3, 0x75d: 0x0d87, + 0x75e: 0x0ecf, 0x75f: 0x1293, 0x760: 0x15c3, 0x761: 0x0ab3, 0x762: 0x0e77, 0x763: 0x1283, + 0x764: 0x1317, 0x765: 0x0c23, 0x766: 0x11bb, 0x767: 0x12df, 0x768: 0x0b1f, 0x769: 0x0d0f, + 0x76a: 0x0e17, 0x76b: 0x0f1b, 0x76c: 0x1427, 0x76d: 0x074f, 0x76e: 0x07e7, 0x76f: 0x0853, + 0x770: 0x0c8b, 0x771: 0x0d7f, 0x772: 0x0ecb, 0x773: 0x0fef, 0x774: 0x1177, 0x775: 0x128b, + 0x776: 0x12a3, 0x777: 0x13c7, 0x778: 0x14ef, 0x779: 0x15a3, 0x77a: 0x15bf, 0x77b: 0x102b, + 0x77c: 0x106b, 0x77d: 0x1123, 0x77e: 0x1243, 0x77f: 0x147b, + // Block 0x1e, offset 0x780 + 0x780: 0x15cb, 0x781: 0x134b, 0x782: 0x09c7, 0x783: 0x0b3b, 0x784: 0x10db, 0x785: 0x119b, + 0x786: 0x0eff, 0x787: 0x1033, 0x788: 0x1397, 0x789: 0x14e7, 0x78a: 0x09c3, 0x78b: 0x0a8f, + 0x78c: 0x0d77, 0x78d: 0x0e2b, 0x78e: 0x0e5f, 0x78f: 0x1113, 0x790: 0x113b, 0x791: 0x14a7, + 0x792: 0x084f, 0x793: 0x11a7, 0x794: 0x07f3, 0x795: 0x07ef, 0x796: 0x1097, 0x797: 0x1127, + 0x798: 0x125b, 0x799: 0x14af, 0x79a: 0x1367, 0x79b: 0x0c27, 0x79c: 0x0d73, 0x79d: 0x1357, + 0x79e: 0x06f7, 0x79f: 0x0a63, 0x7a0: 0x0b93, 0x7a1: 0x0f2f, 0x7a2: 0x0faf, 0x7a3: 0x0873, + 0x7a4: 0x103b, 0x7a5: 0x075f, 0x7a6: 0x0b77, 0x7a7: 0x06d7, 0x7a8: 0x0deb, 0x7a9: 0x0ca3, + 0x7aa: 0x110f, 0x7ab: 0x08c7, 0x7ac: 0x09b3, 0x7ad: 0x0ffb, 0x7ae: 0x1263, 0x7af: 0x133b, + 0x7b0: 0x0db7, 0x7b1: 0x13f7, 0x7b2: 0x0de3, 0x7b3: 0x0c37, 0x7b4: 0x121b, 0x7b5: 0x0c57, + 0x7b6: 0x0fab, 0x7b7: 0x072b, 0x7b8: 0x07a7, 0x7b9: 0x07eb, 0x7ba: 0x0d53, 0x7bb: 0x10fb, + 0x7bc: 0x11f3, 0x7bd: 0x1347, 0x7be: 0x145b, 0x7bf: 0x085b, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x090f, 0x7c1: 0x0a17, 0x7c2: 0x0b2f, 0x7c3: 0x0cbf, 0x7c4: 0x0e7b, 0x7c5: 0x103f, + 0x7c6: 0x1497, 0x7c7: 0x157b, 0x7c8: 0x15cf, 0x7c9: 0x15e7, 0x7ca: 0x0837, 0x7cb: 0x0cf3, + 0x7cc: 0x0da3, 0x7cd: 0x13eb, 0x7ce: 0x0afb, 0x7cf: 0x0bd7, 0x7d0: 0x0bf3, 0x7d1: 0x0c83, + 0x7d2: 0x0e6b, 0x7d3: 0x0eb7, 0x7d4: 0x0f67, 0x7d5: 0x108b, 0x7d6: 0x112f, 0x7d7: 0x1193, + 0x7d8: 0x13db, 0x7d9: 0x126b, 0x7da: 0x1403, 0x7db: 0x147f, 0x7dc: 0x080f, 0x7dd: 0x083b, + 0x7de: 0x0923, 0x7df: 0x0ea7, 0x7e0: 0x12f3, 0x7e1: 0x133b, 0x7e2: 0x0b1b, 0x7e3: 0x0b8b, + 0x7e4: 0x0c4f, 0x7e5: 0x0daf, 0x7e6: 0x10d7, 0x7e7: 0x0f23, 0x7e8: 0x073b, 0x7e9: 0x097f, + 0x7ea: 0x0a63, 0x7eb: 0x0ac7, 0x7ec: 0x0b97, 0x7ed: 0x0f3f, 0x7ee: 0x0f5b, 0x7ef: 0x116b, + 0x7f0: 0x118b, 0x7f1: 0x1463, 0x7f2: 0x14e3, 0x7f3: 0x14f3, 0x7f4: 0x152f, 0x7f5: 0x0753, + 0x7f6: 0x107f, 0x7f7: 0x144f, 0x7f8: 0x14cb, 0x7f9: 0x0baf, 0x7fa: 0x0717, 0x7fb: 0x0777, + 0x7fc: 0x0a67, 0x7fd: 0x0a87, 0x7fe: 0x0caf, 0x7ff: 0x0d73, + // Block 0x20, offset 0x800 + 0x800: 0x0ec3, 0x801: 0x0fcb, 0x802: 0x1277, 0x803: 0x1417, 0x804: 0x1623, 0x805: 0x0ce3, + 0x806: 0x14a3, 0x807: 0x0833, 0x808: 0x0d2f, 0x809: 0x0d3b, 0x80a: 0x0e0f, 0x80b: 0x0e47, + 0x80c: 0x0f4b, 0x80d: 0x0fa7, 0x80e: 0x1027, 0x80f: 0x110b, 0x810: 0x153b, 0x811: 0x07af, + 0x812: 0x0c03, 0x813: 0x14b3, 0x814: 0x0767, 0x815: 0x0aab, 0x816: 0x0e2f, 0x817: 0x13df, + 0x818: 0x0b67, 0x819: 0x0bb7, 0x81a: 0x0d43, 0x81b: 0x0f2f, 0x81c: 0x14bb, 0x81d: 0x0817, + 0x81e: 0x08ff, 0x81f: 0x0a97, 0x820: 0x0cd3, 0x821: 0x0d1f, 0x822: 0x0d5f, 0x823: 0x0df3, + 0x824: 0x0f47, 0x825: 0x0fbb, 0x826: 0x1157, 0x827: 0x12f7, 0x828: 0x1303, 0x829: 0x1457, + 0x82a: 0x14d7, 0x82b: 0x0883, 0x82c: 0x0e4b, 0x82d: 0x0903, 0x82e: 0x0ec7, 0x82f: 0x0f6b, + 0x830: 0x1287, 0x831: 0x14bf, 0x832: 0x15ab, 0x833: 0x15d3, 0x834: 0x0d37, 0x835: 0x0e27, + 0x836: 0x11c3, 0x837: 0x10b7, 0x838: 0x10c3, 0x839: 0x10e7, 0x83a: 0x0f17, 0x83b: 0x0e9f, + 0x83c: 0x1363, 0x83d: 0x0733, 0x83e: 0x122b, 0x83f: 0x081b, + // Block 0x21, offset 0x840 + 0x840: 0x080b, 0x841: 0x0b0b, 0x842: 0x0c2b, 0x843: 0x10f3, 0x844: 0x0a53, 0x845: 0x0e03, + 0x846: 0x0cef, 0x847: 0x13e7, 0x848: 0x12e7, 0x849: 0x14ab, 0x84a: 0x1323, 0x84b: 0x0b27, + 0x84c: 0x0787, 0x84d: 0x095b, 0x850: 0x09af, + 0x852: 0x0cdf, 0x855: 0x07f7, 0x856: 0x0f1f, 0x857: 0x0fe3, + 0x858: 0x1047, 0x859: 0x1063, 0x85a: 0x1067, 0x85b: 0x107b, 0x85c: 0x14fb, 0x85d: 0x10eb, + 0x85e: 0x116f, 0x860: 0x128f, 0x862: 0x1353, + 0x865: 0x1407, 0x866: 0x1433, + 0x86a: 0x154f, 0x86b: 0x1553, 0x86c: 0x1557, 0x86d: 0x15bb, 0x86e: 0x142b, 0x86f: 0x14c7, + 0x870: 0x0757, 0x871: 0x077b, 0x872: 0x078f, 0x873: 0x084b, 0x874: 0x0857, 0x875: 0x0897, + 0x876: 0x094b, 0x877: 0x0967, 0x878: 0x096f, 0x879: 0x09ab, 0x87a: 0x09b7, 0x87b: 0x0a93, + 0x87c: 0x0a9b, 0x87d: 0x0ba3, 0x87e: 0x0bcb, 0x87f: 0x0bd3, + // Block 0x22, offset 0x880 + 0x880: 0x0beb, 0x881: 0x0c97, 0x882: 0x0cc7, 0x883: 0x0ce7, 0x884: 0x0d57, 0x885: 0x0e1b, + 0x886: 0x0e37, 0x887: 0x0e67, 0x888: 0x0ebb, 0x889: 0x0edb, 0x88a: 0x0f4f, 0x88b: 0x102f, + 0x88c: 0x104b, 0x88d: 0x1053, 0x88e: 0x104f, 0x88f: 0x1057, 0x890: 0x105b, 0x891: 0x105f, + 0x892: 0x1073, 0x893: 0x1077, 0x894: 0x109b, 0x895: 0x10af, 0x896: 0x10cb, 0x897: 0x112f, + 0x898: 0x1137, 0x899: 0x113f, 0x89a: 0x1153, 0x89b: 0x117b, 0x89c: 0x11cb, 0x89d: 0x11ff, + 0x89e: 0x11ff, 0x89f: 0x1267, 0x8a0: 0x130f, 0x8a1: 0x1327, 0x8a2: 0x135b, 0x8a3: 0x135f, + 0x8a4: 0x13a3, 0x8a5: 0x13a7, 0x8a6: 0x13ff, 0x8a7: 0x1407, 0x8a8: 0x14db, 0x8a9: 0x151f, + 0x8aa: 0x1537, 0x8ab: 0x0b9b, 0x8ac: 0x171e, 0x8ad: 0x11e3, + 0x8b0: 0x06df, 0x8b1: 0x07e3, 0x8b2: 0x07a3, 0x8b3: 0x074b, 0x8b4: 0x078b, 0x8b5: 0x07b7, + 0x8b6: 0x0847, 0x8b7: 0x0863, 0x8b8: 0x094b, 0x8b9: 0x0937, 0x8ba: 0x0947, 0x8bb: 0x0963, + 0x8bc: 0x09af, 0x8bd: 0x09bf, 0x8be: 0x0a03, 0x8bf: 0x0a0f, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0a2b, 0x8c1: 0x0a3b, 0x8c2: 0x0b23, 0x8c3: 0x0b2b, 0x8c4: 0x0b5b, 0x8c5: 0x0b7b, + 0x8c6: 0x0bab, 0x8c7: 0x0bc3, 0x8c8: 0x0bb3, 0x8c9: 0x0bd3, 0x8ca: 0x0bc7, 0x8cb: 0x0beb, + 0x8cc: 0x0c07, 0x8cd: 0x0c5f, 0x8ce: 0x0c6b, 0x8cf: 0x0c73, 0x8d0: 0x0c9b, 0x8d1: 0x0cdf, + 0x8d2: 0x0d0f, 0x8d3: 0x0d13, 0x8d4: 0x0d27, 0x8d5: 0x0da7, 0x8d6: 0x0db7, 0x8d7: 0x0e0f, + 0x8d8: 0x0e5b, 0x8d9: 0x0e53, 0x8da: 0x0e67, 0x8db: 0x0e83, 0x8dc: 0x0ebb, 0x8dd: 0x1013, + 0x8de: 0x0edf, 0x8df: 0x0f13, 0x8e0: 0x0f1f, 0x8e1: 0x0f5f, 0x8e2: 0x0f7b, 0x8e3: 0x0f9f, + 0x8e4: 0x0fc3, 0x8e5: 0x0fc7, 0x8e6: 0x0fe3, 0x8e7: 0x0fe7, 0x8e8: 0x0ff7, 0x8e9: 0x100b, + 0x8ea: 0x1007, 0x8eb: 0x1037, 0x8ec: 0x10b3, 0x8ed: 0x10cb, 0x8ee: 0x10e3, 0x8ef: 0x111b, + 0x8f0: 0x112f, 0x8f1: 0x114b, 0x8f2: 0x117b, 0x8f3: 0x122f, 0x8f4: 0x1257, 0x8f5: 0x12cb, + 0x8f6: 0x1313, 0x8f7: 0x131f, 0x8f8: 0x1327, 0x8f9: 0x133f, 0x8fa: 0x1353, 0x8fb: 0x1343, + 0x8fc: 0x135b, 0x8fd: 0x1357, 0x8fe: 0x134f, 0x8ff: 0x135f, + // Block 0x24, offset 0x900 + 0x900: 0x136b, 0x901: 0x13a7, 0x902: 0x13e3, 0x903: 0x1413, 0x904: 0x144b, 0x905: 0x146b, + 0x906: 0x14b7, 0x907: 0x14db, 0x908: 0x14fb, 0x909: 0x150f, 0x90a: 0x151f, 0x90b: 0x152b, + 0x90c: 0x1537, 0x90d: 0x158b, 0x90e: 0x162b, 0x90f: 0x16b5, 0x910: 0x16b0, 0x911: 0x16e2, + 0x912: 0x0607, 0x913: 0x062f, 0x914: 0x0633, 0x915: 0x1764, 0x916: 0x1791, 0x917: 0x1809, + 0x918: 0x1617, 0x919: 0x1627, + // Block 0x25, offset 0x940 + 0x940: 0x06fb, 0x941: 0x06f3, 0x942: 0x0703, 0x943: 0x1647, 0x944: 0x0747, 0x945: 0x0757, + 0x946: 0x075b, 0x947: 0x0763, 0x948: 0x076b, 0x949: 0x076f, 0x94a: 0x077b, 0x94b: 0x0773, + 0x94c: 0x05b3, 0x94d: 0x165b, 0x94e: 0x078f, 0x94f: 0x0793, 0x950: 0x0797, 0x951: 0x07b3, + 0x952: 0x164c, 0x953: 0x05b7, 0x954: 0x079f, 0x955: 0x07bf, 0x956: 0x1656, 0x957: 0x07cf, + 0x958: 0x07d7, 0x959: 0x0737, 0x95a: 0x07df, 0x95b: 0x07e3, 0x95c: 0x1831, 0x95d: 0x07ff, + 0x95e: 0x0807, 0x95f: 0x05bf, 0x960: 0x081f, 0x961: 0x0823, 0x962: 0x082b, 0x963: 0x082f, + 0x964: 0x05c3, 0x965: 0x0847, 0x966: 0x084b, 0x967: 0x0857, 0x968: 0x0863, 0x969: 0x0867, + 0x96a: 0x086b, 0x96b: 0x0873, 0x96c: 0x0893, 0x96d: 0x0897, 0x96e: 0x089f, 0x96f: 0x08af, + 0x970: 0x08b7, 0x971: 0x08bb, 0x972: 0x08bb, 0x973: 0x08bb, 0x974: 0x166a, 0x975: 0x0e93, + 0x976: 0x08cf, 0x977: 0x08d7, 0x978: 0x166f, 0x979: 0x08e3, 0x97a: 0x08eb, 0x97b: 0x08f3, + 0x97c: 0x091b, 0x97d: 0x0907, 0x97e: 0x0913, 0x97f: 0x0917, + // Block 0x26, offset 0x980 + 0x980: 0x091f, 0x981: 0x0927, 0x982: 0x092b, 0x983: 0x0933, 0x984: 0x093b, 0x985: 0x093f, + 0x986: 0x093f, 0x987: 0x0947, 0x988: 0x094f, 0x989: 0x0953, 0x98a: 0x095f, 0x98b: 0x0983, + 0x98c: 0x0967, 0x98d: 0x0987, 0x98e: 0x096b, 0x98f: 0x0973, 0x990: 0x080b, 0x991: 0x09cf, + 0x992: 0x0997, 0x993: 0x099b, 0x994: 0x099f, 0x995: 0x0993, 0x996: 0x09a7, 0x997: 0x09a3, + 0x998: 0x09bb, 0x999: 0x1674, 0x99a: 0x09d7, 0x99b: 0x09db, 0x99c: 0x09e3, 0x99d: 0x09ef, + 0x99e: 0x09f7, 0x99f: 0x0a13, 0x9a0: 0x1679, 0x9a1: 0x167e, 0x9a2: 0x0a1f, 0x9a3: 0x0a23, + 0x9a4: 0x0a27, 0x9a5: 0x0a1b, 0x9a6: 0x0a2f, 0x9a7: 0x05c7, 0x9a8: 0x05cb, 0x9a9: 0x0a37, + 0x9aa: 0x0a3f, 0x9ab: 0x0a3f, 0x9ac: 0x1683, 0x9ad: 0x0a5b, 0x9ae: 0x0a5f, 0x9af: 0x0a63, + 0x9b0: 0x0a6b, 0x9b1: 0x1688, 0x9b2: 0x0a73, 0x9b3: 0x0a77, 0x9b4: 0x0b4f, 0x9b5: 0x0a7f, + 0x9b6: 0x05cf, 0x9b7: 0x0a8b, 0x9b8: 0x0a9b, 0x9b9: 0x0aa7, 0x9ba: 0x0aa3, 0x9bb: 0x1692, + 0x9bc: 0x0aaf, 0x9bd: 0x1697, 0x9be: 0x0abb, 0x9bf: 0x0ab7, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0abf, 0x9c1: 0x0acf, 0x9c2: 0x0ad3, 0x9c3: 0x05d3, 0x9c4: 0x0ae3, 0x9c5: 0x0aeb, + 0x9c6: 0x0aef, 0x9c7: 0x0af3, 0x9c8: 0x05d7, 0x9c9: 0x169c, 0x9ca: 0x05db, 0x9cb: 0x0b0f, + 0x9cc: 0x0b13, 0x9cd: 0x0b17, 0x9ce: 0x0b1f, 0x9cf: 0x1863, 0x9d0: 0x0b37, 0x9d1: 0x16a6, + 0x9d2: 0x16a6, 0x9d3: 0x11d7, 0x9d4: 0x0b47, 0x9d5: 0x0b47, 0x9d6: 0x05df, 0x9d7: 0x16c9, + 0x9d8: 0x179b, 0x9d9: 0x0b57, 0x9da: 0x0b5f, 0x9db: 0x05e3, 0x9dc: 0x0b73, 0x9dd: 0x0b83, + 0x9de: 0x0b87, 0x9df: 0x0b8f, 0x9e0: 0x0b9f, 0x9e1: 0x05eb, 0x9e2: 0x05e7, 0x9e3: 0x0ba3, + 0x9e4: 0x16ab, 0x9e5: 0x0ba7, 0x9e6: 0x0bbb, 0x9e7: 0x0bbf, 0x9e8: 0x0bc3, 0x9e9: 0x0bbf, + 0x9ea: 0x0bcf, 0x9eb: 0x0bd3, 0x9ec: 0x0be3, 0x9ed: 0x0bdb, 0x9ee: 0x0bdf, 0x9ef: 0x0be7, + 0x9f0: 0x0beb, 0x9f1: 0x0bef, 0x9f2: 0x0bfb, 0x9f3: 0x0bff, 0x9f4: 0x0c17, 0x9f5: 0x0c1f, + 0x9f6: 0x0c2f, 0x9f7: 0x0c43, 0x9f8: 0x16ba, 0x9f9: 0x0c3f, 0x9fa: 0x0c33, 0x9fb: 0x0c4b, + 0x9fc: 0x0c53, 0x9fd: 0x0c67, 0x9fe: 0x16bf, 0x9ff: 0x0c6f, + // Block 0x28, offset 0xa00 + 0xa00: 0x0c63, 0xa01: 0x0c5b, 0xa02: 0x05ef, 0xa03: 0x0c77, 0xa04: 0x0c7f, 0xa05: 0x0c87, + 0xa06: 0x0c7b, 0xa07: 0x05f3, 0xa08: 0x0c97, 0xa09: 0x0c9f, 0xa0a: 0x16c4, 0xa0b: 0x0ccb, + 0xa0c: 0x0cff, 0xa0d: 0x0cdb, 0xa0e: 0x05ff, 0xa0f: 0x0ce7, 0xa10: 0x05fb, 0xa11: 0x05f7, + 0xa12: 0x07c3, 0xa13: 0x07c7, 0xa14: 0x0d03, 0xa15: 0x0ceb, 0xa16: 0x11ab, 0xa17: 0x0663, + 0xa18: 0x0d0f, 0xa19: 0x0d13, 0xa1a: 0x0d17, 0xa1b: 0x0d2b, 0xa1c: 0x0d23, 0xa1d: 0x16dd, + 0xa1e: 0x0603, 0xa1f: 0x0d3f, 0xa20: 0x0d33, 0xa21: 0x0d4f, 0xa22: 0x0d57, 0xa23: 0x16e7, + 0xa24: 0x0d5b, 0xa25: 0x0d47, 0xa26: 0x0d63, 0xa27: 0x0607, 0xa28: 0x0d67, 0xa29: 0x0d6b, + 0xa2a: 0x0d6f, 0xa2b: 0x0d7b, 0xa2c: 0x16ec, 0xa2d: 0x0d83, 0xa2e: 0x060b, 0xa2f: 0x0d8f, + 0xa30: 0x16f1, 0xa31: 0x0d93, 0xa32: 0x060f, 0xa33: 0x0d9f, 0xa34: 0x0dab, 0xa35: 0x0db7, + 0xa36: 0x0dbb, 0xa37: 0x16f6, 0xa38: 0x168d, 0xa39: 0x16fb, 0xa3a: 0x0ddb, 0xa3b: 0x1700, + 0xa3c: 0x0de7, 0xa3d: 0x0def, 0xa3e: 0x0ddf, 0xa3f: 0x0dfb, + // Block 0x29, offset 0xa40 + 0xa40: 0x0e0b, 0xa41: 0x0e1b, 0xa42: 0x0e0f, 0xa43: 0x0e13, 0xa44: 0x0e1f, 0xa45: 0x0e23, + 0xa46: 0x1705, 0xa47: 0x0e07, 0xa48: 0x0e3b, 0xa49: 0x0e3f, 0xa4a: 0x0613, 0xa4b: 0x0e53, + 0xa4c: 0x0e4f, 0xa4d: 0x170a, 0xa4e: 0x0e33, 0xa4f: 0x0e6f, 0xa50: 0x170f, 0xa51: 0x1714, + 0xa52: 0x0e73, 0xa53: 0x0e87, 0xa54: 0x0e83, 0xa55: 0x0e7f, 0xa56: 0x0617, 0xa57: 0x0e8b, + 0xa58: 0x0e9b, 0xa59: 0x0e97, 0xa5a: 0x0ea3, 0xa5b: 0x1651, 0xa5c: 0x0eb3, 0xa5d: 0x1719, + 0xa5e: 0x0ebf, 0xa5f: 0x1723, 0xa60: 0x0ed3, 0xa61: 0x0edf, 0xa62: 0x0ef3, 0xa63: 0x1728, + 0xa64: 0x0f07, 0xa65: 0x0f0b, 0xa66: 0x172d, 0xa67: 0x1732, 0xa68: 0x0f27, 0xa69: 0x0f37, + 0xa6a: 0x061b, 0xa6b: 0x0f3b, 0xa6c: 0x061f, 0xa6d: 0x061f, 0xa6e: 0x0f53, 0xa6f: 0x0f57, + 0xa70: 0x0f5f, 0xa71: 0x0f63, 0xa72: 0x0f6f, 0xa73: 0x0623, 0xa74: 0x0f87, 0xa75: 0x1737, + 0xa76: 0x0fa3, 0xa77: 0x173c, 0xa78: 0x0faf, 0xa79: 0x16a1, 0xa7a: 0x0fbf, 0xa7b: 0x1741, + 0xa7c: 0x1746, 0xa7d: 0x174b, 0xa7e: 0x0627, 0xa7f: 0x062b, + // Block 0x2a, offset 0xa80 + 0xa80: 0x0ff7, 0xa81: 0x1755, 0xa82: 0x1750, 0xa83: 0x175a, 0xa84: 0x175f, 0xa85: 0x0fff, + 0xa86: 0x1003, 0xa87: 0x1003, 0xa88: 0x100b, 0xa89: 0x0633, 0xa8a: 0x100f, 0xa8b: 0x0637, + 0xa8c: 0x063b, 0xa8d: 0x1769, 0xa8e: 0x1023, 0xa8f: 0x102b, 0xa90: 0x1037, 0xa91: 0x063f, + 0xa92: 0x176e, 0xa93: 0x105b, 0xa94: 0x1773, 0xa95: 0x1778, 0xa96: 0x107b, 0xa97: 0x1093, + 0xa98: 0x0643, 0xa99: 0x109b, 0xa9a: 0x109f, 0xa9b: 0x10a3, 0xa9c: 0x177d, 0xa9d: 0x1782, + 0xa9e: 0x1782, 0xa9f: 0x10bb, 0xaa0: 0x0647, 0xaa1: 0x1787, 0xaa2: 0x10cf, 0xaa3: 0x10d3, + 0xaa4: 0x064b, 0xaa5: 0x178c, 0xaa6: 0x10ef, 0xaa7: 0x064f, 0xaa8: 0x10ff, 0xaa9: 0x10f7, + 0xaaa: 0x1107, 0xaab: 0x1796, 0xaac: 0x111f, 0xaad: 0x0653, 0xaae: 0x112b, 0xaaf: 0x1133, + 0xab0: 0x1143, 0xab1: 0x0657, 0xab2: 0x17a0, 0xab3: 0x17a5, 0xab4: 0x065b, 0xab5: 0x17aa, + 0xab6: 0x115b, 0xab7: 0x17af, 0xab8: 0x1167, 0xab9: 0x1173, 0xaba: 0x117b, 0xabb: 0x17b4, + 0xabc: 0x17b9, 0xabd: 0x118f, 0xabe: 0x17be, 0xabf: 0x1197, + // Block 0x2b, offset 0xac0 + 0xac0: 0x16ce, 0xac1: 0x065f, 0xac2: 0x11af, 0xac3: 0x11b3, 0xac4: 0x0667, 0xac5: 0x11b7, + 0xac6: 0x0a33, 0xac7: 0x17c3, 0xac8: 0x17c8, 0xac9: 0x16d3, 0xaca: 0x16d8, 0xacb: 0x11d7, + 0xacc: 0x11db, 0xacd: 0x13f3, 0xace: 0x066b, 0xacf: 0x1207, 0xad0: 0x1203, 0xad1: 0x120b, + 0xad2: 0x083f, 0xad3: 0x120f, 0xad4: 0x1213, 0xad5: 0x1217, 0xad6: 0x121f, 0xad7: 0x17cd, + 0xad8: 0x121b, 0xad9: 0x1223, 0xada: 0x1237, 0xadb: 0x123b, 0xadc: 0x1227, 0xadd: 0x123f, + 0xade: 0x1253, 0xadf: 0x1267, 0xae0: 0x1233, 0xae1: 0x1247, 0xae2: 0x124b, 0xae3: 0x124f, + 0xae4: 0x17d2, 0xae5: 0x17dc, 0xae6: 0x17d7, 0xae7: 0x066f, 0xae8: 0x126f, 0xae9: 0x1273, + 0xaea: 0x127b, 0xaeb: 0x17f0, 0xaec: 0x127f, 0xaed: 0x17e1, 0xaee: 0x0673, 0xaef: 0x0677, + 0xaf0: 0x17e6, 0xaf1: 0x17eb, 0xaf2: 0x067b, 0xaf3: 0x129f, 0xaf4: 0x12a3, 0xaf5: 0x12a7, + 0xaf6: 0x12ab, 0xaf7: 0x12b7, 0xaf8: 0x12b3, 0xaf9: 0x12bf, 0xafa: 0x12bb, 0xafb: 0x12cb, + 0xafc: 0x12c3, 0xafd: 0x12c7, 0xafe: 0x12cf, 0xaff: 0x067f, + // Block 0x2c, offset 0xb00 + 0xb00: 0x12d7, 0xb01: 0x12db, 0xb02: 0x0683, 0xb03: 0x12eb, 0xb04: 0x12ef, 0xb05: 0x17f5, + 0xb06: 0x12fb, 0xb07: 0x12ff, 0xb08: 0x0687, 0xb09: 0x130b, 0xb0a: 0x05bb, 0xb0b: 0x17fa, + 0xb0c: 0x17ff, 0xb0d: 0x068b, 0xb0e: 0x068f, 0xb0f: 0x1337, 0xb10: 0x134f, 0xb11: 0x136b, + 0xb12: 0x137b, 0xb13: 0x1804, 0xb14: 0x138f, 0xb15: 0x1393, 0xb16: 0x13ab, 0xb17: 0x13b7, + 0xb18: 0x180e, 0xb19: 0x1660, 0xb1a: 0x13c3, 0xb1b: 0x13bf, 0xb1c: 0x13cb, 0xb1d: 0x1665, + 0xb1e: 0x13d7, 0xb1f: 0x13e3, 0xb20: 0x1813, 0xb21: 0x1818, 0xb22: 0x1423, 0xb23: 0x142f, + 0xb24: 0x1437, 0xb25: 0x181d, 0xb26: 0x143b, 0xb27: 0x1467, 0xb28: 0x1473, 0xb29: 0x1477, + 0xb2a: 0x146f, 0xb2b: 0x1483, 0xb2c: 0x1487, 0xb2d: 0x1822, 0xb2e: 0x1493, 0xb2f: 0x0693, + 0xb30: 0x149b, 0xb31: 0x1827, 0xb32: 0x0697, 0xb33: 0x14d3, 0xb34: 0x0ac3, 0xb35: 0x14eb, + 0xb36: 0x182c, 0xb37: 0x1836, 0xb38: 0x069b, 0xb39: 0x069f, 0xb3a: 0x1513, 0xb3b: 0x183b, + 0xb3c: 0x06a3, 0xb3d: 0x1840, 0xb3e: 0x152b, 0xb3f: 0x152b, + // Block 0x2d, offset 0xb40 + 0xb40: 0x1533, 0xb41: 0x1845, 0xb42: 0x154b, 0xb43: 0x06a7, 0xb44: 0x155b, 0xb45: 0x1567, + 0xb46: 0x156f, 0xb47: 0x1577, 0xb48: 0x06ab, 0xb49: 0x184a, 0xb4a: 0x158b, 0xb4b: 0x15a7, + 0xb4c: 0x15b3, 0xb4d: 0x06af, 0xb4e: 0x06b3, 0xb4f: 0x15b7, 0xb50: 0x184f, 0xb51: 0x06b7, + 0xb52: 0x1854, 0xb53: 0x1859, 0xb54: 0x185e, 0xb55: 0x15db, 0xb56: 0x06bb, 0xb57: 0x15ef, + 0xb58: 0x15f7, 0xb59: 0x15fb, 0xb5a: 0x1603, 0xb5b: 0x160b, 0xb5c: 0x1613, 0xb5d: 0x1868, +} + +// nfcIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var nfcIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x2c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2d, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x2e, 0xcb: 0x2f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x30, + 0xd0: 0x09, 0xd1: 0x31, 0xd2: 0x32, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x33, + 0xd8: 0x34, 0xd9: 0x0c, 0xdb: 0x35, 0xdc: 0x36, 0xdd: 0x37, 0xdf: 0x38, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x39, 0x121: 0x3a, 0x123: 0x3b, 0x124: 0x3c, 0x125: 0x3d, 0x126: 0x3e, 0x127: 0x3f, + 0x128: 0x40, 0x129: 0x41, 0x12a: 0x42, 0x12b: 0x43, 0x12c: 0x3e, 0x12d: 0x44, 0x12e: 0x45, 0x12f: 0x46, + 0x131: 0x47, 0x132: 0x48, 0x133: 0x49, 0x134: 0x4a, 0x135: 0x4b, 0x137: 0x4c, + 0x138: 0x4d, 0x139: 0x4e, 0x13a: 0x4f, 0x13b: 0x50, 0x13c: 0x51, 0x13d: 0x52, 0x13e: 0x53, 0x13f: 0x54, + // Block 0x5, offset 0x140 + 0x140: 0x55, 0x142: 0x56, 0x144: 0x57, 0x145: 0x58, 0x146: 0x59, 0x147: 0x5a, + 0x14d: 0x5b, + 0x15c: 0x5c, 0x15f: 0x5d, + 0x162: 0x5e, 0x164: 0x5f, + 0x168: 0x60, 0x169: 0x61, 0x16a: 0x62, 0x16c: 0x0d, 0x16d: 0x63, 0x16e: 0x64, 0x16f: 0x65, + 0x170: 0x66, 0x173: 0x67, 0x177: 0x68, + 0x178: 0x0e, 0x179: 0x0f, 0x17a: 0x10, 0x17b: 0x11, 0x17c: 0x12, 0x17d: 0x13, 0x17e: 0x14, 0x17f: 0x15, + // Block 0x6, offset 0x180 + 0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d, + 0x188: 0x6e, 0x189: 0x16, 0x18a: 0x17, 0x18b: 0x6f, 0x18c: 0x70, + 0x1ab: 0x71, + 0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x75, 0x1c1: 0x18, 0x1c2: 0x19, 0x1c3: 0x1a, 0x1c4: 0x76, 0x1c5: 0x77, + 0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a, + // Block 0x8, offset 0x200 + 0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d, + 0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83, + 0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86, + 0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87, + 0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88, + // Block 0x9, offset 0x240 + 0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89, + 0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a, + 0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b, + 0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c, + 0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d, + 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87, + 0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88, + 0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89, + // Block 0xa, offset 0x280 + 0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a, + 0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b, + 0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c, + 0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d, + 0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87, + 0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88, + 0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89, + 0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b, + 0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c, + 0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d, + 0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e, + // Block 0xc, offset 0x300 + 0x324: 0x1b, 0x325: 0x1c, 0x326: 0x1d, 0x327: 0x1e, + 0x328: 0x1f, 0x329: 0x20, 0x32a: 0x21, 0x32b: 0x22, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91, + 0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95, + 0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b, + // Block 0xd, offset 0x340 + 0x347: 0x9c, + 0x34b: 0x9d, 0x34d: 0x9e, + 0x368: 0x9f, 0x36b: 0xa0, + // Block 0xe, offset 0x380 + 0x381: 0xa1, 0x382: 0xa2, 0x384: 0xa3, 0x385: 0x82, 0x387: 0xa4, + 0x388: 0xa5, 0x38b: 0xa6, 0x38c: 0x3e, 0x38d: 0xa7, + 0x391: 0xa8, 0x392: 0xa9, 0x393: 0xaa, 0x396: 0xab, 0x397: 0xac, + 0x398: 0x73, 0x39a: 0xad, 0x39c: 0xae, + 0x3b0: 0x73, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xaf, 0x3ec: 0xb0, + // Block 0x10, offset 0x400 + 0x432: 0xb1, + // Block 0x11, offset 0x440 + 0x445: 0xb2, 0x446: 0xb3, 0x447: 0xb4, + 0x449: 0xb5, + // Block 0x12, offset 0x480 + 0x480: 0xb6, + 0x4a3: 0xb7, 0x4a5: 0xb8, + // Block 0x13, offset 0x4c0 + 0x4c8: 0xb9, + // Block 0x14, offset 0x500 + 0x520: 0x23, 0x521: 0x24, 0x522: 0x25, 0x523: 0x26, 0x524: 0x27, 0x525: 0x28, 0x526: 0x29, 0x527: 0x2a, + 0x528: 0x2b, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfcSparseOffset: 142 entries, 284 bytes +var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x62, 0x67, 0x69, 0x7a, 0x82, 0x89, 0x8c, 0x93, 0x97, 0x9b, 0x9d, 0x9f, 0xa8, 0xac, 0xb3, 0xb8, 0xbb, 0xc5, 0xc7, 0xce, 0xd6, 0xd9, 0xdb, 0xdd, 0xdf, 0xe4, 0xf5, 0x101, 0x103, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x118, 0x11b, 0x11d, 0x120, 0x123, 0x127, 0x12c, 0x135, 0x137, 0x13a, 0x13c, 0x147, 0x157, 0x15b, 0x169, 0x16c, 0x172, 0x178, 0x183, 0x187, 0x189, 0x18b, 0x18d, 0x18f, 0x191, 0x197, 0x19b, 0x19d, 0x19f, 0x1a7, 0x1ab, 0x1ae, 0x1b0, 0x1b2, 0x1b4, 0x1b7, 0x1b9, 0x1bb, 0x1bd, 0x1bf, 0x1c5, 0x1c8, 0x1ca, 0x1d1, 0x1d7, 0x1dd, 0x1e5, 0x1eb, 0x1f1, 0x1f7, 0x1fb, 0x209, 0x212, 0x215, 0x218, 0x21a, 0x21d, 0x21f, 0x223, 0x228, 0x22a, 0x22c, 0x231, 0x237, 0x239, 0x23b, 0x23d, 0x243, 0x246, 0x249, 0x251, 0x258, 0x25b, 0x25e, 0x260, 0x268, 0x26b, 0x272, 0x275, 0x27b, 0x27d, 0x280, 0x282, 0x284, 0x286, 0x288, 0x295, 0x29f, 0x2a1, 0x2a3, 0x2a9, 0x2ab, 0x2ae} + +// nfcSparseValues: 688 entries, 2752 bytes +var nfcSparseValues = [688]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x04}, + {value: 0xa100, lo: 0xa8, hi: 0xa8}, + {value: 0x8100, lo: 0xaf, hi: 0xaf}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb8, hi: 0xb8}, + // Block 0x1, offset 0x5 + {value: 0x0091, lo: 0x03}, + {value: 0x4778, lo: 0xa0, hi: 0xa1}, + {value: 0x47aa, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x9 + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + // Block 0x3, offset 0xb + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x98, hi: 0x9d}, + // Block 0x4, offset 0xd + {value: 0x0006, lo: 0x0a}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x85, hi: 0x85}, + {value: 0xa000, lo: 0x89, hi: 0x89}, + {value: 0x48d6, lo: 0x8a, hi: 0x8a}, + {value: 0x48f4, lo: 0x8b, hi: 0x8b}, + {value: 0x36c7, lo: 0x8c, hi: 0x8c}, + {value: 0x36df, lo: 0x8d, hi: 0x8d}, + {value: 0x490c, lo: 0x8e, hi: 0x8e}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x36fd, lo: 0x93, hi: 0x94}, + // Block 0x5, offset 0x18 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37a5, lo: 0x90, hi: 0x90}, + {value: 0x37b1, lo: 0x91, hi: 0x91}, + {value: 0x379f, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x3817, lo: 0x97, hi: 0x97}, + {value: 0x37e1, lo: 0x9c, hi: 0x9c}, + {value: 0x37c9, lo: 0x9d, hi: 0x9d}, + {value: 0x37f3, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x381d, lo: 0xb6, hi: 0xb6}, + {value: 0x3823, lo: 0xb7, hi: 0xb7}, + // Block 0x6, offset 0x28 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x83, hi: 0x87}, + // Block 0x7, offset 0x2a + {value: 0x0001, lo: 0x04}, + {value: 0x8113, lo: 0x81, hi: 0x82}, + {value: 0x8132, lo: 0x84, hi: 0x84}, + {value: 0x812d, lo: 0x85, hi: 0x85}, + {value: 0x810d, lo: 0x87, hi: 0x87}, + // Block 0x8, offset 0x2f + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x97}, + {value: 0x8119, lo: 0x98, hi: 0x98}, + {value: 0x811a, lo: 0x99, hi: 0x99}, + {value: 0x811b, lo: 0x9a, hi: 0x9a}, + {value: 0x3841, lo: 0xa2, hi: 0xa2}, + {value: 0x3847, lo: 0xa3, hi: 0xa3}, + {value: 0x3853, lo: 0xa4, hi: 0xa4}, + {value: 0x384d, lo: 0xa5, hi: 0xa5}, + {value: 0x3859, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x9, offset 0x3a + {value: 0x0000, lo: 0x0e}, + {value: 0x386b, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x385f, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x3865, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8132, lo: 0x96, hi: 0x9c}, + {value: 0x8132, lo: 0x9f, hi: 0xa2}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa4}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + // Block 0xa, offset 0x49 + {value: 0x0000, lo: 0x0c}, + {value: 0x811f, lo: 0x91, hi: 0x91}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x812d, lo: 0xb1, hi: 0xb1}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb5, hi: 0xb6}, + {value: 0x812d, lo: 0xb7, hi: 0xb9}, + {value: 0x8132, lo: 0xba, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbc}, + {value: 0x8132, lo: 0xbd, hi: 0xbd}, + {value: 0x812d, lo: 0xbe, hi: 0xbe}, + {value: 0x8132, lo: 0xbf, hi: 0xbf}, + // Block 0xb, offset 0x56 + {value: 0x0005, lo: 0x07}, + {value: 0x8132, lo: 0x80, hi: 0x80}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x83}, + {value: 0x812d, lo: 0x84, hi: 0x85}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x812d, lo: 0x88, hi: 0x89}, + {value: 0x8132, lo: 0x8a, hi: 0x8a}, + // Block 0xc, offset 0x5e + {value: 0x0000, lo: 0x03}, + {value: 0x8132, lo: 0xab, hi: 0xb1}, + {value: 0x812d, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb3}, + // Block 0xd, offset 0x62 + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0x96, hi: 0x99}, + {value: 0x8132, lo: 0x9b, hi: 0xa3}, + {value: 0x8132, lo: 0xa5, hi: 0xa7}, + {value: 0x8132, lo: 0xa9, hi: 0xad}, + // Block 0xe, offset 0x67 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x99, hi: 0x9b}, + // Block 0xf, offset 0x69 + {value: 0x0000, lo: 0x10}, + {value: 0x8132, lo: 0x94, hi: 0xa1}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xa9, hi: 0xa9}, + {value: 0x8132, lo: 0xaa, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xaf}, + {value: 0x8116, lo: 0xb0, hi: 0xb0}, + {value: 0x8117, lo: 0xb1, hi: 0xb1}, + {value: 0x8118, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb5}, + {value: 0x812d, lo: 0xb6, hi: 0xb6}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x812d, lo: 0xb9, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbf}, + // Block 0x10, offset 0x7a + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3ed8, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ee0, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3ee8, lo: 0xb4, hi: 0xb4}, + {value: 0x9902, lo: 0xbc, hi: 0xbc}, + // Block 0x11, offset 0x82 + {value: 0x0008, lo: 0x06}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x91, hi: 0x91}, + {value: 0x812d, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x93, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x94}, + {value: 0x45b2, lo: 0x98, hi: 0x9f}, + // Block 0x12, offset 0x89 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x13, offset 0x8c + {value: 0x0008, lo: 0x06}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2c9e, lo: 0x8b, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x45f2, lo: 0x9c, hi: 0x9d}, + {value: 0x4602, lo: 0x9f, hi: 0x9f}, + // Block 0x14, offset 0x93 + {value: 0x0000, lo: 0x03}, + {value: 0x462a, lo: 0xb3, hi: 0xb3}, + {value: 0x4632, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x15, offset 0x97 + {value: 0x0008, lo: 0x03}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x460a, lo: 0x99, hi: 0x9b}, + {value: 0x4622, lo: 0x9e, hi: 0x9e}, + // Block 0x16, offset 0x9b + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x17, offset 0x9d + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + // Block 0x18, offset 0x9f + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cb6, lo: 0x88, hi: 0x88}, + {value: 0x2cae, lo: 0x8b, hi: 0x8b}, + {value: 0x2cbe, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x463a, lo: 0x9c, hi: 0x9c}, + {value: 0x4642, lo: 0x9d, hi: 0x9d}, + // Block 0x19, offset 0xa8 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cc6, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1a, offset 0xac + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cce, lo: 0x8a, hi: 0x8a}, + {value: 0x2cde, lo: 0x8b, hi: 0x8b}, + {value: 0x2cd6, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1b, offset 0xb3 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3ef0, lo: 0x88, hi: 0x88}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8120, lo: 0x95, hi: 0x96}, + // Block 0x1c, offset 0xb8 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1d, offset 0xbb + {value: 0x0000, lo: 0x09}, + {value: 0x2ce6, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cee, lo: 0x87, hi: 0x87}, + {value: 0x2cf6, lo: 0x88, hi: 0x88}, + {value: 0x2f50, lo: 0x8a, hi: 0x8a}, + {value: 0x2dd8, lo: 0x8b, hi: 0x8b}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1e, offset 0xc5 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1f, offset 0xc7 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, + {value: 0x2d0e, lo: 0x8b, hi: 0x8b}, + {value: 0x2d06, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x20, offset 0xce + {value: 0x6bea, lo: 0x07}, + {value: 0x9904, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3ef8, lo: 0x9a, hi: 0x9a}, + {value: 0x2f58, lo: 0x9c, hi: 0x9c}, + {value: 0x2de3, lo: 0x9d, hi: 0x9d}, + {value: 0x2d16, lo: 0x9e, hi: 0x9f}, + // Block 0x21, offset 0xd6 + {value: 0x0000, lo: 0x02}, + {value: 0x8122, lo: 0xb8, hi: 0xb9}, + {value: 0x8104, lo: 0xba, hi: 0xba}, + // Block 0x22, offset 0xd9 + {value: 0x0000, lo: 0x01}, + {value: 0x8123, lo: 0x88, hi: 0x8b}, + // Block 0x23, offset 0xdb + {value: 0x0000, lo: 0x01}, + {value: 0x8124, lo: 0xb8, hi: 0xb9}, + // Block 0x24, offset 0xdd + {value: 0x0000, lo: 0x01}, + {value: 0x8125, lo: 0x88, hi: 0x8b}, + // Block 0x25, offset 0xdf + {value: 0x0000, lo: 0x04}, + {value: 0x812d, lo: 0x98, hi: 0x99}, + {value: 0x812d, lo: 0xb5, hi: 0xb5}, + {value: 0x812d, lo: 0xb7, hi: 0xb7}, + {value: 0x812b, lo: 0xb9, hi: 0xb9}, + // Block 0x26, offset 0xe4 + {value: 0x0000, lo: 0x10}, + {value: 0x2644, lo: 0x83, hi: 0x83}, + {value: 0x264b, lo: 0x8d, hi: 0x8d}, + {value: 0x2652, lo: 0x92, hi: 0x92}, + {value: 0x2659, lo: 0x97, hi: 0x97}, + {value: 0x2660, lo: 0x9c, hi: 0x9c}, + {value: 0x263d, lo: 0xa9, hi: 0xa9}, + {value: 0x8126, lo: 0xb1, hi: 0xb1}, + {value: 0x8127, lo: 0xb2, hi: 0xb2}, + {value: 0x4a66, lo: 0xb3, hi: 0xb3}, + {value: 0x8128, lo: 0xb4, hi: 0xb4}, + {value: 0x4a6f, lo: 0xb5, hi: 0xb5}, + {value: 0x464a, lo: 0xb6, hi: 0xb6}, + {value: 0x8200, lo: 0xb7, hi: 0xb7}, + {value: 0x4652, lo: 0xb8, hi: 0xb8}, + {value: 0x8200, lo: 0xb9, hi: 0xb9}, + {value: 0x8127, lo: 0xba, hi: 0xbd}, + // Block 0x27, offset 0xf5 + {value: 0x0000, lo: 0x0b}, + {value: 0x8127, lo: 0x80, hi: 0x80}, + {value: 0x4a78, lo: 0x81, hi: 0x81}, + {value: 0x8132, lo: 0x82, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0x86, hi: 0x87}, + {value: 0x266e, lo: 0x93, hi: 0x93}, + {value: 0x2675, lo: 0x9d, hi: 0x9d}, + {value: 0x267c, lo: 0xa2, hi: 0xa2}, + {value: 0x2683, lo: 0xa7, hi: 0xa7}, + {value: 0x268a, lo: 0xac, hi: 0xac}, + {value: 0x2667, lo: 0xb9, hi: 0xb9}, + // Block 0x28, offset 0x101 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x86, hi: 0x86}, + // Block 0x29, offset 0x103 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x2a, offset 0x109 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + // Block 0x2b, offset 0x10b + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2c, offset 0x10d + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2d, offset 0x10f + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2e, offset 0x111 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2f, offset 0x113 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9d, hi: 0x9f}, + // Block 0x30, offset 0x115 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x94, hi: 0x94}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x31, offset 0x118 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x9d, hi: 0x9d}, + // Block 0x32, offset 0x11b + {value: 0x0000, lo: 0x01}, + {value: 0x8131, lo: 0xa9, hi: 0xa9}, + // Block 0x33, offset 0x11d + {value: 0x0004, lo: 0x02}, + {value: 0x812e, lo: 0xb9, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbb}, + // Block 0x34, offset 0x120 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x97, hi: 0x97}, + {value: 0x812d, lo: 0x98, hi: 0x98}, + // Block 0x35, offset 0x123 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0xa0, hi: 0xa0}, + {value: 0x8132, lo: 0xb5, hi: 0xbc}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x36, offset 0x127 + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + {value: 0x812d, lo: 0xb5, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x37, offset 0x12c + {value: 0x0000, lo: 0x08}, + {value: 0x2d66, lo: 0x80, hi: 0x80}, + {value: 0x2d6e, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d76, lo: 0x83, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xac}, + {value: 0x8132, lo: 0xad, hi: 0xb3}, + // Block 0x38, offset 0x135 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xaa, hi: 0xab}, + // Block 0x39, offset 0x137 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xa6, hi: 0xa6}, + {value: 0x8104, lo: 0xb2, hi: 0xb3}, + // Block 0x3a, offset 0x13a + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x3b, offset 0x13c + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812d, lo: 0x95, hi: 0x99}, + {value: 0x8132, lo: 0x9a, hi: 0x9b}, + {value: 0x812d, lo: 0x9c, hi: 0x9f}, + {value: 0x8132, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + {value: 0x8132, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb8, hi: 0xb9}, + // Block 0x3c, offset 0x147 + {value: 0x0000, lo: 0x0f}, + {value: 0x8132, lo: 0x80, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x82}, + {value: 0x8132, lo: 0x83, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8a}, + {value: 0x8132, lo: 0x8b, hi: 0x8c}, + {value: 0x8135, lo: 0x8d, hi: 0x8d}, + {value: 0x812a, lo: 0x8e, hi: 0x8e}, + {value: 0x812d, lo: 0x8f, hi: 0x8f}, + {value: 0x8129, lo: 0x90, hi: 0x90}, + {value: 0x8132, lo: 0x91, hi: 0xb5}, + {value: 0x8132, lo: 0xbb, hi: 0xbb}, + {value: 0x8134, lo: 0xbc, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + {value: 0x8132, lo: 0xbe, hi: 0xbe}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x157 + {value: 0x0004, lo: 0x03}, + {value: 0x0433, lo: 0x80, hi: 0x81}, + {value: 0x8100, lo: 0x97, hi: 0x97}, + {value: 0x8100, lo: 0xbe, hi: 0xbe}, + // Block 0x3e, offset 0x15b + {value: 0x0000, lo: 0x0d}, + {value: 0x8132, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8132, lo: 0x9b, hi: 0x9c}, + {value: 0x8132, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa7}, + {value: 0x812d, lo: 0xa8, hi: 0xa8}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xaf}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + // Block 0x3f, offset 0x169 + {value: 0x427b, lo: 0x02}, + {value: 0x01b8, lo: 0xa6, hi: 0xa6}, + {value: 0x0057, lo: 0xaa, hi: 0xab}, + // Block 0x40, offset 0x16c + {value: 0x0007, lo: 0x05}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, + {value: 0x3bc7, lo: 0xae, hi: 0xae}, + // Block 0x41, offset 0x172 + {value: 0x000e, lo: 0x05}, + {value: 0x3bce, lo: 0x8d, hi: 0x8e}, + {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x42, offset 0x178 + {value: 0x6408, lo: 0x0a}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3be3, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3bea, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3bf1, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3bf8, lo: 0xa4, hi: 0xa5}, + {value: 0x3bff, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x43, offset 0x183 + {value: 0x0007, lo: 0x03}, + {value: 0x3c68, lo: 0xa0, hi: 0xa1}, + {value: 0x3c92, lo: 0xa2, hi: 0xa3}, + {value: 0x3cbc, lo: 0xaa, hi: 0xad}, + // Block 0x44, offset 0x187 + {value: 0x0004, lo: 0x01}, + {value: 0x048b, lo: 0xa9, hi: 0xaa}, + // Block 0x45, offset 0x189 + {value: 0x0000, lo: 0x01}, + {value: 0x4573, lo: 0x9c, hi: 0x9c}, + // Block 0x46, offset 0x18b + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xaf, hi: 0xb1}, + // Block 0x47, offset 0x18d + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x48, offset 0x18f + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa0, hi: 0xbf}, + // Block 0x49, offset 0x191 + {value: 0x0000, lo: 0x05}, + {value: 0x812c, lo: 0xaa, hi: 0xaa}, + {value: 0x8131, lo: 0xab, hi: 0xab}, + {value: 0x8133, lo: 0xac, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x812f, lo: 0xae, hi: 0xaf}, + // Block 0x4a, offset 0x197 + {value: 0x0000, lo: 0x03}, + {value: 0x4a81, lo: 0xb3, hi: 0xb3}, + {value: 0x4a81, lo: 0xb5, hi: 0xb6}, + {value: 0x4a81, lo: 0xba, hi: 0xbf}, + // Block 0x4b, offset 0x19b + {value: 0x0000, lo: 0x01}, + {value: 0x4a81, lo: 0x8f, hi: 0xa3}, + // Block 0x4c, offset 0x19d + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xae, hi: 0xbe}, + // Block 0x4d, offset 0x19f + {value: 0x0000, lo: 0x07}, + {value: 0x8100, lo: 0x84, hi: 0x84}, + {value: 0x8100, lo: 0x87, hi: 0x87}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + {value: 0x8100, lo: 0x9e, hi: 0x9e}, + {value: 0x8100, lo: 0xa1, hi: 0xa1}, + {value: 0x8100, lo: 0xb2, hi: 0xb2}, + {value: 0x8100, lo: 0xbb, hi: 0xbb}, + // Block 0x4e, offset 0x1a7 + {value: 0x0000, lo: 0x03}, + {value: 0x8100, lo: 0x80, hi: 0x80}, + {value: 0x8100, lo: 0x8b, hi: 0x8b}, + {value: 0x8100, lo: 0x8e, hi: 0x8e}, + // Block 0x4f, offset 0x1ab + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xaf, hi: 0xaf}, + {value: 0x8132, lo: 0xb4, hi: 0xbd}, + // Block 0x50, offset 0x1ae + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9e, hi: 0x9f}, + // Block 0x51, offset 0x1b0 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb1}, + // Block 0x52, offset 0x1b2 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + // Block 0x53, offset 0x1b4 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xa0, hi: 0xb1}, + // Block 0x54, offset 0x1b7 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xab, hi: 0xad}, + // Block 0x55, offset 0x1b9 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x93, hi: 0x93}, + // Block 0x56, offset 0x1bb + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb3, hi: 0xb3}, + // Block 0x57, offset 0x1bd + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + // Block 0x58, offset 0x1bf + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x8132, lo: 0xbe, hi: 0xbf}, + // Block 0x59, offset 0x1c5 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + // Block 0x5a, offset 0x1c8 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xad, hi: 0xad}, + // Block 0x5b, offset 0x1ca + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x5c, offset 0x1d1 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x5d, offset 0x1d7 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x5e, offset 0x1dd + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x5f, offset 0x1e5 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x60, offset 0x1eb + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x61, offset 0x1f1 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x62, offset 0x1f7 + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x63, offset 0x1fb + {value: 0x0006, lo: 0x0d}, + {value: 0x4426, lo: 0x9d, hi: 0x9d}, + {value: 0x8115, lo: 0x9e, hi: 0x9e}, + {value: 0x4498, lo: 0x9f, hi: 0x9f}, + {value: 0x4486, lo: 0xaa, hi: 0xab}, + {value: 0x458a, lo: 0xac, hi: 0xac}, + {value: 0x4592, lo: 0xad, hi: 0xad}, + {value: 0x43de, lo: 0xae, hi: 0xb1}, + {value: 0x43fc, lo: 0xb2, hi: 0xb4}, + {value: 0x4414, lo: 0xb5, hi: 0xb6}, + {value: 0x4420, lo: 0xb8, hi: 0xb8}, + {value: 0x442c, lo: 0xb9, hi: 0xbb}, + {value: 0x4444, lo: 0xbc, hi: 0xbc}, + {value: 0x444a, lo: 0xbe, hi: 0xbe}, + // Block 0x64, offset 0x209 + {value: 0x0006, lo: 0x08}, + {value: 0x4450, lo: 0x80, hi: 0x81}, + {value: 0x445c, lo: 0x83, hi: 0x84}, + {value: 0x446e, lo: 0x86, hi: 0x89}, + {value: 0x4492, lo: 0x8a, hi: 0x8a}, + {value: 0x440e, lo: 0x8b, hi: 0x8b}, + {value: 0x43f6, lo: 0x8c, hi: 0x8c}, + {value: 0x443e, lo: 0x8d, hi: 0x8d}, + {value: 0x4468, lo: 0x8e, hi: 0x8e}, + // Block 0x65, offset 0x212 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0xa4, hi: 0xa5}, + {value: 0x8100, lo: 0xb0, hi: 0xb1}, + // Block 0x66, offset 0x215 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x9b, hi: 0x9d}, + {value: 0x8200, lo: 0x9e, hi: 0xa3}, + // Block 0x67, offset 0x218 + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + // Block 0x68, offset 0x21a + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x99, hi: 0x99}, + {value: 0x8200, lo: 0xb2, hi: 0xb4}, + // Block 0x69, offset 0x21d + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xbc, hi: 0xbd}, + // Block 0x6a, offset 0x21f + {value: 0x0000, lo: 0x03}, + {value: 0x8132, lo: 0xa0, hi: 0xa6}, + {value: 0x812d, lo: 0xa7, hi: 0xad}, + {value: 0x8132, lo: 0xae, hi: 0xaf}, + // Block 0x6b, offset 0x223 + {value: 0x0000, lo: 0x04}, + {value: 0x8100, lo: 0x89, hi: 0x8c}, + {value: 0x8100, lo: 0xb0, hi: 0xb2}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb6, hi: 0xbf}, + // Block 0x6c, offset 0x228 + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x81, hi: 0x8c}, + // Block 0x6d, offset 0x22a + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xb5, hi: 0xba}, + // Block 0x6e, offset 0x22c + {value: 0x0000, lo: 0x04}, + {value: 0x4a81, lo: 0x9e, hi: 0x9f}, + {value: 0x4a81, lo: 0xa3, hi: 0xa3}, + {value: 0x4a81, lo: 0xa5, hi: 0xa6}, + {value: 0x4a81, lo: 0xaa, hi: 0xaf}, + // Block 0x6f, offset 0x231 + {value: 0x0000, lo: 0x05}, + {value: 0x4a81, lo: 0x82, hi: 0x87}, + {value: 0x4a81, lo: 0x8a, hi: 0x8f}, + {value: 0x4a81, lo: 0x92, hi: 0x97}, + {value: 0x4a81, lo: 0x9a, hi: 0x9c}, + {value: 0x8100, lo: 0xa3, hi: 0xa3}, + // Block 0x70, offset 0x237 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x71, offset 0x239 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xa0, hi: 0xa0}, + // Block 0x72, offset 0x23b + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb6, hi: 0xba}, + // Block 0x73, offset 0x23d + {value: 0x002c, lo: 0x05}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x8f, hi: 0x8f}, + {value: 0x8132, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x74, offset 0x243 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xa5, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + // Block 0x75, offset 0x246 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x76, offset 0x249 + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x4238, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4242, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x424c, lo: 0xab, hi: 0xab}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x77, offset 0x251 + {value: 0x0000, lo: 0x06}, + {value: 0x8132, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d7e, lo: 0xae, hi: 0xae}, + {value: 0x2d88, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8104, lo: 0xb3, hi: 0xb4}, + // Block 0x78, offset 0x258 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x79, offset 0x25b + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb5, hi: 0xb5}, + {value: 0x8102, lo: 0xb6, hi: 0xb6}, + // Block 0x7a, offset 0x25e + {value: 0x0002, lo: 0x01}, + {value: 0x8102, lo: 0xa9, hi: 0xaa}, + // Block 0x7b, offset 0x260 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d92, lo: 0x8b, hi: 0x8b}, + {value: 0x2d9c, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8132, lo: 0xa6, hi: 0xac}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + // Block 0x7c, offset 0x268 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x86, hi: 0x86}, + // Block 0x7d, offset 0x26b + {value: 0x6b5a, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2db0, lo: 0xbb, hi: 0xbb}, + {value: 0x2da6, lo: 0xbc, hi: 0xbd}, + {value: 0x2dba, lo: 0xbe, hi: 0xbe}, + // Block 0x7e, offset 0x272 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x83, hi: 0x83}, + // Block 0x7f, offset 0x275 + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dc4, lo: 0xba, hi: 0xba}, + {value: 0x2dce, lo: 0xbb, hi: 0xbb}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x80, offset 0x27b + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0x80, hi: 0x80}, + // Block 0x81, offset 0x27d + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x82, offset 0x280 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xab, hi: 0xab}, + // Block 0x83, offset 0x282 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x84, offset 0x284 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb6}, + // Block 0x85, offset 0x286 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x86, offset 0x288 + {value: 0x0000, lo: 0x0c}, + {value: 0x4662, lo: 0x9e, hi: 0x9e}, + {value: 0x466c, lo: 0x9f, hi: 0x9f}, + {value: 0x46a0, lo: 0xa0, hi: 0xa0}, + {value: 0x46ae, lo: 0xa1, hi: 0xa1}, + {value: 0x46bc, lo: 0xa2, hi: 0xa2}, + {value: 0x46ca, lo: 0xa3, hi: 0xa3}, + {value: 0x46d8, lo: 0xa4, hi: 0xa4}, + {value: 0x812b, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8130, lo: 0xad, hi: 0xad}, + {value: 0x812b, lo: 0xae, hi: 0xb2}, + {value: 0x812d, lo: 0xbb, hi: 0xbf}, + // Block 0x87, offset 0x295 + {value: 0x0000, lo: 0x09}, + {value: 0x812d, lo: 0x80, hi: 0x82}, + {value: 0x8132, lo: 0x85, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8b}, + {value: 0x8132, lo: 0xaa, hi: 0xad}, + {value: 0x4676, lo: 0xbb, hi: 0xbb}, + {value: 0x4680, lo: 0xbc, hi: 0xbc}, + {value: 0x46e6, lo: 0xbd, hi: 0xbd}, + {value: 0x4702, lo: 0xbe, hi: 0xbe}, + {value: 0x46f4, lo: 0xbf, hi: 0xbf}, + // Block 0x88, offset 0x29f + {value: 0x0000, lo: 0x01}, + {value: 0x4710, lo: 0x80, hi: 0x80}, + // Block 0x89, offset 0x2a1 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x82, hi: 0x84}, + // Block 0x8a, offset 0x2a3 + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0x80, hi: 0x86}, + {value: 0x8132, lo: 0x88, hi: 0x98}, + {value: 0x8132, lo: 0x9b, hi: 0xa1}, + {value: 0x8132, lo: 0xa3, hi: 0xa4}, + {value: 0x8132, lo: 0xa6, hi: 0xaa}, + // Block 0x8b, offset 0x2a9 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x90, hi: 0x96}, + // Block 0x8c, offset 0x2ab + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x84, hi: 0x89}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x8d, offset 0x2ae + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x93, hi: 0x93}, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfkcTrie. Total size: 16994 bytes (16.60 KiB). Checksum: 146925fc21092b17. +type nfkcTrie struct{} + +func newNfkcTrie(i int) *nfkcTrie { + return &nfkcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 90: + return uint16(nfkcValues[n<<6+uint32(b)]) + default: + n -= 90 + return uint16(nfkcSparse.lookup(n, b)) + } +} + +// nfkcValues: 92 blocks, 5888 entries, 11776 bytes +// The third block is the zero block. +var nfkcValues = [5888]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x471e, 0xc3: 0x2f79, 0xc4: 0x472d, 0xc5: 0x4732, + 0xc6: 0xa000, 0xc7: 0x473c, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x4741, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x4755, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x475f, 0xd5: 0x4764, 0xd6: 0x4773, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x47a5, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x47af, 0xe3: 0x3285, + 0xe4: 0x47be, 0xe5: 0x47c3, 0xe6: 0xa000, 0xe7: 0x47cd, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x47d2, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x47e6, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x47f0, 0xf5: 0x47f5, + 0xf6: 0x4804, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x4836, 0xfd: 0x3550, 0xff: 0x3569, + // Block 0x4, offset 0x100 + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x4723, 0x103: 0x47b4, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6, + 0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5, + 0x112: 0x4746, 0x113: 0x47d7, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302, + 0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339, + 0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352, + 0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e, + 0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6, + 0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0, + 0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc, + 0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac, + // Block 0x5, offset 0x140 + 0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118, + 0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c, + 0x14c: 0x4769, 0x14d: 0x47fa, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c, + 0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x478c, 0x15b: 0x481d, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x4791, 0x161: 0x4822, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x479b, 0x169: 0x482c, + 0x16a: 0x47a0, 0x16b: 0x4831, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2, + 0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528, + 0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267, + 0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7, + // Block 0x6, offset 0x180 + 0x184: 0x2dee, 0x185: 0x2df4, + 0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a, + 0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140, + 0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8, + 0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50, + 0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5, + 0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf, + 0x1aa: 0x4782, 0x1ab: 0x4813, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd, + 0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334, + 0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46, + 0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316, + 0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac, + 0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479, + 0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6, + 0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5, + 0x1de: 0x305a, 0x1df: 0x3366, + 0x1e6: 0x4728, 0x1e7: 0x47b9, 0x1e8: 0x4750, 0x1e9: 0x47e1, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x476e, 0x1ef: 0x47ff, + 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, + // Block 0x8, offset 0x200 + 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, + 0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932, + 0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932, + 0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d, + 0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d, + 0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d, + 0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d, + 0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d, + 0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d, + 0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132, + // Block 0x9, offset 0x240 + 0x240: 0x4a44, 0x241: 0x4a49, 0x242: 0x9932, 0x243: 0x4a4e, 0x244: 0x4a53, 0x245: 0x9936, + 0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132, + 0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132, + 0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132, + 0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135, + 0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132, + 0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132, + 0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132, + 0x274: 0x0170, + 0x27a: 0x42a5, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x425a, 0x285: 0x4511, + 0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625, + 0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x4894, 0x2ad: 0x3697, 0x2ae: 0x48be, 0x2af: 0x36a9, + 0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c1: 0xa000, 0x2c5: 0xa000, + 0x2c9: 0xa000, 0x2ca: 0x48d6, 0x2cb: 0x48f4, + 0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x490c, 0x2d0: 0x01be, 0x2d1: 0x01d0, + 0x2d2: 0x01ac, 0x2d3: 0x43a2, 0x2d4: 0x43a8, 0x2d5: 0x01fa, 0x2d6: 0x01e8, + 0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7, + 0x2f9: 0x01a6, + // Block 0xc, offset 0x300 + 0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b, + 0x306: 0xa000, 0x307: 0x3709, + 0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000, + 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000, + 0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000, + 0x31e: 0xa000, 0x323: 0xa000, + 0x327: 0xa000, + 0x32b: 0xa000, 0x32d: 0xa000, + 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000, + 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000, + 0x33e: 0xa000, + // Block 0xd, offset 0x340 + 0x341: 0x3733, 0x342: 0x37b7, + 0x350: 0x370f, 0x351: 0x3793, + 0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab, + 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd, + 0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf, + 0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000, + 0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed, + 0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805, + 0x378: 0x3787, 0x379: 0x380b, + // Block 0xe, offset 0x380 + 0x387: 0x1d61, + 0x391: 0x812d, + 0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132, + 0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132, + 0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d, + 0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132, + 0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132, + 0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a, + 0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f, + 0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112, + // Block 0xf, offset 0x3c0 + 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116, + 0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c, + 0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132, + 0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132, + 0x3de: 0x8132, 0x3df: 0x812d, + 0x3f0: 0x811e, 0x3f5: 0x1d84, + 0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a, + // Block 0x10, offset 0x400 + 0x405: 0xa000, + 0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000, + 0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000, + 0x412: 0x2d4e, + 0x434: 0x8102, 0x435: 0x9900, + 0x43a: 0xa000, 0x43b: 0x2d56, + 0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000, + // Block 0x11, offset 0x440 + 0x440: 0x0069, 0x441: 0x006b, 0x442: 0x006f, 0x443: 0x0083, 0x444: 0x00f5, 0x445: 0x00f8, + 0x446: 0x0413, 0x447: 0x0085, 0x448: 0x0089, 0x449: 0x008b, 0x44a: 0x0104, 0x44b: 0x0107, + 0x44c: 0x010a, 0x44d: 0x008f, 0x44f: 0x0097, 0x450: 0x009b, 0x451: 0x00e0, + 0x452: 0x009f, 0x453: 0x00fe, 0x454: 0x0417, 0x455: 0x041b, 0x456: 0x00a1, 0x457: 0x00a9, + 0x458: 0x00ab, 0x459: 0x0423, 0x45a: 0x012b, 0x45b: 0x00ad, 0x45c: 0x0427, 0x45d: 0x01be, + 0x45e: 0x01c1, 0x45f: 0x01c4, 0x460: 0x01fa, 0x461: 0x01fd, 0x462: 0x0093, 0x463: 0x00a5, + 0x464: 0x00ab, 0x465: 0x00ad, 0x466: 0x01be, 0x467: 0x01c1, 0x468: 0x01eb, 0x469: 0x01fa, + 0x46a: 0x01fd, + 0x478: 0x020c, + // Block 0x12, offset 0x480 + 0x49b: 0x00fb, 0x49c: 0x0087, 0x49d: 0x0101, + 0x49e: 0x00d4, 0x49f: 0x010a, 0x4a0: 0x008d, 0x4a1: 0x010d, 0x4a2: 0x0110, 0x4a3: 0x0116, + 0x4a4: 0x011c, 0x4a5: 0x011f, 0x4a6: 0x0122, 0x4a7: 0x042b, 0x4a8: 0x016a, 0x4a9: 0x0128, + 0x4aa: 0x042f, 0x4ab: 0x016d, 0x4ac: 0x0131, 0x4ad: 0x012e, 0x4ae: 0x0134, 0x4af: 0x0137, + 0x4b0: 0x013a, 0x4b1: 0x013d, 0x4b2: 0x0140, 0x4b3: 0x014c, 0x4b4: 0x014f, 0x4b5: 0x00ec, + 0x4b6: 0x0152, 0x4b7: 0x0155, 0x4b8: 0x041f, 0x4b9: 0x0158, 0x4ba: 0x015b, 0x4bb: 0x00b5, + 0x4bc: 0x015e, 0x4bd: 0x0161, 0x4be: 0x0164, 0x4bf: 0x01d0, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x2f97, 0x4c1: 0x32a3, 0x4c2: 0x2fa1, 0x4c3: 0x32ad, 0x4c4: 0x2fa6, 0x4c5: 0x32b2, + 0x4c6: 0x2fab, 0x4c7: 0x32b7, 0x4c8: 0x38cc, 0x4c9: 0x3a5b, 0x4ca: 0x2fc4, 0x4cb: 0x32d0, + 0x4cc: 0x2fce, 0x4cd: 0x32da, 0x4ce: 0x2fdd, 0x4cf: 0x32e9, 0x4d0: 0x2fd3, 0x4d1: 0x32df, + 0x4d2: 0x2fd8, 0x4d3: 0x32e4, 0x4d4: 0x38ef, 0x4d5: 0x3a7e, 0x4d6: 0x38f6, 0x4d7: 0x3a85, + 0x4d8: 0x3019, 0x4d9: 0x3325, 0x4da: 0x301e, 0x4db: 0x332a, 0x4dc: 0x3904, 0x4dd: 0x3a93, + 0x4de: 0x3023, 0x4df: 0x332f, 0x4e0: 0x3032, 0x4e1: 0x333e, 0x4e2: 0x3050, 0x4e3: 0x335c, + 0x4e4: 0x305f, 0x4e5: 0x336b, 0x4e6: 0x3055, 0x4e7: 0x3361, 0x4e8: 0x3064, 0x4e9: 0x3370, + 0x4ea: 0x3069, 0x4eb: 0x3375, 0x4ec: 0x30af, 0x4ed: 0x33bb, 0x4ee: 0x390b, 0x4ef: 0x3a9a, + 0x4f0: 0x30b9, 0x4f1: 0x33ca, 0x4f2: 0x30c3, 0x4f3: 0x33d4, 0x4f4: 0x30cd, 0x4f5: 0x33de, + 0x4f6: 0x475a, 0x4f7: 0x47eb, 0x4f8: 0x3912, 0x4f9: 0x3aa1, 0x4fa: 0x30e6, 0x4fb: 0x33f7, + 0x4fc: 0x30e1, 0x4fd: 0x33f2, 0x4fe: 0x30eb, 0x4ff: 0x33fc, + // Block 0x14, offset 0x500 + 0x500: 0x30f0, 0x501: 0x3401, 0x502: 0x30f5, 0x503: 0x3406, 0x504: 0x3109, 0x505: 0x341a, + 0x506: 0x3113, 0x507: 0x3424, 0x508: 0x3122, 0x509: 0x3433, 0x50a: 0x311d, 0x50b: 0x342e, + 0x50c: 0x3935, 0x50d: 0x3ac4, 0x50e: 0x3943, 0x50f: 0x3ad2, 0x510: 0x394a, 0x511: 0x3ad9, + 0x512: 0x3951, 0x513: 0x3ae0, 0x514: 0x314f, 0x515: 0x3460, 0x516: 0x3154, 0x517: 0x3465, + 0x518: 0x315e, 0x519: 0x346f, 0x51a: 0x4787, 0x51b: 0x4818, 0x51c: 0x3997, 0x51d: 0x3b26, + 0x51e: 0x3177, 0x51f: 0x3488, 0x520: 0x3181, 0x521: 0x3492, 0x522: 0x4796, 0x523: 0x4827, + 0x524: 0x399e, 0x525: 0x3b2d, 0x526: 0x39a5, 0x527: 0x3b34, 0x528: 0x39ac, 0x529: 0x3b3b, + 0x52a: 0x3190, 0x52b: 0x34a1, 0x52c: 0x319a, 0x52d: 0x34b0, 0x52e: 0x31ae, 0x52f: 0x34c4, + 0x530: 0x31a9, 0x531: 0x34bf, 0x532: 0x31ea, 0x533: 0x3500, 0x534: 0x31f9, 0x535: 0x350f, + 0x536: 0x31f4, 0x537: 0x350a, 0x538: 0x39b3, 0x539: 0x3b42, 0x53a: 0x39ba, 0x53b: 0x3b49, + 0x53c: 0x31fe, 0x53d: 0x3514, 0x53e: 0x3203, 0x53f: 0x3519, + // Block 0x15, offset 0x540 + 0x540: 0x3208, 0x541: 0x351e, 0x542: 0x320d, 0x543: 0x3523, 0x544: 0x321c, 0x545: 0x3532, + 0x546: 0x3217, 0x547: 0x352d, 0x548: 0x3221, 0x549: 0x353c, 0x54a: 0x3226, 0x54b: 0x3541, + 0x54c: 0x322b, 0x54d: 0x3546, 0x54e: 0x3249, 0x54f: 0x3564, 0x550: 0x3262, 0x551: 0x3582, + 0x552: 0x3271, 0x553: 0x3591, 0x554: 0x3276, 0x555: 0x3596, 0x556: 0x337a, 0x557: 0x34a6, + 0x558: 0x3537, 0x559: 0x3573, 0x55a: 0x1be0, 0x55b: 0x42d7, + 0x560: 0x4737, 0x561: 0x47c8, 0x562: 0x2f83, 0x563: 0x328f, + 0x564: 0x3878, 0x565: 0x3a07, 0x566: 0x3871, 0x567: 0x3a00, 0x568: 0x3886, 0x569: 0x3a15, + 0x56a: 0x387f, 0x56b: 0x3a0e, 0x56c: 0x38be, 0x56d: 0x3a4d, 0x56e: 0x3894, 0x56f: 0x3a23, + 0x570: 0x388d, 0x571: 0x3a1c, 0x572: 0x38a2, 0x573: 0x3a31, 0x574: 0x389b, 0x575: 0x3a2a, + 0x576: 0x38c5, 0x577: 0x3a54, 0x578: 0x474b, 0x579: 0x47dc, 0x57a: 0x3000, 0x57b: 0x330c, + 0x57c: 0x2fec, 0x57d: 0x32f8, 0x57e: 0x38da, 0x57f: 0x3a69, + // Block 0x16, offset 0x580 + 0x580: 0x38d3, 0x581: 0x3a62, 0x582: 0x38e8, 0x583: 0x3a77, 0x584: 0x38e1, 0x585: 0x3a70, + 0x586: 0x38fd, 0x587: 0x3a8c, 0x588: 0x3091, 0x589: 0x339d, 0x58a: 0x30a5, 0x58b: 0x33b1, + 0x58c: 0x477d, 0x58d: 0x480e, 0x58e: 0x3136, 0x58f: 0x3447, 0x590: 0x3920, 0x591: 0x3aaf, + 0x592: 0x3919, 0x593: 0x3aa8, 0x594: 0x392e, 0x595: 0x3abd, 0x596: 0x3927, 0x597: 0x3ab6, + 0x598: 0x3989, 0x599: 0x3b18, 0x59a: 0x396d, 0x59b: 0x3afc, 0x59c: 0x3966, 0x59d: 0x3af5, + 0x59e: 0x397b, 0x59f: 0x3b0a, 0x5a0: 0x3974, 0x5a1: 0x3b03, 0x5a2: 0x3982, 0x5a3: 0x3b11, + 0x5a4: 0x31e5, 0x5a5: 0x34fb, 0x5a6: 0x31c7, 0x5a7: 0x34dd, 0x5a8: 0x39e4, 0x5a9: 0x3b73, + 0x5aa: 0x39dd, 0x5ab: 0x3b6c, 0x5ac: 0x39f2, 0x5ad: 0x3b81, 0x5ae: 0x39eb, 0x5af: 0x3b7a, + 0x5b0: 0x39f9, 0x5b1: 0x3b88, 0x5b2: 0x3230, 0x5b3: 0x354b, 0x5b4: 0x3258, 0x5b5: 0x3578, + 0x5b6: 0x3253, 0x5b7: 0x356e, 0x5b8: 0x323f, 0x5b9: 0x355a, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x489a, 0x5c1: 0x48a0, 0x5c2: 0x49b4, 0x5c3: 0x49cc, 0x5c4: 0x49bc, 0x5c5: 0x49d4, + 0x5c6: 0x49c4, 0x5c7: 0x49dc, 0x5c8: 0x4840, 0x5c9: 0x4846, 0x5ca: 0x4924, 0x5cb: 0x493c, + 0x5cc: 0x492c, 0x5cd: 0x4944, 0x5ce: 0x4934, 0x5cf: 0x494c, 0x5d0: 0x48ac, 0x5d1: 0x48b2, + 0x5d2: 0x3db8, 0x5d3: 0x3dc8, 0x5d4: 0x3dc0, 0x5d5: 0x3dd0, + 0x5d8: 0x484c, 0x5d9: 0x4852, 0x5da: 0x3ce8, 0x5db: 0x3cf8, 0x5dc: 0x3cf0, 0x5dd: 0x3d00, + 0x5e0: 0x48c4, 0x5e1: 0x48ca, 0x5e2: 0x49e4, 0x5e3: 0x49fc, + 0x5e4: 0x49ec, 0x5e5: 0x4a04, 0x5e6: 0x49f4, 0x5e7: 0x4a0c, 0x5e8: 0x4858, 0x5e9: 0x485e, + 0x5ea: 0x4954, 0x5eb: 0x496c, 0x5ec: 0x495c, 0x5ed: 0x4974, 0x5ee: 0x4964, 0x5ef: 0x497c, + 0x5f0: 0x48dc, 0x5f1: 0x48e2, 0x5f2: 0x3e18, 0x5f3: 0x3e30, 0x5f4: 0x3e20, 0x5f5: 0x3e38, + 0x5f6: 0x3e28, 0x5f7: 0x3e40, 0x5f8: 0x4864, 0x5f9: 0x486a, 0x5fa: 0x3d18, 0x5fb: 0x3d30, + 0x5fc: 0x3d20, 0x5fd: 0x3d38, 0x5fe: 0x3d28, 0x5ff: 0x3d40, + // Block 0x18, offset 0x600 + 0x600: 0x48e8, 0x601: 0x48ee, 0x602: 0x3e48, 0x603: 0x3e58, 0x604: 0x3e50, 0x605: 0x3e60, + 0x608: 0x4870, 0x609: 0x4876, 0x60a: 0x3d48, 0x60b: 0x3d58, + 0x60c: 0x3d50, 0x60d: 0x3d60, 0x610: 0x48fa, 0x611: 0x4900, + 0x612: 0x3e80, 0x613: 0x3e98, 0x614: 0x3e88, 0x615: 0x3ea0, 0x616: 0x3e90, 0x617: 0x3ea8, + 0x619: 0x487c, 0x61b: 0x3d68, 0x61d: 0x3d70, + 0x61f: 0x3d78, 0x620: 0x4912, 0x621: 0x4918, 0x622: 0x4a14, 0x623: 0x4a2c, + 0x624: 0x4a1c, 0x625: 0x4a34, 0x626: 0x4a24, 0x627: 0x4a3c, 0x628: 0x4882, 0x629: 0x4888, + 0x62a: 0x4984, 0x62b: 0x499c, 0x62c: 0x498c, 0x62d: 0x49a4, 0x62e: 0x4994, 0x62f: 0x49ac, + 0x630: 0x488e, 0x631: 0x43b4, 0x632: 0x3691, 0x633: 0x43ba, 0x634: 0x48b8, 0x635: 0x43c0, + 0x636: 0x36a3, 0x637: 0x43c6, 0x638: 0x36c1, 0x639: 0x43cc, 0x63a: 0x36d9, 0x63b: 0x43d2, + 0x63c: 0x4906, 0x63d: 0x43d8, + // Block 0x19, offset 0x640 + 0x640: 0x3da0, 0x641: 0x3da8, 0x642: 0x4184, 0x643: 0x41a2, 0x644: 0x418e, 0x645: 0x41ac, + 0x646: 0x4198, 0x647: 0x41b6, 0x648: 0x3cd8, 0x649: 0x3ce0, 0x64a: 0x40d0, 0x64b: 0x40ee, + 0x64c: 0x40da, 0x64d: 0x40f8, 0x64e: 0x40e4, 0x64f: 0x4102, 0x650: 0x3de8, 0x651: 0x3df0, + 0x652: 0x41c0, 0x653: 0x41de, 0x654: 0x41ca, 0x655: 0x41e8, 0x656: 0x41d4, 0x657: 0x41f2, + 0x658: 0x3d08, 0x659: 0x3d10, 0x65a: 0x410c, 0x65b: 0x412a, 0x65c: 0x4116, 0x65d: 0x4134, + 0x65e: 0x4120, 0x65f: 0x413e, 0x660: 0x3ec0, 0x661: 0x3ec8, 0x662: 0x41fc, 0x663: 0x421a, + 0x664: 0x4206, 0x665: 0x4224, 0x666: 0x4210, 0x667: 0x422e, 0x668: 0x3d80, 0x669: 0x3d88, + 0x66a: 0x4148, 0x66b: 0x4166, 0x66c: 0x4152, 0x66d: 0x4170, 0x66e: 0x415c, 0x66f: 0x417a, + 0x670: 0x3685, 0x671: 0x367f, 0x672: 0x3d90, 0x673: 0x368b, 0x674: 0x3d98, + 0x676: 0x48a6, 0x677: 0x3db0, 0x678: 0x35f5, 0x679: 0x35ef, 0x67a: 0x35e3, 0x67b: 0x4384, + 0x67c: 0x35fb, 0x67d: 0x4287, 0x67e: 0x01d3, 0x67f: 0x4287, + // Block 0x1a, offset 0x680 + 0x680: 0x42a0, 0x681: 0x4518, 0x682: 0x3dd8, 0x683: 0x369d, 0x684: 0x3de0, + 0x686: 0x48d0, 0x687: 0x3df8, 0x688: 0x3601, 0x689: 0x438a, 0x68a: 0x360d, 0x68b: 0x4390, + 0x68c: 0x3619, 0x68d: 0x451f, 0x68e: 0x4526, 0x68f: 0x452d, 0x690: 0x36b5, 0x691: 0x36af, + 0x692: 0x3e00, 0x693: 0x457a, 0x696: 0x36bb, 0x697: 0x3e10, + 0x698: 0x3631, 0x699: 0x362b, 0x69a: 0x361f, 0x69b: 0x4396, 0x69d: 0x4534, + 0x69e: 0x453b, 0x69f: 0x4542, 0x6a0: 0x36eb, 0x6a1: 0x36e5, 0x6a2: 0x3e68, 0x6a3: 0x4582, + 0x6a4: 0x36cd, 0x6a5: 0x36d3, 0x6a6: 0x36f1, 0x6a7: 0x3e78, 0x6a8: 0x3661, 0x6a9: 0x365b, + 0x6aa: 0x364f, 0x6ab: 0x43a2, 0x6ac: 0x3649, 0x6ad: 0x450a, 0x6ae: 0x4511, 0x6af: 0x0081, + 0x6b2: 0x3eb0, 0x6b3: 0x36f7, 0x6b4: 0x3eb8, + 0x6b6: 0x491e, 0x6b7: 0x3ed0, 0x6b8: 0x363d, 0x6b9: 0x439c, 0x6ba: 0x366d, 0x6bb: 0x43ae, + 0x6bc: 0x3679, 0x6bd: 0x425a, 0x6be: 0x428c, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x1bd8, 0x6c1: 0x1bdc, 0x6c2: 0x0047, 0x6c3: 0x1c54, 0x6c5: 0x1be8, + 0x6c6: 0x1bec, 0x6c7: 0x00e9, 0x6c9: 0x1c58, 0x6ca: 0x008f, 0x6cb: 0x0051, + 0x6cc: 0x0051, 0x6cd: 0x0051, 0x6ce: 0x0091, 0x6cf: 0x00da, 0x6d0: 0x0053, 0x6d1: 0x0053, + 0x6d2: 0x0059, 0x6d3: 0x0099, 0x6d5: 0x005d, 0x6d6: 0x198d, + 0x6d9: 0x0061, 0x6da: 0x0063, 0x6db: 0x0065, 0x6dc: 0x0065, 0x6dd: 0x0065, + 0x6e0: 0x199f, 0x6e1: 0x1bc8, 0x6e2: 0x19a8, + 0x6e4: 0x0075, 0x6e6: 0x01b8, 0x6e8: 0x0075, + 0x6ea: 0x0057, 0x6eb: 0x42d2, 0x6ec: 0x0045, 0x6ed: 0x0047, 0x6ef: 0x008b, + 0x6f0: 0x004b, 0x6f1: 0x004d, 0x6f3: 0x005b, 0x6f4: 0x009f, 0x6f5: 0x0215, + 0x6f6: 0x0218, 0x6f7: 0x021b, 0x6f8: 0x021e, 0x6f9: 0x0093, 0x6fb: 0x1b98, + 0x6fc: 0x01e8, 0x6fd: 0x01c1, 0x6fe: 0x0179, 0x6ff: 0x01a0, + // Block 0x1c, offset 0x700 + 0x700: 0x0463, 0x705: 0x0049, + 0x706: 0x0089, 0x707: 0x008b, 0x708: 0x0093, 0x709: 0x0095, + 0x710: 0x222e, 0x711: 0x223a, + 0x712: 0x22ee, 0x713: 0x2216, 0x714: 0x229a, 0x715: 0x2222, 0x716: 0x22a0, 0x717: 0x22b8, + 0x718: 0x22c4, 0x719: 0x2228, 0x71a: 0x22ca, 0x71b: 0x2234, 0x71c: 0x22be, 0x71d: 0x22d0, + 0x71e: 0x22d6, 0x71f: 0x1cbc, 0x720: 0x0053, 0x721: 0x195a, 0x722: 0x1ba4, 0x723: 0x1963, + 0x724: 0x006d, 0x725: 0x19ab, 0x726: 0x1bd0, 0x727: 0x1d48, 0x728: 0x1966, 0x729: 0x0071, + 0x72a: 0x19b7, 0x72b: 0x1bd4, 0x72c: 0x0059, 0x72d: 0x0047, 0x72e: 0x0049, 0x72f: 0x005b, + 0x730: 0x0093, 0x731: 0x19e4, 0x732: 0x1c18, 0x733: 0x19ed, 0x734: 0x00ad, 0x735: 0x1a62, + 0x736: 0x1c4c, 0x737: 0x1d5c, 0x738: 0x19f0, 0x739: 0x00b1, 0x73a: 0x1a65, 0x73b: 0x1c50, + 0x73c: 0x0099, 0x73d: 0x0087, 0x73e: 0x0089, 0x73f: 0x009b, + // Block 0x1d, offset 0x740 + 0x741: 0x3c06, 0x743: 0xa000, 0x744: 0x3c0d, 0x745: 0xa000, + 0x747: 0x3c14, 0x748: 0xa000, 0x749: 0x3c1b, + 0x74d: 0xa000, + 0x760: 0x2f65, 0x761: 0xa000, 0x762: 0x3c29, + 0x764: 0xa000, 0x765: 0xa000, + 0x76d: 0x3c22, 0x76e: 0x2f60, 0x76f: 0x2f6a, + 0x770: 0x3c30, 0x771: 0x3c37, 0x772: 0xa000, 0x773: 0xa000, 0x774: 0x3c3e, 0x775: 0x3c45, + 0x776: 0xa000, 0x777: 0xa000, 0x778: 0x3c4c, 0x779: 0x3c53, 0x77a: 0xa000, 0x77b: 0xa000, + 0x77c: 0xa000, 0x77d: 0xa000, + // Block 0x1e, offset 0x780 + 0x780: 0x3c5a, 0x781: 0x3c61, 0x782: 0xa000, 0x783: 0xa000, 0x784: 0x3c76, 0x785: 0x3c7d, + 0x786: 0xa000, 0x787: 0xa000, 0x788: 0x3c84, 0x789: 0x3c8b, + 0x791: 0xa000, + 0x792: 0xa000, + 0x7a2: 0xa000, + 0x7a8: 0xa000, 0x7a9: 0xa000, + 0x7ab: 0xa000, 0x7ac: 0x3ca0, 0x7ad: 0x3ca7, 0x7ae: 0x3cae, 0x7af: 0x3cb5, + 0x7b2: 0xa000, 0x7b3: 0xa000, 0x7b4: 0xa000, 0x7b5: 0xa000, + // Block 0x1f, offset 0x7c0 + 0x7e0: 0x0023, 0x7e1: 0x0025, 0x7e2: 0x0027, 0x7e3: 0x0029, + 0x7e4: 0x002b, 0x7e5: 0x002d, 0x7e6: 0x002f, 0x7e7: 0x0031, 0x7e8: 0x0033, 0x7e9: 0x1882, + 0x7ea: 0x1885, 0x7eb: 0x1888, 0x7ec: 0x188b, 0x7ed: 0x188e, 0x7ee: 0x1891, 0x7ef: 0x1894, + 0x7f0: 0x1897, 0x7f1: 0x189a, 0x7f2: 0x189d, 0x7f3: 0x18a6, 0x7f4: 0x1a68, 0x7f5: 0x1a6c, + 0x7f6: 0x1a70, 0x7f7: 0x1a74, 0x7f8: 0x1a78, 0x7f9: 0x1a7c, 0x7fa: 0x1a80, 0x7fb: 0x1a84, + 0x7fc: 0x1a88, 0x7fd: 0x1c80, 0x7fe: 0x1c85, 0x7ff: 0x1c8a, + // Block 0x20, offset 0x800 + 0x800: 0x1c8f, 0x801: 0x1c94, 0x802: 0x1c99, 0x803: 0x1c9e, 0x804: 0x1ca3, 0x805: 0x1ca8, + 0x806: 0x1cad, 0x807: 0x1cb2, 0x808: 0x187f, 0x809: 0x18a3, 0x80a: 0x18c7, 0x80b: 0x18eb, + 0x80c: 0x190f, 0x80d: 0x1918, 0x80e: 0x191e, 0x80f: 0x1924, 0x810: 0x192a, 0x811: 0x1b60, + 0x812: 0x1b64, 0x813: 0x1b68, 0x814: 0x1b6c, 0x815: 0x1b70, 0x816: 0x1b74, 0x817: 0x1b78, + 0x818: 0x1b7c, 0x819: 0x1b80, 0x81a: 0x1b84, 0x81b: 0x1b88, 0x81c: 0x1af4, 0x81d: 0x1af8, + 0x81e: 0x1afc, 0x81f: 0x1b00, 0x820: 0x1b04, 0x821: 0x1b08, 0x822: 0x1b0c, 0x823: 0x1b10, + 0x824: 0x1b14, 0x825: 0x1b18, 0x826: 0x1b1c, 0x827: 0x1b20, 0x828: 0x1b24, 0x829: 0x1b28, + 0x82a: 0x1b2c, 0x82b: 0x1b30, 0x82c: 0x1b34, 0x82d: 0x1b38, 0x82e: 0x1b3c, 0x82f: 0x1b40, + 0x830: 0x1b44, 0x831: 0x1b48, 0x832: 0x1b4c, 0x833: 0x1b50, 0x834: 0x1b54, 0x835: 0x1b58, + 0x836: 0x0043, 0x837: 0x0045, 0x838: 0x0047, 0x839: 0x0049, 0x83a: 0x004b, 0x83b: 0x004d, + 0x83c: 0x004f, 0x83d: 0x0051, 0x83e: 0x0053, 0x83f: 0x0055, + // Block 0x21, offset 0x840 + 0x840: 0x06bf, 0x841: 0x06e3, 0x842: 0x06ef, 0x843: 0x06ff, 0x844: 0x0707, 0x845: 0x0713, + 0x846: 0x071b, 0x847: 0x0723, 0x848: 0x072f, 0x849: 0x0783, 0x84a: 0x079b, 0x84b: 0x07ab, + 0x84c: 0x07bb, 0x84d: 0x07cb, 0x84e: 0x07db, 0x84f: 0x07fb, 0x850: 0x07ff, 0x851: 0x0803, + 0x852: 0x0837, 0x853: 0x085f, 0x854: 0x086f, 0x855: 0x0877, 0x856: 0x087b, 0x857: 0x0887, + 0x858: 0x08a3, 0x859: 0x08a7, 0x85a: 0x08bf, 0x85b: 0x08c3, 0x85c: 0x08cb, 0x85d: 0x08db, + 0x85e: 0x0977, 0x85f: 0x098b, 0x860: 0x09cb, 0x861: 0x09df, 0x862: 0x09e7, 0x863: 0x09eb, + 0x864: 0x09fb, 0x865: 0x0a17, 0x866: 0x0a43, 0x867: 0x0a4f, 0x868: 0x0a6f, 0x869: 0x0a7b, + 0x86a: 0x0a7f, 0x86b: 0x0a83, 0x86c: 0x0a9b, 0x86d: 0x0a9f, 0x86e: 0x0acb, 0x86f: 0x0ad7, + 0x870: 0x0adf, 0x871: 0x0ae7, 0x872: 0x0af7, 0x873: 0x0aff, 0x874: 0x0b07, 0x875: 0x0b33, + 0x876: 0x0b37, 0x877: 0x0b3f, 0x878: 0x0b43, 0x879: 0x0b4b, 0x87a: 0x0b53, 0x87b: 0x0b63, + 0x87c: 0x0b7f, 0x87d: 0x0bf7, 0x87e: 0x0c0b, 0x87f: 0x0c0f, + // Block 0x22, offset 0x880 + 0x880: 0x0c8f, 0x881: 0x0c93, 0x882: 0x0ca7, 0x883: 0x0cab, 0x884: 0x0cb3, 0x885: 0x0cbb, + 0x886: 0x0cc3, 0x887: 0x0ccf, 0x888: 0x0cf7, 0x889: 0x0d07, 0x88a: 0x0d1b, 0x88b: 0x0d8b, + 0x88c: 0x0d97, 0x88d: 0x0da7, 0x88e: 0x0db3, 0x88f: 0x0dbf, 0x890: 0x0dc7, 0x891: 0x0dcb, + 0x892: 0x0dcf, 0x893: 0x0dd3, 0x894: 0x0dd7, 0x895: 0x0e8f, 0x896: 0x0ed7, 0x897: 0x0ee3, + 0x898: 0x0ee7, 0x899: 0x0eeb, 0x89a: 0x0eef, 0x89b: 0x0ef7, 0x89c: 0x0efb, 0x89d: 0x0f0f, + 0x89e: 0x0f2b, 0x89f: 0x0f33, 0x8a0: 0x0f73, 0x8a1: 0x0f77, 0x8a2: 0x0f7f, 0x8a3: 0x0f83, + 0x8a4: 0x0f8b, 0x8a5: 0x0f8f, 0x8a6: 0x0fb3, 0x8a7: 0x0fb7, 0x8a8: 0x0fd3, 0x8a9: 0x0fd7, + 0x8aa: 0x0fdb, 0x8ab: 0x0fdf, 0x8ac: 0x0ff3, 0x8ad: 0x1017, 0x8ae: 0x101b, 0x8af: 0x101f, + 0x8b0: 0x1043, 0x8b1: 0x1083, 0x8b2: 0x1087, 0x8b3: 0x10a7, 0x8b4: 0x10b7, 0x8b5: 0x10bf, + 0x8b6: 0x10df, 0x8b7: 0x1103, 0x8b8: 0x1147, 0x8b9: 0x114f, 0x8ba: 0x1163, 0x8bb: 0x116f, + 0x8bc: 0x1177, 0x8bd: 0x117f, 0x8be: 0x1183, 0x8bf: 0x1187, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x119f, 0x8c1: 0x11a3, 0x8c2: 0x11bf, 0x8c3: 0x11c7, 0x8c4: 0x11cf, 0x8c5: 0x11d3, + 0x8c6: 0x11df, 0x8c7: 0x11e7, 0x8c8: 0x11eb, 0x8c9: 0x11ef, 0x8ca: 0x11f7, 0x8cb: 0x11fb, + 0x8cc: 0x129b, 0x8cd: 0x12af, 0x8ce: 0x12e3, 0x8cf: 0x12e7, 0x8d0: 0x12ef, 0x8d1: 0x131b, + 0x8d2: 0x1323, 0x8d3: 0x132b, 0x8d4: 0x1333, 0x8d5: 0x136f, 0x8d6: 0x1373, 0x8d7: 0x137b, + 0x8d8: 0x137f, 0x8d9: 0x1383, 0x8da: 0x13af, 0x8db: 0x13b3, 0x8dc: 0x13bb, 0x8dd: 0x13cf, + 0x8de: 0x13d3, 0x8df: 0x13ef, 0x8e0: 0x13f7, 0x8e1: 0x13fb, 0x8e2: 0x141f, 0x8e3: 0x143f, + 0x8e4: 0x1453, 0x8e5: 0x1457, 0x8e6: 0x145f, 0x8e7: 0x148b, 0x8e8: 0x148f, 0x8e9: 0x149f, + 0x8ea: 0x14c3, 0x8eb: 0x14cf, 0x8ec: 0x14df, 0x8ed: 0x14f7, 0x8ee: 0x14ff, 0x8ef: 0x1503, + 0x8f0: 0x1507, 0x8f1: 0x150b, 0x8f2: 0x1517, 0x8f3: 0x151b, 0x8f4: 0x1523, 0x8f5: 0x153f, + 0x8f6: 0x1543, 0x8f7: 0x1547, 0x8f8: 0x155f, 0x8f9: 0x1563, 0x8fa: 0x156b, 0x8fb: 0x157f, + 0x8fc: 0x1583, 0x8fd: 0x1587, 0x8fe: 0x158f, 0x8ff: 0x1593, + // Block 0x24, offset 0x900 + 0x906: 0xa000, 0x90b: 0xa000, + 0x90c: 0x3f08, 0x90d: 0xa000, 0x90e: 0x3f10, 0x90f: 0xa000, 0x910: 0x3f18, 0x911: 0xa000, + 0x912: 0x3f20, 0x913: 0xa000, 0x914: 0x3f28, 0x915: 0xa000, 0x916: 0x3f30, 0x917: 0xa000, + 0x918: 0x3f38, 0x919: 0xa000, 0x91a: 0x3f40, 0x91b: 0xa000, 0x91c: 0x3f48, 0x91d: 0xa000, + 0x91e: 0x3f50, 0x91f: 0xa000, 0x920: 0x3f58, 0x921: 0xa000, 0x922: 0x3f60, + 0x924: 0xa000, 0x925: 0x3f68, 0x926: 0xa000, 0x927: 0x3f70, 0x928: 0xa000, 0x929: 0x3f78, + 0x92f: 0xa000, + 0x930: 0x3f80, 0x931: 0x3f88, 0x932: 0xa000, 0x933: 0x3f90, 0x934: 0x3f98, 0x935: 0xa000, + 0x936: 0x3fa0, 0x937: 0x3fa8, 0x938: 0xa000, 0x939: 0x3fb0, 0x93a: 0x3fb8, 0x93b: 0xa000, + 0x93c: 0x3fc0, 0x93d: 0x3fc8, + // Block 0x25, offset 0x940 + 0x954: 0x3f00, + 0x959: 0x9903, 0x95a: 0x9903, 0x95b: 0x4372, 0x95c: 0x4378, 0x95d: 0xa000, + 0x95e: 0x3fd0, 0x95f: 0x26b4, + 0x966: 0xa000, + 0x96b: 0xa000, 0x96c: 0x3fe0, 0x96d: 0xa000, 0x96e: 0x3fe8, 0x96f: 0xa000, + 0x970: 0x3ff0, 0x971: 0xa000, 0x972: 0x3ff8, 0x973: 0xa000, 0x974: 0x4000, 0x975: 0xa000, + 0x976: 0x4008, 0x977: 0xa000, 0x978: 0x4010, 0x979: 0xa000, 0x97a: 0x4018, 0x97b: 0xa000, + 0x97c: 0x4020, 0x97d: 0xa000, 0x97e: 0x4028, 0x97f: 0xa000, + // Block 0x26, offset 0x980 + 0x980: 0x4030, 0x981: 0xa000, 0x982: 0x4038, 0x984: 0xa000, 0x985: 0x4040, + 0x986: 0xa000, 0x987: 0x4048, 0x988: 0xa000, 0x989: 0x4050, + 0x98f: 0xa000, 0x990: 0x4058, 0x991: 0x4060, + 0x992: 0xa000, 0x993: 0x4068, 0x994: 0x4070, 0x995: 0xa000, 0x996: 0x4078, 0x997: 0x4080, + 0x998: 0xa000, 0x999: 0x4088, 0x99a: 0x4090, 0x99b: 0xa000, 0x99c: 0x4098, 0x99d: 0x40a0, + 0x9af: 0xa000, + 0x9b0: 0xa000, 0x9b1: 0xa000, 0x9b2: 0xa000, 0x9b4: 0x3fd8, + 0x9b7: 0x40a8, 0x9b8: 0x40b0, 0x9b9: 0x40b8, 0x9ba: 0x40c0, + 0x9bd: 0xa000, 0x9be: 0x40c8, 0x9bf: 0x26c9, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0367, 0x9c1: 0x032b, 0x9c2: 0x032f, 0x9c3: 0x0333, 0x9c4: 0x037b, 0x9c5: 0x0337, + 0x9c6: 0x033b, 0x9c7: 0x033f, 0x9c8: 0x0343, 0x9c9: 0x0347, 0x9ca: 0x034b, 0x9cb: 0x034f, + 0x9cc: 0x0353, 0x9cd: 0x0357, 0x9ce: 0x035b, 0x9cf: 0x42dc, 0x9d0: 0x42e1, 0x9d1: 0x42e6, + 0x9d2: 0x42eb, 0x9d3: 0x42f0, 0x9d4: 0x42f5, 0x9d5: 0x42fa, 0x9d6: 0x42ff, 0x9d7: 0x4304, + 0x9d8: 0x4309, 0x9d9: 0x430e, 0x9da: 0x4313, 0x9db: 0x4318, 0x9dc: 0x431d, 0x9dd: 0x4322, + 0x9de: 0x4327, 0x9df: 0x432c, 0x9e0: 0x4331, 0x9e1: 0x4336, 0x9e2: 0x433b, 0x9e3: 0x4340, + 0x9e4: 0x03c3, 0x9e5: 0x035f, 0x9e6: 0x0363, 0x9e7: 0x03e7, 0x9e8: 0x03eb, 0x9e9: 0x03ef, + 0x9ea: 0x03f3, 0x9eb: 0x03f7, 0x9ec: 0x03fb, 0x9ed: 0x03ff, 0x9ee: 0x036b, 0x9ef: 0x0403, + 0x9f0: 0x0407, 0x9f1: 0x036f, 0x9f2: 0x0373, 0x9f3: 0x0377, 0x9f4: 0x037f, 0x9f5: 0x0383, + 0x9f6: 0x0387, 0x9f7: 0x038b, 0x9f8: 0x038f, 0x9f9: 0x0393, 0x9fa: 0x0397, 0x9fb: 0x039b, + 0x9fc: 0x039f, 0x9fd: 0x03a3, 0x9fe: 0x03a7, 0x9ff: 0x03ab, + // Block 0x28, offset 0xa00 + 0xa00: 0x03af, 0xa01: 0x03b3, 0xa02: 0x040b, 0xa03: 0x040f, 0xa04: 0x03b7, 0xa05: 0x03bb, + 0xa06: 0x03bf, 0xa07: 0x03c7, 0xa08: 0x03cb, 0xa09: 0x03cf, 0xa0a: 0x03d3, 0xa0b: 0x03d7, + 0xa0c: 0x03db, 0xa0d: 0x03df, 0xa0e: 0x03e3, + 0xa12: 0x06bf, 0xa13: 0x071b, 0xa14: 0x06cb, 0xa15: 0x097b, 0xa16: 0x06cf, 0xa17: 0x06e7, + 0xa18: 0x06d3, 0xa19: 0x0f93, 0xa1a: 0x0707, 0xa1b: 0x06db, 0xa1c: 0x06c3, 0xa1d: 0x09ff, + 0xa1e: 0x098f, 0xa1f: 0x072f, + // Block 0x29, offset 0xa40 + 0xa40: 0x2054, 0xa41: 0x205a, 0xa42: 0x2060, 0xa43: 0x2066, 0xa44: 0x206c, 0xa45: 0x2072, + 0xa46: 0x2078, 0xa47: 0x207e, 0xa48: 0x2084, 0xa49: 0x208a, 0xa4a: 0x2090, 0xa4b: 0x2096, + 0xa4c: 0x209c, 0xa4d: 0x20a2, 0xa4e: 0x2726, 0xa4f: 0x272f, 0xa50: 0x2738, 0xa51: 0x2741, + 0xa52: 0x274a, 0xa53: 0x2753, 0xa54: 0x275c, 0xa55: 0x2765, 0xa56: 0x276e, 0xa57: 0x2780, + 0xa58: 0x2789, 0xa59: 0x2792, 0xa5a: 0x279b, 0xa5b: 0x27a4, 0xa5c: 0x2777, 0xa5d: 0x2bac, + 0xa5e: 0x2aed, 0xa60: 0x20a8, 0xa61: 0x20c0, 0xa62: 0x20b4, 0xa63: 0x2108, + 0xa64: 0x20c6, 0xa65: 0x20e4, 0xa66: 0x20ae, 0xa67: 0x20de, 0xa68: 0x20ba, 0xa69: 0x20f0, + 0xa6a: 0x2120, 0xa6b: 0x213e, 0xa6c: 0x2138, 0xa6d: 0x212c, 0xa6e: 0x217a, 0xa6f: 0x210e, + 0xa70: 0x211a, 0xa71: 0x2132, 0xa72: 0x2126, 0xa73: 0x2150, 0xa74: 0x20fc, 0xa75: 0x2144, + 0xa76: 0x216e, 0xa77: 0x2156, 0xa78: 0x20ea, 0xa79: 0x20cc, 0xa7a: 0x2102, 0xa7b: 0x2114, + 0xa7c: 0x214a, 0xa7d: 0x20d2, 0xa7e: 0x2174, 0xa7f: 0x20f6, + // Block 0x2a, offset 0xa80 + 0xa80: 0x215c, 0xa81: 0x20d8, 0xa82: 0x2162, 0xa83: 0x2168, 0xa84: 0x092f, 0xa85: 0x0b03, + 0xa86: 0x0ca7, 0xa87: 0x10c7, + 0xa90: 0x1bc4, 0xa91: 0x18a9, + 0xa92: 0x18ac, 0xa93: 0x18af, 0xa94: 0x18b2, 0xa95: 0x18b5, 0xa96: 0x18b8, 0xa97: 0x18bb, + 0xa98: 0x18be, 0xa99: 0x18c1, 0xa9a: 0x18ca, 0xa9b: 0x18cd, 0xa9c: 0x18d0, 0xa9d: 0x18d3, + 0xa9e: 0x18d6, 0xa9f: 0x18d9, 0xaa0: 0x0313, 0xaa1: 0x031b, 0xaa2: 0x031f, 0xaa3: 0x0327, + 0xaa4: 0x032b, 0xaa5: 0x032f, 0xaa6: 0x0337, 0xaa7: 0x033f, 0xaa8: 0x0343, 0xaa9: 0x034b, + 0xaaa: 0x034f, 0xaab: 0x0353, 0xaac: 0x0357, 0xaad: 0x035b, 0xaae: 0x2e18, 0xaaf: 0x2e20, + 0xab0: 0x2e28, 0xab1: 0x2e30, 0xab2: 0x2e38, 0xab3: 0x2e40, 0xab4: 0x2e48, 0xab5: 0x2e50, + 0xab6: 0x2e60, 0xab7: 0x2e68, 0xab8: 0x2e70, 0xab9: 0x2e78, 0xaba: 0x2e80, 0xabb: 0x2e88, + 0xabc: 0x2ed3, 0xabd: 0x2e9b, 0xabe: 0x2e58, + // Block 0x2b, offset 0xac0 + 0xac0: 0x06bf, 0xac1: 0x071b, 0xac2: 0x06cb, 0xac3: 0x097b, 0xac4: 0x071f, 0xac5: 0x07af, + 0xac6: 0x06c7, 0xac7: 0x07ab, 0xac8: 0x070b, 0xac9: 0x0887, 0xaca: 0x0d07, 0xacb: 0x0e8f, + 0xacc: 0x0dd7, 0xacd: 0x0d1b, 0xace: 0x145f, 0xacf: 0x098b, 0xad0: 0x0ccf, 0xad1: 0x0d4b, + 0xad2: 0x0d0b, 0xad3: 0x104b, 0xad4: 0x08fb, 0xad5: 0x0f03, 0xad6: 0x1387, 0xad7: 0x105f, + 0xad8: 0x0843, 0xad9: 0x108f, 0xada: 0x0f9b, 0xadb: 0x0a17, 0xadc: 0x140f, 0xadd: 0x077f, + 0xade: 0x08ab, 0xadf: 0x0df7, 0xae0: 0x1527, 0xae1: 0x0743, 0xae2: 0x07d3, 0xae3: 0x0d9b, + 0xae4: 0x06cf, 0xae5: 0x06e7, 0xae6: 0x06d3, 0xae7: 0x0adb, 0xae8: 0x08ef, 0xae9: 0x087f, + 0xaea: 0x0a57, 0xaeb: 0x0a4b, 0xaec: 0x0feb, 0xaed: 0x073f, 0xaee: 0x139b, 0xaef: 0x089b, + 0xaf0: 0x09f3, 0xaf1: 0x18dc, 0xaf2: 0x18df, 0xaf3: 0x18e2, 0xaf4: 0x18e5, 0xaf5: 0x18ee, + 0xaf6: 0x18f1, 0xaf7: 0x18f4, 0xaf8: 0x18f7, 0xaf9: 0x18fa, 0xafa: 0x18fd, 0xafb: 0x1900, + 0xafc: 0x1903, 0xafd: 0x1906, 0xafe: 0x1909, 0xaff: 0x1912, + // Block 0x2c, offset 0xb00 + 0xb00: 0x1cc6, 0xb01: 0x1cd5, 0xb02: 0x1ce4, 0xb03: 0x1cf3, 0xb04: 0x1d02, 0xb05: 0x1d11, + 0xb06: 0x1d20, 0xb07: 0x1d2f, 0xb08: 0x1d3e, 0xb09: 0x218c, 0xb0a: 0x219e, 0xb0b: 0x21b0, + 0xb0c: 0x1954, 0xb0d: 0x1c04, 0xb0e: 0x19d2, 0xb0f: 0x1ba8, 0xb10: 0x04cb, 0xb11: 0x04d3, + 0xb12: 0x04db, 0xb13: 0x04e3, 0xb14: 0x04eb, 0xb15: 0x04ef, 0xb16: 0x04f3, 0xb17: 0x04f7, + 0xb18: 0x04fb, 0xb19: 0x04ff, 0xb1a: 0x0503, 0xb1b: 0x0507, 0xb1c: 0x050b, 0xb1d: 0x050f, + 0xb1e: 0x0513, 0xb1f: 0x0517, 0xb20: 0x051b, 0xb21: 0x0523, 0xb22: 0x0527, 0xb23: 0x052b, + 0xb24: 0x052f, 0xb25: 0x0533, 0xb26: 0x0537, 0xb27: 0x053b, 0xb28: 0x053f, 0xb29: 0x0543, + 0xb2a: 0x0547, 0xb2b: 0x054b, 0xb2c: 0x054f, 0xb2d: 0x0553, 0xb2e: 0x0557, 0xb2f: 0x055b, + 0xb30: 0x055f, 0xb31: 0x0563, 0xb32: 0x0567, 0xb33: 0x056f, 0xb34: 0x0577, 0xb35: 0x057f, + 0xb36: 0x0583, 0xb37: 0x0587, 0xb38: 0x058b, 0xb39: 0x058f, 0xb3a: 0x0593, 0xb3b: 0x0597, + 0xb3c: 0x059b, 0xb3d: 0x059f, 0xb3e: 0x05a3, + // Block 0x2d, offset 0xb40 + 0xb40: 0x2b0c, 0xb41: 0x29a8, 0xb42: 0x2b1c, 0xb43: 0x2880, 0xb44: 0x2ee4, 0xb45: 0x288a, + 0xb46: 0x2894, 0xb47: 0x2f28, 0xb48: 0x29b5, 0xb49: 0x289e, 0xb4a: 0x28a8, 0xb4b: 0x28b2, + 0xb4c: 0x29dc, 0xb4d: 0x29e9, 0xb4e: 0x29c2, 0xb4f: 0x29cf, 0xb50: 0x2ea9, 0xb51: 0x29f6, + 0xb52: 0x2a03, 0xb53: 0x2bbe, 0xb54: 0x26bb, 0xb55: 0x2bd1, 0xb56: 0x2be4, 0xb57: 0x2b2c, + 0xb58: 0x2a10, 0xb59: 0x2bf7, 0xb5a: 0x2c0a, 0xb5b: 0x2a1d, 0xb5c: 0x28bc, 0xb5d: 0x28c6, + 0xb5e: 0x2eb7, 0xb5f: 0x2a2a, 0xb60: 0x2b3c, 0xb61: 0x2ef5, 0xb62: 0x28d0, 0xb63: 0x28da, + 0xb64: 0x2a37, 0xb65: 0x28e4, 0xb66: 0x28ee, 0xb67: 0x26d0, 0xb68: 0x26d7, 0xb69: 0x28f8, + 0xb6a: 0x2902, 0xb6b: 0x2c1d, 0xb6c: 0x2a44, 0xb6d: 0x2b4c, 0xb6e: 0x2c30, 0xb6f: 0x2a51, + 0xb70: 0x2916, 0xb71: 0x290c, 0xb72: 0x2f3c, 0xb73: 0x2a5e, 0xb74: 0x2c43, 0xb75: 0x2920, + 0xb76: 0x2b5c, 0xb77: 0x292a, 0xb78: 0x2a78, 0xb79: 0x2934, 0xb7a: 0x2a85, 0xb7b: 0x2f06, + 0xb7c: 0x2a6b, 0xb7d: 0x2b6c, 0xb7e: 0x2a92, 0xb7f: 0x26de, + // Block 0x2e, offset 0xb80 + 0xb80: 0x2f17, 0xb81: 0x293e, 0xb82: 0x2948, 0xb83: 0x2a9f, 0xb84: 0x2952, 0xb85: 0x295c, + 0xb86: 0x2966, 0xb87: 0x2b7c, 0xb88: 0x2aac, 0xb89: 0x26e5, 0xb8a: 0x2c56, 0xb8b: 0x2e90, + 0xb8c: 0x2b8c, 0xb8d: 0x2ab9, 0xb8e: 0x2ec5, 0xb8f: 0x2970, 0xb90: 0x297a, 0xb91: 0x2ac6, + 0xb92: 0x26ec, 0xb93: 0x2ad3, 0xb94: 0x2b9c, 0xb95: 0x26f3, 0xb96: 0x2c69, 0xb97: 0x2984, + 0xb98: 0x1cb7, 0xb99: 0x1ccb, 0xb9a: 0x1cda, 0xb9b: 0x1ce9, 0xb9c: 0x1cf8, 0xb9d: 0x1d07, + 0xb9e: 0x1d16, 0xb9f: 0x1d25, 0xba0: 0x1d34, 0xba1: 0x1d43, 0xba2: 0x2192, 0xba3: 0x21a4, + 0xba4: 0x21b6, 0xba5: 0x21c2, 0xba6: 0x21ce, 0xba7: 0x21da, 0xba8: 0x21e6, 0xba9: 0x21f2, + 0xbaa: 0x21fe, 0xbab: 0x220a, 0xbac: 0x2246, 0xbad: 0x2252, 0xbae: 0x225e, 0xbaf: 0x226a, + 0xbb0: 0x2276, 0xbb1: 0x1c14, 0xbb2: 0x19c6, 0xbb3: 0x1936, 0xbb4: 0x1be4, 0xbb5: 0x1a47, + 0xbb6: 0x1a56, 0xbb7: 0x19cc, 0xbb8: 0x1bfc, 0xbb9: 0x1c00, 0xbba: 0x1960, 0xbbb: 0x2701, + 0xbbc: 0x270f, 0xbbd: 0x26fa, 0xbbe: 0x2708, 0xbbf: 0x2ae0, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x1a4a, 0xbc1: 0x1a32, 0xbc2: 0x1c60, 0xbc3: 0x1a1a, 0xbc4: 0x19f3, 0xbc5: 0x1969, + 0xbc6: 0x1978, 0xbc7: 0x1948, 0xbc8: 0x1bf0, 0xbc9: 0x1d52, 0xbca: 0x1a4d, 0xbcb: 0x1a35, + 0xbcc: 0x1c64, 0xbcd: 0x1c70, 0xbce: 0x1a26, 0xbcf: 0x19fc, 0xbd0: 0x1957, 0xbd1: 0x1c1c, + 0xbd2: 0x1bb0, 0xbd3: 0x1b9c, 0xbd4: 0x1bcc, 0xbd5: 0x1c74, 0xbd6: 0x1a29, 0xbd7: 0x19c9, + 0xbd8: 0x19ff, 0xbd9: 0x19de, 0xbda: 0x1a41, 0xbdb: 0x1c78, 0xbdc: 0x1a2c, 0xbdd: 0x19c0, + 0xbde: 0x1a02, 0xbdf: 0x1c3c, 0xbe0: 0x1bf4, 0xbe1: 0x1a14, 0xbe2: 0x1c24, 0xbe3: 0x1c40, + 0xbe4: 0x1bf8, 0xbe5: 0x1a17, 0xbe6: 0x1c28, 0xbe7: 0x22e8, 0xbe8: 0x22fc, 0xbe9: 0x1996, + 0xbea: 0x1c20, 0xbeb: 0x1bb4, 0xbec: 0x1ba0, 0xbed: 0x1c48, 0xbee: 0x2716, 0xbef: 0x27ad, + 0xbf0: 0x1a59, 0xbf1: 0x1a44, 0xbf2: 0x1c7c, 0xbf3: 0x1a2f, 0xbf4: 0x1a50, 0xbf5: 0x1a38, + 0xbf6: 0x1c68, 0xbf7: 0x1a1d, 0xbf8: 0x19f6, 0xbf9: 0x1981, 0xbfa: 0x1a53, 0xbfb: 0x1a3b, + 0xbfc: 0x1c6c, 0xbfd: 0x1a20, 0xbfe: 0x19f9, 0xbff: 0x1984, + // Block 0x30, offset 0xc00 + 0xc00: 0x1c2c, 0xc01: 0x1bb8, 0xc02: 0x1d4d, 0xc03: 0x1939, 0xc04: 0x19ba, 0xc05: 0x19bd, + 0xc06: 0x22f5, 0xc07: 0x1b94, 0xc08: 0x19c3, 0xc09: 0x194b, 0xc0a: 0x19e1, 0xc0b: 0x194e, + 0xc0c: 0x19ea, 0xc0d: 0x196c, 0xc0e: 0x196f, 0xc0f: 0x1a05, 0xc10: 0x1a0b, 0xc11: 0x1a0e, + 0xc12: 0x1c30, 0xc13: 0x1a11, 0xc14: 0x1a23, 0xc15: 0x1c38, 0xc16: 0x1c44, 0xc17: 0x1990, + 0xc18: 0x1d57, 0xc19: 0x1bbc, 0xc1a: 0x1993, 0xc1b: 0x1a5c, 0xc1c: 0x19a5, 0xc1d: 0x19b4, + 0xc1e: 0x22e2, 0xc1f: 0x22dc, 0xc20: 0x1cc1, 0xc21: 0x1cd0, 0xc22: 0x1cdf, 0xc23: 0x1cee, + 0xc24: 0x1cfd, 0xc25: 0x1d0c, 0xc26: 0x1d1b, 0xc27: 0x1d2a, 0xc28: 0x1d39, 0xc29: 0x2186, + 0xc2a: 0x2198, 0xc2b: 0x21aa, 0xc2c: 0x21bc, 0xc2d: 0x21c8, 0xc2e: 0x21d4, 0xc2f: 0x21e0, + 0xc30: 0x21ec, 0xc31: 0x21f8, 0xc32: 0x2204, 0xc33: 0x2240, 0xc34: 0x224c, 0xc35: 0x2258, + 0xc36: 0x2264, 0xc37: 0x2270, 0xc38: 0x227c, 0xc39: 0x2282, 0xc3a: 0x2288, 0xc3b: 0x228e, + 0xc3c: 0x2294, 0xc3d: 0x22a6, 0xc3e: 0x22ac, 0xc3f: 0x1c10, + // Block 0x31, offset 0xc40 + 0xc40: 0x1377, 0xc41: 0x0cfb, 0xc42: 0x13d3, 0xc43: 0x139f, 0xc44: 0x0e57, 0xc45: 0x06eb, + 0xc46: 0x08df, 0xc47: 0x162b, 0xc48: 0x162b, 0xc49: 0x0a0b, 0xc4a: 0x145f, 0xc4b: 0x0943, + 0xc4c: 0x0a07, 0xc4d: 0x0bef, 0xc4e: 0x0fcf, 0xc4f: 0x115f, 0xc50: 0x1297, 0xc51: 0x12d3, + 0xc52: 0x1307, 0xc53: 0x141b, 0xc54: 0x0d73, 0xc55: 0x0dff, 0xc56: 0x0eab, 0xc57: 0x0f43, + 0xc58: 0x125f, 0xc59: 0x1447, 0xc5a: 0x1573, 0xc5b: 0x070f, 0xc5c: 0x08b3, 0xc5d: 0x0d87, + 0xc5e: 0x0ecf, 0xc5f: 0x1293, 0xc60: 0x15c3, 0xc61: 0x0ab3, 0xc62: 0x0e77, 0xc63: 0x1283, + 0xc64: 0x1317, 0xc65: 0x0c23, 0xc66: 0x11bb, 0xc67: 0x12df, 0xc68: 0x0b1f, 0xc69: 0x0d0f, + 0xc6a: 0x0e17, 0xc6b: 0x0f1b, 0xc6c: 0x1427, 0xc6d: 0x074f, 0xc6e: 0x07e7, 0xc6f: 0x0853, + 0xc70: 0x0c8b, 0xc71: 0x0d7f, 0xc72: 0x0ecb, 0xc73: 0x0fef, 0xc74: 0x1177, 0xc75: 0x128b, + 0xc76: 0x12a3, 0xc77: 0x13c7, 0xc78: 0x14ef, 0xc79: 0x15a3, 0xc7a: 0x15bf, 0xc7b: 0x102b, + 0xc7c: 0x106b, 0xc7d: 0x1123, 0xc7e: 0x1243, 0xc7f: 0x147b, + // Block 0x32, offset 0xc80 + 0xc80: 0x15cb, 0xc81: 0x134b, 0xc82: 0x09c7, 0xc83: 0x0b3b, 0xc84: 0x10db, 0xc85: 0x119b, + 0xc86: 0x0eff, 0xc87: 0x1033, 0xc88: 0x1397, 0xc89: 0x14e7, 0xc8a: 0x09c3, 0xc8b: 0x0a8f, + 0xc8c: 0x0d77, 0xc8d: 0x0e2b, 0xc8e: 0x0e5f, 0xc8f: 0x1113, 0xc90: 0x113b, 0xc91: 0x14a7, + 0xc92: 0x084f, 0xc93: 0x11a7, 0xc94: 0x07f3, 0xc95: 0x07ef, 0xc96: 0x1097, 0xc97: 0x1127, + 0xc98: 0x125b, 0xc99: 0x14af, 0xc9a: 0x1367, 0xc9b: 0x0c27, 0xc9c: 0x0d73, 0xc9d: 0x1357, + 0xc9e: 0x06f7, 0xc9f: 0x0a63, 0xca0: 0x0b93, 0xca1: 0x0f2f, 0xca2: 0x0faf, 0xca3: 0x0873, + 0xca4: 0x103b, 0xca5: 0x075f, 0xca6: 0x0b77, 0xca7: 0x06d7, 0xca8: 0x0deb, 0xca9: 0x0ca3, + 0xcaa: 0x110f, 0xcab: 0x08c7, 0xcac: 0x09b3, 0xcad: 0x0ffb, 0xcae: 0x1263, 0xcaf: 0x133b, + 0xcb0: 0x0db7, 0xcb1: 0x13f7, 0xcb2: 0x0de3, 0xcb3: 0x0c37, 0xcb4: 0x121b, 0xcb5: 0x0c57, + 0xcb6: 0x0fab, 0xcb7: 0x072b, 0xcb8: 0x07a7, 0xcb9: 0x07eb, 0xcba: 0x0d53, 0xcbb: 0x10fb, + 0xcbc: 0x11f3, 0xcbd: 0x1347, 0xcbe: 0x145b, 0xcbf: 0x085b, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x090f, 0xcc1: 0x0a17, 0xcc2: 0x0b2f, 0xcc3: 0x0cbf, 0xcc4: 0x0e7b, 0xcc5: 0x103f, + 0xcc6: 0x1497, 0xcc7: 0x157b, 0xcc8: 0x15cf, 0xcc9: 0x15e7, 0xcca: 0x0837, 0xccb: 0x0cf3, + 0xccc: 0x0da3, 0xccd: 0x13eb, 0xcce: 0x0afb, 0xccf: 0x0bd7, 0xcd0: 0x0bf3, 0xcd1: 0x0c83, + 0xcd2: 0x0e6b, 0xcd3: 0x0eb7, 0xcd4: 0x0f67, 0xcd5: 0x108b, 0xcd6: 0x112f, 0xcd7: 0x1193, + 0xcd8: 0x13db, 0xcd9: 0x126b, 0xcda: 0x1403, 0xcdb: 0x147f, 0xcdc: 0x080f, 0xcdd: 0x083b, + 0xcde: 0x0923, 0xcdf: 0x0ea7, 0xce0: 0x12f3, 0xce1: 0x133b, 0xce2: 0x0b1b, 0xce3: 0x0b8b, + 0xce4: 0x0c4f, 0xce5: 0x0daf, 0xce6: 0x10d7, 0xce7: 0x0f23, 0xce8: 0x073b, 0xce9: 0x097f, + 0xcea: 0x0a63, 0xceb: 0x0ac7, 0xcec: 0x0b97, 0xced: 0x0f3f, 0xcee: 0x0f5b, 0xcef: 0x116b, + 0xcf0: 0x118b, 0xcf1: 0x1463, 0xcf2: 0x14e3, 0xcf3: 0x14f3, 0xcf4: 0x152f, 0xcf5: 0x0753, + 0xcf6: 0x107f, 0xcf7: 0x144f, 0xcf8: 0x14cb, 0xcf9: 0x0baf, 0xcfa: 0x0717, 0xcfb: 0x0777, + 0xcfc: 0x0a67, 0xcfd: 0x0a87, 0xcfe: 0x0caf, 0xcff: 0x0d73, + // Block 0x34, offset 0xd00 + 0xd00: 0x0ec3, 0xd01: 0x0fcb, 0xd02: 0x1277, 0xd03: 0x1417, 0xd04: 0x1623, 0xd05: 0x0ce3, + 0xd06: 0x14a3, 0xd07: 0x0833, 0xd08: 0x0d2f, 0xd09: 0x0d3b, 0xd0a: 0x0e0f, 0xd0b: 0x0e47, + 0xd0c: 0x0f4b, 0xd0d: 0x0fa7, 0xd0e: 0x1027, 0xd0f: 0x110b, 0xd10: 0x153b, 0xd11: 0x07af, + 0xd12: 0x0c03, 0xd13: 0x14b3, 0xd14: 0x0767, 0xd15: 0x0aab, 0xd16: 0x0e2f, 0xd17: 0x13df, + 0xd18: 0x0b67, 0xd19: 0x0bb7, 0xd1a: 0x0d43, 0xd1b: 0x0f2f, 0xd1c: 0x14bb, 0xd1d: 0x0817, + 0xd1e: 0x08ff, 0xd1f: 0x0a97, 0xd20: 0x0cd3, 0xd21: 0x0d1f, 0xd22: 0x0d5f, 0xd23: 0x0df3, + 0xd24: 0x0f47, 0xd25: 0x0fbb, 0xd26: 0x1157, 0xd27: 0x12f7, 0xd28: 0x1303, 0xd29: 0x1457, + 0xd2a: 0x14d7, 0xd2b: 0x0883, 0xd2c: 0x0e4b, 0xd2d: 0x0903, 0xd2e: 0x0ec7, 0xd2f: 0x0f6b, + 0xd30: 0x1287, 0xd31: 0x14bf, 0xd32: 0x15ab, 0xd33: 0x15d3, 0xd34: 0x0d37, 0xd35: 0x0e27, + 0xd36: 0x11c3, 0xd37: 0x10b7, 0xd38: 0x10c3, 0xd39: 0x10e7, 0xd3a: 0x0f17, 0xd3b: 0x0e9f, + 0xd3c: 0x1363, 0xd3d: 0x0733, 0xd3e: 0x122b, 0xd3f: 0x081b, + // Block 0x35, offset 0xd40 + 0xd40: 0x080b, 0xd41: 0x0b0b, 0xd42: 0x0c2b, 0xd43: 0x10f3, 0xd44: 0x0a53, 0xd45: 0x0e03, + 0xd46: 0x0cef, 0xd47: 0x13e7, 0xd48: 0x12e7, 0xd49: 0x14ab, 0xd4a: 0x1323, 0xd4b: 0x0b27, + 0xd4c: 0x0787, 0xd4d: 0x095b, 0xd50: 0x09af, + 0xd52: 0x0cdf, 0xd55: 0x07f7, 0xd56: 0x0f1f, 0xd57: 0x0fe3, + 0xd58: 0x1047, 0xd59: 0x1063, 0xd5a: 0x1067, 0xd5b: 0x107b, 0xd5c: 0x14fb, 0xd5d: 0x10eb, + 0xd5e: 0x116f, 0xd60: 0x128f, 0xd62: 0x1353, + 0xd65: 0x1407, 0xd66: 0x1433, + 0xd6a: 0x154f, 0xd6b: 0x1553, 0xd6c: 0x1557, 0xd6d: 0x15bb, 0xd6e: 0x142b, 0xd6f: 0x14c7, + 0xd70: 0x0757, 0xd71: 0x077b, 0xd72: 0x078f, 0xd73: 0x084b, 0xd74: 0x0857, 0xd75: 0x0897, + 0xd76: 0x094b, 0xd77: 0x0967, 0xd78: 0x096f, 0xd79: 0x09ab, 0xd7a: 0x09b7, 0xd7b: 0x0a93, + 0xd7c: 0x0a9b, 0xd7d: 0x0ba3, 0xd7e: 0x0bcb, 0xd7f: 0x0bd3, + // Block 0x36, offset 0xd80 + 0xd80: 0x0beb, 0xd81: 0x0c97, 0xd82: 0x0cc7, 0xd83: 0x0ce7, 0xd84: 0x0d57, 0xd85: 0x0e1b, + 0xd86: 0x0e37, 0xd87: 0x0e67, 0xd88: 0x0ebb, 0xd89: 0x0edb, 0xd8a: 0x0f4f, 0xd8b: 0x102f, + 0xd8c: 0x104b, 0xd8d: 0x1053, 0xd8e: 0x104f, 0xd8f: 0x1057, 0xd90: 0x105b, 0xd91: 0x105f, + 0xd92: 0x1073, 0xd93: 0x1077, 0xd94: 0x109b, 0xd95: 0x10af, 0xd96: 0x10cb, 0xd97: 0x112f, + 0xd98: 0x1137, 0xd99: 0x113f, 0xd9a: 0x1153, 0xd9b: 0x117b, 0xd9c: 0x11cb, 0xd9d: 0x11ff, + 0xd9e: 0x11ff, 0xd9f: 0x1267, 0xda0: 0x130f, 0xda1: 0x1327, 0xda2: 0x135b, 0xda3: 0x135f, + 0xda4: 0x13a3, 0xda5: 0x13a7, 0xda6: 0x13ff, 0xda7: 0x1407, 0xda8: 0x14db, 0xda9: 0x151f, + 0xdaa: 0x1537, 0xdab: 0x0b9b, 0xdac: 0x171e, 0xdad: 0x11e3, + 0xdb0: 0x06df, 0xdb1: 0x07e3, 0xdb2: 0x07a3, 0xdb3: 0x074b, 0xdb4: 0x078b, 0xdb5: 0x07b7, + 0xdb6: 0x0847, 0xdb7: 0x0863, 0xdb8: 0x094b, 0xdb9: 0x0937, 0xdba: 0x0947, 0xdbb: 0x0963, + 0xdbc: 0x09af, 0xdbd: 0x09bf, 0xdbe: 0x0a03, 0xdbf: 0x0a0f, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x0a2b, 0xdc1: 0x0a3b, 0xdc2: 0x0b23, 0xdc3: 0x0b2b, 0xdc4: 0x0b5b, 0xdc5: 0x0b7b, + 0xdc6: 0x0bab, 0xdc7: 0x0bc3, 0xdc8: 0x0bb3, 0xdc9: 0x0bd3, 0xdca: 0x0bc7, 0xdcb: 0x0beb, + 0xdcc: 0x0c07, 0xdcd: 0x0c5f, 0xdce: 0x0c6b, 0xdcf: 0x0c73, 0xdd0: 0x0c9b, 0xdd1: 0x0cdf, + 0xdd2: 0x0d0f, 0xdd3: 0x0d13, 0xdd4: 0x0d27, 0xdd5: 0x0da7, 0xdd6: 0x0db7, 0xdd7: 0x0e0f, + 0xdd8: 0x0e5b, 0xdd9: 0x0e53, 0xdda: 0x0e67, 0xddb: 0x0e83, 0xddc: 0x0ebb, 0xddd: 0x1013, + 0xdde: 0x0edf, 0xddf: 0x0f13, 0xde0: 0x0f1f, 0xde1: 0x0f5f, 0xde2: 0x0f7b, 0xde3: 0x0f9f, + 0xde4: 0x0fc3, 0xde5: 0x0fc7, 0xde6: 0x0fe3, 0xde7: 0x0fe7, 0xde8: 0x0ff7, 0xde9: 0x100b, + 0xdea: 0x1007, 0xdeb: 0x1037, 0xdec: 0x10b3, 0xded: 0x10cb, 0xdee: 0x10e3, 0xdef: 0x111b, + 0xdf0: 0x112f, 0xdf1: 0x114b, 0xdf2: 0x117b, 0xdf3: 0x122f, 0xdf4: 0x1257, 0xdf5: 0x12cb, + 0xdf6: 0x1313, 0xdf7: 0x131f, 0xdf8: 0x1327, 0xdf9: 0x133f, 0xdfa: 0x1353, 0xdfb: 0x1343, + 0xdfc: 0x135b, 0xdfd: 0x1357, 0xdfe: 0x134f, 0xdff: 0x135f, + // Block 0x38, offset 0xe00 + 0xe00: 0x136b, 0xe01: 0x13a7, 0xe02: 0x13e3, 0xe03: 0x1413, 0xe04: 0x144b, 0xe05: 0x146b, + 0xe06: 0x14b7, 0xe07: 0x14db, 0xe08: 0x14fb, 0xe09: 0x150f, 0xe0a: 0x151f, 0xe0b: 0x152b, + 0xe0c: 0x1537, 0xe0d: 0x158b, 0xe0e: 0x162b, 0xe0f: 0x16b5, 0xe10: 0x16b0, 0xe11: 0x16e2, + 0xe12: 0x0607, 0xe13: 0x062f, 0xe14: 0x0633, 0xe15: 0x1764, 0xe16: 0x1791, 0xe17: 0x1809, + 0xe18: 0x1617, 0xe19: 0x1627, + // Block 0x39, offset 0xe40 + 0xe40: 0x19d5, 0xe41: 0x19d8, 0xe42: 0x19db, 0xe43: 0x1c08, 0xe44: 0x1c0c, 0xe45: 0x1a5f, + 0xe46: 0x1a5f, + 0xe53: 0x1d75, 0xe54: 0x1d66, 0xe55: 0x1d6b, 0xe56: 0x1d7a, 0xe57: 0x1d70, + 0xe5d: 0x4426, + 0xe5e: 0x8115, 0xe5f: 0x4498, 0xe60: 0x022d, 0xe61: 0x0215, 0xe62: 0x021e, 0xe63: 0x0221, + 0xe64: 0x0224, 0xe65: 0x0227, 0xe66: 0x022a, 0xe67: 0x0230, 0xe68: 0x0233, 0xe69: 0x0017, + 0xe6a: 0x4486, 0xe6b: 0x448c, 0xe6c: 0x458a, 0xe6d: 0x4592, 0xe6e: 0x43de, 0xe6f: 0x43e4, + 0xe70: 0x43ea, 0xe71: 0x43f0, 0xe72: 0x43fc, 0xe73: 0x4402, 0xe74: 0x4408, 0xe75: 0x4414, + 0xe76: 0x441a, 0xe78: 0x4420, 0xe79: 0x442c, 0xe7a: 0x4432, 0xe7b: 0x4438, + 0xe7c: 0x4444, 0xe7e: 0x444a, + // Block 0x3a, offset 0xe80 + 0xe80: 0x4450, 0xe81: 0x4456, 0xe83: 0x445c, 0xe84: 0x4462, + 0xe86: 0x446e, 0xe87: 0x4474, 0xe88: 0x447a, 0xe89: 0x4480, 0xe8a: 0x4492, 0xe8b: 0x440e, + 0xe8c: 0x43f6, 0xe8d: 0x443e, 0xe8e: 0x4468, 0xe8f: 0x1d7f, 0xe90: 0x0299, 0xe91: 0x0299, + 0xe92: 0x02a2, 0xe93: 0x02a2, 0xe94: 0x02a2, 0xe95: 0x02a2, 0xe96: 0x02a5, 0xe97: 0x02a5, + 0xe98: 0x02a5, 0xe99: 0x02a5, 0xe9a: 0x02ab, 0xe9b: 0x02ab, 0xe9c: 0x02ab, 0xe9d: 0x02ab, + 0xe9e: 0x029f, 0xe9f: 0x029f, 0xea0: 0x029f, 0xea1: 0x029f, 0xea2: 0x02a8, 0xea3: 0x02a8, + 0xea4: 0x02a8, 0xea5: 0x02a8, 0xea6: 0x029c, 0xea7: 0x029c, 0xea8: 0x029c, 0xea9: 0x029c, + 0xeaa: 0x02cf, 0xeab: 0x02cf, 0xeac: 0x02cf, 0xead: 0x02cf, 0xeae: 0x02d2, 0xeaf: 0x02d2, + 0xeb0: 0x02d2, 0xeb1: 0x02d2, 0xeb2: 0x02b1, 0xeb3: 0x02b1, 0xeb4: 0x02b1, 0xeb5: 0x02b1, + 0xeb6: 0x02ae, 0xeb7: 0x02ae, 0xeb8: 0x02ae, 0xeb9: 0x02ae, 0xeba: 0x02b4, 0xebb: 0x02b4, + 0xebc: 0x02b4, 0xebd: 0x02b4, 0xebe: 0x02b7, 0xebf: 0x02b7, + // Block 0x3b, offset 0xec0 + 0xec0: 0x02b7, 0xec1: 0x02b7, 0xec2: 0x02c0, 0xec3: 0x02c0, 0xec4: 0x02bd, 0xec5: 0x02bd, + 0xec6: 0x02c3, 0xec7: 0x02c3, 0xec8: 0x02ba, 0xec9: 0x02ba, 0xeca: 0x02c9, 0xecb: 0x02c9, + 0xecc: 0x02c6, 0xecd: 0x02c6, 0xece: 0x02d5, 0xecf: 0x02d5, 0xed0: 0x02d5, 0xed1: 0x02d5, + 0xed2: 0x02db, 0xed3: 0x02db, 0xed4: 0x02db, 0xed5: 0x02db, 0xed6: 0x02e1, 0xed7: 0x02e1, + 0xed8: 0x02e1, 0xed9: 0x02e1, 0xeda: 0x02de, 0xedb: 0x02de, 0xedc: 0x02de, 0xedd: 0x02de, + 0xede: 0x02e4, 0xedf: 0x02e4, 0xee0: 0x02e7, 0xee1: 0x02e7, 0xee2: 0x02e7, 0xee3: 0x02e7, + 0xee4: 0x4504, 0xee5: 0x4504, 0xee6: 0x02ed, 0xee7: 0x02ed, 0xee8: 0x02ed, 0xee9: 0x02ed, + 0xeea: 0x02ea, 0xeeb: 0x02ea, 0xeec: 0x02ea, 0xeed: 0x02ea, 0xeee: 0x0308, 0xeef: 0x0308, + 0xef0: 0x44fe, 0xef1: 0x44fe, + // Block 0x3c, offset 0xf00 + 0xf13: 0x02d8, 0xf14: 0x02d8, 0xf15: 0x02d8, 0xf16: 0x02d8, 0xf17: 0x02f6, + 0xf18: 0x02f6, 0xf19: 0x02f3, 0xf1a: 0x02f3, 0xf1b: 0x02f9, 0xf1c: 0x02f9, 0xf1d: 0x204f, + 0xf1e: 0x02ff, 0xf1f: 0x02ff, 0xf20: 0x02f0, 0xf21: 0x02f0, 0xf22: 0x02fc, 0xf23: 0x02fc, + 0xf24: 0x0305, 0xf25: 0x0305, 0xf26: 0x0305, 0xf27: 0x0305, 0xf28: 0x028d, 0xf29: 0x028d, + 0xf2a: 0x25aa, 0xf2b: 0x25aa, 0xf2c: 0x261a, 0xf2d: 0x261a, 0xf2e: 0x25e9, 0xf2f: 0x25e9, + 0xf30: 0x2605, 0xf31: 0x2605, 0xf32: 0x25fe, 0xf33: 0x25fe, 0xf34: 0x260c, 0xf35: 0x260c, + 0xf36: 0x2613, 0xf37: 0x2613, 0xf38: 0x2613, 0xf39: 0x25f0, 0xf3a: 0x25f0, 0xf3b: 0x25f0, + 0xf3c: 0x0302, 0xf3d: 0x0302, 0xf3e: 0x0302, 0xf3f: 0x0302, + // Block 0x3d, offset 0xf40 + 0xf40: 0x25b1, 0xf41: 0x25b8, 0xf42: 0x25d4, 0xf43: 0x25f0, 0xf44: 0x25f7, 0xf45: 0x1d89, + 0xf46: 0x1d8e, 0xf47: 0x1d93, 0xf48: 0x1da2, 0xf49: 0x1db1, 0xf4a: 0x1db6, 0xf4b: 0x1dbb, + 0xf4c: 0x1dc0, 0xf4d: 0x1dc5, 0xf4e: 0x1dd4, 0xf4f: 0x1de3, 0xf50: 0x1de8, 0xf51: 0x1ded, + 0xf52: 0x1dfc, 0xf53: 0x1e0b, 0xf54: 0x1e10, 0xf55: 0x1e15, 0xf56: 0x1e1a, 0xf57: 0x1e29, + 0xf58: 0x1e2e, 0xf59: 0x1e3d, 0xf5a: 0x1e42, 0xf5b: 0x1e47, 0xf5c: 0x1e56, 0xf5d: 0x1e5b, + 0xf5e: 0x1e60, 0xf5f: 0x1e6a, 0xf60: 0x1ea6, 0xf61: 0x1eb5, 0xf62: 0x1ec4, 0xf63: 0x1ec9, + 0xf64: 0x1ece, 0xf65: 0x1ed8, 0xf66: 0x1ee7, 0xf67: 0x1eec, 0xf68: 0x1efb, 0xf69: 0x1f00, + 0xf6a: 0x1f05, 0xf6b: 0x1f14, 0xf6c: 0x1f19, 0xf6d: 0x1f28, 0xf6e: 0x1f2d, 0xf6f: 0x1f32, + 0xf70: 0x1f37, 0xf71: 0x1f3c, 0xf72: 0x1f41, 0xf73: 0x1f46, 0xf74: 0x1f4b, 0xf75: 0x1f50, + 0xf76: 0x1f55, 0xf77: 0x1f5a, 0xf78: 0x1f5f, 0xf79: 0x1f64, 0xf7a: 0x1f69, 0xf7b: 0x1f6e, + 0xf7c: 0x1f73, 0xf7d: 0x1f78, 0xf7e: 0x1f7d, 0xf7f: 0x1f87, + // Block 0x3e, offset 0xf80 + 0xf80: 0x1f8c, 0xf81: 0x1f91, 0xf82: 0x1f96, 0xf83: 0x1fa0, 0xf84: 0x1fa5, 0xf85: 0x1faf, + 0xf86: 0x1fb4, 0xf87: 0x1fb9, 0xf88: 0x1fbe, 0xf89: 0x1fc3, 0xf8a: 0x1fc8, 0xf8b: 0x1fcd, + 0xf8c: 0x1fd2, 0xf8d: 0x1fd7, 0xf8e: 0x1fe6, 0xf8f: 0x1ff5, 0xf90: 0x1ffa, 0xf91: 0x1fff, + 0xf92: 0x2004, 0xf93: 0x2009, 0xf94: 0x200e, 0xf95: 0x2018, 0xf96: 0x201d, 0xf97: 0x2022, + 0xf98: 0x2031, 0xf99: 0x2040, 0xf9a: 0x2045, 0xf9b: 0x44b6, 0xf9c: 0x44bc, 0xf9d: 0x44f2, + 0xf9e: 0x4549, 0xf9f: 0x4550, 0xfa0: 0x4557, 0xfa1: 0x455e, 0xfa2: 0x4565, 0xfa3: 0x456c, + 0xfa4: 0x25c6, 0xfa5: 0x25cd, 0xfa6: 0x25d4, 0xfa7: 0x25db, 0xfa8: 0x25f0, 0xfa9: 0x25f7, + 0xfaa: 0x1d98, 0xfab: 0x1d9d, 0xfac: 0x1da2, 0xfad: 0x1da7, 0xfae: 0x1db1, 0xfaf: 0x1db6, + 0xfb0: 0x1dca, 0xfb1: 0x1dcf, 0xfb2: 0x1dd4, 0xfb3: 0x1dd9, 0xfb4: 0x1de3, 0xfb5: 0x1de8, + 0xfb6: 0x1df2, 0xfb7: 0x1df7, 0xfb8: 0x1dfc, 0xfb9: 0x1e01, 0xfba: 0x1e0b, 0xfbb: 0x1e10, + 0xfbc: 0x1f3c, 0xfbd: 0x1f41, 0xfbe: 0x1f50, 0xfbf: 0x1f55, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x1f5a, 0xfc1: 0x1f6e, 0xfc2: 0x1f73, 0xfc3: 0x1f78, 0xfc4: 0x1f7d, 0xfc5: 0x1f96, + 0xfc6: 0x1fa0, 0xfc7: 0x1fa5, 0xfc8: 0x1faa, 0xfc9: 0x1fbe, 0xfca: 0x1fdc, 0xfcb: 0x1fe1, + 0xfcc: 0x1fe6, 0xfcd: 0x1feb, 0xfce: 0x1ff5, 0xfcf: 0x1ffa, 0xfd0: 0x44f2, 0xfd1: 0x2027, + 0xfd2: 0x202c, 0xfd3: 0x2031, 0xfd4: 0x2036, 0xfd5: 0x2040, 0xfd6: 0x2045, 0xfd7: 0x25b1, + 0xfd8: 0x25b8, 0xfd9: 0x25bf, 0xfda: 0x25d4, 0xfdb: 0x25e2, 0xfdc: 0x1d89, 0xfdd: 0x1d8e, + 0xfde: 0x1d93, 0xfdf: 0x1da2, 0xfe0: 0x1dac, 0xfe1: 0x1dbb, 0xfe2: 0x1dc0, 0xfe3: 0x1dc5, + 0xfe4: 0x1dd4, 0xfe5: 0x1dde, 0xfe6: 0x1dfc, 0xfe7: 0x1e15, 0xfe8: 0x1e1a, 0xfe9: 0x1e29, + 0xfea: 0x1e2e, 0xfeb: 0x1e3d, 0xfec: 0x1e47, 0xfed: 0x1e56, 0xfee: 0x1e5b, 0xfef: 0x1e60, + 0xff0: 0x1e6a, 0xff1: 0x1ea6, 0xff2: 0x1eab, 0xff3: 0x1eb5, 0xff4: 0x1ec4, 0xff5: 0x1ec9, + 0xff6: 0x1ece, 0xff7: 0x1ed8, 0xff8: 0x1ee7, 0xff9: 0x1efb, 0xffa: 0x1f00, 0xffb: 0x1f05, + 0xffc: 0x1f14, 0xffd: 0x1f19, 0xffe: 0x1f28, 0xfff: 0x1f2d, + // Block 0x40, offset 0x1000 + 0x1000: 0x1f32, 0x1001: 0x1f37, 0x1002: 0x1f46, 0x1003: 0x1f4b, 0x1004: 0x1f5f, 0x1005: 0x1f64, + 0x1006: 0x1f69, 0x1007: 0x1f6e, 0x1008: 0x1f73, 0x1009: 0x1f87, 0x100a: 0x1f8c, 0x100b: 0x1f91, + 0x100c: 0x1f96, 0x100d: 0x1f9b, 0x100e: 0x1faf, 0x100f: 0x1fb4, 0x1010: 0x1fb9, 0x1011: 0x1fbe, + 0x1012: 0x1fcd, 0x1013: 0x1fd2, 0x1014: 0x1fd7, 0x1015: 0x1fe6, 0x1016: 0x1ff0, 0x1017: 0x1fff, + 0x1018: 0x2004, 0x1019: 0x44e6, 0x101a: 0x2018, 0x101b: 0x201d, 0x101c: 0x2022, 0x101d: 0x2031, + 0x101e: 0x203b, 0x101f: 0x25d4, 0x1020: 0x25e2, 0x1021: 0x1da2, 0x1022: 0x1dac, 0x1023: 0x1dd4, + 0x1024: 0x1dde, 0x1025: 0x1dfc, 0x1026: 0x1e06, 0x1027: 0x1e6a, 0x1028: 0x1e6f, 0x1029: 0x1e92, + 0x102a: 0x1e97, 0x102b: 0x1f6e, 0x102c: 0x1f73, 0x102d: 0x1f96, 0x102e: 0x1fe6, 0x102f: 0x1ff0, + 0x1030: 0x2031, 0x1031: 0x203b, 0x1032: 0x459a, 0x1033: 0x45a2, 0x1034: 0x45aa, 0x1035: 0x1ef1, + 0x1036: 0x1ef6, 0x1037: 0x1f0a, 0x1038: 0x1f0f, 0x1039: 0x1f1e, 0x103a: 0x1f23, 0x103b: 0x1e74, + 0x103c: 0x1e79, 0x103d: 0x1e9c, 0x103e: 0x1ea1, 0x103f: 0x1e33, + // Block 0x41, offset 0x1040 + 0x1040: 0x1e38, 0x1041: 0x1e1f, 0x1042: 0x1e24, 0x1043: 0x1e4c, 0x1044: 0x1e51, 0x1045: 0x1eba, + 0x1046: 0x1ebf, 0x1047: 0x1edd, 0x1048: 0x1ee2, 0x1049: 0x1e7e, 0x104a: 0x1e83, 0x104b: 0x1e88, + 0x104c: 0x1e92, 0x104d: 0x1e8d, 0x104e: 0x1e65, 0x104f: 0x1eb0, 0x1050: 0x1ed3, 0x1051: 0x1ef1, + 0x1052: 0x1ef6, 0x1053: 0x1f0a, 0x1054: 0x1f0f, 0x1055: 0x1f1e, 0x1056: 0x1f23, 0x1057: 0x1e74, + 0x1058: 0x1e79, 0x1059: 0x1e9c, 0x105a: 0x1ea1, 0x105b: 0x1e33, 0x105c: 0x1e38, 0x105d: 0x1e1f, + 0x105e: 0x1e24, 0x105f: 0x1e4c, 0x1060: 0x1e51, 0x1061: 0x1eba, 0x1062: 0x1ebf, 0x1063: 0x1edd, + 0x1064: 0x1ee2, 0x1065: 0x1e7e, 0x1066: 0x1e83, 0x1067: 0x1e88, 0x1068: 0x1e92, 0x1069: 0x1e8d, + 0x106a: 0x1e65, 0x106b: 0x1eb0, 0x106c: 0x1ed3, 0x106d: 0x1e7e, 0x106e: 0x1e83, 0x106f: 0x1e88, + 0x1070: 0x1e92, 0x1071: 0x1e6f, 0x1072: 0x1e97, 0x1073: 0x1eec, 0x1074: 0x1e56, 0x1075: 0x1e5b, + 0x1076: 0x1e60, 0x1077: 0x1e7e, 0x1078: 0x1e83, 0x1079: 0x1e88, 0x107a: 0x1eec, 0x107b: 0x1efb, + 0x107c: 0x449e, 0x107d: 0x449e, + // Block 0x42, offset 0x1080 + 0x1090: 0x2311, 0x1091: 0x2326, + 0x1092: 0x2326, 0x1093: 0x232d, 0x1094: 0x2334, 0x1095: 0x2349, 0x1096: 0x2350, 0x1097: 0x2357, + 0x1098: 0x237a, 0x1099: 0x237a, 0x109a: 0x239d, 0x109b: 0x2396, 0x109c: 0x23b2, 0x109d: 0x23a4, + 0x109e: 0x23ab, 0x109f: 0x23ce, 0x10a0: 0x23ce, 0x10a1: 0x23c7, 0x10a2: 0x23d5, 0x10a3: 0x23d5, + 0x10a4: 0x23ff, 0x10a5: 0x23ff, 0x10a6: 0x241b, 0x10a7: 0x23e3, 0x10a8: 0x23e3, 0x10a9: 0x23dc, + 0x10aa: 0x23f1, 0x10ab: 0x23f1, 0x10ac: 0x23f8, 0x10ad: 0x23f8, 0x10ae: 0x2422, 0x10af: 0x2430, + 0x10b0: 0x2430, 0x10b1: 0x2437, 0x10b2: 0x2437, 0x10b3: 0x243e, 0x10b4: 0x2445, 0x10b5: 0x244c, + 0x10b6: 0x2453, 0x10b7: 0x2453, 0x10b8: 0x245a, 0x10b9: 0x2468, 0x10ba: 0x2476, 0x10bb: 0x246f, + 0x10bc: 0x247d, 0x10bd: 0x247d, 0x10be: 0x2492, 0x10bf: 0x2499, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x24ca, 0x10c1: 0x24d8, 0x10c2: 0x24d1, 0x10c3: 0x24b5, 0x10c4: 0x24b5, 0x10c5: 0x24df, + 0x10c6: 0x24df, 0x10c7: 0x24e6, 0x10c8: 0x24e6, 0x10c9: 0x2510, 0x10ca: 0x2517, 0x10cb: 0x251e, + 0x10cc: 0x24f4, 0x10cd: 0x2502, 0x10ce: 0x2525, 0x10cf: 0x252c, + 0x10d2: 0x24fb, 0x10d3: 0x2580, 0x10d4: 0x2587, 0x10d5: 0x255d, 0x10d6: 0x2564, 0x10d7: 0x2548, + 0x10d8: 0x2548, 0x10d9: 0x254f, 0x10da: 0x2579, 0x10db: 0x2572, 0x10dc: 0x259c, 0x10dd: 0x259c, + 0x10de: 0x230a, 0x10df: 0x231f, 0x10e0: 0x2318, 0x10e1: 0x2342, 0x10e2: 0x233b, 0x10e3: 0x2365, + 0x10e4: 0x235e, 0x10e5: 0x2388, 0x10e6: 0x236c, 0x10e7: 0x2381, 0x10e8: 0x23b9, 0x10e9: 0x2406, + 0x10ea: 0x23ea, 0x10eb: 0x2429, 0x10ec: 0x24c3, 0x10ed: 0x24ed, 0x10ee: 0x2595, 0x10ef: 0x258e, + 0x10f0: 0x25a3, 0x10f1: 0x253a, 0x10f2: 0x24a0, 0x10f3: 0x256b, 0x10f4: 0x2492, 0x10f5: 0x24ca, + 0x10f6: 0x2461, 0x10f7: 0x24ae, 0x10f8: 0x2541, 0x10f9: 0x2533, 0x10fa: 0x24bc, 0x10fb: 0x24a7, + 0x10fc: 0x24bc, 0x10fd: 0x2541, 0x10fe: 0x2373, 0x10ff: 0x238f, + // Block 0x44, offset 0x1100 + 0x1100: 0x2509, 0x1101: 0x2484, 0x1102: 0x2303, 0x1103: 0x24a7, 0x1104: 0x244c, 0x1105: 0x241b, + 0x1106: 0x23c0, 0x1107: 0x2556, + 0x1130: 0x2414, 0x1131: 0x248b, 0x1132: 0x27bf, 0x1133: 0x27b6, 0x1134: 0x27ec, 0x1135: 0x27da, + 0x1136: 0x27c8, 0x1137: 0x27e3, 0x1138: 0x27f5, 0x1139: 0x240d, 0x113a: 0x2c7c, 0x113b: 0x2afc, + 0x113c: 0x27d1, + // Block 0x45, offset 0x1140 + 0x1150: 0x0019, 0x1151: 0x0483, + 0x1152: 0x0487, 0x1153: 0x0035, 0x1154: 0x0037, 0x1155: 0x0003, 0x1156: 0x003f, 0x1157: 0x04bf, + 0x1158: 0x04c3, 0x1159: 0x1b5c, + 0x1160: 0x8132, 0x1161: 0x8132, 0x1162: 0x8132, 0x1163: 0x8132, + 0x1164: 0x8132, 0x1165: 0x8132, 0x1166: 0x8132, 0x1167: 0x812d, 0x1168: 0x812d, 0x1169: 0x812d, + 0x116a: 0x812d, 0x116b: 0x812d, 0x116c: 0x812d, 0x116d: 0x812d, 0x116e: 0x8132, 0x116f: 0x8132, + 0x1170: 0x1873, 0x1171: 0x0443, 0x1172: 0x043f, 0x1173: 0x007f, 0x1174: 0x007f, 0x1175: 0x0011, + 0x1176: 0x0013, 0x1177: 0x00b7, 0x1178: 0x00bb, 0x1179: 0x04b7, 0x117a: 0x04bb, 0x117b: 0x04ab, + 0x117c: 0x04af, 0x117d: 0x0493, 0x117e: 0x0497, 0x117f: 0x048b, + // Block 0x46, offset 0x1180 + 0x1180: 0x048f, 0x1181: 0x049b, 0x1182: 0x049f, 0x1183: 0x04a3, 0x1184: 0x04a7, + 0x1187: 0x0077, 0x1188: 0x007b, 0x1189: 0x4269, 0x118a: 0x4269, 0x118b: 0x4269, + 0x118c: 0x4269, 0x118d: 0x007f, 0x118e: 0x007f, 0x118f: 0x007f, 0x1190: 0x0019, 0x1191: 0x0483, + 0x1192: 0x001d, 0x1194: 0x0037, 0x1195: 0x0035, 0x1196: 0x003f, 0x1197: 0x0003, + 0x1198: 0x0443, 0x1199: 0x0011, 0x119a: 0x0013, 0x119b: 0x00b7, 0x119c: 0x00bb, 0x119d: 0x04b7, + 0x119e: 0x04bb, 0x119f: 0x0007, 0x11a0: 0x000d, 0x11a1: 0x0015, 0x11a2: 0x0017, 0x11a3: 0x001b, + 0x11a4: 0x0039, 0x11a5: 0x003d, 0x11a6: 0x003b, 0x11a8: 0x0079, 0x11a9: 0x0009, + 0x11aa: 0x000b, 0x11ab: 0x0041, + 0x11b0: 0x42aa, 0x11b1: 0x44c2, 0x11b2: 0x42af, 0x11b4: 0x42b4, + 0x11b6: 0x42b9, 0x11b7: 0x44c8, 0x11b8: 0x42be, 0x11b9: 0x44ce, 0x11ba: 0x42c3, 0x11bb: 0x44d4, + 0x11bc: 0x42c8, 0x11bd: 0x44da, 0x11be: 0x42cd, 0x11bf: 0x44e0, + // Block 0x47, offset 0x11c0 + 0x11c0: 0x0236, 0x11c1: 0x44a4, 0x11c2: 0x44a4, 0x11c3: 0x44aa, 0x11c4: 0x44aa, 0x11c5: 0x44ec, + 0x11c6: 0x44ec, 0x11c7: 0x44b0, 0x11c8: 0x44b0, 0x11c9: 0x44f8, 0x11ca: 0x44f8, 0x11cb: 0x44f8, + 0x11cc: 0x44f8, 0x11cd: 0x0239, 0x11ce: 0x0239, 0x11cf: 0x023c, 0x11d0: 0x023c, 0x11d1: 0x023c, + 0x11d2: 0x023c, 0x11d3: 0x023f, 0x11d4: 0x023f, 0x11d5: 0x0242, 0x11d6: 0x0242, 0x11d7: 0x0242, + 0x11d8: 0x0242, 0x11d9: 0x0245, 0x11da: 0x0245, 0x11db: 0x0245, 0x11dc: 0x0245, 0x11dd: 0x0248, + 0x11de: 0x0248, 0x11df: 0x0248, 0x11e0: 0x0248, 0x11e1: 0x024b, 0x11e2: 0x024b, 0x11e3: 0x024b, + 0x11e4: 0x024b, 0x11e5: 0x024e, 0x11e6: 0x024e, 0x11e7: 0x024e, 0x11e8: 0x024e, 0x11e9: 0x0251, + 0x11ea: 0x0251, 0x11eb: 0x0254, 0x11ec: 0x0254, 0x11ed: 0x0257, 0x11ee: 0x0257, 0x11ef: 0x025a, + 0x11f0: 0x025a, 0x11f1: 0x025d, 0x11f2: 0x025d, 0x11f3: 0x025d, 0x11f4: 0x025d, 0x11f5: 0x0260, + 0x11f6: 0x0260, 0x11f7: 0x0260, 0x11f8: 0x0260, 0x11f9: 0x0263, 0x11fa: 0x0263, 0x11fb: 0x0263, + 0x11fc: 0x0263, 0x11fd: 0x0266, 0x11fe: 0x0266, 0x11ff: 0x0266, + // Block 0x48, offset 0x1200 + 0x1200: 0x0266, 0x1201: 0x0269, 0x1202: 0x0269, 0x1203: 0x0269, 0x1204: 0x0269, 0x1205: 0x026c, + 0x1206: 0x026c, 0x1207: 0x026c, 0x1208: 0x026c, 0x1209: 0x026f, 0x120a: 0x026f, 0x120b: 0x026f, + 0x120c: 0x026f, 0x120d: 0x0272, 0x120e: 0x0272, 0x120f: 0x0272, 0x1210: 0x0272, 0x1211: 0x0275, + 0x1212: 0x0275, 0x1213: 0x0275, 0x1214: 0x0275, 0x1215: 0x0278, 0x1216: 0x0278, 0x1217: 0x0278, + 0x1218: 0x0278, 0x1219: 0x027b, 0x121a: 0x027b, 0x121b: 0x027b, 0x121c: 0x027b, 0x121d: 0x027e, + 0x121e: 0x027e, 0x121f: 0x027e, 0x1220: 0x027e, 0x1221: 0x0281, 0x1222: 0x0281, 0x1223: 0x0281, + 0x1224: 0x0281, 0x1225: 0x0284, 0x1226: 0x0284, 0x1227: 0x0284, 0x1228: 0x0284, 0x1229: 0x0287, + 0x122a: 0x0287, 0x122b: 0x0287, 0x122c: 0x0287, 0x122d: 0x028a, 0x122e: 0x028a, 0x122f: 0x028d, + 0x1230: 0x028d, 0x1231: 0x0290, 0x1232: 0x0290, 0x1233: 0x0290, 0x1234: 0x0290, 0x1235: 0x2e00, + 0x1236: 0x2e00, 0x1237: 0x2e08, 0x1238: 0x2e08, 0x1239: 0x2e10, 0x123a: 0x2e10, 0x123b: 0x1f82, + 0x123c: 0x1f82, + // Block 0x49, offset 0x1240 + 0x1240: 0x0081, 0x1241: 0x0083, 0x1242: 0x0085, 0x1243: 0x0087, 0x1244: 0x0089, 0x1245: 0x008b, + 0x1246: 0x008d, 0x1247: 0x008f, 0x1248: 0x0091, 0x1249: 0x0093, 0x124a: 0x0095, 0x124b: 0x0097, + 0x124c: 0x0099, 0x124d: 0x009b, 0x124e: 0x009d, 0x124f: 0x009f, 0x1250: 0x00a1, 0x1251: 0x00a3, + 0x1252: 0x00a5, 0x1253: 0x00a7, 0x1254: 0x00a9, 0x1255: 0x00ab, 0x1256: 0x00ad, 0x1257: 0x00af, + 0x1258: 0x00b1, 0x1259: 0x00b3, 0x125a: 0x00b5, 0x125b: 0x00b7, 0x125c: 0x00b9, 0x125d: 0x00bb, + 0x125e: 0x00bd, 0x125f: 0x0477, 0x1260: 0x047b, 0x1261: 0x0487, 0x1262: 0x049b, 0x1263: 0x049f, + 0x1264: 0x0483, 0x1265: 0x05ab, 0x1266: 0x05a3, 0x1267: 0x04c7, 0x1268: 0x04cf, 0x1269: 0x04d7, + 0x126a: 0x04df, 0x126b: 0x04e7, 0x126c: 0x056b, 0x126d: 0x0573, 0x126e: 0x057b, 0x126f: 0x051f, + 0x1270: 0x05af, 0x1271: 0x04cb, 0x1272: 0x04d3, 0x1273: 0x04db, 0x1274: 0x04e3, 0x1275: 0x04eb, + 0x1276: 0x04ef, 0x1277: 0x04f3, 0x1278: 0x04f7, 0x1279: 0x04fb, 0x127a: 0x04ff, 0x127b: 0x0503, + 0x127c: 0x0507, 0x127d: 0x050b, 0x127e: 0x050f, 0x127f: 0x0513, + // Block 0x4a, offset 0x1280 + 0x1280: 0x0517, 0x1281: 0x051b, 0x1282: 0x0523, 0x1283: 0x0527, 0x1284: 0x052b, 0x1285: 0x052f, + 0x1286: 0x0533, 0x1287: 0x0537, 0x1288: 0x053b, 0x1289: 0x053f, 0x128a: 0x0543, 0x128b: 0x0547, + 0x128c: 0x054b, 0x128d: 0x054f, 0x128e: 0x0553, 0x128f: 0x0557, 0x1290: 0x055b, 0x1291: 0x055f, + 0x1292: 0x0563, 0x1293: 0x0567, 0x1294: 0x056f, 0x1295: 0x0577, 0x1296: 0x057f, 0x1297: 0x0583, + 0x1298: 0x0587, 0x1299: 0x058b, 0x129a: 0x058f, 0x129b: 0x0593, 0x129c: 0x0597, 0x129d: 0x05a7, + 0x129e: 0x4a5a, 0x129f: 0x4a60, 0x12a0: 0x03c3, 0x12a1: 0x0313, 0x12a2: 0x0317, 0x12a3: 0x4345, + 0x12a4: 0x031b, 0x12a5: 0x434a, 0x12a6: 0x434f, 0x12a7: 0x031f, 0x12a8: 0x0323, 0x12a9: 0x0327, + 0x12aa: 0x4354, 0x12ab: 0x4359, 0x12ac: 0x435e, 0x12ad: 0x4363, 0x12ae: 0x4368, 0x12af: 0x436d, + 0x12b0: 0x0367, 0x12b1: 0x032b, 0x12b2: 0x032f, 0x12b3: 0x0333, 0x12b4: 0x037b, 0x12b5: 0x0337, + 0x12b6: 0x033b, 0x12b7: 0x033f, 0x12b8: 0x0343, 0x12b9: 0x0347, 0x12ba: 0x034b, 0x12bb: 0x034f, + 0x12bc: 0x0353, 0x12bd: 0x0357, 0x12be: 0x035b, + // Block 0x4b, offset 0x12c0 + 0x12c2: 0x42dc, 0x12c3: 0x42e1, 0x12c4: 0x42e6, 0x12c5: 0x42eb, + 0x12c6: 0x42f0, 0x12c7: 0x42f5, 0x12ca: 0x42fa, 0x12cb: 0x42ff, + 0x12cc: 0x4304, 0x12cd: 0x4309, 0x12ce: 0x430e, 0x12cf: 0x4313, + 0x12d2: 0x4318, 0x12d3: 0x431d, 0x12d4: 0x4322, 0x12d5: 0x4327, 0x12d6: 0x432c, 0x12d7: 0x4331, + 0x12da: 0x4336, 0x12db: 0x433b, 0x12dc: 0x4340, + 0x12e0: 0x00bf, 0x12e1: 0x00c2, 0x12e2: 0x00cb, 0x12e3: 0x4264, + 0x12e4: 0x00c8, 0x12e5: 0x00c5, 0x12e6: 0x0447, 0x12e8: 0x046b, 0x12e9: 0x044b, + 0x12ea: 0x044f, 0x12eb: 0x0453, 0x12ec: 0x0457, 0x12ed: 0x046f, 0x12ee: 0x0473, + // Block 0x4c, offset 0x1300 + 0x1300: 0x0063, 0x1301: 0x0065, 0x1302: 0x0067, 0x1303: 0x0069, 0x1304: 0x006b, 0x1305: 0x006d, + 0x1306: 0x006f, 0x1307: 0x0071, 0x1308: 0x0073, 0x1309: 0x0075, 0x130a: 0x0083, 0x130b: 0x0085, + 0x130c: 0x0087, 0x130d: 0x0089, 0x130e: 0x008b, 0x130f: 0x008d, 0x1310: 0x008f, 0x1311: 0x0091, + 0x1312: 0x0093, 0x1313: 0x0095, 0x1314: 0x0097, 0x1315: 0x0099, 0x1316: 0x009b, 0x1317: 0x009d, + 0x1318: 0x009f, 0x1319: 0x00a1, 0x131a: 0x00a3, 0x131b: 0x00a5, 0x131c: 0x00a7, 0x131d: 0x00a9, + 0x131e: 0x00ab, 0x131f: 0x00ad, 0x1320: 0x00af, 0x1321: 0x00b1, 0x1322: 0x00b3, 0x1323: 0x00b5, + 0x1324: 0x00dd, 0x1325: 0x00f2, 0x1328: 0x0173, 0x1329: 0x0176, + 0x132a: 0x0179, 0x132b: 0x017c, 0x132c: 0x017f, 0x132d: 0x0182, 0x132e: 0x0185, 0x132f: 0x0188, + 0x1330: 0x018b, 0x1331: 0x018e, 0x1332: 0x0191, 0x1333: 0x0194, 0x1334: 0x0197, 0x1335: 0x019a, + 0x1336: 0x019d, 0x1337: 0x01a0, 0x1338: 0x01a3, 0x1339: 0x0188, 0x133a: 0x01a6, 0x133b: 0x01a9, + 0x133c: 0x01ac, 0x133d: 0x01af, 0x133e: 0x01b2, 0x133f: 0x01b5, + // Block 0x4d, offset 0x1340 + 0x1340: 0x01fd, 0x1341: 0x0200, 0x1342: 0x0203, 0x1343: 0x045b, 0x1344: 0x01c7, 0x1345: 0x01d0, + 0x1346: 0x01d6, 0x1347: 0x01fa, 0x1348: 0x01eb, 0x1349: 0x01e8, 0x134a: 0x0206, 0x134b: 0x0209, + 0x134e: 0x0021, 0x134f: 0x0023, 0x1350: 0x0025, 0x1351: 0x0027, + 0x1352: 0x0029, 0x1353: 0x002b, 0x1354: 0x002d, 0x1355: 0x002f, 0x1356: 0x0031, 0x1357: 0x0033, + 0x1358: 0x0021, 0x1359: 0x0023, 0x135a: 0x0025, 0x135b: 0x0027, 0x135c: 0x0029, 0x135d: 0x002b, + 0x135e: 0x002d, 0x135f: 0x002f, 0x1360: 0x0031, 0x1361: 0x0033, 0x1362: 0x0021, 0x1363: 0x0023, + 0x1364: 0x0025, 0x1365: 0x0027, 0x1366: 0x0029, 0x1367: 0x002b, 0x1368: 0x002d, 0x1369: 0x002f, + 0x136a: 0x0031, 0x136b: 0x0033, 0x136c: 0x0021, 0x136d: 0x0023, 0x136e: 0x0025, 0x136f: 0x0027, + 0x1370: 0x0029, 0x1371: 0x002b, 0x1372: 0x002d, 0x1373: 0x002f, 0x1374: 0x0031, 0x1375: 0x0033, + 0x1376: 0x0021, 0x1377: 0x0023, 0x1378: 0x0025, 0x1379: 0x0027, 0x137a: 0x0029, 0x137b: 0x002b, + 0x137c: 0x002d, 0x137d: 0x002f, 0x137e: 0x0031, 0x137f: 0x0033, + // Block 0x4e, offset 0x1380 + 0x1380: 0x0239, 0x1381: 0x023c, 0x1382: 0x0248, 0x1383: 0x0251, 0x1385: 0x028a, + 0x1386: 0x025a, 0x1387: 0x024b, 0x1388: 0x0269, 0x1389: 0x0290, 0x138a: 0x027b, 0x138b: 0x027e, + 0x138c: 0x0281, 0x138d: 0x0284, 0x138e: 0x025d, 0x138f: 0x026f, 0x1390: 0x0275, 0x1391: 0x0263, + 0x1392: 0x0278, 0x1393: 0x0257, 0x1394: 0x0260, 0x1395: 0x0242, 0x1396: 0x0245, 0x1397: 0x024e, + 0x1398: 0x0254, 0x1399: 0x0266, 0x139a: 0x026c, 0x139b: 0x0272, 0x139c: 0x0293, 0x139d: 0x02e4, + 0x139e: 0x02cc, 0x139f: 0x0296, 0x13a1: 0x023c, 0x13a2: 0x0248, + 0x13a4: 0x0287, 0x13a7: 0x024b, 0x13a9: 0x0290, + 0x13aa: 0x027b, 0x13ab: 0x027e, 0x13ac: 0x0281, 0x13ad: 0x0284, 0x13ae: 0x025d, 0x13af: 0x026f, + 0x13b0: 0x0275, 0x13b1: 0x0263, 0x13b2: 0x0278, 0x13b4: 0x0260, 0x13b5: 0x0242, + 0x13b6: 0x0245, 0x13b7: 0x024e, 0x13b9: 0x0266, 0x13bb: 0x0272, + // Block 0x4f, offset 0x13c0 + 0x13c2: 0x0248, + 0x13c7: 0x024b, 0x13c9: 0x0290, 0x13cb: 0x027e, + 0x13cd: 0x0284, 0x13ce: 0x025d, 0x13cf: 0x026f, 0x13d1: 0x0263, + 0x13d2: 0x0278, 0x13d4: 0x0260, 0x13d7: 0x024e, + 0x13d9: 0x0266, 0x13db: 0x0272, 0x13dd: 0x02e4, + 0x13df: 0x0296, 0x13e1: 0x023c, 0x13e2: 0x0248, + 0x13e4: 0x0287, 0x13e7: 0x024b, 0x13e8: 0x0269, 0x13e9: 0x0290, + 0x13ea: 0x027b, 0x13ec: 0x0281, 0x13ed: 0x0284, 0x13ee: 0x025d, 0x13ef: 0x026f, + 0x13f0: 0x0275, 0x13f1: 0x0263, 0x13f2: 0x0278, 0x13f4: 0x0260, 0x13f5: 0x0242, + 0x13f6: 0x0245, 0x13f7: 0x024e, 0x13f9: 0x0266, 0x13fa: 0x026c, 0x13fb: 0x0272, + 0x13fc: 0x0293, 0x13fe: 0x02cc, + // Block 0x50, offset 0x1400 + 0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1404: 0x0287, 0x1405: 0x028a, + 0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140b: 0x027e, + 0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263, + 0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e, + 0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272, + 0x1421: 0x023c, 0x1422: 0x0248, 0x1423: 0x0251, + 0x1425: 0x028a, 0x1426: 0x025a, 0x1427: 0x024b, 0x1428: 0x0269, 0x1429: 0x0290, + 0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f, + 0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1433: 0x0257, 0x1434: 0x0260, 0x1435: 0x0242, + 0x1436: 0x0245, 0x1437: 0x024e, 0x1438: 0x0254, 0x1439: 0x0266, 0x143a: 0x026c, 0x143b: 0x0272, + // Block 0x51, offset 0x1440 + 0x1440: 0x1879, 0x1441: 0x1876, 0x1442: 0x187c, 0x1443: 0x18a0, 0x1444: 0x18c4, 0x1445: 0x18e8, + 0x1446: 0x190c, 0x1447: 0x1915, 0x1448: 0x191b, 0x1449: 0x1921, 0x144a: 0x1927, + 0x1450: 0x1a8c, 0x1451: 0x1a90, + 0x1452: 0x1a94, 0x1453: 0x1a98, 0x1454: 0x1a9c, 0x1455: 0x1aa0, 0x1456: 0x1aa4, 0x1457: 0x1aa8, + 0x1458: 0x1aac, 0x1459: 0x1ab0, 0x145a: 0x1ab4, 0x145b: 0x1ab8, 0x145c: 0x1abc, 0x145d: 0x1ac0, + 0x145e: 0x1ac4, 0x145f: 0x1ac8, 0x1460: 0x1acc, 0x1461: 0x1ad0, 0x1462: 0x1ad4, 0x1463: 0x1ad8, + 0x1464: 0x1adc, 0x1465: 0x1ae0, 0x1466: 0x1ae4, 0x1467: 0x1ae8, 0x1468: 0x1aec, 0x1469: 0x1af0, + 0x146a: 0x271e, 0x146b: 0x0047, 0x146c: 0x0065, 0x146d: 0x193c, 0x146e: 0x19b1, + 0x1470: 0x0043, 0x1471: 0x0045, 0x1472: 0x0047, 0x1473: 0x0049, 0x1474: 0x004b, 0x1475: 0x004d, + 0x1476: 0x004f, 0x1477: 0x0051, 0x1478: 0x0053, 0x1479: 0x0055, 0x147a: 0x0057, 0x147b: 0x0059, + 0x147c: 0x005b, 0x147d: 0x005d, 0x147e: 0x005f, 0x147f: 0x0061, + // Block 0x52, offset 0x1480 + 0x1480: 0x26ad, 0x1481: 0x26c2, 0x1482: 0x0503, + 0x1490: 0x0c0f, 0x1491: 0x0a47, + 0x1492: 0x08d3, 0x1493: 0x465a, 0x1494: 0x071b, 0x1495: 0x09ef, 0x1496: 0x132f, 0x1497: 0x09ff, + 0x1498: 0x0727, 0x1499: 0x0cd7, 0x149a: 0x0eaf, 0x149b: 0x0caf, 0x149c: 0x0827, 0x149d: 0x0b6b, + 0x149e: 0x07bf, 0x149f: 0x0cb7, 0x14a0: 0x0813, 0x14a1: 0x1117, 0x14a2: 0x0f83, 0x14a3: 0x138b, + 0x14a4: 0x09d3, 0x14a5: 0x090b, 0x14a6: 0x0e63, 0x14a7: 0x0c1b, 0x14a8: 0x0c47, 0x14a9: 0x06bf, + 0x14aa: 0x06cb, 0x14ab: 0x140b, 0x14ac: 0x0adb, 0x14ad: 0x06e7, 0x14ae: 0x08ef, 0x14af: 0x0c3b, + 0x14b0: 0x13b3, 0x14b1: 0x0c13, 0x14b2: 0x106f, 0x14b3: 0x10ab, 0x14b4: 0x08f7, 0x14b5: 0x0e43, + 0x14b6: 0x0d0b, 0x14b7: 0x0d07, 0x14b8: 0x0f97, 0x14b9: 0x082b, 0x14ba: 0x0957, 0x14bb: 0x1443, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x06fb, 0x14c1: 0x06f3, 0x14c2: 0x0703, 0x14c3: 0x1647, 0x14c4: 0x0747, 0x14c5: 0x0757, + 0x14c6: 0x075b, 0x14c7: 0x0763, 0x14c8: 0x076b, 0x14c9: 0x076f, 0x14ca: 0x077b, 0x14cb: 0x0773, + 0x14cc: 0x05b3, 0x14cd: 0x165b, 0x14ce: 0x078f, 0x14cf: 0x0793, 0x14d0: 0x0797, 0x14d1: 0x07b3, + 0x14d2: 0x164c, 0x14d3: 0x05b7, 0x14d4: 0x079f, 0x14d5: 0x07bf, 0x14d6: 0x1656, 0x14d7: 0x07cf, + 0x14d8: 0x07d7, 0x14d9: 0x0737, 0x14da: 0x07df, 0x14db: 0x07e3, 0x14dc: 0x1831, 0x14dd: 0x07ff, + 0x14de: 0x0807, 0x14df: 0x05bf, 0x14e0: 0x081f, 0x14e1: 0x0823, 0x14e2: 0x082b, 0x14e3: 0x082f, + 0x14e4: 0x05c3, 0x14e5: 0x0847, 0x14e6: 0x084b, 0x14e7: 0x0857, 0x14e8: 0x0863, 0x14e9: 0x0867, + 0x14ea: 0x086b, 0x14eb: 0x0873, 0x14ec: 0x0893, 0x14ed: 0x0897, 0x14ee: 0x089f, 0x14ef: 0x08af, + 0x14f0: 0x08b7, 0x14f1: 0x08bb, 0x14f2: 0x08bb, 0x14f3: 0x08bb, 0x14f4: 0x166a, 0x14f5: 0x0e93, + 0x14f6: 0x08cf, 0x14f7: 0x08d7, 0x14f8: 0x166f, 0x14f9: 0x08e3, 0x14fa: 0x08eb, 0x14fb: 0x08f3, + 0x14fc: 0x091b, 0x14fd: 0x0907, 0x14fe: 0x0913, 0x14ff: 0x0917, + // Block 0x54, offset 0x1500 + 0x1500: 0x091f, 0x1501: 0x0927, 0x1502: 0x092b, 0x1503: 0x0933, 0x1504: 0x093b, 0x1505: 0x093f, + 0x1506: 0x093f, 0x1507: 0x0947, 0x1508: 0x094f, 0x1509: 0x0953, 0x150a: 0x095f, 0x150b: 0x0983, + 0x150c: 0x0967, 0x150d: 0x0987, 0x150e: 0x096b, 0x150f: 0x0973, 0x1510: 0x080b, 0x1511: 0x09cf, + 0x1512: 0x0997, 0x1513: 0x099b, 0x1514: 0x099f, 0x1515: 0x0993, 0x1516: 0x09a7, 0x1517: 0x09a3, + 0x1518: 0x09bb, 0x1519: 0x1674, 0x151a: 0x09d7, 0x151b: 0x09db, 0x151c: 0x09e3, 0x151d: 0x09ef, + 0x151e: 0x09f7, 0x151f: 0x0a13, 0x1520: 0x1679, 0x1521: 0x167e, 0x1522: 0x0a1f, 0x1523: 0x0a23, + 0x1524: 0x0a27, 0x1525: 0x0a1b, 0x1526: 0x0a2f, 0x1527: 0x05c7, 0x1528: 0x05cb, 0x1529: 0x0a37, + 0x152a: 0x0a3f, 0x152b: 0x0a3f, 0x152c: 0x1683, 0x152d: 0x0a5b, 0x152e: 0x0a5f, 0x152f: 0x0a63, + 0x1530: 0x0a6b, 0x1531: 0x1688, 0x1532: 0x0a73, 0x1533: 0x0a77, 0x1534: 0x0b4f, 0x1535: 0x0a7f, + 0x1536: 0x05cf, 0x1537: 0x0a8b, 0x1538: 0x0a9b, 0x1539: 0x0aa7, 0x153a: 0x0aa3, 0x153b: 0x1692, + 0x153c: 0x0aaf, 0x153d: 0x1697, 0x153e: 0x0abb, 0x153f: 0x0ab7, + // Block 0x55, offset 0x1540 + 0x1540: 0x0abf, 0x1541: 0x0acf, 0x1542: 0x0ad3, 0x1543: 0x05d3, 0x1544: 0x0ae3, 0x1545: 0x0aeb, + 0x1546: 0x0aef, 0x1547: 0x0af3, 0x1548: 0x05d7, 0x1549: 0x169c, 0x154a: 0x05db, 0x154b: 0x0b0f, + 0x154c: 0x0b13, 0x154d: 0x0b17, 0x154e: 0x0b1f, 0x154f: 0x1863, 0x1550: 0x0b37, 0x1551: 0x16a6, + 0x1552: 0x16a6, 0x1553: 0x11d7, 0x1554: 0x0b47, 0x1555: 0x0b47, 0x1556: 0x05df, 0x1557: 0x16c9, + 0x1558: 0x179b, 0x1559: 0x0b57, 0x155a: 0x0b5f, 0x155b: 0x05e3, 0x155c: 0x0b73, 0x155d: 0x0b83, + 0x155e: 0x0b87, 0x155f: 0x0b8f, 0x1560: 0x0b9f, 0x1561: 0x05eb, 0x1562: 0x05e7, 0x1563: 0x0ba3, + 0x1564: 0x16ab, 0x1565: 0x0ba7, 0x1566: 0x0bbb, 0x1567: 0x0bbf, 0x1568: 0x0bc3, 0x1569: 0x0bbf, + 0x156a: 0x0bcf, 0x156b: 0x0bd3, 0x156c: 0x0be3, 0x156d: 0x0bdb, 0x156e: 0x0bdf, 0x156f: 0x0be7, + 0x1570: 0x0beb, 0x1571: 0x0bef, 0x1572: 0x0bfb, 0x1573: 0x0bff, 0x1574: 0x0c17, 0x1575: 0x0c1f, + 0x1576: 0x0c2f, 0x1577: 0x0c43, 0x1578: 0x16ba, 0x1579: 0x0c3f, 0x157a: 0x0c33, 0x157b: 0x0c4b, + 0x157c: 0x0c53, 0x157d: 0x0c67, 0x157e: 0x16bf, 0x157f: 0x0c6f, + // Block 0x56, offset 0x1580 + 0x1580: 0x0c63, 0x1581: 0x0c5b, 0x1582: 0x05ef, 0x1583: 0x0c77, 0x1584: 0x0c7f, 0x1585: 0x0c87, + 0x1586: 0x0c7b, 0x1587: 0x05f3, 0x1588: 0x0c97, 0x1589: 0x0c9f, 0x158a: 0x16c4, 0x158b: 0x0ccb, + 0x158c: 0x0cff, 0x158d: 0x0cdb, 0x158e: 0x05ff, 0x158f: 0x0ce7, 0x1590: 0x05fb, 0x1591: 0x05f7, + 0x1592: 0x07c3, 0x1593: 0x07c7, 0x1594: 0x0d03, 0x1595: 0x0ceb, 0x1596: 0x11ab, 0x1597: 0x0663, + 0x1598: 0x0d0f, 0x1599: 0x0d13, 0x159a: 0x0d17, 0x159b: 0x0d2b, 0x159c: 0x0d23, 0x159d: 0x16dd, + 0x159e: 0x0603, 0x159f: 0x0d3f, 0x15a0: 0x0d33, 0x15a1: 0x0d4f, 0x15a2: 0x0d57, 0x15a3: 0x16e7, + 0x15a4: 0x0d5b, 0x15a5: 0x0d47, 0x15a6: 0x0d63, 0x15a7: 0x0607, 0x15a8: 0x0d67, 0x15a9: 0x0d6b, + 0x15aa: 0x0d6f, 0x15ab: 0x0d7b, 0x15ac: 0x16ec, 0x15ad: 0x0d83, 0x15ae: 0x060b, 0x15af: 0x0d8f, + 0x15b0: 0x16f1, 0x15b1: 0x0d93, 0x15b2: 0x060f, 0x15b3: 0x0d9f, 0x15b4: 0x0dab, 0x15b5: 0x0db7, + 0x15b6: 0x0dbb, 0x15b7: 0x16f6, 0x15b8: 0x168d, 0x15b9: 0x16fb, 0x15ba: 0x0ddb, 0x15bb: 0x1700, + 0x15bc: 0x0de7, 0x15bd: 0x0def, 0x15be: 0x0ddf, 0x15bf: 0x0dfb, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x0e0b, 0x15c1: 0x0e1b, 0x15c2: 0x0e0f, 0x15c3: 0x0e13, 0x15c4: 0x0e1f, 0x15c5: 0x0e23, + 0x15c6: 0x1705, 0x15c7: 0x0e07, 0x15c8: 0x0e3b, 0x15c9: 0x0e3f, 0x15ca: 0x0613, 0x15cb: 0x0e53, + 0x15cc: 0x0e4f, 0x15cd: 0x170a, 0x15ce: 0x0e33, 0x15cf: 0x0e6f, 0x15d0: 0x170f, 0x15d1: 0x1714, + 0x15d2: 0x0e73, 0x15d3: 0x0e87, 0x15d4: 0x0e83, 0x15d5: 0x0e7f, 0x15d6: 0x0617, 0x15d7: 0x0e8b, + 0x15d8: 0x0e9b, 0x15d9: 0x0e97, 0x15da: 0x0ea3, 0x15db: 0x1651, 0x15dc: 0x0eb3, 0x15dd: 0x1719, + 0x15de: 0x0ebf, 0x15df: 0x1723, 0x15e0: 0x0ed3, 0x15e1: 0x0edf, 0x15e2: 0x0ef3, 0x15e3: 0x1728, + 0x15e4: 0x0f07, 0x15e5: 0x0f0b, 0x15e6: 0x172d, 0x15e7: 0x1732, 0x15e8: 0x0f27, 0x15e9: 0x0f37, + 0x15ea: 0x061b, 0x15eb: 0x0f3b, 0x15ec: 0x061f, 0x15ed: 0x061f, 0x15ee: 0x0f53, 0x15ef: 0x0f57, + 0x15f0: 0x0f5f, 0x15f1: 0x0f63, 0x15f2: 0x0f6f, 0x15f3: 0x0623, 0x15f4: 0x0f87, 0x15f5: 0x1737, + 0x15f6: 0x0fa3, 0x15f7: 0x173c, 0x15f8: 0x0faf, 0x15f9: 0x16a1, 0x15fa: 0x0fbf, 0x15fb: 0x1741, + 0x15fc: 0x1746, 0x15fd: 0x174b, 0x15fe: 0x0627, 0x15ff: 0x062b, + // Block 0x58, offset 0x1600 + 0x1600: 0x0ff7, 0x1601: 0x1755, 0x1602: 0x1750, 0x1603: 0x175a, 0x1604: 0x175f, 0x1605: 0x0fff, + 0x1606: 0x1003, 0x1607: 0x1003, 0x1608: 0x100b, 0x1609: 0x0633, 0x160a: 0x100f, 0x160b: 0x0637, + 0x160c: 0x063b, 0x160d: 0x1769, 0x160e: 0x1023, 0x160f: 0x102b, 0x1610: 0x1037, 0x1611: 0x063f, + 0x1612: 0x176e, 0x1613: 0x105b, 0x1614: 0x1773, 0x1615: 0x1778, 0x1616: 0x107b, 0x1617: 0x1093, + 0x1618: 0x0643, 0x1619: 0x109b, 0x161a: 0x109f, 0x161b: 0x10a3, 0x161c: 0x177d, 0x161d: 0x1782, + 0x161e: 0x1782, 0x161f: 0x10bb, 0x1620: 0x0647, 0x1621: 0x1787, 0x1622: 0x10cf, 0x1623: 0x10d3, + 0x1624: 0x064b, 0x1625: 0x178c, 0x1626: 0x10ef, 0x1627: 0x064f, 0x1628: 0x10ff, 0x1629: 0x10f7, + 0x162a: 0x1107, 0x162b: 0x1796, 0x162c: 0x111f, 0x162d: 0x0653, 0x162e: 0x112b, 0x162f: 0x1133, + 0x1630: 0x1143, 0x1631: 0x0657, 0x1632: 0x17a0, 0x1633: 0x17a5, 0x1634: 0x065b, 0x1635: 0x17aa, + 0x1636: 0x115b, 0x1637: 0x17af, 0x1638: 0x1167, 0x1639: 0x1173, 0x163a: 0x117b, 0x163b: 0x17b4, + 0x163c: 0x17b9, 0x163d: 0x118f, 0x163e: 0x17be, 0x163f: 0x1197, + // Block 0x59, offset 0x1640 + 0x1640: 0x16ce, 0x1641: 0x065f, 0x1642: 0x11af, 0x1643: 0x11b3, 0x1644: 0x0667, 0x1645: 0x11b7, + 0x1646: 0x0a33, 0x1647: 0x17c3, 0x1648: 0x17c8, 0x1649: 0x16d3, 0x164a: 0x16d8, 0x164b: 0x11d7, + 0x164c: 0x11db, 0x164d: 0x13f3, 0x164e: 0x066b, 0x164f: 0x1207, 0x1650: 0x1203, 0x1651: 0x120b, + 0x1652: 0x083f, 0x1653: 0x120f, 0x1654: 0x1213, 0x1655: 0x1217, 0x1656: 0x121f, 0x1657: 0x17cd, + 0x1658: 0x121b, 0x1659: 0x1223, 0x165a: 0x1237, 0x165b: 0x123b, 0x165c: 0x1227, 0x165d: 0x123f, + 0x165e: 0x1253, 0x165f: 0x1267, 0x1660: 0x1233, 0x1661: 0x1247, 0x1662: 0x124b, 0x1663: 0x124f, + 0x1664: 0x17d2, 0x1665: 0x17dc, 0x1666: 0x17d7, 0x1667: 0x066f, 0x1668: 0x126f, 0x1669: 0x1273, + 0x166a: 0x127b, 0x166b: 0x17f0, 0x166c: 0x127f, 0x166d: 0x17e1, 0x166e: 0x0673, 0x166f: 0x0677, + 0x1670: 0x17e6, 0x1671: 0x17eb, 0x1672: 0x067b, 0x1673: 0x129f, 0x1674: 0x12a3, 0x1675: 0x12a7, + 0x1676: 0x12ab, 0x1677: 0x12b7, 0x1678: 0x12b3, 0x1679: 0x12bf, 0x167a: 0x12bb, 0x167b: 0x12cb, + 0x167c: 0x12c3, 0x167d: 0x12c7, 0x167e: 0x12cf, 0x167f: 0x067f, + // Block 0x5a, offset 0x1680 + 0x1680: 0x12d7, 0x1681: 0x12db, 0x1682: 0x0683, 0x1683: 0x12eb, 0x1684: 0x12ef, 0x1685: 0x17f5, + 0x1686: 0x12fb, 0x1687: 0x12ff, 0x1688: 0x0687, 0x1689: 0x130b, 0x168a: 0x05bb, 0x168b: 0x17fa, + 0x168c: 0x17ff, 0x168d: 0x068b, 0x168e: 0x068f, 0x168f: 0x1337, 0x1690: 0x134f, 0x1691: 0x136b, + 0x1692: 0x137b, 0x1693: 0x1804, 0x1694: 0x138f, 0x1695: 0x1393, 0x1696: 0x13ab, 0x1697: 0x13b7, + 0x1698: 0x180e, 0x1699: 0x1660, 0x169a: 0x13c3, 0x169b: 0x13bf, 0x169c: 0x13cb, 0x169d: 0x1665, + 0x169e: 0x13d7, 0x169f: 0x13e3, 0x16a0: 0x1813, 0x16a1: 0x1818, 0x16a2: 0x1423, 0x16a3: 0x142f, + 0x16a4: 0x1437, 0x16a5: 0x181d, 0x16a6: 0x143b, 0x16a7: 0x1467, 0x16a8: 0x1473, 0x16a9: 0x1477, + 0x16aa: 0x146f, 0x16ab: 0x1483, 0x16ac: 0x1487, 0x16ad: 0x1822, 0x16ae: 0x1493, 0x16af: 0x0693, + 0x16b0: 0x149b, 0x16b1: 0x1827, 0x16b2: 0x0697, 0x16b3: 0x14d3, 0x16b4: 0x0ac3, 0x16b5: 0x14eb, + 0x16b6: 0x182c, 0x16b7: 0x1836, 0x16b8: 0x069b, 0x16b9: 0x069f, 0x16ba: 0x1513, 0x16bb: 0x183b, + 0x16bc: 0x06a3, 0x16bd: 0x1840, 0x16be: 0x152b, 0x16bf: 0x152b, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x1533, 0x16c1: 0x1845, 0x16c2: 0x154b, 0x16c3: 0x06a7, 0x16c4: 0x155b, 0x16c5: 0x1567, + 0x16c6: 0x156f, 0x16c7: 0x1577, 0x16c8: 0x06ab, 0x16c9: 0x184a, 0x16ca: 0x158b, 0x16cb: 0x15a7, + 0x16cc: 0x15b3, 0x16cd: 0x06af, 0x16ce: 0x06b3, 0x16cf: 0x15b7, 0x16d0: 0x184f, 0x16d1: 0x06b7, + 0x16d2: 0x1854, 0x16d3: 0x1859, 0x16d4: 0x185e, 0x16d5: 0x15db, 0x16d6: 0x06bb, 0x16d7: 0x15ef, + 0x16d8: 0x15f7, 0x16d9: 0x15fb, 0x16da: 0x1603, 0x16db: 0x160b, 0x16dc: 0x1613, 0x16dd: 0x1868, +} + +// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var nfkcIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x5a, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5b, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x5c, 0xcb: 0x5d, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, + 0xd0: 0x0a, 0xd1: 0x5e, 0xd2: 0x5f, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x60, + 0xd8: 0x61, 0xd9: 0x0d, 0xdb: 0x62, 0xdc: 0x63, 0xdd: 0x64, 0xdf: 0x65, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x66, 0x121: 0x67, 0x123: 0x68, 0x124: 0x69, 0x125: 0x6a, 0x126: 0x6b, 0x127: 0x6c, + 0x128: 0x6d, 0x129: 0x6e, 0x12a: 0x6f, 0x12b: 0x70, 0x12c: 0x6b, 0x12d: 0x71, 0x12e: 0x72, 0x12f: 0x73, + 0x131: 0x74, 0x132: 0x75, 0x133: 0x76, 0x134: 0x77, 0x135: 0x78, 0x137: 0x79, + 0x138: 0x7a, 0x139: 0x7b, 0x13a: 0x7c, 0x13b: 0x7d, 0x13c: 0x7e, 0x13d: 0x7f, 0x13e: 0x80, 0x13f: 0x81, + // Block 0x5, offset 0x140 + 0x140: 0x82, 0x142: 0x83, 0x143: 0x84, 0x144: 0x85, 0x145: 0x86, 0x146: 0x87, 0x147: 0x88, + 0x14d: 0x89, + 0x15c: 0x8a, 0x15f: 0x8b, + 0x162: 0x8c, 0x164: 0x8d, + 0x168: 0x8e, 0x169: 0x8f, 0x16a: 0x90, 0x16c: 0x0e, 0x16d: 0x91, 0x16e: 0x92, 0x16f: 0x93, + 0x170: 0x94, 0x173: 0x95, 0x174: 0x96, 0x175: 0x0f, 0x176: 0x10, 0x177: 0x97, + 0x178: 0x11, 0x179: 0x12, 0x17a: 0x13, 0x17b: 0x14, 0x17c: 0x15, 0x17d: 0x16, 0x17e: 0x17, 0x17f: 0x18, + // Block 0x6, offset 0x180 + 0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x19, 0x185: 0x1a, 0x186: 0x9c, 0x187: 0x9d, + 0x188: 0x9e, 0x189: 0x1b, 0x18a: 0x1c, 0x18b: 0x9f, 0x18c: 0xa0, + 0x191: 0x1d, 0x192: 0x1e, 0x193: 0xa1, + 0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4, + 0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8, + 0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x1f, 0x1bd: 0x20, 0x1be: 0x21, 0x1bf: 0xab, + // Block 0x7, offset 0x1c0 + 0x1c0: 0xac, 0x1c1: 0x22, 0x1c2: 0x23, 0x1c3: 0x24, 0x1c4: 0xad, 0x1c5: 0x25, 0x1c6: 0x26, + 0x1c8: 0x27, 0x1c9: 0x28, 0x1ca: 0x29, 0x1cb: 0x2a, 0x1cc: 0x2b, 0x1cd: 0x2c, 0x1ce: 0x2d, 0x1cf: 0x2e, + // Block 0x8, offset 0x200 + 0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2, + 0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8, + 0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc, + 0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd, + 0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe, + // Block 0x9, offset 0x240 + 0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf, + 0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0, + 0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1, + 0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2, + 0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3, + 0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd, + 0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe, + 0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf, + // Block 0xa, offset 0x280 + 0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0, + 0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1, + 0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2, + 0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3, + 0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd, + 0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe, + 0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf, + 0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0, + // Block 0xb, offset 0x2c0 + 0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1, + 0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2, + 0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3, + 0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4, + // Block 0xc, offset 0x300 + 0x324: 0x2f, 0x325: 0x30, 0x326: 0x31, 0x327: 0x32, + 0x328: 0x33, 0x329: 0x34, 0x32a: 0x35, 0x32b: 0x36, 0x32c: 0x37, 0x32d: 0x38, 0x32e: 0x39, 0x32f: 0x3a, + 0x330: 0x3b, 0x331: 0x3c, 0x332: 0x3d, 0x333: 0x3e, 0x334: 0x3f, 0x335: 0x40, 0x336: 0x41, 0x337: 0x42, + 0x338: 0x43, 0x339: 0x44, 0x33a: 0x45, 0x33b: 0x46, 0x33c: 0xc5, 0x33d: 0x47, 0x33e: 0x48, 0x33f: 0x49, + // Block 0xd, offset 0x340 + 0x347: 0xc6, + 0x34b: 0xc7, 0x34d: 0xc8, + 0x368: 0xc9, 0x36b: 0xca, + // Block 0xe, offset 0x380 + 0x381: 0xcb, 0x382: 0xcc, 0x384: 0xcd, 0x385: 0xb7, 0x387: 0xce, + 0x388: 0xcf, 0x38b: 0xd0, 0x38c: 0x6b, 0x38d: 0xd1, + 0x391: 0xd2, 0x392: 0xd3, 0x393: 0xd4, 0x396: 0xd5, 0x397: 0xd6, + 0x398: 0xd7, 0x39a: 0xd8, 0x39c: 0xd9, + 0x3b0: 0xd7, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xda, 0x3ec: 0xdb, + // Block 0x10, offset 0x400 + 0x432: 0xdc, + // Block 0x11, offset 0x440 + 0x445: 0xdd, 0x446: 0xde, 0x447: 0xdf, + 0x449: 0xe0, + 0x450: 0xe1, 0x451: 0xe2, 0x452: 0xe3, 0x453: 0xe4, 0x454: 0xe5, 0x455: 0xe6, 0x456: 0xe7, 0x457: 0xe8, + 0x458: 0xe9, 0x459: 0xea, 0x45a: 0x4a, 0x45b: 0xeb, 0x45c: 0xec, 0x45d: 0xed, 0x45e: 0xee, 0x45f: 0x4b, + // Block 0x12, offset 0x480 + 0x480: 0xef, + 0x4a3: 0xf0, 0x4a5: 0xf1, + 0x4b8: 0x4c, 0x4b9: 0x4d, 0x4ba: 0x4e, + // Block 0x13, offset 0x4c0 + 0x4c4: 0x4f, 0x4c5: 0xf2, 0x4c6: 0xf3, + 0x4c8: 0x50, 0x4c9: 0xf4, + // Block 0x14, offset 0x500 + 0x520: 0x51, 0x521: 0x52, 0x522: 0x53, 0x523: 0x54, 0x524: 0x55, 0x525: 0x56, 0x526: 0x57, 0x527: 0x58, + 0x528: 0x59, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfkcSparseOffset: 155 entries, 310 bytes +var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x6f, 0x74, 0x76, 0x87, 0x8f, 0x96, 0x99, 0xa0, 0xa4, 0xa8, 0xaa, 0xac, 0xb5, 0xb9, 0xc0, 0xc5, 0xc8, 0xd2, 0xd4, 0xdb, 0xe3, 0xe7, 0xe9, 0xec, 0xf0, 0xf6, 0x107, 0x113, 0x115, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12c, 0x12f, 0x131, 0x134, 0x137, 0x13b, 0x140, 0x149, 0x14b, 0x14e, 0x150, 0x15b, 0x166, 0x176, 0x184, 0x192, 0x1a2, 0x1b0, 0x1b7, 0x1bd, 0x1cc, 0x1d0, 0x1d2, 0x1d6, 0x1d8, 0x1db, 0x1dd, 0x1e0, 0x1e2, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1f7, 0x201, 0x20b, 0x20e, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21d, 0x21f, 0x221, 0x223, 0x225, 0x22b, 0x22e, 0x232, 0x234, 0x23b, 0x241, 0x247, 0x24f, 0x255, 0x25b, 0x261, 0x265, 0x267, 0x269, 0x26b, 0x26d, 0x273, 0x276, 0x279, 0x281, 0x288, 0x28b, 0x28e, 0x290, 0x298, 0x29b, 0x2a2, 0x2a5, 0x2ab, 0x2ad, 0x2af, 0x2b2, 0x2b4, 0x2b6, 0x2b8, 0x2ba, 0x2c7, 0x2d1, 0x2d3, 0x2d5, 0x2d9, 0x2de, 0x2ea, 0x2ef, 0x2f8, 0x2fe, 0x303, 0x307, 0x30c, 0x310, 0x320, 0x32e, 0x33c, 0x34a, 0x350, 0x352, 0x355, 0x35f, 0x361} + +// nfkcSparseValues: 875 entries, 3500 bytes +var nfkcSparseValues = [875]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0002, lo: 0x0d}, + {value: 0x0001, lo: 0xa0, hi: 0xa0}, + {value: 0x4278, lo: 0xa8, hi: 0xa8}, + {value: 0x0083, lo: 0xaa, hi: 0xaa}, + {value: 0x4264, lo: 0xaf, hi: 0xaf}, + {value: 0x0025, lo: 0xb2, hi: 0xb3}, + {value: 0x425a, lo: 0xb4, hi: 0xb4}, + {value: 0x01dc, lo: 0xb5, hi: 0xb5}, + {value: 0x4291, lo: 0xb8, hi: 0xb8}, + {value: 0x0023, lo: 0xb9, hi: 0xb9}, + {value: 0x009f, lo: 0xba, hi: 0xba}, + {value: 0x221c, lo: 0xbc, hi: 0xbc}, + {value: 0x2210, lo: 0xbd, hi: 0xbd}, + {value: 0x22b2, lo: 0xbe, hi: 0xbe}, + // Block 0x1, offset 0xe + {value: 0x0091, lo: 0x03}, + {value: 0x4778, lo: 0xa0, hi: 0xa1}, + {value: 0x47aa, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x12 + {value: 0x0003, lo: 0x08}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x0091, lo: 0xb0, hi: 0xb0}, + {value: 0x0119, lo: 0xb1, hi: 0xb1}, + {value: 0x0095, lo: 0xb2, hi: 0xb2}, + {value: 0x00a5, lo: 0xb3, hi: 0xb3}, + {value: 0x0143, lo: 0xb4, hi: 0xb6}, + {value: 0x00af, lo: 0xb7, hi: 0xb7}, + {value: 0x00b3, lo: 0xb8, hi: 0xb8}, + // Block 0x3, offset 0x1b + {value: 0x000a, lo: 0x09}, + {value: 0x426e, lo: 0x98, hi: 0x98}, + {value: 0x4273, lo: 0x99, hi: 0x9a}, + {value: 0x4296, lo: 0x9b, hi: 0x9b}, + {value: 0x425f, lo: 0x9c, hi: 0x9c}, + {value: 0x4282, lo: 0x9d, hi: 0x9d}, + {value: 0x0113, lo: 0xa0, hi: 0xa0}, + {value: 0x0099, lo: 0xa1, hi: 0xa1}, + {value: 0x00a7, lo: 0xa2, hi: 0xa3}, + {value: 0x0167, lo: 0xa4, hi: 0xa4}, + // Block 0x4, offset 0x25 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37a5, lo: 0x90, hi: 0x90}, + {value: 0x37b1, lo: 0x91, hi: 0x91}, + {value: 0x379f, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x3817, lo: 0x97, hi: 0x97}, + {value: 0x37e1, lo: 0x9c, hi: 0x9c}, + {value: 0x37c9, lo: 0x9d, hi: 0x9d}, + {value: 0x37f3, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x381d, lo: 0xb6, hi: 0xb6}, + {value: 0x3823, lo: 0xb7, hi: 0xb7}, + // Block 0x5, offset 0x35 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x83, hi: 0x87}, + // Block 0x6, offset 0x37 + {value: 0x0001, lo: 0x04}, + {value: 0x8113, lo: 0x81, hi: 0x82}, + {value: 0x8132, lo: 0x84, hi: 0x84}, + {value: 0x812d, lo: 0x85, hi: 0x85}, + {value: 0x810d, lo: 0x87, hi: 0x87}, + // Block 0x7, offset 0x3c + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x97}, + {value: 0x8119, lo: 0x98, hi: 0x98}, + {value: 0x811a, lo: 0x99, hi: 0x99}, + {value: 0x811b, lo: 0x9a, hi: 0x9a}, + {value: 0x3841, lo: 0xa2, hi: 0xa2}, + {value: 0x3847, lo: 0xa3, hi: 0xa3}, + {value: 0x3853, lo: 0xa4, hi: 0xa4}, + {value: 0x384d, lo: 0xa5, hi: 0xa5}, + {value: 0x3859, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x8, offset 0x47 + {value: 0x0000, lo: 0x0e}, + {value: 0x386b, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x385f, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x3865, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8132, lo: 0x96, hi: 0x9c}, + {value: 0x8132, lo: 0x9f, hi: 0xa2}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa4}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + // Block 0x9, offset 0x56 + {value: 0x0000, lo: 0x0c}, + {value: 0x811f, lo: 0x91, hi: 0x91}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x812d, lo: 0xb1, hi: 0xb1}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb5, hi: 0xb6}, + {value: 0x812d, lo: 0xb7, hi: 0xb9}, + {value: 0x8132, lo: 0xba, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbc}, + {value: 0x8132, lo: 0xbd, hi: 0xbd}, + {value: 0x812d, lo: 0xbe, hi: 0xbe}, + {value: 0x8132, lo: 0xbf, hi: 0xbf}, + // Block 0xa, offset 0x63 + {value: 0x0005, lo: 0x07}, + {value: 0x8132, lo: 0x80, hi: 0x80}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x83}, + {value: 0x812d, lo: 0x84, hi: 0x85}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x812d, lo: 0x88, hi: 0x89}, + {value: 0x8132, lo: 0x8a, hi: 0x8a}, + // Block 0xb, offset 0x6b + {value: 0x0000, lo: 0x03}, + {value: 0x8132, lo: 0xab, hi: 0xb1}, + {value: 0x812d, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb3}, + // Block 0xc, offset 0x6f + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0x96, hi: 0x99}, + {value: 0x8132, lo: 0x9b, hi: 0xa3}, + {value: 0x8132, lo: 0xa5, hi: 0xa7}, + {value: 0x8132, lo: 0xa9, hi: 0xad}, + // Block 0xd, offset 0x74 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x99, hi: 0x9b}, + // Block 0xe, offset 0x76 + {value: 0x0000, lo: 0x10}, + {value: 0x8132, lo: 0x94, hi: 0xa1}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xa9, hi: 0xa9}, + {value: 0x8132, lo: 0xaa, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xaf}, + {value: 0x8116, lo: 0xb0, hi: 0xb0}, + {value: 0x8117, lo: 0xb1, hi: 0xb1}, + {value: 0x8118, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb5}, + {value: 0x812d, lo: 0xb6, hi: 0xb6}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x812d, lo: 0xb9, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbf}, + // Block 0xf, offset 0x87 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3ed8, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ee0, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3ee8, lo: 0xb4, hi: 0xb4}, + {value: 0x9902, lo: 0xbc, hi: 0xbc}, + // Block 0x10, offset 0x8f + {value: 0x0008, lo: 0x06}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x91, hi: 0x91}, + {value: 0x812d, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x93, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x94}, + {value: 0x45b2, lo: 0x98, hi: 0x9f}, + // Block 0x11, offset 0x96 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x12, offset 0x99 + {value: 0x0008, lo: 0x06}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2c9e, lo: 0x8b, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x45f2, lo: 0x9c, hi: 0x9d}, + {value: 0x4602, lo: 0x9f, hi: 0x9f}, + // Block 0x13, offset 0xa0 + {value: 0x0000, lo: 0x03}, + {value: 0x462a, lo: 0xb3, hi: 0xb3}, + {value: 0x4632, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x14, offset 0xa4 + {value: 0x0008, lo: 0x03}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x460a, lo: 0x99, hi: 0x9b}, + {value: 0x4622, lo: 0x9e, hi: 0x9e}, + // Block 0x15, offset 0xa8 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x16, offset 0xaa + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + // Block 0x17, offset 0xac + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cb6, lo: 0x88, hi: 0x88}, + {value: 0x2cae, lo: 0x8b, hi: 0x8b}, + {value: 0x2cbe, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x463a, lo: 0x9c, hi: 0x9c}, + {value: 0x4642, lo: 0x9d, hi: 0x9d}, + // Block 0x18, offset 0xb5 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cc6, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x19, offset 0xb9 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cce, lo: 0x8a, hi: 0x8a}, + {value: 0x2cde, lo: 0x8b, hi: 0x8b}, + {value: 0x2cd6, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1a, offset 0xc0 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3ef0, lo: 0x88, hi: 0x88}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8120, lo: 0x95, hi: 0x96}, + // Block 0x1b, offset 0xc5 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1c, offset 0xc8 + {value: 0x0000, lo: 0x09}, + {value: 0x2ce6, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cee, lo: 0x87, hi: 0x87}, + {value: 0x2cf6, lo: 0x88, hi: 0x88}, + {value: 0x2f50, lo: 0x8a, hi: 0x8a}, + {value: 0x2dd8, lo: 0x8b, hi: 0x8b}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1d, offset 0xd2 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xd4 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, + {value: 0x2d0e, lo: 0x8b, hi: 0x8b}, + {value: 0x2d06, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1f, offset 0xdb + {value: 0x6bea, lo: 0x07}, + {value: 0x9904, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3ef8, lo: 0x9a, hi: 0x9a}, + {value: 0x2f58, lo: 0x9c, hi: 0x9c}, + {value: 0x2de3, lo: 0x9d, hi: 0x9d}, + {value: 0x2d16, lo: 0x9e, hi: 0x9f}, + // Block 0x20, offset 0xe3 + {value: 0x0000, lo: 0x03}, + {value: 0x2621, lo: 0xb3, hi: 0xb3}, + {value: 0x8122, lo: 0xb8, hi: 0xb9}, + {value: 0x8104, lo: 0xba, hi: 0xba}, + // Block 0x21, offset 0xe7 + {value: 0x0000, lo: 0x01}, + {value: 0x8123, lo: 0x88, hi: 0x8b}, + // Block 0x22, offset 0xe9 + {value: 0x0000, lo: 0x02}, + {value: 0x2636, lo: 0xb3, hi: 0xb3}, + {value: 0x8124, lo: 0xb8, hi: 0xb9}, + // Block 0x23, offset 0xec + {value: 0x0000, lo: 0x03}, + {value: 0x8125, lo: 0x88, hi: 0x8b}, + {value: 0x2628, lo: 0x9c, hi: 0x9c}, + {value: 0x262f, lo: 0x9d, hi: 0x9d}, + // Block 0x24, offset 0xf0 + {value: 0x0000, lo: 0x05}, + {value: 0x030b, lo: 0x8c, hi: 0x8c}, + {value: 0x812d, lo: 0x98, hi: 0x99}, + {value: 0x812d, lo: 0xb5, hi: 0xb5}, + {value: 0x812d, lo: 0xb7, hi: 0xb7}, + {value: 0x812b, lo: 0xb9, hi: 0xb9}, + // Block 0x25, offset 0xf6 + {value: 0x0000, lo: 0x10}, + {value: 0x2644, lo: 0x83, hi: 0x83}, + {value: 0x264b, lo: 0x8d, hi: 0x8d}, + {value: 0x2652, lo: 0x92, hi: 0x92}, + {value: 0x2659, lo: 0x97, hi: 0x97}, + {value: 0x2660, lo: 0x9c, hi: 0x9c}, + {value: 0x263d, lo: 0xa9, hi: 0xa9}, + {value: 0x8126, lo: 0xb1, hi: 0xb1}, + {value: 0x8127, lo: 0xb2, hi: 0xb2}, + {value: 0x4a66, lo: 0xb3, hi: 0xb3}, + {value: 0x8128, lo: 0xb4, hi: 0xb4}, + {value: 0x4a6f, lo: 0xb5, hi: 0xb5}, + {value: 0x464a, lo: 0xb6, hi: 0xb6}, + {value: 0x468a, lo: 0xb7, hi: 0xb7}, + {value: 0x4652, lo: 0xb8, hi: 0xb8}, + {value: 0x4695, lo: 0xb9, hi: 0xb9}, + {value: 0x8127, lo: 0xba, hi: 0xbd}, + // Block 0x26, offset 0x107 + {value: 0x0000, lo: 0x0b}, + {value: 0x8127, lo: 0x80, hi: 0x80}, + {value: 0x4a78, lo: 0x81, hi: 0x81}, + {value: 0x8132, lo: 0x82, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0x86, hi: 0x87}, + {value: 0x266e, lo: 0x93, hi: 0x93}, + {value: 0x2675, lo: 0x9d, hi: 0x9d}, + {value: 0x267c, lo: 0xa2, hi: 0xa2}, + {value: 0x2683, lo: 0xa7, hi: 0xa7}, + {value: 0x268a, lo: 0xac, hi: 0xac}, + {value: 0x2667, lo: 0xb9, hi: 0xb9}, + // Block 0x27, offset 0x113 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x86, hi: 0x86}, + // Block 0x28, offset 0x115 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x29, offset 0x11b + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + // Block 0x2a, offset 0x11d + {value: 0x0000, lo: 0x01}, + {value: 0x030f, lo: 0xbc, hi: 0xbc}, + // Block 0x2b, offset 0x11f + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2c, offset 0x121 + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2d, offset 0x123 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2e, offset 0x125 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2f, offset 0x127 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9d, hi: 0x9f}, + // Block 0x30, offset 0x129 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x94, hi: 0x94}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x31, offset 0x12c + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x9d, hi: 0x9d}, + // Block 0x32, offset 0x12f + {value: 0x0000, lo: 0x01}, + {value: 0x8131, lo: 0xa9, hi: 0xa9}, + // Block 0x33, offset 0x131 + {value: 0x0004, lo: 0x02}, + {value: 0x812e, lo: 0xb9, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbb}, + // Block 0x34, offset 0x134 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x97, hi: 0x97}, + {value: 0x812d, lo: 0x98, hi: 0x98}, + // Block 0x35, offset 0x137 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0xa0, hi: 0xa0}, + {value: 0x8132, lo: 0xb5, hi: 0xbc}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x36, offset 0x13b + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + {value: 0x812d, lo: 0xb5, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x37, offset 0x140 + {value: 0x0000, lo: 0x08}, + {value: 0x2d66, lo: 0x80, hi: 0x80}, + {value: 0x2d6e, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d76, lo: 0x83, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xac}, + {value: 0x8132, lo: 0xad, hi: 0xb3}, + // Block 0x38, offset 0x149 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xaa, hi: 0xab}, + // Block 0x39, offset 0x14b + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xa6, hi: 0xa6}, + {value: 0x8104, lo: 0xb2, hi: 0xb3}, + // Block 0x3a, offset 0x14e + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x3b, offset 0x150 + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812d, lo: 0x95, hi: 0x99}, + {value: 0x8132, lo: 0x9a, hi: 0x9b}, + {value: 0x812d, lo: 0x9c, hi: 0x9f}, + {value: 0x8132, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + {value: 0x8132, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb8, hi: 0xb9}, + // Block 0x3c, offset 0x15b + {value: 0x0002, lo: 0x0a}, + {value: 0x0043, lo: 0xac, hi: 0xac}, + {value: 0x00d1, lo: 0xad, hi: 0xad}, + {value: 0x0045, lo: 0xae, hi: 0xae}, + {value: 0x0049, lo: 0xb0, hi: 0xb1}, + {value: 0x00e6, lo: 0xb2, hi: 0xb2}, + {value: 0x004f, lo: 0xb3, hi: 0xba}, + {value: 0x005f, lo: 0xbc, hi: 0xbc}, + {value: 0x00ef, lo: 0xbd, hi: 0xbd}, + {value: 0x0061, lo: 0xbe, hi: 0xbe}, + {value: 0x0065, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x166 + {value: 0x0000, lo: 0x0f}, + {value: 0x8132, lo: 0x80, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x82}, + {value: 0x8132, lo: 0x83, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8a}, + {value: 0x8132, lo: 0x8b, hi: 0x8c}, + {value: 0x8135, lo: 0x8d, hi: 0x8d}, + {value: 0x812a, lo: 0x8e, hi: 0x8e}, + {value: 0x812d, lo: 0x8f, hi: 0x8f}, + {value: 0x8129, lo: 0x90, hi: 0x90}, + {value: 0x8132, lo: 0x91, hi: 0xb5}, + {value: 0x8132, lo: 0xbb, hi: 0xbb}, + {value: 0x8134, lo: 0xbc, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + {value: 0x8132, lo: 0xbe, hi: 0xbe}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x3e, offset 0x176 + {value: 0x0000, lo: 0x0d}, + {value: 0x0001, lo: 0x80, hi: 0x8a}, + {value: 0x043b, lo: 0x91, hi: 0x91}, + {value: 0x429b, lo: 0x97, hi: 0x97}, + {value: 0x001d, lo: 0xa4, hi: 0xa4}, + {value: 0x1873, lo: 0xa5, hi: 0xa5}, + {value: 0x1b5c, lo: 0xa6, hi: 0xa6}, + {value: 0x0001, lo: 0xaf, hi: 0xaf}, + {value: 0x2691, lo: 0xb3, hi: 0xb3}, + {value: 0x27fe, lo: 0xb4, hi: 0xb4}, + {value: 0x2698, lo: 0xb6, hi: 0xb6}, + {value: 0x2808, lo: 0xb7, hi: 0xb7}, + {value: 0x186d, lo: 0xbc, hi: 0xbc}, + {value: 0x4269, lo: 0xbe, hi: 0xbe}, + // Block 0x3f, offset 0x184 + {value: 0x0002, lo: 0x0d}, + {value: 0x1933, lo: 0x87, hi: 0x87}, + {value: 0x1930, lo: 0x88, hi: 0x88}, + {value: 0x1870, lo: 0x89, hi: 0x89}, + {value: 0x298e, lo: 0x97, hi: 0x97}, + {value: 0x0001, lo: 0x9f, hi: 0x9f}, + {value: 0x0021, lo: 0xb0, hi: 0xb0}, + {value: 0x0093, lo: 0xb1, hi: 0xb1}, + {value: 0x0029, lo: 0xb4, hi: 0xb9}, + {value: 0x0017, lo: 0xba, hi: 0xba}, + {value: 0x0467, lo: 0xbb, hi: 0xbb}, + {value: 0x003b, lo: 0xbc, hi: 0xbc}, + {value: 0x0011, lo: 0xbd, hi: 0xbe}, + {value: 0x009d, lo: 0xbf, hi: 0xbf}, + // Block 0x40, offset 0x192 + {value: 0x0002, lo: 0x0f}, + {value: 0x0021, lo: 0x80, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8a}, + {value: 0x0467, lo: 0x8b, hi: 0x8b}, + {value: 0x003b, lo: 0x8c, hi: 0x8c}, + {value: 0x0011, lo: 0x8d, hi: 0x8e}, + {value: 0x0083, lo: 0x90, hi: 0x90}, + {value: 0x008b, lo: 0x91, hi: 0x91}, + {value: 0x009f, lo: 0x92, hi: 0x92}, + {value: 0x00b1, lo: 0x93, hi: 0x93}, + {value: 0x0104, lo: 0x94, hi: 0x94}, + {value: 0x0091, lo: 0x95, hi: 0x95}, + {value: 0x0097, lo: 0x96, hi: 0x99}, + {value: 0x00a1, lo: 0x9a, hi: 0x9a}, + {value: 0x00a7, lo: 0x9b, hi: 0x9c}, + {value: 0x1999, lo: 0xa8, hi: 0xa8}, + // Block 0x41, offset 0x1a2 + {value: 0x0000, lo: 0x0d}, + {value: 0x8132, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8132, lo: 0x9b, hi: 0x9c}, + {value: 0x8132, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa7}, + {value: 0x812d, lo: 0xa8, hi: 0xa8}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xaf}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + // Block 0x42, offset 0x1b0 + {value: 0x0007, lo: 0x06}, + {value: 0x2180, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, + {value: 0x3bc7, lo: 0xae, hi: 0xae}, + // Block 0x43, offset 0x1b7 + {value: 0x000e, lo: 0x05}, + {value: 0x3bce, lo: 0x8d, hi: 0x8e}, + {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x44, offset 0x1bd + {value: 0x0173, lo: 0x0e}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3be3, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3bea, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3bf1, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3bf8, lo: 0xa4, hi: 0xa4}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x3bff, lo: 0xa6, hi: 0xa6}, + {value: 0x269f, lo: 0xac, hi: 0xad}, + {value: 0x26a6, lo: 0xaf, hi: 0xaf}, + {value: 0x281c, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x45, offset 0x1cc + {value: 0x0007, lo: 0x03}, + {value: 0x3c68, lo: 0xa0, hi: 0xa1}, + {value: 0x3c92, lo: 0xa2, hi: 0xa3}, + {value: 0x3cbc, lo: 0xaa, hi: 0xad}, + // Block 0x46, offset 0x1d0 + {value: 0x0004, lo: 0x01}, + {value: 0x048b, lo: 0xa9, hi: 0xaa}, + // Block 0x47, offset 0x1d2 + {value: 0x0002, lo: 0x03}, + {value: 0x0057, lo: 0x80, hi: 0x8f}, + {value: 0x0083, lo: 0x90, hi: 0xa9}, + {value: 0x0021, lo: 0xaa, hi: 0xaa}, + // Block 0x48, offset 0x1d6 + {value: 0x0000, lo: 0x01}, + {value: 0x299b, lo: 0x8c, hi: 0x8c}, + // Block 0x49, offset 0x1d8 + {value: 0x0263, lo: 0x02}, + {value: 0x1b8c, lo: 0xb4, hi: 0xb4}, + {value: 0x192d, lo: 0xb5, hi: 0xb6}, + // Block 0x4a, offset 0x1db + {value: 0x0000, lo: 0x01}, + {value: 0x4573, lo: 0x9c, hi: 0x9c}, + // Block 0x4b, offset 0x1dd + {value: 0x0000, lo: 0x02}, + {value: 0x0095, lo: 0xbc, hi: 0xbc}, + {value: 0x006d, lo: 0xbd, hi: 0xbd}, + // Block 0x4c, offset 0x1e0 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xaf, hi: 0xb1}, + // Block 0x4d, offset 0x1e2 + {value: 0x0000, lo: 0x02}, + {value: 0x047f, lo: 0xaf, hi: 0xaf}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x4e, offset 0x1e5 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa0, hi: 0xbf}, + // Block 0x4f, offset 0x1e7 + {value: 0x0000, lo: 0x01}, + {value: 0x0dc3, lo: 0x9f, hi: 0x9f}, + // Block 0x50, offset 0x1e9 + {value: 0x0000, lo: 0x01}, + {value: 0x162f, lo: 0xb3, hi: 0xb3}, + // Block 0x51, offset 0x1eb + {value: 0x0004, lo: 0x0b}, + {value: 0x1597, lo: 0x80, hi: 0x82}, + {value: 0x15af, lo: 0x83, hi: 0x83}, + {value: 0x15c7, lo: 0x84, hi: 0x85}, + {value: 0x15d7, lo: 0x86, hi: 0x89}, + {value: 0x15eb, lo: 0x8a, hi: 0x8c}, + {value: 0x15ff, lo: 0x8d, hi: 0x8d}, + {value: 0x1607, lo: 0x8e, hi: 0x8e}, + {value: 0x160f, lo: 0x8f, hi: 0x90}, + {value: 0x161b, lo: 0x91, hi: 0x93}, + {value: 0x162b, lo: 0x94, hi: 0x94}, + {value: 0x1633, lo: 0x95, hi: 0x95}, + // Block 0x52, offset 0x1f7 + {value: 0x0004, lo: 0x09}, + {value: 0x0001, lo: 0x80, hi: 0x80}, + {value: 0x812c, lo: 0xaa, hi: 0xaa}, + {value: 0x8131, lo: 0xab, hi: 0xab}, + {value: 0x8133, lo: 0xac, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x812f, lo: 0xae, hi: 0xae}, + {value: 0x812f, lo: 0xaf, hi: 0xaf}, + {value: 0x04b3, lo: 0xb6, hi: 0xb6}, + {value: 0x0887, lo: 0xb8, hi: 0xba}, + // Block 0x53, offset 0x201 + {value: 0x0005, lo: 0x09}, + {value: 0x0313, lo: 0xb1, hi: 0xb1}, + {value: 0x0317, lo: 0xb2, hi: 0xb2}, + {value: 0x4345, lo: 0xb3, hi: 0xb3}, + {value: 0x031b, lo: 0xb4, hi: 0xb4}, + {value: 0x434a, lo: 0xb5, hi: 0xb6}, + {value: 0x031f, lo: 0xb7, hi: 0xb7}, + {value: 0x0323, lo: 0xb8, hi: 0xb8}, + {value: 0x0327, lo: 0xb9, hi: 0xb9}, + {value: 0x4354, lo: 0xba, hi: 0xbf}, + // Block 0x54, offset 0x20b + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xaf, hi: 0xaf}, + {value: 0x8132, lo: 0xb4, hi: 0xbd}, + // Block 0x55, offset 0x20e + {value: 0x0000, lo: 0x03}, + {value: 0x020f, lo: 0x9c, hi: 0x9c}, + {value: 0x0212, lo: 0x9d, hi: 0x9d}, + {value: 0x8132, lo: 0x9e, hi: 0x9f}, + // Block 0x56, offset 0x212 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb1}, + // Block 0x57, offset 0x214 + {value: 0x0000, lo: 0x01}, + {value: 0x163b, lo: 0xb0, hi: 0xb0}, + // Block 0x58, offset 0x216 + {value: 0x000c, lo: 0x01}, + {value: 0x00d7, lo: 0xb8, hi: 0xb9}, + // Block 0x59, offset 0x218 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + // Block 0x5a, offset 0x21a + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xa0, hi: 0xb1}, + // Block 0x5b, offset 0x21d + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xab, hi: 0xad}, + // Block 0x5c, offset 0x21f + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x93, hi: 0x93}, + // Block 0x5d, offset 0x221 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb3, hi: 0xb3}, + // Block 0x5e, offset 0x223 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + // Block 0x5f, offset 0x225 + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x8132, lo: 0xbe, hi: 0xbf}, + // Block 0x60, offset 0x22b + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + // Block 0x61, offset 0x22e + {value: 0x0008, lo: 0x03}, + {value: 0x1637, lo: 0x9c, hi: 0x9d}, + {value: 0x0125, lo: 0x9e, hi: 0x9e}, + {value: 0x1643, lo: 0x9f, hi: 0x9f}, + // Block 0x62, offset 0x232 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xad, hi: 0xad}, + // Block 0x63, offset 0x234 + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x64, offset 0x23b + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x65, offset 0x241 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x66, offset 0x247 + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x67, offset 0x24f + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x68, offset 0x255 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x69, offset 0x25b + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x6a, offset 0x261 + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x6b, offset 0x265 + {value: 0x0002, lo: 0x01}, + {value: 0x0003, lo: 0x81, hi: 0xbf}, + // Block 0x6c, offset 0x267 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x6d, offset 0x269 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xa0, hi: 0xa0}, + // Block 0x6e, offset 0x26b + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb6, hi: 0xba}, + // Block 0x6f, offset 0x26d + {value: 0x002c, lo: 0x05}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x8f, hi: 0x8f}, + {value: 0x8132, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x70, offset 0x273 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xa5, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + // Block 0x71, offset 0x276 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x72, offset 0x279 + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x4238, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4242, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x424c, lo: 0xab, hi: 0xab}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x73, offset 0x281 + {value: 0x0000, lo: 0x06}, + {value: 0x8132, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d7e, lo: 0xae, hi: 0xae}, + {value: 0x2d88, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8104, lo: 0xb3, hi: 0xb4}, + // Block 0x74, offset 0x288 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x75, offset 0x28b + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb5, hi: 0xb5}, + {value: 0x8102, lo: 0xb6, hi: 0xb6}, + // Block 0x76, offset 0x28e + {value: 0x0002, lo: 0x01}, + {value: 0x8102, lo: 0xa9, hi: 0xaa}, + // Block 0x77, offset 0x290 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d92, lo: 0x8b, hi: 0x8b}, + {value: 0x2d9c, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8132, lo: 0xa6, hi: 0xac}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + // Block 0x78, offset 0x298 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x86, hi: 0x86}, + // Block 0x79, offset 0x29b + {value: 0x6b5a, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2db0, lo: 0xbb, hi: 0xbb}, + {value: 0x2da6, lo: 0xbc, hi: 0xbd}, + {value: 0x2dba, lo: 0xbe, hi: 0xbe}, + // Block 0x7a, offset 0x2a2 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x83, hi: 0x83}, + // Block 0x7b, offset 0x2a5 + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dc4, lo: 0xba, hi: 0xba}, + {value: 0x2dce, lo: 0xbb, hi: 0xbb}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x7c, offset 0x2ab + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0x80, hi: 0x80}, + // Block 0x7d, offset 0x2ad + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x7e, offset 0x2af + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x7f, offset 0x2b2 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xab, hi: 0xab}, + // Block 0x80, offset 0x2b4 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x81, offset 0x2b6 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb6}, + // Block 0x82, offset 0x2b8 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x83, offset 0x2ba + {value: 0x0000, lo: 0x0c}, + {value: 0x4662, lo: 0x9e, hi: 0x9e}, + {value: 0x466c, lo: 0x9f, hi: 0x9f}, + {value: 0x46a0, lo: 0xa0, hi: 0xa0}, + {value: 0x46ae, lo: 0xa1, hi: 0xa1}, + {value: 0x46bc, lo: 0xa2, hi: 0xa2}, + {value: 0x46ca, lo: 0xa3, hi: 0xa3}, + {value: 0x46d8, lo: 0xa4, hi: 0xa4}, + {value: 0x812b, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8130, lo: 0xad, hi: 0xad}, + {value: 0x812b, lo: 0xae, hi: 0xb2}, + {value: 0x812d, lo: 0xbb, hi: 0xbf}, + // Block 0x84, offset 0x2c7 + {value: 0x0000, lo: 0x09}, + {value: 0x812d, lo: 0x80, hi: 0x82}, + {value: 0x8132, lo: 0x85, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8b}, + {value: 0x8132, lo: 0xaa, hi: 0xad}, + {value: 0x4676, lo: 0xbb, hi: 0xbb}, + {value: 0x4680, lo: 0xbc, hi: 0xbc}, + {value: 0x46e6, lo: 0xbd, hi: 0xbd}, + {value: 0x4702, lo: 0xbe, hi: 0xbe}, + {value: 0x46f4, lo: 0xbf, hi: 0xbf}, + // Block 0x85, offset 0x2d1 + {value: 0x0000, lo: 0x01}, + {value: 0x4710, lo: 0x80, hi: 0x80}, + // Block 0x86, offset 0x2d3 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x82, hi: 0x84}, + // Block 0x87, offset 0x2d5 + {value: 0x0002, lo: 0x03}, + {value: 0x0043, lo: 0x80, hi: 0x99}, + {value: 0x0083, lo: 0x9a, hi: 0xb3}, + {value: 0x0043, lo: 0xb4, hi: 0xbf}, + // Block 0x88, offset 0x2d9 + {value: 0x0002, lo: 0x04}, + {value: 0x005b, lo: 0x80, hi: 0x8d}, + {value: 0x0083, lo: 0x8e, hi: 0x94}, + {value: 0x0093, lo: 0x96, hi: 0xa7}, + {value: 0x0043, lo: 0xa8, hi: 0xbf}, + // Block 0x89, offset 0x2de + {value: 0x0002, lo: 0x0b}, + {value: 0x0073, lo: 0x80, hi: 0x81}, + {value: 0x0083, lo: 0x82, hi: 0x9b}, + {value: 0x0043, lo: 0x9c, hi: 0x9c}, + {value: 0x0047, lo: 0x9e, hi: 0x9f}, + {value: 0x004f, lo: 0xa2, hi: 0xa2}, + {value: 0x0055, lo: 0xa5, hi: 0xa6}, + {value: 0x005d, lo: 0xa9, hi: 0xac}, + {value: 0x0067, lo: 0xae, hi: 0xb5}, + {value: 0x0083, lo: 0xb6, hi: 0xb9}, + {value: 0x008d, lo: 0xbb, hi: 0xbb}, + {value: 0x0091, lo: 0xbd, hi: 0xbf}, + // Block 0x8a, offset 0x2ea + {value: 0x0002, lo: 0x04}, + {value: 0x0097, lo: 0x80, hi: 0x83}, + {value: 0x00a1, lo: 0x85, hi: 0x8f}, + {value: 0x0043, lo: 0x90, hi: 0xa9}, + {value: 0x0083, lo: 0xaa, hi: 0xbf}, + // Block 0x8b, offset 0x2ef + {value: 0x0002, lo: 0x08}, + {value: 0x00af, lo: 0x80, hi: 0x83}, + {value: 0x0043, lo: 0x84, hi: 0x85}, + {value: 0x0049, lo: 0x87, hi: 0x8a}, + {value: 0x0055, lo: 0x8d, hi: 0x94}, + {value: 0x0067, lo: 0x96, hi: 0x9c}, + {value: 0x0083, lo: 0x9e, hi: 0xb7}, + {value: 0x0043, lo: 0xb8, hi: 0xb9}, + {value: 0x0049, lo: 0xbb, hi: 0xbe}, + // Block 0x8c, offset 0x2f8 + {value: 0x0002, lo: 0x05}, + {value: 0x0053, lo: 0x80, hi: 0x84}, + {value: 0x005f, lo: 0x86, hi: 0x86}, + {value: 0x0067, lo: 0x8a, hi: 0x90}, + {value: 0x0083, lo: 0x92, hi: 0xab}, + {value: 0x0043, lo: 0xac, hi: 0xbf}, + // Block 0x8d, offset 0x2fe + {value: 0x0002, lo: 0x04}, + {value: 0x006b, lo: 0x80, hi: 0x85}, + {value: 0x0083, lo: 0x86, hi: 0x9f}, + {value: 0x0043, lo: 0xa0, hi: 0xb9}, + {value: 0x0083, lo: 0xba, hi: 0xbf}, + // Block 0x8e, offset 0x303 + {value: 0x0002, lo: 0x03}, + {value: 0x008f, lo: 0x80, hi: 0x93}, + {value: 0x0043, lo: 0x94, hi: 0xad}, + {value: 0x0083, lo: 0xae, hi: 0xbf}, + // Block 0x8f, offset 0x307 + {value: 0x0002, lo: 0x04}, + {value: 0x00a7, lo: 0x80, hi: 0x87}, + {value: 0x0043, lo: 0x88, hi: 0xa1}, + {value: 0x0083, lo: 0xa2, hi: 0xbb}, + {value: 0x0043, lo: 0xbc, hi: 0xbf}, + // Block 0x90, offset 0x30c + {value: 0x0002, lo: 0x03}, + {value: 0x004b, lo: 0x80, hi: 0x95}, + {value: 0x0083, lo: 0x96, hi: 0xaf}, + {value: 0x0043, lo: 0xb0, hi: 0xbf}, + // Block 0x91, offset 0x310 + {value: 0x0003, lo: 0x0f}, + {value: 0x01b8, lo: 0x80, hi: 0x80}, + {value: 0x045f, lo: 0x81, hi: 0x81}, + {value: 0x01bb, lo: 0x82, hi: 0x9a}, + {value: 0x045b, lo: 0x9b, hi: 0x9b}, + {value: 0x01c7, lo: 0x9c, hi: 0x9c}, + {value: 0x01d0, lo: 0x9d, hi: 0x9d}, + {value: 0x01d6, lo: 0x9e, hi: 0x9e}, + {value: 0x01fa, lo: 0x9f, hi: 0x9f}, + {value: 0x01eb, lo: 0xa0, hi: 0xa0}, + {value: 0x01e8, lo: 0xa1, hi: 0xa1}, + {value: 0x0173, lo: 0xa2, hi: 0xb2}, + {value: 0x0188, lo: 0xb3, hi: 0xb3}, + {value: 0x01a6, lo: 0xb4, hi: 0xba}, + {value: 0x045f, lo: 0xbb, hi: 0xbb}, + {value: 0x01bb, lo: 0xbc, hi: 0xbf}, + // Block 0x92, offset 0x320 + {value: 0x0003, lo: 0x0d}, + {value: 0x01c7, lo: 0x80, hi: 0x94}, + {value: 0x045b, lo: 0x95, hi: 0x95}, + {value: 0x01c7, lo: 0x96, hi: 0x96}, + {value: 0x01d0, lo: 0x97, hi: 0x97}, + {value: 0x01d6, lo: 0x98, hi: 0x98}, + {value: 0x01fa, lo: 0x99, hi: 0x99}, + {value: 0x01eb, lo: 0x9a, hi: 0x9a}, + {value: 0x01e8, lo: 0x9b, hi: 0x9b}, + {value: 0x0173, lo: 0x9c, hi: 0xac}, + {value: 0x0188, lo: 0xad, hi: 0xad}, + {value: 0x01a6, lo: 0xae, hi: 0xb4}, + {value: 0x045f, lo: 0xb5, hi: 0xb5}, + {value: 0x01bb, lo: 0xb6, hi: 0xbf}, + // Block 0x93, offset 0x32e + {value: 0x0003, lo: 0x0d}, + {value: 0x01d9, lo: 0x80, hi: 0x8e}, + {value: 0x045b, lo: 0x8f, hi: 0x8f}, + {value: 0x01c7, lo: 0x90, hi: 0x90}, + {value: 0x01d0, lo: 0x91, hi: 0x91}, + {value: 0x01d6, lo: 0x92, hi: 0x92}, + {value: 0x01fa, lo: 0x93, hi: 0x93}, + {value: 0x01eb, lo: 0x94, hi: 0x94}, + {value: 0x01e8, lo: 0x95, hi: 0x95}, + {value: 0x0173, lo: 0x96, hi: 0xa6}, + {value: 0x0188, lo: 0xa7, hi: 0xa7}, + {value: 0x01a6, lo: 0xa8, hi: 0xae}, + {value: 0x045f, lo: 0xaf, hi: 0xaf}, + {value: 0x01bb, lo: 0xb0, hi: 0xbf}, + // Block 0x94, offset 0x33c + {value: 0x0003, lo: 0x0d}, + {value: 0x01eb, lo: 0x80, hi: 0x88}, + {value: 0x045b, lo: 0x89, hi: 0x89}, + {value: 0x01c7, lo: 0x8a, hi: 0x8a}, + {value: 0x01d0, lo: 0x8b, hi: 0x8b}, + {value: 0x01d6, lo: 0x8c, hi: 0x8c}, + {value: 0x01fa, lo: 0x8d, hi: 0x8d}, + {value: 0x01eb, lo: 0x8e, hi: 0x8e}, + {value: 0x01e8, lo: 0x8f, hi: 0x8f}, + {value: 0x0173, lo: 0x90, hi: 0xa0}, + {value: 0x0188, lo: 0xa1, hi: 0xa1}, + {value: 0x01a6, lo: 0xa2, hi: 0xa8}, + {value: 0x045f, lo: 0xa9, hi: 0xa9}, + {value: 0x01bb, lo: 0xaa, hi: 0xbf}, + // Block 0x95, offset 0x34a + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0x80, hi: 0x86}, + {value: 0x8132, lo: 0x88, hi: 0x98}, + {value: 0x8132, lo: 0x9b, hi: 0xa1}, + {value: 0x8132, lo: 0xa3, hi: 0xa4}, + {value: 0x8132, lo: 0xa6, hi: 0xaa}, + // Block 0x96, offset 0x350 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x90, hi: 0x96}, + // Block 0x97, offset 0x352 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x84, hi: 0x89}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x98, offset 0x355 + {value: 0x0002, lo: 0x09}, + {value: 0x0063, lo: 0x80, hi: 0x89}, + {value: 0x1951, lo: 0x8a, hi: 0x8a}, + {value: 0x1981, lo: 0x8b, hi: 0x8b}, + {value: 0x199c, lo: 0x8c, hi: 0x8c}, + {value: 0x19a2, lo: 0x8d, hi: 0x8d}, + {value: 0x1bc0, lo: 0x8e, hi: 0x8e}, + {value: 0x19ae, lo: 0x8f, hi: 0x8f}, + {value: 0x197b, lo: 0xaa, hi: 0xaa}, + {value: 0x197e, lo: 0xab, hi: 0xab}, + // Block 0x99, offset 0x35f + {value: 0x0000, lo: 0x01}, + {value: 0x193f, lo: 0x90, hi: 0x90}, + // Block 0x9a, offset 0x361 + {value: 0x0028, lo: 0x09}, + {value: 0x2862, lo: 0x80, hi: 0x80}, + {value: 0x2826, lo: 0x81, hi: 0x81}, + {value: 0x2830, lo: 0x82, hi: 0x82}, + {value: 0x2844, lo: 0x83, hi: 0x84}, + {value: 0x284e, lo: 0x85, hi: 0x86}, + {value: 0x283a, lo: 0x87, hi: 0x87}, + {value: 0x2858, lo: 0x88, hi: 0x88}, + {value: 0x0b6f, lo: 0x90, hi: 0x90}, + {value: 0x08e7, lo: 0x91, hi: 0x91}, +} + +// recompMap: 7520 bytes (entries only) +var recompMap = map[uint32]rune{ + 0x00410300: 0x00C0, + 0x00410301: 0x00C1, + 0x00410302: 0x00C2, + 0x00410303: 0x00C3, + 0x00410308: 0x00C4, + 0x0041030A: 0x00C5, + 0x00430327: 0x00C7, + 0x00450300: 0x00C8, + 0x00450301: 0x00C9, + 0x00450302: 0x00CA, + 0x00450308: 0x00CB, + 0x00490300: 0x00CC, + 0x00490301: 0x00CD, + 0x00490302: 0x00CE, + 0x00490308: 0x00CF, + 0x004E0303: 0x00D1, + 0x004F0300: 0x00D2, + 0x004F0301: 0x00D3, + 0x004F0302: 0x00D4, + 0x004F0303: 0x00D5, + 0x004F0308: 0x00D6, + 0x00550300: 0x00D9, + 0x00550301: 0x00DA, + 0x00550302: 0x00DB, + 0x00550308: 0x00DC, + 0x00590301: 0x00DD, + 0x00610300: 0x00E0, + 0x00610301: 0x00E1, + 0x00610302: 0x00E2, + 0x00610303: 0x00E3, + 0x00610308: 0x00E4, + 0x0061030A: 0x00E5, + 0x00630327: 0x00E7, + 0x00650300: 0x00E8, + 0x00650301: 0x00E9, + 0x00650302: 0x00EA, + 0x00650308: 0x00EB, + 0x00690300: 0x00EC, + 0x00690301: 0x00ED, + 0x00690302: 0x00EE, + 0x00690308: 0x00EF, + 0x006E0303: 0x00F1, + 0x006F0300: 0x00F2, + 0x006F0301: 0x00F3, + 0x006F0302: 0x00F4, + 0x006F0303: 0x00F5, + 0x006F0308: 0x00F6, + 0x00750300: 0x00F9, + 0x00750301: 0x00FA, + 0x00750302: 0x00FB, + 0x00750308: 0x00FC, + 0x00790301: 0x00FD, + 0x00790308: 0x00FF, + 0x00410304: 0x0100, + 0x00610304: 0x0101, + 0x00410306: 0x0102, + 0x00610306: 0x0103, + 0x00410328: 0x0104, + 0x00610328: 0x0105, + 0x00430301: 0x0106, + 0x00630301: 0x0107, + 0x00430302: 0x0108, + 0x00630302: 0x0109, + 0x00430307: 0x010A, + 0x00630307: 0x010B, + 0x0043030C: 0x010C, + 0x0063030C: 0x010D, + 0x0044030C: 0x010E, + 0x0064030C: 0x010F, + 0x00450304: 0x0112, + 0x00650304: 0x0113, + 0x00450306: 0x0114, + 0x00650306: 0x0115, + 0x00450307: 0x0116, + 0x00650307: 0x0117, + 0x00450328: 0x0118, + 0x00650328: 0x0119, + 0x0045030C: 0x011A, + 0x0065030C: 0x011B, + 0x00470302: 0x011C, + 0x00670302: 0x011D, + 0x00470306: 0x011E, + 0x00670306: 0x011F, + 0x00470307: 0x0120, + 0x00670307: 0x0121, + 0x00470327: 0x0122, + 0x00670327: 0x0123, + 0x00480302: 0x0124, + 0x00680302: 0x0125, + 0x00490303: 0x0128, + 0x00690303: 0x0129, + 0x00490304: 0x012A, + 0x00690304: 0x012B, + 0x00490306: 0x012C, + 0x00690306: 0x012D, + 0x00490328: 0x012E, + 0x00690328: 0x012F, + 0x00490307: 0x0130, + 0x004A0302: 0x0134, + 0x006A0302: 0x0135, + 0x004B0327: 0x0136, + 0x006B0327: 0x0137, + 0x004C0301: 0x0139, + 0x006C0301: 0x013A, + 0x004C0327: 0x013B, + 0x006C0327: 0x013C, + 0x004C030C: 0x013D, + 0x006C030C: 0x013E, + 0x004E0301: 0x0143, + 0x006E0301: 0x0144, + 0x004E0327: 0x0145, + 0x006E0327: 0x0146, + 0x004E030C: 0x0147, + 0x006E030C: 0x0148, + 0x004F0304: 0x014C, + 0x006F0304: 0x014D, + 0x004F0306: 0x014E, + 0x006F0306: 0x014F, + 0x004F030B: 0x0150, + 0x006F030B: 0x0151, + 0x00520301: 0x0154, + 0x00720301: 0x0155, + 0x00520327: 0x0156, + 0x00720327: 0x0157, + 0x0052030C: 0x0158, + 0x0072030C: 0x0159, + 0x00530301: 0x015A, + 0x00730301: 0x015B, + 0x00530302: 0x015C, + 0x00730302: 0x015D, + 0x00530327: 0x015E, + 0x00730327: 0x015F, + 0x0053030C: 0x0160, + 0x0073030C: 0x0161, + 0x00540327: 0x0162, + 0x00740327: 0x0163, + 0x0054030C: 0x0164, + 0x0074030C: 0x0165, + 0x00550303: 0x0168, + 0x00750303: 0x0169, + 0x00550304: 0x016A, + 0x00750304: 0x016B, + 0x00550306: 0x016C, + 0x00750306: 0x016D, + 0x0055030A: 0x016E, + 0x0075030A: 0x016F, + 0x0055030B: 0x0170, + 0x0075030B: 0x0171, + 0x00550328: 0x0172, + 0x00750328: 0x0173, + 0x00570302: 0x0174, + 0x00770302: 0x0175, + 0x00590302: 0x0176, + 0x00790302: 0x0177, + 0x00590308: 0x0178, + 0x005A0301: 0x0179, + 0x007A0301: 0x017A, + 0x005A0307: 0x017B, + 0x007A0307: 0x017C, + 0x005A030C: 0x017D, + 0x007A030C: 0x017E, + 0x004F031B: 0x01A0, + 0x006F031B: 0x01A1, + 0x0055031B: 0x01AF, + 0x0075031B: 0x01B0, + 0x0041030C: 0x01CD, + 0x0061030C: 0x01CE, + 0x0049030C: 0x01CF, + 0x0069030C: 0x01D0, + 0x004F030C: 0x01D1, + 0x006F030C: 0x01D2, + 0x0055030C: 0x01D3, + 0x0075030C: 0x01D4, + 0x00DC0304: 0x01D5, + 0x00FC0304: 0x01D6, + 0x00DC0301: 0x01D7, + 0x00FC0301: 0x01D8, + 0x00DC030C: 0x01D9, + 0x00FC030C: 0x01DA, + 0x00DC0300: 0x01DB, + 0x00FC0300: 0x01DC, + 0x00C40304: 0x01DE, + 0x00E40304: 0x01DF, + 0x02260304: 0x01E0, + 0x02270304: 0x01E1, + 0x00C60304: 0x01E2, + 0x00E60304: 0x01E3, + 0x0047030C: 0x01E6, + 0x0067030C: 0x01E7, + 0x004B030C: 0x01E8, + 0x006B030C: 0x01E9, + 0x004F0328: 0x01EA, + 0x006F0328: 0x01EB, + 0x01EA0304: 0x01EC, + 0x01EB0304: 0x01ED, + 0x01B7030C: 0x01EE, + 0x0292030C: 0x01EF, + 0x006A030C: 0x01F0, + 0x00470301: 0x01F4, + 0x00670301: 0x01F5, + 0x004E0300: 0x01F8, + 0x006E0300: 0x01F9, + 0x00C50301: 0x01FA, + 0x00E50301: 0x01FB, + 0x00C60301: 0x01FC, + 0x00E60301: 0x01FD, + 0x00D80301: 0x01FE, + 0x00F80301: 0x01FF, + 0x0041030F: 0x0200, + 0x0061030F: 0x0201, + 0x00410311: 0x0202, + 0x00610311: 0x0203, + 0x0045030F: 0x0204, + 0x0065030F: 0x0205, + 0x00450311: 0x0206, + 0x00650311: 0x0207, + 0x0049030F: 0x0208, + 0x0069030F: 0x0209, + 0x00490311: 0x020A, + 0x00690311: 0x020B, + 0x004F030F: 0x020C, + 0x006F030F: 0x020D, + 0x004F0311: 0x020E, + 0x006F0311: 0x020F, + 0x0052030F: 0x0210, + 0x0072030F: 0x0211, + 0x00520311: 0x0212, + 0x00720311: 0x0213, + 0x0055030F: 0x0214, + 0x0075030F: 0x0215, + 0x00550311: 0x0216, + 0x00750311: 0x0217, + 0x00530326: 0x0218, + 0x00730326: 0x0219, + 0x00540326: 0x021A, + 0x00740326: 0x021B, + 0x0048030C: 0x021E, + 0x0068030C: 0x021F, + 0x00410307: 0x0226, + 0x00610307: 0x0227, + 0x00450327: 0x0228, + 0x00650327: 0x0229, + 0x00D60304: 0x022A, + 0x00F60304: 0x022B, + 0x00D50304: 0x022C, + 0x00F50304: 0x022D, + 0x004F0307: 0x022E, + 0x006F0307: 0x022F, + 0x022E0304: 0x0230, + 0x022F0304: 0x0231, + 0x00590304: 0x0232, + 0x00790304: 0x0233, + 0x00A80301: 0x0385, + 0x03910301: 0x0386, + 0x03950301: 0x0388, + 0x03970301: 0x0389, + 0x03990301: 0x038A, + 0x039F0301: 0x038C, + 0x03A50301: 0x038E, + 0x03A90301: 0x038F, + 0x03CA0301: 0x0390, + 0x03990308: 0x03AA, + 0x03A50308: 0x03AB, + 0x03B10301: 0x03AC, + 0x03B50301: 0x03AD, + 0x03B70301: 0x03AE, + 0x03B90301: 0x03AF, + 0x03CB0301: 0x03B0, + 0x03B90308: 0x03CA, + 0x03C50308: 0x03CB, + 0x03BF0301: 0x03CC, + 0x03C50301: 0x03CD, + 0x03C90301: 0x03CE, + 0x03D20301: 0x03D3, + 0x03D20308: 0x03D4, + 0x04150300: 0x0400, + 0x04150308: 0x0401, + 0x04130301: 0x0403, + 0x04060308: 0x0407, + 0x041A0301: 0x040C, + 0x04180300: 0x040D, + 0x04230306: 0x040E, + 0x04180306: 0x0419, + 0x04380306: 0x0439, + 0x04350300: 0x0450, + 0x04350308: 0x0451, + 0x04330301: 0x0453, + 0x04560308: 0x0457, + 0x043A0301: 0x045C, + 0x04380300: 0x045D, + 0x04430306: 0x045E, + 0x0474030F: 0x0476, + 0x0475030F: 0x0477, + 0x04160306: 0x04C1, + 0x04360306: 0x04C2, + 0x04100306: 0x04D0, + 0x04300306: 0x04D1, + 0x04100308: 0x04D2, + 0x04300308: 0x04D3, + 0x04150306: 0x04D6, + 0x04350306: 0x04D7, + 0x04D80308: 0x04DA, + 0x04D90308: 0x04DB, + 0x04160308: 0x04DC, + 0x04360308: 0x04DD, + 0x04170308: 0x04DE, + 0x04370308: 0x04DF, + 0x04180304: 0x04E2, + 0x04380304: 0x04E3, + 0x04180308: 0x04E4, + 0x04380308: 0x04E5, + 0x041E0308: 0x04E6, + 0x043E0308: 0x04E7, + 0x04E80308: 0x04EA, + 0x04E90308: 0x04EB, + 0x042D0308: 0x04EC, + 0x044D0308: 0x04ED, + 0x04230304: 0x04EE, + 0x04430304: 0x04EF, + 0x04230308: 0x04F0, + 0x04430308: 0x04F1, + 0x0423030B: 0x04F2, + 0x0443030B: 0x04F3, + 0x04270308: 0x04F4, + 0x04470308: 0x04F5, + 0x042B0308: 0x04F8, + 0x044B0308: 0x04F9, + 0x06270653: 0x0622, + 0x06270654: 0x0623, + 0x06480654: 0x0624, + 0x06270655: 0x0625, + 0x064A0654: 0x0626, + 0x06D50654: 0x06C0, + 0x06C10654: 0x06C2, + 0x06D20654: 0x06D3, + 0x0928093C: 0x0929, + 0x0930093C: 0x0931, + 0x0933093C: 0x0934, + 0x09C709BE: 0x09CB, + 0x09C709D7: 0x09CC, + 0x0B470B56: 0x0B48, + 0x0B470B3E: 0x0B4B, + 0x0B470B57: 0x0B4C, + 0x0B920BD7: 0x0B94, + 0x0BC60BBE: 0x0BCA, + 0x0BC70BBE: 0x0BCB, + 0x0BC60BD7: 0x0BCC, + 0x0C460C56: 0x0C48, + 0x0CBF0CD5: 0x0CC0, + 0x0CC60CD5: 0x0CC7, + 0x0CC60CD6: 0x0CC8, + 0x0CC60CC2: 0x0CCA, + 0x0CCA0CD5: 0x0CCB, + 0x0D460D3E: 0x0D4A, + 0x0D470D3E: 0x0D4B, + 0x0D460D57: 0x0D4C, + 0x0DD90DCA: 0x0DDA, + 0x0DD90DCF: 0x0DDC, + 0x0DDC0DCA: 0x0DDD, + 0x0DD90DDF: 0x0DDE, + 0x1025102E: 0x1026, + 0x1B051B35: 0x1B06, + 0x1B071B35: 0x1B08, + 0x1B091B35: 0x1B0A, + 0x1B0B1B35: 0x1B0C, + 0x1B0D1B35: 0x1B0E, + 0x1B111B35: 0x1B12, + 0x1B3A1B35: 0x1B3B, + 0x1B3C1B35: 0x1B3D, + 0x1B3E1B35: 0x1B40, + 0x1B3F1B35: 0x1B41, + 0x1B421B35: 0x1B43, + 0x00410325: 0x1E00, + 0x00610325: 0x1E01, + 0x00420307: 0x1E02, + 0x00620307: 0x1E03, + 0x00420323: 0x1E04, + 0x00620323: 0x1E05, + 0x00420331: 0x1E06, + 0x00620331: 0x1E07, + 0x00C70301: 0x1E08, + 0x00E70301: 0x1E09, + 0x00440307: 0x1E0A, + 0x00640307: 0x1E0B, + 0x00440323: 0x1E0C, + 0x00640323: 0x1E0D, + 0x00440331: 0x1E0E, + 0x00640331: 0x1E0F, + 0x00440327: 0x1E10, + 0x00640327: 0x1E11, + 0x0044032D: 0x1E12, + 0x0064032D: 0x1E13, + 0x01120300: 0x1E14, + 0x01130300: 0x1E15, + 0x01120301: 0x1E16, + 0x01130301: 0x1E17, + 0x0045032D: 0x1E18, + 0x0065032D: 0x1E19, + 0x00450330: 0x1E1A, + 0x00650330: 0x1E1B, + 0x02280306: 0x1E1C, + 0x02290306: 0x1E1D, + 0x00460307: 0x1E1E, + 0x00660307: 0x1E1F, + 0x00470304: 0x1E20, + 0x00670304: 0x1E21, + 0x00480307: 0x1E22, + 0x00680307: 0x1E23, + 0x00480323: 0x1E24, + 0x00680323: 0x1E25, + 0x00480308: 0x1E26, + 0x00680308: 0x1E27, + 0x00480327: 0x1E28, + 0x00680327: 0x1E29, + 0x0048032E: 0x1E2A, + 0x0068032E: 0x1E2B, + 0x00490330: 0x1E2C, + 0x00690330: 0x1E2D, + 0x00CF0301: 0x1E2E, + 0x00EF0301: 0x1E2F, + 0x004B0301: 0x1E30, + 0x006B0301: 0x1E31, + 0x004B0323: 0x1E32, + 0x006B0323: 0x1E33, + 0x004B0331: 0x1E34, + 0x006B0331: 0x1E35, + 0x004C0323: 0x1E36, + 0x006C0323: 0x1E37, + 0x1E360304: 0x1E38, + 0x1E370304: 0x1E39, + 0x004C0331: 0x1E3A, + 0x006C0331: 0x1E3B, + 0x004C032D: 0x1E3C, + 0x006C032D: 0x1E3D, + 0x004D0301: 0x1E3E, + 0x006D0301: 0x1E3F, + 0x004D0307: 0x1E40, + 0x006D0307: 0x1E41, + 0x004D0323: 0x1E42, + 0x006D0323: 0x1E43, + 0x004E0307: 0x1E44, + 0x006E0307: 0x1E45, + 0x004E0323: 0x1E46, + 0x006E0323: 0x1E47, + 0x004E0331: 0x1E48, + 0x006E0331: 0x1E49, + 0x004E032D: 0x1E4A, + 0x006E032D: 0x1E4B, + 0x00D50301: 0x1E4C, + 0x00F50301: 0x1E4D, + 0x00D50308: 0x1E4E, + 0x00F50308: 0x1E4F, + 0x014C0300: 0x1E50, + 0x014D0300: 0x1E51, + 0x014C0301: 0x1E52, + 0x014D0301: 0x1E53, + 0x00500301: 0x1E54, + 0x00700301: 0x1E55, + 0x00500307: 0x1E56, + 0x00700307: 0x1E57, + 0x00520307: 0x1E58, + 0x00720307: 0x1E59, + 0x00520323: 0x1E5A, + 0x00720323: 0x1E5B, + 0x1E5A0304: 0x1E5C, + 0x1E5B0304: 0x1E5D, + 0x00520331: 0x1E5E, + 0x00720331: 0x1E5F, + 0x00530307: 0x1E60, + 0x00730307: 0x1E61, + 0x00530323: 0x1E62, + 0x00730323: 0x1E63, + 0x015A0307: 0x1E64, + 0x015B0307: 0x1E65, + 0x01600307: 0x1E66, + 0x01610307: 0x1E67, + 0x1E620307: 0x1E68, + 0x1E630307: 0x1E69, + 0x00540307: 0x1E6A, + 0x00740307: 0x1E6B, + 0x00540323: 0x1E6C, + 0x00740323: 0x1E6D, + 0x00540331: 0x1E6E, + 0x00740331: 0x1E6F, + 0x0054032D: 0x1E70, + 0x0074032D: 0x1E71, + 0x00550324: 0x1E72, + 0x00750324: 0x1E73, + 0x00550330: 0x1E74, + 0x00750330: 0x1E75, + 0x0055032D: 0x1E76, + 0x0075032D: 0x1E77, + 0x01680301: 0x1E78, + 0x01690301: 0x1E79, + 0x016A0308: 0x1E7A, + 0x016B0308: 0x1E7B, + 0x00560303: 0x1E7C, + 0x00760303: 0x1E7D, + 0x00560323: 0x1E7E, + 0x00760323: 0x1E7F, + 0x00570300: 0x1E80, + 0x00770300: 0x1E81, + 0x00570301: 0x1E82, + 0x00770301: 0x1E83, + 0x00570308: 0x1E84, + 0x00770308: 0x1E85, + 0x00570307: 0x1E86, + 0x00770307: 0x1E87, + 0x00570323: 0x1E88, + 0x00770323: 0x1E89, + 0x00580307: 0x1E8A, + 0x00780307: 0x1E8B, + 0x00580308: 0x1E8C, + 0x00780308: 0x1E8D, + 0x00590307: 0x1E8E, + 0x00790307: 0x1E8F, + 0x005A0302: 0x1E90, + 0x007A0302: 0x1E91, + 0x005A0323: 0x1E92, + 0x007A0323: 0x1E93, + 0x005A0331: 0x1E94, + 0x007A0331: 0x1E95, + 0x00680331: 0x1E96, + 0x00740308: 0x1E97, + 0x0077030A: 0x1E98, + 0x0079030A: 0x1E99, + 0x017F0307: 0x1E9B, + 0x00410323: 0x1EA0, + 0x00610323: 0x1EA1, + 0x00410309: 0x1EA2, + 0x00610309: 0x1EA3, + 0x00C20301: 0x1EA4, + 0x00E20301: 0x1EA5, + 0x00C20300: 0x1EA6, + 0x00E20300: 0x1EA7, + 0x00C20309: 0x1EA8, + 0x00E20309: 0x1EA9, + 0x00C20303: 0x1EAA, + 0x00E20303: 0x1EAB, + 0x1EA00302: 0x1EAC, + 0x1EA10302: 0x1EAD, + 0x01020301: 0x1EAE, + 0x01030301: 0x1EAF, + 0x01020300: 0x1EB0, + 0x01030300: 0x1EB1, + 0x01020309: 0x1EB2, + 0x01030309: 0x1EB3, + 0x01020303: 0x1EB4, + 0x01030303: 0x1EB5, + 0x1EA00306: 0x1EB6, + 0x1EA10306: 0x1EB7, + 0x00450323: 0x1EB8, + 0x00650323: 0x1EB9, + 0x00450309: 0x1EBA, + 0x00650309: 0x1EBB, + 0x00450303: 0x1EBC, + 0x00650303: 0x1EBD, + 0x00CA0301: 0x1EBE, + 0x00EA0301: 0x1EBF, + 0x00CA0300: 0x1EC0, + 0x00EA0300: 0x1EC1, + 0x00CA0309: 0x1EC2, + 0x00EA0309: 0x1EC3, + 0x00CA0303: 0x1EC4, + 0x00EA0303: 0x1EC5, + 0x1EB80302: 0x1EC6, + 0x1EB90302: 0x1EC7, + 0x00490309: 0x1EC8, + 0x00690309: 0x1EC9, + 0x00490323: 0x1ECA, + 0x00690323: 0x1ECB, + 0x004F0323: 0x1ECC, + 0x006F0323: 0x1ECD, + 0x004F0309: 0x1ECE, + 0x006F0309: 0x1ECF, + 0x00D40301: 0x1ED0, + 0x00F40301: 0x1ED1, + 0x00D40300: 0x1ED2, + 0x00F40300: 0x1ED3, + 0x00D40309: 0x1ED4, + 0x00F40309: 0x1ED5, + 0x00D40303: 0x1ED6, + 0x00F40303: 0x1ED7, + 0x1ECC0302: 0x1ED8, + 0x1ECD0302: 0x1ED9, + 0x01A00301: 0x1EDA, + 0x01A10301: 0x1EDB, + 0x01A00300: 0x1EDC, + 0x01A10300: 0x1EDD, + 0x01A00309: 0x1EDE, + 0x01A10309: 0x1EDF, + 0x01A00303: 0x1EE0, + 0x01A10303: 0x1EE1, + 0x01A00323: 0x1EE2, + 0x01A10323: 0x1EE3, + 0x00550323: 0x1EE4, + 0x00750323: 0x1EE5, + 0x00550309: 0x1EE6, + 0x00750309: 0x1EE7, + 0x01AF0301: 0x1EE8, + 0x01B00301: 0x1EE9, + 0x01AF0300: 0x1EEA, + 0x01B00300: 0x1EEB, + 0x01AF0309: 0x1EEC, + 0x01B00309: 0x1EED, + 0x01AF0303: 0x1EEE, + 0x01B00303: 0x1EEF, + 0x01AF0323: 0x1EF0, + 0x01B00323: 0x1EF1, + 0x00590300: 0x1EF2, + 0x00790300: 0x1EF3, + 0x00590323: 0x1EF4, + 0x00790323: 0x1EF5, + 0x00590309: 0x1EF6, + 0x00790309: 0x1EF7, + 0x00590303: 0x1EF8, + 0x00790303: 0x1EF9, + 0x03B10313: 0x1F00, + 0x03B10314: 0x1F01, + 0x1F000300: 0x1F02, + 0x1F010300: 0x1F03, + 0x1F000301: 0x1F04, + 0x1F010301: 0x1F05, + 0x1F000342: 0x1F06, + 0x1F010342: 0x1F07, + 0x03910313: 0x1F08, + 0x03910314: 0x1F09, + 0x1F080300: 0x1F0A, + 0x1F090300: 0x1F0B, + 0x1F080301: 0x1F0C, + 0x1F090301: 0x1F0D, + 0x1F080342: 0x1F0E, + 0x1F090342: 0x1F0F, + 0x03B50313: 0x1F10, + 0x03B50314: 0x1F11, + 0x1F100300: 0x1F12, + 0x1F110300: 0x1F13, + 0x1F100301: 0x1F14, + 0x1F110301: 0x1F15, + 0x03950313: 0x1F18, + 0x03950314: 0x1F19, + 0x1F180300: 0x1F1A, + 0x1F190300: 0x1F1B, + 0x1F180301: 0x1F1C, + 0x1F190301: 0x1F1D, + 0x03B70313: 0x1F20, + 0x03B70314: 0x1F21, + 0x1F200300: 0x1F22, + 0x1F210300: 0x1F23, + 0x1F200301: 0x1F24, + 0x1F210301: 0x1F25, + 0x1F200342: 0x1F26, + 0x1F210342: 0x1F27, + 0x03970313: 0x1F28, + 0x03970314: 0x1F29, + 0x1F280300: 0x1F2A, + 0x1F290300: 0x1F2B, + 0x1F280301: 0x1F2C, + 0x1F290301: 0x1F2D, + 0x1F280342: 0x1F2E, + 0x1F290342: 0x1F2F, + 0x03B90313: 0x1F30, + 0x03B90314: 0x1F31, + 0x1F300300: 0x1F32, + 0x1F310300: 0x1F33, + 0x1F300301: 0x1F34, + 0x1F310301: 0x1F35, + 0x1F300342: 0x1F36, + 0x1F310342: 0x1F37, + 0x03990313: 0x1F38, + 0x03990314: 0x1F39, + 0x1F380300: 0x1F3A, + 0x1F390300: 0x1F3B, + 0x1F380301: 0x1F3C, + 0x1F390301: 0x1F3D, + 0x1F380342: 0x1F3E, + 0x1F390342: 0x1F3F, + 0x03BF0313: 0x1F40, + 0x03BF0314: 0x1F41, + 0x1F400300: 0x1F42, + 0x1F410300: 0x1F43, + 0x1F400301: 0x1F44, + 0x1F410301: 0x1F45, + 0x039F0313: 0x1F48, + 0x039F0314: 0x1F49, + 0x1F480300: 0x1F4A, + 0x1F490300: 0x1F4B, + 0x1F480301: 0x1F4C, + 0x1F490301: 0x1F4D, + 0x03C50313: 0x1F50, + 0x03C50314: 0x1F51, + 0x1F500300: 0x1F52, + 0x1F510300: 0x1F53, + 0x1F500301: 0x1F54, + 0x1F510301: 0x1F55, + 0x1F500342: 0x1F56, + 0x1F510342: 0x1F57, + 0x03A50314: 0x1F59, + 0x1F590300: 0x1F5B, + 0x1F590301: 0x1F5D, + 0x1F590342: 0x1F5F, + 0x03C90313: 0x1F60, + 0x03C90314: 0x1F61, + 0x1F600300: 0x1F62, + 0x1F610300: 0x1F63, + 0x1F600301: 0x1F64, + 0x1F610301: 0x1F65, + 0x1F600342: 0x1F66, + 0x1F610342: 0x1F67, + 0x03A90313: 0x1F68, + 0x03A90314: 0x1F69, + 0x1F680300: 0x1F6A, + 0x1F690300: 0x1F6B, + 0x1F680301: 0x1F6C, + 0x1F690301: 0x1F6D, + 0x1F680342: 0x1F6E, + 0x1F690342: 0x1F6F, + 0x03B10300: 0x1F70, + 0x03B50300: 0x1F72, + 0x03B70300: 0x1F74, + 0x03B90300: 0x1F76, + 0x03BF0300: 0x1F78, + 0x03C50300: 0x1F7A, + 0x03C90300: 0x1F7C, + 0x1F000345: 0x1F80, + 0x1F010345: 0x1F81, + 0x1F020345: 0x1F82, + 0x1F030345: 0x1F83, + 0x1F040345: 0x1F84, + 0x1F050345: 0x1F85, + 0x1F060345: 0x1F86, + 0x1F070345: 0x1F87, + 0x1F080345: 0x1F88, + 0x1F090345: 0x1F89, + 0x1F0A0345: 0x1F8A, + 0x1F0B0345: 0x1F8B, + 0x1F0C0345: 0x1F8C, + 0x1F0D0345: 0x1F8D, + 0x1F0E0345: 0x1F8E, + 0x1F0F0345: 0x1F8F, + 0x1F200345: 0x1F90, + 0x1F210345: 0x1F91, + 0x1F220345: 0x1F92, + 0x1F230345: 0x1F93, + 0x1F240345: 0x1F94, + 0x1F250345: 0x1F95, + 0x1F260345: 0x1F96, + 0x1F270345: 0x1F97, + 0x1F280345: 0x1F98, + 0x1F290345: 0x1F99, + 0x1F2A0345: 0x1F9A, + 0x1F2B0345: 0x1F9B, + 0x1F2C0345: 0x1F9C, + 0x1F2D0345: 0x1F9D, + 0x1F2E0345: 0x1F9E, + 0x1F2F0345: 0x1F9F, + 0x1F600345: 0x1FA0, + 0x1F610345: 0x1FA1, + 0x1F620345: 0x1FA2, + 0x1F630345: 0x1FA3, + 0x1F640345: 0x1FA4, + 0x1F650345: 0x1FA5, + 0x1F660345: 0x1FA6, + 0x1F670345: 0x1FA7, + 0x1F680345: 0x1FA8, + 0x1F690345: 0x1FA9, + 0x1F6A0345: 0x1FAA, + 0x1F6B0345: 0x1FAB, + 0x1F6C0345: 0x1FAC, + 0x1F6D0345: 0x1FAD, + 0x1F6E0345: 0x1FAE, + 0x1F6F0345: 0x1FAF, + 0x03B10306: 0x1FB0, + 0x03B10304: 0x1FB1, + 0x1F700345: 0x1FB2, + 0x03B10345: 0x1FB3, + 0x03AC0345: 0x1FB4, + 0x03B10342: 0x1FB6, + 0x1FB60345: 0x1FB7, + 0x03910306: 0x1FB8, + 0x03910304: 0x1FB9, + 0x03910300: 0x1FBA, + 0x03910345: 0x1FBC, + 0x00A80342: 0x1FC1, + 0x1F740345: 0x1FC2, + 0x03B70345: 0x1FC3, + 0x03AE0345: 0x1FC4, + 0x03B70342: 0x1FC6, + 0x1FC60345: 0x1FC7, + 0x03950300: 0x1FC8, + 0x03970300: 0x1FCA, + 0x03970345: 0x1FCC, + 0x1FBF0300: 0x1FCD, + 0x1FBF0301: 0x1FCE, + 0x1FBF0342: 0x1FCF, + 0x03B90306: 0x1FD0, + 0x03B90304: 0x1FD1, + 0x03CA0300: 0x1FD2, + 0x03B90342: 0x1FD6, + 0x03CA0342: 0x1FD7, + 0x03990306: 0x1FD8, + 0x03990304: 0x1FD9, + 0x03990300: 0x1FDA, + 0x1FFE0300: 0x1FDD, + 0x1FFE0301: 0x1FDE, + 0x1FFE0342: 0x1FDF, + 0x03C50306: 0x1FE0, + 0x03C50304: 0x1FE1, + 0x03CB0300: 0x1FE2, + 0x03C10313: 0x1FE4, + 0x03C10314: 0x1FE5, + 0x03C50342: 0x1FE6, + 0x03CB0342: 0x1FE7, + 0x03A50306: 0x1FE8, + 0x03A50304: 0x1FE9, + 0x03A50300: 0x1FEA, + 0x03A10314: 0x1FEC, + 0x00A80300: 0x1FED, + 0x1F7C0345: 0x1FF2, + 0x03C90345: 0x1FF3, + 0x03CE0345: 0x1FF4, + 0x03C90342: 0x1FF6, + 0x1FF60345: 0x1FF7, + 0x039F0300: 0x1FF8, + 0x03A90300: 0x1FFA, + 0x03A90345: 0x1FFC, + 0x21900338: 0x219A, + 0x21920338: 0x219B, + 0x21940338: 0x21AE, + 0x21D00338: 0x21CD, + 0x21D40338: 0x21CE, + 0x21D20338: 0x21CF, + 0x22030338: 0x2204, + 0x22080338: 0x2209, + 0x220B0338: 0x220C, + 0x22230338: 0x2224, + 0x22250338: 0x2226, + 0x223C0338: 0x2241, + 0x22430338: 0x2244, + 0x22450338: 0x2247, + 0x22480338: 0x2249, + 0x003D0338: 0x2260, + 0x22610338: 0x2262, + 0x224D0338: 0x226D, + 0x003C0338: 0x226E, + 0x003E0338: 0x226F, + 0x22640338: 0x2270, + 0x22650338: 0x2271, + 0x22720338: 0x2274, + 0x22730338: 0x2275, + 0x22760338: 0x2278, + 0x22770338: 0x2279, + 0x227A0338: 0x2280, + 0x227B0338: 0x2281, + 0x22820338: 0x2284, + 0x22830338: 0x2285, + 0x22860338: 0x2288, + 0x22870338: 0x2289, + 0x22A20338: 0x22AC, + 0x22A80338: 0x22AD, + 0x22A90338: 0x22AE, + 0x22AB0338: 0x22AF, + 0x227C0338: 0x22E0, + 0x227D0338: 0x22E1, + 0x22910338: 0x22E2, + 0x22920338: 0x22E3, + 0x22B20338: 0x22EA, + 0x22B30338: 0x22EB, + 0x22B40338: 0x22EC, + 0x22B50338: 0x22ED, + 0x304B3099: 0x304C, + 0x304D3099: 0x304E, + 0x304F3099: 0x3050, + 0x30513099: 0x3052, + 0x30533099: 0x3054, + 0x30553099: 0x3056, + 0x30573099: 0x3058, + 0x30593099: 0x305A, + 0x305B3099: 0x305C, + 0x305D3099: 0x305E, + 0x305F3099: 0x3060, + 0x30613099: 0x3062, + 0x30643099: 0x3065, + 0x30663099: 0x3067, + 0x30683099: 0x3069, + 0x306F3099: 0x3070, + 0x306F309A: 0x3071, + 0x30723099: 0x3073, + 0x3072309A: 0x3074, + 0x30753099: 0x3076, + 0x3075309A: 0x3077, + 0x30783099: 0x3079, + 0x3078309A: 0x307A, + 0x307B3099: 0x307C, + 0x307B309A: 0x307D, + 0x30463099: 0x3094, + 0x309D3099: 0x309E, + 0x30AB3099: 0x30AC, + 0x30AD3099: 0x30AE, + 0x30AF3099: 0x30B0, + 0x30B13099: 0x30B2, + 0x30B33099: 0x30B4, + 0x30B53099: 0x30B6, + 0x30B73099: 0x30B8, + 0x30B93099: 0x30BA, + 0x30BB3099: 0x30BC, + 0x30BD3099: 0x30BE, + 0x30BF3099: 0x30C0, + 0x30C13099: 0x30C2, + 0x30C43099: 0x30C5, + 0x30C63099: 0x30C7, + 0x30C83099: 0x30C9, + 0x30CF3099: 0x30D0, + 0x30CF309A: 0x30D1, + 0x30D23099: 0x30D3, + 0x30D2309A: 0x30D4, + 0x30D53099: 0x30D6, + 0x30D5309A: 0x30D7, + 0x30D83099: 0x30D9, + 0x30D8309A: 0x30DA, + 0x30DB3099: 0x30DC, + 0x30DB309A: 0x30DD, + 0x30A63099: 0x30F4, + 0x30EF3099: 0x30F7, + 0x30F03099: 0x30F8, + 0x30F13099: 0x30F9, + 0x30F23099: 0x30FA, + 0x30FD3099: 0x30FE, + 0x109910BA: 0x1109A, + 0x109B10BA: 0x1109C, + 0x10A510BA: 0x110AB, + 0x11311127: 0x1112E, + 0x11321127: 0x1112F, + 0x1347133E: 0x1134B, + 0x13471357: 0x1134C, + 0x14B914BA: 0x114BB, + 0x14B914B0: 0x114BC, + 0x14B914BD: 0x114BE, + 0x15B815AF: 0x115BA, + 0x15B915AF: 0x115BB, +} + +// Total size of tables: 53KB (53976 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/transform.go b/vendor/golang.org/x/text/unicode/norm/transform.go new file mode 100644 index 0000000000..8589067cde --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/transform.go @@ -0,0 +1,88 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// Reset implements the Reset method of the transform.Transformer interface. +func (Form) Reset() {} + +// Transform implements the Transform method of the transform.Transformer +// interface. It may need to write segments of up to MaxSegmentSize at once. +// Users should either catch ErrShortDst and allow dst to grow or have dst be at +// least of size MaxTransformChunkSize to be guaranteed of progress. +func (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := 0 + // Cap the maximum number of src bytes to check. + b := src + eof := atEOF + if ns := len(dst); ns < len(b) { + err = transform.ErrShortDst + eof = false + b = b[:ns] + } + i, ok := formTable[f].quickSpan(inputBytes(b), n, len(b), eof) + n += copy(dst[n:], b[n:i]) + if !ok { + nDst, nSrc, err = f.transform(dst[n:], src[n:], atEOF) + return nDst + n, nSrc + n, err + } + if n < len(src) && !atEOF { + err = transform.ErrShortSrc + } + return n, n, err +} + +func flushTransform(rb *reorderBuffer) bool { + // Write out (must fully fit in dst, or else it is a ErrShortDst). + if len(rb.out) < rb.nrune*utf8.UTFMax { + return false + } + rb.out = rb.out[rb.flushCopy(rb.out):] + return true +} + +var errs = []error{nil, transform.ErrShortDst, transform.ErrShortSrc} + +// transform implements the transform.Transformer interface. It is only called +// when quickSpan does not pass for a given string. +func (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + // TODO: get rid of reorderBuffer. See CL 23460044. + rb := reorderBuffer{} + rb.init(f, src) + for { + // Load segment into reorder buffer. + rb.setFlusher(dst[nDst:], flushTransform) + end := decomposeSegment(&rb, nSrc, atEOF) + if end < 0 { + return nDst, nSrc, errs[-end] + } + nDst = len(dst) - len(rb.out) + nSrc = end + + // Next quickSpan. + end = rb.nsrc + eof := atEOF + if n := nSrc + len(dst) - nDst; n < end { + err = transform.ErrShortDst + end = n + eof = false + } + end, ok := rb.f.quickSpan(rb.src, nSrc, end, eof) + n := copy(dst[nDst:], rb.src.bytes[nSrc:end]) + nSrc += n + nDst += n + if ok { + if n < rb.nsrc && !atEOF { + err = transform.ErrShortSrc + } + return nDst, nSrc, err + } + } +} diff --git a/vendor/golang.org/x/text/unicode/norm/trie.go b/vendor/golang.org/x/text/unicode/norm/trie.go new file mode 100644 index 0000000000..423386bf43 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/trie.go @@ -0,0 +1,54 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package norm + +type valueRange struct { + value uint16 // header: value:stride + lo, hi byte // header: lo:n +} + +type sparseBlocks struct { + values []valueRange + offset []uint16 +} + +var nfcSparse = sparseBlocks{ + values: nfcSparseValues[:], + offset: nfcSparseOffset[:], +} + +var nfkcSparse = sparseBlocks{ + values: nfkcSparseValues[:], + offset: nfkcSparseOffset[:], +} + +var ( + nfcData = newNfcTrie(0) + nfkcData = newNfkcTrie(0) +) + +// lookupValue determines the type of block n and looks up the value for b. +// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block +// is a list of ranges with an accompanying value. Given a matching range r, +// the value for b is by r.value + (b - r.lo) * stride. +func (t *sparseBlocks) lookup(n uint32, b byte) uint16 { + offset := t.offset[n] + header := t.values[offset] + lo := offset + 1 + hi := lo + uint16(header.lo) + for lo < hi { + m := lo + (hi-lo)/2 + r := t.values[m] + if r.lo <= b && b <= r.hi { + return r.value + uint16(b-r.lo)*header.value + } + if b < r.lo { + hi = m + } else { + lo = m + 1 + } + } + return 0 +} diff --git a/vendor/golang.org/x/text/unicode/norm/triegen.go b/vendor/golang.org/x/text/unicode/norm/triegen.go new file mode 100644 index 0000000000..45d711900d --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/triegen.go @@ -0,0 +1,117 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Trie table generator. +// Used by make*tables tools to generate a go file with trie data structures +// for mapping UTF-8 to a 16-bit value. All but the last byte in a UTF-8 byte +// sequence are used to lookup offsets in the index table to be used for the +// next byte. The last byte is used to index into a table with 16-bit values. + +package main + +import ( + "fmt" + "io" +) + +const maxSparseEntries = 16 + +type normCompacter struct { + sparseBlocks [][]uint64 + sparseOffset []uint16 + sparseCount int + name string +} + +func mostFrequentStride(a []uint64) int { + counts := make(map[int]int) + var v int + for _, x := range a { + if stride := int(x) - v; v != 0 && stride >= 0 { + counts[stride]++ + } + v = int(x) + } + var maxs, maxc int + for stride, cnt := range counts { + if cnt > maxc || (cnt == maxc && stride < maxs) { + maxs, maxc = stride, cnt + } + } + return maxs +} + +func countSparseEntries(a []uint64) int { + stride := mostFrequentStride(a) + var v, count int + for _, tv := range a { + if int(tv)-v != stride { + if tv != 0 { + count++ + } + } + v = int(tv) + } + return count +} + +func (c *normCompacter) Size(v []uint64) (sz int, ok bool) { + if n := countSparseEntries(v); n <= maxSparseEntries { + return (n+1)*4 + 2, true + } + return 0, false +} + +func (c *normCompacter) Store(v []uint64) uint32 { + h := uint32(len(c.sparseOffset)) + c.sparseBlocks = append(c.sparseBlocks, v) + c.sparseOffset = append(c.sparseOffset, uint16(c.sparseCount)) + c.sparseCount += countSparseEntries(v) + 1 + return h +} + +func (c *normCompacter) Handler() string { + return c.name + "Sparse.lookup" +} + +func (c *normCompacter) Print(w io.Writer) (retErr error) { + p := func(f string, x ...interface{}) { + if _, err := fmt.Fprintf(w, f, x...); retErr == nil && err != nil { + retErr = err + } + } + + ls := len(c.sparseBlocks) + p("// %sSparseOffset: %d entries, %d bytes\n", c.name, ls, ls*2) + p("var %sSparseOffset = %#v\n\n", c.name, c.sparseOffset) + + ns := c.sparseCount + p("// %sSparseValues: %d entries, %d bytes\n", c.name, ns, ns*4) + p("var %sSparseValues = [%d]valueRange {", c.name, ns) + for i, b := range c.sparseBlocks { + p("\n// Block %#x, offset %#x", i, c.sparseOffset[i]) + var v int + stride := mostFrequentStride(b) + n := countSparseEntries(b) + p("\n{value:%#04x,lo:%#02x},", stride, uint8(n)) + for i, nv := range b { + if int(nv)-v != stride { + if v != 0 { + p(",hi:%#02x},", 0x80+i-1) + } + if nv != 0 { + p("\n{value:%#04x,lo:%#02x", nv, 0x80+i) + } + } + v = int(nv) + } + if v != 0 { + p(",hi:%#02x},", 0x80+len(b)-1) + } + } + p("\n}\n\n") + return +} diff --git a/vendor/golang.org/x/text/width/gen.go b/vendor/golang.org/x/text/width/gen.go new file mode 100644 index 0000000000..03d9f99ad6 --- /dev/null +++ b/vendor/golang.org/x/text/width/gen.go @@ -0,0 +1,115 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// This program generates the trie for width operations. The generated table +// includes width category information as well as the normalization mappings. +package main + +import ( + "bytes" + "fmt" + "io" + "log" + "math" + "unicode/utf8" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/triegen" +) + +// See gen_common.go for flags. + +func main() { + gen.Init() + genTables() + genTests() + gen.Repackage("gen_trieval.go", "trieval.go", "width") + gen.Repackage("gen_common.go", "common_test.go", "width") +} + +func genTables() { + t := triegen.NewTrie("width") + // fold and inverse mappings. See mapComment for a description of the format + // of each entry. Add dummy value to make an index of 0 mean no mapping. + inverse := [][4]byte{{}} + mapping := map[[4]byte]int{[4]byte{}: 0} + + getWidthData(func(r rune, tag elem, alt rune) { + idx := 0 + if alt != 0 { + var buf [4]byte + buf[0] = byte(utf8.EncodeRune(buf[1:], alt)) + s := string(r) + buf[buf[0]] ^= s[len(s)-1] + var ok bool + if idx, ok = mapping[buf]; !ok { + idx = len(mapping) + if idx > math.MaxUint8 { + log.Fatalf("Index %d does not fit in a byte.", idx) + } + mapping[buf] = idx + inverse = append(inverse, buf) + } + } + t.Insert(r, uint64(tag|elem(idx))) + }) + + w := &bytes.Buffer{} + gen.WriteUnicodeVersion(w) + + sz, err := t.Gen(w) + if err != nil { + log.Fatal(err) + } + + sz += writeMappings(w, inverse) + + fmt.Fprintf(w, "// Total table size %d bytes (%dKiB)\n", sz, sz/1024) + + gen.WriteGoFile(*outputFile, "width", w.Bytes()) +} + +const inverseDataComment = ` +// inverseData contains 4-byte entries of the following format: +// <length> <modified UTF-8-encoded rune> <0 padding> +// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the +// UTF-8 encoding of the original rune. Mappings often have the following +// pattern: +// A -> A (U+FF21 -> U+0041) +// B -> B (U+FF22 -> U+0042) +// ... +// By xor-ing the last byte the same entry can be shared by many mappings. This +// reduces the total number of distinct entries by about two thirds. +// The resulting entry for the aforementioned mappings is +// { 0x01, 0xE0, 0x00, 0x00 } +// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get +// E0 ^ A1 = 41. +// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get +// E0 ^ A2 = 42. +// Note that because of the xor-ing, the byte sequence stored in the entry is +// not valid UTF-8.` + +func writeMappings(w io.Writer, data [][4]byte) int { + fmt.Fprintln(w, inverseDataComment) + fmt.Fprintf(w, "var inverseData = [%d][4]byte{\n", len(data)) + for _, x := range data { + fmt.Fprintf(w, "{ 0x%02x, 0x%02x, 0x%02x, 0x%02x },\n", x[0], x[1], x[2], x[3]) + } + fmt.Fprintln(w, "}") + return len(data) * 4 +} + +func genTests() { + w := &bytes.Buffer{} + fmt.Fprintf(w, "\nvar mapRunes = map[rune]struct{r rune; e elem}{\n") + getWidthData(func(r rune, tag elem, alt rune) { + if alt != 0 { + fmt.Fprintf(w, "\t0x%X: {0x%X, 0x%X},\n", r, alt, tag) + } + }) + fmt.Fprintln(w, "}") + gen.WriteGoFile("runes_test.go", "width", w.Bytes()) +} diff --git a/vendor/golang.org/x/text/width/gen_common.go b/vendor/golang.org/x/text/width/gen_common.go new file mode 100644 index 0000000000..601e752684 --- /dev/null +++ b/vendor/golang.org/x/text/width/gen_common.go @@ -0,0 +1,96 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// This code is shared between the main code generator and the test code. + +import ( + "flag" + "log" + "strconv" + "strings" + + "golang.org/x/text/internal/gen" + "golang.org/x/text/internal/ucd" +) + +var ( + outputFile = flag.String("out", "tables.go", "output file") +) + +var typeMap = map[string]elem{ + "A": tagAmbiguous, + "N": tagNeutral, + "Na": tagNarrow, + "W": tagWide, + "F": tagFullwidth, + "H": tagHalfwidth, +} + +// getWidthData calls f for every entry for which it is defined. +// +// f may be called multiple times for the same rune. The last call to f is the +// correct value. f is not called for all runes. The default tag type is +// Neutral. +func getWidthData(f func(r rune, tag elem, alt rune)) { + // Set the default values for Unified Ideographs. In line with Annex 11, + // we encode full ranges instead of the defined runes in Unified_Ideograph. + for _, b := range []struct{ lo, hi rune }{ + {0x4E00, 0x9FFF}, // the CJK Unified Ideographs block, + {0x3400, 0x4DBF}, // the CJK Unified Ideographs Externsion A block, + {0xF900, 0xFAFF}, // the CJK Compatibility Ideographs block, + {0x20000, 0x2FFFF}, // the Supplementary Ideographic Plane, + {0x30000, 0x3FFFF}, // the Tertiary Ideographic Plane, + } { + for r := b.lo; r <= b.hi; r++ { + f(r, tagWide, 0) + } + } + + inverse := map[rune]rune{} + maps := map[string]bool{ + "<wide>": true, + "<narrow>": true, + } + + // We cannot reuse package norm's decomposition, as we need an unexpanded + // decomposition. We make use of the opportunity to verify that the + // decomposition type is as expected. + ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { + r := p.Rune(0) + s := strings.SplitN(p.String(ucd.DecompMapping), " ", 2) + if !maps[s[0]] { + return + } + x, err := strconv.ParseUint(s[1], 16, 32) + if err != nil { + log.Fatalf("Error parsing rune %q", s[1]) + } + if inverse[r] != 0 || inverse[rune(x)] != 0 { + log.Fatalf("Circular dependency in mapping between %U and %U", r, x) + } + inverse[r] = rune(x) + inverse[rune(x)] = r + }) + + // <rune range>;<type> + ucd.Parse(gen.OpenUCDFile("EastAsianWidth.txt"), func(p *ucd.Parser) { + tag, ok := typeMap[p.String(1)] + if !ok { + log.Fatalf("Unknown width type %q", p.String(1)) + } + r := p.Rune(0) + alt, ok := inverse[r] + if tag == tagFullwidth || tag == tagHalfwidth && r != wonSign { + tag |= tagNeedsFold + if !ok { + log.Fatalf("Narrow or wide rune %U has no decomposition", r) + } + } + f(r, tag, alt) + }) +} diff --git a/vendor/golang.org/x/text/width/gen_trieval.go b/vendor/golang.org/x/text/width/gen_trieval.go new file mode 100644 index 0000000000..c17334aa61 --- /dev/null +++ b/vendor/golang.org/x/text/width/gen_trieval.go @@ -0,0 +1,34 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +package main + +// elem is an entry of the width trie. The high byte is used to encode the type +// of the rune. The low byte is used to store the index to a mapping entry in +// the inverseData array. +type elem uint16 + +const ( + tagNeutral elem = iota << typeShift + tagAmbiguous + tagWide + tagNarrow + tagFullwidth + tagHalfwidth +) + +const ( + numTypeBits = 3 + typeShift = 16 - numTypeBits + + // tagNeedsFold is true for all fullwidth and halfwidth runes except for + // the Won sign U+20A9. + tagNeedsFold = 0x1000 + + // The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide + // variant. + wonSign rune = 0x20A9 +) diff --git a/vendor/golang.org/x/text/width/kind_string.go b/vendor/golang.org/x/text/width/kind_string.go new file mode 100644 index 0000000000..ab4fee542f --- /dev/null +++ b/vendor/golang.org/x/text/width/kind_string.go @@ -0,0 +1,16 @@ +// Code generated by "stringer -type=Kind"; DO NOT EDIT + +package width + +import "fmt" + +const _Kind_name = "NeutralEastAsianAmbiguousEastAsianWideEastAsianNarrowEastAsianFullwidthEastAsianHalfwidth" + +var _Kind_index = [...]uint8{0, 7, 25, 38, 53, 71, 89} + +func (i Kind) String() string { + if i < 0 || i >= Kind(len(_Kind_index)-1) { + return fmt.Sprintf("Kind(%d)", i) + } + return _Kind_name[_Kind_index[i]:_Kind_index[i+1]] +} diff --git a/vendor/golang.org/x/text/width/tables.go b/vendor/golang.org/x/text/width/tables.go new file mode 100644 index 0000000000..242da0fdb9 --- /dev/null +++ b/vendor/golang.org/x/text/width/tables.go @@ -0,0 +1,1284 @@ +// This file was generated by go generate; DO NOT EDIT + +package width + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *widthTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return widthValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = widthIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = widthIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = widthIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *widthTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return widthValues[c0] + } + i := widthIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = widthIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = widthIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *widthTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return widthValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = widthIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := widthIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = widthIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = widthIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *widthTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return widthValues[c0] + } + i := widthIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = widthIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = widthIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// widthTrie. Total size: 14080 bytes (13.75 KiB). Checksum: 3b8aeb3dc03667a3. +type widthTrie struct{} + +func newWidthTrie(i int) *widthTrie { + return &widthTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *widthTrie) lookupValue(n uint32, b byte) uint16 { + switch { + default: + return uint16(widthValues[n<<6+uint32(b)]) + } +} + +// widthValues: 99 blocks, 6336 entries, 12672 bytes +// The third block is the zero block. +var widthValues = [6336]uint16{ + // Block 0x0, offset 0x0 + 0x20: 0x6001, 0x21: 0x6002, 0x22: 0x6002, 0x23: 0x6002, + 0x24: 0x6002, 0x25: 0x6002, 0x26: 0x6002, 0x27: 0x6002, 0x28: 0x6002, 0x29: 0x6002, + 0x2a: 0x6002, 0x2b: 0x6002, 0x2c: 0x6002, 0x2d: 0x6002, 0x2e: 0x6002, 0x2f: 0x6002, + 0x30: 0x6002, 0x31: 0x6002, 0x32: 0x6002, 0x33: 0x6002, 0x34: 0x6002, 0x35: 0x6002, + 0x36: 0x6002, 0x37: 0x6002, 0x38: 0x6002, 0x39: 0x6002, 0x3a: 0x6002, 0x3b: 0x6002, + 0x3c: 0x6002, 0x3d: 0x6002, 0x3e: 0x6002, 0x3f: 0x6002, + // Block 0x1, offset 0x40 + 0x40: 0x6003, 0x41: 0x6003, 0x42: 0x6003, 0x43: 0x6003, 0x44: 0x6003, 0x45: 0x6003, + 0x46: 0x6003, 0x47: 0x6003, 0x48: 0x6003, 0x49: 0x6003, 0x4a: 0x6003, 0x4b: 0x6003, + 0x4c: 0x6003, 0x4d: 0x6003, 0x4e: 0x6003, 0x4f: 0x6003, 0x50: 0x6003, 0x51: 0x6003, + 0x52: 0x6003, 0x53: 0x6003, 0x54: 0x6003, 0x55: 0x6003, 0x56: 0x6003, 0x57: 0x6003, + 0x58: 0x6003, 0x59: 0x6003, 0x5a: 0x6003, 0x5b: 0x6003, 0x5c: 0x6003, 0x5d: 0x6003, + 0x5e: 0x6003, 0x5f: 0x6003, 0x60: 0x6004, 0x61: 0x6004, 0x62: 0x6004, 0x63: 0x6004, + 0x64: 0x6004, 0x65: 0x6004, 0x66: 0x6004, 0x67: 0x6004, 0x68: 0x6004, 0x69: 0x6004, + 0x6a: 0x6004, 0x6b: 0x6004, 0x6c: 0x6004, 0x6d: 0x6004, 0x6e: 0x6004, 0x6f: 0x6004, + 0x70: 0x6004, 0x71: 0x6004, 0x72: 0x6004, 0x73: 0x6004, 0x74: 0x6004, 0x75: 0x6004, + 0x76: 0x6004, 0x77: 0x6004, 0x78: 0x6004, 0x79: 0x6004, 0x7a: 0x6004, 0x7b: 0x6004, + 0x7c: 0x6004, 0x7d: 0x6004, 0x7e: 0x6004, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xe1: 0x2000, 0xe2: 0x6005, 0xe3: 0x6005, + 0xe4: 0x2000, 0xe5: 0x6006, 0xe6: 0x6005, 0xe7: 0x2000, 0xe8: 0x2000, + 0xea: 0x2000, 0xec: 0x6007, 0xed: 0x2000, 0xee: 0x2000, 0xef: 0x6008, + 0xf0: 0x2000, 0xf1: 0x2000, 0xf2: 0x2000, 0xf3: 0x2000, 0xf4: 0x2000, + 0xf6: 0x2000, 0xf7: 0x2000, 0xf8: 0x2000, 0xf9: 0x2000, 0xfa: 0x2000, + 0xfc: 0x2000, 0xfd: 0x2000, 0xfe: 0x2000, 0xff: 0x2000, + // Block 0x4, offset 0x100 + 0x106: 0x2000, + 0x110: 0x2000, + 0x117: 0x2000, + 0x118: 0x2000, + 0x11e: 0x2000, 0x11f: 0x2000, 0x120: 0x2000, 0x121: 0x2000, + 0x126: 0x2000, 0x128: 0x2000, 0x129: 0x2000, + 0x12a: 0x2000, 0x12c: 0x2000, 0x12d: 0x2000, + 0x130: 0x2000, 0x132: 0x2000, 0x133: 0x2000, + 0x137: 0x2000, 0x138: 0x2000, 0x139: 0x2000, 0x13a: 0x2000, + 0x13c: 0x2000, 0x13e: 0x2000, + // Block 0x5, offset 0x140 + 0x141: 0x2000, + 0x151: 0x2000, + 0x153: 0x2000, + 0x15b: 0x2000, + 0x166: 0x2000, 0x167: 0x2000, + 0x16b: 0x2000, + 0x171: 0x2000, 0x172: 0x2000, 0x173: 0x2000, + 0x178: 0x2000, + 0x17f: 0x2000, + // Block 0x6, offset 0x180 + 0x180: 0x2000, 0x181: 0x2000, 0x182: 0x2000, 0x184: 0x2000, + 0x188: 0x2000, 0x189: 0x2000, 0x18a: 0x2000, 0x18b: 0x2000, + 0x18d: 0x2000, + 0x192: 0x2000, 0x193: 0x2000, + 0x1a6: 0x2000, 0x1a7: 0x2000, + 0x1ab: 0x2000, + // Block 0x7, offset 0x1c0 + 0x1ce: 0x2000, 0x1d0: 0x2000, + 0x1d2: 0x2000, 0x1d4: 0x2000, 0x1d6: 0x2000, + 0x1d8: 0x2000, 0x1da: 0x2000, 0x1dc: 0x2000, + // Block 0x8, offset 0x200 + 0x211: 0x2000, + 0x221: 0x2000, + // Block 0x9, offset 0x240 + 0x244: 0x2000, + 0x247: 0x2000, 0x249: 0x2000, 0x24a: 0x2000, 0x24b: 0x2000, + 0x24d: 0x2000, 0x250: 0x2000, + 0x258: 0x2000, 0x259: 0x2000, 0x25a: 0x2000, 0x25b: 0x2000, 0x25d: 0x2000, + 0x25f: 0x2000, + // Block 0xa, offset 0x280 + 0x280: 0x2000, 0x281: 0x2000, 0x282: 0x2000, 0x283: 0x2000, 0x284: 0x2000, 0x285: 0x2000, + 0x286: 0x2000, 0x287: 0x2000, 0x288: 0x2000, 0x289: 0x2000, 0x28a: 0x2000, 0x28b: 0x2000, + 0x28c: 0x2000, 0x28d: 0x2000, 0x28e: 0x2000, 0x28f: 0x2000, 0x290: 0x2000, 0x291: 0x2000, + 0x292: 0x2000, 0x293: 0x2000, 0x294: 0x2000, 0x295: 0x2000, 0x296: 0x2000, 0x297: 0x2000, + 0x298: 0x2000, 0x299: 0x2000, 0x29a: 0x2000, 0x29b: 0x2000, 0x29c: 0x2000, 0x29d: 0x2000, + 0x29e: 0x2000, 0x29f: 0x2000, 0x2a0: 0x2000, 0x2a1: 0x2000, 0x2a2: 0x2000, 0x2a3: 0x2000, + 0x2a4: 0x2000, 0x2a5: 0x2000, 0x2a6: 0x2000, 0x2a7: 0x2000, 0x2a8: 0x2000, 0x2a9: 0x2000, + 0x2aa: 0x2000, 0x2ab: 0x2000, 0x2ac: 0x2000, 0x2ad: 0x2000, 0x2ae: 0x2000, 0x2af: 0x2000, + 0x2b0: 0x2000, 0x2b1: 0x2000, 0x2b2: 0x2000, 0x2b3: 0x2000, 0x2b4: 0x2000, 0x2b5: 0x2000, + 0x2b6: 0x2000, 0x2b7: 0x2000, 0x2b8: 0x2000, 0x2b9: 0x2000, 0x2ba: 0x2000, 0x2bb: 0x2000, + 0x2bc: 0x2000, 0x2bd: 0x2000, 0x2be: 0x2000, 0x2bf: 0x2000, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x2000, 0x2c1: 0x2000, 0x2c2: 0x2000, 0x2c3: 0x2000, 0x2c4: 0x2000, 0x2c5: 0x2000, + 0x2c6: 0x2000, 0x2c7: 0x2000, 0x2c8: 0x2000, 0x2c9: 0x2000, 0x2ca: 0x2000, 0x2cb: 0x2000, + 0x2cc: 0x2000, 0x2cd: 0x2000, 0x2ce: 0x2000, 0x2cf: 0x2000, 0x2d0: 0x2000, 0x2d1: 0x2000, + 0x2d2: 0x2000, 0x2d3: 0x2000, 0x2d4: 0x2000, 0x2d5: 0x2000, 0x2d6: 0x2000, 0x2d7: 0x2000, + 0x2d8: 0x2000, 0x2d9: 0x2000, 0x2da: 0x2000, 0x2db: 0x2000, 0x2dc: 0x2000, 0x2dd: 0x2000, + 0x2de: 0x2000, 0x2df: 0x2000, 0x2e0: 0x2000, 0x2e1: 0x2000, 0x2e2: 0x2000, 0x2e3: 0x2000, + 0x2e4: 0x2000, 0x2e5: 0x2000, 0x2e6: 0x2000, 0x2e7: 0x2000, 0x2e8: 0x2000, 0x2e9: 0x2000, + 0x2ea: 0x2000, 0x2eb: 0x2000, 0x2ec: 0x2000, 0x2ed: 0x2000, 0x2ee: 0x2000, 0x2ef: 0x2000, + // Block 0xc, offset 0x300 + 0x311: 0x2000, + 0x312: 0x2000, 0x313: 0x2000, 0x314: 0x2000, 0x315: 0x2000, 0x316: 0x2000, 0x317: 0x2000, + 0x318: 0x2000, 0x319: 0x2000, 0x31a: 0x2000, 0x31b: 0x2000, 0x31c: 0x2000, 0x31d: 0x2000, + 0x31e: 0x2000, 0x31f: 0x2000, 0x320: 0x2000, 0x321: 0x2000, 0x323: 0x2000, + 0x324: 0x2000, 0x325: 0x2000, 0x326: 0x2000, 0x327: 0x2000, 0x328: 0x2000, 0x329: 0x2000, + 0x331: 0x2000, 0x332: 0x2000, 0x333: 0x2000, 0x334: 0x2000, 0x335: 0x2000, + 0x336: 0x2000, 0x337: 0x2000, 0x338: 0x2000, 0x339: 0x2000, 0x33a: 0x2000, 0x33b: 0x2000, + 0x33c: 0x2000, 0x33d: 0x2000, 0x33e: 0x2000, 0x33f: 0x2000, + // Block 0xd, offset 0x340 + 0x340: 0x2000, 0x341: 0x2000, 0x343: 0x2000, 0x344: 0x2000, 0x345: 0x2000, + 0x346: 0x2000, 0x347: 0x2000, 0x348: 0x2000, 0x349: 0x2000, + // Block 0xe, offset 0x380 + 0x381: 0x2000, + 0x390: 0x2000, 0x391: 0x2000, + 0x392: 0x2000, 0x393: 0x2000, 0x394: 0x2000, 0x395: 0x2000, 0x396: 0x2000, 0x397: 0x2000, + 0x398: 0x2000, 0x399: 0x2000, 0x39a: 0x2000, 0x39b: 0x2000, 0x39c: 0x2000, 0x39d: 0x2000, + 0x39e: 0x2000, 0x39f: 0x2000, 0x3a0: 0x2000, 0x3a1: 0x2000, 0x3a2: 0x2000, 0x3a3: 0x2000, + 0x3a4: 0x2000, 0x3a5: 0x2000, 0x3a6: 0x2000, 0x3a7: 0x2000, 0x3a8: 0x2000, 0x3a9: 0x2000, + 0x3aa: 0x2000, 0x3ab: 0x2000, 0x3ac: 0x2000, 0x3ad: 0x2000, 0x3ae: 0x2000, 0x3af: 0x2000, + 0x3b0: 0x2000, 0x3b1: 0x2000, 0x3b2: 0x2000, 0x3b3: 0x2000, 0x3b4: 0x2000, 0x3b5: 0x2000, + 0x3b6: 0x2000, 0x3b7: 0x2000, 0x3b8: 0x2000, 0x3b9: 0x2000, 0x3ba: 0x2000, 0x3bb: 0x2000, + 0x3bc: 0x2000, 0x3bd: 0x2000, 0x3be: 0x2000, 0x3bf: 0x2000, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x2000, 0x3c1: 0x2000, 0x3c2: 0x2000, 0x3c3: 0x2000, 0x3c4: 0x2000, 0x3c5: 0x2000, + 0x3c6: 0x2000, 0x3c7: 0x2000, 0x3c8: 0x2000, 0x3c9: 0x2000, 0x3ca: 0x2000, 0x3cb: 0x2000, + 0x3cc: 0x2000, 0x3cd: 0x2000, 0x3ce: 0x2000, 0x3cf: 0x2000, 0x3d1: 0x2000, + // Block 0x10, offset 0x400 + 0x400: 0x4000, 0x401: 0x4000, 0x402: 0x4000, 0x403: 0x4000, 0x404: 0x4000, 0x405: 0x4000, + 0x406: 0x4000, 0x407: 0x4000, 0x408: 0x4000, 0x409: 0x4000, 0x40a: 0x4000, 0x40b: 0x4000, + 0x40c: 0x4000, 0x40d: 0x4000, 0x40e: 0x4000, 0x40f: 0x4000, 0x410: 0x4000, 0x411: 0x4000, + 0x412: 0x4000, 0x413: 0x4000, 0x414: 0x4000, 0x415: 0x4000, 0x416: 0x4000, 0x417: 0x4000, + 0x418: 0x4000, 0x419: 0x4000, 0x41a: 0x4000, 0x41b: 0x4000, 0x41c: 0x4000, 0x41d: 0x4000, + 0x41e: 0x4000, 0x41f: 0x4000, 0x420: 0x4000, 0x421: 0x4000, 0x422: 0x4000, 0x423: 0x4000, + 0x424: 0x4000, 0x425: 0x4000, 0x426: 0x4000, 0x427: 0x4000, 0x428: 0x4000, 0x429: 0x4000, + 0x42a: 0x4000, 0x42b: 0x4000, 0x42c: 0x4000, 0x42d: 0x4000, 0x42e: 0x4000, 0x42f: 0x4000, + 0x430: 0x4000, 0x431: 0x4000, 0x432: 0x4000, 0x433: 0x4000, 0x434: 0x4000, 0x435: 0x4000, + 0x436: 0x4000, 0x437: 0x4000, 0x438: 0x4000, 0x439: 0x4000, 0x43a: 0x4000, 0x43b: 0x4000, + 0x43c: 0x4000, 0x43d: 0x4000, 0x43e: 0x4000, 0x43f: 0x4000, + // Block 0x11, offset 0x440 + 0x440: 0x4000, 0x441: 0x4000, 0x442: 0x4000, 0x443: 0x4000, 0x444: 0x4000, 0x445: 0x4000, + 0x446: 0x4000, 0x447: 0x4000, 0x448: 0x4000, 0x449: 0x4000, 0x44a: 0x4000, 0x44b: 0x4000, + 0x44c: 0x4000, 0x44d: 0x4000, 0x44e: 0x4000, 0x44f: 0x4000, 0x450: 0x4000, 0x451: 0x4000, + 0x452: 0x4000, 0x453: 0x4000, 0x454: 0x4000, 0x455: 0x4000, 0x456: 0x4000, 0x457: 0x4000, + 0x458: 0x4000, 0x459: 0x4000, 0x45a: 0x4000, 0x45b: 0x4000, 0x45c: 0x4000, 0x45d: 0x4000, + 0x45e: 0x4000, 0x45f: 0x4000, + // Block 0x12, offset 0x480 + 0x490: 0x2000, + 0x493: 0x2000, 0x494: 0x2000, 0x495: 0x2000, 0x496: 0x2000, + 0x498: 0x2000, 0x499: 0x2000, 0x49c: 0x2000, 0x49d: 0x2000, + 0x4a0: 0x2000, 0x4a1: 0x2000, 0x4a2: 0x2000, + 0x4a4: 0x2000, 0x4a5: 0x2000, 0x4a6: 0x2000, 0x4a7: 0x2000, + 0x4b0: 0x2000, 0x4b2: 0x2000, 0x4b3: 0x2000, 0x4b5: 0x2000, + 0x4bb: 0x2000, + 0x4be: 0x2000, + // Block 0x13, offset 0x4c0 + 0x4f4: 0x2000, + 0x4ff: 0x2000, + // Block 0x14, offset 0x500 + 0x501: 0x2000, 0x502: 0x2000, 0x503: 0x2000, 0x504: 0x2000, + 0x529: 0xa009, + 0x52c: 0x2000, + // Block 0x15, offset 0x540 + 0x543: 0x2000, 0x545: 0x2000, + 0x549: 0x2000, + 0x553: 0x2000, 0x556: 0x2000, + 0x561: 0x2000, 0x562: 0x2000, + 0x566: 0x2000, + 0x56b: 0x2000, + // Block 0x16, offset 0x580 + 0x593: 0x2000, 0x594: 0x2000, + 0x59b: 0x2000, 0x59c: 0x2000, 0x59d: 0x2000, + 0x59e: 0x2000, 0x5a0: 0x2000, 0x5a1: 0x2000, 0x5a2: 0x2000, 0x5a3: 0x2000, + 0x5a4: 0x2000, 0x5a5: 0x2000, 0x5a6: 0x2000, 0x5a7: 0x2000, 0x5a8: 0x2000, 0x5a9: 0x2000, + 0x5aa: 0x2000, 0x5ab: 0x2000, + 0x5b0: 0x2000, 0x5b1: 0x2000, 0x5b2: 0x2000, 0x5b3: 0x2000, 0x5b4: 0x2000, 0x5b5: 0x2000, + 0x5b6: 0x2000, 0x5b7: 0x2000, 0x5b8: 0x2000, 0x5b9: 0x2000, + // Block 0x17, offset 0x5c0 + 0x5c9: 0x2000, + 0x5d0: 0x200a, 0x5d1: 0x200b, + 0x5d2: 0x200a, 0x5d3: 0x200c, 0x5d4: 0x2000, 0x5d5: 0x2000, 0x5d6: 0x2000, 0x5d7: 0x2000, + 0x5d8: 0x2000, 0x5d9: 0x2000, + 0x5f8: 0x2000, 0x5f9: 0x2000, + // Block 0x18, offset 0x600 + 0x612: 0x2000, 0x614: 0x2000, + 0x627: 0x2000, + // Block 0x19, offset 0x640 + 0x640: 0x2000, 0x642: 0x2000, 0x643: 0x2000, + 0x647: 0x2000, 0x648: 0x2000, 0x64b: 0x2000, + 0x64f: 0x2000, 0x651: 0x2000, + 0x655: 0x2000, + 0x65a: 0x2000, 0x65d: 0x2000, + 0x65e: 0x2000, 0x65f: 0x2000, 0x660: 0x2000, 0x663: 0x2000, + 0x665: 0x2000, 0x667: 0x2000, 0x668: 0x2000, 0x669: 0x2000, + 0x66a: 0x2000, 0x66b: 0x2000, 0x66c: 0x2000, 0x66e: 0x2000, + 0x674: 0x2000, 0x675: 0x2000, + 0x676: 0x2000, 0x677: 0x2000, + 0x67c: 0x2000, 0x67d: 0x2000, + // Block 0x1a, offset 0x680 + 0x688: 0x2000, + 0x68c: 0x2000, + 0x692: 0x2000, + 0x6a0: 0x2000, 0x6a1: 0x2000, + 0x6a4: 0x2000, 0x6a5: 0x2000, 0x6a6: 0x2000, 0x6a7: 0x2000, + 0x6aa: 0x2000, 0x6ab: 0x2000, 0x6ae: 0x2000, 0x6af: 0x2000, + // Block 0x1b, offset 0x6c0 + 0x6c2: 0x2000, 0x6c3: 0x2000, + 0x6c6: 0x2000, 0x6c7: 0x2000, + 0x6d5: 0x2000, + 0x6d9: 0x2000, + 0x6e5: 0x2000, + 0x6ff: 0x2000, + // Block 0x1c, offset 0x700 + 0x712: 0x2000, + 0x71a: 0x4000, 0x71b: 0x4000, + 0x729: 0x4000, + 0x72a: 0x4000, + // Block 0x1d, offset 0x740 + 0x769: 0x4000, + 0x76a: 0x4000, 0x76b: 0x4000, 0x76c: 0x4000, + 0x770: 0x4000, 0x773: 0x4000, + // Block 0x1e, offset 0x780 + 0x7a0: 0x2000, 0x7a1: 0x2000, 0x7a2: 0x2000, 0x7a3: 0x2000, + 0x7a4: 0x2000, 0x7a5: 0x2000, 0x7a6: 0x2000, 0x7a7: 0x2000, 0x7a8: 0x2000, 0x7a9: 0x2000, + 0x7aa: 0x2000, 0x7ab: 0x2000, 0x7ac: 0x2000, 0x7ad: 0x2000, 0x7ae: 0x2000, 0x7af: 0x2000, + 0x7b0: 0x2000, 0x7b1: 0x2000, 0x7b2: 0x2000, 0x7b3: 0x2000, 0x7b4: 0x2000, 0x7b5: 0x2000, + 0x7b6: 0x2000, 0x7b7: 0x2000, 0x7b8: 0x2000, 0x7b9: 0x2000, 0x7ba: 0x2000, 0x7bb: 0x2000, + 0x7bc: 0x2000, 0x7bd: 0x2000, 0x7be: 0x2000, 0x7bf: 0x2000, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x2000, 0x7c1: 0x2000, 0x7c2: 0x2000, 0x7c3: 0x2000, 0x7c4: 0x2000, 0x7c5: 0x2000, + 0x7c6: 0x2000, 0x7c7: 0x2000, 0x7c8: 0x2000, 0x7c9: 0x2000, 0x7ca: 0x2000, 0x7cb: 0x2000, + 0x7cc: 0x2000, 0x7cd: 0x2000, 0x7ce: 0x2000, 0x7cf: 0x2000, 0x7d0: 0x2000, 0x7d1: 0x2000, + 0x7d2: 0x2000, 0x7d3: 0x2000, 0x7d4: 0x2000, 0x7d5: 0x2000, 0x7d6: 0x2000, 0x7d7: 0x2000, + 0x7d8: 0x2000, 0x7d9: 0x2000, 0x7da: 0x2000, 0x7db: 0x2000, 0x7dc: 0x2000, 0x7dd: 0x2000, + 0x7de: 0x2000, 0x7df: 0x2000, 0x7e0: 0x2000, 0x7e1: 0x2000, 0x7e2: 0x2000, 0x7e3: 0x2000, + 0x7e4: 0x2000, 0x7e5: 0x2000, 0x7e6: 0x2000, 0x7e7: 0x2000, 0x7e8: 0x2000, 0x7e9: 0x2000, + 0x7eb: 0x2000, 0x7ec: 0x2000, 0x7ed: 0x2000, 0x7ee: 0x2000, 0x7ef: 0x2000, + 0x7f0: 0x2000, 0x7f1: 0x2000, 0x7f2: 0x2000, 0x7f3: 0x2000, 0x7f4: 0x2000, 0x7f5: 0x2000, + 0x7f6: 0x2000, 0x7f7: 0x2000, 0x7f8: 0x2000, 0x7f9: 0x2000, 0x7fa: 0x2000, 0x7fb: 0x2000, + 0x7fc: 0x2000, 0x7fd: 0x2000, 0x7fe: 0x2000, 0x7ff: 0x2000, + // Block 0x20, offset 0x800 + 0x800: 0x2000, 0x801: 0x2000, 0x802: 0x200d, 0x803: 0x2000, 0x804: 0x2000, 0x805: 0x2000, + 0x806: 0x2000, 0x807: 0x2000, 0x808: 0x2000, 0x809: 0x2000, 0x80a: 0x2000, 0x80b: 0x2000, + 0x80c: 0x2000, 0x80d: 0x2000, 0x80e: 0x2000, 0x80f: 0x2000, 0x810: 0x2000, 0x811: 0x2000, + 0x812: 0x2000, 0x813: 0x2000, 0x814: 0x2000, 0x815: 0x2000, 0x816: 0x2000, 0x817: 0x2000, + 0x818: 0x2000, 0x819: 0x2000, 0x81a: 0x2000, 0x81b: 0x2000, 0x81c: 0x2000, 0x81d: 0x2000, + 0x81e: 0x2000, 0x81f: 0x2000, 0x820: 0x2000, 0x821: 0x2000, 0x822: 0x2000, 0x823: 0x2000, + 0x824: 0x2000, 0x825: 0x2000, 0x826: 0x2000, 0x827: 0x2000, 0x828: 0x2000, 0x829: 0x2000, + 0x82a: 0x2000, 0x82b: 0x2000, 0x82c: 0x2000, 0x82d: 0x2000, 0x82e: 0x2000, 0x82f: 0x2000, + 0x830: 0x2000, 0x831: 0x2000, 0x832: 0x2000, 0x833: 0x2000, 0x834: 0x2000, 0x835: 0x2000, + 0x836: 0x2000, 0x837: 0x2000, 0x838: 0x2000, 0x839: 0x2000, 0x83a: 0x2000, 0x83b: 0x2000, + 0x83c: 0x2000, 0x83d: 0x2000, 0x83e: 0x2000, 0x83f: 0x2000, + // Block 0x21, offset 0x840 + 0x840: 0x2000, 0x841: 0x2000, 0x842: 0x2000, 0x843: 0x2000, 0x844: 0x2000, 0x845: 0x2000, + 0x846: 0x2000, 0x847: 0x2000, 0x848: 0x2000, 0x849: 0x2000, 0x84a: 0x2000, 0x84b: 0x2000, + 0x850: 0x2000, 0x851: 0x2000, + 0x852: 0x2000, 0x853: 0x2000, 0x854: 0x2000, 0x855: 0x2000, 0x856: 0x2000, 0x857: 0x2000, + 0x858: 0x2000, 0x859: 0x2000, 0x85a: 0x2000, 0x85b: 0x2000, 0x85c: 0x2000, 0x85d: 0x2000, + 0x85e: 0x2000, 0x85f: 0x2000, 0x860: 0x2000, 0x861: 0x2000, 0x862: 0x2000, 0x863: 0x2000, + 0x864: 0x2000, 0x865: 0x2000, 0x866: 0x2000, 0x867: 0x2000, 0x868: 0x2000, 0x869: 0x2000, + 0x86a: 0x2000, 0x86b: 0x2000, 0x86c: 0x2000, 0x86d: 0x2000, 0x86e: 0x2000, 0x86f: 0x2000, + 0x870: 0x2000, 0x871: 0x2000, 0x872: 0x2000, 0x873: 0x2000, + // Block 0x22, offset 0x880 + 0x880: 0x2000, 0x881: 0x2000, 0x882: 0x2000, 0x883: 0x2000, 0x884: 0x2000, 0x885: 0x2000, + 0x886: 0x2000, 0x887: 0x2000, 0x888: 0x2000, 0x889: 0x2000, 0x88a: 0x2000, 0x88b: 0x2000, + 0x88c: 0x2000, 0x88d: 0x2000, 0x88e: 0x2000, 0x88f: 0x2000, + 0x892: 0x2000, 0x893: 0x2000, 0x894: 0x2000, 0x895: 0x2000, + 0x8a0: 0x200e, 0x8a1: 0x2000, 0x8a3: 0x2000, + 0x8a4: 0x2000, 0x8a5: 0x2000, 0x8a6: 0x2000, 0x8a7: 0x2000, 0x8a8: 0x2000, 0x8a9: 0x2000, + 0x8b2: 0x2000, 0x8b3: 0x2000, + 0x8b6: 0x2000, 0x8b7: 0x2000, + 0x8bc: 0x2000, 0x8bd: 0x2000, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x2000, 0x8c1: 0x2000, + 0x8c6: 0x2000, 0x8c7: 0x2000, 0x8c8: 0x2000, 0x8cb: 0x200f, + 0x8ce: 0x2000, 0x8cf: 0x2000, 0x8d0: 0x2000, 0x8d1: 0x2000, + 0x8e2: 0x2000, 0x8e3: 0x2000, + 0x8e4: 0x2000, 0x8e5: 0x2000, + 0x8ef: 0x2000, + 0x8fd: 0x4000, 0x8fe: 0x4000, + // Block 0x24, offset 0x900 + 0x905: 0x2000, + 0x906: 0x2000, 0x909: 0x2000, + 0x90e: 0x2000, 0x90f: 0x2000, + 0x914: 0x4000, 0x915: 0x4000, + 0x91c: 0x2000, + 0x91e: 0x2000, + // Block 0x25, offset 0x940 + 0x940: 0x2000, 0x942: 0x2000, + 0x948: 0x4000, 0x949: 0x4000, 0x94a: 0x4000, 0x94b: 0x4000, + 0x94c: 0x4000, 0x94d: 0x4000, 0x94e: 0x4000, 0x94f: 0x4000, 0x950: 0x4000, 0x951: 0x4000, + 0x952: 0x4000, 0x953: 0x4000, + 0x960: 0x2000, 0x961: 0x2000, 0x963: 0x2000, + 0x964: 0x2000, 0x965: 0x2000, 0x967: 0x2000, 0x968: 0x2000, 0x969: 0x2000, + 0x96a: 0x2000, 0x96c: 0x2000, 0x96d: 0x2000, 0x96f: 0x2000, + 0x97f: 0x4000, + // Block 0x26, offset 0x980 + 0x993: 0x4000, + 0x99e: 0x2000, 0x99f: 0x2000, 0x9a1: 0x4000, + 0x9aa: 0x4000, 0x9ab: 0x4000, + 0x9bd: 0x4000, 0x9be: 0x4000, 0x9bf: 0x2000, + // Block 0x27, offset 0x9c0 + 0x9c4: 0x4000, 0x9c5: 0x4000, + 0x9c6: 0x2000, 0x9c7: 0x2000, 0x9c8: 0x2000, 0x9c9: 0x2000, 0x9ca: 0x2000, 0x9cb: 0x2000, + 0x9cc: 0x2000, 0x9cd: 0x2000, 0x9ce: 0x4000, 0x9cf: 0x2000, 0x9d0: 0x2000, 0x9d1: 0x2000, + 0x9d2: 0x2000, 0x9d3: 0x2000, 0x9d4: 0x4000, 0x9d5: 0x2000, 0x9d6: 0x2000, 0x9d7: 0x2000, + 0x9d8: 0x2000, 0x9d9: 0x2000, 0x9da: 0x2000, 0x9db: 0x2000, 0x9dc: 0x2000, 0x9dd: 0x2000, + 0x9de: 0x2000, 0x9df: 0x2000, 0x9e0: 0x2000, 0x9e1: 0x2000, 0x9e3: 0x2000, + 0x9e8: 0x2000, 0x9e9: 0x2000, + 0x9ea: 0x4000, 0x9eb: 0x2000, 0x9ec: 0x2000, 0x9ed: 0x2000, 0x9ee: 0x2000, 0x9ef: 0x2000, + 0x9f0: 0x2000, 0x9f1: 0x2000, 0x9f2: 0x4000, 0x9f3: 0x4000, 0x9f4: 0x2000, 0x9f5: 0x4000, + 0x9f6: 0x2000, 0x9f7: 0x2000, 0x9f8: 0x2000, 0x9f9: 0x2000, 0x9fa: 0x4000, 0x9fb: 0x2000, + 0x9fc: 0x2000, 0x9fd: 0x4000, 0x9fe: 0x2000, 0x9ff: 0x2000, + // Block 0x28, offset 0xa00 + 0xa05: 0x4000, + 0xa0a: 0x4000, 0xa0b: 0x4000, + 0xa28: 0x4000, + 0xa3d: 0x2000, + // Block 0x29, offset 0xa40 + 0xa4c: 0x4000, 0xa4e: 0x4000, + 0xa53: 0x4000, 0xa54: 0x4000, 0xa55: 0x4000, 0xa57: 0x4000, + 0xa76: 0x2000, 0xa77: 0x2000, 0xa78: 0x2000, 0xa79: 0x2000, 0xa7a: 0x2000, 0xa7b: 0x2000, + 0xa7c: 0x2000, 0xa7d: 0x2000, 0xa7e: 0x2000, 0xa7f: 0x2000, + // Block 0x2a, offset 0xa80 + 0xa95: 0x4000, 0xa96: 0x4000, 0xa97: 0x4000, + 0xab0: 0x4000, + 0xabf: 0x4000, + // Block 0x2b, offset 0xac0 + 0xae6: 0x6000, 0xae7: 0x6000, 0xae8: 0x6000, 0xae9: 0x6000, + 0xaea: 0x6000, 0xaeb: 0x6000, 0xaec: 0x6000, 0xaed: 0x6000, + // Block 0x2c, offset 0xb00 + 0xb05: 0x6010, + 0xb06: 0x6011, + // Block 0x2d, offset 0xb40 + 0xb5b: 0x4000, 0xb5c: 0x4000, + // Block 0x2e, offset 0xb80 + 0xb90: 0x4000, + 0xb95: 0x4000, 0xb96: 0x2000, 0xb97: 0x2000, + 0xb98: 0x2000, 0xb99: 0x2000, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x4000, 0xbc1: 0x4000, 0xbc2: 0x4000, 0xbc3: 0x4000, 0xbc4: 0x4000, 0xbc5: 0x4000, + 0xbc6: 0x4000, 0xbc7: 0x4000, 0xbc8: 0x4000, 0xbc9: 0x4000, 0xbca: 0x4000, 0xbcb: 0x4000, + 0xbcc: 0x4000, 0xbcd: 0x4000, 0xbce: 0x4000, 0xbcf: 0x4000, 0xbd0: 0x4000, 0xbd1: 0x4000, + 0xbd2: 0x4000, 0xbd3: 0x4000, 0xbd4: 0x4000, 0xbd5: 0x4000, 0xbd6: 0x4000, 0xbd7: 0x4000, + 0xbd8: 0x4000, 0xbd9: 0x4000, 0xbdb: 0x4000, 0xbdc: 0x4000, 0xbdd: 0x4000, + 0xbde: 0x4000, 0xbdf: 0x4000, 0xbe0: 0x4000, 0xbe1: 0x4000, 0xbe2: 0x4000, 0xbe3: 0x4000, + 0xbe4: 0x4000, 0xbe5: 0x4000, 0xbe6: 0x4000, 0xbe7: 0x4000, 0xbe8: 0x4000, 0xbe9: 0x4000, + 0xbea: 0x4000, 0xbeb: 0x4000, 0xbec: 0x4000, 0xbed: 0x4000, 0xbee: 0x4000, 0xbef: 0x4000, + 0xbf0: 0x4000, 0xbf1: 0x4000, 0xbf2: 0x4000, 0xbf3: 0x4000, 0xbf4: 0x4000, 0xbf5: 0x4000, + 0xbf6: 0x4000, 0xbf7: 0x4000, 0xbf8: 0x4000, 0xbf9: 0x4000, 0xbfa: 0x4000, 0xbfb: 0x4000, + 0xbfc: 0x4000, 0xbfd: 0x4000, 0xbfe: 0x4000, 0xbff: 0x4000, + // Block 0x30, offset 0xc00 + 0xc00: 0x4000, 0xc01: 0x4000, 0xc02: 0x4000, 0xc03: 0x4000, 0xc04: 0x4000, 0xc05: 0x4000, + 0xc06: 0x4000, 0xc07: 0x4000, 0xc08: 0x4000, 0xc09: 0x4000, 0xc0a: 0x4000, 0xc0b: 0x4000, + 0xc0c: 0x4000, 0xc0d: 0x4000, 0xc0e: 0x4000, 0xc0f: 0x4000, 0xc10: 0x4000, 0xc11: 0x4000, + 0xc12: 0x4000, 0xc13: 0x4000, 0xc14: 0x4000, 0xc15: 0x4000, 0xc16: 0x4000, 0xc17: 0x4000, + 0xc18: 0x4000, 0xc19: 0x4000, 0xc1a: 0x4000, 0xc1b: 0x4000, 0xc1c: 0x4000, 0xc1d: 0x4000, + 0xc1e: 0x4000, 0xc1f: 0x4000, 0xc20: 0x4000, 0xc21: 0x4000, 0xc22: 0x4000, 0xc23: 0x4000, + 0xc24: 0x4000, 0xc25: 0x4000, 0xc26: 0x4000, 0xc27: 0x4000, 0xc28: 0x4000, 0xc29: 0x4000, + 0xc2a: 0x4000, 0xc2b: 0x4000, 0xc2c: 0x4000, 0xc2d: 0x4000, 0xc2e: 0x4000, 0xc2f: 0x4000, + 0xc30: 0x4000, 0xc31: 0x4000, 0xc32: 0x4000, 0xc33: 0x4000, + // Block 0x31, offset 0xc40 + 0xc40: 0x4000, 0xc41: 0x4000, 0xc42: 0x4000, 0xc43: 0x4000, 0xc44: 0x4000, 0xc45: 0x4000, + 0xc46: 0x4000, 0xc47: 0x4000, 0xc48: 0x4000, 0xc49: 0x4000, 0xc4a: 0x4000, 0xc4b: 0x4000, + 0xc4c: 0x4000, 0xc4d: 0x4000, 0xc4e: 0x4000, 0xc4f: 0x4000, 0xc50: 0x4000, 0xc51: 0x4000, + 0xc52: 0x4000, 0xc53: 0x4000, 0xc54: 0x4000, 0xc55: 0x4000, + 0xc70: 0x4000, 0xc71: 0x4000, 0xc72: 0x4000, 0xc73: 0x4000, 0xc74: 0x4000, 0xc75: 0x4000, + 0xc76: 0x4000, 0xc77: 0x4000, 0xc78: 0x4000, 0xc79: 0x4000, 0xc7a: 0x4000, 0xc7b: 0x4000, + // Block 0x32, offset 0xc80 + 0xc80: 0x9012, 0xc81: 0x4013, 0xc82: 0x4014, 0xc83: 0x4000, 0xc84: 0x4000, 0xc85: 0x4000, + 0xc86: 0x4000, 0xc87: 0x4000, 0xc88: 0x4000, 0xc89: 0x4000, 0xc8a: 0x4000, 0xc8b: 0x4000, + 0xc8c: 0x4015, 0xc8d: 0x4015, 0xc8e: 0x4000, 0xc8f: 0x4000, 0xc90: 0x4000, 0xc91: 0x4000, + 0xc92: 0x4000, 0xc93: 0x4000, 0xc94: 0x4000, 0xc95: 0x4000, 0xc96: 0x4000, 0xc97: 0x4000, + 0xc98: 0x4000, 0xc99: 0x4000, 0xc9a: 0x4000, 0xc9b: 0x4000, 0xc9c: 0x4000, 0xc9d: 0x4000, + 0xc9e: 0x4000, 0xc9f: 0x4000, 0xca0: 0x4000, 0xca1: 0x4000, 0xca2: 0x4000, 0xca3: 0x4000, + 0xca4: 0x4000, 0xca5: 0x4000, 0xca6: 0x4000, 0xca7: 0x4000, 0xca8: 0x4000, 0xca9: 0x4000, + 0xcaa: 0x4000, 0xcab: 0x4000, 0xcac: 0x4000, 0xcad: 0x4000, 0xcae: 0x4000, 0xcaf: 0x4000, + 0xcb0: 0x4000, 0xcb1: 0x4000, 0xcb2: 0x4000, 0xcb3: 0x4000, 0xcb4: 0x4000, 0xcb5: 0x4000, + 0xcb6: 0x4000, 0xcb7: 0x4000, 0xcb8: 0x4000, 0xcb9: 0x4000, 0xcba: 0x4000, 0xcbb: 0x4000, + 0xcbc: 0x4000, 0xcbd: 0x4000, 0xcbe: 0x4000, + // Block 0x33, offset 0xcc0 + 0xcc1: 0x4000, 0xcc2: 0x4000, 0xcc3: 0x4000, 0xcc4: 0x4000, 0xcc5: 0x4000, + 0xcc6: 0x4000, 0xcc7: 0x4000, 0xcc8: 0x4000, 0xcc9: 0x4000, 0xcca: 0x4000, 0xccb: 0x4000, + 0xccc: 0x4000, 0xccd: 0x4000, 0xcce: 0x4000, 0xccf: 0x4000, 0xcd0: 0x4000, 0xcd1: 0x4000, + 0xcd2: 0x4000, 0xcd3: 0x4000, 0xcd4: 0x4000, 0xcd5: 0x4000, 0xcd6: 0x4000, 0xcd7: 0x4000, + 0xcd8: 0x4000, 0xcd9: 0x4000, 0xcda: 0x4000, 0xcdb: 0x4000, 0xcdc: 0x4000, 0xcdd: 0x4000, + 0xcde: 0x4000, 0xcdf: 0x4000, 0xce0: 0x4000, 0xce1: 0x4000, 0xce2: 0x4000, 0xce3: 0x4000, + 0xce4: 0x4000, 0xce5: 0x4000, 0xce6: 0x4000, 0xce7: 0x4000, 0xce8: 0x4000, 0xce9: 0x4000, + 0xcea: 0x4000, 0xceb: 0x4000, 0xcec: 0x4000, 0xced: 0x4000, 0xcee: 0x4000, 0xcef: 0x4000, + 0xcf0: 0x4000, 0xcf1: 0x4000, 0xcf2: 0x4000, 0xcf3: 0x4000, 0xcf4: 0x4000, 0xcf5: 0x4000, + 0xcf6: 0x4000, 0xcf7: 0x4000, 0xcf8: 0x4000, 0xcf9: 0x4000, 0xcfa: 0x4000, 0xcfb: 0x4000, + 0xcfc: 0x4000, 0xcfd: 0x4000, 0xcfe: 0x4000, 0xcff: 0x4000, + // Block 0x34, offset 0xd00 + 0xd00: 0x4000, 0xd01: 0x4000, 0xd02: 0x4000, 0xd03: 0x4000, 0xd04: 0x4000, 0xd05: 0x4000, + 0xd06: 0x4000, 0xd07: 0x4000, 0xd08: 0x4000, 0xd09: 0x4000, 0xd0a: 0x4000, 0xd0b: 0x4000, + 0xd0c: 0x4000, 0xd0d: 0x4000, 0xd0e: 0x4000, 0xd0f: 0x4000, 0xd10: 0x4000, 0xd11: 0x4000, + 0xd12: 0x4000, 0xd13: 0x4000, 0xd14: 0x4000, 0xd15: 0x4000, 0xd16: 0x4000, + 0xd19: 0x4016, 0xd1a: 0x4017, 0xd1b: 0x4000, 0xd1c: 0x4000, 0xd1d: 0x4000, + 0xd1e: 0x4000, 0xd1f: 0x4000, 0xd20: 0x4000, 0xd21: 0x4018, 0xd22: 0x4019, 0xd23: 0x401a, + 0xd24: 0x401b, 0xd25: 0x401c, 0xd26: 0x401d, 0xd27: 0x401e, 0xd28: 0x401f, 0xd29: 0x4020, + 0xd2a: 0x4021, 0xd2b: 0x4022, 0xd2c: 0x4000, 0xd2d: 0x4010, 0xd2e: 0x4000, 0xd2f: 0x4023, + 0xd30: 0x4000, 0xd31: 0x4024, 0xd32: 0x4000, 0xd33: 0x4025, 0xd34: 0x4000, 0xd35: 0x4026, + 0xd36: 0x4000, 0xd37: 0x401a, 0xd38: 0x4000, 0xd39: 0x4027, 0xd3a: 0x4000, 0xd3b: 0x4028, + 0xd3c: 0x4000, 0xd3d: 0x4020, 0xd3e: 0x4000, 0xd3f: 0x4029, + // Block 0x35, offset 0xd40 + 0xd40: 0x4000, 0xd41: 0x402a, 0xd42: 0x4000, 0xd43: 0x402b, 0xd44: 0x402c, 0xd45: 0x4000, + 0xd46: 0x4017, 0xd47: 0x4000, 0xd48: 0x402d, 0xd49: 0x4000, 0xd4a: 0x402e, 0xd4b: 0x402f, + 0xd4c: 0x4030, 0xd4d: 0x4017, 0xd4e: 0x4016, 0xd4f: 0x4017, 0xd50: 0x4000, 0xd51: 0x4000, + 0xd52: 0x4031, 0xd53: 0x4000, 0xd54: 0x4000, 0xd55: 0x4031, 0xd56: 0x4000, 0xd57: 0x4000, + 0xd58: 0x4032, 0xd59: 0x4000, 0xd5a: 0x4000, 0xd5b: 0x4032, 0xd5c: 0x4000, 0xd5d: 0x4000, + 0xd5e: 0x4033, 0xd5f: 0x402e, 0xd60: 0x4034, 0xd61: 0x4035, 0xd62: 0x4034, 0xd63: 0x4036, + 0xd64: 0x4037, 0xd65: 0x4024, 0xd66: 0x4035, 0xd67: 0x4025, 0xd68: 0x4038, 0xd69: 0x4038, + 0xd6a: 0x4039, 0xd6b: 0x4039, 0xd6c: 0x403a, 0xd6d: 0x403a, 0xd6e: 0x4000, 0xd6f: 0x4035, + 0xd70: 0x4000, 0xd71: 0x4000, 0xd72: 0x403b, 0xd73: 0x403c, 0xd74: 0x4000, 0xd75: 0x4000, + 0xd76: 0x4000, 0xd77: 0x4000, 0xd78: 0x4000, 0xd79: 0x4000, 0xd7a: 0x4000, 0xd7b: 0x403d, + 0xd7c: 0x401c, 0xd7d: 0x4000, 0xd7e: 0x4000, 0xd7f: 0x4000, + // Block 0x36, offset 0xd80 + 0xd85: 0x4000, + 0xd86: 0x4000, 0xd87: 0x4000, 0xd88: 0x4000, 0xd89: 0x4000, 0xd8a: 0x4000, 0xd8b: 0x4000, + 0xd8c: 0x4000, 0xd8d: 0x4000, 0xd8e: 0x4000, 0xd8f: 0x4000, 0xd90: 0x4000, 0xd91: 0x4000, + 0xd92: 0x4000, 0xd93: 0x4000, 0xd94: 0x4000, 0xd95: 0x4000, 0xd96: 0x4000, 0xd97: 0x4000, + 0xd98: 0x4000, 0xd99: 0x4000, 0xd9a: 0x4000, 0xd9b: 0x4000, 0xd9c: 0x4000, 0xd9d: 0x4000, + 0xd9e: 0x4000, 0xd9f: 0x4000, 0xda0: 0x4000, 0xda1: 0x4000, 0xda2: 0x4000, 0xda3: 0x4000, + 0xda4: 0x4000, 0xda5: 0x4000, 0xda6: 0x4000, 0xda7: 0x4000, 0xda8: 0x4000, 0xda9: 0x4000, + 0xdaa: 0x4000, 0xdab: 0x4000, 0xdac: 0x4000, 0xdad: 0x4000, + 0xdb1: 0x403e, 0xdb2: 0x403e, 0xdb3: 0x403e, 0xdb4: 0x403e, 0xdb5: 0x403e, + 0xdb6: 0x403e, 0xdb7: 0x403e, 0xdb8: 0x403e, 0xdb9: 0x403e, 0xdba: 0x403e, 0xdbb: 0x403e, + 0xdbc: 0x403e, 0xdbd: 0x403e, 0xdbe: 0x403e, 0xdbf: 0x403e, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x4037, 0xdc1: 0x4037, 0xdc2: 0x4037, 0xdc3: 0x4037, 0xdc4: 0x4037, 0xdc5: 0x4037, + 0xdc6: 0x4037, 0xdc7: 0x4037, 0xdc8: 0x4037, 0xdc9: 0x4037, 0xdca: 0x4037, 0xdcb: 0x4037, + 0xdcc: 0x4037, 0xdcd: 0x4037, 0xdce: 0x4037, 0xdcf: 0x400e, 0xdd0: 0x403f, 0xdd1: 0x4040, + 0xdd2: 0x4041, 0xdd3: 0x4040, 0xdd4: 0x403f, 0xdd5: 0x4042, 0xdd6: 0x4043, 0xdd7: 0x4044, + 0xdd8: 0x4040, 0xdd9: 0x4041, 0xdda: 0x4040, 0xddb: 0x4045, 0xddc: 0x4009, 0xddd: 0x4045, + 0xdde: 0x4046, 0xddf: 0x4045, 0xde0: 0x4047, 0xde1: 0x400b, 0xde2: 0x400a, 0xde3: 0x400c, + 0xde4: 0x4048, 0xde5: 0x4000, 0xde6: 0x4000, 0xde7: 0x4000, 0xde8: 0x4000, 0xde9: 0x4000, + 0xdea: 0x4000, 0xdeb: 0x4000, 0xdec: 0x4000, 0xded: 0x4000, 0xdee: 0x4000, 0xdef: 0x4000, + 0xdf0: 0x4000, 0xdf1: 0x4000, 0xdf2: 0x4000, 0xdf3: 0x4000, 0xdf4: 0x4000, 0xdf5: 0x4000, + 0xdf6: 0x4000, 0xdf7: 0x4000, 0xdf8: 0x4000, 0xdf9: 0x4000, 0xdfa: 0x4000, 0xdfb: 0x4000, + 0xdfc: 0x4000, 0xdfd: 0x4000, 0xdfe: 0x4000, 0xdff: 0x4000, + // Block 0x38, offset 0xe00 + 0xe00: 0x4000, 0xe01: 0x4000, 0xe02: 0x4000, 0xe03: 0x4000, 0xe04: 0x4000, 0xe05: 0x4000, + 0xe06: 0x4000, 0xe07: 0x4000, 0xe08: 0x4000, 0xe09: 0x4000, 0xe0a: 0x4000, 0xe0b: 0x4000, + 0xe0c: 0x4000, 0xe0d: 0x4000, 0xe0e: 0x4000, 0xe10: 0x4000, 0xe11: 0x4000, + 0xe12: 0x4000, 0xe13: 0x4000, 0xe14: 0x4000, 0xe15: 0x4000, 0xe16: 0x4000, 0xe17: 0x4000, + 0xe18: 0x4000, 0xe19: 0x4000, 0xe1a: 0x4000, 0xe1b: 0x4000, 0xe1c: 0x4000, 0xe1d: 0x4000, + 0xe1e: 0x4000, 0xe1f: 0x4000, 0xe20: 0x4000, 0xe21: 0x4000, 0xe22: 0x4000, 0xe23: 0x4000, + 0xe24: 0x4000, 0xe25: 0x4000, 0xe26: 0x4000, 0xe27: 0x4000, 0xe28: 0x4000, 0xe29: 0x4000, + 0xe2a: 0x4000, 0xe2b: 0x4000, 0xe2c: 0x4000, 0xe2d: 0x4000, 0xe2e: 0x4000, 0xe2f: 0x4000, + 0xe30: 0x4000, 0xe31: 0x4000, 0xe32: 0x4000, 0xe33: 0x4000, 0xe34: 0x4000, 0xe35: 0x4000, + 0xe36: 0x4000, 0xe37: 0x4000, 0xe38: 0x4000, 0xe39: 0x4000, 0xe3a: 0x4000, + // Block 0x39, offset 0xe40 + 0xe40: 0x4000, 0xe41: 0x4000, 0xe42: 0x4000, 0xe43: 0x4000, 0xe44: 0x4000, 0xe45: 0x4000, + 0xe46: 0x4000, 0xe47: 0x4000, 0xe48: 0x4000, 0xe49: 0x4000, 0xe4a: 0x4000, 0xe4b: 0x4000, + 0xe4c: 0x4000, 0xe4d: 0x4000, 0xe4e: 0x4000, 0xe4f: 0x4000, 0xe50: 0x4000, 0xe51: 0x4000, + 0xe52: 0x4000, 0xe53: 0x4000, 0xe54: 0x4000, 0xe55: 0x4000, 0xe56: 0x4000, 0xe57: 0x4000, + 0xe58: 0x4000, 0xe59: 0x4000, 0xe5a: 0x4000, 0xe5b: 0x4000, 0xe5c: 0x4000, 0xe5d: 0x4000, + 0xe5e: 0x4000, 0xe5f: 0x4000, 0xe60: 0x4000, 0xe61: 0x4000, 0xe62: 0x4000, 0xe63: 0x4000, + 0xe70: 0x4000, 0xe71: 0x4000, 0xe72: 0x4000, 0xe73: 0x4000, 0xe74: 0x4000, 0xe75: 0x4000, + 0xe76: 0x4000, 0xe77: 0x4000, 0xe78: 0x4000, 0xe79: 0x4000, 0xe7a: 0x4000, 0xe7b: 0x4000, + 0xe7c: 0x4000, 0xe7d: 0x4000, 0xe7e: 0x4000, 0xe7f: 0x4000, + // Block 0x3a, offset 0xe80 + 0xe80: 0x4000, 0xe81: 0x4000, 0xe82: 0x4000, 0xe83: 0x4000, 0xe84: 0x4000, 0xe85: 0x4000, + 0xe86: 0x4000, 0xe87: 0x4000, 0xe88: 0x4000, 0xe89: 0x4000, 0xe8a: 0x4000, 0xe8b: 0x4000, + 0xe8c: 0x4000, 0xe8d: 0x4000, 0xe8e: 0x4000, 0xe8f: 0x4000, 0xe90: 0x4000, 0xe91: 0x4000, + 0xe92: 0x4000, 0xe93: 0x4000, 0xe94: 0x4000, 0xe95: 0x4000, 0xe96: 0x4000, 0xe97: 0x4000, + 0xe98: 0x4000, 0xe99: 0x4000, 0xe9a: 0x4000, 0xe9b: 0x4000, 0xe9c: 0x4000, 0xe9d: 0x4000, + 0xe9e: 0x4000, 0xea0: 0x4000, 0xea1: 0x4000, 0xea2: 0x4000, 0xea3: 0x4000, + 0xea4: 0x4000, 0xea5: 0x4000, 0xea6: 0x4000, 0xea7: 0x4000, 0xea8: 0x4000, 0xea9: 0x4000, + 0xeaa: 0x4000, 0xeab: 0x4000, 0xeac: 0x4000, 0xead: 0x4000, 0xeae: 0x4000, 0xeaf: 0x4000, + 0xeb0: 0x4000, 0xeb1: 0x4000, 0xeb2: 0x4000, 0xeb3: 0x4000, 0xeb4: 0x4000, 0xeb5: 0x4000, + 0xeb6: 0x4000, 0xeb7: 0x4000, 0xeb8: 0x4000, 0xeb9: 0x4000, 0xeba: 0x4000, 0xebb: 0x4000, + 0xebc: 0x4000, 0xebd: 0x4000, 0xebe: 0x4000, 0xebf: 0x4000, + // Block 0x3b, offset 0xec0 + 0xec0: 0x4000, 0xec1: 0x4000, 0xec2: 0x4000, 0xec3: 0x4000, 0xec4: 0x4000, 0xec5: 0x4000, + 0xec6: 0x4000, 0xec7: 0x4000, 0xec8: 0x2000, 0xec9: 0x2000, 0xeca: 0x2000, 0xecb: 0x2000, + 0xecc: 0x2000, 0xecd: 0x2000, 0xece: 0x2000, 0xecf: 0x2000, 0xed0: 0x4000, 0xed1: 0x4000, + 0xed2: 0x4000, 0xed3: 0x4000, 0xed4: 0x4000, 0xed5: 0x4000, 0xed6: 0x4000, 0xed7: 0x4000, + 0xed8: 0x4000, 0xed9: 0x4000, 0xeda: 0x4000, 0xedb: 0x4000, 0xedc: 0x4000, 0xedd: 0x4000, + 0xede: 0x4000, 0xedf: 0x4000, 0xee0: 0x4000, 0xee1: 0x4000, 0xee2: 0x4000, 0xee3: 0x4000, + 0xee4: 0x4000, 0xee5: 0x4000, 0xee6: 0x4000, 0xee7: 0x4000, 0xee8: 0x4000, 0xee9: 0x4000, + 0xeea: 0x4000, 0xeeb: 0x4000, 0xeec: 0x4000, 0xeed: 0x4000, 0xeee: 0x4000, 0xeef: 0x4000, + 0xef0: 0x4000, 0xef1: 0x4000, 0xef2: 0x4000, 0xef3: 0x4000, 0xef4: 0x4000, 0xef5: 0x4000, + 0xef6: 0x4000, 0xef7: 0x4000, 0xef8: 0x4000, 0xef9: 0x4000, 0xefa: 0x4000, 0xefb: 0x4000, + 0xefc: 0x4000, 0xefd: 0x4000, 0xefe: 0x4000, 0xeff: 0x4000, + // Block 0x3c, offset 0xf00 + 0xf00: 0x4000, 0xf01: 0x4000, 0xf02: 0x4000, 0xf03: 0x4000, 0xf04: 0x4000, 0xf05: 0x4000, + 0xf06: 0x4000, 0xf07: 0x4000, 0xf08: 0x4000, 0xf09: 0x4000, 0xf0a: 0x4000, 0xf0b: 0x4000, + 0xf0c: 0x4000, 0xf0d: 0x4000, 0xf0e: 0x4000, 0xf0f: 0x4000, 0xf10: 0x4000, 0xf11: 0x4000, + 0xf12: 0x4000, 0xf13: 0x4000, 0xf14: 0x4000, 0xf15: 0x4000, 0xf16: 0x4000, 0xf17: 0x4000, + 0xf18: 0x4000, 0xf19: 0x4000, 0xf1a: 0x4000, 0xf1b: 0x4000, 0xf1c: 0x4000, 0xf1d: 0x4000, + 0xf1e: 0x4000, 0xf1f: 0x4000, 0xf20: 0x4000, 0xf21: 0x4000, 0xf22: 0x4000, 0xf23: 0x4000, + 0xf24: 0x4000, 0xf25: 0x4000, 0xf26: 0x4000, 0xf27: 0x4000, 0xf28: 0x4000, 0xf29: 0x4000, + 0xf2a: 0x4000, 0xf2b: 0x4000, 0xf2c: 0x4000, 0xf2d: 0x4000, 0xf2e: 0x4000, 0xf2f: 0x4000, + 0xf30: 0x4000, 0xf31: 0x4000, 0xf32: 0x4000, 0xf33: 0x4000, 0xf34: 0x4000, 0xf35: 0x4000, + 0xf36: 0x4000, 0xf37: 0x4000, 0xf38: 0x4000, 0xf39: 0x4000, 0xf3a: 0x4000, 0xf3b: 0x4000, + 0xf3c: 0x4000, 0xf3d: 0x4000, 0xf3e: 0x4000, + // Block 0x3d, offset 0xf40 + 0xf40: 0x4000, 0xf41: 0x4000, 0xf42: 0x4000, 0xf43: 0x4000, 0xf44: 0x4000, 0xf45: 0x4000, + 0xf46: 0x4000, 0xf47: 0x4000, 0xf48: 0x4000, 0xf49: 0x4000, 0xf4a: 0x4000, 0xf4b: 0x4000, + 0xf4c: 0x4000, 0xf50: 0x4000, 0xf51: 0x4000, + 0xf52: 0x4000, 0xf53: 0x4000, 0xf54: 0x4000, 0xf55: 0x4000, 0xf56: 0x4000, 0xf57: 0x4000, + 0xf58: 0x4000, 0xf59: 0x4000, 0xf5a: 0x4000, 0xf5b: 0x4000, 0xf5c: 0x4000, 0xf5d: 0x4000, + 0xf5e: 0x4000, 0xf5f: 0x4000, 0xf60: 0x4000, 0xf61: 0x4000, 0xf62: 0x4000, 0xf63: 0x4000, + 0xf64: 0x4000, 0xf65: 0x4000, 0xf66: 0x4000, 0xf67: 0x4000, 0xf68: 0x4000, 0xf69: 0x4000, + 0xf6a: 0x4000, 0xf6b: 0x4000, 0xf6c: 0x4000, 0xf6d: 0x4000, 0xf6e: 0x4000, 0xf6f: 0x4000, + 0xf70: 0x4000, 0xf71: 0x4000, 0xf72: 0x4000, 0xf73: 0x4000, 0xf74: 0x4000, 0xf75: 0x4000, + 0xf76: 0x4000, 0xf77: 0x4000, 0xf78: 0x4000, 0xf79: 0x4000, 0xf7a: 0x4000, 0xf7b: 0x4000, + 0xf7c: 0x4000, 0xf7d: 0x4000, 0xf7e: 0x4000, 0xf7f: 0x4000, + // Block 0x3e, offset 0xf80 + 0xf80: 0x4000, 0xf81: 0x4000, 0xf82: 0x4000, 0xf83: 0x4000, 0xf84: 0x4000, 0xf85: 0x4000, + 0xf86: 0x4000, + // Block 0x3f, offset 0xfc0 + 0xfe0: 0x4000, 0xfe1: 0x4000, 0xfe2: 0x4000, 0xfe3: 0x4000, + 0xfe4: 0x4000, 0xfe5: 0x4000, 0xfe6: 0x4000, 0xfe7: 0x4000, 0xfe8: 0x4000, 0xfe9: 0x4000, + 0xfea: 0x4000, 0xfeb: 0x4000, 0xfec: 0x4000, 0xfed: 0x4000, 0xfee: 0x4000, 0xfef: 0x4000, + 0xff0: 0x4000, 0xff1: 0x4000, 0xff2: 0x4000, 0xff3: 0x4000, 0xff4: 0x4000, 0xff5: 0x4000, + 0xff6: 0x4000, 0xff7: 0x4000, 0xff8: 0x4000, 0xff9: 0x4000, 0xffa: 0x4000, 0xffb: 0x4000, + 0xffc: 0x4000, + // Block 0x40, offset 0x1000 + 0x1000: 0x4000, 0x1001: 0x4000, 0x1002: 0x4000, 0x1003: 0x4000, 0x1004: 0x4000, 0x1005: 0x4000, + 0x1006: 0x4000, 0x1007: 0x4000, 0x1008: 0x4000, 0x1009: 0x4000, 0x100a: 0x4000, 0x100b: 0x4000, + 0x100c: 0x4000, 0x100d: 0x4000, 0x100e: 0x4000, 0x100f: 0x4000, 0x1010: 0x4000, 0x1011: 0x4000, + 0x1012: 0x4000, 0x1013: 0x4000, 0x1014: 0x4000, 0x1015: 0x4000, 0x1016: 0x4000, 0x1017: 0x4000, + 0x1018: 0x4000, 0x1019: 0x4000, 0x101a: 0x4000, 0x101b: 0x4000, 0x101c: 0x4000, 0x101d: 0x4000, + 0x101e: 0x4000, 0x101f: 0x4000, 0x1020: 0x4000, 0x1021: 0x4000, 0x1022: 0x4000, 0x1023: 0x4000, + // Block 0x41, offset 0x1040 + 0x1040: 0x2000, 0x1041: 0x2000, 0x1042: 0x2000, 0x1043: 0x2000, 0x1044: 0x2000, 0x1045: 0x2000, + 0x1046: 0x2000, 0x1047: 0x2000, 0x1048: 0x2000, 0x1049: 0x2000, 0x104a: 0x2000, 0x104b: 0x2000, + 0x104c: 0x2000, 0x104d: 0x2000, 0x104e: 0x2000, 0x104f: 0x2000, 0x1050: 0x4000, 0x1051: 0x4000, + 0x1052: 0x4000, 0x1053: 0x4000, 0x1054: 0x4000, 0x1055: 0x4000, 0x1056: 0x4000, 0x1057: 0x4000, + 0x1058: 0x4000, 0x1059: 0x4000, + 0x1070: 0x4000, 0x1071: 0x4000, 0x1072: 0x4000, 0x1073: 0x4000, 0x1074: 0x4000, 0x1075: 0x4000, + 0x1076: 0x4000, 0x1077: 0x4000, 0x1078: 0x4000, 0x1079: 0x4000, 0x107a: 0x4000, 0x107b: 0x4000, + 0x107c: 0x4000, 0x107d: 0x4000, 0x107e: 0x4000, 0x107f: 0x4000, + // Block 0x42, offset 0x1080 + 0x1080: 0x4000, 0x1081: 0x4000, 0x1082: 0x4000, 0x1083: 0x4000, 0x1084: 0x4000, 0x1085: 0x4000, + 0x1086: 0x4000, 0x1087: 0x4000, 0x1088: 0x4000, 0x1089: 0x4000, 0x108a: 0x4000, 0x108b: 0x4000, + 0x108c: 0x4000, 0x108d: 0x4000, 0x108e: 0x4000, 0x108f: 0x4000, 0x1090: 0x4000, 0x1091: 0x4000, + 0x1092: 0x4000, 0x1094: 0x4000, 0x1095: 0x4000, 0x1096: 0x4000, 0x1097: 0x4000, + 0x1098: 0x4000, 0x1099: 0x4000, 0x109a: 0x4000, 0x109b: 0x4000, 0x109c: 0x4000, 0x109d: 0x4000, + 0x109e: 0x4000, 0x109f: 0x4000, 0x10a0: 0x4000, 0x10a1: 0x4000, 0x10a2: 0x4000, 0x10a3: 0x4000, + 0x10a4: 0x4000, 0x10a5: 0x4000, 0x10a6: 0x4000, 0x10a8: 0x4000, 0x10a9: 0x4000, + 0x10aa: 0x4000, 0x10ab: 0x4000, + // Block 0x43, offset 0x10c0 + 0x10c1: 0x9012, 0x10c2: 0x9012, 0x10c3: 0x9012, 0x10c4: 0x9012, 0x10c5: 0x9012, + 0x10c6: 0x9012, 0x10c7: 0x9012, 0x10c8: 0x9012, 0x10c9: 0x9012, 0x10ca: 0x9012, 0x10cb: 0x9012, + 0x10cc: 0x9012, 0x10cd: 0x9012, 0x10ce: 0x9012, 0x10cf: 0x9012, 0x10d0: 0x9012, 0x10d1: 0x9012, + 0x10d2: 0x9012, 0x10d3: 0x9012, 0x10d4: 0x9012, 0x10d5: 0x9012, 0x10d6: 0x9012, 0x10d7: 0x9012, + 0x10d8: 0x9012, 0x10d9: 0x9012, 0x10da: 0x9012, 0x10db: 0x9012, 0x10dc: 0x9012, 0x10dd: 0x9012, + 0x10de: 0x9012, 0x10df: 0x9012, 0x10e0: 0x9049, 0x10e1: 0x9049, 0x10e2: 0x9049, 0x10e3: 0x9049, + 0x10e4: 0x9049, 0x10e5: 0x9049, 0x10e6: 0x9049, 0x10e7: 0x9049, 0x10e8: 0x9049, 0x10e9: 0x9049, + 0x10ea: 0x9049, 0x10eb: 0x9049, 0x10ec: 0x9049, 0x10ed: 0x9049, 0x10ee: 0x9049, 0x10ef: 0x9049, + 0x10f0: 0x9049, 0x10f1: 0x9049, 0x10f2: 0x9049, 0x10f3: 0x9049, 0x10f4: 0x9049, 0x10f5: 0x9049, + 0x10f6: 0x9049, 0x10f7: 0x9049, 0x10f8: 0x9049, 0x10f9: 0x9049, 0x10fa: 0x9049, 0x10fb: 0x9049, + 0x10fc: 0x9049, 0x10fd: 0x9049, 0x10fe: 0x9049, 0x10ff: 0x9049, + // Block 0x44, offset 0x1100 + 0x1100: 0x9049, 0x1101: 0x9049, 0x1102: 0x9049, 0x1103: 0x9049, 0x1104: 0x9049, 0x1105: 0x9049, + 0x1106: 0x9049, 0x1107: 0x9049, 0x1108: 0x9049, 0x1109: 0x9049, 0x110a: 0x9049, 0x110b: 0x9049, + 0x110c: 0x9049, 0x110d: 0x9049, 0x110e: 0x9049, 0x110f: 0x9049, 0x1110: 0x9049, 0x1111: 0x9049, + 0x1112: 0x9049, 0x1113: 0x9049, 0x1114: 0x9049, 0x1115: 0x9049, 0x1116: 0x9049, 0x1117: 0x9049, + 0x1118: 0x9049, 0x1119: 0x9049, 0x111a: 0x9049, 0x111b: 0x9049, 0x111c: 0x9049, 0x111d: 0x9049, + 0x111e: 0x9049, 0x111f: 0x904a, 0x1120: 0x904b, 0x1121: 0xb04c, 0x1122: 0xb04d, 0x1123: 0xb04d, + 0x1124: 0xb04e, 0x1125: 0xb04f, 0x1126: 0xb050, 0x1127: 0xb051, 0x1128: 0xb052, 0x1129: 0xb053, + 0x112a: 0xb054, 0x112b: 0xb055, 0x112c: 0xb056, 0x112d: 0xb057, 0x112e: 0xb058, 0x112f: 0xb059, + 0x1130: 0xb05a, 0x1131: 0xb05b, 0x1132: 0xb05c, 0x1133: 0xb05d, 0x1134: 0xb05e, 0x1135: 0xb05f, + 0x1136: 0xb060, 0x1137: 0xb061, 0x1138: 0xb062, 0x1139: 0xb063, 0x113a: 0xb064, 0x113b: 0xb065, + 0x113c: 0xb052, 0x113d: 0xb066, 0x113e: 0xb067, 0x113f: 0xb055, + // Block 0x45, offset 0x1140 + 0x1140: 0xb068, 0x1141: 0xb069, 0x1142: 0xb06a, 0x1143: 0xb06b, 0x1144: 0xb05a, 0x1145: 0xb056, + 0x1146: 0xb06c, 0x1147: 0xb06d, 0x1148: 0xb06b, 0x1149: 0xb06e, 0x114a: 0xb06b, 0x114b: 0xb06f, + 0x114c: 0xb06f, 0x114d: 0xb070, 0x114e: 0xb070, 0x114f: 0xb071, 0x1150: 0xb056, 0x1151: 0xb072, + 0x1152: 0xb073, 0x1153: 0xb072, 0x1154: 0xb074, 0x1155: 0xb073, 0x1156: 0xb075, 0x1157: 0xb075, + 0x1158: 0xb076, 0x1159: 0xb076, 0x115a: 0xb077, 0x115b: 0xb077, 0x115c: 0xb073, 0x115d: 0xb078, + 0x115e: 0xb079, 0x115f: 0xb067, 0x1160: 0xb07a, 0x1161: 0xb07b, 0x1162: 0xb07b, 0x1163: 0xb07b, + 0x1164: 0xb07b, 0x1165: 0xb07b, 0x1166: 0xb07b, 0x1167: 0xb07b, 0x1168: 0xb07b, 0x1169: 0xb07b, + 0x116a: 0xb07b, 0x116b: 0xb07b, 0x116c: 0xb07b, 0x116d: 0xb07b, 0x116e: 0xb07b, 0x116f: 0xb07b, + 0x1170: 0xb07c, 0x1171: 0xb07c, 0x1172: 0xb07c, 0x1173: 0xb07c, 0x1174: 0xb07c, 0x1175: 0xb07c, + 0x1176: 0xb07c, 0x1177: 0xb07c, 0x1178: 0xb07c, 0x1179: 0xb07c, 0x117a: 0xb07c, 0x117b: 0xb07c, + 0x117c: 0xb07c, 0x117d: 0xb07c, 0x117e: 0xb07c, + // Block 0x46, offset 0x1180 + 0x1182: 0xb07d, 0x1183: 0xb07e, 0x1184: 0xb07f, 0x1185: 0xb080, + 0x1186: 0xb07f, 0x1187: 0xb07e, 0x118a: 0xb081, 0x118b: 0xb082, + 0x118c: 0xb083, 0x118d: 0xb07f, 0x118e: 0xb080, 0x118f: 0xb07f, + 0x1192: 0xb084, 0x1193: 0xb085, 0x1194: 0xb084, 0x1195: 0xb086, 0x1196: 0xb084, 0x1197: 0xb087, + 0x119a: 0xb088, 0x119b: 0xb089, 0x119c: 0xb08a, + 0x11a0: 0x908b, 0x11a1: 0x908b, 0x11a2: 0x908c, 0x11a3: 0x908d, + 0x11a4: 0x908b, 0x11a5: 0x908e, 0x11a6: 0x908f, 0x11a8: 0xb090, 0x11a9: 0xb091, + 0x11aa: 0xb092, 0x11ab: 0xb091, 0x11ac: 0xb093, 0x11ad: 0xb094, 0x11ae: 0xb095, + 0x11bd: 0x2000, + // Block 0x47, offset 0x11c0 + 0x11e0: 0x4000, + // Block 0x48, offset 0x1200 + 0x1200: 0x4000, 0x1201: 0x4000, 0x1202: 0x4000, 0x1203: 0x4000, 0x1204: 0x4000, 0x1205: 0x4000, + 0x1206: 0x4000, 0x1207: 0x4000, 0x1208: 0x4000, 0x1209: 0x4000, 0x120a: 0x4000, 0x120b: 0x4000, + 0x120c: 0x4000, 0x120d: 0x4000, 0x120e: 0x4000, 0x120f: 0x4000, 0x1210: 0x4000, 0x1211: 0x4000, + 0x1212: 0x4000, 0x1213: 0x4000, 0x1214: 0x4000, 0x1215: 0x4000, 0x1216: 0x4000, 0x1217: 0x4000, + 0x1218: 0x4000, 0x1219: 0x4000, 0x121a: 0x4000, 0x121b: 0x4000, 0x121c: 0x4000, 0x121d: 0x4000, + 0x121e: 0x4000, 0x121f: 0x4000, 0x1220: 0x4000, 0x1221: 0x4000, 0x1222: 0x4000, 0x1223: 0x4000, + 0x1224: 0x4000, 0x1225: 0x4000, 0x1226: 0x4000, 0x1227: 0x4000, 0x1228: 0x4000, 0x1229: 0x4000, + 0x122a: 0x4000, 0x122b: 0x4000, 0x122c: 0x4000, + // Block 0x49, offset 0x1240 + 0x1240: 0x4000, 0x1241: 0x4000, 0x1242: 0x4000, 0x1243: 0x4000, 0x1244: 0x4000, 0x1245: 0x4000, + 0x1246: 0x4000, 0x1247: 0x4000, 0x1248: 0x4000, 0x1249: 0x4000, 0x124a: 0x4000, 0x124b: 0x4000, + 0x124c: 0x4000, 0x124d: 0x4000, 0x124e: 0x4000, 0x124f: 0x4000, 0x1250: 0x4000, 0x1251: 0x4000, + 0x1252: 0x4000, 0x1253: 0x4000, 0x1254: 0x4000, 0x1255: 0x4000, 0x1256: 0x4000, 0x1257: 0x4000, + 0x1258: 0x4000, 0x1259: 0x4000, 0x125a: 0x4000, 0x125b: 0x4000, 0x125c: 0x4000, 0x125d: 0x4000, + 0x125e: 0x4000, 0x125f: 0x4000, 0x1260: 0x4000, 0x1261: 0x4000, 0x1262: 0x4000, 0x1263: 0x4000, + 0x1264: 0x4000, 0x1265: 0x4000, 0x1266: 0x4000, 0x1267: 0x4000, 0x1268: 0x4000, 0x1269: 0x4000, + 0x126a: 0x4000, 0x126b: 0x4000, 0x126c: 0x4000, 0x126d: 0x4000, 0x126e: 0x4000, 0x126f: 0x4000, + 0x1270: 0x4000, 0x1271: 0x4000, 0x1272: 0x4000, + // Block 0x4a, offset 0x1280 + 0x1280: 0x4000, 0x1281: 0x4000, + // Block 0x4b, offset 0x12c0 + 0x12c4: 0x4000, + // Block 0x4c, offset 0x1300 + 0x130f: 0x4000, + // Block 0x4d, offset 0x1340 + 0x1340: 0x2000, 0x1341: 0x2000, 0x1342: 0x2000, 0x1343: 0x2000, 0x1344: 0x2000, 0x1345: 0x2000, + 0x1346: 0x2000, 0x1347: 0x2000, 0x1348: 0x2000, 0x1349: 0x2000, 0x134a: 0x2000, + 0x1350: 0x2000, 0x1351: 0x2000, + 0x1352: 0x2000, 0x1353: 0x2000, 0x1354: 0x2000, 0x1355: 0x2000, 0x1356: 0x2000, 0x1357: 0x2000, + 0x1358: 0x2000, 0x1359: 0x2000, 0x135a: 0x2000, 0x135b: 0x2000, 0x135c: 0x2000, 0x135d: 0x2000, + 0x135e: 0x2000, 0x135f: 0x2000, 0x1360: 0x2000, 0x1361: 0x2000, 0x1362: 0x2000, 0x1363: 0x2000, + 0x1364: 0x2000, 0x1365: 0x2000, 0x1366: 0x2000, 0x1367: 0x2000, 0x1368: 0x2000, 0x1369: 0x2000, + 0x136a: 0x2000, 0x136b: 0x2000, 0x136c: 0x2000, 0x136d: 0x2000, + 0x1370: 0x2000, 0x1371: 0x2000, 0x1372: 0x2000, 0x1373: 0x2000, 0x1374: 0x2000, 0x1375: 0x2000, + 0x1376: 0x2000, 0x1377: 0x2000, 0x1378: 0x2000, 0x1379: 0x2000, 0x137a: 0x2000, 0x137b: 0x2000, + 0x137c: 0x2000, 0x137d: 0x2000, 0x137e: 0x2000, 0x137f: 0x2000, + // Block 0x4e, offset 0x1380 + 0x1380: 0x2000, 0x1381: 0x2000, 0x1382: 0x2000, 0x1383: 0x2000, 0x1384: 0x2000, 0x1385: 0x2000, + 0x1386: 0x2000, 0x1387: 0x2000, 0x1388: 0x2000, 0x1389: 0x2000, 0x138a: 0x2000, 0x138b: 0x2000, + 0x138c: 0x2000, 0x138d: 0x2000, 0x138e: 0x2000, 0x138f: 0x2000, 0x1390: 0x2000, 0x1391: 0x2000, + 0x1392: 0x2000, 0x1393: 0x2000, 0x1394: 0x2000, 0x1395: 0x2000, 0x1396: 0x2000, 0x1397: 0x2000, + 0x1398: 0x2000, 0x1399: 0x2000, 0x139a: 0x2000, 0x139b: 0x2000, 0x139c: 0x2000, 0x139d: 0x2000, + 0x139e: 0x2000, 0x139f: 0x2000, 0x13a0: 0x2000, 0x13a1: 0x2000, 0x13a2: 0x2000, 0x13a3: 0x2000, + 0x13a4: 0x2000, 0x13a5: 0x2000, 0x13a6: 0x2000, 0x13a7: 0x2000, 0x13a8: 0x2000, 0x13a9: 0x2000, + 0x13b0: 0x2000, 0x13b1: 0x2000, 0x13b2: 0x2000, 0x13b3: 0x2000, 0x13b4: 0x2000, 0x13b5: 0x2000, + 0x13b6: 0x2000, 0x13b7: 0x2000, 0x13b8: 0x2000, 0x13b9: 0x2000, 0x13ba: 0x2000, 0x13bb: 0x2000, + 0x13bc: 0x2000, 0x13bd: 0x2000, 0x13be: 0x2000, 0x13bf: 0x2000, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x2000, 0x13c1: 0x2000, 0x13c2: 0x2000, 0x13c3: 0x2000, 0x13c4: 0x2000, 0x13c5: 0x2000, + 0x13c6: 0x2000, 0x13c7: 0x2000, 0x13c8: 0x2000, 0x13c9: 0x2000, 0x13ca: 0x2000, 0x13cb: 0x2000, + 0x13cc: 0x2000, 0x13cd: 0x2000, 0x13ce: 0x4000, 0x13cf: 0x2000, 0x13d0: 0x2000, 0x13d1: 0x4000, + 0x13d2: 0x4000, 0x13d3: 0x4000, 0x13d4: 0x4000, 0x13d5: 0x4000, 0x13d6: 0x4000, 0x13d7: 0x4000, + 0x13d8: 0x4000, 0x13d9: 0x4000, 0x13da: 0x4000, 0x13db: 0x2000, 0x13dc: 0x2000, 0x13dd: 0x2000, + 0x13de: 0x2000, 0x13df: 0x2000, 0x13e0: 0x2000, 0x13e1: 0x2000, 0x13e2: 0x2000, 0x13e3: 0x2000, + 0x13e4: 0x2000, 0x13e5: 0x2000, 0x13e6: 0x2000, 0x13e7: 0x2000, 0x13e8: 0x2000, 0x13e9: 0x2000, + 0x13ea: 0x2000, 0x13eb: 0x2000, 0x13ec: 0x2000, + // Block 0x50, offset 0x1400 + 0x1400: 0x4000, 0x1401: 0x4000, 0x1402: 0x4000, + 0x1410: 0x4000, 0x1411: 0x4000, + 0x1412: 0x4000, 0x1413: 0x4000, 0x1414: 0x4000, 0x1415: 0x4000, 0x1416: 0x4000, 0x1417: 0x4000, + 0x1418: 0x4000, 0x1419: 0x4000, 0x141a: 0x4000, 0x141b: 0x4000, 0x141c: 0x4000, 0x141d: 0x4000, + 0x141e: 0x4000, 0x141f: 0x4000, 0x1420: 0x4000, 0x1421: 0x4000, 0x1422: 0x4000, 0x1423: 0x4000, + 0x1424: 0x4000, 0x1425: 0x4000, 0x1426: 0x4000, 0x1427: 0x4000, 0x1428: 0x4000, 0x1429: 0x4000, + 0x142a: 0x4000, 0x142b: 0x4000, 0x142c: 0x4000, 0x142d: 0x4000, 0x142e: 0x4000, 0x142f: 0x4000, + 0x1430: 0x4000, 0x1431: 0x4000, 0x1432: 0x4000, 0x1433: 0x4000, 0x1434: 0x4000, 0x1435: 0x4000, + 0x1436: 0x4000, 0x1437: 0x4000, 0x1438: 0x4000, 0x1439: 0x4000, 0x143a: 0x4000, 0x143b: 0x4000, + // Block 0x51, offset 0x1440 + 0x1440: 0x4000, 0x1441: 0x4000, 0x1442: 0x4000, 0x1443: 0x4000, 0x1444: 0x4000, 0x1445: 0x4000, + 0x1446: 0x4000, 0x1447: 0x4000, 0x1448: 0x4000, + 0x1450: 0x4000, 0x1451: 0x4000, + // Block 0x52, offset 0x1480 + 0x1480: 0x4000, 0x1481: 0x4000, 0x1482: 0x4000, 0x1483: 0x4000, 0x1484: 0x4000, 0x1485: 0x4000, + 0x1486: 0x4000, 0x1487: 0x4000, 0x1488: 0x4000, 0x1489: 0x4000, 0x148a: 0x4000, 0x148b: 0x4000, + 0x148c: 0x4000, 0x148d: 0x4000, 0x148e: 0x4000, 0x148f: 0x4000, 0x1490: 0x4000, 0x1491: 0x4000, + 0x1492: 0x4000, 0x1493: 0x4000, 0x1494: 0x4000, 0x1495: 0x4000, 0x1496: 0x4000, 0x1497: 0x4000, + 0x1498: 0x4000, 0x1499: 0x4000, 0x149a: 0x4000, 0x149b: 0x4000, 0x149c: 0x4000, 0x149d: 0x4000, + 0x149e: 0x4000, 0x149f: 0x4000, 0x14a0: 0x4000, + 0x14ad: 0x4000, 0x14ae: 0x4000, 0x14af: 0x4000, + 0x14b0: 0x4000, 0x14b1: 0x4000, 0x14b2: 0x4000, 0x14b3: 0x4000, 0x14b4: 0x4000, 0x14b5: 0x4000, + 0x14b7: 0x4000, 0x14b8: 0x4000, 0x14b9: 0x4000, 0x14ba: 0x4000, 0x14bb: 0x4000, + 0x14bc: 0x4000, 0x14bd: 0x4000, 0x14be: 0x4000, 0x14bf: 0x4000, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x4000, 0x14c1: 0x4000, 0x14c2: 0x4000, 0x14c3: 0x4000, 0x14c4: 0x4000, 0x14c5: 0x4000, + 0x14c6: 0x4000, 0x14c7: 0x4000, 0x14c8: 0x4000, 0x14c9: 0x4000, 0x14ca: 0x4000, 0x14cb: 0x4000, + 0x14cc: 0x4000, 0x14cd: 0x4000, 0x14ce: 0x4000, 0x14cf: 0x4000, 0x14d0: 0x4000, 0x14d1: 0x4000, + 0x14d2: 0x4000, 0x14d3: 0x4000, 0x14d4: 0x4000, 0x14d5: 0x4000, 0x14d6: 0x4000, 0x14d7: 0x4000, + 0x14d8: 0x4000, 0x14d9: 0x4000, 0x14da: 0x4000, 0x14db: 0x4000, 0x14dc: 0x4000, 0x14dd: 0x4000, + 0x14de: 0x4000, 0x14df: 0x4000, 0x14e0: 0x4000, 0x14e1: 0x4000, 0x14e2: 0x4000, 0x14e3: 0x4000, + 0x14e4: 0x4000, 0x14e5: 0x4000, 0x14e6: 0x4000, 0x14e7: 0x4000, 0x14e8: 0x4000, 0x14e9: 0x4000, + 0x14ea: 0x4000, 0x14eb: 0x4000, 0x14ec: 0x4000, 0x14ed: 0x4000, 0x14ee: 0x4000, 0x14ef: 0x4000, + 0x14f0: 0x4000, 0x14f1: 0x4000, 0x14f2: 0x4000, 0x14f3: 0x4000, 0x14f4: 0x4000, 0x14f5: 0x4000, + 0x14f6: 0x4000, 0x14f7: 0x4000, 0x14f8: 0x4000, 0x14f9: 0x4000, 0x14fa: 0x4000, 0x14fb: 0x4000, + 0x14fc: 0x4000, 0x14fe: 0x4000, 0x14ff: 0x4000, + // Block 0x54, offset 0x1500 + 0x1500: 0x4000, 0x1501: 0x4000, 0x1502: 0x4000, 0x1503: 0x4000, 0x1504: 0x4000, 0x1505: 0x4000, + 0x1506: 0x4000, 0x1507: 0x4000, 0x1508: 0x4000, 0x1509: 0x4000, 0x150a: 0x4000, 0x150b: 0x4000, + 0x150c: 0x4000, 0x150d: 0x4000, 0x150e: 0x4000, 0x150f: 0x4000, 0x1510: 0x4000, 0x1511: 0x4000, + 0x1512: 0x4000, 0x1513: 0x4000, + 0x1520: 0x4000, 0x1521: 0x4000, 0x1522: 0x4000, 0x1523: 0x4000, + 0x1524: 0x4000, 0x1525: 0x4000, 0x1526: 0x4000, 0x1527: 0x4000, 0x1528: 0x4000, 0x1529: 0x4000, + 0x152a: 0x4000, 0x152b: 0x4000, 0x152c: 0x4000, 0x152d: 0x4000, 0x152e: 0x4000, 0x152f: 0x4000, + 0x1530: 0x4000, 0x1531: 0x4000, 0x1532: 0x4000, 0x1533: 0x4000, 0x1534: 0x4000, 0x1535: 0x4000, + 0x1536: 0x4000, 0x1537: 0x4000, 0x1538: 0x4000, 0x1539: 0x4000, 0x153a: 0x4000, 0x153b: 0x4000, + 0x153c: 0x4000, 0x153d: 0x4000, 0x153e: 0x4000, 0x153f: 0x4000, + // Block 0x55, offset 0x1540 + 0x1540: 0x4000, 0x1541: 0x4000, 0x1542: 0x4000, 0x1543: 0x4000, 0x1544: 0x4000, 0x1545: 0x4000, + 0x1546: 0x4000, 0x1547: 0x4000, 0x1548: 0x4000, 0x1549: 0x4000, 0x154a: 0x4000, + 0x154f: 0x4000, 0x1550: 0x4000, 0x1551: 0x4000, + 0x1552: 0x4000, 0x1553: 0x4000, + 0x1560: 0x4000, 0x1561: 0x4000, 0x1562: 0x4000, 0x1563: 0x4000, + 0x1564: 0x4000, 0x1565: 0x4000, 0x1566: 0x4000, 0x1567: 0x4000, 0x1568: 0x4000, 0x1569: 0x4000, + 0x156a: 0x4000, 0x156b: 0x4000, 0x156c: 0x4000, 0x156d: 0x4000, 0x156e: 0x4000, 0x156f: 0x4000, + 0x1570: 0x4000, 0x1574: 0x4000, + 0x1578: 0x4000, 0x1579: 0x4000, 0x157a: 0x4000, 0x157b: 0x4000, + 0x157c: 0x4000, 0x157d: 0x4000, 0x157e: 0x4000, 0x157f: 0x4000, + // Block 0x56, offset 0x1580 + 0x1580: 0x4000, 0x1582: 0x4000, 0x1583: 0x4000, 0x1584: 0x4000, 0x1585: 0x4000, + 0x1586: 0x4000, 0x1587: 0x4000, 0x1588: 0x4000, 0x1589: 0x4000, 0x158a: 0x4000, 0x158b: 0x4000, + 0x158c: 0x4000, 0x158d: 0x4000, 0x158e: 0x4000, 0x158f: 0x4000, 0x1590: 0x4000, 0x1591: 0x4000, + 0x1592: 0x4000, 0x1593: 0x4000, 0x1594: 0x4000, 0x1595: 0x4000, 0x1596: 0x4000, 0x1597: 0x4000, + 0x1598: 0x4000, 0x1599: 0x4000, 0x159a: 0x4000, 0x159b: 0x4000, 0x159c: 0x4000, 0x159d: 0x4000, + 0x159e: 0x4000, 0x159f: 0x4000, 0x15a0: 0x4000, 0x15a1: 0x4000, 0x15a2: 0x4000, 0x15a3: 0x4000, + 0x15a4: 0x4000, 0x15a5: 0x4000, 0x15a6: 0x4000, 0x15a7: 0x4000, 0x15a8: 0x4000, 0x15a9: 0x4000, + 0x15aa: 0x4000, 0x15ab: 0x4000, 0x15ac: 0x4000, 0x15ad: 0x4000, 0x15ae: 0x4000, 0x15af: 0x4000, + 0x15b0: 0x4000, 0x15b1: 0x4000, 0x15b2: 0x4000, 0x15b3: 0x4000, 0x15b4: 0x4000, 0x15b5: 0x4000, + 0x15b6: 0x4000, 0x15b7: 0x4000, 0x15b8: 0x4000, 0x15b9: 0x4000, 0x15ba: 0x4000, 0x15bb: 0x4000, + 0x15bc: 0x4000, 0x15bd: 0x4000, 0x15be: 0x4000, 0x15bf: 0x4000, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x4000, 0x15c1: 0x4000, 0x15c2: 0x4000, 0x15c3: 0x4000, 0x15c4: 0x4000, 0x15c5: 0x4000, + 0x15c6: 0x4000, 0x15c7: 0x4000, 0x15c8: 0x4000, 0x15c9: 0x4000, 0x15ca: 0x4000, 0x15cb: 0x4000, + 0x15cc: 0x4000, 0x15cd: 0x4000, 0x15ce: 0x4000, 0x15cf: 0x4000, 0x15d0: 0x4000, 0x15d1: 0x4000, + 0x15d2: 0x4000, 0x15d3: 0x4000, 0x15d4: 0x4000, 0x15d5: 0x4000, 0x15d6: 0x4000, 0x15d7: 0x4000, + 0x15d8: 0x4000, 0x15d9: 0x4000, 0x15da: 0x4000, 0x15db: 0x4000, 0x15dc: 0x4000, 0x15dd: 0x4000, + 0x15de: 0x4000, 0x15df: 0x4000, 0x15e0: 0x4000, 0x15e1: 0x4000, 0x15e2: 0x4000, 0x15e3: 0x4000, + 0x15e4: 0x4000, 0x15e5: 0x4000, 0x15e6: 0x4000, 0x15e7: 0x4000, 0x15e8: 0x4000, 0x15e9: 0x4000, + 0x15ea: 0x4000, 0x15eb: 0x4000, 0x15ec: 0x4000, 0x15ed: 0x4000, 0x15ee: 0x4000, 0x15ef: 0x4000, + 0x15f0: 0x4000, 0x15f1: 0x4000, 0x15f2: 0x4000, 0x15f3: 0x4000, 0x15f4: 0x4000, 0x15f5: 0x4000, + 0x15f6: 0x4000, 0x15f7: 0x4000, 0x15f8: 0x4000, 0x15f9: 0x4000, 0x15fa: 0x4000, 0x15fb: 0x4000, + 0x15fc: 0x4000, 0x15ff: 0x4000, + // Block 0x58, offset 0x1600 + 0x1600: 0x4000, 0x1601: 0x4000, 0x1602: 0x4000, 0x1603: 0x4000, 0x1604: 0x4000, 0x1605: 0x4000, + 0x1606: 0x4000, 0x1607: 0x4000, 0x1608: 0x4000, 0x1609: 0x4000, 0x160a: 0x4000, 0x160b: 0x4000, + 0x160c: 0x4000, 0x160d: 0x4000, 0x160e: 0x4000, 0x160f: 0x4000, 0x1610: 0x4000, 0x1611: 0x4000, + 0x1612: 0x4000, 0x1613: 0x4000, 0x1614: 0x4000, 0x1615: 0x4000, 0x1616: 0x4000, 0x1617: 0x4000, + 0x1618: 0x4000, 0x1619: 0x4000, 0x161a: 0x4000, 0x161b: 0x4000, 0x161c: 0x4000, 0x161d: 0x4000, + 0x161e: 0x4000, 0x161f: 0x4000, 0x1620: 0x4000, 0x1621: 0x4000, 0x1622: 0x4000, 0x1623: 0x4000, + 0x1624: 0x4000, 0x1625: 0x4000, 0x1626: 0x4000, 0x1627: 0x4000, 0x1628: 0x4000, 0x1629: 0x4000, + 0x162a: 0x4000, 0x162b: 0x4000, 0x162c: 0x4000, 0x162d: 0x4000, 0x162e: 0x4000, 0x162f: 0x4000, + 0x1630: 0x4000, 0x1631: 0x4000, 0x1632: 0x4000, 0x1633: 0x4000, 0x1634: 0x4000, 0x1635: 0x4000, + 0x1636: 0x4000, 0x1637: 0x4000, 0x1638: 0x4000, 0x1639: 0x4000, 0x163a: 0x4000, 0x163b: 0x4000, + 0x163c: 0x4000, 0x163d: 0x4000, + // Block 0x59, offset 0x1640 + 0x164b: 0x4000, + 0x164c: 0x4000, 0x164d: 0x4000, 0x164e: 0x4000, 0x1650: 0x4000, 0x1651: 0x4000, + 0x1652: 0x4000, 0x1653: 0x4000, 0x1654: 0x4000, 0x1655: 0x4000, 0x1656: 0x4000, 0x1657: 0x4000, + 0x1658: 0x4000, 0x1659: 0x4000, 0x165a: 0x4000, 0x165b: 0x4000, 0x165c: 0x4000, 0x165d: 0x4000, + 0x165e: 0x4000, 0x165f: 0x4000, 0x1660: 0x4000, 0x1661: 0x4000, 0x1662: 0x4000, 0x1663: 0x4000, + 0x1664: 0x4000, 0x1665: 0x4000, 0x1666: 0x4000, 0x1667: 0x4000, + 0x167a: 0x4000, + // Block 0x5a, offset 0x1680 + 0x1695: 0x4000, 0x1696: 0x4000, + 0x16a4: 0x4000, + // Block 0x5b, offset 0x16c0 + 0x16fb: 0x4000, + 0x16fc: 0x4000, 0x16fd: 0x4000, 0x16fe: 0x4000, 0x16ff: 0x4000, + // Block 0x5c, offset 0x1700 + 0x1700: 0x4000, 0x1701: 0x4000, 0x1702: 0x4000, 0x1703: 0x4000, 0x1704: 0x4000, 0x1705: 0x4000, + 0x1706: 0x4000, 0x1707: 0x4000, 0x1708: 0x4000, 0x1709: 0x4000, 0x170a: 0x4000, 0x170b: 0x4000, + 0x170c: 0x4000, 0x170d: 0x4000, 0x170e: 0x4000, 0x170f: 0x4000, + // Block 0x5d, offset 0x1740 + 0x1740: 0x4000, 0x1741: 0x4000, 0x1742: 0x4000, 0x1743: 0x4000, 0x1744: 0x4000, 0x1745: 0x4000, + 0x174c: 0x4000, 0x1750: 0x4000, 0x1751: 0x4000, + 0x1752: 0x4000, + 0x176b: 0x4000, 0x176c: 0x4000, + 0x1774: 0x4000, 0x1775: 0x4000, + 0x1776: 0x4000, + // Block 0x5e, offset 0x1780 + 0x1790: 0x4000, 0x1791: 0x4000, + 0x1792: 0x4000, 0x1793: 0x4000, 0x1794: 0x4000, 0x1795: 0x4000, 0x1796: 0x4000, 0x1797: 0x4000, + 0x1798: 0x4000, 0x1799: 0x4000, 0x179a: 0x4000, 0x179b: 0x4000, 0x179c: 0x4000, 0x179d: 0x4000, + 0x179e: 0x4000, 0x17a0: 0x4000, 0x17a1: 0x4000, 0x17a2: 0x4000, 0x17a3: 0x4000, + 0x17a4: 0x4000, 0x17a5: 0x4000, 0x17a6: 0x4000, 0x17a7: 0x4000, + 0x17b0: 0x4000, 0x17b3: 0x4000, 0x17b4: 0x4000, 0x17b5: 0x4000, + 0x17b6: 0x4000, 0x17b7: 0x4000, 0x17b8: 0x4000, 0x17b9: 0x4000, 0x17ba: 0x4000, 0x17bb: 0x4000, + 0x17bc: 0x4000, 0x17bd: 0x4000, 0x17be: 0x4000, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x4000, 0x17c1: 0x4000, 0x17c2: 0x4000, 0x17c3: 0x4000, 0x17c4: 0x4000, 0x17c5: 0x4000, + 0x17c6: 0x4000, 0x17c7: 0x4000, 0x17c8: 0x4000, 0x17c9: 0x4000, 0x17ca: 0x4000, 0x17cb: 0x4000, + 0x17d0: 0x4000, 0x17d1: 0x4000, + 0x17d2: 0x4000, 0x17d3: 0x4000, 0x17d4: 0x4000, 0x17d5: 0x4000, 0x17d6: 0x4000, 0x17d7: 0x4000, + 0x17d8: 0x4000, 0x17d9: 0x4000, 0x17da: 0x4000, 0x17db: 0x4000, 0x17dc: 0x4000, 0x17dd: 0x4000, + 0x17de: 0x4000, + // Block 0x60, offset 0x1800 + 0x1800: 0x4000, 0x1801: 0x4000, 0x1802: 0x4000, 0x1803: 0x4000, 0x1804: 0x4000, 0x1805: 0x4000, + 0x1806: 0x4000, 0x1807: 0x4000, 0x1808: 0x4000, 0x1809: 0x4000, 0x180a: 0x4000, 0x180b: 0x4000, + 0x180c: 0x4000, 0x180d: 0x4000, 0x180e: 0x4000, 0x180f: 0x4000, 0x1810: 0x4000, 0x1811: 0x4000, + // Block 0x61, offset 0x1840 + 0x1840: 0x4000, + // Block 0x62, offset 0x1880 + 0x1880: 0x2000, 0x1881: 0x2000, 0x1882: 0x2000, 0x1883: 0x2000, 0x1884: 0x2000, 0x1885: 0x2000, + 0x1886: 0x2000, 0x1887: 0x2000, 0x1888: 0x2000, 0x1889: 0x2000, 0x188a: 0x2000, 0x188b: 0x2000, + 0x188c: 0x2000, 0x188d: 0x2000, 0x188e: 0x2000, 0x188f: 0x2000, 0x1890: 0x2000, 0x1891: 0x2000, + 0x1892: 0x2000, 0x1893: 0x2000, 0x1894: 0x2000, 0x1895: 0x2000, 0x1896: 0x2000, 0x1897: 0x2000, + 0x1898: 0x2000, 0x1899: 0x2000, 0x189a: 0x2000, 0x189b: 0x2000, 0x189c: 0x2000, 0x189d: 0x2000, + 0x189e: 0x2000, 0x189f: 0x2000, 0x18a0: 0x2000, 0x18a1: 0x2000, 0x18a2: 0x2000, 0x18a3: 0x2000, + 0x18a4: 0x2000, 0x18a5: 0x2000, 0x18a6: 0x2000, 0x18a7: 0x2000, 0x18a8: 0x2000, 0x18a9: 0x2000, + 0x18aa: 0x2000, 0x18ab: 0x2000, 0x18ac: 0x2000, 0x18ad: 0x2000, 0x18ae: 0x2000, 0x18af: 0x2000, + 0x18b0: 0x2000, 0x18b1: 0x2000, 0x18b2: 0x2000, 0x18b3: 0x2000, 0x18b4: 0x2000, 0x18b5: 0x2000, + 0x18b6: 0x2000, 0x18b7: 0x2000, 0x18b8: 0x2000, 0x18b9: 0x2000, 0x18ba: 0x2000, 0x18bb: 0x2000, + 0x18bc: 0x2000, 0x18bd: 0x2000, +} + +// widthIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var widthIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc7: 0x05, + 0xc9: 0x06, 0xcb: 0x07, 0xcc: 0x08, 0xcd: 0x09, 0xce: 0x0a, 0xcf: 0x0b, + 0xd0: 0x0c, 0xd1: 0x0d, + 0xe1: 0x02, 0xe2: 0x03, 0xe3: 0x04, 0xe4: 0x05, 0xe5: 0x06, 0xe6: 0x06, 0xe7: 0x06, + 0xe8: 0x06, 0xe9: 0x06, 0xea: 0x07, 0xeb: 0x06, 0xec: 0x06, 0xed: 0x08, 0xee: 0x09, 0xef: 0x0a, + 0xf0: 0x0f, 0xf3: 0x12, 0xf4: 0x13, + // Block 0x4, offset 0x100 + 0x104: 0x0e, 0x105: 0x0f, + // Block 0x5, offset 0x140 + 0x140: 0x10, 0x141: 0x11, 0x142: 0x12, 0x144: 0x13, 0x145: 0x14, 0x146: 0x15, 0x147: 0x16, + 0x148: 0x17, 0x149: 0x18, 0x14a: 0x19, 0x14c: 0x1a, 0x14f: 0x1b, + 0x151: 0x1c, 0x152: 0x08, 0x153: 0x1d, 0x154: 0x1e, 0x155: 0x1f, 0x156: 0x20, 0x157: 0x21, + 0x158: 0x22, 0x159: 0x23, 0x15a: 0x24, 0x15b: 0x25, 0x15c: 0x26, 0x15d: 0x27, 0x15e: 0x28, 0x15f: 0x29, + 0x166: 0x2a, + 0x16c: 0x2b, 0x16d: 0x2c, + 0x17a: 0x2d, 0x17b: 0x2e, 0x17c: 0x0e, 0x17d: 0x0e, 0x17e: 0x0e, 0x17f: 0x2f, + // Block 0x6, offset 0x180 + 0x180: 0x30, 0x181: 0x31, 0x182: 0x32, 0x183: 0x33, 0x184: 0x34, 0x185: 0x35, 0x186: 0x36, 0x187: 0x37, + 0x188: 0x38, 0x189: 0x39, 0x18a: 0x0e, 0x18b: 0x3a, 0x18c: 0x0e, 0x18d: 0x0e, 0x18e: 0x0e, 0x18f: 0x0e, + 0x190: 0x0e, 0x191: 0x0e, 0x192: 0x0e, 0x193: 0x0e, 0x194: 0x0e, 0x195: 0x0e, 0x196: 0x0e, 0x197: 0x0e, + 0x198: 0x0e, 0x199: 0x0e, 0x19a: 0x0e, 0x19b: 0x0e, 0x19c: 0x0e, 0x19d: 0x0e, 0x19e: 0x0e, 0x19f: 0x0e, + 0x1a0: 0x0e, 0x1a1: 0x0e, 0x1a2: 0x0e, 0x1a3: 0x0e, 0x1a4: 0x0e, 0x1a5: 0x0e, 0x1a6: 0x0e, 0x1a7: 0x0e, + 0x1a8: 0x0e, 0x1a9: 0x0e, 0x1aa: 0x0e, 0x1ab: 0x0e, 0x1ac: 0x0e, 0x1ad: 0x0e, 0x1ae: 0x0e, 0x1af: 0x0e, + 0x1b0: 0x0e, 0x1b1: 0x0e, 0x1b2: 0x0e, 0x1b3: 0x0e, 0x1b4: 0x0e, 0x1b5: 0x0e, 0x1b6: 0x0e, 0x1b7: 0x0e, + 0x1b8: 0x0e, 0x1b9: 0x0e, 0x1ba: 0x0e, 0x1bb: 0x0e, 0x1bc: 0x0e, 0x1bd: 0x0e, 0x1be: 0x0e, 0x1bf: 0x0e, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0e, 0x1c1: 0x0e, 0x1c2: 0x0e, 0x1c3: 0x0e, 0x1c4: 0x0e, 0x1c5: 0x0e, 0x1c6: 0x0e, 0x1c7: 0x0e, + 0x1c8: 0x0e, 0x1c9: 0x0e, 0x1ca: 0x0e, 0x1cb: 0x0e, 0x1cc: 0x0e, 0x1cd: 0x0e, 0x1ce: 0x0e, 0x1cf: 0x0e, + 0x1d0: 0x0e, 0x1d1: 0x0e, 0x1d2: 0x0e, 0x1d3: 0x0e, 0x1d4: 0x0e, 0x1d5: 0x0e, 0x1d6: 0x0e, 0x1d7: 0x0e, + 0x1d8: 0x0e, 0x1d9: 0x0e, 0x1da: 0x0e, 0x1db: 0x0e, 0x1dc: 0x0e, 0x1dd: 0x0e, 0x1de: 0x0e, 0x1df: 0x0e, + 0x1e0: 0x0e, 0x1e1: 0x0e, 0x1e2: 0x0e, 0x1e3: 0x0e, 0x1e4: 0x0e, 0x1e5: 0x0e, 0x1e6: 0x0e, 0x1e7: 0x0e, + 0x1e8: 0x0e, 0x1e9: 0x0e, 0x1ea: 0x0e, 0x1eb: 0x0e, 0x1ec: 0x0e, 0x1ed: 0x0e, 0x1ee: 0x0e, 0x1ef: 0x0e, + 0x1f0: 0x0e, 0x1f1: 0x0e, 0x1f2: 0x0e, 0x1f3: 0x0e, 0x1f4: 0x0e, 0x1f5: 0x0e, 0x1f6: 0x0e, + 0x1f8: 0x0e, 0x1f9: 0x0e, 0x1fa: 0x0e, 0x1fb: 0x0e, 0x1fc: 0x0e, 0x1fd: 0x0e, 0x1fe: 0x0e, 0x1ff: 0x0e, + // Block 0x8, offset 0x200 + 0x200: 0x0e, 0x201: 0x0e, 0x202: 0x0e, 0x203: 0x0e, 0x204: 0x0e, 0x205: 0x0e, 0x206: 0x0e, 0x207: 0x0e, + 0x208: 0x0e, 0x209: 0x0e, 0x20a: 0x0e, 0x20b: 0x0e, 0x20c: 0x0e, 0x20d: 0x0e, 0x20e: 0x0e, 0x20f: 0x0e, + 0x210: 0x0e, 0x211: 0x0e, 0x212: 0x0e, 0x213: 0x0e, 0x214: 0x0e, 0x215: 0x0e, 0x216: 0x0e, 0x217: 0x0e, + 0x218: 0x0e, 0x219: 0x0e, 0x21a: 0x0e, 0x21b: 0x0e, 0x21c: 0x0e, 0x21d: 0x0e, 0x21e: 0x0e, 0x21f: 0x0e, + 0x220: 0x0e, 0x221: 0x0e, 0x222: 0x0e, 0x223: 0x0e, 0x224: 0x0e, 0x225: 0x0e, 0x226: 0x0e, 0x227: 0x0e, + 0x228: 0x0e, 0x229: 0x0e, 0x22a: 0x0e, 0x22b: 0x0e, 0x22c: 0x0e, 0x22d: 0x0e, 0x22e: 0x0e, 0x22f: 0x0e, + 0x230: 0x0e, 0x231: 0x0e, 0x232: 0x0e, 0x233: 0x0e, 0x234: 0x0e, 0x235: 0x0e, 0x236: 0x0e, 0x237: 0x0e, + 0x238: 0x0e, 0x239: 0x0e, 0x23a: 0x0e, 0x23b: 0x0e, 0x23c: 0x0e, 0x23d: 0x0e, 0x23e: 0x0e, 0x23f: 0x0e, + // Block 0x9, offset 0x240 + 0x240: 0x0e, 0x241: 0x0e, 0x242: 0x0e, 0x243: 0x0e, 0x244: 0x0e, 0x245: 0x0e, 0x246: 0x0e, 0x247: 0x0e, + 0x248: 0x0e, 0x249: 0x0e, 0x24a: 0x0e, 0x24b: 0x0e, 0x24c: 0x0e, 0x24d: 0x0e, 0x24e: 0x0e, 0x24f: 0x0e, + 0x250: 0x0e, 0x251: 0x0e, 0x252: 0x3b, 0x253: 0x3c, + 0x265: 0x3d, + 0x270: 0x0e, 0x271: 0x0e, 0x272: 0x0e, 0x273: 0x0e, 0x274: 0x0e, 0x275: 0x0e, 0x276: 0x0e, 0x277: 0x0e, + 0x278: 0x0e, 0x279: 0x0e, 0x27a: 0x0e, 0x27b: 0x0e, 0x27c: 0x0e, 0x27d: 0x0e, 0x27e: 0x0e, 0x27f: 0x0e, + // Block 0xa, offset 0x280 + 0x280: 0x0e, 0x281: 0x0e, 0x282: 0x0e, 0x283: 0x0e, 0x284: 0x0e, 0x285: 0x0e, 0x286: 0x0e, 0x287: 0x0e, + 0x288: 0x0e, 0x289: 0x0e, 0x28a: 0x0e, 0x28b: 0x0e, 0x28c: 0x0e, 0x28d: 0x0e, 0x28e: 0x0e, 0x28f: 0x0e, + 0x290: 0x0e, 0x291: 0x0e, 0x292: 0x0e, 0x293: 0x0e, 0x294: 0x0e, 0x295: 0x0e, 0x296: 0x0e, 0x297: 0x0e, + 0x298: 0x0e, 0x299: 0x0e, 0x29a: 0x0e, 0x29b: 0x0e, 0x29c: 0x0e, 0x29d: 0x0e, 0x29e: 0x3e, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x08, 0x2c1: 0x08, 0x2c2: 0x08, 0x2c3: 0x08, 0x2c4: 0x08, 0x2c5: 0x08, 0x2c6: 0x08, 0x2c7: 0x08, + 0x2c8: 0x08, 0x2c9: 0x08, 0x2ca: 0x08, 0x2cb: 0x08, 0x2cc: 0x08, 0x2cd: 0x08, 0x2ce: 0x08, 0x2cf: 0x08, + 0x2d0: 0x08, 0x2d1: 0x08, 0x2d2: 0x08, 0x2d3: 0x08, 0x2d4: 0x08, 0x2d5: 0x08, 0x2d6: 0x08, 0x2d7: 0x08, + 0x2d8: 0x08, 0x2d9: 0x08, 0x2da: 0x08, 0x2db: 0x08, 0x2dc: 0x08, 0x2dd: 0x08, 0x2de: 0x08, 0x2df: 0x08, + 0x2e0: 0x08, 0x2e1: 0x08, 0x2e2: 0x08, 0x2e3: 0x08, 0x2e4: 0x08, 0x2e5: 0x08, 0x2e6: 0x08, 0x2e7: 0x08, + 0x2e8: 0x08, 0x2e9: 0x08, 0x2ea: 0x08, 0x2eb: 0x08, 0x2ec: 0x08, 0x2ed: 0x08, 0x2ee: 0x08, 0x2ef: 0x08, + 0x2f0: 0x08, 0x2f1: 0x08, 0x2f2: 0x08, 0x2f3: 0x08, 0x2f4: 0x08, 0x2f5: 0x08, 0x2f6: 0x08, 0x2f7: 0x08, + 0x2f8: 0x08, 0x2f9: 0x08, 0x2fa: 0x08, 0x2fb: 0x08, 0x2fc: 0x08, 0x2fd: 0x08, 0x2fe: 0x08, 0x2ff: 0x08, + // Block 0xc, offset 0x300 + 0x300: 0x08, 0x301: 0x08, 0x302: 0x08, 0x303: 0x08, 0x304: 0x08, 0x305: 0x08, 0x306: 0x08, 0x307: 0x08, + 0x308: 0x08, 0x309: 0x08, 0x30a: 0x08, 0x30b: 0x08, 0x30c: 0x08, 0x30d: 0x08, 0x30e: 0x08, 0x30f: 0x08, + 0x310: 0x08, 0x311: 0x08, 0x312: 0x08, 0x313: 0x08, 0x314: 0x08, 0x315: 0x08, 0x316: 0x08, 0x317: 0x08, + 0x318: 0x08, 0x319: 0x08, 0x31a: 0x08, 0x31b: 0x08, 0x31c: 0x08, 0x31d: 0x08, 0x31e: 0x08, 0x31f: 0x08, + 0x320: 0x08, 0x321: 0x08, 0x322: 0x08, 0x323: 0x08, 0x324: 0x0e, 0x325: 0x0e, 0x326: 0x0e, 0x327: 0x0e, + 0x328: 0x0e, 0x329: 0x0e, 0x32a: 0x0e, 0x32b: 0x0e, + 0x338: 0x3f, 0x339: 0x40, 0x33c: 0x41, 0x33d: 0x42, 0x33e: 0x43, 0x33f: 0x44, + // Block 0xd, offset 0x340 + 0x37f: 0x45, + // Block 0xe, offset 0x380 + 0x380: 0x0e, 0x381: 0x0e, 0x382: 0x0e, 0x383: 0x0e, 0x384: 0x0e, 0x385: 0x0e, 0x386: 0x0e, 0x387: 0x0e, + 0x388: 0x0e, 0x389: 0x0e, 0x38a: 0x0e, 0x38b: 0x0e, 0x38c: 0x0e, 0x38d: 0x0e, 0x38e: 0x0e, 0x38f: 0x0e, + 0x390: 0x0e, 0x391: 0x0e, 0x392: 0x0e, 0x393: 0x0e, 0x394: 0x0e, 0x395: 0x0e, 0x396: 0x0e, 0x397: 0x0e, + 0x398: 0x0e, 0x399: 0x0e, 0x39a: 0x0e, 0x39b: 0x0e, 0x39c: 0x0e, 0x39d: 0x0e, 0x39e: 0x0e, 0x39f: 0x46, + 0x3a0: 0x0e, 0x3a1: 0x0e, 0x3a2: 0x0e, 0x3a3: 0x0e, 0x3a4: 0x0e, 0x3a5: 0x0e, 0x3a6: 0x0e, 0x3a7: 0x0e, + 0x3a8: 0x0e, 0x3a9: 0x0e, 0x3aa: 0x0e, 0x3ab: 0x47, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x48, + // Block 0x10, offset 0x400 + 0x400: 0x49, 0x403: 0x4a, 0x404: 0x4b, 0x405: 0x4c, 0x406: 0x4d, + 0x408: 0x4e, 0x409: 0x4f, 0x40c: 0x50, 0x40d: 0x51, 0x40e: 0x52, 0x40f: 0x53, + 0x410: 0x3a, 0x411: 0x54, 0x412: 0x0e, 0x413: 0x55, 0x414: 0x56, 0x415: 0x57, 0x416: 0x58, 0x417: 0x59, + 0x418: 0x0e, 0x419: 0x5a, 0x41a: 0x0e, 0x41b: 0x5b, + 0x424: 0x5c, 0x425: 0x5d, 0x426: 0x5e, 0x427: 0x5f, + // Block 0x11, offset 0x440 + 0x456: 0x0b, 0x457: 0x06, + 0x458: 0x0c, 0x45b: 0x0d, 0x45f: 0x0e, + 0x460: 0x06, 0x461: 0x06, 0x462: 0x06, 0x463: 0x06, 0x464: 0x06, 0x465: 0x06, 0x466: 0x06, 0x467: 0x06, + 0x468: 0x06, 0x469: 0x06, 0x46a: 0x06, 0x46b: 0x06, 0x46c: 0x06, 0x46d: 0x06, 0x46e: 0x06, 0x46f: 0x06, + 0x470: 0x06, 0x471: 0x06, 0x472: 0x06, 0x473: 0x06, 0x474: 0x06, 0x475: 0x06, 0x476: 0x06, 0x477: 0x06, + 0x478: 0x06, 0x479: 0x06, 0x47a: 0x06, 0x47b: 0x06, 0x47c: 0x06, 0x47d: 0x06, 0x47e: 0x06, 0x47f: 0x06, + // Block 0x12, offset 0x480 + 0x484: 0x08, 0x485: 0x08, 0x486: 0x08, 0x487: 0x09, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x08, 0x4c1: 0x08, 0x4c2: 0x08, 0x4c3: 0x08, 0x4c4: 0x08, 0x4c5: 0x08, 0x4c6: 0x08, 0x4c7: 0x08, + 0x4c8: 0x08, 0x4c9: 0x08, 0x4ca: 0x08, 0x4cb: 0x08, 0x4cc: 0x08, 0x4cd: 0x08, 0x4ce: 0x08, 0x4cf: 0x08, + 0x4d0: 0x08, 0x4d1: 0x08, 0x4d2: 0x08, 0x4d3: 0x08, 0x4d4: 0x08, 0x4d5: 0x08, 0x4d6: 0x08, 0x4d7: 0x08, + 0x4d8: 0x08, 0x4d9: 0x08, 0x4da: 0x08, 0x4db: 0x08, 0x4dc: 0x08, 0x4dd: 0x08, 0x4de: 0x08, 0x4df: 0x08, + 0x4e0: 0x08, 0x4e1: 0x08, 0x4e2: 0x08, 0x4e3: 0x08, 0x4e4: 0x08, 0x4e5: 0x08, 0x4e6: 0x08, 0x4e7: 0x08, + 0x4e8: 0x08, 0x4e9: 0x08, 0x4ea: 0x08, 0x4eb: 0x08, 0x4ec: 0x08, 0x4ed: 0x08, 0x4ee: 0x08, 0x4ef: 0x08, + 0x4f0: 0x08, 0x4f1: 0x08, 0x4f2: 0x08, 0x4f3: 0x08, 0x4f4: 0x08, 0x4f5: 0x08, 0x4f6: 0x08, 0x4f7: 0x08, + 0x4f8: 0x08, 0x4f9: 0x08, 0x4fa: 0x08, 0x4fb: 0x08, 0x4fc: 0x08, 0x4fd: 0x08, 0x4fe: 0x08, 0x4ff: 0x60, + // Block 0x14, offset 0x500 + 0x520: 0x10, + 0x530: 0x09, 0x531: 0x09, 0x532: 0x09, 0x533: 0x09, 0x534: 0x09, 0x535: 0x09, 0x536: 0x09, 0x537: 0x09, + 0x538: 0x09, 0x539: 0x09, 0x53a: 0x09, 0x53b: 0x09, 0x53c: 0x09, 0x53d: 0x09, 0x53e: 0x09, 0x53f: 0x11, + // Block 0x15, offset 0x540 + 0x540: 0x09, 0x541: 0x09, 0x542: 0x09, 0x543: 0x09, 0x544: 0x09, 0x545: 0x09, 0x546: 0x09, 0x547: 0x09, + 0x548: 0x09, 0x549: 0x09, 0x54a: 0x09, 0x54b: 0x09, 0x54c: 0x09, 0x54d: 0x09, 0x54e: 0x09, 0x54f: 0x11, +} + +// inverseData contains 4-byte entries of the following format: +// <length> <modified UTF-8-encoded rune> <0 padding> +// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the +// UTF-8 encoding of the original rune. Mappings often have the following +// pattern: +// A -> A (U+FF21 -> U+0041) +// B -> B (U+FF22 -> U+0042) +// ... +// By xor-ing the last byte the same entry can be shared by many mappings. This +// reduces the total number of distinct entries by about two thirds. +// The resulting entry for the aforementioned mappings is +// { 0x01, 0xE0, 0x00, 0x00 } +// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get +// E0 ^ A1 = 41. +// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get +// E0 ^ A2 = 42. +// Note that because of the xor-ing, the byte sequence stored in the entry is +// not valid UTF-8. +var inverseData = [150][4]byte{ + {0x00, 0x00, 0x00, 0x00}, + {0x03, 0xe3, 0x80, 0xa0}, + {0x03, 0xef, 0xbc, 0xa0}, + {0x03, 0xef, 0xbc, 0xe0}, + {0x03, 0xef, 0xbd, 0xe0}, + {0x03, 0xef, 0xbf, 0x02}, + {0x03, 0xef, 0xbf, 0x00}, + {0x03, 0xef, 0xbf, 0x0e}, + {0x03, 0xef, 0xbf, 0x0c}, + {0x03, 0xef, 0xbf, 0x0f}, + {0x03, 0xef, 0xbf, 0x39}, + {0x03, 0xef, 0xbf, 0x3b}, + {0x03, 0xef, 0xbf, 0x3f}, + {0x03, 0xef, 0xbf, 0x2a}, + {0x03, 0xef, 0xbf, 0x0d}, + {0x03, 0xef, 0xbf, 0x25}, + {0x03, 0xef, 0xbd, 0x1a}, + {0x03, 0xef, 0xbd, 0x26}, + {0x01, 0xa0, 0x00, 0x00}, + {0x03, 0xef, 0xbd, 0x25}, + {0x03, 0xef, 0xbd, 0x23}, + {0x03, 0xef, 0xbd, 0x2e}, + {0x03, 0xef, 0xbe, 0x07}, + {0x03, 0xef, 0xbe, 0x05}, + {0x03, 0xef, 0xbd, 0x06}, + {0x03, 0xef, 0xbd, 0x13}, + {0x03, 0xef, 0xbd, 0x0b}, + {0x03, 0xef, 0xbd, 0x16}, + {0x03, 0xef, 0xbd, 0x0c}, + {0x03, 0xef, 0xbd, 0x15}, + {0x03, 0xef, 0xbd, 0x0d}, + {0x03, 0xef, 0xbd, 0x1c}, + {0x03, 0xef, 0xbd, 0x02}, + {0x03, 0xef, 0xbd, 0x1f}, + {0x03, 0xef, 0xbd, 0x1d}, + {0x03, 0xef, 0xbd, 0x17}, + {0x03, 0xef, 0xbd, 0x08}, + {0x03, 0xef, 0xbd, 0x09}, + {0x03, 0xef, 0xbd, 0x0e}, + {0x03, 0xef, 0xbd, 0x04}, + {0x03, 0xef, 0xbd, 0x05}, + {0x03, 0xef, 0xbe, 0x3f}, + {0x03, 0xef, 0xbe, 0x00}, + {0x03, 0xef, 0xbd, 0x2c}, + {0x03, 0xef, 0xbe, 0x06}, + {0x03, 0xef, 0xbe, 0x0c}, + {0x03, 0xef, 0xbe, 0x0f}, + {0x03, 0xef, 0xbe, 0x0d}, + {0x03, 0xef, 0xbe, 0x0b}, + {0x03, 0xef, 0xbe, 0x19}, + {0x03, 0xef, 0xbe, 0x15}, + {0x03, 0xef, 0xbe, 0x11}, + {0x03, 0xef, 0xbe, 0x31}, + {0x03, 0xef, 0xbe, 0x33}, + {0x03, 0xef, 0xbd, 0x0f}, + {0x03, 0xef, 0xbe, 0x30}, + {0x03, 0xef, 0xbe, 0x3e}, + {0x03, 0xef, 0xbe, 0x32}, + {0x03, 0xef, 0xbe, 0x36}, + {0x03, 0xef, 0xbd, 0x14}, + {0x03, 0xef, 0xbe, 0x2e}, + {0x03, 0xef, 0xbd, 0x1e}, + {0x03, 0xef, 0xbe, 0x10}, + {0x03, 0xef, 0xbf, 0x13}, + {0x03, 0xef, 0xbf, 0x15}, + {0x03, 0xef, 0xbf, 0x17}, + {0x03, 0xef, 0xbf, 0x1f}, + {0x03, 0xef, 0xbf, 0x1d}, + {0x03, 0xef, 0xbf, 0x1b}, + {0x03, 0xef, 0xbf, 0x09}, + {0x03, 0xef, 0xbf, 0x0b}, + {0x03, 0xef, 0xbf, 0x37}, + {0x03, 0xef, 0xbe, 0x04}, + {0x01, 0xe0, 0x00, 0x00}, + {0x03, 0xe2, 0xa6, 0x1a}, + {0x03, 0xe2, 0xa6, 0x26}, + {0x03, 0xe3, 0x80, 0x23}, + {0x03, 0xe3, 0x80, 0x2e}, + {0x03, 0xe3, 0x80, 0x25}, + {0x03, 0xe3, 0x83, 0x1e}, + {0x03, 0xe3, 0x83, 0x14}, + {0x03, 0xe3, 0x82, 0x06}, + {0x03, 0xe3, 0x82, 0x0b}, + {0x03, 0xe3, 0x82, 0x0c}, + {0x03, 0xe3, 0x82, 0x0d}, + {0x03, 0xe3, 0x82, 0x02}, + {0x03, 0xe3, 0x83, 0x0f}, + {0x03, 0xe3, 0x83, 0x08}, + {0x03, 0xe3, 0x83, 0x09}, + {0x03, 0xe3, 0x83, 0x2c}, + {0x03, 0xe3, 0x83, 0x0c}, + {0x03, 0xe3, 0x82, 0x13}, + {0x03, 0xe3, 0x82, 0x16}, + {0x03, 0xe3, 0x82, 0x15}, + {0x03, 0xe3, 0x82, 0x1c}, + {0x03, 0xe3, 0x82, 0x1f}, + {0x03, 0xe3, 0x82, 0x1d}, + {0x03, 0xe3, 0x82, 0x1a}, + {0x03, 0xe3, 0x82, 0x17}, + {0x03, 0xe3, 0x82, 0x08}, + {0x03, 0xe3, 0x82, 0x09}, + {0x03, 0xe3, 0x82, 0x0e}, + {0x03, 0xe3, 0x82, 0x04}, + {0x03, 0xe3, 0x82, 0x05}, + {0x03, 0xe3, 0x82, 0x3f}, + {0x03, 0xe3, 0x83, 0x00}, + {0x03, 0xe3, 0x83, 0x06}, + {0x03, 0xe3, 0x83, 0x05}, + {0x03, 0xe3, 0x83, 0x0d}, + {0x03, 0xe3, 0x83, 0x0b}, + {0x03, 0xe3, 0x83, 0x07}, + {0x03, 0xe3, 0x83, 0x19}, + {0x03, 0xe3, 0x83, 0x15}, + {0x03, 0xe3, 0x83, 0x11}, + {0x03, 0xe3, 0x83, 0x31}, + {0x03, 0xe3, 0x83, 0x33}, + {0x03, 0xe3, 0x83, 0x30}, + {0x03, 0xe3, 0x83, 0x3e}, + {0x03, 0xe3, 0x83, 0x32}, + {0x03, 0xe3, 0x83, 0x36}, + {0x03, 0xe3, 0x83, 0x2e}, + {0x03, 0xe3, 0x82, 0x07}, + {0x03, 0xe3, 0x85, 0x04}, + {0x03, 0xe3, 0x84, 0x10}, + {0x03, 0xe3, 0x85, 0x30}, + {0x03, 0xe3, 0x85, 0x0d}, + {0x03, 0xe3, 0x85, 0x13}, + {0x03, 0xe3, 0x85, 0x15}, + {0x03, 0xe3, 0x85, 0x17}, + {0x03, 0xe3, 0x85, 0x1f}, + {0x03, 0xe3, 0x85, 0x1d}, + {0x03, 0xe3, 0x85, 0x1b}, + {0x03, 0xe3, 0x85, 0x09}, + {0x03, 0xe3, 0x85, 0x0f}, + {0x03, 0xe3, 0x85, 0x0b}, + {0x03, 0xe3, 0x85, 0x37}, + {0x03, 0xe3, 0x85, 0x3b}, + {0x03, 0xe3, 0x85, 0x39}, + {0x03, 0xe3, 0x85, 0x3f}, + {0x02, 0xc2, 0x02, 0x00}, + {0x02, 0xc2, 0x0e, 0x00}, + {0x02, 0xc2, 0x0c, 0x00}, + {0x02, 0xc2, 0x00, 0x00}, + {0x03, 0xe2, 0x82, 0x0f}, + {0x03, 0xe2, 0x94, 0x2a}, + {0x03, 0xe2, 0x86, 0x39}, + {0x03, 0xe2, 0x86, 0x3b}, + {0x03, 0xe2, 0x86, 0x3f}, + {0x03, 0xe2, 0x96, 0x0d}, + {0x03, 0xe2, 0x97, 0x25}, +} + +// Total table size 14680 bytes (14KiB) diff --git a/vendor/golang.org/x/text/width/transform.go b/vendor/golang.org/x/text/width/transform.go new file mode 100644 index 0000000000..2ed25096ac --- /dev/null +++ b/vendor/golang.org/x/text/width/transform.go @@ -0,0 +1,162 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package width + +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) + +type foldTransform struct { + transform.NopResetter +} + +func (foldTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for nSrc < len(src) { + if src[nSrc] < utf8.RuneSelf { + // ASCII fast path. + start, end := nSrc, len(src) + if d := len(dst) - nDst; d < end-start { + end = nSrc + d + } + for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ { + } + n := copy(dst[nDst:], src[start:nSrc]) + if nDst += n; nDst == len(dst) { + nSrc = start + n + if nSrc == len(src) { + return nDst, nSrc, nil + } + if src[nSrc] < utf8.RuneSelf { + return nDst, nSrc, transform.ErrShortDst + } + } + continue + } + v, size := trie.lookup(src[nSrc:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + size = 1 // gobble 1 byte + } + if elem(v)&tagNeedsFold == 0 { + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += size + } else { + data := inverseData[byte(v)] + if len(dst)-nDst < int(data[0]) { + return nDst, nSrc, transform.ErrShortDst + } + i := 1 + for end := int(data[0]); i < end; i++ { + dst[nDst] = data[i] + nDst++ + } + dst[nDst] = data[i] ^ src[nSrc+size-1] + nDst++ + } + nSrc += size + } + return nDst, nSrc, nil +} + +type narrowTransform struct { + transform.NopResetter +} + +func (narrowTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for nSrc < len(src) { + if src[nSrc] < utf8.RuneSelf { + // ASCII fast path. + start, end := nSrc, len(src) + if d := len(dst) - nDst; d < end-start { + end = nSrc + d + } + for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ { + } + n := copy(dst[nDst:], src[start:nSrc]) + if nDst += n; nDst == len(dst) { + nSrc = start + n + if nSrc == len(src) { + return nDst, nSrc, nil + } + if src[nSrc] < utf8.RuneSelf { + return nDst, nSrc, transform.ErrShortDst + } + } + continue + } + v, size := trie.lookup(src[nSrc:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + size = 1 // gobble 1 byte + } + if k := elem(v).kind(); byte(v) == 0 || k != EastAsianFullwidth && k != EastAsianWide && k != EastAsianAmbiguous { + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += size + } else { + data := inverseData[byte(v)] + if len(dst)-nDst < int(data[0]) { + return nDst, nSrc, transform.ErrShortDst + } + i := 1 + for end := int(data[0]); i < end; i++ { + dst[nDst] = data[i] + nDst++ + } + dst[nDst] = data[i] ^ src[nSrc+size-1] + nDst++ + } + nSrc += size + } + return nDst, nSrc, nil +} + +type wideTransform struct { + transform.NopResetter +} + +func (wideTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for nSrc < len(src) { + // TODO: Consider ASCII fast path. Special-casing ASCII handling can + // reduce the ns/op of BenchmarkWideASCII by about 30%. This is probably + // not enough to warrant the extra code and complexity. + v, size := trie.lookup(src[nSrc:]) + if size == 0 { // incomplete UTF-8 encoding + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + size = 1 // gobble 1 byte + } + if k := elem(v).kind(); byte(v) == 0 || k != EastAsianHalfwidth && k != EastAsianNarrow { + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += size + } else { + data := inverseData[byte(v)] + if len(dst)-nDst < int(data[0]) { + return nDst, nSrc, transform.ErrShortDst + } + i := 1 + for end := int(data[0]); i < end; i++ { + dst[nDst] = data[i] + nDst++ + } + dst[nDst] = data[i] ^ src[nSrc+size-1] + nDst++ + } + nSrc += size + } + return nDst, nSrc, nil +} diff --git a/vendor/golang.org/x/text/width/trieval.go b/vendor/golang.org/x/text/width/trieval.go new file mode 100644 index 0000000000..0ecffb4c64 --- /dev/null +++ b/vendor/golang.org/x/text/width/trieval.go @@ -0,0 +1,30 @@ +// This file was generated by go generate; DO NOT EDIT + +package width + +// elem is an entry of the width trie. The high byte is used to encode the type +// of the rune. The low byte is used to store the index to a mapping entry in +// the inverseData array. +type elem uint16 + +const ( + tagNeutral elem = iota << typeShift + tagAmbiguous + tagWide + tagNarrow + tagFullwidth + tagHalfwidth +) + +const ( + numTypeBits = 3 + typeShift = 16 - numTypeBits + + // tagNeedsFold is true for all fullwidth and halfwidth runes except for + // the Won sign U+20A9. + tagNeedsFold = 0x1000 + + // The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide + // variant. + wonSign rune = 0x20A9 +) diff --git a/vendor/golang.org/x/text/width/width.go b/vendor/golang.org/x/text/width/width.go new file mode 100644 index 0000000000..c32d772fc7 --- /dev/null +++ b/vendor/golang.org/x/text/width/width.go @@ -0,0 +1,201 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate stringer -type=Kind +//go:generate go run gen.go gen_common.go gen_trieval.go + +// Package width provides functionality for handling different widths in text. +// +// Wide characters behave like ideographs; they tend to allow line breaks after +// each character and remain upright in vertical text layout. Narrow characters +// are kept together in words or runs that are rotated sideways in vertical text +// layout. +// +// For more information, see http://unicode.org/reports/tr11/. +package width + +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// TODO +// 1) Reduce table size by compressing blocks. +// 2) API proposition for computing display length +// (approximation, fixed pitch only). +// 3) Implement display length. + +// Kind indicates the type of width property as defined in http://unicode.org/reports/tr11/. +type Kind int + +const ( + // Neutral characters do not occur in legacy East Asian character sets. + Neutral Kind = iota + + // EastAsianAmbiguous characters that can be sometimes wide and sometimes + // narrow and require additional information not contained in the character + // code to further resolve their width. + EastAsianAmbiguous + + // EastAsianWide characters are wide in its usual form. They occur only in + // the context of East Asian typography. These runes may have explicit + // halfwidth counterparts. + EastAsianWide + + // EastAsianNarrow characters are narrow in its usual form. They often have + // fullwidth counterparts. + EastAsianNarrow + + // Note: there exist Narrow runes that do not have fullwidth or wide + // counterparts, despite what the definition says (e.g. U+27E6). + + // EastAsianFullwidth characters have a compatibility decompositions of type + // wide that map to a narrow counterpart. + EastAsianFullwidth + + // EastAsianHalfwidth characters have a compatibility decomposition of type + // narrow that map to a wide or ambiguous counterpart, plus U+20A9 ₩ WON + // SIGN. + EastAsianHalfwidth + + // Note: there exist runes that have a halfwidth counterparts but that are + // classified as Ambiguous, rather than wide (e.g. U+2190). +) + +// TODO: the generated tries need to return size 1 for invalid runes for the +// width to be computed correctly (each byte should render width 1) + +var trie = newWidthTrie(0) + +// Lookup reports the Properties of the first rune in b and the number of bytes +// of its UTF-8 encoding. +func Lookup(b []byte) (p Properties, size int) { + v, sz := trie.lookup(b) + return Properties{elem(v), b[sz-1]}, sz +} + +// LookupString reports the Properties of the first rune in s and the number of +// bytes of its UTF-8 encoding. +func LookupString(s string) (p Properties, size int) { + v, sz := trie.lookupString(s) + return Properties{elem(v), s[sz-1]}, sz +} + +// LookupRune reports the Properties of rune r. +func LookupRune(r rune) Properties { + var buf [4]byte + n := utf8.EncodeRune(buf[:], r) + v, _ := trie.lookup(buf[:n]) + last := byte(r) + if r >= utf8.RuneSelf { + last = 0x80 + byte(r&0x3f) + } + return Properties{elem(v), last} +} + +// Properties provides access to width properties of a rune. +type Properties struct { + elem elem + last byte +} + +func (e elem) kind() Kind { + return Kind(e >> typeShift) +} + +// Kind returns the Kind of a rune as defined in Unicode TR #11. +// See http://unicode.org/reports/tr11/ for more details. +func (p Properties) Kind() Kind { + return p.elem.kind() +} + +// Folded returns the folded variant of a rune or 0 if the rune is canonical. +func (p Properties) Folded() rune { + if p.elem&tagNeedsFold != 0 { + buf := inverseData[byte(p.elem)] + buf[buf[0]] ^= p.last + r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) + return r + } + return 0 +} + +// Narrow returns the narrow variant of a rune or 0 if the rune is already +// narrow or doesn't have a narrow variant. +func (p Properties) Narrow() rune { + if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianFullwidth || k == EastAsianWide || k == EastAsianAmbiguous) { + buf := inverseData[byte(p.elem)] + buf[buf[0]] ^= p.last + r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) + return r + } + return 0 +} + +// Wide returns the wide variant of a rune or 0 if the rune is already +// wide or doesn't have a wide variant. +func (p Properties) Wide() rune { + if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianHalfwidth || k == EastAsianNarrow) { + buf := inverseData[byte(p.elem)] + buf[buf[0]] ^= p.last + r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) + return r + } + return 0 +} + +// TODO for Properties: +// - Add Fullwidth/Halfwidth or Inverted methods for computing variants +// mapping. +// - Add width information (including information on non-spacing runes). + +// Transformer implements the transform.Transformer interface. +type Transformer struct { + t transform.Transformer +} + +// Reset implements the transform.Transformer interface. +func (t Transformer) Reset() { t.t.Reset() } + +// Transform implements the Transformer interface. +func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return t.t.Transform(dst, src, atEOF) +} + +// Bytes returns a new byte slice with the result of applying t to b. +func (t Transformer) Bytes(b []byte) []byte { + b, _, _ = transform.Bytes(t, b) + return b +} + +// String returns a string with the result of applying t to s. +func (t Transformer) String(s string) string { + s, _, _ = transform.String(t, s) + return s +} + +var ( + // Fold is a transform that maps all runes to their canonical width. + // + // Note that the NFKC and NFKD transforms in golang.org/x/text/unicode/norm + // provide a more generic folding mechanism. + Fold Transformer = Transformer{foldTransform{}} + + // Widen is a transform that maps runes to their wide variant, if + // available. + Widen Transformer = Transformer{wideTransform{}} + + // Narrow is a transform that maps runes to their narrow variant, if + // available. + Narrow Transformer = Transformer{narrowTransform{}} +) + +// TODO: Consider the following options: +// - Treat Ambiguous runes that have a halfwidth counterpart as wide, or some +// generalized variant of this. +// - Consider a wide Won character to be the default width (or some generalized +// variant of this). +// - Filter the set of characters that gets converted (the preferred approach is +// to allow applying filters to transforms). diff --git a/vendor/gopkg.in/inf.v0/LICENSE b/vendor/gopkg.in/inf.v0/LICENSE new file mode 100644 index 0000000000..87a5cede33 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2012 Péter Surányi. Portions Copyright (c) 2009 The Go +Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/gopkg.in/inf.v0/dec.go b/vendor/gopkg.in/inf.v0/dec.go new file mode 100644 index 0000000000..d17ad945d4 --- /dev/null +++ b/vendor/gopkg.in/inf.v0/dec.go @@ -0,0 +1,615 @@ +// Package inf (type inf.Dec) implements "infinite-precision" decimal +// arithmetic. +// "Infinite precision" describes two characteristics: practically unlimited +// precision for decimal number representation and no support for calculating +// with any specific fixed precision. +// (Although there is no practical limit on precision, inf.Dec can only +// represent finite decimals.) +// +// This package is currently in experimental stage and the API may change. +// +// This package does NOT support: +// - rounding to specific precisions (as opposed to specific decimal positions) +// - the notion of context (each rounding must be explicit) +// - NaN and Inf values, and distinguishing between positive and negative zero +// - conversions to and from float32/64 types +// +// Features considered for possible addition: +// + formatting options +// + Exp method +// + combined operations such as AddRound/MulAdd etc +// + exchanging data in decimal32/64/128 formats +// +package inf + +// TODO: +// - avoid excessive deep copying (quo and rounders) + +import ( + "fmt" + "io" + "math/big" + "strings" +) + +// A Dec represents a signed arbitrary-precision decimal. +// It is a combination of a sign, an arbitrary-precision integer coefficient +// value, and a signed fixed-precision exponent value. +// The sign and the coefficient value are handled together as a signed value +// and referred to as the unscaled value. +// (Positive and negative zero values are not distinguished.) +// Since the exponent is most commonly non-positive, it is handled in negated +// form and referred to as scale. +// +// The mathematical value of a Dec equals: +// +// unscaled * 10**(-scale) +// +// Note that different Dec representations may have equal mathematical values. +// +// unscaled scale String() +// ------------------------- +// 0 0 "0" +// 0 2 "0.00" +// 0 -2 "0" +// 1 0 "1" +// 100 2 "1.00" +// 10 0 "10" +// 1 -1 "10" +// +// The zero value for a Dec represents the value 0 with scale 0. +// +// Operations are typically performed through the *Dec type. +// The semantics of the assignment operation "=" for "bare" Dec values is +// undefined and should not be relied on. +// +// Methods are typically of the form: +// +// func (z *Dec) Op(x, y *Dec) *Dec +// +// and implement operations z = x Op y with the result as receiver; if it +// is one of the operands it may be overwritten (and its memory reused). +// To enable chaining of operations, the result is also returned. Methods +// returning a result other than *Dec take one of the operands as the receiver. +// +// A "bare" Quo method (quotient / division operation) is not provided, as the +// result is not always a finite decimal and thus in general cannot be +// represented as a Dec. +// Instead, in the common case when rounding is (potentially) necessary, +// QuoRound should be used with a Scale and a Rounder. +// QuoExact or QuoRound with RoundExact can be used in the special cases when it +// is known that the result is always a finite decimal. +// +type Dec struct { + unscaled big.Int + scale Scale +} + +// Scale represents the type used for the scale of a Dec. +type Scale int32 + +const scaleSize = 4 // bytes in a Scale value + +// Scaler represents a method for obtaining the scale to use for the result of +// an operation on x and y. +type scaler interface { + Scale(x *Dec, y *Dec) Scale +} + +var bigInt = [...]*big.Int{ + big.NewInt(0), big.NewInt(1), big.NewInt(2), big.NewInt(3), big.NewInt(4), + big.NewInt(5), big.NewInt(6), big.NewInt(7), big.NewInt(8), big.NewInt(9), + big.NewInt(10), +} + +var exp10cache [64]big.Int = func() [64]big.Int { + e10, e10i := [64]big.Int{}, bigInt[1] + for i, _ := range e10 { + e10[i].Set(e10i) + e10i = new(big.Int).Mul(e10i, bigInt[10]) + } + return e10 +}() + +// NewDec allocates and returns a new Dec set to the given int64 unscaled value +// and scale. +func NewDec(unscaled int64, scale Scale) *Dec { + return new(Dec).SetUnscaled(unscaled).SetScale(scale) +} + +// NewDecBig allocates and returns a new Dec set to the given *big.Int unscaled +// value and scale. +func NewDecBig(unscaled *big.Int, scale Scale) *Dec { + return new(Dec).SetUnscaledBig(unscaled).SetScale(scale) +} + +// Scale returns the scale of x. +func (x *Dec) Scale() Scale { + return x.scale +} + +// Unscaled returns the unscaled value of x for u and true for ok when the +// unscaled value can be represented as int64; otherwise it returns an undefined +// int64 value for u and false for ok. Use x.UnscaledBig().Int64() to avoid +// checking the validity of the value when the check is known to be redundant. +func (x *Dec) Unscaled() (u int64, ok bool) { + u = x.unscaled.Int64() + var i big.Int + ok = i.SetInt64(u).Cmp(&x.unscaled) == 0 + return +} + +// UnscaledBig returns the unscaled value of x as *big.Int. +func (x *Dec) UnscaledBig() *big.Int { + return &x.unscaled +} + +// SetScale sets the scale of z, with the unscaled value unchanged, and returns +// z. +// The mathematical value of the Dec changes as if it was multiplied by +// 10**(oldscale-scale). +func (z *Dec) SetScale(scale Scale) *Dec { + z.scale = scale + return z +} + +// SetUnscaled sets the unscaled value of z, with the scale unchanged, and +// returns z. +func (z *Dec) SetUnscaled(unscaled int64) *Dec { + z.unscaled.SetInt64(unscaled) + return z +} + +// SetUnscaledBig sets the unscaled value of z, with the scale unchanged, and +// returns z. +func (z *Dec) SetUnscaledBig(unscaled *big.Int) *Dec { + z.unscaled.Set(unscaled) + return z +} + +// Set sets z to the value of x and returns z. +// It does nothing if z == x. +func (z *Dec) Set(x *Dec) *Dec { + if z != x { + z.SetUnscaledBig(x.UnscaledBig()) + z.SetScale(x.Scale()) + } + return z +} + +// Sign returns: +// +// -1 if x < 0 +// 0 if x == 0 +// +1 if x > 0 +// +func (x *Dec) Sign() int { + return x.UnscaledBig().Sign() +} + +// Neg sets z to -x and returns z. +func (z *Dec) Neg(x *Dec) *Dec { + z.SetScale(x.Scale()) + z.UnscaledBig().Neg(x.UnscaledBig()) + return z +} + +// Cmp compares x and y and returns: +// +// -1 if x < y +// 0 if x == y +// +1 if x > y +// +func (x *Dec) Cmp(y *Dec) int { + xx, yy := upscale(x, y) + return xx.UnscaledBig().Cmp(yy.UnscaledBig()) +} + +// Abs sets z to |x| (the absolute value of x) and returns z. +func (z *Dec) Abs(x *Dec) *Dec { + z.SetScale(x.Scale()) + z.UnscaledBig().Abs(x.UnscaledBig()) + return z +} + +// Add sets z to the sum x+y and returns z. +// The scale of z is the greater of the scales of x and y. +func (z *Dec) Add(x, y *Dec) *Dec { + xx, yy := upscale(x, y) + z.SetScale(xx.Scale()) + z.UnscaledBig().Add(xx.UnscaledBig(), yy.UnscaledBig()) + return z +} + +// Sub sets z to the difference x-y and returns z. +// The scale of z is the greater of the scales of x and y. +func (z *Dec) Sub(x, y *Dec) *Dec { + xx, yy := upscale(x, y) + z.SetScale(xx.Scale()) + z.UnscaledBig().Sub(xx.UnscaledBig(), yy.UnscaledBig()) + return z +} + +// Mul sets z to the product x*y and returns z. +// The scale of z is the sum of the scales of x and y. +func (z *Dec) Mul(x, y *Dec) *Dec { + z.SetScale(x.Scale() + y.Scale()) + z.UnscaledBig().Mul(x.UnscaledBig(), y.UnscaledBig()) + return z +} + +// Round sets z to the value of x rounded to Scale s using Rounder r, and +// returns z. +func (z *Dec) Round(x *Dec, s Scale, r Rounder) *Dec { + return z.QuoRound(x, NewDec(1, 0), s, r) +} + +// QuoRound sets z to the quotient x/y, rounded using the given Rounder to the +// specified scale. +// +// If the rounder is RoundExact but the result can not be expressed exactly at +// the specified scale, QuoRound returns nil, and the value of z is undefined. +// +// There is no corresponding Div method; the equivalent can be achieved through +// the choice of Rounder used. +// +func (z *Dec) QuoRound(x, y *Dec, s Scale, r Rounder) *Dec { + return z.quo(x, y, sclr{s}, r) +} + +func (z *Dec) quo(x, y *Dec, s scaler, r Rounder) *Dec { + scl := s.Scale(x, y) + var zzz *Dec + if r.UseRemainder() { + zz, rA, rB := new(Dec).quoRem(x, y, scl, true, new(big.Int), new(big.Int)) + zzz = r.Round(new(Dec), zz, rA, rB) + } else { + zz, _, _ := new(Dec).quoRem(x, y, scl, false, nil, nil) + zzz = r.Round(new(Dec), zz, nil, nil) + } + if zzz == nil { + return nil + } + return z.Set(zzz) +} + +// QuoExact sets z to the quotient x/y and returns z when x/y is a finite +// decimal. Otherwise it returns nil and the value of z is undefined. +// +// The scale of a non-nil result is "x.Scale() - y.Scale()" or greater; it is +// calculated so that the remainder will be zero whenever x/y is a finite +// decimal. +func (z *Dec) QuoExact(x, y *Dec) *Dec { + return z.quo(x, y, scaleQuoExact{}, RoundExact) +} + +// quoRem sets z to the quotient x/y with the scale s, and if useRem is true, +// it sets remNum and remDen to the numerator and denominator of the remainder. +// It returns z, remNum and remDen. +// +// The remainder is normalized to the range -1 < r < 1 to simplify rounding; +// that is, the results satisfy the following equation: +// +// x / y = z + (remNum/remDen) * 10**(-z.Scale()) +// +// See Rounder for more details about rounding. +// +func (z *Dec) quoRem(x, y *Dec, s Scale, useRem bool, + remNum, remDen *big.Int) (*Dec, *big.Int, *big.Int) { + // difference (required adjustment) compared to "canonical" result scale + shift := s - (x.Scale() - y.Scale()) + // pointers to adjusted unscaled dividend and divisor + var ix, iy *big.Int + switch { + case shift > 0: + // increased scale: decimal-shift dividend left + ix = new(big.Int).Mul(x.UnscaledBig(), exp10(shift)) + iy = y.UnscaledBig() + case shift < 0: + // decreased scale: decimal-shift divisor left + ix = x.UnscaledBig() + iy = new(big.Int).Mul(y.UnscaledBig(), exp10(-shift)) + default: + ix = x.UnscaledBig() + iy = y.UnscaledBig() + } + // save a copy of iy in case it to be overwritten with the result + iy2 := iy + if iy == z.UnscaledBig() { + iy2 = new(big.Int).Set(iy) + } + // set scale + z.SetScale(s) + // set unscaled + if useRem { + // Int division + _, intr := z.UnscaledBig().QuoRem(ix, iy, new(big.Int)) + // set remainder + remNum.Set(intr) + remDen.Set(iy2) + } else { + z.UnscaledBig().Quo(ix, iy) + } + return z, remNum, remDen +} + +type sclr struct{ s Scale } + +func (s sclr) Scale(x, y *Dec) Scale { + return s.s +} + +type scaleQuoExact struct{} + +func (sqe scaleQuoExact) Scale(x, y *Dec) Scale { + rem := new(big.Rat).SetFrac(x.UnscaledBig(), y.UnscaledBig()) + f2, f5 := factor2(rem.Denom()), factor(rem.Denom(), bigInt[5]) + var f10 Scale + if f2 > f5 { + f10 = Scale(f2) + } else { + f10 = Scale(f5) + } + return x.Scale() - y.Scale() + f10 +} + +func factor(n *big.Int, p *big.Int) int { + // could be improved for large factors + d, f := n, 0 + for { + dd, dm := new(big.Int).DivMod(d, p, new(big.Int)) + if dm.Sign() == 0 { + f++ + d = dd + } else { + break + } + } + return f +} + +func factor2(n *big.Int) int { + // could be improved for large factors + f := 0 + for ; n.Bit(f) == 0; f++ { + } + return f +} + +func upscale(a, b *Dec) (*Dec, *Dec) { + if a.Scale() == b.Scale() { + return a, b + } + if a.Scale() > b.Scale() { + bb := b.rescale(a.Scale()) + return a, bb + } + aa := a.rescale(b.Scale()) + return aa, b +} + +func exp10(x Scale) *big.Int { + if int(x) < len(exp10cache) { + return &exp10cache[int(x)] + } + return new(big.Int).Exp(bigInt[10], big.NewInt(int64(x)), nil) +} + +func (x *Dec) rescale(newScale Scale) *Dec { + shift := newScale - x.Scale() + switch { + case shift < 0: + e := exp10(-shift) + return NewDecBig(new(big.Int).Quo(x.UnscaledBig(), e), newScale) + case shift > 0: + e := exp10(shift) + return NewDecBig(new(big.Int).Mul(x.UnscaledBig(), e), newScale) + } + return x +} + +var zeros = []byte("00000000000000000000000000000000" + + "00000000000000000000000000000000") +var lzeros = Scale(len(zeros)) + +func appendZeros(s []byte, n Scale) []byte { + for i := Scale(0); i < n; i += lzeros { + if n > i+lzeros { + s = append(s, zeros...) + } else { + s = append(s, zeros[0:n-i]...) + } + } + return s +} + +func (x *Dec) String() string { + if x == nil { + return "<nil>" + } + scale := x.Scale() + s := []byte(x.UnscaledBig().String()) + if scale <= 0 { + if scale != 0 && x.unscaled.Sign() != 0 { + s = appendZeros(s, -scale) + } + return string(s) + } + negbit := Scale(-((x.Sign() - 1) / 2)) + // scale > 0 + lens := Scale(len(s)) + if lens-negbit <= scale { + ss := make([]byte, 0, scale+2) + if negbit == 1 { + ss = append(ss, '-') + } + ss = append(ss, '0', '.') + ss = appendZeros(ss, scale-lens+negbit) + ss = append(ss, s[negbit:]...) + return string(ss) + } + // lens > scale + ss := make([]byte, 0, lens+1) + ss = append(ss, s[:lens-scale]...) + ss = append(ss, '.') + ss = append(ss, s[lens-scale:]...) + return string(ss) +} + +// Format is a support routine for fmt.Formatter. It accepts the decimal +// formats 'd' and 'f', and handles both equivalently. +// Width, precision, flags and bases 2, 8, 16 are not supported. +func (x *Dec) Format(s fmt.State, ch rune) { + if ch != 'd' && ch != 'f' && ch != 'v' && ch != 's' { + fmt.Fprintf(s, "%%!%c(dec.Dec=%s)", ch, x.String()) + return + } + fmt.Fprintf(s, x.String()) +} + +func (z *Dec) scan(r io.RuneScanner) (*Dec, error) { + unscaled := make([]byte, 0, 256) // collects chars of unscaled as bytes + dp, dg := -1, -1 // indexes of decimal point, first digit +loop: + for { + ch, _, err := r.ReadRune() + if err == io.EOF { + break loop + } + if err != nil { + return nil, err + } + switch { + case ch == '+' || ch == '-': + if len(unscaled) > 0 || dp >= 0 { // must be first character + r.UnreadRune() + break loop + } + case ch == '.': + if dp >= 0 { + r.UnreadRune() + break loop + } + dp = len(unscaled) + continue // don't add to unscaled + case ch >= '0' && ch <= '9': + if dg == -1 { + dg = len(unscaled) + } + default: + r.UnreadRune() + break loop + } + unscaled = append(unscaled, byte(ch)) + } + if dg == -1 { + return nil, fmt.Errorf("no digits read") + } + if dp >= 0 { + z.SetScale(Scale(len(unscaled) - dp)) + } else { + z.SetScale(0) + } + _, ok := z.UnscaledBig().SetString(string(unscaled), 10) + if !ok { + return nil, fmt.Errorf("invalid decimal: %s", string(unscaled)) + } + return z, nil +} + +// SetString sets z to the value of s, interpreted as a decimal (base 10), +// and returns z and a boolean indicating success. The scale of z is the +// number of digits after the decimal point (including any trailing 0s), +// or 0 if there is no decimal point. If SetString fails, the value of z +// is undefined but the returned value is nil. +func (z *Dec) SetString(s string) (*Dec, bool) { + r := strings.NewReader(s) + _, err := z.scan(r) + if err != nil { + return nil, false + } + _, _, err = r.ReadRune() + if err != io.EOF { + return nil, false + } + // err == io.EOF => scan consumed all of s + return z, true +} + +// Scan is a support routine for fmt.Scanner; it sets z to the value of +// the scanned number. It accepts the decimal formats 'd' and 'f', and +// handles both equivalently. Bases 2, 8, 16 are not supported. +// The scale of z is the number of digits after the decimal point +// (including any trailing 0s), or 0 if there is no decimal point. +func (z *Dec) Scan(s fmt.ScanState, ch rune) error { + if ch != 'd' && ch != 'f' && ch != 's' && ch != 'v' { + return fmt.Errorf("Dec.Scan: invalid verb '%c'", ch) + } + s.SkipSpace() + _, err := z.scan(s) + return err +} + +// Gob encoding version +const decGobVersion byte = 1 + +func scaleBytes(s Scale) []byte { + buf := make([]byte, scaleSize) + i := scaleSize + for j := 0; j < scaleSize; j++ { + i-- + buf[i] = byte(s) + s >>= 8 + } + return buf +} + +func scale(b []byte) (s Scale) { + for j := 0; j < scaleSize; j++ { + s <<= 8 + s |= Scale(b[j]) + } + return +} + +// GobEncode implements the gob.GobEncoder interface. +func (x *Dec) GobEncode() ([]byte, error) { + buf, err := x.UnscaledBig().GobEncode() + if err != nil { + return nil, err + } + buf = append(append(buf, scaleBytes(x.Scale())...), decGobVersion) + return buf, nil +} + +// GobDecode implements the gob.GobDecoder interface. +func (z *Dec) GobDecode(buf []byte) error { + if len(buf) == 0 { + return fmt.Errorf("Dec.GobDecode: no data") + } + b := buf[len(buf)-1] + if b != decGobVersion { + return fmt.Errorf("Dec.GobDecode: encoding version %d not supported", b) + } + l := len(buf) - scaleSize - 1 + err := z.UnscaledBig().GobDecode(buf[:l]) + if err != nil { + return err + } + z.SetScale(scale(buf[l : l+scaleSize])) + return nil +} + +// MarshalText implements the encoding.TextMarshaler interface. +func (x *Dec) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface. +func (z *Dec) UnmarshalText(data []byte) error { + _, ok := z.SetString(string(data)) + if !ok { + return fmt.Errorf("invalid inf.Dec") + } + return nil +} diff --git a/vendor/gopkg.in/inf.v0/rounder.go b/vendor/gopkg.in/inf.v0/rounder.go new file mode 100644 index 0000000000..3a97ef529b --- /dev/null +++ b/vendor/gopkg.in/inf.v0/rounder.go @@ -0,0 +1,145 @@ +package inf + +import ( + "math/big" +) + +// Rounder represents a method for rounding the (possibly infinite decimal) +// result of a division to a finite Dec. It is used by Dec.Round() and +// Dec.Quo(). +// +// See the Example for results of using each Rounder with some sample values. +// +type Rounder rounder + +// See http://speleotrove.com/decimal/damodel.html#refround for more detailed +// definitions of these rounding modes. +var ( + RoundDown Rounder // towards 0 + RoundUp Rounder // away from 0 + RoundFloor Rounder // towards -infinity + RoundCeil Rounder // towards +infinity + RoundHalfDown Rounder // to nearest; towards 0 if same distance + RoundHalfUp Rounder // to nearest; away from 0 if same distance + RoundHalfEven Rounder // to nearest; even last digit if same distance +) + +// RoundExact is to be used in the case when rounding is not necessary. +// When used with Quo or Round, it returns the result verbatim when it can be +// expressed exactly with the given precision, and it returns nil otherwise. +// QuoExact is a shorthand for using Quo with RoundExact. +var RoundExact Rounder + +type rounder interface { + + // When UseRemainder() returns true, the Round() method is passed the + // remainder of the division, expressed as the numerator and denominator of + // a rational. + UseRemainder() bool + + // Round sets the rounded value of a quotient to z, and returns z. + // quo is rounded down (truncated towards zero) to the scale obtained from + // the Scaler in Quo(). + // + // When the remainder is not used, remNum and remDen are nil. + // When used, the remainder is normalized between -1 and 1; that is: + // + // -|remDen| < remNum < |remDen| + // + // remDen has the same sign as y, and remNum is zero or has the same sign + // as x. + Round(z, quo *Dec, remNum, remDen *big.Int) *Dec +} + +type rndr struct { + useRem bool + round func(z, quo *Dec, remNum, remDen *big.Int) *Dec +} + +func (r rndr) UseRemainder() bool { + return r.useRem +} + +func (r rndr) Round(z, quo *Dec, remNum, remDen *big.Int) *Dec { + return r.round(z, quo, remNum, remDen) +} + +var intSign = []*big.Int{big.NewInt(-1), big.NewInt(0), big.NewInt(1)} + +func roundHalf(f func(c int, odd uint) (roundUp bool)) func(z, q *Dec, rA, rB *big.Int) *Dec { + return func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + brA, brB := rA.BitLen(), rB.BitLen() + if brA < brB-1 { + // brA < brB-1 => |rA| < |rB/2| + return z + } + roundUp := false + srA, srB := rA.Sign(), rB.Sign() + s := srA * srB + if brA == brB-1 { + rA2 := new(big.Int).Lsh(rA, 1) + if s < 0 { + rA2.Neg(rA2) + } + roundUp = f(rA2.Cmp(rB)*srB, z.UnscaledBig().Bit(0)) + } else { + // brA > brB-1 => |rA| > |rB/2| + roundUp = true + } + if roundUp { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[s+1]) + } + return z + } +} + +func init() { + RoundExact = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + if rA.Sign() != 0 { + return nil + } + return z.Set(q) + }} + RoundDown = rndr{false, + func(z, q *Dec, rA, rB *big.Int) *Dec { + return z.Set(q) + }} + RoundUp = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign() != 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[rA.Sign()*rB.Sign()+1]) + } + return z + }} + RoundFloor = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign()*rB.Sign() < 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[0]) + } + return z + }} + RoundCeil = rndr{true, + func(z, q *Dec, rA, rB *big.Int) *Dec { + z.Set(q) + if rA.Sign()*rB.Sign() > 0 { + z.UnscaledBig().Add(z.UnscaledBig(), intSign[2]) + } + return z + }} + RoundHalfDown = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c > 0 + })} + RoundHalfUp = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c >= 0 + })} + RoundHalfEven = rndr{true, roundHalf( + func(c int, odd uint) bool { + return c > 0 || c == 0 && odd == 1 + })} +} diff --git a/vendor/k8s.io/client-go/1.5/LICENSE b/vendor/k8s.io/client-go/1.5/LICENSE new file mode 100644 index 0000000000..00b2401109 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2014 The Kubernetes Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/k8s.io/client-go/1.5/discovery/discovery_client.go b/vendor/k8s.io/client-go/1.5/discovery/discovery_client.go new file mode 100644 index 0000000000..11ebae16b0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/discovery/discovery_client.go @@ -0,0 +1,345 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "encoding/json" + "fmt" + "net/url" + "sort" + "strings" + + "github.com/emicklei/go-restful/swagger" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer" + "k8s.io/client-go/1.5/pkg/version" + "k8s.io/client-go/1.5/rest" +) + +// DiscoveryInterface holds the methods that discover server-supported API groups, +// versions and resources. +type DiscoveryInterface interface { + ServerGroupsInterface + ServerResourcesInterface + ServerVersionInterface + SwaggerSchemaInterface +} + +// ServerGroupsInterface has methods for obtaining supported groups on the API server +type ServerGroupsInterface interface { + // ServerGroups returns the supported groups, with information like supported versions and the + // preferred version. + ServerGroups() (*unversioned.APIGroupList, error) +} + +// ServerResourcesInterface has methods for obtaining supported resources on the API server +type ServerResourcesInterface interface { + // ServerResourcesForGroupVersion returns the supported resources for a group and version. + ServerResourcesForGroupVersion(groupVersion string) (*unversioned.APIResourceList, error) + // ServerResources returns the supported resources for all groups and versions. + ServerResources() (map[string]*unversioned.APIResourceList, error) + // ServerPreferredResources returns the supported resources with the version preferred by the + // server. + ServerPreferredResources() ([]unversioned.GroupVersionResource, error) + // ServerPreferredNamespacedResources returns the supported namespaced resources with the + // version preferred by the server. + ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) +} + +// ServerVersionInterface has a method for retrieving the server's version. +type ServerVersionInterface interface { + // ServerVersion retrieves and parses the server's version (git version). + ServerVersion() (*version.Info, error) +} + +// SwaggerSchemaInterface has a method to retrieve the swagger schema. +type SwaggerSchemaInterface interface { + // SwaggerSchema retrieves and parses the swagger API schema the server supports. + SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) +} + +// DiscoveryClient implements the functions that discover server-supported API groups, +// versions and resources. +type DiscoveryClient struct { + *rest.RESTClient + + LegacyPrefix string +} + +// Convert unversioned.APIVersions to unversioned.APIGroup. APIVersions is used by legacy v1, so +// group would be "". +func apiVersionsToAPIGroup(apiVersions *unversioned.APIVersions) (apiGroup unversioned.APIGroup) { + groupVersions := []unversioned.GroupVersionForDiscovery{} + for _, version := range apiVersions.Versions { + groupVersion := unversioned.GroupVersionForDiscovery{ + GroupVersion: version, + Version: version, + } + groupVersions = append(groupVersions, groupVersion) + } + apiGroup.Versions = groupVersions + // There should be only one groupVersion returned at /api + apiGroup.PreferredVersion = groupVersions[0] + return +} + +// ServerGroups returns the supported groups, with information like supported versions and the +// preferred version. +func (d *DiscoveryClient) ServerGroups() (apiGroupList *unversioned.APIGroupList, err error) { + // Get the groupVersions exposed at /api + v := &unversioned.APIVersions{} + err = d.Get().AbsPath(d.LegacyPrefix).Do().Into(v) + apiGroup := unversioned.APIGroup{} + if err == nil { + apiGroup = apiVersionsToAPIGroup(v) + } + if err != nil && !errors.IsNotFound(err) && !errors.IsForbidden(err) { + return nil, err + } + + // Get the groupVersions exposed at /apis + apiGroupList = &unversioned.APIGroupList{} + err = d.Get().AbsPath("/apis").Do().Into(apiGroupList) + if err != nil && !errors.IsNotFound(err) && !errors.IsForbidden(err) { + return nil, err + } + // to be compatible with a v1.0 server, if it's a 403 or 404, ignore and return whatever we got from /api + if err != nil && (errors.IsNotFound(err) || errors.IsForbidden(err)) { + apiGroupList = &unversioned.APIGroupList{} + } + + // append the group retrieved from /api to the list + apiGroupList.Groups = append(apiGroupList.Groups, apiGroup) + return apiGroupList, nil +} + +// ServerResourcesForGroupVersion returns the supported resources for a group and version. +func (d *DiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (resources *unversioned.APIResourceList, err error) { + url := url.URL{} + if len(groupVersion) == 0 { + return nil, fmt.Errorf("groupVersion shouldn't be empty") + } + if len(d.LegacyPrefix) > 0 && groupVersion == "v1" { + url.Path = d.LegacyPrefix + "/" + groupVersion + } else { + url.Path = "/apis/" + groupVersion + } + resources = &unversioned.APIResourceList{} + err = d.Get().AbsPath(url.String()).Do().Into(resources) + if err != nil { + // ignore 403 or 404 error to be compatible with an v1.0 server. + if groupVersion == "v1" && (errors.IsNotFound(err) || errors.IsForbidden(err)) { + return resources, nil + } + return nil, err + } + return resources, nil +} + +// ServerResources returns the supported resources for all groups and versions. +func (d *DiscoveryClient) ServerResources() (map[string]*unversioned.APIResourceList, error) { + apiGroups, err := d.ServerGroups() + if err != nil { + return nil, err + } + groupVersions := unversioned.ExtractGroupVersions(apiGroups) + result := map[string]*unversioned.APIResourceList{} + for _, groupVersion := range groupVersions { + resources, err := d.ServerResourcesForGroupVersion(groupVersion) + if err != nil { + return nil, err + } + result[groupVersion] = resources + } + return result, nil +} + +// ErrGroupDiscoveryFailed is returned if one or more API groups fail to load. +type ErrGroupDiscoveryFailed struct { + // Groups is a list of the groups that failed to load and the error cause + Groups map[unversioned.GroupVersion]error +} + +// Error implements the error interface +func (e *ErrGroupDiscoveryFailed) Error() string { + var groups []string + for k, v := range e.Groups { + groups = append(groups, fmt.Sprintf("%s: %v", k, v)) + } + sort.Strings(groups) + return fmt.Sprintf("unable to retrieve the complete list of server APIs: %s", strings.Join(groups, ", ")) +} + +// IsGroupDiscoveryFailedError returns true if the provided error indicates the server was unable to discover +// a complete list of APIs for the client to use. +func IsGroupDiscoveryFailedError(err error) bool { + _, ok := err.(*ErrGroupDiscoveryFailed) + return err != nil && ok +} + +// serverPreferredResources returns the supported resources with the version preferred by the +// server. If namespaced is true, only namespaced resources will be returned. +func (d *DiscoveryClient) serverPreferredResources(namespaced bool) ([]unversioned.GroupVersionResource, error) { + results := []unversioned.GroupVersionResource{} + serverGroupList, err := d.ServerGroups() + if err != nil { + return results, err + } + + var failedGroups map[unversioned.GroupVersion]error + for _, apiGroup := range serverGroupList.Groups { + preferredVersion := apiGroup.PreferredVersion + groupVersion := unversioned.GroupVersion{Group: apiGroup.Name, Version: preferredVersion.Version} + apiResourceList, err := d.ServerResourcesForGroupVersion(preferredVersion.GroupVersion) + if err != nil { + if failedGroups == nil { + failedGroups = make(map[unversioned.GroupVersion]error) + } + failedGroups[groupVersion] = err + continue + } + for _, apiResource := range apiResourceList.APIResources { + // ignore the root scoped resources if "namespaced" is true. + if namespaced && !apiResource.Namespaced { + continue + } + if strings.Contains(apiResource.Name, "/") { + continue + } + results = append(results, groupVersion.WithResource(apiResource.Name)) + } + } + if len(failedGroups) > 0 { + return results, &ErrGroupDiscoveryFailed{Groups: failedGroups} + } + return results, nil +} + +// ServerPreferredResources returns the supported resources with the version preferred by the +// server. +func (d *DiscoveryClient) ServerPreferredResources() ([]unversioned.GroupVersionResource, error) { + return d.serverPreferredResources(false) +} + +// ServerPreferredNamespacedResources returns the supported namespaced resources with the +// version preferred by the server. +func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) { + return d.serverPreferredResources(true) +} + +// ServerVersion retrieves and parses the server's version (git version). +func (d *DiscoveryClient) ServerVersion() (*version.Info, error) { + body, err := d.Get().AbsPath("/version").Do().Raw() + if err != nil { + return nil, err + } + var info version.Info + err = json.Unmarshal(body, &info) + if err != nil { + return nil, fmt.Errorf("got '%s': %v", string(body), err) + } + return &info, nil +} + +// SwaggerSchema retrieves and parses the swagger API schema the server supports. +func (d *DiscoveryClient) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) { + if version.Empty() { + return nil, fmt.Errorf("groupVersion cannot be empty") + } + + groupList, err := d.ServerGroups() + if err != nil { + return nil, err + } + groupVersions := unversioned.ExtractGroupVersions(groupList) + // This check also takes care the case that kubectl is newer than the running endpoint + if stringDoesntExistIn(version.String(), groupVersions) { + return nil, fmt.Errorf("API version: %v is not supported by the server. Use one of: %v", version, groupVersions) + } + var path string + if len(d.LegacyPrefix) > 0 && version == v1.SchemeGroupVersion { + path = "/swaggerapi" + d.LegacyPrefix + "/" + version.Version + } else { + path = "/swaggerapi/apis/" + version.Group + "/" + version.Version + } + + body, err := d.Get().AbsPath(path).Do().Raw() + if err != nil { + return nil, err + } + var schema swagger.ApiDeclaration + err = json.Unmarshal(body, &schema) + if err != nil { + return nil, fmt.Errorf("got '%s': %v", string(body), err) + } + return &schema, nil +} + +func setDiscoveryDefaults(config *rest.Config) error { + config.APIPath = "" + config.GroupVersion = nil + codec := runtime.NoopEncoder{Decoder: api.Codecs.UniversalDecoder()} + config.NegotiatedSerializer = serializer.NegotiatedSerializerWrapper( + runtime.SerializerInfo{Serializer: codec}, + runtime.StreamSerializerInfo{}, + ) + if len(config.UserAgent) == 0 { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + return nil +} + +// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. This client +// can be used to discover supported resources in the API server. +func NewDiscoveryClientForConfig(c *rest.Config) (*DiscoveryClient, error) { + config := *c + if err := setDiscoveryDefaults(&config); err != nil { + return nil, err + } + client, err := rest.UnversionedRESTClientFor(&config) + return &DiscoveryClient{RESTClient: client, LegacyPrefix: "/api"}, err +} + +// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. If +// there is an error, it panics. +func NewDiscoveryClientForConfigOrDie(c *rest.Config) *DiscoveryClient { + client, err := NewDiscoveryClientForConfig(c) + if err != nil { + panic(err) + } + return client + +} + +// New creates a new DiscoveryClient for the given RESTClient. +func NewDiscoveryClient(c *rest.RESTClient) *DiscoveryClient { + return &DiscoveryClient{RESTClient: c, LegacyPrefix: "/api"} +} + +func stringDoesntExistIn(str string, slice []string) bool { + for _, s := range slice { + if s == str { + return false + } + } + return true +} diff --git a/vendor/k8s.io/client-go/1.5/discovery/restmapper.go b/vendor/k8s.io/client-go/1.5/discovery/restmapper.go new file mode 100644 index 0000000000..81dc905f4c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/discovery/restmapper.go @@ -0,0 +1,272 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "fmt" + "sync" + + "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// APIGroupResources is an API group with a mapping of versions to +// resources. +type APIGroupResources struct { + Group unversioned.APIGroup + // A mapping of version string to a slice of APIResources for + // that version. + VersionedResources map[string][]unversioned.APIResource +} + +// NewRESTMapper returns a PriorityRESTMapper based on the discovered +// groups and resourced passed in. +func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.VersionInterfacesFunc) meta.RESTMapper { + unionMapper := meta.MultiRESTMapper{} + + var groupPriority []string + var resourcePriority []unversioned.GroupVersionResource + var kindPriority []unversioned.GroupVersionKind + + for _, group := range groupResources { + groupPriority = append(groupPriority, group.Group.Name) + + if len(group.Group.PreferredVersion.Version) != 0 { + preffered := group.Group.PreferredVersion.Version + if _, ok := group.VersionedResources[preffered]; ok { + resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{ + Group: group.Group.Name, + Version: group.Group.PreferredVersion.Version, + Resource: meta.AnyResource, + }) + + kindPriority = append(kindPriority, unversioned.GroupVersionKind{ + Group: group.Group.Name, + Version: group.Group.PreferredVersion.Version, + Kind: meta.AnyKind, + }) + } + } + + for _, discoveryVersion := range group.Group.Versions { + resources, ok := group.VersionedResources[discoveryVersion.Version] + if !ok { + continue + } + + gv := unversioned.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + versionMapper := meta.NewDefaultRESTMapper([]unversioned.GroupVersion{gv}, versionInterfaces) + + for _, resource := range resources { + scope := meta.RESTScopeNamespace + if !resource.Namespaced { + scope = meta.RESTScopeRoot + } + versionMapper.Add(gv.WithKind(resource.Kind), scope) + // TODO only do this if it supports listing + versionMapper.Add(gv.WithKind(resource.Kind+"List"), scope) + } + // TODO why is this type not in discovery (at least for "v1") + versionMapper.Add(gv.WithKind("List"), meta.RESTScopeRoot) + unionMapper = append(unionMapper, versionMapper) + } + } + + for _, group := range groupPriority { + resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{ + Group: group, + Version: meta.AnyVersion, + Resource: meta.AnyResource, + }) + kindPriority = append(kindPriority, unversioned.GroupVersionKind{ + Group: group, + Version: meta.AnyVersion, + Kind: meta.AnyKind, + }) + } + + return meta.PriorityRESTMapper{ + Delegate: unionMapper, + ResourcePriority: resourcePriority, + KindPriority: kindPriority, + } +} + +// GetAPIGroupResources uses the provided discovery client to gather +// discovery information and populate a slice of APIGroupResources. +func GetAPIGroupResources(cl DiscoveryInterface) ([]*APIGroupResources, error) { + apiGroups, err := cl.ServerGroups() + if err != nil { + return nil, err + } + var result []*APIGroupResources + for _, group := range apiGroups.Groups { + groupResources := &APIGroupResources{ + Group: group, + VersionedResources: make(map[string][]unversioned.APIResource), + } + for _, version := range group.Versions { + resources, err := cl.ServerResourcesForGroupVersion(version.GroupVersion) + if err != nil { + if errors.IsNotFound(err) { + continue // ignore as this can race with deletion of 3rd party APIs + } + return nil, err + } + groupResources.VersionedResources[version.Version] = resources.APIResources + } + result = append(result, groupResources) + } + return result, nil +} + +// DeferredDiscoveryRESTMapper is a RESTMapper that will defer +// initialization of the RESTMapper until the first mapping is +// requested. +type DeferredDiscoveryRESTMapper struct { + initMu sync.Mutex + delegate meta.RESTMapper + cl DiscoveryInterface + versionInterface meta.VersionInterfacesFunc +} + +// NewDeferredDiscoveryRESTMapper returns a +// DeferredDiscoveryRESTMapper that will lazily query the provided +// client for discovery information to do REST mappings. +func NewDeferredDiscoveryRESTMapper(cl DiscoveryInterface, versionInterface meta.VersionInterfacesFunc) *DeferredDiscoveryRESTMapper { + return &DeferredDiscoveryRESTMapper{ + cl: cl, + versionInterface: versionInterface, + } +} + +func (d *DeferredDiscoveryRESTMapper) getDelegate() (meta.RESTMapper, error) { + d.initMu.Lock() + defer d.initMu.Unlock() + + if d.delegate != nil { + return d.delegate, nil + } + + groupResources, err := GetAPIGroupResources(d.cl) + if err != nil { + return nil, err + } + + d.delegate = NewRESTMapper(groupResources, d.versionInterface) + return d.delegate, err +} + +// Reset resets the internally cached Discovery information and will +// cause the next mapping request to re-discover. +func (d *DeferredDiscoveryRESTMapper) Reset() { + d.initMu.Lock() + d.delegate = nil + d.initMu.Unlock() +} + +// KindFor takes a partial resource and returns back the single match. +// It returns an error if there are multiple matches. +func (d *DeferredDiscoveryRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { + del, err := d.getDelegate() + if err != nil { + return unversioned.GroupVersionKind{}, err + } + return del.KindFor(resource) +} + +// KindsFor takes a partial resource and returns back the list of +// potential kinds in priority order. +func (d *DeferredDiscoveryRESTMapper) KindsFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + return del.KindsFor(resource) +} + +// ResourceFor takes a partial resource and returns back the single +// match. It returns an error if there are multiple matches. +func (d *DeferredDiscoveryRESTMapper) ResourceFor(input unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { + del, err := d.getDelegate() + if err != nil { + return unversioned.GroupVersionResource{}, err + } + return del.ResourceFor(input) +} + +// ResourcesFor takes a partial resource and returns back the list of +// potential resource in priority order. +func (d *DeferredDiscoveryRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + return del.ResourcesFor(input) +} + +// RESTMapping identifies a preferred resource mapping for the +// provided group kind. +func (d *DeferredDiscoveryRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*meta.RESTMapping, error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + return del.RESTMapping(gk, versions...) +} + +// RESTMappings returns the RESTMappings for the provided group kind +// in a rough internal preferred order. If no kind is found, it will +// return a NoResourceMatchError. +func (d *DeferredDiscoveryRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*meta.RESTMapping, error) { + del, err := d.getDelegate() + if err != nil { + return nil, err + } + return del.RESTMappings(gk) +} + +// AliasesForResource returns whether a resource has an alias or not. +func (d *DeferredDiscoveryRESTMapper) AliasesForResource(resource string) ([]string, bool) { + del, err := d.getDelegate() + if err != nil { + return nil, false + } + return del.AliasesForResource(resource) +} + +// ResourceSingularizer converts a resource name from plural to +// singular (e.g., from pods to pod). +func (d *DeferredDiscoveryRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + del, err := d.getDelegate() + if err != nil { + return resource, err + } + return del.ResourceSingularizer(resource) +} + +func (d *DeferredDiscoveryRESTMapper) String() string { + del, err := d.getDelegate() + if err != nil { + return fmt.Sprintf("DeferredDiscoveryRESTMapper{%v}", err) + } + return fmt.Sprintf("DeferredDiscoveryRESTMapper{\n\t%v\n}", del) +} + +// Make sure it satisfies the interface +var _ meta.RESTMapper = &DeferredDiscoveryRESTMapper{} diff --git a/vendor/k8s.io/client-go/1.5/discovery/unstructured.go b/vendor/k8s.io/client-go/1.5/discovery/unstructured.go new file mode 100644 index 0000000000..cb80508238 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/discovery/unstructured.go @@ -0,0 +1,95 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package discovery + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// UnstructuredObjectTyper provides a runtime.ObjectTyper implmentation for +// runtime.Unstructured object based on discovery information. +type UnstructuredObjectTyper struct { + registered map[unversioned.GroupVersionKind]bool +} + +// NewUnstructuredObjectTyper returns a runtime.ObjectTyper for +// unstructred objects based on discovery information. +func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *UnstructuredObjectTyper { + dot := &UnstructuredObjectTyper{registered: make(map[unversioned.GroupVersionKind]bool)} + for _, group := range groupResources { + for _, discoveryVersion := range group.Group.Versions { + resources, ok := group.VersionedResources[discoveryVersion.Version] + if !ok { + continue + } + + gv := unversioned.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + for _, resource := range resources { + dot.registered[gv.WithKind(resource.Kind)] = true + } + } + } + return dot +} + +// ObjectKind returns the group,version,kind of the provided object, or an error +// if the object in not *runtime.Unstructured or has no group,version,kind +// information. +func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (unversioned.GroupVersionKind, error) { + if _, ok := obj.(*runtime.Unstructured); !ok { + return unversioned.GroupVersionKind{}, fmt.Errorf("type %T is invalid for dynamic object typer", obj) + } + + return obj.GetObjectKind().GroupVersionKind(), nil +} + +// ObjectKinds returns a slice of one element with the group,version,kind of the +// provided object, or an error if the object is not *runtime.Unstructured or +// has no group,version,kind information. unversionedType will always be false +// because runtime.Unstructured object should always have group,version,kind +// information set. +func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []unversioned.GroupVersionKind, unversionedType bool, err error) { + gvk, err := d.ObjectKind(obj) + if err != nil { + return nil, false, err + } + + return []unversioned.GroupVersionKind{gvk}, false, nil +} + +// Recognizes returns true if the provided group,version,kind was in the +// discovery information. +func (d *UnstructuredObjectTyper) Recognizes(gvk unversioned.GroupVersionKind) bool { + return d.registered[gvk] +} + +// IsUnversioned returns false always because *runtime.Unstructured objects +// should always have group,version,kind information set. ok will be true if the +// object's group,version,kind is registered. +func (d *UnstructuredObjectTyper) IsUnversioned(obj runtime.Object) (unversioned bool, ok bool) { + gvk, err := d.ObjectKind(obj) + if err != nil { + return false, false + } + + return false, d.registered[gvk] +} + +var _ runtime.ObjectTyper = &UnstructuredObjectTyper{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/clientset.go b/vendor/k8s.io/client-go/1.5/kubernetes/clientset.go new file mode 100644 index 0000000000..35df6df632 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/clientset.go @@ -0,0 +1,261 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubernetes + +import ( + "github.com/golang/glog" + discovery "k8s.io/client-go/1.5/discovery" + v1alpha1apps "k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1" + v1beta1authentication "k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1" + v1beta1authorization "k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1" + v1autoscaling "k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1" + v1batch "k8s.io/client-go/1.5/kubernetes/typed/batch/v1" + v1alpha1certificates "k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1" + v1core "k8s.io/client-go/1.5/kubernetes/typed/core/v1" + v1beta1extensions "k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1" + v1alpha1policy "k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1" + v1alpha1rbac "k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1" + v1beta1storage "k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1" + "k8s.io/client-go/1.5/pkg/util/flowcontrol" + _ "k8s.io/client-go/1.5/plugin/pkg/client/auth" + rest "k8s.io/client-go/1.5/rest" +) + +type Interface interface { + Discovery() discovery.DiscoveryInterface + Core() v1core.CoreInterface + Apps() v1alpha1apps.AppsInterface + Authentication() v1beta1authentication.AuthenticationInterface + Authorization() v1beta1authorization.AuthorizationInterface + Autoscaling() v1autoscaling.AutoscalingInterface + Batch() v1batch.BatchInterface + Certificates() v1alpha1certificates.CertificatesInterface + Extensions() v1beta1extensions.ExtensionsInterface + Policy() v1alpha1policy.PolicyInterface + Rbac() v1alpha1rbac.RbacInterface + Storage() v1beta1storage.StorageInterface +} + +// Clientset contains the clients for groups. Each group has exactly one +// version included in a Clientset. +type Clientset struct { + *discovery.DiscoveryClient + *v1core.CoreClient + *v1alpha1apps.AppsClient + *v1beta1authentication.AuthenticationClient + *v1beta1authorization.AuthorizationClient + *v1autoscaling.AutoscalingClient + *v1batch.BatchClient + *v1alpha1certificates.CertificatesClient + *v1beta1extensions.ExtensionsClient + *v1alpha1policy.PolicyClient + *v1alpha1rbac.RbacClient + *v1beta1storage.StorageClient +} + +// Core retrieves the CoreClient +func (c *Clientset) Core() v1core.CoreInterface { + if c == nil { + return nil + } + return c.CoreClient +} + +// Apps retrieves the AppsClient +func (c *Clientset) Apps() v1alpha1apps.AppsInterface { + if c == nil { + return nil + } + return c.AppsClient +} + +// Authentication retrieves the AuthenticationClient +func (c *Clientset) Authentication() v1beta1authentication.AuthenticationInterface { + if c == nil { + return nil + } + return c.AuthenticationClient +} + +// Authorization retrieves the AuthorizationClient +func (c *Clientset) Authorization() v1beta1authorization.AuthorizationInterface { + if c == nil { + return nil + } + return c.AuthorizationClient +} + +// Autoscaling retrieves the AutoscalingClient +func (c *Clientset) Autoscaling() v1autoscaling.AutoscalingInterface { + if c == nil { + return nil + } + return c.AutoscalingClient +} + +// Batch retrieves the BatchClient +func (c *Clientset) Batch() v1batch.BatchInterface { + if c == nil { + return nil + } + return c.BatchClient +} + +// Certificates retrieves the CertificatesClient +func (c *Clientset) Certificates() v1alpha1certificates.CertificatesInterface { + if c == nil { + return nil + } + return c.CertificatesClient +} + +// Extensions retrieves the ExtensionsClient +func (c *Clientset) Extensions() v1beta1extensions.ExtensionsInterface { + if c == nil { + return nil + } + return c.ExtensionsClient +} + +// Policy retrieves the PolicyClient +func (c *Clientset) Policy() v1alpha1policy.PolicyInterface { + if c == nil { + return nil + } + return c.PolicyClient +} + +// Rbac retrieves the RbacClient +func (c *Clientset) Rbac() v1alpha1rbac.RbacInterface { + if c == nil { + return nil + } + return c.RbacClient +} + +// Storage retrieves the StorageClient +func (c *Clientset) Storage() v1beta1storage.StorageInterface { + if c == nil { + return nil + } + return c.StorageClient +} + +// Discovery retrieves the DiscoveryClient +func (c *Clientset) Discovery() discovery.DiscoveryInterface { + return c.DiscoveryClient +} + +// NewForConfig creates a new Clientset for the given config. +func NewForConfig(c *rest.Config) (*Clientset, error) { + configShallowCopy := *c + if configShallowCopy.RateLimiter == nil && configShallowCopy.QPS > 0 { + configShallowCopy.RateLimiter = flowcontrol.NewTokenBucketRateLimiter(configShallowCopy.QPS, configShallowCopy.Burst) + } + var clientset Clientset + var err error + clientset.CoreClient, err = v1core.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.AppsClient, err = v1alpha1apps.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.AuthenticationClient, err = v1beta1authentication.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.AuthorizationClient, err = v1beta1authorization.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.AutoscalingClient, err = v1autoscaling.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.BatchClient, err = v1batch.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.CertificatesClient, err = v1alpha1certificates.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.ExtensionsClient, err = v1beta1extensions.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.PolicyClient, err = v1alpha1policy.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.RbacClient, err = v1alpha1rbac.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + clientset.StorageClient, err = v1beta1storage.NewForConfig(&configShallowCopy) + if err != nil { + return nil, err + } + + clientset.DiscoveryClient, err = discovery.NewDiscoveryClientForConfig(&configShallowCopy) + if err != nil { + glog.Errorf("failed to create the DiscoveryClient: %v", err) + return nil, err + } + return &clientset, nil +} + +// NewForConfigOrDie creates a new Clientset for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *Clientset { + var clientset Clientset + clientset.CoreClient = v1core.NewForConfigOrDie(c) + clientset.AppsClient = v1alpha1apps.NewForConfigOrDie(c) + clientset.AuthenticationClient = v1beta1authentication.NewForConfigOrDie(c) + clientset.AuthorizationClient = v1beta1authorization.NewForConfigOrDie(c) + clientset.AutoscalingClient = v1autoscaling.NewForConfigOrDie(c) + clientset.BatchClient = v1batch.NewForConfigOrDie(c) + clientset.CertificatesClient = v1alpha1certificates.NewForConfigOrDie(c) + clientset.ExtensionsClient = v1beta1extensions.NewForConfigOrDie(c) + clientset.PolicyClient = v1alpha1policy.NewForConfigOrDie(c) + clientset.RbacClient = v1alpha1rbac.NewForConfigOrDie(c) + clientset.StorageClient = v1beta1storage.NewForConfigOrDie(c) + + clientset.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c) + return &clientset +} + +// New creates a new Clientset for the given RESTClient. +func New(c *rest.RESTClient) *Clientset { + var clientset Clientset + clientset.CoreClient = v1core.New(c) + clientset.AppsClient = v1alpha1apps.New(c) + clientset.AuthenticationClient = v1beta1authentication.New(c) + clientset.AuthorizationClient = v1beta1authorization.New(c) + clientset.AutoscalingClient = v1autoscaling.New(c) + clientset.BatchClient = v1batch.New(c) + clientset.CertificatesClient = v1alpha1certificates.New(c) + clientset.ExtensionsClient = v1beta1extensions.New(c) + clientset.PolicyClient = v1alpha1policy.New(c) + clientset.RbacClient = v1alpha1rbac.New(c) + clientset.StorageClient = v1beta1storage.New(c) + + clientset.DiscoveryClient = discovery.NewDiscoveryClient(c) + return &clientset +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/doc.go new file mode 100644 index 0000000000..bd09a35631 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated clientset. +package kubernetes diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/import_known_versions.go b/vendor/k8s.io/client-go/1.5/kubernetes/import_known_versions.go new file mode 100644 index 0000000000..2a27c780f1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/import_known_versions.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package kubernetes + +// These imports are the API groups the client will support. +import ( + "fmt" + + _ "k8s.io/client-go/1.5/pkg/api/install" + "k8s.io/client-go/1.5/pkg/apimachinery/registered" + _ "k8s.io/client-go/1.5/pkg/apis/apps/install" + _ "k8s.io/client-go/1.5/pkg/apis/authentication/install" + _ "k8s.io/client-go/1.5/pkg/apis/authorization/install" + _ "k8s.io/client-go/1.5/pkg/apis/autoscaling/install" + _ "k8s.io/client-go/1.5/pkg/apis/batch/install" + _ "k8s.io/client-go/1.5/pkg/apis/certificates/install" + _ "k8s.io/client-go/1.5/pkg/apis/extensions/install" + _ "k8s.io/client-go/1.5/pkg/apis/policy/install" + _ "k8s.io/client-go/1.5/pkg/apis/rbac/install" + _ "k8s.io/client-go/1.5/pkg/apis/storage/install" +) + +func init() { + if missingVersions := registered.ValidateEnvRequestedVersions(); len(missingVersions) != 0 { + panic(fmt.Sprintf("KUBE_API_VERSIONS contains versions that are not installed: %q.", missingVersions)) + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/apps_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/apps_client.go new file mode 100644 index 0000000000..6c792d936b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/apps_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type AppsInterface interface { + GetRESTClient() *rest.RESTClient + PetSetsGetter +} + +// AppsClient is used to interact with features provided by the Apps group. +type AppsClient struct { + *rest.RESTClient +} + +func (c *AppsClient) PetSets(namespace string) PetSetInterface { + return newPetSets(c, namespace) +} + +// NewForConfig creates a new AppsClient for the given config. +func NewForConfig(c *rest.Config) (*AppsClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AppsClient{client}, nil +} + +// NewForConfigOrDie creates a new AppsClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AppsClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AppsClient for the given RESTClient. +func New(c *rest.RESTClient) *AppsClient { + return &AppsClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if apps group is not registered, return an error + g, err := registered.Group("apps") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AppsClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/doc.go new file mode 100644 index 0000000000..0c1ca41fac --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/generated_expansion.go new file mode 100644 index 0000000000..439a241b04 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type PetSetExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/petset.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/petset.go new file mode 100644 index 0000000000..611c68dc6e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1/petset.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PetSetsGetter has a method to return a PetSetInterface. +// A group's client should implement this interface. +type PetSetsGetter interface { + PetSets(namespace string) PetSetInterface +} + +// PetSetInterface has methods to work with PetSet resources. +type PetSetInterface interface { + Create(*v1alpha1.PetSet) (*v1alpha1.PetSet, error) + Update(*v1alpha1.PetSet) (*v1alpha1.PetSet, error) + UpdateStatus(*v1alpha1.PetSet) (*v1alpha1.PetSet, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.PetSet, error) + List(opts api.ListOptions) (*v1alpha1.PetSetList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.PetSet, err error) + PetSetExpansion +} + +// petSets implements PetSetInterface +type petSets struct { + client *AppsClient + ns string +} + +// newPetSets returns a PetSets +func newPetSets(c *AppsClient, namespace string) *petSets { + return &petSets{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a petSet and creates it. Returns the server's representation of the petSet, and an error, if there is any. +func (c *petSets) Create(petSet *v1alpha1.PetSet) (result *v1alpha1.PetSet, err error) { + result = &v1alpha1.PetSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("petsets"). + Body(petSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a petSet and updates it. Returns the server's representation of the petSet, and an error, if there is any. +func (c *petSets) Update(petSet *v1alpha1.PetSet) (result *v1alpha1.PetSet, err error) { + result = &v1alpha1.PetSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("petsets"). + Name(petSet.Name). + Body(petSet). + Do(). + Into(result) + return +} + +func (c *petSets) UpdateStatus(petSet *v1alpha1.PetSet) (result *v1alpha1.PetSet, err error) { + result = &v1alpha1.PetSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("petsets"). + Name(petSet.Name). + SubResource("status"). + Body(petSet). + Do(). + Into(result) + return +} + +// Delete takes name of the petSet and deletes it. Returns an error if one occurs. +func (c *petSets) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("petsets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *petSets) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("petsets"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the petSet, and returns the corresponding petSet object, and an error if there is any. +func (c *petSets) Get(name string) (result *v1alpha1.PetSet, err error) { + result = &v1alpha1.PetSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("petsets"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PetSets that match those selectors. +func (c *petSets) List(opts api.ListOptions) (result *v1alpha1.PetSetList, err error) { + result = &v1alpha1.PetSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("petsets"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested petSets. +func (c *petSets) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("petsets"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched petSet. +func (c *petSets) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.PetSet, err error) { + result = &v1alpha1.PetSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("petsets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/authentication_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/authentication_client.go new file mode 100644 index 0000000000..878e92aa0c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/authentication_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type AuthenticationInterface interface { + GetRESTClient() *rest.RESTClient + TokenReviewsGetter +} + +// AuthenticationClient is used to interact with features provided by the Authentication group. +type AuthenticationClient struct { + *rest.RESTClient +} + +func (c *AuthenticationClient) TokenReviews() TokenReviewInterface { + return newTokenReviews(c) +} + +// NewForConfig creates a new AuthenticationClient for the given config. +func NewForConfig(c *rest.Config) (*AuthenticationClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthenticationClient{client}, nil +} + +// NewForConfigOrDie creates a new AuthenticationClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthenticationClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthenticationClient for the given RESTClient. +func New(c *rest.RESTClient) *AuthenticationClient { + return &AuthenticationClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if authentication group is not registered, return an error + g, err := registered.Group("authentication.k8s.io") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthenticationClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/doc.go new file mode 100644 index 0000000000..5616c95d32 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/generated_expansion.go new file mode 100644 index 0000000000..f307100297 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type TokenReviewExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/tokenreview.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/tokenreview.go new file mode 100644 index 0000000000..dc9313bae3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1/tokenreview.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// TokenReviewsGetter has a method to return a TokenReviewInterface. +// A group's client should implement this interface. +type TokenReviewsGetter interface { + TokenReviews() TokenReviewInterface +} + +// TokenReviewInterface has methods to work with TokenReview resources. +type TokenReviewInterface interface { + TokenReviewExpansion +} + +// tokenReviews implements TokenReviewInterface +type tokenReviews struct { + client *AuthenticationClient +} + +// newTokenReviews returns a TokenReviews +func newTokenReviews(c *AuthenticationClient) *tokenReviews { + return &tokenReviews{ + client: c, + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/authorization_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/authorization_client.go new file mode 100644 index 0000000000..9ec2290cbf --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/authorization_client.go @@ -0,0 +1,106 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type AuthorizationInterface interface { + GetRESTClient() *rest.RESTClient + LocalSubjectAccessReviewsGetter + SelfSubjectAccessReviewsGetter + SubjectAccessReviewsGetter +} + +// AuthorizationClient is used to interact with features provided by the Authorization group. +type AuthorizationClient struct { + *rest.RESTClient +} + +func (c *AuthorizationClient) LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface { + return newLocalSubjectAccessReviews(c, namespace) +} + +func (c *AuthorizationClient) SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface { + return newSelfSubjectAccessReviews(c) +} + +func (c *AuthorizationClient) SubjectAccessReviews() SubjectAccessReviewInterface { + return newSubjectAccessReviews(c) +} + +// NewForConfig creates a new AuthorizationClient for the given config. +func NewForConfig(c *rest.Config) (*AuthorizationClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AuthorizationClient{client}, nil +} + +// NewForConfigOrDie creates a new AuthorizationClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AuthorizationClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AuthorizationClient for the given RESTClient. +func New(c *rest.RESTClient) *AuthorizationClient { + return &AuthorizationClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if authorization group is not registered, return an error + g, err := registered.Group("authorization.k8s.io") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AuthorizationClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/doc.go new file mode 100644 index 0000000000..5616c95d32 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/generated_expansion.go new file mode 100644 index 0000000000..0e5d86e3a2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/generated_expansion.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type LocalSubjectAccessReviewExpansion interface{} + +type SelfSubjectAccessReviewExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go new file mode 100644 index 0000000000..c605b8d04d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/localsubjectaccessreview.go @@ -0,0 +1,42 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// LocalSubjectAccessReviewsGetter has a method to return a LocalSubjectAccessReviewInterface. +// A group's client should implement this interface. +type LocalSubjectAccessReviewsGetter interface { + LocalSubjectAccessReviews(namespace string) LocalSubjectAccessReviewInterface +} + +// LocalSubjectAccessReviewInterface has methods to work with LocalSubjectAccessReview resources. +type LocalSubjectAccessReviewInterface interface { + LocalSubjectAccessReviewExpansion +} + +// localSubjectAccessReviews implements LocalSubjectAccessReviewInterface +type localSubjectAccessReviews struct { + client *AuthorizationClient + ns string +} + +// newLocalSubjectAccessReviews returns a LocalSubjectAccessReviews +func newLocalSubjectAccessReviews(c *AuthorizationClient, namespace string) *localSubjectAccessReviews { + return &localSubjectAccessReviews{ + client: c, + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go new file mode 100644 index 0000000000..7e0fd5fc26 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/selfsubjectaccessreview.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// SelfSubjectAccessReviewsGetter has a method to return a SelfSubjectAccessReviewInterface. +// A group's client should implement this interface. +type SelfSubjectAccessReviewsGetter interface { + SelfSubjectAccessReviews() SelfSubjectAccessReviewInterface +} + +// SelfSubjectAccessReviewInterface has methods to work with SelfSubjectAccessReview resources. +type SelfSubjectAccessReviewInterface interface { + SelfSubjectAccessReviewExpansion +} + +// selfSubjectAccessReviews implements SelfSubjectAccessReviewInterface +type selfSubjectAccessReviews struct { + client *AuthorizationClient +} + +// newSelfSubjectAccessReviews returns a SelfSubjectAccessReviews +func newSelfSubjectAccessReviews(c *AuthorizationClient) *selfSubjectAccessReviews { + return &selfSubjectAccessReviews{ + client: c, + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go new file mode 100644 index 0000000000..1c93672185 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// SubjectAccessReviewsGetter has a method to return a SubjectAccessReviewInterface. +// A group's client should implement this interface. +type SubjectAccessReviewsGetter interface { + SubjectAccessReviews() SubjectAccessReviewInterface +} + +// SubjectAccessReviewInterface has methods to work with SubjectAccessReview resources. +type SubjectAccessReviewInterface interface { + SubjectAccessReviewExpansion +} + +// subjectAccessReviews implements SubjectAccessReviewInterface +type subjectAccessReviews struct { + client *AuthorizationClient +} + +// newSubjectAccessReviews returns a SubjectAccessReviews +func newSubjectAccessReviews(c *AuthorizationClient) *subjectAccessReviews { + return &subjectAccessReviews{ + client: c, + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go new file mode 100644 index 0000000000..788ac3db3b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1/subjectaccessreview_expansion.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + authorizationapi "k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1" +) + +// The SubjectAccessReviewExpansion interface allows manually adding extra methods to the AuthorizationInterface. +type SubjectAccessReviewExpansion interface { + Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) +} + +func (c *subjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { + result = &authorizationapi.SubjectAccessReview{} + err = c.client.Post(). + Resource("subjectaccessreviews"). + Body(sar). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/autoscaling_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/autoscaling_client.go new file mode 100644 index 0000000000..0dfd5d959e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/autoscaling_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type AutoscalingInterface interface { + GetRESTClient() *rest.RESTClient + HorizontalPodAutoscalersGetter +} + +// AutoscalingClient is used to interact with features provided by the Autoscaling group. +type AutoscalingClient struct { + *rest.RESTClient +} + +func (c *AutoscalingClient) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface { + return newHorizontalPodAutoscalers(c, namespace) +} + +// NewForConfig creates a new AutoscalingClient for the given config. +func NewForConfig(c *rest.Config) (*AutoscalingClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &AutoscalingClient{client}, nil +} + +// NewForConfigOrDie creates a new AutoscalingClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *AutoscalingClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new AutoscalingClient for the given RESTClient. +func New(c *rest.RESTClient) *AutoscalingClient { + return &AutoscalingClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if autoscaling group is not registered, return an error + g, err := registered.Group("autoscaling") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *AutoscalingClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/doc.go new file mode 100644 index 0000000000..fe27cf5c19 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/generated_expansion.go new file mode 100644 index 0000000000..3e37a64ef6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type HorizontalPodAutoscalerExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go new file mode 100644 index 0000000000..b28317919e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1/horizontalpodautoscaler.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/apis/autoscaling/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// HorizontalPodAutoscalersGetter has a method to return a HorizontalPodAutoscalerInterface. +// A group's client should implement this interface. +type HorizontalPodAutoscalersGetter interface { + HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface +} + +// HorizontalPodAutoscalerInterface has methods to work with HorizontalPodAutoscaler resources. +type HorizontalPodAutoscalerInterface interface { + Create(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + Update(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + UpdateStatus(*v1.HorizontalPodAutoscaler) (*v1.HorizontalPodAutoscaler, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.HorizontalPodAutoscaler, error) + List(opts api.ListOptions) (*v1.HorizontalPodAutoscalerList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) + HorizontalPodAutoscalerExpansion +} + +// horizontalPodAutoscalers implements HorizontalPodAutoscalerInterface +type horizontalPodAutoscalers struct { + client *AutoscalingClient + ns string +} + +// newHorizontalPodAutoscalers returns a HorizontalPodAutoscalers +func newHorizontalPodAutoscalers(c *AutoscalingClient, namespace string) *horizontalPodAutoscalers { + return &horizontalPodAutoscalers{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Create(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Post(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. +func (c *horizontalPodAutoscalers) Update(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +func (c *horizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Put(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(horizontalPodAutoscaler.Name). + SubResource("status"). + Body(horizontalPodAutoscaler). + Do(). + Into(result) + return +} + +// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. +func (c *horizontalPodAutoscalers) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *horizontalPodAutoscalers) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. +func (c *horizontalPodAutoscalers) Get(name string) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. +func (c *horizontalPodAutoscalers) List(opts api.ListOptions) (result *v1.HorizontalPodAutoscalerList, err error) { + result = &v1.HorizontalPodAutoscalerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. +func (c *horizontalPodAutoscalers) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched horizontalPodAutoscaler. +func (c *horizontalPodAutoscalers) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.HorizontalPodAutoscaler, err error) { + result = &v1.HorizontalPodAutoscaler{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("horizontalpodautoscalers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/batch_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/batch_client.go new file mode 100644 index 0000000000..084fa6a29d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/batch_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type BatchInterface interface { + GetRESTClient() *rest.RESTClient + JobsGetter +} + +// BatchClient is used to interact with features provided by the Batch group. +type BatchClient struct { + *rest.RESTClient +} + +func (c *BatchClient) Jobs(namespace string) JobInterface { + return newJobs(c, namespace) +} + +// NewForConfig creates a new BatchClient for the given config. +func NewForConfig(c *rest.Config) (*BatchClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &BatchClient{client}, nil +} + +// NewForConfigOrDie creates a new BatchClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *BatchClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new BatchClient for the given RESTClient. +func New(c *rest.RESTClient) *BatchClient { + return &BatchClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if batch group is not registered, return an error + g, err := registered.Group("batch") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *BatchClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/doc.go new file mode 100644 index 0000000000..fe27cf5c19 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/generated_expansion.go new file mode 100644 index 0000000000..b24faa3157 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type JobExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/job.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/job.go new file mode 100644 index 0000000000..c201bddc7c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/batch/v1/job.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/apis/batch/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// JobsGetter has a method to return a JobInterface. +// A group's client should implement this interface. +type JobsGetter interface { + Jobs(namespace string) JobInterface +} + +// JobInterface has methods to work with Job resources. +type JobInterface interface { + Create(*v1.Job) (*v1.Job, error) + Update(*v1.Job) (*v1.Job, error) + UpdateStatus(*v1.Job) (*v1.Job, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Job, error) + List(opts api.ListOptions) (*v1.JobList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) + JobExpansion +} + +// jobs implements JobInterface +type jobs struct { + client *BatchClient + ns string +} + +// newJobs returns a Jobs +func newJobs(c *BatchClient, namespace string) *jobs { + return &jobs{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a job and creates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Create(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Post(). + Namespace(c.ns). + Resource("jobs"). + Body(job). + Do(). + Into(result) + return +} + +// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Update(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + Body(job). + Do(). + Into(result) + return +} + +func (c *jobs) UpdateStatus(job *v1.Job) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + SubResource("status"). + Body(job). + Do(). + Into(result) + return +} + +// Delete takes name of the job and deletes it. Returns an error if one occurs. +func (c *jobs) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *jobs) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the job, and returns the corresponding job object, and an error if there is any. +func (c *jobs) Get(name string) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Jobs that match those selectors. +func (c *jobs) List(opts api.ListOptions) (result *v1.JobList, err error) { + result = &v1.JobList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested jobs. +func (c *jobs) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched job. +func (c *jobs) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Job, err error) { + result = &v1.Job{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("jobs"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificates_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificates_client.go new file mode 100644 index 0000000000..56c3d4a398 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificates_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type CertificatesInterface interface { + GetRESTClient() *rest.RESTClient + CertificateSigningRequestsGetter +} + +// CertificatesClient is used to interact with features provided by the Certificates group. +type CertificatesClient struct { + *rest.RESTClient +} + +func (c *CertificatesClient) CertificateSigningRequests() CertificateSigningRequestInterface { + return newCertificateSigningRequests(c) +} + +// NewForConfig creates a new CertificatesClient for the given config. +func NewForConfig(c *rest.Config) (*CertificatesClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CertificatesClient{client}, nil +} + +// NewForConfigOrDie creates a new CertificatesClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CertificatesClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CertificatesClient for the given RESTClient. +func New(c *rest.RESTClient) *CertificatesClient { + return &CertificatesClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if certificates group is not registered, return an error + g, err := registered.Group("certificates.k8s.io") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *CertificatesClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificatesigningrequest.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificatesigningrequest.go new file mode 100644 index 0000000000..07e6a04041 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/certificatesigningrequest.go @@ -0,0 +1,154 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// CertificateSigningRequestsGetter has a method to return a CertificateSigningRequestInterface. +// A group's client should implement this interface. +type CertificateSigningRequestsGetter interface { + CertificateSigningRequests() CertificateSigningRequestInterface +} + +// CertificateSigningRequestInterface has methods to work with CertificateSigningRequest resources. +type CertificateSigningRequestInterface interface { + Create(*v1alpha1.CertificateSigningRequest) (*v1alpha1.CertificateSigningRequest, error) + Update(*v1alpha1.CertificateSigningRequest) (*v1alpha1.CertificateSigningRequest, error) + UpdateStatus(*v1alpha1.CertificateSigningRequest) (*v1alpha1.CertificateSigningRequest, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.CertificateSigningRequest, error) + List(opts api.ListOptions) (*v1alpha1.CertificateSigningRequestList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.CertificateSigningRequest, err error) + CertificateSigningRequestExpansion +} + +// certificateSigningRequests implements CertificateSigningRequestInterface +type certificateSigningRequests struct { + client *CertificatesClient +} + +// newCertificateSigningRequests returns a CertificateSigningRequests +func newCertificateSigningRequests(c *CertificatesClient) *certificateSigningRequests { + return &certificateSigningRequests{ + client: c, + } +} + +// Create takes the representation of a certificateSigningRequest and creates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. +func (c *certificateSigningRequests) Create(certificateSigningRequest *v1alpha1.CertificateSigningRequest) (result *v1alpha1.CertificateSigningRequest, err error) { + result = &v1alpha1.CertificateSigningRequest{} + err = c.client.Post(). + Resource("certificatesigningrequests"). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. +func (c *certificateSigningRequests) Update(certificateSigningRequest *v1alpha1.CertificateSigningRequest) (result *v1alpha1.CertificateSigningRequest, err error) { + result = &v1alpha1.CertificateSigningRequest{} + err = c.client.Put(). + Resource("certificatesigningrequests"). + Name(certificateSigningRequest.Name). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +func (c *certificateSigningRequests) UpdateStatus(certificateSigningRequest *v1alpha1.CertificateSigningRequest) (result *v1alpha1.CertificateSigningRequest, err error) { + result = &v1alpha1.CertificateSigningRequest{} + err = c.client.Put(). + Resource("certificatesigningrequests"). + Name(certificateSigningRequest.Name). + SubResource("status"). + Body(certificateSigningRequest). + Do(). + Into(result) + return +} + +// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs. +func (c *certificateSigningRequests) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("certificatesigningrequests"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *certificateSigningRequests) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("certificatesigningrequests"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any. +func (c *certificateSigningRequests) Get(name string) (result *v1alpha1.CertificateSigningRequest, err error) { + result = &v1alpha1.CertificateSigningRequest{} + err = c.client.Get(). + Resource("certificatesigningrequests"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors. +func (c *certificateSigningRequests) List(opts api.ListOptions) (result *v1alpha1.CertificateSigningRequestList, err error) { + result = &v1alpha1.CertificateSigningRequestList{} + err = c.client.Get(). + Resource("certificatesigningrequests"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested certificateSigningRequests. +func (c *certificateSigningRequests) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("certificatesigningrequests"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched certificateSigningRequest. +func (c *certificateSigningRequests) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.CertificateSigningRequest, err error) { + result = &v1alpha1.CertificateSigningRequest{} + err = c.client.Patch(pt). + Resource("certificatesigningrequests"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/doc.go new file mode 100644 index 0000000000..0c1ca41fac --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/generated_expansion.go new file mode 100644 index 0000000000..1f67dc9d80 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type CertificateSigningRequestExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/componentstatus.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/componentstatus.go new file mode 100644 index 0000000000..bcdbbc34a3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/componentstatus.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ComponentStatusesGetter has a method to return a ComponentStatusInterface. +// A group's client should implement this interface. +type ComponentStatusesGetter interface { + ComponentStatuses() ComponentStatusInterface +} + +// ComponentStatusInterface has methods to work with ComponentStatus resources. +type ComponentStatusInterface interface { + Create(*v1.ComponentStatus) (*v1.ComponentStatus, error) + Update(*v1.ComponentStatus) (*v1.ComponentStatus, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.ComponentStatus, error) + List(opts api.ListOptions) (*v1.ComponentStatusList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) + ComponentStatusExpansion +} + +// componentStatuses implements ComponentStatusInterface +type componentStatuses struct { + client *CoreClient +} + +// newComponentStatuses returns a ComponentStatuses +func newComponentStatuses(c *CoreClient) *componentStatuses { + return &componentStatuses{ + client: c, + } +} + +// Create takes the representation of a componentStatus and creates it. Returns the server's representation of the componentStatus, and an error, if there is any. +func (c *componentStatuses) Create(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Post(). + Resource("componentstatuses"). + Body(componentStatus). + Do(). + Into(result) + return +} + +// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any. +func (c *componentStatuses) Update(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Put(). + Resource("componentstatuses"). + Name(componentStatus.Name). + Body(componentStatus). + Do(). + Into(result) + return +} + +// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs. +func (c *componentStatuses) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("componentstatuses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *componentStatuses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("componentstatuses"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any. +func (c *componentStatuses) Get(name string) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Get(). + Resource("componentstatuses"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors. +func (c *componentStatuses) List(opts api.ListOptions) (result *v1.ComponentStatusList, err error) { + result = &v1.ComponentStatusList{} + err = c.client.Get(). + Resource("componentstatuses"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested componentStatuses. +func (c *componentStatuses) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("componentstatuses"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched componentStatus. +func (c *componentStatuses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ComponentStatus, err error) { + result = &v1.ComponentStatus{} + err = c.client.Patch(pt). + Resource("componentstatuses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/configmap.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/configmap.go new file mode 100644 index 0000000000..5ede52bc4e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/configmap.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ConfigMapsGetter has a method to return a ConfigMapInterface. +// A group's client should implement this interface. +type ConfigMapsGetter interface { + ConfigMaps(namespace string) ConfigMapInterface +} + +// ConfigMapInterface has methods to work with ConfigMap resources. +type ConfigMapInterface interface { + Create(*v1.ConfigMap) (*v1.ConfigMap, error) + Update(*v1.ConfigMap) (*v1.ConfigMap, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.ConfigMap, error) + List(opts api.ListOptions) (*v1.ConfigMapList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) + ConfigMapExpansion +} + +// configMaps implements ConfigMapInterface +type configMaps struct { + client *CoreClient + ns string +} + +// newConfigMaps returns a ConfigMaps +func newConfigMaps(c *CoreClient, namespace string) *configMaps { + return &configMaps{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a configMap and creates it. Returns the server's representation of the configMap, and an error, if there is any. +func (c *configMaps) Create(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Post(). + Namespace(c.ns). + Resource("configmaps"). + Body(configMap). + Do(). + Into(result) + return +} + +// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any. +func (c *configMaps) Update(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Put(). + Namespace(c.ns). + Resource("configmaps"). + Name(configMap.Name). + Body(configMap). + Do(). + Into(result) + return +} + +// Delete takes name of the configMap and deletes it. Returns an error if one occurs. +func (c *configMaps) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("configmaps"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *configMaps) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any. +func (c *configMaps) Get(name string) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Get(). + Namespace(c.ns). + Resource("configmaps"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors. +func (c *configMaps) List(opts api.ListOptions) (result *v1.ConfigMapList, err error) { + result = &v1.ConfigMapList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested configMaps. +func (c *configMaps) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("configmaps"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched configMap. +func (c *configMaps) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ConfigMap, err error) { + result = &v1.ConfigMap{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("configmaps"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/core_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/core_client.go new file mode 100644 index 0000000000..e32979f230 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/core_client.go @@ -0,0 +1,171 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type CoreInterface interface { + GetRESTClient() *rest.RESTClient + ComponentStatusesGetter + ConfigMapsGetter + EndpointsGetter + EventsGetter + LimitRangesGetter + NamespacesGetter + NodesGetter + PersistentVolumesGetter + PersistentVolumeClaimsGetter + PodsGetter + PodTemplatesGetter + ReplicationControllersGetter + ResourceQuotasGetter + SecretsGetter + ServicesGetter + ServiceAccountsGetter +} + +// CoreClient is used to interact with features provided by the Core group. +type CoreClient struct { + *rest.RESTClient +} + +func (c *CoreClient) ComponentStatuses() ComponentStatusInterface { + return newComponentStatuses(c) +} + +func (c *CoreClient) ConfigMaps(namespace string) ConfigMapInterface { + return newConfigMaps(c, namespace) +} + +func (c *CoreClient) Endpoints(namespace string) EndpointsInterface { + return newEndpoints(c, namespace) +} + +func (c *CoreClient) Events(namespace string) EventInterface { + return newEvents(c, namespace) +} + +func (c *CoreClient) LimitRanges(namespace string) LimitRangeInterface { + return newLimitRanges(c, namespace) +} + +func (c *CoreClient) Namespaces() NamespaceInterface { + return newNamespaces(c) +} + +func (c *CoreClient) Nodes() NodeInterface { + return newNodes(c) +} + +func (c *CoreClient) PersistentVolumes() PersistentVolumeInterface { + return newPersistentVolumes(c) +} + +func (c *CoreClient) PersistentVolumeClaims(namespace string) PersistentVolumeClaimInterface { + return newPersistentVolumeClaims(c, namespace) +} + +func (c *CoreClient) Pods(namespace string) PodInterface { + return newPods(c, namespace) +} + +func (c *CoreClient) PodTemplates(namespace string) PodTemplateInterface { + return newPodTemplates(c, namespace) +} + +func (c *CoreClient) ReplicationControllers(namespace string) ReplicationControllerInterface { + return newReplicationControllers(c, namespace) +} + +func (c *CoreClient) ResourceQuotas(namespace string) ResourceQuotaInterface { + return newResourceQuotas(c, namespace) +} + +func (c *CoreClient) Secrets(namespace string) SecretInterface { + return newSecrets(c, namespace) +} + +func (c *CoreClient) Services(namespace string) ServiceInterface { + return newServices(c, namespace) +} + +func (c *CoreClient) ServiceAccounts(namespace string) ServiceAccountInterface { + return newServiceAccounts(c, namespace) +} + +// NewForConfig creates a new CoreClient for the given config. +func NewForConfig(c *rest.Config) (*CoreClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &CoreClient{client}, nil +} + +// NewForConfigOrDie creates a new CoreClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *CoreClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new CoreClient for the given RESTClient. +func New(c *rest.RESTClient) *CoreClient { + return &CoreClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if core group is not registered, return an error + g, err := registered.Group("") + if err != nil { + return err + } + config.APIPath = "/api" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *CoreClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/doc.go new file mode 100644 index 0000000000..fe27cf5c19 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/endpoints.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/endpoints.go new file mode 100644 index 0000000000..119e92da36 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/endpoints.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// EndpointsGetter has a method to return a EndpointsInterface. +// A group's client should implement this interface. +type EndpointsGetter interface { + Endpoints(namespace string) EndpointsInterface +} + +// EndpointsInterface has methods to work with Endpoints resources. +type EndpointsInterface interface { + Create(*v1.Endpoints) (*v1.Endpoints, error) + Update(*v1.Endpoints) (*v1.Endpoints, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Endpoints, error) + List(opts api.ListOptions) (*v1.EndpointsList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) + EndpointsExpansion +} + +// endpoints implements EndpointsInterface +type endpoints struct { + client *CoreClient + ns string +} + +// newEndpoints returns a Endpoints +func newEndpoints(c *CoreClient, namespace string) *endpoints { + return &endpoints{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a endpoints and creates it. Returns the server's representation of the endpoints, and an error, if there is any. +func (c *endpoints) Create(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Post(). + Namespace(c.ns). + Resource("endpoints"). + Body(endpoints). + Do(). + Into(result) + return +} + +// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any. +func (c *endpoints) Update(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Put(). + Namespace(c.ns). + Resource("endpoints"). + Name(endpoints.Name). + Body(endpoints). + Do(). + Into(result) + return +} + +// Delete takes name of the endpoints and deletes it. Returns an error if one occurs. +func (c *endpoints) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("endpoints"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *endpoints) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any. +func (c *endpoints) Get(name string) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Get(). + Namespace(c.ns). + Resource("endpoints"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Endpoints that match those selectors. +func (c *endpoints) List(opts api.ListOptions) (result *v1.EndpointsList, err error) { + result = &v1.EndpointsList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested endpoints. +func (c *endpoints) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("endpoints"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched endpoints. +func (c *endpoints) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Endpoints, err error) { + result = &v1.Endpoints{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("endpoints"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event.go new file mode 100644 index 0000000000..e4a7ef6a9a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// EventsGetter has a method to return a EventInterface. +// A group's client should implement this interface. +type EventsGetter interface { + Events(namespace string) EventInterface +} + +// EventInterface has methods to work with Event resources. +type EventInterface interface { + Create(*v1.Event) (*v1.Event, error) + Update(*v1.Event) (*v1.Event, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Event, error) + List(opts api.ListOptions) (*v1.EventList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) + EventExpansion +} + +// events implements EventInterface +type events struct { + client *CoreClient + ns string +} + +// newEvents returns a Events +func newEvents(c *CoreClient, namespace string) *events { + return &events{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any. +func (c *events) Create(event *v1.Event) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Post(). + Namespace(c.ns). + Resource("events"). + Body(event). + Do(). + Into(result) + return +} + +// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any. +func (c *events) Update(event *v1.Event) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Put(). + Namespace(c.ns). + Resource("events"). + Name(event.Name). + Body(event). + Do(). + Into(result) + return +} + +// Delete takes name of the event and deletes it. Returns an error if one occurs. +func (c *events) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("events"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *events) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("events"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the event, and returns the corresponding event object, and an error if there is any. +func (c *events) Get(name string) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Get(). + Namespace(c.ns). + Resource("events"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Events that match those selectors. +func (c *events) List(opts api.ListOptions) (result *v1.EventList, err error) { + result = &v1.EventList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("events"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested events. +func (c *events) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("events"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched event. +func (c *events) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Event, err error) { + result = &v1.Event{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("events"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event_expansion.go new file mode 100644 index 0000000000..b768053ba4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/event_expansion.go @@ -0,0 +1,162 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// The EventExpansion interface allows manually adding extra methods to the EventInterface. +type EventExpansion interface { + // CreateWithEventNamespace is the same as a Create, except that it sends the request to the event.Namespace. + CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) + // UpdateWithEventNamespace is the same as a Update, except that it sends the request to the event.Namespace. + UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) + PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) + // Search finds events about the specified object + Search(objOrRef runtime.Object) (*v1.EventList, error) + // Returns the appropriate field selector based on the API version being used to communicate with the server. + // The returned field selector can be used with List and Watch to filter desired events. + GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector +} + +// CreateWithEventNamespace makes a new event. Returns the copy of the event the server returns, +// or an error. The namespace to create the event within is deduced from the +// event; it must either match this event client's namespace, or this event +// client must have been created with the "" namespace. +func (e *events) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + if e.ns != "" && event.Namespace != e.ns { + return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns) + } + result := &v1.Event{} + err := e.client.Post(). + NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0). + Resource("events"). + Body(event). + Do(). + Into(result) + return result, err +} + +// UpdateWithEventNamespace modifies an existing event. It returns the copy of the event that the server returns, +// or an error. The namespace and key to update the event within is deduced from the event. The +// namespace must either match this event client's namespace, or this event client must have been +// created with the "" namespace. Update also requires the ResourceVersion to be set in the event +// object. +func (e *events) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) { + result := &v1.Event{} + err := e.client.Put(). + NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0). + Resource("events"). + Name(event.Name). + Body(event). + Do(). + Into(result) + return result, err +} + +// PatchWithEventNamespace modifies an existing event. It returns the copy of +// the event that the server returns, or an error. The namespace and name of the +// target event is deduced from the incompleteEvent. The namespace must either +// match this event client's namespace, or this event client must have been +// created with the "" namespace. +func (e *events) PatchWithEventNamespace(incompleteEvent *v1.Event, data []byte) (*v1.Event, error) { + if e.ns != "" && incompleteEvent.Namespace != e.ns { + return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", incompleteEvent.Namespace, e.ns) + } + result := &v1.Event{} + err := e.client.Patch(api.StrategicMergePatchType). + NamespaceIfScoped(incompleteEvent.Namespace, len(incompleteEvent.Namespace) > 0). + Resource("events"). + Name(incompleteEvent.Name). + Body(data). + Do(). + Into(result) + return result, err +} + +// Search finds events about the specified object. The namespace of the +// object must match this event's client namespace unless the event client +// was made with the "" namespace. +func (e *events) Search(objOrRef runtime.Object) (*v1.EventList, error) { + ref, err := api.GetReference(objOrRef) + if err != nil { + return nil, err + } + if e.ns != "" && ref.Namespace != e.ns { + return nil, fmt.Errorf("won't be able to find any events of namespace '%v' in namespace '%v'", ref.Namespace, e.ns) + } + stringRefKind := string(ref.Kind) + var refKind *string + if stringRefKind != "" { + refKind = &stringRefKind + } + stringRefUID := string(ref.UID) + var refUID *string + if stringRefUID != "" { + refUID = &stringRefUID + } + fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID) + return e.List(api.ListOptions{FieldSelector: fieldSelector}) +} + +// Returns the appropriate field selector based on the API version being used to communicate with the server. +// The returned field selector can be used with List and Watch to filter desired events. +func (e *events) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector { + apiVersion := e.client.APIVersion().String() + field := fields.Set{} + if involvedObjectName != nil { + field[GetInvolvedObjectNameFieldLabel(apiVersion)] = *involvedObjectName + } + if involvedObjectNamespace != nil { + field["involvedObject.namespace"] = *involvedObjectNamespace + } + if involvedObjectKind != nil { + field["involvedObject.kind"] = *involvedObjectKind + } + if involvedObjectUID != nil { + field["involvedObject.uid"] = *involvedObjectUID + } + return field.AsSelector() +} + +// Returns the appropriate field label to use for name of the involved object as per the given API version. +func GetInvolvedObjectNameFieldLabel(version string) string { + return "involvedObject.name" +} + +// TODO: This is a temporary arrangement and will be removed once all clients are moved to use the clientset. +type EventSinkImpl struct { + Interface EventInterface +} + +func (e *EventSinkImpl) Create(event *v1.Event) (*v1.Event, error) { + return e.Interface.CreateWithEventNamespace(event) +} + +func (e *EventSinkImpl) Update(event *v1.Event) (*v1.Event, error) { + return e.Interface.UpdateWithEventNamespace(event) +} + +func (e *EventSinkImpl) Patch(event *v1.Event, data []byte) (*v1.Event, error) { + return e.Interface.PatchWithEventNamespace(event, data) +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/generated_expansion.go new file mode 100644 index 0000000000..0039ffd036 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/generated_expansion.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +type ComponentStatusExpansion interface{} + +type ConfigMapExpansion interface{} + +type EndpointsExpansion interface{} + +type LimitRangeExpansion interface{} + +type NodeExpansion interface{} + +type PersistentVolumeExpansion interface{} + +type PersistentVolumeClaimExpansion interface{} + +type PodTemplateExpansion interface{} + +type ReplicationControllerExpansion interface{} + +type ResourceQuotaExpansion interface{} + +type SecretExpansion interface{} + +type ServiceAccountExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/limitrange.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/limitrange.go new file mode 100644 index 0000000000..784656901a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/limitrange.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// LimitRangesGetter has a method to return a LimitRangeInterface. +// A group's client should implement this interface. +type LimitRangesGetter interface { + LimitRanges(namespace string) LimitRangeInterface +} + +// LimitRangeInterface has methods to work with LimitRange resources. +type LimitRangeInterface interface { + Create(*v1.LimitRange) (*v1.LimitRange, error) + Update(*v1.LimitRange) (*v1.LimitRange, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.LimitRange, error) + List(opts api.ListOptions) (*v1.LimitRangeList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) + LimitRangeExpansion +} + +// limitRanges implements LimitRangeInterface +type limitRanges struct { + client *CoreClient + ns string +} + +// newLimitRanges returns a LimitRanges +func newLimitRanges(c *CoreClient, namespace string) *limitRanges { + return &limitRanges{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a limitRange and creates it. Returns the server's representation of the limitRange, and an error, if there is any. +func (c *limitRanges) Create(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Post(). + Namespace(c.ns). + Resource("limitranges"). + Body(limitRange). + Do(). + Into(result) + return +} + +// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any. +func (c *limitRanges) Update(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Put(). + Namespace(c.ns). + Resource("limitranges"). + Name(limitRange.Name). + Body(limitRange). + Do(). + Into(result) + return +} + +// Delete takes name of the limitRange and deletes it. Returns an error if one occurs. +func (c *limitRanges) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("limitranges"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *limitRanges) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any. +func (c *limitRanges) Get(name string) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Get(). + Namespace(c.ns). + Resource("limitranges"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of LimitRanges that match those selectors. +func (c *limitRanges) List(opts api.ListOptions) (result *v1.LimitRangeList, err error) { + result = &v1.LimitRangeList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested limitRanges. +func (c *limitRanges) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("limitranges"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched limitRange. +func (c *limitRanges) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.LimitRange, err error) { + result = &v1.LimitRange{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("limitranges"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace.go new file mode 100644 index 0000000000..7aed5bfd39 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace.go @@ -0,0 +1,154 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// NamespacesGetter has a method to return a NamespaceInterface. +// A group's client should implement this interface. +type NamespacesGetter interface { + Namespaces() NamespaceInterface +} + +// NamespaceInterface has methods to work with Namespace resources. +type NamespaceInterface interface { + Create(*v1.Namespace) (*v1.Namespace, error) + Update(*v1.Namespace) (*v1.Namespace, error) + UpdateStatus(*v1.Namespace) (*v1.Namespace, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Namespace, error) + List(opts api.ListOptions) (*v1.NamespaceList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) + NamespaceExpansion +} + +// namespaces implements NamespaceInterface +type namespaces struct { + client *CoreClient +} + +// newNamespaces returns a Namespaces +func newNamespaces(c *CoreClient) *namespaces { + return &namespaces{ + client: c, + } +} + +// Create takes the representation of a namespace and creates it. Returns the server's representation of the namespace, and an error, if there is any. +func (c *namespaces) Create(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Post(). + Resource("namespaces"). + Body(namespace). + Do(). + Into(result) + return +} + +// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any. +func (c *namespaces) Update(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put(). + Resource("namespaces"). + Name(namespace.Name). + Body(namespace). + Do(). + Into(result) + return +} + +func (c *namespaces) UpdateStatus(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put(). + Resource("namespaces"). + Name(namespace.Name). + SubResource("status"). + Body(namespace). + Do(). + Into(result) + return +} + +// Delete takes name of the namespace and deletes it. Returns an error if one occurs. +func (c *namespaces) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("namespaces"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *namespaces) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("namespaces"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any. +func (c *namespaces) Get(name string) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Get(). + Resource("namespaces"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Namespaces that match those selectors. +func (c *namespaces) List(opts api.ListOptions) (result *v1.NamespaceList, err error) { + result = &v1.NamespaceList{} + err = c.client.Get(). + Resource("namespaces"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested namespaces. +func (c *namespaces) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("namespaces"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched namespace. +func (c *namespaces) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Patch(pt). + Resource("namespaces"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace_expansion.go new file mode 100644 index 0000000000..5ab37194a6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/namespace_expansion.go @@ -0,0 +1,31 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import "k8s.io/client-go/1.5/pkg/api/v1" + +// The NamespaceExpansion interface allows manually adding extra methods to the NamespaceInterface. +type NamespaceExpansion interface { + Finalize(item *v1.Namespace) (*v1.Namespace, error) +} + +// Finalize takes the representation of a namespace to update. Returns the server's representation of the namespace, and an error, if it occurs. +func (c *namespaces) Finalize(namespace *v1.Namespace) (result *v1.Namespace, err error) { + result = &v1.Namespace{} + err = c.client.Put().Resource("namespaces").Name(namespace.Name).SubResource("finalize").Body(namespace).Do().Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/node.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/node.go new file mode 100644 index 0000000000..26cf2e30d1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/node.go @@ -0,0 +1,154 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// NodesGetter has a method to return a NodeInterface. +// A group's client should implement this interface. +type NodesGetter interface { + Nodes() NodeInterface +} + +// NodeInterface has methods to work with Node resources. +type NodeInterface interface { + Create(*v1.Node) (*v1.Node, error) + Update(*v1.Node) (*v1.Node, error) + UpdateStatus(*v1.Node) (*v1.Node, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Node, error) + List(opts api.ListOptions) (*v1.NodeList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) + NodeExpansion +} + +// nodes implements NodeInterface +type nodes struct { + client *CoreClient +} + +// newNodes returns a Nodes +func newNodes(c *CoreClient) *nodes { + return &nodes{ + client: c, + } +} + +// Create takes the representation of a node and creates it. Returns the server's representation of the node, and an error, if there is any. +func (c *nodes) Create(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Post(). + Resource("nodes"). + Body(node). + Do(). + Into(result) + return +} + +// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any. +func (c *nodes) Update(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Put(). + Resource("nodes"). + Name(node.Name). + Body(node). + Do(). + Into(result) + return +} + +func (c *nodes) UpdateStatus(node *v1.Node) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Put(). + Resource("nodes"). + Name(node.Name). + SubResource("status"). + Body(node). + Do(). + Into(result) + return +} + +// Delete takes name of the node and deletes it. Returns an error if one occurs. +func (c *nodes) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("nodes"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *nodes) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("nodes"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the node, and returns the corresponding node object, and an error if there is any. +func (c *nodes) Get(name string) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Get(). + Resource("nodes"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Nodes that match those selectors. +func (c *nodes) List(opts api.ListOptions) (result *v1.NodeList, err error) { + result = &v1.NodeList{} + err = c.client.Get(). + Resource("nodes"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested nodes. +func (c *nodes) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("nodes"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched node. +func (c *nodes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Node, err error) { + result = &v1.Node{} + err = c.client.Patch(pt). + Resource("nodes"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolume.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolume.go new file mode 100644 index 0000000000..31cd3b6da4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolume.go @@ -0,0 +1,154 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PersistentVolumesGetter has a method to return a PersistentVolumeInterface. +// A group's client should implement this interface. +type PersistentVolumesGetter interface { + PersistentVolumes() PersistentVolumeInterface +} + +// PersistentVolumeInterface has methods to work with PersistentVolume resources. +type PersistentVolumeInterface interface { + Create(*v1.PersistentVolume) (*v1.PersistentVolume, error) + Update(*v1.PersistentVolume) (*v1.PersistentVolume, error) + UpdateStatus(*v1.PersistentVolume) (*v1.PersistentVolume, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.PersistentVolume, error) + List(opts api.ListOptions) (*v1.PersistentVolumeList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) + PersistentVolumeExpansion +} + +// persistentVolumes implements PersistentVolumeInterface +type persistentVolumes struct { + client *CoreClient +} + +// newPersistentVolumes returns a PersistentVolumes +func newPersistentVolumes(c *CoreClient) *persistentVolumes { + return &persistentVolumes{ + client: c, + } +} + +// Create takes the representation of a persistentVolume and creates it. Returns the server's representation of the persistentVolume, and an error, if there is any. +func (c *persistentVolumes) Create(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Post(). + Resource("persistentvolumes"). + Body(persistentVolume). + Do(). + Into(result) + return +} + +// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any. +func (c *persistentVolumes) Update(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Put(). + Resource("persistentvolumes"). + Name(persistentVolume.Name). + Body(persistentVolume). + Do(). + Into(result) + return +} + +func (c *persistentVolumes) UpdateStatus(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Put(). + Resource("persistentvolumes"). + Name(persistentVolume.Name). + SubResource("status"). + Body(persistentVolume). + Do(). + Into(result) + return +} + +// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs. +func (c *persistentVolumes) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("persistentvolumes"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *persistentVolumes) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("persistentvolumes"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any. +func (c *persistentVolumes) Get(name string) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Get(). + Resource("persistentvolumes"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors. +func (c *persistentVolumes) List(opts api.ListOptions) (result *v1.PersistentVolumeList, err error) { + result = &v1.PersistentVolumeList{} + err = c.client.Get(). + Resource("persistentvolumes"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested persistentVolumes. +func (c *persistentVolumes) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("persistentvolumes"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched persistentVolume. +func (c *persistentVolumes) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolume, err error) { + result = &v1.PersistentVolume{} + err = c.client.Patch(pt). + Resource("persistentvolumes"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolumeclaim.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolumeclaim.go new file mode 100644 index 0000000000..aa2a996c9b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/persistentvolumeclaim.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PersistentVolumeClaimsGetter has a method to return a PersistentVolumeClaimInterface. +// A group's client should implement this interface. +type PersistentVolumeClaimsGetter interface { + PersistentVolumeClaims(namespace string) PersistentVolumeClaimInterface +} + +// PersistentVolumeClaimInterface has methods to work with PersistentVolumeClaim resources. +type PersistentVolumeClaimInterface interface { + Create(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + Update(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + UpdateStatus(*v1.PersistentVolumeClaim) (*v1.PersistentVolumeClaim, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.PersistentVolumeClaim, error) + List(opts api.ListOptions) (*v1.PersistentVolumeClaimList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) + PersistentVolumeClaimExpansion +} + +// persistentVolumeClaims implements PersistentVolumeClaimInterface +type persistentVolumeClaims struct { + client *CoreClient + ns string +} + +// newPersistentVolumeClaims returns a PersistentVolumeClaims +func newPersistentVolumeClaims(c *CoreClient, namespace string) *persistentVolumeClaims { + return &persistentVolumeClaims{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a persistentVolumeClaim and creates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. +func (c *persistentVolumeClaims) Create(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Post(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. +func (c *persistentVolumeClaims) Update(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Put(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(persistentVolumeClaim.Name). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +func (c *persistentVolumeClaims) UpdateStatus(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Put(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(persistentVolumeClaim.Name). + SubResource("status"). + Body(persistentVolumeClaim). + Do(). + Into(result) + return +} + +// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs. +func (c *persistentVolumeClaims) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *persistentVolumeClaims) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any. +func (c *persistentVolumeClaims) Get(name string) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Get(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors. +func (c *persistentVolumeClaims) List(opts api.ListOptions) (result *v1.PersistentVolumeClaimList, err error) { + result = &v1.PersistentVolumeClaimList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested persistentVolumeClaims. +func (c *persistentVolumeClaims) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched persistentVolumeClaim. +func (c *persistentVolumeClaims) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PersistentVolumeClaim, err error) { + result = &v1.PersistentVolumeClaim{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("persistentvolumeclaims"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod.go new file mode 100644 index 0000000000..ad6e0eb20c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PodsGetter has a method to return a PodInterface. +// A group's client should implement this interface. +type PodsGetter interface { + Pods(namespace string) PodInterface +} + +// PodInterface has methods to work with Pod resources. +type PodInterface interface { + Create(*v1.Pod) (*v1.Pod, error) + Update(*v1.Pod) (*v1.Pod, error) + UpdateStatus(*v1.Pod) (*v1.Pod, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Pod, error) + List(opts api.ListOptions) (*v1.PodList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) + PodExpansion +} + +// pods implements PodInterface +type pods struct { + client *CoreClient + ns string +} + +// newPods returns a Pods +func newPods(c *CoreClient, namespace string) *pods { + return &pods{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a pod and creates it. Returns the server's representation of the pod, and an error, if there is any. +func (c *pods) Create(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Post(). + Namespace(c.ns). + Resource("pods"). + Body(pod). + Do(). + Into(result) + return +} + +// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any. +func (c *pods) Update(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Put(). + Namespace(c.ns). + Resource("pods"). + Name(pod.Name). + Body(pod). + Do(). + Into(result) + return +} + +func (c *pods) UpdateStatus(pod *v1.Pod) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Put(). + Namespace(c.ns). + Resource("pods"). + Name(pod.Name). + SubResource("status"). + Body(pod). + Do(). + Into(result) + return +} + +// Delete takes name of the pod and deletes it. Returns an error if one occurs. +func (c *pods) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("pods"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *pods) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any. +func (c *pods) Get(name string) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Pods that match those selectors. +func (c *pods) List(opts api.ListOptions) (result *v1.PodList, err error) { + result = &v1.PodList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested pods. +func (c *pods) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("pods"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched pod. +func (c *pods) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Pod, err error) { + result = &v1.Pod{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("pods"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod_expansion.go new file mode 100644 index 0000000000..a2a85a3f85 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/pod_expansion.go @@ -0,0 +1,45 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/v1" + policy "k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1" + "k8s.io/client-go/1.5/rest" +) + +// The PodExpansion interface allows manually adding extra methods to the PodInterface. +type PodExpansion interface { + Bind(binding *v1.Binding) error + Evict(eviction *policy.Eviction) error + GetLogs(name string, opts *v1.PodLogOptions) *rest.Request +} + +// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored). +func (c *pods) Bind(binding *v1.Binding) error { + return c.client.Post().Namespace(c.ns).Resource("pods").Name(binding.Name).SubResource("binding").Body(binding).Do().Error() +} + +func (c *pods) Evict(eviction *policy.Eviction) error { + return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do().Error() +} + +// Get constructs a request for getting the logs for a pod +func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *rest.Request { + return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec) +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/podtemplate.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/podtemplate.go new file mode 100644 index 0000000000..98788ea6de --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/podtemplate.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PodTemplatesGetter has a method to return a PodTemplateInterface. +// A group's client should implement this interface. +type PodTemplatesGetter interface { + PodTemplates(namespace string) PodTemplateInterface +} + +// PodTemplateInterface has methods to work with PodTemplate resources. +type PodTemplateInterface interface { + Create(*v1.PodTemplate) (*v1.PodTemplate, error) + Update(*v1.PodTemplate) (*v1.PodTemplate, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.PodTemplate, error) + List(opts api.ListOptions) (*v1.PodTemplateList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) + PodTemplateExpansion +} + +// podTemplates implements PodTemplateInterface +type podTemplates struct { + client *CoreClient + ns string +} + +// newPodTemplates returns a PodTemplates +func newPodTemplates(c *CoreClient, namespace string) *podTemplates { + return &podTemplates{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a podTemplate and creates it. Returns the server's representation of the podTemplate, and an error, if there is any. +func (c *podTemplates) Create(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Post(). + Namespace(c.ns). + Resource("podtemplates"). + Body(podTemplate). + Do(). + Into(result) + return +} + +// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any. +func (c *podTemplates) Update(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Put(). + Namespace(c.ns). + Resource("podtemplates"). + Name(podTemplate.Name). + Body(podTemplate). + Do(). + Into(result) + return +} + +// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs. +func (c *podTemplates) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podtemplates"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podTemplates) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any. +func (c *podTemplates) Get(name string) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podtemplates"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodTemplates that match those selectors. +func (c *podTemplates) List(opts api.ListOptions) (result *v1.PodTemplateList, err error) { + result = &v1.PodTemplateList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podTemplates. +func (c *podTemplates) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("podtemplates"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podTemplate. +func (c *podTemplates) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.PodTemplate, err error) { + result = &v1.PodTemplate{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("podtemplates"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/replicationcontroller.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/replicationcontroller.go new file mode 100644 index 0000000000..eb4f789ec8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/replicationcontroller.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ReplicationControllersGetter has a method to return a ReplicationControllerInterface. +// A group's client should implement this interface. +type ReplicationControllersGetter interface { + ReplicationControllers(namespace string) ReplicationControllerInterface +} + +// ReplicationControllerInterface has methods to work with ReplicationController resources. +type ReplicationControllerInterface interface { + Create(*v1.ReplicationController) (*v1.ReplicationController, error) + Update(*v1.ReplicationController) (*v1.ReplicationController, error) + UpdateStatus(*v1.ReplicationController) (*v1.ReplicationController, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.ReplicationController, error) + List(opts api.ListOptions) (*v1.ReplicationControllerList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) + ReplicationControllerExpansion +} + +// replicationControllers implements ReplicationControllerInterface +type replicationControllers struct { + client *CoreClient + ns string +} + +// newReplicationControllers returns a ReplicationControllers +func newReplicationControllers(c *CoreClient, namespace string) *replicationControllers { + return &replicationControllers{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a replicationController and creates it. Returns the server's representation of the replicationController, and an error, if there is any. +func (c *replicationControllers) Create(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Post(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Body(replicationController). + Do(). + Into(result) + return +} + +// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any. +func (c *replicationControllers) Update(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(replicationController.Name). + Body(replicationController). + Do(). + Into(result) + return +} + +func (c *replicationControllers) UpdateStatus(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(replicationController.Name). + SubResource("status"). + Body(replicationController). + Do(). + Into(result) + return +} + +// Delete takes name of the replicationController and deletes it. Returns an error if one occurs. +func (c *replicationControllers) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *replicationControllers) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any. +func (c *replicationControllers) Get(name string) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicationcontrollers"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors. +func (c *replicationControllers) List(opts api.ListOptions) (result *v1.ReplicationControllerList, err error) { + result = &v1.ReplicationControllerList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested replicationControllers. +func (c *replicationControllers) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("replicationcontrollers"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched replicationController. +func (c *replicationControllers) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ReplicationController, err error) { + result = &v1.ReplicationController{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("replicationcontrollers"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/resourcequota.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/resourcequota.go new file mode 100644 index 0000000000..0b58bcf20d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/resourcequota.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ResourceQuotasGetter has a method to return a ResourceQuotaInterface. +// A group's client should implement this interface. +type ResourceQuotasGetter interface { + ResourceQuotas(namespace string) ResourceQuotaInterface +} + +// ResourceQuotaInterface has methods to work with ResourceQuota resources. +type ResourceQuotaInterface interface { + Create(*v1.ResourceQuota) (*v1.ResourceQuota, error) + Update(*v1.ResourceQuota) (*v1.ResourceQuota, error) + UpdateStatus(*v1.ResourceQuota) (*v1.ResourceQuota, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.ResourceQuota, error) + List(opts api.ListOptions) (*v1.ResourceQuotaList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) + ResourceQuotaExpansion +} + +// resourceQuotas implements ResourceQuotaInterface +type resourceQuotas struct { + client *CoreClient + ns string +} + +// newResourceQuotas returns a ResourceQuotas +func newResourceQuotas(c *CoreClient, namespace string) *resourceQuotas { + return &resourceQuotas{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a resourceQuota and creates it. Returns the server's representation of the resourceQuota, and an error, if there is any. +func (c *resourceQuotas) Create(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Post(). + Namespace(c.ns). + Resource("resourcequotas"). + Body(resourceQuota). + Do(). + Into(result) + return +} + +// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any. +func (c *resourceQuotas) Update(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(resourceQuota.Name). + Body(resourceQuota). + Do(). + Into(result) + return +} + +func (c *resourceQuotas) UpdateStatus(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Put(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(resourceQuota.Name). + SubResource("status"). + Body(resourceQuota). + Do(). + Into(result) + return +} + +// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs. +func (c *resourceQuotas) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *resourceQuotas) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any. +func (c *resourceQuotas) Get(name string) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcequotas"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors. +func (c *resourceQuotas) List(opts api.ListOptions) (result *v1.ResourceQuotaList, err error) { + result = &v1.ResourceQuotaList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested resourceQuotas. +func (c *resourceQuotas) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("resourcequotas"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched resourceQuota. +func (c *resourceQuotas) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ResourceQuota, err error) { + result = &v1.ResourceQuota{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("resourcequotas"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/secret.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/secret.go new file mode 100644 index 0000000000..611b59c018 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/secret.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// SecretsGetter has a method to return a SecretInterface. +// A group's client should implement this interface. +type SecretsGetter interface { + Secrets(namespace string) SecretInterface +} + +// SecretInterface has methods to work with Secret resources. +type SecretInterface interface { + Create(*v1.Secret) (*v1.Secret, error) + Update(*v1.Secret) (*v1.Secret, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Secret, error) + List(opts api.ListOptions) (*v1.SecretList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) + SecretExpansion +} + +// secrets implements SecretInterface +type secrets struct { + client *CoreClient + ns string +} + +// newSecrets returns a Secrets +func newSecrets(c *CoreClient, namespace string) *secrets { + return &secrets{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a secret and creates it. Returns the server's representation of the secret, and an error, if there is any. +func (c *secrets) Create(secret *v1.Secret) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Post(). + Namespace(c.ns). + Resource("secrets"). + Body(secret). + Do(). + Into(result) + return +} + +// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any. +func (c *secrets) Update(secret *v1.Secret) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Put(). + Namespace(c.ns). + Resource("secrets"). + Name(secret.Name). + Body(secret). + Do(). + Into(result) + return +} + +// Delete takes name of the secret and deletes it. Returns an error if one occurs. +func (c *secrets) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("secrets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *secrets) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any. +func (c *secrets) Get(name string) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Get(). + Namespace(c.ns). + Resource("secrets"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Secrets that match those selectors. +func (c *secrets) List(opts api.ListOptions) (result *v1.SecretList, err error) { + result = &v1.SecretList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested secrets. +func (c *secrets) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("secrets"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched secret. +func (c *secrets) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Secret, err error) { + result = &v1.Secret{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("secrets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service.go new file mode 100644 index 0000000000..d40efde6ed --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ServicesGetter has a method to return a ServiceInterface. +// A group's client should implement this interface. +type ServicesGetter interface { + Services(namespace string) ServiceInterface +} + +// ServiceInterface has methods to work with Service resources. +type ServiceInterface interface { + Create(*v1.Service) (*v1.Service, error) + Update(*v1.Service) (*v1.Service, error) + UpdateStatus(*v1.Service) (*v1.Service, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.Service, error) + List(opts api.ListOptions) (*v1.ServiceList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) + ServiceExpansion +} + +// services implements ServiceInterface +type services struct { + client *CoreClient + ns string +} + +// newServices returns a Services +func newServices(c *CoreClient, namespace string) *services { + return &services{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a service and creates it. Returns the server's representation of the service, and an error, if there is any. +func (c *services) Create(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Post(). + Namespace(c.ns). + Resource("services"). + Body(service). + Do(). + Into(result) + return +} + +// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any. +func (c *services) Update(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Put(). + Namespace(c.ns). + Resource("services"). + Name(service.Name). + Body(service). + Do(). + Into(result) + return +} + +func (c *services) UpdateStatus(service *v1.Service) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Put(). + Namespace(c.ns). + Resource("services"). + Name(service.Name). + SubResource("status"). + Body(service). + Do(). + Into(result) + return +} + +// Delete takes name of the service and deletes it. Returns an error if one occurs. +func (c *services) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("services"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *services) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("services"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the service, and returns the corresponding service object, and an error if there is any. +func (c *services) Get(name string) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Get(). + Namespace(c.ns). + Resource("services"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Services that match those selectors. +func (c *services) List(opts api.ListOptions) (result *v1.ServiceList, err error) { + result = &v1.ServiceList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("services"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested services. +func (c *services) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("services"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched service. +func (c *services) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.Service, err error) { + result = &v1.Service{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("services"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service_expansion.go new file mode 100644 index 0000000000..89d69f860b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/service_expansion.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/util/net" + "k8s.io/client-go/1.5/rest" +) + +// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface. +type ServiceExpansion interface { + ProxyGet(scheme, name, port, path string, params map[string]string) rest.ResponseWrapper +} + +// ProxyGet returns a response of the service by calling it through the proxy. +func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) rest.ResponseWrapper { + request := c.client.Get(). + Prefix("proxy"). + Namespace(c.ns). + Resource("services"). + Name(net.JoinSchemeNamePort(scheme, name, port)). + Suffix(path) + for k, v := range params { + request = request.Param(k, v) + } + return request +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/serviceaccount.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/serviceaccount.go new file mode 100644 index 0000000000..ce8cc882e5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/core/v1/serviceaccount.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ServiceAccountsGetter has a method to return a ServiceAccountInterface. +// A group's client should implement this interface. +type ServiceAccountsGetter interface { + ServiceAccounts(namespace string) ServiceAccountInterface +} + +// ServiceAccountInterface has methods to work with ServiceAccount resources. +type ServiceAccountInterface interface { + Create(*v1.ServiceAccount) (*v1.ServiceAccount, error) + Update(*v1.ServiceAccount) (*v1.ServiceAccount, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1.ServiceAccount, error) + List(opts api.ListOptions) (*v1.ServiceAccountList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) + ServiceAccountExpansion +} + +// serviceAccounts implements ServiceAccountInterface +type serviceAccounts struct { + client *CoreClient + ns string +} + +// newServiceAccounts returns a ServiceAccounts +func newServiceAccounts(c *CoreClient, namespace string) *serviceAccounts { + return &serviceAccounts{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a serviceAccount and creates it. Returns the server's representation of the serviceAccount, and an error, if there is any. +func (c *serviceAccounts) Create(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Post(). + Namespace(c.ns). + Resource("serviceaccounts"). + Body(serviceAccount). + Do(). + Into(result) + return +} + +// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any. +func (c *serviceAccounts) Update(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Put(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(serviceAccount.Name). + Body(serviceAccount). + Do(). + Into(result) + return +} + +// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs. +func (c *serviceAccounts) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *serviceAccounts) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any. +func (c *serviceAccounts) Get(name string) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Get(). + Namespace(c.ns). + Resource("serviceaccounts"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors. +func (c *serviceAccounts) List(opts api.ListOptions) (result *v1.ServiceAccountList, err error) { + result = &v1.ServiceAccountList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested serviceAccounts. +func (c *serviceAccounts) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("serviceaccounts"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched serviceAccount. +func (c *serviceAccounts) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1.ServiceAccount, err error) { + result = &v1.ServiceAccount{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("serviceaccounts"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/daemonset.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/daemonset.go new file mode 100644 index 0000000000..2ae93b1510 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/daemonset.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// DaemonSetsGetter has a method to return a DaemonSetInterface. +// A group's client should implement this interface. +type DaemonSetsGetter interface { + DaemonSets(namespace string) DaemonSetInterface +} + +// DaemonSetInterface has methods to work with DaemonSet resources. +type DaemonSetInterface interface { + Create(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + Update(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + UpdateStatus(*v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.DaemonSet, error) + List(opts api.ListOptions) (*v1beta1.DaemonSetList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) + DaemonSetExpansion +} + +// daemonSets implements DaemonSetInterface +type daemonSets struct { + client *ExtensionsClient + ns string +} + +// newDaemonSets returns a DaemonSets +func newDaemonSets(c *ExtensionsClient, namespace string) *daemonSets { + return &daemonSets{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a daemonSet and creates it. Returns the server's representation of the daemonSet, and an error, if there is any. +func (c *daemonSets) Create(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("daemonsets"). + Body(daemonSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any. +func (c *daemonSets) Update(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("daemonsets"). + Name(daemonSet.Name). + Body(daemonSet). + Do(). + Into(result) + return +} + +func (c *daemonSets) UpdateStatus(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("daemonsets"). + Name(daemonSet.Name). + SubResource("status"). + Body(daemonSet). + Do(). + Into(result) + return +} + +// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. +func (c *daemonSets) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("daemonsets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *daemonSets) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. +func (c *daemonSets) Get(name string) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("daemonsets"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of DaemonSets that match those selectors. +func (c *daemonSets) List(opts api.ListOptions) (result *v1beta1.DaemonSetList, err error) { + result = &v1beta1.DaemonSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested daemonSets. +func (c *daemonSets) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("daemonsets"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched daemonSet. +func (c *daemonSets) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) { + result = &v1beta1.DaemonSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("daemonsets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment.go new file mode 100644 index 0000000000..5406171302 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// DeploymentsGetter has a method to return a DeploymentInterface. +// A group's client should implement this interface. +type DeploymentsGetter interface { + Deployments(namespace string) DeploymentInterface +} + +// DeploymentInterface has methods to work with Deployment resources. +type DeploymentInterface interface { + Create(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Update(*v1beta1.Deployment) (*v1beta1.Deployment, error) + UpdateStatus(*v1beta1.Deployment) (*v1beta1.Deployment, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.Deployment, error) + List(opts api.ListOptions) (*v1beta1.DeploymentList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) + DeploymentExpansion +} + +// deployments implements DeploymentInterface +type deployments struct { + client *ExtensionsClient + ns string +} + +// newDeployments returns a Deployments +func newDeployments(c *ExtensionsClient, namespace string) *deployments { + return &deployments{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Post(). + Namespace(c.ns). + Resource("deployments"). + Body(deployment). + Do(). + Into(result) + return +} + +// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. +func (c *deployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + Body(deployment). + Do(). + Into(result) + return +} + +func (c *deployments) UpdateStatus(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Put(). + Namespace(c.ns). + Resource("deployments"). + Name(deployment.Name). + SubResource("status"). + Body(deployment). + Do(). + Into(result) + return +} + +// Delete takes name of the deployment and deletes it. Returns an error if one occurs. +func (c *deployments) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *deployments) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. +func (c *deployments) Get(name string) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Deployments that match those selectors. +func (c *deployments) List(opts api.ListOptions) (result *v1beta1.DeploymentList, err error) { + result = &v1beta1.DeploymentList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested deployments. +func (c *deployments) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("deployments"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched deployment. +func (c *deployments) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { + result = &v1beta1.Deployment{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("deployments"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment_expansion.go new file mode 100644 index 0000000000..293ed8c44f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/deployment_expansion.go @@ -0,0 +1,29 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + +// The DeploymentExpansion interface allows manually adding extra methods to the DeploymentInterface. +type DeploymentExpansion interface { + Rollback(*v1beta1.DeploymentRollback) error +} + +// Rollback applied the provided DeploymentRollback to the named deployment in the current namespace. +func (c *deployments) Rollback(deploymentRollback *v1beta1.DeploymentRollback) error { + return c.client.Post().Namespace(c.ns).Resource("deployments").Name(deploymentRollback.Name).SubResource("rollback").Body(deploymentRollback).Do().Error() +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/doc.go new file mode 100644 index 0000000000..5616c95d32 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/extensions_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/extensions_client.go new file mode 100644 index 0000000000..054bb461d5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/extensions_client.go @@ -0,0 +1,131 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type ExtensionsInterface interface { + GetRESTClient() *rest.RESTClient + DaemonSetsGetter + DeploymentsGetter + IngressesGetter + JobsGetter + PodSecurityPoliciesGetter + ReplicaSetsGetter + ScalesGetter + ThirdPartyResourcesGetter +} + +// ExtensionsClient is used to interact with features provided by the Extensions group. +type ExtensionsClient struct { + *rest.RESTClient +} + +func (c *ExtensionsClient) DaemonSets(namespace string) DaemonSetInterface { + return newDaemonSets(c, namespace) +} + +func (c *ExtensionsClient) Deployments(namespace string) DeploymentInterface { + return newDeployments(c, namespace) +} + +func (c *ExtensionsClient) Ingresses(namespace string) IngressInterface { + return newIngresses(c, namespace) +} + +func (c *ExtensionsClient) Jobs(namespace string) JobInterface { + return newJobs(c, namespace) +} + +func (c *ExtensionsClient) PodSecurityPolicies() PodSecurityPolicyInterface { + return newPodSecurityPolicies(c) +} + +func (c *ExtensionsClient) ReplicaSets(namespace string) ReplicaSetInterface { + return newReplicaSets(c, namespace) +} + +func (c *ExtensionsClient) Scales(namespace string) ScaleInterface { + return newScales(c, namespace) +} + +func (c *ExtensionsClient) ThirdPartyResources() ThirdPartyResourceInterface { + return newThirdPartyResources(c) +} + +// NewForConfig creates a new ExtensionsClient for the given config. +func NewForConfig(c *rest.Config) (*ExtensionsClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &ExtensionsClient{client}, nil +} + +// NewForConfigOrDie creates a new ExtensionsClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *ExtensionsClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new ExtensionsClient for the given RESTClient. +func New(c *rest.RESTClient) *ExtensionsClient { + return &ExtensionsClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if extensions group is not registered, return an error + g, err := registered.Group("extensions") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *ExtensionsClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/generated_expansion.go new file mode 100644 index 0000000000..60cf61d4b2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/generated_expansion.go @@ -0,0 +1,29 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type DaemonSetExpansion interface{} + +type IngressExpansion interface{} + +type JobExpansion interface{} + +type PodSecurityPolicyExpansion interface{} + +type ReplicaSetExpansion interface{} + +type ThirdPartyResourceExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/ingress.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/ingress.go new file mode 100644 index 0000000000..29b93cef56 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/ingress.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// IngressesGetter has a method to return a IngressInterface. +// A group's client should implement this interface. +type IngressesGetter interface { + Ingresses(namespace string) IngressInterface +} + +// IngressInterface has methods to work with Ingress resources. +type IngressInterface interface { + Create(*v1beta1.Ingress) (*v1beta1.Ingress, error) + Update(*v1beta1.Ingress) (*v1beta1.Ingress, error) + UpdateStatus(*v1beta1.Ingress) (*v1beta1.Ingress, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.Ingress, error) + List(opts api.ListOptions) (*v1beta1.IngressList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) + IngressExpansion +} + +// ingresses implements IngressInterface +type ingresses struct { + client *ExtensionsClient + ns string +} + +// newIngresses returns a Ingresses +func newIngresses(c *ExtensionsClient, namespace string) *ingresses { + return &ingresses{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a ingress and creates it. Returns the server's representation of the ingress, and an error, if there is any. +func (c *ingresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Post(). + Namespace(c.ns). + Resource("ingresses"). + Body(ingress). + Do(). + Into(result) + return +} + +// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any. +func (c *ingresses) Update(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Put(). + Namespace(c.ns). + Resource("ingresses"). + Name(ingress.Name). + Body(ingress). + Do(). + Into(result) + return +} + +func (c *ingresses) UpdateStatus(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Put(). + Namespace(c.ns). + Resource("ingresses"). + Name(ingress.Name). + SubResource("status"). + Body(ingress). + Do(). + Into(result) + return +} + +// Delete takes name of the ingress and deletes it. Returns an error if one occurs. +func (c *ingresses) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("ingresses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *ingresses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any. +func (c *ingresses) Get(name string) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Get(). + Namespace(c.ns). + Resource("ingresses"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Ingresses that match those selectors. +func (c *ingresses) List(opts api.ListOptions) (result *v1beta1.IngressList, err error) { + result = &v1beta1.IngressList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested ingresses. +func (c *ingresses) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("ingresses"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched ingress. +func (c *ingresses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) { + result = &v1beta1.Ingress{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("ingresses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/job.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/job.go new file mode 100644 index 0000000000..0142d69cc3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/job.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// JobsGetter has a method to return a JobInterface. +// A group's client should implement this interface. +type JobsGetter interface { + Jobs(namespace string) JobInterface +} + +// JobInterface has methods to work with Job resources. +type JobInterface interface { + Create(*v1beta1.Job) (*v1beta1.Job, error) + Update(*v1beta1.Job) (*v1beta1.Job, error) + UpdateStatus(*v1beta1.Job) (*v1beta1.Job, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.Job, error) + List(opts api.ListOptions) (*v1beta1.JobList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Job, err error) + JobExpansion +} + +// jobs implements JobInterface +type jobs struct { + client *ExtensionsClient + ns string +} + +// newJobs returns a Jobs +func newJobs(c *ExtensionsClient, namespace string) *jobs { + return &jobs{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a job and creates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Create(job *v1beta1.Job) (result *v1beta1.Job, err error) { + result = &v1beta1.Job{} + err = c.client.Post(). + Namespace(c.ns). + Resource("jobs"). + Body(job). + Do(). + Into(result) + return +} + +// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any. +func (c *jobs) Update(job *v1beta1.Job) (result *v1beta1.Job, err error) { + result = &v1beta1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + Body(job). + Do(). + Into(result) + return +} + +func (c *jobs) UpdateStatus(job *v1beta1.Job) (result *v1beta1.Job, err error) { + result = &v1beta1.Job{} + err = c.client.Put(). + Namespace(c.ns). + Resource("jobs"). + Name(job.Name). + SubResource("status"). + Body(job). + Do(). + Into(result) + return +} + +// Delete takes name of the job and deletes it. Returns an error if one occurs. +func (c *jobs) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *jobs) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the job, and returns the corresponding job object, and an error if there is any. +func (c *jobs) Get(name string) (result *v1beta1.Job, err error) { + result = &v1beta1.Job{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Jobs that match those selectors. +func (c *jobs) List(opts api.ListOptions) (result *v1beta1.JobList, err error) { + result = &v1beta1.JobList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested jobs. +func (c *jobs) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("jobs"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched job. +func (c *jobs) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.Job, err error) { + result = &v1beta1.Job{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("jobs"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go new file mode 100644 index 0000000000..53646543bf --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/podsecuritypolicy.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PodSecurityPoliciesGetter has a method to return a PodSecurityPolicyInterface. +// A group's client should implement this interface. +type PodSecurityPoliciesGetter interface { + PodSecurityPolicies() PodSecurityPolicyInterface +} + +// PodSecurityPolicyInterface has methods to work with PodSecurityPolicy resources. +type PodSecurityPolicyInterface interface { + Create(*v1beta1.PodSecurityPolicy) (*v1beta1.PodSecurityPolicy, error) + Update(*v1beta1.PodSecurityPolicy) (*v1beta1.PodSecurityPolicy, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.PodSecurityPolicy, error) + List(opts api.ListOptions) (*v1beta1.PodSecurityPolicyList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) + PodSecurityPolicyExpansion +} + +// podSecurityPolicies implements PodSecurityPolicyInterface +type podSecurityPolicies struct { + client *ExtensionsClient +} + +// newPodSecurityPolicies returns a PodSecurityPolicies +func newPodSecurityPolicies(c *ExtensionsClient) *podSecurityPolicies { + return &podSecurityPolicies{ + client: c, + } +} + +// Create takes the representation of a podSecurityPolicy and creates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. +func (c *podSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Post(). + Resource("podsecuritypolicies"). + Body(podSecurityPolicy). + Do(). + Into(result) + return +} + +// Update takes the representation of a podSecurityPolicy and updates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. +func (c *podSecurityPolicies) Update(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Put(). + Resource("podsecuritypolicies"). + Name(podSecurityPolicy.Name). + Body(podSecurityPolicy). + Do(). + Into(result) + return +} + +// Delete takes name of the podSecurityPolicy and deletes it. Returns an error if one occurs. +func (c *podSecurityPolicies) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("podsecuritypolicies"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podSecurityPolicies) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("podsecuritypolicies"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podSecurityPolicy, and returns the corresponding podSecurityPolicy object, and an error if there is any. +func (c *podSecurityPolicies) Get(name string) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Get(). + Resource("podsecuritypolicies"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodSecurityPolicies that match those selectors. +func (c *podSecurityPolicies) List(opts api.ListOptions) (result *v1beta1.PodSecurityPolicyList, err error) { + result = &v1beta1.PodSecurityPolicyList{} + err = c.client.Get(). + Resource("podsecuritypolicies"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podSecurityPolicies. +func (c *podSecurityPolicies) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("podsecuritypolicies"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podSecurityPolicy. +func (c *podSecurityPolicies) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) { + result = &v1beta1.PodSecurityPolicy{} + err = c.client.Patch(pt). + Resource("podsecuritypolicies"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/replicaset.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/replicaset.go new file mode 100644 index 0000000000..722a4b4e9c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/replicaset.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ReplicaSetsGetter has a method to return a ReplicaSetInterface. +// A group's client should implement this interface. +type ReplicaSetsGetter interface { + ReplicaSets(namespace string) ReplicaSetInterface +} + +// ReplicaSetInterface has methods to work with ReplicaSet resources. +type ReplicaSetInterface interface { + Create(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + Update(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + UpdateStatus(*v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.ReplicaSet, error) + List(opts api.ListOptions) (*v1beta1.ReplicaSetList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) + ReplicaSetExpansion +} + +// replicaSets implements ReplicaSetInterface +type replicaSets struct { + client *ExtensionsClient + ns string +} + +// newReplicaSets returns a ReplicaSets +func newReplicaSets(c *ExtensionsClient, namespace string) *replicaSets { + return &replicaSets{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a replicaSet and creates it. Returns the server's representation of the replicaSet, and an error, if there is any. +func (c *replicaSets) Create(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Post(). + Namespace(c.ns). + Resource("replicasets"). + Body(replicaSet). + Do(). + Into(result) + return +} + +// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any. +func (c *replicaSets) Update(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicasets"). + Name(replicaSet.Name). + Body(replicaSet). + Do(). + Into(result) + return +} + +func (c *replicaSets) UpdateStatus(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Put(). + Namespace(c.ns). + Resource("replicasets"). + Name(replicaSet.Name). + SubResource("status"). + Body(replicaSet). + Do(). + Into(result) + return +} + +// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. +func (c *replicaSets) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicasets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *replicaSets) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. +func (c *replicaSets) Get(name string) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicasets"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. +func (c *replicaSets) List(opts api.ListOptions) (result *v1beta1.ReplicaSetList, err error) { + result = &v1beta1.ReplicaSetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested replicaSets. +func (c *replicaSets) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("replicasets"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched replicaSet. +func (c *replicaSets) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) { + result = &v1beta1.ReplicaSet{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("replicasets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale.go new file mode 100644 index 0000000000..3a7be158a6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale.go @@ -0,0 +1,42 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// ScalesGetter has a method to return a ScaleInterface. +// A group's client should implement this interface. +type ScalesGetter interface { + Scales(namespace string) ScaleInterface +} + +// ScaleInterface has methods to work with Scale resources. +type ScaleInterface interface { + ScaleExpansion +} + +// scales implements ScaleInterface +type scales struct { + client *ExtensionsClient + ns string +} + +// newScales returns a Scales +func newScales(c *ExtensionsClient, namespace string) *scales { + return &scales{ + client: c, + ns: namespace, + } +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale_expansion.go new file mode 100644 index 0000000000..435506f1c0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/scale_expansion.go @@ -0,0 +1,65 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" +) + +// The ScaleExpansion interface allows manually adding extra methods to the ScaleInterface. +type ScaleExpansion interface { + Get(kind string, name string) (*v1beta1.Scale, error) + Update(kind string, scale *v1beta1.Scale) (*v1beta1.Scale, error) +} + +// Get takes the reference to scale subresource and returns the subresource or error, if one occurs. +func (c *scales) Get(kind string, name string) (result *v1beta1.Scale, err error) { + result = &v1beta1.Scale{} + + // TODO this method needs to take a proper unambiguous kind + fullyQualifiedKind := unversioned.GroupVersionKind{Kind: kind} + resource, _ := meta.KindToResource(fullyQualifiedKind) + + err = c.client.Get(). + Namespace(c.ns). + Resource(resource.Resource). + Name(name). + SubResource("scale"). + Do(). + Into(result) + return +} + +func (c *scales) Update(kind string, scale *v1beta1.Scale) (result *v1beta1.Scale, err error) { + result = &v1beta1.Scale{} + + // TODO this method needs to take a proper unambiguous kind + fullyQualifiedKind := unversioned.GroupVersionKind{Kind: kind} + resource, _ := meta.KindToResource(fullyQualifiedKind) + + err = c.client.Put(). + Namespace(scale.Namespace). + Resource(resource.Resource). + Name(scale.Name). + SubResource("scale"). + Body(scale). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go new file mode 100644 index 0000000000..65162d46e1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1/thirdpartyresource.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ThirdPartyResourcesGetter has a method to return a ThirdPartyResourceInterface. +// A group's client should implement this interface. +type ThirdPartyResourcesGetter interface { + ThirdPartyResources() ThirdPartyResourceInterface +} + +// ThirdPartyResourceInterface has methods to work with ThirdPartyResource resources. +type ThirdPartyResourceInterface interface { + Create(*v1beta1.ThirdPartyResource) (*v1beta1.ThirdPartyResource, error) + Update(*v1beta1.ThirdPartyResource) (*v1beta1.ThirdPartyResource, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.ThirdPartyResource, error) + List(opts api.ListOptions) (*v1beta1.ThirdPartyResourceList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.ThirdPartyResource, err error) + ThirdPartyResourceExpansion +} + +// thirdPartyResources implements ThirdPartyResourceInterface +type thirdPartyResources struct { + client *ExtensionsClient +} + +// newThirdPartyResources returns a ThirdPartyResources +func newThirdPartyResources(c *ExtensionsClient) *thirdPartyResources { + return &thirdPartyResources{ + client: c, + } +} + +// Create takes the representation of a thirdPartyResource and creates it. Returns the server's representation of the thirdPartyResource, and an error, if there is any. +func (c *thirdPartyResources) Create(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Post(). + Resource("thirdpartyresources"). + Body(thirdPartyResource). + Do(). + Into(result) + return +} + +// Update takes the representation of a thirdPartyResource and updates it. Returns the server's representation of the thirdPartyResource, and an error, if there is any. +func (c *thirdPartyResources) Update(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Put(). + Resource("thirdpartyresources"). + Name(thirdPartyResource.Name). + Body(thirdPartyResource). + Do(). + Into(result) + return +} + +// Delete takes name of the thirdPartyResource and deletes it. Returns an error if one occurs. +func (c *thirdPartyResources) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("thirdpartyresources"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *thirdPartyResources) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("thirdpartyresources"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the thirdPartyResource, and returns the corresponding thirdPartyResource object, and an error if there is any. +func (c *thirdPartyResources) Get(name string) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Get(). + Resource("thirdpartyresources"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ThirdPartyResources that match those selectors. +func (c *thirdPartyResources) List(opts api.ListOptions) (result *v1beta1.ThirdPartyResourceList, err error) { + result = &v1beta1.ThirdPartyResourceList{} + err = c.client.Get(). + Resource("thirdpartyresources"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested thirdPartyResources. +func (c *thirdPartyResources) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("thirdpartyresources"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched thirdPartyResource. +func (c *thirdPartyResources) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.ThirdPartyResource, err error) { + result = &v1beta1.ThirdPartyResource{} + err = c.client.Patch(pt). + Resource("thirdpartyresources"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/doc.go new file mode 100644 index 0000000000..0c1ca41fac --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/generated_expansion.go new file mode 100644 index 0000000000..a2e74c84df --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type PodDisruptionBudgetExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/poddisruptionbudget.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/poddisruptionbudget.go new file mode 100644 index 0000000000..f3cdd3acd5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/poddisruptionbudget.go @@ -0,0 +1,165 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// PodDisruptionBudgetsGetter has a method to return a PodDisruptionBudgetInterface. +// A group's client should implement this interface. +type PodDisruptionBudgetsGetter interface { + PodDisruptionBudgets(namespace string) PodDisruptionBudgetInterface +} + +// PodDisruptionBudgetInterface has methods to work with PodDisruptionBudget resources. +type PodDisruptionBudgetInterface interface { + Create(*v1alpha1.PodDisruptionBudget) (*v1alpha1.PodDisruptionBudget, error) + Update(*v1alpha1.PodDisruptionBudget) (*v1alpha1.PodDisruptionBudget, error) + UpdateStatus(*v1alpha1.PodDisruptionBudget) (*v1alpha1.PodDisruptionBudget, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.PodDisruptionBudget, error) + List(opts api.ListOptions) (*v1alpha1.PodDisruptionBudgetList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodDisruptionBudget, err error) + PodDisruptionBudgetExpansion +} + +// podDisruptionBudgets implements PodDisruptionBudgetInterface +type podDisruptionBudgets struct { + client *PolicyClient + ns string +} + +// newPodDisruptionBudgets returns a PodDisruptionBudgets +func newPodDisruptionBudgets(c *PolicyClient, namespace string) *podDisruptionBudgets { + return &podDisruptionBudgets{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a podDisruptionBudget and creates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. +func (c *podDisruptionBudgets) Create(podDisruptionBudget *v1alpha1.PodDisruptionBudget) (result *v1alpha1.PodDisruptionBudget, err error) { + result = &v1alpha1.PodDisruptionBudget{} + err = c.client.Post(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. +func (c *podDisruptionBudgets) Update(podDisruptionBudget *v1alpha1.PodDisruptionBudget) (result *v1alpha1.PodDisruptionBudget, err error) { + result = &v1alpha1.PodDisruptionBudget{} + err = c.client.Put(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(podDisruptionBudget.Name). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +func (c *podDisruptionBudgets) UpdateStatus(podDisruptionBudget *v1alpha1.PodDisruptionBudget) (result *v1alpha1.PodDisruptionBudget, err error) { + result = &v1alpha1.PodDisruptionBudget{} + err = c.client.Put(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(podDisruptionBudget.Name). + SubResource("status"). + Body(podDisruptionBudget). + Do(). + Into(result) + return +} + +// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs. +func (c *podDisruptionBudgets) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *podDisruptionBudgets) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any. +func (c *podDisruptionBudgets) Get(name string) (result *v1alpha1.PodDisruptionBudget, err error) { + result = &v1alpha1.PodDisruptionBudget{} + err = c.client.Get(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors. +func (c *podDisruptionBudgets) List(opts api.ListOptions) (result *v1alpha1.PodDisruptionBudgetList, err error) { + result = &v1alpha1.PodDisruptionBudgetList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested podDisruptionBudgets. +func (c *podDisruptionBudgets) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched podDisruptionBudget. +func (c *podDisruptionBudgets) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodDisruptionBudget, err error) { + result = &v1alpha1.PodDisruptionBudget{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("poddisruptionbudgets"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/policy_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/policy_client.go new file mode 100644 index 0000000000..0491d3d5c0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1/policy_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type PolicyInterface interface { + GetRESTClient() *rest.RESTClient + PodDisruptionBudgetsGetter +} + +// PolicyClient is used to interact with features provided by the Policy group. +type PolicyClient struct { + *rest.RESTClient +} + +func (c *PolicyClient) PodDisruptionBudgets(namespace string) PodDisruptionBudgetInterface { + return newPodDisruptionBudgets(c, namespace) +} + +// NewForConfig creates a new PolicyClient for the given config. +func NewForConfig(c *rest.Config) (*PolicyClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &PolicyClient{client}, nil +} + +// NewForConfigOrDie creates a new PolicyClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *PolicyClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new PolicyClient for the given RESTClient. +func New(c *rest.RESTClient) *PolicyClient { + return &PolicyClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if policy group is not registered, return an error + g, err := registered.Group("policy") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *PolicyClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrole.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrole.go new file mode 100644 index 0000000000..8e4a838d13 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrole.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ClusterRolesGetter has a method to return a ClusterRoleInterface. +// A group's client should implement this interface. +type ClusterRolesGetter interface { + ClusterRoles() ClusterRoleInterface +} + +// ClusterRoleInterface has methods to work with ClusterRole resources. +type ClusterRoleInterface interface { + Create(*v1alpha1.ClusterRole) (*v1alpha1.ClusterRole, error) + Update(*v1alpha1.ClusterRole) (*v1alpha1.ClusterRole, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.ClusterRole, error) + List(opts api.ListOptions) (*v1alpha1.ClusterRoleList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) + ClusterRoleExpansion +} + +// clusterRoles implements ClusterRoleInterface +type clusterRoles struct { + client *RbacClient +} + +// newClusterRoles returns a ClusterRoles +func newClusterRoles(c *RbacClient) *clusterRoles { + return &clusterRoles{ + client: c, + } +} + +// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Create(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Post(). + Resource("clusterroles"). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. +func (c *clusterRoles) Update(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Put(). + Resource("clusterroles"). + Name(clusterRole.Name). + Body(clusterRole). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. +func (c *clusterRoles) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoles) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("clusterroles"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. +func (c *clusterRoles) Get(name string) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Get(). + Resource("clusterroles"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. +func (c *clusterRoles) List(opts api.ListOptions) (result *v1alpha1.ClusterRoleList, err error) { + result = &v1alpha1.ClusterRoleList{} + err = c.client.Get(). + Resource("clusterroles"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoles. +func (c *clusterRoles) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("clusterroles"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRole. +func (c *clusterRoles) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) { + result = &v1alpha1.ClusterRole{} + err = c.client.Patch(pt). + Resource("clusterroles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go new file mode 100644 index 0000000000..919f84074c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/clusterrolebinding.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// ClusterRoleBindingsGetter has a method to return a ClusterRoleBindingInterface. +// A group's client should implement this interface. +type ClusterRoleBindingsGetter interface { + ClusterRoleBindings() ClusterRoleBindingInterface +} + +// ClusterRoleBindingInterface has methods to work with ClusterRoleBinding resources. +type ClusterRoleBindingInterface interface { + Create(*v1alpha1.ClusterRoleBinding) (*v1alpha1.ClusterRoleBinding, error) + Update(*v1alpha1.ClusterRoleBinding) (*v1alpha1.ClusterRoleBinding, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.ClusterRoleBinding, error) + List(opts api.ListOptions) (*v1alpha1.ClusterRoleBindingList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) + ClusterRoleBindingExpansion +} + +// clusterRoleBindings implements ClusterRoleBindingInterface +type clusterRoleBindings struct { + client *RbacClient +} + +// newClusterRoleBindings returns a ClusterRoleBindings +func newClusterRoleBindings(c *RbacClient) *clusterRoleBindings { + return &clusterRoleBindings{ + client: c, + } +} + +// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Create(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Post(). + Resource("clusterrolebindings"). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. +func (c *clusterRoleBindings) Update(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Put(). + Resource("clusterrolebindings"). + Name(clusterRoleBinding.Name). + Body(clusterRoleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. +func (c *clusterRoleBindings) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterRoleBindings) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("clusterrolebindings"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. +func (c *clusterRoleBindings) Get(name string) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Get(). + Resource("clusterrolebindings"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. +func (c *clusterRoleBindings) List(opts api.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) { + result = &v1alpha1.ClusterRoleBindingList{} + err = c.client.Get(). + Resource("clusterrolebindings"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterRoleBindings. +func (c *clusterRoleBindings) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("clusterrolebindings"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched clusterRoleBinding. +func (c *clusterRoleBindings) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) { + result = &v1alpha1.ClusterRoleBinding{} + err = c.client.Patch(pt). + Resource("clusterrolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/doc.go new file mode 100644 index 0000000000..0c1ca41fac --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/generated_expansion.go new file mode 100644 index 0000000000..86def26631 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/generated_expansion.go @@ -0,0 +1,25 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +type ClusterRoleExpansion interface{} + +type ClusterRoleBindingExpansion interface{} + +type RoleExpansion interface{} + +type RoleBindingExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rbac_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rbac_client.go new file mode 100644 index 0000000000..fde5a60361 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rbac_client.go @@ -0,0 +1,111 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type RbacInterface interface { + GetRESTClient() *rest.RESTClient + ClusterRolesGetter + ClusterRoleBindingsGetter + RolesGetter + RoleBindingsGetter +} + +// RbacClient is used to interact with features provided by the Rbac group. +type RbacClient struct { + *rest.RESTClient +} + +func (c *RbacClient) ClusterRoles() ClusterRoleInterface { + return newClusterRoles(c) +} + +func (c *RbacClient) ClusterRoleBindings() ClusterRoleBindingInterface { + return newClusterRoleBindings(c) +} + +func (c *RbacClient) Roles(namespace string) RoleInterface { + return newRoles(c, namespace) +} + +func (c *RbacClient) RoleBindings(namespace string) RoleBindingInterface { + return newRoleBindings(c, namespace) +} + +// NewForConfig creates a new RbacClient for the given config. +func NewForConfig(c *rest.Config) (*RbacClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &RbacClient{client}, nil +} + +// NewForConfigOrDie creates a new RbacClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *RbacClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new RbacClient for the given RESTClient. +func New(c *rest.RESTClient) *RbacClient { + return &RbacClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if rbac group is not registered, return an error + g, err := registered.Group("rbac.authorization.k8s.io") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *RbacClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/role.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/role.go new file mode 100644 index 0000000000..72de75c65f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/role.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// RolesGetter has a method to return a RoleInterface. +// A group's client should implement this interface. +type RolesGetter interface { + Roles(namespace string) RoleInterface +} + +// RoleInterface has methods to work with Role resources. +type RoleInterface interface { + Create(*v1alpha1.Role) (*v1alpha1.Role, error) + Update(*v1alpha1.Role) (*v1alpha1.Role, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.Role, error) + List(opts api.ListOptions) (*v1alpha1.RoleList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) + RoleExpansion +} + +// roles implements RoleInterface +type roles struct { + client *RbacClient + ns string +} + +// newRoles returns a Roles +func newRoles(c *RbacClient, namespace string) *roles { + return &roles{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Create(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Post(). + Namespace(c.ns). + Resource("roles"). + Body(role). + Do(). + Into(result) + return +} + +// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. +func (c *roles) Update(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Put(). + Namespace(c.ns). + Resource("roles"). + Name(role.Name). + Body(role). + Do(). + Into(result) + return +} + +// Delete takes name of the role and deletes it. Returns an error if one occurs. +func (c *roles) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roles) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the role, and returns the corresponding role object, and an error if there is any. +func (c *roles) Get(name string) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of Roles that match those selectors. +func (c *roles) List(opts api.ListOptions) (result *v1alpha1.RoleList, err error) { + result = &v1alpha1.RoleList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roles. +func (c *roles) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("roles"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched role. +func (c *roles) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) { + result = &v1alpha1.Role{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("roles"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rolebinding.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rolebinding.go new file mode 100644 index 0000000000..649a9dd301 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1/rolebinding.go @@ -0,0 +1,151 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1alpha1 "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// RoleBindingsGetter has a method to return a RoleBindingInterface. +// A group's client should implement this interface. +type RoleBindingsGetter interface { + RoleBindings(namespace string) RoleBindingInterface +} + +// RoleBindingInterface has methods to work with RoleBinding resources. +type RoleBindingInterface interface { + Create(*v1alpha1.RoleBinding) (*v1alpha1.RoleBinding, error) + Update(*v1alpha1.RoleBinding) (*v1alpha1.RoleBinding, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1alpha1.RoleBinding, error) + List(opts api.ListOptions) (*v1alpha1.RoleBindingList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) + RoleBindingExpansion +} + +// roleBindings implements RoleBindingInterface +type roleBindings struct { + client *RbacClient + ns string +} + +// newRoleBindings returns a RoleBindings +func newRoleBindings(c *RbacClient, namespace string) *roleBindings { + return &roleBindings{ + client: c, + ns: namespace, + } +} + +// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Create(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Post(). + Namespace(c.ns). + Resource("rolebindings"). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. +func (c *roleBindings) Update(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Put(). + Namespace(c.ns). + Resource("rolebindings"). + Name(roleBinding.Name). + Body(roleBinding). + Do(). + Into(result) + return +} + +// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. +func (c *roleBindings) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *roleBindings) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. +func (c *roleBindings) Get(name string) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. +func (c *roleBindings) List(opts api.ListOptions) (result *v1alpha1.RoleBindingList, err error) { + result = &v1alpha1.RoleBindingList{} + err = c.client.Get(). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested roleBindings. +func (c *roleBindings) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Namespace(c.ns). + Resource("rolebindings"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched roleBinding. +func (c *roleBindings) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) { + result = &v1alpha1.RoleBinding{} + err = c.client.Patch(pt). + Namespace(c.ns). + Resource("rolebindings"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/doc.go new file mode 100644 index 0000000000..5616c95d32 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This package is generated by client-gen with arguments: --clientset-name=release_1_5 --input=[api/v1,apps/v1alpha1,authentication/v1beta1,authorization/v1beta1,autoscaling/v1,batch/v1,certificates/v1alpha1,extensions/v1beta1,policy/v1alpha1,rbac/v1alpha1,storage/v1beta1] + +// This package has the automatically generated typed clients. +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/generated_expansion.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/generated_expansion.go new file mode 100644 index 0000000000..b18dda009f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/generated_expansion.go @@ -0,0 +1,19 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +type StorageClassExpansion interface{} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storage_client.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storage_client.go new file mode 100644 index 0000000000..813cdbf053 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storage_client.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + registered "k8s.io/client-go/1.5/pkg/apimachinery/registered" + serializer "k8s.io/client-go/1.5/pkg/runtime/serializer" + rest "k8s.io/client-go/1.5/rest" +) + +type StorageInterface interface { + GetRESTClient() *rest.RESTClient + StorageClassesGetter +} + +// StorageClient is used to interact with features provided by the Storage group. +type StorageClient struct { + *rest.RESTClient +} + +func (c *StorageClient) StorageClasses() StorageClassInterface { + return newStorageClasses(c) +} + +// NewForConfig creates a new StorageClient for the given config. +func NewForConfig(c *rest.Config) (*StorageClient, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientFor(&config) + if err != nil { + return nil, err + } + return &StorageClient{client}, nil +} + +// NewForConfigOrDie creates a new StorageClient for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *StorageClient { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new StorageClient for the given RESTClient. +func New(c *rest.RESTClient) *StorageClient { + return &StorageClient{c} +} + +func setConfigDefaults(config *rest.Config) error { + // if storage group is not registered, return an error + g, err := registered.Group("storage.k8s.io") + if err != nil { + return err + } + config.APIPath = "/apis" + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + // TODO: Unconditionally set the config.Version, until we fix the config. + //if config.Version == "" { + copyGroupVersion := g.GroupVersion + config.GroupVersion = ©GroupVersion + //} + + config.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs} + + return nil +} + +// GetRESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *StorageClient) GetRESTClient() *rest.RESTClient { + if c == nil { + return nil + } + return c.RESTClient +} diff --git a/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storageclass.go b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storageclass.go new file mode 100644 index 0000000000..c1453cd43b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1/storageclass.go @@ -0,0 +1,141 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1beta1 "k8s.io/client-go/1.5/pkg/apis/storage/v1beta1" + watch "k8s.io/client-go/1.5/pkg/watch" +) + +// StorageClassesGetter has a method to return a StorageClassInterface. +// A group's client should implement this interface. +type StorageClassesGetter interface { + StorageClasses() StorageClassInterface +} + +// StorageClassInterface has methods to work with StorageClass resources. +type StorageClassInterface interface { + Create(*v1beta1.StorageClass) (*v1beta1.StorageClass, error) + Update(*v1beta1.StorageClass) (*v1beta1.StorageClass, error) + Delete(name string, options *api.DeleteOptions) error + DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error + Get(name string) (*v1beta1.StorageClass, error) + List(opts api.ListOptions) (*v1beta1.StorageClassList, error) + Watch(opts api.ListOptions) (watch.Interface, error) + Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) + StorageClassExpansion +} + +// storageClasses implements StorageClassInterface +type storageClasses struct { + client *StorageClient +} + +// newStorageClasses returns a StorageClasses +func newStorageClasses(c *StorageClient) *storageClasses { + return &storageClasses{ + client: c, + } +} + +// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Post(). + Resource("storageclasses"). + Body(storageClass). + Do(). + Into(result) + return +} + +// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any. +func (c *storageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Put(). + Resource("storageclasses"). + Name(storageClass.Name). + Body(storageClass). + Do(). + Into(result) + return +} + +// Delete takes name of the storageClass and deletes it. Returns an error if one occurs. +func (c *storageClasses) Delete(name string, options *api.DeleteOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + Name(name). + Body(options). + Do(). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *storageClasses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error { + return c.client.Delete(). + Resource("storageclasses"). + VersionedParams(&listOptions, api.ParameterCodec). + Body(options). + Do(). + Error() +} + +// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. +func (c *storageClasses) Get(name string) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Get(). + Resource("storageclasses"). + Name(name). + Do(). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of StorageClasses that match those selectors. +func (c *storageClasses) List(opts api.ListOptions) (result *v1beta1.StorageClassList, err error) { + result = &v1beta1.StorageClassList{} + err = c.client.Get(). + Resource("storageclasses"). + VersionedParams(&opts, api.ParameterCodec). + Do(). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested storageClasses. +func (c *storageClasses) Watch(opts api.ListOptions) (watch.Interface, error) { + return c.client.Get(). + Prefix("watch"). + Resource("storageclasses"). + VersionedParams(&opts, api.ParameterCodec). + Watch() +} + +// Patch applies the patch and returns the patched storageClass. +func (c *storageClasses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) { + result = &v1beta1.StorageClass{} + err = c.client.Patch(pt). + Resource("storageclasses"). + SubResource(subresources...). + Name(name). + Body(data). + Do(). + Into(result) + return +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/OWNERS b/vendor/k8s.io/client-go/1.5/pkg/api/OWNERS new file mode 100644 index 0000000000..d28472e0fd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/OWNERS @@ -0,0 +1,6 @@ +assignees: + - bgrant0607 + - erictune + - lavalamp + - smarterclayton + - thockin diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/context.go b/vendor/k8s.io/client-go/1.5/pkg/api/context.go new file mode 100644 index 0000000000..fba7b73380 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/context.go @@ -0,0 +1,152 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + stderrs "errors" + "time" + + "golang.org/x/net/context" + "k8s.io/client-go/1.5/pkg/auth/user" + "k8s.io/client-go/1.5/pkg/types" +) + +// Context carries values across API boundaries. +// This context matches the context.Context interface +// (https://blog.golang.org/context), for the purposes +// of passing the api.Context through to the storage tier. +// TODO: Determine the extent that this abstraction+interface +// is used by the api, and whether we can remove. +type Context interface { + // Value returns the value associated with key or nil if none. + Value(key interface{}) interface{} + + // Deadline returns the time when this Context will be canceled, if any. + Deadline() (deadline time.Time, ok bool) + + // Done returns a channel that is closed when this Context is canceled + // or times out. + Done() <-chan struct{} + + // Err indicates why this context was canceled, after the Done channel + // is closed. + Err() error +} + +// The key type is unexported to prevent collisions +type key int + +const ( + // namespaceKey is the context key for the request namespace. + namespaceKey key = iota + + // userKey is the context key for the request user. + userKey + + // uidKey is the context key for the uid to assign to an object on create. + uidKey + + // userAgentKey is the context key for the request user agent. + userAgentKey +) + +// NewContext instantiates a base context object for request flows. +func NewContext() Context { + return context.TODO() +} + +// NewDefaultContext instantiates a base context object for request flows in the default namespace +func NewDefaultContext() Context { + return WithNamespace(NewContext(), NamespaceDefault) +} + +// WithValue returns a copy of parent in which the value associated with key is val. +func WithValue(parent Context, key interface{}, val interface{}) Context { + internalCtx, ok := parent.(context.Context) + if !ok { + panic(stderrs.New("Invalid context type")) + } + return context.WithValue(internalCtx, key, val) +} + +// WithNamespace returns a copy of parent in which the namespace value is set +func WithNamespace(parent Context, namespace string) Context { + return WithValue(parent, namespaceKey, namespace) +} + +// NamespaceFrom returns the value of the namespace key on the ctx +func NamespaceFrom(ctx Context) (string, bool) { + namespace, ok := ctx.Value(namespaceKey).(string) + return namespace, ok +} + +// NamespaceValue returns the value of the namespace key on the ctx, or the empty string if none +func NamespaceValue(ctx Context) string { + namespace, _ := NamespaceFrom(ctx) + return namespace +} + +// ValidNamespace returns false if the namespace on the context differs from the resource. If the resource has no namespace, it is set to the value in the context. +func ValidNamespace(ctx Context, resource *ObjectMeta) bool { + ns, ok := NamespaceFrom(ctx) + if len(resource.Namespace) == 0 { + resource.Namespace = ns + } + return ns == resource.Namespace && ok +} + +// WithNamespaceDefaultIfNone returns a context whose namespace is the default if and only if the parent context has no namespace value +func WithNamespaceDefaultIfNone(parent Context) Context { + namespace, ok := NamespaceFrom(parent) + if !ok || len(namespace) == 0 { + return WithNamespace(parent, NamespaceDefault) + } + return parent +} + +// WithUser returns a copy of parent in which the user value is set +func WithUser(parent Context, user user.Info) Context { + return WithValue(parent, userKey, user) +} + +// UserFrom returns the value of the user key on the ctx +func UserFrom(ctx Context) (user.Info, bool) { + user, ok := ctx.Value(userKey).(user.Info) + return user, ok +} + +// WithUID returns a copy of parent in which the uid value is set +func WithUID(parent Context, uid types.UID) Context { + return WithValue(parent, uidKey, uid) +} + +// UIDFrom returns the value of the uid key on the ctx +func UIDFrom(ctx Context) (types.UID, bool) { + uid, ok := ctx.Value(uidKey).(types.UID) + return uid, ok +} + +// WithUserAgent returns a copy of parent in which the user value is set +func WithUserAgent(parent Context, userAgent string) Context { + return WithValue(parent, userAgentKey, userAgent) +} + +// UserAgentFrom returns the value of the userAgent key on the ctx +func UserAgentFrom(ctx Context) (string, bool) { + userAgent, ok := ctx.Value(userAgentKey).(string) + return userAgent, ok +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/api/conversion.go new file mode 100644 index 0000000000..782c7e5dfc --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/conversion.go @@ -0,0 +1,245 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/intstr" + utillabels "k8s.io/client-go/1.5/pkg/util/labels" + "k8s.io/client-go/1.5/pkg/util/validation/field" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + return scheme.AddConversionFuncs( + Convert_unversioned_TypeMeta_To_unversioned_TypeMeta, + + Convert_unversioned_ListMeta_To_unversioned_ListMeta, + + Convert_intstr_IntOrString_To_intstr_IntOrString, + + Convert_unversioned_Time_To_unversioned_Time, + + Convert_Slice_string_To_unversioned_Time, + + Convert_resource_Quantity_To_resource_Quantity, + + Convert_string_To_labels_Selector, + Convert_labels_Selector_To_string, + + Convert_string_To_fields_Selector, + Convert_fields_Selector_To_string, + + Convert_Pointer_bool_To_bool, + Convert_bool_To_Pointer_bool, + + Convert_Pointer_string_To_string, + Convert_string_To_Pointer_string, + + Convert_Pointer_int64_To_int, + Convert_int_To_Pointer_int64, + + Convert_Pointer_int32_To_int32, + Convert_int32_To_Pointer_int32, + + Convert_Pointer_float64_To_float64, + Convert_float64_To_Pointer_float64, + + Convert_map_to_unversioned_LabelSelector, + Convert_unversioned_LabelSelector_to_map, + ) +} + +func Convert_Pointer_float64_To_float64(in **float64, out *float64, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = float64(**in) + return nil +} + +func Convert_float64_To_Pointer_float64(in *float64, out **float64, s conversion.Scope) error { + temp := float64(*in) + *out = &temp + return nil +} + +func Convert_Pointer_int32_To_int32(in **int32, out *int32, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = int32(**in) + return nil +} + +func Convert_int32_To_Pointer_int32(in *int32, out **int32, s conversion.Scope) error { + temp := int32(*in) + *out = &temp + return nil +} + +func Convert_Pointer_int64_To_int(in **int64, out *int, s conversion.Scope) error { + if *in == nil { + *out = 0 + return nil + } + *out = int(**in) + return nil +} + +func Convert_int_To_Pointer_int64(in *int, out **int64, s conversion.Scope) error { + temp := int64(*in) + *out = &temp + return nil +} + +func Convert_Pointer_string_To_string(in **string, out *string, s conversion.Scope) error { + if *in == nil { + *out = "" + return nil + } + *out = **in + return nil +} + +func Convert_string_To_Pointer_string(in *string, out **string, s conversion.Scope) error { + if in == nil { + stringVar := "" + *out = &stringVar + return nil + } + *out = in + return nil +} + +func Convert_Pointer_bool_To_bool(in **bool, out *bool, s conversion.Scope) error { + if *in == nil { + *out = false + return nil + } + *out = **in + return nil +} + +func Convert_bool_To_Pointer_bool(in *bool, out **bool, s conversion.Scope) error { + if in == nil { + boolVar := false + *out = &boolVar + return nil + } + *out = in + return nil +} + +func Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(in, out *unversioned.TypeMeta, s conversion.Scope) error { + // These values are explicitly not copied + //out.APIVersion = in.APIVersion + //out.Kind = in.Kind + return nil +} + +func Convert_unversioned_ListMeta_To_unversioned_ListMeta(in, out *unversioned.ListMeta, s conversion.Scope) error { + *out = *in + return nil +} + +func Convert_intstr_IntOrString_To_intstr_IntOrString(in, out *intstr.IntOrString, s conversion.Scope) error { + *out = *in + return nil +} + +func Convert_unversioned_Time_To_unversioned_Time(in *unversioned.Time, out *unversioned.Time, s conversion.Scope) error { + // Cannot deep copy these, because time.Time has unexported fields. + *out = *in + return nil +} + +// Convert_Slice_string_To_unversioned_Time allows converting a URL query parameter value +func Convert_Slice_string_To_unversioned_Time(input *[]string, out *unversioned.Time, s conversion.Scope) error { + str := "" + if len(*input) > 0 { + str = (*input)[0] + } + return out.UnmarshalQueryParameter(str) +} + +func Convert_string_To_labels_Selector(in *string, out *labels.Selector, s conversion.Scope) error { + selector, err := labels.Parse(*in) + if err != nil { + return err + } + *out = selector + return nil +} + +func Convert_string_To_fields_Selector(in *string, out *fields.Selector, s conversion.Scope) error { + selector, err := fields.ParseSelector(*in) + if err != nil { + return err + } + *out = selector + return nil +} + +func Convert_labels_Selector_To_string(in *labels.Selector, out *string, s conversion.Scope) error { + if *in == nil { + return nil + } + *out = (*in).String() + return nil +} + +func Convert_fields_Selector_To_string(in *fields.Selector, out *string, s conversion.Scope) error { + if *in == nil { + return nil + } + *out = (*in).String() + return nil +} + +func Convert_resource_Quantity_To_resource_Quantity(in *resource.Quantity, out *resource.Quantity, s conversion.Scope) error { + *out = *in + return nil +} + +func Convert_map_to_unversioned_LabelSelector(in *map[string]string, out *unversioned.LabelSelector, s conversion.Scope) error { + if in == nil { + return nil + } + out = new(unversioned.LabelSelector) + for labelKey, labelValue := range *in { + utillabels.AddLabelToSelector(out, labelKey, labelValue) + } + return nil +} + +func Convert_unversioned_LabelSelector_to_map(in *unversioned.LabelSelector, out *map[string]string, s conversion.Scope) error { + var err error + *out, err = unversioned.LabelSelectorAsMap(in) + if err != nil { + err = field.Invalid(field.NewPath("labelSelector"), *in, fmt.Sprintf("cannot convert to old selector: %v", err)) + } + return err +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/api/defaults.go new file mode 100644 index 0000000000..33f72151f5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/defaults.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + func(obj *ListOptions) { + if obj.LabelSelector == nil { + obj.LabelSelector = labels.Everything() + } + if obj.FieldSelector == nil { + obj.FieldSelector = fields.Everything() + } + }, + ) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/doc.go b/vendor/k8s.io/client-go/1.5/pkg/api/doc.go new file mode 100644 index 0000000000..1507a8823b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register + +// Package api contains the latest (or "internal") version of the +// Kubernetes API objects. This is the API objects as represented in memory. +// The contract presented to clients is located in the versioned packages, +// which are sub-directories. The first one is "v1". Those packages +// describe how a particular version is serialized to storage/network. +package api diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/errors/doc.go b/vendor/k8s.io/client-go/1.5/pkg/api/errors/doc.go new file mode 100644 index 0000000000..58751ed0ec --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/errors/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package errors provides detailed error types for api field validation. +package errors diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/errors/errors.go b/vendor/k8s.io/client-go/1.5/pkg/api/errors/errors.go new file mode 100644 index 0000000000..17567dcd79 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/errors/errors.go @@ -0,0 +1,461 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "encoding/json" + "fmt" + "net/http" + "strings" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/validation/field" +) + +// HTTP Status codes not in the golang http package. +const ( + StatusUnprocessableEntity = 422 + StatusTooManyRequests = 429 + // HTTP recommendations are for servers to define 5xx error codes + // for scenarios not covered by behavior. In this case, ServerTimeout + // is an indication that a transient server error has occurred and the + // client *should* retry, with an optional Retry-After header to specify + // the back off window. + StatusServerTimeout = 504 +) + +// StatusError is an error intended for consumption by a REST API server; it can also be +// reconstructed by clients from a REST response. Public to allow easy type switches. +type StatusError struct { + ErrStatus unversioned.Status +} + +// APIStatus is exposed by errors that can be converted to an api.Status object +// for finer grained details. +type APIStatus interface { + Status() unversioned.Status +} + +var _ error = &StatusError{} + +// Error implements the Error interface. +func (e *StatusError) Error() string { + return e.ErrStatus.Message +} + +// Status allows access to e's status without having to know the detailed workings +// of StatusError. Used by pkg/apiserver. +func (e *StatusError) Status() unversioned.Status { + return e.ErrStatus +} + +// DebugError reports extended info about the error to debug output. +func (e *StatusError) DebugError() (string, []interface{}) { + if out, err := json.MarshalIndent(e.ErrStatus, "", " "); err == nil { + return "server response object: %s", []interface{}{string(out)} + } + return "server response object: %#v", []interface{}{e.ErrStatus} +} + +// UnexpectedObjectError can be returned by FromObject if it's passed a non-status object. +type UnexpectedObjectError struct { + Object runtime.Object +} + +// Error returns an error message describing 'u'. +func (u *UnexpectedObjectError) Error() string { + return fmt.Sprintf("unexpected object: %v", u.Object) +} + +// FromObject generates an StatusError from an unversioned.Status, if that is the type of obj; otherwise, +// returns an UnexpecteObjectError. +func FromObject(obj runtime.Object) error { + switch t := obj.(type) { + case *unversioned.Status: + return &StatusError{*t} + } + return &UnexpectedObjectError{obj} +} + +// NewNotFound returns a new error which indicates that the resource of the kind and the name was not found. +func NewNotFound(qualifiedResource unversioned.GroupResource, name string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusNotFound, + Reason: unversioned.StatusReasonNotFound, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q not found", qualifiedResource.String(), name), + }} +} + +// NewAlreadyExists returns an error indicating the item requested exists by that identifier. +func NewAlreadyExists(qualifiedResource unversioned.GroupResource, name string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusConflict, + Reason: unversioned.StatusReasonAlreadyExists, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q already exists", qualifiedResource.String(), name), + }} +} + +// NewUnauthorized returns an error indicating the client is not authorized to perform the requested +// action. +func NewUnauthorized(reason string) *StatusError { + message := reason + if len(message) == 0 { + message = "not authorized" + } + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusUnauthorized, + Reason: unversioned.StatusReasonUnauthorized, + Message: message, + }} +} + +// NewForbidden returns an error indicating the requested action was forbidden +func NewForbidden(qualifiedResource unversioned.GroupResource, name string, err error) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusForbidden, + Reason: unversioned.StatusReasonForbidden, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("%s %q is forbidden: %v", qualifiedResource.String(), name, err), + }} +} + +// NewConflict returns an error indicating the item can't be updated as provided. +func NewConflict(qualifiedResource unversioned.GroupResource, name string, err error) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusConflict, + Reason: unversioned.StatusReasonConflict, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + }, + Message: fmt.Sprintf("Operation cannot be fulfilled on %s %q: %v", qualifiedResource.String(), name, err), + }} +} + +// NewGone returns an error indicating the item no longer available at the server and no forwarding address is known. +func NewGone(message string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusGone, + Reason: unversioned.StatusReasonGone, + Message: message, + }} +} + +// NewInvalid returns an error indicating the item is invalid and cannot be processed. +func NewInvalid(qualifiedKind unversioned.GroupKind, name string, errs field.ErrorList) *StatusError { + causes := make([]unversioned.StatusCause, 0, len(errs)) + for i := range errs { + err := errs[i] + causes = append(causes, unversioned.StatusCause{ + Type: unversioned.CauseType(err.Type), + Message: err.ErrorBody(), + Field: err.Field, + }) + } + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: StatusUnprocessableEntity, // RFC 4918: StatusUnprocessableEntity + Reason: unversioned.StatusReasonInvalid, + Details: &unversioned.StatusDetails{ + Group: qualifiedKind.Group, + Kind: qualifiedKind.Kind, + Name: name, + Causes: causes, + }, + Message: fmt.Sprintf("%s %q is invalid: %v", qualifiedKind.String(), name, errs.ToAggregate()), + }} +} + +// NewBadRequest creates an error that indicates that the request is invalid and can not be processed. +func NewBadRequest(reason string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusBadRequest, + Reason: unversioned.StatusReasonBadRequest, + Message: reason, + }} +} + +// NewServiceUnavailable creates an error that indicates that the requested service is unavailable. +func NewServiceUnavailable(reason string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusServiceUnavailable, + Reason: unversioned.StatusReasonServiceUnavailable, + Message: reason, + }} +} + +// NewMethodNotSupported returns an error indicating the requested action is not supported on this kind. +func NewMethodNotSupported(qualifiedResource unversioned.GroupResource, action string) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusMethodNotAllowed, + Reason: unversioned.StatusReasonMethodNotAllowed, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + }, + Message: fmt.Sprintf("%s is not supported on resources of kind %q", action, qualifiedResource.String()), + }} +} + +// NewServerTimeout returns an error indicating the requested action could not be completed due to a +// transient error, and the client should try again. +func NewServerTimeout(qualifiedResource unversioned.GroupResource, operation string, retryAfterSeconds int) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusInternalServerError, + Reason: unversioned.StatusReasonServerTimeout, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: operation, + RetryAfterSeconds: int32(retryAfterSeconds), + }, + Message: fmt.Sprintf("The %s operation against %s could not be completed at this time, please try again.", operation, qualifiedResource.String()), + }} +} + +// NewServerTimeoutForKind should not exist. Server timeouts happen when accessing resources, the Kind is just what we +// happened to be looking at when the request failed. This delegates to keep code sane, but we should work towards removing this. +func NewServerTimeoutForKind(qualifiedKind unversioned.GroupKind, operation string, retryAfterSeconds int) *StatusError { + return NewServerTimeout(unversioned.GroupResource{Group: qualifiedKind.Group, Resource: qualifiedKind.Kind}, operation, retryAfterSeconds) +} + +// NewInternalError returns an error indicating the item is invalid and cannot be processed. +func NewInternalError(err error) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: http.StatusInternalServerError, + Reason: unversioned.StatusReasonInternalError, + Details: &unversioned.StatusDetails{ + Causes: []unversioned.StatusCause{{Message: err.Error()}}, + }, + Message: fmt.Sprintf("Internal error occurred: %v", err), + }} +} + +// NewTimeoutError returns an error indicating that a timeout occurred before the request +// could be completed. Clients may retry, but the operation may still complete. +func NewTimeoutError(message string, retryAfterSeconds int) *StatusError { + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: StatusServerTimeout, + Reason: unversioned.StatusReasonTimeout, + Message: fmt.Sprintf("Timeout: %s", message), + Details: &unversioned.StatusDetails{ + RetryAfterSeconds: int32(retryAfterSeconds), + }, + }} +} + +// NewGenericServerResponse returns a new error for server responses that are not in a recognizable form. +func NewGenericServerResponse(code int, verb string, qualifiedResource unversioned.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { + reason := unversioned.StatusReasonUnknown + message := fmt.Sprintf("the server responded with the status code %d but did not return more information", code) + switch code { + case http.StatusConflict: + if verb == "POST" { + reason = unversioned.StatusReasonAlreadyExists + } else { + reason = unversioned.StatusReasonConflict + } + message = "the server reported a conflict" + case http.StatusNotFound: + reason = unversioned.StatusReasonNotFound + message = "the server could not find the requested resource" + case http.StatusBadRequest: + reason = unversioned.StatusReasonBadRequest + message = "the server rejected our request for an unknown reason" + case http.StatusUnauthorized: + reason = unversioned.StatusReasonUnauthorized + message = "the server has asked for the client to provide credentials" + case http.StatusForbidden: + reason = unversioned.StatusReasonForbidden + message = "the server does not allow access to the requested resource" + case http.StatusMethodNotAllowed: + reason = unversioned.StatusReasonMethodNotAllowed + message = "the server does not allow this method on the requested resource" + case StatusUnprocessableEntity: + reason = unversioned.StatusReasonInvalid + message = "the server rejected our request due to an error in our request" + case StatusServerTimeout: + reason = unversioned.StatusReasonServerTimeout + message = "the server cannot complete the requested operation at this time, try again later" + case StatusTooManyRequests: + reason = unversioned.StatusReasonTimeout + message = "the server has received too many requests and has asked us to try again later" + default: + if code >= 500 { + reason = unversioned.StatusReasonInternalError + message = fmt.Sprintf("an error on the server (%q) has prevented the request from succeeding", serverMessage) + } + } + switch { + case !qualifiedResource.Empty() && len(name) > 0: + message = fmt.Sprintf("%s (%s %s %s)", message, strings.ToLower(verb), qualifiedResource.String(), name) + case !qualifiedResource.Empty(): + message = fmt.Sprintf("%s (%s %s)", message, strings.ToLower(verb), qualifiedResource.String()) + } + var causes []unversioned.StatusCause + if isUnexpectedResponse { + causes = []unversioned.StatusCause{ + { + Type: unversioned.CauseTypeUnexpectedServerResponse, + Message: serverMessage, + }, + } + } else { + causes = nil + } + return &StatusError{unversioned.Status{ + Status: unversioned.StatusFailure, + Code: int32(code), + Reason: reason, + Details: &unversioned.StatusDetails{ + Group: qualifiedResource.Group, + Kind: qualifiedResource.Resource, + Name: name, + + Causes: causes, + RetryAfterSeconds: int32(retryAfterSeconds), + }, + Message: message, + }} +} + +// IsNotFound returns true if the specified error was created by NewNotFound. +func IsNotFound(err error) bool { + return reasonForError(err) == unversioned.StatusReasonNotFound +} + +// IsAlreadyExists determines if the err is an error which indicates that a specified resource already exists. +func IsAlreadyExists(err error) bool { + return reasonForError(err) == unversioned.StatusReasonAlreadyExists +} + +// IsConflict determines if the err is an error which indicates the provided update conflicts. +func IsConflict(err error) bool { + return reasonForError(err) == unversioned.StatusReasonConflict +} + +// IsInvalid determines if the err is an error which indicates the provided resource is not valid. +func IsInvalid(err error) bool { + return reasonForError(err) == unversioned.StatusReasonInvalid +} + +// IsMethodNotSupported determines if the err is an error which indicates the provided action could not +// be performed because it is not supported by the server. +func IsMethodNotSupported(err error) bool { + return reasonForError(err) == unversioned.StatusReasonMethodNotAllowed +} + +// IsBadRequest determines if err is an error which indicates that the request is invalid. +func IsBadRequest(err error) bool { + return reasonForError(err) == unversioned.StatusReasonBadRequest +} + +// IsUnauthorized determines if err is an error which indicates that the request is unauthorized and +// requires authentication by the user. +func IsUnauthorized(err error) bool { + return reasonForError(err) == unversioned.StatusReasonUnauthorized +} + +// IsForbidden determines if err is an error which indicates that the request is forbidden and cannot +// be completed as requested. +func IsForbidden(err error) bool { + return reasonForError(err) == unversioned.StatusReasonForbidden +} + +// IsServerTimeout determines if err is an error which indicates that the request needs to be retried +// by the client. +func IsServerTimeout(err error) bool { + return reasonForError(err) == unversioned.StatusReasonServerTimeout +} + +// IsInternalError determines if err is an error which indicates an internal server error. +func IsInternalError(err error) bool { + return reasonForError(err) == unversioned.StatusReasonInternalError +} + +// IsUnexpectedServerError returns true if the server response was not in the expected API format, +// and may be the result of another HTTP actor. +func IsUnexpectedServerError(err error) bool { + switch t := err.(type) { + case APIStatus: + if d := t.Status().Details; d != nil { + for _, cause := range d.Causes { + if cause.Type == unversioned.CauseTypeUnexpectedServerResponse { + return true + } + } + } + } + return false +} + +// IsUnexpectedObjectError determines if err is due to an unexpected object from the master. +func IsUnexpectedObjectError(err error) bool { + _, ok := err.(*UnexpectedObjectError) + return err != nil && ok +} + +// SuggestsClientDelay returns true if this error suggests a client delay as well as the +// suggested seconds to wait, or false if the error does not imply a wait. +func SuggestsClientDelay(err error) (int, bool) { + switch t := err.(type) { + case APIStatus: + if t.Status().Details != nil { + switch t.Status().Reason { + case unversioned.StatusReasonServerTimeout, unversioned.StatusReasonTimeout: + return int(t.Status().Details.RetryAfterSeconds), true + } + } + } + return 0, false +} + +func reasonForError(err error) unversioned.StatusReason { + switch t := err.(type) { + case APIStatus: + return t.Status().Reason + } + return unversioned.StatusReasonUnknown +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/field_constants.go b/vendor/k8s.io/client-go/1.5/pkg/api/field_constants.go new file mode 100644 index 0000000000..5ead0f13fe --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/field_constants.go @@ -0,0 +1,38 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +// Field path constants that are specific to the internal API +// representation. +const ( + NodeUnschedulableField = "spec.unschedulable" + ObjectNameField = "metadata.name" + PodHostField = "spec.nodeName" + PodStatusField = "status.phase" + SecretTypeField = "type" + + EventReasonField = "reason" + EventSourceField = "source" + EventTypeField = "type" + EventInvolvedKindField = "involvedObject.kind" + EventInvolvedNamespaceField = "involvedObject.namespace" + EventInvolvedNameField = "involvedObject.name" + EventInvolvedUIDField = "involvedObject.uid" + EventInvolvedAPIVersionField = "involvedObject.apiVersion" + EventInvolvedResourceVersionField = "involvedObject.resourceVersion" + EventInvolvedFieldPathField = "involvedObject.fieldPath" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/generate.go b/vendor/k8s.io/client-go/1.5/pkg/api/generate.go new file mode 100644 index 0000000000..59be6f54c0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/generate.go @@ -0,0 +1,64 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "fmt" + + utilrand "k8s.io/client-go/1.5/pkg/util/rand" +) + +// NameGenerator generates names for objects. Some backends may have more information +// available to guide selection of new names and this interface hides those details. +type NameGenerator interface { + // GenerateName generates a valid name from the base name, adding a random suffix to the + // the base. If base is valid, the returned name must also be valid. The generator is + // responsible for knowing the maximum valid name length. + GenerateName(base string) string +} + +// GenerateName will resolve the object name of the provided ObjectMeta to a generated version if +// necessary. It expects that validation for ObjectMeta has already completed (that Base is a +// valid name) and that the NameGenerator generates a name that is also valid. +func GenerateName(u NameGenerator, meta *ObjectMeta) { + if len(meta.GenerateName) == 0 || len(meta.Name) != 0 { + return + } + meta.Name = u.GenerateName(meta.GenerateName) +} + +// simpleNameGenerator generates random names. +type simpleNameGenerator struct{} + +// SimpleNameGenerator is a generator that returns the name plus a random suffix of five alphanumerics +// when a name is requested. The string is guaranteed to not exceed the length of a standard Kubernetes +// name (63 characters) +var SimpleNameGenerator NameGenerator = simpleNameGenerator{} + +const ( + // TODO: make this flexible for non-core resources with alternate naming rules. + maxNameLength = 63 + randomLength = 5 + maxGeneratedNameLength = maxNameLength - randomLength +) + +func (simpleNameGenerator) GenerateName(base string) string { + if len(base) > maxGeneratedNameLength { + base = base[:maxGeneratedNameLength] + } + return fmt.Sprintf("%s%s", base, utilrand.String(randomLength)) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/helpers.go b/vendor/k8s.io/client-go/1.5/pkg/api/helpers.go new file mode 100644 index 0000000000..6aa1a311d1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/helpers.go @@ -0,0 +1,600 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "crypto/md5" + "encoding/json" + "fmt" + "reflect" + "strings" + "time" + + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/selection" + "k8s.io/client-go/1.5/pkg/types" + "k8s.io/client-go/1.5/pkg/util/sets" + + "github.com/davecgh/go-spew/spew" +) + +// Conversion error conveniently packages up errors in conversions. +type ConversionError struct { + In, Out interface{} + Message string +} + +// Return a helpful string about the error +func (c *ConversionError) Error() string { + return spew.Sprintf( + "Conversion error: %s. (in: %v(%+v) out: %v)", + c.Message, reflect.TypeOf(c.In), c.In, reflect.TypeOf(c.Out), + ) +} + +// Semantic can do semantic deep equality checks for api objects. +// Example: api.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true +var Semantic = conversion.EqualitiesOrDie( + func(a, b resource.Quantity) bool { + // Ignore formatting, only care that numeric value stayed the same. + // TODO: if we decide it's important, it should be safe to start comparing the format. + // + // Uninitialized quantities are equivalent to 0 quantities. + return a.Cmp(b) == 0 + }, + func(a, b unversioned.Time) bool { + return a.UTC() == b.UTC() + }, + func(a, b labels.Selector) bool { + return a.String() == b.String() + }, + func(a, b fields.Selector) bool { + return a.String() == b.String() + }, +) + +var standardResourceQuotaScopes = sets.NewString( + string(ResourceQuotaScopeTerminating), + string(ResourceQuotaScopeNotTerminating), + string(ResourceQuotaScopeBestEffort), + string(ResourceQuotaScopeNotBestEffort), +) + +// IsStandardResourceQuotaScope returns true if the scope is a standard value +func IsStandardResourceQuotaScope(str string) bool { + return standardResourceQuotaScopes.Has(str) +} + +var podObjectCountQuotaResources = sets.NewString( + string(ResourcePods), +) + +var podComputeQuotaResources = sets.NewString( + string(ResourceCPU), + string(ResourceMemory), + string(ResourceLimitsCPU), + string(ResourceLimitsMemory), + string(ResourceRequestsCPU), + string(ResourceRequestsMemory), +) + +// IsResourceQuotaScopeValidForResource returns true if the resource applies to the specified scope +func IsResourceQuotaScopeValidForResource(scope ResourceQuotaScope, resource string) bool { + switch scope { + case ResourceQuotaScopeTerminating, ResourceQuotaScopeNotTerminating, ResourceQuotaScopeNotBestEffort: + return podObjectCountQuotaResources.Has(resource) || podComputeQuotaResources.Has(resource) + case ResourceQuotaScopeBestEffort: + return podObjectCountQuotaResources.Has(resource) + default: + return true + } +} + +var standardContainerResources = sets.NewString( + string(ResourceCPU), + string(ResourceMemory), +) + +// IsStandardContainerResourceName returns true if the container can make a resource request +// for the specified resource +func IsStandardContainerResourceName(str string) bool { + return standardContainerResources.Has(str) +} + +var standardLimitRangeTypes = sets.NewString( + string(LimitTypePod), + string(LimitTypeContainer), +) + +// IsStandardLimitRangeType returns true if the type is Pod or Container +func IsStandardLimitRangeType(str string) bool { + return standardLimitRangeTypes.Has(str) +} + +var standardQuotaResources = sets.NewString( + string(ResourceCPU), + string(ResourceMemory), + string(ResourceRequestsCPU), + string(ResourceRequestsMemory), + string(ResourceRequestsStorage), + string(ResourceLimitsCPU), + string(ResourceLimitsMemory), + string(ResourcePods), + string(ResourceQuotas), + string(ResourceServices), + string(ResourceReplicationControllers), + string(ResourceSecrets), + string(ResourcePersistentVolumeClaims), + string(ResourceConfigMaps), + string(ResourceServicesNodePorts), + string(ResourceServicesLoadBalancers), +) + +// IsStandardQuotaResourceName returns true if the resource is known to +// the quota tracking system +func IsStandardQuotaResourceName(str string) bool { + return standardQuotaResources.Has(str) +} + +var standardResources = sets.NewString( + string(ResourceCPU), + string(ResourceMemory), + string(ResourceRequestsCPU), + string(ResourceRequestsMemory), + string(ResourceLimitsCPU), + string(ResourceLimitsMemory), + string(ResourcePods), + string(ResourceQuotas), + string(ResourceServices), + string(ResourceReplicationControllers), + string(ResourceSecrets), + string(ResourceConfigMaps), + string(ResourcePersistentVolumeClaims), + string(ResourceStorage), +) + +// IsStandardResourceName returns true if the resource is known to the system +func IsStandardResourceName(str string) bool { + return standardResources.Has(str) +} + +var integerResources = sets.NewString( + string(ResourcePods), + string(ResourceQuotas), + string(ResourceServices), + string(ResourceReplicationControllers), + string(ResourceSecrets), + string(ResourceConfigMaps), + string(ResourcePersistentVolumeClaims), + string(ResourceServicesNodePorts), + string(ResourceServicesLoadBalancers), +) + +// IsIntegerResourceName returns true if the resource is measured in integer values +func IsIntegerResourceName(str string) bool { + return integerResources.Has(str) +} + +// NewDeleteOptions returns a DeleteOptions indicating the resource should +// be deleted within the specified grace period. Use zero to indicate +// immediate deletion. If you would prefer to use the default grace period, +// use &api.DeleteOptions{} directly. +func NewDeleteOptions(grace int64) *DeleteOptions { + return &DeleteOptions{GracePeriodSeconds: &grace} +} + +// NewPreconditionDeleteOptions returns a DeleteOptions with a UID precondition set. +func NewPreconditionDeleteOptions(uid string) *DeleteOptions { + u := types.UID(uid) + p := Preconditions{UID: &u} + return &DeleteOptions{Preconditions: &p} +} + +// NewUIDPreconditions returns a Preconditions with UID set. +func NewUIDPreconditions(uid string) *Preconditions { + u := types.UID(uid) + return &Preconditions{UID: &u} +} + +// this function aims to check if the service's ClusterIP is set or not +// the objective is not to perform validation here +func IsServiceIPSet(service *Service) bool { + return service.Spec.ClusterIP != ClusterIPNone && service.Spec.ClusterIP != "" +} + +// this function aims to check if the service's cluster IP is requested or not +func IsServiceIPRequested(service *Service) bool { + // ExternalName services are CNAME aliases to external ones. Ignore the IP. + if service.Spec.Type == ServiceTypeExternalName { + return false + } + return service.Spec.ClusterIP == "" +} + +var standardFinalizers = sets.NewString( + string(FinalizerKubernetes), + FinalizerOrphan, +) + +func IsStandardFinalizerName(str string) bool { + return standardFinalizers.Has(str) +} + +// SingleObject returns a ListOptions for watching a single object. +func SingleObject(meta ObjectMeta) ListOptions { + return ListOptions{ + FieldSelector: fields.OneTermEqualSelector("metadata.name", meta.Name), + ResourceVersion: meta.ResourceVersion, + } +} + +// AddToNodeAddresses appends the NodeAddresses to the passed-by-pointer slice, +// only if they do not already exist +func AddToNodeAddresses(addresses *[]NodeAddress, addAddresses ...NodeAddress) { + for _, add := range addAddresses { + exists := false + for _, existing := range *addresses { + if existing.Address == add.Address && existing.Type == add.Type { + exists = true + break + } + } + if !exists { + *addresses = append(*addresses, add) + } + } +} + +func HashObject(obj runtime.Object, codec runtime.Codec) (string, error) { + data, err := runtime.Encode(codec, obj) + if err != nil { + return "", err + } + return fmt.Sprintf("%x", md5.Sum(data)), nil +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusEqual(l, r *LoadBalancerStatus) bool { + return ingressSliceEqual(l.Ingress, r.Ingress) +} + +func ingressSliceEqual(lhs, rhs []LoadBalancerIngress) bool { + if len(lhs) != len(rhs) { + return false + } + for i := range lhs { + if !ingressEqual(&lhs[i], &rhs[i]) { + return false + } + } + return true +} + +func ingressEqual(lhs, rhs *LoadBalancerIngress) bool { + if lhs.IP != rhs.IP { + return false + } + if lhs.Hostname != rhs.Hostname { + return false + } + return true +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusDeepCopy(lb *LoadBalancerStatus) *LoadBalancerStatus { + c := &LoadBalancerStatus{} + c.Ingress = make([]LoadBalancerIngress, len(lb.Ingress)) + for i := range lb.Ingress { + c.Ingress[i] = lb.Ingress[i] + } + return c +} + +// GetAccessModesAsString returns a string representation of an array of access modes. +// modes, when present, are always in the same order: RWO,ROX,RWX. +func GetAccessModesAsString(modes []PersistentVolumeAccessMode) string { + modes = removeDuplicateAccessModes(modes) + modesStr := []string{} + if containsAccessMode(modes, ReadWriteOnce) { + modesStr = append(modesStr, "RWO") + } + if containsAccessMode(modes, ReadOnlyMany) { + modesStr = append(modesStr, "ROX") + } + if containsAccessMode(modes, ReadWriteMany) { + modesStr = append(modesStr, "RWX") + } + return strings.Join(modesStr, ",") +} + +// GetAccessModesAsString returns an array of AccessModes from a string created by GetAccessModesAsString +func GetAccessModesFromString(modes string) []PersistentVolumeAccessMode { + strmodes := strings.Split(modes, ",") + accessModes := []PersistentVolumeAccessMode{} + for _, s := range strmodes { + s = strings.Trim(s, " ") + switch { + case s == "RWO": + accessModes = append(accessModes, ReadWriteOnce) + case s == "ROX": + accessModes = append(accessModes, ReadOnlyMany) + case s == "RWX": + accessModes = append(accessModes, ReadWriteMany) + } + } + return accessModes +} + +// removeDuplicateAccessModes returns an array of access modes without any duplicates +func removeDuplicateAccessModes(modes []PersistentVolumeAccessMode) []PersistentVolumeAccessMode { + accessModes := []PersistentVolumeAccessMode{} + for _, m := range modes { + if !containsAccessMode(accessModes, m) { + accessModes = append(accessModes, m) + } + } + return accessModes +} + +func containsAccessMode(modes []PersistentVolumeAccessMode, mode PersistentVolumeAccessMode) bool { + for _, m := range modes { + if m == mode { + return true + } + } + return false +} + +// ParseRFC3339 parses an RFC3339 date in either RFC3339Nano or RFC3339 format. +func ParseRFC3339(s string, nowFn func() unversioned.Time) (unversioned.Time, error) { + if t, timeErr := time.Parse(time.RFC3339Nano, s); timeErr == nil { + return unversioned.Time{Time: t}, nil + } + t, err := time.Parse(time.RFC3339, s) + if err != nil { + return unversioned.Time{}, err + } + return unversioned.Time{Time: t}, nil +} + +// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements +// labels.Selector. +func NodeSelectorRequirementsAsSelector(nsm []NodeSelectorRequirement) (labels.Selector, error) { + if len(nsm) == 0 { + return labels.Nothing(), nil + } + selector := labels.NewSelector() + for _, expr := range nsm { + var op selection.Operator + switch expr.Operator { + case NodeSelectorOpIn: + op = selection.In + case NodeSelectorOpNotIn: + op = selection.NotIn + case NodeSelectorOpExists: + op = selection.Exists + case NodeSelectorOpDoesNotExist: + op = selection.DoesNotExist + case NodeSelectorOpGt: + op = selection.GreaterThan + case NodeSelectorOpLt: + op = selection.LessThan + default: + return nil, fmt.Errorf("%q is not a valid node selector operator", expr.Operator) + } + r, err := labels.NewRequirement(expr.Key, op, sets.NewString(expr.Values...)) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + return selector, nil +} + +const ( + // AffinityAnnotationKey represents the key of affinity data (json serialized) + // in the Annotations of a Pod. + AffinityAnnotationKey string = "scheduler.alpha.kubernetes.io/affinity" + + // TolerationsAnnotationKey represents the key of tolerations data (json serialized) + // in the Annotations of a Pod. + TolerationsAnnotationKey string = "scheduler.alpha.kubernetes.io/tolerations" + + // TaintsAnnotationKey represents the key of taints data (json serialized) + // in the Annotations of a Node. + TaintsAnnotationKey string = "scheduler.alpha.kubernetes.io/taints" + + // SeccompPodAnnotationKey represents the key of a seccomp profile applied + // to all containers of a pod. + SeccompPodAnnotationKey string = "seccomp.security.alpha.kubernetes.io/pod" + + // SeccompContainerAnnotationKeyPrefix represents the key of a seccomp profile applied + // to one container of a pod. + SeccompContainerAnnotationKeyPrefix string = "container.seccomp.security.alpha.kubernetes.io/" + + // CreatedByAnnotation represents the key used to store the spec(json) + // used to create the resource. + CreatedByAnnotation = "kubernetes.io/created-by" + + // PreferAvoidPodsAnnotationKey represents the key of preferAvoidPods data (json serialized) + // in the Annotations of a Node. + PreferAvoidPodsAnnotationKey string = "scheduler.alpha.kubernetes.io/preferAvoidPods" + + // SysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Only a limited set of whitelisted and isolated sysctls is supported by + // the kubelet. Pods with other sysctls will fail to launch. + SysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/sysctls" + + // UnsafeSysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Unsafe sysctls must be explicitly enabled for a kubelet. They are properly + // namespaced to a pod or a container, but their isolation is usually unclear or weak. Their use + // is at-your-own-risk. Pods that attempt to set an unsafe sysctl that is not enabled for a kubelet + // will fail to launch. + UnsafeSysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/unsafe-sysctls" +) + +// GetAffinityFromPod gets the json serialized affinity data from Pod.Annotations +// and converts it to the Affinity type in api. +func GetAffinityFromPodAnnotations(annotations map[string]string) (*Affinity, error) { + if len(annotations) > 0 && annotations[AffinityAnnotationKey] != "" { + var affinity Affinity + err := json.Unmarshal([]byte(annotations[AffinityAnnotationKey]), &affinity) + if err != nil { + return nil, err + } + return &affinity, nil + } + return nil, nil +} + +// GetTolerationsFromPodAnnotations gets the json serialized tolerations data from Pod.Annotations +// and converts it to the []Toleration type in api. +func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]Toleration, error) { + var tolerations []Toleration + if len(annotations) > 0 && annotations[TolerationsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[TolerationsAnnotationKey]), &tolerations) + if err != nil { + return tolerations, err + } + } + return tolerations, nil +} + +// GetTaintsFromNodeAnnotations gets the json serialized taints data from Pod.Annotations +// and converts it to the []Taint type in api. +func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]Taint, error) { + var taints []Taint + if len(annotations) > 0 && annotations[TaintsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[TaintsAnnotationKey]), &taints) + if err != nil { + return []Taint{}, err + } + } + return taints, nil +} + +// TolerationToleratesTaint checks if the toleration tolerates the taint. +func TolerationToleratesTaint(toleration *Toleration, taint *Taint) bool { + if len(toleration.Effect) != 0 && toleration.Effect != taint.Effect { + return false + } + + if toleration.Key != taint.Key { + return false + } + // TODO: Use proper defaulting when Toleration becomes a field of PodSpec + if (len(toleration.Operator) == 0 || toleration.Operator == TolerationOpEqual) && toleration.Value == taint.Value { + return true + } + if toleration.Operator == TolerationOpExists { + return true + } + return false + +} + +// TaintToleratedByTolerations checks if taint is tolerated by any of the tolerations. +func TaintToleratedByTolerations(taint *Taint, tolerations []Toleration) bool { + tolerated := false + for i := range tolerations { + if TolerationToleratesTaint(&tolerations[i], taint) { + tolerated = true + break + } + } + return tolerated +} + +// MatchTaint checks if the taint matches taintToMatch. Taints are unique by key:effect, +// if the two taints have same key:effect, regard as they match. +func (t *Taint) MatchTaint(taintToMatch Taint) bool { + return t.Key == taintToMatch.Key && t.Effect == taintToMatch.Effect +} + +// taint.ToString() converts taint struct to string in format key=value:effect or key:effect. +func (t *Taint) ToString() string { + if len(t.Value) == 0 { + return fmt.Sprintf("%v:%v", t.Key, t.Effect) + } + return fmt.Sprintf("%v=%v:%v", t.Key, t.Value, t.Effect) +} + +func GetAvoidPodsFromNodeAnnotations(annotations map[string]string) (AvoidPods, error) { + var avoidPods AvoidPods + if len(annotations) > 0 && annotations[PreferAvoidPodsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[PreferAvoidPodsAnnotationKey]), &avoidPods) + if err != nil { + return avoidPods, err + } + } + return avoidPods, nil +} + +// SysctlsFromPodAnnotations parses the sysctl annotations into a slice of safe Sysctls +// and a slice of unsafe Sysctls. This is only a convenience wrapper around +// SysctlsFromPodAnnotation. +func SysctlsFromPodAnnotations(a map[string]string) ([]Sysctl, []Sysctl, error) { + safe, err := SysctlsFromPodAnnotation(a[SysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + unsafe, err := SysctlsFromPodAnnotation(a[UnsafeSysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + + return safe, unsafe, nil +} + +// SysctlsFromPodAnnotation parses an annotation value into a slice of Sysctls. +func SysctlsFromPodAnnotation(annotation string) ([]Sysctl, error) { + if len(annotation) == 0 { + return nil, nil + } + + kvs := strings.Split(annotation, ",") + sysctls := make([]Sysctl, len(kvs)) + for i, kv := range kvs { + cs := strings.Split(kv, "=") + if len(cs) != 2 { + return nil, fmt.Errorf("sysctl %q not of the format sysctl_name=value", kv) + } + sysctls[i].Name = cs[0] + sysctls[i].Value = cs[1] + } + return sysctls, nil +} + +// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls. +func PodAnnotationsFromSysctls(sysctls []Sysctl) string { + if len(sysctls) == 0 { + return "" + } + + kvs := make([]string, len(sysctls)) + for i := range sysctls { + kvs[i] = fmt.Sprintf("%s=%s", sysctls[i].Name, sysctls[i].Value) + } + return strings.Join(kvs, ",") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/api/install/install.go new file mode 100644 index 0000000000..a4518bc0a4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/install/install.go @@ -0,0 +1,153 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the v1 monolithic api, making it available as an +// option to all of the API encoding/decoding machinery. +package install + +import ( + "fmt" + + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/apimachinery" + "k8s.io/client-go/1.5/pkg/apimachinery/registered" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +const importPrefix = "k8s.io/client-go/1.5/pkg/api" + +var accessor = meta.NewAccessor() + +// availableVersions lists all known external versions for this group from most preferred to least preferred +var availableVersions = []unversioned.GroupVersion{v1.SchemeGroupVersion} + +func init() { + registered.RegisterVersions(availableVersions) + externalVersions := []unversioned.GroupVersion{} + for _, v := range availableVersions { + if registered.IsAllowedVersion(v) { + externalVersions = append(externalVersions, v) + } + } + if len(externalVersions) == 0 { + glog.V(4).Infof("No version is registered for group %v", api.GroupName) + return + } + + if err := registered.EnableVersions(externalVersions...); err != nil { + glog.V(4).Infof("%v", err) + return + } + if err := enableVersions(externalVersions); err != nil { + glog.V(4).Infof("%v", err) + return + } +} + +// TODO: enableVersions should be centralized rather than spread in each API +// group. +// We can combine registered.RegisterVersions, registered.EnableVersions and +// registered.RegisterGroup once we have moved enableVersions there. +func enableVersions(externalVersions []unversioned.GroupVersion) error { + addVersionsToScheme(externalVersions...) + preferredExternalVersion := externalVersions[0] + + groupMeta := apimachinery.GroupMeta{ + GroupVersion: preferredExternalVersion, + GroupVersions: externalVersions, + RESTMapper: newRESTMapper(externalVersions), + SelfLinker: runtime.SelfLinker(accessor), + InterfacesFor: interfacesFor, + } + + if err := registered.RegisterGroup(groupMeta); err != nil { + return err + } + return nil +} + +func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper { + // the list of kinds that are scoped at the root of the api hierarchy + // if a kind is not enumerated here, it is assumed to have a namespace scope + rootScoped := sets.NewString( + "Node", + "Namespace", + "PersistentVolume", + "ComponentStatus", + ) + + // these kinds should be excluded from the list of resources + ignoredKinds := sets.NewString( + "ListOptions", + "DeleteOptions", + "Status", + "PodLogOptions", + "PodExecOptions", + "PodAttachOptions", + "PodProxyOptions", + "NodeProxyOptions", + "ServiceProxyOptions", + "ThirdPartyResource", + "ThirdPartyResourceData", + "ThirdPartyResourceList") + + mapper := api.NewDefaultRESTMapper(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped) + + return mapper +} + +// InterfacesFor returns the default Codec and ResourceVersioner for a given version +// string, or an error if the version is not known. +func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { + switch version { + case v1.SchemeGroupVersion: + return &meta.VersionInterfaces{ + ObjectConvertor: api.Scheme, + MetadataAccessor: accessor, + }, nil + default: + g, _ := registered.Group(api.GroupName) + return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions) + } +} + +func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) { + // add the internal version to Scheme + if err := api.AddToScheme(api.Scheme); err != nil { + // Programmer error, detect immediately + panic(err) + } + // add the enabled external versions to Scheme + for _, v := range externalVersions { + if !registered.IsEnabledVersion(v) { + glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v) + continue + } + switch v { + case v1.SchemeGroupVersion: + if err := v1.AddToScheme(api.Scheme); err != nil { + // Programmer error, detect immediately + panic(err) + } + } + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/mapper.go b/vendor/k8s.io/client-go/1.5/pkg/api/mapper.go new file mode 100644 index 0000000000..17e624f930 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/mapper.go @@ -0,0 +1,58 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "strings" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// Instantiates a DefaultRESTMapper based on types registered in api.Scheme +func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, + importPathPrefix string, ignoredKinds, rootScoped sets.String) *meta.DefaultRESTMapper { + return NewDefaultRESTMapperFromScheme(defaultGroupVersions, interfacesFunc, importPathPrefix, ignoredKinds, rootScoped, Scheme) +} + +// Instantiates a DefaultRESTMapper based on types registered in the given scheme. +func NewDefaultRESTMapperFromScheme(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, + importPathPrefix string, ignoredKinds, rootScoped sets.String, scheme *runtime.Scheme) *meta.DefaultRESTMapper { + + mapper := meta.NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc) + // enumerate all supported versions, get the kinds, and register with the mapper how to address + // our resources. + for _, gv := range defaultGroupVersions { + for kind, oType := range scheme.KnownTypes(gv) { + gvk := gv.WithKind(kind) + // TODO: Remove import path check. + // We check the import path because we currently stuff both "api" and "extensions" objects + // into the same group within Scheme since Scheme has no notion of groups yet. + if !strings.Contains(oType.PkgPath(), importPathPrefix) || ignoredKinds.Has(kind) { + continue + } + scope := meta.RESTScopeNamespace + if rootScoped.Has(kind) { + scope = meta.RESTScopeRoot + } + mapper.Add(gvk, scope) + } + } + return mapper +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta.go new file mode 100644 index 0000000000..6a90006c27 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta.go @@ -0,0 +1,140 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/meta/metatypes" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/types" + "k8s.io/client-go/1.5/pkg/util/uuid" +) + +// FillObjectMetaSystemFields populates fields that are managed by the system on ObjectMeta. +func FillObjectMetaSystemFields(ctx Context, meta *ObjectMeta) { + meta.CreationTimestamp = unversioned.Now() + // allows admission controllers to assign a UID earlier in the request processing + // to support tracking resources pending creation. + uid, found := UIDFrom(ctx) + if !found { + uid = uuid.NewUUID() + } + meta.UID = uid + meta.SelfLink = "" +} + +// HasObjectMetaSystemFieldValues returns true if fields that are managed by the system on ObjectMeta have values. +func HasObjectMetaSystemFieldValues(meta *ObjectMeta) bool { + return !meta.CreationTimestamp.Time.IsZero() || + len(meta.UID) != 0 +} + +// ObjectMetaFor returns a pointer to a provided object's ObjectMeta. +// TODO: allow runtime.Unknown to extract this object +// TODO: Remove this function and use meta.Accessor() instead. +func ObjectMetaFor(obj runtime.Object) (*ObjectMeta, error) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, err + } + var meta *ObjectMeta + err = runtime.FieldPtr(v, "ObjectMeta", &meta) + return meta, err +} + +// ListMetaFor returns a pointer to a provided object's ListMeta, +// or an error if the object does not have that pointer. +// TODO: allow runtime.Unknown to extract this object +func ListMetaFor(obj runtime.Object) (*unversioned.ListMeta, error) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, err + } + var meta *unversioned.ListMeta + err = runtime.FieldPtr(v, "ListMeta", &meta) + return meta, err +} + +func (obj *ObjectMeta) GetObjectMeta() meta.Object { return obj } + +// Namespace implements meta.Object for any object with an ObjectMeta typed field. Allows +// fast, direct access to metadata fields for API objects. +func (meta *ObjectMeta) GetNamespace() string { return meta.Namespace } +func (meta *ObjectMeta) SetNamespace(namespace string) { meta.Namespace = namespace } +func (meta *ObjectMeta) GetName() string { return meta.Name } +func (meta *ObjectMeta) SetName(name string) { meta.Name = name } +func (meta *ObjectMeta) GetGenerateName() string { return meta.GenerateName } +func (meta *ObjectMeta) SetGenerateName(generateName string) { meta.GenerateName = generateName } +func (meta *ObjectMeta) GetUID() types.UID { return meta.UID } +func (meta *ObjectMeta) SetUID(uid types.UID) { meta.UID = uid } +func (meta *ObjectMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ObjectMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ObjectMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ObjectMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } +func (meta *ObjectMeta) GetCreationTimestamp() unversioned.Time { return meta.CreationTimestamp } +func (meta *ObjectMeta) SetCreationTimestamp(creationTimestamp unversioned.Time) { + meta.CreationTimestamp = creationTimestamp +} +func (meta *ObjectMeta) GetDeletionTimestamp() *unversioned.Time { return meta.DeletionTimestamp } +func (meta *ObjectMeta) SetDeletionTimestamp(deletionTimestamp *unversioned.Time) { + meta.DeletionTimestamp = deletionTimestamp +} +func (meta *ObjectMeta) GetLabels() map[string]string { return meta.Labels } +func (meta *ObjectMeta) SetLabels(labels map[string]string) { meta.Labels = labels } +func (meta *ObjectMeta) GetAnnotations() map[string]string { return meta.Annotations } +func (meta *ObjectMeta) SetAnnotations(annotations map[string]string) { meta.Annotations = annotations } +func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers } +func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers } + +func (meta *ObjectMeta) GetOwnerReferences() []metatypes.OwnerReference { + ret := make([]metatypes.OwnerReference, len(meta.OwnerReferences)) + for i := 0; i < len(meta.OwnerReferences); i++ { + ret[i].Kind = meta.OwnerReferences[i].Kind + ret[i].Name = meta.OwnerReferences[i].Name + ret[i].UID = meta.OwnerReferences[i].UID + ret[i].APIVersion = meta.OwnerReferences[i].APIVersion + if meta.OwnerReferences[i].Controller != nil { + value := *meta.OwnerReferences[i].Controller + ret[i].Controller = &value + } + } + return ret +} + +func (meta *ObjectMeta) SetOwnerReferences(references []metatypes.OwnerReference) { + newReferences := make([]OwnerReference, len(references)) + for i := 0; i < len(references); i++ { + newReferences[i].Kind = references[i].Kind + newReferences[i].Name = references[i].Name + newReferences[i].UID = references[i].UID + newReferences[i].APIVersion = references[i].APIVersion + if references[i].Controller != nil { + value := *references[i].Controller + newReferences[i].Controller = &value + } + } + meta.OwnerReferences = newReferences +} + +func (meta *ObjectMeta) GetClusterName() string { + return meta.ClusterName +} +func (meta *ObjectMeta) SetClusterName(clusterName string) { + meta.ClusterName = clusterName +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/doc.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/doc.go new file mode 100644 index 0000000000..a3b18a5c9a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package meta provides functions for retrieving API metadata from objects +// belonging to the Kubernetes API +package meta diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/errors.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/errors.go new file mode 100644 index 0000000000..e8d10ab9e9 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/errors.go @@ -0,0 +1,105 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// AmbiguousResourceError is returned if the RESTMapper finds multiple matches for a resource +type AmbiguousResourceError struct { + PartialResource unversioned.GroupVersionResource + + MatchingResources []unversioned.GroupVersionResource + MatchingKinds []unversioned.GroupVersionKind +} + +func (e *AmbiguousResourceError) Error() string { + switch { + case len(e.MatchingKinds) > 0 && len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v and kinds %v", e.PartialResource, e.MatchingResources, e.MatchingKinds) + case len(e.MatchingKinds) > 0: + return fmt.Sprintf("%v matches multiple kinds %v", e.PartialResource, e.MatchingKinds) + case len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v", e.PartialResource, e.MatchingResources) + } + return fmt.Sprintf("%v matches multiple resources or kinds", e.PartialResource) +} + +// AmbiguousKindError is returned if the RESTMapper finds multiple matches for a kind +type AmbiguousKindError struct { + PartialKind unversioned.GroupVersionKind + + MatchingResources []unversioned.GroupVersionResource + MatchingKinds []unversioned.GroupVersionKind +} + +func (e *AmbiguousKindError) Error() string { + switch { + case len(e.MatchingKinds) > 0 && len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v and kinds %v", e.PartialKind, e.MatchingResources, e.MatchingKinds) + case len(e.MatchingKinds) > 0: + return fmt.Sprintf("%v matches multiple kinds %v", e.PartialKind, e.MatchingKinds) + case len(e.MatchingResources) > 0: + return fmt.Sprintf("%v matches multiple resources %v", e.PartialKind, e.MatchingResources) + } + return fmt.Sprintf("%v matches multiple resources or kinds", e.PartialKind) +} + +func IsAmbiguousError(err error) bool { + if err == nil { + return false + } + switch err.(type) { + case *AmbiguousResourceError, *AmbiguousKindError: + return true + default: + return false + } +} + +// NoResourceMatchError is returned if the RESTMapper can't find any match for a resource +type NoResourceMatchError struct { + PartialResource unversioned.GroupVersionResource +} + +func (e *NoResourceMatchError) Error() string { + return fmt.Sprintf("no matches for %v", e.PartialResource) +} + +// NoKindMatchError is returned if the RESTMapper can't find any match for a kind +type NoKindMatchError struct { + PartialKind unversioned.GroupVersionKind +} + +func (e *NoKindMatchError) Error() string { + return fmt.Sprintf("no matches for %v", e.PartialKind) +} + +func IsNoMatchError(err error) bool { + if err == nil { + return false + } + switch err.(type) { + case *NoResourceMatchError, *NoKindMatchError: + return true + default: + return false + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/firsthit_restmapper.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/firsthit_restmapper.go new file mode 100644 index 0000000000..224e715305 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/firsthit_restmapper.go @@ -0,0 +1,97 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + utilerrors "k8s.io/client-go/1.5/pkg/util/errors" +) + +// FirstHitRESTMapper is a wrapper for multiple RESTMappers which returns the +// first successful result for the singular requests +type FirstHitRESTMapper struct { + MultiRESTMapper +} + +func (m FirstHitRESTMapper) String() string { + return fmt.Sprintf("FirstHitRESTMapper{\n\t%v\n}", m.MultiRESTMapper) +} + +func (m FirstHitRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.ResourceFor(resource) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return unversioned.GroupVersionResource{}, collapseAggregateErrors(errors) +} + +func (m FirstHitRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.KindFor(resource) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return unversioned.GroupVersionKind{}, collapseAggregateErrors(errors) +} + +// RESTMapping provides the REST mapping for the resource based on the +// kind and version. This implementation supports multiple REST schemas and +// return the first match. +func (m FirstHitRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { + errors := []error{} + for _, t := range m.MultiRESTMapper { + ret, err := t.RESTMapping(gk, versions...) + if err == nil { + return ret, nil + } + errors = append(errors, err) + } + + return nil, collapseAggregateErrors(errors) +} + +// collapseAggregateErrors returns the minimal errors. it handles empty as nil, handles one item in a list +// by returning the item, and collapses all NoMatchErrors to a single one (since they should all be the same) +func collapseAggregateErrors(errors []error) error { + if len(errors) == 0 { + return nil + } + if len(errors) == 1 { + return errors[0] + } + + allNoMatchErrors := true + for _, err := range errors { + allNoMatchErrors = allNoMatchErrors && IsNoMatchError(err) + } + if allNoMatchErrors { + return errors[0] + } + + return utilerrors.NewAggregate(errors) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/help.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/help.go new file mode 100644 index 0000000000..d44a57d19d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/help.go @@ -0,0 +1,134 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// IsListType returns true if the provided Object has a slice called Items +func IsListType(obj runtime.Object) bool { + _, err := GetItemsPtr(obj) + return err == nil +} + +// GetItemsPtr returns a pointer to the list object's Items member. +// If 'list' doesn't have an Items member, it's not really a list type +// and an error will be returned. +// This function will either return a pointer to a slice, or an error, but not both. +func GetItemsPtr(list runtime.Object) (interface{}, error) { + v, err := conversion.EnforcePtr(list) + if err != nil { + return nil, err + } + items := v.FieldByName("Items") + if !items.IsValid() { + return nil, fmt.Errorf("no Items field in %#v", list) + } + switch items.Kind() { + case reflect.Interface, reflect.Ptr: + target := reflect.TypeOf(items.Interface()).Elem() + if target.Kind() != reflect.Slice { + return nil, fmt.Errorf("items: Expected slice, got %s", target.Kind()) + } + return items.Interface(), nil + case reflect.Slice: + return items.Addr().Interface(), nil + default: + return nil, fmt.Errorf("items: Expected slice, got %s", items.Kind()) + } +} + +// ExtractList returns obj's Items element as an array of runtime.Objects. +// Returns an error if obj is not a List type (does not have an Items member). +func ExtractList(obj runtime.Object) ([]runtime.Object, error) { + itemsPtr, err := GetItemsPtr(obj) + if err != nil { + return nil, err + } + items, err := conversion.EnforcePtr(itemsPtr) + if err != nil { + return nil, err + } + list := make([]runtime.Object, items.Len()) + for i := range list { + raw := items.Index(i) + switch item := raw.Interface().(type) { + case runtime.RawExtension: + switch { + case item.Object != nil: + list[i] = item.Object + case item.Raw != nil: + // TODO: Set ContentEncoding and ContentType correctly. + list[i] = &runtime.Unknown{Raw: item.Raw} + default: + list[i] = nil + } + case runtime.Object: + list[i] = item + default: + var found bool + if list[i], found = raw.Addr().Interface().(runtime.Object); !found { + return nil, fmt.Errorf("%v: item[%v]: Expected object, got %#v(%s)", obj, i, raw.Interface(), raw.Kind()) + } + } + } + return list, nil +} + +// objectSliceType is the type of a slice of Objects +var objectSliceType = reflect.TypeOf([]runtime.Object{}) + +// SetList sets the given list object's Items member have the elements given in +// objects. +// Returns an error if list is not a List type (does not have an Items member), +// or if any of the objects are not of the right type. +func SetList(list runtime.Object, objects []runtime.Object) error { + itemsPtr, err := GetItemsPtr(list) + if err != nil { + return err + } + items, err := conversion.EnforcePtr(itemsPtr) + if err != nil { + return err + } + if items.Type() == objectSliceType { + items.Set(reflect.ValueOf(objects)) + return nil + } + slice := reflect.MakeSlice(items.Type(), len(objects), len(objects)) + for i := range objects { + dest := slice.Index(i) + src, err := conversion.EnforcePtr(objects[i]) + if err != nil { + return err + } + if src.Type().AssignableTo(dest.Type()) { + dest.Set(src) + } else if src.Type().ConvertibleTo(dest.Type()) { + dest.Set(src.Convert(dest.Type())) + } else { + return fmt.Errorf("item[%d]: can't assign or convert %v into %v", i, src.Type(), dest.Type()) + } + } + items.Set(slice) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/interfaces.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/interfaces.go new file mode 100644 index 0000000000..ce37cc70ef --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/interfaces.go @@ -0,0 +1,184 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "k8s.io/client-go/1.5/pkg/api/meta/metatypes" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/types" +) + +// VersionInterfaces contains the interfaces one should use for dealing with types of a particular version. +type VersionInterfaces struct { + runtime.ObjectConvertor + MetadataAccessor +} + +type ObjectMetaAccessor interface { + GetObjectMeta() Object +} + +// Object lets you work with object metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field (Name, UID, Namespace on lists) will be a no-op and return +// a default value. +type Object interface { + GetNamespace() string + SetNamespace(namespace string) + GetName() string + SetName(name string) + GetGenerateName() string + SetGenerateName(name string) + GetUID() types.UID + SetUID(uid types.UID) + GetResourceVersion() string + SetResourceVersion(version string) + GetSelfLink() string + SetSelfLink(selfLink string) + GetCreationTimestamp() unversioned.Time + SetCreationTimestamp(timestamp unversioned.Time) + GetDeletionTimestamp() *unversioned.Time + SetDeletionTimestamp(timestamp *unversioned.Time) + GetLabels() map[string]string + SetLabels(labels map[string]string) + GetAnnotations() map[string]string + SetAnnotations(annotations map[string]string) + GetFinalizers() []string + SetFinalizers(finalizers []string) + GetOwnerReferences() []metatypes.OwnerReference + SetOwnerReferences([]metatypes.OwnerReference) + GetClusterName() string + SetClusterName(clusterName string) +} + +var _ Object = &runtime.Unstructured{} + +type ListMetaAccessor interface { + GetListMeta() List +} + +// List lets you work with list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field will be a no-op and return a default value. +type List unversioned.List + +// Type exposes the type and APIVersion of versioned or internal API objects. +type Type unversioned.Type + +// MetadataAccessor lets you work with object and list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field (Name, UID, Namespace on lists) will be a no-op and return +// a default value. +// +// MetadataAccessor exposes Interface in a way that can be used with multiple objects. +type MetadataAccessor interface { + APIVersion(obj runtime.Object) (string, error) + SetAPIVersion(obj runtime.Object, version string) error + + Kind(obj runtime.Object) (string, error) + SetKind(obj runtime.Object, kind string) error + + Namespace(obj runtime.Object) (string, error) + SetNamespace(obj runtime.Object, namespace string) error + + Name(obj runtime.Object) (string, error) + SetName(obj runtime.Object, name string) error + + GenerateName(obj runtime.Object) (string, error) + SetGenerateName(obj runtime.Object, name string) error + + UID(obj runtime.Object) (types.UID, error) + SetUID(obj runtime.Object, uid types.UID) error + + SelfLink(obj runtime.Object) (string, error) + SetSelfLink(obj runtime.Object, selfLink string) error + + Labels(obj runtime.Object) (map[string]string, error) + SetLabels(obj runtime.Object, labels map[string]string) error + + Annotations(obj runtime.Object) (map[string]string, error) + SetAnnotations(obj runtime.Object, annotations map[string]string) error + + runtime.ResourceVersioner +} + +type RESTScopeName string + +const ( + RESTScopeNameNamespace RESTScopeName = "namespace" + RESTScopeNameRoot RESTScopeName = "root" +) + +// RESTScope contains the information needed to deal with REST resources that are in a resource hierarchy +type RESTScope interface { + // Name of the scope + Name() RESTScopeName + // ParamName is the optional name of the parameter that should be inserted in the resource url + // If empty, no param will be inserted + ParamName() string + // ArgumentName is the optional name that should be used for the variable holding the value. + ArgumentName() string + // ParamDescription is the optional description to use to document the parameter in api documentation + ParamDescription() string +} + +// RESTMapping contains the information needed to deal with objects of a specific +// resource and kind in a RESTful manner. +type RESTMapping struct { + // Resource is a string representing the name of this resource as a REST client would see it + Resource string + + GroupVersionKind unversioned.GroupVersionKind + + // Scope contains the information needed to deal with REST Resources that are in a resource hierarchy + Scope RESTScope + + runtime.ObjectConvertor + MetadataAccessor +} + +// RESTMapper allows clients to map resources to kind, and map kind and version +// to interfaces for manipulating those objects. It is primarily intended for +// consumers of Kubernetes compatible REST APIs as defined in docs/devel/api-conventions.md. +// +// The Kubernetes API provides versioned resources and object kinds which are scoped +// to API groups. In other words, kinds and resources should not be assumed to be +// unique across groups. +// +// TODO: split into sub-interfaces +type RESTMapper interface { + // KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches + KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) + + // KindsFor takes a partial resource and returns the list of potential kinds in priority order + KindsFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) + + // ResourceFor takes a partial resource and returns the single match. Returns an error if there are multiple matches + ResourceFor(input unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) + + // ResourcesFor takes a partial resource and returns the list of potential resource in priority order + ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) + + // RESTMapping identifies a preferred resource mapping for the provided group kind. + RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) + // RESTMappings returns all resource mappings for the provided group kind. + RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) + + AliasesForResource(resource string) ([]string, bool) + ResourceSingularizer(resource string) (singular string, err error) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/meta.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/meta.go new file mode 100644 index 0000000000..a234bb0fe3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/meta.go @@ -0,0 +1,567 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/meta/metatypes" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/types" + + "github.com/golang/glog" +) + +// errNotList is returned when an object implements the Object style interfaces but not the List style +// interfaces. +var errNotList = fmt.Errorf("object does not implement the List interfaces") + +// ListAccessor returns a List interface for the provided object or an error if the object does +// not provide List. +// IMPORTANT: Objects are a superset of lists, so all Objects return List metadata. Do not use this +// check to determine whether an object *is* a List. +// TODO: return bool instead of error +func ListAccessor(obj interface{}) (List, error) { + switch t := obj.(type) { + case List: + return t, nil + case unversioned.List: + return t, nil + case ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } + return nil, errNotList + case unversioned.ListMetaAccessor: + if m := t.GetListMeta(); m != nil { + return m, nil + } + return nil, errNotList + case Object: + return t, nil + case ObjectMetaAccessor: + if m := t.GetObjectMeta(); m != nil { + return m, nil + } + return nil, errNotList + default: + return nil, errNotList + } +} + +// errNotObject is returned when an object implements the List style interfaces but not the Object style +// interfaces. +var errNotObject = fmt.Errorf("object does not implement the Object interfaces") + +// Accessor takes an arbitrary object pointer and returns meta.Interface. +// obj must be a pointer to an API type. An error is returned if the minimum +// required fields are missing. Fields that are not required return the default +// value and are a no-op if set. +// TODO: return bool instead of error +func Accessor(obj interface{}) (Object, error) { + switch t := obj.(type) { + case Object: + return t, nil + case ObjectMetaAccessor: + if m := t.GetObjectMeta(); m != nil { + return m, nil + } + return nil, errNotObject + case List, unversioned.List, ListMetaAccessor, unversioned.ListMetaAccessor: + return nil, errNotObject + default: + return nil, errNotObject + } +} + +// TypeAccessor returns an interface that allows retrieving and modifying the APIVersion +// and Kind of an in-memory internal object. +// TODO: this interface is used to test code that does not have ObjectMeta or ListMeta +// in round tripping (objects which can use apiVersion/kind, but do not fit the Kube +// api conventions). +func TypeAccessor(obj interface{}) (Type, error) { + if typed, ok := obj.(runtime.Object); ok { + return objectAccessor{typed}, nil + } + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, err + } + t := v.Type() + if v.Kind() != reflect.Struct { + return nil, fmt.Errorf("expected struct, but got %v: %v (%#v)", v.Kind(), t, v.Interface()) + } + + typeMeta := v.FieldByName("TypeMeta") + if !typeMeta.IsValid() { + return nil, fmt.Errorf("struct %v lacks embedded TypeMeta type", t) + } + a := &genericAccessor{} + if err := extractFromTypeMeta(typeMeta, a); err != nil { + return nil, fmt.Errorf("unable to find type fields on %#v: %v", typeMeta, err) + } + return a, nil +} + +type objectAccessor struct { + runtime.Object +} + +func (obj objectAccessor) GetKind() string { + return obj.GetObjectKind().GroupVersionKind().Kind +} + +func (obj objectAccessor) SetKind(kind string) { + gvk := obj.GetObjectKind().GroupVersionKind() + gvk.Kind = kind + obj.GetObjectKind().SetGroupVersionKind(gvk) +} + +func (obj objectAccessor) GetAPIVersion() string { + return obj.GetObjectKind().GroupVersionKind().GroupVersion().String() +} + +func (obj objectAccessor) SetAPIVersion(version string) { + gvk := obj.GetObjectKind().GroupVersionKind() + gv, err := unversioned.ParseGroupVersion(version) + if err != nil { + gv = unversioned.GroupVersion{Version: version} + } + gvk.Group, gvk.Version = gv.Group, gv.Version + obj.GetObjectKind().SetGroupVersionKind(gvk) +} + +// NewAccessor returns a MetadataAccessor that can retrieve +// or manipulate resource version on objects derived from core API +// metadata concepts. +func NewAccessor() MetadataAccessor { + return resourceAccessor{} +} + +// resourceAccessor implements ResourceVersioner and SelfLinker. +type resourceAccessor struct{} + +func (resourceAccessor) Kind(obj runtime.Object) (string, error) { + return objectAccessor{obj}.GetKind(), nil +} + +func (resourceAccessor) SetKind(obj runtime.Object, kind string) error { + objectAccessor{obj}.SetKind(kind) + return nil +} + +func (resourceAccessor) APIVersion(obj runtime.Object) (string, error) { + return objectAccessor{obj}.GetAPIVersion(), nil +} + +func (resourceAccessor) SetAPIVersion(obj runtime.Object, version string) error { + objectAccessor{obj}.SetAPIVersion(version) + return nil +} + +func (resourceAccessor) Namespace(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetNamespace(), nil +} + +func (resourceAccessor) SetNamespace(obj runtime.Object, namespace string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetNamespace(namespace) + return nil +} + +func (resourceAccessor) Name(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetName(), nil +} + +func (resourceAccessor) SetName(obj runtime.Object, name string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetName(name) + return nil +} + +func (resourceAccessor) GenerateName(obj runtime.Object) (string, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetGenerateName(), nil +} + +func (resourceAccessor) SetGenerateName(obj runtime.Object, name string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetGenerateName(name) + return nil +} + +func (resourceAccessor) UID(obj runtime.Object) (types.UID, error) { + accessor, err := Accessor(obj) + if err != nil { + return "", err + } + return accessor.GetUID(), nil +} + +func (resourceAccessor) SetUID(obj runtime.Object, uid types.UID) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetUID(uid) + return nil +} + +func (resourceAccessor) SelfLink(obj runtime.Object) (string, error) { + accessor, err := ListAccessor(obj) + if err != nil { + return "", err + } + return accessor.GetSelfLink(), nil +} + +func (resourceAccessor) SetSelfLink(obj runtime.Object, selfLink string) error { + accessor, err := ListAccessor(obj) + if err != nil { + return err + } + accessor.SetSelfLink(selfLink) + return nil +} + +func (resourceAccessor) Labels(obj runtime.Object) (map[string]string, error) { + accessor, err := Accessor(obj) + if err != nil { + return nil, err + } + return accessor.GetLabels(), nil +} + +func (resourceAccessor) SetLabels(obj runtime.Object, labels map[string]string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetLabels(labels) + return nil +} + +func (resourceAccessor) Annotations(obj runtime.Object) (map[string]string, error) { + accessor, err := Accessor(obj) + if err != nil { + return nil, err + } + return accessor.GetAnnotations(), nil +} + +func (resourceAccessor) SetAnnotations(obj runtime.Object, annotations map[string]string) error { + accessor, err := Accessor(obj) + if err != nil { + return err + } + accessor.SetAnnotations(annotations) + return nil +} + +func (resourceAccessor) ResourceVersion(obj runtime.Object) (string, error) { + accessor, err := ListAccessor(obj) + if err != nil { + return "", err + } + return accessor.GetResourceVersion(), nil +} + +func (resourceAccessor) SetResourceVersion(obj runtime.Object, version string) error { + accessor, err := ListAccessor(obj) + if err != nil { + return err + } + accessor.SetResourceVersion(version) + return nil +} + +// extractFromOwnerReference extracts v to o. v is the OwnerReferences field of an object. +func extractFromOwnerReference(v reflect.Value, o *metatypes.OwnerReference) error { + if err := runtime.Field(v, "APIVersion", &o.APIVersion); err != nil { + return err + } + if err := runtime.Field(v, "Kind", &o.Kind); err != nil { + return err + } + if err := runtime.Field(v, "Name", &o.Name); err != nil { + return err + } + if err := runtime.Field(v, "UID", &o.UID); err != nil { + return err + } + var controllerPtr *bool + if err := runtime.Field(v, "Controller", &controllerPtr); err != nil { + return err + } + if controllerPtr != nil { + controller := *controllerPtr + o.Controller = &controller + } + return nil +} + +// setOwnerReference sets v to o. v is the OwnerReferences field of an object. +func setOwnerReference(v reflect.Value, o *metatypes.OwnerReference) error { + if err := runtime.SetField(o.APIVersion, v, "APIVersion"); err != nil { + return err + } + if err := runtime.SetField(o.Kind, v, "Kind"); err != nil { + return err + } + if err := runtime.SetField(o.Name, v, "Name"); err != nil { + return err + } + if err := runtime.SetField(o.UID, v, "UID"); err != nil { + return err + } + if o.Controller != nil { + controller := *(o.Controller) + if err := runtime.SetField(&controller, v, "Controller"); err != nil { + return err + } + } + return nil +} + +// genericAccessor contains pointers to strings that can modify an arbitrary +// struct and implements the Accessor interface. +type genericAccessor struct { + namespace *string + name *string + generateName *string + uid *types.UID + apiVersion *string + kind *string + resourceVersion *string + selfLink *string + creationTimestamp *unversioned.Time + deletionTimestamp **unversioned.Time + labels *map[string]string + annotations *map[string]string + ownerReferences reflect.Value + finalizers *[]string +} + +func (a genericAccessor) GetNamespace() string { + if a.namespace == nil { + return "" + } + return *a.namespace +} + +func (a genericAccessor) SetNamespace(namespace string) { + if a.namespace == nil { + return + } + *a.namespace = namespace +} + +func (a genericAccessor) GetName() string { + if a.name == nil { + return "" + } + return *a.name +} + +func (a genericAccessor) SetName(name string) { + if a.name == nil { + return + } + *a.name = name +} + +func (a genericAccessor) GetGenerateName() string { + if a.generateName == nil { + return "" + } + return *a.generateName +} + +func (a genericAccessor) SetGenerateName(generateName string) { + if a.generateName == nil { + return + } + *a.generateName = generateName +} + +func (a genericAccessor) GetUID() types.UID { + if a.uid == nil { + return "" + } + return *a.uid +} + +func (a genericAccessor) SetUID(uid types.UID) { + if a.uid == nil { + return + } + *a.uid = uid +} + +func (a genericAccessor) GetAPIVersion() string { + return *a.apiVersion +} + +func (a genericAccessor) SetAPIVersion(version string) { + *a.apiVersion = version +} + +func (a genericAccessor) GetKind() string { + return *a.kind +} + +func (a genericAccessor) SetKind(kind string) { + *a.kind = kind +} + +func (a genericAccessor) GetResourceVersion() string { + return *a.resourceVersion +} + +func (a genericAccessor) SetResourceVersion(version string) { + *a.resourceVersion = version +} + +func (a genericAccessor) GetSelfLink() string { + return *a.selfLink +} + +func (a genericAccessor) SetSelfLink(selfLink string) { + *a.selfLink = selfLink +} + +func (a genericAccessor) GetCreationTimestamp() unversioned.Time { + return *a.creationTimestamp +} + +func (a genericAccessor) SetCreationTimestamp(timestamp unversioned.Time) { + *a.creationTimestamp = timestamp +} + +func (a genericAccessor) GetDeletionTimestamp() *unversioned.Time { + return *a.deletionTimestamp +} + +func (a genericAccessor) SetDeletionTimestamp(timestamp *unversioned.Time) { + *a.deletionTimestamp = timestamp +} + +func (a genericAccessor) GetLabels() map[string]string { + if a.labels == nil { + return nil + } + return *a.labels +} + +func (a genericAccessor) SetLabels(labels map[string]string) { + *a.labels = labels +} + +func (a genericAccessor) GetAnnotations() map[string]string { + if a.annotations == nil { + return nil + } + return *a.annotations +} + +func (a genericAccessor) SetAnnotations(annotations map[string]string) { + if a.annotations == nil { + emptyAnnotations := make(map[string]string) + a.annotations = &emptyAnnotations + } + *a.annotations = annotations +} + +func (a genericAccessor) GetFinalizers() []string { + if a.finalizers == nil { + return nil + } + return *a.finalizers +} + +func (a genericAccessor) SetFinalizers(finalizers []string) { + *a.finalizers = finalizers +} + +func (a genericAccessor) GetOwnerReferences() []metatypes.OwnerReference { + var ret []metatypes.OwnerReference + s := a.ownerReferences + if s.Kind() != reflect.Ptr || s.Elem().Kind() != reflect.Slice { + glog.Errorf("expect %v to be a pointer to slice", s) + return ret + } + s = s.Elem() + // Set the capacity to one element greater to avoid copy if the caller later append an element. + ret = make([]metatypes.OwnerReference, s.Len(), s.Len()+1) + for i := 0; i < s.Len(); i++ { + if err := extractFromOwnerReference(s.Index(i), &ret[i]); err != nil { + glog.Errorf("extractFromOwnerReference failed: %v", err) + return ret + } + } + return ret +} + +func (a genericAccessor) SetOwnerReferences(references []metatypes.OwnerReference) { + s := a.ownerReferences + if s.Kind() != reflect.Ptr || s.Elem().Kind() != reflect.Slice { + glog.Errorf("expect %v to be a pointer to slice", s) + } + s = s.Elem() + newReferences := reflect.MakeSlice(s.Type(), len(references), len(references)) + for i := 0; i < len(references); i++ { + if err := setOwnerReference(newReferences.Index(i), &references[i]); err != nil { + glog.Errorf("setOwnerReference failed: %v", err) + return + } + } + s.Set(newReferences) +} + +// extractFromTypeMeta extracts pointers to version and kind fields from an object +func extractFromTypeMeta(v reflect.Value, a *genericAccessor) error { + if err := runtime.FieldPtr(v, "APIVersion", &a.apiVersion); err != nil { + return err + } + if err := runtime.FieldPtr(v, "Kind", &a.kind); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/metatypes/types.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/metatypes/types.go new file mode 100644 index 0000000000..4f41bb10ce --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/metatypes/types.go @@ -0,0 +1,30 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// The types defined in this package are used by the meta package to represent +// the in-memory version of objects. We cannot reuse the __internal version of +// API objects because it causes import cycle. +package metatypes + +import "k8s.io/client-go/1.5/pkg/types" + +type OwnerReference struct { + APIVersion string + Kind string + UID types.UID + Name string + Controller *bool +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/multirestmapper.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/multirestmapper.go new file mode 100644 index 0000000000..4534271f08 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/multirestmapper.go @@ -0,0 +1,231 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + "strings" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + utilerrors "k8s.io/client-go/1.5/pkg/util/errors" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// MultiRESTMapper is a wrapper for multiple RESTMappers. +type MultiRESTMapper []RESTMapper + +func (m MultiRESTMapper) String() string { + nested := []string{} + for _, t := range m { + currString := fmt.Sprintf("%v", t) + splitStrings := strings.Split(currString, "\n") + nested = append(nested, strings.Join(splitStrings, "\n\t")) + } + + return fmt.Sprintf("MultiRESTMapper{\n\t%s\n}", strings.Join(nested, "\n\t")) +} + +// ResourceSingularizer converts a REST resource name from plural to singular (e.g., from pods to pod) +// This implementation supports multiple REST schemas and return the first match. +func (m MultiRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + for _, t := range m { + singular, err = t.ResourceSingularizer(resource) + if err == nil { + return + } + } + return +} + +func (m MultiRESTMapper) ResourcesFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { + allGVRs := []unversioned.GroupVersionResource{} + for _, t := range m { + gvrs, err := t.ResourcesFor(resource) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + return nil, err + } + + // walk the existing values to de-dup + for _, curr := range gvrs { + found := false + for _, existing := range allGVRs { + if curr == existing { + found = true + break + } + } + + if !found { + allGVRs = append(allGVRs, curr) + } + } + } + + if len(allGVRs) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + return allGVRs, nil +} + +func (m MultiRESTMapper) KindsFor(resource unversioned.GroupVersionResource) (gvk []unversioned.GroupVersionKind, err error) { + allGVKs := []unversioned.GroupVersionKind{} + for _, t := range m { + gvks, err := t.KindsFor(resource) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + return nil, err + } + + // walk the existing values to de-dup + for _, curr := range gvks { + found := false + for _, existing := range allGVKs { + if curr == existing { + found = true + break + } + } + + if !found { + allGVKs = append(allGVKs, curr) + } + } + } + + if len(allGVKs) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + return allGVKs, nil +} + +func (m MultiRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { + resources, err := m.ResourcesFor(resource) + if err != nil { + return unversioned.GroupVersionResource{}, err + } + if len(resources) == 1 { + return resources[0], nil + } + + return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} +} + +func (m MultiRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { + kinds, err := m.KindsFor(resource) + if err != nil { + return unversioned.GroupVersionKind{}, err + } + if len(kinds) == 1 { + return kinds[0], nil + } + + return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} +} + +// RESTMapping provides the REST mapping for the resource based on the +// kind and version. This implementation supports multiple REST schemas and +// return the first match. +func (m MultiRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { + allMappings := []*RESTMapping{} + errors := []error{} + + for _, t := range m { + currMapping, err := t.RESTMapping(gk, versions...) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + errors = append(errors, err) + continue + } + + allMappings = append(allMappings, currMapping) + } + + // if we got exactly one mapping, then use it even if other requested failed + if len(allMappings) == 1 { + return allMappings[0], nil + } + if len(allMappings) > 1 { + var kinds []unversioned.GroupVersionKind + for _, m := range allMappings { + kinds = append(kinds, m.GroupVersionKind) + } + return nil, &AmbiguousKindError{PartialKind: gk.WithVersion(""), MatchingKinds: kinds} + } + if len(errors) > 0 { + return nil, utilerrors.NewAggregate(errors) + } + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} +} + +// RESTMappings returns all possible RESTMappings for the provided group kind, or an error +// if the type is not recognized. +func (m MultiRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { + var allMappings []*RESTMapping + var errors []error + + for _, t := range m { + currMappings, err := t.RESTMappings(gk) + // ignore "no match" errors, but any other error percolates back up + if IsNoMatchError(err) { + continue + } + if err != nil { + errors = append(errors, err) + continue + } + allMappings = append(allMappings, currMappings...) + } + if len(errors) > 0 { + return nil, utilerrors.NewAggregate(errors) + } + if len(allMappings) == 0 { + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} + } + return allMappings, nil +} + +// AliasesForResource finds the first alias response for the provided mappers. +func (m MultiRESTMapper) AliasesForResource(alias string) ([]string, bool) { + seenAliases := sets.NewString() + allAliases := []string{} + handled := false + + for _, t := range m { + if currAliases, currOk := t.AliasesForResource(alias); currOk { + for _, currAlias := range currAliases { + if !seenAliases.Has(currAlias) { + allAliases = append(allAliases, currAlias) + seenAliases.Insert(currAlias) + } + } + handled = true + } + } + return allAliases, handled +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/priority.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/priority.go new file mode 100644 index 0000000000..2f7fe102b3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/priority.go @@ -0,0 +1,226 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +const ( + AnyGroup = "*" + AnyVersion = "*" + AnyResource = "*" + AnyKind = "*" +) + +// PriorityRESTMapper is a wrapper for automatically choosing a particular Resource or Kind +// when multiple matches are possible +type PriorityRESTMapper struct { + // Delegate is the RESTMapper to use to locate all the Kind and Resource matches + Delegate RESTMapper + + // ResourcePriority is a list of priority patterns to apply to matching resources. + // The list of all matching resources is narrowed based on the patterns until only one remains. + // A pattern with no matches is skipped. A pattern with more than one match uses its + // matches as the list to continue matching against. + ResourcePriority []unversioned.GroupVersionResource + + // KindPriority is a list of priority patterns to apply to matching kinds. + // The list of all matching kinds is narrowed based on the patterns until only one remains. + // A pattern with no matches is skipped. A pattern with more than one match uses its + // matches as the list to continue matching against. + KindPriority []unversioned.GroupVersionKind +} + +func (m PriorityRESTMapper) String() string { + return fmt.Sprintf("PriorityRESTMapper{\n\t%v\n\t%v\n\t%v\n}", m.ResourcePriority, m.KindPriority, m.Delegate) +} + +// ResourceFor finds all resources, then passes them through the ResourcePriority patterns to find a single matching hit. +func (m PriorityRESTMapper) ResourceFor(partiallySpecifiedResource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { + originalGVRs, err := m.Delegate.ResourcesFor(partiallySpecifiedResource) + if err != nil { + return unversioned.GroupVersionResource{}, err + } + if len(originalGVRs) == 1 { + return originalGVRs[0], nil + } + + remainingGVRs := append([]unversioned.GroupVersionResource{}, originalGVRs...) + for _, pattern := range m.ResourcePriority { + matchedGVRs := []unversioned.GroupVersionResource{} + for _, gvr := range remainingGVRs { + if resourceMatches(pattern, gvr) { + matchedGVRs = append(matchedGVRs, gvr) + } + } + + switch len(matchedGVRs) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matchedGVRs[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remainingGVRs = matchedGVRs + } + } + + return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingResources: originalGVRs} +} + +// KindFor finds all kinds, then passes them through the KindPriority patterns to find a single matching hit. +func (m PriorityRESTMapper) KindFor(partiallySpecifiedResource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { + originalGVKs, err := m.Delegate.KindsFor(partiallySpecifiedResource) + if err != nil { + return unversioned.GroupVersionKind{}, err + } + if len(originalGVKs) == 1 { + return originalGVKs[0], nil + } + + remainingGVKs := append([]unversioned.GroupVersionKind{}, originalGVKs...) + for _, pattern := range m.KindPriority { + matchedGVKs := []unversioned.GroupVersionKind{} + for _, gvr := range remainingGVKs { + if kindMatches(pattern, gvr) { + matchedGVKs = append(matchedGVKs, gvr) + } + } + + switch len(matchedGVKs) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matchedGVKs[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remainingGVKs = matchedGVKs + } + } + + return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingKinds: originalGVKs} +} + +func resourceMatches(pattern unversioned.GroupVersionResource, resource unversioned.GroupVersionResource) bool { + if pattern.Group != AnyGroup && pattern.Group != resource.Group { + return false + } + if pattern.Version != AnyVersion && pattern.Version != resource.Version { + return false + } + if pattern.Resource != AnyResource && pattern.Resource != resource.Resource { + return false + } + + return true +} + +func kindMatches(pattern unversioned.GroupVersionKind, kind unversioned.GroupVersionKind) bool { + if pattern.Group != AnyGroup && pattern.Group != kind.Group { + return false + } + if pattern.Version != AnyVersion && pattern.Version != kind.Version { + return false + } + if pattern.Kind != AnyKind && pattern.Kind != kind.Kind { + return false + } + + return true +} + +func (m PriorityRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (mapping *RESTMapping, err error) { + mappings, err := m.Delegate.RESTMappings(gk) + if err != nil { + return nil, err + } + + // any versions the user provides take priority + priorities := m.KindPriority + if len(versions) > 0 { + priorities = make([]unversioned.GroupVersionKind, 0, len(m.KindPriority)+len(versions)) + for _, version := range versions { + gv, err := unversioned.ParseGroupVersion(version) + if err != nil { + return nil, err + } + priorities = append(priorities, gv.WithKind(AnyKind)) + } + priorities = append(priorities, m.KindPriority...) + } + + remaining := append([]*RESTMapping{}, mappings...) + for _, pattern := range priorities { + var matching []*RESTMapping + for _, m := range remaining { + if kindMatches(pattern, m.GroupVersionKind) { + matching = append(matching, m) + } + } + + switch len(matching) { + case 0: + // if you have no matches, then nothing matched this pattern just move to the next + continue + case 1: + // one match, return + return matching[0], nil + default: + // more than one match, use the matched hits as the list moving to the next pattern. + // this way you can have a series of selection criteria + remaining = matching + } + } + if len(remaining) == 1 { + return remaining[0], nil + } + + var kinds []unversioned.GroupVersionKind + for _, m := range mappings { + kinds = append(kinds, m.GroupVersionKind) + } + return nil, &AmbiguousKindError{PartialKind: gk.WithVersion(""), MatchingKinds: kinds} +} + +func (m PriorityRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { + return m.Delegate.RESTMappings(gk) +} + +func (m PriorityRESTMapper) AliasesForResource(alias string) (aliases []string, ok bool) { + return m.Delegate.AliasesForResource(alias) +} + +func (m PriorityRESTMapper) ResourceSingularizer(resource string) (singular string, err error) { + return m.Delegate.ResourceSingularizer(resource) +} + +func (m PriorityRESTMapper) ResourcesFor(partiallySpecifiedResource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { + return m.Delegate.ResourcesFor(partiallySpecifiedResource) +} + +func (m PriorityRESTMapper) KindsFor(partiallySpecifiedResource unversioned.GroupVersionResource) (gvk []unversioned.GroupVersionKind, err error) { + return m.Delegate.KindsFor(partiallySpecifiedResource) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/restmapper.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/restmapper.go new file mode 100644 index 0000000000..063f48e4b0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/restmapper.go @@ -0,0 +1,601 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// TODO: move everything in this file to pkg/api/rest +package meta + +import ( + "fmt" + "sort" + "strings" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Implements RESTScope interface +type restScope struct { + name RESTScopeName + paramName string + argumentName string + paramDescription string +} + +func (r *restScope) Name() RESTScopeName { + return r.name +} +func (r *restScope) ParamName() string { + return r.paramName +} +func (r *restScope) ArgumentName() string { + return r.argumentName +} +func (r *restScope) ParamDescription() string { + return r.paramDescription +} + +var RESTScopeNamespace = &restScope{ + name: RESTScopeNameNamespace, + paramName: "namespaces", + argumentName: "namespace", + paramDescription: "object name and auth scope, such as for teams and projects", +} + +var RESTScopeRoot = &restScope{ + name: RESTScopeNameRoot, +} + +// DefaultRESTMapper exposes mappings between the types defined in a +// runtime.Scheme. It assumes that all types defined the provided scheme +// can be mapped with the provided MetadataAccessor and Codec interfaces. +// +// The resource name of a Kind is defined as the lowercase, +// English-plural version of the Kind string. +// When converting from resource to Kind, the singular version of the +// resource name is also accepted for convenience. +// +// TODO: Only accept plural for some operations for increased control? +// (`get pod bar` vs `get pods bar`) +type DefaultRESTMapper struct { + defaultGroupVersions []unversioned.GroupVersion + + resourceToKind map[unversioned.GroupVersionResource]unversioned.GroupVersionKind + kindToPluralResource map[unversioned.GroupVersionKind]unversioned.GroupVersionResource + kindToScope map[unversioned.GroupVersionKind]RESTScope + singularToPlural map[unversioned.GroupVersionResource]unversioned.GroupVersionResource + pluralToSingular map[unversioned.GroupVersionResource]unversioned.GroupVersionResource + + interfacesFunc VersionInterfacesFunc + + // aliasToResource is used for mapping aliases to resources + aliasToResource map[string][]string +} + +func (m *DefaultRESTMapper) String() string { + return fmt.Sprintf("DefaultRESTMapper{kindToPluralResource=%v}", m.kindToPluralResource) +} + +var _ RESTMapper = &DefaultRESTMapper{} + +// VersionInterfacesFunc returns the appropriate typer, and metadata accessor for a +// given api version, or an error if no such api version exists. +type VersionInterfacesFunc func(version unversioned.GroupVersion) (*VersionInterfaces, error) + +// NewDefaultRESTMapper initializes a mapping between Kind and APIVersion +// to a resource name and back based on the objects in a runtime.Scheme +// and the Kubernetes API conventions. Takes a group name, a priority list of the versions +// to search when an object has no default version (set empty to return an error), +// and a function that retrieves the correct metadata for a given version. +func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, f VersionInterfacesFunc) *DefaultRESTMapper { + resourceToKind := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionKind) + kindToPluralResource := make(map[unversioned.GroupVersionKind]unversioned.GroupVersionResource) + kindToScope := make(map[unversioned.GroupVersionKind]RESTScope) + singularToPlural := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource) + pluralToSingular := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource) + aliasToResource := make(map[string][]string) + // TODO: verify name mappings work correctly when versions differ + + return &DefaultRESTMapper{ + resourceToKind: resourceToKind, + kindToPluralResource: kindToPluralResource, + kindToScope: kindToScope, + defaultGroupVersions: defaultGroupVersions, + singularToPlural: singularToPlural, + pluralToSingular: pluralToSingular, + aliasToResource: aliasToResource, + interfacesFunc: f, + } +} + +func (m *DefaultRESTMapper) Add(kind unversioned.GroupVersionKind, scope RESTScope) { + plural, singular := KindToResource(kind) + + m.singularToPlural[singular] = plural + m.pluralToSingular[plural] = singular + + m.resourceToKind[singular] = kind + m.resourceToKind[plural] = kind + + m.kindToPluralResource[kind] = plural + m.kindToScope[kind] = scope +} + +// unpluralizedSuffixes is a list of resource suffixes that are the same plural and singular +// This is only is only necessary because some bits of code are lazy and don't actually use the RESTMapper like they should. +// TODO eliminate this so that different callers can correctly map to resources. This probably means updating all +// callers to use the RESTMapper they mean. +var unpluralizedSuffixes = []string{ + "endpoints", +} + +// KindToResource converts Kind to a resource name. +// Broken. This method only "sort of" works when used outside of this package. It assumes that Kinds and Resources match +// and they aren't guaranteed to do so. +func KindToResource(kind unversioned.GroupVersionKind) ( /*plural*/ unversioned.GroupVersionResource /*singular*/, unversioned.GroupVersionResource) { + kindName := kind.Kind + if len(kindName) == 0 { + return unversioned.GroupVersionResource{}, unversioned.GroupVersionResource{} + } + singularName := strings.ToLower(kindName) + singular := kind.GroupVersion().WithResource(singularName) + + for _, skip := range unpluralizedSuffixes { + if strings.HasSuffix(singularName, skip) { + return singular, singular + } + } + + switch string(singularName[len(singularName)-1]) { + case "s": + return kind.GroupVersion().WithResource(singularName + "es"), singular + case "y": + return kind.GroupVersion().WithResource(strings.TrimSuffix(singularName, "y") + "ies"), singular + } + + return kind.GroupVersion().WithResource(singularName + "s"), singular +} + +// ResourceSingularizer implements RESTMapper +// It converts a resource name from plural to singular (e.g., from pods to pod) +func (m *DefaultRESTMapper) ResourceSingularizer(resourceType string) (string, error) { + partialResource := unversioned.GroupVersionResource{Resource: resourceType} + resources, err := m.ResourcesFor(partialResource) + if err != nil { + return resourceType, err + } + + singular := unversioned.GroupVersionResource{} + for _, curr := range resources { + currSingular, ok := m.pluralToSingular[curr] + if !ok { + continue + } + if singular.Empty() { + singular = currSingular + continue + } + + if currSingular.Resource != singular.Resource { + return resourceType, fmt.Errorf("multiple possible singular resources (%v) found for %v", resources, resourceType) + } + } + + if singular.Empty() { + return resourceType, fmt.Errorf("no singular of resource %v has been defined", resourceType) + } + + return singular.Resource, nil +} + +// coerceResourceForMatching makes the resource lower case and converts internal versions to unspecified (legacy behavior) +func coerceResourceForMatching(resource unversioned.GroupVersionResource) unversioned.GroupVersionResource { + resource.Resource = strings.ToLower(resource.Resource) + if resource.Version == runtime.APIVersionInternal { + resource.Version = "" + } + + return resource +} + +func (m *DefaultRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { + resource := coerceResourceForMatching(input) + + hasResource := len(resource.Resource) > 0 + hasGroup := len(resource.Group) > 0 + hasVersion := len(resource.Version) > 0 + + if !hasResource { + return nil, fmt.Errorf("a resource must be present, got: %v", resource) + } + + ret := []unversioned.GroupVersionResource{} + switch { + case hasGroup && hasVersion: + // fully qualified. Find the exact match + for plural, singular := range m.pluralToSingular { + if singular == resource { + ret = append(ret, plural) + break + } + if plural == resource { + ret = append(ret, plural) + break + } + } + + case hasGroup: + // given a group, prefer an exact match. If you don't find one, resort to a prefix match on group + foundExactMatch := false + requestedGroupResource := resource.GroupResource() + for plural, singular := range m.pluralToSingular { + if singular.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, plural) + } + if plural.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, plural) + } + } + + // if you didn't find an exact match, match on group prefixing. This allows storageclass.storage to match + // storageclass.storage.k8s.io + if !foundExactMatch { + for plural, singular := range m.pluralToSingular { + if !strings.HasPrefix(plural.Group, requestedGroupResource.Group) { + continue + } + if singular.Resource == requestedGroupResource.Resource { + ret = append(ret, plural) + } + if plural.Resource == requestedGroupResource.Resource { + ret = append(ret, plural) + } + } + + } + + case hasVersion: + for plural, singular := range m.pluralToSingular { + if singular.Version == resource.Version && singular.Resource == resource.Resource { + ret = append(ret, plural) + } + if plural.Version == resource.Version && plural.Resource == resource.Resource { + ret = append(ret, plural) + } + } + + default: + for plural, singular := range m.pluralToSingular { + if singular.Resource == resource.Resource { + ret = append(ret, plural) + } + if plural.Resource == resource.Resource { + ret = append(ret, plural) + } + } + } + + if len(ret) == 0 { + return nil, &NoResourceMatchError{PartialResource: resource} + } + + sort.Sort(resourceByPreferredGroupVersion{ret, m.defaultGroupVersions}) + return ret, nil +} + +func (m *DefaultRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { + resources, err := m.ResourcesFor(resource) + if err != nil { + return unversioned.GroupVersionResource{}, err + } + if len(resources) == 1 { + return resources[0], nil + } + + return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} +} + +func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) { + resource := coerceResourceForMatching(input) + + hasResource := len(resource.Resource) > 0 + hasGroup := len(resource.Group) > 0 + hasVersion := len(resource.Version) > 0 + + if !hasResource { + return nil, fmt.Errorf("a resource must be present, got: %v", resource) + } + + ret := []unversioned.GroupVersionKind{} + switch { + // fully qualified. Find the exact match + case hasGroup && hasVersion: + kind, exists := m.resourceToKind[resource] + if exists { + ret = append(ret, kind) + } + + case hasGroup: + foundExactMatch := false + requestedGroupResource := resource.GroupResource() + for currResource, currKind := range m.resourceToKind { + if currResource.GroupResource() == requestedGroupResource { + foundExactMatch = true + ret = append(ret, currKind) + } + } + + // if you didn't find an exact match, match on group prefixing. This allows storageclass.storage to match + // storageclass.storage.k8s.io + if !foundExactMatch { + for currResource, currKind := range m.resourceToKind { + if !strings.HasPrefix(currResource.Group, requestedGroupResource.Group) { + continue + } + if currResource.Resource == requestedGroupResource.Resource { + ret = append(ret, currKind) + } + } + + } + + case hasVersion: + for currResource, currKind := range m.resourceToKind { + if currResource.Version == resource.Version && currResource.Resource == resource.Resource { + ret = append(ret, currKind) + } + } + + default: + for currResource, currKind := range m.resourceToKind { + if currResource.Resource == resource.Resource { + ret = append(ret, currKind) + } + } + } + + if len(ret) == 0 { + return nil, &NoResourceMatchError{PartialResource: input} + } + + sort.Sort(kindByPreferredGroupVersion{ret, m.defaultGroupVersions}) + return ret, nil +} + +func (m *DefaultRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { + kinds, err := m.KindsFor(resource) + if err != nil { + return unversioned.GroupVersionKind{}, err + } + if len(kinds) == 1 { + return kinds[0], nil + } + + return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} +} + +type kindByPreferredGroupVersion struct { + list []unversioned.GroupVersionKind + sortOrder []unversioned.GroupVersion +} + +func (o kindByPreferredGroupVersion) Len() int { return len(o.list) } +func (o kindByPreferredGroupVersion) Swap(i, j int) { o.list[i], o.list[j] = o.list[j], o.list[i] } +func (o kindByPreferredGroupVersion) Less(i, j int) bool { + lhs := o.list[i] + rhs := o.list[j] + if lhs == rhs { + return false + } + + if lhs.GroupVersion() == rhs.GroupVersion() { + return lhs.Kind < rhs.Kind + } + + // otherwise, the difference is in the GroupVersion, so we need to sort with respect to the preferred order + lhsIndex := -1 + rhsIndex := -1 + + for i := range o.sortOrder { + if o.sortOrder[i] == lhs.GroupVersion() { + lhsIndex = i + } + if o.sortOrder[i] == rhs.GroupVersion() { + rhsIndex = i + } + } + + if rhsIndex == -1 { + return true + } + + return lhsIndex < rhsIndex +} + +type resourceByPreferredGroupVersion struct { + list []unversioned.GroupVersionResource + sortOrder []unversioned.GroupVersion +} + +func (o resourceByPreferredGroupVersion) Len() int { return len(o.list) } +func (o resourceByPreferredGroupVersion) Swap(i, j int) { o.list[i], o.list[j] = o.list[j], o.list[i] } +func (o resourceByPreferredGroupVersion) Less(i, j int) bool { + lhs := o.list[i] + rhs := o.list[j] + if lhs == rhs { + return false + } + + if lhs.GroupVersion() == rhs.GroupVersion() { + return lhs.Resource < rhs.Resource + } + + // otherwise, the difference is in the GroupVersion, so we need to sort with respect to the preferred order + lhsIndex := -1 + rhsIndex := -1 + + for i := range o.sortOrder { + if o.sortOrder[i] == lhs.GroupVersion() { + lhsIndex = i + } + if o.sortOrder[i] == rhs.GroupVersion() { + rhsIndex = i + } + } + + if rhsIndex == -1 { + return true + } + + return lhsIndex < rhsIndex +} + +// RESTMapping returns a struct representing the resource path and conversion interfaces a +// RESTClient should use to operate on the provided group/kind in order of versions. If a version search +// order is not provided, the search order provided to DefaultRESTMapper will be used to resolve which +// version should be used to access the named group/kind. +// TODO: consider refactoring to use RESTMappings in a way that preserves version ordering and preference +func (m *DefaultRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { + // Pick an appropriate version + var gvk *unversioned.GroupVersionKind + hadVersion := false + for _, version := range versions { + if len(version) == 0 || version == runtime.APIVersionInternal { + continue + } + + currGVK := gk.WithVersion(version) + hadVersion = true + if _, ok := m.kindToPluralResource[currGVK]; ok { + gvk = &currGVK + break + } + } + // Use the default preferred versions + if !hadVersion && (gvk == nil) { + for _, gv := range m.defaultGroupVersions { + if gv.Group != gk.Group { + continue + } + + currGVK := gk.WithVersion(gv.Version) + if _, ok := m.kindToPluralResource[currGVK]; ok { + gvk = &currGVK + break + } + } + } + if gvk == nil { + return nil, &NoKindMatchError{PartialKind: gk.WithVersion("")} + } + + // Ensure we have a REST mapping + resource, ok := m.kindToPluralResource[*gvk] + if !ok { + found := []unversioned.GroupVersion{} + for _, gv := range m.defaultGroupVersions { + if _, ok := m.kindToPluralResource[*gvk]; ok { + found = append(found, gv) + } + } + if len(found) > 0 { + return nil, fmt.Errorf("object with kind %q exists in versions %v, not %v", gvk.Kind, found, gvk.GroupVersion().String()) + } + return nil, fmt.Errorf("the provided version %q and kind %q cannot be mapped to a supported object", gvk.GroupVersion().String(), gvk.Kind) + } + + // Ensure we have a REST scope + scope, ok := m.kindToScope[*gvk] + if !ok { + return nil, fmt.Errorf("the provided version %q and kind %q cannot be mapped to a supported scope", gvk.GroupVersion().String(), gvk.Kind) + } + + interfaces, err := m.interfacesFunc(gvk.GroupVersion()) + if err != nil { + return nil, fmt.Errorf("the provided version %q has no relevant versions: %v", gvk.GroupVersion().String(), err) + } + + retVal := &RESTMapping{ + Resource: resource.Resource, + GroupVersionKind: *gvk, + Scope: scope, + + ObjectConvertor: interfaces.ObjectConvertor, + MetadataAccessor: interfaces.MetadataAccessor, + } + + return retVal, nil +} + +// RESTMappings returns the RESTMappings for the provided group kind in a rough internal preferred order. If no +// kind is found it will return a NoResourceMatchError. +func (m *DefaultRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { + // Use the default preferred versions + var mappings []*RESTMapping + for _, gv := range m.defaultGroupVersions { + if gv.Group != gk.Group { + continue + } + + gvk := gk.WithVersion(gv.Version) + gvr, ok := m.kindToPluralResource[gvk] + if !ok { + continue + } + + // Ensure we have a REST scope + scope, ok := m.kindToScope[gvk] + if !ok { + return nil, fmt.Errorf("the provided version %q and kind %q cannot be mapped to a supported scope", gvk.GroupVersion(), gvk.Kind) + } + + interfaces, err := m.interfacesFunc(gvk.GroupVersion()) + if err != nil { + return nil, fmt.Errorf("the provided version %q has no relevant versions: %v", gvk.GroupVersion().String(), err) + } + + mappings = append(mappings, &RESTMapping{ + Resource: gvr.Resource, + GroupVersionKind: gvk, + Scope: scope, + + ObjectConvertor: interfaces.ObjectConvertor, + MetadataAccessor: interfaces.MetadataAccessor, + }) + } + + if len(mappings) == 0 { + return nil, &NoResourceMatchError{PartialResource: unversioned.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}} + } + return mappings, nil +} + +// AddResourceAlias maps aliases to resources +func (m *DefaultRESTMapper) AddResourceAlias(alias string, resources ...string) { + if len(resources) == 0 { + return + } + m.aliasToResource[alias] = resources +} + +// AliasesForResource returns whether a resource has an alias or not +func (m *DefaultRESTMapper) AliasesForResource(alias string) ([]string, bool) { + if res, ok := m.aliasToResource[alias]; ok { + return res, true + } + return nil, false +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/meta/unstructured.go b/vendor/k8s.io/client-go/1.5/pkg/api/meta/unstructured.go new file mode 100644 index 0000000000..fef6e86d03 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/meta/unstructured.go @@ -0,0 +1,31 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package meta + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// InterfacesForUnstructured returns VersionInterfaces suitable for +// dealing with runtime.Unstructured objects. +func InterfacesForUnstructured(unversioned.GroupVersion) (*VersionInterfaces, error) { + return &VersionInterfaces{ + ObjectConvertor: &runtime.UnstructuredObjectConverter{}, + MetadataAccessor: NewAccessor(), + }, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/ref.go b/vendor/k8s.io/client-go/1.5/pkg/api/ref.go new file mode 100644 index 0000000000..d25b4dc185 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/ref.go @@ -0,0 +1,132 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "errors" + "fmt" + "net/url" + "strings" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +var ( + // Errors that could be returned by GetReference. + ErrNilObject = errors.New("can't reference a nil object") + ErrNoSelfLink = errors.New("selfLink was empty, can't make reference") +) + +// GetReference returns an ObjectReference which refers to the given +// object, or an error if the object doesn't follow the conventions +// that would allow this. +// TODO: should take a meta.Interface see http://issue.k8s.io/7127 +func GetReference(obj runtime.Object) (*ObjectReference, error) { + if obj == nil { + return nil, ErrNilObject + } + if ref, ok := obj.(*ObjectReference); ok { + // Don't make a reference to a reference. + return ref, nil + } + + gvk := obj.GetObjectKind().GroupVersionKind() + + // if the object referenced is actually persisted, we can just get kind from meta + // if we are building an object reference to something not yet persisted, we should fallback to scheme + kind := gvk.Kind + if len(kind) == 0 { + // TODO: this is wrong + gvks, _, err := Scheme.ObjectKinds(obj) + if err != nil { + return nil, err + } + kind = gvks[0].Kind + } + + // An object that implements only List has enough metadata to build a reference + var listMeta meta.List + objectMeta, err := meta.Accessor(obj) + if err != nil { + listMeta, err = meta.ListAccessor(obj) + if err != nil { + return nil, err + } + } else { + listMeta = objectMeta + } + + // if the object referenced is actually persisted, we can also get version from meta + version := gvk.GroupVersion().String() + if len(version) == 0 { + selfLink := listMeta.GetSelfLink() + if len(selfLink) == 0 { + return nil, ErrNoSelfLink + } + selfLinkUrl, err := url.Parse(selfLink) + if err != nil { + return nil, err + } + // example paths: /<prefix>/<version>/* + parts := strings.Split(selfLinkUrl.Path, "/") + if len(parts) < 3 { + return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version) + } + version = parts[2] + } + + // only has list metadata + if objectMeta == nil { + return &ObjectReference{ + Kind: kind, + APIVersion: version, + ResourceVersion: listMeta.GetResourceVersion(), + }, nil + } + + return &ObjectReference{ + Kind: kind, + APIVersion: version, + Name: objectMeta.GetName(), + Namespace: objectMeta.GetNamespace(), + UID: objectMeta.GetUID(), + ResourceVersion: objectMeta.GetResourceVersion(), + }, nil +} + +// GetPartialReference is exactly like GetReference, but allows you to set the FieldPath. +func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference, error) { + ref, err := GetReference(obj) + if err != nil { + return nil, err + } + ref.FieldPath = fieldPath + return ref, nil +} + +// IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that +// intend only to get a reference to that object. This simplifies the event recording interface. +func (obj *ObjectReference) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *ObjectReference) GroupVersionKind() unversioned.GroupVersionKind { + return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ObjectReference) GetObjectKind() unversioned.ObjectKind { return obj } diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/register.go b/vendor/k8s.io/client-go/1.5/pkg/api/register.go new file mode 100644 index 0000000000..46addba88a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/register.go @@ -0,0 +1,139 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer" +) + +// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. +// NOTE: If you are copying this file to start a new api group, STOP! Copy the +// extensions group instead. This Scheme is special and should appear ONLY in +// the api group, unless you really know what you're doing. +// TODO(lavalamp): make the above error impossible. +var Scheme = runtime.NewScheme() + +// Codecs provides access to encoding and decoding for the scheme +var Codecs = serializer.NewCodecFactory(Scheme) + +// GroupName is the group name use in this package +const GroupName = "" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Unversioned is group version for unversioned API objects +// TODO: this should be v1 probably +var Unversioned = unversioned.GroupVersion{Group: "", Version: "v1"} + +// ParameterCodec handles versioning of objects that are converted to query parameters. +var ParameterCodec = runtime.NewParameterCodec(Scheme) + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +func init() { + // TODO(lavalamp): move this call to scheme builder above. Can't + // remove it from here because lots of people inappropriately rely on it + // (specifically the unversioned time conversion). Can't have it in + // both places because then it gets double registered. Consequence of + // current state is that it only ever gets registered in the main + // api.Scheme, even though everyone that uses anything from unversioned + // needs these. + if err := addConversionFuncs(Scheme); err != nil { + // Programmer error. + panic(err) + } +} + +func addKnownTypes(scheme *runtime.Scheme) error { + if err := scheme.AddIgnoredConversionType(&unversioned.TypeMeta{}, &unversioned.TypeMeta{}); err != nil { + return err + } + scheme.AddKnownTypes(SchemeGroupVersion, + &Pod{}, + &PodList{}, + &PodStatusResult{}, + &PodTemplate{}, + &PodTemplateList{}, + &ReplicationControllerList{}, + &ReplicationController{}, + &ServiceList{}, + &Service{}, + &ServiceProxyOptions{}, + &NodeList{}, + &Node{}, + &NodeProxyOptions{}, + &Endpoints{}, + &EndpointsList{}, + &Binding{}, + &Event{}, + &EventList{}, + &List{}, + &LimitRange{}, + &LimitRangeList{}, + &ResourceQuota{}, + &ResourceQuotaList{}, + &Namespace{}, + &NamespaceList{}, + &ServiceAccount{}, + &ServiceAccountList{}, + &Secret{}, + &SecretList{}, + &PersistentVolume{}, + &PersistentVolumeList{}, + &PersistentVolumeClaim{}, + &PersistentVolumeClaimList{}, + &DeleteOptions{}, + &ListOptions{}, + &PodAttachOptions{}, + &PodLogOptions{}, + &PodExecOptions{}, + &PodProxyOptions{}, + &ComponentStatus{}, + &ComponentStatusList{}, + &SerializedReference{}, + &RangeAllocation{}, + &ConfigMap{}, + &ConfigMapList{}, + ) + + // Register Unversioned types under their own special group + scheme.AddUnversionedTypes(Unversioned, + &unversioned.ExportOptions{}, + &unversioned.Status{}, + &unversioned.APIVersions{}, + &unversioned.APIGroupList{}, + &unversioned.APIGroup{}, + &unversioned.APIResourceList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/requestcontext.go b/vendor/k8s.io/client-go/1.5/pkg/api/requestcontext.go new file mode 100644 index 0000000000..724fea811d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/requestcontext.go @@ -0,0 +1,117 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "errors" + "net/http" + "sync" + + "github.com/golang/glog" +) + +// RequestContextMapper keeps track of the context associated with a particular request +type RequestContextMapper interface { + // Get returns the context associated with the given request (if any), and true if the request has an associated context, and false if it does not. + Get(req *http.Request) (Context, bool) + // Update maps the request to the given context. If no context was previously associated with the request, an error is returned. + // Update should only be called with a descendant context of the previously associated context. + // Updating to an unrelated context may return an error in the future. + // The context associated with a request should only be updated by a limited set of callers. + // Valid examples include the authentication layer, or an audit/tracing layer. + Update(req *http.Request, context Context) error +} + +type requestContextMap struct { + contexts map[*http.Request]Context + lock sync.Mutex +} + +// NewRequestContextMapper returns a new RequestContextMapper. +// The returned mapper must be added as a request filter using NewRequestContextFilter. +func NewRequestContextMapper() RequestContextMapper { + return &requestContextMap{ + contexts: make(map[*http.Request]Context), + } +} + +// Get returns the context associated with the given request (if any), and true if the request has an associated context, and false if it does not. +// Get will only return a valid context when called from inside the filter chain set up by NewRequestContextFilter() +func (c *requestContextMap) Get(req *http.Request) (Context, bool) { + c.lock.Lock() + defer c.lock.Unlock() + context, ok := c.contexts[req] + return context, ok +} + +// Update maps the request to the given context. +// If no context was previously associated with the request, an error is returned and the context is ignored. +func (c *requestContextMap) Update(req *http.Request, context Context) error { + c.lock.Lock() + defer c.lock.Unlock() + if _, ok := c.contexts[req]; !ok { + return errors.New("No context associated") + } + // TODO: ensure the new context is a descendant of the existing one + c.contexts[req] = context + return nil +} + +// init maps the request to the given context and returns true if there was no context associated with the request already. +// if a context was already associated with the request, it ignores the given context and returns false. +// init is intentionally unexported to ensure that all init calls are paired with a remove after a request is handled +func (c *requestContextMap) init(req *http.Request, context Context) bool { + c.lock.Lock() + defer c.lock.Unlock() + if _, exists := c.contexts[req]; exists { + return false + } + c.contexts[req] = context + return true +} + +// remove is intentionally unexported to ensure that the context is not removed until a request is handled +func (c *requestContextMap) remove(req *http.Request) { + c.lock.Lock() + defer c.lock.Unlock() + delete(c.contexts, req) +} + +// WithRequestContext ensures there is a Context object associated with the request before calling the passed handler. +// After the passed handler runs, the context is cleaned up. +func WithRequestContext(handler http.Handler, mapper RequestContextMapper) http.Handler { + rcMap, ok := mapper.(*requestContextMap) + if !ok { + glog.Fatal("Unknown RequestContextMapper implementation.") + } + + return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + if rcMap.init(req, NewContext()) { + // If we were the ones to successfully initialize, pair with a remove + defer rcMap.remove(req) + } + handler.ServeHTTP(w, req) + }) +} + +// IsEmpty returns true if there are no contexts registered, or an error if it could not be determined. Intended for use by tests. +func IsEmpty(requestsToContexts RequestContextMapper) (bool, error) { + if requestsToContexts, ok := requestsToContexts.(*requestContextMap); ok { + return len(requestsToContexts.contexts) == 0, nil + } + return true, errors.New("Unknown RequestContextMapper implementation") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/amount.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/amount.go new file mode 100644 index 0000000000..a8866a43e1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/amount.go @@ -0,0 +1,299 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math/big" + "strconv" + + inf "gopkg.in/inf.v0" +) + +// Scale is used for getting and setting the base-10 scaled value. +// Base-2 scales are omitted for mathematical simplicity. +// See Quantity.ScaledValue for more details. +type Scale int32 + +// infScale adapts a Scale value to an inf.Scale value. +func (s Scale) infScale() inf.Scale { + return inf.Scale(-s) // inf.Scale is upside-down +} + +const ( + Nano Scale = -9 + Micro Scale = -6 + Milli Scale = -3 + Kilo Scale = 3 + Mega Scale = 6 + Giga Scale = 9 + Tera Scale = 12 + Peta Scale = 15 + Exa Scale = 18 +) + +var ( + Zero = int64Amount{} + + // Used by quantity strings - treat as read only + zeroBytes = []byte("0") +) + +// int64Amount represents a fixed precision numerator and arbitrary scale exponent. It is faster +// than operations on inf.Dec for values that can be represented as int64. +// +k8s:openapi-gen=true +type int64Amount struct { + value int64 + scale Scale +} + +// Sign returns 0 if the value is zero, -1 if it is less than 0, or 1 if it is greater than 0. +func (a int64Amount) Sign() int { + switch { + case a.value == 0: + return 0 + case a.value > 0: + return 1 + default: + return -1 + } +} + +// AsInt64 returns the current amount as an int64 at scale 0, or false if the value cannot be +// represented in an int64 OR would result in a loss of precision. This method is intended as +// an optimization to avoid calling AsDec. +func (a int64Amount) AsInt64() (int64, bool) { + if a.scale == 0 { + return a.value, true + } + if a.scale < 0 { + // TODO: attempt to reduce factors, although it is assumed that factors are reduced prior + // to the int64Amount being created. + return 0, false + } + return positiveScaleInt64(a.value, a.scale) +} + +// AsScaledInt64 returns an int64 representing the value of this amount at the specified scale, +// rounding up, or false if that would result in overflow. (1e20).AsScaledInt64(1) would result +// in overflow because 1e19 is not representable as an int64. Note that setting a scale larger +// than the current value may result in loss of precision - i.e. (1e-6).AsScaledInt64(0) would +// return 1, because 0.000001 is rounded up to 1. +func (a int64Amount) AsScaledInt64(scale Scale) (result int64, ok bool) { + if a.scale < scale { + result, _ = negativeScaleInt64(a.value, scale-a.scale) + return result, true + } + return positiveScaleInt64(a.value, a.scale-scale) +} + +// AsDec returns an inf.Dec representation of this value. +func (a int64Amount) AsDec() *inf.Dec { + var base inf.Dec + base.SetUnscaled(a.value) + base.SetScale(inf.Scale(-a.scale)) + return &base +} + +// Cmp returns 0 if a and b are equal, 1 if a is greater than b, or -1 if a is less than b. +func (a int64Amount) Cmp(b int64Amount) int { + switch { + case a.scale == b.scale: + // compare only the unscaled portion + case a.scale > b.scale: + result, remainder, exact := divideByScaleInt64(b.value, a.scale-b.scale) + if !exact { + return a.AsDec().Cmp(b.AsDec()) + } + if result == a.value { + switch { + case remainder == 0: + return 0 + case remainder > 0: + return -1 + default: + return 1 + } + } + b.value = result + default: + result, remainder, exact := divideByScaleInt64(a.value, b.scale-a.scale) + if !exact { + return a.AsDec().Cmp(b.AsDec()) + } + if result == b.value { + switch { + case remainder == 0: + return 0 + case remainder > 0: + return 1 + default: + return -1 + } + } + a.value = result + } + + switch { + case a.value == b.value: + return 0 + case a.value < b.value: + return -1 + default: + return 1 + } +} + +// Add adds two int64Amounts together, matching scales. It will return false and not mutate +// a if overflow or underflow would result. +func (a *int64Amount) Add(b int64Amount) bool { + switch { + case b.value == 0: + return true + case a.value == 0: + a.value = b.value + a.scale = b.scale + return true + case a.scale == b.scale: + c, ok := int64Add(a.value, b.value) + if !ok { + return false + } + a.value = c + case a.scale > b.scale: + c, ok := positiveScaleInt64(a.value, a.scale-b.scale) + if !ok { + return false + } + c, ok = int64Add(c, b.value) + if !ok { + return false + } + a.scale = b.scale + a.value = c + default: + c, ok := positiveScaleInt64(b.value, b.scale-a.scale) + if !ok { + return false + } + c, ok = int64Add(a.value, c) + if !ok { + return false + } + a.value = c + } + return true +} + +// Sub removes the value of b from the current amount, or returns false if underflow would result. +func (a *int64Amount) Sub(b int64Amount) bool { + return a.Add(int64Amount{value: -b.value, scale: b.scale}) +} + +// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision +// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. +func (a int64Amount) AsScale(scale Scale) (int64Amount, bool) { + if a.scale >= scale { + return a, true + } + result, exact := negativeScaleInt64(a.value, scale-a.scale) + return int64Amount{value: result, scale: scale}, exact +} + +// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted +// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. +func (a int64Amount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + mantissa := a.value + exponent = int32(a.scale) + + amount, times := removeInt64Factors(mantissa, 10) + exponent += int32(times) + + // make sure exponent is a multiple of 3 + var ok bool + switch exponent % 3 { + case 1, -2: + amount, ok = int64MultiplyScale10(amount) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBytes(out) + } + exponent = exponent - 1 + case 2, -1: + amount, ok = int64MultiplyScale100(amount) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBytes(out) + } + exponent = exponent - 2 + } + return strconv.AppendInt(out, amount, 10), exponent +} + +// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would +// return []byte("2048"), 1. +func (a int64Amount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { + value, ok := a.AsScaledInt64(0) + if !ok { + return infDecAmount{a.AsDec()}.AsCanonicalBase1024Bytes(out) + } + amount, exponent := removeInt64Factors(value, 1024) + return strconv.AppendInt(out, amount, 10), exponent +} + +// infDecAmount implements common operations over an inf.Dec that are specific to the quantity +// representation. +type infDecAmount struct { + *inf.Dec +} + +// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision +// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6. +func (a infDecAmount) AsScale(scale Scale) (infDecAmount, bool) { + tmp := &inf.Dec{} + tmp.Round(a.Dec, scale.infScale(), inf.RoundUp) + return infDecAmount{tmp}, tmp.Cmp(a.Dec) == 0 +} + +// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted +// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3. +func (a infDecAmount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + mantissa := a.Dec.UnscaledBig() + exponent = int32(-a.Dec.Scale()) + amount := big.NewInt(0).Set(mantissa) + // move all factors of 10 into the exponent for easy reasoning + amount, times := removeBigIntFactors(amount, bigTen) + exponent += times + + // make sure exponent is a multiple of 3 + for exponent%3 != 0 { + amount.Mul(amount, bigTen) + exponent-- + } + + return append(out, amount.String()...), exponent +} + +// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns +// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would +// return []byte("2048"), 1. +func (a infDecAmount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) { + tmp := &inf.Dec{} + tmp.Round(a.Dec, 0, inf.RoundUp) + amount, exponent := removeBigIntFactors(tmp.UnscaledBig(), big1024) + return append(out, amount.String()...), exponent +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.pb.go new file mode 100644 index 0000000000..10fe6f07bb --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.pb.go @@ -0,0 +1,69 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/api/resource/generated.proto +// DO NOT EDIT! + +/* + Package resource is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/api/resource/generated.proto + + It has these top-level messages: + Quantity +*/ +package resource + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *Quantity) Reset() { *m = Quantity{} } +func (*Quantity) ProtoMessage() {} +func (*Quantity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func init() { + proto.RegisterType((*Quantity)(nil), "k8s.io.client-go.1.5.pkg.api.resource.Quantity") +} + +var fileDescriptorGenerated = []byte{ + // 222 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0xca, 0xb6, 0x28, 0xd6, + 0xcb, 0xcc, 0xd7, 0xcf, 0x2e, 0x4d, 0x4a, 0x2d, 0xca, 0x4b, 0x2d, 0x49, 0x2d, 0xd6, 0x2f, 0xc8, + 0x4e, 0xd7, 0x4f, 0x2c, 0xc8, 0xd4, 0x2f, 0x4a, 0x2d, 0xce, 0x2f, 0x2d, 0x4a, 0x4e, 0xd5, 0x4f, + 0x4f, 0xcd, 0x4b, 0x2d, 0x4a, 0x2c, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, + 0x82, 0xe8, 0xd1, 0x43, 0xe8, 0xd1, 0x03, 0xea, 0xd1, 0x03, 0xea, 0xd1, 0x83, 0xe9, 0x91, 0xd2, + 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0x4f, 0xcf, 0xd7, + 0x07, 0x6b, 0x4d, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, 0x62, 0xa4, 0x94, 0x21, 0x76, + 0x67, 0x94, 0x96, 0x64, 0xe6, 0xe8, 0x67, 0xe6, 0x95, 0x14, 0x97, 0x14, 0xa1, 0xbb, 0x42, 0xc9, + 0x82, 0x8b, 0x23, 0xb0, 0x34, 0x31, 0xaf, 0x24, 0xb3, 0xa4, 0x52, 0x48, 0x8c, 0x8b, 0x0d, 0xa8, + 0x24, 0x33, 0x2f, 0x5d, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08, 0xca, 0xb3, 0x12, 0x99, 0xb1, + 0x40, 0x9e, 0xa1, 0x63, 0xa1, 0x3c, 0xc3, 0x04, 0x20, 0x5e, 0x00, 0xc4, 0x0d, 0x77, 0x14, 0x18, + 0x9c, 0xb4, 0x4e, 0x3c, 0x94, 0x63, 0xb8, 0x00, 0xc4, 0x37, 0x80, 0xb8, 0xe1, 0x91, 0x1c, 0xe3, + 0x09, 0x20, 0xbe, 0x00, 0xc4, 0x0f, 0x80, 0x78, 0xc2, 0x63, 0x39, 0x86, 0x28, 0x0e, 0x98, 0x3f, + 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0x1c, 0x7f, 0xff, 0x20, 0x01, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.proto new file mode 100644 index 0000000000..c26921d57d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/generated.proto @@ -0,0 +1,94 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.api.resource; + +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "resource"; + +// Quantity is a fixed-point representation of a number. +// It provides convenient marshaling/unmarshaling in JSON and YAML, +// in addition to String() and Int64() accessors. +// +// The serialization format is: +// +// <quantity> ::= <signedNumber><suffix> +// (Note that <suffix> may be empty, from the "" case in <decimalSI>.) +// <digit> ::= 0 | 1 | ... | 9 +// <digits> ::= <digit> | <digit><digits> +// <number> ::= <digits> | <digits>.<digits> | <digits>. | .<digits> +// <sign> ::= "+" | "-" +// <signedNumber> ::= <number> | <sign><number> +// <suffix> ::= <binarySI> | <decimalExponent> | <decimalSI> +// <binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// <decimalSI> ::= m | "" | k | M | G | T | P | E +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// <decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber> +// +// No matter which of the three exponent forms is used, no quantity may represent +// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal +// places. Numbers larger or more precise will be capped or rounded up. +// (E.g.: 0.1m will rounded up to 1m.) +// This may be extended in the future if we require larger or smaller quantities. +// +// When a Quantity is parsed from a string, it will remember the type of suffix +// it had, and will use the same type again when it is serialized. +// +// Before serializing, Quantity will be put in "canonical form". +// This means that Exponent/suffix will be adjusted up or down (with a +// corresponding increase or decrease in Mantissa) such that: +// a. No precision is lost +// b. No fractional digits will be emitted +// c. The exponent (or suffix) is as large as possible. +// The sign will be omitted unless the number is negative. +// +// Examples: +// 1.5 will be serialized as "1500m" +// 1.5Gi will be serialized as "1536Mi" +// +// NOTE: We reserve the right to amend this canonical format, perhaps to +// allow 1.5 to be canonical. +// TODO: Remove above disclaimer after all bikeshedding about format is over, +// or after March 2015. +// +// Note that the quantity will NEVER be internally represented by a +// floating point number. That is the whole point of this exercise. +// +// Non-canonical values will still parse as long as they are well formed, +// but will be re-emitted in their canonical form. (So always use canonical +// form, or don't diff.) +// +// This format is intended to make it difficult to use these numbers without +// writing some sort of special handling code in the hopes that that will +// cause implementors to also use a fixed point implementation. +// +// +protobuf=true +// +protobuf.embed=string +// +protobuf.options.marshal=false +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +message Quantity { + optional string string = 1; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/math.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/math.go new file mode 100644 index 0000000000..887ac74c98 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/math.go @@ -0,0 +1,327 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math/big" + + inf "gopkg.in/inf.v0" +) + +const ( + // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64. + // It is also the maximum decimal digits that can be represented with an int64. + maxInt64Factors = 18 +) + +var ( + // Commonly needed big.Int values-- treat as read only! + bigTen = big.NewInt(10) + bigZero = big.NewInt(0) + bigOne = big.NewInt(1) + bigThousand = big.NewInt(1000) + big1024 = big.NewInt(1024) + + // Commonly needed inf.Dec values-- treat as read only! + decZero = inf.NewDec(0, 0) + decOne = inf.NewDec(1, 0) + decMinusOne = inf.NewDec(-1, 0) + decThousand = inf.NewDec(1000, 0) + dec1024 = inf.NewDec(1024, 0) + decMinus1024 = inf.NewDec(-1024, 0) + + // Largest (in magnitude) number allowed. + maxAllowed = infDecAmount{inf.NewDec((1<<63)-1, 0)} // == max int64 + + // The maximum value we can represent milli-units for. + // Compare with the return value of Quantity.Value() to + // see if it's safe to use Quantity.MilliValue(). + MaxMilliValue = int64(((1 << 63) - 1) / 1000) +) + +const mostNegative = -(mostPositive + 1) +const mostPositive = 1<<63 - 1 + +// int64Add returns a+b, or false if that would overflow int64. +func int64Add(a, b int64) (int64, bool) { + c := a + b + switch { + case a > 0 && b > 0: + if c < 0 { + return 0, false + } + case a < 0 && b < 0: + if c > 0 { + return 0, false + } + if a == mostNegative && b == mostNegative { + return 0, false + } + } + return c, true +} + +// int64Multiply returns a*b, or false if that would overflow or underflow int64. +func int64Multiply(a, b int64) (int64, bool) { + if a == 0 || b == 0 || a == 1 || b == 1 { + return a * b, true + } + if a == mostNegative || b == mostNegative { + return 0, false + } + c := a * b + return c, c/b == a +} + +// int64MultiplyScale returns a*b, assuming b is greater than one, or false if that would overflow or underflow int64. +// Use when b is known to be greater than one. +func int64MultiplyScale(a int64, b int64) (int64, bool) { + if a == 0 || a == 1 { + return a * b, true + } + if a == mostNegative && b != 1 { + return 0, false + } + c := a * b + return c, c/b == a +} + +// int64MultiplyScale10 multiplies a by 10, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 10) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale10(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 10, true + } + if a == mostNegative { + return 0, false + } + c := a * 10 + return c, c/10 == a +} + +// int64MultiplyScale100 multiplies a by 100, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 100) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale100(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 100, true + } + if a == mostNegative { + return 0, false + } + c := a * 100 + return c, c/100 == a +} + +// int64MultiplyScale1000 multiplies a by 1000, or returns false if that would overflow. This method is faster than +// int64Multiply(a, 1000) because the compiler can optimize constant factor multiplication. +func int64MultiplyScale1000(a int64) (int64, bool) { + if a == 0 || a == 1 { + return a * 1000, true + } + if a == mostNegative { + return 0, false + } + c := a * 1000 + return c, c/1000 == a +} + +// positiveScaleInt64 multiplies base by 10^scale, returning false if the +// value overflows. Passing a negative scale is undefined. +func positiveScaleInt64(base int64, scale Scale) (int64, bool) { + switch scale { + case 0: + return base, true + case 1: + return int64MultiplyScale10(base) + case 2: + return int64MultiplyScale100(base) + case 3: + return int64MultiplyScale1000(base) + case 6: + return int64MultiplyScale(base, 1000000) + case 9: + return int64MultiplyScale(base, 1000000000) + default: + value := base + var ok bool + for i := Scale(0); i < scale; i++ { + if value, ok = int64MultiplyScale(value, 10); !ok { + return 0, false + } + } + return value, true + } +} + +// negativeScaleInt64 reduces base by the provided scale, rounding up, until the +// value is zero or the scale is reached. Passing a negative scale is undefined. +// The value returned, if not exact, is rounded away from zero. +func negativeScaleInt64(base int64, scale Scale) (result int64, exact bool) { + if scale == 0 { + return base, true + } + + value := base + var fraction bool + for i := Scale(0); i < scale; i++ { + if !fraction && value%10 != 0 { + fraction = true + } + value = value / 10 + if value == 0 { + if fraction { + if base > 0 { + return 1, false + } + return -1, false + } + return 0, true + } + } + if fraction { + if base > 0 { + value += 1 + } else { + value += -1 + } + } + return value, !fraction +} + +func pow10Int64(b int64) int64 { + switch b { + case 0: + return 1 + case 1: + return 10 + case 2: + return 100 + case 3: + return 1000 + case 4: + return 10000 + case 5: + return 100000 + case 6: + return 1000000 + case 7: + return 10000000 + case 8: + return 100000000 + case 9: + return 1000000000 + case 10: + return 10000000000 + case 11: + return 100000000000 + case 12: + return 1000000000000 + case 13: + return 10000000000000 + case 14: + return 100000000000000 + case 15: + return 1000000000000000 + case 16: + return 10000000000000000 + case 17: + return 100000000000000000 + case 18: + return 1000000000000000000 + default: + return 0 + } +} + +// powInt64 raises a to the bth power. Is not overflow aware. +func powInt64(a, b int64) int64 { + p := int64(1) + for b > 0 { + if b&1 != 0 { + p *= a + } + b >>= 1 + a *= a + } + return p +} + +// negativeScaleInt64 returns the result of dividing base by scale * 10 and the remainder, or +// false if no such division is possible. Dividing by negative scales is undefined. +func divideByScaleInt64(base int64, scale Scale) (result, remainder int64, exact bool) { + if scale == 0 { + return base, 0, true + } + // the max scale representable in base 10 in an int64 is 18 decimal places + if scale >= 18 { + return 0, base, false + } + divisor := pow10Int64(int64(scale)) + return base / divisor, base % divisor, true +} + +// removeInt64Factors divides in a loop; the return values have the property that +// value == result * base ^ scale +func removeInt64Factors(value int64, base int64) (result int64, times int32) { + times = 0 + result = value + negative := result < 0 + if negative { + result = -result + } + switch base { + // allow the compiler to optimize the common cases + case 10: + for result >= 10 && result%10 == 0 { + times++ + result = result / 10 + } + // allow the compiler to optimize the common cases + case 1024: + for result >= 1024 && result%1024 == 0 { + times++ + result = result / 1024 + } + default: + for result >= base && result%base == 0 { + times++ + result = result / base + } + } + if negative { + result = -result + } + return result, times +} + +// removeBigIntFactors divides in a loop; the return values have the property that +// d == result * factor ^ times +// d may be modified in place. +// If d == 0, then the return values will be (0, 0) +func removeBigIntFactors(d, factor *big.Int) (result *big.Int, times int32) { + q := big.NewInt(0) + m := big.NewInt(0) + for d.Cmp(bigZero) != 0 { + q.DivMod(d, factor, m) + if m.Cmp(bigZero) != 0 { + break + } + times++ + d, q = q, d + } + return d, times +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity.go new file mode 100644 index 0000000000..df8bcd5101 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity.go @@ -0,0 +1,792 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "bytes" + "errors" + "fmt" + "math/big" + "regexp" + "strconv" + "strings" + + flag "github.com/spf13/pflag" + + "github.com/go-openapi/spec" + inf "gopkg.in/inf.v0" + "k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common" +) + +// Quantity is a fixed-point representation of a number. +// It provides convenient marshaling/unmarshaling in JSON and YAML, +// in addition to String() and Int64() accessors. +// +// The serialization format is: +// +// <quantity> ::= <signedNumber><suffix> +// (Note that <suffix> may be empty, from the "" case in <decimalSI>.) +// <digit> ::= 0 | 1 | ... | 9 +// <digits> ::= <digit> | <digit><digits> +// <number> ::= <digits> | <digits>.<digits> | <digits>. | .<digits> +// <sign> ::= "+" | "-" +// <signedNumber> ::= <number> | <sign><number> +// <suffix> ::= <binarySI> | <decimalExponent> | <decimalSI> +// <binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// <decimalSI> ::= m | "" | k | M | G | T | P | E +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// <decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber> +// +// No matter which of the three exponent forms is used, no quantity may represent +// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal +// places. Numbers larger or more precise will be capped or rounded up. +// (E.g.: 0.1m will rounded up to 1m.) +// This may be extended in the future if we require larger or smaller quantities. +// +// When a Quantity is parsed from a string, it will remember the type of suffix +// it had, and will use the same type again when it is serialized. +// +// Before serializing, Quantity will be put in "canonical form". +// This means that Exponent/suffix will be adjusted up or down (with a +// corresponding increase or decrease in Mantissa) such that: +// a. No precision is lost +// b. No fractional digits will be emitted +// c. The exponent (or suffix) is as large as possible. +// The sign will be omitted unless the number is negative. +// +// Examples: +// 1.5 will be serialized as "1500m" +// 1.5Gi will be serialized as "1536Mi" +// +// NOTE: We reserve the right to amend this canonical format, perhaps to +// allow 1.5 to be canonical. +// TODO: Remove above disclaimer after all bikeshedding about format is over, +// or after March 2015. +// +// Note that the quantity will NEVER be internally represented by a +// floating point number. That is the whole point of this exercise. +// +// Non-canonical values will still parse as long as they are well formed, +// but will be re-emitted in their canonical form. (So always use canonical +// form, or don't diff.) +// +// This format is intended to make it difficult to use these numbers without +// writing some sort of special handling code in the hopes that that will +// cause implementors to also use a fixed point implementation. +// +// +protobuf=true +// +protobuf.embed=string +// +protobuf.options.marshal=false +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +type Quantity struct { + // i is the quantity in int64 scaled form, if d.Dec == nil + i int64Amount + // d is the quantity in inf.Dec form if d.Dec != nil + d infDecAmount + // s is the generated value of this quantity to avoid recalculation + s string + + // Change Format at will. See the comment for Canonicalize for + // more details. + Format +} + +// CanonicalValue allows a quantity amount to be converted to a string. +type CanonicalValue interface { + // AsCanonicalBytes returns a byte array representing the string representation + // of the value mantissa and an int32 representing its exponent in base-10. Callers may + // pass a byte slice to the method to avoid allocations. + AsCanonicalBytes(out []byte) ([]byte, int32) + // AsCanonicalBase1024Bytes returns a byte array representing the string representation + // of the value mantissa and an int32 representing its exponent in base-1024. Callers + // may pass a byte slice to the method to avoid allocations. + AsCanonicalBase1024Bytes(out []byte) ([]byte, int32) +} + +// Format lists the three possible formattings of a quantity. +type Format string + +const ( + DecimalExponent = Format("DecimalExponent") // e.g., 12e6 + BinarySI = Format("BinarySI") // e.g., 12Mi (12 * 2^20) + DecimalSI = Format("DecimalSI") // e.g., 12M (12 * 10^6) +) + +// MustParse turns the given string into a quantity or panics; for tests +// or others cases where you know the string is valid. +func MustParse(str string) Quantity { + q, err := ParseQuantity(str) + if err != nil { + panic(fmt.Errorf("cannot parse '%v': %v", str, err)) + } + return q +} + +const ( + // splitREString is used to separate a number from its suffix; as such, + // this is overly permissive, but that's OK-- it will be checked later. + splitREString = "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" +) + +var ( + // splitRE is used to get the various parts of a number. + splitRE = regexp.MustCompile(splitREString) + + // Errors that could happen while parsing a string. + ErrFormatWrong = errors.New("quantities must match the regular expression '" + splitREString + "'") + ErrNumeric = errors.New("unable to parse numeric part of quantity") + ErrSuffix = errors.New("unable to parse quantity's suffix") +) + +// parseQuantityString is a fast scanner for quantity values. +func parseQuantityString(str string) (positive bool, value, num, denom, suffix string, err error) { + positive = true + pos := 0 + end := len(str) + + // handle leading sign + if pos < end { + switch str[0] { + case '-': + positive = false + pos++ + case '+': + pos++ + } + } + + // strip leading zeros +Zeroes: + for i := pos; ; i++ { + if i >= end { + num = "0" + value = num + return + } + switch str[i] { + case '0': + pos++ + default: + break Zeroes + } + } + + // extract the numerator +Num: + for i := pos; ; i++ { + if i >= end { + num = str[pos:end] + value = str[0:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + num = str[pos:i] + pos = i + break Num + } + } + + // if we stripped all numerator positions, always return 0 + if len(num) == 0 { + num = "0" + } + + // handle a denominator + if pos < end && str[pos] == '.' { + pos++ + Denom: + for i := pos; ; i++ { + if i >= end { + denom = str[pos:end] + value = str[0:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + denom = str[pos:i] + pos = i + break Denom + } + } + // TODO: we currently allow 1.G, but we may not want to in the future. + // if len(denom) == 0 { + // err = ErrFormatWrong + // return + // } + } + value = str[0:pos] + + // grab the elements of the suffix + suffixStart := pos + for i := pos; ; i++ { + if i >= end { + suffix = str[suffixStart:end] + return + } + if !strings.ContainsAny(str[i:i+1], "eEinumkKMGTP") { + pos = i + break + } + } + if pos < end { + switch str[pos] { + case '-', '+': + pos++ + } + } +Suffix: + for i := pos; ; i++ { + if i >= end { + suffix = str[suffixStart:end] + return + } + switch str[i] { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': + default: + break Suffix + } + } + // we encountered a non decimal in the Suffix loop, but the last character + // was not a valid exponent + err = ErrFormatWrong + return +} + +// ParseQuantity turns str into a Quantity, or returns an error. +func ParseQuantity(str string) (Quantity, error) { + if len(str) == 0 { + return Quantity{}, ErrFormatWrong + } + if str == "0" { + return Quantity{Format: DecimalSI, s: str}, nil + } + + positive, value, num, denom, suf, err := parseQuantityString(str) + if err != nil { + return Quantity{}, err + } + + base, exponent, format, ok := quantitySuffixer.interpret(suffix(suf)) + if !ok { + return Quantity{}, ErrSuffix + } + + precision := int32(0) + scale := int32(0) + mantissa := int64(1) + switch format { + case DecimalExponent, DecimalSI: + scale = exponent + precision = maxInt64Factors - int32(len(num)+len(denom)) + case BinarySI: + scale = 0 + switch { + case exponent >= 0 && len(denom) == 0: + // only handle positive binary numbers with the fast path + mantissa = int64(int64(mantissa) << uint64(exponent)) + // 1Mi (2^20) has ~6 digits of decimal precision, so exponent*3/10 -1 is roughly the precision + precision = 15 - int32(len(num)) - int32(float32(exponent)*3/10) - 1 + default: + precision = -1 + } + } + + if precision >= 0 { + // if we have a denominator, shift the entire value to the left by the number of places in the + // denominator + scale -= int32(len(denom)) + if scale >= int32(Nano) { + shifted := num + denom + + var value int64 + value, err := strconv.ParseInt(shifted, 10, 64) + if err != nil { + return Quantity{}, ErrNumeric + } + if result, ok := int64Multiply(value, int64(mantissa)); ok { + if !positive { + result = -result + } + // if the number is in canonical form, reuse the string + switch format { + case BinarySI: + if exponent%10 == 0 && (value&0x07 != 0) { + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil + } + default: + if scale%3 == 0 && !strings.HasSuffix(shifted, "000") && shifted[0] != '0' { + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil + } + } + return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format}, nil + } + } + } + + amount := new(inf.Dec) + if _, ok := amount.SetString(value); !ok { + return Quantity{}, ErrNumeric + } + + // So that no one but us has to think about suffixes, remove it. + if base == 10 { + amount.SetScale(amount.Scale() + Scale(exponent).infScale()) + } else if base == 2 { + // numericSuffix = 2 ** exponent + numericSuffix := big.NewInt(1).Lsh(bigOne, uint(exponent)) + ub := amount.UnscaledBig() + amount.SetUnscaledBig(ub.Mul(ub, numericSuffix)) + } + + // Cap at min/max bounds. + sign := amount.Sign() + if sign == -1 { + amount.Neg(amount) + } + + // This rounds non-zero values up to the minimum representable value, under the theory that + // if you want some resources, you should get some resources, even if you asked for way too small + // of an amount. Arguably, this should be inf.RoundHalfUp (normal rounding), but that would have + // the side effect of rounding values < .5n to zero. + if v, ok := amount.Unscaled(); v != int64(0) || !ok { + amount.Round(amount, Nano.infScale(), inf.RoundUp) + } + + // The max is just a simple cap. + // TODO: this prevents accumulating quantities greater than int64, for instance quota across a cluster + if format == BinarySI && amount.Cmp(maxAllowed.Dec) > 0 { + amount.Set(maxAllowed.Dec) + } + + if format == BinarySI && amount.Cmp(decOne) < 0 && amount.Cmp(decZero) > 0 { + // This avoids rounding and hopefully confusion, too. + format = DecimalSI + } + if sign == -1 { + amount.Neg(amount) + } + + return Quantity{d: infDecAmount{amount}, Format: format}, nil +} + +// DeepCopy returns a deep-copy of the Quantity value. Note that the method +// receiver is a value, so we can mutate it in-place and return it. +func (q Quantity) DeepCopy() Quantity { + if q.d.Dec != nil { + tmp := &inf.Dec{} + q.d.Dec = tmp.Set(q.d.Dec) + } + return q +} + +// OpenAPIDefinition returns openAPI definition for this type. +func (_ Quantity) OpenAPIDefinition() common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "", + }, + }, + } +} + +// CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity). +// +// Note about BinarySI: +// * If q.Format is set to BinarySI and q.Amount represents a non-zero value between +// -1 and +1, it will be emitted as if q.Format were DecimalSI. +// * Otherwise, if q.Format is set to BinarySI, frational parts of q.Amount will be +// rounded up. (1.1i becomes 2i.) +func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) { + if q.IsZero() { + return zeroBytes, nil + } + + var rounded CanonicalValue + format := q.Format + switch format { + case DecimalExponent, DecimalSI: + case BinarySI: + if q.CmpInt64(-1024) > 0 && q.CmpInt64(1024) < 0 { + // This avoids rounding and hopefully confusion, too. + format = DecimalSI + } else { + var exact bool + if rounded, exact = q.AsScale(0); !exact { + // Don't lose precision-- show as DecimalSI + format = DecimalSI + } + } + default: + format = DecimalExponent + } + + // TODO: If BinarySI formatting is requested but would cause rounding, upgrade to + // one of the other formats. + switch format { + case DecimalExponent, DecimalSI: + number, exponent := q.AsCanonicalBytes(out) + suffix, _ := quantitySuffixer.constructBytes(10, exponent, format) + return number, suffix + default: + // format must be BinarySI + number, exponent := rounded.AsCanonicalBase1024Bytes(out) + suffix, _ := quantitySuffixer.constructBytes(2, exponent*10, format) + return number, suffix + } +} + +// AsInt64 returns a representation of the current value as an int64 if a fast conversion +// is possible. If false is returned, callers must use the inf.Dec form of this quantity. +func (q *Quantity) AsInt64() (int64, bool) { + if q.d.Dec != nil { + return 0, false + } + return q.i.AsInt64() +} + +// ToDec promotes the quantity in place to use an inf.Dec representation and returns itself. +func (q *Quantity) ToDec() *Quantity { + if q.d.Dec == nil { + q.d.Dec = q.i.AsDec() + q.i = int64Amount{} + } + return q +} + +// AsDec returns the quantity as represented by a scaled inf.Dec. +func (q *Quantity) AsDec() *inf.Dec { + if q.d.Dec != nil { + return q.d.Dec + } + q.d.Dec = q.i.AsDec() + q.i = int64Amount{} + return q.d.Dec +} + +// AsCanonicalBytes returns the canonical byte representation of this quantity as a mantissa +// and base 10 exponent. The out byte slice may be passed to the method to avoid an extra +// allocation. +func (q *Quantity) AsCanonicalBytes(out []byte) (result []byte, exponent int32) { + if q.d.Dec != nil { + return q.d.AsCanonicalBytes(out) + } + return q.i.AsCanonicalBytes(out) +} + +// IsZero returns true if the quantity is equal to zero. +func (q *Quantity) IsZero() bool { + if q.d.Dec != nil { + return q.d.Dec.Sign() == 0 + } + return q.i.value == 0 +} + +// Sign returns 0 if the quantity is zero, -1 if the quantity is less than zero, or 1 if the +// quantity is greater than zero. +func (q *Quantity) Sign() int { + if q.d.Dec != nil { + return q.d.Dec.Sign() + } + return q.i.Sign() +} + +// AsScaled returns the current value, rounded up to the provided scale, and returns +// false if the scale resulted in a loss of precision. +func (q *Quantity) AsScale(scale Scale) (CanonicalValue, bool) { + if q.d.Dec != nil { + return q.d.AsScale(scale) + } + return q.i.AsScale(scale) +} + +// RoundUp updates the quantity to the provided scale, ensuring that the value is at +// least 1. False is returned if the rounding operation resulted in a loss of precision. +// Negative numbers are rounded away from zero (-9 scale 1 rounds to -10). +func (q *Quantity) RoundUp(scale Scale) bool { + if q.d.Dec != nil { + q.s = "" + d, exact := q.d.AsScale(scale) + q.d = d + return exact + } + // avoid clearing the string value if we have already calculated it + if q.i.scale >= scale { + return true + } + q.s = "" + i, exact := q.i.AsScale(scale) + q.i = i + return exact +} + +// Add adds the provide y quantity to the current value. If the current value is zero, +// the format of the quantity will be updated to the format of y. +func (q *Quantity) Add(y Quantity) { + q.s = "" + if q.d.Dec == nil && y.d.Dec == nil { + if q.i.value == 0 { + q.Format = y.Format + } + if q.i.Add(y.i) { + return + } + } else if q.IsZero() { + q.Format = y.Format + } + q.ToDec().d.Dec.Add(q.d.Dec, y.AsDec()) +} + +// Sub subtracts the provided quantity from the current value in place. If the current +// value is zero, the format of the quantity will be updated to the format of y. +func (q *Quantity) Sub(y Quantity) { + q.s = "" + if q.IsZero() { + q.Format = y.Format + } + if q.d.Dec == nil && y.d.Dec == nil && q.i.Sub(y.i) { + return + } + q.ToDec().d.Dec.Sub(q.d.Dec, y.AsDec()) +} + +// Cmp returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the +// quantity is greater than y. +func (q *Quantity) Cmp(y Quantity) int { + if q.d.Dec == nil && y.d.Dec == nil { + return q.i.Cmp(y.i) + } + return q.AsDec().Cmp(y.AsDec()) +} + +// CmpInt64 returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the +// quantity is greater than y. +func (q *Quantity) CmpInt64(y int64) int { + if q.d.Dec != nil { + return q.d.Dec.Cmp(inf.NewDec(y, inf.Scale(0))) + } + return q.i.Cmp(int64Amount{value: y}) +} + +// Neg sets quantity to be the negative value of itself. +func (q *Quantity) Neg() { + q.s = "" + if q.d.Dec == nil { + q.i.value = -q.i.value + return + } + q.d.Dec.Neg(q.d.Dec) +} + +// int64QuantityExpectedBytes is the expected width in bytes of the canonical string representation +// of most Quantity values. +const int64QuantityExpectedBytes = 18 + +// String formats the Quantity as a string, caching the result if not calculated. +// String is an expensive operation and caching this result significantly reduces the cost of +// normal parse / marshal operations on Quantity. +func (q *Quantity) String() string { + if len(q.s) == 0 { + result := make([]byte, 0, int64QuantityExpectedBytes) + number, suffix := q.CanonicalizeBytes(result) + number = append(number, suffix...) + q.s = string(number) + } + return q.s +} + +// MarshalJSON implements the json.Marshaller interface. +func (q Quantity) MarshalJSON() ([]byte, error) { + if len(q.s) > 0 { + out := make([]byte, len(q.s)+2) + out[0], out[len(out)-1] = '"', '"' + copy(out[1:], q.s) + return out, nil + } + result := make([]byte, int64QuantityExpectedBytes, int64QuantityExpectedBytes) + result[0] = '"' + number, suffix := q.CanonicalizeBytes(result[1:1]) + // if the same slice was returned to us that we passed in, avoid another allocation by copying number into + // the source slice and returning that + if len(number) > 0 && &number[0] == &result[1] && (len(number)+len(suffix)+2) <= int64QuantityExpectedBytes { + number = append(number, suffix...) + number = append(number, '"') + return result[:1+len(number)], nil + } + // if CanonicalizeBytes needed more space than our slice provided, we may need to allocate again so use + // append + result = result[:1] + result = append(result, number...) + result = append(result, suffix...) + result = append(result, '"') + return result, nil +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +// TODO: Remove support for leading/trailing whitespace +func (q *Quantity) UnmarshalJSON(value []byte) error { + l := len(value) + if l == 4 && bytes.Equal(value, []byte("null")) { + q.d.Dec = nil + q.i = int64Amount{} + return nil + } + if l >= 2 && value[0] == '"' && value[l-1] == '"' { + value = value[1 : l-1] + } + + parsed, err := ParseQuantity(strings.TrimSpace(string(value))) + if err != nil { + return err + } + + // This copy is safe because parsed will not be referred to again. + *q = parsed + return nil +} + +// NewQuantity returns a new Quantity representing the given +// value in the given format. +func NewQuantity(value int64, format Format) *Quantity { + return &Quantity{ + i: int64Amount{value: value}, + Format: format, + } +} + +// NewMilliQuantity returns a new Quantity representing the given +// value * 1/1000 in the given format. Note that BinarySI formatting +// will round fractional values, and will be changed to DecimalSI for +// values x where (-1 < x < 1) && (x != 0). +func NewMilliQuantity(value int64, format Format) *Quantity { + return &Quantity{ + i: int64Amount{value: value, scale: -3}, + Format: format, + } +} + +// NewScaledQuantity returns a new Quantity representing the given +// value * 10^scale in DecimalSI format. +func NewScaledQuantity(value int64, scale Scale) *Quantity { + return &Quantity{ + i: int64Amount{value: value, scale: scale}, + Format: DecimalSI, + } +} + +// Value returns the value of q; any fractional part will be lost. +func (q *Quantity) Value() int64 { + return q.ScaledValue(0) +} + +// MilliValue returns the value of ceil(q * 1000); this could overflow an int64; +// if that's a concern, call Value() first to verify the number is small enough. +func (q *Quantity) MilliValue() int64 { + return q.ScaledValue(Milli) +} + +// ScaledValue returns the value of ceil(q * 10^scale); this could overflow an int64. +// To detect overflow, call Value() first and verify the expected magnitude. +func (q *Quantity) ScaledValue(scale Scale) int64 { + if q.d.Dec == nil { + i, _ := q.i.AsScaledInt64(scale) + return i + } + dec := q.d.Dec + return scaledValue(dec.UnscaledBig(), int(dec.Scale()), int(scale.infScale())) +} + +// Set sets q's value to be value. +func (q *Quantity) Set(value int64) { + q.SetScaled(value, 0) +} + +// SetMilli sets q's value to be value * 1/1000. +func (q *Quantity) SetMilli(value int64) { + q.SetScaled(value, Milli) +} + +// SetScaled sets q's value to be value * 10^scale +func (q *Quantity) SetScaled(value int64, scale Scale) { + q.s = "" + q.d.Dec = nil + q.i = int64Amount{value: value, scale: scale} +} + +// Copy is a convenience function that makes a deep copy for you. Non-deep +// copies of quantities share pointers and you will regret that. +func (q *Quantity) Copy() *Quantity { + if q.d.Dec == nil { + return &Quantity{ + s: q.s, + i: q.i, + Format: q.Format, + } + } + tmp := &inf.Dec{} + return &Quantity{ + s: q.s, + d: infDecAmount{tmp.Set(q.d.Dec)}, + Format: q.Format, + } +} + +// qFlag is a helper type for the Flag function +type qFlag struct { + dest *Quantity +} + +// Sets the value of the internal Quantity. (used by flag & pflag) +func (qf qFlag) Set(val string) error { + q, err := ParseQuantity(val) + if err != nil { + return err + } + // This copy is OK because q will not be referenced again. + *qf.dest = q + return nil +} + +// Converts the value of the internal Quantity to a string. (used by flag & pflag) +func (qf qFlag) String() string { + return qf.dest.String() +} + +// States the type of flag this is (Quantity). (used by pflag) +func (qf qFlag) Type() string { + return "quantity" +} + +// QuantityFlag is a helper that makes a quantity flag (using standard flag package). +// Will panic if defaultValue is not a valid quantity. +func QuantityFlag(flagName, defaultValue, description string) *Quantity { + q := MustParse(defaultValue) + flag.Var(NewQuantityFlagValue(&q), flagName, description) + return &q +} + +// NewQuantityFlagValue returns an object that can be used to back a flag, +// pointing at the given Quantity variable. +func NewQuantityFlagValue(q *Quantity) flag.Value { + return qFlag{q} +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity_proto.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity_proto.go new file mode 100644 index 0000000000..74dfb4e4b7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/quantity_proto.go @@ -0,0 +1,284 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "fmt" + "io" + + "github.com/gogo/protobuf/proto" +) + +var _ proto.Sizer = &Quantity{} + +func (m *Quantity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +// MarshalTo is a customized version of the generated Protobuf unmarshaler for a struct +// with a single string field. +func (m *Quantity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + + data[i] = 0xa + i++ + // BEGIN CUSTOM MARSHAL + out := m.String() + i = encodeVarintGenerated(data, i, uint64(len(out))) + i += copy(data[i:], out) + // END CUSTOM MARSHAL + + return i, nil +} + +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} + +func (m *Quantity) Size() (n int) { + var l int + _ = l + + // BEGIN CUSTOM SIZE + l = len(m.String()) + // END CUSTOM SIZE + + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} + +// Unmarshal is a customized version of the generated Protobuf unmarshaler for a struct +// with a single string field. +func (m *Quantity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Quantity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Quantity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field String_", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(data[iNdEx:postIndex]) + + // BEGIN CUSTOM DECODE + p, err := ParseQuantity(s) + if err != nil { + return err + } + *m = p + // END CUSTOM DECODE + + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} + +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/scale_int.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/scale_int.go new file mode 100644 index 0000000000..55e177b0e9 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/scale_int.go @@ -0,0 +1,95 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "math" + "math/big" + "sync" +) + +var ( + // A sync pool to reduce allocation. + intPool sync.Pool + maxInt64 = big.NewInt(math.MaxInt64) +) + +func init() { + intPool.New = func() interface{} { + return &big.Int{} + } +} + +// scaledValue scales given unscaled value from scale to new Scale and returns +// an int64. It ALWAYS rounds up the result when scale down. The final result might +// overflow. +// +// scale, newScale represents the scale of the unscaled decimal. +// The mathematical value of the decimal is unscaled * 10**(-scale). +func scaledValue(unscaled *big.Int, scale, newScale int) int64 { + dif := scale - newScale + if dif == 0 { + return unscaled.Int64() + } + + // Handle scale up + // This is an easy case, we do not need to care about rounding and overflow. + // If any intermediate operation causes overflow, the result will overflow. + if dif < 0 { + return unscaled.Int64() * int64(math.Pow10(-dif)) + } + + // Handle scale down + // We have to be careful about the intermediate operations. + + // fast path when unscaled < max.Int64 and exp(10,dif) < max.Int64 + const log10MaxInt64 = 19 + if unscaled.Cmp(maxInt64) < 0 && dif < log10MaxInt64 { + divide := int64(math.Pow10(dif)) + result := unscaled.Int64() / divide + mod := unscaled.Int64() % divide + if mod != 0 { + return result + 1 + } + return result + } + + // We should only convert back to int64 when getting the result. + divisor := intPool.Get().(*big.Int) + exp := intPool.Get().(*big.Int) + result := intPool.Get().(*big.Int) + defer func() { + intPool.Put(divisor) + intPool.Put(exp) + intPool.Put(result) + }() + + // divisor = 10^(dif) + // TODO: create loop up table if exp costs too much. + divisor.Exp(bigTen, exp.SetInt64(int64(dif)), nil) + // reuse exp + remainder := exp + + // result = unscaled / divisor + // remainder = unscaled % divisor + result.DivMod(unscaled, divisor, remainder) + if remainder.Sign() != 0 { + return result.Int64() + 1 + } + + return result.Int64() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource/suffix.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource/suffix.go new file mode 100644 index 0000000000..5ed7abe665 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource/suffix.go @@ -0,0 +1,198 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package resource + +import ( + "strconv" +) + +type suffix string + +// suffixer can interpret and construct suffixes. +type suffixer interface { + interpret(suffix) (base, exponent int32, fmt Format, ok bool) + construct(base, exponent int32, fmt Format) (s suffix, ok bool) + constructBytes(base, exponent int32, fmt Format) (s []byte, ok bool) +} + +// quantitySuffixer handles suffixes for all three formats that quantity +// can handle. +var quantitySuffixer = newSuffixer() + +type bePair struct { + base, exponent int32 +} + +type listSuffixer struct { + suffixToBE map[suffix]bePair + beToSuffix map[bePair]suffix + beToSuffixBytes map[bePair][]byte +} + +func (ls *listSuffixer) addSuffix(s suffix, pair bePair) { + if ls.suffixToBE == nil { + ls.suffixToBE = map[suffix]bePair{} + } + if ls.beToSuffix == nil { + ls.beToSuffix = map[bePair]suffix{} + } + if ls.beToSuffixBytes == nil { + ls.beToSuffixBytes = map[bePair][]byte{} + } + ls.suffixToBE[s] = pair + ls.beToSuffix[pair] = s + ls.beToSuffixBytes[pair] = []byte(s) +} + +func (ls *listSuffixer) lookup(s suffix) (base, exponent int32, ok bool) { + pair, ok := ls.suffixToBE[s] + if !ok { + return 0, 0, false + } + return pair.base, pair.exponent, true +} + +func (ls *listSuffixer) construct(base, exponent int32) (s suffix, ok bool) { + s, ok = ls.beToSuffix[bePair{base, exponent}] + return +} + +func (ls *listSuffixer) constructBytes(base, exponent int32) (s []byte, ok bool) { + s, ok = ls.beToSuffixBytes[bePair{base, exponent}] + return +} + +type suffixHandler struct { + decSuffixes listSuffixer + binSuffixes listSuffixer +} + +type fastLookup struct { + *suffixHandler +} + +func (l fastLookup) interpret(s suffix) (base, exponent int32, format Format, ok bool) { + switch s { + case "": + return 10, 0, DecimalSI, true + case "n": + return 10, -9, DecimalSI, true + case "u": + return 10, -6, DecimalSI, true + case "m": + return 10, -3, DecimalSI, true + case "k": + return 10, 3, DecimalSI, true + case "M": + return 10, 6, DecimalSI, true + case "G": + return 10, 9, DecimalSI, true + } + return l.suffixHandler.interpret(s) +} + +func newSuffixer() suffixer { + sh := &suffixHandler{} + + // IMPORTANT: if you change this section you must change fastLookup + + sh.binSuffixes.addSuffix("Ki", bePair{2, 10}) + sh.binSuffixes.addSuffix("Mi", bePair{2, 20}) + sh.binSuffixes.addSuffix("Gi", bePair{2, 30}) + sh.binSuffixes.addSuffix("Ti", bePair{2, 40}) + sh.binSuffixes.addSuffix("Pi", bePair{2, 50}) + sh.binSuffixes.addSuffix("Ei", bePair{2, 60}) + // Don't emit an error when trying to produce + // a suffix for 2^0. + sh.decSuffixes.addSuffix("", bePair{2, 0}) + + sh.decSuffixes.addSuffix("n", bePair{10, -9}) + sh.decSuffixes.addSuffix("u", bePair{10, -6}) + sh.decSuffixes.addSuffix("m", bePair{10, -3}) + sh.decSuffixes.addSuffix("", bePair{10, 0}) + sh.decSuffixes.addSuffix("k", bePair{10, 3}) + sh.decSuffixes.addSuffix("M", bePair{10, 6}) + sh.decSuffixes.addSuffix("G", bePair{10, 9}) + sh.decSuffixes.addSuffix("T", bePair{10, 12}) + sh.decSuffixes.addSuffix("P", bePair{10, 15}) + sh.decSuffixes.addSuffix("E", bePair{10, 18}) + + return fastLookup{sh} +} + +func (sh *suffixHandler) construct(base, exponent int32, fmt Format) (s suffix, ok bool) { + switch fmt { + case DecimalSI: + return sh.decSuffixes.construct(base, exponent) + case BinarySI: + return sh.binSuffixes.construct(base, exponent) + case DecimalExponent: + if base != 10 { + return "", false + } + if exponent == 0 { + return "", true + } + return suffix("e" + strconv.FormatInt(int64(exponent), 10)), true + } + return "", false +} + +func (sh *suffixHandler) constructBytes(base, exponent int32, format Format) (s []byte, ok bool) { + switch format { + case DecimalSI: + return sh.decSuffixes.constructBytes(base, exponent) + case BinarySI: + return sh.binSuffixes.constructBytes(base, exponent) + case DecimalExponent: + if base != 10 { + return nil, false + } + if exponent == 0 { + return nil, true + } + result := make([]byte, 8, 8) + result[0] = 'e' + number := strconv.AppendInt(result[1:1], int64(exponent), 10) + if &result[1] == &number[0] { + return result[:1+len(number)], true + } + result = append(result[:1], number...) + return result, true + } + return nil, false +} + +func (sh *suffixHandler) interpret(suffix suffix) (base, exponent int32, fmt Format, ok bool) { + // Try lookup tables first + if b, e, ok := sh.decSuffixes.lookup(suffix); ok { + return b, e, DecimalSI, true + } + if b, e, ok := sh.binSuffixes.lookup(suffix); ok { + return b, e, BinarySI, true + } + + if len(suffix) > 1 && (suffix[0] == 'E' || suffix[0] == 'e') { + parsed, err := strconv.ParseInt(string(suffix[1:]), 10, 64) + if err != nil { + return 0, 0, DecimalExponent, false + } + return 10, int32(parsed), DecimalExponent, true + } + + return 0, 0, DecimalExponent, false +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/resource_helpers.go b/vendor/k8s.io/client-go/1.5/pkg/api/resource_helpers.go new file mode 100644 index 0000000000..37b77c8c37 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/resource_helpers.go @@ -0,0 +1,209 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// Returns string version of ResourceName. +func (self ResourceName) String() string { + return string(self) +} + +// Returns the CPU limit if specified. +func (self *ResourceList) Cpu() *resource.Quantity { + if val, ok := (*self)[ResourceCPU]; ok { + return &val + } + return &resource.Quantity{Format: resource.DecimalSI} +} + +// Returns the Memory limit if specified. +func (self *ResourceList) Memory() *resource.Quantity { + if val, ok := (*self)[ResourceMemory]; ok { + return &val + } + return &resource.Quantity{Format: resource.BinarySI} +} + +func (self *ResourceList) Pods() *resource.Quantity { + if val, ok := (*self)[ResourcePods]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) NvidiaGPU() *resource.Quantity { + if val, ok := (*self)[ResourceNvidiaGPU]; ok { + return &val + } + return &resource.Quantity{} +} + +func GetContainerStatus(statuses []ContainerStatus, name string) (ContainerStatus, bool) { + for i := range statuses { + if statuses[i].Name == name { + return statuses[i], true + } + } + return ContainerStatus{}, false +} + +func GetExistingContainerStatus(statuses []ContainerStatus, name string) ContainerStatus { + for i := range statuses { + if statuses[i].Name == name { + return statuses[i] + } + } + return ContainerStatus{} +} + +// IsPodReady returns true if a pod is ready; false otherwise. +func IsPodReady(pod *Pod) bool { + return IsPodReadyConditionTrue(pod.Status) +} + +// IsPodReady retruns true if a pod is ready; false otherwise. +func IsPodReadyConditionTrue(status PodStatus) bool { + condition := GetPodReadyCondition(status) + return condition != nil && condition.Status == ConditionTrue +} + +// Extracts the pod ready condition from the given status and returns that. +// Returns nil if the condition is not present. +func GetPodReadyCondition(status PodStatus) *PodCondition { + _, condition := GetPodCondition(&status, PodReady) + return condition +} + +// GetPodCondition extracts the provided condition from the given status and returns that. +// Returns nil and -1 if the condition is not present, and the index of the located condition. +func GetPodCondition(status *PodStatus, conditionType PodConditionType) (int, *PodCondition) { + if status == nil { + return -1, nil + } + for i := range status.Conditions { + if status.Conditions[i].Type == conditionType { + return i, &status.Conditions[i] + } + } + return -1, nil +} + +// GetNodeCondition extracts the provided condition from the given status and returns that. +// Returns nil and -1 if the condition is not present, and the index of the located condition. +func GetNodeCondition(status *NodeStatus, conditionType NodeConditionType) (int, *NodeCondition) { + if status == nil { + return -1, nil + } + for i := range status.Conditions { + if status.Conditions[i].Type == conditionType { + return i, &status.Conditions[i] + } + } + return -1, nil +} + +// Updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the +// status has changed. +// Returns true if pod condition has changed or has been added. +func UpdatePodCondition(status *PodStatus, condition *PodCondition) bool { + condition.LastTransitionTime = unversioned.Now() + // Try to find this pod condition. + conditionIndex, oldCondition := GetPodCondition(status, condition.Type) + + if oldCondition == nil { + // We are adding new pod condition. + status.Conditions = append(status.Conditions, *condition) + return true + } else { + // We are updating an existing condition, so we need to check if it has changed. + if condition.Status == oldCondition.Status { + condition.LastTransitionTime = oldCondition.LastTransitionTime + } + + isEqual := condition.Status == oldCondition.Status && + condition.Reason == oldCondition.Reason && + condition.Message == oldCondition.Message && + condition.LastProbeTime.Equal(oldCondition.LastProbeTime) && + condition.LastTransitionTime.Equal(oldCondition.LastTransitionTime) + + status.Conditions[conditionIndex] = *condition + // Return true if one of the fields have changed. + return !isEqual + } +} + +// IsNodeReady returns true if a node is ready; false otherwise. +func IsNodeReady(node *Node) bool { + for _, c := range node.Status.Conditions { + if c.Type == NodeReady { + return c.Status == ConditionTrue + } + } + return false +} + +// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all +// containers of the pod. +func PodRequestsAndLimits(pod *Pod) (reqs map[ResourceName]resource.Quantity, limits map[ResourceName]resource.Quantity, err error) { + reqs, limits = map[ResourceName]resource.Quantity{}, map[ResourceName]resource.Quantity{} + for _, container := range pod.Spec.Containers { + for name, quantity := range container.Resources.Requests { + if value, ok := reqs[name]; !ok { + reqs[name] = *quantity.Copy() + } else { + value.Add(quantity) + reqs[name] = value + } + } + for name, quantity := range container.Resources.Limits { + if value, ok := limits[name]; !ok { + limits[name] = *quantity.Copy() + } else { + value.Add(quantity) + limits[name] = value + } + } + } + // init containers define the minimum of any resource + for _, container := range pod.Spec.InitContainers { + for name, quantity := range container.Resources.Requests { + value, ok := reqs[name] + if !ok { + reqs[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + reqs[name] = *quantity.Copy() + } + } + for name, quantity := range container.Resources.Limits { + value, ok := limits[name] + if !ok { + limits[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + limits[name] = *quantity.Copy() + } + } + } + return +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/api/types.generated.go new file mode 100644 index 0000000000..bb4c8e5731 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/types.generated.go @@ -0,0 +1,62430 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package api + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg2_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg6_fields "k8s.io/client-go/1.5/pkg/fields" + pkg5_labels "k8s.io/client-go/1.5/pkg/labels" + pkg7_runtime "k8s.io/client-go/1.5/pkg/runtime" + pkg1_types "k8s.io/client-go/1.5/pkg/types" + pkg4_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_resource.Quantity + var v1 pkg2_unversioned.Time + var v2 pkg6_fields.Selector + var v3 pkg5_labels.Selector + var v4 pkg7_runtime.Object + var v5 pkg1_types.UID + var v6 pkg4_intstr.IntOrString + var v7 time.Time + _, _, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6, v7 + } +} + +func (x *ObjectMeta) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [15]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.GenerateName != "" + yyq2[2] = x.Namespace != "" + yyq2[3] = x.SelfLink != "" + yyq2[4] = x.UID != "" + yyq2[5] = x.ResourceVersion != "" + yyq2[6] = x.Generation != 0 + yyq2[7] = true + yyq2[8] = x.DeletionTimestamp != nil + yyq2[9] = x.DeletionGracePeriodSeconds != nil + yyq2[10] = len(x.Labels) != 0 + yyq2[11] = len(x.Annotations) != 0 + yyq2[12] = len(x.OwnerReferences) != 0 + yyq2[13] = len(x.Finalizers) != 0 + yyq2[14] = x.ClusterName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(15) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yy25 := &x.CreationTimestamp + yym26 := z.EncBinary() + _ = yym26 + if false { + } else if z.HasExtensions() && z.EncExt(yy25) { + } else if yym26 { + z.EncBinaryMarshal(yy25) + } else if !yym26 && z.IsJSONHandle() { + z.EncJSONMarshal(yy25) + } else { + z.EncFallback(yy25) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy27 := &x.CreationTimestamp + yym28 := z.EncBinary() + _ = yym28 + if false { + } else if z.HasExtensions() && z.EncExt(yy27) { + } else if yym28 { + z.EncBinaryMarshal(yy27) + } else if !yym28 && z.IsJSONHandle() { + z.EncJSONMarshal(yy27) + } else { + z.EncFallback(yy27) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym30 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym30 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym31 := z.EncBinary() + _ = yym31 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym31 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym31 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy33 := *x.DeletionGracePeriodSeconds + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(yy33)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy35 := *x.DeletionGracePeriodSeconds + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(yy35)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + h.encSliceOwnerReference(([]OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + h.encSliceOwnerReference(([]OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMeta) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym52 := z.DecBinary() + _ = yym52 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct53 := r.ContainerType() + if yyct53 == codecSelferValueTypeMap1234 { + yyl53 := r.ReadMapStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl53, d) + } + } else if yyct53 == codecSelferValueTypeArray1234 { + yyl53 := r.ReadArrayStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl53, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMeta) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys54Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys54Slc + var yyhl54 bool = l >= 0 + for yyj54 := 0; ; yyj54++ { + if yyhl54 { + if yyj54 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys54Slc = r.DecodeBytes(yys54Slc, true, true) + yys54 := string(yys54Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys54 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_unversioned.Time{} + } else { + yyv62 := &x.CreationTimestamp + yym63 := z.DecBinary() + _ = yym63 + if false { + } else if z.HasExtensions() && z.DecExt(yyv62) { + } else if yym63 { + z.DecBinaryUnmarshal(yyv62) + } else if !yym63 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv62) + } else { + z.DecFallback(yyv62, false) + } + } + case "deletionTimestamp": + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_unversioned.Time) + } + yym65 := z.DecBinary() + _ = yym65 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym65 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym65 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym67 := z.DecBinary() + _ = yym67 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv68 := &x.Labels + yym69 := z.DecBinary() + _ = yym69 + if false { + } else { + z.F.DecMapStringStringX(yyv68, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv70 := &x.Annotations + yym71 := z.DecBinary() + _ = yym71 + if false { + } else { + z.F.DecMapStringStringX(yyv70, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv72 := &x.OwnerReferences + yym73 := z.DecBinary() + _ = yym73 + if false { + } else { + h.decSliceOwnerReference((*[]OwnerReference)(yyv72), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv74 := &x.Finalizers + yym75 := z.DecBinary() + _ = yym75 + if false { + } else { + z.F.DecSliceStringX(yyv74, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys54) + } // end switch yys54 + } // end for yyj54 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMeta) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj77 int + var yyb77 bool + var yyhl77 bool = l >= 0 + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_unversioned.Time{} + } else { + yyv85 := &x.CreationTimestamp + yym86 := z.DecBinary() + _ = yym86 + if false { + } else if z.HasExtensions() && z.DecExt(yyv85) { + } else if yym86 { + z.DecBinaryUnmarshal(yyv85) + } else if !yym86 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv85) + } else { + z.DecFallback(yyv85, false) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_unversioned.Time) + } + yym88 := z.DecBinary() + _ = yym88 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym88 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym88 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym90 := z.DecBinary() + _ = yym90 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv91 := &x.Labels + yym92 := z.DecBinary() + _ = yym92 + if false { + } else { + z.F.DecMapStringStringX(yyv91, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv93 := &x.Annotations + yym94 := z.DecBinary() + _ = yym94 + if false { + } else { + z.F.DecMapStringStringX(yyv93, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv95 := &x.OwnerReferences + yym96 := z.DecBinary() + _ = yym96 + if false { + } else { + h.decSliceOwnerReference((*[]OwnerReference)(yyv95), d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv97 := &x.Finalizers + yym98 := z.DecBinary() + _ = yym98 + if false { + } else { + z.F.DecSliceStringX(yyv97, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + for { + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj77-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Volume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym100 := z.EncBinary() + _ = yym100 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep101 := !z.EncBinary() + yy2arr101 := z.EncBasicHandle().StructToArray + var yyq101 [23]bool + _, _, _ = yysep101, yyq101, yy2arr101 + const yyr101 bool = false + yyq101[1] = x.VolumeSource.HostPath != nil && x.HostPath != nil + yyq101[2] = x.VolumeSource.EmptyDir != nil && x.EmptyDir != nil + yyq101[3] = x.VolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq101[4] = x.VolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq101[5] = x.VolumeSource.GitRepo != nil && x.GitRepo != nil + yyq101[6] = x.VolumeSource.Secret != nil && x.Secret != nil + yyq101[7] = x.VolumeSource.NFS != nil && x.NFS != nil + yyq101[8] = x.VolumeSource.ISCSI != nil && x.ISCSI != nil + yyq101[9] = x.VolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq101[10] = x.VolumeSource.PersistentVolumeClaim != nil && x.PersistentVolumeClaim != nil + yyq101[11] = x.VolumeSource.RBD != nil && x.RBD != nil + yyq101[12] = x.VolumeSource.Quobyte != nil && x.Quobyte != nil + yyq101[13] = x.VolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq101[14] = x.VolumeSource.Cinder != nil && x.Cinder != nil + yyq101[15] = x.VolumeSource.CephFS != nil && x.CephFS != nil + yyq101[16] = x.VolumeSource.Flocker != nil && x.Flocker != nil + yyq101[17] = x.VolumeSource.DownwardAPI != nil && x.DownwardAPI != nil + yyq101[18] = x.VolumeSource.FC != nil && x.FC != nil + yyq101[19] = x.VolumeSource.AzureFile != nil && x.AzureFile != nil + yyq101[20] = x.VolumeSource.ConfigMap != nil && x.ConfigMap != nil + yyq101[21] = x.VolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq101[22] = x.VolumeSource.AzureDisk != nil && x.AzureDisk != nil + var yynn101 int + if yyr101 || yy2arr101 { + r.EncodeArrayStart(23) + } else { + yynn101 = 1 + for _, b := range yyq101 { + if b { + yynn101++ + } + } + r.EncodeMapStart(yynn101) + yynn101 = 0 + } + if yyr101 || yy2arr101 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym103 := z.EncBinary() + _ = yym103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + var yyn105 bool + if x.VolumeSource.HostPath == nil { + yyn105 = true + goto LABEL105 + } + LABEL105: + if yyr101 || yy2arr101 { + if yyn105 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[1] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn105 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn106 bool + if x.VolumeSource.EmptyDir == nil { + yyn106 = true + goto LABEL106 + } + LABEL106: + if yyr101 || yy2arr101 { + if yyn106 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[2] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn106 { + r.EncodeNil() + } else { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + } + var yyn107 bool + if x.VolumeSource.GCEPersistentDisk == nil { + yyn107 = true + goto LABEL107 + } + LABEL107: + if yyr101 || yy2arr101 { + if yyn107 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[3] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn107 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn108 bool + if x.VolumeSource.AWSElasticBlockStore == nil { + yyn108 = true + goto LABEL108 + } + LABEL108: + if yyr101 || yy2arr101 { + if yyn108 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[4] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn108 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn109 bool + if x.VolumeSource.GitRepo == nil { + yyn109 = true + goto LABEL109 + } + LABEL109: + if yyr101 || yy2arr101 { + if yyn109 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[5] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn109 { + r.EncodeNil() + } else { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + } + var yyn110 bool + if x.VolumeSource.Secret == nil { + yyn110 = true + goto LABEL110 + } + LABEL110: + if yyr101 || yy2arr101 { + if yyn110 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[6] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn110 { + r.EncodeNil() + } else { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + } + var yyn111 bool + if x.VolumeSource.NFS == nil { + yyn111 = true + goto LABEL111 + } + LABEL111: + if yyr101 || yy2arr101 { + if yyn111 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[7] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn111 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn112 bool + if x.VolumeSource.ISCSI == nil { + yyn112 = true + goto LABEL112 + } + LABEL112: + if yyr101 || yy2arr101 { + if yyn112 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[8] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn112 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn113 bool + if x.VolumeSource.Glusterfs == nil { + yyn113 = true + goto LABEL113 + } + LABEL113: + if yyr101 || yy2arr101 { + if yyn113 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[9] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn113 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn114 bool + if x.VolumeSource.PersistentVolumeClaim == nil { + yyn114 = true + goto LABEL114 + } + LABEL114: + if yyr101 || yy2arr101 { + if yyn114 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[10] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn114 { + r.EncodeNil() + } else { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + } + var yyn115 bool + if x.VolumeSource.RBD == nil { + yyn115 = true + goto LABEL115 + } + LABEL115: + if yyr101 || yy2arr101 { + if yyn115 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[11] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn115 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn116 bool + if x.VolumeSource.Quobyte == nil { + yyn116 = true + goto LABEL116 + } + LABEL116: + if yyr101 || yy2arr101 { + if yyn116 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[12] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn116 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn117 bool + if x.VolumeSource.FlexVolume == nil { + yyn117 = true + goto LABEL117 + } + LABEL117: + if yyr101 || yy2arr101 { + if yyn117 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[13] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn117 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn118 bool + if x.VolumeSource.Cinder == nil { + yyn118 = true + goto LABEL118 + } + LABEL118: + if yyr101 || yy2arr101 { + if yyn118 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[14] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn118 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn119 bool + if x.VolumeSource.CephFS == nil { + yyn119 = true + goto LABEL119 + } + LABEL119: + if yyr101 || yy2arr101 { + if yyn119 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[15] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn119 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn120 bool + if x.VolumeSource.Flocker == nil { + yyn120 = true + goto LABEL120 + } + LABEL120: + if yyr101 || yy2arr101 { + if yyn120 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[16] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn120 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn121 bool + if x.VolumeSource.DownwardAPI == nil { + yyn121 = true + goto LABEL121 + } + LABEL121: + if yyr101 || yy2arr101 { + if yyn121 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[17] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn121 { + r.EncodeNil() + } else { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + } + var yyn122 bool + if x.VolumeSource.FC == nil { + yyn122 = true + goto LABEL122 + } + LABEL122: + if yyr101 || yy2arr101 { + if yyn122 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[18] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn122 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn123 bool + if x.VolumeSource.AzureFile == nil { + yyn123 = true + goto LABEL123 + } + LABEL123: + if yyr101 || yy2arr101 { + if yyn123 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[19] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn123 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn124 bool + if x.VolumeSource.ConfigMap == nil { + yyn124 = true + goto LABEL124 + } + LABEL124: + if yyr101 || yy2arr101 { + if yyn124 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[20] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn124 { + r.EncodeNil() + } else { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + } + var yyn125 bool + if x.VolumeSource.VsphereVolume == nil { + yyn125 = true + goto LABEL125 + } + LABEL125: + if yyr101 || yy2arr101 { + if yyn125 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[21] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn125 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn126 bool + if x.VolumeSource.AzureDisk == nil { + yyn126 = true + goto LABEL126 + } + LABEL126: + if yyr101 || yy2arr101 { + if yyn126 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[22] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn126 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + if yyr101 || yy2arr101 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Volume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym127 := z.DecBinary() + _ = yym127 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct128 := r.ContainerType() + if yyct128 == codecSelferValueTypeMap1234 { + yyl128 := r.ReadMapStart() + if yyl128 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl128, d) + } + } else if yyct128 == codecSelferValueTypeArray1234 { + yyl128 := r.ReadArrayStart() + if yyl128 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl128, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Volume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys129Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys129Slc + var yyhl129 bool = l >= 0 + for yyj129 := 0; ; yyj129++ { + if yyhl129 { + if yyj129 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys129Slc = r.DecodeBytes(yys129Slc, true, true) + yys129 := string(yys129Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys129 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "hostPath": + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "quobyte": + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "flexVolume": + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "azureDisk": + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys129) + } // end switch yys129 + } // end for yyj129 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Volume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj153 int + var yyb153 bool + var yyhl153 bool = l >= 0 + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj153-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym177 := z.EncBinary() + _ = yym177 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep178 := !z.EncBinary() + yy2arr178 := z.EncBasicHandle().StructToArray + var yyq178 [22]bool + _, _, _ = yysep178, yyq178, yy2arr178 + const yyr178 bool = false + yyq178[0] = x.HostPath != nil + yyq178[1] = x.EmptyDir != nil + yyq178[2] = x.GCEPersistentDisk != nil + yyq178[3] = x.AWSElasticBlockStore != nil + yyq178[4] = x.GitRepo != nil + yyq178[5] = x.Secret != nil + yyq178[6] = x.NFS != nil + yyq178[7] = x.ISCSI != nil + yyq178[8] = x.Glusterfs != nil + yyq178[9] = x.PersistentVolumeClaim != nil + yyq178[10] = x.RBD != nil + yyq178[11] = x.Quobyte != nil + yyq178[12] = x.FlexVolume != nil + yyq178[13] = x.Cinder != nil + yyq178[14] = x.CephFS != nil + yyq178[15] = x.Flocker != nil + yyq178[16] = x.DownwardAPI != nil + yyq178[17] = x.FC != nil + yyq178[18] = x.AzureFile != nil + yyq178[19] = x.ConfigMap != nil + yyq178[20] = x.VsphereVolume != nil + yyq178[21] = x.AzureDisk != nil + var yynn178 int + if yyr178 || yy2arr178 { + r.EncodeArrayStart(22) + } else { + yynn178 = 0 + for _, b := range yyq178 { + if b { + yynn178++ + } + } + r.EncodeMapStart(yynn178) + yynn178 = 0 + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[0] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[1] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[2] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[3] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[4] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[5] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[6] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[8] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[9] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[10] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[11] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[12] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[13] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[14] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[15] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[16] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[17] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[18] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[19] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[20] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[21] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym201 := z.DecBinary() + _ = yym201 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct202 := r.ContainerType() + if yyct202 == codecSelferValueTypeMap1234 { + yyl202 := r.ReadMapStart() + if yyl202 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl202, d) + } + } else if yyct202 == codecSelferValueTypeArray1234 { + yyl202 := r.ReadArrayStart() + if yyl202 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl202, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys203Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys203Slc + var yyhl203 bool = l >= 0 + for yyj203 := 0; ; yyj203++ { + if yyhl203 { + if yyj203 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys203Slc = r.DecodeBytes(yys203Slc, true, true) + yys203 := string(yys203Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys203 { + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys203) + } // end switch yys203 + } // end for yyj203 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj226 int + var yyb226 bool + var yyhl226 bool = l >= 0 + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj226-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym249 := z.EncBinary() + _ = yym249 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep250 := !z.EncBinary() + yy2arr250 := z.EncBasicHandle().StructToArray + var yyq250 [16]bool + _, _, _ = yysep250, yyq250, yy2arr250 + const yyr250 bool = false + yyq250[0] = x.GCEPersistentDisk != nil + yyq250[1] = x.AWSElasticBlockStore != nil + yyq250[2] = x.HostPath != nil + yyq250[3] = x.Glusterfs != nil + yyq250[4] = x.NFS != nil + yyq250[5] = x.RBD != nil + yyq250[6] = x.Quobyte != nil + yyq250[7] = x.ISCSI != nil + yyq250[8] = x.FlexVolume != nil + yyq250[9] = x.Cinder != nil + yyq250[10] = x.CephFS != nil + yyq250[11] = x.FC != nil + yyq250[12] = x.Flocker != nil + yyq250[13] = x.AzureFile != nil + yyq250[14] = x.VsphereVolume != nil + yyq250[15] = x.AzureDisk != nil + var yynn250 int + if yyr250 || yy2arr250 { + r.EncodeArrayStart(16) + } else { + yynn250 = 0 + for _, b := range yyq250 { + if b { + yynn250++ + } + } + r.EncodeMapStart(yynn250) + yynn250 = 0 + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[0] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[1] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[2] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[3] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[4] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[5] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[6] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[8] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[9] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[10] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[11] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[12] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[13] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[14] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[15] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq250[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym267 := z.DecBinary() + _ = yym267 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct268 := r.ContainerType() + if yyct268 == codecSelferValueTypeMap1234 { + yyl268 := r.ReadMapStart() + if yyl268 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl268, d) + } + } else if yyct268 == codecSelferValueTypeArray1234 { + yyl268 := r.ReadArrayStart() + if yyl268 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl268, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys269Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys269Slc + var yyhl269 bool = l >= 0 + for yyj269 := 0; ; yyj269++ { + if yyhl269 { + if yyj269 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys269Slc = r.DecodeBytes(yys269Slc, true, true) + yys269 := string(yys269Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys269 { + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys269) + } // end switch yys269 + } // end for yyj269 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj286 int + var yyb286 bool + var yyhl286 bool = l >= 0 + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj286++ + if yyhl286 { + yyb286 = yyj286 > l + } else { + yyb286 = r.CheckBreak() + } + if yyb286 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj286-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym303 := z.EncBinary() + _ = yym303 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep304 := !z.EncBinary() + yy2arr304 := z.EncBasicHandle().StructToArray + var yyq304 [2]bool + _, _, _ = yysep304, yyq304, yy2arr304 + const yyr304 bool = false + yyq304[1] = x.ReadOnly != false + var yynn304 int + if yyr304 || yy2arr304 { + r.EncodeArrayStart(2) + } else { + yynn304 = 1 + for _, b := range yyq304 { + if b { + yynn304++ + } + } + r.EncodeMapStart(yynn304) + yynn304 = 0 + } + if yyr304 || yy2arr304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym306 := z.EncBinary() + _ = yym306 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym307 := z.EncBinary() + _ = yym307 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } + if yyr304 || yy2arr304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq304[1] { + yym309 := z.EncBinary() + _ = yym309 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq304[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym310 := z.EncBinary() + _ = yym310 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr304 || yy2arr304 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym311 := z.DecBinary() + _ = yym311 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct312 := r.ContainerType() + if yyct312 == codecSelferValueTypeMap1234 { + yyl312 := r.ReadMapStart() + if yyl312 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl312, d) + } + } else if yyct312 == codecSelferValueTypeArray1234 { + yyl312 := r.ReadArrayStart() + if yyl312 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl312, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys313Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys313Slc + var yyhl313 bool = l >= 0 + for yyj313 := 0; ; yyj313++ { + if yyhl313 { + if yyj313 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys313Slc = r.DecodeBytes(yys313Slc, true, true) + yys313 := string(yys313Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys313 { + case "claimName": + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + x.ClaimName = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys313) + } // end switch yys313 + } // end for yyj313 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj316 int + var yyb316 bool + var yyhl316 bool = l >= 0 + yyj316++ + if yyhl316 { + yyb316 = yyj316 > l + } else { + yyb316 = r.CheckBreak() + } + if yyb316 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + x.ClaimName = string(r.DecodeString()) + } + yyj316++ + if yyhl316 { + yyb316 = yyj316 > l + } else { + yyb316 = r.CheckBreak() + } + if yyb316 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj316++ + if yyhl316 { + yyb316 = yyj316 > l + } else { + yyb316 = r.CheckBreak() + } + if yyb316 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj316-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym319 := z.EncBinary() + _ = yym319 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep320 := !z.EncBinary() + yy2arr320 := z.EncBasicHandle().StructToArray + var yyq320 [5]bool + _, _, _ = yysep320, yyq320, yy2arr320 + const yyr320 bool = false + yyq320[0] = x.Kind != "" + yyq320[1] = x.APIVersion != "" + yyq320[2] = true + yyq320[3] = true + yyq320[4] = true + var yynn320 int + if yyr320 || yy2arr320 { + r.EncodeArrayStart(5) + } else { + yynn320 = 0 + for _, b := range yyq320 { + if b { + yynn320++ + } + } + r.EncodeMapStart(yynn320) + yynn320 = 0 + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[0] { + yym322 := z.EncBinary() + _ = yym322 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq320[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym323 := z.EncBinary() + _ = yym323 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[1] { + yym325 := z.EncBinary() + _ = yym325 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq320[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym326 := z.EncBinary() + _ = yym326 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[2] { + yy328 := &x.ObjectMeta + yy328.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy329 := &x.ObjectMeta + yy329.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[3] { + yy331 := &x.Spec + yy331.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy332 := &x.Spec + yy332.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[4] { + yy334 := &x.Status + yy334.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy335 := &x.Status + yy335.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym336 := z.DecBinary() + _ = yym336 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct337 := r.ContainerType() + if yyct337 == codecSelferValueTypeMap1234 { + yyl337 := r.ReadMapStart() + if yyl337 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl337, d) + } + } else if yyct337 == codecSelferValueTypeArray1234 { + yyl337 := r.ReadArrayStart() + if yyl337 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl337, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys338Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys338Slc + var yyhl338 bool = l >= 0 + for yyj338 := 0; ; yyj338++ { + if yyhl338 { + if yyj338 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys338Slc = r.DecodeBytes(yys338Slc, true, true) + yys338 := string(yys338Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys338 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv341 := &x.ObjectMeta + yyv341.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv342 := &x.Spec + yyv342.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv343 := &x.Status + yyv343.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys338) + } // end switch yys338 + } // end for yyj338 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj344 int + var yyb344 bool + var yyhl344 bool = l >= 0 + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv347 := &x.ObjectMeta + yyv347.CodecDecodeSelf(d) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv348 := &x.Spec + yyv348.CodecDecodeSelf(d) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv349 := &x.Status + yyv349.CodecDecodeSelf(d) + } + for { + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj344-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym350 := z.EncBinary() + _ = yym350 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep351 := !z.EncBinary() + yy2arr351 := z.EncBasicHandle().StructToArray + var yyq351 [20]bool + _, _, _ = yysep351, yyq351, yy2arr351 + const yyr351 bool = false + yyq351[1] = x.PersistentVolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq351[2] = x.PersistentVolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq351[3] = x.PersistentVolumeSource.HostPath != nil && x.HostPath != nil + yyq351[4] = x.PersistentVolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq351[5] = x.PersistentVolumeSource.NFS != nil && x.NFS != nil + yyq351[6] = x.PersistentVolumeSource.RBD != nil && x.RBD != nil + yyq351[7] = x.PersistentVolumeSource.Quobyte != nil && x.Quobyte != nil + yyq351[8] = x.PersistentVolumeSource.ISCSI != nil && x.ISCSI != nil + yyq351[9] = x.PersistentVolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq351[10] = x.PersistentVolumeSource.Cinder != nil && x.Cinder != nil + yyq351[11] = x.PersistentVolumeSource.CephFS != nil && x.CephFS != nil + yyq351[12] = x.PersistentVolumeSource.FC != nil && x.FC != nil + yyq351[13] = x.PersistentVolumeSource.Flocker != nil && x.Flocker != nil + yyq351[14] = x.PersistentVolumeSource.AzureFile != nil && x.AzureFile != nil + yyq351[15] = x.PersistentVolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq351[16] = x.PersistentVolumeSource.AzureDisk != nil && x.AzureDisk != nil + yyq351[17] = len(x.AccessModes) != 0 + yyq351[18] = x.ClaimRef != nil + yyq351[19] = x.PersistentVolumeReclaimPolicy != "" + var yynn351 int + if yyr351 || yy2arr351 { + r.EncodeArrayStart(20) + } else { + yynn351 = 1 + for _, b := range yyq351 { + if b { + yynn351++ + } + } + r.EncodeMapStart(yynn351) + yynn351 = 0 + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + var yyn353 bool + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + yyn353 = true + goto LABEL353 + } + LABEL353: + if yyr351 || yy2arr351 { + if yyn353 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[1] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn353 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn354 bool + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + yyn354 = true + goto LABEL354 + } + LABEL354: + if yyr351 || yy2arr351 { + if yyn354 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[2] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn354 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn355 bool + if x.PersistentVolumeSource.HostPath == nil { + yyn355 = true + goto LABEL355 + } + LABEL355: + if yyr351 || yy2arr351 { + if yyn355 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[3] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn355 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn356 bool + if x.PersistentVolumeSource.Glusterfs == nil { + yyn356 = true + goto LABEL356 + } + LABEL356: + if yyr351 || yy2arr351 { + if yyn356 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[4] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn356 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn357 bool + if x.PersistentVolumeSource.NFS == nil { + yyn357 = true + goto LABEL357 + } + LABEL357: + if yyr351 || yy2arr351 { + if yyn357 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[5] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn357 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn358 bool + if x.PersistentVolumeSource.RBD == nil { + yyn358 = true + goto LABEL358 + } + LABEL358: + if yyr351 || yy2arr351 { + if yyn358 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[6] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn358 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn359 bool + if x.PersistentVolumeSource.Quobyte == nil { + yyn359 = true + goto LABEL359 + } + LABEL359: + if yyr351 || yy2arr351 { + if yyn359 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[7] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn359 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn360 bool + if x.PersistentVolumeSource.ISCSI == nil { + yyn360 = true + goto LABEL360 + } + LABEL360: + if yyr351 || yy2arr351 { + if yyn360 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[8] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn360 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn361 bool + if x.PersistentVolumeSource.FlexVolume == nil { + yyn361 = true + goto LABEL361 + } + LABEL361: + if yyr351 || yy2arr351 { + if yyn361 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[9] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn361 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn362 bool + if x.PersistentVolumeSource.Cinder == nil { + yyn362 = true + goto LABEL362 + } + LABEL362: + if yyr351 || yy2arr351 { + if yyn362 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[10] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn362 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn363 bool + if x.PersistentVolumeSource.CephFS == nil { + yyn363 = true + goto LABEL363 + } + LABEL363: + if yyr351 || yy2arr351 { + if yyn363 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[11] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn363 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn364 bool + if x.PersistentVolumeSource.FC == nil { + yyn364 = true + goto LABEL364 + } + LABEL364: + if yyr351 || yy2arr351 { + if yyn364 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[12] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn364 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn365 bool + if x.PersistentVolumeSource.Flocker == nil { + yyn365 = true + goto LABEL365 + } + LABEL365: + if yyr351 || yy2arr351 { + if yyn365 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[13] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn365 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn366 bool + if x.PersistentVolumeSource.AzureFile == nil { + yyn366 = true + goto LABEL366 + } + LABEL366: + if yyr351 || yy2arr351 { + if yyn366 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[14] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn366 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn367 bool + if x.PersistentVolumeSource.VsphereVolume == nil { + yyn367 = true + goto LABEL367 + } + LABEL367: + if yyr351 || yy2arr351 { + if yyn367 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[15] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn367 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn368 bool + if x.PersistentVolumeSource.AzureDisk == nil { + yyn368 = true + goto LABEL368 + } + LABEL368: + if yyr351 || yy2arr351 { + if yyn368 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[16] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn368 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[17] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym370 := z.EncBinary() + _ = yym370 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq351[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym371 := z.EncBinary() + _ = yym371 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[18] { + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq351[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[19] { + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq351[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeReclaimPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym374 := z.DecBinary() + _ = yym374 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct375 := r.ContainerType() + if yyct375 == codecSelferValueTypeMap1234 { + yyl375 := r.ReadMapStart() + if yyl375 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl375, d) + } + } else if yyct375 == codecSelferValueTypeArray1234 { + yyl375 := r.ReadArrayStart() + if yyl375 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl375, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys376Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys376Slc + var yyhl376 bool = l >= 0 + for yyj376 := 0; ; yyj376++ { + if yyhl376 { + if yyj376 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys376Slc = r.DecodeBytes(yys376Slc, true, true) + yys376 := string(yys376Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys376 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv377 := &x.Capacity + yyv377.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "quobyte": + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "iscsi": + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "flexVolume": + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "azureFile": + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "azureDisk": + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv394 := &x.AccessModes + yym395 := z.DecBinary() + _ = yym395 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv394), d) + } + } + case "claimRef": + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + case "persistentVolumeReclaimPolicy": + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + x.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys376) + } // end switch yys376 + } // end for yyj376 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj398 int + var yyb398 bool + var yyhl398 bool = l >= 0 + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv399 := &x.Capacity + yyv399.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv416 := &x.AccessModes + yym417 := z.DecBinary() + _ = yym417 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv416), d) + } + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + x.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(r.DecodeString()) + } + for { + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj398-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeReclaimPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym420 := z.EncBinary() + _ = yym420 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeReclaimPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym421 := z.DecBinary() + _ = yym421 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PersistentVolumeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym422 := z.EncBinary() + _ = yym422 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep423 := !z.EncBinary() + yy2arr423 := z.EncBasicHandle().StructToArray + var yyq423 [3]bool + _, _, _ = yysep423, yyq423, yy2arr423 + const yyr423 bool = false + yyq423[0] = x.Phase != "" + yyq423[1] = x.Message != "" + yyq423[2] = x.Reason != "" + var yynn423 int + if yyr423 || yy2arr423 { + r.EncodeArrayStart(3) + } else { + yynn423 = 0 + for _, b := range yyq423 { + if b { + yynn423++ + } + } + r.EncodeMapStart(yynn423) + yynn423 = 0 + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[1] { + yym426 := z.EncBinary() + _ = yym426 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym427 := z.EncBinary() + _ = yym427 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[2] { + yym429 := z.EncBinary() + _ = yym429 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym430 := z.EncBinary() + _ = yym430 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym431 := z.DecBinary() + _ = yym431 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct432 := r.ContainerType() + if yyct432 == codecSelferValueTypeMap1234 { + yyl432 := r.ReadMapStart() + if yyl432 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl432, d) + } + } else if yyct432 == codecSelferValueTypeArray1234 { + yyl432 := r.ReadArrayStart() + if yyl432 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl432, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys433Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys433Slc + var yyhl433 bool = l >= 0 + for yyj433 := 0; ; yyj433++ { + if yyhl433 { + if yyj433 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys433Slc = r.DecodeBytes(yys433Slc, true, true) + yys433 := string(yys433Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys433 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumePhase(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys433) + } // end switch yys433 + } // end for yyj433 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj437 int + var yyb437 bool + var yyhl437 bool = l >= 0 + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumePhase(r.DecodeString()) + } + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + for { + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj437-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym441 := z.EncBinary() + _ = yym441 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep442 := !z.EncBinary() + yy2arr442 := z.EncBasicHandle().StructToArray + var yyq442 [4]bool + _, _, _ = yysep442, yyq442, yy2arr442 + const yyr442 bool = false + yyq442[0] = x.Kind != "" + yyq442[1] = x.APIVersion != "" + yyq442[2] = true + var yynn442 int + if yyr442 || yy2arr442 { + r.EncodeArrayStart(4) + } else { + yynn442 = 1 + for _, b := range yyq442 { + if b { + yynn442++ + } + } + r.EncodeMapStart(yynn442) + yynn442 = 0 + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[0] { + yym444 := z.EncBinary() + _ = yym444 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym445 := z.EncBinary() + _ = yym445 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[1] { + yym447 := z.EncBinary() + _ = yym447 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym448 := z.EncBinary() + _ = yym448 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[2] { + yy450 := &x.ListMeta + yym451 := z.EncBinary() + _ = yym451 + if false { + } else if z.HasExtensions() && z.EncExt(yy450) { + } else { + z.EncFallback(yy450) + } + } else { + r.EncodeNil() + } + } else { + if yyq442[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy452 := &x.ListMeta + yym453 := z.EncBinary() + _ = yym453 + if false { + } else if z.HasExtensions() && z.EncExt(yy452) { + } else { + z.EncFallback(yy452) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym455 := z.EncBinary() + _ = yym455 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym456 := z.EncBinary() + _ = yym456 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym457 := z.DecBinary() + _ = yym457 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct458 := r.ContainerType() + if yyct458 == codecSelferValueTypeMap1234 { + yyl458 := r.ReadMapStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl458, d) + } + } else if yyct458 == codecSelferValueTypeArray1234 { + yyl458 := r.ReadArrayStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl458, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys459Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys459Slc + var yyhl459 bool = l >= 0 + for yyj459 := 0; ; yyj459++ { + if yyhl459 { + if yyj459 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys459Slc = r.DecodeBytes(yys459Slc, true, true) + yys459 := string(yys459Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys459 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv462 := &x.ListMeta + yym463 := z.DecBinary() + _ = yym463 + if false { + } else if z.HasExtensions() && z.DecExt(yyv462) { + } else { + z.DecFallback(yyv462, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv464 := &x.Items + yym465 := z.DecBinary() + _ = yym465 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv464), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys459) + } // end switch yys459 + } // end for yyj459 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj466 int + var yyb466 bool + var yyhl466 bool = l >= 0 + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv469 := &x.ListMeta + yym470 := z.DecBinary() + _ = yym470 + if false { + } else if z.HasExtensions() && z.DecExt(yyv469) { + } else { + z.DecFallback(yyv469, false) + } + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv471 := &x.Items + yym472 := z.DecBinary() + _ = yym472 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv471), d) + } + } + for { + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj466-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaim) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym473 := z.EncBinary() + _ = yym473 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep474 := !z.EncBinary() + yy2arr474 := z.EncBasicHandle().StructToArray + var yyq474 [5]bool + _, _, _ = yysep474, yyq474, yy2arr474 + const yyr474 bool = false + yyq474[0] = x.Kind != "" + yyq474[1] = x.APIVersion != "" + yyq474[2] = true + yyq474[3] = true + yyq474[4] = true + var yynn474 int + if yyr474 || yy2arr474 { + r.EncodeArrayStart(5) + } else { + yynn474 = 0 + for _, b := range yyq474 { + if b { + yynn474++ + } + } + r.EncodeMapStart(yynn474) + yynn474 = 0 + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[0] { + yym476 := z.EncBinary() + _ = yym476 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq474[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym477 := z.EncBinary() + _ = yym477 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[1] { + yym479 := z.EncBinary() + _ = yym479 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq474[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym480 := z.EncBinary() + _ = yym480 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[2] { + yy482 := &x.ObjectMeta + yy482.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy483 := &x.ObjectMeta + yy483.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[3] { + yy485 := &x.Spec + yy485.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy486 := &x.Spec + yy486.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[4] { + yy488 := &x.Status + yy488.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy489 := &x.Status + yy489.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaim) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym490 := z.DecBinary() + _ = yym490 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct491 := r.ContainerType() + if yyct491 == codecSelferValueTypeMap1234 { + yyl491 := r.ReadMapStart() + if yyl491 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl491, d) + } + } else if yyct491 == codecSelferValueTypeArray1234 { + yyl491 := r.ReadArrayStart() + if yyl491 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl491, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys492Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys492Slc + var yyhl492 bool = l >= 0 + for yyj492 := 0; ; yyj492++ { + if yyhl492 { + if yyj492 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys492Slc = r.DecodeBytes(yys492Slc, true, true) + yys492 := string(yys492Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys492 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv495 := &x.ObjectMeta + yyv495.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv496 := &x.Spec + yyv496.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv497 := &x.Status + yyv497.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys492) + } // end switch yys492 + } // end for yyj492 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj498 int + var yyb498 bool + var yyhl498 bool = l >= 0 + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv501 := &x.ObjectMeta + yyv501.CodecDecodeSelf(d) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv502 := &x.Spec + yyv502.CodecDecodeSelf(d) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv503 := &x.Status + yyv503.CodecDecodeSelf(d) + } + for { + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj498-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym504 := z.EncBinary() + _ = yym504 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep505 := !z.EncBinary() + yy2arr505 := z.EncBasicHandle().StructToArray + var yyq505 [4]bool + _, _, _ = yysep505, yyq505, yy2arr505 + const yyr505 bool = false + yyq505[0] = x.Kind != "" + yyq505[1] = x.APIVersion != "" + yyq505[2] = true + var yynn505 int + if yyr505 || yy2arr505 { + r.EncodeArrayStart(4) + } else { + yynn505 = 1 + for _, b := range yyq505 { + if b { + yynn505++ + } + } + r.EncodeMapStart(yynn505) + yynn505 = 0 + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[0] { + yym507 := z.EncBinary() + _ = yym507 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq505[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym508 := z.EncBinary() + _ = yym508 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[1] { + yym510 := z.EncBinary() + _ = yym510 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq505[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym511 := z.EncBinary() + _ = yym511 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[2] { + yy513 := &x.ListMeta + yym514 := z.EncBinary() + _ = yym514 + if false { + } else if z.HasExtensions() && z.EncExt(yy513) { + } else { + z.EncFallback(yy513) + } + } else { + r.EncodeNil() + } + } else { + if yyq505[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy515 := &x.ListMeta + yym516 := z.EncBinary() + _ = yym516 + if false { + } else if z.HasExtensions() && z.EncExt(yy515) { + } else { + z.EncFallback(yy515) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym518 := z.EncBinary() + _ = yym518 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym519 := z.EncBinary() + _ = yym519 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym520 := z.DecBinary() + _ = yym520 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct521 := r.ContainerType() + if yyct521 == codecSelferValueTypeMap1234 { + yyl521 := r.ReadMapStart() + if yyl521 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl521, d) + } + } else if yyct521 == codecSelferValueTypeArray1234 { + yyl521 := r.ReadArrayStart() + if yyl521 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl521, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys522Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys522Slc + var yyhl522 bool = l >= 0 + for yyj522 := 0; ; yyj522++ { + if yyhl522 { + if yyj522 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys522Slc = r.DecodeBytes(yys522Slc, true, true) + yys522 := string(yys522Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys522 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv525 := &x.ListMeta + yym526 := z.DecBinary() + _ = yym526 + if false { + } else if z.HasExtensions() && z.DecExt(yyv525) { + } else { + z.DecFallback(yyv525, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv527 := &x.Items + yym528 := z.DecBinary() + _ = yym528 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv527), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys522) + } // end switch yys522 + } // end for yyj522 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj529 int + var yyb529 bool + var yyhl529 bool = l >= 0 + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv532 := &x.ListMeta + yym533 := z.DecBinary() + _ = yym533 + if false { + } else if z.HasExtensions() && z.DecExt(yyv532) { + } else { + z.DecFallback(yyv532, false) + } + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv534 := &x.Items + yym535 := z.DecBinary() + _ = yym535 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv534), d) + } + } + for { + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj529-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym536 := z.EncBinary() + _ = yym536 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep537 := !z.EncBinary() + yy2arr537 := z.EncBasicHandle().StructToArray + var yyq537 [4]bool + _, _, _ = yysep537, yyq537, yy2arr537 + const yyr537 bool = false + yyq537[0] = len(x.AccessModes) != 0 + yyq537[1] = x.Selector != nil + yyq537[2] = true + yyq537[3] = x.VolumeName != "" + var yynn537 int + if yyr537 || yy2arr537 { + r.EncodeArrayStart(4) + } else { + yynn537 = 0 + for _, b := range yyq537 { + if b { + yynn537++ + } + } + r.EncodeMapStart(yynn537) + yynn537 = 0 + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[0] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym539 := z.EncBinary() + _ = yym539 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq537[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym540 := z.EncBinary() + _ = yym540 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym542 := z.EncBinary() + _ = yym542 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq537[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym543 := z.EncBinary() + _ = yym543 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[2] { + yy545 := &x.Resources + yy545.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq537[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy546 := &x.Resources + yy546.CodecEncodeSelf(e) + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[3] { + yym548 := z.EncBinary() + _ = yym548 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq537[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym549 := z.EncBinary() + _ = yym549 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym550 := z.DecBinary() + _ = yym550 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct551 := r.ContainerType() + if yyct551 == codecSelferValueTypeMap1234 { + yyl551 := r.ReadMapStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl551, d) + } + } else if yyct551 == codecSelferValueTypeArray1234 { + yyl551 := r.ReadArrayStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl551, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys552Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys552Slc + var yyhl552 bool = l >= 0 + for yyj552 := 0; ; yyj552++ { + if yyhl552 { + if yyj552 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys552Slc = r.DecodeBytes(yys552Slc, true, true) + yys552 := string(yys552Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys552 { + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv553 := &x.AccessModes + yym554 := z.DecBinary() + _ = yym554 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv553), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym556 := z.DecBinary() + _ = yym556 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv557 := &x.Resources + yyv557.CodecDecodeSelf(d) + } + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + x.VolumeName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys552) + } // end switch yys552 + } // end for yyj552 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj559 int + var yyb559 bool + var yyhl559 bool = l >= 0 + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv560 := &x.AccessModes + yym561 := z.DecBinary() + _ = yym561 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv560), d) + } + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym563 := z.DecBinary() + _ = yym563 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv564 := &x.Resources + yyv564.CodecDecodeSelf(d) + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + x.VolumeName = string(r.DecodeString()) + } + for { + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj559-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym566 := z.EncBinary() + _ = yym566 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep567 := !z.EncBinary() + yy2arr567 := z.EncBasicHandle().StructToArray + var yyq567 [3]bool + _, _, _ = yysep567, yyq567, yy2arr567 + const yyr567 bool = false + yyq567[0] = x.Phase != "" + yyq567[1] = len(x.AccessModes) != 0 + yyq567[2] = len(x.Capacity) != 0 + var yynn567 int + if yyr567 || yy2arr567 { + r.EncodeArrayStart(3) + } else { + yynn567 = 0 + for _, b := range yyq567 { + if b { + yynn567++ + } + } + r.EncodeMapStart(yynn567) + yynn567 = 0 + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq567[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[1] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym570 := z.EncBinary() + _ = yym570 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq567[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym571 := z.EncBinary() + _ = yym571 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[2] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq567[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym573 := z.DecBinary() + _ = yym573 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct574 := r.ContainerType() + if yyct574 == codecSelferValueTypeMap1234 { + yyl574 := r.ReadMapStart() + if yyl574 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl574, d) + } + } else if yyct574 == codecSelferValueTypeArray1234 { + yyl574 := r.ReadArrayStart() + if yyl574 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl574, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys575Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys575Slc + var yyhl575 bool = l >= 0 + for yyj575 := 0; ; yyj575++ { + if yyhl575 { + if yyj575 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys575Slc = r.DecodeBytes(yys575Slc, true, true) + yys575 := string(yys575Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys575 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumeClaimPhase(r.DecodeString()) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv577 := &x.AccessModes + yym578 := z.DecBinary() + _ = yym578 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv577), d) + } + } + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv579 := &x.Capacity + yyv579.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys575) + } // end switch yys575 + } // end for yyj575 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj580 int + var yyb580 bool + var yyhl580 bool = l >= 0 + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumeClaimPhase(r.DecodeString()) + } + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv582 := &x.AccessModes + yym583 := z.DecBinary() + _ = yym583 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv582), d) + } + } + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv584 := &x.Capacity + yyv584.CodecDecodeSelf(d) + } + for { + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj580-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeAccessMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym585 := z.EncBinary() + _ = yym585 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeAccessMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym586 := z.DecBinary() + _ = yym586 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym587 := z.EncBinary() + _ = yym587 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym588 := z.DecBinary() + _ = yym588 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumeClaimPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym589 := z.EncBinary() + _ = yym589 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeClaimPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym590 := z.DecBinary() + _ = yym590 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HostPathVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym591 := z.EncBinary() + _ = yym591 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep592 := !z.EncBinary() + yy2arr592 := z.EncBasicHandle().StructToArray + var yyq592 [1]bool + _, _, _ = yysep592, yyq592, yy2arr592 + const yyr592 bool = false + var yynn592 int + if yyr592 || yy2arr592 { + r.EncodeArrayStart(1) + } else { + yynn592 = 1 + for _, b := range yyq592 { + if b { + yynn592++ + } + } + r.EncodeMapStart(yynn592) + yynn592 = 0 + } + if yyr592 || yy2arr592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym594 := z.EncBinary() + _ = yym594 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym595 := z.EncBinary() + _ = yym595 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr592 || yy2arr592 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPathVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym596 := z.DecBinary() + _ = yym596 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct597 := r.ContainerType() + if yyct597 == codecSelferValueTypeMap1234 { + yyl597 := r.ReadMapStart() + if yyl597 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl597, d) + } + } else if yyct597 == codecSelferValueTypeArray1234 { + yyl597 := r.ReadArrayStart() + if yyl597 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl597, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys598Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys598Slc + var yyhl598 bool = l >= 0 + for yyj598 := 0; ; yyj598++ { + if yyhl598 { + if yyj598 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys598Slc = r.DecodeBytes(yys598Slc, true, true) + yys598 := string(yys598Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys598 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys598) + } // end switch yys598 + } // end for yyj598 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj600 int + var yyb600 bool + var yyhl600 bool = l >= 0 + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj600-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EmptyDirVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym602 := z.EncBinary() + _ = yym602 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep603 := !z.EncBinary() + yy2arr603 := z.EncBasicHandle().StructToArray + var yyq603 [1]bool + _, _, _ = yysep603, yyq603, yy2arr603 + const yyr603 bool = false + yyq603[0] = x.Medium != "" + var yynn603 int + if yyr603 || yy2arr603 { + r.EncodeArrayStart(1) + } else { + yynn603 = 0 + for _, b := range yyq603 { + if b { + yynn603++ + } + } + r.EncodeMapStart(yynn603) + yynn603 = 0 + } + if yyr603 || yy2arr603 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq603[0] { + x.Medium.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq603[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("medium")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Medium.CodecEncodeSelf(e) + } + } + if yyr603 || yy2arr603 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EmptyDirVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym605 := z.DecBinary() + _ = yym605 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct606 := r.ContainerType() + if yyct606 == codecSelferValueTypeMap1234 { + yyl606 := r.ReadMapStart() + if yyl606 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl606, d) + } + } else if yyct606 == codecSelferValueTypeArray1234 { + yyl606 := r.ReadArrayStart() + if yyl606 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl606, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys607Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys607Slc + var yyhl607 bool = l >= 0 + for yyj607 := 0; ; yyj607++ { + if yyhl607 { + if yyj607 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys607Slc = r.DecodeBytes(yys607Slc, true, true) + yys607 := string(yys607Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys607 { + case "medium": + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + x.Medium = StorageMedium(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys607) + } // end switch yys607 + } // end for yyj607 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj609 int + var yyb609 bool + var yyhl609 bool = l >= 0 + yyj609++ + if yyhl609 { + yyb609 = yyj609 > l + } else { + yyb609 = r.CheckBreak() + } + if yyb609 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + x.Medium = StorageMedium(r.DecodeString()) + } + for { + yyj609++ + if yyhl609 { + yyb609 = yyj609 > l + } else { + yyb609 = r.CheckBreak() + } + if yyb609 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj609-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x StorageMedium) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym611 := z.EncBinary() + _ = yym611 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *StorageMedium) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym612 := z.DecBinary() + _ = yym612 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Protocol) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym613 := z.EncBinary() + _ = yym613 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Protocol) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym614 := z.DecBinary() + _ = yym614 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym615 := z.EncBinary() + _ = yym615 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep616 := !z.EncBinary() + yy2arr616 := z.EncBasicHandle().StructToArray + var yyq616 [4]bool + _, _, _ = yysep616, yyq616, yy2arr616 + const yyr616 bool = false + yyq616[1] = x.FSType != "" + yyq616[2] = x.Partition != 0 + yyq616[3] = x.ReadOnly != false + var yynn616 int + if yyr616 || yy2arr616 { + r.EncodeArrayStart(4) + } else { + yynn616 = 1 + for _, b := range yyq616 { + if b { + yynn616++ + } + } + r.EncodeMapStart(yynn616) + yynn616 = 0 + } + if yyr616 || yy2arr616 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym618 := z.EncBinary() + _ = yym618 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pdName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym619 := z.EncBinary() + _ = yym619 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } + if yyr616 || yy2arr616 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq616[1] { + yym621 := z.EncBinary() + _ = yym621 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq616[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym622 := z.EncBinary() + _ = yym622 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr616 || yy2arr616 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq616[2] { + yym624 := z.EncBinary() + _ = yym624 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq616[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym625 := z.EncBinary() + _ = yym625 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr616 || yy2arr616 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq616[3] { + yym627 := z.EncBinary() + _ = yym627 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq616[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym628 := z.EncBinary() + _ = yym628 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr616 || yy2arr616 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym629 := z.DecBinary() + _ = yym629 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct630 := r.ContainerType() + if yyct630 == codecSelferValueTypeMap1234 { + yyl630 := r.ReadMapStart() + if yyl630 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl630, d) + } + } else if yyct630 == codecSelferValueTypeArray1234 { + yyl630 := r.ReadArrayStart() + if yyl630 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl630, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys631Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys631Slc + var yyhl631 bool = l >= 0 + for yyj631 := 0; ; yyj631++ { + if yyhl631 { + if yyj631 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys631Slc = r.DecodeBytes(yys631Slc, true, true) + yys631 := string(yys631Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys631 { + case "pdName": + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + x.PDName = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys631) + } // end switch yys631 + } // end for yyj631 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj636 int + var yyb636 bool + var yyhl636 bool = l >= 0 + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + x.PDName = string(r.DecodeString()) + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj636-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ISCSIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym641 := z.EncBinary() + _ = yym641 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep642 := !z.EncBinary() + yy2arr642 := z.EncBasicHandle().StructToArray + var yyq642 [6]bool + _, _, _ = yysep642, yyq642, yy2arr642 + const yyr642 bool = false + yyq642[0] = x.TargetPortal != "" + yyq642[1] = x.IQN != "" + yyq642[2] = x.Lun != 0 + yyq642[3] = x.ISCSIInterface != "" + yyq642[4] = x.FSType != "" + yyq642[5] = x.ReadOnly != false + var yynn642 int + if yyr642 || yy2arr642 { + r.EncodeArrayStart(6) + } else { + yynn642 = 0 + for _, b := range yyq642 { + if b { + yynn642++ + } + } + r.EncodeMapStart(yynn642) + yynn642 = 0 + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[0] { + yym644 := z.EncBinary() + _ = yym644 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq642[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPortal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym645 := z.EncBinary() + _ = yym645 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[1] { + yym647 := z.EncBinary() + _ = yym647 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq642[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iqn")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym648 := z.EncBinary() + _ = yym648 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[2] { + yym650 := z.EncBinary() + _ = yym650 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq642[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym651 := z.EncBinary() + _ = yym651 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[3] { + yym653 := z.EncBinary() + _ = yym653 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq642[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsiInterface")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym654 := z.EncBinary() + _ = yym654 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[4] { + yym656 := z.EncBinary() + _ = yym656 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq642[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym657 := z.EncBinary() + _ = yym657 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq642[5] { + yym659 := z.EncBinary() + _ = yym659 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq642[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym660 := z.EncBinary() + _ = yym660 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr642 || yy2arr642 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ISCSIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym661 := z.DecBinary() + _ = yym661 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct662 := r.ContainerType() + if yyct662 == codecSelferValueTypeMap1234 { + yyl662 := r.ReadMapStart() + if yyl662 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl662, d) + } + } else if yyct662 == codecSelferValueTypeArray1234 { + yyl662 := r.ReadArrayStart() + if yyl662 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl662, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys663Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys663Slc + var yyhl663 bool = l >= 0 + for yyj663 := 0; ; yyj663++ { + if yyhl663 { + if yyj663 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys663Slc = r.DecodeBytes(yys663Slc, true, true) + yys663 := string(yys663Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys663 { + case "targetPortal": + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + x.TargetPortal = string(r.DecodeString()) + } + case "iqn": + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + x.IQN = string(r.DecodeString()) + } + case "lun": + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + x.Lun = int32(r.DecodeInt(32)) + } + case "iscsiInterface": + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + x.ISCSIInterface = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys663) + } // end switch yys663 + } // end for yyj663 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj670 int + var yyb670 bool + var yyhl670 bool = l >= 0 + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + x.TargetPortal = string(r.DecodeString()) + } + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + x.IQN = string(r.DecodeString()) + } + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + x.Lun = int32(r.DecodeInt(32)) + } + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + x.ISCSIInterface = string(r.DecodeString()) + } + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj670++ + if yyhl670 { + yyb670 = yyj670 > l + } else { + yyb670 = r.CheckBreak() + } + if yyb670 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj670-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FCVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym677 := z.EncBinary() + _ = yym677 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep678 := !z.EncBinary() + yy2arr678 := z.EncBasicHandle().StructToArray + var yyq678 [4]bool + _, _, _ = yysep678, yyq678, yy2arr678 + const yyr678 bool = false + yyq678[2] = x.FSType != "" + yyq678[3] = x.ReadOnly != false + var yynn678 int + if yyr678 || yy2arr678 { + r.EncodeArrayStart(4) + } else { + yynn678 = 2 + for _, b := range yyq678 { + if b { + yynn678++ + } + } + r.EncodeMapStart(yynn678) + yynn678 = 0 + } + if yyr678 || yy2arr678 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym680 := z.EncBinary() + _ = yym680 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetWWNs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym681 := z.EncBinary() + _ = yym681 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } + if yyr678 || yy2arr678 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy683 := *x.Lun + yym684 := z.EncBinary() + _ = yym684 + if false { + } else { + r.EncodeInt(int64(yy683)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy685 := *x.Lun + yym686 := z.EncBinary() + _ = yym686 + if false { + } else { + r.EncodeInt(int64(yy685)) + } + } + } + if yyr678 || yy2arr678 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq678[2] { + yym688 := z.EncBinary() + _ = yym688 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq678[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym689 := z.EncBinary() + _ = yym689 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr678 || yy2arr678 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq678[3] { + yym691 := z.EncBinary() + _ = yym691 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq678[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym692 := z.EncBinary() + _ = yym692 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr678 || yy2arr678 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FCVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym693 := z.DecBinary() + _ = yym693 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct694 := r.ContainerType() + if yyct694 == codecSelferValueTypeMap1234 { + yyl694 := r.ReadMapStart() + if yyl694 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl694, d) + } + } else if yyct694 == codecSelferValueTypeArray1234 { + yyl694 := r.ReadArrayStart() + if yyl694 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl694, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FCVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys695Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys695Slc + var yyhl695 bool = l >= 0 + for yyj695 := 0; ; yyj695++ { + if yyhl695 { + if yyj695 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys695Slc = r.DecodeBytes(yys695Slc, true, true) + yys695 := string(yys695Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys695 { + case "targetWWNs": + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv696 := &x.TargetWWNs + yym697 := z.DecBinary() + _ = yym697 + if false { + } else { + z.F.DecSliceStringX(yyv696, false, d) + } + } + case "lun": + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym699 := z.DecBinary() + _ = yym699 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys695) + } // end switch yys695 + } // end for yyj695 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FCVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj702 int + var yyb702 bool + var yyhl702 bool = l >= 0 + yyj702++ + if yyhl702 { + yyb702 = yyj702 > l + } else { + yyb702 = r.CheckBreak() + } + if yyb702 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv703 := &x.TargetWWNs + yym704 := z.DecBinary() + _ = yym704 + if false { + } else { + z.F.DecSliceStringX(yyv703, false, d) + } + } + yyj702++ + if yyhl702 { + yyb702 = yyj702 > l + } else { + yyb702 = r.CheckBreak() + } + if yyb702 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym706 := z.DecBinary() + _ = yym706 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + yyj702++ + if yyhl702 { + yyb702 = yyj702 > l + } else { + yyb702 = r.CheckBreak() + } + if yyb702 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj702++ + if yyhl702 { + yyb702 = yyj702 > l + } else { + yyb702 = r.CheckBreak() + } + if yyb702 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj702++ + if yyhl702 { + yyb702 = yyj702 > l + } else { + yyb702 = r.CheckBreak() + } + if yyb702 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj702-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlexVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym709 := z.EncBinary() + _ = yym709 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep710 := !z.EncBinary() + yy2arr710 := z.EncBasicHandle().StructToArray + var yyq710 [5]bool + _, _, _ = yysep710, yyq710, yy2arr710 + const yyr710 bool = false + yyq710[1] = x.FSType != "" + yyq710[2] = x.SecretRef != nil + yyq710[3] = x.ReadOnly != false + yyq710[4] = len(x.Options) != 0 + var yynn710 int + if yyr710 || yy2arr710 { + r.EncodeArrayStart(5) + } else { + yynn710 = 1 + for _, b := range yyq710 { + if b { + yynn710++ + } + } + r.EncodeMapStart(yynn710) + yynn710 = 0 + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym712 := z.EncBinary() + _ = yym712 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("driver")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym713 := z.EncBinary() + _ = yym713 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[1] { + yym715 := z.EncBinary() + _ = yym715 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq710[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym716 := z.EncBinary() + _ = yym716 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[2] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq710[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[3] { + yym719 := z.EncBinary() + _ = yym719 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq710[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym720 := z.EncBinary() + _ = yym720 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[4] { + if x.Options == nil { + r.EncodeNil() + } else { + yym722 := z.EncBinary() + _ = yym722 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq710[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("options")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Options == nil { + r.EncodeNil() + } else { + yym723 := z.EncBinary() + _ = yym723 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlexVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym724 := z.DecBinary() + _ = yym724 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct725 := r.ContainerType() + if yyct725 == codecSelferValueTypeMap1234 { + yyl725 := r.ReadMapStart() + if yyl725 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl725, d) + } + } else if yyct725 == codecSelferValueTypeArray1234 { + yyl725 := r.ReadArrayStart() + if yyl725 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl725, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlexVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys726Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys726Slc + var yyhl726 bool = l >= 0 + for yyj726 := 0; ; yyj726++ { + if yyhl726 { + if yyj726 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys726Slc = r.DecodeBytes(yys726Slc, true, true) + yys726 := string(yys726Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys726 { + case "driver": + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + x.Driver = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "options": + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv731 := &x.Options + yym732 := z.DecBinary() + _ = yym732 + if false { + } else { + z.F.DecMapStringStringX(yyv731, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys726) + } // end switch yys726 + } // end for yyj726 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlexVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj733 int + var yyb733 bool + var yyhl733 bool = l >= 0 + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + x.Driver = string(r.DecodeString()) + } + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv738 := &x.Options + yym739 := z.DecBinary() + _ = yym739 + if false { + } else { + z.F.DecMapStringStringX(yyv738, false, d) + } + } + for { + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj733-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym740 := z.EncBinary() + _ = yym740 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep741 := !z.EncBinary() + yy2arr741 := z.EncBasicHandle().StructToArray + var yyq741 [4]bool + _, _, _ = yysep741, yyq741, yy2arr741 + const yyr741 bool = false + yyq741[1] = x.FSType != "" + yyq741[2] = x.Partition != 0 + yyq741[3] = x.ReadOnly != false + var yynn741 int + if yyr741 || yy2arr741 { + r.EncodeArrayStart(4) + } else { + yynn741 = 1 + for _, b := range yyq741 { + if b { + yynn741++ + } + } + r.EncodeMapStart(yynn741) + yynn741 = 0 + } + if yyr741 || yy2arr741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym743 := z.EncBinary() + _ = yym743 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym744 := z.EncBinary() + _ = yym744 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr741 || yy2arr741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq741[1] { + yym746 := z.EncBinary() + _ = yym746 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq741[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym747 := z.EncBinary() + _ = yym747 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr741 || yy2arr741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq741[2] { + yym749 := z.EncBinary() + _ = yym749 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq741[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym750 := z.EncBinary() + _ = yym750 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr741 || yy2arr741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq741[3] { + yym752 := z.EncBinary() + _ = yym752 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq741[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym753 := z.EncBinary() + _ = yym753 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr741 || yy2arr741 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym754 := z.DecBinary() + _ = yym754 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct755 := r.ContainerType() + if yyct755 == codecSelferValueTypeMap1234 { + yyl755 := r.ReadMapStart() + if yyl755 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl755, d) + } + } else if yyct755 == codecSelferValueTypeArray1234 { + yyl755 := r.ReadArrayStart() + if yyl755 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl755, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys756Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys756Slc + var yyhl756 bool = l >= 0 + for yyj756 := 0; ; yyj756++ { + if yyhl756 { + if yyj756 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys756Slc = r.DecodeBytes(yys756Slc, true, true) + yys756 := string(yys756Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys756 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys756) + } // end switch yys756 + } // end for yyj756 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj761 int + var yyb761 bool + var yyhl761 bool = l >= 0 + yyj761++ + if yyhl761 { + yyb761 = yyj761 > l + } else { + yyb761 = r.CheckBreak() + } + if yyb761 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + yyj761++ + if yyhl761 { + yyb761 = yyj761 > l + } else { + yyb761 = r.CheckBreak() + } + if yyb761 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj761++ + if yyhl761 { + yyb761 = yyj761 > l + } else { + yyb761 = r.CheckBreak() + } + if yyb761 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + yyj761++ + if yyhl761 { + yyb761 = yyj761 > l + } else { + yyb761 = r.CheckBreak() + } + if yyb761 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj761++ + if yyhl761 { + yyb761 = yyj761 > l + } else { + yyb761 = r.CheckBreak() + } + if yyb761 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj761-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GitRepoVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym766 := z.EncBinary() + _ = yym766 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep767 := !z.EncBinary() + yy2arr767 := z.EncBasicHandle().StructToArray + var yyq767 [3]bool + _, _, _ = yysep767, yyq767, yy2arr767 + const yyr767 bool = false + yyq767[1] = x.Revision != "" + yyq767[2] = x.Directory != "" + var yynn767 int + if yyr767 || yy2arr767 { + r.EncodeArrayStart(3) + } else { + yynn767 = 1 + for _, b := range yyq767 { + if b { + yynn767++ + } + } + r.EncodeMapStart(yynn767) + yynn767 = 0 + } + if yyr767 || yy2arr767 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym769 := z.EncBinary() + _ = yym769 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("repository")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym770 := z.EncBinary() + _ = yym770 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } + if yyr767 || yy2arr767 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq767[1] { + yym772 := z.EncBinary() + _ = yym772 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq767[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym773 := z.EncBinary() + _ = yym773 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } + } + if yyr767 || yy2arr767 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq767[2] { + yym775 := z.EncBinary() + _ = yym775 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq767[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("directory")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym776 := z.EncBinary() + _ = yym776 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } + } + if yyr767 || yy2arr767 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GitRepoVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym777 := z.DecBinary() + _ = yym777 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct778 := r.ContainerType() + if yyct778 == codecSelferValueTypeMap1234 { + yyl778 := r.ReadMapStart() + if yyl778 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl778, d) + } + } else if yyct778 == codecSelferValueTypeArray1234 { + yyl778 := r.ReadArrayStart() + if yyl778 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl778, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys779Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys779Slc + var yyhl779 bool = l >= 0 + for yyj779 := 0; ; yyj779++ { + if yyhl779 { + if yyj779 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys779Slc = r.DecodeBytes(yys779Slc, true, true) + yys779 := string(yys779Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys779 { + case "repository": + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + x.Repository = string(r.DecodeString()) + } + case "revision": + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + x.Revision = string(r.DecodeString()) + } + case "directory": + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + x.Directory = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys779) + } // end switch yys779 + } // end for yyj779 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj783 int + var yyb783 bool + var yyhl783 bool = l >= 0 + yyj783++ + if yyhl783 { + yyb783 = yyj783 > l + } else { + yyb783 = r.CheckBreak() + } + if yyb783 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + x.Repository = string(r.DecodeString()) + } + yyj783++ + if yyhl783 { + yyb783 = yyj783 > l + } else { + yyb783 = r.CheckBreak() + } + if yyb783 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + x.Revision = string(r.DecodeString()) + } + yyj783++ + if yyhl783 { + yyb783 = yyj783 > l + } else { + yyb783 = r.CheckBreak() + } + if yyb783 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + x.Directory = string(r.DecodeString()) + } + for { + yyj783++ + if yyhl783 { + yyb783 = yyj783 > l + } else { + yyb783 = r.CheckBreak() + } + if yyb783 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj783-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym787 := z.EncBinary() + _ = yym787 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep788 := !z.EncBinary() + yy2arr788 := z.EncBasicHandle().StructToArray + var yyq788 [3]bool + _, _, _ = yysep788, yyq788, yy2arr788 + const yyr788 bool = false + yyq788[0] = x.SecretName != "" + yyq788[1] = len(x.Items) != 0 + yyq788[2] = x.DefaultMode != nil + var yynn788 int + if yyr788 || yy2arr788 { + r.EncodeArrayStart(3) + } else { + yynn788 = 0 + for _, b := range yyq788 { + if b { + yynn788++ + } + } + r.EncodeMapStart(yynn788) + yynn788 = 0 + } + if yyr788 || yy2arr788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq788[0] { + yym790 := z.EncBinary() + _ = yym790 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq788[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym791 := z.EncBinary() + _ = yym791 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr788 || yy2arr788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq788[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym793 := z.EncBinary() + _ = yym793 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq788[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym794 := z.EncBinary() + _ = yym794 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr788 || yy2arr788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq788[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy796 := *x.DefaultMode + yym797 := z.EncBinary() + _ = yym797 + if false { + } else { + r.EncodeInt(int64(yy796)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq788[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy798 := *x.DefaultMode + yym799 := z.EncBinary() + _ = yym799 + if false { + } else { + r.EncodeInt(int64(yy798)) + } + } + } + } + if yyr788 || yy2arr788 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym800 := z.DecBinary() + _ = yym800 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct801 := r.ContainerType() + if yyct801 == codecSelferValueTypeMap1234 { + yyl801 := r.ReadMapStart() + if yyl801 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl801, d) + } + } else if yyct801 == codecSelferValueTypeArray1234 { + yyl801 := r.ReadArrayStart() + if yyl801 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl801, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys802Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys802Slc + var yyhl802 bool = l >= 0 + for yyj802 := 0; ; yyj802++ { + if yyhl802 { + if yyj802 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys802Slc = r.DecodeBytes(yys802Slc, true, true) + yys802 := string(yys802Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys802 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv804 := &x.Items + yym805 := z.DecBinary() + _ = yym805 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv804), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym807 := z.DecBinary() + _ = yym807 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys802) + } // end switch yys802 + } // end for yyj802 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj808 int + var yyb808 bool + var yyhl808 bool = l >= 0 + yyj808++ + if yyhl808 { + yyb808 = yyj808 > l + } else { + yyb808 = r.CheckBreak() + } + if yyb808 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + yyj808++ + if yyhl808 { + yyb808 = yyj808 > l + } else { + yyb808 = r.CheckBreak() + } + if yyb808 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv810 := &x.Items + yym811 := z.DecBinary() + _ = yym811 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv810), d) + } + } + yyj808++ + if yyhl808 { + yyb808 = yyj808 > l + } else { + yyb808 = r.CheckBreak() + } + if yyb808 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym813 := z.DecBinary() + _ = yym813 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj808++ + if yyhl808 { + yyb808 = yyj808 > l + } else { + yyb808 = r.CheckBreak() + } + if yyb808 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj808-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym814 := z.EncBinary() + _ = yym814 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep815 := !z.EncBinary() + yy2arr815 := z.EncBasicHandle().StructToArray + var yyq815 [3]bool + _, _, _ = yysep815, yyq815, yy2arr815 + const yyr815 bool = false + yyq815[2] = x.ReadOnly != false + var yynn815 int + if yyr815 || yy2arr815 { + r.EncodeArrayStart(3) + } else { + yynn815 = 2 + for _, b := range yyq815 { + if b { + yynn815++ + } + } + r.EncodeMapStart(yynn815) + yynn815 = 0 + } + if yyr815 || yy2arr815 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym817 := z.EncBinary() + _ = yym817 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("server")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym818 := z.EncBinary() + _ = yym818 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } + if yyr815 || yy2arr815 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym820 := z.EncBinary() + _ = yym820 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym821 := z.EncBinary() + _ = yym821 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr815 || yy2arr815 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq815[2] { + yym823 := z.EncBinary() + _ = yym823 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq815[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym824 := z.EncBinary() + _ = yym824 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr815 || yy2arr815 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym825 := z.DecBinary() + _ = yym825 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct826 := r.ContainerType() + if yyct826 == codecSelferValueTypeMap1234 { + yyl826 := r.ReadMapStart() + if yyl826 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl826, d) + } + } else if yyct826 == codecSelferValueTypeArray1234 { + yyl826 := r.ReadArrayStart() + if yyl826 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl826, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys827Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys827Slc + var yyhl827 bool = l >= 0 + for yyj827 := 0; ; yyj827++ { + if yyhl827 { + if yyj827 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys827Slc = r.DecodeBytes(yys827Slc, true, true) + yys827 := string(yys827Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys827 { + case "server": + if r.TryDecodeAsNil() { + x.Server = "" + } else { + x.Server = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys827) + } // end switch yys827 + } // end for yyj827 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj831 int + var yyb831 bool + var yyhl831 bool = l >= 0 + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Server = "" + } else { + x.Server = string(r.DecodeString()) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj831-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *QuobyteVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym835 := z.EncBinary() + _ = yym835 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep836 := !z.EncBinary() + yy2arr836 := z.EncBasicHandle().StructToArray + var yyq836 [5]bool + _, _, _ = yysep836, yyq836, yy2arr836 + const yyr836 bool = false + yyq836[2] = x.ReadOnly != false + yyq836[3] = x.User != "" + yyq836[4] = x.Group != "" + var yynn836 int + if yyr836 || yy2arr836 { + r.EncodeArrayStart(5) + } else { + yynn836 = 2 + for _, b := range yyq836 { + if b { + yynn836++ + } + } + r.EncodeMapStart(yynn836) + yynn836 = 0 + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym838 := z.EncBinary() + _ = yym838 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("registry")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym839 := z.EncBinary() + _ = yym839 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym841 := z.EncBinary() + _ = yym841 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym842 := z.EncBinary() + _ = yym842 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq836[2] { + yym844 := z.EncBinary() + _ = yym844 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq836[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym845 := z.EncBinary() + _ = yym845 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq836[3] { + yym847 := z.EncBinary() + _ = yym847 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq836[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym848 := z.EncBinary() + _ = yym848 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq836[4] { + yym850 := z.EncBinary() + _ = yym850 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq836[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym851 := z.EncBinary() + _ = yym851 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr836 || yy2arr836 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *QuobyteVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym852 := z.DecBinary() + _ = yym852 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct853 := r.ContainerType() + if yyct853 == codecSelferValueTypeMap1234 { + yyl853 := r.ReadMapStart() + if yyl853 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl853, d) + } + } else if yyct853 == codecSelferValueTypeArray1234 { + yyl853 := r.ReadArrayStart() + if yyl853 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl853, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys854Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys854Slc + var yyhl854 bool = l >= 0 + for yyj854 := 0; ; yyj854++ { + if yyhl854 { + if yyj854 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys854Slc = r.DecodeBytes(yys854Slc, true, true) + yys854 := string(yys854Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys854 { + case "registry": + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + x.Registry = string(r.DecodeString()) + } + case "volume": + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + x.Volume = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys854) + } // end switch yys854 + } // end for yyj854 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj860 int + var yyb860 bool + var yyhl860 bool = l >= 0 + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + x.Registry = string(r.DecodeString()) + } + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + x.Volume = string(r.DecodeString()) + } + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + for { + yyj860++ + if yyhl860 { + yyb860 = yyj860 > l + } else { + yyb860 = r.CheckBreak() + } + if yyb860 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj860-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GlusterfsVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym866 := z.EncBinary() + _ = yym866 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep867 := !z.EncBinary() + yy2arr867 := z.EncBasicHandle().StructToArray + var yyq867 [3]bool + _, _, _ = yysep867, yyq867, yy2arr867 + const yyr867 bool = false + yyq867[2] = x.ReadOnly != false + var yynn867 int + if yyr867 || yy2arr867 { + r.EncodeArrayStart(3) + } else { + yynn867 = 2 + for _, b := range yyq867 { + if b { + yynn867++ + } + } + r.EncodeMapStart(yynn867) + yynn867 = 0 + } + if yyr867 || yy2arr867 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym869 := z.EncBinary() + _ = yym869 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("endpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym870 := z.EncBinary() + _ = yym870 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } + if yyr867 || yy2arr867 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym872 := z.EncBinary() + _ = yym872 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym873 := z.EncBinary() + _ = yym873 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr867 || yy2arr867 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq867[2] { + yym875 := z.EncBinary() + _ = yym875 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq867[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym876 := z.EncBinary() + _ = yym876 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr867 || yy2arr867 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GlusterfsVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym877 := z.DecBinary() + _ = yym877 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct878 := r.ContainerType() + if yyct878 == codecSelferValueTypeMap1234 { + yyl878 := r.ReadMapStart() + if yyl878 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl878, d) + } + } else if yyct878 == codecSelferValueTypeArray1234 { + yyl878 := r.ReadArrayStart() + if yyl878 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl878, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys879Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys879Slc + var yyhl879 bool = l >= 0 + for yyj879 := 0; ; yyj879++ { + if yyhl879 { + if yyj879 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys879Slc = r.DecodeBytes(yys879Slc, true, true) + yys879 := string(yys879Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys879 { + case "endpoints": + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + x.EndpointsName = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys879) + } // end switch yys879 + } // end for yyj879 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj883 int + var yyb883 bool + var yyhl883 bool = l >= 0 + yyj883++ + if yyhl883 { + yyb883 = yyj883 > l + } else { + yyb883 = r.CheckBreak() + } + if yyb883 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + x.EndpointsName = string(r.DecodeString()) + } + yyj883++ + if yyhl883 { + yyb883 = yyj883 > l + } else { + yyb883 = r.CheckBreak() + } + if yyb883 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj883++ + if yyhl883 { + yyb883 = yyj883 > l + } else { + yyb883 = r.CheckBreak() + } + if yyb883 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj883++ + if yyhl883 { + yyb883 = yyj883 > l + } else { + yyb883 = r.CheckBreak() + } + if yyb883 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj883-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RBDVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym887 := z.EncBinary() + _ = yym887 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep888 := !z.EncBinary() + yy2arr888 := z.EncBasicHandle().StructToArray + var yyq888 [8]bool + _, _, _ = yysep888, yyq888, yy2arr888 + const yyr888 bool = false + yyq888[2] = x.FSType != "" + yyq888[3] = x.RBDPool != "" + yyq888[4] = x.RadosUser != "" + yyq888[5] = x.Keyring != "" + yyq888[6] = x.SecretRef != nil + yyq888[7] = x.ReadOnly != false + var yynn888 int + if yyr888 || yy2arr888 { + r.EncodeArrayStart(8) + } else { + yynn888 = 2 + for _, b := range yyq888 { + if b { + yynn888++ + } + } + r.EncodeMapStart(yynn888) + yynn888 = 0 + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym890 := z.EncBinary() + _ = yym890 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym891 := z.EncBinary() + _ = yym891 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym893 := z.EncBinary() + _ = yym893 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym894 := z.EncBinary() + _ = yym894 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[2] { + yym896 := z.EncBinary() + _ = yym896 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq888[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym897 := z.EncBinary() + _ = yym897 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[3] { + yym899 := z.EncBinary() + _ = yym899 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq888[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pool")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym900 := z.EncBinary() + _ = yym900 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[4] { + yym902 := z.EncBinary() + _ = yym902 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq888[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym903 := z.EncBinary() + _ = yym903 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[5] { + yym905 := z.EncBinary() + _ = yym905 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq888[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("keyring")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym906 := z.EncBinary() + _ = yym906 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[6] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq888[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq888[7] { + yym909 := z.EncBinary() + _ = yym909 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq888[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym910 := z.EncBinary() + _ = yym910 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr888 || yy2arr888 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RBDVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym911 := z.DecBinary() + _ = yym911 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct912 := r.ContainerType() + if yyct912 == codecSelferValueTypeMap1234 { + yyl912 := r.ReadMapStart() + if yyl912 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl912, d) + } + } else if yyct912 == codecSelferValueTypeArray1234 { + yyl912 := r.ReadArrayStart() + if yyl912 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl912, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RBDVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys913Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys913Slc + var yyhl913 bool = l >= 0 + for yyj913 := 0; ; yyj913++ { + if yyhl913 { + if yyj913 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys913Slc = r.DecodeBytes(yys913Slc, true, true) + yys913 := string(yys913Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys913 { + case "monitors": + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv914 := &x.CephMonitors + yym915 := z.DecBinary() + _ = yym915 + if false { + } else { + z.F.DecSliceStringX(yyv914, false, d) + } + } + case "image": + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + x.RBDImage = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "pool": + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + x.RBDPool = string(r.DecodeString()) + } + case "user": + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + x.RadosUser = string(r.DecodeString()) + } + case "keyring": + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + x.Keyring = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys913) + } // end switch yys913 + } // end for yyj913 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RBDVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj923 int + var yyb923 bool + var yyhl923 bool = l >= 0 + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv924 := &x.CephMonitors + yym925 := z.DecBinary() + _ = yym925 + if false { + } else { + z.F.DecSliceStringX(yyv924, false, d) + } + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + x.RBDImage = string(r.DecodeString()) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + x.RBDPool = string(r.DecodeString()) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + x.RadosUser = string(r.DecodeString()) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + x.Keyring = string(r.DecodeString()) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj923++ + if yyhl923 { + yyb923 = yyj923 > l + } else { + yyb923 = r.CheckBreak() + } + if yyb923 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj923-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CinderVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym933 := z.EncBinary() + _ = yym933 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep934 := !z.EncBinary() + yy2arr934 := z.EncBasicHandle().StructToArray + var yyq934 [3]bool + _, _, _ = yysep934, yyq934, yy2arr934 + const yyr934 bool = false + yyq934[1] = x.FSType != "" + yyq934[2] = x.ReadOnly != false + var yynn934 int + if yyr934 || yy2arr934 { + r.EncodeArrayStart(3) + } else { + yynn934 = 1 + for _, b := range yyq934 { + if b { + yynn934++ + } + } + r.EncodeMapStart(yynn934) + yynn934 = 0 + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym936 := z.EncBinary() + _ = yym936 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym937 := z.EncBinary() + _ = yym937 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq934[1] { + yym939 := z.EncBinary() + _ = yym939 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq934[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym940 := z.EncBinary() + _ = yym940 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq934[2] { + yym942 := z.EncBinary() + _ = yym942 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq934[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym943 := z.EncBinary() + _ = yym943 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CinderVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym944 := z.DecBinary() + _ = yym944 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct945 := r.ContainerType() + if yyct945 == codecSelferValueTypeMap1234 { + yyl945 := r.ReadMapStart() + if yyl945 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl945, d) + } + } else if yyct945 == codecSelferValueTypeArray1234 { + yyl945 := r.ReadArrayStart() + if yyl945 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl945, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CinderVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys946Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys946Slc + var yyhl946 bool = l >= 0 + for yyj946 := 0; ; yyj946++ { + if yyhl946 { + if yyj946 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys946Slc = r.DecodeBytes(yys946Slc, true, true) + yys946 := string(yys946Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys946 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys946) + } // end switch yys946 + } // end for yyj946 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CinderVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj950 int + var yyb950 bool + var yyhl950 bool = l >= 0 + yyj950++ + if yyhl950 { + yyb950 = yyj950 > l + } else { + yyb950 = r.CheckBreak() + } + if yyb950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + yyj950++ + if yyhl950 { + yyb950 = yyj950 > l + } else { + yyb950 = r.CheckBreak() + } + if yyb950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj950++ + if yyhl950 { + yyb950 = yyj950 > l + } else { + yyb950 = r.CheckBreak() + } + if yyb950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj950++ + if yyhl950 { + yyb950 = yyj950 > l + } else { + yyb950 = r.CheckBreak() + } + if yyb950 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj950-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CephFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym954 := z.EncBinary() + _ = yym954 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep955 := !z.EncBinary() + yy2arr955 := z.EncBasicHandle().StructToArray + var yyq955 [6]bool + _, _, _ = yysep955, yyq955, yy2arr955 + const yyr955 bool = false + yyq955[1] = x.Path != "" + yyq955[2] = x.User != "" + yyq955[3] = x.SecretFile != "" + yyq955[4] = x.SecretRef != nil + yyq955[5] = x.ReadOnly != false + var yynn955 int + if yyr955 || yy2arr955 { + r.EncodeArrayStart(6) + } else { + yynn955 = 1 + for _, b := range yyq955 { + if b { + yynn955++ + } + } + r.EncodeMapStart(yynn955) + yynn955 = 0 + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym957 := z.EncBinary() + _ = yym957 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym958 := z.EncBinary() + _ = yym958 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq955[1] { + yym960 := z.EncBinary() + _ = yym960 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq955[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym961 := z.EncBinary() + _ = yym961 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq955[2] { + yym963 := z.EncBinary() + _ = yym963 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq955[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym964 := z.EncBinary() + _ = yym964 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq955[3] { + yym966 := z.EncBinary() + _ = yym966 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq955[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym967 := z.EncBinary() + _ = yym967 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq955[4] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq955[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq955[5] { + yym970 := z.EncBinary() + _ = yym970 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq955[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym971 := z.EncBinary() + _ = yym971 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr955 || yy2arr955 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CephFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym972 := z.DecBinary() + _ = yym972 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct973 := r.ContainerType() + if yyct973 == codecSelferValueTypeMap1234 { + yyl973 := r.ReadMapStart() + if yyl973 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl973, d) + } + } else if yyct973 == codecSelferValueTypeArray1234 { + yyl973 := r.ReadArrayStart() + if yyl973 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl973, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys974Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys974Slc + var yyhl974 bool = l >= 0 + for yyj974 := 0; ; yyj974++ { + if yyhl974 { + if yyj974 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys974Slc = r.DecodeBytes(yys974Slc, true, true) + yys974 := string(yys974Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys974 { + case "monitors": + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv975 := &x.Monitors + yym976 := z.DecBinary() + _ = yym976 + if false { + } else { + z.F.DecSliceStringX(yyv975, false, d) + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "secretFile": + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + x.SecretFile = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys974) + } // end switch yys974 + } // end for yyj974 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj982 int + var yyb982 bool + var yyhl982 bool = l >= 0 + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv983 := &x.Monitors + yym984 := z.DecBinary() + _ = yym984 + if false { + } else { + z.F.DecSliceStringX(yyv983, false, d) + } + } + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + x.SecretFile = string(r.DecodeString()) + } + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj982++ + if yyhl982 { + yyb982 = yyj982 > l + } else { + yyb982 = r.CheckBreak() + } + if yyb982 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj982-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlockerVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym990 := z.EncBinary() + _ = yym990 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep991 := !z.EncBinary() + yy2arr991 := z.EncBasicHandle().StructToArray + var yyq991 [1]bool + _, _, _ = yysep991, yyq991, yy2arr991 + const yyr991 bool = false + var yynn991 int + if yyr991 || yy2arr991 { + r.EncodeArrayStart(1) + } else { + yynn991 = 1 + for _, b := range yyq991 { + if b { + yynn991++ + } + } + r.EncodeMapStart(yynn991) + yynn991 = 0 + } + if yyr991 || yy2arr991 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym993 := z.EncBinary() + _ = yym993 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("datasetName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym994 := z.EncBinary() + _ = yym994 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } + if yyr991 || yy2arr991 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlockerVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym995 := z.DecBinary() + _ = yym995 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct996 := r.ContainerType() + if yyct996 == codecSelferValueTypeMap1234 { + yyl996 := r.ReadMapStart() + if yyl996 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl996, d) + } + } else if yyct996 == codecSelferValueTypeArray1234 { + yyl996 := r.ReadArrayStart() + if yyl996 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl996, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys997Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys997Slc + var yyhl997 bool = l >= 0 + for yyj997 := 0; ; yyj997++ { + if yyhl997 { + if yyj997 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys997Slc = r.DecodeBytes(yys997Slc, true, true) + yys997 := string(yys997Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys997 { + case "datasetName": + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + x.DatasetName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys997) + } // end switch yys997 + } // end for yyj997 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj999 int + var yyb999 bool + var yyhl999 bool = l >= 0 + yyj999++ + if yyhl999 { + yyb999 = yyj999 > l + } else { + yyb999 = r.CheckBreak() + } + if yyb999 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + x.DatasetName = string(r.DecodeString()) + } + for { + yyj999++ + if yyhl999 { + yyb999 = yyj999 > l + } else { + yyb999 = r.CheckBreak() + } + if yyb999 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj999-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1001 := z.EncBinary() + _ = yym1001 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1002 := !z.EncBinary() + yy2arr1002 := z.EncBasicHandle().StructToArray + var yyq1002 [2]bool + _, _, _ = yysep1002, yyq1002, yy2arr1002 + const yyr1002 bool = false + yyq1002[0] = len(x.Items) != 0 + yyq1002[1] = x.DefaultMode != nil + var yynn1002 int + if yyr1002 || yy2arr1002 { + r.EncodeArrayStart(2) + } else { + yynn1002 = 0 + for _, b := range yyq1002 { + if b { + yynn1002++ + } + } + r.EncodeMapStart(yynn1002) + yynn1002 = 0 + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1002[0] { + if x.Items == nil { + r.EncodeNil() + } else { + yym1004 := z.EncBinary() + _ = yym1004 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1002[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1005 := z.EncBinary() + _ = yym1005 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1002[1] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1007 := *x.DefaultMode + yym1008 := z.EncBinary() + _ = yym1008 + if false { + } else { + r.EncodeInt(int64(yy1007)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1002[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1009 := *x.DefaultMode + yym1010 := z.EncBinary() + _ = yym1010 + if false { + } else { + r.EncodeInt(int64(yy1009)) + } + } + } + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1011 := z.DecBinary() + _ = yym1011 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1012 := r.ContainerType() + if yyct1012 == codecSelferValueTypeMap1234 { + yyl1012 := r.ReadMapStart() + if yyl1012 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1012, d) + } + } else if yyct1012 == codecSelferValueTypeArray1234 { + yyl1012 := r.ReadArrayStart() + if yyl1012 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1012, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1013Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1013Slc + var yyhl1013 bool = l >= 0 + for yyj1013 := 0; ; yyj1013++ { + if yyhl1013 { + if yyj1013 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1013Slc = r.DecodeBytes(yys1013Slc, true, true) + yys1013 := string(yys1013Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1013 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1014 := &x.Items + yym1015 := z.DecBinary() + _ = yym1015 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv1014), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1017 := z.DecBinary() + _ = yym1017 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1013) + } // end switch yys1013 + } // end for yyj1013 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1018 int + var yyb1018 bool + var yyhl1018 bool = l >= 0 + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1019 := &x.Items + yym1020 := z.DecBinary() + _ = yym1020 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv1019), d) + } + } + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1022 := z.DecBinary() + _ = yym1022 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1018-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeFile) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1023 := z.EncBinary() + _ = yym1023 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1024 := !z.EncBinary() + yy2arr1024 := z.EncBasicHandle().StructToArray + var yyq1024 [4]bool + _, _, _ = yysep1024, yyq1024, yy2arr1024 + const yyr1024 bool = false + yyq1024[1] = x.FieldRef != nil + yyq1024[2] = x.ResourceFieldRef != nil + yyq1024[3] = x.Mode != nil + var yynn1024 int + if yyr1024 || yy2arr1024 { + r.EncodeArrayStart(4) + } else { + yynn1024 = 1 + for _, b := range yyq1024 { + if b { + yynn1024++ + } + } + r.EncodeMapStart(yynn1024) + yynn1024 = 0 + } + if yyr1024 || yy2arr1024 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1026 := z.EncBinary() + _ = yym1026 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1027 := z.EncBinary() + _ = yym1027 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr1024 || yy2arr1024 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1024[1] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1024[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1024 || yy2arr1024 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1024[2] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1024[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1024 || yy2arr1024 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1024[3] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy1031 := *x.Mode + yym1032 := z.EncBinary() + _ = yym1032 + if false { + } else { + r.EncodeInt(int64(yy1031)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1024[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy1033 := *x.Mode + yym1034 := z.EncBinary() + _ = yym1034 + if false { + } else { + r.EncodeInt(int64(yy1033)) + } + } + } + } + if yyr1024 || yy2arr1024 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeFile) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1035 := z.DecBinary() + _ = yym1035 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1036 := r.ContainerType() + if yyct1036 == codecSelferValueTypeMap1234 { + yyl1036 := r.ReadMapStart() + if yyl1036 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1036, d) + } + } else if yyct1036 == codecSelferValueTypeArray1234 { + yyl1036 := r.ReadArrayStart() + if yyl1036 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1036, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1037Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1037Slc + var yyhl1037 bool = l >= 0 + for yyj1037 := 0; ; yyj1037++ { + if yyhl1037 { + if yyj1037 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1037Slc = r.DecodeBytes(yys1037Slc, true, true) + yys1037 := string(yys1037Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1037 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1042 := z.DecBinary() + _ = yym1042 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1037) + } // end switch yys1037 + } // end for yyj1037 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1043 int + var yyb1043 bool + var yyhl1043 bool = l >= 0 + yyj1043++ + if yyhl1043 { + yyb1043 = yyj1043 > l + } else { + yyb1043 = r.CheckBreak() + } + if yyb1043 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1043++ + if yyhl1043 { + yyb1043 = yyj1043 > l + } else { + yyb1043 = r.CheckBreak() + } + if yyb1043 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj1043++ + if yyhl1043 { + yyb1043 = yyj1043 > l + } else { + yyb1043 = r.CheckBreak() + } + if yyb1043 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj1043++ + if yyhl1043 { + yyb1043 = yyj1043 > l + } else { + yyb1043 = r.CheckBreak() + } + if yyb1043 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1048 := z.DecBinary() + _ = yym1048 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1043++ + if yyhl1043 { + yyb1043 = yyj1043 > l + } else { + yyb1043 = r.CheckBreak() + } + if yyb1043 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1043-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AzureFileVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1049 := z.EncBinary() + _ = yym1049 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1050 := !z.EncBinary() + yy2arr1050 := z.EncBasicHandle().StructToArray + var yyq1050 [3]bool + _, _, _ = yysep1050, yyq1050, yy2arr1050 + const yyr1050 bool = false + yyq1050[2] = x.ReadOnly != false + var yynn1050 int + if yyr1050 || yy2arr1050 { + r.EncodeArrayStart(3) + } else { + yynn1050 = 2 + for _, b := range yyq1050 { + if b { + yynn1050++ + } + } + r.EncodeMapStart(yynn1050) + yynn1050 = 0 + } + if yyr1050 || yy2arr1050 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1052 := z.EncBinary() + _ = yym1052 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1053 := z.EncBinary() + _ = yym1053 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + if yyr1050 || yy2arr1050 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1055 := z.EncBinary() + _ = yym1055 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("shareName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1056 := z.EncBinary() + _ = yym1056 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } + if yyr1050 || yy2arr1050 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1050[2] { + yym1058 := z.EncBinary() + _ = yym1058 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1050[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1059 := z.EncBinary() + _ = yym1059 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr1050 || yy2arr1050 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureFileVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1060 := z.DecBinary() + _ = yym1060 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1061 := r.ContainerType() + if yyct1061 == codecSelferValueTypeMap1234 { + yyl1061 := r.ReadMapStart() + if yyl1061 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1061, d) + } + } else if yyct1061 == codecSelferValueTypeArray1234 { + yyl1061 := r.ReadArrayStart() + if yyl1061 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1061, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1062Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1062Slc + var yyhl1062 bool = l >= 0 + for yyj1062 := 0; ; yyj1062++ { + if yyhl1062 { + if yyj1062 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1062Slc = r.DecodeBytes(yys1062Slc, true, true) + yys1062 := string(yys1062Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1062 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + case "shareName": + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + x.ShareName = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1062) + } // end switch yys1062 + } // end for yyj1062 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1066 int + var yyb1066 bool + var yyhl1066 bool = l >= 0 + yyj1066++ + if yyhl1066 { + yyb1066 = yyj1066 > l + } else { + yyb1066 = r.CheckBreak() + } + if yyb1066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + yyj1066++ + if yyhl1066 { + yyb1066 = yyj1066 > l + } else { + yyb1066 = r.CheckBreak() + } + if yyb1066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + x.ShareName = string(r.DecodeString()) + } + yyj1066++ + if yyhl1066 { + yyb1066 = yyj1066 > l + } else { + yyb1066 = r.CheckBreak() + } + if yyb1066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj1066++ + if yyhl1066 { + yyb1066 = yyj1066 > l + } else { + yyb1066 = r.CheckBreak() + } + if yyb1066 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1066-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1070 := z.EncBinary() + _ = yym1070 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1071 := !z.EncBinary() + yy2arr1071 := z.EncBasicHandle().StructToArray + var yyq1071 [2]bool + _, _, _ = yysep1071, yyq1071, yy2arr1071 + const yyr1071 bool = false + yyq1071[1] = x.FSType != "" + var yynn1071 int + if yyr1071 || yy2arr1071 { + r.EncodeArrayStart(2) + } else { + yynn1071 = 1 + for _, b := range yyq1071 { + if b { + yynn1071++ + } + } + r.EncodeMapStart(yynn1071) + yynn1071 = 0 + } + if yyr1071 || yy2arr1071 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1073 := z.EncBinary() + _ = yym1073 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1074 := z.EncBinary() + _ = yym1074 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } + if yyr1071 || yy2arr1071 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1071[1] { + yym1076 := z.EncBinary() + _ = yym1076 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1071[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1077 := z.EncBinary() + _ = yym1077 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr1071 || yy2arr1071 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1078 := z.DecBinary() + _ = yym1078 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1079 := r.ContainerType() + if yyct1079 == codecSelferValueTypeMap1234 { + yyl1079 := r.ReadMapStart() + if yyl1079 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1079, d) + } + } else if yyct1079 == codecSelferValueTypeArray1234 { + yyl1079 := r.ReadArrayStart() + if yyl1079 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1079, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1080Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1080Slc + var yyhl1080 bool = l >= 0 + for yyj1080 := 0; ; yyj1080++ { + if yyhl1080 { + if yyj1080 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1080Slc = r.DecodeBytes(yys1080Slc, true, true) + yys1080 := string(yys1080Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1080 { + case "volumePath": + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + x.VolumePath = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1080) + } // end switch yys1080 + } // end for yyj1080 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1083 int + var yyb1083 bool + var yyhl1083 bool = l >= 0 + yyj1083++ + if yyhl1083 { + yyb1083 = yyj1083 > l + } else { + yyb1083 = r.CheckBreak() + } + if yyb1083 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + x.VolumePath = string(r.DecodeString()) + } + yyj1083++ + if yyhl1083 { + yyb1083 = yyj1083 > l + } else { + yyb1083 = r.CheckBreak() + } + if yyb1083 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + for { + yyj1083++ + if yyhl1083 { + yyb1083 = yyj1083 > l + } else { + yyb1083 = r.CheckBreak() + } + if yyb1083 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1083-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x AzureDataDiskCachingMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1086 := z.EncBinary() + _ = yym1086 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *AzureDataDiskCachingMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1087 := z.DecBinary() + _ = yym1087 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AzureDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1088 := z.EncBinary() + _ = yym1088 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1089 := !z.EncBinary() + yy2arr1089 := z.EncBasicHandle().StructToArray + var yyq1089 [5]bool + _, _, _ = yysep1089, yyq1089, yy2arr1089 + const yyr1089 bool = false + yyq1089[2] = x.CachingMode != nil + yyq1089[3] = x.FSType != nil + yyq1089[4] = x.ReadOnly != nil + var yynn1089 int + if yyr1089 || yy2arr1089 { + r.EncodeArrayStart(5) + } else { + yynn1089 = 2 + for _, b := range yyq1089 { + if b { + yynn1089++ + } + } + r.EncodeMapStart(yynn1089) + yynn1089 = 0 + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1091 := z.EncBinary() + _ = yym1091 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1092 := z.EncBinary() + _ = yym1092 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1094 := z.EncBinary() + _ = yym1094 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskURI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1095 := z.EncBinary() + _ = yym1095 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1089[2] { + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy1097 := *x.CachingMode + yy1097.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1089[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cachingMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy1098 := *x.CachingMode + yy1098.CodecEncodeSelf(e) + } + } + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1089[3] { + if x.FSType == nil { + r.EncodeNil() + } else { + yy1100 := *x.FSType + yym1101 := z.EncBinary() + _ = yym1101 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1100)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1089[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSType == nil { + r.EncodeNil() + } else { + yy1102 := *x.FSType + yym1103 := z.EncBinary() + _ = yym1103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1102)) + } + } + } + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1089[4] { + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy1105 := *x.ReadOnly + yym1106 := z.EncBinary() + _ = yym1106 + if false { + } else { + r.EncodeBool(bool(yy1105)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1089[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy1107 := *x.ReadOnly + yym1108 := z.EncBinary() + _ = yym1108 + if false { + } else { + r.EncodeBool(bool(yy1107)) + } + } + } + } + if yyr1089 || yy2arr1089 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1109 := z.DecBinary() + _ = yym1109 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1110 := r.ContainerType() + if yyct1110 == codecSelferValueTypeMap1234 { + yyl1110 := r.ReadMapStart() + if yyl1110 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1110, d) + } + } else if yyct1110 == codecSelferValueTypeArray1234 { + yyl1110 := r.ReadArrayStart() + if yyl1110 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1110, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1111Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1111Slc + var yyhl1111 bool = l >= 0 + for yyj1111 := 0; ; yyj1111++ { + if yyhl1111 { + if yyj1111 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1111Slc = r.DecodeBytes(yys1111Slc, true, true) + yys1111 := string(yys1111Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1111 { + case "diskName": + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + x.DiskName = string(r.DecodeString()) + } + case "diskURI": + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + x.DataDiskURI = string(r.DecodeString()) + } + case "cachingMode": + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + case "fsType": + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym1116 := z.DecBinary() + _ = yym1116 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym1118 := z.DecBinary() + _ = yym1118 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys1111) + } // end switch yys1111 + } // end for yyj1111 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1119 int + var yyb1119 bool + var yyhl1119 bool = l >= 0 + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + x.DiskName = string(r.DecodeString()) + } + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + x.DataDiskURI = string(r.DecodeString()) + } + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym1124 := z.DecBinary() + _ = yym1124 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym1126 := z.DecBinary() + _ = yym1126 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + for { + yyj1119++ + if yyhl1119 { + yyb1119 = yyj1119 > l + } else { + yyb1119 = r.CheckBreak() + } + if yyb1119 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1119-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1127 := z.EncBinary() + _ = yym1127 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1128 := !z.EncBinary() + yy2arr1128 := z.EncBasicHandle().StructToArray + var yyq1128 [3]bool + _, _, _ = yysep1128, yyq1128, yy2arr1128 + const yyr1128 bool = false + yyq1128[1] = len(x.Items) != 0 + yyq1128[2] = x.DefaultMode != nil + var yynn1128 int + if yyr1128 || yy2arr1128 { + r.EncodeArrayStart(3) + } else { + yynn1128 = 1 + for _, b := range yyq1128 { + if b { + yynn1128++ + } + } + r.EncodeMapStart(yynn1128) + yynn1128 = 0 + } + if yyr1128 || yy2arr1128 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1130 := z.EncBinary() + _ = yym1130 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1131 := z.EncBinary() + _ = yym1131 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1128 || yy2arr1128 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1128[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym1133 := z.EncBinary() + _ = yym1133 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1128[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1134 := z.EncBinary() + _ = yym1134 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr1128 || yy2arr1128 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1128[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1136 := *x.DefaultMode + yym1137 := z.EncBinary() + _ = yym1137 + if false { + } else { + r.EncodeInt(int64(yy1136)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1128[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1138 := *x.DefaultMode + yym1139 := z.EncBinary() + _ = yym1139 + if false { + } else { + r.EncodeInt(int64(yy1138)) + } + } + } + } + if yyr1128 || yy2arr1128 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1140 := z.DecBinary() + _ = yym1140 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1141 := r.ContainerType() + if yyct1141 == codecSelferValueTypeMap1234 { + yyl1141 := r.ReadMapStart() + if yyl1141 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1141, d) + } + } else if yyct1141 == codecSelferValueTypeArray1234 { + yyl1141 := r.ReadArrayStart() + if yyl1141 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1141, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1142Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1142Slc + var yyhl1142 bool = l >= 0 + for yyj1142 := 0; ; yyj1142++ { + if yyhl1142 { + if yyj1142 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1142Slc = r.DecodeBytes(yys1142Slc, true, true) + yys1142 := string(yys1142Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1142 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1144 := &x.Items + yym1145 := z.DecBinary() + _ = yym1145 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv1144), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1147 := z.DecBinary() + _ = yym1147 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1142) + } // end switch yys1142 + } // end for yyj1142 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1148 int + var yyb1148 bool + var yyhl1148 bool = l >= 0 + yyj1148++ + if yyhl1148 { + yyb1148 = yyj1148 > l + } else { + yyb1148 = r.CheckBreak() + } + if yyb1148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1148++ + if yyhl1148 { + yyb1148 = yyj1148 > l + } else { + yyb1148 = r.CheckBreak() + } + if yyb1148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1150 := &x.Items + yym1151 := z.DecBinary() + _ = yym1151 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv1150), d) + } + } + yyj1148++ + if yyhl1148 { + yyb1148 = yyj1148 > l + } else { + yyb1148 = r.CheckBreak() + } + if yyb1148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1153 := z.DecBinary() + _ = yym1153 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1148++ + if yyhl1148 { + yyb1148 = yyj1148 > l + } else { + yyb1148 = r.CheckBreak() + } + if yyb1148 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1148-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *KeyToPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1154 := z.EncBinary() + _ = yym1154 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1155 := !z.EncBinary() + yy2arr1155 := z.EncBasicHandle().StructToArray + var yyq1155 [3]bool + _, _, _ = yysep1155, yyq1155, yy2arr1155 + const yyr1155 bool = false + yyq1155[2] = x.Mode != nil + var yynn1155 int + if yyr1155 || yy2arr1155 { + r.EncodeArrayStart(3) + } else { + yynn1155 = 2 + for _, b := range yyq1155 { + if b { + yynn1155++ + } + } + r.EncodeMapStart(yynn1155) + yynn1155 = 0 + } + if yyr1155 || yy2arr1155 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1157 := z.EncBinary() + _ = yym1157 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1158 := z.EncBinary() + _ = yym1158 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1155 || yy2arr1155 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1160 := z.EncBinary() + _ = yym1160 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1161 := z.EncBinary() + _ = yym1161 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr1155 || yy2arr1155 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1155[2] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy1163 := *x.Mode + yym1164 := z.EncBinary() + _ = yym1164 + if false { + } else { + r.EncodeInt(int64(yy1163)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1155[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy1165 := *x.Mode + yym1166 := z.EncBinary() + _ = yym1166 + if false { + } else { + r.EncodeInt(int64(yy1165)) + } + } + } + } + if yyr1155 || yy2arr1155 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *KeyToPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1167 := z.DecBinary() + _ = yym1167 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1168 := r.ContainerType() + if yyct1168 == codecSelferValueTypeMap1234 { + yyl1168 := r.ReadMapStart() + if yyl1168 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1168, d) + } + } else if yyct1168 == codecSelferValueTypeArray1234 { + yyl1168 := r.ReadArrayStart() + if yyl1168 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1168, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *KeyToPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1169Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1169Slc + var yyhl1169 bool = l >= 0 + for yyj1169 := 0; ; yyj1169++ { + if yyhl1169 { + if yyj1169 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1169Slc = r.DecodeBytes(yys1169Slc, true, true) + yys1169 := string(yys1169Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1169 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1173 := z.DecBinary() + _ = yym1173 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1169) + } // end switch yys1169 + } // end for yyj1169 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *KeyToPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1174 int + var yyb1174 bool + var yyhl1174 bool = l >= 0 + yyj1174++ + if yyhl1174 { + yyb1174 = yyj1174 > l + } else { + yyb1174 = r.CheckBreak() + } + if yyb1174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1174++ + if yyhl1174 { + yyb1174 = yyj1174 > l + } else { + yyb1174 = r.CheckBreak() + } + if yyb1174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1174++ + if yyhl1174 { + yyb1174 = yyj1174 > l + } else { + yyb1174 = r.CheckBreak() + } + if yyb1174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1178 := z.DecBinary() + _ = yym1178 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1174++ + if yyhl1174 { + yyb1174 = yyj1174 > l + } else { + yyb1174 = r.CheckBreak() + } + if yyb1174 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1174-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1179 := z.EncBinary() + _ = yym1179 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1180 := !z.EncBinary() + yy2arr1180 := z.EncBasicHandle().StructToArray + var yyq1180 [5]bool + _, _, _ = yysep1180, yyq1180, yy2arr1180 + const yyr1180 bool = false + yyq1180[0] = x.Name != "" + yyq1180[1] = x.HostPort != 0 + yyq1180[3] = x.Protocol != "" + yyq1180[4] = x.HostIP != "" + var yynn1180 int + if yyr1180 || yy2arr1180 { + r.EncodeArrayStart(5) + } else { + yynn1180 = 1 + for _, b := range yyq1180 { + if b { + yynn1180++ + } + } + r.EncodeMapStart(yynn1180) + yynn1180 = 0 + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1180[0] { + yym1182 := z.EncBinary() + _ = yym1182 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1180[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1183 := z.EncBinary() + _ = yym1183 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1180[1] { + yym1185 := z.EncBinary() + _ = yym1185 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1180[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1186 := z.EncBinary() + _ = yym1186 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1188 := z.EncBinary() + _ = yym1188 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1189 := z.EncBinary() + _ = yym1189 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1180[3] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1180[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1180[4] { + yym1192 := z.EncBinary() + _ = yym1192 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1180[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1193 := z.EncBinary() + _ = yym1193 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr1180 || yy2arr1180 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1194 := z.DecBinary() + _ = yym1194 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1195 := r.ContainerType() + if yyct1195 == codecSelferValueTypeMap1234 { + yyl1195 := r.ReadMapStart() + if yyl1195 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1195, d) + } + } else if yyct1195 == codecSelferValueTypeArray1234 { + yyl1195 := r.ReadArrayStart() + if yyl1195 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1195, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1196Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1196Slc + var yyhl1196 bool = l >= 0 + for yyj1196 := 0; ; yyj1196++ { + if yyhl1196 { + if yyj1196 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1196Slc = r.DecodeBytes(yys1196Slc, true, true) + yys1196 := string(yys1196Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1196 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "hostPort": + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + x.HostPort = int32(r.DecodeInt(32)) + } + case "containerPort": + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + x.ContainerPort = int32(r.DecodeInt(32)) + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1196) + } // end switch yys1196 + } // end for yyj1196 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1202 int + var yyb1202 bool + var yyhl1202 bool = l >= 0 + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + x.HostPort = int32(r.DecodeInt(32)) + } + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + x.ContainerPort = int32(r.DecodeInt(32)) + } + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + for { + yyj1202++ + if yyhl1202 { + yyb1202 = yyj1202 > l + } else { + yyb1202 = r.CheckBreak() + } + if yyb1202 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1202-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeMount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1208 := z.EncBinary() + _ = yym1208 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1209 := !z.EncBinary() + yy2arr1209 := z.EncBasicHandle().StructToArray + var yyq1209 [4]bool + _, _, _ = yysep1209, yyq1209, yy2arr1209 + const yyr1209 bool = false + yyq1209[1] = x.ReadOnly != false + yyq1209[3] = x.SubPath != "" + var yynn1209 int + if yyr1209 || yy2arr1209 { + r.EncodeArrayStart(4) + } else { + yynn1209 = 2 + for _, b := range yyq1209 { + if b { + yynn1209++ + } + } + r.EncodeMapStart(yynn1209) + yynn1209 = 0 + } + if yyr1209 || yy2arr1209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1211 := z.EncBinary() + _ = yym1211 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1212 := z.EncBinary() + _ = yym1212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1209 || yy2arr1209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1209[1] { + yym1214 := z.EncBinary() + _ = yym1214 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1209[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1215 := z.EncBinary() + _ = yym1215 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr1209 || yy2arr1209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1217 := z.EncBinary() + _ = yym1217 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mountPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1218 := z.EncBinary() + _ = yym1218 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } + if yyr1209 || yy2arr1209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1209[3] { + yym1220 := z.EncBinary() + _ = yym1220 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1209[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1221 := z.EncBinary() + _ = yym1221 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } + } + if yyr1209 || yy2arr1209 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeMount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1222 := z.DecBinary() + _ = yym1222 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1223 := r.ContainerType() + if yyct1223 == codecSelferValueTypeMap1234 { + yyl1223 := r.ReadMapStart() + if yyl1223 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1223, d) + } + } else if yyct1223 == codecSelferValueTypeArray1234 { + yyl1223 := r.ReadArrayStart() + if yyl1223 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1223, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeMount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1224Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1224Slc + var yyhl1224 bool = l >= 0 + for yyj1224 := 0; ; yyj1224++ { + if yyhl1224 { + if yyj1224 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1224Slc = r.DecodeBytes(yys1224Slc, true, true) + yys1224 := string(yys1224Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1224 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "mountPath": + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + x.MountPath = string(r.DecodeString()) + } + case "subPath": + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + x.SubPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1224) + } // end switch yys1224 + } // end for yyj1224 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeMount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1229 int + var yyb1229 bool + var yyhl1229 bool = l >= 0 + yyj1229++ + if yyhl1229 { + yyb1229 = yyj1229 > l + } else { + yyb1229 = r.CheckBreak() + } + if yyb1229 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1229++ + if yyhl1229 { + yyb1229 = yyj1229 > l + } else { + yyb1229 = r.CheckBreak() + } + if yyb1229 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj1229++ + if yyhl1229 { + yyb1229 = yyj1229 > l + } else { + yyb1229 = r.CheckBreak() + } + if yyb1229 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + x.MountPath = string(r.DecodeString()) + } + yyj1229++ + if yyhl1229 { + yyb1229 = yyj1229 > l + } else { + yyb1229 = r.CheckBreak() + } + if yyb1229 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + x.SubPath = string(r.DecodeString()) + } + for { + yyj1229++ + if yyhl1229 { + yyb1229 = yyj1229 > l + } else { + yyb1229 = r.CheckBreak() + } + if yyb1229 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1229-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVar) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1234 := z.EncBinary() + _ = yym1234 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1235 := !z.EncBinary() + yy2arr1235 := z.EncBasicHandle().StructToArray + var yyq1235 [3]bool + _, _, _ = yysep1235, yyq1235, yy2arr1235 + const yyr1235 bool = false + yyq1235[1] = x.Value != "" + yyq1235[2] = x.ValueFrom != nil + var yynn1235 int + if yyr1235 || yy2arr1235 { + r.EncodeArrayStart(3) + } else { + yynn1235 = 1 + for _, b := range yyq1235 { + if b { + yynn1235++ + } + } + r.EncodeMapStart(yynn1235) + yynn1235 = 0 + } + if yyr1235 || yy2arr1235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1237 := z.EncBinary() + _ = yym1237 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1238 := z.EncBinary() + _ = yym1238 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1235 || yy2arr1235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1235[1] { + yym1240 := z.EncBinary() + _ = yym1240 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1235[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1241 := z.EncBinary() + _ = yym1241 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr1235 || yy2arr1235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1235[2] { + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1235[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("valueFrom")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } + } + if yyr1235 || yy2arr1235 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVar) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1243 := z.DecBinary() + _ = yym1243 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1244 := r.ContainerType() + if yyct1244 == codecSelferValueTypeMap1234 { + yyl1244 := r.ReadMapStart() + if yyl1244 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1244, d) + } + } else if yyct1244 == codecSelferValueTypeArray1234 { + yyl1244 := r.ReadArrayStart() + if yyl1244 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1244, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVar) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1245Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1245Slc + var yyhl1245 bool = l >= 0 + for yyj1245 := 0; ; yyj1245++ { + if yyhl1245 { + if yyj1245 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1245Slc = r.DecodeBytes(yys1245Slc, true, true) + yys1245 := string(yys1245Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1245 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "valueFrom": + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1245) + } // end switch yys1245 + } // end for yyj1245 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVar) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1249 int + var yyb1249 bool + var yyhl1249 bool = l >= 0 + yyj1249++ + if yyhl1249 { + yyb1249 = yyj1249 > l + } else { + yyb1249 = r.CheckBreak() + } + if yyb1249 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1249++ + if yyhl1249 { + yyb1249 = yyj1249 > l + } else { + yyb1249 = r.CheckBreak() + } + if yyb1249 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj1249++ + if yyhl1249 { + yyb1249 = yyj1249 > l + } else { + yyb1249 = r.CheckBreak() + } + if yyb1249 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + for { + yyj1249++ + if yyhl1249 { + yyb1249 = yyj1249 > l + } else { + yyb1249 = r.CheckBreak() + } + if yyb1249 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1249-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVarSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1253 := z.EncBinary() + _ = yym1253 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1254 := !z.EncBinary() + yy2arr1254 := z.EncBasicHandle().StructToArray + var yyq1254 [4]bool + _, _, _ = yysep1254, yyq1254, yy2arr1254 + const yyr1254 bool = false + yyq1254[0] = x.FieldRef != nil + yyq1254[1] = x.ResourceFieldRef != nil + yyq1254[2] = x.ConfigMapKeyRef != nil + yyq1254[3] = x.SecretKeyRef != nil + var yynn1254 int + if yyr1254 || yy2arr1254 { + r.EncodeArrayStart(4) + } else { + yynn1254 = 0 + for _, b := range yyq1254 { + if b { + yynn1254++ + } + } + r.EncodeMapStart(yynn1254) + yynn1254 = 0 + } + if yyr1254 || yy2arr1254 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1254[0] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1254[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1254 || yy2arr1254 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1254[1] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1254[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1254 || yy2arr1254 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1254[2] { + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1254[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMapKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr1254 || yy2arr1254 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1254[3] { + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1254[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr1254 || yy2arr1254 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVarSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1259 := z.DecBinary() + _ = yym1259 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1260 := r.ContainerType() + if yyct1260 == codecSelferValueTypeMap1234 { + yyl1260 := r.ReadMapStart() + if yyl1260 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1260, d) + } + } else if yyct1260 == codecSelferValueTypeArray1234 { + yyl1260 := r.ReadArrayStart() + if yyl1260 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1260, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVarSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1261Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1261Slc + var yyhl1261 bool = l >= 0 + for yyj1261 := 0; ; yyj1261++ { + if yyhl1261 { + if yyj1261 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1261Slc = r.DecodeBytes(yys1261Slc, true, true) + yys1261 := string(yys1261Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1261 { + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "configMapKeyRef": + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + case "secretKeyRef": + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1261) + } // end switch yys1261 + } // end for yyj1261 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVarSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1266 int + var yyb1266 bool + var yyhl1266 bool = l >= 0 + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + for { + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1266-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1271 := z.EncBinary() + _ = yym1271 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1272 := !z.EncBinary() + yy2arr1272 := z.EncBasicHandle().StructToArray + var yyq1272 [2]bool + _, _, _ = yysep1272, yyq1272, yy2arr1272 + const yyr1272 bool = false + var yynn1272 int + if yyr1272 || yy2arr1272 { + r.EncodeArrayStart(2) + } else { + yynn1272 = 2 + for _, b := range yyq1272 { + if b { + yynn1272++ + } + } + r.EncodeMapStart(yynn1272) + yynn1272 = 0 + } + if yyr1272 || yy2arr1272 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1274 := z.EncBinary() + _ = yym1274 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1275 := z.EncBinary() + _ = yym1275 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + if yyr1272 || yy2arr1272 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1277 := z.EncBinary() + _ = yym1277 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1278 := z.EncBinary() + _ = yym1278 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + if yyr1272 || yy2arr1272 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1279 := z.DecBinary() + _ = yym1279 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1280 := r.ContainerType() + if yyct1280 == codecSelferValueTypeMap1234 { + yyl1280 := r.ReadMapStart() + if yyl1280 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1280, d) + } + } else if yyct1280 == codecSelferValueTypeArray1234 { + yyl1280 := r.ReadArrayStart() + if yyl1280 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1280, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1281Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1281Slc + var yyhl1281 bool = l >= 0 + for yyj1281 := 0; ; yyj1281++ { + if yyhl1281 { + if yyj1281 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1281Slc = r.DecodeBytes(yys1281Slc, true, true) + yys1281 := string(yys1281Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1281 { + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1281) + } // end switch yys1281 + } // end for yyj1281 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1284 int + var yyb1284 bool + var yyhl1284 bool = l >= 0 + yyj1284++ + if yyhl1284 { + yyb1284 = yyj1284 > l + } else { + yyb1284 = r.CheckBreak() + } + if yyb1284 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1284++ + if yyhl1284 { + yyb1284 = yyj1284 > l + } else { + yyb1284 = r.CheckBreak() + } + if yyb1284 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + for { + yyj1284++ + if yyhl1284 { + yyb1284 = yyj1284 > l + } else { + yyb1284 = r.CheckBreak() + } + if yyb1284 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1284-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1287 := z.EncBinary() + _ = yym1287 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1288 := !z.EncBinary() + yy2arr1288 := z.EncBasicHandle().StructToArray + var yyq1288 [3]bool + _, _, _ = yysep1288, yyq1288, yy2arr1288 + const yyr1288 bool = false + yyq1288[0] = x.ContainerName != "" + yyq1288[2] = true + var yynn1288 int + if yyr1288 || yy2arr1288 { + r.EncodeArrayStart(3) + } else { + yynn1288 = 1 + for _, b := range yyq1288 { + if b { + yynn1288++ + } + } + r.EncodeMapStart(yynn1288) + yynn1288 = 0 + } + if yyr1288 || yy2arr1288 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1288[0] { + yym1290 := z.EncBinary() + _ = yym1290 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1288[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1291 := z.EncBinary() + _ = yym1291 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } + } + if yyr1288 || yy2arr1288 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1293 := z.EncBinary() + _ = yym1293 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1294 := z.EncBinary() + _ = yym1294 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + if yyr1288 || yy2arr1288 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1288[2] { + yy1296 := &x.Divisor + yym1297 := z.EncBinary() + _ = yym1297 + if false { + } else if z.HasExtensions() && z.EncExt(yy1296) { + } else if !yym1297 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1296) + } else { + z.EncFallback(yy1296) + } + } else { + r.EncodeNil() + } + } else { + if yyq1288[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("divisor")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1298 := &x.Divisor + yym1299 := z.EncBinary() + _ = yym1299 + if false { + } else if z.HasExtensions() && z.EncExt(yy1298) { + } else if !yym1299 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1298) + } else { + z.EncFallback(yy1298) + } + } + } + if yyr1288 || yy2arr1288 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1300 := z.DecBinary() + _ = yym1300 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1301 := r.ContainerType() + if yyct1301 == codecSelferValueTypeMap1234 { + yyl1301 := r.ReadMapStart() + if yyl1301 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1301, d) + } + } else if yyct1301 == codecSelferValueTypeArray1234 { + yyl1301 := r.ReadArrayStart() + if yyl1301 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1301, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1302Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1302Slc + var yyhl1302 bool = l >= 0 + for yyj1302 := 0; ; yyj1302++ { + if yyhl1302 { + if yyj1302 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1302Slc = r.DecodeBytes(yys1302Slc, true, true) + yys1302 := string(yys1302Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1302 { + case "containerName": + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + x.ContainerName = string(r.DecodeString()) + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + case "divisor": + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv1305 := &x.Divisor + yym1306 := z.DecBinary() + _ = yym1306 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1305) { + } else if !yym1306 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1305) + } else { + z.DecFallback(yyv1305, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1302) + } // end switch yys1302 + } // end for yyj1302 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1307 int + var yyb1307 bool + var yyhl1307 bool = l >= 0 + yyj1307++ + if yyhl1307 { + yyb1307 = yyj1307 > l + } else { + yyb1307 = r.CheckBreak() + } + if yyb1307 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + x.ContainerName = string(r.DecodeString()) + } + yyj1307++ + if yyhl1307 { + yyb1307 = yyj1307 > l + } else { + yyb1307 = r.CheckBreak() + } + if yyb1307 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + yyj1307++ + if yyhl1307 { + yyb1307 = yyj1307 > l + } else { + yyb1307 = r.CheckBreak() + } + if yyb1307 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv1310 := &x.Divisor + yym1311 := z.DecBinary() + _ = yym1311 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1310) { + } else if !yym1311 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1310) + } else { + z.DecFallback(yyv1310, false) + } + } + for { + yyj1307++ + if yyhl1307 { + yyb1307 = yyj1307 > l + } else { + yyb1307 = r.CheckBreak() + } + if yyb1307 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1307-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1312 := z.EncBinary() + _ = yym1312 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1313 := !z.EncBinary() + yy2arr1313 := z.EncBasicHandle().StructToArray + var yyq1313 [2]bool + _, _, _ = yysep1313, yyq1313, yy2arr1313 + const yyr1313 bool = false + var yynn1313 int + if yyr1313 || yy2arr1313 { + r.EncodeArrayStart(2) + } else { + yynn1313 = 2 + for _, b := range yyq1313 { + if b { + yynn1313++ + } + } + r.EncodeMapStart(yynn1313) + yynn1313 = 0 + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1315 := z.EncBinary() + _ = yym1315 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1316 := z.EncBinary() + _ = yym1316 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1318 := z.EncBinary() + _ = yym1318 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1319 := z.EncBinary() + _ = yym1319 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1320 := z.DecBinary() + _ = yym1320 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1321 := r.ContainerType() + if yyct1321 == codecSelferValueTypeMap1234 { + yyl1321 := r.ReadMapStart() + if yyl1321 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1321, d) + } + } else if yyct1321 == codecSelferValueTypeArray1234 { + yyl1321 := r.ReadArrayStart() + if yyl1321 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1321, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1322Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1322Slc + var yyhl1322 bool = l >= 0 + for yyj1322 := 0; ; yyj1322++ { + if yyhl1322 { + if yyj1322 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1322Slc = r.DecodeBytes(yys1322Slc, true, true) + yys1322 := string(yys1322Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1322 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1322) + } // end switch yys1322 + } // end for yyj1322 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1325 int + var yyb1325 bool + var yyhl1325 bool = l >= 0 + yyj1325++ + if yyhl1325 { + yyb1325 = yyj1325 > l + } else { + yyb1325 = r.CheckBreak() + } + if yyb1325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1325++ + if yyhl1325 { + yyb1325 = yyj1325 > l + } else { + yyb1325 = r.CheckBreak() + } + if yyb1325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + for { + yyj1325++ + if yyhl1325 { + yyb1325 = yyj1325 > l + } else { + yyb1325 = r.CheckBreak() + } + if yyb1325 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1325-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1328 := z.EncBinary() + _ = yym1328 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1329 := !z.EncBinary() + yy2arr1329 := z.EncBasicHandle().StructToArray + var yyq1329 [2]bool + _, _, _ = yysep1329, yyq1329, yy2arr1329 + const yyr1329 bool = false + var yynn1329 int + if yyr1329 || yy2arr1329 { + r.EncodeArrayStart(2) + } else { + yynn1329 = 2 + for _, b := range yyq1329 { + if b { + yynn1329++ + } + } + r.EncodeMapStart(yynn1329) + yynn1329 = 0 + } + if yyr1329 || yy2arr1329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1331 := z.EncBinary() + _ = yym1331 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1332 := z.EncBinary() + _ = yym1332 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1329 || yy2arr1329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1334 := z.EncBinary() + _ = yym1334 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1335 := z.EncBinary() + _ = yym1335 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1329 || yy2arr1329 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1336 := z.DecBinary() + _ = yym1336 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1337 := r.ContainerType() + if yyct1337 == codecSelferValueTypeMap1234 { + yyl1337 := r.ReadMapStart() + if yyl1337 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1337, d) + } + } else if yyct1337 == codecSelferValueTypeArray1234 { + yyl1337 := r.ReadArrayStart() + if yyl1337 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1337, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1338Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1338Slc + var yyhl1338 bool = l >= 0 + for yyj1338 := 0; ; yyj1338++ { + if yyhl1338 { + if yyj1338 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1338Slc = r.DecodeBytes(yys1338Slc, true, true) + yys1338 := string(yys1338Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1338 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1338) + } // end switch yys1338 + } // end for yyj1338 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1341 int + var yyb1341 bool + var yyhl1341 bool = l >= 0 + yyj1341++ + if yyhl1341 { + yyb1341 = yyj1341 > l + } else { + yyb1341 = r.CheckBreak() + } + if yyb1341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1341++ + if yyhl1341 { + yyb1341 = yyj1341 > l + } else { + yyb1341 = r.CheckBreak() + } + if yyb1341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + for { + yyj1341++ + if yyhl1341 { + yyb1341 = yyj1341 > l + } else { + yyb1341 = r.CheckBreak() + } + if yyb1341 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1341-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPHeader) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1344 := z.EncBinary() + _ = yym1344 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1345 := !z.EncBinary() + yy2arr1345 := z.EncBasicHandle().StructToArray + var yyq1345 [2]bool + _, _, _ = yysep1345, yyq1345, yy2arr1345 + const yyr1345 bool = false + var yynn1345 int + if yyr1345 || yy2arr1345 { + r.EncodeArrayStart(2) + } else { + yynn1345 = 2 + for _, b := range yyq1345 { + if b { + yynn1345++ + } + } + r.EncodeMapStart(yynn1345) + yynn1345 = 0 + } + if yyr1345 || yy2arr1345 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1347 := z.EncBinary() + _ = yym1347 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1348 := z.EncBinary() + _ = yym1348 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1345 || yy2arr1345 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1350 := z.EncBinary() + _ = yym1350 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1351 := z.EncBinary() + _ = yym1351 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + if yyr1345 || yy2arr1345 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPHeader) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1352 := z.DecBinary() + _ = yym1352 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1353 := r.ContainerType() + if yyct1353 == codecSelferValueTypeMap1234 { + yyl1353 := r.ReadMapStart() + if yyl1353 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1353, d) + } + } else if yyct1353 == codecSelferValueTypeArray1234 { + yyl1353 := r.ReadArrayStart() + if yyl1353 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1353, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPHeader) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1354Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1354Slc + var yyhl1354 bool = l >= 0 + for yyj1354 := 0; ; yyj1354++ { + if yyhl1354 { + if yyj1354 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1354Slc = r.DecodeBytes(yys1354Slc, true, true) + yys1354 := string(yys1354Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1354 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1354) + } // end switch yys1354 + } // end for yyj1354 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPHeader) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1357 int + var yyb1357 bool + var yyhl1357 bool = l >= 0 + yyj1357++ + if yyhl1357 { + yyb1357 = yyj1357 > l + } else { + yyb1357 = r.CheckBreak() + } + if yyb1357 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1357++ + if yyhl1357 { + yyb1357 = yyj1357 > l + } else { + yyb1357 = r.CheckBreak() + } + if yyb1357 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + for { + yyj1357++ + if yyhl1357 { + yyb1357 = yyj1357 > l + } else { + yyb1357 = r.CheckBreak() + } + if yyb1357 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1357-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPGetAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1360 := z.EncBinary() + _ = yym1360 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1361 := !z.EncBinary() + yy2arr1361 := z.EncBasicHandle().StructToArray + var yyq1361 [5]bool + _, _, _ = yysep1361, yyq1361, yy2arr1361 + const yyr1361 bool = false + yyq1361[0] = x.Path != "" + yyq1361[1] = true + yyq1361[2] = x.Host != "" + yyq1361[3] = x.Scheme != "" + yyq1361[4] = len(x.HTTPHeaders) != 0 + var yynn1361 int + if yyr1361 || yy2arr1361 { + r.EncodeArrayStart(5) + } else { + yynn1361 = 0 + for _, b := range yyq1361 { + if b { + yynn1361++ + } + } + r.EncodeMapStart(yynn1361) + yynn1361 = 0 + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1361[0] { + yym1363 := z.EncBinary() + _ = yym1363 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1361[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1364 := z.EncBinary() + _ = yym1364 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1361[1] { + yy1366 := &x.Port + yym1367 := z.EncBinary() + _ = yym1367 + if false { + } else if z.HasExtensions() && z.EncExt(yy1366) { + } else if !yym1367 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1366) + } else { + z.EncFallback(yy1366) + } + } else { + r.EncodeNil() + } + } else { + if yyq1361[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1368 := &x.Port + yym1369 := z.EncBinary() + _ = yym1369 + if false { + } else if z.HasExtensions() && z.EncExt(yy1368) { + } else if !yym1369 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1368) + } else { + z.EncFallback(yy1368) + } + } + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1361[2] { + yym1371 := z.EncBinary() + _ = yym1371 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1361[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1372 := z.EncBinary() + _ = yym1372 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1361[3] { + x.Scheme.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1361[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scheme")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Scheme.CodecEncodeSelf(e) + } + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1361[4] { + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym1375 := z.EncBinary() + _ = yym1375 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1361[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpHeaders")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym1376 := z.EncBinary() + _ = yym1376 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } + } + if yyr1361 || yy2arr1361 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPGetAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1377 := z.DecBinary() + _ = yym1377 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1378 := r.ContainerType() + if yyct1378 == codecSelferValueTypeMap1234 { + yyl1378 := r.ReadMapStart() + if yyl1378 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1378, d) + } + } else if yyct1378 == codecSelferValueTypeArray1234 { + yyl1378 := r.ReadArrayStart() + if yyl1378 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1378, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPGetAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1379Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1379Slc + var yyhl1379 bool = l >= 0 + for yyj1379 := 0; ; yyj1379++ { + if yyhl1379 { + if yyj1379 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1379Slc = r.DecodeBytes(yys1379Slc, true, true) + yys1379 := string(yys1379Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1379 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1381 := &x.Port + yym1382 := z.DecBinary() + _ = yym1382 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1381) { + } else if !yym1382 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1381) + } else { + z.DecFallback(yyv1381, false) + } + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + case "scheme": + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + x.Scheme = URIScheme(r.DecodeString()) + } + case "httpHeaders": + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv1385 := &x.HTTPHeaders + yym1386 := z.DecBinary() + _ = yym1386 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv1385), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1379) + } // end switch yys1379 + } // end for yyj1379 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPGetAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1387 int + var yyb1387 bool + var yyhl1387 bool = l >= 0 + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1389 := &x.Port + yym1390 := z.DecBinary() + _ = yym1390 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1389) { + } else if !yym1390 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1389) + } else { + z.DecFallback(yyv1389, false) + } + } + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + x.Scheme = URIScheme(r.DecodeString()) + } + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv1393 := &x.HTTPHeaders + yym1394 := z.DecBinary() + _ = yym1394 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv1393), d) + } + } + for { + yyj1387++ + if yyhl1387 { + yyb1387 = yyj1387 > l + } else { + yyb1387 = r.CheckBreak() + } + if yyb1387 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1387-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x URIScheme) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1395 := z.EncBinary() + _ = yym1395 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *URIScheme) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1396 := z.DecBinary() + _ = yym1396 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *TCPSocketAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1397 := z.EncBinary() + _ = yym1397 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1398 := !z.EncBinary() + yy2arr1398 := z.EncBasicHandle().StructToArray + var yyq1398 [1]bool + _, _, _ = yysep1398, yyq1398, yy2arr1398 + const yyr1398 bool = false + yyq1398[0] = true + var yynn1398 int + if yyr1398 || yy2arr1398 { + r.EncodeArrayStart(1) + } else { + yynn1398 = 0 + for _, b := range yyq1398 { + if b { + yynn1398++ + } + } + r.EncodeMapStart(yynn1398) + yynn1398 = 0 + } + if yyr1398 || yy2arr1398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1398[0] { + yy1400 := &x.Port + yym1401 := z.EncBinary() + _ = yym1401 + if false { + } else if z.HasExtensions() && z.EncExt(yy1400) { + } else if !yym1401 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1400) + } else { + z.EncFallback(yy1400) + } + } else { + r.EncodeNil() + } + } else { + if yyq1398[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1402 := &x.Port + yym1403 := z.EncBinary() + _ = yym1403 + if false { + } else if z.HasExtensions() && z.EncExt(yy1402) { + } else if !yym1403 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1402) + } else { + z.EncFallback(yy1402) + } + } + } + if yyr1398 || yy2arr1398 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TCPSocketAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1404 := z.DecBinary() + _ = yym1404 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1405 := r.ContainerType() + if yyct1405 == codecSelferValueTypeMap1234 { + yyl1405 := r.ReadMapStart() + if yyl1405 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1405, d) + } + } else if yyct1405 == codecSelferValueTypeArray1234 { + yyl1405 := r.ReadArrayStart() + if yyl1405 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1405, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TCPSocketAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1406Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1406Slc + var yyhl1406 bool = l >= 0 + for yyj1406 := 0; ; yyj1406++ { + if yyhl1406 { + if yyj1406 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1406Slc = r.DecodeBytes(yys1406Slc, true, true) + yys1406 := string(yys1406Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1406 { + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1407 := &x.Port + yym1408 := z.DecBinary() + _ = yym1408 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1407) { + } else if !yym1408 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1407) + } else { + z.DecFallback(yyv1407, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1406) + } // end switch yys1406 + } // end for yyj1406 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TCPSocketAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1409 int + var yyb1409 bool + var yyhl1409 bool = l >= 0 + yyj1409++ + if yyhl1409 { + yyb1409 = yyj1409 > l + } else { + yyb1409 = r.CheckBreak() + } + if yyb1409 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1410 := &x.Port + yym1411 := z.DecBinary() + _ = yym1411 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1410) { + } else if !yym1411 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1410) + } else { + z.DecFallback(yyv1410, false) + } + } + for { + yyj1409++ + if yyhl1409 { + yyb1409 = yyj1409 > l + } else { + yyb1409 = r.CheckBreak() + } + if yyb1409 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1409-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExecAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1412 := z.EncBinary() + _ = yym1412 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1413 := !z.EncBinary() + yy2arr1413 := z.EncBasicHandle().StructToArray + var yyq1413 [1]bool + _, _, _ = yysep1413, yyq1413, yy2arr1413 + const yyr1413 bool = false + yyq1413[0] = len(x.Command) != 0 + var yynn1413 int + if yyr1413 || yy2arr1413 { + r.EncodeArrayStart(1) + } else { + yynn1413 = 0 + for _, b := range yyq1413 { + if b { + yynn1413++ + } + } + r.EncodeMapStart(yynn1413) + yynn1413 = 0 + } + if yyr1413 || yy2arr1413 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1413[0] { + if x.Command == nil { + r.EncodeNil() + } else { + yym1415 := z.EncBinary() + _ = yym1415 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1413[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym1416 := z.EncBinary() + _ = yym1416 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr1413 || yy2arr1413 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExecAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1417 := z.DecBinary() + _ = yym1417 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1418 := r.ContainerType() + if yyct1418 == codecSelferValueTypeMap1234 { + yyl1418 := r.ReadMapStart() + if yyl1418 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1418, d) + } + } else if yyct1418 == codecSelferValueTypeArray1234 { + yyl1418 := r.ReadArrayStart() + if yyl1418 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1418, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExecAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1419Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1419Slc + var yyhl1419 bool = l >= 0 + for yyj1419 := 0; ; yyj1419++ { + if yyhl1419 { + if yyj1419 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1419Slc = r.DecodeBytes(yys1419Slc, true, true) + yys1419 := string(yys1419Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1419 { + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1420 := &x.Command + yym1421 := z.DecBinary() + _ = yym1421 + if false { + } else { + z.F.DecSliceStringX(yyv1420, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1419) + } // end switch yys1419 + } // end for yyj1419 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExecAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1422 int + var yyb1422 bool + var yyhl1422 bool = l >= 0 + yyj1422++ + if yyhl1422 { + yyb1422 = yyj1422 > l + } else { + yyb1422 = r.CheckBreak() + } + if yyb1422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1423 := &x.Command + yym1424 := z.DecBinary() + _ = yym1424 + if false { + } else { + z.F.DecSliceStringX(yyv1423, false, d) + } + } + for { + yyj1422++ + if yyhl1422 { + yyb1422 = yyj1422 > l + } else { + yyb1422 = r.CheckBreak() + } + if yyb1422 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1422-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Probe) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1425 := z.EncBinary() + _ = yym1425 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1426 := !z.EncBinary() + yy2arr1426 := z.EncBasicHandle().StructToArray + var yyq1426 [8]bool + _, _, _ = yysep1426, yyq1426, yy2arr1426 + const yyr1426 bool = false + yyq1426[0] = x.Handler.Exec != nil && x.Exec != nil + yyq1426[1] = x.Handler.HTTPGet != nil && x.HTTPGet != nil + yyq1426[2] = x.Handler.TCPSocket != nil && x.TCPSocket != nil + yyq1426[3] = x.InitialDelaySeconds != 0 + yyq1426[4] = x.TimeoutSeconds != 0 + yyq1426[5] = x.PeriodSeconds != 0 + yyq1426[6] = x.SuccessThreshold != 0 + yyq1426[7] = x.FailureThreshold != 0 + var yynn1426 int + if yyr1426 || yy2arr1426 { + r.EncodeArrayStart(8) + } else { + yynn1426 = 0 + for _, b := range yyq1426 { + if b { + yynn1426++ + } + } + r.EncodeMapStart(yynn1426) + yynn1426 = 0 + } + var yyn1427 bool + if x.Handler.Exec == nil { + yyn1427 = true + goto LABEL1427 + } + LABEL1427: + if yyr1426 || yy2arr1426 { + if yyn1427 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1426[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1427 { + r.EncodeNil() + } else { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + } + var yyn1428 bool + if x.Handler.HTTPGet == nil { + yyn1428 = true + goto LABEL1428 + } + LABEL1428: + if yyr1426 || yy2arr1426 { + if yyn1428 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1426[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1428 { + r.EncodeNil() + } else { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + } + var yyn1429 bool + if x.Handler.TCPSocket == nil { + yyn1429 = true + goto LABEL1429 + } + LABEL1429: + if yyr1426 || yy2arr1426 { + if yyn1429 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1426[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1429 { + r.EncodeNil() + } else { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[3] { + yym1431 := z.EncBinary() + _ = yym1431 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1426[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initialDelaySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1432 := z.EncBinary() + _ = yym1432 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[4] { + yym1434 := z.EncBinary() + _ = yym1434 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1426[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1435 := z.EncBinary() + _ = yym1435 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[5] { + yym1437 := z.EncBinary() + _ = yym1437 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1426[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("periodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1438 := z.EncBinary() + _ = yym1438 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[6] { + yym1440 := z.EncBinary() + _ = yym1440 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1426[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("successThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1441 := z.EncBinary() + _ = yym1441 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1426[7] { + yym1443 := z.EncBinary() + _ = yym1443 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1426[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failureThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1444 := z.EncBinary() + _ = yym1444 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } + } + if yyr1426 || yy2arr1426 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Probe) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1445 := z.DecBinary() + _ = yym1445 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1446 := r.ContainerType() + if yyct1446 == codecSelferValueTypeMap1234 { + yyl1446 := r.ReadMapStart() + if yyl1446 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1446, d) + } + } else if yyct1446 == codecSelferValueTypeArray1234 { + yyl1446 := r.ReadArrayStart() + if yyl1446 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1446, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Probe) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1447Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1447Slc + var yyhl1447 bool = l >= 0 + for yyj1447 := 0; ; yyj1447++ { + if yyhl1447 { + if yyj1447 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1447Slc = r.DecodeBytes(yys1447Slc, true, true) + yys1447 := string(yys1447Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1447 { + case "exec": + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + case "initialDelaySeconds": + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + x.InitialDelaySeconds = int32(r.DecodeInt(32)) + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + x.TimeoutSeconds = int32(r.DecodeInt(32)) + } + case "periodSeconds": + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + x.PeriodSeconds = int32(r.DecodeInt(32)) + } + case "successThreshold": + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + x.SuccessThreshold = int32(r.DecodeInt(32)) + } + case "failureThreshold": + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + x.FailureThreshold = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys1447) + } // end switch yys1447 + } // end for yyj1447 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Probe) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1456 int + var yyb1456 bool + var yyhl1456 bool = l >= 0 + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + x.InitialDelaySeconds = int32(r.DecodeInt(32)) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + x.TimeoutSeconds = int32(r.DecodeInt(32)) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + x.PeriodSeconds = int32(r.DecodeInt(32)) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + x.SuccessThreshold = int32(r.DecodeInt(32)) + } + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + x.FailureThreshold = int32(r.DecodeInt(32)) + } + for { + yyj1456++ + if yyhl1456 { + yyb1456 = yyj1456 > l + } else { + yyb1456 = r.CheckBreak() + } + if yyb1456 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1456-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PullPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1465 := z.EncBinary() + _ = yym1465 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PullPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1466 := z.DecBinary() + _ = yym1466 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Capability) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1467 := z.EncBinary() + _ = yym1467 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Capability) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1468 := z.DecBinary() + _ = yym1468 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Capabilities) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1469 := z.EncBinary() + _ = yym1469 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1470 := !z.EncBinary() + yy2arr1470 := z.EncBasicHandle().StructToArray + var yyq1470 [2]bool + _, _, _ = yysep1470, yyq1470, yy2arr1470 + const yyr1470 bool = false + yyq1470[0] = len(x.Add) != 0 + yyq1470[1] = len(x.Drop) != 0 + var yynn1470 int + if yyr1470 || yy2arr1470 { + r.EncodeArrayStart(2) + } else { + yynn1470 = 0 + for _, b := range yyq1470 { + if b { + yynn1470++ + } + } + r.EncodeMapStart(yynn1470) + yynn1470 = 0 + } + if yyr1470 || yy2arr1470 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1470[0] { + if x.Add == nil { + r.EncodeNil() + } else { + yym1472 := z.EncBinary() + _ = yym1472 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1470[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("add")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Add == nil { + r.EncodeNil() + } else { + yym1473 := z.EncBinary() + _ = yym1473 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } + } + if yyr1470 || yy2arr1470 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1470[1] { + if x.Drop == nil { + r.EncodeNil() + } else { + yym1475 := z.EncBinary() + _ = yym1475 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1470[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("drop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Drop == nil { + r.EncodeNil() + } else { + yym1476 := z.EncBinary() + _ = yym1476 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } + } + if yyr1470 || yy2arr1470 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Capabilities) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1477 := z.DecBinary() + _ = yym1477 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1478 := r.ContainerType() + if yyct1478 == codecSelferValueTypeMap1234 { + yyl1478 := r.ReadMapStart() + if yyl1478 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1478, d) + } + } else if yyct1478 == codecSelferValueTypeArray1234 { + yyl1478 := r.ReadArrayStart() + if yyl1478 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1478, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Capabilities) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1479Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1479Slc + var yyhl1479 bool = l >= 0 + for yyj1479 := 0; ; yyj1479++ { + if yyhl1479 { + if yyj1479 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1479Slc = r.DecodeBytes(yys1479Slc, true, true) + yys1479 := string(yys1479Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1479 { + case "add": + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv1480 := &x.Add + yym1481 := z.DecBinary() + _ = yym1481 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1480), d) + } + } + case "drop": + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv1482 := &x.Drop + yym1483 := z.DecBinary() + _ = yym1483 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1482), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1479) + } // end switch yys1479 + } // end for yyj1479 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Capabilities) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1484 int + var yyb1484 bool + var yyhl1484 bool = l >= 0 + yyj1484++ + if yyhl1484 { + yyb1484 = yyj1484 > l + } else { + yyb1484 = r.CheckBreak() + } + if yyb1484 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv1485 := &x.Add + yym1486 := z.DecBinary() + _ = yym1486 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1485), d) + } + } + yyj1484++ + if yyhl1484 { + yyb1484 = yyj1484 > l + } else { + yyb1484 = r.CheckBreak() + } + if yyb1484 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv1487 := &x.Drop + yym1488 := z.DecBinary() + _ = yym1488 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1487), d) + } + } + for { + yyj1484++ + if yyhl1484 { + yyb1484 = yyj1484 > l + } else { + yyb1484 = r.CheckBreak() + } + if yyb1484 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1484-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceRequirements) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1489 := z.EncBinary() + _ = yym1489 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1490 := !z.EncBinary() + yy2arr1490 := z.EncBasicHandle().StructToArray + var yyq1490 [2]bool + _, _, _ = yysep1490, yyq1490, yy2arr1490 + const yyr1490 bool = false + yyq1490[0] = len(x.Limits) != 0 + yyq1490[1] = len(x.Requests) != 0 + var yynn1490 int + if yyr1490 || yy2arr1490 { + r.EncodeArrayStart(2) + } else { + yynn1490 = 0 + for _, b := range yyq1490 { + if b { + yynn1490++ + } + } + r.EncodeMapStart(yynn1490) + yynn1490 = 0 + } + if yyr1490 || yy2arr1490 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1490[0] { + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1490[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } + } + if yyr1490 || yy2arr1490 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1490[1] { + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1490[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requests")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } + } + if yyr1490 || yy2arr1490 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceRequirements) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1493 := z.DecBinary() + _ = yym1493 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1494 := r.ContainerType() + if yyct1494 == codecSelferValueTypeMap1234 { + yyl1494 := r.ReadMapStart() + if yyl1494 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1494, d) + } + } else if yyct1494 == codecSelferValueTypeArray1234 { + yyl1494 := r.ReadArrayStart() + if yyl1494 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1494, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceRequirements) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1495Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1495Slc + var yyhl1495 bool = l >= 0 + for yyj1495 := 0; ; yyj1495++ { + if yyhl1495 { + if yyj1495 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1495Slc = r.DecodeBytes(yys1495Slc, true, true) + yys1495 := string(yys1495Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1495 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv1496 := &x.Limits + yyv1496.CodecDecodeSelf(d) + } + case "requests": + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv1497 := &x.Requests + yyv1497.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1495) + } // end switch yys1495 + } // end for yyj1495 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceRequirements) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1498 int + var yyb1498 bool + var yyhl1498 bool = l >= 0 + yyj1498++ + if yyhl1498 { + yyb1498 = yyj1498 > l + } else { + yyb1498 = r.CheckBreak() + } + if yyb1498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv1499 := &x.Limits + yyv1499.CodecDecodeSelf(d) + } + yyj1498++ + if yyhl1498 { + yyb1498 = yyj1498 > l + } else { + yyb1498 = r.CheckBreak() + } + if yyb1498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv1500 := &x.Requests + yyv1500.CodecDecodeSelf(d) + } + for { + yyj1498++ + if yyhl1498 { + yyb1498 = yyj1498 > l + } else { + yyb1498 = r.CheckBreak() + } + if yyb1498 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1498-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Container) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1501 := z.EncBinary() + _ = yym1501 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1502 := !z.EncBinary() + yy2arr1502 := z.EncBasicHandle().StructToArray + var yyq1502 [18]bool + _, _, _ = yysep1502, yyq1502, yy2arr1502 + const yyr1502 bool = false + yyq1502[2] = len(x.Command) != 0 + yyq1502[3] = len(x.Args) != 0 + yyq1502[4] = x.WorkingDir != "" + yyq1502[5] = len(x.Ports) != 0 + yyq1502[6] = len(x.Env) != 0 + yyq1502[7] = true + yyq1502[8] = len(x.VolumeMounts) != 0 + yyq1502[9] = x.LivenessProbe != nil + yyq1502[10] = x.ReadinessProbe != nil + yyq1502[11] = x.Lifecycle != nil + yyq1502[12] = x.TerminationMessagePath != "" + yyq1502[14] = x.SecurityContext != nil + yyq1502[15] = x.Stdin != false + yyq1502[16] = x.StdinOnce != false + yyq1502[17] = x.TTY != false + var yynn1502 int + if yyr1502 || yy2arr1502 { + r.EncodeArrayStart(18) + } else { + yynn1502 = 3 + for _, b := range yyq1502 { + if b { + yynn1502++ + } + } + r.EncodeMapStart(yynn1502) + yynn1502 = 0 + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1504 := z.EncBinary() + _ = yym1504 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1505 := z.EncBinary() + _ = yym1505 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1507 := z.EncBinary() + _ = yym1507 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1508 := z.EncBinary() + _ = yym1508 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[2] { + if x.Command == nil { + r.EncodeNil() + } else { + yym1510 := z.EncBinary() + _ = yym1510 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym1511 := z.EncBinary() + _ = yym1511 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[3] { + if x.Args == nil { + r.EncodeNil() + } else { + yym1513 := z.EncBinary() + _ = yym1513 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("args")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Args == nil { + r.EncodeNil() + } else { + yym1514 := z.EncBinary() + _ = yym1514 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[4] { + yym1516 := z.EncBinary() + _ = yym1516 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1502[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("workingDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1517 := z.EncBinary() + _ = yym1517 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[5] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym1519 := z.EncBinary() + _ = yym1519 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym1520 := z.EncBinary() + _ = yym1520 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[6] { + if x.Env == nil { + r.EncodeNil() + } else { + yym1522 := z.EncBinary() + _ = yym1522 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("env")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Env == nil { + r.EncodeNil() + } else { + yym1523 := z.EncBinary() + _ = yym1523 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[7] { + yy1525 := &x.Resources + yy1525.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1502[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1526 := &x.Resources + yy1526.CodecEncodeSelf(e) + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[8] { + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym1528 := z.EncBinary() + _ = yym1528 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeMounts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym1529 := z.EncBinary() + _ = yym1529 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[9] { + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("livenessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[10] { + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readinessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[11] { + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lifecycle")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[12] { + yym1534 := z.EncBinary() + _ = yym1534 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1502[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationMessagePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1535 := z.EncBinary() + _ = yym1535 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.ImagePullPolicy.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ImagePullPolicy.CodecEncodeSelf(e) + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[14] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1502[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[15] { + yym1539 := z.EncBinary() + _ = yym1539 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1502[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1540 := z.EncBinary() + _ = yym1540 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[16] { + yym1542 := z.EncBinary() + _ = yym1542 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1502[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdinOnce")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1543 := z.EncBinary() + _ = yym1543 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1502[17] { + yym1545 := z.EncBinary() + _ = yym1545 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1502[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1546 := z.EncBinary() + _ = yym1546 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr1502 || yy2arr1502 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Container) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1547 := z.DecBinary() + _ = yym1547 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1548 := r.ContainerType() + if yyct1548 == codecSelferValueTypeMap1234 { + yyl1548 := r.ReadMapStart() + if yyl1548 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1548, d) + } + } else if yyct1548 == codecSelferValueTypeArray1234 { + yyl1548 := r.ReadArrayStart() + if yyl1548 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1548, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Container) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1549Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1549Slc + var yyhl1549 bool = l >= 0 + for yyj1549 := 0; ; yyj1549++ { + if yyhl1549 { + if yyj1549 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1549Slc = r.DecodeBytes(yys1549Slc, true, true) + yys1549 := string(yys1549Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1549 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1552 := &x.Command + yym1553 := z.DecBinary() + _ = yym1553 + if false { + } else { + z.F.DecSliceStringX(yyv1552, false, d) + } + } + case "args": + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv1554 := &x.Args + yym1555 := z.DecBinary() + _ = yym1555 + if false { + } else { + z.F.DecSliceStringX(yyv1554, false, d) + } + } + case "workingDir": + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + x.WorkingDir = string(r.DecodeString()) + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1557 := &x.Ports + yym1558 := z.DecBinary() + _ = yym1558 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv1557), d) + } + } + case "env": + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv1559 := &x.Env + yym1560 := z.DecBinary() + _ = yym1560 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv1559), d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv1561 := &x.Resources + yyv1561.CodecDecodeSelf(d) + } + case "volumeMounts": + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv1562 := &x.VolumeMounts + yym1563 := z.DecBinary() + _ = yym1563 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv1562), d) + } + } + case "livenessProbe": + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + case "readinessProbe": + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + case "lifecycle": + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + case "terminationMessagePath": + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + x.TerminationMessagePath = string(r.DecodeString()) + } + case "imagePullPolicy": + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + x.ImagePullPolicy = PullPolicy(r.DecodeString()) + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "stdinOnce": + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + x.StdinOnce = bool(r.DecodeBool()) + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1549) + } // end switch yys1549 + } // end for yyj1549 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Container) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1573 int + var yyb1573 bool + var yyhl1573 bool = l >= 0 + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1576 := &x.Command + yym1577 := z.DecBinary() + _ = yym1577 + if false { + } else { + z.F.DecSliceStringX(yyv1576, false, d) + } + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv1578 := &x.Args + yym1579 := z.DecBinary() + _ = yym1579 + if false { + } else { + z.F.DecSliceStringX(yyv1578, false, d) + } + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + x.WorkingDir = string(r.DecodeString()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1581 := &x.Ports + yym1582 := z.DecBinary() + _ = yym1582 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv1581), d) + } + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv1583 := &x.Env + yym1584 := z.DecBinary() + _ = yym1584 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv1583), d) + } + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv1585 := &x.Resources + yyv1585.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv1586 := &x.VolumeMounts + yym1587 := z.DecBinary() + _ = yym1587 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv1586), d) + } + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + x.TerminationMessagePath = string(r.DecodeString()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + x.ImagePullPolicy = PullPolicy(r.DecodeString()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + x.StdinOnce = bool(r.DecodeBool()) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + for { + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1573-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Handler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1597 := z.EncBinary() + _ = yym1597 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1598 := !z.EncBinary() + yy2arr1598 := z.EncBasicHandle().StructToArray + var yyq1598 [3]bool + _, _, _ = yysep1598, yyq1598, yy2arr1598 + const yyr1598 bool = false + yyq1598[0] = x.Exec != nil + yyq1598[1] = x.HTTPGet != nil + yyq1598[2] = x.TCPSocket != nil + var yynn1598 int + if yyr1598 || yy2arr1598 { + r.EncodeArrayStart(3) + } else { + yynn1598 = 0 + for _, b := range yyq1598 { + if b { + yynn1598++ + } + } + r.EncodeMapStart(yynn1598) + yynn1598 = 0 + } + if yyr1598 || yy2arr1598 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1598[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1598[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + if yyr1598 || yy2arr1598 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1598[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1598[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + if yyr1598 || yy2arr1598 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1598[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1598[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + if yyr1598 || yy2arr1598 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Handler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1602 := z.DecBinary() + _ = yym1602 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1603 := r.ContainerType() + if yyct1603 == codecSelferValueTypeMap1234 { + yyl1603 := r.ReadMapStart() + if yyl1603 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1603, d) + } + } else if yyct1603 == codecSelferValueTypeArray1234 { + yyl1603 := r.ReadArrayStart() + if yyl1603 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1603, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Handler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1604Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1604Slc + var yyhl1604 bool = l >= 0 + for yyj1604 := 0; ; yyj1604++ { + if yyhl1604 { + if yyj1604 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1604Slc = r.DecodeBytes(yys1604Slc, true, true) + yys1604 := string(yys1604Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1604 { + case "exec": + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1604) + } // end switch yys1604 + } // end for yyj1604 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Handler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1608 int + var yyb1608 bool + var yyhl1608 bool = l >= 0 + yyj1608++ + if yyhl1608 { + yyb1608 = yyj1608 > l + } else { + yyb1608 = r.CheckBreak() + } + if yyb1608 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + yyj1608++ + if yyhl1608 { + yyb1608 = yyj1608 > l + } else { + yyb1608 = r.CheckBreak() + } + if yyb1608 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + yyj1608++ + if yyhl1608 { + yyb1608 = yyj1608 > l + } else { + yyb1608 = r.CheckBreak() + } + if yyb1608 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + for { + yyj1608++ + if yyhl1608 { + yyb1608 = yyj1608 > l + } else { + yyb1608 = r.CheckBreak() + } + if yyb1608 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1608-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Lifecycle) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1612 := z.EncBinary() + _ = yym1612 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1613 := !z.EncBinary() + yy2arr1613 := z.EncBasicHandle().StructToArray + var yyq1613 [2]bool + _, _, _ = yysep1613, yyq1613, yy2arr1613 + const yyr1613 bool = false + yyq1613[0] = x.PostStart != nil + yyq1613[1] = x.PreStop != nil + var yynn1613 int + if yyr1613 || yy2arr1613 { + r.EncodeArrayStart(2) + } else { + yynn1613 = 0 + for _, b := range yyq1613 { + if b { + yynn1613++ + } + } + r.EncodeMapStart(yynn1613) + yynn1613 = 0 + } + if yyr1613 || yy2arr1613 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1613[0] { + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1613[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("postStart")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } + } + if yyr1613 || yy2arr1613 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1613[1] { + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1613[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preStop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } + } + if yyr1613 || yy2arr1613 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Lifecycle) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1616 := z.DecBinary() + _ = yym1616 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1617 := r.ContainerType() + if yyct1617 == codecSelferValueTypeMap1234 { + yyl1617 := r.ReadMapStart() + if yyl1617 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1617, d) + } + } else if yyct1617 == codecSelferValueTypeArray1234 { + yyl1617 := r.ReadArrayStart() + if yyl1617 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1617, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Lifecycle) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1618Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1618Slc + var yyhl1618 bool = l >= 0 + for yyj1618 := 0; ; yyj1618++ { + if yyhl1618 { + if yyj1618 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1618Slc = r.DecodeBytes(yys1618Slc, true, true) + yys1618 := string(yys1618Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1618 { + case "postStart": + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + case "preStop": + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1618) + } // end switch yys1618 + } // end for yyj1618 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Lifecycle) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1621 int + var yyb1621 bool + var yyhl1621 bool = l >= 0 + yyj1621++ + if yyhl1621 { + yyb1621 = yyj1621 > l + } else { + yyb1621 = r.CheckBreak() + } + if yyb1621 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + yyj1621++ + if yyhl1621 { + yyb1621 = yyj1621 > l + } else { + yyb1621 = r.CheckBreak() + } + if yyb1621 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + for { + yyj1621++ + if yyhl1621 { + yyb1621 = yyj1621 > l + } else { + yyb1621 = r.CheckBreak() + } + if yyb1621 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1621-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConditionStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1624 := z.EncBinary() + _ = yym1624 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConditionStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1625 := z.DecBinary() + _ = yym1625 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ContainerStateWaiting) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1626 := z.EncBinary() + _ = yym1626 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1627 := !z.EncBinary() + yy2arr1627 := z.EncBasicHandle().StructToArray + var yyq1627 [2]bool + _, _, _ = yysep1627, yyq1627, yy2arr1627 + const yyr1627 bool = false + yyq1627[0] = x.Reason != "" + yyq1627[1] = x.Message != "" + var yynn1627 int + if yyr1627 || yy2arr1627 { + r.EncodeArrayStart(2) + } else { + yynn1627 = 0 + for _, b := range yyq1627 { + if b { + yynn1627++ + } + } + r.EncodeMapStart(yynn1627) + yynn1627 = 0 + } + if yyr1627 || yy2arr1627 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1627[0] { + yym1629 := z.EncBinary() + _ = yym1629 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1627[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1630 := z.EncBinary() + _ = yym1630 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1627 || yy2arr1627 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1627[1] { + yym1632 := z.EncBinary() + _ = yym1632 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1627[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1633 := z.EncBinary() + _ = yym1633 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1627 || yy2arr1627 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateWaiting) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1634 := z.DecBinary() + _ = yym1634 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1635 := r.ContainerType() + if yyct1635 == codecSelferValueTypeMap1234 { + yyl1635 := r.ReadMapStart() + if yyl1635 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1635, d) + } + } else if yyct1635 == codecSelferValueTypeArray1234 { + yyl1635 := r.ReadArrayStart() + if yyl1635 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1635, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1636Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1636Slc + var yyhl1636 bool = l >= 0 + for yyj1636 := 0; ; yyj1636++ { + if yyhl1636 { + if yyj1636 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1636Slc = r.DecodeBytes(yys1636Slc, true, true) + yys1636 := string(yys1636Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1636 { + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1636) + } // end switch yys1636 + } // end for yyj1636 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1639 int + var yyb1639 bool + var yyhl1639 bool = l >= 0 + yyj1639++ + if yyhl1639 { + yyb1639 = yyj1639 > l + } else { + yyb1639 = r.CheckBreak() + } + if yyb1639 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1639++ + if yyhl1639 { + yyb1639 = yyj1639 > l + } else { + yyb1639 = r.CheckBreak() + } + if yyb1639 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj1639++ + if yyhl1639 { + yyb1639 = yyj1639 > l + } else { + yyb1639 = r.CheckBreak() + } + if yyb1639 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1639-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateRunning) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1642 := z.EncBinary() + _ = yym1642 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1643 := !z.EncBinary() + yy2arr1643 := z.EncBasicHandle().StructToArray + var yyq1643 [1]bool + _, _, _ = yysep1643, yyq1643, yy2arr1643 + const yyr1643 bool = false + yyq1643[0] = true + var yynn1643 int + if yyr1643 || yy2arr1643 { + r.EncodeArrayStart(1) + } else { + yynn1643 = 0 + for _, b := range yyq1643 { + if b { + yynn1643++ + } + } + r.EncodeMapStart(yynn1643) + yynn1643 = 0 + } + if yyr1643 || yy2arr1643 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1643[0] { + yy1645 := &x.StartedAt + yym1646 := z.EncBinary() + _ = yym1646 + if false { + } else if z.HasExtensions() && z.EncExt(yy1645) { + } else if yym1646 { + z.EncBinaryMarshal(yy1645) + } else if !yym1646 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1645) + } else { + z.EncFallback(yy1645) + } + } else { + r.EncodeNil() + } + } else { + if yyq1643[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1647 := &x.StartedAt + yym1648 := z.EncBinary() + _ = yym1648 + if false { + } else if z.HasExtensions() && z.EncExt(yy1647) { + } else if yym1648 { + z.EncBinaryMarshal(yy1647) + } else if !yym1648 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1647) + } else { + z.EncFallback(yy1647) + } + } + } + if yyr1643 || yy2arr1643 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateRunning) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1649 := z.DecBinary() + _ = yym1649 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1650 := r.ContainerType() + if yyct1650 == codecSelferValueTypeMap1234 { + yyl1650 := r.ReadMapStart() + if yyl1650 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1650, d) + } + } else if yyct1650 == codecSelferValueTypeArray1234 { + yyl1650 := r.ReadArrayStart() + if yyl1650 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1650, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateRunning) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1651Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1651Slc + var yyhl1651 bool = l >= 0 + for yyj1651 := 0; ; yyj1651++ { + if yyhl1651 { + if yyj1651 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1651Slc = r.DecodeBytes(yys1651Slc, true, true) + yys1651 := string(yys1651Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1651 { + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1652 := &x.StartedAt + yym1653 := z.DecBinary() + _ = yym1653 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1652) { + } else if yym1653 { + z.DecBinaryUnmarshal(yyv1652) + } else if !yym1653 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1652) + } else { + z.DecFallback(yyv1652, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1651) + } // end switch yys1651 + } // end for yyj1651 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateRunning) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1654 int + var yyb1654 bool + var yyhl1654 bool = l >= 0 + yyj1654++ + if yyhl1654 { + yyb1654 = yyj1654 > l + } else { + yyb1654 = r.CheckBreak() + } + if yyb1654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1655 := &x.StartedAt + yym1656 := z.DecBinary() + _ = yym1656 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1655) { + } else if yym1656 { + z.DecBinaryUnmarshal(yyv1655) + } else if !yym1656 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1655) + } else { + z.DecFallback(yyv1655, false) + } + } + for { + yyj1654++ + if yyhl1654 { + yyb1654 = yyj1654 > l + } else { + yyb1654 = r.CheckBreak() + } + if yyb1654 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1654-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateTerminated) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1657 := z.EncBinary() + _ = yym1657 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1658 := !z.EncBinary() + yy2arr1658 := z.EncBasicHandle().StructToArray + var yyq1658 [7]bool + _, _, _ = yysep1658, yyq1658, yy2arr1658 + const yyr1658 bool = false + yyq1658[1] = x.Signal != 0 + yyq1658[2] = x.Reason != "" + yyq1658[3] = x.Message != "" + yyq1658[4] = true + yyq1658[5] = true + yyq1658[6] = x.ContainerID != "" + var yynn1658 int + if yyr1658 || yy2arr1658 { + r.EncodeArrayStart(7) + } else { + yynn1658 = 1 + for _, b := range yyq1658 { + if b { + yynn1658++ + } + } + r.EncodeMapStart(yynn1658) + yynn1658 = 0 + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1660 := z.EncBinary() + _ = yym1660 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exitCode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1661 := z.EncBinary() + _ = yym1661 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[1] { + yym1663 := z.EncBinary() + _ = yym1663 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1658[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("signal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1664 := z.EncBinary() + _ = yym1664 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[2] { + yym1666 := z.EncBinary() + _ = yym1666 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1658[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1667 := z.EncBinary() + _ = yym1667 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[3] { + yym1669 := z.EncBinary() + _ = yym1669 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1658[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1670 := z.EncBinary() + _ = yym1670 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[4] { + yy1672 := &x.StartedAt + yym1673 := z.EncBinary() + _ = yym1673 + if false { + } else if z.HasExtensions() && z.EncExt(yy1672) { + } else if yym1673 { + z.EncBinaryMarshal(yy1672) + } else if !yym1673 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1672) + } else { + z.EncFallback(yy1672) + } + } else { + r.EncodeNil() + } + } else { + if yyq1658[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1674 := &x.StartedAt + yym1675 := z.EncBinary() + _ = yym1675 + if false { + } else if z.HasExtensions() && z.EncExt(yy1674) { + } else if yym1675 { + z.EncBinaryMarshal(yy1674) + } else if !yym1675 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1674) + } else { + z.EncFallback(yy1674) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[5] { + yy1677 := &x.FinishedAt + yym1678 := z.EncBinary() + _ = yym1678 + if false { + } else if z.HasExtensions() && z.EncExt(yy1677) { + } else if yym1678 { + z.EncBinaryMarshal(yy1677) + } else if !yym1678 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1677) + } else { + z.EncFallback(yy1677) + } + } else { + r.EncodeNil() + } + } else { + if yyq1658[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finishedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1679 := &x.FinishedAt + yym1680 := z.EncBinary() + _ = yym1680 + if false { + } else if z.HasExtensions() && z.EncExt(yy1679) { + } else if yym1680 { + z.EncBinaryMarshal(yy1679) + } else if !yym1680 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1679) + } else { + z.EncFallback(yy1679) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[6] { + yym1682 := z.EncBinary() + _ = yym1682 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1658[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1683 := z.EncBinary() + _ = yym1683 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateTerminated) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1684 := z.DecBinary() + _ = yym1684 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1685 := r.ContainerType() + if yyct1685 == codecSelferValueTypeMap1234 { + yyl1685 := r.ReadMapStart() + if yyl1685 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1685, d) + } + } else if yyct1685 == codecSelferValueTypeArray1234 { + yyl1685 := r.ReadArrayStart() + if yyl1685 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1685, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1686Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1686Slc + var yyhl1686 bool = l >= 0 + for yyj1686 := 0; ; yyj1686++ { + if yyhl1686 { + if yyj1686 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1686Slc = r.DecodeBytes(yys1686Slc, true, true) + yys1686 := string(yys1686Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1686 { + case "exitCode": + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + x.ExitCode = int32(r.DecodeInt(32)) + } + case "signal": + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + x.Signal = int32(r.DecodeInt(32)) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1691 := &x.StartedAt + yym1692 := z.DecBinary() + _ = yym1692 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1691) { + } else if yym1692 { + z.DecBinaryUnmarshal(yyv1691) + } else if !yym1692 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1691) + } else { + z.DecFallback(yyv1691, false) + } + } + case "finishedAt": + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_unversioned.Time{} + } else { + yyv1693 := &x.FinishedAt + yym1694 := z.DecBinary() + _ = yym1694 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1693) { + } else if yym1694 { + z.DecBinaryUnmarshal(yyv1693) + } else if !yym1694 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1693) + } else { + z.DecFallback(yyv1693, false) + } + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1686) + } // end switch yys1686 + } // end for yyj1686 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1696 int + var yyb1696 bool + var yyhl1696 bool = l >= 0 + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + x.ExitCode = int32(r.DecodeInt(32)) + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + x.Signal = int32(r.DecodeInt(32)) + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1701 := &x.StartedAt + yym1702 := z.DecBinary() + _ = yym1702 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1701) { + } else if yym1702 { + z.DecBinaryUnmarshal(yyv1701) + } else if !yym1702 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1701) + } else { + z.DecFallback(yyv1701, false) + } + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_unversioned.Time{} + } else { + yyv1703 := &x.FinishedAt + yym1704 := z.DecBinary() + _ = yym1704 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1703) { + } else if yym1704 { + z.DecBinaryUnmarshal(yyv1703) + } else if !yym1704 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1703) + } else { + z.DecFallback(yyv1703, false) + } + } + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + for { + yyj1696++ + if yyhl1696 { + yyb1696 = yyj1696 > l + } else { + yyb1696 = r.CheckBreak() + } + if yyb1696 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1696-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerState) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1706 := z.EncBinary() + _ = yym1706 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1707 := !z.EncBinary() + yy2arr1707 := z.EncBasicHandle().StructToArray + var yyq1707 [3]bool + _, _, _ = yysep1707, yyq1707, yy2arr1707 + const yyr1707 bool = false + yyq1707[0] = x.Waiting != nil + yyq1707[1] = x.Running != nil + yyq1707[2] = x.Terminated != nil + var yynn1707 int + if yyr1707 || yy2arr1707 { + r.EncodeArrayStart(3) + } else { + yynn1707 = 0 + for _, b := range yyq1707 { + if b { + yynn1707++ + } + } + r.EncodeMapStart(yynn1707) + yynn1707 = 0 + } + if yyr1707 || yy2arr1707 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1707[0] { + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1707[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("waiting")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } + } + if yyr1707 || yy2arr1707 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1707[1] { + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1707[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("running")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } + } + if yyr1707 || yy2arr1707 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1707[2] { + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1707[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } + } + if yyr1707 || yy2arr1707 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerState) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1711 := z.DecBinary() + _ = yym1711 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1712 := r.ContainerType() + if yyct1712 == codecSelferValueTypeMap1234 { + yyl1712 := r.ReadMapStart() + if yyl1712 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1712, d) + } + } else if yyct1712 == codecSelferValueTypeArray1234 { + yyl1712 := r.ReadArrayStart() + if yyl1712 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1712, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerState) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1713Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1713Slc + var yyhl1713 bool = l >= 0 + for yyj1713 := 0; ; yyj1713++ { + if yyhl1713 { + if yyj1713 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1713Slc = r.DecodeBytes(yys1713Slc, true, true) + yys1713 := string(yys1713Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1713 { + case "waiting": + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + case "running": + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + case "terminated": + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1713) + } // end switch yys1713 + } // end for yyj1713 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerState) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1717 int + var yyb1717 bool + var yyhl1717 bool = l >= 0 + yyj1717++ + if yyhl1717 { + yyb1717 = yyj1717 > l + } else { + yyb1717 = r.CheckBreak() + } + if yyb1717 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + yyj1717++ + if yyhl1717 { + yyb1717 = yyj1717 > l + } else { + yyb1717 = r.CheckBreak() + } + if yyb1717 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + yyj1717++ + if yyhl1717 { + yyb1717 = yyj1717 > l + } else { + yyb1717 = r.CheckBreak() + } + if yyb1717 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + for { + yyj1717++ + if yyhl1717 { + yyb1717 = yyj1717 > l + } else { + yyb1717 = r.CheckBreak() + } + if yyb1717 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1717-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1721 := z.EncBinary() + _ = yym1721 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1722 := !z.EncBinary() + yy2arr1722 := z.EncBasicHandle().StructToArray + var yyq1722 [8]bool + _, _, _ = yysep1722, yyq1722, yy2arr1722 + const yyr1722 bool = false + yyq1722[1] = true + yyq1722[2] = true + yyq1722[7] = x.ContainerID != "" + var yynn1722 int + if yyr1722 || yy2arr1722 { + r.EncodeArrayStart(8) + } else { + yynn1722 = 5 + for _, b := range yyq1722 { + if b { + yynn1722++ + } + } + r.EncodeMapStart(yynn1722) + yynn1722 = 0 + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1724 := z.EncBinary() + _ = yym1724 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1725 := z.EncBinary() + _ = yym1725 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1722[1] { + yy1727 := &x.State + yy1727.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1722[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("state")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1728 := &x.State + yy1728.CodecEncodeSelf(e) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1722[2] { + yy1730 := &x.LastTerminationState + yy1730.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1722[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastState")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1731 := &x.LastTerminationState + yy1731.CodecEncodeSelf(e) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1733 := z.EncBinary() + _ = yym1733 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ready")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1734 := z.EncBinary() + _ = yym1734 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1736 := z.EncBinary() + _ = yym1736 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1737 := z.EncBinary() + _ = yym1737 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1739 := z.EncBinary() + _ = yym1739 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1740 := z.EncBinary() + _ = yym1740 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1742 := z.EncBinary() + _ = yym1742 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imageID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1743 := z.EncBinary() + _ = yym1743 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1722[7] { + yym1745 := z.EncBinary() + _ = yym1745 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1722[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1746 := z.EncBinary() + _ = yym1746 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr1722 || yy2arr1722 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1747 := z.DecBinary() + _ = yym1747 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1748 := r.ContainerType() + if yyct1748 == codecSelferValueTypeMap1234 { + yyl1748 := r.ReadMapStart() + if yyl1748 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1748, d) + } + } else if yyct1748 == codecSelferValueTypeArray1234 { + yyl1748 := r.ReadArrayStart() + if yyl1748 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1748, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1749Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1749Slc + var yyhl1749 bool = l >= 0 + for yyj1749 := 0; ; yyj1749++ { + if yyhl1749 { + if yyj1749 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1749Slc = r.DecodeBytes(yys1749Slc, true, true) + yys1749 := string(yys1749Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1749 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "state": + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv1751 := &x.State + yyv1751.CodecDecodeSelf(d) + } + case "lastState": + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv1752 := &x.LastTerminationState + yyv1752.CodecDecodeSelf(d) + } + case "ready": + if r.TryDecodeAsNil() { + x.Ready = false + } else { + x.Ready = bool(r.DecodeBool()) + } + case "restartCount": + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + x.RestartCount = int32(r.DecodeInt(32)) + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + case "imageID": + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + x.ImageID = string(r.DecodeString()) + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1749) + } // end switch yys1749 + } // end for yyj1749 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1758 int + var yyb1758 bool + var yyhl1758 bool = l >= 0 + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv1760 := &x.State + yyv1760.CodecDecodeSelf(d) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv1761 := &x.LastTerminationState + yyv1761.CodecDecodeSelf(d) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ready = false + } else { + x.Ready = bool(r.DecodeBool()) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + x.RestartCount = int32(r.DecodeInt(32)) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + x.ImageID = string(r.DecodeString()) + } + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + for { + yyj1758++ + if yyhl1758 { + yyb1758 = yyj1758 > l + } else { + yyb1758 = r.CheckBreak() + } + if yyb1758 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1758-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PodPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1767 := z.EncBinary() + _ = yym1767 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1768 := z.DecBinary() + _ = yym1768 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PodConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1769 := z.EncBinary() + _ = yym1769 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1770 := z.DecBinary() + _ = yym1770 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1771 := z.EncBinary() + _ = yym1771 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1772 := !z.EncBinary() + yy2arr1772 := z.EncBasicHandle().StructToArray + var yyq1772 [6]bool + _, _, _ = yysep1772, yyq1772, yy2arr1772 + const yyr1772 bool = false + yyq1772[2] = true + yyq1772[3] = true + yyq1772[4] = x.Reason != "" + yyq1772[5] = x.Message != "" + var yynn1772 int + if yyr1772 || yy2arr1772 { + r.EncodeArrayStart(6) + } else { + yynn1772 = 2 + for _, b := range yyq1772 { + if b { + yynn1772++ + } + } + r.EncodeMapStart(yynn1772) + yynn1772 = 0 + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1772[2] { + yy1776 := &x.LastProbeTime + yym1777 := z.EncBinary() + _ = yym1777 + if false { + } else if z.HasExtensions() && z.EncExt(yy1776) { + } else if yym1777 { + z.EncBinaryMarshal(yy1776) + } else if !yym1777 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1776) + } else { + z.EncFallback(yy1776) + } + } else { + r.EncodeNil() + } + } else { + if yyq1772[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1778 := &x.LastProbeTime + yym1779 := z.EncBinary() + _ = yym1779 + if false { + } else if z.HasExtensions() && z.EncExt(yy1778) { + } else if yym1779 { + z.EncBinaryMarshal(yy1778) + } else if !yym1779 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1778) + } else { + z.EncFallback(yy1778) + } + } + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1772[3] { + yy1781 := &x.LastTransitionTime + yym1782 := z.EncBinary() + _ = yym1782 + if false { + } else if z.HasExtensions() && z.EncExt(yy1781) { + } else if yym1782 { + z.EncBinaryMarshal(yy1781) + } else if !yym1782 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1781) + } else { + z.EncFallback(yy1781) + } + } else { + r.EncodeNil() + } + } else { + if yyq1772[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1783 := &x.LastTransitionTime + yym1784 := z.EncBinary() + _ = yym1784 + if false { + } else if z.HasExtensions() && z.EncExt(yy1783) { + } else if yym1784 { + z.EncBinaryMarshal(yy1783) + } else if !yym1784 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1783) + } else { + z.EncFallback(yy1783) + } + } + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1772[4] { + yym1786 := z.EncBinary() + _ = yym1786 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1772[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1787 := z.EncBinary() + _ = yym1787 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1772[5] { + yym1789 := z.EncBinary() + _ = yym1789 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1772[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1790 := z.EncBinary() + _ = yym1790 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1772 || yy2arr1772 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1791 := z.DecBinary() + _ = yym1791 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1792 := r.ContainerType() + if yyct1792 == codecSelferValueTypeMap1234 { + yyl1792 := r.ReadMapStart() + if yyl1792 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1792, d) + } + } else if yyct1792 == codecSelferValueTypeArray1234 { + yyl1792 := r.ReadArrayStart() + if yyl1792 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1792, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1793Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1793Slc + var yyhl1793 bool = l >= 0 + for yyj1793 := 0; ; yyj1793++ { + if yyhl1793 { + if yyj1793 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1793Slc = r.DecodeBytes(yys1793Slc, true, true) + yys1793 := string(yys1793Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1793 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = PodConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_unversioned.Time{} + } else { + yyv1796 := &x.LastProbeTime + yym1797 := z.DecBinary() + _ = yym1797 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1796) { + } else if yym1797 { + z.DecBinaryUnmarshal(yyv1796) + } else if !yym1797 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1796) + } else { + z.DecFallback(yyv1796, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv1798 := &x.LastTransitionTime + yym1799 := z.DecBinary() + _ = yym1799 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1798) { + } else if yym1799 { + z.DecBinaryUnmarshal(yyv1798) + } else if !yym1799 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1798) + } else { + z.DecFallback(yyv1798, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1793) + } // end switch yys1793 + } // end for yyj1793 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1802 int + var yyb1802 bool + var yyhl1802 bool = l >= 0 + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = PodConditionType(r.DecodeString()) + } + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_unversioned.Time{} + } else { + yyv1805 := &x.LastProbeTime + yym1806 := z.DecBinary() + _ = yym1806 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1805) { + } else if yym1806 { + z.DecBinaryUnmarshal(yyv1805) + } else if !yym1806 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1805) + } else { + z.DecFallback(yyv1805, false) + } + } + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv1807 := &x.LastTransitionTime + yym1808 := z.DecBinary() + _ = yym1808 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1807) { + } else if yym1808 { + z.DecBinaryUnmarshal(yyv1807) + } else if !yym1808 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1807) + } else { + z.DecFallback(yyv1807, false) + } + } + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj1802++ + if yyhl1802 { + yyb1802 = yyj1802 > l + } else { + yyb1802 = r.CheckBreak() + } + if yyb1802 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1802-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RestartPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1811 := z.EncBinary() + _ = yym1811 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RestartPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1812 := z.DecBinary() + _ = yym1812 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1813 := z.EncBinary() + _ = yym1813 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1814 := !z.EncBinary() + yy2arr1814 := z.EncBasicHandle().StructToArray + var yyq1814 [4]bool + _, _, _ = yysep1814, yyq1814, yy2arr1814 + const yyr1814 bool = false + yyq1814[0] = x.Kind != "" + yyq1814[1] = x.APIVersion != "" + yyq1814[2] = true + var yynn1814 int + if yyr1814 || yy2arr1814 { + r.EncodeArrayStart(4) + } else { + yynn1814 = 1 + for _, b := range yyq1814 { + if b { + yynn1814++ + } + } + r.EncodeMapStart(yynn1814) + yynn1814 = 0 + } + if yyr1814 || yy2arr1814 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1814[0] { + yym1816 := z.EncBinary() + _ = yym1816 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1814[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1817 := z.EncBinary() + _ = yym1817 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1814 || yy2arr1814 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1814[1] { + yym1819 := z.EncBinary() + _ = yym1819 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1814[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1820 := z.EncBinary() + _ = yym1820 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1814 || yy2arr1814 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1814[2] { + yy1822 := &x.ListMeta + yym1823 := z.EncBinary() + _ = yym1823 + if false { + } else if z.HasExtensions() && z.EncExt(yy1822) { + } else { + z.EncFallback(yy1822) + } + } else { + r.EncodeNil() + } + } else { + if yyq1814[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1824 := &x.ListMeta + yym1825 := z.EncBinary() + _ = yym1825 + if false { + } else if z.HasExtensions() && z.EncExt(yy1824) { + } else { + z.EncFallback(yy1824) + } + } + } + if yyr1814 || yy2arr1814 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1827 := z.EncBinary() + _ = yym1827 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1828 := z.EncBinary() + _ = yym1828 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } + if yyr1814 || yy2arr1814 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1829 := z.DecBinary() + _ = yym1829 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1830 := r.ContainerType() + if yyct1830 == codecSelferValueTypeMap1234 { + yyl1830 := r.ReadMapStart() + if yyl1830 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1830, d) + } + } else if yyct1830 == codecSelferValueTypeArray1234 { + yyl1830 := r.ReadArrayStart() + if yyl1830 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1830, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1831Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1831Slc + var yyhl1831 bool = l >= 0 + for yyj1831 := 0; ; yyj1831++ { + if yyhl1831 { + if yyj1831 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1831Slc = r.DecodeBytes(yys1831Slc, true, true) + yys1831 := string(yys1831Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1831 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv1834 := &x.ListMeta + yym1835 := z.DecBinary() + _ = yym1835 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1834) { + } else { + z.DecFallback(yyv1834, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1836 := &x.Items + yym1837 := z.DecBinary() + _ = yym1837 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv1836), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1831) + } // end switch yys1831 + } // end for yyj1831 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1838 int + var yyb1838 bool + var yyhl1838 bool = l >= 0 + yyj1838++ + if yyhl1838 { + yyb1838 = yyj1838 > l + } else { + yyb1838 = r.CheckBreak() + } + if yyb1838 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1838++ + if yyhl1838 { + yyb1838 = yyj1838 > l + } else { + yyb1838 = r.CheckBreak() + } + if yyb1838 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1838++ + if yyhl1838 { + yyb1838 = yyj1838 > l + } else { + yyb1838 = r.CheckBreak() + } + if yyb1838 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv1841 := &x.ListMeta + yym1842 := z.DecBinary() + _ = yym1842 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1841) { + } else { + z.DecFallback(yyv1841, false) + } + } + yyj1838++ + if yyhl1838 { + yyb1838 = yyj1838 > l + } else { + yyb1838 = r.CheckBreak() + } + if yyb1838 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1843 := &x.Items + yym1844 := z.DecBinary() + _ = yym1844 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv1843), d) + } + } + for { + yyj1838++ + if yyhl1838 { + yyb1838 = yyj1838 > l + } else { + yyb1838 = r.CheckBreak() + } + if yyb1838 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1838-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DNSPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1845 := z.EncBinary() + _ = yym1845 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DNSPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1846 := z.DecBinary() + _ = yym1846 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1847 := z.EncBinary() + _ = yym1847 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1848 := !z.EncBinary() + yy2arr1848 := z.EncBasicHandle().StructToArray + var yyq1848 [1]bool + _, _, _ = yysep1848, yyq1848, yy2arr1848 + const yyr1848 bool = false + var yynn1848 int + if yyr1848 || yy2arr1848 { + r.EncodeArrayStart(1) + } else { + yynn1848 = 1 + for _, b := range yyq1848 { + if b { + yynn1848++ + } + } + r.EncodeMapStart(yynn1848) + yynn1848 = 0 + } + if yyr1848 || yy2arr1848 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym1850 := z.EncBinary() + _ = yym1850 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelectorTerms")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym1851 := z.EncBinary() + _ = yym1851 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } + if yyr1848 || yy2arr1848 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1852 := z.DecBinary() + _ = yym1852 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1853 := r.ContainerType() + if yyct1853 == codecSelferValueTypeMap1234 { + yyl1853 := r.ReadMapStart() + if yyl1853 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1853, d) + } + } else if yyct1853 == codecSelferValueTypeArray1234 { + yyl1853 := r.ReadArrayStart() + if yyl1853 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1853, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1854Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1854Slc + var yyhl1854 bool = l >= 0 + for yyj1854 := 0; ; yyj1854++ { + if yyhl1854 { + if yyj1854 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1854Slc = r.DecodeBytes(yys1854Slc, true, true) + yys1854 := string(yys1854Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1854 { + case "nodeSelectorTerms": + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv1855 := &x.NodeSelectorTerms + yym1856 := z.DecBinary() + _ = yym1856 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv1855), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1854) + } // end switch yys1854 + } // end for yyj1854 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1857 int + var yyb1857 bool + var yyhl1857 bool = l >= 0 + yyj1857++ + if yyhl1857 { + yyb1857 = yyj1857 > l + } else { + yyb1857 = r.CheckBreak() + } + if yyb1857 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv1858 := &x.NodeSelectorTerms + yym1859 := z.DecBinary() + _ = yym1859 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv1858), d) + } + } + for { + yyj1857++ + if yyhl1857 { + yyb1857 = yyj1857 > l + } else { + yyb1857 = r.CheckBreak() + } + if yyb1857 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1857-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1860 := z.EncBinary() + _ = yym1860 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1861 := !z.EncBinary() + yy2arr1861 := z.EncBasicHandle().StructToArray + var yyq1861 [1]bool + _, _, _ = yysep1861, yyq1861, yy2arr1861 + const yyr1861 bool = false + var yynn1861 int + if yyr1861 || yy2arr1861 { + r.EncodeArrayStart(1) + } else { + yynn1861 = 1 + for _, b := range yyq1861 { + if b { + yynn1861++ + } + } + r.EncodeMapStart(yynn1861) + yynn1861 = 0 + } + if yyr1861 || yy2arr1861 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1863 := z.EncBinary() + _ = yym1863 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1864 := z.EncBinary() + _ = yym1864 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } + if yyr1861 || yy2arr1861 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1865 := z.DecBinary() + _ = yym1865 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1866 := r.ContainerType() + if yyct1866 == codecSelferValueTypeMap1234 { + yyl1866 := r.ReadMapStart() + if yyl1866 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1866, d) + } + } else if yyct1866 == codecSelferValueTypeArray1234 { + yyl1866 := r.ReadArrayStart() + if yyl1866 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1866, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1867Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1867Slc + var yyhl1867 bool = l >= 0 + for yyj1867 := 0; ; yyj1867++ { + if yyhl1867 { + if yyj1867 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1867Slc = r.DecodeBytes(yys1867Slc, true, true) + yys1867 := string(yys1867Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1867 { + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1868 := &x.MatchExpressions + yym1869 := z.DecBinary() + _ = yym1869 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv1868), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1867) + } // end switch yys1867 + } // end for yyj1867 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1870 int + var yyb1870 bool + var yyhl1870 bool = l >= 0 + yyj1870++ + if yyhl1870 { + yyb1870 = yyj1870 > l + } else { + yyb1870 = r.CheckBreak() + } + if yyb1870 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1871 := &x.MatchExpressions + yym1872 := z.DecBinary() + _ = yym1872 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv1871), d) + } + } + for { + yyj1870++ + if yyhl1870 { + yyb1870 = yyj1870 > l + } else { + yyb1870 = r.CheckBreak() + } + if yyb1870 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1870-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1873 := z.EncBinary() + _ = yym1873 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1874 := !z.EncBinary() + yy2arr1874 := z.EncBasicHandle().StructToArray + var yyq1874 [3]bool + _, _, _ = yysep1874, yyq1874, yy2arr1874 + const yyr1874 bool = false + yyq1874[2] = len(x.Values) != 0 + var yynn1874 int + if yyr1874 || yy2arr1874 { + r.EncodeArrayStart(3) + } else { + yynn1874 = 2 + for _, b := range yyq1874 { + if b { + yynn1874++ + } + } + r.EncodeMapStart(yynn1874) + yynn1874 = 0 + } + if yyr1874 || yy2arr1874 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1876 := z.EncBinary() + _ = yym1876 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1877 := z.EncBinary() + _ = yym1877 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1874 || yy2arr1874 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr1874 || yy2arr1874 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1874[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym1880 := z.EncBinary() + _ = yym1880 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1874[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym1881 := z.EncBinary() + _ = yym1881 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr1874 || yy2arr1874 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1882 := z.DecBinary() + _ = yym1882 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1883 := r.ContainerType() + if yyct1883 == codecSelferValueTypeMap1234 { + yyl1883 := r.ReadMapStart() + if yyl1883 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1883, d) + } + } else if yyct1883 == codecSelferValueTypeArray1234 { + yyl1883 := r.ReadArrayStart() + if yyl1883 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1883, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1884Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1884Slc + var yyhl1884 bool = l >= 0 + for yyj1884 := 0; ; yyj1884++ { + if yyhl1884 { + if yyj1884 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1884Slc = r.DecodeBytes(yys1884Slc, true, true) + yys1884 := string(yys1884Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1884 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = NodeSelectorOperator(r.DecodeString()) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1887 := &x.Values + yym1888 := z.DecBinary() + _ = yym1888 + if false { + } else { + z.F.DecSliceStringX(yyv1887, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1884) + } // end switch yys1884 + } // end for yyj1884 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1889 int + var yyb1889 bool + var yyhl1889 bool = l >= 0 + yyj1889++ + if yyhl1889 { + yyb1889 = yyj1889 > l + } else { + yyb1889 = r.CheckBreak() + } + if yyb1889 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1889++ + if yyhl1889 { + yyb1889 = yyj1889 > l + } else { + yyb1889 = r.CheckBreak() + } + if yyb1889 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = NodeSelectorOperator(r.DecodeString()) + } + yyj1889++ + if yyhl1889 { + yyb1889 = yyj1889 > l + } else { + yyb1889 = r.CheckBreak() + } + if yyb1889 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1892 := &x.Values + yym1893 := z.DecBinary() + _ = yym1893 + if false { + } else { + z.F.DecSliceStringX(yyv1892, false, d) + } + } + for { + yyj1889++ + if yyhl1889 { + yyb1889 = yyj1889 > l + } else { + yyb1889 = r.CheckBreak() + } + if yyb1889 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1889-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1894 := z.EncBinary() + _ = yym1894 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1895 := z.DecBinary() + _ = yym1895 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Affinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1896 := z.EncBinary() + _ = yym1896 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1897 := !z.EncBinary() + yy2arr1897 := z.EncBasicHandle().StructToArray + var yyq1897 [3]bool + _, _, _ = yysep1897, yyq1897, yy2arr1897 + const yyr1897 bool = false + yyq1897[0] = x.NodeAffinity != nil + yyq1897[1] = x.PodAffinity != nil + yyq1897[2] = x.PodAntiAffinity != nil + var yynn1897 int + if yyr1897 || yy2arr1897 { + r.EncodeArrayStart(3) + } else { + yynn1897 = 0 + for _, b := range yyq1897 { + if b { + yynn1897++ + } + } + r.EncodeMapStart(yynn1897) + yynn1897 = 0 + } + if yyr1897 || yy2arr1897 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1897[0] { + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1897[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1897 || yy2arr1897 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1897[1] { + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1897[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1897 || yy2arr1897 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1897[2] { + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1897[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAntiAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1897 || yy2arr1897 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Affinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1901 := z.DecBinary() + _ = yym1901 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1902 := r.ContainerType() + if yyct1902 == codecSelferValueTypeMap1234 { + yyl1902 := r.ReadMapStart() + if yyl1902 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1902, d) + } + } else if yyct1902 == codecSelferValueTypeArray1234 { + yyl1902 := r.ReadArrayStart() + if yyl1902 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1902, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Affinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1903Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1903Slc + var yyhl1903 bool = l >= 0 + for yyj1903 := 0; ; yyj1903++ { + if yyhl1903 { + if yyj1903 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1903Slc = r.DecodeBytes(yys1903Slc, true, true) + yys1903 := string(yys1903Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1903 { + case "nodeAffinity": + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + case "podAffinity": + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + case "podAntiAffinity": + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1903) + } // end switch yys1903 + } // end for yyj1903 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Affinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1907 int + var yyb1907 bool + var yyhl1907 bool = l >= 0 + yyj1907++ + if yyhl1907 { + yyb1907 = yyj1907 > l + } else { + yyb1907 = r.CheckBreak() + } + if yyb1907 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + yyj1907++ + if yyhl1907 { + yyb1907 = yyj1907 > l + } else { + yyb1907 = r.CheckBreak() + } + if yyb1907 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + yyj1907++ + if yyhl1907 { + yyb1907 = yyj1907 > l + } else { + yyb1907 = r.CheckBreak() + } + if yyb1907 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + for { + yyj1907++ + if yyhl1907 { + yyb1907 = yyj1907 > l + } else { + yyb1907 = r.CheckBreak() + } + if yyb1907 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1907-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1911 := z.EncBinary() + _ = yym1911 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1912 := !z.EncBinary() + yy2arr1912 := z.EncBasicHandle().StructToArray + var yyq1912 [2]bool + _, _, _ = yysep1912, yyq1912, yy2arr1912 + const yyr1912 bool = false + yyq1912[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq1912[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1912 int + if yyr1912 || yy2arr1912 { + r.EncodeArrayStart(2) + } else { + yynn1912 = 0 + for _, b := range yyq1912 { + if b { + yynn1912++ + } + } + r.EncodeMapStart(yynn1912) + yynn1912 = 0 + } + if yyr1912 || yy2arr1912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1912[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1914 := z.EncBinary() + _ = yym1914 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1912[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1915 := z.EncBinary() + _ = yym1915 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1912 || yy2arr1912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1912[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1917 := z.EncBinary() + _ = yym1917 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1912[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1918 := z.EncBinary() + _ = yym1918 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1912 || yy2arr1912 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1919 := z.DecBinary() + _ = yym1919 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1920 := r.ContainerType() + if yyct1920 == codecSelferValueTypeMap1234 { + yyl1920 := r.ReadMapStart() + if yyl1920 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1920, d) + } + } else if yyct1920 == codecSelferValueTypeArray1234 { + yyl1920 := r.ReadArrayStart() + if yyl1920 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1920, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1921Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1921Slc + var yyhl1921 bool = l >= 0 + for yyj1921 := 0; ; yyj1921++ { + if yyhl1921 { + if yyj1921 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1921Slc = r.DecodeBytes(yys1921Slc, true, true) + yys1921 := string(yys1921Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1921 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1922 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1923 := z.DecBinary() + _ = yym1923 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1922), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1924 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1925 := z.DecBinary() + _ = yym1925 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1924), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1921) + } // end switch yys1921 + } // end for yyj1921 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1926 int + var yyb1926 bool + var yyhl1926 bool = l >= 0 + yyj1926++ + if yyhl1926 { + yyb1926 = yyj1926 > l + } else { + yyb1926 = r.CheckBreak() + } + if yyb1926 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1927 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1928 := z.DecBinary() + _ = yym1928 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1927), d) + } + } + yyj1926++ + if yyhl1926 { + yyb1926 = yyj1926 > l + } else { + yyb1926 = r.CheckBreak() + } + if yyb1926 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1929 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1930 := z.DecBinary() + _ = yym1930 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1929), d) + } + } + for { + yyj1926++ + if yyhl1926 { + yyb1926 = yyj1926 > l + } else { + yyb1926 = r.CheckBreak() + } + if yyb1926 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1926-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAntiAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1931 := z.EncBinary() + _ = yym1931 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1932 := !z.EncBinary() + yy2arr1932 := z.EncBasicHandle().StructToArray + var yyq1932 [2]bool + _, _, _ = yysep1932, yyq1932, yy2arr1932 + const yyr1932 bool = false + yyq1932[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq1932[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1932 int + if yyr1932 || yy2arr1932 { + r.EncodeArrayStart(2) + } else { + yynn1932 = 0 + for _, b := range yyq1932 { + if b { + yynn1932++ + } + } + r.EncodeMapStart(yynn1932) + yynn1932 = 0 + } + if yyr1932 || yy2arr1932 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1932[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1934 := z.EncBinary() + _ = yym1934 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1932[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1935 := z.EncBinary() + _ = yym1935 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1932 || yy2arr1932 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1932[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1937 := z.EncBinary() + _ = yym1937 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1932[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1938 := z.EncBinary() + _ = yym1938 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1932 || yy2arr1932 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAntiAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1939 := z.DecBinary() + _ = yym1939 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1940 := r.ContainerType() + if yyct1940 == codecSelferValueTypeMap1234 { + yyl1940 := r.ReadMapStart() + if yyl1940 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1940, d) + } + } else if yyct1940 == codecSelferValueTypeArray1234 { + yyl1940 := r.ReadArrayStart() + if yyl1940 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1940, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAntiAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1941Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1941Slc + var yyhl1941 bool = l >= 0 + for yyj1941 := 0; ; yyj1941++ { + if yyhl1941 { + if yyj1941 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1941Slc = r.DecodeBytes(yys1941Slc, true, true) + yys1941 := string(yys1941Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1941 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1942 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1943 := z.DecBinary() + _ = yym1943 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1942), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1944 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1945 := z.DecBinary() + _ = yym1945 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1944), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1941) + } // end switch yys1941 + } // end for yyj1941 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAntiAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1946 int + var yyb1946 bool + var yyhl1946 bool = l >= 0 + yyj1946++ + if yyhl1946 { + yyb1946 = yyj1946 > l + } else { + yyb1946 = r.CheckBreak() + } + if yyb1946 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1947 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1948 := z.DecBinary() + _ = yym1948 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1947), d) + } + } + yyj1946++ + if yyhl1946 { + yyb1946 = yyj1946 > l + } else { + yyb1946 = r.CheckBreak() + } + if yyb1946 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1949 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1950 := z.DecBinary() + _ = yym1950 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1949), d) + } + } + for { + yyj1946++ + if yyhl1946 { + yyb1946 = yyj1946 > l + } else { + yyb1946 = r.CheckBreak() + } + if yyb1946 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1946-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *WeightedPodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1951 := z.EncBinary() + _ = yym1951 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1952 := !z.EncBinary() + yy2arr1952 := z.EncBasicHandle().StructToArray + var yyq1952 [2]bool + _, _, _ = yysep1952, yyq1952, yy2arr1952 + const yyr1952 bool = false + var yynn1952 int + if yyr1952 || yy2arr1952 { + r.EncodeArrayStart(2) + } else { + yynn1952 = 2 + for _, b := range yyq1952 { + if b { + yynn1952++ + } + } + r.EncodeMapStart(yynn1952) + yynn1952 = 0 + } + if yyr1952 || yy2arr1952 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1954 := z.EncBinary() + _ = yym1954 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1955 := z.EncBinary() + _ = yym1955 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr1952 || yy2arr1952 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1957 := &x.PodAffinityTerm + yy1957.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinityTerm")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1958 := &x.PodAffinityTerm + yy1958.CodecEncodeSelf(e) + } + if yyr1952 || yy2arr1952 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *WeightedPodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1959 := z.DecBinary() + _ = yym1959 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1960 := r.ContainerType() + if yyct1960 == codecSelferValueTypeMap1234 { + yyl1960 := r.ReadMapStart() + if yyl1960 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1960, d) + } + } else if yyct1960 == codecSelferValueTypeArray1234 { + yyl1960 := r.ReadArrayStart() + if yyl1960 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1960, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1961Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1961Slc + var yyhl1961 bool = l >= 0 + for yyj1961 := 0; ; yyj1961++ { + if yyhl1961 { + if yyj1961 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1961Slc = r.DecodeBytes(yys1961Slc, true, true) + yys1961 := string(yys1961Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1961 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int(r.DecodeInt(codecSelferBitsize1234)) + } + case "podAffinityTerm": + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv1963 := &x.PodAffinityTerm + yyv1963.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1961) + } // end switch yys1961 + } // end for yyj1961 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1964 int + var yyb1964 bool + var yyhl1964 bool = l >= 0 + yyj1964++ + if yyhl1964 { + yyb1964 = yyj1964 > l + } else { + yyb1964 = r.CheckBreak() + } + if yyb1964 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int(r.DecodeInt(codecSelferBitsize1234)) + } + yyj1964++ + if yyhl1964 { + yyb1964 = yyj1964 > l + } else { + yyb1964 = r.CheckBreak() + } + if yyb1964 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv1966 := &x.PodAffinityTerm + yyv1966.CodecDecodeSelf(d) + } + for { + yyj1964++ + if yyhl1964 { + yyb1964 = yyj1964 > l + } else { + yyb1964 = r.CheckBreak() + } + if yyb1964 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1964-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1967 := z.EncBinary() + _ = yym1967 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1968 := !z.EncBinary() + yy2arr1968 := z.EncBasicHandle().StructToArray + var yyq1968 [3]bool + _, _, _ = yysep1968, yyq1968, yy2arr1968 + const yyr1968 bool = false + yyq1968[0] = x.LabelSelector != nil + yyq1968[2] = x.TopologyKey != "" + var yynn1968 int + if yyr1968 || yy2arr1968 { + r.EncodeArrayStart(3) + } else { + yynn1968 = 1 + for _, b := range yyq1968 { + if b { + yynn1968++ + } + } + r.EncodeMapStart(yynn1968) + yynn1968 = 0 + } + if yyr1968 || yy2arr1968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1968[0] { + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym1970 := z.EncBinary() + _ = yym1970 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1968[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym1971 := z.EncBinary() + _ = yym1971 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } + } + if yyr1968 || yy2arr1968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym1973 := z.EncBinary() + _ = yym1973 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaces")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym1974 := z.EncBinary() + _ = yym1974 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } + if yyr1968 || yy2arr1968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1968[2] { + yym1976 := z.EncBinary() + _ = yym1976 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1968[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("topologyKey")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1977 := z.EncBinary() + _ = yym1977 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } + } + if yyr1968 || yy2arr1968 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1978 := z.DecBinary() + _ = yym1978 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1979 := r.ContainerType() + if yyct1979 == codecSelferValueTypeMap1234 { + yyl1979 := r.ReadMapStart() + if yyl1979 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1979, d) + } + } else if yyct1979 == codecSelferValueTypeArray1234 { + yyl1979 := r.ReadArrayStart() + if yyl1979 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1979, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1980Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1980Slc + var yyhl1980 bool = l >= 0 + for yyj1980 := 0; ; yyj1980++ { + if yyhl1980 { + if yyj1980 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1980Slc = r.DecodeBytes(yys1980Slc, true, true) + yys1980 := string(yys1980Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1980 { + case "labelSelector": + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_unversioned.LabelSelector) + } + yym1982 := z.DecBinary() + _ = yym1982 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + case "namespaces": + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv1983 := &x.Namespaces + yym1984 := z.DecBinary() + _ = yym1984 + if false { + } else { + z.F.DecSliceStringX(yyv1983, false, d) + } + } + case "topologyKey": + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + x.TopologyKey = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1980) + } // end switch yys1980 + } // end for yyj1980 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1986 int + var yyb1986 bool + var yyhl1986 bool = l >= 0 + yyj1986++ + if yyhl1986 { + yyb1986 = yyj1986 > l + } else { + yyb1986 = r.CheckBreak() + } + if yyb1986 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_unversioned.LabelSelector) + } + yym1988 := z.DecBinary() + _ = yym1988 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + yyj1986++ + if yyhl1986 { + yyb1986 = yyj1986 > l + } else { + yyb1986 = r.CheckBreak() + } + if yyb1986 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv1989 := &x.Namespaces + yym1990 := z.DecBinary() + _ = yym1990 + if false { + } else { + z.F.DecSliceStringX(yyv1989, false, d) + } + } + yyj1986++ + if yyhl1986 { + yyb1986 = yyj1986 > l + } else { + yyb1986 = r.CheckBreak() + } + if yyb1986 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + x.TopologyKey = string(r.DecodeString()) + } + for { + yyj1986++ + if yyhl1986 { + yyb1986 = yyj1986 > l + } else { + yyb1986 = r.CheckBreak() + } + if yyb1986 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1986-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1992 := z.EncBinary() + _ = yym1992 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1993 := !z.EncBinary() + yy2arr1993 := z.EncBasicHandle().StructToArray + var yyq1993 [2]bool + _, _, _ = yysep1993, yyq1993, yy2arr1993 + const yyr1993 bool = false + yyq1993[0] = x.RequiredDuringSchedulingIgnoredDuringExecution != nil + yyq1993[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1993 int + if yyr1993 || yy2arr1993 { + r.EncodeArrayStart(2) + } else { + yynn1993 = 0 + for _, b := range yyq1993 { + if b { + yynn1993++ + } + } + r.EncodeMapStart(yynn1993) + yynn1993 = 0 + } + if yyr1993 || yy2arr1993 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1993[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1993[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } + } + if yyr1993 || yy2arr1993 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1993[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1996 := z.EncBinary() + _ = yym1996 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1993[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1997 := z.EncBinary() + _ = yym1997 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1993 || yy2arr1993 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1998 := z.DecBinary() + _ = yym1998 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1999 := r.ContainerType() + if yyct1999 == codecSelferValueTypeMap1234 { + yyl1999 := r.ReadMapStart() + if yyl1999 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1999, d) + } + } else if yyct1999 == codecSelferValueTypeArray1234 { + yyl1999 := r.ReadArrayStart() + if yyl1999 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1999, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2000Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2000Slc + var yyhl2000 bool = l >= 0 + for yyj2000 := 0; ; yyj2000++ { + if yyhl2000 { + if yyj2000 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2000Slc = r.DecodeBytes(yys2000Slc, true, true) + yys2000 := string(yys2000Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2000 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv2002 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym2003 := z.DecBinary() + _ = yym2003 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv2002), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2000) + } // end switch yys2000 + } // end for yyj2000 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2004 int + var yyb2004 bool + var yyhl2004 bool = l >= 0 + yyj2004++ + if yyhl2004 { + yyb2004 = yyj2004 > l + } else { + yyb2004 = r.CheckBreak() + } + if yyb2004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + yyj2004++ + if yyhl2004 { + yyb2004 = yyj2004 > l + } else { + yyb2004 = r.CheckBreak() + } + if yyb2004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv2006 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym2007 := z.DecBinary() + _ = yym2007 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv2006), d) + } + } + for { + yyj2004++ + if yyhl2004 { + yyb2004 = yyj2004 > l + } else { + yyb2004 = r.CheckBreak() + } + if yyb2004 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2004-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferredSchedulingTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2008 := z.EncBinary() + _ = yym2008 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2009 := !z.EncBinary() + yy2arr2009 := z.EncBasicHandle().StructToArray + var yyq2009 [2]bool + _, _, _ = yysep2009, yyq2009, yy2arr2009 + const yyr2009 bool = false + var yynn2009 int + if yyr2009 || yy2arr2009 { + r.EncodeArrayStart(2) + } else { + yynn2009 = 2 + for _, b := range yyq2009 { + if b { + yynn2009++ + } + } + r.EncodeMapStart(yynn2009) + yynn2009 = 0 + } + if yyr2009 || yy2arr2009 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2011 := z.EncBinary() + _ = yym2011 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2012 := z.EncBinary() + _ = yym2012 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr2009 || yy2arr2009 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2014 := &x.Preference + yy2014.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2015 := &x.Preference + yy2015.CodecEncodeSelf(e) + } + if yyr2009 || yy2arr2009 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferredSchedulingTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2016 := z.DecBinary() + _ = yym2016 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2017 := r.ContainerType() + if yyct2017 == codecSelferValueTypeMap1234 { + yyl2017 := r.ReadMapStart() + if yyl2017 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2017, d) + } + } else if yyct2017 == codecSelferValueTypeArray1234 { + yyl2017 := r.ReadArrayStart() + if yyl2017 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2017, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2018Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2018Slc + var yyhl2018 bool = l >= 0 + for yyj2018 := 0; ; yyj2018++ { + if yyhl2018 { + if yyj2018 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2018Slc = r.DecodeBytes(yys2018Slc, true, true) + yys2018 := string(yys2018Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2018 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + case "preference": + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv2020 := &x.Preference + yyv2020.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2018) + } // end switch yys2018 + } // end for yyj2018 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2021 int + var yyb2021 bool + var yyhl2021 bool = l >= 0 + yyj2021++ + if yyhl2021 { + yyb2021 = yyj2021 > l + } else { + yyb2021 = r.CheckBreak() + } + if yyb2021 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + yyj2021++ + if yyhl2021 { + yyb2021 = yyj2021 > l + } else { + yyb2021 = r.CheckBreak() + } + if yyb2021 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv2023 := &x.Preference + yyv2023.CodecDecodeSelf(d) + } + for { + yyj2021++ + if yyhl2021 { + yyb2021 = yyj2021 > l + } else { + yyb2021 = r.CheckBreak() + } + if yyb2021 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2021-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Taint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2024 := z.EncBinary() + _ = yym2024 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2025 := !z.EncBinary() + yy2arr2025 := z.EncBasicHandle().StructToArray + var yyq2025 [3]bool + _, _, _ = yysep2025, yyq2025, yy2arr2025 + const yyr2025 bool = false + yyq2025[1] = x.Value != "" + var yynn2025 int + if yyr2025 || yy2arr2025 { + r.EncodeArrayStart(3) + } else { + yynn2025 = 2 + for _, b := range yyq2025 { + if b { + yynn2025++ + } + } + r.EncodeMapStart(yynn2025) + yynn2025 = 0 + } + if yyr2025 || yy2arr2025 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2027 := z.EncBinary() + _ = yym2027 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2028 := z.EncBinary() + _ = yym2028 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr2025 || yy2arr2025 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2025[1] { + yym2030 := z.EncBinary() + _ = yym2030 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2025[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2031 := z.EncBinary() + _ = yym2031 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr2025 || yy2arr2025 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Effect.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + if yyr2025 || yy2arr2025 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Taint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2033 := z.DecBinary() + _ = yym2033 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2034 := r.ContainerType() + if yyct2034 == codecSelferValueTypeMap1234 { + yyl2034 := r.ReadMapStart() + if yyl2034 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2034, d) + } + } else if yyct2034 == codecSelferValueTypeArray1234 { + yyl2034 := r.ReadArrayStart() + if yyl2034 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2034, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Taint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2035Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2035Slc + var yyhl2035 bool = l >= 0 + for yyj2035 := 0; ; yyj2035++ { + if yyhl2035 { + if yyj2035 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2035Slc = r.DecodeBytes(yys2035Slc, true, true) + yys2035 := string(yys2035Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2035 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2035) + } // end switch yys2035 + } // end for yyj2035 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Taint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2039 int + var yyb2039 bool + var yyhl2039 bool = l >= 0 + yyj2039++ + if yyhl2039 { + yyb2039 = yyj2039 > l + } else { + yyb2039 = r.CheckBreak() + } + if yyb2039 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj2039++ + if yyhl2039 { + yyb2039 = yyj2039 > l + } else { + yyb2039 = r.CheckBreak() + } + if yyb2039 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj2039++ + if yyhl2039 { + yyb2039 = yyj2039 > l + } else { + yyb2039 = r.CheckBreak() + } + if yyb2039 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + for { + yyj2039++ + if yyhl2039 { + yyb2039 = yyj2039 > l + } else { + yyb2039 = r.CheckBreak() + } + if yyb2039 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2039-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TaintEffect) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2043 := z.EncBinary() + _ = yym2043 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TaintEffect) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2044 := z.DecBinary() + _ = yym2044 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Toleration) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2045 := z.EncBinary() + _ = yym2045 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2046 := !z.EncBinary() + yy2arr2046 := z.EncBasicHandle().StructToArray + var yyq2046 [4]bool + _, _, _ = yysep2046, yyq2046, yy2arr2046 + const yyr2046 bool = false + yyq2046[0] = x.Key != "" + yyq2046[1] = x.Operator != "" + yyq2046[2] = x.Value != "" + yyq2046[3] = x.Effect != "" + var yynn2046 int + if yyr2046 || yy2arr2046 { + r.EncodeArrayStart(4) + } else { + yynn2046 = 0 + for _, b := range yyq2046 { + if b { + yynn2046++ + } + } + r.EncodeMapStart(yynn2046) + yynn2046 = 0 + } + if yyr2046 || yy2arr2046 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2046[0] { + yym2048 := z.EncBinary() + _ = yym2048 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2046[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2049 := z.EncBinary() + _ = yym2049 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + } + if yyr2046 || yy2arr2046 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2046[1] { + x.Operator.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2046[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + } + if yyr2046 || yy2arr2046 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2046[2] { + yym2052 := z.EncBinary() + _ = yym2052 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2046[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2053 := z.EncBinary() + _ = yym2053 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr2046 || yy2arr2046 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2046[3] { + x.Effect.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2046[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + } + if yyr2046 || yy2arr2046 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Toleration) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2055 := z.DecBinary() + _ = yym2055 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2056 := r.ContainerType() + if yyct2056 == codecSelferValueTypeMap1234 { + yyl2056 := r.ReadMapStart() + if yyl2056 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2056, d) + } + } else if yyct2056 == codecSelferValueTypeArray1234 { + yyl2056 := r.ReadArrayStart() + if yyl2056 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2056, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Toleration) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2057Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2057Slc + var yyhl2057 bool = l >= 0 + for yyj2057 := 0; ; yyj2057++ { + if yyhl2057 { + if yyj2057 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2057Slc = r.DecodeBytes(yys2057Slc, true, true) + yys2057 := string(yys2057Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2057 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = TolerationOperator(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2057) + } // end switch yys2057 + } // end for yyj2057 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Toleration) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2062 int + var yyb2062 bool + var yyhl2062 bool = l >= 0 + yyj2062++ + if yyhl2062 { + yyb2062 = yyj2062 > l + } else { + yyb2062 = r.CheckBreak() + } + if yyb2062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj2062++ + if yyhl2062 { + yyb2062 = yyj2062 > l + } else { + yyb2062 = r.CheckBreak() + } + if yyb2062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = TolerationOperator(r.DecodeString()) + } + yyj2062++ + if yyhl2062 { + yyb2062 = yyj2062 > l + } else { + yyb2062 = r.CheckBreak() + } + if yyb2062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj2062++ + if yyhl2062 { + yyb2062 = yyj2062 > l + } else { + yyb2062 = r.CheckBreak() + } + if yyb2062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + for { + yyj2062++ + if yyhl2062 { + yyb2062 = yyj2062 > l + } else { + yyb2062 = r.CheckBreak() + } + if yyb2062 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2062-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TolerationOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2067 := z.EncBinary() + _ = yym2067 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TolerationOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2068 := z.DecBinary() + _ = yym2068 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2069 := z.EncBinary() + _ = yym2069 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2070 := !z.EncBinary() + yy2arr2070 := z.EncBasicHandle().StructToArray + var yyq2070 [13]bool + _, _, _ = yysep2070, yyq2070, yy2arr2070 + const yyr2070 bool = false + yyq2070[2] = x.RestartPolicy != "" + yyq2070[3] = x.TerminationGracePeriodSeconds != nil + yyq2070[4] = x.ActiveDeadlineSeconds != nil + yyq2070[5] = x.DNSPolicy != "" + yyq2070[6] = len(x.NodeSelector) != 0 + yyq2070[8] = x.NodeName != "" + yyq2070[9] = x.SecurityContext != nil + yyq2070[10] = len(x.ImagePullSecrets) != 0 + yyq2070[11] = x.Hostname != "" + yyq2070[12] = x.Subdomain != "" + var yynn2070 int + if yyr2070 || yy2arr2070 { + r.EncodeArrayStart(13) + } else { + yynn2070 = 3 + for _, b := range yyq2070 { + if b { + yynn2070++ + } + } + r.EncodeMapStart(yynn2070) + yynn2070 = 0 + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym2072 := z.EncBinary() + _ = yym2072 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym2073 := z.EncBinary() + _ = yym2073 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym2075 := z.EncBinary() + _ = yym2075 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym2076 := z.EncBinary() + _ = yym2076 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[2] { + x.RestartPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2070[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.RestartPolicy.CodecEncodeSelf(e) + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[3] { + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy2079 := *x.TerminationGracePeriodSeconds + yym2080 := z.EncBinary() + _ = yym2080 + if false { + } else { + r.EncodeInt(int64(yy2079)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2070[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy2081 := *x.TerminationGracePeriodSeconds + yym2082 := z.EncBinary() + _ = yym2082 + if false { + } else { + r.EncodeInt(int64(yy2081)) + } + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[4] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy2084 := *x.ActiveDeadlineSeconds + yym2085 := z.EncBinary() + _ = yym2085 + if false { + } else { + r.EncodeInt(int64(yy2084)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2070[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy2086 := *x.ActiveDeadlineSeconds + yym2087 := z.EncBinary() + _ = yym2087 + if false { + } else { + r.EncodeInt(int64(yy2086)) + } + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[5] { + x.DNSPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2070[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("dnsPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.DNSPolicy.CodecEncodeSelf(e) + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[6] { + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym2090 := z.EncBinary() + _ = yym2090 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2070[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym2091 := z.EncBinary() + _ = yym2091 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2093 := z.EncBinary() + _ = yym2093 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceAccountName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2094 := z.EncBinary() + _ = yym2094 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[8] { + yym2096 := z.EncBinary() + _ = yym2096 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2070[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2097 := z.EncBinary() + _ = yym2097 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[9] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2070[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[10] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2100 := z.EncBinary() + _ = yym2100 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2070[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2101 := z.EncBinary() + _ = yym2101 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[11] { + yym2103 := z.EncBinary() + _ = yym2103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2070[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2104 := z.EncBinary() + _ = yym2104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2070[12] { + yym2106 := z.EncBinary() + _ = yym2106 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2070[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subdomain")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2107 := z.EncBinary() + _ = yym2107 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } + } + if yyr2070 || yy2arr2070 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2108 := z.DecBinary() + _ = yym2108 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2109 := r.ContainerType() + if yyct2109 == codecSelferValueTypeMap1234 { + yyl2109 := r.ReadMapStart() + if yyl2109 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2109, d) + } + } else if yyct2109 == codecSelferValueTypeArray1234 { + yyl2109 := r.ReadArrayStart() + if yyl2109 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2109, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2110Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2110Slc + var yyhl2110 bool = l >= 0 + for yyj2110 := 0; ; yyj2110++ { + if yyhl2110 { + if yyj2110 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2110Slc = r.DecodeBytes(yys2110Slc, true, true) + yys2110 := string(yys2110Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2110 { + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv2111 := &x.Volumes + yym2112 := z.DecBinary() + _ = yym2112 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv2111), d) + } + } + case "containers": + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv2113 := &x.Containers + yym2114 := z.DecBinary() + _ = yym2114 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv2113), d) + } + } + case "restartPolicy": + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + x.RestartPolicy = RestartPolicy(r.DecodeString()) + } + case "terminationGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym2117 := z.DecBinary() + _ = yym2117 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym2119 := z.DecBinary() + _ = yym2119 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "dnsPolicy": + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + x.DNSPolicy = DNSPolicy(r.DecodeString()) + } + case "nodeSelector": + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv2121 := &x.NodeSelector + yym2122 := z.DecBinary() + _ = yym2122 + if false { + } else { + z.F.DecMapStringStringX(yyv2121, false, d) + } + } + case "serviceAccountName": + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + x.ServiceAccountName = string(r.DecodeString()) + } + case "nodeName": + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + x.NodeName = string(r.DecodeString()) + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2126 := &x.ImagePullSecrets + yym2127 := z.DecBinary() + _ = yym2127 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2126), d) + } + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + case "subdomain": + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + x.Subdomain = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2110) + } // end switch yys2110 + } // end for yyj2110 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2130 int + var yyb2130 bool + var yyhl2130 bool = l >= 0 + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv2131 := &x.Volumes + yym2132 := z.DecBinary() + _ = yym2132 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv2131), d) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv2133 := &x.Containers + yym2134 := z.DecBinary() + _ = yym2134 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv2133), d) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + x.RestartPolicy = RestartPolicy(r.DecodeString()) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym2137 := z.DecBinary() + _ = yym2137 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym2139 := z.DecBinary() + _ = yym2139 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + x.DNSPolicy = DNSPolicy(r.DecodeString()) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv2141 := &x.NodeSelector + yym2142 := z.DecBinary() + _ = yym2142 + if false { + } else { + z.F.DecMapStringStringX(yyv2141, false, d) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + x.ServiceAccountName = string(r.DecodeString()) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + x.NodeName = string(r.DecodeString()) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2146 := &x.ImagePullSecrets + yym2147 := z.DecBinary() + _ = yym2147 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2146), d) + } + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + x.Subdomain = string(r.DecodeString()) + } + for { + yyj2130++ + if yyhl2130 { + yyb2130 = yyj2130 > l + } else { + yyb2130 = r.CheckBreak() + } + if yyb2130 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2130-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Sysctl) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2150 := z.EncBinary() + _ = yym2150 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2151 := !z.EncBinary() + yy2arr2151 := z.EncBasicHandle().StructToArray + var yyq2151 [2]bool + _, _, _ = yysep2151, yyq2151, yy2arr2151 + const yyr2151 bool = false + var yynn2151 int + if yyr2151 || yy2arr2151 { + r.EncodeArrayStart(2) + } else { + yynn2151 = 2 + for _, b := range yyq2151 { + if b { + yynn2151++ + } + } + r.EncodeMapStart(yynn2151) + yynn2151 = 0 + } + if yyr2151 || yy2arr2151 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2153 := z.EncBinary() + _ = yym2153 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2154 := z.EncBinary() + _ = yym2154 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2151 || yy2arr2151 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2156 := z.EncBinary() + _ = yym2156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2157 := z.EncBinary() + _ = yym2157 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + if yyr2151 || yy2arr2151 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Sysctl) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2158 := z.DecBinary() + _ = yym2158 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2159 := r.ContainerType() + if yyct2159 == codecSelferValueTypeMap1234 { + yyl2159 := r.ReadMapStart() + if yyl2159 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2159, d) + } + } else if yyct2159 == codecSelferValueTypeArray1234 { + yyl2159 := r.ReadArrayStart() + if yyl2159 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2159, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Sysctl) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2160Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2160Slc + var yyhl2160 bool = l >= 0 + for yyj2160 := 0; ; yyj2160++ { + if yyhl2160 { + if yyj2160 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2160Slc = r.DecodeBytes(yys2160Slc, true, true) + yys2160 := string(yys2160Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2160 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2160) + } // end switch yys2160 + } // end for yyj2160 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Sysctl) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2163 int + var yyb2163 bool + var yyhl2163 bool = l >= 0 + yyj2163++ + if yyhl2163 { + yyb2163 = yyj2163 > l + } else { + yyb2163 = r.CheckBreak() + } + if yyb2163 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj2163++ + if yyhl2163 { + yyb2163 = yyj2163 > l + } else { + yyb2163 = r.CheckBreak() + } + if yyb2163 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + for { + yyj2163++ + if yyhl2163 { + yyb2163 = yyj2163 > l + } else { + yyb2163 = r.CheckBreak() + } + if yyb2163 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2163-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2166 := z.EncBinary() + _ = yym2166 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2167 := !z.EncBinary() + yy2arr2167 := z.EncBasicHandle().StructToArray + var yyq2167 [8]bool + _, _, _ = yysep2167, yyq2167, yy2arr2167 + const yyr2167 bool = false + yyq2167[0] = x.HostNetwork != false + yyq2167[1] = x.HostPID != false + yyq2167[2] = x.HostIPC != false + yyq2167[3] = x.SELinuxOptions != nil + yyq2167[4] = x.RunAsUser != nil + yyq2167[5] = x.RunAsNonRoot != nil + yyq2167[6] = len(x.SupplementalGroups) != 0 + yyq2167[7] = x.FSGroup != nil + var yynn2167 int + if yyr2167 || yy2arr2167 { + r.EncodeArrayStart(8) + } else { + yynn2167 = 0 + for _, b := range yyq2167 { + if b { + yynn2167++ + } + } + r.EncodeMapStart(yynn2167) + yynn2167 = 0 + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[0] { + yym2169 := z.EncBinary() + _ = yym2169 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2167[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2170 := z.EncBinary() + _ = yym2170 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[1] { + yym2172 := z.EncBinary() + _ = yym2172 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2167[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2173 := z.EncBinary() + _ = yym2173 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[2] { + yym2175 := z.EncBinary() + _ = yym2175 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2167[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2176 := z.EncBinary() + _ = yym2176 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[3] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2167[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[4] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy2179 := *x.RunAsUser + yym2180 := z.EncBinary() + _ = yym2180 + if false { + } else { + r.EncodeInt(int64(yy2179)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2167[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy2181 := *x.RunAsUser + yym2182 := z.EncBinary() + _ = yym2182 + if false { + } else { + r.EncodeInt(int64(yy2181)) + } + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[5] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy2184 := *x.RunAsNonRoot + yym2185 := z.EncBinary() + _ = yym2185 + if false { + } else { + r.EncodeBool(bool(yy2184)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2167[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy2186 := *x.RunAsNonRoot + yym2187 := z.EncBinary() + _ = yym2187 + if false { + } else { + r.EncodeBool(bool(yy2186)) + } + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[6] { + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym2189 := z.EncBinary() + _ = yym2189 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2167[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym2190 := z.EncBinary() + _ = yym2190 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2167[7] { + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy2192 := *x.FSGroup + yym2193 := z.EncBinary() + _ = yym2193 + if false { + } else { + r.EncodeInt(int64(yy2192)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2167[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy2194 := *x.FSGroup + yym2195 := z.EncBinary() + _ = yym2195 + if false { + } else { + r.EncodeInt(int64(yy2194)) + } + } + } + } + if yyr2167 || yy2arr2167 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2196 := z.DecBinary() + _ = yym2196 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2197 := r.ContainerType() + if yyct2197 == codecSelferValueTypeMap1234 { + yyl2197 := r.ReadMapStart() + if yyl2197 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2197, d) + } + } else if yyct2197 == codecSelferValueTypeArray1234 { + yyl2197 := r.ReadArrayStart() + if yyl2197 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2197, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2198Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2198Slc + var yyhl2198 bool = l >= 0 + for yyj2198 := 0; ; yyj2198++ { + if yyhl2198 { + if yyj2198 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2198Slc = r.DecodeBytes(yys2198Slc, true, true) + yys2198 := string(yys2198Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2198 { + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym2204 := z.DecBinary() + _ = yym2204 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym2206 := z.DecBinary() + _ = yym2206 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv2207 := &x.SupplementalGroups + yym2208 := z.DecBinary() + _ = yym2208 + if false { + } else { + z.F.DecSliceInt64X(yyv2207, false, d) + } + } + case "fsGroup": + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym2210 := z.DecBinary() + _ = yym2210 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys2198) + } // end switch yys2198 + } // end for yyj2198 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2211 int + var yyb2211 bool + var yyhl2211 bool = l >= 0 + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym2217 := z.DecBinary() + _ = yym2217 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym2219 := z.DecBinary() + _ = yym2219 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv2220 := &x.SupplementalGroups + yym2221 := z.DecBinary() + _ = yym2221 + if false { + } else { + z.F.DecSliceInt64X(yyv2220, false, d) + } + } + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym2223 := z.DecBinary() + _ = yym2223 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + for { + yyj2211++ + if yyhl2211 { + yyb2211 = yyj2211 > l + } else { + yyb2211 = r.CheckBreak() + } + if yyb2211 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2211-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2224 := z.EncBinary() + _ = yym2224 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2225 := !z.EncBinary() + yy2arr2225 := z.EncBasicHandle().StructToArray + var yyq2225 [8]bool + _, _, _ = yysep2225, yyq2225, yy2arr2225 + const yyr2225 bool = false + yyq2225[0] = x.Phase != "" + yyq2225[1] = len(x.Conditions) != 0 + yyq2225[2] = x.Message != "" + yyq2225[3] = x.Reason != "" + yyq2225[4] = x.HostIP != "" + yyq2225[5] = x.PodIP != "" + yyq2225[6] = x.StartTime != nil + yyq2225[7] = len(x.ContainerStatuses) != 0 + var yynn2225 int + if yyr2225 || yy2arr2225 { + r.EncodeArrayStart(8) + } else { + yynn2225 = 0 + for _, b := range yyq2225 { + if b { + yynn2225++ + } + } + r.EncodeMapStart(yynn2225) + yynn2225 = 0 + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2225[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[1] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2228 := z.EncBinary() + _ = yym2228 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2225[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2229 := z.EncBinary() + _ = yym2229 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[2] { + yym2231 := z.EncBinary() + _ = yym2231 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2225[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2232 := z.EncBinary() + _ = yym2232 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[3] { + yym2234 := z.EncBinary() + _ = yym2234 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2225[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2235 := z.EncBinary() + _ = yym2235 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[4] { + yym2237 := z.EncBinary() + _ = yym2237 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2225[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2238 := z.EncBinary() + _ = yym2238 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[5] { + yym2240 := z.EncBinary() + _ = yym2240 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2225[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2241 := z.EncBinary() + _ = yym2241 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[6] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym2243 := z.EncBinary() + _ = yym2243 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym2243 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym2243 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2225[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym2244 := z.EncBinary() + _ = yym2244 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym2244 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym2244 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2225[7] { + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym2246 := z.EncBinary() + _ = yym2246 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2225[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerStatuses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym2247 := z.EncBinary() + _ = yym2247 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } + } + if yyr2225 || yy2arr2225 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2248 := z.DecBinary() + _ = yym2248 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2249 := r.ContainerType() + if yyct2249 == codecSelferValueTypeMap1234 { + yyl2249 := r.ReadMapStart() + if yyl2249 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2249, d) + } + } else if yyct2249 == codecSelferValueTypeArray1234 { + yyl2249 := r.ReadArrayStart() + if yyl2249 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2249, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2250Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2250Slc + var yyhl2250 bool = l >= 0 + for yyj2250 := 0; ; yyj2250++ { + if yyhl2250 { + if yyj2250 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2250Slc = r.DecodeBytes(yys2250Slc, true, true) + yys2250 := string(yys2250Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2250 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PodPhase(r.DecodeString()) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv2252 := &x.Conditions + yym2253 := z.DecBinary() + _ = yym2253 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv2252), d) + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + case "podIP": + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + x.PodIP = string(r.DecodeString()) + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_unversioned.Time) + } + yym2259 := z.DecBinary() + _ = yym2259 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym2259 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym2259 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "containerStatuses": + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv2260 := &x.ContainerStatuses + yym2261 := z.DecBinary() + _ = yym2261 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv2260), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2250) + } // end switch yys2250 + } // end for yyj2250 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2262 int + var yyb2262 bool + var yyhl2262 bool = l >= 0 + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PodPhase(r.DecodeString()) + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv2264 := &x.Conditions + yym2265 := z.DecBinary() + _ = yym2265 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv2264), d) + } + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + x.PodIP = string(r.DecodeString()) + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_unversioned.Time) + } + yym2271 := z.DecBinary() + _ = yym2271 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym2271 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym2271 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv2272 := &x.ContainerStatuses + yym2273 := z.DecBinary() + _ = yym2273 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv2272), d) + } + } + for { + yyj2262++ + if yyhl2262 { + yyb2262 = yyj2262 > l + } else { + yyb2262 = r.CheckBreak() + } + if yyb2262 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2262-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodStatusResult) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2274 := z.EncBinary() + _ = yym2274 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2275 := !z.EncBinary() + yy2arr2275 := z.EncBasicHandle().StructToArray + var yyq2275 [4]bool + _, _, _ = yysep2275, yyq2275, yy2arr2275 + const yyr2275 bool = false + yyq2275[0] = x.Kind != "" + yyq2275[1] = x.APIVersion != "" + yyq2275[2] = true + yyq2275[3] = true + var yynn2275 int + if yyr2275 || yy2arr2275 { + r.EncodeArrayStart(4) + } else { + yynn2275 = 0 + for _, b := range yyq2275 { + if b { + yynn2275++ + } + } + r.EncodeMapStart(yynn2275) + yynn2275 = 0 + } + if yyr2275 || yy2arr2275 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2275[0] { + yym2277 := z.EncBinary() + _ = yym2277 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2275[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2278 := z.EncBinary() + _ = yym2278 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2275 || yy2arr2275 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2275[1] { + yym2280 := z.EncBinary() + _ = yym2280 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2275[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2281 := z.EncBinary() + _ = yym2281 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2275 || yy2arr2275 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2275[2] { + yy2283 := &x.ObjectMeta + yy2283.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2275[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2284 := &x.ObjectMeta + yy2284.CodecEncodeSelf(e) + } + } + if yyr2275 || yy2arr2275 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2275[3] { + yy2286 := &x.Status + yy2286.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2275[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2287 := &x.Status + yy2287.CodecEncodeSelf(e) + } + } + if yyr2275 || yy2arr2275 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatusResult) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2288 := z.DecBinary() + _ = yym2288 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2289 := r.ContainerType() + if yyct2289 == codecSelferValueTypeMap1234 { + yyl2289 := r.ReadMapStart() + if yyl2289 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2289, d) + } + } else if yyct2289 == codecSelferValueTypeArray1234 { + yyl2289 := r.ReadArrayStart() + if yyl2289 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2289, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatusResult) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2290Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2290Slc + var yyhl2290 bool = l >= 0 + for yyj2290 := 0; ; yyj2290++ { + if yyhl2290 { + if yyj2290 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2290Slc = r.DecodeBytes(yys2290Slc, true, true) + yys2290 := string(yys2290Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2290 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2293 := &x.ObjectMeta + yyv2293.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2294 := &x.Status + yyv2294.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2290) + } // end switch yys2290 + } // end for yyj2290 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatusResult) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2295 int + var yyb2295 bool + var yyhl2295 bool = l >= 0 + yyj2295++ + if yyhl2295 { + yyb2295 = yyj2295 > l + } else { + yyb2295 = r.CheckBreak() + } + if yyb2295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2295++ + if yyhl2295 { + yyb2295 = yyj2295 > l + } else { + yyb2295 = r.CheckBreak() + } + if yyb2295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2295++ + if yyhl2295 { + yyb2295 = yyj2295 > l + } else { + yyb2295 = r.CheckBreak() + } + if yyb2295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2298 := &x.ObjectMeta + yyv2298.CodecDecodeSelf(d) + } + yyj2295++ + if yyhl2295 { + yyb2295 = yyj2295 > l + } else { + yyb2295 = r.CheckBreak() + } + if yyb2295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2299 := &x.Status + yyv2299.CodecDecodeSelf(d) + } + for { + yyj2295++ + if yyhl2295 { + yyb2295 = yyj2295 > l + } else { + yyb2295 = r.CheckBreak() + } + if yyb2295 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2295-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Pod) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2300 := z.EncBinary() + _ = yym2300 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2301 := !z.EncBinary() + yy2arr2301 := z.EncBasicHandle().StructToArray + var yyq2301 [5]bool + _, _, _ = yysep2301, yyq2301, yy2arr2301 + const yyr2301 bool = false + yyq2301[0] = x.Kind != "" + yyq2301[1] = x.APIVersion != "" + yyq2301[2] = true + yyq2301[3] = true + yyq2301[4] = true + var yynn2301 int + if yyr2301 || yy2arr2301 { + r.EncodeArrayStart(5) + } else { + yynn2301 = 0 + for _, b := range yyq2301 { + if b { + yynn2301++ + } + } + r.EncodeMapStart(yynn2301) + yynn2301 = 0 + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2301[0] { + yym2303 := z.EncBinary() + _ = yym2303 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2301[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2304 := z.EncBinary() + _ = yym2304 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2301[1] { + yym2306 := z.EncBinary() + _ = yym2306 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2301[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2307 := z.EncBinary() + _ = yym2307 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2301[2] { + yy2309 := &x.ObjectMeta + yy2309.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2301[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2310 := &x.ObjectMeta + yy2310.CodecEncodeSelf(e) + } + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2301[3] { + yy2312 := &x.Spec + yy2312.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2301[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2313 := &x.Spec + yy2313.CodecEncodeSelf(e) + } + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2301[4] { + yy2315 := &x.Status + yy2315.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2301[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2316 := &x.Status + yy2316.CodecEncodeSelf(e) + } + } + if yyr2301 || yy2arr2301 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Pod) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2317 := z.DecBinary() + _ = yym2317 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2318 := r.ContainerType() + if yyct2318 == codecSelferValueTypeMap1234 { + yyl2318 := r.ReadMapStart() + if yyl2318 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2318, d) + } + } else if yyct2318 == codecSelferValueTypeArray1234 { + yyl2318 := r.ReadArrayStart() + if yyl2318 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2318, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Pod) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2319Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2319Slc + var yyhl2319 bool = l >= 0 + for yyj2319 := 0; ; yyj2319++ { + if yyhl2319 { + if yyj2319 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2319Slc = r.DecodeBytes(yys2319Slc, true, true) + yys2319 := string(yys2319Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2319 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2322 := &x.ObjectMeta + yyv2322.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2323 := &x.Spec + yyv2323.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2324 := &x.Status + yyv2324.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2319) + } // end switch yys2319 + } // end for yyj2319 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Pod) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2325 int + var yyb2325 bool + var yyhl2325 bool = l >= 0 + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2328 := &x.ObjectMeta + yyv2328.CodecDecodeSelf(d) + } + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2329 := &x.Spec + yyv2329.CodecDecodeSelf(d) + } + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2330 := &x.Status + yyv2330.CodecDecodeSelf(d) + } + for { + yyj2325++ + if yyhl2325 { + yyb2325 = yyj2325 > l + } else { + yyb2325 = r.CheckBreak() + } + if yyb2325 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2325-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2331 := z.EncBinary() + _ = yym2331 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2332 := !z.EncBinary() + yy2arr2332 := z.EncBasicHandle().StructToArray + var yyq2332 [2]bool + _, _, _ = yysep2332, yyq2332, yy2arr2332 + const yyr2332 bool = false + yyq2332[0] = true + yyq2332[1] = true + var yynn2332 int + if yyr2332 || yy2arr2332 { + r.EncodeArrayStart(2) + } else { + yynn2332 = 0 + for _, b := range yyq2332 { + if b { + yynn2332++ + } + } + r.EncodeMapStart(yynn2332) + yynn2332 = 0 + } + if yyr2332 || yy2arr2332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2332[0] { + yy2334 := &x.ObjectMeta + yy2334.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2332[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2335 := &x.ObjectMeta + yy2335.CodecEncodeSelf(e) + } + } + if yyr2332 || yy2arr2332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2332[1] { + yy2337 := &x.Spec + yy2337.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2332[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2338 := &x.Spec + yy2338.CodecEncodeSelf(e) + } + } + if yyr2332 || yy2arr2332 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2339 := z.DecBinary() + _ = yym2339 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2340 := r.ContainerType() + if yyct2340 == codecSelferValueTypeMap1234 { + yyl2340 := r.ReadMapStart() + if yyl2340 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2340, d) + } + } else if yyct2340 == codecSelferValueTypeArray1234 { + yyl2340 := r.ReadArrayStart() + if yyl2340 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2340, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2341Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2341Slc + var yyhl2341 bool = l >= 0 + for yyj2341 := 0; ; yyj2341++ { + if yyhl2341 { + if yyj2341 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2341Slc = r.DecodeBytes(yys2341Slc, true, true) + yys2341 := string(yys2341Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2341 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2342 := &x.ObjectMeta + yyv2342.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2343 := &x.Spec + yyv2343.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2341) + } // end switch yys2341 + } // end for yyj2341 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2344 int + var yyb2344 bool + var yyhl2344 bool = l >= 0 + yyj2344++ + if yyhl2344 { + yyb2344 = yyj2344 > l + } else { + yyb2344 = r.CheckBreak() + } + if yyb2344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2345 := &x.ObjectMeta + yyv2345.CodecDecodeSelf(d) + } + yyj2344++ + if yyhl2344 { + yyb2344 = yyj2344 > l + } else { + yyb2344 = r.CheckBreak() + } + if yyb2344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2346 := &x.Spec + yyv2346.CodecDecodeSelf(d) + } + for { + yyj2344++ + if yyhl2344 { + yyb2344 = yyj2344 > l + } else { + yyb2344 = r.CheckBreak() + } + if yyb2344 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2344-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2347 := z.EncBinary() + _ = yym2347 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2348 := !z.EncBinary() + yy2arr2348 := z.EncBasicHandle().StructToArray + var yyq2348 [4]bool + _, _, _ = yysep2348, yyq2348, yy2arr2348 + const yyr2348 bool = false + yyq2348[0] = x.Kind != "" + yyq2348[1] = x.APIVersion != "" + yyq2348[2] = true + yyq2348[3] = true + var yynn2348 int + if yyr2348 || yy2arr2348 { + r.EncodeArrayStart(4) + } else { + yynn2348 = 0 + for _, b := range yyq2348 { + if b { + yynn2348++ + } + } + r.EncodeMapStart(yynn2348) + yynn2348 = 0 + } + if yyr2348 || yy2arr2348 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2348[0] { + yym2350 := z.EncBinary() + _ = yym2350 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2348[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2351 := z.EncBinary() + _ = yym2351 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2348 || yy2arr2348 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2348[1] { + yym2353 := z.EncBinary() + _ = yym2353 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2348[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2354 := z.EncBinary() + _ = yym2354 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2348 || yy2arr2348 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2348[2] { + yy2356 := &x.ObjectMeta + yy2356.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2348[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2357 := &x.ObjectMeta + yy2357.CodecEncodeSelf(e) + } + } + if yyr2348 || yy2arr2348 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2348[3] { + yy2359 := &x.Template + yy2359.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2348[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2360 := &x.Template + yy2360.CodecEncodeSelf(e) + } + } + if yyr2348 || yy2arr2348 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2361 := z.DecBinary() + _ = yym2361 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2362 := r.ContainerType() + if yyct2362 == codecSelferValueTypeMap1234 { + yyl2362 := r.ReadMapStart() + if yyl2362 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2362, d) + } + } else if yyct2362 == codecSelferValueTypeArray1234 { + yyl2362 := r.ReadArrayStart() + if yyl2362 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2362, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2363Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2363Slc + var yyhl2363 bool = l >= 0 + for yyj2363 := 0; ; yyj2363++ { + if yyhl2363 { + if yyj2363 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2363Slc = r.DecodeBytes(yys2363Slc, true, true) + yys2363 := string(yys2363Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2363 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2366 := &x.ObjectMeta + yyv2366.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv2367 := &x.Template + yyv2367.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2363) + } // end switch yys2363 + } // end for yyj2363 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2368 int + var yyb2368 bool + var yyhl2368 bool = l >= 0 + yyj2368++ + if yyhl2368 { + yyb2368 = yyj2368 > l + } else { + yyb2368 = r.CheckBreak() + } + if yyb2368 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2368++ + if yyhl2368 { + yyb2368 = yyj2368 > l + } else { + yyb2368 = r.CheckBreak() + } + if yyb2368 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2368++ + if yyhl2368 { + yyb2368 = yyj2368 > l + } else { + yyb2368 = r.CheckBreak() + } + if yyb2368 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2371 := &x.ObjectMeta + yyv2371.CodecDecodeSelf(d) + } + yyj2368++ + if yyhl2368 { + yyb2368 = yyj2368 > l + } else { + yyb2368 = r.CheckBreak() + } + if yyb2368 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv2372 := &x.Template + yyv2372.CodecDecodeSelf(d) + } + for { + yyj2368++ + if yyhl2368 { + yyb2368 = yyj2368 > l + } else { + yyb2368 = r.CheckBreak() + } + if yyb2368 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2368-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2373 := z.EncBinary() + _ = yym2373 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2374 := !z.EncBinary() + yy2arr2374 := z.EncBasicHandle().StructToArray + var yyq2374 [4]bool + _, _, _ = yysep2374, yyq2374, yy2arr2374 + const yyr2374 bool = false + yyq2374[0] = x.Kind != "" + yyq2374[1] = x.APIVersion != "" + yyq2374[2] = true + var yynn2374 int + if yyr2374 || yy2arr2374 { + r.EncodeArrayStart(4) + } else { + yynn2374 = 1 + for _, b := range yyq2374 { + if b { + yynn2374++ + } + } + r.EncodeMapStart(yynn2374) + yynn2374 = 0 + } + if yyr2374 || yy2arr2374 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2374[0] { + yym2376 := z.EncBinary() + _ = yym2376 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2374[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2377 := z.EncBinary() + _ = yym2377 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2374 || yy2arr2374 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2374[1] { + yym2379 := z.EncBinary() + _ = yym2379 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2374[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2380 := z.EncBinary() + _ = yym2380 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2374 || yy2arr2374 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2374[2] { + yy2382 := &x.ListMeta + yym2383 := z.EncBinary() + _ = yym2383 + if false { + } else if z.HasExtensions() && z.EncExt(yy2382) { + } else { + z.EncFallback(yy2382) + } + } else { + r.EncodeNil() + } + } else { + if yyq2374[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2384 := &x.ListMeta + yym2385 := z.EncBinary() + _ = yym2385 + if false { + } else if z.HasExtensions() && z.EncExt(yy2384) { + } else { + z.EncFallback(yy2384) + } + } + } + if yyr2374 || yy2arr2374 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2387 := z.EncBinary() + _ = yym2387 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2388 := z.EncBinary() + _ = yym2388 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } + if yyr2374 || yy2arr2374 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2389 := z.DecBinary() + _ = yym2389 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2390 := r.ContainerType() + if yyct2390 == codecSelferValueTypeMap1234 { + yyl2390 := r.ReadMapStart() + if yyl2390 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2390, d) + } + } else if yyct2390 == codecSelferValueTypeArray1234 { + yyl2390 := r.ReadArrayStart() + if yyl2390 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2390, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2391Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2391Slc + var yyhl2391 bool = l >= 0 + for yyj2391 := 0; ; yyj2391++ { + if yyhl2391 { + if yyj2391 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2391Slc = r.DecodeBytes(yys2391Slc, true, true) + yys2391 := string(yys2391Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2391 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2394 := &x.ListMeta + yym2395 := z.DecBinary() + _ = yym2395 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2394) { + } else { + z.DecFallback(yyv2394, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2396 := &x.Items + yym2397 := z.DecBinary() + _ = yym2397 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv2396), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2391) + } // end switch yys2391 + } // end for yyj2391 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2398 int + var yyb2398 bool + var yyhl2398 bool = l >= 0 + yyj2398++ + if yyhl2398 { + yyb2398 = yyj2398 > l + } else { + yyb2398 = r.CheckBreak() + } + if yyb2398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2398++ + if yyhl2398 { + yyb2398 = yyj2398 > l + } else { + yyb2398 = r.CheckBreak() + } + if yyb2398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2398++ + if yyhl2398 { + yyb2398 = yyj2398 > l + } else { + yyb2398 = r.CheckBreak() + } + if yyb2398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2401 := &x.ListMeta + yym2402 := z.DecBinary() + _ = yym2402 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2401) { + } else { + z.DecFallback(yyv2401, false) + } + } + yyj2398++ + if yyhl2398 { + yyb2398 = yyj2398 > l + } else { + yyb2398 = r.CheckBreak() + } + if yyb2398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2403 := &x.Items + yym2404 := z.DecBinary() + _ = yym2404 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv2403), d) + } + } + for { + yyj2398++ + if yyhl2398 { + yyb2398 = yyj2398 > l + } else { + yyb2398 = r.CheckBreak() + } + if yyb2398 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2398-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2405 := z.EncBinary() + _ = yym2405 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2406 := !z.EncBinary() + yy2arr2406 := z.EncBasicHandle().StructToArray + var yyq2406 [3]bool + _, _, _ = yysep2406, yyq2406, yy2arr2406 + const yyr2406 bool = false + yyq2406[2] = x.Template != nil + var yynn2406 int + if yyr2406 || yy2arr2406 { + r.EncodeArrayStart(3) + } else { + yynn2406 = 2 + for _, b := range yyq2406 { + if b { + yynn2406++ + } + } + r.EncodeMapStart(yynn2406) + yynn2406 = 0 + } + if yyr2406 || yy2arr2406 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2408 := z.EncBinary() + _ = yym2408 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2409 := z.EncBinary() + _ = yym2409 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2406 || yy2arr2406 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2411 := z.EncBinary() + _ = yym2411 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2412 := z.EncBinary() + _ = yym2412 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + if yyr2406 || yy2arr2406 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2406[2] { + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2406[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } + } + if yyr2406 || yy2arr2406 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2414 := z.DecBinary() + _ = yym2414 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2415 := r.ContainerType() + if yyct2415 == codecSelferValueTypeMap1234 { + yyl2415 := r.ReadMapStart() + if yyl2415 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2415, d) + } + } else if yyct2415 == codecSelferValueTypeArray1234 { + yyl2415 := r.ReadArrayStart() + if yyl2415 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2415, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2416Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2416Slc + var yyhl2416 bool = l >= 0 + for yyj2416 := 0; ; yyj2416++ { + if yyhl2416 { + if yyj2416 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2416Slc = r.DecodeBytes(yys2416Slc, true, true) + yys2416 := string(yys2416Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2416 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2418 := &x.Selector + yym2419 := z.DecBinary() + _ = yym2419 + if false { + } else { + z.F.DecMapStringStringX(yyv2418, false, d) + } + } + case "template": + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2416) + } // end switch yys2416 + } // end for yyj2416 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2421 int + var yyb2421 bool + var yyhl2421 bool = l >= 0 + yyj2421++ + if yyhl2421 { + yyb2421 = yyj2421 > l + } else { + yyb2421 = r.CheckBreak() + } + if yyb2421 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj2421++ + if yyhl2421 { + yyb2421 = yyj2421 > l + } else { + yyb2421 = r.CheckBreak() + } + if yyb2421 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2423 := &x.Selector + yym2424 := z.DecBinary() + _ = yym2424 + if false { + } else { + z.F.DecMapStringStringX(yyv2423, false, d) + } + } + yyj2421++ + if yyhl2421 { + yyb2421 = yyj2421 > l + } else { + yyb2421 = r.CheckBreak() + } + if yyb2421 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + for { + yyj2421++ + if yyhl2421 { + yyb2421 = yyj2421 > l + } else { + yyb2421 = r.CheckBreak() + } + if yyb2421 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2421-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2426 := z.EncBinary() + _ = yym2426 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2427 := !z.EncBinary() + yy2arr2427 := z.EncBasicHandle().StructToArray + var yyq2427 [4]bool + _, _, _ = yysep2427, yyq2427, yy2arr2427 + const yyr2427 bool = false + yyq2427[1] = x.FullyLabeledReplicas != 0 + yyq2427[2] = x.ReadyReplicas != 0 + yyq2427[3] = x.ObservedGeneration != 0 + var yynn2427 int + if yyr2427 || yy2arr2427 { + r.EncodeArrayStart(4) + } else { + yynn2427 = 1 + for _, b := range yyq2427 { + if b { + yynn2427++ + } + } + r.EncodeMapStart(yynn2427) + yynn2427 = 0 + } + if yyr2427 || yy2arr2427 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2429 := z.EncBinary() + _ = yym2429 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2430 := z.EncBinary() + _ = yym2430 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2427 || yy2arr2427 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2427[1] { + yym2432 := z.EncBinary() + _ = yym2432 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2427[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2433 := z.EncBinary() + _ = yym2433 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr2427 || yy2arr2427 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2427[2] { + yym2435 := z.EncBinary() + _ = yym2435 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2427[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2436 := z.EncBinary() + _ = yym2436 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2427 || yy2arr2427 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2427[3] { + yym2438 := z.EncBinary() + _ = yym2438 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2427[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2439 := z.EncBinary() + _ = yym2439 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2427 || yy2arr2427 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2440 := z.DecBinary() + _ = yym2440 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2441 := r.ContainerType() + if yyct2441 == codecSelferValueTypeMap1234 { + yyl2441 := r.ReadMapStart() + if yyl2441 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2441, d) + } + } else if yyct2441 == codecSelferValueTypeArray1234 { + yyl2441 := r.ReadArrayStart() + if yyl2441 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2441, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2442Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2442Slc + var yyhl2442 bool = l >= 0 + for yyj2442 := 0; ; yyj2442++ { + if yyhl2442 { + if yyj2442 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2442Slc = r.DecodeBytes(yys2442Slc, true, true) + yys2442 := string(yys2442Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2442 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys2442) + } // end switch yys2442 + } // end for yyj2442 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2447 int + var yyb2447 bool + var yyhl2447 bool = l >= 0 + yyj2447++ + if yyhl2447 { + yyb2447 = yyj2447 > l + } else { + yyb2447 = r.CheckBreak() + } + if yyb2447 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj2447++ + if yyhl2447 { + yyb2447 = yyj2447 > l + } else { + yyb2447 = r.CheckBreak() + } + if yyb2447 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + yyj2447++ + if yyhl2447 { + yyb2447 = yyj2447 > l + } else { + yyb2447 = r.CheckBreak() + } + if yyb2447 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + yyj2447++ + if yyhl2447 { + yyb2447 = yyj2447 > l + } else { + yyb2447 = r.CheckBreak() + } + if yyb2447 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + for { + yyj2447++ + if yyhl2447 { + yyb2447 = yyj2447 > l + } else { + yyb2447 = r.CheckBreak() + } + if yyb2447 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2447-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationController) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2452 := z.EncBinary() + _ = yym2452 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2453 := !z.EncBinary() + yy2arr2453 := z.EncBasicHandle().StructToArray + var yyq2453 [5]bool + _, _, _ = yysep2453, yyq2453, yy2arr2453 + const yyr2453 bool = false + yyq2453[0] = x.Kind != "" + yyq2453[1] = x.APIVersion != "" + yyq2453[2] = true + yyq2453[3] = true + yyq2453[4] = true + var yynn2453 int + if yyr2453 || yy2arr2453 { + r.EncodeArrayStart(5) + } else { + yynn2453 = 0 + for _, b := range yyq2453 { + if b { + yynn2453++ + } + } + r.EncodeMapStart(yynn2453) + yynn2453 = 0 + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2453[0] { + yym2455 := z.EncBinary() + _ = yym2455 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2453[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2456 := z.EncBinary() + _ = yym2456 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2453[1] { + yym2458 := z.EncBinary() + _ = yym2458 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2453[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2459 := z.EncBinary() + _ = yym2459 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2453[2] { + yy2461 := &x.ObjectMeta + yy2461.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2453[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2462 := &x.ObjectMeta + yy2462.CodecEncodeSelf(e) + } + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2453[3] { + yy2464 := &x.Spec + yy2464.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2453[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2465 := &x.Spec + yy2465.CodecEncodeSelf(e) + } + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2453[4] { + yy2467 := &x.Status + yy2467.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2453[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2468 := &x.Status + yy2468.CodecEncodeSelf(e) + } + } + if yyr2453 || yy2arr2453 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationController) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2469 := z.DecBinary() + _ = yym2469 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2470 := r.ContainerType() + if yyct2470 == codecSelferValueTypeMap1234 { + yyl2470 := r.ReadMapStart() + if yyl2470 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2470, d) + } + } else if yyct2470 == codecSelferValueTypeArray1234 { + yyl2470 := r.ReadArrayStart() + if yyl2470 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2470, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationController) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2471Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2471Slc + var yyhl2471 bool = l >= 0 + for yyj2471 := 0; ; yyj2471++ { + if yyhl2471 { + if yyj2471 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2471Slc = r.DecodeBytes(yys2471Slc, true, true) + yys2471 := string(yys2471Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2471 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2474 := &x.ObjectMeta + yyv2474.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv2475 := &x.Spec + yyv2475.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv2476 := &x.Status + yyv2476.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2471) + } // end switch yys2471 + } // end for yyj2471 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationController) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2477 int + var yyb2477 bool + var yyhl2477 bool = l >= 0 + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2480 := &x.ObjectMeta + yyv2480.CodecDecodeSelf(d) + } + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv2481 := &x.Spec + yyv2481.CodecDecodeSelf(d) + } + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv2482 := &x.Status + yyv2482.CodecDecodeSelf(d) + } + for { + yyj2477++ + if yyhl2477 { + yyb2477 = yyj2477 > l + } else { + yyb2477 = r.CheckBreak() + } + if yyb2477 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2477-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2483 := z.EncBinary() + _ = yym2483 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2484 := !z.EncBinary() + yy2arr2484 := z.EncBasicHandle().StructToArray + var yyq2484 [4]bool + _, _, _ = yysep2484, yyq2484, yy2arr2484 + const yyr2484 bool = false + yyq2484[0] = x.Kind != "" + yyq2484[1] = x.APIVersion != "" + yyq2484[2] = true + var yynn2484 int + if yyr2484 || yy2arr2484 { + r.EncodeArrayStart(4) + } else { + yynn2484 = 1 + for _, b := range yyq2484 { + if b { + yynn2484++ + } + } + r.EncodeMapStart(yynn2484) + yynn2484 = 0 + } + if yyr2484 || yy2arr2484 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2484[0] { + yym2486 := z.EncBinary() + _ = yym2486 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2484[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2487 := z.EncBinary() + _ = yym2487 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2484 || yy2arr2484 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2484[1] { + yym2489 := z.EncBinary() + _ = yym2489 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2484[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2490 := z.EncBinary() + _ = yym2490 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2484 || yy2arr2484 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2484[2] { + yy2492 := &x.ListMeta + yym2493 := z.EncBinary() + _ = yym2493 + if false { + } else if z.HasExtensions() && z.EncExt(yy2492) { + } else { + z.EncFallback(yy2492) + } + } else { + r.EncodeNil() + } + } else { + if yyq2484[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2494 := &x.ListMeta + yym2495 := z.EncBinary() + _ = yym2495 + if false { + } else if z.HasExtensions() && z.EncExt(yy2494) { + } else { + z.EncFallback(yy2494) + } + } + } + if yyr2484 || yy2arr2484 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2497 := z.EncBinary() + _ = yym2497 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2498 := z.EncBinary() + _ = yym2498 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } + if yyr2484 || yy2arr2484 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2499 := z.DecBinary() + _ = yym2499 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2500 := r.ContainerType() + if yyct2500 == codecSelferValueTypeMap1234 { + yyl2500 := r.ReadMapStart() + if yyl2500 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2500, d) + } + } else if yyct2500 == codecSelferValueTypeArray1234 { + yyl2500 := r.ReadArrayStart() + if yyl2500 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2500, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2501Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2501Slc + var yyhl2501 bool = l >= 0 + for yyj2501 := 0; ; yyj2501++ { + if yyhl2501 { + if yyj2501 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2501Slc = r.DecodeBytes(yys2501Slc, true, true) + yys2501 := string(yys2501Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2501 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2504 := &x.ListMeta + yym2505 := z.DecBinary() + _ = yym2505 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2504) { + } else { + z.DecFallback(yyv2504, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2506 := &x.Items + yym2507 := z.DecBinary() + _ = yym2507 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv2506), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2501) + } // end switch yys2501 + } // end for yyj2501 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2508 int + var yyb2508 bool + var yyhl2508 bool = l >= 0 + yyj2508++ + if yyhl2508 { + yyb2508 = yyj2508 > l + } else { + yyb2508 = r.CheckBreak() + } + if yyb2508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2508++ + if yyhl2508 { + yyb2508 = yyj2508 > l + } else { + yyb2508 = r.CheckBreak() + } + if yyb2508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2508++ + if yyhl2508 { + yyb2508 = yyj2508 > l + } else { + yyb2508 = r.CheckBreak() + } + if yyb2508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2511 := &x.ListMeta + yym2512 := z.DecBinary() + _ = yym2512 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2511) { + } else { + z.DecFallback(yyv2511, false) + } + } + yyj2508++ + if yyhl2508 { + yyb2508 = yyj2508 > l + } else { + yyb2508 = r.CheckBreak() + } + if yyb2508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2513 := &x.Items + yym2514 := z.DecBinary() + _ = yym2514 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv2513), d) + } + } + for { + yyj2508++ + if yyhl2508 { + yyb2508 = yyj2508 > l + } else { + yyb2508 = r.CheckBreak() + } + if yyb2508 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2508-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2515 := z.EncBinary() + _ = yym2515 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2516 := !z.EncBinary() + yy2arr2516 := z.EncBasicHandle().StructToArray + var yyq2516 [4]bool + _, _, _ = yysep2516, yyq2516, yy2arr2516 + const yyr2516 bool = false + yyq2516[0] = x.Kind != "" + yyq2516[1] = x.APIVersion != "" + yyq2516[2] = true + var yynn2516 int + if yyr2516 || yy2arr2516 { + r.EncodeArrayStart(4) + } else { + yynn2516 = 1 + for _, b := range yyq2516 { + if b { + yynn2516++ + } + } + r.EncodeMapStart(yynn2516) + yynn2516 = 0 + } + if yyr2516 || yy2arr2516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2516[0] { + yym2518 := z.EncBinary() + _ = yym2518 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2516[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2519 := z.EncBinary() + _ = yym2519 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2516 || yy2arr2516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2516[1] { + yym2521 := z.EncBinary() + _ = yym2521 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2516[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2522 := z.EncBinary() + _ = yym2522 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2516 || yy2arr2516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2516[2] { + yy2524 := &x.ListMeta + yym2525 := z.EncBinary() + _ = yym2525 + if false { + } else if z.HasExtensions() && z.EncExt(yy2524) { + } else { + z.EncFallback(yy2524) + } + } else { + r.EncodeNil() + } + } else { + if yyq2516[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2526 := &x.ListMeta + yym2527 := z.EncBinary() + _ = yym2527 + if false { + } else if z.HasExtensions() && z.EncExt(yy2526) { + } else { + z.EncFallback(yy2526) + } + } + } + if yyr2516 || yy2arr2516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2529 := z.EncBinary() + _ = yym2529 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2530 := z.EncBinary() + _ = yym2530 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } + if yyr2516 || yy2arr2516 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2531 := z.DecBinary() + _ = yym2531 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2532 := r.ContainerType() + if yyct2532 == codecSelferValueTypeMap1234 { + yyl2532 := r.ReadMapStart() + if yyl2532 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2532, d) + } + } else if yyct2532 == codecSelferValueTypeArray1234 { + yyl2532 := r.ReadArrayStart() + if yyl2532 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2532, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2533Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2533Slc + var yyhl2533 bool = l >= 0 + for yyj2533 := 0; ; yyj2533++ { + if yyhl2533 { + if yyj2533 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2533Slc = r.DecodeBytes(yys2533Slc, true, true) + yys2533 := string(yys2533Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2533 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2536 := &x.ListMeta + yym2537 := z.DecBinary() + _ = yym2537 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2536) { + } else { + z.DecFallback(yyv2536, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2538 := &x.Items + yym2539 := z.DecBinary() + _ = yym2539 + if false { + } else { + h.decSliceService((*[]Service)(yyv2538), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2533) + } // end switch yys2533 + } // end for yyj2533 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2540 int + var yyb2540 bool + var yyhl2540 bool = l >= 0 + yyj2540++ + if yyhl2540 { + yyb2540 = yyj2540 > l + } else { + yyb2540 = r.CheckBreak() + } + if yyb2540 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2540++ + if yyhl2540 { + yyb2540 = yyj2540 > l + } else { + yyb2540 = r.CheckBreak() + } + if yyb2540 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2540++ + if yyhl2540 { + yyb2540 = yyj2540 > l + } else { + yyb2540 = r.CheckBreak() + } + if yyb2540 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2543 := &x.ListMeta + yym2544 := z.DecBinary() + _ = yym2544 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2543) { + } else { + z.DecFallback(yyv2543, false) + } + } + yyj2540++ + if yyhl2540 { + yyb2540 = yyj2540 > l + } else { + yyb2540 = r.CheckBreak() + } + if yyb2540 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2545 := &x.Items + yym2546 := z.DecBinary() + _ = yym2546 + if false { + } else { + h.decSliceService((*[]Service)(yyv2545), d) + } + } + for { + yyj2540++ + if yyhl2540 { + yyb2540 = yyj2540 > l + } else { + yyb2540 = r.CheckBreak() + } + if yyb2540 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2540-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ServiceAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2547 := z.EncBinary() + _ = yym2547 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2548 := z.DecBinary() + _ = yym2548 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ServiceType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2549 := z.EncBinary() + _ = yym2549 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2550 := z.DecBinary() + _ = yym2550 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ServiceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2551 := z.EncBinary() + _ = yym2551 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2552 := !z.EncBinary() + yy2arr2552 := z.EncBasicHandle().StructToArray + var yyq2552 [1]bool + _, _, _ = yysep2552, yyq2552, yy2arr2552 + const yyr2552 bool = false + yyq2552[0] = true + var yynn2552 int + if yyr2552 || yy2arr2552 { + r.EncodeArrayStart(1) + } else { + yynn2552 = 0 + for _, b := range yyq2552 { + if b { + yynn2552++ + } + } + r.EncodeMapStart(yynn2552) + yynn2552 = 0 + } + if yyr2552 || yy2arr2552 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2552[0] { + yy2554 := &x.LoadBalancer + yy2554.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2552[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2555 := &x.LoadBalancer + yy2555.CodecEncodeSelf(e) + } + } + if yyr2552 || yy2arr2552 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2556 := z.DecBinary() + _ = yym2556 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2557 := r.ContainerType() + if yyct2557 == codecSelferValueTypeMap1234 { + yyl2557 := r.ReadMapStart() + if yyl2557 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2557, d) + } + } else if yyct2557 == codecSelferValueTypeArray1234 { + yyl2557 := r.ReadArrayStart() + if yyl2557 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2557, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2558Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2558Slc + var yyhl2558 bool = l >= 0 + for yyj2558 := 0; ; yyj2558++ { + if yyhl2558 { + if yyj2558 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2558Slc = r.DecodeBytes(yys2558Slc, true, true) + yys2558 := string(yys2558Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2558 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv2559 := &x.LoadBalancer + yyv2559.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2558) + } // end switch yys2558 + } // end for yyj2558 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2560 int + var yyb2560 bool + var yyhl2560 bool = l >= 0 + yyj2560++ + if yyhl2560 { + yyb2560 = yyj2560 > l + } else { + yyb2560 = r.CheckBreak() + } + if yyb2560 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv2561 := &x.LoadBalancer + yyv2561.CodecDecodeSelf(d) + } + for { + yyj2560++ + if yyhl2560 { + yyb2560 = yyj2560 > l + } else { + yyb2560 = r.CheckBreak() + } + if yyb2560 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2560-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2562 := z.EncBinary() + _ = yym2562 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2563 := !z.EncBinary() + yy2arr2563 := z.EncBasicHandle().StructToArray + var yyq2563 [1]bool + _, _, _ = yysep2563, yyq2563, yy2arr2563 + const yyr2563 bool = false + yyq2563[0] = len(x.Ingress) != 0 + var yynn2563 int + if yyr2563 || yy2arr2563 { + r.EncodeArrayStart(1) + } else { + yynn2563 = 0 + for _, b := range yyq2563 { + if b { + yynn2563++ + } + } + r.EncodeMapStart(yynn2563) + yynn2563 = 0 + } + if yyr2563 || yy2arr2563 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2563[0] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym2565 := z.EncBinary() + _ = yym2565 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2563[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym2566 := z.EncBinary() + _ = yym2566 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } + } + if yyr2563 || yy2arr2563 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2567 := z.DecBinary() + _ = yym2567 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2568 := r.ContainerType() + if yyct2568 == codecSelferValueTypeMap1234 { + yyl2568 := r.ReadMapStart() + if yyl2568 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2568, d) + } + } else if yyct2568 == codecSelferValueTypeArray1234 { + yyl2568 := r.ReadArrayStart() + if yyl2568 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2568, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2569Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2569Slc + var yyhl2569 bool = l >= 0 + for yyj2569 := 0; ; yyj2569++ { + if yyhl2569 { + if yyj2569 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2569Slc = r.DecodeBytes(yys2569Slc, true, true) + yys2569 := string(yys2569Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2569 { + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv2570 := &x.Ingress + yym2571 := z.DecBinary() + _ = yym2571 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv2570), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2569) + } // end switch yys2569 + } // end for yyj2569 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2572 int + var yyb2572 bool + var yyhl2572 bool = l >= 0 + yyj2572++ + if yyhl2572 { + yyb2572 = yyj2572 > l + } else { + yyb2572 = r.CheckBreak() + } + if yyb2572 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv2573 := &x.Ingress + yym2574 := z.DecBinary() + _ = yym2574 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv2573), d) + } + } + for { + yyj2572++ + if yyhl2572 { + yyb2572 = yyj2572 > l + } else { + yyb2572 = r.CheckBreak() + } + if yyb2572 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2572-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerIngress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2575 := z.EncBinary() + _ = yym2575 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2576 := !z.EncBinary() + yy2arr2576 := z.EncBasicHandle().StructToArray + var yyq2576 [2]bool + _, _, _ = yysep2576, yyq2576, yy2arr2576 + const yyr2576 bool = false + yyq2576[0] = x.IP != "" + yyq2576[1] = x.Hostname != "" + var yynn2576 int + if yyr2576 || yy2arr2576 { + r.EncodeArrayStart(2) + } else { + yynn2576 = 0 + for _, b := range yyq2576 { + if b { + yynn2576++ + } + } + r.EncodeMapStart(yynn2576) + yynn2576 = 0 + } + if yyr2576 || yy2arr2576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2576[0] { + yym2578 := z.EncBinary() + _ = yym2578 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2576[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2579 := z.EncBinary() + _ = yym2579 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + } + if yyr2576 || yy2arr2576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2576[1] { + yym2581 := z.EncBinary() + _ = yym2581 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2576[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2582 := z.EncBinary() + _ = yym2582 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2576 || yy2arr2576 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerIngress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2583 := z.DecBinary() + _ = yym2583 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2584 := r.ContainerType() + if yyct2584 == codecSelferValueTypeMap1234 { + yyl2584 := r.ReadMapStart() + if yyl2584 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2584, d) + } + } else if yyct2584 == codecSelferValueTypeArray1234 { + yyl2584 := r.ReadArrayStart() + if yyl2584 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2584, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2585Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2585Slc + var yyhl2585 bool = l >= 0 + for yyj2585 := 0; ; yyj2585++ { + if yyhl2585 { + if yyj2585 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2585Slc = r.DecodeBytes(yys2585Slc, true, true) + yys2585 := string(yys2585Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2585 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2585) + } // end switch yys2585 + } // end for yyj2585 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2588 int + var yyb2588 bool + var yyhl2588 bool = l >= 0 + yyj2588++ + if yyhl2588 { + yyb2588 = yyj2588 > l + } else { + yyb2588 = r.CheckBreak() + } + if yyb2588 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + yyj2588++ + if yyhl2588 { + yyb2588 = yyj2588 > l + } else { + yyb2588 = r.CheckBreak() + } + if yyb2588 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + for { + yyj2588++ + if yyhl2588 { + yyb2588 = yyj2588 > l + } else { + yyb2588 = r.CheckBreak() + } + if yyb2588 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2588-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2591 := z.EncBinary() + _ = yym2591 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2592 := !z.EncBinary() + yy2arr2592 := z.EncBasicHandle().StructToArray + var yyq2592 [9]bool + _, _, _ = yysep2592, yyq2592, yy2arr2592 + const yyr2592 bool = false + yyq2592[0] = x.Type != "" + yyq2592[3] = x.ClusterIP != "" + yyq2592[5] = len(x.ExternalIPs) != 0 + yyq2592[6] = x.LoadBalancerIP != "" + yyq2592[7] = x.SessionAffinity != "" + yyq2592[8] = len(x.LoadBalancerSourceRanges) != 0 + var yynn2592 int + if yyr2592 || yy2arr2592 { + r.EncodeArrayStart(9) + } else { + yynn2592 = 3 + for _, b := range yyq2592 { + if b { + yynn2592++ + } + } + r.EncodeMapStart(yynn2592) + yynn2592 = 0 + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2592[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2595 := z.EncBinary() + _ = yym2595 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2596 := z.EncBinary() + _ = yym2596 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2598 := z.EncBinary() + _ = yym2598 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2599 := z.EncBinary() + _ = yym2599 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[3] { + yym2601 := z.EncBinary() + _ = yym2601 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2592[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2602 := z.EncBinary() + _ = yym2602 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2604 := z.EncBinary() + _ = yym2604 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ExternalName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2605 := z.EncBinary() + _ = yym2605 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[5] { + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym2607 := z.EncBinary() + _ = yym2607 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2592[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalIPs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym2608 := z.EncBinary() + _ = yym2608 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[6] { + yym2610 := z.EncBinary() + _ = yym2610 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2592[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2611 := z.EncBinary() + _ = yym2611 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[7] { + x.SessionAffinity.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2592[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sessionAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.SessionAffinity.CodecEncodeSelf(e) + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2592[8] { + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym2614 := z.EncBinary() + _ = yym2614 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2592[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerSourceRanges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym2615 := z.EncBinary() + _ = yym2615 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } + } + if yyr2592 || yy2arr2592 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2616 := z.DecBinary() + _ = yym2616 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2617 := r.ContainerType() + if yyct2617 == codecSelferValueTypeMap1234 { + yyl2617 := r.ReadMapStart() + if yyl2617 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2617, d) + } + } else if yyct2617 == codecSelferValueTypeArray1234 { + yyl2617 := r.ReadArrayStart() + if yyl2617 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2617, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2618Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2618Slc + var yyhl2618 bool = l >= 0 + for yyj2618 := 0; ; yyj2618++ { + if yyhl2618 { + if yyj2618 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2618Slc = r.DecodeBytes(yys2618Slc, true, true) + yys2618 := string(yys2618Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2618 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ServiceType(r.DecodeString()) + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2620 := &x.Ports + yym2621 := z.DecBinary() + _ = yym2621 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv2620), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2622 := &x.Selector + yym2623 := z.DecBinary() + _ = yym2623 + if false { + } else { + z.F.DecMapStringStringX(yyv2622, false, d) + } + } + case "clusterIP": + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + x.ClusterIP = string(r.DecodeString()) + } + case "ExternalName": + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + x.ExternalName = string(r.DecodeString()) + } + case "externalIPs": + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv2626 := &x.ExternalIPs + yym2627 := z.DecBinary() + _ = yym2627 + if false { + } else { + z.F.DecSliceStringX(yyv2626, false, d) + } + } + case "loadBalancerIP": + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + x.LoadBalancerIP = string(r.DecodeString()) + } + case "sessionAffinity": + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + x.SessionAffinity = ServiceAffinity(r.DecodeString()) + } + case "loadBalancerSourceRanges": + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv2630 := &x.LoadBalancerSourceRanges + yym2631 := z.DecBinary() + _ = yym2631 + if false { + } else { + z.F.DecSliceStringX(yyv2630, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2618) + } // end switch yys2618 + } // end for yyj2618 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2632 int + var yyb2632 bool + var yyhl2632 bool = l >= 0 + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ServiceType(r.DecodeString()) + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2634 := &x.Ports + yym2635 := z.DecBinary() + _ = yym2635 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv2634), d) + } + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2636 := &x.Selector + yym2637 := z.DecBinary() + _ = yym2637 + if false { + } else { + z.F.DecMapStringStringX(yyv2636, false, d) + } + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + x.ClusterIP = string(r.DecodeString()) + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + x.ExternalName = string(r.DecodeString()) + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv2640 := &x.ExternalIPs + yym2641 := z.DecBinary() + _ = yym2641 + if false { + } else { + z.F.DecSliceStringX(yyv2640, false, d) + } + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + x.LoadBalancerIP = string(r.DecodeString()) + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + x.SessionAffinity = ServiceAffinity(r.DecodeString()) + } + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv2644 := &x.LoadBalancerSourceRanges + yym2645 := z.DecBinary() + _ = yym2645 + if false { + } else { + z.F.DecSliceStringX(yyv2644, false, d) + } + } + for { + yyj2632++ + if yyhl2632 { + yyb2632 = yyj2632 > l + } else { + yyb2632 = r.CheckBreak() + } + if yyb2632 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2632-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServicePort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2646 := z.EncBinary() + _ = yym2646 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2647 := !z.EncBinary() + yy2arr2647 := z.EncBasicHandle().StructToArray + var yyq2647 [5]bool + _, _, _ = yysep2647, yyq2647, yy2arr2647 + const yyr2647 bool = false + var yynn2647 int + if yyr2647 || yy2arr2647 { + r.EncodeArrayStart(5) + } else { + yynn2647 = 5 + for _, b := range yyq2647 { + if b { + yynn2647++ + } + } + r.EncodeMapStart(yynn2647) + yynn2647 = 0 + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2649 := z.EncBinary() + _ = yym2649 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2650 := z.EncBinary() + _ = yym2650 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Protocol.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2653 := z.EncBinary() + _ = yym2653 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2654 := z.EncBinary() + _ = yym2654 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy2656 := &x.TargetPort + yym2657 := z.EncBinary() + _ = yym2657 + if false { + } else if z.HasExtensions() && z.EncExt(yy2656) { + } else if !yym2657 && z.IsJSONHandle() { + z.EncJSONMarshal(yy2656) + } else { + z.EncFallback(yy2656) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2658 := &x.TargetPort + yym2659 := z.EncBinary() + _ = yym2659 + if false { + } else if z.HasExtensions() && z.EncExt(yy2658) { + } else if !yym2659 && z.IsJSONHandle() { + z.EncJSONMarshal(yy2658) + } else { + z.EncFallback(yy2658) + } + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2661 := z.EncBinary() + _ = yym2661 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2662 := z.EncBinary() + _ = yym2662 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } + if yyr2647 || yy2arr2647 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServicePort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2663 := z.DecBinary() + _ = yym2663 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2664 := r.ContainerType() + if yyct2664 == codecSelferValueTypeMap1234 { + yyl2664 := r.ReadMapStart() + if yyl2664 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2664, d) + } + } else if yyct2664 == codecSelferValueTypeArray1234 { + yyl2664 := r.ReadArrayStart() + if yyl2664 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2664, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServicePort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2665Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2665Slc + var yyhl2665 bool = l >= 0 + for yyj2665 := 0; ; yyj2665++ { + if yyhl2665 { + if yyj2665 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2665Slc = r.DecodeBytes(yys2665Slc, true, true) + yys2665 := string(yys2665Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2665 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + case "targetPort": + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv2669 := &x.TargetPort + yym2670 := z.DecBinary() + _ = yym2670 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2669) { + } else if !yym2670 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv2669) + } else { + z.DecFallback(yyv2669, false) + } + } + case "nodePort": + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + x.NodePort = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys2665) + } // end switch yys2665 + } // end for yyj2665 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServicePort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2672 int + var yyb2672 bool + var yyhl2672 bool = l >= 0 + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv2676 := &x.TargetPort + yym2677 := z.DecBinary() + _ = yym2677 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2676) { + } else if !yym2677 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv2676) + } else { + z.DecFallback(yyv2676, false) + } + } + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + x.NodePort = int32(r.DecodeInt(32)) + } + for { + yyj2672++ + if yyhl2672 { + yyb2672 = yyj2672 > l + } else { + yyb2672 = r.CheckBreak() + } + if yyb2672 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2672-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Service) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2679 := z.EncBinary() + _ = yym2679 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2680 := !z.EncBinary() + yy2arr2680 := z.EncBasicHandle().StructToArray + var yyq2680 [5]bool + _, _, _ = yysep2680, yyq2680, yy2arr2680 + const yyr2680 bool = false + yyq2680[0] = x.Kind != "" + yyq2680[1] = x.APIVersion != "" + yyq2680[2] = true + yyq2680[3] = true + yyq2680[4] = true + var yynn2680 int + if yyr2680 || yy2arr2680 { + r.EncodeArrayStart(5) + } else { + yynn2680 = 0 + for _, b := range yyq2680 { + if b { + yynn2680++ + } + } + r.EncodeMapStart(yynn2680) + yynn2680 = 0 + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2680[0] { + yym2682 := z.EncBinary() + _ = yym2682 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2680[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2683 := z.EncBinary() + _ = yym2683 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2680[1] { + yym2685 := z.EncBinary() + _ = yym2685 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2680[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2686 := z.EncBinary() + _ = yym2686 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2680[2] { + yy2688 := &x.ObjectMeta + yy2688.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2680[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2689 := &x.ObjectMeta + yy2689.CodecEncodeSelf(e) + } + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2680[3] { + yy2691 := &x.Spec + yy2691.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2680[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2692 := &x.Spec + yy2692.CodecEncodeSelf(e) + } + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2680[4] { + yy2694 := &x.Status + yy2694.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2680[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2695 := &x.Status + yy2695.CodecEncodeSelf(e) + } + } + if yyr2680 || yy2arr2680 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Service) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2696 := z.DecBinary() + _ = yym2696 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2697 := r.ContainerType() + if yyct2697 == codecSelferValueTypeMap1234 { + yyl2697 := r.ReadMapStart() + if yyl2697 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2697, d) + } + } else if yyct2697 == codecSelferValueTypeArray1234 { + yyl2697 := r.ReadArrayStart() + if yyl2697 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2697, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Service) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2698Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2698Slc + var yyhl2698 bool = l >= 0 + for yyj2698 := 0; ; yyj2698++ { + if yyhl2698 { + if yyj2698 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2698Slc = r.DecodeBytes(yys2698Slc, true, true) + yys2698 := string(yys2698Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2698 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2701 := &x.ObjectMeta + yyv2701.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv2702 := &x.Spec + yyv2702.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv2703 := &x.Status + yyv2703.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2698) + } // end switch yys2698 + } // end for yyj2698 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Service) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2704 int + var yyb2704 bool + var yyhl2704 bool = l >= 0 + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2707 := &x.ObjectMeta + yyv2707.CodecDecodeSelf(d) + } + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv2708 := &x.Spec + yyv2708.CodecDecodeSelf(d) + } + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv2709 := &x.Status + yyv2709.CodecDecodeSelf(d) + } + for { + yyj2704++ + if yyhl2704 { + yyb2704 = yyj2704 > l + } else { + yyb2704 = r.CheckBreak() + } + if yyb2704 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2704-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2710 := z.EncBinary() + _ = yym2710 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2711 := !z.EncBinary() + yy2arr2711 := z.EncBasicHandle().StructToArray + var yyq2711 [5]bool + _, _, _ = yysep2711, yyq2711, yy2arr2711 + const yyr2711 bool = false + yyq2711[0] = x.Kind != "" + yyq2711[1] = x.APIVersion != "" + yyq2711[2] = true + yyq2711[4] = len(x.ImagePullSecrets) != 0 + var yynn2711 int + if yyr2711 || yy2arr2711 { + r.EncodeArrayStart(5) + } else { + yynn2711 = 1 + for _, b := range yyq2711 { + if b { + yynn2711++ + } + } + r.EncodeMapStart(yynn2711) + yynn2711 = 0 + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2711[0] { + yym2713 := z.EncBinary() + _ = yym2713 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2711[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2714 := z.EncBinary() + _ = yym2714 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2711[1] { + yym2716 := z.EncBinary() + _ = yym2716 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2711[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2717 := z.EncBinary() + _ = yym2717 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2711[2] { + yy2719 := &x.ObjectMeta + yy2719.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2711[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2720 := &x.ObjectMeta + yy2720.CodecEncodeSelf(e) + } + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Secrets == nil { + r.EncodeNil() + } else { + yym2722 := z.EncBinary() + _ = yym2722 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secrets == nil { + r.EncodeNil() + } else { + yym2723 := z.EncBinary() + _ = yym2723 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2711[4] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2725 := z.EncBinary() + _ = yym2725 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2711[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2726 := z.EncBinary() + _ = yym2726 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr2711 || yy2arr2711 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2727 := z.DecBinary() + _ = yym2727 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2728 := r.ContainerType() + if yyct2728 == codecSelferValueTypeMap1234 { + yyl2728 := r.ReadMapStart() + if yyl2728 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2728, d) + } + } else if yyct2728 == codecSelferValueTypeArray1234 { + yyl2728 := r.ReadArrayStart() + if yyl2728 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2728, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2729Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2729Slc + var yyhl2729 bool = l >= 0 + for yyj2729 := 0; ; yyj2729++ { + if yyhl2729 { + if yyj2729 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2729Slc = r.DecodeBytes(yys2729Slc, true, true) + yys2729 := string(yys2729Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2729 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2732 := &x.ObjectMeta + yyv2732.CodecDecodeSelf(d) + } + case "secrets": + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv2733 := &x.Secrets + yym2734 := z.DecBinary() + _ = yym2734 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv2733), d) + } + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2735 := &x.ImagePullSecrets + yym2736 := z.DecBinary() + _ = yym2736 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2735), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2729) + } // end switch yys2729 + } // end for yyj2729 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2737 int + var yyb2737 bool + var yyhl2737 bool = l >= 0 + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2740 := &x.ObjectMeta + yyv2740.CodecDecodeSelf(d) + } + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv2741 := &x.Secrets + yym2742 := z.DecBinary() + _ = yym2742 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv2741), d) + } + } + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2743 := &x.ImagePullSecrets + yym2744 := z.DecBinary() + _ = yym2744 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2743), d) + } + } + for { + yyj2737++ + if yyhl2737 { + yyb2737 = yyj2737 > l + } else { + yyb2737 = r.CheckBreak() + } + if yyb2737 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2737-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccountList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2745 := z.EncBinary() + _ = yym2745 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2746 := !z.EncBinary() + yy2arr2746 := z.EncBasicHandle().StructToArray + var yyq2746 [4]bool + _, _, _ = yysep2746, yyq2746, yy2arr2746 + const yyr2746 bool = false + yyq2746[0] = x.Kind != "" + yyq2746[1] = x.APIVersion != "" + yyq2746[2] = true + var yynn2746 int + if yyr2746 || yy2arr2746 { + r.EncodeArrayStart(4) + } else { + yynn2746 = 1 + for _, b := range yyq2746 { + if b { + yynn2746++ + } + } + r.EncodeMapStart(yynn2746) + yynn2746 = 0 + } + if yyr2746 || yy2arr2746 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2746[0] { + yym2748 := z.EncBinary() + _ = yym2748 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2746[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2749 := z.EncBinary() + _ = yym2749 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2746 || yy2arr2746 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2746[1] { + yym2751 := z.EncBinary() + _ = yym2751 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2746[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2752 := z.EncBinary() + _ = yym2752 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2746 || yy2arr2746 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2746[2] { + yy2754 := &x.ListMeta + yym2755 := z.EncBinary() + _ = yym2755 + if false { + } else if z.HasExtensions() && z.EncExt(yy2754) { + } else { + z.EncFallback(yy2754) + } + } else { + r.EncodeNil() + } + } else { + if yyq2746[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2756 := &x.ListMeta + yym2757 := z.EncBinary() + _ = yym2757 + if false { + } else if z.HasExtensions() && z.EncExt(yy2756) { + } else { + z.EncFallback(yy2756) + } + } + } + if yyr2746 || yy2arr2746 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2759 := z.EncBinary() + _ = yym2759 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2760 := z.EncBinary() + _ = yym2760 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } + if yyr2746 || yy2arr2746 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccountList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2761 := z.DecBinary() + _ = yym2761 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2762 := r.ContainerType() + if yyct2762 == codecSelferValueTypeMap1234 { + yyl2762 := r.ReadMapStart() + if yyl2762 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2762, d) + } + } else if yyct2762 == codecSelferValueTypeArray1234 { + yyl2762 := r.ReadArrayStart() + if yyl2762 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2762, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccountList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2763Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2763Slc + var yyhl2763 bool = l >= 0 + for yyj2763 := 0; ; yyj2763++ { + if yyhl2763 { + if yyj2763 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2763Slc = r.DecodeBytes(yys2763Slc, true, true) + yys2763 := string(yys2763Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2763 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2766 := &x.ListMeta + yym2767 := z.DecBinary() + _ = yym2767 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2766) { + } else { + z.DecFallback(yyv2766, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2768 := &x.Items + yym2769 := z.DecBinary() + _ = yym2769 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv2768), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2763) + } // end switch yys2763 + } // end for yyj2763 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccountList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2770 int + var yyb2770 bool + var yyhl2770 bool = l >= 0 + yyj2770++ + if yyhl2770 { + yyb2770 = yyj2770 > l + } else { + yyb2770 = r.CheckBreak() + } + if yyb2770 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2770++ + if yyhl2770 { + yyb2770 = yyj2770 > l + } else { + yyb2770 = r.CheckBreak() + } + if yyb2770 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2770++ + if yyhl2770 { + yyb2770 = yyj2770 > l + } else { + yyb2770 = r.CheckBreak() + } + if yyb2770 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2773 := &x.ListMeta + yym2774 := z.DecBinary() + _ = yym2774 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2773) { + } else { + z.DecFallback(yyv2773, false) + } + } + yyj2770++ + if yyhl2770 { + yyb2770 = yyj2770 > l + } else { + yyb2770 = r.CheckBreak() + } + if yyb2770 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2775 := &x.Items + yym2776 := z.DecBinary() + _ = yym2776 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv2775), d) + } + } + for { + yyj2770++ + if yyhl2770 { + yyb2770 = yyj2770 > l + } else { + yyb2770 = r.CheckBreak() + } + if yyb2770 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2770-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Endpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2777 := z.EncBinary() + _ = yym2777 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2778 := !z.EncBinary() + yy2arr2778 := z.EncBasicHandle().StructToArray + var yyq2778 [4]bool + _, _, _ = yysep2778, yyq2778, yy2arr2778 + const yyr2778 bool = false + yyq2778[0] = x.Kind != "" + yyq2778[1] = x.APIVersion != "" + yyq2778[2] = true + var yynn2778 int + if yyr2778 || yy2arr2778 { + r.EncodeArrayStart(4) + } else { + yynn2778 = 1 + for _, b := range yyq2778 { + if b { + yynn2778++ + } + } + r.EncodeMapStart(yynn2778) + yynn2778 = 0 + } + if yyr2778 || yy2arr2778 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2778[0] { + yym2780 := z.EncBinary() + _ = yym2780 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2778[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2781 := z.EncBinary() + _ = yym2781 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2778 || yy2arr2778 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2778[1] { + yym2783 := z.EncBinary() + _ = yym2783 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2778[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2784 := z.EncBinary() + _ = yym2784 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2778 || yy2arr2778 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2778[2] { + yy2786 := &x.ObjectMeta + yy2786.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2778[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2787 := &x.ObjectMeta + yy2787.CodecEncodeSelf(e) + } + } + if yyr2778 || yy2arr2778 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym2789 := z.EncBinary() + _ = yym2789 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Subsets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym2790 := z.EncBinary() + _ = yym2790 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } + if yyr2778 || yy2arr2778 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Endpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2791 := z.DecBinary() + _ = yym2791 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2792 := r.ContainerType() + if yyct2792 == codecSelferValueTypeMap1234 { + yyl2792 := r.ReadMapStart() + if yyl2792 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2792, d) + } + } else if yyct2792 == codecSelferValueTypeArray1234 { + yyl2792 := r.ReadArrayStart() + if yyl2792 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2792, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Endpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2793Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2793Slc + var yyhl2793 bool = l >= 0 + for yyj2793 := 0; ; yyj2793++ { + if yyhl2793 { + if yyj2793 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2793Slc = r.DecodeBytes(yys2793Slc, true, true) + yys2793 := string(yys2793Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2793 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2796 := &x.ObjectMeta + yyv2796.CodecDecodeSelf(d) + } + case "Subsets": + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv2797 := &x.Subsets + yym2798 := z.DecBinary() + _ = yym2798 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv2797), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2793) + } // end switch yys2793 + } // end for yyj2793 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Endpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2799 int + var yyb2799 bool + var yyhl2799 bool = l >= 0 + yyj2799++ + if yyhl2799 { + yyb2799 = yyj2799 > l + } else { + yyb2799 = r.CheckBreak() + } + if yyb2799 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2799++ + if yyhl2799 { + yyb2799 = yyj2799 > l + } else { + yyb2799 = r.CheckBreak() + } + if yyb2799 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2799++ + if yyhl2799 { + yyb2799 = yyj2799 > l + } else { + yyb2799 = r.CheckBreak() + } + if yyb2799 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2802 := &x.ObjectMeta + yyv2802.CodecDecodeSelf(d) + } + yyj2799++ + if yyhl2799 { + yyb2799 = yyj2799 > l + } else { + yyb2799 = r.CheckBreak() + } + if yyb2799 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv2803 := &x.Subsets + yym2804 := z.DecBinary() + _ = yym2804 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv2803), d) + } + } + for { + yyj2799++ + if yyhl2799 { + yyb2799 = yyj2799 > l + } else { + yyb2799 = r.CheckBreak() + } + if yyb2799 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2799-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointSubset) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2805 := z.EncBinary() + _ = yym2805 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2806 := !z.EncBinary() + yy2arr2806 := z.EncBasicHandle().StructToArray + var yyq2806 [3]bool + _, _, _ = yysep2806, yyq2806, yy2arr2806 + const yyr2806 bool = false + var yynn2806 int + if yyr2806 || yy2arr2806 { + r.EncodeArrayStart(3) + } else { + yynn2806 = 3 + for _, b := range yyq2806 { + if b { + yynn2806++ + } + } + r.EncodeMapStart(yynn2806) + yynn2806 = 0 + } + if yyr2806 || yy2arr2806 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2808 := z.EncBinary() + _ = yym2808 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2809 := z.EncBinary() + _ = yym2809 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } + if yyr2806 || yy2arr2806 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym2811 := z.EncBinary() + _ = yym2811 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("NotReadyAddresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym2812 := z.EncBinary() + _ = yym2812 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } + if yyr2806 || yy2arr2806 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2814 := z.EncBinary() + _ = yym2814 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2815 := z.EncBinary() + _ = yym2815 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } + if yyr2806 || yy2arr2806 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointSubset) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2816 := z.DecBinary() + _ = yym2816 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2817 := r.ContainerType() + if yyct2817 == codecSelferValueTypeMap1234 { + yyl2817 := r.ReadMapStart() + if yyl2817 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2817, d) + } + } else if yyct2817 == codecSelferValueTypeArray1234 { + yyl2817 := r.ReadArrayStart() + if yyl2817 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2817, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointSubset) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2818Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2818Slc + var yyhl2818 bool = l >= 0 + for yyj2818 := 0; ; yyj2818++ { + if yyhl2818 { + if yyj2818 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2818Slc = r.DecodeBytes(yys2818Slc, true, true) + yys2818 := string(yys2818Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2818 { + case "Addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv2819 := &x.Addresses + yym2820 := z.DecBinary() + _ = yym2820 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2819), d) + } + } + case "NotReadyAddresses": + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv2821 := &x.NotReadyAddresses + yym2822 := z.DecBinary() + _ = yym2822 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2821), d) + } + } + case "Ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2823 := &x.Ports + yym2824 := z.DecBinary() + _ = yym2824 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv2823), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2818) + } // end switch yys2818 + } // end for yyj2818 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointSubset) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2825 int + var yyb2825 bool + var yyhl2825 bool = l >= 0 + yyj2825++ + if yyhl2825 { + yyb2825 = yyj2825 > l + } else { + yyb2825 = r.CheckBreak() + } + if yyb2825 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv2826 := &x.Addresses + yym2827 := z.DecBinary() + _ = yym2827 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2826), d) + } + } + yyj2825++ + if yyhl2825 { + yyb2825 = yyj2825 > l + } else { + yyb2825 = r.CheckBreak() + } + if yyb2825 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv2828 := &x.NotReadyAddresses + yym2829 := z.DecBinary() + _ = yym2829 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2828), d) + } + } + yyj2825++ + if yyhl2825 { + yyb2825 = yyj2825 > l + } else { + yyb2825 = r.CheckBreak() + } + if yyb2825 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2830 := &x.Ports + yym2831 := z.DecBinary() + _ = yym2831 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv2830), d) + } + } + for { + yyj2825++ + if yyhl2825 { + yyb2825 = yyj2825 > l + } else { + yyb2825 = r.CheckBreak() + } + if yyb2825 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2825-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2832 := z.EncBinary() + _ = yym2832 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2833 := !z.EncBinary() + yy2arr2833 := z.EncBasicHandle().StructToArray + var yyq2833 [4]bool + _, _, _ = yysep2833, yyq2833, yy2arr2833 + const yyr2833 bool = false + yyq2833[1] = x.Hostname != "" + yyq2833[2] = x.NodeName != nil + var yynn2833 int + if yyr2833 || yy2arr2833 { + r.EncodeArrayStart(4) + } else { + yynn2833 = 2 + for _, b := range yyq2833 { + if b { + yynn2833++ + } + } + r.EncodeMapStart(yynn2833) + yynn2833 = 0 + } + if yyr2833 || yy2arr2833 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2835 := z.EncBinary() + _ = yym2835 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("IP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2836 := z.EncBinary() + _ = yym2836 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + if yyr2833 || yy2arr2833 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2833[1] { + yym2838 := z.EncBinary() + _ = yym2838 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2833[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2839 := z.EncBinary() + _ = yym2839 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2833 || yy2arr2833 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2833[2] { + if x.NodeName == nil { + r.EncodeNil() + } else { + yy2841 := *x.NodeName + yym2842 := z.EncBinary() + _ = yym2842 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy2841)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2833[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeName == nil { + r.EncodeNil() + } else { + yy2843 := *x.NodeName + yym2844 := z.EncBinary() + _ = yym2844 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy2843)) + } + } + } + } + if yyr2833 || yy2arr2833 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("TargetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } + if yyr2833 || yy2arr2833 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2846 := z.DecBinary() + _ = yym2846 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2847 := r.ContainerType() + if yyct2847 == codecSelferValueTypeMap1234 { + yyl2847 := r.ReadMapStart() + if yyl2847 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2847, d) + } + } else if yyct2847 == codecSelferValueTypeArray1234 { + yyl2847 := r.ReadArrayStart() + if yyl2847 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2847, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2848Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2848Slc + var yyhl2848 bool = l >= 0 + for yyj2848 := 0; ; yyj2848++ { + if yyhl2848 { + if yyj2848 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2848Slc = r.DecodeBytes(yys2848Slc, true, true) + yys2848 := string(yys2848Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2848 { + case "IP": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + case "nodeName": + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym2852 := z.DecBinary() + _ = yym2852 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + case "TargetRef": + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2848) + } // end switch yys2848 + } // end for yyj2848 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2854 int + var yyb2854 bool + var yyhl2854 bool = l >= 0 + yyj2854++ + if yyhl2854 { + yyb2854 = yyj2854 > l + } else { + yyb2854 = r.CheckBreak() + } + if yyb2854 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + yyj2854++ + if yyhl2854 { + yyb2854 = yyj2854 > l + } else { + yyb2854 = r.CheckBreak() + } + if yyb2854 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + yyj2854++ + if yyhl2854 { + yyb2854 = yyj2854 > l + } else { + yyb2854 = r.CheckBreak() + } + if yyb2854 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym2858 := z.DecBinary() + _ = yym2858 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + yyj2854++ + if yyhl2854 { + yyb2854 = yyj2854 > l + } else { + yyb2854 = r.CheckBreak() + } + if yyb2854 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + for { + yyj2854++ + if yyhl2854 { + yyb2854 = yyj2854 > l + } else { + yyb2854 = r.CheckBreak() + } + if yyb2854 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2854-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2860 := z.EncBinary() + _ = yym2860 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2861 := !z.EncBinary() + yy2arr2861 := z.EncBasicHandle().StructToArray + var yyq2861 [3]bool + _, _, _ = yysep2861, yyq2861, yy2arr2861 + const yyr2861 bool = false + var yynn2861 int + if yyr2861 || yy2arr2861 { + r.EncodeArrayStart(3) + } else { + yynn2861 = 3 + for _, b := range yyq2861 { + if b { + yynn2861++ + } + } + r.EncodeMapStart(yynn2861) + yynn2861 = 0 + } + if yyr2861 || yy2arr2861 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2863 := z.EncBinary() + _ = yym2863 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2864 := z.EncBinary() + _ = yym2864 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2861 || yy2arr2861 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2866 := z.EncBinary() + _ = yym2866 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2867 := z.EncBinary() + _ = yym2867 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2861 || yy2arr2861 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Protocol.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + if yyr2861 || yy2arr2861 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2869 := z.DecBinary() + _ = yym2869 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2870 := r.ContainerType() + if yyct2870 == codecSelferValueTypeMap1234 { + yyl2870 := r.ReadMapStart() + if yyl2870 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2870, d) + } + } else if yyct2870 == codecSelferValueTypeArray1234 { + yyl2870 := r.ReadArrayStart() + if yyl2870 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2870, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2871Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2871Slc + var yyhl2871 bool = l >= 0 + for yyj2871 := 0; ; yyj2871++ { + if yyhl2871 { + if yyj2871 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2871Slc = r.DecodeBytes(yys2871Slc, true, true) + yys2871 := string(yys2871Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2871 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "Port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + case "Protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2871) + } // end switch yys2871 + } // end for yyj2871 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2875 int + var yyb2875 bool + var yyhl2875 bool = l >= 0 + yyj2875++ + if yyhl2875 { + yyb2875 = yyj2875 > l + } else { + yyb2875 = r.CheckBreak() + } + if yyb2875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj2875++ + if yyhl2875 { + yyb2875 = yyj2875 > l + } else { + yyb2875 = r.CheckBreak() + } + if yyb2875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + yyj2875++ + if yyhl2875 { + yyb2875 = yyj2875 > l + } else { + yyb2875 = r.CheckBreak() + } + if yyb2875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + for { + yyj2875++ + if yyhl2875 { + yyb2875 = yyj2875 > l + } else { + yyb2875 = r.CheckBreak() + } + if yyb2875 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2875-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointsList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2879 := z.EncBinary() + _ = yym2879 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2880 := !z.EncBinary() + yy2arr2880 := z.EncBasicHandle().StructToArray + var yyq2880 [4]bool + _, _, _ = yysep2880, yyq2880, yy2arr2880 + const yyr2880 bool = false + yyq2880[0] = x.Kind != "" + yyq2880[1] = x.APIVersion != "" + yyq2880[2] = true + var yynn2880 int + if yyr2880 || yy2arr2880 { + r.EncodeArrayStart(4) + } else { + yynn2880 = 1 + for _, b := range yyq2880 { + if b { + yynn2880++ + } + } + r.EncodeMapStart(yynn2880) + yynn2880 = 0 + } + if yyr2880 || yy2arr2880 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2880[0] { + yym2882 := z.EncBinary() + _ = yym2882 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2880[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2883 := z.EncBinary() + _ = yym2883 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2880 || yy2arr2880 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2880[1] { + yym2885 := z.EncBinary() + _ = yym2885 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2880[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2886 := z.EncBinary() + _ = yym2886 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2880 || yy2arr2880 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2880[2] { + yy2888 := &x.ListMeta + yym2889 := z.EncBinary() + _ = yym2889 + if false { + } else if z.HasExtensions() && z.EncExt(yy2888) { + } else { + z.EncFallback(yy2888) + } + } else { + r.EncodeNil() + } + } else { + if yyq2880[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2890 := &x.ListMeta + yym2891 := z.EncBinary() + _ = yym2891 + if false { + } else if z.HasExtensions() && z.EncExt(yy2890) { + } else { + z.EncFallback(yy2890) + } + } + } + if yyr2880 || yy2arr2880 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2893 := z.EncBinary() + _ = yym2893 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2894 := z.EncBinary() + _ = yym2894 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } + if yyr2880 || yy2arr2880 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointsList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2895 := z.DecBinary() + _ = yym2895 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2896 := r.ContainerType() + if yyct2896 == codecSelferValueTypeMap1234 { + yyl2896 := r.ReadMapStart() + if yyl2896 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2896, d) + } + } else if yyct2896 == codecSelferValueTypeArray1234 { + yyl2896 := r.ReadArrayStart() + if yyl2896 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2896, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointsList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2897Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2897Slc + var yyhl2897 bool = l >= 0 + for yyj2897 := 0; ; yyj2897++ { + if yyhl2897 { + if yyj2897 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2897Slc = r.DecodeBytes(yys2897Slc, true, true) + yys2897 := string(yys2897Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2897 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2900 := &x.ListMeta + yym2901 := z.DecBinary() + _ = yym2901 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2900) { + } else { + z.DecFallback(yyv2900, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2902 := &x.Items + yym2903 := z.DecBinary() + _ = yym2903 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv2902), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2897) + } // end switch yys2897 + } // end for yyj2897 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointsList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2904 int + var yyb2904 bool + var yyhl2904 bool = l >= 0 + yyj2904++ + if yyhl2904 { + yyb2904 = yyj2904 > l + } else { + yyb2904 = r.CheckBreak() + } + if yyb2904 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2904++ + if yyhl2904 { + yyb2904 = yyj2904 > l + } else { + yyb2904 = r.CheckBreak() + } + if yyb2904 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2904++ + if yyhl2904 { + yyb2904 = yyj2904 > l + } else { + yyb2904 = r.CheckBreak() + } + if yyb2904 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2907 := &x.ListMeta + yym2908 := z.DecBinary() + _ = yym2908 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2907) { + } else { + z.DecFallback(yyv2907, false) + } + } + yyj2904++ + if yyhl2904 { + yyb2904 = yyj2904 > l + } else { + yyb2904 = r.CheckBreak() + } + if yyb2904 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2909 := &x.Items + yym2910 := z.DecBinary() + _ = yym2910 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv2909), d) + } + } + for { + yyj2904++ + if yyhl2904 { + yyb2904 = yyj2904 > l + } else { + yyb2904 = r.CheckBreak() + } + if yyb2904 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2904-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2911 := z.EncBinary() + _ = yym2911 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2912 := !z.EncBinary() + yy2arr2912 := z.EncBasicHandle().StructToArray + var yyq2912 [4]bool + _, _, _ = yysep2912, yyq2912, yy2arr2912 + const yyr2912 bool = false + yyq2912[0] = x.PodCIDR != "" + yyq2912[1] = x.ExternalID != "" + yyq2912[2] = x.ProviderID != "" + yyq2912[3] = x.Unschedulable != false + var yynn2912 int + if yyr2912 || yy2arr2912 { + r.EncodeArrayStart(4) + } else { + yynn2912 = 0 + for _, b := range yyq2912 { + if b { + yynn2912++ + } + } + r.EncodeMapStart(yynn2912) + yynn2912 = 0 + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2912[0] { + yym2914 := z.EncBinary() + _ = yym2914 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2912[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podCIDR")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2915 := z.EncBinary() + _ = yym2915 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2912[1] { + yym2917 := z.EncBinary() + _ = yym2917 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2912[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2918 := z.EncBinary() + _ = yym2918 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2912[2] { + yym2920 := z.EncBinary() + _ = yym2920 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2912[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("providerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2921 := z.EncBinary() + _ = yym2921 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2912[3] { + yym2923 := z.EncBinary() + _ = yym2923 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2912[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unschedulable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2924 := z.EncBinary() + _ = yym2924 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2925 := z.DecBinary() + _ = yym2925 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2926 := r.ContainerType() + if yyct2926 == codecSelferValueTypeMap1234 { + yyl2926 := r.ReadMapStart() + if yyl2926 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2926, d) + } + } else if yyct2926 == codecSelferValueTypeArray1234 { + yyl2926 := r.ReadArrayStart() + if yyl2926 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2926, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2927Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2927Slc + var yyhl2927 bool = l >= 0 + for yyj2927 := 0; ; yyj2927++ { + if yyhl2927 { + if yyj2927 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2927Slc = r.DecodeBytes(yys2927Slc, true, true) + yys2927 := string(yys2927Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2927 { + case "podCIDR": + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + x.PodCIDR = string(r.DecodeString()) + } + case "externalID": + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + x.ExternalID = string(r.DecodeString()) + } + case "providerID": + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + x.ProviderID = string(r.DecodeString()) + } + case "unschedulable": + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + x.Unschedulable = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys2927) + } // end switch yys2927 + } // end for yyj2927 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2932 int + var yyb2932 bool + var yyhl2932 bool = l >= 0 + yyj2932++ + if yyhl2932 { + yyb2932 = yyj2932 > l + } else { + yyb2932 = r.CheckBreak() + } + if yyb2932 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + x.PodCIDR = string(r.DecodeString()) + } + yyj2932++ + if yyhl2932 { + yyb2932 = yyj2932 > l + } else { + yyb2932 = r.CheckBreak() + } + if yyb2932 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + x.ExternalID = string(r.DecodeString()) + } + yyj2932++ + if yyhl2932 { + yyb2932 = yyj2932 > l + } else { + yyb2932 = r.CheckBreak() + } + if yyb2932 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + x.ProviderID = string(r.DecodeString()) + } + yyj2932++ + if yyhl2932 { + yyb2932 = yyj2932 > l + } else { + yyb2932 = r.CheckBreak() + } + if yyb2932 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + x.Unschedulable = bool(r.DecodeBool()) + } + for { + yyj2932++ + if yyhl2932 { + yyb2932 = yyj2932 > l + } else { + yyb2932 = r.CheckBreak() + } + if yyb2932 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2932-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonEndpoint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2937 := z.EncBinary() + _ = yym2937 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2938 := !z.EncBinary() + yy2arr2938 := z.EncBasicHandle().StructToArray + var yyq2938 [1]bool + _, _, _ = yysep2938, yyq2938, yy2arr2938 + const yyr2938 bool = false + var yynn2938 int + if yyr2938 || yy2arr2938 { + r.EncodeArrayStart(1) + } else { + yynn2938 = 1 + for _, b := range yyq2938 { + if b { + yynn2938++ + } + } + r.EncodeMapStart(yynn2938) + yynn2938 = 0 + } + if yyr2938 || yy2arr2938 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2940 := z.EncBinary() + _ = yym2940 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2941 := z.EncBinary() + _ = yym2941 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2938 || yy2arr2938 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonEndpoint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2942 := z.DecBinary() + _ = yym2942 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2943 := r.ContainerType() + if yyct2943 == codecSelferValueTypeMap1234 { + yyl2943 := r.ReadMapStart() + if yyl2943 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2943, d) + } + } else if yyct2943 == codecSelferValueTypeArray1234 { + yyl2943 := r.ReadArrayStart() + if yyl2943 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2943, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonEndpoint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2944Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2944Slc + var yyhl2944 bool = l >= 0 + for yyj2944 := 0; ; yyj2944++ { + if yyhl2944 { + if yyj2944 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2944Slc = r.DecodeBytes(yys2944Slc, true, true) + yys2944 := string(yys2944Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2944 { + case "Port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys2944) + } // end switch yys2944 + } // end for yyj2944 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonEndpoint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2946 int + var yyb2946 bool + var yyhl2946 bool = l >= 0 + yyj2946++ + if yyhl2946 { + yyb2946 = yyj2946 > l + } else { + yyb2946 = r.CheckBreak() + } + if yyb2946 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + for { + yyj2946++ + if yyhl2946 { + yyb2946 = yyj2946 > l + } else { + yyb2946 = r.CheckBreak() + } + if yyb2946 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2946-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeDaemonEndpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2948 := z.EncBinary() + _ = yym2948 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2949 := !z.EncBinary() + yy2arr2949 := z.EncBasicHandle().StructToArray + var yyq2949 [1]bool + _, _, _ = yysep2949, yyq2949, yy2arr2949 + const yyr2949 bool = false + yyq2949[0] = true + var yynn2949 int + if yyr2949 || yy2arr2949 { + r.EncodeArrayStart(1) + } else { + yynn2949 = 0 + for _, b := range yyq2949 { + if b { + yynn2949++ + } + } + r.EncodeMapStart(yynn2949) + yynn2949 = 0 + } + if yyr2949 || yy2arr2949 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2949[0] { + yy2951 := &x.KubeletEndpoint + yy2951.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2949[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletEndpoint")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2952 := &x.KubeletEndpoint + yy2952.CodecEncodeSelf(e) + } + } + if yyr2949 || yy2arr2949 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeDaemonEndpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2953 := z.DecBinary() + _ = yym2953 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2954 := r.ContainerType() + if yyct2954 == codecSelferValueTypeMap1234 { + yyl2954 := r.ReadMapStart() + if yyl2954 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2954, d) + } + } else if yyct2954 == codecSelferValueTypeArray1234 { + yyl2954 := r.ReadArrayStart() + if yyl2954 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2954, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2955Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2955Slc + var yyhl2955 bool = l >= 0 + for yyj2955 := 0; ; yyj2955++ { + if yyhl2955 { + if yyj2955 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2955Slc = r.DecodeBytes(yys2955Slc, true, true) + yys2955 := string(yys2955Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2955 { + case "kubeletEndpoint": + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv2956 := &x.KubeletEndpoint + yyv2956.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2955) + } // end switch yys2955 + } // end for yyj2955 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2957 int + var yyb2957 bool + var yyhl2957 bool = l >= 0 + yyj2957++ + if yyhl2957 { + yyb2957 = yyj2957 > l + } else { + yyb2957 = r.CheckBreak() + } + if yyb2957 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv2958 := &x.KubeletEndpoint + yyv2958.CodecDecodeSelf(d) + } + for { + yyj2957++ + if yyhl2957 { + yyb2957 = yyj2957 > l + } else { + yyb2957 = r.CheckBreak() + } + if yyb2957 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2957-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSystemInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2959 := z.EncBinary() + _ = yym2959 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2960 := !z.EncBinary() + yy2arr2960 := z.EncBasicHandle().StructToArray + var yyq2960 [10]bool + _, _, _ = yysep2960, yyq2960, yy2arr2960 + const yyr2960 bool = false + var yynn2960 int + if yyr2960 || yy2arr2960 { + r.EncodeArrayStart(10) + } else { + yynn2960 = 10 + for _, b := range yyq2960 { + if b { + yynn2960++ + } + } + r.EncodeMapStart(yynn2960) + yynn2960 = 0 + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2962 := z.EncBinary() + _ = yym2962 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("machineID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2963 := z.EncBinary() + _ = yym2963 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2965 := z.EncBinary() + _ = yym2965 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("systemUUID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2966 := z.EncBinary() + _ = yym2966 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2968 := z.EncBinary() + _ = yym2968 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("bootID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2969 := z.EncBinary() + _ = yym2969 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2971 := z.EncBinary() + _ = yym2971 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kernelVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2972 := z.EncBinary() + _ = yym2972 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2974 := z.EncBinary() + _ = yym2974 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("osImage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2975 := z.EncBinary() + _ = yym2975 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2977 := z.EncBinary() + _ = yym2977 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerRuntimeVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2978 := z.EncBinary() + _ = yym2978 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2980 := z.EncBinary() + _ = yym2980 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2981 := z.EncBinary() + _ = yym2981 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2983 := z.EncBinary() + _ = yym2983 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeProxyVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2984 := z.EncBinary() + _ = yym2984 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2986 := z.EncBinary() + _ = yym2986 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operatingSystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2987 := z.EncBinary() + _ = yym2987 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2989 := z.EncBinary() + _ = yym2989 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("architecture")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2990 := z.EncBinary() + _ = yym2990 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } + if yyr2960 || yy2arr2960 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSystemInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2991 := z.DecBinary() + _ = yym2991 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2992 := r.ContainerType() + if yyct2992 == codecSelferValueTypeMap1234 { + yyl2992 := r.ReadMapStart() + if yyl2992 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2992, d) + } + } else if yyct2992 == codecSelferValueTypeArray1234 { + yyl2992 := r.ReadArrayStart() + if yyl2992 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2992, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSystemInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2993Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2993Slc + var yyhl2993 bool = l >= 0 + for yyj2993 := 0; ; yyj2993++ { + if yyhl2993 { + if yyj2993 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2993Slc = r.DecodeBytes(yys2993Slc, true, true) + yys2993 := string(yys2993Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2993 { + case "machineID": + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + x.MachineID = string(r.DecodeString()) + } + case "systemUUID": + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + x.SystemUUID = string(r.DecodeString()) + } + case "bootID": + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + x.BootID = string(r.DecodeString()) + } + case "kernelVersion": + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + x.KernelVersion = string(r.DecodeString()) + } + case "osImage": + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + x.OSImage = string(r.DecodeString()) + } + case "containerRuntimeVersion": + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + x.ContainerRuntimeVersion = string(r.DecodeString()) + } + case "kubeletVersion": + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + x.KubeletVersion = string(r.DecodeString()) + } + case "kubeProxyVersion": + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + x.KubeProxyVersion = string(r.DecodeString()) + } + case "operatingSystem": + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + x.OperatingSystem = string(r.DecodeString()) + } + case "architecture": + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + x.Architecture = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2993) + } // end switch yys2993 + } // end for yyj2993 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSystemInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3004 int + var yyb3004 bool + var yyhl3004 bool = l >= 0 + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + x.MachineID = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + x.SystemUUID = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + x.BootID = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + x.KernelVersion = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + x.OSImage = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + x.ContainerRuntimeVersion = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + x.KubeletVersion = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + x.KubeProxyVersion = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + x.OperatingSystem = string(r.DecodeString()) + } + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + x.Architecture = string(r.DecodeString()) + } + for { + yyj3004++ + if yyhl3004 { + yyb3004 = yyj3004 > l + } else { + yyb3004 = r.CheckBreak() + } + if yyb3004 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3004-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3015 := z.EncBinary() + _ = yym3015 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3016 := !z.EncBinary() + yy2arr3016 := z.EncBasicHandle().StructToArray + var yyq3016 [10]bool + _, _, _ = yysep3016, yyq3016, yy2arr3016 + const yyr3016 bool = false + yyq3016[0] = len(x.Capacity) != 0 + yyq3016[1] = len(x.Allocatable) != 0 + yyq3016[2] = x.Phase != "" + yyq3016[3] = len(x.Conditions) != 0 + yyq3016[4] = len(x.Addresses) != 0 + yyq3016[5] = true + yyq3016[6] = true + yyq3016[7] = len(x.Images) != 0 + yyq3016[8] = len(x.VolumesInUse) != 0 + yyq3016[9] = len(x.VolumesAttached) != 0 + var yynn3016 int + if yyr3016 || yy2arr3016 { + r.EncodeArrayStart(10) + } else { + yynn3016 = 0 + for _, b := range yyq3016 { + if b { + yynn3016++ + } + } + r.EncodeMapStart(yynn3016) + yynn3016 = 0 + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[1] { + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allocatable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[2] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3016[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym3021 := z.EncBinary() + _ = yym3021 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym3022 := z.EncBinary() + _ = yym3022 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[4] { + if x.Addresses == nil { + r.EncodeNil() + } else { + yym3024 := z.EncBinary() + _ = yym3024 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym3025 := z.EncBinary() + _ = yym3025 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[5] { + yy3027 := &x.DaemonEndpoints + yy3027.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3016[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("daemonEndpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3028 := &x.DaemonEndpoints + yy3028.CodecEncodeSelf(e) + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[6] { + yy3030 := &x.NodeInfo + yy3030.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3016[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeInfo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3031 := &x.NodeInfo + yy3031.CodecEncodeSelf(e) + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[7] { + if x.Images == nil { + r.EncodeNil() + } else { + yym3033 := z.EncBinary() + _ = yym3033 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("images")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Images == nil { + r.EncodeNil() + } else { + yym3034 := z.EncBinary() + _ = yym3034 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[8] { + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym3036 := z.EncBinary() + _ = yym3036 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesInUse")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym3037 := z.EncBinary() + _ = yym3037 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3016[9] { + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym3039 := z.EncBinary() + _ = yym3039 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3016[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesAttached")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym3040 := z.EncBinary() + _ = yym3040 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } + } + if yyr3016 || yy2arr3016 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3041 := z.DecBinary() + _ = yym3041 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3042 := r.ContainerType() + if yyct3042 == codecSelferValueTypeMap1234 { + yyl3042 := r.ReadMapStart() + if yyl3042 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3042, d) + } + } else if yyct3042 == codecSelferValueTypeArray1234 { + yyl3042 := r.ReadArrayStart() + if yyl3042 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3042, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3043Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3043Slc + var yyhl3043 bool = l >= 0 + for yyj3043 := 0; ; yyj3043++ { + if yyhl3043 { + if yyj3043 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3043Slc = r.DecodeBytes(yys3043Slc, true, true) + yys3043 := string(yys3043Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3043 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv3044 := &x.Capacity + yyv3044.CodecDecodeSelf(d) + } + case "allocatable": + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv3045 := &x.Allocatable + yyv3045.CodecDecodeSelf(d) + } + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NodePhase(r.DecodeString()) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv3047 := &x.Conditions + yym3048 := z.DecBinary() + _ = yym3048 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv3047), d) + } + } + case "addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv3049 := &x.Addresses + yym3050 := z.DecBinary() + _ = yym3050 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv3049), d) + } + } + case "daemonEndpoints": + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv3051 := &x.DaemonEndpoints + yyv3051.CodecDecodeSelf(d) + } + case "nodeInfo": + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv3052 := &x.NodeInfo + yyv3052.CodecDecodeSelf(d) + } + case "images": + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv3053 := &x.Images + yym3054 := z.DecBinary() + _ = yym3054 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv3053), d) + } + } + case "volumesInUse": + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv3055 := &x.VolumesInUse + yym3056 := z.DecBinary() + _ = yym3056 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv3055), d) + } + } + case "volumesAttached": + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv3057 := &x.VolumesAttached + yym3058 := z.DecBinary() + _ = yym3058 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv3057), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3043) + } // end switch yys3043 + } // end for yyj3043 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3059 int + var yyb3059 bool + var yyhl3059 bool = l >= 0 + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv3060 := &x.Capacity + yyv3060.CodecDecodeSelf(d) + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv3061 := &x.Allocatable + yyv3061.CodecDecodeSelf(d) + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NodePhase(r.DecodeString()) + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv3063 := &x.Conditions + yym3064 := z.DecBinary() + _ = yym3064 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv3063), d) + } + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv3065 := &x.Addresses + yym3066 := z.DecBinary() + _ = yym3066 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv3065), d) + } + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv3067 := &x.DaemonEndpoints + yyv3067.CodecDecodeSelf(d) + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv3068 := &x.NodeInfo + yyv3068.CodecDecodeSelf(d) + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv3069 := &x.Images + yym3070 := z.DecBinary() + _ = yym3070 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv3069), d) + } + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv3071 := &x.VolumesInUse + yym3072 := z.DecBinary() + _ = yym3072 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv3071), d) + } + } + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv3073 := &x.VolumesAttached + yym3074 := z.DecBinary() + _ = yym3074 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv3073), d) + } + } + for { + yyj3059++ + if yyhl3059 { + yyb3059 = yyj3059 > l + } else { + yyb3059 = r.CheckBreak() + } + if yyb3059 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3059-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x UniqueVolumeName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3075 := z.EncBinary() + _ = yym3075 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *UniqueVolumeName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3076 := z.DecBinary() + _ = yym3076 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AttachedVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3077 := z.EncBinary() + _ = yym3077 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3078 := !z.EncBinary() + yy2arr3078 := z.EncBasicHandle().StructToArray + var yyq3078 [2]bool + _, _, _ = yysep3078, yyq3078, yy2arr3078 + const yyr3078 bool = false + var yynn3078 int + if yyr3078 || yy2arr3078 { + r.EncodeArrayStart(2) + } else { + yynn3078 = 2 + for _, b := range yyq3078 { + if b { + yynn3078++ + } + } + r.EncodeMapStart(yynn3078) + yynn3078 = 0 + } + if yyr3078 || yy2arr3078 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Name.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Name.CodecEncodeSelf(e) + } + if yyr3078 || yy2arr3078 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3081 := z.EncBinary() + _ = yym3081 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("devicePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3082 := z.EncBinary() + _ = yym3082 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } + if yyr3078 || yy2arr3078 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AttachedVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3083 := z.DecBinary() + _ = yym3083 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3084 := r.ContainerType() + if yyct3084 == codecSelferValueTypeMap1234 { + yyl3084 := r.ReadMapStart() + if yyl3084 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3084, d) + } + } else if yyct3084 == codecSelferValueTypeArray1234 { + yyl3084 := r.ReadArrayStart() + if yyl3084 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3084, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AttachedVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3085Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3085Slc + var yyhl3085 bool = l >= 0 + for yyj3085 := 0; ; yyj3085++ { + if yyhl3085 { + if yyj3085 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3085Slc = r.DecodeBytes(yys3085Slc, true, true) + yys3085 := string(yys3085Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3085 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = UniqueVolumeName(r.DecodeString()) + } + case "devicePath": + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + x.DevicePath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3085) + } // end switch yys3085 + } // end for yyj3085 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AttachedVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3088 int + var yyb3088 bool + var yyhl3088 bool = l >= 0 + yyj3088++ + if yyhl3088 { + yyb3088 = yyj3088 > l + } else { + yyb3088 = r.CheckBreak() + } + if yyb3088 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = UniqueVolumeName(r.DecodeString()) + } + yyj3088++ + if yyhl3088 { + yyb3088 = yyj3088 > l + } else { + yyb3088 = r.CheckBreak() + } + if yyb3088 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + x.DevicePath = string(r.DecodeString()) + } + for { + yyj3088++ + if yyhl3088 { + yyb3088 = yyj3088 > l + } else { + yyb3088 = r.CheckBreak() + } + if yyb3088 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3088-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AvoidPods) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3091 := z.EncBinary() + _ = yym3091 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3092 := !z.EncBinary() + yy2arr3092 := z.EncBasicHandle().StructToArray + var yyq3092 [1]bool + _, _, _ = yysep3092, yyq3092, yy2arr3092 + const yyr3092 bool = false + yyq3092[0] = len(x.PreferAvoidPods) != 0 + var yynn3092 int + if yyr3092 || yy2arr3092 { + r.EncodeArrayStart(1) + } else { + yynn3092 = 0 + for _, b := range yyq3092 { + if b { + yynn3092++ + } + } + r.EncodeMapStart(yynn3092) + yynn3092 = 0 + } + if yyr3092 || yy2arr3092 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3092[0] { + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym3094 := z.EncBinary() + _ = yym3094 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3092[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferAvoidPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym3095 := z.EncBinary() + _ = yym3095 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } + } + if yyr3092 || yy2arr3092 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AvoidPods) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3096 := z.DecBinary() + _ = yym3096 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3097 := r.ContainerType() + if yyct3097 == codecSelferValueTypeMap1234 { + yyl3097 := r.ReadMapStart() + if yyl3097 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3097, d) + } + } else if yyct3097 == codecSelferValueTypeArray1234 { + yyl3097 := r.ReadArrayStart() + if yyl3097 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3097, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AvoidPods) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3098Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3098Slc + var yyhl3098 bool = l >= 0 + for yyj3098 := 0; ; yyj3098++ { + if yyhl3098 { + if yyj3098 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3098Slc = r.DecodeBytes(yys3098Slc, true, true) + yys3098 := string(yys3098Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3098 { + case "preferAvoidPods": + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv3099 := &x.PreferAvoidPods + yym3100 := z.DecBinary() + _ = yym3100 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv3099), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3098) + } // end switch yys3098 + } // end for yyj3098 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AvoidPods) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3101 int + var yyb3101 bool + var yyhl3101 bool = l >= 0 + yyj3101++ + if yyhl3101 { + yyb3101 = yyj3101 > l + } else { + yyb3101 = r.CheckBreak() + } + if yyb3101 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv3102 := &x.PreferAvoidPods + yym3103 := z.DecBinary() + _ = yym3103 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv3102), d) + } + } + for { + yyj3101++ + if yyhl3101 { + yyb3101 = yyj3101 > l + } else { + yyb3101 = r.CheckBreak() + } + if yyb3101 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3101-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferAvoidPodsEntry) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3104 := z.EncBinary() + _ = yym3104 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3105 := !z.EncBinary() + yy2arr3105 := z.EncBasicHandle().StructToArray + var yyq3105 [4]bool + _, _, _ = yysep3105, yyq3105, yy2arr3105 + const yyr3105 bool = false + yyq3105[1] = true + yyq3105[2] = x.Reason != "" + yyq3105[3] = x.Message != "" + var yynn3105 int + if yyr3105 || yy2arr3105 { + r.EncodeArrayStart(4) + } else { + yynn3105 = 1 + for _, b := range yyq3105 { + if b { + yynn3105++ + } + } + r.EncodeMapStart(yynn3105) + yynn3105 = 0 + } + if yyr3105 || yy2arr3105 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3107 := &x.PodSignature + yy3107.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSignature")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3108 := &x.PodSignature + yy3108.CodecEncodeSelf(e) + } + if yyr3105 || yy2arr3105 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3105[1] { + yy3110 := &x.EvictionTime + yym3111 := z.EncBinary() + _ = yym3111 + if false { + } else if z.HasExtensions() && z.EncExt(yy3110) { + } else if yym3111 { + z.EncBinaryMarshal(yy3110) + } else if !yym3111 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3110) + } else { + z.EncFallback(yy3110) + } + } else { + r.EncodeNil() + } + } else { + if yyq3105[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evictionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3112 := &x.EvictionTime + yym3113 := z.EncBinary() + _ = yym3113 + if false { + } else if z.HasExtensions() && z.EncExt(yy3112) { + } else if yym3113 { + z.EncBinaryMarshal(yy3112) + } else if !yym3113 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3112) + } else { + z.EncFallback(yy3112) + } + } + } + if yyr3105 || yy2arr3105 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3105[2] { + yym3115 := z.EncBinary() + _ = yym3115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3105[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3116 := z.EncBinary() + _ = yym3116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3105 || yy2arr3105 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3105[3] { + yym3118 := z.EncBinary() + _ = yym3118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3105[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3119 := z.EncBinary() + _ = yym3119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3105 || yy2arr3105 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferAvoidPodsEntry) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3120 := z.DecBinary() + _ = yym3120 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3121 := r.ContainerType() + if yyct3121 == codecSelferValueTypeMap1234 { + yyl3121 := r.ReadMapStart() + if yyl3121 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3121, d) + } + } else if yyct3121 == codecSelferValueTypeArray1234 { + yyl3121 := r.ReadArrayStart() + if yyl3121 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3121, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3122Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3122Slc + var yyhl3122 bool = l >= 0 + for yyj3122 := 0; ; yyj3122++ { + if yyhl3122 { + if yyj3122 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3122Slc = r.DecodeBytes(yys3122Slc, true, true) + yys3122 := string(yys3122Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3122 { + case "podSignature": + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv3123 := &x.PodSignature + yyv3123.CodecDecodeSelf(d) + } + case "evictionTime": + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_unversioned.Time{} + } else { + yyv3124 := &x.EvictionTime + yym3125 := z.DecBinary() + _ = yym3125 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3124) { + } else if yym3125 { + z.DecBinaryUnmarshal(yyv3124) + } else if !yym3125 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3124) + } else { + z.DecFallback(yyv3124, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3122) + } // end switch yys3122 + } // end for yyj3122 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3128 int + var yyb3128 bool + var yyhl3128 bool = l >= 0 + yyj3128++ + if yyhl3128 { + yyb3128 = yyj3128 > l + } else { + yyb3128 = r.CheckBreak() + } + if yyb3128 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv3129 := &x.PodSignature + yyv3129.CodecDecodeSelf(d) + } + yyj3128++ + if yyhl3128 { + yyb3128 = yyj3128 > l + } else { + yyb3128 = r.CheckBreak() + } + if yyb3128 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_unversioned.Time{} + } else { + yyv3130 := &x.EvictionTime + yym3131 := z.DecBinary() + _ = yym3131 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3130) { + } else if yym3131 { + z.DecBinaryUnmarshal(yyv3130) + } else if !yym3131 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3130) + } else { + z.DecFallback(yyv3130, false) + } + } + yyj3128++ + if yyhl3128 { + yyb3128 = yyj3128 > l + } else { + yyb3128 = r.CheckBreak() + } + if yyb3128 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3128++ + if yyhl3128 { + yyb3128 = yyj3128 > l + } else { + yyb3128 = r.CheckBreak() + } + if yyb3128 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj3128++ + if yyhl3128 { + yyb3128 = yyj3128 > l + } else { + yyb3128 = r.CheckBreak() + } + if yyb3128 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3128-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSignature) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3134 := z.EncBinary() + _ = yym3134 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3135 := !z.EncBinary() + yy2arr3135 := z.EncBasicHandle().StructToArray + var yyq3135 [1]bool + _, _, _ = yysep3135, yyq3135, yy2arr3135 + const yyr3135 bool = false + yyq3135[0] = x.PodController != nil + var yynn3135 int + if yyr3135 || yy2arr3135 { + r.EncodeArrayStart(1) + } else { + yynn3135 = 0 + for _, b := range yyq3135 { + if b { + yynn3135++ + } + } + r.EncodeMapStart(yynn3135) + yynn3135 = 0 + } + if yyr3135 || yy2arr3135 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3135[0] { + if x.PodController == nil { + r.EncodeNil() + } else { + x.PodController.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3135[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podController")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodController == nil { + r.EncodeNil() + } else { + x.PodController.CodecEncodeSelf(e) + } + } + } + if yyr3135 || yy2arr3135 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSignature) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3137 := z.DecBinary() + _ = yym3137 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3138 := r.ContainerType() + if yyct3138 == codecSelferValueTypeMap1234 { + yyl3138 := r.ReadMapStart() + if yyl3138 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3138, d) + } + } else if yyct3138 == codecSelferValueTypeArray1234 { + yyl3138 := r.ReadArrayStart() + if yyl3138 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3138, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSignature) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3139Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3139Slc + var yyhl3139 bool = l >= 0 + for yyj3139 := 0; ; yyj3139++ { + if yyhl3139 { + if yyj3139 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3139Slc = r.DecodeBytes(yys3139Slc, true, true) + yys3139 := string(yys3139Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3139 { + case "podController": + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(OwnerReference) + } + x.PodController.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3139) + } // end switch yys3139 + } // end for yyj3139 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSignature) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3141 int + var yyb3141 bool + var yyhl3141 bool = l >= 0 + yyj3141++ + if yyhl3141 { + yyb3141 = yyj3141 > l + } else { + yyb3141 = r.CheckBreak() + } + if yyb3141 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(OwnerReference) + } + x.PodController.CodecDecodeSelf(d) + } + for { + yyj3141++ + if yyhl3141 { + yyb3141 = yyj3141 > l + } else { + yyb3141 = r.CheckBreak() + } + if yyb3141 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3141-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerImage) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3143 := z.EncBinary() + _ = yym3143 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3144 := !z.EncBinary() + yy2arr3144 := z.EncBasicHandle().StructToArray + var yyq3144 [2]bool + _, _, _ = yysep3144, yyq3144, yy2arr3144 + const yyr3144 bool = false + yyq3144[1] = x.SizeBytes != 0 + var yynn3144 int + if yyr3144 || yy2arr3144 { + r.EncodeArrayStart(2) + } else { + yynn3144 = 1 + for _, b := range yyq3144 { + if b { + yynn3144++ + } + } + r.EncodeMapStart(yynn3144) + yynn3144 = 0 + } + if yyr3144 || yy2arr3144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym3146 := z.EncBinary() + _ = yym3146 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("names")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym3147 := z.EncBinary() + _ = yym3147 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } + if yyr3144 || yy2arr3144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3144[1] { + yym3149 := z.EncBinary() + _ = yym3149 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq3144[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sizeBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3150 := z.EncBinary() + _ = yym3150 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } + } + if yyr3144 || yy2arr3144 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerImage) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3151 := z.DecBinary() + _ = yym3151 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3152 := r.ContainerType() + if yyct3152 == codecSelferValueTypeMap1234 { + yyl3152 := r.ReadMapStart() + if yyl3152 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3152, d) + } + } else if yyct3152 == codecSelferValueTypeArray1234 { + yyl3152 := r.ReadArrayStart() + if yyl3152 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3152, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerImage) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3153Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3153Slc + var yyhl3153 bool = l >= 0 + for yyj3153 := 0; ; yyj3153++ { + if yyhl3153 { + if yyj3153 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3153Slc = r.DecodeBytes(yys3153Slc, true, true) + yys3153 := string(yys3153Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3153 { + case "names": + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv3154 := &x.Names + yym3155 := z.DecBinary() + _ = yym3155 + if false { + } else { + z.F.DecSliceStringX(yyv3154, false, d) + } + } + case "sizeBytes": + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + x.SizeBytes = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys3153) + } // end switch yys3153 + } // end for yyj3153 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerImage) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3157 int + var yyb3157 bool + var yyhl3157 bool = l >= 0 + yyj3157++ + if yyhl3157 { + yyb3157 = yyj3157 > l + } else { + yyb3157 = r.CheckBreak() + } + if yyb3157 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv3158 := &x.Names + yym3159 := z.DecBinary() + _ = yym3159 + if false { + } else { + z.F.DecSliceStringX(yyv3158, false, d) + } + } + yyj3157++ + if yyhl3157 { + yyb3157 = yyj3157 > l + } else { + yyb3157 = r.CheckBreak() + } + if yyb3157 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + x.SizeBytes = int64(r.DecodeInt(64)) + } + for { + yyj3157++ + if yyhl3157 { + yyb3157 = yyj3157 > l + } else { + yyb3157 = r.CheckBreak() + } + if yyb3157 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3157-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3161 := z.EncBinary() + _ = yym3161 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3162 := z.DecBinary() + _ = yym3162 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x NodeConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3163 := z.EncBinary() + _ = yym3163 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3164 := z.DecBinary() + _ = yym3164 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3165 := z.EncBinary() + _ = yym3165 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3166 := !z.EncBinary() + yy2arr3166 := z.EncBasicHandle().StructToArray + var yyq3166 [6]bool + _, _, _ = yysep3166, yyq3166, yy2arr3166 + const yyr3166 bool = false + yyq3166[2] = true + yyq3166[3] = true + yyq3166[4] = x.Reason != "" + yyq3166[5] = x.Message != "" + var yynn3166 int + if yyr3166 || yy2arr3166 { + r.EncodeArrayStart(6) + } else { + yynn3166 = 2 + for _, b := range yyq3166 { + if b { + yynn3166++ + } + } + r.EncodeMapStart(yynn3166) + yynn3166 = 0 + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3166[2] { + yy3170 := &x.LastHeartbeatTime + yym3171 := z.EncBinary() + _ = yym3171 + if false { + } else if z.HasExtensions() && z.EncExt(yy3170) { + } else if yym3171 { + z.EncBinaryMarshal(yy3170) + } else if !yym3171 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3170) + } else { + z.EncFallback(yy3170) + } + } else { + r.EncodeNil() + } + } else { + if yyq3166[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastHeartbeatTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3172 := &x.LastHeartbeatTime + yym3173 := z.EncBinary() + _ = yym3173 + if false { + } else if z.HasExtensions() && z.EncExt(yy3172) { + } else if yym3173 { + z.EncBinaryMarshal(yy3172) + } else if !yym3173 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3172) + } else { + z.EncFallback(yy3172) + } + } + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3166[3] { + yy3175 := &x.LastTransitionTime + yym3176 := z.EncBinary() + _ = yym3176 + if false { + } else if z.HasExtensions() && z.EncExt(yy3175) { + } else if yym3176 { + z.EncBinaryMarshal(yy3175) + } else if !yym3176 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3175) + } else { + z.EncFallback(yy3175) + } + } else { + r.EncodeNil() + } + } else { + if yyq3166[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3177 := &x.LastTransitionTime + yym3178 := z.EncBinary() + _ = yym3178 + if false { + } else if z.HasExtensions() && z.EncExt(yy3177) { + } else if yym3178 { + z.EncBinaryMarshal(yy3177) + } else if !yym3178 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3177) + } else { + z.EncFallback(yy3177) + } + } + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3166[4] { + yym3180 := z.EncBinary() + _ = yym3180 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3166[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3181 := z.EncBinary() + _ = yym3181 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3166[5] { + yym3183 := z.EncBinary() + _ = yym3183 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3166[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3184 := z.EncBinary() + _ = yym3184 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3166 || yy2arr3166 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3185 := z.DecBinary() + _ = yym3185 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3186 := r.ContainerType() + if yyct3186 == codecSelferValueTypeMap1234 { + yyl3186 := r.ReadMapStart() + if yyl3186 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3186, d) + } + } else if yyct3186 == codecSelferValueTypeArray1234 { + yyl3186 := r.ReadArrayStart() + if yyl3186 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3186, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3187Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3187Slc + var yyhl3187 bool = l >= 0 + for yyj3187 := 0; ; yyj3187++ { + if yyhl3187 { + if yyj3187 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3187Slc = r.DecodeBytes(yys3187Slc, true, true) + yys3187 := string(yys3187Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3187 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "lastHeartbeatTime": + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_unversioned.Time{} + } else { + yyv3190 := &x.LastHeartbeatTime + yym3191 := z.DecBinary() + _ = yym3191 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3190) { + } else if yym3191 { + z.DecBinaryUnmarshal(yyv3190) + } else if !yym3191 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3190) + } else { + z.DecFallback(yyv3190, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv3192 := &x.LastTransitionTime + yym3193 := z.DecBinary() + _ = yym3193 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3192) { + } else if yym3193 { + z.DecBinaryUnmarshal(yyv3192) + } else if !yym3193 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3192) + } else { + z.DecFallback(yyv3192, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3187) + } // end switch yys3187 + } // end for yyj3187 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3196 int + var yyb3196 bool + var yyhl3196 bool = l >= 0 + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeConditionType(r.DecodeString()) + } + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_unversioned.Time{} + } else { + yyv3199 := &x.LastHeartbeatTime + yym3200 := z.DecBinary() + _ = yym3200 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3199) { + } else if yym3200 { + z.DecBinaryUnmarshal(yyv3199) + } else if !yym3200 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3199) + } else { + z.DecFallback(yyv3199, false) + } + } + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv3201 := &x.LastTransitionTime + yym3202 := z.DecBinary() + _ = yym3202 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3201) { + } else if yym3202 { + z.DecBinaryUnmarshal(yyv3201) + } else if !yym3202 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3201) + } else { + z.DecFallback(yyv3201, false) + } + } + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj3196++ + if yyhl3196 { + yyb3196 = yyj3196 > l + } else { + yyb3196 = r.CheckBreak() + } + if yyb3196 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3196-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeAddressType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3205 := z.EncBinary() + _ = yym3205 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeAddressType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3206 := z.DecBinary() + _ = yym3206 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3207 := z.EncBinary() + _ = yym3207 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3208 := !z.EncBinary() + yy2arr3208 := z.EncBasicHandle().StructToArray + var yyq3208 [2]bool + _, _, _ = yysep3208, yyq3208, yy2arr3208 + const yyr3208 bool = false + var yynn3208 int + if yyr3208 || yy2arr3208 { + r.EncodeArrayStart(2) + } else { + yynn3208 = 2 + for _, b := range yyq3208 { + if b { + yynn3208++ + } + } + r.EncodeMapStart(yynn3208) + yynn3208 = 0 + } + if yyr3208 || yy2arr3208 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr3208 || yy2arr3208 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3211 := z.EncBinary() + _ = yym3211 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("address")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3212 := z.EncBinary() + _ = yym3212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } + if yyr3208 || yy2arr3208 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3213 := z.DecBinary() + _ = yym3213 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3214 := r.ContainerType() + if yyct3214 == codecSelferValueTypeMap1234 { + yyl3214 := r.ReadMapStart() + if yyl3214 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3214, d) + } + } else if yyct3214 == codecSelferValueTypeArray1234 { + yyl3214 := r.ReadArrayStart() + if yyl3214 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3214, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3215Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3215Slc + var yyhl3215 bool = l >= 0 + for yyj3215 := 0; ; yyj3215++ { + if yyhl3215 { + if yyj3215 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3215Slc = r.DecodeBytes(yys3215Slc, true, true) + yys3215 := string(yys3215Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3215 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeAddressType(r.DecodeString()) + } + case "address": + if r.TryDecodeAsNil() { + x.Address = "" + } else { + x.Address = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3215) + } // end switch yys3215 + } // end for yyj3215 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3218 int + var yyb3218 bool + var yyhl3218 bool = l >= 0 + yyj3218++ + if yyhl3218 { + yyb3218 = yyj3218 > l + } else { + yyb3218 = r.CheckBreak() + } + if yyb3218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeAddressType(r.DecodeString()) + } + yyj3218++ + if yyhl3218 { + yyb3218 = yyj3218 > l + } else { + yyb3218 = r.CheckBreak() + } + if yyb3218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Address = "" + } else { + x.Address = string(r.DecodeString()) + } + for { + yyj3218++ + if yyhl3218 { + yyb3218 = yyj3218 > l + } else { + yyb3218 = r.CheckBreak() + } + if yyb3218 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3218-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeResources) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3221 := z.EncBinary() + _ = yym3221 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3222 := !z.EncBinary() + yy2arr3222 := z.EncBasicHandle().StructToArray + var yyq3222 [1]bool + _, _, _ = yysep3222, yyq3222, yy2arr3222 + const yyr3222 bool = false + yyq3222[0] = len(x.Capacity) != 0 + var yynn3222 int + if yyr3222 || yy2arr3222 { + r.EncodeArrayStart(1) + } else { + yynn3222 = 0 + for _, b := range yyq3222 { + if b { + yynn3222++ + } + } + r.EncodeMapStart(yynn3222) + yynn3222 = 0 + } + if yyr3222 || yy2arr3222 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3222[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3222[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr3222 || yy2arr3222 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeResources) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3224 := z.DecBinary() + _ = yym3224 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3225 := r.ContainerType() + if yyct3225 == codecSelferValueTypeMap1234 { + yyl3225 := r.ReadMapStart() + if yyl3225 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3225, d) + } + } else if yyct3225 == codecSelferValueTypeArray1234 { + yyl3225 := r.ReadArrayStart() + if yyl3225 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3225, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeResources) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3226Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3226Slc + var yyhl3226 bool = l >= 0 + for yyj3226 := 0; ; yyj3226++ { + if yyhl3226 { + if yyj3226 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3226Slc = r.DecodeBytes(yys3226Slc, true, true) + yys3226 := string(yys3226Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3226 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv3227 := &x.Capacity + yyv3227.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3226) + } // end switch yys3226 + } // end for yyj3226 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeResources) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3228 int + var yyb3228 bool + var yyhl3228 bool = l >= 0 + yyj3228++ + if yyhl3228 { + yyb3228 = yyj3228 > l + } else { + yyb3228 = r.CheckBreak() + } + if yyb3228 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv3229 := &x.Capacity + yyv3229.CodecDecodeSelf(d) + } + for { + yyj3228++ + if yyhl3228 { + yyb3228 = yyj3228 > l + } else { + yyb3228 = r.CheckBreak() + } + if yyb3228 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3228-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3230 := z.EncBinary() + _ = yym3230 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3231 := z.DecBinary() + _ = yym3231 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3232 := z.EncBinary() + _ = yym3232 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encResourceList((ResourceList)(x), e) + } + } +} + +func (x *ResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3233 := z.DecBinary() + _ = yym3233 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decResourceList((*ResourceList)(x), d) + } +} + +func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3234 := z.EncBinary() + _ = yym3234 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3235 := !z.EncBinary() + yy2arr3235 := z.EncBasicHandle().StructToArray + var yyq3235 [5]bool + _, _, _ = yysep3235, yyq3235, yy2arr3235 + const yyr3235 bool = false + yyq3235[0] = x.Kind != "" + yyq3235[1] = x.APIVersion != "" + yyq3235[2] = true + yyq3235[3] = true + yyq3235[4] = true + var yynn3235 int + if yyr3235 || yy2arr3235 { + r.EncodeArrayStart(5) + } else { + yynn3235 = 0 + for _, b := range yyq3235 { + if b { + yynn3235++ + } + } + r.EncodeMapStart(yynn3235) + yynn3235 = 0 + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3235[0] { + yym3237 := z.EncBinary() + _ = yym3237 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3235[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3238 := z.EncBinary() + _ = yym3238 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3235[1] { + yym3240 := z.EncBinary() + _ = yym3240 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3235[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3241 := z.EncBinary() + _ = yym3241 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3235[2] { + yy3243 := &x.ObjectMeta + yy3243.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3235[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3244 := &x.ObjectMeta + yy3244.CodecEncodeSelf(e) + } + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3235[3] { + yy3246 := &x.Spec + yy3246.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3235[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3247 := &x.Spec + yy3247.CodecEncodeSelf(e) + } + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3235[4] { + yy3249 := &x.Status + yy3249.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3235[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3250 := &x.Status + yy3250.CodecEncodeSelf(e) + } + } + if yyr3235 || yy2arr3235 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Node) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3251 := z.DecBinary() + _ = yym3251 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3252 := r.ContainerType() + if yyct3252 == codecSelferValueTypeMap1234 { + yyl3252 := r.ReadMapStart() + if yyl3252 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3252, d) + } + } else if yyct3252 == codecSelferValueTypeArray1234 { + yyl3252 := r.ReadArrayStart() + if yyl3252 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3252, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Node) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3253Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3253Slc + var yyhl3253 bool = l >= 0 + for yyj3253 := 0; ; yyj3253++ { + if yyhl3253 { + if yyj3253 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3253Slc = r.DecodeBytes(yys3253Slc, true, true) + yys3253 := string(yys3253Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3253 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3256 := &x.ObjectMeta + yyv3256.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv3257 := &x.Spec + yyv3257.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv3258 := &x.Status + yyv3258.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3253) + } // end switch yys3253 + } // end for yyj3253 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3259 int + var yyb3259 bool + var yyhl3259 bool = l >= 0 + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3262 := &x.ObjectMeta + yyv3262.CodecDecodeSelf(d) + } + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv3263 := &x.Spec + yyv3263.CodecDecodeSelf(d) + } + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv3264 := &x.Status + yyv3264.CodecDecodeSelf(d) + } + for { + yyj3259++ + if yyhl3259 { + yyb3259 = yyj3259 > l + } else { + yyb3259 = r.CheckBreak() + } + if yyb3259 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3259-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3265 := z.EncBinary() + _ = yym3265 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3266 := !z.EncBinary() + yy2arr3266 := z.EncBasicHandle().StructToArray + var yyq3266 [4]bool + _, _, _ = yysep3266, yyq3266, yy2arr3266 + const yyr3266 bool = false + yyq3266[0] = x.Kind != "" + yyq3266[1] = x.APIVersion != "" + yyq3266[2] = true + var yynn3266 int + if yyr3266 || yy2arr3266 { + r.EncodeArrayStart(4) + } else { + yynn3266 = 1 + for _, b := range yyq3266 { + if b { + yynn3266++ + } + } + r.EncodeMapStart(yynn3266) + yynn3266 = 0 + } + if yyr3266 || yy2arr3266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3266[0] { + yym3268 := z.EncBinary() + _ = yym3268 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3266[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3269 := z.EncBinary() + _ = yym3269 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3266 || yy2arr3266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3266[1] { + yym3271 := z.EncBinary() + _ = yym3271 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3266[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3272 := z.EncBinary() + _ = yym3272 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3266 || yy2arr3266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3266[2] { + yy3274 := &x.ListMeta + yym3275 := z.EncBinary() + _ = yym3275 + if false { + } else if z.HasExtensions() && z.EncExt(yy3274) { + } else { + z.EncFallback(yy3274) + } + } else { + r.EncodeNil() + } + } else { + if yyq3266[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3276 := &x.ListMeta + yym3277 := z.EncBinary() + _ = yym3277 + if false { + } else if z.HasExtensions() && z.EncExt(yy3276) { + } else { + z.EncFallback(yy3276) + } + } + } + if yyr3266 || yy2arr3266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3279 := z.EncBinary() + _ = yym3279 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3280 := z.EncBinary() + _ = yym3280 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } + if yyr3266 || yy2arr3266 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3281 := z.DecBinary() + _ = yym3281 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3282 := r.ContainerType() + if yyct3282 == codecSelferValueTypeMap1234 { + yyl3282 := r.ReadMapStart() + if yyl3282 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3282, d) + } + } else if yyct3282 == codecSelferValueTypeArray1234 { + yyl3282 := r.ReadArrayStart() + if yyl3282 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3282, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3283Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3283Slc + var yyhl3283 bool = l >= 0 + for yyj3283 := 0; ; yyj3283++ { + if yyhl3283 { + if yyj3283 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3283Slc = r.DecodeBytes(yys3283Slc, true, true) + yys3283 := string(yys3283Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3283 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3286 := &x.ListMeta + yym3287 := z.DecBinary() + _ = yym3287 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3286) { + } else { + z.DecFallback(yyv3286, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3288 := &x.Items + yym3289 := z.DecBinary() + _ = yym3289 + if false { + } else { + h.decSliceNode((*[]Node)(yyv3288), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3283) + } // end switch yys3283 + } // end for yyj3283 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3290 int + var yyb3290 bool + var yyhl3290 bool = l >= 0 + yyj3290++ + if yyhl3290 { + yyb3290 = yyj3290 > l + } else { + yyb3290 = r.CheckBreak() + } + if yyb3290 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3290++ + if yyhl3290 { + yyb3290 = yyj3290 > l + } else { + yyb3290 = r.CheckBreak() + } + if yyb3290 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3290++ + if yyhl3290 { + yyb3290 = yyj3290 > l + } else { + yyb3290 = r.CheckBreak() + } + if yyb3290 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3293 := &x.ListMeta + yym3294 := z.DecBinary() + _ = yym3294 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3293) { + } else { + z.DecFallback(yyv3293, false) + } + } + yyj3290++ + if yyhl3290 { + yyb3290 = yyj3290 > l + } else { + yyb3290 = r.CheckBreak() + } + if yyb3290 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3295 := &x.Items + yym3296 := z.DecBinary() + _ = yym3296 + if false { + } else { + h.decSliceNode((*[]Node)(yyv3295), d) + } + } + for { + yyj3290++ + if yyhl3290 { + yyb3290 = yyj3290 > l + } else { + yyb3290 = r.CheckBreak() + } + if yyb3290 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3290-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3297 := z.EncBinary() + _ = yym3297 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3298 := !z.EncBinary() + yy2arr3298 := z.EncBasicHandle().StructToArray + var yyq3298 [1]bool + _, _, _ = yysep3298, yyq3298, yy2arr3298 + const yyr3298 bool = false + var yynn3298 int + if yyr3298 || yy2arr3298 { + r.EncodeArrayStart(1) + } else { + yynn3298 = 1 + for _, b := range yyq3298 { + if b { + yynn3298++ + } + } + r.EncodeMapStart(yynn3298) + yynn3298 = 0 + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym3300 := z.EncBinary() + _ = yym3300 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym3301 := z.EncBinary() + _ = yym3301 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3302 := z.DecBinary() + _ = yym3302 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3303 := r.ContainerType() + if yyct3303 == codecSelferValueTypeMap1234 { + yyl3303 := r.ReadMapStart() + if yyl3303 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3303, d) + } + } else if yyct3303 == codecSelferValueTypeArray1234 { + yyl3303 := r.ReadArrayStart() + if yyl3303 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3303, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3304Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3304Slc + var yyhl3304 bool = l >= 0 + for yyj3304 := 0; ; yyj3304++ { + if yyhl3304 { + if yyj3304 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3304Slc = r.DecodeBytes(yys3304Slc, true, true) + yys3304 := string(yys3304Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3304 { + case "Finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv3305 := &x.Finalizers + yym3306 := z.DecBinary() + _ = yym3306 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv3305), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3304) + } // end switch yys3304 + } // end for yyj3304 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3307 int + var yyb3307 bool + var yyhl3307 bool = l >= 0 + yyj3307++ + if yyhl3307 { + yyb3307 = yyj3307 > l + } else { + yyb3307 = r.CheckBreak() + } + if yyb3307 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv3308 := &x.Finalizers + yym3309 := z.DecBinary() + _ = yym3309 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv3308), d) + } + } + for { + yyj3307++ + if yyhl3307 { + yyb3307 = yyj3307 > l + } else { + yyb3307 = r.CheckBreak() + } + if yyb3307 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3307-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FinalizerName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3310 := z.EncBinary() + _ = yym3310 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FinalizerName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3311 := z.DecBinary() + _ = yym3311 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NamespaceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3312 := z.EncBinary() + _ = yym3312 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3313 := !z.EncBinary() + yy2arr3313 := z.EncBasicHandle().StructToArray + var yyq3313 [1]bool + _, _, _ = yysep3313, yyq3313, yy2arr3313 + const yyr3313 bool = false + yyq3313[0] = x.Phase != "" + var yynn3313 int + if yyr3313 || yy2arr3313 { + r.EncodeArrayStart(1) + } else { + yynn3313 = 0 + for _, b := range yyq3313 { + if b { + yynn3313++ + } + } + r.EncodeMapStart(yynn3313) + yynn3313 = 0 + } + if yyr3313 || yy2arr3313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3313[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3313[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr3313 || yy2arr3313 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3315 := z.DecBinary() + _ = yym3315 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3316 := r.ContainerType() + if yyct3316 == codecSelferValueTypeMap1234 { + yyl3316 := r.ReadMapStart() + if yyl3316 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3316, d) + } + } else if yyct3316 == codecSelferValueTypeArray1234 { + yyl3316 := r.ReadArrayStart() + if yyl3316 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3316, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3317Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3317Slc + var yyhl3317 bool = l >= 0 + for yyj3317 := 0; ; yyj3317++ { + if yyhl3317 { + if yyj3317 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3317Slc = r.DecodeBytes(yys3317Slc, true, true) + yys3317 := string(yys3317Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3317 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NamespacePhase(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3317) + } // end switch yys3317 + } // end for yyj3317 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3319 int + var yyb3319 bool + var yyhl3319 bool = l >= 0 + yyj3319++ + if yyhl3319 { + yyb3319 = yyj3319 > l + } else { + yyb3319 = r.CheckBreak() + } + if yyb3319 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NamespacePhase(r.DecodeString()) + } + for { + yyj3319++ + if yyhl3319 { + yyb3319 = yyj3319 > l + } else { + yyb3319 = r.CheckBreak() + } + if yyb3319 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3319-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NamespacePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3321 := z.EncBinary() + _ = yym3321 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NamespacePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3322 := z.DecBinary() + _ = yym3322 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Namespace) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3323 := z.EncBinary() + _ = yym3323 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3324 := !z.EncBinary() + yy2arr3324 := z.EncBasicHandle().StructToArray + var yyq3324 [5]bool + _, _, _ = yysep3324, yyq3324, yy2arr3324 + const yyr3324 bool = false + yyq3324[0] = x.Kind != "" + yyq3324[1] = x.APIVersion != "" + yyq3324[2] = true + yyq3324[3] = true + yyq3324[4] = true + var yynn3324 int + if yyr3324 || yy2arr3324 { + r.EncodeArrayStart(5) + } else { + yynn3324 = 0 + for _, b := range yyq3324 { + if b { + yynn3324++ + } + } + r.EncodeMapStart(yynn3324) + yynn3324 = 0 + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3324[0] { + yym3326 := z.EncBinary() + _ = yym3326 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3324[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3327 := z.EncBinary() + _ = yym3327 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3324[1] { + yym3329 := z.EncBinary() + _ = yym3329 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3324[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3330 := z.EncBinary() + _ = yym3330 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3324[2] { + yy3332 := &x.ObjectMeta + yy3332.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3324[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3333 := &x.ObjectMeta + yy3333.CodecEncodeSelf(e) + } + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3324[3] { + yy3335 := &x.Spec + yy3335.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3324[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3336 := &x.Spec + yy3336.CodecEncodeSelf(e) + } + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3324[4] { + yy3338 := &x.Status + yy3338.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3324[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3339 := &x.Status + yy3339.CodecEncodeSelf(e) + } + } + if yyr3324 || yy2arr3324 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Namespace) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3340 := z.DecBinary() + _ = yym3340 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3341 := r.ContainerType() + if yyct3341 == codecSelferValueTypeMap1234 { + yyl3341 := r.ReadMapStart() + if yyl3341 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3341, d) + } + } else if yyct3341 == codecSelferValueTypeArray1234 { + yyl3341 := r.ReadArrayStart() + if yyl3341 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3341, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Namespace) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3342Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3342Slc + var yyhl3342 bool = l >= 0 + for yyj3342 := 0; ; yyj3342++ { + if yyhl3342 { + if yyj3342 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3342Slc = r.DecodeBytes(yys3342Slc, true, true) + yys3342 := string(yys3342Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3342 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3345 := &x.ObjectMeta + yyv3345.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv3346 := &x.Spec + yyv3346.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv3347 := &x.Status + yyv3347.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3342) + } // end switch yys3342 + } // end for yyj3342 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Namespace) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3348 int + var yyb3348 bool + var yyhl3348 bool = l >= 0 + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3351 := &x.ObjectMeta + yyv3351.CodecDecodeSelf(d) + } + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv3352 := &x.Spec + yyv3352.CodecDecodeSelf(d) + } + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv3353 := &x.Status + yyv3353.CodecDecodeSelf(d) + } + for { + yyj3348++ + if yyhl3348 { + yyb3348 = yyj3348 > l + } else { + yyb3348 = r.CheckBreak() + } + if yyb3348 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3348-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3354 := z.EncBinary() + _ = yym3354 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3355 := !z.EncBinary() + yy2arr3355 := z.EncBasicHandle().StructToArray + var yyq3355 [4]bool + _, _, _ = yysep3355, yyq3355, yy2arr3355 + const yyr3355 bool = false + yyq3355[0] = x.Kind != "" + yyq3355[1] = x.APIVersion != "" + yyq3355[2] = true + var yynn3355 int + if yyr3355 || yy2arr3355 { + r.EncodeArrayStart(4) + } else { + yynn3355 = 1 + for _, b := range yyq3355 { + if b { + yynn3355++ + } + } + r.EncodeMapStart(yynn3355) + yynn3355 = 0 + } + if yyr3355 || yy2arr3355 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3355[0] { + yym3357 := z.EncBinary() + _ = yym3357 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3355[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3358 := z.EncBinary() + _ = yym3358 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3355 || yy2arr3355 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3355[1] { + yym3360 := z.EncBinary() + _ = yym3360 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3355[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3361 := z.EncBinary() + _ = yym3361 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3355 || yy2arr3355 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3355[2] { + yy3363 := &x.ListMeta + yym3364 := z.EncBinary() + _ = yym3364 + if false { + } else if z.HasExtensions() && z.EncExt(yy3363) { + } else { + z.EncFallback(yy3363) + } + } else { + r.EncodeNil() + } + } else { + if yyq3355[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3365 := &x.ListMeta + yym3366 := z.EncBinary() + _ = yym3366 + if false { + } else if z.HasExtensions() && z.EncExt(yy3365) { + } else { + z.EncFallback(yy3365) + } + } + } + if yyr3355 || yy2arr3355 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3368 := z.EncBinary() + _ = yym3368 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3369 := z.EncBinary() + _ = yym3369 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } + if yyr3355 || yy2arr3355 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3370 := z.DecBinary() + _ = yym3370 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3371 := r.ContainerType() + if yyct3371 == codecSelferValueTypeMap1234 { + yyl3371 := r.ReadMapStart() + if yyl3371 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3371, d) + } + } else if yyct3371 == codecSelferValueTypeArray1234 { + yyl3371 := r.ReadArrayStart() + if yyl3371 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3371, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3372Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3372Slc + var yyhl3372 bool = l >= 0 + for yyj3372 := 0; ; yyj3372++ { + if yyhl3372 { + if yyj3372 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3372Slc = r.DecodeBytes(yys3372Slc, true, true) + yys3372 := string(yys3372Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3372 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3375 := &x.ListMeta + yym3376 := z.DecBinary() + _ = yym3376 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3375) { + } else { + z.DecFallback(yyv3375, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3377 := &x.Items + yym3378 := z.DecBinary() + _ = yym3378 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv3377), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3372) + } // end switch yys3372 + } // end for yyj3372 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3379 int + var yyb3379 bool + var yyhl3379 bool = l >= 0 + yyj3379++ + if yyhl3379 { + yyb3379 = yyj3379 > l + } else { + yyb3379 = r.CheckBreak() + } + if yyb3379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3379++ + if yyhl3379 { + yyb3379 = yyj3379 > l + } else { + yyb3379 = r.CheckBreak() + } + if yyb3379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3379++ + if yyhl3379 { + yyb3379 = yyj3379 > l + } else { + yyb3379 = r.CheckBreak() + } + if yyb3379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3382 := &x.ListMeta + yym3383 := z.DecBinary() + _ = yym3383 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3382) { + } else { + z.DecFallback(yyv3382, false) + } + } + yyj3379++ + if yyhl3379 { + yyb3379 = yyj3379 > l + } else { + yyb3379 = r.CheckBreak() + } + if yyb3379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3384 := &x.Items + yym3385 := z.DecBinary() + _ = yym3385 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv3384), d) + } + } + for { + yyj3379++ + if yyhl3379 { + yyb3379 = yyj3379 > l + } else { + yyb3379 = r.CheckBreak() + } + if yyb3379 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3379-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Binding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3386 := z.EncBinary() + _ = yym3386 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3387 := !z.EncBinary() + yy2arr3387 := z.EncBasicHandle().StructToArray + var yyq3387 [4]bool + _, _, _ = yysep3387, yyq3387, yy2arr3387 + const yyr3387 bool = false + yyq3387[0] = x.Kind != "" + yyq3387[1] = x.APIVersion != "" + yyq3387[2] = true + var yynn3387 int + if yyr3387 || yy2arr3387 { + r.EncodeArrayStart(4) + } else { + yynn3387 = 1 + for _, b := range yyq3387 { + if b { + yynn3387++ + } + } + r.EncodeMapStart(yynn3387) + yynn3387 = 0 + } + if yyr3387 || yy2arr3387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3387[0] { + yym3389 := z.EncBinary() + _ = yym3389 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3387[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3390 := z.EncBinary() + _ = yym3390 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3387 || yy2arr3387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3387[1] { + yym3392 := z.EncBinary() + _ = yym3392 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3387[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3393 := z.EncBinary() + _ = yym3393 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3387 || yy2arr3387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3387[2] { + yy3395 := &x.ObjectMeta + yy3395.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3387[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3396 := &x.ObjectMeta + yy3396.CodecEncodeSelf(e) + } + } + if yyr3387 || yy2arr3387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3398 := &x.Target + yy3398.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3399 := &x.Target + yy3399.CodecEncodeSelf(e) + } + if yyr3387 || yy2arr3387 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Binding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3400 := z.DecBinary() + _ = yym3400 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3401 := r.ContainerType() + if yyct3401 == codecSelferValueTypeMap1234 { + yyl3401 := r.ReadMapStart() + if yyl3401 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3401, d) + } + } else if yyct3401 == codecSelferValueTypeArray1234 { + yyl3401 := r.ReadArrayStart() + if yyl3401 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3401, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Binding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3402Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3402Slc + var yyhl3402 bool = l >= 0 + for yyj3402 := 0; ; yyj3402++ { + if yyhl3402 { + if yyj3402 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3402Slc = r.DecodeBytes(yys3402Slc, true, true) + yys3402 := string(yys3402Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3402 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3405 := &x.ObjectMeta + yyv3405.CodecDecodeSelf(d) + } + case "target": + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv3406 := &x.Target + yyv3406.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3402) + } // end switch yys3402 + } // end for yyj3402 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Binding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3407 int + var yyb3407 bool + var yyhl3407 bool = l >= 0 + yyj3407++ + if yyhl3407 { + yyb3407 = yyj3407 > l + } else { + yyb3407 = r.CheckBreak() + } + if yyb3407 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3407++ + if yyhl3407 { + yyb3407 = yyj3407 > l + } else { + yyb3407 = r.CheckBreak() + } + if yyb3407 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3407++ + if yyhl3407 { + yyb3407 = yyj3407 > l + } else { + yyb3407 = r.CheckBreak() + } + if yyb3407 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3410 := &x.ObjectMeta + yyv3410.CodecDecodeSelf(d) + } + yyj3407++ + if yyhl3407 { + yyb3407 = yyj3407 > l + } else { + yyb3407 = r.CheckBreak() + } + if yyb3407 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv3411 := &x.Target + yyv3411.CodecDecodeSelf(d) + } + for { + yyj3407++ + if yyhl3407 { + yyb3407 = yyj3407 > l + } else { + yyb3407 = r.CheckBreak() + } + if yyb3407 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3407-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Preconditions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3412 := z.EncBinary() + _ = yym3412 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3413 := !z.EncBinary() + yy2arr3413 := z.EncBasicHandle().StructToArray + var yyq3413 [1]bool + _, _, _ = yysep3413, yyq3413, yy2arr3413 + const yyr3413 bool = false + yyq3413[0] = x.UID != nil + var yynn3413 int + if yyr3413 || yy2arr3413 { + r.EncodeArrayStart(1) + } else { + yynn3413 = 0 + for _, b := range yyq3413 { + if b { + yynn3413++ + } + } + r.EncodeMapStart(yynn3413) + yynn3413 = 0 + } + if yyr3413 || yy2arr3413 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3413[0] { + if x.UID == nil { + r.EncodeNil() + } else { + yy3415 := *x.UID + yym3416 := z.EncBinary() + _ = yym3416 + if false { + } else if z.HasExtensions() && z.EncExt(yy3415) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy3415)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3413[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UID == nil { + r.EncodeNil() + } else { + yy3417 := *x.UID + yym3418 := z.EncBinary() + _ = yym3418 + if false { + } else if z.HasExtensions() && z.EncExt(yy3417) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy3417)) + } + } + } + } + if yyr3413 || yy2arr3413 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Preconditions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3419 := z.DecBinary() + _ = yym3419 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3420 := r.ContainerType() + if yyct3420 == codecSelferValueTypeMap1234 { + yyl3420 := r.ReadMapStart() + if yyl3420 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3420, d) + } + } else if yyct3420 == codecSelferValueTypeArray1234 { + yyl3420 := r.ReadArrayStart() + if yyl3420 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3420, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Preconditions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3421Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3421Slc + var yyhl3421 bool = l >= 0 + for yyj3421 := 0; ; yyj3421++ { + if yyhl3421 { + if yyj3421 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3421Slc = r.DecodeBytes(yys3421Slc, true, true) + yys3421 := string(yys3421Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3421 { + case "uid": + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym3423 := z.DecBinary() + _ = yym3423 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3421) + } // end switch yys3421 + } // end for yyj3421 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Preconditions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3424 int + var yyb3424 bool + var yyhl3424 bool = l >= 0 + yyj3424++ + if yyhl3424 { + yyb3424 = yyj3424 > l + } else { + yyb3424 = r.CheckBreak() + } + if yyb3424 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym3426 := z.DecBinary() + _ = yym3426 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + for { + yyj3424++ + if yyhl3424 { + yyb3424 = yyj3424 > l + } else { + yyb3424 = r.CheckBreak() + } + if yyb3424 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3424-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeleteOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3427 := z.EncBinary() + _ = yym3427 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3428 := !z.EncBinary() + yy2arr3428 := z.EncBasicHandle().StructToArray + var yyq3428 [5]bool + _, _, _ = yysep3428, yyq3428, yy2arr3428 + const yyr3428 bool = false + yyq3428[0] = x.Kind != "" + yyq3428[1] = x.APIVersion != "" + yyq3428[2] = x.GracePeriodSeconds != nil + yyq3428[3] = x.Preconditions != nil + yyq3428[4] = x.OrphanDependents != nil + var yynn3428 int + if yyr3428 || yy2arr3428 { + r.EncodeArrayStart(5) + } else { + yynn3428 = 0 + for _, b := range yyq3428 { + if b { + yynn3428++ + } + } + r.EncodeMapStart(yynn3428) + yynn3428 = 0 + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3428[0] { + yym3430 := z.EncBinary() + _ = yym3430 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3428[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3431 := z.EncBinary() + _ = yym3431 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3428[1] { + yym3433 := z.EncBinary() + _ = yym3433 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3428[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3434 := z.EncBinary() + _ = yym3434 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3428[2] { + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy3436 := *x.GracePeriodSeconds + yym3437 := z.EncBinary() + _ = yym3437 + if false { + } else { + r.EncodeInt(int64(yy3436)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3428[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy3438 := *x.GracePeriodSeconds + yym3439 := z.EncBinary() + _ = yym3439 + if false { + } else { + r.EncodeInt(int64(yy3438)) + } + } + } + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3428[3] { + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3428[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preconditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3428[4] { + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy3442 := *x.OrphanDependents + yym3443 := z.EncBinary() + _ = yym3443 + if false { + } else { + r.EncodeBool(bool(yy3442)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3428[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("orphanDependents")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy3444 := *x.OrphanDependents + yym3445 := z.EncBinary() + _ = yym3445 + if false { + } else { + r.EncodeBool(bool(yy3444)) + } + } + } + } + if yyr3428 || yy2arr3428 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeleteOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3446 := z.DecBinary() + _ = yym3446 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3447 := r.ContainerType() + if yyct3447 == codecSelferValueTypeMap1234 { + yyl3447 := r.ReadMapStart() + if yyl3447 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3447, d) + } + } else if yyct3447 == codecSelferValueTypeArray1234 { + yyl3447 := r.ReadArrayStart() + if yyl3447 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3447, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeleteOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3448Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3448Slc + var yyhl3448 bool = l >= 0 + for yyj3448 := 0; ; yyj3448++ { + if yyhl3448 { + if yyj3448 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3448Slc = r.DecodeBytes(yys3448Slc, true, true) + yys3448 := string(yys3448Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3448 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "gracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym3452 := z.DecBinary() + _ = yym3452 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "preconditions": + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + case "orphanDependents": + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym3455 := z.DecBinary() + _ = yym3455 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3448) + } // end switch yys3448 + } // end for yyj3448 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeleteOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3456 int + var yyb3456 bool + var yyhl3456 bool = l >= 0 + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym3460 := z.DecBinary() + _ = yym3460 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym3463 := z.DecBinary() + _ = yym3463 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + for { + yyj3456++ + if yyhl3456 { + yyb3456 = yyj3456 > l + } else { + yyb3456 = r.CheckBreak() + } + if yyb3456 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3456-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExportOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3464 := z.EncBinary() + _ = yym3464 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3465 := !z.EncBinary() + yy2arr3465 := z.EncBasicHandle().StructToArray + var yyq3465 [4]bool + _, _, _ = yysep3465, yyq3465, yy2arr3465 + const yyr3465 bool = false + yyq3465[0] = x.Kind != "" + yyq3465[1] = x.APIVersion != "" + var yynn3465 int + if yyr3465 || yy2arr3465 { + r.EncodeArrayStart(4) + } else { + yynn3465 = 2 + for _, b := range yyq3465 { + if b { + yynn3465++ + } + } + r.EncodeMapStart(yynn3465) + yynn3465 = 0 + } + if yyr3465 || yy2arr3465 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3465[0] { + yym3467 := z.EncBinary() + _ = yym3467 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3465[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3468 := z.EncBinary() + _ = yym3468 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3465 || yy2arr3465 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3465[1] { + yym3470 := z.EncBinary() + _ = yym3470 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3465[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3471 := z.EncBinary() + _ = yym3471 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3465 || yy2arr3465 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3473 := z.EncBinary() + _ = yym3473 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("export")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3474 := z.EncBinary() + _ = yym3474 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } + if yyr3465 || yy2arr3465 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3476 := z.EncBinary() + _ = yym3476 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exact")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3477 := z.EncBinary() + _ = yym3477 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } + if yyr3465 || yy2arr3465 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExportOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3478 := z.DecBinary() + _ = yym3478 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3479 := r.ContainerType() + if yyct3479 == codecSelferValueTypeMap1234 { + yyl3479 := r.ReadMapStart() + if yyl3479 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3479, d) + } + } else if yyct3479 == codecSelferValueTypeArray1234 { + yyl3479 := r.ReadArrayStart() + if yyl3479 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3479, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExportOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3480Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3480Slc + var yyhl3480 bool = l >= 0 + for yyj3480 := 0; ; yyj3480++ { + if yyhl3480 { + if yyj3480 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3480Slc = r.DecodeBytes(yys3480Slc, true, true) + yys3480 := string(yys3480Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3480 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "export": + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + case "exact": + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys3480) + } // end switch yys3480 + } // end for yyj3480 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExportOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3485 int + var yyb3485 bool + var yyhl3485 bool = l >= 0 + yyj3485++ + if yyhl3485 { + yyb3485 = yyj3485 > l + } else { + yyb3485 = r.CheckBreak() + } + if yyb3485 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3485++ + if yyhl3485 { + yyb3485 = yyj3485 > l + } else { + yyb3485 = r.CheckBreak() + } + if yyb3485 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3485++ + if yyhl3485 { + yyb3485 = yyj3485 > l + } else { + yyb3485 = r.CheckBreak() + } + if yyb3485 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + yyj3485++ + if yyhl3485 { + yyb3485 = yyj3485 > l + } else { + yyb3485 = r.CheckBreak() + } + if yyb3485 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + for { + yyj3485++ + if yyhl3485 { + yyb3485 = yyj3485 > l + } else { + yyb3485 = r.CheckBreak() + } + if yyb3485 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3485-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ListOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3490 := z.EncBinary() + _ = yym3490 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3491 := !z.EncBinary() + yy2arr3491 := z.EncBasicHandle().StructToArray + var yyq3491 [7]bool + _, _, _ = yysep3491, yyq3491, yy2arr3491 + const yyr3491 bool = false + yyq3491[0] = x.Kind != "" + yyq3491[1] = x.APIVersion != "" + var yynn3491 int + if yyr3491 || yy2arr3491 { + r.EncodeArrayStart(7) + } else { + yynn3491 = 5 + for _, b := range yyq3491 { + if b { + yynn3491++ + } + } + r.EncodeMapStart(yynn3491) + yynn3491 = 0 + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3491[0] { + yym3493 := z.EncBinary() + _ = yym3493 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3491[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3494 := z.EncBinary() + _ = yym3494 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3491[1] { + yym3496 := z.EncBinary() + _ = yym3496 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3491[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3497 := z.EncBinary() + _ = yym3497 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym3499 := z.EncBinary() + _ = yym3499 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("LabelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym3500 := z.EncBinary() + _ = yym3500 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.FieldSelector == nil { + r.EncodeNil() + } else { + yym3502 := z.EncBinary() + _ = yym3502 + if false { + } else if z.HasExtensions() && z.EncExt(x.FieldSelector) { + } else { + z.EncFallback(x.FieldSelector) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("FieldSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldSelector == nil { + r.EncodeNil() + } else { + yym3503 := z.EncBinary() + _ = yym3503 + if false { + } else if z.HasExtensions() && z.EncExt(x.FieldSelector) { + } else { + z.EncFallback(x.FieldSelector) + } + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3505 := z.EncBinary() + _ = yym3505 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Watch")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3506 := z.EncBinary() + _ = yym3506 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3508 := z.EncBinary() + _ = yym3508 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ResourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3509 := z.EncBinary() + _ = yym3509 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy3511 := *x.TimeoutSeconds + yym3512 := z.EncBinary() + _ = yym3512 + if false { + } else { + r.EncodeInt(int64(yy3511)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("TimeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy3513 := *x.TimeoutSeconds + yym3514 := z.EncBinary() + _ = yym3514 + if false { + } else { + r.EncodeInt(int64(yy3513)) + } + } + } + if yyr3491 || yy2arr3491 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ListOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3515 := z.DecBinary() + _ = yym3515 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3516 := r.ContainerType() + if yyct3516 == codecSelferValueTypeMap1234 { + yyl3516 := r.ReadMapStart() + if yyl3516 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3516, d) + } + } else if yyct3516 == codecSelferValueTypeArray1234 { + yyl3516 := r.ReadArrayStart() + if yyl3516 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3516, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ListOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3517Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3517Slc + var yyhl3517 bool = l >= 0 + for yyj3517 := 0; ; yyj3517++ { + if yyhl3517 { + if yyj3517 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3517Slc = r.DecodeBytes(yys3517Slc, true, true) + yys3517 := string(yys3517Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3517 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "LabelSelector": + if r.TryDecodeAsNil() { + x.LabelSelector = nil + } else { + yyv3520 := &x.LabelSelector + yym3521 := z.DecBinary() + _ = yym3521 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3520) { + } else { + z.DecFallback(yyv3520, true) + } + } + case "FieldSelector": + if r.TryDecodeAsNil() { + x.FieldSelector = nil + } else { + yyv3522 := &x.FieldSelector + yym3523 := z.DecBinary() + _ = yym3523 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3522) { + } else { + z.DecFallback(yyv3522, true) + } + } + case "Watch": + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + case "ResourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "TimeoutSeconds": + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym3527 := z.DecBinary() + _ = yym3527 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3517) + } // end switch yys3517 + } // end for yyj3517 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ListOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3528 int + var yyb3528 bool + var yyhl3528 bool = l >= 0 + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LabelSelector = nil + } else { + yyv3531 := &x.LabelSelector + yym3532 := z.DecBinary() + _ = yym3532 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3531) { + } else { + z.DecFallback(yyv3531, true) + } + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldSelector = nil + } else { + yyv3533 := &x.FieldSelector + yym3534 := z.DecBinary() + _ = yym3534 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3533) { + } else { + z.DecFallback(yyv3533, true) + } + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym3538 := z.DecBinary() + _ = yym3538 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + for { + yyj3528++ + if yyhl3528 { + yyb3528 = yyj3528 > l + } else { + yyb3528 = r.CheckBreak() + } + if yyb3528 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3528-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodLogOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3539 := z.EncBinary() + _ = yym3539 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3540 := !z.EncBinary() + yy2arr3540 := z.EncBasicHandle().StructToArray + var yyq3540 [10]bool + _, _, _ = yysep3540, yyq3540, yy2arr3540 + const yyr3540 bool = false + yyq3540[0] = x.Kind != "" + yyq3540[1] = x.APIVersion != "" + var yynn3540 int + if yyr3540 || yy2arr3540 { + r.EncodeArrayStart(10) + } else { + yynn3540 = 8 + for _, b := range yyq3540 { + if b { + yynn3540++ + } + } + r.EncodeMapStart(yynn3540) + yynn3540 = 0 + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3540[0] { + yym3542 := z.EncBinary() + _ = yym3542 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3540[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3543 := z.EncBinary() + _ = yym3543 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3540[1] { + yym3545 := z.EncBinary() + _ = yym3545 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3540[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3546 := z.EncBinary() + _ = yym3546 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3548 := z.EncBinary() + _ = yym3548 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3549 := z.EncBinary() + _ = yym3549 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3551 := z.EncBinary() + _ = yym3551 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Follow")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3552 := z.EncBinary() + _ = yym3552 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3554 := z.EncBinary() + _ = yym3554 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Previous")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3555 := z.EncBinary() + _ = yym3555 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy3557 := *x.SinceSeconds + yym3558 := z.EncBinary() + _ = yym3558 + if false { + } else { + r.EncodeInt(int64(yy3557)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("SinceSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy3559 := *x.SinceSeconds + yym3560 := z.EncBinary() + _ = yym3560 + if false { + } else { + r.EncodeInt(int64(yy3559)) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym3562 := z.EncBinary() + _ = yym3562 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym3562 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym3562 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("SinceTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym3563 := z.EncBinary() + _ = yym3563 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym3563 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym3563 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3565 := z.EncBinary() + _ = yym3565 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Timestamps")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3566 := z.EncBinary() + _ = yym3566 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TailLines == nil { + r.EncodeNil() + } else { + yy3568 := *x.TailLines + yym3569 := z.EncBinary() + _ = yym3569 + if false { + } else { + r.EncodeInt(int64(yy3568)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("TailLines")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TailLines == nil { + r.EncodeNil() + } else { + yy3570 := *x.TailLines + yym3571 := z.EncBinary() + _ = yym3571 + if false { + } else { + r.EncodeInt(int64(yy3570)) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy3573 := *x.LimitBytes + yym3574 := z.EncBinary() + _ = yym3574 + if false { + } else { + r.EncodeInt(int64(yy3573)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("LimitBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy3575 := *x.LimitBytes + yym3576 := z.EncBinary() + _ = yym3576 + if false { + } else { + r.EncodeInt(int64(yy3575)) + } + } + } + if yyr3540 || yy2arr3540 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodLogOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3577 := z.DecBinary() + _ = yym3577 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3578 := r.ContainerType() + if yyct3578 == codecSelferValueTypeMap1234 { + yyl3578 := r.ReadMapStart() + if yyl3578 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3578, d) + } + } else if yyct3578 == codecSelferValueTypeArray1234 { + yyl3578 := r.ReadArrayStart() + if yyl3578 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3578, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodLogOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3579Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3579Slc + var yyhl3579 bool = l >= 0 + for yyj3579 := 0; ; yyj3579++ { + if yyhl3579 { + if yyj3579 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3579Slc = r.DecodeBytes(yys3579Slc, true, true) + yys3579 := string(yys3579Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3579 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "Container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + case "Follow": + if r.TryDecodeAsNil() { + x.Follow = false + } else { + x.Follow = bool(r.DecodeBool()) + } + case "Previous": + if r.TryDecodeAsNil() { + x.Previous = false + } else { + x.Previous = bool(r.DecodeBool()) + } + case "SinceSeconds": + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym3586 := z.DecBinary() + _ = yym3586 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + case "SinceTime": + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_unversioned.Time) + } + yym3588 := z.DecBinary() + _ = yym3588 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym3588 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym3588 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + case "Timestamps": + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + x.Timestamps = bool(r.DecodeBool()) + } + case "TailLines": + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym3591 := z.DecBinary() + _ = yym3591 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + case "LimitBytes": + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym3593 := z.DecBinary() + _ = yym3593 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3579) + } // end switch yys3579 + } // end for yyj3579 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodLogOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3594 int + var yyb3594 bool + var yyhl3594 bool = l >= 0 + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Follow = false + } else { + x.Follow = bool(r.DecodeBool()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Previous = false + } else { + x.Previous = bool(r.DecodeBool()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym3601 := z.DecBinary() + _ = yym3601 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_unversioned.Time) + } + yym3603 := z.DecBinary() + _ = yym3603 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym3603 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym3603 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + x.Timestamps = bool(r.DecodeBool()) + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym3606 := z.DecBinary() + _ = yym3606 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym3608 := z.DecBinary() + _ = yym3608 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + for { + yyj3594++ + if yyhl3594 { + yyb3594 = yyj3594 > l + } else { + yyb3594 = r.CheckBreak() + } + if yyb3594 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3594-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAttachOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3609 := z.EncBinary() + _ = yym3609 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3610 := !z.EncBinary() + yy2arr3610 := z.EncBasicHandle().StructToArray + var yyq3610 [7]bool + _, _, _ = yysep3610, yyq3610, yy2arr3610 + const yyr3610 bool = false + yyq3610[0] = x.Kind != "" + yyq3610[1] = x.APIVersion != "" + yyq3610[2] = x.Stdin != false + yyq3610[3] = x.Stdout != false + yyq3610[4] = x.Stderr != false + yyq3610[5] = x.TTY != false + yyq3610[6] = x.Container != "" + var yynn3610 int + if yyr3610 || yy2arr3610 { + r.EncodeArrayStart(7) + } else { + yynn3610 = 0 + for _, b := range yyq3610 { + if b { + yynn3610++ + } + } + r.EncodeMapStart(yynn3610) + yynn3610 = 0 + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[0] { + yym3612 := z.EncBinary() + _ = yym3612 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3610[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3613 := z.EncBinary() + _ = yym3613 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[1] { + yym3615 := z.EncBinary() + _ = yym3615 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3610[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3616 := z.EncBinary() + _ = yym3616 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[2] { + yym3618 := z.EncBinary() + _ = yym3618 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3610[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3619 := z.EncBinary() + _ = yym3619 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[3] { + yym3621 := z.EncBinary() + _ = yym3621 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3610[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3622 := z.EncBinary() + _ = yym3622 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[4] { + yym3624 := z.EncBinary() + _ = yym3624 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3610[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3625 := z.EncBinary() + _ = yym3625 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[5] { + yym3627 := z.EncBinary() + _ = yym3627 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3610[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3628 := z.EncBinary() + _ = yym3628 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3610[6] { + yym3630 := z.EncBinary() + _ = yym3630 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3610[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3631 := z.EncBinary() + _ = yym3631 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr3610 || yy2arr3610 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAttachOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3632 := z.DecBinary() + _ = yym3632 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3633 := r.ContainerType() + if yyct3633 == codecSelferValueTypeMap1234 { + yyl3633 := r.ReadMapStart() + if yyl3633 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3633, d) + } + } else if yyct3633 == codecSelferValueTypeArray1234 { + yyl3633 := r.ReadArrayStart() + if yyl3633 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3633, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAttachOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3634Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3634Slc + var yyhl3634 bool = l >= 0 + for yyj3634 := 0; ; yyj3634++ { + if yyhl3634 { + if yyj3634 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3634Slc = r.DecodeBytes(yys3634Slc, true, true) + yys3634 := string(yys3634Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3634 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + case "stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3634) + } // end switch yys3634 + } // end for yyj3634 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAttachOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3642 int + var yyb3642 bool + var yyhl3642 bool = l >= 0 + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + for { + yyj3642++ + if yyhl3642 { + yyb3642 = yyj3642 > l + } else { + yyb3642 = r.CheckBreak() + } + if yyb3642 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3642-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodExecOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3650 := z.EncBinary() + _ = yym3650 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3651 := !z.EncBinary() + yy2arr3651 := z.EncBasicHandle().StructToArray + var yyq3651 [8]bool + _, _, _ = yysep3651, yyq3651, yy2arr3651 + const yyr3651 bool = false + yyq3651[0] = x.Kind != "" + yyq3651[1] = x.APIVersion != "" + var yynn3651 int + if yyr3651 || yy2arr3651 { + r.EncodeArrayStart(8) + } else { + yynn3651 = 6 + for _, b := range yyq3651 { + if b { + yynn3651++ + } + } + r.EncodeMapStart(yynn3651) + yynn3651 = 0 + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3651[0] { + yym3653 := z.EncBinary() + _ = yym3653 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3651[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3654 := z.EncBinary() + _ = yym3654 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3651[1] { + yym3656 := z.EncBinary() + _ = yym3656 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3651[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3657 := z.EncBinary() + _ = yym3657 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3659 := z.EncBinary() + _ = yym3659 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3660 := z.EncBinary() + _ = yym3660 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3662 := z.EncBinary() + _ = yym3662 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3663 := z.EncBinary() + _ = yym3663 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3665 := z.EncBinary() + _ = yym3665 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3666 := z.EncBinary() + _ = yym3666 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3668 := z.EncBinary() + _ = yym3668 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("TTY")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3669 := z.EncBinary() + _ = yym3669 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3671 := z.EncBinary() + _ = yym3671 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3672 := z.EncBinary() + _ = yym3672 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym3674 := z.EncBinary() + _ = yym3674 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym3675 := z.EncBinary() + _ = yym3675 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + if yyr3651 || yy2arr3651 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodExecOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3676 := z.DecBinary() + _ = yym3676 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3677 := r.ContainerType() + if yyct3677 == codecSelferValueTypeMap1234 { + yyl3677 := r.ReadMapStart() + if yyl3677 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3677, d) + } + } else if yyct3677 == codecSelferValueTypeArray1234 { + yyl3677 := r.ReadArrayStart() + if yyl3677 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3677, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodExecOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3678Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3678Slc + var yyhl3678 bool = l >= 0 + for yyj3678 := 0; ; yyj3678++ { + if yyhl3678 { + if yyj3678 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3678Slc = r.DecodeBytes(yys3678Slc, true, true) + yys3678 := string(yys3678Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3678 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "Stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "Stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + case "Stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + case "TTY": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + case "Container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + case "Command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv3686 := &x.Command + yym3687 := z.DecBinary() + _ = yym3687 + if false { + } else { + z.F.DecSliceStringX(yyv3686, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3678) + } // end switch yys3678 + } // end for yyj3678 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodExecOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3688 int + var yyb3688 bool + var yyhl3688 bool = l >= 0 + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv3696 := &x.Command + yym3697 := z.DecBinary() + _ = yym3697 + if false { + } else { + z.F.DecSliceStringX(yyv3696, false, d) + } + } + for { + yyj3688++ + if yyhl3688 { + yyb3688 = yyj3688 > l + } else { + yyb3688 = r.CheckBreak() + } + if yyb3688 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3688-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3698 := z.EncBinary() + _ = yym3698 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3699 := !z.EncBinary() + yy2arr3699 := z.EncBasicHandle().StructToArray + var yyq3699 [3]bool + _, _, _ = yysep3699, yyq3699, yy2arr3699 + const yyr3699 bool = false + yyq3699[0] = x.Kind != "" + yyq3699[1] = x.APIVersion != "" + var yynn3699 int + if yyr3699 || yy2arr3699 { + r.EncodeArrayStart(3) + } else { + yynn3699 = 1 + for _, b := range yyq3699 { + if b { + yynn3699++ + } + } + r.EncodeMapStart(yynn3699) + yynn3699 = 0 + } + if yyr3699 || yy2arr3699 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3699[0] { + yym3701 := z.EncBinary() + _ = yym3701 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3699[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3702 := z.EncBinary() + _ = yym3702 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3699 || yy2arr3699 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3699[1] { + yym3704 := z.EncBinary() + _ = yym3704 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3699[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3705 := z.EncBinary() + _ = yym3705 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3699 || yy2arr3699 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3707 := z.EncBinary() + _ = yym3707 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3708 := z.EncBinary() + _ = yym3708 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr3699 || yy2arr3699 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3709 := z.DecBinary() + _ = yym3709 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3710 := r.ContainerType() + if yyct3710 == codecSelferValueTypeMap1234 { + yyl3710 := r.ReadMapStart() + if yyl3710 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3710, d) + } + } else if yyct3710 == codecSelferValueTypeArray1234 { + yyl3710 := r.ReadArrayStart() + if yyl3710 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3710, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3711Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3711Slc + var yyhl3711 bool = l >= 0 + for yyj3711 := 0; ; yyj3711++ { + if yyhl3711 { + if yyj3711 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3711Slc = r.DecodeBytes(yys3711Slc, true, true) + yys3711 := string(yys3711Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3711 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "Path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3711) + } // end switch yys3711 + } // end for yyj3711 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3715 int + var yyb3715 bool + var yyhl3715 bool = l >= 0 + yyj3715++ + if yyhl3715 { + yyb3715 = yyj3715 > l + } else { + yyb3715 = r.CheckBreak() + } + if yyb3715 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3715++ + if yyhl3715 { + yyb3715 = yyj3715 > l + } else { + yyb3715 = r.CheckBreak() + } + if yyb3715 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3715++ + if yyhl3715 { + yyb3715 = yyj3715 > l + } else { + yyb3715 = r.CheckBreak() + } + if yyb3715 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3715++ + if yyhl3715 { + yyb3715 = yyj3715 > l + } else { + yyb3715 = r.CheckBreak() + } + if yyb3715 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3715-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3719 := z.EncBinary() + _ = yym3719 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3720 := !z.EncBinary() + yy2arr3720 := z.EncBasicHandle().StructToArray + var yyq3720 [3]bool + _, _, _ = yysep3720, yyq3720, yy2arr3720 + const yyr3720 bool = false + yyq3720[0] = x.Kind != "" + yyq3720[1] = x.APIVersion != "" + var yynn3720 int + if yyr3720 || yy2arr3720 { + r.EncodeArrayStart(3) + } else { + yynn3720 = 1 + for _, b := range yyq3720 { + if b { + yynn3720++ + } + } + r.EncodeMapStart(yynn3720) + yynn3720 = 0 + } + if yyr3720 || yy2arr3720 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3720[0] { + yym3722 := z.EncBinary() + _ = yym3722 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3720[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3723 := z.EncBinary() + _ = yym3723 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3720 || yy2arr3720 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3720[1] { + yym3725 := z.EncBinary() + _ = yym3725 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3720[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3726 := z.EncBinary() + _ = yym3726 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3720 || yy2arr3720 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3728 := z.EncBinary() + _ = yym3728 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3729 := z.EncBinary() + _ = yym3729 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr3720 || yy2arr3720 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3730 := z.DecBinary() + _ = yym3730 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3731 := r.ContainerType() + if yyct3731 == codecSelferValueTypeMap1234 { + yyl3731 := r.ReadMapStart() + if yyl3731 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3731, d) + } + } else if yyct3731 == codecSelferValueTypeArray1234 { + yyl3731 := r.ReadArrayStart() + if yyl3731 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3731, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3732Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3732Slc + var yyhl3732 bool = l >= 0 + for yyj3732 := 0; ; yyj3732++ { + if yyhl3732 { + if yyj3732 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3732Slc = r.DecodeBytes(yys3732Slc, true, true) + yys3732 := string(yys3732Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3732 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "Path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3732) + } // end switch yys3732 + } // end for yyj3732 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3736 int + var yyb3736 bool + var yyhl3736 bool = l >= 0 + yyj3736++ + if yyhl3736 { + yyb3736 = yyj3736 > l + } else { + yyb3736 = r.CheckBreak() + } + if yyb3736 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3736++ + if yyhl3736 { + yyb3736 = yyj3736 > l + } else { + yyb3736 = r.CheckBreak() + } + if yyb3736 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3736++ + if yyhl3736 { + yyb3736 = yyj3736 > l + } else { + yyb3736 = r.CheckBreak() + } + if yyb3736 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3736++ + if yyhl3736 { + yyb3736 = yyj3736 > l + } else { + yyb3736 = r.CheckBreak() + } + if yyb3736 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3736-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3740 := z.EncBinary() + _ = yym3740 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3741 := !z.EncBinary() + yy2arr3741 := z.EncBasicHandle().StructToArray + var yyq3741 [3]bool + _, _, _ = yysep3741, yyq3741, yy2arr3741 + const yyr3741 bool = false + yyq3741[0] = x.Kind != "" + yyq3741[1] = x.APIVersion != "" + var yynn3741 int + if yyr3741 || yy2arr3741 { + r.EncodeArrayStart(3) + } else { + yynn3741 = 1 + for _, b := range yyq3741 { + if b { + yynn3741++ + } + } + r.EncodeMapStart(yynn3741) + yynn3741 = 0 + } + if yyr3741 || yy2arr3741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3741[0] { + yym3743 := z.EncBinary() + _ = yym3743 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3741[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3744 := z.EncBinary() + _ = yym3744 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3741 || yy2arr3741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3741[1] { + yym3746 := z.EncBinary() + _ = yym3746 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3741[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3747 := z.EncBinary() + _ = yym3747 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3741 || yy2arr3741 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3749 := z.EncBinary() + _ = yym3749 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3750 := z.EncBinary() + _ = yym3750 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr3741 || yy2arr3741 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3751 := z.DecBinary() + _ = yym3751 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3752 := r.ContainerType() + if yyct3752 == codecSelferValueTypeMap1234 { + yyl3752 := r.ReadMapStart() + if yyl3752 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3752, d) + } + } else if yyct3752 == codecSelferValueTypeArray1234 { + yyl3752 := r.ReadArrayStart() + if yyl3752 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3752, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3753Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3753Slc + var yyhl3753 bool = l >= 0 + for yyj3753 := 0; ; yyj3753++ { + if yyhl3753 { + if yyj3753 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3753Slc = r.DecodeBytes(yys3753Slc, true, true) + yys3753 := string(yys3753Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3753 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "Path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3753) + } // end switch yys3753 + } // end for yyj3753 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3757 int + var yyb3757 bool + var yyhl3757 bool = l >= 0 + yyj3757++ + if yyhl3757 { + yyb3757 = yyj3757 > l + } else { + yyb3757 = r.CheckBreak() + } + if yyb3757 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3757++ + if yyhl3757 { + yyb3757 = yyj3757 > l + } else { + yyb3757 = r.CheckBreak() + } + if yyb3757 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3757++ + if yyhl3757 { + yyb3757 = yyj3757 > l + } else { + yyb3757 = r.CheckBreak() + } + if yyb3757 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3757++ + if yyhl3757 { + yyb3757 = yyj3757 > l + } else { + yyb3757 = r.CheckBreak() + } + if yyb3757 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3757-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *OwnerReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3761 := z.EncBinary() + _ = yym3761 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3762 := !z.EncBinary() + yy2arr3762 := z.EncBasicHandle().StructToArray + var yyq3762 [5]bool + _, _, _ = yysep3762, yyq3762, yy2arr3762 + const yyr3762 bool = false + yyq3762[4] = x.Controller != nil + var yynn3762 int + if yyr3762 || yy2arr3762 { + r.EncodeArrayStart(5) + } else { + yynn3762 = 4 + for _, b := range yyq3762 { + if b { + yynn3762++ + } + } + r.EncodeMapStart(yynn3762) + yynn3762 = 0 + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3764 := z.EncBinary() + _ = yym3764 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3765 := z.EncBinary() + _ = yym3765 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3767 := z.EncBinary() + _ = yym3767 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3768 := z.EncBinary() + _ = yym3768 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3770 := z.EncBinary() + _ = yym3770 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3771 := z.EncBinary() + _ = yym3771 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3773 := z.EncBinary() + _ = yym3773 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3774 := z.EncBinary() + _ = yym3774 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3762[4] { + if x.Controller == nil { + r.EncodeNil() + } else { + yy3776 := *x.Controller + yym3777 := z.EncBinary() + _ = yym3777 + if false { + } else { + r.EncodeBool(bool(yy3776)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3762[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("controller")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Controller == nil { + r.EncodeNil() + } else { + yy3778 := *x.Controller + yym3779 := z.EncBinary() + _ = yym3779 + if false { + } else { + r.EncodeBool(bool(yy3778)) + } + } + } + } + if yyr3762 || yy2arr3762 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *OwnerReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3780 := z.DecBinary() + _ = yym3780 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3781 := r.ContainerType() + if yyct3781 == codecSelferValueTypeMap1234 { + yyl3781 := r.ReadMapStart() + if yyl3781 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3781, d) + } + } else if yyct3781 == codecSelferValueTypeArray1234 { + yyl3781 := r.ReadArrayStart() + if yyl3781 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3781, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *OwnerReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3782Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3782Slc + var yyhl3782 bool = l >= 0 + for yyj3782 := 0; ; yyj3782++ { + if yyhl3782 { + if yyj3782 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3782Slc = r.DecodeBytes(yys3782Slc, true, true) + yys3782 := string(yys3782Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3782 { + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "controller": + if r.TryDecodeAsNil() { + if x.Controller != nil { + x.Controller = nil + } + } else { + if x.Controller == nil { + x.Controller = new(bool) + } + yym3788 := z.DecBinary() + _ = yym3788 + if false { + } else { + *((*bool)(x.Controller)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3782) + } // end switch yys3782 + } // end for yyj3782 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *OwnerReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3789 int + var yyb3789 bool + var yyhl3789 bool = l >= 0 + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Controller != nil { + x.Controller = nil + } + } else { + if x.Controller == nil { + x.Controller = new(bool) + } + yym3795 := z.DecBinary() + _ = yym3795 + if false { + } else { + *((*bool)(x.Controller)) = r.DecodeBool() + } + } + for { + yyj3789++ + if yyhl3789 { + yyb3789 = yyj3789 > l + } else { + yyb3789 = r.CheckBreak() + } + if yyb3789 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3789-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3796 := z.EncBinary() + _ = yym3796 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3797 := !z.EncBinary() + yy2arr3797 := z.EncBasicHandle().StructToArray + var yyq3797 [7]bool + _, _, _ = yysep3797, yyq3797, yy2arr3797 + const yyr3797 bool = false + yyq3797[0] = x.Kind != "" + yyq3797[1] = x.Namespace != "" + yyq3797[2] = x.Name != "" + yyq3797[3] = x.UID != "" + yyq3797[4] = x.APIVersion != "" + yyq3797[5] = x.ResourceVersion != "" + yyq3797[6] = x.FieldPath != "" + var yynn3797 int + if yyr3797 || yy2arr3797 { + r.EncodeArrayStart(7) + } else { + yynn3797 = 0 + for _, b := range yyq3797 { + if b { + yynn3797++ + } + } + r.EncodeMapStart(yynn3797) + yynn3797 = 0 + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[0] { + yym3799 := z.EncBinary() + _ = yym3799 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3800 := z.EncBinary() + _ = yym3800 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[1] { + yym3802 := z.EncBinary() + _ = yym3802 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3803 := z.EncBinary() + _ = yym3803 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[2] { + yym3805 := z.EncBinary() + _ = yym3805 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3806 := z.EncBinary() + _ = yym3806 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[3] { + yym3808 := z.EncBinary() + _ = yym3808 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3809 := z.EncBinary() + _ = yym3809 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[4] { + yym3811 := z.EncBinary() + _ = yym3811 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3812 := z.EncBinary() + _ = yym3812 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[5] { + yym3814 := z.EncBinary() + _ = yym3814 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3815 := z.EncBinary() + _ = yym3815 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3797[6] { + yym3817 := z.EncBinary() + _ = yym3817 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3797[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3818 := z.EncBinary() + _ = yym3818 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + } + if yyr3797 || yy2arr3797 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3819 := z.DecBinary() + _ = yym3819 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3820 := r.ContainerType() + if yyct3820 == codecSelferValueTypeMap1234 { + yyl3820 := r.ReadMapStart() + if yyl3820 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3820, d) + } + } else if yyct3820 == codecSelferValueTypeArray1234 { + yyl3820 := r.ReadArrayStart() + if yyl3820 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3820, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3821Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3821Slc + var yyhl3821 bool = l >= 0 + for yyj3821 := 0; ; yyj3821++ { + if yyhl3821 { + if yyj3821 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3821Slc = r.DecodeBytes(yys3821Slc, true, true) + yys3821 := string(yys3821Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3821 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3821) + } // end switch yys3821 + } // end for yyj3821 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3829 int + var yyb3829 bool + var yyhl3829 bool = l >= 0 + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + for { + yyj3829++ + if yyhl3829 { + yyb3829 = yyj3829 > l + } else { + yyb3829 = r.CheckBreak() + } + if yyb3829 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3829-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3837 := z.EncBinary() + _ = yym3837 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3838 := !z.EncBinary() + yy2arr3838 := z.EncBasicHandle().StructToArray + var yyq3838 [1]bool + _, _, _ = yysep3838, yyq3838, yy2arr3838 + const yyr3838 bool = false + var yynn3838 int + if yyr3838 || yy2arr3838 { + r.EncodeArrayStart(1) + } else { + yynn3838 = 1 + for _, b := range yyq3838 { + if b { + yynn3838++ + } + } + r.EncodeMapStart(yynn3838) + yynn3838 = 0 + } + if yyr3838 || yy2arr3838 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3840 := z.EncBinary() + _ = yym3840 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3841 := z.EncBinary() + _ = yym3841 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr3838 || yy2arr3838 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3842 := z.DecBinary() + _ = yym3842 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3843 := r.ContainerType() + if yyct3843 == codecSelferValueTypeMap1234 { + yyl3843 := r.ReadMapStart() + if yyl3843 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3843, d) + } + } else if yyct3843 == codecSelferValueTypeArray1234 { + yyl3843 := r.ReadArrayStart() + if yyl3843 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3843, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3844Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3844Slc + var yyhl3844 bool = l >= 0 + for yyj3844 := 0; ; yyj3844++ { + if yyhl3844 { + if yyj3844 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3844Slc = r.DecodeBytes(yys3844Slc, true, true) + yys3844 := string(yys3844Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3844 { + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3844) + } // end switch yys3844 + } // end for yyj3844 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3846 int + var yyb3846 bool + var yyhl3846 bool = l >= 0 + yyj3846++ + if yyhl3846 { + yyb3846 = yyj3846 > l + } else { + yyb3846 = r.CheckBreak() + } + if yyb3846 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj3846++ + if yyhl3846 { + yyb3846 = yyj3846 > l + } else { + yyb3846 = r.CheckBreak() + } + if yyb3846 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3846-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SerializedReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3848 := z.EncBinary() + _ = yym3848 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3849 := !z.EncBinary() + yy2arr3849 := z.EncBasicHandle().StructToArray + var yyq3849 [3]bool + _, _, _ = yysep3849, yyq3849, yy2arr3849 + const yyr3849 bool = false + yyq3849[0] = x.Kind != "" + yyq3849[1] = x.APIVersion != "" + yyq3849[2] = true + var yynn3849 int + if yyr3849 || yy2arr3849 { + r.EncodeArrayStart(3) + } else { + yynn3849 = 0 + for _, b := range yyq3849 { + if b { + yynn3849++ + } + } + r.EncodeMapStart(yynn3849) + yynn3849 = 0 + } + if yyr3849 || yy2arr3849 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3849[0] { + yym3851 := z.EncBinary() + _ = yym3851 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3849[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3852 := z.EncBinary() + _ = yym3852 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3849 || yy2arr3849 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3849[1] { + yym3854 := z.EncBinary() + _ = yym3854 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3849[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3855 := z.EncBinary() + _ = yym3855 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3849 || yy2arr3849 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3849[2] { + yy3857 := &x.Reference + yy3857.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3849[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3858 := &x.Reference + yy3858.CodecEncodeSelf(e) + } + } + if yyr3849 || yy2arr3849 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SerializedReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3859 := z.DecBinary() + _ = yym3859 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3860 := r.ContainerType() + if yyct3860 == codecSelferValueTypeMap1234 { + yyl3860 := r.ReadMapStart() + if yyl3860 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3860, d) + } + } else if yyct3860 == codecSelferValueTypeArray1234 { + yyl3860 := r.ReadArrayStart() + if yyl3860 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3860, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SerializedReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3861Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3861Slc + var yyhl3861 bool = l >= 0 + for yyj3861 := 0; ; yyj3861++ { + if yyhl3861 { + if yyj3861 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3861Slc = r.DecodeBytes(yys3861Slc, true, true) + yys3861 := string(yys3861Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3861 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "reference": + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv3864 := &x.Reference + yyv3864.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3861) + } // end switch yys3861 + } // end for yyj3861 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SerializedReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3865 int + var yyb3865 bool + var yyhl3865 bool = l >= 0 + yyj3865++ + if yyhl3865 { + yyb3865 = yyj3865 > l + } else { + yyb3865 = r.CheckBreak() + } + if yyb3865 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3865++ + if yyhl3865 { + yyb3865 = yyj3865 > l + } else { + yyb3865 = r.CheckBreak() + } + if yyb3865 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3865++ + if yyhl3865 { + yyb3865 = yyj3865 > l + } else { + yyb3865 = r.CheckBreak() + } + if yyb3865 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv3868 := &x.Reference + yyv3868.CodecDecodeSelf(d) + } + for { + yyj3865++ + if yyhl3865 { + yyb3865 = yyj3865 > l + } else { + yyb3865 = r.CheckBreak() + } + if yyb3865 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3865-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3869 := z.EncBinary() + _ = yym3869 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3870 := !z.EncBinary() + yy2arr3870 := z.EncBasicHandle().StructToArray + var yyq3870 [2]bool + _, _, _ = yysep3870, yyq3870, yy2arr3870 + const yyr3870 bool = false + yyq3870[0] = x.Component != "" + yyq3870[1] = x.Host != "" + var yynn3870 int + if yyr3870 || yy2arr3870 { + r.EncodeArrayStart(2) + } else { + yynn3870 = 0 + for _, b := range yyq3870 { + if b { + yynn3870++ + } + } + r.EncodeMapStart(yynn3870) + yynn3870 = 0 + } + if yyr3870 || yy2arr3870 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3870[0] { + yym3872 := z.EncBinary() + _ = yym3872 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3870[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("component")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3873 := z.EncBinary() + _ = yym3873 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } + } + if yyr3870 || yy2arr3870 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3870[1] { + yym3875 := z.EncBinary() + _ = yym3875 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3870[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3876 := z.EncBinary() + _ = yym3876 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr3870 || yy2arr3870 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3877 := z.DecBinary() + _ = yym3877 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3878 := r.ContainerType() + if yyct3878 == codecSelferValueTypeMap1234 { + yyl3878 := r.ReadMapStart() + if yyl3878 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3878, d) + } + } else if yyct3878 == codecSelferValueTypeArray1234 { + yyl3878 := r.ReadArrayStart() + if yyl3878 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3878, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3879Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3879Slc + var yyhl3879 bool = l >= 0 + for yyj3879 := 0; ; yyj3879++ { + if yyhl3879 { + if yyj3879 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3879Slc = r.DecodeBytes(yys3879Slc, true, true) + yys3879 := string(yys3879Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3879 { + case "component": + if r.TryDecodeAsNil() { + x.Component = "" + } else { + x.Component = string(r.DecodeString()) + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3879) + } // end switch yys3879 + } // end for yyj3879 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3882 int + var yyb3882 bool + var yyhl3882 bool = l >= 0 + yyj3882++ + if yyhl3882 { + yyb3882 = yyj3882 > l + } else { + yyb3882 = r.CheckBreak() + } + if yyb3882 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Component = "" + } else { + x.Component = string(r.DecodeString()) + } + yyj3882++ + if yyhl3882 { + yyb3882 = yyj3882 > l + } else { + yyb3882 = r.CheckBreak() + } + if yyb3882 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + for { + yyj3882++ + if yyhl3882 { + yyb3882 = yyj3882 > l + } else { + yyb3882 = r.CheckBreak() + } + if yyb3882 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3882-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Event) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3885 := z.EncBinary() + _ = yym3885 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3886 := !z.EncBinary() + yy2arr3886 := z.EncBasicHandle().StructToArray + var yyq3886 [11]bool + _, _, _ = yysep3886, yyq3886, yy2arr3886 + const yyr3886 bool = false + yyq3886[0] = x.Kind != "" + yyq3886[1] = x.APIVersion != "" + yyq3886[2] = true + yyq3886[3] = true + yyq3886[4] = x.Reason != "" + yyq3886[5] = x.Message != "" + yyq3886[6] = true + yyq3886[7] = true + yyq3886[8] = true + yyq3886[9] = x.Count != 0 + yyq3886[10] = x.Type != "" + var yynn3886 int + if yyr3886 || yy2arr3886 { + r.EncodeArrayStart(11) + } else { + yynn3886 = 0 + for _, b := range yyq3886 { + if b { + yynn3886++ + } + } + r.EncodeMapStart(yynn3886) + yynn3886 = 0 + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[0] { + yym3888 := z.EncBinary() + _ = yym3888 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3886[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3889 := z.EncBinary() + _ = yym3889 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[1] { + yym3891 := z.EncBinary() + _ = yym3891 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3886[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3892 := z.EncBinary() + _ = yym3892 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[2] { + yy3894 := &x.ObjectMeta + yy3894.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3886[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3895 := &x.ObjectMeta + yy3895.CodecEncodeSelf(e) + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[3] { + yy3897 := &x.InvolvedObject + yy3897.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3886[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("involvedObject")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3898 := &x.InvolvedObject + yy3898.CodecEncodeSelf(e) + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[4] { + yym3900 := z.EncBinary() + _ = yym3900 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3886[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3901 := z.EncBinary() + _ = yym3901 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[5] { + yym3903 := z.EncBinary() + _ = yym3903 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3886[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3904 := z.EncBinary() + _ = yym3904 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[6] { + yy3906 := &x.Source + yy3906.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3886[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("source")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3907 := &x.Source + yy3907.CodecEncodeSelf(e) + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[7] { + yy3909 := &x.FirstTimestamp + yym3910 := z.EncBinary() + _ = yym3910 + if false { + } else if z.HasExtensions() && z.EncExt(yy3909) { + } else if yym3910 { + z.EncBinaryMarshal(yy3909) + } else if !yym3910 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3909) + } else { + z.EncFallback(yy3909) + } + } else { + r.EncodeNil() + } + } else { + if yyq3886[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("firstTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3911 := &x.FirstTimestamp + yym3912 := z.EncBinary() + _ = yym3912 + if false { + } else if z.HasExtensions() && z.EncExt(yy3911) { + } else if yym3912 { + z.EncBinaryMarshal(yy3911) + } else if !yym3912 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3911) + } else { + z.EncFallback(yy3911) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[8] { + yy3914 := &x.LastTimestamp + yym3915 := z.EncBinary() + _ = yym3915 + if false { + } else if z.HasExtensions() && z.EncExt(yy3914) { + } else if yym3915 { + z.EncBinaryMarshal(yy3914) + } else if !yym3915 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3914) + } else { + z.EncFallback(yy3914) + } + } else { + r.EncodeNil() + } + } else { + if yyq3886[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3916 := &x.LastTimestamp + yym3917 := z.EncBinary() + _ = yym3917 + if false { + } else if z.HasExtensions() && z.EncExt(yy3916) { + } else if yym3917 { + z.EncBinaryMarshal(yy3916) + } else if !yym3917 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3916) + } else { + z.EncFallback(yy3916) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[9] { + yym3919 := z.EncBinary() + _ = yym3919 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq3886[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("count")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3920 := z.EncBinary() + _ = yym3920 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3886[10] { + yym3922 := z.EncBinary() + _ = yym3922 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3886[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3923 := z.EncBinary() + _ = yym3923 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr3886 || yy2arr3886 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Event) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3924 := z.DecBinary() + _ = yym3924 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3925 := r.ContainerType() + if yyct3925 == codecSelferValueTypeMap1234 { + yyl3925 := r.ReadMapStart() + if yyl3925 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3925, d) + } + } else if yyct3925 == codecSelferValueTypeArray1234 { + yyl3925 := r.ReadArrayStart() + if yyl3925 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3925, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Event) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3926Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3926Slc + var yyhl3926 bool = l >= 0 + for yyj3926 := 0; ; yyj3926++ { + if yyhl3926 { + if yyj3926 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3926Slc = r.DecodeBytes(yys3926Slc, true, true) + yys3926 := string(yys3926Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3926 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3929 := &x.ObjectMeta + yyv3929.CodecDecodeSelf(d) + } + case "involvedObject": + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv3930 := &x.InvolvedObject + yyv3930.CodecDecodeSelf(d) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "source": + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv3933 := &x.Source + yyv3933.CodecDecodeSelf(d) + } + case "firstTimestamp": + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_unversioned.Time{} + } else { + yyv3934 := &x.FirstTimestamp + yym3935 := z.DecBinary() + _ = yym3935 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3934) { + } else if yym3935 { + z.DecBinaryUnmarshal(yyv3934) + } else if !yym3935 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3934) + } else { + z.DecFallback(yyv3934, false) + } + } + case "lastTimestamp": + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_unversioned.Time{} + } else { + yyv3936 := &x.LastTimestamp + yym3937 := z.DecBinary() + _ = yym3937 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3936) { + } else if yym3937 { + z.DecBinaryUnmarshal(yyv3936) + } else if !yym3937 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3936) + } else { + z.DecFallback(yyv3936, false) + } + } + case "count": + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + x.Count = int32(r.DecodeInt(32)) + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3926) + } // end switch yys3926 + } // end for yyj3926 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Event) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3940 int + var yyb3940 bool + var yyhl3940 bool = l >= 0 + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3943 := &x.ObjectMeta + yyv3943.CodecDecodeSelf(d) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv3944 := &x.InvolvedObject + yyv3944.CodecDecodeSelf(d) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv3947 := &x.Source + yyv3947.CodecDecodeSelf(d) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_unversioned.Time{} + } else { + yyv3948 := &x.FirstTimestamp + yym3949 := z.DecBinary() + _ = yym3949 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3948) { + } else if yym3949 { + z.DecBinaryUnmarshal(yyv3948) + } else if !yym3949 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3948) + } else { + z.DecFallback(yyv3948, false) + } + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_unversioned.Time{} + } else { + yyv3950 := &x.LastTimestamp + yym3951 := z.DecBinary() + _ = yym3951 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3950) { + } else if yym3951 { + z.DecBinaryUnmarshal(yyv3950) + } else if !yym3951 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3950) + } else { + z.DecFallback(yyv3950, false) + } + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + x.Count = int32(r.DecodeInt(32)) + } + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + for { + yyj3940++ + if yyhl3940 { + yyb3940 = yyj3940 > l + } else { + yyb3940 = r.CheckBreak() + } + if yyb3940 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3940-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3954 := z.EncBinary() + _ = yym3954 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3955 := !z.EncBinary() + yy2arr3955 := z.EncBasicHandle().StructToArray + var yyq3955 [4]bool + _, _, _ = yysep3955, yyq3955, yy2arr3955 + const yyr3955 bool = false + yyq3955[0] = x.Kind != "" + yyq3955[1] = x.APIVersion != "" + yyq3955[2] = true + var yynn3955 int + if yyr3955 || yy2arr3955 { + r.EncodeArrayStart(4) + } else { + yynn3955 = 1 + for _, b := range yyq3955 { + if b { + yynn3955++ + } + } + r.EncodeMapStart(yynn3955) + yynn3955 = 0 + } + if yyr3955 || yy2arr3955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3955[0] { + yym3957 := z.EncBinary() + _ = yym3957 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3955[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3958 := z.EncBinary() + _ = yym3958 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3955 || yy2arr3955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3955[1] { + yym3960 := z.EncBinary() + _ = yym3960 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3955[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3961 := z.EncBinary() + _ = yym3961 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3955 || yy2arr3955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3955[2] { + yy3963 := &x.ListMeta + yym3964 := z.EncBinary() + _ = yym3964 + if false { + } else if z.HasExtensions() && z.EncExt(yy3963) { + } else { + z.EncFallback(yy3963) + } + } else { + r.EncodeNil() + } + } else { + if yyq3955[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3965 := &x.ListMeta + yym3966 := z.EncBinary() + _ = yym3966 + if false { + } else if z.HasExtensions() && z.EncExt(yy3965) { + } else { + z.EncFallback(yy3965) + } + } + } + if yyr3955 || yy2arr3955 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3968 := z.EncBinary() + _ = yym3968 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3969 := z.EncBinary() + _ = yym3969 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } + if yyr3955 || yy2arr3955 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3970 := z.DecBinary() + _ = yym3970 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3971 := r.ContainerType() + if yyct3971 == codecSelferValueTypeMap1234 { + yyl3971 := r.ReadMapStart() + if yyl3971 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3971, d) + } + } else if yyct3971 == codecSelferValueTypeArray1234 { + yyl3971 := r.ReadArrayStart() + if yyl3971 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3971, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3972Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3972Slc + var yyhl3972 bool = l >= 0 + for yyj3972 := 0; ; yyj3972++ { + if yyhl3972 { + if yyj3972 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3972Slc = r.DecodeBytes(yys3972Slc, true, true) + yys3972 := string(yys3972Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3972 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3975 := &x.ListMeta + yym3976 := z.DecBinary() + _ = yym3976 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3975) { + } else { + z.DecFallback(yyv3975, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3977 := &x.Items + yym3978 := z.DecBinary() + _ = yym3978 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv3977), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3972) + } // end switch yys3972 + } // end for yyj3972 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3979 int + var yyb3979 bool + var yyhl3979 bool = l >= 0 + yyj3979++ + if yyhl3979 { + yyb3979 = yyj3979 > l + } else { + yyb3979 = r.CheckBreak() + } + if yyb3979 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3979++ + if yyhl3979 { + yyb3979 = yyj3979 > l + } else { + yyb3979 = r.CheckBreak() + } + if yyb3979 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3979++ + if yyhl3979 { + yyb3979 = yyj3979 > l + } else { + yyb3979 = r.CheckBreak() + } + if yyb3979 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3982 := &x.ListMeta + yym3983 := z.DecBinary() + _ = yym3983 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3982) { + } else { + z.DecFallback(yyv3982, false) + } + } + yyj3979++ + if yyhl3979 { + yyb3979 = yyj3979 > l + } else { + yyb3979 = r.CheckBreak() + } + if yyb3979 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3984 := &x.Items + yym3985 := z.DecBinary() + _ = yym3985 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv3984), d) + } + } + for { + yyj3979++ + if yyhl3979 { + yyb3979 = yyj3979 > l + } else { + yyb3979 = r.CheckBreak() + } + if yyb3979 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3979-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *List) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3986 := z.EncBinary() + _ = yym3986 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3987 := !z.EncBinary() + yy2arr3987 := z.EncBasicHandle().StructToArray + var yyq3987 [4]bool + _, _, _ = yysep3987, yyq3987, yy2arr3987 + const yyr3987 bool = false + yyq3987[0] = x.Kind != "" + yyq3987[1] = x.APIVersion != "" + yyq3987[2] = true + var yynn3987 int + if yyr3987 || yy2arr3987 { + r.EncodeArrayStart(4) + } else { + yynn3987 = 1 + for _, b := range yyq3987 { + if b { + yynn3987++ + } + } + r.EncodeMapStart(yynn3987) + yynn3987 = 0 + } + if yyr3987 || yy2arr3987 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3987[0] { + yym3989 := z.EncBinary() + _ = yym3989 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3987[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3990 := z.EncBinary() + _ = yym3990 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3987 || yy2arr3987 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3987[1] { + yym3992 := z.EncBinary() + _ = yym3992 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3987[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3993 := z.EncBinary() + _ = yym3993 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3987 || yy2arr3987 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3987[2] { + yy3995 := &x.ListMeta + yym3996 := z.EncBinary() + _ = yym3996 + if false { + } else if z.HasExtensions() && z.EncExt(yy3995) { + } else { + z.EncFallback(yy3995) + } + } else { + r.EncodeNil() + } + } else { + if yyq3987[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3997 := &x.ListMeta + yym3998 := z.EncBinary() + _ = yym3998 + if false { + } else if z.HasExtensions() && z.EncExt(yy3997) { + } else { + z.EncFallback(yy3997) + } + } + } + if yyr3987 || yy2arr3987 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4000 := z.EncBinary() + _ = yym4000 + if false { + } else { + h.encSliceruntime_Object(([]pkg7_runtime.Object)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4001 := z.EncBinary() + _ = yym4001 + if false { + } else { + h.encSliceruntime_Object(([]pkg7_runtime.Object)(x.Items), e) + } + } + } + if yyr3987 || yy2arr3987 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *List) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4002 := z.DecBinary() + _ = yym4002 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4003 := r.ContainerType() + if yyct4003 == codecSelferValueTypeMap1234 { + yyl4003 := r.ReadMapStart() + if yyl4003 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4003, d) + } + } else if yyct4003 == codecSelferValueTypeArray1234 { + yyl4003 := r.ReadArrayStart() + if yyl4003 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4003, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *List) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4004Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4004Slc + var yyhl4004 bool = l >= 0 + for yyj4004 := 0; ; yyj4004++ { + if yyhl4004 { + if yyj4004 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4004Slc = r.DecodeBytes(yys4004Slc, true, true) + yys4004 := string(yys4004Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4004 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4007 := &x.ListMeta + yym4008 := z.DecBinary() + _ = yym4008 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4007) { + } else { + z.DecFallback(yyv4007, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4009 := &x.Items + yym4010 := z.DecBinary() + _ = yym4010 + if false { + } else { + h.decSliceruntime_Object((*[]pkg7_runtime.Object)(yyv4009), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4004) + } // end switch yys4004 + } // end for yyj4004 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *List) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4011 int + var yyb4011 bool + var yyhl4011 bool = l >= 0 + yyj4011++ + if yyhl4011 { + yyb4011 = yyj4011 > l + } else { + yyb4011 = r.CheckBreak() + } + if yyb4011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4011++ + if yyhl4011 { + yyb4011 = yyj4011 > l + } else { + yyb4011 = r.CheckBreak() + } + if yyb4011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4011++ + if yyhl4011 { + yyb4011 = yyj4011 > l + } else { + yyb4011 = r.CheckBreak() + } + if yyb4011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4014 := &x.ListMeta + yym4015 := z.DecBinary() + _ = yym4015 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4014) { + } else { + z.DecFallback(yyv4014, false) + } + } + yyj4011++ + if yyhl4011 { + yyb4011 = yyj4011 > l + } else { + yyb4011 = r.CheckBreak() + } + if yyb4011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4016 := &x.Items + yym4017 := z.DecBinary() + _ = yym4017 + if false { + } else { + h.decSliceruntime_Object((*[]pkg7_runtime.Object)(yyv4016), d) + } + } + for { + yyj4011++ + if yyhl4011 { + yyb4011 = yyj4011 > l + } else { + yyb4011 = r.CheckBreak() + } + if yyb4011 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4011-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LimitType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4018 := z.EncBinary() + _ = yym4018 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LimitType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4019 := z.DecBinary() + _ = yym4019 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *LimitRangeItem) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4020 := z.EncBinary() + _ = yym4020 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4021 := !z.EncBinary() + yy2arr4021 := z.EncBasicHandle().StructToArray + var yyq4021 [6]bool + _, _, _ = yysep4021, yyq4021, yy2arr4021 + const yyr4021 bool = false + yyq4021[0] = x.Type != "" + yyq4021[1] = len(x.Max) != 0 + yyq4021[2] = len(x.Min) != 0 + yyq4021[3] = len(x.Default) != 0 + yyq4021[4] = len(x.DefaultRequest) != 0 + yyq4021[5] = len(x.MaxLimitRequestRatio) != 0 + var yynn4021 int + if yyr4021 || yy2arr4021 { + r.EncodeArrayStart(6) + } else { + yynn4021 = 0 + for _, b := range yyq4021 { + if b { + yynn4021++ + } + } + r.EncodeMapStart(yynn4021) + yynn4021 = 0 + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4021[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[1] { + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4021[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[2] { + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4021[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[3] { + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4021[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("default")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[4] { + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4021[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultRequest")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4021[5] { + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4021[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxLimitRequestRatio")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } + } + if yyr4021 || yy2arr4021 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeItem) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4028 := z.DecBinary() + _ = yym4028 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4029 := r.ContainerType() + if yyct4029 == codecSelferValueTypeMap1234 { + yyl4029 := r.ReadMapStart() + if yyl4029 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4029, d) + } + } else if yyct4029 == codecSelferValueTypeArray1234 { + yyl4029 := r.ReadArrayStart() + if yyl4029 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4029, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeItem) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4030Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4030Slc + var yyhl4030 bool = l >= 0 + for yyj4030 := 0; ; yyj4030++ { + if yyhl4030 { + if yyj4030 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4030Slc = r.DecodeBytes(yys4030Slc, true, true) + yys4030 := string(yys4030Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4030 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = LimitType(r.DecodeString()) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv4032 := &x.Max + yyv4032.CodecDecodeSelf(d) + } + case "min": + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv4033 := &x.Min + yyv4033.CodecDecodeSelf(d) + } + case "default": + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv4034 := &x.Default + yyv4034.CodecDecodeSelf(d) + } + case "defaultRequest": + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv4035 := &x.DefaultRequest + yyv4035.CodecDecodeSelf(d) + } + case "maxLimitRequestRatio": + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv4036 := &x.MaxLimitRequestRatio + yyv4036.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4030) + } // end switch yys4030 + } // end for yyj4030 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeItem) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4037 int + var yyb4037 bool + var yyhl4037 bool = l >= 0 + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = LimitType(r.DecodeString()) + } + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv4039 := &x.Max + yyv4039.CodecDecodeSelf(d) + } + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv4040 := &x.Min + yyv4040.CodecDecodeSelf(d) + } + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv4041 := &x.Default + yyv4041.CodecDecodeSelf(d) + } + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv4042 := &x.DefaultRequest + yyv4042.CodecDecodeSelf(d) + } + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv4043 := &x.MaxLimitRequestRatio + yyv4043.CodecDecodeSelf(d) + } + for { + yyj4037++ + if yyhl4037 { + yyb4037 = yyj4037 > l + } else { + yyb4037 = r.CheckBreak() + } + if yyb4037 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4037-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4044 := z.EncBinary() + _ = yym4044 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4045 := !z.EncBinary() + yy2arr4045 := z.EncBasicHandle().StructToArray + var yyq4045 [1]bool + _, _, _ = yysep4045, yyq4045, yy2arr4045 + const yyr4045 bool = false + var yynn4045 int + if yyr4045 || yy2arr4045 { + r.EncodeArrayStart(1) + } else { + yynn4045 = 1 + for _, b := range yyq4045 { + if b { + yynn4045++ + } + } + r.EncodeMapStart(yynn4045) + yynn4045 = 0 + } + if yyr4045 || yy2arr4045 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym4047 := z.EncBinary() + _ = yym4047 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym4048 := z.EncBinary() + _ = yym4048 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } + if yyr4045 || yy2arr4045 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4049 := z.DecBinary() + _ = yym4049 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4050 := r.ContainerType() + if yyct4050 == codecSelferValueTypeMap1234 { + yyl4050 := r.ReadMapStart() + if yyl4050 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4050, d) + } + } else if yyct4050 == codecSelferValueTypeArray1234 { + yyl4050 := r.ReadArrayStart() + if yyl4050 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4050, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4051Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4051Slc + var yyhl4051 bool = l >= 0 + for yyj4051 := 0; ; yyj4051++ { + if yyhl4051 { + if yyj4051 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4051Slc = r.DecodeBytes(yys4051Slc, true, true) + yys4051 := string(yys4051Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4051 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv4052 := &x.Limits + yym4053 := z.DecBinary() + _ = yym4053 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv4052), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4051) + } // end switch yys4051 + } // end for yyj4051 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4054 int + var yyb4054 bool + var yyhl4054 bool = l >= 0 + yyj4054++ + if yyhl4054 { + yyb4054 = yyj4054 > l + } else { + yyb4054 = r.CheckBreak() + } + if yyb4054 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv4055 := &x.Limits + yym4056 := z.DecBinary() + _ = yym4056 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv4055), d) + } + } + for { + yyj4054++ + if yyhl4054 { + yyb4054 = yyj4054 > l + } else { + yyb4054 = r.CheckBreak() + } + if yyb4054 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4054-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4057 := z.EncBinary() + _ = yym4057 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4058 := !z.EncBinary() + yy2arr4058 := z.EncBasicHandle().StructToArray + var yyq4058 [4]bool + _, _, _ = yysep4058, yyq4058, yy2arr4058 + const yyr4058 bool = false + yyq4058[0] = x.Kind != "" + yyq4058[1] = x.APIVersion != "" + yyq4058[2] = true + yyq4058[3] = true + var yynn4058 int + if yyr4058 || yy2arr4058 { + r.EncodeArrayStart(4) + } else { + yynn4058 = 0 + for _, b := range yyq4058 { + if b { + yynn4058++ + } + } + r.EncodeMapStart(yynn4058) + yynn4058 = 0 + } + if yyr4058 || yy2arr4058 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4058[0] { + yym4060 := z.EncBinary() + _ = yym4060 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4058[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4061 := z.EncBinary() + _ = yym4061 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4058 || yy2arr4058 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4058[1] { + yym4063 := z.EncBinary() + _ = yym4063 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4058[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4064 := z.EncBinary() + _ = yym4064 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4058 || yy2arr4058 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4058[2] { + yy4066 := &x.ObjectMeta + yy4066.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4058[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4067 := &x.ObjectMeta + yy4067.CodecEncodeSelf(e) + } + } + if yyr4058 || yy2arr4058 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4058[3] { + yy4069 := &x.Spec + yy4069.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4058[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4070 := &x.Spec + yy4070.CodecEncodeSelf(e) + } + } + if yyr4058 || yy2arr4058 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4071 := z.DecBinary() + _ = yym4071 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4072 := r.ContainerType() + if yyct4072 == codecSelferValueTypeMap1234 { + yyl4072 := r.ReadMapStart() + if yyl4072 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4072, d) + } + } else if yyct4072 == codecSelferValueTypeArray1234 { + yyl4072 := r.ReadArrayStart() + if yyl4072 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4072, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4073Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4073Slc + var yyhl4073 bool = l >= 0 + for yyj4073 := 0; ; yyj4073++ { + if yyhl4073 { + if yyj4073 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4073Slc = r.DecodeBytes(yys4073Slc, true, true) + yys4073 := string(yys4073Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4073 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4076 := &x.ObjectMeta + yyv4076.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv4077 := &x.Spec + yyv4077.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4073) + } // end switch yys4073 + } // end for yyj4073 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4078 int + var yyb4078 bool + var yyhl4078 bool = l >= 0 + yyj4078++ + if yyhl4078 { + yyb4078 = yyj4078 > l + } else { + yyb4078 = r.CheckBreak() + } + if yyb4078 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4078++ + if yyhl4078 { + yyb4078 = yyj4078 > l + } else { + yyb4078 = r.CheckBreak() + } + if yyb4078 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4078++ + if yyhl4078 { + yyb4078 = yyj4078 > l + } else { + yyb4078 = r.CheckBreak() + } + if yyb4078 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4081 := &x.ObjectMeta + yyv4081.CodecDecodeSelf(d) + } + yyj4078++ + if yyhl4078 { + yyb4078 = yyj4078 > l + } else { + yyb4078 = r.CheckBreak() + } + if yyb4078 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv4082 := &x.Spec + yyv4082.CodecDecodeSelf(d) + } + for { + yyj4078++ + if yyhl4078 { + yyb4078 = yyj4078 > l + } else { + yyb4078 = r.CheckBreak() + } + if yyb4078 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4078-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4083 := z.EncBinary() + _ = yym4083 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4084 := !z.EncBinary() + yy2arr4084 := z.EncBasicHandle().StructToArray + var yyq4084 [4]bool + _, _, _ = yysep4084, yyq4084, yy2arr4084 + const yyr4084 bool = false + yyq4084[0] = x.Kind != "" + yyq4084[1] = x.APIVersion != "" + yyq4084[2] = true + var yynn4084 int + if yyr4084 || yy2arr4084 { + r.EncodeArrayStart(4) + } else { + yynn4084 = 1 + for _, b := range yyq4084 { + if b { + yynn4084++ + } + } + r.EncodeMapStart(yynn4084) + yynn4084 = 0 + } + if yyr4084 || yy2arr4084 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4084[0] { + yym4086 := z.EncBinary() + _ = yym4086 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4084[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4087 := z.EncBinary() + _ = yym4087 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4084 || yy2arr4084 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4084[1] { + yym4089 := z.EncBinary() + _ = yym4089 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4084[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4090 := z.EncBinary() + _ = yym4090 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4084 || yy2arr4084 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4084[2] { + yy4092 := &x.ListMeta + yym4093 := z.EncBinary() + _ = yym4093 + if false { + } else if z.HasExtensions() && z.EncExt(yy4092) { + } else { + z.EncFallback(yy4092) + } + } else { + r.EncodeNil() + } + } else { + if yyq4084[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4094 := &x.ListMeta + yym4095 := z.EncBinary() + _ = yym4095 + if false { + } else if z.HasExtensions() && z.EncExt(yy4094) { + } else { + z.EncFallback(yy4094) + } + } + } + if yyr4084 || yy2arr4084 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4097 := z.EncBinary() + _ = yym4097 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4098 := z.EncBinary() + _ = yym4098 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } + if yyr4084 || yy2arr4084 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4099 := z.DecBinary() + _ = yym4099 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4100 := r.ContainerType() + if yyct4100 == codecSelferValueTypeMap1234 { + yyl4100 := r.ReadMapStart() + if yyl4100 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4100, d) + } + } else if yyct4100 == codecSelferValueTypeArray1234 { + yyl4100 := r.ReadArrayStart() + if yyl4100 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4100, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4101Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4101Slc + var yyhl4101 bool = l >= 0 + for yyj4101 := 0; ; yyj4101++ { + if yyhl4101 { + if yyj4101 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4101Slc = r.DecodeBytes(yys4101Slc, true, true) + yys4101 := string(yys4101Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4101 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4104 := &x.ListMeta + yym4105 := z.DecBinary() + _ = yym4105 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4104) { + } else { + z.DecFallback(yyv4104, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4106 := &x.Items + yym4107 := z.DecBinary() + _ = yym4107 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv4106), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4101) + } // end switch yys4101 + } // end for yyj4101 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4108 int + var yyb4108 bool + var yyhl4108 bool = l >= 0 + yyj4108++ + if yyhl4108 { + yyb4108 = yyj4108 > l + } else { + yyb4108 = r.CheckBreak() + } + if yyb4108 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4108++ + if yyhl4108 { + yyb4108 = yyj4108 > l + } else { + yyb4108 = r.CheckBreak() + } + if yyb4108 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4108++ + if yyhl4108 { + yyb4108 = yyj4108 > l + } else { + yyb4108 = r.CheckBreak() + } + if yyb4108 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4111 := &x.ListMeta + yym4112 := z.DecBinary() + _ = yym4112 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4111) { + } else { + z.DecFallback(yyv4111, false) + } + } + yyj4108++ + if yyhl4108 { + yyb4108 = yyj4108 > l + } else { + yyb4108 = r.CheckBreak() + } + if yyb4108 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4113 := &x.Items + yym4114 := z.DecBinary() + _ = yym4114 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv4113), d) + } + } + for { + yyj4108++ + if yyhl4108 { + yyb4108 = yyj4108 > l + } else { + yyb4108 = r.CheckBreak() + } + if yyb4108 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4108-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceQuotaScope) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4115 := z.EncBinary() + _ = yym4115 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceQuotaScope) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4116 := z.DecBinary() + _ = yym4116 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ResourceQuotaSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4117 := z.EncBinary() + _ = yym4117 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4118 := !z.EncBinary() + yy2arr4118 := z.EncBasicHandle().StructToArray + var yyq4118 [2]bool + _, _, _ = yysep4118, yyq4118, yy2arr4118 + const yyr4118 bool = false + yyq4118[0] = len(x.Hard) != 0 + yyq4118[1] = len(x.Scopes) != 0 + var yynn4118 int + if yyr4118 || yy2arr4118 { + r.EncodeArrayStart(2) + } else { + yynn4118 = 0 + for _, b := range yyq4118 { + if b { + yynn4118++ + } + } + r.EncodeMapStart(yynn4118) + yynn4118 = 0 + } + if yyr4118 || yy2arr4118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4118[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4118[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr4118 || yy2arr4118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4118[1] { + if x.Scopes == nil { + r.EncodeNil() + } else { + yym4121 := z.EncBinary() + _ = yym4121 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4118[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scopes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Scopes == nil { + r.EncodeNil() + } else { + yym4122 := z.EncBinary() + _ = yym4122 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } + } + if yyr4118 || yy2arr4118 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4123 := z.DecBinary() + _ = yym4123 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4124 := r.ContainerType() + if yyct4124 == codecSelferValueTypeMap1234 { + yyl4124 := r.ReadMapStart() + if yyl4124 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4124, d) + } + } else if yyct4124 == codecSelferValueTypeArray1234 { + yyl4124 := r.ReadArrayStart() + if yyl4124 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4124, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4125Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4125Slc + var yyhl4125 bool = l >= 0 + for yyj4125 := 0; ; yyj4125++ { + if yyhl4125 { + if yyj4125 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4125Slc = r.DecodeBytes(yys4125Slc, true, true) + yys4125 := string(yys4125Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4125 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4126 := &x.Hard + yyv4126.CodecDecodeSelf(d) + } + case "scopes": + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv4127 := &x.Scopes + yym4128 := z.DecBinary() + _ = yym4128 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv4127), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4125) + } // end switch yys4125 + } // end for yyj4125 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4129 int + var yyb4129 bool + var yyhl4129 bool = l >= 0 + yyj4129++ + if yyhl4129 { + yyb4129 = yyj4129 > l + } else { + yyb4129 = r.CheckBreak() + } + if yyb4129 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4130 := &x.Hard + yyv4130.CodecDecodeSelf(d) + } + yyj4129++ + if yyhl4129 { + yyb4129 = yyj4129 > l + } else { + yyb4129 = r.CheckBreak() + } + if yyb4129 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv4131 := &x.Scopes + yym4132 := z.DecBinary() + _ = yym4132 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv4131), d) + } + } + for { + yyj4129++ + if yyhl4129 { + yyb4129 = yyj4129 > l + } else { + yyb4129 = r.CheckBreak() + } + if yyb4129 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4129-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4133 := z.EncBinary() + _ = yym4133 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4134 := !z.EncBinary() + yy2arr4134 := z.EncBasicHandle().StructToArray + var yyq4134 [2]bool + _, _, _ = yysep4134, yyq4134, yy2arr4134 + const yyr4134 bool = false + yyq4134[0] = len(x.Hard) != 0 + yyq4134[1] = len(x.Used) != 0 + var yynn4134 int + if yyr4134 || yy2arr4134 { + r.EncodeArrayStart(2) + } else { + yynn4134 = 0 + for _, b := range yyq4134 { + if b { + yynn4134++ + } + } + r.EncodeMapStart(yynn4134) + yynn4134 = 0 + } + if yyr4134 || yy2arr4134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4134[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4134[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr4134 || yy2arr4134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4134[1] { + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4134[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("used")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } + } + if yyr4134 || yy2arr4134 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4137 := z.DecBinary() + _ = yym4137 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4138 := r.ContainerType() + if yyct4138 == codecSelferValueTypeMap1234 { + yyl4138 := r.ReadMapStart() + if yyl4138 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4138, d) + } + } else if yyct4138 == codecSelferValueTypeArray1234 { + yyl4138 := r.ReadArrayStart() + if yyl4138 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4138, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4139Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4139Slc + var yyhl4139 bool = l >= 0 + for yyj4139 := 0; ; yyj4139++ { + if yyhl4139 { + if yyj4139 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4139Slc = r.DecodeBytes(yys4139Slc, true, true) + yys4139 := string(yys4139Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4139 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4140 := &x.Hard + yyv4140.CodecDecodeSelf(d) + } + case "used": + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv4141 := &x.Used + yyv4141.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4139) + } // end switch yys4139 + } // end for yyj4139 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4142 int + var yyb4142 bool + var yyhl4142 bool = l >= 0 + yyj4142++ + if yyhl4142 { + yyb4142 = yyj4142 > l + } else { + yyb4142 = r.CheckBreak() + } + if yyb4142 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4143 := &x.Hard + yyv4143.CodecDecodeSelf(d) + } + yyj4142++ + if yyhl4142 { + yyb4142 = yyj4142 > l + } else { + yyb4142 = r.CheckBreak() + } + if yyb4142 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv4144 := &x.Used + yyv4144.CodecDecodeSelf(d) + } + for { + yyj4142++ + if yyhl4142 { + yyb4142 = yyj4142 > l + } else { + yyb4142 = r.CheckBreak() + } + if yyb4142 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4142-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuota) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4145 := z.EncBinary() + _ = yym4145 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4146 := !z.EncBinary() + yy2arr4146 := z.EncBasicHandle().StructToArray + var yyq4146 [5]bool + _, _, _ = yysep4146, yyq4146, yy2arr4146 + const yyr4146 bool = false + yyq4146[0] = x.Kind != "" + yyq4146[1] = x.APIVersion != "" + yyq4146[2] = true + yyq4146[3] = true + yyq4146[4] = true + var yynn4146 int + if yyr4146 || yy2arr4146 { + r.EncodeArrayStart(5) + } else { + yynn4146 = 0 + for _, b := range yyq4146 { + if b { + yynn4146++ + } + } + r.EncodeMapStart(yynn4146) + yynn4146 = 0 + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4146[0] { + yym4148 := z.EncBinary() + _ = yym4148 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4146[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4149 := z.EncBinary() + _ = yym4149 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4146[1] { + yym4151 := z.EncBinary() + _ = yym4151 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4146[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4152 := z.EncBinary() + _ = yym4152 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4146[2] { + yy4154 := &x.ObjectMeta + yy4154.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4146[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4155 := &x.ObjectMeta + yy4155.CodecEncodeSelf(e) + } + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4146[3] { + yy4157 := &x.Spec + yy4157.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4146[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4158 := &x.Spec + yy4158.CodecEncodeSelf(e) + } + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4146[4] { + yy4160 := &x.Status + yy4160.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4146[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4161 := &x.Status + yy4161.CodecEncodeSelf(e) + } + } + if yyr4146 || yy2arr4146 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuota) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4162 := z.DecBinary() + _ = yym4162 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4163 := r.ContainerType() + if yyct4163 == codecSelferValueTypeMap1234 { + yyl4163 := r.ReadMapStart() + if yyl4163 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4163, d) + } + } else if yyct4163 == codecSelferValueTypeArray1234 { + yyl4163 := r.ReadArrayStart() + if yyl4163 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4163, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuota) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4164Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4164Slc + var yyhl4164 bool = l >= 0 + for yyj4164 := 0; ; yyj4164++ { + if yyhl4164 { + if yyj4164 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4164Slc = r.DecodeBytes(yys4164Slc, true, true) + yys4164 := string(yys4164Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4164 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4167 := &x.ObjectMeta + yyv4167.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv4168 := &x.Spec + yyv4168.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv4169 := &x.Status + yyv4169.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4164) + } // end switch yys4164 + } // end for yyj4164 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuota) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4170 int + var yyb4170 bool + var yyhl4170 bool = l >= 0 + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4173 := &x.ObjectMeta + yyv4173.CodecDecodeSelf(d) + } + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv4174 := &x.Spec + yyv4174.CodecDecodeSelf(d) + } + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv4175 := &x.Status + yyv4175.CodecDecodeSelf(d) + } + for { + yyj4170++ + if yyhl4170 { + yyb4170 = yyj4170 > l + } else { + yyb4170 = r.CheckBreak() + } + if yyb4170 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4170-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4176 := z.EncBinary() + _ = yym4176 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4177 := !z.EncBinary() + yy2arr4177 := z.EncBasicHandle().StructToArray + var yyq4177 [4]bool + _, _, _ = yysep4177, yyq4177, yy2arr4177 + const yyr4177 bool = false + yyq4177[0] = x.Kind != "" + yyq4177[1] = x.APIVersion != "" + yyq4177[2] = true + var yynn4177 int + if yyr4177 || yy2arr4177 { + r.EncodeArrayStart(4) + } else { + yynn4177 = 1 + for _, b := range yyq4177 { + if b { + yynn4177++ + } + } + r.EncodeMapStart(yynn4177) + yynn4177 = 0 + } + if yyr4177 || yy2arr4177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4177[0] { + yym4179 := z.EncBinary() + _ = yym4179 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4177[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4180 := z.EncBinary() + _ = yym4180 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4177 || yy2arr4177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4177[1] { + yym4182 := z.EncBinary() + _ = yym4182 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4177[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4183 := z.EncBinary() + _ = yym4183 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4177 || yy2arr4177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4177[2] { + yy4185 := &x.ListMeta + yym4186 := z.EncBinary() + _ = yym4186 + if false { + } else if z.HasExtensions() && z.EncExt(yy4185) { + } else { + z.EncFallback(yy4185) + } + } else { + r.EncodeNil() + } + } else { + if yyq4177[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4187 := &x.ListMeta + yym4188 := z.EncBinary() + _ = yym4188 + if false { + } else if z.HasExtensions() && z.EncExt(yy4187) { + } else { + z.EncFallback(yy4187) + } + } + } + if yyr4177 || yy2arr4177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4190 := z.EncBinary() + _ = yym4190 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4191 := z.EncBinary() + _ = yym4191 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } + if yyr4177 || yy2arr4177 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4192 := z.DecBinary() + _ = yym4192 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4193 := r.ContainerType() + if yyct4193 == codecSelferValueTypeMap1234 { + yyl4193 := r.ReadMapStart() + if yyl4193 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4193, d) + } + } else if yyct4193 == codecSelferValueTypeArray1234 { + yyl4193 := r.ReadArrayStart() + if yyl4193 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4193, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4194Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4194Slc + var yyhl4194 bool = l >= 0 + for yyj4194 := 0; ; yyj4194++ { + if yyhl4194 { + if yyj4194 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4194Slc = r.DecodeBytes(yys4194Slc, true, true) + yys4194 := string(yys4194Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4194 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4197 := &x.ListMeta + yym4198 := z.DecBinary() + _ = yym4198 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4197) { + } else { + z.DecFallback(yyv4197, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4199 := &x.Items + yym4200 := z.DecBinary() + _ = yym4200 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv4199), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4194) + } // end switch yys4194 + } // end for yyj4194 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4201 int + var yyb4201 bool + var yyhl4201 bool = l >= 0 + yyj4201++ + if yyhl4201 { + yyb4201 = yyj4201 > l + } else { + yyb4201 = r.CheckBreak() + } + if yyb4201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4201++ + if yyhl4201 { + yyb4201 = yyj4201 > l + } else { + yyb4201 = r.CheckBreak() + } + if yyb4201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4201++ + if yyhl4201 { + yyb4201 = yyj4201 > l + } else { + yyb4201 = r.CheckBreak() + } + if yyb4201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4204 := &x.ListMeta + yym4205 := z.DecBinary() + _ = yym4205 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4204) { + } else { + z.DecFallback(yyv4204, false) + } + } + yyj4201++ + if yyhl4201 { + yyb4201 = yyj4201 > l + } else { + yyb4201 = r.CheckBreak() + } + if yyb4201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4206 := &x.Items + yym4207 := z.DecBinary() + _ = yym4207 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv4206), d) + } + } + for { + yyj4201++ + if yyhl4201 { + yyb4201 = yyj4201 > l + } else { + yyb4201 = r.CheckBreak() + } + if yyb4201 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4201-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Secret) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4208 := z.EncBinary() + _ = yym4208 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4209 := !z.EncBinary() + yy2arr4209 := z.EncBasicHandle().StructToArray + var yyq4209 [5]bool + _, _, _ = yysep4209, yyq4209, yy2arr4209 + const yyr4209 bool = false + yyq4209[0] = x.Kind != "" + yyq4209[1] = x.APIVersion != "" + yyq4209[2] = true + yyq4209[3] = len(x.Data) != 0 + yyq4209[4] = x.Type != "" + var yynn4209 int + if yyr4209 || yy2arr4209 { + r.EncodeArrayStart(5) + } else { + yynn4209 = 0 + for _, b := range yyq4209 { + if b { + yynn4209++ + } + } + r.EncodeMapStart(yynn4209) + yynn4209 = 0 + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4209[0] { + yym4211 := z.EncBinary() + _ = yym4211 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4209[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4212 := z.EncBinary() + _ = yym4212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4209[1] { + yym4214 := z.EncBinary() + _ = yym4214 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4209[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4215 := z.EncBinary() + _ = yym4215 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4209[2] { + yy4217 := &x.ObjectMeta + yy4217.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4209[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4218 := &x.ObjectMeta + yy4218.CodecEncodeSelf(e) + } + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4209[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym4220 := z.EncBinary() + _ = yym4220 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4209[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4221 := z.EncBinary() + _ = yym4221 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4209[4] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4209[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr4209 || yy2arr4209 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Secret) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4223 := z.DecBinary() + _ = yym4223 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4224 := r.ContainerType() + if yyct4224 == codecSelferValueTypeMap1234 { + yyl4224 := r.ReadMapStart() + if yyl4224 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4224, d) + } + } else if yyct4224 == codecSelferValueTypeArray1234 { + yyl4224 := r.ReadArrayStart() + if yyl4224 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4224, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Secret) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4225Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4225Slc + var yyhl4225 bool = l >= 0 + for yyj4225 := 0; ; yyj4225++ { + if yyhl4225 { + if yyj4225 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4225Slc = r.DecodeBytes(yys4225Slc, true, true) + yys4225 := string(yys4225Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4225 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4228 := &x.ObjectMeta + yyv4228.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4229 := &x.Data + yym4230 := z.DecBinary() + _ = yym4230 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv4229), d) + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = SecretType(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4225) + } // end switch yys4225 + } // end for yyj4225 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Secret) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4232 int + var yyb4232 bool + var yyhl4232 bool = l >= 0 + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4235 := &x.ObjectMeta + yyv4235.CodecDecodeSelf(d) + } + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4236 := &x.Data + yym4237 := z.DecBinary() + _ = yym4237 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv4236), d) + } + } + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = SecretType(r.DecodeString()) + } + for { + yyj4232++ + if yyhl4232 { + yyb4232 = yyj4232 > l + } else { + yyb4232 = r.CheckBreak() + } + if yyb4232 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4232-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SecretType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4239 := z.EncBinary() + _ = yym4239 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SecretType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4240 := z.DecBinary() + _ = yym4240 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SecretList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4241 := z.EncBinary() + _ = yym4241 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4242 := !z.EncBinary() + yy2arr4242 := z.EncBasicHandle().StructToArray + var yyq4242 [4]bool + _, _, _ = yysep4242, yyq4242, yy2arr4242 + const yyr4242 bool = false + yyq4242[0] = x.Kind != "" + yyq4242[1] = x.APIVersion != "" + yyq4242[2] = true + var yynn4242 int + if yyr4242 || yy2arr4242 { + r.EncodeArrayStart(4) + } else { + yynn4242 = 1 + for _, b := range yyq4242 { + if b { + yynn4242++ + } + } + r.EncodeMapStart(yynn4242) + yynn4242 = 0 + } + if yyr4242 || yy2arr4242 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4242[0] { + yym4244 := z.EncBinary() + _ = yym4244 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4242[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4245 := z.EncBinary() + _ = yym4245 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4242 || yy2arr4242 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4242[1] { + yym4247 := z.EncBinary() + _ = yym4247 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4242[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4248 := z.EncBinary() + _ = yym4248 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4242 || yy2arr4242 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4242[2] { + yy4250 := &x.ListMeta + yym4251 := z.EncBinary() + _ = yym4251 + if false { + } else if z.HasExtensions() && z.EncExt(yy4250) { + } else { + z.EncFallback(yy4250) + } + } else { + r.EncodeNil() + } + } else { + if yyq4242[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4252 := &x.ListMeta + yym4253 := z.EncBinary() + _ = yym4253 + if false { + } else if z.HasExtensions() && z.EncExt(yy4252) { + } else { + z.EncFallback(yy4252) + } + } + } + if yyr4242 || yy2arr4242 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4255 := z.EncBinary() + _ = yym4255 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4256 := z.EncBinary() + _ = yym4256 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } + if yyr4242 || yy2arr4242 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4257 := z.DecBinary() + _ = yym4257 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4258 := r.ContainerType() + if yyct4258 == codecSelferValueTypeMap1234 { + yyl4258 := r.ReadMapStart() + if yyl4258 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4258, d) + } + } else if yyct4258 == codecSelferValueTypeArray1234 { + yyl4258 := r.ReadArrayStart() + if yyl4258 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4258, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4259Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4259Slc + var yyhl4259 bool = l >= 0 + for yyj4259 := 0; ; yyj4259++ { + if yyhl4259 { + if yyj4259 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4259Slc = r.DecodeBytes(yys4259Slc, true, true) + yys4259 := string(yys4259Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4259 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4262 := &x.ListMeta + yym4263 := z.DecBinary() + _ = yym4263 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4262) { + } else { + z.DecFallback(yyv4262, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4264 := &x.Items + yym4265 := z.DecBinary() + _ = yym4265 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv4264), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4259) + } // end switch yys4259 + } // end for yyj4259 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4266 int + var yyb4266 bool + var yyhl4266 bool = l >= 0 + yyj4266++ + if yyhl4266 { + yyb4266 = yyj4266 > l + } else { + yyb4266 = r.CheckBreak() + } + if yyb4266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4266++ + if yyhl4266 { + yyb4266 = yyj4266 > l + } else { + yyb4266 = r.CheckBreak() + } + if yyb4266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4266++ + if yyhl4266 { + yyb4266 = yyj4266 > l + } else { + yyb4266 = r.CheckBreak() + } + if yyb4266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4269 := &x.ListMeta + yym4270 := z.DecBinary() + _ = yym4270 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4269) { + } else { + z.DecFallback(yyv4269, false) + } + } + yyj4266++ + if yyhl4266 { + yyb4266 = yyj4266 > l + } else { + yyb4266 = r.CheckBreak() + } + if yyb4266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4271 := &x.Items + yym4272 := z.DecBinary() + _ = yym4272 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv4271), d) + } + } + for { + yyj4266++ + if yyhl4266 { + yyb4266 = yyj4266 > l + } else { + yyb4266 = r.CheckBreak() + } + if yyb4266 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4266-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMap) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4273 := z.EncBinary() + _ = yym4273 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4274 := !z.EncBinary() + yy2arr4274 := z.EncBasicHandle().StructToArray + var yyq4274 [4]bool + _, _, _ = yysep4274, yyq4274, yy2arr4274 + const yyr4274 bool = false + yyq4274[0] = x.Kind != "" + yyq4274[1] = x.APIVersion != "" + yyq4274[2] = true + yyq4274[3] = len(x.Data) != 0 + var yynn4274 int + if yyr4274 || yy2arr4274 { + r.EncodeArrayStart(4) + } else { + yynn4274 = 0 + for _, b := range yyq4274 { + if b { + yynn4274++ + } + } + r.EncodeMapStart(yynn4274) + yynn4274 = 0 + } + if yyr4274 || yy2arr4274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4274[0] { + yym4276 := z.EncBinary() + _ = yym4276 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4274[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4277 := z.EncBinary() + _ = yym4277 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4274 || yy2arr4274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4274[1] { + yym4279 := z.EncBinary() + _ = yym4279 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4274[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4280 := z.EncBinary() + _ = yym4280 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4274 || yy2arr4274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4274[2] { + yy4282 := &x.ObjectMeta + yy4282.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4274[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4283 := &x.ObjectMeta + yy4283.CodecEncodeSelf(e) + } + } + if yyr4274 || yy2arr4274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4274[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym4285 := z.EncBinary() + _ = yym4285 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4274[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4286 := z.EncBinary() + _ = yym4286 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } + } + if yyr4274 || yy2arr4274 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMap) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4287 := z.DecBinary() + _ = yym4287 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4288 := r.ContainerType() + if yyct4288 == codecSelferValueTypeMap1234 { + yyl4288 := r.ReadMapStart() + if yyl4288 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4288, d) + } + } else if yyct4288 == codecSelferValueTypeArray1234 { + yyl4288 := r.ReadArrayStart() + if yyl4288 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4288, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMap) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4289Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4289Slc + var yyhl4289 bool = l >= 0 + for yyj4289 := 0; ; yyj4289++ { + if yyhl4289 { + if yyj4289 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4289Slc = r.DecodeBytes(yys4289Slc, true, true) + yys4289 := string(yys4289Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4289 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4292 := &x.ObjectMeta + yyv4292.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4293 := &x.Data + yym4294 := z.DecBinary() + _ = yym4294 + if false { + } else { + z.F.DecMapStringStringX(yyv4293, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4289) + } // end switch yys4289 + } // end for yyj4289 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMap) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4295 int + var yyb4295 bool + var yyhl4295 bool = l >= 0 + yyj4295++ + if yyhl4295 { + yyb4295 = yyj4295 > l + } else { + yyb4295 = r.CheckBreak() + } + if yyb4295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4295++ + if yyhl4295 { + yyb4295 = yyj4295 > l + } else { + yyb4295 = r.CheckBreak() + } + if yyb4295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4295++ + if yyhl4295 { + yyb4295 = yyj4295 > l + } else { + yyb4295 = r.CheckBreak() + } + if yyb4295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4298 := &x.ObjectMeta + yyv4298.CodecDecodeSelf(d) + } + yyj4295++ + if yyhl4295 { + yyb4295 = yyj4295 > l + } else { + yyb4295 = r.CheckBreak() + } + if yyb4295 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4299 := &x.Data + yym4300 := z.DecBinary() + _ = yym4300 + if false { + } else { + z.F.DecMapStringStringX(yyv4299, false, d) + } + } + for { + yyj4295++ + if yyhl4295 { + yyb4295 = yyj4295 > l + } else { + yyb4295 = r.CheckBreak() + } + if yyb4295 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4295-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4301 := z.EncBinary() + _ = yym4301 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4302 := !z.EncBinary() + yy2arr4302 := z.EncBasicHandle().StructToArray + var yyq4302 [4]bool + _, _, _ = yysep4302, yyq4302, yy2arr4302 + const yyr4302 bool = false + yyq4302[0] = x.Kind != "" + yyq4302[1] = x.APIVersion != "" + yyq4302[2] = true + var yynn4302 int + if yyr4302 || yy2arr4302 { + r.EncodeArrayStart(4) + } else { + yynn4302 = 1 + for _, b := range yyq4302 { + if b { + yynn4302++ + } + } + r.EncodeMapStart(yynn4302) + yynn4302 = 0 + } + if yyr4302 || yy2arr4302 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4302[0] { + yym4304 := z.EncBinary() + _ = yym4304 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4302[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4305 := z.EncBinary() + _ = yym4305 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4302 || yy2arr4302 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4302[1] { + yym4307 := z.EncBinary() + _ = yym4307 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4302[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4308 := z.EncBinary() + _ = yym4308 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4302 || yy2arr4302 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4302[2] { + yy4310 := &x.ListMeta + yym4311 := z.EncBinary() + _ = yym4311 + if false { + } else if z.HasExtensions() && z.EncExt(yy4310) { + } else { + z.EncFallback(yy4310) + } + } else { + r.EncodeNil() + } + } else { + if yyq4302[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4312 := &x.ListMeta + yym4313 := z.EncBinary() + _ = yym4313 + if false { + } else if z.HasExtensions() && z.EncExt(yy4312) { + } else { + z.EncFallback(yy4312) + } + } + } + if yyr4302 || yy2arr4302 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4315 := z.EncBinary() + _ = yym4315 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4316 := z.EncBinary() + _ = yym4316 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } + if yyr4302 || yy2arr4302 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4317 := z.DecBinary() + _ = yym4317 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4318 := r.ContainerType() + if yyct4318 == codecSelferValueTypeMap1234 { + yyl4318 := r.ReadMapStart() + if yyl4318 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4318, d) + } + } else if yyct4318 == codecSelferValueTypeArray1234 { + yyl4318 := r.ReadArrayStart() + if yyl4318 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4318, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4319Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4319Slc + var yyhl4319 bool = l >= 0 + for yyj4319 := 0; ; yyj4319++ { + if yyhl4319 { + if yyj4319 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4319Slc = r.DecodeBytes(yys4319Slc, true, true) + yys4319 := string(yys4319Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4319 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4322 := &x.ListMeta + yym4323 := z.DecBinary() + _ = yym4323 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4322) { + } else { + z.DecFallback(yyv4322, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4324 := &x.Items + yym4325 := z.DecBinary() + _ = yym4325 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv4324), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4319) + } // end switch yys4319 + } // end for yyj4319 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4326 int + var yyb4326 bool + var yyhl4326 bool = l >= 0 + yyj4326++ + if yyhl4326 { + yyb4326 = yyj4326 > l + } else { + yyb4326 = r.CheckBreak() + } + if yyb4326 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4326++ + if yyhl4326 { + yyb4326 = yyj4326 > l + } else { + yyb4326 = r.CheckBreak() + } + if yyb4326 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4326++ + if yyhl4326 { + yyb4326 = yyj4326 > l + } else { + yyb4326 = r.CheckBreak() + } + if yyb4326 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4329 := &x.ListMeta + yym4330 := z.DecBinary() + _ = yym4330 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4329) { + } else { + z.DecFallback(yyv4329, false) + } + } + yyj4326++ + if yyhl4326 { + yyb4326 = yyj4326 > l + } else { + yyb4326 = r.CheckBreak() + } + if yyb4326 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4331 := &x.Items + yym4332 := z.DecBinary() + _ = yym4332 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv4331), d) + } + } + for { + yyj4326++ + if yyhl4326 { + yyb4326 = yyj4326 > l + } else { + yyb4326 = r.CheckBreak() + } + if yyb4326 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4326-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PatchType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4333 := z.EncBinary() + _ = yym4333 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PatchType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4334 := z.DecBinary() + _ = yym4334 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ComponentConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4335 := z.EncBinary() + _ = yym4335 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ComponentConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4336 := z.DecBinary() + _ = yym4336 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ComponentCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4337 := z.EncBinary() + _ = yym4337 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4338 := !z.EncBinary() + yy2arr4338 := z.EncBasicHandle().StructToArray + var yyq4338 [4]bool + _, _, _ = yysep4338, yyq4338, yy2arr4338 + const yyr4338 bool = false + yyq4338[2] = x.Message != "" + yyq4338[3] = x.Error != "" + var yynn4338 int + if yyr4338 || yy2arr4338 { + r.EncodeArrayStart(4) + } else { + yynn4338 = 2 + for _, b := range yyq4338 { + if b { + yynn4338++ + } + } + r.EncodeMapStart(yynn4338) + yynn4338 = 0 + } + if yyr4338 || yy2arr4338 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr4338 || yy2arr4338 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr4338 || yy2arr4338 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4338[2] { + yym4342 := z.EncBinary() + _ = yym4342 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4338[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4343 := z.EncBinary() + _ = yym4343 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr4338 || yy2arr4338 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4338[3] { + yym4345 := z.EncBinary() + _ = yym4345 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4338[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4346 := z.EncBinary() + _ = yym4346 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + } + if yyr4338 || yy2arr4338 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4347 := z.DecBinary() + _ = yym4347 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4348 := r.ContainerType() + if yyct4348 == codecSelferValueTypeMap1234 { + yyl4348 := r.ReadMapStart() + if yyl4348 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4348, d) + } + } else if yyct4348 == codecSelferValueTypeArray1234 { + yyl4348 := r.ReadArrayStart() + if yyl4348 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4348, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4349Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4349Slc + var yyhl4349 bool = l >= 0 + for yyj4349 := 0; ; yyj4349++ { + if yyhl4349 { + if yyj4349 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4349Slc = r.DecodeBytes(yys4349Slc, true, true) + yys4349 := string(yys4349Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4349 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ComponentConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4349) + } // end switch yys4349 + } // end for yyj4349 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4354 int + var yyb4354 bool + var yyhl4354 bool = l >= 0 + yyj4354++ + if yyhl4354 { + yyb4354 = yyj4354 > l + } else { + yyb4354 = r.CheckBreak() + } + if yyb4354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ComponentConditionType(r.DecodeString()) + } + yyj4354++ + if yyhl4354 { + yyb4354 = yyj4354 > l + } else { + yyb4354 = r.CheckBreak() + } + if yyb4354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj4354++ + if yyhl4354 { + yyb4354 = yyj4354 > l + } else { + yyb4354 = r.CheckBreak() + } + if yyb4354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj4354++ + if yyhl4354 { + yyb4354 = yyj4354 > l + } else { + yyb4354 = r.CheckBreak() + } + if yyb4354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + for { + yyj4354++ + if yyhl4354 { + yyb4354 = yyj4354 > l + } else { + yyb4354 = r.CheckBreak() + } + if yyb4354 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4354-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4359 := z.EncBinary() + _ = yym4359 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4360 := !z.EncBinary() + yy2arr4360 := z.EncBasicHandle().StructToArray + var yyq4360 [4]bool + _, _, _ = yysep4360, yyq4360, yy2arr4360 + const yyr4360 bool = false + yyq4360[0] = x.Kind != "" + yyq4360[1] = x.APIVersion != "" + yyq4360[2] = true + yyq4360[3] = len(x.Conditions) != 0 + var yynn4360 int + if yyr4360 || yy2arr4360 { + r.EncodeArrayStart(4) + } else { + yynn4360 = 0 + for _, b := range yyq4360 { + if b { + yynn4360++ + } + } + r.EncodeMapStart(yynn4360) + yynn4360 = 0 + } + if yyr4360 || yy2arr4360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4360[0] { + yym4362 := z.EncBinary() + _ = yym4362 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4360[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4363 := z.EncBinary() + _ = yym4363 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4360 || yy2arr4360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4360[1] { + yym4365 := z.EncBinary() + _ = yym4365 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4360[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4366 := z.EncBinary() + _ = yym4366 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4360 || yy2arr4360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4360[2] { + yy4368 := &x.ObjectMeta + yy4368.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4360[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4369 := &x.ObjectMeta + yy4369.CodecEncodeSelf(e) + } + } + if yyr4360 || yy2arr4360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4360[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4371 := z.EncBinary() + _ = yym4371 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4360[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4372 := z.EncBinary() + _ = yym4372 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } + } + if yyr4360 || yy2arr4360 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4373 := z.DecBinary() + _ = yym4373 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4374 := r.ContainerType() + if yyct4374 == codecSelferValueTypeMap1234 { + yyl4374 := r.ReadMapStart() + if yyl4374 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4374, d) + } + } else if yyct4374 == codecSelferValueTypeArray1234 { + yyl4374 := r.ReadArrayStart() + if yyl4374 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4374, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4375Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4375Slc + var yyhl4375 bool = l >= 0 + for yyj4375 := 0; ; yyj4375++ { + if yyhl4375 { + if yyj4375 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4375Slc = r.DecodeBytes(yys4375Slc, true, true) + yys4375 := string(yys4375Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4375 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4378 := &x.ObjectMeta + yyv4378.CodecDecodeSelf(d) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4379 := &x.Conditions + yym4380 := z.DecBinary() + _ = yym4380 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv4379), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4375) + } // end switch yys4375 + } // end for yyj4375 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4381 int + var yyb4381 bool + var yyhl4381 bool = l >= 0 + yyj4381++ + if yyhl4381 { + yyb4381 = yyj4381 > l + } else { + yyb4381 = r.CheckBreak() + } + if yyb4381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4381++ + if yyhl4381 { + yyb4381 = yyj4381 > l + } else { + yyb4381 = r.CheckBreak() + } + if yyb4381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4381++ + if yyhl4381 { + yyb4381 = yyj4381 > l + } else { + yyb4381 = r.CheckBreak() + } + if yyb4381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4384 := &x.ObjectMeta + yyv4384.CodecDecodeSelf(d) + } + yyj4381++ + if yyhl4381 { + yyb4381 = yyj4381 > l + } else { + yyb4381 = r.CheckBreak() + } + if yyb4381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4385 := &x.Conditions + yym4386 := z.DecBinary() + _ = yym4386 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv4385), d) + } + } + for { + yyj4381++ + if yyhl4381 { + yyb4381 = yyj4381 > l + } else { + yyb4381 = r.CheckBreak() + } + if yyb4381 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4381-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4387 := z.EncBinary() + _ = yym4387 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4388 := !z.EncBinary() + yy2arr4388 := z.EncBasicHandle().StructToArray + var yyq4388 [4]bool + _, _, _ = yysep4388, yyq4388, yy2arr4388 + const yyr4388 bool = false + yyq4388[0] = x.Kind != "" + yyq4388[1] = x.APIVersion != "" + yyq4388[2] = true + var yynn4388 int + if yyr4388 || yy2arr4388 { + r.EncodeArrayStart(4) + } else { + yynn4388 = 1 + for _, b := range yyq4388 { + if b { + yynn4388++ + } + } + r.EncodeMapStart(yynn4388) + yynn4388 = 0 + } + if yyr4388 || yy2arr4388 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4388[0] { + yym4390 := z.EncBinary() + _ = yym4390 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4388[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4391 := z.EncBinary() + _ = yym4391 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4388 || yy2arr4388 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4388[1] { + yym4393 := z.EncBinary() + _ = yym4393 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4388[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4394 := z.EncBinary() + _ = yym4394 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4388 || yy2arr4388 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4388[2] { + yy4396 := &x.ListMeta + yym4397 := z.EncBinary() + _ = yym4397 + if false { + } else if z.HasExtensions() && z.EncExt(yy4396) { + } else { + z.EncFallback(yy4396) + } + } else { + r.EncodeNil() + } + } else { + if yyq4388[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4398 := &x.ListMeta + yym4399 := z.EncBinary() + _ = yym4399 + if false { + } else if z.HasExtensions() && z.EncExt(yy4398) { + } else { + z.EncFallback(yy4398) + } + } + } + if yyr4388 || yy2arr4388 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4401 := z.EncBinary() + _ = yym4401 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4402 := z.EncBinary() + _ = yym4402 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } + if yyr4388 || yy2arr4388 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4403 := z.DecBinary() + _ = yym4403 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4404 := r.ContainerType() + if yyct4404 == codecSelferValueTypeMap1234 { + yyl4404 := r.ReadMapStart() + if yyl4404 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4404, d) + } + } else if yyct4404 == codecSelferValueTypeArray1234 { + yyl4404 := r.ReadArrayStart() + if yyl4404 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4404, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4405Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4405Slc + var yyhl4405 bool = l >= 0 + for yyj4405 := 0; ; yyj4405++ { + if yyhl4405 { + if yyj4405 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4405Slc = r.DecodeBytes(yys4405Slc, true, true) + yys4405 := string(yys4405Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4405 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4408 := &x.ListMeta + yym4409 := z.DecBinary() + _ = yym4409 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4408) { + } else { + z.DecFallback(yyv4408, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4410 := &x.Items + yym4411 := z.DecBinary() + _ = yym4411 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv4410), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4405) + } // end switch yys4405 + } // end for yyj4405 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4412 int + var yyb4412 bool + var yyhl4412 bool = l >= 0 + yyj4412++ + if yyhl4412 { + yyb4412 = yyj4412 > l + } else { + yyb4412 = r.CheckBreak() + } + if yyb4412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4412++ + if yyhl4412 { + yyb4412 = yyj4412 > l + } else { + yyb4412 = r.CheckBreak() + } + if yyb4412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4412++ + if yyhl4412 { + yyb4412 = yyj4412 > l + } else { + yyb4412 = r.CheckBreak() + } + if yyb4412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4415 := &x.ListMeta + yym4416 := z.DecBinary() + _ = yym4416 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4415) { + } else { + z.DecFallback(yyv4415, false) + } + } + yyj4412++ + if yyhl4412 { + yyb4412 = yyj4412 > l + } else { + yyb4412 = r.CheckBreak() + } + if yyb4412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4417 := &x.Items + yym4418 := z.DecBinary() + _ = yym4418 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv4417), d) + } + } + for { + yyj4412++ + if yyhl4412 { + yyb4412 = yyj4412 > l + } else { + yyb4412 = r.CheckBreak() + } + if yyb4412 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4412-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4419 := z.EncBinary() + _ = yym4419 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4420 := !z.EncBinary() + yy2arr4420 := z.EncBasicHandle().StructToArray + var yyq4420 [6]bool + _, _, _ = yysep4420, yyq4420, yy2arr4420 + const yyr4420 bool = false + yyq4420[0] = x.Capabilities != nil + yyq4420[1] = x.Privileged != nil + yyq4420[2] = x.SELinuxOptions != nil + yyq4420[3] = x.RunAsUser != nil + yyq4420[4] = x.RunAsNonRoot != nil + yyq4420[5] = x.ReadOnlyRootFilesystem != nil + var yynn4420 int + if yyr4420 || yy2arr4420 { + r.EncodeArrayStart(6) + } else { + yynn4420 = 0 + for _, b := range yyq4420 { + if b { + yynn4420++ + } + } + r.EncodeMapStart(yynn4420) + yynn4420 = 0 + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[0] { + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[1] { + if x.Privileged == nil { + r.EncodeNil() + } else { + yy4423 := *x.Privileged + yym4424 := z.EncBinary() + _ = yym4424 + if false { + } else { + r.EncodeBool(bool(yy4423)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Privileged == nil { + r.EncodeNil() + } else { + yy4425 := *x.Privileged + yym4426 := z.EncBinary() + _ = yym4426 + if false { + } else { + r.EncodeBool(bool(yy4425)) + } + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[2] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[3] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy4429 := *x.RunAsUser + yym4430 := z.EncBinary() + _ = yym4430 + if false { + } else { + r.EncodeInt(int64(yy4429)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy4431 := *x.RunAsUser + yym4432 := z.EncBinary() + _ = yym4432 + if false { + } else { + r.EncodeInt(int64(yy4431)) + } + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[4] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy4434 := *x.RunAsNonRoot + yym4435 := z.EncBinary() + _ = yym4435 + if false { + } else { + r.EncodeBool(bool(yy4434)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy4436 := *x.RunAsNonRoot + yym4437 := z.EncBinary() + _ = yym4437 + if false { + } else { + r.EncodeBool(bool(yy4436)) + } + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4420[5] { + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy4439 := *x.ReadOnlyRootFilesystem + yym4440 := z.EncBinary() + _ = yym4440 + if false { + } else { + r.EncodeBool(bool(yy4439)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4420[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy4441 := *x.ReadOnlyRootFilesystem + yym4442 := z.EncBinary() + _ = yym4442 + if false { + } else { + r.EncodeBool(bool(yy4441)) + } + } + } + } + if yyr4420 || yy2arr4420 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4443 := z.DecBinary() + _ = yym4443 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4444 := r.ContainerType() + if yyct4444 == codecSelferValueTypeMap1234 { + yyl4444 := r.ReadMapStart() + if yyl4444 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4444, d) + } + } else if yyct4444 == codecSelferValueTypeArray1234 { + yyl4444 := r.ReadArrayStart() + if yyl4444 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4444, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4445Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4445Slc + var yyhl4445 bool = l >= 0 + for yyj4445 := 0; ; yyj4445++ { + if yyhl4445 { + if yyj4445 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4445Slc = r.DecodeBytes(yys4445Slc, true, true) + yys4445 := string(yys4445Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4445 { + case "capabilities": + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + case "privileged": + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym4448 := z.DecBinary() + _ = yym4448 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym4451 := z.DecBinary() + _ = yym4451 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym4453 := z.DecBinary() + _ = yym4453 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym4455 := z.DecBinary() + _ = yym4455 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys4445) + } // end switch yys4445 + } // end for yyj4445 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4456 int + var yyb4456 bool + var yyhl4456 bool = l >= 0 + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym4459 := z.DecBinary() + _ = yym4459 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym4462 := z.DecBinary() + _ = yym4462 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym4464 := z.DecBinary() + _ = yym4464 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym4466 := z.DecBinary() + _ = yym4466 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + for { + yyj4456++ + if yyhl4456 { + yyb4456 = yyj4456 > l + } else { + yyb4456 = r.CheckBreak() + } + if yyb4456 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4456-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SELinuxOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4467 := z.EncBinary() + _ = yym4467 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4468 := !z.EncBinary() + yy2arr4468 := z.EncBasicHandle().StructToArray + var yyq4468 [4]bool + _, _, _ = yysep4468, yyq4468, yy2arr4468 + const yyr4468 bool = false + yyq4468[0] = x.User != "" + yyq4468[1] = x.Role != "" + yyq4468[2] = x.Type != "" + yyq4468[3] = x.Level != "" + var yynn4468 int + if yyr4468 || yy2arr4468 { + r.EncodeArrayStart(4) + } else { + yynn4468 = 0 + for _, b := range yyq4468 { + if b { + yynn4468++ + } + } + r.EncodeMapStart(yynn4468) + yynn4468 = 0 + } + if yyr4468 || yy2arr4468 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4468[0] { + yym4470 := z.EncBinary() + _ = yym4470 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4468[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4471 := z.EncBinary() + _ = yym4471 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr4468 || yy2arr4468 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4468[1] { + yym4473 := z.EncBinary() + _ = yym4473 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4468[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("role")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4474 := z.EncBinary() + _ = yym4474 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } + } + if yyr4468 || yy2arr4468 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4468[2] { + yym4476 := z.EncBinary() + _ = yym4476 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4468[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4477 := z.EncBinary() + _ = yym4477 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr4468 || yy2arr4468 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4468[3] { + yym4479 := z.EncBinary() + _ = yym4479 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4468[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("level")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4480 := z.EncBinary() + _ = yym4480 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } + } + if yyr4468 || yy2arr4468 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4481 := z.DecBinary() + _ = yym4481 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4482 := r.ContainerType() + if yyct4482 == codecSelferValueTypeMap1234 { + yyl4482 := r.ReadMapStart() + if yyl4482 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4482, d) + } + } else if yyct4482 == codecSelferValueTypeArray1234 { + yyl4482 := r.ReadArrayStart() + if yyl4482 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4482, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4483Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4483Slc + var yyhl4483 bool = l >= 0 + for yyj4483 := 0; ; yyj4483++ { + if yyhl4483 { + if yyj4483 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4483Slc = r.DecodeBytes(yys4483Slc, true, true) + yys4483 := string(yys4483Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4483 { + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "role": + if r.TryDecodeAsNil() { + x.Role = "" + } else { + x.Role = string(r.DecodeString()) + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + case "level": + if r.TryDecodeAsNil() { + x.Level = "" + } else { + x.Level = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4483) + } // end switch yys4483 + } // end for yyj4483 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4488 int + var yyb4488 bool + var yyhl4488 bool = l >= 0 + yyj4488++ + if yyhl4488 { + yyb4488 = yyj4488 > l + } else { + yyb4488 = r.CheckBreak() + } + if yyb4488 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj4488++ + if yyhl4488 { + yyb4488 = yyj4488 > l + } else { + yyb4488 = r.CheckBreak() + } + if yyb4488 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Role = "" + } else { + x.Role = string(r.DecodeString()) + } + yyj4488++ + if yyhl4488 { + yyb4488 = yyj4488 > l + } else { + yyb4488 = r.CheckBreak() + } + if yyb4488 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + yyj4488++ + if yyhl4488 { + yyb4488 = yyj4488 > l + } else { + yyb4488 = r.CheckBreak() + } + if yyb4488 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Level = "" + } else { + x.Level = string(r.DecodeString()) + } + for { + yyj4488++ + if yyhl4488 { + yyb4488 = yyj4488 > l + } else { + yyb4488 = r.CheckBreak() + } + if yyb4488 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4488-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RangeAllocation) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4493 := z.EncBinary() + _ = yym4493 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4494 := !z.EncBinary() + yy2arr4494 := z.EncBasicHandle().StructToArray + var yyq4494 [5]bool + _, _, _ = yysep4494, yyq4494, yy2arr4494 + const yyr4494 bool = false + yyq4494[0] = x.Kind != "" + yyq4494[1] = x.APIVersion != "" + yyq4494[2] = true + var yynn4494 int + if yyr4494 || yy2arr4494 { + r.EncodeArrayStart(5) + } else { + yynn4494 = 2 + for _, b := range yyq4494 { + if b { + yynn4494++ + } + } + r.EncodeMapStart(yynn4494) + yynn4494 = 0 + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4494[0] { + yym4496 := z.EncBinary() + _ = yym4496 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4494[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4497 := z.EncBinary() + _ = yym4497 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4494[1] { + yym4499 := z.EncBinary() + _ = yym4499 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4494[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4500 := z.EncBinary() + _ = yym4500 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4494[2] { + yy4502 := &x.ObjectMeta + yy4502.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4494[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4503 := &x.ObjectMeta + yy4503.CodecEncodeSelf(e) + } + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4505 := z.EncBinary() + _ = yym4505 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("range")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4506 := z.EncBinary() + _ = yym4506 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4508 := z.EncBinary() + _ = yym4508 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4509 := z.EncBinary() + _ = yym4509 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + if yyr4494 || yy2arr4494 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RangeAllocation) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4510 := z.DecBinary() + _ = yym4510 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4511 := r.ContainerType() + if yyct4511 == codecSelferValueTypeMap1234 { + yyl4511 := r.ReadMapStart() + if yyl4511 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4511, d) + } + } else if yyct4511 == codecSelferValueTypeArray1234 { + yyl4511 := r.ReadArrayStart() + if yyl4511 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4511, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RangeAllocation) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4512Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4512Slc + var yyhl4512 bool = l >= 0 + for yyj4512 := 0; ; yyj4512++ { + if yyhl4512 { + if yyj4512 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4512Slc = r.DecodeBytes(yys4512Slc, true, true) + yys4512 := string(yys4512Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4512 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4515 := &x.ObjectMeta + yyv4515.CodecDecodeSelf(d) + } + case "range": + if r.TryDecodeAsNil() { + x.Range = "" + } else { + x.Range = string(r.DecodeString()) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4517 := &x.Data + yym4518 := z.DecBinary() + _ = yym4518 + if false { + } else { + *yyv4517 = r.DecodeBytes(*(*[]byte)(yyv4517), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys4512) + } // end switch yys4512 + } // end for yyj4512 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RangeAllocation) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4519 int + var yyb4519 bool + var yyhl4519 bool = l >= 0 + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4522 := &x.ObjectMeta + yyv4522.CodecDecodeSelf(d) + } + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Range = "" + } else { + x.Range = string(r.DecodeString()) + } + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4524 := &x.Data + yym4525 := z.DecBinary() + _ = yym4525 + if false { + } else { + *yyv4524 = r.DecodeBytes(*(*[]byte)(yyv4524), false, false) + } + } + for { + yyj4519++ + if yyhl4519 { + yyb4519 = yyj4519 > l + } else { + yyb4519 = r.CheckBreak() + } + if yyb4519 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4519-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceOwnerReference(v []OwnerReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4526 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4527 := &yyv4526 + yy4527.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceOwnerReference(v *[]OwnerReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4528 := *v + yyh4528, yyl4528 := z.DecSliceHelperStart() + var yyc4528 bool + if yyl4528 == 0 { + if yyv4528 == nil { + yyv4528 = []OwnerReference{} + yyc4528 = true + } else if len(yyv4528) != 0 { + yyv4528 = yyv4528[:0] + yyc4528 = true + } + } else if yyl4528 > 0 { + var yyrr4528, yyrl4528 int + var yyrt4528 bool + if yyl4528 > cap(yyv4528) { + + yyrg4528 := len(yyv4528) > 0 + yyv24528 := yyv4528 + yyrl4528, yyrt4528 = z.DecInferLen(yyl4528, z.DecBasicHandle().MaxInitLen, 72) + if yyrt4528 { + if yyrl4528 <= cap(yyv4528) { + yyv4528 = yyv4528[:yyrl4528] + } else { + yyv4528 = make([]OwnerReference, yyrl4528) + } + } else { + yyv4528 = make([]OwnerReference, yyrl4528) + } + yyc4528 = true + yyrr4528 = len(yyv4528) + if yyrg4528 { + copy(yyv4528, yyv24528) + } + } else if yyl4528 != len(yyv4528) { + yyv4528 = yyv4528[:yyl4528] + yyc4528 = true + } + yyj4528 := 0 + for ; yyj4528 < yyrr4528; yyj4528++ { + yyh4528.ElemContainerState(yyj4528) + if r.TryDecodeAsNil() { + yyv4528[yyj4528] = OwnerReference{} + } else { + yyv4529 := &yyv4528[yyj4528] + yyv4529.CodecDecodeSelf(d) + } + + } + if yyrt4528 { + for ; yyj4528 < yyl4528; yyj4528++ { + yyv4528 = append(yyv4528, OwnerReference{}) + yyh4528.ElemContainerState(yyj4528) + if r.TryDecodeAsNil() { + yyv4528[yyj4528] = OwnerReference{} + } else { + yyv4530 := &yyv4528[yyj4528] + yyv4530.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4528 := 0 + for ; !r.CheckBreak(); yyj4528++ { + + if yyj4528 >= len(yyv4528) { + yyv4528 = append(yyv4528, OwnerReference{}) // var yyz4528 OwnerReference + yyc4528 = true + } + yyh4528.ElemContainerState(yyj4528) + if yyj4528 < len(yyv4528) { + if r.TryDecodeAsNil() { + yyv4528[yyj4528] = OwnerReference{} + } else { + yyv4531 := &yyv4528[yyj4528] + yyv4531.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4528 < len(yyv4528) { + yyv4528 = yyv4528[:yyj4528] + yyc4528 = true + } else if yyj4528 == 0 && yyv4528 == nil { + yyv4528 = []OwnerReference{} + yyc4528 = true + } + } + yyh4528.End() + if yyc4528 { + *v = yyv4528 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeAccessMode(v []PersistentVolumeAccessMode, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4532 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4532.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeAccessMode(v *[]PersistentVolumeAccessMode, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4533 := *v + yyh4533, yyl4533 := z.DecSliceHelperStart() + var yyc4533 bool + if yyl4533 == 0 { + if yyv4533 == nil { + yyv4533 = []PersistentVolumeAccessMode{} + yyc4533 = true + } else if len(yyv4533) != 0 { + yyv4533 = yyv4533[:0] + yyc4533 = true + } + } else if yyl4533 > 0 { + var yyrr4533, yyrl4533 int + var yyrt4533 bool + if yyl4533 > cap(yyv4533) { + + yyrl4533, yyrt4533 = z.DecInferLen(yyl4533, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4533 { + if yyrl4533 <= cap(yyv4533) { + yyv4533 = yyv4533[:yyrl4533] + } else { + yyv4533 = make([]PersistentVolumeAccessMode, yyrl4533) + } + } else { + yyv4533 = make([]PersistentVolumeAccessMode, yyrl4533) + } + yyc4533 = true + yyrr4533 = len(yyv4533) + } else if yyl4533 != len(yyv4533) { + yyv4533 = yyv4533[:yyl4533] + yyc4533 = true + } + yyj4533 := 0 + for ; yyj4533 < yyrr4533; yyj4533++ { + yyh4533.ElemContainerState(yyj4533) + if r.TryDecodeAsNil() { + yyv4533[yyj4533] = "" + } else { + yyv4533[yyj4533] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } + if yyrt4533 { + for ; yyj4533 < yyl4533; yyj4533++ { + yyv4533 = append(yyv4533, "") + yyh4533.ElemContainerState(yyj4533) + if r.TryDecodeAsNil() { + yyv4533[yyj4533] = "" + } else { + yyv4533[yyj4533] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } + } + + } else { + yyj4533 := 0 + for ; !r.CheckBreak(); yyj4533++ { + + if yyj4533 >= len(yyv4533) { + yyv4533 = append(yyv4533, "") // var yyz4533 PersistentVolumeAccessMode + yyc4533 = true + } + yyh4533.ElemContainerState(yyj4533) + if yyj4533 < len(yyv4533) { + if r.TryDecodeAsNil() { + yyv4533[yyj4533] = "" + } else { + yyv4533[yyj4533] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4533 < len(yyv4533) { + yyv4533 = yyv4533[:yyj4533] + yyc4533 = true + } else if yyj4533 == 0 && yyv4533 == nil { + yyv4533 = []PersistentVolumeAccessMode{} + yyc4533 = true + } + } + yyh4533.End() + if yyc4533 { + *v = yyv4533 + } +} + +func (x codecSelfer1234) encSlicePersistentVolume(v []PersistentVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4537 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4538 := &yyv4537 + yy4538.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolume(v *[]PersistentVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4539 := *v + yyh4539, yyl4539 := z.DecSliceHelperStart() + var yyc4539 bool + if yyl4539 == 0 { + if yyv4539 == nil { + yyv4539 = []PersistentVolume{} + yyc4539 = true + } else if len(yyv4539) != 0 { + yyv4539 = yyv4539[:0] + yyc4539 = true + } + } else if yyl4539 > 0 { + var yyrr4539, yyrl4539 int + var yyrt4539 bool + if yyl4539 > cap(yyv4539) { + + yyrg4539 := len(yyv4539) > 0 + yyv24539 := yyv4539 + yyrl4539, yyrt4539 = z.DecInferLen(yyl4539, z.DecBasicHandle().MaxInitLen, 488) + if yyrt4539 { + if yyrl4539 <= cap(yyv4539) { + yyv4539 = yyv4539[:yyrl4539] + } else { + yyv4539 = make([]PersistentVolume, yyrl4539) + } + } else { + yyv4539 = make([]PersistentVolume, yyrl4539) + } + yyc4539 = true + yyrr4539 = len(yyv4539) + if yyrg4539 { + copy(yyv4539, yyv24539) + } + } else if yyl4539 != len(yyv4539) { + yyv4539 = yyv4539[:yyl4539] + yyc4539 = true + } + yyj4539 := 0 + for ; yyj4539 < yyrr4539; yyj4539++ { + yyh4539.ElemContainerState(yyj4539) + if r.TryDecodeAsNil() { + yyv4539[yyj4539] = PersistentVolume{} + } else { + yyv4540 := &yyv4539[yyj4539] + yyv4540.CodecDecodeSelf(d) + } + + } + if yyrt4539 { + for ; yyj4539 < yyl4539; yyj4539++ { + yyv4539 = append(yyv4539, PersistentVolume{}) + yyh4539.ElemContainerState(yyj4539) + if r.TryDecodeAsNil() { + yyv4539[yyj4539] = PersistentVolume{} + } else { + yyv4541 := &yyv4539[yyj4539] + yyv4541.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4539 := 0 + for ; !r.CheckBreak(); yyj4539++ { + + if yyj4539 >= len(yyv4539) { + yyv4539 = append(yyv4539, PersistentVolume{}) // var yyz4539 PersistentVolume + yyc4539 = true + } + yyh4539.ElemContainerState(yyj4539) + if yyj4539 < len(yyv4539) { + if r.TryDecodeAsNil() { + yyv4539[yyj4539] = PersistentVolume{} + } else { + yyv4542 := &yyv4539[yyj4539] + yyv4542.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4539 < len(yyv4539) { + yyv4539 = yyv4539[:yyj4539] + yyc4539 = true + } else if yyj4539 == 0 && yyv4539 == nil { + yyv4539 = []PersistentVolume{} + yyc4539 = true + } + } + yyh4539.End() + if yyc4539 { + *v = yyv4539 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeClaim(v []PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4543 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4544 := &yyv4543 + yy4544.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeClaim(v *[]PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4545 := *v + yyh4545, yyl4545 := z.DecSliceHelperStart() + var yyc4545 bool + if yyl4545 == 0 { + if yyv4545 == nil { + yyv4545 = []PersistentVolumeClaim{} + yyc4545 = true + } else if len(yyv4545) != 0 { + yyv4545 = yyv4545[:0] + yyc4545 = true + } + } else if yyl4545 > 0 { + var yyrr4545, yyrl4545 int + var yyrt4545 bool + if yyl4545 > cap(yyv4545) { + + yyrg4545 := len(yyv4545) > 0 + yyv24545 := yyv4545 + yyrl4545, yyrt4545 = z.DecInferLen(yyl4545, z.DecBasicHandle().MaxInitLen, 368) + if yyrt4545 { + if yyrl4545 <= cap(yyv4545) { + yyv4545 = yyv4545[:yyrl4545] + } else { + yyv4545 = make([]PersistentVolumeClaim, yyrl4545) + } + } else { + yyv4545 = make([]PersistentVolumeClaim, yyrl4545) + } + yyc4545 = true + yyrr4545 = len(yyv4545) + if yyrg4545 { + copy(yyv4545, yyv24545) + } + } else if yyl4545 != len(yyv4545) { + yyv4545 = yyv4545[:yyl4545] + yyc4545 = true + } + yyj4545 := 0 + for ; yyj4545 < yyrr4545; yyj4545++ { + yyh4545.ElemContainerState(yyj4545) + if r.TryDecodeAsNil() { + yyv4545[yyj4545] = PersistentVolumeClaim{} + } else { + yyv4546 := &yyv4545[yyj4545] + yyv4546.CodecDecodeSelf(d) + } + + } + if yyrt4545 { + for ; yyj4545 < yyl4545; yyj4545++ { + yyv4545 = append(yyv4545, PersistentVolumeClaim{}) + yyh4545.ElemContainerState(yyj4545) + if r.TryDecodeAsNil() { + yyv4545[yyj4545] = PersistentVolumeClaim{} + } else { + yyv4547 := &yyv4545[yyj4545] + yyv4547.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4545 := 0 + for ; !r.CheckBreak(); yyj4545++ { + + if yyj4545 >= len(yyv4545) { + yyv4545 = append(yyv4545, PersistentVolumeClaim{}) // var yyz4545 PersistentVolumeClaim + yyc4545 = true + } + yyh4545.ElemContainerState(yyj4545) + if yyj4545 < len(yyv4545) { + if r.TryDecodeAsNil() { + yyv4545[yyj4545] = PersistentVolumeClaim{} + } else { + yyv4548 := &yyv4545[yyj4545] + yyv4548.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4545 < len(yyv4545) { + yyv4545 = yyv4545[:yyj4545] + yyc4545 = true + } else if yyj4545 == 0 && yyv4545 == nil { + yyv4545 = []PersistentVolumeClaim{} + yyc4545 = true + } + } + yyh4545.End() + if yyc4545 { + *v = yyv4545 + } +} + +func (x codecSelfer1234) encSliceKeyToPath(v []KeyToPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4549 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4550 := &yyv4549 + yy4550.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceKeyToPath(v *[]KeyToPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4551 := *v + yyh4551, yyl4551 := z.DecSliceHelperStart() + var yyc4551 bool + if yyl4551 == 0 { + if yyv4551 == nil { + yyv4551 = []KeyToPath{} + yyc4551 = true + } else if len(yyv4551) != 0 { + yyv4551 = yyv4551[:0] + yyc4551 = true + } + } else if yyl4551 > 0 { + var yyrr4551, yyrl4551 int + var yyrt4551 bool + if yyl4551 > cap(yyv4551) { + + yyrg4551 := len(yyv4551) > 0 + yyv24551 := yyv4551 + yyrl4551, yyrt4551 = z.DecInferLen(yyl4551, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4551 { + if yyrl4551 <= cap(yyv4551) { + yyv4551 = yyv4551[:yyrl4551] + } else { + yyv4551 = make([]KeyToPath, yyrl4551) + } + } else { + yyv4551 = make([]KeyToPath, yyrl4551) + } + yyc4551 = true + yyrr4551 = len(yyv4551) + if yyrg4551 { + copy(yyv4551, yyv24551) + } + } else if yyl4551 != len(yyv4551) { + yyv4551 = yyv4551[:yyl4551] + yyc4551 = true + } + yyj4551 := 0 + for ; yyj4551 < yyrr4551; yyj4551++ { + yyh4551.ElemContainerState(yyj4551) + if r.TryDecodeAsNil() { + yyv4551[yyj4551] = KeyToPath{} + } else { + yyv4552 := &yyv4551[yyj4551] + yyv4552.CodecDecodeSelf(d) + } + + } + if yyrt4551 { + for ; yyj4551 < yyl4551; yyj4551++ { + yyv4551 = append(yyv4551, KeyToPath{}) + yyh4551.ElemContainerState(yyj4551) + if r.TryDecodeAsNil() { + yyv4551[yyj4551] = KeyToPath{} + } else { + yyv4553 := &yyv4551[yyj4551] + yyv4553.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4551 := 0 + for ; !r.CheckBreak(); yyj4551++ { + + if yyj4551 >= len(yyv4551) { + yyv4551 = append(yyv4551, KeyToPath{}) // var yyz4551 KeyToPath + yyc4551 = true + } + yyh4551.ElemContainerState(yyj4551) + if yyj4551 < len(yyv4551) { + if r.TryDecodeAsNil() { + yyv4551[yyj4551] = KeyToPath{} + } else { + yyv4554 := &yyv4551[yyj4551] + yyv4554.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4551 < len(yyv4551) { + yyv4551 = yyv4551[:yyj4551] + yyc4551 = true + } else if yyj4551 == 0 && yyv4551 == nil { + yyv4551 = []KeyToPath{} + yyc4551 = true + } + } + yyh4551.End() + if yyc4551 { + *v = yyv4551 + } +} + +func (x codecSelfer1234) encSliceDownwardAPIVolumeFile(v []DownwardAPIVolumeFile, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4555 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4556 := &yyv4555 + yy4556.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDownwardAPIVolumeFile(v *[]DownwardAPIVolumeFile, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4557 := *v + yyh4557, yyl4557 := z.DecSliceHelperStart() + var yyc4557 bool + if yyl4557 == 0 { + if yyv4557 == nil { + yyv4557 = []DownwardAPIVolumeFile{} + yyc4557 = true + } else if len(yyv4557) != 0 { + yyv4557 = yyv4557[:0] + yyc4557 = true + } + } else if yyl4557 > 0 { + var yyrr4557, yyrl4557 int + var yyrt4557 bool + if yyl4557 > cap(yyv4557) { + + yyrg4557 := len(yyv4557) > 0 + yyv24557 := yyv4557 + yyrl4557, yyrt4557 = z.DecInferLen(yyl4557, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4557 { + if yyrl4557 <= cap(yyv4557) { + yyv4557 = yyv4557[:yyrl4557] + } else { + yyv4557 = make([]DownwardAPIVolumeFile, yyrl4557) + } + } else { + yyv4557 = make([]DownwardAPIVolumeFile, yyrl4557) + } + yyc4557 = true + yyrr4557 = len(yyv4557) + if yyrg4557 { + copy(yyv4557, yyv24557) + } + } else if yyl4557 != len(yyv4557) { + yyv4557 = yyv4557[:yyl4557] + yyc4557 = true + } + yyj4557 := 0 + for ; yyj4557 < yyrr4557; yyj4557++ { + yyh4557.ElemContainerState(yyj4557) + if r.TryDecodeAsNil() { + yyv4557[yyj4557] = DownwardAPIVolumeFile{} + } else { + yyv4558 := &yyv4557[yyj4557] + yyv4558.CodecDecodeSelf(d) + } + + } + if yyrt4557 { + for ; yyj4557 < yyl4557; yyj4557++ { + yyv4557 = append(yyv4557, DownwardAPIVolumeFile{}) + yyh4557.ElemContainerState(yyj4557) + if r.TryDecodeAsNil() { + yyv4557[yyj4557] = DownwardAPIVolumeFile{} + } else { + yyv4559 := &yyv4557[yyj4557] + yyv4559.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4557 := 0 + for ; !r.CheckBreak(); yyj4557++ { + + if yyj4557 >= len(yyv4557) { + yyv4557 = append(yyv4557, DownwardAPIVolumeFile{}) // var yyz4557 DownwardAPIVolumeFile + yyc4557 = true + } + yyh4557.ElemContainerState(yyj4557) + if yyj4557 < len(yyv4557) { + if r.TryDecodeAsNil() { + yyv4557[yyj4557] = DownwardAPIVolumeFile{} + } else { + yyv4560 := &yyv4557[yyj4557] + yyv4560.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4557 < len(yyv4557) { + yyv4557 = yyv4557[:yyj4557] + yyc4557 = true + } else if yyj4557 == 0 && yyv4557 == nil { + yyv4557 = []DownwardAPIVolumeFile{} + yyc4557 = true + } + } + yyh4557.End() + if yyc4557 { + *v = yyv4557 + } +} + +func (x codecSelfer1234) encSliceHTTPHeader(v []HTTPHeader, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4561 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4562 := &yyv4561 + yy4562.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPHeader(v *[]HTTPHeader, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4563 := *v + yyh4563, yyl4563 := z.DecSliceHelperStart() + var yyc4563 bool + if yyl4563 == 0 { + if yyv4563 == nil { + yyv4563 = []HTTPHeader{} + yyc4563 = true + } else if len(yyv4563) != 0 { + yyv4563 = yyv4563[:0] + yyc4563 = true + } + } else if yyl4563 > 0 { + var yyrr4563, yyrl4563 int + var yyrt4563 bool + if yyl4563 > cap(yyv4563) { + + yyrg4563 := len(yyv4563) > 0 + yyv24563 := yyv4563 + yyrl4563, yyrt4563 = z.DecInferLen(yyl4563, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4563 { + if yyrl4563 <= cap(yyv4563) { + yyv4563 = yyv4563[:yyrl4563] + } else { + yyv4563 = make([]HTTPHeader, yyrl4563) + } + } else { + yyv4563 = make([]HTTPHeader, yyrl4563) + } + yyc4563 = true + yyrr4563 = len(yyv4563) + if yyrg4563 { + copy(yyv4563, yyv24563) + } + } else if yyl4563 != len(yyv4563) { + yyv4563 = yyv4563[:yyl4563] + yyc4563 = true + } + yyj4563 := 0 + for ; yyj4563 < yyrr4563; yyj4563++ { + yyh4563.ElemContainerState(yyj4563) + if r.TryDecodeAsNil() { + yyv4563[yyj4563] = HTTPHeader{} + } else { + yyv4564 := &yyv4563[yyj4563] + yyv4564.CodecDecodeSelf(d) + } + + } + if yyrt4563 { + for ; yyj4563 < yyl4563; yyj4563++ { + yyv4563 = append(yyv4563, HTTPHeader{}) + yyh4563.ElemContainerState(yyj4563) + if r.TryDecodeAsNil() { + yyv4563[yyj4563] = HTTPHeader{} + } else { + yyv4565 := &yyv4563[yyj4563] + yyv4565.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4563 := 0 + for ; !r.CheckBreak(); yyj4563++ { + + if yyj4563 >= len(yyv4563) { + yyv4563 = append(yyv4563, HTTPHeader{}) // var yyz4563 HTTPHeader + yyc4563 = true + } + yyh4563.ElemContainerState(yyj4563) + if yyj4563 < len(yyv4563) { + if r.TryDecodeAsNil() { + yyv4563[yyj4563] = HTTPHeader{} + } else { + yyv4566 := &yyv4563[yyj4563] + yyv4566.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4563 < len(yyv4563) { + yyv4563 = yyv4563[:yyj4563] + yyc4563 = true + } else if yyj4563 == 0 && yyv4563 == nil { + yyv4563 = []HTTPHeader{} + yyc4563 = true + } + } + yyh4563.End() + if yyc4563 { + *v = yyv4563 + } +} + +func (x codecSelfer1234) encSliceCapability(v []Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4567 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4567.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCapability(v *[]Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4568 := *v + yyh4568, yyl4568 := z.DecSliceHelperStart() + var yyc4568 bool + if yyl4568 == 0 { + if yyv4568 == nil { + yyv4568 = []Capability{} + yyc4568 = true + } else if len(yyv4568) != 0 { + yyv4568 = yyv4568[:0] + yyc4568 = true + } + } else if yyl4568 > 0 { + var yyrr4568, yyrl4568 int + var yyrt4568 bool + if yyl4568 > cap(yyv4568) { + + yyrl4568, yyrt4568 = z.DecInferLen(yyl4568, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4568 { + if yyrl4568 <= cap(yyv4568) { + yyv4568 = yyv4568[:yyrl4568] + } else { + yyv4568 = make([]Capability, yyrl4568) + } + } else { + yyv4568 = make([]Capability, yyrl4568) + } + yyc4568 = true + yyrr4568 = len(yyv4568) + } else if yyl4568 != len(yyv4568) { + yyv4568 = yyv4568[:yyl4568] + yyc4568 = true + } + yyj4568 := 0 + for ; yyj4568 < yyrr4568; yyj4568++ { + yyh4568.ElemContainerState(yyj4568) + if r.TryDecodeAsNil() { + yyv4568[yyj4568] = "" + } else { + yyv4568[yyj4568] = Capability(r.DecodeString()) + } + + } + if yyrt4568 { + for ; yyj4568 < yyl4568; yyj4568++ { + yyv4568 = append(yyv4568, "") + yyh4568.ElemContainerState(yyj4568) + if r.TryDecodeAsNil() { + yyv4568[yyj4568] = "" + } else { + yyv4568[yyj4568] = Capability(r.DecodeString()) + } + + } + } + + } else { + yyj4568 := 0 + for ; !r.CheckBreak(); yyj4568++ { + + if yyj4568 >= len(yyv4568) { + yyv4568 = append(yyv4568, "") // var yyz4568 Capability + yyc4568 = true + } + yyh4568.ElemContainerState(yyj4568) + if yyj4568 < len(yyv4568) { + if r.TryDecodeAsNil() { + yyv4568[yyj4568] = "" + } else { + yyv4568[yyj4568] = Capability(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4568 < len(yyv4568) { + yyv4568 = yyv4568[:yyj4568] + yyc4568 = true + } else if yyj4568 == 0 && yyv4568 == nil { + yyv4568 = []Capability{} + yyc4568 = true + } + } + yyh4568.End() + if yyc4568 { + *v = yyv4568 + } +} + +func (x codecSelfer1234) encSliceContainerPort(v []ContainerPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4572 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4573 := &yyv4572 + yy4573.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerPort(v *[]ContainerPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4574 := *v + yyh4574, yyl4574 := z.DecSliceHelperStart() + var yyc4574 bool + if yyl4574 == 0 { + if yyv4574 == nil { + yyv4574 = []ContainerPort{} + yyc4574 = true + } else if len(yyv4574) != 0 { + yyv4574 = yyv4574[:0] + yyc4574 = true + } + } else if yyl4574 > 0 { + var yyrr4574, yyrl4574 int + var yyrt4574 bool + if yyl4574 > cap(yyv4574) { + + yyrg4574 := len(yyv4574) > 0 + yyv24574 := yyv4574 + yyrl4574, yyrt4574 = z.DecInferLen(yyl4574, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4574 { + if yyrl4574 <= cap(yyv4574) { + yyv4574 = yyv4574[:yyrl4574] + } else { + yyv4574 = make([]ContainerPort, yyrl4574) + } + } else { + yyv4574 = make([]ContainerPort, yyrl4574) + } + yyc4574 = true + yyrr4574 = len(yyv4574) + if yyrg4574 { + copy(yyv4574, yyv24574) + } + } else if yyl4574 != len(yyv4574) { + yyv4574 = yyv4574[:yyl4574] + yyc4574 = true + } + yyj4574 := 0 + for ; yyj4574 < yyrr4574; yyj4574++ { + yyh4574.ElemContainerState(yyj4574) + if r.TryDecodeAsNil() { + yyv4574[yyj4574] = ContainerPort{} + } else { + yyv4575 := &yyv4574[yyj4574] + yyv4575.CodecDecodeSelf(d) + } + + } + if yyrt4574 { + for ; yyj4574 < yyl4574; yyj4574++ { + yyv4574 = append(yyv4574, ContainerPort{}) + yyh4574.ElemContainerState(yyj4574) + if r.TryDecodeAsNil() { + yyv4574[yyj4574] = ContainerPort{} + } else { + yyv4576 := &yyv4574[yyj4574] + yyv4576.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4574 := 0 + for ; !r.CheckBreak(); yyj4574++ { + + if yyj4574 >= len(yyv4574) { + yyv4574 = append(yyv4574, ContainerPort{}) // var yyz4574 ContainerPort + yyc4574 = true + } + yyh4574.ElemContainerState(yyj4574) + if yyj4574 < len(yyv4574) { + if r.TryDecodeAsNil() { + yyv4574[yyj4574] = ContainerPort{} + } else { + yyv4577 := &yyv4574[yyj4574] + yyv4577.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4574 < len(yyv4574) { + yyv4574 = yyv4574[:yyj4574] + yyc4574 = true + } else if yyj4574 == 0 && yyv4574 == nil { + yyv4574 = []ContainerPort{} + yyc4574 = true + } + } + yyh4574.End() + if yyc4574 { + *v = yyv4574 + } +} + +func (x codecSelfer1234) encSliceEnvVar(v []EnvVar, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4578 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4579 := &yyv4578 + yy4579.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEnvVar(v *[]EnvVar, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4580 := *v + yyh4580, yyl4580 := z.DecSliceHelperStart() + var yyc4580 bool + if yyl4580 == 0 { + if yyv4580 == nil { + yyv4580 = []EnvVar{} + yyc4580 = true + } else if len(yyv4580) != 0 { + yyv4580 = yyv4580[:0] + yyc4580 = true + } + } else if yyl4580 > 0 { + var yyrr4580, yyrl4580 int + var yyrt4580 bool + if yyl4580 > cap(yyv4580) { + + yyrg4580 := len(yyv4580) > 0 + yyv24580 := yyv4580 + yyrl4580, yyrt4580 = z.DecInferLen(yyl4580, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4580 { + if yyrl4580 <= cap(yyv4580) { + yyv4580 = yyv4580[:yyrl4580] + } else { + yyv4580 = make([]EnvVar, yyrl4580) + } + } else { + yyv4580 = make([]EnvVar, yyrl4580) + } + yyc4580 = true + yyrr4580 = len(yyv4580) + if yyrg4580 { + copy(yyv4580, yyv24580) + } + } else if yyl4580 != len(yyv4580) { + yyv4580 = yyv4580[:yyl4580] + yyc4580 = true + } + yyj4580 := 0 + for ; yyj4580 < yyrr4580; yyj4580++ { + yyh4580.ElemContainerState(yyj4580) + if r.TryDecodeAsNil() { + yyv4580[yyj4580] = EnvVar{} + } else { + yyv4581 := &yyv4580[yyj4580] + yyv4581.CodecDecodeSelf(d) + } + + } + if yyrt4580 { + for ; yyj4580 < yyl4580; yyj4580++ { + yyv4580 = append(yyv4580, EnvVar{}) + yyh4580.ElemContainerState(yyj4580) + if r.TryDecodeAsNil() { + yyv4580[yyj4580] = EnvVar{} + } else { + yyv4582 := &yyv4580[yyj4580] + yyv4582.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4580 := 0 + for ; !r.CheckBreak(); yyj4580++ { + + if yyj4580 >= len(yyv4580) { + yyv4580 = append(yyv4580, EnvVar{}) // var yyz4580 EnvVar + yyc4580 = true + } + yyh4580.ElemContainerState(yyj4580) + if yyj4580 < len(yyv4580) { + if r.TryDecodeAsNil() { + yyv4580[yyj4580] = EnvVar{} + } else { + yyv4583 := &yyv4580[yyj4580] + yyv4583.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4580 < len(yyv4580) { + yyv4580 = yyv4580[:yyj4580] + yyc4580 = true + } else if yyj4580 == 0 && yyv4580 == nil { + yyv4580 = []EnvVar{} + yyc4580 = true + } + } + yyh4580.End() + if yyc4580 { + *v = yyv4580 + } +} + +func (x codecSelfer1234) encSliceVolumeMount(v []VolumeMount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4584 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4585 := &yyv4584 + yy4585.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolumeMount(v *[]VolumeMount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4586 := *v + yyh4586, yyl4586 := z.DecSliceHelperStart() + var yyc4586 bool + if yyl4586 == 0 { + if yyv4586 == nil { + yyv4586 = []VolumeMount{} + yyc4586 = true + } else if len(yyv4586) != 0 { + yyv4586 = yyv4586[:0] + yyc4586 = true + } + } else if yyl4586 > 0 { + var yyrr4586, yyrl4586 int + var yyrt4586 bool + if yyl4586 > cap(yyv4586) { + + yyrg4586 := len(yyv4586) > 0 + yyv24586 := yyv4586 + yyrl4586, yyrt4586 = z.DecInferLen(yyl4586, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4586 { + if yyrl4586 <= cap(yyv4586) { + yyv4586 = yyv4586[:yyrl4586] + } else { + yyv4586 = make([]VolumeMount, yyrl4586) + } + } else { + yyv4586 = make([]VolumeMount, yyrl4586) + } + yyc4586 = true + yyrr4586 = len(yyv4586) + if yyrg4586 { + copy(yyv4586, yyv24586) + } + } else if yyl4586 != len(yyv4586) { + yyv4586 = yyv4586[:yyl4586] + yyc4586 = true + } + yyj4586 := 0 + for ; yyj4586 < yyrr4586; yyj4586++ { + yyh4586.ElemContainerState(yyj4586) + if r.TryDecodeAsNil() { + yyv4586[yyj4586] = VolumeMount{} + } else { + yyv4587 := &yyv4586[yyj4586] + yyv4587.CodecDecodeSelf(d) + } + + } + if yyrt4586 { + for ; yyj4586 < yyl4586; yyj4586++ { + yyv4586 = append(yyv4586, VolumeMount{}) + yyh4586.ElemContainerState(yyj4586) + if r.TryDecodeAsNil() { + yyv4586[yyj4586] = VolumeMount{} + } else { + yyv4588 := &yyv4586[yyj4586] + yyv4588.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4586 := 0 + for ; !r.CheckBreak(); yyj4586++ { + + if yyj4586 >= len(yyv4586) { + yyv4586 = append(yyv4586, VolumeMount{}) // var yyz4586 VolumeMount + yyc4586 = true + } + yyh4586.ElemContainerState(yyj4586) + if yyj4586 < len(yyv4586) { + if r.TryDecodeAsNil() { + yyv4586[yyj4586] = VolumeMount{} + } else { + yyv4589 := &yyv4586[yyj4586] + yyv4589.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4586 < len(yyv4586) { + yyv4586 = yyv4586[:yyj4586] + yyc4586 = true + } else if yyj4586 == 0 && yyv4586 == nil { + yyv4586 = []VolumeMount{} + yyc4586 = true + } + } + yyh4586.End() + if yyc4586 { + *v = yyv4586 + } +} + +func (x codecSelfer1234) encSlicePod(v []Pod, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4590 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4591 := &yyv4590 + yy4591.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePod(v *[]Pod, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4592 := *v + yyh4592, yyl4592 := z.DecSliceHelperStart() + var yyc4592 bool + if yyl4592 == 0 { + if yyv4592 == nil { + yyv4592 = []Pod{} + yyc4592 = true + } else if len(yyv4592) != 0 { + yyv4592 = yyv4592[:0] + yyc4592 = true + } + } else if yyl4592 > 0 { + var yyrr4592, yyrl4592 int + var yyrt4592 bool + if yyl4592 > cap(yyv4592) { + + yyrg4592 := len(yyv4592) > 0 + yyv24592 := yyv4592 + yyrl4592, yyrt4592 = z.DecInferLen(yyl4592, z.DecBasicHandle().MaxInitLen, 640) + if yyrt4592 { + if yyrl4592 <= cap(yyv4592) { + yyv4592 = yyv4592[:yyrl4592] + } else { + yyv4592 = make([]Pod, yyrl4592) + } + } else { + yyv4592 = make([]Pod, yyrl4592) + } + yyc4592 = true + yyrr4592 = len(yyv4592) + if yyrg4592 { + copy(yyv4592, yyv24592) + } + } else if yyl4592 != len(yyv4592) { + yyv4592 = yyv4592[:yyl4592] + yyc4592 = true + } + yyj4592 := 0 + for ; yyj4592 < yyrr4592; yyj4592++ { + yyh4592.ElemContainerState(yyj4592) + if r.TryDecodeAsNil() { + yyv4592[yyj4592] = Pod{} + } else { + yyv4593 := &yyv4592[yyj4592] + yyv4593.CodecDecodeSelf(d) + } + + } + if yyrt4592 { + for ; yyj4592 < yyl4592; yyj4592++ { + yyv4592 = append(yyv4592, Pod{}) + yyh4592.ElemContainerState(yyj4592) + if r.TryDecodeAsNil() { + yyv4592[yyj4592] = Pod{} + } else { + yyv4594 := &yyv4592[yyj4592] + yyv4594.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4592 := 0 + for ; !r.CheckBreak(); yyj4592++ { + + if yyj4592 >= len(yyv4592) { + yyv4592 = append(yyv4592, Pod{}) // var yyz4592 Pod + yyc4592 = true + } + yyh4592.ElemContainerState(yyj4592) + if yyj4592 < len(yyv4592) { + if r.TryDecodeAsNil() { + yyv4592[yyj4592] = Pod{} + } else { + yyv4595 := &yyv4592[yyj4592] + yyv4595.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4592 < len(yyv4592) { + yyv4592 = yyv4592[:yyj4592] + yyc4592 = true + } else if yyj4592 == 0 && yyv4592 == nil { + yyv4592 = []Pod{} + yyc4592 = true + } + } + yyh4592.End() + if yyc4592 { + *v = yyv4592 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorTerm(v []NodeSelectorTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4596 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4597 := &yyv4596 + yy4597.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorTerm(v *[]NodeSelectorTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4598 := *v + yyh4598, yyl4598 := z.DecSliceHelperStart() + var yyc4598 bool + if yyl4598 == 0 { + if yyv4598 == nil { + yyv4598 = []NodeSelectorTerm{} + yyc4598 = true + } else if len(yyv4598) != 0 { + yyv4598 = yyv4598[:0] + yyc4598 = true + } + } else if yyl4598 > 0 { + var yyrr4598, yyrl4598 int + var yyrt4598 bool + if yyl4598 > cap(yyv4598) { + + yyrg4598 := len(yyv4598) > 0 + yyv24598 := yyv4598 + yyrl4598, yyrt4598 = z.DecInferLen(yyl4598, z.DecBasicHandle().MaxInitLen, 24) + if yyrt4598 { + if yyrl4598 <= cap(yyv4598) { + yyv4598 = yyv4598[:yyrl4598] + } else { + yyv4598 = make([]NodeSelectorTerm, yyrl4598) + } + } else { + yyv4598 = make([]NodeSelectorTerm, yyrl4598) + } + yyc4598 = true + yyrr4598 = len(yyv4598) + if yyrg4598 { + copy(yyv4598, yyv24598) + } + } else if yyl4598 != len(yyv4598) { + yyv4598 = yyv4598[:yyl4598] + yyc4598 = true + } + yyj4598 := 0 + for ; yyj4598 < yyrr4598; yyj4598++ { + yyh4598.ElemContainerState(yyj4598) + if r.TryDecodeAsNil() { + yyv4598[yyj4598] = NodeSelectorTerm{} + } else { + yyv4599 := &yyv4598[yyj4598] + yyv4599.CodecDecodeSelf(d) + } + + } + if yyrt4598 { + for ; yyj4598 < yyl4598; yyj4598++ { + yyv4598 = append(yyv4598, NodeSelectorTerm{}) + yyh4598.ElemContainerState(yyj4598) + if r.TryDecodeAsNil() { + yyv4598[yyj4598] = NodeSelectorTerm{} + } else { + yyv4600 := &yyv4598[yyj4598] + yyv4600.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4598 := 0 + for ; !r.CheckBreak(); yyj4598++ { + + if yyj4598 >= len(yyv4598) { + yyv4598 = append(yyv4598, NodeSelectorTerm{}) // var yyz4598 NodeSelectorTerm + yyc4598 = true + } + yyh4598.ElemContainerState(yyj4598) + if yyj4598 < len(yyv4598) { + if r.TryDecodeAsNil() { + yyv4598[yyj4598] = NodeSelectorTerm{} + } else { + yyv4601 := &yyv4598[yyj4598] + yyv4601.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4598 < len(yyv4598) { + yyv4598 = yyv4598[:yyj4598] + yyc4598 = true + } else if yyj4598 == 0 && yyv4598 == nil { + yyv4598 = []NodeSelectorTerm{} + yyc4598 = true + } + } + yyh4598.End() + if yyc4598 { + *v = yyv4598 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorRequirement(v []NodeSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4602 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4603 := &yyv4602 + yy4603.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorRequirement(v *[]NodeSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4604 := *v + yyh4604, yyl4604 := z.DecSliceHelperStart() + var yyc4604 bool + if yyl4604 == 0 { + if yyv4604 == nil { + yyv4604 = []NodeSelectorRequirement{} + yyc4604 = true + } else if len(yyv4604) != 0 { + yyv4604 = yyv4604[:0] + yyc4604 = true + } + } else if yyl4604 > 0 { + var yyrr4604, yyrl4604 int + var yyrt4604 bool + if yyl4604 > cap(yyv4604) { + + yyrg4604 := len(yyv4604) > 0 + yyv24604 := yyv4604 + yyrl4604, yyrt4604 = z.DecInferLen(yyl4604, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4604 { + if yyrl4604 <= cap(yyv4604) { + yyv4604 = yyv4604[:yyrl4604] + } else { + yyv4604 = make([]NodeSelectorRequirement, yyrl4604) + } + } else { + yyv4604 = make([]NodeSelectorRequirement, yyrl4604) + } + yyc4604 = true + yyrr4604 = len(yyv4604) + if yyrg4604 { + copy(yyv4604, yyv24604) + } + } else if yyl4604 != len(yyv4604) { + yyv4604 = yyv4604[:yyl4604] + yyc4604 = true + } + yyj4604 := 0 + for ; yyj4604 < yyrr4604; yyj4604++ { + yyh4604.ElemContainerState(yyj4604) + if r.TryDecodeAsNil() { + yyv4604[yyj4604] = NodeSelectorRequirement{} + } else { + yyv4605 := &yyv4604[yyj4604] + yyv4605.CodecDecodeSelf(d) + } + + } + if yyrt4604 { + for ; yyj4604 < yyl4604; yyj4604++ { + yyv4604 = append(yyv4604, NodeSelectorRequirement{}) + yyh4604.ElemContainerState(yyj4604) + if r.TryDecodeAsNil() { + yyv4604[yyj4604] = NodeSelectorRequirement{} + } else { + yyv4606 := &yyv4604[yyj4604] + yyv4606.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4604 := 0 + for ; !r.CheckBreak(); yyj4604++ { + + if yyj4604 >= len(yyv4604) { + yyv4604 = append(yyv4604, NodeSelectorRequirement{}) // var yyz4604 NodeSelectorRequirement + yyc4604 = true + } + yyh4604.ElemContainerState(yyj4604) + if yyj4604 < len(yyv4604) { + if r.TryDecodeAsNil() { + yyv4604[yyj4604] = NodeSelectorRequirement{} + } else { + yyv4607 := &yyv4604[yyj4604] + yyv4607.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4604 < len(yyv4604) { + yyv4604 = yyv4604[:yyj4604] + yyc4604 = true + } else if yyj4604 == 0 && yyv4604 == nil { + yyv4604 = []NodeSelectorRequirement{} + yyc4604 = true + } + } + yyh4604.End() + if yyc4604 { + *v = yyv4604 + } +} + +func (x codecSelfer1234) encSlicePodAffinityTerm(v []PodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4608 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4609 := &yyv4608 + yy4609.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodAffinityTerm(v *[]PodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4610 := *v + yyh4610, yyl4610 := z.DecSliceHelperStart() + var yyc4610 bool + if yyl4610 == 0 { + if yyv4610 == nil { + yyv4610 = []PodAffinityTerm{} + yyc4610 = true + } else if len(yyv4610) != 0 { + yyv4610 = yyv4610[:0] + yyc4610 = true + } + } else if yyl4610 > 0 { + var yyrr4610, yyrl4610 int + var yyrt4610 bool + if yyl4610 > cap(yyv4610) { + + yyrg4610 := len(yyv4610) > 0 + yyv24610 := yyv4610 + yyrl4610, yyrt4610 = z.DecInferLen(yyl4610, z.DecBasicHandle().MaxInitLen, 48) + if yyrt4610 { + if yyrl4610 <= cap(yyv4610) { + yyv4610 = yyv4610[:yyrl4610] + } else { + yyv4610 = make([]PodAffinityTerm, yyrl4610) + } + } else { + yyv4610 = make([]PodAffinityTerm, yyrl4610) + } + yyc4610 = true + yyrr4610 = len(yyv4610) + if yyrg4610 { + copy(yyv4610, yyv24610) + } + } else if yyl4610 != len(yyv4610) { + yyv4610 = yyv4610[:yyl4610] + yyc4610 = true + } + yyj4610 := 0 + for ; yyj4610 < yyrr4610; yyj4610++ { + yyh4610.ElemContainerState(yyj4610) + if r.TryDecodeAsNil() { + yyv4610[yyj4610] = PodAffinityTerm{} + } else { + yyv4611 := &yyv4610[yyj4610] + yyv4611.CodecDecodeSelf(d) + } + + } + if yyrt4610 { + for ; yyj4610 < yyl4610; yyj4610++ { + yyv4610 = append(yyv4610, PodAffinityTerm{}) + yyh4610.ElemContainerState(yyj4610) + if r.TryDecodeAsNil() { + yyv4610[yyj4610] = PodAffinityTerm{} + } else { + yyv4612 := &yyv4610[yyj4610] + yyv4612.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4610 := 0 + for ; !r.CheckBreak(); yyj4610++ { + + if yyj4610 >= len(yyv4610) { + yyv4610 = append(yyv4610, PodAffinityTerm{}) // var yyz4610 PodAffinityTerm + yyc4610 = true + } + yyh4610.ElemContainerState(yyj4610) + if yyj4610 < len(yyv4610) { + if r.TryDecodeAsNil() { + yyv4610[yyj4610] = PodAffinityTerm{} + } else { + yyv4613 := &yyv4610[yyj4610] + yyv4613.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4610 < len(yyv4610) { + yyv4610 = yyv4610[:yyj4610] + yyc4610 = true + } else if yyj4610 == 0 && yyv4610 == nil { + yyv4610 = []PodAffinityTerm{} + yyc4610 = true + } + } + yyh4610.End() + if yyc4610 { + *v = yyv4610 + } +} + +func (x codecSelfer1234) encSliceWeightedPodAffinityTerm(v []WeightedPodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4614 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4615 := &yyv4614 + yy4615.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceWeightedPodAffinityTerm(v *[]WeightedPodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4616 := *v + yyh4616, yyl4616 := z.DecSliceHelperStart() + var yyc4616 bool + if yyl4616 == 0 { + if yyv4616 == nil { + yyv4616 = []WeightedPodAffinityTerm{} + yyc4616 = true + } else if len(yyv4616) != 0 { + yyv4616 = yyv4616[:0] + yyc4616 = true + } + } else if yyl4616 > 0 { + var yyrr4616, yyrl4616 int + var yyrt4616 bool + if yyl4616 > cap(yyv4616) { + + yyrg4616 := len(yyv4616) > 0 + yyv24616 := yyv4616 + yyrl4616, yyrt4616 = z.DecInferLen(yyl4616, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4616 { + if yyrl4616 <= cap(yyv4616) { + yyv4616 = yyv4616[:yyrl4616] + } else { + yyv4616 = make([]WeightedPodAffinityTerm, yyrl4616) + } + } else { + yyv4616 = make([]WeightedPodAffinityTerm, yyrl4616) + } + yyc4616 = true + yyrr4616 = len(yyv4616) + if yyrg4616 { + copy(yyv4616, yyv24616) + } + } else if yyl4616 != len(yyv4616) { + yyv4616 = yyv4616[:yyl4616] + yyc4616 = true + } + yyj4616 := 0 + for ; yyj4616 < yyrr4616; yyj4616++ { + yyh4616.ElemContainerState(yyj4616) + if r.TryDecodeAsNil() { + yyv4616[yyj4616] = WeightedPodAffinityTerm{} + } else { + yyv4617 := &yyv4616[yyj4616] + yyv4617.CodecDecodeSelf(d) + } + + } + if yyrt4616 { + for ; yyj4616 < yyl4616; yyj4616++ { + yyv4616 = append(yyv4616, WeightedPodAffinityTerm{}) + yyh4616.ElemContainerState(yyj4616) + if r.TryDecodeAsNil() { + yyv4616[yyj4616] = WeightedPodAffinityTerm{} + } else { + yyv4618 := &yyv4616[yyj4616] + yyv4618.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4616 := 0 + for ; !r.CheckBreak(); yyj4616++ { + + if yyj4616 >= len(yyv4616) { + yyv4616 = append(yyv4616, WeightedPodAffinityTerm{}) // var yyz4616 WeightedPodAffinityTerm + yyc4616 = true + } + yyh4616.ElemContainerState(yyj4616) + if yyj4616 < len(yyv4616) { + if r.TryDecodeAsNil() { + yyv4616[yyj4616] = WeightedPodAffinityTerm{} + } else { + yyv4619 := &yyv4616[yyj4616] + yyv4619.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4616 < len(yyv4616) { + yyv4616 = yyv4616[:yyj4616] + yyc4616 = true + } else if yyj4616 == 0 && yyv4616 == nil { + yyv4616 = []WeightedPodAffinityTerm{} + yyc4616 = true + } + } + yyh4616.End() + if yyc4616 { + *v = yyv4616 + } +} + +func (x codecSelfer1234) encSlicePreferredSchedulingTerm(v []PreferredSchedulingTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4620 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4621 := &yyv4620 + yy4621.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferredSchedulingTerm(v *[]PreferredSchedulingTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4622 := *v + yyh4622, yyl4622 := z.DecSliceHelperStart() + var yyc4622 bool + if yyl4622 == 0 { + if yyv4622 == nil { + yyv4622 = []PreferredSchedulingTerm{} + yyc4622 = true + } else if len(yyv4622) != 0 { + yyv4622 = yyv4622[:0] + yyc4622 = true + } + } else if yyl4622 > 0 { + var yyrr4622, yyrl4622 int + var yyrt4622 bool + if yyl4622 > cap(yyv4622) { + + yyrg4622 := len(yyv4622) > 0 + yyv24622 := yyv4622 + yyrl4622, yyrt4622 = z.DecInferLen(yyl4622, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4622 { + if yyrl4622 <= cap(yyv4622) { + yyv4622 = yyv4622[:yyrl4622] + } else { + yyv4622 = make([]PreferredSchedulingTerm, yyrl4622) + } + } else { + yyv4622 = make([]PreferredSchedulingTerm, yyrl4622) + } + yyc4622 = true + yyrr4622 = len(yyv4622) + if yyrg4622 { + copy(yyv4622, yyv24622) + } + } else if yyl4622 != len(yyv4622) { + yyv4622 = yyv4622[:yyl4622] + yyc4622 = true + } + yyj4622 := 0 + for ; yyj4622 < yyrr4622; yyj4622++ { + yyh4622.ElemContainerState(yyj4622) + if r.TryDecodeAsNil() { + yyv4622[yyj4622] = PreferredSchedulingTerm{} + } else { + yyv4623 := &yyv4622[yyj4622] + yyv4623.CodecDecodeSelf(d) + } + + } + if yyrt4622 { + for ; yyj4622 < yyl4622; yyj4622++ { + yyv4622 = append(yyv4622, PreferredSchedulingTerm{}) + yyh4622.ElemContainerState(yyj4622) + if r.TryDecodeAsNil() { + yyv4622[yyj4622] = PreferredSchedulingTerm{} + } else { + yyv4624 := &yyv4622[yyj4622] + yyv4624.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4622 := 0 + for ; !r.CheckBreak(); yyj4622++ { + + if yyj4622 >= len(yyv4622) { + yyv4622 = append(yyv4622, PreferredSchedulingTerm{}) // var yyz4622 PreferredSchedulingTerm + yyc4622 = true + } + yyh4622.ElemContainerState(yyj4622) + if yyj4622 < len(yyv4622) { + if r.TryDecodeAsNil() { + yyv4622[yyj4622] = PreferredSchedulingTerm{} + } else { + yyv4625 := &yyv4622[yyj4622] + yyv4625.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4622 < len(yyv4622) { + yyv4622 = yyv4622[:yyj4622] + yyc4622 = true + } else if yyj4622 == 0 && yyv4622 == nil { + yyv4622 = []PreferredSchedulingTerm{} + yyc4622 = true + } + } + yyh4622.End() + if yyc4622 { + *v = yyv4622 + } +} + +func (x codecSelfer1234) encSliceVolume(v []Volume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4626 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4627 := &yyv4626 + yy4627.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolume(v *[]Volume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4628 := *v + yyh4628, yyl4628 := z.DecSliceHelperStart() + var yyc4628 bool + if yyl4628 == 0 { + if yyv4628 == nil { + yyv4628 = []Volume{} + yyc4628 = true + } else if len(yyv4628) != 0 { + yyv4628 = yyv4628[:0] + yyc4628 = true + } + } else if yyl4628 > 0 { + var yyrr4628, yyrl4628 int + var yyrt4628 bool + if yyl4628 > cap(yyv4628) { + + yyrg4628 := len(yyv4628) > 0 + yyv24628 := yyv4628 + yyrl4628, yyrt4628 = z.DecInferLen(yyl4628, z.DecBasicHandle().MaxInitLen, 192) + if yyrt4628 { + if yyrl4628 <= cap(yyv4628) { + yyv4628 = yyv4628[:yyrl4628] + } else { + yyv4628 = make([]Volume, yyrl4628) + } + } else { + yyv4628 = make([]Volume, yyrl4628) + } + yyc4628 = true + yyrr4628 = len(yyv4628) + if yyrg4628 { + copy(yyv4628, yyv24628) + } + } else if yyl4628 != len(yyv4628) { + yyv4628 = yyv4628[:yyl4628] + yyc4628 = true + } + yyj4628 := 0 + for ; yyj4628 < yyrr4628; yyj4628++ { + yyh4628.ElemContainerState(yyj4628) + if r.TryDecodeAsNil() { + yyv4628[yyj4628] = Volume{} + } else { + yyv4629 := &yyv4628[yyj4628] + yyv4629.CodecDecodeSelf(d) + } + + } + if yyrt4628 { + for ; yyj4628 < yyl4628; yyj4628++ { + yyv4628 = append(yyv4628, Volume{}) + yyh4628.ElemContainerState(yyj4628) + if r.TryDecodeAsNil() { + yyv4628[yyj4628] = Volume{} + } else { + yyv4630 := &yyv4628[yyj4628] + yyv4630.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4628 := 0 + for ; !r.CheckBreak(); yyj4628++ { + + if yyj4628 >= len(yyv4628) { + yyv4628 = append(yyv4628, Volume{}) // var yyz4628 Volume + yyc4628 = true + } + yyh4628.ElemContainerState(yyj4628) + if yyj4628 < len(yyv4628) { + if r.TryDecodeAsNil() { + yyv4628[yyj4628] = Volume{} + } else { + yyv4631 := &yyv4628[yyj4628] + yyv4631.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4628 < len(yyv4628) { + yyv4628 = yyv4628[:yyj4628] + yyc4628 = true + } else if yyj4628 == 0 && yyv4628 == nil { + yyv4628 = []Volume{} + yyc4628 = true + } + } + yyh4628.End() + if yyc4628 { + *v = yyv4628 + } +} + +func (x codecSelfer1234) encSliceContainer(v []Container, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4632 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4633 := &yyv4632 + yy4633.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainer(v *[]Container, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4634 := *v + yyh4634, yyl4634 := z.DecSliceHelperStart() + var yyc4634 bool + if yyl4634 == 0 { + if yyv4634 == nil { + yyv4634 = []Container{} + yyc4634 = true + } else if len(yyv4634) != 0 { + yyv4634 = yyv4634[:0] + yyc4634 = true + } + } else if yyl4634 > 0 { + var yyrr4634, yyrl4634 int + var yyrt4634 bool + if yyl4634 > cap(yyv4634) { + + yyrg4634 := len(yyv4634) > 0 + yyv24634 := yyv4634 + yyrl4634, yyrt4634 = z.DecInferLen(yyl4634, z.DecBasicHandle().MaxInitLen, 256) + if yyrt4634 { + if yyrl4634 <= cap(yyv4634) { + yyv4634 = yyv4634[:yyrl4634] + } else { + yyv4634 = make([]Container, yyrl4634) + } + } else { + yyv4634 = make([]Container, yyrl4634) + } + yyc4634 = true + yyrr4634 = len(yyv4634) + if yyrg4634 { + copy(yyv4634, yyv24634) + } + } else if yyl4634 != len(yyv4634) { + yyv4634 = yyv4634[:yyl4634] + yyc4634 = true + } + yyj4634 := 0 + for ; yyj4634 < yyrr4634; yyj4634++ { + yyh4634.ElemContainerState(yyj4634) + if r.TryDecodeAsNil() { + yyv4634[yyj4634] = Container{} + } else { + yyv4635 := &yyv4634[yyj4634] + yyv4635.CodecDecodeSelf(d) + } + + } + if yyrt4634 { + for ; yyj4634 < yyl4634; yyj4634++ { + yyv4634 = append(yyv4634, Container{}) + yyh4634.ElemContainerState(yyj4634) + if r.TryDecodeAsNil() { + yyv4634[yyj4634] = Container{} + } else { + yyv4636 := &yyv4634[yyj4634] + yyv4636.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4634 := 0 + for ; !r.CheckBreak(); yyj4634++ { + + if yyj4634 >= len(yyv4634) { + yyv4634 = append(yyv4634, Container{}) // var yyz4634 Container + yyc4634 = true + } + yyh4634.ElemContainerState(yyj4634) + if yyj4634 < len(yyv4634) { + if r.TryDecodeAsNil() { + yyv4634[yyj4634] = Container{} + } else { + yyv4637 := &yyv4634[yyj4634] + yyv4637.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4634 < len(yyv4634) { + yyv4634 = yyv4634[:yyj4634] + yyc4634 = true + } else if yyj4634 == 0 && yyv4634 == nil { + yyv4634 = []Container{} + yyc4634 = true + } + } + yyh4634.End() + if yyc4634 { + *v = yyv4634 + } +} + +func (x codecSelfer1234) encSliceLocalObjectReference(v []LocalObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4638 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4639 := &yyv4638 + yy4639.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLocalObjectReference(v *[]LocalObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4640 := *v + yyh4640, yyl4640 := z.DecSliceHelperStart() + var yyc4640 bool + if yyl4640 == 0 { + if yyv4640 == nil { + yyv4640 = []LocalObjectReference{} + yyc4640 = true + } else if len(yyv4640) != 0 { + yyv4640 = yyv4640[:0] + yyc4640 = true + } + } else if yyl4640 > 0 { + var yyrr4640, yyrl4640 int + var yyrt4640 bool + if yyl4640 > cap(yyv4640) { + + yyrg4640 := len(yyv4640) > 0 + yyv24640 := yyv4640 + yyrl4640, yyrt4640 = z.DecInferLen(yyl4640, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4640 { + if yyrl4640 <= cap(yyv4640) { + yyv4640 = yyv4640[:yyrl4640] + } else { + yyv4640 = make([]LocalObjectReference, yyrl4640) + } + } else { + yyv4640 = make([]LocalObjectReference, yyrl4640) + } + yyc4640 = true + yyrr4640 = len(yyv4640) + if yyrg4640 { + copy(yyv4640, yyv24640) + } + } else if yyl4640 != len(yyv4640) { + yyv4640 = yyv4640[:yyl4640] + yyc4640 = true + } + yyj4640 := 0 + for ; yyj4640 < yyrr4640; yyj4640++ { + yyh4640.ElemContainerState(yyj4640) + if r.TryDecodeAsNil() { + yyv4640[yyj4640] = LocalObjectReference{} + } else { + yyv4641 := &yyv4640[yyj4640] + yyv4641.CodecDecodeSelf(d) + } + + } + if yyrt4640 { + for ; yyj4640 < yyl4640; yyj4640++ { + yyv4640 = append(yyv4640, LocalObjectReference{}) + yyh4640.ElemContainerState(yyj4640) + if r.TryDecodeAsNil() { + yyv4640[yyj4640] = LocalObjectReference{} + } else { + yyv4642 := &yyv4640[yyj4640] + yyv4642.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4640 := 0 + for ; !r.CheckBreak(); yyj4640++ { + + if yyj4640 >= len(yyv4640) { + yyv4640 = append(yyv4640, LocalObjectReference{}) // var yyz4640 LocalObjectReference + yyc4640 = true + } + yyh4640.ElemContainerState(yyj4640) + if yyj4640 < len(yyv4640) { + if r.TryDecodeAsNil() { + yyv4640[yyj4640] = LocalObjectReference{} + } else { + yyv4643 := &yyv4640[yyj4640] + yyv4643.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4640 < len(yyv4640) { + yyv4640 = yyv4640[:yyj4640] + yyc4640 = true + } else if yyj4640 == 0 && yyv4640 == nil { + yyv4640 = []LocalObjectReference{} + yyc4640 = true + } + } + yyh4640.End() + if yyc4640 { + *v = yyv4640 + } +} + +func (x codecSelfer1234) encSlicePodCondition(v []PodCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4644 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4645 := &yyv4644 + yy4645.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodCondition(v *[]PodCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4646 := *v + yyh4646, yyl4646 := z.DecSliceHelperStart() + var yyc4646 bool + if yyl4646 == 0 { + if yyv4646 == nil { + yyv4646 = []PodCondition{} + yyc4646 = true + } else if len(yyv4646) != 0 { + yyv4646 = yyv4646[:0] + yyc4646 = true + } + } else if yyl4646 > 0 { + var yyrr4646, yyrl4646 int + var yyrt4646 bool + if yyl4646 > cap(yyv4646) { + + yyrg4646 := len(yyv4646) > 0 + yyv24646 := yyv4646 + yyrl4646, yyrt4646 = z.DecInferLen(yyl4646, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4646 { + if yyrl4646 <= cap(yyv4646) { + yyv4646 = yyv4646[:yyrl4646] + } else { + yyv4646 = make([]PodCondition, yyrl4646) + } + } else { + yyv4646 = make([]PodCondition, yyrl4646) + } + yyc4646 = true + yyrr4646 = len(yyv4646) + if yyrg4646 { + copy(yyv4646, yyv24646) + } + } else if yyl4646 != len(yyv4646) { + yyv4646 = yyv4646[:yyl4646] + yyc4646 = true + } + yyj4646 := 0 + for ; yyj4646 < yyrr4646; yyj4646++ { + yyh4646.ElemContainerState(yyj4646) + if r.TryDecodeAsNil() { + yyv4646[yyj4646] = PodCondition{} + } else { + yyv4647 := &yyv4646[yyj4646] + yyv4647.CodecDecodeSelf(d) + } + + } + if yyrt4646 { + for ; yyj4646 < yyl4646; yyj4646++ { + yyv4646 = append(yyv4646, PodCondition{}) + yyh4646.ElemContainerState(yyj4646) + if r.TryDecodeAsNil() { + yyv4646[yyj4646] = PodCondition{} + } else { + yyv4648 := &yyv4646[yyj4646] + yyv4648.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4646 := 0 + for ; !r.CheckBreak(); yyj4646++ { + + if yyj4646 >= len(yyv4646) { + yyv4646 = append(yyv4646, PodCondition{}) // var yyz4646 PodCondition + yyc4646 = true + } + yyh4646.ElemContainerState(yyj4646) + if yyj4646 < len(yyv4646) { + if r.TryDecodeAsNil() { + yyv4646[yyj4646] = PodCondition{} + } else { + yyv4649 := &yyv4646[yyj4646] + yyv4649.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4646 < len(yyv4646) { + yyv4646 = yyv4646[:yyj4646] + yyc4646 = true + } else if yyj4646 == 0 && yyv4646 == nil { + yyv4646 = []PodCondition{} + yyc4646 = true + } + } + yyh4646.End() + if yyc4646 { + *v = yyv4646 + } +} + +func (x codecSelfer1234) encSliceContainerStatus(v []ContainerStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4650 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4651 := &yyv4650 + yy4651.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerStatus(v *[]ContainerStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4652 := *v + yyh4652, yyl4652 := z.DecSliceHelperStart() + var yyc4652 bool + if yyl4652 == 0 { + if yyv4652 == nil { + yyv4652 = []ContainerStatus{} + yyc4652 = true + } else if len(yyv4652) != 0 { + yyv4652 = yyv4652[:0] + yyc4652 = true + } + } else if yyl4652 > 0 { + var yyrr4652, yyrl4652 int + var yyrt4652 bool + if yyl4652 > cap(yyv4652) { + + yyrg4652 := len(yyv4652) > 0 + yyv24652 := yyv4652 + yyrl4652, yyrt4652 = z.DecInferLen(yyl4652, z.DecBasicHandle().MaxInitLen, 120) + if yyrt4652 { + if yyrl4652 <= cap(yyv4652) { + yyv4652 = yyv4652[:yyrl4652] + } else { + yyv4652 = make([]ContainerStatus, yyrl4652) + } + } else { + yyv4652 = make([]ContainerStatus, yyrl4652) + } + yyc4652 = true + yyrr4652 = len(yyv4652) + if yyrg4652 { + copy(yyv4652, yyv24652) + } + } else if yyl4652 != len(yyv4652) { + yyv4652 = yyv4652[:yyl4652] + yyc4652 = true + } + yyj4652 := 0 + for ; yyj4652 < yyrr4652; yyj4652++ { + yyh4652.ElemContainerState(yyj4652) + if r.TryDecodeAsNil() { + yyv4652[yyj4652] = ContainerStatus{} + } else { + yyv4653 := &yyv4652[yyj4652] + yyv4653.CodecDecodeSelf(d) + } + + } + if yyrt4652 { + for ; yyj4652 < yyl4652; yyj4652++ { + yyv4652 = append(yyv4652, ContainerStatus{}) + yyh4652.ElemContainerState(yyj4652) + if r.TryDecodeAsNil() { + yyv4652[yyj4652] = ContainerStatus{} + } else { + yyv4654 := &yyv4652[yyj4652] + yyv4654.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4652 := 0 + for ; !r.CheckBreak(); yyj4652++ { + + if yyj4652 >= len(yyv4652) { + yyv4652 = append(yyv4652, ContainerStatus{}) // var yyz4652 ContainerStatus + yyc4652 = true + } + yyh4652.ElemContainerState(yyj4652) + if yyj4652 < len(yyv4652) { + if r.TryDecodeAsNil() { + yyv4652[yyj4652] = ContainerStatus{} + } else { + yyv4655 := &yyv4652[yyj4652] + yyv4655.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4652 < len(yyv4652) { + yyv4652 = yyv4652[:yyj4652] + yyc4652 = true + } else if yyj4652 == 0 && yyv4652 == nil { + yyv4652 = []ContainerStatus{} + yyc4652 = true + } + } + yyh4652.End() + if yyc4652 { + *v = yyv4652 + } +} + +func (x codecSelfer1234) encSlicePodTemplate(v []PodTemplate, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4656 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4657 := &yyv4656 + yy4657.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodTemplate(v *[]PodTemplate, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4658 := *v + yyh4658, yyl4658 := z.DecSliceHelperStart() + var yyc4658 bool + if yyl4658 == 0 { + if yyv4658 == nil { + yyv4658 = []PodTemplate{} + yyc4658 = true + } else if len(yyv4658) != 0 { + yyv4658 = yyv4658[:0] + yyc4658 = true + } + } else if yyl4658 > 0 { + var yyrr4658, yyrl4658 int + var yyrt4658 bool + if yyl4658 > cap(yyv4658) { + + yyrg4658 := len(yyv4658) > 0 + yyv24658 := yyv4658 + yyrl4658, yyrt4658 = z.DecInferLen(yyl4658, z.DecBasicHandle().MaxInitLen, 704) + if yyrt4658 { + if yyrl4658 <= cap(yyv4658) { + yyv4658 = yyv4658[:yyrl4658] + } else { + yyv4658 = make([]PodTemplate, yyrl4658) + } + } else { + yyv4658 = make([]PodTemplate, yyrl4658) + } + yyc4658 = true + yyrr4658 = len(yyv4658) + if yyrg4658 { + copy(yyv4658, yyv24658) + } + } else if yyl4658 != len(yyv4658) { + yyv4658 = yyv4658[:yyl4658] + yyc4658 = true + } + yyj4658 := 0 + for ; yyj4658 < yyrr4658; yyj4658++ { + yyh4658.ElemContainerState(yyj4658) + if r.TryDecodeAsNil() { + yyv4658[yyj4658] = PodTemplate{} + } else { + yyv4659 := &yyv4658[yyj4658] + yyv4659.CodecDecodeSelf(d) + } + + } + if yyrt4658 { + for ; yyj4658 < yyl4658; yyj4658++ { + yyv4658 = append(yyv4658, PodTemplate{}) + yyh4658.ElemContainerState(yyj4658) + if r.TryDecodeAsNil() { + yyv4658[yyj4658] = PodTemplate{} + } else { + yyv4660 := &yyv4658[yyj4658] + yyv4660.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4658 := 0 + for ; !r.CheckBreak(); yyj4658++ { + + if yyj4658 >= len(yyv4658) { + yyv4658 = append(yyv4658, PodTemplate{}) // var yyz4658 PodTemplate + yyc4658 = true + } + yyh4658.ElemContainerState(yyj4658) + if yyj4658 < len(yyv4658) { + if r.TryDecodeAsNil() { + yyv4658[yyj4658] = PodTemplate{} + } else { + yyv4661 := &yyv4658[yyj4658] + yyv4661.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4658 < len(yyv4658) { + yyv4658 = yyv4658[:yyj4658] + yyc4658 = true + } else if yyj4658 == 0 && yyv4658 == nil { + yyv4658 = []PodTemplate{} + yyc4658 = true + } + } + yyh4658.End() + if yyc4658 { + *v = yyv4658 + } +} + +func (x codecSelfer1234) encSliceReplicationController(v []ReplicationController, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4662 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4663 := &yyv4662 + yy4663.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicationController(v *[]ReplicationController, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4664 := *v + yyh4664, yyl4664 := z.DecSliceHelperStart() + var yyc4664 bool + if yyl4664 == 0 { + if yyv4664 == nil { + yyv4664 = []ReplicationController{} + yyc4664 = true + } else if len(yyv4664) != 0 { + yyv4664 = yyv4664[:0] + yyc4664 = true + } + } else if yyl4664 > 0 { + var yyrr4664, yyrl4664 int + var yyrt4664 bool + if yyl4664 > cap(yyv4664) { + + yyrg4664 := len(yyv4664) > 0 + yyv24664 := yyv4664 + yyrl4664, yyrt4664 = z.DecInferLen(yyl4664, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4664 { + if yyrl4664 <= cap(yyv4664) { + yyv4664 = yyv4664[:yyrl4664] + } else { + yyv4664 = make([]ReplicationController, yyrl4664) + } + } else { + yyv4664 = make([]ReplicationController, yyrl4664) + } + yyc4664 = true + yyrr4664 = len(yyv4664) + if yyrg4664 { + copy(yyv4664, yyv24664) + } + } else if yyl4664 != len(yyv4664) { + yyv4664 = yyv4664[:yyl4664] + yyc4664 = true + } + yyj4664 := 0 + for ; yyj4664 < yyrr4664; yyj4664++ { + yyh4664.ElemContainerState(yyj4664) + if r.TryDecodeAsNil() { + yyv4664[yyj4664] = ReplicationController{} + } else { + yyv4665 := &yyv4664[yyj4664] + yyv4665.CodecDecodeSelf(d) + } + + } + if yyrt4664 { + for ; yyj4664 < yyl4664; yyj4664++ { + yyv4664 = append(yyv4664, ReplicationController{}) + yyh4664.ElemContainerState(yyj4664) + if r.TryDecodeAsNil() { + yyv4664[yyj4664] = ReplicationController{} + } else { + yyv4666 := &yyv4664[yyj4664] + yyv4666.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4664 := 0 + for ; !r.CheckBreak(); yyj4664++ { + + if yyj4664 >= len(yyv4664) { + yyv4664 = append(yyv4664, ReplicationController{}) // var yyz4664 ReplicationController + yyc4664 = true + } + yyh4664.ElemContainerState(yyj4664) + if yyj4664 < len(yyv4664) { + if r.TryDecodeAsNil() { + yyv4664[yyj4664] = ReplicationController{} + } else { + yyv4667 := &yyv4664[yyj4664] + yyv4667.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4664 < len(yyv4664) { + yyv4664 = yyv4664[:yyj4664] + yyc4664 = true + } else if yyj4664 == 0 && yyv4664 == nil { + yyv4664 = []ReplicationController{} + yyc4664 = true + } + } + yyh4664.End() + if yyc4664 { + *v = yyv4664 + } +} + +func (x codecSelfer1234) encSliceService(v []Service, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4668 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4669 := &yyv4668 + yy4669.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceService(v *[]Service, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4670 := *v + yyh4670, yyl4670 := z.DecSliceHelperStart() + var yyc4670 bool + if yyl4670 == 0 { + if yyv4670 == nil { + yyv4670 = []Service{} + yyc4670 = true + } else if len(yyv4670) != 0 { + yyv4670 = yyv4670[:0] + yyc4670 = true + } + } else if yyl4670 > 0 { + var yyrr4670, yyrl4670 int + var yyrt4670 bool + if yyl4670 > cap(yyv4670) { + + yyrg4670 := len(yyv4670) > 0 + yyv24670 := yyv4670 + yyrl4670, yyrt4670 = z.DecInferLen(yyl4670, z.DecBasicHandle().MaxInitLen, 440) + if yyrt4670 { + if yyrl4670 <= cap(yyv4670) { + yyv4670 = yyv4670[:yyrl4670] + } else { + yyv4670 = make([]Service, yyrl4670) + } + } else { + yyv4670 = make([]Service, yyrl4670) + } + yyc4670 = true + yyrr4670 = len(yyv4670) + if yyrg4670 { + copy(yyv4670, yyv24670) + } + } else if yyl4670 != len(yyv4670) { + yyv4670 = yyv4670[:yyl4670] + yyc4670 = true + } + yyj4670 := 0 + for ; yyj4670 < yyrr4670; yyj4670++ { + yyh4670.ElemContainerState(yyj4670) + if r.TryDecodeAsNil() { + yyv4670[yyj4670] = Service{} + } else { + yyv4671 := &yyv4670[yyj4670] + yyv4671.CodecDecodeSelf(d) + } + + } + if yyrt4670 { + for ; yyj4670 < yyl4670; yyj4670++ { + yyv4670 = append(yyv4670, Service{}) + yyh4670.ElemContainerState(yyj4670) + if r.TryDecodeAsNil() { + yyv4670[yyj4670] = Service{} + } else { + yyv4672 := &yyv4670[yyj4670] + yyv4672.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4670 := 0 + for ; !r.CheckBreak(); yyj4670++ { + + if yyj4670 >= len(yyv4670) { + yyv4670 = append(yyv4670, Service{}) // var yyz4670 Service + yyc4670 = true + } + yyh4670.ElemContainerState(yyj4670) + if yyj4670 < len(yyv4670) { + if r.TryDecodeAsNil() { + yyv4670[yyj4670] = Service{} + } else { + yyv4673 := &yyv4670[yyj4670] + yyv4673.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4670 < len(yyv4670) { + yyv4670 = yyv4670[:yyj4670] + yyc4670 = true + } else if yyj4670 == 0 && yyv4670 == nil { + yyv4670 = []Service{} + yyc4670 = true + } + } + yyh4670.End() + if yyc4670 { + *v = yyv4670 + } +} + +func (x codecSelfer1234) encSliceLoadBalancerIngress(v []LoadBalancerIngress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4674 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4675 := &yyv4674 + yy4675.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLoadBalancerIngress(v *[]LoadBalancerIngress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4676 := *v + yyh4676, yyl4676 := z.DecSliceHelperStart() + var yyc4676 bool + if yyl4676 == 0 { + if yyv4676 == nil { + yyv4676 = []LoadBalancerIngress{} + yyc4676 = true + } else if len(yyv4676) != 0 { + yyv4676 = yyv4676[:0] + yyc4676 = true + } + } else if yyl4676 > 0 { + var yyrr4676, yyrl4676 int + var yyrt4676 bool + if yyl4676 > cap(yyv4676) { + + yyrg4676 := len(yyv4676) > 0 + yyv24676 := yyv4676 + yyrl4676, yyrt4676 = z.DecInferLen(yyl4676, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4676 { + if yyrl4676 <= cap(yyv4676) { + yyv4676 = yyv4676[:yyrl4676] + } else { + yyv4676 = make([]LoadBalancerIngress, yyrl4676) + } + } else { + yyv4676 = make([]LoadBalancerIngress, yyrl4676) + } + yyc4676 = true + yyrr4676 = len(yyv4676) + if yyrg4676 { + copy(yyv4676, yyv24676) + } + } else if yyl4676 != len(yyv4676) { + yyv4676 = yyv4676[:yyl4676] + yyc4676 = true + } + yyj4676 := 0 + for ; yyj4676 < yyrr4676; yyj4676++ { + yyh4676.ElemContainerState(yyj4676) + if r.TryDecodeAsNil() { + yyv4676[yyj4676] = LoadBalancerIngress{} + } else { + yyv4677 := &yyv4676[yyj4676] + yyv4677.CodecDecodeSelf(d) + } + + } + if yyrt4676 { + for ; yyj4676 < yyl4676; yyj4676++ { + yyv4676 = append(yyv4676, LoadBalancerIngress{}) + yyh4676.ElemContainerState(yyj4676) + if r.TryDecodeAsNil() { + yyv4676[yyj4676] = LoadBalancerIngress{} + } else { + yyv4678 := &yyv4676[yyj4676] + yyv4678.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4676 := 0 + for ; !r.CheckBreak(); yyj4676++ { + + if yyj4676 >= len(yyv4676) { + yyv4676 = append(yyv4676, LoadBalancerIngress{}) // var yyz4676 LoadBalancerIngress + yyc4676 = true + } + yyh4676.ElemContainerState(yyj4676) + if yyj4676 < len(yyv4676) { + if r.TryDecodeAsNil() { + yyv4676[yyj4676] = LoadBalancerIngress{} + } else { + yyv4679 := &yyv4676[yyj4676] + yyv4679.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4676 < len(yyv4676) { + yyv4676 = yyv4676[:yyj4676] + yyc4676 = true + } else if yyj4676 == 0 && yyv4676 == nil { + yyv4676 = []LoadBalancerIngress{} + yyc4676 = true + } + } + yyh4676.End() + if yyc4676 { + *v = yyv4676 + } +} + +func (x codecSelfer1234) encSliceServicePort(v []ServicePort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4680 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4681 := &yyv4680 + yy4681.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServicePort(v *[]ServicePort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4682 := *v + yyh4682, yyl4682 := z.DecSliceHelperStart() + var yyc4682 bool + if yyl4682 == 0 { + if yyv4682 == nil { + yyv4682 = []ServicePort{} + yyc4682 = true + } else if len(yyv4682) != 0 { + yyv4682 = yyv4682[:0] + yyc4682 = true + } + } else if yyl4682 > 0 { + var yyrr4682, yyrl4682 int + var yyrt4682 bool + if yyl4682 > cap(yyv4682) { + + yyrg4682 := len(yyv4682) > 0 + yyv24682 := yyv4682 + yyrl4682, yyrt4682 = z.DecInferLen(yyl4682, z.DecBasicHandle().MaxInitLen, 80) + if yyrt4682 { + if yyrl4682 <= cap(yyv4682) { + yyv4682 = yyv4682[:yyrl4682] + } else { + yyv4682 = make([]ServicePort, yyrl4682) + } + } else { + yyv4682 = make([]ServicePort, yyrl4682) + } + yyc4682 = true + yyrr4682 = len(yyv4682) + if yyrg4682 { + copy(yyv4682, yyv24682) + } + } else if yyl4682 != len(yyv4682) { + yyv4682 = yyv4682[:yyl4682] + yyc4682 = true + } + yyj4682 := 0 + for ; yyj4682 < yyrr4682; yyj4682++ { + yyh4682.ElemContainerState(yyj4682) + if r.TryDecodeAsNil() { + yyv4682[yyj4682] = ServicePort{} + } else { + yyv4683 := &yyv4682[yyj4682] + yyv4683.CodecDecodeSelf(d) + } + + } + if yyrt4682 { + for ; yyj4682 < yyl4682; yyj4682++ { + yyv4682 = append(yyv4682, ServicePort{}) + yyh4682.ElemContainerState(yyj4682) + if r.TryDecodeAsNil() { + yyv4682[yyj4682] = ServicePort{} + } else { + yyv4684 := &yyv4682[yyj4682] + yyv4684.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4682 := 0 + for ; !r.CheckBreak(); yyj4682++ { + + if yyj4682 >= len(yyv4682) { + yyv4682 = append(yyv4682, ServicePort{}) // var yyz4682 ServicePort + yyc4682 = true + } + yyh4682.ElemContainerState(yyj4682) + if yyj4682 < len(yyv4682) { + if r.TryDecodeAsNil() { + yyv4682[yyj4682] = ServicePort{} + } else { + yyv4685 := &yyv4682[yyj4682] + yyv4685.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4682 < len(yyv4682) { + yyv4682 = yyv4682[:yyj4682] + yyc4682 = true + } else if yyj4682 == 0 && yyv4682 == nil { + yyv4682 = []ServicePort{} + yyc4682 = true + } + } + yyh4682.End() + if yyc4682 { + *v = yyv4682 + } +} + +func (x codecSelfer1234) encSliceObjectReference(v []ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4686 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4687 := &yyv4686 + yy4687.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceObjectReference(v *[]ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4688 := *v + yyh4688, yyl4688 := z.DecSliceHelperStart() + var yyc4688 bool + if yyl4688 == 0 { + if yyv4688 == nil { + yyv4688 = []ObjectReference{} + yyc4688 = true + } else if len(yyv4688) != 0 { + yyv4688 = yyv4688[:0] + yyc4688 = true + } + } else if yyl4688 > 0 { + var yyrr4688, yyrl4688 int + var yyrt4688 bool + if yyl4688 > cap(yyv4688) { + + yyrg4688 := len(yyv4688) > 0 + yyv24688 := yyv4688 + yyrl4688, yyrt4688 = z.DecInferLen(yyl4688, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4688 { + if yyrl4688 <= cap(yyv4688) { + yyv4688 = yyv4688[:yyrl4688] + } else { + yyv4688 = make([]ObjectReference, yyrl4688) + } + } else { + yyv4688 = make([]ObjectReference, yyrl4688) + } + yyc4688 = true + yyrr4688 = len(yyv4688) + if yyrg4688 { + copy(yyv4688, yyv24688) + } + } else if yyl4688 != len(yyv4688) { + yyv4688 = yyv4688[:yyl4688] + yyc4688 = true + } + yyj4688 := 0 + for ; yyj4688 < yyrr4688; yyj4688++ { + yyh4688.ElemContainerState(yyj4688) + if r.TryDecodeAsNil() { + yyv4688[yyj4688] = ObjectReference{} + } else { + yyv4689 := &yyv4688[yyj4688] + yyv4689.CodecDecodeSelf(d) + } + + } + if yyrt4688 { + for ; yyj4688 < yyl4688; yyj4688++ { + yyv4688 = append(yyv4688, ObjectReference{}) + yyh4688.ElemContainerState(yyj4688) + if r.TryDecodeAsNil() { + yyv4688[yyj4688] = ObjectReference{} + } else { + yyv4690 := &yyv4688[yyj4688] + yyv4690.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4688 := 0 + for ; !r.CheckBreak(); yyj4688++ { + + if yyj4688 >= len(yyv4688) { + yyv4688 = append(yyv4688, ObjectReference{}) // var yyz4688 ObjectReference + yyc4688 = true + } + yyh4688.ElemContainerState(yyj4688) + if yyj4688 < len(yyv4688) { + if r.TryDecodeAsNil() { + yyv4688[yyj4688] = ObjectReference{} + } else { + yyv4691 := &yyv4688[yyj4688] + yyv4691.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4688 < len(yyv4688) { + yyv4688 = yyv4688[:yyj4688] + yyc4688 = true + } else if yyj4688 == 0 && yyv4688 == nil { + yyv4688 = []ObjectReference{} + yyc4688 = true + } + } + yyh4688.End() + if yyc4688 { + *v = yyv4688 + } +} + +func (x codecSelfer1234) encSliceServiceAccount(v []ServiceAccount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4692 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4693 := &yyv4692 + yy4693.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServiceAccount(v *[]ServiceAccount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4694 := *v + yyh4694, yyl4694 := z.DecSliceHelperStart() + var yyc4694 bool + if yyl4694 == 0 { + if yyv4694 == nil { + yyv4694 = []ServiceAccount{} + yyc4694 = true + } else if len(yyv4694) != 0 { + yyv4694 = yyv4694[:0] + yyc4694 = true + } + } else if yyl4694 > 0 { + var yyrr4694, yyrl4694 int + var yyrt4694 bool + if yyl4694 > cap(yyv4694) { + + yyrg4694 := len(yyv4694) > 0 + yyv24694 := yyv4694 + yyrl4694, yyrt4694 = z.DecInferLen(yyl4694, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4694 { + if yyrl4694 <= cap(yyv4694) { + yyv4694 = yyv4694[:yyrl4694] + } else { + yyv4694 = make([]ServiceAccount, yyrl4694) + } + } else { + yyv4694 = make([]ServiceAccount, yyrl4694) + } + yyc4694 = true + yyrr4694 = len(yyv4694) + if yyrg4694 { + copy(yyv4694, yyv24694) + } + } else if yyl4694 != len(yyv4694) { + yyv4694 = yyv4694[:yyl4694] + yyc4694 = true + } + yyj4694 := 0 + for ; yyj4694 < yyrr4694; yyj4694++ { + yyh4694.ElemContainerState(yyj4694) + if r.TryDecodeAsNil() { + yyv4694[yyj4694] = ServiceAccount{} + } else { + yyv4695 := &yyv4694[yyj4694] + yyv4695.CodecDecodeSelf(d) + } + + } + if yyrt4694 { + for ; yyj4694 < yyl4694; yyj4694++ { + yyv4694 = append(yyv4694, ServiceAccount{}) + yyh4694.ElemContainerState(yyj4694) + if r.TryDecodeAsNil() { + yyv4694[yyj4694] = ServiceAccount{} + } else { + yyv4696 := &yyv4694[yyj4694] + yyv4696.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4694 := 0 + for ; !r.CheckBreak(); yyj4694++ { + + if yyj4694 >= len(yyv4694) { + yyv4694 = append(yyv4694, ServiceAccount{}) // var yyz4694 ServiceAccount + yyc4694 = true + } + yyh4694.ElemContainerState(yyj4694) + if yyj4694 < len(yyv4694) { + if r.TryDecodeAsNil() { + yyv4694[yyj4694] = ServiceAccount{} + } else { + yyv4697 := &yyv4694[yyj4694] + yyv4697.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4694 < len(yyv4694) { + yyv4694 = yyv4694[:yyj4694] + yyc4694 = true + } else if yyj4694 == 0 && yyv4694 == nil { + yyv4694 = []ServiceAccount{} + yyc4694 = true + } + } + yyh4694.End() + if yyc4694 { + *v = yyv4694 + } +} + +func (x codecSelfer1234) encSliceEndpointSubset(v []EndpointSubset, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4698 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4699 := &yyv4698 + yy4699.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointSubset(v *[]EndpointSubset, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4700 := *v + yyh4700, yyl4700 := z.DecSliceHelperStart() + var yyc4700 bool + if yyl4700 == 0 { + if yyv4700 == nil { + yyv4700 = []EndpointSubset{} + yyc4700 = true + } else if len(yyv4700) != 0 { + yyv4700 = yyv4700[:0] + yyc4700 = true + } + } else if yyl4700 > 0 { + var yyrr4700, yyrl4700 int + var yyrt4700 bool + if yyl4700 > cap(yyv4700) { + + yyrg4700 := len(yyv4700) > 0 + yyv24700 := yyv4700 + yyrl4700, yyrt4700 = z.DecInferLen(yyl4700, z.DecBasicHandle().MaxInitLen, 72) + if yyrt4700 { + if yyrl4700 <= cap(yyv4700) { + yyv4700 = yyv4700[:yyrl4700] + } else { + yyv4700 = make([]EndpointSubset, yyrl4700) + } + } else { + yyv4700 = make([]EndpointSubset, yyrl4700) + } + yyc4700 = true + yyrr4700 = len(yyv4700) + if yyrg4700 { + copy(yyv4700, yyv24700) + } + } else if yyl4700 != len(yyv4700) { + yyv4700 = yyv4700[:yyl4700] + yyc4700 = true + } + yyj4700 := 0 + for ; yyj4700 < yyrr4700; yyj4700++ { + yyh4700.ElemContainerState(yyj4700) + if r.TryDecodeAsNil() { + yyv4700[yyj4700] = EndpointSubset{} + } else { + yyv4701 := &yyv4700[yyj4700] + yyv4701.CodecDecodeSelf(d) + } + + } + if yyrt4700 { + for ; yyj4700 < yyl4700; yyj4700++ { + yyv4700 = append(yyv4700, EndpointSubset{}) + yyh4700.ElemContainerState(yyj4700) + if r.TryDecodeAsNil() { + yyv4700[yyj4700] = EndpointSubset{} + } else { + yyv4702 := &yyv4700[yyj4700] + yyv4702.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4700 := 0 + for ; !r.CheckBreak(); yyj4700++ { + + if yyj4700 >= len(yyv4700) { + yyv4700 = append(yyv4700, EndpointSubset{}) // var yyz4700 EndpointSubset + yyc4700 = true + } + yyh4700.ElemContainerState(yyj4700) + if yyj4700 < len(yyv4700) { + if r.TryDecodeAsNil() { + yyv4700[yyj4700] = EndpointSubset{} + } else { + yyv4703 := &yyv4700[yyj4700] + yyv4703.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4700 < len(yyv4700) { + yyv4700 = yyv4700[:yyj4700] + yyc4700 = true + } else if yyj4700 == 0 && yyv4700 == nil { + yyv4700 = []EndpointSubset{} + yyc4700 = true + } + } + yyh4700.End() + if yyc4700 { + *v = yyv4700 + } +} + +func (x codecSelfer1234) encSliceEndpointAddress(v []EndpointAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4704 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4705 := &yyv4704 + yy4705.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointAddress(v *[]EndpointAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4706 := *v + yyh4706, yyl4706 := z.DecSliceHelperStart() + var yyc4706 bool + if yyl4706 == 0 { + if yyv4706 == nil { + yyv4706 = []EndpointAddress{} + yyc4706 = true + } else if len(yyv4706) != 0 { + yyv4706 = yyv4706[:0] + yyc4706 = true + } + } else if yyl4706 > 0 { + var yyrr4706, yyrl4706 int + var yyrt4706 bool + if yyl4706 > cap(yyv4706) { + + yyrg4706 := len(yyv4706) > 0 + yyv24706 := yyv4706 + yyrl4706, yyrt4706 = z.DecInferLen(yyl4706, z.DecBasicHandle().MaxInitLen, 48) + if yyrt4706 { + if yyrl4706 <= cap(yyv4706) { + yyv4706 = yyv4706[:yyrl4706] + } else { + yyv4706 = make([]EndpointAddress, yyrl4706) + } + } else { + yyv4706 = make([]EndpointAddress, yyrl4706) + } + yyc4706 = true + yyrr4706 = len(yyv4706) + if yyrg4706 { + copy(yyv4706, yyv24706) + } + } else if yyl4706 != len(yyv4706) { + yyv4706 = yyv4706[:yyl4706] + yyc4706 = true + } + yyj4706 := 0 + for ; yyj4706 < yyrr4706; yyj4706++ { + yyh4706.ElemContainerState(yyj4706) + if r.TryDecodeAsNil() { + yyv4706[yyj4706] = EndpointAddress{} + } else { + yyv4707 := &yyv4706[yyj4706] + yyv4707.CodecDecodeSelf(d) + } + + } + if yyrt4706 { + for ; yyj4706 < yyl4706; yyj4706++ { + yyv4706 = append(yyv4706, EndpointAddress{}) + yyh4706.ElemContainerState(yyj4706) + if r.TryDecodeAsNil() { + yyv4706[yyj4706] = EndpointAddress{} + } else { + yyv4708 := &yyv4706[yyj4706] + yyv4708.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4706 := 0 + for ; !r.CheckBreak(); yyj4706++ { + + if yyj4706 >= len(yyv4706) { + yyv4706 = append(yyv4706, EndpointAddress{}) // var yyz4706 EndpointAddress + yyc4706 = true + } + yyh4706.ElemContainerState(yyj4706) + if yyj4706 < len(yyv4706) { + if r.TryDecodeAsNil() { + yyv4706[yyj4706] = EndpointAddress{} + } else { + yyv4709 := &yyv4706[yyj4706] + yyv4709.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4706 < len(yyv4706) { + yyv4706 = yyv4706[:yyj4706] + yyc4706 = true + } else if yyj4706 == 0 && yyv4706 == nil { + yyv4706 = []EndpointAddress{} + yyc4706 = true + } + } + yyh4706.End() + if yyc4706 { + *v = yyv4706 + } +} + +func (x codecSelfer1234) encSliceEndpointPort(v []EndpointPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4710 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4711 := &yyv4710 + yy4711.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointPort(v *[]EndpointPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4712 := *v + yyh4712, yyl4712 := z.DecSliceHelperStart() + var yyc4712 bool + if yyl4712 == 0 { + if yyv4712 == nil { + yyv4712 = []EndpointPort{} + yyc4712 = true + } else if len(yyv4712) != 0 { + yyv4712 = yyv4712[:0] + yyc4712 = true + } + } else if yyl4712 > 0 { + var yyrr4712, yyrl4712 int + var yyrt4712 bool + if yyl4712 > cap(yyv4712) { + + yyrg4712 := len(yyv4712) > 0 + yyv24712 := yyv4712 + yyrl4712, yyrt4712 = z.DecInferLen(yyl4712, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4712 { + if yyrl4712 <= cap(yyv4712) { + yyv4712 = yyv4712[:yyrl4712] + } else { + yyv4712 = make([]EndpointPort, yyrl4712) + } + } else { + yyv4712 = make([]EndpointPort, yyrl4712) + } + yyc4712 = true + yyrr4712 = len(yyv4712) + if yyrg4712 { + copy(yyv4712, yyv24712) + } + } else if yyl4712 != len(yyv4712) { + yyv4712 = yyv4712[:yyl4712] + yyc4712 = true + } + yyj4712 := 0 + for ; yyj4712 < yyrr4712; yyj4712++ { + yyh4712.ElemContainerState(yyj4712) + if r.TryDecodeAsNil() { + yyv4712[yyj4712] = EndpointPort{} + } else { + yyv4713 := &yyv4712[yyj4712] + yyv4713.CodecDecodeSelf(d) + } + + } + if yyrt4712 { + for ; yyj4712 < yyl4712; yyj4712++ { + yyv4712 = append(yyv4712, EndpointPort{}) + yyh4712.ElemContainerState(yyj4712) + if r.TryDecodeAsNil() { + yyv4712[yyj4712] = EndpointPort{} + } else { + yyv4714 := &yyv4712[yyj4712] + yyv4714.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4712 := 0 + for ; !r.CheckBreak(); yyj4712++ { + + if yyj4712 >= len(yyv4712) { + yyv4712 = append(yyv4712, EndpointPort{}) // var yyz4712 EndpointPort + yyc4712 = true + } + yyh4712.ElemContainerState(yyj4712) + if yyj4712 < len(yyv4712) { + if r.TryDecodeAsNil() { + yyv4712[yyj4712] = EndpointPort{} + } else { + yyv4715 := &yyv4712[yyj4712] + yyv4715.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4712 < len(yyv4712) { + yyv4712 = yyv4712[:yyj4712] + yyc4712 = true + } else if yyj4712 == 0 && yyv4712 == nil { + yyv4712 = []EndpointPort{} + yyc4712 = true + } + } + yyh4712.End() + if yyc4712 { + *v = yyv4712 + } +} + +func (x codecSelfer1234) encSliceEndpoints(v []Endpoints, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4716 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4717 := &yyv4716 + yy4717.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpoints(v *[]Endpoints, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4718 := *v + yyh4718, yyl4718 := z.DecSliceHelperStart() + var yyc4718 bool + if yyl4718 == 0 { + if yyv4718 == nil { + yyv4718 = []Endpoints{} + yyc4718 = true + } else if len(yyv4718) != 0 { + yyv4718 = yyv4718[:0] + yyc4718 = true + } + } else if yyl4718 > 0 { + var yyrr4718, yyrl4718 int + var yyrt4718 bool + if yyl4718 > cap(yyv4718) { + + yyrg4718 := len(yyv4718) > 0 + yyv24718 := yyv4718 + yyrl4718, yyrt4718 = z.DecInferLen(yyl4718, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4718 { + if yyrl4718 <= cap(yyv4718) { + yyv4718 = yyv4718[:yyrl4718] + } else { + yyv4718 = make([]Endpoints, yyrl4718) + } + } else { + yyv4718 = make([]Endpoints, yyrl4718) + } + yyc4718 = true + yyrr4718 = len(yyv4718) + if yyrg4718 { + copy(yyv4718, yyv24718) + } + } else if yyl4718 != len(yyv4718) { + yyv4718 = yyv4718[:yyl4718] + yyc4718 = true + } + yyj4718 := 0 + for ; yyj4718 < yyrr4718; yyj4718++ { + yyh4718.ElemContainerState(yyj4718) + if r.TryDecodeAsNil() { + yyv4718[yyj4718] = Endpoints{} + } else { + yyv4719 := &yyv4718[yyj4718] + yyv4719.CodecDecodeSelf(d) + } + + } + if yyrt4718 { + for ; yyj4718 < yyl4718; yyj4718++ { + yyv4718 = append(yyv4718, Endpoints{}) + yyh4718.ElemContainerState(yyj4718) + if r.TryDecodeAsNil() { + yyv4718[yyj4718] = Endpoints{} + } else { + yyv4720 := &yyv4718[yyj4718] + yyv4720.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4718 := 0 + for ; !r.CheckBreak(); yyj4718++ { + + if yyj4718 >= len(yyv4718) { + yyv4718 = append(yyv4718, Endpoints{}) // var yyz4718 Endpoints + yyc4718 = true + } + yyh4718.ElemContainerState(yyj4718) + if yyj4718 < len(yyv4718) { + if r.TryDecodeAsNil() { + yyv4718[yyj4718] = Endpoints{} + } else { + yyv4721 := &yyv4718[yyj4718] + yyv4721.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4718 < len(yyv4718) { + yyv4718 = yyv4718[:yyj4718] + yyc4718 = true + } else if yyj4718 == 0 && yyv4718 == nil { + yyv4718 = []Endpoints{} + yyc4718 = true + } + } + yyh4718.End() + if yyc4718 { + *v = yyv4718 + } +} + +func (x codecSelfer1234) encSliceNodeCondition(v []NodeCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4722 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4723 := &yyv4722 + yy4723.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeCondition(v *[]NodeCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4724 := *v + yyh4724, yyl4724 := z.DecSliceHelperStart() + var yyc4724 bool + if yyl4724 == 0 { + if yyv4724 == nil { + yyv4724 = []NodeCondition{} + yyc4724 = true + } else if len(yyv4724) != 0 { + yyv4724 = yyv4724[:0] + yyc4724 = true + } + } else if yyl4724 > 0 { + var yyrr4724, yyrl4724 int + var yyrt4724 bool + if yyl4724 > cap(yyv4724) { + + yyrg4724 := len(yyv4724) > 0 + yyv24724 := yyv4724 + yyrl4724, yyrt4724 = z.DecInferLen(yyl4724, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4724 { + if yyrl4724 <= cap(yyv4724) { + yyv4724 = yyv4724[:yyrl4724] + } else { + yyv4724 = make([]NodeCondition, yyrl4724) + } + } else { + yyv4724 = make([]NodeCondition, yyrl4724) + } + yyc4724 = true + yyrr4724 = len(yyv4724) + if yyrg4724 { + copy(yyv4724, yyv24724) + } + } else if yyl4724 != len(yyv4724) { + yyv4724 = yyv4724[:yyl4724] + yyc4724 = true + } + yyj4724 := 0 + for ; yyj4724 < yyrr4724; yyj4724++ { + yyh4724.ElemContainerState(yyj4724) + if r.TryDecodeAsNil() { + yyv4724[yyj4724] = NodeCondition{} + } else { + yyv4725 := &yyv4724[yyj4724] + yyv4725.CodecDecodeSelf(d) + } + + } + if yyrt4724 { + for ; yyj4724 < yyl4724; yyj4724++ { + yyv4724 = append(yyv4724, NodeCondition{}) + yyh4724.ElemContainerState(yyj4724) + if r.TryDecodeAsNil() { + yyv4724[yyj4724] = NodeCondition{} + } else { + yyv4726 := &yyv4724[yyj4724] + yyv4726.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4724 := 0 + for ; !r.CheckBreak(); yyj4724++ { + + if yyj4724 >= len(yyv4724) { + yyv4724 = append(yyv4724, NodeCondition{}) // var yyz4724 NodeCondition + yyc4724 = true + } + yyh4724.ElemContainerState(yyj4724) + if yyj4724 < len(yyv4724) { + if r.TryDecodeAsNil() { + yyv4724[yyj4724] = NodeCondition{} + } else { + yyv4727 := &yyv4724[yyj4724] + yyv4727.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4724 < len(yyv4724) { + yyv4724 = yyv4724[:yyj4724] + yyc4724 = true + } else if yyj4724 == 0 && yyv4724 == nil { + yyv4724 = []NodeCondition{} + yyc4724 = true + } + } + yyh4724.End() + if yyc4724 { + *v = yyv4724 + } +} + +func (x codecSelfer1234) encSliceNodeAddress(v []NodeAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4728 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4729 := &yyv4728 + yy4729.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeAddress(v *[]NodeAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4730 := *v + yyh4730, yyl4730 := z.DecSliceHelperStart() + var yyc4730 bool + if yyl4730 == 0 { + if yyv4730 == nil { + yyv4730 = []NodeAddress{} + yyc4730 = true + } else if len(yyv4730) != 0 { + yyv4730 = yyv4730[:0] + yyc4730 = true + } + } else if yyl4730 > 0 { + var yyrr4730, yyrl4730 int + var yyrt4730 bool + if yyl4730 > cap(yyv4730) { + + yyrg4730 := len(yyv4730) > 0 + yyv24730 := yyv4730 + yyrl4730, yyrt4730 = z.DecInferLen(yyl4730, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4730 { + if yyrl4730 <= cap(yyv4730) { + yyv4730 = yyv4730[:yyrl4730] + } else { + yyv4730 = make([]NodeAddress, yyrl4730) + } + } else { + yyv4730 = make([]NodeAddress, yyrl4730) + } + yyc4730 = true + yyrr4730 = len(yyv4730) + if yyrg4730 { + copy(yyv4730, yyv24730) + } + } else if yyl4730 != len(yyv4730) { + yyv4730 = yyv4730[:yyl4730] + yyc4730 = true + } + yyj4730 := 0 + for ; yyj4730 < yyrr4730; yyj4730++ { + yyh4730.ElemContainerState(yyj4730) + if r.TryDecodeAsNil() { + yyv4730[yyj4730] = NodeAddress{} + } else { + yyv4731 := &yyv4730[yyj4730] + yyv4731.CodecDecodeSelf(d) + } + + } + if yyrt4730 { + for ; yyj4730 < yyl4730; yyj4730++ { + yyv4730 = append(yyv4730, NodeAddress{}) + yyh4730.ElemContainerState(yyj4730) + if r.TryDecodeAsNil() { + yyv4730[yyj4730] = NodeAddress{} + } else { + yyv4732 := &yyv4730[yyj4730] + yyv4732.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4730 := 0 + for ; !r.CheckBreak(); yyj4730++ { + + if yyj4730 >= len(yyv4730) { + yyv4730 = append(yyv4730, NodeAddress{}) // var yyz4730 NodeAddress + yyc4730 = true + } + yyh4730.ElemContainerState(yyj4730) + if yyj4730 < len(yyv4730) { + if r.TryDecodeAsNil() { + yyv4730[yyj4730] = NodeAddress{} + } else { + yyv4733 := &yyv4730[yyj4730] + yyv4733.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4730 < len(yyv4730) { + yyv4730 = yyv4730[:yyj4730] + yyc4730 = true + } else if yyj4730 == 0 && yyv4730 == nil { + yyv4730 = []NodeAddress{} + yyc4730 = true + } + } + yyh4730.End() + if yyc4730 { + *v = yyv4730 + } +} + +func (x codecSelfer1234) encSliceContainerImage(v []ContainerImage, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4734 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4735 := &yyv4734 + yy4735.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerImage(v *[]ContainerImage, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4736 := *v + yyh4736, yyl4736 := z.DecSliceHelperStart() + var yyc4736 bool + if yyl4736 == 0 { + if yyv4736 == nil { + yyv4736 = []ContainerImage{} + yyc4736 = true + } else if len(yyv4736) != 0 { + yyv4736 = yyv4736[:0] + yyc4736 = true + } + } else if yyl4736 > 0 { + var yyrr4736, yyrl4736 int + var yyrt4736 bool + if yyl4736 > cap(yyv4736) { + + yyrg4736 := len(yyv4736) > 0 + yyv24736 := yyv4736 + yyrl4736, yyrt4736 = z.DecInferLen(yyl4736, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4736 { + if yyrl4736 <= cap(yyv4736) { + yyv4736 = yyv4736[:yyrl4736] + } else { + yyv4736 = make([]ContainerImage, yyrl4736) + } + } else { + yyv4736 = make([]ContainerImage, yyrl4736) + } + yyc4736 = true + yyrr4736 = len(yyv4736) + if yyrg4736 { + copy(yyv4736, yyv24736) + } + } else if yyl4736 != len(yyv4736) { + yyv4736 = yyv4736[:yyl4736] + yyc4736 = true + } + yyj4736 := 0 + for ; yyj4736 < yyrr4736; yyj4736++ { + yyh4736.ElemContainerState(yyj4736) + if r.TryDecodeAsNil() { + yyv4736[yyj4736] = ContainerImage{} + } else { + yyv4737 := &yyv4736[yyj4736] + yyv4737.CodecDecodeSelf(d) + } + + } + if yyrt4736 { + for ; yyj4736 < yyl4736; yyj4736++ { + yyv4736 = append(yyv4736, ContainerImage{}) + yyh4736.ElemContainerState(yyj4736) + if r.TryDecodeAsNil() { + yyv4736[yyj4736] = ContainerImage{} + } else { + yyv4738 := &yyv4736[yyj4736] + yyv4738.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4736 := 0 + for ; !r.CheckBreak(); yyj4736++ { + + if yyj4736 >= len(yyv4736) { + yyv4736 = append(yyv4736, ContainerImage{}) // var yyz4736 ContainerImage + yyc4736 = true + } + yyh4736.ElemContainerState(yyj4736) + if yyj4736 < len(yyv4736) { + if r.TryDecodeAsNil() { + yyv4736[yyj4736] = ContainerImage{} + } else { + yyv4739 := &yyv4736[yyj4736] + yyv4739.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4736 < len(yyv4736) { + yyv4736 = yyv4736[:yyj4736] + yyc4736 = true + } else if yyj4736 == 0 && yyv4736 == nil { + yyv4736 = []ContainerImage{} + yyc4736 = true + } + } + yyh4736.End() + if yyc4736 { + *v = yyv4736 + } +} + +func (x codecSelfer1234) encSliceUniqueVolumeName(v []UniqueVolumeName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4740 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4740.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceUniqueVolumeName(v *[]UniqueVolumeName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4741 := *v + yyh4741, yyl4741 := z.DecSliceHelperStart() + var yyc4741 bool + if yyl4741 == 0 { + if yyv4741 == nil { + yyv4741 = []UniqueVolumeName{} + yyc4741 = true + } else if len(yyv4741) != 0 { + yyv4741 = yyv4741[:0] + yyc4741 = true + } + } else if yyl4741 > 0 { + var yyrr4741, yyrl4741 int + var yyrt4741 bool + if yyl4741 > cap(yyv4741) { + + yyrl4741, yyrt4741 = z.DecInferLen(yyl4741, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4741 { + if yyrl4741 <= cap(yyv4741) { + yyv4741 = yyv4741[:yyrl4741] + } else { + yyv4741 = make([]UniqueVolumeName, yyrl4741) + } + } else { + yyv4741 = make([]UniqueVolumeName, yyrl4741) + } + yyc4741 = true + yyrr4741 = len(yyv4741) + } else if yyl4741 != len(yyv4741) { + yyv4741 = yyv4741[:yyl4741] + yyc4741 = true + } + yyj4741 := 0 + for ; yyj4741 < yyrr4741; yyj4741++ { + yyh4741.ElemContainerState(yyj4741) + if r.TryDecodeAsNil() { + yyv4741[yyj4741] = "" + } else { + yyv4741[yyj4741] = UniqueVolumeName(r.DecodeString()) + } + + } + if yyrt4741 { + for ; yyj4741 < yyl4741; yyj4741++ { + yyv4741 = append(yyv4741, "") + yyh4741.ElemContainerState(yyj4741) + if r.TryDecodeAsNil() { + yyv4741[yyj4741] = "" + } else { + yyv4741[yyj4741] = UniqueVolumeName(r.DecodeString()) + } + + } + } + + } else { + yyj4741 := 0 + for ; !r.CheckBreak(); yyj4741++ { + + if yyj4741 >= len(yyv4741) { + yyv4741 = append(yyv4741, "") // var yyz4741 UniqueVolumeName + yyc4741 = true + } + yyh4741.ElemContainerState(yyj4741) + if yyj4741 < len(yyv4741) { + if r.TryDecodeAsNil() { + yyv4741[yyj4741] = "" + } else { + yyv4741[yyj4741] = UniqueVolumeName(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4741 < len(yyv4741) { + yyv4741 = yyv4741[:yyj4741] + yyc4741 = true + } else if yyj4741 == 0 && yyv4741 == nil { + yyv4741 = []UniqueVolumeName{} + yyc4741 = true + } + } + yyh4741.End() + if yyc4741 { + *v = yyv4741 + } +} + +func (x codecSelfer1234) encSliceAttachedVolume(v []AttachedVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4745 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4746 := &yyv4745 + yy4746.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAttachedVolume(v *[]AttachedVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4747 := *v + yyh4747, yyl4747 := z.DecSliceHelperStart() + var yyc4747 bool + if yyl4747 == 0 { + if yyv4747 == nil { + yyv4747 = []AttachedVolume{} + yyc4747 = true + } else if len(yyv4747) != 0 { + yyv4747 = yyv4747[:0] + yyc4747 = true + } + } else if yyl4747 > 0 { + var yyrr4747, yyrl4747 int + var yyrt4747 bool + if yyl4747 > cap(yyv4747) { + + yyrg4747 := len(yyv4747) > 0 + yyv24747 := yyv4747 + yyrl4747, yyrt4747 = z.DecInferLen(yyl4747, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4747 { + if yyrl4747 <= cap(yyv4747) { + yyv4747 = yyv4747[:yyrl4747] + } else { + yyv4747 = make([]AttachedVolume, yyrl4747) + } + } else { + yyv4747 = make([]AttachedVolume, yyrl4747) + } + yyc4747 = true + yyrr4747 = len(yyv4747) + if yyrg4747 { + copy(yyv4747, yyv24747) + } + } else if yyl4747 != len(yyv4747) { + yyv4747 = yyv4747[:yyl4747] + yyc4747 = true + } + yyj4747 := 0 + for ; yyj4747 < yyrr4747; yyj4747++ { + yyh4747.ElemContainerState(yyj4747) + if r.TryDecodeAsNil() { + yyv4747[yyj4747] = AttachedVolume{} + } else { + yyv4748 := &yyv4747[yyj4747] + yyv4748.CodecDecodeSelf(d) + } + + } + if yyrt4747 { + for ; yyj4747 < yyl4747; yyj4747++ { + yyv4747 = append(yyv4747, AttachedVolume{}) + yyh4747.ElemContainerState(yyj4747) + if r.TryDecodeAsNil() { + yyv4747[yyj4747] = AttachedVolume{} + } else { + yyv4749 := &yyv4747[yyj4747] + yyv4749.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4747 := 0 + for ; !r.CheckBreak(); yyj4747++ { + + if yyj4747 >= len(yyv4747) { + yyv4747 = append(yyv4747, AttachedVolume{}) // var yyz4747 AttachedVolume + yyc4747 = true + } + yyh4747.ElemContainerState(yyj4747) + if yyj4747 < len(yyv4747) { + if r.TryDecodeAsNil() { + yyv4747[yyj4747] = AttachedVolume{} + } else { + yyv4750 := &yyv4747[yyj4747] + yyv4750.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4747 < len(yyv4747) { + yyv4747 = yyv4747[:yyj4747] + yyc4747 = true + } else if yyj4747 == 0 && yyv4747 == nil { + yyv4747 = []AttachedVolume{} + yyc4747 = true + } + } + yyh4747.End() + if yyc4747 { + *v = yyv4747 + } +} + +func (x codecSelfer1234) encSlicePreferAvoidPodsEntry(v []PreferAvoidPodsEntry, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4751 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4752 := &yyv4751 + yy4752.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferAvoidPodsEntry(v *[]PreferAvoidPodsEntry, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4753 := *v + yyh4753, yyl4753 := z.DecSliceHelperStart() + var yyc4753 bool + if yyl4753 == 0 { + if yyv4753 == nil { + yyv4753 = []PreferAvoidPodsEntry{} + yyc4753 = true + } else if len(yyv4753) != 0 { + yyv4753 = yyv4753[:0] + yyc4753 = true + } + } else if yyl4753 > 0 { + var yyrr4753, yyrl4753 int + var yyrt4753 bool + if yyl4753 > cap(yyv4753) { + + yyrg4753 := len(yyv4753) > 0 + yyv24753 := yyv4753 + yyrl4753, yyrt4753 = z.DecInferLen(yyl4753, z.DecBasicHandle().MaxInitLen, 64) + if yyrt4753 { + if yyrl4753 <= cap(yyv4753) { + yyv4753 = yyv4753[:yyrl4753] + } else { + yyv4753 = make([]PreferAvoidPodsEntry, yyrl4753) + } + } else { + yyv4753 = make([]PreferAvoidPodsEntry, yyrl4753) + } + yyc4753 = true + yyrr4753 = len(yyv4753) + if yyrg4753 { + copy(yyv4753, yyv24753) + } + } else if yyl4753 != len(yyv4753) { + yyv4753 = yyv4753[:yyl4753] + yyc4753 = true + } + yyj4753 := 0 + for ; yyj4753 < yyrr4753; yyj4753++ { + yyh4753.ElemContainerState(yyj4753) + if r.TryDecodeAsNil() { + yyv4753[yyj4753] = PreferAvoidPodsEntry{} + } else { + yyv4754 := &yyv4753[yyj4753] + yyv4754.CodecDecodeSelf(d) + } + + } + if yyrt4753 { + for ; yyj4753 < yyl4753; yyj4753++ { + yyv4753 = append(yyv4753, PreferAvoidPodsEntry{}) + yyh4753.ElemContainerState(yyj4753) + if r.TryDecodeAsNil() { + yyv4753[yyj4753] = PreferAvoidPodsEntry{} + } else { + yyv4755 := &yyv4753[yyj4753] + yyv4755.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4753 := 0 + for ; !r.CheckBreak(); yyj4753++ { + + if yyj4753 >= len(yyv4753) { + yyv4753 = append(yyv4753, PreferAvoidPodsEntry{}) // var yyz4753 PreferAvoidPodsEntry + yyc4753 = true + } + yyh4753.ElemContainerState(yyj4753) + if yyj4753 < len(yyv4753) { + if r.TryDecodeAsNil() { + yyv4753[yyj4753] = PreferAvoidPodsEntry{} + } else { + yyv4756 := &yyv4753[yyj4753] + yyv4756.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4753 < len(yyv4753) { + yyv4753 = yyv4753[:yyj4753] + yyc4753 = true + } else if yyj4753 == 0 && yyv4753 == nil { + yyv4753 = []PreferAvoidPodsEntry{} + yyc4753 = true + } + } + yyh4753.End() + if yyc4753 { + *v = yyv4753 + } +} + +func (x codecSelfer1234) encResourceList(v ResourceList, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk4757, yyv4757 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yyk4757.CodecEncodeSelf(e) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4758 := &yyv4757 + yym4759 := z.EncBinary() + _ = yym4759 + if false { + } else if z.HasExtensions() && z.EncExt(yy4758) { + } else if !yym4759 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4758) + } else { + z.EncFallback(yy4758) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decResourceList(v *ResourceList, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4760 := *v + yyl4760 := r.ReadMapStart() + yybh4760 := z.DecBasicHandle() + if yyv4760 == nil { + yyrl4760, _ := z.DecInferLen(yyl4760, yybh4760.MaxInitLen, 72) + yyv4760 = make(map[ResourceName]pkg3_resource.Quantity, yyrl4760) + *v = yyv4760 + } + var yymk4760 ResourceName + var yymv4760 pkg3_resource.Quantity + var yymg4760 bool + if yybh4760.MapValueReset { + yymg4760 = true + } + if yyl4760 > 0 { + for yyj4760 := 0; yyj4760 < yyl4760; yyj4760++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4760 = "" + } else { + yymk4760 = ResourceName(r.DecodeString()) + } + + if yymg4760 { + yymv4760 = yyv4760[yymk4760] + } else { + yymv4760 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4760 = pkg3_resource.Quantity{} + } else { + yyv4762 := &yymv4760 + yym4763 := z.DecBinary() + _ = yym4763 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4762) { + } else if !yym4763 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4762) + } else { + z.DecFallback(yyv4762, false) + } + } + + if yyv4760 != nil { + yyv4760[yymk4760] = yymv4760 + } + } + } else if yyl4760 < 0 { + for yyj4760 := 0; !r.CheckBreak(); yyj4760++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4760 = "" + } else { + yymk4760 = ResourceName(r.DecodeString()) + } + + if yymg4760 { + yymv4760 = yyv4760[yymk4760] + } else { + yymv4760 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4760 = pkg3_resource.Quantity{} + } else { + yyv4765 := &yymv4760 + yym4766 := z.DecBinary() + _ = yym4766 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4765) { + } else if !yym4766 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4765) + } else { + z.DecFallback(yyv4765, false) + } + } + + if yyv4760 != nil { + yyv4760[yymk4760] = yymv4760 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceNode(v []Node, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4767 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4768 := &yyv4767 + yy4768.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNode(v *[]Node, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4769 := *v + yyh4769, yyl4769 := z.DecSliceHelperStart() + var yyc4769 bool + if yyl4769 == 0 { + if yyv4769 == nil { + yyv4769 = []Node{} + yyc4769 = true + } else if len(yyv4769) != 0 { + yyv4769 = yyv4769[:0] + yyc4769 = true + } + } else if yyl4769 > 0 { + var yyrr4769, yyrl4769 int + var yyrt4769 bool + if yyl4769 > cap(yyv4769) { + + yyrg4769 := len(yyv4769) > 0 + yyv24769 := yyv4769 + yyrl4769, yyrt4769 = z.DecInferLen(yyl4769, z.DecBasicHandle().MaxInitLen, 632) + if yyrt4769 { + if yyrl4769 <= cap(yyv4769) { + yyv4769 = yyv4769[:yyrl4769] + } else { + yyv4769 = make([]Node, yyrl4769) + } + } else { + yyv4769 = make([]Node, yyrl4769) + } + yyc4769 = true + yyrr4769 = len(yyv4769) + if yyrg4769 { + copy(yyv4769, yyv24769) + } + } else if yyl4769 != len(yyv4769) { + yyv4769 = yyv4769[:yyl4769] + yyc4769 = true + } + yyj4769 := 0 + for ; yyj4769 < yyrr4769; yyj4769++ { + yyh4769.ElemContainerState(yyj4769) + if r.TryDecodeAsNil() { + yyv4769[yyj4769] = Node{} + } else { + yyv4770 := &yyv4769[yyj4769] + yyv4770.CodecDecodeSelf(d) + } + + } + if yyrt4769 { + for ; yyj4769 < yyl4769; yyj4769++ { + yyv4769 = append(yyv4769, Node{}) + yyh4769.ElemContainerState(yyj4769) + if r.TryDecodeAsNil() { + yyv4769[yyj4769] = Node{} + } else { + yyv4771 := &yyv4769[yyj4769] + yyv4771.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4769 := 0 + for ; !r.CheckBreak(); yyj4769++ { + + if yyj4769 >= len(yyv4769) { + yyv4769 = append(yyv4769, Node{}) // var yyz4769 Node + yyc4769 = true + } + yyh4769.ElemContainerState(yyj4769) + if yyj4769 < len(yyv4769) { + if r.TryDecodeAsNil() { + yyv4769[yyj4769] = Node{} + } else { + yyv4772 := &yyv4769[yyj4769] + yyv4772.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4769 < len(yyv4769) { + yyv4769 = yyv4769[:yyj4769] + yyc4769 = true + } else if yyj4769 == 0 && yyv4769 == nil { + yyv4769 = []Node{} + yyc4769 = true + } + } + yyh4769.End() + if yyc4769 { + *v = yyv4769 + } +} + +func (x codecSelfer1234) encSliceFinalizerName(v []FinalizerName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4773 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4773.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFinalizerName(v *[]FinalizerName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4774 := *v + yyh4774, yyl4774 := z.DecSliceHelperStart() + var yyc4774 bool + if yyl4774 == 0 { + if yyv4774 == nil { + yyv4774 = []FinalizerName{} + yyc4774 = true + } else if len(yyv4774) != 0 { + yyv4774 = yyv4774[:0] + yyc4774 = true + } + } else if yyl4774 > 0 { + var yyrr4774, yyrl4774 int + var yyrt4774 bool + if yyl4774 > cap(yyv4774) { + + yyrl4774, yyrt4774 = z.DecInferLen(yyl4774, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4774 { + if yyrl4774 <= cap(yyv4774) { + yyv4774 = yyv4774[:yyrl4774] + } else { + yyv4774 = make([]FinalizerName, yyrl4774) + } + } else { + yyv4774 = make([]FinalizerName, yyrl4774) + } + yyc4774 = true + yyrr4774 = len(yyv4774) + } else if yyl4774 != len(yyv4774) { + yyv4774 = yyv4774[:yyl4774] + yyc4774 = true + } + yyj4774 := 0 + for ; yyj4774 < yyrr4774; yyj4774++ { + yyh4774.ElemContainerState(yyj4774) + if r.TryDecodeAsNil() { + yyv4774[yyj4774] = "" + } else { + yyv4774[yyj4774] = FinalizerName(r.DecodeString()) + } + + } + if yyrt4774 { + for ; yyj4774 < yyl4774; yyj4774++ { + yyv4774 = append(yyv4774, "") + yyh4774.ElemContainerState(yyj4774) + if r.TryDecodeAsNil() { + yyv4774[yyj4774] = "" + } else { + yyv4774[yyj4774] = FinalizerName(r.DecodeString()) + } + + } + } + + } else { + yyj4774 := 0 + for ; !r.CheckBreak(); yyj4774++ { + + if yyj4774 >= len(yyv4774) { + yyv4774 = append(yyv4774, "") // var yyz4774 FinalizerName + yyc4774 = true + } + yyh4774.ElemContainerState(yyj4774) + if yyj4774 < len(yyv4774) { + if r.TryDecodeAsNil() { + yyv4774[yyj4774] = "" + } else { + yyv4774[yyj4774] = FinalizerName(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4774 < len(yyv4774) { + yyv4774 = yyv4774[:yyj4774] + yyc4774 = true + } else if yyj4774 == 0 && yyv4774 == nil { + yyv4774 = []FinalizerName{} + yyc4774 = true + } + } + yyh4774.End() + if yyc4774 { + *v = yyv4774 + } +} + +func (x codecSelfer1234) encSliceNamespace(v []Namespace, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4778 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4779 := &yyv4778 + yy4779.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNamespace(v *[]Namespace, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4780 := *v + yyh4780, yyl4780 := z.DecSliceHelperStart() + var yyc4780 bool + if yyl4780 == 0 { + if yyv4780 == nil { + yyv4780 = []Namespace{} + yyc4780 = true + } else if len(yyv4780) != 0 { + yyv4780 = yyv4780[:0] + yyc4780 = true + } + } else if yyl4780 > 0 { + var yyrr4780, yyrl4780 int + var yyrt4780 bool + if yyl4780 > cap(yyv4780) { + + yyrg4780 := len(yyv4780) > 0 + yyv24780 := yyv4780 + yyrl4780, yyrt4780 = z.DecInferLen(yyl4780, z.DecBasicHandle().MaxInitLen, 296) + if yyrt4780 { + if yyrl4780 <= cap(yyv4780) { + yyv4780 = yyv4780[:yyrl4780] + } else { + yyv4780 = make([]Namespace, yyrl4780) + } + } else { + yyv4780 = make([]Namespace, yyrl4780) + } + yyc4780 = true + yyrr4780 = len(yyv4780) + if yyrg4780 { + copy(yyv4780, yyv24780) + } + } else if yyl4780 != len(yyv4780) { + yyv4780 = yyv4780[:yyl4780] + yyc4780 = true + } + yyj4780 := 0 + for ; yyj4780 < yyrr4780; yyj4780++ { + yyh4780.ElemContainerState(yyj4780) + if r.TryDecodeAsNil() { + yyv4780[yyj4780] = Namespace{} + } else { + yyv4781 := &yyv4780[yyj4780] + yyv4781.CodecDecodeSelf(d) + } + + } + if yyrt4780 { + for ; yyj4780 < yyl4780; yyj4780++ { + yyv4780 = append(yyv4780, Namespace{}) + yyh4780.ElemContainerState(yyj4780) + if r.TryDecodeAsNil() { + yyv4780[yyj4780] = Namespace{} + } else { + yyv4782 := &yyv4780[yyj4780] + yyv4782.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4780 := 0 + for ; !r.CheckBreak(); yyj4780++ { + + if yyj4780 >= len(yyv4780) { + yyv4780 = append(yyv4780, Namespace{}) // var yyz4780 Namespace + yyc4780 = true + } + yyh4780.ElemContainerState(yyj4780) + if yyj4780 < len(yyv4780) { + if r.TryDecodeAsNil() { + yyv4780[yyj4780] = Namespace{} + } else { + yyv4783 := &yyv4780[yyj4780] + yyv4783.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4780 < len(yyv4780) { + yyv4780 = yyv4780[:yyj4780] + yyc4780 = true + } else if yyj4780 == 0 && yyv4780 == nil { + yyv4780 = []Namespace{} + yyc4780 = true + } + } + yyh4780.End() + if yyc4780 { + *v = yyv4780 + } +} + +func (x codecSelfer1234) encSliceEvent(v []Event, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4784 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4785 := &yyv4784 + yy4785.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEvent(v *[]Event, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4786 := *v + yyh4786, yyl4786 := z.DecSliceHelperStart() + var yyc4786 bool + if yyl4786 == 0 { + if yyv4786 == nil { + yyv4786 = []Event{} + yyc4786 = true + } else if len(yyv4786) != 0 { + yyv4786 = yyv4786[:0] + yyc4786 = true + } + } else if yyl4786 > 0 { + var yyrr4786, yyrl4786 int + var yyrt4786 bool + if yyl4786 > cap(yyv4786) { + + yyrg4786 := len(yyv4786) > 0 + yyv24786 := yyv4786 + yyrl4786, yyrt4786 = z.DecInferLen(yyl4786, z.DecBasicHandle().MaxInitLen, 504) + if yyrt4786 { + if yyrl4786 <= cap(yyv4786) { + yyv4786 = yyv4786[:yyrl4786] + } else { + yyv4786 = make([]Event, yyrl4786) + } + } else { + yyv4786 = make([]Event, yyrl4786) + } + yyc4786 = true + yyrr4786 = len(yyv4786) + if yyrg4786 { + copy(yyv4786, yyv24786) + } + } else if yyl4786 != len(yyv4786) { + yyv4786 = yyv4786[:yyl4786] + yyc4786 = true + } + yyj4786 := 0 + for ; yyj4786 < yyrr4786; yyj4786++ { + yyh4786.ElemContainerState(yyj4786) + if r.TryDecodeAsNil() { + yyv4786[yyj4786] = Event{} + } else { + yyv4787 := &yyv4786[yyj4786] + yyv4787.CodecDecodeSelf(d) + } + + } + if yyrt4786 { + for ; yyj4786 < yyl4786; yyj4786++ { + yyv4786 = append(yyv4786, Event{}) + yyh4786.ElemContainerState(yyj4786) + if r.TryDecodeAsNil() { + yyv4786[yyj4786] = Event{} + } else { + yyv4788 := &yyv4786[yyj4786] + yyv4788.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4786 := 0 + for ; !r.CheckBreak(); yyj4786++ { + + if yyj4786 >= len(yyv4786) { + yyv4786 = append(yyv4786, Event{}) // var yyz4786 Event + yyc4786 = true + } + yyh4786.ElemContainerState(yyj4786) + if yyj4786 < len(yyv4786) { + if r.TryDecodeAsNil() { + yyv4786[yyj4786] = Event{} + } else { + yyv4789 := &yyv4786[yyj4786] + yyv4789.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4786 < len(yyv4786) { + yyv4786 = yyv4786[:yyj4786] + yyc4786 = true + } else if yyj4786 == 0 && yyv4786 == nil { + yyv4786 = []Event{} + yyc4786 = true + } + } + yyh4786.End() + if yyc4786 { + *v = yyv4786 + } +} + +func (x codecSelfer1234) encSliceruntime_Object(v []pkg7_runtime.Object, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4790 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyv4790 == nil { + r.EncodeNil() + } else { + yym4791 := z.EncBinary() + _ = yym4791 + if false { + } else if z.HasExtensions() && z.EncExt(yyv4790) { + } else { + z.EncFallback(yyv4790) + } + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceruntime_Object(v *[]pkg7_runtime.Object, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4792 := *v + yyh4792, yyl4792 := z.DecSliceHelperStart() + var yyc4792 bool + if yyl4792 == 0 { + if yyv4792 == nil { + yyv4792 = []pkg7_runtime.Object{} + yyc4792 = true + } else if len(yyv4792) != 0 { + yyv4792 = yyv4792[:0] + yyc4792 = true + } + } else if yyl4792 > 0 { + var yyrr4792, yyrl4792 int + var yyrt4792 bool + if yyl4792 > cap(yyv4792) { + + yyrg4792 := len(yyv4792) > 0 + yyv24792 := yyv4792 + yyrl4792, yyrt4792 = z.DecInferLen(yyl4792, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4792 { + if yyrl4792 <= cap(yyv4792) { + yyv4792 = yyv4792[:yyrl4792] + } else { + yyv4792 = make([]pkg7_runtime.Object, yyrl4792) + } + } else { + yyv4792 = make([]pkg7_runtime.Object, yyrl4792) + } + yyc4792 = true + yyrr4792 = len(yyv4792) + if yyrg4792 { + copy(yyv4792, yyv24792) + } + } else if yyl4792 != len(yyv4792) { + yyv4792 = yyv4792[:yyl4792] + yyc4792 = true + } + yyj4792 := 0 + for ; yyj4792 < yyrr4792; yyj4792++ { + yyh4792.ElemContainerState(yyj4792) + if r.TryDecodeAsNil() { + yyv4792[yyj4792] = nil + } else { + yyv4793 := &yyv4792[yyj4792] + yym4794 := z.DecBinary() + _ = yym4794 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4793) { + } else { + z.DecFallback(yyv4793, true) + } + } + + } + if yyrt4792 { + for ; yyj4792 < yyl4792; yyj4792++ { + yyv4792 = append(yyv4792, nil) + yyh4792.ElemContainerState(yyj4792) + if r.TryDecodeAsNil() { + yyv4792[yyj4792] = nil + } else { + yyv4795 := &yyv4792[yyj4792] + yym4796 := z.DecBinary() + _ = yym4796 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4795) { + } else { + z.DecFallback(yyv4795, true) + } + } + + } + } + + } else { + yyj4792 := 0 + for ; !r.CheckBreak(); yyj4792++ { + + if yyj4792 >= len(yyv4792) { + yyv4792 = append(yyv4792, nil) // var yyz4792 pkg7_runtime.Object + yyc4792 = true + } + yyh4792.ElemContainerState(yyj4792) + if yyj4792 < len(yyv4792) { + if r.TryDecodeAsNil() { + yyv4792[yyj4792] = nil + } else { + yyv4797 := &yyv4792[yyj4792] + yym4798 := z.DecBinary() + _ = yym4798 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4797) { + } else { + z.DecFallback(yyv4797, true) + } + } + + } else { + z.DecSwallow() + } + + } + if yyj4792 < len(yyv4792) { + yyv4792 = yyv4792[:yyj4792] + yyc4792 = true + } else if yyj4792 == 0 && yyv4792 == nil { + yyv4792 = []pkg7_runtime.Object{} + yyc4792 = true + } + } + yyh4792.End() + if yyc4792 { + *v = yyv4792 + } +} + +func (x codecSelfer1234) encSliceLimitRangeItem(v []LimitRangeItem, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4799 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4800 := &yyv4799 + yy4800.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRangeItem(v *[]LimitRangeItem, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4801 := *v + yyh4801, yyl4801 := z.DecSliceHelperStart() + var yyc4801 bool + if yyl4801 == 0 { + if yyv4801 == nil { + yyv4801 = []LimitRangeItem{} + yyc4801 = true + } else if len(yyv4801) != 0 { + yyv4801 = yyv4801[:0] + yyc4801 = true + } + } else if yyl4801 > 0 { + var yyrr4801, yyrl4801 int + var yyrt4801 bool + if yyl4801 > cap(yyv4801) { + + yyrg4801 := len(yyv4801) > 0 + yyv24801 := yyv4801 + yyrl4801, yyrt4801 = z.DecInferLen(yyl4801, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4801 { + if yyrl4801 <= cap(yyv4801) { + yyv4801 = yyv4801[:yyrl4801] + } else { + yyv4801 = make([]LimitRangeItem, yyrl4801) + } + } else { + yyv4801 = make([]LimitRangeItem, yyrl4801) + } + yyc4801 = true + yyrr4801 = len(yyv4801) + if yyrg4801 { + copy(yyv4801, yyv24801) + } + } else if yyl4801 != len(yyv4801) { + yyv4801 = yyv4801[:yyl4801] + yyc4801 = true + } + yyj4801 := 0 + for ; yyj4801 < yyrr4801; yyj4801++ { + yyh4801.ElemContainerState(yyj4801) + if r.TryDecodeAsNil() { + yyv4801[yyj4801] = LimitRangeItem{} + } else { + yyv4802 := &yyv4801[yyj4801] + yyv4802.CodecDecodeSelf(d) + } + + } + if yyrt4801 { + for ; yyj4801 < yyl4801; yyj4801++ { + yyv4801 = append(yyv4801, LimitRangeItem{}) + yyh4801.ElemContainerState(yyj4801) + if r.TryDecodeAsNil() { + yyv4801[yyj4801] = LimitRangeItem{} + } else { + yyv4803 := &yyv4801[yyj4801] + yyv4803.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4801 := 0 + for ; !r.CheckBreak(); yyj4801++ { + + if yyj4801 >= len(yyv4801) { + yyv4801 = append(yyv4801, LimitRangeItem{}) // var yyz4801 LimitRangeItem + yyc4801 = true + } + yyh4801.ElemContainerState(yyj4801) + if yyj4801 < len(yyv4801) { + if r.TryDecodeAsNil() { + yyv4801[yyj4801] = LimitRangeItem{} + } else { + yyv4804 := &yyv4801[yyj4801] + yyv4804.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4801 < len(yyv4801) { + yyv4801 = yyv4801[:yyj4801] + yyc4801 = true + } else if yyj4801 == 0 && yyv4801 == nil { + yyv4801 = []LimitRangeItem{} + yyc4801 = true + } + } + yyh4801.End() + if yyc4801 { + *v = yyv4801 + } +} + +func (x codecSelfer1234) encSliceLimitRange(v []LimitRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4805 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4806 := &yyv4805 + yy4806.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRange(v *[]LimitRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4807 := *v + yyh4807, yyl4807 := z.DecSliceHelperStart() + var yyc4807 bool + if yyl4807 == 0 { + if yyv4807 == nil { + yyv4807 = []LimitRange{} + yyc4807 = true + } else if len(yyv4807) != 0 { + yyv4807 = yyv4807[:0] + yyc4807 = true + } + } else if yyl4807 > 0 { + var yyrr4807, yyrl4807 int + var yyrt4807 bool + if yyl4807 > cap(yyv4807) { + + yyrg4807 := len(yyv4807) > 0 + yyv24807 := yyv4807 + yyrl4807, yyrt4807 = z.DecInferLen(yyl4807, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4807 { + if yyrl4807 <= cap(yyv4807) { + yyv4807 = yyv4807[:yyrl4807] + } else { + yyv4807 = make([]LimitRange, yyrl4807) + } + } else { + yyv4807 = make([]LimitRange, yyrl4807) + } + yyc4807 = true + yyrr4807 = len(yyv4807) + if yyrg4807 { + copy(yyv4807, yyv24807) + } + } else if yyl4807 != len(yyv4807) { + yyv4807 = yyv4807[:yyl4807] + yyc4807 = true + } + yyj4807 := 0 + for ; yyj4807 < yyrr4807; yyj4807++ { + yyh4807.ElemContainerState(yyj4807) + if r.TryDecodeAsNil() { + yyv4807[yyj4807] = LimitRange{} + } else { + yyv4808 := &yyv4807[yyj4807] + yyv4808.CodecDecodeSelf(d) + } + + } + if yyrt4807 { + for ; yyj4807 < yyl4807; yyj4807++ { + yyv4807 = append(yyv4807, LimitRange{}) + yyh4807.ElemContainerState(yyj4807) + if r.TryDecodeAsNil() { + yyv4807[yyj4807] = LimitRange{} + } else { + yyv4809 := &yyv4807[yyj4807] + yyv4809.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4807 := 0 + for ; !r.CheckBreak(); yyj4807++ { + + if yyj4807 >= len(yyv4807) { + yyv4807 = append(yyv4807, LimitRange{}) // var yyz4807 LimitRange + yyc4807 = true + } + yyh4807.ElemContainerState(yyj4807) + if yyj4807 < len(yyv4807) { + if r.TryDecodeAsNil() { + yyv4807[yyj4807] = LimitRange{} + } else { + yyv4810 := &yyv4807[yyj4807] + yyv4810.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4807 < len(yyv4807) { + yyv4807 = yyv4807[:yyj4807] + yyc4807 = true + } else if yyj4807 == 0 && yyv4807 == nil { + yyv4807 = []LimitRange{} + yyc4807 = true + } + } + yyh4807.End() + if yyc4807 { + *v = yyv4807 + } +} + +func (x codecSelfer1234) encSliceResourceQuotaScope(v []ResourceQuotaScope, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4811 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4811.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuotaScope(v *[]ResourceQuotaScope, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4812 := *v + yyh4812, yyl4812 := z.DecSliceHelperStart() + var yyc4812 bool + if yyl4812 == 0 { + if yyv4812 == nil { + yyv4812 = []ResourceQuotaScope{} + yyc4812 = true + } else if len(yyv4812) != 0 { + yyv4812 = yyv4812[:0] + yyc4812 = true + } + } else if yyl4812 > 0 { + var yyrr4812, yyrl4812 int + var yyrt4812 bool + if yyl4812 > cap(yyv4812) { + + yyrl4812, yyrt4812 = z.DecInferLen(yyl4812, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4812 { + if yyrl4812 <= cap(yyv4812) { + yyv4812 = yyv4812[:yyrl4812] + } else { + yyv4812 = make([]ResourceQuotaScope, yyrl4812) + } + } else { + yyv4812 = make([]ResourceQuotaScope, yyrl4812) + } + yyc4812 = true + yyrr4812 = len(yyv4812) + } else if yyl4812 != len(yyv4812) { + yyv4812 = yyv4812[:yyl4812] + yyc4812 = true + } + yyj4812 := 0 + for ; yyj4812 < yyrr4812; yyj4812++ { + yyh4812.ElemContainerState(yyj4812) + if r.TryDecodeAsNil() { + yyv4812[yyj4812] = "" + } else { + yyv4812[yyj4812] = ResourceQuotaScope(r.DecodeString()) + } + + } + if yyrt4812 { + for ; yyj4812 < yyl4812; yyj4812++ { + yyv4812 = append(yyv4812, "") + yyh4812.ElemContainerState(yyj4812) + if r.TryDecodeAsNil() { + yyv4812[yyj4812] = "" + } else { + yyv4812[yyj4812] = ResourceQuotaScope(r.DecodeString()) + } + + } + } + + } else { + yyj4812 := 0 + for ; !r.CheckBreak(); yyj4812++ { + + if yyj4812 >= len(yyv4812) { + yyv4812 = append(yyv4812, "") // var yyz4812 ResourceQuotaScope + yyc4812 = true + } + yyh4812.ElemContainerState(yyj4812) + if yyj4812 < len(yyv4812) { + if r.TryDecodeAsNil() { + yyv4812[yyj4812] = "" + } else { + yyv4812[yyj4812] = ResourceQuotaScope(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4812 < len(yyv4812) { + yyv4812 = yyv4812[:yyj4812] + yyc4812 = true + } else if yyj4812 == 0 && yyv4812 == nil { + yyv4812 = []ResourceQuotaScope{} + yyc4812 = true + } + } + yyh4812.End() + if yyc4812 { + *v = yyv4812 + } +} + +func (x codecSelfer1234) encSliceResourceQuota(v []ResourceQuota, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4816 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4817 := &yyv4816 + yy4817.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuota(v *[]ResourceQuota, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4818 := *v + yyh4818, yyl4818 := z.DecSliceHelperStart() + var yyc4818 bool + if yyl4818 == 0 { + if yyv4818 == nil { + yyv4818 = []ResourceQuota{} + yyc4818 = true + } else if len(yyv4818) != 0 { + yyv4818 = yyv4818[:0] + yyc4818 = true + } + } else if yyl4818 > 0 { + var yyrr4818, yyrl4818 int + var yyrt4818 bool + if yyl4818 > cap(yyv4818) { + + yyrg4818 := len(yyv4818) > 0 + yyv24818 := yyv4818 + yyrl4818, yyrt4818 = z.DecInferLen(yyl4818, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4818 { + if yyrl4818 <= cap(yyv4818) { + yyv4818 = yyv4818[:yyrl4818] + } else { + yyv4818 = make([]ResourceQuota, yyrl4818) + } + } else { + yyv4818 = make([]ResourceQuota, yyrl4818) + } + yyc4818 = true + yyrr4818 = len(yyv4818) + if yyrg4818 { + copy(yyv4818, yyv24818) + } + } else if yyl4818 != len(yyv4818) { + yyv4818 = yyv4818[:yyl4818] + yyc4818 = true + } + yyj4818 := 0 + for ; yyj4818 < yyrr4818; yyj4818++ { + yyh4818.ElemContainerState(yyj4818) + if r.TryDecodeAsNil() { + yyv4818[yyj4818] = ResourceQuota{} + } else { + yyv4819 := &yyv4818[yyj4818] + yyv4819.CodecDecodeSelf(d) + } + + } + if yyrt4818 { + for ; yyj4818 < yyl4818; yyj4818++ { + yyv4818 = append(yyv4818, ResourceQuota{}) + yyh4818.ElemContainerState(yyj4818) + if r.TryDecodeAsNil() { + yyv4818[yyj4818] = ResourceQuota{} + } else { + yyv4820 := &yyv4818[yyj4818] + yyv4820.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4818 := 0 + for ; !r.CheckBreak(); yyj4818++ { + + if yyj4818 >= len(yyv4818) { + yyv4818 = append(yyv4818, ResourceQuota{}) // var yyz4818 ResourceQuota + yyc4818 = true + } + yyh4818.ElemContainerState(yyj4818) + if yyj4818 < len(yyv4818) { + if r.TryDecodeAsNil() { + yyv4818[yyj4818] = ResourceQuota{} + } else { + yyv4821 := &yyv4818[yyj4818] + yyv4821.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4818 < len(yyv4818) { + yyv4818 = yyv4818[:yyj4818] + yyc4818 = true + } else if yyj4818 == 0 && yyv4818 == nil { + yyv4818 = []ResourceQuota{} + yyc4818 = true + } + } + yyh4818.End() + if yyc4818 { + *v = yyv4818 + } +} + +func (x codecSelfer1234) encMapstringSliceuint8(v map[string][]uint8, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk4822, yyv4822 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym4823 := z.EncBinary() + _ = yym4823 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk4822)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv4822 == nil { + r.EncodeNil() + } else { + yym4824 := z.EncBinary() + _ = yym4824 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(yyv4822)) + } + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringSliceuint8(v *map[string][]uint8, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4825 := *v + yyl4825 := r.ReadMapStart() + yybh4825 := z.DecBasicHandle() + if yyv4825 == nil { + yyrl4825, _ := z.DecInferLen(yyl4825, yybh4825.MaxInitLen, 40) + yyv4825 = make(map[string][]uint8, yyrl4825) + *v = yyv4825 + } + var yymk4825 string + var yymv4825 []uint8 + var yymg4825 bool + if yybh4825.MapValueReset { + yymg4825 = true + } + if yyl4825 > 0 { + for yyj4825 := 0; yyj4825 < yyl4825; yyj4825++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4825 = "" + } else { + yymk4825 = string(r.DecodeString()) + } + + if yymg4825 { + yymv4825 = yyv4825[yymk4825] + } else { + yymv4825 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4825 = nil + } else { + yyv4827 := &yymv4825 + yym4828 := z.DecBinary() + _ = yym4828 + if false { + } else { + *yyv4827 = r.DecodeBytes(*(*[]byte)(yyv4827), false, false) + } + } + + if yyv4825 != nil { + yyv4825[yymk4825] = yymv4825 + } + } + } else if yyl4825 < 0 { + for yyj4825 := 0; !r.CheckBreak(); yyj4825++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4825 = "" + } else { + yymk4825 = string(r.DecodeString()) + } + + if yymg4825 { + yymv4825 = yyv4825[yymk4825] + } else { + yymv4825 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4825 = nil + } else { + yyv4830 := &yymv4825 + yym4831 := z.DecBinary() + _ = yym4831 + if false { + } else { + *yyv4830 = r.DecodeBytes(*(*[]byte)(yyv4830), false, false) + } + } + + if yyv4825 != nil { + yyv4825[yymk4825] = yymv4825 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceSecret(v []Secret, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4832 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4833 := &yyv4832 + yy4833.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSecret(v *[]Secret, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4834 := *v + yyh4834, yyl4834 := z.DecSliceHelperStart() + var yyc4834 bool + if yyl4834 == 0 { + if yyv4834 == nil { + yyv4834 = []Secret{} + yyc4834 = true + } else if len(yyv4834) != 0 { + yyv4834 = yyv4834[:0] + yyc4834 = true + } + } else if yyl4834 > 0 { + var yyrr4834, yyrl4834 int + var yyrt4834 bool + if yyl4834 > cap(yyv4834) { + + yyrg4834 := len(yyv4834) > 0 + yyv24834 := yyv4834 + yyrl4834, yyrt4834 = z.DecInferLen(yyl4834, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4834 { + if yyrl4834 <= cap(yyv4834) { + yyv4834 = yyv4834[:yyrl4834] + } else { + yyv4834 = make([]Secret, yyrl4834) + } + } else { + yyv4834 = make([]Secret, yyrl4834) + } + yyc4834 = true + yyrr4834 = len(yyv4834) + if yyrg4834 { + copy(yyv4834, yyv24834) + } + } else if yyl4834 != len(yyv4834) { + yyv4834 = yyv4834[:yyl4834] + yyc4834 = true + } + yyj4834 := 0 + for ; yyj4834 < yyrr4834; yyj4834++ { + yyh4834.ElemContainerState(yyj4834) + if r.TryDecodeAsNil() { + yyv4834[yyj4834] = Secret{} + } else { + yyv4835 := &yyv4834[yyj4834] + yyv4835.CodecDecodeSelf(d) + } + + } + if yyrt4834 { + for ; yyj4834 < yyl4834; yyj4834++ { + yyv4834 = append(yyv4834, Secret{}) + yyh4834.ElemContainerState(yyj4834) + if r.TryDecodeAsNil() { + yyv4834[yyj4834] = Secret{} + } else { + yyv4836 := &yyv4834[yyj4834] + yyv4836.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4834 := 0 + for ; !r.CheckBreak(); yyj4834++ { + + if yyj4834 >= len(yyv4834) { + yyv4834 = append(yyv4834, Secret{}) // var yyz4834 Secret + yyc4834 = true + } + yyh4834.ElemContainerState(yyj4834) + if yyj4834 < len(yyv4834) { + if r.TryDecodeAsNil() { + yyv4834[yyj4834] = Secret{} + } else { + yyv4837 := &yyv4834[yyj4834] + yyv4837.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4834 < len(yyv4834) { + yyv4834 = yyv4834[:yyj4834] + yyc4834 = true + } else if yyj4834 == 0 && yyv4834 == nil { + yyv4834 = []Secret{} + yyc4834 = true + } + } + yyh4834.End() + if yyc4834 { + *v = yyv4834 + } +} + +func (x codecSelfer1234) encSliceConfigMap(v []ConfigMap, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4838 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4839 := &yyv4838 + yy4839.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceConfigMap(v *[]ConfigMap, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4840 := *v + yyh4840, yyl4840 := z.DecSliceHelperStart() + var yyc4840 bool + if yyl4840 == 0 { + if yyv4840 == nil { + yyv4840 = []ConfigMap{} + yyc4840 = true + } else if len(yyv4840) != 0 { + yyv4840 = yyv4840[:0] + yyc4840 = true + } + } else if yyl4840 > 0 { + var yyrr4840, yyrl4840 int + var yyrt4840 bool + if yyl4840 > cap(yyv4840) { + + yyrg4840 := len(yyv4840) > 0 + yyv24840 := yyv4840 + yyrl4840, yyrt4840 = z.DecInferLen(yyl4840, z.DecBasicHandle().MaxInitLen, 264) + if yyrt4840 { + if yyrl4840 <= cap(yyv4840) { + yyv4840 = yyv4840[:yyrl4840] + } else { + yyv4840 = make([]ConfigMap, yyrl4840) + } + } else { + yyv4840 = make([]ConfigMap, yyrl4840) + } + yyc4840 = true + yyrr4840 = len(yyv4840) + if yyrg4840 { + copy(yyv4840, yyv24840) + } + } else if yyl4840 != len(yyv4840) { + yyv4840 = yyv4840[:yyl4840] + yyc4840 = true + } + yyj4840 := 0 + for ; yyj4840 < yyrr4840; yyj4840++ { + yyh4840.ElemContainerState(yyj4840) + if r.TryDecodeAsNil() { + yyv4840[yyj4840] = ConfigMap{} + } else { + yyv4841 := &yyv4840[yyj4840] + yyv4841.CodecDecodeSelf(d) + } + + } + if yyrt4840 { + for ; yyj4840 < yyl4840; yyj4840++ { + yyv4840 = append(yyv4840, ConfigMap{}) + yyh4840.ElemContainerState(yyj4840) + if r.TryDecodeAsNil() { + yyv4840[yyj4840] = ConfigMap{} + } else { + yyv4842 := &yyv4840[yyj4840] + yyv4842.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4840 := 0 + for ; !r.CheckBreak(); yyj4840++ { + + if yyj4840 >= len(yyv4840) { + yyv4840 = append(yyv4840, ConfigMap{}) // var yyz4840 ConfigMap + yyc4840 = true + } + yyh4840.ElemContainerState(yyj4840) + if yyj4840 < len(yyv4840) { + if r.TryDecodeAsNil() { + yyv4840[yyj4840] = ConfigMap{} + } else { + yyv4843 := &yyv4840[yyj4840] + yyv4843.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4840 < len(yyv4840) { + yyv4840 = yyv4840[:yyj4840] + yyc4840 = true + } else if yyj4840 == 0 && yyv4840 == nil { + yyv4840 = []ConfigMap{} + yyc4840 = true + } + } + yyh4840.End() + if yyc4840 { + *v = yyv4840 + } +} + +func (x codecSelfer1234) encSliceComponentCondition(v []ComponentCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4844 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4845 := &yyv4844 + yy4845.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentCondition(v *[]ComponentCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4846 := *v + yyh4846, yyl4846 := z.DecSliceHelperStart() + var yyc4846 bool + if yyl4846 == 0 { + if yyv4846 == nil { + yyv4846 = []ComponentCondition{} + yyc4846 = true + } else if len(yyv4846) != 0 { + yyv4846 = yyv4846[:0] + yyc4846 = true + } + } else if yyl4846 > 0 { + var yyrr4846, yyrl4846 int + var yyrt4846 bool + if yyl4846 > cap(yyv4846) { + + yyrg4846 := len(yyv4846) > 0 + yyv24846 := yyv4846 + yyrl4846, yyrt4846 = z.DecInferLen(yyl4846, z.DecBasicHandle().MaxInitLen, 64) + if yyrt4846 { + if yyrl4846 <= cap(yyv4846) { + yyv4846 = yyv4846[:yyrl4846] + } else { + yyv4846 = make([]ComponentCondition, yyrl4846) + } + } else { + yyv4846 = make([]ComponentCondition, yyrl4846) + } + yyc4846 = true + yyrr4846 = len(yyv4846) + if yyrg4846 { + copy(yyv4846, yyv24846) + } + } else if yyl4846 != len(yyv4846) { + yyv4846 = yyv4846[:yyl4846] + yyc4846 = true + } + yyj4846 := 0 + for ; yyj4846 < yyrr4846; yyj4846++ { + yyh4846.ElemContainerState(yyj4846) + if r.TryDecodeAsNil() { + yyv4846[yyj4846] = ComponentCondition{} + } else { + yyv4847 := &yyv4846[yyj4846] + yyv4847.CodecDecodeSelf(d) + } + + } + if yyrt4846 { + for ; yyj4846 < yyl4846; yyj4846++ { + yyv4846 = append(yyv4846, ComponentCondition{}) + yyh4846.ElemContainerState(yyj4846) + if r.TryDecodeAsNil() { + yyv4846[yyj4846] = ComponentCondition{} + } else { + yyv4848 := &yyv4846[yyj4846] + yyv4848.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4846 := 0 + for ; !r.CheckBreak(); yyj4846++ { + + if yyj4846 >= len(yyv4846) { + yyv4846 = append(yyv4846, ComponentCondition{}) // var yyz4846 ComponentCondition + yyc4846 = true + } + yyh4846.ElemContainerState(yyj4846) + if yyj4846 < len(yyv4846) { + if r.TryDecodeAsNil() { + yyv4846[yyj4846] = ComponentCondition{} + } else { + yyv4849 := &yyv4846[yyj4846] + yyv4849.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4846 < len(yyv4846) { + yyv4846 = yyv4846[:yyj4846] + yyc4846 = true + } else if yyj4846 == 0 && yyv4846 == nil { + yyv4846 = []ComponentCondition{} + yyc4846 = true + } + } + yyh4846.End() + if yyc4846 { + *v = yyv4846 + } +} + +func (x codecSelfer1234) encSliceComponentStatus(v []ComponentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4850 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4851 := &yyv4850 + yy4851.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentStatus(v *[]ComponentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4852 := *v + yyh4852, yyl4852 := z.DecSliceHelperStart() + var yyc4852 bool + if yyl4852 == 0 { + if yyv4852 == nil { + yyv4852 = []ComponentStatus{} + yyc4852 = true + } else if len(yyv4852) != 0 { + yyv4852 = yyv4852[:0] + yyc4852 = true + } + } else if yyl4852 > 0 { + var yyrr4852, yyrl4852 int + var yyrt4852 bool + if yyl4852 > cap(yyv4852) { + + yyrg4852 := len(yyv4852) > 0 + yyv24852 := yyv4852 + yyrl4852, yyrt4852 = z.DecInferLen(yyl4852, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4852 { + if yyrl4852 <= cap(yyv4852) { + yyv4852 = yyv4852[:yyrl4852] + } else { + yyv4852 = make([]ComponentStatus, yyrl4852) + } + } else { + yyv4852 = make([]ComponentStatus, yyrl4852) + } + yyc4852 = true + yyrr4852 = len(yyv4852) + if yyrg4852 { + copy(yyv4852, yyv24852) + } + } else if yyl4852 != len(yyv4852) { + yyv4852 = yyv4852[:yyl4852] + yyc4852 = true + } + yyj4852 := 0 + for ; yyj4852 < yyrr4852; yyj4852++ { + yyh4852.ElemContainerState(yyj4852) + if r.TryDecodeAsNil() { + yyv4852[yyj4852] = ComponentStatus{} + } else { + yyv4853 := &yyv4852[yyj4852] + yyv4853.CodecDecodeSelf(d) + } + + } + if yyrt4852 { + for ; yyj4852 < yyl4852; yyj4852++ { + yyv4852 = append(yyv4852, ComponentStatus{}) + yyh4852.ElemContainerState(yyj4852) + if r.TryDecodeAsNil() { + yyv4852[yyj4852] = ComponentStatus{} + } else { + yyv4854 := &yyv4852[yyj4852] + yyv4854.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4852 := 0 + for ; !r.CheckBreak(); yyj4852++ { + + if yyj4852 >= len(yyv4852) { + yyv4852 = append(yyv4852, ComponentStatus{}) // var yyz4852 ComponentStatus + yyc4852 = true + } + yyh4852.ElemContainerState(yyj4852) + if yyj4852 < len(yyv4852) { + if r.TryDecodeAsNil() { + yyv4852[yyj4852] = ComponentStatus{} + } else { + yyv4855 := &yyv4852[yyj4852] + yyv4855.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4852 < len(yyv4852) { + yyv4852 = yyv4852[:yyj4852] + yyc4852 = true + } else if yyj4852 == 0 && yyv4852 == nil { + yyv4852 = []ComponentStatus{} + yyc4852 = true + } + } + yyh4852.End() + if yyc4852 { + *v = yyv4852 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/types.go b/vendor/k8s.io/client-go/1.5/pkg/api/types.go new file mode 100644 index 0000000000..94ae87d76c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/types.go @@ -0,0 +1,3068 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/types" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +// Common string formats +// --------------------- +// Many fields in this API have formatting requirements. The commonly used +// formats are defined here. +// +// C_IDENTIFIER: This is a string that conforms to the definition of an "identifier" +// in the C language. This is captured by the following regex: +// [A-Za-z_][A-Za-z0-9_]* +// This defines the format, but not the length restriction, which should be +// specified at the definition of any field of this type. +// +// DNS_LABEL: This is a string, no more than 63 characters long, that conforms +// to the definition of a "label" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])? +// +// DNS_SUBDOMAIN: This is a string, no more than 253 characters long, that conforms +// to the definition of a "subdomain" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)* +// or more simply: +// DNS_LABEL(\.DNS_LABEL)* +// +// IANA_SVC_NAME: This is a string, no more than 15 characters long, that +// conforms to the definition of IANA service name in RFC 6335. +// It must contains at least one letter [a-z] and it must contains only [a-z0-9-]. +// Hypens ('-') cannot be leading or trailing character of the string +// and cannot be adjacent to other hyphens. + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +type ObjectMeta struct { + // Name is unique within a namespace. Name is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + Name string `json:"name,omitempty"` + + // GenerateName indicates that the name should be made unique by the server prior to persisting + // it. A non-empty value for the field indicates the name will be made unique (and the name + // returned to the client will be different than the name passed). The value of this field will + // be combined with a unique suffix on the server if the Name field has not been provided. + // The provided value must be valid within the rules for Name, and may be truncated by the length + // of the suffix required to make the value unique on the server. + // + // If this field is specified, and Name is not present, the server will NOT return a 409 if the + // generated name exists - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + GenerateName string `json:"generateName,omitempty"` + + // Namespace defines the space within which name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + Namespace string `json:"namespace,omitempty"` + + // SelfLink is a URL representing this object. + SelfLink string `json:"selfLink,omitempty"` + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + UID types.UID `json:"uid,omitempty"` + + // An opaque value that represents the version of this resource. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and values may only be valid for a particular + // resource or set of resources. Only servers will generate resource versions. + ResourceVersion string `json:"resourceVersion,omitempty"` + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + Generation int64 `json:"generation,omitempty"` + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + CreationTimestamp unversioned.Time `json:"creationTimestamp,omitempty"` + + // DeletionTimestamp is the time after which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource will be deleted (no longer visible from + // resource lists, and not reachable by name) after the time in this field. Once set, this + // value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet + // will send a hard termination signal to the container. + DeletionTimestamp *unversioned.Time `json:"deletionTimestamp,omitempty"` + + // DeletionGracePeriodSeconds records the graceful deletion value set when graceful deletion + // was requested. Represents the most recent grace period, and may only be shortened once set. + DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty"` + + // Labels are key value pairs that may be used to scope and select individual resources. + // Label keys are of the form: + // label-key ::= prefixed-name | name + // prefixed-name ::= prefix '/' name + // prefix ::= DNS_SUBDOMAIN + // name ::= DNS_LABEL + // The prefix is optional. If the prefix is not specified, the key is assumed to be private + // to the user. Other system components that wish to use labels must specify a prefix. The + // "kubernetes.io/" prefix is reserved for use by kubernetes components. + Labels map[string]string `json:"labels,omitempty"` + + // Annotations are unstructured key value data stored with a resource that may be set by + // external tooling. They are not queryable and should be preserved when modifying + // objects. Annotation keys have the same formatting restrictions as Label keys. See the + // comments on Labels for details. + Annotations map[string]string `json:"annotations,omitempty"` + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + OwnerReferences []OwnerReference `json:"ownerReferences,omitempty"` + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + Finalizers []string `json:"finalizers,omitempty"` + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + ClusterName string `json:"clusterName,omitempty"` +} + +const ( + // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients + NamespaceDefault string = "default" + // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces + NamespaceAll string = "" + // NamespaceNone is the argument for a context when there is no namespace. + NamespaceNone string = "" + // NamespaceSystem is the system namespace where we place system components. + NamespaceSystem string = "kube-system" + // TerminationMessagePathDefault means the default path to capture the application termination message running in a container + TerminationMessagePathDefault string = "/dev/termination-log" +) + +// Volume represents a named volume in a pod that may be accessed by any containers in the pod. +type Volume struct { + // Required: This must be a DNS_LABEL. Each volume in a pod must have + // a unique name. + Name string `json:"name"` + // The VolumeSource represents the location and type of a volume to mount. + // This is optional for now. If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + VolumeSource `json:",inline,omitempty"` +} + +// VolumeSource represents the source location of a volume to mount. +// Only one of its members may be specified. +type VolumeSource struct { + // HostPath represents file or directory on the host machine that is + // directly exposed to the container. This is generally used for system + // agents or other privileged things that are allowed to see the host + // machine. Most containers will NOT need this. + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + HostPath *HostPathVolumeSource `json:"hostPath,omitempty"` + // EmptyDir represents a temporary directory that shares a pod's lifetime. + EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty"` + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"` + // AWSElasticBlockStore represents an AWS EBS disk that is attached to a + // kubelet's host machine and then exposed to the pod. + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty"` + // GitRepo represents a git repository at a particular revision. + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty"` + // Secret represents a secret that should populate this volume. + Secret *SecretVolumeSource `json:"secret,omitempty"` + // NFS represents an NFS mount on the host that shares a pod's lifetime + NFS *NFSVolumeSource `json:"nfs,omitempty"` + // ISCSIVolumeSource represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"` + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"` + // PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace + PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime + RBD *RBDVolumeSource `json:"rbd,omitempty"` + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty"` + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty"` + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + Cinder *CinderVolumeSource `json:"cinder,omitempty"` + + // CephFS represents a Cephfs mount on the host that shares a pod's lifetime + CephFS *CephFSVolumeSource `json:"cephfs,omitempty"` + + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + Flocker *FlockerVolumeSource `json:"flocker,omitempty"` + + // DownwardAPI represents metadata about the pod that should populate this volume + DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + FC *FCVolumeSource `json:"fc,omitempty"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty"` + // ConfigMap represents a configMap that should populate this volume + ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty"` +} + +// Similar to VolumeSource but meant for the administrator who creates PVs. +// Exactly one of its members must be set. +type PersistentVolumeSource struct { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"` + // AWSElasticBlockStore represents an AWS EBS disk that is attached to a + // kubelet's host machine and then exposed to the pod. + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty"` + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + HostPath *HostPathVolumeSource `json:"hostPath,omitempty"` + // Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"` + // NFS represents an NFS mount on the host that shares a pod's lifetime + NFS *NFSVolumeSource `json:"nfs,omitempty"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime + RBD *RBDVolumeSource `json:"rbd,omitempty"` + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty"` + // ISCSIVolumeSource represents an ISCSI resource that is attached to a + // kubelet's host machine and then exposed to the pod. + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"` + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty"` + // Cinder represents a cinder volume attached and mounted on kubelets host machine + Cinder *CinderVolumeSource `json:"cinder,omitempty"` + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + CephFS *CephFSVolumeSource `json:"cephfs,omitempty"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + FC *FCVolumeSource `json:"fc,omitempty"` + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + Flocker *FlockerVolumeSource `json:"flocker,omitempty"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty"` +} + +type PersistentVolumeClaimVolumeSource struct { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume + ClaimName string `json:"claimName"` + // Optional: Defaults to false (read/write). ReadOnly here + // will force the ReadOnly setting in VolumeMounts + ReadOnly bool `json:"readOnly,omitempty"` +} + +// +genclient=true +// +nonNamespaced=true + +type PersistentVolume struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + //Spec defines a persistent volume owned by the cluster + Spec PersistentVolumeSpec `json:"spec,omitempty"` + + // Status represents the current information about persistent volume. + Status PersistentVolumeStatus `json:"status,omitempty"` +} + +type PersistentVolumeSpec struct { + // Resources represents the actual resources of the volume + Capacity ResourceList `json:"capacity"` + // Source represents the location and type of a volume to mount. + PersistentVolumeSource `json:",inline"` + // AccessModes contains all ways the volume can be mounted + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // ClaimRef is expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // When set to non-nil value, PVC.Spec.Selector of the referenced PVC is + // ignored, i.e. labels of this PV do not need to match PVC selector. + ClaimRef *ObjectReference `json:"claimRef,omitempty"` + // Optional: what happens to a persistent volume when released from its claim. + PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty"` +} + +// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes +type PersistentVolumeReclaimPolicy string + +const ( + // PersistentVolumeReclaimRecycle means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. + // The volume plugin must support Recycling. + PersistentVolumeReclaimRecycle PersistentVolumeReclaimPolicy = "Recycle" + // PersistentVolumeReclaimDelete means the volume will be deleted from Kubernetes on release from its claim. + // The volume plugin must support Deletion. + PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete" + // PersistentVolumeReclaimRetain means the volume will be left in its current phase (Released) for manual reclamation by the administrator. + // The default policy is Retain. + PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain" +) + +type PersistentVolumeStatus struct { + // Phase indicates if a volume is available, bound to a claim, or released by a claim + Phase PersistentVolumePhase `json:"phase,omitempty"` + // A human-readable message indicating details about why the volume is in this state. + Message string `json:"message,omitempty"` + // Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI + Reason string `json:"reason,omitempty"` +} + +type PersistentVolumeList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + Items []PersistentVolume `json:"items"` +} + +// +genclient=true + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +type PersistentVolumeClaim struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the volume requested by a pod author + Spec PersistentVolumeClaimSpec `json:"spec,omitempty"` + + // Status represents the current information about a claim + Status PersistentVolumeClaimStatus `json:"status,omitempty"` +} + +type PersistentVolumeClaimList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + Items []PersistentVolumeClaim `json:"items"` +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +type PersistentVolumeClaimSpec struct { + // Contains the types of access modes required + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` + // A label query over volumes to consider for binding. This selector is + // ignored when VolumeName is set + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + // Resources represents the minimum resources required + Resources ResourceRequirements `json:"resources,omitempty"` + // VolumeName is the binding reference to the PersistentVolume backing this + // claim. When set to non-empty value Selector is not evaluated + VolumeName string `json:"volumeName,omitempty"` +} + +type PersistentVolumeClaimStatus struct { + // Phase represents the current phase of PersistentVolumeClaim + Phase PersistentVolumeClaimPhase `json:"phase,omitempty"` + // AccessModes contains all ways the volume backing the PVC can be mounted + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` + // Represents the actual resources of the underlying volume + Capacity ResourceList `json:"capacity,omitempty"` +} + +type PersistentVolumeAccessMode string + +const ( + // can be mounted read/write mode to exactly 1 host + ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce" + // can be mounted in read-only mode to many hosts + ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany" + // can be mounted in read/write mode to many hosts + ReadWriteMany PersistentVolumeAccessMode = "ReadWriteMany" +) + +type PersistentVolumePhase string + +const ( + // used for PersistentVolumes that are not available + VolumePending PersistentVolumePhase = "Pending" + // used for PersistentVolumes that are not yet bound + // Available volumes are held by the binder and matched to PersistentVolumeClaims + VolumeAvailable PersistentVolumePhase = "Available" + // used for PersistentVolumes that are bound + VolumeBound PersistentVolumePhase = "Bound" + // used for PersistentVolumes where the bound PersistentVolumeClaim was deleted + // released volumes must be recycled before becoming available again + // this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource + VolumeReleased PersistentVolumePhase = "Released" + // used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim + VolumeFailed PersistentVolumePhase = "Failed" +) + +type PersistentVolumeClaimPhase string + +const ( + // used for PersistentVolumeClaims that are not yet bound + ClaimPending PersistentVolumeClaimPhase = "Pending" + // used for PersistentVolumeClaims that are bound + ClaimBound PersistentVolumeClaimPhase = "Bound" + // used for PersistentVolumeClaims that lost their underlying + // PersistentVolume. The claim was bound to a PersistentVolume and this + // volume does not exist any longer and all data on it was lost. + ClaimLost PersistentVolumeClaimPhase = "Lost" +) + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +type HostPathVolumeSource struct { + Path string `json:"path"` +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +type EmptyDirVolumeSource struct { + // TODO: Longer term we want to represent the selection of underlying + // media more like a scheduling problem - user says what traits they + // need, we give them a backing store that satisfies that. For now + // this will cover the most common needs. + // Optional: what type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + Medium StorageMedium `json:"medium,omitempty"` +} + +// StorageMedium defines ways that storage can be allocated to a volume. +type StorageMedium string + +const ( + StorageMediumDefault StorageMedium = "" // use whatever the default is for the node + StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) +) + +// Protocol defines network protocols supported for things like container ports. +type Protocol string + +const ( + // ProtocolTCP is the TCP protocol. + ProtocolTCP Protocol = "TCP" + // ProtocolUDP is the UDP protocol. + ProtocolUDP Protocol = "UDP" +) + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +type GCEPersistentDiskVolumeSource struct { + // Unique name of the PD resource. Used to identify the disk in GCE + PDName string `json:"pdName"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty"` + // Optional: Partition on the disk to mount. + // If omitted, kubelet will attempt to mount the device name. + // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. + Partition int32 `json:"partition,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +type ISCSIVolumeSource struct { + // Required: iSCSI target portal + // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260) + TargetPortal string `json:"targetPortal,omitempty"` + // Required: target iSCSI Qualified Name + IQN string `json:"iqn,omitempty"` + // Required: iSCSI target lun number + Lun int32 `json:"lun,omitempty"` + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + ISCSIInterface string `json:"iscsiInterface,omitempty"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +type FCVolumeSource struct { + // Required: FC target worldwide names (WWNs) + TargetWWNs []string `json:"targetWWNs"` + // Required: FC target lun number + Lun *int32 `json:"lun"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +type FlexVolumeSource struct { + // Driver is the name of the driver to use for this volume. + Driver string `json:"driver"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + FSType string `json:"fsType,omitempty"` + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + SecretRef *LocalObjectReference `json:"secretRef,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` + // Optional: Extra driver options if any. + Options map[string]string `json:"options,omitempty"` +} + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +type AWSElasticBlockStoreVolumeSource struct { + // Unique id of the persistent disk resource. Used to identify the disk in AWS + VolumeID string `json:"volumeID"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty"` + // Optional: Partition on the disk to mount. + // If omitted, kubelet will attempt to mount the device name. + // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty. + Partition int32 `json:"partition,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +type GitRepoVolumeSource struct { + // Repository URL + Repository string `json:"repository"` + // Commit hash, this is optional + Revision string `json:"revision,omitempty"` + // Clone target, this is optional + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + Directory string `json:"directory,omitempty"` + // TODO: Consider credentials here. +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +type SecretVolumeSource struct { + // Name of the secret in the pod's namespace to use. + SecretName string `json:"secretName,omitempty"` + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + Items []KeyToPath `json:"items,omitempty"` + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty"` +} + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +type NFSVolumeSource struct { + // Server is the hostname or IP address of the NFS server + Server string `json:"server"` + + // Path is the exported NFS share + Path string `json:"path"` + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the NFS export to be mounted with read-only permissions + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +type QuobyteVolumeSource struct { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + Registry string `json:"registry"` + + // Volume is a string that references an already created Quobyte volume by name. + Volume string `json:"volume"` + + // Defaults to false (read/write). ReadOnly here will force + // the Quobyte to be mounted with read-only permissions + ReadOnly bool `json:"readOnly,omitempty"` + + // User to map volume access to + // Defaults to the root user + User string `json:"user,omitempty"` + + // Group to map volume access to + // Default is no group + Group string `json:"group,omitempty"` +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsVolumeSource struct { + // Required: EndpointsName is the endpoint name that details Glusterfs topology + EndpointsName string `json:"endpoints"` + + // Required: Path is the Glusterfs volume path + Path string `json:"path"` + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the Glusterfs to be mounted with read-only permissions + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +type RBDVolumeSource struct { + // Required: CephMonitors is a collection of Ceph monitors + CephMonitors []string `json:"monitors"` + // Required: RBDImage is the rados image name + RBDImage string `json:"image"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty"` + // Optional: RadosPool is the rados pool name,default is rbd + RBDPool string `json:"pool,omitempty"` + // Optional: RBDUser is the rados user name, default is admin + RadosUser string `json:"user,omitempty"` + // Optional: Keyring is the path to key ring for RBDUser, default is /etc/ceph/keyring + Keyring string `json:"keyring,omitempty"` + // Optional: SecretRef is name of the authentication secret for RBDUser, default is nil. + SecretRef *LocalObjectReference `json:"secretRef,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a cinder volume resource in Openstack. A Cinder volume +// must exist before mounting to a container. The volume must also be +// in the same region as the kubelet. Cinder volumes support ownership +// management and SELinux relabeling. +type CinderVolumeSource struct { + // Unique id of the volume used to identify the cinder volume + VolumeID string `json:"volumeID"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFSVolumeSource struct { + // Required: Monitors is a collection of Ceph monitors + Monitors []string `json:"monitors"` + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + Path string `json:"path,omitempty"` + // Optional: User is the rados user name, default is admin + User string `json:"user,omitempty"` + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + SecretFile string `json:"secretFile,omitempty"` + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + SecretRef *LocalObjectReference `json:"secretRef,omitempty"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a Flocker volume mounted by the Flocker agent. +// Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker + DatasetName string `json:"datasetName"` +} + +// Represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +type DownwardAPIVolumeSource struct { + // Items is a list of DownwardAPIVolume file + Items []DownwardAPIVolumeFile `json:"items,omitempty"` + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty"` +} + +// Represents a single file containing information from the downward API +type DownwardAPIVolumeFile struct { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + Path string `json:"path"` + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty"` + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + Mode *int32 `json:"mode,omitempty"` +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFileVolumeSource struct { + // the name of secret that contains Azure Storage Account Name and Key + SecretName string `json:"secretName"` + // Share Name + ShareName string `json:"shareName"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty"` +} + +// Represents a vSphere volume resource. +type VsphereVirtualDiskVolumeSource struct { + // Path that identifies vSphere volume vmdk + VolumePath string `json:"volumePath"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty"` +} + +type AzureDataDiskCachingMode string + +const ( + AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" + AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" + AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" +) + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +type AzureDiskVolumeSource struct { + // The Name of the data disk in the blob storage + DiskName string `json:"diskName"` + // The URI the the data disk in the blob storage + DataDiskURI string `json:"diskURI"` + // Host Caching mode: None, Read Only, Read Write. + CachingMode *AzureDataDiskCachingMode `json:"cachingMode,omitempty"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType *string `json:"fsType,omitempty"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly *bool `json:"readOnly,omitempty"` +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +type ConfigMapVolumeSource struct { + LocalObjectReference `json:",inline"` + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + Items []KeyToPath `json:"items,omitempty"` + // Mode bits to use on created files by default. Must be a value between + // 0 and 0777. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty"` +} + +// Maps a string key to a path within a volume. +type KeyToPath struct { + // The key to project. + Key string `json:"key"` + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + Path string `json:"path"` + // Optional: mode bits to use on this file, should be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + Mode *int32 `json:"mode,omitempty"` +} + +// ContainerPort represents a network port in a single container +type ContainerPort struct { + // Optional: If specified, this must be an IANA_SVC_NAME Each named port + // in a pod must have a unique name. + Name string `json:"name,omitempty"` + // Optional: If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + HostPort int32 `json:"hostPort,omitempty"` + // Required: This must be a valid port number, 0 < x < 65536. + ContainerPort int32 `json:"containerPort"` + // Required: Supports "TCP" and "UDP". + Protocol Protocol `json:"protocol,omitempty"` + // Optional: What host IP to bind the external port to. + HostIP string `json:"hostIP,omitempty"` +} + +// VolumeMount describes a mounting of a Volume within a container. +type VolumeMount struct { + // Required: This must match the Name of a Volume [above]. + Name string `json:"name"` + // Optional: Defaults to false (read-write). + ReadOnly bool `json:"readOnly,omitempty"` + // Required. Must not contain ':'. + MountPath string `json:"mountPath"` + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + SubPath string `json:"subPath,omitempty"` +} + +// EnvVar represents an environment variable present in a Container. +type EnvVar struct { + // Required: This must be a C_IDENTIFIER. + Name string `json:"name"` + // Optional: no more than one of the following may be specified. + // Optional: Defaults to ""; variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + Value string `json:"value,omitempty"` + // Optional: Specifies a source the value of this var should come from. + ValueFrom *EnvVarSource `json:"valueFrom,omitempty"` +} + +// EnvVarSource represents a source for the value of an EnvVar. +// Only one of its fields may be set. +type EnvVarSource struct { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.podIP. + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty"` + // Selects a key of a ConfigMap. + ConfigMapKeyRef *ConfigMapKeySelector `json:"configMapKeyRef,omitempty"` + // Selects a key of a secret in the pod's namespace. + SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty"` +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +type ObjectFieldSelector struct { + // Required: Version of the schema the FieldPath is written in terms of. + // If no value is specified, it will be defaulted to the APIVersion of the + // enclosing object. + APIVersion string `json:"apiVersion"` + // Required: Path of the field to select in the specified API version + FieldPath string `json:"fieldPath"` +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +type ResourceFieldSelector struct { + // Container name: required for volumes, optional for env vars + ContainerName string `json:"containerName,omitempty"` + // Required: resource to select + Resource string `json:"resource"` + // Specifies the output format of the exposed resources, defaults to "1" + Divisor resource.Quantity `json:"divisor,omitempty"` +} + +// Selects a key from a ConfigMap. +type ConfigMapKeySelector struct { + // The ConfigMap to select from. + LocalObjectReference `json:",inline"` + // The key to select. + Key string `json:"key"` +} + +// SecretKeySelector selects a key of a Secret. +type SecretKeySelector struct { + // The name of the secret in the pod's namespace to select from. + LocalObjectReference `json:",inline"` + // The key of the secret to select from. Must be a valid secret key. + Key string `json:"key"` +} + +// HTTPHeader describes a custom header to be used in HTTP probes +type HTTPHeader struct { + // The header field name + Name string `json:"name"` + // The header field value + Value string `json:"value"` +} + +// HTTPGetAction describes an action based on HTTP Get requests. +type HTTPGetAction struct { + // Optional: Path to access on the HTTP server. + Path string `json:"path,omitempty"` + // Required: Name or number of the port to access on the container. + Port intstr.IntOrString `json:"port,omitempty"` + // Optional: Host name to connect to, defaults to the pod IP. You + // probably want to set "Host" in httpHeaders instead. + Host string `json:"host,omitempty"` + // Optional: Scheme to use for connecting to the host, defaults to HTTP. + Scheme URIScheme `json:"scheme,omitempty"` + // Optional: Custom headers to set in the request. HTTP allows repeated headers. + HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty"` +} + +// URIScheme identifies the scheme used for connection to a host for Get actions +type URIScheme string + +const ( + // URISchemeHTTP means that the scheme used will be http:// + URISchemeHTTP URIScheme = "HTTP" + // URISchemeHTTPS means that the scheme used will be https:// + URISchemeHTTPS URIScheme = "HTTPS" +) + +// TCPSocketAction describes an action based on opening a socket +type TCPSocketAction struct { + // Required: Port to connect to. + Port intstr.IntOrString `json:"port,omitempty"` +} + +// ExecAction describes a "run in container" action. +type ExecAction struct { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + Command []string `json:"command,omitempty"` +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +type Probe struct { + // The action taken to determine the health of a container + Handler `json:",inline"` + // Length of time before health checking is activated. In seconds. + InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"` + // Length of time before health checking times out. In seconds. + TimeoutSeconds int32 `json:"timeoutSeconds,omitempty"` + // How often (in seconds) to perform the probe. + PeriodSeconds int32 `json:"periodSeconds,omitempty"` + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Must be 1 for liveness. + SuccessThreshold int32 `json:"successThreshold,omitempty"` + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + FailureThreshold int32 `json:"failureThreshold,omitempty"` +} + +// PullPolicy describes a policy for if/when to pull a container image +type PullPolicy string + +const ( + // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails. + PullAlways PullPolicy = "Always" + // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present + PullNever PullPolicy = "Never" + // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. + PullIfNotPresent PullPolicy = "IfNotPresent" +) + +// Capability represent POSIX capabilities type +type Capability string + +// Capabilities represent POSIX capabilities that can be added or removed to a running container. +type Capabilities struct { + // Added capabilities + Add []Capability `json:"add,omitempty"` + // Removed capabilities + Drop []Capability `json:"drop,omitempty"` +} + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + Limits ResourceList `json:"limits,omitempty"` + // Requests describes the minimum amount of compute resources required. + // If Request is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value + Requests ResourceList `json:"requests,omitempty"` +} + +// Container represents a single container that is expected to be run on the host. +type Container struct { + // Required: This must be a DNS_LABEL. Each container in a pod must + // have a unique name. + Name string `json:"name"` + // Required. + Image string `json:"image"` + // Optional: The docker image's entrypoint is used if this is not provided; cannot be updated. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + Command []string `json:"command,omitempty"` + // Optional: The docker image's cmd is used if this is not provided; cannot be updated. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + Args []string `json:"args,omitempty"` + // Optional: Defaults to Docker's default. + WorkingDir string `json:"workingDir,omitempty"` + Ports []ContainerPort `json:"ports,omitempty"` + Env []EnvVar `json:"env,omitempty"` + // Compute resource requirements. + Resources ResourceRequirements `json:"resources,omitempty"` + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"` + LivenessProbe *Probe `json:"livenessProbe,omitempty"` + ReadinessProbe *Probe `json:"readinessProbe,omitempty"` + Lifecycle *Lifecycle `json:"lifecycle,omitempty"` + // Required. + TerminationMessagePath string `json:"terminationMessagePath,omitempty"` + // Required: Policy for pulling images for this container + ImagePullPolicy PullPolicy `json:"imagePullPolicy"` + // Optional: SecurityContext defines the security options the container should be run with. + // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. + SecurityContext *SecurityContext `json:"securityContext,omitempty"` + + // Variables for interactive containers, these have very specialized use-cases (e.g. debugging) + // and shouldn't be used for general purpose containers. + Stdin bool `json:"stdin,omitempty"` + StdinOnce bool `json:"stdinOnce,omitempty"` + TTY bool `json:"tty,omitempty"` +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +type Handler struct { + // One and only one of the following should be specified. + // Exec specifies the action to take. + Exec *ExecAction `json:"exec,omitempty"` + // HTTPGet specifies the http request to perform. + HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` + // TCPSocket specifies an action involving a TCP port. + // TODO: implement a realistic TCP lifecycle hook + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty"` +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +type Lifecycle struct { + // PostStart is called immediately after a container is created. If the handler fails, the container + // is terminated and restarted. + PostStart *Handler `json:"postStart,omitempty"` + // PreStop is called immediately before a container is terminated. The reason for termination is + // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. + PreStop *Handler `json:"preStop,omitempty"` +} + +// The below types are used by kube_client and api_server. + +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition; +// "ConditionFalse" means a resource is not in the condition; "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +type ContainerStateWaiting struct { + // A brief CamelCase string indicating details about why the container is in waiting state. + Reason string `json:"reason,omitempty"` + // A human-readable message indicating details about why the container is in waiting state. + Message string `json:"message,omitempty"` +} + +type ContainerStateRunning struct { + StartedAt unversioned.Time `json:"startedAt,omitempty"` +} + +type ContainerStateTerminated struct { + ExitCode int32 `json:"exitCode"` + Signal int32 `json:"signal,omitempty"` + Reason string `json:"reason,omitempty"` + Message string `json:"message,omitempty"` + StartedAt unversioned.Time `json:"startedAt,omitempty"` + FinishedAt unversioned.Time `json:"finishedAt,omitempty"` + ContainerID string `json:"containerID,omitempty"` +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +type ContainerState struct { + Waiting *ContainerStateWaiting `json:"waiting,omitempty"` + Running *ContainerStateRunning `json:"running,omitempty"` + Terminated *ContainerStateTerminated `json:"terminated,omitempty"` +} + +type ContainerStatus struct { + // Each container in a pod must have a unique name. + Name string `json:"name"` + State ContainerState `json:"state,omitempty"` + LastTerminationState ContainerState `json:"lastState,omitempty"` + // Ready specifies whether the container has passed its readiness check. + Ready bool `json:"ready"` + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + RestartCount int32 `json:"restartCount"` + Image string `json:"image"` + ImageID string `json:"imageID"` + ContainerID string `json:"containerID,omitempty"` +} + +// PodPhase is a label for the condition of a pod at the current time. +type PodPhase string + +// These are the valid statuses of pods. +const ( + // PodPending means the pod has been accepted by the system, but one or more of the containers + // has not been started. This includes time before being bound to a node, as well as time spent + // pulling images onto the host. + PodPending PodPhase = "Pending" + // PodRunning means the pod has been bound to a node and all of the containers have been started. + // At least one container is still running or is in the process of being restarted. + PodRunning PodPhase = "Running" + // PodSucceeded means that all containers in the pod have voluntarily terminated + // with a container exit code of 0, and the system is not going to restart any of these containers. + PodSucceeded PodPhase = "Succeeded" + // PodFailed means that all containers in the pod have terminated, and at least one container has + // terminated in a failure (exited with a non-zero exit code or was stopped by the system). + PodFailed PodPhase = "Failed" + // PodUnknown means that for some reason the state of the pod could not be obtained, typically due + // to an error in communicating with the host of the pod. + PodUnknown PodPhase = "Unknown" +) + +type PodConditionType string + +// These are valid conditions of pod. +const ( + // PodScheduled represents status of the scheduling process for this pod. + PodScheduled PodConditionType = "PodScheduled" + // PodReady means the pod is able to service requests and should be added to the + // load balancing pools of all matching services. + PodReady PodConditionType = "Ready" + // PodInitialized means that all init containers in the pod have started successfully. + PodInitialized PodConditionType = "Initialized" +) + +type PodCondition struct { + Type PodConditionType `json:"type"` + Status ConditionStatus `json:"status"` + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty"` + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty"` + Reason string `json:"reason,omitempty"` + Message string `json:"message,omitempty"` +} + +// RestartPolicy describes how the container should be restarted. +// Only one of the following restart policies may be specified. +// If none of the following policies is specified, the default one +// is RestartPolicyAlways. +type RestartPolicy string + +const ( + RestartPolicyAlways RestartPolicy = "Always" + RestartPolicyOnFailure RestartPolicy = "OnFailure" + RestartPolicyNever RestartPolicy = "Never" +) + +// PodList is a list of Pods. +type PodList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Pod `json:"items"` +} + +// DNSPolicy defines how a pod's DNS will be configured. +type DNSPolicy string + +const ( + // DNSClusterFirst indicates that the pod should use cluster DNS + // first, if it is available, then fall back on the default (as + // determined by kubelet) DNS settings. + DNSClusterFirst DNSPolicy = "ClusterFirst" + + // DNSDefault indicates that the pod should use the default (as + // determined by kubelet) DNS settings. + DNSDefault DNSPolicy = "Default" +) + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +type NodeSelector struct { + //Required. A list of node selector terms. The terms are ORed. + NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms"` +} + +// A null or empty node selector term matches no objects. +type NodeSelectorTerm struct { + //Required. A list of node selector requirements. The requirements are ANDed. + MatchExpressions []NodeSelectorRequirement `json:"matchExpressions"` +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +type NodeSelectorRequirement struct { + // The label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key"` + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + Operator NodeSelectorOperator `json:"operator"` + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + Values []string `json:"values,omitempty"` +} + +// A node selector operator is the set of operators that can be used in +// a node selector requirement. +type NodeSelectorOperator string + +const ( + NodeSelectorOpIn NodeSelectorOperator = "In" + NodeSelectorOpNotIn NodeSelectorOperator = "NotIn" + NodeSelectorOpExists NodeSelectorOperator = "Exists" + NodeSelectorOpDoesNotExist NodeSelectorOperator = "DoesNotExist" + NodeSelectorOpGt NodeSelectorOperator = "Gt" + NodeSelectorOpLt NodeSelectorOperator = "Lt" +) + +// Affinity is a group of affinity scheduling rules. +type Affinity struct { + // Describes node affinity scheduling rules for the pod. + NodeAffinity *NodeAffinity `json:"nodeAffinity,omitempty"` + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + PodAffinity *PodAffinity `json:"podAffinity,omitempty"` + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + PodAntiAffinity *PodAntiAffinity `json:"podAntiAffinity,omitempty"` +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +type PodAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"` +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +type PodAntiAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"` +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +type WeightedPodAffinityTerm struct { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + Weight int `json:"weight"` + // Required. A pod affinity term, associated with the corresponding weight. + PodAffinityTerm PodAffinityTerm `json:"podAffinityTerm"` +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key <topologyKey> matches that of any node on which +// a pod of the set of pods is running. +type PodAffinityTerm struct { + // A label query over a set of resources, in this case pods. + LabelSelector *unversioned.LabelSelector `json:"labelSelector,omitempty"` + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // nil list means "this pod's namespace," empty list means "all namespaces" + // The json tag here is not "omitempty" since we need to distinguish nil and empty. + // See https://golang.org/pkg/encoding/json/#Marshal for more details. + Namespaces []string `json:"namespaces"` + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + TopologyKey string `json:"topologyKey,omitempty"` +} + +// Node affinity is a group of node affinity scheduling rules. +type NodeAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // will try to eventually evict the pod from its node. + // RequiredDuringSchedulingRequiredDuringExecution *NodeSelector `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"` +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +type PreferredSchedulingTerm struct { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + Weight int32 `json:"weight"` + // A node selector term, associated with the corresponding weight. + Preference NodeSelectorTerm `json:"preference"` +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +type Taint struct { + // Required. The taint key to be applied to a node. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key"` + // Required. The taint value corresponding to the taint key. + Value string `json:"value,omitempty"` + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule and PreferNoSchedule. + Effect TaintEffect `json:"effect"` +} + +type TaintEffect string + +const ( + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // but allow all pods submitted to Kubelet without going through the scheduler + // to start, and allow all already-running pods to continue running. + // Enforced by the scheduler. + TaintEffectNoSchedule TaintEffect = "NoSchedule" + // Like TaintEffectNoSchedule, but the scheduler tries not to schedule + // new pods onto the node, rather than prohibiting new pods from scheduling + // onto the node entirely. Enforced by the scheduler. + TaintEffectPreferNoSchedule TaintEffect = "PreferNoSchedule" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // do not allow pods to start on Kubelet unless they tolerate the taint, + // but allow all already-running pods to continue running. + // Enforced by the scheduler and Kubelet. + // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // do not allow pods to start on Kubelet unless they tolerate the taint, + // and evict any already-running pods that do not tolerate the taint. + // Enforced by the scheduler and Kubelet. + // TaintEffectNoScheduleNoAdmitNoExecute = "NoScheduleNoAdmitNoExecute" +) + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple <key,value,effect> using the matching operator <operator>. +type Toleration struct { + // Required. Key is the taint key that the toleration applies to. + Key string `json:"key,omitempty" patchStrategy:"merge" patchMergeKey:"key"` + // operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + Operator TolerationOperator `json:"operator,omitempty"` + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + Value string `json:"value,omitempty"` + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule and PreferNoSchedule. + Effect TaintEffect `json:"effect,omitempty"` + // TODO: For forgiveness (#1574), we'd eventually add at least a grace period + // here, and possibly an occurrence threshold and period. +} + +// A toleration operator is the set of operators that can be used in a toleration. +type TolerationOperator string + +const ( + TolerationOpExists TolerationOperator = "Exists" + TolerationOpEqual TolerationOperator = "Equal" +) + +// PodSpec is a description of a pod +type PodSpec struct { + Volumes []Volume `json:"volumes"` + // List of initialization containers belonging to the pod. + InitContainers []Container `json:"-"` + // List of containers belonging to the pod. + Containers []Container `json:"containers"` + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` + // Optional duration in seconds relative to the StartTime that the pod may be active on a node + // before the system actively tries to terminate the pod; value must be positive integer + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"` + // Required: Set DNS policy. + DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty"` + // NodeSelector is a selector which must be true for the pod to fit on a node + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod + // The pod will be allowed to use secrets referenced by the ServiceAccount + ServiceAccountName string `json:"serviceAccountName"` + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + NodeName string `json:"nodeName,omitempty"` + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + SecurityContext *PodSecurityContext `json:"securityContext,omitempty"` + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty"` + // Specifies the hostname of the Pod. + // If not specified, the pod's hostname will be set to a system-defined value. + Hostname string `json:"hostname,omitempty"` + // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". + // If not specified, the pod will not have a domainname at all. + Subdomain string `json:"subdomain,omitempty"` +} + +// Sysctl defines a kernel parameter to be set +type Sysctl struct { + // Name of a property to set + Name string `json:"name"` + // Value of a property to set + Value string `json:"value"` +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +type PodSecurityContext struct { + // Use the host's network namespace. If this option is set, the ports that will be + // used must be specified. + // Optional: Default to false + // +k8s:conversion-gen=false + HostNetwork bool `json:"hostNetwork,omitempty"` + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + HostPID bool `json:"hostPID,omitempty"` + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + HostIPC bool `json:"hostIPC,omitempty"` + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + RunAsUser *int64 `json:"runAsUser,omitempty"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"` + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + SupplementalGroups []int64 `json:"supplementalGroups,omitempty"` + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + FSGroup *int64 `json:"fsGroup,omitempty"` +} + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +type PodStatus struct { + Phase PodPhase `json:"phase,omitempty"` + Conditions []PodCondition `json:"conditions,omitempty"` + // A human readable message indicating details about why the pod is in this state. + Message string `json:"message,omitempty"` + // A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk' + Reason string `json:"reason,omitempty"` + + HostIP string `json:"hostIP,omitempty"` + PodIP string `json:"podIP,omitempty"` + + // Date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + StartTime *unversioned.Time `json:"startTime,omitempty"` + + // The list has one entry per init container in the manifest. The most recent successful + // init container will have ready = true, the most recently started container will have + // startTime set. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses + InitContainerStatuses []ContainerStatus `json:"-"` + // The list has one entry per container in the manifest. Each entry is + // currently the output of `docker inspect`. This output format is *not* + // final and should not be relied upon. + // TODO: Make real decisions about what our info should look like. Re-enable fuzz test + // when we have done this. + ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty"` +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +type PodStatusResult struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + // Status represents the current information about a pod. This data may not be up + // to date. + Status PodStatus `json:"status,omitempty"` +} + +// +genclient=true + +// Pod is a collection of containers, used as either input (create, update) or as output (list, get). +type Pod struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the behavior of a pod. + Spec PodSpec `json:"spec,omitempty"` + + // Status represents the current information about a pod. This data may not be up + // to date. + Status PodStatus `json:"status,omitempty"` +} + +// PodTemplateSpec describes the data a pod should have when created from a template +type PodTemplateSpec struct { + // Metadata of the pods created from this template. + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the behavior of a pod. + Spec PodSpec `json:"spec,omitempty"` +} + +// +genclient=true + +// PodTemplate describes a template for creating copies of a predefined pod. +type PodTemplate struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Template defines the pods that will be created from this pod template + Template PodTemplateSpec `json:"template,omitempty"` +} + +// PodTemplateList is a list of PodTemplates. +type PodTemplateList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []PodTemplate `json:"items"` +} + +// ReplicationControllerSpec is the specification of a replication controller. +// As the internal representation of a replication controller, it may have either +// a TemplateRef or a Template set. +type ReplicationControllerSpec struct { + // Replicas is the number of desired replicas. + Replicas int32 `json:"replicas"` + + // Selector is a label query over pods that should match the Replicas count. + Selector map[string]string `json:"selector"` + + // TemplateRef is a reference to an object that describes the pod that will be created if + // insufficient replicas are detected. This reference is ignored if a Template is set. + // Must be set before converting to a versioned API object + //TemplateRef *ObjectReference `json:"templateRef,omitempty"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Internally, this takes precedence over a + // TemplateRef. + Template *PodTemplateSpec `json:"template,omitempty"` +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +type ReplicationControllerStatus struct { + // Replicas is the number of actual replicas. + Replicas int32 `json:"replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty"` + + // The number of ready replicas for this replication controller. + ReadyReplicas int32 `json:"readyReplicas,omitempty"` + + // ObservedGeneration is the most recent generation observed by the controller. + ObservedGeneration int64 `json:"observedGeneration,omitempty"` +} + +// +genclient=true + +// ReplicationController represents the configuration of a replication controller. +type ReplicationController struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the desired behavior of this replication controller. + Spec ReplicationControllerSpec `json:"spec,omitempty"` + + // Status is the current status of this replication controller. This data may be + // out of date by some window of time. + Status ReplicationControllerStatus `json:"status,omitempty"` +} + +// ReplicationControllerList is a collection of replication controllers. +type ReplicationControllerList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []ReplicationController `json:"items"` +} + +const ( + // ClusterIPNone - do not assign a cluster IP + // no proxying required and no environment variables should be created for pods + ClusterIPNone = "None" +) + +// ServiceList holds a list of services. +type ServiceList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Service `json:"items"` +} + +// Session Affinity Type string +type ServiceAffinity string + +const ( + // ServiceAffinityClientIP is the Client IP based. + ServiceAffinityClientIP ServiceAffinity = "ClientIP" + + // ServiceAffinityNone - no session affinity. + ServiceAffinityNone ServiceAffinity = "None" +) + +// Service Type string describes ingress methods for a service +type ServiceType string + +const ( + // ServiceTypeClusterIP means a service will only be accessible inside the + // cluster, via the ClusterIP. + ServiceTypeClusterIP ServiceType = "ClusterIP" + + // ServiceTypeNodePort means a service will be exposed on one port of + // every node, in addition to 'ClusterIP' type. + ServiceTypeNodePort ServiceType = "NodePort" + + // ServiceTypeLoadBalancer means a service will be exposed via an + // external load balancer (if the cloud provider supports it), in addition + // to 'NodePort' type. + ServiceTypeLoadBalancer ServiceType = "LoadBalancer" + + // ServiceTypeExternalName means a service consists of only a reference to + // an external name that kubedns or equivalent will return as a CNAME + // record, with no exposing or proxying of any pods involved. + ServiceTypeExternalName ServiceType = "ExternalName" +) + +// ServiceStatus represents the current status of a service +type ServiceStatus struct { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + LoadBalancer LoadBalancerStatus `json:"loadBalancer,omitempty"` +} + +// LoadBalancerStatus represents the status of a load-balancer +type LoadBalancerStatus struct { + // Ingress is a list containing ingress points for the load-balancer; + // traffic intended for the service should be sent to these ingress points. + Ingress []LoadBalancerIngress `json:"ingress,omitempty"` +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +type LoadBalancerIngress struct { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + IP string `json:"ip,omitempty"` + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + Hostname string `json:"hostname,omitempty"` +} + +// ServiceSpec describes the attributes that a user creates on a service +type ServiceSpec struct { + // Type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + Type ServiceType `json:"type,omitempty"` + + // Required: The list of ports that are exposed by this service. + Ports []ServicePort `json:"ports"` + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + Selector map[string]string `json:"selector"` + + // ClusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + ClusterIP string `json:"clusterIP,omitempty"` + + // ExternalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + ExternalName string + + // ExternalIPs are used by external load balancers, or can be set by + // users to handle external traffic that arrives at a node. + ExternalIPs []string `json:"externalIPs,omitempty"` + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + LoadBalancerIP string `json:"loadBalancerIP,omitempty"` + + // Optional: Supports "ClientIP" and "None". Used to maintain session affinity. + SessionAffinity ServiceAffinity `json:"sessionAffinity,omitempty"` + + // Optional: If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty"` +} + +type ServicePort struct { + // Optional if only one ServicePort is defined on this service: The + // name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + Name string `json:"name"` + + // The IP protocol for this port. Supports "TCP" and "UDP". + Protocol Protocol `json:"protocol"` + + // The port that will be exposed on the service. + Port int32 `json:"port"` + + // Optional: The target port on pods selected by this service. If this + // is a string, it will be looked up as a named port in the target + // Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + TargetPort intstr.IntOrString `json:"targetPort"` + + // The port on each node on which this service is exposed. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + NodePort int32 `json:"nodePort"` +} + +// +genclient=true + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +type Service struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the behavior of a service. + Spec ServiceSpec `json:"spec,omitempty"` + + // Status represents the current status of a service. + Status ServiceStatus `json:"status,omitempty"` +} + +// +genclient=true + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +type ServiceAccount struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount + Secrets []ObjectReference `json:"secrets"` + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty"` +} + +// ServiceAccountList is a list of ServiceAccount objects +type ServiceAccountList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []ServiceAccount `json:"items"` +} + +// +genclient=true + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +type Endpoints struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // The set of all endpoints is the union of all subsets. + Subsets []EndpointSubset +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +type EndpointSubset struct { + Addresses []EndpointAddress + NotReadyAddresses []EndpointAddress + Ports []EndpointPort +} + +// EndpointAddress is a tuple that describes single IP address. +type EndpointAddress struct { + // The IP of this endpoint. + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, see #4447. + IP string + // Optional: Hostname of this endpoint + // Meant to be used by DNS servers etc. + Hostname string `json:"hostname,omitempty"` + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + NodeName *string `json:"nodeName,omitempty"` + // Optional: The kubernetes object related to the entry point. + TargetRef *ObjectReference +} + +// EndpointPort is a tuple that describes a single port. +type EndpointPort struct { + // The name of this port (corresponds to ServicePort.Name). Optional + // if only one port is defined. Must be a DNS_LABEL. + Name string + + // The port number. + Port int32 + + // The IP protocol for this port. + Protocol Protocol +} + +// EndpointsList is a list of endpoints. +type EndpointsList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Endpoints `json:"items"` +} + +// NodeSpec describes the attributes that a node is created with. +type NodeSpec struct { + // PodCIDR represents the pod IP range assigned to the node + // Note: assigning IP ranges to nodes might need to be revisited when we support migratable IPs. + PodCIDR string `json:"podCIDR,omitempty"` + + // External ID of the node assigned by some machine database (e.g. a cloud provider) + ExternalID string `json:"externalID,omitempty"` + + // ID of the node assigned by the cloud provider + // Note: format is "<ProviderName>://<ProviderSpecificNodeID>" + ProviderID string `json:"providerID,omitempty"` + + // Unschedulable controls node schedulability of new pods. By default node is schedulable. + Unschedulable bool `json:"unschedulable,omitempty"` +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +type DaemonEndpoint struct { + /* + The port tag was not properly in quotes in earlier releases, so it must be + uppercased for backwards compat (since it was falling back to var name of + 'Port'). + */ + + // Port number of the given endpoint. + Port int32 `json:"Port"` +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +type NodeDaemonEndpoints struct { + // Endpoint on which Kubelet is listening. + KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty"` +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +type NodeSystemInfo struct { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is prefered. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + MachineID string `json:"machineID"` + // SystemUUID reported by the node. For unique machine identification + // MachineID is prefered. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + SystemUUID string `json:"systemUUID"` + // Boot ID reported by the node. + BootID string `json:"bootID"` + // Kernel Version reported by the node. + KernelVersion string `json:"kernelVersion"` + // OS Image reported by the node. + OSImage string `json:"osImage"` + // ContainerRuntime Version reported by the node. + ContainerRuntimeVersion string `json:"containerRuntimeVersion"` + // Kubelet Version reported by the node. + KubeletVersion string `json:"kubeletVersion"` + // KubeProxy Version reported by the node. + KubeProxyVersion string `json:"kubeProxyVersion"` + // The Operating System reported by the node + OperatingSystem string `json:"operatingSystem"` + // The Architecture reported by the node + Architecture string `json:"architecture"` +} + +// NodeStatus is information about the current status of a node. +type NodeStatus struct { + // Capacity represents the total resources of a node. + Capacity ResourceList `json:"capacity,omitempty"` + // Allocatable represents the resources of a node that are available for scheduling. + Allocatable ResourceList `json:"allocatable,omitempty"` + // NodePhase is the current lifecycle phase of the node. + Phase NodePhase `json:"phase,omitempty"` + // Conditions is an array of current node conditions. + Conditions []NodeCondition `json:"conditions,omitempty"` + // Queried from cloud provider, if available. + Addresses []NodeAddress `json:"addresses,omitempty"` + // Endpoints of daemons running on the Node. + DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty"` + // Set of ids/uuids to uniquely identify the node. + NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty"` + // List of container images on this node + Images []ContainerImage `json:"images,omitempty"` + // List of attachable volumes in use (mounted) by the node. + VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty"` + // List of volumes that are attached to the node. + VolumesAttached []AttachedVolume `json:"volumesAttached,omitempty"` +} + +type UniqueVolumeName string + +// AttachedVolume describes a volume attached to a node +type AttachedVolume struct { + // Name of the attached volume + Name UniqueVolumeName `json:"name"` + + // DevicePath represents the device path where the volume should be available + DevicePath string `json:"devicePath"` +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +type AvoidPods struct { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + PreferAvoidPods []PreferAvoidPodsEntry `json:"preferAvoidPods,omitempty"` +} + +// Describes a class of pods that should avoid this node. +type PreferAvoidPodsEntry struct { + // The class of pods. + PodSignature PodSignature `json:"podSignature"` + // Time at which this entry was added to the list. + EvictionTime unversioned.Time `json:"evictionTime,omitempty"` + // (brief) reason why this entry was added to the list. + Reason string `json:"reason,omitempty"` + // Human readable message indicating why this entry was added to the list. + Message string `json:"message,omitempty"` +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +type PodSignature struct { + // Reference to controller whose pods should avoid this node. + PodController *OwnerReference `json:"podController,omitempty"` +} + +// Describe a container image +type ContainerImage struct { + // Names by which this image is known. + Names []string `json:"names"` + // The size of the image in bytes. + SizeBytes int64 `json:"sizeBytes,omitempty"` +} + +type NodePhase string + +// These are the valid phases of node. +const ( + // NodePending means the node has been created/added by the system, but not configured. + NodePending NodePhase = "Pending" + // NodeRunning means the node has been configured and has Kubernetes components running. + NodeRunning NodePhase = "Running" + // NodeTerminated means the node has been removed from the cluster. + NodeTerminated NodePhase = "Terminated" +) + +type NodeConditionType string + +// These are valid conditions of node. Currently, we don't have enough information to decide +// node condition. In the future, we will add more. The proposed set of conditions are: +// NodeReady, NodeReachable +const ( + // NodeReady means kubelet is healthy and ready to accept pods. + NodeReady NodeConditionType = "Ready" + // NodeOutOfDisk means the kubelet will not accept new pods due to insufficient free disk + // space on the node. + NodeOutOfDisk NodeConditionType = "OutOfDisk" + // NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory. + NodeMemoryPressure NodeConditionType = "MemoryPressure" + // NodeDiskPressure means the kubelet is under pressure due to insufficient available disk. + NodeDiskPressure NodeConditionType = "DiskPressure" + // NodeNetworkUnavailable means that network for the node is not correctly configured. + NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" +) + +type NodeCondition struct { + Type NodeConditionType `json:"type"` + Status ConditionStatus `json:"status"` + LastHeartbeatTime unversioned.Time `json:"lastHeartbeatTime,omitempty"` + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty"` + Reason string `json:"reason,omitempty"` + Message string `json:"message,omitempty"` +} + +type NodeAddressType string + +// These are valid address types of node. NodeLegacyHostIP is used to transit +// from out-dated HostIP field to NodeAddress. +const ( + NodeLegacyHostIP NodeAddressType = "LegacyHostIP" + NodeHostName NodeAddressType = "Hostname" + NodeExternalIP NodeAddressType = "ExternalIP" + NodeInternalIP NodeAddressType = "InternalIP" +) + +type NodeAddress struct { + Type NodeAddressType `json:"type"` + Address string `json:"address"` +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +type NodeResources struct { + // Capacity represents the available resources of a node + Capacity ResourceList `json:"capacity,omitempty"` +} + +// ResourceName is the name identifying various resources in a ResourceList. +type ResourceName string + +// Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters, +// with the -, _, and . characters allowed anywhere, except the first or last character. +// The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than +// camel case, separating compound words. +// Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name. +const ( + // CPU, in cores. (500m = .5 cores) + ResourceCPU ResourceName = "cpu" + // Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceMemory ResourceName = "memory" + // Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) + ResourceStorage ResourceName = "storage" + // NVIDIA GPU, in devices. Alpha, might change: although fractional and allowing values >1, only one whole device per node is assigned. + ResourceNvidiaGPU ResourceName = "alpha.kubernetes.io/nvidia-gpu" + // Number of Pods that may be running on this Node: see ResourcePods +) + +// ResourceList is a set of (resource name, quantity) pairs. +type ResourceList map[ResourceName]resource.Quantity + +// +genclient=true +// +nonNamespaced=true + +// Node is a worker node in Kubernetes +// The name of the node according to etcd is in ObjectMeta.Name. +type Node struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the behavior of a node. + Spec NodeSpec `json:"spec,omitempty"` + + // Status describes the current status of a Node + Status NodeStatus `json:"status,omitempty"` +} + +// NodeList is a list of nodes. +type NodeList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Node `json:"items"` +} + +// NamespaceSpec describes the attributes on a Namespace +type NamespaceSpec struct { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage + Finalizers []FinalizerName +} + +type FinalizerName string + +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here +const ( + FinalizerKubernetes FinalizerName = "kubernetes" + FinalizerOrphan string = "orphan" +) + +// NamespaceStatus is information about the current status of a Namespace. +type NamespaceStatus struct { + // Phase is the current lifecycle phase of the namespace. + Phase NamespacePhase `json:"phase,omitempty"` +} + +type NamespacePhase string + +// These are the valid phases of a namespace. +const ( + // NamespaceActive means the namespace is available for use in the system + NamespaceActive NamespacePhase = "Active" + // NamespaceTerminating means the namespace is undergoing graceful termination + NamespaceTerminating NamespacePhase = "Terminating" +) + +// +genclient=true +// +nonNamespaced=true + +// A namespace provides a scope for Names. +// Use of multiple namespaces is optional +type Namespace struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the behavior of the Namespace. + Spec NamespaceSpec `json:"spec,omitempty"` + + // Status describes the current status of a Namespace + Status NamespaceStatus `json:"status,omitempty"` +} + +// NamespaceList is a list of Namespaces. +type NamespaceList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Namespace `json:"items"` +} + +// Binding ties one object to another - for example, a pod is bound to a node by a scheduler. +type Binding struct { + unversioned.TypeMeta `json:",inline"` + // ObjectMeta describes the object that is being bound. + ObjectMeta `json:"metadata,omitempty"` + + // Target is the object to bind to. + Target ObjectReference `json:"target"` +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +type Preconditions struct { + // Specifies the target UID. + UID *types.UID `json:"uid,omitempty"` +} + +// DeleteOptions may be provided when deleting an API object +type DeleteOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Optional duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty"` + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + Preconditions *Preconditions `json:"preconditions,omitempty"` + + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + OrphanDependents *bool `json:"orphanDependents,omitempty"` +} + +// ExportOptions is the query options to the standard REST get call. +type ExportOptions struct { + unversioned.TypeMeta `json:",inline"` + // Should this value be exported. Export strips fields that a user can not specify. + Export bool `json:"export"` + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + Exact bool `json:"exact"` +} + +// ListOptions is the query options to a standard REST list call, and has future support for +// watch calls. +type ListOptions struct { + unversioned.TypeMeta `json:",inline"` + + // A selector based on labels + LabelSelector labels.Selector + // A selector based on fields + FieldSelector fields.Selector + // If true, watch for changes to this list + Watch bool + // For watch, it's the resource version to watch. + // For list, + // - if unset, then the result is returned from remote storage based on quorum-read flag; + // - if it's 0, then we simply return what we currently have in cache, no guarantee; + // - if set to non zero, then the result is as fresh as given rv. + ResourceVersion string + // Timeout for the list/watch call. + TimeoutSeconds *int64 +} + +// PodLogOptions is the query options for a Pod's logs REST call +type PodLogOptions struct { + unversioned.TypeMeta + + // Container for which to return logs + Container string + // If true, follow the logs for the pod + Follow bool + // If true, return previous terminated container logs + Previous bool + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceSeconds *int64 + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceTime *unversioned.Time + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. + Timestamps bool + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + TailLines *int64 + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + LimitBytes *int64 +} + +// PodAttachOptions is the query options to a Pod's remote attach call +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +type PodAttachOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Stdin if true indicates that stdin is to be redirected for the attach call + Stdin bool `json:"stdin,omitempty"` + + // Stdout if true indicates that stdout is to be redirected for the attach call + Stdout bool `json:"stdout,omitempty"` + + // Stderr if true indicates that stderr is to be redirected for the attach call + Stderr bool `json:"stderr,omitempty"` + + // TTY if true indicates that a tty will be allocated for the attach call + TTY bool `json:"tty,omitempty"` + + // Container to attach to. + Container string `json:"container,omitempty"` +} + +// PodExecOptions is the query options to a Pod's remote exec call +type PodExecOptions struct { + unversioned.TypeMeta + + // Stdin if true indicates that stdin is to be redirected for the exec call + Stdin bool + + // Stdout if true indicates that stdout is to be redirected for the exec call + Stdout bool + + // Stderr if true indicates that stderr is to be redirected for the exec call + Stderr bool + + // TTY if true indicates that a tty will be allocated for the exec call + TTY bool + + // Container in which to execute the command. + Container string + + // Command is the remote command to execute; argv array; not executed within a shell. + Command []string +} + +// PodProxyOptions is the query options to a Pod's proxy call +type PodProxyOptions struct { + unversioned.TypeMeta + + // Path is the URL path to use for the current proxy request + Path string +} + +// NodeProxyOptions is the query options to a Node's proxy call +type NodeProxyOptions struct { + unversioned.TypeMeta + + // Path is the URL path to use for the current proxy request + Path string +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +type ServiceProxyOptions struct { + unversioned.TypeMeta + + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + Path string +} + +// OwnerReference contains enough information to let you identify an owning +// object. Currently, an owning object must be in the same namespace, so there +// is no namespace field. +type OwnerReference struct { + // API version of the referent. + APIVersion string `json:"apiVersion"` + // Kind of the referent. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind"` + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name"` + // UID of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + UID types.UID `json:"uid"` + // If true, this reference points to the managing controller. + Controller *bool `json:"controller,omitempty"` +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +type ObjectReference struct { + Kind string `json:"kind,omitempty"` + Namespace string `json:"namespace,omitempty"` + Name string `json:"name,omitempty"` + UID types.UID `json:"uid,omitempty"` + APIVersion string `json:"apiVersion,omitempty"` + ResourceVersion string `json:"resourceVersion,omitempty"` + + // Optional. If referring to a piece of an object instead of an entire object, this string + // should contain information to identify the sub-object. For example, if the object + // reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + FieldPath string `json:"fieldPath,omitempty"` +} + +// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +type LocalObjectReference struct { + //TODO: Add other useful fields. apiVersion, kind, uid? + Name string +} + +type SerializedReference struct { + unversioned.TypeMeta `json:",inline"` + Reference ObjectReference `json:"reference,omitempty"` +} + +type EventSource struct { + // Component from which the event is generated. + Component string `json:"component,omitempty"` + // Node name on which the event is generated. + Host string `json:"host,omitempty"` +} + +// Valid values for event types (new types could be added in future) +const ( + // Information only and will not cause any problems + EventTypeNormal string = "Normal" + // These events are to warn that something might go wrong + EventTypeWarning string = "Warning" +) + +// +genclient=true + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +type Event struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Required. The object that this event is about. + InvolvedObject ObjectReference `json:"involvedObject,omitempty"` + + // Optional; this should be a short, machine understandable string that gives the reason + // for this event being generated. For example, if the event is reporting that a container + // can't start, the Reason might be "ImageNotFound". + // TODO: provide exact specification for format. + Reason string `json:"reason,omitempty"` + + // Optional. A human-readable description of the status of this operation. + // TODO: decide on maximum length. + Message string `json:"message,omitempty"` + + // Optional. The component reporting this event. Should be a short machine understandable string. + Source EventSource `json:"source,omitempty"` + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + FirstTimestamp unversioned.Time `json:"firstTimestamp,omitempty"` + + // The time at which the most recent occurrence of this event was recorded. + LastTimestamp unversioned.Time `json:"lastTimestamp,omitempty"` + + // The number of times this event has occurred. + Count int32 `json:"count,omitempty"` + + // Type of this event (Normal, Warning), new types could be added in the future. + Type string `json:"type,omitempty"` +} + +// EventList is a list of events. +type EventList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Event `json:"items"` +} + +// List holds a list of objects, which may not be known by the server. +type List struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []runtime.Object `json:"items"` +} + +// A type of object that is limited +type LimitType string + +const ( + // Limit that applies to all pods in a namespace + LimitTypePod LimitType = "Pod" + // Limit that applies to all containers in a namespace + LimitTypeContainer LimitType = "Container" +) + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind +type LimitRangeItem struct { + // Type of resource that this limit applies to + Type LimitType `json:"type,omitempty"` + // Max usage constraints on this kind by resource name + Max ResourceList `json:"max,omitempty"` + // Min usage constraints on this kind by resource name + Min ResourceList `json:"min,omitempty"` + // Default resource requirement limit value by resource name. + Default ResourceList `json:"default,omitempty"` + // DefaultRequest resource requirement request value by resource name. + DefaultRequest ResourceList `json:"defaultRequest,omitempty"` + // MaxLimitRequestRatio represents the max burst value for the named resource + MaxLimitRequestRatio ResourceList `json:"maxLimitRequestRatio,omitempty"` +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind +type LimitRangeSpec struct { + // Limits is the list of LimitRangeItem objects that are enforced + Limits []LimitRangeItem `json:"limits"` +} + +// +genclient=true + +// LimitRange sets resource usage limits for each kind of resource in a Namespace +type LimitRange struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the limits enforced + Spec LimitRangeSpec `json:"spec,omitempty"` +} + +// LimitRangeList is a list of LimitRange items. +type LimitRangeList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is a list of LimitRange objects + Items []LimitRange `json:"items"` +} + +// The following identify resource constants for Kubernetes object types +const ( + // Pods, number + ResourcePods ResourceName = "pods" + // Services, number + ResourceServices ResourceName = "services" + // ReplicationControllers, number + ResourceReplicationControllers ResourceName = "replicationcontrollers" + // ResourceQuotas, number + ResourceQuotas ResourceName = "resourcequotas" + // ResourceSecrets, number + ResourceSecrets ResourceName = "secrets" + // ResourceConfigMaps, number + ResourceConfigMaps ResourceName = "configmaps" + // ResourcePersistentVolumeClaims, number + ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims" + // ResourceServicesNodePorts, number + ResourceServicesNodePorts ResourceName = "services.nodeports" + // ResourceServicesLoadBalancers, number + ResourceServicesLoadBalancers ResourceName = "services.loadbalancers" + // CPU request, in cores. (500m = .5 cores) + ResourceRequestsCPU ResourceName = "requests.cpu" + // Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceRequestsMemory ResourceName = "requests.memory" + // Storage request, in bytes + ResourceRequestsStorage ResourceName = "requests.storage" + // CPU limit, in cores. (500m = .5 cores) + ResourceLimitsCPU ResourceName = "limits.cpu" + // Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceLimitsMemory ResourceName = "limits.memory" +) + +// A ResourceQuotaScope defines a filter that must match each object tracked by a quota +type ResourceQuotaScope string + +const ( + // Match all pod objects where spec.activeDeadlineSeconds + ResourceQuotaScopeTerminating ResourceQuotaScope = "Terminating" + // Match all pod objects where !spec.activeDeadlineSeconds + ResourceQuotaScopeNotTerminating ResourceQuotaScope = "NotTerminating" + // Match all pod objects that have best effort quality of service + ResourceQuotaScopeBestEffort ResourceQuotaScope = "BestEffort" + // Match all pod objects that do not have best effort quality of service + ResourceQuotaScopeNotBestEffort ResourceQuotaScope = "NotBestEffort" +) + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota +type ResourceQuotaSpec struct { + // Hard is the set of desired hard limits for each named resource + Hard ResourceList `json:"hard,omitempty"` + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + Scopes []ResourceQuotaScope `json:"scopes,omitempty"` +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use +type ResourceQuotaStatus struct { + // Hard is the set of enforced hard limits for each named resource + Hard ResourceList `json:"hard,omitempty"` + // Used is the current observed total usage of the resource in the namespace + Used ResourceList `json:"used,omitempty"` +} + +// +genclient=true + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +type ResourceQuota struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the desired quota + Spec ResourceQuotaSpec `json:"spec,omitempty"` + + // Status defines the actual enforced quota and its current usage + Status ResourceQuotaStatus `json:"status,omitempty"` +} + +// ResourceQuotaList is a list of ResourceQuota items +type ResourceQuotaList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is a list of ResourceQuota objects + Items []ResourceQuota `json:"items"` +} + +// +genclient=true + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +type Secret struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN + // or leading dot followed by valid DNS_SUBDOMAIN. + // The serialized form of the secret data is a base64 encoded string, + // representing the arbitrary (possibly non-string) data value here. + Data map[string][]byte `json:"data,omitempty"` + + // Used to facilitate programmatic handling of secret data. + Type SecretType `json:"type,omitempty"` +} + +const MaxSecretSize = 1 * 1024 * 1024 + +type SecretType string + +const ( + // SecretTypeOpaque is the default; arbitrary user-defined data + SecretTypeOpaque SecretType = "Opaque" + + // SecretTypeServiceAccountToken contains a token that identifies a service account to the API + // + // Required fields: + // - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies + // - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies + // - Secret.Data["token"] - a token that identifies the service account to the API + SecretTypeServiceAccountToken SecretType = "kubernetes.io/service-account-token" + + // ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountNameKey = "kubernetes.io/service-account.name" + // ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountUIDKey = "kubernetes.io/service-account.uid" + // ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets + ServiceAccountTokenKey = "token" + // ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets + ServiceAccountKubeconfigKey = "kubernetes.kubeconfig" + // ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets + ServiceAccountRootCAKey = "ca.crt" + // ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls + ServiceAccountNamespaceKey = "namespace" + + // SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg + // + // Required fields: + // - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file + SecretTypeDockercfg SecretType = "kubernetes.io/dockercfg" + + // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets + DockerConfigKey = ".dockercfg" + + // SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json + // + // Required fields: + // - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file + SecretTypeDockerConfigJson SecretType = "kubernetes.io/dockerconfigjson" + + // DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets + DockerConfigJsonKey = ".dockerconfigjson" + + // SecretTypeBasicAuth contains data needed for basic authentication. + // + // Required at least one of fields: + // - Secret.Data["username"] - username used for authentication + // - Secret.Data["password"] - password or token needed for authentication + SecretTypeBasicAuth SecretType = "kubernetes.io/basic-auth" + + // BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets + BasicAuthUsernameKey = "username" + // BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets + BasicAuthPasswordKey = "password" + + // SecretTypeSSHAuth contains data needed for SSH authetication. + // + // Required field: + // - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication + SecretTypeSSHAuth SecretType = "kubernetes.io/ssh-auth" + + // SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets + SSHAuthPrivateKey = "ssh-privatekey" + + // SecretTypeTLS contains information about a TLS client or server secret. It + // is primarily used with TLS termination of the Ingress resource, but may be + // used in other types. + // + // Required fields: + // - Secret.Data["tls.key"] - TLS private key. + // Secret.Data["tls.crt"] - TLS certificate. + // TODO: Consider supporting different formats, specifying CA/destinationCA. + SecretTypeTLS SecretType = "kubernetes.io/tls" + + // TLSCertKey is the key for tls certificates in a TLS secret. + TLSCertKey = "tls.crt" + // TLSPrivateKeyKey is the key for the private key field in a TLS secret. + TLSPrivateKeyKey = "tls.key" +) + +type SecretList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []Secret `json:"items"` +} + +// +genclient=true + +// ConfigMap holds configuration data for components or applications to consume. +type ConfigMap struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + // Data contains the configuration data. + // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot. + Data map[string]string `json:"data,omitempty"` +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type ConfigMapList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of ConfigMaps. + Items []ConfigMap `json:"items"` +} + +// These constants are for remote command execution and port forwarding and are +// used by both the client side and server side components. +// +// This is probably not the ideal place for them, but it didn't seem worth it +// to create pkg/exec and pkg/portforward just to contain a single file with +// constants in it. Suggestions for more appropriate alternatives are +// definitely welcome! +const ( + // Enable stdin for remote command execution + ExecStdinParam = "input" + // Enable stdout for remote command execution + ExecStdoutParam = "output" + // Enable stderr for remote command execution + ExecStderrParam = "error" + // Enable TTY for remote command execution + ExecTTYParam = "tty" + // Command to run for remote command execution + ExecCommandParamm = "command" + + // Name of header that specifies stream type + StreamType = "streamType" + // Value for streamType header for stdin stream + StreamTypeStdin = "stdin" + // Value for streamType header for stdout stream + StreamTypeStdout = "stdout" + // Value for streamType header for stderr stream + StreamTypeStderr = "stderr" + // Value for streamType header for data stream + StreamTypeData = "data" + // Value for streamType header for error stream + StreamTypeError = "error" + // Value for streamType header for terminal resize stream + StreamTypeResize = "resize" + + // Name of header that specifies the port being forwarded + PortHeader = "port" + // Name of header that specifies a request ID used to associate the error + // and data streams for a single forwarded connection + PortForwardRequestIDHeader = "requestID" +) + +// Similarly to above, these are constants to support HTTP PATCH utilized by +// both the client and server that didn't make sense for a whole package to be +// dedicated to. +type PatchType string + +const ( + JSONPatchType PatchType = "application/json-patch+json" + MergePatchType PatchType = "application/merge-patch+json" + StrategicMergePatchType PatchType = "application/strategic-merge-patch+json" +) + +// Type and constants for component health validation. +type ComponentConditionType string + +// These are the valid conditions for the component. +const ( + ComponentHealthy ComponentConditionType = "Healthy" +) + +type ComponentCondition struct { + Type ComponentConditionType `json:"type"` + Status ConditionStatus `json:"status"` + Message string `json:"message,omitempty"` + Error string `json:"error,omitempty"` +} + +// +genclient=true +// +nonNamespaced=true + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +type ComponentStatus struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + + Conditions []ComponentCondition `json:"conditions,omitempty"` +} + +type ComponentStatusList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []ComponentStatus `json:"items"` +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +type SecurityContext struct { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + Capabilities *Capabilities `json:"capabilities,omitempty"` + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + Privileged *bool `json:"privileged,omitempty"` + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsUser *int64 `json:"runAsUser,omitempty"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"` + // The read-only root filesystem allows you to restrict the locations that an application can write + // files to, ensuring the persistent data can only be written to mounts. + ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty"` +} + +// SELinuxOptions are the labels to be applied to the container. +type SELinuxOptions struct { + // SELinux user label + User string `json:"user,omitempty"` + // SELinux role label + Role string `json:"role,omitempty"` + // SELinux type label + Type string `json:"type,omitempty"` + // SELinux level label. + Level string `json:"level,omitempty"` +} + +// RangeAllocation is an opaque API object (not exposed to end users) that can be persisted to record +// the global allocation state of the cluster. The schema of Range and Data generic, in that Range +// should be a string representation of the inputs to a range (for instance, for IP allocation it +// might be a CIDR) and Data is an opaque blob understood by an allocator which is typically a +// binary range. Consumers should use annotations to record additional information (schema version, +// data encoding hints). A range allocation should *ALWAYS* be recreatable at any time by observation +// of the cluster, thus the object is less strongly typed than most. +type RangeAllocation struct { + unversioned.TypeMeta `json:",inline"` + ObjectMeta `json:"metadata,omitempty"` + // A string representing a unique label for a range of resources, such as a CIDR "10.0.0.0/8" or + // port range "10000-30000". Range is not strongly schema'd here. The Range is expected to define + // a start and end unless there is an implicit end. + Range string `json:"range"` + // A byte array representing the serialized state of a range allocation. Additional clarifiers on + // the type or format of data should be represented with annotations. For IP allocations, this is + // represented as a bit array starting at the base IP of the CIDR in Range, with each bit representing + // a single allocated address (the fifth bit on CIDR 10.0.0.0/8 is 10.0.0.4). + Data []byte `json:"data"` +} + +const ( + // "default-scheduler" is the name of default scheduler. + DefaultSchedulerName = "default-scheduler" + + // RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule + // corresponding to every RequiredDuringScheduling affinity rule. + // When the --hard-pod-affinity-weight scheduler flag is not specified, + // DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule. + DefaultHardPodAffinitySymmetricWeight int = 1 + + // When the --failure-domains scheduler flag is not specified, + // DefaultFailureDomains defines the set of label keys used when TopologyKey is empty in PreferredDuringScheduling anti-affinity. + DefaultFailureDomains string = unversioned.LabelHostname + "," + unversioned.LabelZoneFailureDomain + "," + unversioned.LabelZoneRegion +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/doc.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/doc.go new file mode 100644 index 0000000000..02566d2a5b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:openapi-gen=true + +package unversioned diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/duration.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/duration.go new file mode 100644 index 0000000000..ed54e515da --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/duration.go @@ -0,0 +1,47 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +import ( + "encoding/json" + "time" +) + +// Duration is a wrapper around time.Duration which supports correct +// marshaling to YAML and JSON. In particular, it marshals into strings, which +// can be used as map keys in json. +type Duration struct { + time.Duration `protobuf:"varint,1,opt,name=duration,casttype=time.Duration"` +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (d *Duration) UnmarshalJSON(b []byte) error { + var str string + json.Unmarshal(b, &str) + + pd, err := time.ParseDuration(str) + if err != nil { + return err + } + d.Duration = pd + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (d Duration) MarshalJSON() ([]byte, error) { + return json.Marshal(d.Duration.String()) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.pb.go new file mode 100644 index 0000000000..a119204bc1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.pb.go @@ -0,0 +1,4536 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/api/unversioned/generated.proto +// DO NOT EDIT! + +/* + Package unversioned is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/api/unversioned/generated.proto + + It has these top-level messages: + APIGroup + APIGroupList + APIResource + APIResourceList + APIVersions + Duration + ExportOptions + GroupKind + GroupResource + GroupVersion + GroupVersionForDiscovery + GroupVersionKind + GroupVersionResource + LabelSelector + LabelSelectorRequirement + ListMeta + RootPaths + ServerAddressByClientCIDR + Status + StatusCause + StatusDetails + Time + Timestamp + TypeMeta +*/ +package unversioned + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import time "time" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *APIGroup) Reset() { *m = APIGroup{} } +func (*APIGroup) ProtoMessage() {} +func (*APIGroup) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *APIGroupList) Reset() { *m = APIGroupList{} } +func (*APIGroupList) ProtoMessage() {} +func (*APIGroupList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *APIResource) Reset() { *m = APIResource{} } +func (*APIResource) ProtoMessage() {} +func (*APIResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *APIResourceList) Reset() { *m = APIResourceList{} } +func (*APIResourceList) ProtoMessage() {} +func (*APIResourceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *APIVersions) Reset() { *m = APIVersions{} } +func (*APIVersions) ProtoMessage() {} +func (*APIVersions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *Duration) Reset() { *m = Duration{} } +func (*Duration) ProtoMessage() {} +func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *ExportOptions) Reset() { *m = ExportOptions{} } +func (*ExportOptions) ProtoMessage() {} +func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *GroupKind) Reset() { *m = GroupKind{} } +func (*GroupKind) ProtoMessage() {} +func (*GroupKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *GroupResource) Reset() { *m = GroupResource{} } +func (*GroupResource) ProtoMessage() {} +func (*GroupResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *GroupVersion) Reset() { *m = GroupVersion{} } +func (*GroupVersion) ProtoMessage() {} +func (*GroupVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *GroupVersionForDiscovery) Reset() { *m = GroupVersionForDiscovery{} } +func (*GroupVersionForDiscovery) ProtoMessage() {} +func (*GroupVersionForDiscovery) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{10} +} + +func (m *GroupVersionKind) Reset() { *m = GroupVersionKind{} } +func (*GroupVersionKind) ProtoMessage() {} +func (*GroupVersionKind) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *GroupVersionResource) Reset() { *m = GroupVersionResource{} } +func (*GroupVersionResource) ProtoMessage() {} +func (*GroupVersionResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *LabelSelector) Reset() { *m = LabelSelector{} } +func (*LabelSelector) ProtoMessage() {} +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{14} +} + +func (m *ListMeta) Reset() { *m = ListMeta{} } +func (*ListMeta) ProtoMessage() {} +func (*ListMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *RootPaths) Reset() { *m = RootPaths{} } +func (*RootPaths) ProtoMessage() {} +func (*RootPaths) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} } +func (*ServerAddressByClientCIDR) ProtoMessage() {} +func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{17} +} + +func (m *Status) Reset() { *m = Status{} } +func (*Status) ProtoMessage() {} +func (*Status) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *StatusCause) Reset() { *m = StatusCause{} } +func (*StatusCause) ProtoMessage() {} +func (*StatusCause) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *StatusDetails) Reset() { *m = StatusDetails{} } +func (*StatusDetails) ProtoMessage() {} +func (*StatusDetails) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *Time) Reset() { *m = Time{} } +func (*Time) ProtoMessage() {} +func (*Time) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *Timestamp) Reset() { *m = Timestamp{} } +func (*Timestamp) ProtoMessage() {} +func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{22} } + +func (m *TypeMeta) Reset() { *m = TypeMeta{} } +func (*TypeMeta) ProtoMessage() {} +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func init() { + proto.RegisterType((*APIGroup)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.APIGroup") + proto.RegisterType((*APIGroupList)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.APIGroupList") + proto.RegisterType((*APIResource)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.APIResource") + proto.RegisterType((*APIResourceList)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.APIResourceList") + proto.RegisterType((*APIVersions)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.APIVersions") + proto.RegisterType((*Duration)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.Duration") + proto.RegisterType((*ExportOptions)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.ExportOptions") + proto.RegisterType((*GroupKind)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupKind") + proto.RegisterType((*GroupResource)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupResource") + proto.RegisterType((*GroupVersion)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupVersion") + proto.RegisterType((*GroupVersionForDiscovery)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupVersionForDiscovery") + proto.RegisterType((*GroupVersionKind)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupVersionKind") + proto.RegisterType((*GroupVersionResource)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.GroupVersionResource") + proto.RegisterType((*LabelSelector)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.LabelSelector") + proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.LabelSelectorRequirement") + proto.RegisterType((*ListMeta)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.ListMeta") + proto.RegisterType((*RootPaths)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.RootPaths") + proto.RegisterType((*ServerAddressByClientCIDR)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.ServerAddressByClientCIDR") + proto.RegisterType((*Status)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.Status") + proto.RegisterType((*StatusCause)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.StatusCause") + proto.RegisterType((*StatusDetails)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.StatusDetails") + proto.RegisterType((*Time)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.Time") + proto.RegisterType((*Timestamp)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.Timestamp") + proto.RegisterType((*TypeMeta)(nil), "k8s.io.client-go.1.5.pkg.api.unversioned.TypeMeta") +} +func (m *APIGroup) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIGroup) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + if len(m.Versions) > 0 { + for _, msg := range m.Versions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.PreferredVersion.Size())) + n1, err := m.PreferredVersion.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, msg := range m.ServerAddressByClientCIDRs { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIGroupList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIGroupList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Groups) > 0 { + for _, msg := range m.Groups { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIResource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIResource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x10 + i++ + if m.Namespaced { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + return i, nil +} + +func (m *APIResourceList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIResourceList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.GroupVersion))) + i += copy(data[i:], m.GroupVersion) + if len(m.APIResources) > 0 { + for _, msg := range m.APIResources { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *APIVersions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIVersions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Versions) > 0 { + for _, s := range m.Versions { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, msg := range m.ServerAddressByClientCIDRs { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Duration) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Duration) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Duration)) + return i, nil +} + +func (m *ExportOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ExportOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Export { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + if m.Exact { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *GroupKind) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupKind) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + return i, nil +} + +func (m *GroupResource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupResource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Resource))) + i += copy(data[i:], m.Resource) + return i, nil +} + +func (m *GroupVersion) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupVersion) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + return i, nil +} + +func (m *GroupVersionForDiscovery) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupVersionForDiscovery) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.GroupVersion))) + i += copy(data[i:], m.GroupVersion) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + return i, nil +} + +func (m *GroupVersionKind) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupVersionKind) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + return i, nil +} + +func (m *GroupVersionResource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GroupVersionResource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Resource))) + i += copy(data[i:], m.Resource) + return i, nil +} + +func (m *LabelSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k := range m.MatchLabels { + data[i] = 0xa + i++ + v := m.MatchLabels[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LabelSelectorRequirement) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelectorRequirement) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ListMeta) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListMeta) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SelfLink))) + i += copy(data[i:], m.SelfLink) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ResourceVersion))) + i += copy(data[i:], m.ResourceVersion) + return i, nil +} + +func (m *RootPaths) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RootPaths) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Paths) > 0 { + for _, s := range m.Paths { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ServerAddressByClientCIDR) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServerAddressByClientCIDR) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ClientCIDR))) + i += copy(data[i:], m.ClientCIDR) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ServerAddress))) + i += copy(data[i:], m.ServerAddress) + return i, nil +} + +func (m *Status) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Status) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n2, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + if m.Details != nil { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Details.Size())) + n3, err := m.Details.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + } + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Code)) + return i, nil +} + +func (m *StatusCause) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *StatusCause) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Field))) + i += copy(data[i:], m.Field) + return i, nil +} + +func (m *StatusDetails) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *StatusDetails) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + if len(m.Causes) > 0 { + for _, msg := range m.Causes { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.RetryAfterSeconds)) + return i, nil +} + +func (m *Timestamp) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Timestamp) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Seconds)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Nanos)) + return i, nil +} + +func (m *TypeMeta) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TypeMeta) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *APIGroup) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Versions) > 0 { + for _, e := range m.Versions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.PreferredVersion.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, e := range m.ServerAddressByClientCIDRs { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIGroupList) Size() (n int) { + var l int + _ = l + if len(m.Groups) > 0 { + for _, e := range m.Groups { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIResource) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *APIResourceList) Size() (n int) { + var l int + _ = l + l = len(m.GroupVersion) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.APIResources) > 0 { + for _, e := range m.APIResources { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *APIVersions) Size() (n int) { + var l int + _ = l + if len(m.Versions) > 0 { + for _, s := range m.Versions { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ServerAddressByClientCIDRs) > 0 { + for _, e := range m.ServerAddressByClientCIDRs { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Duration) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Duration)) + return n +} + +func (m *ExportOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + return n +} + +func (m *GroupKind) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupResource) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersion) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionForDiscovery) Size() (n int) { + var l int + _ = l + l = len(m.GroupVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionKind) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GroupVersionResource) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LabelSelector) Size() (n int) { + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k, v := range m.MatchLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LabelSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ListMeta) Size() (n int) { + var l int + _ = l + l = len(m.SelfLink) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RootPaths) Size() (n int) { + var l int + _ = l + if len(m.Paths) > 0 { + for _, s := range m.Paths { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServerAddressByClientCIDR) Size() (n int) { + var l int + _ = l + l = len(m.ClientCIDR) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ServerAddress) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Status) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + if m.Details != nil { + l = m.Details.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Code)) + return n +} + +func (m *StatusCause) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Field) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *StatusDetails) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Causes) > 0 { + for _, e := range m.Causes { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.RetryAfterSeconds)) + return n +} + +func (m *Timestamp) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Seconds)) + n += 1 + sovGenerated(uint64(m.Nanos)) + return n +} + +func (m *TypeMeta) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *APIGroup) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIGroup{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Versions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Versions), "GroupVersionForDiscovery", "GroupVersionForDiscovery", 1), `&`, ``, 1) + `,`, + `PreferredVersion:` + strings.Replace(strings.Replace(this.PreferredVersion.String(), "GroupVersionForDiscovery", "GroupVersionForDiscovery", 1), `&`, ``, 1) + `,`, + `ServerAddressByClientCIDRs:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServerAddressByClientCIDRs), "ServerAddressByClientCIDR", "ServerAddressByClientCIDR", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *APIGroupList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIGroupList{`, + `Groups:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Groups), "APIGroup", "APIGroup", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *APIResource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIResource{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespaced:` + fmt.Sprintf("%v", this.Namespaced) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `}`, + }, "") + return s +} +func (this *APIResourceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIResourceList{`, + `GroupVersion:` + fmt.Sprintf("%v", this.GroupVersion) + `,`, + `APIResources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.APIResources), "APIResource", "APIResource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Duration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Duration{`, + `Duration:` + fmt.Sprintf("%v", this.Duration) + `,`, + `}`, + }, "") + return s +} +func (this *ExportOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExportOptions{`, + `Export:` + fmt.Sprintf("%v", this.Export) + `,`, + `Exact:` + fmt.Sprintf("%v", this.Exact) + `,`, + `}`, + }, "") + return s +} +func (this *GroupVersionForDiscovery) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GroupVersionForDiscovery{`, + `GroupVersion:` + fmt.Sprintf("%v", this.GroupVersion) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelector) String() string { + if this == nil { + return "nil" + } + keysForMatchLabels := make([]string, 0, len(this.MatchLabels)) + for k := range this.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + mapStringForMatchLabels := "map[string]string{" + for _, k := range keysForMatchLabels { + mapStringForMatchLabels += fmt.Sprintf("%v: %v,", k, this.MatchLabels[k]) + } + mapStringForMatchLabels += "}" + s := strings.Join([]string{`&LabelSelector{`, + `MatchLabels:` + mapStringForMatchLabels + `,`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "LabelSelectorRequirement", "LabelSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LabelSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *ListMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListMeta{`, + `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `}`, + }, "") + return s +} +func (this *RootPaths) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RootPaths{`, + `Paths:` + fmt.Sprintf("%v", this.Paths) + `,`, + `}`, + }, "") + return s +} +func (this *ServerAddressByClientCIDR) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServerAddressByClientCIDR{`, + `ClientCIDR:` + fmt.Sprintf("%v", this.ClientCIDR) + `,`, + `ServerAddress:` + fmt.Sprintf("%v", this.ServerAddress) + `,`, + `}`, + }, "") + return s +} +func (this *Status) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Status{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "ListMeta", 1), `&`, ``, 1) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Details:` + strings.Replace(fmt.Sprintf("%v", this.Details), "StatusDetails", "StatusDetails", 1) + `,`, + `Code:` + fmt.Sprintf("%v", this.Code) + `,`, + `}`, + }, "") + return s +} +func (this *StatusCause) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatusCause{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Field:` + fmt.Sprintf("%v", this.Field) + `,`, + `}`, + }, "") + return s +} +func (this *StatusDetails) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StatusDetails{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Causes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Causes), "StatusCause", "StatusCause", 1), `&`, ``, 1) + `,`, + `RetryAfterSeconds:` + fmt.Sprintf("%v", this.RetryAfterSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *Timestamp) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Timestamp{`, + `Seconds:` + fmt.Sprintf("%v", this.Seconds) + `,`, + `Nanos:` + fmt.Sprintf("%v", this.Nanos) + `,`, + `}`, + }, "") + return s +} +func (this *TypeMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TypeMeta{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *APIGroup) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIGroup: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIGroup: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, GroupVersionForDiscovery{}) + if err := m.Versions[len(m.Versions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredVersion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PreferredVersion.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddressByClientCIDRs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, ServerAddressByClientCIDR{}) + if err := m.ServerAddressByClientCIDRs[len(m.ServerAddressByClientCIDRs)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIGroupList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIGroupList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIGroupList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, APIGroup{}) + if err := m.Groups[len(m.Groups)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIResource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaced", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Namespaced = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIResourceList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIResourceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIResourceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GroupVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GroupVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIResources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIResources = append(m.APIResources, APIResource{}) + if err := m.APIResources[len(m.APIResources)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *APIVersions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIVersions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIVersions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddressByClientCIDRs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddressByClientCIDRs = append(m.ServerAddressByClientCIDRs, ServerAddressByClientCIDR{}) + if err := m.ServerAddressByClientCIDRs[len(m.ServerAddressByClientCIDRs)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Duration) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Duration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Duration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType) + } + m.Duration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Duration |= (time.Duration(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExportOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExportOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExportOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Export", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Export = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Exact = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupKind) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupKind: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupKind: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupResource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersion) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionForDiscovery) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionForDiscovery: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionForDiscovery: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GroupVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GroupVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionKind) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionKind: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionKind: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GroupVersionResource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GroupVersionResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GroupVersionResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.MatchLabels == nil { + m.MatchLabels = make(map[string]string) + } + m.MatchLabels[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, LabelSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelectorRequirement) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = LabelSelectorOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListMeta) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SelfLink", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SelfLink = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RootPaths) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RootPaths: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RootPaths: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Paths = append(m.Paths, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServerAddressByClientCIDR) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServerAddressByClientCIDR: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClientCIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClientCIDR = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServerAddress = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Status) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Status: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Status: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = StatusReason(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Details == nil { + m.Details = &StatusDetails{} + } + if err := m.Details.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Code |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatusCause) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatusCause: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatusCause: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = CauseType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Field", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Field = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StatusDetails) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StatusDetails: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StatusDetails: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Causes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Causes = append(m.Causes, StatusCause{}) + if err := m.Causes[len(m.Causes)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RetryAfterSeconds", wireType) + } + m.RetryAfterSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.RetryAfterSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Timestamp) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Timestamp: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Timestamp: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Seconds", wireType) + } + m.Seconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Seconds |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Nanos", wireType) + } + m.Nanos = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Nanos |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TypeMeta) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TypeMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TypeMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 1376 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x45, + 0x14, 0xf7, 0x47, 0xec, 0xae, 0x9f, 0x63, 0x92, 0x0e, 0xa9, 0x70, 0x2d, 0x11, 0x87, 0x45, 0xa0, + 0x54, 0x6a, 0x6d, 0x35, 0x02, 0x54, 0x15, 0xf1, 0x11, 0x27, 0x69, 0x15, 0x35, 0x49, 0xa3, 0x49, + 0x15, 0xa4, 0x16, 0x24, 0x36, 0xde, 0xb1, 0xb3, 0xb2, 0xbd, 0xbb, 0xec, 0xec, 0x56, 0x8d, 0x40, + 0xa2, 0x17, 0x24, 0x0e, 0x08, 0xe5, 0xc8, 0x05, 0xd4, 0x4a, 0xfc, 0x07, 0xfc, 0x13, 0x11, 0xa7, + 0x5e, 0x90, 0x38, 0xa0, 0x08, 0xca, 0x85, 0x2b, 0x57, 0x4e, 0xcc, 0xcc, 0xce, 0xec, 0x87, 0x53, + 0x93, 0x0d, 0xf4, 0xc0, 0x61, 0x15, 0xcf, 0xfb, 0x9e, 0xf7, 0x7e, 0xf3, 0xde, 0x0b, 0xbc, 0x39, + 0xb8, 0x46, 0x5b, 0x96, 0xd3, 0x1e, 0x04, 0x7b, 0xc4, 0xb3, 0x89, 0x4f, 0x68, 0xdb, 0x1d, 0xf4, + 0xdb, 0x86, 0x6b, 0xb5, 0x03, 0xfb, 0x3e, 0xf1, 0xa8, 0xe5, 0xd8, 0xc4, 0x6c, 0xf7, 0x89, 0x4d, + 0x3c, 0xc3, 0x27, 0x66, 0xcb, 0xf5, 0x1c, 0xdf, 0x41, 0xaf, 0x85, 0x6a, 0xad, 0x58, 0xad, 0xc5, + 0xd4, 0x5a, 0x4c, 0xad, 0x95, 0x50, 0x6b, 0x5c, 0xe9, 0x5b, 0xfe, 0x7e, 0xb0, 0xd7, 0xea, 0x3a, + 0xa3, 0x76, 0xdf, 0xe9, 0x3b, 0x6d, 0xa1, 0xbd, 0x17, 0xf4, 0xc4, 0x49, 0x1c, 0xc4, 0xaf, 0xd0, + 0x6a, 0xe3, 0xca, 0xb3, 0x83, 0xf1, 0x02, 0xdb, 0xb7, 0x46, 0x64, 0x3c, 0x88, 0xc6, 0xd5, 0x67, + 0x8b, 0x07, 0xbe, 0x35, 0x6c, 0x5b, 0xb6, 0x4f, 0x7d, 0x6f, 0x5c, 0x45, 0xff, 0xb1, 0x08, 0xda, + 0xf2, 0xf6, 0xfa, 0x4d, 0xcf, 0x09, 0x5c, 0xb4, 0x00, 0x53, 0xb6, 0x31, 0x22, 0xf5, 0xfc, 0x42, + 0x7e, 0xb1, 0xd2, 0x99, 0x3e, 0x3a, 0x6e, 0xe6, 0x9e, 0x1e, 0x37, 0xa7, 0xb6, 0x18, 0x0d, 0x0b, + 0x0e, 0x1a, 0x81, 0x26, 0x2f, 0x43, 0xeb, 0x85, 0x85, 0xe2, 0x62, 0x75, 0xe9, 0xbd, 0x56, 0xa6, + 0x9b, 0xb7, 0x84, 0x87, 0xdd, 0xf0, 0x78, 0xc3, 0xf1, 0x56, 0x2d, 0xda, 0x75, 0x18, 0xf7, 0xa0, + 0x33, 0x2b, 0xdd, 0x68, 0x92, 0x49, 0x71, 0xe4, 0x02, 0x7d, 0x91, 0x87, 0x59, 0xd7, 0x23, 0x3d, + 0xe2, 0x79, 0xc4, 0x94, 0xfc, 0x7a, 0x91, 0x45, 0xf7, 0x1c, 0xfc, 0xd6, 0xa5, 0xdf, 0xd9, 0xed, + 0x31, 0x07, 0xf8, 0x84, 0x4b, 0xf4, 0x7d, 0x1e, 0x1a, 0x94, 0x78, 0x4c, 0x6f, 0xd9, 0x34, 0x3d, + 0x42, 0x69, 0xe7, 0x60, 0x65, 0x68, 0x11, 0xdb, 0x5f, 0x59, 0x5f, 0xc5, 0xb4, 0x3e, 0x25, 0x32, + 0xf1, 0x7e, 0xc6, 0x88, 0x76, 0x26, 0x19, 0xea, 0xe8, 0x32, 0xa4, 0xc6, 0x44, 0x11, 0x8a, 0xff, + 0x21, 0x0e, 0xbd, 0x0f, 0xd3, 0xaa, 0x96, 0x1b, 0x16, 0xf5, 0xd1, 0x07, 0x50, 0xee, 0xf3, 0x03, + 0x65, 0x15, 0xe5, 0x11, 0xb6, 0x33, 0x46, 0xa8, 0x8c, 0x74, 0x5e, 0x90, 0x01, 0x95, 0xc5, 0x91, + 0x62, 0x69, 0x4e, 0x67, 0x75, 0xa9, 0x32, 0x21, 0x4c, 0xa8, 0x13, 0x78, 0x5d, 0x92, 0x01, 0x38, + 0x4b, 0x00, 0xfc, 0x2f, 0x75, 0x8d, 0x2e, 0x31, 0x19, 0x74, 0xf2, 0x8b, 0x5a, 0x07, 0x49, 0x39, + 0xd8, 0x8a, 0x38, 0x38, 0x21, 0xc5, 0xad, 0x0e, 0x2c, 0xdb, 0x14, 0x05, 0x4f, 0x58, 0xbd, 0xc5, + 0x68, 0x58, 0x70, 0xf4, 0x1f, 0xf2, 0x30, 0x93, 0x88, 0x43, 0x5c, 0xfa, 0x1a, 0x4c, 0xf7, 0x13, + 0x35, 0x97, 0x31, 0xcd, 0x49, 0xed, 0xe9, 0x24, 0x1e, 0x70, 0x4a, 0x12, 0xf5, 0xa0, 0xe2, 0x49, + 0x4b, 0x0a, 0xdd, 0x4b, 0xd9, 0x33, 0xa6, 0x82, 0x88, 0x5d, 0x25, 0x88, 0x14, 0xc7, 0xa6, 0xf5, + 0x3f, 0xc2, 0xec, 0x29, 0xbc, 0xa3, 0xc5, 0xc4, 0xa3, 0xe2, 0x85, 0x62, 0x77, 0x9d, 0xf0, 0x1e, + 0x4e, 0xc1, 0x61, 0xe1, 0xff, 0x81, 0xc3, 0xeb, 0xda, 0x37, 0x8f, 0x9a, 0xb9, 0x87, 0xbf, 0x2c, + 0xe4, 0xf4, 0x75, 0xd0, 0x56, 0x03, 0xd6, 0x6f, 0x78, 0x7a, 0xdf, 0x01, 0xcd, 0x94, 0xbf, 0x45, + 0x51, 0x8a, 0x9d, 0x57, 0xd4, 0xd3, 0x57, 0x32, 0x7f, 0x1d, 0x37, 0x6b, 0xbc, 0xb3, 0xb5, 0x14, + 0x01, 0x47, 0x2a, 0xfa, 0x87, 0x50, 0x5b, 0x7b, 0xe0, 0x3a, 0x9e, 0x7f, 0xdb, 0xf5, 0x45, 0x32, + 0x5e, 0x87, 0x32, 0x11, 0x04, 0x61, 0x4d, 0x8b, 0xc1, 0x1a, 0x8a, 0x61, 0xc9, 0x45, 0xaf, 0x42, + 0x89, 0x3c, 0x30, 0xba, 0xbe, 0x44, 0x5d, 0x4d, 0x8a, 0x95, 0xd6, 0x38, 0x11, 0x87, 0x3c, 0x66, + 0xbd, 0x22, 0x90, 0xc1, 0xc1, 0xc5, 0x35, 0x04, 0x30, 0x24, 0x76, 0x22, 0x0d, 0x21, 0x81, 0x43, + 0x5e, 0x84, 0xce, 0xc2, 0x24, 0x74, 0x26, 0xd2, 0x30, 0x84, 0x5a, 0xa8, 0xab, 0x1e, 0x4c, 0x26, + 0x0f, 0x97, 0x41, 0x53, 0xa0, 0x91, 0x5e, 0xa2, 0x5e, 0xa9, 0x0c, 0xe1, 0x48, 0x22, 0xe1, 0x6d, + 0x1f, 0x52, 0x28, 0xcf, 0xe6, 0xec, 0x12, 0x9c, 0x93, 0xd0, 0x90, 0xbe, 0x66, 0xa4, 0xd8, 0x39, + 0xf5, 0x58, 0x14, 0x3f, 0xe1, 0xe9, 0x73, 0xa8, 0x4f, 0xea, 0xaf, 0xff, 0xe1, 0x1d, 0x66, 0x0f, + 0x45, 0xff, 0x9a, 0x0d, 0x88, 0xa4, 0xa5, 0xec, 0xe5, 0xcb, 0xee, 0xe4, 0xf4, 0x3e, 0x94, 0xc8, + 0xc8, 0x77, 0x79, 0x98, 0x4b, 0x5d, 0xed, 0x4c, 0x15, 0x3f, 0x43, 0x50, 0x49, 0x70, 0x14, 0xcf, + 0x00, 0x8e, 0x9f, 0x0a, 0x50, 0xdb, 0x30, 0xf6, 0xc8, 0x70, 0x87, 0x0c, 0x49, 0xd7, 0x77, 0x3c, + 0xf4, 0x19, 0x54, 0x47, 0x86, 0xdf, 0xdd, 0x17, 0x54, 0x35, 0x2a, 0xd6, 0x32, 0x36, 0x91, 0x94, + 0xa9, 0xd6, 0x66, 0x6c, 0x67, 0xcd, 0xf6, 0xd9, 0x90, 0x7d, 0x51, 0xc6, 0x54, 0x4d, 0x70, 0x70, + 0xd2, 0x9d, 0x18, 0xf1, 0xe2, 0xcc, 0x5e, 0x2d, 0xef, 0x24, 0xff, 0x62, 0xb5, 0x48, 0xc5, 0x80, + 0xc9, 0x27, 0x81, 0xe5, 0x91, 0x11, 0x6b, 0x46, 0xf1, 0x88, 0xdf, 0x1c, 0x73, 0x80, 0x4f, 0xb8, + 0x6c, 0xbc, 0x0b, 0xb3, 0xe3, 0xd1, 0xa3, 0x59, 0x28, 0x0e, 0xc8, 0x41, 0x58, 0x31, 0xcc, 0x7f, + 0xa2, 0x39, 0x28, 0xdd, 0x37, 0x86, 0x81, 0x7c, 0x8f, 0x38, 0x3c, 0x5c, 0x2f, 0x5c, 0xcb, 0xeb, + 0xac, 0x35, 0xd7, 0x27, 0x05, 0x82, 0x5e, 0x4e, 0x18, 0xea, 0x54, 0x65, 0x54, 0xc5, 0x5b, 0xe4, + 0x20, 0xb4, 0xba, 0x06, 0x9a, 0xe3, 0xf2, 0xb5, 0xcc, 0xf1, 0x64, 0xdd, 0x2f, 0xa9, 0x5a, 0xde, + 0x96, 0x74, 0xd6, 0x19, 0x2f, 0xa4, 0xcc, 0x2b, 0x06, 0x8e, 0x54, 0x91, 0x0e, 0x65, 0x11, 0x0f, + 0x65, 0x80, 0xe0, 0x53, 0x04, 0x78, 0x33, 0xdc, 0x15, 0x14, 0x2c, 0x39, 0xfa, 0xa7, 0xa0, 0xf1, + 0x29, 0xb9, 0x49, 0x7c, 0x83, 0x43, 0x88, 0x92, 0x61, 0x6f, 0xc3, 0xb2, 0x07, 0x32, 0xb4, 0x08, + 0x42, 0x3b, 0x92, 0x8e, 0x23, 0x09, 0xb4, 0x0c, 0x33, 0x0a, 0x4e, 0xbb, 0x29, 0x8c, 0xbe, 0x24, + 0x95, 0x66, 0x70, 0x9a, 0x8d, 0xc7, 0xe5, 0xf5, 0xcb, 0x50, 0xc1, 0x8e, 0xe3, 0x6f, 0x1b, 0xfe, + 0x3e, 0x45, 0x4d, 0x28, 0xb9, 0xfc, 0x87, 0x1c, 0x79, 0x15, 0xfe, 0x18, 0x04, 0x07, 0x87, 0x74, + 0xfd, 0xab, 0x3c, 0x5c, 0x9c, 0x38, 0x80, 0xf8, 0x42, 0xd1, 0x8d, 0x4e, 0x32, 0xfc, 0x68, 0xa1, + 0x88, 0xe5, 0x70, 0x42, 0x0a, 0xbd, 0x0d, 0xb5, 0xd4, 0xd4, 0x92, 0x17, 0xb8, 0x20, 0xd5, 0x6a, + 0x29, 0x6f, 0x38, 0x2d, 0xab, 0xff, 0x59, 0x80, 0xf2, 0x8e, 0x6f, 0xf8, 0x01, 0x45, 0x1f, 0x81, + 0x36, 0x62, 0x09, 0x34, 0x0d, 0xdf, 0x10, 0x9e, 0xb3, 0x6f, 0x56, 0x2a, 0xf7, 0x71, 0xa6, 0x15, + 0x05, 0x47, 0x26, 0xf9, 0x60, 0xa3, 0xc2, 0x91, 0x8c, 0x2f, 0x1a, 0x6c, 0xa1, 0x7b, 0x2c, 0xb9, + 0xbc, 0x5b, 0xb0, 0x5d, 0x89, 0x1a, 0x7d, 0xd5, 0x01, 0xa2, 0x6e, 0xb1, 0x19, 0x92, 0xb1, 0xe2, + 0xa3, 0xb7, 0xa0, 0xec, 0x11, 0x83, 0xb2, 0x9a, 0x4d, 0x09, 0xc9, 0x79, 0x65, 0x12, 0x0b, 0x2a, + 0x43, 0xd7, 0xb4, 0x34, 0x2e, 0xce, 0x58, 0x4a, 0xa3, 0x7b, 0x70, 0xce, 0x64, 0x61, 0x59, 0xac, + 0x2f, 0x94, 0xc4, 0x45, 0xdf, 0xc8, 0xba, 0x5c, 0x08, 0x6b, 0xab, 0xa1, 0x6e, 0xa7, 0xca, 0x83, + 0x92, 0x07, 0xac, 0x2c, 0xf2, 0xbe, 0xda, 0x75, 0x4c, 0x52, 0x2f, 0x33, 0xcb, 0xa5, 0xb8, 0xaf, + 0xae, 0x30, 0x1a, 0x16, 0x1c, 0xfd, 0x90, 0x6d, 0x4a, 0xa1, 0xa5, 0x15, 0x23, 0xa0, 0x04, 0x5d, + 0x8d, 0xae, 0x11, 0x16, 0xfc, 0xa2, 0xd2, 0xb9, 0x73, 0xe0, 0x12, 0x76, 0x89, 0x8a, 0x10, 0xe3, + 0x87, 0xe8, 0x06, 0x89, 0x24, 0x15, 0x4e, 0x49, 0x12, 0x6b, 0xd1, 0x3d, 0x8b, 0x0c, 0x55, 0xa3, + 0x8f, 0x5a, 0xf4, 0x0d, 0x4e, 0xc4, 0x21, 0x4f, 0xff, 0x96, 0xf5, 0xcf, 0xd4, 0xe5, 0x32, 0x2c, + 0xbf, 0x51, 0xef, 0x2f, 0x64, 0xd8, 0x27, 0x26, 0x4e, 0x19, 0x74, 0x17, 0xca, 0x5d, 0x7e, 0x3f, + 0xf5, 0x0f, 0xc7, 0xd2, 0x99, 0x6a, 0x21, 0x52, 0x13, 0x63, 0x49, 0x1c, 0x19, 0x96, 0x42, 0x8b, + 0xe8, 0x26, 0x9c, 0xf7, 0x08, 0xeb, 0x79, 0xcb, 0x3d, 0x9f, 0x78, 0x3b, 0xa4, 0xeb, 0xd8, 0x66, + 0x58, 0xf2, 0x52, 0x94, 0xe4, 0xf3, 0x78, 0x5c, 0x00, 0x9f, 0xd4, 0x61, 0xab, 0xce, 0xd4, 0x1d, + 0xb6, 0xc1, 0xf1, 0xbc, 0x53, 0x69, 0x26, 0x5c, 0xf6, 0xa2, 0xbc, 0x2b, 0x65, 0xc5, 0xe7, 0xe9, + 0xb1, 0x0d, 0xdb, 0x09, 0xe1, 0x5e, 0x8a, 0xd3, 0xb3, 0xc5, 0x89, 0x38, 0xe4, 0x5d, 0x9f, 0xe3, + 0x13, 0xec, 0xcb, 0xc7, 0xcd, 0xdc, 0x21, 0xfb, 0x1e, 0x3d, 0x96, 0xd3, 0xec, 0x1e, 0x54, 0xb8, + 0x37, 0xf6, 0x20, 0x46, 0xee, 0xf3, 0x76, 0xa9, 0x7f, 0x0c, 0x1a, 0x87, 0x92, 0xe8, 0x95, 0xaa, + 0x3a, 0xf9, 0x89, 0xd5, 0x61, 0x0d, 0x89, 0x25, 0x3e, 0xdd, 0x1a, 0xa3, 0x86, 0x14, 0xaf, 0xfb, + 0x38, 0x21, 0xd5, 0xb9, 0x72, 0xf4, 0xdb, 0x7c, 0xee, 0x09, 0xfb, 0x7e, 0x66, 0xdf, 0xc3, 0xa7, + 0xf3, 0xf9, 0x23, 0xf6, 0x3d, 0x61, 0xdf, 0xaf, 0xec, 0x3b, 0xfc, 0x7d, 0x3e, 0x77, 0xb7, 0x9a, + 0x28, 0xe4, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x22, 0x00, 0xde, 0x9c, 0x10, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.proto new file mode 100644 index 0000000000..cab7058aac --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/generated.proto @@ -0,0 +1,378 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.api.unversioned; + +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "unversioned"; + +// APIGroup contains the name, the supported versions, and the preferred version +// of a group. +message APIGroup { + // name is the name of the group. + optional string name = 1; + + // versions are the versions supported in this group. + repeated GroupVersionForDiscovery versions = 2; + + // preferredVersion is the version preferred by the API server, which + // probably is the storage version. + optional GroupVersionForDiscovery preferredVersion = 3; + + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 4; +} + +// APIGroupList is a list of APIGroup, to allow clients to discover the API at +// /apis. +message APIGroupList { + // groups is a list of APIGroup. + repeated APIGroup groups = 1; +} + +// APIResource specifies the name of a resource and whether it is namespaced. +message APIResource { + // name is the name of the resource. + optional string name = 1; + + // namespaced indicates if a resource is namespaced or not. + optional bool namespaced = 2; + + // kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') + optional string kind = 3; +} + +// APIResourceList is a list of APIResource, it is used to expose the name of the +// resources supported in a specific group and version, and if the resource +// is namespaced. +message APIResourceList { + // groupVersion is the group and version this APIResourceList is for. + optional string groupVersion = 1; + + // resources contains the name of the resources and if they are namespaced. + repeated APIResource resources = 2; +} + +// APIVersions lists the versions that are available, to allow clients to +// discover the API at /api, which is the root path of the legacy v1 API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message APIVersions { + // versions are the api versions that are available. + repeated string versions = 1; + + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + repeated ServerAddressByClientCIDR serverAddressByClientCIDRs = 2; +} + +// Duration is a wrapper around time.Duration which supports correct +// marshaling to YAML and JSON. In particular, it marshals into strings, which +// can be used as map keys in json. +message Duration { + optional int64 duration = 1; +} + +// ExportOptions is the query options to the standard REST get call. +message ExportOptions { + // Should this value be exported. Export strips fields that a user can not specify.` + optional bool export = 1; + + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + optional bool exact = 2; +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupKind { + optional string group = 1; + + optional string kind = 2; +} + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupResource { + optional string group = 1; + + optional string resource = 2; +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersion { + optional string group = 1; + + optional string version = 2; +} + +// GroupVersion contains the "group/version" and "version" string of a version. +// It is made a struct to keep extensibility. +message GroupVersionForDiscovery { + // groupVersion specifies the API group and version in the form "group/version" + optional string groupVersion = 1; + + // version specifies the version in the form of "version". This is to save + // the clients the trouble of splitting the GroupVersion. + optional string version = 2; +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersionKind { + optional string group = 1; + + optional string version = 2; + + optional string kind = 3; +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message GroupVersionResource { + optional string group = 1; + + optional string version = 2; + + optional string resource = 3; +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + map<string, string> matchLabels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + repeated LabelSelectorRequirement matchExpressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + optional string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + optional string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + repeated string values = 3; +} + +// ListMeta describes metadata that synthetic resources must have, including lists and +// various status objects. A resource may have only one of {ObjectMeta, ListMeta}. +message ListMeta { + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + optional string selfLink = 1; + + // String that identifies the server's internal version of this object that + // can be used by clients to determine when objects have changed. + // Value must be treated as opaque by clients and passed unmodified back to the server. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + optional string resourceVersion = 2; +} + +// RootPaths lists the paths available at root. +// For example: "/healthz", "/apis". +message RootPaths { + // paths are the paths available at root. + repeated string paths = 1; +} + +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +message ServerAddressByClientCIDR { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + optional string clientCIDR = 1; + + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + optional string serverAddress = 2; +} + +// Status is a return value for calls that don't return other objects. +message Status { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional ListMeta metadata = 1; + + // Status of the operation. + // One of: "Success" or "Failure". + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional string status = 2; + + // A human-readable description of the status of this operation. + optional string message = 3; + + // A machine-readable description of why this operation is in the + // "Failure" status. If this value is empty there + // is no information available. A Reason clarifies an HTTP status + // code but does not override it. + optional string reason = 4; + + // Extended data associated with the reason. Each reason may define its + // own extended details. This field is optional and the data returned + // is not guaranteed to conform to any schema except that defined by + // the reason type. + optional StatusDetails details = 5; + + // Suggested HTTP return code for this status, 0 if not set. + optional int32 code = 6; +} + +// StatusCause provides more information about an api.Status failure, including +// cases when multiple errors are encountered. +message StatusCause { + // A machine-readable description of the cause of the error. If this value is + // empty there is no information available. + optional string reason = 1; + + // A human-readable description of the cause of the error. This field may be + // presented as-is to a reader. + optional string message = 2; + + // The field of the resource that has caused this error, as named by its JSON + // serialization. May include dot and postfix notation for nested attributes. + // Arrays are zero-indexed. Fields may appear more than once in an array of + // causes due to fields having multiple errors. + // Optional. + // + // Examples: + // "name" - the field "name" on the current resource + // "items[0].name" - the field "name" on the first array entry in "items" + optional string field = 3; +} + +// StatusDetails is a set of additional properties that MAY be set by the +// server to provide additional information about a response. The Reason +// field of a Status object defines what attributes will be set. Clients +// must ignore fields that do not match the defined type of each attribute, +// and should assume that any attribute may be empty, invalid, or under +// defined. +message StatusDetails { + // The name attribute of the resource associated with the status StatusReason + // (when there is a single name which can be described). + optional string name = 1; + + // The group attribute of the resource associated with the status StatusReason. + optional string group = 2; + + // The kind attribute of the resource associated with the status StatusReason. + // On some operations may differ from the requested resource Kind. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional string kind = 3; + + // The Causes array includes more details associated with the StatusReason + // failure. Not all StatusReasons may provide detailed causes. + repeated StatusCause causes = 4; + + // If specified, the time in seconds before the operation should be retried. + optional int32 retryAfterSeconds = 5; +} + +// Time is a wrapper around time.Time which supports correct +// marshaling to YAML and JSON. Wrappers are provided for many +// of the factory methods that the time package offers. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +message Time { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + optional int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + optional int32 nanos = 2; +} + +// Timestamp is a struct that is equivalent to Time, but intended for +// protobuf marshalling/unmarshalling. It is generated into a serialization +// that matches Time. Do not use in Go structs. +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + optional int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + optional int32 nanos = 2; +} + +// TypeMeta describes an individual object in an API response or request +// with strings representing the type of the object and its API schema version. +// Structures that are versioned or persisted should inline TypeMeta. +message TypeMeta { + // Kind is a string value representing the REST resource this object represents. + // Servers may infer this from the endpoint the client submits requests to. + // Cannot be updated. + // In CamelCase. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional string kind = 1; + + // APIVersion defines the versioned schema of this representation of an object. + // Servers should convert recognized schemas to the latest internal value, and + // may reject unrecognized values. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources + optional string apiVersion = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/group_version.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/group_version.go new file mode 100644 index 0000000000..dfbfe3a32a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/group_version.go @@ -0,0 +1,325 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +import ( + "encoding/json" + "fmt" + "strings" +) + +// ParseResourceArg takes the common style of string which may be either `resource.group.com` or `resource.version.group.com` +// and parses it out into both possibilities. This code takes no responsibility for knowing which representation was intended +// but with a knowledge of all GroupVersions, calling code can take a very good guess. If there are only two segments, then +// `*GroupVersionResource` is nil. +// `resource.group.com` -> `group=com, version=group, resource=resource` and `group=group.com, resource=resource` +func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) { + var gvr *GroupVersionResource + if strings.Count(arg, ".") >= 2 { + s := strings.SplitN(arg, ".", 3) + gvr = &GroupVersionResource{Group: s[2], Version: s[1], Resource: s[0]} + } + + return gvr, ParseGroupResource(arg) +} + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupResource struct { + Group string `protobuf:"bytes,1,opt,name=group"` + Resource string `protobuf:"bytes,2,opt,name=resource"` +} + +func (gr GroupResource) WithVersion(version string) GroupVersionResource { + return GroupVersionResource{Group: gr.Group, Version: version, Resource: gr.Resource} +} + +func (gr GroupResource) Empty() bool { + return len(gr.Group) == 0 && len(gr.Resource) == 0 +} + +func (gr *GroupResource) String() string { + if len(gr.Group) == 0 { + return gr.Resource + } + return gr.Resource + "." + gr.Group +} + +// ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed +// for each field. +func ParseGroupResource(gr string) GroupResource { + if i := strings.Index(gr, "."); i == -1 { + return GroupResource{Resource: gr} + } else { + return GroupResource{Group: gr[i+1:], Resource: gr[:i]} + } +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersionResource struct { + Group string `protobuf:"bytes,1,opt,name=group"` + Version string `protobuf:"bytes,2,opt,name=version"` + Resource string `protobuf:"bytes,3,opt,name=resource"` +} + +func (gvr GroupVersionResource) Empty() bool { + return len(gvr.Group) == 0 && len(gvr.Version) == 0 && len(gvr.Resource) == 0 +} + +func (gvr GroupVersionResource) GroupResource() GroupResource { + return GroupResource{Group: gvr.Group, Resource: gvr.Resource} +} + +func (gvr GroupVersionResource) GroupVersion() GroupVersion { + return GroupVersion{Group: gvr.Group, Version: gvr.Version} +} + +func (gvr *GroupVersionResource) String() string { + return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "") +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupKind struct { + Group string `protobuf:"bytes,1,opt,name=group"` + Kind string `protobuf:"bytes,2,opt,name=kind"` +} + +func (gk GroupKind) Empty() bool { + return len(gk.Group) == 0 && len(gk.Kind) == 0 +} + +func (gk GroupKind) WithVersion(version string) GroupVersionKind { + return GroupVersionKind{Group: gk.Group, Version: version, Kind: gk.Kind} +} + +func (gk *GroupKind) String() string { + if len(gk.Group) == 0 { + return gk.Kind + } + return gk.Kind + "." + gk.Group +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersionKind struct { + Group string `protobuf:"bytes,1,opt,name=group"` + Version string `protobuf:"bytes,2,opt,name=version"` + Kind string `protobuf:"bytes,3,opt,name=kind"` +} + +// Empty returns true if group, version, and kind are empty +func (gvk GroupVersionKind) Empty() bool { + return len(gvk.Group) == 0 && len(gvk.Version) == 0 && len(gvk.Kind) == 0 +} + +func (gvk GroupVersionKind) GroupKind() GroupKind { + return GroupKind{Group: gvk.Group, Kind: gvk.Kind} +} + +func (gvk GroupVersionKind) GroupVersion() GroupVersion { + return GroupVersion{Group: gvk.Group, Version: gvk.Version} +} + +func (gvk GroupVersionKind) String() string { + return gvk.Group + "/" + gvk.Version + ", Kind=" + gvk.Kind +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type GroupVersion struct { + Group string `protobuf:"bytes,1,opt,name=group"` + Version string `protobuf:"bytes,2,opt,name=version"` +} + +// Empty returns true if group and version are empty +func (gv GroupVersion) Empty() bool { + return len(gv.Group) == 0 && len(gv.Version) == 0 +} + +// String puts "group" and "version" into a single "group/version" string. For the legacy v1 +// it returns "v1". +func (gv GroupVersion) String() string { + // special case the internal apiVersion for the legacy kube types + if gv.Empty() { + return "" + } + + // special case of "v1" for backward compatibility + if len(gv.Group) == 0 && gv.Version == "v1" { + return gv.Version + } + if len(gv.Group) > 0 { + return gv.Group + "/" + gv.Version + } + return gv.Version +} + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. It prefers a match to group and version over just group. +// TODO: Move GroupVersion to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersion and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { + for _, gvk := range kinds { + if gvk.Group == gv.Group && gvk.Version == gv.Version { + return gvk, true + } + } + for _, gvk := range kinds { + if gvk.Group == gv.Group { + return gv.WithKind(gvk.Kind), true + } + } + return GroupVersionKind{}, false +} + +// ParseGroupVersion turns "group/version" string into a GroupVersion struct. It reports error +// if it cannot parse the string. +func ParseGroupVersion(gv string) (GroupVersion, error) { + // this can be the internal version for the legacy kube types + // TODO once we've cleared the last uses as strings, this special case should be removed. + if (len(gv) == 0) || (gv == "/") { + return GroupVersion{}, nil + } + + switch strings.Count(gv, "/") { + case 0: + return GroupVersion{"", gv}, nil + case 1: + i := strings.Index(gv, "/") + return GroupVersion{gv[:i], gv[i+1:]}, nil + default: + return GroupVersion{}, fmt.Errorf("unexpected GroupVersion string: %v", gv) + } +} + +// WithKind creates a GroupVersionKind based on the method receiver's GroupVersion and the passed Kind. +func (gv GroupVersion) WithKind(kind string) GroupVersionKind { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} +} + +// WithResource creates a GroupVersionResource based on the method receiver's GroupVersion and the passed Resource. +func (gv GroupVersion) WithResource(resource string) GroupVersionResource { + return GroupVersionResource{Group: gv.Group, Version: gv.Version, Resource: resource} +} + +// MarshalJSON implements the json.Marshaller interface. +func (gv GroupVersion) MarshalJSON() ([]byte, error) { + s := gv.String() + if strings.Count(s, "/") > 1 { + return []byte{}, fmt.Errorf("illegal GroupVersion %v: contains more than one /", s) + } + return json.Marshal(s) +} + +func (gv *GroupVersion) unmarshal(value []byte) error { + var s string + if err := json.Unmarshal(value, &s); err != nil { + return err + } + parsed, err := ParseGroupVersion(s) + if err != nil { + return err + } + *gv = parsed + return nil +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (gv *GroupVersion) UnmarshalJSON(value []byte) error { + return gv.unmarshal(value) +} + +// UnmarshalTEXT implements the Ugorji's encoding.TextUnmarshaler interface. +func (gv *GroupVersion) UnmarshalText(value []byte) error { + return gv.unmarshal(value) +} + +// GroupVersions can be used to represent a set of desired group versions. +// TODO: Move GroupVersions to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersions and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +type GroupVersions []GroupVersion + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. +func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { + for _, gv := range gvs { + target, ok := gv.KindForGroupVersionKinds(kinds) + if !ok { + continue + } + return target, true + } + return GroupVersionKind{}, false +} + +// ToAPIVersionAndKind is a convenience method for satisfying runtime.Object on types that +// do not use TypeMeta. +func (gvk *GroupVersionKind) ToAPIVersionAndKind() (string, string) { + if gvk == nil { + return "", "" + } + return gvk.GroupVersion().String(), gvk.Kind +} + +// FromAPIVersionAndKind returns a GVK representing the provided fields for types that +// do not use TypeMeta. This method exists to support test types and legacy serializations +// that have a distinct group and kind. +// TODO: further reduce usage of this method. +func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKind { + if gv, err := ParseGroupVersion(apiVersion); err == nil { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} + } + return GroupVersionKind{Kind: kind} +} + +// All objects that are serialized from a Scheme encode their type information. This interface is used +// by serialization to set type information from the Scheme onto the serialized version of an object. +// For objects that cannot be serialized or have unique requirements, this interface may be a no-op. +// TODO: this belongs in pkg/runtime, move unversioned.GVK into runtime. +type ObjectKind interface { + // SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil + // should clear the current setting. + SetGroupVersionKind(kind GroupVersionKind) + // GroupVersionKind returns the stored group, version, and kind of an object, or nil if the object does + // not expose or provide these fields. + GroupVersionKind() GroupVersionKind +} + +// EmptyObjectKind implements the ObjectKind interface as a noop +// TODO: this belongs in pkg/runtime, move unversioned.GVK into runtime. +var EmptyObjectKind = emptyObjectKind{} + +type emptyObjectKind struct{} + +// SetGroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) SetGroupVersionKind(gvk GroupVersionKind) {} + +// GroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) GroupVersionKind() GroupVersionKind { return GroupVersionKind{} } diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/helpers.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/helpers.go new file mode 100644 index 0000000000..22f98f1740 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/helpers.go @@ -0,0 +1,184 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/selection" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// LabelSelectorAsSelector converts the LabelSelector api type into a struct that implements +// labels.Selector +// Note: This function should be kept in sync with the selector methods in pkg/labels/selector.go +func LabelSelectorAsSelector(ps *LabelSelector) (labels.Selector, error) { + if ps == nil { + return labels.Nothing(), nil + } + if len(ps.MatchLabels)+len(ps.MatchExpressions) == 0 { + return labels.Everything(), nil + } + selector := labels.NewSelector() + for k, v := range ps.MatchLabels { + r, err := labels.NewRequirement(k, selection.Equals, sets.NewString(v)) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + for _, expr := range ps.MatchExpressions { + var op selection.Operator + switch expr.Operator { + case LabelSelectorOpIn: + op = selection.In + case LabelSelectorOpNotIn: + op = selection.NotIn + case LabelSelectorOpExists: + op = selection.Exists + case LabelSelectorOpDoesNotExist: + op = selection.DoesNotExist + default: + return nil, fmt.Errorf("%q is not a valid pod selector operator", expr.Operator) + } + r, err := labels.NewRequirement(expr.Key, op, sets.NewString(expr.Values...)) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + return selector, nil +} + +// LabelSelectorAsMap converts the LabelSelector api type into a map of strings, ie. the +// original structure of a label selector. Operators that cannot be converted into plain +// labels (Exists, DoesNotExist, NotIn, and In with more than one value) will result in +// an error. +func LabelSelectorAsMap(ps *LabelSelector) (map[string]string, error) { + if ps == nil { + return nil, nil + } + selector := map[string]string{} + for k, v := range ps.MatchLabels { + selector[k] = v + } + for _, expr := range ps.MatchExpressions { + switch expr.Operator { + case LabelSelectorOpIn: + if len(expr.Values) != 1 { + return selector, fmt.Errorf("operator %q without a single value cannot be converted into the old label selector format", expr.Operator) + } + // Should we do anything in case this will override a previous key-value pair? + selector[expr.Key] = expr.Values[0] + case LabelSelectorOpNotIn, LabelSelectorOpExists, LabelSelectorOpDoesNotExist: + return selector, fmt.Errorf("operator %q cannot be converted into the old label selector format", expr.Operator) + default: + return selector, fmt.Errorf("%q is not a valid selector operator", expr.Operator) + } + } + return selector, nil +} + +// ParseToLabelSelector parses a string representing a selector into a LabelSelector object. +// Note: This function should be kept in sync with the parser in pkg/labels/selector.go +func ParseToLabelSelector(selector string) (*LabelSelector, error) { + reqs, err := labels.ParseToRequirements(selector) + if err != nil { + return nil, fmt.Errorf("couldn't parse the selector string \"%s\": %v", selector, err) + } + + labelSelector := &LabelSelector{ + MatchLabels: map[string]string{}, + MatchExpressions: []LabelSelectorRequirement{}, + } + for _, req := range reqs { + var op LabelSelectorOperator + switch req.Operator() { + case selection.Equals, selection.DoubleEquals: + vals := req.Values() + if vals.Len() != 1 { + return nil, fmt.Errorf("equals operator must have exactly one value") + } + val, ok := vals.PopAny() + if !ok { + return nil, fmt.Errorf("equals operator has exactly one value but it cannot be retrieved") + } + labelSelector.MatchLabels[req.Key()] = val + continue + case selection.In: + op = LabelSelectorOpIn + case selection.NotIn: + op = LabelSelectorOpNotIn + case selection.Exists: + op = LabelSelectorOpExists + case selection.DoesNotExist: + op = LabelSelectorOpDoesNotExist + case selection.GreaterThan, selection.LessThan: + // Adding a separate case for these operators to indicate that this is deliberate + return nil, fmt.Errorf("%q isn't supported in label selectors", req.Operator()) + default: + return nil, fmt.Errorf("%q is not a valid label selector operator", req.Operator()) + } + labelSelector.MatchExpressions = append(labelSelector.MatchExpressions, LabelSelectorRequirement{ + Key: req.Key(), + Operator: op, + Values: req.Values().List(), + }) + } + return labelSelector, nil +} + +// SetAsLabelSelector converts the labels.Set object into a LabelSelector api object. +func SetAsLabelSelector(ls labels.Set) *LabelSelector { + if ls == nil { + return nil + } + + selector := &LabelSelector{ + MatchLabels: make(map[string]string), + } + for label, value := range ls { + selector.MatchLabels[label] = value + } + + return selector +} + +// FormatLabelSelector convert labelSelector into plain string +func FormatLabelSelector(labelSelector *LabelSelector) string { + selector, err := LabelSelectorAsSelector(labelSelector) + if err != nil { + return "<error>" + } + + l := selector.String() + if len(l) == 0 { + l = "<none>" + } + return l +} + +func ExtractGroupVersions(l *APIGroupList) []string { + var groupVersions []string + for _, g := range l.Groups { + for _, gv := range g.Versions { + groupVersions = append(groupVersions, gv.GroupVersion) + } + } + return groupVersions +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/meta.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/meta.go new file mode 100644 index 0000000000..48009da162 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/meta.go @@ -0,0 +1,62 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +// ListMetaAccessor retrieves the list interface from an object +// TODO: move this, and TypeMeta and ListMeta, to a different package +type ListMetaAccessor interface { + GetListMeta() List +} + +// List lets you work with list metadata from any of the versioned or +// internal API objects. Attempting to set or retrieve a field on an object that does +// not support that field will be a no-op and return a default value. +// TODO: move this, and TypeMeta and ListMeta, to a different package +type List interface { + GetResourceVersion() string + SetResourceVersion(version string) + GetSelfLink() string + SetSelfLink(selfLink string) +} + +// Type exposes the type and APIVersion of versioned or internal API objects. +// TODO: move this, and TypeMeta and ListMeta, to a different package +type Type interface { + GetAPIVersion() string + SetAPIVersion(version string) + GetKind() string + SetKind(kind string) +} + +func (meta *ListMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ListMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ListMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ListMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } + +func (obj *TypeMeta) GetObjectKind() ObjectKind { return obj } + +// SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) SetGroupVersionKind(gvk GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +// GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) GroupVersionKind() GroupVersionKind { + return FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ListMeta) GetListMeta() List { return obj } diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/register.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/register.go new file mode 100644 index 0000000000..907188bc74 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/register.go @@ -0,0 +1,25 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = GroupVersion{Group: "", Version: ""} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time.go new file mode 100644 index 0000000000..aedc119d27 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time.go @@ -0,0 +1,180 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +import ( + "encoding/json" + "time" + + "k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common" + + "github.com/go-openapi/spec" + "github.com/google/gofuzz" +) + +// Time is a wrapper around time.Time which supports correct +// marshaling to YAML and JSON. Wrappers are provided for many +// of the factory methods that the time package offers. +// +// +protobuf.options.marshal=false +// +protobuf.as=Timestamp +// +protobuf.options.(gogoproto.goproto_stringer)=false +type Time struct { + time.Time `protobuf:"-"` +} + +// DeepCopy returns a deep-copy of the Time value. The underlying time.Time +// type is effectively immutable in the time API, so it is safe to +// copy-by-assign, despite the presence of (unexported) Pointer fields. +func (t Time) DeepCopy() Time { + return t +} + +// String returns the representation of the time. +func (t Time) String() string { + return t.Time.String() +} + +// NewTime returns a wrapped instance of the provided time +func NewTime(time time.Time) Time { + return Time{time} +} + +// Date returns the Time corresponding to the supplied parameters +// by wrapping time.Date. +func Date(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) Time { + return Time{time.Date(year, month, day, hour, min, sec, nsec, loc)} +} + +// Now returns the current local time. +func Now() Time { + return Time{time.Now()} +} + +// IsZero returns true if the value is nil or time is zero. +func (t *Time) IsZero() bool { + if t == nil { + return true + } + return t.Time.IsZero() +} + +// Before reports whether the time instant t is before u. +func (t Time) Before(u Time) bool { + return t.Time.Before(u.Time) +} + +// Equal reports whether the time instant t is equal to u. +func (t Time) Equal(u Time) bool { + return t.Time.Equal(u.Time) +} + +// Unix returns the local time corresponding to the given Unix time +// by wrapping time.Unix. +func Unix(sec int64, nsec int64) Time { + return Time{time.Unix(sec, nsec)} +} + +// Rfc3339Copy returns a copy of the Time at second-level precision. +func (t Time) Rfc3339Copy() Time { + copied, _ := time.Parse(time.RFC3339, t.Format(time.RFC3339)) + return Time{copied} +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (t *Time) UnmarshalJSON(b []byte) error { + if len(b) == 4 && string(b) == "null" { + t.Time = time.Time{} + return nil + } + + var str string + json.Unmarshal(b, &str) + + pt, err := time.Parse(time.RFC3339, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// UnmarshalQueryParameter converts from a URL query parameter value to an object +func (t *Time) UnmarshalQueryParameter(str string) error { + if len(str) == 0 { + t.Time = time.Time{} + return nil + } + // Tolerate requests from older clients that used JSON serialization to build query params + if len(str) == 4 && str == "null" { + t.Time = time.Time{} + return nil + } + + pt, err := time.Parse(time.RFC3339, str) + if err != nil { + return err + } + + t.Time = pt.Local() + return nil +} + +// MarshalJSON implements the json.Marshaler interface. +func (t Time) MarshalJSON() ([]byte, error) { + if t.IsZero() { + // Encode unset/nil objects as JSON's "null". + return []byte("null"), nil + } + + return json.Marshal(t.UTC().Format(time.RFC3339)) +} + +func (_ Time) OpenAPIDefinition() common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "date-time", + }, + }, + } +} + +// MarshalQueryParameter converts to a URL query parameter value +func (t Time) MarshalQueryParameter() (string, error) { + if t.IsZero() { + // Encode unset/nil objects as an empty string + return "", nil + } + + return t.UTC().Format(time.RFC3339), nil +} + +// Fuzz satisfies fuzz.Interface. +func (t *Time) Fuzz(c fuzz.Continue) { + if t == nil { + return + } + // Allow for about 1000 years of randomness. Leave off nanoseconds + // because JSON doesn't represent them so they can't round-trip + // properly. + t.Time = time.Unix(c.Rand.Int63n(1000*365*24*60*60), 0) +} + +var _ fuzz.Interface = &Time{} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time_proto.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time_proto.go new file mode 100644 index 0000000000..ba25e9164f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/time_proto.go @@ -0,0 +1,85 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +import ( + "time" +) + +// Timestamp is a struct that is equivalent to Time, but intended for +// protobuf marshalling/unmarshalling. It is generated into a serialization +// that matches Time. Do not use in Go structs. +type Timestamp struct { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + Seconds int64 `json:"seconds" protobuf:"varint,1,opt,name=seconds"` + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. This field may be limited in precision depending on context. + Nanos int32 `json:"nanos" protobuf:"varint,2,opt,name=nanos"` +} + +// Timestamp returns the Time as a new Timestamp value. +func (m *Time) ProtoTime() *Timestamp { + if m == nil { + return &Timestamp{} + } + return &Timestamp{ + Seconds: m.Time.Unix(), + Nanos: int32(m.Time.Nanosecond()), + } +} + +// Size implements the protobuf marshalling interface. +func (m *Time) Size() (n int) { + if m == nil || m.Time.IsZero() { + return 0 + } + return m.ProtoTime().Size() +} + +// Reset implements the protobuf marshalling interface. +func (m *Time) Unmarshal(data []byte) error { + if len(data) == 0 { + m.Time = time.Time{} + return nil + } + p := Timestamp{} + if err := p.Unmarshal(data); err != nil { + return err + } + m.Time = time.Unix(p.Seconds, int64(p.Nanos)).Local() + return nil +} + +// Marshal implements the protobuf marshalling interface. +func (m *Time) Marshal() (data []byte, err error) { + if m == nil || m.Time.IsZero() { + return nil, nil + } + return m.ProtoTime().Marshal() +} + +// MarshalTo implements the protobuf marshalling interface. +func (m *Time) MarshalTo(data []byte) (int, error) { + if m == nil || m.Time.IsZero() { + return 0, nil + } + return m.ProtoTime().MarshalTo(data) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types.go new file mode 100644 index 0000000000..7d632b496b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types.go @@ -0,0 +1,460 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package unversioned contains API types that are common to all versions. +// +// The package contains two categories of types: +// - external (serialized) types that lack their own version (e.g TypeMeta) +// - internal (never-serialized) types that are needed by several different +// api groups, and so live here, to avoid duplication and/or import loops +// (e.g. LabelSelector). +// In the future, we will probably move these categories of objects into +// separate packages. +package unversioned + +import "strings" + +// TypeMeta describes an individual object in an API response or request +// with strings representing the type of the object and its API schema version. +// Structures that are versioned or persisted should inline TypeMeta. +type TypeMeta struct { + // Kind is a string value representing the REST resource this object represents. + // Servers may infer this from the endpoint the client submits requests to. + // Cannot be updated. + // In CamelCase. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + + // APIVersion defines the versioned schema of this representation of an object. + // Servers should convert recognized schemas to the latest internal value, and + // may reject unrecognized values. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt,name=apiVersion"` +} + +// ListMeta describes metadata that synthetic resources must have, including lists and +// various status objects. A resource may have only one of {ObjectMeta, ListMeta}. +type ListMeta struct { + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,1,opt,name=selfLink"` + + // String that identifies the server's internal version of this object that + // can be used by clients to determine when objects have changed. + // Value must be treated as opaque by clients and passed unmodified back to the server. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,2,opt,name=resourceVersion"` +} + +// ExportOptions is the query options to the standard REST get call. +type ExportOptions struct { + TypeMeta `json:",inline"` + // Should this value be exported. Export strips fields that a user can not specify.` + Export bool `json:"export" protobuf:"varint,1,opt,name=export"` + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` +} + +// Status is a return value for calls that don't return other objects. +type Status struct { + TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Status of the operation. + // One of: "Success" or "Failure". + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status string `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` + // A human-readable description of the status of this operation. + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // A machine-readable description of why this operation is in the + // "Failure" status. If this value is empty there + // is no information available. A Reason clarifies an HTTP status + // code but does not override it. + Reason StatusReason `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason,casttype=StatusReason"` + // Extended data associated with the reason. Each reason may define its + // own extended details. This field is optional and the data returned + // is not guaranteed to conform to any schema except that defined by + // the reason type. + Details *StatusDetails `json:"details,omitempty" protobuf:"bytes,5,opt,name=details"` + // Suggested HTTP return code for this status, 0 if not set. + Code int32 `json:"code,omitempty" protobuf:"varint,6,opt,name=code"` +} + +// StatusDetails is a set of additional properties that MAY be set by the +// server to provide additional information about a response. The Reason +// field of a Status object defines what attributes will be set. Clients +// must ignore fields that do not match the defined type of each attribute, +// and should assume that any attribute may be empty, invalid, or under +// defined. +type StatusDetails struct { + // The name attribute of the resource associated with the status StatusReason + // (when there is a single name which can be described). + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // The group attribute of the resource associated with the status StatusReason. + Group string `json:"group,omitempty" protobuf:"bytes,2,opt,name=group"` + // The kind attribute of the resource associated with the status StatusReason. + // On some operations may differ from the requested resource Kind. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind,omitempty" protobuf:"bytes,3,opt,name=kind"` + // The Causes array includes more details associated with the StatusReason + // failure. Not all StatusReasons may provide detailed causes. + Causes []StatusCause `json:"causes,omitempty" protobuf:"bytes,4,rep,name=causes"` + // If specified, the time in seconds before the operation should be retried. + RetryAfterSeconds int32 `json:"retryAfterSeconds,omitempty" protobuf:"varint,5,opt,name=retryAfterSeconds"` +} + +// Values of Status.Status +const ( + StatusSuccess = "Success" + StatusFailure = "Failure" +) + +// StatusReason is an enumeration of possible failure causes. Each StatusReason +// must map to a single HTTP status code, but multiple reasons may map +// to the same HTTP status code. +// TODO: move to apiserver +type StatusReason string + +const ( + // StatusReasonUnknown means the server has declined to indicate a specific reason. + // The details field may contain other information about this error. + // Status code 500. + StatusReasonUnknown StatusReason = "" + + // StatusReasonUnauthorized means the server can be reached and understood the request, but requires + // the user to present appropriate authorization credentials (identified by the WWW-Authenticate header) + // in order for the action to be completed. If the user has specified credentials on the request, the + // server considers them insufficient. + // Status code 401 + StatusReasonUnauthorized StatusReason = "Unauthorized" + + // StatusReasonForbidden means the server can be reached and understood the request, but refuses + // to take any further action. It is the result of the server being configured to deny access for some reason + // to the requested resource by the client. + // Details (optional): + // "kind" string - the kind attribute of the forbidden resource + // on some operations may differ from the requested + // resource. + // "id" string - the identifier of the forbidden resource + // Status code 403 + StatusReasonForbidden StatusReason = "Forbidden" + + // StatusReasonNotFound means one or more resources required for this operation + // could not be found. + // Details (optional): + // "kind" string - the kind attribute of the missing resource + // on some operations may differ from the requested + // resource. + // "id" string - the identifier of the missing resource + // Status code 404 + StatusReasonNotFound StatusReason = "NotFound" + + // StatusReasonAlreadyExists means the resource you are creating already exists. + // Details (optional): + // "kind" string - the kind attribute of the conflicting resource + // "id" string - the identifier of the conflicting resource + // Status code 409 + StatusReasonAlreadyExists StatusReason = "AlreadyExists" + + // StatusReasonConflict means the requested operation cannot be completed + // due to a conflict in the operation. The client may need to alter the + // request. Each resource may define custom details that indicate the + // nature of the conflict. + // Status code 409 + StatusReasonConflict StatusReason = "Conflict" + + // StatusReasonGone means the item is no longer available at the server and no + // forwarding address is known. + // Status code 410 + StatusReasonGone StatusReason = "Gone" + + // StatusReasonInvalid means the requested create or update operation cannot be + // completed due to invalid data provided as part of the request. The client may + // need to alter the request. When set, the client may use the StatusDetails + // message field as a summary of the issues encountered. + // Details (optional): + // "kind" string - the kind attribute of the invalid resource + // "id" string - the identifier of the invalid resource + // "causes" - one or more StatusCause entries indicating the data in the + // provided resource that was invalid. The code, message, and + // field attributes will be set. + // Status code 422 + StatusReasonInvalid StatusReason = "Invalid" + + // StatusReasonServerTimeout means the server can be reached and understood the request, + // but cannot complete the action in a reasonable time. The client should retry the request. + // This is may be due to temporary server load or a transient communication issue with + // another server. Status code 500 is used because the HTTP spec provides no suitable + // server-requested client retry and the 5xx class represents actionable errors. + // Details (optional): + // "kind" string - the kind attribute of the resource being acted on. + // "id" string - the operation that is being attempted. + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried + // Status code 500 + StatusReasonServerTimeout StatusReason = "ServerTimeout" + + // StatusReasonTimeout means that the request could not be completed within the given time. + // Clients can get this response only when they specified a timeout param in the request, + // or if the server cannot complete the operation within a reasonable amount of time. + // The request might succeed with an increased value of timeout param. The client *should* + // wait at least the number of seconds specified by the retryAfterSeconds field. + // Details (optional): + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried + // Status code 504 + StatusReasonTimeout StatusReason = "Timeout" + + // StatusReasonBadRequest means that the request itself was invalid, because the request + // doesn't make any sense, for example deleting a read-only object. This is different than + // StatusReasonInvalid above which indicates that the API call could possibly succeed, but the + // data was invalid. API calls that return BadRequest can never succeed. + StatusReasonBadRequest StatusReason = "BadRequest" + + // StatusReasonMethodNotAllowed means that the action the client attempted to perform on the + // resource was not supported by the code - for instance, attempting to delete a resource that + // can only be created. API calls that return MethodNotAllowed can never succeed. + StatusReasonMethodNotAllowed StatusReason = "MethodNotAllowed" + + // StatusReasonInternalError indicates that an internal error occurred, it is unexpected + // and the outcome of the call is unknown. + // Details (optional): + // "causes" - The original error + // Status code 500 + StatusReasonInternalError StatusReason = "InternalError" + + // StatusReasonExpired indicates that the request is invalid because the content you are requesting + // has expired and is no longer available. It is typically associated with watches that can't be + // serviced. + // Status code 410 (gone) + StatusReasonExpired StatusReason = "Expired" + + // StatusReasonServiceUnavailable means that the request itself was valid, + // but the requested service is unavailable at this time. + // Retrying the request after some time might succeed. + // Status code 503 + StatusReasonServiceUnavailable StatusReason = "ServiceUnavailable" +) + +// StatusCause provides more information about an api.Status failure, including +// cases when multiple errors are encountered. +type StatusCause struct { + // A machine-readable description of the cause of the error. If this value is + // empty there is no information available. + Type CauseType `json:"reason,omitempty" protobuf:"bytes,1,opt,name=reason,casttype=CauseType"` + // A human-readable description of the cause of the error. This field may be + // presented as-is to a reader. + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` + // The field of the resource that has caused this error, as named by its JSON + // serialization. May include dot and postfix notation for nested attributes. + // Arrays are zero-indexed. Fields may appear more than once in an array of + // causes due to fields having multiple errors. + // Optional. + // + // Examples: + // "name" - the field "name" on the current resource + // "items[0].name" - the field "name" on the first array entry in "items" + Field string `json:"field,omitempty" protobuf:"bytes,3,opt,name=field"` +} + +// CauseType is a machine readable value providing more detail about what +// occurred in a status response. An operation may have multiple causes for a +// status (whether Failure or Success). +type CauseType string + +const ( + // CauseTypeFieldValueNotFound is used to report failure to find a requested value + // (e.g. looking up an ID). + CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" + // CauseTypeFieldValueRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). + CauseTypeFieldValueRequired CauseType = "FieldValueRequired" + // CauseTypeFieldValueDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). + CauseTypeFieldValueDuplicate CauseType = "FieldValueDuplicate" + // CauseTypeFieldValueInvalid is used to report malformed values (e.g. failed regex + // match). + CauseTypeFieldValueInvalid CauseType = "FieldValueInvalid" + // CauseTypeFieldValueNotSupported is used to report valid (as per formatting rules) + // values that can not be handled (e.g. an enumerated string). + CauseTypeFieldValueNotSupported CauseType = "FieldValueNotSupported" + // CauseTypeUnexpectedServerResponse is used to report when the server responded to the client + // without the expected return type. The presence of this cause indicates the error may be + // due to an intervening proxy or the server software malfunctioning. + CauseTypeUnexpectedServerResponse CauseType = "UnexpectedServerResponse" +) + +// APIVersions lists the versions that are available, to allow clients to +// discover the API at /api, which is the root path of the legacy v1 API. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +type APIVersions struct { + TypeMeta `json:",inline"` + // versions are the api versions that are available. + Versions []string `json:"versions" protobuf:"bytes,1,rep,name=versions"` + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,2,rep,name=serverAddressByClientCIDRs"` +} + +// APIGroupList is a list of APIGroup, to allow clients to discover the API at +// /apis. +type APIGroupList struct { + TypeMeta `json:",inline"` + // groups is a list of APIGroup. + Groups []APIGroup `json:"groups" protobuf:"bytes,1,rep,name=groups"` +} + +// APIGroup contains the name, the supported versions, and the preferred version +// of a group. +type APIGroup struct { + TypeMeta `json:",inline"` + // name is the name of the group. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // versions are the versions supported in this group. + Versions []GroupVersionForDiscovery `json:"versions" protobuf:"bytes,2,rep,name=versions"` + // preferredVersion is the version preferred by the API server, which + // probably is the storage version. + PreferredVersion GroupVersionForDiscovery `json:"preferredVersion,omitempty" protobuf:"bytes,3,opt,name=preferredVersion"` + // a map of client CIDR to server address that is serving this group. + // This is to help clients reach servers in the most network-efficient way possible. + // Clients can use the appropriate server address as per the CIDR that they match. + // In case of multiple matches, clients should use the longest matching CIDR. + // The server returns only those CIDRs that it thinks that the client can match. + // For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. + // Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP. + ServerAddressByClientCIDRs []ServerAddressByClientCIDR `json:"serverAddressByClientCIDRs" protobuf:"bytes,4,rep,name=serverAddressByClientCIDRs"` +} + +// ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match. +type ServerAddressByClientCIDR struct { + // The CIDR with which clients can match their IP to figure out the server address that they should use. + ClientCIDR string `json:"clientCIDR" protobuf:"bytes,1,opt,name=clientCIDR"` + // Address of this server, suitable for a client that matches the above CIDR. + // This can be a hostname, hostname:port, IP or IP:port. + ServerAddress string `json:"serverAddress" protobuf:"bytes,2,opt,name=serverAddress"` +} + +// GroupVersion contains the "group/version" and "version" string of a version. +// It is made a struct to keep extensibility. +type GroupVersionForDiscovery struct { + // groupVersion specifies the API group and version in the form "group/version" + GroupVersion string `json:"groupVersion" protobuf:"bytes,1,opt,name=groupVersion"` + // version specifies the version in the form of "version". This is to save + // the clients the trouble of splitting the GroupVersion. + Version string `json:"version" protobuf:"bytes,2,opt,name=version"` +} + +// APIResource specifies the name of a resource and whether it is namespaced. +type APIResource struct { + // name is the name of the resource. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // namespaced indicates if a resource is namespaced or not. + Namespaced bool `json:"namespaced" protobuf:"varint,2,opt,name=namespaced"` + // kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo') + Kind string `json:"kind" protobuf:"bytes,3,opt,name=kind"` +} + +// APIResourceList is a list of APIResource, it is used to expose the name of the +// resources supported in a specific group and version, and if the resource +// is namespaced. +type APIResourceList struct { + TypeMeta `json:",inline"` + // groupVersion is the group and version this APIResourceList is for. + GroupVersion string `json:"groupVersion" protobuf:"bytes,1,opt,name=groupVersion"` + // resources contains the name of the resources and if they are namespaced. + APIResources []APIResource `json:"resources" protobuf:"bytes,2,rep,name=resources"` +} + +// RootPaths lists the paths available at root. +// For example: "/healthz", "/apis". +type RootPaths struct { + // paths are the paths available at root. + Paths []string `json:"paths" protobuf:"bytes,1,rep,name=paths"` +} + +// TODO: remove me when watch is refactored +func LabelSelectorQueryParam(version string) string { + return "labelSelector" +} + +// TODO: remove me when watch is refactored +func FieldSelectorQueryParam(version string) string { + return "fieldSelector" +} + +// String returns available api versions as a human-friendly version string. +func (apiVersions APIVersions) String() string { + return strings.Join(apiVersions.Versions, ",") +} + +func (apiVersions APIVersions) GoString() string { + return apiVersions.String() +} + +// Patch is provided to give a concrete name and type to the Kubernetes PATCH request body. +type Patch struct{} + +// Note: +// There are two different styles of label selectors used in versioned types: +// an older style which is represented as just a string in versioned types, and a +// newer style that is structured. LabelSelector is an internal representation for the +// latter style. + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +type LabelSelector struct { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"` +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + Operator LabelSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=LabelSelectorOperator"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A label selector operator is the set of operators that can be used in a selector requirement. +type LabelSelectorOperator string + +const ( + LabelSelectorOpIn LabelSelectorOperator = "In" + LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" + LabelSelectorOpExists LabelSelectorOperator = "Exists" + LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types_swagger_doc_generated.go new file mode 100644 index 0000000000..3f08115a6c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/types_swagger_doc_generated.go @@ -0,0 +1,208 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_APIGroup = map[string]string{ + "": "APIGroup contains the name, the supported versions, and the preferred version of a group.", + "name": "name is the name of the group.", + "versions": "versions are the versions supported in this group.", + "preferredVersion": "preferredVersion is the version preferred by the API server, which probably is the storage version.", + "serverAddressByClientCIDRs": "a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.", +} + +func (APIGroup) SwaggerDoc() map[string]string { + return map_APIGroup +} + +var map_APIGroupList = map[string]string{ + "": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", + "groups": "groups is a list of APIGroup.", +} + +func (APIGroupList) SwaggerDoc() map[string]string { + return map_APIGroupList +} + +var map_APIResource = map[string]string{ + "": "APIResource specifies the name of a resource and whether it is namespaced.", + "name": "name is the name of the resource.", + "namespaced": "namespaced indicates if a resource is namespaced or not.", + "kind": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", +} + +func (APIResource) SwaggerDoc() map[string]string { + return map_APIResource +} + +var map_APIResourceList = map[string]string{ + "": "APIResourceList is a list of APIResource, it is used to expose the name of the resources supported in a specific group and version, and if the resource is namespaced.", + "groupVersion": "groupVersion is the group and version this APIResourceList is for.", + "resources": "resources contains the name of the resources and if they are namespaced.", +} + +func (APIResourceList) SwaggerDoc() map[string]string { + return map_APIResourceList +} + +var map_APIVersions = map[string]string{ + "": "APIVersions lists the versions that are available, to allow clients to discover the API at /api, which is the root path of the legacy v1 API.", + "versions": "versions are the api versions that are available.", + "serverAddressByClientCIDRs": "a map of client CIDR to server address that is serving this group. This is to help clients reach servers in the most network-efficient way possible. Clients can use the appropriate server address as per the CIDR that they match. In case of multiple matches, clients should use the longest matching CIDR. The server returns only those CIDRs that it thinks that the client can match. For example: the master will return an internal IP CIDR only, if the client reaches the server using an internal IP. Server looks at X-Forwarded-For header or X-Real-Ip header or request.RemoteAddr (in that order) to get the client IP.", +} + +func (APIVersions) SwaggerDoc() map[string]string { + return map_APIVersions +} + +var map_ExportOptions = map[string]string{ + "": "ExportOptions is the query options to the standard REST get call.", + "export": "Should this value be exported. Export strips fields that a user can not specify.`", + "exact": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'", +} + +func (ExportOptions) SwaggerDoc() map[string]string { + return map_ExportOptions +} + +var map_GroupVersionForDiscovery = map[string]string{ + "": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", + "groupVersion": "groupVersion specifies the API group and version in the form \"group/version\"", + "version": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", +} + +func (GroupVersionForDiscovery) SwaggerDoc() map[string]string { + return map_GroupVersionForDiscovery +} + +var map_LabelSelector = map[string]string{ + "": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "matchLabels": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "matchExpressions": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", +} + +func (LabelSelector) SwaggerDoc() map[string]string { + return map_LabelSelector +} + +var map_LabelSelectorRequirement = map[string]string{ + "": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "key is the label key that the selector applies to.", + "operator": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", + "values": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", +} + +func (LabelSelectorRequirement) SwaggerDoc() map[string]string { + return map_LabelSelectorRequirement +} + +var map_ListMeta = map[string]string{ + "": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "selfLink": "SelfLink is a URL representing this object. Populated by the system. Read-only.", + "resourceVersion": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency", +} + +func (ListMeta) SwaggerDoc() map[string]string { + return map_ListMeta +} + +var map_Patch = map[string]string{ + "": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", +} + +func (Patch) SwaggerDoc() map[string]string { + return map_Patch +} + +var map_RootPaths = map[string]string{ + "": "RootPaths lists the paths available at root. For example: \"/healthz\", \"/apis\".", + "paths": "paths are the paths available at root.", +} + +func (RootPaths) SwaggerDoc() map[string]string { + return map_RootPaths +} + +var map_ServerAddressByClientCIDR = map[string]string{ + "": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", + "clientCIDR": "The CIDR with which clients can match their IP to figure out the server address that they should use.", + "serverAddress": "Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.", +} + +func (ServerAddressByClientCIDR) SwaggerDoc() map[string]string { + return map_ServerAddressByClientCIDR +} + +var map_Status = map[string]string{ + "": "Status is a return value for calls that don't return other objects.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "status": "Status of the operation. One of: \"Success\" or \"Failure\". More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "message": "A human-readable description of the status of this operation.", + "reason": "A machine-readable description of why this operation is in the \"Failure\" status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.", + "details": "Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.", + "code": "Suggested HTTP return code for this status, 0 if not set.", +} + +func (Status) SwaggerDoc() map[string]string { + return map_Status +} + +var map_StatusCause = map[string]string{ + "": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", + "reason": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", + "message": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", + "field": "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"", +} + +func (StatusCause) SwaggerDoc() map[string]string { + return map_StatusCause +} + +var map_StatusDetails = map[string]string{ + "": "StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined.", + "name": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", + "group": "The group attribute of the resource associated with the status StatusReason.", + "kind": "The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "causes": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", + "retryAfterSeconds": "If specified, the time in seconds before the operation should be retried.", +} + +func (StatusDetails) SwaggerDoc() map[string]string { + return map_StatusDetails +} + +var map_TypeMeta = map[string]string{ + "": "TypeMeta describes an individual object in an API response or request with strings representing the type of the object and its API schema version. Structures that are versioned or persisted should inline TypeMeta.", + "kind": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "apiVersion": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources", +} + +func (TypeMeta) SwaggerDoc() map[string]string { + return map_TypeMeta +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/well_known_labels.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/well_known_labels.go new file mode 100644 index 0000000000..318c6eebf1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/well_known_labels.go @@ -0,0 +1,30 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unversioned + +const ( + // If you add a new topology domain here, also consider adding it to the set of default values + // for the scheduler's --failure-domain command-line argument. + LabelHostname = "kubernetes.io/hostname" + LabelZoneFailureDomain = "failure-domain.beta.kubernetes.io/zone" + LabelZoneRegion = "failure-domain.beta.kubernetes.io/region" + + LabelInstanceType = "beta.kubernetes.io/instance-type" + + LabelOS = "beta.kubernetes.io/os" + LabelArch = "beta.kubernetes.io/arch" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/zz_generated.deepcopy.go new file mode 100644 index 0000000000..dc98d2a321 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/unversioned/zz_generated.deepcopy.go @@ -0,0 +1,390 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package unversioned + +import ( + conversion "k8s.io/client-go/1.5/pkg/conversion" + time "time" +) + +func DeepCopy_unversioned_APIGroup(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIGroup) + out := out.(*APIGroup) + out.TypeMeta = in.TypeMeta + out.Name = in.Name + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]GroupVersionForDiscovery, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Versions = nil + } + out.PreferredVersion = in.PreferredVersion + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ServerAddressByClientCIDRs = nil + } + return nil + } +} + +func DeepCopy_unversioned_APIGroupList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIGroupList) + out := out.(*APIGroupList) + out.TypeMeta = in.TypeMeta + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]APIGroup, len(*in)) + for i := range *in { + if err := DeepCopy_unversioned_APIGroup(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Groups = nil + } + return nil + } +} + +func DeepCopy_unversioned_APIResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIResource) + out := out.(*APIResource) + out.Name = in.Name + out.Namespaced = in.Namespaced + out.Kind = in.Kind + return nil + } +} + +func DeepCopy_unversioned_APIResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIResourceList) + out := out.(*APIResourceList) + out.TypeMeta = in.TypeMeta + out.GroupVersion = in.GroupVersion + if in.APIResources != nil { + in, out := &in.APIResources, &out.APIResources + *out = make([]APIResource, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.APIResources = nil + } + return nil + } +} + +func DeepCopy_unversioned_APIVersions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersions) + out := out.(*APIVersions) + out.TypeMeta = in.TypeMeta + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Versions = nil + } + if in.ServerAddressByClientCIDRs != nil { + in, out := &in.ServerAddressByClientCIDRs, &out.ServerAddressByClientCIDRs + *out = make([]ServerAddressByClientCIDR, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ServerAddressByClientCIDRs = nil + } + return nil + } +} + +func DeepCopy_unversioned_Duration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Duration) + out := out.(*Duration) + out.Duration = in.Duration + return nil + } +} + +func DeepCopy_unversioned_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExportOptions) + out := out.(*ExportOptions) + out.TypeMeta = in.TypeMeta + out.Export = in.Export + out.Exact = in.Exact + return nil + } +} + +func DeepCopy_unversioned_GroupKind(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupKind) + out := out.(*GroupKind) + out.Group = in.Group + out.Kind = in.Kind + return nil + } +} + +func DeepCopy_unversioned_GroupResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupResource) + out := out.(*GroupResource) + out.Group = in.Group + out.Resource = in.Resource + return nil + } +} + +func DeepCopy_unversioned_GroupVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersion) + out := out.(*GroupVersion) + out.Group = in.Group + out.Version = in.Version + return nil + } +} + +func DeepCopy_unversioned_GroupVersionForDiscovery(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionForDiscovery) + out := out.(*GroupVersionForDiscovery) + out.GroupVersion = in.GroupVersion + out.Version = in.Version + return nil + } +} + +func DeepCopy_unversioned_GroupVersionKind(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionKind) + out := out.(*GroupVersionKind) + out.Group = in.Group + out.Version = in.Version + out.Kind = in.Kind + return nil + } +} + +func DeepCopy_unversioned_GroupVersionResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GroupVersionResource) + out := out.(*GroupVersionResource) + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + return nil + } +} + +func DeepCopy_unversioned_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelector) + out := out.(*LabelSelector) + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.MatchLabels = nil + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_unversioned_LabelSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_unversioned_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelectorRequirement) + out := out.(*LabelSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} + +func DeepCopy_unversioned_ListMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListMeta) + out := out.(*ListMeta) + out.SelfLink = in.SelfLink + out.ResourceVersion = in.ResourceVersion + return nil + } +} + +func DeepCopy_unversioned_Patch(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Patch) + out := out.(*Patch) + _ = in + _ = out + return nil + } +} + +func DeepCopy_unversioned_RootPaths(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RootPaths) + out := out.(*RootPaths) + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Paths = nil + } + return nil + } +} + +func DeepCopy_unversioned_ServerAddressByClientCIDR(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServerAddressByClientCIDR) + out := out.(*ServerAddressByClientCIDR) + out.ClientCIDR = in.ClientCIDR + out.ServerAddress = in.ServerAddress + return nil + } +} + +func DeepCopy_unversioned_Status(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Status) + out := out.(*Status) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + out.Status = in.Status + out.Message = in.Message + out.Reason = in.Reason + if in.Details != nil { + in, out := &in.Details, &out.Details + *out = new(StatusDetails) + if err := DeepCopy_unversioned_StatusDetails(*in, *out, c); err != nil { + return err + } + } else { + out.Details = nil + } + out.Code = in.Code + return nil + } +} + +func DeepCopy_unversioned_StatusCause(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatusCause) + out := out.(*StatusCause) + out.Type = in.Type + out.Message = in.Message + out.Field = in.Field + return nil + } +} + +func DeepCopy_unversioned_StatusDetails(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StatusDetails) + out := out.(*StatusDetails) + out.Name = in.Name + out.Group = in.Group + out.Kind = in.Kind + if in.Causes != nil { + in, out := &in.Causes, &out.Causes + *out = make([]StatusCause, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Causes = nil + } + out.RetryAfterSeconds = in.RetryAfterSeconds + return nil + } +} + +func DeepCopy_unversioned_Time(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Time) + out := out.(*Time) + if newVal, err := c.DeepCopy(&in.Time); err != nil { + return err + } else { + out.Time = *newVal.(*time.Time) + } + return nil + } +} + +func DeepCopy_unversioned_Timestamp(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Timestamp) + out := out.(*Timestamp) + out.Seconds = in.Seconds + out.Nanos = in.Nanos + return nil + } +} + +func DeepCopy_unversioned_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TypeMeta) + out := out.(*TypeMeta) + out.Kind = in.Kind + out.APIVersion = in.APIVersion + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/conversion.go new file mode 100644 index 0000000000..2ba5c32b23 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/conversion.go @@ -0,0 +1,814 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "encoding/json" + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/apis/extensions" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/validation/field" + "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +const ( + // Annotation key used to identify mirror pods. + mirrorAnnotationKey = "kubernetes.io/config.mirror" + + // Value used to identify mirror pods from pre-v1.1 kubelet. + mirrorAnnotationValue_1_0 = "mirror" + + // annotation key prefix used to identify non-convertible json paths. + NonConvertibleAnnotationPrefix = "kubernetes.io/non-convertible" +) + +// This is a "fast-path" that avoids reflection for common types. It focuses on the objects that are +// converted the most in the cluster. +// TODO: generate one of these for every external API group - this is to prove the impact +func addFastPathConversionFuncs(scheme *runtime.Scheme) error { + scheme.AddGenericConversionFunc(func(objA, objB interface{}, s conversion.Scope) (bool, error) { + switch a := objA.(type) { + case *Pod: + switch b := objB.(type) { + case *api.Pod: + return true, Convert_v1_Pod_To_api_Pod(a, b, s) + } + case *api.Pod: + switch b := objB.(type) { + case *Pod: + return true, Convert_api_Pod_To_v1_Pod(a, b, s) + } + + case *Event: + switch b := objB.(type) { + case *api.Event: + return true, Convert_v1_Event_To_api_Event(a, b, s) + } + case *api.Event: + switch b := objB.(type) { + case *Event: + return true, Convert_api_Event_To_v1_Event(a, b, s) + } + + case *ReplicationController: + switch b := objB.(type) { + case *api.ReplicationController: + return true, Convert_v1_ReplicationController_To_api_ReplicationController(a, b, s) + } + case *api.ReplicationController: + switch b := objB.(type) { + case *ReplicationController: + return true, Convert_api_ReplicationController_To_v1_ReplicationController(a, b, s) + } + + case *Node: + switch b := objB.(type) { + case *api.Node: + return true, Convert_v1_Node_To_api_Node(a, b, s) + } + case *api.Node: + switch b := objB.(type) { + case *Node: + return true, Convert_api_Node_To_v1_Node(a, b, s) + } + + case *Namespace: + switch b := objB.(type) { + case *api.Namespace: + return true, Convert_v1_Namespace_To_api_Namespace(a, b, s) + } + case *api.Namespace: + switch b := objB.(type) { + case *Namespace: + return true, Convert_api_Namespace_To_v1_Namespace(a, b, s) + } + + case *Service: + switch b := objB.(type) { + case *api.Service: + return true, Convert_v1_Service_To_api_Service(a, b, s) + } + case *api.Service: + switch b := objB.(type) { + case *Service: + return true, Convert_api_Service_To_v1_Service(a, b, s) + } + + case *Endpoints: + switch b := objB.(type) { + case *api.Endpoints: + return true, Convert_v1_Endpoints_To_api_Endpoints(a, b, s) + } + case *api.Endpoints: + switch b := objB.(type) { + case *Endpoints: + return true, Convert_api_Endpoints_To_v1_Endpoints(a, b, s) + } + + case *versioned.Event: + switch b := objB.(type) { + case *versioned.InternalEvent: + return true, versioned.Convert_versioned_Event_to_versioned_InternalEvent(a, b, s) + } + case *versioned.InternalEvent: + switch b := objB.(type) { + case *versioned.Event: + return true, versioned.Convert_versioned_InternalEvent_to_versioned_Event(a, b, s) + } + } + return false, nil + }) + return nil +} + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_api_Pod_To_v1_Pod, + Convert_api_PodSpec_To_v1_PodSpec, + Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec, + Convert_api_ServiceSpec_To_v1_ServiceSpec, + Convert_v1_Pod_To_api_Pod, + Convert_v1_PodSpec_To_api_PodSpec, + Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec, + Convert_v1_Secret_To_api_Secret, + Convert_v1_ServiceSpec_To_api_ServiceSpec, + Convert_v1_ResourceList_To_api_ResourceList, + Convert_v1_ReplicationController_to_extensions_ReplicaSet, + Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec, + Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus, + Convert_extensions_ReplicaSet_to_v1_ReplicationController, + Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec, + Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, k := range []string{ + "Endpoints", + "ResourceQuota", + "PersistentVolumeClaim", + "Service", + "ServiceAccount", + "ConfigMap", + } { + kind := k // don't close over range variables + err = scheme.AddFieldLabelConversionFunc("v1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for %q", label, kind) + } + }, + ) + if err != nil { + return err + } + } + + // Add field conversion funcs. + err = scheme.AddFieldLabelConversionFunc("v1", "Pod", + func(label, value string) (string, string, error) { + switch label { + case "metadata.annotations", + "metadata.labels", + "metadata.name", + "metadata.namespace", + "spec.nodeName", + "spec.restartPolicy", + "spec.serviceAccountName", + "status.phase", + "status.podIP": + return label, value, nil + // This is for backwards compatibility with old v1 clients which send spec.host + case "spec.host": + return "spec.nodeName", value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "Node", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + case "spec.unschedulable": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "ReplicationController", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", + "metadata.namespace", + "status.replicas": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) + if err != nil { + return err + } + err = scheme.AddFieldLabelConversionFunc("v1", "PersistentVolume", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) + if err != nil { + return err + } + if err := AddFieldLabelConversionsForEvent(scheme); err != nil { + return err + } + if err := AddFieldLabelConversionsForNamespace(scheme); err != nil { + return err + } + if err := AddFieldLabelConversionsForSecret(scheme); err != nil { + return err + } + return nil +} + +func Convert_v1_ReplicationController_to_extensions_ReplicaSet(in *ReplicationController, out *extensions.ReplicaSet, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*ReplicationController))(in) + } + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ReplicationControllerSpec_to_extensions_ReplicaSetSpec(in *ReplicationControllerSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*ReplicationControllerSpec))(in) + } + out.Replicas = *in.Replicas + if in.Selector != nil { + api.Convert_map_to_unversioned_LabelSelector(&in.Selector, out.Selector, s) + } + if in.Template != nil { + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, &out.Template, s); err != nil { + return err + } + } + return nil +} + +func Convert_v1_ReplicationControllerStatus_to_extensions_ReplicaSetStatus(in *ReplicationControllerStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*ReplicationControllerStatus))(in) + } + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_extensions_ReplicaSet_to_v1_ReplicationController(in *extensions.ReplicaSet, out *ReplicationController, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*extensions.ReplicaSet))(in) + } + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + fieldErr, ok := err.(*field.Error) + if !ok { + return err + } + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + out.Annotations[NonConvertibleAnnotationPrefix+"/"+fieldErr.Field] = reflect.ValueOf(fieldErr.BadValue).String() + } + if err := Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicaSetSpec_to_v1_ReplicationControllerSpec(in *extensions.ReplicaSetSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*extensions.ReplicaSetSpec))(in) + } + out.Replicas = new(int32) + *out.Replicas = in.Replicas + var invalidErr error + if in.Selector != nil { + invalidErr = api.Convert_unversioned_LabelSelector_to_map(in.Selector, &out.Selector, s) + } + out.Template = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, out.Template, s); err != nil { + return err + } + return invalidErr +} + +func Convert_extensions_ReplicaSetStatus_to_v1_ReplicationControllerStatus(in *extensions.ReplicaSetStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*extensions.ReplicaSetStatus))(in) + } + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + out.Replicas = &in.Replicas + out.Selector = in.Selector + if in.Template != nil { + out.Template = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in.Template, out.Template, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error { + out.Replicas = *in.Replicas + out.Selector = in.Selector + if in.Template != nil { + out.Template = new(api.PodTemplateSpec) + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in.Template, out.Template, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func Convert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *PodStatusResult, s conversion.Scope) error { + if err := autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in, out, s); err != nil { + return err + } + + if old := out.Annotations; old != nil { + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + } + if len(out.Status.InitContainerStatuses) > 0 { + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + value, err := json.Marshal(out.Status.InitContainerStatuses) + if err != nil { + return err + } + out.Annotations[PodInitContainerStatusesAnnotationKey] = string(value) + out.Annotations[PodInitContainerStatusesBetaAnnotationKey] = string(value) + } else { + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_v1_PodStatusResult_To_api_PodStatusResult(in *PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error { + // TODO: sometime after we move init container to stable, remove these conversions + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainerStatusesBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainerStatusesAnnotationKey] = valueBeta + } + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainerStatusesAnnotationKey]; ok { + var values []ContainerStatus + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Status.InitContainerStatuses = values + } + + if err := autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *PodTemplateSpec, s conversion.Scope) error { + if err := autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in, out, s); err != nil { + return err + } + + // TODO: sometime after we move init container to stable, remove these conversions. + if old := out.Annotations; old != nil { + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + } + if len(out.Spec.InitContainers) > 0 { + if out.Annotations == nil { + out.Annotations = make(map[string]string) + } + value, err := json.Marshal(out.Spec.InitContainers) + if err != nil { + return err + } + out.Annotations[PodInitContainersAnnotationKey] = string(value) + out.Annotations[PodInitContainersBetaAnnotationKey] = string(value) + } else { + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + } + return nil +} + +func Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error { + // TODO: sometime after we move init container to stable, remove these conversions + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainersBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainersAnnotationKey] = valueBeta + } + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainersAnnotationKey]; ok { + var values []Container + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Spec.InitContainers = values + } + + if err := autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + } + return nil +} + +// The following two PodSpec conversions are done here to support ServiceAccount +// as an alias for ServiceAccountName. +func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conversion.Scope) error { + if err := autoConvert_api_PodSpec_To_v1_PodSpec(in, out, s); err != nil { + return err + } + + // DeprecatedServiceAccount is an alias for ServiceAccountName. + out.DeprecatedServiceAccount = in.ServiceAccountName + + if in.SecurityContext != nil { + // the host namespace fields have to be handled here for backward compatibility + // with v1.0.0 + out.HostPID = in.SecurityContext.HostPID + out.HostNetwork = in.SecurityContext.HostNetwork + out.HostIPC = in.SecurityContext.HostIPC + } + + return nil +} + +func Convert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conversion.Scope) error { + if err := autoConvert_v1_PodSpec_To_api_PodSpec(in, out, s); err != nil { + return err + } + + // We support DeprecatedServiceAccount as an alias for ServiceAccountName. + // If both are specified, ServiceAccountName (the new field) wins. + if in.ServiceAccountName == "" { + out.ServiceAccountName = in.DeprecatedServiceAccount + } + + // the host namespace fields have to be handled specially for backward compatibility + // with v1.0.0 + if out.SecurityContext == nil { + out.SecurityContext = new(api.PodSecurityContext) + } + out.SecurityContext.HostNetwork = in.HostNetwork + out.SecurityContext.HostPID = in.HostPID + out.SecurityContext.HostIPC = in.HostIPC + + return nil +} + +func Convert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error { + if err := autoConvert_api_Pod_To_v1_Pod(in, out, s); err != nil { + return err + } + + // TODO: sometime after we move init container to stable, remove these conversions + if len(out.Spec.InitContainers) > 0 || len(out.Status.InitContainerStatuses) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + if len(out.Spec.InitContainers) > 0 { + value, err := json.Marshal(out.Spec.InitContainers) + if err != nil { + return err + } + out.Annotations[PodInitContainersAnnotationKey] = string(value) + out.Annotations[PodInitContainersBetaAnnotationKey] = string(value) + } + if len(out.Status.InitContainerStatuses) > 0 { + value, err := json.Marshal(out.Status.InitContainerStatuses) + if err != nil { + return err + } + out.Annotations[PodInitContainerStatusesAnnotationKey] = string(value) + out.Annotations[PodInitContainerStatusesBetaAnnotationKey] = string(value) + } + + // We need to reset certain fields for mirror pods from pre-v1.1 kubelet + // (#15960). + // TODO: Remove this code after we drop support for v1.0 kubelets. + if value, ok := in.Annotations[mirrorAnnotationKey]; ok && value == mirrorAnnotationValue_1_0 { + // Reset the TerminationGracePeriodSeconds. + out.Spec.TerminationGracePeriodSeconds = nil + // Reset the resource requests. + for i := range out.Spec.Containers { + out.Spec.Containers[i].Resources.Requests = nil + } + } + return nil +} + +func Convert_v1_Pod_To_api_Pod(in *Pod, out *api.Pod, s conversion.Scope) error { + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainersBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainersAnnotationKey] = valueBeta + } + // TODO: sometime after we move init container to stable, remove these conversions + // Move the annotation to the internal repr. field + if value, ok := in.Annotations[PodInitContainersAnnotationKey]; ok { + var values []Container + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Spec.InitContainers = values + } + // If there is a beta annotation, copy to alpha key. + // See commit log for PR #31026 for why we do this. + if valueBeta, okBeta := in.Annotations[PodInitContainerStatusesBetaAnnotationKey]; okBeta { + in.Annotations[PodInitContainerStatusesAnnotationKey] = valueBeta + } + if value, ok := in.Annotations[PodInitContainerStatusesAnnotationKey]; ok { + var values []ContainerStatus + if err := json.Unmarshal([]byte(value), &values); err != nil { + return err + } + // Conversion from external to internal version exists more to + // satisfy the needs of the decoder than it does to be a general + // purpose tool. And Decode always creates an intermediate object + // to decode to. Thus the caller of UnsafeConvertToVersion is + // taking responsibility to ensure mutation of in is not exposed + // back to the caller. + in.Status.InitContainerStatuses = values + } + + if err := autoConvert_v1_Pod_To_api_Pod(in, out, s); err != nil { + return err + } + if len(out.Annotations) > 0 { + old := out.Annotations + out.Annotations = make(map[string]string, len(old)) + for k, v := range old { + out.Annotations[k] = v + } + delete(out.Annotations, PodInitContainersAnnotationKey) + delete(out.Annotations, PodInitContainersBetaAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesAnnotationKey) + delete(out.Annotations, PodInitContainerStatusesBetaAnnotationKey) + } + return nil +} + +func Convert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *ServiceSpec, s conversion.Scope) error { + if err := autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in, out, s); err != nil { + return err + } + // Publish both externalIPs and deprecatedPublicIPs fields in v1. + out.DeprecatedPublicIPs = in.ExternalIPs + return nil +} + +func Convert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversion.Scope) error { + if err := autoConvert_v1_Secret_To_api_Secret(in, out, s); err != nil { + return err + } + + // StringData overwrites Data + if len(in.StringData) > 0 { + if out.Data == nil { + out.Data = map[string][]byte{} + } + for k, v := range in.StringData { + out.Data[k] = []byte(v) + } + } + + return nil +} + +func Convert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error { + if err := autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in, out, s); err != nil { + return err + } + // Prefer the legacy deprecatedPublicIPs field, if provided. + if len(in.DeprecatedPublicIPs) > 0 { + out.ExternalIPs = in.DeprecatedPublicIPs + } + return nil +} + +func Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error { + out.SupplementalGroups = in.SupplementalGroups + if in.SELinuxOptions != nil { + out.SELinuxOptions = new(SELinuxOptions) + if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.FSGroup = in.FSGroup + return nil +} + +func Convert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error { + out.SupplementalGroups = in.SupplementalGroups + if in.SELinuxOptions != nil { + out.SELinuxOptions = new(api.SELinuxOptions) + if err := Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in.SELinuxOptions, out.SELinuxOptions, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.FSGroup = in.FSGroup + return nil +} + +func Convert_v1_ResourceList_To_api_ResourceList(in *ResourceList, out *api.ResourceList, s conversion.Scope) error { + if *in == nil { + return nil + } + + if *out == nil { + *out = make(api.ResourceList, len(*in)) + } + for key, val := range *in { + // TODO(#18538): We round up resource values to milli scale to maintain API compatibility. + // In the future, we should instead reject values that need rounding. + const milliScale = -3 + val.RoundUp(milliScale) + + (*out)[api.ResourceName(key)] = val + } + return nil +} + +func AddFieldLabelConversionsForEvent(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Event", + func(label, value string) (string, string, error) { + switch label { + case "involvedObject.kind", + "involvedObject.namespace", + "involvedObject.name", + "involvedObject.uid", + "involvedObject.apiVersion", + "involvedObject.resourceVersion", + "involvedObject.fieldPath", + "reason", + "source", + "type", + "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} + +func AddFieldLabelConversionsForNamespace(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Namespace", + func(label, value string) (string, string, error) { + switch label { + case "status.phase", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} + +func AddFieldLabelConversionsForSecret(scheme *runtime.Scheme) error { + return scheme.AddFieldLabelConversionFunc("v1", "Secret", + func(label, value string) (string, string, error) { + switch label { + case "type", + "metadata.namespace", + "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/defaults.go new file mode 100644 index 0000000000..3864516ff6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/defaults.go @@ -0,0 +1,336 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util" + "k8s.io/client-go/1.5/pkg/util/intstr" + "k8s.io/client-go/1.5/pkg/util/parsers" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_PodExecOptions, + SetDefaults_PodAttachOptions, + SetDefaults_ReplicationController, + SetDefaults_Volume, + SetDefaults_ContainerPort, + SetDefaults_Container, + SetDefaults_ServiceSpec, + SetDefaults_Pod, + SetDefaults_PodSpec, + SetDefaults_Probe, + SetDefaults_SecretVolumeSource, + SetDefaults_ConfigMapVolumeSource, + SetDefaults_DownwardAPIVolumeSource, + SetDefaults_Secret, + SetDefaults_PersistentVolume, + SetDefaults_PersistentVolumeClaim, + SetDefaults_ISCSIVolumeSource, + SetDefaults_Endpoints, + SetDefaults_HTTPGetAction, + SetDefaults_NamespaceStatus, + SetDefaults_Node, + SetDefaults_NodeStatus, + SetDefaults_ObjectFieldSelector, + SetDefaults_LimitRangeItem, + SetDefaults_ConfigMap, + SetDefaults_RBDVolumeSource, + ) +} + +func SetDefaults_PodExecOptions(obj *PodExecOptions) { + obj.Stdout = true + obj.Stderr = true +} +func SetDefaults_PodAttachOptions(obj *PodAttachOptions) { + obj.Stdout = true + obj.Stderr = true +} +func SetDefaults_ReplicationController(obj *ReplicationController) { + var labels map[string]string + if obj.Spec.Template != nil { + labels = obj.Spec.Template.Labels + } + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if len(obj.Spec.Selector) == 0 { + obj.Spec.Selector = labels + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } +} +func SetDefaults_Volume(obj *Volume) { + if util.AllPtrFieldsNil(&obj.VolumeSource) { + obj.VolumeSource = VolumeSource{ + EmptyDir: &EmptyDirVolumeSource{}, + } + } +} +func SetDefaults_ContainerPort(obj *ContainerPort) { + if obj.Protocol == "" { + obj.Protocol = ProtocolTCP + } +} +func SetDefaults_Container(obj *Container) { + if obj.ImagePullPolicy == "" { + // Ignore error and assume it has been validated elsewhere + _, tag, _, _ := parsers.ParseImageName(obj.Image) + + // Check image tag + + if tag == "latest" { + obj.ImagePullPolicy = PullAlways + } else { + obj.ImagePullPolicy = PullIfNotPresent + } + } + if obj.TerminationMessagePath == "" { + obj.TerminationMessagePath = TerminationMessagePathDefault + } +} +func SetDefaults_ServiceSpec(obj *ServiceSpec) { + if obj.SessionAffinity == "" { + obj.SessionAffinity = ServiceAffinityNone + } + if obj.Type == "" { + obj.Type = ServiceTypeClusterIP + } + for i := range obj.Ports { + sp := &obj.Ports[i] + if sp.Protocol == "" { + sp.Protocol = ProtocolTCP + } + if sp.TargetPort == intstr.FromInt(0) || sp.TargetPort == intstr.FromString("") { + sp.TargetPort = intstr.FromInt(int(sp.Port)) + } + } +} +func SetDefaults_Pod(obj *Pod) { + // If limits are specified, but requests are not, default requests to limits + // This is done here rather than a more specific defaulting pass on ResourceRequirements + // because we only want this defaulting semantic to take place on a Pod and not a PodTemplate + for i := range obj.Spec.Containers { + // set requests to limits if requests are not specified, but limits are + if obj.Spec.Containers[i].Resources.Limits != nil { + if obj.Spec.Containers[i].Resources.Requests == nil { + obj.Spec.Containers[i].Resources.Requests = make(ResourceList) + } + for key, value := range obj.Spec.Containers[i].Resources.Limits { + if _, exists := obj.Spec.Containers[i].Resources.Requests[key]; !exists { + obj.Spec.Containers[i].Resources.Requests[key] = *(value.Copy()) + } + } + } + } +} +func SetDefaults_PodSpec(obj *PodSpec) { + if obj.DNSPolicy == "" { + obj.DNSPolicy = DNSClusterFirst + } + if obj.RestartPolicy == "" { + obj.RestartPolicy = RestartPolicyAlways + } + if obj.HostNetwork { + defaultHostNetworkPorts(&obj.Containers) + } + if obj.SecurityContext == nil { + obj.SecurityContext = &PodSecurityContext{} + } + if obj.TerminationGracePeriodSeconds == nil { + period := int64(DefaultTerminationGracePeriodSeconds) + obj.TerminationGracePeriodSeconds = &period + } +} +func SetDefaults_Probe(obj *Probe) { + if obj.TimeoutSeconds == 0 { + obj.TimeoutSeconds = 1 + } + if obj.PeriodSeconds == 0 { + obj.PeriodSeconds = 10 + } + if obj.SuccessThreshold == 0 { + obj.SuccessThreshold = 1 + } + if obj.FailureThreshold == 0 { + obj.FailureThreshold = 3 + } +} +func SetDefaults_SecretVolumeSource(obj *SecretVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(SecretVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_ConfigMapVolumeSource(obj *ConfigMapVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(ConfigMapVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_DownwardAPIVolumeSource(obj *DownwardAPIVolumeSource) { + if obj.DefaultMode == nil { + perm := int32(DownwardAPIVolumeSourceDefaultMode) + obj.DefaultMode = &perm + } +} +func SetDefaults_Secret(obj *Secret) { + if obj.Type == "" { + obj.Type = SecretTypeOpaque + } +} +func SetDefaults_PersistentVolume(obj *PersistentVolume) { + if obj.Status.Phase == "" { + obj.Status.Phase = VolumePending + } + if obj.Spec.PersistentVolumeReclaimPolicy == "" { + obj.Spec.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimRetain + } +} +func SetDefaults_PersistentVolumeClaim(obj *PersistentVolumeClaim) { + if obj.Status.Phase == "" { + obj.Status.Phase = ClaimPending + } +} +func SetDefaults_ISCSIVolumeSource(obj *ISCSIVolumeSource) { + if obj.ISCSIInterface == "" { + obj.ISCSIInterface = "default" + } +} +func SetDefaults_AzureDiskVolumeSource(obj *AzureDiskVolumeSource) { + if obj.CachingMode == nil { + obj.CachingMode = new(AzureDataDiskCachingMode) + *obj.CachingMode = AzureDataDiskCachingNone + } + if obj.FSType == nil { + obj.FSType = new(string) + *obj.FSType = "ext4" + } + if obj.ReadOnly == nil { + obj.ReadOnly = new(bool) + *obj.ReadOnly = false + } +} +func SetDefaults_Endpoints(obj *Endpoints) { + for i := range obj.Subsets { + ss := &obj.Subsets[i] + for i := range ss.Ports { + ep := &ss.Ports[i] + if ep.Protocol == "" { + ep.Protocol = ProtocolTCP + } + } + } +} +func SetDefaults_HTTPGetAction(obj *HTTPGetAction) { + if obj.Path == "" { + obj.Path = "/" + } + if obj.Scheme == "" { + obj.Scheme = URISchemeHTTP + } +} +func SetDefaults_NamespaceStatus(obj *NamespaceStatus) { + if obj.Phase == "" { + obj.Phase = NamespaceActive + } +} +func SetDefaults_Node(obj *Node) { + if obj.Spec.ExternalID == "" { + obj.Spec.ExternalID = obj.Name + } +} +func SetDefaults_NodeStatus(obj *NodeStatus) { + if obj.Allocatable == nil && obj.Capacity != nil { + obj.Allocatable = make(ResourceList, len(obj.Capacity)) + for key, value := range obj.Capacity { + obj.Allocatable[key] = *(value.Copy()) + } + obj.Allocatable = obj.Capacity + } +} +func SetDefaults_ObjectFieldSelector(obj *ObjectFieldSelector) { + if obj.APIVersion == "" { + obj.APIVersion = "v1" + } +} +func SetDefaults_LimitRangeItem(obj *LimitRangeItem) { + // for container limits, we apply default values + if obj.Type == LimitTypeContainer { + + if obj.Default == nil { + obj.Default = make(ResourceList) + } + if obj.DefaultRequest == nil { + obj.DefaultRequest = make(ResourceList) + } + + // If a default limit is unspecified, but the max is specified, default the limit to the max + for key, value := range obj.Max { + if _, exists := obj.Default[key]; !exists { + obj.Default[key] = *(value.Copy()) + } + } + // If a default limit is specified, but the default request is not, default request to limit + for key, value := range obj.Default { + if _, exists := obj.DefaultRequest[key]; !exists { + obj.DefaultRequest[key] = *(value.Copy()) + } + } + // If a default request is not specified, but the min is provided, default request to the min + for key, value := range obj.Min { + if _, exists := obj.DefaultRequest[key]; !exists { + obj.DefaultRequest[key] = *(value.Copy()) + } + } + } +} +func SetDefaults_ConfigMap(obj *ConfigMap) { + if obj.Data == nil { + obj.Data = make(map[string]string) + } +} + +// With host networking default all container ports to host ports. +func defaultHostNetworkPorts(containers *[]Container) { + for i := range *containers { + for j := range (*containers)[i].Ports { + if (*containers)[i].Ports[j].HostPort == 0 { + (*containers)[i].Ports[j].HostPort = (*containers)[i].Ports[j].ContainerPort + } + } + } +} + +func SetDefaults_RBDVolumeSource(obj *RBDVolumeSource) { + if obj.RBDPool == "" { + obj.RBDPool = "rbd" + } + if obj.RadosUser == "" { + obj.RadosUser = "admin" + } + if obj.Keyring == "" { + obj.Keyring = "/etc/ceph/keyring" + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/doc.go new file mode 100644 index 0000000000..16aa549cba --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/api +// +k8s:openapi-gen=true + +// Package v1 is the v1 version of the API. +package v1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.pb.go new file mode 100644 index 0000000000..44c55edd4c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.pb.go @@ -0,0 +1,39094 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/api/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/api/v1/generated.proto + + It has these top-level messages: + AWSElasticBlockStoreVolumeSource + Affinity + AttachedVolume + AvoidPods + AzureDiskVolumeSource + AzureFileVolumeSource + Binding + Capabilities + CephFSVolumeSource + CinderVolumeSource + ComponentCondition + ComponentStatus + ComponentStatusList + ConfigMap + ConfigMapKeySelector + ConfigMapList + ConfigMapVolumeSource + Container + ContainerImage + ContainerPort + ContainerState + ContainerStateRunning + ContainerStateTerminated + ContainerStateWaiting + ContainerStatus + DaemonEndpoint + DeleteOptions + DownwardAPIVolumeFile + DownwardAPIVolumeSource + EmptyDirVolumeSource + EndpointAddress + EndpointPort + EndpointSubset + Endpoints + EndpointsList + EnvVar + EnvVarSource + Event + EventList + EventSource + ExecAction + ExportOptions + FCVolumeSource + FlexVolumeSource + FlockerVolumeSource + GCEPersistentDiskVolumeSource + GitRepoVolumeSource + GlusterfsVolumeSource + HTTPGetAction + HTTPHeader + Handler + HostPathVolumeSource + ISCSIVolumeSource + KeyToPath + Lifecycle + LimitRange + LimitRangeItem + LimitRangeList + LimitRangeSpec + List + ListOptions + LoadBalancerIngress + LoadBalancerStatus + LocalObjectReference + NFSVolumeSource + Namespace + NamespaceList + NamespaceSpec + NamespaceStatus + Node + NodeAddress + NodeAffinity + NodeCondition + NodeDaemonEndpoints + NodeList + NodeProxyOptions + NodeSelector + NodeSelectorRequirement + NodeSelectorTerm + NodeSpec + NodeStatus + NodeSystemInfo + ObjectFieldSelector + ObjectMeta + ObjectReference + OwnerReference + PersistentVolume + PersistentVolumeClaim + PersistentVolumeClaimList + PersistentVolumeClaimSpec + PersistentVolumeClaimStatus + PersistentVolumeClaimVolumeSource + PersistentVolumeList + PersistentVolumeSource + PersistentVolumeSpec + PersistentVolumeStatus + Pod + PodAffinity + PodAffinityTerm + PodAntiAffinity + PodAttachOptions + PodCondition + PodExecOptions + PodList + PodLogOptions + PodProxyOptions + PodSecurityContext + PodSignature + PodSpec + PodStatus + PodStatusResult + PodTemplate + PodTemplateList + PodTemplateSpec + Preconditions + PreferAvoidPodsEntry + PreferredSchedulingTerm + Probe + QuobyteVolumeSource + RBDVolumeSource + RangeAllocation + ReplicationController + ReplicationControllerList + ReplicationControllerSpec + ReplicationControllerStatus + ResourceFieldSelector + ResourceQuota + ResourceQuotaList + ResourceQuotaSpec + ResourceQuotaStatus + ResourceRequirements + SELinuxOptions + Secret + SecretKeySelector + SecretList + SecretVolumeSource + SecurityContext + SerializedReference + Service + ServiceAccount + ServiceAccountList + ServiceList + ServicePort + ServiceProxyOptions + ServiceSpec + ServiceStatus + TCPSocketAction + Taint + Toleration + Volume + VolumeMount + VolumeSource + VsphereVirtualDiskVolumeSource + WeightedPodAffinityTerm +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_resource "k8s.io/client-go/1.5/pkg/api/resource" +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_runtime "k8s.io/client-go/1.5/pkg/runtime" + +import k8s_io_kubernetes_pkg_types "k8s.io/client-go/1.5/pkg/types" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *AWSElasticBlockStoreVolumeSource) Reset() { *m = AWSElasticBlockStoreVolumeSource{} } +func (*AWSElasticBlockStoreVolumeSource) ProtoMessage() {} +func (*AWSElasticBlockStoreVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *Affinity) Reset() { *m = Affinity{} } +func (*Affinity) ProtoMessage() {} +func (*Affinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *AttachedVolume) Reset() { *m = AttachedVolume{} } +func (*AttachedVolume) ProtoMessage() {} +func (*AttachedVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *AvoidPods) Reset() { *m = AvoidPods{} } +func (*AvoidPods) ProtoMessage() {} +func (*AvoidPods) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *AzureDiskVolumeSource) Reset() { *m = AzureDiskVolumeSource{} } +func (*AzureDiskVolumeSource) ProtoMessage() {} +func (*AzureDiskVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *AzureFileVolumeSource) Reset() { *m = AzureFileVolumeSource{} } +func (*AzureFileVolumeSource) ProtoMessage() {} +func (*AzureFileVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *Binding) Reset() { *m = Binding{} } +func (*Binding) ProtoMessage() {} +func (*Binding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *Capabilities) Reset() { *m = Capabilities{} } +func (*Capabilities) ProtoMessage() {} +func (*Capabilities) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *CephFSVolumeSource) Reset() { *m = CephFSVolumeSource{} } +func (*CephFSVolumeSource) ProtoMessage() {} +func (*CephFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *CinderVolumeSource) Reset() { *m = CinderVolumeSource{} } +func (*CinderVolumeSource) ProtoMessage() {} +func (*CinderVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *ComponentCondition) Reset() { *m = ComponentCondition{} } +func (*ComponentCondition) ProtoMessage() {} +func (*ComponentCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *ComponentStatus) Reset() { *m = ComponentStatus{} } +func (*ComponentStatus) ProtoMessage() {} +func (*ComponentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ComponentStatusList) Reset() { *m = ComponentStatusList{} } +func (*ComponentStatusList) ProtoMessage() {} +func (*ComponentStatusList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *ConfigMap) Reset() { *m = ConfigMap{} } +func (*ConfigMap) ProtoMessage() {} +func (*ConfigMap) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *ConfigMapKeySelector) Reset() { *m = ConfigMapKeySelector{} } +func (*ConfigMapKeySelector) ProtoMessage() {} +func (*ConfigMapKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *ConfigMapList) Reset() { *m = ConfigMapList{} } +func (*ConfigMapList) ProtoMessage() {} +func (*ConfigMapList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ConfigMapVolumeSource) Reset() { *m = ConfigMapVolumeSource{} } +func (*ConfigMapVolumeSource) ProtoMessage() {} +func (*ConfigMapVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *Container) Reset() { *m = Container{} } +func (*Container) ProtoMessage() {} +func (*Container) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *ContainerImage) Reset() { *m = ContainerImage{} } +func (*ContainerImage) ProtoMessage() {} +func (*ContainerImage) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *ContainerPort) Reset() { *m = ContainerPort{} } +func (*ContainerPort) ProtoMessage() {} +func (*ContainerPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *ContainerState) Reset() { *m = ContainerState{} } +func (*ContainerState) ProtoMessage() {} +func (*ContainerState) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{20} } + +func (m *ContainerStateRunning) Reset() { *m = ContainerStateRunning{} } +func (*ContainerStateRunning) ProtoMessage() {} +func (*ContainerStateRunning) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{21} } + +func (m *ContainerStateTerminated) Reset() { *m = ContainerStateTerminated{} } +func (*ContainerStateTerminated) ProtoMessage() {} +func (*ContainerStateTerminated) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{22} +} + +func (m *ContainerStateWaiting) Reset() { *m = ContainerStateWaiting{} } +func (*ContainerStateWaiting) ProtoMessage() {} +func (*ContainerStateWaiting) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{23} } + +func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } +func (*ContainerStatus) ProtoMessage() {} +func (*ContainerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *DaemonEndpoint) Reset() { *m = DaemonEndpoint{} } +func (*DaemonEndpoint) ProtoMessage() {} +func (*DaemonEndpoint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *DeleteOptions) Reset() { *m = DeleteOptions{} } +func (*DeleteOptions) ProtoMessage() {} +func (*DeleteOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *DownwardAPIVolumeFile) Reset() { *m = DownwardAPIVolumeFile{} } +func (*DownwardAPIVolumeFile) ProtoMessage() {} +func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *DownwardAPIVolumeSource) Reset() { *m = DownwardAPIVolumeSource{} } +func (*DownwardAPIVolumeSource) ProtoMessage() {} +func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{28} +} + +func (m *EmptyDirVolumeSource) Reset() { *m = EmptyDirVolumeSource{} } +func (*EmptyDirVolumeSource) ProtoMessage() {} +func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *EndpointAddress) Reset() { *m = EndpointAddress{} } +func (*EndpointAddress) ProtoMessage() {} +func (*EndpointAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *EndpointPort) Reset() { *m = EndpointPort{} } +func (*EndpointPort) ProtoMessage() {} +func (*EndpointPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } + +func (m *EndpointSubset) Reset() { *m = EndpointSubset{} } +func (*EndpointSubset) ProtoMessage() {} +func (*EndpointSubset) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *Endpoints) Reset() { *m = Endpoints{} } +func (*Endpoints) ProtoMessage() {} +func (*Endpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *EndpointsList) Reset() { *m = EndpointsList{} } +func (*EndpointsList) ProtoMessage() {} +func (*EndpointsList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } + +func (m *EnvVar) Reset() { *m = EnvVar{} } +func (*EnvVar) ProtoMessage() {} +func (*EnvVar) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *EnvVarSource) Reset() { *m = EnvVarSource{} } +func (*EnvVarSource) ProtoMessage() {} +func (*EnvVarSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *Event) Reset() { *m = Event{} } +func (*Event) ProtoMessage() {} +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *EventList) Reset() { *m = EventList{} } +func (*EventList) ProtoMessage() {} +func (*EventList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *EventSource) Reset() { *m = EventSource{} } +func (*EventSource) ProtoMessage() {} +func (*EventSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *ExecAction) Reset() { *m = ExecAction{} } +func (*ExecAction) ProtoMessage() {} +func (*ExecAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{40} } + +func (m *ExportOptions) Reset() { *m = ExportOptions{} } +func (*ExportOptions) ProtoMessage() {} +func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *FCVolumeSource) Reset() { *m = FCVolumeSource{} } +func (*FCVolumeSource) ProtoMessage() {} +func (*FCVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *FlexVolumeSource) Reset() { *m = FlexVolumeSource{} } +func (*FlexVolumeSource) ProtoMessage() {} +func (*FlexVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{43} } + +func (m *FlockerVolumeSource) Reset() { *m = FlockerVolumeSource{} } +func (*FlockerVolumeSource) ProtoMessage() {} +func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } + +func (m *GCEPersistentDiskVolumeSource) Reset() { *m = GCEPersistentDiskVolumeSource{} } +func (*GCEPersistentDiskVolumeSource) ProtoMessage() {} +func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{45} +} + +func (m *GitRepoVolumeSource) Reset() { *m = GitRepoVolumeSource{} } +func (*GitRepoVolumeSource) ProtoMessage() {} +func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *GlusterfsVolumeSource) Reset() { *m = GlusterfsVolumeSource{} } +func (*GlusterfsVolumeSource) ProtoMessage() {} +func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } + +func (m *HTTPGetAction) Reset() { *m = HTTPGetAction{} } +func (*HTTPGetAction) ProtoMessage() {} +func (*HTTPGetAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } + +func (m *HTTPHeader) Reset() { *m = HTTPHeader{} } +func (*HTTPHeader) ProtoMessage() {} +func (*HTTPHeader) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *Handler) Reset() { *m = Handler{} } +func (*Handler) ProtoMessage() {} +func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } + +func (m *HostPathVolumeSource) Reset() { *m = HostPathVolumeSource{} } +func (*HostPathVolumeSource) ProtoMessage() {} +func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{51} } + +func (m *ISCSIVolumeSource) Reset() { *m = ISCSIVolumeSource{} } +func (*ISCSIVolumeSource) ProtoMessage() {} +func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *KeyToPath) Reset() { *m = KeyToPath{} } +func (*KeyToPath) ProtoMessage() {} +func (*KeyToPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } + +func (m *Lifecycle) Reset() { *m = Lifecycle{} } +func (*Lifecycle) ProtoMessage() {} +func (*Lifecycle) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *LimitRange) Reset() { *m = LimitRange{} } +func (*LimitRange) ProtoMessage() {} +func (*LimitRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{55} } + +func (m *LimitRangeItem) Reset() { *m = LimitRangeItem{} } +func (*LimitRangeItem) ProtoMessage() {} +func (*LimitRangeItem) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } + +func (m *LimitRangeList) Reset() { *m = LimitRangeList{} } +func (*LimitRangeList) ProtoMessage() {} +func (*LimitRangeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{57} } + +func (m *LimitRangeSpec) Reset() { *m = LimitRangeSpec{} } +func (*LimitRangeSpec) ProtoMessage() {} +func (*LimitRangeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{58} } + +func (m *List) Reset() { *m = List{} } +func (*List) ProtoMessage() {} +func (*List) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } + +func (m *ListOptions) Reset() { *m = ListOptions{} } +func (*ListOptions) ProtoMessage() {} +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } + +func (m *LoadBalancerIngress) Reset() { *m = LoadBalancerIngress{} } +func (*LoadBalancerIngress) ProtoMessage() {} +func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } + +func (m *LoadBalancerStatus) Reset() { *m = LoadBalancerStatus{} } +func (*LoadBalancerStatus) ProtoMessage() {} +func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } + +func (m *LocalObjectReference) Reset() { *m = LocalObjectReference{} } +func (*LocalObjectReference) ProtoMessage() {} +func (*LocalObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } + +func (m *NFSVolumeSource) Reset() { *m = NFSVolumeSource{} } +func (*NFSVolumeSource) ProtoMessage() {} +func (*NFSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{64} } + +func (m *Namespace) Reset() { *m = Namespace{} } +func (*Namespace) ProtoMessage() {} +func (*Namespace) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } + +func (m *NamespaceList) Reset() { *m = NamespaceList{} } +func (*NamespaceList) ProtoMessage() {} +func (*NamespaceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } + +func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } +func (*NamespaceSpec) ProtoMessage() {} +func (*NamespaceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{67} } + +func (m *NamespaceStatus) Reset() { *m = NamespaceStatus{} } +func (*NamespaceStatus) ProtoMessage() {} +func (*NamespaceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } + +func (m *Node) Reset() { *m = Node{} } +func (*Node) ProtoMessage() {} +func (*Node) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{69} } + +func (m *NodeAddress) Reset() { *m = NodeAddress{} } +func (*NodeAddress) ProtoMessage() {} +func (*NodeAddress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{70} } + +func (m *NodeAffinity) Reset() { *m = NodeAffinity{} } +func (*NodeAffinity) ProtoMessage() {} +func (*NodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{71} } + +func (m *NodeCondition) Reset() { *m = NodeCondition{} } +func (*NodeCondition) ProtoMessage() {} +func (*NodeCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{72} } + +func (m *NodeDaemonEndpoints) Reset() { *m = NodeDaemonEndpoints{} } +func (*NodeDaemonEndpoints) ProtoMessage() {} +func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{73} } + +func (m *NodeList) Reset() { *m = NodeList{} } +func (*NodeList) ProtoMessage() {} +func (*NodeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{74} } + +func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} } +func (*NodeProxyOptions) ProtoMessage() {} +func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } + +func (m *NodeSelector) Reset() { *m = NodeSelector{} } +func (*NodeSelector) ProtoMessage() {} +func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } + +func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } +func (*NodeSelectorRequirement) ProtoMessage() {} +func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{77} +} + +func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } +func (*NodeSelectorTerm) ProtoMessage() {} +func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } + +func (m *NodeSpec) Reset() { *m = NodeSpec{} } +func (*NodeSpec) ProtoMessage() {} +func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } + +func (m *NodeStatus) Reset() { *m = NodeStatus{} } +func (*NodeStatus) ProtoMessage() {} +func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } + +func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } +func (*NodeSystemInfo) ProtoMessage() {} +func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } + +func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } +func (*ObjectFieldSelector) ProtoMessage() {} +func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } + +func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } +func (*ObjectMeta) ProtoMessage() {} +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } + +func (m *ObjectReference) Reset() { *m = ObjectReference{} } +func (*ObjectReference) ProtoMessage() {} +func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } + +func (m *OwnerReference) Reset() { *m = OwnerReference{} } +func (*OwnerReference) ProtoMessage() {} +func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } + +func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } +func (*PersistentVolume) ProtoMessage() {} +func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } + +func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } +func (*PersistentVolumeClaim) ProtoMessage() {} +func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{87} } + +func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } +func (*PersistentVolumeClaimList) ProtoMessage() {} +func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{88} +} + +func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } +func (*PersistentVolumeClaimSpec) ProtoMessage() {} +func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{89} +} + +func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } +func (*PersistentVolumeClaimStatus) ProtoMessage() {} +func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{90} +} + +func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } +func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} +func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{91} +} + +func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } +func (*PersistentVolumeList) ProtoMessage() {} +func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } + +func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } +func (*PersistentVolumeSource) ProtoMessage() {} +func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } + +func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } +func (*PersistentVolumeSpec) ProtoMessage() {} +func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } + +func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } +func (*PersistentVolumeStatus) ProtoMessage() {} +func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } + +func (m *Pod) Reset() { *m = Pod{} } +func (*Pod) ProtoMessage() {} +func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{96} } + +func (m *PodAffinity) Reset() { *m = PodAffinity{} } +func (*PodAffinity) ProtoMessage() {} +func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{97} } + +func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } +func (*PodAffinityTerm) ProtoMessage() {} +func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{98} } + +func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } +func (*PodAntiAffinity) ProtoMessage() {} +func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{99} } + +func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } +func (*PodAttachOptions) ProtoMessage() {} +func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{100} } + +func (m *PodCondition) Reset() { *m = PodCondition{} } +func (*PodCondition) ProtoMessage() {} +func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{101} } + +func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } +func (*PodExecOptions) ProtoMessage() {} +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } + +func (m *PodList) Reset() { *m = PodList{} } +func (*PodList) ProtoMessage() {} +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{103} } + +func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } +func (*PodLogOptions) ProtoMessage() {} +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{104} } + +func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } +func (*PodProxyOptions) ProtoMessage() {} +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{105} } + +func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } +func (*PodSecurityContext) ProtoMessage() {} +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } + +func (m *PodSignature) Reset() { *m = PodSignature{} } +func (*PodSignature) ProtoMessage() {} +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } + +func (m *PodSpec) Reset() { *m = PodSpec{} } +func (*PodSpec) ProtoMessage() {} +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } + +func (m *PodStatus) Reset() { *m = PodStatus{} } +func (*PodStatus) ProtoMessage() {} +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } + +func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } +func (*PodStatusResult) ProtoMessage() {} +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } + +func (m *PodTemplate) Reset() { *m = PodTemplate{} } +func (*PodTemplate) ProtoMessage() {} +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } + +func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } +func (*PodTemplateList) ProtoMessage() {} +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } + +func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } +func (*PodTemplateSpec) ProtoMessage() {} +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } + +func (m *Preconditions) Reset() { *m = Preconditions{} } +func (*Preconditions) ProtoMessage() {} +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } + +func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } +func (*PreferAvoidPodsEntry) ProtoMessage() {} +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } + +func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } +func (*PreferredSchedulingTerm) ProtoMessage() {} +func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{116} +} + +func (m *Probe) Reset() { *m = Probe{} } +func (*Probe) ProtoMessage() {} +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } + +func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } +func (*QuobyteVolumeSource) ProtoMessage() {} +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } + +func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } +func (*RBDVolumeSource) ProtoMessage() {} +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } + +func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } +func (*RangeAllocation) ProtoMessage() {} +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } + +func (m *ReplicationController) Reset() { *m = ReplicationController{} } +func (*ReplicationController) ProtoMessage() {} +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } + +func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } +func (*ReplicationControllerList) ProtoMessage() {} +func (*ReplicationControllerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{122} +} + +func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } +func (*ReplicationControllerSpec) ProtoMessage() {} +func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{123} +} + +func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } +func (*ReplicationControllerStatus) ProtoMessage() {} +func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{124} +} + +func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } +func (*ResourceFieldSelector) ProtoMessage() {} +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{125} } + +func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } +func (*ResourceQuota) ProtoMessage() {} +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{126} } + +func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } +func (*ResourceQuotaList) ProtoMessage() {} +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } + +func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } +func (*ResourceQuotaSpec) ProtoMessage() {} +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } + +func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } +func (*ResourceQuotaStatus) ProtoMessage() {} +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } + +func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } +func (*ResourceRequirements) ProtoMessage() {} +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } + +func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } +func (*SELinuxOptions) ProtoMessage() {} +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } + +func (m *Secret) Reset() { *m = Secret{} } +func (*Secret) ProtoMessage() {} +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } + +func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } +func (*SecretKeySelector) ProtoMessage() {} +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } + +func (m *SecretList) Reset() { *m = SecretList{} } +func (*SecretList) ProtoMessage() {} +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } + +func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } +func (*SecretVolumeSource) ProtoMessage() {} +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } + +func (m *SecurityContext) Reset() { *m = SecurityContext{} } +func (*SecurityContext) ProtoMessage() {} +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } + +func (m *SerializedReference) Reset() { *m = SerializedReference{} } +func (*SerializedReference) ProtoMessage() {} +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{137} } + +func (m *Service) Reset() { *m = Service{} } +func (*Service) ProtoMessage() {} +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } + +func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } +func (*ServiceAccount) ProtoMessage() {} +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } + +func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } +func (*ServiceAccountList) ProtoMessage() {} +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } + +func (m *ServiceList) Reset() { *m = ServiceList{} } +func (*ServiceList) ProtoMessage() {} +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } + +func (m *ServicePort) Reset() { *m = ServicePort{} } +func (*ServicePort) ProtoMessage() {} +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } + +func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } +func (*ServiceProxyOptions) ProtoMessage() {} +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } + +func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } +func (*ServiceSpec) ProtoMessage() {} +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } + +func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } +func (*ServiceStatus) ProtoMessage() {} +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } + +func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } +func (*TCPSocketAction) ProtoMessage() {} +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } + +func (m *Taint) Reset() { *m = Taint{} } +func (*Taint) ProtoMessage() {} +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } + +func (m *Toleration) Reset() { *m = Toleration{} } +func (*Toleration) ProtoMessage() {} +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } + +func (m *Volume) Reset() { *m = Volume{} } +func (*Volume) ProtoMessage() {} +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } + +func (m *VolumeMount) Reset() { *m = VolumeMount{} } +func (*VolumeMount) ProtoMessage() {} +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } + +func (m *VolumeSource) Reset() { *m = VolumeSource{} } +func (*VolumeSource) ProtoMessage() {} +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } + +func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } +func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} +func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{152} +} + +func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } +func (*WeightedPodAffinityTerm) ProtoMessage() {} +func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{153} +} + +func init() { + proto.RegisterType((*AWSElasticBlockStoreVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.AWSElasticBlockStoreVolumeSource") + proto.RegisterType((*Affinity)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Affinity") + proto.RegisterType((*AttachedVolume)(nil), "k8s.io.client-go.1.5.pkg.api.v1.AttachedVolume") + proto.RegisterType((*AvoidPods)(nil), "k8s.io.client-go.1.5.pkg.api.v1.AvoidPods") + proto.RegisterType((*AzureDiskVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.AzureDiskVolumeSource") + proto.RegisterType((*AzureFileVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.AzureFileVolumeSource") + proto.RegisterType((*Binding)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Binding") + proto.RegisterType((*Capabilities)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Capabilities") + proto.RegisterType((*CephFSVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.CephFSVolumeSource") + proto.RegisterType((*CinderVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.CinderVolumeSource") + proto.RegisterType((*ComponentCondition)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ComponentCondition") + proto.RegisterType((*ComponentStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ComponentStatus") + proto.RegisterType((*ComponentStatusList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ComponentStatusList") + proto.RegisterType((*ConfigMap)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ConfigMap") + proto.RegisterType((*ConfigMapKeySelector)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ConfigMapKeySelector") + proto.RegisterType((*ConfigMapList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ConfigMapList") + proto.RegisterType((*ConfigMapVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ConfigMapVolumeSource") + proto.RegisterType((*Container)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Container") + proto.RegisterType((*ContainerImage)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerImage") + proto.RegisterType((*ContainerPort)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerPort") + proto.RegisterType((*ContainerState)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerState") + proto.RegisterType((*ContainerStateRunning)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerStateRunning") + proto.RegisterType((*ContainerStateTerminated)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerStateTerminated") + proto.RegisterType((*ContainerStateWaiting)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerStateWaiting") + proto.RegisterType((*ContainerStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ContainerStatus") + proto.RegisterType((*DaemonEndpoint)(nil), "k8s.io.client-go.1.5.pkg.api.v1.DaemonEndpoint") + proto.RegisterType((*DeleteOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.DeleteOptions") + proto.RegisterType((*DownwardAPIVolumeFile)(nil), "k8s.io.client-go.1.5.pkg.api.v1.DownwardAPIVolumeFile") + proto.RegisterType((*DownwardAPIVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.DownwardAPIVolumeSource") + proto.RegisterType((*EmptyDirVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EmptyDirVolumeSource") + proto.RegisterType((*EndpointAddress)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EndpointAddress") + proto.RegisterType((*EndpointPort)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EndpointPort") + proto.RegisterType((*EndpointSubset)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EndpointSubset") + proto.RegisterType((*Endpoints)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Endpoints") + proto.RegisterType((*EndpointsList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EndpointsList") + proto.RegisterType((*EnvVar)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EnvVar") + proto.RegisterType((*EnvVarSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EnvVarSource") + proto.RegisterType((*Event)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Event") + proto.RegisterType((*EventList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EventList") + proto.RegisterType((*EventSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.EventSource") + proto.RegisterType((*ExecAction)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ExecAction") + proto.RegisterType((*ExportOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ExportOptions") + proto.RegisterType((*FCVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.FCVolumeSource") + proto.RegisterType((*FlexVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.FlexVolumeSource") + proto.RegisterType((*FlockerVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.FlockerVolumeSource") + proto.RegisterType((*GCEPersistentDiskVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.GCEPersistentDiskVolumeSource") + proto.RegisterType((*GitRepoVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.GitRepoVolumeSource") + proto.RegisterType((*GlusterfsVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.GlusterfsVolumeSource") + proto.RegisterType((*HTTPGetAction)(nil), "k8s.io.client-go.1.5.pkg.api.v1.HTTPGetAction") + proto.RegisterType((*HTTPHeader)(nil), "k8s.io.client-go.1.5.pkg.api.v1.HTTPHeader") + proto.RegisterType((*Handler)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Handler") + proto.RegisterType((*HostPathVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.HostPathVolumeSource") + proto.RegisterType((*ISCSIVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ISCSIVolumeSource") + proto.RegisterType((*KeyToPath)(nil), "k8s.io.client-go.1.5.pkg.api.v1.KeyToPath") + proto.RegisterType((*Lifecycle)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Lifecycle") + proto.RegisterType((*LimitRange)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LimitRange") + proto.RegisterType((*LimitRangeItem)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LimitRangeItem") + proto.RegisterType((*LimitRangeList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LimitRangeList") + proto.RegisterType((*LimitRangeSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LimitRangeSpec") + proto.RegisterType((*List)(nil), "k8s.io.client-go.1.5.pkg.api.v1.List") + proto.RegisterType((*ListOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ListOptions") + proto.RegisterType((*LoadBalancerIngress)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LoadBalancerIngress") + proto.RegisterType((*LoadBalancerStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LoadBalancerStatus") + proto.RegisterType((*LocalObjectReference)(nil), "k8s.io.client-go.1.5.pkg.api.v1.LocalObjectReference") + proto.RegisterType((*NFSVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NFSVolumeSource") + proto.RegisterType((*Namespace)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Namespace") + proto.RegisterType((*NamespaceList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NamespaceList") + proto.RegisterType((*NamespaceSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NamespaceSpec") + proto.RegisterType((*NamespaceStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NamespaceStatus") + proto.RegisterType((*Node)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Node") + proto.RegisterType((*NodeAddress)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeAddress") + proto.RegisterType((*NodeAffinity)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeAffinity") + proto.RegisterType((*NodeCondition)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeCondition") + proto.RegisterType((*NodeDaemonEndpoints)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeDaemonEndpoints") + proto.RegisterType((*NodeList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeList") + proto.RegisterType((*NodeProxyOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeProxyOptions") + proto.RegisterType((*NodeSelector)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeSelector") + proto.RegisterType((*NodeSelectorRequirement)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeSelectorRequirement") + proto.RegisterType((*NodeSelectorTerm)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeSelectorTerm") + proto.RegisterType((*NodeSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeSpec") + proto.RegisterType((*NodeStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeStatus") + proto.RegisterType((*NodeSystemInfo)(nil), "k8s.io.client-go.1.5.pkg.api.v1.NodeSystemInfo") + proto.RegisterType((*ObjectFieldSelector)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ObjectFieldSelector") + proto.RegisterType((*ObjectMeta)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ObjectMeta") + proto.RegisterType((*ObjectReference)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ObjectReference") + proto.RegisterType((*OwnerReference)(nil), "k8s.io.client-go.1.5.pkg.api.v1.OwnerReference") + proto.RegisterType((*PersistentVolume)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolume") + proto.RegisterType((*PersistentVolumeClaim)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeClaim") + proto.RegisterType((*PersistentVolumeClaimList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeClaimList") + proto.RegisterType((*PersistentVolumeClaimSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeClaimSpec") + proto.RegisterType((*PersistentVolumeClaimStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeClaimStatus") + proto.RegisterType((*PersistentVolumeClaimVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeClaimVolumeSource") + proto.RegisterType((*PersistentVolumeList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeList") + proto.RegisterType((*PersistentVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeSource") + proto.RegisterType((*PersistentVolumeSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeSpec") + proto.RegisterType((*PersistentVolumeStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PersistentVolumeStatus") + proto.RegisterType((*Pod)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Pod") + proto.RegisterType((*PodAffinity)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodAffinity") + proto.RegisterType((*PodAffinityTerm)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodAffinityTerm") + proto.RegisterType((*PodAntiAffinity)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodAntiAffinity") + proto.RegisterType((*PodAttachOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodAttachOptions") + proto.RegisterType((*PodCondition)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodCondition") + proto.RegisterType((*PodExecOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodExecOptions") + proto.RegisterType((*PodList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodList") + proto.RegisterType((*PodLogOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodLogOptions") + proto.RegisterType((*PodProxyOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodProxyOptions") + proto.RegisterType((*PodSecurityContext)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodSecurityContext") + proto.RegisterType((*PodSignature)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodSignature") + proto.RegisterType((*PodSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodSpec") + proto.RegisterType((*PodStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodStatus") + proto.RegisterType((*PodStatusResult)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodStatusResult") + proto.RegisterType((*PodTemplate)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodTemplate") + proto.RegisterType((*PodTemplateList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodTemplateList") + proto.RegisterType((*PodTemplateSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PodTemplateSpec") + proto.RegisterType((*Preconditions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Preconditions") + proto.RegisterType((*PreferAvoidPodsEntry)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PreferAvoidPodsEntry") + proto.RegisterType((*PreferredSchedulingTerm)(nil), "k8s.io.client-go.1.5.pkg.api.v1.PreferredSchedulingTerm") + proto.RegisterType((*Probe)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Probe") + proto.RegisterType((*QuobyteVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.QuobyteVolumeSource") + proto.RegisterType((*RBDVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.RBDVolumeSource") + proto.RegisterType((*RangeAllocation)(nil), "k8s.io.client-go.1.5.pkg.api.v1.RangeAllocation") + proto.RegisterType((*ReplicationController)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ReplicationController") + proto.RegisterType((*ReplicationControllerList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ReplicationControllerList") + proto.RegisterType((*ReplicationControllerSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ReplicationControllerSpec") + proto.RegisterType((*ReplicationControllerStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ReplicationControllerStatus") + proto.RegisterType((*ResourceFieldSelector)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceFieldSelector") + proto.RegisterType((*ResourceQuota)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceQuota") + proto.RegisterType((*ResourceQuotaList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceQuotaList") + proto.RegisterType((*ResourceQuotaSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceQuotaSpec") + proto.RegisterType((*ResourceQuotaStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceQuotaStatus") + proto.RegisterType((*ResourceRequirements)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ResourceRequirements") + proto.RegisterType((*SELinuxOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SELinuxOptions") + proto.RegisterType((*Secret)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Secret") + proto.RegisterType((*SecretKeySelector)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SecretKeySelector") + proto.RegisterType((*SecretList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SecretList") + proto.RegisterType((*SecretVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SecretVolumeSource") + proto.RegisterType((*SecurityContext)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SecurityContext") + proto.RegisterType((*SerializedReference)(nil), "k8s.io.client-go.1.5.pkg.api.v1.SerializedReference") + proto.RegisterType((*Service)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Service") + proto.RegisterType((*ServiceAccount)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceAccount") + proto.RegisterType((*ServiceAccountList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceAccountList") + proto.RegisterType((*ServiceList)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceList") + proto.RegisterType((*ServicePort)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServicePort") + proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceProxyOptions") + proto.RegisterType((*ServiceSpec)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceSpec") + proto.RegisterType((*ServiceStatus)(nil), "k8s.io.client-go.1.5.pkg.api.v1.ServiceStatus") + proto.RegisterType((*TCPSocketAction)(nil), "k8s.io.client-go.1.5.pkg.api.v1.TCPSocketAction") + proto.RegisterType((*Taint)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Taint") + proto.RegisterType((*Toleration)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Toleration") + proto.RegisterType((*Volume)(nil), "k8s.io.client-go.1.5.pkg.api.v1.Volume") + proto.RegisterType((*VolumeMount)(nil), "k8s.io.client-go.1.5.pkg.api.v1.VolumeMount") + proto.RegisterType((*VolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.VolumeSource") + proto.RegisterType((*VsphereVirtualDiskVolumeSource)(nil), "k8s.io.client-go.1.5.pkg.api.v1.VsphereVirtualDiskVolumeSource") + proto.RegisterType((*WeightedPodAffinityTerm)(nil), "k8s.io.client-go.1.5.pkg.api.v1.WeightedPodAffinityTerm") +} +func (m *AWSElasticBlockStoreVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *AWSElasticBlockStoreVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.VolumeID))) + i += copy(data[i:], m.VolumeID) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Partition)) + data[i] = 0x20 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *Affinity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Affinity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.NodeAffinity != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.NodeAffinity.Size())) + n1, err := m.NodeAffinity.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + } + if m.PodAffinity != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodAffinity.Size())) + n2, err := m.PodAffinity.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + } + if m.PodAntiAffinity != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodAntiAffinity.Size())) + n3, err := m.PodAntiAffinity.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + } + return i, nil +} + +func (m *AttachedVolume) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *AttachedVolume) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DevicePath))) + i += copy(data[i:], m.DevicePath) + return i, nil +} + +func (m *AvoidPods) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *AvoidPods) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.PreferAvoidPods) > 0 { + for _, msg := range m.PreferAvoidPods { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *AzureDiskVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *AzureDiskVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DiskName))) + i += copy(data[i:], m.DiskName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DataDiskURI))) + i += copy(data[i:], m.DataDiskURI) + if m.CachingMode != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(*m.CachingMode))) + i += copy(data[i:], *m.CachingMode) + } + if m.FSType != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(*m.FSType))) + i += copy(data[i:], *m.FSType) + } + if m.ReadOnly != nil { + data[i] = 0x28 + i++ + if *m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + return i, nil +} + +func (m *AzureFileVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *AzureFileVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SecretName))) + i += copy(data[i:], m.SecretName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ShareName))) + i += copy(data[i:], m.ShareName) + data[i] = 0x18 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *Binding) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Binding) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Target.Size())) + n5, err := m.Target.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *Capabilities) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Capabilities) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Add) > 0 { + for _, s := range m.Add { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Drop) > 0 { + for _, s := range m.Drop { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *CephFSVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CephFSVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Monitors) > 0 { + for _, s := range m.Monitors { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.User))) + i += copy(data[i:], m.User) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SecretFile))) + i += copy(data[i:], m.SecretFile) + if m.SecretRef != nil { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecretRef.Size())) + n6, err := m.SecretRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + } + data[i] = 0x30 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *CinderVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CinderVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.VolumeID))) + i += copy(data[i:], m.VolumeID) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x18 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *ComponentCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ComponentCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Error))) + i += copy(data[i:], m.Error) + return i, nil +} + +func (m *ComponentStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ComponentStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n7, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ComponentStatusList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ComponentStatusList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n8, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ConfigMap) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ConfigMap) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + if len(m.Data) > 0 { + for k := range m.Data { + data[i] = 0x12 + i++ + v := m.Data[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + return i, nil +} + +func (m *ConfigMapKeySelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ConfigMapKeySelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LocalObjectReference.Size())) + n10, err := m.LocalObjectReference.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + return i, nil +} + +func (m *ConfigMapList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ConfigMapList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n11, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n11 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ConfigMapVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ConfigMapVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LocalObjectReference.Size())) + n12, err := m.LocalObjectReference.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n12 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.DefaultMode)) + } + return i, nil +} + +func (m *Container) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Container) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Image))) + i += copy(data[i:], m.Image) + if len(m.Command) > 0 { + for _, s := range m.Command { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Args) > 0 { + for _, s := range m.Args { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.WorkingDir))) + i += copy(data[i:], m.WorkingDir) + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Env) > 0 { + for _, msg := range m.Env { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Resources.Size())) + n13, err := m.Resources.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n13 + if len(m.VolumeMounts) > 0 { + for _, msg := range m.VolumeMounts { + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.LivenessProbe != nil { + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LivenessProbe.Size())) + n14, err := m.LivenessProbe.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n14 + } + if m.ReadinessProbe != nil { + data[i] = 0x5a + i++ + i = encodeVarintGenerated(data, i, uint64(m.ReadinessProbe.Size())) + n15, err := m.ReadinessProbe.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n15 + } + if m.Lifecycle != nil { + data[i] = 0x62 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Lifecycle.Size())) + n16, err := m.Lifecycle.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n16 + } + data[i] = 0x6a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.TerminationMessagePath))) + i += copy(data[i:], m.TerminationMessagePath) + data[i] = 0x72 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ImagePullPolicy))) + i += copy(data[i:], m.ImagePullPolicy) + if m.SecurityContext != nil { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecurityContext.Size())) + n17, err := m.SecurityContext.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n17 + } + data[i] = 0x80 + i++ + data[i] = 0x1 + i++ + if m.Stdin { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x88 + i++ + data[i] = 0x1 + i++ + if m.StdinOnce { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x90 + i++ + data[i] = 0x1 + i++ + if m.TTY { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *ContainerImage) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerImage) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SizeBytes)) + return i, nil +} + +func (m *ContainerPort) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerPort) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.HostPort)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ContainerPort)) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Protocol))) + i += copy(data[i:], m.Protocol) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.HostIP))) + i += copy(data[i:], m.HostIP) + return i, nil +} + +func (m *ContainerState) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerState) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Waiting != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Waiting.Size())) + n18, err := m.Waiting.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n18 + } + if m.Running != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Running.Size())) + n19, err := m.Running.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n19 + } + if m.Terminated != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Terminated.Size())) + n20, err := m.Terminated.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func (m *ContainerStateRunning) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerStateRunning) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartedAt.Size())) + n21, err := m.StartedAt.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n21 + return i, nil +} + +func (m *ContainerStateTerminated) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerStateTerminated) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ExitCode)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Signal)) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartedAt.Size())) + n22, err := m.StartedAt.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n22 + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FinishedAt.Size())) + n23, err := m.FinishedAt.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n23 + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContainerID))) + i += copy(data[i:], m.ContainerID) + return i, nil +} + +func (m *ContainerStateWaiting) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerStateWaiting) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *ContainerStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ContainerStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.State.Size())) + n24, err := m.State.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n24 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTerminationState.Size())) + n25, err := m.LastTerminationState.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n25 + data[i] = 0x20 + i++ + if m.Ready { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.RestartCount)) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Image))) + i += copy(data[i:], m.Image) + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ImageID))) + i += copy(data[i:], m.ImageID) + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContainerID))) + i += copy(data[i:], m.ContainerID) + return i, nil +} + +func (m *DaemonEndpoint) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DaemonEndpoint) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port)) + return i, nil +} + +func (m *DeleteOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeleteOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.GracePeriodSeconds != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Preconditions.Size())) + n26, err := m.Preconditions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n26 + } + if m.OrphanDependents != nil { + data[i] = 0x18 + i++ + if *m.OrphanDependents { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + return i, nil +} + +func (m *DownwardAPIVolumeFile) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DownwardAPIVolumeFile) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + if m.FieldRef != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FieldRef.Size())) + n27, err := m.FieldRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n27 + } + if m.ResourceFieldRef != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.ResourceFieldRef.Size())) + n28, err := m.ResourceFieldRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n28 + } + if m.Mode != nil { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Mode)) + } + return i, nil +} + +func (m *DownwardAPIVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DownwardAPIVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.DefaultMode)) + } + return i, nil +} + +func (m *EmptyDirVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EmptyDirVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Medium))) + i += copy(data[i:], m.Medium) + return i, nil +} + +func (m *EndpointAddress) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EndpointAddress) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.IP))) + i += copy(data[i:], m.IP) + if m.TargetRef != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.TargetRef.Size())) + n29, err := m.TargetRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n29 + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Hostname))) + i += copy(data[i:], m.Hostname) + if m.NodeName != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(*m.NodeName))) + i += copy(data[i:], *m.NodeName) + } + return i, nil +} + +func (m *EndpointPort) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EndpointPort) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port)) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Protocol))) + i += copy(data[i:], m.Protocol) + return i, nil +} + +func (m *EndpointSubset) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EndpointSubset) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Addresses) > 0 { + for _, msg := range m.Addresses { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.NotReadyAddresses) > 0 { + for _, msg := range m.NotReadyAddresses { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *Endpoints) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Endpoints) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n30, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n30 + if len(m.Subsets) > 0 { + for _, msg := range m.Subsets { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EndpointsList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EndpointsList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n31, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n31 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EnvVar) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EnvVar) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Value))) + i += copy(data[i:], m.Value) + if m.ValueFrom != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.ValueFrom.Size())) + n32, err := m.ValueFrom.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n32 + } + return i, nil +} + +func (m *EnvVarSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EnvVarSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.FieldRef != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.FieldRef.Size())) + n33, err := m.FieldRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n33 + } + if m.ResourceFieldRef != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ResourceFieldRef.Size())) + n34, err := m.ResourceFieldRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n34 + } + if m.ConfigMapKeyRef != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.ConfigMapKeyRef.Size())) + n35, err := m.ConfigMapKeyRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n35 + } + if m.SecretKeyRef != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecretKeyRef.Size())) + n36, err := m.SecretKeyRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n36 + } + return i, nil +} + +func (m *Event) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Event) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n37, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n37 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.InvolvedObject.Size())) + n38, err := m.InvolvedObject.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n38 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Source.Size())) + n39, err := m.Source.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n39 + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FirstTimestamp.Size())) + n40, err := m.FirstTimestamp.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n40 + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTimestamp.Size())) + n41, err := m.LastTimestamp.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n41 + data[i] = 0x40 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Count)) + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + return i, nil +} + +func (m *EventList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EventList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n42, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n42 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *EventSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *EventSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Component))) + i += copy(data[i:], m.Component) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Host))) + i += copy(data[i:], m.Host) + return i, nil +} + +func (m *ExecAction) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ExecAction) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Command) > 0 { + for _, s := range m.Command { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ExportOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ExportOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Export { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + if m.Exact { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *FCVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *FCVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.TargetWWNs) > 0 { + for _, s := range m.TargetWWNs { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if m.Lun != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Lun)) + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x20 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *FlexVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *FlexVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Driver))) + i += copy(data[i:], m.Driver) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + if m.SecretRef != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecretRef.Size())) + n43, err := m.SecretRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n43 + } + data[i] = 0x20 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if len(m.Options) > 0 { + for k := range m.Options { + data[i] = 0x2a + i++ + v := m.Options[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + return i, nil +} + +func (m *FlockerVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *FlockerVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DatasetName))) + i += copy(data[i:], m.DatasetName) + return i, nil +} + +func (m *GCEPersistentDiskVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GCEPersistentDiskVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.PDName))) + i += copy(data[i:], m.PDName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Partition)) + data[i] = 0x20 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *GitRepoVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GitRepoVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Repository))) + i += copy(data[i:], m.Repository) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Revision))) + i += copy(data[i:], m.Revision) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Directory))) + i += copy(data[i:], m.Directory) + return i, nil +} + +func (m *GlusterfsVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *GlusterfsVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.EndpointsName))) + i += copy(data[i:], m.EndpointsName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x18 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *HTTPGetAction) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HTTPGetAction) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port.Size())) + n44, err := m.Port.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n44 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Host))) + i += copy(data[i:], m.Host) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Scheme))) + i += copy(data[i:], m.Scheme) + if len(m.HTTPHeaders) > 0 { + for _, msg := range m.HTTPHeaders { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HTTPHeader) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HTTPHeader) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Value))) + i += copy(data[i:], m.Value) + return i, nil +} + +func (m *Handler) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Handler) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Exec != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Exec.Size())) + n45, err := m.Exec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n45 + } + if m.HTTPGet != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.HTTPGet.Size())) + n46, err := m.HTTPGet.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n46 + } + if m.TCPSocket != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.TCPSocket.Size())) + n47, err := m.TCPSocket.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n47 + } + return i, nil +} + +func (m *HostPathVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HostPathVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + return i, nil +} + +func (m *ISCSIVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ISCSIVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.TargetPortal))) + i += copy(data[i:], m.TargetPortal) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.IQN))) + i += copy(data[i:], m.IQN) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Lun)) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ISCSIInterface))) + i += copy(data[i:], m.ISCSIInterface) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x30 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *KeyToPath) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *KeyToPath) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + if m.Mode != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Mode)) + } + return i, nil +} + +func (m *Lifecycle) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Lifecycle) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PostStart != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PostStart.Size())) + n48, err := m.PostStart.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n48 + } + if m.PreStop != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PreStop.Size())) + n49, err := m.PreStop.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n49 + } + return i, nil +} + +func (m *LimitRange) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LimitRange) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n50, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n50 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n51, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n51 + return i, nil +} + +func (m *LimitRangeItem) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LimitRangeItem) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + if len(m.Max) > 0 { + for k := range m.Max { + data[i] = 0x12 + i++ + v := m.Max[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n52, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n52 + } + } + if len(m.Min) > 0 { + for k := range m.Min { + data[i] = 0x1a + i++ + v := m.Min[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n53, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n53 + } + } + if len(m.Default) > 0 { + for k := range m.Default { + data[i] = 0x22 + i++ + v := m.Default[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n54, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n54 + } + } + if len(m.DefaultRequest) > 0 { + for k := range m.DefaultRequest { + data[i] = 0x2a + i++ + v := m.DefaultRequest[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n55, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n55 + } + } + if len(m.MaxLimitRequestRatio) > 0 { + for k := range m.MaxLimitRequestRatio { + data[i] = 0x32 + i++ + v := m.MaxLimitRequestRatio[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n56, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n56 + } + } + return i, nil +} + +func (m *LimitRangeList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LimitRangeList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n57, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n57 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LimitRangeSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LimitRangeSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Limits) > 0 { + for _, msg := range m.Limits { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *List) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *List) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n58, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n58 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ListOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.LabelSelector))) + i += copy(data[i:], m.LabelSelector) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FieldSelector))) + i += copy(data[i:], m.FieldSelector) + data[i] = 0x18 + i++ + if m.Watch { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ResourceVersion))) + i += copy(data[i:], m.ResourceVersion) + if m.TimeoutSeconds != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.TimeoutSeconds)) + } + return i, nil +} + +func (m *LoadBalancerIngress) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LoadBalancerIngress) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.IP))) + i += copy(data[i:], m.IP) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Hostname))) + i += copy(data[i:], m.Hostname) + return i, nil +} + +func (m *LoadBalancerStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LoadBalancerStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ingress) > 0 { + for _, msg := range m.Ingress { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LocalObjectReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LocalObjectReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + return i, nil +} + +func (m *NFSVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NFSVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Server))) + i += copy(data[i:], m.Server) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x18 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *Namespace) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Namespace) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n59, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n59 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n60, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n60 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n61, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n61 + return i, nil +} + +func (m *NamespaceList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NamespaceList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n62, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n62 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NamespaceSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NamespaceSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *NamespaceStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NamespaceStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Phase))) + i += copy(data[i:], m.Phase) + return i, nil +} + +func (m *Node) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Node) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n63, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n63 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n64, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n64 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n65, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n65 + return i, nil +} + +func (m *NodeAddress) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeAddress) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Address))) + i += copy(data[i:], m.Address) + return i, nil +} + +func (m *NodeAffinity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeAffinity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.RequiredDuringSchedulingIgnoredDuringExecution != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.RequiredDuringSchedulingIgnoredDuringExecution.Size())) + n66, err := m.RequiredDuringSchedulingIgnoredDuringExecution.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n66 + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastHeartbeatTime.Size())) + n67, err := m.LastHeartbeatTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n67 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n68, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n68 + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *NodeDaemonEndpoints) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeDaemonEndpoints) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.KubeletEndpoint.Size())) + n69, err := m.KubeletEndpoint.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n69 + return i, nil +} + +func (m *NodeList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n70, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n70 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeProxyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeProxyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + return i, nil +} + +func (m *NodeSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.NodeSelectorTerms) > 0 { + for _, msg := range m.NodeSelectorTerms { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSelectorRequirement) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeSelectorRequirement) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *NodeSelectorTerm) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeSelectorTerm) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.PodCIDR))) + i += copy(data[i:], m.PodCIDR) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ExternalID))) + i += copy(data[i:], m.ExternalID) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ProviderID))) + i += copy(data[i:], m.ProviderID) + data[i] = 0x20 + i++ + if m.Unschedulable { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *NodeStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + for k := range m.Capacity { + data[i] = 0xa + i++ + v := m.Capacity[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n71, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n71 + } + } + if len(m.Allocatable) > 0 { + for k := range m.Allocatable { + data[i] = 0x12 + i++ + v := m.Allocatable[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n72, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n72 + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Phase))) + i += copy(data[i:], m.Phase) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Addresses) > 0 { + for _, msg := range m.Addresses { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DaemonEndpoints.Size())) + n73, err := m.DaemonEndpoints.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n73 + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.NodeInfo.Size())) + n74, err := m.NodeInfo.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n74 + if len(m.Images) > 0 { + for _, msg := range m.Images { + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.VolumesInUse) > 0 { + for _, s := range m.VolumesInUse { + data[i] = 0x4a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.VolumesAttached) > 0 { + for _, msg := range m.VolumesAttached { + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NodeSystemInfo) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeSystemInfo) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.MachineID))) + i += copy(data[i:], m.MachineID) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SystemUUID))) + i += copy(data[i:], m.SystemUUID) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.BootID))) + i += copy(data[i:], m.BootID) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.KernelVersion))) + i += copy(data[i:], m.KernelVersion) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.OSImage))) + i += copy(data[i:], m.OSImage) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContainerRuntimeVersion))) + i += copy(data[i:], m.ContainerRuntimeVersion) + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.KubeletVersion))) + i += copy(data[i:], m.KubeletVersion) + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.KubeProxyVersion))) + i += copy(data[i:], m.KubeProxyVersion) + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.OperatingSystem))) + i += copy(data[i:], m.OperatingSystem) + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Architecture))) + i += copy(data[i:], m.Architecture) + return i, nil +} + +func (m *ObjectFieldSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ObjectFieldSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FieldPath))) + i += copy(data[i:], m.FieldPath) + return i, nil +} + +func (m *ObjectMeta) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ObjectMeta) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.GenerateName))) + i += copy(data[i:], m.GenerateName) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Namespace))) + i += copy(data[i:], m.Namespace) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SelfLink))) + i += copy(data[i:], m.SelfLink) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.UID))) + i += copy(data[i:], m.UID) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ResourceVersion))) + i += copy(data[i:], m.ResourceVersion) + data[i] = 0x38 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Generation)) + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CreationTimestamp.Size())) + n75, err := m.CreationTimestamp.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n75 + if m.DeletionTimestamp != nil { + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(m.DeletionTimestamp.Size())) + n76, err := m.DeletionTimestamp.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n76 + } + if m.DeletionGracePeriodSeconds != nil { + data[i] = 0x50 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + for k := range m.Labels { + data[i] = 0x5a + i++ + v := m.Labels[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.Annotations) > 0 { + for k := range m.Annotations { + data[i] = 0x62 + i++ + v := m.Annotations[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.OwnerReferences) > 0 { + for _, msg := range m.OwnerReferences { + data[i] = 0x6a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + data[i] = 0x72 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ClusterName))) + i += copy(data[i:], m.ClusterName) + return i, nil +} + +func (m *ObjectReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ObjectReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Namespace))) + i += copy(data[i:], m.Namespace) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.UID))) + i += copy(data[i:], m.UID) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ResourceVersion))) + i += copy(data[i:], m.ResourceVersion) + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FieldPath))) + i += copy(data[i:], m.FieldPath) + return i, nil +} + +func (m *OwnerReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *OwnerReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.UID))) + i += copy(data[i:], m.UID) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + if m.Controller != nil { + data[i] = 0x30 + i++ + if *m.Controller { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + return i, nil +} + +func (m *PersistentVolume) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolume) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n77, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n77 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n78, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n78 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n79, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n79 + return i, nil +} + +func (m *PersistentVolumeClaim) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeClaim) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n80, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n80 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n81, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n81 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n82, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n82 + return i, nil +} + +func (m *PersistentVolumeClaimList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeClaimList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n83, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n83 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PersistentVolumeClaimSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeClaimSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Resources.Size())) + n84, err := m.Resources.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n84 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.VolumeName))) + i += copy(data[i:], m.VolumeName) + if m.Selector != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n85, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n85 + } + return i, nil +} + +func (m *PersistentVolumeClaimStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeClaimStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Phase))) + i += copy(data[i:], m.Phase) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Capacity) > 0 { + for k := range m.Capacity { + data[i] = 0x1a + i++ + v := m.Capacity[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n86, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n86 + } + } + return i, nil +} + +func (m *PersistentVolumeClaimVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeClaimVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ClaimName))) + i += copy(data[i:], m.ClaimName) + data[i] = 0x10 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *PersistentVolumeList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n87, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n87 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PersistentVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.GCEPersistentDisk != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.GCEPersistentDisk.Size())) + n88, err := m.GCEPersistentDisk.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n88 + } + if m.AWSElasticBlockStore != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) + n89, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n89 + } + if m.HostPath != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.HostPath.Size())) + n90, err := m.HostPath.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n90 + } + if m.Glusterfs != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) + n91, err := m.Glusterfs.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n91 + } + if m.NFS != nil { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) + n92, err := m.NFS.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n92 + } + if m.RBD != nil { + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) + n93, err := m.RBD.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n93 + } + if m.ISCSI != nil { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) + n94, err := m.ISCSI.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n94 + } + if m.Cinder != nil { + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) + n95, err := m.Cinder.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n95 + } + if m.CephFS != nil { + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) + n96, err := m.CephFS.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n96 + } + if m.FC != nil { + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FC.Size())) + n97, err := m.FC.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n97 + } + if m.Flocker != nil { + data[i] = 0x5a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) + n98, err := m.Flocker.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n98 + } + if m.FlexVolume != nil { + data[i] = 0x62 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) + n99, err := m.FlexVolume.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n99 + } + if m.AzureFile != nil { + data[i] = 0x6a + i++ + i = encodeVarintGenerated(data, i, uint64(m.AzureFile.Size())) + n100, err := m.AzureFile.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n100 + } + if m.VsphereVolume != nil { + data[i] = 0x72 + i++ + i = encodeVarintGenerated(data, i, uint64(m.VsphereVolume.Size())) + n101, err := m.VsphereVolume.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n101 + } + if m.Quobyte != nil { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Quobyte.Size())) + n102, err := m.Quobyte.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n102 + } + if m.AzureDisk != nil { + data[i] = 0x82 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AzureDisk.Size())) + n103, err := m.AzureDisk.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n103 + } + return i, nil +} + +func (m *PersistentVolumeSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + for k := range m.Capacity { + data[i] = 0xa + i++ + v := m.Capacity[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n104, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n104 + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PersistentVolumeSource.Size())) + n105, err := m.PersistentVolumeSource.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n105 + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if m.ClaimRef != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ClaimRef.Size())) + n106, err := m.ClaimRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n106 + } + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.PersistentVolumeReclaimPolicy))) + i += copy(data[i:], m.PersistentVolumeReclaimPolicy) + return i, nil +} + +func (m *PersistentVolumeStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PersistentVolumeStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Phase))) + i += copy(data[i:], m.Phase) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + return i, nil +} + +func (m *Pod) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Pod) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n107, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n107 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n108, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n108 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n109, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n109 + return i, nil +} + +func (m *PodAffinity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodAffinity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.RequiredDuringSchedulingIgnoredDuringExecution { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodAffinityTerm) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodAffinityTerm) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.LabelSelector != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LabelSelector.Size())) + n110, err := m.LabelSelector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n110 + } + if len(m.Namespaces) > 0 { + for _, s := range m.Namespaces { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.TopologyKey))) + i += copy(data[i:], m.TopologyKey) + return i, nil +} + +func (m *PodAntiAffinity) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodAntiAffinity) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.RequiredDuringSchedulingIgnoredDuringExecution { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, msg := range m.PreferredDuringSchedulingIgnoredDuringExecution { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodAttachOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodAttachOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Stdin { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + if m.Stdout { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x18 + i++ + if m.Stderr { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x20 + i++ + if m.TTY { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Container))) + i += copy(data[i:], m.Container) + return i, nil +} + +func (m *PodCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastProbeTime.Size())) + n111, err := m.LastProbeTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n111 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n112, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n112 + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *PodExecOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodExecOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Stdin { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + if m.Stdout { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x18 + i++ + if m.Stderr { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x20 + i++ + if m.TTY { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Container))) + i += copy(data[i:], m.Container) + if len(m.Command) > 0 { + for _, s := range m.Command { + data[i] = 0x32 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *PodList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n113, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n113 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodLogOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodLogOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Container))) + i += copy(data[i:], m.Container) + data[i] = 0x10 + i++ + if m.Follow { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x18 + i++ + if m.Previous { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if m.SinceSeconds != nil { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.SinceSeconds)) + } + if m.SinceTime != nil { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SinceTime.Size())) + n114, err := m.SinceTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n114 + } + data[i] = 0x30 + i++ + if m.Timestamps { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if m.TailLines != nil { + data[i] = 0x38 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.TailLines)) + } + if m.LimitBytes != nil { + data[i] = 0x40 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.LimitBytes)) + } + return i, nil +} + +func (m *PodProxyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodProxyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + return i, nil +} + +func (m *PodSecurityContext) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSecurityContext) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.SELinuxOptions != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.SELinuxOptions.Size())) + n115, err := m.SELinuxOptions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n115 + } + if m.RunAsUser != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + data[i] = 0x18 + i++ + if *m.RunAsNonRoot { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + if len(m.SupplementalGroups) > 0 { + for _, num := range m.SupplementalGroups { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(num)) + } + } + if m.FSGroup != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.FSGroup)) + } + return i, nil +} + +func (m *PodSignature) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSignature) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PodController != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodController.Size())) + n116, err := m.PodController.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n116 + } + return i, nil +} + +func (m *PodSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Volumes) > 0 { + for _, msg := range m.Volumes { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Containers) > 0 { + for _, msg := range m.Containers { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.RestartPolicy))) + i += copy(data[i:], m.RestartPolicy) + if m.TerminationGracePeriodSeconds != nil { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.TerminationGracePeriodSeconds)) + } + if m.ActiveDeadlineSeconds != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ActiveDeadlineSeconds)) + } + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DNSPolicy))) + i += copy(data[i:], m.DNSPolicy) + if len(m.NodeSelector) > 0 { + for k := range m.NodeSelector { + data[i] = 0x3a + i++ + v := m.NodeSelector[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ServiceAccountName))) + i += copy(data[i:], m.ServiceAccountName) + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.DeprecatedServiceAccount))) + i += copy(data[i:], m.DeprecatedServiceAccount) + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.NodeName))) + i += copy(data[i:], m.NodeName) + data[i] = 0x58 + i++ + if m.HostNetwork { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x60 + i++ + if m.HostPID { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x68 + i++ + if m.HostIPC { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if m.SecurityContext != nil { + data[i] = 0x72 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecurityContext.Size())) + n117, err := m.SecurityContext.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n117 + } + if len(m.ImagePullSecrets) > 0 { + for _, msg := range m.ImagePullSecrets { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x82 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Hostname))) + i += copy(data[i:], m.Hostname) + data[i] = 0x8a + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Subdomain))) + i += copy(data[i:], m.Subdomain) + return i, nil +} + +func (m *PodStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Phase))) + i += copy(data[i:], m.Phase) + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.HostIP))) + i += copy(data[i:], m.HostIP) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.PodIP))) + i += copy(data[i:], m.PodIP) + if m.StartTime != nil { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartTime.Size())) + n118, err := m.StartTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n118 + } + if len(m.ContainerStatuses) > 0 { + for _, msg := range m.ContainerStatuses { + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodStatusResult) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodStatusResult) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n119, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n119 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n120, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n120 + return i, nil +} + +func (m *PodTemplate) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodTemplate) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n121, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n121 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n122, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n122 + return i, nil +} + +func (m *PodTemplateList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodTemplateList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n123, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n123 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodTemplateSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodTemplateSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n124, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n124 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n125, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n125 + return i, nil +} + +func (m *Preconditions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Preconditions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.UID != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(*m.UID))) + i += copy(data[i:], *m.UID) + } + return i, nil +} + +func (m *PreferAvoidPodsEntry) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PreferAvoidPodsEntry) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodSignature.Size())) + n126, err := m.PodSignature.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n126 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.EvictionTime.Size())) + n127, err := m.EvictionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n127 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *PreferredSchedulingTerm) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PreferredSchedulingTerm) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Weight)) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Preference.Size())) + n128, err := m.Preference.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n128 + return i, nil +} + +func (m *Probe) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Probe) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Handler.Size())) + n129, err := m.Handler.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n129 + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.InitialDelaySeconds)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.TimeoutSeconds)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PeriodSeconds)) + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SuccessThreshold)) + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FailureThreshold)) + return i, nil +} + +func (m *QuobyteVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *QuobyteVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Registry))) + i += copy(data[i:], m.Registry) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Volume))) + i += copy(data[i:], m.Volume) + data[i] = 0x18 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.User))) + i += copy(data[i:], m.User) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + return i, nil +} + +func (m *RBDVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RBDVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.CephMonitors) > 0 { + for _, s := range m.CephMonitors { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.RBDImage))) + i += copy(data[i:], m.RBDImage) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.RBDPool))) + i += copy(data[i:], m.RBDPool) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.RadosUser))) + i += copy(data[i:], m.RadosUser) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Keyring))) + i += copy(data[i:], m.Keyring) + if m.SecretRef != nil { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SecretRef.Size())) + n130, err := m.SecretRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n130 + } + data[i] = 0x40 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *RangeAllocation) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RangeAllocation) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n131, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n131 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Range))) + i += copy(data[i:], m.Range) + if m.Data != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Data))) + i += copy(data[i:], m.Data) + } + return i, nil +} + +func (m *ReplicationController) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicationController) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n132, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n132 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n133, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n133 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n134, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n134 + return i, nil +} + +func (m *ReplicationControllerList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicationControllerList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n135, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n135 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReplicationControllerSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicationControllerSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Replicas)) + } + if len(m.Selector) > 0 { + for k := range m.Selector { + data[i] = 0x12 + i++ + v := m.Selector[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if m.Template != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n136, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n136 + } + return i, nil +} + +func (m *ReplicationControllerStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicationControllerStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FullyLabeledReplicas)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObservedGeneration)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ReadyReplicas)) + return i, nil +} + +func (m *ResourceFieldSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceFieldSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContainerName))) + i += copy(data[i:], m.ContainerName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Resource))) + i += copy(data[i:], m.Resource) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Divisor.Size())) + n137, err := m.Divisor.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n137 + return i, nil +} + +func (m *ResourceQuota) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceQuota) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n138, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n138 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n139, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n139 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n140, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n140 + return i, nil +} + +func (m *ResourceQuotaList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceQuotaList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n141, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n141 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ResourceQuotaSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceQuotaSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hard) > 0 { + for k := range m.Hard { + data[i] = 0xa + i++ + v := m.Hard[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n142, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n142 + } + } + if len(m.Scopes) > 0 { + for _, s := range m.Scopes { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ResourceQuotaStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceQuotaStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hard) > 0 { + for k := range m.Hard { + data[i] = 0xa + i++ + v := m.Hard[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n143, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n143 + } + } + if len(m.Used) > 0 { + for k := range m.Used { + data[i] = 0x12 + i++ + v := m.Used[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n144, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n144 + } + } + return i, nil +} + +func (m *ResourceRequirements) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceRequirements) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Limits) > 0 { + for k := range m.Limits { + data[i] = 0xa + i++ + v := m.Limits[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n145, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n145 + } + } + if len(m.Requests) > 0 { + for k := range m.Requests { + data[i] = 0x12 + i++ + v := m.Requests[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n146, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n146 + } + } + return i, nil +} + +func (m *SELinuxOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SELinuxOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.User))) + i += copy(data[i:], m.User) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Role))) + i += copy(data[i:], m.Role) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Level))) + i += copy(data[i:], m.Level) + return i, nil +} + +func (m *Secret) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Secret) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n147, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n147 + if len(m.Data) > 0 { + for k := range m.Data { + data[i] = 0x12 + i++ + v := m.Data[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + if len(m.StringData) > 0 { + for k := range m.StringData { + data[i] = 0x22 + i++ + v := m.StringData[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + return i, nil +} + +func (m *SecretKeySelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretKeySelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LocalObjectReference.Size())) + n148, err := m.LocalObjectReference.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n148 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + return i, nil +} + +func (m *SecretList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n149, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n149 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *SecretVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecretVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SecretName))) + i += copy(data[i:], m.SecretName) + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.DefaultMode != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.DefaultMode)) + } + return i, nil +} + +func (m *SecurityContext) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SecurityContext) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Capabilities != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Capabilities.Size())) + n150, err := m.Capabilities.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n150 + } + if m.Privileged != nil { + data[i] = 0x10 + i++ + if *m.Privileged { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + if m.SELinuxOptions != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.SELinuxOptions.Size())) + n151, err := m.SELinuxOptions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n151 + } + if m.RunAsUser != nil { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + data[i] = 0x28 + i++ + if *m.RunAsNonRoot { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + if m.ReadOnlyRootFilesystem != nil { + data[i] = 0x30 + i++ + if *m.ReadOnlyRootFilesystem { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + return i, nil +} + +func (m *SerializedReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SerializedReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Reference.Size())) + n152, err := m.Reference.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n152 + return i, nil +} + +func (m *Service) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Service) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n153, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n153 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n154, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n154 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n155, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n155 + return i, nil +} + +func (m *ServiceAccount) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceAccount) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n156, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n156 + if len(m.Secrets) > 0 { + for _, msg := range m.Secrets { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.ImagePullSecrets) > 0 { + for _, msg := range m.ImagePullSecrets { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServiceAccountList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceAccountList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n157, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n157 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServiceList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n158, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n158 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ServicePort) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServicePort) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Protocol))) + i += copy(data[i:], m.Protocol) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port)) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.TargetPort.Size())) + n159, err := m.TargetPort.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n159 + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.NodePort)) + return i, nil +} + +func (m *ServiceProxyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceProxyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + return i, nil +} + +func (m *ServiceSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Selector) > 0 { + for k := range m.Selector { + data[i] = 0x12 + i++ + v := m.Selector[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ClusterIP))) + i += copy(data[i:], m.ClusterIP) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + if len(m.ExternalIPs) > 0 { + for _, s := range m.ExternalIPs { + data[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.DeprecatedPublicIPs) > 0 { + for _, s := range m.DeprecatedPublicIPs { + data[i] = 0x32 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SessionAffinity))) + i += copy(data[i:], m.SessionAffinity) + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.LoadBalancerIP))) + i += copy(data[i:], m.LoadBalancerIP) + if len(m.LoadBalancerSourceRanges) > 0 { + for _, s := range m.LoadBalancerSourceRanges { + data[i] = 0x4a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ExternalName))) + i += copy(data[i:], m.ExternalName) + return i, nil +} + +func (m *ServiceStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ServiceStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LoadBalancer.Size())) + n160, err := m.LoadBalancer.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n160 + return i, nil +} + +func (m *TCPSocketAction) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TCPSocketAction) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port.Size())) + n161, err := m.Port.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n161 + return i, nil +} + +func (m *Taint) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Taint) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Value))) + i += copy(data[i:], m.Value) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Effect))) + i += copy(data[i:], m.Effect) + return i, nil +} + +func (m *Toleration) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Toleration) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Value))) + i += copy(data[i:], m.Value) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Effect))) + i += copy(data[i:], m.Effect) + return i, nil +} + +func (m *Volume) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Volume) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.VolumeSource.Size())) + n162, err := m.VolumeSource.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n162 + return i, nil +} + +func (m *VolumeMount) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *VolumeMount) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x10 + i++ + if m.ReadOnly { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.MountPath))) + i += copy(data[i:], m.MountPath) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SubPath))) + i += copy(data[i:], m.SubPath) + return i, nil +} + +func (m *VolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *VolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.HostPath != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.HostPath.Size())) + n163, err := m.HostPath.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n163 + } + if m.EmptyDir != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.EmptyDir.Size())) + n164, err := m.EmptyDir.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n164 + } + if m.GCEPersistentDisk != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.GCEPersistentDisk.Size())) + n165, err := m.GCEPersistentDisk.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n165 + } + if m.AWSElasticBlockStore != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) + n166, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n166 + } + if m.GitRepo != nil { + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.GitRepo.Size())) + n167, err := m.GitRepo.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n167 + } + if m.Secret != nil { + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Secret.Size())) + n168, err := m.Secret.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n168 + } + if m.NFS != nil { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) + n169, err := m.NFS.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n169 + } + if m.ISCSI != nil { + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) + n170, err := m.ISCSI.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n170 + } + if m.Glusterfs != nil { + data[i] = 0x4a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) + n171, err := m.Glusterfs.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n171 + } + if m.PersistentVolumeClaim != nil { + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PersistentVolumeClaim.Size())) + n172, err := m.PersistentVolumeClaim.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n172 + } + if m.RBD != nil { + data[i] = 0x5a + i++ + i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) + n173, err := m.RBD.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n173 + } + if m.FlexVolume != nil { + data[i] = 0x62 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) + n174, err := m.FlexVolume.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n174 + } + if m.Cinder != nil { + data[i] = 0x6a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) + n175, err := m.Cinder.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n175 + } + if m.CephFS != nil { + data[i] = 0x72 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) + n176, err := m.CephFS.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n176 + } + if m.Flocker != nil { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) + n177, err := m.Flocker.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n177 + } + if m.DownwardAPI != nil { + data[i] = 0x82 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DownwardAPI.Size())) + n178, err := m.DownwardAPI.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n178 + } + if m.FC != nil { + data[i] = 0x8a + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FC.Size())) + n179, err := m.FC.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n179 + } + if m.AzureFile != nil { + data[i] = 0x92 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AzureFile.Size())) + n180, err := m.AzureFile.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n180 + } + if m.ConfigMap != nil { + data[i] = 0x9a + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ConfigMap.Size())) + n181, err := m.ConfigMap.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n181 + } + if m.VsphereVolume != nil { + data[i] = 0xa2 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.VsphereVolume.Size())) + n182, err := m.VsphereVolume.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n182 + } + if m.Quobyte != nil { + data[i] = 0xaa + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Quobyte.Size())) + n183, err := m.Quobyte.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n183 + } + if m.AzureDisk != nil { + data[i] = 0xb2 + i++ + data[i] = 0x1 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AzureDisk.Size())) + n184, err := m.AzureDisk.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n184 + } + return i, nil +} + +func (m *VsphereVirtualDiskVolumeSource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *VsphereVirtualDiskVolumeSource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.VolumePath))) + i += copy(data[i:], m.VolumePath) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FSType))) + i += copy(data[i:], m.FSType) + return i, nil +} + +func (m *WeightedPodAffinityTerm) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *WeightedPodAffinityTerm) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Weight)) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodAffinityTerm.Size())) + n185, err := m.PodAffinityTerm.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n185 + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *AWSElasticBlockStoreVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Partition)) + n += 2 + return n +} + +func (m *Affinity) Size() (n int) { + var l int + _ = l + if m.NodeAffinity != nil { + l = m.NodeAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PodAffinity != nil { + l = m.PodAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PodAntiAffinity != nil { + l = m.PodAntiAffinity.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *AttachedVolume) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DevicePath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *AvoidPods) Size() (n int) { + var l int + _ = l + if len(m.PreferAvoidPods) > 0 { + for _, e := range m.PreferAvoidPods { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *AzureDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.DiskName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DataDiskURI) + n += 1 + l + sovGenerated(uint64(l)) + if m.CachingMode != nil { + l = len(*m.CachingMode) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FSType != nil { + l = len(*m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ReadOnly != nil { + n += 2 + } + return n +} + +func (m *AzureFileVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ShareName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Binding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Target.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Capabilities) Size() (n int) { + var l int + _ = l + if len(m.Add) > 0 { + for _, s := range m.Add { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Drop) > 0 { + for _, s := range m.Drop { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CephFSVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Monitors) > 0 { + for _, s := range m.Monitors { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SecretFile) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + return n +} + +func (m *CinderVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumeID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *ComponentCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Error) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ComponentStatus) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ComponentStatusList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ConfigMap) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Data) > 0 { + for k, v := range m.Data { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ConfigMapKeySelector) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ConfigMapList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ConfigMapVolumeSource) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + return n +} + +func (m *Container) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Image) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Args) > 0 { + for _, s := range m.Args { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.WorkingDir) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Env) > 0 { + for _, e := range m.Env { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Resources.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.VolumeMounts) > 0 { + for _, e := range m.VolumeMounts { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.LivenessProbe != nil { + l = m.LivenessProbe.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ReadinessProbe != nil { + l = m.ReadinessProbe.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Lifecycle != nil { + l = m.Lifecycle.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.TerminationMessagePath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ImagePullPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecurityContext != nil { + l = m.SecurityContext.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 3 + n += 3 + n += 3 + return n +} + +func (m *ContainerImage) Size() (n int) { + var l int + _ = l + if len(m.Names) > 0 { + for _, s := range m.Names { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 1 + sovGenerated(uint64(m.SizeBytes)) + return n +} + +func (m *ContainerPort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.HostPort)) + n += 1 + sovGenerated(uint64(m.ContainerPort)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.HostIP) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerState) Size() (n int) { + var l int + _ = l + if m.Waiting != nil { + l = m.Waiting.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Running != nil { + l = m.Running.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Terminated != nil { + l = m.Terminated.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ContainerStateRunning) Size() (n int) { + var l int + _ = l + l = m.StartedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStateTerminated) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ExitCode)) + n += 1 + sovGenerated(uint64(m.Signal)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.StartedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FinishedAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStateWaiting) Size() (n int) { + var l int + _ = l + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ContainerStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.State.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTerminationState.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 1 + sovGenerated(uint64(m.RestartCount)) + l = len(m.Image) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ImageID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerID) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DaemonEndpoint) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Port)) + return n +} + +func (m *DeleteOptions) Size() (n int) { + var l int + _ = l + if m.GracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.GracePeriodSeconds)) + } + if m.Preconditions != nil { + l = m.Preconditions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.OrphanDependents != nil { + n += 2 + } + return n +} + +func (m *DownwardAPIVolumeFile) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + if m.FieldRef != nil { + l = m.FieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ResourceFieldRef != nil { + l = m.ResourceFieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Mode != nil { + n += 1 + sovGenerated(uint64(*m.Mode)) + } + return n +} + +func (m *DownwardAPIVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + return n +} + +func (m *EmptyDirVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Medium) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EndpointAddress) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + if m.TargetRef != nil { + l = m.TargetRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Hostname) + n += 1 + l + sovGenerated(uint64(l)) + if m.NodeName != nil { + l = len(*m.NodeName) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *EndpointPort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Port)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EndpointSubset) Size() (n int) { + var l int + _ = l + if len(m.Addresses) > 0 { + for _, e := range m.Addresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NotReadyAddresses) > 0 { + for _, e := range m.NotReadyAddresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Endpoints) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subsets) > 0 { + for _, e := range m.Subsets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EndpointsList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EnvVar) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + if m.ValueFrom != nil { + l = m.ValueFrom.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *EnvVarSource) Size() (n int) { + var l int + _ = l + if m.FieldRef != nil { + l = m.FieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ResourceFieldRef != nil { + l = m.ResourceFieldRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ConfigMapKeyRef != nil { + l = m.ConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.SecretKeyRef != nil { + l = m.SecretKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Event) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.InvolvedObject.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Source.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FirstTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Count)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *EventList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *EventSource) Size() (n int) { + var l int + _ = l + l = len(m.Component) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ExecAction) Size() (n int) { + var l int + _ = l + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ExportOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + return n +} + +func (m *FCVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.TargetWWNs) > 0 { + for _, s := range m.TargetWWNs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Lun != nil { + n += 1 + sovGenerated(uint64(*m.Lun)) + } + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *FlexVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Driver) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + if len(m.Options) > 0 { + for k, v := range m.Options { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *FlockerVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.DatasetName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GCEPersistentDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.PDName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Partition)) + n += 2 + return n +} + +func (m *GitRepoVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Repository) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Revision) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Directory) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *GlusterfsVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.EndpointsName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *HTTPGetAction) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Scheme) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.HTTPHeaders) > 0 { + for _, e := range m.HTTPHeaders { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HTTPHeader) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Handler) Size() (n int) { + var l int + _ = l + if m.Exec != nil { + l = m.Exec.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.HTTPGet != nil { + l = m.HTTPGet.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.TCPSocket != nil { + l = m.TCPSocket.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *HostPathVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ISCSIVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.TargetPortal) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.IQN) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Lun)) + l = len(m.ISCSIInterface) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *KeyToPath) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + if m.Mode != nil { + n += 1 + sovGenerated(uint64(*m.Mode)) + } + return n +} + +func (m *Lifecycle) Size() (n int) { + var l int + _ = l + if m.PostStart != nil { + l = m.PostStart.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PreStop != nil { + l = m.PreStop.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *LimitRange) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LimitRangeItem) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Max) > 0 { + for k, v := range m.Max { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Min) > 0 { + for k, v := range m.Min { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Default) > 0 { + for k, v := range m.Default { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.DefaultRequest) > 0 { + for k, v := range m.DefaultRequest { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MaxLimitRequestRatio) > 0 { + for k, v := range m.MaxLimitRequestRatio { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *LimitRangeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LimitRangeSpec) Size() (n int) { + var l int + _ = l + if len(m.Limits) > 0 { + for _, e := range m.Limits { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *List) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ListOptions) Size() (n int) { + var l int + _ = l + l = len(m.LabelSelector) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldSelector) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + return n +} + +func (m *LoadBalancerIngress) Size() (n int) { + var l int + _ = l + l = len(m.IP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Hostname) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LoadBalancerStatus) Size() (n int) { + var l int + _ = l + if len(m.Ingress) > 0 { + for _, e := range m.Ingress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LocalObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NFSVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Server) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *Namespace) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NamespaceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NamespaceSpec) Size() (n int) { + var l int + _ = l + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NamespaceStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Node) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeAddress) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Address) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeAffinity) Size() (n int) { + var l int + _ = l + if m.RequiredDuringSchedulingIgnoredDuringExecution != nil { + l = m.RequiredDuringSchedulingIgnoredDuringExecution.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastHeartbeatTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeDaemonEndpoints) Size() (n int) { + var l int + _ = l + l = m.KubeletEndpoint.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NodeSelector) Size() (n int) { + var l int + _ = l + if len(m.NodeSelectorTerms) > 0 { + for _, e := range m.NodeSelectorTerms { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSelectorTerm) Size() (n int) { + var l int + _ = l + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSpec) Size() (n int) { + var l int + _ = l + l = len(m.PodCIDR) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ExternalID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ProviderID) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *NodeStatus) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Allocatable) > 0 { + for k, v := range m.Allocatable { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Addresses) > 0 { + for _, e := range m.Addresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.DaemonEndpoints.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.NodeInfo.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Images) > 0 { + for _, e := range m.Images { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.VolumesInUse) > 0 { + for _, s := range m.VolumesInUse { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.VolumesAttached) > 0 { + for _, e := range m.VolumesAttached { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NodeSystemInfo) Size() (n int) { + var l int + _ = l + l = len(m.MachineID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SystemUUID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.BootID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KernelVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.OSImage) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContainerRuntimeVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KubeletVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.KubeProxyVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.OperatingSystem) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Architecture) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectFieldSelector) Size() (n int) { + var l int + _ = l + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectMeta) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.GenerateName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SelfLink) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Generation)) + l = m.CreationTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.DeletionTimestamp != nil { + l = m.DeletionTimestamp.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DeletionGracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.DeletionGracePeriodSeconds)) + } + if len(m.Labels) > 0 { + for k, v := range m.Labels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.OwnerReferences) > 0 { + for _, e := range m.OwnerReferences { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Finalizers) > 0 { + for _, s := range m.Finalizers { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ClusterName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *OwnerReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.Controller != nil { + n += 2 + } + return n +} + +func (m *PersistentVolume) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeClaim) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeClaimList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PersistentVolumeClaimSpec) Size() (n int) { + var l int + _ = l + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.Resources.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PersistentVolumeClaimStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *PersistentVolumeClaimVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.ClaimName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *PersistentVolumeList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PersistentVolumeSource) Size() (n int) { + var l int + _ = l + if m.GCEPersistentDisk != nil { + l = m.GCEPersistentDisk.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AWSElasticBlockStore != nil { + l = m.AWSElasticBlockStore.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.HostPath != nil { + l = m.HostPath.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Glusterfs != nil { + l = m.Glusterfs.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NFS != nil { + l = m.NFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RBD != nil { + l = m.RBD.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ISCSI != nil { + l = m.ISCSI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Cinder != nil { + l = m.Cinder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CephFS != nil { + l = m.CephFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FC != nil { + l = m.FC.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Flocker != nil { + l = m.Flocker.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FlexVolume != nil { + l = m.FlexVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AzureFile != nil { + l = m.AzureFile.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.VsphereVolume != nil { + l = m.VsphereVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Quobyte != nil { + l = m.Quobyte.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AzureDisk != nil { + l = m.AzureDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PersistentVolumeSpec) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = m.PersistentVolumeSource.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.AccessModes) > 0 { + for _, s := range m.AccessModes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.ClaimRef != nil { + l = m.ClaimRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.PersistentVolumeReclaimPolicy) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PersistentVolumeStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Pod) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodAffinity) Size() (n int) { + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.RequiredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodAffinityTerm) Size() (n int) { + var l int + _ = l + if m.LabelSelector != nil { + l = m.LabelSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.Namespaces) > 0 { + for _, s := range m.Namespaces { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.TopologyKey) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodAntiAffinity) Size() (n int) { + var l int + _ = l + if len(m.RequiredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.RequiredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.PreferredDuringSchedulingIgnoredDuringExecution) > 0 { + for _, e := range m.PreferredDuringSchedulingIgnoredDuringExecution { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodAttachOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + n += 2 + n += 2 + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodExecOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + n += 2 + n += 2 + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Command) > 0 { + for _, s := range m.Command { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodLogOptions) Size() (n int) { + var l int + _ = l + l = len(m.Container) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 2 + if m.SinceSeconds != nil { + n += 1 + sovGenerated(uint64(*m.SinceSeconds)) + } + if m.SinceTime != nil { + l = m.SinceTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + if m.TailLines != nil { + n += 1 + sovGenerated(uint64(*m.TailLines)) + } + if m.LimitBytes != nil { + n += 1 + sovGenerated(uint64(*m.LimitBytes)) + } + return n +} + +func (m *PodProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodSecurityContext) Size() (n int) { + var l int + _ = l + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RunAsUser != nil { + n += 1 + sovGenerated(uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + n += 2 + } + if len(m.SupplementalGroups) > 0 { + for _, e := range m.SupplementalGroups { + n += 1 + sovGenerated(uint64(e)) + } + } + if m.FSGroup != nil { + n += 1 + sovGenerated(uint64(*m.FSGroup)) + } + return n +} + +func (m *PodSignature) Size() (n int) { + var l int + _ = l + if m.PodController != nil { + l = m.PodController.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodSpec) Size() (n int) { + var l int + _ = l + if len(m.Volumes) > 0 { + for _, e := range m.Volumes { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Containers) > 0 { + for _, e := range m.Containers { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.RestartPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.TerminationGracePeriodSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TerminationGracePeriodSeconds)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + l = len(m.DNSPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.NodeSelector) > 0 { + for k, v := range m.NodeSelector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.ServiceAccountName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.DeprecatedServiceAccount) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.NodeName) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + n += 2 + n += 2 + if m.SecurityContext != nil { + l = m.SecurityContext.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.ImagePullSecrets) > 0 { + for _, e := range m.ImagePullSecrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Hostname) + n += 2 + l + sovGenerated(uint64(l)) + l = len(m.Subdomain) + n += 2 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodStatus) Size() (n int) { + var l int + _ = l + l = len(m.Phase) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.HostIP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.PodIP) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.ContainerStatuses) > 0 { + for _, e := range m.ContainerStatuses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodStatusResult) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodTemplate) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodTemplateList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodTemplateSpec) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Preconditions) Size() (n int) { + var l int + _ = l + if m.UID != nil { + l = len(*m.UID) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PreferAvoidPodsEntry) Size() (n int) { + var l int + _ = l + l = m.PodSignature.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.EvictionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PreferredSchedulingTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Weight)) + l = m.Preference.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Probe) Size() (n int) { + var l int + _ = l + l = m.Handler.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.InitialDelaySeconds)) + n += 1 + sovGenerated(uint64(m.TimeoutSeconds)) + n += 1 + sovGenerated(uint64(m.PeriodSeconds)) + n += 1 + sovGenerated(uint64(m.SuccessThreshold)) + n += 1 + sovGenerated(uint64(m.FailureThreshold)) + return n +} + +func (m *QuobyteVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Registry) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Volume) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RBDVolumeSource) Size() (n int) { + var l int + _ = l + if len(m.CephMonitors) > 0 { + for _, s := range m.CephMonitors { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.RBDImage) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.RBDPool) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.RadosUser) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Keyring) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + return n +} + +func (m *RangeAllocation) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Range) + n += 1 + l + sovGenerated(uint64(l)) + if m.Data != nil { + l = len(m.Data) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ReplicationController) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicationControllerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ReplicationControllerSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if m.Template != nil { + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ReplicationControllerStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.FullyLabeledReplicas)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + return n +} + +func (m *ResourceFieldSelector) Size() (n int) { + var l int + _ = l + l = len(m.ContainerName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Divisor.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceQuota) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceQuotaList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ResourceQuotaSpec) Size() (n int) { + var l int + _ = l + if len(m.Hard) > 0 { + for k, v := range m.Hard { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Scopes) > 0 { + for _, s := range m.Scopes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ResourceQuotaStatus) Size() (n int) { + var l int + _ = l + if len(m.Hard) > 0 { + for k, v := range m.Hard { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Used) > 0 { + for k, v := range m.Used { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *ResourceRequirements) Size() (n int) { + var l int + _ = l + if len(m.Limits) > 0 { + for k, v := range m.Limits { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.Requests) > 0 { + for k, v := range m.Requests { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SELinuxOptions) Size() (n int) { + var l int + _ = l + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Role) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Level) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Secret) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Data) > 0 { + for k, v := range m.Data { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.StringData) > 0 { + for k, v := range m.StringData { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SecretKeySelector) Size() (n int) { + var l int + _ = l + l = m.LocalObjectReference.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SecretList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *SecretVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.DefaultMode != nil { + n += 1 + sovGenerated(uint64(*m.DefaultMode)) + } + return n +} + +func (m *SecurityContext) Size() (n int) { + var l int + _ = l + if m.Capabilities != nil { + l = m.Capabilities.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Privileged != nil { + n += 2 + } + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RunAsUser != nil { + n += 1 + sovGenerated(uint64(*m.RunAsUser)) + } + if m.RunAsNonRoot != nil { + n += 2 + } + if m.ReadOnlyRootFilesystem != nil { + n += 2 + } + return n +} + +func (m *SerializedReference) Size() (n int) { + var l int + _ = l + l = m.Reference.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Service) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceAccount) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Secrets) > 0 { + for _, e := range m.Secrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ImagePullSecrets) > 0 { + for _, e := range m.ImagePullSecrets { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServiceAccountList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServiceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ServicePort) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.Port)) + l = m.TargetPort.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.NodePort)) + return n +} + +func (m *ServiceProxyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceSpec) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.ClusterIP) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ExternalIPs) > 0 { + for _, s := range m.ExternalIPs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.DeprecatedPublicIPs) > 0 { + for _, s := range m.DeprecatedPublicIPs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.SessionAffinity) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.LoadBalancerIP) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.LoadBalancerSourceRanges) > 0 { + for _, s := range m.LoadBalancerSourceRanges { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ExternalName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ServiceStatus) Size() (n int) { + var l int + _ = l + l = m.LoadBalancer.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TCPSocketAction) Size() (n int) { + var l int + _ = l + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Taint) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Effect) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Toleration) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Effect) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Volume) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.VolumeSource.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *VolumeMount) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.MountPath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.SubPath) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *VolumeSource) Size() (n int) { + var l int + _ = l + if m.HostPath != nil { + l = m.HostPath.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.EmptyDir != nil { + l = m.EmptyDir.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.GCEPersistentDisk != nil { + l = m.GCEPersistentDisk.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AWSElasticBlockStore != nil { + l = m.AWSElasticBlockStore.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.GitRepo != nil { + l = m.GitRepo.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Secret != nil { + l = m.Secret.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NFS != nil { + l = m.NFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ISCSI != nil { + l = m.ISCSI.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Glusterfs != nil { + l = m.Glusterfs.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.PersistentVolumeClaim != nil { + l = m.PersistentVolumeClaim.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.RBD != nil { + l = m.RBD.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.FlexVolume != nil { + l = m.FlexVolume.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Cinder != nil { + l = m.Cinder.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CephFS != nil { + l = m.CephFS.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Flocker != nil { + l = m.Flocker.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.DownwardAPI != nil { + l = m.DownwardAPI.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.FC != nil { + l = m.FC.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.AzureFile != nil { + l = m.AzureFile.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.ConfigMap != nil { + l = m.ConfigMap.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.VsphereVolume != nil { + l = m.VsphereVolume.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.Quobyte != nil { + l = m.Quobyte.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + if m.AzureDisk != nil { + l = m.AzureDisk.Size() + n += 2 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *VsphereVirtualDiskVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.VolumePath) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *WeightedPodAffinityTerm) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Weight)) + l = m.PodAffinityTerm.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *AWSElasticBlockStoreVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AWSElasticBlockStoreVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `Partition:` + fmt.Sprintf("%v", this.Partition) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Affinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Affinity{`, + `NodeAffinity:` + strings.Replace(fmt.Sprintf("%v", this.NodeAffinity), "NodeAffinity", "NodeAffinity", 1) + `,`, + `PodAffinity:` + strings.Replace(fmt.Sprintf("%v", this.PodAffinity), "PodAffinity", "PodAffinity", 1) + `,`, + `PodAntiAffinity:` + strings.Replace(fmt.Sprintf("%v", this.PodAntiAffinity), "PodAntiAffinity", "PodAntiAffinity", 1) + `,`, + `}`, + }, "") + return s +} +func (this *AttachedVolume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AttachedVolume{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `DevicePath:` + fmt.Sprintf("%v", this.DevicePath) + `,`, + `}`, + }, "") + return s +} +func (this *AvoidPods) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AvoidPods{`, + `PreferAvoidPods:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferAvoidPods), "PreferAvoidPodsEntry", "PreferAvoidPodsEntry", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *AzureDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AzureDiskVolumeSource{`, + `DiskName:` + fmt.Sprintf("%v", this.DiskName) + `,`, + `DataDiskURI:` + fmt.Sprintf("%v", this.DataDiskURI) + `,`, + `CachingMode:` + valueToStringGenerated(this.CachingMode) + `,`, + `FSType:` + valueToStringGenerated(this.FSType) + `,`, + `ReadOnly:` + valueToStringGenerated(this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *AzureFileVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AzureFileVolumeSource{`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `ShareName:` + fmt.Sprintf("%v", this.ShareName) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Binding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Binding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Target:` + strings.Replace(strings.Replace(this.Target.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Capabilities) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Capabilities{`, + `Add:` + fmt.Sprintf("%v", this.Add) + `,`, + `Drop:` + fmt.Sprintf("%v", this.Drop) + `,`, + `}`, + }, "") + return s +} +func (this *CephFSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CephFSVolumeSource{`, + `Monitors:` + fmt.Sprintf("%v", this.Monitors) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `SecretFile:` + fmt.Sprintf("%v", this.SecretFile) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *CinderVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CinderVolumeSource{`, + `VolumeID:` + fmt.Sprintf("%v", this.VolumeID) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Error:` + fmt.Sprintf("%v", this.Error) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentStatus{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "ComponentCondition", "ComponentCondition", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ComponentStatusList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ComponentStatusList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ComponentStatus", "ComponentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMap) String() string { + if this == nil { + return "nil" + } + keysForData := make([]string, 0, len(this.Data)) + for k := range this.Data { + keysForData = append(keysForData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + mapStringForData := "map[string]string{" + for _, k := range keysForData { + mapStringForData += fmt.Sprintf("%v: %v,", k, this.Data[k]) + } + mapStringForData += "}" + s := strings.Join([]string{`&ConfigMap{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapKeySelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapKeySelector{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ConfigMap", "ConfigMap", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ConfigMapVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapVolumeSource{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + return s +} +func (this *Container) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Container{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Image:` + fmt.Sprintf("%v", this.Image) + `,`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `Args:` + fmt.Sprintf("%v", this.Args) + `,`, + `WorkingDir:` + fmt.Sprintf("%v", this.WorkingDir) + `,`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "ContainerPort", "ContainerPort", 1), `&`, ``, 1) + `,`, + `Env:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Env), "EnvVar", "EnvVar", 1), `&`, ``, 1) + `,`, + `Resources:` + strings.Replace(strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1), `&`, ``, 1) + `,`, + `VolumeMounts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeMounts), "VolumeMount", "VolumeMount", 1), `&`, ``, 1) + `,`, + `LivenessProbe:` + strings.Replace(fmt.Sprintf("%v", this.LivenessProbe), "Probe", "Probe", 1) + `,`, + `ReadinessProbe:` + strings.Replace(fmt.Sprintf("%v", this.ReadinessProbe), "Probe", "Probe", 1) + `,`, + `Lifecycle:` + strings.Replace(fmt.Sprintf("%v", this.Lifecycle), "Lifecycle", "Lifecycle", 1) + `,`, + `TerminationMessagePath:` + fmt.Sprintf("%v", this.TerminationMessagePath) + `,`, + `ImagePullPolicy:` + fmt.Sprintf("%v", this.ImagePullPolicy) + `,`, + `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "SecurityContext", "SecurityContext", 1) + `,`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `StdinOnce:` + fmt.Sprintf("%v", this.StdinOnce) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerImage) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerImage{`, + `Names:` + fmt.Sprintf("%v", this.Names) + `,`, + `SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerPort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `HostPort:` + fmt.Sprintf("%v", this.HostPort) + `,`, + `ContainerPort:` + fmt.Sprintf("%v", this.ContainerPort) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `HostIP:` + fmt.Sprintf("%v", this.HostIP) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerState) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerState{`, + `Waiting:` + strings.Replace(fmt.Sprintf("%v", this.Waiting), "ContainerStateWaiting", "ContainerStateWaiting", 1) + `,`, + `Running:` + strings.Replace(fmt.Sprintf("%v", this.Running), "ContainerStateRunning", "ContainerStateRunning", 1) + `,`, + `Terminated:` + strings.Replace(fmt.Sprintf("%v", this.Terminated), "ContainerStateTerminated", "ContainerStateTerminated", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateRunning) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateRunning{`, + `StartedAt:` + strings.Replace(strings.Replace(this.StartedAt.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateTerminated) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateTerminated{`, + `ExitCode:` + fmt.Sprintf("%v", this.ExitCode) + `,`, + `Signal:` + fmt.Sprintf("%v", this.Signal) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `StartedAt:` + strings.Replace(strings.Replace(this.StartedAt.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `FinishedAt:` + strings.Replace(strings.Replace(this.FinishedAt.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStateWaiting) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStateWaiting{`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `State:` + strings.Replace(strings.Replace(this.State.String(), "ContainerState", "ContainerState", 1), `&`, ``, 1) + `,`, + `LastTerminationState:` + strings.Replace(strings.Replace(this.LastTerminationState.String(), "ContainerState", "ContainerState", 1), `&`, ``, 1) + `,`, + `Ready:` + fmt.Sprintf("%v", this.Ready) + `,`, + `RestartCount:` + fmt.Sprintf("%v", this.RestartCount) + `,`, + `Image:` + fmt.Sprintf("%v", this.Image) + `,`, + `ImageID:` + fmt.Sprintf("%v", this.ImageID) + `,`, + `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonEndpoint) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonEndpoint{`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `}`, + }, "") + return s +} +func (this *DeleteOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeleteOptions{`, + `GracePeriodSeconds:` + valueToStringGenerated(this.GracePeriodSeconds) + `,`, + `Preconditions:` + strings.Replace(fmt.Sprintf("%v", this.Preconditions), "Preconditions", "Preconditions", 1) + `,`, + `OrphanDependents:` + valueToStringGenerated(this.OrphanDependents) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIVolumeFile) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIVolumeFile{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `FieldRef:` + strings.Replace(fmt.Sprintf("%v", this.FieldRef), "ObjectFieldSelector", "ObjectFieldSelector", 1) + `,`, + `ResourceFieldRef:` + strings.Replace(fmt.Sprintf("%v", this.ResourceFieldRef), "ResourceFieldSelector", "ResourceFieldSelector", 1) + `,`, + `Mode:` + valueToStringGenerated(this.Mode) + `,`, + `}`, + }, "") + return s +} +func (this *DownwardAPIVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DownwardAPIVolumeSource{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DownwardAPIVolumeFile", "DownwardAPIVolumeFile", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + return s +} +func (this *EmptyDirVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EmptyDirVolumeSource{`, + `Medium:` + fmt.Sprintf("%v", this.Medium) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointAddress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointAddress{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `TargetRef:` + strings.Replace(fmt.Sprintf("%v", this.TargetRef), "ObjectReference", "ObjectReference", 1) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `NodeName:` + valueToStringGenerated(this.NodeName) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointPort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointSubset) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointSubset{`, + `Addresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Addresses), "EndpointAddress", "EndpointAddress", 1), `&`, ``, 1) + `,`, + `NotReadyAddresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NotReadyAddresses), "EndpointAddress", "EndpointAddress", 1), `&`, ``, 1) + `,`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "EndpointPort", "EndpointPort", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Endpoints) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Endpoints{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subsets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subsets), "EndpointSubset", "EndpointSubset", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EndpointsList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EndpointsList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Endpoints", "Endpoints", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvVar) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvVar{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `ValueFrom:` + strings.Replace(fmt.Sprintf("%v", this.ValueFrom), "EnvVarSource", "EnvVarSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *EnvVarSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EnvVarSource{`, + `FieldRef:` + strings.Replace(fmt.Sprintf("%v", this.FieldRef), "ObjectFieldSelector", "ObjectFieldSelector", 1) + `,`, + `ResourceFieldRef:` + strings.Replace(fmt.Sprintf("%v", this.ResourceFieldRef), "ResourceFieldSelector", "ResourceFieldSelector", 1) + `,`, + `ConfigMapKeyRef:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMapKeyRef), "ConfigMapKeySelector", "ConfigMapKeySelector", 1) + `,`, + `SecretKeyRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretKeyRef), "SecretKeySelector", "SecretKeySelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Event) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Event{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `InvolvedObject:` + strings.Replace(strings.Replace(this.InvolvedObject.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Source:` + strings.Replace(strings.Replace(this.Source.String(), "EventSource", "EventSource", 1), `&`, ``, 1) + `,`, + `FirstTimestamp:` + strings.Replace(strings.Replace(this.FirstTimestamp.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTimestamp:` + strings.Replace(strings.Replace(this.LastTimestamp.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Count:` + fmt.Sprintf("%v", this.Count) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `}`, + }, "") + return s +} +func (this *EventList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EventList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Event", "Event", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *EventSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EventSource{`, + `Component:` + fmt.Sprintf("%v", this.Component) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `}`, + }, "") + return s +} +func (this *ExecAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExecAction{`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `}`, + }, "") + return s +} +func (this *ExportOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExportOptions{`, + `Export:` + fmt.Sprintf("%v", this.Export) + `,`, + `Exact:` + fmt.Sprintf("%v", this.Exact) + `,`, + `}`, + }, "") + return s +} +func (this *FCVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FCVolumeSource{`, + `TargetWWNs:` + fmt.Sprintf("%v", this.TargetWWNs) + `,`, + `Lun:` + valueToStringGenerated(this.Lun) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *FlexVolumeSource) String() string { + if this == nil { + return "nil" + } + keysForOptions := make([]string, 0, len(this.Options)) + for k := range this.Options { + keysForOptions = append(keysForOptions, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForOptions) + mapStringForOptions := "map[string]string{" + for _, k := range keysForOptions { + mapStringForOptions += fmt.Sprintf("%v: %v,", k, this.Options[k]) + } + mapStringForOptions += "}" + s := strings.Join([]string{`&FlexVolumeSource{`, + `Driver:` + fmt.Sprintf("%v", this.Driver) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `Options:` + mapStringForOptions + `,`, + `}`, + }, "") + return s +} +func (this *FlockerVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FlockerVolumeSource{`, + `DatasetName:` + fmt.Sprintf("%v", this.DatasetName) + `,`, + `}`, + }, "") + return s +} +func (this *GCEPersistentDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GCEPersistentDiskVolumeSource{`, + `PDName:` + fmt.Sprintf("%v", this.PDName) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `Partition:` + fmt.Sprintf("%v", this.Partition) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *GitRepoVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GitRepoVolumeSource{`, + `Repository:` + fmt.Sprintf("%v", this.Repository) + `,`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `Directory:` + fmt.Sprintf("%v", this.Directory) + `,`, + `}`, + }, "") + return s +} +func (this *GlusterfsVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GlusterfsVolumeSource{`, + `EndpointsName:` + fmt.Sprintf("%v", this.EndpointsName) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPGetAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPGetAction{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Port:` + strings.Replace(strings.Replace(this.Port.String(), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `Scheme:` + fmt.Sprintf("%v", this.Scheme) + `,`, + `HTTPHeaders:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HTTPHeaders), "HTTPHeader", "HTTPHeader", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPHeader) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPHeader{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} +func (this *Handler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Handler{`, + `Exec:` + strings.Replace(fmt.Sprintf("%v", this.Exec), "ExecAction", "ExecAction", 1) + `,`, + `HTTPGet:` + strings.Replace(fmt.Sprintf("%v", this.HTTPGet), "HTTPGetAction", "HTTPGetAction", 1) + `,`, + `TCPSocket:` + strings.Replace(fmt.Sprintf("%v", this.TCPSocket), "TCPSocketAction", "TCPSocketAction", 1) + `,`, + `}`, + }, "") + return s +} +func (this *HostPathVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostPathVolumeSource{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *ISCSIVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ISCSIVolumeSource{`, + `TargetPortal:` + fmt.Sprintf("%v", this.TargetPortal) + `,`, + `IQN:` + fmt.Sprintf("%v", this.IQN) + `,`, + `Lun:` + fmt.Sprintf("%v", this.Lun) + `,`, + `ISCSIInterface:` + fmt.Sprintf("%v", this.ISCSIInterface) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *KeyToPath) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&KeyToPath{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Mode:` + valueToStringGenerated(this.Mode) + `,`, + `}`, + }, "") + return s +} +func (this *Lifecycle) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Lifecycle{`, + `PostStart:` + strings.Replace(fmt.Sprintf("%v", this.PostStart), "Handler", "Handler", 1) + `,`, + `PreStop:` + strings.Replace(fmt.Sprintf("%v", this.PreStop), "Handler", "Handler", 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRange{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "LimitRangeSpec", "LimitRangeSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeItem) String() string { + if this == nil { + return "nil" + } + keysForMax := make([]string, 0, len(this.Max)) + for k := range this.Max { + keysForMax = append(keysForMax, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMax) + mapStringForMax := "ResourceList{" + for _, k := range keysForMax { + mapStringForMax += fmt.Sprintf("%v: %v,", k, this.Max[ResourceName(k)]) + } + mapStringForMax += "}" + keysForMin := make([]string, 0, len(this.Min)) + for k := range this.Min { + keysForMin = append(keysForMin, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMin) + mapStringForMin := "ResourceList{" + for _, k := range keysForMin { + mapStringForMin += fmt.Sprintf("%v: %v,", k, this.Min[ResourceName(k)]) + } + mapStringForMin += "}" + keysForDefault := make([]string, 0, len(this.Default)) + for k := range this.Default { + keysForDefault = append(keysForDefault, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefault) + mapStringForDefault := "ResourceList{" + for _, k := range keysForDefault { + mapStringForDefault += fmt.Sprintf("%v: %v,", k, this.Default[ResourceName(k)]) + } + mapStringForDefault += "}" + keysForDefaultRequest := make([]string, 0, len(this.DefaultRequest)) + for k := range this.DefaultRequest { + keysForDefaultRequest = append(keysForDefaultRequest, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDefaultRequest) + mapStringForDefaultRequest := "ResourceList{" + for _, k := range keysForDefaultRequest { + mapStringForDefaultRequest += fmt.Sprintf("%v: %v,", k, this.DefaultRequest[ResourceName(k)]) + } + mapStringForDefaultRequest += "}" + keysForMaxLimitRequestRatio := make([]string, 0, len(this.MaxLimitRequestRatio)) + for k := range this.MaxLimitRequestRatio { + keysForMaxLimitRequestRatio = append(keysForMaxLimitRequestRatio, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMaxLimitRequestRatio) + mapStringForMaxLimitRequestRatio := "ResourceList{" + for _, k := range keysForMaxLimitRequestRatio { + mapStringForMaxLimitRequestRatio += fmt.Sprintf("%v: %v,", k, this.MaxLimitRequestRatio[ResourceName(k)]) + } + mapStringForMaxLimitRequestRatio += "}" + s := strings.Join([]string{`&LimitRangeItem{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Max:` + mapStringForMax + `,`, + `Min:` + mapStringForMin + `,`, + `Default:` + mapStringForDefault + `,`, + `DefaultRequest:` + mapStringForDefaultRequest + `,`, + `MaxLimitRequestRatio:` + mapStringForMaxLimitRequestRatio + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRangeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "LimitRange", "LimitRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LimitRangeSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LimitRangeSpec{`, + `Limits:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Limits), "LimitRangeItem", "LimitRangeItem", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *List) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&List{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RawExtension", "k8s_io_kubernetes_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ListOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListOptions{`, + `LabelSelector:` + fmt.Sprintf("%v", this.LabelSelector) + `,`, + `FieldSelector:` + fmt.Sprintf("%v", this.FieldSelector) + `,`, + `Watch:` + fmt.Sprintf("%v", this.Watch) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *LoadBalancerIngress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LoadBalancerIngress{`, + `IP:` + fmt.Sprintf("%v", this.IP) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `}`, + }, "") + return s +} +func (this *LoadBalancerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LoadBalancerStatus{`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "LoadBalancerIngress", "LoadBalancerIngress", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LocalObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalObjectReference{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *NFSVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NFSVolumeSource{`, + `Server:` + fmt.Sprintf("%v", this.Server) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *Namespace) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Namespace{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NamespaceSpec", "NamespaceSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "NamespaceStatus", "NamespaceStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Namespace", "Namespace", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceSpec{`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `}`, + }, "") + return s +} +func (this *NamespaceStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NamespaceStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `}`, + }, "") + return s +} +func (this *Node) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Node{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NodeSpec", "NodeSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "NodeStatus", "NodeStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeAddress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeAddress{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Address:` + fmt.Sprintf("%v", this.Address) + `,`, + `}`, + }, "") + return s +} +func (this *NodeAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "NodeSelector", "NodeSelector", 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "PreferredSchedulingTerm", "PreferredSchedulingTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastHeartbeatTime:` + strings.Replace(strings.Replace(this.LastHeartbeatTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *NodeDaemonEndpoints) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeDaemonEndpoints{`, + `KubeletEndpoint:` + strings.Replace(strings.Replace(this.KubeletEndpoint.String(), "DaemonEndpoint", "DaemonEndpoint", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Node", "Node", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelector{`, + `NodeSelectorTerms:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.NodeSelectorTerms), "NodeSelectorTerm", "NodeSelectorTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSelectorTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSelectorTerm{`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "NodeSelectorRequirement", "NodeSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSpec{`, + `PodCIDR:` + fmt.Sprintf("%v", this.PodCIDR) + `,`, + `ExternalID:` + fmt.Sprintf("%v", this.ExternalID) + `,`, + `ProviderID:` + fmt.Sprintf("%v", this.ProviderID) + `,`, + `Unschedulable:` + fmt.Sprintf("%v", this.Unschedulable) + `,`, + `}`, + }, "") + return s +} +func (this *NodeStatus) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + keysForAllocatable := make([]string, 0, len(this.Allocatable)) + for k := range this.Allocatable { + keysForAllocatable = append(keysForAllocatable, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAllocatable) + mapStringForAllocatable := "ResourceList{" + for _, k := range keysForAllocatable { + mapStringForAllocatable += fmt.Sprintf("%v: %v,", k, this.Allocatable[ResourceName(k)]) + } + mapStringForAllocatable += "}" + s := strings.Join([]string{`&NodeStatus{`, + `Capacity:` + mapStringForCapacity + `,`, + `Allocatable:` + mapStringForAllocatable + `,`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "NodeCondition", "NodeCondition", 1), `&`, ``, 1) + `,`, + `Addresses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Addresses), "NodeAddress", "NodeAddress", 1), `&`, ``, 1) + `,`, + `DaemonEndpoints:` + strings.Replace(strings.Replace(this.DaemonEndpoints.String(), "NodeDaemonEndpoints", "NodeDaemonEndpoints", 1), `&`, ``, 1) + `,`, + `NodeInfo:` + strings.Replace(strings.Replace(this.NodeInfo.String(), "NodeSystemInfo", "NodeSystemInfo", 1), `&`, ``, 1) + `,`, + `Images:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Images), "ContainerImage", "ContainerImage", 1), `&`, ``, 1) + `,`, + `VolumesInUse:` + fmt.Sprintf("%v", this.VolumesInUse) + `,`, + `VolumesAttached:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumesAttached), "AttachedVolume", "AttachedVolume", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NodeSystemInfo) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NodeSystemInfo{`, + `MachineID:` + fmt.Sprintf("%v", this.MachineID) + `,`, + `SystemUUID:` + fmt.Sprintf("%v", this.SystemUUID) + `,`, + `BootID:` + fmt.Sprintf("%v", this.BootID) + `,`, + `KernelVersion:` + fmt.Sprintf("%v", this.KernelVersion) + `,`, + `OSImage:` + fmt.Sprintf("%v", this.OSImage) + `,`, + `ContainerRuntimeVersion:` + fmt.Sprintf("%v", this.ContainerRuntimeVersion) + `,`, + `KubeletVersion:` + fmt.Sprintf("%v", this.KubeletVersion) + `,`, + `KubeProxyVersion:` + fmt.Sprintf("%v", this.KubeProxyVersion) + `,`, + `OperatingSystem:` + fmt.Sprintf("%v", this.OperatingSystem) + `,`, + `Architecture:` + fmt.Sprintf("%v", this.Architecture) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectFieldSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectFieldSelector{`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `FieldPath:` + fmt.Sprintf("%v", this.FieldPath) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectMeta) String() string { + if this == nil { + return "nil" + } + keysForLabels := make([]string, 0, len(this.Labels)) + for k := range this.Labels { + keysForLabels = append(keysForLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) + mapStringForLabels := "map[string]string{" + for _, k := range keysForLabels { + mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) + } + mapStringForLabels += "}" + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" + s := strings.Join([]string{`&ObjectMeta{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `GenerateName:` + fmt.Sprintf("%v", this.GenerateName) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `SelfLink:` + fmt.Sprintf("%v", this.SelfLink) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `Generation:` + fmt.Sprintf("%v", this.Generation) + `,`, + `CreationTimestamp:` + strings.Replace(strings.Replace(this.CreationTimestamp.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `DeletionTimestamp:` + strings.Replace(fmt.Sprintf("%v", this.DeletionTimestamp), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `DeletionGracePeriodSeconds:` + valueToStringGenerated(this.DeletionGracePeriodSeconds) + `,`, + `Labels:` + mapStringForLabels + `,`, + `Annotations:` + mapStringForAnnotations + `,`, + `OwnerReferences:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.OwnerReferences), "OwnerReference", "OwnerReference", 1), `&`, ``, 1) + `,`, + `Finalizers:` + fmt.Sprintf("%v", this.Finalizers) + `,`, + `ClusterName:` + fmt.Sprintf("%v", this.ClusterName) + `,`, + `}`, + }, "") + return s +} +func (this *ObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ObjectReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `FieldPath:` + fmt.Sprintf("%v", this.FieldPath) + `,`, + `}`, + }, "") + return s +} +func (this *OwnerReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&OwnerReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Controller:` + valueToStringGenerated(this.Controller) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolume{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PersistentVolumeSpec", "PersistentVolumeSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PersistentVolumeStatus", "PersistentVolumeStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaim) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaim{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PersistentVolumeClaimSpec", "PersistentVolumeClaimSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PersistentVolumeClaimStatus", "PersistentVolumeClaimStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PersistentVolumeClaim", "PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimSpec{`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `Resources:` + strings.Replace(strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1), `&`, ``, 1) + `,`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_kubernetes_pkg_api_unversioned.LabelSelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimStatus) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&PersistentVolumeClaimStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `Capacity:` + mapStringForCapacity + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeClaimVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeClaimVolumeSource{`, + `ClaimName:` + fmt.Sprintf("%v", this.ClaimName) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PersistentVolume", "PersistentVolume", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeSource{`, + `GCEPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.GCEPersistentDisk), "GCEPersistentDiskVolumeSource", "GCEPersistentDiskVolumeSource", 1) + `,`, + `AWSElasticBlockStore:` + strings.Replace(fmt.Sprintf("%v", this.AWSElasticBlockStore), "AWSElasticBlockStoreVolumeSource", "AWSElasticBlockStoreVolumeSource", 1) + `,`, + `HostPath:` + strings.Replace(fmt.Sprintf("%v", this.HostPath), "HostPathVolumeSource", "HostPathVolumeSource", 1) + `,`, + `Glusterfs:` + strings.Replace(fmt.Sprintf("%v", this.Glusterfs), "GlusterfsVolumeSource", "GlusterfsVolumeSource", 1) + `,`, + `NFS:` + strings.Replace(fmt.Sprintf("%v", this.NFS), "NFSVolumeSource", "NFSVolumeSource", 1) + `,`, + `RBD:` + strings.Replace(fmt.Sprintf("%v", this.RBD), "RBDVolumeSource", "RBDVolumeSource", 1) + `,`, + `ISCSI:` + strings.Replace(fmt.Sprintf("%v", this.ISCSI), "ISCSIVolumeSource", "ISCSIVolumeSource", 1) + `,`, + `Cinder:` + strings.Replace(fmt.Sprintf("%v", this.Cinder), "CinderVolumeSource", "CinderVolumeSource", 1) + `,`, + `CephFS:` + strings.Replace(fmt.Sprintf("%v", this.CephFS), "CephFSVolumeSource", "CephFSVolumeSource", 1) + `,`, + `FC:` + strings.Replace(fmt.Sprintf("%v", this.FC), "FCVolumeSource", "FCVolumeSource", 1) + `,`, + `Flocker:` + strings.Replace(fmt.Sprintf("%v", this.Flocker), "FlockerVolumeSource", "FlockerVolumeSource", 1) + `,`, + `FlexVolume:` + strings.Replace(fmt.Sprintf("%v", this.FlexVolume), "FlexVolumeSource", "FlexVolumeSource", 1) + `,`, + `AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFileVolumeSource", "AzureFileVolumeSource", 1) + `,`, + `VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`, + `Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`, + `AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeSpec) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&PersistentVolumeSpec{`, + `Capacity:` + mapStringForCapacity + `,`, + `PersistentVolumeSource:` + strings.Replace(strings.Replace(this.PersistentVolumeSource.String(), "PersistentVolumeSource", "PersistentVolumeSource", 1), `&`, ``, 1) + `,`, + `AccessModes:` + fmt.Sprintf("%v", this.AccessModes) + `,`, + `ClaimRef:` + strings.Replace(fmt.Sprintf("%v", this.ClaimRef), "ObjectReference", "ObjectReference", 1) + `,`, + `PersistentVolumeReclaimPolicy:` + fmt.Sprintf("%v", this.PersistentVolumeReclaimPolicy) + `,`, + `}`, + }, "") + return s +} +func (this *PersistentVolumeStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PersistentVolumeStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `}`, + }, "") + return s +} +func (this *Pod) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Pod{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSpec", "PodSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodStatus", "PodStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "WeightedPodAffinityTerm", "WeightedPodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAffinityTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAffinityTerm{`, + `LabelSelector:` + strings.Replace(fmt.Sprintf("%v", this.LabelSelector), "LabelSelector", "k8s_io_kubernetes_pkg_api_unversioned.LabelSelector", 1) + `,`, + `Namespaces:` + fmt.Sprintf("%v", this.Namespaces) + `,`, + `TopologyKey:` + fmt.Sprintf("%v", this.TopologyKey) + `,`, + `}`, + }, "") + return s +} +func (this *PodAntiAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAntiAffinity{`, + `RequiredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RequiredDuringSchedulingIgnoredDuringExecution), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `PreferredDuringSchedulingIgnoredDuringExecution:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PreferredDuringSchedulingIgnoredDuringExecution), "WeightedPodAffinityTerm", "WeightedPodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodAttachOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodAttachOptions{`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, + `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `}`, + }, "") + return s +} +func (this *PodCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *PodExecOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodExecOptions{`, + `Stdin:` + fmt.Sprintf("%v", this.Stdin) + `,`, + `Stdout:` + fmt.Sprintf("%v", this.Stdout) + `,`, + `Stderr:` + fmt.Sprintf("%v", this.Stderr) + `,`, + `TTY:` + fmt.Sprintf("%v", this.TTY) + `,`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `Command:` + fmt.Sprintf("%v", this.Command) + `,`, + `}`, + }, "") + return s +} +func (this *PodList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Pod", "Pod", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodLogOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodLogOptions{`, + `Container:` + fmt.Sprintf("%v", this.Container) + `,`, + `Follow:` + fmt.Sprintf("%v", this.Follow) + `,`, + `Previous:` + fmt.Sprintf("%v", this.Previous) + `,`, + `SinceSeconds:` + valueToStringGenerated(this.SinceSeconds) + `,`, + `SinceTime:` + strings.Replace(fmt.Sprintf("%v", this.SinceTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `Timestamps:` + fmt.Sprintf("%v", this.Timestamps) + `,`, + `TailLines:` + valueToStringGenerated(this.TailLines) + `,`, + `LimitBytes:` + valueToStringGenerated(this.LimitBytes) + `,`, + `}`, + }, "") + return s +} +func (this *PodProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityContext) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityContext{`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "SELinuxOptions", 1) + `,`, + `RunAsUser:` + valueToStringGenerated(this.RunAsUser) + `,`, + `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, + `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, + `FSGroup:` + valueToStringGenerated(this.FSGroup) + `,`, + `}`, + }, "") + return s +} +func (this *PodSignature) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSignature{`, + `PodController:` + strings.Replace(fmt.Sprintf("%v", this.PodController), "OwnerReference", "OwnerReference", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSpec) String() string { + if this == nil { + return "nil" + } + keysForNodeSelector := make([]string, 0, len(this.NodeSelector)) + for k := range this.NodeSelector { + keysForNodeSelector = append(keysForNodeSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForNodeSelector) + mapStringForNodeSelector := "map[string]string{" + for _, k := range keysForNodeSelector { + mapStringForNodeSelector += fmt.Sprintf("%v: %v,", k, this.NodeSelector[k]) + } + mapStringForNodeSelector += "}" + s := strings.Join([]string{`&PodSpec{`, + `Volumes:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Volumes), "Volume", "Volume", 1), `&`, ``, 1) + `,`, + `Containers:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Containers), "Container", "Container", 1), `&`, ``, 1) + `,`, + `RestartPolicy:` + fmt.Sprintf("%v", this.RestartPolicy) + `,`, + `TerminationGracePeriodSeconds:` + valueToStringGenerated(this.TerminationGracePeriodSeconds) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `DNSPolicy:` + fmt.Sprintf("%v", this.DNSPolicy) + `,`, + `NodeSelector:` + mapStringForNodeSelector + `,`, + `ServiceAccountName:` + fmt.Sprintf("%v", this.ServiceAccountName) + `,`, + `DeprecatedServiceAccount:` + fmt.Sprintf("%v", this.DeprecatedServiceAccount) + `,`, + `NodeName:` + fmt.Sprintf("%v", this.NodeName) + `,`, + `HostNetwork:` + fmt.Sprintf("%v", this.HostNetwork) + `,`, + `HostPID:` + fmt.Sprintf("%v", this.HostPID) + `,`, + `HostIPC:` + fmt.Sprintf("%v", this.HostIPC) + `,`, + `SecurityContext:` + strings.Replace(fmt.Sprintf("%v", this.SecurityContext), "PodSecurityContext", "PodSecurityContext", 1) + `,`, + `ImagePullSecrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ImagePullSecrets), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Hostname:` + fmt.Sprintf("%v", this.Hostname) + `,`, + `Subdomain:` + fmt.Sprintf("%v", this.Subdomain) + `,`, + `}`, + }, "") + return s +} +func (this *PodStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodStatus{`, + `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "PodCondition", "PodCondition", 1), `&`, ``, 1) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `HostIP:` + fmt.Sprintf("%v", this.HostIP) + `,`, + `PodIP:` + fmt.Sprintf("%v", this.PodIP) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `ContainerStatuses:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ContainerStatuses), "ContainerStatus", "ContainerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodStatusResult) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodStatusResult{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodStatus", "PodStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplate) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplate{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplateList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplateList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodTemplate", "PodTemplate", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodTemplateSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodTemplateSpec{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSpec", "PodSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Preconditions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Preconditions{`, + `UID:` + valueToStringGenerated(this.UID) + `,`, + `}`, + }, "") + return s +} +func (this *PreferAvoidPodsEntry) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PreferAvoidPodsEntry{`, + `PodSignature:` + strings.Replace(strings.Replace(this.PodSignature.String(), "PodSignature", "PodSignature", 1), `&`, ``, 1) + `,`, + `EvictionTime:` + strings.Replace(strings.Replace(this.EvictionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *PreferredSchedulingTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PreferredSchedulingTerm{`, + `Weight:` + fmt.Sprintf("%v", this.Weight) + `,`, + `Preference:` + strings.Replace(strings.Replace(this.Preference.String(), "NodeSelectorTerm", "NodeSelectorTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Probe) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Probe{`, + `Handler:` + strings.Replace(strings.Replace(this.Handler.String(), "Handler", "Handler", 1), `&`, ``, 1) + `,`, + `InitialDelaySeconds:` + fmt.Sprintf("%v", this.InitialDelaySeconds) + `,`, + `TimeoutSeconds:` + fmt.Sprintf("%v", this.TimeoutSeconds) + `,`, + `PeriodSeconds:` + fmt.Sprintf("%v", this.PeriodSeconds) + `,`, + `SuccessThreshold:` + fmt.Sprintf("%v", this.SuccessThreshold) + `,`, + `FailureThreshold:` + fmt.Sprintf("%v", this.FailureThreshold) + `,`, + `}`, + }, "") + return s +} +func (this *QuobyteVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&QuobyteVolumeSource{`, + `Registry:` + fmt.Sprintf("%v", this.Registry) + `,`, + `Volume:` + fmt.Sprintf("%v", this.Volume) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `}`, + }, "") + return s +} +func (this *RBDVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RBDVolumeSource{`, + `CephMonitors:` + fmt.Sprintf("%v", this.CephMonitors) + `,`, + `RBDImage:` + fmt.Sprintf("%v", this.RBDImage) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `RBDPool:` + fmt.Sprintf("%v", this.RBDPool) + `,`, + `RadosUser:` + fmt.Sprintf("%v", this.RadosUser) + `,`, + `Keyring:` + fmt.Sprintf("%v", this.Keyring) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "LocalObjectReference", "LocalObjectReference", 1) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} +func (this *RangeAllocation) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RangeAllocation{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Range:` + fmt.Sprintf("%v", this.Range) + `,`, + `Data:` + valueToStringGenerated(this.Data) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationController) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationController{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ReplicationControllerSpec", "ReplicationControllerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ReplicationControllerStatus", "ReplicationControllerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ReplicationController", "ReplicationController", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerSpec) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ReplicationControllerSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + mapStringForSelector + `,`, + `Template:` + strings.Replace(fmt.Sprintf("%v", this.Template), "PodTemplateSpec", "PodTemplateSpec", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `FullyLabeledReplicas:` + fmt.Sprintf("%v", this.FullyLabeledReplicas) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceFieldSelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceFieldSelector{`, + `ContainerName:` + fmt.Sprintf("%v", this.ContainerName) + `,`, + `Resource:` + fmt.Sprintf("%v", this.Resource) + `,`, + `Divisor:` + strings.Replace(strings.Replace(this.Divisor.String(), "Quantity", "k8s_io_kubernetes_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuota) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceQuota{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceQuotaSpec", "ResourceQuotaSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceQuotaStatus", "ResourceQuotaStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceQuotaList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ResourceQuota", "ResourceQuota", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaSpec) String() string { + if this == nil { + return "nil" + } + keysForHard := make([]string, 0, len(this.Hard)) + for k := range this.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + mapStringForHard := "ResourceList{" + for _, k := range keysForHard { + mapStringForHard += fmt.Sprintf("%v: %v,", k, this.Hard[ResourceName(k)]) + } + mapStringForHard += "}" + s := strings.Join([]string{`&ResourceQuotaSpec{`, + `Hard:` + mapStringForHard + `,`, + `Scopes:` + fmt.Sprintf("%v", this.Scopes) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceQuotaStatus) String() string { + if this == nil { + return "nil" + } + keysForHard := make([]string, 0, len(this.Hard)) + for k := range this.Hard { + keysForHard = append(keysForHard, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForHard) + mapStringForHard := "ResourceList{" + for _, k := range keysForHard { + mapStringForHard += fmt.Sprintf("%v: %v,", k, this.Hard[ResourceName(k)]) + } + mapStringForHard += "}" + keysForUsed := make([]string, 0, len(this.Used)) + for k := range this.Used { + keysForUsed = append(keysForUsed, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUsed) + mapStringForUsed := "ResourceList{" + for _, k := range keysForUsed { + mapStringForUsed += fmt.Sprintf("%v: %v,", k, this.Used[ResourceName(k)]) + } + mapStringForUsed += "}" + s := strings.Join([]string{`&ResourceQuotaStatus{`, + `Hard:` + mapStringForHard + `,`, + `Used:` + mapStringForUsed + `,`, + `}`, + }, "") + return s +} +func (this *ResourceRequirements) String() string { + if this == nil { + return "nil" + } + keysForLimits := make([]string, 0, len(this.Limits)) + for k := range this.Limits { + keysForLimits = append(keysForLimits, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForLimits) + mapStringForLimits := "ResourceList{" + for _, k := range keysForLimits { + mapStringForLimits += fmt.Sprintf("%v: %v,", k, this.Limits[ResourceName(k)]) + } + mapStringForLimits += "}" + keysForRequests := make([]string, 0, len(this.Requests)) + for k := range this.Requests { + keysForRequests = append(keysForRequests, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForRequests) + mapStringForRequests := "ResourceList{" + for _, k := range keysForRequests { + mapStringForRequests += fmt.Sprintf("%v: %v,", k, this.Requests[ResourceName(k)]) + } + mapStringForRequests += "}" + s := strings.Join([]string{`&ResourceRequirements{`, + `Limits:` + mapStringForLimits + `,`, + `Requests:` + mapStringForRequests + `,`, + `}`, + }, "") + return s +} +func (this *SELinuxOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SELinuxOptions{`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Role:` + fmt.Sprintf("%v", this.Role) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Level:` + fmt.Sprintf("%v", this.Level) + `,`, + `}`, + }, "") + return s +} +func (this *Secret) String() string { + if this == nil { + return "nil" + } + keysForData := make([]string, 0, len(this.Data)) + for k := range this.Data { + keysForData = append(keysForData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForData) + mapStringForData := "map[string][]byte{" + for _, k := range keysForData { + mapStringForData += fmt.Sprintf("%v: %v,", k, this.Data[k]) + } + mapStringForData += "}" + keysForStringData := make([]string, 0, len(this.StringData)) + for k := range this.StringData { + keysForStringData = append(keysForStringData, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForStringData) + mapStringForStringData := "map[string]string{" + for _, k := range keysForStringData { + mapStringForStringData += fmt.Sprintf("%v: %v,", k, this.StringData[k]) + } + mapStringForStringData += "}" + s := strings.Join([]string{`&Secret{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + mapStringForData + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `StringData:` + mapStringForStringData + `,`, + `}`, + }, "") + return s +} +func (this *SecretKeySelector) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretKeySelector{`, + `LocalObjectReference:` + strings.Replace(strings.Replace(this.LocalObjectReference.String(), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `}`, + }, "") + return s +} +func (this *SecretList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Secret", "Secret", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SecretVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecretVolumeSource{`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "KeyToPath", "KeyToPath", 1), `&`, ``, 1) + `,`, + `DefaultMode:` + valueToStringGenerated(this.DefaultMode) + `,`, + `}`, + }, "") + return s +} +func (this *SecurityContext) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SecurityContext{`, + `Capabilities:` + strings.Replace(fmt.Sprintf("%v", this.Capabilities), "Capabilities", "Capabilities", 1) + `,`, + `Privileged:` + valueToStringGenerated(this.Privileged) + `,`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "SELinuxOptions", 1) + `,`, + `RunAsUser:` + valueToStringGenerated(this.RunAsUser) + `,`, + `RunAsNonRoot:` + valueToStringGenerated(this.RunAsNonRoot) + `,`, + `ReadOnlyRootFilesystem:` + valueToStringGenerated(this.ReadOnlyRootFilesystem) + `,`, + `}`, + }, "") + return s +} +func (this *SerializedReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SerializedReference{`, + `Reference:` + strings.Replace(strings.Replace(this.Reference.String(), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Service) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Service{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ServiceSpec", "ServiceSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ServiceStatus", "ServiceStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceAccount) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccount{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "ObjectMeta", 1), `&`, ``, 1) + `,`, + `Secrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Secrets), "ObjectReference", "ObjectReference", 1), `&`, ``, 1) + `,`, + `ImagePullSecrets:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ImagePullSecrets), "LocalObjectReference", "LocalObjectReference", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceAccountList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ServiceAccount", "ServiceAccount", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Service", "Service", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ServicePort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServicePort{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Protocol:` + fmt.Sprintf("%v", this.Protocol) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, + `TargetPort:` + strings.Replace(strings.Replace(this.TargetPort.String(), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `NodePort:` + fmt.Sprintf("%v", this.NodePort) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceProxyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceProxyOptions{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceSpec) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ServiceSpec{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "ServicePort", "ServicePort", 1), `&`, ``, 1) + `,`, + `Selector:` + mapStringForSelector + `,`, + `ClusterIP:` + fmt.Sprintf("%v", this.ClusterIP) + `,`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `ExternalIPs:` + fmt.Sprintf("%v", this.ExternalIPs) + `,`, + `DeprecatedPublicIPs:` + fmt.Sprintf("%v", this.DeprecatedPublicIPs) + `,`, + `SessionAffinity:` + fmt.Sprintf("%v", this.SessionAffinity) + `,`, + `LoadBalancerIP:` + fmt.Sprintf("%v", this.LoadBalancerIP) + `,`, + `LoadBalancerSourceRanges:` + fmt.Sprintf("%v", this.LoadBalancerSourceRanges) + `,`, + `ExternalName:` + fmt.Sprintf("%v", this.ExternalName) + `,`, + `}`, + }, "") + return s +} +func (this *ServiceStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceStatus{`, + `LoadBalancer:` + strings.Replace(strings.Replace(this.LoadBalancer.String(), "LoadBalancerStatus", "LoadBalancerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *TCPSocketAction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TCPSocketAction{`, + `Port:` + strings.Replace(strings.Replace(this.Port.String(), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *Taint) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Taint{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `Effect:` + fmt.Sprintf("%v", this.Effect) + `,`, + `}`, + }, "") + return s +} +func (this *Toleration) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Toleration{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `Effect:` + fmt.Sprintf("%v", this.Effect) + `,`, + `}`, + }, "") + return s +} +func (this *Volume) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Volume{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `VolumeSource:` + strings.Replace(strings.Replace(this.VolumeSource.String(), "VolumeSource", "VolumeSource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeMount) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeMount{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `MountPath:` + fmt.Sprintf("%v", this.MountPath) + `,`, + `SubPath:` + fmt.Sprintf("%v", this.SubPath) + `,`, + `}`, + }, "") + return s +} +func (this *VolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VolumeSource{`, + `HostPath:` + strings.Replace(fmt.Sprintf("%v", this.HostPath), "HostPathVolumeSource", "HostPathVolumeSource", 1) + `,`, + `EmptyDir:` + strings.Replace(fmt.Sprintf("%v", this.EmptyDir), "EmptyDirVolumeSource", "EmptyDirVolumeSource", 1) + `,`, + `GCEPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.GCEPersistentDisk), "GCEPersistentDiskVolumeSource", "GCEPersistentDiskVolumeSource", 1) + `,`, + `AWSElasticBlockStore:` + strings.Replace(fmt.Sprintf("%v", this.AWSElasticBlockStore), "AWSElasticBlockStoreVolumeSource", "AWSElasticBlockStoreVolumeSource", 1) + `,`, + `GitRepo:` + strings.Replace(fmt.Sprintf("%v", this.GitRepo), "GitRepoVolumeSource", "GitRepoVolumeSource", 1) + `,`, + `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "SecretVolumeSource", "SecretVolumeSource", 1) + `,`, + `NFS:` + strings.Replace(fmt.Sprintf("%v", this.NFS), "NFSVolumeSource", "NFSVolumeSource", 1) + `,`, + `ISCSI:` + strings.Replace(fmt.Sprintf("%v", this.ISCSI), "ISCSIVolumeSource", "ISCSIVolumeSource", 1) + `,`, + `Glusterfs:` + strings.Replace(fmt.Sprintf("%v", this.Glusterfs), "GlusterfsVolumeSource", "GlusterfsVolumeSource", 1) + `,`, + `PersistentVolumeClaim:` + strings.Replace(fmt.Sprintf("%v", this.PersistentVolumeClaim), "PersistentVolumeClaimVolumeSource", "PersistentVolumeClaimVolumeSource", 1) + `,`, + `RBD:` + strings.Replace(fmt.Sprintf("%v", this.RBD), "RBDVolumeSource", "RBDVolumeSource", 1) + `,`, + `FlexVolume:` + strings.Replace(fmt.Sprintf("%v", this.FlexVolume), "FlexVolumeSource", "FlexVolumeSource", 1) + `,`, + `Cinder:` + strings.Replace(fmt.Sprintf("%v", this.Cinder), "CinderVolumeSource", "CinderVolumeSource", 1) + `,`, + `CephFS:` + strings.Replace(fmt.Sprintf("%v", this.CephFS), "CephFSVolumeSource", "CephFSVolumeSource", 1) + `,`, + `Flocker:` + strings.Replace(fmt.Sprintf("%v", this.Flocker), "FlockerVolumeSource", "FlockerVolumeSource", 1) + `,`, + `DownwardAPI:` + strings.Replace(fmt.Sprintf("%v", this.DownwardAPI), "DownwardAPIVolumeSource", "DownwardAPIVolumeSource", 1) + `,`, + `FC:` + strings.Replace(fmt.Sprintf("%v", this.FC), "FCVolumeSource", "FCVolumeSource", 1) + `,`, + `AzureFile:` + strings.Replace(fmt.Sprintf("%v", this.AzureFile), "AzureFileVolumeSource", "AzureFileVolumeSource", 1) + `,`, + `ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapVolumeSource", "ConfigMapVolumeSource", 1) + `,`, + `VsphereVolume:` + strings.Replace(fmt.Sprintf("%v", this.VsphereVolume), "VsphereVirtualDiskVolumeSource", "VsphereVirtualDiskVolumeSource", 1) + `,`, + `Quobyte:` + strings.Replace(fmt.Sprintf("%v", this.Quobyte), "QuobyteVolumeSource", "QuobyteVolumeSource", 1) + `,`, + `AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`, + `}`, + }, "") + return s +} +func (this *VsphereVirtualDiskVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&VsphereVirtualDiskVolumeSource{`, + `VolumePath:` + fmt.Sprintf("%v", this.VolumePath) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `}`, + }, "") + return s +} +func (this *WeightedPodAffinityTerm) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WeightedPodAffinityTerm{`, + `Weight:` + fmt.Sprintf("%v", this.Weight) + `,`, + `PodAffinityTerm:` + strings.Replace(strings.Replace(this.PodAffinityTerm.String(), "PodAffinityTerm", "PodAffinityTerm", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *AWSElasticBlockStoreVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AWSElasticBlockStoreVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AWSElasticBlockStoreVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + m.Partition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Partition |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Affinity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Affinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Affinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NodeAffinity == nil { + m.NodeAffinity = &NodeAffinity{} + } + if err := m.NodeAffinity.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodAffinity == nil { + m.PodAffinity = &PodAffinity{} + } + if err := m.PodAffinity.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAntiAffinity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodAntiAffinity == nil { + m.PodAntiAffinity = &PodAntiAffinity{} + } + if err := m.PodAntiAffinity.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AttachedVolume) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AttachedVolume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AttachedVolume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = UniqueVolumeName(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DevicePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DevicePath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AvoidPods) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AvoidPods: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AvoidPods: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferAvoidPods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferAvoidPods = append(m.PreferAvoidPods, PreferAvoidPodsEntry{}) + if err := m.PreferAvoidPods[len(m.PreferAvoidPods)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AzureDiskVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AzureDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AzureDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiskName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DiskName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataDiskURI", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataDiskURI = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CachingMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := AzureDataDiskCachingMode(data[iNdEx:postIndex]) + m.CachingMode = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(data[iNdEx:postIndex]) + m.FSType = &s + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ReadOnly = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AzureFileVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AzureFileVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AzureFileVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShareName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ShareName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Binding) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Binding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Binding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Target.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Capabilities) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Capabilities: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Capabilities: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Add", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Add = append(m.Add, Capability(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Drop", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Drop = append(m.Drop, Capability(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CephFSVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CephFSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CephFSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Monitors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Monitors = append(m.Monitors, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretFile", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretFile = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CinderVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CinderVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CinderVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ComponentConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, ComponentCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ComponentStatusList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ComponentStatusList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ComponentStatusList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ComponentStatus{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMap) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMap: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMap: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Data == nil { + m.Data = make(map[string]string) + } + m.Data[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapKeySelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapKeySelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapKeySelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ConfigMap{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigMapVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Container) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Container: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Container: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Image = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Args = append(m.Args, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WorkingDir", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WorkingDir = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, ContainerPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Env", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Env = append(m.Env, EnvVar{}) + if err := m.Env[len(m.Env)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Resources.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeMounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeMounts = append(m.VolumeMounts, VolumeMount{}) + if err := m.VolumeMounts[len(m.VolumeMounts)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LivenessProbe", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LivenessProbe == nil { + m.LivenessProbe = &Probe{} + } + if err := m.LivenessProbe.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadinessProbe", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ReadinessProbe == nil { + m.ReadinessProbe = &Probe{} + } + if err := m.ReadinessProbe.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Lifecycle", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Lifecycle == nil { + m.Lifecycle = &Lifecycle{} + } + if err := m.Lifecycle.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationMessagePath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullPolicy = PullPolicy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityContext == nil { + m.SecurityContext = &SecurityContext{} + } + if err := m.SecurityContext.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StdinOnce", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.StdinOnce = bool(v != 0) + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerImage) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerImage: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerImage: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Names = append(m.Names, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType) + } + m.SizeBytes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.SizeBytes |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerPort) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType) + } + m.HostPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.HostPort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType) + } + m.ContainerPort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ContainerPort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostIP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerState) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Waiting", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Waiting == nil { + m.Waiting = &ContainerStateWaiting{} + } + if err := m.Waiting.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Running", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Running == nil { + m.Running = &ContainerStateRunning{} + } + if err := m.Running.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Terminated", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Terminated == nil { + m.Terminated = &ContainerStateTerminated{} + } + if err := m.Terminated.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateRunning) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateRunning: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateRunning: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateTerminated) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateTerminated: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateTerminated: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExitCode", wireType) + } + m.ExitCode = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ExitCode |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Signal", wireType) + } + m.Signal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Signal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FinishedAt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FinishedAt.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStateWaiting) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStateWaiting: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStateWaiting: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field State", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.State.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTerminationState", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTerminationState.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Ready", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Ready = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RestartCount", wireType) + } + m.RestartCount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.RestartCount |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Image = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImageID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImageID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonEndpoint) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonEndpoint: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonEndpoint: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeleteOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.GracePeriodSeconds = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preconditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Preconditions == nil { + m.Preconditions = &Preconditions{} + } + if err := m.Preconditions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OrphanDependents", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.OrphanDependents = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DownwardAPIVolumeFile) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIVolumeFile: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIVolumeFile: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FieldRef == nil { + m.FieldRef = &ObjectFieldSelector{} + } + if err := m.FieldRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceFieldRef == nil { + m.ResourceFieldRef = &ResourceFieldSelector{} + } + if err := m.ResourceFieldRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Mode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DownwardAPIVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DownwardAPIVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DownwardAPIVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, DownwardAPIVolumeFile{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EmptyDirVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EmptyDirVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EmptyDirVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Medium", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Medium = StorageMedium(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointAddress) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TargetRef == nil { + m.TargetRef = &ObjectReference{} + } + if err := m.TargetRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(data[iNdEx:postIndex]) + m.NodeName = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointPort) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointSubset) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointSubset: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointSubset: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, EndpointAddress{}) + if err := m.Addresses[len(m.Addresses)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NotReadyAddresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NotReadyAddresses = append(m.NotReadyAddresses, EndpointAddress{}) + if err := m.NotReadyAddresses[len(m.NotReadyAddresses)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, EndpointPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Endpoints) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Endpoints: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Endpoints: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subsets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subsets = append(m.Subsets, EndpointSubset{}) + if err := m.Subsets[len(m.Subsets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EndpointsList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EndpointsList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EndpointsList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Endpoints{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EnvVar) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvVar: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvVar: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValueFrom", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ValueFrom == nil { + m.ValueFrom = &EnvVarSource{} + } + if err := m.ValueFrom.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EnvVarSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EnvVarSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EnvVarSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FieldRef == nil { + m.FieldRef = &ObjectFieldSelector{} + } + if err := m.FieldRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceFieldRef == nil { + m.ResourceFieldRef = &ResourceFieldSelector{} + } + if err := m.ResourceFieldRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMapKeyRef == nil { + m.ConfigMapKeyRef = &ConfigMapKeySelector{} + } + if err := m.ConfigMapKeyRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretKeyRef == nil { + m.SecretKeyRef = &SecretKeySelector{} + } + if err := m.SecretKeyRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Event) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Event: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InvolvedObject", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InvolvedObject.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Source.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FirstTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FirstTimestamp.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTimestamp.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType) + } + m.Count = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Count |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Event{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EventSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Component", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Component = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExecAction) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExecAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExecAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExportOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExportOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExportOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Export", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Export = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Exact = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FCVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FCVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FCVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetWWNs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetWWNs = append(m.TargetWWNs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Lun", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Lun = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlexVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FlexVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlexVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Driver = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Options == nil { + m.Options = make(map[string]string) + } + m.Options[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FlockerVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FlockerVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FlockerVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatasetName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DatasetName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GCEPersistentDiskVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GCEPersistentDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GCEPersistentDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PDName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PDName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + m.Partition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Partition |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GitRepoVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GitRepoVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GitRepoVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Repository", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Repository = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Revision = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Directory", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Directory = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GlusterfsVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GlusterfsVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GlusterfsVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EndpointsName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EndpointsName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPGetAction) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPGetAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPGetAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Port.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scheme = URIScheme(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTPHeaders", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HTTPHeaders = append(m.HTTPHeaders, HTTPHeader{}) + if err := m.HTTPHeaders[len(m.HTTPHeaders)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPHeader) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPHeader: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPHeader: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Handler) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Handler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Handler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Exec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Exec == nil { + m.Exec = &ExecAction{} + } + if err := m.Exec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTPGet", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HTTPGet == nil { + m.HTTPGet = &HTTPGetAction{} + } + if err := m.HTTPGet.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TCPSocket", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TCPSocket == nil { + m.TCPSocket = &TCPSocketAction{} + } + if err := m.TCPSocket.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostPathVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostPathVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostPathVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ISCSIVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ISCSIVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ISCSIVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetPortal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetPortal = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IQN", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IQN = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Lun", wireType) + } + m.Lun = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Lun |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSIInterface", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ISCSIInterface = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *KeyToPath) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: KeyToPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: KeyToPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Mode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Lifecycle) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Lifecycle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Lifecycle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PostStart", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PostStart == nil { + m.PostStart = &Handler{} + } + if err := m.PostStart.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreStop", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PreStop == nil { + m.PreStop = &Handler{} + } + if err := m.PreStop.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRange) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeItem) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeItem: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeItem: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = LimitType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Max == nil { + m.Max = make(ResourceList) + } + m.Max[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Min == nil { + m.Min = make(ResourceList) + } + m.Min[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Default", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Default == nil { + m.Default = make(ResourceList) + } + m.Default[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultRequest", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.DefaultRequest == nil { + m.DefaultRequest = make(ResourceList) + } + m.DefaultRequest[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxLimitRequestRatio", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.MaxLimitRequestRatio == nil { + m.MaxLimitRequestRatio = make(ResourceList) + } + m.MaxLimitRequestRatio[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, LimitRange{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LimitRangeSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LimitRangeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LimitRangeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Limits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Limits = append(m.Limits, LimitRangeItem{}) + if err := m.Limits[len(m.Limits)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *List) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: List: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: List: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, k8s_io_kubernetes_pkg_runtime.RawExtension{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LabelSelector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldSelector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Watch", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Watch = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TimeoutSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LoadBalancerIngress) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LoadBalancerIngress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LoadBalancerIngress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LoadBalancerStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LoadBalancerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LoadBalancerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ingress = append(m.Ingress, LoadBalancerIngress{}) + if err := m.Ingress[len(m.Ingress)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalObjectReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NFSVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NFSVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NFSVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Server", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Server = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Namespace) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Namespace: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Namespace: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Namespace{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalizers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Finalizers = append(m.Finalizers, FinalizerName(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NamespaceStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NamespaceStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NamespaceStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = NamespacePhase(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Node) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Node: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Node: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeAddress) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeAddress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = NodeAddressType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeAffinity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RequiredDuringSchedulingIgnoredDuringExecution == nil { + m.RequiredDuringSchedulingIgnoredDuringExecution = &NodeSelector{} + } + if err := m.RequiredDuringSchedulingIgnoredDuringExecution.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, PreferredSchedulingTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = NodeConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastHeartbeatTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastHeartbeatTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeDaemonEndpoints) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeDaemonEndpoints: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeDaemonEndpoints: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeletEndpoint", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.KubeletEndpoint.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Node{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeProxyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeSelectorTerms", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeSelectorTerms = append(m.NodeSelectorTerms, NodeSelectorTerm{}) + if err := m.NodeSelectorTerms[len(m.NodeSelectorTerms)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelectorRequirement) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = NodeSelectorOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSelectorTerm) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSelectorTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSelectorTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, NodeSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodCIDR", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodCIDR = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProviderID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProviderID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Unschedulable", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Unschedulable = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + m.Capacity[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Allocatable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Allocatable == nil { + m.Allocatable = make(ResourceList) + } + m.Allocatable[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = NodePhase(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, NodeCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, NodeAddress{}) + if err := m.Addresses[len(m.Addresses)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DaemonEndpoints", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DaemonEndpoints.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeInfo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NodeInfo.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Images", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Images = append(m.Images, ContainerImage{}) + if err := m.Images[len(m.Images)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumesInUse", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumesInUse = append(m.VolumesInUse, UniqueVolumeName(data[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumesAttached", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumesAttached = append(m.VolumesAttached, AttachedVolume{}) + if err := m.VolumesAttached[len(m.VolumesAttached)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NodeSystemInfo) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeSystemInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeSystemInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MachineID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MachineID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SystemUUID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SystemUUID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BootID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BootID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KernelVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KernelVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OSImage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OSImage = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerRuntimeVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerRuntimeVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeletVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KubeletVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeProxyVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KubeProxyVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OperatingSystem", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OperatingSystem = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Architecture", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Architecture = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectFieldSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectFieldSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectFieldSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldPath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectMeta) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GenerateName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.GenerateName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SelfLink", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SelfLink = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_kubernetes_pkg_types.UID(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType) + } + m.Generation = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Generation |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreationTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CreationTimestamp.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionTimestamp", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DeletionTimestamp == nil { + m.DeletionTimestamp = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.DeletionTimestamp.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DeletionGracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DeletionGracePeriodSeconds = &v + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Labels == nil { + m.Labels = make(map[string]string) + } + m.Labels[mapkey] = mapvalue + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + m.Annotations[mapkey] = mapvalue + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnerReferences", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnerReferences = append(m.OwnerReferences, OwnerReference{}) + if err := m.OwnerReferences[len(m.OwnerReferences)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalizers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Finalizers = append(m.Finalizers, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ObjectReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_kubernetes_pkg_types.UID(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldPath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OwnerReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OwnerReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OwnerReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = k8s_io_kubernetes_pkg_types.UID(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Controller = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolume) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaim) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaim: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaim: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PersistentVolumeClaim{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Resources.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_kubernetes_pkg_api_unversioned.LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PersistentVolumeClaimPhase(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(data[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + m.Capacity[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeClaimVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeClaimVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeClaimVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClaimName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PersistentVolume{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GCEPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GCEPersistentDisk == nil { + m.GCEPersistentDisk = &GCEPersistentDiskVolumeSource{} + } + if err := m.GCEPersistentDisk.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AWSElasticBlockStore", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AWSElasticBlockStore == nil { + m.AWSElasticBlockStore = &AWSElasticBlockStoreVolumeSource{} + } + if err := m.AWSElasticBlockStore.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HostPath == nil { + m.HostPath = &HostPathVolumeSource{} + } + if err := m.HostPath.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Glusterfs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Glusterfs == nil { + m.Glusterfs = &GlusterfsVolumeSource{} + } + if err := m.Glusterfs.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NFS == nil { + m.NFS = &NFSVolumeSource{} + } + if err := m.NFS.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBD", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RBD == nil { + m.RBD = &RBDVolumeSource{} + } + if err := m.RBD.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ISCSI == nil { + m.ISCSI = &ISCSIVolumeSource{} + } + if err := m.ISCSI.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cinder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Cinder == nil { + m.Cinder = &CinderVolumeSource{} + } + if err := m.Cinder.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CephFS == nil { + m.CephFS = &CephFSVolumeSource{} + } + if err := m.CephFS.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FC == nil { + m.FC = &FCVolumeSource{} + } + if err := m.FC.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flocker", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flocker == nil { + m.Flocker = &FlockerVolumeSource{} + } + if err := m.Flocker.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FlexVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FlexVolume == nil { + m.FlexVolume = &FlexVolumeSource{} + } + if err := m.FlexVolume.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureFile", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureFile == nil { + m.AzureFile = &AzureFileVolumeSource{} + } + if err := m.AzureFile.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VsphereVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VsphereVolume == nil { + m.VsphereVolume = &VsphereVirtualDiskVolumeSource{} + } + if err := m.VsphereVolume.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quobyte", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Quobyte == nil { + m.Quobyte = &QuobyteVolumeSource{} + } + if err := m.Quobyte.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureDisk == nil { + m.AzureDisk = &AzureDiskVolumeSource{} + } + if err := m.AzureDisk.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + m.Capacity[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeSource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PersistentVolumeSource.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessModes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessModes = append(m.AccessModes, PersistentVolumeAccessMode(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ClaimRef == nil { + m.ClaimRef = &ObjectReference{} + } + if err := m.ClaimRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeReclaimPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PersistentVolumeStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PersistentVolumeStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PersistentVolumeStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PersistentVolumePhase(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Pod) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Pod: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Pod: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAffinity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{}) + if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAffinityTerm) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAffinityTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAffinityTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LabelSelector == nil { + m.LabelSelector = &k8s_io_kubernetes_pkg_api_unversioned.LabelSelector{} + } + if err := m.LabelSelector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TopologyKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TopologyKey = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAntiAffinity) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAntiAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAntiAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{}) + if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{}) + if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodAttachOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodAttachOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodAttachOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdout = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stderr = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = PodConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodExecOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodExecOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodExecOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdin = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stdout = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Stderr = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TTY = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Command = append(m.Command, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Pod{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodLogOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodLogOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodLogOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Container = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Follow", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Follow = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Previous", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Previous = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SinceSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SinceSeconds = &v + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SinceTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SinceTime == nil { + m.SinceTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.SinceTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timestamps", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Timestamps = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TailLines", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TailLines = &v + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LimitBytes", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.LimitBytes = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodProxyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityContext) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityContext: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsUser = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsNonRoot", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.RunAsNonRoot = &b + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FSGroup", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.FSGroup = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSignature) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSignature: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSignature: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodController", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodController == nil { + m.PodController = &OwnerReference{} + } + if err := m.PodController.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volumes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volumes = append(m.Volumes, Volume{}) + if err := m.Volumes[len(m.Volumes)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Containers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Containers = append(m.Containers, Container{}) + if err := m.Containers[len(m.Containers)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RestartPolicy = RestartPolicy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationGracePeriodSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TerminationGracePeriodSeconds = &v + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DNSPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DNSPolicy = DNSPolicy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.NodeSelector == nil { + m.NodeSelector = make(map[string]string) + } + m.NodeSelector[mapkey] = mapvalue + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceAccountName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedServiceAccount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DeprecatedServiceAccount = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostNetwork", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostNetwork = bool(v != 0) + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPID", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostPID = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIPC", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostIPC = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecurityContext", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecurityContext == nil { + m.SecurityContext = &PodSecurityContext{} + } + if err := m.SecurityContext.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{}) + if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hostname = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subdomain", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subdomain = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Phase = PodPhase(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, PodCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostIP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodIP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.StartTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerStatuses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerStatuses = append(m.ContainerStatuses, ContainerStatus{}) + if err := m.ContainerStatuses[len(m.ContainerStatuses)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodStatusResult) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodStatusResult: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodStatusResult: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplate) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplateList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplateList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplateList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodTemplate{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodTemplateSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodTemplateSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Preconditions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Preconditions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Preconditions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_kubernetes_pkg_types.UID(data[iNdEx:postIndex]) + m.UID = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PreferAvoidPodsEntry) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PreferAvoidPodsEntry: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PreferAvoidPodsEntry: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSignature", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodSignature.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvictionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.EvictionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PreferredSchedulingTerm) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PreferredSchedulingTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PreferredSchedulingTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Weight |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Preference.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Probe) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Probe: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Probe: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Handler", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Handler.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InitialDelaySeconds", wireType) + } + m.InitialDelaySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.InitialDelaySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + m.TimeoutSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.TimeoutSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PeriodSeconds", wireType) + } + m.PeriodSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.PeriodSeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SuccessThreshold", wireType) + } + m.SuccessThreshold = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.SuccessThreshold |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FailureThreshold", wireType) + } + m.FailureThreshold = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.FailureThreshold |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QuobyteVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QuobyteVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QuobyteVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Registry", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Registry = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volume", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volume = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RBDVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RBDVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RBDVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephMonitors", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CephMonitors = append(m.CephMonitors, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBDImage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RBDImage = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBDPool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RBDPool = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RadosUser", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RadosUser = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Keyring", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Keyring = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SecretRef == nil { + m.SecretRef = &LocalObjectReference{} + } + if err := m.SecretRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RangeAllocation) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RangeAllocation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RangeAllocation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Range", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Range = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationController) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationController: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationController: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ReplicationController{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Selector == nil { + m.Selector = make(map[string]string) + } + m.Selector[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Template == nil { + m.Template = &PodTemplateSpec{} + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FullyLabeledReplicas", wireType) + } + m.FullyLabeledReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.FullyLabeledReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceFieldSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceFieldSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceFieldSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Divisor", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Divisor.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuota) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuota: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuota: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ResourceQuota{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hard", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Hard == nil { + m.Hard = make(ResourceList) + } + m.Hard[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Scopes = append(m.Scopes, ResourceQuotaScope(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceQuotaStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceQuotaStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceQuotaStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hard", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Hard == nil { + m.Hard = make(ResourceList) + } + m.Hard[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Used", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Used == nil { + m.Used = make(ResourceList) + } + m.Used[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceRequirements) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceRequirements: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceRequirements: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Limits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Limits == nil { + m.Limits = make(ResourceList) + } + m.Limits[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Requests == nil { + m.Requests = make(ResourceList) + } + m.Requests[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SELinuxOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SELinuxOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SELinuxOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Role", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Role = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Level", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Level = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Secret) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Secret: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Secret: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapbyteLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapbyteLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intMapbyteLen := int(mapbyteLen) + if intMapbyteLen < 0 { + return ErrInvalidLengthGenerated + } + postbytesIndex := iNdEx + intMapbyteLen + if postbytesIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := make([]byte, mapbyteLen) + copy(mapvalue, data[iNdEx:postbytesIndex]) + iNdEx = postbytesIndex + if m.Data == nil { + m.Data = make(map[string][]byte) + } + m.Data[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = SecretType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StringData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.StringData == nil { + m.StringData = make(map[string]string) + } + m.StringData[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretKeySelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretKeySelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretKeySelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LocalObjectReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LocalObjectReference.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Secret{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecretVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecretVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecretVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, KeyToPath{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultMode", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultMode = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SecurityContext) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SecurityContext: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SecurityContext: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capabilities", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Capabilities == nil { + m.Capabilities = &Capabilities{} + } + if err := m.Capabilities.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Privileged = &b + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RunAsUser = &v + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsNonRoot", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.RunAsNonRoot = &b + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnlyRootFilesystem", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ReadOnlyRootFilesystem = &b + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SerializedReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SerializedReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SerializedReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Reference.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Service) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Service: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Service: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceAccount) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceAccount: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccount: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Secrets = append(m.Secrets, ObjectReference{}) + if err := m.Secrets[len(m.Secrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePullSecrets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImagePullSecrets = append(m.ImagePullSecrets, LocalObjectReference{}) + if err := m.ImagePullSecrets[len(m.ImagePullSecrets)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceAccountList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceAccountList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccountList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ServiceAccount{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Service{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServicePort) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServicePort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServicePort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Protocol = Protocol(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + m.Port = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Port |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetPort", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetPort.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NodePort", wireType) + } + m.NodePort = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.NodePort |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceProxyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceProxyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceProxyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, ServicePort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Selector == nil { + m.Selector = make(map[string]string) + } + m.Selector[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterIP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = ServiceType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalIPs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalIPs = append(m.ExternalIPs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedPublicIPs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DeprecatedPublicIPs = append(m.DeprecatedPublicIPs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionAffinity", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SessionAffinity = ServiceAffinity(data[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerIP", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LoadBalancerIP = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancerSourceRanges", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LoadBalancerSourceRanges = append(m.LoadBalancerSourceRanges, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExternalName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LoadBalancer.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TCPSocketAction) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TCPSocketAction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TCPSocketAction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Port.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Taint) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Taint: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Taint: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Effect = TaintEffect(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Toleration) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Toleration: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Toleration: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = TolerationOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Effect = TaintEffect(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Volume) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Volume: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Volume: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.VolumeSource.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VolumeMount) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeMount: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeMount: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountPath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SubPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SubPath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPath", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HostPath == nil { + m.HostPath = &HostPathVolumeSource{} + } + if err := m.HostPath.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EmptyDir", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.EmptyDir == nil { + m.EmptyDir = &EmptyDirVolumeSource{} + } + if err := m.EmptyDir.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GCEPersistentDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GCEPersistentDisk == nil { + m.GCEPersistentDisk = &GCEPersistentDiskVolumeSource{} + } + if err := m.GCEPersistentDisk.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AWSElasticBlockStore", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AWSElasticBlockStore == nil { + m.AWSElasticBlockStore = &AWSElasticBlockStoreVolumeSource{} + } + if err := m.AWSElasticBlockStore.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitRepo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GitRepo == nil { + m.GitRepo = &GitRepoVolumeSource{} + } + if err := m.GitRepo.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Secret == nil { + m.Secret = &SecretVolumeSource{} + } + if err := m.Secret.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NFS == nil { + m.NFS = &NFSVolumeSource{} + } + if err := m.NFS.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ISCSI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ISCSI == nil { + m.ISCSI = &ISCSIVolumeSource{} + } + if err := m.ISCSI.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Glusterfs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Glusterfs == nil { + m.Glusterfs = &GlusterfsVolumeSource{} + } + if err := m.Glusterfs.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PersistentVolumeClaim", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PersistentVolumeClaim == nil { + m.PersistentVolumeClaim = &PersistentVolumeClaimVolumeSource{} + } + if err := m.PersistentVolumeClaim.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RBD", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RBD == nil { + m.RBD = &RBDVolumeSource{} + } + if err := m.RBD.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FlexVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FlexVolume == nil { + m.FlexVolume = &FlexVolumeSource{} + } + if err := m.FlexVolume.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cinder", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Cinder == nil { + m.Cinder = &CinderVolumeSource{} + } + if err := m.Cinder.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CephFS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CephFS == nil { + m.CephFS = &CephFSVolumeSource{} + } + if err := m.CephFS.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Flocker", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Flocker == nil { + m.Flocker = &FlockerVolumeSource{} + } + if err := m.Flocker.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DownwardAPI", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DownwardAPI == nil { + m.DownwardAPI = &DownwardAPIVolumeSource{} + } + if err := m.DownwardAPI.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FC == nil { + m.FC = &FCVolumeSource{} + } + if err := m.FC.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureFile", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureFile == nil { + m.AzureFile = &AzureFileVolumeSource{} + } + if err := m.AzureFile.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMap", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ConfigMap == nil { + m.ConfigMap = &ConfigMapVolumeSource{} + } + if err := m.ConfigMap.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VsphereVolume", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VsphereVolume == nil { + m.VsphereVolume = &VsphereVirtualDiskVolumeSource{} + } + if err := m.VsphereVolume.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Quobyte", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Quobyte == nil { + m.Quobyte = &QuobyteVolumeSource{} + } + if err := m.Quobyte.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AzureDisk", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AzureDisk == nil { + m.AzureDisk = &AzureDiskVolumeSource{} + } + if err := m.AzureDisk.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VsphereVirtualDiskVolumeSource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VsphereVirtualDiskVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VsphereVirtualDiskVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumePath = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FSType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WeightedPodAffinityTerm) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: WeightedPodAffinityTerm: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WeightedPodAffinityTerm: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Weight |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodAffinityTerm", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodAffinityTerm.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 9750 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x8c, 0x24, 0xc7, + 0x75, 0x98, 0x66, 0x66, 0xbf, 0xa6, 0xf6, 0xf3, 0xfa, 0x8e, 0xc7, 0xe5, 0x4a, 0xfc, 0x50, 0x8b, + 0xa4, 0xc8, 0x23, 0x6f, 0x8f, 0x77, 0x24, 0x4d, 0x52, 0x52, 0x24, 0xee, 0xee, 0xec, 0xde, 0xad, + 0x6f, 0xef, 0x6e, 0xf8, 0x66, 0xef, 0x4e, 0xb2, 0x18, 0x99, 0xbd, 0x33, 0xbd, 0xbb, 0xad, 0x9b, + 0x9d, 0x1e, 0x76, 0xf7, 0xec, 0xdd, 0x52, 0x31, 0xe0, 0x18, 0x8e, 0x83, 0xc0, 0x86, 0x23, 0x03, + 0x31, 0x12, 0x20, 0x09, 0xe2, 0x04, 0x88, 0x91, 0xc4, 0x88, 0x63, 0x39, 0x8a, 0x2d, 0x25, 0x86, + 0x11, 0x20, 0x8e, 0xa0, 0x7c, 0x38, 0x90, 0x81, 0x20, 0x36, 0x6c, 0x40, 0xb1, 0x6c, 0x04, 0xf9, + 0x91, 0x3f, 0x01, 0x92, 0x3f, 0x21, 0x8c, 0x24, 0xf5, 0xea, 0xbb, 0x7a, 0x7a, 0xb6, 0x7b, 0x96, + 0x37, 0x9b, 0xb3, 0x91, 0x1f, 0x0b, 0xec, 0xbc, 0xf7, 0xea, 0xd5, 0x47, 0x57, 0xbd, 0x7a, 0xef, + 0xd5, 0xab, 0x57, 0xe4, 0xe5, 0x7b, 0x6f, 0xc6, 0xcb, 0x41, 0x78, 0xe9, 0x5e, 0x6f, 0xc7, 0x8f, + 0x3a, 0x7e, 0xe2, 0xc7, 0x97, 0xba, 0xf7, 0xf6, 0x2e, 0x79, 0xdd, 0xe0, 0xd2, 0xe1, 0xe5, 0x4b, + 0x7b, 0x7e, 0xc7, 0x8f, 0xbc, 0xc4, 0x6f, 0x2d, 0x77, 0xa3, 0x30, 0x09, 0x9d, 0x4f, 0x70, 0xea, + 0x65, 0x4d, 0xbd, 0x4c, 0xa9, 0x97, 0x29, 0xf5, 0xf2, 0xe1, 0xe5, 0xa5, 0x8b, 0x7b, 0x41, 0xb2, + 0xdf, 0xdb, 0x59, 0x6e, 0x86, 0x07, 0x97, 0xf6, 0xc2, 0xbd, 0xf0, 0x12, 0x2b, 0xb4, 0xd3, 0xdb, + 0x65, 0xbf, 0xd8, 0x0f, 0xf6, 0x1f, 0x67, 0xb6, 0x74, 0x65, 0x70, 0xd5, 0x91, 0x1f, 0x87, 0xbd, + 0xa8, 0xe9, 0xa7, 0x1b, 0xb0, 0xf4, 0xfa, 0xe0, 0x32, 0xbd, 0xce, 0xa1, 0x1f, 0xc5, 0x41, 0xd8, + 0xf1, 0x5b, 0x7d, 0xc5, 0x2e, 0x66, 0x17, 0x8b, 0x7a, 0x9d, 0x24, 0x38, 0xe8, 0xaf, 0xe5, 0x72, + 0x36, 0x79, 0x2f, 0x09, 0xda, 0x97, 0x82, 0x4e, 0x12, 0x27, 0x51, 0xba, 0x88, 0xfb, 0xbb, 0x25, + 0xf2, 0xcc, 0xca, 0xdd, 0xc6, 0x7a, 0xdb, 0x8b, 0x93, 0xa0, 0xb9, 0xda, 0x0e, 0x9b, 0xf7, 0x1a, + 0x49, 0x18, 0xf9, 0x77, 0xc2, 0x76, 0xef, 0xc0, 0x6f, 0xb0, 0xde, 0x38, 0x2f, 0x93, 0xa9, 0x43, + 0xf6, 0x7b, 0xb3, 0xb6, 0x58, 0x7a, 0xa6, 0xf4, 0x42, 0x75, 0x75, 0xe1, 0xbb, 0xdf, 0x7f, 0xfa, + 0x63, 0x7f, 0xf4, 0xfd, 0xa7, 0xa7, 0xee, 0x08, 0x38, 0x28, 0x0a, 0xe7, 0x79, 0x32, 0xb1, 0x1b, + 0x6f, 0x1f, 0x75, 0xfd, 0xc5, 0x32, 0xa3, 0x9d, 0x13, 0xb4, 0x13, 0x1b, 0x0d, 0x84, 0x82, 0xc0, + 0x3a, 0x97, 0x48, 0xb5, 0xeb, 0x45, 0x49, 0x90, 0xd0, 0xbe, 0x2f, 0x56, 0x28, 0xe9, 0xf8, 0xea, + 0x19, 0x41, 0x5a, 0xad, 0x4b, 0x04, 0x68, 0x1a, 0x6c, 0x46, 0xe4, 0x7b, 0xad, 0x5b, 0x9d, 0xf6, + 0xd1, 0xe2, 0x18, 0xa5, 0x9f, 0xd2, 0xcd, 0x00, 0x01, 0x07, 0x45, 0xe1, 0x7e, 0xab, 0x4c, 0xa6, + 0x56, 0x76, 0x77, 0x83, 0x4e, 0x90, 0x1c, 0x39, 0xef, 0x91, 0x99, 0x4e, 0xd8, 0xf2, 0xe5, 0x6f, + 0xd6, 0x8b, 0xe9, 0x2b, 0x17, 0x96, 0x8f, 0x9b, 0x17, 0xcb, 0x37, 0x8d, 0x12, 0xab, 0x0b, 0xb4, + 0x9a, 0x19, 0x13, 0x02, 0x16, 0x47, 0xe7, 0x5d, 0x32, 0xdd, 0x0d, 0x5b, 0xaa, 0x82, 0x32, 0xab, + 0xe0, 0xc5, 0xe3, 0x2b, 0xa8, 0xeb, 0x02, 0xab, 0xf3, 0x94, 0xff, 0xb4, 0x01, 0x00, 0x93, 0x9d, + 0xd3, 0x26, 0xf3, 0xf8, 0x93, 0x7e, 0x76, 0x55, 0x43, 0x85, 0xd5, 0x70, 0x31, 0xbf, 0x06, 0xa3, + 0xd0, 0xea, 0x59, 0x5a, 0xcb, 0x7c, 0x0a, 0x08, 0x69, 0xd6, 0xee, 0x07, 0x64, 0x6e, 0x25, 0x49, + 0xbc, 0xe6, 0xbe, 0xdf, 0xe2, 0xdf, 0xd7, 0x79, 0x8d, 0x8c, 0x75, 0xbc, 0x03, 0x5f, 0x7c, 0xfd, + 0x67, 0xc4, 0xb0, 0x8f, 0xdd, 0xa4, 0xb0, 0x0f, 0xbf, 0xff, 0xf4, 0xc2, 0xed, 0x4e, 0xf0, 0x7e, + 0x4f, 0xcc, 0x19, 0x84, 0x01, 0xa3, 0x76, 0xae, 0x10, 0xd2, 0xf2, 0x0f, 0x83, 0xa6, 0x5f, 0xf7, + 0x92, 0x7d, 0x31, 0x1b, 0x1c, 0x51, 0x96, 0xd4, 0x14, 0x06, 0x0c, 0x2a, 0xf7, 0x27, 0x4a, 0xa4, + 0xba, 0x72, 0x18, 0x06, 0x2d, 0xda, 0xca, 0xd8, 0xe9, 0xd1, 0x7e, 0x47, 0xfe, 0xae, 0x1f, 0x29, + 0x10, 0x6d, 0x42, 0x85, 0xf6, 0xfb, 0x4a, 0x4e, 0xbf, 0xed, 0x42, 0xeb, 0x9d, 0x24, 0x3a, 0x5a, + 0x7d, 0x5c, 0x54, 0x3d, 0x9f, 0xc2, 0x42, 0xba, 0x0e, 0xf7, 0xe7, 0xca, 0xe4, 0xb1, 0x95, 0x0f, + 0x7a, 0x91, 0x5f, 0x0b, 0xe2, 0x7b, 0xe9, 0xa5, 0xd0, 0xa2, 0xb0, 0x9b, 0x7a, 0x30, 0xd4, 0x1c, + 0xac, 0x09, 0x38, 0x28, 0x0a, 0xe7, 0x22, 0x99, 0xc4, 0xff, 0x6f, 0xc3, 0xa6, 0xe8, 0xfd, 0x59, + 0x41, 0x3c, 0x5d, 0xf3, 0x12, 0xaf, 0xc6, 0x51, 0x20, 0x69, 0x9c, 0x1b, 0x64, 0xba, 0x49, 0x47, + 0x3d, 0xe8, 0xec, 0xdd, 0xa0, 0x53, 0x8b, 0x7d, 0xe1, 0xea, 0xea, 0x4b, 0x48, 0xbe, 0xa6, 0xc1, + 0x74, 0xbc, 0x17, 0x79, 0xdb, 0x04, 0x0b, 0x03, 0x07, 0x66, 0x79, 0xc7, 0x55, 0x0b, 0x71, 0x8c, + 0x71, 0x22, 0x19, 0x8b, 0xf0, 0x05, 0x63, 0x4d, 0x8d, 0xb3, 0x35, 0x35, 0x33, 0x60, 0x3d, 0xfd, + 0xa3, 0x92, 0x18, 0x93, 0x8d, 0xa0, 0x6d, 0x8b, 0x07, 0xfa, 0x99, 0x63, 0xbf, 0x19, 0xf9, 0x89, + 0x31, 0x2a, 0xea, 0x33, 0x37, 0x14, 0x06, 0x0c, 0x2a, 0x5c, 0xfc, 0xf1, 0xbe, 0x17, 0xb1, 0xd9, + 0x22, 0xc6, 0x46, 0x2d, 0xfe, 0x86, 0x44, 0x80, 0xa6, 0xb1, 0x16, 0x7f, 0x25, 0x77, 0xf1, 0xff, + 0xf3, 0x12, 0x99, 0x5c, 0x0d, 0x3a, 0x2d, 0x3a, 0x14, 0xce, 0x17, 0xc9, 0xd4, 0x81, 0x9f, 0x78, + 0x2d, 0x3a, 0x5c, 0x62, 0xdd, 0xbf, 0x70, 0xfc, 0xe4, 0xb9, 0xb5, 0xf3, 0x55, 0xbf, 0x99, 0xdc, + 0xa0, 0x65, 0x74, 0x37, 0x34, 0x0c, 0x14, 0x37, 0xe7, 0x36, 0x99, 0x48, 0xbc, 0x68, 0xcf, 0x4f, + 0xc4, 0x72, 0xbf, 0x58, 0x84, 0x2f, 0xe0, 0x54, 0xf3, 0x3b, 0x4d, 0x5f, 0x0b, 0xc6, 0x6d, 0xc6, + 0x04, 0x04, 0x33, 0xb7, 0x49, 0x66, 0xd6, 0xbc, 0xae, 0xb7, 0x13, 0xb4, 0xa9, 0xdc, 0xf3, 0x63, + 0xe7, 0xd3, 0xa4, 0xe2, 0xb5, 0x5a, 0x6c, 0xe2, 0x57, 0x57, 0x1f, 0xa3, 0x05, 0x2a, 0x2b, 0xad, + 0x16, 0x9d, 0x06, 0x44, 0x51, 0x1d, 0x01, 0x52, 0x38, 0x17, 0xc8, 0x58, 0x2b, 0x0a, 0xbb, 0xb4, + 0x35, 0x48, 0x79, 0x1e, 0x57, 0x68, 0x8d, 0xfe, 0x4e, 0x91, 0x32, 0x1a, 0xf7, 0x5f, 0x97, 0x89, + 0xb3, 0xe6, 0x77, 0xf7, 0x37, 0x1a, 0xd6, 0xb7, 0xa4, 0xf3, 0xe1, 0x20, 0xa4, 0x42, 0x20, 0x8c, + 0x62, 0x51, 0x21, 0x9b, 0x0f, 0x37, 0x04, 0x0c, 0x14, 0xd6, 0x79, 0x86, 0x8c, 0x75, 0xf5, 0xb2, + 0x9e, 0x91, 0x22, 0x81, 0x2d, 0x68, 0x86, 0x41, 0x8a, 0x5e, 0xec, 0x47, 0x62, 0x1e, 0x2b, 0x8a, + 0xdb, 0x14, 0x06, 0x0c, 0xa3, 0x67, 0x0e, 0xce, 0x29, 0x31, 0x4b, 0x53, 0x33, 0x07, 0x31, 0x60, + 0x50, 0x39, 0x3f, 0x4a, 0x67, 0x0e, 0xfb, 0x45, 0x07, 0x92, 0x4d, 0xd9, 0x5c, 0x61, 0xb0, 0x15, + 0x36, 0xbd, 0x76, 0x7a, 0xf0, 0x67, 0xd9, 0x4c, 0x93, 0x8c, 0x40, 0xf3, 0xb4, 0x66, 0xda, 0x44, + 0xee, 0x4c, 0xfb, 0x1b, 0x25, 0x3a, 0x8e, 0x74, 0xa6, 0xf9, 0xd1, 0x29, 0x6c, 0x99, 0xc3, 0x2d, + 0x82, 0x3f, 0xc0, 0xa6, 0x85, 0x07, 0x5d, 0xaa, 0x5a, 0x74, 0x92, 0xb5, 0x90, 0xae, 0x06, 0xb6, + 0x8d, 0x7e, 0x86, 0x8c, 0x25, 0x58, 0x15, 0x6f, 0xd6, 0xf3, 0xf2, 0xb3, 0x60, 0x05, 0x74, 0xa6, + 0x9c, 0xef, 0x2f, 0xc1, 0x9a, 0xc0, 0xca, 0x38, 0x6f, 0x91, 0x89, 0x38, 0xf1, 0x92, 0x5e, 0x2c, + 0x1a, 0xfa, 0x49, 0xd9, 0xd0, 0x06, 0x83, 0xd2, 0xf2, 0xf3, 0xaa, 0x18, 0x07, 0x81, 0x28, 0xe0, + 0xbc, 0x48, 0x26, 0x0f, 0xfc, 0x38, 0xf6, 0xf6, 0xa4, 0x60, 0x9b, 0x17, 0x65, 0x27, 0x6f, 0x70, + 0x30, 0x48, 0xbc, 0xf3, 0x29, 0x32, 0xee, 0x47, 0x51, 0x18, 0x89, 0x19, 0x31, 0x2b, 0x08, 0xc7, + 0xd7, 0x11, 0x08, 0x1c, 0xe7, 0xfe, 0x4e, 0x89, 0xcc, 0xab, 0xb6, 0xf2, 0xba, 0x46, 0xb8, 0xd4, + 0x5b, 0x84, 0x34, 0x65, 0xc7, 0x62, 0xb6, 0xc0, 0xa6, 0xaf, 0xbc, 0x72, 0x3c, 0xef, 0xfe, 0x81, + 0xd4, 0x75, 0x28, 0x50, 0x0c, 0x06, 0x5f, 0xf7, 0xbb, 0x25, 0x72, 0x36, 0xd5, 0xa7, 0xad, 0x20, + 0x4e, 0x9c, 0x3f, 0xdf, 0xd7, 0xaf, 0x4b, 0xc7, 0xd4, 0x6d, 0x68, 0x94, 0xcb, 0x58, 0x9c, 0x75, + 0x4f, 0x4d, 0x14, 0x09, 0x31, 0x3a, 0x07, 0x64, 0x3c, 0x48, 0xfc, 0x03, 0xd9, 0xaf, 0x8b, 0x05, + 0xfb, 0xc5, 0x1b, 0xa8, 0x3f, 0xcf, 0x26, 0xf2, 0x00, 0xce, 0xca, 0xfd, 0x1f, 0x74, 0x1f, 0xa7, + 0xbd, 0xdc, 0x0d, 0xf6, 0x6e, 0x78, 0xdd, 0x11, 0x7e, 0x98, 0x06, 0x95, 0x79, 0xc8, 0x95, 0x37, + 0xfd, 0x72, 0x5e, 0xd3, 0x45, 0x83, 0x96, 0x71, 0xf3, 0xe4, 0x5a, 0x81, 0x92, 0x4b, 0x08, 0x02, + 0xc6, 0x6c, 0xe9, 0x0d, 0x52, 0x55, 0x04, 0xce, 0x02, 0xa9, 0xdc, 0xf3, 0xb9, 0xca, 0x58, 0x05, + 0xfc, 0xd7, 0x39, 0x47, 0xc6, 0x0f, 0xbd, 0x76, 0x4f, 0xac, 0x56, 0xe0, 0x3f, 0x3e, 0x53, 0x7e, + 0xb3, 0xe4, 0xfe, 0x46, 0x89, 0x9c, 0x53, 0x95, 0x5c, 0xf7, 0x8f, 0x1a, 0x7e, 0x9b, 0x36, 0x39, + 0x8c, 0x9c, 0x9f, 0xa4, 0x88, 0x76, 0x86, 0x1c, 0x12, 0xa3, 0x71, 0x12, 0x09, 0xf6, 0x09, 0xd1, + 0xf0, 0x73, 0x59, 0x58, 0xc8, 0xac, 0xcd, 0x79, 0x92, 0xf7, 0x85, 0x2f, 0xde, 0x69, 0xc1, 0xa0, + 0x42, 0x1b, 0xca, 0x3a, 0x86, 0xcd, 0x9f, 0x55, 0xcd, 0x3f, 0x8d, 0x99, 0xb7, 0x65, 0xcf, 0xbc, + 0x4f, 0x17, 0xfc, 0x7c, 0x03, 0xe6, 0xdc, 0xdf, 0xa1, 0x6a, 0x9b, 0xa2, 0xb1, 0xc4, 0xf1, 0x23, + 0x32, 0xfc, 0xc3, 0x75, 0x97, 0x7e, 0x96, 0xed, 0x10, 0xf7, 0xd3, 0xec, 0xee, 0x3a, 0x97, 0xc9, + 0x74, 0xcb, 0xdf, 0xf5, 0x7a, 0xed, 0x44, 0xa9, 0x8b, 0xe3, 0xdc, 0x8e, 0xa8, 0x69, 0x30, 0x98, + 0x34, 0xee, 0x6f, 0x57, 0xd9, 0xaa, 0x4c, 0xbc, 0x80, 0x9a, 0x81, 0xb8, 0x41, 0x1b, 0x5a, 0xfd, + 0x8c, 0xa9, 0xd5, 0x0b, 0x0d, 0x9e, 0x4a, 0xe2, 0xe0, 0x00, 0x45, 0x76, 0xd9, 0x96, 0xc4, 0x9b, + 0x08, 0x04, 0x8e, 0x73, 0x9e, 0x23, 0x93, 0xd4, 0x74, 0x3e, 0xf0, 0x3a, 0x2d, 0xda, 0x06, 0x54, + 0x19, 0xa6, 0x51, 0xaa, 0xaf, 0x71, 0x10, 0x48, 0x9c, 0xf3, 0x09, 0x32, 0x46, 0xf5, 0x9b, 0x98, + 0x0a, 0x75, 0xa4, 0x99, 0xc2, 0x9a, 0x56, 0xe8, 0x6f, 0x60, 0x50, 0x54, 0x05, 0xee, 0x87, 0xd1, + 0x3d, 0xaa, 0xb0, 0xd5, 0x82, 0x88, 0xed, 0xeb, 0x86, 0x2a, 0x70, 0x57, 0x61, 0xc0, 0xa0, 0x72, + 0xea, 0x64, 0xbc, 0x1b, 0x46, 0x49, 0x4c, 0xb7, 0x69, 0x1c, 0xce, 0x97, 0x72, 0x67, 0x0f, 0xef, + 0x77, 0x9d, 0x96, 0xd1, 0x5d, 0xc1, 0x5f, 0x74, 0x48, 0x19, 0x23, 0x67, 0x8d, 0x54, 0xfc, 0xce, + 0xe1, 0xe2, 0x24, 0xe3, 0xf7, 0xec, 0xf1, 0xfc, 0xd6, 0x3b, 0x87, 0x77, 0xbc, 0x48, 0xaf, 0x22, + 0xfa, 0x1b, 0xb0, 0xb4, 0xd3, 0x24, 0x55, 0xe9, 0x08, 0x88, 0x17, 0xa7, 0x8a, 0x4c, 0x30, 0x10, + 0xe4, 0xe0, 0xbf, 0xdf, 0x0b, 0x22, 0xff, 0x80, 0x0a, 0xd7, 0x58, 0xeb, 0xc3, 0x12, 0x1b, 0x83, + 0xe6, 0x4b, 0x2b, 0x99, 0xe1, 0xea, 0xc3, 0x8d, 0xb0, 0x47, 0xa9, 0x17, 0xab, 0xac, 0xc9, 0x39, + 0x06, 0xe7, 0x1d, 0x5d, 0x62, 0xf5, 0x9c, 0x60, 0x3f, 0x63, 0x00, 0x63, 0xb0, 0x98, 0x52, 0xa3, + 0x76, 0xb6, 0x1d, 0x1c, 0xfa, 0x1d, 0xba, 0x2f, 0xd7, 0xa3, 0x70, 0xc7, 0x5f, 0x24, 0xac, 0x37, + 0x9f, 0xca, 0x33, 0xbe, 0x28, 0xe9, 0xea, 0x19, 0xca, 0x7b, 0x76, 0xcb, 0x2c, 0x0d, 0x36, 0x33, + 0xaa, 0xc9, 0xcd, 0xa1, 0xae, 0x12, 0x68, 0xf6, 0xd3, 0xc5, 0xd9, 0x3b, 0x94, 0xfd, 0x1c, 0x58, + 0xc5, 0x21, 0xc5, 0xce, 0xd9, 0x26, 0xd5, 0x76, 0xb0, 0xeb, 0x37, 0x8f, 0x9a, 0x54, 0xbb, 0x9c, + 0x61, 0xbc, 0x73, 0x96, 0xdc, 0x96, 0x24, 0xe7, 0xfa, 0xa1, 0xfa, 0x09, 0x9a, 0x91, 0x73, 0x87, + 0x9c, 0x4f, 0xfc, 0xe8, 0x20, 0xe8, 0x78, 0xb8, 0x69, 0x0b, 0xe5, 0x85, 0x59, 0xb8, 0xb3, 0x6c, + 0xd6, 0x3e, 0x25, 0x06, 0xf6, 0xfc, 0x76, 0x26, 0x15, 0x0c, 0x28, 0xed, 0xdc, 0x22, 0xf3, 0x6c, + 0x3d, 0xd5, 0x7b, 0xed, 0x76, 0x3d, 0x6c, 0x07, 0xcd, 0xa3, 0xc5, 0x39, 0xc6, 0xf0, 0x39, 0x69, + 0xb7, 0x6e, 0xda, 0x68, 0xd4, 0xeb, 0xf5, 0x2f, 0x48, 0x97, 0x46, 0xa7, 0x01, 0xd5, 0x6a, 0x7b, + 0x11, 0x55, 0xfa, 0x71, 0xee, 0xfb, 0x0f, 0x92, 0xc5, 0xf9, 0x22, 0x76, 0x4a, 0xc3, 0x2e, 0xc4, + 0x9d, 0x06, 0x29, 0x20, 0xa4, 0x59, 0xa3, 0xa8, 0x88, 0x13, 0x3a, 0xfa, 0x8b, 0x0b, 0x4c, 0x31, + 0x55, 0xeb, 0xab, 0x81, 0x40, 0xe0, 0x38, 0x66, 0xf6, 0xe1, 0x3f, 0xb7, 0x50, 0xf6, 0x9e, 0x61, + 0x84, 0xda, 0xec, 0x93, 0x08, 0xd0, 0x34, 0xb8, 0x61, 0x25, 0xc9, 0xd1, 0xa2, 0xc3, 0x48, 0xd5, + 0x52, 0xdb, 0xde, 0xfe, 0x12, 0x20, 0xdc, 0xdd, 0x21, 0x73, 0x6a, 0x59, 0xb3, 0xd1, 0x71, 0x9e, + 0x26, 0xe3, 0x28, 0xb9, 0xa4, 0xf5, 0x52, 0xc5, 0x26, 0xa0, 0x40, 0xa3, 0x4b, 0x9c, 0xc1, 0x59, + 0x13, 0x82, 0x0f, 0xfc, 0xd5, 0x23, 0xda, 0x6b, 0x26, 0xd6, 0x2a, 0x46, 0x13, 0x24, 0x02, 0x34, + 0x8d, 0xfb, 0xbf, 0xf9, 0xa6, 0xa8, 0x65, 0x47, 0x01, 0xb9, 0x49, 0x15, 0xf5, 0xfd, 0x30, 0x4e, + 0x90, 0x9a, 0xd5, 0x31, 0xae, 0x77, 0xc1, 0x6b, 0x02, 0x0e, 0x8a, 0xc2, 0xf9, 0x2c, 0x99, 0x6d, + 0x9a, 0x15, 0x08, 0x51, 0xfe, 0x98, 0x28, 0x62, 0xd7, 0x0e, 0x36, 0xad, 0xf3, 0x26, 0x99, 0x62, + 0xae, 0xbc, 0x66, 0xd8, 0x16, 0xfa, 0xb2, 0xdc, 0x99, 0xa6, 0xea, 0x02, 0xfe, 0xa1, 0xf1, 0x3f, + 0x28, 0x6a, 0xb4, 0x3a, 0xb0, 0x09, 0x9b, 0x75, 0x21, 0x6e, 0x95, 0xd5, 0x71, 0x8d, 0x41, 0x41, + 0x60, 0xdd, 0x5f, 0x29, 0x1b, 0xa3, 0x8c, 0x4a, 0x9f, 0xef, 0xfc, 0x08, 0x99, 0xbc, 0xef, 0x51, + 0xa5, 0xb5, 0xb3, 0x27, 0x76, 0xd0, 0x57, 0x0b, 0xca, 0x5e, 0x56, 0xfc, 0x2e, 0x2f, 0xca, 0xf7, + 0x09, 0xf1, 0x03, 0x24, 0x43, 0xe4, 0x1d, 0xf5, 0x3a, 0x1d, 0xe4, 0x5d, 0x1e, 0x9e, 0x37, 0xf0, + 0xa2, 0x9c, 0xb7, 0xf8, 0x01, 0x92, 0xa1, 0xb3, 0x4b, 0x88, 0x5c, 0x7d, 0x7e, 0x4b, 0xb8, 0xd0, + 0x7e, 0x68, 0x18, 0xf6, 0xdb, 0xaa, 0xf4, 0xea, 0x1c, 0xee, 0x4c, 0xfa, 0x37, 0x18, 0x9c, 0xdd, + 0x1e, 0x53, 0x44, 0xfa, 0x9b, 0x45, 0x25, 0x2a, 0x9d, 0xdc, 0x5e, 0x44, 0x69, 0x56, 0x12, 0x31, + 0x74, 0x2f, 0x15, 0x54, 0xa8, 0xb6, 0x83, 0x03, 0xdf, 0x5c, 0x2d, 0x82, 0x0b, 0x68, 0x86, 0xee, + 0xb7, 0x2b, 0x64, 0x71, 0x50, 0x7b, 0x71, 0x4e, 0xfa, 0x0f, 0x02, 0x6a, 0x8d, 0xb4, 0xf8, 0xcc, + 0x35, 0xe6, 0xe4, 0xba, 0x80, 0x83, 0xa2, 0xc0, 0xc9, 0x11, 0x07, 0x7b, 0x1d, 0xaf, 0x2d, 0xe6, + 0xaf, 0x9a, 0x1c, 0x0d, 0x06, 0x05, 0x81, 0x45, 0x3a, 0x2a, 0x75, 0x63, 0xe1, 0xc2, 0x35, 0x26, + 0x11, 0x30, 0x28, 0x08, 0xac, 0x69, 0xfe, 0x8d, 0xe5, 0x98, 0x7f, 0xd6, 0x18, 0x8d, 0x3f, 0xe4, + 0x31, 0xa2, 0xbb, 0x0e, 0x41, 0x37, 0x67, 0xbc, 0xcf, 0xd8, 0x4f, 0x0c, 0xcf, 0x5e, 0x69, 0x25, + 0x1b, 0x8a, 0x0d, 0x18, 0x2c, 0x9d, 0xd7, 0xc9, 0xb4, 0x5a, 0xa1, 0xd4, 0xfa, 0x9f, 0xb4, 0x1d, + 0x7f, 0x5a, 0x5c, 0xd5, 0xc0, 0xa4, 0x73, 0xbf, 0x9a, 0x9e, 0x32, 0x62, 0x61, 0x18, 0x23, 0x5c, + 0x2a, 0x3a, 0xc2, 0xe5, 0xe3, 0x47, 0xd8, 0xfd, 0x4f, 0x15, 0xb4, 0x9d, 0x8d, 0xca, 0x7a, 0x71, + 0x01, 0xa1, 0xf6, 0x0e, 0x4a, 0x78, 0xda, 0x30, 0xb1, 0x2c, 0x5f, 0x1e, 0x66, 0xdd, 0x98, 0xfb, + 0x01, 0x2e, 0x07, 0xce, 0xc9, 0xd9, 0xa7, 0x3b, 0xb4, 0x17, 0x33, 0x4b, 0xd2, 0x17, 0xcb, 0x71, + 0x38, 0xb6, 0x5a, 0x0b, 0xa7, 0x6c, 0x8c, 0x0d, 0x97, 0xd7, 0xa2, 0x99, 0xe3, 0xf6, 0x84, 0xda, + 0x81, 0x3c, 0x39, 0x50, 0xcd, 0x41, 0x15, 0xe2, 0x08, 0x38, 0x8e, 0xca, 0xd2, 0x19, 0xaa, 0x61, + 0xe1, 0x54, 0x59, 0x43, 0x05, 0x88, 0x4d, 0xbe, 0x71, 0xad, 0x29, 0x81, 0x81, 0x03, 0x8b, 0x52, + 0x2b, 0xca, 0x13, 0xc7, 0x28, 0xca, 0xf4, 0x0b, 0xb1, 0x7f, 0xd4, 0xac, 0x50, 0x5f, 0x68, 0x93, + 0x83, 0x41, 0xe2, 0xd3, 0x93, 0x68, 0xaa, 0xe0, 0x24, 0xba, 0x40, 0xe6, 0x6a, 0x9e, 0x7f, 0x10, + 0x76, 0xd6, 0x3b, 0xad, 0x6e, 0x18, 0xd0, 0x86, 0x2d, 0x92, 0x31, 0xb6, 0xa5, 0xf0, 0x15, 0x3f, + 0x86, 0x1c, 0x60, 0x0c, 0x95, 0x5d, 0xf7, 0xff, 0xd0, 0x7d, 0xad, 0x46, 0xed, 0xd3, 0xc4, 0xbf, + 0xd5, 0x65, 0xee, 0x07, 0x67, 0x83, 0x38, 0x7b, 0x91, 0xd7, 0xf4, 0xeb, 0x7e, 0x14, 0x84, 0x2d, + 0xba, 0xe3, 0x87, 0x1d, 0xe6, 0x70, 0xc7, 0x3d, 0x12, 0xbd, 0x89, 0xce, 0xd5, 0x3e, 0x2c, 0x64, + 0x94, 0x70, 0x5a, 0x64, 0xb6, 0x1b, 0xf9, 0x96, 0xbf, 0xa4, 0x94, 0xaf, 0x9f, 0xd7, 0xcd, 0x22, + 0x5c, 0x7d, 0xb4, 0x40, 0x60, 0x33, 0x75, 0xde, 0x26, 0x0b, 0x61, 0xd4, 0xdd, 0xf7, 0x3a, 0x35, + 0xbf, 0xeb, 0x77, 0x5a, 0xa8, 0x33, 0x0b, 0xa7, 0xd8, 0x39, 0x5a, 0x76, 0xe1, 0x56, 0x0a, 0x07, + 0x7d, 0xd4, 0xee, 0x2f, 0x51, 0x7b, 0xb1, 0x16, 0xde, 0xef, 0xdc, 0xf7, 0xa2, 0xd6, 0x4a, 0x7d, + 0x93, 0x2b, 0xc2, 0xcc, 0xc9, 0x28, 0x9d, 0x9b, 0xa5, 0x81, 0xce, 0xcd, 0x2f, 0x93, 0xa9, 0xdd, + 0xc0, 0x6f, 0xb7, 0xd0, 0x0b, 0xc9, 0xbb, 0x77, 0xb9, 0x88, 0x47, 0x63, 0x03, 0xcb, 0x48, 0xaf, + 0x00, 0xf7, 0xad, 0x6e, 0x08, 0x36, 0xa0, 0x18, 0x3a, 0x3d, 0xb2, 0x20, 0x35, 0x7d, 0x89, 0x15, + 0xab, 0xe3, 0xd5, 0x62, 0x86, 0x84, 0x5d, 0x0d, 0x1b, 0x0f, 0x48, 0x31, 0x84, 0xbe, 0x2a, 0xd0, + 0x42, 0x3b, 0xc0, 0xdd, 0x61, 0x8c, 0xcd, 0x15, 0x66, 0xa1, 0x31, 0x13, 0x92, 0x41, 0xdd, 0x5f, + 0x2c, 0x91, 0xc7, 0xfb, 0x46, 0x4b, 0xd8, 0xd7, 0x5f, 0x94, 0x86, 0x2d, 0x3f, 0x9d, 0xc9, 0x69, + 0x65, 0xe6, 0x98, 0x17, 0x33, 0x72, 0xcb, 0x05, 0x8c, 0xdc, 0x5b, 0xe4, 0xdc, 0xfa, 0x41, 0x37, + 0x39, 0xa2, 0x26, 0xa2, 0xd5, 0xc8, 0x37, 0xc8, 0xc4, 0x81, 0xdf, 0x0a, 0x7a, 0x07, 0xe2, 0xb3, + 0x3e, 0x2d, 0x05, 0xe9, 0x0d, 0x06, 0xa5, 0x5a, 0xd2, 0x2c, 0x9e, 0x7d, 0xd2, 0x05, 0xc8, 0x01, + 0x20, 0xc8, 0xdd, 0x1f, 0x94, 0xc8, 0xbc, 0x5c, 0x50, 0x2b, 0xad, 0x16, 0x1d, 0xb7, 0xd8, 0x59, + 0x22, 0xe5, 0xa0, 0x2b, 0x18, 0x11, 0xc1, 0xa8, 0x4c, 0x95, 0x26, 0x0a, 0xa5, 0x1a, 0x4c, 0x95, + 0xbb, 0xf2, 0xf5, 0xe4, 0x18, 0xf2, 0x68, 0x80, 0x59, 0x1f, 0xdb, 0x92, 0x07, 0x68, 0x76, 0x52, + 0xb3, 0x64, 0xa2, 0xba, 0x62, 0x3b, 0x96, 0xaf, 0x09, 0x38, 0x28, 0x0a, 0x74, 0xe7, 0xe3, 0x29, + 0x25, 0x3b, 0x65, 0xe1, 0xdb, 0x2e, 0x9b, 0x72, 0x37, 0x05, 0x0c, 0x14, 0xd6, 0xfd, 0x99, 0x12, + 0x99, 0x91, 0x7d, 0x2c, 0xa8, 0xe4, 0xe2, 0x22, 0xd1, 0x0a, 0xae, 0x5e, 0x24, 0xa8, 0xa4, 0x32, + 0x8c, 0xa5, 0x9b, 0x56, 0x86, 0xd1, 0x4d, 0xdd, 0x6f, 0x53, 0x9d, 0x53, 0x36, 0xa7, 0xd1, 0xdb, + 0x89, 0xfd, 0xc4, 0xf9, 0x0a, 0xa9, 0x7a, 0x7c, 0xf0, 0x7d, 0x39, 0xcf, 0x2e, 0xe6, 0x59, 0xe8, + 0xd6, 0x37, 0xd3, 0x8a, 0xc1, 0x8a, 0xe4, 0x03, 0x9a, 0xa5, 0x73, 0x48, 0xce, 0x74, 0xc2, 0x84, + 0xed, 0x07, 0x0a, 0x5f, 0xcc, 0x23, 0x9a, 0xae, 0xe7, 0x09, 0x51, 0xcf, 0x99, 0x9b, 0x69, 0x7e, + 0xd0, 0x5f, 0x05, 0xb5, 0xfb, 0x84, 0x17, 0xa3, 0xc2, 0xea, 0xba, 0x50, 0xac, 0xae, 0xc1, 0x4e, + 0x0c, 0xf7, 0x37, 0x4b, 0xa4, 0x2a, 0xc9, 0x46, 0xe9, 0x13, 0xbf, 0x4b, 0x26, 0x63, 0xf6, 0x69, + 0xe4, 0x30, 0xbd, 0x5c, 0xac, 0xe9, 0xfc, 0x7b, 0xea, 0xcd, 0x8f, 0xff, 0x8e, 0x41, 0x72, 0x63, + 0x6e, 0x48, 0xd5, 0x81, 0x47, 0xcf, 0x0d, 0xa9, 0x9a, 0x36, 0xc0, 0x0d, 0xf9, 0x0f, 0x4a, 0x64, + 0x82, 0x3b, 0x87, 0x8a, 0x79, 0xd8, 0x0c, 0x5f, 0xb2, 0xe6, 0x78, 0x07, 0x81, 0xc2, 0xb5, 0x4c, + 0x47, 0xba, 0xca, 0xfe, 0xd9, 0x88, 0xc2, 0x03, 0xb1, 0x11, 0x5c, 0x28, 0xe2, 0x9c, 0xe2, 0x82, + 0x8f, 0x4b, 0x93, 0x3b, 0x92, 0x01, 0x68, 0x5e, 0xee, 0x6f, 0x54, 0x70, 0xd5, 0x6b, 0x52, 0x6b, + 0x5b, 0x2b, 0x9d, 0xc6, 0xb6, 0x56, 0x1e, 0xfd, 0xb6, 0xf6, 0x3e, 0x99, 0x6f, 0x1a, 0x3e, 0x79, + 0xbd, 0x99, 0x5e, 0x29, 0xe8, 0x6e, 0x36, 0x1c, 0xf9, 0xdc, 0x19, 0xb2, 0x66, 0xb3, 0x83, 0x34, + 0x7f, 0xc7, 0x27, 0x33, 0xfc, 0x40, 0x51, 0xd4, 0x37, 0x96, 0x3b, 0x67, 0xb9, 0xdf, 0x85, 0x97, + 0x50, 0x95, 0xb1, 0xa0, 0x93, 0x86, 0xc1, 0x08, 0x2c, 0xb6, 0xee, 0x5f, 0x1b, 0x27, 0xe3, 0xeb, + 0x87, 0x54, 0x97, 0x19, 0xe1, 0x2a, 0x3f, 0x20, 0x73, 0x41, 0xe7, 0x30, 0x6c, 0x1f, 0xfa, 0x2d, + 0x8e, 0x3f, 0xd9, 0x8e, 0x76, 0x5e, 0x54, 0x32, 0xb7, 0x69, 0x31, 0x83, 0x14, 0xf3, 0x51, 0xd8, + 0x93, 0xef, 0x50, 0x53, 0x96, 0xcd, 0x08, 0x61, 0x4c, 0xe6, 0x38, 0x49, 0xd9, 0x80, 0x8a, 0x95, + 0xa3, 0xad, 0x5e, 0xee, 0x9f, 0x15, 0x8c, 0x9c, 0x7b, 0x64, 0x6e, 0x37, 0x88, 0xa8, 0xc5, 0x41, + 0x0d, 0x42, 0x6a, 0x05, 0x1c, 0x74, 0x4f, 0x62, 0x48, 0xaa, 0x21, 0xd9, 0xb0, 0x58, 0x41, 0x8a, + 0x35, 0x35, 0x92, 0x66, 0xd1, 0x8e, 0xd1, 0x75, 0x4d, 0x0e, 0x5f, 0x97, 0xf2, 0x25, 0x6d, 0x99, + 0x9c, 0xc0, 0x66, 0x8c, 0xc2, 0xa8, 0xc9, 0x0c, 0x9f, 0x29, 0xb6, 0xa5, 0x2b, 0x61, 0xc4, 0x2d, + 0x1e, 0x8e, 0x43, 0x99, 0xc6, 0xce, 0x8f, 0xab, 0xb6, 0x4c, 0xd3, 0xa7, 0xc4, 0xee, 0x37, 0x71, + 0x03, 0xc2, 0x51, 0x3c, 0x0d, 0xd9, 0x7d, 0xcd, 0x96, 0xdd, 0x9f, 0x2a, 0xf0, 0x71, 0x07, 0xc8, + 0xed, 0xf7, 0xc8, 0xb4, 0xf1, 0xed, 0xd1, 0x51, 0xd8, 0x94, 0x47, 0x9d, 0x42, 0x80, 0x2b, 0x05, + 0x42, 0x9d, 0x81, 0x82, 0xa6, 0xc1, 0x81, 0x41, 0xc5, 0x2b, 0x1d, 0x11, 0x81, 0x6a, 0x19, 0x30, + 0x8c, 0xfb, 0x2a, 0x21, 0xeb, 0x0f, 0xfc, 0xe6, 0x4a, 0x93, 0x1d, 0xc4, 0x1b, 0xe7, 0x26, 0xa5, + 0xc1, 0xe7, 0x26, 0xee, 0xbb, 0x74, 0x33, 0x7c, 0x80, 0x3b, 0xbb, 0x34, 0xd3, 0xe8, 0x12, 0xf1, + 0x19, 0x80, 0xb5, 0x6a, 0x4a, 0x4f, 0x52, 0x4e, 0x06, 0x02, 0xcb, 0x8e, 0xd1, 0x1f, 0x78, 0x62, + 0xc1, 0x1a, 0x26, 0xef, 0x3a, 0x02, 0x81, 0xe3, 0xdc, 0x6f, 0x94, 0xc8, 0xdc, 0xc6, 0x9a, 0xa5, + 0x27, 0x2f, 0x13, 0xc2, 0xf5, 0xcd, 0xbb, 0x77, 0x6f, 0x4a, 0x3f, 0x2a, 0x77, 0x76, 0x29, 0x28, + 0x18, 0x14, 0xce, 0x13, 0xa4, 0xd2, 0xee, 0x75, 0x84, 0x1a, 0x38, 0x89, 0xfe, 0xd9, 0xad, 0x5e, + 0x07, 0x10, 0x66, 0x04, 0x36, 0x54, 0x0a, 0x07, 0x36, 0xe4, 0x87, 0xf6, 0xfd, 0x7c, 0x85, 0x2c, + 0x6c, 0xb4, 0xfd, 0x07, 0x56, 0xab, 0x69, 0x55, 0xad, 0x28, 0xa0, 0x93, 0x27, 0xed, 0x26, 0xa9, + 0x31, 0x28, 0x08, 0x6c, 0xe1, 0x58, 0x0b, 0x2b, 0xce, 0xa4, 0x32, 0xe2, 0x38, 0x93, 0xdc, 0x3e, + 0x3b, 0xbb, 0x64, 0x32, 0xe4, 0xdf, 0x9f, 0x4a, 0x31, 0x9c, 0xe8, 0x9f, 0x3d, 0xbe, 0x31, 0xe9, + 0xf1, 0x59, 0x16, 0xb3, 0x87, 0x1f, 0x7a, 0x2b, 0x61, 0x29, 0xa0, 0x20, 0x99, 0x2f, 0x7d, 0x86, + 0xcc, 0x98, 0x94, 0x43, 0x9d, 0x7e, 0x6f, 0x91, 0xb3, 0x1b, 0x18, 0x41, 0x9a, 0x8a, 0x85, 0x79, + 0x9d, 0x9a, 0x70, 0x74, 0xa5, 0xc6, 0x56, 0x80, 0x98, 0x15, 0x09, 0x27, 0x50, 0x60, 0xd2, 0xb9, + 0xff, 0xa1, 0x44, 0x9e, 0xbc, 0xba, 0xb6, 0x5e, 0x47, 0x71, 0x10, 0x27, 0x74, 0x81, 0xf5, 0x05, + 0xe3, 0xd1, 0x4f, 0xd9, 0x6d, 0x19, 0x3c, 0xd5, 0xa7, 0xac, 0xd7, 0x18, 0x3b, 0x81, 0x7d, 0x54, + 0x22, 0x52, 0xa9, 0x5e, 0x78, 0xf6, 0x6a, 0x40, 0xbf, 0x7d, 0x37, 0x4c, 0xc7, 0xcf, 0x45, 0x14, + 0x16, 0x63, 0x5c, 0xd5, 0x51, 0x3a, 0x7e, 0x0e, 0x14, 0x06, 0x0c, 0x2a, 0x5e, 0xf3, 0x61, 0x80, + 0x82, 0x52, 0x74, 0xca, 0xa8, 0x99, 0xc3, 0x41, 0x51, 0x60, 0xc7, 0x5a, 0x41, 0xc4, 0x74, 0x8a, + 0x23, 0xb1, 0x12, 0x55, 0xc7, 0x6a, 0x12, 0x01, 0x9a, 0xc6, 0xfd, 0x5b, 0x25, 0xf2, 0xd8, 0xd5, + 0x76, 0x8f, 0x0e, 0x7b, 0xb4, 0x1b, 0x5b, 0x8d, 0x7d, 0x95, 0x54, 0x7d, 0xa9, 0xff, 0x8a, 0xb6, + 0xaa, 0xbd, 0x45, 0x29, 0xc6, 0x3c, 0x78, 0x4f, 0xd1, 0x15, 0x88, 0x15, 0x1b, 0x2e, 0xb2, 0xe9, + 0x5f, 0x94, 0xc9, 0xec, 0xb5, 0xed, 0xed, 0xfa, 0x55, 0x3f, 0x11, 0xb2, 0x34, 0xdf, 0x61, 0x53, + 0x37, 0xac, 0xd5, 0xe9, 0x2b, 0xcb, 0x03, 0x56, 0x0f, 0xc6, 0x4a, 0x2f, 0xf3, 0x58, 0xe9, 0xe5, + 0xcd, 0x4e, 0x72, 0x2b, 0x6a, 0x24, 0x11, 0x1e, 0x27, 0x64, 0x59, 0xb7, 0x52, 0xde, 0x57, 0x06, + 0xc9, 0x7b, 0x3a, 0x58, 0x13, 0x71, 0x73, 0xdf, 0x57, 0xc6, 0xf7, 0xc7, 0x95, 0x3a, 0xc1, 0xa0, + 0xd4, 0xf6, 0xad, 0xde, 0x86, 0x4d, 0xfe, 0x03, 0x04, 0x29, 0x15, 0x3c, 0xd3, 0xfb, 0x49, 0xd2, + 0xbd, 0x46, 0x3b, 0x4b, 0xa7, 0xbe, 0x58, 0xed, 0x39, 0xda, 0x1c, 0x0e, 0x06, 0x2f, 0xa0, 0x17, + 0x96, 0x86, 0xc5, 0x60, 0x72, 0x74, 0x1b, 0x84, 0x68, 0xdc, 0x43, 0x32, 0x51, 0xdc, 0xbf, 0x58, + 0x26, 0x93, 0xd7, 0xe8, 0x76, 0xd5, 0xa6, 0x2c, 0x37, 0xc8, 0x98, 0x4f, 0xb7, 0xb9, 0x62, 0x8a, + 0xa8, 0xde, 0x10, 0xb9, 0xc7, 0x09, 0x7f, 0x03, 0x2b, 0xef, 0x00, 0x99, 0xc4, 0x76, 0x5f, 0x55, + 0x01, 0x96, 0x2f, 0xe5, 0x8f, 0x82, 0x9a, 0x12, 0x7c, 0x37, 0x15, 0x20, 0x90, 0x8c, 0x98, 0x6f, + 0xa6, 0xd9, 0x6d, 0xa0, 0x94, 0x4a, 0x8a, 0xc5, 0x50, 0x6f, 0xaf, 0xd5, 0x39, 0xb9, 0xe0, 0xcb, + 0x7d, 0x33, 0x12, 0x08, 0x9a, 0x9d, 0xfb, 0x26, 0x39, 0xc7, 0x4e, 0xf7, 0xe8, 0x74, 0xb3, 0xd6, + 0x4c, 0xee, 0xe4, 0x74, 0xff, 0x6e, 0x99, 0x9c, 0xd9, 0x6c, 0xac, 0x35, 0x6c, 0xaf, 0xda, 0x9b, + 0x64, 0x86, 0x6f, 0xb3, 0x38, 0xe9, 0xbc, 0xb6, 0x28, 0xaf, 0xdc, 0xd1, 0xdb, 0x06, 0x0e, 0x2c, + 0x4a, 0x3c, 0x36, 0x0d, 0xde, 0xef, 0xa4, 0xe3, 0x7c, 0x36, 0xdf, 0xb9, 0x09, 0x08, 0x47, 0x34, + 0xee, 0xd8, 0x5c, 0xc4, 0x29, 0xb4, 0xda, 0xb5, 0x3f, 0x4f, 0x55, 0xfe, 0xb8, 0x19, 0x07, 0x74, + 0x01, 0xd0, 0xf5, 0xef, 0x35, 0xe5, 0xf4, 0xd5, 0x3a, 0x3c, 0x36, 0x55, 0x61, 0x21, 0x45, 0x6d, + 0xc8, 0xdb, 0xf1, 0xc2, 0xbb, 0x7e, 0x7e, 0xa4, 0xe5, 0x57, 0x49, 0x55, 0x45, 0xc4, 0xc8, 0x40, + 0xa6, 0x52, 0x76, 0x20, 0x53, 0x01, 0x81, 0x23, 0x7d, 0x9d, 0x95, 0x4c, 0x5f, 0xe7, 0x3f, 0xa6, + 0x1a, 0xac, 0x3a, 0xfc, 0xa7, 0xf3, 0xb0, 0x4a, 0x05, 0x6f, 0xc2, 0x8e, 0x93, 0xc4, 0xa4, 0x7e, + 0x2e, 0x67, 0x26, 0xf2, 0x95, 0xc0, 0xe7, 0x4a, 0x5d, 0x96, 0x05, 0xcd, 0xc6, 0xd9, 0x22, 0x93, + 0xdd, 0xc8, 0x6f, 0x24, 0x2c, 0x5c, 0x77, 0x08, 0x8e, 0x6c, 0x56, 0xd7, 0x79, 0x49, 0x90, 0x2c, + 0xdc, 0x5f, 0x2b, 0x11, 0xb2, 0x15, 0x1c, 0xd0, 0xcd, 0xc5, 0xeb, 0xec, 0xf9, 0x23, 0xb4, 0x06, + 0x6f, 0x92, 0xb1, 0xb8, 0x4b, 0x97, 0x76, 0xa1, 0x23, 0x20, 0xdd, 0xa2, 0x06, 0x2d, 0xa3, 0x3f, + 0x03, 0xfe, 0x02, 0xc6, 0xc7, 0xfd, 0x65, 0x42, 0xe6, 0x34, 0x19, 0xaa, 0xe3, 0xce, 0x45, 0x2b, + 0x3e, 0xf5, 0x89, 0x54, 0x7c, 0x6a, 0x95, 0x51, 0x1b, 0x21, 0xa9, 0x09, 0xa9, 0x1c, 0x78, 0x0f, + 0x84, 0xf6, 0xff, 0x7a, 0xd1, 0x06, 0x61, 0x4d, 0xcb, 0x37, 0xbc, 0x07, 0x5c, 0x1d, 0x7a, 0x49, + 0x4e, 0x20, 0x0a, 0xf9, 0x90, 0x1f, 0xf4, 0xb0, 0x15, 0x88, 0xe6, 0xc6, 0x4f, 0xfc, 0x67, 0xfd, + 0x9b, 0x09, 0x45, 0xac, 0x8e, 0xd5, 0x1a, 0x74, 0x84, 0xcb, 0x6e, 0xc8, 0x5a, 0x83, 0x4e, 0xba, + 0xd6, 0xa0, 0x53, 0xa0, 0xd6, 0xa0, 0x83, 0x61, 0x6c, 0x93, 0xc2, 0xd3, 0xcd, 0xc2, 0xa8, 0xa6, + 0xaf, 0xbc, 0x35, 0x54, 0xd5, 0xc2, 0x65, 0xce, 0xab, 0xbf, 0x24, 0x75, 0x40, 0x01, 0xcd, 0x6d, + 0x82, 0xac, 0xda, 0xf9, 0x05, 0x6a, 0x33, 0x88, 0xff, 0x31, 0x62, 0x89, 0x1a, 0x8f, 0x62, 0x97, + 0x7a, 0xfb, 0x24, 0xad, 0x11, 0x2c, 0x78, 0xa3, 0x7e, 0x48, 0x8a, 0x18, 0x1b, 0x99, 0xdb, 0xb6, + 0x54, 0x7b, 0x9c, 0x6f, 0x95, 0xc8, 0x39, 0xfa, 0x9d, 0x78, 0x8d, 0x1c, 0x06, 0x78, 0x30, 0x28, + 0x42, 0xc5, 0x36, 0x86, 0x9d, 0x27, 0x7d, 0x8c, 0x78, 0x73, 0x3f, 0x27, 0x8f, 0x1f, 0xb3, 0x48, + 0x72, 0x1b, 0x9d, 0xd9, 0xc2, 0xa5, 0x16, 0x99, 0x92, 0x13, 0x33, 0x43, 0xfb, 0x5e, 0x35, 0x37, + 0xe3, 0xe3, 0x57, 0xa0, 0x74, 0x84, 0x2d, 0xbf, 0xd3, 0xf3, 0x3a, 0x09, 0x86, 0xfe, 0x6b, 0x5d, + 0x9d, 0xd5, 0x22, 0x26, 0xe2, 0x08, 0x6b, 0xd9, 0x27, 0x33, 0xe6, 0x9c, 0x1b, 0x61, 0x4d, 0x21, + 0x39, 0x9b, 0x31, 0x9f, 0x46, 0x58, 0x61, 0x8f, 0x3c, 0x31, 0x70, 0x5e, 0x8c, 0xae, 0x5a, 0x74, + 0xee, 0x1b, 0x02, 0xf3, 0x34, 0x1c, 0x2c, 0x37, 0x6c, 0x07, 0xcb, 0x0b, 0x45, 0x97, 0xce, 0x00, + 0x2f, 0xcb, 0xae, 0xd9, 0x7e, 0xdc, 0x09, 0x9c, 0x6d, 0x32, 0xd1, 0x46, 0x88, 0x3c, 0xd5, 0x79, + 0x79, 0x98, 0xc5, 0xa9, 0x95, 0x0b, 0x06, 0x8f, 0x41, 0xf0, 0x72, 0x7f, 0xbd, 0x44, 0xc6, 0x4e, + 0x63, 0x78, 0xea, 0xf6, 0xf0, 0x0c, 0x52, 0x51, 0xc5, 0x9d, 0xcd, 0x65, 0xf0, 0xee, 0xaf, 0x3f, + 0xa0, 0xd6, 0x6c, 0xcc, 0x54, 0xc9, 0xcc, 0x11, 0xfa, 0xa5, 0x32, 0x99, 0xc6, 0x8a, 0xa4, 0xbf, + 0xe7, 0xb3, 0xe8, 0xff, 0xdb, 0xf1, 0xdb, 0xd2, 0x2d, 0x9c, 0x36, 0xbb, 0xb6, 0x4c, 0x24, 0xd8, + 0xb4, 0x58, 0x78, 0xd7, 0xf4, 0x9a, 0x0b, 0x95, 0x48, 0x15, 0xb6, 0x5c, 0xea, 0x60, 0xd3, 0xa2, + 0xe6, 0x7f, 0xdf, 0x4b, 0x9a, 0xfb, 0xc2, 0x24, 0x53, 0xcd, 0xbd, 0x8b, 0x40, 0xe0, 0x38, 0x67, + 0x85, 0xcc, 0xcb, 0x19, 0x7b, 0x87, 0x0f, 0x9d, 0x50, 0x17, 0xd5, 0x7d, 0x3b, 0xb0, 0xd1, 0x90, + 0xa6, 0x77, 0x3e, 0x43, 0xe6, 0x70, 0x70, 0xc2, 0x5e, 0x22, 0x83, 0x0e, 0xc6, 0x59, 0xd0, 0x01, + 0x0b, 0xf2, 0xdc, 0xb6, 0x30, 0x90, 0xa2, 0x74, 0x7f, 0x94, 0x9c, 0xdd, 0x0a, 0xbd, 0xd6, 0xaa, + 0xd7, 0xf6, 0x3a, 0x4d, 0x3f, 0xda, 0xec, 0xec, 0xe5, 0x9e, 0xcf, 0x9a, 0x67, 0xa8, 0xe5, 0xbc, + 0x33, 0x54, 0x37, 0x22, 0x8e, 0x59, 0x81, 0x08, 0x97, 0x79, 0x97, 0x4c, 0x06, 0xbc, 0x2a, 0x31, + 0x6b, 0x2f, 0xe7, 0x39, 0x87, 0xfa, 0xda, 0x68, 0x84, 0x7f, 0x70, 0x00, 0x48, 0x96, 0x68, 0x49, + 0x64, 0x79, 0x93, 0xf2, 0x8d, 0x35, 0xf7, 0xaf, 0x94, 0xc8, 0xfc, 0xcd, 0xd4, 0xa5, 0x2e, 0x8c, + 0xe5, 0xf2, 0xa3, 0x0c, 0xd7, 0x58, 0x83, 0x41, 0x41, 0x60, 0x1f, 0xba, 0x99, 0xfe, 0xd3, 0x65, + 0x52, 0x65, 0xb1, 0x97, 0x5d, 0xaf, 0x39, 0x4a, 0xa5, 0xf4, 0x86, 0xa5, 0x94, 0xe6, 0x18, 0x89, + 0xaa, 0x41, 0x83, 0x74, 0x52, 0xbc, 0xd6, 0x27, 0x2e, 0x39, 0x15, 0xb2, 0x0f, 0x35, 0x43, 0x7e, + 0x1f, 0x66, 0xce, 0xbe, 0x13, 0x25, 0x2f, 0x40, 0xb1, 0x53, 0x4d, 0x45, 0xfb, 0xe8, 0x9d, 0x6a, + 0xaa, 0xa6, 0x0d, 0x90, 0x4a, 0x75, 0xa3, 0xf5, 0x4c, 0x6c, 0x7f, 0x81, 0x05, 0xd2, 0x79, 0xed, + 0xe0, 0x03, 0x5f, 0x5d, 0x16, 0x7c, 0x5a, 0xc4, 0xc5, 0x09, 0xe8, 0x87, 0x4c, 0xc0, 0x88, 0x5f, + 0xfc, 0x0e, 0xa8, 0x2e, 0xe2, 0x5e, 0xa3, 0x33, 0xd5, 0x1e, 0x3b, 0xe7, 0x75, 0x32, 0xde, 0xdd, + 0xf7, 0x62, 0x3f, 0x15, 0xa1, 0x31, 0x5e, 0x47, 0x20, 0xe5, 0x36, 0xa7, 0x0a, 0x30, 0x08, 0x70, + 0x6a, 0xf7, 0x4f, 0xa8, 0xac, 0xc7, 0x98, 0x86, 0x11, 0xce, 0xb1, 0x6b, 0xd6, 0x1c, 0x7b, 0x3e, + 0xff, 0xe6, 0xf8, 0xc0, 0xe9, 0x55, 0x4f, 0x4d, 0xaf, 0x17, 0x0a, 0xf0, 0x3a, 0x7e, 0x66, 0x1d, + 0x90, 0x69, 0x76, 0x33, 0x5d, 0x84, 0xa6, 0xbc, 0x6a, 0x19, 0x50, 0x4f, 0xa7, 0x0c, 0xa8, 0x79, + 0x83, 0xd4, 0x30, 0xa3, 0x5e, 0x24, 0x93, 0x22, 0x14, 0x22, 0x1d, 0x3d, 0x28, 0x68, 0x41, 0xe2, + 0xdd, 0x5f, 0xad, 0x10, 0xeb, 0x26, 0xbc, 0xf3, 0x9d, 0x12, 0xa1, 0x4a, 0x0b, 0xbb, 0xba, 0xd0, + 0xaa, 0xf5, 0xd0, 0x5f, 0x86, 0x2e, 0xad, 0x56, 0xaf, 0x4d, 0xff, 0xdb, 0xdc, 0xeb, 0x84, 0x0a, + 0x8c, 0xbe, 0x9d, 0x1e, 0xf3, 0xae, 0x16, 0xbe, 0x80, 0xaf, 0xce, 0x42, 0xaf, 0xd0, 0xb6, 0x2c, + 0xc3, 0x50, 0xb5, 0xc0, 0x90, 0xad, 0x72, 0x7e, 0xaf, 0x44, 0x2e, 0xf1, 0xbb, 0xe0, 0xc5, 0x7b, + 0x52, 0xc8, 0xf0, 0xac, 0x4b, 0xa6, 0x9a, 0x1d, 0x06, 0x2b, 0xae, 0xbe, 0x21, 0x06, 0xf9, 0x52, + 0x7d, 0xb8, 0x5a, 0x61, 0xd8, 0x66, 0xba, 0xff, 0xaa, 0x42, 0xd7, 0x2f, 0x1d, 0x4f, 0x7d, 0x0f, + 0xf4, 0x75, 0x6b, 0x9a, 0x7c, 0x32, 0x35, 0x4d, 0xce, 0x58, 0xc4, 0x0f, 0xe7, 0x0a, 0x68, 0x42, + 0xce, 0xe0, 0x79, 0xe3, 0x35, 0xdf, 0x8b, 0x92, 0x1d, 0xdf, 0x63, 0x07, 0x8f, 0x62, 0x11, 0x0c, + 0x75, 0x98, 0xa9, 0xe2, 0x6b, 0xb6, 0xd2, 0xdc, 0xa0, 0xbf, 0x02, 0xe7, 0x3e, 0x71, 0xd8, 0x29, + 0x67, 0xe4, 0x51, 0xa5, 0x8b, 0x75, 0x26, 0x10, 0x0e, 0xd9, 0x21, 0xab, 0x5d, 0x12, 0xd5, 0x3a, + 0x5b, 0x7d, 0xec, 0x20, 0xa3, 0x0a, 0xe3, 0x28, 0x7b, 0xbc, 0xe8, 0x51, 0xf6, 0x44, 0x4e, 0xe0, + 0xee, 0x4f, 0x95, 0xc8, 0x59, 0xfc, 0x30, 0x76, 0x90, 0x67, 0xec, 0x84, 0x64, 0x1e, 0x7b, 0xd0, + 0xf6, 0x13, 0x09, 0x13, 0x2b, 0x2c, 0x47, 0x97, 0xb6, 0xf9, 0x68, 0x8d, 0xed, 0xba, 0xcd, 0x0c, + 0xd2, 0xdc, 0xdd, 0x5f, 0x2d, 0x11, 0x16, 0x45, 0x76, 0x1a, 0xfb, 0xd8, 0x55, 0x7b, 0x1f, 0x73, + 0xf3, 0x85, 0xc6, 0x80, 0x2d, 0xec, 0x35, 0xb2, 0x80, 0xd8, 0x7a, 0x14, 0x3e, 0x38, 0x92, 0xca, + 0x75, 0xbe, 0x6f, 0xf6, 0x2f, 0x97, 0xb8, 0xb8, 0x53, 0x5a, 0xf1, 0x7d, 0x0c, 0x14, 0xd3, 0xbf, + 0x71, 0x21, 0x4b, 0x25, 0x70, 0xb9, 0xb8, 0x40, 0x63, 0xeb, 0xdf, 0x88, 0x14, 0x4b, 0x31, 0x84, + 0xfe, 0x3a, 0xdc, 0xbf, 0x57, 0x22, 0x8f, 0x9b, 0x84, 0xc6, 0x75, 0xb1, 0x3c, 0x87, 0x68, 0x8d, + 0x4c, 0x85, 0x5d, 0xcc, 0xfc, 0xa2, 0x2c, 0x80, 0x17, 0xe4, 0x88, 0xdf, 0x12, 0x70, 0xba, 0x72, + 0xcf, 0x99, 0xdc, 0x25, 0x1c, 0x54, 0x49, 0xcc, 0x28, 0xc1, 0x2c, 0xd1, 0x58, 0x5c, 0xf4, 0x63, + 0x19, 0x25, 0xd8, 0x31, 0x00, 0x5d, 0xe4, 0x1c, 0xe3, 0xfe, 0xd5, 0x12, 0x1f, 0x65, 0xb3, 0xe9, + 0xce, 0xd7, 0xc8, 0xc2, 0x01, 0x1a, 0x0b, 0xeb, 0x0f, 0xba, 0xb8, 0x85, 0xb0, 0x63, 0xcc, 0x52, + 0x11, 0xc1, 0x39, 0xa0, 0xbb, 0xab, 0x8b, 0xa2, 0xf5, 0x0b, 0x37, 0x52, 0x6c, 0xa1, 0xaf, 0x22, + 0xf7, 0xf7, 0xc5, 0x5c, 0x65, 0x5a, 0x0b, 0x5d, 0x6c, 0xdd, 0xb0, 0xb5, 0xb6, 0x59, 0x03, 0x31, + 0x56, 0x6a, 0xb1, 0xd5, 0x39, 0x18, 0x24, 0x1e, 0xcf, 0xe5, 0x7c, 0x6a, 0xaa, 0x45, 0x54, 0x61, + 0xd9, 0xac, 0xa5, 0xd3, 0x97, 0xac, 0x2b, 0x0c, 0x18, 0x54, 0x58, 0xa6, 0x1b, 0x85, 0x87, 0x41, + 0x8b, 0x85, 0x6d, 0x57, 0xec, 0x32, 0x75, 0x85, 0x01, 0x83, 0x0a, 0x4d, 0xb4, 0x5e, 0x27, 0xe6, + 0x02, 0xdc, 0xdb, 0x11, 0x89, 0x10, 0xa6, 0xb4, 0x89, 0x76, 0xdb, 0x44, 0x82, 0x4d, 0xeb, 0xfe, + 0x4e, 0x95, 0x10, 0xad, 0x22, 0xa0, 0x87, 0x70, 0xaa, 0xe9, 0x51, 0x05, 0x89, 0x67, 0xb9, 0xa9, + 0xe4, 0xdf, 0x6f, 0xd1, 0x85, 0x97, 0xd7, 0x44, 0x41, 0xee, 0xdb, 0x7a, 0x45, 0x4e, 0x10, 0x09, + 0xce, 0xf5, 0x67, 0xa9, 0x9a, 0x9d, 0xaf, 0x97, 0xc8, 0xb4, 0xd7, 0xc6, 0x3b, 0xb0, 0x09, 0xeb, + 0x51, 0xb9, 0x88, 0xb3, 0xd2, 0x68, 0xc9, 0x8a, 0x2e, 0xcb, 0x1b, 0xf3, 0xaa, 0x3c, 0xd5, 0x32, + 0x30, 0xb9, 0xed, 0x31, 0x9b, 0xe0, 0xbc, 0x22, 0x55, 0x4b, 0xfe, 0x51, 0x96, 0xd2, 0xaa, 0x65, + 0x95, 0x89, 0x06, 0x43, 0xab, 0xc4, 0x9b, 0x22, 0x46, 0x0c, 0xfb, 0x58, 0x91, 0x3b, 0xa6, 0xd6, + 0xa6, 0x99, 0x77, 0xdd, 0x1f, 0xcf, 0xa2, 0x74, 0x44, 0xeb, 0x78, 0x91, 0x0b, 0x9c, 0x86, 0xee, + 0x96, 0x13, 0xcd, 0x9a, 0x90, 0xf9, 0x96, 0xbd, 0x49, 0x88, 0x10, 0xa5, 0xcb, 0xf9, 0x35, 0xa4, + 0x76, 0x17, 0xbd, 0x2d, 0xa4, 0x10, 0x90, 0xae, 0x82, 0xf6, 0x88, 0x45, 0x14, 0x6f, 0x76, 0x76, + 0x43, 0x11, 0xa5, 0xf4, 0x72, 0x81, 0x6f, 0x7e, 0x14, 0x53, 0xf1, 0x8c, 0x65, 0xf4, 0x36, 0x70, + 0x53, 0x70, 0x01, 0xc5, 0x0f, 0xdd, 0x44, 0xec, 0x76, 0x04, 0xde, 0xa9, 0xad, 0x0c, 0x71, 0x51, + 0x84, 0xdd, 0xad, 0xd0, 0x9b, 0x2f, 0xfb, 0x49, 0xc5, 0x15, 0xe7, 0x45, 0xf5, 0x7a, 0x71, 0xe5, + 0x35, 0xde, 0xec, 0xdc, 0x8e, 0x7d, 0x76, 0x8f, 0xb6, 0xba, 0xfa, 0xac, 0xbe, 0x18, 0xcb, 0xe1, + 0x99, 0x59, 0x8e, 0xac, 0x92, 0xb8, 0x07, 0x8b, 0xdf, 0x32, 0x79, 0xd2, 0x22, 0x29, 0xd2, 0x50, + 0x3b, 0xd5, 0x92, 0x1e, 0xec, 0x3b, 0x36, 0x33, 0x48, 0x73, 0x5f, 0x0a, 0xc8, 0xac, 0xb5, 0x62, + 0x47, 0xe8, 0xec, 0x6c, 0x93, 0x85, 0xf4, 0x92, 0x1c, 0xa1, 0x8f, 0xf3, 0x8f, 0xc7, 0xc8, 0x9c, + 0x3d, 0x31, 0x30, 0x82, 0xe1, 0x80, 0xa5, 0x36, 0xd2, 0x09, 0x55, 0xd4, 0xfc, 0xbf, 0x21, 0x11, + 0xa0, 0x69, 0x58, 0x6a, 0x19, 0x56, 0xfc, 0xf6, 0xed, 0x7e, 0xe1, 0xdd, 0x50, 0x18, 0x30, 0xa8, + 0x50, 0x61, 0xdb, 0x09, 0xc3, 0x44, 0x09, 0x6e, 0x35, 0x67, 0x56, 0x19, 0x14, 0x04, 0x16, 0x05, + 0xf6, 0x3d, 0xec, 0x50, 0xdb, 0xf6, 0x77, 0x29, 0x81, 0x7d, 0xdd, 0x44, 0x82, 0x4d, 0x8b, 0x1b, + 0x50, 0x18, 0xb3, 0x49, 0x28, 0xd4, 0x42, 0x1d, 0x8b, 0xd3, 0xe0, 0xb7, 0x85, 0x24, 0xde, 0xf9, + 0x12, 0x79, 0x5c, 0x5d, 0xee, 0x01, 0xee, 0x3f, 0x94, 0x35, 0x4e, 0x58, 0xb6, 0xdd, 0xe3, 0x6b, + 0xd9, 0x64, 0x30, 0xa8, 0x3c, 0x1e, 0xf1, 0x0a, 0x95, 0x4e, 0x72, 0x9c, 0xb4, 0x8f, 0x78, 0xaf, + 0x5b, 0x58, 0x48, 0x51, 0x53, 0x7d, 0x62, 0x01, 0x21, 0x4c, 0x95, 0x92, 0x1c, 0xf8, 0x25, 0x25, + 0xb5, 0x33, 0x5f, 0x4f, 0xe1, 0xa1, 0xaf, 0x04, 0xba, 0x0e, 0xb9, 0x6e, 0x81, 0x16, 0x0c, 0xfb, + 0x0e, 0x22, 0xaa, 0x50, 0x2d, 0x82, 0x5b, 0x36, 0x1a, 0xd2, 0xf4, 0x78, 0x46, 0xee, 0x45, 0xf4, + 0xa3, 0x27, 0x54, 0x45, 0xe8, 0x45, 0xfc, 0x86, 0xba, 0x71, 0x46, 0xbe, 0x62, 0xe0, 0xc0, 0xa2, + 0x74, 0x3f, 0x20, 0x67, 0x33, 0x82, 0x97, 0x71, 0xe2, 0xd0, 0x09, 0x2a, 0xfb, 0x94, 0x8a, 0xc6, + 0xc1, 0x1b, 0x2b, 0xa2, 0x37, 0x06, 0x15, 0xce, 0x4e, 0xe6, 0x38, 0x35, 0xf2, 0x9c, 0xa9, 0xd9, + 0xb9, 0x21, 0x11, 0xa0, 0x69, 0xdc, 0xff, 0x46, 0x77, 0x6d, 0xed, 0x66, 0x28, 0x10, 0x83, 0x41, + 0xbb, 0x29, 0x53, 0xf7, 0x19, 0x29, 0xb3, 0x54, 0x37, 0xaf, 0x1a, 0x38, 0xb0, 0x28, 0xb1, 0x6d, + 0x1d, 0xe9, 0x34, 0x49, 0xc7, 0xfe, 0x28, 0x6f, 0x0a, 0x68, 0x1a, 0xf4, 0xf1, 0xc5, 0x7e, 0x7b, + 0x77, 0x2b, 0xe8, 0xdc, 0x13, 0x13, 0x5b, 0x49, 0xe5, 0x86, 0x80, 0x83, 0xa2, 0x70, 0xde, 0x26, + 0x95, 0x5e, 0xd0, 0x12, 0x53, 0x79, 0x59, 0xea, 0x9d, 0x74, 0x35, 0x51, 0x89, 0xf9, 0x74, 0x76, + 0x3e, 0x42, 0x34, 0x23, 0xe3, 0x65, 0x5c, 0x7c, 0x58, 0x34, 0xcb, 0x7f, 0x3c, 0x31, 0xa4, 0xff, + 0x98, 0x7e, 0x33, 0xd1, 0x67, 0x39, 0x93, 0x2b, 0xfa, 0x9b, 0x5d, 0x55, 0x18, 0x30, 0xa8, 0xd0, + 0x18, 0x6d, 0x52, 0x03, 0x4c, 0x5a, 0x6b, 0x3c, 0xb2, 0x76, 0xea, 0x23, 0x18, 0xa3, 0x6b, 0x69, + 0x6e, 0xd0, 0x5f, 0x81, 0xd3, 0x25, 0x67, 0x5a, 0xb8, 0x8e, 0xac, 0x5a, 0xab, 0x27, 0x88, 0xe7, + 0xc5, 0x1a, 0x6b, 0x69, 0x4e, 0xd0, 0xcf, 0xdc, 0xf9, 0x0a, 0x59, 0x92, 0xc0, 0xfe, 0xeb, 0x7b, + 0x6c, 0xb9, 0x54, 0x56, 0x9f, 0xa2, 0xdc, 0x96, 0x6a, 0x03, 0xa9, 0xe0, 0x18, 0x0e, 0xce, 0xbb, + 0x64, 0x82, 0x9d, 0x38, 0xc4, 0x8b, 0xd3, 0x6c, 0xb7, 0x7b, 0xad, 0xa8, 0xc3, 0x6d, 0x99, 0x9d, + 0x5b, 0x88, 0x80, 0x44, 0x7d, 0x8a, 0xc3, 0x80, 0x20, 0x78, 0xd2, 0xf1, 0x9a, 0xf6, 0x3a, 0x9d, + 0x30, 0xf1, 0xb8, 0x12, 0x36, 0x53, 0x44, 0x8f, 0x34, 0xaa, 0x58, 0xd1, 0x65, 0x79, 0x3d, 0x2a, + 0x3a, 0xca, 0xc0, 0x80, 0x59, 0x05, 0x6e, 0xe3, 0xe1, 0x7d, 0x14, 0x98, 0xd2, 0xe9, 0x1e, 0x2f, + 0xce, 0x16, 0xd9, 0xc6, 0x6f, 0x59, 0x85, 0x0c, 0x09, 0x66, 0x33, 0x83, 0x34, 0x77, 0x0c, 0xb7, + 0x35, 0xfc, 0xa8, 0x73, 0x3a, 0xdc, 0x56, 0xfb, 0x51, 0x4d, 0xb7, 0x29, 0xbb, 0x1a, 0xca, 0x43, + 0xf3, 0x98, 0x24, 0x98, 0x4f, 0x5d, 0x0d, 0xd5, 0x28, 0x30, 0xe9, 0x96, 0xde, 0x22, 0xd3, 0xc6, + 0x80, 0x0f, 0x13, 0xd7, 0xb9, 0xf4, 0x79, 0xba, 0xfb, 0xa7, 0x06, 0x72, 0xa8, 0xb8, 0xd0, 0xff, + 0x5e, 0x26, 0xf3, 0x19, 0x27, 0x19, 0xf7, 0x02, 0x16, 0xf9, 0x6c, 0x89, 0xbc, 0xeb, 0x14, 0x06, + 0x0c, 0x63, 0x0b, 0xae, 0x72, 0x01, 0xc1, 0x25, 0xa5, 0x68, 0x65, 0xa0, 0x14, 0x15, 0xc2, 0x6a, + 0xec, 0xe4, 0xc2, 0xca, 0xde, 0x1d, 0xc6, 0x0b, 0xed, 0x0e, 0x0f, 0x41, 0xc0, 0x59, 0x1b, 0xcc, + 0x64, 0x81, 0x0d, 0xe6, 0xc3, 0x12, 0x99, 0xb3, 0x67, 0x5e, 0x81, 0x11, 0x7f, 0x54, 0x07, 0x70, + 0x99, 0x19, 0x62, 0x49, 0x14, 0xb6, 0xdb, 0x7e, 0x24, 0x22, 0xc5, 0xe6, 0x84, 0x5d, 0x25, 0xa0, + 0x60, 0x50, 0xb8, 0xbf, 0x50, 0x26, 0x0b, 0x3a, 0x6c, 0x58, 0xa4, 0x30, 0x1d, 0xdd, 0xd1, 0xc0, + 0xb6, 0x75, 0x34, 0x90, 0x97, 0x99, 0x34, 0xd5, 0xae, 0x81, 0xc7, 0x04, 0xef, 0xa6, 0x8e, 0x09, + 0x5e, 0x1b, 0x92, 0xef, 0xf1, 0x47, 0x06, 0xff, 0xa4, 0x4c, 0x1e, 0x4b, 0x17, 0x59, 0x6b, 0x7b, + 0xc1, 0xc1, 0x08, 0xc7, 0xe9, 0x4b, 0xd6, 0x38, 0xbd, 0x31, 0x5c, 0x7f, 0x58, 0xe3, 0x06, 0x0e, + 0x96, 0x97, 0x1a, 0xac, 0xb7, 0x4e, 0xc2, 0xfc, 0xf8, 0x11, 0xfb, 0x8f, 0x25, 0xf2, 0x44, 0x66, + 0xb9, 0xd3, 0x70, 0x81, 0x7e, 0xd1, 0x76, 0x81, 0xbe, 0x7a, 0x82, 0xee, 0x0d, 0xf0, 0x89, 0xfe, + 0x97, 0xf2, 0x80, 0x6e, 0x31, 0x6f, 0xd9, 0x2d, 0xba, 0xfd, 0x36, 0xe9, 0x26, 0x15, 0x63, 0x6c, + 0xa4, 0x3c, 0xe4, 0xbb, 0xc8, 0xf6, 0x4f, 0x0d, 0xa6, 0x6b, 0x7f, 0x29, 0xcd, 0x42, 0xa3, 0xc1, + 0xe4, 0x60, 0xe7, 0xc6, 0x2a, 0x8f, 0x28, 0x37, 0x16, 0x95, 0x31, 0x87, 0xca, 0x4a, 0x4f, 0x3b, + 0xe1, 0x0c, 0xfb, 0xdd, 0xa0, 0xa2, 0x6a, 0x12, 0xea, 0xb4, 0x3c, 0x44, 0x62, 0x2c, 0x77, 0xc1, + 0x59, 0x1f, 0xd0, 0x8c, 0xb7, 0xe0, 0x77, 0x1f, 0x95, 0xc7, 0x52, 0xf1, 0x74, 0xbf, 0x59, 0x21, + 0x1f, 0x3f, 0x66, 0xda, 0xd1, 0x4d, 0xc2, 0x3a, 0xf9, 0x7c, 0x29, 0xed, 0x9e, 0x5a, 0xca, 0x2c, + 0x6c, 0xf9, 0xab, 0x52, 0x1f, 0xab, 0xfc, 0x91, 0x3f, 0xd6, 0xcf, 0x9b, 0xce, 0x44, 0x1e, 0xea, + 0x78, 0xf5, 0xc4, 0x0b, 0xeb, 0xe1, 0x79, 0x17, 0x4f, 0xd1, 0xf1, 0x81, 0xe9, 0xa8, 0x3f, 0x99, + 0xd9, 0x29, 0x2b, 0xc0, 0x02, 0xaf, 0x8a, 0x21, 0xd0, 0xb8, 0x8b, 0xa2, 0xaf, 0x8a, 0x49, 0x04, + 0x68, 0x1a, 0x2b, 0x8e, 0xa2, 0x9c, 0x1b, 0x47, 0xf1, 0x6f, 0x4b, 0xe4, 0x5c, 0xba, 0x11, 0xa7, + 0x21, 0x75, 0x1a, 0xb6, 0xd4, 0x59, 0x1e, 0xee, 0xdb, 0x0f, 0x10, 0x38, 0x3f, 0x37, 0x43, 0xce, + 0xf7, 0x6d, 0x56, 0x7c, 0x18, 0x7f, 0xbc, 0x44, 0xce, 0xec, 0x31, 0xfb, 0xc2, 0xb8, 0xf1, 0x23, + 0x3a, 0x96, 0x73, 0xdd, 0xe9, 0xd8, 0x8b, 0x42, 0xdc, 0x5a, 0xea, 0x23, 0x81, 0xfe, 0xca, 0x9c, + 0x9f, 0xa1, 0x43, 0xed, 0xdd, 0x8f, 0xfb, 0xf2, 0xe1, 0x8b, 0x79, 0xf4, 0xf9, 0x1c, 0x57, 0x5e, + 0x4e, 0x26, 0xfd, 0xd5, 0x45, 0x8c, 0x15, 0xcd, 0xa2, 0x82, 0xcc, 0x5a, 0xa9, 0x12, 0xc0, 0xb3, + 0x84, 0xa1, 0xda, 0x57, 0xe8, 0x0e, 0x5a, 0xd6, 0xfd, 0x03, 0x2e, 0x93, 0x24, 0x06, 0x14, 0x47, + 0xe7, 0x3d, 0x52, 0xdd, 0x93, 0x97, 0x7c, 0x84, 0xd0, 0xcb, 0xd9, 0x59, 0x32, 0xef, 0x04, 0xf1, + 0x28, 0x77, 0x85, 0x02, 0xcd, 0xd4, 0xb9, 0x46, 0x2a, 0x9d, 0xdd, 0x58, 0xdc, 0xbb, 0xcd, 0x8b, + 0xa3, 0xb1, 0xa3, 0x96, 0xf8, 0x4d, 0x42, 0x0a, 0x04, 0x64, 0x81, 0x9c, 0xa2, 0x9d, 0x96, 0xf0, + 0x61, 0xe7, 0x70, 0x82, 0xd5, 0x5a, 0x3f, 0x27, 0x0a, 0x04, 0x64, 0xc1, 0x02, 0xf6, 0xf0, 0xbe, + 0x82, 0x70, 0x50, 0xe7, 0x5c, 0xca, 0xee, 0xbb, 0x95, 0xc1, 0x53, 0xca, 0x31, 0x30, 0x70, 0x46, + 0xe8, 0x99, 0x6e, 0xb2, 0x14, 0xd0, 0xc2, 0x7f, 0x90, 0x97, 0x18, 0xb8, 0x2f, 0x5d, 0x34, 0x3f, + 0x48, 0xe3, 0x70, 0x10, 0xbc, 0x18, 0x57, 0xbf, 0xbb, 0xbf, 0x1b, 0x0b, 0xff, 0x40, 0x1e, 0xd7, + 0xbe, 0x64, 0xde, 0x82, 0x2b, 0x83, 0x83, 0xe0, 0xe5, 0xd4, 0x48, 0x79, 0xb7, 0x29, 0xf2, 0x38, + 0xe6, 0x58, 0xb4, 0xf6, 0xb5, 0xd0, 0xd5, 0x09, 0x8c, 0xa0, 0xdb, 0x58, 0x03, 0x5a, 0x9e, 0xea, + 0x23, 0x93, 0xbb, 0xfc, 0xa6, 0x9f, 0xc8, 0xd9, 0x78, 0x39, 0xef, 0x36, 0x62, 0xdf, 0xb5, 0x40, + 0x7e, 0x93, 0x41, 0x20, 0x40, 0xb2, 0xa3, 0xfb, 0x30, 0xd9, 0x55, 0x57, 0x17, 0x45, 0xd2, 0xc6, + 0xe5, 0xe1, 0xae, 0x3a, 0x0a, 0xeb, 0x59, 0x41, 0xc1, 0xe0, 0x88, 0x73, 0xde, 0x93, 0x59, 0xec, + 0x59, 0xc2, 0xc6, 0xdc, 0x39, 0x9f, 0x99, 0xf4, 0x9e, 0xcf, 0x79, 0x85, 0x02, 0xcd, 0xd4, 0xe9, + 0x91, 0xd9, 0xc3, 0xb8, 0xbb, 0xef, 0xcb, 0xa5, 0xcf, 0xb2, 0x38, 0x4e, 0x5f, 0xf9, 0x5c, 0x4e, + 0x6a, 0x4e, 0x51, 0x24, 0x88, 0x92, 0x9e, 0xd7, 0xee, 0x93, 0x60, 0x2c, 0x1d, 0xd2, 0x1d, 0x93, + 0x2d, 0xd8, 0xb5, 0xe0, 0x27, 0x79, 0xbf, 0x17, 0xee, 0x1c, 0x25, 0xbe, 0xc8, 0xf2, 0x98, 0xf3, + 0x49, 0xde, 0xe1, 0xc4, 0xfd, 0x9f, 0x44, 0x20, 0x40, 0xb2, 0x53, 0x43, 0xc6, 0xa4, 0xf1, 0x42, + 0xe1, 0x21, 0xeb, 0xeb, 0x83, 0x1e, 0x32, 0x26, 0x7d, 0x35, 0x53, 0xf7, 0xf7, 0xc7, 0xfb, 0x37, + 0x38, 0xa6, 0x7f, 0xfe, 0x6c, 0xff, 0x71, 0xe6, 0xdb, 0xc3, 0xdb, 0x57, 0x0f, 0xf1, 0x60, 0x93, + 0xee, 0x0f, 0xe7, 0xbb, 0x99, 0xbb, 0x97, 0xd8, 0x21, 0x86, 0x35, 0xd3, 0xf8, 0xd0, 0xa8, 0x9c, + 0xa1, 0xd9, 0x78, 0x18, 0x50, 0x67, 0x5a, 0xe5, 0xab, 0x7c, 0x64, 0x95, 0xef, 0x2e, 0x1d, 0x6f, + 0xd4, 0x52, 0x74, 0xd2, 0x8a, 0x21, 0xf3, 0x3c, 0xb0, 0xbd, 0x66, 0x4d, 0xb0, 0x00, 0xc5, 0x0c, + 0x07, 0xee, 0xc9, 0x74, 0x27, 0xc0, 0x67, 0x68, 0x91, 0xec, 0x94, 0xfb, 0x02, 0x36, 0xc4, 0x48, + 0x3c, 0x59, 0x3f, 0x8e, 0xf8, 0xc3, 0x3c, 0x02, 0x38, 0xbe, 0xb2, 0xd3, 0x54, 0x21, 0xff, 0x61, + 0x29, 0x43, 0xe1, 0xe1, 0x4a, 0xff, 0xe7, 0x6c, 0xa5, 0xff, 0xf9, 0xb4, 0xd2, 0xdf, 0x67, 0xa2, + 0x5b, 0xfa, 0x7e, 0xf1, 0x84, 0x7f, 0x45, 0xb3, 0x6a, 0xb8, 0xff, 0xab, 0x44, 0x2a, 0xf5, 0xb0, + 0x35, 0x42, 0x27, 0xc0, 0x55, 0xcb, 0x09, 0xf0, 0x5c, 0xee, 0xf3, 0x35, 0x03, 0x4d, 0xfe, 0x5b, + 0x29, 0x93, 0xff, 0xd3, 0xf9, 0xac, 0x8e, 0x37, 0xf0, 0xbf, 0x55, 0x21, 0xe6, 0x03, 0x3c, 0xce, + 0x6f, 0x9f, 0x24, 0xaa, 0xb1, 0x52, 0xec, 0x4d, 0x1e, 0x51, 0x07, 0x8b, 0x01, 0x92, 0x57, 0x9e, + 0xfe, 0xd4, 0x06, 0x37, 0xde, 0xf5, 0x83, 0xbd, 0xfd, 0xc4, 0x6f, 0xa5, 0x3b, 0x76, 0x7a, 0xc1, + 0x8d, 0xff, 0xb5, 0x44, 0xe6, 0x53, 0xb5, 0x3b, 0x07, 0x59, 0xb7, 0x26, 0x4e, 0x6a, 0xd5, 0x9f, + 0xc9, 0xbd, 0x67, 0xb1, 0x4c, 0x88, 0xf2, 0x44, 0x4b, 0xdb, 0x9b, 0xe9, 0x21, 0xca, 0x55, 0x1d, + 0x83, 0x41, 0x81, 0x5e, 0xfc, 0x24, 0xec, 0x86, 0xed, 0x70, 0xef, 0xe8, 0xba, 0x2f, 0x2f, 0xe5, + 0x2b, 0x2f, 0xfe, 0xb6, 0x46, 0x81, 0x49, 0x87, 0x09, 0x9b, 0xd2, 0xef, 0x37, 0xfd, 0xff, 0x89, + 0xfa, 0xa7, 0x67, 0xa2, 0xfe, 0x6e, 0x89, 0x2c, 0x60, 0xed, 0x2c, 0x84, 0x43, 0x86, 0x20, 0xaa, + 0xcc, 0xd9, 0xa5, 0x63, 0x32, 0x67, 0xe3, 0x1d, 0x8e, 0xa4, 0x15, 0xf6, 0x64, 0x36, 0x17, 0x43, + 0x8a, 0x21, 0x14, 0x04, 0x56, 0xd0, 0xd1, 0x36, 0x89, 0xfb, 0x19, 0x26, 0x1d, 0x85, 0x82, 0xc0, + 0xca, 0xc4, 0xda, 0x63, 0xd9, 0x89, 0xb5, 0x79, 0xf2, 0x1b, 0x11, 0x3a, 0x20, 0x76, 0x66, 0x23, + 0xf9, 0x8d, 0x8c, 0x29, 0xd0, 0x34, 0xee, 0x3f, 0xab, 0x90, 0x19, 0x8c, 0xa0, 0x53, 0xe1, 0xc5, + 0xaf, 0x59, 0xe1, 0xc5, 0xcf, 0xa4, 0xc2, 0x8b, 0x17, 0x4c, 0xda, 0x87, 0x13, 0x5d, 0x2c, 0xd2, + 0x24, 0xb1, 0xd4, 0xef, 0x27, 0x8d, 0x2c, 0xb6, 0xd2, 0x24, 0x29, 0x4e, 0x60, 0x33, 0xfe, 0x33, + 0x15, 0x51, 0xfc, 0x27, 0x25, 0x32, 0x47, 0xbf, 0x05, 0x4e, 0xd1, 0x3f, 0x4b, 0xf3, 0xd1, 0x4c, + 0xae, 0x34, 0x71, 0x4c, 0x72, 0xa5, 0x5f, 0x29, 0x11, 0x0c, 0xfc, 0x3c, 0x0d, 0x6f, 0xda, 0x86, + 0xed, 0x4d, 0xfb, 0x64, 0xae, 0xf0, 0x1d, 0xe0, 0x40, 0xfb, 0xf5, 0x0a, 0x99, 0xc5, 0x26, 0x87, + 0x7b, 0xf2, 0x83, 0x59, 0x83, 0x53, 0x2a, 0x30, 0x38, 0x98, 0xa0, 0x21, 0x6c, 0xb7, 0xc3, 0xfb, + 0xe9, 0x8f, 0xb7, 0xc1, 0xa0, 0x20, 0xb0, 0xe8, 0xa6, 0xec, 0x62, 0x12, 0x99, 0xb0, 0x17, 0xa7, + 0xaf, 0x7b, 0xd5, 0x05, 0x1c, 0x14, 0x05, 0x5d, 0xf1, 0x33, 0x71, 0x40, 0x6d, 0x00, 0x19, 0x5b, + 0x30, 0xc6, 0x62, 0x0b, 0x78, 0x0e, 0x3b, 0x03, 0x0e, 0x16, 0x15, 0x55, 0x35, 0xab, 0xec, 0x37, + 0x5b, 0x43, 0x27, 0xc8, 0xf6, 0xcd, 0x13, 0x2c, 0x49, 0x0e, 0xa0, 0x99, 0xe1, 0x31, 0x40, 0x22, + 0xc3, 0x20, 0x62, 0x71, 0x6c, 0xa8, 0x94, 0x53, 0x15, 0x20, 0x81, 0xb9, 0xac, 0xd4, 0xff, 0xce, + 0x4b, 0x98, 0xba, 0x35, 0x68, 0x6f, 0xe1, 0x2b, 0x12, 0x22, 0x90, 0x44, 0xe4, 0x62, 0x15, 0x40, + 0xd0, 0x78, 0xdc, 0xf3, 0xd9, 0x65, 0x53, 0xfe, 0x96, 0xc0, 0x14, 0xa3, 0x66, 0x7b, 0xfe, 0x96, + 0x82, 0x82, 0x41, 0xe1, 0xbe, 0xca, 0xf6, 0xee, 0x21, 0xc3, 0xcf, 0xbf, 0x57, 0x26, 0x4e, 0x9d, + 0x85, 0x5b, 0x58, 0xcf, 0x2d, 0xec, 0x93, 0xb9, 0x98, 0x1a, 0xab, 0x9d, 0xde, 0x03, 0xc1, 0xaa, + 0x58, 0xc0, 0x7f, 0x63, 0xdd, 0x2c, 0xc3, 0x2f, 0x58, 0xda, 0x30, 0x48, 0xf1, 0xc5, 0x21, 0x89, + 0x7a, 0x9d, 0x95, 0x18, 0xdf, 0x6d, 0x13, 0x0f, 0x26, 0xb0, 0x21, 0x01, 0x09, 0x04, 0x8d, 0xc7, + 0x39, 0xc0, 0x7e, 0xdc, 0xa4, 0xd2, 0x28, 0x0c, 0x13, 0x39, 0x6b, 0x58, 0xf6, 0x6c, 0x03, 0x0e, + 0x16, 0x15, 0x26, 0x9e, 0x8e, 0x7b, 0xdd, 0x6e, 0x9b, 0x9d, 0xee, 0x78, 0xed, 0xab, 0x51, 0xd8, + 0xeb, 0xf2, 0x88, 0x5b, 0x91, 0x78, 0xba, 0xd1, 0x87, 0x85, 0x8c, 0x12, 0xb8, 0xe8, 0x77, 0x63, + 0xf6, 0xbf, 0xb8, 0x40, 0xca, 0x7d, 0x4c, 0x0d, 0x06, 0x02, 0x89, 0x73, 0x7b, 0x6c, 0xab, 0x62, + 0x89, 0xec, 0x31, 0x12, 0xcc, 0xf1, 0xc9, 0x6c, 0x97, 0x6d, 0x47, 0xf2, 0x88, 0xb9, 0xd0, 0x50, + 0xa6, 0x02, 0x3e, 0x78, 0xc2, 0x6a, 0x93, 0x0d, 0xd8, 0x5c, 0xdd, 0x7f, 0x4f, 0x98, 0xac, 0x11, + 0x07, 0x6b, 0x93, 0x22, 0x9c, 0x53, 0xe8, 0x62, 0xcf, 0x16, 0x79, 0xb9, 0x45, 0xcb, 0x71, 0x11, + 0x1c, 0x0a, 0x92, 0x8b, 0xf3, 0x65, 0x7e, 0x46, 0xce, 0xd6, 0x77, 0xf1, 0xe7, 0x94, 0x38, 0xbd, + 0x15, 0xa8, 0x2c, 0x58, 0x80, 0xc1, 0xce, 0xd9, 0x22, 0xb3, 0x22, 0xdb, 0xb9, 0xb0, 0xd5, 0x2b, + 0x96, 0xbd, 0x3a, 0x0b, 0x26, 0xf2, 0xc3, 0x34, 0x00, 0xec, 0xc2, 0xce, 0x1e, 0x79, 0xd2, 0x78, + 0x02, 0x25, 0x23, 0x28, 0x89, 0x0b, 0x8e, 0x4f, 0xa2, 0x17, 0x60, 0xfb, 0x38, 0x42, 0x38, 0x9e, + 0x0f, 0x1d, 0xe4, 0xc7, 0xbc, 0x66, 0x12, 0x1c, 0xfa, 0x35, 0xdf, 0x6b, 0x51, 0xad, 0xcc, 0xb7, + 0x6f, 0x17, 0x3f, 0x41, 0x2b, 0x78, 0x6c, 0x25, 0x8b, 0x00, 0xb2, 0xcb, 0x51, 0x7b, 0xbd, 0xda, + 0xea, 0xc4, 0x62, 0x0c, 0x26, 0xac, 0xd7, 0x5e, 0xaa, 0xb5, 0x9b, 0x0d, 0xd5, 0x7f, 0xfd, 0x03, + 0x74, 0x01, 0xe7, 0x7d, 0xfe, 0x08, 0xad, 0x32, 0x48, 0xf8, 0x2b, 0x43, 0x6f, 0x14, 0x32, 0x81, + 0xad, 0x8b, 0x10, 0xdc, 0x8d, 0xa5, 0x82, 0xff, 0xac, 0x3b, 0x12, 0x56, 0x15, 0xce, 0x0f, 0xd3, + 0x85, 0xe5, 0x47, 0xf8, 0xb8, 0xea, 0x4a, 0x93, 0x65, 0x6f, 0x64, 0x27, 0x54, 0x53, 0x56, 0x04, + 0xbc, 0xd3, 0xe8, 0xa3, 0x80, 0x8c, 0x52, 0xce, 0x35, 0x94, 0x38, 0x26, 0x54, 0xc4, 0x6a, 0x4a, + 0xd5, 0x6e, 0xb1, 0xe6, 0x63, 0x82, 0x76, 0x7c, 0x6b, 0xc2, 0xe6, 0x08, 0xa9, 0x72, 0xb8, 0xad, + 0xa8, 0xac, 0xd4, 0xc4, 0x8e, 0x30, 0xec, 0xcf, 0x4c, 0x8d, 0x96, 0x12, 0x9e, 0x58, 0xdc, 0xf4, + 0x13, 0x7c, 0xfa, 0x89, 0xf9, 0x9b, 0xa7, 0x8c, 0x2c, 0x57, 0x1a, 0x05, 0x26, 0x1d, 0xea, 0x40, + 0xec, 0xa0, 0x63, 0xb3, 0xc6, 0xbc, 0xc8, 0x53, 0x7a, 0xed, 0x5c, 0xe3, 0x60, 0x90, 0x78, 0x49, + 0xba, 0x59, 0x5f, 0x63, 0x1e, 0xe1, 0x14, 0x29, 0x05, 0x83, 0xc4, 0x63, 0x74, 0x58, 0xfa, 0x4d, + 0x9d, 0xb9, 0x22, 0xde, 0xf9, 0x7e, 0x09, 0x5e, 0xf0, 0x59, 0x9d, 0x07, 0x64, 0x41, 0xbd, 0xeb, + 0xc3, 0xd3, 0x08, 0xc6, 0x8b, 0xf3, 0x45, 0x9e, 0xc0, 0xcd, 0xcc, 0x46, 0xa8, 0x82, 0x73, 0x37, + 0x53, 0x3c, 0xa1, 0xaf, 0x16, 0xeb, 0x96, 0xfc, 0x42, 0x6e, 0xa6, 0x71, 0x7c, 0x56, 0xa7, 0xb7, + 0xd3, 0x0a, 0x0f, 0xa8, 0xc8, 0x60, 0x2f, 0xfb, 0x98, 0x0f, 0xba, 0x4a, 0x04, 0x68, 0x9a, 0xa5, + 0x2f, 0x90, 0x33, 0x7d, 0x73, 0x7a, 0xa8, 0xa8, 0xb2, 0x9f, 0x1d, 0x23, 0x55, 0xe5, 0xd5, 0xa1, + 0xf5, 0x5b, 0xae, 0xb4, 0x27, 0xd2, 0xae, 0xb4, 0x29, 0xdc, 0x79, 0x4d, 0xef, 0xd9, 0x57, 0x32, + 0x5e, 0x74, 0xbc, 0x90, 0xfb, 0x11, 0x8b, 0x5f, 0xee, 0x18, 0xe2, 0xbd, 0x4b, 0xad, 0xd6, 0x8f, + 0x1d, 0xab, 0xd6, 0x17, 0x7c, 0xb0, 0x07, 0x15, 0x78, 0xba, 0xf3, 0x50, 0xb2, 0xd4, 0x63, 0x14, + 0x75, 0x04, 0x02, 0xc7, 0x31, 0xbd, 0x0b, 0x85, 0x32, 0xd3, 0xbb, 0x26, 0x4f, 0xaa, 0x77, 0x49, + 0x0e, 0xa0, 0x99, 0x61, 0x22, 0xf5, 0xa6, 0xfd, 0xb8, 0x88, 0xba, 0xb3, 0x71, 0x71, 0x88, 0xc7, + 0x3d, 0x7a, 0x46, 0x22, 0xf5, 0xb5, 0x34, 0x3f, 0xe8, 0xaf, 0x02, 0x2f, 0xd8, 0xcf, 0xab, 0x09, + 0x41, 0x77, 0x20, 0x4c, 0x55, 0x34, 0x3a, 0x47, 0xe6, 0x2d, 0xcb, 0x52, 0x7d, 0x08, 0xfe, 0xc7, + 0xdf, 0x2a, 0x31, 0xff, 0xe3, 0xb6, 0x7f, 0xd0, 0x6d, 0xe3, 0x8b, 0x25, 0xa3, 0x6b, 0xfa, 0x97, + 0xc9, 0x54, 0x22, 0x6a, 0x29, 0x96, 0xcc, 0xd9, 0x68, 0x16, 0xf3, 0xc7, 0x2a, 0x41, 0x20, 0xa1, + 0xa0, 0x18, 0xba, 0xff, 0x92, 0x7f, 0x05, 0x89, 0x39, 0x0d, 0xcb, 0xea, 0xa6, 0x6d, 0x59, 0xbd, + 0x58, 0xb8, 0x33, 0x03, 0x2c, 0xac, 0x6f, 0xda, 0x5d, 0x60, 0x0a, 0xdb, 0xa3, 0xef, 0x11, 0x77, + 0x6f, 0x10, 0xfb, 0xc1, 0x14, 0xaa, 0xae, 0xb0, 0x68, 0x4d, 0x2e, 0x11, 0x2f, 0x0c, 0x19, 0xa9, + 0xe9, 0xfe, 0x5a, 0x99, 0x9c, 0xcb, 0x7a, 0x47, 0xdd, 0x69, 0x91, 0x99, 0xae, 0xa1, 0x3e, 0x17, + 0xbb, 0xcb, 0x6f, 0x2a, 0xdc, 0x5a, 0x75, 0x31, 0xa1, 0x60, 0x71, 0xc5, 0x14, 0xea, 0xf8, 0x2a, + 0xbc, 0x72, 0xaf, 0x94, 0x87, 0x17, 0x51, 0xaa, 0x9a, 0x75, 0x83, 0x11, 0x58, 0x6c, 0x47, 0x90, + 0x6f, 0xdc, 0xfd, 0xfb, 0x25, 0xf2, 0xf8, 0x80, 0x0b, 0xff, 0x58, 0xdd, 0x7d, 0xe6, 0x85, 0x14, + 0x0f, 0xf2, 0xa8, 0xea, 0xb8, 0x6f, 0x12, 0x04, 0xd6, 0xd9, 0xc1, 0x7b, 0xa4, 0xea, 0x95, 0xd2, + 0x72, 0x91, 0x63, 0xf0, 0xbe, 0xcb, 0xc5, 0xc6, 0xbd, 0x53, 0xf5, 0x2e, 0xa9, 0xc1, 0xd5, 0xfd, + 0x46, 0x85, 0x8c, 0xf3, 0x87, 0x12, 0xeb, 0x54, 0x01, 0xe2, 0xf9, 0x05, 0x87, 0x4b, 0x6f, 0xa8, + 0xf5, 0x24, 0x0e, 0x00, 0xc9, 0xc6, 0xb9, 0x41, 0xce, 0xa2, 0x7f, 0x35, 0xf0, 0xda, 0x35, 0xbf, + 0xed, 0x1d, 0x49, 0xc5, 0x9b, 0xe7, 0x88, 0x96, 0x69, 0x50, 0xcf, 0x6e, 0xf6, 0x93, 0x40, 0x56, + 0x39, 0xbc, 0xae, 0x94, 0x4a, 0x10, 0xc4, 0xf3, 0x36, 0xaa, 0xeb, 0x4a, 0xc7, 0x27, 0x09, 0xc2, + 0x1b, 0x5b, 0xdd, 0x3e, 0x13, 0xc3, 0x78, 0x61, 0xcf, 0x36, 0x2b, 0x6c, 0x5a, 0xbc, 0xeb, 0x14, + 0xf7, 0xd8, 0x19, 0xe9, 0xf6, 0x3e, 0xb5, 0x64, 0xf6, 0xc3, 0x76, 0x4b, 0xbc, 0x0c, 0xa5, 0xd4, + 0xa9, 0x46, 0x0a, 0x0f, 0x7d, 0x25, 0x90, 0xcb, 0xae, 0x17, 0xb4, 0xe9, 0xd4, 0xd6, 0x5c, 0x26, + 0x6c, 0x2e, 0x1b, 0x29, 0x3c, 0xf4, 0x95, 0x70, 0xff, 0xb0, 0x44, 0xce, 0x66, 0x9c, 0xdc, 0xf3, + 0x80, 0xb2, 0x3d, 0x2a, 0x1a, 0x55, 0x06, 0x61, 0x23, 0xa0, 0x8c, 0xc3, 0x41, 0x51, 0xe0, 0x2c, + 0xe4, 0x76, 0x63, 0x3a, 0x21, 0xb2, 0x38, 0x2a, 0x15, 0xd8, 0xe1, 0xd2, 0xfd, 0xa8, 0xf7, 0xde, + 0xc7, 0x06, 0xbe, 0xf7, 0x4e, 0x15, 0x93, 0x3d, 0x65, 0x9d, 0x1b, 0x8a, 0x09, 0xb7, 0xcf, 0x39, + 0x0e, 0xb3, 0x7b, 0xcf, 0xa7, 0x22, 0x78, 0xb0, 0x21, 0xa9, 0x67, 0xe9, 0x99, 0x4b, 0x01, 0x63, + 0x5b, 0x32, 0x9e, 0xa6, 0x7f, 0xde, 0x7e, 0xb5, 0x56, 0xb7, 0x79, 0xb5, 0x66, 0xbd, 0xc7, 0x55, + 0x34, 0x3b, 0xf9, 0xa7, 0x30, 0x75, 0xb0, 0x7a, 0x5e, 0x51, 0x4d, 0x7a, 0xca, 0xae, 0x4e, 0xc1, + 0xc0, 0x90, 0xce, 0x73, 0xa2, 0xf7, 0x29, 0xe7, 0x24, 0x78, 0xad, 0x30, 0x36, 0x86, 0x80, 0xca, + 0x11, 0xaa, 0xd6, 0xe2, 0xa9, 0x40, 0xda, 0x35, 0x7b, 0x9d, 0x83, 0x41, 0xe2, 0xed, 0x0c, 0xe4, + 0x93, 0x23, 0xce, 0x40, 0x3e, 0x95, 0x1b, 0x85, 0xf8, 0xcb, 0x74, 0x57, 0x64, 0x69, 0xd7, 0xc4, + 0x4d, 0x50, 0x74, 0xf2, 0x8f, 0x6e, 0x57, 0xc4, 0xf7, 0xda, 0xb0, 0xb2, 0x74, 0xd2, 0x61, 0xd6, + 0x02, 0xe0, 0x38, 0x4c, 0xe2, 0xca, 0xaa, 0xc6, 0xcf, 0x37, 0xc3, 0x93, 0xb8, 0xea, 0x57, 0xbc, + 0x59, 0x8c, 0x3b, 0xf8, 0x5d, 0x6a, 0x7b, 0xb3, 0xc6, 0x6a, 0x4f, 0xcc, 0xa3, 0x12, 0xe3, 0x9e, + 0xd9, 0xb8, 0x87, 0x15, 0xe3, 0x9e, 0xcd, 0x3c, 0x3f, 0xc6, 0x3d, 0xb3, 0xdc, 0xa3, 0x17, 0xe3, + 0x9e, 0xd9, 0xcc, 0x01, 0xfa, 0xdc, 0xf7, 0xca, 0x03, 0xba, 0xc5, 0x34, 0xbb, 0x17, 0x70, 0x15, + 0x30, 0x64, 0x2c, 0x36, 0xe5, 0x19, 0xbe, 0x02, 0x38, 0x0c, 0x14, 0xd6, 0x89, 0x8d, 0x18, 0x71, + 0xde, 0xc8, 0xf5, 0x13, 0x7e, 0xe0, 0x65, 0xdb, 0x95, 0x63, 0x5e, 0xb0, 0x4c, 0x05, 0x8e, 0x63, + 0x44, 0x8e, 0x52, 0xd6, 0x2b, 0x27, 0x51, 0xd6, 0x67, 0xb2, 0x15, 0xf5, 0x25, 0xba, 0x27, 0x9e, + 0xdc, 0xf8, 0xfe, 0xc5, 0x32, 0xf9, 0xf8, 0x31, 0x33, 0x8c, 0x8b, 0x16, 0x6b, 0x50, 0x0d, 0xd1, + 0xd2, 0x37, 0xb0, 0x75, 0x72, 0x6e, 0xb7, 0xd7, 0x6e, 0x1f, 0xb1, 0x13, 0x76, 0xbf, 0x25, 0x29, + 0x84, 0xba, 0xa0, 0xde, 0x78, 0xdc, 0xc8, 0xa0, 0x81, 0xcc, 0x92, 0xe8, 0xf8, 0x0a, 0x77, 0x58, + 0x5a, 0xbb, 0x96, 0xbe, 0xff, 0xc9, 0xc6, 0xaf, 0xa2, 0x1d, 0x5f, 0xb7, 0xfa, 0x28, 0x20, 0xa3, + 0x14, 0x2a, 0x0f, 0xec, 0x79, 0x48, 0xd5, 0xac, 0x94, 0xf2, 0x00, 0x26, 0x12, 0x6c, 0x5a, 0xf7, + 0x0f, 0x4a, 0x28, 0x84, 0x32, 0x9e, 0x2f, 0xb2, 0x5e, 0xfd, 0x35, 0x02, 0xc7, 0xfb, 0x5f, 0xfd, + 0x65, 0xfe, 0x30, 0x9b, 0x96, 0x8f, 0x6f, 0xac, 0x03, 0xcf, 0xac, 0xfd, 0x5e, 0x5c, 0x98, 0x50, + 0x14, 0xf8, 0x52, 0x57, 0x2b, 0x38, 0x0c, 0xe2, 0x30, 0x2a, 0xf0, 0xc8, 0x66, 0x5f, 0x30, 0x93, + 0xde, 0xa2, 0x6a, 0x9c, 0x09, 0x48, 0x6e, 0xee, 0x5f, 0x2f, 0x93, 0x59, 0x59, 0x1f, 0x55, 0x4b, + 0xd8, 0x2a, 0x1e, 0x95, 0x68, 0x7d, 0xc7, 0x12, 0xad, 0x97, 0x8a, 0xdd, 0x1a, 0x61, 0x8d, 0x1a, + 0x28, 0x52, 0xbf, 0x94, 0x12, 0xa9, 0x97, 0x87, 0x61, 0x9a, 0x6b, 0xcd, 0x9f, 0xb1, 0xe8, 0x1f, + 0xa1, 0x5c, 0xa4, 0x59, 0xdd, 0x19, 0x20, 0x3a, 0xbf, 0x51, 0x4e, 0x75, 0x83, 0x89, 0xcc, 0xaf, + 0x91, 0xb1, 0x7d, 0x2f, 0x6a, 0x89, 0xa3, 0x8b, 0xb7, 0x86, 0xfc, 0x14, 0xd4, 0x7c, 0x88, 0x5a, + 0x5c, 0xf0, 0xbd, 0xac, 0x1e, 0x4d, 0xa0, 0xa0, 0xdc, 0x30, 0x4c, 0x56, 0xa9, 0xf3, 0x26, 0x3e, + 0xaa, 0x10, 0x76, 0x55, 0x94, 0xcd, 0x33, 0xfc, 0x41, 0x05, 0x84, 0x50, 0x0e, 0x8e, 0x5d, 0x1d, + 0x82, 0x41, 0xd0, 0x2f, 0xf9, 0xa4, 0xaa, 0xaa, 0x1e, 0x61, 0xc0, 0xdf, 0x0f, 0x2a, 0xe4, 0x6c, + 0xc6, 0x54, 0x71, 0x7e, 0xcc, 0x1a, 0xb5, 0xcf, 0x0e, 0x3d, 0xd7, 0x3e, 0xe2, 0xb8, 0xfd, 0x18, + 0x53, 0x50, 0x5b, 0x62, 0x6e, 0x9c, 0xa0, 0x7a, 0xaa, 0xc5, 0xa6, 0xab, 0x47, 0x50, 0x7e, 0xf5, + 0x58, 0xed, 0x29, 0x0d, 0x3e, 0x56, 0xa3, 0xda, 0x39, 0xc2, 0x6f, 0xfc, 0x93, 0x63, 0xe4, 0x5c, + 0xd6, 0xcd, 0x34, 0xe7, 0xa7, 0x4a, 0xa9, 0x6c, 0xc6, 0x9f, 0x1f, 0xfe, 0x7a, 0x1b, 0x4f, 0x71, + 0x2c, 0x6e, 0xac, 0x2f, 0xdb, 0xf9, 0x8d, 0x73, 0x47, 0x5b, 0xd4, 0xce, 0x42, 0xa7, 0x23, 0x9e, + 0x98, 0x5a, 0xca, 0x83, 0xb7, 0x4f, 0xd0, 0x14, 0x91, 0xdb, 0x3a, 0x4e, 0x85, 0x4e, 0x4b, 0x70, + 0x7e, 0xe8, 0xb4, 0x6c, 0xc3, 0xd2, 0x1e, 0x66, 0x35, 0x56, 0xfd, 0x1a, 0xe1, 0x14, 0x08, 0x70, + 0x4f, 0x32, 0x5a, 0x3d, 0xc2, 0x69, 0xf0, 0x37, 0x4b, 0x24, 0x75, 0x7c, 0xae, 0xac, 0xe0, 0xd2, + 0x40, 0x2b, 0x98, 0x52, 0x50, 0x5d, 0xc9, 0x4f, 0xa7, 0xd9, 0x05, 0x0a, 0x03, 0x86, 0x51, 0x4f, + 0xac, 0x55, 0x06, 0x3d, 0xb1, 0x86, 0xe6, 0x51, 0xdb, 0x3f, 0xf4, 0xa5, 0x4d, 0xaa, 0x84, 0xf7, + 0x16, 0x02, 0x81, 0xe3, 0xdc, 0xef, 0x54, 0xc8, 0x04, 0x37, 0xfc, 0x46, 0xb8, 0x2d, 0xd7, 0x85, + 0x0d, 0x56, 0xe8, 0x8e, 0x18, 0x6f, 0xcd, 0x32, 0x1a, 0x69, 0x7c, 0x42, 0xa9, 0xbe, 0x69, 0xbb, + 0xcd, 0x59, 0xb6, 0x7a, 0xbf, 0x94, 0x8a, 0x1c, 0x23, 0x9c, 0x87, 0x31, 0x16, 0xfb, 0x84, 0xc4, + 0xec, 0x95, 0x1e, 0xe4, 0x21, 0xf2, 0x74, 0xbd, 0x56, 0xa8, 0x1d, 0x0d, 0x55, 0x8c, 0xb7, 0x46, + 0x27, 0x08, 0x52, 0x08, 0x30, 0x78, 0x2f, 0xbd, 0x41, 0xaa, 0x8a, 0x38, 0x4f, 0x5d, 0x9e, 0x31, + 0xa7, 0xe4, 0x9f, 0x23, 0xf3, 0xa9, 0xba, 0x86, 0xd2, 0xb6, 0xbf, 0x4d, 0x95, 0x89, 0xbe, 0xd7, + 0x21, 0x31, 0xd7, 0xdb, 0xb9, 0x76, 0x86, 0xc5, 0x2f, 0x3e, 0xf0, 0x49, 0x7c, 0x05, 0xfa, 0x39, + 0xf5, 0x0c, 0x2c, 0x64, 0xd6, 0x26, 0x33, 0x0f, 0x96, 0xb3, 0x33, 0x0f, 0xb2, 0xa7, 0x49, 0x78, + 0xdb, 0x4f, 0x43, 0x03, 0xda, 0xb4, 0x35, 0xa0, 0x67, 0x8b, 0x4c, 0x83, 0x01, 0xaa, 0xcf, 0xbf, + 0x29, 0x11, 0x87, 0x13, 0xa4, 0x5f, 0xeb, 0xe2, 0x1e, 0x14, 0x43, 0x67, 0xd7, 0xf3, 0x46, 0x61, + 0xc0, 0xa0, 0x1a, 0x32, 0x13, 0xb3, 0x7a, 0xe5, 0xa6, 0xd8, 0x93, 0xd8, 0x95, 0x02, 0x4f, 0x62, + 0xff, 0x56, 0x85, 0xa4, 0x8f, 0x9a, 0x9d, 0xf7, 0xc8, 0x0c, 0x5e, 0x6b, 0xd9, 0x09, 0xda, 0x41, + 0x12, 0xf8, 0x71, 0x31, 0x37, 0xfe, 0x9a, 0x51, 0x42, 0xf8, 0xe0, 0x0c, 0x08, 0x58, 0x1c, 0x31, + 0x3e, 0xaa, 0x1b, 0x51, 0x4b, 0xa1, 0xed, 0xef, 0x31, 0xbd, 0x43, 0xe5, 0x6d, 0xa8, 0x2b, 0x28, + 0x18, 0x14, 0x19, 0x31, 0x4d, 0x95, 0xd3, 0x88, 0x69, 0x1a, 0x1b, 0x32, 0xa6, 0x69, 0xbc, 0x50, + 0x4c, 0x13, 0x90, 0xf3, 0xd2, 0x75, 0x86, 0xbf, 0xf1, 0x6a, 0x18, 0x4f, 0x35, 0x26, 0x22, 0xd1, + 0x96, 0xf0, 0xba, 0x0f, 0x64, 0x52, 0xc0, 0x80, 0x92, 0x6e, 0x8f, 0x9c, 0x6d, 0xf8, 0x51, 0xc0, + 0x32, 0xc1, 0xb4, 0xf4, 0x0a, 0xfc, 0x0a, 0x5e, 0xaa, 0xb7, 0x17, 0xff, 0x90, 0xb7, 0x76, 0x8c, + 0xfb, 0xf4, 0x72, 0xb1, 0x6b, 0x96, 0xee, 0x5f, 0x2a, 0x93, 0x49, 0x11, 0xd2, 0x31, 0xc2, 0x8d, + 0xe4, 0xba, 0x65, 0xdf, 0xbd, 0x98, 0xb7, 0x72, 0x59, 0x73, 0x06, 0x5a, 0x76, 0x8d, 0x94, 0x65, + 0xf7, 0x52, 0x31, 0x76, 0xc7, 0xdb, 0x74, 0xbf, 0x59, 0xa6, 0xbb, 0xbd, 0x1d, 0xca, 0x32, 0xba, + 0xe1, 0xf8, 0x22, 0x99, 0x8c, 0x45, 0xbc, 0x47, 0xa1, 0x47, 0xc8, 0xd3, 0x9f, 0x54, 0x3f, 0xaf, + 0x2d, 0x22, 0x3c, 0x24, 0xbb, 0xcc, 0x90, 0x92, 0xca, 0x69, 0x84, 0x94, 0xb8, 0xdf, 0x61, 0x22, + 0xd5, 0x1c, 0xc0, 0xd3, 0xd8, 0x13, 0xde, 0xb1, 0xa5, 0xef, 0xcb, 0x85, 0xa6, 0x82, 0x68, 0xdf, + 0x80, 0xbd, 0xe1, 0x5b, 0x25, 0x32, 0x2d, 0x08, 0x4f, 0xa3, 0x07, 0x3f, 0x6c, 0xf7, 0xe0, 0xb9, + 0x42, 0x3d, 0x18, 0xd0, 0xf4, 0xbf, 0x5d, 0x56, 0x4d, 0x2f, 0xf8, 0xce, 0xbf, 0xf9, 0x8a, 0x7f, + 0x79, 0x98, 0x57, 0xfc, 0x59, 0x74, 0x2b, 0xbe, 0xb9, 0xc8, 0xb7, 0xa8, 0xac, 0x37, 0x14, 0x77, + 0xe4, 0x5b, 0xb3, 0x08, 0x13, 0x21, 0xf4, 0xc3, 0xbe, 0xcd, 0xa8, 0x63, 0x7a, 0x15, 0x27, 0x30, + 0xb8, 0xca, 0x70, 0x33, 0x56, 0xc3, 0xb8, 0xed, 0x8b, 0xbc, 0x29, 0xe0, 0xa0, 0x28, 0xdc, 0x37, + 0x98, 0x8c, 0x65, 0xc3, 0x33, 0x5c, 0xa0, 0xee, 0x4f, 0x4f, 0xa8, 0x81, 0x65, 0x4e, 0x92, 0x9b, + 0xf2, 0x5d, 0xff, 0x52, 0x91, 0xa8, 0x04, 0xe3, 0x93, 0x64, 0x3f, 0xeb, 0xef, 0xf8, 0x7d, 0xde, + 0xe7, 0x37, 0x0a, 0xcb, 0xc8, 0x21, 0xfc, 0xcd, 0x2c, 0x97, 0x05, 0xbb, 0xbf, 0xbf, 0x59, 0x4f, + 0xe7, 0x0b, 0x5c, 0x93, 0x08, 0xd0, 0x34, 0xb4, 0x00, 0x57, 0xd7, 0xed, 0x27, 0x2e, 0xa5, 0xba, + 0x2e, 0x87, 0xc4, 0xd0, 0xd7, 0xa9, 0xfe, 0xa2, 0x32, 0x26, 0xd7, 0x79, 0xe2, 0xdb, 0x2a, 0xd7, + 0x5f, 0xd6, 0x35, 0x18, 0x4c, 0x1a, 0xaa, 0xd6, 0x9d, 0x6d, 0xa9, 0xe8, 0xc2, 0x7a, 0x6f, 0xa7, + 0x1d, 0x34, 0xb1, 0x28, 0x8f, 0xec, 0x7f, 0x1c, 0x8f, 0x92, 0x6b, 0xfd, 0x68, 0xc8, 0x2a, 0xe3, + 0x6c, 0x63, 0x04, 0x1f, 0xcb, 0x0c, 0x2d, 0xef, 0x00, 0x89, 0x84, 0x5a, 0x17, 0x64, 0x36, 0xae, + 0x86, 0x8d, 0xfe, 0x90, 0x81, 0xb8, 0x50, 0x10, 0x20, 0x48, 0xb3, 0xc0, 0x03, 0xea, 0xb6, 0xf9, + 0xc2, 0x4b, 0x5d, 0x04, 0x59, 0xaa, 0x03, 0x6a, 0xeb, 0xfd, 0x97, 0x3a, 0xa4, 0xa8, 0xa9, 0xb4, + 0x5f, 0x34, 0x21, 0xe2, 0xda, 0x2f, 0x1e, 0x72, 0xc5, 0x22, 0x25, 0xed, 0x27, 0x30, 0xc4, 0x72, + 0x6b, 0x00, 0x0d, 0x0c, 0x2c, 0x8d, 0x99, 0x23, 0xe5, 0x48, 0x1a, 0x01, 0x97, 0x3a, 0x34, 0xc2, + 0xc0, 0x81, 0x45, 0xf9, 0xd1, 0x0e, 0x08, 0xbe, 0x86, 0x85, 0x8d, 0x4d, 0xd5, 0xf9, 0x2a, 0x99, + 0x31, 0xdb, 0x28, 0xc4, 0xe4, 0x2b, 0xc5, 0x5f, 0xcd, 0x11, 0x9b, 0xb3, 0x6a, 0xb9, 0x89, 0x03, + 0x8b, 0xb7, 0xdb, 0x24, 0xf3, 0xa9, 0x57, 0x3b, 0xd5, 0xf3, 0xaf, 0xa5, 0x87, 0xf5, 0xfc, 0x2b, + 0xa6, 0x86, 0x19, 0xdf, 0xf6, 0x82, 0xfc, 0xdc, 0xeb, 0x45, 0xde, 0x4f, 0x75, 0x5e, 0x27, 0x13, + 0xfe, 0xee, 0x2e, 0x3e, 0xaf, 0xcf, 0xd7, 0xdc, 0x93, 0xea, 0x51, 0x6f, 0x06, 0xc5, 0x95, 0xc4, + 0x2a, 0xe3, 0x3f, 0x41, 0x10, 0xbb, 0xff, 0x8e, 0x5a, 0x57, 0xdb, 0x61, 0x5b, 0x1e, 0x55, 0xe4, + 0xb4, 0x64, 0xb5, 0x2f, 0x0b, 0xfc, 0xf3, 0x19, 0x59, 0xe0, 0x1d, 0xcd, 0x30, 0x23, 0x07, 0xbc, + 0xea, 0x4d, 0xa5, 0x50, 0x6f, 0xc6, 0x86, 0xe9, 0xcd, 0xd7, 0x4b, 0x44, 0x84, 0x20, 0x14, 0xd8, + 0x96, 0x5a, 0x32, 0x73, 0xb3, 0x75, 0xff, 0xfe, 0x42, 0x91, 0x38, 0x7a, 0x71, 0xeb, 0x5e, 0x4d, + 0x25, 0xeb, 0xae, 0xbd, 0xc5, 0x15, 0x4d, 0xef, 0x69, 0x8e, 0xbe, 0x21, 0x5f, 0xbf, 0xcf, 0x69, + 0xd7, 0x50, 0xb9, 0x7d, 0x58, 0x62, 0x63, 0x64, 0xac, 0x52, 0xbc, 0x98, 0x89, 0x8d, 0x25, 0x02, + 0x34, 0x0d, 0x06, 0x10, 0xc4, 0xbd, 0x1d, 0x46, 0x9e, 0x8a, 0x47, 0x68, 0x70, 0x30, 0x48, 0xbc, + 0xfb, 0x3f, 0x17, 0x88, 0xd5, 0x35, 0x2b, 0x9d, 0x4c, 0xe9, 0xa1, 0xa7, 0x93, 0xa1, 0xdc, 0xfd, + 0x83, 0x6e, 0x72, 0x54, 0x0b, 0xa2, 0x62, 0xa9, 0xbd, 0xd6, 0x05, 0x75, 0x3f, 0x77, 0x89, 0x01, + 0xc5, 0x71, 0x40, 0x72, 0xa0, 0xca, 0x23, 0x91, 0x1c, 0x68, 0xec, 0xff, 0x49, 0x72, 0x20, 0x6a, + 0x21, 0xec, 0xf1, 0xe7, 0xc4, 0xc5, 0xbd, 0xa9, 0x9c, 0xe3, 0xab, 0x8c, 0xb7, 0xc7, 0xf9, 0x05, + 0x19, 0x81, 0x00, 0xc9, 0x0e, 0x53, 0xcf, 0x70, 0x63, 0x41, 0xe4, 0xdb, 0x79, 0xa5, 0x88, 0x1b, + 0xa5, 0x3f, 0xf5, 0x8c, 0x08, 0x3a, 0x11, 0xbc, 0x64, 0x32, 0xa0, 0xc9, 0x8f, 0x9e, 0x0c, 0x48, + 0xa5, 0xf0, 0x99, 0x7a, 0x58, 0x29, 0x7c, 0xac, 0x54, 0x48, 0xd5, 0x51, 0xa4, 0x42, 0xa2, 0xb2, + 0xed, 0xb1, 0x6e, 0x56, 0x26, 0x31, 0x91, 0x8c, 0xe7, 0x0b, 0x27, 0xc8, 0xac, 0x66, 0x55, 0xcd, + 0xae, 0xb3, 0x64, 0x92, 0x41, 0x76, 0xc5, 0x32, 0xa7, 0xd2, 0xf4, 0x47, 0xcf, 0xa9, 0x34, 0xea, + 0xac, 0x3d, 0x3a, 0xc3, 0xd2, 0xec, 0x48, 0x32, 0x2c, 0xcd, 0x3d, 0xc4, 0x0c, 0x4b, 0x46, 0x6e, + 0xa4, 0xf9, 0x87, 0x9b, 0x1b, 0x69, 0x9f, 0x4c, 0xb7, 0xc2, 0xfb, 0x9d, 0xfb, 0x5e, 0xd4, 0x5a, + 0xa9, 0x6f, 0x8a, 0x54, 0x3c, 0x39, 0x77, 0xde, 0x6b, 0xba, 0x80, 0x55, 0x03, 0xf7, 0x17, 0x6a, + 0x24, 0x98, 0xac, 0x45, 0x96, 0xa8, 0x33, 0x1f, 0x31, 0x4b, 0x94, 0x95, 0x6b, 0xc9, 0x19, 0x45, + 0xae, 0xa5, 0xf7, 0xd8, 0xcd, 0xd7, 0xdd, 0x60, 0xef, 0x86, 0xd7, 0x5d, 0x3c, 0x5b, 0xa4, 0x86, + 0x35, 0x49, 0xde, 0x5f, 0x83, 0x42, 0x81, 0x66, 0xda, 0x9f, 0xcd, 0xe9, 0xdc, 0x69, 0x67, 0x73, + 0x7a, 0x6c, 0x84, 0xd9, 0x9c, 0xce, 0x8f, 0x22, 0x9b, 0xd3, 0x5f, 0x20, 0x4f, 0x1d, 0xdf, 0x7f, + 0x9d, 0xa0, 0xb3, 0xae, 0x4d, 0xea, 0x54, 0x82, 0x4e, 0xa6, 0x5b, 0x18, 0x54, 0x46, 0xb0, 0x66, + 0xf9, 0xb8, 0x60, 0x4d, 0xf7, 0x9f, 0x96, 0xc8, 0xe3, 0x03, 0x12, 0x3d, 0x14, 0x8e, 0xbe, 0xee, + 0x92, 0xf9, 0xae, 0x5d, 0xb4, 0xf0, 0x3d, 0x09, 0x2b, 0xb1, 0x84, 0x4a, 0xf0, 0x9c, 0x42, 0x40, + 0x9a, 0xfd, 0xea, 0xb3, 0xdf, 0xfd, 0xc1, 0x53, 0x1f, 0xfb, 0x1e, 0xfd, 0xfb, 0x3d, 0xfa, 0xf7, + 0xe3, 0x7f, 0xf4, 0x54, 0xe9, 0xbb, 0xf4, 0xef, 0x7b, 0xf4, 0xef, 0x0f, 0xe9, 0xdf, 0xd7, 0xff, + 0xf8, 0xa9, 0x8f, 0xfd, 0x48, 0xf9, 0xf0, 0xf2, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x77, + 0x02, 0x29, 0xf6, 0xb0, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.proto new file mode 100644 index 0000000000..e4c85c8c9c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/generated.proto @@ -0,0 +1,3092 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.api.v1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +message AWSElasticBlockStoreVolumeSource { + // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + optional string volumeID = 1; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + optional string fsType = 2; + + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + optional int32 partition = 3; + + // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". + // If omitted, the default is "false". + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + optional bool readOnly = 4; +} + +// Affinity is a group of affinity scheduling rules. +message Affinity { + // Describes node affinity scheduling rules for the pod. + optional NodeAffinity nodeAffinity = 1; + + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + optional PodAffinity podAffinity = 2; + + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + optional PodAntiAffinity podAntiAffinity = 3; +} + +// AttachedVolume describes a volume attached to a node +message AttachedVolume { + // Name of the attached volume + optional string name = 1; + + // DevicePath represents the device path where the volume should be avilable + optional string devicePath = 2; +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +message AvoidPods { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + repeated PreferAvoidPodsEntry preferAvoidPods = 1; +} + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +message AzureDiskVolumeSource { + // The Name of the data disk in the blob storage + optional string diskName = 1; + + // The URI the data disk in the blob storage + optional string diskURI = 2; + + // Host Caching mode: None, Read Only, Read Write. + optional string cachingMode = 3; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + optional string fsType = 4; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + optional bool readOnly = 5; +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +message AzureFileVolumeSource { + // the name of secret that contains Azure Storage Account Name and Key + optional string secretName = 1; + + // Share Name + optional string shareName = 2; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + optional bool readOnly = 3; +} + +// Binding ties one object to another. +// For example, a pod is bound to a node by a scheduler. +message Binding { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // The target object that you want to bind to the standard object. + optional ObjectReference target = 2; +} + +// Adds and removes POSIX capabilities from running containers. +message Capabilities { + // Added capabilities + repeated string add = 1; + + // Removed capabilities + repeated string drop = 2; +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +message CephFSVolumeSource { + // Required: Monitors is a collection of Ceph monitors + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + repeated string monitors = 1; + + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + optional string path = 2; + + // Optional: User is the rados user name, default is admin + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + optional string user = 3; + + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + optional string secretFile = 4; + + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + optional LocalObjectReference secretRef = 5; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + optional bool readOnly = 6; +} + +// Represents a cinder volume resource in Openstack. +// A Cinder volume must exist before mounting to a container. +// The volume must also be in the same region as the kubelet. +// Cinder volumes support ownership management and SELinux relabeling. +message CinderVolumeSource { + // volume id used to identify the volume in cinder + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional string volumeID = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional string fsType = 2; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional bool readOnly = 3; +} + +// Information about the condition of a component. +message ComponentCondition { + // Type of condition for a component. + // Valid value: "Healthy" + optional string type = 1; + + // Status of the condition for a component. + // Valid values for "Healthy": "True", "False", or "Unknown". + optional string status = 2; + + // Message about the condition for a component. + // For example, information about a health check. + optional string message = 3; + + // Condition error code for a component. + // For example, a health check error code. + optional string error = 4; +} + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +message ComponentStatus { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // List of component conditions observed + repeated ComponentCondition conditions = 2; +} + +// Status of all the conditions for the component as a list of ComponentStatus objects. +message ComponentStatusList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of ComponentStatus objects. + repeated ComponentStatus items = 2; +} + +// ConfigMap holds configuration data for pods to consume. +message ConfigMap { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Data contains the configuration data. + // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot. + map<string, string> data = 2; +} + +// Selects a key from a ConfigMap. +message ConfigMapKeySelector { + // The ConfigMap to select from. + optional LocalObjectReference localObjectReference = 1; + + // The key to select. + optional string key = 2; +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +message ConfigMapList { + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of ConfigMaps. + repeated ConfigMap items = 2; +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +message ConfigMapVolumeSource { + optional LocalObjectReference localObjectReference = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + repeated KeyToPath items = 2; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + optional int32 defaultMode = 3; +} + +// A single application container that you want to run within a pod. +message Container { + // Name of the container specified as a DNS_LABEL. + // Each container in a pod must have a unique name (DNS_LABEL). + // Cannot be updated. + optional string name = 1; + + // Docker image name. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md + optional string image = 2; + + // Entrypoint array. Not executed within a shell. + // The docker image's ENTRYPOINT is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands + repeated string command = 3; + + // Arguments to the entrypoint. + // The docker image's CMD is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands + repeated string args = 4; + + // Container's working directory. + // If not specified, the container runtime's default will be used, which + // might be configured in the container image. + // Cannot be updated. + optional string workingDir = 5; + + // List of ports to expose from the container. Exposing a port here gives + // the system additional information about the network connections a + // container uses, but is primarily informational. Not specifying a port here + // DOES NOT prevent that port from being exposed. Any port which is + // listening on the default "0.0.0.0" address inside a container will be + // accessible from the network. + // Cannot be updated. + repeated ContainerPort ports = 6; + + // List of environment variables to set in the container. + // Cannot be updated. + repeated EnvVar env = 7; + + // Compute Resources required by this container. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources + optional ResourceRequirements resources = 8; + + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + repeated VolumeMount volumeMounts = 9; + + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + optional Probe livenessProbe = 10; + + // Periodic probe of container service readiness. + // Container will be removed from service endpoints if the probe fails. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + optional Probe readinessProbe = 11; + + // Actions that the management system should take in response to container lifecycle events. + // Cannot be updated. + optional Lifecycle lifecycle = 12; + + // Optional: Path at which the file to which the container's termination message + // will be written is mounted into the container's filesystem. + // Message written is intended to be brief final status, such as an assertion failure message. + // Defaults to /dev/termination-log. + // Cannot be updated. + optional string terminationMessagePath = 13; + + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#updating-images + optional string imagePullPolicy = 14; + + // Security options the pod should run with. + // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md + optional SecurityContext securityContext = 15; + + // Whether this container should allocate a buffer for stdin in the container runtime. If this + // is not set, reads from stdin in the container will always result in EOF. + // Default is false. + optional bool stdin = 16; + + // Whether the container runtime should close the stdin channel after it has been opened by + // a single attach. When stdin is true the stdin stream will remain open across multiple attach + // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + // first client attaches to stdin, and then remains open and accepts data until the client disconnects, + // at which time stdin is closed and remains closed until the container is restarted. If this + // flag is false, a container processes that reads from stdin will never receive an EOF. + // Default is false + optional bool stdinOnce = 17; + + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // Default is false. + optional bool tty = 18; +} + +// Describe a container image +message ContainerImage { + // Names by which this image is known. + // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"] + repeated string names = 1; + + // The size of the image in bytes. + optional int64 sizeBytes = 2; +} + +// ContainerPort represents a network port in a single container. +message ContainerPort { + // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + // named port in a pod must have a unique name. Name for the port that can be + // referred to by services. + optional string name = 1; + + // Number of port to expose on the host. + // If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + // Most containers do not need this. + optional int32 hostPort = 2; + + // Number of port to expose on the pod's IP address. + // This must be a valid port number, 0 < x < 65536. + optional int32 containerPort = 3; + + // Protocol for port. Must be UDP or TCP. + // Defaults to "TCP". + optional string protocol = 4; + + // What host IP to bind the external port to. + optional string hostIP = 5; +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +message ContainerState { + // Details about a waiting container + optional ContainerStateWaiting waiting = 1; + + // Details about a running container + optional ContainerStateRunning running = 2; + + // Details about a terminated container + optional ContainerStateTerminated terminated = 3; +} + +// ContainerStateRunning is a running state of a container. +message ContainerStateRunning { + // Time at which the container was last (re-)started + optional k8s.io.kubernetes.pkg.api.unversioned.Time startedAt = 1; +} + +// ContainerStateTerminated is a terminated state of a container. +message ContainerStateTerminated { + // Exit status from the last termination of the container + optional int32 exitCode = 1; + + // Signal from the last termination of the container + optional int32 signal = 2; + + // (brief) reason from the last termination of the container + optional string reason = 3; + + // Message regarding the last termination of the container + optional string message = 4; + + // Time at which previous execution of the container started + optional k8s.io.kubernetes.pkg.api.unversioned.Time startedAt = 5; + + // Time at which the container last terminated + optional k8s.io.kubernetes.pkg.api.unversioned.Time finishedAt = 6; + + // Container's ID in the format 'docker://<container_id>' + optional string containerID = 7; +} + +// ContainerStateWaiting is a waiting state of a container. +message ContainerStateWaiting { + // (brief) reason the container is not yet running. + optional string reason = 1; + + // Message regarding why the container is not yet running. + optional string message = 2; +} + +// ContainerStatus contains details for the current status of this container. +message ContainerStatus { + // This must be a DNS_LABEL. Each container in a pod must have a unique name. + // Cannot be updated. + optional string name = 1; + + // Details about the container's current condition. + optional ContainerState state = 2; + + // Details about the container's last termination condition. + optional ContainerState lastState = 3; + + // Specifies whether the container has passed its readiness probe. + optional bool ready = 4; + + // The number of times the container has been restarted, currently based on + // the number of dead containers that have not yet been removed. + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + optional int32 restartCount = 5; + + // The image the container is running. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md + // TODO(dchen1107): Which image the container is running with? + optional string image = 6; + + // ImageID of the container's image. + optional string imageID = 7; + + // Container's ID in the format 'docker://<container_id>'. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#container-information + optional string containerID = 8; +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +message DaemonEndpoint { + // Port number of the given endpoint. + optional int32 Port = 1; +} + +// DeleteOptions may be provided when deleting an API object +message DeleteOptions { + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + optional int64 gracePeriodSeconds = 1; + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + optional Preconditions preconditions = 2; + + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + optional bool orphanDependents = 3; +} + +// DownwardAPIVolumeFile represents information to create the file containing the pod field +message DownwardAPIVolumeFile { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + optional string path = 1; + + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + optional ObjectFieldSelector fieldRef = 2; + + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + optional ResourceFieldSelector resourceFieldRef = 3; + + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + optional int32 mode = 4; +} + +// DownwardAPIVolumeSource represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +message DownwardAPIVolumeSource { + // Items is a list of downward API volume file + repeated DownwardAPIVolumeFile items = 1; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + optional int32 defaultMode = 2; +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +message EmptyDirVolumeSource { + // What type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + // Must be an empty string (default) or Memory. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir + optional string medium = 1; +} + +// EndpointAddress is a tuple that describes single IP address. +message EndpointAddress { + // The IP of this endpoint. + // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), + // or link-local multicast ((224.0.0.0/24). + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, See #4447. + optional string ip = 1; + + // The Hostname of this endpoint + optional string hostname = 3; + + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + optional string nodeName = 4; + + // Reference to object providing the endpoint. + optional ObjectReference targetRef = 2; +} + +// EndpointPort is a tuple that describes a single port. +message EndpointPort { + // The name of this port (corresponds to ServicePort.Name). + // Must be a DNS_LABEL. + // Optional only if one port is defined. + optional string name = 1; + + // The port number of the endpoint. + optional int32 port = 2; + + // The IP protocol for this port. + // Must be UDP or TCP. + // Default is TCP. + optional string protocol = 3; +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +message EndpointSubset { + // IP addresses which offer the related ports that are marked as ready. These endpoints + // should be considered safe for load balancers and clients to utilize. + repeated EndpointAddress addresses = 1; + + // IP addresses which offer the related ports but are not currently marked as ready + // because they have not yet finished starting, have recently failed a readiness check, + // or have recently failed a liveness check. + repeated EndpointAddress notReadyAddresses = 2; + + // Port numbers available on the related IP addresses. + repeated EndpointPort ports = 3; +} + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +message Endpoints { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // The set of all endpoints is the union of all subsets. Addresses are placed into + // subsets according to the IPs they share. A single address with multiple ports, + // some of which are ready and some of which are not (because they come from + // different containers) will result in the address being displayed in different + // subsets for the different ports. No address will appear in both Addresses and + // NotReadyAddresses in the same subset. + // Sets of addresses and ports that comprise a service. + repeated EndpointSubset subsets = 2; +} + +// EndpointsList is a list of endpoints. +message EndpointsList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of endpoints. + repeated Endpoints items = 2; +} + +// EnvVar represents an environment variable present in a Container. +message EnvVar { + // Name of the environment variable. Must be a C_IDENTIFIER. + optional string name = 1; + + // Variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + // Defaults to "". + optional string value = 2; + + // Source for the environment variable's value. Cannot be used if value is not empty. + optional EnvVarSource valueFrom = 3; +} + +// EnvVarSource represents a source for the value of an EnvVar. +message EnvVarSource { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.podIP. + optional ObjectFieldSelector fieldRef = 1; + + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + optional ResourceFieldSelector resourceFieldRef = 2; + + // Selects a key of a ConfigMap. + optional ConfigMapKeySelector configMapKeyRef = 3; + + // Selects a key of a secret in the pod's namespace + optional SecretKeySelector secretKeyRef = 4; +} + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +message Event { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // The object that this event is about. + optional ObjectReference involvedObject = 2; + + // This should be a short, machine understandable string that gives the reason + // for the transition into the object's current status. + // TODO: provide exact specification for format. + optional string reason = 3; + + // A human-readable description of the status of this operation. + // TODO: decide on maximum length. + optional string message = 4; + + // The component reporting this event. Should be a short machine understandable string. + optional EventSource source = 5; + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + optional k8s.io.kubernetes.pkg.api.unversioned.Time firstTimestamp = 6; + + // The time at which the most recent occurrence of this event was recorded. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTimestamp = 7; + + // The number of times this event has occurred. + optional int32 count = 8; + + // Type of this event (Normal, Warning), new types could be added in the future + optional string type = 9; +} + +// EventList is a list of events. +message EventList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of events + repeated Event items = 2; +} + +// EventSource contains information for an event. +message EventSource { + // Component from which the event is generated. + optional string component = 1; + + // Node name on which the event is generated. + optional string host = 2; +} + +// ExecAction describes a "run in container" action. +message ExecAction { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + repeated string command = 1; +} + +// ExportOptions is the query options to the standard REST get call. +message ExportOptions { + // Should this value be exported. Export strips fields that a user can not specify. + optional bool export = 1; + + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + optional bool exact = 2; +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +message FCVolumeSource { + // Required: FC target worldwide names (WWNs) + repeated string targetWWNs = 1; + + // Required: FC target lun number + optional int32 lun = 2; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + optional string fsType = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + optional bool readOnly = 4; +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +message FlexVolumeSource { + // Driver is the name of the driver to use for this volume. + optional string driver = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + optional string fsType = 2; + + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + optional LocalObjectReference secretRef = 3; + + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + optional bool readOnly = 4; + + // Optional: Extra command options if any. + map<string, string> options = 5; +} + +// Represents a Flocker volume mounted by the Flocker agent. +// Flocker volumes do not support ownership management or SELinux relabeling. +message FlockerVolumeSource { + // Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker + optional string datasetName = 1; +} + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +message GCEPersistentDiskVolumeSource { + // Unique name of the PD resource in GCE. Used to identify the disk in GCE. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + optional string pdName = 1; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + optional string fsType = 2; + + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + optional int32 partition = 3; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + optional bool readOnly = 4; +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +message GitRepoVolumeSource { + // Repository URL + optional string repository = 1; + + // Commit hash for the specified revision. + optional string revision = 2; + + // Target directory name. + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + optional string directory = 3; +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +message GlusterfsVolumeSource { + // EndpointsName is the endpoint name that details Glusterfs topology. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional string endpoints = 1; + + // Path is the Glusterfs volume path. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional string path = 2; + + // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + optional bool readOnly = 3; +} + +// HTTPGetAction describes an action based on HTTP Get requests. +message HTTPGetAction { + // Path to access on the HTTP server. + optional string path = 1; + + // Name or number of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString port = 2; + + // Host name to connect to, defaults to the pod IP. You probably want to set + // "Host" in httpHeaders instead. + optional string host = 3; + + // Scheme to use for connecting to the host. + // Defaults to HTTP. + optional string scheme = 4; + + // Custom headers to set in the request. HTTP allows repeated headers. + repeated HTTPHeader httpHeaders = 5; +} + +// HTTPHeader describes a custom header to be used in HTTP probes +message HTTPHeader { + // The header field name + optional string name = 1; + + // The header field value + optional string value = 2; +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +message Handler { + // One and only one of the following should be specified. + // Exec specifies the action to take. + optional ExecAction exec = 1; + + // HTTPGet specifies the http request to perform. + optional HTTPGetAction httpGet = 2; + + // TCPSocket specifies an action involving a TCP port. + // TCP hooks not yet supported + // TODO: implement a realistic TCP lifecycle hook + optional TCPSocketAction tcpSocket = 3; +} + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +message HostPathVolumeSource { + // Path of the directory on the host. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + optional string path = 1; +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +message ISCSIVolumeSource { + // iSCSI target portal. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + optional string targetPortal = 1; + + // Target iSCSI Qualified Name. + optional string iqn = 2; + + // iSCSI target lun number. + optional int32 lun = 3; + + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + optional string iscsiInterface = 4; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + optional string fsType = 5; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + optional bool readOnly = 6; +} + +// Maps a string key to a path within a volume. +message KeyToPath { + // The key to project. + optional string key = 1; + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + optional string path = 2; + + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + optional int32 mode = 3; +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +message Lifecycle { + // PostStart is called immediately after a container is created. If the handler fails, + // the container is terminated and restarted according to its restart policy. + // Other management of the container blocks until the hook completes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details + optional Handler postStart = 1; + + // PreStop is called immediately before a container is terminated. + // The container is terminated after the handler completes. + // The reason for termination is passed to the handler. + // Regardless of the outcome of the handler, the container is eventually terminated. + // Other management of the container blocks until the hook completes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details + optional Handler preStop = 2; +} + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +message LimitRange { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the limits enforced. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional LimitRangeSpec spec = 2; +} + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. +message LimitRangeItem { + // Type of resource that this limit applies to. + optional string type = 1; + + // Max usage constraints on this kind by resource name. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> max = 2; + + // Min usage constraints on this kind by resource name. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> min = 3; + + // Default resource requirement limit value by resource name if resource limit is omitted. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> default = 4; + + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> defaultRequest = 5; + + // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> maxLimitRequestRatio = 6; +} + +// LimitRangeList is a list of LimitRange items. +message LimitRangeList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of LimitRange objects. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md + repeated LimitRange items = 2; +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind. +message LimitRangeSpec { + // Limits is the list of LimitRangeItem objects that are enforced. + repeated LimitRangeItem limits = 1; +} + +// List holds a list of objects, which may not be known by the server. +message List { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of objects + repeated k8s.io.kubernetes.pkg.runtime.RawExtension items = 2; +} + +// ListOptions is the query options to a standard REST list call. +message ListOptions { + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + optional string labelSelector = 1; + + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + optional string fieldSelector = 2; + + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + optional bool watch = 3; + + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + optional string resourceVersion = 4; + + // Timeout for the list/watch call. + optional int64 timeoutSeconds = 5; +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +message LoadBalancerIngress { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + optional string ip = 1; + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + optional string hostname = 2; +} + +// LoadBalancerStatus represents the status of a load-balancer. +message LoadBalancerStatus { + // Ingress is a list containing ingress points for the load-balancer. + // Traffic intended for the service should be sent to these ingress points. + repeated LoadBalancerIngress ingress = 1; +} + +// LocalObjectReference contains enough information to let you locate the +// referenced object inside the same namespace. +message LocalObjectReference { + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + // TODO: Add other useful fields. apiVersion, kind, uid? + optional string name = 1; +} + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +message NFSVolumeSource { + // Server is the hostname or IP address of the NFS server. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + optional string server = 1; + + // Path that is exported by the NFS server. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + optional string path = 2; + + // ReadOnly here will force + // the NFS export to be mounted with read-only permissions. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + optional bool readOnly = 3; +} + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +message Namespace { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the behavior of the Namespace. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional NamespaceSpec spec = 2; + + // Status describes the current status of a Namespace. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional NamespaceStatus status = 3; +} + +// NamespaceList is a list of Namespaces. +message NamespaceList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Namespace objects in the list. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + repeated Namespace items = 2; +} + +// NamespaceSpec describes the attributes on a Namespace. +message NamespaceSpec { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. + // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers + repeated string finalizers = 1; +} + +// NamespaceStatus is information about the current status of a Namespace. +message NamespaceStatus { + // Phase is the current lifecycle phase of the namespace. + // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases + optional string phase = 1; +} + +// Node is a worker node in Kubernetes. +// Each node will have a unique identifier in the cache (i.e. in etcd). +message Node { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the behavior of a node. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional NodeSpec spec = 2; + + // Most recently observed status of the node. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional NodeStatus status = 3; +} + +// NodeAddress contains information for the node's address. +message NodeAddress { + // Node address type, one of Hostname, ExternalIP or InternalIP. + optional string type = 1; + + // The node address. + optional string address = 2; +} + +// Node affinity is a group of node affinity scheduling rules. +message NodeAffinity { + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + optional NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// NodeCondition contains condition information for a node. +message NodeCondition { + // Type of node condition. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time we got an update on a given condition. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastHeartbeatTime = 3; + + // Last time the condition transit from one status to another. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + optional string reason = 5; + + // Human readable message indicating details about last transition. + optional string message = 6; +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +message NodeDaemonEndpoints { + // Endpoint on which Kubelet is listening. + optional DaemonEndpoint kubeletEndpoint = 1; +} + +// NodeList is the whole list of all Nodes which have been registered with master. +message NodeList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of nodes + repeated Node items = 2; +} + +// NodeProxyOptions is the query options to a Node's proxy call. +message NodeProxyOptions { + // Path is the URL path to use for the current proxy request to node. + optional string path = 1; +} + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +message NodeSelector { + // Required. A list of node selector terms. The terms are ORed. + repeated NodeSelectorTerm nodeSelectorTerms = 1; +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +message NodeSelectorRequirement { + // The label key that the selector applies to. + optional string key = 1; + + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + optional string operator = 2; + + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + repeated string values = 3; +} + +// A null or empty node selector term matches no objects. +message NodeSelectorTerm { + // Required. A list of node selector requirements. The requirements are ANDed. + repeated NodeSelectorRequirement matchExpressions = 1; +} + +// NodeSpec describes the attributes that a node is created with. +message NodeSpec { + // PodCIDR represents the pod IP range assigned to the node. + optional string podCIDR = 1; + + // External ID of the node assigned by some machine database (e.g. a cloud provider). + // Deprecated. + optional string externalID = 2; + + // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID> + optional string providerID = 3; + + // Unschedulable controls node schedulability of new pods. By default, node is schedulable. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` + optional bool unschedulable = 4; +} + +// NodeStatus is information about the current status of a node. +message NodeStatus { + // Capacity represents the total resources of a node. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity for more details. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 1; + + // Allocatable represents the resources of a node that are available for scheduling. + // Defaults to Capacity. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> allocatable = 2; + + // NodePhase is the recently observed lifecycle phase of the node. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase + // The field is never populated, and now is deprecated. + optional string phase = 3; + + // Conditions is an array of current observed node conditions. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition + repeated NodeCondition conditions = 4; + + // List of addresses reachable to the node. + // Queried from cloud provider, if available. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses + repeated NodeAddress addresses = 5; + + // Endpoints of daemons running on the Node. + optional NodeDaemonEndpoints daemonEndpoints = 6; + + // Set of ids/uuids to uniquely identify the node. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info + optional NodeSystemInfo nodeInfo = 7; + + // List of container images on this node + repeated ContainerImage images = 8; + + // List of attachable volumes in use (mounted) by the node. + repeated string volumesInUse = 9; + + // List of volumes that are attached to the node. + repeated AttachedVolume volumesAttached = 10; +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +message NodeSystemInfo { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is prefered. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + optional string machineID = 1; + + // SystemUUID reported by the node. For unique machine identification + // MachineID is prefered. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + optional string systemUUID = 2; + + // Boot ID reported by the node. + optional string bootID = 3; + + // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). + optional string kernelVersion = 4; + + // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). + optional string osImage = 5; + + // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0). + optional string containerRuntimeVersion = 6; + + // Kubelet Version reported by the node. + optional string kubeletVersion = 7; + + // KubeProxy Version reported by the node. + optional string kubeProxyVersion = 8; + + // The Operating System reported by the node + optional string operatingSystem = 9; + + // The Architecture reported by the node + optional string architecture = 10; +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +message ObjectFieldSelector { + // Version of the schema the FieldPath is written in terms of, defaults to "v1". + optional string apiVersion = 1; + + // Path of the field to select in the specified API version. + optional string fieldPath = 2; +} + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +message ObjectMeta { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 1; + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency + optional string generateName = 2; + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + optional string namespace = 3; + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + optional string selfLink = 4; + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + optional string uid = 5; + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + optional string resourceVersion = 6; + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + optional int64 generation = 7; + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.Time creationTimestamp = 8; + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource will be deleted (no longer visible from + // resource lists, and not reachable by name) after the time in this field. Once set, this + // value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet + // will send a hard termination signal to the container. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.Time deletionTimestamp = 9; + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + optional int64 deletionGracePeriodSeconds = 10; + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md + map<string, string> labels = 11; + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/annotations.md + map<string, string> annotations = 12; + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + repeated OwnerReference ownerReferences = 13; + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + repeated string finalizers = 14; + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + optional string clusterName = 15; +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +message ObjectReference { + // Kind of the referent. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional string kind = 1; + + // Namespace of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + optional string namespace = 2; + + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 3; + + // UID of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + optional string uid = 4; + + // API version of the referent. + optional string apiVersion = 5; + + // Specific resourceVersion to which this reference is made, if any. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + optional string resourceVersion = 6; + + // If referring to a piece of an object instead of an entire object, this string + // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + // For example, if the object reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + optional string fieldPath = 7; +} + +// OwnerReference contains enough information to let you identify an owning +// object. Currently, an owning object must be in the same namespace, so there +// is no namespace field. +message OwnerReference { + // API version of the referent. + optional string apiVersion = 5; + + // Kind of the referent. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional string kind = 1; + + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 3; + + // UID of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + optional string uid = 4; + + // If true, this reference points to the managing controller. + optional bool controller = 6; +} + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md +message PersistentVolume { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines a specification of a persistent volume owned by the cluster. + // Provisioned by an administrator. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes + optional PersistentVolumeSpec spec = 2; + + // Status represents the current information/status for the persistent volume. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes + optional PersistentVolumeStatus status = 3; +} + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +message PersistentVolumeClaim { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the desired characteristics of a volume requested by a pod author. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + optional PersistentVolumeClaimSpec spec = 2; + + // Status represents the current information/status of a persistent volume claim. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + optional PersistentVolumeClaimStatus status = 3; +} + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +message PersistentVolumeClaimList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // A list of persistent volume claims. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + repeated PersistentVolumeClaim items = 2; +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +message PersistentVolumeClaimSpec { + // AccessModes contains the desired access modes the volume should have. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 + repeated string accessModes = 1; + + // A label query over volumes to consider for binding. + optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector selector = 4; + + // Resources represents the minimum resources the volume should have. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources + optional ResourceRequirements resources = 2; + + // VolumeName is the binding reference to the PersistentVolume backing this claim. + optional string volumeName = 3; +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +message PersistentVolumeClaimStatus { + // Phase represents the current phase of PersistentVolumeClaim. + optional string phase = 1; + + // AccessModes contains the actual access modes the volume backing the PVC has. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 + repeated string accessModes = 2; + + // Represents the actual resources of the underlying volume. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 3; +} + +// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. +// This volume finds the bound PV and mounts that volume for the pod. A +// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another +// type of volume that is owned by someone else (the system). +message PersistentVolumeClaimVolumeSource { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + optional string claimName = 1; + + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + optional bool readOnly = 2; +} + +// PersistentVolumeList is a list of PersistentVolume items. +message PersistentVolumeList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of persistent volumes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md + repeated PersistentVolume items = 2; +} + +// PersistentVolumeSource is similar to VolumeSource but meant for the +// administrator who creates PVs. Exactly one of its members must be set. +message PersistentVolumeSource { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1; + + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2; + + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + optional HostPathVolumeSource hostPath = 3; + + // Glusterfs represents a Glusterfs volume that is attached to a host and + // exposed to the pod. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + optional GlusterfsVolumeSource glusterfs = 4; + + // NFS represents an NFS mount on the host. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + optional NFSVolumeSource nfs = 5; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + optional RBDVolumeSource rbd = 6; + + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + optional ISCSIVolumeSource iscsi = 7; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional CinderVolumeSource cinder = 8; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + optional CephFSVolumeSource cephfs = 9; + + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + optional FCVolumeSource fc = 10; + + // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running + optional FlockerVolumeSource flocker = 11; + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + optional FlexVolumeSource flexVolume = 12; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + optional AzureFileVolumeSource azureFile = 13; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + optional VsphereVirtualDiskVolumeSource vsphereVolume = 14; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + optional QuobyteVolumeSource quobyte = 15; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + optional AzureDiskVolumeSource azureDisk = 16; +} + +// PersistentVolumeSpec is the specification of a persistent volume. +message PersistentVolumeSpec { + // A description of the persistent volume's resources and capacity. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> capacity = 1; + + // The actual volume backing the persistent volume. + optional PersistentVolumeSource persistentVolumeSource = 2; + + // AccessModes contains all ways the volume can be mounted. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes + repeated string accessModes = 3; + + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // Expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#binding + optional ObjectReference claimRef = 4; + + // What happens to a persistent volume when released from its claim. + // Valid options are Retain (default) and Recycle. + // Recycling must be supported by the volume plugin underlying this persistent volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#recycling-policy + optional string persistentVolumeReclaimPolicy = 5; +} + +// PersistentVolumeStatus is the current status of a persistent volume. +message PersistentVolumeStatus { + // Phase indicates if a volume is available, bound to a claim, or released by a claim. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#phase + optional string phase = 1; + + // A human-readable message indicating details about why the volume is in this state. + optional string message = 2; + + // Reason is a brief CamelCase string that describes any failure and is meant + // for machine parsing and tidy display in the CLI. + optional string reason = 3; +} + +// Pod is a collection of containers that can run on a host. This resource is created +// by clients and scheduled onto hosts. +message Pod { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional PodSpec spec = 2; + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional PodStatus status = 3; +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +message PodAffinity { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key <topologyKey> tches that of any node on which +// a pod of the set of pods is running +message PodAffinityTerm { + // A label query over a set of resources, in this case pods. + optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector labelSelector = 1; + + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // nil list means "this pod's namespace," empty list means "all namespaces" + // The json tag here is not "omitempty" since we need to distinguish nil and empty. + // See https://golang.org/pkg/encoding/json/#Marshal for more details. + repeated string namespaces = 2; + + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + optional string topologyKey = 3; +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +message PodAntiAffinity { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1; + + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2; +} + +// PodAttachOptions is the query options to a Pod's remote attach call. +// --- +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +message PodAttachOptions { + // Stdin if true, redirects the standard input stream of the pod for this call. + // Defaults to false. + optional bool stdin = 1; + + // Stdout if true indicates that stdout is to be redirected for the attach call. + // Defaults to true. + optional bool stdout = 2; + + // Stderr if true indicates that stderr is to be redirected for the attach call. + // Defaults to true. + optional bool stderr = 3; + + // TTY if true indicates that a tty will be allocated for the attach call. + // This is passed through the container runtime so the tty + // is allocated on the worker node by the container runtime. + // Defaults to false. + optional bool tty = 4; + + // The container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + optional string container = 5; +} + +// PodCondition contains details for the current condition of this pod. +message PodCondition { + // Type is the type of the condition. + // Currently only Ready. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + optional string type = 1; + + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + optional string status = 2; + + // Last time we probed the condition. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastProbeTime = 3; + + // Last time the condition transitioned from one status to another. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; + + // Unique, one-word, CamelCase reason for the condition's last transition. + optional string reason = 5; + + // Human-readable message indicating details about last transition. + optional string message = 6; +} + +// PodExecOptions is the query options to a Pod's remote exec call. +// --- +// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +message PodExecOptions { + // Redirect the standard input stream of the pod for this call. + // Defaults to false. + optional bool stdin = 1; + + // Redirect the standard output stream of the pod for this call. + // Defaults to true. + optional bool stdout = 2; + + // Redirect the standard error stream of the pod for this call. + // Defaults to true. + optional bool stderr = 3; + + // TTY if true indicates that a tty will be allocated for the exec call. + // Defaults to false. + optional bool tty = 4; + + // Container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + optional string container = 5; + + // Command is the remote command to execute. argv array. Not executed within a shell. + repeated string command = 6; +} + +// PodList is a list of Pods. +message PodList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of pods. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pods.md + repeated Pod items = 2; +} + +// PodLogOptions is the query options for a Pod's logs REST call. +message PodLogOptions { + // The container for which to stream logs. Defaults to only container if there is one container in the pod. + optional string container = 1; + + // Follow the log stream of the pod. Defaults to false. + optional bool follow = 2; + + // Return previous terminated container logs. Defaults to false. + optional bool previous = 3; + + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + optional int64 sinceSeconds = 4; + + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + optional k8s.io.kubernetes.pkg.api.unversioned.Time sinceTime = 5; + + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. Defaults to false. + optional bool timestamps = 6; + + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + optional int64 tailLines = 7; + + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + optional int64 limitBytes = 8; +} + +// PodProxyOptions is the query options to a Pod's proxy call. +message PodProxyOptions { + // Path is the URL path to use for the current proxy request to pod. + optional string path = 1; +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +message PodSecurityContext { + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + optional SELinuxOptions seLinuxOptions = 1; + + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + optional int64 runAsUser = 2; + + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + optional bool runAsNonRoot = 3; + + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + repeated int64 supplementalGroups = 4; + + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + optional int64 fsGroup = 5; +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +message PodSignature { + // Reference to controller whose pods should avoid this node. + optional OwnerReference podController = 1; +} + +// PodSpec is a description of a pod. +message PodSpec { + // List of volumes that can be mounted by containers belonging to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md + repeated Volume volumes = 1; + + // List of containers belonging to the pod. + // Containers cannot currently be added or removed. + // There must be at least one container in a Pod. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md + repeated Container containers = 2; + + // Restart policy for all containers within the pod. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#restartpolicy + optional string restartPolicy = 3; + + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + // Defaults to 30 seconds. + optional int64 terminationGracePeriodSeconds = 4; + + // Optional duration in seconds the pod may be active on the node relative to + // StartTime before the system will actively try to mark it failed and kill associated containers. + // Value must be a positive integer. + optional int64 activeDeadlineSeconds = 5; + + // Set DNS policy for containers within the pod. + // One of 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + optional string dnsPolicy = 6; + + // NodeSelector is a selector which must be true for the pod to fit on a node. + // Selector which must match a node's labels for the pod to be scheduled on that node. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/node-selection/README.md + map<string, string> nodeSelector = 7; + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md + optional string serviceAccountName = 8; + + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + optional string serviceAccount = 9; + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + optional string nodeName = 10; + + // Host networking requested for this pod. Use the host's network namespace. + // If this option is set, the ports that will be used must be specified. + // Default to false. + // +k8s:conversion-gen=false + optional bool hostNetwork = 11; + + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + optional bool hostPID = 12; + + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + optional bool hostIPC = 13; + + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + optional PodSecurityContext securityContext = 14; + + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#specifying-imagepullsecrets-on-a-pod + repeated LocalObjectReference imagePullSecrets = 15; + + // Specifies the hostname of the Pod + // If not specified, the pod's hostname will be set to a system-defined value. + optional string hostname = 16; + + // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". + // If not specified, the pod will not have a domainname at all. + optional string subdomain = 17; +} + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +message PodStatus { + // Current condition of the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-phase + optional string phase = 1; + + // Current service state of pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + repeated PodCondition conditions = 2; + + // A human readable message indicating details about why the pod is in this condition. + optional string message = 3; + + // A brief CamelCase message indicating details about why the pod is in this state. + // e.g. 'OutOfDisk' + optional string reason = 4; + + // IP address of the host to which the pod is assigned. Empty if not yet scheduled. + optional string hostIP = 5; + + // IP address allocated to the pod. Routable at least within the cluster. + // Empty if not yet allocated. + optional string podIP = 6; + + // RFC 3339 date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + optional k8s.io.kubernetes.pkg.api.unversioned.Time startTime = 7; + + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses + repeated ContainerStatus containerStatuses = 8; +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +message PodStatusResult { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional PodStatus status = 2; +} + +// PodTemplate describes a template for creating copies of a predefined pod. +message PodTemplate { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Template defines the pods that will be created from this pod template. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional PodTemplateSpec template = 2; +} + +// PodTemplateList is a list of PodTemplates. +message PodTemplateList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of pod templates + repeated PodTemplate items = 2; +} + +// PodTemplateSpec describes the data a pod should have when created from a template +message PodTemplateSpec { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Specification of the desired behavior of the pod. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional PodSpec spec = 2; +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +message Preconditions { + // Specifies the target UID. + optional string uid = 1; +} + +// Describes a class of pods that should avoid this node. +message PreferAvoidPodsEntry { + // The class of pods. + optional PodSignature podSignature = 1; + + // Time at which this entry was added to the list. + optional k8s.io.kubernetes.pkg.api.unversioned.Time evictionTime = 2; + + // (brief) reason why this entry was added to the list. + optional string reason = 3; + + // Human readable message indicating why this entry was added to the list. + optional string message = 4; +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +message PreferredSchedulingTerm { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + optional int32 weight = 1; + + // A node selector term, associated with the corresponding weight. + optional NodeSelectorTerm preference = 2; +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +message Probe { + // The action taken to determine the health of a container + optional Handler handler = 1; + + // Number of seconds after the container has started before liveness probes are initiated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + optional int32 initialDelaySeconds = 2; + + // Number of seconds after which the probe times out. + // Defaults to 1 second. Minimum value is 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + optional int32 timeoutSeconds = 3; + + // How often (in seconds) to perform the probe. + // Default to 10 seconds. Minimum value is 1. + optional int32 periodSeconds = 4; + + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Defaults to 1. Must be 1 for liveness. Minimum value is 1. + optional int32 successThreshold = 5; + + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // Defaults to 3. Minimum value is 1. + optional int32 failureThreshold = 6; +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +message QuobyteVolumeSource { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + optional string registry = 1; + + // Volume is a string that references an already created Quobyte volume by name. + optional string volume = 2; + + // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. + // Defaults to false. + optional bool readOnly = 3; + + // User to map volume access to + // Defaults to serivceaccount user + optional string user = 4; + + // Group to map volume access to + // Default is no group + optional string group = 5; +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +message RBDVolumeSource { + // A collection of Ceph monitors. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + repeated string monitors = 1; + + // The rados image name. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional string image = 2; + + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + optional string fsType = 3; + + // The rados pool name. + // Default is rbd. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it. + optional string pool = 4; + + // The rados user name. + // Default is admin. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional string user = 5; + + // Keyring is the path to key ring for RBDUser. + // Default is /etc/ceph/keyring. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional string keyring = 6; + + // SecretRef is name of the authentication secret for RBDUser. If provided + // overrides keyring. + // Default is nil. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional LocalObjectReference secretRef = 7; + + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + optional bool readOnly = 8; +} + +// RangeAllocation is not a public type. +message RangeAllocation { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Range is string that identifies the range represented by 'data'. + optional string range = 2; + + // Data is a bit array containing all allocated addresses in the previous segment. + optional bytes data = 3; +} + +// ReplicationController represents the configuration of a replication controller. +message ReplicationController { + // If the Labels of a ReplicationController are empty, they are defaulted to + // be the same as the Pod(s) that the replication controller manages. + // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ReplicationControllerSpec spec = 2; + + // Status is the most recently observed status of the replication controller. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ReplicationControllerStatus status = 3; +} + +// ReplicationControllerList is a collection of replication controllers. +message ReplicationControllerList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of replication controllers. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md + repeated ReplicationController items = 2; +} + +// ReplicationControllerSpec is the specification of a replication controller. +message ReplicationControllerSpec { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + optional int32 replicas = 1; + + // Selector is a label query over pods that should match the Replicas count. + // If Selector is empty, it is defaulted to the labels present on the Pod template. + // Label keys and values that must match in order to be controlled by this replication + // controller, if empty defaulted to labels on Pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + map<string, string> selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. This takes precedence over a TemplateRef. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + optional PodTemplateSpec template = 3; +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +message ReplicationControllerStatus { + // Replicas is the most recently oberved number of replicas. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replication controller. + optional int32 readyReplicas = 4; + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + optional int64 observedGeneration = 3; +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +message ResourceFieldSelector { + // Container name: required for volumes, optional for env vars + optional string containerName = 1; + + // Required: resource to select + optional string resource = 2; + + // Specifies the output format of the exposed resources, defaults to "1" + optional k8s.io.kubernetes.pkg.api.resource.Quantity divisor = 3; +} + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +message ResourceQuota { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the desired quota. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ResourceQuotaSpec spec = 2; + + // Status defines the actual enforced quota and its current usage. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ResourceQuotaStatus status = 3; +} + +// ResourceQuotaList is a list of ResourceQuota items. +message ResourceQuotaList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of ResourceQuota objects. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + repeated ResourceQuota items = 2; +} + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. +message ResourceQuotaSpec { + // Hard is the set of desired hard limits for each named resource. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> hard = 1; + + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + repeated string scopes = 2; +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use. +message ResourceQuotaStatus { + // Hard is the set of enforced hard limits for each named resource. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> hard = 1; + + // Used is the current observed total usage of the resource in the namespace. + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> used = 2; +} + +// ResourceRequirements describes the compute resource requirements. +message ResourceRequirements { + // Limits describes the maximum amount of compute resources allowed. + // More info: http://kubernetes.io/docs/user-guide/compute-resources/ + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> limits = 1; + + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. + // More info: http://kubernetes.io/docs/user-guide/compute-resources/ + map<string, k8s.io.kubernetes.pkg.api.resource.Quantity> requests = 2; +} + +// SELinuxOptions are the labels to be applied to the container +message SELinuxOptions { + // User is a SELinux user label that applies to the container. + optional string user = 1; + + // Role is a SELinux role label that applies to the container. + optional string role = 2; + + // Type is a SELinux type label that applies to the container. + optional string type = 3; + + // Level is SELinux level label that applies to the container. + optional string level = 4; +} + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +message Secret { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN + // or leading dot followed by valid DNS_SUBDOMAIN. + // The serialized form of the secret data is a base64 encoded string, + // representing the arbitrary (possibly non-string) data value here. + // Described in https://tools.ietf.org/html/rfc4648#section-4 + map<string, bytes> data = 2; + + // stringData allows specifying non-binary secret data in string form. + // It is provided as a write-only convenience method. + // All keys and values are merged into the data field on write, overwriting any existing values. + // It is never output when reading from the API. + // +k8s:conversion-gen=false + map<string, string> stringData = 4; + + // Used to facilitate programmatic handling of secret data. + optional string type = 3; +} + +// SecretKeySelector selects a key of a Secret. +message SecretKeySelector { + // The name of the secret in the pod's namespace to select from. + optional LocalObjectReference localObjectReference = 1; + + // The key of the secret to select from. Must be a valid secret key. + optional string key = 2; +} + +// SecretList is a list of Secret. +message SecretList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of secret objects. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md + repeated Secret items = 2; +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +message SecretVolumeSource { + // Name of the secret in the pod's namespace to use. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets + optional string secretName = 1; + + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + repeated KeyToPath items = 2; + + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + optional int32 defaultMode = 3; +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +message SecurityContext { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + optional Capabilities capabilities = 1; + + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + optional bool privileged = 2; + + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + optional SELinuxOptions seLinuxOptions = 3; + + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + optional int64 runAsUser = 4; + + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + optional bool runAsNonRoot = 5; + + // Whether this container has a read-only root filesystem. + // Default is false. + optional bool readOnlyRootFilesystem = 6; +} + +// SerializedReference is a reference to serialized object. +message SerializedReference { + // The reference to an object in the system. + optional ObjectReference reference = 1; +} + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +message Service { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Spec defines the behavior of a service. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ServiceSpec spec = 2; + + // Most recently observed status of the service. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ServiceStatus status = 3; +} + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +message ServiceAccount { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional ObjectMeta metadata = 1; + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md + repeated ObjectReference secrets = 2; + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md#manually-specifying-an-imagepullsecret + repeated LocalObjectReference imagePullSecrets = 3; +} + +// ServiceAccountList is a list of ServiceAccount objects +message ServiceAccountList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of ServiceAccounts. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts + repeated ServiceAccount items = 2; +} + +// ServiceList holds a list of services. +message ServiceList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of services + repeated Service items = 2; +} + +// ServicePort contains information on service's port. +message ServicePort { + // The name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + // Optional if only one ServicePort is defined on this service. + optional string name = 1; + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + optional string protocol = 2; + + // The port that will be exposed by this service. + optional int32 port = 3; + + // Number or name of the port to access on the pods targeted by the service. + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + // If this is a string, it will be looked up as a named port in the + // target Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString targetPort = 4; + + // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. + // Usually assigned by the system. If specified, it will be allocated to the service + // if unused or else creation of the service will fail. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport + optional int32 nodePort = 5; +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +message ServiceProxyOptions { + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + optional string path = 1; +} + +// ServiceSpec describes the attributes that a user creates on a service. +message ServiceSpec { + // The list of ports that are exposed by this service. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + repeated ServicePort ports = 1; + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + map<string, string> selector = 2; + + // clusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + optional string clusterIP = 3; + + // type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + optional string type = 4; + + // externalIPs is a list of IP addresses for which nodes in the cluster + // will also accept traffic for this service. These IPs are not managed by + // Kubernetes. The user is responsible for ensuring that traffic arrives + // at a node with this IP. A common example is external load-balancers + // that are not part of the Kubernetes system. A previous form of this + // functionality exists as the deprecatedPublicIPs field. When using this + // field, callers should also clear the deprecatedPublicIPs field. + repeated string externalIPs = 5; + + // deprecatedPublicIPs is deprecated and replaced by the externalIPs field + // with almost the exact same semantics. This field is retained in the v1 + // API for compatibility until at least 8/20/2016. It will be removed from + // any new API revisions. If both deprecatedPublicIPs *and* externalIPs are + // set, deprecatedPublicIPs is used. + // +k8s:conversion-gen=false + repeated string deprecatedPublicIPs = 6; + + // Supports "ClientIP" and "None". Used to maintain session affinity. + // Enable client IP based session affinity. + // Must be ClientIP or None. + // Defaults to None. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + optional string sessionAffinity = 7; + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + optional string loadBalancerIP = 8; + + // If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md + repeated string loadBalancerSourceRanges = 9; + + // externalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + optional string externalName = 10; +} + +// ServiceStatus represents the current status of a service. +message ServiceStatus { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + optional LoadBalancerStatus loadBalancer = 1; +} + +// TCPSocketAction describes an action based on opening a socket +message TCPSocketAction { + // Number or name of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString port = 1; +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +message Taint { + // Required. The taint key to be applied to a node. + optional string key = 1; + + // Required. The taint value corresponding to the taint key. + optional string value = 2; + + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule and PreferNoSchedule. + optional string effect = 3; +} + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple <key,value,effect> using the matching operator <operator>. +message Toleration { + // Required. Key is the taint key that the toleration applies to. + optional string key = 1; + + // operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + optional string operator = 2; + + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + optional string value = 3; + + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule and PreferNoSchedule. + optional string effect = 4; +} + +// Volume represents a named volume in a pod that may be accessed by any container in the pod. +message Volume { + // Volume's name. + // Must be a DNS_LABEL and unique within the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 1; + + // VolumeSource represents the location and type of the mounted volume. + // If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + optional VolumeSource volumeSource = 2; +} + +// VolumeMount describes a mounting of a Volume within a container. +message VolumeMount { + // This must match the Name of a Volume. + optional string name = 1; + + // Mounted read-only if true, read-write otherwise (false or unspecified). + // Defaults to false. + optional bool readOnly = 2; + + // Path within the container at which the volume should be mounted. Must + // not contain ':'. + optional string mountPath = 3; + + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + optional string subPath = 4; +} + +// Represents the source of a volume to mount. +// Only one of its members may be specified. +message VolumeSource { + // HostPath represents a pre-existing file or directory on the host + // machine that is directly exposed to the container. This is generally + // used for system agents or other privileged things that are allowed + // to see the host machine. Most containers will NOT need this. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + optional HostPathVolumeSource hostPath = 1; + + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir + optional EmptyDirVolumeSource emptyDir = 2; + + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3; + + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4; + + // GitRepo represents a git repository at a particular revision. + optional GitRepoVolumeSource gitRepo = 5; + + // Secret represents a secret that should populate this volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets + optional SecretVolumeSource secret = 6; + + // NFS represents an NFS mount on the host that shares a pod's lifetime + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + optional NFSVolumeSource nfs = 7; + + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + optional ISCSIVolumeSource iscsi = 8; + + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + optional GlusterfsVolumeSource glusterfs = 9; + + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10; + + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + optional RBDVolumeSource rbd = 11; + + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + optional FlexVolumeSource flexVolume = 12; + + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + optional CinderVolumeSource cinder = 13; + + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + optional CephFSVolumeSource cephfs = 14; + + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + optional FlockerVolumeSource flocker = 15; + + // DownwardAPI represents downward API about the pod that should populate this volume + optional DownwardAPIVolumeSource downwardAPI = 16; + + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + optional FCVolumeSource fc = 17; + + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + optional AzureFileVolumeSource azureFile = 18; + + // ConfigMap represents a configMap that should populate this volume + optional ConfigMapVolumeSource configMap = 19; + + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + optional VsphereVirtualDiskVolumeSource vsphereVolume = 20; + + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + optional QuobyteVolumeSource quobyte = 21; + + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + optional AzureDiskVolumeSource azureDisk = 22; +} + +// Represents a vSphere volume resource. +message VsphereVirtualDiskVolumeSource { + // Path that identifies vSphere volume vmdk + optional string volumePath = 1; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + optional string fsType = 2; +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +message WeightedPodAffinityTerm { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + optional int32 weight = 1; + + // Required. A pod affinity term, associated with the corresponding weight. + optional PodAffinityTerm podAffinityTerm = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/meta.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/meta.go new file mode 100644 index 0000000000..3bde633b59 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/meta.go @@ -0,0 +1,92 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/meta/metatypes" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/types" +) + +func (obj *ObjectMeta) GetObjectMeta() meta.Object { return obj } + +// Namespace implements meta.Object for any object with an ObjectMeta typed field. Allows +// fast, direct access to metadata fields for API objects. +func (meta *ObjectMeta) GetNamespace() string { return meta.Namespace } +func (meta *ObjectMeta) SetNamespace(namespace string) { meta.Namespace = namespace } +func (meta *ObjectMeta) GetName() string { return meta.Name } +func (meta *ObjectMeta) SetName(name string) { meta.Name = name } +func (meta *ObjectMeta) GetGenerateName() string { return meta.GenerateName } +func (meta *ObjectMeta) SetGenerateName(generateName string) { meta.GenerateName = generateName } +func (meta *ObjectMeta) GetUID() types.UID { return meta.UID } +func (meta *ObjectMeta) SetUID(uid types.UID) { meta.UID = uid } +func (meta *ObjectMeta) GetResourceVersion() string { return meta.ResourceVersion } +func (meta *ObjectMeta) SetResourceVersion(version string) { meta.ResourceVersion = version } +func (meta *ObjectMeta) GetSelfLink() string { return meta.SelfLink } +func (meta *ObjectMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } +func (meta *ObjectMeta) GetCreationTimestamp() unversioned.Time { return meta.CreationTimestamp } +func (meta *ObjectMeta) SetCreationTimestamp(creationTimestamp unversioned.Time) { + meta.CreationTimestamp = creationTimestamp +} +func (meta *ObjectMeta) GetDeletionTimestamp() *unversioned.Time { return meta.DeletionTimestamp } +func (meta *ObjectMeta) SetDeletionTimestamp(deletionTimestamp *unversioned.Time) { + meta.DeletionTimestamp = deletionTimestamp +} +func (meta *ObjectMeta) GetLabels() map[string]string { return meta.Labels } +func (meta *ObjectMeta) SetLabels(labels map[string]string) { meta.Labels = labels } +func (meta *ObjectMeta) GetAnnotations() map[string]string { return meta.Annotations } +func (meta *ObjectMeta) SetAnnotations(annotations map[string]string) { meta.Annotations = annotations } +func (meta *ObjectMeta) GetFinalizers() []string { return meta.Finalizers } +func (meta *ObjectMeta) SetFinalizers(finalizers []string) { meta.Finalizers = finalizers } + +func (meta *ObjectMeta) GetOwnerReferences() []metatypes.OwnerReference { + ret := make([]metatypes.OwnerReference, len(meta.OwnerReferences)) + for i := 0; i < len(meta.OwnerReferences); i++ { + ret[i].Kind = meta.OwnerReferences[i].Kind + ret[i].Name = meta.OwnerReferences[i].Name + ret[i].UID = meta.OwnerReferences[i].UID + ret[i].APIVersion = meta.OwnerReferences[i].APIVersion + if meta.OwnerReferences[i].Controller != nil { + value := *meta.OwnerReferences[i].Controller + ret[i].Controller = &value + } + } + return ret +} + +func (meta *ObjectMeta) SetOwnerReferences(references []metatypes.OwnerReference) { + newReferences := make([]OwnerReference, len(references)) + for i := 0; i < len(references); i++ { + newReferences[i].Kind = references[i].Kind + newReferences[i].Name = references[i].Name + newReferences[i].UID = references[i].UID + newReferences[i].APIVersion = references[i].APIVersion + if references[i].Controller != nil { + value := *references[i].Controller + newReferences[i].Controller = &value + } + } + meta.OwnerReferences = newReferences +} + +func (meta *ObjectMeta) GetClusterName() string { + return meta.ClusterName +} +func (meta *ObjectMeta) SetClusterName(clusterName string) { + meta.ClusterName = clusterName +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/ref.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/ref.go new file mode 100644 index 0000000000..93007e8cab --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/ref.go @@ -0,0 +1,133 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "errors" + "fmt" + "k8s.io/client-go/1.5/pkg/api" + "net/url" + "strings" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +var ( + // Errors that could be returned by GetReference. + ErrNilObject = errors.New("can't reference a nil object") + ErrNoSelfLink = errors.New("selfLink was empty, can't make reference") +) + +// GetReference returns an ObjectReference which refers to the given +// object, or an error if the object doesn't follow the conventions +// that would allow this. +// TODO: should take a meta.Interface see http://issue.k8s.io/7127 +func GetReference(obj runtime.Object) (*ObjectReference, error) { + if obj == nil { + return nil, ErrNilObject + } + if ref, ok := obj.(*ObjectReference); ok { + // Don't make a reference to a reference. + return ref, nil + } + + gvk := obj.GetObjectKind().GroupVersionKind() + + // if the object referenced is actually persisted, we can just get kind from meta + // if we are building an object reference to something not yet persisted, we should fallback to scheme + kind := gvk.Kind + if len(kind) == 0 { + // TODO: this is wrong + gvks, _, err := api.Scheme.ObjectKinds(obj) + if err != nil { + return nil, err + } + kind = gvks[0].Kind + } + + // An object that implements only List has enough metadata to build a reference + var listMeta meta.List + objectMeta, err := meta.Accessor(obj) + if err != nil { + listMeta, err = meta.ListAccessor(obj) + if err != nil { + return nil, err + } + } else { + listMeta = objectMeta + } + + // if the object referenced is actually persisted, we can also get version from meta + version := gvk.GroupVersion().String() + if len(version) == 0 { + selfLink := listMeta.GetSelfLink() + if len(selfLink) == 0 { + return nil, ErrNoSelfLink + } + selfLinkUrl, err := url.Parse(selfLink) + if err != nil { + return nil, err + } + // example paths: /<prefix>/<version>/* + parts := strings.Split(selfLinkUrl.Path, "/") + if len(parts) < 3 { + return nil, fmt.Errorf("unexpected self link format: '%v'; got version '%v'", selfLink, version) + } + version = parts[2] + } + + // only has list metadata + if objectMeta == nil { + return &ObjectReference{ + Kind: kind, + APIVersion: version, + ResourceVersion: listMeta.GetResourceVersion(), + }, nil + } + + return &ObjectReference{ + Kind: kind, + APIVersion: version, + Name: objectMeta.GetName(), + Namespace: objectMeta.GetNamespace(), + UID: objectMeta.GetUID(), + ResourceVersion: objectMeta.GetResourceVersion(), + }, nil +} + +// GetPartialReference is exactly like GetReference, but allows you to set the FieldPath. +func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference, error) { + ref, err := GetReference(obj) + if err != nil { + return nil, err + } + ref.FieldPath = fieldPath + return ref, nil +} + +// IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that +// intend only to get a reference to that object. This simplifies the event recording interface. +func (obj *ObjectReference) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *ObjectReference) GroupVersionKind() unversioned.GroupVersionKind { + return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *ObjectReference) GetObjectKind() unversioned.ObjectKind { return obj } diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/register.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/register.go new file mode 100644 index 0000000000..67a23345d4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/register.go @@ -0,0 +1,93 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs, addFastPathConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Pod{}, + &PodList{}, + &PodStatusResult{}, + &PodTemplate{}, + &PodTemplateList{}, + &ReplicationController{}, + &ReplicationControllerList{}, + &Service{}, + &ServiceProxyOptions{}, + &ServiceList{}, + &Endpoints{}, + &EndpointsList{}, + &Node{}, + &NodeList{}, + &NodeProxyOptions{}, + &Binding{}, + &Event{}, + &EventList{}, + &List{}, + &LimitRange{}, + &LimitRangeList{}, + &ResourceQuota{}, + &ResourceQuotaList{}, + &Namespace{}, + &NamespaceList{}, + &Secret{}, + &SecretList{}, + &ServiceAccount{}, + &ServiceAccountList{}, + &PersistentVolume{}, + &PersistentVolumeList{}, + &PersistentVolumeClaim{}, + &PersistentVolumeClaimList{}, + &DeleteOptions{}, + &ExportOptions{}, + &ListOptions{}, + &PodAttachOptions{}, + &PodLogOptions{}, + &PodExecOptions{}, + &PodProxyOptions{}, + &ComponentStatus{}, + &ComponentStatusList{}, + &SerializedReference{}, + &RangeAllocation{}, + &ConfigMap{}, + &ConfigMapList{}, + ) + + // Add common types + scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.Status{}) + + // Add the watch version that applies + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.generated.go new file mode 100644 index 0000000000..cf9b712618 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.generated.go @@ -0,0 +1,62479 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg2_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg5_runtime "k8s.io/client-go/1.5/pkg/runtime" + pkg1_types "k8s.io/client-go/1.5/pkg/types" + pkg4_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_resource.Quantity + var v1 pkg2_unversioned.Time + var v2 pkg5_runtime.RawExtension + var v3 pkg1_types.UID + var v4 pkg4_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *ObjectMeta) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [15]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Name != "" + yyq2[1] = x.GenerateName != "" + yyq2[2] = x.Namespace != "" + yyq2[3] = x.SelfLink != "" + yyq2[4] = x.UID != "" + yyq2[5] = x.ResourceVersion != "" + yyq2[6] = x.Generation != 0 + yyq2[7] = true + yyq2[8] = x.DeletionTimestamp != nil + yyq2[9] = x.DeletionGracePeriodSeconds != nil + yyq2[10] = len(x.Labels) != 0 + yyq2[11] = len(x.Annotations) != 0 + yyq2[12] = len(x.OwnerReferences) != 0 + yyq2[13] = len(x.Finalizers) != 0 + yyq2[14] = x.ClusterName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(15) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yy25 := &x.CreationTimestamp + yym26 := z.EncBinary() + _ = yym26 + if false { + } else if z.HasExtensions() && z.EncExt(yy25) { + } else if yym26 { + z.EncBinaryMarshal(yy25) + } else if !yym26 && z.IsJSONHandle() { + z.EncJSONMarshal(yy25) + } else { + z.EncFallback(yy25) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy27 := &x.CreationTimestamp + yym28 := z.EncBinary() + _ = yym28 + if false { + } else if z.HasExtensions() && z.EncExt(yy27) { + } else if yym28 { + z.EncBinaryMarshal(yy27) + } else if !yym28 && z.IsJSONHandle() { + z.EncJSONMarshal(yy27) + } else { + z.EncFallback(yy27) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym30 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym30 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym31 := z.EncBinary() + _ = yym31 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym31 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym31 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy33 := *x.DeletionGracePeriodSeconds + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(yy33)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy35 := *x.DeletionGracePeriodSeconds + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(yy35)) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + h.encSliceOwnerReference(([]OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + h.encSliceOwnerReference(([]OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectMeta) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym52 := z.DecBinary() + _ = yym52 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct53 := r.ContainerType() + if yyct53 == codecSelferValueTypeMap1234 { + yyl53 := r.ReadMapStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl53, d) + } + } else if yyct53 == codecSelferValueTypeArray1234 { + yyl53 := r.ReadArrayStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl53, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectMeta) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys54Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys54Slc + var yyhl54 bool = l >= 0 + for yyj54 := 0; ; yyj54++ { + if yyhl54 { + if yyj54 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys54Slc = r.DecodeBytes(yys54Slc, true, true) + yys54 := string(yys54Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys54 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_unversioned.Time{} + } else { + yyv62 := &x.CreationTimestamp + yym63 := z.DecBinary() + _ = yym63 + if false { + } else if z.HasExtensions() && z.DecExt(yyv62) { + } else if yym63 { + z.DecBinaryUnmarshal(yyv62) + } else if !yym63 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv62) + } else { + z.DecFallback(yyv62, false) + } + } + case "deletionTimestamp": + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_unversioned.Time) + } + yym65 := z.DecBinary() + _ = yym65 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym65 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym65 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym67 := z.DecBinary() + _ = yym67 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv68 := &x.Labels + yym69 := z.DecBinary() + _ = yym69 + if false { + } else { + z.F.DecMapStringStringX(yyv68, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv70 := &x.Annotations + yym71 := z.DecBinary() + _ = yym71 + if false { + } else { + z.F.DecMapStringStringX(yyv70, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv72 := &x.OwnerReferences + yym73 := z.DecBinary() + _ = yym73 + if false { + } else { + h.decSliceOwnerReference((*[]OwnerReference)(yyv72), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv74 := &x.Finalizers + yym75 := z.DecBinary() + _ = yym75 + if false { + } else { + z.F.DecSliceStringX(yyv74, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys54) + } // end switch yys54 + } // end for yyj54 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectMeta) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj77 int + var yyb77 bool + var yyhl77 bool = l >= 0 + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg2_unversioned.Time{} + } else { + yyv85 := &x.CreationTimestamp + yym86 := z.DecBinary() + _ = yym86 + if false { + } else if z.HasExtensions() && z.DecExt(yyv85) { + } else if yym86 { + z.DecBinaryUnmarshal(yyv85) + } else if !yym86 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv85) + } else { + z.DecFallback(yyv85, false) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg2_unversioned.Time) + } + yym88 := z.DecBinary() + _ = yym88 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym88 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym88 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym90 := z.DecBinary() + _ = yym90 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv91 := &x.Labels + yym92 := z.DecBinary() + _ = yym92 + if false { + } else { + z.F.DecMapStringStringX(yyv91, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv93 := &x.Annotations + yym94 := z.DecBinary() + _ = yym94 + if false { + } else { + z.F.DecMapStringStringX(yyv93, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv95 := &x.OwnerReferences + yym96 := z.DecBinary() + _ = yym96 + if false { + } else { + h.decSliceOwnerReference((*[]OwnerReference)(yyv95), d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv97 := &x.Finalizers + yym98 := z.DecBinary() + _ = yym98 + if false { + } else { + z.F.DecSliceStringX(yyv97, false, d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + for { + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj77-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Volume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym100 := z.EncBinary() + _ = yym100 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep101 := !z.EncBinary() + yy2arr101 := z.EncBasicHandle().StructToArray + var yyq101 [23]bool + _, _, _ = yysep101, yyq101, yy2arr101 + const yyr101 bool = false + yyq101[1] = x.VolumeSource.HostPath != nil && x.HostPath != nil + yyq101[2] = x.VolumeSource.EmptyDir != nil && x.EmptyDir != nil + yyq101[3] = x.VolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq101[4] = x.VolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq101[5] = x.VolumeSource.GitRepo != nil && x.GitRepo != nil + yyq101[6] = x.VolumeSource.Secret != nil && x.Secret != nil + yyq101[7] = x.VolumeSource.NFS != nil && x.NFS != nil + yyq101[8] = x.VolumeSource.ISCSI != nil && x.ISCSI != nil + yyq101[9] = x.VolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq101[10] = x.VolumeSource.PersistentVolumeClaim != nil && x.PersistentVolumeClaim != nil + yyq101[11] = x.VolumeSource.RBD != nil && x.RBD != nil + yyq101[12] = x.VolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq101[13] = x.VolumeSource.Cinder != nil && x.Cinder != nil + yyq101[14] = x.VolumeSource.CephFS != nil && x.CephFS != nil + yyq101[15] = x.VolumeSource.Flocker != nil && x.Flocker != nil + yyq101[16] = x.VolumeSource.DownwardAPI != nil && x.DownwardAPI != nil + yyq101[17] = x.VolumeSource.FC != nil && x.FC != nil + yyq101[18] = x.VolumeSource.AzureFile != nil && x.AzureFile != nil + yyq101[19] = x.VolumeSource.ConfigMap != nil && x.ConfigMap != nil + yyq101[20] = x.VolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq101[21] = x.VolumeSource.Quobyte != nil && x.Quobyte != nil + yyq101[22] = x.VolumeSource.AzureDisk != nil && x.AzureDisk != nil + var yynn101 int + if yyr101 || yy2arr101 { + r.EncodeArrayStart(23) + } else { + yynn101 = 1 + for _, b := range yyq101 { + if b { + yynn101++ + } + } + r.EncodeMapStart(yynn101) + yynn101 = 0 + } + if yyr101 || yy2arr101 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym103 := z.EncBinary() + _ = yym103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + var yyn105 bool + if x.VolumeSource.HostPath == nil { + yyn105 = true + goto LABEL105 + } + LABEL105: + if yyr101 || yy2arr101 { + if yyn105 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[1] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn105 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn106 bool + if x.VolumeSource.EmptyDir == nil { + yyn106 = true + goto LABEL106 + } + LABEL106: + if yyr101 || yy2arr101 { + if yyn106 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[2] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn106 { + r.EncodeNil() + } else { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + } + var yyn107 bool + if x.VolumeSource.GCEPersistentDisk == nil { + yyn107 = true + goto LABEL107 + } + LABEL107: + if yyr101 || yy2arr101 { + if yyn107 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[3] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn107 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn108 bool + if x.VolumeSource.AWSElasticBlockStore == nil { + yyn108 = true + goto LABEL108 + } + LABEL108: + if yyr101 || yy2arr101 { + if yyn108 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[4] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn108 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn109 bool + if x.VolumeSource.GitRepo == nil { + yyn109 = true + goto LABEL109 + } + LABEL109: + if yyr101 || yy2arr101 { + if yyn109 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[5] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn109 { + r.EncodeNil() + } else { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + } + var yyn110 bool + if x.VolumeSource.Secret == nil { + yyn110 = true + goto LABEL110 + } + LABEL110: + if yyr101 || yy2arr101 { + if yyn110 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[6] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn110 { + r.EncodeNil() + } else { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + } + var yyn111 bool + if x.VolumeSource.NFS == nil { + yyn111 = true + goto LABEL111 + } + LABEL111: + if yyr101 || yy2arr101 { + if yyn111 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[7] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn111 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn112 bool + if x.VolumeSource.ISCSI == nil { + yyn112 = true + goto LABEL112 + } + LABEL112: + if yyr101 || yy2arr101 { + if yyn112 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[8] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn112 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn113 bool + if x.VolumeSource.Glusterfs == nil { + yyn113 = true + goto LABEL113 + } + LABEL113: + if yyr101 || yy2arr101 { + if yyn113 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[9] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn113 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn114 bool + if x.VolumeSource.PersistentVolumeClaim == nil { + yyn114 = true + goto LABEL114 + } + LABEL114: + if yyr101 || yy2arr101 { + if yyn114 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[10] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn114 { + r.EncodeNil() + } else { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + } + var yyn115 bool + if x.VolumeSource.RBD == nil { + yyn115 = true + goto LABEL115 + } + LABEL115: + if yyr101 || yy2arr101 { + if yyn115 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[11] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn115 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn116 bool + if x.VolumeSource.FlexVolume == nil { + yyn116 = true + goto LABEL116 + } + LABEL116: + if yyr101 || yy2arr101 { + if yyn116 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[12] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn116 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn117 bool + if x.VolumeSource.Cinder == nil { + yyn117 = true + goto LABEL117 + } + LABEL117: + if yyr101 || yy2arr101 { + if yyn117 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[13] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn117 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn118 bool + if x.VolumeSource.CephFS == nil { + yyn118 = true + goto LABEL118 + } + LABEL118: + if yyr101 || yy2arr101 { + if yyn118 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[14] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn118 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn119 bool + if x.VolumeSource.Flocker == nil { + yyn119 = true + goto LABEL119 + } + LABEL119: + if yyr101 || yy2arr101 { + if yyn119 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[15] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn119 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn120 bool + if x.VolumeSource.DownwardAPI == nil { + yyn120 = true + goto LABEL120 + } + LABEL120: + if yyr101 || yy2arr101 { + if yyn120 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[16] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn120 { + r.EncodeNil() + } else { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + } + var yyn121 bool + if x.VolumeSource.FC == nil { + yyn121 = true + goto LABEL121 + } + LABEL121: + if yyr101 || yy2arr101 { + if yyn121 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[17] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn121 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn122 bool + if x.VolumeSource.AzureFile == nil { + yyn122 = true + goto LABEL122 + } + LABEL122: + if yyr101 || yy2arr101 { + if yyn122 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[18] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn122 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn123 bool + if x.VolumeSource.ConfigMap == nil { + yyn123 = true + goto LABEL123 + } + LABEL123: + if yyr101 || yy2arr101 { + if yyn123 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[19] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn123 { + r.EncodeNil() + } else { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + } + var yyn124 bool + if x.VolumeSource.VsphereVolume == nil { + yyn124 = true + goto LABEL124 + } + LABEL124: + if yyr101 || yy2arr101 { + if yyn124 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[20] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn124 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn125 bool + if x.VolumeSource.Quobyte == nil { + yyn125 = true + goto LABEL125 + } + LABEL125: + if yyr101 || yy2arr101 { + if yyn125 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[21] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn125 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn126 bool + if x.VolumeSource.AzureDisk == nil { + yyn126 = true + goto LABEL126 + } + LABEL126: + if yyr101 || yy2arr101 { + if yyn126 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq101[22] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq101[22] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn126 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + if yyr101 || yy2arr101 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Volume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym127 := z.DecBinary() + _ = yym127 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct128 := r.ContainerType() + if yyct128 == codecSelferValueTypeMap1234 { + yyl128 := r.ReadMapStart() + if yyl128 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl128, d) + } + } else if yyct128 == codecSelferValueTypeArray1234 { + yyl128 := r.ReadArrayStart() + if yyl128 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl128, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Volume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys129Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys129Slc + var yyhl129 bool = l >= 0 + for yyj129 := 0; ; yyj129++ { + if yyhl129 { + if yyj129 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys129Slc = r.DecodeBytes(yys129Slc, true, true) + yys129 := string(yys129Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys129 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "hostPath": + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "flexVolume": + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys129) + } // end switch yys129 + } // end for yyj129 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Volume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj153 int + var yyb153 bool + var yyhl153 bool = l >= 0 + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + if x.VolumeSource.HostPath == nil { + x.VolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.VolumeSource.EmptyDir == nil { + x.VolumeSource.EmptyDir = new(EmptyDirVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + if x.VolumeSource.GCEPersistentDisk == nil { + x.VolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.VolumeSource.AWSElasticBlockStore == nil { + x.VolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.VolumeSource.GitRepo == nil { + x.VolumeSource.GitRepo = new(GitRepoVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + if x.VolumeSource.Secret == nil { + x.VolumeSource.Secret = new(SecretVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + if x.VolumeSource.NFS == nil { + x.VolumeSource.NFS = new(NFSVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.VolumeSource.ISCSI == nil { + x.VolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.VolumeSource.Glusterfs == nil { + x.VolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.VolumeSource.PersistentVolumeClaim == nil { + x.VolumeSource.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + if x.VolumeSource.RBD == nil { + x.VolumeSource.RBD = new(RBDVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.VolumeSource.FlexVolume == nil { + x.VolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.Cinder == nil { + x.VolumeSource.Cinder = new(CinderVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.VolumeSource.CephFS == nil { + x.VolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.VolumeSource.Flocker == nil { + x.VolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.VolumeSource.DownwardAPI == nil { + x.VolumeSource.DownwardAPI = new(DownwardAPIVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + if x.VolumeSource.FC == nil { + x.VolumeSource.FC = new(FCVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureFile == nil { + x.VolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.VolumeSource.ConfigMap == nil { + x.VolumeSource.ConfigMap = new(ConfigMapVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + if x.VolumeSource.VsphereVolume == nil { + x.VolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.VolumeSource.Quobyte == nil { + x.VolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.VolumeSource.AzureDisk == nil { + x.VolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj153-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym177 := z.EncBinary() + _ = yym177 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep178 := !z.EncBinary() + yy2arr178 := z.EncBasicHandle().StructToArray + var yyq178 [22]bool + _, _, _ = yysep178, yyq178, yy2arr178 + const yyr178 bool = false + yyq178[0] = x.HostPath != nil + yyq178[1] = x.EmptyDir != nil + yyq178[2] = x.GCEPersistentDisk != nil + yyq178[3] = x.AWSElasticBlockStore != nil + yyq178[4] = x.GitRepo != nil + yyq178[5] = x.Secret != nil + yyq178[6] = x.NFS != nil + yyq178[7] = x.ISCSI != nil + yyq178[8] = x.Glusterfs != nil + yyq178[9] = x.PersistentVolumeClaim != nil + yyq178[10] = x.RBD != nil + yyq178[11] = x.FlexVolume != nil + yyq178[12] = x.Cinder != nil + yyq178[13] = x.CephFS != nil + yyq178[14] = x.Flocker != nil + yyq178[15] = x.DownwardAPI != nil + yyq178[16] = x.FC != nil + yyq178[17] = x.AzureFile != nil + yyq178[18] = x.ConfigMap != nil + yyq178[19] = x.VsphereVolume != nil + yyq178[20] = x.Quobyte != nil + yyq178[21] = x.AzureDisk != nil + var yynn178 int + if yyr178 || yy2arr178 { + r.EncodeArrayStart(22) + } else { + yynn178 = 0 + for _, b := range yyq178 { + if b { + yynn178++ + } + } + r.EncodeMapStart(yynn178) + yynn178 = 0 + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[0] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[1] { + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("emptyDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.EmptyDir == nil { + r.EncodeNil() + } else { + x.EmptyDir.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[2] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[3] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[4] { + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gitRepo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GitRepo == nil { + r.EncodeNil() + } else { + x.GitRepo.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[5] { + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secret")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secret == nil { + r.EncodeNil() + } else { + x.Secret.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[6] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[8] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[9] { + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeClaim")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PersistentVolumeClaim == nil { + r.EncodeNil() + } else { + x.PersistentVolumeClaim.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[10] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[11] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[12] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[13] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[14] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[15] { + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("downwardAPI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DownwardAPI == nil { + r.EncodeNil() + } else { + x.DownwardAPI.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[16] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[17] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[18] { + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMap")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMap == nil { + r.EncodeNil() + } else { + x.ConfigMap.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[19] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[20] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[20] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq178[21] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq178[21] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr178 || yy2arr178 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym201 := z.DecBinary() + _ = yym201 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct202 := r.ContainerType() + if yyct202 == codecSelferValueTypeMap1234 { + yyl202 := r.ReadMapStart() + if yyl202 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl202, d) + } + } else if yyct202 == codecSelferValueTypeArray1234 { + yyl202 := r.ReadArrayStart() + if yyl202 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl202, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys203Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys203Slc + var yyhl203 bool = l >= 0 + for yyj203 := 0; ; yyj203++ { + if yyhl203 { + if yyj203 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys203Slc = r.DecodeBytes(yys203Slc, true, true) + yys203 := string(yys203Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys203 { + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "emptyDir": + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "gitRepo": + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + case "secret": + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "persistentVolumeClaim": + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "downwardAPI": + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "configMap": + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys203) + } // end switch yys203 + } // end for yyj203 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj226 int + var yyb226 bool + var yyhl226 bool = l >= 0 + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.EmptyDir != nil { + x.EmptyDir = nil + } + } else { + if x.EmptyDir == nil { + x.EmptyDir = new(EmptyDirVolumeSource) + } + x.EmptyDir.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GitRepo != nil { + x.GitRepo = nil + } + } else { + if x.GitRepo == nil { + x.GitRepo = new(GitRepoVolumeSource) + } + x.GitRepo.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Secret != nil { + x.Secret = nil + } + } else { + if x.Secret == nil { + x.Secret = new(SecretVolumeSource) + } + x.Secret.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PersistentVolumeClaim != nil { + x.PersistentVolumeClaim = nil + } + } else { + if x.PersistentVolumeClaim == nil { + x.PersistentVolumeClaim = new(PersistentVolumeClaimVolumeSource) + } + x.PersistentVolumeClaim.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DownwardAPI != nil { + x.DownwardAPI = nil + } + } else { + if x.DownwardAPI == nil { + x.DownwardAPI = new(DownwardAPIVolumeSource) + } + x.DownwardAPI.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMap != nil { + x.ConfigMap = nil + } + } else { + if x.ConfigMap == nil { + x.ConfigMap = new(ConfigMapVolumeSource) + } + x.ConfigMap.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj226++ + if yyhl226 { + yyb226 = yyj226 > l + } else { + yyb226 = r.CheckBreak() + } + if yyb226 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj226-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym249 := z.EncBinary() + _ = yym249 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep250 := !z.EncBinary() + yy2arr250 := z.EncBasicHandle().StructToArray + var yyq250 [2]bool + _, _, _ = yysep250, yyq250, yy2arr250 + const yyr250 bool = false + yyq250[1] = x.ReadOnly != false + var yynn250 int + if yyr250 || yy2arr250 { + r.EncodeArrayStart(2) + } else { + yynn250 = 1 + for _, b := range yyq250 { + if b { + yynn250++ + } + } + r.EncodeMapStart(yynn250) + yynn250 = 0 + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym252 := z.EncBinary() + _ = yym252 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym253 := z.EncBinary() + _ = yym253 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClaimName)) + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq250[1] { + yym255 := z.EncBinary() + _ = yym255 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq250[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym256 := z.EncBinary() + _ = yym256 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr250 || yy2arr250 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym257 := z.DecBinary() + _ = yym257 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct258 := r.ContainerType() + if yyct258 == codecSelferValueTypeMap1234 { + yyl258 := r.ReadMapStart() + if yyl258 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl258, d) + } + } else if yyct258 == codecSelferValueTypeArray1234 { + yyl258 := r.ReadArrayStart() + if yyl258 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl258, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys259Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys259Slc + var yyhl259 bool = l >= 0 + for yyj259 := 0; ; yyj259++ { + if yyhl259 { + if yyj259 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys259Slc = r.DecodeBytes(yys259Slc, true, true) + yys259 := string(yys259Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys259 { + case "claimName": + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + x.ClaimName = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys259) + } // end switch yys259 + } // end for yyj259 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj262 int + var yyb262 bool + var yyhl262 bool = l >= 0 + yyj262++ + if yyhl262 { + yyb262 = yyj262 > l + } else { + yyb262 = r.CheckBreak() + } + if yyb262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClaimName = "" + } else { + x.ClaimName = string(r.DecodeString()) + } + yyj262++ + if yyhl262 { + yyb262 = yyj262 > l + } else { + yyb262 = r.CheckBreak() + } + if yyb262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj262++ + if yyhl262 { + yyb262 = yyj262 > l + } else { + yyb262 = r.CheckBreak() + } + if yyb262 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj262-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym265 := z.EncBinary() + _ = yym265 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep266 := !z.EncBinary() + yy2arr266 := z.EncBasicHandle().StructToArray + var yyq266 [16]bool + _, _, _ = yysep266, yyq266, yy2arr266 + const yyr266 bool = false + yyq266[0] = x.GCEPersistentDisk != nil + yyq266[1] = x.AWSElasticBlockStore != nil + yyq266[2] = x.HostPath != nil + yyq266[3] = x.Glusterfs != nil + yyq266[4] = x.NFS != nil + yyq266[5] = x.RBD != nil + yyq266[6] = x.ISCSI != nil + yyq266[7] = x.Cinder != nil + yyq266[8] = x.CephFS != nil + yyq266[9] = x.FC != nil + yyq266[10] = x.Flocker != nil + yyq266[11] = x.FlexVolume != nil + yyq266[12] = x.AzureFile != nil + yyq266[13] = x.VsphereVolume != nil + yyq266[14] = x.Quobyte != nil + yyq266[15] = x.AzureDisk != nil + var yynn266 int + if yyr266 || yy2arr266 { + r.EncodeArrayStart(16) + } else { + yynn266 = 0 + for _, b := range yyq266 { + if b { + yynn266++ + } + } + r.EncodeMapStart(yynn266) + yynn266 = 0 + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[0] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[1] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[2] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[3] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[4] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[5] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[6] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[7] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[8] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[9] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[10] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[11] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[12] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[13] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[14] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq266[15] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq266[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + if yyr266 || yy2arr266 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym283 := z.DecBinary() + _ = yym283 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct284 := r.ContainerType() + if yyct284 == codecSelferValueTypeMap1234 { + yyl284 := r.ReadMapStart() + if yyl284 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl284, d) + } + } else if yyct284 == codecSelferValueTypeArray1234 { + yyl284 := r.ReadArrayStart() + if yyl284 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl284, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys285Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys285Slc + var yyhl285 bool = l >= 0 + for yyj285 := 0; ; yyj285++ { + if yyhl285 { + if yyj285 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys285Slc = r.DecodeBytes(yys285Slc, true, true) + yys285 := string(yys285Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys285 { + case "gcePersistentDisk": + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "iscsi": + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "cinder": + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "flexVolume": + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "azureFile": + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys285) + } // end switch yys285 + } // end for yyj285 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj302 int + var yyb302 bool + var yyhl302 bool = l >= 0 + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + for { + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj302-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym319 := z.EncBinary() + _ = yym319 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep320 := !z.EncBinary() + yy2arr320 := z.EncBasicHandle().StructToArray + var yyq320 [5]bool + _, _, _ = yysep320, yyq320, yy2arr320 + const yyr320 bool = false + yyq320[0] = x.Kind != "" + yyq320[1] = x.APIVersion != "" + yyq320[2] = true + yyq320[3] = true + yyq320[4] = true + var yynn320 int + if yyr320 || yy2arr320 { + r.EncodeArrayStart(5) + } else { + yynn320 = 0 + for _, b := range yyq320 { + if b { + yynn320++ + } + } + r.EncodeMapStart(yynn320) + yynn320 = 0 + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[0] { + yym322 := z.EncBinary() + _ = yym322 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq320[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym323 := z.EncBinary() + _ = yym323 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[1] { + yym325 := z.EncBinary() + _ = yym325 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq320[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym326 := z.EncBinary() + _ = yym326 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[2] { + yy328 := &x.ObjectMeta + yy328.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy329 := &x.ObjectMeta + yy329.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[3] { + yy331 := &x.Spec + yy331.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy332 := &x.Spec + yy332.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq320[4] { + yy334 := &x.Status + yy334.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq320[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy335 := &x.Status + yy335.CodecEncodeSelf(e) + } + } + if yyr320 || yy2arr320 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym336 := z.DecBinary() + _ = yym336 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct337 := r.ContainerType() + if yyct337 == codecSelferValueTypeMap1234 { + yyl337 := r.ReadMapStart() + if yyl337 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl337, d) + } + } else if yyct337 == codecSelferValueTypeArray1234 { + yyl337 := r.ReadArrayStart() + if yyl337 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl337, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys338Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys338Slc + var yyhl338 bool = l >= 0 + for yyj338 := 0; ; yyj338++ { + if yyhl338 { + if yyj338 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys338Slc = r.DecodeBytes(yys338Slc, true, true) + yys338 := string(yys338Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys338 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv341 := &x.ObjectMeta + yyv341.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv342 := &x.Spec + yyv342.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv343 := &x.Status + yyv343.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys338) + } // end switch yys338 + } // end for yyj338 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj344 int + var yyb344 bool + var yyhl344 bool = l >= 0 + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv347 := &x.ObjectMeta + yyv347.CodecDecodeSelf(d) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeSpec{} + } else { + yyv348 := &x.Spec + yyv348.CodecDecodeSelf(d) + } + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeStatus{} + } else { + yyv349 := &x.Status + yyv349.CodecDecodeSelf(d) + } + for { + yyj344++ + if yyhl344 { + yyb344 = yyj344 > l + } else { + yyb344 = r.CheckBreak() + } + if yyb344 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj344-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym350 := z.EncBinary() + _ = yym350 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep351 := !z.EncBinary() + yy2arr351 := z.EncBasicHandle().StructToArray + var yyq351 [20]bool + _, _, _ = yysep351, yyq351, yy2arr351 + const yyr351 bool = false + yyq351[0] = len(x.Capacity) != 0 + yyq351[1] = x.PersistentVolumeSource.GCEPersistentDisk != nil && x.GCEPersistentDisk != nil + yyq351[2] = x.PersistentVolumeSource.AWSElasticBlockStore != nil && x.AWSElasticBlockStore != nil + yyq351[3] = x.PersistentVolumeSource.HostPath != nil && x.HostPath != nil + yyq351[4] = x.PersistentVolumeSource.Glusterfs != nil && x.Glusterfs != nil + yyq351[5] = x.PersistentVolumeSource.NFS != nil && x.NFS != nil + yyq351[6] = x.PersistentVolumeSource.RBD != nil && x.RBD != nil + yyq351[7] = x.PersistentVolumeSource.ISCSI != nil && x.ISCSI != nil + yyq351[8] = x.PersistentVolumeSource.Cinder != nil && x.Cinder != nil + yyq351[9] = x.PersistentVolumeSource.CephFS != nil && x.CephFS != nil + yyq351[10] = x.PersistentVolumeSource.FC != nil && x.FC != nil + yyq351[11] = x.PersistentVolumeSource.Flocker != nil && x.Flocker != nil + yyq351[12] = x.PersistentVolumeSource.FlexVolume != nil && x.FlexVolume != nil + yyq351[13] = x.PersistentVolumeSource.AzureFile != nil && x.AzureFile != nil + yyq351[14] = x.PersistentVolumeSource.VsphereVolume != nil && x.VsphereVolume != nil + yyq351[15] = x.PersistentVolumeSource.Quobyte != nil && x.Quobyte != nil + yyq351[16] = x.PersistentVolumeSource.AzureDisk != nil && x.AzureDisk != nil + yyq351[17] = len(x.AccessModes) != 0 + yyq351[18] = x.ClaimRef != nil + yyq351[19] = x.PersistentVolumeReclaimPolicy != "" + var yynn351 int + if yyr351 || yy2arr351 { + r.EncodeArrayStart(20) + } else { + yynn351 = 0 + for _, b := range yyq351 { + if b { + yynn351++ + } + } + r.EncodeMapStart(yynn351) + yynn351 = 0 + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq351[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + var yyn353 bool + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + yyn353 = true + goto LABEL353 + } + LABEL353: + if yyr351 || yy2arr351 { + if yyn353 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[1] { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gcePersistentDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn353 { + r.EncodeNil() + } else { + if x.GCEPersistentDisk == nil { + r.EncodeNil() + } else { + x.GCEPersistentDisk.CodecEncodeSelf(e) + } + } + } + } + var yyn354 bool + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + yyn354 = true + goto LABEL354 + } + LABEL354: + if yyr351 || yy2arr351 { + if yyn354 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[2] { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("awsElasticBlockStore")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn354 { + r.EncodeNil() + } else { + if x.AWSElasticBlockStore == nil { + r.EncodeNil() + } else { + x.AWSElasticBlockStore.CodecEncodeSelf(e) + } + } + } + } + var yyn355 bool + if x.PersistentVolumeSource.HostPath == nil { + yyn355 = true + goto LABEL355 + } + LABEL355: + if yyr351 || yy2arr351 { + if yyn355 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[3] { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn355 { + r.EncodeNil() + } else { + if x.HostPath == nil { + r.EncodeNil() + } else { + x.HostPath.CodecEncodeSelf(e) + } + } + } + } + var yyn356 bool + if x.PersistentVolumeSource.Glusterfs == nil { + yyn356 = true + goto LABEL356 + } + LABEL356: + if yyr351 || yy2arr351 { + if yyn356 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[4] { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("glusterfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn356 { + r.EncodeNil() + } else { + if x.Glusterfs == nil { + r.EncodeNil() + } else { + x.Glusterfs.CodecEncodeSelf(e) + } + } + } + } + var yyn357 bool + if x.PersistentVolumeSource.NFS == nil { + yyn357 = true + goto LABEL357 + } + LABEL357: + if yyr351 || yy2arr351 { + if yyn357 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[5] { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn357 { + r.EncodeNil() + } else { + if x.NFS == nil { + r.EncodeNil() + } else { + x.NFS.CodecEncodeSelf(e) + } + } + } + } + var yyn358 bool + if x.PersistentVolumeSource.RBD == nil { + yyn358 = true + goto LABEL358 + } + LABEL358: + if yyr351 || yy2arr351 { + if yyn358 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[6] { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rbd")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn358 { + r.EncodeNil() + } else { + if x.RBD == nil { + r.EncodeNil() + } else { + x.RBD.CodecEncodeSelf(e) + } + } + } + } + var yyn359 bool + if x.PersistentVolumeSource.ISCSI == nil { + yyn359 = true + goto LABEL359 + } + LABEL359: + if yyr351 || yy2arr351 { + if yyn359 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[7] { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsi")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn359 { + r.EncodeNil() + } else { + if x.ISCSI == nil { + r.EncodeNil() + } else { + x.ISCSI.CodecEncodeSelf(e) + } + } + } + } + var yyn360 bool + if x.PersistentVolumeSource.Cinder == nil { + yyn360 = true + goto LABEL360 + } + LABEL360: + if yyr351 || yy2arr351 { + if yyn360 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[8] { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cinder")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn360 { + r.EncodeNil() + } else { + if x.Cinder == nil { + r.EncodeNil() + } else { + x.Cinder.CodecEncodeSelf(e) + } + } + } + } + var yyn361 bool + if x.PersistentVolumeSource.CephFS == nil { + yyn361 = true + goto LABEL361 + } + LABEL361: + if yyr351 || yy2arr351 { + if yyn361 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[9] { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cephfs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn361 { + r.EncodeNil() + } else { + if x.CephFS == nil { + r.EncodeNil() + } else { + x.CephFS.CodecEncodeSelf(e) + } + } + } + } + var yyn362 bool + if x.PersistentVolumeSource.FC == nil { + yyn362 = true + goto LABEL362 + } + LABEL362: + if yyr351 || yy2arr351 { + if yyn362 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[10] { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fc")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn362 { + r.EncodeNil() + } else { + if x.FC == nil { + r.EncodeNil() + } else { + x.FC.CodecEncodeSelf(e) + } + } + } + } + var yyn363 bool + if x.PersistentVolumeSource.Flocker == nil { + yyn363 = true + goto LABEL363 + } + LABEL363: + if yyr351 || yy2arr351 { + if yyn363 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[11] { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flocker")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn363 { + r.EncodeNil() + } else { + if x.Flocker == nil { + r.EncodeNil() + } else { + x.Flocker.CodecEncodeSelf(e) + } + } + } + } + var yyn364 bool + if x.PersistentVolumeSource.FlexVolume == nil { + yyn364 = true + goto LABEL364 + } + LABEL364: + if yyr351 || yy2arr351 { + if yyn364 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[12] { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("flexVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn364 { + r.EncodeNil() + } else { + if x.FlexVolume == nil { + r.EncodeNil() + } else { + x.FlexVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn365 bool + if x.PersistentVolumeSource.AzureFile == nil { + yyn365 = true + goto LABEL365 + } + LABEL365: + if yyr351 || yy2arr351 { + if yyn365 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[13] { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn365 { + r.EncodeNil() + } else { + if x.AzureFile == nil { + r.EncodeNil() + } else { + x.AzureFile.CodecEncodeSelf(e) + } + } + } + } + var yyn366 bool + if x.PersistentVolumeSource.VsphereVolume == nil { + yyn366 = true + goto LABEL366 + } + LABEL366: + if yyr351 || yy2arr351 { + if yyn366 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[14] { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("vsphereVolume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn366 { + r.EncodeNil() + } else { + if x.VsphereVolume == nil { + r.EncodeNil() + } else { + x.VsphereVolume.CodecEncodeSelf(e) + } + } + } + } + var yyn367 bool + if x.PersistentVolumeSource.Quobyte == nil { + yyn367 = true + goto LABEL367 + } + LABEL367: + if yyr351 || yy2arr351 { + if yyn367 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[15] { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("quobyte")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn367 { + r.EncodeNil() + } else { + if x.Quobyte == nil { + r.EncodeNil() + } else { + x.Quobyte.CodecEncodeSelf(e) + } + } + } + } + var yyn368 bool + if x.PersistentVolumeSource.AzureDisk == nil { + yyn368 = true + goto LABEL368 + } + LABEL368: + if yyr351 || yy2arr351 { + if yyn368 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[16] { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq351[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("azureDisk")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn368 { + r.EncodeNil() + } else { + if x.AzureDisk == nil { + r.EncodeNil() + } else { + x.AzureDisk.CodecEncodeSelf(e) + } + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[17] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym370 := z.EncBinary() + _ = yym370 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq351[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym371 := z.EncBinary() + _ = yym371 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[18] { + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq351[18] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("claimRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ClaimRef == nil { + r.EncodeNil() + } else { + x.ClaimRef.CodecEncodeSelf(e) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[19] { + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq351[19] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("persistentVolumeReclaimPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.PersistentVolumeReclaimPolicy.CodecEncodeSelf(e) + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym374 := z.DecBinary() + _ = yym374 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct375 := r.ContainerType() + if yyct375 == codecSelferValueTypeMap1234 { + yyl375 := r.ReadMapStart() + if yyl375 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl375, d) + } + } else if yyct375 == codecSelferValueTypeArray1234 { + yyl375 := r.ReadArrayStart() + if yyl375 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl375, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys376Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys376Slc + var yyhl376 bool = l >= 0 + for yyj376 := 0; ; yyj376++ { + if yyhl376 { + if yyj376 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys376Slc = r.DecodeBytes(yys376Slc, true, true) + yys376 := string(yys376Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys376 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv377 := &x.Capacity + yyv377.CodecDecodeSelf(d) + } + case "gcePersistentDisk": + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + case "awsElasticBlockStore": + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + case "hostPath": + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + case "glusterfs": + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + case "nfs": + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + case "rbd": + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + case "iscsi": + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + case "cinder": + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + case "cephfs": + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + case "fc": + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + case "flocker": + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + case "flexVolume": + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + case "azureFile": + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + case "vsphereVolume": + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + case "quobyte": + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + case "azureDisk": + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv394 := &x.AccessModes + yym395 := z.DecBinary() + _ = yym395 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv394), d) + } + } + case "claimRef": + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + case "persistentVolumeReclaimPolicy": + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + x.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys376) + } // end switch yys376 + } // end for yyj376 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj398 int + var yyb398 bool + var yyhl398 bool = l >= 0 + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv399 := &x.Capacity + yyv399.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.GCEPersistentDisk == nil { + x.PersistentVolumeSource.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GCEPersistentDisk != nil { + x.GCEPersistentDisk = nil + } + } else { + if x.GCEPersistentDisk == nil { + x.GCEPersistentDisk = new(GCEPersistentDiskVolumeSource) + } + x.GCEPersistentDisk.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AWSElasticBlockStore == nil { + x.PersistentVolumeSource.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AWSElasticBlockStore != nil { + x.AWSElasticBlockStore = nil + } + } else { + if x.AWSElasticBlockStore == nil { + x.AWSElasticBlockStore = new(AWSElasticBlockStoreVolumeSource) + } + x.AWSElasticBlockStore.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.HostPath == nil { + x.PersistentVolumeSource.HostPath = new(HostPathVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HostPath != nil { + x.HostPath = nil + } + } else { + if x.HostPath == nil { + x.HostPath = new(HostPathVolumeSource) + } + x.HostPath.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Glusterfs == nil { + x.PersistentVolumeSource.Glusterfs = new(GlusterfsVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Glusterfs != nil { + x.Glusterfs = nil + } + } else { + if x.Glusterfs == nil { + x.Glusterfs = new(GlusterfsVolumeSource) + } + x.Glusterfs.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.NFS == nil { + x.PersistentVolumeSource.NFS = new(NFSVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NFS != nil { + x.NFS = nil + } + } else { + if x.NFS == nil { + x.NFS = new(NFSVolumeSource) + } + x.NFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.RBD == nil { + x.PersistentVolumeSource.RBD = new(RBDVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RBD != nil { + x.RBD = nil + } + } else { + if x.RBD == nil { + x.RBD = new(RBDVolumeSource) + } + x.RBD.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.ISCSI == nil { + x.PersistentVolumeSource.ISCSI = new(ISCSIVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ISCSI != nil { + x.ISCSI = nil + } + } else { + if x.ISCSI == nil { + x.ISCSI = new(ISCSIVolumeSource) + } + x.ISCSI.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Cinder == nil { + x.PersistentVolumeSource.Cinder = new(CinderVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Cinder != nil { + x.Cinder = nil + } + } else { + if x.Cinder == nil { + x.Cinder = new(CinderVolumeSource) + } + x.Cinder.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.CephFS == nil { + x.PersistentVolumeSource.CephFS = new(CephFSVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CephFS != nil { + x.CephFS = nil + } + } else { + if x.CephFS == nil { + x.CephFS = new(CephFSVolumeSource) + } + x.CephFS.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FC == nil { + x.PersistentVolumeSource.FC = new(FCVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FC != nil { + x.FC = nil + } + } else { + if x.FC == nil { + x.FC = new(FCVolumeSource) + } + x.FC.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Flocker == nil { + x.PersistentVolumeSource.Flocker = new(FlockerVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Flocker != nil { + x.Flocker = nil + } + } else { + if x.Flocker == nil { + x.Flocker = new(FlockerVolumeSource) + } + x.Flocker.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.FlexVolume == nil { + x.PersistentVolumeSource.FlexVolume = new(FlexVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FlexVolume != nil { + x.FlexVolume = nil + } + } else { + if x.FlexVolume == nil { + x.FlexVolume = new(FlexVolumeSource) + } + x.FlexVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureFile == nil { + x.PersistentVolumeSource.AzureFile = new(AzureFileVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureFile != nil { + x.AzureFile = nil + } + } else { + if x.AzureFile == nil { + x.AzureFile = new(AzureFileVolumeSource) + } + x.AzureFile.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.VsphereVolume == nil { + x.PersistentVolumeSource.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.VsphereVolume != nil { + x.VsphereVolume = nil + } + } else { + if x.VsphereVolume == nil { + x.VsphereVolume = new(VsphereVirtualDiskVolumeSource) + } + x.VsphereVolume.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.Quobyte == nil { + x.PersistentVolumeSource.Quobyte = new(QuobyteVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Quobyte != nil { + x.Quobyte = nil + } + } else { + if x.Quobyte == nil { + x.Quobyte = new(QuobyteVolumeSource) + } + x.Quobyte.CodecDecodeSelf(d) + } + if x.PersistentVolumeSource.AzureDisk == nil { + x.PersistentVolumeSource.AzureDisk = new(AzureDiskVolumeSource) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AzureDisk != nil { + x.AzureDisk = nil + } + } else { + if x.AzureDisk == nil { + x.AzureDisk = new(AzureDiskVolumeSource) + } + x.AzureDisk.CodecDecodeSelf(d) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv416 := &x.AccessModes + yym417 := z.DecBinary() + _ = yym417 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv416), d) + } + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ClaimRef != nil { + x.ClaimRef = nil + } + } else { + if x.ClaimRef == nil { + x.ClaimRef = new(ObjectReference) + } + x.ClaimRef.CodecDecodeSelf(d) + } + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PersistentVolumeReclaimPolicy = "" + } else { + x.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(r.DecodeString()) + } + for { + yyj398++ + if yyhl398 { + yyb398 = yyj398 > l + } else { + yyb398 = r.CheckBreak() + } + if yyb398 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj398-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeReclaimPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym420 := z.EncBinary() + _ = yym420 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeReclaimPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym421 := z.DecBinary() + _ = yym421 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PersistentVolumeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym422 := z.EncBinary() + _ = yym422 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep423 := !z.EncBinary() + yy2arr423 := z.EncBasicHandle().StructToArray + var yyq423 [3]bool + _, _, _ = yysep423, yyq423, yy2arr423 + const yyr423 bool = false + yyq423[0] = x.Phase != "" + yyq423[1] = x.Message != "" + yyq423[2] = x.Reason != "" + var yynn423 int + if yyr423 || yy2arr423 { + r.EncodeArrayStart(3) + } else { + yynn423 = 0 + for _, b := range yyq423 { + if b { + yynn423++ + } + } + r.EncodeMapStart(yynn423) + yynn423 = 0 + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[1] { + yym426 := z.EncBinary() + _ = yym426 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym427 := z.EncBinary() + _ = yym427 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq423[2] { + yym429 := z.EncBinary() + _ = yym429 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq423[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym430 := z.EncBinary() + _ = yym430 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr423 || yy2arr423 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym431 := z.DecBinary() + _ = yym431 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct432 := r.ContainerType() + if yyct432 == codecSelferValueTypeMap1234 { + yyl432 := r.ReadMapStart() + if yyl432 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl432, d) + } + } else if yyct432 == codecSelferValueTypeArray1234 { + yyl432 := r.ReadArrayStart() + if yyl432 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl432, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys433Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys433Slc + var yyhl433 bool = l >= 0 + for yyj433 := 0; ; yyj433++ { + if yyhl433 { + if yyj433 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys433Slc = r.DecodeBytes(yys433Slc, true, true) + yys433 := string(yys433Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys433 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumePhase(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys433) + } // end switch yys433 + } // end for yyj433 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj437 int + var yyb437 bool + var yyhl437 bool = l >= 0 + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumePhase(r.DecodeString()) + } + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + for { + yyj437++ + if yyhl437 { + yyb437 = yyj437 > l + } else { + yyb437 = r.CheckBreak() + } + if yyb437 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj437-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym441 := z.EncBinary() + _ = yym441 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep442 := !z.EncBinary() + yy2arr442 := z.EncBasicHandle().StructToArray + var yyq442 [4]bool + _, _, _ = yysep442, yyq442, yy2arr442 + const yyr442 bool = false + yyq442[0] = x.Kind != "" + yyq442[1] = x.APIVersion != "" + yyq442[2] = true + var yynn442 int + if yyr442 || yy2arr442 { + r.EncodeArrayStart(4) + } else { + yynn442 = 1 + for _, b := range yyq442 { + if b { + yynn442++ + } + } + r.EncodeMapStart(yynn442) + yynn442 = 0 + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[0] { + yym444 := z.EncBinary() + _ = yym444 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym445 := z.EncBinary() + _ = yym445 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[1] { + yym447 := z.EncBinary() + _ = yym447 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym448 := z.EncBinary() + _ = yym448 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[2] { + yy450 := &x.ListMeta + yym451 := z.EncBinary() + _ = yym451 + if false { + } else if z.HasExtensions() && z.EncExt(yy450) { + } else { + z.EncFallback(yy450) + } + } else { + r.EncodeNil() + } + } else { + if yyq442[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy452 := &x.ListMeta + yym453 := z.EncBinary() + _ = yym453 + if false { + } else if z.HasExtensions() && z.EncExt(yy452) { + } else { + z.EncFallback(yy452) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym455 := z.EncBinary() + _ = yym455 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym456 := z.EncBinary() + _ = yym456 + if false { + } else { + h.encSlicePersistentVolume(([]PersistentVolume)(x.Items), e) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym457 := z.DecBinary() + _ = yym457 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct458 := r.ContainerType() + if yyct458 == codecSelferValueTypeMap1234 { + yyl458 := r.ReadMapStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl458, d) + } + } else if yyct458 == codecSelferValueTypeArray1234 { + yyl458 := r.ReadArrayStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl458, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys459Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys459Slc + var yyhl459 bool = l >= 0 + for yyj459 := 0; ; yyj459++ { + if yyhl459 { + if yyj459 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys459Slc = r.DecodeBytes(yys459Slc, true, true) + yys459 := string(yys459Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys459 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv462 := &x.ListMeta + yym463 := z.DecBinary() + _ = yym463 + if false { + } else if z.HasExtensions() && z.DecExt(yyv462) { + } else { + z.DecFallback(yyv462, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv464 := &x.Items + yym465 := z.DecBinary() + _ = yym465 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv464), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys459) + } // end switch yys459 + } // end for yyj459 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj466 int + var yyb466 bool + var yyhl466 bool = l >= 0 + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv469 := &x.ListMeta + yym470 := z.DecBinary() + _ = yym470 + if false { + } else if z.HasExtensions() && z.DecExt(yyv469) { + } else { + z.DecFallback(yyv469, false) + } + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv471 := &x.Items + yym472 := z.DecBinary() + _ = yym472 + if false { + } else { + h.decSlicePersistentVolume((*[]PersistentVolume)(yyv471), d) + } + } + for { + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj466-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaim) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym473 := z.EncBinary() + _ = yym473 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep474 := !z.EncBinary() + yy2arr474 := z.EncBasicHandle().StructToArray + var yyq474 [5]bool + _, _, _ = yysep474, yyq474, yy2arr474 + const yyr474 bool = false + yyq474[0] = x.Kind != "" + yyq474[1] = x.APIVersion != "" + yyq474[2] = true + yyq474[3] = true + yyq474[4] = true + var yynn474 int + if yyr474 || yy2arr474 { + r.EncodeArrayStart(5) + } else { + yynn474 = 0 + for _, b := range yyq474 { + if b { + yynn474++ + } + } + r.EncodeMapStart(yynn474) + yynn474 = 0 + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[0] { + yym476 := z.EncBinary() + _ = yym476 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq474[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym477 := z.EncBinary() + _ = yym477 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[1] { + yym479 := z.EncBinary() + _ = yym479 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq474[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym480 := z.EncBinary() + _ = yym480 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[2] { + yy482 := &x.ObjectMeta + yy482.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy483 := &x.ObjectMeta + yy483.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[3] { + yy485 := &x.Spec + yy485.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy486 := &x.Spec + yy486.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[4] { + yy488 := &x.Status + yy488.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq474[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy489 := &x.Status + yy489.CodecEncodeSelf(e) + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaim) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym490 := z.DecBinary() + _ = yym490 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct491 := r.ContainerType() + if yyct491 == codecSelferValueTypeMap1234 { + yyl491 := r.ReadMapStart() + if yyl491 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl491, d) + } + } else if yyct491 == codecSelferValueTypeArray1234 { + yyl491 := r.ReadArrayStart() + if yyl491 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl491, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys492Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys492Slc + var yyhl492 bool = l >= 0 + for yyj492 := 0; ; yyj492++ { + if yyhl492 { + if yyj492 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys492Slc = r.DecodeBytes(yys492Slc, true, true) + yys492 := string(yys492Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys492 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv495 := &x.ObjectMeta + yyv495.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv496 := &x.Spec + yyv496.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv497 := &x.Status + yyv497.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys492) + } // end switch yys492 + } // end for yyj492 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaim) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj498 int + var yyb498 bool + var yyhl498 bool = l >= 0 + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv501 := &x.ObjectMeta + yyv501.CodecDecodeSelf(d) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PersistentVolumeClaimSpec{} + } else { + yyv502 := &x.Spec + yyv502.CodecDecodeSelf(d) + } + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PersistentVolumeClaimStatus{} + } else { + yyv503 := &x.Status + yyv503.CodecDecodeSelf(d) + } + for { + yyj498++ + if yyhl498 { + yyb498 = yyj498 > l + } else { + yyb498 = r.CheckBreak() + } + if yyb498 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj498-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym504 := z.EncBinary() + _ = yym504 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep505 := !z.EncBinary() + yy2arr505 := z.EncBasicHandle().StructToArray + var yyq505 [4]bool + _, _, _ = yysep505, yyq505, yy2arr505 + const yyr505 bool = false + yyq505[0] = x.Kind != "" + yyq505[1] = x.APIVersion != "" + yyq505[2] = true + var yynn505 int + if yyr505 || yy2arr505 { + r.EncodeArrayStart(4) + } else { + yynn505 = 1 + for _, b := range yyq505 { + if b { + yynn505++ + } + } + r.EncodeMapStart(yynn505) + yynn505 = 0 + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[0] { + yym507 := z.EncBinary() + _ = yym507 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq505[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym508 := z.EncBinary() + _ = yym508 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[1] { + yym510 := z.EncBinary() + _ = yym510 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq505[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym511 := z.EncBinary() + _ = yym511 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq505[2] { + yy513 := &x.ListMeta + yym514 := z.EncBinary() + _ = yym514 + if false { + } else if z.HasExtensions() && z.EncExt(yy513) { + } else { + z.EncFallback(yy513) + } + } else { + r.EncodeNil() + } + } else { + if yyq505[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy515 := &x.ListMeta + yym516 := z.EncBinary() + _ = yym516 + if false { + } else if z.HasExtensions() && z.EncExt(yy515) { + } else { + z.EncFallback(yy515) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym518 := z.EncBinary() + _ = yym518 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym519 := z.EncBinary() + _ = yym519 + if false { + } else { + h.encSlicePersistentVolumeClaim(([]PersistentVolumeClaim)(x.Items), e) + } + } + } + if yyr505 || yy2arr505 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym520 := z.DecBinary() + _ = yym520 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct521 := r.ContainerType() + if yyct521 == codecSelferValueTypeMap1234 { + yyl521 := r.ReadMapStart() + if yyl521 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl521, d) + } + } else if yyct521 == codecSelferValueTypeArray1234 { + yyl521 := r.ReadArrayStart() + if yyl521 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl521, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys522Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys522Slc + var yyhl522 bool = l >= 0 + for yyj522 := 0; ; yyj522++ { + if yyhl522 { + if yyj522 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys522Slc = r.DecodeBytes(yys522Slc, true, true) + yys522 := string(yys522Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys522 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv525 := &x.ListMeta + yym526 := z.DecBinary() + _ = yym526 + if false { + } else if z.HasExtensions() && z.DecExt(yyv525) { + } else { + z.DecFallback(yyv525, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv527 := &x.Items + yym528 := z.DecBinary() + _ = yym528 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv527), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys522) + } // end switch yys522 + } // end for yyj522 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj529 int + var yyb529 bool + var yyhl529 bool = l >= 0 + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv532 := &x.ListMeta + yym533 := z.DecBinary() + _ = yym533 + if false { + } else if z.HasExtensions() && z.DecExt(yyv532) { + } else { + z.DecFallback(yyv532, false) + } + } + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv534 := &x.Items + yym535 := z.DecBinary() + _ = yym535 + if false { + } else { + h.decSlicePersistentVolumeClaim((*[]PersistentVolumeClaim)(yyv534), d) + } + } + for { + yyj529++ + if yyhl529 { + yyb529 = yyj529 > l + } else { + yyb529 = r.CheckBreak() + } + if yyb529 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj529-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym536 := z.EncBinary() + _ = yym536 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep537 := !z.EncBinary() + yy2arr537 := z.EncBasicHandle().StructToArray + var yyq537 [4]bool + _, _, _ = yysep537, yyq537, yy2arr537 + const yyr537 bool = false + yyq537[0] = len(x.AccessModes) != 0 + yyq537[1] = x.Selector != nil + yyq537[2] = true + yyq537[3] = x.VolumeName != "" + var yynn537 int + if yyr537 || yy2arr537 { + r.EncodeArrayStart(4) + } else { + yynn537 = 0 + for _, b := range yyq537 { + if b { + yynn537++ + } + } + r.EncodeMapStart(yynn537) + yynn537 = 0 + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[0] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym539 := z.EncBinary() + _ = yym539 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq537[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym540 := z.EncBinary() + _ = yym540 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym542 := z.EncBinary() + _ = yym542 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq537[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym543 := z.EncBinary() + _ = yym543 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[2] { + yy545 := &x.Resources + yy545.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq537[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy546 := &x.Resources + yy546.CodecEncodeSelf(e) + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq537[3] { + yym548 := z.EncBinary() + _ = yym548 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq537[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym549 := z.EncBinary() + _ = yym549 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeName)) + } + } + } + if yyr537 || yy2arr537 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym550 := z.DecBinary() + _ = yym550 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct551 := r.ContainerType() + if yyct551 == codecSelferValueTypeMap1234 { + yyl551 := r.ReadMapStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl551, d) + } + } else if yyct551 == codecSelferValueTypeArray1234 { + yyl551 := r.ReadArrayStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl551, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys552Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys552Slc + var yyhl552 bool = l >= 0 + for yyj552 := 0; ; yyj552++ { + if yyhl552 { + if yyj552 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys552Slc = r.DecodeBytes(yys552Slc, true, true) + yys552 := string(yys552Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys552 { + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv553 := &x.AccessModes + yym554 := z.DecBinary() + _ = yym554 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv553), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym556 := z.DecBinary() + _ = yym556 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv557 := &x.Resources + yyv557.CodecDecodeSelf(d) + } + case "volumeName": + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + x.VolumeName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys552) + } // end switch yys552 + } // end for yyj552 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj559 int + var yyb559 bool + var yyhl559 bool = l >= 0 + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv560 := &x.AccessModes + yym561 := z.DecBinary() + _ = yym561 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv560), d) + } + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym563 := z.DecBinary() + _ = yym563 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv564 := &x.Resources + yyv564.CodecDecodeSelf(d) + } + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeName = "" + } else { + x.VolumeName = string(r.DecodeString()) + } + for { + yyj559++ + if yyhl559 { + yyb559 = yyj559 > l + } else { + yyb559 = r.CheckBreak() + } + if yyb559 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj559-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PersistentVolumeClaimStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym566 := z.EncBinary() + _ = yym566 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep567 := !z.EncBinary() + yy2arr567 := z.EncBasicHandle().StructToArray + var yyq567 [3]bool + _, _, _ = yysep567, yyq567, yy2arr567 + const yyr567 bool = false + yyq567[0] = x.Phase != "" + yyq567[1] = len(x.AccessModes) != 0 + yyq567[2] = len(x.Capacity) != 0 + var yynn567 int + if yyr567 || yy2arr567 { + r.EncodeArrayStart(3) + } else { + yynn567 = 0 + for _, b := range yyq567 { + if b { + yynn567++ + } + } + r.EncodeMapStart(yynn567) + yynn567 = 0 + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq567[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[1] { + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym570 := z.EncBinary() + _ = yym570 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq567[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("accessModes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AccessModes == nil { + r.EncodeNil() + } else { + yym571 := z.EncBinary() + _ = yym571 + if false { + } else { + h.encSlicePersistentVolumeAccessMode(([]PersistentVolumeAccessMode)(x.AccessModes), e) + } + } + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq567[2] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq567[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr567 || yy2arr567 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PersistentVolumeClaimStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym573 := z.DecBinary() + _ = yym573 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct574 := r.ContainerType() + if yyct574 == codecSelferValueTypeMap1234 { + yyl574 := r.ReadMapStart() + if yyl574 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl574, d) + } + } else if yyct574 == codecSelferValueTypeArray1234 { + yyl574 := r.ReadArrayStart() + if yyl574 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl574, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys575Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys575Slc + var yyhl575 bool = l >= 0 + for yyj575 := 0; ; yyj575++ { + if yyhl575 { + if yyj575 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys575Slc = r.DecodeBytes(yys575Slc, true, true) + yys575 := string(yys575Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys575 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumeClaimPhase(r.DecodeString()) + } + case "accessModes": + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv577 := &x.AccessModes + yym578 := z.DecBinary() + _ = yym578 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv577), d) + } + } + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv579 := &x.Capacity + yyv579.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys575) + } // end switch yys575 + } // end for yyj575 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PersistentVolumeClaimStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj580 int + var yyb580 bool + var yyhl580 bool = l >= 0 + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PersistentVolumeClaimPhase(r.DecodeString()) + } + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AccessModes = nil + } else { + yyv582 := &x.AccessModes + yym583 := z.DecBinary() + _ = yym583 + if false { + } else { + h.decSlicePersistentVolumeAccessMode((*[]PersistentVolumeAccessMode)(yyv582), d) + } + } + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv584 := &x.Capacity + yyv584.CodecDecodeSelf(d) + } + for { + yyj580++ + if yyhl580 { + yyb580 = yyj580 > l + } else { + yyb580 = r.CheckBreak() + } + if yyb580 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj580-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PersistentVolumeAccessMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym585 := z.EncBinary() + _ = yym585 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeAccessMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym586 := z.DecBinary() + _ = yym586 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym587 := z.EncBinary() + _ = yym587 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym588 := z.DecBinary() + _ = yym588 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PersistentVolumeClaimPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym589 := z.EncBinary() + _ = yym589 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PersistentVolumeClaimPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym590 := z.DecBinary() + _ = yym590 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HostPathVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym591 := z.EncBinary() + _ = yym591 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep592 := !z.EncBinary() + yy2arr592 := z.EncBasicHandle().StructToArray + var yyq592 [1]bool + _, _, _ = yysep592, yyq592, yy2arr592 + const yyr592 bool = false + var yynn592 int + if yyr592 || yy2arr592 { + r.EncodeArrayStart(1) + } else { + yynn592 = 1 + for _, b := range yyq592 { + if b { + yynn592++ + } + } + r.EncodeMapStart(yynn592) + yynn592 = 0 + } + if yyr592 || yy2arr592 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym594 := z.EncBinary() + _ = yym594 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym595 := z.EncBinary() + _ = yym595 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr592 || yy2arr592 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPathVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym596 := z.DecBinary() + _ = yym596 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct597 := r.ContainerType() + if yyct597 == codecSelferValueTypeMap1234 { + yyl597 := r.ReadMapStart() + if yyl597 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl597, d) + } + } else if yyct597 == codecSelferValueTypeArray1234 { + yyl597 := r.ReadArrayStart() + if yyl597 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl597, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys598Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys598Slc + var yyhl598 bool = l >= 0 + for yyj598 := 0; ; yyj598++ { + if yyhl598 { + if yyj598 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys598Slc = r.DecodeBytes(yys598Slc, true, true) + yys598 := string(yys598Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys598 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys598) + } // end switch yys598 + } // end for yyj598 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPathVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj600 int + var yyb600 bool + var yyhl600 bool = l >= 0 + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj600-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EmptyDirVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym602 := z.EncBinary() + _ = yym602 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep603 := !z.EncBinary() + yy2arr603 := z.EncBasicHandle().StructToArray + var yyq603 [1]bool + _, _, _ = yysep603, yyq603, yy2arr603 + const yyr603 bool = false + yyq603[0] = x.Medium != "" + var yynn603 int + if yyr603 || yy2arr603 { + r.EncodeArrayStart(1) + } else { + yynn603 = 0 + for _, b := range yyq603 { + if b { + yynn603++ + } + } + r.EncodeMapStart(yynn603) + yynn603 = 0 + } + if yyr603 || yy2arr603 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq603[0] { + x.Medium.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq603[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("medium")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Medium.CodecEncodeSelf(e) + } + } + if yyr603 || yy2arr603 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EmptyDirVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym605 := z.DecBinary() + _ = yym605 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct606 := r.ContainerType() + if yyct606 == codecSelferValueTypeMap1234 { + yyl606 := r.ReadMapStart() + if yyl606 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl606, d) + } + } else if yyct606 == codecSelferValueTypeArray1234 { + yyl606 := r.ReadArrayStart() + if yyl606 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl606, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys607Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys607Slc + var yyhl607 bool = l >= 0 + for yyj607 := 0; ; yyj607++ { + if yyhl607 { + if yyj607 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys607Slc = r.DecodeBytes(yys607Slc, true, true) + yys607 := string(yys607Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys607 { + case "medium": + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + x.Medium = StorageMedium(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys607) + } // end switch yys607 + } // end for yyj607 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EmptyDirVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj609 int + var yyb609 bool + var yyhl609 bool = l >= 0 + yyj609++ + if yyhl609 { + yyb609 = yyj609 > l + } else { + yyb609 = r.CheckBreak() + } + if yyb609 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Medium = "" + } else { + x.Medium = StorageMedium(r.DecodeString()) + } + for { + yyj609++ + if yyhl609 { + yyb609 = yyj609 > l + } else { + yyb609 = r.CheckBreak() + } + if yyb609 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj609-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GlusterfsVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym611 := z.EncBinary() + _ = yym611 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep612 := !z.EncBinary() + yy2arr612 := z.EncBasicHandle().StructToArray + var yyq612 [3]bool + _, _, _ = yysep612, yyq612, yy2arr612 + const yyr612 bool = false + yyq612[2] = x.ReadOnly != false + var yynn612 int + if yyr612 || yy2arr612 { + r.EncodeArrayStart(3) + } else { + yynn612 = 2 + for _, b := range yyq612 { + if b { + yynn612++ + } + } + r.EncodeMapStart(yynn612) + yynn612 = 0 + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym614 := z.EncBinary() + _ = yym614 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("endpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym615 := z.EncBinary() + _ = yym615 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EndpointsName)) + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym617 := z.EncBinary() + _ = yym617 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym618 := z.EncBinary() + _ = yym618 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq612[2] { + yym620 := z.EncBinary() + _ = yym620 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq612[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym621 := z.EncBinary() + _ = yym621 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GlusterfsVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym622 := z.DecBinary() + _ = yym622 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct623 := r.ContainerType() + if yyct623 == codecSelferValueTypeMap1234 { + yyl623 := r.ReadMapStart() + if yyl623 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl623, d) + } + } else if yyct623 == codecSelferValueTypeArray1234 { + yyl623 := r.ReadArrayStart() + if yyl623 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl623, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys624Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys624Slc + var yyhl624 bool = l >= 0 + for yyj624 := 0; ; yyj624++ { + if yyhl624 { + if yyj624 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys624Slc = r.DecodeBytes(yys624Slc, true, true) + yys624 := string(yys624Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys624 { + case "endpoints": + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + x.EndpointsName = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys624) + } // end switch yys624 + } // end for yyj624 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GlusterfsVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj628 int + var yyb628 bool + var yyhl628 bool = l >= 0 + yyj628++ + if yyhl628 { + yyb628 = yyj628 > l + } else { + yyb628 = r.CheckBreak() + } + if yyb628 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EndpointsName = "" + } else { + x.EndpointsName = string(r.DecodeString()) + } + yyj628++ + if yyhl628 { + yyb628 = yyj628 > l + } else { + yyb628 = r.CheckBreak() + } + if yyb628 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj628++ + if yyhl628 { + yyb628 = yyj628 > l + } else { + yyb628 = r.CheckBreak() + } + if yyb628 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj628++ + if yyhl628 { + yyb628 = yyj628 > l + } else { + yyb628 = r.CheckBreak() + } + if yyb628 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj628-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RBDVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym632 := z.EncBinary() + _ = yym632 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep633 := !z.EncBinary() + yy2arr633 := z.EncBasicHandle().StructToArray + var yyq633 [8]bool + _, _, _ = yysep633, yyq633, yy2arr633 + const yyr633 bool = false + yyq633[2] = x.FSType != "" + yyq633[3] = x.RBDPool != "" + yyq633[4] = x.RadosUser != "" + yyq633[5] = x.Keyring != "" + yyq633[6] = x.SecretRef != nil + yyq633[7] = x.ReadOnly != false + var yynn633 int + if yyr633 || yy2arr633 { + r.EncodeArrayStart(8) + } else { + yynn633 = 2 + for _, b := range yyq633 { + if b { + yynn633++ + } + } + r.EncodeMapStart(yynn633) + yynn633 = 0 + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym635 := z.EncBinary() + _ = yym635 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CephMonitors == nil { + r.EncodeNil() + } else { + yym636 := z.EncBinary() + _ = yym636 + if false { + } else { + z.F.EncSliceStringV(x.CephMonitors, false, e) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym638 := z.EncBinary() + _ = yym638 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym639 := z.EncBinary() + _ = yym639 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDImage)) + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[2] { + yym641 := z.EncBinary() + _ = yym641 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq633[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym642 := z.EncBinary() + _ = yym642 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[3] { + yym644 := z.EncBinary() + _ = yym644 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq633[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pool")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym645 := z.EncBinary() + _ = yym645 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RBDPool)) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[4] { + yym647 := z.EncBinary() + _ = yym647 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq633[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym648 := z.EncBinary() + _ = yym648 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.RadosUser)) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[5] { + yym650 := z.EncBinary() + _ = yym650 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq633[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("keyring")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym651 := z.EncBinary() + _ = yym651 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Keyring)) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[6] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq633[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq633[7] { + yym654 := z.EncBinary() + _ = yym654 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq633[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym655 := z.EncBinary() + _ = yym655 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr633 || yy2arr633 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RBDVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym656 := z.DecBinary() + _ = yym656 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct657 := r.ContainerType() + if yyct657 == codecSelferValueTypeMap1234 { + yyl657 := r.ReadMapStart() + if yyl657 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl657, d) + } + } else if yyct657 == codecSelferValueTypeArray1234 { + yyl657 := r.ReadArrayStart() + if yyl657 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl657, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RBDVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys658Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys658Slc + var yyhl658 bool = l >= 0 + for yyj658 := 0; ; yyj658++ { + if yyhl658 { + if yyj658 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys658Slc = r.DecodeBytes(yys658Slc, true, true) + yys658 := string(yys658Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys658 { + case "monitors": + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv659 := &x.CephMonitors + yym660 := z.DecBinary() + _ = yym660 + if false { + } else { + z.F.DecSliceStringX(yyv659, false, d) + } + } + case "image": + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + x.RBDImage = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "pool": + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + x.RBDPool = string(r.DecodeString()) + } + case "user": + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + x.RadosUser = string(r.DecodeString()) + } + case "keyring": + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + x.Keyring = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys658) + } // end switch yys658 + } // end for yyj658 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RBDVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj668 int + var yyb668 bool + var yyhl668 bool = l >= 0 + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CephMonitors = nil + } else { + yyv669 := &x.CephMonitors + yym670 := z.DecBinary() + _ = yym670 + if false { + } else { + z.F.DecSliceStringX(yyv669, false, d) + } + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDImage = "" + } else { + x.RBDImage = string(r.DecodeString()) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RBDPool = "" + } else { + x.RBDPool = string(r.DecodeString()) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RadosUser = "" + } else { + x.RadosUser = string(r.DecodeString()) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Keyring = "" + } else { + x.Keyring = string(r.DecodeString()) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj668++ + if yyhl668 { + yyb668 = yyj668 > l + } else { + yyb668 = r.CheckBreak() + } + if yyb668 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj668-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CinderVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym678 := z.EncBinary() + _ = yym678 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep679 := !z.EncBinary() + yy2arr679 := z.EncBasicHandle().StructToArray + var yyq679 [3]bool + _, _, _ = yysep679, yyq679, yy2arr679 + const yyr679 bool = false + yyq679[1] = x.FSType != "" + yyq679[2] = x.ReadOnly != false + var yynn679 int + if yyr679 || yy2arr679 { + r.EncodeArrayStart(3) + } else { + yynn679 = 1 + for _, b := range yyq679 { + if b { + yynn679++ + } + } + r.EncodeMapStart(yynn679) + yynn679 = 0 + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym681 := z.EncBinary() + _ = yym681 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym682 := z.EncBinary() + _ = yym682 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[1] { + yym684 := z.EncBinary() + _ = yym684 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq679[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym685 := z.EncBinary() + _ = yym685 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[2] { + yym687 := z.EncBinary() + _ = yym687 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq679[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym688 := z.EncBinary() + _ = yym688 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CinderVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym689 := z.DecBinary() + _ = yym689 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct690 := r.ContainerType() + if yyct690 == codecSelferValueTypeMap1234 { + yyl690 := r.ReadMapStart() + if yyl690 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl690, d) + } + } else if yyct690 == codecSelferValueTypeArray1234 { + yyl690 := r.ReadArrayStart() + if yyl690 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl690, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CinderVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys691Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys691Slc + var yyhl691 bool = l >= 0 + for yyj691 := 0; ; yyj691++ { + if yyhl691 { + if yyj691 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys691Slc = r.DecodeBytes(yys691Slc, true, true) + yys691 := string(yys691Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys691 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys691) + } // end switch yys691 + } // end for yyj691 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CinderVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj695 int + var yyb695 bool + var yyhl695 bool = l >= 0 + yyj695++ + if yyhl695 { + yyb695 = yyj695 > l + } else { + yyb695 = r.CheckBreak() + } + if yyb695 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + yyj695++ + if yyhl695 { + yyb695 = yyj695 > l + } else { + yyb695 = r.CheckBreak() + } + if yyb695 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj695++ + if yyhl695 { + yyb695 = yyj695 > l + } else { + yyb695 = r.CheckBreak() + } + if yyb695 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj695++ + if yyhl695 { + yyb695 = yyj695 > l + } else { + yyb695 = r.CheckBreak() + } + if yyb695 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj695-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CephFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym699 := z.EncBinary() + _ = yym699 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep700 := !z.EncBinary() + yy2arr700 := z.EncBasicHandle().StructToArray + var yyq700 [6]bool + _, _, _ = yysep700, yyq700, yy2arr700 + const yyr700 bool = false + yyq700[1] = x.Path != "" + yyq700[2] = x.User != "" + yyq700[3] = x.SecretFile != "" + yyq700[4] = x.SecretRef != nil + yyq700[5] = x.ReadOnly != false + var yynn700 int + if yyr700 || yy2arr700 { + r.EncodeArrayStart(6) + } else { + yynn700 = 1 + for _, b := range yyq700 { + if b { + yynn700++ + } + } + r.EncodeMapStart(yynn700) + yynn700 = 0 + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym702 := z.EncBinary() + _ = yym702 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("monitors")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Monitors == nil { + r.EncodeNil() + } else { + yym703 := z.EncBinary() + _ = yym703 + if false { + } else { + z.F.EncSliceStringV(x.Monitors, false, e) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq700[1] { + yym705 := z.EncBinary() + _ = yym705 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq700[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym706 := z.EncBinary() + _ = yym706 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq700[2] { + yym708 := z.EncBinary() + _ = yym708 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq700[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym709 := z.EncBinary() + _ = yym709 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq700[3] { + yym711 := z.EncBinary() + _ = yym711 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq700[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretFile")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym712 := z.EncBinary() + _ = yym712 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretFile)) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq700[4] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq700[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq700[5] { + yym715 := z.EncBinary() + _ = yym715 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq700[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym716 := z.EncBinary() + _ = yym716 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr700 || yy2arr700 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CephFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym717 := z.DecBinary() + _ = yym717 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct718 := r.ContainerType() + if yyct718 == codecSelferValueTypeMap1234 { + yyl718 := r.ReadMapStart() + if yyl718 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl718, d) + } + } else if yyct718 == codecSelferValueTypeArray1234 { + yyl718 := r.ReadArrayStart() + if yyl718 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl718, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys719Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys719Slc + var yyhl719 bool = l >= 0 + for yyj719 := 0; ; yyj719++ { + if yyhl719 { + if yyj719 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys719Slc = r.DecodeBytes(yys719Slc, true, true) + yys719 := string(yys719Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys719 { + case "monitors": + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv720 := &x.Monitors + yym721 := z.DecBinary() + _ = yym721 + if false { + } else { + z.F.DecSliceStringX(yyv720, false, d) + } + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "secretFile": + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + x.SecretFile = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys719) + } // end switch yys719 + } // end for yyj719 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CephFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj727 int + var yyb727 bool + var yyhl727 bool = l >= 0 + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Monitors = nil + } else { + yyv728 := &x.Monitors + yym729 := z.DecBinary() + _ = yym729 + if false { + } else { + z.F.DecSliceStringX(yyv728, false, d) + } + } + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretFile = "" + } else { + x.SecretFile = string(r.DecodeString()) + } + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj727++ + if yyhl727 { + yyb727 = yyj727 > l + } else { + yyb727 = r.CheckBreak() + } + if yyb727 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj727-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlockerVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym735 := z.EncBinary() + _ = yym735 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep736 := !z.EncBinary() + yy2arr736 := z.EncBasicHandle().StructToArray + var yyq736 [1]bool + _, _, _ = yysep736, yyq736, yy2arr736 + const yyr736 bool = false + var yynn736 int + if yyr736 || yy2arr736 { + r.EncodeArrayStart(1) + } else { + yynn736 = 1 + for _, b := range yyq736 { + if b { + yynn736++ + } + } + r.EncodeMapStart(yynn736) + yynn736 = 0 + } + if yyr736 || yy2arr736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym738 := z.EncBinary() + _ = yym738 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("datasetName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym739 := z.EncBinary() + _ = yym739 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DatasetName)) + } + } + if yyr736 || yy2arr736 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlockerVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym740 := z.DecBinary() + _ = yym740 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct741 := r.ContainerType() + if yyct741 == codecSelferValueTypeMap1234 { + yyl741 := r.ReadMapStart() + if yyl741 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl741, d) + } + } else if yyct741 == codecSelferValueTypeArray1234 { + yyl741 := r.ReadArrayStart() + if yyl741 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl741, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys742Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys742Slc + var yyhl742 bool = l >= 0 + for yyj742 := 0; ; yyj742++ { + if yyhl742 { + if yyj742 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys742Slc = r.DecodeBytes(yys742Slc, true, true) + yys742 := string(yys742Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys742 { + case "datasetName": + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + x.DatasetName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys742) + } // end switch yys742 + } // end for yyj742 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlockerVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj744 int + var yyb744 bool + var yyhl744 bool = l >= 0 + yyj744++ + if yyhl744 { + yyb744 = yyj744 > l + } else { + yyb744 = r.CheckBreak() + } + if yyb744 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DatasetName = "" + } else { + x.DatasetName = string(r.DecodeString()) + } + for { + yyj744++ + if yyhl744 { + yyb744 = yyj744 > l + } else { + yyb744 = r.CheckBreak() + } + if yyb744 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj744-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x StorageMedium) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym746 := z.EncBinary() + _ = yym746 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *StorageMedium) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym747 := z.DecBinary() + _ = yym747 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Protocol) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym748 := z.EncBinary() + _ = yym748 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Protocol) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym749 := z.DecBinary() + _ = yym749 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym750 := z.EncBinary() + _ = yym750 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep751 := !z.EncBinary() + yy2arr751 := z.EncBasicHandle().StructToArray + var yyq751 [4]bool + _, _, _ = yysep751, yyq751, yy2arr751 + const yyr751 bool = false + yyq751[1] = x.FSType != "" + yyq751[2] = x.Partition != 0 + yyq751[3] = x.ReadOnly != false + var yynn751 int + if yyr751 || yy2arr751 { + r.EncodeArrayStart(4) + } else { + yynn751 = 1 + for _, b := range yyq751 { + if b { + yynn751++ + } + } + r.EncodeMapStart(yynn751) + yynn751 = 0 + } + if yyr751 || yy2arr751 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym753 := z.EncBinary() + _ = yym753 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("pdName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym754 := z.EncBinary() + _ = yym754 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PDName)) + } + } + if yyr751 || yy2arr751 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq751[1] { + yym756 := z.EncBinary() + _ = yym756 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq751[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym757 := z.EncBinary() + _ = yym757 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr751 || yy2arr751 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq751[2] { + yym759 := z.EncBinary() + _ = yym759 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq751[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym760 := z.EncBinary() + _ = yym760 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr751 || yy2arr751 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq751[3] { + yym762 := z.EncBinary() + _ = yym762 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq751[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym763 := z.EncBinary() + _ = yym763 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr751 || yy2arr751 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GCEPersistentDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym764 := z.DecBinary() + _ = yym764 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct765 := r.ContainerType() + if yyct765 == codecSelferValueTypeMap1234 { + yyl765 := r.ReadMapStart() + if yyl765 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl765, d) + } + } else if yyct765 == codecSelferValueTypeArray1234 { + yyl765 := r.ReadArrayStart() + if yyl765 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl765, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys766Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys766Slc + var yyhl766 bool = l >= 0 + for yyj766 := 0; ; yyj766++ { + if yyhl766 { + if yyj766 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys766Slc = r.DecodeBytes(yys766Slc, true, true) + yys766 := string(yys766Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys766 { + case "pdName": + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + x.PDName = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys766) + } // end switch yys766 + } // end for yyj766 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GCEPersistentDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj771 int + var yyb771 bool + var yyhl771 bool = l >= 0 + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PDName = "" + } else { + x.PDName = string(r.DecodeString()) + } + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj771-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *QuobyteVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym776 := z.EncBinary() + _ = yym776 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep777 := !z.EncBinary() + yy2arr777 := z.EncBasicHandle().StructToArray + var yyq777 [5]bool + _, _, _ = yysep777, yyq777, yy2arr777 + const yyr777 bool = false + yyq777[2] = x.ReadOnly != false + yyq777[3] = x.User != "" + yyq777[4] = x.Group != "" + var yynn777 int + if yyr777 || yy2arr777 { + r.EncodeArrayStart(5) + } else { + yynn777 = 2 + for _, b := range yyq777 { + if b { + yynn777++ + } + } + r.EncodeMapStart(yynn777) + yynn777 = 0 + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym779 := z.EncBinary() + _ = yym779 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("registry")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym780 := z.EncBinary() + _ = yym780 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Registry)) + } + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym782 := z.EncBinary() + _ = yym782 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volume")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym783 := z.EncBinary() + _ = yym783 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Volume)) + } + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq777[2] { + yym785 := z.EncBinary() + _ = yym785 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq777[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym786 := z.EncBinary() + _ = yym786 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq777[3] { + yym788 := z.EncBinary() + _ = yym788 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq777[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym789 := z.EncBinary() + _ = yym789 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq777[4] { + yym791 := z.EncBinary() + _ = yym791 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq777[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym792 := z.EncBinary() + _ = yym792 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr777 || yy2arr777 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *QuobyteVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym793 := z.DecBinary() + _ = yym793 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct794 := r.ContainerType() + if yyct794 == codecSelferValueTypeMap1234 { + yyl794 := r.ReadMapStart() + if yyl794 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl794, d) + } + } else if yyct794 == codecSelferValueTypeArray1234 { + yyl794 := r.ReadArrayStart() + if yyl794 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl794, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys795Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys795Slc + var yyhl795 bool = l >= 0 + for yyj795 := 0; ; yyj795++ { + if yyhl795 { + if yyj795 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys795Slc = r.DecodeBytes(yys795Slc, true, true) + yys795 := string(yys795Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys795 { + case "registry": + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + x.Registry = string(r.DecodeString()) + } + case "volume": + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + x.Volume = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys795) + } // end switch yys795 + } // end for yyj795 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *QuobyteVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj801 int + var yyb801 bool + var yyhl801 bool = l >= 0 + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Registry = "" + } else { + x.Registry = string(r.DecodeString()) + } + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volume = "" + } else { + x.Volume = string(r.DecodeString()) + } + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + for { + yyj801++ + if yyhl801 { + yyb801 = yyj801 > l + } else { + yyb801 = r.CheckBreak() + } + if yyb801 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj801-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FlexVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym807 := z.EncBinary() + _ = yym807 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep808 := !z.EncBinary() + yy2arr808 := z.EncBasicHandle().StructToArray + var yyq808 [5]bool + _, _, _ = yysep808, yyq808, yy2arr808 + const yyr808 bool = false + yyq808[1] = x.FSType != "" + yyq808[2] = x.SecretRef != nil + yyq808[3] = x.ReadOnly != false + yyq808[4] = len(x.Options) != 0 + var yynn808 int + if yyr808 || yy2arr808 { + r.EncodeArrayStart(5) + } else { + yynn808 = 1 + for _, b := range yyq808 { + if b { + yynn808++ + } + } + r.EncodeMapStart(yynn808) + yynn808 = 0 + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym810 := z.EncBinary() + _ = yym810 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("driver")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym811 := z.EncBinary() + _ = yym811 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Driver)) + } + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq808[1] { + yym813 := z.EncBinary() + _ = yym813 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq808[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym814 := z.EncBinary() + _ = yym814 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq808[2] { + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq808[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretRef == nil { + r.EncodeNil() + } else { + x.SecretRef.CodecEncodeSelf(e) + } + } + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq808[3] { + yym817 := z.EncBinary() + _ = yym817 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq808[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym818 := z.EncBinary() + _ = yym818 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq808[4] { + if x.Options == nil { + r.EncodeNil() + } else { + yym820 := z.EncBinary() + _ = yym820 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq808[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("options")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Options == nil { + r.EncodeNil() + } else { + yym821 := z.EncBinary() + _ = yym821 + if false { + } else { + z.F.EncMapStringStringV(x.Options, false, e) + } + } + } + } + if yyr808 || yy2arr808 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FlexVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym822 := z.DecBinary() + _ = yym822 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct823 := r.ContainerType() + if yyct823 == codecSelferValueTypeMap1234 { + yyl823 := r.ReadMapStart() + if yyl823 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl823, d) + } + } else if yyct823 == codecSelferValueTypeArray1234 { + yyl823 := r.ReadArrayStart() + if yyl823 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl823, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FlexVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys824Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys824Slc + var yyhl824 bool = l >= 0 + for yyj824 := 0; ; yyj824++ { + if yyhl824 { + if yyj824 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys824Slc = r.DecodeBytes(yys824Slc, true, true) + yys824 := string(yys824Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys824 { + case "driver": + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + x.Driver = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "secretRef": + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "options": + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv829 := &x.Options + yym830 := z.DecBinary() + _ = yym830 + if false { + } else { + z.F.DecMapStringStringX(yyv829, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys824) + } // end switch yys824 + } // end for yyj824 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FlexVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj831 int + var yyb831 bool + var yyhl831 bool = l >= 0 + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Driver = "" + } else { + x.Driver = string(r.DecodeString()) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretRef != nil { + x.SecretRef = nil + } + } else { + if x.SecretRef == nil { + x.SecretRef = new(LocalObjectReference) + } + x.SecretRef.CodecDecodeSelf(d) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Options = nil + } else { + yyv836 := &x.Options + yym837 := z.DecBinary() + _ = yym837 + if false { + } else { + z.F.DecMapStringStringX(yyv836, false, d) + } + } + for { + yyj831++ + if yyhl831 { + yyb831 = yyj831 > l + } else { + yyb831 = r.CheckBreak() + } + if yyb831 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj831-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym838 := z.EncBinary() + _ = yym838 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep839 := !z.EncBinary() + yy2arr839 := z.EncBasicHandle().StructToArray + var yyq839 [4]bool + _, _, _ = yysep839, yyq839, yy2arr839 + const yyr839 bool = false + yyq839[1] = x.FSType != "" + yyq839[2] = x.Partition != 0 + yyq839[3] = x.ReadOnly != false + var yynn839 int + if yyr839 || yy2arr839 { + r.EncodeArrayStart(4) + } else { + yynn839 = 1 + for _, b := range yyq839 { + if b { + yynn839++ + } + } + r.EncodeMapStart(yynn839) + yynn839 = 0 + } + if yyr839 || yy2arr839 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym841 := z.EncBinary() + _ = yym841 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym842 := z.EncBinary() + _ = yym842 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumeID)) + } + } + if yyr839 || yy2arr839 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq839[1] { + yym844 := z.EncBinary() + _ = yym844 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq839[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym845 := z.EncBinary() + _ = yym845 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr839 || yy2arr839 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq839[2] { + yym847 := z.EncBinary() + _ = yym847 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq839[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("partition")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym848 := z.EncBinary() + _ = yym848 + if false { + } else { + r.EncodeInt(int64(x.Partition)) + } + } + } + if yyr839 || yy2arr839 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq839[3] { + yym850 := z.EncBinary() + _ = yym850 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq839[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym851 := z.EncBinary() + _ = yym851 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr839 || yy2arr839 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym852 := z.DecBinary() + _ = yym852 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct853 := r.ContainerType() + if yyct853 == codecSelferValueTypeMap1234 { + yyl853 := r.ReadMapStart() + if yyl853 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl853, d) + } + } else if yyct853 == codecSelferValueTypeArray1234 { + yyl853 := r.ReadArrayStart() + if yyl853 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl853, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys854Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys854Slc + var yyhl854 bool = l >= 0 + for yyj854 := 0; ; yyj854++ { + if yyhl854 { + if yyj854 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys854Slc = r.DecodeBytes(yys854Slc, true, true) + yys854 := string(yys854Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys854 { + case "volumeID": + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "partition": + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys854) + } // end switch yys854 + } // end for yyj854 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AWSElasticBlockStoreVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj859 int + var yyb859 bool + var yyhl859 bool = l >= 0 + yyj859++ + if yyhl859 { + yyb859 = yyj859 > l + } else { + yyb859 = r.CheckBreak() + } + if yyb859 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeID = "" + } else { + x.VolumeID = string(r.DecodeString()) + } + yyj859++ + if yyhl859 { + yyb859 = yyj859 > l + } else { + yyb859 = r.CheckBreak() + } + if yyb859 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj859++ + if yyhl859 { + yyb859 = yyj859 > l + } else { + yyb859 = r.CheckBreak() + } + if yyb859 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Partition = 0 + } else { + x.Partition = int32(r.DecodeInt(32)) + } + yyj859++ + if yyhl859 { + yyb859 = yyj859 > l + } else { + yyb859 = r.CheckBreak() + } + if yyb859 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj859++ + if yyhl859 { + yyb859 = yyj859 > l + } else { + yyb859 = r.CheckBreak() + } + if yyb859 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj859-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *GitRepoVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym864 := z.EncBinary() + _ = yym864 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep865 := !z.EncBinary() + yy2arr865 := z.EncBasicHandle().StructToArray + var yyq865 [3]bool + _, _, _ = yysep865, yyq865, yy2arr865 + const yyr865 bool = false + yyq865[1] = x.Revision != "" + yyq865[2] = x.Directory != "" + var yynn865 int + if yyr865 || yy2arr865 { + r.EncodeArrayStart(3) + } else { + yynn865 = 1 + for _, b := range yyq865 { + if b { + yynn865++ + } + } + r.EncodeMapStart(yynn865) + yynn865 = 0 + } + if yyr865 || yy2arr865 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym867 := z.EncBinary() + _ = yym867 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("repository")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym868 := z.EncBinary() + _ = yym868 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Repository)) + } + } + if yyr865 || yy2arr865 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq865[1] { + yym870 := z.EncBinary() + _ = yym870 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq865[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym871 := z.EncBinary() + _ = yym871 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Revision)) + } + } + } + if yyr865 || yy2arr865 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq865[2] { + yym873 := z.EncBinary() + _ = yym873 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq865[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("directory")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym874 := z.EncBinary() + _ = yym874 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Directory)) + } + } + } + if yyr865 || yy2arr865 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *GitRepoVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym875 := z.DecBinary() + _ = yym875 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct876 := r.ContainerType() + if yyct876 == codecSelferValueTypeMap1234 { + yyl876 := r.ReadMapStart() + if yyl876 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl876, d) + } + } else if yyct876 == codecSelferValueTypeArray1234 { + yyl876 := r.ReadArrayStart() + if yyl876 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl876, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys877Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys877Slc + var yyhl877 bool = l >= 0 + for yyj877 := 0; ; yyj877++ { + if yyhl877 { + if yyj877 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys877Slc = r.DecodeBytes(yys877Slc, true, true) + yys877 := string(yys877Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys877 { + case "repository": + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + x.Repository = string(r.DecodeString()) + } + case "revision": + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + x.Revision = string(r.DecodeString()) + } + case "directory": + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + x.Directory = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys877) + } // end switch yys877 + } // end for yyj877 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *GitRepoVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj881 int + var yyb881 bool + var yyhl881 bool = l >= 0 + yyj881++ + if yyhl881 { + yyb881 = yyj881 > l + } else { + yyb881 = r.CheckBreak() + } + if yyb881 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Repository = "" + } else { + x.Repository = string(r.DecodeString()) + } + yyj881++ + if yyhl881 { + yyb881 = yyj881 > l + } else { + yyb881 = r.CheckBreak() + } + if yyb881 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = "" + } else { + x.Revision = string(r.DecodeString()) + } + yyj881++ + if yyhl881 { + yyb881 = yyj881 > l + } else { + yyb881 = r.CheckBreak() + } + if yyb881 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Directory = "" + } else { + x.Directory = string(r.DecodeString()) + } + for { + yyj881++ + if yyhl881 { + yyb881 = yyj881 > l + } else { + yyb881 = r.CheckBreak() + } + if yyb881 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj881-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym885 := z.EncBinary() + _ = yym885 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep886 := !z.EncBinary() + yy2arr886 := z.EncBasicHandle().StructToArray + var yyq886 [3]bool + _, _, _ = yysep886, yyq886, yy2arr886 + const yyr886 bool = false + yyq886[0] = x.SecretName != "" + yyq886[1] = len(x.Items) != 0 + yyq886[2] = x.DefaultMode != nil + var yynn886 int + if yyr886 || yy2arr886 { + r.EncodeArrayStart(3) + } else { + yynn886 = 0 + for _, b := range yyq886 { + if b { + yynn886++ + } + } + r.EncodeMapStart(yynn886) + yynn886 = 0 + } + if yyr886 || yy2arr886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq886[0] { + yym888 := z.EncBinary() + _ = yym888 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq886[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym889 := z.EncBinary() + _ = yym889 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr886 || yy2arr886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq886[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym891 := z.EncBinary() + _ = yym891 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq886[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym892 := z.EncBinary() + _ = yym892 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr886 || yy2arr886 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq886[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy894 := *x.DefaultMode + yym895 := z.EncBinary() + _ = yym895 + if false { + } else { + r.EncodeInt(int64(yy894)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq886[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy896 := *x.DefaultMode + yym897 := z.EncBinary() + _ = yym897 + if false { + } else { + r.EncodeInt(int64(yy896)) + } + } + } + } + if yyr886 || yy2arr886 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym898 := z.DecBinary() + _ = yym898 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct899 := r.ContainerType() + if yyct899 == codecSelferValueTypeMap1234 { + yyl899 := r.ReadMapStart() + if yyl899 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl899, d) + } + } else if yyct899 == codecSelferValueTypeArray1234 { + yyl899 := r.ReadArrayStart() + if yyl899 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl899, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys900Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys900Slc + var yyhl900 bool = l >= 0 + for yyj900 := 0; ; yyj900++ { + if yyhl900 { + if yyj900 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys900Slc = r.DecodeBytes(yys900Slc, true, true) + yys900 := string(yys900Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys900 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv902 := &x.Items + yym903 := z.DecBinary() + _ = yym903 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv902), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym905 := z.DecBinary() + _ = yym905 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys900) + } // end switch yys900 + } // end for yyj900 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj906 int + var yyb906 bool + var yyhl906 bool = l >= 0 + yyj906++ + if yyhl906 { + yyb906 = yyj906 > l + } else { + yyb906 = r.CheckBreak() + } + if yyb906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + yyj906++ + if yyhl906 { + yyb906 = yyj906 > l + } else { + yyb906 = r.CheckBreak() + } + if yyb906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv908 := &x.Items + yym909 := z.DecBinary() + _ = yym909 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv908), d) + } + } + yyj906++ + if yyhl906 { + yyb906 = yyj906 > l + } else { + yyb906 = r.CheckBreak() + } + if yyb906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym911 := z.DecBinary() + _ = yym911 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj906++ + if yyhl906 { + yyb906 = yyj906 > l + } else { + yyb906 = r.CheckBreak() + } + if yyb906 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj906-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NFSVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym912 := z.EncBinary() + _ = yym912 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep913 := !z.EncBinary() + yy2arr913 := z.EncBasicHandle().StructToArray + var yyq913 [3]bool + _, _, _ = yysep913, yyq913, yy2arr913 + const yyr913 bool = false + yyq913[2] = x.ReadOnly != false + var yynn913 int + if yyr913 || yy2arr913 { + r.EncodeArrayStart(3) + } else { + yynn913 = 2 + for _, b := range yyq913 { + if b { + yynn913++ + } + } + r.EncodeMapStart(yynn913) + yynn913 = 0 + } + if yyr913 || yy2arr913 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym915 := z.EncBinary() + _ = yym915 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("server")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym916 := z.EncBinary() + _ = yym916 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Server)) + } + } + if yyr913 || yy2arr913 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym918 := z.EncBinary() + _ = yym918 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym919 := z.EncBinary() + _ = yym919 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr913 || yy2arr913 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq913[2] { + yym921 := z.EncBinary() + _ = yym921 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq913[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym922 := z.EncBinary() + _ = yym922 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr913 || yy2arr913 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NFSVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym923 := z.DecBinary() + _ = yym923 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct924 := r.ContainerType() + if yyct924 == codecSelferValueTypeMap1234 { + yyl924 := r.ReadMapStart() + if yyl924 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl924, d) + } + } else if yyct924 == codecSelferValueTypeArray1234 { + yyl924 := r.ReadArrayStart() + if yyl924 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl924, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NFSVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys925Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys925Slc + var yyhl925 bool = l >= 0 + for yyj925 := 0; ; yyj925++ { + if yyhl925 { + if yyj925 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys925Slc = r.DecodeBytes(yys925Slc, true, true) + yys925 := string(yys925Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys925 { + case "server": + if r.TryDecodeAsNil() { + x.Server = "" + } else { + x.Server = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys925) + } // end switch yys925 + } // end for yyj925 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NFSVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj929 int + var yyb929 bool + var yyhl929 bool = l >= 0 + yyj929++ + if yyhl929 { + yyb929 = yyj929 > l + } else { + yyb929 = r.CheckBreak() + } + if yyb929 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Server = "" + } else { + x.Server = string(r.DecodeString()) + } + yyj929++ + if yyhl929 { + yyb929 = yyj929 > l + } else { + yyb929 = r.CheckBreak() + } + if yyb929 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj929++ + if yyhl929 { + yyb929 = yyj929 > l + } else { + yyb929 = r.CheckBreak() + } + if yyb929 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj929++ + if yyhl929 { + yyb929 = yyj929 > l + } else { + yyb929 = r.CheckBreak() + } + if yyb929 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj929-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ISCSIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym933 := z.EncBinary() + _ = yym933 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep934 := !z.EncBinary() + yy2arr934 := z.EncBasicHandle().StructToArray + var yyq934 [6]bool + _, _, _ = yysep934, yyq934, yy2arr934 + const yyr934 bool = false + yyq934[3] = x.ISCSIInterface != "" + yyq934[4] = x.FSType != "" + yyq934[5] = x.ReadOnly != false + var yynn934 int + if yyr934 || yy2arr934 { + r.EncodeArrayStart(6) + } else { + yynn934 = 3 + for _, b := range yyq934 { + if b { + yynn934++ + } + } + r.EncodeMapStart(yynn934) + yynn934 = 0 + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym936 := z.EncBinary() + _ = yym936 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPortal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym937 := z.EncBinary() + _ = yym937 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetPortal)) + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym939 := z.EncBinary() + _ = yym939 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iqn")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym940 := z.EncBinary() + _ = yym940 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IQN)) + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym942 := z.EncBinary() + _ = yym942 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym943 := z.EncBinary() + _ = yym943 + if false { + } else { + r.EncodeInt(int64(x.Lun)) + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq934[3] { + yym945 := z.EncBinary() + _ = yym945 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq934[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("iscsiInterface")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym946 := z.EncBinary() + _ = yym946 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ISCSIInterface)) + } + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq934[4] { + yym948 := z.EncBinary() + _ = yym948 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq934[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym949 := z.EncBinary() + _ = yym949 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq934[5] { + yym951 := z.EncBinary() + _ = yym951 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq934[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym952 := z.EncBinary() + _ = yym952 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr934 || yy2arr934 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ISCSIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym953 := z.DecBinary() + _ = yym953 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct954 := r.ContainerType() + if yyct954 == codecSelferValueTypeMap1234 { + yyl954 := r.ReadMapStart() + if yyl954 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl954, d) + } + } else if yyct954 == codecSelferValueTypeArray1234 { + yyl954 := r.ReadArrayStart() + if yyl954 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl954, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys955Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys955Slc + var yyhl955 bool = l >= 0 + for yyj955 := 0; ; yyj955++ { + if yyhl955 { + if yyj955 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys955Slc = r.DecodeBytes(yys955Slc, true, true) + yys955 := string(yys955Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys955 { + case "targetPortal": + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + x.TargetPortal = string(r.DecodeString()) + } + case "iqn": + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + x.IQN = string(r.DecodeString()) + } + case "lun": + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + x.Lun = int32(r.DecodeInt(32)) + } + case "iscsiInterface": + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + x.ISCSIInterface = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys955) + } // end switch yys955 + } // end for yyj955 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ISCSIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj962 int + var yyb962 bool + var yyhl962 bool = l >= 0 + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPortal = "" + } else { + x.TargetPortal = string(r.DecodeString()) + } + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IQN = "" + } else { + x.IQN = string(r.DecodeString()) + } + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Lun = 0 + } else { + x.Lun = int32(r.DecodeInt(32)) + } + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ISCSIInterface = "" + } else { + x.ISCSIInterface = string(r.DecodeString()) + } + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj962++ + if yyhl962 { + yyb962 = yyj962 > l + } else { + yyb962 = r.CheckBreak() + } + if yyb962 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj962-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *FCVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym969 := z.EncBinary() + _ = yym969 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep970 := !z.EncBinary() + yy2arr970 := z.EncBasicHandle().StructToArray + var yyq970 [4]bool + _, _, _ = yysep970, yyq970, yy2arr970 + const yyr970 bool = false + yyq970[2] = x.FSType != "" + yyq970[3] = x.ReadOnly != false + var yynn970 int + if yyr970 || yy2arr970 { + r.EncodeArrayStart(4) + } else { + yynn970 = 2 + for _, b := range yyq970 { + if b { + yynn970++ + } + } + r.EncodeMapStart(yynn970) + yynn970 = 0 + } + if yyr970 || yy2arr970 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym972 := z.EncBinary() + _ = yym972 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetWWNs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetWWNs == nil { + r.EncodeNil() + } else { + yym973 := z.EncBinary() + _ = yym973 + if false { + } else { + z.F.EncSliceStringV(x.TargetWWNs, false, e) + } + } + } + if yyr970 || yy2arr970 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy975 := *x.Lun + yym976 := z.EncBinary() + _ = yym976 + if false { + } else { + r.EncodeInt(int64(yy975)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lun")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lun == nil { + r.EncodeNil() + } else { + yy977 := *x.Lun + yym978 := z.EncBinary() + _ = yym978 + if false { + } else { + r.EncodeInt(int64(yy977)) + } + } + } + if yyr970 || yy2arr970 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq970[2] { + yym980 := z.EncBinary() + _ = yym980 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq970[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym981 := z.EncBinary() + _ = yym981 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr970 || yy2arr970 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq970[3] { + yym983 := z.EncBinary() + _ = yym983 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq970[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym984 := z.EncBinary() + _ = yym984 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr970 || yy2arr970 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FCVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym985 := z.DecBinary() + _ = yym985 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct986 := r.ContainerType() + if yyct986 == codecSelferValueTypeMap1234 { + yyl986 := r.ReadMapStart() + if yyl986 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl986, d) + } + } else if yyct986 == codecSelferValueTypeArray1234 { + yyl986 := r.ReadArrayStart() + if yyl986 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl986, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FCVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys987Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys987Slc + var yyhl987 bool = l >= 0 + for yyj987 := 0; ; yyj987++ { + if yyhl987 { + if yyj987 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys987Slc = r.DecodeBytes(yys987Slc, true, true) + yys987 := string(yys987Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys987 { + case "targetWWNs": + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv988 := &x.TargetWWNs + yym989 := z.DecBinary() + _ = yym989 + if false { + } else { + z.F.DecSliceStringX(yyv988, false, d) + } + } + case "lun": + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym991 := z.DecBinary() + _ = yym991 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys987) + } // end switch yys987 + } // end for yyj987 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FCVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj994 int + var yyb994 bool + var yyhl994 bool = l >= 0 + yyj994++ + if yyhl994 { + yyb994 = yyj994 > l + } else { + yyb994 = r.CheckBreak() + } + if yyb994 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetWWNs = nil + } else { + yyv995 := &x.TargetWWNs + yym996 := z.DecBinary() + _ = yym996 + if false { + } else { + z.F.DecSliceStringX(yyv995, false, d) + } + } + yyj994++ + if yyhl994 { + yyb994 = yyj994 > l + } else { + yyb994 = r.CheckBreak() + } + if yyb994 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lun != nil { + x.Lun = nil + } + } else { + if x.Lun == nil { + x.Lun = new(int32) + } + yym998 := z.DecBinary() + _ = yym998 + if false { + } else { + *((*int32)(x.Lun)) = int32(r.DecodeInt(32)) + } + } + yyj994++ + if yyhl994 { + yyb994 = yyj994 > l + } else { + yyb994 = r.CheckBreak() + } + if yyb994 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + yyj994++ + if yyhl994 { + yyb994 = yyj994 > l + } else { + yyb994 = r.CheckBreak() + } + if yyb994 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj994++ + if yyhl994 { + yyb994 = yyj994 > l + } else { + yyb994 = r.CheckBreak() + } + if yyb994 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj994-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AzureFileVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1001 := z.EncBinary() + _ = yym1001 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1002 := !z.EncBinary() + yy2arr1002 := z.EncBasicHandle().StructToArray + var yyq1002 [3]bool + _, _, _ = yysep1002, yyq1002, yy2arr1002 + const yyr1002 bool = false + yyq1002[2] = x.ReadOnly != false + var yynn1002 int + if yyr1002 || yy2arr1002 { + r.EncodeArrayStart(3) + } else { + yynn1002 = 2 + for _, b := range yyq1002 { + if b { + yynn1002++ + } + } + r.EncodeMapStart(yynn1002) + yynn1002 = 0 + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1004 := z.EncBinary() + _ = yym1004 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1005 := z.EncBinary() + _ = yym1005 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1007 := z.EncBinary() + _ = yym1007 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("shareName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1008 := z.EncBinary() + _ = yym1008 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ShareName)) + } + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1002[2] { + yym1010 := z.EncBinary() + _ = yym1010 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1002[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1011 := z.EncBinary() + _ = yym1011 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr1002 || yy2arr1002 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureFileVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1012 := z.DecBinary() + _ = yym1012 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1013 := r.ContainerType() + if yyct1013 == codecSelferValueTypeMap1234 { + yyl1013 := r.ReadMapStart() + if yyl1013 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1013, d) + } + } else if yyct1013 == codecSelferValueTypeArray1234 { + yyl1013 := r.ReadArrayStart() + if yyl1013 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1013, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1014Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1014Slc + var yyhl1014 bool = l >= 0 + for yyj1014 := 0; ; yyj1014++ { + if yyhl1014 { + if yyj1014 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1014Slc = r.DecodeBytes(yys1014Slc, true, true) + yys1014 := string(yys1014Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1014 { + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + case "shareName": + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + x.ShareName = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1014) + } // end switch yys1014 + } // end for yyj1014 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureFileVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1018 int + var yyb1018 bool + var yyhl1018 bool = l >= 0 + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ShareName = "" + } else { + x.ShareName = string(r.DecodeString()) + } + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + for { + yyj1018++ + if yyhl1018 { + yyb1018 = yyj1018 > l + } else { + yyb1018 = r.CheckBreak() + } + if yyb1018 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1018-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1022 := z.EncBinary() + _ = yym1022 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1023 := !z.EncBinary() + yy2arr1023 := z.EncBasicHandle().StructToArray + var yyq1023 [2]bool + _, _, _ = yysep1023, yyq1023, yy2arr1023 + const yyr1023 bool = false + yyq1023[1] = x.FSType != "" + var yynn1023 int + if yyr1023 || yy2arr1023 { + r.EncodeArrayStart(2) + } else { + yynn1023 = 1 + for _, b := range yyq1023 { + if b { + yynn1023++ + } + } + r.EncodeMapStart(yynn1023) + yynn1023 = 0 + } + if yyr1023 || yy2arr1023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1025 := z.EncBinary() + _ = yym1025 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1026 := z.EncBinary() + _ = yym1026 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.VolumePath)) + } + } + if yyr1023 || yy2arr1023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1023[1] { + yym1028 := z.EncBinary() + _ = yym1028 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1023[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1029 := z.EncBinary() + _ = yym1029 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FSType)) + } + } + } + if yyr1023 || yy2arr1023 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1030 := z.DecBinary() + _ = yym1030 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1031 := r.ContainerType() + if yyct1031 == codecSelferValueTypeMap1234 { + yyl1031 := r.ReadMapStart() + if yyl1031 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1031, d) + } + } else if yyct1031 == codecSelferValueTypeArray1234 { + yyl1031 := r.ReadArrayStart() + if yyl1031 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1031, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1032Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1032Slc + var yyhl1032 bool = l >= 0 + for yyj1032 := 0; ; yyj1032++ { + if yyhl1032 { + if yyj1032 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1032Slc = r.DecodeBytes(yys1032Slc, true, true) + yys1032 := string(yys1032Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1032 { + case "volumePath": + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + x.VolumePath = string(r.DecodeString()) + } + case "fsType": + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1032) + } // end switch yys1032 + } // end for yyj1032 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VsphereVirtualDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1035 int + var yyb1035 bool + var yyhl1035 bool = l >= 0 + yyj1035++ + if yyhl1035 { + yyb1035 = yyj1035 > l + } else { + yyb1035 = r.CheckBreak() + } + if yyb1035 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumePath = "" + } else { + x.VolumePath = string(r.DecodeString()) + } + yyj1035++ + if yyhl1035 { + yyb1035 = yyj1035 > l + } else { + yyb1035 = r.CheckBreak() + } + if yyb1035 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSType = "" + } else { + x.FSType = string(r.DecodeString()) + } + for { + yyj1035++ + if yyhl1035 { + yyb1035 = yyj1035 > l + } else { + yyb1035 = r.CheckBreak() + } + if yyb1035 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1035-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x AzureDataDiskCachingMode) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1038 := z.EncBinary() + _ = yym1038 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *AzureDataDiskCachingMode) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1039 := z.DecBinary() + _ = yym1039 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AzureDiskVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1040 := z.EncBinary() + _ = yym1040 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1041 := !z.EncBinary() + yy2arr1041 := z.EncBasicHandle().StructToArray + var yyq1041 [5]bool + _, _, _ = yysep1041, yyq1041, yy2arr1041 + const yyr1041 bool = false + yyq1041[2] = x.CachingMode != nil + yyq1041[3] = x.FSType != nil + yyq1041[4] = x.ReadOnly != nil + var yynn1041 int + if yyr1041 || yy2arr1041 { + r.EncodeArrayStart(5) + } else { + yynn1041 = 2 + for _, b := range yyq1041 { + if b { + yynn1041++ + } + } + r.EncodeMapStart(yynn1041) + yynn1041 = 0 + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1043 := z.EncBinary() + _ = yym1043 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1044 := z.EncBinary() + _ = yym1044 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DiskName)) + } + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1046 := z.EncBinary() + _ = yym1046 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("diskURI")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1047 := z.EncBinary() + _ = yym1047 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DataDiskURI)) + } + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1041[2] { + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy1049 := *x.CachingMode + yy1049.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1041[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cachingMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CachingMode == nil { + r.EncodeNil() + } else { + yy1050 := *x.CachingMode + yy1050.CodecEncodeSelf(e) + } + } + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1041[3] { + if x.FSType == nil { + r.EncodeNil() + } else { + yy1052 := *x.FSType + yym1053 := z.EncBinary() + _ = yym1053 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1052)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1041[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsType")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSType == nil { + r.EncodeNil() + } else { + yy1054 := *x.FSType + yym1055 := z.EncBinary() + _ = yym1055 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1054)) + } + } + } + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1041[4] { + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy1057 := *x.ReadOnly + yym1058 := z.EncBinary() + _ = yym1058 + if false { + } else { + r.EncodeBool(bool(yy1057)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1041[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnly == nil { + r.EncodeNil() + } else { + yy1059 := *x.ReadOnly + yym1060 := z.EncBinary() + _ = yym1060 + if false { + } else { + r.EncodeBool(bool(yy1059)) + } + } + } + } + if yyr1041 || yy2arr1041 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AzureDiskVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1061 := z.DecBinary() + _ = yym1061 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1062 := r.ContainerType() + if yyct1062 == codecSelferValueTypeMap1234 { + yyl1062 := r.ReadMapStart() + if yyl1062 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1062, d) + } + } else if yyct1062 == codecSelferValueTypeArray1234 { + yyl1062 := r.ReadArrayStart() + if yyl1062 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1062, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1063Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1063Slc + var yyhl1063 bool = l >= 0 + for yyj1063 := 0; ; yyj1063++ { + if yyhl1063 { + if yyj1063 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1063Slc = r.DecodeBytes(yys1063Slc, true, true) + yys1063 := string(yys1063Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1063 { + case "diskName": + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + x.DiskName = string(r.DecodeString()) + } + case "diskURI": + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + x.DataDiskURI = string(r.DecodeString()) + } + case "cachingMode": + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + case "fsType": + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym1068 := z.DecBinary() + _ = yym1068 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + case "readOnly": + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym1070 := z.DecBinary() + _ = yym1070 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys1063) + } // end switch yys1063 + } // end for yyj1063 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AzureDiskVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1071 int + var yyb1071 bool + var yyhl1071 bool = l >= 0 + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DiskName = "" + } else { + x.DiskName = string(r.DecodeString()) + } + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DataDiskURI = "" + } else { + x.DataDiskURI = string(r.DecodeString()) + } + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CachingMode != nil { + x.CachingMode = nil + } + } else { + if x.CachingMode == nil { + x.CachingMode = new(AzureDataDiskCachingMode) + } + x.CachingMode.CodecDecodeSelf(d) + } + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSType != nil { + x.FSType = nil + } + } else { + if x.FSType == nil { + x.FSType = new(string) + } + yym1076 := z.DecBinary() + _ = yym1076 + if false { + } else { + *((*string)(x.FSType)) = r.DecodeString() + } + } + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnly != nil { + x.ReadOnly = nil + } + } else { + if x.ReadOnly == nil { + x.ReadOnly = new(bool) + } + yym1078 := z.DecBinary() + _ = yym1078 + if false { + } else { + *((*bool)(x.ReadOnly)) = r.DecodeBool() + } + } + for { + yyj1071++ + if yyhl1071 { + yyb1071 = yyj1071 > l + } else { + yyb1071 = r.CheckBreak() + } + if yyb1071 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1071-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1079 := z.EncBinary() + _ = yym1079 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1080 := !z.EncBinary() + yy2arr1080 := z.EncBasicHandle().StructToArray + var yyq1080 [3]bool + _, _, _ = yysep1080, yyq1080, yy2arr1080 + const yyr1080 bool = false + yyq1080[0] = x.Name != "" + yyq1080[1] = len(x.Items) != 0 + yyq1080[2] = x.DefaultMode != nil + var yynn1080 int + if yyr1080 || yy2arr1080 { + r.EncodeArrayStart(3) + } else { + yynn1080 = 0 + for _, b := range yyq1080 { + if b { + yynn1080++ + } + } + r.EncodeMapStart(yynn1080) + yynn1080 = 0 + } + if yyr1080 || yy2arr1080 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1080[0] { + yym1082 := z.EncBinary() + _ = yym1082 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1080[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1083 := z.EncBinary() + _ = yym1083 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr1080 || yy2arr1080 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1080[1] { + if x.Items == nil { + r.EncodeNil() + } else { + yym1085 := z.EncBinary() + _ = yym1085 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1080[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1086 := z.EncBinary() + _ = yym1086 + if false { + } else { + h.encSliceKeyToPath(([]KeyToPath)(x.Items), e) + } + } + } + } + if yyr1080 || yy2arr1080 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1080[2] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1088 := *x.DefaultMode + yym1089 := z.EncBinary() + _ = yym1089 + if false { + } else { + r.EncodeInt(int64(yy1088)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1080[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy1090 := *x.DefaultMode + yym1091 := z.EncBinary() + _ = yym1091 + if false { + } else { + r.EncodeInt(int64(yy1090)) + } + } + } + } + if yyr1080 || yy2arr1080 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1092 := z.DecBinary() + _ = yym1092 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1093 := r.ContainerType() + if yyct1093 == codecSelferValueTypeMap1234 { + yyl1093 := r.ReadMapStart() + if yyl1093 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1093, d) + } + } else if yyct1093 == codecSelferValueTypeArray1234 { + yyl1093 := r.ReadArrayStart() + if yyl1093 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1093, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1094Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1094Slc + var yyhl1094 bool = l >= 0 + for yyj1094 := 0; ; yyj1094++ { + if yyhl1094 { + if yyj1094 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1094Slc = r.DecodeBytes(yys1094Slc, true, true) + yys1094 := string(yys1094Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1094 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1096 := &x.Items + yym1097 := z.DecBinary() + _ = yym1097 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv1096), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1099 := z.DecBinary() + _ = yym1099 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1094) + } // end switch yys1094 + } // end for yyj1094 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1100 int + var yyb1100 bool + var yyhl1100 bool = l >= 0 + yyj1100++ + if yyhl1100 { + yyb1100 = yyj1100 > l + } else { + yyb1100 = r.CheckBreak() + } + if yyb1100 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1100++ + if yyhl1100 { + yyb1100 = yyj1100 > l + } else { + yyb1100 = r.CheckBreak() + } + if yyb1100 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1102 := &x.Items + yym1103 := z.DecBinary() + _ = yym1103 + if false { + } else { + h.decSliceKeyToPath((*[]KeyToPath)(yyv1102), d) + } + } + yyj1100++ + if yyhl1100 { + yyb1100 = yyj1100 > l + } else { + yyb1100 = r.CheckBreak() + } + if yyb1100 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym1105 := z.DecBinary() + _ = yym1105 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1100++ + if yyhl1100 { + yyb1100 = yyj1100 > l + } else { + yyb1100 = r.CheckBreak() + } + if yyb1100 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1100-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *KeyToPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1106 := z.EncBinary() + _ = yym1106 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1107 := !z.EncBinary() + yy2arr1107 := z.EncBasicHandle().StructToArray + var yyq1107 [3]bool + _, _, _ = yysep1107, yyq1107, yy2arr1107 + const yyr1107 bool = false + yyq1107[2] = x.Mode != nil + var yynn1107 int + if yyr1107 || yy2arr1107 { + r.EncodeArrayStart(3) + } else { + yynn1107 = 2 + for _, b := range yyq1107 { + if b { + yynn1107++ + } + } + r.EncodeMapStart(yynn1107) + yynn1107 = 0 + } + if yyr1107 || yy2arr1107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1109 := z.EncBinary() + _ = yym1109 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1110 := z.EncBinary() + _ = yym1110 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1107 || yy2arr1107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1112 := z.EncBinary() + _ = yym1112 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1113 := z.EncBinary() + _ = yym1113 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr1107 || yy2arr1107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1107[2] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy1115 := *x.Mode + yym1116 := z.EncBinary() + _ = yym1116 + if false { + } else { + r.EncodeInt(int64(yy1115)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1107[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy1117 := *x.Mode + yym1118 := z.EncBinary() + _ = yym1118 + if false { + } else { + r.EncodeInt(int64(yy1117)) + } + } + } + } + if yyr1107 || yy2arr1107 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *KeyToPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1119 := z.DecBinary() + _ = yym1119 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1120 := r.ContainerType() + if yyct1120 == codecSelferValueTypeMap1234 { + yyl1120 := r.ReadMapStart() + if yyl1120 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1120, d) + } + } else if yyct1120 == codecSelferValueTypeArray1234 { + yyl1120 := r.ReadArrayStart() + if yyl1120 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1120, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *KeyToPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1121Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1121Slc + var yyhl1121 bool = l >= 0 + for yyj1121 := 0; ; yyj1121++ { + if yyhl1121 { + if yyj1121 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1121Slc = r.DecodeBytes(yys1121Slc, true, true) + yys1121 := string(yys1121Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1121 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1125 := z.DecBinary() + _ = yym1125 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1121) + } // end switch yys1121 + } // end for yyj1121 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *KeyToPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1126 int + var yyb1126 bool + var yyhl1126 bool = l >= 0 + yyj1126++ + if yyhl1126 { + yyb1126 = yyj1126 > l + } else { + yyb1126 = r.CheckBreak() + } + if yyb1126 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1126++ + if yyhl1126 { + yyb1126 = yyj1126 > l + } else { + yyb1126 = r.CheckBreak() + } + if yyb1126 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1126++ + if yyhl1126 { + yyb1126 = yyj1126 > l + } else { + yyb1126 = r.CheckBreak() + } + if yyb1126 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym1130 := z.DecBinary() + _ = yym1130 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj1126++ + if yyhl1126 { + yyb1126 = yyj1126 > l + } else { + yyb1126 = r.CheckBreak() + } + if yyb1126 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1126-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1131 := z.EncBinary() + _ = yym1131 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1132 := !z.EncBinary() + yy2arr1132 := z.EncBasicHandle().StructToArray + var yyq1132 [5]bool + _, _, _ = yysep1132, yyq1132, yy2arr1132 + const yyr1132 bool = false + yyq1132[0] = x.Name != "" + yyq1132[1] = x.HostPort != 0 + yyq1132[3] = x.Protocol != "" + yyq1132[4] = x.HostIP != "" + var yynn1132 int + if yyr1132 || yy2arr1132 { + r.EncodeArrayStart(5) + } else { + yynn1132 = 1 + for _, b := range yyq1132 { + if b { + yynn1132++ + } + } + r.EncodeMapStart(yynn1132) + yynn1132 = 0 + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1132[0] { + yym1134 := z.EncBinary() + _ = yym1134 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1132[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1135 := z.EncBinary() + _ = yym1135 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1132[1] { + yym1137 := z.EncBinary() + _ = yym1137 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1132[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1138 := z.EncBinary() + _ = yym1138 + if false { + } else { + r.EncodeInt(int64(x.HostPort)) + } + } + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1140 := z.EncBinary() + _ = yym1140 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1141 := z.EncBinary() + _ = yym1141 + if false { + } else { + r.EncodeInt(int64(x.ContainerPort)) + } + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1132[3] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1132[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1132[4] { + yym1144 := z.EncBinary() + _ = yym1144 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1132[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1145 := z.EncBinary() + _ = yym1145 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr1132 || yy2arr1132 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1146 := z.DecBinary() + _ = yym1146 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1147 := r.ContainerType() + if yyct1147 == codecSelferValueTypeMap1234 { + yyl1147 := r.ReadMapStart() + if yyl1147 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1147, d) + } + } else if yyct1147 == codecSelferValueTypeArray1234 { + yyl1147 := r.ReadArrayStart() + if yyl1147 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1147, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1148Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1148Slc + var yyhl1148 bool = l >= 0 + for yyj1148 := 0; ; yyj1148++ { + if yyhl1148 { + if yyj1148 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1148Slc = r.DecodeBytes(yys1148Slc, true, true) + yys1148 := string(yys1148Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1148 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "hostPort": + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + x.HostPort = int32(r.DecodeInt(32)) + } + case "containerPort": + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + x.ContainerPort = int32(r.DecodeInt(32)) + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1148) + } // end switch yys1148 + } // end for yyj1148 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1154 int + var yyb1154 bool + var yyhl1154 bool = l >= 0 + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPort = 0 + } else { + x.HostPort = int32(r.DecodeInt(32)) + } + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerPort = 0 + } else { + x.ContainerPort = int32(r.DecodeInt(32)) + } + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + for { + yyj1154++ + if yyhl1154 { + yyb1154 = yyj1154 > l + } else { + yyb1154 = r.CheckBreak() + } + if yyb1154 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1154-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *VolumeMount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1160 := z.EncBinary() + _ = yym1160 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1161 := !z.EncBinary() + yy2arr1161 := z.EncBasicHandle().StructToArray + var yyq1161 [4]bool + _, _, _ = yysep1161, yyq1161, yy2arr1161 + const yyr1161 bool = false + yyq1161[1] = x.ReadOnly != false + yyq1161[3] = x.SubPath != "" + var yynn1161 int + if yyr1161 || yy2arr1161 { + r.EncodeArrayStart(4) + } else { + yynn1161 = 2 + for _, b := range yyq1161 { + if b { + yynn1161++ + } + } + r.EncodeMapStart(yynn1161) + yynn1161 = 0 + } + if yyr1161 || yy2arr1161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1163 := z.EncBinary() + _ = yym1163 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1164 := z.EncBinary() + _ = yym1164 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1161 || yy2arr1161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1161[1] { + yym1166 := z.EncBinary() + _ = yym1166 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1161[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnly")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1167 := z.EncBinary() + _ = yym1167 + if false { + } else { + r.EncodeBool(bool(x.ReadOnly)) + } + } + } + if yyr1161 || yy2arr1161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1169 := z.EncBinary() + _ = yym1169 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mountPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1170 := z.EncBinary() + _ = yym1170 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MountPath)) + } + } + if yyr1161 || yy2arr1161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1161[3] { + yym1172 := z.EncBinary() + _ = yym1172 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1161[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1173 := z.EncBinary() + _ = yym1173 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SubPath)) + } + } + } + if yyr1161 || yy2arr1161 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *VolumeMount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1174 := z.DecBinary() + _ = yym1174 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1175 := r.ContainerType() + if yyct1175 == codecSelferValueTypeMap1234 { + yyl1175 := r.ReadMapStart() + if yyl1175 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1175, d) + } + } else if yyct1175 == codecSelferValueTypeArray1234 { + yyl1175 := r.ReadArrayStart() + if yyl1175 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1175, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *VolumeMount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1176Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1176Slc + var yyhl1176 bool = l >= 0 + for yyj1176 := 0; ; yyj1176++ { + if yyhl1176 { + if yyj1176 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1176Slc = r.DecodeBytes(yys1176Slc, true, true) + yys1176 := string(yys1176Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1176 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "readOnly": + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + case "mountPath": + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + x.MountPath = string(r.DecodeString()) + } + case "subPath": + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + x.SubPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1176) + } // end switch yys1176 + } // end for yyj1176 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *VolumeMount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1181 int + var yyb1181 bool + var yyhl1181 bool = l >= 0 + yyj1181++ + if yyhl1181 { + yyb1181 = yyj1181 > l + } else { + yyb1181 = r.CheckBreak() + } + if yyb1181 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1181++ + if yyhl1181 { + yyb1181 = yyj1181 > l + } else { + yyb1181 = r.CheckBreak() + } + if yyb1181 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnly = false + } else { + x.ReadOnly = bool(r.DecodeBool()) + } + yyj1181++ + if yyhl1181 { + yyb1181 = yyj1181 > l + } else { + yyb1181 = r.CheckBreak() + } + if yyb1181 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MountPath = "" + } else { + x.MountPath = string(r.DecodeString()) + } + yyj1181++ + if yyhl1181 { + yyb1181 = yyj1181 > l + } else { + yyb1181 = r.CheckBreak() + } + if yyb1181 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SubPath = "" + } else { + x.SubPath = string(r.DecodeString()) + } + for { + yyj1181++ + if yyhl1181 { + yyb1181 = yyj1181 > l + } else { + yyb1181 = r.CheckBreak() + } + if yyb1181 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1181-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVar) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1186 := z.EncBinary() + _ = yym1186 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1187 := !z.EncBinary() + yy2arr1187 := z.EncBasicHandle().StructToArray + var yyq1187 [3]bool + _, _, _ = yysep1187, yyq1187, yy2arr1187 + const yyr1187 bool = false + yyq1187[1] = x.Value != "" + yyq1187[2] = x.ValueFrom != nil + var yynn1187 int + if yyr1187 || yy2arr1187 { + r.EncodeArrayStart(3) + } else { + yynn1187 = 1 + for _, b := range yyq1187 { + if b { + yynn1187++ + } + } + r.EncodeMapStart(yynn1187) + yynn1187 = 0 + } + if yyr1187 || yy2arr1187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1189 := z.EncBinary() + _ = yym1189 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1190 := z.EncBinary() + _ = yym1190 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1187 || yy2arr1187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1187[1] { + yym1192 := z.EncBinary() + _ = yym1192 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1187[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1193 := z.EncBinary() + _ = yym1193 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr1187 || yy2arr1187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1187[2] { + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1187[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("valueFrom")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ValueFrom == nil { + r.EncodeNil() + } else { + x.ValueFrom.CodecEncodeSelf(e) + } + } + } + if yyr1187 || yy2arr1187 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVar) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1195 := z.DecBinary() + _ = yym1195 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1196 := r.ContainerType() + if yyct1196 == codecSelferValueTypeMap1234 { + yyl1196 := r.ReadMapStart() + if yyl1196 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1196, d) + } + } else if yyct1196 == codecSelferValueTypeArray1234 { + yyl1196 := r.ReadArrayStart() + if yyl1196 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1196, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVar) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1197Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1197Slc + var yyhl1197 bool = l >= 0 + for yyj1197 := 0; ; yyj1197++ { + if yyhl1197 { + if yyj1197 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1197Slc = r.DecodeBytes(yys1197Slc, true, true) + yys1197 := string(yys1197Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1197 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "valueFrom": + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1197) + } // end switch yys1197 + } // end for yyj1197 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVar) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1201 int + var yyb1201 bool + var yyhl1201 bool = l >= 0 + yyj1201++ + if yyhl1201 { + yyb1201 = yyj1201 > l + } else { + yyb1201 = r.CheckBreak() + } + if yyb1201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1201++ + if yyhl1201 { + yyb1201 = yyj1201 > l + } else { + yyb1201 = r.CheckBreak() + } + if yyb1201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj1201++ + if yyhl1201 { + yyb1201 = yyj1201 > l + } else { + yyb1201 = r.CheckBreak() + } + if yyb1201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ValueFrom != nil { + x.ValueFrom = nil + } + } else { + if x.ValueFrom == nil { + x.ValueFrom = new(EnvVarSource) + } + x.ValueFrom.CodecDecodeSelf(d) + } + for { + yyj1201++ + if yyhl1201 { + yyb1201 = yyj1201 > l + } else { + yyb1201 = r.CheckBreak() + } + if yyb1201 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1201-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EnvVarSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1205 := z.EncBinary() + _ = yym1205 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1206 := !z.EncBinary() + yy2arr1206 := z.EncBasicHandle().StructToArray + var yyq1206 [4]bool + _, _, _ = yysep1206, yyq1206, yy2arr1206 + const yyr1206 bool = false + yyq1206[0] = x.FieldRef != nil + yyq1206[1] = x.ResourceFieldRef != nil + yyq1206[2] = x.ConfigMapKeyRef != nil + yyq1206[3] = x.SecretKeyRef != nil + var yynn1206 int + if yyr1206 || yy2arr1206 { + r.EncodeArrayStart(4) + } else { + yynn1206 = 0 + for _, b := range yyq1206 { + if b { + yynn1206++ + } + } + r.EncodeMapStart(yynn1206) + yynn1206 = 0 + } + if yyr1206 || yy2arr1206 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1206[0] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1206[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1206 || yy2arr1206 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1206[1] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1206[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr1206 || yy2arr1206 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1206[2] { + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1206[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("configMapKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ConfigMapKeyRef == nil { + r.EncodeNil() + } else { + x.ConfigMapKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr1206 || yy2arr1206 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1206[3] { + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1206[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretKeyRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecretKeyRef == nil { + r.EncodeNil() + } else { + x.SecretKeyRef.CodecEncodeSelf(e) + } + } + } + if yyr1206 || yy2arr1206 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EnvVarSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1211 := z.DecBinary() + _ = yym1211 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1212 := r.ContainerType() + if yyct1212 == codecSelferValueTypeMap1234 { + yyl1212 := r.ReadMapStart() + if yyl1212 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1212, d) + } + } else if yyct1212 == codecSelferValueTypeArray1234 { + yyl1212 := r.ReadArrayStart() + if yyl1212 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1212, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EnvVarSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1213Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1213Slc + var yyhl1213 bool = l >= 0 + for yyj1213 := 0; ; yyj1213++ { + if yyhl1213 { + if yyj1213 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1213Slc = r.DecodeBytes(yys1213Slc, true, true) + yys1213 := string(yys1213Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1213 { + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "configMapKeyRef": + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + case "secretKeyRef": + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1213) + } // end switch yys1213 + } // end for yyj1213 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EnvVarSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1218 int + var yyb1218 bool + var yyhl1218 bool = l >= 0 + yyj1218++ + if yyhl1218 { + yyb1218 = yyj1218 > l + } else { + yyb1218 = r.CheckBreak() + } + if yyb1218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj1218++ + if yyhl1218 { + yyb1218 = yyj1218 > l + } else { + yyb1218 = r.CheckBreak() + } + if yyb1218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj1218++ + if yyhl1218 { + yyb1218 = yyj1218 > l + } else { + yyb1218 = r.CheckBreak() + } + if yyb1218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ConfigMapKeyRef != nil { + x.ConfigMapKeyRef = nil + } + } else { + if x.ConfigMapKeyRef == nil { + x.ConfigMapKeyRef = new(ConfigMapKeySelector) + } + x.ConfigMapKeyRef.CodecDecodeSelf(d) + } + yyj1218++ + if yyhl1218 { + yyb1218 = yyj1218 > l + } else { + yyb1218 = r.CheckBreak() + } + if yyb1218 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecretKeyRef != nil { + x.SecretKeyRef = nil + } + } else { + if x.SecretKeyRef == nil { + x.SecretKeyRef = new(SecretKeySelector) + } + x.SecretKeyRef.CodecDecodeSelf(d) + } + for { + yyj1218++ + if yyhl1218 { + yyb1218 = yyj1218 > l + } else { + yyb1218 = r.CheckBreak() + } + if yyb1218 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1218-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1223 := z.EncBinary() + _ = yym1223 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1224 := !z.EncBinary() + yy2arr1224 := z.EncBasicHandle().StructToArray + var yyq1224 [2]bool + _, _, _ = yysep1224, yyq1224, yy2arr1224 + const yyr1224 bool = false + yyq1224[0] = x.APIVersion != "" + var yynn1224 int + if yyr1224 || yy2arr1224 { + r.EncodeArrayStart(2) + } else { + yynn1224 = 1 + for _, b := range yyq1224 { + if b { + yynn1224++ + } + } + r.EncodeMapStart(yynn1224) + yynn1224 = 0 + } + if yyr1224 || yy2arr1224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1224[0] { + yym1226 := z.EncBinary() + _ = yym1226 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1224[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1227 := z.EncBinary() + _ = yym1227 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1224 || yy2arr1224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1229 := z.EncBinary() + _ = yym1229 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1230 := z.EncBinary() + _ = yym1230 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + if yyr1224 || yy2arr1224 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1231 := z.DecBinary() + _ = yym1231 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1232 := r.ContainerType() + if yyct1232 == codecSelferValueTypeMap1234 { + yyl1232 := r.ReadMapStart() + if yyl1232 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1232, d) + } + } else if yyct1232 == codecSelferValueTypeArray1234 { + yyl1232 := r.ReadArrayStart() + if yyl1232 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1232, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1233Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1233Slc + var yyhl1233 bool = l >= 0 + for yyj1233 := 0; ; yyj1233++ { + if yyhl1233 { + if yyj1233 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1233Slc = r.DecodeBytes(yys1233Slc, true, true) + yys1233 := string(yys1233Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1233 { + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1233) + } // end switch yys1233 + } // end for yyj1233 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1236 int + var yyb1236 bool + var yyhl1236 bool = l >= 0 + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + for { + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1236-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceFieldSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1239 := z.EncBinary() + _ = yym1239 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1240 := !z.EncBinary() + yy2arr1240 := z.EncBasicHandle().StructToArray + var yyq1240 [3]bool + _, _, _ = yysep1240, yyq1240, yy2arr1240 + const yyr1240 bool = false + yyq1240[0] = x.ContainerName != "" + yyq1240[2] = true + var yynn1240 int + if yyr1240 || yy2arr1240 { + r.EncodeArrayStart(3) + } else { + yynn1240 = 1 + for _, b := range yyq1240 { + if b { + yynn1240++ + } + } + r.EncodeMapStart(yynn1240) + yynn1240 = 0 + } + if yyr1240 || yy2arr1240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1240[0] { + yym1242 := z.EncBinary() + _ = yym1242 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1240[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1243 := z.EncBinary() + _ = yym1243 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerName)) + } + } + } + if yyr1240 || yy2arr1240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1245 := z.EncBinary() + _ = yym1245 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1246 := z.EncBinary() + _ = yym1246 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + if yyr1240 || yy2arr1240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1240[2] { + yy1248 := &x.Divisor + yym1249 := z.EncBinary() + _ = yym1249 + if false { + } else if z.HasExtensions() && z.EncExt(yy1248) { + } else if !yym1249 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1248) + } else { + z.EncFallback(yy1248) + } + } else { + r.EncodeNil() + } + } else { + if yyq1240[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("divisor")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1250 := &x.Divisor + yym1251 := z.EncBinary() + _ = yym1251 + if false { + } else if z.HasExtensions() && z.EncExt(yy1250) { + } else if !yym1251 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1250) + } else { + z.EncFallback(yy1250) + } + } + } + if yyr1240 || yy2arr1240 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceFieldSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1252 := z.DecBinary() + _ = yym1252 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1253 := r.ContainerType() + if yyct1253 == codecSelferValueTypeMap1234 { + yyl1253 := r.ReadMapStart() + if yyl1253 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1253, d) + } + } else if yyct1253 == codecSelferValueTypeArray1234 { + yyl1253 := r.ReadArrayStart() + if yyl1253 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1253, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1254Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1254Slc + var yyhl1254 bool = l >= 0 + for yyj1254 := 0; ; yyj1254++ { + if yyhl1254 { + if yyj1254 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1254Slc = r.DecodeBytes(yys1254Slc, true, true) + yys1254 := string(yys1254Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1254 { + case "containerName": + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + x.ContainerName = string(r.DecodeString()) + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + case "divisor": + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv1257 := &x.Divisor + yym1258 := z.DecBinary() + _ = yym1258 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1257) { + } else if !yym1258 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1257) + } else { + z.DecFallback(yyv1257, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1254) + } // end switch yys1254 + } // end for yyj1254 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceFieldSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1259 int + var yyb1259 bool + var yyhl1259 bool = l >= 0 + yyj1259++ + if yyhl1259 { + yyb1259 = yyj1259 > l + } else { + yyb1259 = r.CheckBreak() + } + if yyb1259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerName = "" + } else { + x.ContainerName = string(r.DecodeString()) + } + yyj1259++ + if yyhl1259 { + yyb1259 = yyj1259 > l + } else { + yyb1259 = r.CheckBreak() + } + if yyb1259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + yyj1259++ + if yyhl1259 { + yyb1259 = yyj1259 > l + } else { + yyb1259 = r.CheckBreak() + } + if yyb1259 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Divisor = pkg3_resource.Quantity{} + } else { + yyv1262 := &x.Divisor + yym1263 := z.DecBinary() + _ = yym1263 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1262) { + } else if !yym1263 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1262) + } else { + z.DecFallback(yyv1262, false) + } + } + for { + yyj1259++ + if yyhl1259 { + yyb1259 = yyj1259 > l + } else { + yyb1259 = r.CheckBreak() + } + if yyb1259 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1259-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1264 := z.EncBinary() + _ = yym1264 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1265 := !z.EncBinary() + yy2arr1265 := z.EncBasicHandle().StructToArray + var yyq1265 [2]bool + _, _, _ = yysep1265, yyq1265, yy2arr1265 + const yyr1265 bool = false + yyq1265[0] = x.Name != "" + var yynn1265 int + if yyr1265 || yy2arr1265 { + r.EncodeArrayStart(2) + } else { + yynn1265 = 1 + for _, b := range yyq1265 { + if b { + yynn1265++ + } + } + r.EncodeMapStart(yynn1265) + yynn1265 = 0 + } + if yyr1265 || yy2arr1265 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1265[0] { + yym1267 := z.EncBinary() + _ = yym1267 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1265[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1268 := z.EncBinary() + _ = yym1268 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr1265 || yy2arr1265 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1270 := z.EncBinary() + _ = yym1270 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1271 := z.EncBinary() + _ = yym1271 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1265 || yy2arr1265 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1272 := z.DecBinary() + _ = yym1272 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1273 := r.ContainerType() + if yyct1273 == codecSelferValueTypeMap1234 { + yyl1273 := r.ReadMapStart() + if yyl1273 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1273, d) + } + } else if yyct1273 == codecSelferValueTypeArray1234 { + yyl1273 := r.ReadArrayStart() + if yyl1273 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1273, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1274Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1274Slc + var yyhl1274 bool = l >= 0 + for yyj1274 := 0; ; yyj1274++ { + if yyhl1274 { + if yyj1274 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1274Slc = r.DecodeBytes(yys1274Slc, true, true) + yys1274 := string(yys1274Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1274 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1274) + } // end switch yys1274 + } // end for yyj1274 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1277 int + var yyb1277 bool + var yyhl1277 bool = l >= 0 + yyj1277++ + if yyhl1277 { + yyb1277 = yyj1277 > l + } else { + yyb1277 = r.CheckBreak() + } + if yyb1277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1277++ + if yyhl1277 { + yyb1277 = yyj1277 > l + } else { + yyb1277 = r.CheckBreak() + } + if yyb1277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + for { + yyj1277++ + if yyhl1277 { + yyb1277 = yyj1277 > l + } else { + yyb1277 = r.CheckBreak() + } + if yyb1277 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1277-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecretKeySelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1280 := z.EncBinary() + _ = yym1280 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1281 := !z.EncBinary() + yy2arr1281 := z.EncBasicHandle().StructToArray + var yyq1281 [2]bool + _, _, _ = yysep1281, yyq1281, yy2arr1281 + const yyr1281 bool = false + yyq1281[0] = x.Name != "" + var yynn1281 int + if yyr1281 || yy2arr1281 { + r.EncodeArrayStart(2) + } else { + yynn1281 = 1 + for _, b := range yyq1281 { + if b { + yynn1281++ + } + } + r.EncodeMapStart(yynn1281) + yynn1281 = 0 + } + if yyr1281 || yy2arr1281 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1281[0] { + yym1283 := z.EncBinary() + _ = yym1283 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1281[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1284 := z.EncBinary() + _ = yym1284 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr1281 || yy2arr1281 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1286 := z.EncBinary() + _ = yym1286 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1287 := z.EncBinary() + _ = yym1287 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1281 || yy2arr1281 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretKeySelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1288 := z.DecBinary() + _ = yym1288 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1289 := r.ContainerType() + if yyct1289 == codecSelferValueTypeMap1234 { + yyl1289 := r.ReadMapStart() + if yyl1289 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1289, d) + } + } else if yyct1289 == codecSelferValueTypeArray1234 { + yyl1289 := r.ReadArrayStart() + if yyl1289 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1289, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretKeySelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1290Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1290Slc + var yyhl1290 bool = l >= 0 + for yyj1290 := 0; ; yyj1290++ { + if yyhl1290 { + if yyj1290 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1290Slc = r.DecodeBytes(yys1290Slc, true, true) + yys1290 := string(yys1290Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1290 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1290) + } // end switch yys1290 + } // end for yyj1290 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretKeySelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1293 int + var yyb1293 bool + var yyhl1293 bool = l >= 0 + yyj1293++ + if yyhl1293 { + yyb1293 = yyj1293 > l + } else { + yyb1293 = r.CheckBreak() + } + if yyb1293 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1293++ + if yyhl1293 { + yyb1293 = yyj1293 > l + } else { + yyb1293 = r.CheckBreak() + } + if yyb1293 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + for { + yyj1293++ + if yyhl1293 { + yyb1293 = yyj1293 > l + } else { + yyb1293 = r.CheckBreak() + } + if yyb1293 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1293-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPHeader) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1296 := z.EncBinary() + _ = yym1296 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1297 := !z.EncBinary() + yy2arr1297 := z.EncBasicHandle().StructToArray + var yyq1297 [2]bool + _, _, _ = yysep1297, yyq1297, yy2arr1297 + const yyr1297 bool = false + var yynn1297 int + if yyr1297 || yy2arr1297 { + r.EncodeArrayStart(2) + } else { + yynn1297 = 2 + for _, b := range yyq1297 { + if b { + yynn1297++ + } + } + r.EncodeMapStart(yynn1297) + yynn1297 = 0 + } + if yyr1297 || yy2arr1297 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1299 := z.EncBinary() + _ = yym1299 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1300 := z.EncBinary() + _ = yym1300 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1297 || yy2arr1297 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1302 := z.EncBinary() + _ = yym1302 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1303 := z.EncBinary() + _ = yym1303 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + if yyr1297 || yy2arr1297 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPHeader) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1304 := z.DecBinary() + _ = yym1304 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1305 := r.ContainerType() + if yyct1305 == codecSelferValueTypeMap1234 { + yyl1305 := r.ReadMapStart() + if yyl1305 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1305, d) + } + } else if yyct1305 == codecSelferValueTypeArray1234 { + yyl1305 := r.ReadArrayStart() + if yyl1305 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1305, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPHeader) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1306Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1306Slc + var yyhl1306 bool = l >= 0 + for yyj1306 := 0; ; yyj1306++ { + if yyhl1306 { + if yyj1306 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1306Slc = r.DecodeBytes(yys1306Slc, true, true) + yys1306 := string(yys1306Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1306 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1306) + } // end switch yys1306 + } // end for yyj1306 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPHeader) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1309 int + var yyb1309 bool + var yyhl1309 bool = l >= 0 + yyj1309++ + if yyhl1309 { + yyb1309 = yyj1309 > l + } else { + yyb1309 = r.CheckBreak() + } + if yyb1309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1309++ + if yyhl1309 { + yyb1309 = yyj1309 > l + } else { + yyb1309 = r.CheckBreak() + } + if yyb1309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + for { + yyj1309++ + if yyhl1309 { + yyb1309 = yyj1309 > l + } else { + yyb1309 = r.CheckBreak() + } + if yyb1309 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1309-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPGetAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1312 := z.EncBinary() + _ = yym1312 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1313 := !z.EncBinary() + yy2arr1313 := z.EncBasicHandle().StructToArray + var yyq1313 [5]bool + _, _, _ = yysep1313, yyq1313, yy2arr1313 + const yyr1313 bool = false + yyq1313[0] = x.Path != "" + yyq1313[2] = x.Host != "" + yyq1313[3] = x.Scheme != "" + yyq1313[4] = len(x.HTTPHeaders) != 0 + var yynn1313 int + if yyr1313 || yy2arr1313 { + r.EncodeArrayStart(5) + } else { + yynn1313 = 1 + for _, b := range yyq1313 { + if b { + yynn1313++ + } + } + r.EncodeMapStart(yynn1313) + yynn1313 = 0 + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1313[0] { + yym1315 := z.EncBinary() + _ = yym1315 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1313[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1316 := z.EncBinary() + _ = yym1316 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1318 := &x.Port + yym1319 := z.EncBinary() + _ = yym1319 + if false { + } else if z.HasExtensions() && z.EncExt(yy1318) { + } else if !yym1319 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1318) + } else { + z.EncFallback(yy1318) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1320 := &x.Port + yym1321 := z.EncBinary() + _ = yym1321 + if false { + } else if z.HasExtensions() && z.EncExt(yy1320) { + } else if !yym1321 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1320) + } else { + z.EncFallback(yy1320) + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1313[2] { + yym1323 := z.EncBinary() + _ = yym1323 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1313[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1324 := z.EncBinary() + _ = yym1324 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1313[3] { + x.Scheme.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1313[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scheme")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Scheme.CodecEncodeSelf(e) + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1313[4] { + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym1327 := z.EncBinary() + _ = yym1327 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1313[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpHeaders")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPHeaders == nil { + r.EncodeNil() + } else { + yym1328 := z.EncBinary() + _ = yym1328 + if false { + } else { + h.encSliceHTTPHeader(([]HTTPHeader)(x.HTTPHeaders), e) + } + } + } + } + if yyr1313 || yy2arr1313 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPGetAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1329 := z.DecBinary() + _ = yym1329 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1330 := r.ContainerType() + if yyct1330 == codecSelferValueTypeMap1234 { + yyl1330 := r.ReadMapStart() + if yyl1330 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1330, d) + } + } else if yyct1330 == codecSelferValueTypeArray1234 { + yyl1330 := r.ReadArrayStart() + if yyl1330 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1330, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPGetAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1331Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1331Slc + var yyhl1331 bool = l >= 0 + for yyj1331 := 0; ; yyj1331++ { + if yyhl1331 { + if yyj1331 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1331Slc = r.DecodeBytes(yys1331Slc, true, true) + yys1331 := string(yys1331Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1331 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1333 := &x.Port + yym1334 := z.DecBinary() + _ = yym1334 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1333) { + } else if !yym1334 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1333) + } else { + z.DecFallback(yyv1333, false) + } + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + case "scheme": + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + x.Scheme = URIScheme(r.DecodeString()) + } + case "httpHeaders": + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv1337 := &x.HTTPHeaders + yym1338 := z.DecBinary() + _ = yym1338 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv1337), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1331) + } // end switch yys1331 + } // end for yyj1331 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPGetAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1339 int + var yyb1339 bool + var yyhl1339 bool = l >= 0 + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1341 := &x.Port + yym1342 := z.DecBinary() + _ = yym1342 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1341) { + } else if !yym1342 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1341) + } else { + z.DecFallback(yyv1341, false) + } + } + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scheme = "" + } else { + x.Scheme = URIScheme(r.DecodeString()) + } + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HTTPHeaders = nil + } else { + yyv1345 := &x.HTTPHeaders + yym1346 := z.DecBinary() + _ = yym1346 + if false { + } else { + h.decSliceHTTPHeader((*[]HTTPHeader)(yyv1345), d) + } + } + for { + yyj1339++ + if yyhl1339 { + yyb1339 = yyj1339 > l + } else { + yyb1339 = r.CheckBreak() + } + if yyb1339 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1339-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x URIScheme) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1347 := z.EncBinary() + _ = yym1347 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *URIScheme) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1348 := z.DecBinary() + _ = yym1348 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *TCPSocketAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1349 := z.EncBinary() + _ = yym1349 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1350 := !z.EncBinary() + yy2arr1350 := z.EncBasicHandle().StructToArray + var yyq1350 [1]bool + _, _, _ = yysep1350, yyq1350, yy2arr1350 + const yyr1350 bool = false + var yynn1350 int + if yyr1350 || yy2arr1350 { + r.EncodeArrayStart(1) + } else { + yynn1350 = 1 + for _, b := range yyq1350 { + if b { + yynn1350++ + } + } + r.EncodeMapStart(yynn1350) + yynn1350 = 0 + } + if yyr1350 || yy2arr1350 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1352 := &x.Port + yym1353 := z.EncBinary() + _ = yym1353 + if false { + } else if z.HasExtensions() && z.EncExt(yy1352) { + } else if !yym1353 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1352) + } else { + z.EncFallback(yy1352) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1354 := &x.Port + yym1355 := z.EncBinary() + _ = yym1355 + if false { + } else if z.HasExtensions() && z.EncExt(yy1354) { + } else if !yym1355 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1354) + } else { + z.EncFallback(yy1354) + } + } + if yyr1350 || yy2arr1350 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TCPSocketAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1356 := z.DecBinary() + _ = yym1356 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1357 := r.ContainerType() + if yyct1357 == codecSelferValueTypeMap1234 { + yyl1357 := r.ReadMapStart() + if yyl1357 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1357, d) + } + } else if yyct1357 == codecSelferValueTypeArray1234 { + yyl1357 := r.ReadArrayStart() + if yyl1357 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1357, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TCPSocketAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1358Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1358Slc + var yyhl1358 bool = l >= 0 + for yyj1358 := 0; ; yyj1358++ { + if yyhl1358 { + if yyj1358 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1358Slc = r.DecodeBytes(yys1358Slc, true, true) + yys1358 := string(yys1358Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1358 { + case "port": + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1359 := &x.Port + yym1360 := z.DecBinary() + _ = yym1360 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1359) { + } else if !yym1360 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1359) + } else { + z.DecFallback(yyv1359, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1358) + } // end switch yys1358 + } // end for yyj1358 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TCPSocketAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1361 int + var yyb1361 bool + var yyhl1361 bool = l >= 0 + yyj1361++ + if yyhl1361 { + yyb1361 = yyj1361 > l + } else { + yyb1361 = r.CheckBreak() + } + if yyb1361 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = pkg4_intstr.IntOrString{} + } else { + yyv1362 := &x.Port + yym1363 := z.DecBinary() + _ = yym1363 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1362) { + } else if !yym1363 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1362) + } else { + z.DecFallback(yyv1362, false) + } + } + for { + yyj1361++ + if yyhl1361 { + yyb1361 = yyj1361 > l + } else { + yyb1361 = r.CheckBreak() + } + if yyb1361 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1361-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExecAction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1364 := z.EncBinary() + _ = yym1364 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1365 := !z.EncBinary() + yy2arr1365 := z.EncBasicHandle().StructToArray + var yyq1365 [1]bool + _, _, _ = yysep1365, yyq1365, yy2arr1365 + const yyr1365 bool = false + yyq1365[0] = len(x.Command) != 0 + var yynn1365 int + if yyr1365 || yy2arr1365 { + r.EncodeArrayStart(1) + } else { + yynn1365 = 0 + for _, b := range yyq1365 { + if b { + yynn1365++ + } + } + r.EncodeMapStart(yynn1365) + yynn1365 = 0 + } + if yyr1365 || yy2arr1365 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1365[0] { + if x.Command == nil { + r.EncodeNil() + } else { + yym1367 := z.EncBinary() + _ = yym1367 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1365[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym1368 := z.EncBinary() + _ = yym1368 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr1365 || yy2arr1365 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExecAction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1369 := z.DecBinary() + _ = yym1369 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1370 := r.ContainerType() + if yyct1370 == codecSelferValueTypeMap1234 { + yyl1370 := r.ReadMapStart() + if yyl1370 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1370, d) + } + } else if yyct1370 == codecSelferValueTypeArray1234 { + yyl1370 := r.ReadArrayStart() + if yyl1370 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1370, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExecAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1371Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1371Slc + var yyhl1371 bool = l >= 0 + for yyj1371 := 0; ; yyj1371++ { + if yyhl1371 { + if yyj1371 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1371Slc = r.DecodeBytes(yys1371Slc, true, true) + yys1371 := string(yys1371Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1371 { + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1372 := &x.Command + yym1373 := z.DecBinary() + _ = yym1373 + if false { + } else { + z.F.DecSliceStringX(yyv1372, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1371) + } // end switch yys1371 + } // end for yyj1371 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExecAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1374 int + var yyb1374 bool + var yyhl1374 bool = l >= 0 + yyj1374++ + if yyhl1374 { + yyb1374 = yyj1374 > l + } else { + yyb1374 = r.CheckBreak() + } + if yyb1374 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1375 := &x.Command + yym1376 := z.DecBinary() + _ = yym1376 + if false { + } else { + z.F.DecSliceStringX(yyv1375, false, d) + } + } + for { + yyj1374++ + if yyhl1374 { + yyb1374 = yyj1374 > l + } else { + yyb1374 = r.CheckBreak() + } + if yyb1374 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1374-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Probe) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1377 := z.EncBinary() + _ = yym1377 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1378 := !z.EncBinary() + yy2arr1378 := z.EncBasicHandle().StructToArray + var yyq1378 [8]bool + _, _, _ = yysep1378, yyq1378, yy2arr1378 + const yyr1378 bool = false + yyq1378[0] = x.Handler.Exec != nil && x.Exec != nil + yyq1378[1] = x.Handler.HTTPGet != nil && x.HTTPGet != nil + yyq1378[2] = x.Handler.TCPSocket != nil && x.TCPSocket != nil + yyq1378[3] = x.InitialDelaySeconds != 0 + yyq1378[4] = x.TimeoutSeconds != 0 + yyq1378[5] = x.PeriodSeconds != 0 + yyq1378[6] = x.SuccessThreshold != 0 + yyq1378[7] = x.FailureThreshold != 0 + var yynn1378 int + if yyr1378 || yy2arr1378 { + r.EncodeArrayStart(8) + } else { + yynn1378 = 0 + for _, b := range yyq1378 { + if b { + yynn1378++ + } + } + r.EncodeMapStart(yynn1378) + yynn1378 = 0 + } + var yyn1379 bool + if x.Handler.Exec == nil { + yyn1379 = true + goto LABEL1379 + } + LABEL1379: + if yyr1378 || yy2arr1378 { + if yyn1379 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1378[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1379 { + r.EncodeNil() + } else { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + } + var yyn1380 bool + if x.Handler.HTTPGet == nil { + yyn1380 = true + goto LABEL1380 + } + LABEL1380: + if yyr1378 || yy2arr1378 { + if yyn1380 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1378[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1380 { + r.EncodeNil() + } else { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + } + var yyn1381 bool + if x.Handler.TCPSocket == nil { + yyn1381 = true + goto LABEL1381 + } + LABEL1381: + if yyr1378 || yy2arr1378 { + if yyn1381 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1378[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1381 { + r.EncodeNil() + } else { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[3] { + yym1383 := z.EncBinary() + _ = yym1383 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1378[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("initialDelaySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1384 := z.EncBinary() + _ = yym1384 + if false { + } else { + r.EncodeInt(int64(x.InitialDelaySeconds)) + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[4] { + yym1386 := z.EncBinary() + _ = yym1386 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1378[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1387 := z.EncBinary() + _ = yym1387 + if false { + } else { + r.EncodeInt(int64(x.TimeoutSeconds)) + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[5] { + yym1389 := z.EncBinary() + _ = yym1389 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1378[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("periodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1390 := z.EncBinary() + _ = yym1390 + if false { + } else { + r.EncodeInt(int64(x.PeriodSeconds)) + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[6] { + yym1392 := z.EncBinary() + _ = yym1392 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1378[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("successThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1393 := z.EncBinary() + _ = yym1393 + if false { + } else { + r.EncodeInt(int64(x.SuccessThreshold)) + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1378[7] { + yym1395 := z.EncBinary() + _ = yym1395 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1378[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failureThreshold")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1396 := z.EncBinary() + _ = yym1396 + if false { + } else { + r.EncodeInt(int64(x.FailureThreshold)) + } + } + } + if yyr1378 || yy2arr1378 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Probe) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1397 := z.DecBinary() + _ = yym1397 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1398 := r.ContainerType() + if yyct1398 == codecSelferValueTypeMap1234 { + yyl1398 := r.ReadMapStart() + if yyl1398 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1398, d) + } + } else if yyct1398 == codecSelferValueTypeArray1234 { + yyl1398 := r.ReadArrayStart() + if yyl1398 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1398, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Probe) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1399Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1399Slc + var yyhl1399 bool = l >= 0 + for yyj1399 := 0; ; yyj1399++ { + if yyhl1399 { + if yyj1399 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1399Slc = r.DecodeBytes(yys1399Slc, true, true) + yys1399 := string(yys1399Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1399 { + case "exec": + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + case "initialDelaySeconds": + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + x.InitialDelaySeconds = int32(r.DecodeInt(32)) + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + x.TimeoutSeconds = int32(r.DecodeInt(32)) + } + case "periodSeconds": + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + x.PeriodSeconds = int32(r.DecodeInt(32)) + } + case "successThreshold": + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + x.SuccessThreshold = int32(r.DecodeInt(32)) + } + case "failureThreshold": + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + x.FailureThreshold = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys1399) + } // end switch yys1399 + } // end for yyj1399 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Probe) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1408 int + var yyb1408 bool + var yyhl1408 bool = l >= 0 + if x.Handler.Exec == nil { + x.Handler.Exec = new(ExecAction) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + if x.Handler.HTTPGet == nil { + x.Handler.HTTPGet = new(HTTPGetAction) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + if x.Handler.TCPSocket == nil { + x.Handler.TCPSocket = new(TCPSocketAction) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InitialDelaySeconds = 0 + } else { + x.InitialDelaySeconds = int32(r.DecodeInt(32)) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TimeoutSeconds = 0 + } else { + x.TimeoutSeconds = int32(r.DecodeInt(32)) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PeriodSeconds = 0 + } else { + x.PeriodSeconds = int32(r.DecodeInt(32)) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SuccessThreshold = 0 + } else { + x.SuccessThreshold = int32(r.DecodeInt(32)) + } + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FailureThreshold = 0 + } else { + x.FailureThreshold = int32(r.DecodeInt(32)) + } + for { + yyj1408++ + if yyhl1408 { + yyb1408 = yyj1408 > l + } else { + yyb1408 = r.CheckBreak() + } + if yyb1408 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1408-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PullPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1417 := z.EncBinary() + _ = yym1417 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PullPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1418 := z.DecBinary() + _ = yym1418 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x Capability) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1419 := z.EncBinary() + _ = yym1419 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *Capability) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1420 := z.DecBinary() + _ = yym1420 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Capabilities) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1421 := z.EncBinary() + _ = yym1421 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1422 := !z.EncBinary() + yy2arr1422 := z.EncBasicHandle().StructToArray + var yyq1422 [2]bool + _, _, _ = yysep1422, yyq1422, yy2arr1422 + const yyr1422 bool = false + yyq1422[0] = len(x.Add) != 0 + yyq1422[1] = len(x.Drop) != 0 + var yynn1422 int + if yyr1422 || yy2arr1422 { + r.EncodeArrayStart(2) + } else { + yynn1422 = 0 + for _, b := range yyq1422 { + if b { + yynn1422++ + } + } + r.EncodeMapStart(yynn1422) + yynn1422 = 0 + } + if yyr1422 || yy2arr1422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1422[0] { + if x.Add == nil { + r.EncodeNil() + } else { + yym1424 := z.EncBinary() + _ = yym1424 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1422[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("add")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Add == nil { + r.EncodeNil() + } else { + yym1425 := z.EncBinary() + _ = yym1425 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Add), e) + } + } + } + } + if yyr1422 || yy2arr1422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1422[1] { + if x.Drop == nil { + r.EncodeNil() + } else { + yym1427 := z.EncBinary() + _ = yym1427 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1422[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("drop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Drop == nil { + r.EncodeNil() + } else { + yym1428 := z.EncBinary() + _ = yym1428 + if false { + } else { + h.encSliceCapability(([]Capability)(x.Drop), e) + } + } + } + } + if yyr1422 || yy2arr1422 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Capabilities) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1429 := z.DecBinary() + _ = yym1429 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1430 := r.ContainerType() + if yyct1430 == codecSelferValueTypeMap1234 { + yyl1430 := r.ReadMapStart() + if yyl1430 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1430, d) + } + } else if yyct1430 == codecSelferValueTypeArray1234 { + yyl1430 := r.ReadArrayStart() + if yyl1430 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1430, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Capabilities) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1431Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1431Slc + var yyhl1431 bool = l >= 0 + for yyj1431 := 0; ; yyj1431++ { + if yyhl1431 { + if yyj1431 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1431Slc = r.DecodeBytes(yys1431Slc, true, true) + yys1431 := string(yys1431Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1431 { + case "add": + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv1432 := &x.Add + yym1433 := z.DecBinary() + _ = yym1433 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1432), d) + } + } + case "drop": + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv1434 := &x.Drop + yym1435 := z.DecBinary() + _ = yym1435 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1434), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1431) + } // end switch yys1431 + } // end for yyj1431 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Capabilities) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1436 int + var yyb1436 bool + var yyhl1436 bool = l >= 0 + yyj1436++ + if yyhl1436 { + yyb1436 = yyj1436 > l + } else { + yyb1436 = r.CheckBreak() + } + if yyb1436 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Add = nil + } else { + yyv1437 := &x.Add + yym1438 := z.DecBinary() + _ = yym1438 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1437), d) + } + } + yyj1436++ + if yyhl1436 { + yyb1436 = yyj1436 > l + } else { + yyb1436 = r.CheckBreak() + } + if yyb1436 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Drop = nil + } else { + yyv1439 := &x.Drop + yym1440 := z.DecBinary() + _ = yym1440 + if false { + } else { + h.decSliceCapability((*[]Capability)(yyv1439), d) + } + } + for { + yyj1436++ + if yyhl1436 { + yyb1436 = yyj1436 > l + } else { + yyb1436 = r.CheckBreak() + } + if yyb1436 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1436-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceRequirements) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1441 := z.EncBinary() + _ = yym1441 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1442 := !z.EncBinary() + yy2arr1442 := z.EncBasicHandle().StructToArray + var yyq1442 [2]bool + _, _, _ = yysep1442, yyq1442, yy2arr1442 + const yyr1442 bool = false + yyq1442[0] = len(x.Limits) != 0 + yyq1442[1] = len(x.Requests) != 0 + var yynn1442 int + if yyr1442 || yy2arr1442 { + r.EncodeArrayStart(2) + } else { + yynn1442 = 0 + for _, b := range yyq1442 { + if b { + yynn1442++ + } + } + r.EncodeMapStart(yynn1442) + yynn1442 = 0 + } + if yyr1442 || yy2arr1442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1442[0] { + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1442[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + x.Limits.CodecEncodeSelf(e) + } + } + } + if yyr1442 || yy2arr1442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1442[1] { + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1442[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requests")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Requests == nil { + r.EncodeNil() + } else { + x.Requests.CodecEncodeSelf(e) + } + } + } + if yyr1442 || yy2arr1442 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceRequirements) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1445 := z.DecBinary() + _ = yym1445 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1446 := r.ContainerType() + if yyct1446 == codecSelferValueTypeMap1234 { + yyl1446 := r.ReadMapStart() + if yyl1446 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1446, d) + } + } else if yyct1446 == codecSelferValueTypeArray1234 { + yyl1446 := r.ReadArrayStart() + if yyl1446 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1446, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceRequirements) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1447Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1447Slc + var yyhl1447 bool = l >= 0 + for yyj1447 := 0; ; yyj1447++ { + if yyhl1447 { + if yyj1447 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1447Slc = r.DecodeBytes(yys1447Slc, true, true) + yys1447 := string(yys1447Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1447 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv1448 := &x.Limits + yyv1448.CodecDecodeSelf(d) + } + case "requests": + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv1449 := &x.Requests + yyv1449.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1447) + } // end switch yys1447 + } // end for yyj1447 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceRequirements) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1450 int + var yyb1450 bool + var yyhl1450 bool = l >= 0 + yyj1450++ + if yyhl1450 { + yyb1450 = yyj1450 > l + } else { + yyb1450 = r.CheckBreak() + } + if yyb1450 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv1451 := &x.Limits + yyv1451.CodecDecodeSelf(d) + } + yyj1450++ + if yyhl1450 { + yyb1450 = yyj1450 > l + } else { + yyb1450 = r.CheckBreak() + } + if yyb1450 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Requests = nil + } else { + yyv1452 := &x.Requests + yyv1452.CodecDecodeSelf(d) + } + for { + yyj1450++ + if yyhl1450 { + yyb1450 = yyj1450 > l + } else { + yyb1450 = r.CheckBreak() + } + if yyb1450 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1450-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Container) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1453 := z.EncBinary() + _ = yym1453 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1454 := !z.EncBinary() + yy2arr1454 := z.EncBasicHandle().StructToArray + var yyq1454 [18]bool + _, _, _ = yysep1454, yyq1454, yy2arr1454 + const yyr1454 bool = false + yyq1454[1] = x.Image != "" + yyq1454[2] = len(x.Command) != 0 + yyq1454[3] = len(x.Args) != 0 + yyq1454[4] = x.WorkingDir != "" + yyq1454[5] = len(x.Ports) != 0 + yyq1454[6] = len(x.Env) != 0 + yyq1454[7] = true + yyq1454[8] = len(x.VolumeMounts) != 0 + yyq1454[9] = x.LivenessProbe != nil + yyq1454[10] = x.ReadinessProbe != nil + yyq1454[11] = x.Lifecycle != nil + yyq1454[12] = x.TerminationMessagePath != "" + yyq1454[13] = x.ImagePullPolicy != "" + yyq1454[14] = x.SecurityContext != nil + yyq1454[15] = x.Stdin != false + yyq1454[16] = x.StdinOnce != false + yyq1454[17] = x.TTY != false + var yynn1454 int + if yyr1454 || yy2arr1454 { + r.EncodeArrayStart(18) + } else { + yynn1454 = 1 + for _, b := range yyq1454 { + if b { + yynn1454++ + } + } + r.EncodeMapStart(yynn1454) + yynn1454 = 0 + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1456 := z.EncBinary() + _ = yym1456 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1457 := z.EncBinary() + _ = yym1457 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[1] { + yym1459 := z.EncBinary() + _ = yym1459 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1454[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1460 := z.EncBinary() + _ = yym1460 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[2] { + if x.Command == nil { + r.EncodeNil() + } else { + yym1462 := z.EncBinary() + _ = yym1462 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym1463 := z.EncBinary() + _ = yym1463 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[3] { + if x.Args == nil { + r.EncodeNil() + } else { + yym1465 := z.EncBinary() + _ = yym1465 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("args")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Args == nil { + r.EncodeNil() + } else { + yym1466 := z.EncBinary() + _ = yym1466 + if false { + } else { + z.F.EncSliceStringV(x.Args, false, e) + } + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[4] { + yym1468 := z.EncBinary() + _ = yym1468 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1454[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("workingDir")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1469 := z.EncBinary() + _ = yym1469 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.WorkingDir)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[5] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym1471 := z.EncBinary() + _ = yym1471 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym1472 := z.EncBinary() + _ = yym1472 + if false { + } else { + h.encSliceContainerPort(([]ContainerPort)(x.Ports), e) + } + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[6] { + if x.Env == nil { + r.EncodeNil() + } else { + yym1474 := z.EncBinary() + _ = yym1474 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("env")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Env == nil { + r.EncodeNil() + } else { + yym1475 := z.EncBinary() + _ = yym1475 + if false { + } else { + h.encSliceEnvVar(([]EnvVar)(x.Env), e) + } + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[7] { + yy1477 := &x.Resources + yy1477.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1454[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1478 := &x.Resources + yy1478.CodecEncodeSelf(e) + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[8] { + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym1480 := z.EncBinary() + _ = yym1480 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeMounts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeMounts == nil { + r.EncodeNil() + } else { + yym1481 := z.EncBinary() + _ = yym1481 + if false { + } else { + h.encSliceVolumeMount(([]VolumeMount)(x.VolumeMounts), e) + } + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[9] { + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("livenessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LivenessProbe == nil { + r.EncodeNil() + } else { + x.LivenessProbe.CodecEncodeSelf(e) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[10] { + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readinessProbe")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadinessProbe == nil { + r.EncodeNil() + } else { + x.ReadinessProbe.CodecEncodeSelf(e) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[11] { + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lifecycle")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Lifecycle == nil { + r.EncodeNil() + } else { + x.Lifecycle.CodecEncodeSelf(e) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[12] { + yym1486 := z.EncBinary() + _ = yym1486 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1454[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationMessagePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1487 := z.EncBinary() + _ = yym1487 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TerminationMessagePath)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[13] { + x.ImagePullPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1454[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ImagePullPolicy.CodecEncodeSelf(e) + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[14] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1454[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[15] { + yym1491 := z.EncBinary() + _ = yym1491 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1454[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1492 := z.EncBinary() + _ = yym1492 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[16] { + yym1494 := z.EncBinary() + _ = yym1494 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1454[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdinOnce")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1495 := z.EncBinary() + _ = yym1495 + if false { + } else { + r.EncodeBool(bool(x.StdinOnce)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1454[17] { + yym1497 := z.EncBinary() + _ = yym1497 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1454[17] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1498 := z.EncBinary() + _ = yym1498 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr1454 || yy2arr1454 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Container) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1499 := z.DecBinary() + _ = yym1499 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1500 := r.ContainerType() + if yyct1500 == codecSelferValueTypeMap1234 { + yyl1500 := r.ReadMapStart() + if yyl1500 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1500, d) + } + } else if yyct1500 == codecSelferValueTypeArray1234 { + yyl1500 := r.ReadArrayStart() + if yyl1500 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1500, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Container) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1501Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1501Slc + var yyhl1501 bool = l >= 0 + for yyj1501 := 0; ; yyj1501++ { + if yyhl1501 { + if yyj1501 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1501Slc = r.DecodeBytes(yys1501Slc, true, true) + yys1501 := string(yys1501Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1501 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1504 := &x.Command + yym1505 := z.DecBinary() + _ = yym1505 + if false { + } else { + z.F.DecSliceStringX(yyv1504, false, d) + } + } + case "args": + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv1506 := &x.Args + yym1507 := z.DecBinary() + _ = yym1507 + if false { + } else { + z.F.DecSliceStringX(yyv1506, false, d) + } + } + case "workingDir": + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + x.WorkingDir = string(r.DecodeString()) + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1509 := &x.Ports + yym1510 := z.DecBinary() + _ = yym1510 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv1509), d) + } + } + case "env": + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv1511 := &x.Env + yym1512 := z.DecBinary() + _ = yym1512 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv1511), d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv1513 := &x.Resources + yyv1513.CodecDecodeSelf(d) + } + case "volumeMounts": + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv1514 := &x.VolumeMounts + yym1515 := z.DecBinary() + _ = yym1515 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv1514), d) + } + } + case "livenessProbe": + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + case "readinessProbe": + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + case "lifecycle": + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + case "terminationMessagePath": + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + x.TerminationMessagePath = string(r.DecodeString()) + } + case "imagePullPolicy": + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + x.ImagePullPolicy = PullPolicy(r.DecodeString()) + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "stdinOnce": + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + x.StdinOnce = bool(r.DecodeBool()) + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1501) + } // end switch yys1501 + } // end for yyj1501 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Container) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1525 int + var yyb1525 bool + var yyhl1525 bool = l >= 0 + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv1528 := &x.Command + yym1529 := z.DecBinary() + _ = yym1529 + if false { + } else { + z.F.DecSliceStringX(yyv1528, false, d) + } + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Args = nil + } else { + yyv1530 := &x.Args + yym1531 := z.DecBinary() + _ = yym1531 + if false { + } else { + z.F.DecSliceStringX(yyv1530, false, d) + } + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.WorkingDir = "" + } else { + x.WorkingDir = string(r.DecodeString()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1533 := &x.Ports + yym1534 := z.DecBinary() + _ = yym1534 + if false { + } else { + h.decSliceContainerPort((*[]ContainerPort)(yyv1533), d) + } + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Env = nil + } else { + yyv1535 := &x.Env + yym1536 := z.DecBinary() + _ = yym1536 + if false { + } else { + h.decSliceEnvVar((*[]EnvVar)(yyv1535), d) + } + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = ResourceRequirements{} + } else { + yyv1537 := &x.Resources + yyv1537.CodecDecodeSelf(d) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeMounts = nil + } else { + yyv1538 := &x.VolumeMounts + yym1539 := z.DecBinary() + _ = yym1539 + if false { + } else { + h.decSliceVolumeMount((*[]VolumeMount)(yyv1538), d) + } + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LivenessProbe != nil { + x.LivenessProbe = nil + } + } else { + if x.LivenessProbe == nil { + x.LivenessProbe = new(Probe) + } + x.LivenessProbe.CodecDecodeSelf(d) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadinessProbe != nil { + x.ReadinessProbe = nil + } + } else { + if x.ReadinessProbe == nil { + x.ReadinessProbe = new(Probe) + } + x.ReadinessProbe.CodecDecodeSelf(d) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Lifecycle != nil { + x.Lifecycle = nil + } + } else { + if x.Lifecycle == nil { + x.Lifecycle = new(Lifecycle) + } + x.Lifecycle.CodecDecodeSelf(d) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TerminationMessagePath = "" + } else { + x.TerminationMessagePath = string(r.DecodeString()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullPolicy = "" + } else { + x.ImagePullPolicy = PullPolicy(r.DecodeString()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(SecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StdinOnce = false + } else { + x.StdinOnce = bool(r.DecodeBool()) + } + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + for { + yyj1525++ + if yyhl1525 { + yyb1525 = yyj1525 > l + } else { + yyb1525 = r.CheckBreak() + } + if yyb1525 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1525-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Handler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1549 := z.EncBinary() + _ = yym1549 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1550 := !z.EncBinary() + yy2arr1550 := z.EncBasicHandle().StructToArray + var yyq1550 [3]bool + _, _, _ = yysep1550, yyq1550, yy2arr1550 + const yyr1550 bool = false + yyq1550[0] = x.Exec != nil + yyq1550[1] = x.HTTPGet != nil + yyq1550[2] = x.TCPSocket != nil + var yynn1550 int + if yyr1550 || yy2arr1550 { + r.EncodeArrayStart(3) + } else { + yynn1550 = 0 + for _, b := range yyq1550 { + if b { + yynn1550++ + } + } + r.EncodeMapStart(yynn1550) + yynn1550 = 0 + } + if yyr1550 || yy2arr1550 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1550[0] { + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1550[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Exec == nil { + r.EncodeNil() + } else { + x.Exec.CodecEncodeSelf(e) + } + } + } + if yyr1550 || yy2arr1550 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1550[1] { + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1550[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("httpGet")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTPGet == nil { + r.EncodeNil() + } else { + x.HTTPGet.CodecEncodeSelf(e) + } + } + } + if yyr1550 || yy2arr1550 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1550[2] { + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1550[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tcpSocket")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TCPSocket == nil { + r.EncodeNil() + } else { + x.TCPSocket.CodecEncodeSelf(e) + } + } + } + if yyr1550 || yy2arr1550 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Handler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1554 := z.DecBinary() + _ = yym1554 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1555 := r.ContainerType() + if yyct1555 == codecSelferValueTypeMap1234 { + yyl1555 := r.ReadMapStart() + if yyl1555 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1555, d) + } + } else if yyct1555 == codecSelferValueTypeArray1234 { + yyl1555 := r.ReadArrayStart() + if yyl1555 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1555, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Handler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1556Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1556Slc + var yyhl1556 bool = l >= 0 + for yyj1556 := 0; ; yyj1556++ { + if yyhl1556 { + if yyj1556 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1556Slc = r.DecodeBytes(yys1556Slc, true, true) + yys1556 := string(yys1556Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1556 { + case "exec": + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + case "httpGet": + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + case "tcpSocket": + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1556) + } // end switch yys1556 + } // end for yyj1556 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Handler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1560 int + var yyb1560 bool + var yyhl1560 bool = l >= 0 + yyj1560++ + if yyhl1560 { + yyb1560 = yyj1560 > l + } else { + yyb1560 = r.CheckBreak() + } + if yyb1560 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Exec != nil { + x.Exec = nil + } + } else { + if x.Exec == nil { + x.Exec = new(ExecAction) + } + x.Exec.CodecDecodeSelf(d) + } + yyj1560++ + if yyhl1560 { + yyb1560 = yyj1560 > l + } else { + yyb1560 = r.CheckBreak() + } + if yyb1560 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTPGet != nil { + x.HTTPGet = nil + } + } else { + if x.HTTPGet == nil { + x.HTTPGet = new(HTTPGetAction) + } + x.HTTPGet.CodecDecodeSelf(d) + } + yyj1560++ + if yyhl1560 { + yyb1560 = yyj1560 > l + } else { + yyb1560 = r.CheckBreak() + } + if yyb1560 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TCPSocket != nil { + x.TCPSocket = nil + } + } else { + if x.TCPSocket == nil { + x.TCPSocket = new(TCPSocketAction) + } + x.TCPSocket.CodecDecodeSelf(d) + } + for { + yyj1560++ + if yyhl1560 { + yyb1560 = yyj1560 > l + } else { + yyb1560 = r.CheckBreak() + } + if yyb1560 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1560-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Lifecycle) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1564 := z.EncBinary() + _ = yym1564 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1565 := !z.EncBinary() + yy2arr1565 := z.EncBasicHandle().StructToArray + var yyq1565 [2]bool + _, _, _ = yysep1565, yyq1565, yy2arr1565 + const yyr1565 bool = false + yyq1565[0] = x.PostStart != nil + yyq1565[1] = x.PreStop != nil + var yynn1565 int + if yyr1565 || yy2arr1565 { + r.EncodeArrayStart(2) + } else { + yynn1565 = 0 + for _, b := range yyq1565 { + if b { + yynn1565++ + } + } + r.EncodeMapStart(yynn1565) + yynn1565 = 0 + } + if yyr1565 || yy2arr1565 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1565[0] { + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1565[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("postStart")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PostStart == nil { + r.EncodeNil() + } else { + x.PostStart.CodecEncodeSelf(e) + } + } + } + if yyr1565 || yy2arr1565 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1565[1] { + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1565[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preStop")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreStop == nil { + r.EncodeNil() + } else { + x.PreStop.CodecEncodeSelf(e) + } + } + } + if yyr1565 || yy2arr1565 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Lifecycle) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1568 := z.DecBinary() + _ = yym1568 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1569 := r.ContainerType() + if yyct1569 == codecSelferValueTypeMap1234 { + yyl1569 := r.ReadMapStart() + if yyl1569 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1569, d) + } + } else if yyct1569 == codecSelferValueTypeArray1234 { + yyl1569 := r.ReadArrayStart() + if yyl1569 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1569, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Lifecycle) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1570Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1570Slc + var yyhl1570 bool = l >= 0 + for yyj1570 := 0; ; yyj1570++ { + if yyhl1570 { + if yyj1570 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1570Slc = r.DecodeBytes(yys1570Slc, true, true) + yys1570 := string(yys1570Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1570 { + case "postStart": + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + case "preStop": + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1570) + } // end switch yys1570 + } // end for yyj1570 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Lifecycle) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1573 int + var yyb1573 bool + var yyhl1573 bool = l >= 0 + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PostStart != nil { + x.PostStart = nil + } + } else { + if x.PostStart == nil { + x.PostStart = new(Handler) + } + x.PostStart.CodecDecodeSelf(d) + } + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PreStop != nil { + x.PreStop = nil + } + } else { + if x.PreStop == nil { + x.PreStop = new(Handler) + } + x.PreStop.CodecDecodeSelf(d) + } + for { + yyj1573++ + if yyhl1573 { + yyb1573 = yyj1573 > l + } else { + yyb1573 = r.CheckBreak() + } + if yyb1573 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1573-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConditionStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1576 := z.EncBinary() + _ = yym1576 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConditionStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1577 := z.DecBinary() + _ = yym1577 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ContainerStateWaiting) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1578 := z.EncBinary() + _ = yym1578 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1579 := !z.EncBinary() + yy2arr1579 := z.EncBasicHandle().StructToArray + var yyq1579 [2]bool + _, _, _ = yysep1579, yyq1579, yy2arr1579 + const yyr1579 bool = false + yyq1579[0] = x.Reason != "" + yyq1579[1] = x.Message != "" + var yynn1579 int + if yyr1579 || yy2arr1579 { + r.EncodeArrayStart(2) + } else { + yynn1579 = 0 + for _, b := range yyq1579 { + if b { + yynn1579++ + } + } + r.EncodeMapStart(yynn1579) + yynn1579 = 0 + } + if yyr1579 || yy2arr1579 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1579[0] { + yym1581 := z.EncBinary() + _ = yym1581 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1579[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1582 := z.EncBinary() + _ = yym1582 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1579 || yy2arr1579 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1579[1] { + yym1584 := z.EncBinary() + _ = yym1584 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1579[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1585 := z.EncBinary() + _ = yym1585 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1579 || yy2arr1579 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateWaiting) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1586 := z.DecBinary() + _ = yym1586 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1587 := r.ContainerType() + if yyct1587 == codecSelferValueTypeMap1234 { + yyl1587 := r.ReadMapStart() + if yyl1587 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1587, d) + } + } else if yyct1587 == codecSelferValueTypeArray1234 { + yyl1587 := r.ReadArrayStart() + if yyl1587 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1587, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1588Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1588Slc + var yyhl1588 bool = l >= 0 + for yyj1588 := 0; ; yyj1588++ { + if yyhl1588 { + if yyj1588 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1588Slc = r.DecodeBytes(yys1588Slc, true, true) + yys1588 := string(yys1588Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1588 { + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1588) + } // end switch yys1588 + } // end for yyj1588 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateWaiting) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1591 int + var yyb1591 bool + var yyhl1591 bool = l >= 0 + yyj1591++ + if yyhl1591 { + yyb1591 = yyj1591 > l + } else { + yyb1591 = r.CheckBreak() + } + if yyb1591 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1591++ + if yyhl1591 { + yyb1591 = yyj1591 > l + } else { + yyb1591 = r.CheckBreak() + } + if yyb1591 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj1591++ + if yyhl1591 { + yyb1591 = yyj1591 > l + } else { + yyb1591 = r.CheckBreak() + } + if yyb1591 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1591-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateRunning) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1594 := z.EncBinary() + _ = yym1594 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1595 := !z.EncBinary() + yy2arr1595 := z.EncBasicHandle().StructToArray + var yyq1595 [1]bool + _, _, _ = yysep1595, yyq1595, yy2arr1595 + const yyr1595 bool = false + yyq1595[0] = true + var yynn1595 int + if yyr1595 || yy2arr1595 { + r.EncodeArrayStart(1) + } else { + yynn1595 = 0 + for _, b := range yyq1595 { + if b { + yynn1595++ + } + } + r.EncodeMapStart(yynn1595) + yynn1595 = 0 + } + if yyr1595 || yy2arr1595 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1595[0] { + yy1597 := &x.StartedAt + yym1598 := z.EncBinary() + _ = yym1598 + if false { + } else if z.HasExtensions() && z.EncExt(yy1597) { + } else if yym1598 { + z.EncBinaryMarshal(yy1597) + } else if !yym1598 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1597) + } else { + z.EncFallback(yy1597) + } + } else { + r.EncodeNil() + } + } else { + if yyq1595[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1599 := &x.StartedAt + yym1600 := z.EncBinary() + _ = yym1600 + if false { + } else if z.HasExtensions() && z.EncExt(yy1599) { + } else if yym1600 { + z.EncBinaryMarshal(yy1599) + } else if !yym1600 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1599) + } else { + z.EncFallback(yy1599) + } + } + } + if yyr1595 || yy2arr1595 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateRunning) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1601 := z.DecBinary() + _ = yym1601 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1602 := r.ContainerType() + if yyct1602 == codecSelferValueTypeMap1234 { + yyl1602 := r.ReadMapStart() + if yyl1602 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1602, d) + } + } else if yyct1602 == codecSelferValueTypeArray1234 { + yyl1602 := r.ReadArrayStart() + if yyl1602 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1602, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateRunning) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1603Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1603Slc + var yyhl1603 bool = l >= 0 + for yyj1603 := 0; ; yyj1603++ { + if yyhl1603 { + if yyj1603 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1603Slc = r.DecodeBytes(yys1603Slc, true, true) + yys1603 := string(yys1603Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1603 { + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1604 := &x.StartedAt + yym1605 := z.DecBinary() + _ = yym1605 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1604) { + } else if yym1605 { + z.DecBinaryUnmarshal(yyv1604) + } else if !yym1605 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1604) + } else { + z.DecFallback(yyv1604, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1603) + } // end switch yys1603 + } // end for yyj1603 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateRunning) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1606 int + var yyb1606 bool + var yyhl1606 bool = l >= 0 + yyj1606++ + if yyhl1606 { + yyb1606 = yyj1606 > l + } else { + yyb1606 = r.CheckBreak() + } + if yyb1606 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1607 := &x.StartedAt + yym1608 := z.DecBinary() + _ = yym1608 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1607) { + } else if yym1608 { + z.DecBinaryUnmarshal(yyv1607) + } else if !yym1608 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1607) + } else { + z.DecFallback(yyv1607, false) + } + } + for { + yyj1606++ + if yyhl1606 { + yyb1606 = yyj1606 > l + } else { + yyb1606 = r.CheckBreak() + } + if yyb1606 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1606-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStateTerminated) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1609 := z.EncBinary() + _ = yym1609 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1610 := !z.EncBinary() + yy2arr1610 := z.EncBasicHandle().StructToArray + var yyq1610 [7]bool + _, _, _ = yysep1610, yyq1610, yy2arr1610 + const yyr1610 bool = false + yyq1610[1] = x.Signal != 0 + yyq1610[2] = x.Reason != "" + yyq1610[3] = x.Message != "" + yyq1610[4] = true + yyq1610[5] = true + yyq1610[6] = x.ContainerID != "" + var yynn1610 int + if yyr1610 || yy2arr1610 { + r.EncodeArrayStart(7) + } else { + yynn1610 = 1 + for _, b := range yyq1610 { + if b { + yynn1610++ + } + } + r.EncodeMapStart(yynn1610) + yynn1610 = 0 + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1612 := z.EncBinary() + _ = yym1612 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exitCode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1613 := z.EncBinary() + _ = yym1613 + if false { + } else { + r.EncodeInt(int64(x.ExitCode)) + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[1] { + yym1615 := z.EncBinary() + _ = yym1615 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1610[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("signal")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1616 := z.EncBinary() + _ = yym1616 + if false { + } else { + r.EncodeInt(int64(x.Signal)) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[2] { + yym1618 := z.EncBinary() + _ = yym1618 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1610[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1619 := z.EncBinary() + _ = yym1619 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[3] { + yym1621 := z.EncBinary() + _ = yym1621 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1610[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1622 := z.EncBinary() + _ = yym1622 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[4] { + yy1624 := &x.StartedAt + yym1625 := z.EncBinary() + _ = yym1625 + if false { + } else if z.HasExtensions() && z.EncExt(yy1624) { + } else if yym1625 { + z.EncBinaryMarshal(yy1624) + } else if !yym1625 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1624) + } else { + z.EncFallback(yy1624) + } + } else { + r.EncodeNil() + } + } else { + if yyq1610[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1626 := &x.StartedAt + yym1627 := z.EncBinary() + _ = yym1627 + if false { + } else if z.HasExtensions() && z.EncExt(yy1626) { + } else if yym1627 { + z.EncBinaryMarshal(yy1626) + } else if !yym1627 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1626) + } else { + z.EncFallback(yy1626) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[5] { + yy1629 := &x.FinishedAt + yym1630 := z.EncBinary() + _ = yym1630 + if false { + } else if z.HasExtensions() && z.EncExt(yy1629) { + } else if yym1630 { + z.EncBinaryMarshal(yy1629) + } else if !yym1630 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1629) + } else { + z.EncFallback(yy1629) + } + } else { + r.EncodeNil() + } + } else { + if yyq1610[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finishedAt")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1631 := &x.FinishedAt + yym1632 := z.EncBinary() + _ = yym1632 + if false { + } else if z.HasExtensions() && z.EncExt(yy1631) { + } else if yym1632 { + z.EncBinaryMarshal(yy1631) + } else if !yym1632 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1631) + } else { + z.EncFallback(yy1631) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1610[6] { + yym1634 := z.EncBinary() + _ = yym1634 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1610[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1635 := z.EncBinary() + _ = yym1635 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr1610 || yy2arr1610 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStateTerminated) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1636 := z.DecBinary() + _ = yym1636 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1637 := r.ContainerType() + if yyct1637 == codecSelferValueTypeMap1234 { + yyl1637 := r.ReadMapStart() + if yyl1637 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1637, d) + } + } else if yyct1637 == codecSelferValueTypeArray1234 { + yyl1637 := r.ReadArrayStart() + if yyl1637 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1637, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1638Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1638Slc + var yyhl1638 bool = l >= 0 + for yyj1638 := 0; ; yyj1638++ { + if yyhl1638 { + if yyj1638 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1638Slc = r.DecodeBytes(yys1638Slc, true, true) + yys1638 := string(yys1638Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1638 { + case "exitCode": + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + x.ExitCode = int32(r.DecodeInt(32)) + } + case "signal": + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + x.Signal = int32(r.DecodeInt(32)) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "startedAt": + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1643 := &x.StartedAt + yym1644 := z.DecBinary() + _ = yym1644 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1643) { + } else if yym1644 { + z.DecBinaryUnmarshal(yyv1643) + } else if !yym1644 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1643) + } else { + z.DecFallback(yyv1643, false) + } + } + case "finishedAt": + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_unversioned.Time{} + } else { + yyv1645 := &x.FinishedAt + yym1646 := z.DecBinary() + _ = yym1646 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1645) { + } else if yym1646 { + z.DecBinaryUnmarshal(yyv1645) + } else if !yym1646 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1645) + } else { + z.DecFallback(yyv1645, false) + } + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1638) + } // end switch yys1638 + } // end for yyj1638 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStateTerminated) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1648 int + var yyb1648 bool + var yyhl1648 bool = l >= 0 + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExitCode = 0 + } else { + x.ExitCode = int32(r.DecodeInt(32)) + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Signal = 0 + } else { + x.Signal = int32(r.DecodeInt(32)) + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StartedAt = pkg2_unversioned.Time{} + } else { + yyv1653 := &x.StartedAt + yym1654 := z.DecBinary() + _ = yym1654 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1653) { + } else if yym1654 { + z.DecBinaryUnmarshal(yyv1653) + } else if !yym1654 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1653) + } else { + z.DecFallback(yyv1653, false) + } + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FinishedAt = pkg2_unversioned.Time{} + } else { + yyv1655 := &x.FinishedAt + yym1656 := z.DecBinary() + _ = yym1656 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1655) { + } else if yym1656 { + z.DecBinaryUnmarshal(yyv1655) + } else if !yym1656 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1655) + } else { + z.DecFallback(yyv1655, false) + } + } + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + for { + yyj1648++ + if yyhl1648 { + yyb1648 = yyj1648 > l + } else { + yyb1648 = r.CheckBreak() + } + if yyb1648 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1648-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerState) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1658 := z.EncBinary() + _ = yym1658 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1659 := !z.EncBinary() + yy2arr1659 := z.EncBasicHandle().StructToArray + var yyq1659 [3]bool + _, _, _ = yysep1659, yyq1659, yy2arr1659 + const yyr1659 bool = false + yyq1659[0] = x.Waiting != nil + yyq1659[1] = x.Running != nil + yyq1659[2] = x.Terminated != nil + var yynn1659 int + if yyr1659 || yy2arr1659 { + r.EncodeArrayStart(3) + } else { + yynn1659 = 0 + for _, b := range yyq1659 { + if b { + yynn1659++ + } + } + r.EncodeMapStart(yynn1659) + yynn1659 = 0 + } + if yyr1659 || yy2arr1659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1659[0] { + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1659[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("waiting")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Waiting == nil { + r.EncodeNil() + } else { + x.Waiting.CodecEncodeSelf(e) + } + } + } + if yyr1659 || yy2arr1659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1659[1] { + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1659[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("running")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Running == nil { + r.EncodeNil() + } else { + x.Running.CodecEncodeSelf(e) + } + } + } + if yyr1659 || yy2arr1659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1659[2] { + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1659[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Terminated == nil { + r.EncodeNil() + } else { + x.Terminated.CodecEncodeSelf(e) + } + } + } + if yyr1659 || yy2arr1659 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerState) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1663 := z.DecBinary() + _ = yym1663 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1664 := r.ContainerType() + if yyct1664 == codecSelferValueTypeMap1234 { + yyl1664 := r.ReadMapStart() + if yyl1664 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1664, d) + } + } else if yyct1664 == codecSelferValueTypeArray1234 { + yyl1664 := r.ReadArrayStart() + if yyl1664 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1664, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerState) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1665Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1665Slc + var yyhl1665 bool = l >= 0 + for yyj1665 := 0; ; yyj1665++ { + if yyhl1665 { + if yyj1665 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1665Slc = r.DecodeBytes(yys1665Slc, true, true) + yys1665 := string(yys1665Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1665 { + case "waiting": + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + case "running": + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + case "terminated": + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1665) + } // end switch yys1665 + } // end for yyj1665 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerState) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1669 int + var yyb1669 bool + var yyhl1669 bool = l >= 0 + yyj1669++ + if yyhl1669 { + yyb1669 = yyj1669 > l + } else { + yyb1669 = r.CheckBreak() + } + if yyb1669 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Waiting != nil { + x.Waiting = nil + } + } else { + if x.Waiting == nil { + x.Waiting = new(ContainerStateWaiting) + } + x.Waiting.CodecDecodeSelf(d) + } + yyj1669++ + if yyhl1669 { + yyb1669 = yyj1669 > l + } else { + yyb1669 = r.CheckBreak() + } + if yyb1669 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Running != nil { + x.Running = nil + } + } else { + if x.Running == nil { + x.Running = new(ContainerStateRunning) + } + x.Running.CodecDecodeSelf(d) + } + yyj1669++ + if yyhl1669 { + yyb1669 = yyj1669 > l + } else { + yyb1669 = r.CheckBreak() + } + if yyb1669 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Terminated != nil { + x.Terminated = nil + } + } else { + if x.Terminated == nil { + x.Terminated = new(ContainerStateTerminated) + } + x.Terminated.CodecDecodeSelf(d) + } + for { + yyj1669++ + if yyhl1669 { + yyb1669 = yyj1669 > l + } else { + yyb1669 = r.CheckBreak() + } + if yyb1669 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1669-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1673 := z.EncBinary() + _ = yym1673 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1674 := !z.EncBinary() + yy2arr1674 := z.EncBasicHandle().StructToArray + var yyq1674 [8]bool + _, _, _ = yysep1674, yyq1674, yy2arr1674 + const yyr1674 bool = false + yyq1674[1] = true + yyq1674[2] = true + yyq1674[7] = x.ContainerID != "" + var yynn1674 int + if yyr1674 || yy2arr1674 { + r.EncodeArrayStart(8) + } else { + yynn1674 = 5 + for _, b := range yyq1674 { + if b { + yynn1674++ + } + } + r.EncodeMapStart(yynn1674) + yynn1674 = 0 + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1676 := z.EncBinary() + _ = yym1676 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1677 := z.EncBinary() + _ = yym1677 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1674[1] { + yy1679 := &x.State + yy1679.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1674[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("state")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1680 := &x.State + yy1680.CodecEncodeSelf(e) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1674[2] { + yy1682 := &x.LastTerminationState + yy1682.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1674[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastState")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1683 := &x.LastTerminationState + yy1683.CodecEncodeSelf(e) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1685 := z.EncBinary() + _ = yym1685 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ready")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1686 := z.EncBinary() + _ = yym1686 + if false { + } else { + r.EncodeBool(bool(x.Ready)) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1688 := z.EncBinary() + _ = yym1688 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartCount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1689 := z.EncBinary() + _ = yym1689 + if false { + } else { + r.EncodeInt(int64(x.RestartCount)) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1691 := z.EncBinary() + _ = yym1691 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("image")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1692 := z.EncBinary() + _ = yym1692 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Image)) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1694 := z.EncBinary() + _ = yym1694 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imageID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1695 := z.EncBinary() + _ = yym1695 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ImageID)) + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1674[7] { + yym1697 := z.EncBinary() + _ = yym1697 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1674[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1698 := z.EncBinary() + _ = yym1698 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerID)) + } + } + } + if yyr1674 || yy2arr1674 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1699 := z.DecBinary() + _ = yym1699 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1700 := r.ContainerType() + if yyct1700 == codecSelferValueTypeMap1234 { + yyl1700 := r.ReadMapStart() + if yyl1700 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1700, d) + } + } else if yyct1700 == codecSelferValueTypeArray1234 { + yyl1700 := r.ReadArrayStart() + if yyl1700 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1700, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1701Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1701Slc + var yyhl1701 bool = l >= 0 + for yyj1701 := 0; ; yyj1701++ { + if yyhl1701 { + if yyj1701 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1701Slc = r.DecodeBytes(yys1701Slc, true, true) + yys1701 := string(yys1701Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1701 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "state": + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv1703 := &x.State + yyv1703.CodecDecodeSelf(d) + } + case "lastState": + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv1704 := &x.LastTerminationState + yyv1704.CodecDecodeSelf(d) + } + case "ready": + if r.TryDecodeAsNil() { + x.Ready = false + } else { + x.Ready = bool(r.DecodeBool()) + } + case "restartCount": + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + x.RestartCount = int32(r.DecodeInt(32)) + } + case "image": + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + case "imageID": + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + x.ImageID = string(r.DecodeString()) + } + case "containerID": + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1701) + } // end switch yys1701 + } // end for yyj1701 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1710 int + var yyb1710 bool + var yyhl1710 bool = l >= 0 + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.State = ContainerState{} + } else { + yyv1712 := &x.State + yyv1712.CodecDecodeSelf(d) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTerminationState = ContainerState{} + } else { + yyv1713 := &x.LastTerminationState + yyv1713.CodecDecodeSelf(d) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ready = false + } else { + x.Ready = bool(r.DecodeBool()) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartCount = 0 + } else { + x.RestartCount = int32(r.DecodeInt(32)) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Image = "" + } else { + x.Image = string(r.DecodeString()) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImageID = "" + } else { + x.ImageID = string(r.DecodeString()) + } + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerID = "" + } else { + x.ContainerID = string(r.DecodeString()) + } + for { + yyj1710++ + if yyhl1710 { + yyb1710 = yyj1710 > l + } else { + yyb1710 = r.CheckBreak() + } + if yyb1710 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1710-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x PodPhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1719 := z.EncBinary() + _ = yym1719 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodPhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1720 := z.DecBinary() + _ = yym1720 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x PodConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1721 := z.EncBinary() + _ = yym1721 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *PodConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1722 := z.DecBinary() + _ = yym1722 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1723 := z.EncBinary() + _ = yym1723 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1724 := !z.EncBinary() + yy2arr1724 := z.EncBasicHandle().StructToArray + var yyq1724 [6]bool + _, _, _ = yysep1724, yyq1724, yy2arr1724 + const yyr1724 bool = false + yyq1724[2] = true + yyq1724[3] = true + yyq1724[4] = x.Reason != "" + yyq1724[5] = x.Message != "" + var yynn1724 int + if yyr1724 || yy2arr1724 { + r.EncodeArrayStart(6) + } else { + yynn1724 = 2 + for _, b := range yyq1724 { + if b { + yynn1724++ + } + } + r.EncodeMapStart(yynn1724) + yynn1724 = 0 + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1724[2] { + yy1728 := &x.LastProbeTime + yym1729 := z.EncBinary() + _ = yym1729 + if false { + } else if z.HasExtensions() && z.EncExt(yy1728) { + } else if yym1729 { + z.EncBinaryMarshal(yy1728) + } else if !yym1729 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1728) + } else { + z.EncFallback(yy1728) + } + } else { + r.EncodeNil() + } + } else { + if yyq1724[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1730 := &x.LastProbeTime + yym1731 := z.EncBinary() + _ = yym1731 + if false { + } else if z.HasExtensions() && z.EncExt(yy1730) { + } else if yym1731 { + z.EncBinaryMarshal(yy1730) + } else if !yym1731 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1730) + } else { + z.EncFallback(yy1730) + } + } + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1724[3] { + yy1733 := &x.LastTransitionTime + yym1734 := z.EncBinary() + _ = yym1734 + if false { + } else if z.HasExtensions() && z.EncExt(yy1733) { + } else if yym1734 { + z.EncBinaryMarshal(yy1733) + } else if !yym1734 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1733) + } else { + z.EncFallback(yy1733) + } + } else { + r.EncodeNil() + } + } else { + if yyq1724[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1735 := &x.LastTransitionTime + yym1736 := z.EncBinary() + _ = yym1736 + if false { + } else if z.HasExtensions() && z.EncExt(yy1735) { + } else if yym1736 { + z.EncBinaryMarshal(yy1735) + } else if !yym1736 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1735) + } else { + z.EncFallback(yy1735) + } + } + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1724[4] { + yym1738 := z.EncBinary() + _ = yym1738 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1724[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1739 := z.EncBinary() + _ = yym1739 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1724[5] { + yym1741 := z.EncBinary() + _ = yym1741 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1724[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1742 := z.EncBinary() + _ = yym1742 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr1724 || yy2arr1724 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1743 := z.DecBinary() + _ = yym1743 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1744 := r.ContainerType() + if yyct1744 == codecSelferValueTypeMap1234 { + yyl1744 := r.ReadMapStart() + if yyl1744 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1744, d) + } + } else if yyct1744 == codecSelferValueTypeArray1234 { + yyl1744 := r.ReadArrayStart() + if yyl1744 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1744, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1745Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1745Slc + var yyhl1745 bool = l >= 0 + for yyj1745 := 0; ; yyj1745++ { + if yyhl1745 { + if yyj1745 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1745Slc = r.DecodeBytes(yys1745Slc, true, true) + yys1745 := string(yys1745Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1745 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = PodConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_unversioned.Time{} + } else { + yyv1748 := &x.LastProbeTime + yym1749 := z.DecBinary() + _ = yym1749 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1748) { + } else if yym1749 { + z.DecBinaryUnmarshal(yyv1748) + } else if !yym1749 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1748) + } else { + z.DecFallback(yyv1748, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv1750 := &x.LastTransitionTime + yym1751 := z.DecBinary() + _ = yym1751 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1750) { + } else if yym1751 { + z.DecBinaryUnmarshal(yyv1750) + } else if !yym1751 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1750) + } else { + z.DecFallback(yyv1750, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1745) + } // end switch yys1745 + } // end for yyj1745 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1754 int + var yyb1754 bool + var yyhl1754 bool = l >= 0 + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = PodConditionType(r.DecodeString()) + } + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg2_unversioned.Time{} + } else { + yyv1757 := &x.LastProbeTime + yym1758 := z.DecBinary() + _ = yym1758 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1757) { + } else if yym1758 { + z.DecBinaryUnmarshal(yyv1757) + } else if !yym1758 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1757) + } else { + z.DecFallback(yyv1757, false) + } + } + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv1759 := &x.LastTransitionTime + yym1760 := z.DecBinary() + _ = yym1760 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1759) { + } else if yym1760 { + z.DecBinaryUnmarshal(yyv1759) + } else if !yym1760 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1759) + } else { + z.DecFallback(yyv1759, false) + } + } + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj1754++ + if yyhl1754 { + yyb1754 = yyj1754 > l + } else { + yyb1754 = r.CheckBreak() + } + if yyb1754 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1754-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RestartPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1763 := z.EncBinary() + _ = yym1763 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RestartPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1764 := z.DecBinary() + _ = yym1764 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x DNSPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1765 := z.EncBinary() + _ = yym1765 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DNSPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1766 := z.DecBinary() + _ = yym1766 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1767 := z.EncBinary() + _ = yym1767 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1768 := !z.EncBinary() + yy2arr1768 := z.EncBasicHandle().StructToArray + var yyq1768 [1]bool + _, _, _ = yysep1768, yyq1768, yy2arr1768 + const yyr1768 bool = false + var yynn1768 int + if yyr1768 || yy2arr1768 { + r.EncodeArrayStart(1) + } else { + yynn1768 = 1 + for _, b := range yyq1768 { + if b { + yynn1768++ + } + } + r.EncodeMapStart(yynn1768) + yynn1768 = 0 + } + if yyr1768 || yy2arr1768 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym1770 := z.EncBinary() + _ = yym1770 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelectorTerms")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelectorTerms == nil { + r.EncodeNil() + } else { + yym1771 := z.EncBinary() + _ = yym1771 + if false { + } else { + h.encSliceNodeSelectorTerm(([]NodeSelectorTerm)(x.NodeSelectorTerms), e) + } + } + } + if yyr1768 || yy2arr1768 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1772 := z.DecBinary() + _ = yym1772 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1773 := r.ContainerType() + if yyct1773 == codecSelferValueTypeMap1234 { + yyl1773 := r.ReadMapStart() + if yyl1773 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1773, d) + } + } else if yyct1773 == codecSelferValueTypeArray1234 { + yyl1773 := r.ReadArrayStart() + if yyl1773 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1773, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1774Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1774Slc + var yyhl1774 bool = l >= 0 + for yyj1774 := 0; ; yyj1774++ { + if yyhl1774 { + if yyj1774 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1774Slc = r.DecodeBytes(yys1774Slc, true, true) + yys1774 := string(yys1774Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1774 { + case "nodeSelectorTerms": + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv1775 := &x.NodeSelectorTerms + yym1776 := z.DecBinary() + _ = yym1776 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv1775), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1774) + } // end switch yys1774 + } // end for yyj1774 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1777 int + var yyb1777 bool + var yyhl1777 bool = l >= 0 + yyj1777++ + if yyhl1777 { + yyb1777 = yyj1777 > l + } else { + yyb1777 = r.CheckBreak() + } + if yyb1777 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelectorTerms = nil + } else { + yyv1778 := &x.NodeSelectorTerms + yym1779 := z.DecBinary() + _ = yym1779 + if false { + } else { + h.decSliceNodeSelectorTerm((*[]NodeSelectorTerm)(yyv1778), d) + } + } + for { + yyj1777++ + if yyhl1777 { + yyb1777 = yyj1777 > l + } else { + yyb1777 = r.CheckBreak() + } + if yyb1777 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1777-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1780 := z.EncBinary() + _ = yym1780 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1781 := !z.EncBinary() + yy2arr1781 := z.EncBasicHandle().StructToArray + var yyq1781 [1]bool + _, _, _ = yysep1781, yyq1781, yy2arr1781 + const yyr1781 bool = false + var yynn1781 int + if yyr1781 || yy2arr1781 { + r.EncodeArrayStart(1) + } else { + yynn1781 = 1 + for _, b := range yyq1781 { + if b { + yynn1781++ + } + } + r.EncodeMapStart(yynn1781) + yynn1781 = 0 + } + if yyr1781 || yy2arr1781 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1783 := z.EncBinary() + _ = yym1783 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1784 := z.EncBinary() + _ = yym1784 + if false { + } else { + h.encSliceNodeSelectorRequirement(([]NodeSelectorRequirement)(x.MatchExpressions), e) + } + } + } + if yyr1781 || yy2arr1781 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1785 := z.DecBinary() + _ = yym1785 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1786 := r.ContainerType() + if yyct1786 == codecSelferValueTypeMap1234 { + yyl1786 := r.ReadMapStart() + if yyl1786 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1786, d) + } + } else if yyct1786 == codecSelferValueTypeArray1234 { + yyl1786 := r.ReadArrayStart() + if yyl1786 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1786, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1787Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1787Slc + var yyhl1787 bool = l >= 0 + for yyj1787 := 0; ; yyj1787++ { + if yyhl1787 { + if yyj1787 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1787Slc = r.DecodeBytes(yys1787Slc, true, true) + yys1787 := string(yys1787Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1787 { + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1788 := &x.MatchExpressions + yym1789 := z.DecBinary() + _ = yym1789 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv1788), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1787) + } // end switch yys1787 + } // end for yyj1787 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1790 int + var yyb1790 bool + var yyhl1790 bool = l >= 0 + yyj1790++ + if yyhl1790 { + yyb1790 = yyj1790 > l + } else { + yyb1790 = r.CheckBreak() + } + if yyb1790 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1791 := &x.MatchExpressions + yym1792 := z.DecBinary() + _ = yym1792 + if false { + } else { + h.decSliceNodeSelectorRequirement((*[]NodeSelectorRequirement)(yyv1791), d) + } + } + for { + yyj1790++ + if yyhl1790 { + yyb1790 = yyj1790 > l + } else { + yyb1790 = r.CheckBreak() + } + if yyb1790 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1790-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1793 := z.EncBinary() + _ = yym1793 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1794 := !z.EncBinary() + yy2arr1794 := z.EncBasicHandle().StructToArray + var yyq1794 [3]bool + _, _, _ = yysep1794, yyq1794, yy2arr1794 + const yyr1794 bool = false + yyq1794[2] = len(x.Values) != 0 + var yynn1794 int + if yyr1794 || yy2arr1794 { + r.EncodeArrayStart(3) + } else { + yynn1794 = 2 + for _, b := range yyq1794 { + if b { + yynn1794++ + } + } + r.EncodeMapStart(yynn1794) + yynn1794 = 0 + } + if yyr1794 || yy2arr1794 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1796 := z.EncBinary() + _ = yym1796 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1797 := z.EncBinary() + _ = yym1797 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1794 || yy2arr1794 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr1794 || yy2arr1794 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1794[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym1800 := z.EncBinary() + _ = yym1800 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1794[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym1801 := z.EncBinary() + _ = yym1801 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr1794 || yy2arr1794 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1802 := z.DecBinary() + _ = yym1802 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1803 := r.ContainerType() + if yyct1803 == codecSelferValueTypeMap1234 { + yyl1803 := r.ReadMapStart() + if yyl1803 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1803, d) + } + } else if yyct1803 == codecSelferValueTypeArray1234 { + yyl1803 := r.ReadArrayStart() + if yyl1803 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1803, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1804Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1804Slc + var yyhl1804 bool = l >= 0 + for yyj1804 := 0; ; yyj1804++ { + if yyhl1804 { + if yyj1804 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1804Slc = r.DecodeBytes(yys1804Slc, true, true) + yys1804 := string(yys1804Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1804 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = NodeSelectorOperator(r.DecodeString()) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1807 := &x.Values + yym1808 := z.DecBinary() + _ = yym1808 + if false { + } else { + z.F.DecSliceStringX(yyv1807, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1804) + } // end switch yys1804 + } // end for yyj1804 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1809 int + var yyb1809 bool + var yyhl1809 bool = l >= 0 + yyj1809++ + if yyhl1809 { + yyb1809 = yyj1809 > l + } else { + yyb1809 = r.CheckBreak() + } + if yyb1809 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1809++ + if yyhl1809 { + yyb1809 = yyj1809 > l + } else { + yyb1809 = r.CheckBreak() + } + if yyb1809 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = NodeSelectorOperator(r.DecodeString()) + } + yyj1809++ + if yyhl1809 { + yyb1809 = yyj1809 > l + } else { + yyb1809 = r.CheckBreak() + } + if yyb1809 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1812 := &x.Values + yym1813 := z.DecBinary() + _ = yym1813 + if false { + } else { + z.F.DecSliceStringX(yyv1812, false, d) + } + } + for { + yyj1809++ + if yyhl1809 { + yyb1809 = yyj1809 > l + } else { + yyb1809 = r.CheckBreak() + } + if yyb1809 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1809-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1814 := z.EncBinary() + _ = yym1814 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1815 := z.DecBinary() + _ = yym1815 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Affinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1816 := z.EncBinary() + _ = yym1816 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1817 := !z.EncBinary() + yy2arr1817 := z.EncBasicHandle().StructToArray + var yyq1817 [3]bool + _, _, _ = yysep1817, yyq1817, yy2arr1817 + const yyr1817 bool = false + yyq1817[0] = x.NodeAffinity != nil + yyq1817[1] = x.PodAffinity != nil + yyq1817[2] = x.PodAntiAffinity != nil + var yynn1817 int + if yyr1817 || yy2arr1817 { + r.EncodeArrayStart(3) + } else { + yynn1817 = 0 + for _, b := range yyq1817 { + if b { + yynn1817++ + } + } + r.EncodeMapStart(yynn1817) + yynn1817 = 0 + } + if yyr1817 || yy2arr1817 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1817[0] { + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1817[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeAffinity == nil { + r.EncodeNil() + } else { + x.NodeAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1817 || yy2arr1817 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1817[1] { + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1817[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAffinity == nil { + r.EncodeNil() + } else { + x.PodAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1817 || yy2arr1817 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1817[2] { + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1817[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAntiAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodAntiAffinity == nil { + r.EncodeNil() + } else { + x.PodAntiAffinity.CodecEncodeSelf(e) + } + } + } + if yyr1817 || yy2arr1817 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Affinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1821 := z.DecBinary() + _ = yym1821 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1822 := r.ContainerType() + if yyct1822 == codecSelferValueTypeMap1234 { + yyl1822 := r.ReadMapStart() + if yyl1822 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1822, d) + } + } else if yyct1822 == codecSelferValueTypeArray1234 { + yyl1822 := r.ReadArrayStart() + if yyl1822 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1822, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Affinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1823Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1823Slc + var yyhl1823 bool = l >= 0 + for yyj1823 := 0; ; yyj1823++ { + if yyhl1823 { + if yyj1823 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1823Slc = r.DecodeBytes(yys1823Slc, true, true) + yys1823 := string(yys1823Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1823 { + case "nodeAffinity": + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + case "podAffinity": + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + case "podAntiAffinity": + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1823) + } // end switch yys1823 + } // end for yyj1823 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Affinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1827 int + var yyb1827 bool + var yyhl1827 bool = l >= 0 + yyj1827++ + if yyhl1827 { + yyb1827 = yyj1827 > l + } else { + yyb1827 = r.CheckBreak() + } + if yyb1827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeAffinity != nil { + x.NodeAffinity = nil + } + } else { + if x.NodeAffinity == nil { + x.NodeAffinity = new(NodeAffinity) + } + x.NodeAffinity.CodecDecodeSelf(d) + } + yyj1827++ + if yyhl1827 { + yyb1827 = yyj1827 > l + } else { + yyb1827 = r.CheckBreak() + } + if yyb1827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAffinity != nil { + x.PodAffinity = nil + } + } else { + if x.PodAffinity == nil { + x.PodAffinity = new(PodAffinity) + } + x.PodAffinity.CodecDecodeSelf(d) + } + yyj1827++ + if yyhl1827 { + yyb1827 = yyj1827 > l + } else { + yyb1827 = r.CheckBreak() + } + if yyb1827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodAntiAffinity != nil { + x.PodAntiAffinity = nil + } + } else { + if x.PodAntiAffinity == nil { + x.PodAntiAffinity = new(PodAntiAffinity) + } + x.PodAntiAffinity.CodecDecodeSelf(d) + } + for { + yyj1827++ + if yyhl1827 { + yyb1827 = yyj1827 > l + } else { + yyb1827 = r.CheckBreak() + } + if yyb1827 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1827-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1831 := z.EncBinary() + _ = yym1831 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1832 := !z.EncBinary() + yy2arr1832 := z.EncBasicHandle().StructToArray + var yyq1832 [2]bool + _, _, _ = yysep1832, yyq1832, yy2arr1832 + const yyr1832 bool = false + yyq1832[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq1832[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1832 int + if yyr1832 || yy2arr1832 { + r.EncodeArrayStart(2) + } else { + yynn1832 = 0 + for _, b := range yyq1832 { + if b { + yynn1832++ + } + } + r.EncodeMapStart(yynn1832) + yynn1832 = 0 + } + if yyr1832 || yy2arr1832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1832[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1834 := z.EncBinary() + _ = yym1834 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1832[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1835 := z.EncBinary() + _ = yym1835 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1832 || yy2arr1832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1832[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1837 := z.EncBinary() + _ = yym1837 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1832[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1838 := z.EncBinary() + _ = yym1838 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1832 || yy2arr1832 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1839 := z.DecBinary() + _ = yym1839 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1840 := r.ContainerType() + if yyct1840 == codecSelferValueTypeMap1234 { + yyl1840 := r.ReadMapStart() + if yyl1840 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1840, d) + } + } else if yyct1840 == codecSelferValueTypeArray1234 { + yyl1840 := r.ReadArrayStart() + if yyl1840 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1840, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1841Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1841Slc + var yyhl1841 bool = l >= 0 + for yyj1841 := 0; ; yyj1841++ { + if yyhl1841 { + if yyj1841 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1841Slc = r.DecodeBytes(yys1841Slc, true, true) + yys1841 := string(yys1841Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1841 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1842 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1843 := z.DecBinary() + _ = yym1843 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1842), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1844 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1845 := z.DecBinary() + _ = yym1845 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1844), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1841) + } // end switch yys1841 + } // end for yyj1841 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1846 int + var yyb1846 bool + var yyhl1846 bool = l >= 0 + yyj1846++ + if yyhl1846 { + yyb1846 = yyj1846 > l + } else { + yyb1846 = r.CheckBreak() + } + if yyb1846 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1847 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1848 := z.DecBinary() + _ = yym1848 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1847), d) + } + } + yyj1846++ + if yyhl1846 { + yyb1846 = yyj1846 > l + } else { + yyb1846 = r.CheckBreak() + } + if yyb1846 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1849 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1850 := z.DecBinary() + _ = yym1850 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1849), d) + } + } + for { + yyj1846++ + if yyhl1846 { + yyb1846 = yyj1846 > l + } else { + yyb1846 = r.CheckBreak() + } + if yyb1846 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1846-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAntiAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1851 := z.EncBinary() + _ = yym1851 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1852 := !z.EncBinary() + yy2arr1852 := z.EncBasicHandle().StructToArray + var yyq1852 [2]bool + _, _, _ = yysep1852, yyq1852, yy2arr1852 + const yyr1852 bool = false + yyq1852[0] = len(x.RequiredDuringSchedulingIgnoredDuringExecution) != 0 + yyq1852[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1852 int + if yyr1852 || yy2arr1852 { + r.EncodeArrayStart(2) + } else { + yynn1852 = 0 + for _, b := range yyq1852 { + if b { + yynn1852++ + } + } + r.EncodeMapStart(yynn1852) + yynn1852 = 0 + } + if yyr1852 || yy2arr1852 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1852[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1854 := z.EncBinary() + _ = yym1854 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1852[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1855 := z.EncBinary() + _ = yym1855 + if false { + } else { + h.encSlicePodAffinityTerm(([]PodAffinityTerm)(x.RequiredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1852 || yy2arr1852 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1852[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1857 := z.EncBinary() + _ = yym1857 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1852[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1858 := z.EncBinary() + _ = yym1858 + if false { + } else { + h.encSliceWeightedPodAffinityTerm(([]WeightedPodAffinityTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1852 || yy2arr1852 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAntiAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1859 := z.DecBinary() + _ = yym1859 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1860 := r.ContainerType() + if yyct1860 == codecSelferValueTypeMap1234 { + yyl1860 := r.ReadMapStart() + if yyl1860 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1860, d) + } + } else if yyct1860 == codecSelferValueTypeArray1234 { + yyl1860 := r.ReadArrayStart() + if yyl1860 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1860, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAntiAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1861Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1861Slc + var yyhl1861 bool = l >= 0 + for yyj1861 := 0; ; yyj1861++ { + if yyhl1861 { + if yyj1861 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1861Slc = r.DecodeBytes(yys1861Slc, true, true) + yys1861 := string(yys1861Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1861 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1862 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1863 := z.DecBinary() + _ = yym1863 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1862), d) + } + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1864 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1865 := z.DecBinary() + _ = yym1865 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1864), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1861) + } // end switch yys1861 + } // end for yyj1861 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAntiAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1866 int + var yyb1866 bool + var yyhl1866 bool = l >= 0 + yyj1866++ + if yyhl1866 { + yyb1866 = yyj1866 > l + } else { + yyb1866 = r.CheckBreak() + } + if yyb1866 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1867 := &x.RequiredDuringSchedulingIgnoredDuringExecution + yym1868 := z.DecBinary() + _ = yym1868 + if false { + } else { + h.decSlicePodAffinityTerm((*[]PodAffinityTerm)(yyv1867), d) + } + } + yyj1866++ + if yyhl1866 { + yyb1866 = yyj1866 > l + } else { + yyb1866 = r.CheckBreak() + } + if yyb1866 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1869 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1870 := z.DecBinary() + _ = yym1870 + if false { + } else { + h.decSliceWeightedPodAffinityTerm((*[]WeightedPodAffinityTerm)(yyv1869), d) + } + } + for { + yyj1866++ + if yyhl1866 { + yyb1866 = yyj1866 > l + } else { + yyb1866 = r.CheckBreak() + } + if yyb1866 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1866-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *WeightedPodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1871 := z.EncBinary() + _ = yym1871 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1872 := !z.EncBinary() + yy2arr1872 := z.EncBasicHandle().StructToArray + var yyq1872 [2]bool + _, _, _ = yysep1872, yyq1872, yy2arr1872 + const yyr1872 bool = false + var yynn1872 int + if yyr1872 || yy2arr1872 { + r.EncodeArrayStart(2) + } else { + yynn1872 = 2 + for _, b := range yyq1872 { + if b { + yynn1872++ + } + } + r.EncodeMapStart(yynn1872) + yynn1872 = 0 + } + if yyr1872 || yy2arr1872 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1874 := z.EncBinary() + _ = yym1874 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1875 := z.EncBinary() + _ = yym1875 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr1872 || yy2arr1872 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1877 := &x.PodAffinityTerm + yy1877.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podAffinityTerm")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1878 := &x.PodAffinityTerm + yy1878.CodecEncodeSelf(e) + } + if yyr1872 || yy2arr1872 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *WeightedPodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1879 := z.DecBinary() + _ = yym1879 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1880 := r.ContainerType() + if yyct1880 == codecSelferValueTypeMap1234 { + yyl1880 := r.ReadMapStart() + if yyl1880 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1880, d) + } + } else if yyct1880 == codecSelferValueTypeArray1234 { + yyl1880 := r.ReadArrayStart() + if yyl1880 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1880, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1881Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1881Slc + var yyhl1881 bool = l >= 0 + for yyj1881 := 0; ; yyj1881++ { + if yyhl1881 { + if yyj1881 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1881Slc = r.DecodeBytes(yys1881Slc, true, true) + yys1881 := string(yys1881Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1881 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + case "podAffinityTerm": + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv1883 := &x.PodAffinityTerm + yyv1883.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1881) + } // end switch yys1881 + } // end for yyj1881 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *WeightedPodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1884 int + var yyb1884 bool + var yyhl1884 bool = l >= 0 + yyj1884++ + if yyhl1884 { + yyb1884 = yyj1884 > l + } else { + yyb1884 = r.CheckBreak() + } + if yyb1884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + yyj1884++ + if yyhl1884 { + yyb1884 = yyj1884 > l + } else { + yyb1884 = r.CheckBreak() + } + if yyb1884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodAffinityTerm = PodAffinityTerm{} + } else { + yyv1886 := &x.PodAffinityTerm + yyv1886.CodecDecodeSelf(d) + } + for { + yyj1884++ + if yyhl1884 { + yyb1884 = yyj1884 > l + } else { + yyb1884 = r.CheckBreak() + } + if yyb1884 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1884-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAffinityTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1887 := z.EncBinary() + _ = yym1887 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1888 := !z.EncBinary() + yy2arr1888 := z.EncBasicHandle().StructToArray + var yyq1888 [3]bool + _, _, _ = yysep1888, yyq1888, yy2arr1888 + const yyr1888 bool = false + yyq1888[0] = x.LabelSelector != nil + yyq1888[2] = x.TopologyKey != "" + var yynn1888 int + if yyr1888 || yy2arr1888 { + r.EncodeArrayStart(3) + } else { + yynn1888 = 1 + for _, b := range yyq1888 { + if b { + yynn1888++ + } + } + r.EncodeMapStart(yynn1888) + yynn1888 = 0 + } + if yyr1888 || yy2arr1888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1888[0] { + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym1890 := z.EncBinary() + _ = yym1890 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1888[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LabelSelector == nil { + r.EncodeNil() + } else { + yym1891 := z.EncBinary() + _ = yym1891 + if false { + } else if z.HasExtensions() && z.EncExt(x.LabelSelector) { + } else { + z.EncFallback(x.LabelSelector) + } + } + } + } + if yyr1888 || yy2arr1888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym1893 := z.EncBinary() + _ = yym1893 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaces")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Namespaces == nil { + r.EncodeNil() + } else { + yym1894 := z.EncBinary() + _ = yym1894 + if false { + } else { + z.F.EncSliceStringV(x.Namespaces, false, e) + } + } + } + if yyr1888 || yy2arr1888 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1888[2] { + yym1896 := z.EncBinary() + _ = yym1896 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1888[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("topologyKey")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1897 := z.EncBinary() + _ = yym1897 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TopologyKey)) + } + } + } + if yyr1888 || yy2arr1888 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAffinityTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1898 := z.DecBinary() + _ = yym1898 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1899 := r.ContainerType() + if yyct1899 == codecSelferValueTypeMap1234 { + yyl1899 := r.ReadMapStart() + if yyl1899 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1899, d) + } + } else if yyct1899 == codecSelferValueTypeArray1234 { + yyl1899 := r.ReadArrayStart() + if yyl1899 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1899, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAffinityTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1900Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1900Slc + var yyhl1900 bool = l >= 0 + for yyj1900 := 0; ; yyj1900++ { + if yyhl1900 { + if yyj1900 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1900Slc = r.DecodeBytes(yys1900Slc, true, true) + yys1900 := string(yys1900Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1900 { + case "labelSelector": + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_unversioned.LabelSelector) + } + yym1902 := z.DecBinary() + _ = yym1902 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + case "namespaces": + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv1903 := &x.Namespaces + yym1904 := z.DecBinary() + _ = yym1904 + if false { + } else { + z.F.DecSliceStringX(yyv1903, false, d) + } + } + case "topologyKey": + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + x.TopologyKey = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1900) + } // end switch yys1900 + } // end for yyj1900 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAffinityTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1906 int + var yyb1906 bool + var yyhl1906 bool = l >= 0 + yyj1906++ + if yyhl1906 { + yyb1906 = yyj1906 > l + } else { + yyb1906 = r.CheckBreak() + } + if yyb1906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LabelSelector != nil { + x.LabelSelector = nil + } + } else { + if x.LabelSelector == nil { + x.LabelSelector = new(pkg2_unversioned.LabelSelector) + } + yym1908 := z.DecBinary() + _ = yym1908 + if false { + } else if z.HasExtensions() && z.DecExt(x.LabelSelector) { + } else { + z.DecFallback(x.LabelSelector, false) + } + } + yyj1906++ + if yyhl1906 { + yyb1906 = yyj1906 > l + } else { + yyb1906 = r.CheckBreak() + } + if yyb1906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespaces = nil + } else { + yyv1909 := &x.Namespaces + yym1910 := z.DecBinary() + _ = yym1910 + if false { + } else { + z.F.DecSliceStringX(yyv1909, false, d) + } + } + yyj1906++ + if yyhl1906 { + yyb1906 = yyj1906 > l + } else { + yyb1906 = r.CheckBreak() + } + if yyb1906 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TopologyKey = "" + } else { + x.TopologyKey = string(r.DecodeString()) + } + for { + yyj1906++ + if yyhl1906 { + yyb1906 = yyj1906 > l + } else { + yyb1906 = r.CheckBreak() + } + if yyb1906 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1906-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1912 := z.EncBinary() + _ = yym1912 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1913 := !z.EncBinary() + yy2arr1913 := z.EncBasicHandle().StructToArray + var yyq1913 [2]bool + _, _, _ = yysep1913, yyq1913, yy2arr1913 + const yyr1913 bool = false + yyq1913[0] = x.RequiredDuringSchedulingIgnoredDuringExecution != nil + yyq1913[1] = len(x.PreferredDuringSchedulingIgnoredDuringExecution) != 0 + var yynn1913 int + if yyr1913 || yy2arr1913 { + r.EncodeArrayStart(2) + } else { + yynn1913 = 0 + for _, b := range yyq1913 { + if b { + yynn1913++ + } + } + r.EncodeMapStart(yynn1913) + yynn1913 = 0 + } + if yyr1913 || yy2arr1913 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1913[0] { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1913[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecEncodeSelf(e) + } + } + } + if yyr1913 || yy2arr1913 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1913[1] { + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1916 := z.EncBinary() + _ = yym1916 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1913[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferredDuringSchedulingIgnoredDuringExecution")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferredDuringSchedulingIgnoredDuringExecution == nil { + r.EncodeNil() + } else { + yym1917 := z.EncBinary() + _ = yym1917 + if false { + } else { + h.encSlicePreferredSchedulingTerm(([]PreferredSchedulingTerm)(x.PreferredDuringSchedulingIgnoredDuringExecution), e) + } + } + } + } + if yyr1913 || yy2arr1913 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1918 := z.DecBinary() + _ = yym1918 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1919 := r.ContainerType() + if yyct1919 == codecSelferValueTypeMap1234 { + yyl1919 := r.ReadMapStart() + if yyl1919 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1919, d) + } + } else if yyct1919 == codecSelferValueTypeArray1234 { + yyl1919 := r.ReadArrayStart() + if yyl1919 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1919, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAffinity) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1920Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1920Slc + var yyhl1920 bool = l >= 0 + for yyj1920 := 0; ; yyj1920++ { + if yyhl1920 { + if yyj1920 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1920Slc = r.DecodeBytes(yys1920Slc, true, true) + yys1920 := string(yys1920Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1920 { + case "requiredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + case "preferredDuringSchedulingIgnoredDuringExecution": + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1922 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1923 := z.DecBinary() + _ = yym1923 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv1922), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1920) + } // end switch yys1920 + } // end for yyj1920 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAffinity) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1924 int + var yyb1924 bool + var yyhl1924 bool = l >= 0 + yyj1924++ + if yyhl1924 { + yyb1924 = yyj1924 > l + } else { + yyb1924 = r.CheckBreak() + } + if yyb1924 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RequiredDuringSchedulingIgnoredDuringExecution != nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + } else { + if x.RequiredDuringSchedulingIgnoredDuringExecution == nil { + x.RequiredDuringSchedulingIgnoredDuringExecution = new(NodeSelector) + } + x.RequiredDuringSchedulingIgnoredDuringExecution.CodecDecodeSelf(d) + } + yyj1924++ + if yyhl1924 { + yyb1924 = yyj1924 > l + } else { + yyb1924 = r.CheckBreak() + } + if yyb1924 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferredDuringSchedulingIgnoredDuringExecution = nil + } else { + yyv1926 := &x.PreferredDuringSchedulingIgnoredDuringExecution + yym1927 := z.DecBinary() + _ = yym1927 + if false { + } else { + h.decSlicePreferredSchedulingTerm((*[]PreferredSchedulingTerm)(yyv1926), d) + } + } + for { + yyj1924++ + if yyhl1924 { + yyb1924 = yyj1924 > l + } else { + yyb1924 = r.CheckBreak() + } + if yyb1924 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1924-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferredSchedulingTerm) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1928 := z.EncBinary() + _ = yym1928 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1929 := !z.EncBinary() + yy2arr1929 := z.EncBasicHandle().StructToArray + var yyq1929 [2]bool + _, _, _ = yysep1929, yyq1929, yy2arr1929 + const yyr1929 bool = false + var yynn1929 int + if yyr1929 || yy2arr1929 { + r.EncodeArrayStart(2) + } else { + yynn1929 = 2 + for _, b := range yyq1929 { + if b { + yynn1929++ + } + } + r.EncodeMapStart(yynn1929) + yynn1929 = 0 + } + if yyr1929 || yy2arr1929 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1931 := z.EncBinary() + _ = yym1931 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("weight")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1932 := z.EncBinary() + _ = yym1932 + if false { + } else { + r.EncodeInt(int64(x.Weight)) + } + } + if yyr1929 || yy2arr1929 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1934 := &x.Preference + yy1934.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1935 := &x.Preference + yy1935.CodecEncodeSelf(e) + } + if yyr1929 || yy2arr1929 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferredSchedulingTerm) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1936 := z.DecBinary() + _ = yym1936 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1937 := r.ContainerType() + if yyct1937 == codecSelferValueTypeMap1234 { + yyl1937 := r.ReadMapStart() + if yyl1937 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1937, d) + } + } else if yyct1937 == codecSelferValueTypeArray1234 { + yyl1937 := r.ReadArrayStart() + if yyl1937 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1937, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1938Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1938Slc + var yyhl1938 bool = l >= 0 + for yyj1938 := 0; ; yyj1938++ { + if yyhl1938 { + if yyj1938 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1938Slc = r.DecodeBytes(yys1938Slc, true, true) + yys1938 := string(yys1938Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1938 { + case "weight": + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + case "preference": + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv1940 := &x.Preference + yyv1940.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1938) + } // end switch yys1938 + } // end for yyj1938 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferredSchedulingTerm) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1941 int + var yyb1941 bool + var yyhl1941 bool = l >= 0 + yyj1941++ + if yyhl1941 { + yyb1941 = yyj1941 > l + } else { + yyb1941 = r.CheckBreak() + } + if yyb1941 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Weight = 0 + } else { + x.Weight = int32(r.DecodeInt(32)) + } + yyj1941++ + if yyhl1941 { + yyb1941 = yyj1941 > l + } else { + yyb1941 = r.CheckBreak() + } + if yyb1941 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Preference = NodeSelectorTerm{} + } else { + yyv1943 := &x.Preference + yyv1943.CodecDecodeSelf(d) + } + for { + yyj1941++ + if yyhl1941 { + yyb1941 = yyj1941 > l + } else { + yyb1941 = r.CheckBreak() + } + if yyb1941 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1941-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Taint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1944 := z.EncBinary() + _ = yym1944 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1945 := !z.EncBinary() + yy2arr1945 := z.EncBasicHandle().StructToArray + var yyq1945 [3]bool + _, _, _ = yysep1945, yyq1945, yy2arr1945 + const yyr1945 bool = false + yyq1945[1] = x.Value != "" + var yynn1945 int + if yyr1945 || yy2arr1945 { + r.EncodeArrayStart(3) + } else { + yynn1945 = 2 + for _, b := range yyq1945 { + if b { + yynn1945++ + } + } + r.EncodeMapStart(yynn1945) + yynn1945 = 0 + } + if yyr1945 || yy2arr1945 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1947 := z.EncBinary() + _ = yym1947 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1948 := z.EncBinary() + _ = yym1948 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1945 || yy2arr1945 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1945[1] { + yym1950 := z.EncBinary() + _ = yym1950 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1945[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1951 := z.EncBinary() + _ = yym1951 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr1945 || yy2arr1945 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Effect.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + if yyr1945 || yy2arr1945 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Taint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1953 := z.DecBinary() + _ = yym1953 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1954 := r.ContainerType() + if yyct1954 == codecSelferValueTypeMap1234 { + yyl1954 := r.ReadMapStart() + if yyl1954 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1954, d) + } + } else if yyct1954 == codecSelferValueTypeArray1234 { + yyl1954 := r.ReadArrayStart() + if yyl1954 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1954, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Taint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1955Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1955Slc + var yyhl1955 bool = l >= 0 + for yyj1955 := 0; ; yyj1955++ { + if yyhl1955 { + if yyj1955 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1955Slc = r.DecodeBytes(yys1955Slc, true, true) + yys1955 := string(yys1955Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1955 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1955) + } // end switch yys1955 + } // end for yyj1955 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Taint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1959 int + var yyb1959 bool + var yyhl1959 bool = l >= 0 + yyj1959++ + if yyhl1959 { + yyb1959 = yyj1959 > l + } else { + yyb1959 = r.CheckBreak() + } + if yyb1959 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1959++ + if yyhl1959 { + yyb1959 = yyj1959 > l + } else { + yyb1959 = r.CheckBreak() + } + if yyb1959 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj1959++ + if yyhl1959 { + yyb1959 = yyj1959 > l + } else { + yyb1959 = r.CheckBreak() + } + if yyb1959 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + for { + yyj1959++ + if yyhl1959 { + yyb1959 = yyj1959 > l + } else { + yyb1959 = r.CheckBreak() + } + if yyb1959 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1959-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TaintEffect) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1963 := z.EncBinary() + _ = yym1963 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TaintEffect) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1964 := z.DecBinary() + _ = yym1964 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Toleration) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1965 := z.EncBinary() + _ = yym1965 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1966 := !z.EncBinary() + yy2arr1966 := z.EncBasicHandle().StructToArray + var yyq1966 [4]bool + _, _, _ = yysep1966, yyq1966, yy2arr1966 + const yyr1966 bool = false + yyq1966[0] = x.Key != "" + yyq1966[1] = x.Operator != "" + yyq1966[2] = x.Value != "" + yyq1966[3] = x.Effect != "" + var yynn1966 int + if yyr1966 || yy2arr1966 { + r.EncodeArrayStart(4) + } else { + yynn1966 = 0 + for _, b := range yyq1966 { + if b { + yynn1966++ + } + } + r.EncodeMapStart(yynn1966) + yynn1966 = 0 + } + if yyr1966 || yy2arr1966 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1966[0] { + yym1968 := z.EncBinary() + _ = yym1968 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1966[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1969 := z.EncBinary() + _ = yym1969 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + } + if yyr1966 || yy2arr1966 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1966[1] { + x.Operator.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1966[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + } + if yyr1966 || yy2arr1966 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1966[2] { + yym1972 := z.EncBinary() + _ = yym1972 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1966[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1973 := z.EncBinary() + _ = yym1973 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Value)) + } + } + } + if yyr1966 || yy2arr1966 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1966[3] { + x.Effect.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1966[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("effect")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Effect.CodecEncodeSelf(e) + } + } + if yyr1966 || yy2arr1966 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Toleration) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1975 := z.DecBinary() + _ = yym1975 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1976 := r.ContainerType() + if yyct1976 == codecSelferValueTypeMap1234 { + yyl1976 := r.ReadMapStart() + if yyl1976 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1976, d) + } + } else if yyct1976 == codecSelferValueTypeArray1234 { + yyl1976 := r.ReadArrayStart() + if yyl1976 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1976, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Toleration) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1977Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1977Slc + var yyhl1977 bool = l >= 0 + for yyj1977 := 0; ; yyj1977++ { + if yyhl1977 { + if yyj1977 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1977Slc = r.DecodeBytes(yys1977Slc, true, true) + yys1977 := string(yys1977Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1977 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = TolerationOperator(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + case "effect": + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1977) + } // end switch yys1977 + } // end for yyj1977 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Toleration) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1982 int + var yyb1982 bool + var yyhl1982 bool = l >= 0 + yyj1982++ + if yyhl1982 { + yyb1982 = yyj1982 > l + } else { + yyb1982 = r.CheckBreak() + } + if yyb1982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1982++ + if yyhl1982 { + yyb1982 = yyj1982 > l + } else { + yyb1982 = r.CheckBreak() + } + if yyb1982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = TolerationOperator(r.DecodeString()) + } + yyj1982++ + if yyhl1982 { + yyb1982 = yyj1982 > l + } else { + yyb1982 = r.CheckBreak() + } + if yyb1982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Value = "" + } else { + x.Value = string(r.DecodeString()) + } + yyj1982++ + if yyhl1982 { + yyb1982 = yyj1982 > l + } else { + yyb1982 = r.CheckBreak() + } + if yyb1982 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Effect = "" + } else { + x.Effect = TaintEffect(r.DecodeString()) + } + for { + yyj1982++ + if yyhl1982 { + yyb1982 = yyj1982 > l + } else { + yyb1982 = r.CheckBreak() + } + if yyb1982 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1982-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x TolerationOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1987 := z.EncBinary() + _ = yym1987 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *TolerationOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1988 := z.DecBinary() + _ = yym1988 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1989 := z.EncBinary() + _ = yym1989 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1990 := !z.EncBinary() + yy2arr1990 := z.EncBasicHandle().StructToArray + var yyq1990 [17]bool + _, _, _ = yysep1990, yyq1990, yy2arr1990 + const yyr1990 bool = false + yyq1990[0] = len(x.Volumes) != 0 + yyq1990[2] = x.RestartPolicy != "" + yyq1990[3] = x.TerminationGracePeriodSeconds != nil + yyq1990[4] = x.ActiveDeadlineSeconds != nil + yyq1990[5] = x.DNSPolicy != "" + yyq1990[6] = len(x.NodeSelector) != 0 + yyq1990[7] = x.ServiceAccountName != "" + yyq1990[8] = x.DeprecatedServiceAccount != "" + yyq1990[9] = x.NodeName != "" + yyq1990[10] = x.HostNetwork != false + yyq1990[11] = x.HostPID != false + yyq1990[12] = x.HostIPC != false + yyq1990[13] = x.SecurityContext != nil + yyq1990[14] = len(x.ImagePullSecrets) != 0 + yyq1990[15] = x.Hostname != "" + yyq1990[16] = x.Subdomain != "" + var yynn1990 int + if yyr1990 || yy2arr1990 { + r.EncodeArrayStart(17) + } else { + yynn1990 = 1 + for _, b := range yyq1990 { + if b { + yynn1990++ + } + } + r.EncodeMapStart(yynn1990) + yynn1990 = 0 + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[0] { + if x.Volumes == nil { + r.EncodeNil() + } else { + yym1992 := z.EncBinary() + _ = yym1992 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym1993 := z.EncBinary() + _ = yym1993 + if false { + } else { + h.encSliceVolume(([]Volume)(x.Volumes), e) + } + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym1995 := z.EncBinary() + _ = yym1995 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Containers == nil { + r.EncodeNil() + } else { + yym1996 := z.EncBinary() + _ = yym1996 + if false { + } else { + h.encSliceContainer(([]Container)(x.Containers), e) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[2] { + x.RestartPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("restartPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.RestartPolicy.CodecEncodeSelf(e) + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[3] { + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy1999 := *x.TerminationGracePeriodSeconds + yym2000 := z.EncBinary() + _ = yym2000 + if false { + } else { + r.EncodeInt(int64(yy1999)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("terminationGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TerminationGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy2001 := *x.TerminationGracePeriodSeconds + yym2002 := z.EncBinary() + _ = yym2002 + if false { + } else { + r.EncodeInt(int64(yy2001)) + } + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[4] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy2004 := *x.ActiveDeadlineSeconds + yym2005 := z.EncBinary() + _ = yym2005 + if false { + } else { + r.EncodeInt(int64(yy2004)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy2006 := *x.ActiveDeadlineSeconds + yym2007 := z.EncBinary() + _ = yym2007 + if false { + } else { + r.EncodeInt(int64(yy2006)) + } + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[5] { + x.DNSPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("dnsPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.DNSPolicy.CodecEncodeSelf(e) + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[6] { + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym2010 := z.EncBinary() + _ = yym2010 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeSelector == nil { + r.EncodeNil() + } else { + yym2011 := z.EncBinary() + _ = yym2011 + if false { + } else { + z.F.EncMapStringStringV(x.NodeSelector, false, e) + } + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[7] { + yym2013 := z.EncBinary() + _ = yym2013 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceAccountName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2014 := z.EncBinary() + _ = yym2014 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceAccountName)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[8] { + yym2016 := z.EncBinary() + _ = yym2016 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DeprecatedServiceAccount)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceAccount")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2017 := z.EncBinary() + _ = yym2017 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DeprecatedServiceAccount)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[9] { + yym2019 := z.EncBinary() + _ = yym2019 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2020 := z.EncBinary() + _ = yym2020 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.NodeName)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[10] { + yym2022 := z.EncBinary() + _ = yym2022 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1990[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2023 := z.EncBinary() + _ = yym2023 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[11] { + yym2025 := z.EncBinary() + _ = yym2025 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1990[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2026 := z.EncBinary() + _ = yym2026 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[12] { + yym2028 := z.EncBinary() + _ = yym2028 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1990[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2029 := z.EncBinary() + _ = yym2029 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[13] { + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("securityContext")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SecurityContext == nil { + r.EncodeNil() + } else { + x.SecurityContext.CodecEncodeSelf(e) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[14] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2032 := z.EncBinary() + _ = yym2032 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1990[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2033 := z.EncBinary() + _ = yym2033 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[15] { + yym2035 := z.EncBinary() + _ = yym2035 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2036 := z.EncBinary() + _ = yym2036 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1990[16] { + yym2038 := z.EncBinary() + _ = yym2038 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1990[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subdomain")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2039 := z.EncBinary() + _ = yym2039 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subdomain)) + } + } + } + if yyr1990 || yy2arr1990 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2040 := z.DecBinary() + _ = yym2040 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2041 := r.ContainerType() + if yyct2041 == codecSelferValueTypeMap1234 { + yyl2041 := r.ReadMapStart() + if yyl2041 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2041, d) + } + } else if yyct2041 == codecSelferValueTypeArray1234 { + yyl2041 := r.ReadArrayStart() + if yyl2041 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2041, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2042Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2042Slc + var yyhl2042 bool = l >= 0 + for yyj2042 := 0; ; yyj2042++ { + if yyhl2042 { + if yyj2042 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2042Slc = r.DecodeBytes(yys2042Slc, true, true) + yys2042 := string(yys2042Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2042 { + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv2043 := &x.Volumes + yym2044 := z.DecBinary() + _ = yym2044 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv2043), d) + } + } + case "containers": + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv2045 := &x.Containers + yym2046 := z.DecBinary() + _ = yym2046 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv2045), d) + } + } + case "restartPolicy": + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + x.RestartPolicy = RestartPolicy(r.DecodeString()) + } + case "terminationGracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym2049 := z.DecBinary() + _ = yym2049 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym2051 := z.DecBinary() + _ = yym2051 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "dnsPolicy": + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + x.DNSPolicy = DNSPolicy(r.DecodeString()) + } + case "nodeSelector": + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv2053 := &x.NodeSelector + yym2054 := z.DecBinary() + _ = yym2054 + if false { + } else { + z.F.DecMapStringStringX(yyv2053, false, d) + } + } + case "serviceAccountName": + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + x.ServiceAccountName = string(r.DecodeString()) + } + case "serviceAccount": + if r.TryDecodeAsNil() { + x.DeprecatedServiceAccount = "" + } else { + x.DeprecatedServiceAccount = string(r.DecodeString()) + } + case "nodeName": + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + x.NodeName = string(r.DecodeString()) + } + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + case "securityContext": + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2062 := &x.ImagePullSecrets + yym2063 := z.DecBinary() + _ = yym2063 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2062), d) + } + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + case "subdomain": + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + x.Subdomain = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2042) + } // end switch yys2042 + } // end for yyj2042 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2066 int + var yyb2066 bool + var yyhl2066 bool = l >= 0 + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv2067 := &x.Volumes + yym2068 := z.DecBinary() + _ = yym2068 + if false { + } else { + h.decSliceVolume((*[]Volume)(yyv2067), d) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Containers = nil + } else { + yyv2069 := &x.Containers + yym2070 := z.DecBinary() + _ = yym2070 + if false { + } else { + h.decSliceContainer((*[]Container)(yyv2069), d) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RestartPolicy = "" + } else { + x.RestartPolicy = RestartPolicy(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TerminationGracePeriodSeconds != nil { + x.TerminationGracePeriodSeconds = nil + } + } else { + if x.TerminationGracePeriodSeconds == nil { + x.TerminationGracePeriodSeconds = new(int64) + } + yym2073 := z.DecBinary() + _ = yym2073 + if false { + } else { + *((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym2075 := z.DecBinary() + _ = yym2075 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DNSPolicy = "" + } else { + x.DNSPolicy = DNSPolicy(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeSelector = nil + } else { + yyv2077 := &x.NodeSelector + yym2078 := z.DecBinary() + _ = yym2078 + if false { + } else { + z.F.DecMapStringStringX(yyv2077, false, d) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceAccountName = "" + } else { + x.ServiceAccountName = string(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DeprecatedServiceAccount = "" + } else { + x.DeprecatedServiceAccount = string(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeName = "" + } else { + x.NodeName = string(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SecurityContext != nil { + x.SecurityContext = nil + } + } else { + if x.SecurityContext == nil { + x.SecurityContext = new(PodSecurityContext) + } + x.SecurityContext.CodecDecodeSelf(d) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2086 := &x.ImagePullSecrets + yym2087 := z.DecBinary() + _ = yym2087 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2086), d) + } + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subdomain = "" + } else { + x.Subdomain = string(r.DecodeString()) + } + for { + yyj2066++ + if yyhl2066 { + yyb2066 = yyj2066 > l + } else { + yyb2066 = r.CheckBreak() + } + if yyb2066 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2066-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2090 := z.EncBinary() + _ = yym2090 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2091 := !z.EncBinary() + yy2arr2091 := z.EncBasicHandle().StructToArray + var yyq2091 [5]bool + _, _, _ = yysep2091, yyq2091, yy2arr2091 + const yyr2091 bool = false + yyq2091[0] = x.SELinuxOptions != nil + yyq2091[1] = x.RunAsUser != nil + yyq2091[2] = x.RunAsNonRoot != nil + yyq2091[3] = len(x.SupplementalGroups) != 0 + yyq2091[4] = x.FSGroup != nil + var yynn2091 int + if yyr2091 || yy2arr2091 { + r.EncodeArrayStart(5) + } else { + yynn2091 = 0 + for _, b := range yyq2091 { + if b { + yynn2091++ + } + } + r.EncodeMapStart(yynn2091) + yynn2091 = 0 + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2091[0] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2091[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2091[1] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy2094 := *x.RunAsUser + yym2095 := z.EncBinary() + _ = yym2095 + if false { + } else { + r.EncodeInt(int64(yy2094)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2091[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy2096 := *x.RunAsUser + yym2097 := z.EncBinary() + _ = yym2097 + if false { + } else { + r.EncodeInt(int64(yy2096)) + } + } + } + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2091[2] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy2099 := *x.RunAsNonRoot + yym2100 := z.EncBinary() + _ = yym2100 + if false { + } else { + r.EncodeBool(bool(yy2099)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2091[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy2101 := *x.RunAsNonRoot + yym2102 := z.EncBinary() + _ = yym2102 + if false { + } else { + r.EncodeBool(bool(yy2101)) + } + } + } + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2091[3] { + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym2104 := z.EncBinary() + _ = yym2104 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2091[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SupplementalGroups == nil { + r.EncodeNil() + } else { + yym2105 := z.EncBinary() + _ = yym2105 + if false { + } else { + z.F.EncSliceInt64V(x.SupplementalGroups, false, e) + } + } + } + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2091[4] { + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy2107 := *x.FSGroup + yym2108 := z.EncBinary() + _ = yym2108 + if false { + } else { + r.EncodeInt(int64(yy2107)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2091[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FSGroup == nil { + r.EncodeNil() + } else { + yy2109 := *x.FSGroup + yym2110 := z.EncBinary() + _ = yym2110 + if false { + } else { + r.EncodeInt(int64(yy2109)) + } + } + } + } + if yyr2091 || yy2arr2091 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2111 := z.DecBinary() + _ = yym2111 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2112 := r.ContainerType() + if yyct2112 == codecSelferValueTypeMap1234 { + yyl2112 := r.ReadMapStart() + if yyl2112 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2112, d) + } + } else if yyct2112 == codecSelferValueTypeArray1234 { + yyl2112 := r.ReadArrayStart() + if yyl2112 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2112, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2113Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2113Slc + var yyhl2113 bool = l >= 0 + for yyj2113 := 0; ; yyj2113++ { + if yyhl2113 { + if yyj2113 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2113Slc = r.DecodeBytes(yys2113Slc, true, true) + yys2113 := string(yys2113Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2113 { + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym2116 := z.DecBinary() + _ = yym2116 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym2118 := z.DecBinary() + _ = yym2118 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv2119 := &x.SupplementalGroups + yym2120 := z.DecBinary() + _ = yym2120 + if false { + } else { + z.F.DecSliceInt64X(yyv2119, false, d) + } + } + case "fsGroup": + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym2122 := z.DecBinary() + _ = yym2122 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys2113) + } // end switch yys2113 + } // end for yyj2113 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2123 int + var yyb2123 bool + var yyhl2123 bool = l >= 0 + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym2126 := z.DecBinary() + _ = yym2126 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym2128 := z.DecBinary() + _ = yym2128 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = nil + } else { + yyv2129 := &x.SupplementalGroups + yym2130 := z.DecBinary() + _ = yym2130 + if false { + } else { + z.F.DecSliceInt64X(yyv2129, false, d) + } + } + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FSGroup != nil { + x.FSGroup = nil + } + } else { + if x.FSGroup == nil { + x.FSGroup = new(int64) + } + yym2132 := z.DecBinary() + _ = yym2132 + if false { + } else { + *((*int64)(x.FSGroup)) = int64(r.DecodeInt(64)) + } + } + for { + yyj2123++ + if yyhl2123 { + yyb2123 = yyj2123 > l + } else { + yyb2123 = r.CheckBreak() + } + if yyb2123 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2123-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2133 := z.EncBinary() + _ = yym2133 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2134 := !z.EncBinary() + yy2arr2134 := z.EncBasicHandle().StructToArray + var yyq2134 [8]bool + _, _, _ = yysep2134, yyq2134, yy2arr2134 + const yyr2134 bool = false + yyq2134[0] = x.Phase != "" + yyq2134[1] = len(x.Conditions) != 0 + yyq2134[2] = x.Message != "" + yyq2134[3] = x.Reason != "" + yyq2134[4] = x.HostIP != "" + yyq2134[5] = x.PodIP != "" + yyq2134[6] = x.StartTime != nil + yyq2134[7] = len(x.ContainerStatuses) != 0 + var yynn2134 int + if yyr2134 || yy2arr2134 { + r.EncodeArrayStart(8) + } else { + yynn2134 = 0 + for _, b := range yyq2134 { + if b { + yynn2134++ + } + } + r.EncodeMapStart(yynn2134) + yynn2134 = 0 + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2134[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[1] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2137 := z.EncBinary() + _ = yym2137 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2134[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2138 := z.EncBinary() + _ = yym2138 + if false { + } else { + h.encSlicePodCondition(([]PodCondition)(x.Conditions), e) + } + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[2] { + yym2140 := z.EncBinary() + _ = yym2140 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2134[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2141 := z.EncBinary() + _ = yym2141 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[3] { + yym2143 := z.EncBinary() + _ = yym2143 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2134[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2144 := z.EncBinary() + _ = yym2144 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[4] { + yym2146 := z.EncBinary() + _ = yym2146 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2134[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2147 := z.EncBinary() + _ = yym2147 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.HostIP)) + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[5] { + yym2149 := z.EncBinary() + _ = yym2149 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2134[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2150 := z.EncBinary() + _ = yym2150 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodIP)) + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[6] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym2152 := z.EncBinary() + _ = yym2152 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym2152 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym2152 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2134[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym2153 := z.EncBinary() + _ = yym2153 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym2153 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym2153 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2134[7] { + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym2155 := z.EncBinary() + _ = yym2155 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2134[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerStatuses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ContainerStatuses == nil { + r.EncodeNil() + } else { + yym2156 := z.EncBinary() + _ = yym2156 + if false { + } else { + h.encSliceContainerStatus(([]ContainerStatus)(x.ContainerStatuses), e) + } + } + } + } + if yyr2134 || yy2arr2134 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2157 := z.DecBinary() + _ = yym2157 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2158 := r.ContainerType() + if yyct2158 == codecSelferValueTypeMap1234 { + yyl2158 := r.ReadMapStart() + if yyl2158 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2158, d) + } + } else if yyct2158 == codecSelferValueTypeArray1234 { + yyl2158 := r.ReadArrayStart() + if yyl2158 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2158, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2159Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2159Slc + var yyhl2159 bool = l >= 0 + for yyj2159 := 0; ; yyj2159++ { + if yyhl2159 { + if yyj2159 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2159Slc = r.DecodeBytes(yys2159Slc, true, true) + yys2159 := string(yys2159Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2159 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PodPhase(r.DecodeString()) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv2161 := &x.Conditions + yym2162 := z.DecBinary() + _ = yym2162 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv2161), d) + } + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "hostIP": + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + case "podIP": + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + x.PodIP = string(r.DecodeString()) + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_unversioned.Time) + } + yym2168 := z.DecBinary() + _ = yym2168 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym2168 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym2168 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "containerStatuses": + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv2169 := &x.ContainerStatuses + yym2170 := z.DecBinary() + _ = yym2170 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv2169), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2159) + } // end switch yys2159 + } // end for yyj2159 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2171 int + var yyb2171 bool + var yyhl2171 bool = l >= 0 + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = PodPhase(r.DecodeString()) + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv2173 := &x.Conditions + yym2174 := z.DecBinary() + _ = yym2174 + if false { + } else { + h.decSlicePodCondition((*[]PodCondition)(yyv2173), d) + } + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIP = "" + } else { + x.HostIP = string(r.DecodeString()) + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodIP = "" + } else { + x.PodIP = string(r.DecodeString()) + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg2_unversioned.Time) + } + yym2180 := z.DecBinary() + _ = yym2180 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym2180 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym2180 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerStatuses = nil + } else { + yyv2181 := &x.ContainerStatuses + yym2182 := z.DecBinary() + _ = yym2182 + if false { + } else { + h.decSliceContainerStatus((*[]ContainerStatus)(yyv2181), d) + } + } + for { + yyj2171++ + if yyhl2171 { + yyb2171 = yyj2171 > l + } else { + yyb2171 = r.CheckBreak() + } + if yyb2171 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2171-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodStatusResult) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2183 := z.EncBinary() + _ = yym2183 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2184 := !z.EncBinary() + yy2arr2184 := z.EncBasicHandle().StructToArray + var yyq2184 [4]bool + _, _, _ = yysep2184, yyq2184, yy2arr2184 + const yyr2184 bool = false + yyq2184[0] = x.Kind != "" + yyq2184[1] = x.APIVersion != "" + yyq2184[2] = true + yyq2184[3] = true + var yynn2184 int + if yyr2184 || yy2arr2184 { + r.EncodeArrayStart(4) + } else { + yynn2184 = 0 + for _, b := range yyq2184 { + if b { + yynn2184++ + } + } + r.EncodeMapStart(yynn2184) + yynn2184 = 0 + } + if yyr2184 || yy2arr2184 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2184[0] { + yym2186 := z.EncBinary() + _ = yym2186 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2184[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2187 := z.EncBinary() + _ = yym2187 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2184 || yy2arr2184 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2184[1] { + yym2189 := z.EncBinary() + _ = yym2189 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2184[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2190 := z.EncBinary() + _ = yym2190 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2184 || yy2arr2184 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2184[2] { + yy2192 := &x.ObjectMeta + yy2192.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2184[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2193 := &x.ObjectMeta + yy2193.CodecEncodeSelf(e) + } + } + if yyr2184 || yy2arr2184 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2184[3] { + yy2195 := &x.Status + yy2195.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2184[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2196 := &x.Status + yy2196.CodecEncodeSelf(e) + } + } + if yyr2184 || yy2arr2184 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodStatusResult) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2197 := z.DecBinary() + _ = yym2197 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2198 := r.ContainerType() + if yyct2198 == codecSelferValueTypeMap1234 { + yyl2198 := r.ReadMapStart() + if yyl2198 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2198, d) + } + } else if yyct2198 == codecSelferValueTypeArray1234 { + yyl2198 := r.ReadArrayStart() + if yyl2198 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2198, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodStatusResult) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2199Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2199Slc + var yyhl2199 bool = l >= 0 + for yyj2199 := 0; ; yyj2199++ { + if yyhl2199 { + if yyj2199 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2199Slc = r.DecodeBytes(yys2199Slc, true, true) + yys2199 := string(yys2199Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2199 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2202 := &x.ObjectMeta + yyv2202.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2203 := &x.Status + yyv2203.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2199) + } // end switch yys2199 + } // end for yyj2199 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodStatusResult) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2204 int + var yyb2204 bool + var yyhl2204 bool = l >= 0 + yyj2204++ + if yyhl2204 { + yyb2204 = yyj2204 > l + } else { + yyb2204 = r.CheckBreak() + } + if yyb2204 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2204++ + if yyhl2204 { + yyb2204 = yyj2204 > l + } else { + yyb2204 = r.CheckBreak() + } + if yyb2204 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2204++ + if yyhl2204 { + yyb2204 = yyj2204 > l + } else { + yyb2204 = r.CheckBreak() + } + if yyb2204 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2207 := &x.ObjectMeta + yyv2207.CodecDecodeSelf(d) + } + yyj2204++ + if yyhl2204 { + yyb2204 = yyj2204 > l + } else { + yyb2204 = r.CheckBreak() + } + if yyb2204 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2208 := &x.Status + yyv2208.CodecDecodeSelf(d) + } + for { + yyj2204++ + if yyhl2204 { + yyb2204 = yyj2204 > l + } else { + yyb2204 = r.CheckBreak() + } + if yyb2204 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2204-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Pod) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2209 := z.EncBinary() + _ = yym2209 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2210 := !z.EncBinary() + yy2arr2210 := z.EncBasicHandle().StructToArray + var yyq2210 [5]bool + _, _, _ = yysep2210, yyq2210, yy2arr2210 + const yyr2210 bool = false + yyq2210[0] = x.Kind != "" + yyq2210[1] = x.APIVersion != "" + yyq2210[2] = true + yyq2210[3] = true + yyq2210[4] = true + var yynn2210 int + if yyr2210 || yy2arr2210 { + r.EncodeArrayStart(5) + } else { + yynn2210 = 0 + for _, b := range yyq2210 { + if b { + yynn2210++ + } + } + r.EncodeMapStart(yynn2210) + yynn2210 = 0 + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2210[0] { + yym2212 := z.EncBinary() + _ = yym2212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2210[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2213 := z.EncBinary() + _ = yym2213 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2210[1] { + yym2215 := z.EncBinary() + _ = yym2215 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2210[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2216 := z.EncBinary() + _ = yym2216 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2210[2] { + yy2218 := &x.ObjectMeta + yy2218.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2210[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2219 := &x.ObjectMeta + yy2219.CodecEncodeSelf(e) + } + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2210[3] { + yy2221 := &x.Spec + yy2221.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2210[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2222 := &x.Spec + yy2222.CodecEncodeSelf(e) + } + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2210[4] { + yy2224 := &x.Status + yy2224.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2210[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2225 := &x.Status + yy2225.CodecEncodeSelf(e) + } + } + if yyr2210 || yy2arr2210 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Pod) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2226 := z.DecBinary() + _ = yym2226 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2227 := r.ContainerType() + if yyct2227 == codecSelferValueTypeMap1234 { + yyl2227 := r.ReadMapStart() + if yyl2227 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2227, d) + } + } else if yyct2227 == codecSelferValueTypeArray1234 { + yyl2227 := r.ReadArrayStart() + if yyl2227 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2227, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Pod) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2228Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2228Slc + var yyhl2228 bool = l >= 0 + for yyj2228 := 0; ; yyj2228++ { + if yyhl2228 { + if yyj2228 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2228Slc = r.DecodeBytes(yys2228Slc, true, true) + yys2228 := string(yys2228Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2228 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2231 := &x.ObjectMeta + yyv2231.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2232 := &x.Spec + yyv2232.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2233 := &x.Status + yyv2233.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2228) + } // end switch yys2228 + } // end for yyj2228 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Pod) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2234 int + var yyb2234 bool + var yyhl2234 bool = l >= 0 + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2237 := &x.ObjectMeta + yyv2237.CodecDecodeSelf(d) + } + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2238 := &x.Spec + yyv2238.CodecDecodeSelf(d) + } + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodStatus{} + } else { + yyv2239 := &x.Status + yyv2239.CodecDecodeSelf(d) + } + for { + yyj2234++ + if yyhl2234 { + yyb2234 = yyj2234 > l + } else { + yyb2234 = r.CheckBreak() + } + if yyb2234 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2234-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2240 := z.EncBinary() + _ = yym2240 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2241 := !z.EncBinary() + yy2arr2241 := z.EncBasicHandle().StructToArray + var yyq2241 [4]bool + _, _, _ = yysep2241, yyq2241, yy2arr2241 + const yyr2241 bool = false + yyq2241[0] = x.Kind != "" + yyq2241[1] = x.APIVersion != "" + yyq2241[2] = true + var yynn2241 int + if yyr2241 || yy2arr2241 { + r.EncodeArrayStart(4) + } else { + yynn2241 = 1 + for _, b := range yyq2241 { + if b { + yynn2241++ + } + } + r.EncodeMapStart(yynn2241) + yynn2241 = 0 + } + if yyr2241 || yy2arr2241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2241[0] { + yym2243 := z.EncBinary() + _ = yym2243 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2241[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2244 := z.EncBinary() + _ = yym2244 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2241 || yy2arr2241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2241[1] { + yym2246 := z.EncBinary() + _ = yym2246 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2241[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2247 := z.EncBinary() + _ = yym2247 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2241 || yy2arr2241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2241[2] { + yy2249 := &x.ListMeta + yym2250 := z.EncBinary() + _ = yym2250 + if false { + } else if z.HasExtensions() && z.EncExt(yy2249) { + } else { + z.EncFallback(yy2249) + } + } else { + r.EncodeNil() + } + } else { + if yyq2241[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2251 := &x.ListMeta + yym2252 := z.EncBinary() + _ = yym2252 + if false { + } else if z.HasExtensions() && z.EncExt(yy2251) { + } else { + z.EncFallback(yy2251) + } + } + } + if yyr2241 || yy2arr2241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2254 := z.EncBinary() + _ = yym2254 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2255 := z.EncBinary() + _ = yym2255 + if false { + } else { + h.encSlicePod(([]Pod)(x.Items), e) + } + } + } + if yyr2241 || yy2arr2241 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2256 := z.DecBinary() + _ = yym2256 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2257 := r.ContainerType() + if yyct2257 == codecSelferValueTypeMap1234 { + yyl2257 := r.ReadMapStart() + if yyl2257 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2257, d) + } + } else if yyct2257 == codecSelferValueTypeArray1234 { + yyl2257 := r.ReadArrayStart() + if yyl2257 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2257, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2258Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2258Slc + var yyhl2258 bool = l >= 0 + for yyj2258 := 0; ; yyj2258++ { + if yyhl2258 { + if yyj2258 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2258Slc = r.DecodeBytes(yys2258Slc, true, true) + yys2258 := string(yys2258Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2258 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2261 := &x.ListMeta + yym2262 := z.DecBinary() + _ = yym2262 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2261) { + } else { + z.DecFallback(yyv2261, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2263 := &x.Items + yym2264 := z.DecBinary() + _ = yym2264 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv2263), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2258) + } // end switch yys2258 + } // end for yyj2258 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2265 int + var yyb2265 bool + var yyhl2265 bool = l >= 0 + yyj2265++ + if yyhl2265 { + yyb2265 = yyj2265 > l + } else { + yyb2265 = r.CheckBreak() + } + if yyb2265 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2265++ + if yyhl2265 { + yyb2265 = yyj2265 > l + } else { + yyb2265 = r.CheckBreak() + } + if yyb2265 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2265++ + if yyhl2265 { + yyb2265 = yyj2265 > l + } else { + yyb2265 = r.CheckBreak() + } + if yyb2265 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2268 := &x.ListMeta + yym2269 := z.DecBinary() + _ = yym2269 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2268) { + } else { + z.DecFallback(yyv2268, false) + } + } + yyj2265++ + if yyhl2265 { + yyb2265 = yyj2265 > l + } else { + yyb2265 = r.CheckBreak() + } + if yyb2265 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2270 := &x.Items + yym2271 := z.DecBinary() + _ = yym2271 + if false { + } else { + h.decSlicePod((*[]Pod)(yyv2270), d) + } + } + for { + yyj2265++ + if yyhl2265 { + yyb2265 = yyj2265 > l + } else { + yyb2265 = r.CheckBreak() + } + if yyb2265 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2265-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2272 := z.EncBinary() + _ = yym2272 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2273 := !z.EncBinary() + yy2arr2273 := z.EncBasicHandle().StructToArray + var yyq2273 [2]bool + _, _, _ = yysep2273, yyq2273, yy2arr2273 + const yyr2273 bool = false + yyq2273[0] = true + yyq2273[1] = true + var yynn2273 int + if yyr2273 || yy2arr2273 { + r.EncodeArrayStart(2) + } else { + yynn2273 = 0 + for _, b := range yyq2273 { + if b { + yynn2273++ + } + } + r.EncodeMapStart(yynn2273) + yynn2273 = 0 + } + if yyr2273 || yy2arr2273 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2273[0] { + yy2275 := &x.ObjectMeta + yy2275.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2273[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2276 := &x.ObjectMeta + yy2276.CodecEncodeSelf(e) + } + } + if yyr2273 || yy2arr2273 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2273[1] { + yy2278 := &x.Spec + yy2278.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2273[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2279 := &x.Spec + yy2279.CodecEncodeSelf(e) + } + } + if yyr2273 || yy2arr2273 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2280 := z.DecBinary() + _ = yym2280 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2281 := r.ContainerType() + if yyct2281 == codecSelferValueTypeMap1234 { + yyl2281 := r.ReadMapStart() + if yyl2281 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2281, d) + } + } else if yyct2281 == codecSelferValueTypeArray1234 { + yyl2281 := r.ReadArrayStart() + if yyl2281 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2281, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2282Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2282Slc + var yyhl2282 bool = l >= 0 + for yyj2282 := 0; ; yyj2282++ { + if yyhl2282 { + if yyj2282 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2282Slc = r.DecodeBytes(yys2282Slc, true, true) + yys2282 := string(yys2282Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2282 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2283 := &x.ObjectMeta + yyv2283.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2284 := &x.Spec + yyv2284.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2282) + } // end switch yys2282 + } // end for yyj2282 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2285 int + var yyb2285 bool + var yyhl2285 bool = l >= 0 + yyj2285++ + if yyhl2285 { + yyb2285 = yyj2285 > l + } else { + yyb2285 = r.CheckBreak() + } + if yyb2285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2286 := &x.ObjectMeta + yyv2286.CodecDecodeSelf(d) + } + yyj2285++ + if yyhl2285 { + yyb2285 = yyj2285 > l + } else { + yyb2285 = r.CheckBreak() + } + if yyb2285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSpec{} + } else { + yyv2287 := &x.Spec + yyv2287.CodecDecodeSelf(d) + } + for { + yyj2285++ + if yyhl2285 { + yyb2285 = yyj2285 > l + } else { + yyb2285 = r.CheckBreak() + } + if yyb2285 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2285-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2288 := z.EncBinary() + _ = yym2288 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2289 := !z.EncBinary() + yy2arr2289 := z.EncBasicHandle().StructToArray + var yyq2289 [4]bool + _, _, _ = yysep2289, yyq2289, yy2arr2289 + const yyr2289 bool = false + yyq2289[0] = x.Kind != "" + yyq2289[1] = x.APIVersion != "" + yyq2289[2] = true + yyq2289[3] = true + var yynn2289 int + if yyr2289 || yy2arr2289 { + r.EncodeArrayStart(4) + } else { + yynn2289 = 0 + for _, b := range yyq2289 { + if b { + yynn2289++ + } + } + r.EncodeMapStart(yynn2289) + yynn2289 = 0 + } + if yyr2289 || yy2arr2289 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2289[0] { + yym2291 := z.EncBinary() + _ = yym2291 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2289[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2292 := z.EncBinary() + _ = yym2292 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2289 || yy2arr2289 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2289[1] { + yym2294 := z.EncBinary() + _ = yym2294 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2289[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2295 := z.EncBinary() + _ = yym2295 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2289 || yy2arr2289 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2289[2] { + yy2297 := &x.ObjectMeta + yy2297.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2289[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2298 := &x.ObjectMeta + yy2298.CodecEncodeSelf(e) + } + } + if yyr2289 || yy2arr2289 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2289[3] { + yy2300 := &x.Template + yy2300.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2289[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2301 := &x.Template + yy2301.CodecEncodeSelf(e) + } + } + if yyr2289 || yy2arr2289 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2302 := z.DecBinary() + _ = yym2302 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2303 := r.ContainerType() + if yyct2303 == codecSelferValueTypeMap1234 { + yyl2303 := r.ReadMapStart() + if yyl2303 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2303, d) + } + } else if yyct2303 == codecSelferValueTypeArray1234 { + yyl2303 := r.ReadArrayStart() + if yyl2303 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2303, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2304Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2304Slc + var yyhl2304 bool = l >= 0 + for yyj2304 := 0; ; yyj2304++ { + if yyhl2304 { + if yyj2304 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2304Slc = r.DecodeBytes(yys2304Slc, true, true) + yys2304 := string(yys2304Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2304 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2307 := &x.ObjectMeta + yyv2307.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv2308 := &x.Template + yyv2308.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2304) + } // end switch yys2304 + } // end for yyj2304 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2309 int + var yyb2309 bool + var yyhl2309 bool = l >= 0 + yyj2309++ + if yyhl2309 { + yyb2309 = yyj2309 > l + } else { + yyb2309 = r.CheckBreak() + } + if yyb2309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2309++ + if yyhl2309 { + yyb2309 = yyj2309 > l + } else { + yyb2309 = r.CheckBreak() + } + if yyb2309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2309++ + if yyhl2309 { + yyb2309 = yyj2309 > l + } else { + yyb2309 = r.CheckBreak() + } + if yyb2309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2312 := &x.ObjectMeta + yyv2312.CodecDecodeSelf(d) + } + yyj2309++ + if yyhl2309 { + yyb2309 = yyj2309 > l + } else { + yyb2309 = r.CheckBreak() + } + if yyb2309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = PodTemplateSpec{} + } else { + yyv2313 := &x.Template + yyv2313.CodecDecodeSelf(d) + } + for { + yyj2309++ + if yyhl2309 { + yyb2309 = yyj2309 > l + } else { + yyb2309 = r.CheckBreak() + } + if yyb2309 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2309-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodTemplateList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2314 := z.EncBinary() + _ = yym2314 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2315 := !z.EncBinary() + yy2arr2315 := z.EncBasicHandle().StructToArray + var yyq2315 [4]bool + _, _, _ = yysep2315, yyq2315, yy2arr2315 + const yyr2315 bool = false + yyq2315[0] = x.Kind != "" + yyq2315[1] = x.APIVersion != "" + yyq2315[2] = true + var yynn2315 int + if yyr2315 || yy2arr2315 { + r.EncodeArrayStart(4) + } else { + yynn2315 = 1 + for _, b := range yyq2315 { + if b { + yynn2315++ + } + } + r.EncodeMapStart(yynn2315) + yynn2315 = 0 + } + if yyr2315 || yy2arr2315 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2315[0] { + yym2317 := z.EncBinary() + _ = yym2317 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2315[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2318 := z.EncBinary() + _ = yym2318 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2315 || yy2arr2315 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2315[1] { + yym2320 := z.EncBinary() + _ = yym2320 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2315[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2321 := z.EncBinary() + _ = yym2321 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2315 || yy2arr2315 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2315[2] { + yy2323 := &x.ListMeta + yym2324 := z.EncBinary() + _ = yym2324 + if false { + } else if z.HasExtensions() && z.EncExt(yy2323) { + } else { + z.EncFallback(yy2323) + } + } else { + r.EncodeNil() + } + } else { + if yyq2315[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2325 := &x.ListMeta + yym2326 := z.EncBinary() + _ = yym2326 + if false { + } else if z.HasExtensions() && z.EncExt(yy2325) { + } else { + z.EncFallback(yy2325) + } + } + } + if yyr2315 || yy2arr2315 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2328 := z.EncBinary() + _ = yym2328 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2329 := z.EncBinary() + _ = yym2329 + if false { + } else { + h.encSlicePodTemplate(([]PodTemplate)(x.Items), e) + } + } + } + if yyr2315 || yy2arr2315 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodTemplateList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2330 := z.DecBinary() + _ = yym2330 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2331 := r.ContainerType() + if yyct2331 == codecSelferValueTypeMap1234 { + yyl2331 := r.ReadMapStart() + if yyl2331 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2331, d) + } + } else if yyct2331 == codecSelferValueTypeArray1234 { + yyl2331 := r.ReadArrayStart() + if yyl2331 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2331, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodTemplateList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2332Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2332Slc + var yyhl2332 bool = l >= 0 + for yyj2332 := 0; ; yyj2332++ { + if yyhl2332 { + if yyj2332 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2332Slc = r.DecodeBytes(yys2332Slc, true, true) + yys2332 := string(yys2332Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2332 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2335 := &x.ListMeta + yym2336 := z.DecBinary() + _ = yym2336 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2335) { + } else { + z.DecFallback(yyv2335, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2337 := &x.Items + yym2338 := z.DecBinary() + _ = yym2338 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv2337), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2332) + } // end switch yys2332 + } // end for yyj2332 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodTemplateList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2339 int + var yyb2339 bool + var yyhl2339 bool = l >= 0 + yyj2339++ + if yyhl2339 { + yyb2339 = yyj2339 > l + } else { + yyb2339 = r.CheckBreak() + } + if yyb2339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2339++ + if yyhl2339 { + yyb2339 = yyj2339 > l + } else { + yyb2339 = r.CheckBreak() + } + if yyb2339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2339++ + if yyhl2339 { + yyb2339 = yyj2339 > l + } else { + yyb2339 = r.CheckBreak() + } + if yyb2339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2342 := &x.ListMeta + yym2343 := z.DecBinary() + _ = yym2343 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2342) { + } else { + z.DecFallback(yyv2342, false) + } + } + yyj2339++ + if yyhl2339 { + yyb2339 = yyj2339 > l + } else { + yyb2339 = r.CheckBreak() + } + if yyb2339 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2344 := &x.Items + yym2345 := z.DecBinary() + _ = yym2345 + if false { + } else { + h.decSlicePodTemplate((*[]PodTemplate)(yyv2344), d) + } + } + for { + yyj2339++ + if yyhl2339 { + yyb2339 = yyj2339 > l + } else { + yyb2339 = r.CheckBreak() + } + if yyb2339 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2339-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2346 := z.EncBinary() + _ = yym2346 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2347 := !z.EncBinary() + yy2arr2347 := z.EncBasicHandle().StructToArray + var yyq2347 [3]bool + _, _, _ = yysep2347, yyq2347, yy2arr2347 + const yyr2347 bool = false + yyq2347[0] = x.Replicas != nil + yyq2347[1] = len(x.Selector) != 0 + yyq2347[2] = x.Template != nil + var yynn2347 int + if yyr2347 || yy2arr2347 { + r.EncodeArrayStart(3) + } else { + yynn2347 = 0 + for _, b := range yyq2347 { + if b { + yynn2347++ + } + } + r.EncodeMapStart(yynn2347) + yynn2347 = 0 + } + if yyr2347 || yy2arr2347 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2347[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy2349 := *x.Replicas + yym2350 := z.EncBinary() + _ = yym2350 + if false { + } else { + r.EncodeInt(int64(yy2349)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2347[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy2351 := *x.Replicas + yym2352 := z.EncBinary() + _ = yym2352 + if false { + } else { + r.EncodeInt(int64(yy2351)) + } + } + } + } + if yyr2347 || yy2arr2347 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2347[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym2354 := z.EncBinary() + _ = yym2354 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2347[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2355 := z.EncBinary() + _ = yym2355 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2347 || yy2arr2347 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2347[2] { + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2347[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Template == nil { + r.EncodeNil() + } else { + x.Template.CodecEncodeSelf(e) + } + } + } + if yyr2347 || yy2arr2347 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2357 := z.DecBinary() + _ = yym2357 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2358 := r.ContainerType() + if yyct2358 == codecSelferValueTypeMap1234 { + yyl2358 := r.ReadMapStart() + if yyl2358 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2358, d) + } + } else if yyct2358 == codecSelferValueTypeArray1234 { + yyl2358 := r.ReadArrayStart() + if yyl2358 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2358, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2359Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2359Slc + var yyhl2359 bool = l >= 0 + for yyj2359 := 0; ; yyj2359++ { + if yyhl2359 { + if yyj2359 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2359Slc = r.DecodeBytes(yys2359Slc, true, true) + yys2359 := string(yys2359Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2359 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym2361 := z.DecBinary() + _ = yym2361 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2362 := &x.Selector + yym2363 := z.DecBinary() + _ = yym2363 + if false { + } else { + z.F.DecMapStringStringX(yyv2362, false, d) + } + } + case "template": + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2359) + } // end switch yys2359 + } // end for yyj2359 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2365 int + var yyb2365 bool + var yyhl2365 bool = l >= 0 + yyj2365++ + if yyhl2365 { + yyb2365 = yyj2365 > l + } else { + yyb2365 = r.CheckBreak() + } + if yyb2365 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym2367 := z.DecBinary() + _ = yym2367 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj2365++ + if yyhl2365 { + yyb2365 = yyj2365 > l + } else { + yyb2365 = r.CheckBreak() + } + if yyb2365 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2368 := &x.Selector + yym2369 := z.DecBinary() + _ = yym2369 + if false { + } else { + z.F.DecMapStringStringX(yyv2368, false, d) + } + } + yyj2365++ + if yyhl2365 { + yyb2365 = yyj2365 > l + } else { + yyb2365 = r.CheckBreak() + } + if yyb2365 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Template != nil { + x.Template = nil + } + } else { + if x.Template == nil { + x.Template = new(PodTemplateSpec) + } + x.Template.CodecDecodeSelf(d) + } + for { + yyj2365++ + if yyhl2365 { + yyb2365 = yyj2365 > l + } else { + yyb2365 = r.CheckBreak() + } + if yyb2365 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2365-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2371 := z.EncBinary() + _ = yym2371 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2372 := !z.EncBinary() + yy2arr2372 := z.EncBasicHandle().StructToArray + var yyq2372 [4]bool + _, _, _ = yysep2372, yyq2372, yy2arr2372 + const yyr2372 bool = false + yyq2372[1] = x.FullyLabeledReplicas != 0 + yyq2372[2] = x.ReadyReplicas != 0 + yyq2372[3] = x.ObservedGeneration != 0 + var yynn2372 int + if yyr2372 || yy2arr2372 { + r.EncodeArrayStart(4) + } else { + yynn2372 = 1 + for _, b := range yyq2372 { + if b { + yynn2372++ + } + } + r.EncodeMapStart(yynn2372) + yynn2372 = 0 + } + if yyr2372 || yy2arr2372 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2374 := z.EncBinary() + _ = yym2374 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2375 := z.EncBinary() + _ = yym2375 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr2372 || yy2arr2372 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2372[1] { + yym2377 := z.EncBinary() + _ = yym2377 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2372[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2378 := z.EncBinary() + _ = yym2378 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr2372 || yy2arr2372 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2372[2] { + yym2380 := z.EncBinary() + _ = yym2380 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2372[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2381 := z.EncBinary() + _ = yym2381 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr2372 || yy2arr2372 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2372[3] { + yym2383 := z.EncBinary() + _ = yym2383 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2372[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2384 := z.EncBinary() + _ = yym2384 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr2372 || yy2arr2372 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2385 := z.DecBinary() + _ = yym2385 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2386 := r.ContainerType() + if yyct2386 == codecSelferValueTypeMap1234 { + yyl2386 := r.ReadMapStart() + if yyl2386 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2386, d) + } + } else if yyct2386 == codecSelferValueTypeArray1234 { + yyl2386 := r.ReadArrayStart() + if yyl2386 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2386, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2387Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2387Slc + var yyhl2387 bool = l >= 0 + for yyj2387 := 0; ; yyj2387++ { + if yyhl2387 { + if yyj2387 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2387Slc = r.DecodeBytes(yys2387Slc, true, true) + yys2387 := string(yys2387Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2387 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys2387) + } // end switch yys2387 + } // end for yyj2387 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2392 int + var yyb2392 bool + var yyhl2392 bool = l >= 0 + yyj2392++ + if yyhl2392 { + yyb2392 = yyj2392 > l + } else { + yyb2392 = r.CheckBreak() + } + if yyb2392 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj2392++ + if yyhl2392 { + yyb2392 = yyj2392 > l + } else { + yyb2392 = r.CheckBreak() + } + if yyb2392 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + yyj2392++ + if yyhl2392 { + yyb2392 = yyj2392 > l + } else { + yyb2392 = r.CheckBreak() + } + if yyb2392 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + yyj2392++ + if yyhl2392 { + yyb2392 = yyj2392 > l + } else { + yyb2392 = r.CheckBreak() + } + if yyb2392 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + for { + yyj2392++ + if yyhl2392 { + yyb2392 = yyj2392 > l + } else { + yyb2392 = r.CheckBreak() + } + if yyb2392 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2392-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationController) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2397 := z.EncBinary() + _ = yym2397 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2398 := !z.EncBinary() + yy2arr2398 := z.EncBasicHandle().StructToArray + var yyq2398 [5]bool + _, _, _ = yysep2398, yyq2398, yy2arr2398 + const yyr2398 bool = false + yyq2398[0] = x.Kind != "" + yyq2398[1] = x.APIVersion != "" + yyq2398[2] = true + yyq2398[3] = true + yyq2398[4] = true + var yynn2398 int + if yyr2398 || yy2arr2398 { + r.EncodeArrayStart(5) + } else { + yynn2398 = 0 + for _, b := range yyq2398 { + if b { + yynn2398++ + } + } + r.EncodeMapStart(yynn2398) + yynn2398 = 0 + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2398[0] { + yym2400 := z.EncBinary() + _ = yym2400 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2398[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2401 := z.EncBinary() + _ = yym2401 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2398[1] { + yym2403 := z.EncBinary() + _ = yym2403 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2398[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2404 := z.EncBinary() + _ = yym2404 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2398[2] { + yy2406 := &x.ObjectMeta + yy2406.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2398[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2407 := &x.ObjectMeta + yy2407.CodecEncodeSelf(e) + } + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2398[3] { + yy2409 := &x.Spec + yy2409.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2398[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2410 := &x.Spec + yy2410.CodecEncodeSelf(e) + } + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2398[4] { + yy2412 := &x.Status + yy2412.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2398[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2413 := &x.Status + yy2413.CodecEncodeSelf(e) + } + } + if yyr2398 || yy2arr2398 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationController) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2414 := z.DecBinary() + _ = yym2414 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2415 := r.ContainerType() + if yyct2415 == codecSelferValueTypeMap1234 { + yyl2415 := r.ReadMapStart() + if yyl2415 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2415, d) + } + } else if yyct2415 == codecSelferValueTypeArray1234 { + yyl2415 := r.ReadArrayStart() + if yyl2415 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2415, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationController) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2416Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2416Slc + var yyhl2416 bool = l >= 0 + for yyj2416 := 0; ; yyj2416++ { + if yyhl2416 { + if yyj2416 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2416Slc = r.DecodeBytes(yys2416Slc, true, true) + yys2416 := string(yys2416Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2416 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2419 := &x.ObjectMeta + yyv2419.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv2420 := &x.Spec + yyv2420.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv2421 := &x.Status + yyv2421.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2416) + } // end switch yys2416 + } // end for yyj2416 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationController) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2422 int + var yyb2422 bool + var yyhl2422 bool = l >= 0 + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2425 := &x.ObjectMeta + yyv2425.CodecDecodeSelf(d) + } + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicationControllerSpec{} + } else { + yyv2426 := &x.Spec + yyv2426.CodecDecodeSelf(d) + } + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicationControllerStatus{} + } else { + yyv2427 := &x.Status + yyv2427.CodecDecodeSelf(d) + } + for { + yyj2422++ + if yyhl2422 { + yyb2422 = yyj2422 > l + } else { + yyb2422 = r.CheckBreak() + } + if yyb2422 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2422-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2428 := z.EncBinary() + _ = yym2428 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2429 := !z.EncBinary() + yy2arr2429 := z.EncBasicHandle().StructToArray + var yyq2429 [4]bool + _, _, _ = yysep2429, yyq2429, yy2arr2429 + const yyr2429 bool = false + yyq2429[0] = x.Kind != "" + yyq2429[1] = x.APIVersion != "" + yyq2429[2] = true + var yynn2429 int + if yyr2429 || yy2arr2429 { + r.EncodeArrayStart(4) + } else { + yynn2429 = 1 + for _, b := range yyq2429 { + if b { + yynn2429++ + } + } + r.EncodeMapStart(yynn2429) + yynn2429 = 0 + } + if yyr2429 || yy2arr2429 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2429[0] { + yym2431 := z.EncBinary() + _ = yym2431 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2429[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2432 := z.EncBinary() + _ = yym2432 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2429 || yy2arr2429 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2429[1] { + yym2434 := z.EncBinary() + _ = yym2434 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2429[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2435 := z.EncBinary() + _ = yym2435 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2429 || yy2arr2429 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2429[2] { + yy2437 := &x.ListMeta + yym2438 := z.EncBinary() + _ = yym2438 + if false { + } else if z.HasExtensions() && z.EncExt(yy2437) { + } else { + z.EncFallback(yy2437) + } + } else { + r.EncodeNil() + } + } else { + if yyq2429[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2439 := &x.ListMeta + yym2440 := z.EncBinary() + _ = yym2440 + if false { + } else if z.HasExtensions() && z.EncExt(yy2439) { + } else { + z.EncFallback(yy2439) + } + } + } + if yyr2429 || yy2arr2429 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2442 := z.EncBinary() + _ = yym2442 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2443 := z.EncBinary() + _ = yym2443 + if false { + } else { + h.encSliceReplicationController(([]ReplicationController)(x.Items), e) + } + } + } + if yyr2429 || yy2arr2429 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2444 := z.DecBinary() + _ = yym2444 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2445 := r.ContainerType() + if yyct2445 == codecSelferValueTypeMap1234 { + yyl2445 := r.ReadMapStart() + if yyl2445 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2445, d) + } + } else if yyct2445 == codecSelferValueTypeArray1234 { + yyl2445 := r.ReadArrayStart() + if yyl2445 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2445, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2446Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2446Slc + var yyhl2446 bool = l >= 0 + for yyj2446 := 0; ; yyj2446++ { + if yyhl2446 { + if yyj2446 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2446Slc = r.DecodeBytes(yys2446Slc, true, true) + yys2446 := string(yys2446Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2446 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2449 := &x.ListMeta + yym2450 := z.DecBinary() + _ = yym2450 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2449) { + } else { + z.DecFallback(yyv2449, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2451 := &x.Items + yym2452 := z.DecBinary() + _ = yym2452 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv2451), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2446) + } // end switch yys2446 + } // end for yyj2446 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2453 int + var yyb2453 bool + var yyhl2453 bool = l >= 0 + yyj2453++ + if yyhl2453 { + yyb2453 = yyj2453 > l + } else { + yyb2453 = r.CheckBreak() + } + if yyb2453 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2453++ + if yyhl2453 { + yyb2453 = yyj2453 > l + } else { + yyb2453 = r.CheckBreak() + } + if yyb2453 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2453++ + if yyhl2453 { + yyb2453 = yyj2453 > l + } else { + yyb2453 = r.CheckBreak() + } + if yyb2453 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2456 := &x.ListMeta + yym2457 := z.DecBinary() + _ = yym2457 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2456) { + } else { + z.DecFallback(yyv2456, false) + } + } + yyj2453++ + if yyhl2453 { + yyb2453 = yyj2453 > l + } else { + yyb2453 = r.CheckBreak() + } + if yyb2453 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2458 := &x.Items + yym2459 := z.DecBinary() + _ = yym2459 + if false { + } else { + h.decSliceReplicationController((*[]ReplicationController)(yyv2458), d) + } + } + for { + yyj2453++ + if yyhl2453 { + yyb2453 = yyj2453 > l + } else { + yyb2453 = r.CheckBreak() + } + if yyb2453 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2453-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ServiceAffinity) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2460 := z.EncBinary() + _ = yym2460 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceAffinity) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2461 := z.DecBinary() + _ = yym2461 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ServiceType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym2462 := z.EncBinary() + _ = yym2462 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ServiceType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2463 := z.DecBinary() + _ = yym2463 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ServiceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2464 := z.EncBinary() + _ = yym2464 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2465 := !z.EncBinary() + yy2arr2465 := z.EncBasicHandle().StructToArray + var yyq2465 [1]bool + _, _, _ = yysep2465, yyq2465, yy2arr2465 + const yyr2465 bool = false + yyq2465[0] = true + var yynn2465 int + if yyr2465 || yy2arr2465 { + r.EncodeArrayStart(1) + } else { + yynn2465 = 0 + for _, b := range yyq2465 { + if b { + yynn2465++ + } + } + r.EncodeMapStart(yynn2465) + yynn2465 = 0 + } + if yyr2465 || yy2arr2465 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2465[0] { + yy2467 := &x.LoadBalancer + yy2467.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2465[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2468 := &x.LoadBalancer + yy2468.CodecEncodeSelf(e) + } + } + if yyr2465 || yy2arr2465 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2469 := z.DecBinary() + _ = yym2469 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2470 := r.ContainerType() + if yyct2470 == codecSelferValueTypeMap1234 { + yyl2470 := r.ReadMapStart() + if yyl2470 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2470, d) + } + } else if yyct2470 == codecSelferValueTypeArray1234 { + yyl2470 := r.ReadArrayStart() + if yyl2470 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2470, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2471Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2471Slc + var yyhl2471 bool = l >= 0 + for yyj2471 := 0; ; yyj2471++ { + if yyhl2471 { + if yyj2471 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2471Slc = r.DecodeBytes(yys2471Slc, true, true) + yys2471 := string(yys2471Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2471 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv2472 := &x.LoadBalancer + yyv2472.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2471) + } // end switch yys2471 + } // end for yyj2471 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2473 int + var yyb2473 bool + var yyhl2473 bool = l >= 0 + yyj2473++ + if yyhl2473 { + yyb2473 = yyj2473 > l + } else { + yyb2473 = r.CheckBreak() + } + if yyb2473 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = LoadBalancerStatus{} + } else { + yyv2474 := &x.LoadBalancer + yyv2474.CodecDecodeSelf(d) + } + for { + yyj2473++ + if yyhl2473 { + yyb2473 = yyj2473 > l + } else { + yyb2473 = r.CheckBreak() + } + if yyb2473 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2473-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2475 := z.EncBinary() + _ = yym2475 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2476 := !z.EncBinary() + yy2arr2476 := z.EncBasicHandle().StructToArray + var yyq2476 [1]bool + _, _, _ = yysep2476, yyq2476, yy2arr2476 + const yyr2476 bool = false + yyq2476[0] = len(x.Ingress) != 0 + var yynn2476 int + if yyr2476 || yy2arr2476 { + r.EncodeArrayStart(1) + } else { + yynn2476 = 0 + for _, b := range yyq2476 { + if b { + yynn2476++ + } + } + r.EncodeMapStart(yynn2476) + yynn2476 = 0 + } + if yyr2476 || yy2arr2476 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2476[0] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym2478 := z.EncBinary() + _ = yym2478 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2476[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym2479 := z.EncBinary() + _ = yym2479 + if false { + } else { + h.encSliceLoadBalancerIngress(([]LoadBalancerIngress)(x.Ingress), e) + } + } + } + } + if yyr2476 || yy2arr2476 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2480 := z.DecBinary() + _ = yym2480 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2481 := r.ContainerType() + if yyct2481 == codecSelferValueTypeMap1234 { + yyl2481 := r.ReadMapStart() + if yyl2481 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2481, d) + } + } else if yyct2481 == codecSelferValueTypeArray1234 { + yyl2481 := r.ReadArrayStart() + if yyl2481 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2481, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2482Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2482Slc + var yyhl2482 bool = l >= 0 + for yyj2482 := 0; ; yyj2482++ { + if yyhl2482 { + if yyj2482 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2482Slc = r.DecodeBytes(yys2482Slc, true, true) + yys2482 := string(yys2482Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2482 { + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv2483 := &x.Ingress + yym2484 := z.DecBinary() + _ = yym2484 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv2483), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2482) + } // end switch yys2482 + } // end for yyj2482 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2485 int + var yyb2485 bool + var yyhl2485 bool = l >= 0 + yyj2485++ + if yyhl2485 { + yyb2485 = yyj2485 > l + } else { + yyb2485 = r.CheckBreak() + } + if yyb2485 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv2486 := &x.Ingress + yym2487 := z.DecBinary() + _ = yym2487 + if false { + } else { + h.decSliceLoadBalancerIngress((*[]LoadBalancerIngress)(yyv2486), d) + } + } + for { + yyj2485++ + if yyhl2485 { + yyb2485 = yyj2485 > l + } else { + yyb2485 = r.CheckBreak() + } + if yyb2485 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2485-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LoadBalancerIngress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2488 := z.EncBinary() + _ = yym2488 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2489 := !z.EncBinary() + yy2arr2489 := z.EncBasicHandle().StructToArray + var yyq2489 [2]bool + _, _, _ = yysep2489, yyq2489, yy2arr2489 + const yyr2489 bool = false + yyq2489[0] = x.IP != "" + yyq2489[1] = x.Hostname != "" + var yynn2489 int + if yyr2489 || yy2arr2489 { + r.EncodeArrayStart(2) + } else { + yynn2489 = 0 + for _, b := range yyq2489 { + if b { + yynn2489++ + } + } + r.EncodeMapStart(yynn2489) + yynn2489 = 0 + } + if yyr2489 || yy2arr2489 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2489[0] { + yym2491 := z.EncBinary() + _ = yym2491 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2489[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2492 := z.EncBinary() + _ = yym2492 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + } + if yyr2489 || yy2arr2489 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2489[1] { + yym2494 := z.EncBinary() + _ = yym2494 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2489[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2495 := z.EncBinary() + _ = yym2495 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2489 || yy2arr2489 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LoadBalancerIngress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2496 := z.DecBinary() + _ = yym2496 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2497 := r.ContainerType() + if yyct2497 == codecSelferValueTypeMap1234 { + yyl2497 := r.ReadMapStart() + if yyl2497 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2497, d) + } + } else if yyct2497 == codecSelferValueTypeArray1234 { + yyl2497 := r.ReadArrayStart() + if yyl2497 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2497, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2498Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2498Slc + var yyhl2498 bool = l >= 0 + for yyj2498 := 0; ; yyj2498++ { + if yyhl2498 { + if yyj2498 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2498Slc = r.DecodeBytes(yys2498Slc, true, true) + yys2498 := string(yys2498Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2498 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2498) + } // end switch yys2498 + } // end for yyj2498 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LoadBalancerIngress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2501 int + var yyb2501 bool + var yyhl2501 bool = l >= 0 + yyj2501++ + if yyhl2501 { + yyb2501 = yyj2501 > l + } else { + yyb2501 = r.CheckBreak() + } + if yyb2501 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + yyj2501++ + if yyhl2501 { + yyb2501 = yyj2501 > l + } else { + yyb2501 = r.CheckBreak() + } + if yyb2501 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + for { + yyj2501++ + if yyhl2501 { + yyb2501 = yyj2501 > l + } else { + yyb2501 = r.CheckBreak() + } + if yyb2501 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2501-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2504 := z.EncBinary() + _ = yym2504 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2505 := !z.EncBinary() + yy2arr2505 := z.EncBasicHandle().StructToArray + var yyq2505 [10]bool + _, _, _ = yysep2505, yyq2505, yy2arr2505 + const yyr2505 bool = false + yyq2505[1] = len(x.Selector) != 0 + yyq2505[2] = x.ClusterIP != "" + yyq2505[3] = x.Type != "" + yyq2505[4] = len(x.ExternalIPs) != 0 + yyq2505[5] = len(x.DeprecatedPublicIPs) != 0 + yyq2505[6] = x.SessionAffinity != "" + yyq2505[7] = x.LoadBalancerIP != "" + yyq2505[8] = len(x.LoadBalancerSourceRanges) != 0 + yyq2505[9] = x.ExternalName != "" + var yynn2505 int + if yyr2505 || yy2arr2505 { + r.EncodeArrayStart(10) + } else { + yynn2505 = 1 + for _, b := range yyq2505 { + if b { + yynn2505++ + } + } + r.EncodeMapStart(yynn2505) + yynn2505 = 0 + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2507 := z.EncBinary() + _ = yym2507 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2508 := z.EncBinary() + _ = yym2508 + if false { + } else { + h.encSliceServicePort(([]ServicePort)(x.Ports), e) + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym2510 := z.EncBinary() + _ = yym2510 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2505[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym2511 := z.EncBinary() + _ = yym2511 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[2] { + yym2513 := z.EncBinary() + _ = yym2513 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2505[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2514 := z.EncBinary() + _ = yym2514 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterIP)) + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[3] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2505[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[4] { + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym2517 := z.EncBinary() + _ = yym2517 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2505[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalIPs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ExternalIPs == nil { + r.EncodeNil() + } else { + yym2518 := z.EncBinary() + _ = yym2518 + if false { + } else { + z.F.EncSliceStringV(x.ExternalIPs, false, e) + } + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[5] { + if x.DeprecatedPublicIPs == nil { + r.EncodeNil() + } else { + yym2520 := z.EncBinary() + _ = yym2520 + if false { + } else { + z.F.EncSliceStringV(x.DeprecatedPublicIPs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2505[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deprecatedPublicIPs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeprecatedPublicIPs == nil { + r.EncodeNil() + } else { + yym2521 := z.EncBinary() + _ = yym2521 + if false { + } else { + z.F.EncSliceStringV(x.DeprecatedPublicIPs, false, e) + } + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[6] { + x.SessionAffinity.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2505[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sessionAffinity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.SessionAffinity.CodecEncodeSelf(e) + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[7] { + yym2524 := z.EncBinary() + _ = yym2524 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2505[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerIP")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2525 := z.EncBinary() + _ = yym2525 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LoadBalancerIP)) + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[8] { + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym2527 := z.EncBinary() + _ = yym2527 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2505[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancerSourceRanges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LoadBalancerSourceRanges == nil { + r.EncodeNil() + } else { + yym2528 := z.EncBinary() + _ = yym2528 + if false { + } else { + z.F.EncSliceStringV(x.LoadBalancerSourceRanges, false, e) + } + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2505[9] { + yym2530 := z.EncBinary() + _ = yym2530 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2505[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2531 := z.EncBinary() + _ = yym2531 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalName)) + } + } + } + if yyr2505 || yy2arr2505 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2532 := z.DecBinary() + _ = yym2532 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2533 := r.ContainerType() + if yyct2533 == codecSelferValueTypeMap1234 { + yyl2533 := r.ReadMapStart() + if yyl2533 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2533, d) + } + } else if yyct2533 == codecSelferValueTypeArray1234 { + yyl2533 := r.ReadArrayStart() + if yyl2533 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2533, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2534Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2534Slc + var yyhl2534 bool = l >= 0 + for yyj2534 := 0; ; yyj2534++ { + if yyhl2534 { + if yyj2534 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2534Slc = r.DecodeBytes(yys2534Slc, true, true) + yys2534 := string(yys2534Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2534 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2535 := &x.Ports + yym2536 := z.DecBinary() + _ = yym2536 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv2535), d) + } + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2537 := &x.Selector + yym2538 := z.DecBinary() + _ = yym2538 + if false { + } else { + z.F.DecMapStringStringX(yyv2537, false, d) + } + } + case "clusterIP": + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + x.ClusterIP = string(r.DecodeString()) + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ServiceType(r.DecodeString()) + } + case "externalIPs": + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv2541 := &x.ExternalIPs + yym2542 := z.DecBinary() + _ = yym2542 + if false { + } else { + z.F.DecSliceStringX(yyv2541, false, d) + } + } + case "deprecatedPublicIPs": + if r.TryDecodeAsNil() { + x.DeprecatedPublicIPs = nil + } else { + yyv2543 := &x.DeprecatedPublicIPs + yym2544 := z.DecBinary() + _ = yym2544 + if false { + } else { + z.F.DecSliceStringX(yyv2543, false, d) + } + } + case "sessionAffinity": + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + x.SessionAffinity = ServiceAffinity(r.DecodeString()) + } + case "loadBalancerIP": + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + x.LoadBalancerIP = string(r.DecodeString()) + } + case "loadBalancerSourceRanges": + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv2547 := &x.LoadBalancerSourceRanges + yym2548 := z.DecBinary() + _ = yym2548 + if false { + } else { + z.F.DecSliceStringX(yyv2547, false, d) + } + } + case "externalName": + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + x.ExternalName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2534) + } // end switch yys2534 + } // end for yyj2534 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2550 int + var yyb2550 bool + var yyhl2550 bool = l >= 0 + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2551 := &x.Ports + yym2552 := z.DecBinary() + _ = yym2552 + if false { + } else { + h.decSliceServicePort((*[]ServicePort)(yyv2551), d) + } + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv2553 := &x.Selector + yym2554 := z.DecBinary() + _ = yym2554 + if false { + } else { + z.F.DecMapStringStringX(yyv2553, false, d) + } + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterIP = "" + } else { + x.ClusterIP = string(r.DecodeString()) + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ServiceType(r.DecodeString()) + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalIPs = nil + } else { + yyv2557 := &x.ExternalIPs + yym2558 := z.DecBinary() + _ = yym2558 + if false { + } else { + z.F.DecSliceStringX(yyv2557, false, d) + } + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DeprecatedPublicIPs = nil + } else { + yyv2559 := &x.DeprecatedPublicIPs + yym2560 := z.DecBinary() + _ = yym2560 + if false { + } else { + z.F.DecSliceStringX(yyv2559, false, d) + } + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SessionAffinity = "" + } else { + x.SessionAffinity = ServiceAffinity(r.DecodeString()) + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerIP = "" + } else { + x.LoadBalancerIP = string(r.DecodeString()) + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancerSourceRanges = nil + } else { + yyv2563 := &x.LoadBalancerSourceRanges + yym2564 := z.DecBinary() + _ = yym2564 + if false { + } else { + z.F.DecSliceStringX(yyv2563, false, d) + } + } + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalName = "" + } else { + x.ExternalName = string(r.DecodeString()) + } + for { + yyj2550++ + if yyhl2550 { + yyb2550 = yyj2550 > l + } else { + yyb2550 = r.CheckBreak() + } + if yyb2550 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2550-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServicePort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2566 := z.EncBinary() + _ = yym2566 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2567 := !z.EncBinary() + yy2arr2567 := z.EncBasicHandle().StructToArray + var yyq2567 [5]bool + _, _, _ = yysep2567, yyq2567, yy2arr2567 + const yyr2567 bool = false + yyq2567[0] = x.Name != "" + yyq2567[1] = x.Protocol != "" + yyq2567[3] = true + yyq2567[4] = x.NodePort != 0 + var yynn2567 int + if yyr2567 || yy2arr2567 { + r.EncodeArrayStart(5) + } else { + yynn2567 = 1 + for _, b := range yyq2567 { + if b { + yynn2567++ + } + } + r.EncodeMapStart(yynn2567) + yynn2567 = 0 + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2567[0] { + yym2569 := z.EncBinary() + _ = yym2569 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2567[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2570 := z.EncBinary() + _ = yym2570 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2567[1] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2567[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2573 := z.EncBinary() + _ = yym2573 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2574 := z.EncBinary() + _ = yym2574 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2567[3] { + yy2576 := &x.TargetPort + yym2577 := z.EncBinary() + _ = yym2577 + if false { + } else if z.HasExtensions() && z.EncExt(yy2576) { + } else if !yym2577 && z.IsJSONHandle() { + z.EncJSONMarshal(yy2576) + } else { + z.EncFallback(yy2576) + } + } else { + r.EncodeNil() + } + } else { + if yyq2567[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2578 := &x.TargetPort + yym2579 := z.EncBinary() + _ = yym2579 + if false { + } else if z.HasExtensions() && z.EncExt(yy2578) { + } else if !yym2579 && z.IsJSONHandle() { + z.EncJSONMarshal(yy2578) + } else { + z.EncFallback(yy2578) + } + } + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2567[4] { + yym2581 := z.EncBinary() + _ = yym2581 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2567[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2582 := z.EncBinary() + _ = yym2582 + if false { + } else { + r.EncodeInt(int64(x.NodePort)) + } + } + } + if yyr2567 || yy2arr2567 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServicePort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2583 := z.DecBinary() + _ = yym2583 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2584 := r.ContainerType() + if yyct2584 == codecSelferValueTypeMap1234 { + yyl2584 := r.ReadMapStart() + if yyl2584 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2584, d) + } + } else if yyct2584 == codecSelferValueTypeArray1234 { + yyl2584 := r.ReadArrayStart() + if yyl2584 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2584, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServicePort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2585Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2585Slc + var yyhl2585 bool = l >= 0 + for yyj2585 := 0; ; yyj2585++ { + if yyhl2585 { + if yyj2585 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2585Slc = r.DecodeBytes(yys2585Slc, true, true) + yys2585 := string(yys2585Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2585 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + case "targetPort": + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv2589 := &x.TargetPort + yym2590 := z.DecBinary() + _ = yym2590 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2589) { + } else if !yym2590 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv2589) + } else { + z.DecFallback(yyv2589, false) + } + } + case "nodePort": + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + x.NodePort = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys2585) + } // end switch yys2585 + } // end for yyj2585 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServicePort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2592 int + var yyb2592 bool + var yyhl2592 bool = l >= 0 + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPort = pkg4_intstr.IntOrString{} + } else { + yyv2596 := &x.TargetPort + yym2597 := z.DecBinary() + _ = yym2597 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2596) { + } else if !yym2597 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv2596) + } else { + z.DecFallback(yyv2596, false) + } + } + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodePort = 0 + } else { + x.NodePort = int32(r.DecodeInt(32)) + } + for { + yyj2592++ + if yyhl2592 { + yyb2592 = yyj2592 > l + } else { + yyb2592 = r.CheckBreak() + } + if yyb2592 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2592-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Service) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2599 := z.EncBinary() + _ = yym2599 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2600 := !z.EncBinary() + yy2arr2600 := z.EncBasicHandle().StructToArray + var yyq2600 [5]bool + _, _, _ = yysep2600, yyq2600, yy2arr2600 + const yyr2600 bool = false + yyq2600[0] = x.Kind != "" + yyq2600[1] = x.APIVersion != "" + yyq2600[2] = true + yyq2600[3] = true + yyq2600[4] = true + var yynn2600 int + if yyr2600 || yy2arr2600 { + r.EncodeArrayStart(5) + } else { + yynn2600 = 0 + for _, b := range yyq2600 { + if b { + yynn2600++ + } + } + r.EncodeMapStart(yynn2600) + yynn2600 = 0 + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2600[0] { + yym2602 := z.EncBinary() + _ = yym2602 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2600[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2603 := z.EncBinary() + _ = yym2603 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2600[1] { + yym2605 := z.EncBinary() + _ = yym2605 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2600[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2606 := z.EncBinary() + _ = yym2606 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2600[2] { + yy2608 := &x.ObjectMeta + yy2608.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2600[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2609 := &x.ObjectMeta + yy2609.CodecEncodeSelf(e) + } + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2600[3] { + yy2611 := &x.Spec + yy2611.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2600[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2612 := &x.Spec + yy2612.CodecEncodeSelf(e) + } + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2600[4] { + yy2614 := &x.Status + yy2614.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2600[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2615 := &x.Status + yy2615.CodecEncodeSelf(e) + } + } + if yyr2600 || yy2arr2600 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Service) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2616 := z.DecBinary() + _ = yym2616 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2617 := r.ContainerType() + if yyct2617 == codecSelferValueTypeMap1234 { + yyl2617 := r.ReadMapStart() + if yyl2617 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2617, d) + } + } else if yyct2617 == codecSelferValueTypeArray1234 { + yyl2617 := r.ReadArrayStart() + if yyl2617 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2617, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Service) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2618Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2618Slc + var yyhl2618 bool = l >= 0 + for yyj2618 := 0; ; yyj2618++ { + if yyhl2618 { + if yyj2618 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2618Slc = r.DecodeBytes(yys2618Slc, true, true) + yys2618 := string(yys2618Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2618 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2621 := &x.ObjectMeta + yyv2621.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv2622 := &x.Spec + yyv2622.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv2623 := &x.Status + yyv2623.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2618) + } // end switch yys2618 + } // end for yyj2618 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Service) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2624 int + var yyb2624 bool + var yyhl2624 bool = l >= 0 + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2627 := &x.ObjectMeta + yyv2627.CodecDecodeSelf(d) + } + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ServiceSpec{} + } else { + yyv2628 := &x.Spec + yyv2628.CodecDecodeSelf(d) + } + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ServiceStatus{} + } else { + yyv2629 := &x.Status + yyv2629.CodecDecodeSelf(d) + } + for { + yyj2624++ + if yyhl2624 { + yyb2624 = yyj2624 > l + } else { + yyb2624 = r.CheckBreak() + } + if yyb2624 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2624-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2630 := z.EncBinary() + _ = yym2630 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2631 := !z.EncBinary() + yy2arr2631 := z.EncBasicHandle().StructToArray + var yyq2631 [4]bool + _, _, _ = yysep2631, yyq2631, yy2arr2631 + const yyr2631 bool = false + yyq2631[0] = x.Kind != "" + yyq2631[1] = x.APIVersion != "" + yyq2631[2] = true + var yynn2631 int + if yyr2631 || yy2arr2631 { + r.EncodeArrayStart(4) + } else { + yynn2631 = 1 + for _, b := range yyq2631 { + if b { + yynn2631++ + } + } + r.EncodeMapStart(yynn2631) + yynn2631 = 0 + } + if yyr2631 || yy2arr2631 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2631[0] { + yym2633 := z.EncBinary() + _ = yym2633 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2631[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2634 := z.EncBinary() + _ = yym2634 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2631 || yy2arr2631 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2631[1] { + yym2636 := z.EncBinary() + _ = yym2636 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2631[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2637 := z.EncBinary() + _ = yym2637 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2631 || yy2arr2631 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2631[2] { + yy2639 := &x.ListMeta + yym2640 := z.EncBinary() + _ = yym2640 + if false { + } else if z.HasExtensions() && z.EncExt(yy2639) { + } else { + z.EncFallback(yy2639) + } + } else { + r.EncodeNil() + } + } else { + if yyq2631[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2641 := &x.ListMeta + yym2642 := z.EncBinary() + _ = yym2642 + if false { + } else if z.HasExtensions() && z.EncExt(yy2641) { + } else { + z.EncFallback(yy2641) + } + } + } + if yyr2631 || yy2arr2631 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2644 := z.EncBinary() + _ = yym2644 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2645 := z.EncBinary() + _ = yym2645 + if false { + } else { + h.encSliceService(([]Service)(x.Items), e) + } + } + } + if yyr2631 || yy2arr2631 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2646 := z.DecBinary() + _ = yym2646 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2647 := r.ContainerType() + if yyct2647 == codecSelferValueTypeMap1234 { + yyl2647 := r.ReadMapStart() + if yyl2647 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2647, d) + } + } else if yyct2647 == codecSelferValueTypeArray1234 { + yyl2647 := r.ReadArrayStart() + if yyl2647 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2647, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2648Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2648Slc + var yyhl2648 bool = l >= 0 + for yyj2648 := 0; ; yyj2648++ { + if yyhl2648 { + if yyj2648 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2648Slc = r.DecodeBytes(yys2648Slc, true, true) + yys2648 := string(yys2648Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2648 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2651 := &x.ListMeta + yym2652 := z.DecBinary() + _ = yym2652 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2651) { + } else { + z.DecFallback(yyv2651, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2653 := &x.Items + yym2654 := z.DecBinary() + _ = yym2654 + if false { + } else { + h.decSliceService((*[]Service)(yyv2653), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2648) + } // end switch yys2648 + } // end for yyj2648 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2655 int + var yyb2655 bool + var yyhl2655 bool = l >= 0 + yyj2655++ + if yyhl2655 { + yyb2655 = yyj2655 > l + } else { + yyb2655 = r.CheckBreak() + } + if yyb2655 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2655++ + if yyhl2655 { + yyb2655 = yyj2655 > l + } else { + yyb2655 = r.CheckBreak() + } + if yyb2655 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2655++ + if yyhl2655 { + yyb2655 = yyj2655 > l + } else { + yyb2655 = r.CheckBreak() + } + if yyb2655 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2658 := &x.ListMeta + yym2659 := z.DecBinary() + _ = yym2659 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2658) { + } else { + z.DecFallback(yyv2658, false) + } + } + yyj2655++ + if yyhl2655 { + yyb2655 = yyj2655 > l + } else { + yyb2655 = r.CheckBreak() + } + if yyb2655 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2660 := &x.Items + yym2661 := z.DecBinary() + _ = yym2661 + if false { + } else { + h.decSliceService((*[]Service)(yyv2660), d) + } + } + for { + yyj2655++ + if yyhl2655 { + yyb2655 = yyj2655 > l + } else { + yyb2655 = r.CheckBreak() + } + if yyb2655 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2655-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccount) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2662 := z.EncBinary() + _ = yym2662 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2663 := !z.EncBinary() + yy2arr2663 := z.EncBasicHandle().StructToArray + var yyq2663 [5]bool + _, _, _ = yysep2663, yyq2663, yy2arr2663 + const yyr2663 bool = false + yyq2663[0] = x.Kind != "" + yyq2663[1] = x.APIVersion != "" + yyq2663[2] = true + yyq2663[3] = len(x.Secrets) != 0 + yyq2663[4] = len(x.ImagePullSecrets) != 0 + var yynn2663 int + if yyr2663 || yy2arr2663 { + r.EncodeArrayStart(5) + } else { + yynn2663 = 0 + for _, b := range yyq2663 { + if b { + yynn2663++ + } + } + r.EncodeMapStart(yynn2663) + yynn2663 = 0 + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2663[0] { + yym2665 := z.EncBinary() + _ = yym2665 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2663[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2666 := z.EncBinary() + _ = yym2666 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2663[1] { + yym2668 := z.EncBinary() + _ = yym2668 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2663[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2669 := z.EncBinary() + _ = yym2669 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2663[2] { + yy2671 := &x.ObjectMeta + yy2671.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2663[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2672 := &x.ObjectMeta + yy2672.CodecEncodeSelf(e) + } + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2663[3] { + if x.Secrets == nil { + r.EncodeNil() + } else { + yym2674 := z.EncBinary() + _ = yym2674 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2663[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Secrets == nil { + r.EncodeNil() + } else { + yym2675 := z.EncBinary() + _ = yym2675 + if false { + } else { + h.encSliceObjectReference(([]ObjectReference)(x.Secrets), e) + } + } + } + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2663[4] { + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2677 := z.EncBinary() + _ = yym2677 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2663[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("imagePullSecrets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ImagePullSecrets == nil { + r.EncodeNil() + } else { + yym2678 := z.EncBinary() + _ = yym2678 + if false { + } else { + h.encSliceLocalObjectReference(([]LocalObjectReference)(x.ImagePullSecrets), e) + } + } + } + } + if yyr2663 || yy2arr2663 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccount) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2679 := z.DecBinary() + _ = yym2679 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2680 := r.ContainerType() + if yyct2680 == codecSelferValueTypeMap1234 { + yyl2680 := r.ReadMapStart() + if yyl2680 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2680, d) + } + } else if yyct2680 == codecSelferValueTypeArray1234 { + yyl2680 := r.ReadArrayStart() + if yyl2680 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2680, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccount) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2681Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2681Slc + var yyhl2681 bool = l >= 0 + for yyj2681 := 0; ; yyj2681++ { + if yyhl2681 { + if yyj2681 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2681Slc = r.DecodeBytes(yys2681Slc, true, true) + yys2681 := string(yys2681Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2681 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2684 := &x.ObjectMeta + yyv2684.CodecDecodeSelf(d) + } + case "secrets": + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv2685 := &x.Secrets + yym2686 := z.DecBinary() + _ = yym2686 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv2685), d) + } + } + case "imagePullSecrets": + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2687 := &x.ImagePullSecrets + yym2688 := z.DecBinary() + _ = yym2688 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2687), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2681) + } // end switch yys2681 + } // end for yyj2681 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccount) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2689 int + var yyb2689 bool + var yyhl2689 bool = l >= 0 + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2692 := &x.ObjectMeta + yyv2692.CodecDecodeSelf(d) + } + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Secrets = nil + } else { + yyv2693 := &x.Secrets + yym2694 := z.DecBinary() + _ = yym2694 + if false { + } else { + h.decSliceObjectReference((*[]ObjectReference)(yyv2693), d) + } + } + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ImagePullSecrets = nil + } else { + yyv2695 := &x.ImagePullSecrets + yym2696 := z.DecBinary() + _ = yym2696 + if false { + } else { + h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv2695), d) + } + } + for { + yyj2689++ + if yyhl2689 { + yyb2689 = yyj2689 > l + } else { + yyb2689 = r.CheckBreak() + } + if yyb2689 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2689-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceAccountList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2697 := z.EncBinary() + _ = yym2697 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2698 := !z.EncBinary() + yy2arr2698 := z.EncBasicHandle().StructToArray + var yyq2698 [4]bool + _, _, _ = yysep2698, yyq2698, yy2arr2698 + const yyr2698 bool = false + yyq2698[0] = x.Kind != "" + yyq2698[1] = x.APIVersion != "" + yyq2698[2] = true + var yynn2698 int + if yyr2698 || yy2arr2698 { + r.EncodeArrayStart(4) + } else { + yynn2698 = 1 + for _, b := range yyq2698 { + if b { + yynn2698++ + } + } + r.EncodeMapStart(yynn2698) + yynn2698 = 0 + } + if yyr2698 || yy2arr2698 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2698[0] { + yym2700 := z.EncBinary() + _ = yym2700 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2698[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2701 := z.EncBinary() + _ = yym2701 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2698 || yy2arr2698 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2698[1] { + yym2703 := z.EncBinary() + _ = yym2703 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2698[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2704 := z.EncBinary() + _ = yym2704 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2698 || yy2arr2698 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2698[2] { + yy2706 := &x.ListMeta + yym2707 := z.EncBinary() + _ = yym2707 + if false { + } else if z.HasExtensions() && z.EncExt(yy2706) { + } else { + z.EncFallback(yy2706) + } + } else { + r.EncodeNil() + } + } else { + if yyq2698[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2708 := &x.ListMeta + yym2709 := z.EncBinary() + _ = yym2709 + if false { + } else if z.HasExtensions() && z.EncExt(yy2708) { + } else { + z.EncFallback(yy2708) + } + } + } + if yyr2698 || yy2arr2698 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2711 := z.EncBinary() + _ = yym2711 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2712 := z.EncBinary() + _ = yym2712 + if false { + } else { + h.encSliceServiceAccount(([]ServiceAccount)(x.Items), e) + } + } + } + if yyr2698 || yy2arr2698 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceAccountList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2713 := z.DecBinary() + _ = yym2713 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2714 := r.ContainerType() + if yyct2714 == codecSelferValueTypeMap1234 { + yyl2714 := r.ReadMapStart() + if yyl2714 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2714, d) + } + } else if yyct2714 == codecSelferValueTypeArray1234 { + yyl2714 := r.ReadArrayStart() + if yyl2714 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2714, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceAccountList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2715Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2715Slc + var yyhl2715 bool = l >= 0 + for yyj2715 := 0; ; yyj2715++ { + if yyhl2715 { + if yyj2715 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2715Slc = r.DecodeBytes(yys2715Slc, true, true) + yys2715 := string(yys2715Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2715 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2718 := &x.ListMeta + yym2719 := z.DecBinary() + _ = yym2719 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2718) { + } else { + z.DecFallback(yyv2718, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2720 := &x.Items + yym2721 := z.DecBinary() + _ = yym2721 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv2720), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2715) + } // end switch yys2715 + } // end for yyj2715 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceAccountList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2722 int + var yyb2722 bool + var yyhl2722 bool = l >= 0 + yyj2722++ + if yyhl2722 { + yyb2722 = yyj2722 > l + } else { + yyb2722 = r.CheckBreak() + } + if yyb2722 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2722++ + if yyhl2722 { + yyb2722 = yyj2722 > l + } else { + yyb2722 = r.CheckBreak() + } + if yyb2722 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2722++ + if yyhl2722 { + yyb2722 = yyj2722 > l + } else { + yyb2722 = r.CheckBreak() + } + if yyb2722 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2725 := &x.ListMeta + yym2726 := z.DecBinary() + _ = yym2726 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2725) { + } else { + z.DecFallback(yyv2725, false) + } + } + yyj2722++ + if yyhl2722 { + yyb2722 = yyj2722 > l + } else { + yyb2722 = r.CheckBreak() + } + if yyb2722 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2727 := &x.Items + yym2728 := z.DecBinary() + _ = yym2728 + if false { + } else { + h.decSliceServiceAccount((*[]ServiceAccount)(yyv2727), d) + } + } + for { + yyj2722++ + if yyhl2722 { + yyb2722 = yyj2722 > l + } else { + yyb2722 = r.CheckBreak() + } + if yyb2722 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2722-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Endpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2729 := z.EncBinary() + _ = yym2729 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2730 := !z.EncBinary() + yy2arr2730 := z.EncBasicHandle().StructToArray + var yyq2730 [4]bool + _, _, _ = yysep2730, yyq2730, yy2arr2730 + const yyr2730 bool = false + yyq2730[0] = x.Kind != "" + yyq2730[1] = x.APIVersion != "" + yyq2730[2] = true + var yynn2730 int + if yyr2730 || yy2arr2730 { + r.EncodeArrayStart(4) + } else { + yynn2730 = 1 + for _, b := range yyq2730 { + if b { + yynn2730++ + } + } + r.EncodeMapStart(yynn2730) + yynn2730 = 0 + } + if yyr2730 || yy2arr2730 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2730[0] { + yym2732 := z.EncBinary() + _ = yym2732 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2730[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2733 := z.EncBinary() + _ = yym2733 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2730 || yy2arr2730 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2730[1] { + yym2735 := z.EncBinary() + _ = yym2735 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2730[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2736 := z.EncBinary() + _ = yym2736 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2730 || yy2arr2730 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2730[2] { + yy2738 := &x.ObjectMeta + yy2738.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2730[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2739 := &x.ObjectMeta + yy2739.CodecEncodeSelf(e) + } + } + if yyr2730 || yy2arr2730 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym2741 := z.EncBinary() + _ = yym2741 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subsets")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subsets == nil { + r.EncodeNil() + } else { + yym2742 := z.EncBinary() + _ = yym2742 + if false { + } else { + h.encSliceEndpointSubset(([]EndpointSubset)(x.Subsets), e) + } + } + } + if yyr2730 || yy2arr2730 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Endpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2743 := z.DecBinary() + _ = yym2743 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2744 := r.ContainerType() + if yyct2744 == codecSelferValueTypeMap1234 { + yyl2744 := r.ReadMapStart() + if yyl2744 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2744, d) + } + } else if yyct2744 == codecSelferValueTypeArray1234 { + yyl2744 := r.ReadArrayStart() + if yyl2744 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2744, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Endpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2745Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2745Slc + var yyhl2745 bool = l >= 0 + for yyj2745 := 0; ; yyj2745++ { + if yyhl2745 { + if yyj2745 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2745Slc = r.DecodeBytes(yys2745Slc, true, true) + yys2745 := string(yys2745Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2745 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2748 := &x.ObjectMeta + yyv2748.CodecDecodeSelf(d) + } + case "subsets": + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv2749 := &x.Subsets + yym2750 := z.DecBinary() + _ = yym2750 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv2749), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2745) + } // end switch yys2745 + } // end for yyj2745 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Endpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2751 int + var yyb2751 bool + var yyhl2751 bool = l >= 0 + yyj2751++ + if yyhl2751 { + yyb2751 = yyj2751 > l + } else { + yyb2751 = r.CheckBreak() + } + if yyb2751 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2751++ + if yyhl2751 { + yyb2751 = yyj2751 > l + } else { + yyb2751 = r.CheckBreak() + } + if yyb2751 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2751++ + if yyhl2751 { + yyb2751 = yyj2751 > l + } else { + yyb2751 = r.CheckBreak() + } + if yyb2751 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv2754 := &x.ObjectMeta + yyv2754.CodecDecodeSelf(d) + } + yyj2751++ + if yyhl2751 { + yyb2751 = yyj2751 > l + } else { + yyb2751 = r.CheckBreak() + } + if yyb2751 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subsets = nil + } else { + yyv2755 := &x.Subsets + yym2756 := z.DecBinary() + _ = yym2756 + if false { + } else { + h.decSliceEndpointSubset((*[]EndpointSubset)(yyv2755), d) + } + } + for { + yyj2751++ + if yyhl2751 { + yyb2751 = yyj2751 > l + } else { + yyb2751 = r.CheckBreak() + } + if yyb2751 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2751-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointSubset) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2757 := z.EncBinary() + _ = yym2757 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2758 := !z.EncBinary() + yy2arr2758 := z.EncBasicHandle().StructToArray + var yyq2758 [3]bool + _, _, _ = yysep2758, yyq2758, yy2arr2758 + const yyr2758 bool = false + yyq2758[0] = len(x.Addresses) != 0 + yyq2758[1] = len(x.NotReadyAddresses) != 0 + yyq2758[2] = len(x.Ports) != 0 + var yynn2758 int + if yyr2758 || yy2arr2758 { + r.EncodeArrayStart(3) + } else { + yynn2758 = 0 + for _, b := range yyq2758 { + if b { + yynn2758++ + } + } + r.EncodeMapStart(yynn2758) + yynn2758 = 0 + } + if yyr2758 || yy2arr2758 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2758[0] { + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2760 := z.EncBinary() + _ = yym2760 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2758[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2761 := z.EncBinary() + _ = yym2761 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.Addresses), e) + } + } + } + } + if yyr2758 || yy2arr2758 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2758[1] { + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym2763 := z.EncBinary() + _ = yym2763 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2758[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("notReadyAddresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NotReadyAddresses == nil { + r.EncodeNil() + } else { + yym2764 := z.EncBinary() + _ = yym2764 + if false { + } else { + h.encSliceEndpointAddress(([]EndpointAddress)(x.NotReadyAddresses), e) + } + } + } + } + if yyr2758 || yy2arr2758 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2758[2] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym2766 := z.EncBinary() + _ = yym2766 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2758[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym2767 := z.EncBinary() + _ = yym2767 + if false { + } else { + h.encSliceEndpointPort(([]EndpointPort)(x.Ports), e) + } + } + } + } + if yyr2758 || yy2arr2758 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointSubset) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2768 := z.DecBinary() + _ = yym2768 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2769 := r.ContainerType() + if yyct2769 == codecSelferValueTypeMap1234 { + yyl2769 := r.ReadMapStart() + if yyl2769 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2769, d) + } + } else if yyct2769 == codecSelferValueTypeArray1234 { + yyl2769 := r.ReadArrayStart() + if yyl2769 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2769, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointSubset) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2770Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2770Slc + var yyhl2770 bool = l >= 0 + for yyj2770 := 0; ; yyj2770++ { + if yyhl2770 { + if yyj2770 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2770Slc = r.DecodeBytes(yys2770Slc, true, true) + yys2770 := string(yys2770Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2770 { + case "addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv2771 := &x.Addresses + yym2772 := z.DecBinary() + _ = yym2772 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2771), d) + } + } + case "notReadyAddresses": + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv2773 := &x.NotReadyAddresses + yym2774 := z.DecBinary() + _ = yym2774 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2773), d) + } + } + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2775 := &x.Ports + yym2776 := z.DecBinary() + _ = yym2776 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv2775), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2770) + } // end switch yys2770 + } // end for yyj2770 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointSubset) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2777 int + var yyb2777 bool + var yyhl2777 bool = l >= 0 + yyj2777++ + if yyhl2777 { + yyb2777 = yyj2777 > l + } else { + yyb2777 = r.CheckBreak() + } + if yyb2777 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv2778 := &x.Addresses + yym2779 := z.DecBinary() + _ = yym2779 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2778), d) + } + } + yyj2777++ + if yyhl2777 { + yyb2777 = yyj2777 > l + } else { + yyb2777 = r.CheckBreak() + } + if yyb2777 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NotReadyAddresses = nil + } else { + yyv2780 := &x.NotReadyAddresses + yym2781 := z.DecBinary() + _ = yym2781 + if false { + } else { + h.decSliceEndpointAddress((*[]EndpointAddress)(yyv2780), d) + } + } + yyj2777++ + if yyhl2777 { + yyb2777 = yyj2777 > l + } else { + yyb2777 = r.CheckBreak() + } + if yyb2777 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv2782 := &x.Ports + yym2783 := z.DecBinary() + _ = yym2783 + if false { + } else { + h.decSliceEndpointPort((*[]EndpointPort)(yyv2782), d) + } + } + for { + yyj2777++ + if yyhl2777 { + yyb2777 = yyj2777 > l + } else { + yyb2777 = r.CheckBreak() + } + if yyb2777 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2777-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2784 := z.EncBinary() + _ = yym2784 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2785 := !z.EncBinary() + yy2arr2785 := z.EncBasicHandle().StructToArray + var yyq2785 [4]bool + _, _, _ = yysep2785, yyq2785, yy2arr2785 + const yyr2785 bool = false + yyq2785[1] = x.Hostname != "" + yyq2785[2] = x.NodeName != nil + yyq2785[3] = x.TargetRef != nil + var yynn2785 int + if yyr2785 || yy2arr2785 { + r.EncodeArrayStart(4) + } else { + yynn2785 = 1 + for _, b := range yyq2785 { + if b { + yynn2785++ + } + } + r.EncodeMapStart(yynn2785) + yynn2785 = 0 + } + if yyr2785 || yy2arr2785 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2787 := z.EncBinary() + _ = yym2787 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ip")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2788 := z.EncBinary() + _ = yym2788 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.IP)) + } + } + if yyr2785 || yy2arr2785 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2785[1] { + yym2790 := z.EncBinary() + _ = yym2790 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2785[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostname")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2791 := z.EncBinary() + _ = yym2791 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Hostname)) + } + } + } + if yyr2785 || yy2arr2785 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2785[2] { + if x.NodeName == nil { + r.EncodeNil() + } else { + yy2793 := *x.NodeName + yym2794 := z.EncBinary() + _ = yym2794 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy2793)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2785[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NodeName == nil { + r.EncodeNil() + } else { + yy2795 := *x.NodeName + yym2796 := z.EncBinary() + _ = yym2796 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy2795)) + } + } + } + } + if yyr2785 || yy2arr2785 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2785[3] { + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2785[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetRef == nil { + r.EncodeNil() + } else { + x.TargetRef.CodecEncodeSelf(e) + } + } + } + if yyr2785 || yy2arr2785 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2798 := z.DecBinary() + _ = yym2798 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2799 := r.ContainerType() + if yyct2799 == codecSelferValueTypeMap1234 { + yyl2799 := r.ReadMapStart() + if yyl2799 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2799, d) + } + } else if yyct2799 == codecSelferValueTypeArray1234 { + yyl2799 := r.ReadArrayStart() + if yyl2799 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2799, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2800Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2800Slc + var yyhl2800 bool = l >= 0 + for yyj2800 := 0; ; yyj2800++ { + if yyhl2800 { + if yyj2800 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2800Slc = r.DecodeBytes(yys2800Slc, true, true) + yys2800 := string(yys2800Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2800 { + case "ip": + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + case "hostname": + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + case "nodeName": + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym2804 := z.DecBinary() + _ = yym2804 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + case "targetRef": + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2800) + } // end switch yys2800 + } // end for yyj2800 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2806 int + var yyb2806 bool + var yyhl2806 bool = l >= 0 + yyj2806++ + if yyhl2806 { + yyb2806 = yyj2806 > l + } else { + yyb2806 = r.CheckBreak() + } + if yyb2806 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.IP = "" + } else { + x.IP = string(r.DecodeString()) + } + yyj2806++ + if yyhl2806 { + yyb2806 = yyj2806 > l + } else { + yyb2806 = r.CheckBreak() + } + if yyb2806 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hostname = "" + } else { + x.Hostname = string(r.DecodeString()) + } + yyj2806++ + if yyhl2806 { + yyb2806 = yyj2806 > l + } else { + yyb2806 = r.CheckBreak() + } + if yyb2806 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NodeName != nil { + x.NodeName = nil + } + } else { + if x.NodeName == nil { + x.NodeName = new(string) + } + yym2810 := z.DecBinary() + _ = yym2810 + if false { + } else { + *((*string)(x.NodeName)) = r.DecodeString() + } + } + yyj2806++ + if yyhl2806 { + yyb2806 = yyj2806 > l + } else { + yyb2806 = r.CheckBreak() + } + if yyb2806 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetRef != nil { + x.TargetRef = nil + } + } else { + if x.TargetRef == nil { + x.TargetRef = new(ObjectReference) + } + x.TargetRef.CodecDecodeSelf(d) + } + for { + yyj2806++ + if yyhl2806 { + yyb2806 = yyj2806 > l + } else { + yyb2806 = r.CheckBreak() + } + if yyb2806 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2806-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2812 := z.EncBinary() + _ = yym2812 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2813 := !z.EncBinary() + yy2arr2813 := z.EncBasicHandle().StructToArray + var yyq2813 [3]bool + _, _, _ = yysep2813, yyq2813, yy2arr2813 + const yyr2813 bool = false + yyq2813[0] = x.Name != "" + yyq2813[2] = x.Protocol != "" + var yynn2813 int + if yyr2813 || yy2arr2813 { + r.EncodeArrayStart(3) + } else { + yynn2813 = 1 + for _, b := range yyq2813 { + if b { + yynn2813++ + } + } + r.EncodeMapStart(yynn2813) + yynn2813 = 0 + } + if yyr2813 || yy2arr2813 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2813[0] { + yym2815 := z.EncBinary() + _ = yym2815 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2813[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2816 := z.EncBinary() + _ = yym2816 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2813 || yy2arr2813 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2818 := z.EncBinary() + _ = yym2818 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2819 := z.EncBinary() + _ = yym2819 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2813 || yy2arr2813 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2813[2] { + x.Protocol.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2813[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Protocol.CodecEncodeSelf(e) + } + } + if yyr2813 || yy2arr2813 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2821 := z.DecBinary() + _ = yym2821 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2822 := r.ContainerType() + if yyct2822 == codecSelferValueTypeMap1234 { + yyl2822 := r.ReadMapStart() + if yyl2822 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2822, d) + } + } else if yyct2822 == codecSelferValueTypeArray1234 { + yyl2822 := r.ReadArrayStart() + if yyl2822 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2822, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2823Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2823Slc + var yyhl2823 bool = l >= 0 + for yyj2823 := 0; ; yyj2823++ { + if yyhl2823 { + if yyj2823 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2823Slc = r.DecodeBytes(yys2823Slc, true, true) + yys2823 := string(yys2823Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2823 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + case "protocol": + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2823) + } // end switch yys2823 + } // end for yyj2823 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2827 int + var yyb2827 bool + var yyhl2827 bool = l >= 0 + yyj2827++ + if yyhl2827 { + yyb2827 = yyj2827 > l + } else { + yyb2827 = r.CheckBreak() + } + if yyb2827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj2827++ + if yyhl2827 { + yyb2827 = yyj2827 > l + } else { + yyb2827 = r.CheckBreak() + } + if yyb2827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + yyj2827++ + if yyhl2827 { + yyb2827 = yyj2827 > l + } else { + yyb2827 = r.CheckBreak() + } + if yyb2827 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Protocol = "" + } else { + x.Protocol = Protocol(r.DecodeString()) + } + for { + yyj2827++ + if yyhl2827 { + yyb2827 = yyj2827 > l + } else { + yyb2827 = r.CheckBreak() + } + if yyb2827 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2827-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EndpointsList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2831 := z.EncBinary() + _ = yym2831 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2832 := !z.EncBinary() + yy2arr2832 := z.EncBasicHandle().StructToArray + var yyq2832 [4]bool + _, _, _ = yysep2832, yyq2832, yy2arr2832 + const yyr2832 bool = false + yyq2832[0] = x.Kind != "" + yyq2832[1] = x.APIVersion != "" + yyq2832[2] = true + var yynn2832 int + if yyr2832 || yy2arr2832 { + r.EncodeArrayStart(4) + } else { + yynn2832 = 1 + for _, b := range yyq2832 { + if b { + yynn2832++ + } + } + r.EncodeMapStart(yynn2832) + yynn2832 = 0 + } + if yyr2832 || yy2arr2832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2832[0] { + yym2834 := z.EncBinary() + _ = yym2834 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2832[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2835 := z.EncBinary() + _ = yym2835 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2832 || yy2arr2832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2832[1] { + yym2837 := z.EncBinary() + _ = yym2837 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2832[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2838 := z.EncBinary() + _ = yym2838 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2832 || yy2arr2832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2832[2] { + yy2840 := &x.ListMeta + yym2841 := z.EncBinary() + _ = yym2841 + if false { + } else if z.HasExtensions() && z.EncExt(yy2840) { + } else { + z.EncFallback(yy2840) + } + } else { + r.EncodeNil() + } + } else { + if yyq2832[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2842 := &x.ListMeta + yym2843 := z.EncBinary() + _ = yym2843 + if false { + } else if z.HasExtensions() && z.EncExt(yy2842) { + } else { + z.EncFallback(yy2842) + } + } + } + if yyr2832 || yy2arr2832 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2845 := z.EncBinary() + _ = yym2845 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym2846 := z.EncBinary() + _ = yym2846 + if false { + } else { + h.encSliceEndpoints(([]Endpoints)(x.Items), e) + } + } + } + if yyr2832 || yy2arr2832 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EndpointsList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2847 := z.DecBinary() + _ = yym2847 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2848 := r.ContainerType() + if yyct2848 == codecSelferValueTypeMap1234 { + yyl2848 := r.ReadMapStart() + if yyl2848 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2848, d) + } + } else if yyct2848 == codecSelferValueTypeArray1234 { + yyl2848 := r.ReadArrayStart() + if yyl2848 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2848, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EndpointsList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2849Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2849Slc + var yyhl2849 bool = l >= 0 + for yyj2849 := 0; ; yyj2849++ { + if yyhl2849 { + if yyj2849 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2849Slc = r.DecodeBytes(yys2849Slc, true, true) + yys2849 := string(yys2849Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2849 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2852 := &x.ListMeta + yym2853 := z.DecBinary() + _ = yym2853 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2852) { + } else { + z.DecFallback(yyv2852, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2854 := &x.Items + yym2855 := z.DecBinary() + _ = yym2855 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv2854), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2849) + } // end switch yys2849 + } // end for yyj2849 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EndpointsList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2856 int + var yyb2856 bool + var yyhl2856 bool = l >= 0 + yyj2856++ + if yyhl2856 { + yyb2856 = yyj2856 > l + } else { + yyb2856 = r.CheckBreak() + } + if yyb2856 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj2856++ + if yyhl2856 { + yyb2856 = yyj2856 > l + } else { + yyb2856 = r.CheckBreak() + } + if yyb2856 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj2856++ + if yyhl2856 { + yyb2856 = yyj2856 > l + } else { + yyb2856 = r.CheckBreak() + } + if yyb2856 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv2859 := &x.ListMeta + yym2860 := z.DecBinary() + _ = yym2860 + if false { + } else if z.HasExtensions() && z.DecExt(yyv2859) { + } else { + z.DecFallback(yyv2859, false) + } + } + yyj2856++ + if yyhl2856 { + yyb2856 = yyj2856 > l + } else { + yyb2856 = r.CheckBreak() + } + if yyb2856 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv2861 := &x.Items + yym2862 := z.DecBinary() + _ = yym2862 + if false { + } else { + h.decSliceEndpoints((*[]Endpoints)(yyv2861), d) + } + } + for { + yyj2856++ + if yyhl2856 { + yyb2856 = yyj2856 > l + } else { + yyb2856 = r.CheckBreak() + } + if yyb2856 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2856-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2863 := z.EncBinary() + _ = yym2863 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2864 := !z.EncBinary() + yy2arr2864 := z.EncBasicHandle().StructToArray + var yyq2864 [4]bool + _, _, _ = yysep2864, yyq2864, yy2arr2864 + const yyr2864 bool = false + yyq2864[0] = x.PodCIDR != "" + yyq2864[1] = x.ExternalID != "" + yyq2864[2] = x.ProviderID != "" + yyq2864[3] = x.Unschedulable != false + var yynn2864 int + if yyr2864 || yy2arr2864 { + r.EncodeArrayStart(4) + } else { + yynn2864 = 0 + for _, b := range yyq2864 { + if b { + yynn2864++ + } + } + r.EncodeMapStart(yynn2864) + yynn2864 = 0 + } + if yyr2864 || yy2arr2864 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2864[0] { + yym2866 := z.EncBinary() + _ = yym2866 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2864[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podCIDR")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2867 := z.EncBinary() + _ = yym2867 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.PodCIDR)) + } + } + } + if yyr2864 || yy2arr2864 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2864[1] { + yym2869 := z.EncBinary() + _ = yym2869 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2864[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("externalID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2870 := z.EncBinary() + _ = yym2870 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ExternalID)) + } + } + } + if yyr2864 || yy2arr2864 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2864[2] { + yym2872 := z.EncBinary() + _ = yym2872 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2864[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("providerID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2873 := z.EncBinary() + _ = yym2873 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ProviderID)) + } + } + } + if yyr2864 || yy2arr2864 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2864[3] { + yym2875 := z.EncBinary() + _ = yym2875 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq2864[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unschedulable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2876 := z.EncBinary() + _ = yym2876 + if false { + } else { + r.EncodeBool(bool(x.Unschedulable)) + } + } + } + if yyr2864 || yy2arr2864 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2877 := z.DecBinary() + _ = yym2877 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2878 := r.ContainerType() + if yyct2878 == codecSelferValueTypeMap1234 { + yyl2878 := r.ReadMapStart() + if yyl2878 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2878, d) + } + } else if yyct2878 == codecSelferValueTypeArray1234 { + yyl2878 := r.ReadArrayStart() + if yyl2878 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2878, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2879Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2879Slc + var yyhl2879 bool = l >= 0 + for yyj2879 := 0; ; yyj2879++ { + if yyhl2879 { + if yyj2879 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2879Slc = r.DecodeBytes(yys2879Slc, true, true) + yys2879 := string(yys2879Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2879 { + case "podCIDR": + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + x.PodCIDR = string(r.DecodeString()) + } + case "externalID": + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + x.ExternalID = string(r.DecodeString()) + } + case "providerID": + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + x.ProviderID = string(r.DecodeString()) + } + case "unschedulable": + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + x.Unschedulable = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys2879) + } // end switch yys2879 + } // end for yyj2879 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2884 int + var yyb2884 bool + var yyhl2884 bool = l >= 0 + yyj2884++ + if yyhl2884 { + yyb2884 = yyj2884 > l + } else { + yyb2884 = r.CheckBreak() + } + if yyb2884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodCIDR = "" + } else { + x.PodCIDR = string(r.DecodeString()) + } + yyj2884++ + if yyhl2884 { + yyb2884 = yyj2884 > l + } else { + yyb2884 = r.CheckBreak() + } + if yyb2884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExternalID = "" + } else { + x.ExternalID = string(r.DecodeString()) + } + yyj2884++ + if yyhl2884 { + yyb2884 = yyj2884 > l + } else { + yyb2884 = r.CheckBreak() + } + if yyb2884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ProviderID = "" + } else { + x.ProviderID = string(r.DecodeString()) + } + yyj2884++ + if yyhl2884 { + yyb2884 = yyj2884 > l + } else { + yyb2884 = r.CheckBreak() + } + if yyb2884 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Unschedulable = false + } else { + x.Unschedulable = bool(r.DecodeBool()) + } + for { + yyj2884++ + if yyhl2884 { + yyb2884 = yyj2884 > l + } else { + yyb2884 = r.CheckBreak() + } + if yyb2884 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2884-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonEndpoint) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2889 := z.EncBinary() + _ = yym2889 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2890 := !z.EncBinary() + yy2arr2890 := z.EncBasicHandle().StructToArray + var yyq2890 [1]bool + _, _, _ = yysep2890, yyq2890, yy2arr2890 + const yyr2890 bool = false + var yynn2890 int + if yyr2890 || yy2arr2890 { + r.EncodeArrayStart(1) + } else { + yynn2890 = 1 + for _, b := range yyq2890 { + if b { + yynn2890++ + } + } + r.EncodeMapStart(yynn2890) + yynn2890 = 0 + } + if yyr2890 || yy2arr2890 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2892 := z.EncBinary() + _ = yym2892 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2893 := z.EncBinary() + _ = yym2893 + if false { + } else { + r.EncodeInt(int64(x.Port)) + } + } + if yyr2890 || yy2arr2890 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonEndpoint) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2894 := z.DecBinary() + _ = yym2894 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2895 := r.ContainerType() + if yyct2895 == codecSelferValueTypeMap1234 { + yyl2895 := r.ReadMapStart() + if yyl2895 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2895, d) + } + } else if yyct2895 == codecSelferValueTypeArray1234 { + yyl2895 := r.ReadArrayStart() + if yyl2895 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2895, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonEndpoint) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2896Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2896Slc + var yyhl2896 bool = l >= 0 + for yyj2896 := 0; ; yyj2896++ { + if yyhl2896 { + if yyj2896 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2896Slc = r.DecodeBytes(yys2896Slc, true, true) + yys2896 := string(yys2896Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2896 { + case "Port": + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys2896) + } // end switch yys2896 + } // end for yyj2896 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonEndpoint) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2898 int + var yyb2898 bool + var yyhl2898 bool = l >= 0 + yyj2898++ + if yyhl2898 { + yyb2898 = yyj2898 > l + } else { + yyb2898 = r.CheckBreak() + } + if yyb2898 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Port = 0 + } else { + x.Port = int32(r.DecodeInt(32)) + } + for { + yyj2898++ + if yyhl2898 { + yyb2898 = yyj2898 > l + } else { + yyb2898 = r.CheckBreak() + } + if yyb2898 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2898-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeDaemonEndpoints) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2900 := z.EncBinary() + _ = yym2900 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2901 := !z.EncBinary() + yy2arr2901 := z.EncBasicHandle().StructToArray + var yyq2901 [1]bool + _, _, _ = yysep2901, yyq2901, yy2arr2901 + const yyr2901 bool = false + yyq2901[0] = true + var yynn2901 int + if yyr2901 || yy2arr2901 { + r.EncodeArrayStart(1) + } else { + yynn2901 = 0 + for _, b := range yyq2901 { + if b { + yynn2901++ + } + } + r.EncodeMapStart(yynn2901) + yynn2901 = 0 + } + if yyr2901 || yy2arr2901 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2901[0] { + yy2903 := &x.KubeletEndpoint + yy2903.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2901[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletEndpoint")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2904 := &x.KubeletEndpoint + yy2904.CodecEncodeSelf(e) + } + } + if yyr2901 || yy2arr2901 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeDaemonEndpoints) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2905 := z.DecBinary() + _ = yym2905 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2906 := r.ContainerType() + if yyct2906 == codecSelferValueTypeMap1234 { + yyl2906 := r.ReadMapStart() + if yyl2906 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2906, d) + } + } else if yyct2906 == codecSelferValueTypeArray1234 { + yyl2906 := r.ReadArrayStart() + if yyl2906 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2906, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2907Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2907Slc + var yyhl2907 bool = l >= 0 + for yyj2907 := 0; ; yyj2907++ { + if yyhl2907 { + if yyj2907 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2907Slc = r.DecodeBytes(yys2907Slc, true, true) + yys2907 := string(yys2907Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2907 { + case "kubeletEndpoint": + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv2908 := &x.KubeletEndpoint + yyv2908.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys2907) + } // end switch yys2907 + } // end for yyj2907 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeDaemonEndpoints) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2909 int + var yyb2909 bool + var yyhl2909 bool = l >= 0 + yyj2909++ + if yyhl2909 { + yyb2909 = yyj2909 > l + } else { + yyb2909 = r.CheckBreak() + } + if yyb2909 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletEndpoint = DaemonEndpoint{} + } else { + yyv2910 := &x.KubeletEndpoint + yyv2910.CodecDecodeSelf(d) + } + for { + yyj2909++ + if yyhl2909 { + yyb2909 = yyj2909 > l + } else { + yyb2909 = r.CheckBreak() + } + if yyb2909 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2909-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeSystemInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2911 := z.EncBinary() + _ = yym2911 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2912 := !z.EncBinary() + yy2arr2912 := z.EncBasicHandle().StructToArray + var yyq2912 [10]bool + _, _, _ = yysep2912, yyq2912, yy2arr2912 + const yyr2912 bool = false + var yynn2912 int + if yyr2912 || yy2arr2912 { + r.EncodeArrayStart(10) + } else { + yynn2912 = 10 + for _, b := range yyq2912 { + if b { + yynn2912++ + } + } + r.EncodeMapStart(yynn2912) + yynn2912 = 0 + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2914 := z.EncBinary() + _ = yym2914 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("machineID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2915 := z.EncBinary() + _ = yym2915 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.MachineID)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2917 := z.EncBinary() + _ = yym2917 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("systemUUID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2918 := z.EncBinary() + _ = yym2918 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SystemUUID)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2920 := z.EncBinary() + _ = yym2920 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("bootID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2921 := z.EncBinary() + _ = yym2921 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.BootID)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2923 := z.EncBinary() + _ = yym2923 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kernelVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2924 := z.EncBinary() + _ = yym2924 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KernelVersion)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2926 := z.EncBinary() + _ = yym2926 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("osImage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2927 := z.EncBinary() + _ = yym2927 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OSImage)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2929 := z.EncBinary() + _ = yym2929 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("containerRuntimeVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2930 := z.EncBinary() + _ = yym2930 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ContainerRuntimeVersion)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2932 := z.EncBinary() + _ = yym2932 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeletVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2933 := z.EncBinary() + _ = yym2933 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeletVersion)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2935 := z.EncBinary() + _ = yym2935 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kubeProxyVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2936 := z.EncBinary() + _ = yym2936 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.KubeProxyVersion)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2938 := z.EncBinary() + _ = yym2938 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operatingSystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2939 := z.EncBinary() + _ = yym2939 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.OperatingSystem)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym2941 := z.EncBinary() + _ = yym2941 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("architecture")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym2942 := z.EncBinary() + _ = yym2942 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Architecture)) + } + } + if yyr2912 || yy2arr2912 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeSystemInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2943 := z.DecBinary() + _ = yym2943 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2944 := r.ContainerType() + if yyct2944 == codecSelferValueTypeMap1234 { + yyl2944 := r.ReadMapStart() + if yyl2944 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2944, d) + } + } else if yyct2944 == codecSelferValueTypeArray1234 { + yyl2944 := r.ReadArrayStart() + if yyl2944 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2944, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeSystemInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2945Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2945Slc + var yyhl2945 bool = l >= 0 + for yyj2945 := 0; ; yyj2945++ { + if yyhl2945 { + if yyj2945 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2945Slc = r.DecodeBytes(yys2945Slc, true, true) + yys2945 := string(yys2945Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2945 { + case "machineID": + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + x.MachineID = string(r.DecodeString()) + } + case "systemUUID": + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + x.SystemUUID = string(r.DecodeString()) + } + case "bootID": + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + x.BootID = string(r.DecodeString()) + } + case "kernelVersion": + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + x.KernelVersion = string(r.DecodeString()) + } + case "osImage": + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + x.OSImage = string(r.DecodeString()) + } + case "containerRuntimeVersion": + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + x.ContainerRuntimeVersion = string(r.DecodeString()) + } + case "kubeletVersion": + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + x.KubeletVersion = string(r.DecodeString()) + } + case "kubeProxyVersion": + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + x.KubeProxyVersion = string(r.DecodeString()) + } + case "operatingSystem": + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + x.OperatingSystem = string(r.DecodeString()) + } + case "architecture": + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + x.Architecture = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys2945) + } // end switch yys2945 + } // end for yyj2945 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeSystemInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj2956 int + var yyb2956 bool + var yyhl2956 bool = l >= 0 + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MachineID = "" + } else { + x.MachineID = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SystemUUID = "" + } else { + x.SystemUUID = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.BootID = "" + } else { + x.BootID = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KernelVersion = "" + } else { + x.KernelVersion = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OSImage = "" + } else { + x.OSImage = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ContainerRuntimeVersion = "" + } else { + x.ContainerRuntimeVersion = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeletVersion = "" + } else { + x.KubeletVersion = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.KubeProxyVersion = "" + } else { + x.KubeProxyVersion = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OperatingSystem = "" + } else { + x.OperatingSystem = string(r.DecodeString()) + } + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Architecture = "" + } else { + x.Architecture = string(r.DecodeString()) + } + for { + yyj2956++ + if yyhl2956 { + yyb2956 = yyj2956 > l + } else { + yyb2956 = r.CheckBreak() + } + if yyb2956 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj2956-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym2967 := z.EncBinary() + _ = yym2967 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2968 := !z.EncBinary() + yy2arr2968 := z.EncBasicHandle().StructToArray + var yyq2968 [10]bool + _, _, _ = yysep2968, yyq2968, yy2arr2968 + const yyr2968 bool = false + yyq2968[0] = len(x.Capacity) != 0 + yyq2968[1] = len(x.Allocatable) != 0 + yyq2968[2] = x.Phase != "" + yyq2968[3] = len(x.Conditions) != 0 + yyq2968[4] = len(x.Addresses) != 0 + yyq2968[5] = true + yyq2968[6] = true + yyq2968[7] = len(x.Images) != 0 + yyq2968[8] = len(x.VolumesInUse) != 0 + yyq2968[9] = len(x.VolumesAttached) != 0 + var yynn2968 int + if yyr2968 || yy2arr2968 { + r.EncodeArrayStart(10) + } else { + yynn2968 = 0 + for _, b := range yyq2968 { + if b { + yynn2968++ + } + } + r.EncodeMapStart(yynn2968) + yynn2968 = 0 + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[0] { + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capacity")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capacity == nil { + r.EncodeNil() + } else { + x.Capacity.CodecEncodeSelf(e) + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[1] { + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allocatable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Allocatable == nil { + r.EncodeNil() + } else { + x.Allocatable.CodecEncodeSelf(e) + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[2] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2968[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2973 := z.EncBinary() + _ = yym2973 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym2974 := z.EncBinary() + _ = yym2974 + if false { + } else { + h.encSliceNodeCondition(([]NodeCondition)(x.Conditions), e) + } + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[4] { + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2976 := z.EncBinary() + _ = yym2976 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("addresses")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Addresses == nil { + r.EncodeNil() + } else { + yym2977 := z.EncBinary() + _ = yym2977 + if false { + } else { + h.encSliceNodeAddress(([]NodeAddress)(x.Addresses), e) + } + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[5] { + yy2979 := &x.DaemonEndpoints + yy2979.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2968[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("daemonEndpoints")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2980 := &x.DaemonEndpoints + yy2980.CodecEncodeSelf(e) + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[6] { + yy2982 := &x.NodeInfo + yy2982.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2968[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nodeInfo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy2983 := &x.NodeInfo + yy2983.CodecEncodeSelf(e) + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[7] { + if x.Images == nil { + r.EncodeNil() + } else { + yym2985 := z.EncBinary() + _ = yym2985 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("images")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Images == nil { + r.EncodeNil() + } else { + yym2986 := z.EncBinary() + _ = yym2986 + if false { + } else { + h.encSliceContainerImage(([]ContainerImage)(x.Images), e) + } + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[8] { + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym2988 := z.EncBinary() + _ = yym2988 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesInUse")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesInUse == nil { + r.EncodeNil() + } else { + yym2989 := z.EncBinary() + _ = yym2989 + if false { + } else { + h.encSliceUniqueVolumeName(([]UniqueVolumeName)(x.VolumesInUse), e) + } + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2968[9] { + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym2991 := z.EncBinary() + _ = yym2991 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2968[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumesAttached")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumesAttached == nil { + r.EncodeNil() + } else { + yym2992 := z.EncBinary() + _ = yym2992 + if false { + } else { + h.encSliceAttachedVolume(([]AttachedVolume)(x.VolumesAttached), e) + } + } + } + } + if yyr2968 || yy2arr2968 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym2993 := z.DecBinary() + _ = yym2993 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct2994 := r.ContainerType() + if yyct2994 == codecSelferValueTypeMap1234 { + yyl2994 := r.ReadMapStart() + if yyl2994 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl2994, d) + } + } else if yyct2994 == codecSelferValueTypeArray1234 { + yyl2994 := r.ReadArrayStart() + if yyl2994 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl2994, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys2995Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys2995Slc + var yyhl2995 bool = l >= 0 + for yyj2995 := 0; ; yyj2995++ { + if yyhl2995 { + if yyj2995 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys2995Slc = r.DecodeBytes(yys2995Slc, true, true) + yys2995 := string(yys2995Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys2995 { + case "capacity": + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv2996 := &x.Capacity + yyv2996.CodecDecodeSelf(d) + } + case "allocatable": + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv2997 := &x.Allocatable + yyv2997.CodecDecodeSelf(d) + } + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NodePhase(r.DecodeString()) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv2999 := &x.Conditions + yym3000 := z.DecBinary() + _ = yym3000 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv2999), d) + } + } + case "addresses": + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv3001 := &x.Addresses + yym3002 := z.DecBinary() + _ = yym3002 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv3001), d) + } + } + case "daemonEndpoints": + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv3003 := &x.DaemonEndpoints + yyv3003.CodecDecodeSelf(d) + } + case "nodeInfo": + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv3004 := &x.NodeInfo + yyv3004.CodecDecodeSelf(d) + } + case "images": + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv3005 := &x.Images + yym3006 := z.DecBinary() + _ = yym3006 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv3005), d) + } + } + case "volumesInUse": + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv3007 := &x.VolumesInUse + yym3008 := z.DecBinary() + _ = yym3008 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv3007), d) + } + } + case "volumesAttached": + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv3009 := &x.VolumesAttached + yym3010 := z.DecBinary() + _ = yym3010 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv3009), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys2995) + } // end switch yys2995 + } // end for yyj2995 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3011 int + var yyb3011 bool + var yyhl3011 bool = l >= 0 + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Capacity = nil + } else { + yyv3012 := &x.Capacity + yyv3012.CodecDecodeSelf(d) + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allocatable = nil + } else { + yyv3013 := &x.Allocatable + yyv3013.CodecDecodeSelf(d) + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NodePhase(r.DecodeString()) + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv3015 := &x.Conditions + yym3016 := z.DecBinary() + _ = yym3016 + if false { + } else { + h.decSliceNodeCondition((*[]NodeCondition)(yyv3015), d) + } + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Addresses = nil + } else { + yyv3017 := &x.Addresses + yym3018 := z.DecBinary() + _ = yym3018 + if false { + } else { + h.decSliceNodeAddress((*[]NodeAddress)(yyv3017), d) + } + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DaemonEndpoints = NodeDaemonEndpoints{} + } else { + yyv3019 := &x.DaemonEndpoints + yyv3019.CodecDecodeSelf(d) + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NodeInfo = NodeSystemInfo{} + } else { + yyv3020 := &x.NodeInfo + yyv3020.CodecDecodeSelf(d) + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Images = nil + } else { + yyv3021 := &x.Images + yym3022 := z.DecBinary() + _ = yym3022 + if false { + } else { + h.decSliceContainerImage((*[]ContainerImage)(yyv3021), d) + } + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesInUse = nil + } else { + yyv3023 := &x.VolumesInUse + yym3024 := z.DecBinary() + _ = yym3024 + if false { + } else { + h.decSliceUniqueVolumeName((*[]UniqueVolumeName)(yyv3023), d) + } + } + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumesAttached = nil + } else { + yyv3025 := &x.VolumesAttached + yym3026 := z.DecBinary() + _ = yym3026 + if false { + } else { + h.decSliceAttachedVolume((*[]AttachedVolume)(yyv3025), d) + } + } + for { + yyj3011++ + if yyhl3011 { + yyb3011 = yyj3011 > l + } else { + yyb3011 = r.CheckBreak() + } + if yyb3011 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3011-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x UniqueVolumeName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3027 := z.EncBinary() + _ = yym3027 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *UniqueVolumeName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3028 := z.DecBinary() + _ = yym3028 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *AttachedVolume) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3029 := z.EncBinary() + _ = yym3029 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3030 := !z.EncBinary() + yy2arr3030 := z.EncBasicHandle().StructToArray + var yyq3030 [2]bool + _, _, _ = yysep3030, yyq3030, yy2arr3030 + const yyr3030 bool = false + var yynn3030 int + if yyr3030 || yy2arr3030 { + r.EncodeArrayStart(2) + } else { + yynn3030 = 2 + for _, b := range yyq3030 { + if b { + yynn3030++ + } + } + r.EncodeMapStart(yynn3030) + yynn3030 = 0 + } + if yyr3030 || yy2arr3030 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Name.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Name.CodecEncodeSelf(e) + } + if yyr3030 || yy2arr3030 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3033 := z.EncBinary() + _ = yym3033 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("devicePath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3034 := z.EncBinary() + _ = yym3034 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.DevicePath)) + } + } + if yyr3030 || yy2arr3030 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AttachedVolume) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3035 := z.DecBinary() + _ = yym3035 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3036 := r.ContainerType() + if yyct3036 == codecSelferValueTypeMap1234 { + yyl3036 := r.ReadMapStart() + if yyl3036 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3036, d) + } + } else if yyct3036 == codecSelferValueTypeArray1234 { + yyl3036 := r.ReadArrayStart() + if yyl3036 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3036, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AttachedVolume) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3037Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3037Slc + var yyhl3037 bool = l >= 0 + for yyj3037 := 0; ; yyj3037++ { + if yyhl3037 { + if yyj3037 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3037Slc = r.DecodeBytes(yys3037Slc, true, true) + yys3037 := string(yys3037Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3037 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = UniqueVolumeName(r.DecodeString()) + } + case "devicePath": + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + x.DevicePath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3037) + } // end switch yys3037 + } // end for yyj3037 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AttachedVolume) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3040 int + var yyb3040 bool + var yyhl3040 bool = l >= 0 + yyj3040++ + if yyhl3040 { + yyb3040 = yyj3040 > l + } else { + yyb3040 = r.CheckBreak() + } + if yyb3040 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = UniqueVolumeName(r.DecodeString()) + } + yyj3040++ + if yyhl3040 { + yyb3040 = yyj3040 > l + } else { + yyb3040 = r.CheckBreak() + } + if yyb3040 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DevicePath = "" + } else { + x.DevicePath = string(r.DecodeString()) + } + for { + yyj3040++ + if yyhl3040 { + yyb3040 = yyj3040 > l + } else { + yyb3040 = r.CheckBreak() + } + if yyb3040 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3040-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *AvoidPods) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3043 := z.EncBinary() + _ = yym3043 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3044 := !z.EncBinary() + yy2arr3044 := z.EncBasicHandle().StructToArray + var yyq3044 [1]bool + _, _, _ = yysep3044, yyq3044, yy2arr3044 + const yyr3044 bool = false + yyq3044[0] = len(x.PreferAvoidPods) != 0 + var yynn3044 int + if yyr3044 || yy2arr3044 { + r.EncodeArrayStart(1) + } else { + yynn3044 = 0 + for _, b := range yyq3044 { + if b { + yynn3044++ + } + } + r.EncodeMapStart(yynn3044) + yynn3044 = 0 + } + if yyr3044 || yy2arr3044 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3044[0] { + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym3046 := z.EncBinary() + _ = yym3046 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3044[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preferAvoidPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PreferAvoidPods == nil { + r.EncodeNil() + } else { + yym3047 := z.EncBinary() + _ = yym3047 + if false { + } else { + h.encSlicePreferAvoidPodsEntry(([]PreferAvoidPodsEntry)(x.PreferAvoidPods), e) + } + } + } + } + if yyr3044 || yy2arr3044 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *AvoidPods) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3048 := z.DecBinary() + _ = yym3048 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3049 := r.ContainerType() + if yyct3049 == codecSelferValueTypeMap1234 { + yyl3049 := r.ReadMapStart() + if yyl3049 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3049, d) + } + } else if yyct3049 == codecSelferValueTypeArray1234 { + yyl3049 := r.ReadArrayStart() + if yyl3049 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3049, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *AvoidPods) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3050Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3050Slc + var yyhl3050 bool = l >= 0 + for yyj3050 := 0; ; yyj3050++ { + if yyhl3050 { + if yyj3050 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3050Slc = r.DecodeBytes(yys3050Slc, true, true) + yys3050 := string(yys3050Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3050 { + case "preferAvoidPods": + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv3051 := &x.PreferAvoidPods + yym3052 := z.DecBinary() + _ = yym3052 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv3051), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3050) + } // end switch yys3050 + } // end for yyj3050 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *AvoidPods) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3053 int + var yyb3053 bool + var yyhl3053 bool = l >= 0 + yyj3053++ + if yyhl3053 { + yyb3053 = yyj3053 > l + } else { + yyb3053 = r.CheckBreak() + } + if yyb3053 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PreferAvoidPods = nil + } else { + yyv3054 := &x.PreferAvoidPods + yym3055 := z.DecBinary() + _ = yym3055 + if false { + } else { + h.decSlicePreferAvoidPodsEntry((*[]PreferAvoidPodsEntry)(yyv3054), d) + } + } + for { + yyj3053++ + if yyhl3053 { + yyb3053 = yyj3053 > l + } else { + yyb3053 = r.CheckBreak() + } + if yyb3053 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3053-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PreferAvoidPodsEntry) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3056 := z.EncBinary() + _ = yym3056 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3057 := !z.EncBinary() + yy2arr3057 := z.EncBasicHandle().StructToArray + var yyq3057 [4]bool + _, _, _ = yysep3057, yyq3057, yy2arr3057 + const yyr3057 bool = false + yyq3057[1] = true + yyq3057[2] = x.Reason != "" + yyq3057[3] = x.Message != "" + var yynn3057 int + if yyr3057 || yy2arr3057 { + r.EncodeArrayStart(4) + } else { + yynn3057 = 1 + for _, b := range yyq3057 { + if b { + yynn3057++ + } + } + r.EncodeMapStart(yynn3057) + yynn3057 = 0 + } + if yyr3057 || yy2arr3057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3059 := &x.PodSignature + yy3059.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSignature")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3060 := &x.PodSignature + yy3060.CodecEncodeSelf(e) + } + if yyr3057 || yy2arr3057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3057[1] { + yy3062 := &x.EvictionTime + yym3063 := z.EncBinary() + _ = yym3063 + if false { + } else if z.HasExtensions() && z.EncExt(yy3062) { + } else if yym3063 { + z.EncBinaryMarshal(yy3062) + } else if !yym3063 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3062) + } else { + z.EncFallback(yy3062) + } + } else { + r.EncodeNil() + } + } else { + if yyq3057[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evictionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3064 := &x.EvictionTime + yym3065 := z.EncBinary() + _ = yym3065 + if false { + } else if z.HasExtensions() && z.EncExt(yy3064) { + } else if yym3065 { + z.EncBinaryMarshal(yy3064) + } else if !yym3065 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3064) + } else { + z.EncFallback(yy3064) + } + } + } + if yyr3057 || yy2arr3057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3057[2] { + yym3067 := z.EncBinary() + _ = yym3067 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3057[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3068 := z.EncBinary() + _ = yym3068 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3057 || yy2arr3057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3057[3] { + yym3070 := z.EncBinary() + _ = yym3070 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3057[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3071 := z.EncBinary() + _ = yym3071 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3057 || yy2arr3057 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PreferAvoidPodsEntry) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3072 := z.DecBinary() + _ = yym3072 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3073 := r.ContainerType() + if yyct3073 == codecSelferValueTypeMap1234 { + yyl3073 := r.ReadMapStart() + if yyl3073 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3073, d) + } + } else if yyct3073 == codecSelferValueTypeArray1234 { + yyl3073 := r.ReadArrayStart() + if yyl3073 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3073, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3074Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3074Slc + var yyhl3074 bool = l >= 0 + for yyj3074 := 0; ; yyj3074++ { + if yyhl3074 { + if yyj3074 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3074Slc = r.DecodeBytes(yys3074Slc, true, true) + yys3074 := string(yys3074Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3074 { + case "podSignature": + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv3075 := &x.PodSignature + yyv3075.CodecDecodeSelf(d) + } + case "evictionTime": + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_unversioned.Time{} + } else { + yyv3076 := &x.EvictionTime + yym3077 := z.DecBinary() + _ = yym3077 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3076) { + } else if yym3077 { + z.DecBinaryUnmarshal(yyv3076) + } else if !yym3077 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3076) + } else { + z.DecFallback(yyv3076, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3074) + } // end switch yys3074 + } // end for yyj3074 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PreferAvoidPodsEntry) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3080 int + var yyb3080 bool + var yyhl3080 bool = l >= 0 + yyj3080++ + if yyhl3080 { + yyb3080 = yyj3080 > l + } else { + yyb3080 = r.CheckBreak() + } + if yyb3080 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSignature = PodSignature{} + } else { + yyv3081 := &x.PodSignature + yyv3081.CodecDecodeSelf(d) + } + yyj3080++ + if yyhl3080 { + yyb3080 = yyj3080 > l + } else { + yyb3080 = r.CheckBreak() + } + if yyb3080 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvictionTime = pkg2_unversioned.Time{} + } else { + yyv3082 := &x.EvictionTime + yym3083 := z.DecBinary() + _ = yym3083 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3082) { + } else if yym3083 { + z.DecBinaryUnmarshal(yyv3082) + } else if !yym3083 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3082) + } else { + z.DecFallback(yyv3082, false) + } + } + yyj3080++ + if yyhl3080 { + yyb3080 = yyj3080 > l + } else { + yyb3080 = r.CheckBreak() + } + if yyb3080 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3080++ + if yyhl3080 { + yyb3080 = yyj3080 > l + } else { + yyb3080 = r.CheckBreak() + } + if yyb3080 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj3080++ + if yyhl3080 { + yyb3080 = yyj3080 > l + } else { + yyb3080 = r.CheckBreak() + } + if yyb3080 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3080-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSignature) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3086 := z.EncBinary() + _ = yym3086 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3087 := !z.EncBinary() + yy2arr3087 := z.EncBasicHandle().StructToArray + var yyq3087 [1]bool + _, _, _ = yysep3087, yyq3087, yy2arr3087 + const yyr3087 bool = false + yyq3087[0] = x.PodController != nil + var yynn3087 int + if yyr3087 || yy2arr3087 { + r.EncodeArrayStart(1) + } else { + yynn3087 = 0 + for _, b := range yyq3087 { + if b { + yynn3087++ + } + } + r.EncodeMapStart(yynn3087) + yynn3087 = 0 + } + if yyr3087 || yy2arr3087 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3087[0] { + if x.PodController == nil { + r.EncodeNil() + } else { + x.PodController.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3087[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podController")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodController == nil { + r.EncodeNil() + } else { + x.PodController.CodecEncodeSelf(e) + } + } + } + if yyr3087 || yy2arr3087 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSignature) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3089 := z.DecBinary() + _ = yym3089 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3090 := r.ContainerType() + if yyct3090 == codecSelferValueTypeMap1234 { + yyl3090 := r.ReadMapStart() + if yyl3090 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3090, d) + } + } else if yyct3090 == codecSelferValueTypeArray1234 { + yyl3090 := r.ReadArrayStart() + if yyl3090 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3090, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSignature) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3091Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3091Slc + var yyhl3091 bool = l >= 0 + for yyj3091 := 0; ; yyj3091++ { + if yyhl3091 { + if yyj3091 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3091Slc = r.DecodeBytes(yys3091Slc, true, true) + yys3091 := string(yys3091Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3091 { + case "podController": + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(OwnerReference) + } + x.PodController.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3091) + } // end switch yys3091 + } // end for yyj3091 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSignature) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3093 int + var yyb3093 bool + var yyhl3093 bool = l >= 0 + yyj3093++ + if yyhl3093 { + yyb3093 = yyj3093 > l + } else { + yyb3093 = r.CheckBreak() + } + if yyb3093 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodController != nil { + x.PodController = nil + } + } else { + if x.PodController == nil { + x.PodController = new(OwnerReference) + } + x.PodController.CodecDecodeSelf(d) + } + for { + yyj3093++ + if yyhl3093 { + yyb3093 = yyj3093 > l + } else { + yyb3093 = r.CheckBreak() + } + if yyb3093 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3093-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ContainerImage) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3095 := z.EncBinary() + _ = yym3095 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3096 := !z.EncBinary() + yy2arr3096 := z.EncBasicHandle().StructToArray + var yyq3096 [2]bool + _, _, _ = yysep3096, yyq3096, yy2arr3096 + const yyr3096 bool = false + yyq3096[1] = x.SizeBytes != 0 + var yynn3096 int + if yyr3096 || yy2arr3096 { + r.EncodeArrayStart(2) + } else { + yynn3096 = 1 + for _, b := range yyq3096 { + if b { + yynn3096++ + } + } + r.EncodeMapStart(yynn3096) + yynn3096 = 0 + } + if yyr3096 || yy2arr3096 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym3098 := z.EncBinary() + _ = yym3098 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("names")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Names == nil { + r.EncodeNil() + } else { + yym3099 := z.EncBinary() + _ = yym3099 + if false { + } else { + z.F.EncSliceStringV(x.Names, false, e) + } + } + } + if yyr3096 || yy2arr3096 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3096[1] { + yym3101 := z.EncBinary() + _ = yym3101 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq3096[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sizeBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3102 := z.EncBinary() + _ = yym3102 + if false { + } else { + r.EncodeInt(int64(x.SizeBytes)) + } + } + } + if yyr3096 || yy2arr3096 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ContainerImage) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3103 := z.DecBinary() + _ = yym3103 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3104 := r.ContainerType() + if yyct3104 == codecSelferValueTypeMap1234 { + yyl3104 := r.ReadMapStart() + if yyl3104 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3104, d) + } + } else if yyct3104 == codecSelferValueTypeArray1234 { + yyl3104 := r.ReadArrayStart() + if yyl3104 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3104, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ContainerImage) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3105Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3105Slc + var yyhl3105 bool = l >= 0 + for yyj3105 := 0; ; yyj3105++ { + if yyhl3105 { + if yyj3105 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3105Slc = r.DecodeBytes(yys3105Slc, true, true) + yys3105 := string(yys3105Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3105 { + case "names": + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv3106 := &x.Names + yym3107 := z.DecBinary() + _ = yym3107 + if false { + } else { + z.F.DecSliceStringX(yyv3106, false, d) + } + } + case "sizeBytes": + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + x.SizeBytes = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys3105) + } // end switch yys3105 + } // end for yyj3105 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ContainerImage) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3109 int + var yyb3109 bool + var yyhl3109 bool = l >= 0 + yyj3109++ + if yyhl3109 { + yyb3109 = yyj3109 > l + } else { + yyb3109 = r.CheckBreak() + } + if yyb3109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Names = nil + } else { + yyv3110 := &x.Names + yym3111 := z.DecBinary() + _ = yym3111 + if false { + } else { + z.F.DecSliceStringX(yyv3110, false, d) + } + } + yyj3109++ + if yyhl3109 { + yyb3109 = yyj3109 > l + } else { + yyb3109 = r.CheckBreak() + } + if yyb3109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SizeBytes = 0 + } else { + x.SizeBytes = int64(r.DecodeInt(64)) + } + for { + yyj3109++ + if yyhl3109 { + yyb3109 = yyj3109 > l + } else { + yyb3109 = r.CheckBreak() + } + if yyb3109 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3109-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3113 := z.EncBinary() + _ = yym3113 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3114 := z.DecBinary() + _ = yym3114 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x NodeConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3115 := z.EncBinary() + _ = yym3115 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3116 := z.DecBinary() + _ = yym3116 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3117 := z.EncBinary() + _ = yym3117 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3118 := !z.EncBinary() + yy2arr3118 := z.EncBasicHandle().StructToArray + var yyq3118 [6]bool + _, _, _ = yysep3118, yyq3118, yy2arr3118 + const yyr3118 bool = false + yyq3118[2] = true + yyq3118[3] = true + yyq3118[4] = x.Reason != "" + yyq3118[5] = x.Message != "" + var yynn3118 int + if yyr3118 || yy2arr3118 { + r.EncodeArrayStart(6) + } else { + yynn3118 = 2 + for _, b := range yyq3118 { + if b { + yynn3118++ + } + } + r.EncodeMapStart(yynn3118) + yynn3118 = 0 + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3118[2] { + yy3122 := &x.LastHeartbeatTime + yym3123 := z.EncBinary() + _ = yym3123 + if false { + } else if z.HasExtensions() && z.EncExt(yy3122) { + } else if yym3123 { + z.EncBinaryMarshal(yy3122) + } else if !yym3123 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3122) + } else { + z.EncFallback(yy3122) + } + } else { + r.EncodeNil() + } + } else { + if yyq3118[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastHeartbeatTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3124 := &x.LastHeartbeatTime + yym3125 := z.EncBinary() + _ = yym3125 + if false { + } else if z.HasExtensions() && z.EncExt(yy3124) { + } else if yym3125 { + z.EncBinaryMarshal(yy3124) + } else if !yym3125 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3124) + } else { + z.EncFallback(yy3124) + } + } + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3118[3] { + yy3127 := &x.LastTransitionTime + yym3128 := z.EncBinary() + _ = yym3128 + if false { + } else if z.HasExtensions() && z.EncExt(yy3127) { + } else if yym3128 { + z.EncBinaryMarshal(yy3127) + } else if !yym3128 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3127) + } else { + z.EncFallback(yy3127) + } + } else { + r.EncodeNil() + } + } else { + if yyq3118[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3129 := &x.LastTransitionTime + yym3130 := z.EncBinary() + _ = yym3130 + if false { + } else if z.HasExtensions() && z.EncExt(yy3129) { + } else if yym3130 { + z.EncBinaryMarshal(yy3129) + } else if !yym3130 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3129) + } else { + z.EncFallback(yy3129) + } + } + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3118[4] { + yym3132 := z.EncBinary() + _ = yym3132 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3118[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3133 := z.EncBinary() + _ = yym3133 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3118[5] { + yym3135 := z.EncBinary() + _ = yym3135 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3118[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3136 := z.EncBinary() + _ = yym3136 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3118 || yy2arr3118 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3137 := z.DecBinary() + _ = yym3137 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3138 := r.ContainerType() + if yyct3138 == codecSelferValueTypeMap1234 { + yyl3138 := r.ReadMapStart() + if yyl3138 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3138, d) + } + } else if yyct3138 == codecSelferValueTypeArray1234 { + yyl3138 := r.ReadArrayStart() + if yyl3138 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3138, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3139Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3139Slc + var yyhl3139 bool = l >= 0 + for yyj3139 := 0; ; yyj3139++ { + if yyhl3139 { + if yyj3139 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3139Slc = r.DecodeBytes(yys3139Slc, true, true) + yys3139 := string(yys3139Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3139 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "lastHeartbeatTime": + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_unversioned.Time{} + } else { + yyv3142 := &x.LastHeartbeatTime + yym3143 := z.DecBinary() + _ = yym3143 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3142) { + } else if yym3143 { + z.DecBinaryUnmarshal(yyv3142) + } else if !yym3143 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3142) + } else { + z.DecFallback(yyv3142, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv3144 := &x.LastTransitionTime + yym3145 := z.DecBinary() + _ = yym3145 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3144) { + } else if yym3145 { + z.DecBinaryUnmarshal(yyv3144) + } else if !yym3145 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3144) + } else { + z.DecFallback(yyv3144, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3139) + } // end switch yys3139 + } // end for yyj3139 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3148 int + var yyb3148 bool + var yyhl3148 bool = l >= 0 + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeConditionType(r.DecodeString()) + } + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastHeartbeatTime = pkg2_unversioned.Time{} + } else { + yyv3151 := &x.LastHeartbeatTime + yym3152 := z.DecBinary() + _ = yym3152 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3151) { + } else if yym3152 { + z.DecBinaryUnmarshal(yyv3151) + } else if !yym3152 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3151) + } else { + z.DecFallback(yyv3151, false) + } + } + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg2_unversioned.Time{} + } else { + yyv3153 := &x.LastTransitionTime + yym3154 := z.DecBinary() + _ = yym3154 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3153) { + } else if yym3154 { + z.DecBinaryUnmarshal(yyv3153) + } else if !yym3154 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3153) + } else { + z.DecFallback(yyv3153, false) + } + } + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj3148++ + if yyhl3148 { + yyb3148 = yyj3148 > l + } else { + yyb3148 = r.CheckBreak() + } + if yyb3148 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3148-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NodeAddressType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3157 := z.EncBinary() + _ = yym3157 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NodeAddressType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3158 := z.DecBinary() + _ = yym3158 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NodeAddress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3159 := z.EncBinary() + _ = yym3159 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3160 := !z.EncBinary() + yy2arr3160 := z.EncBasicHandle().StructToArray + var yyq3160 [2]bool + _, _, _ = yysep3160, yyq3160, yy2arr3160 + const yyr3160 bool = false + var yynn3160 int + if yyr3160 || yy2arr3160 { + r.EncodeArrayStart(2) + } else { + yynn3160 = 2 + for _, b := range yyq3160 { + if b { + yynn3160++ + } + } + r.EncodeMapStart(yynn3160) + yynn3160 = 0 + } + if yyr3160 || yy2arr3160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr3160 || yy2arr3160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3163 := z.EncBinary() + _ = yym3163 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("address")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3164 := z.EncBinary() + _ = yym3164 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Address)) + } + } + if yyr3160 || yy2arr3160 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeAddress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3165 := z.DecBinary() + _ = yym3165 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3166 := r.ContainerType() + if yyct3166 == codecSelferValueTypeMap1234 { + yyl3166 := r.ReadMapStart() + if yyl3166 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3166, d) + } + } else if yyct3166 == codecSelferValueTypeArray1234 { + yyl3166 := r.ReadArrayStart() + if yyl3166 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3166, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeAddress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3167Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3167Slc + var yyhl3167 bool = l >= 0 + for yyj3167 := 0; ; yyj3167++ { + if yyhl3167 { + if yyj3167 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3167Slc = r.DecodeBytes(yys3167Slc, true, true) + yys3167 := string(yys3167Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3167 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeAddressType(r.DecodeString()) + } + case "address": + if r.TryDecodeAsNil() { + x.Address = "" + } else { + x.Address = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3167) + } // end switch yys3167 + } // end for yyj3167 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeAddress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3170 int + var yyb3170 bool + var yyhl3170 bool = l >= 0 + yyj3170++ + if yyhl3170 { + yyb3170 = yyj3170 > l + } else { + yyb3170 = r.CheckBreak() + } + if yyb3170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = NodeAddressType(r.DecodeString()) + } + yyj3170++ + if yyhl3170 { + yyb3170 = yyj3170 > l + } else { + yyb3170 = r.CheckBreak() + } + if yyb3170 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Address = "" + } else { + x.Address = string(r.DecodeString()) + } + for { + yyj3170++ + if yyhl3170 { + yyb3170 = yyj3170 > l + } else { + yyb3170 = r.CheckBreak() + } + if yyb3170 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3170-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3173 := z.EncBinary() + _ = yym3173 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3174 := z.DecBinary() + _ = yym3174 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x ResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3175 := z.EncBinary() + _ = yym3175 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encResourceList((ResourceList)(x), e) + } + } +} + +func (x *ResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3176 := z.DecBinary() + _ = yym3176 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decResourceList((*ResourceList)(x), d) + } +} + +func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3177 := z.EncBinary() + _ = yym3177 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3178 := !z.EncBinary() + yy2arr3178 := z.EncBasicHandle().StructToArray + var yyq3178 [5]bool + _, _, _ = yysep3178, yyq3178, yy2arr3178 + const yyr3178 bool = false + yyq3178[0] = x.Kind != "" + yyq3178[1] = x.APIVersion != "" + yyq3178[2] = true + yyq3178[3] = true + yyq3178[4] = true + var yynn3178 int + if yyr3178 || yy2arr3178 { + r.EncodeArrayStart(5) + } else { + yynn3178 = 0 + for _, b := range yyq3178 { + if b { + yynn3178++ + } + } + r.EncodeMapStart(yynn3178) + yynn3178 = 0 + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3178[0] { + yym3180 := z.EncBinary() + _ = yym3180 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3178[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3181 := z.EncBinary() + _ = yym3181 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3178[1] { + yym3183 := z.EncBinary() + _ = yym3183 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3178[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3184 := z.EncBinary() + _ = yym3184 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3178[2] { + yy3186 := &x.ObjectMeta + yy3186.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3178[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3187 := &x.ObjectMeta + yy3187.CodecEncodeSelf(e) + } + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3178[3] { + yy3189 := &x.Spec + yy3189.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3178[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3190 := &x.Spec + yy3190.CodecEncodeSelf(e) + } + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3178[4] { + yy3192 := &x.Status + yy3192.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3178[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3193 := &x.Status + yy3193.CodecEncodeSelf(e) + } + } + if yyr3178 || yy2arr3178 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Node) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3194 := z.DecBinary() + _ = yym3194 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3195 := r.ContainerType() + if yyct3195 == codecSelferValueTypeMap1234 { + yyl3195 := r.ReadMapStart() + if yyl3195 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3195, d) + } + } else if yyct3195 == codecSelferValueTypeArray1234 { + yyl3195 := r.ReadArrayStart() + if yyl3195 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3195, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Node) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3196Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3196Slc + var yyhl3196 bool = l >= 0 + for yyj3196 := 0; ; yyj3196++ { + if yyhl3196 { + if yyj3196 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3196Slc = r.DecodeBytes(yys3196Slc, true, true) + yys3196 := string(yys3196Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3196 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3199 := &x.ObjectMeta + yyv3199.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv3200 := &x.Spec + yyv3200.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv3201 := &x.Status + yyv3201.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3196) + } // end switch yys3196 + } // end for yyj3196 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3202 int + var yyb3202 bool + var yyhl3202 bool = l >= 0 + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3205 := &x.ObjectMeta + yyv3205.CodecDecodeSelf(d) + } + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NodeSpec{} + } else { + yyv3206 := &x.Spec + yyv3206.CodecDecodeSelf(d) + } + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NodeStatus{} + } else { + yyv3207 := &x.Status + yyv3207.CodecDecodeSelf(d) + } + for { + yyj3202++ + if yyhl3202 { + yyb3202 = yyj3202 > l + } else { + yyb3202 = r.CheckBreak() + } + if yyb3202 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3202-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3208 := z.EncBinary() + _ = yym3208 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3209 := !z.EncBinary() + yy2arr3209 := z.EncBasicHandle().StructToArray + var yyq3209 [4]bool + _, _, _ = yysep3209, yyq3209, yy2arr3209 + const yyr3209 bool = false + yyq3209[0] = x.Kind != "" + yyq3209[1] = x.APIVersion != "" + yyq3209[2] = true + var yynn3209 int + if yyr3209 || yy2arr3209 { + r.EncodeArrayStart(4) + } else { + yynn3209 = 1 + for _, b := range yyq3209 { + if b { + yynn3209++ + } + } + r.EncodeMapStart(yynn3209) + yynn3209 = 0 + } + if yyr3209 || yy2arr3209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3209[0] { + yym3211 := z.EncBinary() + _ = yym3211 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3209[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3212 := z.EncBinary() + _ = yym3212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3209 || yy2arr3209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3209[1] { + yym3214 := z.EncBinary() + _ = yym3214 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3209[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3215 := z.EncBinary() + _ = yym3215 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3209 || yy2arr3209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3209[2] { + yy3217 := &x.ListMeta + yym3218 := z.EncBinary() + _ = yym3218 + if false { + } else if z.HasExtensions() && z.EncExt(yy3217) { + } else { + z.EncFallback(yy3217) + } + } else { + r.EncodeNil() + } + } else { + if yyq3209[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3219 := &x.ListMeta + yym3220 := z.EncBinary() + _ = yym3220 + if false { + } else if z.HasExtensions() && z.EncExt(yy3219) { + } else { + z.EncFallback(yy3219) + } + } + } + if yyr3209 || yy2arr3209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3222 := z.EncBinary() + _ = yym3222 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3223 := z.EncBinary() + _ = yym3223 + if false { + } else { + h.encSliceNode(([]Node)(x.Items), e) + } + } + } + if yyr3209 || yy2arr3209 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3224 := z.DecBinary() + _ = yym3224 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3225 := r.ContainerType() + if yyct3225 == codecSelferValueTypeMap1234 { + yyl3225 := r.ReadMapStart() + if yyl3225 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3225, d) + } + } else if yyct3225 == codecSelferValueTypeArray1234 { + yyl3225 := r.ReadArrayStart() + if yyl3225 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3225, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3226Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3226Slc + var yyhl3226 bool = l >= 0 + for yyj3226 := 0; ; yyj3226++ { + if yyhl3226 { + if yyj3226 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3226Slc = r.DecodeBytes(yys3226Slc, true, true) + yys3226 := string(yys3226Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3226 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3229 := &x.ListMeta + yym3230 := z.DecBinary() + _ = yym3230 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3229) { + } else { + z.DecFallback(yyv3229, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3231 := &x.Items + yym3232 := z.DecBinary() + _ = yym3232 + if false { + } else { + h.decSliceNode((*[]Node)(yyv3231), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3226) + } // end switch yys3226 + } // end for yyj3226 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3233 int + var yyb3233 bool + var yyhl3233 bool = l >= 0 + yyj3233++ + if yyhl3233 { + yyb3233 = yyj3233 > l + } else { + yyb3233 = r.CheckBreak() + } + if yyb3233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3233++ + if yyhl3233 { + yyb3233 = yyj3233 > l + } else { + yyb3233 = r.CheckBreak() + } + if yyb3233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3233++ + if yyhl3233 { + yyb3233 = yyj3233 > l + } else { + yyb3233 = r.CheckBreak() + } + if yyb3233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3236 := &x.ListMeta + yym3237 := z.DecBinary() + _ = yym3237 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3236) { + } else { + z.DecFallback(yyv3236, false) + } + } + yyj3233++ + if yyhl3233 { + yyb3233 = yyj3233 > l + } else { + yyb3233 = r.CheckBreak() + } + if yyb3233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3238 := &x.Items + yym3239 := z.DecBinary() + _ = yym3239 + if false { + } else { + h.decSliceNode((*[]Node)(yyv3238), d) + } + } + for { + yyj3233++ + if yyhl3233 { + yyb3233 = yyj3233 > l + } else { + yyb3233 = r.CheckBreak() + } + if yyb3233 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3233-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FinalizerName) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3240 := z.EncBinary() + _ = yym3240 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FinalizerName) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3241 := z.DecBinary() + _ = yym3241 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *NamespaceSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3242 := z.EncBinary() + _ = yym3242 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3243 := !z.EncBinary() + yy2arr3243 := z.EncBasicHandle().StructToArray + var yyq3243 [1]bool + _, _, _ = yysep3243, yyq3243, yy2arr3243 + const yyr3243 bool = false + yyq3243[0] = len(x.Finalizers) != 0 + var yynn3243 int + if yyr3243 || yy2arr3243 { + r.EncodeArrayStart(1) + } else { + yynn3243 = 0 + for _, b := range yyq3243 { + if b { + yynn3243++ + } + } + r.EncodeMapStart(yynn3243) + yynn3243 = 0 + } + if yyr3243 || yy2arr3243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3243[0] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym3245 := z.EncBinary() + _ = yym3245 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3243[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym3246 := z.EncBinary() + _ = yym3246 + if false { + } else { + h.encSliceFinalizerName(([]FinalizerName)(x.Finalizers), e) + } + } + } + } + if yyr3243 || yy2arr3243 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3247 := z.DecBinary() + _ = yym3247 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3248 := r.ContainerType() + if yyct3248 == codecSelferValueTypeMap1234 { + yyl3248 := r.ReadMapStart() + if yyl3248 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3248, d) + } + } else if yyct3248 == codecSelferValueTypeArray1234 { + yyl3248 := r.ReadArrayStart() + if yyl3248 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3248, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3249Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3249Slc + var yyhl3249 bool = l >= 0 + for yyj3249 := 0; ; yyj3249++ { + if yyhl3249 { + if yyj3249 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3249Slc = r.DecodeBytes(yys3249Slc, true, true) + yys3249 := string(yys3249Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3249 { + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv3250 := &x.Finalizers + yym3251 := z.DecBinary() + _ = yym3251 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv3250), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3249) + } // end switch yys3249 + } // end for yyj3249 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3252 int + var yyb3252 bool + var yyhl3252 bool = l >= 0 + yyj3252++ + if yyhl3252 { + yyb3252 = yyj3252 > l + } else { + yyb3252 = r.CheckBreak() + } + if yyb3252 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv3253 := &x.Finalizers + yym3254 := z.DecBinary() + _ = yym3254 + if false { + } else { + h.decSliceFinalizerName((*[]FinalizerName)(yyv3253), d) + } + } + for { + yyj3252++ + if yyhl3252 { + yyb3252 = yyj3252 > l + } else { + yyb3252 = r.CheckBreak() + } + if yyb3252 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3252-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3255 := z.EncBinary() + _ = yym3255 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3256 := !z.EncBinary() + yy2arr3256 := z.EncBasicHandle().StructToArray + var yyq3256 [1]bool + _, _, _ = yysep3256, yyq3256, yy2arr3256 + const yyr3256 bool = false + yyq3256[0] = x.Phase != "" + var yynn3256 int + if yyr3256 || yy2arr3256 { + r.EncodeArrayStart(1) + } else { + yynn3256 = 0 + for _, b := range yyq3256 { + if b { + yynn3256++ + } + } + r.EncodeMapStart(yynn3256) + yynn3256 = 0 + } + if yyr3256 || yy2arr3256 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3256[0] { + x.Phase.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3256[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("phase")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Phase.CodecEncodeSelf(e) + } + } + if yyr3256 || yy2arr3256 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3258 := z.DecBinary() + _ = yym3258 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3259 := r.ContainerType() + if yyct3259 == codecSelferValueTypeMap1234 { + yyl3259 := r.ReadMapStart() + if yyl3259 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3259, d) + } + } else if yyct3259 == codecSelferValueTypeArray1234 { + yyl3259 := r.ReadArrayStart() + if yyl3259 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3259, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3260Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3260Slc + var yyhl3260 bool = l >= 0 + for yyj3260 := 0; ; yyj3260++ { + if yyhl3260 { + if yyj3260 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3260Slc = r.DecodeBytes(yys3260Slc, true, true) + yys3260 := string(yys3260Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3260 { + case "phase": + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NamespacePhase(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3260) + } // end switch yys3260 + } // end for yyj3260 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3262 int + var yyb3262 bool + var yyhl3262 bool = l >= 0 + yyj3262++ + if yyhl3262 { + yyb3262 = yyj3262 > l + } else { + yyb3262 = r.CheckBreak() + } + if yyb3262 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Phase = "" + } else { + x.Phase = NamespacePhase(r.DecodeString()) + } + for { + yyj3262++ + if yyhl3262 { + yyb3262 = yyj3262 > l + } else { + yyb3262 = r.CheckBreak() + } + if yyb3262 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3262-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x NamespacePhase) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3264 := z.EncBinary() + _ = yym3264 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *NamespacePhase) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3265 := z.DecBinary() + _ = yym3265 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *Namespace) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3266 := z.EncBinary() + _ = yym3266 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3267 := !z.EncBinary() + yy2arr3267 := z.EncBasicHandle().StructToArray + var yyq3267 [5]bool + _, _, _ = yysep3267, yyq3267, yy2arr3267 + const yyr3267 bool = false + yyq3267[0] = x.Kind != "" + yyq3267[1] = x.APIVersion != "" + yyq3267[2] = true + yyq3267[3] = true + yyq3267[4] = true + var yynn3267 int + if yyr3267 || yy2arr3267 { + r.EncodeArrayStart(5) + } else { + yynn3267 = 0 + for _, b := range yyq3267 { + if b { + yynn3267++ + } + } + r.EncodeMapStart(yynn3267) + yynn3267 = 0 + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3267[0] { + yym3269 := z.EncBinary() + _ = yym3269 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3267[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3270 := z.EncBinary() + _ = yym3270 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3267[1] { + yym3272 := z.EncBinary() + _ = yym3272 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3267[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3273 := z.EncBinary() + _ = yym3273 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3267[2] { + yy3275 := &x.ObjectMeta + yy3275.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3267[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3276 := &x.ObjectMeta + yy3276.CodecEncodeSelf(e) + } + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3267[3] { + yy3278 := &x.Spec + yy3278.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3267[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3279 := &x.Spec + yy3279.CodecEncodeSelf(e) + } + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3267[4] { + yy3281 := &x.Status + yy3281.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3267[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3282 := &x.Status + yy3282.CodecEncodeSelf(e) + } + } + if yyr3267 || yy2arr3267 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Namespace) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3283 := z.DecBinary() + _ = yym3283 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3284 := r.ContainerType() + if yyct3284 == codecSelferValueTypeMap1234 { + yyl3284 := r.ReadMapStart() + if yyl3284 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3284, d) + } + } else if yyct3284 == codecSelferValueTypeArray1234 { + yyl3284 := r.ReadArrayStart() + if yyl3284 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3284, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Namespace) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3285Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3285Slc + var yyhl3285 bool = l >= 0 + for yyj3285 := 0; ; yyj3285++ { + if yyhl3285 { + if yyj3285 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3285Slc = r.DecodeBytes(yys3285Slc, true, true) + yys3285 := string(yys3285Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3285 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3288 := &x.ObjectMeta + yyv3288.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv3289 := &x.Spec + yyv3289.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv3290 := &x.Status + yyv3290.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3285) + } // end switch yys3285 + } // end for yyj3285 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Namespace) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3291 int + var yyb3291 bool + var yyhl3291 bool = l >= 0 + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3294 := &x.ObjectMeta + yyv3294.CodecDecodeSelf(d) + } + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NamespaceSpec{} + } else { + yyv3295 := &x.Spec + yyv3295.CodecDecodeSelf(d) + } + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = NamespaceStatus{} + } else { + yyv3296 := &x.Status + yyv3296.CodecDecodeSelf(d) + } + for { + yyj3291++ + if yyhl3291 { + yyb3291 = yyj3291 > l + } else { + yyb3291 = r.CheckBreak() + } + if yyb3291 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3291-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NamespaceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3297 := z.EncBinary() + _ = yym3297 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3298 := !z.EncBinary() + yy2arr3298 := z.EncBasicHandle().StructToArray + var yyq3298 [4]bool + _, _, _ = yysep3298, yyq3298, yy2arr3298 + const yyr3298 bool = false + yyq3298[0] = x.Kind != "" + yyq3298[1] = x.APIVersion != "" + yyq3298[2] = true + var yynn3298 int + if yyr3298 || yy2arr3298 { + r.EncodeArrayStart(4) + } else { + yynn3298 = 1 + for _, b := range yyq3298 { + if b { + yynn3298++ + } + } + r.EncodeMapStart(yynn3298) + yynn3298 = 0 + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3298[0] { + yym3300 := z.EncBinary() + _ = yym3300 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3298[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3301 := z.EncBinary() + _ = yym3301 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3298[1] { + yym3303 := z.EncBinary() + _ = yym3303 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3298[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3304 := z.EncBinary() + _ = yym3304 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3298[2] { + yy3306 := &x.ListMeta + yym3307 := z.EncBinary() + _ = yym3307 + if false { + } else if z.HasExtensions() && z.EncExt(yy3306) { + } else { + z.EncFallback(yy3306) + } + } else { + r.EncodeNil() + } + } else { + if yyq3298[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3308 := &x.ListMeta + yym3309 := z.EncBinary() + _ = yym3309 + if false { + } else if z.HasExtensions() && z.EncExt(yy3308) { + } else { + z.EncFallback(yy3308) + } + } + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3311 := z.EncBinary() + _ = yym3311 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3312 := z.EncBinary() + _ = yym3312 + if false { + } else { + h.encSliceNamespace(([]Namespace)(x.Items), e) + } + } + } + if yyr3298 || yy2arr3298 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NamespaceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3313 := z.DecBinary() + _ = yym3313 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3314 := r.ContainerType() + if yyct3314 == codecSelferValueTypeMap1234 { + yyl3314 := r.ReadMapStart() + if yyl3314 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3314, d) + } + } else if yyct3314 == codecSelferValueTypeArray1234 { + yyl3314 := r.ReadArrayStart() + if yyl3314 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3314, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NamespaceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3315Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3315Slc + var yyhl3315 bool = l >= 0 + for yyj3315 := 0; ; yyj3315++ { + if yyhl3315 { + if yyj3315 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3315Slc = r.DecodeBytes(yys3315Slc, true, true) + yys3315 := string(yys3315Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3315 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3318 := &x.ListMeta + yym3319 := z.DecBinary() + _ = yym3319 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3318) { + } else { + z.DecFallback(yyv3318, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3320 := &x.Items + yym3321 := z.DecBinary() + _ = yym3321 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv3320), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3315) + } // end switch yys3315 + } // end for yyj3315 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NamespaceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3322 int + var yyb3322 bool + var yyhl3322 bool = l >= 0 + yyj3322++ + if yyhl3322 { + yyb3322 = yyj3322 > l + } else { + yyb3322 = r.CheckBreak() + } + if yyb3322 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3322++ + if yyhl3322 { + yyb3322 = yyj3322 > l + } else { + yyb3322 = r.CheckBreak() + } + if yyb3322 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3322++ + if yyhl3322 { + yyb3322 = yyj3322 > l + } else { + yyb3322 = r.CheckBreak() + } + if yyb3322 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3325 := &x.ListMeta + yym3326 := z.DecBinary() + _ = yym3326 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3325) { + } else { + z.DecFallback(yyv3325, false) + } + } + yyj3322++ + if yyhl3322 { + yyb3322 = yyj3322 > l + } else { + yyb3322 = r.CheckBreak() + } + if yyb3322 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3327 := &x.Items + yym3328 := z.DecBinary() + _ = yym3328 + if false { + } else { + h.decSliceNamespace((*[]Namespace)(yyv3327), d) + } + } + for { + yyj3322++ + if yyhl3322 { + yyb3322 = yyj3322 > l + } else { + yyb3322 = r.CheckBreak() + } + if yyb3322 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3322-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Binding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3329 := z.EncBinary() + _ = yym3329 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3330 := !z.EncBinary() + yy2arr3330 := z.EncBasicHandle().StructToArray + var yyq3330 [4]bool + _, _, _ = yysep3330, yyq3330, yy2arr3330 + const yyr3330 bool = false + yyq3330[0] = x.Kind != "" + yyq3330[1] = x.APIVersion != "" + yyq3330[2] = true + var yynn3330 int + if yyr3330 || yy2arr3330 { + r.EncodeArrayStart(4) + } else { + yynn3330 = 1 + for _, b := range yyq3330 { + if b { + yynn3330++ + } + } + r.EncodeMapStart(yynn3330) + yynn3330 = 0 + } + if yyr3330 || yy2arr3330 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3330[0] { + yym3332 := z.EncBinary() + _ = yym3332 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3330[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3333 := z.EncBinary() + _ = yym3333 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3330 || yy2arr3330 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3330[1] { + yym3335 := z.EncBinary() + _ = yym3335 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3330[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3336 := z.EncBinary() + _ = yym3336 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3330 || yy2arr3330 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3330[2] { + yy3338 := &x.ObjectMeta + yy3338.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3330[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3339 := &x.ObjectMeta + yy3339.CodecEncodeSelf(e) + } + } + if yyr3330 || yy2arr3330 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3341 := &x.Target + yy3341.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("target")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3342 := &x.Target + yy3342.CodecEncodeSelf(e) + } + if yyr3330 || yy2arr3330 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Binding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3343 := z.DecBinary() + _ = yym3343 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3344 := r.ContainerType() + if yyct3344 == codecSelferValueTypeMap1234 { + yyl3344 := r.ReadMapStart() + if yyl3344 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3344, d) + } + } else if yyct3344 == codecSelferValueTypeArray1234 { + yyl3344 := r.ReadArrayStart() + if yyl3344 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3344, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Binding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3345Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3345Slc + var yyhl3345 bool = l >= 0 + for yyj3345 := 0; ; yyj3345++ { + if yyhl3345 { + if yyj3345 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3345Slc = r.DecodeBytes(yys3345Slc, true, true) + yys3345 := string(yys3345Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3345 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3348 := &x.ObjectMeta + yyv3348.CodecDecodeSelf(d) + } + case "target": + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv3349 := &x.Target + yyv3349.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3345) + } // end switch yys3345 + } // end for yyj3345 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Binding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3350 int + var yyb3350 bool + var yyhl3350 bool = l >= 0 + yyj3350++ + if yyhl3350 { + yyb3350 = yyj3350 > l + } else { + yyb3350 = r.CheckBreak() + } + if yyb3350 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3350++ + if yyhl3350 { + yyb3350 = yyj3350 > l + } else { + yyb3350 = r.CheckBreak() + } + if yyb3350 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3350++ + if yyhl3350 { + yyb3350 = yyj3350 > l + } else { + yyb3350 = r.CheckBreak() + } + if yyb3350 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3353 := &x.ObjectMeta + yyv3353.CodecDecodeSelf(d) + } + yyj3350++ + if yyhl3350 { + yyb3350 = yyj3350 > l + } else { + yyb3350 = r.CheckBreak() + } + if yyb3350 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Target = ObjectReference{} + } else { + yyv3354 := &x.Target + yyv3354.CodecDecodeSelf(d) + } + for { + yyj3350++ + if yyhl3350 { + yyb3350 = yyj3350 > l + } else { + yyb3350 = r.CheckBreak() + } + if yyb3350 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3350-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Preconditions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3355 := z.EncBinary() + _ = yym3355 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3356 := !z.EncBinary() + yy2arr3356 := z.EncBasicHandle().StructToArray + var yyq3356 [1]bool + _, _, _ = yysep3356, yyq3356, yy2arr3356 + const yyr3356 bool = false + yyq3356[0] = x.UID != nil + var yynn3356 int + if yyr3356 || yy2arr3356 { + r.EncodeArrayStart(1) + } else { + yynn3356 = 0 + for _, b := range yyq3356 { + if b { + yynn3356++ + } + } + r.EncodeMapStart(yynn3356) + yynn3356 = 0 + } + if yyr3356 || yy2arr3356 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3356[0] { + if x.UID == nil { + r.EncodeNil() + } else { + yy3358 := *x.UID + yym3359 := z.EncBinary() + _ = yym3359 + if false { + } else if z.HasExtensions() && z.EncExt(yy3358) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy3358)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3356[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UID == nil { + r.EncodeNil() + } else { + yy3360 := *x.UID + yym3361 := z.EncBinary() + _ = yym3361 + if false { + } else if z.HasExtensions() && z.EncExt(yy3360) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy3360)) + } + } + } + } + if yyr3356 || yy2arr3356 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Preconditions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3362 := z.DecBinary() + _ = yym3362 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3363 := r.ContainerType() + if yyct3363 == codecSelferValueTypeMap1234 { + yyl3363 := r.ReadMapStart() + if yyl3363 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3363, d) + } + } else if yyct3363 == codecSelferValueTypeArray1234 { + yyl3363 := r.ReadArrayStart() + if yyl3363 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3363, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Preconditions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3364Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3364Slc + var yyhl3364 bool = l >= 0 + for yyj3364 := 0; ; yyj3364++ { + if yyhl3364 { + if yyj3364 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3364Slc = r.DecodeBytes(yys3364Slc, true, true) + yys3364 := string(yys3364Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3364 { + case "uid": + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym3366 := z.DecBinary() + _ = yym3366 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + default: + z.DecStructFieldNotFound(-1, yys3364) + } // end switch yys3364 + } // end for yyj3364 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Preconditions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3367 int + var yyb3367 bool + var yyhl3367 bool = l >= 0 + yyj3367++ + if yyhl3367 { + yyb3367 = yyj3367 > l + } else { + yyb3367 = r.CheckBreak() + } + if yyb3367 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.UID != nil { + x.UID = nil + } + } else { + if x.UID == nil { + x.UID = new(pkg1_types.UID) + } + yym3369 := z.DecBinary() + _ = yym3369 + if false { + } else if z.HasExtensions() && z.DecExt(x.UID) { + } else { + *((*string)(x.UID)) = r.DecodeString() + } + } + for { + yyj3367++ + if yyhl3367 { + yyb3367 = yyj3367 > l + } else { + yyb3367 = r.CheckBreak() + } + if yyb3367 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3367-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeleteOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3370 := z.EncBinary() + _ = yym3370 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3371 := !z.EncBinary() + yy2arr3371 := z.EncBasicHandle().StructToArray + var yyq3371 [5]bool + _, _, _ = yysep3371, yyq3371, yy2arr3371 + const yyr3371 bool = false + yyq3371[0] = x.Kind != "" + yyq3371[1] = x.APIVersion != "" + yyq3371[2] = x.GracePeriodSeconds != nil + yyq3371[3] = x.Preconditions != nil + yyq3371[4] = x.OrphanDependents != nil + var yynn3371 int + if yyr3371 || yy2arr3371 { + r.EncodeArrayStart(5) + } else { + yynn3371 = 0 + for _, b := range yyq3371 { + if b { + yynn3371++ + } + } + r.EncodeMapStart(yynn3371) + yynn3371 = 0 + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3371[0] { + yym3373 := z.EncBinary() + _ = yym3373 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3371[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3374 := z.EncBinary() + _ = yym3374 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3371[1] { + yym3376 := z.EncBinary() + _ = yym3376 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3371[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3377 := z.EncBinary() + _ = yym3377 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3371[2] { + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy3379 := *x.GracePeriodSeconds + yym3380 := z.EncBinary() + _ = yym3380 + if false { + } else { + r.EncodeInt(int64(yy3379)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3371[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("gracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.GracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy3381 := *x.GracePeriodSeconds + yym3382 := z.EncBinary() + _ = yym3382 + if false { + } else { + r.EncodeInt(int64(yy3381)) + } + } + } + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3371[3] { + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3371[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("preconditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Preconditions == nil { + r.EncodeNil() + } else { + x.Preconditions.CodecEncodeSelf(e) + } + } + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3371[4] { + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy3385 := *x.OrphanDependents + yym3386 := z.EncBinary() + _ = yym3386 + if false { + } else { + r.EncodeBool(bool(yy3385)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3371[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("orphanDependents")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OrphanDependents == nil { + r.EncodeNil() + } else { + yy3387 := *x.OrphanDependents + yym3388 := z.EncBinary() + _ = yym3388 + if false { + } else { + r.EncodeBool(bool(yy3387)) + } + } + } + } + if yyr3371 || yy2arr3371 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeleteOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3389 := z.DecBinary() + _ = yym3389 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3390 := r.ContainerType() + if yyct3390 == codecSelferValueTypeMap1234 { + yyl3390 := r.ReadMapStart() + if yyl3390 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3390, d) + } + } else if yyct3390 == codecSelferValueTypeArray1234 { + yyl3390 := r.ReadArrayStart() + if yyl3390 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3390, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeleteOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3391Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3391Slc + var yyhl3391 bool = l >= 0 + for yyj3391 := 0; ; yyj3391++ { + if yyhl3391 { + if yyj3391 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3391Slc = r.DecodeBytes(yys3391Slc, true, true) + yys3391 := string(yys3391Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3391 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "gracePeriodSeconds": + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym3395 := z.DecBinary() + _ = yym3395 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "preconditions": + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + case "orphanDependents": + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym3398 := z.DecBinary() + _ = yym3398 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3391) + } // end switch yys3391 + } // end for yyj3391 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeleteOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3399 int + var yyb3399 bool + var yyhl3399 bool = l >= 0 + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.GracePeriodSeconds != nil { + x.GracePeriodSeconds = nil + } + } else { + if x.GracePeriodSeconds == nil { + x.GracePeriodSeconds = new(int64) + } + yym3403 := z.DecBinary() + _ = yym3403 + if false { + } else { + *((*int64)(x.GracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Preconditions != nil { + x.Preconditions = nil + } + } else { + if x.Preconditions == nil { + x.Preconditions = new(Preconditions) + } + x.Preconditions.CodecDecodeSelf(d) + } + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.OrphanDependents != nil { + x.OrphanDependents = nil + } + } else { + if x.OrphanDependents == nil { + x.OrphanDependents = new(bool) + } + yym3406 := z.DecBinary() + _ = yym3406 + if false { + } else { + *((*bool)(x.OrphanDependents)) = r.DecodeBool() + } + } + for { + yyj3399++ + if yyhl3399 { + yyb3399 = yyj3399 > l + } else { + yyb3399 = r.CheckBreak() + } + if yyb3399 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3399-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExportOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3407 := z.EncBinary() + _ = yym3407 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3408 := !z.EncBinary() + yy2arr3408 := z.EncBasicHandle().StructToArray + var yyq3408 [4]bool + _, _, _ = yysep3408, yyq3408, yy2arr3408 + const yyr3408 bool = false + yyq3408[0] = x.Kind != "" + yyq3408[1] = x.APIVersion != "" + var yynn3408 int + if yyr3408 || yy2arr3408 { + r.EncodeArrayStart(4) + } else { + yynn3408 = 2 + for _, b := range yyq3408 { + if b { + yynn3408++ + } + } + r.EncodeMapStart(yynn3408) + yynn3408 = 0 + } + if yyr3408 || yy2arr3408 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3408[0] { + yym3410 := z.EncBinary() + _ = yym3410 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3408[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3411 := z.EncBinary() + _ = yym3411 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3408 || yy2arr3408 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3408[1] { + yym3413 := z.EncBinary() + _ = yym3413 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3408[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3414 := z.EncBinary() + _ = yym3414 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3408 || yy2arr3408 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3416 := z.EncBinary() + _ = yym3416 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("export")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3417 := z.EncBinary() + _ = yym3417 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } + if yyr3408 || yy2arr3408 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3419 := z.EncBinary() + _ = yym3419 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exact")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3420 := z.EncBinary() + _ = yym3420 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } + if yyr3408 || yy2arr3408 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExportOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3421 := z.DecBinary() + _ = yym3421 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3422 := r.ContainerType() + if yyct3422 == codecSelferValueTypeMap1234 { + yyl3422 := r.ReadMapStart() + if yyl3422 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3422, d) + } + } else if yyct3422 == codecSelferValueTypeArray1234 { + yyl3422 := r.ReadArrayStart() + if yyl3422 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3422, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExportOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3423Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3423Slc + var yyhl3423 bool = l >= 0 + for yyj3423 := 0; ; yyj3423++ { + if yyhl3423 { + if yyj3423 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3423Slc = r.DecodeBytes(yys3423Slc, true, true) + yys3423 := string(yys3423Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3423 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "export": + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + case "exact": + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys3423) + } // end switch yys3423 + } // end for yyj3423 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExportOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3428 int + var yyb3428 bool + var yyhl3428 bool = l >= 0 + yyj3428++ + if yyhl3428 { + yyb3428 = yyj3428 > l + } else { + yyb3428 = r.CheckBreak() + } + if yyb3428 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3428++ + if yyhl3428 { + yyb3428 = yyj3428 > l + } else { + yyb3428 = r.CheckBreak() + } + if yyb3428 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3428++ + if yyhl3428 { + yyb3428 = yyj3428 > l + } else { + yyb3428 = r.CheckBreak() + } + if yyb3428 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + yyj3428++ + if yyhl3428 { + yyb3428 = yyj3428 > l + } else { + yyb3428 = r.CheckBreak() + } + if yyb3428 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + for { + yyj3428++ + if yyhl3428 { + yyb3428 = yyj3428 > l + } else { + yyb3428 = r.CheckBreak() + } + if yyb3428 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3428-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ListOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3433 := z.EncBinary() + _ = yym3433 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3434 := !z.EncBinary() + yy2arr3434 := z.EncBasicHandle().StructToArray + var yyq3434 [7]bool + _, _, _ = yysep3434, yyq3434, yy2arr3434 + const yyr3434 bool = false + yyq3434[0] = x.Kind != "" + yyq3434[1] = x.APIVersion != "" + yyq3434[2] = x.LabelSelector != "" + yyq3434[3] = x.FieldSelector != "" + yyq3434[4] = x.Watch != false + yyq3434[5] = x.ResourceVersion != "" + yyq3434[6] = x.TimeoutSeconds != nil + var yynn3434 int + if yyr3434 || yy2arr3434 { + r.EncodeArrayStart(7) + } else { + yynn3434 = 0 + for _, b := range yyq3434 { + if b { + yynn3434++ + } + } + r.EncodeMapStart(yynn3434) + yynn3434 = 0 + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[0] { + yym3436 := z.EncBinary() + _ = yym3436 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3434[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3437 := z.EncBinary() + _ = yym3437 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[1] { + yym3439 := z.EncBinary() + _ = yym3439 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3434[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3440 := z.EncBinary() + _ = yym3440 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[2] { + yym3442 := z.EncBinary() + _ = yym3442 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3434[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3443 := z.EncBinary() + _ = yym3443 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[3] { + yym3445 := z.EncBinary() + _ = yym3445 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3434[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3446 := z.EncBinary() + _ = yym3446 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[4] { + yym3448 := z.EncBinary() + _ = yym3448 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3434[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("watch")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3449 := z.EncBinary() + _ = yym3449 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[5] { + yym3451 := z.EncBinary() + _ = yym3451 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3434[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3452 := z.EncBinary() + _ = yym3452 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3434[6] { + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy3454 := *x.TimeoutSeconds + yym3455 := z.EncBinary() + _ = yym3455 + if false { + } else { + r.EncodeInt(int64(yy3454)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3434[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy3456 := *x.TimeoutSeconds + yym3457 := z.EncBinary() + _ = yym3457 + if false { + } else { + r.EncodeInt(int64(yy3456)) + } + } + } + } + if yyr3434 || yy2arr3434 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ListOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3458 := z.DecBinary() + _ = yym3458 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3459 := r.ContainerType() + if yyct3459 == codecSelferValueTypeMap1234 { + yyl3459 := r.ReadMapStart() + if yyl3459 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3459, d) + } + } else if yyct3459 == codecSelferValueTypeArray1234 { + yyl3459 := r.ReadArrayStart() + if yyl3459 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3459, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ListOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3460Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3460Slc + var yyhl3460 bool = l >= 0 + for yyj3460 := 0; ; yyj3460++ { + if yyhl3460 { + if yyj3460 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3460Slc = r.DecodeBytes(yys3460Slc, true, true) + yys3460 := string(yys3460Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3460 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "labelSelector": + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + x.LabelSelector = string(r.DecodeString()) + } + case "fieldSelector": + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + x.FieldSelector = string(r.DecodeString()) + } + case "watch": + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym3468 := z.DecBinary() + _ = yym3468 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3460) + } // end switch yys3460 + } // end for yyj3460 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ListOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3469 int + var yyb3469 bool + var yyhl3469 bool = l >= 0 + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + x.LabelSelector = string(r.DecodeString()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + x.FieldSelector = string(r.DecodeString()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym3477 := z.DecBinary() + _ = yym3477 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + for { + yyj3469++ + if yyhl3469 { + yyb3469 = yyj3469 > l + } else { + yyb3469 = r.CheckBreak() + } + if yyb3469 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3469-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodLogOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3478 := z.EncBinary() + _ = yym3478 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3479 := !z.EncBinary() + yy2arr3479 := z.EncBasicHandle().StructToArray + var yyq3479 [10]bool + _, _, _ = yysep3479, yyq3479, yy2arr3479 + const yyr3479 bool = false + yyq3479[0] = x.Kind != "" + yyq3479[1] = x.APIVersion != "" + yyq3479[2] = x.Container != "" + yyq3479[3] = x.Follow != false + yyq3479[4] = x.Previous != false + yyq3479[5] = x.SinceSeconds != nil + yyq3479[6] = x.SinceTime != nil + yyq3479[7] = x.Timestamps != false + yyq3479[8] = x.TailLines != nil + yyq3479[9] = x.LimitBytes != nil + var yynn3479 int + if yyr3479 || yy2arr3479 { + r.EncodeArrayStart(10) + } else { + yynn3479 = 0 + for _, b := range yyq3479 { + if b { + yynn3479++ + } + } + r.EncodeMapStart(yynn3479) + yynn3479 = 0 + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[0] { + yym3481 := z.EncBinary() + _ = yym3481 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3479[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3482 := z.EncBinary() + _ = yym3482 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[1] { + yym3484 := z.EncBinary() + _ = yym3484 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3479[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3485 := z.EncBinary() + _ = yym3485 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[2] { + yym3487 := z.EncBinary() + _ = yym3487 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3479[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3488 := z.EncBinary() + _ = yym3488 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[3] { + yym3490 := z.EncBinary() + _ = yym3490 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3479[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("follow")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3491 := z.EncBinary() + _ = yym3491 + if false { + } else { + r.EncodeBool(bool(x.Follow)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[4] { + yym3493 := z.EncBinary() + _ = yym3493 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3479[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("previous")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3494 := z.EncBinary() + _ = yym3494 + if false { + } else { + r.EncodeBool(bool(x.Previous)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[5] { + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy3496 := *x.SinceSeconds + yym3497 := z.EncBinary() + _ = yym3497 + if false { + } else { + r.EncodeInt(int64(yy3496)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3479[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sinceSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceSeconds == nil { + r.EncodeNil() + } else { + yy3498 := *x.SinceSeconds + yym3499 := z.EncBinary() + _ = yym3499 + if false { + } else { + r.EncodeInt(int64(yy3498)) + } + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[6] { + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym3501 := z.EncBinary() + _ = yym3501 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym3501 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym3501 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3479[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("sinceTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SinceTime == nil { + r.EncodeNil() + } else { + yym3502 := z.EncBinary() + _ = yym3502 + if false { + } else if z.HasExtensions() && z.EncExt(x.SinceTime) { + } else if yym3502 { + z.EncBinaryMarshal(x.SinceTime) + } else if !yym3502 && z.IsJSONHandle() { + z.EncJSONMarshal(x.SinceTime) + } else { + z.EncFallback(x.SinceTime) + } + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[7] { + yym3504 := z.EncBinary() + _ = yym3504 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3479[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timestamps")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3505 := z.EncBinary() + _ = yym3505 + if false { + } else { + r.EncodeBool(bool(x.Timestamps)) + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[8] { + if x.TailLines == nil { + r.EncodeNil() + } else { + yy3507 := *x.TailLines + yym3508 := z.EncBinary() + _ = yym3508 + if false { + } else { + r.EncodeInt(int64(yy3507)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3479[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tailLines")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TailLines == nil { + r.EncodeNil() + } else { + yy3509 := *x.TailLines + yym3510 := z.EncBinary() + _ = yym3510 + if false { + } else { + r.EncodeInt(int64(yy3509)) + } + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3479[9] { + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy3512 := *x.LimitBytes + yym3513 := z.EncBinary() + _ = yym3513 + if false { + } else { + r.EncodeInt(int64(yy3512)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3479[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limitBytes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LimitBytes == nil { + r.EncodeNil() + } else { + yy3514 := *x.LimitBytes + yym3515 := z.EncBinary() + _ = yym3515 + if false { + } else { + r.EncodeInt(int64(yy3514)) + } + } + } + } + if yyr3479 || yy2arr3479 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodLogOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3516 := z.DecBinary() + _ = yym3516 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3517 := r.ContainerType() + if yyct3517 == codecSelferValueTypeMap1234 { + yyl3517 := r.ReadMapStart() + if yyl3517 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3517, d) + } + } else if yyct3517 == codecSelferValueTypeArray1234 { + yyl3517 := r.ReadArrayStart() + if yyl3517 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3517, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodLogOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3518Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3518Slc + var yyhl3518 bool = l >= 0 + for yyj3518 := 0; ; yyj3518++ { + if yyhl3518 { + if yyj3518 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3518Slc = r.DecodeBytes(yys3518Slc, true, true) + yys3518 := string(yys3518Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3518 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + case "follow": + if r.TryDecodeAsNil() { + x.Follow = false + } else { + x.Follow = bool(r.DecodeBool()) + } + case "previous": + if r.TryDecodeAsNil() { + x.Previous = false + } else { + x.Previous = bool(r.DecodeBool()) + } + case "sinceSeconds": + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym3525 := z.DecBinary() + _ = yym3525 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + case "sinceTime": + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_unversioned.Time) + } + yym3527 := z.DecBinary() + _ = yym3527 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym3527 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym3527 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + case "timestamps": + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + x.Timestamps = bool(r.DecodeBool()) + } + case "tailLines": + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym3530 := z.DecBinary() + _ = yym3530 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + case "limitBytes": + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym3532 := z.DecBinary() + _ = yym3532 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys3518) + } // end switch yys3518 + } // end for yyj3518 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodLogOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3533 int + var yyb3533 bool + var yyhl3533 bool = l >= 0 + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Follow = false + } else { + x.Follow = bool(r.DecodeBool()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Previous = false + } else { + x.Previous = bool(r.DecodeBool()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceSeconds != nil { + x.SinceSeconds = nil + } + } else { + if x.SinceSeconds == nil { + x.SinceSeconds = new(int64) + } + yym3540 := z.DecBinary() + _ = yym3540 + if false { + } else { + *((*int64)(x.SinceSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SinceTime != nil { + x.SinceTime = nil + } + } else { + if x.SinceTime == nil { + x.SinceTime = new(pkg2_unversioned.Time) + } + yym3542 := z.DecBinary() + _ = yym3542 + if false { + } else if z.HasExtensions() && z.DecExt(x.SinceTime) { + } else if yym3542 { + z.DecBinaryUnmarshal(x.SinceTime) + } else if !yym3542 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.SinceTime) + } else { + z.DecFallback(x.SinceTime, false) + } + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Timestamps = false + } else { + x.Timestamps = bool(r.DecodeBool()) + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TailLines != nil { + x.TailLines = nil + } + } else { + if x.TailLines == nil { + x.TailLines = new(int64) + } + yym3545 := z.DecBinary() + _ = yym3545 + if false { + } else { + *((*int64)(x.TailLines)) = int64(r.DecodeInt(64)) + } + } + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LimitBytes != nil { + x.LimitBytes = nil + } + } else { + if x.LimitBytes == nil { + x.LimitBytes = new(int64) + } + yym3547 := z.DecBinary() + _ = yym3547 + if false { + } else { + *((*int64)(x.LimitBytes)) = int64(r.DecodeInt(64)) + } + } + for { + yyj3533++ + if yyhl3533 { + yyb3533 = yyj3533 > l + } else { + yyb3533 = r.CheckBreak() + } + if yyb3533 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3533-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodAttachOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3548 := z.EncBinary() + _ = yym3548 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3549 := !z.EncBinary() + yy2arr3549 := z.EncBasicHandle().StructToArray + var yyq3549 [7]bool + _, _, _ = yysep3549, yyq3549, yy2arr3549 + const yyr3549 bool = false + yyq3549[0] = x.Kind != "" + yyq3549[1] = x.APIVersion != "" + yyq3549[2] = x.Stdin != false + yyq3549[3] = x.Stdout != false + yyq3549[4] = x.Stderr != false + yyq3549[5] = x.TTY != false + yyq3549[6] = x.Container != "" + var yynn3549 int + if yyr3549 || yy2arr3549 { + r.EncodeArrayStart(7) + } else { + yynn3549 = 0 + for _, b := range yyq3549 { + if b { + yynn3549++ + } + } + r.EncodeMapStart(yynn3549) + yynn3549 = 0 + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[0] { + yym3551 := z.EncBinary() + _ = yym3551 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3549[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3552 := z.EncBinary() + _ = yym3552 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[1] { + yym3554 := z.EncBinary() + _ = yym3554 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3549[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3555 := z.EncBinary() + _ = yym3555 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[2] { + yym3557 := z.EncBinary() + _ = yym3557 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3549[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3558 := z.EncBinary() + _ = yym3558 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[3] { + yym3560 := z.EncBinary() + _ = yym3560 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3549[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3561 := z.EncBinary() + _ = yym3561 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[4] { + yym3563 := z.EncBinary() + _ = yym3563 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3549[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3564 := z.EncBinary() + _ = yym3564 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[5] { + yym3566 := z.EncBinary() + _ = yym3566 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3549[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3567 := z.EncBinary() + _ = yym3567 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3549[6] { + yym3569 := z.EncBinary() + _ = yym3569 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3549[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3570 := z.EncBinary() + _ = yym3570 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr3549 || yy2arr3549 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodAttachOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3571 := z.DecBinary() + _ = yym3571 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3572 := r.ContainerType() + if yyct3572 == codecSelferValueTypeMap1234 { + yyl3572 := r.ReadMapStart() + if yyl3572 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3572, d) + } + } else if yyct3572 == codecSelferValueTypeArray1234 { + yyl3572 := r.ReadArrayStart() + if yyl3572 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3572, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodAttachOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3573Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3573Slc + var yyhl3573 bool = l >= 0 + for yyj3573 := 0; ; yyj3573++ { + if yyhl3573 { + if yyj3573 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3573Slc = r.DecodeBytes(yys3573Slc, true, true) + yys3573 := string(yys3573Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3573 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + case "stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3573) + } // end switch yys3573 + } // end for yyj3573 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodAttachOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3581 int + var yyb3581 bool + var yyhl3581 bool = l >= 0 + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + for { + yyj3581++ + if yyhl3581 { + yyb3581 = yyj3581 > l + } else { + yyb3581 = r.CheckBreak() + } + if yyb3581 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3581-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodExecOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3589 := z.EncBinary() + _ = yym3589 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3590 := !z.EncBinary() + yy2arr3590 := z.EncBasicHandle().StructToArray + var yyq3590 [8]bool + _, _, _ = yysep3590, yyq3590, yy2arr3590 + const yyr3590 bool = false + yyq3590[0] = x.Kind != "" + yyq3590[1] = x.APIVersion != "" + yyq3590[2] = x.Stdin != false + yyq3590[3] = x.Stdout != false + yyq3590[4] = x.Stderr != false + yyq3590[5] = x.TTY != false + yyq3590[6] = x.Container != "" + var yynn3590 int + if yyr3590 || yy2arr3590 { + r.EncodeArrayStart(8) + } else { + yynn3590 = 1 + for _, b := range yyq3590 { + if b { + yynn3590++ + } + } + r.EncodeMapStart(yynn3590) + yynn3590 = 0 + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[0] { + yym3592 := z.EncBinary() + _ = yym3592 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3590[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3593 := z.EncBinary() + _ = yym3593 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[1] { + yym3595 := z.EncBinary() + _ = yym3595 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3590[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3596 := z.EncBinary() + _ = yym3596 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[2] { + yym3598 := z.EncBinary() + _ = yym3598 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3590[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdin")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3599 := z.EncBinary() + _ = yym3599 + if false { + } else { + r.EncodeBool(bool(x.Stdin)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[3] { + yym3601 := z.EncBinary() + _ = yym3601 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3590[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stdout")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3602 := z.EncBinary() + _ = yym3602 + if false { + } else { + r.EncodeBool(bool(x.Stdout)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[4] { + yym3604 := z.EncBinary() + _ = yym3604 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3590[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stderr")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3605 := z.EncBinary() + _ = yym3605 + if false { + } else { + r.EncodeBool(bool(x.Stderr)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[5] { + yym3607 := z.EncBinary() + _ = yym3607 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq3590[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tty")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3608 := z.EncBinary() + _ = yym3608 + if false { + } else { + r.EncodeBool(bool(x.TTY)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3590[6] { + yym3610 := z.EncBinary() + _ = yym3610 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3590[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("container")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3611 := z.EncBinary() + _ = yym3611 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Container)) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym3613 := z.EncBinary() + _ = yym3613 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("command")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Command == nil { + r.EncodeNil() + } else { + yym3614 := z.EncBinary() + _ = yym3614 + if false { + } else { + z.F.EncSliceStringV(x.Command, false, e) + } + } + } + if yyr3590 || yy2arr3590 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodExecOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3615 := z.DecBinary() + _ = yym3615 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3616 := r.ContainerType() + if yyct3616 == codecSelferValueTypeMap1234 { + yyl3616 := r.ReadMapStart() + if yyl3616 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3616, d) + } + } else if yyct3616 == codecSelferValueTypeArray1234 { + yyl3616 := r.ReadArrayStart() + if yyl3616 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3616, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodExecOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3617Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3617Slc + var yyhl3617 bool = l >= 0 + for yyj3617 := 0; ; yyj3617++ { + if yyhl3617 { + if yyj3617 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3617Slc = r.DecodeBytes(yys3617Slc, true, true) + yys3617 := string(yys3617Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3617 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "stdin": + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + case "stdout": + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + case "stderr": + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + case "tty": + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + case "container": + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + case "command": + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv3625 := &x.Command + yym3626 := z.DecBinary() + _ = yym3626 + if false { + } else { + z.F.DecSliceStringX(yyv3625, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3617) + } // end switch yys3617 + } // end for yyj3617 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodExecOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3627 int + var yyb3627 bool + var yyhl3627 bool = l >= 0 + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdin = false + } else { + x.Stdin = bool(r.DecodeBool()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stdout = false + } else { + x.Stdout = bool(r.DecodeBool()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Stderr = false + } else { + x.Stderr = bool(r.DecodeBool()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TTY = false + } else { + x.TTY = bool(r.DecodeBool()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Container = "" + } else { + x.Container = string(r.DecodeString()) + } + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Command = nil + } else { + yyv3635 := &x.Command + yym3636 := z.DecBinary() + _ = yym3636 + if false { + } else { + z.F.DecSliceStringX(yyv3635, false, d) + } + } + for { + yyj3627++ + if yyhl3627 { + yyb3627 = yyj3627 > l + } else { + yyb3627 = r.CheckBreak() + } + if yyb3627 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3627-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3637 := z.EncBinary() + _ = yym3637 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3638 := !z.EncBinary() + yy2arr3638 := z.EncBasicHandle().StructToArray + var yyq3638 [3]bool + _, _, _ = yysep3638, yyq3638, yy2arr3638 + const yyr3638 bool = false + yyq3638[0] = x.Kind != "" + yyq3638[1] = x.APIVersion != "" + yyq3638[2] = x.Path != "" + var yynn3638 int + if yyr3638 || yy2arr3638 { + r.EncodeArrayStart(3) + } else { + yynn3638 = 0 + for _, b := range yyq3638 { + if b { + yynn3638++ + } + } + r.EncodeMapStart(yynn3638) + yynn3638 = 0 + } + if yyr3638 || yy2arr3638 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3638[0] { + yym3640 := z.EncBinary() + _ = yym3640 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3638[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3641 := z.EncBinary() + _ = yym3641 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3638 || yy2arr3638 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3638[1] { + yym3643 := z.EncBinary() + _ = yym3643 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3638[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3644 := z.EncBinary() + _ = yym3644 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3638 || yy2arr3638 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3638[2] { + yym3646 := z.EncBinary() + _ = yym3646 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3638[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3647 := z.EncBinary() + _ = yym3647 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr3638 || yy2arr3638 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3648 := z.DecBinary() + _ = yym3648 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3649 := r.ContainerType() + if yyct3649 == codecSelferValueTypeMap1234 { + yyl3649 := r.ReadMapStart() + if yyl3649 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3649, d) + } + } else if yyct3649 == codecSelferValueTypeArray1234 { + yyl3649 := r.ReadArrayStart() + if yyl3649 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3649, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3650Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3650Slc + var yyhl3650 bool = l >= 0 + for yyj3650 := 0; ; yyj3650++ { + if yyhl3650 { + if yyj3650 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3650Slc = r.DecodeBytes(yys3650Slc, true, true) + yys3650 := string(yys3650Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3650 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3650) + } // end switch yys3650 + } // end for yyj3650 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3654 int + var yyb3654 bool + var yyhl3654 bool = l >= 0 + yyj3654++ + if yyhl3654 { + yyb3654 = yyj3654 > l + } else { + yyb3654 = r.CheckBreak() + } + if yyb3654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3654++ + if yyhl3654 { + yyb3654 = yyj3654 > l + } else { + yyb3654 = r.CheckBreak() + } + if yyb3654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3654++ + if yyhl3654 { + yyb3654 = yyj3654 > l + } else { + yyb3654 = r.CheckBreak() + } + if yyb3654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3654++ + if yyhl3654 { + yyb3654 = yyj3654 > l + } else { + yyb3654 = r.CheckBreak() + } + if yyb3654 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3654-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NodeProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3658 := z.EncBinary() + _ = yym3658 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3659 := !z.EncBinary() + yy2arr3659 := z.EncBasicHandle().StructToArray + var yyq3659 [3]bool + _, _, _ = yysep3659, yyq3659, yy2arr3659 + const yyr3659 bool = false + yyq3659[0] = x.Kind != "" + yyq3659[1] = x.APIVersion != "" + yyq3659[2] = x.Path != "" + var yynn3659 int + if yyr3659 || yy2arr3659 { + r.EncodeArrayStart(3) + } else { + yynn3659 = 0 + for _, b := range yyq3659 { + if b { + yynn3659++ + } + } + r.EncodeMapStart(yynn3659) + yynn3659 = 0 + } + if yyr3659 || yy2arr3659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3659[0] { + yym3661 := z.EncBinary() + _ = yym3661 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3659[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3662 := z.EncBinary() + _ = yym3662 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3659 || yy2arr3659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3659[1] { + yym3664 := z.EncBinary() + _ = yym3664 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3659[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3665 := z.EncBinary() + _ = yym3665 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3659 || yy2arr3659 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3659[2] { + yym3667 := z.EncBinary() + _ = yym3667 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3659[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3668 := z.EncBinary() + _ = yym3668 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr3659 || yy2arr3659 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NodeProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3669 := z.DecBinary() + _ = yym3669 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3670 := r.ContainerType() + if yyct3670 == codecSelferValueTypeMap1234 { + yyl3670 := r.ReadMapStart() + if yyl3670 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3670, d) + } + } else if yyct3670 == codecSelferValueTypeArray1234 { + yyl3670 := r.ReadArrayStart() + if yyl3670 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3670, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NodeProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3671Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3671Slc + var yyhl3671 bool = l >= 0 + for yyj3671 := 0; ; yyj3671++ { + if yyhl3671 { + if yyj3671 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3671Slc = r.DecodeBytes(yys3671Slc, true, true) + yys3671 := string(yys3671Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3671 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3671) + } // end switch yys3671 + } // end for yyj3671 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NodeProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3675 int + var yyb3675 bool + var yyhl3675 bool = l >= 0 + yyj3675++ + if yyhl3675 { + yyb3675 = yyj3675 > l + } else { + yyb3675 = r.CheckBreak() + } + if yyb3675 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3675++ + if yyhl3675 { + yyb3675 = yyj3675 > l + } else { + yyb3675 = r.CheckBreak() + } + if yyb3675 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3675++ + if yyhl3675 { + yyb3675 = yyj3675 > l + } else { + yyb3675 = r.CheckBreak() + } + if yyb3675 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3675++ + if yyhl3675 { + yyb3675 = yyj3675 > l + } else { + yyb3675 = r.CheckBreak() + } + if yyb3675 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3675-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ServiceProxyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3679 := z.EncBinary() + _ = yym3679 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3680 := !z.EncBinary() + yy2arr3680 := z.EncBasicHandle().StructToArray + var yyq3680 [3]bool + _, _, _ = yysep3680, yyq3680, yy2arr3680 + const yyr3680 bool = false + yyq3680[0] = x.Kind != "" + yyq3680[1] = x.APIVersion != "" + yyq3680[2] = x.Path != "" + var yynn3680 int + if yyr3680 || yy2arr3680 { + r.EncodeArrayStart(3) + } else { + yynn3680 = 0 + for _, b := range yyq3680 { + if b { + yynn3680++ + } + } + r.EncodeMapStart(yynn3680) + yynn3680 = 0 + } + if yyr3680 || yy2arr3680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3680[0] { + yym3682 := z.EncBinary() + _ = yym3682 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3680[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3683 := z.EncBinary() + _ = yym3683 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3680 || yy2arr3680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3680[1] { + yym3685 := z.EncBinary() + _ = yym3685 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3680[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3686 := z.EncBinary() + _ = yym3686 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3680 || yy2arr3680 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3680[2] { + yym3688 := z.EncBinary() + _ = yym3688 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3680[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3689 := z.EncBinary() + _ = yym3689 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr3680 || yy2arr3680 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ServiceProxyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3690 := z.DecBinary() + _ = yym3690 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3691 := r.ContainerType() + if yyct3691 == codecSelferValueTypeMap1234 { + yyl3691 := r.ReadMapStart() + if yyl3691 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3691, d) + } + } else if yyct3691 == codecSelferValueTypeArray1234 { + yyl3691 := r.ReadArrayStart() + if yyl3691 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3691, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3692Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3692Slc + var yyhl3692 bool = l >= 0 + for yyj3692 := 0; ; yyj3692++ { + if yyhl3692 { + if yyj3692 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3692Slc = r.DecodeBytes(yys3692Slc, true, true) + yys3692 := string(yys3692Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3692 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3692) + } // end switch yys3692 + } // end for yyj3692 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ServiceProxyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3696 int + var yyb3696 bool + var yyhl3696 bool = l >= 0 + yyj3696++ + if yyhl3696 { + yyb3696 = yyj3696 > l + } else { + yyb3696 = r.CheckBreak() + } + if yyb3696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3696++ + if yyhl3696 { + yyb3696 = yyj3696 > l + } else { + yyb3696 = r.CheckBreak() + } + if yyb3696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3696++ + if yyhl3696 { + yyb3696 = yyj3696 > l + } else { + yyb3696 = r.CheckBreak() + } + if yyb3696 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + for { + yyj3696++ + if yyhl3696 { + yyb3696 = yyj3696 > l + } else { + yyb3696 = r.CheckBreak() + } + if yyb3696 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3696-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *OwnerReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3700 := z.EncBinary() + _ = yym3700 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3701 := !z.EncBinary() + yy2arr3701 := z.EncBasicHandle().StructToArray + var yyq3701 [5]bool + _, _, _ = yysep3701, yyq3701, yy2arr3701 + const yyr3701 bool = false + yyq3701[4] = x.Controller != nil + var yynn3701 int + if yyr3701 || yy2arr3701 { + r.EncodeArrayStart(5) + } else { + yynn3701 = 4 + for _, b := range yyq3701 { + if b { + yynn3701++ + } + } + r.EncodeMapStart(yynn3701) + yynn3701 = 0 + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3703 := z.EncBinary() + _ = yym3703 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3704 := z.EncBinary() + _ = yym3704 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3706 := z.EncBinary() + _ = yym3706 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3707 := z.EncBinary() + _ = yym3707 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3709 := z.EncBinary() + _ = yym3709 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3710 := z.EncBinary() + _ = yym3710 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym3712 := z.EncBinary() + _ = yym3712 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3713 := z.EncBinary() + _ = yym3713 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3701[4] { + if x.Controller == nil { + r.EncodeNil() + } else { + yy3715 := *x.Controller + yym3716 := z.EncBinary() + _ = yym3716 + if false { + } else { + r.EncodeBool(bool(yy3715)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq3701[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("controller")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Controller == nil { + r.EncodeNil() + } else { + yy3717 := *x.Controller + yym3718 := z.EncBinary() + _ = yym3718 + if false { + } else { + r.EncodeBool(bool(yy3717)) + } + } + } + } + if yyr3701 || yy2arr3701 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *OwnerReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3719 := z.DecBinary() + _ = yym3719 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3720 := r.ContainerType() + if yyct3720 == codecSelferValueTypeMap1234 { + yyl3720 := r.ReadMapStart() + if yyl3720 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3720, d) + } + } else if yyct3720 == codecSelferValueTypeArray1234 { + yyl3720 := r.ReadArrayStart() + if yyl3720 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3720, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *OwnerReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3721Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3721Slc + var yyhl3721 bool = l >= 0 + for yyj3721 := 0; ; yyj3721++ { + if yyhl3721 { + if yyj3721 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3721Slc = r.DecodeBytes(yys3721Slc, true, true) + yys3721 := string(yys3721Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3721 { + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "controller": + if r.TryDecodeAsNil() { + if x.Controller != nil { + x.Controller = nil + } + } else { + if x.Controller == nil { + x.Controller = new(bool) + } + yym3727 := z.DecBinary() + _ = yym3727 + if false { + } else { + *((*bool)(x.Controller)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys3721) + } // end switch yys3721 + } // end for yyj3721 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *OwnerReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3728 int + var yyb3728 bool + var yyhl3728 bool = l >= 0 + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Controller != nil { + x.Controller = nil + } + } else { + if x.Controller == nil { + x.Controller = new(bool) + } + yym3734 := z.DecBinary() + _ = yym3734 + if false { + } else { + *((*bool)(x.Controller)) = r.DecodeBool() + } + } + for { + yyj3728++ + if yyhl3728 { + yyb3728 = yyj3728 > l + } else { + yyb3728 = r.CheckBreak() + } + if yyb3728 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3728-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3735 := z.EncBinary() + _ = yym3735 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3736 := !z.EncBinary() + yy2arr3736 := z.EncBasicHandle().StructToArray + var yyq3736 [7]bool + _, _, _ = yysep3736, yyq3736, yy2arr3736 + const yyr3736 bool = false + yyq3736[0] = x.Kind != "" + yyq3736[1] = x.Namespace != "" + yyq3736[2] = x.Name != "" + yyq3736[3] = x.UID != "" + yyq3736[4] = x.APIVersion != "" + yyq3736[5] = x.ResourceVersion != "" + yyq3736[6] = x.FieldPath != "" + var yynn3736 int + if yyr3736 || yy2arr3736 { + r.EncodeArrayStart(7) + } else { + yynn3736 = 0 + for _, b := range yyq3736 { + if b { + yynn3736++ + } + } + r.EncodeMapStart(yynn3736) + yynn3736 = 0 + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[0] { + yym3738 := z.EncBinary() + _ = yym3738 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3739 := z.EncBinary() + _ = yym3739 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[1] { + yym3741 := z.EncBinary() + _ = yym3741 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3742 := z.EncBinary() + _ = yym3742 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[2] { + yym3744 := z.EncBinary() + _ = yym3744 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3745 := z.EncBinary() + _ = yym3745 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[3] { + yym3747 := z.EncBinary() + _ = yym3747 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3748 := z.EncBinary() + _ = yym3748 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[4] { + yym3750 := z.EncBinary() + _ = yym3750 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3751 := z.EncBinary() + _ = yym3751 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[5] { + yym3753 := z.EncBinary() + _ = yym3753 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3754 := z.EncBinary() + _ = yym3754 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3736[6] { + yym3756 := z.EncBinary() + _ = yym3756 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3736[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldPath")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3757 := z.EncBinary() + _ = yym3757 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath)) + } + } + } + if yyr3736 || yy2arr3736 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3758 := z.DecBinary() + _ = yym3758 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3759 := r.ContainerType() + if yyct3759 == codecSelferValueTypeMap1234 { + yyl3759 := r.ReadMapStart() + if yyl3759 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3759, d) + } + } else if yyct3759 == codecSelferValueTypeArray1234 { + yyl3759 := r.ReadArrayStart() + if yyl3759 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3759, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3760Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3760Slc + var yyhl3760 bool = l >= 0 + for yyj3760 := 0; ; yyj3760++ { + if yyhl3760 { + if yyj3760 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3760Slc = r.DecodeBytes(yys3760Slc, true, true) + yys3760 := string(yys3760Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3760 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "fieldPath": + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3760) + } // end switch yys3760 + } // end for yyj3760 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3768 int + var yyb3768 bool + var yyhl3768 bool = l >= 0 + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg1_types.UID(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldPath = "" + } else { + x.FieldPath = string(r.DecodeString()) + } + for { + yyj3768++ + if yyhl3768 { + yyb3768 = yyj3768 > l + } else { + yyb3768 = r.CheckBreak() + } + if yyb3768 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3768-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3776 := z.EncBinary() + _ = yym3776 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3777 := !z.EncBinary() + yy2arr3777 := z.EncBasicHandle().StructToArray + var yyq3777 [1]bool + _, _, _ = yysep3777, yyq3777, yy2arr3777 + const yyr3777 bool = false + yyq3777[0] = x.Name != "" + var yynn3777 int + if yyr3777 || yy2arr3777 { + r.EncodeArrayStart(1) + } else { + yynn3777 = 0 + for _, b := range yyq3777 { + if b { + yynn3777++ + } + } + r.EncodeMapStart(yynn3777) + yynn3777 = 0 + } + if yyr3777 || yy2arr3777 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3777[0] { + yym3779 := z.EncBinary() + _ = yym3779 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3777[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3780 := z.EncBinary() + _ = yym3780 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr3777 || yy2arr3777 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3781 := z.DecBinary() + _ = yym3781 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3782 := r.ContainerType() + if yyct3782 == codecSelferValueTypeMap1234 { + yyl3782 := r.ReadMapStart() + if yyl3782 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3782, d) + } + } else if yyct3782 == codecSelferValueTypeArray1234 { + yyl3782 := r.ReadArrayStart() + if yyl3782 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3782, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3783Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3783Slc + var yyhl3783 bool = l >= 0 + for yyj3783 := 0; ; yyj3783++ { + if yyhl3783 { + if yyj3783 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3783Slc = r.DecodeBytes(yys3783Slc, true, true) + yys3783 := string(yys3783Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3783 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3783) + } // end switch yys3783 + } // end for yyj3783 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3785 int + var yyb3785 bool + var yyhl3785 bool = l >= 0 + yyj3785++ + if yyhl3785 { + yyb3785 = yyj3785 > l + } else { + yyb3785 = r.CheckBreak() + } + if yyb3785 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj3785++ + if yyhl3785 { + yyb3785 = yyj3785 > l + } else { + yyb3785 = r.CheckBreak() + } + if yyb3785 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3785-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SerializedReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3787 := z.EncBinary() + _ = yym3787 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3788 := !z.EncBinary() + yy2arr3788 := z.EncBasicHandle().StructToArray + var yyq3788 [3]bool + _, _, _ = yysep3788, yyq3788, yy2arr3788 + const yyr3788 bool = false + yyq3788[0] = x.Kind != "" + yyq3788[1] = x.APIVersion != "" + yyq3788[2] = true + var yynn3788 int + if yyr3788 || yy2arr3788 { + r.EncodeArrayStart(3) + } else { + yynn3788 = 0 + for _, b := range yyq3788 { + if b { + yynn3788++ + } + } + r.EncodeMapStart(yynn3788) + yynn3788 = 0 + } + if yyr3788 || yy2arr3788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3788[0] { + yym3790 := z.EncBinary() + _ = yym3790 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3788[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3791 := z.EncBinary() + _ = yym3791 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3788 || yy2arr3788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3788[1] { + yym3793 := z.EncBinary() + _ = yym3793 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3788[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3794 := z.EncBinary() + _ = yym3794 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3788 || yy2arr3788 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3788[2] { + yy3796 := &x.Reference + yy3796.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3788[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reference")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3797 := &x.Reference + yy3797.CodecEncodeSelf(e) + } + } + if yyr3788 || yy2arr3788 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SerializedReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3798 := z.DecBinary() + _ = yym3798 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3799 := r.ContainerType() + if yyct3799 == codecSelferValueTypeMap1234 { + yyl3799 := r.ReadMapStart() + if yyl3799 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3799, d) + } + } else if yyct3799 == codecSelferValueTypeArray1234 { + yyl3799 := r.ReadArrayStart() + if yyl3799 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3799, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SerializedReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3800Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3800Slc + var yyhl3800 bool = l >= 0 + for yyj3800 := 0; ; yyj3800++ { + if yyhl3800 { + if yyj3800 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3800Slc = r.DecodeBytes(yys3800Slc, true, true) + yys3800 := string(yys3800Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3800 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "reference": + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv3803 := &x.Reference + yyv3803.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3800) + } // end switch yys3800 + } // end for yyj3800 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SerializedReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3804 int + var yyb3804 bool + var yyhl3804 bool = l >= 0 + yyj3804++ + if yyhl3804 { + yyb3804 = yyj3804 > l + } else { + yyb3804 = r.CheckBreak() + } + if yyb3804 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3804++ + if yyhl3804 { + yyb3804 = yyj3804 > l + } else { + yyb3804 = r.CheckBreak() + } + if yyb3804 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3804++ + if yyhl3804 { + yyb3804 = yyj3804 > l + } else { + yyb3804 = r.CheckBreak() + } + if yyb3804 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reference = ObjectReference{} + } else { + yyv3807 := &x.Reference + yyv3807.CodecDecodeSelf(d) + } + for { + yyj3804++ + if yyhl3804 { + yyb3804 = yyj3804 > l + } else { + yyb3804 = r.CheckBreak() + } + if yyb3804 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3804-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3808 := z.EncBinary() + _ = yym3808 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3809 := !z.EncBinary() + yy2arr3809 := z.EncBasicHandle().StructToArray + var yyq3809 [2]bool + _, _, _ = yysep3809, yyq3809, yy2arr3809 + const yyr3809 bool = false + yyq3809[0] = x.Component != "" + yyq3809[1] = x.Host != "" + var yynn3809 int + if yyr3809 || yy2arr3809 { + r.EncodeArrayStart(2) + } else { + yynn3809 = 0 + for _, b := range yyq3809 { + if b { + yynn3809++ + } + } + r.EncodeMapStart(yynn3809) + yynn3809 = 0 + } + if yyr3809 || yy2arr3809 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3809[0] { + yym3811 := z.EncBinary() + _ = yym3811 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3809[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("component")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3812 := z.EncBinary() + _ = yym3812 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Component)) + } + } + } + if yyr3809 || yy2arr3809 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3809[1] { + yym3814 := z.EncBinary() + _ = yym3814 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3809[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3815 := z.EncBinary() + _ = yym3815 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + if yyr3809 || yy2arr3809 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3816 := z.DecBinary() + _ = yym3816 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3817 := r.ContainerType() + if yyct3817 == codecSelferValueTypeMap1234 { + yyl3817 := r.ReadMapStart() + if yyl3817 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3817, d) + } + } else if yyct3817 == codecSelferValueTypeArray1234 { + yyl3817 := r.ReadArrayStart() + if yyl3817 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3817, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3818Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3818Slc + var yyhl3818 bool = l >= 0 + for yyj3818 := 0; ; yyj3818++ { + if yyhl3818 { + if yyj3818 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3818Slc = r.DecodeBytes(yys3818Slc, true, true) + yys3818 := string(yys3818Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3818 { + case "component": + if r.TryDecodeAsNil() { + x.Component = "" + } else { + x.Component = string(r.DecodeString()) + } + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3818) + } // end switch yys3818 + } // end for yyj3818 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3821 int + var yyb3821 bool + var yyhl3821 bool = l >= 0 + yyj3821++ + if yyhl3821 { + yyb3821 = yyj3821 > l + } else { + yyb3821 = r.CheckBreak() + } + if yyb3821 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Component = "" + } else { + x.Component = string(r.DecodeString()) + } + yyj3821++ + if yyhl3821 { + yyb3821 = yyj3821 > l + } else { + yyb3821 = r.CheckBreak() + } + if yyb3821 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + for { + yyj3821++ + if yyhl3821 { + yyb3821 = yyj3821 > l + } else { + yyb3821 = r.CheckBreak() + } + if yyb3821 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3821-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Event) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3824 := z.EncBinary() + _ = yym3824 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3825 := !z.EncBinary() + yy2arr3825 := z.EncBasicHandle().StructToArray + var yyq3825 [11]bool + _, _, _ = yysep3825, yyq3825, yy2arr3825 + const yyr3825 bool = false + yyq3825[0] = x.Kind != "" + yyq3825[1] = x.APIVersion != "" + yyq3825[4] = x.Reason != "" + yyq3825[5] = x.Message != "" + yyq3825[6] = true + yyq3825[7] = true + yyq3825[8] = true + yyq3825[9] = x.Count != 0 + yyq3825[10] = x.Type != "" + var yynn3825 int + if yyr3825 || yy2arr3825 { + r.EncodeArrayStart(11) + } else { + yynn3825 = 2 + for _, b := range yyq3825 { + if b { + yynn3825++ + } + } + r.EncodeMapStart(yynn3825) + yynn3825 = 0 + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[0] { + yym3827 := z.EncBinary() + _ = yym3827 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3825[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3828 := z.EncBinary() + _ = yym3828 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[1] { + yym3830 := z.EncBinary() + _ = yym3830 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3825[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3831 := z.EncBinary() + _ = yym3831 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3833 := &x.ObjectMeta + yy3833.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3834 := &x.ObjectMeta + yy3834.CodecEncodeSelf(e) + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy3836 := &x.InvolvedObject + yy3836.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("involvedObject")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3837 := &x.InvolvedObject + yy3837.CodecEncodeSelf(e) + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[4] { + yym3839 := z.EncBinary() + _ = yym3839 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3825[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3840 := z.EncBinary() + _ = yym3840 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[5] { + yym3842 := z.EncBinary() + _ = yym3842 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3825[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3843 := z.EncBinary() + _ = yym3843 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[6] { + yy3845 := &x.Source + yy3845.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3825[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("source")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3846 := &x.Source + yy3846.CodecEncodeSelf(e) + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[7] { + yy3848 := &x.FirstTimestamp + yym3849 := z.EncBinary() + _ = yym3849 + if false { + } else if z.HasExtensions() && z.EncExt(yy3848) { + } else if yym3849 { + z.EncBinaryMarshal(yy3848) + } else if !yym3849 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3848) + } else { + z.EncFallback(yy3848) + } + } else { + r.EncodeNil() + } + } else { + if yyq3825[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("firstTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3850 := &x.FirstTimestamp + yym3851 := z.EncBinary() + _ = yym3851 + if false { + } else if z.HasExtensions() && z.EncExt(yy3850) { + } else if yym3851 { + z.EncBinaryMarshal(yy3850) + } else if !yym3851 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3850) + } else { + z.EncFallback(yy3850) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[8] { + yy3853 := &x.LastTimestamp + yym3854 := z.EncBinary() + _ = yym3854 + if false { + } else if z.HasExtensions() && z.EncExt(yy3853) { + } else if yym3854 { + z.EncBinaryMarshal(yy3853) + } else if !yym3854 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3853) + } else { + z.EncFallback(yy3853) + } + } else { + r.EncodeNil() + } + } else { + if yyq3825[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3855 := &x.LastTimestamp + yym3856 := z.EncBinary() + _ = yym3856 + if false { + } else if z.HasExtensions() && z.EncExt(yy3855) { + } else if yym3856 { + z.EncBinaryMarshal(yy3855) + } else if !yym3856 && z.IsJSONHandle() { + z.EncJSONMarshal(yy3855) + } else { + z.EncFallback(yy3855) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[9] { + yym3858 := z.EncBinary() + _ = yym3858 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq3825[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("count")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3859 := z.EncBinary() + _ = yym3859 + if false { + } else { + r.EncodeInt(int64(x.Count)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3825[10] { + yym3861 := z.EncBinary() + _ = yym3861 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3825[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3862 := z.EncBinary() + _ = yym3862 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr3825 || yy2arr3825 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Event) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3863 := z.DecBinary() + _ = yym3863 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3864 := r.ContainerType() + if yyct3864 == codecSelferValueTypeMap1234 { + yyl3864 := r.ReadMapStart() + if yyl3864 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3864, d) + } + } else if yyct3864 == codecSelferValueTypeArray1234 { + yyl3864 := r.ReadArrayStart() + if yyl3864 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3864, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Event) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3865Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3865Slc + var yyhl3865 bool = l >= 0 + for yyj3865 := 0; ; yyj3865++ { + if yyhl3865 { + if yyj3865 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3865Slc = r.DecodeBytes(yys3865Slc, true, true) + yys3865 := string(yys3865Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3865 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3868 := &x.ObjectMeta + yyv3868.CodecDecodeSelf(d) + } + case "involvedObject": + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv3869 := &x.InvolvedObject + yyv3869.CodecDecodeSelf(d) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "source": + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv3872 := &x.Source + yyv3872.CodecDecodeSelf(d) + } + case "firstTimestamp": + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_unversioned.Time{} + } else { + yyv3873 := &x.FirstTimestamp + yym3874 := z.DecBinary() + _ = yym3874 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3873) { + } else if yym3874 { + z.DecBinaryUnmarshal(yyv3873) + } else if !yym3874 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3873) + } else { + z.DecFallback(yyv3873, false) + } + } + case "lastTimestamp": + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_unversioned.Time{} + } else { + yyv3875 := &x.LastTimestamp + yym3876 := z.DecBinary() + _ = yym3876 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3875) { + } else if yym3876 { + z.DecBinaryUnmarshal(yyv3875) + } else if !yym3876 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3875) + } else { + z.DecFallback(yyv3875, false) + } + } + case "count": + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + x.Count = int32(r.DecodeInt(32)) + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys3865) + } // end switch yys3865 + } // end for yyj3865 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Event) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3879 int + var yyb3879 bool + var yyhl3879 bool = l >= 0 + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv3882 := &x.ObjectMeta + yyv3882.CodecDecodeSelf(d) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.InvolvedObject = ObjectReference{} + } else { + yyv3883 := &x.InvolvedObject + yyv3883.CodecDecodeSelf(d) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Source = EventSource{} + } else { + yyv3886 := &x.Source + yyv3886.CodecDecodeSelf(d) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FirstTimestamp = pkg2_unversioned.Time{} + } else { + yyv3887 := &x.FirstTimestamp + yym3888 := z.DecBinary() + _ = yym3888 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3887) { + } else if yym3888 { + z.DecBinaryUnmarshal(yyv3887) + } else if !yym3888 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3887) + } else { + z.DecFallback(yyv3887, false) + } + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTimestamp = pkg2_unversioned.Time{} + } else { + yyv3889 := &x.LastTimestamp + yym3890 := z.DecBinary() + _ = yym3890 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3889) { + } else if yym3890 { + z.DecBinaryUnmarshal(yyv3889) + } else if !yym3890 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv3889) + } else { + z.DecFallback(yyv3889, false) + } + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Count = 0 + } else { + x.Count = int32(r.DecodeInt(32)) + } + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + for { + yyj3879++ + if yyhl3879 { + yyb3879 = yyj3879 > l + } else { + yyb3879 = r.CheckBreak() + } + if yyb3879 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3879-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *EventList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3893 := z.EncBinary() + _ = yym3893 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3894 := !z.EncBinary() + yy2arr3894 := z.EncBasicHandle().StructToArray + var yyq3894 [4]bool + _, _, _ = yysep3894, yyq3894, yy2arr3894 + const yyr3894 bool = false + yyq3894[0] = x.Kind != "" + yyq3894[1] = x.APIVersion != "" + yyq3894[2] = true + var yynn3894 int + if yyr3894 || yy2arr3894 { + r.EncodeArrayStart(4) + } else { + yynn3894 = 1 + for _, b := range yyq3894 { + if b { + yynn3894++ + } + } + r.EncodeMapStart(yynn3894) + yynn3894 = 0 + } + if yyr3894 || yy2arr3894 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3894[0] { + yym3896 := z.EncBinary() + _ = yym3896 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3894[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3897 := z.EncBinary() + _ = yym3897 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3894 || yy2arr3894 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3894[1] { + yym3899 := z.EncBinary() + _ = yym3899 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3894[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3900 := z.EncBinary() + _ = yym3900 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3894 || yy2arr3894 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3894[2] { + yy3902 := &x.ListMeta + yym3903 := z.EncBinary() + _ = yym3903 + if false { + } else if z.HasExtensions() && z.EncExt(yy3902) { + } else { + z.EncFallback(yy3902) + } + } else { + r.EncodeNil() + } + } else { + if yyq3894[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3904 := &x.ListMeta + yym3905 := z.EncBinary() + _ = yym3905 + if false { + } else if z.HasExtensions() && z.EncExt(yy3904) { + } else { + z.EncFallback(yy3904) + } + } + } + if yyr3894 || yy2arr3894 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3907 := z.EncBinary() + _ = yym3907 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3908 := z.EncBinary() + _ = yym3908 + if false { + } else { + h.encSliceEvent(([]Event)(x.Items), e) + } + } + } + if yyr3894 || yy2arr3894 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *EventList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3909 := z.DecBinary() + _ = yym3909 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3910 := r.ContainerType() + if yyct3910 == codecSelferValueTypeMap1234 { + yyl3910 := r.ReadMapStart() + if yyl3910 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3910, d) + } + } else if yyct3910 == codecSelferValueTypeArray1234 { + yyl3910 := r.ReadArrayStart() + if yyl3910 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3910, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *EventList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3911Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3911Slc + var yyhl3911 bool = l >= 0 + for yyj3911 := 0; ; yyj3911++ { + if yyhl3911 { + if yyj3911 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3911Slc = r.DecodeBytes(yys3911Slc, true, true) + yys3911 := string(yys3911Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3911 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3914 := &x.ListMeta + yym3915 := z.DecBinary() + _ = yym3915 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3914) { + } else { + z.DecFallback(yyv3914, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3916 := &x.Items + yym3917 := z.DecBinary() + _ = yym3917 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv3916), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3911) + } // end switch yys3911 + } // end for yyj3911 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *EventList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3918 int + var yyb3918 bool + var yyhl3918 bool = l >= 0 + yyj3918++ + if yyhl3918 { + yyb3918 = yyj3918 > l + } else { + yyb3918 = r.CheckBreak() + } + if yyb3918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3918++ + if yyhl3918 { + yyb3918 = yyj3918 > l + } else { + yyb3918 = r.CheckBreak() + } + if yyb3918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3918++ + if yyhl3918 { + yyb3918 = yyj3918 > l + } else { + yyb3918 = r.CheckBreak() + } + if yyb3918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3921 := &x.ListMeta + yym3922 := z.DecBinary() + _ = yym3922 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3921) { + } else { + z.DecFallback(yyv3921, false) + } + } + yyj3918++ + if yyhl3918 { + yyb3918 = yyj3918 > l + } else { + yyb3918 = r.CheckBreak() + } + if yyb3918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3923 := &x.Items + yym3924 := z.DecBinary() + _ = yym3924 + if false { + } else { + h.decSliceEvent((*[]Event)(yyv3923), d) + } + } + for { + yyj3918++ + if yyhl3918 { + yyb3918 = yyj3918 > l + } else { + yyb3918 = r.CheckBreak() + } + if yyb3918 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3918-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *List) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3925 := z.EncBinary() + _ = yym3925 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3926 := !z.EncBinary() + yy2arr3926 := z.EncBasicHandle().StructToArray + var yyq3926 [4]bool + _, _, _ = yysep3926, yyq3926, yy2arr3926 + const yyr3926 bool = false + yyq3926[0] = x.Kind != "" + yyq3926[1] = x.APIVersion != "" + yyq3926[2] = true + var yynn3926 int + if yyr3926 || yy2arr3926 { + r.EncodeArrayStart(4) + } else { + yynn3926 = 1 + for _, b := range yyq3926 { + if b { + yynn3926++ + } + } + r.EncodeMapStart(yynn3926) + yynn3926 = 0 + } + if yyr3926 || yy2arr3926 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3926[0] { + yym3928 := z.EncBinary() + _ = yym3928 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3926[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3929 := z.EncBinary() + _ = yym3929 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3926 || yy2arr3926 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3926[1] { + yym3931 := z.EncBinary() + _ = yym3931 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3926[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym3932 := z.EncBinary() + _ = yym3932 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3926 || yy2arr3926 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3926[2] { + yy3934 := &x.ListMeta + yym3935 := z.EncBinary() + _ = yym3935 + if false { + } else if z.HasExtensions() && z.EncExt(yy3934) { + } else { + z.EncFallback(yy3934) + } + } else { + r.EncodeNil() + } + } else { + if yyq3926[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy3936 := &x.ListMeta + yym3937 := z.EncBinary() + _ = yym3937 + if false { + } else if z.HasExtensions() && z.EncExt(yy3936) { + } else { + z.EncFallback(yy3936) + } + } + } + if yyr3926 || yy2arr3926 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3939 := z.EncBinary() + _ = yym3939 + if false { + } else { + h.encSliceruntime_RawExtension(([]pkg5_runtime.RawExtension)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym3940 := z.EncBinary() + _ = yym3940 + if false { + } else { + h.encSliceruntime_RawExtension(([]pkg5_runtime.RawExtension)(x.Items), e) + } + } + } + if yyr3926 || yy2arr3926 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *List) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3941 := z.DecBinary() + _ = yym3941 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3942 := r.ContainerType() + if yyct3942 == codecSelferValueTypeMap1234 { + yyl3942 := r.ReadMapStart() + if yyl3942 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3942, d) + } + } else if yyct3942 == codecSelferValueTypeArray1234 { + yyl3942 := r.ReadArrayStart() + if yyl3942 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3942, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *List) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3943Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3943Slc + var yyhl3943 bool = l >= 0 + for yyj3943 := 0; ; yyj3943++ { + if yyhl3943 { + if yyj3943 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3943Slc = r.DecodeBytes(yys3943Slc, true, true) + yys3943 := string(yys3943Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3943 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3946 := &x.ListMeta + yym3947 := z.DecBinary() + _ = yym3947 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3946) { + } else { + z.DecFallback(yyv3946, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3948 := &x.Items + yym3949 := z.DecBinary() + _ = yym3949 + if false { + } else { + h.decSliceruntime_RawExtension((*[]pkg5_runtime.RawExtension)(yyv3948), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3943) + } // end switch yys3943 + } // end for yyj3943 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *List) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3950 int + var yyb3950 bool + var yyhl3950 bool = l >= 0 + yyj3950++ + if yyhl3950 { + yyb3950 = yyj3950 > l + } else { + yyb3950 = r.CheckBreak() + } + if yyb3950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj3950++ + if yyhl3950 { + yyb3950 = yyj3950 > l + } else { + yyb3950 = r.CheckBreak() + } + if yyb3950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj3950++ + if yyhl3950 { + yyb3950 = yyj3950 > l + } else { + yyb3950 = r.CheckBreak() + } + if yyb3950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv3953 := &x.ListMeta + yym3954 := z.DecBinary() + _ = yym3954 + if false { + } else if z.HasExtensions() && z.DecExt(yyv3953) { + } else { + z.DecFallback(yyv3953, false) + } + } + yyj3950++ + if yyhl3950 { + yyb3950 = yyj3950 > l + } else { + yyb3950 = r.CheckBreak() + } + if yyb3950 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv3955 := &x.Items + yym3956 := z.DecBinary() + _ = yym3956 + if false { + } else { + h.decSliceruntime_RawExtension((*[]pkg5_runtime.RawExtension)(yyv3955), d) + } + } + for { + yyj3950++ + if yyhl3950 { + yyb3950 = yyj3950 > l + } else { + yyb3950 = r.CheckBreak() + } + if yyb3950 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3950-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LimitType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym3957 := z.EncBinary() + _ = yym3957 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LimitType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3958 := z.DecBinary() + _ = yym3958 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *LimitRangeItem) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3959 := z.EncBinary() + _ = yym3959 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3960 := !z.EncBinary() + yy2arr3960 := z.EncBasicHandle().StructToArray + var yyq3960 [6]bool + _, _, _ = yysep3960, yyq3960, yy2arr3960 + const yyr3960 bool = false + yyq3960[0] = x.Type != "" + yyq3960[1] = len(x.Max) != 0 + yyq3960[2] = len(x.Min) != 0 + yyq3960[3] = len(x.Default) != 0 + yyq3960[4] = len(x.DefaultRequest) != 0 + yyq3960[5] = len(x.MaxLimitRequestRatio) != 0 + var yynn3960 int + if yyr3960 || yy2arr3960 { + r.EncodeArrayStart(6) + } else { + yynn3960 = 0 + for _, b := range yyq3960 { + if b { + yynn3960++ + } + } + r.EncodeMapStart(yynn3960) + yynn3960 = 0 + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3960[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[1] { + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3960[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Max == nil { + r.EncodeNil() + } else { + x.Max.CodecEncodeSelf(e) + } + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[2] { + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3960[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Min == nil { + r.EncodeNil() + } else { + x.Min.CodecEncodeSelf(e) + } + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[3] { + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3960[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("default")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Default == nil { + r.EncodeNil() + } else { + x.Default.CodecEncodeSelf(e) + } + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[4] { + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3960[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultRequest")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultRequest == nil { + r.EncodeNil() + } else { + x.DefaultRequest.CodecEncodeSelf(e) + } + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3960[5] { + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq3960[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxLimitRequestRatio")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxLimitRequestRatio == nil { + r.EncodeNil() + } else { + x.MaxLimitRequestRatio.CodecEncodeSelf(e) + } + } + } + if yyr3960 || yy2arr3960 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeItem) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3967 := z.DecBinary() + _ = yym3967 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3968 := r.ContainerType() + if yyct3968 == codecSelferValueTypeMap1234 { + yyl3968 := r.ReadMapStart() + if yyl3968 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3968, d) + } + } else if yyct3968 == codecSelferValueTypeArray1234 { + yyl3968 := r.ReadArrayStart() + if yyl3968 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3968, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeItem) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3969Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3969Slc + var yyhl3969 bool = l >= 0 + for yyj3969 := 0; ; yyj3969++ { + if yyhl3969 { + if yyj3969 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3969Slc = r.DecodeBytes(yys3969Slc, true, true) + yys3969 := string(yys3969Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3969 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = LimitType(r.DecodeString()) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv3971 := &x.Max + yyv3971.CodecDecodeSelf(d) + } + case "min": + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv3972 := &x.Min + yyv3972.CodecDecodeSelf(d) + } + case "default": + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv3973 := &x.Default + yyv3973.CodecDecodeSelf(d) + } + case "defaultRequest": + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv3974 := &x.DefaultRequest + yyv3974.CodecDecodeSelf(d) + } + case "maxLimitRequestRatio": + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv3975 := &x.MaxLimitRequestRatio + yyv3975.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys3969) + } // end switch yys3969 + } // end for yyj3969 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeItem) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3976 int + var yyb3976 bool + var yyhl3976 bool = l >= 0 + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = LimitType(r.DecodeString()) + } + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = nil + } else { + yyv3978 := &x.Max + yyv3978.CodecDecodeSelf(d) + } + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = nil + } else { + yyv3979 := &x.Min + yyv3979.CodecDecodeSelf(d) + } + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Default = nil + } else { + yyv3980 := &x.Default + yyv3980.CodecDecodeSelf(d) + } + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultRequest = nil + } else { + yyv3981 := &x.DefaultRequest + yyv3981.CodecDecodeSelf(d) + } + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxLimitRequestRatio = nil + } else { + yyv3982 := &x.MaxLimitRequestRatio + yyv3982.CodecDecodeSelf(d) + } + for { + yyj3976++ + if yyhl3976 { + yyb3976 = yyj3976 > l + } else { + yyb3976 = r.CheckBreak() + } + if yyb3976 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3976-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3983 := z.EncBinary() + _ = yym3983 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3984 := !z.EncBinary() + yy2arr3984 := z.EncBasicHandle().StructToArray + var yyq3984 [1]bool + _, _, _ = yysep3984, yyq3984, yy2arr3984 + const yyr3984 bool = false + var yynn3984 int + if yyr3984 || yy2arr3984 { + r.EncodeArrayStart(1) + } else { + yynn3984 = 1 + for _, b := range yyq3984 { + if b { + yynn3984++ + } + } + r.EncodeMapStart(yynn3984) + yynn3984 = 0 + } + if yyr3984 || yy2arr3984 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym3986 := z.EncBinary() + _ = yym3986 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("limits")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Limits == nil { + r.EncodeNil() + } else { + yym3987 := z.EncBinary() + _ = yym3987 + if false { + } else { + h.encSliceLimitRangeItem(([]LimitRangeItem)(x.Limits), e) + } + } + } + if yyr3984 || yy2arr3984 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym3988 := z.DecBinary() + _ = yym3988 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct3989 := r.ContainerType() + if yyct3989 == codecSelferValueTypeMap1234 { + yyl3989 := r.ReadMapStart() + if yyl3989 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl3989, d) + } + } else if yyct3989 == codecSelferValueTypeArray1234 { + yyl3989 := r.ReadArrayStart() + if yyl3989 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl3989, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys3990Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys3990Slc + var yyhl3990 bool = l >= 0 + for yyj3990 := 0; ; yyj3990++ { + if yyhl3990 { + if yyj3990 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys3990Slc = r.DecodeBytes(yys3990Slc, true, true) + yys3990 := string(yys3990Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys3990 { + case "limits": + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv3991 := &x.Limits + yym3992 := z.DecBinary() + _ = yym3992 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv3991), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys3990) + } // end switch yys3990 + } // end for yyj3990 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj3993 int + var yyb3993 bool + var yyhl3993 bool = l >= 0 + yyj3993++ + if yyhl3993 { + yyb3993 = yyj3993 > l + } else { + yyb3993 = r.CheckBreak() + } + if yyb3993 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Limits = nil + } else { + yyv3994 := &x.Limits + yym3995 := z.DecBinary() + _ = yym3995 + if false { + } else { + h.decSliceLimitRangeItem((*[]LimitRangeItem)(yyv3994), d) + } + } + for { + yyj3993++ + if yyhl3993 { + yyb3993 = yyj3993 > l + } else { + yyb3993 = r.CheckBreak() + } + if yyb3993 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj3993-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym3996 := z.EncBinary() + _ = yym3996 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep3997 := !z.EncBinary() + yy2arr3997 := z.EncBasicHandle().StructToArray + var yyq3997 [4]bool + _, _, _ = yysep3997, yyq3997, yy2arr3997 + const yyr3997 bool = false + yyq3997[0] = x.Kind != "" + yyq3997[1] = x.APIVersion != "" + yyq3997[2] = true + yyq3997[3] = true + var yynn3997 int + if yyr3997 || yy2arr3997 { + r.EncodeArrayStart(4) + } else { + yynn3997 = 0 + for _, b := range yyq3997 { + if b { + yynn3997++ + } + } + r.EncodeMapStart(yynn3997) + yynn3997 = 0 + } + if yyr3997 || yy2arr3997 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3997[0] { + yym3999 := z.EncBinary() + _ = yym3999 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3997[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4000 := z.EncBinary() + _ = yym4000 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr3997 || yy2arr3997 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3997[1] { + yym4002 := z.EncBinary() + _ = yym4002 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq3997[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4003 := z.EncBinary() + _ = yym4003 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr3997 || yy2arr3997 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3997[2] { + yy4005 := &x.ObjectMeta + yy4005.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3997[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4006 := &x.ObjectMeta + yy4006.CodecEncodeSelf(e) + } + } + if yyr3997 || yy2arr3997 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq3997[3] { + yy4008 := &x.Spec + yy4008.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq3997[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4009 := &x.Spec + yy4009.CodecEncodeSelf(e) + } + } + if yyr3997 || yy2arr3997 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4010 := z.DecBinary() + _ = yym4010 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4011 := r.ContainerType() + if yyct4011 == codecSelferValueTypeMap1234 { + yyl4011 := r.ReadMapStart() + if yyl4011 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4011, d) + } + } else if yyct4011 == codecSelferValueTypeArray1234 { + yyl4011 := r.ReadArrayStart() + if yyl4011 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4011, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4012Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4012Slc + var yyhl4012 bool = l >= 0 + for yyj4012 := 0; ; yyj4012++ { + if yyhl4012 { + if yyj4012 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4012Slc = r.DecodeBytes(yys4012Slc, true, true) + yys4012 := string(yys4012Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4012 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4015 := &x.ObjectMeta + yyv4015.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv4016 := &x.Spec + yyv4016.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4012) + } // end switch yys4012 + } // end for yyj4012 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4017 int + var yyb4017 bool + var yyhl4017 bool = l >= 0 + yyj4017++ + if yyhl4017 { + yyb4017 = yyj4017 > l + } else { + yyb4017 = r.CheckBreak() + } + if yyb4017 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4017++ + if yyhl4017 { + yyb4017 = yyj4017 > l + } else { + yyb4017 = r.CheckBreak() + } + if yyb4017 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4017++ + if yyhl4017 { + yyb4017 = yyj4017 > l + } else { + yyb4017 = r.CheckBreak() + } + if yyb4017 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4020 := &x.ObjectMeta + yyv4020.CodecDecodeSelf(d) + } + yyj4017++ + if yyhl4017 { + yyb4017 = yyj4017 > l + } else { + yyb4017 = r.CheckBreak() + } + if yyb4017 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = LimitRangeSpec{} + } else { + yyv4021 := &x.Spec + yyv4021.CodecDecodeSelf(d) + } + for { + yyj4017++ + if yyhl4017 { + yyb4017 = yyj4017 > l + } else { + yyb4017 = r.CheckBreak() + } + if yyb4017 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4017-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LimitRangeList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4022 := z.EncBinary() + _ = yym4022 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4023 := !z.EncBinary() + yy2arr4023 := z.EncBasicHandle().StructToArray + var yyq4023 [4]bool + _, _, _ = yysep4023, yyq4023, yy2arr4023 + const yyr4023 bool = false + yyq4023[0] = x.Kind != "" + yyq4023[1] = x.APIVersion != "" + yyq4023[2] = true + var yynn4023 int + if yyr4023 || yy2arr4023 { + r.EncodeArrayStart(4) + } else { + yynn4023 = 1 + for _, b := range yyq4023 { + if b { + yynn4023++ + } + } + r.EncodeMapStart(yynn4023) + yynn4023 = 0 + } + if yyr4023 || yy2arr4023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4023[0] { + yym4025 := z.EncBinary() + _ = yym4025 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4023[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4026 := z.EncBinary() + _ = yym4026 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4023 || yy2arr4023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4023[1] { + yym4028 := z.EncBinary() + _ = yym4028 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4023[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4029 := z.EncBinary() + _ = yym4029 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4023 || yy2arr4023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4023[2] { + yy4031 := &x.ListMeta + yym4032 := z.EncBinary() + _ = yym4032 + if false { + } else if z.HasExtensions() && z.EncExt(yy4031) { + } else { + z.EncFallback(yy4031) + } + } else { + r.EncodeNil() + } + } else { + if yyq4023[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4033 := &x.ListMeta + yym4034 := z.EncBinary() + _ = yym4034 + if false { + } else if z.HasExtensions() && z.EncExt(yy4033) { + } else { + z.EncFallback(yy4033) + } + } + } + if yyr4023 || yy2arr4023 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4036 := z.EncBinary() + _ = yym4036 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4037 := z.EncBinary() + _ = yym4037 + if false { + } else { + h.encSliceLimitRange(([]LimitRange)(x.Items), e) + } + } + } + if yyr4023 || yy2arr4023 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LimitRangeList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4038 := z.DecBinary() + _ = yym4038 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4039 := r.ContainerType() + if yyct4039 == codecSelferValueTypeMap1234 { + yyl4039 := r.ReadMapStart() + if yyl4039 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4039, d) + } + } else if yyct4039 == codecSelferValueTypeArray1234 { + yyl4039 := r.ReadArrayStart() + if yyl4039 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4039, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LimitRangeList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4040Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4040Slc + var yyhl4040 bool = l >= 0 + for yyj4040 := 0; ; yyj4040++ { + if yyhl4040 { + if yyj4040 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4040Slc = r.DecodeBytes(yys4040Slc, true, true) + yys4040 := string(yys4040Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4040 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4043 := &x.ListMeta + yym4044 := z.DecBinary() + _ = yym4044 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4043) { + } else { + z.DecFallback(yyv4043, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4045 := &x.Items + yym4046 := z.DecBinary() + _ = yym4046 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv4045), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4040) + } // end switch yys4040 + } // end for yyj4040 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LimitRangeList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4047 int + var yyb4047 bool + var yyhl4047 bool = l >= 0 + yyj4047++ + if yyhl4047 { + yyb4047 = yyj4047 > l + } else { + yyb4047 = r.CheckBreak() + } + if yyb4047 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4047++ + if yyhl4047 { + yyb4047 = yyj4047 > l + } else { + yyb4047 = r.CheckBreak() + } + if yyb4047 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4047++ + if yyhl4047 { + yyb4047 = yyj4047 > l + } else { + yyb4047 = r.CheckBreak() + } + if yyb4047 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4050 := &x.ListMeta + yym4051 := z.DecBinary() + _ = yym4051 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4050) { + } else { + z.DecFallback(yyv4050, false) + } + } + yyj4047++ + if yyhl4047 { + yyb4047 = yyj4047 > l + } else { + yyb4047 = r.CheckBreak() + } + if yyb4047 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4052 := &x.Items + yym4053 := z.DecBinary() + _ = yym4053 + if false { + } else { + h.decSliceLimitRange((*[]LimitRange)(yyv4052), d) + } + } + for { + yyj4047++ + if yyhl4047 { + yyb4047 = yyj4047 > l + } else { + yyb4047 = r.CheckBreak() + } + if yyb4047 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4047-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ResourceQuotaScope) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4054 := z.EncBinary() + _ = yym4054 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ResourceQuotaScope) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4055 := z.DecBinary() + _ = yym4055 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ResourceQuotaSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4056 := z.EncBinary() + _ = yym4056 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4057 := !z.EncBinary() + yy2arr4057 := z.EncBasicHandle().StructToArray + var yyq4057 [2]bool + _, _, _ = yysep4057, yyq4057, yy2arr4057 + const yyr4057 bool = false + yyq4057[0] = len(x.Hard) != 0 + yyq4057[1] = len(x.Scopes) != 0 + var yynn4057 int + if yyr4057 || yy2arr4057 { + r.EncodeArrayStart(2) + } else { + yynn4057 = 0 + for _, b := range yyq4057 { + if b { + yynn4057++ + } + } + r.EncodeMapStart(yynn4057) + yynn4057 = 0 + } + if yyr4057 || yy2arr4057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4057[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4057[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr4057 || yy2arr4057 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4057[1] { + if x.Scopes == nil { + r.EncodeNil() + } else { + yym4060 := z.EncBinary() + _ = yym4060 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4057[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scopes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Scopes == nil { + r.EncodeNil() + } else { + yym4061 := z.EncBinary() + _ = yym4061 + if false { + } else { + h.encSliceResourceQuotaScope(([]ResourceQuotaScope)(x.Scopes), e) + } + } + } + } + if yyr4057 || yy2arr4057 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4062 := z.DecBinary() + _ = yym4062 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4063 := r.ContainerType() + if yyct4063 == codecSelferValueTypeMap1234 { + yyl4063 := r.ReadMapStart() + if yyl4063 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4063, d) + } + } else if yyct4063 == codecSelferValueTypeArray1234 { + yyl4063 := r.ReadArrayStart() + if yyl4063 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4063, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4064Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4064Slc + var yyhl4064 bool = l >= 0 + for yyj4064 := 0; ; yyj4064++ { + if yyhl4064 { + if yyj4064 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4064Slc = r.DecodeBytes(yys4064Slc, true, true) + yys4064 := string(yys4064Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4064 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4065 := &x.Hard + yyv4065.CodecDecodeSelf(d) + } + case "scopes": + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv4066 := &x.Scopes + yym4067 := z.DecBinary() + _ = yym4067 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv4066), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4064) + } // end switch yys4064 + } // end for yyj4064 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4068 int + var yyb4068 bool + var yyhl4068 bool = l >= 0 + yyj4068++ + if yyhl4068 { + yyb4068 = yyj4068 > l + } else { + yyb4068 = r.CheckBreak() + } + if yyb4068 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4069 := &x.Hard + yyv4069.CodecDecodeSelf(d) + } + yyj4068++ + if yyhl4068 { + yyb4068 = yyj4068 > l + } else { + yyb4068 = r.CheckBreak() + } + if yyb4068 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Scopes = nil + } else { + yyv4070 := &x.Scopes + yym4071 := z.DecBinary() + _ = yym4071 + if false { + } else { + h.decSliceResourceQuotaScope((*[]ResourceQuotaScope)(yyv4070), d) + } + } + for { + yyj4068++ + if yyhl4068 { + yyb4068 = yyj4068 > l + } else { + yyb4068 = r.CheckBreak() + } + if yyb4068 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4068-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4072 := z.EncBinary() + _ = yym4072 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4073 := !z.EncBinary() + yy2arr4073 := z.EncBasicHandle().StructToArray + var yyq4073 [2]bool + _, _, _ = yysep4073, yyq4073, yy2arr4073 + const yyr4073 bool = false + yyq4073[0] = len(x.Hard) != 0 + yyq4073[1] = len(x.Used) != 0 + var yynn4073 int + if yyr4073 || yy2arr4073 { + r.EncodeArrayStart(2) + } else { + yynn4073 = 0 + for _, b := range yyq4073 { + if b { + yynn4073++ + } + } + r.EncodeMapStart(yynn4073) + yynn4073 = 0 + } + if yyr4073 || yy2arr4073 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4073[0] { + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4073[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hard")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hard == nil { + r.EncodeNil() + } else { + x.Hard.CodecEncodeSelf(e) + } + } + } + if yyr4073 || yy2arr4073 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4073[1] { + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4073[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("used")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Used == nil { + r.EncodeNil() + } else { + x.Used.CodecEncodeSelf(e) + } + } + } + if yyr4073 || yy2arr4073 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4076 := z.DecBinary() + _ = yym4076 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4077 := r.ContainerType() + if yyct4077 == codecSelferValueTypeMap1234 { + yyl4077 := r.ReadMapStart() + if yyl4077 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4077, d) + } + } else if yyct4077 == codecSelferValueTypeArray1234 { + yyl4077 := r.ReadArrayStart() + if yyl4077 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4077, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4078Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4078Slc + var yyhl4078 bool = l >= 0 + for yyj4078 := 0; ; yyj4078++ { + if yyhl4078 { + if yyj4078 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4078Slc = r.DecodeBytes(yys4078Slc, true, true) + yys4078 := string(yys4078Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4078 { + case "hard": + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4079 := &x.Hard + yyv4079.CodecDecodeSelf(d) + } + case "used": + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv4080 := &x.Used + yyv4080.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4078) + } // end switch yys4078 + } // end for yyj4078 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4081 int + var yyb4081 bool + var yyhl4081 bool = l >= 0 + yyj4081++ + if yyhl4081 { + yyb4081 = yyj4081 > l + } else { + yyb4081 = r.CheckBreak() + } + if yyb4081 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hard = nil + } else { + yyv4082 := &x.Hard + yyv4082.CodecDecodeSelf(d) + } + yyj4081++ + if yyhl4081 { + yyb4081 = yyj4081 > l + } else { + yyb4081 = r.CheckBreak() + } + if yyb4081 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Used = nil + } else { + yyv4083 := &x.Used + yyv4083.CodecDecodeSelf(d) + } + for { + yyj4081++ + if yyhl4081 { + yyb4081 = yyj4081 > l + } else { + yyb4081 = r.CheckBreak() + } + if yyb4081 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4081-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuota) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4084 := z.EncBinary() + _ = yym4084 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4085 := !z.EncBinary() + yy2arr4085 := z.EncBasicHandle().StructToArray + var yyq4085 [5]bool + _, _, _ = yysep4085, yyq4085, yy2arr4085 + const yyr4085 bool = false + yyq4085[0] = x.Kind != "" + yyq4085[1] = x.APIVersion != "" + yyq4085[2] = true + yyq4085[3] = true + yyq4085[4] = true + var yynn4085 int + if yyr4085 || yy2arr4085 { + r.EncodeArrayStart(5) + } else { + yynn4085 = 0 + for _, b := range yyq4085 { + if b { + yynn4085++ + } + } + r.EncodeMapStart(yynn4085) + yynn4085 = 0 + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4085[0] { + yym4087 := z.EncBinary() + _ = yym4087 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4085[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4088 := z.EncBinary() + _ = yym4088 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4085[1] { + yym4090 := z.EncBinary() + _ = yym4090 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4085[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4091 := z.EncBinary() + _ = yym4091 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4085[2] { + yy4093 := &x.ObjectMeta + yy4093.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4085[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4094 := &x.ObjectMeta + yy4094.CodecEncodeSelf(e) + } + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4085[3] { + yy4096 := &x.Spec + yy4096.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4085[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4097 := &x.Spec + yy4097.CodecEncodeSelf(e) + } + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4085[4] { + yy4099 := &x.Status + yy4099.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4085[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4100 := &x.Status + yy4100.CodecEncodeSelf(e) + } + } + if yyr4085 || yy2arr4085 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuota) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4101 := z.DecBinary() + _ = yym4101 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4102 := r.ContainerType() + if yyct4102 == codecSelferValueTypeMap1234 { + yyl4102 := r.ReadMapStart() + if yyl4102 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4102, d) + } + } else if yyct4102 == codecSelferValueTypeArray1234 { + yyl4102 := r.ReadArrayStart() + if yyl4102 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4102, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuota) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4103Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4103Slc + var yyhl4103 bool = l >= 0 + for yyj4103 := 0; ; yyj4103++ { + if yyhl4103 { + if yyj4103 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4103Slc = r.DecodeBytes(yys4103Slc, true, true) + yys4103 := string(yys4103Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4103 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4106 := &x.ObjectMeta + yyv4106.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv4107 := &x.Spec + yyv4107.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv4108 := &x.Status + yyv4108.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys4103) + } // end switch yys4103 + } // end for yyj4103 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuota) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4109 int + var yyb4109 bool + var yyhl4109 bool = l >= 0 + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4112 := &x.ObjectMeta + yyv4112.CodecDecodeSelf(d) + } + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ResourceQuotaSpec{} + } else { + yyv4113 := &x.Spec + yyv4113.CodecDecodeSelf(d) + } + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ResourceQuotaStatus{} + } else { + yyv4114 := &x.Status + yyv4114.CodecDecodeSelf(d) + } + for { + yyj4109++ + if yyhl4109 { + yyb4109 = yyj4109 > l + } else { + yyb4109 = r.CheckBreak() + } + if yyb4109 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4109-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceQuotaList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4115 := z.EncBinary() + _ = yym4115 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4116 := !z.EncBinary() + yy2arr4116 := z.EncBasicHandle().StructToArray + var yyq4116 [4]bool + _, _, _ = yysep4116, yyq4116, yy2arr4116 + const yyr4116 bool = false + yyq4116[0] = x.Kind != "" + yyq4116[1] = x.APIVersion != "" + yyq4116[2] = true + var yynn4116 int + if yyr4116 || yy2arr4116 { + r.EncodeArrayStart(4) + } else { + yynn4116 = 1 + for _, b := range yyq4116 { + if b { + yynn4116++ + } + } + r.EncodeMapStart(yynn4116) + yynn4116 = 0 + } + if yyr4116 || yy2arr4116 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4116[0] { + yym4118 := z.EncBinary() + _ = yym4118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4116[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4119 := z.EncBinary() + _ = yym4119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4116 || yy2arr4116 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4116[1] { + yym4121 := z.EncBinary() + _ = yym4121 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4116[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4122 := z.EncBinary() + _ = yym4122 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4116 || yy2arr4116 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4116[2] { + yy4124 := &x.ListMeta + yym4125 := z.EncBinary() + _ = yym4125 + if false { + } else if z.HasExtensions() && z.EncExt(yy4124) { + } else { + z.EncFallback(yy4124) + } + } else { + r.EncodeNil() + } + } else { + if yyq4116[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4126 := &x.ListMeta + yym4127 := z.EncBinary() + _ = yym4127 + if false { + } else if z.HasExtensions() && z.EncExt(yy4126) { + } else { + z.EncFallback(yy4126) + } + } + } + if yyr4116 || yy2arr4116 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4129 := z.EncBinary() + _ = yym4129 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4130 := z.EncBinary() + _ = yym4130 + if false { + } else { + h.encSliceResourceQuota(([]ResourceQuota)(x.Items), e) + } + } + } + if yyr4116 || yy2arr4116 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceQuotaList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4131 := z.DecBinary() + _ = yym4131 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4132 := r.ContainerType() + if yyct4132 == codecSelferValueTypeMap1234 { + yyl4132 := r.ReadMapStart() + if yyl4132 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4132, d) + } + } else if yyct4132 == codecSelferValueTypeArray1234 { + yyl4132 := r.ReadArrayStart() + if yyl4132 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4132, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceQuotaList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4133Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4133Slc + var yyhl4133 bool = l >= 0 + for yyj4133 := 0; ; yyj4133++ { + if yyhl4133 { + if yyj4133 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4133Slc = r.DecodeBytes(yys4133Slc, true, true) + yys4133 := string(yys4133Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4133 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4136 := &x.ListMeta + yym4137 := z.DecBinary() + _ = yym4137 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4136) { + } else { + z.DecFallback(yyv4136, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4138 := &x.Items + yym4139 := z.DecBinary() + _ = yym4139 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv4138), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4133) + } // end switch yys4133 + } // end for yyj4133 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceQuotaList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4140 int + var yyb4140 bool + var yyhl4140 bool = l >= 0 + yyj4140++ + if yyhl4140 { + yyb4140 = yyj4140 > l + } else { + yyb4140 = r.CheckBreak() + } + if yyb4140 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4140++ + if yyhl4140 { + yyb4140 = yyj4140 > l + } else { + yyb4140 = r.CheckBreak() + } + if yyb4140 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4140++ + if yyhl4140 { + yyb4140 = yyj4140 > l + } else { + yyb4140 = r.CheckBreak() + } + if yyb4140 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4143 := &x.ListMeta + yym4144 := z.DecBinary() + _ = yym4144 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4143) { + } else { + z.DecFallback(yyv4143, false) + } + } + yyj4140++ + if yyhl4140 { + yyb4140 = yyj4140 > l + } else { + yyb4140 = r.CheckBreak() + } + if yyb4140 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4145 := &x.Items + yym4146 := z.DecBinary() + _ = yym4146 + if false { + } else { + h.decSliceResourceQuota((*[]ResourceQuota)(yyv4145), d) + } + } + for { + yyj4140++ + if yyhl4140 { + yyb4140 = yyj4140 > l + } else { + yyb4140 = r.CheckBreak() + } + if yyb4140 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4140-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Secret) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4147 := z.EncBinary() + _ = yym4147 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4148 := !z.EncBinary() + yy2arr4148 := z.EncBasicHandle().StructToArray + var yyq4148 [6]bool + _, _, _ = yysep4148, yyq4148, yy2arr4148 + const yyr4148 bool = false + yyq4148[0] = x.Kind != "" + yyq4148[1] = x.APIVersion != "" + yyq4148[2] = true + yyq4148[3] = len(x.Data) != 0 + yyq4148[4] = len(x.StringData) != 0 + yyq4148[5] = x.Type != "" + var yynn4148 int + if yyr4148 || yy2arr4148 { + r.EncodeArrayStart(6) + } else { + yynn4148 = 0 + for _, b := range yyq4148 { + if b { + yynn4148++ + } + } + r.EncodeMapStart(yynn4148) + yynn4148 = 0 + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[0] { + yym4150 := z.EncBinary() + _ = yym4150 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4148[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4151 := z.EncBinary() + _ = yym4151 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[1] { + yym4153 := z.EncBinary() + _ = yym4153 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4148[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4154 := z.EncBinary() + _ = yym4154 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[2] { + yy4156 := &x.ObjectMeta + yy4156.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4148[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4157 := &x.ObjectMeta + yy4157.CodecEncodeSelf(e) + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym4159 := z.EncBinary() + _ = yym4159 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4148[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4160 := z.EncBinary() + _ = yym4160 + if false { + } else { + h.encMapstringSliceuint8((map[string][]uint8)(x.Data), e) + } + } + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[4] { + if x.StringData == nil { + r.EncodeNil() + } else { + yym4162 := z.EncBinary() + _ = yym4162 + if false { + } else { + z.F.EncMapStringStringV(x.StringData, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4148[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("stringData")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StringData == nil { + r.EncodeNil() + } else { + yym4163 := z.EncBinary() + _ = yym4163 + if false { + } else { + z.F.EncMapStringStringV(x.StringData, false, e) + } + } + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4148[5] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4148[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr4148 || yy2arr4148 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Secret) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4165 := z.DecBinary() + _ = yym4165 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4166 := r.ContainerType() + if yyct4166 == codecSelferValueTypeMap1234 { + yyl4166 := r.ReadMapStart() + if yyl4166 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4166, d) + } + } else if yyct4166 == codecSelferValueTypeArray1234 { + yyl4166 := r.ReadArrayStart() + if yyl4166 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4166, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Secret) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4167Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4167Slc + var yyhl4167 bool = l >= 0 + for yyj4167 := 0; ; yyj4167++ { + if yyhl4167 { + if yyj4167 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4167Slc = r.DecodeBytes(yys4167Slc, true, true) + yys4167 := string(yys4167Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4167 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4170 := &x.ObjectMeta + yyv4170.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4171 := &x.Data + yym4172 := z.DecBinary() + _ = yym4172 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv4171), d) + } + } + case "stringData": + if r.TryDecodeAsNil() { + x.StringData = nil + } else { + yyv4173 := &x.StringData + yym4174 := z.DecBinary() + _ = yym4174 + if false { + } else { + z.F.DecMapStringStringX(yyv4173, false, d) + } + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = SecretType(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4167) + } // end switch yys4167 + } // end for yyj4167 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Secret) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4176 int + var yyb4176 bool + var yyhl4176 bool = l >= 0 + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4179 := &x.ObjectMeta + yyv4179.CodecDecodeSelf(d) + } + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4180 := &x.Data + yym4181 := z.DecBinary() + _ = yym4181 + if false { + } else { + h.decMapstringSliceuint8((*map[string][]uint8)(yyv4180), d) + } + } + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.StringData = nil + } else { + yyv4182 := &x.StringData + yym4183 := z.DecBinary() + _ = yym4183 + if false { + } else { + z.F.DecMapStringStringX(yyv4182, false, d) + } + } + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = SecretType(r.DecodeString()) + } + for { + yyj4176++ + if yyhl4176 { + yyb4176 = yyj4176 > l + } else { + yyb4176 = r.CheckBreak() + } + if yyb4176 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4176-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SecretType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4185 := z.EncBinary() + _ = yym4185 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SecretType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4186 := z.DecBinary() + _ = yym4186 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SecretList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4187 := z.EncBinary() + _ = yym4187 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4188 := !z.EncBinary() + yy2arr4188 := z.EncBasicHandle().StructToArray + var yyq4188 [4]bool + _, _, _ = yysep4188, yyq4188, yy2arr4188 + const yyr4188 bool = false + yyq4188[0] = x.Kind != "" + yyq4188[1] = x.APIVersion != "" + yyq4188[2] = true + var yynn4188 int + if yyr4188 || yy2arr4188 { + r.EncodeArrayStart(4) + } else { + yynn4188 = 1 + for _, b := range yyq4188 { + if b { + yynn4188++ + } + } + r.EncodeMapStart(yynn4188) + yynn4188 = 0 + } + if yyr4188 || yy2arr4188 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4188[0] { + yym4190 := z.EncBinary() + _ = yym4190 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4188[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4191 := z.EncBinary() + _ = yym4191 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4188 || yy2arr4188 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4188[1] { + yym4193 := z.EncBinary() + _ = yym4193 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4188[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4194 := z.EncBinary() + _ = yym4194 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4188 || yy2arr4188 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4188[2] { + yy4196 := &x.ListMeta + yym4197 := z.EncBinary() + _ = yym4197 + if false { + } else if z.HasExtensions() && z.EncExt(yy4196) { + } else { + z.EncFallback(yy4196) + } + } else { + r.EncodeNil() + } + } else { + if yyq4188[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4198 := &x.ListMeta + yym4199 := z.EncBinary() + _ = yym4199 + if false { + } else if z.HasExtensions() && z.EncExt(yy4198) { + } else { + z.EncFallback(yy4198) + } + } + } + if yyr4188 || yy2arr4188 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4201 := z.EncBinary() + _ = yym4201 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4202 := z.EncBinary() + _ = yym4202 + if false { + } else { + h.encSliceSecret(([]Secret)(x.Items), e) + } + } + } + if yyr4188 || yy2arr4188 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecretList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4203 := z.DecBinary() + _ = yym4203 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4204 := r.ContainerType() + if yyct4204 == codecSelferValueTypeMap1234 { + yyl4204 := r.ReadMapStart() + if yyl4204 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4204, d) + } + } else if yyct4204 == codecSelferValueTypeArray1234 { + yyl4204 := r.ReadArrayStart() + if yyl4204 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4204, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecretList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4205Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4205Slc + var yyhl4205 bool = l >= 0 + for yyj4205 := 0; ; yyj4205++ { + if yyhl4205 { + if yyj4205 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4205Slc = r.DecodeBytes(yys4205Slc, true, true) + yys4205 := string(yys4205Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4205 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4208 := &x.ListMeta + yym4209 := z.DecBinary() + _ = yym4209 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4208) { + } else { + z.DecFallback(yyv4208, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4210 := &x.Items + yym4211 := z.DecBinary() + _ = yym4211 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv4210), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4205) + } // end switch yys4205 + } // end for yyj4205 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecretList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4212 int + var yyb4212 bool + var yyhl4212 bool = l >= 0 + yyj4212++ + if yyhl4212 { + yyb4212 = yyj4212 > l + } else { + yyb4212 = r.CheckBreak() + } + if yyb4212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4212++ + if yyhl4212 { + yyb4212 = yyj4212 > l + } else { + yyb4212 = r.CheckBreak() + } + if yyb4212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4212++ + if yyhl4212 { + yyb4212 = yyj4212 > l + } else { + yyb4212 = r.CheckBreak() + } + if yyb4212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4215 := &x.ListMeta + yym4216 := z.DecBinary() + _ = yym4216 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4215) { + } else { + z.DecFallback(yyv4215, false) + } + } + yyj4212++ + if yyhl4212 { + yyb4212 = yyj4212 > l + } else { + yyb4212 = r.CheckBreak() + } + if yyb4212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4217 := &x.Items + yym4218 := z.DecBinary() + _ = yym4218 + if false { + } else { + h.decSliceSecret((*[]Secret)(yyv4217), d) + } + } + for { + yyj4212++ + if yyhl4212 { + yyb4212 = yyj4212 > l + } else { + yyb4212 = r.CheckBreak() + } + if yyb4212 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4212-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMap) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4219 := z.EncBinary() + _ = yym4219 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4220 := !z.EncBinary() + yy2arr4220 := z.EncBasicHandle().StructToArray + var yyq4220 [4]bool + _, _, _ = yysep4220, yyq4220, yy2arr4220 + const yyr4220 bool = false + yyq4220[0] = x.Kind != "" + yyq4220[1] = x.APIVersion != "" + yyq4220[2] = true + yyq4220[3] = len(x.Data) != 0 + var yynn4220 int + if yyr4220 || yy2arr4220 { + r.EncodeArrayStart(4) + } else { + yynn4220 = 0 + for _, b := range yyq4220 { + if b { + yynn4220++ + } + } + r.EncodeMapStart(yynn4220) + yynn4220 = 0 + } + if yyr4220 || yy2arr4220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4220[0] { + yym4222 := z.EncBinary() + _ = yym4222 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4220[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4223 := z.EncBinary() + _ = yym4223 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4220 || yy2arr4220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4220[1] { + yym4225 := z.EncBinary() + _ = yym4225 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4220[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4226 := z.EncBinary() + _ = yym4226 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4220 || yy2arr4220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4220[2] { + yy4228 := &x.ObjectMeta + yy4228.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4220[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4229 := &x.ObjectMeta + yy4229.CodecEncodeSelf(e) + } + } + if yyr4220 || yy2arr4220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4220[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym4231 := z.EncBinary() + _ = yym4231 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4220[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4232 := z.EncBinary() + _ = yym4232 + if false { + } else { + z.F.EncMapStringStringV(x.Data, false, e) + } + } + } + } + if yyr4220 || yy2arr4220 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMap) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4233 := z.DecBinary() + _ = yym4233 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4234 := r.ContainerType() + if yyct4234 == codecSelferValueTypeMap1234 { + yyl4234 := r.ReadMapStart() + if yyl4234 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4234, d) + } + } else if yyct4234 == codecSelferValueTypeArray1234 { + yyl4234 := r.ReadArrayStart() + if yyl4234 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4234, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMap) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4235Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4235Slc + var yyhl4235 bool = l >= 0 + for yyj4235 := 0; ; yyj4235++ { + if yyhl4235 { + if yyj4235 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4235Slc = r.DecodeBytes(yys4235Slc, true, true) + yys4235 := string(yys4235Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4235 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4238 := &x.ObjectMeta + yyv4238.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4239 := &x.Data + yym4240 := z.DecBinary() + _ = yym4240 + if false { + } else { + z.F.DecMapStringStringX(yyv4239, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4235) + } // end switch yys4235 + } // end for yyj4235 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMap) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4241 int + var yyb4241 bool + var yyhl4241 bool = l >= 0 + yyj4241++ + if yyhl4241 { + yyb4241 = yyj4241 > l + } else { + yyb4241 = r.CheckBreak() + } + if yyb4241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4241++ + if yyhl4241 { + yyb4241 = yyj4241 > l + } else { + yyb4241 = r.CheckBreak() + } + if yyb4241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4241++ + if yyhl4241 { + yyb4241 = yyj4241 > l + } else { + yyb4241 = r.CheckBreak() + } + if yyb4241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4244 := &x.ObjectMeta + yyv4244.CodecDecodeSelf(d) + } + yyj4241++ + if yyhl4241 { + yyb4241 = yyj4241 > l + } else { + yyb4241 = r.CheckBreak() + } + if yyb4241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4245 := &x.Data + yym4246 := z.DecBinary() + _ = yym4246 + if false { + } else { + z.F.DecMapStringStringX(yyv4245, false, d) + } + } + for { + yyj4241++ + if yyhl4241 { + yyb4241 = yyj4241 > l + } else { + yyb4241 = r.CheckBreak() + } + if yyb4241 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4241-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ConfigMapList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4247 := z.EncBinary() + _ = yym4247 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4248 := !z.EncBinary() + yy2arr4248 := z.EncBasicHandle().StructToArray + var yyq4248 [4]bool + _, _, _ = yysep4248, yyq4248, yy2arr4248 + const yyr4248 bool = false + yyq4248[0] = x.Kind != "" + yyq4248[1] = x.APIVersion != "" + yyq4248[2] = true + var yynn4248 int + if yyr4248 || yy2arr4248 { + r.EncodeArrayStart(4) + } else { + yynn4248 = 1 + for _, b := range yyq4248 { + if b { + yynn4248++ + } + } + r.EncodeMapStart(yynn4248) + yynn4248 = 0 + } + if yyr4248 || yy2arr4248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4248[0] { + yym4250 := z.EncBinary() + _ = yym4250 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4248[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4251 := z.EncBinary() + _ = yym4251 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4248 || yy2arr4248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4248[1] { + yym4253 := z.EncBinary() + _ = yym4253 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4248[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4254 := z.EncBinary() + _ = yym4254 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4248 || yy2arr4248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4248[2] { + yy4256 := &x.ListMeta + yym4257 := z.EncBinary() + _ = yym4257 + if false { + } else if z.HasExtensions() && z.EncExt(yy4256) { + } else { + z.EncFallback(yy4256) + } + } else { + r.EncodeNil() + } + } else { + if yyq4248[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4258 := &x.ListMeta + yym4259 := z.EncBinary() + _ = yym4259 + if false { + } else if z.HasExtensions() && z.EncExt(yy4258) { + } else { + z.EncFallback(yy4258) + } + } + } + if yyr4248 || yy2arr4248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4261 := z.EncBinary() + _ = yym4261 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4262 := z.EncBinary() + _ = yym4262 + if false { + } else { + h.encSliceConfigMap(([]ConfigMap)(x.Items), e) + } + } + } + if yyr4248 || yy2arr4248 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ConfigMapList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4263 := z.DecBinary() + _ = yym4263 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4264 := r.ContainerType() + if yyct4264 == codecSelferValueTypeMap1234 { + yyl4264 := r.ReadMapStart() + if yyl4264 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4264, d) + } + } else if yyct4264 == codecSelferValueTypeArray1234 { + yyl4264 := r.ReadArrayStart() + if yyl4264 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4264, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ConfigMapList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4265Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4265Slc + var yyhl4265 bool = l >= 0 + for yyj4265 := 0; ; yyj4265++ { + if yyhl4265 { + if yyj4265 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4265Slc = r.DecodeBytes(yys4265Slc, true, true) + yys4265 := string(yys4265Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4265 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4268 := &x.ListMeta + yym4269 := z.DecBinary() + _ = yym4269 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4268) { + } else { + z.DecFallback(yyv4268, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4270 := &x.Items + yym4271 := z.DecBinary() + _ = yym4271 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv4270), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4265) + } // end switch yys4265 + } // end for yyj4265 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ConfigMapList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4272 int + var yyb4272 bool + var yyhl4272 bool = l >= 0 + yyj4272++ + if yyhl4272 { + yyb4272 = yyj4272 > l + } else { + yyb4272 = r.CheckBreak() + } + if yyb4272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4272++ + if yyhl4272 { + yyb4272 = yyj4272 > l + } else { + yyb4272 = r.CheckBreak() + } + if yyb4272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4272++ + if yyhl4272 { + yyb4272 = yyj4272 > l + } else { + yyb4272 = r.CheckBreak() + } + if yyb4272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4275 := &x.ListMeta + yym4276 := z.DecBinary() + _ = yym4276 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4275) { + } else { + z.DecFallback(yyv4275, false) + } + } + yyj4272++ + if yyhl4272 { + yyb4272 = yyj4272 > l + } else { + yyb4272 = r.CheckBreak() + } + if yyb4272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4277 := &x.Items + yym4278 := z.DecBinary() + _ = yym4278 + if false { + } else { + h.decSliceConfigMap((*[]ConfigMap)(yyv4277), d) + } + } + for { + yyj4272++ + if yyhl4272 { + yyb4272 = yyj4272 > l + } else { + yyb4272 = r.CheckBreak() + } + if yyb4272 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4272-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ComponentConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym4279 := z.EncBinary() + _ = yym4279 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ComponentConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4280 := z.DecBinary() + _ = yym4280 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ComponentCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4281 := z.EncBinary() + _ = yym4281 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4282 := !z.EncBinary() + yy2arr4282 := z.EncBasicHandle().StructToArray + var yyq4282 [4]bool + _, _, _ = yysep4282, yyq4282, yy2arr4282 + const yyr4282 bool = false + yyq4282[2] = x.Message != "" + yyq4282[3] = x.Error != "" + var yynn4282 int + if yyr4282 || yy2arr4282 { + r.EncodeArrayStart(4) + } else { + yynn4282 = 2 + for _, b := range yyq4282 { + if b { + yynn4282++ + } + } + r.EncodeMapStart(yynn4282) + yynn4282 = 0 + } + if yyr4282 || yy2arr4282 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr4282 || yy2arr4282 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Status.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Status.CodecEncodeSelf(e) + } + if yyr4282 || yy2arr4282 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4282[2] { + yym4286 := z.EncBinary() + _ = yym4286 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4282[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4287 := z.EncBinary() + _ = yym4287 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr4282 || yy2arr4282 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4282[3] { + yym4289 := z.EncBinary() + _ = yym4289 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4282[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4290 := z.EncBinary() + _ = yym4290 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + } + if yyr4282 || yy2arr4282 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4291 := z.DecBinary() + _ = yym4291 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4292 := r.ContainerType() + if yyct4292 == codecSelferValueTypeMap1234 { + yyl4292 := r.ReadMapStart() + if yyl4292 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4292, d) + } + } else if yyct4292 == codecSelferValueTypeArray1234 { + yyl4292 := r.ReadArrayStart() + if yyl4292 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4292, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4293Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4293Slc + var yyhl4293 bool = l >= 0 + for yyj4293 := 0; ; yyj4293++ { + if yyhl4293 { + if yyj4293 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4293Slc = r.DecodeBytes(yys4293Slc, true, true) + yys4293 := string(yys4293Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4293 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ComponentConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4293) + } // end switch yys4293 + } // end for yyj4293 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4298 int + var yyb4298 bool + var yyhl4298 bool = l >= 0 + yyj4298++ + if yyhl4298 { + yyb4298 = yyj4298 > l + } else { + yyb4298 = r.CheckBreak() + } + if yyb4298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = ComponentConditionType(r.DecodeString()) + } + yyj4298++ + if yyhl4298 { + yyb4298 = yyj4298 > l + } else { + yyb4298 = r.CheckBreak() + } + if yyb4298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = ConditionStatus(r.DecodeString()) + } + yyj4298++ + if yyhl4298 { + yyb4298 = yyj4298 > l + } else { + yyb4298 = r.CheckBreak() + } + if yyb4298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj4298++ + if yyhl4298 { + yyb4298 = yyj4298 > l + } else { + yyb4298 = r.CheckBreak() + } + if yyb4298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + for { + yyj4298++ + if yyhl4298 { + yyb4298 = yyj4298 > l + } else { + yyb4298 = r.CheckBreak() + } + if yyb4298 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4298-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4303 := z.EncBinary() + _ = yym4303 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4304 := !z.EncBinary() + yy2arr4304 := z.EncBasicHandle().StructToArray + var yyq4304 [4]bool + _, _, _ = yysep4304, yyq4304, yy2arr4304 + const yyr4304 bool = false + yyq4304[0] = x.Kind != "" + yyq4304[1] = x.APIVersion != "" + yyq4304[2] = true + yyq4304[3] = len(x.Conditions) != 0 + var yynn4304 int + if yyr4304 || yy2arr4304 { + r.EncodeArrayStart(4) + } else { + yynn4304 = 0 + for _, b := range yyq4304 { + if b { + yynn4304++ + } + } + r.EncodeMapStart(yynn4304) + yynn4304 = 0 + } + if yyr4304 || yy2arr4304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4304[0] { + yym4306 := z.EncBinary() + _ = yym4306 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4304[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4307 := z.EncBinary() + _ = yym4307 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4304 || yy2arr4304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4304[1] { + yym4309 := z.EncBinary() + _ = yym4309 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4304[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4310 := z.EncBinary() + _ = yym4310 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4304 || yy2arr4304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4304[2] { + yy4312 := &x.ObjectMeta + yy4312.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4304[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4313 := &x.ObjectMeta + yy4313.CodecEncodeSelf(e) + } + } + if yyr4304 || yy2arr4304 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4304[3] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4315 := z.EncBinary() + _ = yym4315 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4304[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym4316 := z.EncBinary() + _ = yym4316 + if false { + } else { + h.encSliceComponentCondition(([]ComponentCondition)(x.Conditions), e) + } + } + } + } + if yyr4304 || yy2arr4304 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4317 := z.DecBinary() + _ = yym4317 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4318 := r.ContainerType() + if yyct4318 == codecSelferValueTypeMap1234 { + yyl4318 := r.ReadMapStart() + if yyl4318 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4318, d) + } + } else if yyct4318 == codecSelferValueTypeArray1234 { + yyl4318 := r.ReadArrayStart() + if yyl4318 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4318, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4319Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4319Slc + var yyhl4319 bool = l >= 0 + for yyj4319 := 0; ; yyj4319++ { + if yyhl4319 { + if yyj4319 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4319Slc = r.DecodeBytes(yys4319Slc, true, true) + yys4319 := string(yys4319Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4319 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4322 := &x.ObjectMeta + yyv4322.CodecDecodeSelf(d) + } + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4323 := &x.Conditions + yym4324 := z.DecBinary() + _ = yym4324 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv4323), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4319) + } // end switch yys4319 + } // end for yyj4319 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4325 int + var yyb4325 bool + var yyhl4325 bool = l >= 0 + yyj4325++ + if yyhl4325 { + yyb4325 = yyj4325 > l + } else { + yyb4325 = r.CheckBreak() + } + if yyb4325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4325++ + if yyhl4325 { + yyb4325 = yyj4325 > l + } else { + yyb4325 = r.CheckBreak() + } + if yyb4325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4325++ + if yyhl4325 { + yyb4325 = yyj4325 > l + } else { + yyb4325 = r.CheckBreak() + } + if yyb4325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4328 := &x.ObjectMeta + yyv4328.CodecDecodeSelf(d) + } + yyj4325++ + if yyhl4325 { + yyb4325 = yyj4325 > l + } else { + yyb4325 = r.CheckBreak() + } + if yyb4325 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv4329 := &x.Conditions + yym4330 := z.DecBinary() + _ = yym4330 + if false { + } else { + h.decSliceComponentCondition((*[]ComponentCondition)(yyv4329), d) + } + } + for { + yyj4325++ + if yyhl4325 { + yyb4325 = yyj4325 > l + } else { + yyb4325 = r.CheckBreak() + } + if yyb4325 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4325-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ComponentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4331 := z.EncBinary() + _ = yym4331 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4332 := !z.EncBinary() + yy2arr4332 := z.EncBasicHandle().StructToArray + var yyq4332 [4]bool + _, _, _ = yysep4332, yyq4332, yy2arr4332 + const yyr4332 bool = false + yyq4332[0] = x.Kind != "" + yyq4332[1] = x.APIVersion != "" + yyq4332[2] = true + var yynn4332 int + if yyr4332 || yy2arr4332 { + r.EncodeArrayStart(4) + } else { + yynn4332 = 1 + for _, b := range yyq4332 { + if b { + yynn4332++ + } + } + r.EncodeMapStart(yynn4332) + yynn4332 = 0 + } + if yyr4332 || yy2arr4332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4332[0] { + yym4334 := z.EncBinary() + _ = yym4334 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4332[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4335 := z.EncBinary() + _ = yym4335 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4332 || yy2arr4332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4332[1] { + yym4337 := z.EncBinary() + _ = yym4337 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4332[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4338 := z.EncBinary() + _ = yym4338 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4332 || yy2arr4332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4332[2] { + yy4340 := &x.ListMeta + yym4341 := z.EncBinary() + _ = yym4341 + if false { + } else if z.HasExtensions() && z.EncExt(yy4340) { + } else { + z.EncFallback(yy4340) + } + } else { + r.EncodeNil() + } + } else { + if yyq4332[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4342 := &x.ListMeta + yym4343 := z.EncBinary() + _ = yym4343 + if false { + } else if z.HasExtensions() && z.EncExt(yy4342) { + } else { + z.EncFallback(yy4342) + } + } + } + if yyr4332 || yy2arr4332 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4345 := z.EncBinary() + _ = yym4345 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4346 := z.EncBinary() + _ = yym4346 + if false { + } else { + h.encSliceComponentStatus(([]ComponentStatus)(x.Items), e) + } + } + } + if yyr4332 || yy2arr4332 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ComponentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4347 := z.DecBinary() + _ = yym4347 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4348 := r.ContainerType() + if yyct4348 == codecSelferValueTypeMap1234 { + yyl4348 := r.ReadMapStart() + if yyl4348 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4348, d) + } + } else if yyct4348 == codecSelferValueTypeArray1234 { + yyl4348 := r.ReadArrayStart() + if yyl4348 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4348, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ComponentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4349Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4349Slc + var yyhl4349 bool = l >= 0 + for yyj4349 := 0; ; yyj4349++ { + if yyhl4349 { + if yyj4349 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4349Slc = r.DecodeBytes(yys4349Slc, true, true) + yys4349 := string(yys4349Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4349 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4352 := &x.ListMeta + yym4353 := z.DecBinary() + _ = yym4353 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4352) { + } else { + z.DecFallback(yyv4352, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4354 := &x.Items + yym4355 := z.DecBinary() + _ = yym4355 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv4354), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys4349) + } // end switch yys4349 + } // end for yyj4349 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ComponentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4356 int + var yyb4356 bool + var yyhl4356 bool = l >= 0 + yyj4356++ + if yyhl4356 { + yyb4356 = yyj4356 > l + } else { + yyb4356 = r.CheckBreak() + } + if yyb4356 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4356++ + if yyhl4356 { + yyb4356 = yyj4356 > l + } else { + yyb4356 = r.CheckBreak() + } + if yyb4356 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4356++ + if yyhl4356 { + yyb4356 = yyj4356 > l + } else { + yyb4356 = r.CheckBreak() + } + if yyb4356 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv4359 := &x.ListMeta + yym4360 := z.DecBinary() + _ = yym4360 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4359) { + } else { + z.DecFallback(yyv4359, false) + } + } + yyj4356++ + if yyhl4356 { + yyb4356 = yyj4356 > l + } else { + yyb4356 = r.CheckBreak() + } + if yyb4356 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4361 := &x.Items + yym4362 := z.DecBinary() + _ = yym4362 + if false { + } else { + h.decSliceComponentStatus((*[]ComponentStatus)(yyv4361), d) + } + } + for { + yyj4356++ + if yyhl4356 { + yyb4356 = yyj4356 > l + } else { + yyb4356 = r.CheckBreak() + } + if yyb4356 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4356-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeSource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4363 := z.EncBinary() + _ = yym4363 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4364 := !z.EncBinary() + yy2arr4364 := z.EncBasicHandle().StructToArray + var yyq4364 [2]bool + _, _, _ = yysep4364, yyq4364, yy2arr4364 + const yyr4364 bool = false + yyq4364[0] = len(x.Items) != 0 + yyq4364[1] = x.DefaultMode != nil + var yynn4364 int + if yyr4364 || yy2arr4364 { + r.EncodeArrayStart(2) + } else { + yynn4364 = 0 + for _, b := range yyq4364 { + if b { + yynn4364++ + } + } + r.EncodeMapStart(yynn4364) + yynn4364 = 0 + } + if yyr4364 || yy2arr4364 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4364[0] { + if x.Items == nil { + r.EncodeNil() + } else { + yym4366 := z.EncBinary() + _ = yym4366 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4364[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym4367 := z.EncBinary() + _ = yym4367 + if false { + } else { + h.encSliceDownwardAPIVolumeFile(([]DownwardAPIVolumeFile)(x.Items), e) + } + } + } + } + if yyr4364 || yy2arr4364 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4364[1] { + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy4369 := *x.DefaultMode + yym4370 := z.EncBinary() + _ = yym4370 + if false { + } else { + r.EncodeInt(int64(yy4369)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4364[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultMode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultMode == nil { + r.EncodeNil() + } else { + yy4371 := *x.DefaultMode + yym4372 := z.EncBinary() + _ = yym4372 + if false { + } else { + r.EncodeInt(int64(yy4371)) + } + } + } + } + if yyr4364 || yy2arr4364 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeSource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4373 := z.DecBinary() + _ = yym4373 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4374 := r.ContainerType() + if yyct4374 == codecSelferValueTypeMap1234 { + yyl4374 := r.ReadMapStart() + if yyl4374 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4374, d) + } + } else if yyct4374 == codecSelferValueTypeArray1234 { + yyl4374 := r.ReadArrayStart() + if yyl4374 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4374, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4375Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4375Slc + var yyhl4375 bool = l >= 0 + for yyj4375 := 0; ; yyj4375++ { + if yyhl4375 { + if yyj4375 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4375Slc = r.DecodeBytes(yys4375Slc, true, true) + yys4375 := string(yys4375Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4375 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4376 := &x.Items + yym4377 := z.DecBinary() + _ = yym4377 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv4376), d) + } + } + case "defaultMode": + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym4379 := z.DecBinary() + _ = yym4379 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys4375) + } // end switch yys4375 + } // end for yyj4375 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeSource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4380 int + var yyb4380 bool + var yyhl4380 bool = l >= 0 + yyj4380++ + if yyhl4380 { + yyb4380 = yyj4380 > l + } else { + yyb4380 = r.CheckBreak() + } + if yyb4380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv4381 := &x.Items + yym4382 := z.DecBinary() + _ = yym4382 + if false { + } else { + h.decSliceDownwardAPIVolumeFile((*[]DownwardAPIVolumeFile)(yyv4381), d) + } + } + yyj4380++ + if yyhl4380 { + yyb4380 = yyj4380 > l + } else { + yyb4380 = r.CheckBreak() + } + if yyb4380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DefaultMode != nil { + x.DefaultMode = nil + } + } else { + if x.DefaultMode == nil { + x.DefaultMode = new(int32) + } + yym4384 := z.DecBinary() + _ = yym4384 + if false { + } else { + *((*int32)(x.DefaultMode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj4380++ + if yyhl4380 { + yyb4380 = yyj4380 > l + } else { + yyb4380 = r.CheckBreak() + } + if yyb4380 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4380-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DownwardAPIVolumeFile) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4385 := z.EncBinary() + _ = yym4385 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4386 := !z.EncBinary() + yy2arr4386 := z.EncBasicHandle().StructToArray + var yyq4386 [4]bool + _, _, _ = yysep4386, yyq4386, yy2arr4386 + const yyr4386 bool = false + yyq4386[1] = x.FieldRef != nil + yyq4386[2] = x.ResourceFieldRef != nil + yyq4386[3] = x.Mode != nil + var yynn4386 int + if yyr4386 || yy2arr4386 { + r.EncodeArrayStart(4) + } else { + yynn4386 = 1 + for _, b := range yyq4386 { + if b { + yynn4386++ + } + } + r.EncodeMapStart(yynn4386) + yynn4386 = 0 + } + if yyr4386 || yy2arr4386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4388 := z.EncBinary() + _ = yym4388 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4389 := z.EncBinary() + _ = yym4389 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr4386 || yy2arr4386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4386[1] { + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4386[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.FieldRef == nil { + r.EncodeNil() + } else { + x.FieldRef.CodecEncodeSelf(e) + } + } + } + if yyr4386 || yy2arr4386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4386[2] { + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4386[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceFieldRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceFieldRef == nil { + r.EncodeNil() + } else { + x.ResourceFieldRef.CodecEncodeSelf(e) + } + } + } + if yyr4386 || yy2arr4386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4386[3] { + if x.Mode == nil { + r.EncodeNil() + } else { + yy4393 := *x.Mode + yym4394 := z.EncBinary() + _ = yym4394 + if false { + } else { + r.EncodeInt(int64(yy4393)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4386[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("mode")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Mode == nil { + r.EncodeNil() + } else { + yy4395 := *x.Mode + yym4396 := z.EncBinary() + _ = yym4396 + if false { + } else { + r.EncodeInt(int64(yy4395)) + } + } + } + } + if yyr4386 || yy2arr4386 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DownwardAPIVolumeFile) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4397 := z.DecBinary() + _ = yym4397 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4398 := r.ContainerType() + if yyct4398 == codecSelferValueTypeMap1234 { + yyl4398 := r.ReadMapStart() + if yyl4398 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4398, d) + } + } else if yyct4398 == codecSelferValueTypeArray1234 { + yyl4398 := r.ReadArrayStart() + if yyl4398 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4398, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4399Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4399Slc + var yyhl4399 bool = l >= 0 + for yyj4399 := 0; ; yyj4399++ { + if yyhl4399 { + if yyj4399 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4399Slc = r.DecodeBytes(yys4399Slc, true, true) + yys4399 := string(yys4399Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4399 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "fieldRef": + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + case "resourceFieldRef": + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + case "mode": + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym4404 := z.DecBinary() + _ = yym4404 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys4399) + } // end switch yys4399 + } // end for yyj4399 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DownwardAPIVolumeFile) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4405 int + var yyb4405 bool + var yyhl4405 bool = l >= 0 + yyj4405++ + if yyhl4405 { + yyb4405 = yyj4405 > l + } else { + yyb4405 = r.CheckBreak() + } + if yyb4405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj4405++ + if yyhl4405 { + yyb4405 = yyj4405 > l + } else { + yyb4405 = r.CheckBreak() + } + if yyb4405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.FieldRef != nil { + x.FieldRef = nil + } + } else { + if x.FieldRef == nil { + x.FieldRef = new(ObjectFieldSelector) + } + x.FieldRef.CodecDecodeSelf(d) + } + yyj4405++ + if yyhl4405 { + yyb4405 = yyj4405 > l + } else { + yyb4405 = r.CheckBreak() + } + if yyb4405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceFieldRef != nil { + x.ResourceFieldRef = nil + } + } else { + if x.ResourceFieldRef == nil { + x.ResourceFieldRef = new(ResourceFieldSelector) + } + x.ResourceFieldRef.CodecDecodeSelf(d) + } + yyj4405++ + if yyhl4405 { + yyb4405 = yyj4405 > l + } else { + yyb4405 = r.CheckBreak() + } + if yyb4405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Mode != nil { + x.Mode = nil + } + } else { + if x.Mode == nil { + x.Mode = new(int32) + } + yym4410 := z.DecBinary() + _ = yym4410 + if false { + } else { + *((*int32)(x.Mode)) = int32(r.DecodeInt(32)) + } + } + for { + yyj4405++ + if yyhl4405 { + yyb4405 = yyj4405 > l + } else { + yyb4405 = r.CheckBreak() + } + if yyb4405 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4405-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SecurityContext) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4411 := z.EncBinary() + _ = yym4411 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4412 := !z.EncBinary() + yy2arr4412 := z.EncBasicHandle().StructToArray + var yyq4412 [6]bool + _, _, _ = yysep4412, yyq4412, yy2arr4412 + const yyr4412 bool = false + yyq4412[0] = x.Capabilities != nil + yyq4412[1] = x.Privileged != nil + yyq4412[2] = x.SELinuxOptions != nil + yyq4412[3] = x.RunAsUser != nil + yyq4412[4] = x.RunAsNonRoot != nil + yyq4412[5] = x.ReadOnlyRootFilesystem != nil + var yynn4412 int + if yyr4412 || yy2arr4412 { + r.EncodeArrayStart(6) + } else { + yynn4412 = 0 + for _, b := range yyq4412 { + if b { + yynn4412++ + } + } + r.EncodeMapStart(yynn4412) + yynn4412 = 0 + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[0] { + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("capabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Capabilities == nil { + r.EncodeNil() + } else { + x.Capabilities.CodecEncodeSelf(e) + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[1] { + if x.Privileged == nil { + r.EncodeNil() + } else { + yy4415 := *x.Privileged + yym4416 := z.EncBinary() + _ = yym4416 + if false { + } else { + r.EncodeBool(bool(yy4415)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Privileged == nil { + r.EncodeNil() + } else { + yy4417 := *x.Privileged + yym4418 := z.EncBinary() + _ = yym4418 + if false { + } else { + r.EncodeBool(bool(yy4417)) + } + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[2] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[3] { + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy4421 := *x.RunAsUser + yym4422 := z.EncBinary() + _ = yym4422 + if false { + } else { + r.EncodeInt(int64(yy4421)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsUser == nil { + r.EncodeNil() + } else { + yy4423 := *x.RunAsUser + yym4424 := z.EncBinary() + _ = yym4424 + if false { + } else { + r.EncodeInt(int64(yy4423)) + } + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[4] { + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy4426 := *x.RunAsNonRoot + yym4427 := z.EncBinary() + _ = yym4427 + if false { + } else { + r.EncodeBool(bool(yy4426)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsNonRoot")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RunAsNonRoot == nil { + r.EncodeNil() + } else { + yy4428 := *x.RunAsNonRoot + yym4429 := z.EncBinary() + _ = yym4429 + if false { + } else { + r.EncodeBool(bool(yy4428)) + } + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4412[5] { + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy4431 := *x.ReadOnlyRootFilesystem + yym4432 := z.EncBinary() + _ = yym4432 + if false { + } else { + r.EncodeBool(bool(yy4431)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq4412[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ReadOnlyRootFilesystem == nil { + r.EncodeNil() + } else { + yy4433 := *x.ReadOnlyRootFilesystem + yym4434 := z.EncBinary() + _ = yym4434 + if false { + } else { + r.EncodeBool(bool(yy4433)) + } + } + } + } + if yyr4412 || yy2arr4412 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SecurityContext) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4435 := z.DecBinary() + _ = yym4435 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4436 := r.ContainerType() + if yyct4436 == codecSelferValueTypeMap1234 { + yyl4436 := r.ReadMapStart() + if yyl4436 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4436, d) + } + } else if yyct4436 == codecSelferValueTypeArray1234 { + yyl4436 := r.ReadArrayStart() + if yyl4436 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4436, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SecurityContext) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4437Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4437Slc + var yyhl4437 bool = l >= 0 + for yyj4437 := 0; ; yyj4437++ { + if yyhl4437 { + if yyj4437 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4437Slc = r.DecodeBytes(yys4437Slc, true, true) + yys4437 := string(yys4437Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4437 { + case "capabilities": + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + case "privileged": + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym4440 := z.DecBinary() + _ = yym4440 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym4443 := z.DecBinary() + _ = yym4443 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + case "runAsNonRoot": + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym4445 := z.DecBinary() + _ = yym4445 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym4447 := z.DecBinary() + _ = yym4447 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + default: + z.DecStructFieldNotFound(-1, yys4437) + } // end switch yys4437 + } // end for yyj4437 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SecurityContext) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4448 int + var yyb4448 bool + var yyhl4448 bool = l >= 0 + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Capabilities != nil { + x.Capabilities = nil + } + } else { + if x.Capabilities == nil { + x.Capabilities = new(Capabilities) + } + x.Capabilities.CodecDecodeSelf(d) + } + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Privileged != nil { + x.Privileged = nil + } + } else { + if x.Privileged == nil { + x.Privileged = new(bool) + } + yym4451 := z.DecBinary() + _ = yym4451 + if false { + } else { + *((*bool)(x.Privileged)) = r.DecodeBool() + } + } + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsUser != nil { + x.RunAsUser = nil + } + } else { + if x.RunAsUser == nil { + x.RunAsUser = new(int64) + } + yym4454 := z.DecBinary() + _ = yym4454 + if false { + } else { + *((*int64)(x.RunAsUser)) = int64(r.DecodeInt(64)) + } + } + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RunAsNonRoot != nil { + x.RunAsNonRoot = nil + } + } else { + if x.RunAsNonRoot == nil { + x.RunAsNonRoot = new(bool) + } + yym4456 := z.DecBinary() + _ = yym4456 + if false { + } else { + *((*bool)(x.RunAsNonRoot)) = r.DecodeBool() + } + } + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ReadOnlyRootFilesystem != nil { + x.ReadOnlyRootFilesystem = nil + } + } else { + if x.ReadOnlyRootFilesystem == nil { + x.ReadOnlyRootFilesystem = new(bool) + } + yym4458 := z.DecBinary() + _ = yym4458 + if false { + } else { + *((*bool)(x.ReadOnlyRootFilesystem)) = r.DecodeBool() + } + } + for { + yyj4448++ + if yyhl4448 { + yyb4448 = yyj4448 > l + } else { + yyb4448 = r.CheckBreak() + } + if yyb4448 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4448-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SELinuxOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4459 := z.EncBinary() + _ = yym4459 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4460 := !z.EncBinary() + yy2arr4460 := z.EncBasicHandle().StructToArray + var yyq4460 [4]bool + _, _, _ = yysep4460, yyq4460, yy2arr4460 + const yyr4460 bool = false + yyq4460[0] = x.User != "" + yyq4460[1] = x.Role != "" + yyq4460[2] = x.Type != "" + yyq4460[3] = x.Level != "" + var yynn4460 int + if yyr4460 || yy2arr4460 { + r.EncodeArrayStart(4) + } else { + yynn4460 = 0 + for _, b := range yyq4460 { + if b { + yynn4460++ + } + } + r.EncodeMapStart(yynn4460) + yynn4460 = 0 + } + if yyr4460 || yy2arr4460 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4460[0] { + yym4462 := z.EncBinary() + _ = yym4462 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4460[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4463 := z.EncBinary() + _ = yym4463 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr4460 || yy2arr4460 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4460[1] { + yym4465 := z.EncBinary() + _ = yym4465 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4460[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("role")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4466 := z.EncBinary() + _ = yym4466 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Role)) + } + } + } + if yyr4460 || yy2arr4460 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4460[2] { + yym4468 := z.EncBinary() + _ = yym4468 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4460[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4469 := z.EncBinary() + _ = yym4469 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Type)) + } + } + } + if yyr4460 || yy2arr4460 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4460[3] { + yym4471 := z.EncBinary() + _ = yym4471 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4460[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("level")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4472 := z.EncBinary() + _ = yym4472 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Level)) + } + } + } + if yyr4460 || yy2arr4460 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4473 := z.DecBinary() + _ = yym4473 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4474 := r.ContainerType() + if yyct4474 == codecSelferValueTypeMap1234 { + yyl4474 := r.ReadMapStart() + if yyl4474 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4474, d) + } + } else if yyct4474 == codecSelferValueTypeArray1234 { + yyl4474 := r.ReadArrayStart() + if yyl4474 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4474, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4475Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4475Slc + var yyhl4475 bool = l >= 0 + for yyj4475 := 0; ; yyj4475++ { + if yyhl4475 { + if yyj4475 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4475Slc = r.DecodeBytes(yys4475Slc, true, true) + yys4475 := string(yys4475Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4475 { + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "role": + if r.TryDecodeAsNil() { + x.Role = "" + } else { + x.Role = string(r.DecodeString()) + } + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + case "level": + if r.TryDecodeAsNil() { + x.Level = "" + } else { + x.Level = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys4475) + } // end switch yys4475 + } // end for yyj4475 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4480 int + var yyb4480 bool + var yyhl4480 bool = l >= 0 + yyj4480++ + if yyhl4480 { + yyb4480 = yyj4480 > l + } else { + yyb4480 = r.CheckBreak() + } + if yyb4480 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj4480++ + if yyhl4480 { + yyb4480 = yyj4480 > l + } else { + yyb4480 = r.CheckBreak() + } + if yyb4480 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Role = "" + } else { + x.Role = string(r.DecodeString()) + } + yyj4480++ + if yyhl4480 { + yyb4480 = yyj4480 > l + } else { + yyb4480 = r.CheckBreak() + } + if yyb4480 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = string(r.DecodeString()) + } + yyj4480++ + if yyhl4480 { + yyb4480 = yyj4480 > l + } else { + yyb4480 = r.CheckBreak() + } + if yyb4480 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Level = "" + } else { + x.Level = string(r.DecodeString()) + } + for { + yyj4480++ + if yyhl4480 { + yyb4480 = yyj4480 > l + } else { + yyb4480 = r.CheckBreak() + } + if yyb4480 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4480-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RangeAllocation) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym4485 := z.EncBinary() + _ = yym4485 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep4486 := !z.EncBinary() + yy2arr4486 := z.EncBasicHandle().StructToArray + var yyq4486 [5]bool + _, _, _ = yysep4486, yyq4486, yy2arr4486 + const yyr4486 bool = false + yyq4486[0] = x.Kind != "" + yyq4486[1] = x.APIVersion != "" + yyq4486[2] = true + var yynn4486 int + if yyr4486 || yy2arr4486 { + r.EncodeArrayStart(5) + } else { + yynn4486 = 2 + for _, b := range yyq4486 { + if b { + yynn4486++ + } + } + r.EncodeMapStart(yynn4486) + yynn4486 = 0 + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4486[0] { + yym4488 := z.EncBinary() + _ = yym4488 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4486[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4489 := z.EncBinary() + _ = yym4489 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4486[1] { + yym4491 := z.EncBinary() + _ = yym4491 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq4486[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4492 := z.EncBinary() + _ = yym4492 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq4486[2] { + yy4494 := &x.ObjectMeta + yy4494.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq4486[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4495 := &x.ObjectMeta + yy4495.CodecEncodeSelf(e) + } + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4497 := z.EncBinary() + _ = yym4497 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("range")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym4498 := z.EncBinary() + _ = yym4498 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Range)) + } + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4500 := z.EncBinary() + _ = yym4500 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym4501 := z.EncBinary() + _ = yym4501 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + if yyr4486 || yy2arr4486 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RangeAllocation) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym4502 := z.DecBinary() + _ = yym4502 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct4503 := r.ContainerType() + if yyct4503 == codecSelferValueTypeMap1234 { + yyl4503 := r.ReadMapStart() + if yyl4503 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl4503, d) + } + } else if yyct4503 == codecSelferValueTypeArray1234 { + yyl4503 := r.ReadArrayStart() + if yyl4503 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl4503, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RangeAllocation) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys4504Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys4504Slc + var yyhl4504 bool = l >= 0 + for yyj4504 := 0; ; yyj4504++ { + if yyhl4504 { + if yyj4504 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys4504Slc = r.DecodeBytes(yys4504Slc, true, true) + yys4504 := string(yys4504Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys4504 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4507 := &x.ObjectMeta + yyv4507.CodecDecodeSelf(d) + } + case "range": + if r.TryDecodeAsNil() { + x.Range = "" + } else { + x.Range = string(r.DecodeString()) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4509 := &x.Data + yym4510 := z.DecBinary() + _ = yym4510 + if false { + } else { + *yyv4509 = r.DecodeBytes(*(*[]byte)(yyv4509), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys4504) + } // end switch yys4504 + } // end for yyj4504 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RangeAllocation) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj4511 int + var yyb4511 bool + var yyhl4511 bool = l >= 0 + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = ObjectMeta{} + } else { + yyv4514 := &x.ObjectMeta + yyv4514.CodecDecodeSelf(d) + } + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Range = "" + } else { + x.Range = string(r.DecodeString()) + } + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv4516 := &x.Data + yym4517 := z.DecBinary() + _ = yym4517 + if false { + } else { + *yyv4516 = r.DecodeBytes(*(*[]byte)(yyv4516), false, false) + } + } + for { + yyj4511++ + if yyhl4511 { + yyb4511 = yyj4511 > l + } else { + yyb4511 = r.CheckBreak() + } + if yyb4511 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj4511-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceOwnerReference(v []OwnerReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4518 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4519 := &yyv4518 + yy4519.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceOwnerReference(v *[]OwnerReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4520 := *v + yyh4520, yyl4520 := z.DecSliceHelperStart() + var yyc4520 bool + if yyl4520 == 0 { + if yyv4520 == nil { + yyv4520 = []OwnerReference{} + yyc4520 = true + } else if len(yyv4520) != 0 { + yyv4520 = yyv4520[:0] + yyc4520 = true + } + } else if yyl4520 > 0 { + var yyrr4520, yyrl4520 int + var yyrt4520 bool + if yyl4520 > cap(yyv4520) { + + yyrg4520 := len(yyv4520) > 0 + yyv24520 := yyv4520 + yyrl4520, yyrt4520 = z.DecInferLen(yyl4520, z.DecBasicHandle().MaxInitLen, 72) + if yyrt4520 { + if yyrl4520 <= cap(yyv4520) { + yyv4520 = yyv4520[:yyrl4520] + } else { + yyv4520 = make([]OwnerReference, yyrl4520) + } + } else { + yyv4520 = make([]OwnerReference, yyrl4520) + } + yyc4520 = true + yyrr4520 = len(yyv4520) + if yyrg4520 { + copy(yyv4520, yyv24520) + } + } else if yyl4520 != len(yyv4520) { + yyv4520 = yyv4520[:yyl4520] + yyc4520 = true + } + yyj4520 := 0 + for ; yyj4520 < yyrr4520; yyj4520++ { + yyh4520.ElemContainerState(yyj4520) + if r.TryDecodeAsNil() { + yyv4520[yyj4520] = OwnerReference{} + } else { + yyv4521 := &yyv4520[yyj4520] + yyv4521.CodecDecodeSelf(d) + } + + } + if yyrt4520 { + for ; yyj4520 < yyl4520; yyj4520++ { + yyv4520 = append(yyv4520, OwnerReference{}) + yyh4520.ElemContainerState(yyj4520) + if r.TryDecodeAsNil() { + yyv4520[yyj4520] = OwnerReference{} + } else { + yyv4522 := &yyv4520[yyj4520] + yyv4522.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4520 := 0 + for ; !r.CheckBreak(); yyj4520++ { + + if yyj4520 >= len(yyv4520) { + yyv4520 = append(yyv4520, OwnerReference{}) // var yyz4520 OwnerReference + yyc4520 = true + } + yyh4520.ElemContainerState(yyj4520) + if yyj4520 < len(yyv4520) { + if r.TryDecodeAsNil() { + yyv4520[yyj4520] = OwnerReference{} + } else { + yyv4523 := &yyv4520[yyj4520] + yyv4523.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4520 < len(yyv4520) { + yyv4520 = yyv4520[:yyj4520] + yyc4520 = true + } else if yyj4520 == 0 && yyv4520 == nil { + yyv4520 = []OwnerReference{} + yyc4520 = true + } + } + yyh4520.End() + if yyc4520 { + *v = yyv4520 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeAccessMode(v []PersistentVolumeAccessMode, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4524 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4524.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeAccessMode(v *[]PersistentVolumeAccessMode, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4525 := *v + yyh4525, yyl4525 := z.DecSliceHelperStart() + var yyc4525 bool + if yyl4525 == 0 { + if yyv4525 == nil { + yyv4525 = []PersistentVolumeAccessMode{} + yyc4525 = true + } else if len(yyv4525) != 0 { + yyv4525 = yyv4525[:0] + yyc4525 = true + } + } else if yyl4525 > 0 { + var yyrr4525, yyrl4525 int + var yyrt4525 bool + if yyl4525 > cap(yyv4525) { + + yyrl4525, yyrt4525 = z.DecInferLen(yyl4525, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4525 { + if yyrl4525 <= cap(yyv4525) { + yyv4525 = yyv4525[:yyrl4525] + } else { + yyv4525 = make([]PersistentVolumeAccessMode, yyrl4525) + } + } else { + yyv4525 = make([]PersistentVolumeAccessMode, yyrl4525) + } + yyc4525 = true + yyrr4525 = len(yyv4525) + } else if yyl4525 != len(yyv4525) { + yyv4525 = yyv4525[:yyl4525] + yyc4525 = true + } + yyj4525 := 0 + for ; yyj4525 < yyrr4525; yyj4525++ { + yyh4525.ElemContainerState(yyj4525) + if r.TryDecodeAsNil() { + yyv4525[yyj4525] = "" + } else { + yyv4525[yyj4525] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } + if yyrt4525 { + for ; yyj4525 < yyl4525; yyj4525++ { + yyv4525 = append(yyv4525, "") + yyh4525.ElemContainerState(yyj4525) + if r.TryDecodeAsNil() { + yyv4525[yyj4525] = "" + } else { + yyv4525[yyj4525] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } + } + + } else { + yyj4525 := 0 + for ; !r.CheckBreak(); yyj4525++ { + + if yyj4525 >= len(yyv4525) { + yyv4525 = append(yyv4525, "") // var yyz4525 PersistentVolumeAccessMode + yyc4525 = true + } + yyh4525.ElemContainerState(yyj4525) + if yyj4525 < len(yyv4525) { + if r.TryDecodeAsNil() { + yyv4525[yyj4525] = "" + } else { + yyv4525[yyj4525] = PersistentVolumeAccessMode(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4525 < len(yyv4525) { + yyv4525 = yyv4525[:yyj4525] + yyc4525 = true + } else if yyj4525 == 0 && yyv4525 == nil { + yyv4525 = []PersistentVolumeAccessMode{} + yyc4525 = true + } + } + yyh4525.End() + if yyc4525 { + *v = yyv4525 + } +} + +func (x codecSelfer1234) encSlicePersistentVolume(v []PersistentVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4529 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4530 := &yyv4529 + yy4530.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolume(v *[]PersistentVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4531 := *v + yyh4531, yyl4531 := z.DecSliceHelperStart() + var yyc4531 bool + if yyl4531 == 0 { + if yyv4531 == nil { + yyv4531 = []PersistentVolume{} + yyc4531 = true + } else if len(yyv4531) != 0 { + yyv4531 = yyv4531[:0] + yyc4531 = true + } + } else if yyl4531 > 0 { + var yyrr4531, yyrl4531 int + var yyrt4531 bool + if yyl4531 > cap(yyv4531) { + + yyrg4531 := len(yyv4531) > 0 + yyv24531 := yyv4531 + yyrl4531, yyrt4531 = z.DecInferLen(yyl4531, z.DecBasicHandle().MaxInitLen, 488) + if yyrt4531 { + if yyrl4531 <= cap(yyv4531) { + yyv4531 = yyv4531[:yyrl4531] + } else { + yyv4531 = make([]PersistentVolume, yyrl4531) + } + } else { + yyv4531 = make([]PersistentVolume, yyrl4531) + } + yyc4531 = true + yyrr4531 = len(yyv4531) + if yyrg4531 { + copy(yyv4531, yyv24531) + } + } else if yyl4531 != len(yyv4531) { + yyv4531 = yyv4531[:yyl4531] + yyc4531 = true + } + yyj4531 := 0 + for ; yyj4531 < yyrr4531; yyj4531++ { + yyh4531.ElemContainerState(yyj4531) + if r.TryDecodeAsNil() { + yyv4531[yyj4531] = PersistentVolume{} + } else { + yyv4532 := &yyv4531[yyj4531] + yyv4532.CodecDecodeSelf(d) + } + + } + if yyrt4531 { + for ; yyj4531 < yyl4531; yyj4531++ { + yyv4531 = append(yyv4531, PersistentVolume{}) + yyh4531.ElemContainerState(yyj4531) + if r.TryDecodeAsNil() { + yyv4531[yyj4531] = PersistentVolume{} + } else { + yyv4533 := &yyv4531[yyj4531] + yyv4533.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4531 := 0 + for ; !r.CheckBreak(); yyj4531++ { + + if yyj4531 >= len(yyv4531) { + yyv4531 = append(yyv4531, PersistentVolume{}) // var yyz4531 PersistentVolume + yyc4531 = true + } + yyh4531.ElemContainerState(yyj4531) + if yyj4531 < len(yyv4531) { + if r.TryDecodeAsNil() { + yyv4531[yyj4531] = PersistentVolume{} + } else { + yyv4534 := &yyv4531[yyj4531] + yyv4534.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4531 < len(yyv4531) { + yyv4531 = yyv4531[:yyj4531] + yyc4531 = true + } else if yyj4531 == 0 && yyv4531 == nil { + yyv4531 = []PersistentVolume{} + yyc4531 = true + } + } + yyh4531.End() + if yyc4531 { + *v = yyv4531 + } +} + +func (x codecSelfer1234) encSlicePersistentVolumeClaim(v []PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4535 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4536 := &yyv4535 + yy4536.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePersistentVolumeClaim(v *[]PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4537 := *v + yyh4537, yyl4537 := z.DecSliceHelperStart() + var yyc4537 bool + if yyl4537 == 0 { + if yyv4537 == nil { + yyv4537 = []PersistentVolumeClaim{} + yyc4537 = true + } else if len(yyv4537) != 0 { + yyv4537 = yyv4537[:0] + yyc4537 = true + } + } else if yyl4537 > 0 { + var yyrr4537, yyrl4537 int + var yyrt4537 bool + if yyl4537 > cap(yyv4537) { + + yyrg4537 := len(yyv4537) > 0 + yyv24537 := yyv4537 + yyrl4537, yyrt4537 = z.DecInferLen(yyl4537, z.DecBasicHandle().MaxInitLen, 368) + if yyrt4537 { + if yyrl4537 <= cap(yyv4537) { + yyv4537 = yyv4537[:yyrl4537] + } else { + yyv4537 = make([]PersistentVolumeClaim, yyrl4537) + } + } else { + yyv4537 = make([]PersistentVolumeClaim, yyrl4537) + } + yyc4537 = true + yyrr4537 = len(yyv4537) + if yyrg4537 { + copy(yyv4537, yyv24537) + } + } else if yyl4537 != len(yyv4537) { + yyv4537 = yyv4537[:yyl4537] + yyc4537 = true + } + yyj4537 := 0 + for ; yyj4537 < yyrr4537; yyj4537++ { + yyh4537.ElemContainerState(yyj4537) + if r.TryDecodeAsNil() { + yyv4537[yyj4537] = PersistentVolumeClaim{} + } else { + yyv4538 := &yyv4537[yyj4537] + yyv4538.CodecDecodeSelf(d) + } + + } + if yyrt4537 { + for ; yyj4537 < yyl4537; yyj4537++ { + yyv4537 = append(yyv4537, PersistentVolumeClaim{}) + yyh4537.ElemContainerState(yyj4537) + if r.TryDecodeAsNil() { + yyv4537[yyj4537] = PersistentVolumeClaim{} + } else { + yyv4539 := &yyv4537[yyj4537] + yyv4539.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4537 := 0 + for ; !r.CheckBreak(); yyj4537++ { + + if yyj4537 >= len(yyv4537) { + yyv4537 = append(yyv4537, PersistentVolumeClaim{}) // var yyz4537 PersistentVolumeClaim + yyc4537 = true + } + yyh4537.ElemContainerState(yyj4537) + if yyj4537 < len(yyv4537) { + if r.TryDecodeAsNil() { + yyv4537[yyj4537] = PersistentVolumeClaim{} + } else { + yyv4540 := &yyv4537[yyj4537] + yyv4540.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4537 < len(yyv4537) { + yyv4537 = yyv4537[:yyj4537] + yyc4537 = true + } else if yyj4537 == 0 && yyv4537 == nil { + yyv4537 = []PersistentVolumeClaim{} + yyc4537 = true + } + } + yyh4537.End() + if yyc4537 { + *v = yyv4537 + } +} + +func (x codecSelfer1234) encSliceKeyToPath(v []KeyToPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4541 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4542 := &yyv4541 + yy4542.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceKeyToPath(v *[]KeyToPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4543 := *v + yyh4543, yyl4543 := z.DecSliceHelperStart() + var yyc4543 bool + if yyl4543 == 0 { + if yyv4543 == nil { + yyv4543 = []KeyToPath{} + yyc4543 = true + } else if len(yyv4543) != 0 { + yyv4543 = yyv4543[:0] + yyc4543 = true + } + } else if yyl4543 > 0 { + var yyrr4543, yyrl4543 int + var yyrt4543 bool + if yyl4543 > cap(yyv4543) { + + yyrg4543 := len(yyv4543) > 0 + yyv24543 := yyv4543 + yyrl4543, yyrt4543 = z.DecInferLen(yyl4543, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4543 { + if yyrl4543 <= cap(yyv4543) { + yyv4543 = yyv4543[:yyrl4543] + } else { + yyv4543 = make([]KeyToPath, yyrl4543) + } + } else { + yyv4543 = make([]KeyToPath, yyrl4543) + } + yyc4543 = true + yyrr4543 = len(yyv4543) + if yyrg4543 { + copy(yyv4543, yyv24543) + } + } else if yyl4543 != len(yyv4543) { + yyv4543 = yyv4543[:yyl4543] + yyc4543 = true + } + yyj4543 := 0 + for ; yyj4543 < yyrr4543; yyj4543++ { + yyh4543.ElemContainerState(yyj4543) + if r.TryDecodeAsNil() { + yyv4543[yyj4543] = KeyToPath{} + } else { + yyv4544 := &yyv4543[yyj4543] + yyv4544.CodecDecodeSelf(d) + } + + } + if yyrt4543 { + for ; yyj4543 < yyl4543; yyj4543++ { + yyv4543 = append(yyv4543, KeyToPath{}) + yyh4543.ElemContainerState(yyj4543) + if r.TryDecodeAsNil() { + yyv4543[yyj4543] = KeyToPath{} + } else { + yyv4545 := &yyv4543[yyj4543] + yyv4545.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4543 := 0 + for ; !r.CheckBreak(); yyj4543++ { + + if yyj4543 >= len(yyv4543) { + yyv4543 = append(yyv4543, KeyToPath{}) // var yyz4543 KeyToPath + yyc4543 = true + } + yyh4543.ElemContainerState(yyj4543) + if yyj4543 < len(yyv4543) { + if r.TryDecodeAsNil() { + yyv4543[yyj4543] = KeyToPath{} + } else { + yyv4546 := &yyv4543[yyj4543] + yyv4546.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4543 < len(yyv4543) { + yyv4543 = yyv4543[:yyj4543] + yyc4543 = true + } else if yyj4543 == 0 && yyv4543 == nil { + yyv4543 = []KeyToPath{} + yyc4543 = true + } + } + yyh4543.End() + if yyc4543 { + *v = yyv4543 + } +} + +func (x codecSelfer1234) encSliceHTTPHeader(v []HTTPHeader, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4547 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4548 := &yyv4547 + yy4548.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPHeader(v *[]HTTPHeader, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4549 := *v + yyh4549, yyl4549 := z.DecSliceHelperStart() + var yyc4549 bool + if yyl4549 == 0 { + if yyv4549 == nil { + yyv4549 = []HTTPHeader{} + yyc4549 = true + } else if len(yyv4549) != 0 { + yyv4549 = yyv4549[:0] + yyc4549 = true + } + } else if yyl4549 > 0 { + var yyrr4549, yyrl4549 int + var yyrt4549 bool + if yyl4549 > cap(yyv4549) { + + yyrg4549 := len(yyv4549) > 0 + yyv24549 := yyv4549 + yyrl4549, yyrt4549 = z.DecInferLen(yyl4549, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4549 { + if yyrl4549 <= cap(yyv4549) { + yyv4549 = yyv4549[:yyrl4549] + } else { + yyv4549 = make([]HTTPHeader, yyrl4549) + } + } else { + yyv4549 = make([]HTTPHeader, yyrl4549) + } + yyc4549 = true + yyrr4549 = len(yyv4549) + if yyrg4549 { + copy(yyv4549, yyv24549) + } + } else if yyl4549 != len(yyv4549) { + yyv4549 = yyv4549[:yyl4549] + yyc4549 = true + } + yyj4549 := 0 + for ; yyj4549 < yyrr4549; yyj4549++ { + yyh4549.ElemContainerState(yyj4549) + if r.TryDecodeAsNil() { + yyv4549[yyj4549] = HTTPHeader{} + } else { + yyv4550 := &yyv4549[yyj4549] + yyv4550.CodecDecodeSelf(d) + } + + } + if yyrt4549 { + for ; yyj4549 < yyl4549; yyj4549++ { + yyv4549 = append(yyv4549, HTTPHeader{}) + yyh4549.ElemContainerState(yyj4549) + if r.TryDecodeAsNil() { + yyv4549[yyj4549] = HTTPHeader{} + } else { + yyv4551 := &yyv4549[yyj4549] + yyv4551.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4549 := 0 + for ; !r.CheckBreak(); yyj4549++ { + + if yyj4549 >= len(yyv4549) { + yyv4549 = append(yyv4549, HTTPHeader{}) // var yyz4549 HTTPHeader + yyc4549 = true + } + yyh4549.ElemContainerState(yyj4549) + if yyj4549 < len(yyv4549) { + if r.TryDecodeAsNil() { + yyv4549[yyj4549] = HTTPHeader{} + } else { + yyv4552 := &yyv4549[yyj4549] + yyv4552.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4549 < len(yyv4549) { + yyv4549 = yyv4549[:yyj4549] + yyc4549 = true + } else if yyj4549 == 0 && yyv4549 == nil { + yyv4549 = []HTTPHeader{} + yyc4549 = true + } + } + yyh4549.End() + if yyc4549 { + *v = yyv4549 + } +} + +func (x codecSelfer1234) encSliceCapability(v []Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4553 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4553.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCapability(v *[]Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4554 := *v + yyh4554, yyl4554 := z.DecSliceHelperStart() + var yyc4554 bool + if yyl4554 == 0 { + if yyv4554 == nil { + yyv4554 = []Capability{} + yyc4554 = true + } else if len(yyv4554) != 0 { + yyv4554 = yyv4554[:0] + yyc4554 = true + } + } else if yyl4554 > 0 { + var yyrr4554, yyrl4554 int + var yyrt4554 bool + if yyl4554 > cap(yyv4554) { + + yyrl4554, yyrt4554 = z.DecInferLen(yyl4554, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4554 { + if yyrl4554 <= cap(yyv4554) { + yyv4554 = yyv4554[:yyrl4554] + } else { + yyv4554 = make([]Capability, yyrl4554) + } + } else { + yyv4554 = make([]Capability, yyrl4554) + } + yyc4554 = true + yyrr4554 = len(yyv4554) + } else if yyl4554 != len(yyv4554) { + yyv4554 = yyv4554[:yyl4554] + yyc4554 = true + } + yyj4554 := 0 + for ; yyj4554 < yyrr4554; yyj4554++ { + yyh4554.ElemContainerState(yyj4554) + if r.TryDecodeAsNil() { + yyv4554[yyj4554] = "" + } else { + yyv4554[yyj4554] = Capability(r.DecodeString()) + } + + } + if yyrt4554 { + for ; yyj4554 < yyl4554; yyj4554++ { + yyv4554 = append(yyv4554, "") + yyh4554.ElemContainerState(yyj4554) + if r.TryDecodeAsNil() { + yyv4554[yyj4554] = "" + } else { + yyv4554[yyj4554] = Capability(r.DecodeString()) + } + + } + } + + } else { + yyj4554 := 0 + for ; !r.CheckBreak(); yyj4554++ { + + if yyj4554 >= len(yyv4554) { + yyv4554 = append(yyv4554, "") // var yyz4554 Capability + yyc4554 = true + } + yyh4554.ElemContainerState(yyj4554) + if yyj4554 < len(yyv4554) { + if r.TryDecodeAsNil() { + yyv4554[yyj4554] = "" + } else { + yyv4554[yyj4554] = Capability(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4554 < len(yyv4554) { + yyv4554 = yyv4554[:yyj4554] + yyc4554 = true + } else if yyj4554 == 0 && yyv4554 == nil { + yyv4554 = []Capability{} + yyc4554 = true + } + } + yyh4554.End() + if yyc4554 { + *v = yyv4554 + } +} + +func (x codecSelfer1234) encSliceContainerPort(v []ContainerPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4558 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4559 := &yyv4558 + yy4559.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerPort(v *[]ContainerPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4560 := *v + yyh4560, yyl4560 := z.DecSliceHelperStart() + var yyc4560 bool + if yyl4560 == 0 { + if yyv4560 == nil { + yyv4560 = []ContainerPort{} + yyc4560 = true + } else if len(yyv4560) != 0 { + yyv4560 = yyv4560[:0] + yyc4560 = true + } + } else if yyl4560 > 0 { + var yyrr4560, yyrl4560 int + var yyrt4560 bool + if yyl4560 > cap(yyv4560) { + + yyrg4560 := len(yyv4560) > 0 + yyv24560 := yyv4560 + yyrl4560, yyrt4560 = z.DecInferLen(yyl4560, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4560 { + if yyrl4560 <= cap(yyv4560) { + yyv4560 = yyv4560[:yyrl4560] + } else { + yyv4560 = make([]ContainerPort, yyrl4560) + } + } else { + yyv4560 = make([]ContainerPort, yyrl4560) + } + yyc4560 = true + yyrr4560 = len(yyv4560) + if yyrg4560 { + copy(yyv4560, yyv24560) + } + } else if yyl4560 != len(yyv4560) { + yyv4560 = yyv4560[:yyl4560] + yyc4560 = true + } + yyj4560 := 0 + for ; yyj4560 < yyrr4560; yyj4560++ { + yyh4560.ElemContainerState(yyj4560) + if r.TryDecodeAsNil() { + yyv4560[yyj4560] = ContainerPort{} + } else { + yyv4561 := &yyv4560[yyj4560] + yyv4561.CodecDecodeSelf(d) + } + + } + if yyrt4560 { + for ; yyj4560 < yyl4560; yyj4560++ { + yyv4560 = append(yyv4560, ContainerPort{}) + yyh4560.ElemContainerState(yyj4560) + if r.TryDecodeAsNil() { + yyv4560[yyj4560] = ContainerPort{} + } else { + yyv4562 := &yyv4560[yyj4560] + yyv4562.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4560 := 0 + for ; !r.CheckBreak(); yyj4560++ { + + if yyj4560 >= len(yyv4560) { + yyv4560 = append(yyv4560, ContainerPort{}) // var yyz4560 ContainerPort + yyc4560 = true + } + yyh4560.ElemContainerState(yyj4560) + if yyj4560 < len(yyv4560) { + if r.TryDecodeAsNil() { + yyv4560[yyj4560] = ContainerPort{} + } else { + yyv4563 := &yyv4560[yyj4560] + yyv4563.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4560 < len(yyv4560) { + yyv4560 = yyv4560[:yyj4560] + yyc4560 = true + } else if yyj4560 == 0 && yyv4560 == nil { + yyv4560 = []ContainerPort{} + yyc4560 = true + } + } + yyh4560.End() + if yyc4560 { + *v = yyv4560 + } +} + +func (x codecSelfer1234) encSliceEnvVar(v []EnvVar, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4564 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4565 := &yyv4564 + yy4565.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEnvVar(v *[]EnvVar, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4566 := *v + yyh4566, yyl4566 := z.DecSliceHelperStart() + var yyc4566 bool + if yyl4566 == 0 { + if yyv4566 == nil { + yyv4566 = []EnvVar{} + yyc4566 = true + } else if len(yyv4566) != 0 { + yyv4566 = yyv4566[:0] + yyc4566 = true + } + } else if yyl4566 > 0 { + var yyrr4566, yyrl4566 int + var yyrt4566 bool + if yyl4566 > cap(yyv4566) { + + yyrg4566 := len(yyv4566) > 0 + yyv24566 := yyv4566 + yyrl4566, yyrt4566 = z.DecInferLen(yyl4566, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4566 { + if yyrl4566 <= cap(yyv4566) { + yyv4566 = yyv4566[:yyrl4566] + } else { + yyv4566 = make([]EnvVar, yyrl4566) + } + } else { + yyv4566 = make([]EnvVar, yyrl4566) + } + yyc4566 = true + yyrr4566 = len(yyv4566) + if yyrg4566 { + copy(yyv4566, yyv24566) + } + } else if yyl4566 != len(yyv4566) { + yyv4566 = yyv4566[:yyl4566] + yyc4566 = true + } + yyj4566 := 0 + for ; yyj4566 < yyrr4566; yyj4566++ { + yyh4566.ElemContainerState(yyj4566) + if r.TryDecodeAsNil() { + yyv4566[yyj4566] = EnvVar{} + } else { + yyv4567 := &yyv4566[yyj4566] + yyv4567.CodecDecodeSelf(d) + } + + } + if yyrt4566 { + for ; yyj4566 < yyl4566; yyj4566++ { + yyv4566 = append(yyv4566, EnvVar{}) + yyh4566.ElemContainerState(yyj4566) + if r.TryDecodeAsNil() { + yyv4566[yyj4566] = EnvVar{} + } else { + yyv4568 := &yyv4566[yyj4566] + yyv4568.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4566 := 0 + for ; !r.CheckBreak(); yyj4566++ { + + if yyj4566 >= len(yyv4566) { + yyv4566 = append(yyv4566, EnvVar{}) // var yyz4566 EnvVar + yyc4566 = true + } + yyh4566.ElemContainerState(yyj4566) + if yyj4566 < len(yyv4566) { + if r.TryDecodeAsNil() { + yyv4566[yyj4566] = EnvVar{} + } else { + yyv4569 := &yyv4566[yyj4566] + yyv4569.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4566 < len(yyv4566) { + yyv4566 = yyv4566[:yyj4566] + yyc4566 = true + } else if yyj4566 == 0 && yyv4566 == nil { + yyv4566 = []EnvVar{} + yyc4566 = true + } + } + yyh4566.End() + if yyc4566 { + *v = yyv4566 + } +} + +func (x codecSelfer1234) encSliceVolumeMount(v []VolumeMount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4570 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4571 := &yyv4570 + yy4571.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolumeMount(v *[]VolumeMount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4572 := *v + yyh4572, yyl4572 := z.DecSliceHelperStart() + var yyc4572 bool + if yyl4572 == 0 { + if yyv4572 == nil { + yyv4572 = []VolumeMount{} + yyc4572 = true + } else if len(yyv4572) != 0 { + yyv4572 = yyv4572[:0] + yyc4572 = true + } + } else if yyl4572 > 0 { + var yyrr4572, yyrl4572 int + var yyrt4572 bool + if yyl4572 > cap(yyv4572) { + + yyrg4572 := len(yyv4572) > 0 + yyv24572 := yyv4572 + yyrl4572, yyrt4572 = z.DecInferLen(yyl4572, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4572 { + if yyrl4572 <= cap(yyv4572) { + yyv4572 = yyv4572[:yyrl4572] + } else { + yyv4572 = make([]VolumeMount, yyrl4572) + } + } else { + yyv4572 = make([]VolumeMount, yyrl4572) + } + yyc4572 = true + yyrr4572 = len(yyv4572) + if yyrg4572 { + copy(yyv4572, yyv24572) + } + } else if yyl4572 != len(yyv4572) { + yyv4572 = yyv4572[:yyl4572] + yyc4572 = true + } + yyj4572 := 0 + for ; yyj4572 < yyrr4572; yyj4572++ { + yyh4572.ElemContainerState(yyj4572) + if r.TryDecodeAsNil() { + yyv4572[yyj4572] = VolumeMount{} + } else { + yyv4573 := &yyv4572[yyj4572] + yyv4573.CodecDecodeSelf(d) + } + + } + if yyrt4572 { + for ; yyj4572 < yyl4572; yyj4572++ { + yyv4572 = append(yyv4572, VolumeMount{}) + yyh4572.ElemContainerState(yyj4572) + if r.TryDecodeAsNil() { + yyv4572[yyj4572] = VolumeMount{} + } else { + yyv4574 := &yyv4572[yyj4572] + yyv4574.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4572 := 0 + for ; !r.CheckBreak(); yyj4572++ { + + if yyj4572 >= len(yyv4572) { + yyv4572 = append(yyv4572, VolumeMount{}) // var yyz4572 VolumeMount + yyc4572 = true + } + yyh4572.ElemContainerState(yyj4572) + if yyj4572 < len(yyv4572) { + if r.TryDecodeAsNil() { + yyv4572[yyj4572] = VolumeMount{} + } else { + yyv4575 := &yyv4572[yyj4572] + yyv4575.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4572 < len(yyv4572) { + yyv4572 = yyv4572[:yyj4572] + yyc4572 = true + } else if yyj4572 == 0 && yyv4572 == nil { + yyv4572 = []VolumeMount{} + yyc4572 = true + } + } + yyh4572.End() + if yyc4572 { + *v = yyv4572 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorTerm(v []NodeSelectorTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4576 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4577 := &yyv4576 + yy4577.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorTerm(v *[]NodeSelectorTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4578 := *v + yyh4578, yyl4578 := z.DecSliceHelperStart() + var yyc4578 bool + if yyl4578 == 0 { + if yyv4578 == nil { + yyv4578 = []NodeSelectorTerm{} + yyc4578 = true + } else if len(yyv4578) != 0 { + yyv4578 = yyv4578[:0] + yyc4578 = true + } + } else if yyl4578 > 0 { + var yyrr4578, yyrl4578 int + var yyrt4578 bool + if yyl4578 > cap(yyv4578) { + + yyrg4578 := len(yyv4578) > 0 + yyv24578 := yyv4578 + yyrl4578, yyrt4578 = z.DecInferLen(yyl4578, z.DecBasicHandle().MaxInitLen, 24) + if yyrt4578 { + if yyrl4578 <= cap(yyv4578) { + yyv4578 = yyv4578[:yyrl4578] + } else { + yyv4578 = make([]NodeSelectorTerm, yyrl4578) + } + } else { + yyv4578 = make([]NodeSelectorTerm, yyrl4578) + } + yyc4578 = true + yyrr4578 = len(yyv4578) + if yyrg4578 { + copy(yyv4578, yyv24578) + } + } else if yyl4578 != len(yyv4578) { + yyv4578 = yyv4578[:yyl4578] + yyc4578 = true + } + yyj4578 := 0 + for ; yyj4578 < yyrr4578; yyj4578++ { + yyh4578.ElemContainerState(yyj4578) + if r.TryDecodeAsNil() { + yyv4578[yyj4578] = NodeSelectorTerm{} + } else { + yyv4579 := &yyv4578[yyj4578] + yyv4579.CodecDecodeSelf(d) + } + + } + if yyrt4578 { + for ; yyj4578 < yyl4578; yyj4578++ { + yyv4578 = append(yyv4578, NodeSelectorTerm{}) + yyh4578.ElemContainerState(yyj4578) + if r.TryDecodeAsNil() { + yyv4578[yyj4578] = NodeSelectorTerm{} + } else { + yyv4580 := &yyv4578[yyj4578] + yyv4580.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4578 := 0 + for ; !r.CheckBreak(); yyj4578++ { + + if yyj4578 >= len(yyv4578) { + yyv4578 = append(yyv4578, NodeSelectorTerm{}) // var yyz4578 NodeSelectorTerm + yyc4578 = true + } + yyh4578.ElemContainerState(yyj4578) + if yyj4578 < len(yyv4578) { + if r.TryDecodeAsNil() { + yyv4578[yyj4578] = NodeSelectorTerm{} + } else { + yyv4581 := &yyv4578[yyj4578] + yyv4581.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4578 < len(yyv4578) { + yyv4578 = yyv4578[:yyj4578] + yyc4578 = true + } else if yyj4578 == 0 && yyv4578 == nil { + yyv4578 = []NodeSelectorTerm{} + yyc4578 = true + } + } + yyh4578.End() + if yyc4578 { + *v = yyv4578 + } +} + +func (x codecSelfer1234) encSliceNodeSelectorRequirement(v []NodeSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4582 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4583 := &yyv4582 + yy4583.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeSelectorRequirement(v *[]NodeSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4584 := *v + yyh4584, yyl4584 := z.DecSliceHelperStart() + var yyc4584 bool + if yyl4584 == 0 { + if yyv4584 == nil { + yyv4584 = []NodeSelectorRequirement{} + yyc4584 = true + } else if len(yyv4584) != 0 { + yyv4584 = yyv4584[:0] + yyc4584 = true + } + } else if yyl4584 > 0 { + var yyrr4584, yyrl4584 int + var yyrt4584 bool + if yyl4584 > cap(yyv4584) { + + yyrg4584 := len(yyv4584) > 0 + yyv24584 := yyv4584 + yyrl4584, yyrt4584 = z.DecInferLen(yyl4584, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4584 { + if yyrl4584 <= cap(yyv4584) { + yyv4584 = yyv4584[:yyrl4584] + } else { + yyv4584 = make([]NodeSelectorRequirement, yyrl4584) + } + } else { + yyv4584 = make([]NodeSelectorRequirement, yyrl4584) + } + yyc4584 = true + yyrr4584 = len(yyv4584) + if yyrg4584 { + copy(yyv4584, yyv24584) + } + } else if yyl4584 != len(yyv4584) { + yyv4584 = yyv4584[:yyl4584] + yyc4584 = true + } + yyj4584 := 0 + for ; yyj4584 < yyrr4584; yyj4584++ { + yyh4584.ElemContainerState(yyj4584) + if r.TryDecodeAsNil() { + yyv4584[yyj4584] = NodeSelectorRequirement{} + } else { + yyv4585 := &yyv4584[yyj4584] + yyv4585.CodecDecodeSelf(d) + } + + } + if yyrt4584 { + for ; yyj4584 < yyl4584; yyj4584++ { + yyv4584 = append(yyv4584, NodeSelectorRequirement{}) + yyh4584.ElemContainerState(yyj4584) + if r.TryDecodeAsNil() { + yyv4584[yyj4584] = NodeSelectorRequirement{} + } else { + yyv4586 := &yyv4584[yyj4584] + yyv4586.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4584 := 0 + for ; !r.CheckBreak(); yyj4584++ { + + if yyj4584 >= len(yyv4584) { + yyv4584 = append(yyv4584, NodeSelectorRequirement{}) // var yyz4584 NodeSelectorRequirement + yyc4584 = true + } + yyh4584.ElemContainerState(yyj4584) + if yyj4584 < len(yyv4584) { + if r.TryDecodeAsNil() { + yyv4584[yyj4584] = NodeSelectorRequirement{} + } else { + yyv4587 := &yyv4584[yyj4584] + yyv4587.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4584 < len(yyv4584) { + yyv4584 = yyv4584[:yyj4584] + yyc4584 = true + } else if yyj4584 == 0 && yyv4584 == nil { + yyv4584 = []NodeSelectorRequirement{} + yyc4584 = true + } + } + yyh4584.End() + if yyc4584 { + *v = yyv4584 + } +} + +func (x codecSelfer1234) encSlicePodAffinityTerm(v []PodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4588 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4589 := &yyv4588 + yy4589.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodAffinityTerm(v *[]PodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4590 := *v + yyh4590, yyl4590 := z.DecSliceHelperStart() + var yyc4590 bool + if yyl4590 == 0 { + if yyv4590 == nil { + yyv4590 = []PodAffinityTerm{} + yyc4590 = true + } else if len(yyv4590) != 0 { + yyv4590 = yyv4590[:0] + yyc4590 = true + } + } else if yyl4590 > 0 { + var yyrr4590, yyrl4590 int + var yyrt4590 bool + if yyl4590 > cap(yyv4590) { + + yyrg4590 := len(yyv4590) > 0 + yyv24590 := yyv4590 + yyrl4590, yyrt4590 = z.DecInferLen(yyl4590, z.DecBasicHandle().MaxInitLen, 48) + if yyrt4590 { + if yyrl4590 <= cap(yyv4590) { + yyv4590 = yyv4590[:yyrl4590] + } else { + yyv4590 = make([]PodAffinityTerm, yyrl4590) + } + } else { + yyv4590 = make([]PodAffinityTerm, yyrl4590) + } + yyc4590 = true + yyrr4590 = len(yyv4590) + if yyrg4590 { + copy(yyv4590, yyv24590) + } + } else if yyl4590 != len(yyv4590) { + yyv4590 = yyv4590[:yyl4590] + yyc4590 = true + } + yyj4590 := 0 + for ; yyj4590 < yyrr4590; yyj4590++ { + yyh4590.ElemContainerState(yyj4590) + if r.TryDecodeAsNil() { + yyv4590[yyj4590] = PodAffinityTerm{} + } else { + yyv4591 := &yyv4590[yyj4590] + yyv4591.CodecDecodeSelf(d) + } + + } + if yyrt4590 { + for ; yyj4590 < yyl4590; yyj4590++ { + yyv4590 = append(yyv4590, PodAffinityTerm{}) + yyh4590.ElemContainerState(yyj4590) + if r.TryDecodeAsNil() { + yyv4590[yyj4590] = PodAffinityTerm{} + } else { + yyv4592 := &yyv4590[yyj4590] + yyv4592.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4590 := 0 + for ; !r.CheckBreak(); yyj4590++ { + + if yyj4590 >= len(yyv4590) { + yyv4590 = append(yyv4590, PodAffinityTerm{}) // var yyz4590 PodAffinityTerm + yyc4590 = true + } + yyh4590.ElemContainerState(yyj4590) + if yyj4590 < len(yyv4590) { + if r.TryDecodeAsNil() { + yyv4590[yyj4590] = PodAffinityTerm{} + } else { + yyv4593 := &yyv4590[yyj4590] + yyv4593.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4590 < len(yyv4590) { + yyv4590 = yyv4590[:yyj4590] + yyc4590 = true + } else if yyj4590 == 0 && yyv4590 == nil { + yyv4590 = []PodAffinityTerm{} + yyc4590 = true + } + } + yyh4590.End() + if yyc4590 { + *v = yyv4590 + } +} + +func (x codecSelfer1234) encSliceWeightedPodAffinityTerm(v []WeightedPodAffinityTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4594 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4595 := &yyv4594 + yy4595.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceWeightedPodAffinityTerm(v *[]WeightedPodAffinityTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4596 := *v + yyh4596, yyl4596 := z.DecSliceHelperStart() + var yyc4596 bool + if yyl4596 == 0 { + if yyv4596 == nil { + yyv4596 = []WeightedPodAffinityTerm{} + yyc4596 = true + } else if len(yyv4596) != 0 { + yyv4596 = yyv4596[:0] + yyc4596 = true + } + } else if yyl4596 > 0 { + var yyrr4596, yyrl4596 int + var yyrt4596 bool + if yyl4596 > cap(yyv4596) { + + yyrg4596 := len(yyv4596) > 0 + yyv24596 := yyv4596 + yyrl4596, yyrt4596 = z.DecInferLen(yyl4596, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4596 { + if yyrl4596 <= cap(yyv4596) { + yyv4596 = yyv4596[:yyrl4596] + } else { + yyv4596 = make([]WeightedPodAffinityTerm, yyrl4596) + } + } else { + yyv4596 = make([]WeightedPodAffinityTerm, yyrl4596) + } + yyc4596 = true + yyrr4596 = len(yyv4596) + if yyrg4596 { + copy(yyv4596, yyv24596) + } + } else if yyl4596 != len(yyv4596) { + yyv4596 = yyv4596[:yyl4596] + yyc4596 = true + } + yyj4596 := 0 + for ; yyj4596 < yyrr4596; yyj4596++ { + yyh4596.ElemContainerState(yyj4596) + if r.TryDecodeAsNil() { + yyv4596[yyj4596] = WeightedPodAffinityTerm{} + } else { + yyv4597 := &yyv4596[yyj4596] + yyv4597.CodecDecodeSelf(d) + } + + } + if yyrt4596 { + for ; yyj4596 < yyl4596; yyj4596++ { + yyv4596 = append(yyv4596, WeightedPodAffinityTerm{}) + yyh4596.ElemContainerState(yyj4596) + if r.TryDecodeAsNil() { + yyv4596[yyj4596] = WeightedPodAffinityTerm{} + } else { + yyv4598 := &yyv4596[yyj4596] + yyv4598.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4596 := 0 + for ; !r.CheckBreak(); yyj4596++ { + + if yyj4596 >= len(yyv4596) { + yyv4596 = append(yyv4596, WeightedPodAffinityTerm{}) // var yyz4596 WeightedPodAffinityTerm + yyc4596 = true + } + yyh4596.ElemContainerState(yyj4596) + if yyj4596 < len(yyv4596) { + if r.TryDecodeAsNil() { + yyv4596[yyj4596] = WeightedPodAffinityTerm{} + } else { + yyv4599 := &yyv4596[yyj4596] + yyv4599.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4596 < len(yyv4596) { + yyv4596 = yyv4596[:yyj4596] + yyc4596 = true + } else if yyj4596 == 0 && yyv4596 == nil { + yyv4596 = []WeightedPodAffinityTerm{} + yyc4596 = true + } + } + yyh4596.End() + if yyc4596 { + *v = yyv4596 + } +} + +func (x codecSelfer1234) encSlicePreferredSchedulingTerm(v []PreferredSchedulingTerm, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4600 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4601 := &yyv4600 + yy4601.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferredSchedulingTerm(v *[]PreferredSchedulingTerm, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4602 := *v + yyh4602, yyl4602 := z.DecSliceHelperStart() + var yyc4602 bool + if yyl4602 == 0 { + if yyv4602 == nil { + yyv4602 = []PreferredSchedulingTerm{} + yyc4602 = true + } else if len(yyv4602) != 0 { + yyv4602 = yyv4602[:0] + yyc4602 = true + } + } else if yyl4602 > 0 { + var yyrr4602, yyrl4602 int + var yyrt4602 bool + if yyl4602 > cap(yyv4602) { + + yyrg4602 := len(yyv4602) > 0 + yyv24602 := yyv4602 + yyrl4602, yyrt4602 = z.DecInferLen(yyl4602, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4602 { + if yyrl4602 <= cap(yyv4602) { + yyv4602 = yyv4602[:yyrl4602] + } else { + yyv4602 = make([]PreferredSchedulingTerm, yyrl4602) + } + } else { + yyv4602 = make([]PreferredSchedulingTerm, yyrl4602) + } + yyc4602 = true + yyrr4602 = len(yyv4602) + if yyrg4602 { + copy(yyv4602, yyv24602) + } + } else if yyl4602 != len(yyv4602) { + yyv4602 = yyv4602[:yyl4602] + yyc4602 = true + } + yyj4602 := 0 + for ; yyj4602 < yyrr4602; yyj4602++ { + yyh4602.ElemContainerState(yyj4602) + if r.TryDecodeAsNil() { + yyv4602[yyj4602] = PreferredSchedulingTerm{} + } else { + yyv4603 := &yyv4602[yyj4602] + yyv4603.CodecDecodeSelf(d) + } + + } + if yyrt4602 { + for ; yyj4602 < yyl4602; yyj4602++ { + yyv4602 = append(yyv4602, PreferredSchedulingTerm{}) + yyh4602.ElemContainerState(yyj4602) + if r.TryDecodeAsNil() { + yyv4602[yyj4602] = PreferredSchedulingTerm{} + } else { + yyv4604 := &yyv4602[yyj4602] + yyv4604.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4602 := 0 + for ; !r.CheckBreak(); yyj4602++ { + + if yyj4602 >= len(yyv4602) { + yyv4602 = append(yyv4602, PreferredSchedulingTerm{}) // var yyz4602 PreferredSchedulingTerm + yyc4602 = true + } + yyh4602.ElemContainerState(yyj4602) + if yyj4602 < len(yyv4602) { + if r.TryDecodeAsNil() { + yyv4602[yyj4602] = PreferredSchedulingTerm{} + } else { + yyv4605 := &yyv4602[yyj4602] + yyv4605.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4602 < len(yyv4602) { + yyv4602 = yyv4602[:yyj4602] + yyc4602 = true + } else if yyj4602 == 0 && yyv4602 == nil { + yyv4602 = []PreferredSchedulingTerm{} + yyc4602 = true + } + } + yyh4602.End() + if yyc4602 { + *v = yyv4602 + } +} + +func (x codecSelfer1234) encSliceVolume(v []Volume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4606 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4607 := &yyv4606 + yy4607.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceVolume(v *[]Volume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4608 := *v + yyh4608, yyl4608 := z.DecSliceHelperStart() + var yyc4608 bool + if yyl4608 == 0 { + if yyv4608 == nil { + yyv4608 = []Volume{} + yyc4608 = true + } else if len(yyv4608) != 0 { + yyv4608 = yyv4608[:0] + yyc4608 = true + } + } else if yyl4608 > 0 { + var yyrr4608, yyrl4608 int + var yyrt4608 bool + if yyl4608 > cap(yyv4608) { + + yyrg4608 := len(yyv4608) > 0 + yyv24608 := yyv4608 + yyrl4608, yyrt4608 = z.DecInferLen(yyl4608, z.DecBasicHandle().MaxInitLen, 192) + if yyrt4608 { + if yyrl4608 <= cap(yyv4608) { + yyv4608 = yyv4608[:yyrl4608] + } else { + yyv4608 = make([]Volume, yyrl4608) + } + } else { + yyv4608 = make([]Volume, yyrl4608) + } + yyc4608 = true + yyrr4608 = len(yyv4608) + if yyrg4608 { + copy(yyv4608, yyv24608) + } + } else if yyl4608 != len(yyv4608) { + yyv4608 = yyv4608[:yyl4608] + yyc4608 = true + } + yyj4608 := 0 + for ; yyj4608 < yyrr4608; yyj4608++ { + yyh4608.ElemContainerState(yyj4608) + if r.TryDecodeAsNil() { + yyv4608[yyj4608] = Volume{} + } else { + yyv4609 := &yyv4608[yyj4608] + yyv4609.CodecDecodeSelf(d) + } + + } + if yyrt4608 { + for ; yyj4608 < yyl4608; yyj4608++ { + yyv4608 = append(yyv4608, Volume{}) + yyh4608.ElemContainerState(yyj4608) + if r.TryDecodeAsNil() { + yyv4608[yyj4608] = Volume{} + } else { + yyv4610 := &yyv4608[yyj4608] + yyv4610.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4608 := 0 + for ; !r.CheckBreak(); yyj4608++ { + + if yyj4608 >= len(yyv4608) { + yyv4608 = append(yyv4608, Volume{}) // var yyz4608 Volume + yyc4608 = true + } + yyh4608.ElemContainerState(yyj4608) + if yyj4608 < len(yyv4608) { + if r.TryDecodeAsNil() { + yyv4608[yyj4608] = Volume{} + } else { + yyv4611 := &yyv4608[yyj4608] + yyv4611.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4608 < len(yyv4608) { + yyv4608 = yyv4608[:yyj4608] + yyc4608 = true + } else if yyj4608 == 0 && yyv4608 == nil { + yyv4608 = []Volume{} + yyc4608 = true + } + } + yyh4608.End() + if yyc4608 { + *v = yyv4608 + } +} + +func (x codecSelfer1234) encSliceContainer(v []Container, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4612 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4613 := &yyv4612 + yy4613.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainer(v *[]Container, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4614 := *v + yyh4614, yyl4614 := z.DecSliceHelperStart() + var yyc4614 bool + if yyl4614 == 0 { + if yyv4614 == nil { + yyv4614 = []Container{} + yyc4614 = true + } else if len(yyv4614) != 0 { + yyv4614 = yyv4614[:0] + yyc4614 = true + } + } else if yyl4614 > 0 { + var yyrr4614, yyrl4614 int + var yyrt4614 bool + if yyl4614 > cap(yyv4614) { + + yyrg4614 := len(yyv4614) > 0 + yyv24614 := yyv4614 + yyrl4614, yyrt4614 = z.DecInferLen(yyl4614, z.DecBasicHandle().MaxInitLen, 256) + if yyrt4614 { + if yyrl4614 <= cap(yyv4614) { + yyv4614 = yyv4614[:yyrl4614] + } else { + yyv4614 = make([]Container, yyrl4614) + } + } else { + yyv4614 = make([]Container, yyrl4614) + } + yyc4614 = true + yyrr4614 = len(yyv4614) + if yyrg4614 { + copy(yyv4614, yyv24614) + } + } else if yyl4614 != len(yyv4614) { + yyv4614 = yyv4614[:yyl4614] + yyc4614 = true + } + yyj4614 := 0 + for ; yyj4614 < yyrr4614; yyj4614++ { + yyh4614.ElemContainerState(yyj4614) + if r.TryDecodeAsNil() { + yyv4614[yyj4614] = Container{} + } else { + yyv4615 := &yyv4614[yyj4614] + yyv4615.CodecDecodeSelf(d) + } + + } + if yyrt4614 { + for ; yyj4614 < yyl4614; yyj4614++ { + yyv4614 = append(yyv4614, Container{}) + yyh4614.ElemContainerState(yyj4614) + if r.TryDecodeAsNil() { + yyv4614[yyj4614] = Container{} + } else { + yyv4616 := &yyv4614[yyj4614] + yyv4616.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4614 := 0 + for ; !r.CheckBreak(); yyj4614++ { + + if yyj4614 >= len(yyv4614) { + yyv4614 = append(yyv4614, Container{}) // var yyz4614 Container + yyc4614 = true + } + yyh4614.ElemContainerState(yyj4614) + if yyj4614 < len(yyv4614) { + if r.TryDecodeAsNil() { + yyv4614[yyj4614] = Container{} + } else { + yyv4617 := &yyv4614[yyj4614] + yyv4617.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4614 < len(yyv4614) { + yyv4614 = yyv4614[:yyj4614] + yyc4614 = true + } else if yyj4614 == 0 && yyv4614 == nil { + yyv4614 = []Container{} + yyc4614 = true + } + } + yyh4614.End() + if yyc4614 { + *v = yyv4614 + } +} + +func (x codecSelfer1234) encSliceLocalObjectReference(v []LocalObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4618 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4619 := &yyv4618 + yy4619.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLocalObjectReference(v *[]LocalObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4620 := *v + yyh4620, yyl4620 := z.DecSliceHelperStart() + var yyc4620 bool + if yyl4620 == 0 { + if yyv4620 == nil { + yyv4620 = []LocalObjectReference{} + yyc4620 = true + } else if len(yyv4620) != 0 { + yyv4620 = yyv4620[:0] + yyc4620 = true + } + } else if yyl4620 > 0 { + var yyrr4620, yyrl4620 int + var yyrt4620 bool + if yyl4620 > cap(yyv4620) { + + yyrg4620 := len(yyv4620) > 0 + yyv24620 := yyv4620 + yyrl4620, yyrt4620 = z.DecInferLen(yyl4620, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4620 { + if yyrl4620 <= cap(yyv4620) { + yyv4620 = yyv4620[:yyrl4620] + } else { + yyv4620 = make([]LocalObjectReference, yyrl4620) + } + } else { + yyv4620 = make([]LocalObjectReference, yyrl4620) + } + yyc4620 = true + yyrr4620 = len(yyv4620) + if yyrg4620 { + copy(yyv4620, yyv24620) + } + } else if yyl4620 != len(yyv4620) { + yyv4620 = yyv4620[:yyl4620] + yyc4620 = true + } + yyj4620 := 0 + for ; yyj4620 < yyrr4620; yyj4620++ { + yyh4620.ElemContainerState(yyj4620) + if r.TryDecodeAsNil() { + yyv4620[yyj4620] = LocalObjectReference{} + } else { + yyv4621 := &yyv4620[yyj4620] + yyv4621.CodecDecodeSelf(d) + } + + } + if yyrt4620 { + for ; yyj4620 < yyl4620; yyj4620++ { + yyv4620 = append(yyv4620, LocalObjectReference{}) + yyh4620.ElemContainerState(yyj4620) + if r.TryDecodeAsNil() { + yyv4620[yyj4620] = LocalObjectReference{} + } else { + yyv4622 := &yyv4620[yyj4620] + yyv4622.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4620 := 0 + for ; !r.CheckBreak(); yyj4620++ { + + if yyj4620 >= len(yyv4620) { + yyv4620 = append(yyv4620, LocalObjectReference{}) // var yyz4620 LocalObjectReference + yyc4620 = true + } + yyh4620.ElemContainerState(yyj4620) + if yyj4620 < len(yyv4620) { + if r.TryDecodeAsNil() { + yyv4620[yyj4620] = LocalObjectReference{} + } else { + yyv4623 := &yyv4620[yyj4620] + yyv4623.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4620 < len(yyv4620) { + yyv4620 = yyv4620[:yyj4620] + yyc4620 = true + } else if yyj4620 == 0 && yyv4620 == nil { + yyv4620 = []LocalObjectReference{} + yyc4620 = true + } + } + yyh4620.End() + if yyc4620 { + *v = yyv4620 + } +} + +func (x codecSelfer1234) encSlicePodCondition(v []PodCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4624 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4625 := &yyv4624 + yy4625.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodCondition(v *[]PodCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4626 := *v + yyh4626, yyl4626 := z.DecSliceHelperStart() + var yyc4626 bool + if yyl4626 == 0 { + if yyv4626 == nil { + yyv4626 = []PodCondition{} + yyc4626 = true + } else if len(yyv4626) != 0 { + yyv4626 = yyv4626[:0] + yyc4626 = true + } + } else if yyl4626 > 0 { + var yyrr4626, yyrl4626 int + var yyrt4626 bool + if yyl4626 > cap(yyv4626) { + + yyrg4626 := len(yyv4626) > 0 + yyv24626 := yyv4626 + yyrl4626, yyrt4626 = z.DecInferLen(yyl4626, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4626 { + if yyrl4626 <= cap(yyv4626) { + yyv4626 = yyv4626[:yyrl4626] + } else { + yyv4626 = make([]PodCondition, yyrl4626) + } + } else { + yyv4626 = make([]PodCondition, yyrl4626) + } + yyc4626 = true + yyrr4626 = len(yyv4626) + if yyrg4626 { + copy(yyv4626, yyv24626) + } + } else if yyl4626 != len(yyv4626) { + yyv4626 = yyv4626[:yyl4626] + yyc4626 = true + } + yyj4626 := 0 + for ; yyj4626 < yyrr4626; yyj4626++ { + yyh4626.ElemContainerState(yyj4626) + if r.TryDecodeAsNil() { + yyv4626[yyj4626] = PodCondition{} + } else { + yyv4627 := &yyv4626[yyj4626] + yyv4627.CodecDecodeSelf(d) + } + + } + if yyrt4626 { + for ; yyj4626 < yyl4626; yyj4626++ { + yyv4626 = append(yyv4626, PodCondition{}) + yyh4626.ElemContainerState(yyj4626) + if r.TryDecodeAsNil() { + yyv4626[yyj4626] = PodCondition{} + } else { + yyv4628 := &yyv4626[yyj4626] + yyv4628.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4626 := 0 + for ; !r.CheckBreak(); yyj4626++ { + + if yyj4626 >= len(yyv4626) { + yyv4626 = append(yyv4626, PodCondition{}) // var yyz4626 PodCondition + yyc4626 = true + } + yyh4626.ElemContainerState(yyj4626) + if yyj4626 < len(yyv4626) { + if r.TryDecodeAsNil() { + yyv4626[yyj4626] = PodCondition{} + } else { + yyv4629 := &yyv4626[yyj4626] + yyv4629.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4626 < len(yyv4626) { + yyv4626 = yyv4626[:yyj4626] + yyc4626 = true + } else if yyj4626 == 0 && yyv4626 == nil { + yyv4626 = []PodCondition{} + yyc4626 = true + } + } + yyh4626.End() + if yyc4626 { + *v = yyv4626 + } +} + +func (x codecSelfer1234) encSliceContainerStatus(v []ContainerStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4630 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4631 := &yyv4630 + yy4631.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerStatus(v *[]ContainerStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4632 := *v + yyh4632, yyl4632 := z.DecSliceHelperStart() + var yyc4632 bool + if yyl4632 == 0 { + if yyv4632 == nil { + yyv4632 = []ContainerStatus{} + yyc4632 = true + } else if len(yyv4632) != 0 { + yyv4632 = yyv4632[:0] + yyc4632 = true + } + } else if yyl4632 > 0 { + var yyrr4632, yyrl4632 int + var yyrt4632 bool + if yyl4632 > cap(yyv4632) { + + yyrg4632 := len(yyv4632) > 0 + yyv24632 := yyv4632 + yyrl4632, yyrt4632 = z.DecInferLen(yyl4632, z.DecBasicHandle().MaxInitLen, 120) + if yyrt4632 { + if yyrl4632 <= cap(yyv4632) { + yyv4632 = yyv4632[:yyrl4632] + } else { + yyv4632 = make([]ContainerStatus, yyrl4632) + } + } else { + yyv4632 = make([]ContainerStatus, yyrl4632) + } + yyc4632 = true + yyrr4632 = len(yyv4632) + if yyrg4632 { + copy(yyv4632, yyv24632) + } + } else if yyl4632 != len(yyv4632) { + yyv4632 = yyv4632[:yyl4632] + yyc4632 = true + } + yyj4632 := 0 + for ; yyj4632 < yyrr4632; yyj4632++ { + yyh4632.ElemContainerState(yyj4632) + if r.TryDecodeAsNil() { + yyv4632[yyj4632] = ContainerStatus{} + } else { + yyv4633 := &yyv4632[yyj4632] + yyv4633.CodecDecodeSelf(d) + } + + } + if yyrt4632 { + for ; yyj4632 < yyl4632; yyj4632++ { + yyv4632 = append(yyv4632, ContainerStatus{}) + yyh4632.ElemContainerState(yyj4632) + if r.TryDecodeAsNil() { + yyv4632[yyj4632] = ContainerStatus{} + } else { + yyv4634 := &yyv4632[yyj4632] + yyv4634.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4632 := 0 + for ; !r.CheckBreak(); yyj4632++ { + + if yyj4632 >= len(yyv4632) { + yyv4632 = append(yyv4632, ContainerStatus{}) // var yyz4632 ContainerStatus + yyc4632 = true + } + yyh4632.ElemContainerState(yyj4632) + if yyj4632 < len(yyv4632) { + if r.TryDecodeAsNil() { + yyv4632[yyj4632] = ContainerStatus{} + } else { + yyv4635 := &yyv4632[yyj4632] + yyv4635.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4632 < len(yyv4632) { + yyv4632 = yyv4632[:yyj4632] + yyc4632 = true + } else if yyj4632 == 0 && yyv4632 == nil { + yyv4632 = []ContainerStatus{} + yyc4632 = true + } + } + yyh4632.End() + if yyc4632 { + *v = yyv4632 + } +} + +func (x codecSelfer1234) encSlicePod(v []Pod, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4636 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4637 := &yyv4636 + yy4637.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePod(v *[]Pod, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4638 := *v + yyh4638, yyl4638 := z.DecSliceHelperStart() + var yyc4638 bool + if yyl4638 == 0 { + if yyv4638 == nil { + yyv4638 = []Pod{} + yyc4638 = true + } else if len(yyv4638) != 0 { + yyv4638 = yyv4638[:0] + yyc4638 = true + } + } else if yyl4638 > 0 { + var yyrr4638, yyrl4638 int + var yyrt4638 bool + if yyl4638 > cap(yyv4638) { + + yyrg4638 := len(yyv4638) > 0 + yyv24638 := yyv4638 + yyrl4638, yyrt4638 = z.DecInferLen(yyl4638, z.DecBasicHandle().MaxInitLen, 664) + if yyrt4638 { + if yyrl4638 <= cap(yyv4638) { + yyv4638 = yyv4638[:yyrl4638] + } else { + yyv4638 = make([]Pod, yyrl4638) + } + } else { + yyv4638 = make([]Pod, yyrl4638) + } + yyc4638 = true + yyrr4638 = len(yyv4638) + if yyrg4638 { + copy(yyv4638, yyv24638) + } + } else if yyl4638 != len(yyv4638) { + yyv4638 = yyv4638[:yyl4638] + yyc4638 = true + } + yyj4638 := 0 + for ; yyj4638 < yyrr4638; yyj4638++ { + yyh4638.ElemContainerState(yyj4638) + if r.TryDecodeAsNil() { + yyv4638[yyj4638] = Pod{} + } else { + yyv4639 := &yyv4638[yyj4638] + yyv4639.CodecDecodeSelf(d) + } + + } + if yyrt4638 { + for ; yyj4638 < yyl4638; yyj4638++ { + yyv4638 = append(yyv4638, Pod{}) + yyh4638.ElemContainerState(yyj4638) + if r.TryDecodeAsNil() { + yyv4638[yyj4638] = Pod{} + } else { + yyv4640 := &yyv4638[yyj4638] + yyv4640.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4638 := 0 + for ; !r.CheckBreak(); yyj4638++ { + + if yyj4638 >= len(yyv4638) { + yyv4638 = append(yyv4638, Pod{}) // var yyz4638 Pod + yyc4638 = true + } + yyh4638.ElemContainerState(yyj4638) + if yyj4638 < len(yyv4638) { + if r.TryDecodeAsNil() { + yyv4638[yyj4638] = Pod{} + } else { + yyv4641 := &yyv4638[yyj4638] + yyv4641.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4638 < len(yyv4638) { + yyv4638 = yyv4638[:yyj4638] + yyc4638 = true + } else if yyj4638 == 0 && yyv4638 == nil { + yyv4638 = []Pod{} + yyc4638 = true + } + } + yyh4638.End() + if yyc4638 { + *v = yyv4638 + } +} + +func (x codecSelfer1234) encSlicePodTemplate(v []PodTemplate, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4642 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4643 := &yyv4642 + yy4643.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodTemplate(v *[]PodTemplate, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4644 := *v + yyh4644, yyl4644 := z.DecSliceHelperStart() + var yyc4644 bool + if yyl4644 == 0 { + if yyv4644 == nil { + yyv4644 = []PodTemplate{} + yyc4644 = true + } else if len(yyv4644) != 0 { + yyv4644 = yyv4644[:0] + yyc4644 = true + } + } else if yyl4644 > 0 { + var yyrr4644, yyrl4644 int + var yyrt4644 bool + if yyl4644 > cap(yyv4644) { + + yyrg4644 := len(yyv4644) > 0 + yyv24644 := yyv4644 + yyrl4644, yyrt4644 = z.DecInferLen(yyl4644, z.DecBasicHandle().MaxInitLen, 728) + if yyrt4644 { + if yyrl4644 <= cap(yyv4644) { + yyv4644 = yyv4644[:yyrl4644] + } else { + yyv4644 = make([]PodTemplate, yyrl4644) + } + } else { + yyv4644 = make([]PodTemplate, yyrl4644) + } + yyc4644 = true + yyrr4644 = len(yyv4644) + if yyrg4644 { + copy(yyv4644, yyv24644) + } + } else if yyl4644 != len(yyv4644) { + yyv4644 = yyv4644[:yyl4644] + yyc4644 = true + } + yyj4644 := 0 + for ; yyj4644 < yyrr4644; yyj4644++ { + yyh4644.ElemContainerState(yyj4644) + if r.TryDecodeAsNil() { + yyv4644[yyj4644] = PodTemplate{} + } else { + yyv4645 := &yyv4644[yyj4644] + yyv4645.CodecDecodeSelf(d) + } + + } + if yyrt4644 { + for ; yyj4644 < yyl4644; yyj4644++ { + yyv4644 = append(yyv4644, PodTemplate{}) + yyh4644.ElemContainerState(yyj4644) + if r.TryDecodeAsNil() { + yyv4644[yyj4644] = PodTemplate{} + } else { + yyv4646 := &yyv4644[yyj4644] + yyv4646.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4644 := 0 + for ; !r.CheckBreak(); yyj4644++ { + + if yyj4644 >= len(yyv4644) { + yyv4644 = append(yyv4644, PodTemplate{}) // var yyz4644 PodTemplate + yyc4644 = true + } + yyh4644.ElemContainerState(yyj4644) + if yyj4644 < len(yyv4644) { + if r.TryDecodeAsNil() { + yyv4644[yyj4644] = PodTemplate{} + } else { + yyv4647 := &yyv4644[yyj4644] + yyv4647.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4644 < len(yyv4644) { + yyv4644 = yyv4644[:yyj4644] + yyc4644 = true + } else if yyj4644 == 0 && yyv4644 == nil { + yyv4644 = []PodTemplate{} + yyc4644 = true + } + } + yyh4644.End() + if yyc4644 { + *v = yyv4644 + } +} + +func (x codecSelfer1234) encSliceReplicationController(v []ReplicationController, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4648 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4649 := &yyv4648 + yy4649.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicationController(v *[]ReplicationController, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4650 := *v + yyh4650, yyl4650 := z.DecSliceHelperStart() + var yyc4650 bool + if yyl4650 == 0 { + if yyv4650 == nil { + yyv4650 = []ReplicationController{} + yyc4650 = true + } else if len(yyv4650) != 0 { + yyv4650 = yyv4650[:0] + yyc4650 = true + } + } else if yyl4650 > 0 { + var yyrr4650, yyrl4650 int + var yyrt4650 bool + if yyl4650 > cap(yyv4650) { + + yyrg4650 := len(yyv4650) > 0 + yyv24650 := yyv4650 + yyrl4650, yyrt4650 = z.DecInferLen(yyl4650, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4650 { + if yyrl4650 <= cap(yyv4650) { + yyv4650 = yyv4650[:yyrl4650] + } else { + yyv4650 = make([]ReplicationController, yyrl4650) + } + } else { + yyv4650 = make([]ReplicationController, yyrl4650) + } + yyc4650 = true + yyrr4650 = len(yyv4650) + if yyrg4650 { + copy(yyv4650, yyv24650) + } + } else if yyl4650 != len(yyv4650) { + yyv4650 = yyv4650[:yyl4650] + yyc4650 = true + } + yyj4650 := 0 + for ; yyj4650 < yyrr4650; yyj4650++ { + yyh4650.ElemContainerState(yyj4650) + if r.TryDecodeAsNil() { + yyv4650[yyj4650] = ReplicationController{} + } else { + yyv4651 := &yyv4650[yyj4650] + yyv4651.CodecDecodeSelf(d) + } + + } + if yyrt4650 { + for ; yyj4650 < yyl4650; yyj4650++ { + yyv4650 = append(yyv4650, ReplicationController{}) + yyh4650.ElemContainerState(yyj4650) + if r.TryDecodeAsNil() { + yyv4650[yyj4650] = ReplicationController{} + } else { + yyv4652 := &yyv4650[yyj4650] + yyv4652.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4650 := 0 + for ; !r.CheckBreak(); yyj4650++ { + + if yyj4650 >= len(yyv4650) { + yyv4650 = append(yyv4650, ReplicationController{}) // var yyz4650 ReplicationController + yyc4650 = true + } + yyh4650.ElemContainerState(yyj4650) + if yyj4650 < len(yyv4650) { + if r.TryDecodeAsNil() { + yyv4650[yyj4650] = ReplicationController{} + } else { + yyv4653 := &yyv4650[yyj4650] + yyv4653.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4650 < len(yyv4650) { + yyv4650 = yyv4650[:yyj4650] + yyc4650 = true + } else if yyj4650 == 0 && yyv4650 == nil { + yyv4650 = []ReplicationController{} + yyc4650 = true + } + } + yyh4650.End() + if yyc4650 { + *v = yyv4650 + } +} + +func (x codecSelfer1234) encSliceLoadBalancerIngress(v []LoadBalancerIngress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4654 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4655 := &yyv4654 + yy4655.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLoadBalancerIngress(v *[]LoadBalancerIngress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4656 := *v + yyh4656, yyl4656 := z.DecSliceHelperStart() + var yyc4656 bool + if yyl4656 == 0 { + if yyv4656 == nil { + yyv4656 = []LoadBalancerIngress{} + yyc4656 = true + } else if len(yyv4656) != 0 { + yyv4656 = yyv4656[:0] + yyc4656 = true + } + } else if yyl4656 > 0 { + var yyrr4656, yyrl4656 int + var yyrt4656 bool + if yyl4656 > cap(yyv4656) { + + yyrg4656 := len(yyv4656) > 0 + yyv24656 := yyv4656 + yyrl4656, yyrt4656 = z.DecInferLen(yyl4656, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4656 { + if yyrl4656 <= cap(yyv4656) { + yyv4656 = yyv4656[:yyrl4656] + } else { + yyv4656 = make([]LoadBalancerIngress, yyrl4656) + } + } else { + yyv4656 = make([]LoadBalancerIngress, yyrl4656) + } + yyc4656 = true + yyrr4656 = len(yyv4656) + if yyrg4656 { + copy(yyv4656, yyv24656) + } + } else if yyl4656 != len(yyv4656) { + yyv4656 = yyv4656[:yyl4656] + yyc4656 = true + } + yyj4656 := 0 + for ; yyj4656 < yyrr4656; yyj4656++ { + yyh4656.ElemContainerState(yyj4656) + if r.TryDecodeAsNil() { + yyv4656[yyj4656] = LoadBalancerIngress{} + } else { + yyv4657 := &yyv4656[yyj4656] + yyv4657.CodecDecodeSelf(d) + } + + } + if yyrt4656 { + for ; yyj4656 < yyl4656; yyj4656++ { + yyv4656 = append(yyv4656, LoadBalancerIngress{}) + yyh4656.ElemContainerState(yyj4656) + if r.TryDecodeAsNil() { + yyv4656[yyj4656] = LoadBalancerIngress{} + } else { + yyv4658 := &yyv4656[yyj4656] + yyv4658.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4656 := 0 + for ; !r.CheckBreak(); yyj4656++ { + + if yyj4656 >= len(yyv4656) { + yyv4656 = append(yyv4656, LoadBalancerIngress{}) // var yyz4656 LoadBalancerIngress + yyc4656 = true + } + yyh4656.ElemContainerState(yyj4656) + if yyj4656 < len(yyv4656) { + if r.TryDecodeAsNil() { + yyv4656[yyj4656] = LoadBalancerIngress{} + } else { + yyv4659 := &yyv4656[yyj4656] + yyv4659.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4656 < len(yyv4656) { + yyv4656 = yyv4656[:yyj4656] + yyc4656 = true + } else if yyj4656 == 0 && yyv4656 == nil { + yyv4656 = []LoadBalancerIngress{} + yyc4656 = true + } + } + yyh4656.End() + if yyc4656 { + *v = yyv4656 + } +} + +func (x codecSelfer1234) encSliceServicePort(v []ServicePort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4660 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4661 := &yyv4660 + yy4661.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServicePort(v *[]ServicePort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4662 := *v + yyh4662, yyl4662 := z.DecSliceHelperStart() + var yyc4662 bool + if yyl4662 == 0 { + if yyv4662 == nil { + yyv4662 = []ServicePort{} + yyc4662 = true + } else if len(yyv4662) != 0 { + yyv4662 = yyv4662[:0] + yyc4662 = true + } + } else if yyl4662 > 0 { + var yyrr4662, yyrl4662 int + var yyrt4662 bool + if yyl4662 > cap(yyv4662) { + + yyrg4662 := len(yyv4662) > 0 + yyv24662 := yyv4662 + yyrl4662, yyrt4662 = z.DecInferLen(yyl4662, z.DecBasicHandle().MaxInitLen, 80) + if yyrt4662 { + if yyrl4662 <= cap(yyv4662) { + yyv4662 = yyv4662[:yyrl4662] + } else { + yyv4662 = make([]ServicePort, yyrl4662) + } + } else { + yyv4662 = make([]ServicePort, yyrl4662) + } + yyc4662 = true + yyrr4662 = len(yyv4662) + if yyrg4662 { + copy(yyv4662, yyv24662) + } + } else if yyl4662 != len(yyv4662) { + yyv4662 = yyv4662[:yyl4662] + yyc4662 = true + } + yyj4662 := 0 + for ; yyj4662 < yyrr4662; yyj4662++ { + yyh4662.ElemContainerState(yyj4662) + if r.TryDecodeAsNil() { + yyv4662[yyj4662] = ServicePort{} + } else { + yyv4663 := &yyv4662[yyj4662] + yyv4663.CodecDecodeSelf(d) + } + + } + if yyrt4662 { + for ; yyj4662 < yyl4662; yyj4662++ { + yyv4662 = append(yyv4662, ServicePort{}) + yyh4662.ElemContainerState(yyj4662) + if r.TryDecodeAsNil() { + yyv4662[yyj4662] = ServicePort{} + } else { + yyv4664 := &yyv4662[yyj4662] + yyv4664.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4662 := 0 + for ; !r.CheckBreak(); yyj4662++ { + + if yyj4662 >= len(yyv4662) { + yyv4662 = append(yyv4662, ServicePort{}) // var yyz4662 ServicePort + yyc4662 = true + } + yyh4662.ElemContainerState(yyj4662) + if yyj4662 < len(yyv4662) { + if r.TryDecodeAsNil() { + yyv4662[yyj4662] = ServicePort{} + } else { + yyv4665 := &yyv4662[yyj4662] + yyv4665.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4662 < len(yyv4662) { + yyv4662 = yyv4662[:yyj4662] + yyc4662 = true + } else if yyj4662 == 0 && yyv4662 == nil { + yyv4662 = []ServicePort{} + yyc4662 = true + } + } + yyh4662.End() + if yyc4662 { + *v = yyv4662 + } +} + +func (x codecSelfer1234) encSliceService(v []Service, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4666 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4667 := &yyv4666 + yy4667.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceService(v *[]Service, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4668 := *v + yyh4668, yyl4668 := z.DecSliceHelperStart() + var yyc4668 bool + if yyl4668 == 0 { + if yyv4668 == nil { + yyv4668 = []Service{} + yyc4668 = true + } else if len(yyv4668) != 0 { + yyv4668 = yyv4668[:0] + yyc4668 = true + } + } else if yyl4668 > 0 { + var yyrr4668, yyrl4668 int + var yyrt4668 bool + if yyl4668 > cap(yyv4668) { + + yyrg4668 := len(yyv4668) > 0 + yyv24668 := yyv4668 + yyrl4668, yyrt4668 = z.DecInferLen(yyl4668, z.DecBasicHandle().MaxInitLen, 464) + if yyrt4668 { + if yyrl4668 <= cap(yyv4668) { + yyv4668 = yyv4668[:yyrl4668] + } else { + yyv4668 = make([]Service, yyrl4668) + } + } else { + yyv4668 = make([]Service, yyrl4668) + } + yyc4668 = true + yyrr4668 = len(yyv4668) + if yyrg4668 { + copy(yyv4668, yyv24668) + } + } else if yyl4668 != len(yyv4668) { + yyv4668 = yyv4668[:yyl4668] + yyc4668 = true + } + yyj4668 := 0 + for ; yyj4668 < yyrr4668; yyj4668++ { + yyh4668.ElemContainerState(yyj4668) + if r.TryDecodeAsNil() { + yyv4668[yyj4668] = Service{} + } else { + yyv4669 := &yyv4668[yyj4668] + yyv4669.CodecDecodeSelf(d) + } + + } + if yyrt4668 { + for ; yyj4668 < yyl4668; yyj4668++ { + yyv4668 = append(yyv4668, Service{}) + yyh4668.ElemContainerState(yyj4668) + if r.TryDecodeAsNil() { + yyv4668[yyj4668] = Service{} + } else { + yyv4670 := &yyv4668[yyj4668] + yyv4670.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4668 := 0 + for ; !r.CheckBreak(); yyj4668++ { + + if yyj4668 >= len(yyv4668) { + yyv4668 = append(yyv4668, Service{}) // var yyz4668 Service + yyc4668 = true + } + yyh4668.ElemContainerState(yyj4668) + if yyj4668 < len(yyv4668) { + if r.TryDecodeAsNil() { + yyv4668[yyj4668] = Service{} + } else { + yyv4671 := &yyv4668[yyj4668] + yyv4671.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4668 < len(yyv4668) { + yyv4668 = yyv4668[:yyj4668] + yyc4668 = true + } else if yyj4668 == 0 && yyv4668 == nil { + yyv4668 = []Service{} + yyc4668 = true + } + } + yyh4668.End() + if yyc4668 { + *v = yyv4668 + } +} + +func (x codecSelfer1234) encSliceObjectReference(v []ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4672 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4673 := &yyv4672 + yy4673.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceObjectReference(v *[]ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4674 := *v + yyh4674, yyl4674 := z.DecSliceHelperStart() + var yyc4674 bool + if yyl4674 == 0 { + if yyv4674 == nil { + yyv4674 = []ObjectReference{} + yyc4674 = true + } else if len(yyv4674) != 0 { + yyv4674 = yyv4674[:0] + yyc4674 = true + } + } else if yyl4674 > 0 { + var yyrr4674, yyrl4674 int + var yyrt4674 bool + if yyl4674 > cap(yyv4674) { + + yyrg4674 := len(yyv4674) > 0 + yyv24674 := yyv4674 + yyrl4674, yyrt4674 = z.DecInferLen(yyl4674, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4674 { + if yyrl4674 <= cap(yyv4674) { + yyv4674 = yyv4674[:yyrl4674] + } else { + yyv4674 = make([]ObjectReference, yyrl4674) + } + } else { + yyv4674 = make([]ObjectReference, yyrl4674) + } + yyc4674 = true + yyrr4674 = len(yyv4674) + if yyrg4674 { + copy(yyv4674, yyv24674) + } + } else if yyl4674 != len(yyv4674) { + yyv4674 = yyv4674[:yyl4674] + yyc4674 = true + } + yyj4674 := 0 + for ; yyj4674 < yyrr4674; yyj4674++ { + yyh4674.ElemContainerState(yyj4674) + if r.TryDecodeAsNil() { + yyv4674[yyj4674] = ObjectReference{} + } else { + yyv4675 := &yyv4674[yyj4674] + yyv4675.CodecDecodeSelf(d) + } + + } + if yyrt4674 { + for ; yyj4674 < yyl4674; yyj4674++ { + yyv4674 = append(yyv4674, ObjectReference{}) + yyh4674.ElemContainerState(yyj4674) + if r.TryDecodeAsNil() { + yyv4674[yyj4674] = ObjectReference{} + } else { + yyv4676 := &yyv4674[yyj4674] + yyv4676.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4674 := 0 + for ; !r.CheckBreak(); yyj4674++ { + + if yyj4674 >= len(yyv4674) { + yyv4674 = append(yyv4674, ObjectReference{}) // var yyz4674 ObjectReference + yyc4674 = true + } + yyh4674.ElemContainerState(yyj4674) + if yyj4674 < len(yyv4674) { + if r.TryDecodeAsNil() { + yyv4674[yyj4674] = ObjectReference{} + } else { + yyv4677 := &yyv4674[yyj4674] + yyv4677.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4674 < len(yyv4674) { + yyv4674 = yyv4674[:yyj4674] + yyc4674 = true + } else if yyj4674 == 0 && yyv4674 == nil { + yyv4674 = []ObjectReference{} + yyc4674 = true + } + } + yyh4674.End() + if yyc4674 { + *v = yyv4674 + } +} + +func (x codecSelfer1234) encSliceServiceAccount(v []ServiceAccount, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4678 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4679 := &yyv4678 + yy4679.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceServiceAccount(v *[]ServiceAccount, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4680 := *v + yyh4680, yyl4680 := z.DecSliceHelperStart() + var yyc4680 bool + if yyl4680 == 0 { + if yyv4680 == nil { + yyv4680 = []ServiceAccount{} + yyc4680 = true + } else if len(yyv4680) != 0 { + yyv4680 = yyv4680[:0] + yyc4680 = true + } + } else if yyl4680 > 0 { + var yyrr4680, yyrl4680 int + var yyrt4680 bool + if yyl4680 > cap(yyv4680) { + + yyrg4680 := len(yyv4680) > 0 + yyv24680 := yyv4680 + yyrl4680, yyrt4680 = z.DecInferLen(yyl4680, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4680 { + if yyrl4680 <= cap(yyv4680) { + yyv4680 = yyv4680[:yyrl4680] + } else { + yyv4680 = make([]ServiceAccount, yyrl4680) + } + } else { + yyv4680 = make([]ServiceAccount, yyrl4680) + } + yyc4680 = true + yyrr4680 = len(yyv4680) + if yyrg4680 { + copy(yyv4680, yyv24680) + } + } else if yyl4680 != len(yyv4680) { + yyv4680 = yyv4680[:yyl4680] + yyc4680 = true + } + yyj4680 := 0 + for ; yyj4680 < yyrr4680; yyj4680++ { + yyh4680.ElemContainerState(yyj4680) + if r.TryDecodeAsNil() { + yyv4680[yyj4680] = ServiceAccount{} + } else { + yyv4681 := &yyv4680[yyj4680] + yyv4681.CodecDecodeSelf(d) + } + + } + if yyrt4680 { + for ; yyj4680 < yyl4680; yyj4680++ { + yyv4680 = append(yyv4680, ServiceAccount{}) + yyh4680.ElemContainerState(yyj4680) + if r.TryDecodeAsNil() { + yyv4680[yyj4680] = ServiceAccount{} + } else { + yyv4682 := &yyv4680[yyj4680] + yyv4682.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4680 := 0 + for ; !r.CheckBreak(); yyj4680++ { + + if yyj4680 >= len(yyv4680) { + yyv4680 = append(yyv4680, ServiceAccount{}) // var yyz4680 ServiceAccount + yyc4680 = true + } + yyh4680.ElemContainerState(yyj4680) + if yyj4680 < len(yyv4680) { + if r.TryDecodeAsNil() { + yyv4680[yyj4680] = ServiceAccount{} + } else { + yyv4683 := &yyv4680[yyj4680] + yyv4683.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4680 < len(yyv4680) { + yyv4680 = yyv4680[:yyj4680] + yyc4680 = true + } else if yyj4680 == 0 && yyv4680 == nil { + yyv4680 = []ServiceAccount{} + yyc4680 = true + } + } + yyh4680.End() + if yyc4680 { + *v = yyv4680 + } +} + +func (x codecSelfer1234) encSliceEndpointSubset(v []EndpointSubset, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4684 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4685 := &yyv4684 + yy4685.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointSubset(v *[]EndpointSubset, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4686 := *v + yyh4686, yyl4686 := z.DecSliceHelperStart() + var yyc4686 bool + if yyl4686 == 0 { + if yyv4686 == nil { + yyv4686 = []EndpointSubset{} + yyc4686 = true + } else if len(yyv4686) != 0 { + yyv4686 = yyv4686[:0] + yyc4686 = true + } + } else if yyl4686 > 0 { + var yyrr4686, yyrl4686 int + var yyrt4686 bool + if yyl4686 > cap(yyv4686) { + + yyrg4686 := len(yyv4686) > 0 + yyv24686 := yyv4686 + yyrl4686, yyrt4686 = z.DecInferLen(yyl4686, z.DecBasicHandle().MaxInitLen, 72) + if yyrt4686 { + if yyrl4686 <= cap(yyv4686) { + yyv4686 = yyv4686[:yyrl4686] + } else { + yyv4686 = make([]EndpointSubset, yyrl4686) + } + } else { + yyv4686 = make([]EndpointSubset, yyrl4686) + } + yyc4686 = true + yyrr4686 = len(yyv4686) + if yyrg4686 { + copy(yyv4686, yyv24686) + } + } else if yyl4686 != len(yyv4686) { + yyv4686 = yyv4686[:yyl4686] + yyc4686 = true + } + yyj4686 := 0 + for ; yyj4686 < yyrr4686; yyj4686++ { + yyh4686.ElemContainerState(yyj4686) + if r.TryDecodeAsNil() { + yyv4686[yyj4686] = EndpointSubset{} + } else { + yyv4687 := &yyv4686[yyj4686] + yyv4687.CodecDecodeSelf(d) + } + + } + if yyrt4686 { + for ; yyj4686 < yyl4686; yyj4686++ { + yyv4686 = append(yyv4686, EndpointSubset{}) + yyh4686.ElemContainerState(yyj4686) + if r.TryDecodeAsNil() { + yyv4686[yyj4686] = EndpointSubset{} + } else { + yyv4688 := &yyv4686[yyj4686] + yyv4688.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4686 := 0 + for ; !r.CheckBreak(); yyj4686++ { + + if yyj4686 >= len(yyv4686) { + yyv4686 = append(yyv4686, EndpointSubset{}) // var yyz4686 EndpointSubset + yyc4686 = true + } + yyh4686.ElemContainerState(yyj4686) + if yyj4686 < len(yyv4686) { + if r.TryDecodeAsNil() { + yyv4686[yyj4686] = EndpointSubset{} + } else { + yyv4689 := &yyv4686[yyj4686] + yyv4689.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4686 < len(yyv4686) { + yyv4686 = yyv4686[:yyj4686] + yyc4686 = true + } else if yyj4686 == 0 && yyv4686 == nil { + yyv4686 = []EndpointSubset{} + yyc4686 = true + } + } + yyh4686.End() + if yyc4686 { + *v = yyv4686 + } +} + +func (x codecSelfer1234) encSliceEndpointAddress(v []EndpointAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4690 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4691 := &yyv4690 + yy4691.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointAddress(v *[]EndpointAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4692 := *v + yyh4692, yyl4692 := z.DecSliceHelperStart() + var yyc4692 bool + if yyl4692 == 0 { + if yyv4692 == nil { + yyv4692 = []EndpointAddress{} + yyc4692 = true + } else if len(yyv4692) != 0 { + yyv4692 = yyv4692[:0] + yyc4692 = true + } + } else if yyl4692 > 0 { + var yyrr4692, yyrl4692 int + var yyrt4692 bool + if yyl4692 > cap(yyv4692) { + + yyrg4692 := len(yyv4692) > 0 + yyv24692 := yyv4692 + yyrl4692, yyrt4692 = z.DecInferLen(yyl4692, z.DecBasicHandle().MaxInitLen, 48) + if yyrt4692 { + if yyrl4692 <= cap(yyv4692) { + yyv4692 = yyv4692[:yyrl4692] + } else { + yyv4692 = make([]EndpointAddress, yyrl4692) + } + } else { + yyv4692 = make([]EndpointAddress, yyrl4692) + } + yyc4692 = true + yyrr4692 = len(yyv4692) + if yyrg4692 { + copy(yyv4692, yyv24692) + } + } else if yyl4692 != len(yyv4692) { + yyv4692 = yyv4692[:yyl4692] + yyc4692 = true + } + yyj4692 := 0 + for ; yyj4692 < yyrr4692; yyj4692++ { + yyh4692.ElemContainerState(yyj4692) + if r.TryDecodeAsNil() { + yyv4692[yyj4692] = EndpointAddress{} + } else { + yyv4693 := &yyv4692[yyj4692] + yyv4693.CodecDecodeSelf(d) + } + + } + if yyrt4692 { + for ; yyj4692 < yyl4692; yyj4692++ { + yyv4692 = append(yyv4692, EndpointAddress{}) + yyh4692.ElemContainerState(yyj4692) + if r.TryDecodeAsNil() { + yyv4692[yyj4692] = EndpointAddress{} + } else { + yyv4694 := &yyv4692[yyj4692] + yyv4694.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4692 := 0 + for ; !r.CheckBreak(); yyj4692++ { + + if yyj4692 >= len(yyv4692) { + yyv4692 = append(yyv4692, EndpointAddress{}) // var yyz4692 EndpointAddress + yyc4692 = true + } + yyh4692.ElemContainerState(yyj4692) + if yyj4692 < len(yyv4692) { + if r.TryDecodeAsNil() { + yyv4692[yyj4692] = EndpointAddress{} + } else { + yyv4695 := &yyv4692[yyj4692] + yyv4695.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4692 < len(yyv4692) { + yyv4692 = yyv4692[:yyj4692] + yyc4692 = true + } else if yyj4692 == 0 && yyv4692 == nil { + yyv4692 = []EndpointAddress{} + yyc4692 = true + } + } + yyh4692.End() + if yyc4692 { + *v = yyv4692 + } +} + +func (x codecSelfer1234) encSliceEndpointPort(v []EndpointPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4696 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4697 := &yyv4696 + yy4697.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpointPort(v *[]EndpointPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4698 := *v + yyh4698, yyl4698 := z.DecSliceHelperStart() + var yyc4698 bool + if yyl4698 == 0 { + if yyv4698 == nil { + yyv4698 = []EndpointPort{} + yyc4698 = true + } else if len(yyv4698) != 0 { + yyv4698 = yyv4698[:0] + yyc4698 = true + } + } else if yyl4698 > 0 { + var yyrr4698, yyrl4698 int + var yyrt4698 bool + if yyl4698 > cap(yyv4698) { + + yyrg4698 := len(yyv4698) > 0 + yyv24698 := yyv4698 + yyrl4698, yyrt4698 = z.DecInferLen(yyl4698, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4698 { + if yyrl4698 <= cap(yyv4698) { + yyv4698 = yyv4698[:yyrl4698] + } else { + yyv4698 = make([]EndpointPort, yyrl4698) + } + } else { + yyv4698 = make([]EndpointPort, yyrl4698) + } + yyc4698 = true + yyrr4698 = len(yyv4698) + if yyrg4698 { + copy(yyv4698, yyv24698) + } + } else if yyl4698 != len(yyv4698) { + yyv4698 = yyv4698[:yyl4698] + yyc4698 = true + } + yyj4698 := 0 + for ; yyj4698 < yyrr4698; yyj4698++ { + yyh4698.ElemContainerState(yyj4698) + if r.TryDecodeAsNil() { + yyv4698[yyj4698] = EndpointPort{} + } else { + yyv4699 := &yyv4698[yyj4698] + yyv4699.CodecDecodeSelf(d) + } + + } + if yyrt4698 { + for ; yyj4698 < yyl4698; yyj4698++ { + yyv4698 = append(yyv4698, EndpointPort{}) + yyh4698.ElemContainerState(yyj4698) + if r.TryDecodeAsNil() { + yyv4698[yyj4698] = EndpointPort{} + } else { + yyv4700 := &yyv4698[yyj4698] + yyv4700.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4698 := 0 + for ; !r.CheckBreak(); yyj4698++ { + + if yyj4698 >= len(yyv4698) { + yyv4698 = append(yyv4698, EndpointPort{}) // var yyz4698 EndpointPort + yyc4698 = true + } + yyh4698.ElemContainerState(yyj4698) + if yyj4698 < len(yyv4698) { + if r.TryDecodeAsNil() { + yyv4698[yyj4698] = EndpointPort{} + } else { + yyv4701 := &yyv4698[yyj4698] + yyv4701.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4698 < len(yyv4698) { + yyv4698 = yyv4698[:yyj4698] + yyc4698 = true + } else if yyj4698 == 0 && yyv4698 == nil { + yyv4698 = []EndpointPort{} + yyc4698 = true + } + } + yyh4698.End() + if yyc4698 { + *v = yyv4698 + } +} + +func (x codecSelfer1234) encSliceEndpoints(v []Endpoints, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4702 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4703 := &yyv4702 + yy4703.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEndpoints(v *[]Endpoints, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4704 := *v + yyh4704, yyl4704 := z.DecSliceHelperStart() + var yyc4704 bool + if yyl4704 == 0 { + if yyv4704 == nil { + yyv4704 = []Endpoints{} + yyc4704 = true + } else if len(yyv4704) != 0 { + yyv4704 = yyv4704[:0] + yyc4704 = true + } + } else if yyl4704 > 0 { + var yyrr4704, yyrl4704 int + var yyrt4704 bool + if yyl4704 > cap(yyv4704) { + + yyrg4704 := len(yyv4704) > 0 + yyv24704 := yyv4704 + yyrl4704, yyrt4704 = z.DecInferLen(yyl4704, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4704 { + if yyrl4704 <= cap(yyv4704) { + yyv4704 = yyv4704[:yyrl4704] + } else { + yyv4704 = make([]Endpoints, yyrl4704) + } + } else { + yyv4704 = make([]Endpoints, yyrl4704) + } + yyc4704 = true + yyrr4704 = len(yyv4704) + if yyrg4704 { + copy(yyv4704, yyv24704) + } + } else if yyl4704 != len(yyv4704) { + yyv4704 = yyv4704[:yyl4704] + yyc4704 = true + } + yyj4704 := 0 + for ; yyj4704 < yyrr4704; yyj4704++ { + yyh4704.ElemContainerState(yyj4704) + if r.TryDecodeAsNil() { + yyv4704[yyj4704] = Endpoints{} + } else { + yyv4705 := &yyv4704[yyj4704] + yyv4705.CodecDecodeSelf(d) + } + + } + if yyrt4704 { + for ; yyj4704 < yyl4704; yyj4704++ { + yyv4704 = append(yyv4704, Endpoints{}) + yyh4704.ElemContainerState(yyj4704) + if r.TryDecodeAsNil() { + yyv4704[yyj4704] = Endpoints{} + } else { + yyv4706 := &yyv4704[yyj4704] + yyv4706.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4704 := 0 + for ; !r.CheckBreak(); yyj4704++ { + + if yyj4704 >= len(yyv4704) { + yyv4704 = append(yyv4704, Endpoints{}) // var yyz4704 Endpoints + yyc4704 = true + } + yyh4704.ElemContainerState(yyj4704) + if yyj4704 < len(yyv4704) { + if r.TryDecodeAsNil() { + yyv4704[yyj4704] = Endpoints{} + } else { + yyv4707 := &yyv4704[yyj4704] + yyv4707.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4704 < len(yyv4704) { + yyv4704 = yyv4704[:yyj4704] + yyc4704 = true + } else if yyj4704 == 0 && yyv4704 == nil { + yyv4704 = []Endpoints{} + yyc4704 = true + } + } + yyh4704.End() + if yyc4704 { + *v = yyv4704 + } +} + +func (x codecSelfer1234) encSliceNodeCondition(v []NodeCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4708 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4709 := &yyv4708 + yy4709.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeCondition(v *[]NodeCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4710 := *v + yyh4710, yyl4710 := z.DecSliceHelperStart() + var yyc4710 bool + if yyl4710 == 0 { + if yyv4710 == nil { + yyv4710 = []NodeCondition{} + yyc4710 = true + } else if len(yyv4710) != 0 { + yyv4710 = yyv4710[:0] + yyc4710 = true + } + } else if yyl4710 > 0 { + var yyrr4710, yyrl4710 int + var yyrt4710 bool + if yyl4710 > cap(yyv4710) { + + yyrg4710 := len(yyv4710) > 0 + yyv24710 := yyv4710 + yyrl4710, yyrt4710 = z.DecInferLen(yyl4710, z.DecBasicHandle().MaxInitLen, 112) + if yyrt4710 { + if yyrl4710 <= cap(yyv4710) { + yyv4710 = yyv4710[:yyrl4710] + } else { + yyv4710 = make([]NodeCondition, yyrl4710) + } + } else { + yyv4710 = make([]NodeCondition, yyrl4710) + } + yyc4710 = true + yyrr4710 = len(yyv4710) + if yyrg4710 { + copy(yyv4710, yyv24710) + } + } else if yyl4710 != len(yyv4710) { + yyv4710 = yyv4710[:yyl4710] + yyc4710 = true + } + yyj4710 := 0 + for ; yyj4710 < yyrr4710; yyj4710++ { + yyh4710.ElemContainerState(yyj4710) + if r.TryDecodeAsNil() { + yyv4710[yyj4710] = NodeCondition{} + } else { + yyv4711 := &yyv4710[yyj4710] + yyv4711.CodecDecodeSelf(d) + } + + } + if yyrt4710 { + for ; yyj4710 < yyl4710; yyj4710++ { + yyv4710 = append(yyv4710, NodeCondition{}) + yyh4710.ElemContainerState(yyj4710) + if r.TryDecodeAsNil() { + yyv4710[yyj4710] = NodeCondition{} + } else { + yyv4712 := &yyv4710[yyj4710] + yyv4712.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4710 := 0 + for ; !r.CheckBreak(); yyj4710++ { + + if yyj4710 >= len(yyv4710) { + yyv4710 = append(yyv4710, NodeCondition{}) // var yyz4710 NodeCondition + yyc4710 = true + } + yyh4710.ElemContainerState(yyj4710) + if yyj4710 < len(yyv4710) { + if r.TryDecodeAsNil() { + yyv4710[yyj4710] = NodeCondition{} + } else { + yyv4713 := &yyv4710[yyj4710] + yyv4713.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4710 < len(yyv4710) { + yyv4710 = yyv4710[:yyj4710] + yyc4710 = true + } else if yyj4710 == 0 && yyv4710 == nil { + yyv4710 = []NodeCondition{} + yyc4710 = true + } + } + yyh4710.End() + if yyc4710 { + *v = yyv4710 + } +} + +func (x codecSelfer1234) encSliceNodeAddress(v []NodeAddress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4714 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4715 := &yyv4714 + yy4715.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNodeAddress(v *[]NodeAddress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4716 := *v + yyh4716, yyl4716 := z.DecSliceHelperStart() + var yyc4716 bool + if yyl4716 == 0 { + if yyv4716 == nil { + yyv4716 = []NodeAddress{} + yyc4716 = true + } else if len(yyv4716) != 0 { + yyv4716 = yyv4716[:0] + yyc4716 = true + } + } else if yyl4716 > 0 { + var yyrr4716, yyrl4716 int + var yyrt4716 bool + if yyl4716 > cap(yyv4716) { + + yyrg4716 := len(yyv4716) > 0 + yyv24716 := yyv4716 + yyrl4716, yyrt4716 = z.DecInferLen(yyl4716, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4716 { + if yyrl4716 <= cap(yyv4716) { + yyv4716 = yyv4716[:yyrl4716] + } else { + yyv4716 = make([]NodeAddress, yyrl4716) + } + } else { + yyv4716 = make([]NodeAddress, yyrl4716) + } + yyc4716 = true + yyrr4716 = len(yyv4716) + if yyrg4716 { + copy(yyv4716, yyv24716) + } + } else if yyl4716 != len(yyv4716) { + yyv4716 = yyv4716[:yyl4716] + yyc4716 = true + } + yyj4716 := 0 + for ; yyj4716 < yyrr4716; yyj4716++ { + yyh4716.ElemContainerState(yyj4716) + if r.TryDecodeAsNil() { + yyv4716[yyj4716] = NodeAddress{} + } else { + yyv4717 := &yyv4716[yyj4716] + yyv4717.CodecDecodeSelf(d) + } + + } + if yyrt4716 { + for ; yyj4716 < yyl4716; yyj4716++ { + yyv4716 = append(yyv4716, NodeAddress{}) + yyh4716.ElemContainerState(yyj4716) + if r.TryDecodeAsNil() { + yyv4716[yyj4716] = NodeAddress{} + } else { + yyv4718 := &yyv4716[yyj4716] + yyv4718.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4716 := 0 + for ; !r.CheckBreak(); yyj4716++ { + + if yyj4716 >= len(yyv4716) { + yyv4716 = append(yyv4716, NodeAddress{}) // var yyz4716 NodeAddress + yyc4716 = true + } + yyh4716.ElemContainerState(yyj4716) + if yyj4716 < len(yyv4716) { + if r.TryDecodeAsNil() { + yyv4716[yyj4716] = NodeAddress{} + } else { + yyv4719 := &yyv4716[yyj4716] + yyv4719.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4716 < len(yyv4716) { + yyv4716 = yyv4716[:yyj4716] + yyc4716 = true + } else if yyj4716 == 0 && yyv4716 == nil { + yyv4716 = []NodeAddress{} + yyc4716 = true + } + } + yyh4716.End() + if yyc4716 { + *v = yyv4716 + } +} + +func (x codecSelfer1234) encSliceContainerImage(v []ContainerImage, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4720 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4721 := &yyv4720 + yy4721.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceContainerImage(v *[]ContainerImage, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4722 := *v + yyh4722, yyl4722 := z.DecSliceHelperStart() + var yyc4722 bool + if yyl4722 == 0 { + if yyv4722 == nil { + yyv4722 = []ContainerImage{} + yyc4722 = true + } else if len(yyv4722) != 0 { + yyv4722 = yyv4722[:0] + yyc4722 = true + } + } else if yyl4722 > 0 { + var yyrr4722, yyrl4722 int + var yyrt4722 bool + if yyl4722 > cap(yyv4722) { + + yyrg4722 := len(yyv4722) > 0 + yyv24722 := yyv4722 + yyrl4722, yyrt4722 = z.DecInferLen(yyl4722, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4722 { + if yyrl4722 <= cap(yyv4722) { + yyv4722 = yyv4722[:yyrl4722] + } else { + yyv4722 = make([]ContainerImage, yyrl4722) + } + } else { + yyv4722 = make([]ContainerImage, yyrl4722) + } + yyc4722 = true + yyrr4722 = len(yyv4722) + if yyrg4722 { + copy(yyv4722, yyv24722) + } + } else if yyl4722 != len(yyv4722) { + yyv4722 = yyv4722[:yyl4722] + yyc4722 = true + } + yyj4722 := 0 + for ; yyj4722 < yyrr4722; yyj4722++ { + yyh4722.ElemContainerState(yyj4722) + if r.TryDecodeAsNil() { + yyv4722[yyj4722] = ContainerImage{} + } else { + yyv4723 := &yyv4722[yyj4722] + yyv4723.CodecDecodeSelf(d) + } + + } + if yyrt4722 { + for ; yyj4722 < yyl4722; yyj4722++ { + yyv4722 = append(yyv4722, ContainerImage{}) + yyh4722.ElemContainerState(yyj4722) + if r.TryDecodeAsNil() { + yyv4722[yyj4722] = ContainerImage{} + } else { + yyv4724 := &yyv4722[yyj4722] + yyv4724.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4722 := 0 + for ; !r.CheckBreak(); yyj4722++ { + + if yyj4722 >= len(yyv4722) { + yyv4722 = append(yyv4722, ContainerImage{}) // var yyz4722 ContainerImage + yyc4722 = true + } + yyh4722.ElemContainerState(yyj4722) + if yyj4722 < len(yyv4722) { + if r.TryDecodeAsNil() { + yyv4722[yyj4722] = ContainerImage{} + } else { + yyv4725 := &yyv4722[yyj4722] + yyv4725.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4722 < len(yyv4722) { + yyv4722 = yyv4722[:yyj4722] + yyc4722 = true + } else if yyj4722 == 0 && yyv4722 == nil { + yyv4722 = []ContainerImage{} + yyc4722 = true + } + } + yyh4722.End() + if yyc4722 { + *v = yyv4722 + } +} + +func (x codecSelfer1234) encSliceUniqueVolumeName(v []UniqueVolumeName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4726 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4726.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceUniqueVolumeName(v *[]UniqueVolumeName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4727 := *v + yyh4727, yyl4727 := z.DecSliceHelperStart() + var yyc4727 bool + if yyl4727 == 0 { + if yyv4727 == nil { + yyv4727 = []UniqueVolumeName{} + yyc4727 = true + } else if len(yyv4727) != 0 { + yyv4727 = yyv4727[:0] + yyc4727 = true + } + } else if yyl4727 > 0 { + var yyrr4727, yyrl4727 int + var yyrt4727 bool + if yyl4727 > cap(yyv4727) { + + yyrl4727, yyrt4727 = z.DecInferLen(yyl4727, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4727 { + if yyrl4727 <= cap(yyv4727) { + yyv4727 = yyv4727[:yyrl4727] + } else { + yyv4727 = make([]UniqueVolumeName, yyrl4727) + } + } else { + yyv4727 = make([]UniqueVolumeName, yyrl4727) + } + yyc4727 = true + yyrr4727 = len(yyv4727) + } else if yyl4727 != len(yyv4727) { + yyv4727 = yyv4727[:yyl4727] + yyc4727 = true + } + yyj4727 := 0 + for ; yyj4727 < yyrr4727; yyj4727++ { + yyh4727.ElemContainerState(yyj4727) + if r.TryDecodeAsNil() { + yyv4727[yyj4727] = "" + } else { + yyv4727[yyj4727] = UniqueVolumeName(r.DecodeString()) + } + + } + if yyrt4727 { + for ; yyj4727 < yyl4727; yyj4727++ { + yyv4727 = append(yyv4727, "") + yyh4727.ElemContainerState(yyj4727) + if r.TryDecodeAsNil() { + yyv4727[yyj4727] = "" + } else { + yyv4727[yyj4727] = UniqueVolumeName(r.DecodeString()) + } + + } + } + + } else { + yyj4727 := 0 + for ; !r.CheckBreak(); yyj4727++ { + + if yyj4727 >= len(yyv4727) { + yyv4727 = append(yyv4727, "") // var yyz4727 UniqueVolumeName + yyc4727 = true + } + yyh4727.ElemContainerState(yyj4727) + if yyj4727 < len(yyv4727) { + if r.TryDecodeAsNil() { + yyv4727[yyj4727] = "" + } else { + yyv4727[yyj4727] = UniqueVolumeName(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4727 < len(yyv4727) { + yyv4727 = yyv4727[:yyj4727] + yyc4727 = true + } else if yyj4727 == 0 && yyv4727 == nil { + yyv4727 = []UniqueVolumeName{} + yyc4727 = true + } + } + yyh4727.End() + if yyc4727 { + *v = yyv4727 + } +} + +func (x codecSelfer1234) encSliceAttachedVolume(v []AttachedVolume, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4731 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4732 := &yyv4731 + yy4732.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAttachedVolume(v *[]AttachedVolume, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4733 := *v + yyh4733, yyl4733 := z.DecSliceHelperStart() + var yyc4733 bool + if yyl4733 == 0 { + if yyv4733 == nil { + yyv4733 = []AttachedVolume{} + yyc4733 = true + } else if len(yyv4733) != 0 { + yyv4733 = yyv4733[:0] + yyc4733 = true + } + } else if yyl4733 > 0 { + var yyrr4733, yyrl4733 int + var yyrt4733 bool + if yyl4733 > cap(yyv4733) { + + yyrg4733 := len(yyv4733) > 0 + yyv24733 := yyv4733 + yyrl4733, yyrt4733 = z.DecInferLen(yyl4733, z.DecBasicHandle().MaxInitLen, 32) + if yyrt4733 { + if yyrl4733 <= cap(yyv4733) { + yyv4733 = yyv4733[:yyrl4733] + } else { + yyv4733 = make([]AttachedVolume, yyrl4733) + } + } else { + yyv4733 = make([]AttachedVolume, yyrl4733) + } + yyc4733 = true + yyrr4733 = len(yyv4733) + if yyrg4733 { + copy(yyv4733, yyv24733) + } + } else if yyl4733 != len(yyv4733) { + yyv4733 = yyv4733[:yyl4733] + yyc4733 = true + } + yyj4733 := 0 + for ; yyj4733 < yyrr4733; yyj4733++ { + yyh4733.ElemContainerState(yyj4733) + if r.TryDecodeAsNil() { + yyv4733[yyj4733] = AttachedVolume{} + } else { + yyv4734 := &yyv4733[yyj4733] + yyv4734.CodecDecodeSelf(d) + } + + } + if yyrt4733 { + for ; yyj4733 < yyl4733; yyj4733++ { + yyv4733 = append(yyv4733, AttachedVolume{}) + yyh4733.ElemContainerState(yyj4733) + if r.TryDecodeAsNil() { + yyv4733[yyj4733] = AttachedVolume{} + } else { + yyv4735 := &yyv4733[yyj4733] + yyv4735.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4733 := 0 + for ; !r.CheckBreak(); yyj4733++ { + + if yyj4733 >= len(yyv4733) { + yyv4733 = append(yyv4733, AttachedVolume{}) // var yyz4733 AttachedVolume + yyc4733 = true + } + yyh4733.ElemContainerState(yyj4733) + if yyj4733 < len(yyv4733) { + if r.TryDecodeAsNil() { + yyv4733[yyj4733] = AttachedVolume{} + } else { + yyv4736 := &yyv4733[yyj4733] + yyv4736.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4733 < len(yyv4733) { + yyv4733 = yyv4733[:yyj4733] + yyc4733 = true + } else if yyj4733 == 0 && yyv4733 == nil { + yyv4733 = []AttachedVolume{} + yyc4733 = true + } + } + yyh4733.End() + if yyc4733 { + *v = yyv4733 + } +} + +func (x codecSelfer1234) encSlicePreferAvoidPodsEntry(v []PreferAvoidPodsEntry, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4737 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4738 := &yyv4737 + yy4738.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePreferAvoidPodsEntry(v *[]PreferAvoidPodsEntry, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4739 := *v + yyh4739, yyl4739 := z.DecSliceHelperStart() + var yyc4739 bool + if yyl4739 == 0 { + if yyv4739 == nil { + yyv4739 = []PreferAvoidPodsEntry{} + yyc4739 = true + } else if len(yyv4739) != 0 { + yyv4739 = yyv4739[:0] + yyc4739 = true + } + } else if yyl4739 > 0 { + var yyrr4739, yyrl4739 int + var yyrt4739 bool + if yyl4739 > cap(yyv4739) { + + yyrg4739 := len(yyv4739) > 0 + yyv24739 := yyv4739 + yyrl4739, yyrt4739 = z.DecInferLen(yyl4739, z.DecBasicHandle().MaxInitLen, 64) + if yyrt4739 { + if yyrl4739 <= cap(yyv4739) { + yyv4739 = yyv4739[:yyrl4739] + } else { + yyv4739 = make([]PreferAvoidPodsEntry, yyrl4739) + } + } else { + yyv4739 = make([]PreferAvoidPodsEntry, yyrl4739) + } + yyc4739 = true + yyrr4739 = len(yyv4739) + if yyrg4739 { + copy(yyv4739, yyv24739) + } + } else if yyl4739 != len(yyv4739) { + yyv4739 = yyv4739[:yyl4739] + yyc4739 = true + } + yyj4739 := 0 + for ; yyj4739 < yyrr4739; yyj4739++ { + yyh4739.ElemContainerState(yyj4739) + if r.TryDecodeAsNil() { + yyv4739[yyj4739] = PreferAvoidPodsEntry{} + } else { + yyv4740 := &yyv4739[yyj4739] + yyv4740.CodecDecodeSelf(d) + } + + } + if yyrt4739 { + for ; yyj4739 < yyl4739; yyj4739++ { + yyv4739 = append(yyv4739, PreferAvoidPodsEntry{}) + yyh4739.ElemContainerState(yyj4739) + if r.TryDecodeAsNil() { + yyv4739[yyj4739] = PreferAvoidPodsEntry{} + } else { + yyv4741 := &yyv4739[yyj4739] + yyv4741.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4739 := 0 + for ; !r.CheckBreak(); yyj4739++ { + + if yyj4739 >= len(yyv4739) { + yyv4739 = append(yyv4739, PreferAvoidPodsEntry{}) // var yyz4739 PreferAvoidPodsEntry + yyc4739 = true + } + yyh4739.ElemContainerState(yyj4739) + if yyj4739 < len(yyv4739) { + if r.TryDecodeAsNil() { + yyv4739[yyj4739] = PreferAvoidPodsEntry{} + } else { + yyv4742 := &yyv4739[yyj4739] + yyv4742.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4739 < len(yyv4739) { + yyv4739 = yyv4739[:yyj4739] + yyc4739 = true + } else if yyj4739 == 0 && yyv4739 == nil { + yyv4739 = []PreferAvoidPodsEntry{} + yyc4739 = true + } + } + yyh4739.End() + if yyc4739 { + *v = yyv4739 + } +} + +func (x codecSelfer1234) encResourceList(v ResourceList, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk4743, yyv4743 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yyk4743.CodecEncodeSelf(e) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy4744 := &yyv4743 + yym4745 := z.EncBinary() + _ = yym4745 + if false { + } else if z.HasExtensions() && z.EncExt(yy4744) { + } else if !yym4745 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4744) + } else { + z.EncFallback(yy4744) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decResourceList(v *ResourceList, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4746 := *v + yyl4746 := r.ReadMapStart() + yybh4746 := z.DecBasicHandle() + if yyv4746 == nil { + yyrl4746, _ := z.DecInferLen(yyl4746, yybh4746.MaxInitLen, 72) + yyv4746 = make(map[ResourceName]pkg3_resource.Quantity, yyrl4746) + *v = yyv4746 + } + var yymk4746 ResourceName + var yymv4746 pkg3_resource.Quantity + var yymg4746 bool + if yybh4746.MapValueReset { + yymg4746 = true + } + if yyl4746 > 0 { + for yyj4746 := 0; yyj4746 < yyl4746; yyj4746++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4746 = "" + } else { + yymk4746 = ResourceName(r.DecodeString()) + } + + if yymg4746 { + yymv4746 = yyv4746[yymk4746] + } else { + yymv4746 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4746 = pkg3_resource.Quantity{} + } else { + yyv4748 := &yymv4746 + yym4749 := z.DecBinary() + _ = yym4749 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4748) { + } else if !yym4749 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4748) + } else { + z.DecFallback(yyv4748, false) + } + } + + if yyv4746 != nil { + yyv4746[yymk4746] = yymv4746 + } + } + } else if yyl4746 < 0 { + for yyj4746 := 0; !r.CheckBreak(); yyj4746++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4746 = "" + } else { + yymk4746 = ResourceName(r.DecodeString()) + } + + if yymg4746 { + yymv4746 = yyv4746[yymk4746] + } else { + yymv4746 = pkg3_resource.Quantity{} + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4746 = pkg3_resource.Quantity{} + } else { + yyv4751 := &yymv4746 + yym4752 := z.DecBinary() + _ = yym4752 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4751) { + } else if !yym4752 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4751) + } else { + z.DecFallback(yyv4751, false) + } + } + + if yyv4746 != nil { + yyv4746[yymk4746] = yymv4746 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceNode(v []Node, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4753 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4754 := &yyv4753 + yy4754.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNode(v *[]Node, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4755 := *v + yyh4755, yyl4755 := z.DecSliceHelperStart() + var yyc4755 bool + if yyl4755 == 0 { + if yyv4755 == nil { + yyv4755 = []Node{} + yyc4755 = true + } else if len(yyv4755) != 0 { + yyv4755 = yyv4755[:0] + yyc4755 = true + } + } else if yyl4755 > 0 { + var yyrr4755, yyrl4755 int + var yyrt4755 bool + if yyl4755 > cap(yyv4755) { + + yyrg4755 := len(yyv4755) > 0 + yyv24755 := yyv4755 + yyrl4755, yyrt4755 = z.DecInferLen(yyl4755, z.DecBasicHandle().MaxInitLen, 632) + if yyrt4755 { + if yyrl4755 <= cap(yyv4755) { + yyv4755 = yyv4755[:yyrl4755] + } else { + yyv4755 = make([]Node, yyrl4755) + } + } else { + yyv4755 = make([]Node, yyrl4755) + } + yyc4755 = true + yyrr4755 = len(yyv4755) + if yyrg4755 { + copy(yyv4755, yyv24755) + } + } else if yyl4755 != len(yyv4755) { + yyv4755 = yyv4755[:yyl4755] + yyc4755 = true + } + yyj4755 := 0 + for ; yyj4755 < yyrr4755; yyj4755++ { + yyh4755.ElemContainerState(yyj4755) + if r.TryDecodeAsNil() { + yyv4755[yyj4755] = Node{} + } else { + yyv4756 := &yyv4755[yyj4755] + yyv4756.CodecDecodeSelf(d) + } + + } + if yyrt4755 { + for ; yyj4755 < yyl4755; yyj4755++ { + yyv4755 = append(yyv4755, Node{}) + yyh4755.ElemContainerState(yyj4755) + if r.TryDecodeAsNil() { + yyv4755[yyj4755] = Node{} + } else { + yyv4757 := &yyv4755[yyj4755] + yyv4757.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4755 := 0 + for ; !r.CheckBreak(); yyj4755++ { + + if yyj4755 >= len(yyv4755) { + yyv4755 = append(yyv4755, Node{}) // var yyz4755 Node + yyc4755 = true + } + yyh4755.ElemContainerState(yyj4755) + if yyj4755 < len(yyv4755) { + if r.TryDecodeAsNil() { + yyv4755[yyj4755] = Node{} + } else { + yyv4758 := &yyv4755[yyj4755] + yyv4758.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4755 < len(yyv4755) { + yyv4755 = yyv4755[:yyj4755] + yyc4755 = true + } else if yyj4755 == 0 && yyv4755 == nil { + yyv4755 = []Node{} + yyc4755 = true + } + } + yyh4755.End() + if yyc4755 { + *v = yyv4755 + } +} + +func (x codecSelfer1234) encSliceFinalizerName(v []FinalizerName, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4759 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4759.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFinalizerName(v *[]FinalizerName, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4760 := *v + yyh4760, yyl4760 := z.DecSliceHelperStart() + var yyc4760 bool + if yyl4760 == 0 { + if yyv4760 == nil { + yyv4760 = []FinalizerName{} + yyc4760 = true + } else if len(yyv4760) != 0 { + yyv4760 = yyv4760[:0] + yyc4760 = true + } + } else if yyl4760 > 0 { + var yyrr4760, yyrl4760 int + var yyrt4760 bool + if yyl4760 > cap(yyv4760) { + + yyrl4760, yyrt4760 = z.DecInferLen(yyl4760, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4760 { + if yyrl4760 <= cap(yyv4760) { + yyv4760 = yyv4760[:yyrl4760] + } else { + yyv4760 = make([]FinalizerName, yyrl4760) + } + } else { + yyv4760 = make([]FinalizerName, yyrl4760) + } + yyc4760 = true + yyrr4760 = len(yyv4760) + } else if yyl4760 != len(yyv4760) { + yyv4760 = yyv4760[:yyl4760] + yyc4760 = true + } + yyj4760 := 0 + for ; yyj4760 < yyrr4760; yyj4760++ { + yyh4760.ElemContainerState(yyj4760) + if r.TryDecodeAsNil() { + yyv4760[yyj4760] = "" + } else { + yyv4760[yyj4760] = FinalizerName(r.DecodeString()) + } + + } + if yyrt4760 { + for ; yyj4760 < yyl4760; yyj4760++ { + yyv4760 = append(yyv4760, "") + yyh4760.ElemContainerState(yyj4760) + if r.TryDecodeAsNil() { + yyv4760[yyj4760] = "" + } else { + yyv4760[yyj4760] = FinalizerName(r.DecodeString()) + } + + } + } + + } else { + yyj4760 := 0 + for ; !r.CheckBreak(); yyj4760++ { + + if yyj4760 >= len(yyv4760) { + yyv4760 = append(yyv4760, "") // var yyz4760 FinalizerName + yyc4760 = true + } + yyh4760.ElemContainerState(yyj4760) + if yyj4760 < len(yyv4760) { + if r.TryDecodeAsNil() { + yyv4760[yyj4760] = "" + } else { + yyv4760[yyj4760] = FinalizerName(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4760 < len(yyv4760) { + yyv4760 = yyv4760[:yyj4760] + yyc4760 = true + } else if yyj4760 == 0 && yyv4760 == nil { + yyv4760 = []FinalizerName{} + yyc4760 = true + } + } + yyh4760.End() + if yyc4760 { + *v = yyv4760 + } +} + +func (x codecSelfer1234) encSliceNamespace(v []Namespace, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4764 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4765 := &yyv4764 + yy4765.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNamespace(v *[]Namespace, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4766 := *v + yyh4766, yyl4766 := z.DecSliceHelperStart() + var yyc4766 bool + if yyl4766 == 0 { + if yyv4766 == nil { + yyv4766 = []Namespace{} + yyc4766 = true + } else if len(yyv4766) != 0 { + yyv4766 = yyv4766[:0] + yyc4766 = true + } + } else if yyl4766 > 0 { + var yyrr4766, yyrl4766 int + var yyrt4766 bool + if yyl4766 > cap(yyv4766) { + + yyrg4766 := len(yyv4766) > 0 + yyv24766 := yyv4766 + yyrl4766, yyrt4766 = z.DecInferLen(yyl4766, z.DecBasicHandle().MaxInitLen, 296) + if yyrt4766 { + if yyrl4766 <= cap(yyv4766) { + yyv4766 = yyv4766[:yyrl4766] + } else { + yyv4766 = make([]Namespace, yyrl4766) + } + } else { + yyv4766 = make([]Namespace, yyrl4766) + } + yyc4766 = true + yyrr4766 = len(yyv4766) + if yyrg4766 { + copy(yyv4766, yyv24766) + } + } else if yyl4766 != len(yyv4766) { + yyv4766 = yyv4766[:yyl4766] + yyc4766 = true + } + yyj4766 := 0 + for ; yyj4766 < yyrr4766; yyj4766++ { + yyh4766.ElemContainerState(yyj4766) + if r.TryDecodeAsNil() { + yyv4766[yyj4766] = Namespace{} + } else { + yyv4767 := &yyv4766[yyj4766] + yyv4767.CodecDecodeSelf(d) + } + + } + if yyrt4766 { + for ; yyj4766 < yyl4766; yyj4766++ { + yyv4766 = append(yyv4766, Namespace{}) + yyh4766.ElemContainerState(yyj4766) + if r.TryDecodeAsNil() { + yyv4766[yyj4766] = Namespace{} + } else { + yyv4768 := &yyv4766[yyj4766] + yyv4768.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4766 := 0 + for ; !r.CheckBreak(); yyj4766++ { + + if yyj4766 >= len(yyv4766) { + yyv4766 = append(yyv4766, Namespace{}) // var yyz4766 Namespace + yyc4766 = true + } + yyh4766.ElemContainerState(yyj4766) + if yyj4766 < len(yyv4766) { + if r.TryDecodeAsNil() { + yyv4766[yyj4766] = Namespace{} + } else { + yyv4769 := &yyv4766[yyj4766] + yyv4769.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4766 < len(yyv4766) { + yyv4766 = yyv4766[:yyj4766] + yyc4766 = true + } else if yyj4766 == 0 && yyv4766 == nil { + yyv4766 = []Namespace{} + yyc4766 = true + } + } + yyh4766.End() + if yyc4766 { + *v = yyv4766 + } +} + +func (x codecSelfer1234) encSliceEvent(v []Event, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4770 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4771 := &yyv4770 + yy4771.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceEvent(v *[]Event, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4772 := *v + yyh4772, yyl4772 := z.DecSliceHelperStart() + var yyc4772 bool + if yyl4772 == 0 { + if yyv4772 == nil { + yyv4772 = []Event{} + yyc4772 = true + } else if len(yyv4772) != 0 { + yyv4772 = yyv4772[:0] + yyc4772 = true + } + } else if yyl4772 > 0 { + var yyrr4772, yyrl4772 int + var yyrt4772 bool + if yyl4772 > cap(yyv4772) { + + yyrg4772 := len(yyv4772) > 0 + yyv24772 := yyv4772 + yyrl4772, yyrt4772 = z.DecInferLen(yyl4772, z.DecBasicHandle().MaxInitLen, 504) + if yyrt4772 { + if yyrl4772 <= cap(yyv4772) { + yyv4772 = yyv4772[:yyrl4772] + } else { + yyv4772 = make([]Event, yyrl4772) + } + } else { + yyv4772 = make([]Event, yyrl4772) + } + yyc4772 = true + yyrr4772 = len(yyv4772) + if yyrg4772 { + copy(yyv4772, yyv24772) + } + } else if yyl4772 != len(yyv4772) { + yyv4772 = yyv4772[:yyl4772] + yyc4772 = true + } + yyj4772 := 0 + for ; yyj4772 < yyrr4772; yyj4772++ { + yyh4772.ElemContainerState(yyj4772) + if r.TryDecodeAsNil() { + yyv4772[yyj4772] = Event{} + } else { + yyv4773 := &yyv4772[yyj4772] + yyv4773.CodecDecodeSelf(d) + } + + } + if yyrt4772 { + for ; yyj4772 < yyl4772; yyj4772++ { + yyv4772 = append(yyv4772, Event{}) + yyh4772.ElemContainerState(yyj4772) + if r.TryDecodeAsNil() { + yyv4772[yyj4772] = Event{} + } else { + yyv4774 := &yyv4772[yyj4772] + yyv4774.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4772 := 0 + for ; !r.CheckBreak(); yyj4772++ { + + if yyj4772 >= len(yyv4772) { + yyv4772 = append(yyv4772, Event{}) // var yyz4772 Event + yyc4772 = true + } + yyh4772.ElemContainerState(yyj4772) + if yyj4772 < len(yyv4772) { + if r.TryDecodeAsNil() { + yyv4772[yyj4772] = Event{} + } else { + yyv4775 := &yyv4772[yyj4772] + yyv4775.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4772 < len(yyv4772) { + yyv4772 = yyv4772[:yyj4772] + yyc4772 = true + } else if yyj4772 == 0 && yyv4772 == nil { + yyv4772 = []Event{} + yyc4772 = true + } + } + yyh4772.End() + if yyc4772 { + *v = yyv4772 + } +} + +func (x codecSelfer1234) encSliceruntime_RawExtension(v []pkg5_runtime.RawExtension, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4776 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4777 := &yyv4776 + yym4778 := z.EncBinary() + _ = yym4778 + if false { + } else if z.HasExtensions() && z.EncExt(yy4777) { + } else if !yym4778 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4777) + } else { + z.EncFallback(yy4777) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceruntime_RawExtension(v *[]pkg5_runtime.RawExtension, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4779 := *v + yyh4779, yyl4779 := z.DecSliceHelperStart() + var yyc4779 bool + if yyl4779 == 0 { + if yyv4779 == nil { + yyv4779 = []pkg5_runtime.RawExtension{} + yyc4779 = true + } else if len(yyv4779) != 0 { + yyv4779 = yyv4779[:0] + yyc4779 = true + } + } else if yyl4779 > 0 { + var yyrr4779, yyrl4779 int + var yyrt4779 bool + if yyl4779 > cap(yyv4779) { + + yyrg4779 := len(yyv4779) > 0 + yyv24779 := yyv4779 + yyrl4779, yyrt4779 = z.DecInferLen(yyl4779, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4779 { + if yyrl4779 <= cap(yyv4779) { + yyv4779 = yyv4779[:yyrl4779] + } else { + yyv4779 = make([]pkg5_runtime.RawExtension, yyrl4779) + } + } else { + yyv4779 = make([]pkg5_runtime.RawExtension, yyrl4779) + } + yyc4779 = true + yyrr4779 = len(yyv4779) + if yyrg4779 { + copy(yyv4779, yyv24779) + } + } else if yyl4779 != len(yyv4779) { + yyv4779 = yyv4779[:yyl4779] + yyc4779 = true + } + yyj4779 := 0 + for ; yyj4779 < yyrr4779; yyj4779++ { + yyh4779.ElemContainerState(yyj4779) + if r.TryDecodeAsNil() { + yyv4779[yyj4779] = pkg5_runtime.RawExtension{} + } else { + yyv4780 := &yyv4779[yyj4779] + yym4781 := z.DecBinary() + _ = yym4781 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4780) { + } else if !yym4781 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4780) + } else { + z.DecFallback(yyv4780, false) + } + } + + } + if yyrt4779 { + for ; yyj4779 < yyl4779; yyj4779++ { + yyv4779 = append(yyv4779, pkg5_runtime.RawExtension{}) + yyh4779.ElemContainerState(yyj4779) + if r.TryDecodeAsNil() { + yyv4779[yyj4779] = pkg5_runtime.RawExtension{} + } else { + yyv4782 := &yyv4779[yyj4779] + yym4783 := z.DecBinary() + _ = yym4783 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4782) { + } else if !yym4783 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4782) + } else { + z.DecFallback(yyv4782, false) + } + } + + } + } + + } else { + yyj4779 := 0 + for ; !r.CheckBreak(); yyj4779++ { + + if yyj4779 >= len(yyv4779) { + yyv4779 = append(yyv4779, pkg5_runtime.RawExtension{}) // var yyz4779 pkg5_runtime.RawExtension + yyc4779 = true + } + yyh4779.ElemContainerState(yyj4779) + if yyj4779 < len(yyv4779) { + if r.TryDecodeAsNil() { + yyv4779[yyj4779] = pkg5_runtime.RawExtension{} + } else { + yyv4784 := &yyv4779[yyj4779] + yym4785 := z.DecBinary() + _ = yym4785 + if false { + } else if z.HasExtensions() && z.DecExt(yyv4784) { + } else if !yym4785 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv4784) + } else { + z.DecFallback(yyv4784, false) + } + } + + } else { + z.DecSwallow() + } + + } + if yyj4779 < len(yyv4779) { + yyv4779 = yyv4779[:yyj4779] + yyc4779 = true + } else if yyj4779 == 0 && yyv4779 == nil { + yyv4779 = []pkg5_runtime.RawExtension{} + yyc4779 = true + } + } + yyh4779.End() + if yyc4779 { + *v = yyv4779 + } +} + +func (x codecSelfer1234) encSliceLimitRangeItem(v []LimitRangeItem, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4786 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4787 := &yyv4786 + yy4787.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRangeItem(v *[]LimitRangeItem, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4788 := *v + yyh4788, yyl4788 := z.DecSliceHelperStart() + var yyc4788 bool + if yyl4788 == 0 { + if yyv4788 == nil { + yyv4788 = []LimitRangeItem{} + yyc4788 = true + } else if len(yyv4788) != 0 { + yyv4788 = yyv4788[:0] + yyc4788 = true + } + } else if yyl4788 > 0 { + var yyrr4788, yyrl4788 int + var yyrt4788 bool + if yyl4788 > cap(yyv4788) { + + yyrg4788 := len(yyv4788) > 0 + yyv24788 := yyv4788 + yyrl4788, yyrt4788 = z.DecInferLen(yyl4788, z.DecBasicHandle().MaxInitLen, 56) + if yyrt4788 { + if yyrl4788 <= cap(yyv4788) { + yyv4788 = yyv4788[:yyrl4788] + } else { + yyv4788 = make([]LimitRangeItem, yyrl4788) + } + } else { + yyv4788 = make([]LimitRangeItem, yyrl4788) + } + yyc4788 = true + yyrr4788 = len(yyv4788) + if yyrg4788 { + copy(yyv4788, yyv24788) + } + } else if yyl4788 != len(yyv4788) { + yyv4788 = yyv4788[:yyl4788] + yyc4788 = true + } + yyj4788 := 0 + for ; yyj4788 < yyrr4788; yyj4788++ { + yyh4788.ElemContainerState(yyj4788) + if r.TryDecodeAsNil() { + yyv4788[yyj4788] = LimitRangeItem{} + } else { + yyv4789 := &yyv4788[yyj4788] + yyv4789.CodecDecodeSelf(d) + } + + } + if yyrt4788 { + for ; yyj4788 < yyl4788; yyj4788++ { + yyv4788 = append(yyv4788, LimitRangeItem{}) + yyh4788.ElemContainerState(yyj4788) + if r.TryDecodeAsNil() { + yyv4788[yyj4788] = LimitRangeItem{} + } else { + yyv4790 := &yyv4788[yyj4788] + yyv4790.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4788 := 0 + for ; !r.CheckBreak(); yyj4788++ { + + if yyj4788 >= len(yyv4788) { + yyv4788 = append(yyv4788, LimitRangeItem{}) // var yyz4788 LimitRangeItem + yyc4788 = true + } + yyh4788.ElemContainerState(yyj4788) + if yyj4788 < len(yyv4788) { + if r.TryDecodeAsNil() { + yyv4788[yyj4788] = LimitRangeItem{} + } else { + yyv4791 := &yyv4788[yyj4788] + yyv4791.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4788 < len(yyv4788) { + yyv4788 = yyv4788[:yyj4788] + yyc4788 = true + } else if yyj4788 == 0 && yyv4788 == nil { + yyv4788 = []LimitRangeItem{} + yyc4788 = true + } + } + yyh4788.End() + if yyc4788 { + *v = yyv4788 + } +} + +func (x codecSelfer1234) encSliceLimitRange(v []LimitRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4792 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4793 := &yyv4792 + yy4793.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLimitRange(v *[]LimitRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4794 := *v + yyh4794, yyl4794 := z.DecSliceHelperStart() + var yyc4794 bool + if yyl4794 == 0 { + if yyv4794 == nil { + yyv4794 = []LimitRange{} + yyc4794 = true + } else if len(yyv4794) != 0 { + yyv4794 = yyv4794[:0] + yyc4794 = true + } + } else if yyl4794 > 0 { + var yyrr4794, yyrl4794 int + var yyrt4794 bool + if yyl4794 > cap(yyv4794) { + + yyrg4794 := len(yyv4794) > 0 + yyv24794 := yyv4794 + yyrl4794, yyrt4794 = z.DecInferLen(yyl4794, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4794 { + if yyrl4794 <= cap(yyv4794) { + yyv4794 = yyv4794[:yyrl4794] + } else { + yyv4794 = make([]LimitRange, yyrl4794) + } + } else { + yyv4794 = make([]LimitRange, yyrl4794) + } + yyc4794 = true + yyrr4794 = len(yyv4794) + if yyrg4794 { + copy(yyv4794, yyv24794) + } + } else if yyl4794 != len(yyv4794) { + yyv4794 = yyv4794[:yyl4794] + yyc4794 = true + } + yyj4794 := 0 + for ; yyj4794 < yyrr4794; yyj4794++ { + yyh4794.ElemContainerState(yyj4794) + if r.TryDecodeAsNil() { + yyv4794[yyj4794] = LimitRange{} + } else { + yyv4795 := &yyv4794[yyj4794] + yyv4795.CodecDecodeSelf(d) + } + + } + if yyrt4794 { + for ; yyj4794 < yyl4794; yyj4794++ { + yyv4794 = append(yyv4794, LimitRange{}) + yyh4794.ElemContainerState(yyj4794) + if r.TryDecodeAsNil() { + yyv4794[yyj4794] = LimitRange{} + } else { + yyv4796 := &yyv4794[yyj4794] + yyv4796.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4794 := 0 + for ; !r.CheckBreak(); yyj4794++ { + + if yyj4794 >= len(yyv4794) { + yyv4794 = append(yyv4794, LimitRange{}) // var yyz4794 LimitRange + yyc4794 = true + } + yyh4794.ElemContainerState(yyj4794) + if yyj4794 < len(yyv4794) { + if r.TryDecodeAsNil() { + yyv4794[yyj4794] = LimitRange{} + } else { + yyv4797 := &yyv4794[yyj4794] + yyv4797.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4794 < len(yyv4794) { + yyv4794 = yyv4794[:yyj4794] + yyc4794 = true + } else if yyj4794 == 0 && yyv4794 == nil { + yyv4794 = []LimitRange{} + yyc4794 = true + } + } + yyh4794.End() + if yyc4794 { + *v = yyv4794 + } +} + +func (x codecSelfer1234) encSliceResourceQuotaScope(v []ResourceQuotaScope, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4798 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv4798.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuotaScope(v *[]ResourceQuotaScope, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4799 := *v + yyh4799, yyl4799 := z.DecSliceHelperStart() + var yyc4799 bool + if yyl4799 == 0 { + if yyv4799 == nil { + yyv4799 = []ResourceQuotaScope{} + yyc4799 = true + } else if len(yyv4799) != 0 { + yyv4799 = yyv4799[:0] + yyc4799 = true + } + } else if yyl4799 > 0 { + var yyrr4799, yyrl4799 int + var yyrt4799 bool + if yyl4799 > cap(yyv4799) { + + yyrl4799, yyrt4799 = z.DecInferLen(yyl4799, z.DecBasicHandle().MaxInitLen, 16) + if yyrt4799 { + if yyrl4799 <= cap(yyv4799) { + yyv4799 = yyv4799[:yyrl4799] + } else { + yyv4799 = make([]ResourceQuotaScope, yyrl4799) + } + } else { + yyv4799 = make([]ResourceQuotaScope, yyrl4799) + } + yyc4799 = true + yyrr4799 = len(yyv4799) + } else if yyl4799 != len(yyv4799) { + yyv4799 = yyv4799[:yyl4799] + yyc4799 = true + } + yyj4799 := 0 + for ; yyj4799 < yyrr4799; yyj4799++ { + yyh4799.ElemContainerState(yyj4799) + if r.TryDecodeAsNil() { + yyv4799[yyj4799] = "" + } else { + yyv4799[yyj4799] = ResourceQuotaScope(r.DecodeString()) + } + + } + if yyrt4799 { + for ; yyj4799 < yyl4799; yyj4799++ { + yyv4799 = append(yyv4799, "") + yyh4799.ElemContainerState(yyj4799) + if r.TryDecodeAsNil() { + yyv4799[yyj4799] = "" + } else { + yyv4799[yyj4799] = ResourceQuotaScope(r.DecodeString()) + } + + } + } + + } else { + yyj4799 := 0 + for ; !r.CheckBreak(); yyj4799++ { + + if yyj4799 >= len(yyv4799) { + yyv4799 = append(yyv4799, "") // var yyz4799 ResourceQuotaScope + yyc4799 = true + } + yyh4799.ElemContainerState(yyj4799) + if yyj4799 < len(yyv4799) { + if r.TryDecodeAsNil() { + yyv4799[yyj4799] = "" + } else { + yyv4799[yyj4799] = ResourceQuotaScope(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj4799 < len(yyv4799) { + yyv4799 = yyv4799[:yyj4799] + yyc4799 = true + } else if yyj4799 == 0 && yyv4799 == nil { + yyv4799 = []ResourceQuotaScope{} + yyc4799 = true + } + } + yyh4799.End() + if yyc4799 { + *v = yyv4799 + } +} + +func (x codecSelfer1234) encSliceResourceQuota(v []ResourceQuota, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4803 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4804 := &yyv4803 + yy4804.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceResourceQuota(v *[]ResourceQuota, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4805 := *v + yyh4805, yyl4805 := z.DecSliceHelperStart() + var yyc4805 bool + if yyl4805 == 0 { + if yyv4805 == nil { + yyv4805 = []ResourceQuota{} + yyc4805 = true + } else if len(yyv4805) != 0 { + yyv4805 = yyv4805[:0] + yyc4805 = true + } + } else if yyl4805 > 0 { + var yyrr4805, yyrl4805 int + var yyrt4805 bool + if yyl4805 > cap(yyv4805) { + + yyrg4805 := len(yyv4805) > 0 + yyv24805 := yyv4805 + yyrl4805, yyrt4805 = z.DecInferLen(yyl4805, z.DecBasicHandle().MaxInitLen, 304) + if yyrt4805 { + if yyrl4805 <= cap(yyv4805) { + yyv4805 = yyv4805[:yyrl4805] + } else { + yyv4805 = make([]ResourceQuota, yyrl4805) + } + } else { + yyv4805 = make([]ResourceQuota, yyrl4805) + } + yyc4805 = true + yyrr4805 = len(yyv4805) + if yyrg4805 { + copy(yyv4805, yyv24805) + } + } else if yyl4805 != len(yyv4805) { + yyv4805 = yyv4805[:yyl4805] + yyc4805 = true + } + yyj4805 := 0 + for ; yyj4805 < yyrr4805; yyj4805++ { + yyh4805.ElemContainerState(yyj4805) + if r.TryDecodeAsNil() { + yyv4805[yyj4805] = ResourceQuota{} + } else { + yyv4806 := &yyv4805[yyj4805] + yyv4806.CodecDecodeSelf(d) + } + + } + if yyrt4805 { + for ; yyj4805 < yyl4805; yyj4805++ { + yyv4805 = append(yyv4805, ResourceQuota{}) + yyh4805.ElemContainerState(yyj4805) + if r.TryDecodeAsNil() { + yyv4805[yyj4805] = ResourceQuota{} + } else { + yyv4807 := &yyv4805[yyj4805] + yyv4807.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4805 := 0 + for ; !r.CheckBreak(); yyj4805++ { + + if yyj4805 >= len(yyv4805) { + yyv4805 = append(yyv4805, ResourceQuota{}) // var yyz4805 ResourceQuota + yyc4805 = true + } + yyh4805.ElemContainerState(yyj4805) + if yyj4805 < len(yyv4805) { + if r.TryDecodeAsNil() { + yyv4805[yyj4805] = ResourceQuota{} + } else { + yyv4808 := &yyv4805[yyj4805] + yyv4808.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4805 < len(yyv4805) { + yyv4805 = yyv4805[:yyj4805] + yyc4805 = true + } else if yyj4805 == 0 && yyv4805 == nil { + yyv4805 = []ResourceQuota{} + yyc4805 = true + } + } + yyh4805.End() + if yyc4805 { + *v = yyv4805 + } +} + +func (x codecSelfer1234) encMapstringSliceuint8(v map[string][]uint8, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk4809, yyv4809 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym4810 := z.EncBinary() + _ = yym4810 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk4809)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv4809 == nil { + r.EncodeNil() + } else { + yym4811 := z.EncBinary() + _ = yym4811 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(yyv4809)) + } + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringSliceuint8(v *map[string][]uint8, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4812 := *v + yyl4812 := r.ReadMapStart() + yybh4812 := z.DecBasicHandle() + if yyv4812 == nil { + yyrl4812, _ := z.DecInferLen(yyl4812, yybh4812.MaxInitLen, 40) + yyv4812 = make(map[string][]uint8, yyrl4812) + *v = yyv4812 + } + var yymk4812 string + var yymv4812 []uint8 + var yymg4812 bool + if yybh4812.MapValueReset { + yymg4812 = true + } + if yyl4812 > 0 { + for yyj4812 := 0; yyj4812 < yyl4812; yyj4812++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4812 = "" + } else { + yymk4812 = string(r.DecodeString()) + } + + if yymg4812 { + yymv4812 = yyv4812[yymk4812] + } else { + yymv4812 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4812 = nil + } else { + yyv4814 := &yymv4812 + yym4815 := z.DecBinary() + _ = yym4815 + if false { + } else { + *yyv4814 = r.DecodeBytes(*(*[]byte)(yyv4814), false, false) + } + } + + if yyv4812 != nil { + yyv4812[yymk4812] = yymv4812 + } + } + } else if yyl4812 < 0 { + for yyj4812 := 0; !r.CheckBreak(); yyj4812++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk4812 = "" + } else { + yymk4812 = string(r.DecodeString()) + } + + if yymg4812 { + yymv4812 = yyv4812[yymk4812] + } else { + yymv4812 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv4812 = nil + } else { + yyv4817 := &yymv4812 + yym4818 := z.DecBinary() + _ = yym4818 + if false { + } else { + *yyv4817 = r.DecodeBytes(*(*[]byte)(yyv4817), false, false) + } + } + + if yyv4812 != nil { + yyv4812[yymk4812] = yymv4812 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encSliceSecret(v []Secret, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4819 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4820 := &yyv4819 + yy4820.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSecret(v *[]Secret, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4821 := *v + yyh4821, yyl4821 := z.DecSliceHelperStart() + var yyc4821 bool + if yyl4821 == 0 { + if yyv4821 == nil { + yyv4821 = []Secret{} + yyc4821 = true + } else if len(yyv4821) != 0 { + yyv4821 = yyv4821[:0] + yyc4821 = true + } + } else if yyl4821 > 0 { + var yyrr4821, yyrl4821 int + var yyrt4821 bool + if yyl4821 > cap(yyv4821) { + + yyrg4821 := len(yyv4821) > 0 + yyv24821 := yyv4821 + yyrl4821, yyrt4821 = z.DecInferLen(yyl4821, z.DecBasicHandle().MaxInitLen, 288) + if yyrt4821 { + if yyrl4821 <= cap(yyv4821) { + yyv4821 = yyv4821[:yyrl4821] + } else { + yyv4821 = make([]Secret, yyrl4821) + } + } else { + yyv4821 = make([]Secret, yyrl4821) + } + yyc4821 = true + yyrr4821 = len(yyv4821) + if yyrg4821 { + copy(yyv4821, yyv24821) + } + } else if yyl4821 != len(yyv4821) { + yyv4821 = yyv4821[:yyl4821] + yyc4821 = true + } + yyj4821 := 0 + for ; yyj4821 < yyrr4821; yyj4821++ { + yyh4821.ElemContainerState(yyj4821) + if r.TryDecodeAsNil() { + yyv4821[yyj4821] = Secret{} + } else { + yyv4822 := &yyv4821[yyj4821] + yyv4822.CodecDecodeSelf(d) + } + + } + if yyrt4821 { + for ; yyj4821 < yyl4821; yyj4821++ { + yyv4821 = append(yyv4821, Secret{}) + yyh4821.ElemContainerState(yyj4821) + if r.TryDecodeAsNil() { + yyv4821[yyj4821] = Secret{} + } else { + yyv4823 := &yyv4821[yyj4821] + yyv4823.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4821 := 0 + for ; !r.CheckBreak(); yyj4821++ { + + if yyj4821 >= len(yyv4821) { + yyv4821 = append(yyv4821, Secret{}) // var yyz4821 Secret + yyc4821 = true + } + yyh4821.ElemContainerState(yyj4821) + if yyj4821 < len(yyv4821) { + if r.TryDecodeAsNil() { + yyv4821[yyj4821] = Secret{} + } else { + yyv4824 := &yyv4821[yyj4821] + yyv4824.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4821 < len(yyv4821) { + yyv4821 = yyv4821[:yyj4821] + yyc4821 = true + } else if yyj4821 == 0 && yyv4821 == nil { + yyv4821 = []Secret{} + yyc4821 = true + } + } + yyh4821.End() + if yyc4821 { + *v = yyv4821 + } +} + +func (x codecSelfer1234) encSliceConfigMap(v []ConfigMap, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4825 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4826 := &yyv4825 + yy4826.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceConfigMap(v *[]ConfigMap, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4827 := *v + yyh4827, yyl4827 := z.DecSliceHelperStart() + var yyc4827 bool + if yyl4827 == 0 { + if yyv4827 == nil { + yyv4827 = []ConfigMap{} + yyc4827 = true + } else if len(yyv4827) != 0 { + yyv4827 = yyv4827[:0] + yyc4827 = true + } + } else if yyl4827 > 0 { + var yyrr4827, yyrl4827 int + var yyrt4827 bool + if yyl4827 > cap(yyv4827) { + + yyrg4827 := len(yyv4827) > 0 + yyv24827 := yyv4827 + yyrl4827, yyrt4827 = z.DecInferLen(yyl4827, z.DecBasicHandle().MaxInitLen, 264) + if yyrt4827 { + if yyrl4827 <= cap(yyv4827) { + yyv4827 = yyv4827[:yyrl4827] + } else { + yyv4827 = make([]ConfigMap, yyrl4827) + } + } else { + yyv4827 = make([]ConfigMap, yyrl4827) + } + yyc4827 = true + yyrr4827 = len(yyv4827) + if yyrg4827 { + copy(yyv4827, yyv24827) + } + } else if yyl4827 != len(yyv4827) { + yyv4827 = yyv4827[:yyl4827] + yyc4827 = true + } + yyj4827 := 0 + for ; yyj4827 < yyrr4827; yyj4827++ { + yyh4827.ElemContainerState(yyj4827) + if r.TryDecodeAsNil() { + yyv4827[yyj4827] = ConfigMap{} + } else { + yyv4828 := &yyv4827[yyj4827] + yyv4828.CodecDecodeSelf(d) + } + + } + if yyrt4827 { + for ; yyj4827 < yyl4827; yyj4827++ { + yyv4827 = append(yyv4827, ConfigMap{}) + yyh4827.ElemContainerState(yyj4827) + if r.TryDecodeAsNil() { + yyv4827[yyj4827] = ConfigMap{} + } else { + yyv4829 := &yyv4827[yyj4827] + yyv4829.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4827 := 0 + for ; !r.CheckBreak(); yyj4827++ { + + if yyj4827 >= len(yyv4827) { + yyv4827 = append(yyv4827, ConfigMap{}) // var yyz4827 ConfigMap + yyc4827 = true + } + yyh4827.ElemContainerState(yyj4827) + if yyj4827 < len(yyv4827) { + if r.TryDecodeAsNil() { + yyv4827[yyj4827] = ConfigMap{} + } else { + yyv4830 := &yyv4827[yyj4827] + yyv4830.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4827 < len(yyv4827) { + yyv4827 = yyv4827[:yyj4827] + yyc4827 = true + } else if yyj4827 == 0 && yyv4827 == nil { + yyv4827 = []ConfigMap{} + yyc4827 = true + } + } + yyh4827.End() + if yyc4827 { + *v = yyv4827 + } +} + +func (x codecSelfer1234) encSliceComponentCondition(v []ComponentCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4831 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4832 := &yyv4831 + yy4832.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentCondition(v *[]ComponentCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4833 := *v + yyh4833, yyl4833 := z.DecSliceHelperStart() + var yyc4833 bool + if yyl4833 == 0 { + if yyv4833 == nil { + yyv4833 = []ComponentCondition{} + yyc4833 = true + } else if len(yyv4833) != 0 { + yyv4833 = yyv4833[:0] + yyc4833 = true + } + } else if yyl4833 > 0 { + var yyrr4833, yyrl4833 int + var yyrt4833 bool + if yyl4833 > cap(yyv4833) { + + yyrg4833 := len(yyv4833) > 0 + yyv24833 := yyv4833 + yyrl4833, yyrt4833 = z.DecInferLen(yyl4833, z.DecBasicHandle().MaxInitLen, 64) + if yyrt4833 { + if yyrl4833 <= cap(yyv4833) { + yyv4833 = yyv4833[:yyrl4833] + } else { + yyv4833 = make([]ComponentCondition, yyrl4833) + } + } else { + yyv4833 = make([]ComponentCondition, yyrl4833) + } + yyc4833 = true + yyrr4833 = len(yyv4833) + if yyrg4833 { + copy(yyv4833, yyv24833) + } + } else if yyl4833 != len(yyv4833) { + yyv4833 = yyv4833[:yyl4833] + yyc4833 = true + } + yyj4833 := 0 + for ; yyj4833 < yyrr4833; yyj4833++ { + yyh4833.ElemContainerState(yyj4833) + if r.TryDecodeAsNil() { + yyv4833[yyj4833] = ComponentCondition{} + } else { + yyv4834 := &yyv4833[yyj4833] + yyv4834.CodecDecodeSelf(d) + } + + } + if yyrt4833 { + for ; yyj4833 < yyl4833; yyj4833++ { + yyv4833 = append(yyv4833, ComponentCondition{}) + yyh4833.ElemContainerState(yyj4833) + if r.TryDecodeAsNil() { + yyv4833[yyj4833] = ComponentCondition{} + } else { + yyv4835 := &yyv4833[yyj4833] + yyv4835.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4833 := 0 + for ; !r.CheckBreak(); yyj4833++ { + + if yyj4833 >= len(yyv4833) { + yyv4833 = append(yyv4833, ComponentCondition{}) // var yyz4833 ComponentCondition + yyc4833 = true + } + yyh4833.ElemContainerState(yyj4833) + if yyj4833 < len(yyv4833) { + if r.TryDecodeAsNil() { + yyv4833[yyj4833] = ComponentCondition{} + } else { + yyv4836 := &yyv4833[yyj4833] + yyv4836.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4833 < len(yyv4833) { + yyv4833 = yyv4833[:yyj4833] + yyc4833 = true + } else if yyj4833 == 0 && yyv4833 == nil { + yyv4833 = []ComponentCondition{} + yyc4833 = true + } + } + yyh4833.End() + if yyc4833 { + *v = yyv4833 + } +} + +func (x codecSelfer1234) encSliceComponentStatus(v []ComponentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4837 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4838 := &yyv4837 + yy4838.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceComponentStatus(v *[]ComponentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4839 := *v + yyh4839, yyl4839 := z.DecSliceHelperStart() + var yyc4839 bool + if yyl4839 == 0 { + if yyv4839 == nil { + yyv4839 = []ComponentStatus{} + yyc4839 = true + } else if len(yyv4839) != 0 { + yyv4839 = yyv4839[:0] + yyc4839 = true + } + } else if yyl4839 > 0 { + var yyrr4839, yyrl4839 int + var yyrt4839 bool + if yyl4839 > cap(yyv4839) { + + yyrg4839 := len(yyv4839) > 0 + yyv24839 := yyv4839 + yyrl4839, yyrt4839 = z.DecInferLen(yyl4839, z.DecBasicHandle().MaxInitLen, 280) + if yyrt4839 { + if yyrl4839 <= cap(yyv4839) { + yyv4839 = yyv4839[:yyrl4839] + } else { + yyv4839 = make([]ComponentStatus, yyrl4839) + } + } else { + yyv4839 = make([]ComponentStatus, yyrl4839) + } + yyc4839 = true + yyrr4839 = len(yyv4839) + if yyrg4839 { + copy(yyv4839, yyv24839) + } + } else if yyl4839 != len(yyv4839) { + yyv4839 = yyv4839[:yyl4839] + yyc4839 = true + } + yyj4839 := 0 + for ; yyj4839 < yyrr4839; yyj4839++ { + yyh4839.ElemContainerState(yyj4839) + if r.TryDecodeAsNil() { + yyv4839[yyj4839] = ComponentStatus{} + } else { + yyv4840 := &yyv4839[yyj4839] + yyv4840.CodecDecodeSelf(d) + } + + } + if yyrt4839 { + for ; yyj4839 < yyl4839; yyj4839++ { + yyv4839 = append(yyv4839, ComponentStatus{}) + yyh4839.ElemContainerState(yyj4839) + if r.TryDecodeAsNil() { + yyv4839[yyj4839] = ComponentStatus{} + } else { + yyv4841 := &yyv4839[yyj4839] + yyv4841.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4839 := 0 + for ; !r.CheckBreak(); yyj4839++ { + + if yyj4839 >= len(yyv4839) { + yyv4839 = append(yyv4839, ComponentStatus{}) // var yyz4839 ComponentStatus + yyc4839 = true + } + yyh4839.ElemContainerState(yyj4839) + if yyj4839 < len(yyv4839) { + if r.TryDecodeAsNil() { + yyv4839[yyj4839] = ComponentStatus{} + } else { + yyv4842 := &yyv4839[yyj4839] + yyv4842.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4839 < len(yyv4839) { + yyv4839 = yyv4839[:yyj4839] + yyc4839 = true + } else if yyj4839 == 0 && yyv4839 == nil { + yyv4839 = []ComponentStatus{} + yyc4839 = true + } + } + yyh4839.End() + if yyc4839 { + *v = yyv4839 + } +} + +func (x codecSelfer1234) encSliceDownwardAPIVolumeFile(v []DownwardAPIVolumeFile, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv4843 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy4844 := &yyv4843 + yy4844.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDownwardAPIVolumeFile(v *[]DownwardAPIVolumeFile, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv4845 := *v + yyh4845, yyl4845 := z.DecSliceHelperStart() + var yyc4845 bool + if yyl4845 == 0 { + if yyv4845 == nil { + yyv4845 = []DownwardAPIVolumeFile{} + yyc4845 = true + } else if len(yyv4845) != 0 { + yyv4845 = yyv4845[:0] + yyc4845 = true + } + } else if yyl4845 > 0 { + var yyrr4845, yyrl4845 int + var yyrt4845 bool + if yyl4845 > cap(yyv4845) { + + yyrg4845 := len(yyv4845) > 0 + yyv24845 := yyv4845 + yyrl4845, yyrt4845 = z.DecInferLen(yyl4845, z.DecBasicHandle().MaxInitLen, 40) + if yyrt4845 { + if yyrl4845 <= cap(yyv4845) { + yyv4845 = yyv4845[:yyrl4845] + } else { + yyv4845 = make([]DownwardAPIVolumeFile, yyrl4845) + } + } else { + yyv4845 = make([]DownwardAPIVolumeFile, yyrl4845) + } + yyc4845 = true + yyrr4845 = len(yyv4845) + if yyrg4845 { + copy(yyv4845, yyv24845) + } + } else if yyl4845 != len(yyv4845) { + yyv4845 = yyv4845[:yyl4845] + yyc4845 = true + } + yyj4845 := 0 + for ; yyj4845 < yyrr4845; yyj4845++ { + yyh4845.ElemContainerState(yyj4845) + if r.TryDecodeAsNil() { + yyv4845[yyj4845] = DownwardAPIVolumeFile{} + } else { + yyv4846 := &yyv4845[yyj4845] + yyv4846.CodecDecodeSelf(d) + } + + } + if yyrt4845 { + for ; yyj4845 < yyl4845; yyj4845++ { + yyv4845 = append(yyv4845, DownwardAPIVolumeFile{}) + yyh4845.ElemContainerState(yyj4845) + if r.TryDecodeAsNil() { + yyv4845[yyj4845] = DownwardAPIVolumeFile{} + } else { + yyv4847 := &yyv4845[yyj4845] + yyv4847.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj4845 := 0 + for ; !r.CheckBreak(); yyj4845++ { + + if yyj4845 >= len(yyv4845) { + yyv4845 = append(yyv4845, DownwardAPIVolumeFile{}) // var yyz4845 DownwardAPIVolumeFile + yyc4845 = true + } + yyh4845.ElemContainerState(yyj4845) + if yyj4845 < len(yyv4845) { + if r.TryDecodeAsNil() { + yyv4845[yyj4845] = DownwardAPIVolumeFile{} + } else { + yyv4848 := &yyv4845[yyj4845] + yyv4848.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj4845 < len(yyv4845) { + yyv4845 = yyv4845[:yyj4845] + yyc4845 = true + } else if yyj4845 == 0 && yyv4845 == nil { + yyv4845 = []DownwardAPIVolumeFile{} + yyc4845 = true + } + } + yyh4845.End() + if yyc4845 { + *v = yyv4845 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.go new file mode 100644 index 0000000000..94d8c56f36 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types.go @@ -0,0 +1,3507 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/types" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +// The comments for the structs and fields can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored and not exported to the SwaggerAPI. +// +// The aforementioned methods can be generated by hack/update-generated-swagger-docs.sh + +// Common string formats +// --------------------- +// Many fields in this API have formatting requirements. The commonly used +// formats are defined here. +// +// C_IDENTIFIER: This is a string that conforms to the definition of an "identifier" +// in the C language. This is captured by the following regex: +// [A-Za-z_][A-Za-z0-9_]* +// This defines the format, but not the length restriction, which should be +// specified at the definition of any field of this type. +// +// DNS_LABEL: This is a string, no more than 63 characters long, that conforms +// to the definition of a "label" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])? +// +// DNS_SUBDOMAIN: This is a string, no more than 253 characters long, that conforms +// to the definition of a "subdomain" in RFCs 1035 and 1123. This is captured +// by the following regex: +// [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)* +// or more simply: +// DNS_LABEL(\.DNS_LABEL)* +// +// IANA_SVC_NAME: This is a string, no more than 15 characters long, that +// conforms to the definition of IANA service name in RFC 6335. +// It must contains at least one letter [a-z] and it must contains only [a-z0-9-]. +// Hypens ('-') cannot be leading or trailing character of the string +// and cannot be adjacent to other hyphens. + +// ObjectMeta is metadata that all persisted resources must have, which includes all objects +// users must create. +type ObjectMeta struct { + // Name must be unique within a namespace. Is required when creating resources, although + // some resources may allow a client to request the generation of an appropriate name + // automatically. Name is primarily intended for creation idempotence and configuration + // definition. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // GenerateName is an optional prefix, used by the server, to generate a unique + // name ONLY IF the Name field has not been provided. + // If this field is used, the name returned to the client will be different + // than the name passed. This value will also be combined with a unique suffix. + // The provided value has the same validation rules as the Name field, + // and may be truncated by the length of the suffix required to make the value + // unique on the server. + // + // If this field is specified and the generated name exists, the server will + // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason + // ServerTimeout indicating a unique name could not be found in the time allotted, and the client + // should retry (optionally after the time indicated in the Retry-After header). + // + // Applied only if Name is not specified. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency + GenerateName string `json:"generateName,omitempty" protobuf:"bytes,2,opt,name=generateName"` + + // Namespace defines the space within each name must be unique. An empty namespace is + // equivalent to the "default" namespace, but "default" is the canonical representation. + // Not all objects are required to be scoped to a namespace - the value of this field for + // those objects will be empty. + // + // Must be a DNS_LABEL. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"` + + // SelfLink is a URL representing this object. + // Populated by the system. + // Read-only. + SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,4,opt,name=selfLink"` + + // UID is the unique in time and space value for this object. It is typically generated by + // the server on successful creation of a resource and is not allowed to change on PUT + // operations. + // + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + UID types.UID `json:"uid,omitempty" protobuf:"bytes,5,opt,name=uid,casttype=k8s.io/kubernetes/pkg/types.UID"` + + // An opaque value that represents the internal version of this object that can + // be used by clients to determine when objects have changed. May be used for optimistic + // concurrency, change detection, and the watch operation on a resource or set of resources. + // Clients must treat these values as opaque and passed unmodified back to the server. + // They may only be valid for a particular resource or set of resources. + // + // Populated by the system. + // Read-only. + // Value must be treated as opaque by clients and . + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,6,opt,name=resourceVersion"` + + // A sequence number representing a specific generation of the desired state. + // Populated by the system. Read-only. + Generation int64 `json:"generation,omitempty" protobuf:"varint,7,opt,name=generation"` + + // CreationTimestamp is a timestamp representing the server time when this object was + // created. It is not guaranteed to be set in happens-before order across separate operations. + // Clients may not set this value. It is represented in RFC3339 form and is in UTC. + // + // Populated by the system. + // Read-only. + // Null for lists. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + CreationTimestamp unversioned.Time `json:"creationTimestamp,omitempty" protobuf:"bytes,8,opt,name=creationTimestamp"` + + // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + // field is set by the server when a graceful deletion is requested by the user, and is not + // directly settable by a client. The resource will be deleted (no longer visible from + // resource lists, and not reachable by name) after the time in this field. Once set, this + // value may not be unset or be set further into the future, although it may be shortened + // or the resource may be deleted prior to this time. For example, a user may request that + // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination + // signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet + // will send a hard termination signal to the container. + // If not set, graceful deletion of the object has not been requested. + // + // Populated by the system when a graceful deletion is requested. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + DeletionTimestamp *unversioned.Time `json:"deletionTimestamp,omitempty" protobuf:"bytes,9,opt,name=deletionTimestamp"` + + // Number of seconds allowed for this object to gracefully terminate before + // it will be removed from the system. Only set when deletionTimestamp is also set. + // May only be shortened. + // Read-only. + DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty" protobuf:"varint,10,opt,name=deletionGracePeriodSeconds"` + + // Map of string keys and values that can be used to organize and categorize + // (scope and select) objects. May match selectors of replication controllers + // and services. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md + Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"` + + // Annotations is an unstructured key value map stored with a resource that may be + // set by external tools to store and retrieve arbitrary metadata. They are not + // queryable and should be preserved when modifying objects. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/annotations.md + Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"` + + // List of objects depended by this object. If ALL objects in the list have + // been deleted, this object will be garbage collected. If this object is managed by a controller, + // then an entry in this list will point to this controller, with the controller field set to true. + // There cannot be more than one managing controller. + OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" patchStrategy:"merge" patchMergeKey:"uid" protobuf:"bytes,13,rep,name=ownerReferences"` + + // Must be empty before the object is deleted from the registry. Each entry + // is an identifier for the responsible component that will remove the entry + // from the list. If the deletionTimestamp of the object is non-nil, entries + // in this list can only be removed. + Finalizers []string `json:"finalizers,omitempty" patchStrategy:"merge" protobuf:"bytes,14,rep,name=finalizers"` + + // The name of the cluster which the object belongs to. + // This is used to distinguish resources with same name and namespace in different clusters. + // This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. + ClusterName string `json:"clusterName,omitempty" protobuf:"bytes,15,opt,name=clusterName"` +} + +const ( + // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients + NamespaceDefault string = "default" + // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces + NamespaceAll string = "" +) + +// Volume represents a named volume in a pod that may be accessed by any container in the pod. +type Volume struct { + // Volume's name. + // Must be a DNS_LABEL and unique within the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // VolumeSource represents the location and type of the mounted volume. + // If not specified, the Volume is implied to be an EmptyDir. + // This implied behavior is deprecated and will be removed in a future version. + VolumeSource `json:",inline" protobuf:"bytes,2,opt,name=volumeSource"` +} + +// Represents the source of a volume to mount. +// Only one of its members may be specified. +type VolumeSource struct { + // HostPath represents a pre-existing file or directory on the host + // machine that is directly exposed to the container. This is generally + // used for system agents or other privileged things that are allowed + // to see the host machine. Most containers will NOT need this. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + // --- + // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not + // mount host directories as read/write. + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,1,opt,name=hostPath"` + // EmptyDir represents a temporary directory that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir + EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"` + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,3,opt,name=gcePersistentDisk"` + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,4,opt,name=awsElasticBlockStore"` + // GitRepo represents a git repository at a particular revision. + GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" protobuf:"bytes,5,opt,name=gitRepo"` + // Secret represents a secret that should populate this volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets + Secret *SecretVolumeSource `json:"secret,omitempty" protobuf:"bytes,6,opt,name=secret"` + // NFS represents an NFS mount on the host that shares a pod's lifetime + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,7,opt,name=nfs"` + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,8,opt,name=iscsi"` + // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"` + // PersistentVolumeClaimVolumeSource represents a reference to a + // PersistentVolumeClaim in the same namespace. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaim"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,11,opt,name=rbd"` + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,13,opt,name=cinder"` + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,14,opt,name=cephfs"` + // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running + Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,15,opt,name=flocker"` + // DownwardAPI represents downward API about the pod that should populate this volume + DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty" protobuf:"bytes,16,opt,name=downwardAPI"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,17,opt,name=fc"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,18,opt,name=azureFile"` + // ConfigMap represents a configMap that should populate this volume + ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,20,opt,name=vsphereVolume"` + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"` +} + +// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. +// This volume finds the bound PV and mounts that volume for the pod. A +// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another +// type of volume that is owned by someone else (the system). +type PersistentVolumeClaimVolumeSource struct { + // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + ClaimName string `json:"claimName" protobuf:"bytes,1,opt,name=claimName"` + // Will force the ReadOnly setting in VolumeMounts. + // Default false. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"` +} + +// PersistentVolumeSource is similar to VolumeSource but meant for the +// administrator who creates PVs. Exactly one of its members must be set. +type PersistentVolumeSource struct { + // GCEPersistentDisk represents a GCE Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,1,opt,name=gcePersistentDisk"` + // AWSElasticBlockStore represents an AWS Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,2,opt,name=awsElasticBlockStore"` + // HostPath represents a directory on the host. + // Provisioned by a developer or tester. + // This is useful for single-node development and testing only! + // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,3,opt,name=hostPath"` + // Glusterfs represents a Glusterfs volume that is attached to a host and + // exposed to the pod. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md + Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,4,opt,name=glusterfs"` + // NFS represents an NFS mount on the host. Provisioned by an admin. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,5,opt,name=nfs"` + // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md + RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,6,opt,name=rbd"` + // ISCSI represents an ISCSI Disk resource that is attached to a + // kubelet's host machine and then exposed to the pod. Provisioned by an admin. + ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,7,opt,name=iscsi"` + // Cinder represents a cinder volume attached and mounted on kubelets host machine + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,8,opt,name=cinder"` + // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime + CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,9,opt,name=cephfs"` + // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. + FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,10,opt,name=fc"` + // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running + Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,11,opt,name=flocker"` + // FlexVolume represents a generic volume resource that is + // provisioned/attached using an exec based plugin. This is an + // alpha feature and may change in future. + FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` + // AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,13,opt,name=azureFile"` + // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine + VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,14,opt,name=vsphereVolume"` + // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime + Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"` + // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"` +} + +// +genclient=true +// +nonNamespaced=true + +// PersistentVolume (PV) is a storage resource provisioned by an administrator. +// It is analogous to a node. +// More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md +type PersistentVolume struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines a specification of a persistent volume owned by the cluster. + // Provisioned by an administrator. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes + Spec PersistentVolumeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status represents the current information/status for the persistent volume. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes + Status PersistentVolumeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PersistentVolumeSpec is the specification of a persistent volume. +type PersistentVolumeSpec struct { + // A description of the persistent volume's resources and capacity. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` + // The actual volume backing the persistent volume. + PersistentVolumeSource `json:",inline" protobuf:"bytes,2,opt,name=persistentVolumeSource"` + // AccessModes contains all ways the volume can be mounted. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,3,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. + // Expected to be non-nil when bound. + // claim.VolumeName is the authoritative bind between PV and PVC. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#binding + ClaimRef *ObjectReference `json:"claimRef,omitempty" protobuf:"bytes,4,opt,name=claimRef"` + // What happens to a persistent volume when released from its claim. + // Valid options are Retain (default) and Recycle. + // Recycling must be supported by the volume plugin underlying this persistent volume. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#recycling-policy + PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty" protobuf:"bytes,5,opt,name=persistentVolumeReclaimPolicy,casttype=PersistentVolumeReclaimPolicy"` +} + +// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes. +type PersistentVolumeReclaimPolicy string + +const ( + // PersistentVolumeReclaimRecycle means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. + // The volume plugin must support Recycling. + PersistentVolumeReclaimRecycle PersistentVolumeReclaimPolicy = "Recycle" + // PersistentVolumeReclaimDelete means the volume will be deleted from Kubernetes on release from its claim. + // The volume plugin must support Deletion. + PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete" + // PersistentVolumeReclaimRetain means the volume will be left in its current phase (Released) for manual reclamation by the administrator. + // The default policy is Retain. + PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain" +) + +// PersistentVolumeStatus is the current status of a persistent volume. +type PersistentVolumeStatus struct { + // Phase indicates if a volume is available, bound to a claim, or released by a claim. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#phase + Phase PersistentVolumePhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumePhase"` + // A human-readable message indicating details about why the volume is in this state. + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` + // Reason is a brief CamelCase string that describes any failure and is meant + // for machine parsing and tidy display in the CLI. + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` +} + +// PersistentVolumeList is a list of PersistentVolume items. +type PersistentVolumeList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // List of persistent volumes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md + Items []PersistentVolume `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// PersistentVolumeClaim is a user's request for and claim to a persistent volume +type PersistentVolumeClaim struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired characteristics of a volume requested by a pod author. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + Spec PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status represents the current information/status of a persistent volume claim. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. +type PersistentVolumeClaimList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // A list of persistent volume claims. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims + Items []PersistentVolumeClaim `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// PersistentVolumeClaimSpec describes the common attributes of storage devices +// and allows a Source for provider-specific attributes +type PersistentVolumeClaimSpec struct { + // AccessModes contains the desired access modes the volume should have. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // A label query over volumes to consider for binding. + Selector *unversioned.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + // Resources represents the minimum resources the volume should have. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` + // VolumeName is the binding reference to the PersistentVolume backing this claim. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,3,opt,name=volumeName"` +} + +// PersistentVolumeClaimStatus is the current status of a persistent volume claim. +type PersistentVolumeClaimStatus struct { + // Phase represents the current phase of PersistentVolumeClaim. + Phase PersistentVolumeClaimPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumeClaimPhase"` + // AccessModes contains the actual access modes the volume backing the PVC has. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 + AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,2,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` + // Represents the actual resources of the underlying volume. + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,3,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` +} + +type PersistentVolumeAccessMode string + +const ( + // can be mounted read/write mode to exactly 1 host + ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce" + // can be mounted in read-only mode to many hosts + ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany" + // can be mounted in read/write mode to many hosts + ReadWriteMany PersistentVolumeAccessMode = "ReadWriteMany" +) + +type PersistentVolumePhase string + +const ( + // used for PersistentVolumes that are not available + VolumePending PersistentVolumePhase = "Pending" + // used for PersistentVolumes that are not yet bound + // Available volumes are held by the binder and matched to PersistentVolumeClaims + VolumeAvailable PersistentVolumePhase = "Available" + // used for PersistentVolumes that are bound + VolumeBound PersistentVolumePhase = "Bound" + // used for PersistentVolumes where the bound PersistentVolumeClaim was deleted + // released volumes must be recycled before becoming available again + // this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource + VolumeReleased PersistentVolumePhase = "Released" + // used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim + VolumeFailed PersistentVolumePhase = "Failed" +) + +type PersistentVolumeClaimPhase string + +const ( + // used for PersistentVolumeClaims that are not yet bound + ClaimPending PersistentVolumeClaimPhase = "Pending" + // used for PersistentVolumeClaims that are bound + ClaimBound PersistentVolumeClaimPhase = "Bound" + // used for PersistentVolumeClaims that lost their underlying + // PersistentVolume. The claim was bound to a PersistentVolume and this + // volume does not exist any longer and all data on it was lost. + ClaimLost PersistentVolumeClaimPhase = "Lost" +) + +// Represents a host path mapped into a pod. +// Host path volumes do not support ownership management or SELinux relabeling. +type HostPathVolumeSource struct { + // Path of the directory on the host. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` +} + +// Represents an empty directory for a pod. +// Empty directory volumes support ownership management and SELinux relabeling. +type EmptyDirVolumeSource struct { + // What type of storage medium should back this directory. + // The default is "" which means to use the node's default medium. + // Must be an empty string (default) or Memory. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir + Medium StorageMedium `json:"medium,omitempty" protobuf:"bytes,1,opt,name=medium,casttype=StorageMedium"` +} + +// Represents a Glusterfs mount that lasts the lifetime of a pod. +// Glusterfs volumes do not support ownership management or SELinux relabeling. +type GlusterfsVolumeSource struct { + // EndpointsName is the endpoint name that details Glusterfs topology. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + EndpointsName string `json:"endpoints" protobuf:"bytes,1,opt,name=endpoints"` + + // Path is the Glusterfs volume path. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + + // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a Rados Block Device mount that lasts the lifetime of a pod. +// RBD volumes support ownership management and SELinux relabeling. +type RBDVolumeSource struct { + // A collection of Ceph monitors. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` + // The rados image name. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + RBDImage string `json:"image" protobuf:"bytes,2,opt,name=image"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#rbd + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // The rados pool name. + // Default is rbd. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it. + RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"` + // The rados user name. + // Default is admin. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"` + // Keyring is the path to key ring for RBDUser. + // Default is /etc/ceph/keyring. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"` + // SecretRef is name of the authentication secret for RBDUser. If provided + // overrides keyring. + // Default is nil. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,7,opt,name=secretRef"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,8,opt,name=readOnly"` +} + +// Represents a cinder volume resource in Openstack. +// A Cinder volume must exist before mounting to a container. +// The volume must also be in the same region as the kubelet. +// Cinder volumes support ownership management and SELinux relabeling. +type CinderVolumeSource struct { + // volume id used to identify the volume in cinder + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a Ceph Filesystem mount that lasts the lifetime of a pod +// Cephfs volumes do not support ownership management or SELinux relabeling. +type CephFSVolumeSource struct { + // Required: Monitors is a collection of Ceph monitors + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` + // Optional: Used as the mounted root, rather than the full Ceph tree, default is / + Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` + // Optional: User is the rados user name, default is admin + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` + // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + SecretFile string `json:"secretFile,omitempty" protobuf:"bytes,4,opt,name=secretFile"` + // Optional: SecretRef is reference to the authentication secret for User, default is empty. + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` +} + +// Represents a Flocker volume mounted by the Flocker agent. +// Flocker volumes do not support ownership management or SELinux relabeling. +type FlockerVolumeSource struct { + // Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker + DatasetName string `json:"datasetName" protobuf:"bytes,1,opt,name=datasetName"` +} + +// StorageMedium defines ways that storage can be allocated to a volume. +type StorageMedium string + +const ( + StorageMediumDefault StorageMedium = "" // use whatever the default is for the node + StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) +) + +// Protocol defines network protocols supported for things like container ports. +type Protocol string + +const ( + // ProtocolTCP is the TCP protocol. + ProtocolTCP Protocol = "TCP" + // ProtocolUDP is the UDP protocol. + ProtocolUDP Protocol = "UDP" +) + +// Represents a Persistent Disk resource in Google Compute Engine. +// +// A GCE PD must exist before mounting to a container. The disk must +// also be in the same GCE project and zone as the kubelet. A GCE PD +// can only be mounted as read/write once or read-only many times. GCE +// PDs support ownership management and SELinux relabeling. +type GCEPersistentDiskVolumeSource struct { + // Unique name of the PD resource in GCE. Used to identify the disk in GCE. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + PDName string `json:"pdName" protobuf:"bytes,1,opt,name=pdName"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// Represents a Quobyte mount that lasts the lifetime of a pod. +// Quobyte volumes do not support ownership management or SELinux relabeling. +type QuobyteVolumeSource struct { + // Registry represents a single or multiple Quobyte Registry services + // specified as a string as host:port pair (multiple entries are separated with commas) + // which acts as the central registry for volumes + Registry string `json:"registry" protobuf:"bytes,1,opt,name=registry"` + + // Volume is a string that references an already created Quobyte volume by name. + Volume string `json:"volume" protobuf:"bytes,2,opt,name=volume"` + + // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. + // Defaults to false. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` + + // User to map volume access to + // Defaults to serivceaccount user + User string `json:"user,omitempty" protobuf:"bytes,4,opt,name=user"` + + // Group to map volume access to + // Default is no group + Group string `json:"group,omitempty" protobuf:"bytes,5,opt,name=group"` +} + +// FlexVolume represents a generic volume resource that is +// provisioned/attached using an exec based plugin. This is an alpha feature and may change in future. +type FlexVolumeSource struct { + // Driver is the name of the driver to use for this volume. + Driver string `json:"driver" protobuf:"bytes,1,opt,name=driver"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // Optional: SecretRef is reference to the secret object containing + // sensitive information to pass to the plugin scripts. This may be + // empty if no secret object is specified. If the secret object + // contains more than one secret, all secrets are passed to the plugin + // scripts. + SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` + // Optional: Extra command options if any. + Options map[string]string `json:"options,omitempty" protobuf:"bytes,5,rep,name=options"` +} + +// Represents a Persistent Disk resource in AWS. +// +// An AWS EBS disk must exist before mounting to a container. The disk +// must also be in the same AWS zone as the kubelet. An AWS EBS disk +// can only be mounted as read/write once. AWS EBS volumes support +// ownership management and SELinux relabeling. +type AWSElasticBlockStoreVolumeSource struct { + // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` + // The partition in the volume that you want to mount. + // If omitted, the default is to mount by volume name. + // Examples: For volume /dev/sda1, you specify the partition as "1". + // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` + // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". + // If omitted, the default is "false". + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// Represents a volume that is populated with the contents of a git repository. +// Git repo volumes do not support ownership management. +// Git repo volumes support SELinux relabeling. +type GitRepoVolumeSource struct { + // Repository URL + Repository string `json:"repository" protobuf:"bytes,1,opt,name=repository"` + // Commit hash for the specified revision. + Revision string `json:"revision,omitempty" protobuf:"bytes,2,opt,name=revision"` + // Target directory name. + // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + // git repository. Otherwise, if specified, the volume will contain the git repository in + // the subdirectory with the given name. + Directory string `json:"directory,omitempty" protobuf:"bytes,3,opt,name=directory"` +} + +// Adapts a Secret into a volume. +// +// The contents of the target Secret's Data field will be presented in a volume +// as files using the keys in the Data field as the file names. +// Secret volumes support ownership management and SELinux relabeling. +type SecretVolumeSource struct { + // Name of the secret in the pod's namespace to use. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets + SecretName string `json:"secretName,omitempty" protobuf:"bytes,1,opt,name=secretName"` + // If unspecified, each key-value pair in the Data field of the referenced + // Secret will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the Secret, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"bytes,3,opt,name=defaultMode"` +} + +const ( + SecretVolumeSourceDefaultMode int32 = 0644 +) + +// Represents an NFS mount that lasts the lifetime of a pod. +// NFS volumes do not support ownership management or SELinux relabeling. +type NFSVolumeSource struct { + // Server is the hostname or IP address of the NFS server. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + Server string `json:"server" protobuf:"bytes,1,opt,name=server"` + + // Path that is exported by the NFS server. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + + // ReadOnly here will force + // the NFS export to be mounted with read-only permissions. + // Defaults to false. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents an ISCSI disk. +// ISCSI volumes can only be mounted as read/write once. +// ISCSI volumes support ownership management and SELinux relabeling. +type ISCSIVolumeSource struct { + // iSCSI target portal. The portal is either an IP or ip_addr:port if the port + // is other than default (typically TCP ports 860 and 3260). + TargetPortal string `json:"targetPortal" protobuf:"bytes,1,opt,name=targetPortal"` + // Target iSCSI Qualified Name. + IQN string `json:"iqn" protobuf:"bytes,2,opt,name=iqn"` + // iSCSI target lun number. + Lun int32 `json:"lun" protobuf:"varint,3,opt,name=lun"` + // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport. + ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"` + // Filesystem type of the volume that you want to mount. + // Tip: Ensure that the filesystem type is supported by the host operating system. + // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#iscsi + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty" protobuf:"bytes,5,opt,name=fsType"` + // ReadOnly here will force the ReadOnly setting in VolumeMounts. + // Defaults to false. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` +} + +// Represents a Fibre Channel volume. +// Fibre Channel volumes can only be mounted as read/write once. +// Fibre Channel volumes support ownership management and SELinux relabeling. +type FCVolumeSource struct { + // Required: FC target worldwide names (WWNs) + TargetWWNs []string `json:"targetWWNs" protobuf:"bytes,1,rep,name=targetWWNs"` + // Required: FC target lun number + Lun *int32 `json:"lun" protobuf:"varint,2,opt,name=lun"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // TODO: how do we prevent errors in the filesystem from compromising the machine + FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` + // Optional: Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` +} + +// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. +type AzureFileVolumeSource struct { + // the name of secret that contains Azure Storage Account Name and Key + SecretName string `json:"secretName" protobuf:"bytes,1,opt,name=secretName"` + // Share Name + ShareName string `json:"shareName" protobuf:"bytes,2,opt,name=shareName"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` +} + +// Represents a vSphere volume resource. +type VsphereVirtualDiskVolumeSource struct { + // Path that identifies vSphere volume vmdk + VolumePath string `json:"volumePath" protobuf:"bytes,1,opt,name=volumePath"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` +} +type AzureDataDiskCachingMode string + +const ( + AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" + AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" + AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" +) + +// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. +type AzureDiskVolumeSource struct { + // The Name of the data disk in the blob storage + DiskName string `json:"diskName" protobuf:"bytes,1,opt,name=diskName"` + // The URI the data disk in the blob storage + DataDiskURI string `json:"diskURI" protobuf:"bytes,2,opt,name=diskURI"` + // Host Caching mode: None, Read Only, Read Write. + CachingMode *AzureDataDiskCachingMode `json:"cachingMode,omitempty" protobuf:"bytes,3,opt,name=cachingMode,casttype=AzureDataDiskCachingMode"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + FSType *string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + ReadOnly *bool `json:"readOnly,omitempty" protobuf:"varint,5,opt,name=readOnly"` +} + +// Adapts a ConfigMap into a volume. +// +// The contents of the target ConfigMap's Data field will be presented in a +// volume as files using the keys in the Data field as the file names, unless +// the items element is populated with specific mappings of keys to paths. +// ConfigMap volumes support ownership management and SELinux relabeling. +type ConfigMapVolumeSource struct { + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // If unspecified, each key-value pair in the Data field of the referenced + // ConfigMap will be projected into the volume as a file whose name is the + // key and content is the value. If specified, the listed keys will be + // projected into the specified paths, and unlisted keys will not be + // present. If a key is specified which is not present in the ConfigMap, + // the volume setup will error. Paths must be relative and may not contain + // the '..' path or start with '..'. + Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,3,opt,name=defaultMode"` +} + +const ( + ConfigMapVolumeSourceDefaultMode int32 = 0644 +) + +// Maps a string key to a path within a volume. +type KeyToPath struct { + // The key to project. + Key string `json:"key" protobuf:"bytes,1,opt,name=key"` + + // The relative path of the file to map the key to. + // May not be an absolute path. + // May not contain the path element '..'. + // May not start with the string '..'. + Path string `json:"path" protobuf:"bytes,2,opt,name=path"` + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + Mode *int32 `json:"mode,omitempty" protobuf:"varint,3,opt,name=mode"` +} + +// ContainerPort represents a network port in a single container. +type ContainerPort struct { + // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + // named port in a pod must have a unique name. Name for the port that can be + // referred to by services. + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + // Number of port to expose on the host. + // If specified, this must be a valid port number, 0 < x < 65536. + // If HostNetwork is specified, this must match ContainerPort. + // Most containers do not need this. + HostPort int32 `json:"hostPort,omitempty" protobuf:"varint,2,opt,name=hostPort"` + // Number of port to expose on the pod's IP address. + // This must be a valid port number, 0 < x < 65536. + ContainerPort int32 `json:"containerPort" protobuf:"varint,3,opt,name=containerPort"` + // Protocol for port. Must be UDP or TCP. + // Defaults to "TCP". + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,4,opt,name=protocol,casttype=Protocol"` + // What host IP to bind the external port to. + HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` +} + +// VolumeMount describes a mounting of a Volume within a container. +type VolumeMount struct { + // This must match the Name of a Volume. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Mounted read-only if true, read-write otherwise (false or unspecified). + // Defaults to false. + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"` + // Path within the container at which the volume should be mounted. Must + // not contain ':'. + MountPath string `json:"mountPath" protobuf:"bytes,3,opt,name=mountPath"` + // Path within the volume from which the container's volume should be mounted. + // Defaults to "" (volume's root). + SubPath string `json:"subPath,omitempty" protobuf:"bytes,4,opt,name=subPath"` +} + +// EnvVar represents an environment variable present in a Container. +type EnvVar struct { + // Name of the environment variable. Must be a C_IDENTIFIER. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + + // Optional: no more than one of the following may be specified. + + // Variable references $(VAR_NAME) are expanded + // using the previous defined environment variables in the container and + // any service environment variables. If a variable cannot be resolved, + // the reference in the input string will be unchanged. The $(VAR_NAME) + // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + // references will never be expanded, regardless of whether the variable + // exists or not. + // Defaults to "". + Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` + // Source for the environment variable's value. Cannot be used if value is not empty. + ValueFrom *EnvVarSource `json:"valueFrom,omitempty" protobuf:"bytes,3,opt,name=valueFrom"` +} + +// EnvVarSource represents a source for the value of an EnvVar. +type EnvVarSource struct { + // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, + // spec.nodeName, spec.serviceAccountName, status.podIP. + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty" protobuf:"bytes,1,opt,name=fieldRef"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" protobuf:"bytes,2,opt,name=resourceFieldRef"` + // Selects a key of a ConfigMap. + ConfigMapKeyRef *ConfigMapKeySelector `json:"configMapKeyRef,omitempty" protobuf:"bytes,3,opt,name=configMapKeyRef"` + // Selects a key of a secret in the pod's namespace + SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty" protobuf:"bytes,4,opt,name=secretKeyRef"` +} + +// ObjectFieldSelector selects an APIVersioned field of an object. +type ObjectFieldSelector struct { + // Version of the schema the FieldPath is written in terms of, defaults to "v1". + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` + // Path of the field to select in the specified API version. + FieldPath string `json:"fieldPath" protobuf:"bytes,2,opt,name=fieldPath"` +} + +// ResourceFieldSelector represents container resources (cpu, memory) and their output format +type ResourceFieldSelector struct { + // Container name: required for volumes, optional for env vars + ContainerName string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"` + // Required: resource to select + Resource string `json:"resource" protobuf:"bytes,2,opt,name=resource"` + // Specifies the output format of the exposed resources, defaults to "1" + Divisor resource.Quantity `json:"divisor,omitempty" protobuf:"bytes,3,opt,name=divisor"` +} + +// Selects a key from a ConfigMap. +type ConfigMapKeySelector struct { + // The ConfigMap to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // The key to select. + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` +} + +// SecretKeySelector selects a key of a Secret. +type SecretKeySelector struct { + // The name of the secret in the pod's namespace to select from. + LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` + // The key of the secret to select from. Must be a valid secret key. + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` +} + +// HTTPHeader describes a custom header to be used in HTTP probes +type HTTPHeader struct { + // The header field name + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // The header field value + Value string `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +// HTTPGetAction describes an action based on HTTP Get requests. +type HTTPGetAction struct { + // Path to access on the HTTP server. + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Name or number of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + Port intstr.IntOrString `json:"port" protobuf:"bytes,2,opt,name=port"` + // Host name to connect to, defaults to the pod IP. You probably want to set + // "Host" in httpHeaders instead. + Host string `json:"host,omitempty" protobuf:"bytes,3,opt,name=host"` + // Scheme to use for connecting to the host. + // Defaults to HTTP. + Scheme URIScheme `json:"scheme,omitempty" protobuf:"bytes,4,opt,name=scheme,casttype=URIScheme"` + // Custom headers to set in the request. HTTP allows repeated headers. + HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty" protobuf:"bytes,5,rep,name=httpHeaders"` +} + +// URIScheme identifies the scheme used for connection to a host for Get actions +type URIScheme string + +const ( + // URISchemeHTTP means that the scheme used will be http:// + URISchemeHTTP URIScheme = "HTTP" + // URISchemeHTTPS means that the scheme used will be https:// + URISchemeHTTPS URIScheme = "HTTPS" +) + +// TCPSocketAction describes an action based on opening a socket +type TCPSocketAction struct { + // Number or name of the port to access on the container. + // Number must be in the range 1 to 65535. + // Name must be an IANA_SVC_NAME. + Port intstr.IntOrString `json:"port" protobuf:"bytes,1,opt,name=port"` +} + +// ExecAction describes a "run in container" action. +type ExecAction struct { + // Command is the command line to execute inside the container, the working directory for the + // command is root ('/') in the container's filesystem. The command is simply exec'd, it is + // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + // a shell, you need to explicitly call out to that shell. + // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + Command []string `json:"command,omitempty" protobuf:"bytes,1,rep,name=command"` +} + +// Probe describes a health check to be performed against a container to determine whether it is +// alive or ready to receive traffic. +type Probe struct { + // The action taken to determine the health of a container + Handler `json:",inline" protobuf:"bytes,1,opt,name=handler"` + // Number of seconds after the container has started before liveness probes are initiated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty" protobuf:"varint,2,opt,name=initialDelaySeconds"` + // Number of seconds after which the probe times out. + // Defaults to 1 second. Minimum value is 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + TimeoutSeconds int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,3,opt,name=timeoutSeconds"` + // How often (in seconds) to perform the probe. + // Default to 10 seconds. Minimum value is 1. + PeriodSeconds int32 `json:"periodSeconds,omitempty" protobuf:"varint,4,opt,name=periodSeconds"` + // Minimum consecutive successes for the probe to be considered successful after having failed. + // Defaults to 1. Must be 1 for liveness. Minimum value is 1. + SuccessThreshold int32 `json:"successThreshold,omitempty" protobuf:"varint,5,opt,name=successThreshold"` + // Minimum consecutive failures for the probe to be considered failed after having succeeded. + // Defaults to 3. Minimum value is 1. + FailureThreshold int32 `json:"failureThreshold,omitempty" protobuf:"varint,6,opt,name=failureThreshold"` +} + +// PullPolicy describes a policy for if/when to pull a container image +type PullPolicy string + +const ( + // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails. + PullAlways PullPolicy = "Always" + // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present + PullNever PullPolicy = "Never" + // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. + PullIfNotPresent PullPolicy = "IfNotPresent" +) + +// Capability represent POSIX capabilities type +type Capability string + +// Adds and removes POSIX capabilities from running containers. +type Capabilities struct { + // Added capabilities + Add []Capability `json:"add,omitempty" protobuf:"bytes,1,rep,name=add,casttype=Capability"` + // Removed capabilities + Drop []Capability `json:"drop,omitempty" protobuf:"bytes,2,rep,name=drop,casttype=Capability"` +} + +// ResourceRequirements describes the compute resource requirements. +type ResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // More info: http://kubernetes.io/docs/user-guide/compute-resources/ + Limits ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"` + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. + // More info: http://kubernetes.io/docs/user-guide/compute-resources/ + Requests ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"` +} + +const ( + // TerminationMessagePathDefault means the default path to capture the application termination message running in a container + TerminationMessagePathDefault string = "/dev/termination-log" +) + +// A single application container that you want to run within a pod. +type Container struct { + // Name of the container specified as a DNS_LABEL. + // Each container in a pod must have a unique name (DNS_LABEL). + // Cannot be updated. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Docker image name. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md + Image string `json:"image,omitempty" protobuf:"bytes,2,opt,name=image"` + // Entrypoint array. Not executed within a shell. + // The docker image's ENTRYPOINT is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands + Command []string `json:"command,omitempty" protobuf:"bytes,3,rep,name=command"` + // Arguments to the entrypoint. + // The docker image's CMD is used if this is not provided. + // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax + // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + // regardless of whether the variable exists or not. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands + Args []string `json:"args,omitempty" protobuf:"bytes,4,rep,name=args"` + // Container's working directory. + // If not specified, the container runtime's default will be used, which + // might be configured in the container image. + // Cannot be updated. + WorkingDir string `json:"workingDir,omitempty" protobuf:"bytes,5,opt,name=workingDir"` + // List of ports to expose from the container. Exposing a port here gives + // the system additional information about the network connections a + // container uses, but is primarily informational. Not specifying a port here + // DOES NOT prevent that port from being exposed. Any port which is + // listening on the default "0.0.0.0" address inside a container will be + // accessible from the network. + // Cannot be updated. + Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"` + // List of environment variables to set in the container. + // Cannot be updated. + Env []EnvVar `json:"env,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,7,rep,name=env"` + // Compute Resources required by this container. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources + Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,8,opt,name=resources"` + // Pod volumes to mount into the container's filesystem. + // Cannot be updated. + VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,9,rep,name=volumeMounts"` + // Periodic probe of container liveness. + // Container will be restarted if the probe fails. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,10,opt,name=livenessProbe"` + // Periodic probe of container service readiness. + // Container will be removed from service endpoints if the probe fails. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes + ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"` + // Actions that the management system should take in response to container lifecycle events. + // Cannot be updated. + Lifecycle *Lifecycle `json:"lifecycle,omitempty" protobuf:"bytes,12,opt,name=lifecycle"` + // Optional: Path at which the file to which the container's termination message + // will be written is mounted into the container's filesystem. + // Message written is intended to be brief final status, such as an assertion failure message. + // Defaults to /dev/termination-log. + // Cannot be updated. + TerminationMessagePath string `json:"terminationMessagePath,omitempty" protobuf:"bytes,13,opt,name=terminationMessagePath"` + // Image pull policy. + // One of Always, Never, IfNotPresent. + // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#updating-images + ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty" protobuf:"bytes,14,opt,name=imagePullPolicy,casttype=PullPolicy"` + // Security options the pod should run with. + // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md + SecurityContext *SecurityContext `json:"securityContext,omitempty" protobuf:"bytes,15,opt,name=securityContext"` + + // Variables for interactive containers, these have very specialized use-cases (e.g. debugging) + // and shouldn't be used for general purpose containers. + + // Whether this container should allocate a buffer for stdin in the container runtime. If this + // is not set, reads from stdin in the container will always result in EOF. + // Default is false. + Stdin bool `json:"stdin,omitempty" protobuf:"varint,16,opt,name=stdin"` + // Whether the container runtime should close the stdin channel after it has been opened by + // a single attach. When stdin is true the stdin stream will remain open across multiple attach + // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + // first client attaches to stdin, and then remains open and accepts data until the client disconnects, + // at which time stdin is closed and remains closed until the container is restarted. If this + // flag is false, a container processes that reads from stdin will never receive an EOF. + // Default is false + StdinOnce bool `json:"stdinOnce,omitempty" protobuf:"varint,17,opt,name=stdinOnce"` + // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + // Default is false. + TTY bool `json:"tty,omitempty" protobuf:"varint,18,opt,name=tty"` +} + +// Handler defines a specific action that should be taken +// TODO: pass structured data to these actions, and document that data here. +type Handler struct { + // One and only one of the following should be specified. + // Exec specifies the action to take. + Exec *ExecAction `json:"exec,omitempty" protobuf:"bytes,1,opt,name=exec"` + // HTTPGet specifies the http request to perform. + HTTPGet *HTTPGetAction `json:"httpGet,omitempty" protobuf:"bytes,2,opt,name=httpGet"` + // TCPSocket specifies an action involving a TCP port. + // TCP hooks not yet supported + // TODO: implement a realistic TCP lifecycle hook + TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty" protobuf:"bytes,3,opt,name=tcpSocket"` +} + +// Lifecycle describes actions that the management system should take in response to container lifecycle +// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks +// until the action is complete, unless the container process fails, in which case the handler is aborted. +type Lifecycle struct { + // PostStart is called immediately after a container is created. If the handler fails, + // the container is terminated and restarted according to its restart policy. + // Other management of the container blocks until the hook completes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details + PostStart *Handler `json:"postStart,omitempty" protobuf:"bytes,1,opt,name=postStart"` + // PreStop is called immediately before a container is terminated. + // The container is terminated after the handler completes. + // The reason for termination is passed to the handler. + // Regardless of the outcome of the handler, the container is eventually terminated. + // Other management of the container blocks until the hook completes. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details + PreStop *Handler `json:"preStop,omitempty" protobuf:"bytes,2,opt,name=preStop"` +} + +type ConditionStatus string + +// These are valid condition statuses. "ConditionTrue" means a resource is in the condition. +// "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes +// can't decide if a resource is in the condition or not. In the future, we could add other +// intermediate conditions, e.g. ConditionDegraded. +const ( + ConditionTrue ConditionStatus = "True" + ConditionFalse ConditionStatus = "False" + ConditionUnknown ConditionStatus = "Unknown" +) + +// ContainerStateWaiting is a waiting state of a container. +type ContainerStateWaiting struct { + // (brief) reason the container is not yet running. + Reason string `json:"reason,omitempty" protobuf:"bytes,1,opt,name=reason"` + // Message regarding why the container is not yet running. + Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` +} + +// ContainerStateRunning is a running state of a container. +type ContainerStateRunning struct { + // Time at which the container was last (re-)started + StartedAt unversioned.Time `json:"startedAt,omitempty" protobuf:"bytes,1,opt,name=startedAt"` +} + +// ContainerStateTerminated is a terminated state of a container. +type ContainerStateTerminated struct { + // Exit status from the last termination of the container + ExitCode int32 `json:"exitCode" protobuf:"varint,1,opt,name=exitCode"` + // Signal from the last termination of the container + Signal int32 `json:"signal,omitempty" protobuf:"varint,2,opt,name=signal"` + // (brief) reason from the last termination of the container + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Message regarding the last termination of the container + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + // Time at which previous execution of the container started + StartedAt unversioned.Time `json:"startedAt,omitempty" protobuf:"bytes,5,opt,name=startedAt"` + // Time at which the container last terminated + FinishedAt unversioned.Time `json:"finishedAt,omitempty" protobuf:"bytes,6,opt,name=finishedAt"` + // Container's ID in the format 'docker://<container_id>' + ContainerID string `json:"containerID,omitempty" protobuf:"bytes,7,opt,name=containerID"` +} + +// ContainerState holds a possible state of container. +// Only one of its members may be specified. +// If none of them is specified, the default one is ContainerStateWaiting. +type ContainerState struct { + // Details about a waiting container + Waiting *ContainerStateWaiting `json:"waiting,omitempty" protobuf:"bytes,1,opt,name=waiting"` + // Details about a running container + Running *ContainerStateRunning `json:"running,omitempty" protobuf:"bytes,2,opt,name=running"` + // Details about a terminated container + Terminated *ContainerStateTerminated `json:"terminated,omitempty" protobuf:"bytes,3,opt,name=terminated"` +} + +// ContainerStatus contains details for the current status of this container. +type ContainerStatus struct { + // This must be a DNS_LABEL. Each container in a pod must have a unique name. + // Cannot be updated. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Details about the container's current condition. + State ContainerState `json:"state,omitempty" protobuf:"bytes,2,opt,name=state"` + // Details about the container's last termination condition. + LastTerminationState ContainerState `json:"lastState,omitempty" protobuf:"bytes,3,opt,name=lastState"` + // Specifies whether the container has passed its readiness probe. + Ready bool `json:"ready" protobuf:"varint,4,opt,name=ready"` + // The number of times the container has been restarted, currently based on + // the number of dead containers that have not yet been removed. + // Note that this is calculated from dead containers. But those containers are subject to + // garbage collection. This value will get capped at 5 by GC. + RestartCount int32 `json:"restartCount" protobuf:"varint,5,opt,name=restartCount"` + // The image the container is running. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md + // TODO(dchen1107): Which image the container is running with? + Image string `json:"image" protobuf:"bytes,6,opt,name=image"` + // ImageID of the container's image. + ImageID string `json:"imageID" protobuf:"bytes,7,opt,name=imageID"` + // Container's ID in the format 'docker://<container_id>'. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#container-information + ContainerID string `json:"containerID,omitempty" protobuf:"bytes,8,opt,name=containerID"` +} + +// PodPhase is a label for the condition of a pod at the current time. +type PodPhase string + +// These are the valid statuses of pods. +const ( + // PodPending means the pod has been accepted by the system, but one or more of the containers + // has not been started. This includes time before being bound to a node, as well as time spent + // pulling images onto the host. + PodPending PodPhase = "Pending" + // PodRunning means the pod has been bound to a node and all of the containers have been started. + // At least one container is still running or is in the process of being restarted. + PodRunning PodPhase = "Running" + // PodSucceeded means that all containers in the pod have voluntarily terminated + // with a container exit code of 0, and the system is not going to restart any of these containers. + PodSucceeded PodPhase = "Succeeded" + // PodFailed means that all containers in the pod have terminated, and at least one container has + // terminated in a failure (exited with a non-zero exit code or was stopped by the system). + PodFailed PodPhase = "Failed" + // PodUnknown means that for some reason the state of the pod could not be obtained, typically due + // to an error in communicating with the host of the pod. + PodUnknown PodPhase = "Unknown" +) + +// PodConditionType is a valid value for PodCondition.Type +type PodConditionType string + +// These are valid conditions of pod. +const ( + // PodScheduled represents status of the scheduling process for this pod. + PodScheduled PodConditionType = "PodScheduled" + // PodReady means the pod is able to service requests and should be added to the + // load balancing pools of all matching services. + PodReady PodConditionType = "Ready" +) + +// PodCondition contains details for the current condition of this pod. +type PodCondition struct { + // Type is the type of the condition. + // Currently only Ready. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + Type PodConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PodConditionType"` + // Status is the status of the condition. + // Can be True, False, Unknown. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we probed the condition. + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transitioned from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // Unique, one-word, CamelCase reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human-readable message indicating details about last transition. + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// RestartPolicy describes how the container should be restarted. +// Only one of the following restart policies may be specified. +// If none of the following policies is specified, the default one +// is RestartPolicyAlways. +type RestartPolicy string + +const ( + RestartPolicyAlways RestartPolicy = "Always" + RestartPolicyOnFailure RestartPolicy = "OnFailure" + RestartPolicyNever RestartPolicy = "Never" +) + +// DNSPolicy defines how a pod's DNS will be configured. +type DNSPolicy string + +const ( + // DNSClusterFirst indicates that the pod should use cluster DNS + // first, if it is available, then fall back on the default (as + // determined by kubelet) DNS settings. + DNSClusterFirst DNSPolicy = "ClusterFirst" + + // DNSDefault indicates that the pod should use the default (as + // determined by kubelet) DNS settings. + DNSDefault DNSPolicy = "Default" + + DefaultTerminationGracePeriodSeconds = 30 +) + +// A node selector represents the union of the results of one or more label queries +// over a set of nodes; that is, it represents the OR of the selectors represented +// by the node selector terms. +type NodeSelector struct { + //Required. A list of node selector terms. The terms are ORed. + NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms" protobuf:"bytes,1,rep,name=nodeSelectorTerms"` +} + +// A null or empty node selector term matches no objects. +type NodeSelectorTerm struct { + //Required. A list of node selector requirements. The requirements are ANDed. + MatchExpressions []NodeSelectorRequirement `json:"matchExpressions" protobuf:"bytes,1,rep,name=matchExpressions"` +} + +// A node selector requirement is a selector that contains values, a key, and an operator +// that relates the key and values. +type NodeSelectorRequirement struct { + // The label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // Represents a key's relationship to a set of values. + // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + Operator NodeSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=NodeSelectorOperator"` + // An array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. If the operator is Gt or Lt, the values + // array must have a single element, which will be interpreted as an integer. + // This array is replaced during a strategic merge patch. + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A node selector operator is the set of operators that can be used in +// a node selector requirement. +type NodeSelectorOperator string + +const ( + NodeSelectorOpIn NodeSelectorOperator = "In" + NodeSelectorOpNotIn NodeSelectorOperator = "NotIn" + NodeSelectorOpExists NodeSelectorOperator = "Exists" + NodeSelectorOpDoesNotExist NodeSelectorOperator = "DoesNotExist" + NodeSelectorOpGt NodeSelectorOperator = "Gt" + NodeSelectorOpLt NodeSelectorOperator = "Lt" +) + +// Affinity is a group of affinity scheduling rules. +type Affinity struct { + // Describes node affinity scheduling rules for the pod. + NodeAffinity *NodeAffinity `json:"nodeAffinity,omitempty" protobuf:"bytes,1,opt,name=nodeAffinity"` + // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). + PodAffinity *PodAffinity `json:"podAffinity,omitempty" protobuf:"bytes,2,opt,name=podAffinity"` + // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). + PodAntiAffinity *PodAntiAffinity `json:"podAntiAffinity,omitempty" protobuf:"bytes,3,opt,name=podAntiAffinity"` +} + +// Pod affinity is a group of inter pod affinity scheduling rules. +type PodAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// Pod anti affinity is a group of inter pod anti affinity scheduling rules. +type PodAntiAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system will try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + // If the anti-affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the anti-affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to a pod label update), the + // system may or may not try to eventually evict the pod from its node. + // When there are multiple elements, the lists of nodes corresponding to each + // podAffinityTerm are intersected, i.e. all terms must be satisfied. + RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,rep,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the anti-affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling anti-affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) +type WeightedPodAffinityTerm struct { + // weight associated with matching the corresponding podAffinityTerm, + // in the range 1-100. + Weight int32 `json:"weight" protobuf:"varint,1,opt,name=weight"` + // Required. A pod affinity term, associated with the corresponding weight. + PodAffinityTerm PodAffinityTerm `json:"podAffinityTerm" protobuf:"bytes,2,opt,name=podAffinityTerm"` +} + +// Defines a set of pods (namely those matching the labelSelector +// relative to the given namespace(s)) that this pod should be +// co-located (affinity) or not co-located (anti-affinity) with, +// where co-located is defined as running on a node whose value of +// the label with key <topologyKey> tches that of any node on which +// a pod of the set of pods is running +type PodAffinityTerm struct { + // A label query over a set of resources, in this case pods. + LabelSelector *unversioned.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // namespaces specifies which namespaces the labelSelector applies to (matches against); + // nil list means "this pod's namespace," empty list means "all namespaces" + // The json tag here is not "omitempty" since we need to distinguish nil and empty. + // See https://golang.org/pkg/encoding/json/#Marshal for more details. + Namespaces []string `json:"namespaces" protobuf:"bytes,2,rep,name=namespaces"` + // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + // the labelSelector in the specified namespaces, where co-located is defined as running on a node + // whose value of the label with key topologyKey matches that of any node on which any of the + // selected pods is running. + // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies" + // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); + // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed. + TopologyKey string `json:"topologyKey,omitempty" protobuf:"bytes,3,opt,name=topologyKey"` +} + +// Node affinity is a group of node affinity scheduling rules. +type NodeAffinity struct { + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // will try to eventually evict the pod from its node. + // RequiredDuringSchedulingRequiredDuringExecution *NodeSelector `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"` + + // If the affinity requirements specified by this field are not met at + // scheduling time, the pod will not be scheduled onto the node. + // If the affinity requirements specified by this field cease to be met + // at some point during pod execution (e.g. due to an update), the system + // may or may not try to eventually evict the pod from its node. + RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,1,opt,name=requiredDuringSchedulingIgnoredDuringExecution"` + // The scheduler will prefer to schedule pods to nodes that satisfy + // the affinity expressions specified by this field, but it may choose + // a node that violates one or more of the expressions. The node that is + // most preferred is the one with the greatest sum of weights, i.e. + // for each node that meets all of the scheduling requirements (resource + // request, requiredDuringScheduling affinity expressions, etc.), + // compute a sum by iterating through the elements of this field and adding + // "weight" to the sum if the node matches the corresponding matchExpressions; the + // node(s) with the highest sum are the most preferred. + PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty" protobuf:"bytes,2,rep,name=preferredDuringSchedulingIgnoredDuringExecution"` +} + +// An empty preferred scheduling term matches all objects with implicit weight 0 +// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +type PreferredSchedulingTerm struct { + // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + Weight int32 `json:"weight" protobuf:"varint,1,opt,name=weight"` + // A node selector term, associated with the corresponding weight. + Preference NodeSelectorTerm `json:"preference" protobuf:"bytes,2,opt,name=preference"` +} + +// The node this Taint is attached to has the effect "effect" on +// any pod that that does not tolerate the Taint. +type Taint struct { + // Required. The taint key to be applied to a node. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // Required. The taint value corresponding to the taint key. + Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"` + // Required. The effect of the taint on pods + // that do not tolerate the taint. + // Valid effects are NoSchedule and PreferNoSchedule. + Effect TaintEffect `json:"effect" protobuf:"bytes,3,opt,name=effect,casttype=TaintEffect"` +} + +type TaintEffect string + +const ( + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // but allow all pods submitted to Kubelet without going through the scheduler + // to start, and allow all already-running pods to continue running. + // Enforced by the scheduler. + TaintEffectNoSchedule TaintEffect = "NoSchedule" + // Like TaintEffectNoSchedule, but the scheduler tries not to schedule + // new pods onto the node, rather than prohibiting new pods from scheduling + // onto the node entirely. Enforced by the scheduler. + TaintEffectPreferNoSchedule TaintEffect = "PreferNoSchedule" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // do not allow pods to start on Kubelet unless they tolerate the taint, + // but allow all already-running pods to continue running. + // Enforced by the scheduler and Kubelet. + // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit" + // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. + // Do not allow new pods to schedule onto the node unless they tolerate the taint, + // do not allow pods to start on Kubelet unless they tolerate the taint, + // and evict any already-running pods that do not tolerate the taint. + // Enforced by the scheduler and Kubelet. + // TaintEffectNoScheduleNoAdmitNoExecute = "NoScheduleNoAdmitNoExecute" +) + +// The pod this Toleration is attached to tolerates any taint that matches +// the triple <key,value,effect> using the matching operator <operator>. +type Toleration struct { + // Required. Key is the taint key that the toleration applies to. + Key string `json:"key,omitempty" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a pod can + // tolerate all taints of a particular category. + Operator TolerationOperator `json:"operator,omitempty" protobuf:"bytes,2,opt,name=operator,casttype=TolerationOperator"` + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value should be empty, otherwise just a regular string. + Value string `json:"value,omitempty" protobuf:"bytes,3,opt,name=value"` + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule and PreferNoSchedule. + Effect TaintEffect `json:"effect,omitempty" protobuf:"bytes,4,opt,name=effect,casttype=TaintEffect"` + // TODO: For forgiveness (#1574), we'd eventually add at least a grace period + // here, and possibly an occurrence threshold and period. +} + +// A toleration operator is the set of operators that can be used in a toleration. +type TolerationOperator string + +const ( + TolerationOpExists TolerationOperator = "Exists" + TolerationOpEqual TolerationOperator = "Equal" +) + +const ( + // This annotation key will be used to contain an array of v1 JSON encoded Containers + // for init containers. The annotation will be placed into the internal type and cleared. + // This key is only recognized by version >= 1.4. + PodInitContainersBetaAnnotationKey = "pod.beta.kubernetes.io/init-containers" + // This annotation key will be used to contain an array of v1 JSON encoded Containers + // for init containers. The annotation will be placed into the internal type and cleared. + // This key is recognized by version >= 1.3. For version 1.4 code, this key + // will have its value copied to the beta key. + PodInitContainersAnnotationKey = "pod.alpha.kubernetes.io/init-containers" + // This annotation key will be used to contain an array of v1 JSON encoded + // ContainerStatuses for init containers. The annotation will be placed into the internal + // type and cleared. This key is only recognized by version >= 1.4. + PodInitContainerStatusesBetaAnnotationKey = "pod.beta.kubernetes.io/init-container-statuses" + // This annotation key will be used to contain an array of v1 JSON encoded + // ContainerStatuses for init containers. The annotation will be placed into the internal + // type and cleared. This key is recognized by version >= 1.3. For version 1.4 code, + // this key will have its value copied to the beta key. + PodInitContainerStatusesAnnotationKey = "pod.alpha.kubernetes.io/init-container-statuses" +) + +// PodSpec is a description of a pod. +type PodSpec struct { + // List of volumes that can be mounted by containers belonging to the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md + Volumes []Volume `json:"volumes,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,1,rep,name=volumes"` + // List of initialization containers belonging to the pod. + // Init containers are executed in order prior to containers being started. If any + // init container fails, the pod is considered to have failed and is handled according + // to its restartPolicy. The name for an init container or normal container must be + // unique among all containers. + // Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes. + // The resourceRequirements of an init container are taken into account during scheduling + // by finding the highest request/limit for each resource type, and then using the max of + // of that value or the sum of the normal containers. Limits are applied to init containers + // in a similar fashion. + // Init containers cannot currently be added or removed. + // Init containers are in alpha state and may change without notice. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md + InitContainers []Container `json:"-" patchStrategy:"merge" patchMergeKey:"name"` + // List of containers belonging to the pod. + // Containers cannot currently be added or removed. + // There must be at least one container in a Pod. + // Cannot be updated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md + Containers []Container `json:"containers" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=containers"` + // Restart policy for all containers within the pod. + // One of Always, OnFailure, Never. + // Default to Always. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#restartpolicy + RestartPolicy RestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,3,opt,name=restartPolicy,casttype=RestartPolicy"` + // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. + // Value must be non-negative integer. The value zero indicates delete immediately. + // If this value is nil, the default grace period will be used instead. + // The grace period is the duration in seconds after the processes running in the pod are sent + // a termination signal and the time when the processes are forcibly halted with a kill signal. + // Set this value longer than the expected cleanup time for your process. + // Defaults to 30 seconds. + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty" protobuf:"varint,4,opt,name=terminationGracePeriodSeconds"` + // Optional duration in seconds the pod may be active on the node relative to + // StartTime before the system will actively try to mark it failed and kill associated containers. + // Value must be a positive integer. + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,5,opt,name=activeDeadlineSeconds"` + // Set DNS policy for containers within the pod. + // One of 'ClusterFirst' or 'Default'. + // Defaults to "ClusterFirst". + DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty" protobuf:"bytes,6,opt,name=dnsPolicy,casttype=DNSPolicy"` + // NodeSelector is a selector which must be true for the pod to fit on a node. + // Selector which must match a node's labels for the pod to be scheduled on that node. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/node-selection/README.md + NodeSelector map[string]string `json:"nodeSelector,omitempty" protobuf:"bytes,7,rep,name=nodeSelector"` + + // ServiceAccountName is the name of the ServiceAccount to use to run this pod. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md + ServiceAccountName string `json:"serviceAccountName,omitempty" protobuf:"bytes,8,opt,name=serviceAccountName"` + // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + // Deprecated: Use serviceAccountName instead. + // +k8s:conversion-gen=false + DeprecatedServiceAccount string `json:"serviceAccount,omitempty" protobuf:"bytes,9,opt,name=serviceAccount"` + + // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, + // the scheduler simply schedules this pod onto that node, assuming that it fits resource + // requirements. + NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"` + // Host networking requested for this pod. Use the host's network namespace. + // If this option is set, the ports that will be used must be specified. + // Default to false. + // +k8s:conversion-gen=false + HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,11,opt,name=hostNetwork"` + // Use the host's pid namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + HostPID bool `json:"hostPID,omitempty" protobuf:"varint,12,opt,name=hostPID"` + // Use the host's ipc namespace. + // Optional: Default to false. + // +k8s:conversion-gen=false + HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,13,opt,name=hostIPC"` + // SecurityContext holds pod-level security attributes and common container settings. + // Optional: Defaults to empty. See type description for default values of each field. + SecurityContext *PodSecurityContext `json:"securityContext,omitempty" protobuf:"bytes,14,opt,name=securityContext"` + // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. + // If specified, these secrets will be passed to individual puller implementations for them to use. For example, + // in the case of docker, only DockerConfig type secrets are honored. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#specifying-imagepullsecrets-on-a-pod + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,15,rep,name=imagePullSecrets"` + // Specifies the hostname of the Pod + // If not specified, the pod's hostname will be set to a system-defined value. + Hostname string `json:"hostname,omitempty" protobuf:"bytes,16,opt,name=hostname"` + // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". + // If not specified, the pod will not have a domainname at all. + Subdomain string `json:"subdomain,omitempty" protobuf:"bytes,17,opt,name=subdomain"` +} + +// PodSecurityContext holds pod-level security attributes and common container settings. +// Some fields are also present in container.securityContext. Field values of +// container.securityContext take precedence over field values of PodSecurityContext. +type PodSecurityContext struct { + // The SELinux context to be applied to all containers. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in SecurityContext. If set in + // both SecurityContext and PodSecurityContext, the value specified in SecurityContext + // takes precedence for that container. + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,1,opt,name=seLinuxOptions"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence + // for that container. + RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,2,opt,name=runAsUser"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in SecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,3,opt,name=runAsNonRoot"` + // A list of groups applied to the first process run in each container, in addition + // to the container's primary GID. If unspecified, no groups will be added to + // any container. + SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,4,rep,name=supplementalGroups"` + // A special supplemental group that applies to all containers in a pod. + // Some volume types allow the Kubelet to change the ownership of that volume + // to be owned by the pod: + // + // 1. The owning GID will be the FSGroup + // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + // 3. The permission bits are OR'd with rw-rw---- + // + // If unset, the Kubelet will not modify the ownership and permissions of any volume. + FSGroup *int64 `json:"fsGroup,omitempty" protobuf:"varint,5,opt,name=fsGroup"` +} + +// PodStatus represents information about the status of a pod. Status may trail the actual +// state of a system. +type PodStatus struct { + // Current condition of the pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-phase + Phase PodPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PodPhase"` + // Current service state of pod. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions + Conditions []PodCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` + // A human readable message indicating details about why the pod is in this condition. + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // A brief CamelCase message indicating details about why the pod is in this state. + // e.g. 'OutOfDisk' + Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + + // IP address of the host to which the pod is assigned. Empty if not yet scheduled. + HostIP string `json:"hostIP,omitempty" protobuf:"bytes,5,opt,name=hostIP"` + // IP address allocated to the pod. Routable at least within the cluster. + // Empty if not yet allocated. + PodIP string `json:"podIP,omitempty" protobuf:"bytes,6,opt,name=podIP"` + + // RFC 3339 date and time at which the object was acknowledged by the Kubelet. + // This is before the Kubelet pulled the container image(s) for the pod. + StartTime *unversioned.Time `json:"startTime,omitempty" protobuf:"bytes,7,opt,name=startTime"` + + // The list has one entry per init container in the manifest. The most recent successful + // init container will have ready = true, the most recently started container will have + // startTime set. + // Init containers are in alpha state and may change without notice. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses + InitContainerStatuses []ContainerStatus `json:"-"` + // The list has one entry per container in the manifest. Each entry is currently the output + // of `docker inspect`. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses + ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty" protobuf:"bytes,8,rep,name=containerStatuses"` +} + +// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded +type PodStatusResult struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status PodStatus `json:"status,omitempty" protobuf:"bytes,2,opt,name=status"` +} + +// +genclient=true + +// Pod is a collection of containers that can run on a host. This resource is created +// by clients and scheduled onto hosts. +type Pod struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the pod. + // This data may not be up to date. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status PodStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodList is a list of Pods. +type PodList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of pods. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/pods.md + Items []Pod `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// PodTemplateSpec describes the data a pod should have when created from a template +type PodTemplateSpec struct { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the pod. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// +genclient=true + +// PodTemplate describes a template for creating copies of a predefined pod. +type PodTemplate struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Template defines the pods that will be created from this pod template. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Template PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + +// PodTemplateList is a list of PodTemplates. +type PodTemplateList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of pod templates + Items []PodTemplate `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ReplicationControllerSpec is the specification of a replication controller. +type ReplicationControllerSpec struct { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Selector is a label query over pods that should match the Replicas count. + // If Selector is empty, it is defaulted to the labels present on the Pod template. + // Label keys and values that must match in order to be controlled by this replication + // controller, if empty defaulted to labels on Pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // TemplateRef is a reference to an object that describes the pod that will be created if + // insufficient replicas are detected. + // Reference to an object that describes the pod that will be created if insufficient replicas are detected. + // TemplateRef *ObjectReference `json:"templateRef,omitempty"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. This takes precedence over a TemplateRef. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + Template *PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"` +} + +// ReplicationControllerStatus represents the current status of a replication +// controller. +type ReplicationControllerStatus struct { + // Replicas is the most recently oberved number of replicas. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replication controller. + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replication controller. + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed replication controller. + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` +} + +// +genclient=true + +// ReplicationController represents the configuration of a replication controller. +type ReplicationController struct { + unversioned.TypeMeta `json:",inline"` + + // If the Labels of a ReplicationController are empty, they are defaulted to + // be the same as the Pod(s) that the replication controller manages. + // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the replication controller. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ReplicationControllerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the most recently observed status of the replication controller. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ReplicationControllerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ReplicationControllerList is a collection of replication controllers. +type ReplicationControllerList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of replication controllers. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md + Items []ReplicationController `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Session Affinity Type string +type ServiceAffinity string + +const ( + // ServiceAffinityClientIP is the Client IP based. + ServiceAffinityClientIP ServiceAffinity = "ClientIP" + + // ServiceAffinityNone - no session affinity. + ServiceAffinityNone ServiceAffinity = "None" +) + +// Service Type string describes ingress methods for a service +type ServiceType string + +const ( + // ServiceTypeClusterIP means a service will only be accessible inside the + // cluster, via the cluster IP. + ServiceTypeClusterIP ServiceType = "ClusterIP" + + // ServiceTypeNodePort means a service will be exposed on one port of + // every node, in addition to 'ClusterIP' type. + ServiceTypeNodePort ServiceType = "NodePort" + + // ServiceTypeLoadBalancer means a service will be exposed via an + // external load balancer (if the cloud provider supports it), in addition + // to 'NodePort' type. + ServiceTypeLoadBalancer ServiceType = "LoadBalancer" + + // ServiceTypeExternalName means a service consists of only a reference to + // an external name that kubedns or equivalent will return as a CNAME + // record, with no exposing or proxying of any pods involved. + ServiceTypeExternalName ServiceType = "ExternalName" +) + +// ServiceStatus represents the current status of a service. +type ServiceStatus struct { + // LoadBalancer contains the current status of the load-balancer, + // if one is present. + LoadBalancer LoadBalancerStatus `json:"loadBalancer,omitempty" protobuf:"bytes,1,opt,name=loadBalancer"` +} + +// LoadBalancerStatus represents the status of a load-balancer. +type LoadBalancerStatus struct { + // Ingress is a list containing ingress points for the load-balancer. + // Traffic intended for the service should be sent to these ingress points. + Ingress []LoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,1,rep,name=ingress"` +} + +// LoadBalancerIngress represents the status of a load-balancer ingress point: +// traffic intended for the service should be sent to an ingress point. +type LoadBalancerIngress struct { + // IP is set for load-balancer ingress points that are IP based + // (typically GCE or OpenStack load-balancers) + IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` + + // Hostname is set for load-balancer ingress points that are DNS based + // (typically AWS load-balancers) + Hostname string `json:"hostname,omitempty" protobuf:"bytes,2,opt,name=hostname"` +} + +// ServiceSpec describes the attributes that a user creates on a service. +type ServiceSpec struct { + // The list of ports that are exposed by this service. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + Ports []ServicePort `json:"ports" patchStrategy:"merge" patchMergeKey:"port" protobuf:"bytes,1,rep,name=ports"` + + // Route service traffic to pods with label keys and values matching this + // selector. If empty or not present, the service is assumed to have an + // external process managing its endpoints, which Kubernetes will not + // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. + // Ignored if type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // clusterIP is the IP address of the service and is usually assigned + // randomly by the master. If an address is specified manually and is not in + // use by others, it will be allocated to the service; otherwise, creation + // of the service will fail. This field can not be changed through updates. + // Valid values are "None", empty string (""), or a valid IP address. "None" + // can be specified for headless services when proxying is not required. + // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if + // type is ExternalName. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + ClusterIP string `json:"clusterIP,omitempty" protobuf:"bytes,3,opt,name=clusterIP"` + + // type determines how the Service is exposed. Defaults to ClusterIP. Valid + // options are ExternalName, ClusterIP, NodePort, and LoadBalancer. + // "ExternalName" maps to the specified externalName. + // "ClusterIP" allocates a cluster-internal IP address for load-balancing to + // endpoints. Endpoints are determined by the selector or if that is not + // specified, by manual construction of an Endpoints object. If clusterIP is + // "None", no virtual IP is allocated and the endpoints are published as a + // set of endpoints rather than a stable IP. + // "NodePort" builds on ClusterIP and allocates a port on every node which + // routes to the clusterIP. + // "LoadBalancer" builds on NodePort and creates an + // external load-balancer (if supported in the current cloud) which routes + // to the clusterIP. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview + Type ServiceType `json:"type,omitempty" protobuf:"bytes,4,opt,name=type,casttype=ServiceType"` + + // externalIPs is a list of IP addresses for which nodes in the cluster + // will also accept traffic for this service. These IPs are not managed by + // Kubernetes. The user is responsible for ensuring that traffic arrives + // at a node with this IP. A common example is external load-balancers + // that are not part of the Kubernetes system. A previous form of this + // functionality exists as the deprecatedPublicIPs field. When using this + // field, callers should also clear the deprecatedPublicIPs field. + ExternalIPs []string `json:"externalIPs,omitempty" protobuf:"bytes,5,rep,name=externalIPs"` + + // deprecatedPublicIPs is deprecated and replaced by the externalIPs field + // with almost the exact same semantics. This field is retained in the v1 + // API for compatibility until at least 8/20/2016. It will be removed from + // any new API revisions. If both deprecatedPublicIPs *and* externalIPs are + // set, deprecatedPublicIPs is used. + // +k8s:conversion-gen=false + DeprecatedPublicIPs []string `json:"deprecatedPublicIPs,omitempty" protobuf:"bytes,6,rep,name=deprecatedPublicIPs"` + + // Supports "ClientIP" and "None". Used to maintain session affinity. + // Enable client IP based session affinity. + // Must be ClientIP or None. + // Defaults to None. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies + SessionAffinity ServiceAffinity `json:"sessionAffinity,omitempty" protobuf:"bytes,7,opt,name=sessionAffinity,casttype=ServiceAffinity"` + + // Only applies to Service Type: LoadBalancer + // LoadBalancer will get created with the IP specified in this field. + // This feature depends on whether the underlying cloud-provider supports specifying + // the loadBalancerIP when a load balancer is created. + // This field will be ignored if the cloud-provider does not support the feature. + LoadBalancerIP string `json:"loadBalancerIP,omitempty" protobuf:"bytes,8,opt,name=loadBalancerIP"` + + // If specified and supported by the platform, this will restrict traffic through the cloud-provider + // load-balancer will be restricted to the specified client IPs. This field will be ignored if the + // cloud-provider does not support the feature." + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md + LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty" protobuf:"bytes,9,opt,name=loadBalancerSourceRanges"` + + // externalName is the external reference that kubedns or equivalent will + // return as a CNAME record for this service. No proxying will be involved. + // Must be a valid DNS name and requires Type to be ExternalName. + ExternalName string `json:"externalName,omitempty" protobuf:"bytes,10,opt,name=externalName"` +} + +// ServicePort contains information on service's port. +type ServicePort struct { + // The name of this port within the service. This must be a DNS_LABEL. + // All ports within a ServiceSpec must have unique names. This maps to + // the 'Name' field in EndpointPort objects. + // Optional if only one ServicePort is defined on this service. + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // The IP protocol for this port. Supports "TCP" and "UDP". + // Default is TCP. + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,2,opt,name=protocol,casttype=Protocol"` + + // The port that will be exposed by this service. + Port int32 `json:"port" protobuf:"varint,3,opt,name=port"` + + // Number or name of the port to access on the pods targeted by the service. + // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + // If this is a string, it will be looked up as a named port in the + // target Pod's container ports. If this is not specified, the value + // of the 'port' field is used (an identity map). + // This field is ignored for services with clusterIP=None, and should be + // omitted or set equal to the 'port' field. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service + TargetPort intstr.IntOrString `json:"targetPort,omitempty" protobuf:"bytes,4,opt,name=targetPort"` + + // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. + // Usually assigned by the system. If specified, it will be allocated to the service + // if unused or else creation of the service will fail. + // Default is to auto-allocate a port if the ServiceType of this Service requires one. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport + NodePort int32 `json:"nodePort,omitempty" protobuf:"varint,5,opt,name=nodePort"` +} + +// +genclient=true + +// Service is a named abstraction of software service (for example, mysql) consisting of local port +// (for example 3306) that the proxy listens on, and the selector that determines which pods +// will answer requests sent through the proxy. +type Service struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a service. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ServiceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the service. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ServiceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +const ( + // ClusterIPNone - do not assign a cluster IP + // no proxying required and no environment variables should be created for pods + ClusterIPNone = "None" +) + +// ServiceList holds a list of services. +type ServiceList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of services + Items []Service `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// ServiceAccount binds together: +// * a name, understood by users, and perhaps by peripheral systems, for an identity +// * a principal that can be authenticated and authorized +// * a set of secrets +type ServiceAccount struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md + Secrets []ObjectReference `json:"secrets,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=secrets"` + + // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images + // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets + // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md#manually-specifying-an-imagepullsecret + ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" protobuf:"bytes,3,rep,name=imagePullSecrets"` +} + +// ServiceAccountList is a list of ServiceAccount objects +type ServiceAccountList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ServiceAccounts. + // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts + Items []ServiceAccount `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Endpoints is a collection of endpoints that implement the actual service. Example: +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] +type Endpoints struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The set of all endpoints is the union of all subsets. Addresses are placed into + // subsets according to the IPs they share. A single address with multiple ports, + // some of which are ready and some of which are not (because they come from + // different containers) will result in the address being displayed in different + // subsets for the different ports. No address will appear in both Addresses and + // NotReadyAddresses in the same subset. + // Sets of addresses and ports that comprise a service. + Subsets []EndpointSubset `json:"subsets" protobuf:"bytes,2,rep,name=subsets"` +} + +// EndpointSubset is a group of addresses with a common set of ports. The +// expanded set of endpoints is the Cartesian product of Addresses x Ports. +// For example, given: +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// The resulting set of endpoints can be viewed as: +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +type EndpointSubset struct { + // IP addresses which offer the related ports that are marked as ready. These endpoints + // should be considered safe for load balancers and clients to utilize. + Addresses []EndpointAddress `json:"addresses,omitempty" protobuf:"bytes,1,rep,name=addresses"` + // IP addresses which offer the related ports but are not currently marked as ready + // because they have not yet finished starting, have recently failed a readiness check, + // or have recently failed a liveness check. + NotReadyAddresses []EndpointAddress `json:"notReadyAddresses,omitempty" protobuf:"bytes,2,rep,name=notReadyAddresses"` + // Port numbers available on the related IP addresses. + Ports []EndpointPort `json:"ports,omitempty" protobuf:"bytes,3,rep,name=ports"` +} + +// EndpointAddress is a tuple that describes single IP address. +type EndpointAddress struct { + // The IP of this endpoint. + // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), + // or link-local multicast ((224.0.0.0/24). + // IPv6 is also accepted but not fully supported on all platforms. Also, certain + // kubernetes components, like kube-proxy, are not IPv6 ready. + // TODO: This should allow hostname or IP, See #4447. + IP string `json:"ip" protobuf:"bytes,1,opt,name=ip"` + // The Hostname of this endpoint + Hostname string `json:"hostname,omitempty" protobuf:"bytes,3,opt,name=hostname"` + // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node. + NodeName *string `json:"nodeName,omitempty" protobuf:"bytes,4,opt,name=nodeName"` + // Reference to object providing the endpoint. + TargetRef *ObjectReference `json:"targetRef,omitempty" protobuf:"bytes,2,opt,name=targetRef"` +} + +// EndpointPort is a tuple that describes a single port. +type EndpointPort struct { + // The name of this port (corresponds to ServicePort.Name). + // Must be a DNS_LABEL. + // Optional only if one port is defined. + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` + + // The port number of the endpoint. + Port int32 `json:"port" protobuf:"varint,2,opt,name=port"` + + // The IP protocol for this port. + // Must be UDP or TCP. + // Default is TCP. + Protocol Protocol `json:"protocol,omitempty" protobuf:"bytes,3,opt,name=protocol,casttype=Protocol"` +} + +// EndpointsList is a list of endpoints. +type EndpointsList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of endpoints. + Items []Endpoints `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// NodeSpec describes the attributes that a node is created with. +type NodeSpec struct { + // PodCIDR represents the pod IP range assigned to the node. + PodCIDR string `json:"podCIDR,omitempty" protobuf:"bytes,1,opt,name=podCIDR"` + // External ID of the node assigned by some machine database (e.g. a cloud provider). + // Deprecated. + ExternalID string `json:"externalID,omitempty" protobuf:"bytes,2,opt,name=externalID"` + // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID> + ProviderID string `json:"providerID,omitempty" protobuf:"bytes,3,opt,name=providerID"` + // Unschedulable controls node schedulability of new pods. By default, node is schedulable. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` + Unschedulable bool `json:"unschedulable,omitempty" protobuf:"varint,4,opt,name=unschedulable"` +} + +// DaemonEndpoint contains information about a single Daemon endpoint. +type DaemonEndpoint struct { + /* + The port tag was not properly in quotes in earlier releases, so it must be + uppercased for backwards compat (since it was falling back to var name of + 'Port'). + */ + + // Port number of the given endpoint. + Port int32 `json:"Port" protobuf:"varint,1,opt,name=Port"` +} + +// NodeDaemonEndpoints lists ports opened by daemons running on the Node. +type NodeDaemonEndpoints struct { + // Endpoint on which Kubelet is listening. + KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty" protobuf:"bytes,1,opt,name=kubeletEndpoint"` +} + +// NodeSystemInfo is a set of ids/uuids to uniquely identify the node. +type NodeSystemInfo struct { + // MachineID reported by the node. For unique machine identification + // in the cluster this field is prefered. Learn more from man(5) + // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html + MachineID string `json:"machineID" protobuf:"bytes,1,opt,name=machineID"` + // SystemUUID reported by the node. For unique machine identification + // MachineID is prefered. This field is specific to Red Hat hosts + // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html + SystemUUID string `json:"systemUUID" protobuf:"bytes,2,opt,name=systemUUID"` + // Boot ID reported by the node. + BootID string `json:"bootID" protobuf:"bytes,3,opt,name=bootID"` + // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64). + KernelVersion string `json:"kernelVersion" protobuf:"bytes,4,opt,name=kernelVersion"` + // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)). + OSImage string `json:"osImage" protobuf:"bytes,5,opt,name=osImage"` + // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0). + ContainerRuntimeVersion string `json:"containerRuntimeVersion" protobuf:"bytes,6,opt,name=containerRuntimeVersion"` + // Kubelet Version reported by the node. + KubeletVersion string `json:"kubeletVersion" protobuf:"bytes,7,opt,name=kubeletVersion"` + // KubeProxy Version reported by the node. + KubeProxyVersion string `json:"kubeProxyVersion" protobuf:"bytes,8,opt,name=kubeProxyVersion"` + // The Operating System reported by the node + OperatingSystem string `json:"operatingSystem" protobuf:"bytes,9,opt,name=operatingSystem"` + // The Architecture reported by the node + Architecture string `json:"architecture" protobuf:"bytes,10,opt,name=architecture"` +} + +// NodeStatus is information about the current status of a node. +type NodeStatus struct { + // Capacity represents the total resources of a node. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity for more details. + Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` + // Allocatable represents the resources of a node that are available for scheduling. + // Defaults to Capacity. + Allocatable ResourceList `json:"allocatable,omitempty" protobuf:"bytes,2,rep,name=allocatable,casttype=ResourceList,castkey=ResourceName"` + // NodePhase is the recently observed lifecycle phase of the node. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase + // The field is never populated, and now is deprecated. + Phase NodePhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=NodePhase"` + // Conditions is an array of current observed node conditions. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition + Conditions []NodeCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"` + // List of addresses reachable to the node. + // Queried from cloud provider, if available. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses + Addresses []NodeAddress `json:"addresses,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,5,rep,name=addresses"` + // Endpoints of daemons running on the Node. + DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty" protobuf:"bytes,6,opt,name=daemonEndpoints"` + // Set of ids/uuids to uniquely identify the node. + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info + NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty" protobuf:"bytes,7,opt,name=nodeInfo"` + // List of container images on this node + Images []ContainerImage `json:"images,omitempty" protobuf:"bytes,8,rep,name=images"` + // List of attachable volumes in use (mounted) by the node. + VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty" protobuf:"bytes,9,rep,name=volumesInUse"` + // List of volumes that are attached to the node. + VolumesAttached []AttachedVolume `json:"volumesAttached,omitempty" protobuf:"bytes,10,rep,name=volumesAttached"` +} + +type UniqueVolumeName string + +// AttachedVolume describes a volume attached to a node +type AttachedVolume struct { + // Name of the attached volume + Name UniqueVolumeName `json:"name" protobuf:"bytes,1,rep,name=name"` + + // DevicePath represents the device path where the volume should be avilable + DevicePath string `json:"devicePath" protobuf:"bytes,2,rep,name=devicePath"` +} + +// AvoidPods describes pods that should avoid this node. This is the value for a +// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and +// will eventually become a field of NodeStatus. +type AvoidPods struct { + // Bounded-sized list of signatures of pods that should avoid this node, sorted + // in timestamp order from oldest to newest. Size of the slice is unspecified. + PreferAvoidPods []PreferAvoidPodsEntry `json:"preferAvoidPods,omitempty" protobuf:"bytes,1,rep,name=preferAvoidPods"` +} + +// Describes a class of pods that should avoid this node. +type PreferAvoidPodsEntry struct { + // The class of pods. + PodSignature PodSignature `json:"podSignature" protobuf:"bytes,1,opt,name=podSignature"` + // Time at which this entry was added to the list. + EvictionTime unversioned.Time `json:"evictionTime,omitempty" protobuf:"bytes,2,opt,name=evictionTime"` + // (brief) reason why this entry was added to the list. + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + // Human readable message indicating why this entry was added to the list. + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` +} + +// Describes the class of pods that should avoid this node. +// Exactly one field should be set. +type PodSignature struct { + // Reference to controller whose pods should avoid this node. + PodController *OwnerReference `json:"podController,omitempty" protobuf:"bytes,1,opt,name=podController"` +} + +// Describe a container image +type ContainerImage struct { + // Names by which this image is known. + // e.g. ["gcr.io/google_containers/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"] + Names []string `json:"names" protobuf:"bytes,1,rep,name=names"` + // The size of the image in bytes. + SizeBytes int64 `json:"sizeBytes,omitempty" protobuf:"varint,2,opt,name=sizeBytes"` +} + +type NodePhase string + +// These are the valid phases of node. +const ( + // NodePending means the node has been created/added by the system, but not configured. + NodePending NodePhase = "Pending" + // NodeRunning means the node has been configured and has Kubernetes components running. + NodeRunning NodePhase = "Running" + // NodeTerminated means the node has been removed from the cluster. + NodeTerminated NodePhase = "Terminated" +) + +type NodeConditionType string + +// These are valid conditions of node. Currently, we don't have enough information to decide +// node condition. In the future, we will add more. The proposed set of conditions are: +// NodeReachable, NodeLive, NodeReady, NodeSchedulable, NodeRunnable. +const ( + // NodeReady means kubelet is healthy and ready to accept pods. + NodeReady NodeConditionType = "Ready" + // NodeOutOfDisk means the kubelet will not accept new pods due to insufficient free disk + // space on the node. + NodeOutOfDisk NodeConditionType = "OutOfDisk" + // NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory. + NodeMemoryPressure NodeConditionType = "MemoryPressure" + // NodeDiskPressure means the kubelet is under pressure due to insufficient available disk. + NodeDiskPressure NodeConditionType = "DiskPressure" + // NodeNetworkUnavailable means that network for the node is not correctly configured. + NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" +) + +// NodeCondition contains condition information for a node. +type NodeCondition struct { + // Type of node condition. + Type NodeConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=NodeConditionType"` + // Status of the condition, one of True, False, Unknown. + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Last time we got an update on a given condition. + LastHeartbeatTime unversioned.Time `json:"lastHeartbeatTime,omitempty" protobuf:"bytes,3,opt,name=lastHeartbeatTime"` + // Last time the condition transit from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +type NodeAddressType string + +// These are valid address type of node. +const ( + NodeHostName NodeAddressType = "Hostname" + NodeExternalIP NodeAddressType = "ExternalIP" + NodeInternalIP NodeAddressType = "InternalIP" +) + +// NodeAddress contains information for the node's address. +type NodeAddress struct { + // Node address type, one of Hostname, ExternalIP or InternalIP. + Type NodeAddressType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=NodeAddressType"` + // The node address. + Address string `json:"address" protobuf:"bytes,2,opt,name=address"` +} + +// ResourceName is the name identifying various resources in a ResourceList. +type ResourceName string + +// Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters, +// with the -, _, and . characters allowed anywhere, except the first or last character. +// The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than +// camel case, separating compound words. +// Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name. +const ( + // CPU, in cores. (500m = .5 cores) + ResourceCPU ResourceName = "cpu" + // Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceMemory ResourceName = "memory" + // Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) + ResourceStorage ResourceName = "storage" + // NVIDIA GPU, in devices. Alpha, might change: although fractional and allowing values >1, only one whole device per node is assigned. + ResourceNvidiaGPU ResourceName = "alpha.kubernetes.io/nvidia-gpu" + // Number of Pods that may be running on this Node: see ResourcePods +) + +// ResourceList is a set of (resource name, quantity) pairs. +type ResourceList map[ResourceName]resource.Quantity + +// +genclient=true +// +nonNamespaced=true + +// Node is a worker node in Kubernetes. +// Each node will have a unique identifier in the cache (i.e. in etcd). +type Node struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of a node. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec NodeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the node. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status NodeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// NodeList is the whole list of all Nodes which have been registered with master. +type NodeList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of nodes + Items []Node `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +type FinalizerName string + +// These are internal finalizer values to Kubernetes, must be qualified name unless defined here +const ( + FinalizerKubernetes FinalizerName = "kubernetes" +) + +// NamespaceSpec describes the attributes on a Namespace. +type NamespaceSpec struct { + // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. + // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers + Finalizers []FinalizerName `json:"finalizers,omitempty" protobuf:"bytes,1,rep,name=finalizers,casttype=FinalizerName"` +} + +// NamespaceStatus is information about the current status of a Namespace. +type NamespaceStatus struct { + // Phase is the current lifecycle phase of the namespace. + // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases + Phase NamespacePhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=NamespacePhase"` +} + +type NamespacePhase string + +// These are the valid phases of a namespace. +const ( + // NamespaceActive means the namespace is available for use in the system + NamespaceActive NamespacePhase = "Active" + // NamespaceTerminating means the namespace is undergoing graceful termination + NamespaceTerminating NamespacePhase = "Terminating" +) + +// +genclient=true +// +nonNamespaced=true + +// Namespace provides a scope for Names. +// Use of multiple namespaces is optional. +type Namespace struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the behavior of the Namespace. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec NamespaceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status describes the current status of a Namespace. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status NamespaceStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// NamespaceList is a list of Namespaces. +type NamespaceList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Namespace objects in the list. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + Items []Namespace `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Binding ties one object to another. +// For example, a pod is bound to a node by a scheduler. +type Binding struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The target object that you want to bind to the standard object. + Target ObjectReference `json:"target" protobuf:"bytes,2,opt,name=target"` +} + +// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out. +type Preconditions struct { + // Specifies the target UID. + UID *types.UID `json:"uid,omitempty" protobuf:"bytes,1,opt,name=uid,casttype=k8s.io/kubernetes/pkg/types.UID"` +} + +// DeleteOptions may be provided when deleting an API object +type DeleteOptions struct { + unversioned.TypeMeta `json:",inline"` + + // The duration in seconds before the object should be deleted. Value must be non-negative integer. + // The value zero indicates delete immediately. If this value is nil, the default grace period for the + // specified type will be used. + // Defaults to a per object value if not specified. zero means delete immediately. + GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty" protobuf:"varint,1,opt,name=gracePeriodSeconds"` + + // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be + // returned. + Preconditions *Preconditions `json:"preconditions,omitempty" protobuf:"bytes,2,opt,name=preconditions"` + + // Should the dependent objects be orphaned. If true/false, the "orphan" + // finalizer will be added to/removed from the object's finalizers list. + OrphanDependents *bool `json:"orphanDependents,omitempty" protobuf:"varint,3,opt,name=orphanDependents"` +} + +// ExportOptions is the query options to the standard REST get call. +type ExportOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Should this value be exported. Export strips fields that a user can not specify. + Export bool `json:"export" protobuf:"varint,1,opt,name=export"` + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` +} + +// ListOptions is the query options to a standard REST list call. +type ListOptions struct { + unversioned.TypeMeta `json:",inline"` + + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"` + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"` + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` + // Timeout for the list/watch call. + TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` +} + +// PodLogOptions is the query options for a Pod's logs REST call. +type PodLogOptions struct { + unversioned.TypeMeta `json:",inline"` + + // The container for which to stream logs. Defaults to only container if there is one container in the pod. + Container string `json:"container,omitempty" protobuf:"bytes,1,opt,name=container"` + // Follow the log stream of the pod. Defaults to false. + Follow bool `json:"follow,omitempty" protobuf:"varint,2,opt,name=follow"` + // Return previous terminated container logs. Defaults to false. + Previous bool `json:"previous,omitempty" protobuf:"varint,3,opt,name=previous"` + // A relative time in seconds before the current time from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceSeconds *int64 `json:"sinceSeconds,omitempty" protobuf:"varint,4,opt,name=sinceSeconds"` + // An RFC3339 timestamp from which to show logs. If this value + // precedes the time a pod was started, only logs since the pod start will be returned. + // If this value is in the future, no logs will be returned. + // Only one of sinceSeconds or sinceTime may be specified. + SinceTime *unversioned.Time `json:"sinceTime,omitempty" protobuf:"bytes,5,opt,name=sinceTime"` + // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line + // of log output. Defaults to false. + Timestamps bool `json:"timestamps,omitempty" protobuf:"varint,6,opt,name=timestamps"` + // If set, the number of lines from the end of the logs to show. If not specified, + // logs are shown from the creation of the container or sinceSeconds or sinceTime + TailLines *int64 `json:"tailLines,omitempty" protobuf:"varint,7,opt,name=tailLines"` + // If set, the number of bytes to read from the server before terminating the + // log output. This may not display a complete final line of logging, and may return + // slightly more or slightly less than the specified limit. + LimitBytes *int64 `json:"limitBytes,omitempty" protobuf:"varint,8,opt,name=limitBytes"` +} + +// PodAttachOptions is the query options to a Pod's remote attach call. +// --- +// TODO: merge w/ PodExecOptions below for stdin, stdout, etc +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +type PodAttachOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Stdin if true, redirects the standard input stream of the pod for this call. + // Defaults to false. + Stdin bool `json:"stdin,omitempty" protobuf:"varint,1,opt,name=stdin"` + + // Stdout if true indicates that stdout is to be redirected for the attach call. + // Defaults to true. + Stdout bool `json:"stdout,omitempty" protobuf:"varint,2,opt,name=stdout"` + + // Stderr if true indicates that stderr is to be redirected for the attach call. + // Defaults to true. + Stderr bool `json:"stderr,omitempty" protobuf:"varint,3,opt,name=stderr"` + + // TTY if true indicates that a tty will be allocated for the attach call. + // This is passed through the container runtime so the tty + // is allocated on the worker node by the container runtime. + // Defaults to false. + TTY bool `json:"tty,omitempty" protobuf:"varint,4,opt,name=tty"` + + // The container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` +} + +// PodExecOptions is the query options to a Pod's remote exec call. +// --- +// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging +// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY +type PodExecOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Redirect the standard input stream of the pod for this call. + // Defaults to false. + Stdin bool `json:"stdin,omitempty" protobuf:"varint,1,opt,name=stdin"` + + // Redirect the standard output stream of the pod for this call. + // Defaults to true. + Stdout bool `json:"stdout,omitempty" protobuf:"varint,2,opt,name=stdout"` + + // Redirect the standard error stream of the pod for this call. + // Defaults to true. + Stderr bool `json:"stderr,omitempty" protobuf:"varint,3,opt,name=stderr"` + + // TTY if true indicates that a tty will be allocated for the exec call. + // Defaults to false. + TTY bool `json:"tty,omitempty" protobuf:"varint,4,opt,name=tty"` + + // Container in which to execute the command. + // Defaults to only container if there is only one container in the pod. + Container string `json:"container,omitempty" protobuf:"bytes,5,opt,name=container"` + + // Command is the remote command to execute. argv array. Not executed within a shell. + Command []string `json:"command" protobuf:"bytes,6,rep,name=command"` +} + +// PodProxyOptions is the query options to a Pod's proxy call. +type PodProxyOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to pod. + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// NodeProxyOptions is the query options to a Node's proxy call. +type NodeProxyOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Path is the URL path to use for the current proxy request to node. + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// ServiceProxyOptions is the query options to a Service's proxy call. +type ServiceProxyOptions struct { + unversioned.TypeMeta `json:",inline"` + + // Path is the part of URLs that include service endpoints, suffixes, + // and parameters to use for the current proxy request to service. + // For example, the whole request URL is + // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. + // Path is _search?q=user:kimchy. + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` +} + +// OwnerReference contains enough information to let you identify an owning +// object. Currently, an owning object must be in the same namespace, so there +// is no namespace field. +type OwnerReference struct { + // API version of the referent. + APIVersion string `json:"apiVersion" protobuf:"bytes,5,opt,name=apiVersion"` + // Kind of the referent. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` + // UID of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + UID types.UID `json:"uid" protobuf:"bytes,4,opt,name=uid,casttype=k8s.io/kubernetes/pkg/types.UID"` + // If true, this reference points to the managing controller. + Controller *bool `json:"controller,omitempty" protobuf:"varint,6,opt,name=controller"` +} + +// ObjectReference contains enough information to let you inspect or modify the referred object. +type ObjectReference struct { + // Kind of the referent. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + // Namespace of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md + Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name,omitempty" protobuf:"bytes,3,opt,name=name"` + // UID of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids + UID types.UID `json:"uid,omitempty" protobuf:"bytes,4,opt,name=uid,casttype=k8s.io/kubernetes/pkg/types.UID"` + // API version of the referent. + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,5,opt,name=apiVersion"` + // Specific resourceVersion to which this reference is made, if any. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,6,opt,name=resourceVersion"` + + // If referring to a piece of an object instead of an entire object, this string + // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + // For example, if the object reference is to a container within a pod, this would take on a value like: + // "spec.containers{name}" (where "name" refers to the name of the container that triggered + // the event) or if no container name is specified "spec.containers[2]" (container with + // index 2 in this pod). This syntax is chosen only to have some well-defined way of + // referencing a part of an object. + // TODO: this design is not final and this field is subject to change in the future. + FieldPath string `json:"fieldPath,omitempty" protobuf:"bytes,7,opt,name=fieldPath"` +} + +// LocalObjectReference contains enough information to let you locate the +// referenced object inside the same namespace. +type LocalObjectReference struct { + // Name of the referent. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + // TODO: Add other useful fields. apiVersion, kind, uid? + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// SerializedReference is a reference to serialized object. +type SerializedReference struct { + unversioned.TypeMeta `json:",inline"` + // The reference to an object in the system. + Reference ObjectReference `json:"reference,omitempty" protobuf:"bytes,1,opt,name=reference"` +} + +// EventSource contains information for an event. +type EventSource struct { + // Component from which the event is generated. + Component string `json:"component,omitempty" protobuf:"bytes,1,opt,name=component"` + // Node name on which the event is generated. + Host string `json:"host,omitempty" protobuf:"bytes,2,opt,name=host"` +} + +// Valid values for event types (new types could be added in future) +const ( + // Information only and will not cause any problems + EventTypeNormal string = "Normal" + // These events are to warn that something might go wrong + EventTypeWarning string = "Warning" +) + +// +genclient=true + +// Event is a report of an event somewhere in the cluster. +// TODO: Decide whether to store these separately or with the object they apply to. +type Event struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` + + // The object that this event is about. + InvolvedObject ObjectReference `json:"involvedObject" protobuf:"bytes,2,opt,name=involvedObject"` + + // This should be a short, machine understandable string that gives the reason + // for the transition into the object's current status. + // TODO: provide exact specification for format. + Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` + + // A human-readable description of the status of this operation. + // TODO: decide on maximum length. + Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"` + + // The component reporting this event. Should be a short machine understandable string. + Source EventSource `json:"source,omitempty" protobuf:"bytes,5,opt,name=source"` + + // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) + FirstTimestamp unversioned.Time `json:"firstTimestamp,omitempty" protobuf:"bytes,6,opt,name=firstTimestamp"` + + // The time at which the most recent occurrence of this event was recorded. + LastTimestamp unversioned.Time `json:"lastTimestamp,omitempty" protobuf:"bytes,7,opt,name=lastTimestamp"` + + // The number of times this event has occurred. + Count int32 `json:"count,omitempty" protobuf:"varint,8,opt,name=count"` + + // Type of this event (Normal, Warning), new types could be added in the future + Type string `json:"type,omitempty" protobuf:"bytes,9,opt,name=type"` +} + +// EventList is a list of events. +type EventList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of events + Items []Event `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// List holds a list of objects, which may not be known by the server. +type List struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of objects + Items []runtime.RawExtension `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// LimitType is a type of object that is limited +type LimitType string + +const ( + // Limit that applies to all pods in a namespace + LimitTypePod LimitType = "Pod" + // Limit that applies to all containers in a namespace + LimitTypeContainer LimitType = "Container" +) + +// LimitRangeItem defines a min/max usage limit for any resource that matches on kind. +type LimitRangeItem struct { + // Type of resource that this limit applies to. + Type LimitType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=LimitType"` + // Max usage constraints on this kind by resource name. + Max ResourceList `json:"max,omitempty" protobuf:"bytes,2,rep,name=max,casttype=ResourceList,castkey=ResourceName"` + // Min usage constraints on this kind by resource name. + Min ResourceList `json:"min,omitempty" protobuf:"bytes,3,rep,name=min,casttype=ResourceList,castkey=ResourceName"` + // Default resource requirement limit value by resource name if resource limit is omitted. + Default ResourceList `json:"default,omitempty" protobuf:"bytes,4,rep,name=default,casttype=ResourceList,castkey=ResourceName"` + // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. + DefaultRequest ResourceList `json:"defaultRequest,omitempty" protobuf:"bytes,5,rep,name=defaultRequest,casttype=ResourceList,castkey=ResourceName"` + // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. + MaxLimitRequestRatio ResourceList `json:"maxLimitRequestRatio,omitempty" protobuf:"bytes,6,rep,name=maxLimitRequestRatio,casttype=ResourceList,castkey=ResourceName"` +} + +// LimitRangeSpec defines a min/max usage limit for resources that match on kind. +type LimitRangeSpec struct { + // Limits is the list of LimitRangeItem objects that are enforced. + Limits []LimitRangeItem `json:"limits" protobuf:"bytes,1,rep,name=limits"` +} + +// +genclient=true + +// LimitRange sets resource usage limits for each kind of resource in a Namespace. +type LimitRange struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the limits enforced. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec LimitRangeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// LimitRangeList is a list of LimitRange items. +type LimitRangeList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of LimitRange objects. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md + Items []LimitRange `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// The following identify resource constants for Kubernetes object types +const ( + // Pods, number + ResourcePods ResourceName = "pods" + // Services, number + ResourceServices ResourceName = "services" + // ReplicationControllers, number + ResourceReplicationControllers ResourceName = "replicationcontrollers" + // ResourceQuotas, number + ResourceQuotas ResourceName = "resourcequotas" + // ResourceSecrets, number + ResourceSecrets ResourceName = "secrets" + // ResourceConfigMaps, number + ResourceConfigMaps ResourceName = "configmaps" + // ResourcePersistentVolumeClaims, number + ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims" + // ResourceServicesNodePorts, number + ResourceServicesNodePorts ResourceName = "services.nodeports" + // ResourceServicesLoadBalancers, number + ResourceServicesLoadBalancers ResourceName = "services.loadbalancers" + // CPU request, in cores. (500m = .5 cores) + ResourceRequestsCPU ResourceName = "requests.cpu" + // Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceRequestsMemory ResourceName = "requests.memory" + // Storage request, in bytes + ResourceRequestsStorage ResourceName = "requests.storage" + // CPU limit, in cores. (500m = .5 cores) + ResourceLimitsCPU ResourceName = "limits.cpu" + // Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) + ResourceLimitsMemory ResourceName = "limits.memory" +) + +// A ResourceQuotaScope defines a filter that must match each object tracked by a quota +type ResourceQuotaScope string + +const ( + // Match all pod objects where spec.activeDeadlineSeconds + ResourceQuotaScopeTerminating ResourceQuotaScope = "Terminating" + // Match all pod objects where !spec.activeDeadlineSeconds + ResourceQuotaScopeNotTerminating ResourceQuotaScope = "NotTerminating" + // Match all pod objects that have best effort quality of service + ResourceQuotaScopeBestEffort ResourceQuotaScope = "BestEffort" + // Match all pod objects that do not have best effort quality of service + ResourceQuotaScopeNotBestEffort ResourceQuotaScope = "NotBestEffort" +) + +// ResourceQuotaSpec defines the desired hard limits to enforce for Quota. +type ResourceQuotaSpec struct { + // Hard is the set of desired hard limits for each named resource. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + Hard ResourceList `json:"hard,omitempty" protobuf:"bytes,1,rep,name=hard,casttype=ResourceList,castkey=ResourceName"` + // A collection of filters that must match each object tracked by a quota. + // If not specified, the quota matches all objects. + Scopes []ResourceQuotaScope `json:"scopes,omitempty" protobuf:"bytes,2,rep,name=scopes,casttype=ResourceQuotaScope"` +} + +// ResourceQuotaStatus defines the enforced hard limits and observed use. +type ResourceQuotaStatus struct { + // Hard is the set of enforced hard limits for each named resource. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + Hard ResourceList `json:"hard,omitempty" protobuf:"bytes,1,rep,name=hard,casttype=ResourceList,castkey=ResourceName"` + // Used is the current observed total usage of the resource in the namespace. + Used ResourceList `json:"used,omitempty" protobuf:"bytes,2,rep,name=used,casttype=ResourceList,castkey=ResourceName"` +} + +// +genclient=true + +// ResourceQuota sets aggregate quota restrictions enforced per namespace +type ResourceQuota struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired quota. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ResourceQuotaSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status defines the actual enforced quota and its current usage. + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ResourceQuotaStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ResourceQuotaList is a list of ResourceQuota items. +type ResourceQuotaList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ResourceQuota objects. + // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota + Items []ResourceQuota `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Secret holds secret data of a certain type. The total bytes of the values in +// the Data field must be less than MaxSecretSize bytes. +type Secret struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN + // or leading dot followed by valid DNS_SUBDOMAIN. + // The serialized form of the secret data is a base64 encoded string, + // representing the arbitrary (possibly non-string) data value here. + // Described in https://tools.ietf.org/html/rfc4648#section-4 + Data map[string][]byte `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` + + // stringData allows specifying non-binary secret data in string form. + // It is provided as a write-only convenience method. + // All keys and values are merged into the data field on write, overwriting any existing values. + // It is never output when reading from the API. + // +k8s:conversion-gen=false + StringData map[string]string `json:"stringData,omitempty" protobuf:"bytes,4,rep,name=stringData"` + + // Used to facilitate programmatic handling of secret data. + Type SecretType `json:"type,omitempty" protobuf:"bytes,3,opt,name=type,casttype=SecretType"` +} + +const MaxSecretSize = 1 * 1024 * 1024 + +type SecretType string + +const ( + // SecretTypeOpaque is the default. Arbitrary user-defined data + SecretTypeOpaque SecretType = "Opaque" + + // SecretTypeServiceAccountToken contains a token that identifies a service account to the API + // + // Required fields: + // - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies + // - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies + // - Secret.Data["token"] - a token that identifies the service account to the API + SecretTypeServiceAccountToken SecretType = "kubernetes.io/service-account-token" + + // ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountNameKey = "kubernetes.io/service-account.name" + // ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets + ServiceAccountUIDKey = "kubernetes.io/service-account.uid" + // ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets + ServiceAccountTokenKey = "token" + // ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets + ServiceAccountKubeconfigKey = "kubernetes.kubeconfig" + // ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets + ServiceAccountRootCAKey = "ca.crt" + // ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls + ServiceAccountNamespaceKey = "namespace" + + // SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg + // + // Required fields: + // - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file + SecretTypeDockercfg SecretType = "kubernetes.io/dockercfg" + + // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets + DockerConfigKey = ".dockercfg" + + // SecretTypeTLS contains information about a TLS client or server secret. It + // is primarily used with TLS termination of the Ingress resource, but may be + // used in other types. + // + // Required fields: + // - Secret.Data["tls.key"] - TLS private key. + // Secret.Data["tls.crt"] - TLS certificate. + // TODO: Consider supporting different formats, specifying CA/destinationCA. + SecretTypeTLS SecretType = "kubernetes.io/tls" + + // TLSCertKey is the key for tls certificates in a TLS secert. + TLSCertKey = "tls.crt" + // TLSPrivateKeyKey is the key for the private key field in a TLS secret. + TLSPrivateKeyKey = "tls.key" +) + +// SecretList is a list of Secret. +type SecretList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of secret objects. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md + Items []Secret `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// ConfigMap holds configuration data for pods to consume. +type ConfigMap struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data contains the configuration data. + // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot. + Data map[string]string `json:"data,omitempty" protobuf:"bytes,2,rep,name=data"` +} + +// ConfigMapList is a resource containing a list of ConfigMap objects. +type ConfigMapList struct { + unversioned.TypeMeta `json:",inline"` + + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ConfigMaps. + Items []ConfigMap `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Type and constants for component health validation. +type ComponentConditionType string + +// These are the valid conditions for the component. +const ( + ComponentHealthy ComponentConditionType = "Healthy" +) + +// Information about the condition of a component. +type ComponentCondition struct { + // Type of condition for a component. + // Valid value: "Healthy" + Type ComponentConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ComponentConditionType"` + // Status of the condition for a component. + // Valid values for "Healthy": "True", "False", or "Unknown". + Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` + // Message about the condition for a component. + // For example, information about a health check. + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // Condition error code for a component. + // For example, a health check error code. + Error string `json:"error,omitempty" protobuf:"bytes,4,opt,name=error"` +} + +// +genclient=true +// +nonNamespaced=true + +// ComponentStatus (and ComponentStatusList) holds the cluster validation info. +type ComponentStatus struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of component conditions observed + Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"` +} + +// Status of all the conditions for the component as a list of ComponentStatus objects. +type ComponentStatusList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ComponentStatus objects. + Items []ComponentStatus `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// DownwardAPIVolumeSource represents a volume containing downward API info. +// Downward API volumes support ownership management and SELinux relabeling. +type DownwardAPIVolumeSource struct { + // Items is a list of downward API volume file + Items []DownwardAPIVolumeFile `json:"items,omitempty" protobuf:"bytes,1,rep,name=items"` + // Optional: mode bits to use on created files by default. Must be a + // value between 0 and 0777. Defaults to 0644. + // Directories within the path are not affected by this setting. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,2,opt,name=defaultMode"` +} + +const ( + DownwardAPIVolumeSourceDefaultMode int32 = 0644 +) + +// DownwardAPIVolumeFile represents information to create the file containing the pod field +type DownwardAPIVolumeFile struct { + // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' + Path string `json:"path" protobuf:"bytes,1,opt,name=path"` + // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty" protobuf:"bytes,2,opt,name=fieldRef"` + // Selects a resource of the container: only resources limits and requests + // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty" protobuf:"bytes,3,opt,name=resourceFieldRef"` + // Optional: mode bits to use on this file, must be a value between 0 + // and 0777. If not specified, the volume defaultMode will be used. + // This might be in conflict with other options that affect the file + // mode, like fsGroup, and the result can be other mode bits set. + Mode *int32 `json:"mode,omitempty" protobuf:"varint,4,opt,name=mode"` +} + +// SecurityContext holds security configuration that will be applied to a container. +// Some fields are present in both SecurityContext and PodSecurityContext. When both +// are set, the values in SecurityContext take precedence. +type SecurityContext struct { + // The capabilities to add/drop when running containers. + // Defaults to the default set of capabilities granted by the container runtime. + Capabilities *Capabilities `json:"capabilities,omitempty" protobuf:"bytes,1,opt,name=capabilities"` + // Run container in privileged mode. + // Processes in privileged containers are essentially equivalent to root on the host. + // Defaults to false. + Privileged *bool `json:"privileged,omitempty" protobuf:"varint,2,opt,name=privileged"` + // The SELinux context to be applied to the container. + // If unspecified, the container runtime will allocate a random SELinux context for each + // container. May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,3,opt,name=seLinuxOptions"` + // The UID to run the entrypoint of the container process. + // Defaults to user specified in image metadata if unspecified. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,4,opt,name=runAsUser"` + // Indicates that the container must run as a non-root user. + // If true, the Kubelet will validate the image at runtime to ensure that it + // does not run as UID 0 (root) and fail to start the container if it does. + // If unset or false, no such validation will be performed. + // May also be set in PodSecurityContext. If set in both SecurityContext and + // PodSecurityContext, the value specified in SecurityContext takes precedence. + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,5,opt,name=runAsNonRoot"` + // Whether this container has a read-only root filesystem. + // Default is false. + ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,6,opt,name=readOnlyRootFilesystem"` +} + +// SELinuxOptions are the labels to be applied to the container +type SELinuxOptions struct { + // User is a SELinux user label that applies to the container. + User string `json:"user,omitempty" protobuf:"bytes,1,opt,name=user"` + // Role is a SELinux role label that applies to the container. + Role string `json:"role,omitempty" protobuf:"bytes,2,opt,name=role"` + // Type is a SELinux type label that applies to the container. + Type string `json:"type,omitempty" protobuf:"bytes,3,opt,name=type"` + // Level is SELinux level label that applies to the container. + Level string `json:"level,omitempty" protobuf:"bytes,4,opt,name=level"` +} + +// RangeAllocation is not a public type. +type RangeAllocation struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Range is string that identifies the range represented by 'data'. + Range string `json:"range" protobuf:"bytes,2,opt,name=range"` + // Data is a bit array containing all allocated addresses in the previous segment. + Data []byte `json:"data" protobuf:"bytes,3,opt,name=data"` +} + +const ( + // "default-scheduler" is the name of default scheduler. + DefaultSchedulerName = "default-scheduler" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..d9180625e8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/types_swagger_doc_generated.go @@ -0,0 +1,1811 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_AWSElasticBlockStoreVolumeSource = map[string]string{ + "": "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling.", + "volumeID": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore", + "partition": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).", + "readOnly": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore", +} + +func (AWSElasticBlockStoreVolumeSource) SwaggerDoc() map[string]string { + return map_AWSElasticBlockStoreVolumeSource +} + +var map_Affinity = map[string]string{ + "": "Affinity is a group of affinity scheduling rules.", + "nodeAffinity": "Describes node affinity scheduling rules for the pod.", + "podAffinity": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", + "podAntiAffinity": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", +} + +func (Affinity) SwaggerDoc() map[string]string { + return map_Affinity +} + +var map_AttachedVolume = map[string]string{ + "": "AttachedVolume describes a volume attached to a node", + "name": "Name of the attached volume", + "devicePath": "DevicePath represents the device path where the volume should be avilable", +} + +func (AttachedVolume) SwaggerDoc() map[string]string { + return map_AttachedVolume +} + +var map_AvoidPods = map[string]string{ + "": "AvoidPods describes pods that should avoid this node. This is the value for a Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and will eventually become a field of NodeStatus.", + "preferAvoidPods": "Bounded-sized list of signatures of pods that should avoid this node, sorted in timestamp order from oldest to newest. Size of the slice is unspecified.", +} + +func (AvoidPods) SwaggerDoc() map[string]string { + return map_AvoidPods +} + +var map_AzureDiskVolumeSource = map[string]string{ + "": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", + "diskName": "The Name of the data disk in the blob storage", + "diskURI": "The URI the data disk in the blob storage", + "cachingMode": "Host Caching mode: None, Read Only, Read Write.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (AzureDiskVolumeSource) SwaggerDoc() map[string]string { + return map_AzureDiskVolumeSource +} + +var map_AzureFileVolumeSource = map[string]string{ + "": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "secretName": "the name of secret that contains Azure Storage Account Name and Key", + "shareName": "Share Name", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (AzureFileVolumeSource) SwaggerDoc() map[string]string { + return map_AzureFileVolumeSource +} + +var map_Binding = map[string]string{ + "": "Binding ties one object to another. For example, a pod is bound to a node by a scheduler.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "target": "The target object that you want to bind to the standard object.", +} + +func (Binding) SwaggerDoc() map[string]string { + return map_Binding +} + +var map_Capabilities = map[string]string{ + "": "Adds and removes POSIX capabilities from running containers.", + "add": "Added capabilities", + "drop": "Removed capabilities", +} + +func (Capabilities) SwaggerDoc() map[string]string { + return map_Capabilities +} + +var map_CephFSVolumeSource = map[string]string{ + "": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", + "monitors": "Required: Monitors is a collection of Ceph monitors More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "path": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", + "user": "Optional: User is the rados user name, default is admin More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "secretFile": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "secretRef": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", +} + +func (CephFSVolumeSource) SwaggerDoc() map[string]string { + return map_CephFSVolumeSource +} + +var map_CinderVolumeSource = map[string]string{ + "": "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling.", + "volumeID": "volume id used to identify the volume in cinder More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", +} + +func (CinderVolumeSource) SwaggerDoc() map[string]string { + return map_CinderVolumeSource +} + +var map_ComponentCondition = map[string]string{ + "": "Information about the condition of a component.", + "type": "Type of condition for a component. Valid value: \"Healthy\"", + "status": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", + "message": "Message about the condition for a component. For example, information about a health check.", + "error": "Condition error code for a component. For example, a health check error code.", +} + +func (ComponentCondition) SwaggerDoc() map[string]string { + return map_ComponentCondition +} + +var map_ComponentStatus = map[string]string{ + "": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "conditions": "List of component conditions observed", +} + +func (ComponentStatus) SwaggerDoc() map[string]string { + return map_ComponentStatus +} + +var map_ComponentStatusList = map[string]string{ + "": "Status of all the conditions for the component as a list of ComponentStatus objects.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of ComponentStatus objects.", +} + +func (ComponentStatusList) SwaggerDoc() map[string]string { + return map_ComponentStatusList +} + +var map_ConfigMap = map[string]string{ + "": "ConfigMap holds configuration data for pods to consume.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "data": "Data contains the configuration data. Each key must be a valid DNS_SUBDOMAIN with an optional leading dot.", +} + +func (ConfigMap) SwaggerDoc() map[string]string { + return map_ConfigMap +} + +var map_ConfigMapKeySelector = map[string]string{ + "": "Selects a key from a ConfigMap.", + "key": "The key to select.", +} + +func (ConfigMapKeySelector) SwaggerDoc() map[string]string { + return map_ConfigMapKeySelector +} + +var map_ConfigMapList = map[string]string{ + "": "ConfigMapList is a resource containing a list of ConfigMap objects.", + "metadata": "More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of ConfigMaps.", +} + +func (ConfigMapList) SwaggerDoc() map[string]string { + return map_ConfigMapList +} + +var map_ConfigMapVolumeSource = map[string]string{ + "": "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling.", + "items": "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error. Paths must be relative and may not contain the '..' path or start with '..'.", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (ConfigMapVolumeSource) SwaggerDoc() map[string]string { + return map_ConfigMapVolumeSource +} + +var map_Container = map[string]string{ + "": "A single application container that you want to run within a pod.", + "name": "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.", + "image": "Docker image name. More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md", + "command": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands", + "args": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands", + "workingDir": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", + "ports": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "env": "List of environment variables to set in the container. Cannot be updated.", + "resources": "Compute Resources required by this container. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources", + "volumeMounts": "Pod volumes to mount into the container's filesystem. Cannot be updated.", + "livenessProbe": "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes", + "readinessProbe": "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes", + "lifecycle": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", + "terminationMessagePath": "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Defaults to /dev/termination-log. Cannot be updated.", + "imagePullPolicy": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#updating-images", + "securityContext": "Security options the pod should run with. More info: http://releases.k8s.io/HEAD/docs/design/security_context.md", + "stdin": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.", + "stdinOnce": "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false", + "tty": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", +} + +func (Container) SwaggerDoc() map[string]string { + return map_Container +} + +var map_ContainerImage = map[string]string{ + "": "Describe a container image", + "names": "Names by which this image is known. e.g. [\"gcr.io/google_containers/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]", + "sizeBytes": "The size of the image in bytes.", +} + +func (ContainerImage) SwaggerDoc() map[string]string { + return map_ContainerImage +} + +var map_ContainerPort = map[string]string{ + "": "ContainerPort represents a network port in a single container.", + "name": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", + "hostPort": "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", + "containerPort": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", + "protocol": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", + "hostIP": "What host IP to bind the external port to.", +} + +func (ContainerPort) SwaggerDoc() map[string]string { + return map_ContainerPort +} + +var map_ContainerState = map[string]string{ + "": "ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.", + "waiting": "Details about a waiting container", + "running": "Details about a running container", + "terminated": "Details about a terminated container", +} + +func (ContainerState) SwaggerDoc() map[string]string { + return map_ContainerState +} + +var map_ContainerStateRunning = map[string]string{ + "": "ContainerStateRunning is a running state of a container.", + "startedAt": "Time at which the container was last (re-)started", +} + +func (ContainerStateRunning) SwaggerDoc() map[string]string { + return map_ContainerStateRunning +} + +var map_ContainerStateTerminated = map[string]string{ + "": "ContainerStateTerminated is a terminated state of a container.", + "exitCode": "Exit status from the last termination of the container", + "signal": "Signal from the last termination of the container", + "reason": "(brief) reason from the last termination of the container", + "message": "Message regarding the last termination of the container", + "startedAt": "Time at which previous execution of the container started", + "finishedAt": "Time at which the container last terminated", + "containerID": "Container's ID in the format 'docker://<container_id>'", +} + +func (ContainerStateTerminated) SwaggerDoc() map[string]string { + return map_ContainerStateTerminated +} + +var map_ContainerStateWaiting = map[string]string{ + "": "ContainerStateWaiting is a waiting state of a container.", + "reason": "(brief) reason the container is not yet running.", + "message": "Message regarding why the container is not yet running.", +} + +func (ContainerStateWaiting) SwaggerDoc() map[string]string { + return map_ContainerStateWaiting +} + +var map_ContainerStatus = map[string]string{ + "": "ContainerStatus contains details for the current status of this container.", + "name": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.", + "state": "Details about the container's current condition.", + "lastState": "Details about the container's last termination condition.", + "ready": "Specifies whether the container has passed its readiness probe.", + "restartCount": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.", + "image": "The image the container is running. More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md", + "imageID": "ImageID of the container's image.", + "containerID": "Container's ID in the format 'docker://<container_id>'. More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#container-information", +} + +func (ContainerStatus) SwaggerDoc() map[string]string { + return map_ContainerStatus +} + +var map_DaemonEndpoint = map[string]string{ + "": "DaemonEndpoint contains information about a single Daemon endpoint.", + "Port": "Port number of the given endpoint.", +} + +func (DaemonEndpoint) SwaggerDoc() map[string]string { + return map_DaemonEndpoint +} + +var map_DeleteOptions = map[string]string{ + "": "DeleteOptions may be provided when deleting an API object", + "gracePeriodSeconds": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", + "preconditions": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", + "orphanDependents": "Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list.", +} + +func (DeleteOptions) SwaggerDoc() map[string]string { + return map_DeleteOptions +} + +var map_DownwardAPIVolumeFile = map[string]string{ + "": "DownwardAPIVolumeFile represents information to create the file containing the pod field", + "path": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", + "fieldRef": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", + "resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", + "mode": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (DownwardAPIVolumeFile) SwaggerDoc() map[string]string { + return map_DownwardAPIVolumeFile +} + +var map_DownwardAPIVolumeSource = map[string]string{ + "": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", + "items": "Items is a list of downward API volume file", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (DownwardAPIVolumeSource) SwaggerDoc() map[string]string { + return map_DownwardAPIVolumeSource +} + +var map_EmptyDirVolumeSource = map[string]string{ + "": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", + "medium": "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir", +} + +func (EmptyDirVolumeSource) SwaggerDoc() map[string]string { + return map_EmptyDirVolumeSource +} + +var map_EndpointAddress = map[string]string{ + "": "EndpointAddress is a tuple that describes single IP address.", + "ip": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", + "hostname": "The Hostname of this endpoint", + "nodeName": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", + "targetRef": "Reference to object providing the endpoint.", +} + +func (EndpointAddress) SwaggerDoc() map[string]string { + return map_EndpointAddress +} + +var map_EndpointPort = map[string]string{ + "": "EndpointPort is a tuple that describes a single port.", + "name": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.", + "port": "The port number of the endpoint.", + "protocol": "The IP protocol for this port. Must be UDP or TCP. Default is TCP.", +} + +func (EndpointPort) SwaggerDoc() map[string]string { + return map_EndpointPort +} + +var map_EndpointSubset = map[string]string{ + "": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]", + "addresses": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.", + "notReadyAddresses": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.", + "ports": "Port numbers available on the related IP addresses.", +} + +func (EndpointSubset) SwaggerDoc() map[string]string { + return map_EndpointSubset +} + +var map_Endpoints = map[string]string{ + "": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "subsets": "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.", +} + +func (Endpoints) SwaggerDoc() map[string]string { + return map_Endpoints +} + +var map_EndpointsList = map[string]string{ + "": "EndpointsList is a list of endpoints.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of endpoints.", +} + +func (EndpointsList) SwaggerDoc() map[string]string { + return map_EndpointsList +} + +var map_EnvVar = map[string]string{ + "": "EnvVar represents an environment variable present in a Container.", + "name": "Name of the environment variable. Must be a C_IDENTIFIER.", + "value": "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", + "valueFrom": "Source for the environment variable's value. Cannot be used if value is not empty.", +} + +func (EnvVar) SwaggerDoc() map[string]string { + return map_EnvVar +} + +var map_EnvVarSource = map[string]string{ + "": "EnvVarSource represents a source for the value of an EnvVar.", + "fieldRef": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP.", + "resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", + "configMapKeyRef": "Selects a key of a ConfigMap.", + "secretKeyRef": "Selects a key of a secret in the pod's namespace", +} + +func (EnvVarSource) SwaggerDoc() map[string]string { + return map_EnvVarSource +} + +var map_Event = map[string]string{ + "": "Event is a report of an event somewhere in the cluster.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "involvedObject": "The object that this event is about.", + "reason": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", + "message": "A human-readable description of the status of this operation.", + "source": "The component reporting this event. Should be a short machine understandable string.", + "firstTimestamp": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", + "lastTimestamp": "The time at which the most recent occurrence of this event was recorded.", + "count": "The number of times this event has occurred.", + "type": "Type of this event (Normal, Warning), new types could be added in the future", +} + +func (Event) SwaggerDoc() map[string]string { + return map_Event +} + +var map_EventList = map[string]string{ + "": "EventList is a list of events.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of events", +} + +func (EventList) SwaggerDoc() map[string]string { + return map_EventList +} + +var map_EventSource = map[string]string{ + "": "EventSource contains information for an event.", + "component": "Component from which the event is generated.", + "host": "Node name on which the event is generated.", +} + +func (EventSource) SwaggerDoc() map[string]string { + return map_EventSource +} + +var map_ExecAction = map[string]string{ + "": "ExecAction describes a \"run in container\" action.", + "command": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", +} + +func (ExecAction) SwaggerDoc() map[string]string { + return map_ExecAction +} + +var map_ExportOptions = map[string]string{ + "": "ExportOptions is the query options to the standard REST get call.", + "export": "Should this value be exported. Export strips fields that a user can not specify.", + "exact": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'", +} + +func (ExportOptions) SwaggerDoc() map[string]string { + return map_ExportOptions +} + +var map_FCVolumeSource = map[string]string{ + "": "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling.", + "targetWWNs": "Required: FC target worldwide names (WWNs)", + "lun": "Required: FC target lun number", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (FCVolumeSource) SwaggerDoc() map[string]string { + return map_FCVolumeSource +} + +var map_FlexVolumeSource = map[string]string{ + "": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "driver": "Driver is the name of the driver to use for this volume.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.", + "secretRef": "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.", + "readOnly": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "options": "Optional: Extra command options if any.", +} + +func (FlexVolumeSource) SwaggerDoc() map[string]string { + return map_FlexVolumeSource +} + +var map_FlockerVolumeSource = map[string]string{ + "": "Represents a Flocker volume mounted by the Flocker agent. Flocker volumes do not support ownership management or SELinux relabeling.", + "datasetName": "Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker", +} + +func (FlockerVolumeSource) SwaggerDoc() map[string]string { + return map_FlockerVolumeSource +} + +var map_GCEPersistentDiskVolumeSource = map[string]string{ + "": "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling.", + "pdName": "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", + "partition": "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", +} + +func (GCEPersistentDiskVolumeSource) SwaggerDoc() map[string]string { + return map_GCEPersistentDiskVolumeSource +} + +var map_GitRepoVolumeSource = map[string]string{ + "": "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.", + "repository": "Repository URL", + "revision": "Commit hash for the specified revision.", + "directory": "Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name.", +} + +func (GitRepoVolumeSource) SwaggerDoc() map[string]string { + return map_GitRepoVolumeSource +} + +var map_GlusterfsVolumeSource = map[string]string{ + "": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", + "endpoints": "EndpointsName is the endpoint name that details Glusterfs topology. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", + "path": "Path is the Glusterfs volume path. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", + "readOnly": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", +} + +func (GlusterfsVolumeSource) SwaggerDoc() map[string]string { + return map_GlusterfsVolumeSource +} + +var map_HTTPGetAction = map[string]string{ + "": "HTTPGetAction describes an action based on HTTP Get requests.", + "path": "Path to access on the HTTP server.", + "port": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "host": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "scheme": "Scheme to use for connecting to the host. Defaults to HTTP.", + "httpHeaders": "Custom headers to set in the request. HTTP allows repeated headers.", +} + +func (HTTPGetAction) SwaggerDoc() map[string]string { + return map_HTTPGetAction +} + +var map_HTTPHeader = map[string]string{ + "": "HTTPHeader describes a custom header to be used in HTTP probes", + "name": "The header field name", + "value": "The header field value", +} + +func (HTTPHeader) SwaggerDoc() map[string]string { + return map_HTTPHeader +} + +var map_Handler = map[string]string{ + "": "Handler defines a specific action that should be taken", + "exec": "One and only one of the following should be specified. Exec specifies the action to take.", + "httpGet": "HTTPGet specifies the http request to perform.", + "tcpSocket": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", +} + +func (Handler) SwaggerDoc() map[string]string { + return map_Handler +} + +var map_HostPathVolumeSource = map[string]string{ + "": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", + "path": "Path of the directory on the host. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath", +} + +func (HostPathVolumeSource) SwaggerDoc() map[string]string { + return map_HostPathVolumeSource +} + +var map_ISCSIVolumeSource = map[string]string{ + "": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", + "targetPortal": "iSCSI target portal. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260).", + "iqn": "Target iSCSI Qualified Name.", + "lun": "iSCSI target lun number.", + "iscsiInterface": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#iscsi", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", +} + +func (ISCSIVolumeSource) SwaggerDoc() map[string]string { + return map_ISCSIVolumeSource +} + +var map_KeyToPath = map[string]string{ + "": "Maps a string key to a path within a volume.", + "key": "The key to project.", + "path": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.", + "mode": "Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (KeyToPath) SwaggerDoc() map[string]string { + return map_KeyToPath +} + +var map_Lifecycle = map[string]string{ + "": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.", + "postStart": "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details", + "preStop": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details", +} + +func (Lifecycle) SwaggerDoc() map[string]string { + return map_Lifecycle +} + +var map_LimitRange = map[string]string{ + "": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the limits enforced. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (LimitRange) SwaggerDoc() map[string]string { + return map_LimitRange +} + +var map_LimitRangeItem = map[string]string{ + "": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", + "type": "Type of resource that this limit applies to.", + "max": "Max usage constraints on this kind by resource name.", + "min": "Min usage constraints on this kind by resource name.", + "default": "Default resource requirement limit value by resource name if resource limit is omitted.", + "defaultRequest": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.", + "maxLimitRequestRatio": "MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.", +} + +func (LimitRangeItem) SwaggerDoc() map[string]string { + return map_LimitRangeItem +} + +var map_LimitRangeList = map[string]string{ + "": "LimitRangeList is a list of LimitRange items.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "Items is a list of LimitRange objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md", +} + +func (LimitRangeList) SwaggerDoc() map[string]string { + return map_LimitRangeList +} + +var map_LimitRangeSpec = map[string]string{ + "": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", + "limits": "Limits is the list of LimitRangeItem objects that are enforced.", +} + +func (LimitRangeSpec) SwaggerDoc() map[string]string { + return map_LimitRangeSpec +} + +var map_List = map[string]string{ + "": "List holds a list of objects, which may not be known by the server.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of objects", +} + +func (List) SwaggerDoc() map[string]string { + return map_List +} + +var map_ListOptions = map[string]string{ + "": "ListOptions is the query options to a standard REST list call.", + "labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "timeoutSeconds": "Timeout for the list/watch call.", +} + +func (ListOptions) SwaggerDoc() map[string]string { + return map_ListOptions +} + +var map_LoadBalancerIngress = map[string]string{ + "": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", + "ip": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", + "hostname": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", +} + +func (LoadBalancerIngress) SwaggerDoc() map[string]string { + return map_LoadBalancerIngress +} + +var map_LoadBalancerStatus = map[string]string{ + "": "LoadBalancerStatus represents the status of a load-balancer.", + "ingress": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", +} + +func (LoadBalancerStatus) SwaggerDoc() map[string]string { + return map_LoadBalancerStatus +} + +var map_LocalObjectReference = map[string]string{ + "": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "name": "Name of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", +} + +func (LocalObjectReference) SwaggerDoc() map[string]string { + return map_LocalObjectReference +} + +var map_NFSVolumeSource = map[string]string{ + "": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", + "server": "Server is the hostname or IP address of the NFS server. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs", + "path": "Path that is exported by the NFS server. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs", + "readOnly": "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs", +} + +func (NFSVolumeSource) SwaggerDoc() map[string]string { + return map_NFSVolumeSource +} + +var map_Namespace = map[string]string{ + "": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of the Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status describes the current status of a Namespace. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Namespace) SwaggerDoc() map[string]string { + return map_Namespace +} + +var map_NamespaceList = map[string]string{ + "": "NamespaceList is a list of Namespaces.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "Items is the list of Namespace objects in the list. More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md", +} + +func (NamespaceList) SwaggerDoc() map[string]string { + return map_NamespaceList +} + +var map_NamespaceSpec = map[string]string{ + "": "NamespaceSpec describes the attributes on a Namespace.", + "finalizers": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers", +} + +func (NamespaceSpec) SwaggerDoc() map[string]string { + return map_NamespaceSpec +} + +var map_NamespaceStatus = map[string]string{ + "": "NamespaceStatus is information about the current status of a Namespace.", + "phase": "Phase is the current lifecycle phase of the namespace. More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases", +} + +func (NamespaceStatus) SwaggerDoc() map[string]string { + return map_NamespaceStatus +} + +var map_Node = map[string]string{ + "": "Node is a worker node in Kubernetes.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a node. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the node. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Node) SwaggerDoc() map[string]string { + return map_Node +} + +var map_NodeAddress = map[string]string{ + "": "NodeAddress contains information for the node's address.", + "type": "Node address type, one of Hostname, ExternalIP or InternalIP.", + "address": "The node address.", +} + +func (NodeAddress) SwaggerDoc() map[string]string { + return map_NodeAddress +} + +var map_NodeAffinity = map[string]string{ + "": "Node affinity is a group of node affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", +} + +func (NodeAffinity) SwaggerDoc() map[string]string { + return map_NodeAffinity +} + +var map_NodeCondition = map[string]string{ + "": "NodeCondition contains condition information for a node.", + "type": "Type of node condition.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastHeartbeatTime": "Last time we got an update on a given condition.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (NodeCondition) SwaggerDoc() map[string]string { + return map_NodeCondition +} + +var map_NodeDaemonEndpoints = map[string]string{ + "": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", + "kubeletEndpoint": "Endpoint on which Kubelet is listening.", +} + +func (NodeDaemonEndpoints) SwaggerDoc() map[string]string { + return map_NodeDaemonEndpoints +} + +var map_NodeList = map[string]string{ + "": "NodeList is the whole list of all Nodes which have been registered with master.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of nodes", +} + +func (NodeList) SwaggerDoc() map[string]string { + return map_NodeList +} + +var map_NodeProxyOptions = map[string]string{ + "": "NodeProxyOptions is the query options to a Node's proxy call.", + "path": "Path is the URL path to use for the current proxy request to node.", +} + +func (NodeProxyOptions) SwaggerDoc() map[string]string { + return map_NodeProxyOptions +} + +var map_NodeSelector = map[string]string{ + "": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "nodeSelectorTerms": "Required. A list of node selector terms. The terms are ORed.", +} + +func (NodeSelector) SwaggerDoc() map[string]string { + return map_NodeSelector +} + +var map_NodeSelectorRequirement = map[string]string{ + "": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "The label key that the selector applies to.", + "operator": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "values": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", +} + +func (NodeSelectorRequirement) SwaggerDoc() map[string]string { + return map_NodeSelectorRequirement +} + +var map_NodeSelectorTerm = map[string]string{ + "": "A null or empty node selector term matches no objects.", + "matchExpressions": "Required. A list of node selector requirements. The requirements are ANDed.", +} + +func (NodeSelectorTerm) SwaggerDoc() map[string]string { + return map_NodeSelectorTerm +} + +var map_NodeSpec = map[string]string{ + "": "NodeSpec describes the attributes that a node is created with.", + "podCIDR": "PodCIDR represents the pod IP range assigned to the node.", + "externalID": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.", + "providerID": "ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>", + "unschedulable": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration\"`", +} + +func (NodeSpec) SwaggerDoc() map[string]string { + return map_NodeSpec +} + +var map_NodeStatus = map[string]string{ + "": "NodeStatus is information about the current status of a node.", + "capacity": "Capacity represents the total resources of a node. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity for more details.", + "allocatable": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.", + "phase": "NodePhase is the recently observed lifecycle phase of the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase The field is never populated, and now is deprecated.", + "conditions": "Conditions is an array of current observed node conditions. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition", + "addresses": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses", + "daemonEndpoints": "Endpoints of daemons running on the Node.", + "nodeInfo": "Set of ids/uuids to uniquely identify the node. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info", + "images": "List of container images on this node", + "volumesInUse": "List of attachable volumes in use (mounted) by the node.", + "volumesAttached": "List of volumes that are attached to the node.", +} + +func (NodeStatus) SwaggerDoc() map[string]string { + return map_NodeStatus +} + +var map_NodeSystemInfo = map[string]string{ + "": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", + "machineID": "MachineID reported by the node. For unique machine identification in the cluster this field is prefered. Learn more from man(5) machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html", + "systemUUID": "SystemUUID reported by the node. For unique machine identification MachineID is prefered. This field is specific to Red Hat hosts https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html", + "bootID": "Boot ID reported by the node.", + "kernelVersion": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", + "osImage": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).", + "containerRuntimeVersion": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).", + "kubeletVersion": "Kubelet Version reported by the node.", + "kubeProxyVersion": "KubeProxy Version reported by the node.", + "operatingSystem": "The Operating System reported by the node", + "architecture": "The Architecture reported by the node", +} + +func (NodeSystemInfo) SwaggerDoc() map[string]string { + return map_NodeSystemInfo +} + +var map_ObjectFieldSelector = map[string]string{ + "": "ObjectFieldSelector selects an APIVersioned field of an object.", + "apiVersion": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", + "fieldPath": "Path of the field to select in the specified API version.", +} + +func (ObjectFieldSelector) SwaggerDoc() map[string]string { + return map_ObjectFieldSelector +} + +var map_ObjectMeta = map[string]string{ + "": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "name": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", + "generateName": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency", + "namespace": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md", + "selfLink": "SelfLink is a URL representing this object. Populated by the system. Read-only.", + "uid": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids", + "resourceVersion": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency", + "generation": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "creationTimestamp": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "deletionTimestamp": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource will be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet will send a hard termination signal to the container. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "deletionGracePeriodSeconds": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "labels": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md", + "annotations": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://releases.k8s.io/HEAD/docs/user-guide/annotations.md", + "ownerReferences": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "finalizers": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed.", + "clusterName": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", +} + +func (ObjectMeta) SwaggerDoc() map[string]string { + return map_ObjectMeta +} + +var map_ObjectReference = map[string]string{ + "": "ObjectReference contains enough information to let you inspect or modify the referred object.", + "kind": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "namespace": "Namespace of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md", + "name": "Name of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", + "uid": "UID of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids", + "apiVersion": "API version of the referent.", + "resourceVersion": "Specific resourceVersion to which this reference is made, if any. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency", + "fieldPath": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.", +} + +func (ObjectReference) SwaggerDoc() map[string]string { + return map_ObjectReference +} + +var map_OwnerReference = map[string]string{ + "": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", + "apiVersion": "API version of the referent.", + "kind": "Kind of the referent. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "name": "Name of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", + "uid": "UID of the referent. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids", + "controller": "If true, this reference points to the managing controller.", +} + +func (OwnerReference) SwaggerDoc() map[string]string { + return map_OwnerReference +} + +var map_PersistentVolume = map[string]string{ + "": "PersistentVolume (PV) is a storage resource provisioned by an administrator. It is analogous to a node. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines a specification of a persistent volume owned by the cluster. Provisioned by an administrator. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes", + "status": "Status represents the current information/status for the persistent volume. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes", +} + +func (PersistentVolume) SwaggerDoc() map[string]string { + return map_PersistentVolume +} + +var map_PersistentVolumeClaim = map[string]string{ + "": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired characteristics of a volume requested by a pod author. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims", + "status": "Status represents the current information/status of a persistent volume claim. Read-only. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims", +} + +func (PersistentVolumeClaim) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaim +} + +var map_PersistentVolumeClaimList = map[string]string{ + "": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "A list of persistent volume claims. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims", +} + +func (PersistentVolumeClaimList) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimList +} + +var map_PersistentVolumeClaimSpec = map[string]string{ + "": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", + "accessModes": "AccessModes contains the desired access modes the volume should have. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1", + "selector": "A label query over volumes to consider for binding.", + "resources": "Resources represents the minimum resources the volume should have. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources", + "volumeName": "VolumeName is the binding reference to the PersistentVolume backing this claim.", +} + +func (PersistentVolumeClaimSpec) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimSpec +} + +var map_PersistentVolumeClaimStatus = map[string]string{ + "": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", + "phase": "Phase represents the current phase of PersistentVolumeClaim.", + "accessModes": "AccessModes contains the actual access modes the volume backing the PVC has. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1", + "capacity": "Represents the actual resources of the underlying volume.", +} + +func (PersistentVolumeClaimStatus) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimStatus +} + +var map_PersistentVolumeClaimVolumeSource = map[string]string{ + "": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system).", + "claimName": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims", + "readOnly": "Will force the ReadOnly setting in VolumeMounts. Default false.", +} + +func (PersistentVolumeClaimVolumeSource) SwaggerDoc() map[string]string { + return map_PersistentVolumeClaimVolumeSource +} + +var map_PersistentVolumeList = map[string]string{ + "": "PersistentVolumeList is a list of PersistentVolume items.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of persistent volumes. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md", +} + +func (PersistentVolumeList) SwaggerDoc() map[string]string { + return map_PersistentVolumeList +} + +var map_PersistentVolumeSource = map[string]string{ + "": "PersistentVolumeSource is similar to VolumeSource but meant for the administrator who creates PVs. Exactly one of its members must be set.", + "gcePersistentDisk": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", + "awsElasticBlockStore": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore", + "hostPath": "HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath", + "glusterfs": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "nfs": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", + "iscsi": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. Provisioned by an admin.", + "cinder": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "cephfs": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", + "fc": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", + "flocker": "Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running", + "flexVolume": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "azureFile": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "vsphereVolume": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", + "quobyte": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", + "azureDisk": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", +} + +func (PersistentVolumeSource) SwaggerDoc() map[string]string { + return map_PersistentVolumeSource +} + +var map_PersistentVolumeSpec = map[string]string{ + "": "PersistentVolumeSpec is the specification of a persistent volume.", + "capacity": "A description of the persistent volume's resources and capacity. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity", + "accessModes": "AccessModes contains all ways the volume can be mounted. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes", + "claimRef": "ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. Expected to be non-nil when bound. claim.VolumeName is the authoritative bind between PV and PVC. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#binding", + "persistentVolumeReclaimPolicy": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#recycling-policy", +} + +func (PersistentVolumeSpec) SwaggerDoc() map[string]string { + return map_PersistentVolumeSpec +} + +var map_PersistentVolumeStatus = map[string]string{ + "": "PersistentVolumeStatus is the current status of a persistent volume.", + "phase": "Phase indicates if a volume is available, bound to a claim, or released by a claim. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#phase", + "message": "A human-readable message indicating details about why the volume is in this state.", + "reason": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", +} + +func (PersistentVolumeStatus) SwaggerDoc() map[string]string { + return map_PersistentVolumeStatus +} + +var map_Pod = map[string]string{ + "": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Pod) SwaggerDoc() map[string]string { + return map_Pod +} + +var map_PodAffinity = map[string]string{ + "": "Pod affinity is a group of inter pod affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", +} + +func (PodAffinity) SwaggerDoc() map[string]string { + return map_PodAffinity +} + +var map_PodAffinityTerm = map[string]string{ + "": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> tches that of any node on which a pod of the set of pods is running", + "labelSelector": "A label query over a set of resources, in this case pods.", + "namespaces": "namespaces specifies which namespaces the labelSelector applies to (matches against); nil list means \"this pod's namespace,\" empty list means \"all namespaces\" The json tag here is not \"omitempty\" since we need to distinguish nil and empty. See https://golang.org/pkg/encoding/json/#Marshal for more details.", + "topologyKey": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.", +} + +func (PodAffinityTerm) SwaggerDoc() map[string]string { + return map_PodAffinityTerm +} + +var map_PodAntiAffinity = map[string]string{ + "": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "requiredDuringSchedulingIgnoredDuringExecution": "NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented. If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system will try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:\"requiredDuringSchedulingRequiredDuringExecution,omitempty\"` If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", +} + +func (PodAntiAffinity) SwaggerDoc() map[string]string { + return map_PodAntiAffinity +} + +var map_PodAttachOptions = map[string]string{ + "": "PodAttachOptions is the query options to a Pod's remote attach call.", + "stdin": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", + "stdout": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", + "stderr": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", + "tty": "TTY if true indicates that a tty will be allocated for the attach call. This is passed through the container runtime so the tty is allocated on the worker node by the container runtime. Defaults to false.", + "container": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", +} + +func (PodAttachOptions) SwaggerDoc() map[string]string { + return map_PodAttachOptions +} + +var map_PodCondition = map[string]string{ + "": "PodCondition contains details for the current condition of this pod.", + "type": "Type is the type of the condition. Currently only Ready. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions", + "status": "Status is the status of the condition. Can be True, False, Unknown. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions", + "lastProbeTime": "Last time we probed the condition.", + "lastTransitionTime": "Last time the condition transitioned from one status to another.", + "reason": "Unique, one-word, CamelCase reason for the condition's last transition.", + "message": "Human-readable message indicating details about last transition.", +} + +func (PodCondition) SwaggerDoc() map[string]string { + return map_PodCondition +} + +var map_PodExecOptions = map[string]string{ + "": "PodExecOptions is the query options to a Pod's remote exec call.", + "stdin": "Redirect the standard input stream of the pod for this call. Defaults to false.", + "stdout": "Redirect the standard output stream of the pod for this call. Defaults to true.", + "stderr": "Redirect the standard error stream of the pod for this call. Defaults to true.", + "tty": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", + "container": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", + "command": "Command is the remote command to execute. argv array. Not executed within a shell.", +} + +func (PodExecOptions) SwaggerDoc() map[string]string { + return map_PodExecOptions +} + +var map_PodList = map[string]string{ + "": "PodList is a list of Pods.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of pods. More info: http://releases.k8s.io/HEAD/docs/user-guide/pods.md", +} + +func (PodList) SwaggerDoc() map[string]string { + return map_PodList +} + +var map_PodLogOptions = map[string]string{ + "": "PodLogOptions is the query options for a Pod's logs REST call.", + "container": "The container for which to stream logs. Defaults to only container if there is one container in the pod.", + "follow": "Follow the log stream of the pod. Defaults to false.", + "previous": "Return previous terminated container logs. Defaults to false.", + "sinceSeconds": "A relative time in seconds before the current time from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", + "sinceTime": "An RFC3339 timestamp from which to show logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. If this value is in the future, no logs will be returned. Only one of sinceSeconds or sinceTime may be specified.", + "timestamps": "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.", + "tailLines": "If set, the number of lines from the end of the logs to show. If not specified, logs are shown from the creation of the container or sinceSeconds or sinceTime", + "limitBytes": "If set, the number of bytes to read from the server before terminating the log output. This may not display a complete final line of logging, and may return slightly more or slightly less than the specified limit.", +} + +func (PodLogOptions) SwaggerDoc() map[string]string { + return map_PodLogOptions +} + +var map_PodProxyOptions = map[string]string{ + "": "PodProxyOptions is the query options to a Pod's proxy call.", + "path": "Path is the URL path to use for the current proxy request to pod.", +} + +func (PodProxyOptions) SwaggerDoc() map[string]string { + return map_PodProxyOptions +} + +var map_PodSecurityContext = map[string]string{ + "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", + "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", +} + +func (PodSecurityContext) SwaggerDoc() map[string]string { + return map_PodSecurityContext +} + +var map_PodSignature = map[string]string{ + "": "Describes the class of pods that should avoid this node. Exactly one field should be set.", + "podController": "Reference to controller whose pods should avoid this node.", +} + +func (PodSignature) SwaggerDoc() map[string]string { + return map_PodSignature +} + +var map_PodSpec = map[string]string{ + "": "PodSpec is a description of a pod.", + "volumes": "List of volumes that can be mounted by containers belonging to the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md", + "containers": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated. More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md", + "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#restartpolicy", + "terminationGracePeriodSeconds": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", + "activeDeadlineSeconds": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", + "dnsPolicy": "Set DNS policy for containers within the pod. One of 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\".", + "nodeSelector": "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: http://releases.k8s.io/HEAD/docs/user-guide/node-selection/README.md", + "serviceAccountName": "ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md", + "serviceAccount": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", + "nodeName": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", + "hostNetwork": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.", + "hostPID": "Use the host's pid namespace. Optional: Default to false.", + "hostIPC": "Use the host's ipc namespace. Optional: Default to false.", + "securityContext": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", + "imagePullSecrets": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#specifying-imagepullsecrets-on-a-pod", + "hostname": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", + "subdomain": "If specified, the fully qualified Pod hostname will be \"<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>\". If not specified, the pod will not have a domainname at all.", +} + +func (PodSpec) SwaggerDoc() map[string]string { + return map_PodSpec +} + +var map_PodStatus = map[string]string{ + "": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", + "phase": "Current condition of the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-phase", + "conditions": "Current service state of pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions", + "message": "A human readable message indicating details about why the pod is in this condition.", + "reason": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'OutOfDisk'", + "hostIP": "IP address of the host to which the pod is assigned. Empty if not yet scheduled.", + "podIP": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.", + "startTime": "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.", + "containerStatuses": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses", +} + +func (PodStatus) SwaggerDoc() map[string]string { + return map_PodStatus +} + +var map_PodStatusResult = map[string]string{ + "": "PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "status": "Most recently observed status of the pod. This data may not be up to date. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (PodStatusResult) SwaggerDoc() map[string]string { + return map_PodStatusResult +} + +var map_PodTemplate = map[string]string{ + "": "PodTemplate describes a template for creating copies of a predefined pod.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "template": "Template defines the pods that will be created from this pod template. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (PodTemplate) SwaggerDoc() map[string]string { + return map_PodTemplate +} + +var map_PodTemplateList = map[string]string{ + "": "PodTemplateList is a list of PodTemplates.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of pod templates", +} + +func (PodTemplateList) SwaggerDoc() map[string]string { + return map_PodTemplateList +} + +var map_PodTemplateSpec = map[string]string{ + "": "PodTemplateSpec describes the data a pod should have when created from a template", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the pod. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (PodTemplateSpec) SwaggerDoc() map[string]string { + return map_PodTemplateSpec +} + +var map_Preconditions = map[string]string{ + "": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", + "uid": "Specifies the target UID.", +} + +func (Preconditions) SwaggerDoc() map[string]string { + return map_Preconditions +} + +var map_PreferAvoidPodsEntry = map[string]string{ + "": "Describes a class of pods that should avoid this node.", + "podSignature": "The class of pods.", + "evictionTime": "Time at which this entry was added to the list.", + "reason": "(brief) reason why this entry was added to the list.", + "message": "Human readable message indicating why this entry was added to the list.", +} + +func (PreferAvoidPodsEntry) SwaggerDoc() map[string]string { + return map_PreferAvoidPodsEntry +} + +var map_PreferredSchedulingTerm = map[string]string{ + "": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "weight": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "preference": "A node selector term, associated with the corresponding weight.", +} + +func (PreferredSchedulingTerm) SwaggerDoc() map[string]string { + return map_PreferredSchedulingTerm +} + +var map_Probe = map[string]string{ + "": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", + "initialDelaySeconds": "Number of seconds after the container has started before liveness probes are initiated. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes", + "timeoutSeconds": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes", + "periodSeconds": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "successThreshold": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", + "failureThreshold": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", +} + +func (Probe) SwaggerDoc() map[string]string { + return map_Probe +} + +var map_QuobyteVolumeSource = map[string]string{ + "": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", + "registry": "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes", + "volume": "Volume is a string that references an already created Quobyte volume by name.", + "readOnly": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", + "user": "User to map volume access to Defaults to serivceaccount user", + "group": "Group to map volume access to Default is no group", +} + +func (QuobyteVolumeSource) SwaggerDoc() map[string]string { + return map_QuobyteVolumeSource +} + +var map_RBDVolumeSource = map[string]string{ + "": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", + "monitors": "A collection of Ceph monitors. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "image": "The rados image name. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "fsType": "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#rbd", + "pool": "The rados pool name. Default is rbd. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it.", + "user": "The rados user name. Default is admin. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "keyring": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "secretRef": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", + "readOnly": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", +} + +func (RBDVolumeSource) SwaggerDoc() map[string]string { + return map_RBDVolumeSource +} + +var map_RangeAllocation = map[string]string{ + "": "RangeAllocation is not a public type.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "range": "Range is string that identifies the range represented by 'data'.", + "data": "Data is a bit array containing all allocated addresses in the previous segment.", +} + +func (RangeAllocation) SwaggerDoc() map[string]string { + return map_RangeAllocation +} + +var map_ReplicationController = map[string]string{ + "": "ReplicationController represents the configuration of a replication controller.", + "metadata": "If the Labels of a ReplicationController are empty, they are defaulted to be the same as the Pod(s) that the replication controller manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the replication controller. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is the most recently observed status of the replication controller. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (ReplicationController) SwaggerDoc() map[string]string { + return map_ReplicationController +} + +var map_ReplicationControllerList = map[string]string{ + "": "ReplicationControllerList is a collection of replication controllers.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of replication controllers. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md", +} + +func (ReplicationControllerList) SwaggerDoc() map[string]string { + return map_ReplicationControllerList +} + +var map_ReplicationControllerSpec = map[string]string{ + "": "ReplicationControllerSpec is the specification of a replication controller.", + "replicas": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller", + "selector": "Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template", +} + +func (ReplicationControllerSpec) SwaggerDoc() map[string]string { + return map_ReplicationControllerSpec +} + +var map_ReplicationControllerStatus = map[string]string{ + "": "ReplicationControllerStatus represents the current status of a replication controller.", + "replicas": "Replicas is the most recently oberved number of replicas. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller", + "fullyLabeledReplicas": "The number of pods that have labels matching the labels of the pod template of the replication controller.", + "readyReplicas": "The number of ready replicas for this replication controller.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed replication controller.", +} + +func (ReplicationControllerStatus) SwaggerDoc() map[string]string { + return map_ReplicationControllerStatus +} + +var map_ResourceFieldSelector = map[string]string{ + "": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "containerName": "Container name: required for volumes, optional for env vars", + "resource": "Required: resource to select", + "divisor": "Specifies the output format of the exposed resources, defaults to \"1\"", +} + +func (ResourceFieldSelector) SwaggerDoc() map[string]string { + return map_ResourceFieldSelector +} + +var map_ResourceQuota = map[string]string{ + "": "ResourceQuota sets aggregate quota restrictions enforced per namespace", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired quota. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status defines the actual enforced quota and its current usage. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (ResourceQuota) SwaggerDoc() map[string]string { + return map_ResourceQuota +} + +var map_ResourceQuotaList = map[string]string{ + "": "ResourceQuotaList is a list of ResourceQuota items.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "Items is a list of ResourceQuota objects. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota", +} + +func (ResourceQuotaList) SwaggerDoc() map[string]string { + return map_ResourceQuotaList +} + +var map_ResourceQuotaSpec = map[string]string{ + "": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", + "hard": "Hard is the set of desired hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota", + "scopes": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.", +} + +func (ResourceQuotaSpec) SwaggerDoc() map[string]string { + return map_ResourceQuotaSpec +} + +var map_ResourceQuotaStatus = map[string]string{ + "": "ResourceQuotaStatus defines the enforced hard limits and observed use.", + "hard": "Hard is the set of enforced hard limits for each named resource. More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota", + "used": "Used is the current observed total usage of the resource in the namespace.", +} + +func (ResourceQuotaStatus) SwaggerDoc() map[string]string { + return map_ResourceQuotaStatus +} + +var map_ResourceRequirements = map[string]string{ + "": "ResourceRequirements describes the compute resource requirements.", + "limits": "Limits describes the maximum amount of compute resources allowed. More info: http://kubernetes.io/docs/user-guide/compute-resources/", + "requests": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: http://kubernetes.io/docs/user-guide/compute-resources/", +} + +func (ResourceRequirements) SwaggerDoc() map[string]string { + return map_ResourceRequirements +} + +var map_SELinuxOptions = map[string]string{ + "": "SELinuxOptions are the labels to be applied to the container", + "user": "User is a SELinux user label that applies to the container.", + "role": "Role is a SELinux role label that applies to the container.", + "type": "Type is a SELinux type label that applies to the container.", + "level": "Level is SELinux level label that applies to the container.", +} + +func (SELinuxOptions) SwaggerDoc() map[string]string { + return map_SELinuxOptions +} + +var map_Secret = map[string]string{ + "": "Secret holds secret data of a certain type. The total bytes of the values in the Data field must be less than MaxSecretSize bytes.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "data": "Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN or leading dot followed by valid DNS_SUBDOMAIN. The serialized form of the secret data is a base64 encoded string, representing the arbitrary (possibly non-string) data value here. Described in https://tools.ietf.org/html/rfc4648#section-4", + "stringData": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.", + "type": "Used to facilitate programmatic handling of secret data.", +} + +func (Secret) SwaggerDoc() map[string]string { + return map_Secret +} + +var map_SecretKeySelector = map[string]string{ + "": "SecretKeySelector selects a key of a Secret.", + "key": "The key of the secret to select from. Must be a valid secret key.", +} + +func (SecretKeySelector) SwaggerDoc() map[string]string { + return map_SecretKeySelector +} + +var map_SecretList = map[string]string{ + "": "SecretList is a list of Secret.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "Items is a list of secret objects. More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md", +} + +func (SecretList) SwaggerDoc() map[string]string { + return map_SecretList +} + +var map_SecretVolumeSource = map[string]string{ + "": "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling.", + "secretName": "Name of the secret in the pod's namespace to use. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets", + "items": "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error. Paths must be relative and may not contain the '..' path or start with '..'.", + "defaultMode": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", +} + +func (SecretVolumeSource) SwaggerDoc() map[string]string { + return map_SecretVolumeSource +} + +var map_SecurityContext = map[string]string{ + "": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", + "capabilities": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", + "privileged": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", + "seLinuxOptions": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "readOnlyRootFilesystem": "Whether this container has a read-only root filesystem. Default is false.", +} + +func (SecurityContext) SwaggerDoc() map[string]string { + return map_SecurityContext +} + +var map_SerializedReference = map[string]string{ + "": "SerializedReference is a reference to serialized object.", + "reference": "The reference to an object in the system.", +} + +func (SerializedReference) SwaggerDoc() map[string]string { + return map_SerializedReference +} + +var map_Service = map[string]string{ + "": "Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the behavior of a service. http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Most recently observed status of the service. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Service) SwaggerDoc() map[string]string { + return map_Service +} + +var map_ServiceAccount = map[string]string{ + "": "ServiceAccount binds together: * a name, understood by users, and perhaps by peripheral systems, for an identity * a principal that can be authenticated and authorized * a set of secrets", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "secrets": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md", + "imagePullSecrets": "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md#manually-specifying-an-imagepullsecret", +} + +func (ServiceAccount) SwaggerDoc() map[string]string { + return map_ServiceAccount +} + +var map_ServiceAccountList = map[string]string{ + "": "ServiceAccountList is a list of ServiceAccount objects", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of ServiceAccounts. More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts", +} + +func (ServiceAccountList) SwaggerDoc() map[string]string { + return map_ServiceAccountList +} + +var map_ServiceList = map[string]string{ + "": "ServiceList holds a list of services.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of services", +} + +func (ServiceList) SwaggerDoc() map[string]string { + return map_ServiceList +} + +var map_ServicePort = map[string]string{ + "": "ServicePort contains information on service's port.", + "name": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.", + "protocol": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP.", + "port": "The port that will be exposed by this service.", + "targetPort": "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service", + "nodePort": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport", +} + +func (ServicePort) SwaggerDoc() map[string]string { + return map_ServicePort +} + +var map_ServiceProxyOptions = map[string]string{ + "": "ServiceProxyOptions is the query options to a Service's proxy call.", + "path": "Path is the part of URLs that include service endpoints, suffixes, and parameters to use for the current proxy request to service. For example, the whole request URL is http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy. Path is _search?q=user:kimchy.", +} + +func (ServiceProxyOptions) SwaggerDoc() map[string]string { + return map_ServiceProxyOptions +} + +var map_ServiceSpec = map[string]string{ + "": "ServiceSpec describes the attributes that a user creates on a service.", + "ports": "The list of ports that are exposed by this service. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies", + "selector": "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview", + "clusterIP": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies", + "type": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"ClusterIP\" allocates a cluster-internal IP address for load-balancing to endpoints. Endpoints are determined by the selector or if that is not specified, by manual construction of an Endpoints object. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview", + "externalIPs": "externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. A previous form of this functionality exists as the deprecatedPublicIPs field. When using this field, callers should also clear the deprecatedPublicIPs field.", + "deprecatedPublicIPs": "deprecatedPublicIPs is deprecated and replaced by the externalIPs field with almost the exact same semantics. This field is retained in the v1 API for compatibility until at least 8/20/2016. It will be removed from any new API revisions. If both deprecatedPublicIPs *and* externalIPs are set, deprecatedPublicIPs is used.", + "sessionAffinity": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies", + "loadBalancerIP": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature.", + "loadBalancerSourceRanges": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: http://releases.k8s.io/HEAD/docs/user-guide/services-firewalls.md", + "externalName": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName.", +} + +func (ServiceSpec) SwaggerDoc() map[string]string { + return map_ServiceSpec +} + +var map_ServiceStatus = map[string]string{ + "": "ServiceStatus represents the current status of a service.", + "loadBalancer": "LoadBalancer contains the current status of the load-balancer, if one is present.", +} + +func (ServiceStatus) SwaggerDoc() map[string]string { + return map_ServiceStatus +} + +var map_TCPSocketAction = map[string]string{ + "": "TCPSocketAction describes an action based on opening a socket", + "port": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", +} + +func (TCPSocketAction) SwaggerDoc() map[string]string { + return map_TCPSocketAction +} + +var map_Taint = map[string]string{ + "": "The node this Taint is attached to has the effect \"effect\" on any pod that that does not tolerate the Taint.", + "key": "Required. The taint key to be applied to a node.", + "value": "Required. The taint value corresponding to the taint key.", + "effect": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule and PreferNoSchedule.", +} + +func (Taint) SwaggerDoc() map[string]string { + return map_Taint +} + +var map_Toleration = map[string]string{ + "": "The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.", + "key": "Required. Key is the taint key that the toleration applies to.", + "operator": "operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "value": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "effect": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule and PreferNoSchedule.", +} + +func (Toleration) SwaggerDoc() map[string]string { + return map_Toleration +} + +var map_Volume = map[string]string{ + "": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", + "name": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", +} + +func (Volume) SwaggerDoc() map[string]string { + return map_Volume +} + +var map_VolumeMount = map[string]string{ + "": "VolumeMount describes a mounting of a Volume within a container.", + "name": "This must match the Name of a Volume.", + "readOnly": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", + "mountPath": "Path within the container at which the volume should be mounted. Must not contain ':'.", + "subPath": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", +} + +func (VolumeMount) SwaggerDoc() map[string]string { + return map_VolumeMount +} + +var map_VolumeSource = map[string]string{ + "": "Represents the source of a volume to mount. Only one of its members may be specified.", + "hostPath": "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath", + "emptyDir": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir", + "gcePersistentDisk": "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk", + "awsElasticBlockStore": "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore", + "gitRepo": "GitRepo represents a git repository at a particular revision.", + "secret": "Secret represents a secret that should populate this volume. More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets", + "nfs": "NFS represents an NFS mount on the host that shares a pod's lifetime More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs", + "iscsi": "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: http://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md", + "glusterfs": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", + "persistentVolumeClaim": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims", + "rbd": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: http://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", + "flexVolume": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", + "cinder": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", + "cephfs": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", + "flocker": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", + "downwardAPI": "DownwardAPI represents downward API about the pod that should populate this volume", + "fc": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", + "azureFile": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", + "configMap": "ConfigMap represents a configMap that should populate this volume", + "vsphereVolume": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", + "quobyte": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", + "azureDisk": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", +} + +func (VolumeSource) SwaggerDoc() map[string]string { + return map_VolumeSource +} + +var map_VsphereVirtualDiskVolumeSource = map[string]string{ + "": "Represents a vSphere volume resource.", + "volumePath": "Path that identifies vSphere volume vmdk", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", +} + +func (VsphereVirtualDiskVolumeSource) SwaggerDoc() map[string]string { + return map_VsphereVirtualDiskVolumeSource +} + +var map_WeightedPodAffinityTerm = map[string]string{ + "": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "weight": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "podAffinityTerm": "Required. A pod affinity term, associated with the corresponding weight.", +} + +func (WeightedPodAffinityTerm) SwaggerDoc() map[string]string { + return map_WeightedPodAffinityTerm +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.conversion.go new file mode 100644 index 0000000000..7936a94214 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.conversion.go @@ -0,0 +1,7138 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + resource "k8s.io/client-go/1.5/pkg/api/resource" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + types "k8s.io/client-go/1.5/pkg/types" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource, + Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource, + Convert_v1_Affinity_To_api_Affinity, + Convert_api_Affinity_To_v1_Affinity, + Convert_v1_AttachedVolume_To_api_AttachedVolume, + Convert_api_AttachedVolume_To_v1_AttachedVolume, + Convert_v1_AvoidPods_To_api_AvoidPods, + Convert_api_AvoidPods_To_v1_AvoidPods, + Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource, + Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource, + Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource, + Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource, + Convert_v1_Binding_To_api_Binding, + Convert_api_Binding_To_v1_Binding, + Convert_v1_Capabilities_To_api_Capabilities, + Convert_api_Capabilities_To_v1_Capabilities, + Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource, + Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource, + Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource, + Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource, + Convert_v1_ComponentCondition_To_api_ComponentCondition, + Convert_api_ComponentCondition_To_v1_ComponentCondition, + Convert_v1_ComponentStatus_To_api_ComponentStatus, + Convert_api_ComponentStatus_To_v1_ComponentStatus, + Convert_v1_ComponentStatusList_To_api_ComponentStatusList, + Convert_api_ComponentStatusList_To_v1_ComponentStatusList, + Convert_v1_ConfigMap_To_api_ConfigMap, + Convert_api_ConfigMap_To_v1_ConfigMap, + Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector, + Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector, + Convert_v1_ConfigMapList_To_api_ConfigMapList, + Convert_api_ConfigMapList_To_v1_ConfigMapList, + Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource, + Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource, + Convert_v1_Container_To_api_Container, + Convert_api_Container_To_v1_Container, + Convert_v1_ContainerImage_To_api_ContainerImage, + Convert_api_ContainerImage_To_v1_ContainerImage, + Convert_v1_ContainerPort_To_api_ContainerPort, + Convert_api_ContainerPort_To_v1_ContainerPort, + Convert_v1_ContainerState_To_api_ContainerState, + Convert_api_ContainerState_To_v1_ContainerState, + Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning, + Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning, + Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated, + Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated, + Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting, + Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting, + Convert_v1_ContainerStatus_To_api_ContainerStatus, + Convert_api_ContainerStatus_To_v1_ContainerStatus, + Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint, + Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint, + Convert_v1_DeleteOptions_To_api_DeleteOptions, + Convert_api_DeleteOptions_To_v1_DeleteOptions, + Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile, + Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile, + Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource, + Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource, + Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource, + Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource, + Convert_v1_EndpointAddress_To_api_EndpointAddress, + Convert_api_EndpointAddress_To_v1_EndpointAddress, + Convert_v1_EndpointPort_To_api_EndpointPort, + Convert_api_EndpointPort_To_v1_EndpointPort, + Convert_v1_EndpointSubset_To_api_EndpointSubset, + Convert_api_EndpointSubset_To_v1_EndpointSubset, + Convert_v1_Endpoints_To_api_Endpoints, + Convert_api_Endpoints_To_v1_Endpoints, + Convert_v1_EndpointsList_To_api_EndpointsList, + Convert_api_EndpointsList_To_v1_EndpointsList, + Convert_v1_EnvVar_To_api_EnvVar, + Convert_api_EnvVar_To_v1_EnvVar, + Convert_v1_EnvVarSource_To_api_EnvVarSource, + Convert_api_EnvVarSource_To_v1_EnvVarSource, + Convert_v1_Event_To_api_Event, + Convert_api_Event_To_v1_Event, + Convert_v1_EventList_To_api_EventList, + Convert_api_EventList_To_v1_EventList, + Convert_v1_EventSource_To_api_EventSource, + Convert_api_EventSource_To_v1_EventSource, + Convert_v1_ExecAction_To_api_ExecAction, + Convert_api_ExecAction_To_v1_ExecAction, + Convert_v1_ExportOptions_To_api_ExportOptions, + Convert_api_ExportOptions_To_v1_ExportOptions, + Convert_v1_FCVolumeSource_To_api_FCVolumeSource, + Convert_api_FCVolumeSource_To_v1_FCVolumeSource, + Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource, + Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource, + Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource, + Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource, + Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource, + Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource, + Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource, + Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource, + Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource, + Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource, + Convert_v1_HTTPGetAction_To_api_HTTPGetAction, + Convert_api_HTTPGetAction_To_v1_HTTPGetAction, + Convert_v1_HTTPHeader_To_api_HTTPHeader, + Convert_api_HTTPHeader_To_v1_HTTPHeader, + Convert_v1_Handler_To_api_Handler, + Convert_api_Handler_To_v1_Handler, + Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource, + Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource, + Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource, + Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource, + Convert_v1_KeyToPath_To_api_KeyToPath, + Convert_api_KeyToPath_To_v1_KeyToPath, + Convert_v1_Lifecycle_To_api_Lifecycle, + Convert_api_Lifecycle_To_v1_Lifecycle, + Convert_v1_LimitRange_To_api_LimitRange, + Convert_api_LimitRange_To_v1_LimitRange, + Convert_v1_LimitRangeItem_To_api_LimitRangeItem, + Convert_api_LimitRangeItem_To_v1_LimitRangeItem, + Convert_v1_LimitRangeList_To_api_LimitRangeList, + Convert_api_LimitRangeList_To_v1_LimitRangeList, + Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec, + Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec, + Convert_v1_List_To_api_List, + Convert_api_List_To_v1_List, + Convert_v1_ListOptions_To_api_ListOptions, + Convert_api_ListOptions_To_v1_ListOptions, + Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress, + Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress, + Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus, + Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus, + Convert_v1_LocalObjectReference_To_api_LocalObjectReference, + Convert_api_LocalObjectReference_To_v1_LocalObjectReference, + Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource, + Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource, + Convert_v1_Namespace_To_api_Namespace, + Convert_api_Namespace_To_v1_Namespace, + Convert_v1_NamespaceList_To_api_NamespaceList, + Convert_api_NamespaceList_To_v1_NamespaceList, + Convert_v1_NamespaceSpec_To_api_NamespaceSpec, + Convert_api_NamespaceSpec_To_v1_NamespaceSpec, + Convert_v1_NamespaceStatus_To_api_NamespaceStatus, + Convert_api_NamespaceStatus_To_v1_NamespaceStatus, + Convert_v1_Node_To_api_Node, + Convert_api_Node_To_v1_Node, + Convert_v1_NodeAddress_To_api_NodeAddress, + Convert_api_NodeAddress_To_v1_NodeAddress, + Convert_v1_NodeAffinity_To_api_NodeAffinity, + Convert_api_NodeAffinity_To_v1_NodeAffinity, + Convert_v1_NodeCondition_To_api_NodeCondition, + Convert_api_NodeCondition_To_v1_NodeCondition, + Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints, + Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints, + Convert_v1_NodeList_To_api_NodeList, + Convert_api_NodeList_To_v1_NodeList, + Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions, + Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions, + Convert_v1_NodeSelector_To_api_NodeSelector, + Convert_api_NodeSelector_To_v1_NodeSelector, + Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement, + Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement, + Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm, + Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm, + Convert_v1_NodeSpec_To_api_NodeSpec, + Convert_api_NodeSpec_To_v1_NodeSpec, + Convert_v1_NodeStatus_To_api_NodeStatus, + Convert_api_NodeStatus_To_v1_NodeStatus, + Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo, + Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo, + Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector, + Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector, + Convert_v1_ObjectMeta_To_api_ObjectMeta, + Convert_api_ObjectMeta_To_v1_ObjectMeta, + Convert_v1_ObjectReference_To_api_ObjectReference, + Convert_api_ObjectReference_To_v1_ObjectReference, + Convert_v1_OwnerReference_To_api_OwnerReference, + Convert_api_OwnerReference_To_v1_OwnerReference, + Convert_v1_PersistentVolume_To_api_PersistentVolume, + Convert_api_PersistentVolume_To_v1_PersistentVolume, + Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim, + Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim, + Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList, + Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList, + Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec, + Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec, + Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus, + Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus, + Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource, + Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource, + Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList, + Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList, + Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource, + Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource, + Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec, + Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec, + Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus, + Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus, + Convert_v1_Pod_To_api_Pod, + Convert_api_Pod_To_v1_Pod, + Convert_v1_PodAffinity_To_api_PodAffinity, + Convert_api_PodAffinity_To_v1_PodAffinity, + Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm, + Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm, + Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity, + Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity, + Convert_v1_PodAttachOptions_To_api_PodAttachOptions, + Convert_api_PodAttachOptions_To_v1_PodAttachOptions, + Convert_v1_PodCondition_To_api_PodCondition, + Convert_api_PodCondition_To_v1_PodCondition, + Convert_v1_PodExecOptions_To_api_PodExecOptions, + Convert_api_PodExecOptions_To_v1_PodExecOptions, + Convert_v1_PodList_To_api_PodList, + Convert_api_PodList_To_v1_PodList, + Convert_v1_PodLogOptions_To_api_PodLogOptions, + Convert_api_PodLogOptions_To_v1_PodLogOptions, + Convert_v1_PodProxyOptions_To_api_PodProxyOptions, + Convert_api_PodProxyOptions_To_v1_PodProxyOptions, + Convert_v1_PodSecurityContext_To_api_PodSecurityContext, + Convert_api_PodSecurityContext_To_v1_PodSecurityContext, + Convert_v1_PodSignature_To_api_PodSignature, + Convert_api_PodSignature_To_v1_PodSignature, + Convert_v1_PodSpec_To_api_PodSpec, + Convert_api_PodSpec_To_v1_PodSpec, + Convert_v1_PodStatus_To_api_PodStatus, + Convert_api_PodStatus_To_v1_PodStatus, + Convert_v1_PodStatusResult_To_api_PodStatusResult, + Convert_api_PodStatusResult_To_v1_PodStatusResult, + Convert_v1_PodTemplate_To_api_PodTemplate, + Convert_api_PodTemplate_To_v1_PodTemplate, + Convert_v1_PodTemplateList_To_api_PodTemplateList, + Convert_api_PodTemplateList_To_v1_PodTemplateList, + Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec, + Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec, + Convert_v1_Preconditions_To_api_Preconditions, + Convert_api_Preconditions_To_v1_Preconditions, + Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry, + Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry, + Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm, + Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm, + Convert_v1_Probe_To_api_Probe, + Convert_api_Probe_To_v1_Probe, + Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource, + Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource, + Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource, + Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource, + Convert_v1_RangeAllocation_To_api_RangeAllocation, + Convert_api_RangeAllocation_To_v1_RangeAllocation, + Convert_v1_ReplicationController_To_api_ReplicationController, + Convert_api_ReplicationController_To_v1_ReplicationController, + Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList, + Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList, + Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec, + Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec, + Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus, + Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus, + Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector, + Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector, + Convert_v1_ResourceQuota_To_api_ResourceQuota, + Convert_api_ResourceQuota_To_v1_ResourceQuota, + Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList, + Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList, + Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec, + Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec, + Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus, + Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus, + Convert_v1_ResourceRequirements_To_api_ResourceRequirements, + Convert_api_ResourceRequirements_To_v1_ResourceRequirements, + Convert_v1_SELinuxOptions_To_api_SELinuxOptions, + Convert_api_SELinuxOptions_To_v1_SELinuxOptions, + Convert_v1_Secret_To_api_Secret, + Convert_api_Secret_To_v1_Secret, + Convert_v1_SecretKeySelector_To_api_SecretKeySelector, + Convert_api_SecretKeySelector_To_v1_SecretKeySelector, + Convert_v1_SecretList_To_api_SecretList, + Convert_api_SecretList_To_v1_SecretList, + Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource, + Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource, + Convert_v1_SecurityContext_To_api_SecurityContext, + Convert_api_SecurityContext_To_v1_SecurityContext, + Convert_v1_SerializedReference_To_api_SerializedReference, + Convert_api_SerializedReference_To_v1_SerializedReference, + Convert_v1_Service_To_api_Service, + Convert_api_Service_To_v1_Service, + Convert_v1_ServiceAccount_To_api_ServiceAccount, + Convert_api_ServiceAccount_To_v1_ServiceAccount, + Convert_v1_ServiceAccountList_To_api_ServiceAccountList, + Convert_api_ServiceAccountList_To_v1_ServiceAccountList, + Convert_v1_ServiceList_To_api_ServiceList, + Convert_api_ServiceList_To_v1_ServiceList, + Convert_v1_ServicePort_To_api_ServicePort, + Convert_api_ServicePort_To_v1_ServicePort, + Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions, + Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions, + Convert_v1_ServiceSpec_To_api_ServiceSpec, + Convert_api_ServiceSpec_To_v1_ServiceSpec, + Convert_v1_ServiceStatus_To_api_ServiceStatus, + Convert_api_ServiceStatus_To_v1_ServiceStatus, + Convert_v1_TCPSocketAction_To_api_TCPSocketAction, + Convert_api_TCPSocketAction_To_v1_TCPSocketAction, + Convert_v1_Taint_To_api_Taint, + Convert_api_Taint_To_v1_Taint, + Convert_v1_Toleration_To_api_Toleration, + Convert_api_Toleration_To_v1_Toleration, + Convert_v1_Volume_To_api_Volume, + Convert_api_Volume_To_v1_Volume, + Convert_v1_VolumeMount_To_api_VolumeMount, + Convert_api_VolumeMount_To_v1_VolumeMount, + Convert_v1_VolumeSource_To_api_VolumeSource, + Convert_api_VolumeSource_To_v1_VolumeSource, + Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource, + Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource, + Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm, + Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm, + ) +} + +func autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in *AWSElasticBlockStoreVolumeSource, out *api.AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(in, out, s) +} + +func autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in *api.AWSElasticBlockStoreVolumeSource, out *AWSElasticBlockStoreVolumeSource, s conversion.Scope) error { + return autoConvert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(in, out, s) +} + +func autoConvert_v1_Affinity_To_api_Affinity(in *Affinity, out *api.Affinity, s conversion.Scope) error { + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(api.NodeAffinity) + if err := Convert_v1_NodeAffinity_To_api_NodeAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.NodeAffinity = nil + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(api.PodAffinity) + if err := Convert_v1_PodAffinity_To_api_PodAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.PodAffinity = nil + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(api.PodAntiAffinity) + if err := Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.PodAntiAffinity = nil + } + return nil +} + +func Convert_v1_Affinity_To_api_Affinity(in *Affinity, out *api.Affinity, s conversion.Scope) error { + return autoConvert_v1_Affinity_To_api_Affinity(in, out, s) +} + +func autoConvert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *Affinity, s conversion.Scope) error { + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(NodeAffinity) + if err := Convert_api_NodeAffinity_To_v1_NodeAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.NodeAffinity = nil + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(PodAffinity) + if err := Convert_api_PodAffinity_To_v1_PodAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.PodAffinity = nil + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(PodAntiAffinity) + if err := Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity(*in, *out, s); err != nil { + return err + } + } else { + out.PodAntiAffinity = nil + } + return nil +} + +func Convert_api_Affinity_To_v1_Affinity(in *api.Affinity, out *Affinity, s conversion.Scope) error { + return autoConvert_api_Affinity_To_v1_Affinity(in, out, s) +} + +func autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in *AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error { + out.Name = api.UniqueVolumeName(in.Name) + out.DevicePath = in.DevicePath + return nil +} + +func Convert_v1_AttachedVolume_To_api_AttachedVolume(in *AttachedVolume, out *api.AttachedVolume, s conversion.Scope) error { + return autoConvert_v1_AttachedVolume_To_api_AttachedVolume(in, out, s) +} + +func autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *AttachedVolume, s conversion.Scope) error { + out.Name = UniqueVolumeName(in.Name) + out.DevicePath = in.DevicePath + return nil +} + +func Convert_api_AttachedVolume_To_v1_AttachedVolume(in *api.AttachedVolume, out *AttachedVolume, s conversion.Scope) error { + return autoConvert_api_AttachedVolume_To_v1_AttachedVolume(in, out, s) +} + +func autoConvert_v1_AvoidPods_To_api_AvoidPods(in *AvoidPods, out *api.AvoidPods, s conversion.Scope) error { + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]api.PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferAvoidPods = nil + } + return nil +} + +func Convert_v1_AvoidPods_To_api_AvoidPods(in *AvoidPods, out *api.AvoidPods, s conversion.Scope) error { + return autoConvert_v1_AvoidPods_To_api_AvoidPods(in, out, s) +} + +func autoConvert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *AvoidPods, s conversion.Scope) error { + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferAvoidPods = nil + } + return nil +} + +func Convert_api_AvoidPods_To_v1_AvoidPods(in *api.AvoidPods, out *AvoidPods, s conversion.Scope) error { + return autoConvert_api_AvoidPods_To_v1_AvoidPods(in, out, s) +} + +func autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error { + SetDefaults_AzureDiskVolumeSource(in) + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(api.AzureDataDiskCachingMode) + **out = api.AzureDataDiskCachingMode(**in) + } else { + out.CachingMode = nil + } + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in *AzureDiskVolumeSource, out *api.AzureDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(in, out, s) +} + +func autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *AzureDiskVolumeSource, s conversion.Scope) error { + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(AzureDataDiskCachingMode) + **out = AzureDataDiskCachingMode(**in) + } else { + out.CachingMode = nil + } + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in *api.AzureDiskVolumeSource, out *AzureDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in *AzureFileVolumeSource, out *api.AzureFileVolumeSource, s conversion.Scope) error { + return autoConvert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(in, out, s) +} + +func autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *AzureFileVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in *api.AzureFileVolumeSource, out *AzureFileVolumeSource, s conversion.Scope) error { + return autoConvert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(in, out, s) +} + +func autoConvert_v1_Binding_To_api_Binding(in *Binding, out *api.Binding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Binding_To_api_Binding(in *Binding, out *api.Binding, s conversion.Scope) error { + return autoConvert_v1_Binding_To_api_Binding(in, out, s) +} + +func autoConvert_api_Binding_To_v1_Binding(in *api.Binding, out *Binding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Target, &out.Target, s); err != nil { + return err + } + return nil +} + +func Convert_api_Binding_To_v1_Binding(in *api.Binding, out *Binding, s conversion.Scope) error { + return autoConvert_api_Binding_To_v1_Binding(in, out, s) +} + +func autoConvert_v1_Capabilities_To_api_Capabilities(in *Capabilities, out *api.Capabilities, s conversion.Scope) error { + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = api.Capability((*in)[i]) + } + } else { + out.Add = nil + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = api.Capability((*in)[i]) + } + } else { + out.Drop = nil + } + return nil +} + +func Convert_v1_Capabilities_To_api_Capabilities(in *Capabilities, out *api.Capabilities, s conversion.Scope) error { + return autoConvert_v1_Capabilities_To_api_Capabilities(in, out, s) +} + +func autoConvert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *Capabilities, s conversion.Scope) error { + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = Capability((*in)[i]) + } + } else { + out.Add = nil + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = Capability((*in)[i]) + } + } else { + out.Drop = nil + } + return nil +} + +func Convert_api_Capabilities_To_v1_Capabilities(in *api.Capabilities, out *Capabilities, s conversion.Scope) error { + return autoConvert_api_Capabilities_To_v1_Capabilities(in, out, s) +} + +func autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error { + out.Monitors = in.Monitors + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(api.LocalObjectReference) + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in *CephFSVolumeSource, out *api.CephFSVolumeSource, s conversion.Scope) error { + return autoConvert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(in, out, s) +} + +func autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error { + out.Monitors = in.Monitors + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in *api.CephFSVolumeSource, out *CephFSVolumeSource, s conversion.Scope) error { + return autoConvert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(in, out, s) +} + +func autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in *CinderVolumeSource, out *api.CinderVolumeSource, s conversion.Scope) error { + return autoConvert_v1_CinderVolumeSource_To_api_CinderVolumeSource(in, out, s) +} + +func autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *CinderVolumeSource, s conversion.Scope) error { + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in *api.CinderVolumeSource, out *CinderVolumeSource, s conversion.Scope) error { + return autoConvert_api_CinderVolumeSource_To_v1_CinderVolumeSource(in, out, s) +} + +func autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in *ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error { + out.Type = api.ComponentConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + out.Message = in.Message + out.Error = in.Error + return nil +} + +func Convert_v1_ComponentCondition_To_api_ComponentCondition(in *ComponentCondition, out *api.ComponentCondition, s conversion.Scope) error { + return autoConvert_v1_ComponentCondition_To_api_ComponentCondition(in, out, s) +} + +func autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *ComponentCondition, s conversion.Scope) error { + out.Type = ComponentConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + out.Message = in.Message + out.Error = in.Error + return nil +} + +func Convert_api_ComponentCondition_To_v1_ComponentCondition(in *api.ComponentCondition, out *ComponentCondition, s conversion.Scope) error { + return autoConvert_api_ComponentCondition_To_v1_ComponentCondition(in, out, s) +} + +func autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in *ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]api.ComponentCondition, len(*in)) + for i := range *in { + if err := Convert_v1_ComponentCondition_To_api_ComponentCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + return nil +} + +func Convert_v1_ComponentStatus_To_api_ComponentStatus(in *ComponentStatus, out *api.ComponentStatus, s conversion.Scope) error { + return autoConvert_v1_ComponentStatus_To_api_ComponentStatus(in, out, s) +} + +func autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *ComponentStatus, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + for i := range *in { + if err := Convert_api_ComponentCondition_To_v1_ComponentCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + return nil +} + +func Convert_api_ComponentStatus_To_v1_ComponentStatus(in *api.ComponentStatus, out *ComponentStatus, s conversion.Scope) error { + return autoConvert_api_ComponentStatus_To_v1_ComponentStatus(in, out, s) +} + +func autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in *ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ComponentStatus, len(*in)) + for i := range *in { + if err := Convert_v1_ComponentStatus_To_api_ComponentStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ComponentStatusList_To_api_ComponentStatusList(in *ComponentStatusList, out *api.ComponentStatusList, s conversion.Scope) error { + return autoConvert_v1_ComponentStatusList_To_api_ComponentStatusList(in, out, s) +} + +func autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *ComponentStatusList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ComponentStatus, len(*in)) + for i := range *in { + if err := Convert_api_ComponentStatus_To_v1_ComponentStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ComponentStatusList_To_v1_ComponentStatusList(in *api.ComponentStatusList, out *ComponentStatusList, s conversion.Scope) error { + return autoConvert_api_ComponentStatusList_To_v1_ComponentStatusList(in, out, s) +} + +func autoConvert_v1_ConfigMap_To_api_ConfigMap(in *ConfigMap, out *api.ConfigMap, s conversion.Scope) error { + SetDefaults_ConfigMap(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Data = in.Data + return nil +} + +func Convert_v1_ConfigMap_To_api_ConfigMap(in *ConfigMap, out *api.ConfigMap, s conversion.Scope) error { + return autoConvert_v1_ConfigMap_To_api_ConfigMap(in, out, s) +} + +func autoConvert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *ConfigMap, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Data = in.Data + return nil +} + +func Convert_api_ConfigMap_To_v1_ConfigMap(in *api.ConfigMap, out *ConfigMap, s conversion.Scope) error { + return autoConvert_api_ConfigMap_To_v1_ConfigMap(in, out, s) +} + +func autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +func Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in *ConfigMapKeySelector, out *api.ConfigMapKeySelector, s conversion.Scope) error { + return autoConvert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(in, out, s) +} + +func autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *ConfigMapKeySelector, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +func Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in *api.ConfigMapKeySelector, out *ConfigMapKeySelector, s conversion.Scope) error { + return autoConvert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(in, out, s) +} + +func autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in *ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ConfigMap, len(*in)) + for i := range *in { + if err := Convert_v1_ConfigMap_To_api_ConfigMap(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ConfigMapList_To_api_ConfigMapList(in *ConfigMapList, out *api.ConfigMapList, s conversion.Scope) error { + return autoConvert_v1_ConfigMapList_To_api_ConfigMapList(in, out, s) +} + +func autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *ConfigMapList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigMap, len(*in)) + for i := range *in { + if err := Convert_api_ConfigMap_To_v1_ConfigMap(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ConfigMapList_To_v1_ConfigMapList(in *api.ConfigMapList, out *ConfigMapList, s conversion.Scope) error { + return autoConvert_api_ConfigMapList_To_v1_ConfigMapList(in, out, s) +} + +func autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error { + SetDefaults_ConfigMapVolumeSource(in) + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.KeyToPath, len(*in)) + for i := range *in { + if err := Convert_v1_KeyToPath_To_api_KeyToPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in *ConfigMapVolumeSource, out *api.ConfigMapVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(in, out, s) +} + +func autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *ConfigMapVolumeSource, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := Convert_api_KeyToPath_To_v1_KeyToPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in *api.ConfigMapVolumeSource, out *ConfigMapVolumeSource, s conversion.Scope) error { + return autoConvert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(in, out, s) +} + +func autoConvert_v1_Container_To_api_Container(in *Container, out *api.Container, s conversion.Scope) error { + SetDefaults_Container(in) + out.Name = in.Name + out.Image = in.Image + out.Command = in.Command + out.Args = in.Args + out.WorkingDir = in.WorkingDir + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]api.ContainerPort, len(*in)) + for i := range *in { + if err := Convert_v1_ContainerPort_To_api_ContainerPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]api.EnvVar, len(*in)) + for i := range *in { + if err := Convert_v1_EnvVar_To_api_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } + if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]api.VolumeMount, len(*in)) + for i := range *in { + if err := Convert_v1_VolumeMount_To_api_VolumeMount(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.VolumeMounts = nil + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(api.Probe) + if err := Convert_v1_Probe_To_api_Probe(*in, *out, s); err != nil { + return err + } + } else { + out.LivenessProbe = nil + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(api.Probe) + if err := Convert_v1_Probe_To_api_Probe(*in, *out, s); err != nil { + return err + } + } else { + out.ReadinessProbe = nil + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(api.Lifecycle) + if err := Convert_v1_Lifecycle_To_api_Lifecycle(*in, *out, s); err != nil { + return err + } + } else { + out.Lifecycle = nil + } + out.TerminationMessagePath = in.TerminationMessagePath + out.ImagePullPolicy = api.PullPolicy(in.ImagePullPolicy) + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(api.SecurityContext) + if err := Convert_v1_SecurityContext_To_api_SecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil +} + +func Convert_v1_Container_To_api_Container(in *Container, out *api.Container, s conversion.Scope) error { + return autoConvert_v1_Container_To_api_Container(in, out, s) +} + +func autoConvert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error { + out.Name = in.Name + out.Image = in.Image + out.Command = in.Command + out.Args = in.Args + out.WorkingDir = in.WorkingDir + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + for i := range *in { + if err := Convert_api_ContainerPort_To_v1_ContainerPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := Convert_api_EnvVar_To_v1_EnvVar(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Env = nil + } + if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + for i := range *in { + if err := Convert_api_VolumeMount_To_v1_VolumeMount(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.VolumeMounts = nil + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(Probe) + if err := Convert_api_Probe_To_v1_Probe(*in, *out, s); err != nil { + return err + } + } else { + out.LivenessProbe = nil + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(Probe) + if err := Convert_api_Probe_To_v1_Probe(*in, *out, s); err != nil { + return err + } + } else { + out.ReadinessProbe = nil + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(Lifecycle) + if err := Convert_api_Lifecycle_To_v1_Lifecycle(*in, *out, s); err != nil { + return err + } + } else { + out.Lifecycle = nil + } + out.TerminationMessagePath = in.TerminationMessagePath + out.ImagePullPolicy = PullPolicy(in.ImagePullPolicy) + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(SecurityContext) + if err := Convert_api_SecurityContext_To_v1_SecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil +} + +func Convert_api_Container_To_v1_Container(in *api.Container, out *Container, s conversion.Scope) error { + return autoConvert_api_Container_To_v1_Container(in, out, s) +} + +func autoConvert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error { + out.Names = in.Names + out.SizeBytes = in.SizeBytes + return nil +} + +func Convert_v1_ContainerImage_To_api_ContainerImage(in *ContainerImage, out *api.ContainerImage, s conversion.Scope) error { + return autoConvert_v1_ContainerImage_To_api_ContainerImage(in, out, s) +} + +func autoConvert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error { + out.Names = in.Names + out.SizeBytes = in.SizeBytes + return nil +} + +func Convert_api_ContainerImage_To_v1_ContainerImage(in *api.ContainerImage, out *ContainerImage, s conversion.Scope) error { + return autoConvert_api_ContainerImage_To_v1_ContainerImage(in, out, s) +} + +func autoConvert_v1_ContainerPort_To_api_ContainerPort(in *ContainerPort, out *api.ContainerPort, s conversion.Scope) error { + SetDefaults_ContainerPort(in) + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = api.Protocol(in.Protocol) + out.HostIP = in.HostIP + return nil +} + +func Convert_v1_ContainerPort_To_api_ContainerPort(in *ContainerPort, out *api.ContainerPort, s conversion.Scope) error { + return autoConvert_v1_ContainerPort_To_api_ContainerPort(in, out, s) +} + +func autoConvert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *ContainerPort, s conversion.Scope) error { + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = Protocol(in.Protocol) + out.HostIP = in.HostIP + return nil +} + +func Convert_api_ContainerPort_To_v1_ContainerPort(in *api.ContainerPort, out *ContainerPort, s conversion.Scope) error { + return autoConvert_api_ContainerPort_To_v1_ContainerPort(in, out, s) +} + +func autoConvert_v1_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error { + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(api.ContainerStateWaiting) + if err := Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(*in, *out, s); err != nil { + return err + } + } else { + out.Waiting = nil + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(api.ContainerStateRunning) + if err := Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning(*in, *out, s); err != nil { + return err + } + } else { + out.Running = nil + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(api.ContainerStateTerminated) + if err := Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(*in, *out, s); err != nil { + return err + } + } else { + out.Terminated = nil + } + return nil +} + +func Convert_v1_ContainerState_To_api_ContainerState(in *ContainerState, out *api.ContainerState, s conversion.Scope) error { + return autoConvert_v1_ContainerState_To_api_ContainerState(in, out, s) +} + +func autoConvert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error { + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(ContainerStateWaiting) + if err := Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(*in, *out, s); err != nil { + return err + } + } else { + out.Waiting = nil + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(ContainerStateRunning) + if err := Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning(*in, *out, s); err != nil { + return err + } + } else { + out.Running = nil + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(ContainerStateTerminated) + if err := Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(*in, *out, s); err != nil { + return err + } + } else { + out.Terminated = nil + } + return nil +} + +func Convert_api_ContainerState_To_v1_ContainerState(in *api.ContainerState, out *ContainerState, s conversion.Scope) error { + return autoConvert_api_ContainerState_To_v1_ContainerState(in, out, s) +} + +func autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error { + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.StartedAt, &out.StartedAt, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in *ContainerStateRunning, out *api.ContainerStateRunning, s conversion.Scope) error { + return autoConvert_v1_ContainerStateRunning_To_api_ContainerStateRunning(in, out, s) +} + +func autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error { + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.StartedAt, &out.StartedAt, s); err != nil { + return err + } + return nil +} + +func Convert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in *api.ContainerStateRunning, out *ContainerStateRunning, s conversion.Scope) error { + return autoConvert_api_ContainerStateRunning_To_v1_ContainerStateRunning(in, out, s) +} + +func autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error { + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.StartedAt, &out.StartedAt, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.FinishedAt, &out.FinishedAt, s); err != nil { + return err + } + out.ContainerID = in.ContainerID + return nil +} + +func Convert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in *ContainerStateTerminated, out *api.ContainerStateTerminated, s conversion.Scope) error { + return autoConvert_v1_ContainerStateTerminated_To_api_ContainerStateTerminated(in, out, s) +} + +func autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error { + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.StartedAt, &out.StartedAt, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.FinishedAt, &out.FinishedAt, s); err != nil { + return err + } + out.ContainerID = in.ContainerID + return nil +} + +func Convert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in *api.ContainerStateTerminated, out *ContainerStateTerminated, s conversion.Scope) error { + return autoConvert_api_ContainerStateTerminated_To_v1_ContainerStateTerminated(in, out, s) +} + +func autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error { + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in *ContainerStateWaiting, out *api.ContainerStateWaiting, s conversion.Scope) error { + return autoConvert_v1_ContainerStateWaiting_To_api_ContainerStateWaiting(in, out, s) +} + +func autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error { + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in *api.ContainerStateWaiting, out *ContainerStateWaiting, s conversion.Scope) error { + return autoConvert_api_ContainerStateWaiting_To_v1_ContainerStateWaiting(in, out, s) +} + +func autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in *ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_v1_ContainerState_To_api_ContainerState(&in.State, &out.State, s); err != nil { + return err + } + if err := Convert_v1_ContainerState_To_api_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil +} + +func Convert_v1_ContainerStatus_To_api_ContainerStatus(in *ContainerStatus, out *api.ContainerStatus, s conversion.Scope) error { + return autoConvert_v1_ContainerStatus_To_api_ContainerStatus(in, out, s) +} + +func autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *ContainerStatus, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_api_ContainerState_To_v1_ContainerState(&in.State, &out.State, s); err != nil { + return err + } + if err := Convert_api_ContainerState_To_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, s); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil +} + +func Convert_api_ContainerStatus_To_v1_ContainerStatus(in *api.ContainerStatus, out *ContainerStatus, s conversion.Scope) error { + return autoConvert_api_ContainerStatus_To_v1_ContainerStatus(in, out, s) +} + +func autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error { + out.Port = in.Port + return nil +} + +func Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in *DaemonEndpoint, out *api.DaemonEndpoint, s conversion.Scope) error { + return autoConvert_v1_DaemonEndpoint_To_api_DaemonEndpoint(in, out, s) +} + +func autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *DaemonEndpoint, s conversion.Scope) error { + out.Port = in.Port + return nil +} + +func Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in *api.DaemonEndpoint, out *DaemonEndpoint, s conversion.Scope) error { + return autoConvert_api_DaemonEndpoint_To_v1_DaemonEndpoint(in, out, s) +} + +func autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.GracePeriodSeconds = in.GracePeriodSeconds + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(api.Preconditions) + if err := Convert_v1_Preconditions_To_api_Preconditions(*in, *out, s); err != nil { + return err + } + } else { + out.Preconditions = nil + } + out.OrphanDependents = in.OrphanDependents + return nil +} + +func Convert_v1_DeleteOptions_To_api_DeleteOptions(in *DeleteOptions, out *api.DeleteOptions, s conversion.Scope) error { + return autoConvert_v1_DeleteOptions_To_api_DeleteOptions(in, out, s) +} + +func autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *DeleteOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.GracePeriodSeconds = in.GracePeriodSeconds + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(Preconditions) + if err := Convert_api_Preconditions_To_v1_Preconditions(*in, *out, s); err != nil { + return err + } + } else { + out.Preconditions = nil + } + out.OrphanDependents = in.OrphanDependents + return nil +} + +func Convert_api_DeleteOptions_To_v1_DeleteOptions(in *api.DeleteOptions, out *DeleteOptions, s conversion.Scope) error { + return autoConvert_api_DeleteOptions_To_v1_DeleteOptions(in, out, s) +} + +func autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error { + out.Path = in.Path + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(api.ObjectFieldSelector) + if err := Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(api.ResourceFieldSelector) + if err := Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + out.Mode = in.Mode + return nil +} + +func Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in *DownwardAPIVolumeFile, out *api.DownwardAPIVolumeFile, s conversion.Scope) error { + return autoConvert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(in, out, s) +} + +func autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *DownwardAPIVolumeFile, s conversion.Scope) error { + out.Path = in.Path + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + if err := Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + out.Mode = in.Mode + return nil +} + +func Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in *api.DownwardAPIVolumeFile, out *DownwardAPIVolumeFile, s conversion.Scope) error { + return autoConvert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(in, out, s) +} + +func autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error { + SetDefaults_DownwardAPIVolumeSource(in) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := Convert_v1_DownwardAPIVolumeFile_To_api_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in *DownwardAPIVolumeSource, out *api.DownwardAPIVolumeSource, s conversion.Scope) error { + return autoConvert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(in, out, s) +} + +func autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *DownwardAPIVolumeSource, s conversion.Scope) error { + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := Convert_api_DownwardAPIVolumeFile_To_v1_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in *api.DownwardAPIVolumeSource, out *DownwardAPIVolumeSource, s conversion.Scope) error { + return autoConvert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(in, out, s) +} + +func autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error { + out.Medium = api.StorageMedium(in.Medium) + return nil +} + +func Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in *EmptyDirVolumeSource, out *api.EmptyDirVolumeSource, s conversion.Scope) error { + return autoConvert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(in, out, s) +} + +func autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *EmptyDirVolumeSource, s conversion.Scope) error { + out.Medium = StorageMedium(in.Medium) + return nil +} + +func Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in *api.EmptyDirVolumeSource, out *EmptyDirVolumeSource, s conversion.Scope) error { + return autoConvert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(in, out, s) +} + +func autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in *EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + out.NodeName = in.NodeName + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(api.ObjectReference) + if err := Convert_v1_ObjectReference_To_api_ObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.TargetRef = nil + } + return nil +} + +func Convert_v1_EndpointAddress_To_api_EndpointAddress(in *EndpointAddress, out *api.EndpointAddress, s conversion.Scope) error { + return autoConvert_v1_EndpointAddress_To_api_EndpointAddress(in, out, s) +} + +func autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *EndpointAddress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + out.NodeName = in.NodeName + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(ObjectReference) + if err := Convert_api_ObjectReference_To_v1_ObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.TargetRef = nil + } + return nil +} + +func Convert_api_EndpointAddress_To_v1_EndpointAddress(in *api.EndpointAddress, out *EndpointAddress, s conversion.Scope) error { + return autoConvert_api_EndpointAddress_To_v1_EndpointAddress(in, out, s) +} + +func autoConvert_v1_EndpointPort_To_api_EndpointPort(in *EndpointPort, out *api.EndpointPort, s conversion.Scope) error { + out.Name = in.Name + out.Port = in.Port + out.Protocol = api.Protocol(in.Protocol) + return nil +} + +func Convert_v1_EndpointPort_To_api_EndpointPort(in *EndpointPort, out *api.EndpointPort, s conversion.Scope) error { + return autoConvert_v1_EndpointPort_To_api_EndpointPort(in, out, s) +} + +func autoConvert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *EndpointPort, s conversion.Scope) error { + out.Name = in.Name + out.Port = in.Port + out.Protocol = Protocol(in.Protocol) + return nil +} + +func Convert_api_EndpointPort_To_v1_EndpointPort(in *api.EndpointPort, out *EndpointPort, s conversion.Scope) error { + return autoConvert_api_EndpointPort_To_v1_EndpointPort(in, out, s) +} + +func autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in *EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error { + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]api.EndpointAddress, len(*in)) + for i := range *in { + if err := Convert_v1_EndpointAddress_To_api_EndpointAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]api.EndpointAddress, len(*in)) + for i := range *in { + if err := Convert_v1_EndpointAddress_To_api_EndpointAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.NotReadyAddresses = nil + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]api.EndpointPort, len(*in)) + for i := range *in { + if err := Convert_v1_EndpointPort_To_api_EndpointPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + return nil +} + +func Convert_v1_EndpointSubset_To_api_EndpointSubset(in *EndpointSubset, out *api.EndpointSubset, s conversion.Scope) error { + return autoConvert_v1_EndpointSubset_To_api_EndpointSubset(in, out, s) +} + +func autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *EndpointSubset, s conversion.Scope) error { + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := Convert_api_EndpointAddress_To_v1_EndpointAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := Convert_api_EndpointAddress_To_v1_EndpointAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.NotReadyAddresses = nil + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + for i := range *in { + if err := Convert_api_EndpointPort_To_v1_EndpointPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + return nil +} + +func Convert_api_EndpointSubset_To_v1_EndpointSubset(in *api.EndpointSubset, out *EndpointSubset, s conversion.Scope) error { + return autoConvert_api_EndpointSubset_To_v1_EndpointSubset(in, out, s) +} + +func autoConvert_v1_Endpoints_To_api_Endpoints(in *Endpoints, out *api.Endpoints, s conversion.Scope) error { + SetDefaults_Endpoints(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]api.EndpointSubset, len(*in)) + for i := range *in { + if err := Convert_v1_EndpointSubset_To_api_EndpointSubset(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subsets = nil + } + return nil +} + +func Convert_v1_Endpoints_To_api_Endpoints(in *Endpoints, out *api.Endpoints, s conversion.Scope) error { + return autoConvert_v1_Endpoints_To_api_Endpoints(in, out, s) +} + +func autoConvert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *Endpoints, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + if err := Convert_api_EndpointSubset_To_v1_EndpointSubset(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subsets = nil + } + return nil +} + +func Convert_api_Endpoints_To_v1_Endpoints(in *api.Endpoints, out *Endpoints, s conversion.Scope) error { + return autoConvert_api_Endpoints_To_v1_Endpoints(in, out, s) +} + +func autoConvert_v1_EndpointsList_To_api_EndpointsList(in *EndpointsList, out *api.EndpointsList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Endpoints, len(*in)) + for i := range *in { + if err := Convert_v1_Endpoints_To_api_Endpoints(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_EndpointsList_To_api_EndpointsList(in *EndpointsList, out *api.EndpointsList, s conversion.Scope) error { + return autoConvert_v1_EndpointsList_To_api_EndpointsList(in, out, s) +} + +func autoConvert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *EndpointsList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Endpoints, len(*in)) + for i := range *in { + if err := Convert_api_Endpoints_To_v1_Endpoints(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_EndpointsList_To_v1_EndpointsList(in *api.EndpointsList, out *EndpointsList, s conversion.Scope) error { + return autoConvert_api_EndpointsList_To_v1_EndpointsList(in, out, s) +} + +func autoConvert_v1_EnvVar_To_api_EnvVar(in *EnvVar, out *api.EnvVar, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(api.EnvVarSource) + if err := Convert_v1_EnvVarSource_To_api_EnvVarSource(*in, *out, s); err != nil { + return err + } + } else { + out.ValueFrom = nil + } + return nil +} + +func Convert_v1_EnvVar_To_api_EnvVar(in *EnvVar, out *api.EnvVar, s conversion.Scope) error { + return autoConvert_v1_EnvVar_To_api_EnvVar(in, out, s) +} + +func autoConvert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *EnvVar, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(EnvVarSource) + if err := Convert_api_EnvVarSource_To_v1_EnvVarSource(*in, *out, s); err != nil { + return err + } + } else { + out.ValueFrom = nil + } + return nil +} + +func Convert_api_EnvVar_To_v1_EnvVar(in *api.EnvVar, out *EnvVar, s conversion.Scope) error { + return autoConvert_api_EnvVar_To_v1_EnvVar(in, out, s) +} + +func autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in *EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error { + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(api.ObjectFieldSelector) + if err := Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(api.ResourceFieldSelector) + if err := Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(api.ConfigMapKeySelector) + if err := Convert_v1_ConfigMapKeySelector_To_api_ConfigMapKeySelector(*in, *out, s); err != nil { + return err + } + } else { + out.ConfigMapKeyRef = nil + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(api.SecretKeySelector) + if err := Convert_v1_SecretKeySelector_To_api_SecretKeySelector(*in, *out, s); err != nil { + return err + } + } else { + out.SecretKeyRef = nil + } + return nil +} + +func Convert_v1_EnvVarSource_To_api_EnvVarSource(in *EnvVarSource, out *api.EnvVarSource, s conversion.Scope) error { + return autoConvert_v1_EnvVarSource_To_api_EnvVarSource(in, out, s) +} + +func autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *EnvVarSource, s conversion.Scope) error { + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + if err := Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(ConfigMapKeySelector) + if err := Convert_api_ConfigMapKeySelector_To_v1_ConfigMapKeySelector(*in, *out, s); err != nil { + return err + } + } else { + out.ConfigMapKeyRef = nil + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(SecretKeySelector) + if err := Convert_api_SecretKeySelector_To_v1_SecretKeySelector(*in, *out, s); err != nil { + return err + } + } else { + out.SecretKeyRef = nil + } + return nil +} + +func Convert_api_EnvVarSource_To_v1_EnvVarSource(in *api.EnvVarSource, out *EnvVarSource, s conversion.Scope) error { + return autoConvert_api_EnvVarSource_To_v1_EnvVarSource(in, out, s) +} + +func autoConvert_v1_Event_To_api_Event(in *Event, out *api.Event, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + if err := Convert_v1_EventSource_To_api_EventSource(&in.Source, &out.Source, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.FirstTimestamp, &out.FirstTimestamp, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTimestamp, &out.LastTimestamp, s); err != nil { + return err + } + out.Count = in.Count + out.Type = in.Type + return nil +} + +func Convert_v1_Event_To_api_Event(in *Event, out *api.Event, s conversion.Scope) error { + return autoConvert_v1_Event_To_api_Event(in, out, s) +} + +func autoConvert_api_Event_To_v1_Event(in *api.Event, out *Event, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.InvolvedObject, &out.InvolvedObject, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + if err := Convert_api_EventSource_To_v1_EventSource(&in.Source, &out.Source, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.FirstTimestamp, &out.FirstTimestamp, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTimestamp, &out.LastTimestamp, s); err != nil { + return err + } + out.Count = in.Count + out.Type = in.Type + return nil +} + +func Convert_api_Event_To_v1_Event(in *api.Event, out *Event, s conversion.Scope) error { + return autoConvert_api_Event_To_v1_Event(in, out, s) +} + +func autoConvert_v1_EventList_To_api_EventList(in *EventList, out *api.EventList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Event, len(*in)) + for i := range *in { + if err := Convert_v1_Event_To_api_Event(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_EventList_To_api_EventList(in *EventList, out *api.EventList, s conversion.Scope) error { + return autoConvert_v1_EventList_To_api_EventList(in, out, s) +} + +func autoConvert_api_EventList_To_v1_EventList(in *api.EventList, out *EventList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Event, len(*in)) + for i := range *in { + if err := Convert_api_Event_To_v1_Event(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_EventList_To_v1_EventList(in *api.EventList, out *EventList, s conversion.Scope) error { + return autoConvert_api_EventList_To_v1_EventList(in, out, s) +} + +func autoConvert_v1_EventSource_To_api_EventSource(in *EventSource, out *api.EventSource, s conversion.Scope) error { + out.Component = in.Component + out.Host = in.Host + return nil +} + +func Convert_v1_EventSource_To_api_EventSource(in *EventSource, out *api.EventSource, s conversion.Scope) error { + return autoConvert_v1_EventSource_To_api_EventSource(in, out, s) +} + +func autoConvert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *EventSource, s conversion.Scope) error { + out.Component = in.Component + out.Host = in.Host + return nil +} + +func Convert_api_EventSource_To_v1_EventSource(in *api.EventSource, out *EventSource, s conversion.Scope) error { + return autoConvert_api_EventSource_To_v1_EventSource(in, out, s) +} + +func autoConvert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error { + out.Command = in.Command + return nil +} + +func Convert_v1_ExecAction_To_api_ExecAction(in *ExecAction, out *api.ExecAction, s conversion.Scope) error { + return autoConvert_v1_ExecAction_To_api_ExecAction(in, out, s) +} + +func autoConvert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error { + out.Command = in.Command + return nil +} + +func Convert_api_ExecAction_To_v1_ExecAction(in *api.ExecAction, out *ExecAction, s conversion.Scope) error { + return autoConvert_api_ExecAction_To_v1_ExecAction(in, out, s) +} + +func autoConvert_v1_ExportOptions_To_api_ExportOptions(in *ExportOptions, out *api.ExportOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Export = in.Export + out.Exact = in.Exact + return nil +} + +func Convert_v1_ExportOptions_To_api_ExportOptions(in *ExportOptions, out *api.ExportOptions, s conversion.Scope) error { + return autoConvert_v1_ExportOptions_To_api_ExportOptions(in, out, s) +} + +func autoConvert_api_ExportOptions_To_v1_ExportOptions(in *api.ExportOptions, out *ExportOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Export = in.Export + out.Exact = in.Exact + return nil +} + +func Convert_api_ExportOptions_To_v1_ExportOptions(in *api.ExportOptions, out *ExportOptions, s conversion.Scope) error { + return autoConvert_api_ExportOptions_To_v1_ExportOptions(in, out, s) +} + +func autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error { + out.TargetWWNs = in.TargetWWNs + out.Lun = in.Lun + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_FCVolumeSource_To_api_FCVolumeSource(in *FCVolumeSource, out *api.FCVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FCVolumeSource_To_api_FCVolumeSource(in, out, s) +} + +func autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error { + out.TargetWWNs = in.TargetWWNs + out.Lun = in.Lun + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_FCVolumeSource_To_v1_FCVolumeSource(in *api.FCVolumeSource, out *FCVolumeSource, s conversion.Scope) error { + return autoConvert_api_FCVolumeSource_To_v1_FCVolumeSource(in, out, s) +} + +func autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error { + out.Driver = in.Driver + out.FSType = in.FSType + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(api.LocalObjectReference) + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + out.Options = in.Options + return nil +} + +func Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in *FlexVolumeSource, out *api.FlexVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FlexVolumeSource_To_api_FlexVolumeSource(in, out, s) +} + +func autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *FlexVolumeSource, s conversion.Scope) error { + out.Driver = in.Driver + out.FSType = in.FSType + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + out.Options = in.Options + return nil +} + +func Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in *api.FlexVolumeSource, out *FlexVolumeSource, s conversion.Scope) error { + return autoConvert_api_FlexVolumeSource_To_v1_FlexVolumeSource(in, out, s) +} + +func autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error { + out.DatasetName = in.DatasetName + return nil +} + +func Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in *FlockerVolumeSource, out *api.FlockerVolumeSource, s conversion.Scope) error { + return autoConvert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(in, out, s) +} + +func autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *FlockerVolumeSource, s conversion.Scope) error { + out.DatasetName = in.DatasetName + return nil +} + +func Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in *api.FlockerVolumeSource, out *FlockerVolumeSource, s conversion.Scope) error { + return autoConvert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(in, out, s) +} + +func autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error { + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in *GCEPersistentDiskVolumeSource, out *api.GCEPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *GCEPersistentDiskVolumeSource, s conversion.Scope) error { + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in *api.GCEPersistentDiskVolumeSource, out *GCEPersistentDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error { + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil +} + +func Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in *GitRepoVolumeSource, out *api.GitRepoVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(in, out, s) +} + +func autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *GitRepoVolumeSource, s conversion.Scope) error { + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil +} + +func Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in *api.GitRepoVolumeSource, out *GitRepoVolumeSource, s conversion.Scope) error { + return autoConvert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(in, out, s) +} + +func autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error { + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in *GlusterfsVolumeSource, out *api.GlusterfsVolumeSource, s conversion.Scope) error { + return autoConvert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(in, out, s) +} + +func autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *GlusterfsVolumeSource, s conversion.Scope) error { + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in *api.GlusterfsVolumeSource, out *GlusterfsVolumeSource, s conversion.Scope) error { + return autoConvert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(in, out, s) +} + +func autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error { + SetDefaults_HTTPGetAction(in) + out.Path = in.Path + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.Port, &out.Port, s); err != nil { + return err + } + out.Host = in.Host + out.Scheme = api.URIScheme(in.Scheme) + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]api.HTTPHeader, len(*in)) + for i := range *in { + if err := Convert_v1_HTTPHeader_To_api_HTTPHeader(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HTTPHeaders = nil + } + return nil +} + +func Convert_v1_HTTPGetAction_To_api_HTTPGetAction(in *HTTPGetAction, out *api.HTTPGetAction, s conversion.Scope) error { + return autoConvert_v1_HTTPGetAction_To_api_HTTPGetAction(in, out, s) +} + +func autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *HTTPGetAction, s conversion.Scope) error { + out.Path = in.Path + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.Port, &out.Port, s); err != nil { + return err + } + out.Host = in.Host + out.Scheme = URIScheme(in.Scheme) + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + for i := range *in { + if err := Convert_api_HTTPHeader_To_v1_HTTPHeader(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HTTPHeaders = nil + } + return nil +} + +func Convert_api_HTTPGetAction_To_v1_HTTPGetAction(in *api.HTTPGetAction, out *HTTPGetAction, s conversion.Scope) error { + return autoConvert_api_HTTPGetAction_To_v1_HTTPGetAction(in, out, s) +} + +func autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in *HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +func Convert_v1_HTTPHeader_To_api_HTTPHeader(in *HTTPHeader, out *api.HTTPHeader, s conversion.Scope) error { + return autoConvert_v1_HTTPHeader_To_api_HTTPHeader(in, out, s) +} + +func autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *HTTPHeader, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +func Convert_api_HTTPHeader_To_v1_HTTPHeader(in *api.HTTPHeader, out *HTTPHeader, s conversion.Scope) error { + return autoConvert_api_HTTPHeader_To_v1_HTTPHeader(in, out, s) +} + +func autoConvert_v1_Handler_To_api_Handler(in *Handler, out *api.Handler, s conversion.Scope) error { + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(api.ExecAction) + if err := Convert_v1_ExecAction_To_api_ExecAction(*in, *out, s); err != nil { + return err + } + } else { + out.Exec = nil + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(api.HTTPGetAction) + if err := Convert_v1_HTTPGetAction_To_api_HTTPGetAction(*in, *out, s); err != nil { + return err + } + } else { + out.HTTPGet = nil + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(api.TCPSocketAction) + if err := Convert_v1_TCPSocketAction_To_api_TCPSocketAction(*in, *out, s); err != nil { + return err + } + } else { + out.TCPSocket = nil + } + return nil +} + +func Convert_v1_Handler_To_api_Handler(in *Handler, out *api.Handler, s conversion.Scope) error { + return autoConvert_v1_Handler_To_api_Handler(in, out, s) +} + +func autoConvert_api_Handler_To_v1_Handler(in *api.Handler, out *Handler, s conversion.Scope) error { + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(ExecAction) + if err := Convert_api_ExecAction_To_v1_ExecAction(*in, *out, s); err != nil { + return err + } + } else { + out.Exec = nil + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(HTTPGetAction) + if err := Convert_api_HTTPGetAction_To_v1_HTTPGetAction(*in, *out, s); err != nil { + return err + } + } else { + out.HTTPGet = nil + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(TCPSocketAction) + if err := Convert_api_TCPSocketAction_To_v1_TCPSocketAction(*in, *out, s); err != nil { + return err + } + } else { + out.TCPSocket = nil + } + return nil +} + +func Convert_api_Handler_To_v1_Handler(in *api.Handler, out *Handler, s conversion.Scope) error { + return autoConvert_api_Handler_To_v1_Handler(in, out, s) +} + +func autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +func Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in *HostPathVolumeSource, out *api.HostPathVolumeSource, s conversion.Scope) error { + return autoConvert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(in, out, s) +} + +func autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *HostPathVolumeSource, s conversion.Scope) error { + out.Path = in.Path + return nil +} + +func Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in *api.HostPathVolumeSource, out *HostPathVolumeSource, s conversion.Scope) error { + return autoConvert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(in, out, s) +} + +func autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error { + SetDefaults_ISCSIVolumeSource(in) + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in *ISCSIVolumeSource, out *api.ISCSIVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(in, out, s) +} + +func autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *ISCSIVolumeSource, s conversion.Scope) error { + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in *api.ISCSIVolumeSource, out *ISCSIVolumeSource, s conversion.Scope) error { + return autoConvert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(in, out, s) +} + +func autoConvert_v1_KeyToPath_To_api_KeyToPath(in *KeyToPath, out *api.KeyToPath, s conversion.Scope) error { + out.Key = in.Key + out.Path = in.Path + out.Mode = in.Mode + return nil +} + +func Convert_v1_KeyToPath_To_api_KeyToPath(in *KeyToPath, out *api.KeyToPath, s conversion.Scope) error { + return autoConvert_v1_KeyToPath_To_api_KeyToPath(in, out, s) +} + +func autoConvert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *KeyToPath, s conversion.Scope) error { + out.Key = in.Key + out.Path = in.Path + out.Mode = in.Mode + return nil +} + +func Convert_api_KeyToPath_To_v1_KeyToPath(in *api.KeyToPath, out *KeyToPath, s conversion.Scope) error { + return autoConvert_api_KeyToPath_To_v1_KeyToPath(in, out, s) +} + +func autoConvert_v1_Lifecycle_To_api_Lifecycle(in *Lifecycle, out *api.Lifecycle, s conversion.Scope) error { + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(api.Handler) + if err := Convert_v1_Handler_To_api_Handler(*in, *out, s); err != nil { + return err + } + } else { + out.PostStart = nil + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(api.Handler) + if err := Convert_v1_Handler_To_api_Handler(*in, *out, s); err != nil { + return err + } + } else { + out.PreStop = nil + } + return nil +} + +func Convert_v1_Lifecycle_To_api_Lifecycle(in *Lifecycle, out *api.Lifecycle, s conversion.Scope) error { + return autoConvert_v1_Lifecycle_To_api_Lifecycle(in, out, s) +} + +func autoConvert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *Lifecycle, s conversion.Scope) error { + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(Handler) + if err := Convert_api_Handler_To_v1_Handler(*in, *out, s); err != nil { + return err + } + } else { + out.PostStart = nil + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(Handler) + if err := Convert_api_Handler_To_v1_Handler(*in, *out, s); err != nil { + return err + } + } else { + out.PreStop = nil + } + return nil +} + +func Convert_api_Lifecycle_To_v1_Lifecycle(in *api.Lifecycle, out *Lifecycle, s conversion.Scope) error { + return autoConvert_api_Lifecycle_To_v1_Lifecycle(in, out, s) +} + +func autoConvert_v1_LimitRange_To_api_LimitRange(in *LimitRange, out *api.LimitRange, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_v1_LimitRange_To_api_LimitRange(in *LimitRange, out *api.LimitRange, s conversion.Scope) error { + return autoConvert_v1_LimitRange_To_api_LimitRange(in, out, s) +} + +func autoConvert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *LimitRange, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_api_LimitRange_To_v1_LimitRange(in *api.LimitRange, out *LimitRange, s conversion.Scope) error { + return autoConvert_api_LimitRange_To_v1_LimitRange(in, out, s) +} + +func autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in *LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error { + SetDefaults_LimitRangeItem(in) + out.Type = api.LimitType(in.Type) + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Max, &out.Max, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Min, &out.Min, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Default, &out.Default, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.DefaultRequest, &out.DefaultRequest, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio, s); err != nil { + return err + } + return nil +} + +func Convert_v1_LimitRangeItem_To_api_LimitRangeItem(in *LimitRangeItem, out *api.LimitRangeItem, s conversion.Scope) error { + return autoConvert_v1_LimitRangeItem_To_api_LimitRangeItem(in, out, s) +} + +func autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *LimitRangeItem, s conversion.Scope) error { + out.Type = LimitType(in.Type) + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Max = nil + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Min = nil + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Default = nil + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.DefaultRequest = nil + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.MaxLimitRequestRatio = nil + } + return nil +} + +func Convert_api_LimitRangeItem_To_v1_LimitRangeItem(in *api.LimitRangeItem, out *LimitRangeItem, s conversion.Scope) error { + return autoConvert_api_LimitRangeItem_To_v1_LimitRangeItem(in, out, s) +} + +func autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in *LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.LimitRange, len(*in)) + for i := range *in { + if err := Convert_v1_LimitRange_To_api_LimitRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_LimitRangeList_To_api_LimitRangeList(in *LimitRangeList, out *api.LimitRangeList, s conversion.Scope) error { + return autoConvert_v1_LimitRangeList_To_api_LimitRangeList(in, out, s) +} + +func autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *LimitRangeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]LimitRange, len(*in)) + for i := range *in { + if err := Convert_api_LimitRange_To_v1_LimitRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_LimitRangeList_To_v1_LimitRangeList(in *api.LimitRangeList, out *LimitRangeList, s conversion.Scope) error { + return autoConvert_api_LimitRangeList_To_v1_LimitRangeList(in, out, s) +} + +func autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error { + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]api.LimitRangeItem, len(*in)) + for i := range *in { + if err := Convert_v1_LimitRangeItem_To_api_LimitRangeItem(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Limits = nil + } + return nil +} + +func Convert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in *LimitRangeSpec, out *api.LimitRangeSpec, s conversion.Scope) error { + return autoConvert_v1_LimitRangeSpec_To_api_LimitRangeSpec(in, out, s) +} + +func autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *LimitRangeSpec, s conversion.Scope) error { + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + if err := Convert_api_LimitRangeItem_To_v1_LimitRangeItem(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Limits = nil + } + return nil +} + +func Convert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in *api.LimitRangeSpec, out *LimitRangeSpec, s conversion.Scope) error { + return autoConvert_api_LimitRangeSpec_To_v1_LimitRangeSpec(in, out, s) +} + +func autoConvert_v1_List_To_api_List(in *List, out *api.List, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.Object, len(*in)) + for i := range *in { + if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_List_To_api_List(in *List, out *api.List, s conversion.Scope) error { + return autoConvert_v1_List_To_api_List(in, out, s) +} + +func autoConvert_api_List_To_v1_List(in *api.List, out *List, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.RawExtension, len(*in)) + for i := range *in { + if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_List_To_v1_List(in *api.List, out *List, s conversion.Scope) error { + return autoConvert_api_List_To_v1_List(in, out, s) +} + +func autoConvert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := api.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + return nil +} + +func Convert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + return autoConvert_v1_ListOptions_To_api_ListOptions(in, out, s) +} + +func autoConvert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := api.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + return nil +} + +func Convert_api_ListOptions_To_v1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + return autoConvert_api_ListOptions_To_v1_ListOptions(in, out, s) +} + +func autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + return nil +} + +func Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in *LoadBalancerIngress, out *api.LoadBalancerIngress, s conversion.Scope) error { + return autoConvert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(in, out, s) +} + +func autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *LoadBalancerIngress, s conversion.Scope) error { + out.IP = in.IP + out.Hostname = in.Hostname + return nil +} + +func Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in *api.LoadBalancerIngress, out *LoadBalancerIngress, s conversion.Scope) error { + return autoConvert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(in, out, s) +} + +func autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error { + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]api.LoadBalancerIngress, len(*in)) + for i := range *in { + if err := Convert_v1_LoadBalancerIngress_To_api_LoadBalancerIngress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil +} + +func Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in *LoadBalancerStatus, out *api.LoadBalancerStatus, s conversion.Scope) error { + return autoConvert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(in, out, s) +} + +func autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *LoadBalancerStatus, s conversion.Scope) error { + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + for i := range *in { + if err := Convert_api_LoadBalancerIngress_To_v1_LoadBalancerIngress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil +} + +func Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in *api.LoadBalancerStatus, out *LoadBalancerStatus, s conversion.Scope) error { + return autoConvert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(in, out, s) +} + +func autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in *LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +func Convert_v1_LocalObjectReference_To_api_LocalObjectReference(in *LocalObjectReference, out *api.LocalObjectReference, s conversion.Scope) error { + return autoConvert_v1_LocalObjectReference_To_api_LocalObjectReference(in, out, s) +} + +func autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +func Convert_api_LocalObjectReference_To_v1_LocalObjectReference(in *api.LocalObjectReference, out *LocalObjectReference, s conversion.Scope) error { + return autoConvert_api_LocalObjectReference_To_v1_LocalObjectReference(in, out, s) +} + +func autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error { + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *api.NFSVolumeSource, s conversion.Scope) error { + return autoConvert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in, out, s) +} + +func autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *NFSVolumeSource, s conversion.Scope) error { + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in *api.NFSVolumeSource, out *NFSVolumeSource, s conversion.Scope) error { + return autoConvert_api_NFSVolumeSource_To_v1_NFSVolumeSource(in, out, s) +} + +func autoConvert_v1_Namespace_To_api_Namespace(in *Namespace, out *api.Namespace, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_NamespaceSpec_To_api_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_NamespaceStatus_To_api_NamespaceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Namespace_To_api_Namespace(in *Namespace, out *api.Namespace, s conversion.Scope) error { + return autoConvert_v1_Namespace_To_api_Namespace(in, out, s) +} + +func autoConvert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *Namespace, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_NamespaceSpec_To_v1_NamespaceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_NamespaceStatus_To_v1_NamespaceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_Namespace_To_v1_Namespace(in *api.Namespace, out *Namespace, s conversion.Scope) error { + return autoConvert_api_Namespace_To_v1_Namespace(in, out, s) +} + +func autoConvert_v1_NamespaceList_To_api_NamespaceList(in *NamespaceList, out *api.NamespaceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Namespace, len(*in)) + for i := range *in { + if err := Convert_v1_Namespace_To_api_Namespace(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_NamespaceList_To_api_NamespaceList(in *NamespaceList, out *api.NamespaceList, s conversion.Scope) error { + return autoConvert_v1_NamespaceList_To_api_NamespaceList(in, out, s) +} + +func autoConvert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *NamespaceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Namespace, len(*in)) + for i := range *in { + if err := Convert_api_Namespace_To_v1_Namespace(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_NamespaceList_To_v1_NamespaceList(in *api.NamespaceList, out *NamespaceList, s conversion.Scope) error { + return autoConvert_api_NamespaceList_To_v1_NamespaceList(in, out, s) +} + +func autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in *NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error { + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]api.FinalizerName, len(*in)) + for i := range *in { + (*out)[i] = api.FinalizerName((*in)[i]) + } + } else { + out.Finalizers = nil + } + return nil +} + +func Convert_v1_NamespaceSpec_To_api_NamespaceSpec(in *NamespaceSpec, out *api.NamespaceSpec, s conversion.Scope) error { + return autoConvert_v1_NamespaceSpec_To_api_NamespaceSpec(in, out, s) +} + +func autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *NamespaceSpec, s conversion.Scope) error { + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + for i := range *in { + (*out)[i] = FinalizerName((*in)[i]) + } + } else { + out.Finalizers = nil + } + return nil +} + +func Convert_api_NamespaceSpec_To_v1_NamespaceSpec(in *api.NamespaceSpec, out *NamespaceSpec, s conversion.Scope) error { + return autoConvert_api_NamespaceSpec_To_v1_NamespaceSpec(in, out, s) +} + +func autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in *NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error { + SetDefaults_NamespaceStatus(in) + out.Phase = api.NamespacePhase(in.Phase) + return nil +} + +func Convert_v1_NamespaceStatus_To_api_NamespaceStatus(in *NamespaceStatus, out *api.NamespaceStatus, s conversion.Scope) error { + return autoConvert_v1_NamespaceStatus_To_api_NamespaceStatus(in, out, s) +} + +func autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *NamespaceStatus, s conversion.Scope) error { + out.Phase = NamespacePhase(in.Phase) + return nil +} + +func Convert_api_NamespaceStatus_To_v1_NamespaceStatus(in *api.NamespaceStatus, out *NamespaceStatus, s conversion.Scope) error { + return autoConvert_api_NamespaceStatus_To_v1_NamespaceStatus(in, out, s) +} + +func autoConvert_v1_Node_To_api_Node(in *Node, out *api.Node, s conversion.Scope) error { + SetDefaults_Node(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_NodeSpec_To_api_NodeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_NodeStatus_To_api_NodeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Node_To_api_Node(in *Node, out *api.Node, s conversion.Scope) error { + return autoConvert_v1_Node_To_api_Node(in, out, s) +} + +func autoConvert_api_Node_To_v1_Node(in *api.Node, out *Node, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_NodeSpec_To_v1_NodeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_NodeStatus_To_v1_NodeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_Node_To_v1_Node(in *api.Node, out *Node, s conversion.Scope) error { + return autoConvert_api_Node_To_v1_Node(in, out, s) +} + +func autoConvert_v1_NodeAddress_To_api_NodeAddress(in *NodeAddress, out *api.NodeAddress, s conversion.Scope) error { + out.Type = api.NodeAddressType(in.Type) + out.Address = in.Address + return nil +} + +func Convert_v1_NodeAddress_To_api_NodeAddress(in *NodeAddress, out *api.NodeAddress, s conversion.Scope) error { + return autoConvert_v1_NodeAddress_To_api_NodeAddress(in, out, s) +} + +func autoConvert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *NodeAddress, s conversion.Scope) error { + out.Type = NodeAddressType(in.Type) + out.Address = in.Address + return nil +} + +func Convert_api_NodeAddress_To_v1_NodeAddress(in *api.NodeAddress, out *NodeAddress, s conversion.Scope) error { + return autoConvert_api_NodeAddress_To_v1_NodeAddress(in, out, s) +} + +func autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in *NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(api.NodeSelector) + if err := Convert_v1_NodeSelector_To_api_NodeSelector(*in, *out, s); err != nil { + return err + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]api.PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_v1_NodeAffinity_To_api_NodeAffinity(in *NodeAffinity, out *api.NodeAffinity, s conversion.Scope) error { + return autoConvert_v1_NodeAffinity_To_api_NodeAffinity(in, out, s) +} + +func autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *NodeAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(NodeSelector) + if err := Convert_api_NodeSelector_To_v1_NodeSelector(*in, *out, s); err != nil { + return err + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_api_NodeAffinity_To_v1_NodeAffinity(in *api.NodeAffinity, out *NodeAffinity, s conversion.Scope) error { + return autoConvert_api_NodeAffinity_To_v1_NodeAffinity(in, out, s) +} + +func autoConvert_v1_NodeCondition_To_api_NodeCondition(in *NodeCondition, out *api.NodeCondition, s conversion.Scope) error { + out.Type = api.NodeConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastHeartbeatTime, &out.LastHeartbeatTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1_NodeCondition_To_api_NodeCondition(in *NodeCondition, out *api.NodeCondition, s conversion.Scope) error { + return autoConvert_v1_NodeCondition_To_api_NodeCondition(in, out, s) +} + +func autoConvert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *NodeCondition, s conversion.Scope) error { + out.Type = NodeConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastHeartbeatTime, &out.LastHeartbeatTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_api_NodeCondition_To_v1_NodeCondition(in *api.NodeCondition, out *NodeCondition, s conversion.Scope) error { + return autoConvert_api_NodeCondition_To_v1_NodeCondition(in, out, s) +} + +func autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error { + if err := Convert_v1_DaemonEndpoint_To_api_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil { + return err + } + return nil +} + +func Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in *NodeDaemonEndpoints, out *api.NodeDaemonEndpoints, s conversion.Scope) error { + return autoConvert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(in, out, s) +} + +func autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *NodeDaemonEndpoints, s conversion.Scope) error { + if err := Convert_api_DaemonEndpoint_To_v1_DaemonEndpoint(&in.KubeletEndpoint, &out.KubeletEndpoint, s); err != nil { + return err + } + return nil +} + +func Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *api.NodeDaemonEndpoints, out *NodeDaemonEndpoints, s conversion.Scope) error { + return autoConvert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s) +} + +func autoConvert_v1_NodeList_To_api_NodeList(in *NodeList, out *api.NodeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Node, len(*in)) + for i := range *in { + if err := Convert_v1_Node_To_api_Node(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_NodeList_To_api_NodeList(in *NodeList, out *api.NodeList, s conversion.Scope) error { + return autoConvert_v1_NodeList_To_api_NodeList(in, out, s) +} + +func autoConvert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *NodeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Node, len(*in)) + for i := range *in { + if err := Convert_api_Node_To_v1_Node(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_NodeList_To_v1_NodeList(in *api.NodeList, out *NodeList, s conversion.Scope) error { + return autoConvert_api_NodeList_To_v1_NodeList(in, out, s) +} + +func autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in *NodeProxyOptions, out *api.NodeProxyOptions, s conversion.Scope) error { + return autoConvert_v1_NodeProxyOptions_To_api_NodeProxyOptions(in, out, s) +} + +func autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *NodeProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOptions, out *NodeProxyOptions, s conversion.Scope) error { + return autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in, out, s) +} + +func autoConvert_v1_NodeSelector_To_api_NodeSelector(in *NodeSelector, out *api.NodeSelector, s conversion.Scope) error { + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]api.NodeSelectorTerm, len(*in)) + for i := range *in { + if err := Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.NodeSelectorTerms = nil + } + return nil +} + +func Convert_v1_NodeSelector_To_api_NodeSelector(in *NodeSelector, out *api.NodeSelector, s conversion.Scope) error { + return autoConvert_v1_NodeSelector_To_api_NodeSelector(in, out, s) +} + +func autoConvert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *NodeSelector, s conversion.Scope) error { + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + if err := Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.NodeSelectorTerms = nil + } + return nil +} + +func Convert_api_NodeSelector_To_v1_NodeSelector(in *api.NodeSelector, out *NodeSelector, s conversion.Scope) error { + return autoConvert_api_NodeSelector_To_v1_NodeSelector(in, out, s) +} + +func autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = api.NodeSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in *NodeSelectorRequirement, out *api.NodeSelectorRequirement, s conversion.Scope) error { + return autoConvert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(in, out, s) +} + +func autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = NodeSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in *api.NodeSelectorRequirement, out *NodeSelectorRequirement, s conversion.Scope) error { + return autoConvert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(in, out, s) +} + +func autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error { + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]api.NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in *NodeSelectorTerm, out *api.NodeSelectorTerm, s conversion.Scope) error { + return autoConvert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(in, out, s) +} + +func autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *NodeSelectorTerm, s conversion.Scope) error { + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_api_NodeSelectorRequirement_To_v1_NodeSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in *api.NodeSelectorTerm, out *NodeSelectorTerm, s conversion.Scope) error { + return autoConvert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(in, out, s) +} + +func autoConvert_v1_NodeSpec_To_api_NodeSpec(in *NodeSpec, out *api.NodeSpec, s conversion.Scope) error { + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + return nil +} + +func Convert_v1_NodeSpec_To_api_NodeSpec(in *NodeSpec, out *api.NodeSpec, s conversion.Scope) error { + return autoConvert_v1_NodeSpec_To_api_NodeSpec(in, out, s) +} + +func autoConvert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *NodeSpec, s conversion.Scope) error { + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + return nil +} + +func Convert_api_NodeSpec_To_v1_NodeSpec(in *api.NodeSpec, out *NodeSpec, s conversion.Scope) error { + return autoConvert_api_NodeSpec_To_v1_NodeSpec(in, out, s) +} + +func autoConvert_v1_NodeStatus_To_api_NodeStatus(in *NodeStatus, out *api.NodeStatus, s conversion.Scope) error { + SetDefaults_NodeStatus(in) + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Capacity, &out.Capacity, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Allocatable, &out.Allocatable, s); err != nil { + return err + } + out.Phase = api.NodePhase(in.Phase) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]api.NodeCondition, len(*in)) + for i := range *in { + if err := Convert_v1_NodeCondition_To_api_NodeCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]api.NodeAddress, len(*in)) + for i := range *in { + if err := Convert_v1_NodeAddress_To_api_NodeAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if err := Convert_v1_NodeDaemonEndpoints_To_api_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil { + return err + } + if err := Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil { + return err + } + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]api.ContainerImage, len(*in)) + for i := range *in { + if err := Convert_v1_ContainerImage_To_api_ContainerImage(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Images = nil + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]api.UniqueVolumeName, len(*in)) + for i := range *in { + (*out)[i] = api.UniqueVolumeName((*in)[i]) + } + } else { + out.VolumesInUse = nil + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]api.AttachedVolume, len(*in)) + for i := range *in { + if err := Convert_v1_AttachedVolume_To_api_AttachedVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.VolumesAttached = nil + } + return nil +} + +func Convert_v1_NodeStatus_To_api_NodeStatus(in *NodeStatus, out *api.NodeStatus, s conversion.Scope) error { + return autoConvert_v1_NodeStatus_To_api_NodeStatus(in, out, s) +} + +func autoConvert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *NodeStatus, s conversion.Scope) error { + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Capacity = nil + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Allocatable = nil + } + out.Phase = NodePhase(in.Phase) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + if err := Convert_api_NodeCondition_To_v1_NodeCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + for i := range *in { + if err := Convert_api_NodeAddress_To_v1_NodeAddress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if err := Convert_api_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(&in.DaemonEndpoints, &out.DaemonEndpoints, s); err != nil { + return err + } + if err := Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(&in.NodeInfo, &out.NodeInfo, s); err != nil { + return err + } + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]ContainerImage, len(*in)) + for i := range *in { + if err := Convert_api_ContainerImage_To_v1_ContainerImage(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Images = nil + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + for i := range *in { + (*out)[i] = UniqueVolumeName((*in)[i]) + } + } else { + out.VolumesInUse = nil + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + for i := range *in { + if err := Convert_api_AttachedVolume_To_v1_AttachedVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.VolumesAttached = nil + } + return nil +} + +func Convert_api_NodeStatus_To_v1_NodeStatus(in *api.NodeStatus, out *NodeStatus, s conversion.Scope) error { + return autoConvert_api_NodeStatus_To_v1_NodeStatus(in, out, s) +} + +func autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error { + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil +} + +func Convert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in *NodeSystemInfo, out *api.NodeSystemInfo, s conversion.Scope) error { + return autoConvert_v1_NodeSystemInfo_To_api_NodeSystemInfo(in, out, s) +} + +func autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *NodeSystemInfo, s conversion.Scope) error { + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil +} + +func Convert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in *api.NodeSystemInfo, out *NodeSystemInfo, s conversion.Scope) error { + return autoConvert_api_NodeSystemInfo_To_v1_NodeSystemInfo(in, out, s) +} + +func autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error { + SetDefaults_ObjectFieldSelector(in) + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil +} + +func Convert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in *ObjectFieldSelector, out *api.ObjectFieldSelector, s conversion.Scope) error { + return autoConvert_v1_ObjectFieldSelector_To_api_ObjectFieldSelector(in, out, s) +} + +func autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *ObjectFieldSelector, s conversion.Scope) error { + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil +} + +func Convert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in *api.ObjectFieldSelector, out *ObjectFieldSelector, s conversion.Scope) error { + return autoConvert_api_ObjectFieldSelector_To_v1_ObjectFieldSelector(in, out, s) +} + +func autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error { + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = types.UID(in.UID) + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil { + return err + } + out.DeletionTimestamp = in.DeletionTimestamp + out.DeletionGracePeriodSeconds = in.DeletionGracePeriodSeconds + out.Labels = in.Labels + out.Annotations = in.Annotations + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]api.OwnerReference, len(*in)) + for i := range *in { + if err := Convert_v1_OwnerReference_To_api_OwnerReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.OwnerReferences = nil + } + out.Finalizers = in.Finalizers + out.ClusterName = in.ClusterName + return nil +} + +func Convert_v1_ObjectMeta_To_api_ObjectMeta(in *ObjectMeta, out *api.ObjectMeta, s conversion.Scope) error { + return autoConvert_v1_ObjectMeta_To_api_ObjectMeta(in, out, s) +} + +func autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *ObjectMeta, s conversion.Scope) error { + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = types.UID(in.UID) + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.CreationTimestamp, &out.CreationTimestamp, s); err != nil { + return err + } + out.DeletionTimestamp = in.DeletionTimestamp + out.DeletionGracePeriodSeconds = in.DeletionGracePeriodSeconds + out.Labels = in.Labels + out.Annotations = in.Annotations + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]OwnerReference, len(*in)) + for i := range *in { + if err := Convert_api_OwnerReference_To_v1_OwnerReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.OwnerReferences = nil + } + out.Finalizers = in.Finalizers + out.ClusterName = in.ClusterName + return nil +} + +func Convert_api_ObjectMeta_To_v1_ObjectMeta(in *api.ObjectMeta, out *ObjectMeta, s conversion.Scope) error { + return autoConvert_api_ObjectMeta_To_v1_ObjectMeta(in, out, s) +} + +func autoConvert_v1_ObjectReference_To_api_ObjectReference(in *ObjectReference, out *api.ObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = types.UID(in.UID) + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil +} + +func Convert_v1_ObjectReference_To_api_ObjectReference(in *ObjectReference, out *api.ObjectReference, s conversion.Scope) error { + return autoConvert_v1_ObjectReference_To_api_ObjectReference(in, out, s) +} + +func autoConvert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *ObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = types.UID(in.UID) + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil +} + +func Convert_api_ObjectReference_To_v1_ObjectReference(in *api.ObjectReference, out *ObjectReference, s conversion.Scope) error { + return autoConvert_api_ObjectReference_To_v1_ObjectReference(in, out, s) +} + +func autoConvert_v1_OwnerReference_To_api_OwnerReference(in *OwnerReference, out *api.OwnerReference, s conversion.Scope) error { + out.APIVersion = in.APIVersion + out.Kind = in.Kind + out.Name = in.Name + out.UID = types.UID(in.UID) + out.Controller = in.Controller + return nil +} + +func Convert_v1_OwnerReference_To_api_OwnerReference(in *OwnerReference, out *api.OwnerReference, s conversion.Scope) error { + return autoConvert_v1_OwnerReference_To_api_OwnerReference(in, out, s) +} + +func autoConvert_api_OwnerReference_To_v1_OwnerReference(in *api.OwnerReference, out *OwnerReference, s conversion.Scope) error { + out.APIVersion = in.APIVersion + out.Kind = in.Kind + out.Name = in.Name + out.UID = types.UID(in.UID) + out.Controller = in.Controller + return nil +} + +func Convert_api_OwnerReference_To_v1_OwnerReference(in *api.OwnerReference, out *OwnerReference, s conversion.Scope) error { + return autoConvert_api_OwnerReference_To_v1_OwnerReference(in, out, s) +} + +func autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in *PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error { + SetDefaults_PersistentVolume(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_PersistentVolume_To_api_PersistentVolume(in *PersistentVolume, out *api.PersistentVolume, s conversion.Scope) error { + return autoConvert_v1_PersistentVolume_To_api_PersistentVolume(in, out, s) +} + +func autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *PersistentVolume, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_PersistentVolume_To_v1_PersistentVolume(in *api.PersistentVolume, out *PersistentVolume, s conversion.Scope) error { + return autoConvert_api_PersistentVolume_To_v1_PersistentVolume(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error { + SetDefaults_PersistentVolumeClaim(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in *PersistentVolumeClaim, out *api.PersistentVolumeClaim, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *PersistentVolumeClaim, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in *api.PersistentVolumeClaim, out *PersistentVolumeClaim, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := Convert_v1_PersistentVolumeClaim_To_api_PersistentVolumeClaim(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in *PersistentVolumeClaimList, out *api.PersistentVolumeClaimList, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimList_To_api_PersistentVolumeClaimList(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *PersistentVolumeClaimList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := Convert_api_PersistentVolumeClaim_To_v1_PersistentVolumeClaim(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in *api.PersistentVolumeClaimList, out *PersistentVolumeClaimList, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimList_To_v1_PersistentVolumeClaimList(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error { + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]api.PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = api.PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + out.Selector = in.Selector + if err := Convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeName = in.VolumeName + return nil +} + +func Convert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in *PersistentVolumeClaimSpec, out *api.PersistentVolumeClaimSpec, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimSpec_To_api_PersistentVolumeClaimSpec(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *PersistentVolumeClaimSpec, s conversion.Scope) error { + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + out.Selector = in.Selector + if err := Convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil { + return err + } + out.VolumeName = in.VolumeName + return nil +} + +func Convert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in *api.PersistentVolumeClaimSpec, out *PersistentVolumeClaimSpec, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimSpec_To_v1_PersistentVolumeClaimSpec(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error { + out.Phase = api.PersistentVolumeClaimPhase(in.Phase) + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]api.PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = api.PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Capacity, &out.Capacity, s); err != nil { + return err + } + return nil +} + +func Convert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in *PersistentVolumeClaimStatus, out *api.PersistentVolumeClaimStatus, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimStatus_To_api_PersistentVolumeClaimStatus(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *PersistentVolumeClaimStatus, s conversion.Scope) error { + out.Phase = PersistentVolumeClaimPhase(in.Phase) + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Capacity = nil + } + return nil +} + +func Convert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in *api.PersistentVolumeClaimStatus, out *PersistentVolumeClaimStatus, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimStatus_To_v1_PersistentVolumeClaimStatus(in, out, s) +} + +func autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in *PersistentVolumeClaimVolumeSource, out *api.PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(in, out, s) +} + +func autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in *api.PersistentVolumeClaimVolumeSource, out *PersistentVolumeClaimVolumeSource, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(in, out, s) +} + +func autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.PersistentVolume, len(*in)) + for i := range *in { + if err := Convert_v1_PersistentVolume_To_api_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in *PersistentVolumeList, out *api.PersistentVolumeList, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeList_To_api_PersistentVolumeList(in, out, s) +} + +func autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *PersistentVolumeList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := Convert_api_PersistentVolume_To_v1_PersistentVolume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in *api.PersistentVolumeList, out *PersistentVolumeList, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeList_To_v1_PersistentVolumeList(in, out, s) +} + +func autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error { + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(api.GCEPersistentDiskVolumeSource) + if err := Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(api.AWSElasticBlockStoreVolumeSource) + if err := Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AWSElasticBlockStore = nil + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(api.HostPathVolumeSource) + if err := Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.HostPath = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(api.GlusterfsVolumeSource) + if err := Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Glusterfs = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(api.NFSVolumeSource) + if err := Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.NFS = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(api.RBDVolumeSource) + if err := Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(api.ISCSIVolumeSource) + if err := Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ISCSI = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(api.CinderVolumeSource) + if err := Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(api.CephFSVolumeSource) + if err := Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(api.FCVolumeSource) + if err := Convert_v1_FCVolumeSource_To_api_FCVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FC = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(api.FlockerVolumeSource) + if err := Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Flocker = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(api.FlexVolumeSource) + if err := Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(api.AzureFileVolumeSource) + if err := Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureFile = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(api.VsphereVirtualDiskVolumeSource) + if err := Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.VsphereVolume = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(api.QuobyteVolumeSource) + if err := Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Quobyte = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(api.AzureDiskVolumeSource) + if err := Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil +} + +func Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *PersistentVolumeSource, out *api.PersistentVolumeSource, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in, out, s) +} + +func autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *PersistentVolumeSource, s conversion.Scope) error { + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + if err := Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + if err := Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AWSElasticBlockStore = nil + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + if err := Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.HostPath = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + if err := Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Glusterfs = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + if err := Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.NFS = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + if err := Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Quobyte = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ISCSI = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + if err := Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := Convert_api_FCVolumeSource_To_v1_FCVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FC = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + if err := Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Flocker = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + if err := Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureFile = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + if err := Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.VsphereVolume = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil +} + +func Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api.PersistentVolumeSource, out *PersistentVolumeSource, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in, out, s) +} + +func autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error { + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Capacity, &out.Capacity, s); err != nil { + return err + } + if err := Convert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]api.PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = api.PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(api.ObjectReference) + if err := Convert_v1_ObjectReference_To_api_ObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.ClaimRef = nil + } + out.PersistentVolumeReclaimPolicy = api.PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy) + return nil +} + +func Convert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in *PersistentVolumeSpec, out *api.PersistentVolumeSpec, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeSpec_To_api_PersistentVolumeSpec(in, out, s) +} + +func autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *PersistentVolumeSpec, s conversion.Scope) error { + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Capacity = nil + } + if err := Convert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, s); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = PersistentVolumeAccessMode((*in)[i]) + } + } else { + out.AccessModes = nil + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(ObjectReference) + if err := Convert_api_ObjectReference_To_v1_ObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.ClaimRef = nil + } + out.PersistentVolumeReclaimPolicy = PersistentVolumeReclaimPolicy(in.PersistentVolumeReclaimPolicy) + return nil +} + +func Convert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in *api.PersistentVolumeSpec, out *PersistentVolumeSpec, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeSpec_To_v1_PersistentVolumeSpec(in, out, s) +} + +func autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error { + out.Phase = api.PersistentVolumePhase(in.Phase) + out.Message = in.Message + out.Reason = in.Reason + return nil +} + +func Convert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in *PersistentVolumeStatus, out *api.PersistentVolumeStatus, s conversion.Scope) error { + return autoConvert_v1_PersistentVolumeStatus_To_api_PersistentVolumeStatus(in, out, s) +} + +func autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *PersistentVolumeStatus, s conversion.Scope) error { + out.Phase = PersistentVolumePhase(in.Phase) + out.Message = in.Message + out.Reason = in.Reason + return nil +} + +func Convert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in *api.PersistentVolumeStatus, out *PersistentVolumeStatus, s conversion.Scope) error { + return autoConvert_api_PersistentVolumeStatus_To_v1_PersistentVolumeStatus(in, out, s) +} + +func autoConvert_v1_Pod_To_api_Pod(in *Pod, out *api.Pod, s conversion.Scope) error { + SetDefaults_Pod(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_Pod_To_v1_Pod(in *api.Pod, out *Pod, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_PodAffinity_To_api_PodAffinity(in *PodAffinity, out *api.PodAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]api.PodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]api.WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_v1_PodAffinity_To_api_PodAffinity(in *PodAffinity, out *api.PodAffinity, s conversion.Scope) error { + return autoConvert_v1_PodAffinity_To_api_PodAffinity(in, out, s) +} + +func autoConvert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *PodAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_api_PodAffinity_To_v1_PodAffinity(in *api.PodAffinity, out *PodAffinity, s conversion.Scope) error { + return autoConvert_api_PodAffinity_To_v1_PodAffinity(in, out, s) +} + +func autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error { + out.LabelSelector = in.LabelSelector + out.Namespaces = in.Namespaces + out.TopologyKey = in.TopologyKey + return nil +} + +func Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in *PodAffinityTerm, out *api.PodAffinityTerm, s conversion.Scope) error { + return autoConvert_v1_PodAffinityTerm_To_api_PodAffinityTerm(in, out, s) +} + +func autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error { + out.LabelSelector = in.LabelSelector + out.Namespaces = in.Namespaces + out.TopologyKey = in.TopologyKey + return nil +} + +func Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in *api.PodAffinityTerm, out *PodAffinityTerm, s conversion.Scope) error { + return autoConvert_api_PodAffinityTerm_To_v1_PodAffinityTerm(in, out, s) +} + +func autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]api.PodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]api.WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in *PodAntiAffinity, out *api.PodAntiAffinity, s conversion.Scope) error { + return autoConvert_v1_PodAntiAffinity_To_api_PodAntiAffinity(in, out, s) +} + +func autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *PodAntiAffinity, s conversion.Scope) error { + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil +} + +func Convert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in *api.PodAntiAffinity, out *PodAntiAffinity, s conversion.Scope) error { + return autoConvert_api_PodAntiAffinity_To_v1_PodAntiAffinity(in, out, s) +} + +func autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in *PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error { + SetDefaults_PodAttachOptions(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil +} + +func Convert_v1_PodAttachOptions_To_api_PodAttachOptions(in *PodAttachOptions, out *api.PodAttachOptions, s conversion.Scope) error { + return autoConvert_v1_PodAttachOptions_To_api_PodAttachOptions(in, out, s) +} + +func autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *PodAttachOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil +} + +func Convert_api_PodAttachOptions_To_v1_PodAttachOptions(in *api.PodAttachOptions, out *PodAttachOptions, s conversion.Scope) error { + return autoConvert_api_PodAttachOptions_To_v1_PodAttachOptions(in, out, s) +} + +func autoConvert_v1_PodCondition_To_api_PodCondition(in *PodCondition, out *api.PodCondition, s conversion.Scope) error { + out.Type = api.PodConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1_PodCondition_To_api_PodCondition(in *PodCondition, out *api.PodCondition, s conversion.Scope) error { + return autoConvert_v1_PodCondition_To_api_PodCondition(in, out, s) +} + +func autoConvert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *PodCondition, s conversion.Scope) error { + out.Type = PodConditionType(in.Type) + out.Status = ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_api_PodCondition_To_v1_PodCondition(in *api.PodCondition, out *PodCondition, s conversion.Scope) error { + return autoConvert_api_PodCondition_To_v1_PodCondition(in, out, s) +} + +func autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in *PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error { + SetDefaults_PodExecOptions(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + out.Command = in.Command + return nil +} + +func Convert_v1_PodExecOptions_To_api_PodExecOptions(in *PodExecOptions, out *api.PodExecOptions, s conversion.Scope) error { + return autoConvert_v1_PodExecOptions_To_api_PodExecOptions(in, out, s) +} + +func autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *PodExecOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + out.Command = in.Command + return nil +} + +func Convert_api_PodExecOptions_To_v1_PodExecOptions(in *api.PodExecOptions, out *PodExecOptions, s conversion.Scope) error { + return autoConvert_api_PodExecOptions_To_v1_PodExecOptions(in, out, s) +} + +func autoConvert_v1_PodList_To_api_PodList(in *PodList, out *api.PodList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Pod, len(*in)) + for i := range *in { + if err := Convert_v1_Pod_To_api_Pod(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_PodList_To_api_PodList(in *PodList, out *api.PodList, s conversion.Scope) error { + return autoConvert_v1_PodList_To_api_PodList(in, out, s) +} + +func autoConvert_api_PodList_To_v1_PodList(in *api.PodList, out *PodList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := Convert_api_Pod_To_v1_Pod(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_PodList_To_v1_PodList(in *api.PodList, out *PodList, s conversion.Scope) error { + return autoConvert_api_PodList_To_v1_PodList(in, out, s) +} + +func autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in *PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + out.SinceSeconds = in.SinceSeconds + out.SinceTime = in.SinceTime + out.Timestamps = in.Timestamps + out.TailLines = in.TailLines + out.LimitBytes = in.LimitBytes + return nil +} + +func Convert_v1_PodLogOptions_To_api_PodLogOptions(in *PodLogOptions, out *api.PodLogOptions, s conversion.Scope) error { + return autoConvert_v1_PodLogOptions_To_api_PodLogOptions(in, out, s) +} + +func autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *PodLogOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + out.SinceSeconds = in.SinceSeconds + out.SinceTime = in.SinceTime + out.Timestamps = in.Timestamps + out.TailLines = in.TailLines + out.LimitBytes = in.LimitBytes + return nil +} + +func Convert_api_PodLogOptions_To_v1_PodLogOptions(in *api.PodLogOptions, out *PodLogOptions, s conversion.Scope) error { + return autoConvert_api_PodLogOptions_To_v1_PodLogOptions(in, out, s) +} + +func autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in *PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_v1_PodProxyOptions_To_api_PodProxyOptions(in *PodProxyOptions, out *api.PodProxyOptions, s conversion.Scope) error { + return autoConvert_v1_PodProxyOptions_To_api_PodProxyOptions(in, out, s) +} + +func autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *PodProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_api_PodProxyOptions_To_v1_PodProxyOptions(in *api.PodProxyOptions, out *PodProxyOptions, s conversion.Scope) error { + return autoConvert_api_PodProxyOptions_To_v1_PodProxyOptions(in, out, s) +} + +func autoConvert_v1_PodSecurityContext_To_api_PodSecurityContext(in *PodSecurityContext, out *api.PodSecurityContext, s conversion.Scope) error { + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api.SELinuxOptions) + if err := Convert_v1_SELinuxOptions_To_api_SELinuxOptions(*in, *out, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.SupplementalGroups = in.SupplementalGroups + out.FSGroup = in.FSGroup + return nil +} + +func autoConvert_api_PodSecurityContext_To_v1_PodSecurityContext(in *api.PodSecurityContext, out *PodSecurityContext, s conversion.Scope) error { + // INFO: in.HostNetwork opted out of conversion generation + // INFO: in.HostPID opted out of conversion generation + // INFO: in.HostIPC opted out of conversion generation + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(*in, *out, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.SupplementalGroups = in.SupplementalGroups + out.FSGroup = in.FSGroup + return nil +} + +func autoConvert_v1_PodSignature_To_api_PodSignature(in *PodSignature, out *api.PodSignature, s conversion.Scope) error { + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + *out = new(api.OwnerReference) + if err := Convert_v1_OwnerReference_To_api_OwnerReference(*in, *out, s); err != nil { + return err + } + } else { + out.PodController = nil + } + return nil +} + +func Convert_v1_PodSignature_To_api_PodSignature(in *PodSignature, out *api.PodSignature, s conversion.Scope) error { + return autoConvert_v1_PodSignature_To_api_PodSignature(in, out, s) +} + +func autoConvert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *PodSignature, s conversion.Scope) error { + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + *out = new(OwnerReference) + if err := Convert_api_OwnerReference_To_v1_OwnerReference(*in, *out, s); err != nil { + return err + } + } else { + out.PodController = nil + } + return nil +} + +func Convert_api_PodSignature_To_v1_PodSignature(in *api.PodSignature, out *PodSignature, s conversion.Scope) error { + return autoConvert_api_PodSignature_To_v1_PodSignature(in, out, s) +} + +func autoConvert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conversion.Scope) error { + SetDefaults_PodSpec(in) + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]api.Volume, len(*in)) + for i := range *in { + if err := Convert_v1_Volume_To_api_Volume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]api.Container, len(*in)) + for i := range *in { + if err := Convert_v1_Container_To_api_Container(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.InitContainers = nil + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]api.Container, len(*in)) + for i := range *in { + if err := Convert_v1_Container_To_api_Container(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Containers = nil + } + out.RestartPolicy = api.RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = in.TerminationGracePeriodSeconds + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + out.DNSPolicy = api.DNSPolicy(in.DNSPolicy) + out.NodeSelector = in.NodeSelector + out.ServiceAccountName = in.ServiceAccountName + // INFO: in.DeprecatedServiceAccount opted out of conversion generation + out.NodeName = in.NodeName + // INFO: in.HostNetwork opted out of conversion generation + // INFO: in.HostPID opted out of conversion generation + // INFO: in.HostIPC opted out of conversion generation + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(api.PodSecurityContext) + if err := Convert_v1_PodSecurityContext_To_api_PodSecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]api.LocalObjectReference, len(*in)) + for i := range *in { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ImagePullSecrets = nil + } + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + return nil +} + +func autoConvert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conversion.Scope) error { + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := Convert_api_Volume_To_v1_Volume(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + if err := Convert_api_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.InitContainers = nil + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + if err := Convert_api_Container_To_v1_Container(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Containers = nil + } + out.RestartPolicy = RestartPolicy(in.RestartPolicy) + out.TerminationGracePeriodSeconds = in.TerminationGracePeriodSeconds + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + out.DNSPolicy = DNSPolicy(in.DNSPolicy) + out.NodeSelector = in.NodeSelector + out.ServiceAccountName = in.ServiceAccountName + out.NodeName = in.NodeName + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := Convert_api_PodSecurityContext_To_v1_PodSecurityContext(*in, *out, s); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ImagePullSecrets = nil + } + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + return nil +} + +func autoConvert_v1_PodStatus_To_api_PodStatus(in *PodStatus, out *api.PodStatus, s conversion.Scope) error { + out.Phase = api.PodPhase(in.Phase) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]api.PodCondition, len(*in)) + for i := range *in { + if err := Convert_v1_PodCondition_To_api_PodCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + out.StartTime = in.StartTime + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]api.ContainerStatus, len(*in)) + for i := range *in { + if err := Convert_v1_ContainerStatus_To_api_ContainerStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.InitContainerStatuses = nil + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]api.ContainerStatus, len(*in)) + for i := range *in { + if err := Convert_v1_ContainerStatus_To_api_ContainerStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ContainerStatuses = nil + } + return nil +} + +func Convert_v1_PodStatus_To_api_PodStatus(in *PodStatus, out *api.PodStatus, s conversion.Scope) error { + return autoConvert_v1_PodStatus_To_api_PodStatus(in, out, s) +} + +func autoConvert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *PodStatus, s conversion.Scope) error { + out.Phase = PodPhase(in.Phase) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + if err := Convert_api_PodCondition_To_v1_PodCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + out.StartTime = in.StartTime + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := Convert_api_ContainerStatus_To_v1_ContainerStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.InitContainerStatuses = nil + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := Convert_api_ContainerStatus_To_v1_ContainerStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ContainerStatuses = nil + } + return nil +} + +func Convert_api_PodStatus_To_v1_PodStatus(in *api.PodStatus, out *PodStatus, s conversion.Scope) error { + return autoConvert_api_PodStatus_To_v1_PodStatus(in, out, s) +} + +func autoConvert_v1_PodStatusResult_To_api_PodStatusResult(in *PodStatusResult, out *api.PodStatusResult, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PodStatus_To_api_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_PodStatusResult_To_v1_PodStatusResult(in *api.PodStatusResult, out *PodStatusResult, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PodStatus_To_v1_PodStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_PodTemplate_To_api_PodTemplate(in *PodTemplate, out *api.PodTemplate, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1_PodTemplate_To_api_PodTemplate(in *PodTemplate, out *api.PodTemplate, s conversion.Scope) error { + return autoConvert_v1_PodTemplate_To_api_PodTemplate(in, out, s) +} + +func autoConvert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *PodTemplate, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_api_PodTemplate_To_v1_PodTemplate(in *api.PodTemplate, out *PodTemplate, s conversion.Scope) error { + return autoConvert_api_PodTemplate_To_v1_PodTemplate(in, out, s) +} + +func autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in *PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.PodTemplate, len(*in)) + for i := range *in { + if err := Convert_v1_PodTemplate_To_api_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_PodTemplateList_To_api_PodTemplateList(in *PodTemplateList, out *api.PodTemplateList, s conversion.Scope) error { + return autoConvert_v1_PodTemplateList_To_api_PodTemplateList(in, out, s) +} + +func autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *PodTemplateList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := Convert_api_PodTemplate_To_v1_PodTemplate(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_PodTemplateList_To_v1_PodTemplateList(in *api.PodTemplateList, out *PodTemplateList, s conversion.Scope) error { + return autoConvert_api_PodTemplateList_To_v1_PodTemplateList(in, out, s) +} + +func autoConvert_v1_PodTemplateSpec_To_api_PodTemplateSpec(in *PodTemplateSpec, out *api.PodTemplateSpec, s conversion.Scope) error { + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_PodSpec_To_api_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func autoConvert_api_PodTemplateSpec_To_v1_PodTemplateSpec(in *api.PodTemplateSpec, out *PodTemplateSpec, s conversion.Scope) error { + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_PodSpec_To_v1_PodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error { + out.UID = in.UID + return nil +} + +func Convert_v1_Preconditions_To_api_Preconditions(in *Preconditions, out *api.Preconditions, s conversion.Scope) error { + return autoConvert_v1_Preconditions_To_api_Preconditions(in, out, s) +} + +func autoConvert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error { + out.UID = in.UID + return nil +} + +func Convert_api_Preconditions_To_v1_Preconditions(in *api.Preconditions, out *Preconditions, s conversion.Scope) error { + return autoConvert_api_Preconditions_To_v1_Preconditions(in, out, s) +} + +func autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error { + if err := Convert_v1_PodSignature_To_api_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.EvictionTime, &out.EvictionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in *PreferAvoidPodsEntry, out *api.PreferAvoidPodsEntry, s conversion.Scope) error { + return autoConvert_v1_PreferAvoidPodsEntry_To_api_PreferAvoidPodsEntry(in, out, s) +} + +func autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *PreferAvoidPodsEntry, s conversion.Scope) error { + if err := Convert_api_PodSignature_To_v1_PodSignature(&in.PodSignature, &out.PodSignature, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.EvictionTime, &out.EvictionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in *api.PreferAvoidPodsEntry, out *PreferAvoidPodsEntry, s conversion.Scope) error { + return autoConvert_api_PreferAvoidPodsEntry_To_v1_PreferAvoidPodsEntry(in, out, s) +} + +func autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_v1_NodeSelectorTerm_To_api_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil { + return err + } + return nil +} + +func Convert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in *PreferredSchedulingTerm, out *api.PreferredSchedulingTerm, s conversion.Scope) error { + return autoConvert_v1_PreferredSchedulingTerm_To_api_PreferredSchedulingTerm(in, out, s) +} + +func autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *PreferredSchedulingTerm, s conversion.Scope) error { + out.Weight = in.Weight + if err := Convert_api_NodeSelectorTerm_To_v1_NodeSelectorTerm(&in.Preference, &out.Preference, s); err != nil { + return err + } + return nil +} + +func Convert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in *api.PreferredSchedulingTerm, out *PreferredSchedulingTerm, s conversion.Scope) error { + return autoConvert_api_PreferredSchedulingTerm_To_v1_PreferredSchedulingTerm(in, out, s) +} + +func autoConvert_v1_Probe_To_api_Probe(in *Probe, out *api.Probe, s conversion.Scope) error { + SetDefaults_Probe(in) + if err := Convert_v1_Handler_To_api_Handler(&in.Handler, &out.Handler, s); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil +} + +func Convert_v1_Probe_To_api_Probe(in *Probe, out *api.Probe, s conversion.Scope) error { + return autoConvert_v1_Probe_To_api_Probe(in, out, s) +} + +func autoConvert_api_Probe_To_v1_Probe(in *api.Probe, out *Probe, s conversion.Scope) error { + if err := Convert_api_Handler_To_v1_Handler(&in.Handler, &out.Handler, s); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil +} + +func Convert_api_Probe_To_v1_Probe(in *api.Probe, out *Probe, s conversion.Scope) error { + return autoConvert_api_Probe_To_v1_Probe(in, out, s) +} + +func autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error { + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil +} + +func Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in *QuobyteVolumeSource, out *api.QuobyteVolumeSource, s conversion.Scope) error { + return autoConvert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(in, out, s) +} + +func autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *QuobyteVolumeSource, s conversion.Scope) error { + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil +} + +func Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in *api.QuobyteVolumeSource, out *QuobyteVolumeSource, s conversion.Scope) error { + return autoConvert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(in, out, s) +} + +func autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error { + SetDefaults_RBDVolumeSource(in) + out.CephMonitors = in.CephMonitors + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(api.LocalObjectReference) + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in *RBDVolumeSource, out *api.RBDVolumeSource, s conversion.Scope) error { + return autoConvert_v1_RBDVolumeSource_To_api_RBDVolumeSource(in, out, s) +} + +func autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error { + out.CephMonitors = in.CephMonitors + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(*in, *out, s); err != nil { + return err + } + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil +} + +func Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in *api.RBDVolumeSource, out *RBDVolumeSource, s conversion.Scope) error { + return autoConvert_api_RBDVolumeSource_To_v1_RBDVolumeSource(in, out, s) +} + +func autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in *RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Range = in.Range + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Data, &out.Data, s); err != nil { + return err + } + return nil +} + +func Convert_v1_RangeAllocation_To_api_RangeAllocation(in *RangeAllocation, out *api.RangeAllocation, s conversion.Scope) error { + return autoConvert_v1_RangeAllocation_To_api_RangeAllocation(in, out, s) +} + +func autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *RangeAllocation, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Range = in.Range + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Data, &out.Data, s); err != nil { + return err + } + return nil +} + +func Convert_api_RangeAllocation_To_v1_RangeAllocation(in *api.RangeAllocation, out *RangeAllocation, s conversion.Scope) error { + return autoConvert_api_RangeAllocation_To_v1_RangeAllocation(in, out, s) +} + +func autoConvert_v1_ReplicationController_To_api_ReplicationController(in *ReplicationController, out *api.ReplicationController, s conversion.Scope) error { + SetDefaults_ReplicationController(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ReplicationController_To_api_ReplicationController(in *ReplicationController, out *api.ReplicationController, s conversion.Scope) error { + return autoConvert_v1_ReplicationController_To_api_ReplicationController(in, out, s) +} + +func autoConvert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *ReplicationController, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_ReplicationController_To_v1_ReplicationController(in *api.ReplicationController, out *ReplicationController, s conversion.Scope) error { + return autoConvert_api_ReplicationController_To_v1_ReplicationController(in, out, s) +} + +func autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ReplicationController, len(*in)) + for i := range *in { + if err := Convert_v1_ReplicationController_To_api_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in *ReplicationControllerList, out *api.ReplicationControllerList, s conversion.Scope) error { + return autoConvert_v1_ReplicationControllerList_To_api_ReplicationControllerList(in, out, s) +} + +func autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *ReplicationControllerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := Convert_api_ReplicationController_To_v1_ReplicationController(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in *api.ReplicationControllerList, out *ReplicationControllerList, s conversion.Scope) error { + return autoConvert_api_ReplicationControllerList_To_v1_ReplicationControllerList(in, out, s) +} + +func autoConvert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *ReplicationControllerSpec, out *api.ReplicationControllerSpec, s conversion.Scope) error { + if err := api.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = in.Selector + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(api.PodTemplateSpec) + if err := Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(*in, *out, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func autoConvert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *api.ReplicationControllerSpec, out *ReplicationControllerSpec, s conversion.Scope) error { + if err := api.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + out.Selector = in.Selector + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(*in, *out, s); err != nil { + return err + } + } else { + out.Template = nil + } + return nil +} + +func autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in *ReplicationControllerStatus, out *api.ReplicationControllerStatus, s conversion.Scope) error { + return autoConvert_v1_ReplicationControllerStatus_To_api_ReplicationControllerStatus(in, out, s) +} + +func autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in *api.ReplicationControllerStatus, out *ReplicationControllerStatus, s conversion.Scope) error { + return autoConvert_api_ReplicationControllerStatus_To_v1_ReplicationControllerStatus(in, out, s) +} + +func autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error { + out.ContainerName = in.ContainerName + out.Resource = in.Resource + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.Divisor, &out.Divisor, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in *ResourceFieldSelector, out *api.ResourceFieldSelector, s conversion.Scope) error { + return autoConvert_v1_ResourceFieldSelector_To_api_ResourceFieldSelector(in, out, s) +} + +func autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *ResourceFieldSelector, s conversion.Scope) error { + out.ContainerName = in.ContainerName + out.Resource = in.Resource + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.Divisor, &out.Divisor, s); err != nil { + return err + } + return nil +} + +func Convert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in *api.ResourceFieldSelector, out *ResourceFieldSelector, s conversion.Scope) error { + return autoConvert_api_ResourceFieldSelector_To_v1_ResourceFieldSelector(in, out, s) +} + +func autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in *ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ResourceQuota_To_api_ResourceQuota(in *ResourceQuota, out *api.ResourceQuota, s conversion.Scope) error { + return autoConvert_v1_ResourceQuota_To_api_ResourceQuota(in, out, s) +} + +func autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *ResourceQuota, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_ResourceQuota_To_v1_ResourceQuota(in *api.ResourceQuota, out *ResourceQuota, s conversion.Scope) error { + return autoConvert_api_ResourceQuota_To_v1_ResourceQuota(in, out, s) +} + +func autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ResourceQuota, len(*in)) + for i := range *in { + if err := Convert_v1_ResourceQuota_To_api_ResourceQuota(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in *ResourceQuotaList, out *api.ResourceQuotaList, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaList_To_api_ResourceQuotaList(in, out, s) +} + +func autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *ResourceQuotaList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ResourceQuota, len(*in)) + for i := range *in { + if err := Convert_api_ResourceQuota_To_v1_ResourceQuota(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in *api.ResourceQuotaList, out *ResourceQuotaList, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaList_To_v1_ResourceQuotaList(in, out, s) +} + +func autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error { + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Hard, &out.Hard, s); err != nil { + return err + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]api.ResourceQuotaScope, len(*in)) + for i := range *in { + (*out)[i] = api.ResourceQuotaScope((*in)[i]) + } + } else { + out.Scopes = nil + } + return nil +} + +func Convert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in *ResourceQuotaSpec, out *api.ResourceQuotaSpec, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaSpec_To_api_ResourceQuotaSpec(in, out, s) +} + +func autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *ResourceQuotaSpec, s conversion.Scope) error { + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Hard = nil + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + for i := range *in { + (*out)[i] = ResourceQuotaScope((*in)[i]) + } + } else { + out.Scopes = nil + } + return nil +} + +func Convert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in *api.ResourceQuotaSpec, out *ResourceQuotaSpec, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaSpec_To_v1_ResourceQuotaSpec(in, out, s) +} + +func autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error { + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Hard, &out.Hard, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Used, &out.Used, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in *ResourceQuotaStatus, out *api.ResourceQuotaStatus, s conversion.Scope) error { + return autoConvert_v1_ResourceQuotaStatus_To_api_ResourceQuotaStatus(in, out, s) +} + +func autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *ResourceQuotaStatus, s conversion.Scope) error { + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Hard = nil + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Used = nil + } + return nil +} + +func Convert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in *api.ResourceQuotaStatus, out *ResourceQuotaStatus, s conversion.Scope) error { + return autoConvert_api_ResourceQuotaStatus_To_v1_ResourceQuotaStatus(in, out, s) +} + +func autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in *ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error { + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Limits, &out.Limits, s); err != nil { + return err + } + if err := Convert_v1_ResourceList_To_api_ResourceList(&in.Requests, &out.Requests, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ResourceRequirements_To_api_ResourceRequirements(in *ResourceRequirements, out *api.ResourceRequirements, s conversion.Scope) error { + return autoConvert_v1_ResourceRequirements_To_api_ResourceRequirements(in, out, s) +} + +func autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *ResourceRequirements, s conversion.Scope) error { + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Limits = nil + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList, len(*in)) + for key, val := range *in { + newVal := new(resource.Quantity) + if err := api.Convert_resource_Quantity_To_resource_Quantity(&val, newVal, s); err != nil { + return err + } + (*out)[ResourceName(key)] = *newVal + } + } else { + out.Requests = nil + } + return nil +} + +func Convert_api_ResourceRequirements_To_v1_ResourceRequirements(in *api.ResourceRequirements, out *ResourceRequirements, s conversion.Scope) error { + return autoConvert_api_ResourceRequirements_To_v1_ResourceRequirements(in, out, s) +} + +func autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in *SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error { + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil +} + +func Convert_v1_SELinuxOptions_To_api_SELinuxOptions(in *SELinuxOptions, out *api.SELinuxOptions, s conversion.Scope) error { + return autoConvert_v1_SELinuxOptions_To_api_SELinuxOptions(in, out, s) +} + +func autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *SELinuxOptions, s conversion.Scope) error { + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil +} + +func Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out *SELinuxOptions, s conversion.Scope) error { + return autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in, out, s) +} + +func autoConvert_v1_Secret_To_api_Secret(in *Secret, out *api.Secret, s conversion.Scope) error { + SetDefaults_Secret(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Data = in.Data + // INFO: in.StringData opted out of conversion generation + out.Type = api.SecretType(in.Type) + return nil +} + +func autoConvert_api_Secret_To_v1_Secret(in *api.Secret, out *Secret, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + out.Data = in.Data + out.Type = SecretType(in.Type) + return nil +} + +func Convert_api_Secret_To_v1_Secret(in *api.Secret, out *Secret, s conversion.Scope) error { + return autoConvert_api_Secret_To_v1_Secret(in, out, s) +} + +func autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in *SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +func Convert_v1_SecretKeySelector_To_api_SecretKeySelector(in *SecretKeySelector, out *api.SecretKeySelector, s conversion.Scope) error { + return autoConvert_v1_SecretKeySelector_To_api_SecretKeySelector(in, out, s) +} + +func autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *SecretKeySelector, s conversion.Scope) error { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +func Convert_api_SecretKeySelector_To_v1_SecretKeySelector(in *api.SecretKeySelector, out *SecretKeySelector, s conversion.Scope) error { + return autoConvert_api_SecretKeySelector_To_v1_SecretKeySelector(in, out, s) +} + +func autoConvert_v1_SecretList_To_api_SecretList(in *SecretList, out *api.SecretList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Secret, len(*in)) + for i := range *in { + if err := Convert_v1_Secret_To_api_Secret(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_SecretList_To_api_SecretList(in *SecretList, out *api.SecretList, s conversion.Scope) error { + return autoConvert_v1_SecretList_To_api_SecretList(in, out, s) +} + +func autoConvert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *SecretList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := Convert_api_Secret_To_v1_Secret(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_SecretList_To_v1_SecretList(in *api.SecretList, out *SecretList, s conversion.Scope) error { + return autoConvert_api_SecretList_To_v1_SecretList(in, out, s) +} + +func autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error { + SetDefaults_SecretVolumeSource(in) + out.SecretName = in.SecretName + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.KeyToPath, len(*in)) + for i := range *in { + if err := Convert_v1_KeyToPath_To_api_KeyToPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in *SecretVolumeSource, out *api.SecretVolumeSource, s conversion.Scope) error { + return autoConvert_v1_SecretVolumeSource_To_api_SecretVolumeSource(in, out, s) +} + +func autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *SecretVolumeSource, s conversion.Scope) error { + out.SecretName = in.SecretName + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := Convert_api_KeyToPath_To_v1_KeyToPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + out.DefaultMode = in.DefaultMode + return nil +} + +func Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in *api.SecretVolumeSource, out *SecretVolumeSource, s conversion.Scope) error { + return autoConvert_api_SecretVolumeSource_To_v1_SecretVolumeSource(in, out, s) +} + +func autoConvert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext, out *api.SecurityContext, s conversion.Scope) error { + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(api.Capabilities) + if err := Convert_v1_Capabilities_To_api_Capabilities(*in, *out, s); err != nil { + return err + } + } else { + out.Capabilities = nil + } + out.Privileged = in.Privileged + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api.SELinuxOptions) + if err := Convert_v1_SELinuxOptions_To_api_SELinuxOptions(*in, *out, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +func Convert_v1_SecurityContext_To_api_SecurityContext(in *SecurityContext, out *api.SecurityContext, s conversion.Scope) error { + return autoConvert_v1_SecurityContext_To_api_SecurityContext(in, out, s) +} + +func autoConvert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *SecurityContext, s conversion.Scope) error { + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(Capabilities) + if err := Convert_api_Capabilities_To_v1_Capabilities(*in, *out, s); err != nil { + return err + } + } else { + out.Capabilities = nil + } + out.Privileged = in.Privileged + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + if err := Convert_api_SELinuxOptions_To_v1_SELinuxOptions(*in, *out, s); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + out.RunAsUser = in.RunAsUser + out.RunAsNonRoot = in.RunAsNonRoot + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +func Convert_api_SecurityContext_To_v1_SecurityContext(in *api.SecurityContext, out *SecurityContext, s conversion.Scope) error { + return autoConvert_api_SecurityContext_To_v1_SecurityContext(in, out, s) +} + +func autoConvert_v1_SerializedReference_To_api_SerializedReference(in *SerializedReference, out *api.SerializedReference, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&in.Reference, &out.Reference, s); err != nil { + return err + } + return nil +} + +func Convert_v1_SerializedReference_To_api_SerializedReference(in *SerializedReference, out *api.SerializedReference, s conversion.Scope) error { + return autoConvert_v1_SerializedReference_To_api_SerializedReference(in, out, s) +} + +func autoConvert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *SerializedReference, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&in.Reference, &out.Reference, s); err != nil { + return err + } + return nil +} + +func Convert_api_SerializedReference_To_v1_SerializedReference(in *api.SerializedReference, out *SerializedReference, s conversion.Scope) error { + return autoConvert_api_SerializedReference_To_v1_SerializedReference(in, out, s) +} + +func autoConvert_v1_Service_To_api_Service(in *Service, out *api.Service, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_v1_ServiceSpec_To_api_ServiceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ServiceStatus_To_api_ServiceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Service_To_api_Service(in *Service, out *api.Service, s conversion.Scope) error { + return autoConvert_v1_Service_To_api_Service(in, out, s) +} + +func autoConvert_api_Service_To_v1_Service(in *api.Service, out *Service, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if err := Convert_api_ServiceSpec_To_v1_ServiceSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_api_ServiceStatus_To_v1_ServiceStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_api_Service_To_v1_Service(in *api.Service, out *Service, s conversion.Scope) error { + return autoConvert_api_Service_To_v1_Service(in, out, s) +} + +func autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in *ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_v1_ObjectMeta_To_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]api.ObjectReference, len(*in)) + for i := range *in { + if err := Convert_v1_ObjectReference_To_api_ObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Secrets = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]api.LocalObjectReference, len(*in)) + for i := range *in { + if err := Convert_v1_LocalObjectReference_To_api_LocalObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ImagePullSecrets = nil + } + return nil +} + +func Convert_v1_ServiceAccount_To_api_ServiceAccount(in *ServiceAccount, out *api.ServiceAccount, s conversion.Scope) error { + return autoConvert_v1_ServiceAccount_To_api_ServiceAccount(in, out, s) +} + +func autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *ServiceAccount, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := Convert_api_ObjectMeta_To_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, s); err != nil { + return err + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + for i := range *in { + if err := Convert_api_ObjectReference_To_v1_ObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Secrets = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.ImagePullSecrets = nil + } + return nil +} + +func Convert_api_ServiceAccount_To_v1_ServiceAccount(in *api.ServiceAccount, out *ServiceAccount, s conversion.Scope) error { + return autoConvert_api_ServiceAccount_To_v1_ServiceAccount(in, out, s) +} + +func autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in *ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.ServiceAccount, len(*in)) + for i := range *in { + if err := Convert_v1_ServiceAccount_To_api_ServiceAccount(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ServiceAccountList_To_api_ServiceAccountList(in *ServiceAccountList, out *api.ServiceAccountList, s conversion.Scope) error { + return autoConvert_v1_ServiceAccountList_To_api_ServiceAccountList(in, out, s) +} + +func autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *ServiceAccountList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + if err := Convert_api_ServiceAccount_To_v1_ServiceAccount(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ServiceAccountList_To_v1_ServiceAccountList(in *api.ServiceAccountList, out *ServiceAccountList, s conversion.Scope) error { + return autoConvert_api_ServiceAccountList_To_v1_ServiceAccountList(in, out, s) +} + +func autoConvert_v1_ServiceList_To_api_ServiceList(in *ServiceList, out *api.ServiceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]api.Service, len(*in)) + for i := range *in { + if err := Convert_v1_Service_To_api_Service(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_ServiceList_To_api_ServiceList(in *ServiceList, out *api.ServiceList, s conversion.Scope) error { + return autoConvert_v1_ServiceList_To_api_ServiceList(in, out, s) +} + +func autoConvert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *ServiceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := Convert_api_Service_To_v1_Service(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_api_ServiceList_To_v1_ServiceList(in *api.ServiceList, out *ServiceList, s conversion.Scope) error { + return autoConvert_api_ServiceList_To_v1_ServiceList(in, out, s) +} + +func autoConvert_v1_ServicePort_To_api_ServicePort(in *ServicePort, out *api.ServicePort, s conversion.Scope) error { + out.Name = in.Name + out.Protocol = api.Protocol(in.Protocol) + out.Port = in.Port + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.TargetPort, &out.TargetPort, s); err != nil { + return err + } + out.NodePort = in.NodePort + return nil +} + +func Convert_v1_ServicePort_To_api_ServicePort(in *ServicePort, out *api.ServicePort, s conversion.Scope) error { + return autoConvert_v1_ServicePort_To_api_ServicePort(in, out, s) +} + +func autoConvert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *ServicePort, s conversion.Scope) error { + out.Name = in.Name + out.Protocol = Protocol(in.Protocol) + out.Port = in.Port + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.TargetPort, &out.TargetPort, s); err != nil { + return err + } + out.NodePort = in.NodePort + return nil +} + +func Convert_api_ServicePort_To_v1_ServicePort(in *api.ServicePort, out *ServicePort, s conversion.Scope) error { + return autoConvert_api_ServicePort_To_v1_ServicePort(in, out, s) +} + +func autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in *ServiceProxyOptions, out *api.ServiceProxyOptions, s conversion.Scope) error { + return autoConvert_v1_ServiceProxyOptions_To_api_ServiceProxyOptions(in, out, s) +} + +func autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *ServiceProxyOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +func Convert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in *api.ServiceProxyOptions, out *ServiceProxyOptions, s conversion.Scope) error { + return autoConvert_api_ServiceProxyOptions_To_v1_ServiceProxyOptions(in, out, s) +} + +func autoConvert_v1_ServiceSpec_To_api_ServiceSpec(in *ServiceSpec, out *api.ServiceSpec, s conversion.Scope) error { + SetDefaults_ServiceSpec(in) + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]api.ServicePort, len(*in)) + for i := range *in { + if err := Convert_v1_ServicePort_To_api_ServicePort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + out.Selector = in.Selector + out.ClusterIP = in.ClusterIP + out.Type = api.ServiceType(in.Type) + out.ExternalIPs = in.ExternalIPs + // INFO: in.DeprecatedPublicIPs opted out of conversion generation + out.SessionAffinity = api.ServiceAffinity(in.SessionAffinity) + out.LoadBalancerIP = in.LoadBalancerIP + out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges + out.ExternalName = in.ExternalName + return nil +} + +func autoConvert_api_ServiceSpec_To_v1_ServiceSpec(in *api.ServiceSpec, out *ServiceSpec, s conversion.Scope) error { + out.Type = ServiceType(in.Type) + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + for i := range *in { + if err := Convert_api_ServicePort_To_v1_ServicePort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + out.Selector = in.Selector + out.ClusterIP = in.ClusterIP + out.ExternalName = in.ExternalName + out.ExternalIPs = in.ExternalIPs + out.LoadBalancerIP = in.LoadBalancerIP + out.SessionAffinity = ServiceAffinity(in.SessionAffinity) + out.LoadBalancerSourceRanges = in.LoadBalancerSourceRanges + return nil +} + +func autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in *ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error { + if err := Convert_v1_LoadBalancerStatus_To_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil { + return err + } + return nil +} + +func Convert_v1_ServiceStatus_To_api_ServiceStatus(in *ServiceStatus, out *api.ServiceStatus, s conversion.Scope) error { + return autoConvert_v1_ServiceStatus_To_api_ServiceStatus(in, out, s) +} + +func autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *ServiceStatus, s conversion.Scope) error { + if err := Convert_api_LoadBalancerStatus_To_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, s); err != nil { + return err + } + return nil +} + +func Convert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *ServiceStatus, s conversion.Scope) error { + return autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in, out, s) +} + +func autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in *TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error { + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.Port, &out.Port, s); err != nil { + return err + } + return nil +} + +func Convert_v1_TCPSocketAction_To_api_TCPSocketAction(in *TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error { + return autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in, out, s) +} + +func autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *TCPSocketAction, s conversion.Scope) error { + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.Port, &out.Port, s); err != nil { + return err + } + return nil +} + +func Convert_api_TCPSocketAction_To_v1_TCPSocketAction(in *api.TCPSocketAction, out *TCPSocketAction, s conversion.Scope) error { + return autoConvert_api_TCPSocketAction_To_v1_TCPSocketAction(in, out, s) +} + +func autoConvert_v1_Taint_To_api_Taint(in *Taint, out *api.Taint, s conversion.Scope) error { + out.Key = in.Key + out.Value = in.Value + out.Effect = api.TaintEffect(in.Effect) + return nil +} + +func Convert_v1_Taint_To_api_Taint(in *Taint, out *api.Taint, s conversion.Scope) error { + return autoConvert_v1_Taint_To_api_Taint(in, out, s) +} + +func autoConvert_api_Taint_To_v1_Taint(in *api.Taint, out *Taint, s conversion.Scope) error { + out.Key = in.Key + out.Value = in.Value + out.Effect = TaintEffect(in.Effect) + return nil +} + +func Convert_api_Taint_To_v1_Taint(in *api.Taint, out *Taint, s conversion.Scope) error { + return autoConvert_api_Taint_To_v1_Taint(in, out, s) +} + +func autoConvert_v1_Toleration_To_api_Toleration(in *Toleration, out *api.Toleration, s conversion.Scope) error { + out.Key = in.Key + out.Operator = api.TolerationOperator(in.Operator) + out.Value = in.Value + out.Effect = api.TaintEffect(in.Effect) + return nil +} + +func Convert_v1_Toleration_To_api_Toleration(in *Toleration, out *api.Toleration, s conversion.Scope) error { + return autoConvert_v1_Toleration_To_api_Toleration(in, out, s) +} + +func autoConvert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *Toleration, s conversion.Scope) error { + out.Key = in.Key + out.Operator = TolerationOperator(in.Operator) + out.Value = in.Value + out.Effect = TaintEffect(in.Effect) + return nil +} + +func Convert_api_Toleration_To_v1_Toleration(in *api.Toleration, out *Toleration, s conversion.Scope) error { + return autoConvert_api_Toleration_To_v1_Toleration(in, out, s) +} + +func autoConvert_v1_Volume_To_api_Volume(in *Volume, out *api.Volume, s conversion.Scope) error { + SetDefaults_Volume(in) + out.Name = in.Name + if err := Convert_v1_VolumeSource_To_api_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Volume_To_api_Volume(in *Volume, out *api.Volume, s conversion.Scope) error { + return autoConvert_v1_Volume_To_api_Volume(in, out, s) +} + +func autoConvert_api_Volume_To_v1_Volume(in *api.Volume, out *Volume, s conversion.Scope) error { + out.Name = in.Name + if err := Convert_api_VolumeSource_To_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, s); err != nil { + return err + } + return nil +} + +func Convert_api_Volume_To_v1_Volume(in *api.Volume, out *Volume, s conversion.Scope) error { + return autoConvert_api_Volume_To_v1_Volume(in, out, s) +} + +func autoConvert_v1_VolumeMount_To_api_VolumeMount(in *VolumeMount, out *api.VolumeMount, s conversion.Scope) error { + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil +} + +func Convert_v1_VolumeMount_To_api_VolumeMount(in *VolumeMount, out *api.VolumeMount, s conversion.Scope) error { + return autoConvert_v1_VolumeMount_To_api_VolumeMount(in, out, s) +} + +func autoConvert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *VolumeMount, s conversion.Scope) error { + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil +} + +func Convert_api_VolumeMount_To_v1_VolumeMount(in *api.VolumeMount, out *VolumeMount, s conversion.Scope) error { + return autoConvert_api_VolumeMount_To_v1_VolumeMount(in, out, s) +} + +func autoConvert_v1_VolumeSource_To_api_VolumeSource(in *VolumeSource, out *api.VolumeSource, s conversion.Scope) error { + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(api.HostPathVolumeSource) + if err := Convert_v1_HostPathVolumeSource_To_api_HostPathVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.HostPath = nil + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(api.EmptyDirVolumeSource) + if err := Convert_v1_EmptyDirVolumeSource_To_api_EmptyDirVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.EmptyDir = nil + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(api.GCEPersistentDiskVolumeSource) + if err := Convert_v1_GCEPersistentDiskVolumeSource_To_api_GCEPersistentDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(api.AWSElasticBlockStoreVolumeSource) + if err := Convert_v1_AWSElasticBlockStoreVolumeSource_To_api_AWSElasticBlockStoreVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AWSElasticBlockStore = nil + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(api.GitRepoVolumeSource) + if err := Convert_v1_GitRepoVolumeSource_To_api_GitRepoVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GitRepo = nil + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(api.SecretVolumeSource) + if err := Convert_v1_SecretVolumeSource_To_api_SecretVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Secret = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(api.NFSVolumeSource) + if err := Convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.NFS = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(api.ISCSIVolumeSource) + if err := Convert_v1_ISCSIVolumeSource_To_api_ISCSIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ISCSI = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(api.GlusterfsVolumeSource) + if err := Convert_v1_GlusterfsVolumeSource_To_api_GlusterfsVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Glusterfs = nil + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(api.PersistentVolumeClaimVolumeSource) + if err := Convert_v1_PersistentVolumeClaimVolumeSource_To_api_PersistentVolumeClaimVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.PersistentVolumeClaim = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(api.RBDVolumeSource) + if err := Convert_v1_RBDVolumeSource_To_api_RBDVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(api.FlexVolumeSource) + if err := Convert_v1_FlexVolumeSource_To_api_FlexVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(api.CinderVolumeSource) + if err := Convert_v1_CinderVolumeSource_To_api_CinderVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(api.CephFSVolumeSource) + if err := Convert_v1_CephFSVolumeSource_To_api_CephFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(api.FlockerVolumeSource) + if err := Convert_v1_FlockerVolumeSource_To_api_FlockerVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Flocker = nil + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(api.DownwardAPIVolumeSource) + if err := Convert_v1_DownwardAPIVolumeSource_To_api_DownwardAPIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.DownwardAPI = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(api.FCVolumeSource) + if err := Convert_v1_FCVolumeSource_To_api_FCVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FC = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(api.AzureFileVolumeSource) + if err := Convert_v1_AzureFileVolumeSource_To_api_AzureFileVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureFile = nil + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(api.ConfigMapVolumeSource) + if err := Convert_v1_ConfigMapVolumeSource_To_api_ConfigMapVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ConfigMap = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(api.VsphereVirtualDiskVolumeSource) + if err := Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.VsphereVolume = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(api.QuobyteVolumeSource) + if err := Convert_v1_QuobyteVolumeSource_To_api_QuobyteVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Quobyte = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(api.AzureDiskVolumeSource) + if err := Convert_v1_AzureDiskVolumeSource_To_api_AzureDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil +} + +func Convert_v1_VolumeSource_To_api_VolumeSource(in *VolumeSource, out *api.VolumeSource, s conversion.Scope) error { + return autoConvert_v1_VolumeSource_To_api_VolumeSource(in, out, s) +} + +func autoConvert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *VolumeSource, s conversion.Scope) error { + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + if err := Convert_api_HostPathVolumeSource_To_v1_HostPathVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.HostPath = nil + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(EmptyDirVolumeSource) + if err := Convert_api_EmptyDirVolumeSource_To_v1_EmptyDirVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.EmptyDir = nil + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + if err := Convert_api_GCEPersistentDiskVolumeSource_To_v1_GCEPersistentDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + if err := Convert_api_AWSElasticBlockStoreVolumeSource_To_v1_AWSElasticBlockStoreVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AWSElasticBlockStore = nil + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(GitRepoVolumeSource) + if err := Convert_api_GitRepoVolumeSource_To_v1_GitRepoVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.GitRepo = nil + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretVolumeSource) + if err := Convert_api_SecretVolumeSource_To_v1_SecretVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Secret = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + if err := Convert_api_NFSVolumeSource_To_v1_NFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.NFS = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + if err := Convert_api_ISCSIVolumeSource_To_v1_ISCSIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ISCSI = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + if err := Convert_api_GlusterfsVolumeSource_To_v1_GlusterfsVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Glusterfs = nil + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(PersistentVolumeClaimVolumeSource) + if err := Convert_api_PersistentVolumeClaimVolumeSource_To_v1_PersistentVolumeClaimVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.PersistentVolumeClaim = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := Convert_api_RBDVolumeSource_To_v1_RBDVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + if err := Convert_api_QuobyteVolumeSource_To_v1_QuobyteVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Quobyte = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := Convert_api_FlexVolumeSource_To_v1_FlexVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + if err := Convert_api_CinderVolumeSource_To_v1_CinderVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := Convert_api_CephFSVolumeSource_To_v1_CephFSVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + if err := Convert_api_FlockerVolumeSource_To_v1_FlockerVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Flocker = nil + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIVolumeSource) + if err := Convert_api_DownwardAPIVolumeSource_To_v1_DownwardAPIVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.DownwardAPI = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := Convert_api_FCVolumeSource_To_v1_FCVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.FC = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + if err := Convert_api_AzureFileVolumeSource_To_v1_AzureFileVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureFile = nil + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapVolumeSource) + if err := Convert_api_ConfigMapVolumeSource_To_v1_ConfigMapVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.ConfigMap = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + if err := Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.VsphereVolume = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := Convert_api_AzureDiskVolumeSource_To_v1_AzureDiskVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil +} + +func Convert_api_VolumeSource_To_v1_VolumeSource(in *api.VolumeSource, out *VolumeSource, s conversion.Scope) error { + return autoConvert_api_VolumeSource_To_v1_VolumeSource(in, out, s) +} + +func autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + out.VolumePath = in.VolumePath + out.FSType = in.FSType + return nil +} + +func Convert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in *VsphereVirtualDiskVolumeSource, out *api.VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + return autoConvert_v1_VsphereVirtualDiskVolumeSource_To_api_VsphereVirtualDiskVolumeSource(in, out, s) +} + +func autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + out.VolumePath = in.VolumePath + out.FSType = in.FSType + return nil +} + +func Convert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in *api.VsphereVirtualDiskVolumeSource, out *VsphereVirtualDiskVolumeSource, s conversion.Scope) error { + return autoConvert_api_VsphereVirtualDiskVolumeSource_To_v1_VsphereVirtualDiskVolumeSource(in, out, s) +} + +func autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error { + out.Weight = int(in.Weight) + if err := Convert_v1_PodAffinityTerm_To_api_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil { + return err + } + return nil +} + +func Convert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in *WeightedPodAffinityTerm, out *api.WeightedPodAffinityTerm, s conversion.Scope) error { + return autoConvert_v1_WeightedPodAffinityTerm_To_api_WeightedPodAffinityTerm(in, out, s) +} + +func autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *WeightedPodAffinityTerm, s conversion.Scope) error { + out.Weight = int32(in.Weight) + if err := Convert_api_PodAffinityTerm_To_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, s); err != nil { + return err + } + return nil +} + +func Convert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in *api.WeightedPodAffinityTerm, out *WeightedPodAffinityTerm, s conversion.Scope) error { + return autoConvert_api_WeightedPodAffinityTerm_To_v1_WeightedPodAffinityTerm(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..d25a36fe1f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/v1/zz_generated.deepcopy.go @@ -0,0 +1,3703 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + types "k8s.io/client-go/1.5/pkg/types" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AWSElasticBlockStoreVolumeSource, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Affinity, InType: reflect.TypeOf(&Affinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AttachedVolume, InType: reflect.TypeOf(&AttachedVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AvoidPods, InType: reflect.TypeOf(&AvoidPods{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AzureDiskVolumeSource, InType: reflect.TypeOf(&AzureDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_AzureFileVolumeSource, InType: reflect.TypeOf(&AzureFileVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Binding, InType: reflect.TypeOf(&Binding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Capabilities, InType: reflect.TypeOf(&Capabilities{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CephFSVolumeSource, InType: reflect.TypeOf(&CephFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CinderVolumeSource, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentCondition, InType: reflect.TypeOf(&ComponentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentStatus, InType: reflect.TypeOf(&ComponentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ComponentStatusList, InType: reflect.TypeOf(&ComponentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMap, InType: reflect.TypeOf(&ConfigMap{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapKeySelector, InType: reflect.TypeOf(&ConfigMapKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapList, InType: reflect.TypeOf(&ConfigMapList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ConfigMapVolumeSource, InType: reflect.TypeOf(&ConfigMapVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Container, InType: reflect.TypeOf(&Container{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerImage, InType: reflect.TypeOf(&ContainerImage{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerPort, InType: reflect.TypeOf(&ContainerPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerState, InType: reflect.TypeOf(&ContainerState{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateRunning, InType: reflect.TypeOf(&ContainerStateRunning{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateTerminated, InType: reflect.TypeOf(&ContainerStateTerminated{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStateWaiting, InType: reflect.TypeOf(&ContainerStateWaiting{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ContainerStatus, InType: reflect.TypeOf(&ContainerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DaemonEndpoint, InType: reflect.TypeOf(&DaemonEndpoint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DownwardAPIVolumeFile, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_DownwardAPIVolumeSource, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EmptyDirVolumeSource, InType: reflect.TypeOf(&EmptyDirVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointAddress, InType: reflect.TypeOf(&EndpointAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointPort, InType: reflect.TypeOf(&EndpointPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointSubset, InType: reflect.TypeOf(&EndpointSubset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Endpoints, InType: reflect.TypeOf(&Endpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EndpointsList, InType: reflect.TypeOf(&EndpointsList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EnvVar, InType: reflect.TypeOf(&EnvVar{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EnvVarSource, InType: reflect.TypeOf(&EnvVarSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Event, InType: reflect.TypeOf(&Event{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EventList, InType: reflect.TypeOf(&EventList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_EventSource, InType: reflect.TypeOf(&EventSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ExecAction, InType: reflect.TypeOf(&ExecAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ExportOptions, InType: reflect.TypeOf(&ExportOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FCVolumeSource, InType: reflect.TypeOf(&FCVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FlexVolumeSource, InType: reflect.TypeOf(&FlexVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_FlockerVolumeSource, InType: reflect.TypeOf(&FlockerVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GCEPersistentDiskVolumeSource, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GitRepoVolumeSource, InType: reflect.TypeOf(&GitRepoVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_GlusterfsVolumeSource, InType: reflect.TypeOf(&GlusterfsVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HTTPGetAction, InType: reflect.TypeOf(&HTTPGetAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HTTPHeader, InType: reflect.TypeOf(&HTTPHeader{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Handler, InType: reflect.TypeOf(&Handler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HostPathVolumeSource, InType: reflect.TypeOf(&HostPathVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ISCSIVolumeSource, InType: reflect.TypeOf(&ISCSIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_KeyToPath, InType: reflect.TypeOf(&KeyToPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Lifecycle, InType: reflect.TypeOf(&Lifecycle{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRange, InType: reflect.TypeOf(&LimitRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeItem, InType: reflect.TypeOf(&LimitRangeItem{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeList, InType: reflect.TypeOf(&LimitRangeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LimitRangeSpec, InType: reflect.TypeOf(&LimitRangeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_List, InType: reflect.TypeOf(&List{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LoadBalancerIngress, InType: reflect.TypeOf(&LoadBalancerIngress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LoadBalancerStatus, InType: reflect.TypeOf(&LoadBalancerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LocalObjectReference, InType: reflect.TypeOf(&LocalObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NFSVolumeSource, InType: reflect.TypeOf(&NFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Namespace, InType: reflect.TypeOf(&Namespace{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceList, InType: reflect.TypeOf(&NamespaceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceSpec, InType: reflect.TypeOf(&NamespaceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NamespaceStatus, InType: reflect.TypeOf(&NamespaceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Node, InType: reflect.TypeOf(&Node{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeAddress, InType: reflect.TypeOf(&NodeAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeAffinity, InType: reflect.TypeOf(&NodeAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeCondition, InType: reflect.TypeOf(&NodeCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeDaemonEndpoints, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeList, InType: reflect.TypeOf(&NodeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeProxyOptions, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelector, InType: reflect.TypeOf(&NodeSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorRequirement, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorTerm, InType: reflect.TypeOf(&NodeSelectorTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSpec, InType: reflect.TypeOf(&NodeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeStatus, InType: reflect.TypeOf(&NodeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSystemInfo, InType: reflect.TypeOf(&NodeSystemInfo{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectFieldSelector, InType: reflect.TypeOf(&ObjectFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ObjectReference, InType: reflect.TypeOf(&ObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_OwnerReference, InType: reflect.TypeOf(&OwnerReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolume, InType: reflect.TypeOf(&PersistentVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaim, InType: reflect.TypeOf(&PersistentVolumeClaim{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimList, InType: reflect.TypeOf(&PersistentVolumeClaimList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimSpec, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimStatus, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeClaimVolumeSource, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeList, InType: reflect.TypeOf(&PersistentVolumeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeSource, InType: reflect.TypeOf(&PersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeSpec, InType: reflect.TypeOf(&PersistentVolumeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PersistentVolumeStatus, InType: reflect.TypeOf(&PersistentVolumeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Pod, InType: reflect.TypeOf(&Pod{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAffinity, InType: reflect.TypeOf(&PodAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAffinityTerm, InType: reflect.TypeOf(&PodAffinityTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAntiAffinity, InType: reflect.TypeOf(&PodAntiAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodAttachOptions, InType: reflect.TypeOf(&PodAttachOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodCondition, InType: reflect.TypeOf(&PodCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodExecOptions, InType: reflect.TypeOf(&PodExecOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodList, InType: reflect.TypeOf(&PodList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodLogOptions, InType: reflect.TypeOf(&PodLogOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodProxyOptions, InType: reflect.TypeOf(&PodProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSecurityContext, InType: reflect.TypeOf(&PodSecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSignature, InType: reflect.TypeOf(&PodSignature{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodSpec, InType: reflect.TypeOf(&PodSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodStatus, InType: reflect.TypeOf(&PodStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodStatusResult, InType: reflect.TypeOf(&PodStatusResult{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplate, InType: reflect.TypeOf(&PodTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplateList, InType: reflect.TypeOf(&PodTemplateList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PodTemplateSpec, InType: reflect.TypeOf(&PodTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PreferAvoidPodsEntry, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_PreferredSchedulingTerm, InType: reflect.TypeOf(&PreferredSchedulingTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Probe, InType: reflect.TypeOf(&Probe{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_QuobyteVolumeSource, InType: reflect.TypeOf(&QuobyteVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_RBDVolumeSource, InType: reflect.TypeOf(&RBDVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_RangeAllocation, InType: reflect.TypeOf(&RangeAllocation{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationController, InType: reflect.TypeOf(&ReplicationController{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerList, InType: reflect.TypeOf(&ReplicationControllerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerSpec, InType: reflect.TypeOf(&ReplicationControllerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ReplicationControllerStatus, InType: reflect.TypeOf(&ReplicationControllerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceFieldSelector, InType: reflect.TypeOf(&ResourceFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuota, InType: reflect.TypeOf(&ResourceQuota{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaList, InType: reflect.TypeOf(&ResourceQuotaList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaSpec, InType: reflect.TypeOf(&ResourceQuotaSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceQuotaStatus, InType: reflect.TypeOf(&ResourceQuotaStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ResourceRequirements, InType: reflect.TypeOf(&ResourceRequirements{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SELinuxOptions, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Secret, InType: reflect.TypeOf(&Secret{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretKeySelector, InType: reflect.TypeOf(&SecretKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretList, InType: reflect.TypeOf(&SecretList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecretVolumeSource, InType: reflect.TypeOf(&SecretVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SecurityContext, InType: reflect.TypeOf(&SecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_SerializedReference, InType: reflect.TypeOf(&SerializedReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Service, InType: reflect.TypeOf(&Service{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceAccount, InType: reflect.TypeOf(&ServiceAccount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceAccountList, InType: reflect.TypeOf(&ServiceAccountList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceList, InType: reflect.TypeOf(&ServiceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServicePort, InType: reflect.TypeOf(&ServicePort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceProxyOptions, InType: reflect.TypeOf(&ServiceProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceSpec, InType: reflect.TypeOf(&ServiceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceStatus, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TCPSocketAction, InType: reflect.TypeOf(&TCPSocketAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Taint, InType: reflect.TypeOf(&Taint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Toleration, InType: reflect.TypeOf(&Toleration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Volume, InType: reflect.TypeOf(&Volume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VolumeMount, InType: reflect.TypeOf(&VolumeMount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VolumeSource, InType: reflect.TypeOf(&VolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_VsphereVirtualDiskVolumeSource, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_WeightedPodAffinityTerm, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})}, + ) +} + +func DeepCopy_v1_AWSElasticBlockStoreVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AWSElasticBlockStoreVolumeSource) + out := out.(*AWSElasticBlockStoreVolumeSource) + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_Affinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Affinity) + out := out.(*Affinity) + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(NodeAffinity) + if err := DeepCopy_v1_NodeAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.NodeAffinity = nil + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(PodAffinity) + if err := DeepCopy_v1_PodAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.PodAffinity = nil + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(PodAntiAffinity) + if err := DeepCopy_v1_PodAntiAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.PodAntiAffinity = nil + } + return nil + } +} + +func DeepCopy_v1_AttachedVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AttachedVolume) + out := out.(*AttachedVolume) + out.Name = in.Name + out.DevicePath = in.DevicePath + return nil + } +} + +func DeepCopy_v1_AvoidPods(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AvoidPods) + out := out.(*AvoidPods) + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferAvoidPods = nil + } + return nil + } +} + +func DeepCopy_v1_AzureDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureDiskVolumeSource) + out := out.(*AzureDiskVolumeSource) + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(AzureDataDiskCachingMode) + **out = **in + } else { + out.CachingMode = nil + } + if in.FSType != nil { + in, out := &in.FSType, &out.FSType + *out = new(string) + **out = **in + } else { + out.FSType = nil + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } else { + out.ReadOnly = nil + } + return nil + } +} + +func DeepCopy_v1_AzureFileVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureFileVolumeSource) + out := out.(*AzureFileVolumeSource) + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_Binding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Binding) + out := out.(*Binding) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Target = in.Target + return nil + } +} + +func DeepCopy_v1_Capabilities(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Capabilities) + out := out.(*Capabilities) + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Add = nil + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Drop = nil + } + return nil + } +} + +func DeepCopy_v1_CephFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CephFSVolumeSource) + out := out.(*CephFSVolumeSource) + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Monitors = nil + } + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_CinderVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CinderVolumeSource) + out := out.(*CinderVolumeSource) + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_ComponentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentCondition) + out := out.(*ComponentCondition) + out.Type = in.Type + out.Status = in.Status + out.Message = in.Message + out.Error = in.Error + return nil + } +} + +func DeepCopy_v1_ComponentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatus) + out := out.(*ComponentStatus) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Conditions = nil + } + return nil + } +} + +func DeepCopy_v1_ComponentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatusList) + out := out.(*ComponentStatusList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ComponentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ComponentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ConfigMap(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMap) + out := out.(*ConfigMap) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_v1_ConfigMapKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapKeySelector) + out := out.(*ConfigMapKeySelector) + out.LocalObjectReference = in.LocalObjectReference + out.Key = in.Key + return nil + } +} + +func DeepCopy_v1_ConfigMapList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapList) + out := out.(*ConfigMapList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigMap, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ConfigMap(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ConfigMapVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapVolumeSource) + out := out.(*ConfigMapVolumeSource) + out.LocalObjectReference = in.LocalObjectReference + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_v1_Container(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Container) + out := out.(*Container) + out.Name = in.Name + out.Image = in.Image + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Args = nil + } + out.WorkingDir = in.WorkingDir + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Env = nil + } + if err := DeepCopy_v1_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumeMounts = nil + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(Probe) + if err := DeepCopy_v1_Probe(*in, *out, c); err != nil { + return err + } + } else { + out.LivenessProbe = nil + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(Probe) + if err := DeepCopy_v1_Probe(*in, *out, c); err != nil { + return err + } + } else { + out.ReadinessProbe = nil + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(Lifecycle) + if err := DeepCopy_v1_Lifecycle(*in, *out, c); err != nil { + return err + } + } else { + out.Lifecycle = nil + } + out.TerminationMessagePath = in.TerminationMessagePath + out.ImagePullPolicy = in.ImagePullPolicy + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(SecurityContext) + if err := DeepCopy_v1_SecurityContext(*in, *out, c); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil + } +} + +func DeepCopy_v1_ContainerImage(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerImage) + out := out.(*ContainerImage) + if in.Names != nil { + in, out := &in.Names, &out.Names + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Names = nil + } + out.SizeBytes = in.SizeBytes + return nil + } +} + +func DeepCopy_v1_ContainerPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerPort) + out := out.(*ContainerPort) + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = in.Protocol + out.HostIP = in.HostIP + return nil + } +} + +func DeepCopy_v1_ContainerState(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerState) + out := out.(*ContainerState) + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(ContainerStateWaiting) + **out = **in + } else { + out.Waiting = nil + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(ContainerStateRunning) + if err := DeepCopy_v1_ContainerStateRunning(*in, *out, c); err != nil { + return err + } + } else { + out.Running = nil + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(ContainerStateTerminated) + if err := DeepCopy_v1_ContainerStateTerminated(*in, *out, c); err != nil { + return err + } + } else { + out.Terminated = nil + } + return nil + } +} + +func DeepCopy_v1_ContainerStateRunning(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateRunning) + out := out.(*ContainerStateRunning) + out.StartedAt = in.StartedAt.DeepCopy() + return nil + } +} + +func DeepCopy_v1_ContainerStateTerminated(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateTerminated) + out := out.(*ContainerStateTerminated) + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() + out.ContainerID = in.ContainerID + return nil + } +} + +func DeepCopy_v1_ContainerStateWaiting(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateWaiting) + out := out.(*ContainerStateWaiting) + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1_ContainerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStatus) + out := out.(*ContainerStatus) + out.Name = in.Name + if err := DeepCopy_v1_ContainerState(&in.State, &out.State, c); err != nil { + return err + } + if err := DeepCopy_v1_ContainerState(&in.LastTerminationState, &out.LastTerminationState, c); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil + } +} + +func DeepCopy_v1_DaemonEndpoint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonEndpoint) + out := out.(*DaemonEndpoint) + out.Port = in.Port + return nil + } +} + +func DeepCopy_v1_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeleteOptions) + out := out.(*DeleteOptions) + out.TypeMeta = in.TypeMeta + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.GracePeriodSeconds = nil + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(Preconditions) + if err := DeepCopy_v1_Preconditions(*in, *out, c); err != nil { + return err + } + } else { + out.Preconditions = nil + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + *out = new(bool) + **out = **in + } else { + out.OrphanDependents = nil + } + return nil + } +} + +func DeepCopy_v1_DownwardAPIVolumeFile(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeFile) + out := out.(*DownwardAPIVolumeFile) + out.Path = in.Path + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_v1_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } else { + out.Mode = nil + } + return nil + } +} + +func DeepCopy_v1_DownwardAPIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeSource) + out := out.(*DownwardAPIVolumeSource) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_v1_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_v1_EmptyDirVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EmptyDirVolumeSource) + out := out.(*EmptyDirVolumeSource) + out.Medium = in.Medium + return nil + } +} + +func DeepCopy_v1_EndpointAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointAddress) + out := out.(*EndpointAddress) + out.IP = in.IP + out.Hostname = in.Hostname + if in.NodeName != nil { + in, out := &in.NodeName, &out.NodeName + *out = new(string) + **out = **in + } else { + out.NodeName = nil + } + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(ObjectReference) + **out = **in + } else { + out.TargetRef = nil + } + return nil + } +} + +func DeepCopy_v1_EndpointPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointPort) + out := out.(*EndpointPort) + out.Name = in.Name + out.Port = in.Port + out.Protocol = in.Protocol + return nil + } +} + +func DeepCopy_v1_EndpointSubset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointSubset) + out := out.(*EndpointSubset) + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.NotReadyAddresses = nil + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + return nil + } +} + +func DeepCopy_v1_Endpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Endpoints) + out := out.(*Endpoints) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + if err := DeepCopy_v1_EndpointSubset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Subsets = nil + } + return nil + } +} + +func DeepCopy_v1_EndpointsList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointsList) + out := out.(*EndpointsList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Endpoints, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Endpoints(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_EnvVar(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVar) + out := out.(*EnvVar) + out.Name = in.Name + out.Value = in.Value + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(EnvVarSource) + if err := DeepCopy_v1_EnvVarSource(*in, *out, c); err != nil { + return err + } + } else { + out.ValueFrom = nil + } + return nil + } +} + +func DeepCopy_v1_EnvVarSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVarSource) + out := out.(*EnvVarSource) + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_v1_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(ConfigMapKeySelector) + **out = **in + } else { + out.ConfigMapKeyRef = nil + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(SecretKeySelector) + **out = **in + } else { + out.SecretKeyRef = nil + } + return nil + } +} + +func DeepCopy_v1_Event(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Event) + out := out.(*Event) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.InvolvedObject = in.InvolvedObject + out.Reason = in.Reason + out.Message = in.Message + out.Source = in.Source + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() + out.Count = in.Count + out.Type = in.Type + return nil + } +} + +func DeepCopy_v1_EventList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventList) + out := out.(*EventList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Event, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Event(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_EventSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventSource) + out := out.(*EventSource) + out.Component = in.Component + out.Host = in.Host + return nil + } +} + +func DeepCopy_v1_ExecAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExecAction) + out := out.(*ExecAction) + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + return nil + } +} + +func DeepCopy_v1_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExportOptions) + out := out.(*ExportOptions) + out.TypeMeta = in.TypeMeta + out.Export = in.Export + out.Exact = in.Exact + return nil + } +} + +func DeepCopy_v1_FCVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FCVolumeSource) + out := out.(*FCVolumeSource) + if in.TargetWWNs != nil { + in, out := &in.TargetWWNs, &out.TargetWWNs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.TargetWWNs = nil + } + if in.Lun != nil { + in, out := &in.Lun, &out.Lun + *out = new(int32) + **out = **in + } else { + out.Lun = nil + } + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_FlexVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlexVolumeSource) + out := out.(*FlexVolumeSource) + out.Driver = in.Driver + out.FSType = in.FSType + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Options = nil + } + return nil + } +} + +func DeepCopy_v1_FlockerVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlockerVolumeSource) + out := out.(*FlockerVolumeSource) + out.DatasetName = in.DatasetName + return nil + } +} + +func DeepCopy_v1_GCEPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GCEPersistentDiskVolumeSource) + out := out.(*GCEPersistentDiskVolumeSource) + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_GitRepoVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GitRepoVolumeSource) + out := out.(*GitRepoVolumeSource) + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil + } +} + +func DeepCopy_v1_GlusterfsVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GlusterfsVolumeSource) + out := out.(*GlusterfsVolumeSource) + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_HTTPGetAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPGetAction) + out := out.(*HTTPGetAction) + out.Path = in.Path + out.Port = in.Port + out.Host = in.Host + out.Scheme = in.Scheme + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.HTTPHeaders = nil + } + return nil + } +} + +func DeepCopy_v1_HTTPHeader(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPHeader) + out := out.(*HTTPHeader) + out.Name = in.Name + out.Value = in.Value + return nil + } +} + +func DeepCopy_v1_Handler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Handler) + out := out.(*Handler) + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(ExecAction) + if err := DeepCopy_v1_ExecAction(*in, *out, c); err != nil { + return err + } + } else { + out.Exec = nil + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(HTTPGetAction) + if err := DeepCopy_v1_HTTPGetAction(*in, *out, c); err != nil { + return err + } + } else { + out.HTTPGet = nil + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(TCPSocketAction) + **out = **in + } else { + out.TCPSocket = nil + } + return nil + } +} + +func DeepCopy_v1_HostPathVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPathVolumeSource) + out := out.(*HostPathVolumeSource) + out.Path = in.Path + return nil + } +} + +func DeepCopy_v1_ISCSIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ISCSIVolumeSource) + out := out.(*ISCSIVolumeSource) + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_KeyToPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*KeyToPath) + out := out.(*KeyToPath) + out.Key = in.Key + out.Path = in.Path + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } else { + out.Mode = nil + } + return nil + } +} + +func DeepCopy_v1_Lifecycle(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Lifecycle) + out := out.(*Lifecycle) + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(Handler) + if err := DeepCopy_v1_Handler(*in, *out, c); err != nil { + return err + } + } else { + out.PostStart = nil + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(Handler) + if err := DeepCopy_v1_Handler(*in, *out, c); err != nil { + return err + } + } else { + out.PreStop = nil + } + return nil + } +} + +func DeepCopy_v1_LimitRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRange) + out := out.(*LimitRange) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_LimitRangeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_LimitRangeItem(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeItem) + out := out.(*LimitRangeItem) + out.Type = in.Type + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Max = nil + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Min = nil + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Default = nil + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.DefaultRequest = nil + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.MaxLimitRequestRatio = nil + } + return nil + } +} + +func DeepCopy_v1_LimitRangeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeList) + out := out.(*LimitRangeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]LimitRange, len(*in)) + for i := range *in { + if err := DeepCopy_v1_LimitRange(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_LimitRangeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeSpec) + out := out.(*LimitRangeSpec) + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + if err := DeepCopy_v1_LimitRangeItem(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Limits = nil + } + return nil + } +} + +func DeepCopy_v1_List(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*List) + out := out.(*List) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.RawExtension, len(*in)) + for i := range *in { + if err := runtime.DeepCopy_runtime_RawExtension(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + out.TypeMeta = in.TypeMeta + out.LabelSelector = in.LabelSelector + out.FieldSelector = in.FieldSelector + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } else { + out.TimeoutSeconds = nil + } + return nil + } +} + +func DeepCopy_v1_LoadBalancerIngress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerIngress) + out := out.(*LoadBalancerIngress) + out.IP = in.IP + out.Hostname = in.Hostname + return nil + } +} + +func DeepCopy_v1_LoadBalancerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerStatus) + out := out.(*LoadBalancerStatus) + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ingress = nil + } + return nil + } +} + +func DeepCopy_v1_LocalObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalObjectReference) + out := out.(*LocalObjectReference) + out.Name = in.Name + return nil + } +} + +func DeepCopy_v1_NFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NFSVolumeSource) + out := out.(*NFSVolumeSource) + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_Namespace(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Namespace) + out := out.(*Namespace) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_NamespaceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1_NamespaceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceList) + out := out.(*NamespaceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Namespace, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Namespace(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_NamespaceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceSpec) + out := out.(*NamespaceSpec) + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Finalizers = nil + } + return nil + } +} + +func DeepCopy_v1_NamespaceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceStatus) + out := out.(*NamespaceStatus) + out.Phase = in.Phase + return nil + } +} + +func DeepCopy_v1_Node(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Node) + out := out.(*Node) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_v1_NodeStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_NodeAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAddress) + out := out.(*NodeAddress) + out.Type = in.Type + out.Address = in.Address + return nil + } +} + +func DeepCopy_v1_NodeAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAffinity) + out := out.(*NodeAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(NodeSelector) + if err := DeepCopy_v1_NodeSelector(*in, *out, c); err != nil { + return err + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_v1_NodeCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeCondition) + out := out.(*NodeCondition) + out.Type = in.Type + out.Status = in.Status + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1_NodeDaemonEndpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeDaemonEndpoints) + out := out.(*NodeDaemonEndpoints) + out.KubeletEndpoint = in.KubeletEndpoint + return nil + } +} + +func DeepCopy_v1_NodeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeList) + out := out.(*NodeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Node, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Node(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_NodeProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeProxyOptions) + out := out.(*NodeProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_v1_NodeSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelector) + out := out.(*NodeSelector) + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeSelectorTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.NodeSelectorTerms = nil + } + return nil + } +} + +func DeepCopy_v1_NodeSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorRequirement) + out := out.(*NodeSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} + +func DeepCopy_v1_NodeSelectorTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorTerm) + out := out.(*NodeSelectorTerm) + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_v1_NodeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSpec) + out := out.(*NodeSpec) + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + return nil + } +} + +func DeepCopy_v1_NodeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeStatus) + out := out.(*NodeStatus) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Allocatable = nil + } + out.Phase = in.Phase + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_NodeCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Addresses = nil + } + out.DaemonEndpoints = in.DaemonEndpoints + out.NodeInfo = in.NodeInfo + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]ContainerImage, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerImage(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Images = nil + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumesInUse = nil + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumesAttached = nil + } + return nil + } +} + +func DeepCopy_v1_NodeSystemInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSystemInfo) + out := out.(*NodeSystemInfo) + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil + } +} + +func DeepCopy_v1_ObjectFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectFieldSelector) + out := out.(*ObjectFieldSelector) + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil + } +} + +func DeepCopy_v1_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMeta) + out := out.(*ObjectMeta) + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = in.UID + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.DeletionTimestamp = nil + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.DeletionGracePeriodSeconds = nil + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Labels = nil + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Annotations = nil + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]OwnerReference, len(*in)) + for i := range *in { + if err := DeepCopy_v1_OwnerReference(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.OwnerReferences = nil + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Finalizers = nil + } + out.ClusterName = in.ClusterName + return nil + } +} + +func DeepCopy_v1_ObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectReference) + out := out.(*ObjectReference) + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = in.UID + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil + } +} + +func DeepCopy_v1_OwnerReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*OwnerReference) + out := out.(*OwnerReference) + out.APIVersion = in.APIVersion + out.Kind = in.Kind + out.Name = in.Name + out.UID = in.UID + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + *out = new(bool) + **out = **in + } else { + out.Controller = nil + } + return nil + } +} + +func DeepCopy_v1_PersistentVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolume) + out := out.(*PersistentVolume) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PersistentVolumeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1_PersistentVolumeClaim(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaim) + out := out.(*PersistentVolumeClaim) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_PersistentVolumeClaimStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_PersistentVolumeClaimList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimList) + out := out.(*PersistentVolumeClaimList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_PersistentVolumeClaimSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimSpec) + out := out.(*PersistentVolumeClaimSpec) + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := DeepCopy_v1_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + out.VolumeName = in.VolumeName + return nil + } +} + +func DeepCopy_v1_PersistentVolumeClaimStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimStatus) + out := out.(*PersistentVolumeClaimStatus) + out.Phase = in.Phase + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + return nil + } +} + +func DeepCopy_v1_PersistentVolumeClaimVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimVolumeSource) + out := out.(*PersistentVolumeClaimVolumeSource) + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_PersistentVolumeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeList) + out := out.(*PersistentVolumeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PersistentVolume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_PersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSource) + out := out.(*PersistentVolumeSource) + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } else { + out.AWSElasticBlockStore = nil + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } else { + out.HostPath = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } else { + out.Glusterfs = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } else { + out.NFS = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_v1_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + **out = **in + } else { + out.ISCSI = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_v1_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_v1_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FC = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } else { + out.Flocker = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_v1_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } else { + out.AzureFile = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } else { + out.VsphereVolume = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } else { + out.Quobyte = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_v1_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil + } +} + +func DeepCopy_v1_PersistentVolumeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSpec) + out := out.(*PersistentVolumeSpec) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + if err := DeepCopy_v1_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, c); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(ObjectReference) + **out = **in + } else { + out.ClaimRef = nil + } + out.PersistentVolumeReclaimPolicy = in.PersistentVolumeReclaimPolicy + return nil + } +} + +func DeepCopy_v1_PersistentVolumeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeStatus) + out := out.(*PersistentVolumeStatus) + out.Phase = in.Phase + out.Message = in.Message + out.Reason = in.Reason + return nil + } +} + +func DeepCopy_v1_Pod(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Pod) + out := out.(*Pod) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_PodAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinity) + out := out.(*PodAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_v1_PodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinityTerm) + out := out.(*PodAffinityTerm) + if in.LabelSelector != nil { + in, out := &in.LabelSelector, &out.LabelSelector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.LabelSelector = nil + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Namespaces = nil + } + out.TopologyKey = in.TopologyKey + return nil + } +} + +func DeepCopy_v1_PodAntiAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAntiAffinity) + out := out.(*PodAntiAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_v1_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_v1_PodAttachOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAttachOptions) + out := out.(*PodAttachOptions) + out.TypeMeta = in.TypeMeta + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil + } +} + +func DeepCopy_v1_PodCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodCondition) + out := out.(*PodCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1_PodExecOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodExecOptions) + out := out.(*PodExecOptions) + out.TypeMeta = in.TypeMeta + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + return nil + } +} + +func DeepCopy_v1_PodList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodList) + out := out.(*PodList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Pod(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_PodLogOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodLogOptions) + out := out.(*PodLogOptions) + out.TypeMeta = in.TypeMeta + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + if in.SinceSeconds != nil { + in, out := &in.SinceSeconds, &out.SinceSeconds + *out = new(int64) + **out = **in + } else { + out.SinceSeconds = nil + } + if in.SinceTime != nil { + in, out := &in.SinceTime, &out.SinceTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.SinceTime = nil + } + out.Timestamps = in.Timestamps + if in.TailLines != nil { + in, out := &in.TailLines, &out.TailLines + *out = new(int64) + **out = **in + } else { + out.TailLines = nil + } + if in.LimitBytes != nil { + in, out := &in.LimitBytes, &out.LimitBytes + *out = new(int64) + **out = **in + } else { + out.LimitBytes = nil + } + return nil + } +} + +func DeepCopy_v1_PodProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodProxyOptions) + out := out.(*PodProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_v1_PodSecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityContext) + out := out.(*PodSecurityContext) + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } else { + out.RunAsUser = nil + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } else { + out.RunAsNonRoot = nil + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } else { + out.SupplementalGroups = nil + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + *out = new(int64) + **out = **in + } else { + out.FSGroup = nil + } + return nil + } +} + +func DeepCopy_v1_PodSignature(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSignature) + out := out.(*PodSignature) + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + *out = new(OwnerReference) + if err := DeepCopy_v1_OwnerReference(*in, *out, c); err != nil { + return err + } + } else { + out.PodController = nil + } + return nil + } +} + +func DeepCopy_v1_PodSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSpec) + out := out.(*PodSpec) + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.InitContainers = nil + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Containers = nil + } + out.RestartPolicy = in.RestartPolicy + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.TerminationGracePeriodSeconds = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + out.DNSPolicy = in.DNSPolicy + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.NodeSelector = nil + } + out.ServiceAccountName = in.ServiceAccountName + out.DeprecatedServiceAccount = in.DeprecatedServiceAccount + out.NodeName = in.NodeName + out.HostNetwork = in.HostNetwork + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := DeepCopy_v1_PodSecurityContext(*in, *out, c); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ImagePullSecrets = nil + } + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + return nil + } +} + +func DeepCopy_v1_PodStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatus) + out := out.(*PodStatus) + out.Phase = in.Phase + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.InitContainerStatuses = nil + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.ContainerStatuses = nil + } + return nil + } +} + +func DeepCopy_v1_PodStatusResult(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatusResult) + out := out.(*PodStatusResult) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_PodTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplate) + out := out.(*PodTemplate) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_PodTemplateList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateList) + out := out.(*PodTemplateList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := DeepCopy_v1_PodTemplate(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_PodTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateSpec) + out := out.(*PodTemplateSpec) + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Preconditions) + out := out.(*Preconditions) + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(types.UID) + **out = **in + } else { + out.UID = nil + } + return nil + } +} + +func DeepCopy_v1_PreferAvoidPodsEntry(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferAvoidPodsEntry) + out := out.(*PreferAvoidPodsEntry) + if err := DeepCopy_v1_PodSignature(&in.PodSignature, &out.PodSignature, c); err != nil { + return err + } + out.EvictionTime = in.EvictionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1_PreferredSchedulingTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferredSchedulingTerm) + out := out.(*PreferredSchedulingTerm) + out.Weight = in.Weight + if err := DeepCopy_v1_NodeSelectorTerm(&in.Preference, &out.Preference, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_Probe(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Probe) + out := out.(*Probe) + if err := DeepCopy_v1_Handler(&in.Handler, &out.Handler, c); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil + } +} + +func DeepCopy_v1_QuobyteVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*QuobyteVolumeSource) + out := out.(*QuobyteVolumeSource) + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil + } +} + +func DeepCopy_v1_RBDVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RBDVolumeSource) + out := out.(*RBDVolumeSource) + if in.CephMonitors != nil { + in, out := &in.CephMonitors, &out.CephMonitors + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.CephMonitors = nil + } + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_v1_RangeAllocation(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RangeAllocation) + out := out.(*RangeAllocation) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Range = in.Range + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_v1_ReplicationController(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationController) + out := out.(*ReplicationController) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_ReplicationControllerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1_ReplicationControllerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerList) + out := out.(*ReplicationControllerList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ReplicationController(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ReplicationControllerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerSpec) + out := out.(*ReplicationControllerSpec) + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } else { + out.Replicas = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Selector = nil + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := DeepCopy_v1_PodTemplateSpec(*in, *out, c); err != nil { + return err + } + } else { + out.Template = nil + } + return nil + } +} + +func DeepCopy_v1_ReplicationControllerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerStatus) + out := out.(*ReplicationControllerStatus) + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil + } +} + +func DeepCopy_v1_ResourceFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceFieldSelector) + out := out.(*ResourceFieldSelector) + out.ContainerName = in.ContainerName + out.Resource = in.Resource + out.Divisor = in.Divisor.DeepCopy() + return nil + } +} + +func DeepCopy_v1_ResourceQuota(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuota) + out := out.(*ResourceQuota) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_ResourceQuotaSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_ResourceQuotaStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_ResourceQuotaList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaList) + out := out.(*ResourceQuotaList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ResourceQuota, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ResourceQuota(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ResourceQuotaSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaSpec) + out := out.(*ResourceQuotaSpec) + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Hard = nil + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Scopes = nil + } + return nil + } +} + +func DeepCopy_v1_ResourceQuotaStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaStatus) + out := out.(*ResourceQuotaStatus) + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Hard = nil + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Used = nil + } + return nil + } +} + +func DeepCopy_v1_ResourceRequirements(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceRequirements) + out := out.(*ResourceRequirements) + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Limits = nil + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Requests = nil + } + return nil + } +} + +func DeepCopy_v1_SELinuxOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxOptions) + out := out.(*SELinuxOptions) + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil + } +} + +func DeepCopy_v1_Secret(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Secret) + out := out.(*Secret) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string][]byte) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*[]byte) + } + } + } else { + out.Data = nil + } + if in.StringData != nil { + in, out := &in.StringData, &out.StringData + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.StringData = nil + } + out.Type = in.Type + return nil + } +} + +func DeepCopy_v1_SecretKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretKeySelector) + out := out.(*SecretKeySelector) + out.LocalObjectReference = in.LocalObjectReference + out.Key = in.Key + return nil + } +} + +func DeepCopy_v1_SecretList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretList) + out := out.(*SecretList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Secret(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_SecretVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretVolumeSource) + out := out.(*SecretVolumeSource) + out.SecretName = in.SecretName + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_v1_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_v1_SecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecurityContext) + out := out.(*SecurityContext) + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(Capabilities) + if err := DeepCopy_v1_Capabilities(*in, *out, c); err != nil { + return err + } + } else { + out.Capabilities = nil + } + if in.Privileged != nil { + in, out := &in.Privileged, &out.Privileged + *out = new(bool) + **out = **in + } else { + out.Privileged = nil + } + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } else { + out.RunAsUser = nil + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } else { + out.RunAsNonRoot = nil + } + if in.ReadOnlyRootFilesystem != nil { + in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem + *out = new(bool) + **out = **in + } else { + out.ReadOnlyRootFilesystem = nil + } + return nil + } +} + +func DeepCopy_v1_SerializedReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SerializedReference) + out := out.(*SerializedReference) + out.TypeMeta = in.TypeMeta + out.Reference = in.Reference + return nil + } +} + +func DeepCopy_v1_Service(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Service) + out := out.(*Service) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_ServiceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_ServiceStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_ServiceAccount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccount) + out := out.(*ServiceAccount) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Secrets = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ImagePullSecrets = nil + } + return nil + } +} + +func DeepCopy_v1_ServiceAccountList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccountList) + out := out.(*ServiceAccountList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + if err := DeepCopy_v1_ServiceAccount(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ServiceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceList) + out := out.(*ServiceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Service(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_ServicePort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServicePort) + out := out.(*ServicePort) + out.Name = in.Name + out.Protocol = in.Protocol + out.Port = in.Port + out.TargetPort = in.TargetPort + out.NodePort = in.NodePort + return nil + } +} + +func DeepCopy_v1_ServiceProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceProxyOptions) + out := out.(*ServiceProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_v1_ServiceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceSpec) + out := out.(*ServiceSpec) + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Selector = nil + } + out.ClusterIP = in.ClusterIP + out.Type = in.Type + if in.ExternalIPs != nil { + in, out := &in.ExternalIPs, &out.ExternalIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.ExternalIPs = nil + } + if in.DeprecatedPublicIPs != nil { + in, out := &in.DeprecatedPublicIPs, &out.DeprecatedPublicIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.DeprecatedPublicIPs = nil + } + out.SessionAffinity = in.SessionAffinity + out.LoadBalancerIP = in.LoadBalancerIP + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.LoadBalancerSourceRanges = nil + } + out.ExternalName = in.ExternalName + return nil + } +} + +func DeepCopy_v1_ServiceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceStatus) + out := out.(*ServiceStatus) + if err := DeepCopy_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_TCPSocketAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TCPSocketAction) + out := out.(*TCPSocketAction) + out.Port = in.Port + return nil + } +} + +func DeepCopy_v1_Taint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Taint) + out := out.(*Taint) + out.Key = in.Key + out.Value = in.Value + out.Effect = in.Effect + return nil + } +} + +func DeepCopy_v1_Toleration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Toleration) + out := out.(*Toleration) + out.Key = in.Key + out.Operator = in.Operator + out.Value = in.Value + out.Effect = in.Effect + return nil + } +} + +func DeepCopy_v1_Volume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Volume) + out := out.(*Volume) + out.Name = in.Name + if err := DeepCopy_v1_VolumeSource(&in.VolumeSource, &out.VolumeSource, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_VolumeMount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeMount) + out := out.(*VolumeMount) + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil + } +} + +func DeepCopy_v1_VolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeSource) + out := out.(*VolumeSource) + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } else { + out.HostPath = nil + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(EmptyDirVolumeSource) + **out = **in + } else { + out.EmptyDir = nil + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } else { + out.AWSElasticBlockStore = nil + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(GitRepoVolumeSource) + **out = **in + } else { + out.GitRepo = nil + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretVolumeSource) + if err := DeepCopy_v1_SecretVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.Secret = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } else { + out.NFS = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + **out = **in + } else { + out.ISCSI = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } else { + out.Glusterfs = nil + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } else { + out.PersistentVolumeClaim = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_v1_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_v1_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_v1_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } else { + out.Flocker = nil + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIVolumeSource) + if err := DeepCopy_v1_DownwardAPIVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.DownwardAPI = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_v1_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FC = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } else { + out.AzureFile = nil + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapVolumeSource) + if err := DeepCopy_v1_ConfigMapVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.ConfigMap = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } else { + out.VsphereVolume = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } else { + out.Quobyte = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_v1_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil + } +} + +func DeepCopy_v1_VsphereVirtualDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VsphereVirtualDiskVolumeSource) + out := out.(*VsphereVirtualDiskVolumeSource) + out.VolumePath = in.VolumePath + out.FSType = in.FSType + return nil + } +} + +func DeepCopy_v1_WeightedPodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*WeightedPodAffinityTerm) + out := out.(*WeightedPodAffinityTerm) + out.Weight = in.Weight + if err := DeepCopy_v1_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/validation/path/name.go b/vendor/k8s.io/client-go/1.5/pkg/api/validation/path/name.go new file mode 100644 index 0000000000..981d9bb465 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/validation/path/name.go @@ -0,0 +1,66 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package path + +import ( + "fmt" + "strings" +) + +// NameMayNotBe specifies strings that cannot be used as names specified as path segments (like the REST API or etcd store) +var NameMayNotBe = []string{".", ".."} + +// NameMayNotContain specifies substrings that cannot be used in names specified as path segments (like the REST API or etcd store) +var NameMayNotContain = []string{"/", "%"} + +// IsValidPathSegmentName validates the name can be safely encoded as a path segment +func IsValidPathSegmentName(name string) []string { + for _, illegalName := range NameMayNotBe { + if name == illegalName { + return []string{fmt.Sprintf(`may not be '%s'`, illegalName)} + } + } + + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + return []string{fmt.Sprintf(`may not contain '%s'`, illegalContent)} + } + } + + return nil +} + +// IsValidPathSegmentPrefix validates the name can be used as a prefix for a name which will be encoded as a path segment +// It does not check for exact matches with disallowed names, since an arbitrary suffix might make the name valid +func IsValidPathSegmentPrefix(name string) []string { + for _, illegalContent := range NameMayNotContain { + if strings.Contains(name, illegalContent) { + return []string{fmt.Sprintf(`may not contain '%s'`, illegalContent)} + } + } + + return nil +} + +// ValidatePathSegmentName validates the name can be safely encoded as a path segment +func ValidatePathSegmentName(name string, prefix bool) []string { + if prefix { + return IsValidPathSegmentPrefix(name) + } else { + return IsValidPathSegmentName(name) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/api/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/api/zz_generated.deepcopy.go new file mode 100644 index 0000000000..699f073d14 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/api/zz_generated.deepcopy.go @@ -0,0 +1,3749 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package api + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + fields "k8s.io/client-go/1.5/pkg/fields" + labels "k8s.io/client-go/1.5/pkg/labels" + runtime "k8s.io/client-go/1.5/pkg/runtime" + types "k8s.io/client-go/1.5/pkg/types" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AWSElasticBlockStoreVolumeSource, InType: reflect.TypeOf(&AWSElasticBlockStoreVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Affinity, InType: reflect.TypeOf(&Affinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AttachedVolume, InType: reflect.TypeOf(&AttachedVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AvoidPods, InType: reflect.TypeOf(&AvoidPods{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AzureDiskVolumeSource, InType: reflect.TypeOf(&AzureDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_AzureFileVolumeSource, InType: reflect.TypeOf(&AzureFileVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Binding, InType: reflect.TypeOf(&Binding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Capabilities, InType: reflect.TypeOf(&Capabilities{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_CephFSVolumeSource, InType: reflect.TypeOf(&CephFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_CinderVolumeSource, InType: reflect.TypeOf(&CinderVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentCondition, InType: reflect.TypeOf(&ComponentCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentStatus, InType: reflect.TypeOf(&ComponentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ComponentStatusList, InType: reflect.TypeOf(&ComponentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMap, InType: reflect.TypeOf(&ConfigMap{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapKeySelector, InType: reflect.TypeOf(&ConfigMapKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapList, InType: reflect.TypeOf(&ConfigMapList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConfigMapVolumeSource, InType: reflect.TypeOf(&ConfigMapVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Container, InType: reflect.TypeOf(&Container{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerImage, InType: reflect.TypeOf(&ContainerImage{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerPort, InType: reflect.TypeOf(&ContainerPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerState, InType: reflect.TypeOf(&ContainerState{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateRunning, InType: reflect.TypeOf(&ContainerStateRunning{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateTerminated, InType: reflect.TypeOf(&ContainerStateTerminated{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStateWaiting, InType: reflect.TypeOf(&ContainerStateWaiting{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ContainerStatus, InType: reflect.TypeOf(&ContainerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ConversionError, InType: reflect.TypeOf(&ConversionError{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DaemonEndpoint, InType: reflect.TypeOf(&DaemonEndpoint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DeleteOptions, InType: reflect.TypeOf(&DeleteOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DownwardAPIVolumeFile, InType: reflect.TypeOf(&DownwardAPIVolumeFile{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_DownwardAPIVolumeSource, InType: reflect.TypeOf(&DownwardAPIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EmptyDirVolumeSource, InType: reflect.TypeOf(&EmptyDirVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointAddress, InType: reflect.TypeOf(&EndpointAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointPort, InType: reflect.TypeOf(&EndpointPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointSubset, InType: reflect.TypeOf(&EndpointSubset{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Endpoints, InType: reflect.TypeOf(&Endpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EndpointsList, InType: reflect.TypeOf(&EndpointsList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EnvVar, InType: reflect.TypeOf(&EnvVar{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EnvVarSource, InType: reflect.TypeOf(&EnvVarSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Event, InType: reflect.TypeOf(&Event{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EventList, InType: reflect.TypeOf(&EventList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_EventSource, InType: reflect.TypeOf(&EventSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ExecAction, InType: reflect.TypeOf(&ExecAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ExportOptions, InType: reflect.TypeOf(&ExportOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FCVolumeSource, InType: reflect.TypeOf(&FCVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FlexVolumeSource, InType: reflect.TypeOf(&FlexVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_FlockerVolumeSource, InType: reflect.TypeOf(&FlockerVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GCEPersistentDiskVolumeSource, InType: reflect.TypeOf(&GCEPersistentDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GitRepoVolumeSource, InType: reflect.TypeOf(&GitRepoVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_GlusterfsVolumeSource, InType: reflect.TypeOf(&GlusterfsVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HTTPGetAction, InType: reflect.TypeOf(&HTTPGetAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HTTPHeader, InType: reflect.TypeOf(&HTTPHeader{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Handler, InType: reflect.TypeOf(&Handler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_HostPathVolumeSource, InType: reflect.TypeOf(&HostPathVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ISCSIVolumeSource, InType: reflect.TypeOf(&ISCSIVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_KeyToPath, InType: reflect.TypeOf(&KeyToPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Lifecycle, InType: reflect.TypeOf(&Lifecycle{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRange, InType: reflect.TypeOf(&LimitRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeItem, InType: reflect.TypeOf(&LimitRangeItem{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeList, InType: reflect.TypeOf(&LimitRangeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LimitRangeSpec, InType: reflect.TypeOf(&LimitRangeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_List, InType: reflect.TypeOf(&List{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LoadBalancerIngress, InType: reflect.TypeOf(&LoadBalancerIngress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LoadBalancerStatus, InType: reflect.TypeOf(&LoadBalancerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_LocalObjectReference, InType: reflect.TypeOf(&LocalObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NFSVolumeSource, InType: reflect.TypeOf(&NFSVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Namespace, InType: reflect.TypeOf(&Namespace{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceList, InType: reflect.TypeOf(&NamespaceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceSpec, InType: reflect.TypeOf(&NamespaceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NamespaceStatus, InType: reflect.TypeOf(&NamespaceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Node, InType: reflect.TypeOf(&Node{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeAddress, InType: reflect.TypeOf(&NodeAddress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeAffinity, InType: reflect.TypeOf(&NodeAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeCondition, InType: reflect.TypeOf(&NodeCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeDaemonEndpoints, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeList, InType: reflect.TypeOf(&NodeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeProxyOptions, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeResources, InType: reflect.TypeOf(&NodeResources{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelector, InType: reflect.TypeOf(&NodeSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelectorRequirement, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSelectorTerm, InType: reflect.TypeOf(&NodeSelectorTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSpec, InType: reflect.TypeOf(&NodeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeStatus, InType: reflect.TypeOf(&NodeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_NodeSystemInfo, InType: reflect.TypeOf(&NodeSystemInfo{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectFieldSelector, InType: reflect.TypeOf(&ObjectFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectMeta, InType: reflect.TypeOf(&ObjectMeta{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ObjectReference, InType: reflect.TypeOf(&ObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_OwnerReference, InType: reflect.TypeOf(&OwnerReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolume, InType: reflect.TypeOf(&PersistentVolume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaim, InType: reflect.TypeOf(&PersistentVolumeClaim{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimList, InType: reflect.TypeOf(&PersistentVolumeClaimList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimSpec, InType: reflect.TypeOf(&PersistentVolumeClaimSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimStatus, InType: reflect.TypeOf(&PersistentVolumeClaimStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeClaimVolumeSource, InType: reflect.TypeOf(&PersistentVolumeClaimVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeList, InType: reflect.TypeOf(&PersistentVolumeList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeSource, InType: reflect.TypeOf(&PersistentVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeSpec, InType: reflect.TypeOf(&PersistentVolumeSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PersistentVolumeStatus, InType: reflect.TypeOf(&PersistentVolumeStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Pod, InType: reflect.TypeOf(&Pod{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAffinity, InType: reflect.TypeOf(&PodAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAffinityTerm, InType: reflect.TypeOf(&PodAffinityTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAntiAffinity, InType: reflect.TypeOf(&PodAntiAffinity{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodAttachOptions, InType: reflect.TypeOf(&PodAttachOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodCondition, InType: reflect.TypeOf(&PodCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodExecOptions, InType: reflect.TypeOf(&PodExecOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodList, InType: reflect.TypeOf(&PodList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodLogOptions, InType: reflect.TypeOf(&PodLogOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodProxyOptions, InType: reflect.TypeOf(&PodProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSecurityContext, InType: reflect.TypeOf(&PodSecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSignature, InType: reflect.TypeOf(&PodSignature{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodSpec, InType: reflect.TypeOf(&PodSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodStatus, InType: reflect.TypeOf(&PodStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodStatusResult, InType: reflect.TypeOf(&PodStatusResult{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplate, InType: reflect.TypeOf(&PodTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplateList, InType: reflect.TypeOf(&PodTemplateList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PodTemplateSpec, InType: reflect.TypeOf(&PodTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Preconditions, InType: reflect.TypeOf(&Preconditions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PreferAvoidPodsEntry, InType: reflect.TypeOf(&PreferAvoidPodsEntry{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_PreferredSchedulingTerm, InType: reflect.TypeOf(&PreferredSchedulingTerm{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Probe, InType: reflect.TypeOf(&Probe{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_QuobyteVolumeSource, InType: reflect.TypeOf(&QuobyteVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_RBDVolumeSource, InType: reflect.TypeOf(&RBDVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_RangeAllocation, InType: reflect.TypeOf(&RangeAllocation{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationController, InType: reflect.TypeOf(&ReplicationController{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerList, InType: reflect.TypeOf(&ReplicationControllerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerSpec, InType: reflect.TypeOf(&ReplicationControllerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ReplicationControllerStatus, InType: reflect.TypeOf(&ReplicationControllerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceFieldSelector, InType: reflect.TypeOf(&ResourceFieldSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuota, InType: reflect.TypeOf(&ResourceQuota{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaList, InType: reflect.TypeOf(&ResourceQuotaList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaSpec, InType: reflect.TypeOf(&ResourceQuotaSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceQuotaStatus, InType: reflect.TypeOf(&ResourceQuotaStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ResourceRequirements, InType: reflect.TypeOf(&ResourceRequirements{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SELinuxOptions, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Secret, InType: reflect.TypeOf(&Secret{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretKeySelector, InType: reflect.TypeOf(&SecretKeySelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretList, InType: reflect.TypeOf(&SecretList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecretVolumeSource, InType: reflect.TypeOf(&SecretVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SecurityContext, InType: reflect.TypeOf(&SecurityContext{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_SerializedReference, InType: reflect.TypeOf(&SerializedReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Service, InType: reflect.TypeOf(&Service{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceAccount, InType: reflect.TypeOf(&ServiceAccount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceAccountList, InType: reflect.TypeOf(&ServiceAccountList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceList, InType: reflect.TypeOf(&ServiceList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServicePort, InType: reflect.TypeOf(&ServicePort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceProxyOptions, InType: reflect.TypeOf(&ServiceProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceSpec, InType: reflect.TypeOf(&ServiceSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_ServiceStatus, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Sysctl, InType: reflect.TypeOf(&Sysctl{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_TCPSocketAction, InType: reflect.TypeOf(&TCPSocketAction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Taint, InType: reflect.TypeOf(&Taint{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Toleration, InType: reflect.TypeOf(&Toleration{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_Volume, InType: reflect.TypeOf(&Volume{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VolumeMount, InType: reflect.TypeOf(&VolumeMount{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VolumeSource, InType: reflect.TypeOf(&VolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_VsphereVirtualDiskVolumeSource, InType: reflect.TypeOf(&VsphereVirtualDiskVolumeSource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_api_WeightedPodAffinityTerm, InType: reflect.TypeOf(&WeightedPodAffinityTerm{})}, + ) +} + +func DeepCopy_api_AWSElasticBlockStoreVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AWSElasticBlockStoreVolumeSource) + out := out.(*AWSElasticBlockStoreVolumeSource) + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_Affinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Affinity) + out := out.(*Affinity) + if in.NodeAffinity != nil { + in, out := &in.NodeAffinity, &out.NodeAffinity + *out = new(NodeAffinity) + if err := DeepCopy_api_NodeAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.NodeAffinity = nil + } + if in.PodAffinity != nil { + in, out := &in.PodAffinity, &out.PodAffinity + *out = new(PodAffinity) + if err := DeepCopy_api_PodAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.PodAffinity = nil + } + if in.PodAntiAffinity != nil { + in, out := &in.PodAntiAffinity, &out.PodAntiAffinity + *out = new(PodAntiAffinity) + if err := DeepCopy_api_PodAntiAffinity(*in, *out, c); err != nil { + return err + } + } else { + out.PodAntiAffinity = nil + } + return nil + } +} + +func DeepCopy_api_AttachedVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AttachedVolume) + out := out.(*AttachedVolume) + out.Name = in.Name + out.DevicePath = in.DevicePath + return nil + } +} + +func DeepCopy_api_AvoidPods(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AvoidPods) + out := out.(*AvoidPods) + if in.PreferAvoidPods != nil { + in, out := &in.PreferAvoidPods, &out.PreferAvoidPods + *out = make([]PreferAvoidPodsEntry, len(*in)) + for i := range *in { + if err := DeepCopy_api_PreferAvoidPodsEntry(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferAvoidPods = nil + } + return nil + } +} + +func DeepCopy_api_AzureDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureDiskVolumeSource) + out := out.(*AzureDiskVolumeSource) + out.DiskName = in.DiskName + out.DataDiskURI = in.DataDiskURI + if in.CachingMode != nil { + in, out := &in.CachingMode, &out.CachingMode + *out = new(AzureDataDiskCachingMode) + **out = **in + } else { + out.CachingMode = nil + } + if in.FSType != nil { + in, out := &in.FSType, &out.FSType + *out = new(string) + **out = **in + } else { + out.FSType = nil + } + if in.ReadOnly != nil { + in, out := &in.ReadOnly, &out.ReadOnly + *out = new(bool) + **out = **in + } else { + out.ReadOnly = nil + } + return nil + } +} + +func DeepCopy_api_AzureFileVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*AzureFileVolumeSource) + out := out.(*AzureFileVolumeSource) + out.SecretName = in.SecretName + out.ShareName = in.ShareName + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_Binding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Binding) + out := out.(*Binding) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Target = in.Target + return nil + } +} + +func DeepCopy_api_Capabilities(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Capabilities) + out := out.(*Capabilities) + if in.Add != nil { + in, out := &in.Add, &out.Add + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Add = nil + } + if in.Drop != nil { + in, out := &in.Drop, &out.Drop + *out = make([]Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Drop = nil + } + return nil + } +} + +func DeepCopy_api_CephFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CephFSVolumeSource) + out := out.(*CephFSVolumeSource) + if in.Monitors != nil { + in, out := &in.Monitors, &out.Monitors + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Monitors = nil + } + out.Path = in.Path + out.User = in.User + out.SecretFile = in.SecretFile + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_CinderVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CinderVolumeSource) + out := out.(*CinderVolumeSource) + out.VolumeID = in.VolumeID + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_ComponentCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentCondition) + out := out.(*ComponentCondition) + out.Type = in.Type + out.Status = in.Status + out.Message = in.Message + out.Error = in.Error + return nil + } +} + +func DeepCopy_api_ComponentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatus) + out := out.(*ComponentStatus) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ComponentCondition, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Conditions = nil + } + return nil + } +} + +func DeepCopy_api_ComponentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ComponentStatusList) + out := out.(*ComponentStatusList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ComponentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ComponentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ConfigMap(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMap) + out := out.(*ConfigMap) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_api_ConfigMapKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapKeySelector) + out := out.(*ConfigMapKeySelector) + out.LocalObjectReference = in.LocalObjectReference + out.Key = in.Key + return nil + } +} + +func DeepCopy_api_ConfigMapList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapList) + out := out.(*ConfigMapList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigMap, len(*in)) + for i := range *in { + if err := DeepCopy_api_ConfigMap(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ConfigMapVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConfigMapVolumeSource) + out := out.(*ConfigMapVolumeSource) + out.LocalObjectReference = in.LocalObjectReference + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_api_Container(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Container) + out := out.(*Container) + out.Name = in.Name + out.Image = in.Image + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + if in.Args != nil { + in, out := &in.Args, &out.Args + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Args = nil + } + out.WorkingDir = in.WorkingDir + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ContainerPort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]EnvVar, len(*in)) + for i := range *in { + if err := DeepCopy_api_EnvVar(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Env = nil + } + if err := DeepCopy_api_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + if in.VolumeMounts != nil { + in, out := &in.VolumeMounts, &out.VolumeMounts + *out = make([]VolumeMount, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumeMounts = nil + } + if in.LivenessProbe != nil { + in, out := &in.LivenessProbe, &out.LivenessProbe + *out = new(Probe) + if err := DeepCopy_api_Probe(*in, *out, c); err != nil { + return err + } + } else { + out.LivenessProbe = nil + } + if in.ReadinessProbe != nil { + in, out := &in.ReadinessProbe, &out.ReadinessProbe + *out = new(Probe) + if err := DeepCopy_api_Probe(*in, *out, c); err != nil { + return err + } + } else { + out.ReadinessProbe = nil + } + if in.Lifecycle != nil { + in, out := &in.Lifecycle, &out.Lifecycle + *out = new(Lifecycle) + if err := DeepCopy_api_Lifecycle(*in, *out, c); err != nil { + return err + } + } else { + out.Lifecycle = nil + } + out.TerminationMessagePath = in.TerminationMessagePath + out.ImagePullPolicy = in.ImagePullPolicy + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(SecurityContext) + if err := DeepCopy_api_SecurityContext(*in, *out, c); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + out.Stdin = in.Stdin + out.StdinOnce = in.StdinOnce + out.TTY = in.TTY + return nil + } +} + +func DeepCopy_api_ContainerImage(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerImage) + out := out.(*ContainerImage) + if in.Names != nil { + in, out := &in.Names, &out.Names + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Names = nil + } + out.SizeBytes = in.SizeBytes + return nil + } +} + +func DeepCopy_api_ContainerPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerPort) + out := out.(*ContainerPort) + out.Name = in.Name + out.HostPort = in.HostPort + out.ContainerPort = in.ContainerPort + out.Protocol = in.Protocol + out.HostIP = in.HostIP + return nil + } +} + +func DeepCopy_api_ContainerState(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerState) + out := out.(*ContainerState) + if in.Waiting != nil { + in, out := &in.Waiting, &out.Waiting + *out = new(ContainerStateWaiting) + **out = **in + } else { + out.Waiting = nil + } + if in.Running != nil { + in, out := &in.Running, &out.Running + *out = new(ContainerStateRunning) + if err := DeepCopy_api_ContainerStateRunning(*in, *out, c); err != nil { + return err + } + } else { + out.Running = nil + } + if in.Terminated != nil { + in, out := &in.Terminated, &out.Terminated + *out = new(ContainerStateTerminated) + if err := DeepCopy_api_ContainerStateTerminated(*in, *out, c); err != nil { + return err + } + } else { + out.Terminated = nil + } + return nil + } +} + +func DeepCopy_api_ContainerStateRunning(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateRunning) + out := out.(*ContainerStateRunning) + out.StartedAt = in.StartedAt.DeepCopy() + return nil + } +} + +func DeepCopy_api_ContainerStateTerminated(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateTerminated) + out := out.(*ContainerStateTerminated) + out.ExitCode = in.ExitCode + out.Signal = in.Signal + out.Reason = in.Reason + out.Message = in.Message + out.StartedAt = in.StartedAt.DeepCopy() + out.FinishedAt = in.FinishedAt.DeepCopy() + out.ContainerID = in.ContainerID + return nil + } +} + +func DeepCopy_api_ContainerStateWaiting(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStateWaiting) + out := out.(*ContainerStateWaiting) + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_api_ContainerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ContainerStatus) + out := out.(*ContainerStatus) + out.Name = in.Name + if err := DeepCopy_api_ContainerState(&in.State, &out.State, c); err != nil { + return err + } + if err := DeepCopy_api_ContainerState(&in.LastTerminationState, &out.LastTerminationState, c); err != nil { + return err + } + out.Ready = in.Ready + out.RestartCount = in.RestartCount + out.Image = in.Image + out.ImageID = in.ImageID + out.ContainerID = in.ContainerID + return nil + } +} + +func DeepCopy_api_ConversionError(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ConversionError) + out := out.(*ConversionError) + if in.In == nil { + out.In = nil + } else if newVal, err := c.DeepCopy(&in.In); err != nil { + return err + } else { + out.In = *newVal.(*interface{}) + } + if in.Out == nil { + out.Out = nil + } else if newVal, err := c.DeepCopy(&in.Out); err != nil { + return err + } else { + out.Out = *newVal.(*interface{}) + } + out.Message = in.Message + return nil + } +} + +func DeepCopy_api_DaemonEndpoint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonEndpoint) + out := out.(*DaemonEndpoint) + out.Port = in.Port + return nil + } +} + +func DeepCopy_api_DeleteOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeleteOptions) + out := out.(*DeleteOptions) + out.TypeMeta = in.TypeMeta + if in.GracePeriodSeconds != nil { + in, out := &in.GracePeriodSeconds, &out.GracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.GracePeriodSeconds = nil + } + if in.Preconditions != nil { + in, out := &in.Preconditions, &out.Preconditions + *out = new(Preconditions) + if err := DeepCopy_api_Preconditions(*in, *out, c); err != nil { + return err + } + } else { + out.Preconditions = nil + } + if in.OrphanDependents != nil { + in, out := &in.OrphanDependents, &out.OrphanDependents + *out = new(bool) + **out = **in + } else { + out.OrphanDependents = nil + } + return nil + } +} + +func DeepCopy_api_DownwardAPIVolumeFile(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeFile) + out := out.(*DownwardAPIVolumeFile) + out.Path = in.Path + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_api_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } else { + out.Mode = nil + } + return nil + } +} + +func DeepCopy_api_DownwardAPIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DownwardAPIVolumeSource) + out := out.(*DownwardAPIVolumeSource) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DownwardAPIVolumeFile, len(*in)) + for i := range *in { + if err := DeepCopy_api_DownwardAPIVolumeFile(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_api_EmptyDirVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EmptyDirVolumeSource) + out := out.(*EmptyDirVolumeSource) + out.Medium = in.Medium + return nil + } +} + +func DeepCopy_api_EndpointAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointAddress) + out := out.(*EndpointAddress) + out.IP = in.IP + out.Hostname = in.Hostname + if in.NodeName != nil { + in, out := &in.NodeName, &out.NodeName + *out = new(string) + **out = **in + } else { + out.NodeName = nil + } + if in.TargetRef != nil { + in, out := &in.TargetRef, &out.TargetRef + *out = new(ObjectReference) + **out = **in + } else { + out.TargetRef = nil + } + return nil + } +} + +func DeepCopy_api_EndpointPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointPort) + out := out.(*EndpointPort) + out.Name = in.Name + out.Port = in.Port + out.Protocol = in.Protocol + return nil + } +} + +func DeepCopy_api_EndpointSubset(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointSubset) + out := out.(*EndpointSubset) + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Addresses = nil + } + if in.NotReadyAddresses != nil { + in, out := &in.NotReadyAddresses, &out.NotReadyAddresses + *out = make([]EndpointAddress, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointAddress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.NotReadyAddresses = nil + } + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]EndpointPort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + return nil + } +} + +func DeepCopy_api_Endpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Endpoints) + out := out.(*Endpoints) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subsets != nil { + in, out := &in.Subsets, &out.Subsets + *out = make([]EndpointSubset, len(*in)) + for i := range *in { + if err := DeepCopy_api_EndpointSubset(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Subsets = nil + } + return nil + } +} + +func DeepCopy_api_EndpointsList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EndpointsList) + out := out.(*EndpointsList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Endpoints, len(*in)) + for i := range *in { + if err := DeepCopy_api_Endpoints(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_EnvVar(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVar) + out := out.(*EnvVar) + out.Name = in.Name + out.Value = in.Value + if in.ValueFrom != nil { + in, out := &in.ValueFrom, &out.ValueFrom + *out = new(EnvVarSource) + if err := DeepCopy_api_EnvVarSource(*in, *out, c); err != nil { + return err + } + } else { + out.ValueFrom = nil + } + return nil + } +} + +func DeepCopy_api_EnvVarSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EnvVarSource) + out := out.(*EnvVarSource) + if in.FieldRef != nil { + in, out := &in.FieldRef, &out.FieldRef + *out = new(ObjectFieldSelector) + **out = **in + } else { + out.FieldRef = nil + } + if in.ResourceFieldRef != nil { + in, out := &in.ResourceFieldRef, &out.ResourceFieldRef + *out = new(ResourceFieldSelector) + if err := DeepCopy_api_ResourceFieldSelector(*in, *out, c); err != nil { + return err + } + } else { + out.ResourceFieldRef = nil + } + if in.ConfigMapKeyRef != nil { + in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef + *out = new(ConfigMapKeySelector) + **out = **in + } else { + out.ConfigMapKeyRef = nil + } + if in.SecretKeyRef != nil { + in, out := &in.SecretKeyRef, &out.SecretKeyRef + *out = new(SecretKeySelector) + **out = **in + } else { + out.SecretKeyRef = nil + } + return nil + } +} + +func DeepCopy_api_Event(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Event) + out := out.(*Event) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.InvolvedObject = in.InvolvedObject + out.Reason = in.Reason + out.Message = in.Message + out.Source = in.Source + out.FirstTimestamp = in.FirstTimestamp.DeepCopy() + out.LastTimestamp = in.LastTimestamp.DeepCopy() + out.Count = in.Count + out.Type = in.Type + return nil + } +} + +func DeepCopy_api_EventList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventList) + out := out.(*EventList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Event, len(*in)) + for i := range *in { + if err := DeepCopy_api_Event(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_EventSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*EventSource) + out := out.(*EventSource) + out.Component = in.Component + out.Host = in.Host + return nil + } +} + +func DeepCopy_api_ExecAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExecAction) + out := out.(*ExecAction) + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + return nil + } +} + +func DeepCopy_api_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExportOptions) + out := out.(*ExportOptions) + out.TypeMeta = in.TypeMeta + out.Export = in.Export + out.Exact = in.Exact + return nil + } +} + +func DeepCopy_api_FCVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FCVolumeSource) + out := out.(*FCVolumeSource) + if in.TargetWWNs != nil { + in, out := &in.TargetWWNs, &out.TargetWWNs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.TargetWWNs = nil + } + if in.Lun != nil { + in, out := &in.Lun, &out.Lun + *out = new(int32) + **out = **in + } else { + out.Lun = nil + } + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_FlexVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlexVolumeSource) + out := out.(*FlexVolumeSource) + out.Driver = in.Driver + out.FSType = in.FSType + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Options = nil + } + return nil + } +} + +func DeepCopy_api_FlockerVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FlockerVolumeSource) + out := out.(*FlockerVolumeSource) + out.DatasetName = in.DatasetName + return nil + } +} + +func DeepCopy_api_GCEPersistentDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GCEPersistentDiskVolumeSource) + out := out.(*GCEPersistentDiskVolumeSource) + out.PDName = in.PDName + out.FSType = in.FSType + out.Partition = in.Partition + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_GitRepoVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GitRepoVolumeSource) + out := out.(*GitRepoVolumeSource) + out.Repository = in.Repository + out.Revision = in.Revision + out.Directory = in.Directory + return nil + } +} + +func DeepCopy_api_GlusterfsVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*GlusterfsVolumeSource) + out := out.(*GlusterfsVolumeSource) + out.EndpointsName = in.EndpointsName + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_HTTPGetAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPGetAction) + out := out.(*HTTPGetAction) + out.Path = in.Path + out.Port = in.Port + out.Host = in.Host + out.Scheme = in.Scheme + if in.HTTPHeaders != nil { + in, out := &in.HTTPHeaders, &out.HTTPHeaders + *out = make([]HTTPHeader, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.HTTPHeaders = nil + } + return nil + } +} + +func DeepCopy_api_HTTPHeader(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPHeader) + out := out.(*HTTPHeader) + out.Name = in.Name + out.Value = in.Value + return nil + } +} + +func DeepCopy_api_Handler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Handler) + out := out.(*Handler) + if in.Exec != nil { + in, out := &in.Exec, &out.Exec + *out = new(ExecAction) + if err := DeepCopy_api_ExecAction(*in, *out, c); err != nil { + return err + } + } else { + out.Exec = nil + } + if in.HTTPGet != nil { + in, out := &in.HTTPGet, &out.HTTPGet + *out = new(HTTPGetAction) + if err := DeepCopy_api_HTTPGetAction(*in, *out, c); err != nil { + return err + } + } else { + out.HTTPGet = nil + } + if in.TCPSocket != nil { + in, out := &in.TCPSocket, &out.TCPSocket + *out = new(TCPSocketAction) + **out = **in + } else { + out.TCPSocket = nil + } + return nil + } +} + +func DeepCopy_api_HostPathVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPathVolumeSource) + out := out.(*HostPathVolumeSource) + out.Path = in.Path + return nil + } +} + +func DeepCopy_api_ISCSIVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ISCSIVolumeSource) + out := out.(*ISCSIVolumeSource) + out.TargetPortal = in.TargetPortal + out.IQN = in.IQN + out.Lun = in.Lun + out.ISCSIInterface = in.ISCSIInterface + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_KeyToPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*KeyToPath) + out := out.(*KeyToPath) + out.Key = in.Key + out.Path = in.Path + if in.Mode != nil { + in, out := &in.Mode, &out.Mode + *out = new(int32) + **out = **in + } else { + out.Mode = nil + } + return nil + } +} + +func DeepCopy_api_Lifecycle(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Lifecycle) + out := out.(*Lifecycle) + if in.PostStart != nil { + in, out := &in.PostStart, &out.PostStart + *out = new(Handler) + if err := DeepCopy_api_Handler(*in, *out, c); err != nil { + return err + } + } else { + out.PostStart = nil + } + if in.PreStop != nil { + in, out := &in.PreStop, &out.PreStop + *out = new(Handler) + if err := DeepCopy_api_Handler(*in, *out, c); err != nil { + return err + } + } else { + out.PreStop = nil + } + return nil + } +} + +func DeepCopy_api_LimitRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRange) + out := out.(*LimitRange) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_LimitRangeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_LimitRangeItem(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeItem) + out := out.(*LimitRangeItem) + out.Type = in.Type + if in.Max != nil { + in, out := &in.Max, &out.Max + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Max = nil + } + if in.Min != nil { + in, out := &in.Min, &out.Min + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Min = nil + } + if in.Default != nil { + in, out := &in.Default, &out.Default + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Default = nil + } + if in.DefaultRequest != nil { + in, out := &in.DefaultRequest, &out.DefaultRequest + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.DefaultRequest = nil + } + if in.MaxLimitRequestRatio != nil { + in, out := &in.MaxLimitRequestRatio, &out.MaxLimitRequestRatio + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.MaxLimitRequestRatio = nil + } + return nil + } +} + +func DeepCopy_api_LimitRangeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeList) + out := out.(*LimitRangeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]LimitRange, len(*in)) + for i := range *in { + if err := DeepCopy_api_LimitRange(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_LimitRangeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LimitRangeSpec) + out := out.(*LimitRangeSpec) + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make([]LimitRangeItem, len(*in)) + for i := range *in { + if err := DeepCopy_api_LimitRangeItem(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Limits = nil + } + return nil + } +} + +func DeepCopy_api_List(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*List) + out := out.(*List) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]runtime.Object, len(*in)) + for i := range *in { + if newVal, err := c.DeepCopy(&(*in)[i]); err != nil { + return err + } else { + (*out)[i] = *newVal.(*runtime.Object) + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + out.TypeMeta = in.TypeMeta + if in.LabelSelector == nil { + out.LabelSelector = nil + } else if newVal, err := c.DeepCopy(&in.LabelSelector); err != nil { + return err + } else { + out.LabelSelector = *newVal.(*labels.Selector) + } + if in.FieldSelector == nil { + out.FieldSelector = nil + } else if newVal, err := c.DeepCopy(&in.FieldSelector); err != nil { + return err + } else { + out.FieldSelector = *newVal.(*fields.Selector) + } + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } else { + out.TimeoutSeconds = nil + } + return nil + } +} + +func DeepCopy_api_LoadBalancerIngress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerIngress) + out := out.(*LoadBalancerIngress) + out.IP = in.IP + out.Hostname = in.Hostname + return nil + } +} + +func DeepCopy_api_LoadBalancerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LoadBalancerStatus) + out := out.(*LoadBalancerStatus) + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]LoadBalancerIngress, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ingress = nil + } + return nil + } +} + +func DeepCopy_api_LocalObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalObjectReference) + out := out.(*LocalObjectReference) + out.Name = in.Name + return nil + } +} + +func DeepCopy_api_NFSVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NFSVolumeSource) + out := out.(*NFSVolumeSource) + out.Server = in.Server + out.Path = in.Path + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_Namespace(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Namespace) + out := out.(*Namespace) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_NamespaceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_api_NamespaceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceList) + out := out.(*NamespaceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Namespace, len(*in)) + for i := range *in { + if err := DeepCopy_api_Namespace(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_NamespaceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceSpec) + out := out.(*NamespaceSpec) + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]FinalizerName, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Finalizers = nil + } + return nil + } +} + +func DeepCopy_api_NamespaceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NamespaceStatus) + out := out.(*NamespaceStatus) + out.Phase = in.Phase + return nil + } +} + +func DeepCopy_api_Node(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Node) + out := out.(*Node) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_api_NodeStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_NodeAddress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAddress) + out := out.(*NodeAddress) + out.Type = in.Type + out.Address = in.Address + return nil + } +} + +func DeepCopy_api_NodeAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeAffinity) + out := out.(*NodeAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = new(NodeSelector) + if err := DeepCopy_api_NodeSelector(*in, *out, c); err != nil { + return err + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]PreferredSchedulingTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PreferredSchedulingTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_api_NodeCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeCondition) + out := out.(*NodeCondition) + out.Type = in.Type + out.Status = in.Status + out.LastHeartbeatTime = in.LastHeartbeatTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_api_NodeDaemonEndpoints(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeDaemonEndpoints) + out := out.(*NodeDaemonEndpoints) + out.KubeletEndpoint = in.KubeletEndpoint + return nil + } +} + +func DeepCopy_api_NodeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeList) + out := out.(*NodeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Node, len(*in)) + for i := range *in { + if err := DeepCopy_api_Node(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_NodeProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeProxyOptions) + out := out.(*NodeProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_api_NodeResources(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeResources) + out := out.(*NodeResources) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + return nil + } +} + +func DeepCopy_api_NodeSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelector) + out := out.(*NodeSelector) + if in.NodeSelectorTerms != nil { + in, out := &in.NodeSelectorTerms, &out.NodeSelectorTerms + *out = make([]NodeSelectorTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeSelectorTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.NodeSelectorTerms = nil + } + return nil + } +} + +func DeepCopy_api_NodeSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorRequirement) + out := out.(*NodeSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} + +func DeepCopy_api_NodeSelectorTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSelectorTerm) + out := out.(*NodeSelectorTerm) + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]NodeSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_api_NodeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSpec) + out := out.(*NodeSpec) + out.PodCIDR = in.PodCIDR + out.ExternalID = in.ExternalID + out.ProviderID = in.ProviderID + out.Unschedulable = in.Unschedulable + return nil + } +} + +func DeepCopy_api_NodeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeStatus) + out := out.(*NodeStatus) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + if in.Allocatable != nil { + in, out := &in.Allocatable, &out.Allocatable + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Allocatable = nil + } + out.Phase = in.Phase + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]NodeCondition, len(*in)) + for i := range *in { + if err := DeepCopy_api_NodeCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]NodeAddress, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Addresses = nil + } + out.DaemonEndpoints = in.DaemonEndpoints + out.NodeInfo = in.NodeInfo + if in.Images != nil { + in, out := &in.Images, &out.Images + *out = make([]ContainerImage, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerImage(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Images = nil + } + if in.VolumesInUse != nil { + in, out := &in.VolumesInUse, &out.VolumesInUse + *out = make([]UniqueVolumeName, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumesInUse = nil + } + if in.VolumesAttached != nil { + in, out := &in.VolumesAttached, &out.VolumesAttached + *out = make([]AttachedVolume, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.VolumesAttached = nil + } + return nil + } +} + +func DeepCopy_api_NodeSystemInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeSystemInfo) + out := out.(*NodeSystemInfo) + out.MachineID = in.MachineID + out.SystemUUID = in.SystemUUID + out.BootID = in.BootID + out.KernelVersion = in.KernelVersion + out.OSImage = in.OSImage + out.ContainerRuntimeVersion = in.ContainerRuntimeVersion + out.KubeletVersion = in.KubeletVersion + out.KubeProxyVersion = in.KubeProxyVersion + out.OperatingSystem = in.OperatingSystem + out.Architecture = in.Architecture + return nil + } +} + +func DeepCopy_api_ObjectFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectFieldSelector) + out := out.(*ObjectFieldSelector) + out.APIVersion = in.APIVersion + out.FieldPath = in.FieldPath + return nil + } +} + +func DeepCopy_api_ObjectMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectMeta) + out := out.(*ObjectMeta) + out.Name = in.Name + out.GenerateName = in.GenerateName + out.Namespace = in.Namespace + out.SelfLink = in.SelfLink + out.UID = in.UID + out.ResourceVersion = in.ResourceVersion + out.Generation = in.Generation + out.CreationTimestamp = in.CreationTimestamp.DeepCopy() + if in.DeletionTimestamp != nil { + in, out := &in.DeletionTimestamp, &out.DeletionTimestamp + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.DeletionTimestamp = nil + } + if in.DeletionGracePeriodSeconds != nil { + in, out := &in.DeletionGracePeriodSeconds, &out.DeletionGracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.DeletionGracePeriodSeconds = nil + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Labels = nil + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Annotations = nil + } + if in.OwnerReferences != nil { + in, out := &in.OwnerReferences, &out.OwnerReferences + *out = make([]OwnerReference, len(*in)) + for i := range *in { + if err := DeepCopy_api_OwnerReference(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.OwnerReferences = nil + } + if in.Finalizers != nil { + in, out := &in.Finalizers, &out.Finalizers + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Finalizers = nil + } + out.ClusterName = in.ClusterName + return nil + } +} + +func DeepCopy_api_ObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ObjectReference) + out := out.(*ObjectReference) + out.Kind = in.Kind + out.Namespace = in.Namespace + out.Name = in.Name + out.UID = in.UID + out.APIVersion = in.APIVersion + out.ResourceVersion = in.ResourceVersion + out.FieldPath = in.FieldPath + return nil + } +} + +func DeepCopy_api_OwnerReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*OwnerReference) + out := out.(*OwnerReference) + out.APIVersion = in.APIVersion + out.Kind = in.Kind + out.Name = in.Name + out.UID = in.UID + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + *out = new(bool) + **out = **in + } else { + out.Controller = nil + } + return nil + } +} + +func DeepCopy_api_PersistentVolume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolume) + out := out.(*PersistentVolume) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PersistentVolumeSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_api_PersistentVolumeClaim(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaim) + out := out.(*PersistentVolumeClaim) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PersistentVolumeClaimSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_PersistentVolumeClaimStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_PersistentVolumeClaimList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimList) + out := out.(*PersistentVolumeClaimList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := DeepCopy_api_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_PersistentVolumeClaimSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimSpec) + out := out.(*PersistentVolumeClaimSpec) + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := DeepCopy_api_ResourceRequirements(&in.Resources, &out.Resources, c); err != nil { + return err + } + out.VolumeName = in.VolumeName + return nil + } +} + +func DeepCopy_api_PersistentVolumeClaimStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimStatus) + out := out.(*PersistentVolumeClaimStatus) + out.Phase = in.Phase + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + return nil + } +} + +func DeepCopy_api_PersistentVolumeClaimVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeClaimVolumeSource) + out := out.(*PersistentVolumeClaimVolumeSource) + out.ClaimName = in.ClaimName + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_PersistentVolumeList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeList) + out := out.(*PersistentVolumeList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PersistentVolume, len(*in)) + for i := range *in { + if err := DeepCopy_api_PersistentVolume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_PersistentVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSource) + out := out.(*PersistentVolumeSource) + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } else { + out.AWSElasticBlockStore = nil + } + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } else { + out.HostPath = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } else { + out.Glusterfs = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } else { + out.NFS = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_api_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } else { + out.Quobyte = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + **out = **in + } else { + out.ISCSI = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_api_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_api_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_api_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FC = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } else { + out.Flocker = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } else { + out.AzureFile = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } else { + out.VsphereVolume = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_api_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil + } +} + +func DeepCopy_api_PersistentVolumeSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeSpec) + out := out.(*PersistentVolumeSpec) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + if err := DeepCopy_api_PersistentVolumeSource(&in.PersistentVolumeSource, &out.PersistentVolumeSource, c); err != nil { + return err + } + if in.AccessModes != nil { + in, out := &in.AccessModes, &out.AccessModes + *out = make([]PersistentVolumeAccessMode, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AccessModes = nil + } + if in.ClaimRef != nil { + in, out := &in.ClaimRef, &out.ClaimRef + *out = new(ObjectReference) + **out = **in + } else { + out.ClaimRef = nil + } + out.PersistentVolumeReclaimPolicy = in.PersistentVolumeReclaimPolicy + return nil + } +} + +func DeepCopy_api_PersistentVolumeStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PersistentVolumeStatus) + out := out.(*PersistentVolumeStatus) + out.Phase = in.Phase + out.Message = in.Message + out.Reason = in.Reason + return nil + } +} + +func DeepCopy_api_Pod(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Pod) + out := out.(*Pod) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_PodAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinity) + out := out.(*PodAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_api_PodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAffinityTerm) + out := out.(*PodAffinityTerm) + if in.LabelSelector != nil { + in, out := &in.LabelSelector, &out.LabelSelector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.LabelSelector = nil + } + if in.Namespaces != nil { + in, out := &in.Namespaces, &out.Namespaces + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Namespaces = nil + } + out.TopologyKey = in.TopologyKey + return nil + } +} + +func DeepCopy_api_PodAntiAffinity(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAntiAffinity) + out := out.(*PodAntiAffinity) + if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution + *out = make([]PodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.RequiredDuringSchedulingIgnoredDuringExecution = nil + } + if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { + in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution + *out = make([]WeightedPodAffinityTerm, len(*in)) + for i := range *in { + if err := DeepCopy_api_WeightedPodAffinityTerm(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.PreferredDuringSchedulingIgnoredDuringExecution = nil + } + return nil + } +} + +func DeepCopy_api_PodAttachOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodAttachOptions) + out := out.(*PodAttachOptions) + out.TypeMeta = in.TypeMeta + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + return nil + } +} + +func DeepCopy_api_PodCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodCondition) + out := out.(*PodCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_api_PodExecOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodExecOptions) + out := out.(*PodExecOptions) + out.TypeMeta = in.TypeMeta + out.Stdin = in.Stdin + out.Stdout = in.Stdout + out.Stderr = in.Stderr + out.TTY = in.TTY + out.Container = in.Container + if in.Command != nil { + in, out := &in.Command, &out.Command + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Command = nil + } + return nil + } +} + +func DeepCopy_api_PodList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodList) + out := out.(*PodList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Pod, len(*in)) + for i := range *in { + if err := DeepCopy_api_Pod(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_PodLogOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodLogOptions) + out := out.(*PodLogOptions) + out.TypeMeta = in.TypeMeta + out.Container = in.Container + out.Follow = in.Follow + out.Previous = in.Previous + if in.SinceSeconds != nil { + in, out := &in.SinceSeconds, &out.SinceSeconds + *out = new(int64) + **out = **in + } else { + out.SinceSeconds = nil + } + if in.SinceTime != nil { + in, out := &in.SinceTime, &out.SinceTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.SinceTime = nil + } + out.Timestamps = in.Timestamps + if in.TailLines != nil { + in, out := &in.TailLines, &out.TailLines + *out = new(int64) + **out = **in + } else { + out.TailLines = nil + } + if in.LimitBytes != nil { + in, out := &in.LimitBytes, &out.LimitBytes + *out = new(int64) + **out = **in + } else { + out.LimitBytes = nil + } + return nil + } +} + +func DeepCopy_api_PodProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodProxyOptions) + out := out.(*PodProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_api_PodSecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityContext) + out := out.(*PodSecurityContext) + out.HostNetwork = in.HostNetwork + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } else { + out.RunAsUser = nil + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } else { + out.RunAsNonRoot = nil + } + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } else { + out.SupplementalGroups = nil + } + if in.FSGroup != nil { + in, out := &in.FSGroup, &out.FSGroup + *out = new(int64) + **out = **in + } else { + out.FSGroup = nil + } + return nil + } +} + +func DeepCopy_api_PodSignature(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSignature) + out := out.(*PodSignature) + if in.PodController != nil { + in, out := &in.PodController, &out.PodController + *out = new(OwnerReference) + if err := DeepCopy_api_OwnerReference(*in, *out, c); err != nil { + return err + } + } else { + out.PodController = nil + } + return nil + } +} + +func DeepCopy_api_PodSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSpec) + out := out.(*PodSpec) + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]Volume, len(*in)) + for i := range *in { + if err := DeepCopy_api_Volume(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Volumes = nil + } + if in.InitContainers != nil { + in, out := &in.InitContainers, &out.InitContainers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_api_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.InitContainers = nil + } + if in.Containers != nil { + in, out := &in.Containers, &out.Containers + *out = make([]Container, len(*in)) + for i := range *in { + if err := DeepCopy_api_Container(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Containers = nil + } + out.RestartPolicy = in.RestartPolicy + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } else { + out.TerminationGracePeriodSeconds = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + out.DNSPolicy = in.DNSPolicy + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.NodeSelector = nil + } + out.ServiceAccountName = in.ServiceAccountName + out.NodeName = in.NodeName + if in.SecurityContext != nil { + in, out := &in.SecurityContext, &out.SecurityContext + *out = new(PodSecurityContext) + if err := DeepCopy_api_PodSecurityContext(*in, *out, c); err != nil { + return err + } + } else { + out.SecurityContext = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ImagePullSecrets = nil + } + out.Hostname = in.Hostname + out.Subdomain = in.Subdomain + return nil + } +} + +func DeepCopy_api_PodStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatus) + out := out.(*PodStatus) + out.Phase = in.Phase + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]PodCondition, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.Message = in.Message + out.Reason = in.Reason + out.HostIP = in.HostIP + out.PodIP = in.PodIP + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.InitContainerStatuses != nil { + in, out := &in.InitContainerStatuses, &out.InitContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.InitContainerStatuses = nil + } + if in.ContainerStatuses != nil { + in, out := &in.ContainerStatuses, &out.ContainerStatuses + *out = make([]ContainerStatus, len(*in)) + for i := range *in { + if err := DeepCopy_api_ContainerStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.ContainerStatuses = nil + } + return nil + } +} + +func DeepCopy_api_PodStatusResult(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodStatusResult) + out := out.(*PodStatusResult) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PodStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_PodTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplate) + out := out.(*PodTemplate) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_PodTemplateList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateList) + out := out.(*PodTemplateList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodTemplate, len(*in)) + for i := range *in { + if err := DeepCopy_api_PodTemplate(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_PodTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodTemplateSpec) + out := out.(*PodTemplateSpec) + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_PodSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_Preconditions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Preconditions) + out := out.(*Preconditions) + if in.UID != nil { + in, out := &in.UID, &out.UID + *out = new(types.UID) + **out = **in + } else { + out.UID = nil + } + return nil + } +} + +func DeepCopy_api_PreferAvoidPodsEntry(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferAvoidPodsEntry) + out := out.(*PreferAvoidPodsEntry) + if err := DeepCopy_api_PodSignature(&in.PodSignature, &out.PodSignature, c); err != nil { + return err + } + out.EvictionTime = in.EvictionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_api_PreferredSchedulingTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PreferredSchedulingTerm) + out := out.(*PreferredSchedulingTerm) + out.Weight = in.Weight + if err := DeepCopy_api_NodeSelectorTerm(&in.Preference, &out.Preference, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_Probe(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Probe) + out := out.(*Probe) + if err := DeepCopy_api_Handler(&in.Handler, &out.Handler, c); err != nil { + return err + } + out.InitialDelaySeconds = in.InitialDelaySeconds + out.TimeoutSeconds = in.TimeoutSeconds + out.PeriodSeconds = in.PeriodSeconds + out.SuccessThreshold = in.SuccessThreshold + out.FailureThreshold = in.FailureThreshold + return nil + } +} + +func DeepCopy_api_QuobyteVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*QuobyteVolumeSource) + out := out.(*QuobyteVolumeSource) + out.Registry = in.Registry + out.Volume = in.Volume + out.ReadOnly = in.ReadOnly + out.User = in.User + out.Group = in.Group + return nil + } +} + +func DeepCopy_api_RBDVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RBDVolumeSource) + out := out.(*RBDVolumeSource) + if in.CephMonitors != nil { + in, out := &in.CephMonitors, &out.CephMonitors + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.CephMonitors = nil + } + out.RBDImage = in.RBDImage + out.FSType = in.FSType + out.RBDPool = in.RBDPool + out.RadosUser = in.RadosUser + out.Keyring = in.Keyring + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + *out = new(LocalObjectReference) + **out = **in + } else { + out.SecretRef = nil + } + out.ReadOnly = in.ReadOnly + return nil + } +} + +func DeepCopy_api_RangeAllocation(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RangeAllocation) + out := out.(*RangeAllocation) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Range = in.Range + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_api_ReplicationController(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationController) + out := out.(*ReplicationController) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_ReplicationControllerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_api_ReplicationControllerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerList) + out := out.(*ReplicationControllerList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicationController, len(*in)) + for i := range *in { + if err := DeepCopy_api_ReplicationController(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ReplicationControllerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerSpec) + out := out.(*ReplicationControllerSpec) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Selector = nil + } + if in.Template != nil { + in, out := &in.Template, &out.Template + *out = new(PodTemplateSpec) + if err := DeepCopy_api_PodTemplateSpec(*in, *out, c); err != nil { + return err + } + } else { + out.Template = nil + } + return nil + } +} + +func DeepCopy_api_ReplicationControllerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerStatus) + out := out.(*ReplicationControllerStatus) + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil + } +} + +func DeepCopy_api_ResourceFieldSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceFieldSelector) + out := out.(*ResourceFieldSelector) + out.ContainerName = in.ContainerName + out.Resource = in.Resource + out.Divisor = in.Divisor.DeepCopy() + return nil + } +} + +func DeepCopy_api_ResourceQuota(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuota) + out := out.(*ResourceQuota) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_ResourceQuotaSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_ResourceQuotaStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_ResourceQuotaList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaList) + out := out.(*ResourceQuotaList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ResourceQuota, len(*in)) + for i := range *in { + if err := DeepCopy_api_ResourceQuota(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ResourceQuotaSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaSpec) + out := out.(*ResourceQuotaSpec) + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Hard = nil + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *out = make([]ResourceQuotaScope, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Scopes = nil + } + return nil + } +} + +func DeepCopy_api_ResourceQuotaStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceQuotaStatus) + out := out.(*ResourceQuotaStatus) + if in.Hard != nil { + in, out := &in.Hard, &out.Hard + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Hard = nil + } + if in.Used != nil { + in, out := &in.Used, &out.Used + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Used = nil + } + return nil + } +} + +func DeepCopy_api_ResourceRequirements(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceRequirements) + out := out.(*ResourceRequirements) + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Limits = nil + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Requests = nil + } + return nil + } +} + +func DeepCopy_api_SELinuxOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxOptions) + out := out.(*SELinuxOptions) + out.User = in.User + out.Role = in.Role + out.Type = in.Type + out.Level = in.Level + return nil + } +} + +func DeepCopy_api_Secret(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Secret) + out := out.(*Secret) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make(map[string][]byte) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*[]byte) + } + } + } else { + out.Data = nil + } + out.Type = in.Type + return nil + } +} + +func DeepCopy_api_SecretKeySelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretKeySelector) + out := out.(*SecretKeySelector) + out.LocalObjectReference = in.LocalObjectReference + out.Key = in.Key + return nil + } +} + +func DeepCopy_api_SecretList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretList) + out := out.(*SecretList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Secret, len(*in)) + for i := range *in { + if err := DeepCopy_api_Secret(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_SecretVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecretVolumeSource) + out := out.(*SecretVolumeSource) + out.SecretName = in.SecretName + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]KeyToPath, len(*in)) + for i := range *in { + if err := DeepCopy_api_KeyToPath(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + if in.DefaultMode != nil { + in, out := &in.DefaultMode, &out.DefaultMode + *out = new(int32) + **out = **in + } else { + out.DefaultMode = nil + } + return nil + } +} + +func DeepCopy_api_SecurityContext(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SecurityContext) + out := out.(*SecurityContext) + if in.Capabilities != nil { + in, out := &in.Capabilities, &out.Capabilities + *out = new(Capabilities) + if err := DeepCopy_api_Capabilities(*in, *out, c); err != nil { + return err + } + } else { + out.Capabilities = nil + } + if in.Privileged != nil { + in, out := &in.Privileged, &out.Privileged + *out = new(bool) + **out = **in + } else { + out.Privileged = nil + } + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + if in.RunAsUser != nil { + in, out := &in.RunAsUser, &out.RunAsUser + *out = new(int64) + **out = **in + } else { + out.RunAsUser = nil + } + if in.RunAsNonRoot != nil { + in, out := &in.RunAsNonRoot, &out.RunAsNonRoot + *out = new(bool) + **out = **in + } else { + out.RunAsNonRoot = nil + } + if in.ReadOnlyRootFilesystem != nil { + in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem + *out = new(bool) + **out = **in + } else { + out.ReadOnlyRootFilesystem = nil + } + return nil + } +} + +func DeepCopy_api_SerializedReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SerializedReference) + out := out.(*SerializedReference) + out.TypeMeta = in.TypeMeta + out.Reference = in.Reference + return nil + } +} + +func DeepCopy_api_Service(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Service) + out := out.(*Service) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_api_ServiceSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_api_ServiceStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_ServiceAccount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccount) + out := out.(*ServiceAccount) + out.TypeMeta = in.TypeMeta + if err := DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = make([]ObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Secrets = nil + } + if in.ImagePullSecrets != nil { + in, out := &in.ImagePullSecrets, &out.ImagePullSecrets + *out = make([]LocalObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.ImagePullSecrets = nil + } + return nil + } +} + +func DeepCopy_api_ServiceAccountList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceAccountList) + out := out.(*ServiceAccountList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ServiceAccount, len(*in)) + for i := range *in { + if err := DeepCopy_api_ServiceAccount(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ServiceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceList) + out := out.(*ServiceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Service, len(*in)) + for i := range *in { + if err := DeepCopy_api_Service(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_api_ServicePort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServicePort) + out := out.(*ServicePort) + out.Name = in.Name + out.Protocol = in.Protocol + out.Port = in.Port + out.TargetPort = in.TargetPort + out.NodePort = in.NodePort + return nil + } +} + +func DeepCopy_api_ServiceProxyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceProxyOptions) + out := out.(*ServiceProxyOptions) + out.TypeMeta = in.TypeMeta + out.Path = in.Path + return nil + } +} + +func DeepCopy_api_ServiceSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceSpec) + out := out.(*ServiceSpec) + out.Type = in.Type + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]ServicePort, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ports = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Selector = nil + } + out.ClusterIP = in.ClusterIP + out.ExternalName = in.ExternalName + if in.ExternalIPs != nil { + in, out := &in.ExternalIPs, &out.ExternalIPs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.ExternalIPs = nil + } + out.LoadBalancerIP = in.LoadBalancerIP + out.SessionAffinity = in.SessionAffinity + if in.LoadBalancerSourceRanges != nil { + in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.LoadBalancerSourceRanges = nil + } + return nil + } +} + +func DeepCopy_api_ServiceStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ServiceStatus) + out := out.(*ServiceStatus) + if err := DeepCopy_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_Sysctl(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Sysctl) + out := out.(*Sysctl) + out.Name = in.Name + out.Value = in.Value + return nil + } +} + +func DeepCopy_api_TCPSocketAction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TCPSocketAction) + out := out.(*TCPSocketAction) + out.Port = in.Port + return nil + } +} + +func DeepCopy_api_Taint(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Taint) + out := out.(*Taint) + out.Key = in.Key + out.Value = in.Value + out.Effect = in.Effect + return nil + } +} + +func DeepCopy_api_Toleration(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Toleration) + out := out.(*Toleration) + out.Key = in.Key + out.Operator = in.Operator + out.Value = in.Value + out.Effect = in.Effect + return nil + } +} + +func DeepCopy_api_Volume(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Volume) + out := out.(*Volume) + out.Name = in.Name + if err := DeepCopy_api_VolumeSource(&in.VolumeSource, &out.VolumeSource, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_api_VolumeMount(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeMount) + out := out.(*VolumeMount) + out.Name = in.Name + out.ReadOnly = in.ReadOnly + out.MountPath = in.MountPath + out.SubPath = in.SubPath + return nil + } +} + +func DeepCopy_api_VolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VolumeSource) + out := out.(*VolumeSource) + if in.HostPath != nil { + in, out := &in.HostPath, &out.HostPath + *out = new(HostPathVolumeSource) + **out = **in + } else { + out.HostPath = nil + } + if in.EmptyDir != nil { + in, out := &in.EmptyDir, &out.EmptyDir + *out = new(EmptyDirVolumeSource) + **out = **in + } else { + out.EmptyDir = nil + } + if in.GCEPersistentDisk != nil { + in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } else { + out.GCEPersistentDisk = nil + } + if in.AWSElasticBlockStore != nil { + in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } else { + out.AWSElasticBlockStore = nil + } + if in.GitRepo != nil { + in, out := &in.GitRepo, &out.GitRepo + *out = new(GitRepoVolumeSource) + **out = **in + } else { + out.GitRepo = nil + } + if in.Secret != nil { + in, out := &in.Secret, &out.Secret + *out = new(SecretVolumeSource) + if err := DeepCopy_api_SecretVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.Secret = nil + } + if in.NFS != nil { + in, out := &in.NFS, &out.NFS + *out = new(NFSVolumeSource) + **out = **in + } else { + out.NFS = nil + } + if in.ISCSI != nil { + in, out := &in.ISCSI, &out.ISCSI + *out = new(ISCSIVolumeSource) + **out = **in + } else { + out.ISCSI = nil + } + if in.Glusterfs != nil { + in, out := &in.Glusterfs, &out.Glusterfs + *out = new(GlusterfsVolumeSource) + **out = **in + } else { + out.Glusterfs = nil + } + if in.PersistentVolumeClaim != nil { + in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } else { + out.PersistentVolumeClaim = nil + } + if in.RBD != nil { + in, out := &in.RBD, &out.RBD + *out = new(RBDVolumeSource) + if err := DeepCopy_api_RBDVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.RBD = nil + } + if in.Quobyte != nil { + in, out := &in.Quobyte, &out.Quobyte + *out = new(QuobyteVolumeSource) + **out = **in + } else { + out.Quobyte = nil + } + if in.FlexVolume != nil { + in, out := &in.FlexVolume, &out.FlexVolume + *out = new(FlexVolumeSource) + if err := DeepCopy_api_FlexVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FlexVolume = nil + } + if in.Cinder != nil { + in, out := &in.Cinder, &out.Cinder + *out = new(CinderVolumeSource) + **out = **in + } else { + out.Cinder = nil + } + if in.CephFS != nil { + in, out := &in.CephFS, &out.CephFS + *out = new(CephFSVolumeSource) + if err := DeepCopy_api_CephFSVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.CephFS = nil + } + if in.Flocker != nil { + in, out := &in.Flocker, &out.Flocker + *out = new(FlockerVolumeSource) + **out = **in + } else { + out.Flocker = nil + } + if in.DownwardAPI != nil { + in, out := &in.DownwardAPI, &out.DownwardAPI + *out = new(DownwardAPIVolumeSource) + if err := DeepCopy_api_DownwardAPIVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.DownwardAPI = nil + } + if in.FC != nil { + in, out := &in.FC, &out.FC + *out = new(FCVolumeSource) + if err := DeepCopy_api_FCVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.FC = nil + } + if in.AzureFile != nil { + in, out := &in.AzureFile, &out.AzureFile + *out = new(AzureFileVolumeSource) + **out = **in + } else { + out.AzureFile = nil + } + if in.ConfigMap != nil { + in, out := &in.ConfigMap, &out.ConfigMap + *out = new(ConfigMapVolumeSource) + if err := DeepCopy_api_ConfigMapVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.ConfigMap = nil + } + if in.VsphereVolume != nil { + in, out := &in.VsphereVolume, &out.VsphereVolume + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } else { + out.VsphereVolume = nil + } + if in.AzureDisk != nil { + in, out := &in.AzureDisk, &out.AzureDisk + *out = new(AzureDiskVolumeSource) + if err := DeepCopy_api_AzureDiskVolumeSource(*in, *out, c); err != nil { + return err + } + } else { + out.AzureDisk = nil + } + return nil + } +} + +func DeepCopy_api_VsphereVirtualDiskVolumeSource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*VsphereVirtualDiskVolumeSource) + out := out.(*VsphereVirtualDiskVolumeSource) + out.VolumePath = in.VolumePath + out.FSType = in.FSType + return nil + } +} + +func DeepCopy_api_WeightedPodAffinityTerm(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*WeightedPodAffinityTerm) + out := out.(*WeightedPodAffinityTerm) + out.Weight = in.Weight + if err := DeepCopy_api_PodAffinityTerm(&in.PodAffinityTerm, &out.PodAffinityTerm, c); err != nil { + return err + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/announced.go b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/announced.go new file mode 100644 index 0000000000..18195480b1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/announced.go @@ -0,0 +1,107 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package announced contains tools for announcing API group factories. This is +// distinct from registration (in the 'registered' package) in that it's safe +// to announce every possible group linked in, but only groups requested at +// runtime should be registered. This package contains both a registry, and +// factory code (which was formerly copy-pasta in every install package). +package announced + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/apimachinery/registered" + "k8s.io/client-go/1.5/pkg/runtime" +) + +var ( + DefaultGroupFactoryRegistry = make(APIGroupFactoryRegistry) + + // These functions will announce your group or version. + AnnounceGroupVersion = DefaultGroupFactoryRegistry.AnnounceGroupVersion + AnnounceGroup = DefaultGroupFactoryRegistry.AnnounceGroup +) + +// APIGroupFactoryRegistry allows for groups and versions to announce themselves, +// which simply makes them available and doesn't take other actions. Later, +// users of the registry can select which groups and versions they'd actually +// like to register with an APIRegistrationManager. +// +// (Right now APIRegistrationManager has separate 'registration' and 'enabled' +// concepts-- APIGroupFactory is going to take over the former function; +// they will overlap untill the refactoring is finished.) +// +// The key is the group name. After initialization, this should be treated as +// read-only. It is implemented as a map from group name to group factory, and +// it is safe to use this knowledge to manually pick out groups to register +// (e.g., for testing). +type APIGroupFactoryRegistry map[string]*GroupMetaFactory + +func (gar APIGroupFactoryRegistry) group(groupName string) *GroupMetaFactory { + gmf, ok := gar[groupName] + if !ok { + gmf = &GroupMetaFactory{VersionArgs: map[string]*GroupVersionFactoryArgs{}} + gar[groupName] = gmf + } + return gmf +} + +// AnnounceGroupVersion adds the particular arguments for this group version to the group factory. +func (gar APIGroupFactoryRegistry) AnnounceGroupVersion(gvf *GroupVersionFactoryArgs) error { + gmf := gar.group(gvf.GroupName) + if _, ok := gmf.VersionArgs[gvf.VersionName]; ok { + return fmt.Errorf("version %q in group %q has already been announced", gvf.VersionName, gvf.GroupName) + } + gmf.VersionArgs[gvf.VersionName] = gvf + return nil +} + +// AnnounceGroup adds the group-wide arguments to the group factory. +func (gar APIGroupFactoryRegistry) AnnounceGroup(args *GroupMetaFactoryArgs) error { + gmf := gar.group(args.GroupName) + if gmf.GroupArgs != nil { + return fmt.Errorf("group %q has already been announced", args.GroupName) + } + gmf.GroupArgs = args + return nil +} + +// RegisterAndEnableAll throws every factory at the specified API registration +// manager, and lets it decide which to register. (If you want to do this a la +// cart, you may look through gar itself-- it's just a map.) +func (gar APIGroupFactoryRegistry) RegisterAndEnableAll(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error { + for groupName, gmf := range gar { + if err := gmf.Register(m); err != nil { + return fmt.Errorf("error registering %v: %v", groupName, err) + } + if err := gmf.Enable(m, scheme); err != nil { + return fmt.Errorf("error enabling %v: %v", groupName, err) + } + } + return nil +} + +// AnnouncePreconstructedFactory announces a factory which you've manually assembled. +// You may call this instead of calling AnnounceGroup and AnnounceGroupVersion. +func (gar APIGroupFactoryRegistry) AnnouncePreconstructedFactory(gmf *GroupMetaFactory) error { + name := gmf.GroupArgs.GroupName + if _, exists := gar[name]; exists { + return fmt.Errorf("the group %q has already been announced.", name) + } + gar[name] = gmf + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/group_factory.go b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/group_factory.go new file mode 100644 index 0000000000..2895b15c2a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/announced/group_factory.go @@ -0,0 +1,247 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package announced + +import ( + "fmt" + + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/apimachinery" + "k8s.io/client-go/1.5/pkg/apimachinery/registered" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +type SchemeFunc func(*runtime.Scheme) error +type VersionToSchemeFunc map[string]SchemeFunc + +// GroupVersionFactoryArgs contains all the per-version parts of a GroupMetaFactory. +type GroupVersionFactoryArgs struct { + GroupName string + VersionName string + + AddToScheme SchemeFunc +} + +// GroupMetaFactoryArgs contains the group-level args of a GroupMetaFactory. +type GroupMetaFactoryArgs struct { + GroupName string + VersionPreferenceOrder []string + ImportPrefix string + + RootScopedKinds sets.String // nil is allowed + IgnoredKinds sets.String // nil is allowed + + // May be nil if there are no internal objects. + AddInternalObjectsToScheme SchemeFunc +} + +// NewGroupMetaFactory builds the args for you. This is for if you're +// constructing a factory all at once and not using the registry. +func NewGroupMetaFactory(groupArgs *GroupMetaFactoryArgs, versions VersionToSchemeFunc) *GroupMetaFactory { + gmf := &GroupMetaFactory{ + GroupArgs: groupArgs, + VersionArgs: map[string]*GroupVersionFactoryArgs{}, + } + for v, f := range versions { + gmf.VersionArgs[v] = &GroupVersionFactoryArgs{ + GroupName: groupArgs.GroupName, + VersionName: v, + AddToScheme: f, + } + } + return gmf +} + +// Announce adds this Group factory to the global factory registry. It should +// only be called if you constructed the GroupMetaFactory yourself via +// NewGroupMetadFactory. +// Note that this will panic on an error, since it's expected that you'll be +// calling this at initialization time and any error is a result of a +// programmer importing the wrong set of packages. If this assumption doesn't +// work for you, just call DefaultGroupFactoryRegistry.AnnouncePreconstructedFactory +// yourself. +func (gmf *GroupMetaFactory) Announce() *GroupMetaFactory { + if err := DefaultGroupFactoryRegistry.AnnouncePreconstructedFactory(gmf); err != nil { + panic(err) + } + return gmf +} + +// GroupMetaFactory has the logic for actually assembling and registering a group. +// +// There are two ways of obtaining one of these. +// 1. You can announce your group and versions separately, and then let the +// GroupFactoryRegistry assemble this object for you. (This allows group and +// versions to be imported separately, without referencing each other, to +// keep import trees small.) +// 2. You can call NewGroupMetaFactory(), which is mostly a drop-in replacement +// for the old, bad way of doing things. You can then call .Announce() to +// announce your constructed factory to any code that would like to do +// things the new, better way. +// +// Note that GroupMetaFactory actually does construct GroupMeta objects, but +// currently it does so in a way that's very entangled with an +// APIRegistrationManager. It's a TODO item to cleanly separate that interface. +type GroupMetaFactory struct { + GroupArgs *GroupMetaFactoryArgs + // map of version name to version factory + VersionArgs map[string]*GroupVersionFactoryArgs + + // assembled by Register() + prioritizedVersionList []unversioned.GroupVersion +} + +// Register constructs the finalized prioritized version list and sanity checks +// the announced group & versions. Then it calls register. +func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) error { + if gmf.GroupArgs == nil { + return fmt.Errorf("partially announced groups are not allowed, only got versions: %#v", gmf.VersionArgs) + } + if len(gmf.VersionArgs) == 0 { + return fmt.Errorf("group %v announced but no versions announced", gmf.GroupArgs.GroupName) + } + + pvSet := sets.NewString(gmf.GroupArgs.VersionPreferenceOrder...) + if pvSet.Len() != len(gmf.GroupArgs.VersionPreferenceOrder) { + return fmt.Errorf("preference order for group %v has duplicates: %v", gmf.GroupArgs.GroupName, gmf.GroupArgs.VersionPreferenceOrder) + } + prioritizedVersions := []unversioned.GroupVersion{} + for _, v := range gmf.GroupArgs.VersionPreferenceOrder { + prioritizedVersions = append( + prioritizedVersions, + unversioned.GroupVersion{ + Group: gmf.GroupArgs.GroupName, + Version: v, + }, + ) + } + + // Go through versions that weren't explicitly prioritized. + unprioritizedVersions := []unversioned.GroupVersion{} + for _, v := range gmf.VersionArgs { + if v.GroupName != gmf.GroupArgs.GroupName { + return fmt.Errorf("found %v/%v in group %v?", v.GroupName, v.VersionName, gmf.GroupArgs.GroupName) + } + if pvSet.Has(v.VersionName) { + pvSet.Delete(v.VersionName) + continue + } + unprioritizedVersions = append(unprioritizedVersions, unversioned.GroupVersion{Group: v.GroupName, Version: v.VersionName}) + } + if len(unprioritizedVersions) > 1 { + glog.Warningf("group %v has multiple unprioritized versions: %#v. They will have an arbitrary preference order!", gmf.GroupArgs.GroupName, unprioritizedVersions) + } + if pvSet.Len() != 0 { + return fmt.Errorf("group %v has versions in the priority list that were never announced: %s", gmf.GroupArgs.GroupName, pvSet) + } + prioritizedVersions = append(prioritizedVersions, unprioritizedVersions...) + m.RegisterVersions(prioritizedVersions) + gmf.prioritizedVersionList = prioritizedVersions + return nil +} + +func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []unversioned.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper { + // the list of kinds that are scoped at the root of the api hierarchy + // if a kind is not enumerated here, it is assumed to have a namespace scope + rootScoped := sets.NewString() + if gmf.GroupArgs.RootScopedKinds != nil { + rootScoped = gmf.GroupArgs.RootScopedKinds + } + ignoredKinds := sets.NewString() + if gmf.GroupArgs.IgnoredKinds != nil { + ignoredKinds = gmf.GroupArgs.IgnoredKinds + } + + return api.NewDefaultRESTMapperFromScheme( + externalVersions, + groupMeta.InterfacesFor, + gmf.GroupArgs.ImportPrefix, + ignoredKinds, + rootScoped, + scheme, + ) +} + +// Enable enables group versions that are allowed, adds methods to the scheme, etc. +func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error { + externalVersions := []unversioned.GroupVersion{} + for _, v := range gmf.prioritizedVersionList { + if !m.IsAllowedVersion(v) { + continue + } + externalVersions = append(externalVersions, v) + if err := m.EnableVersions(v); err != nil { + return err + } + gmf.VersionArgs[v.Version].AddToScheme(scheme) + } + if len(externalVersions) == 0 { + glog.V(4).Infof("No version is registered for group %v", gmf.GroupArgs.GroupName) + return nil + } + + if gmf.GroupArgs.AddInternalObjectsToScheme != nil { + gmf.GroupArgs.AddInternalObjectsToScheme(scheme) + } + + preferredExternalVersion := externalVersions[0] + accessor := meta.NewAccessor() + + groupMeta := &apimachinery.GroupMeta{ + GroupVersion: preferredExternalVersion, + GroupVersions: externalVersions, + SelfLinker: runtime.SelfLinker(accessor), + } + for _, v := range externalVersions { + gvf := gmf.VersionArgs[v.Version] + if err := groupMeta.AddVersionInterfaces( + unversioned.GroupVersion{Group: gvf.GroupName, Version: gvf.VersionName}, + &meta.VersionInterfaces{ + ObjectConvertor: scheme, + MetadataAccessor: accessor, + }, + ); err != nil { + return err + } + } + groupMeta.InterfacesFor = groupMeta.DefaultInterfacesFor + groupMeta.RESTMapper = gmf.newRESTMapper(scheme, externalVersions, groupMeta) + + if err := m.RegisterGroup(*groupMeta); err != nil { + return err + } + return nil +} + +// RegisterAndEnable is provided only to allow this code to get added in multiple steps. +// It's really bad that this is called in init() methods, but supporting this +// temporarily lets us do the change incrementally. +func (gmf *GroupMetaFactory) RegisterAndEnable() error { + if err := gmf.Register(registered.DefaultAPIRegistrationManager); err != nil { + return err + } + if err := gmf.Enable(registered.DefaultAPIRegistrationManager, api.Scheme); err != nil { + return err + } + + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apimachinery/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/doc.go new file mode 100644 index 0000000000..ede22b3d68 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package apimachinery contains the generic API machinery code that +// is common to both server and clients. +// This package should never import specific API objects. +package apimachinery diff --git a/vendor/k8s.io/client-go/1.5/pkg/apimachinery/registered/registered.go b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/registered/registered.go new file mode 100644 index 0000000000..5ca48f5149 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/registered/registered.go @@ -0,0 +1,403 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package to keep track of API Versions that can be registered and are enabled in api.Scheme. +package registered + +import ( + "fmt" + "os" + "sort" + "strings" + + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/apimachinery" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +var ( + DefaultAPIRegistrationManager = NewOrDie(os.Getenv("KUBE_API_VERSIONS")) +) + +// APIRegistrationManager provides the concept of what API groups are enabled. +// +// TODO: currently, it also provides a "registered" concept. But it's wrong to +// have both concepts in the same object. Therefore the "announced" package is +// going to take over the registered concept. After all the install packages +// are switched to using the announce package instead of this package, then we +// can combine the registered/enabled concepts in this object. Simplifying this +// isn't easy right now because there are so many callers of this package. +type APIRegistrationManager struct { + // registeredGroupVersions stores all API group versions for which RegisterGroup is called. + registeredVersions map[unversioned.GroupVersion]struct{} + + // thirdPartyGroupVersions are API versions which are dynamically + // registered (and unregistered) via API calls to the apiserver + thirdPartyGroupVersions []unversioned.GroupVersion + + // enabledVersions represents all enabled API versions. It should be a + // subset of registeredVersions. Please call EnableVersions() to add + // enabled versions. + enabledVersions map[unversioned.GroupVersion]struct{} + + // map of group meta for all groups. + groupMetaMap map[string]*apimachinery.GroupMeta + + // envRequestedVersions represents the versions requested via the + // KUBE_API_VERSIONS environment variable. The install package of each group + // checks this list before add their versions to the latest package and + // Scheme. This list is small and order matters, so represent as a slice + envRequestedVersions []unversioned.GroupVersion +} + +// NewAPIRegistrationManager constructs a new manager. The argument ought to be +// the value of the KUBE_API_VERSIONS env var, or a value of this which you +// wish to test. +func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) { + m := &APIRegistrationManager{ + registeredVersions: map[unversioned.GroupVersion]struct{}{}, + thirdPartyGroupVersions: []unversioned.GroupVersion{}, + enabledVersions: map[unversioned.GroupVersion]struct{}{}, + groupMetaMap: map[string]*apimachinery.GroupMeta{}, + envRequestedVersions: []unversioned.GroupVersion{}, + } + + if len(kubeAPIVersions) != 0 { + for _, version := range strings.Split(kubeAPIVersions, ",") { + gv, err := unversioned.ParseGroupVersion(version) + if err != nil { + return nil, fmt.Errorf("invalid api version: %s in KUBE_API_VERSIONS: %s.", + version, kubeAPIVersions) + } + m.envRequestedVersions = append(m.envRequestedVersions, gv) + } + } + return m, nil +} + +func NewOrDie(kubeAPIVersions string) *APIRegistrationManager { + m, err := NewAPIRegistrationManager(kubeAPIVersions) + if err != nil { + glog.Fatalf("Could not construct version manager: %v (KUBE_API_VERSIONS=%q)", err, kubeAPIVersions) + } + return m +} + +// People are calling global functions. Let them continue to do that (for now). +var ( + ValidateEnvRequestedVersions = DefaultAPIRegistrationManager.ValidateEnvRequestedVersions + AllPreferredGroupVersions = DefaultAPIRegistrationManager.AllPreferredGroupVersions + RESTMapper = DefaultAPIRegistrationManager.RESTMapper + GroupOrDie = DefaultAPIRegistrationManager.GroupOrDie + AddThirdPartyAPIGroupVersions = DefaultAPIRegistrationManager.AddThirdPartyAPIGroupVersions + IsThirdPartyAPIGroupVersion = DefaultAPIRegistrationManager.IsThirdPartyAPIGroupVersion + RegisteredGroupVersions = DefaultAPIRegistrationManager.RegisteredGroupVersions + IsRegisteredVersion = DefaultAPIRegistrationManager.IsRegisteredVersion + IsRegistered = DefaultAPIRegistrationManager.IsRegistered + Group = DefaultAPIRegistrationManager.Group + EnabledVersionsForGroup = DefaultAPIRegistrationManager.EnabledVersionsForGroup + EnabledVersions = DefaultAPIRegistrationManager.EnabledVersions + IsEnabledVersion = DefaultAPIRegistrationManager.IsEnabledVersion + IsAllowedVersion = DefaultAPIRegistrationManager.IsAllowedVersion + EnableVersions = DefaultAPIRegistrationManager.EnableVersions + RegisterGroup = DefaultAPIRegistrationManager.RegisterGroup + RegisterVersions = DefaultAPIRegistrationManager.RegisterVersions + InterfacesFor = DefaultAPIRegistrationManager.InterfacesFor +) + +// RegisterVersions adds the given group versions to the list of registered group versions. +func (m *APIRegistrationManager) RegisterVersions(availableVersions []unversioned.GroupVersion) { + for _, v := range availableVersions { + m.registeredVersions[v] = struct{}{} + } +} + +// RegisterGroup adds the given group to the list of registered groups. +func (m *APIRegistrationManager) RegisterGroup(groupMeta apimachinery.GroupMeta) error { + groupName := groupMeta.GroupVersion.Group + if _, found := m.groupMetaMap[groupName]; found { + return fmt.Errorf("group %v is already registered", m.groupMetaMap) + } + m.groupMetaMap[groupName] = &groupMeta + return nil +} + +// EnableVersions adds the versions for the given group to the list of enabled versions. +// Note that the caller should call RegisterGroup before calling this method. +// The caller of this function is responsible to add the versions to scheme and RESTMapper. +func (m *APIRegistrationManager) EnableVersions(versions ...unversioned.GroupVersion) error { + var unregisteredVersions []unversioned.GroupVersion + for _, v := range versions { + if _, found := m.registeredVersions[v]; !found { + unregisteredVersions = append(unregisteredVersions, v) + } + m.enabledVersions[v] = struct{}{} + } + if len(unregisteredVersions) != 0 { + return fmt.Errorf("Please register versions before enabling them: %v", unregisteredVersions) + } + return nil +} + +// IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS +// environment variable. If the environment variable is empty, then it always +// returns true. +func (m *APIRegistrationManager) IsAllowedVersion(v unversioned.GroupVersion) bool { + if len(m.envRequestedVersions) == 0 { + return true + } + for _, envGV := range m.envRequestedVersions { + if v == envGV { + return true + } + } + return false +} + +// IsEnabledVersion returns if a version is enabled. +func (m *APIRegistrationManager) IsEnabledVersion(v unversioned.GroupVersion) bool { + _, found := m.enabledVersions[v] + return found +} + +// EnabledVersions returns all enabled versions. Groups are randomly ordered, but versions within groups +// are priority order from best to worst +func (m *APIRegistrationManager) EnabledVersions() []unversioned.GroupVersion { + ret := []unversioned.GroupVersion{} + for _, groupMeta := range m.groupMetaMap { + for _, version := range groupMeta.GroupVersions { + if m.IsEnabledVersion(version) { + ret = append(ret, version) + } + } + } + return ret +} + +// EnabledVersionsForGroup returns all enabled versions for a group in order of best to worst +func (m *APIRegistrationManager) EnabledVersionsForGroup(group string) []unversioned.GroupVersion { + groupMeta, ok := m.groupMetaMap[group] + if !ok { + return []unversioned.GroupVersion{} + } + + ret := []unversioned.GroupVersion{} + for _, version := range groupMeta.GroupVersions { + if m.IsEnabledVersion(version) { + ret = append(ret, version) + } + } + return ret +} + +// Group returns the metadata of a group if the group is registered, otherwise +// an error is returned. +func (m *APIRegistrationManager) Group(group string) (*apimachinery.GroupMeta, error) { + groupMeta, found := m.groupMetaMap[group] + if !found { + return nil, fmt.Errorf("group %v has not been registered", group) + } + groupMetaCopy := *groupMeta + return &groupMetaCopy, nil +} + +// IsRegistered takes a string and determines if it's one of the registered groups +func (m *APIRegistrationManager) IsRegistered(group string) bool { + _, found := m.groupMetaMap[group] + return found +} + +// IsRegisteredVersion returns if a version is registered. +func (m *APIRegistrationManager) IsRegisteredVersion(v unversioned.GroupVersion) bool { + _, found := m.registeredVersions[v] + return found +} + +// RegisteredGroupVersions returns all registered group versions. +func (m *APIRegistrationManager) RegisteredGroupVersions() []unversioned.GroupVersion { + ret := []unversioned.GroupVersion{} + for groupVersion := range m.registeredVersions { + ret = append(ret, groupVersion) + } + return ret +} + +// IsThirdPartyAPIGroupVersion returns true if the api version is a user-registered group/version. +func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv unversioned.GroupVersion) bool { + for ix := range m.thirdPartyGroupVersions { + if m.thirdPartyGroupVersions[ix] == gv { + return true + } + } + return false +} + +// AddThirdPartyAPIGroupVersions sets the list of third party versions, +// registers them in the API machinery and enables them. +// Skips GroupVersions that are already registered. +// Returns the list of GroupVersions that were skipped. +func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...unversioned.GroupVersion) []unversioned.GroupVersion { + filteredGVs := []unversioned.GroupVersion{} + skippedGVs := []unversioned.GroupVersion{} + for ix := range gvs { + if !m.IsRegisteredVersion(gvs[ix]) { + filteredGVs = append(filteredGVs, gvs[ix]) + } else { + glog.V(3).Infof("Skipping %s, because its already registered", gvs[ix].String()) + skippedGVs = append(skippedGVs, gvs[ix]) + } + } + if len(filteredGVs) == 0 { + return skippedGVs + } + m.RegisterVersions(filteredGVs) + m.EnableVersions(filteredGVs...) + m.thirdPartyGroupVersions = append(m.thirdPartyGroupVersions, filteredGVs...) + + return skippedGVs +} + +// InterfacesFor is a union meta.VersionInterfacesFunc func for all registered types +func (m *APIRegistrationManager) InterfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { + groupMeta, err := m.Group(version.Group) + if err != nil { + return nil, err + } + return groupMeta.InterfacesFor(version) +} + +// TODO: This is an expedient function, because we don't check if a Group is +// supported throughout the code base. We will abandon this function and +// checking the error returned by the Group() function. +func (m *APIRegistrationManager) GroupOrDie(group string) *apimachinery.GroupMeta { + groupMeta, found := m.groupMetaMap[group] + if !found { + if group == "" { + panic("The legacy v1 API is not registered.") + } else { + panic(fmt.Sprintf("Group %s is not registered.", group)) + } + } + groupMetaCopy := *groupMeta + return &groupMetaCopy +} + +// RESTMapper returns a union RESTMapper of all known types with priorities chosen in the following order: +// 1. if KUBE_API_VERSIONS is specified, then KUBE_API_VERSIONS in order, OR +// 1. legacy kube group preferred version, extensions preferred version, metrics perferred version, legacy +// kube any version, extensions any version, metrics any version, all other groups alphabetical preferred version, +// all other groups alphabetical. +func (m *APIRegistrationManager) RESTMapper(versionPatterns ...unversioned.GroupVersion) meta.RESTMapper { + unionMapper := meta.MultiRESTMapper{} + unionedGroups := sets.NewString() + for enabledVersion := range m.enabledVersions { + if !unionedGroups.Has(enabledVersion.Group) { + unionedGroups.Insert(enabledVersion.Group) + groupMeta := m.groupMetaMap[enabledVersion.Group] + unionMapper = append(unionMapper, groupMeta.RESTMapper) + } + } + + if len(versionPatterns) != 0 { + resourcePriority := []unversioned.GroupVersionResource{} + kindPriority := []unversioned.GroupVersionKind{} + for _, versionPriority := range versionPatterns { + resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind)) + } + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} + } + + if len(m.envRequestedVersions) != 0 { + resourcePriority := []unversioned.GroupVersionResource{} + kindPriority := []unversioned.GroupVersionKind{} + + for _, versionPriority := range m.envRequestedVersions { + resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind)) + } + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} + } + + prioritizedGroups := []string{"", "extensions", "metrics"} + resourcePriority, kindPriority := m.prioritiesForGroups(prioritizedGroups...) + + prioritizedGroupsSet := sets.NewString(prioritizedGroups...) + remainingGroups := sets.String{} + for enabledVersion := range m.enabledVersions { + if !prioritizedGroupsSet.Has(enabledVersion.Group) { + remainingGroups.Insert(enabledVersion.Group) + } + } + + remainingResourcePriority, remainingKindPriority := m.prioritiesForGroups(remainingGroups.List()...) + resourcePriority = append(resourcePriority, remainingResourcePriority...) + kindPriority = append(kindPriority, remainingKindPriority...) + + return meta.PriorityRESTMapper{Delegate: unionMapper, ResourcePriority: resourcePriority, KindPriority: kindPriority} +} + +// prioritiesForGroups returns the resource and kind priorities for a PriorityRESTMapper, preferring the preferred version of each group first, +// then any non-preferred version of the group second. +func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]unversioned.GroupVersionResource, []unversioned.GroupVersionKind) { + resourcePriority := []unversioned.GroupVersionResource{} + kindPriority := []unversioned.GroupVersionKind{} + + for _, group := range groups { + availableVersions := m.EnabledVersionsForGroup(group) + if len(availableVersions) > 0 { + resourcePriority = append(resourcePriority, availableVersions[0].WithResource(meta.AnyResource)) + kindPriority = append(kindPriority, availableVersions[0].WithKind(meta.AnyKind)) + } + } + for _, group := range groups { + resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource}) + kindPriority = append(kindPriority, unversioned.GroupVersionKind{Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind}) + } + + return resourcePriority, kindPriority +} + +// AllPreferredGroupVersions returns the preferred versions of all registered +// groups in the form of "group1/version1,group2/version2,..." +func (m *APIRegistrationManager) AllPreferredGroupVersions() string { + if len(m.groupMetaMap) == 0 { + return "" + } + var defaults []string + for _, groupMeta := range m.groupMetaMap { + defaults = append(defaults, groupMeta.GroupVersion.String()) + } + sort.Strings(defaults) + return strings.Join(defaults, ",") +} + +// ValidateEnvRequestedVersions returns a list of versions that are requested in +// the KUBE_API_VERSIONS environment variable, but not enabled. +func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []unversioned.GroupVersion { + var missingVersions []unversioned.GroupVersion + for _, v := range m.envRequestedVersions { + if _, found := m.enabledVersions[v]; !found { + missingVersions = append(missingVersions, v) + } + } + return missingVersions +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apimachinery/types.go b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/types.go new file mode 100644 index 0000000000..b3fc7b8340 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apimachinery/types.go @@ -0,0 +1,93 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apimachinery + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupMeta stores the metadata of a group. +type GroupMeta struct { + // GroupVersion represents the preferred version of the group. + GroupVersion unversioned.GroupVersion + + // GroupVersions is Group + all versions in that group. + GroupVersions []unversioned.GroupVersion + + // Codec is the default codec for serializing output that should use + // the preferred version. Use this Codec when writing to + // disk, a data store that is not dynamically versioned, or in tests. + // This codec can decode any object that the schema is aware of. + Codec runtime.Codec + + // SelfLinker can set or get the SelfLink field of all API types. + // TODO: when versioning changes, make this part of each API definition. + // TODO(lavalamp): Combine SelfLinker & ResourceVersioner interfaces, force all uses + // to go through the InterfacesFor method below. + SelfLinker runtime.SelfLinker + + // RESTMapper provides the default mapping between REST paths and the objects declared in api.Scheme and all known + // versions. + RESTMapper meta.RESTMapper + + // InterfacesFor returns the default Codec and ResourceVersioner for a given version + // string, or an error if the version is not known. + // TODO: make this stop being a func pointer and always use the default + // function provided below once every place that populates this field has been changed. + InterfacesFor func(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) + + // InterfacesByVersion stores the per-version interfaces. + InterfacesByVersion map[unversioned.GroupVersion]*meta.VersionInterfaces +} + +// DefaultInterfacesFor returns the default Codec and ResourceVersioner for a given version +// string, or an error if the version is not known. +// TODO: Remove the "Default" prefix. +func (gm *GroupMeta) DefaultInterfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { + if v, ok := gm.InterfacesByVersion[version]; ok { + return v, nil + } + return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, gm.GroupVersions) +} + +// AddVersionInterfaces adds the given version to the group. Only call during +// init, after that GroupMeta objects should be immutable. Not thread safe. +// (If you use this, be sure to set .InterfacesFor = .DefaultInterfacesFor) +// TODO: remove the "Interfaces" suffix and make this also maintain the +// .GroupVersions member. +func (gm *GroupMeta) AddVersionInterfaces(version unversioned.GroupVersion, interfaces *meta.VersionInterfaces) error { + if e, a := gm.GroupVersion.Group, version.Group; a != e { + return fmt.Errorf("got a version in group %v, but am in group %v", a, e) + } + if gm.InterfacesByVersion == nil { + gm.InterfacesByVersion = make(map[unversioned.GroupVersion]*meta.VersionInterfaces) + } + gm.InterfacesByVersion[version] = interfaces + + // TODO: refactor to make the below error not possible, this function + // should *set* GroupVersions rather than depend on it. + for _, v := range gm.GroupVersions { + if v == version { + return nil + } + } + return fmt.Errorf("added a version interface without the corresponding version %v being in the list %#v", version, gm.GroupVersions) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/doc.go new file mode 100644 index 0000000000..23aa5a09b2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package apps diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/install/install.go new file mode 100644 index 0000000000..ef8f7e7ad7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/install/install.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the apps API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/apps" + "k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: apps.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/apps", + AddInternalObjectsToScheme: apps.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/register.go new file mode 100644 index 0000000000..26305ac462 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/register.go @@ -0,0 +1,56 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apps + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this will get cleaned up with the scheme types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &PetSet{}, + &PetSetList{}, + &api.ListOptions{}, + &api.DeleteOptions{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.generated.go new file mode 100644 index 0000000000..6e910b9449 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.generated.go @@ -0,0 +1,1628 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package apps + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg4_resource.Quantity + var v2 pkg1_unversioned.TypeMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *PetSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PetSetSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PetSetStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PetSetSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PetSetStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [5]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Replicas != 0 + yyq33[1] = x.Selector != nil + yyq33[3] = len(x.VolumeClaimTemplates) != 0 + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(5) + } else { + yynn33 = 2 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym39 := z.EncBinary() + _ = yym39 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy41 := &x.Template + yy41.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy42 := &x.Template + yy42.CodecEncodeSelf(e) + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[3] { + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + h.encSliceapi_PersistentVolumeClaim(([]pkg2_api.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeClaimTemplates")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + h.encSliceapi_PersistentVolumeClaim(([]pkg2_api.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym49 := z.DecBinary() + _ = yym49 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct50 := r.ContainerType() + if yyct50 == codecSelferValueTypeMap1234 { + yyl50 := r.ReadMapStart() + if yyl50 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl50, d) + } + } else if yyct50 == codecSelferValueTypeArray1234 { + yyl50 := r.ReadArrayStart() + if yyl50 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl50, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys51Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys51Slc + var yyhl51 bool = l >= 0 + for yyj51 := 0; ; yyj51++ { + if yyhl51 { + if yyj51 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys51Slc = r.DecodeBytes(yys51Slc, true, true) + yys51 := string(yys51Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys51 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int(r.DecodeInt(codecSelferBitsize1234)) + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv55 := &x.Template + yyv55.CodecDecodeSelf(d) + } + case "volumeClaimTemplates": + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv56 := &x.VolumeClaimTemplates + yym57 := z.DecBinary() + _ = yym57 + if false { + } else { + h.decSliceapi_PersistentVolumeClaim((*[]pkg2_api.PersistentVolumeClaim)(yyv56), d) + } + } + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys51) + } // end switch yys51 + } // end for yyj51 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj59 int + var yyb59 bool + var yyhl59 bool = l >= 0 + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int(r.DecodeInt(codecSelferBitsize1234)) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym62 := z.DecBinary() + _ = yym62 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv63 := &x.Template + yyv63.CodecDecodeSelf(d) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv64 := &x.VolumeClaimTemplates + yym65 := z.DecBinary() + _ = yym65 + if false { + } else { + h.decSliceapi_PersistentVolumeClaim((*[]pkg2_api.PersistentVolumeClaim)(yyv64), d) + } + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + for { + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj59-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym67 := z.EncBinary() + _ = yym67 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep68 := !z.EncBinary() + yy2arr68 := z.EncBasicHandle().StructToArray + var yyq68 [2]bool + _, _, _ = yysep68, yyq68, yy2arr68 + const yyr68 bool = false + yyq68[0] = x.ObservedGeneration != nil + var yynn68 int + if yyr68 || yy2arr68 { + r.EncodeArrayStart(2) + } else { + yynn68 = 1 + for _, b := range yyq68 { + if b { + yynn68++ + } + } + r.EncodeMapStart(yynn68) + yynn68 = 0 + } + if yyr68 || yy2arr68 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq68[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy70 := *x.ObservedGeneration + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeInt(int64(yy70)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq68[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy72 := *x.ObservedGeneration + yym73 := z.EncBinary() + _ = yym73 + if false { + } else { + r.EncodeInt(int64(yy72)) + } + } + } + } + if yyr68 || yy2arr68 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym75 := z.EncBinary() + _ = yym75 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym76 := z.EncBinary() + _ = yym76 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr68 || yy2arr68 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym77 := z.DecBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct78 := r.ContainerType() + if yyct78 == codecSelferValueTypeMap1234 { + yyl78 := r.ReadMapStart() + if yyl78 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl78, d) + } + } else if yyct78 == codecSelferValueTypeArray1234 { + yyl78 := r.ReadArrayStart() + if yyl78 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl78, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys79Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys79Slc + var yyhl79 bool = l >= 0 + for yyj79 := 0; ; yyj79++ { + if yyhl79 { + if yyj79 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys79Slc = r.DecodeBytes(yys79Slc, true, true) + yys79 := string(yys79Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys79 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int(r.DecodeInt(codecSelferBitsize1234)) + } + default: + z.DecStructFieldNotFound(-1, yys79) + } // end switch yys79 + } // end for yyj79 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj83 int + var yyb83 bool + var yyhl83 bool = l >= 0 + yyj83++ + if yyhl83 { + yyb83 = yyj83 > l + } else { + yyb83 = r.CheckBreak() + } + if yyb83 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym85 := z.DecBinary() + _ = yym85 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj83++ + if yyhl83 { + yyb83 = yyj83 > l + } else { + yyb83 = r.CheckBreak() + } + if yyb83 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int(r.DecodeInt(codecSelferBitsize1234)) + } + for { + yyj83++ + if yyhl83 { + yyb83 = yyj83 > l + } else { + yyb83 = r.CheckBreak() + } + if yyb83 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj83-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym87 := z.EncBinary() + _ = yym87 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep88 := !z.EncBinary() + yy2arr88 := z.EncBasicHandle().StructToArray + var yyq88 [4]bool + _, _, _ = yysep88, yyq88, yy2arr88 + const yyr88 bool = false + yyq88[0] = x.Kind != "" + yyq88[1] = x.APIVersion != "" + yyq88[2] = true + var yynn88 int + if yyr88 || yy2arr88 { + r.EncodeArrayStart(4) + } else { + yynn88 = 1 + for _, b := range yyq88 { + if b { + yynn88++ + } + } + r.EncodeMapStart(yynn88) + yynn88 = 0 + } + if yyr88 || yy2arr88 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq88[0] { + yym90 := z.EncBinary() + _ = yym90 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq88[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym91 := z.EncBinary() + _ = yym91 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr88 || yy2arr88 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq88[1] { + yym93 := z.EncBinary() + _ = yym93 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq88[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym94 := z.EncBinary() + _ = yym94 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr88 || yy2arr88 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq88[2] { + yy96 := &x.ListMeta + yym97 := z.EncBinary() + _ = yym97 + if false { + } else if z.HasExtensions() && z.EncExt(yy96) { + } else { + z.EncFallback(yy96) + } + } else { + r.EncodeNil() + } + } else { + if yyq88[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy98 := &x.ListMeta + yym99 := z.EncBinary() + _ = yym99 + if false { + } else if z.HasExtensions() && z.EncExt(yy98) { + } else { + z.EncFallback(yy98) + } + } + } + if yyr88 || yy2arr88 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym101 := z.EncBinary() + _ = yym101 + if false { + } else { + h.encSlicePetSet(([]PetSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym102 := z.EncBinary() + _ = yym102 + if false { + } else { + h.encSlicePetSet(([]PetSet)(x.Items), e) + } + } + } + if yyr88 || yy2arr88 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym103 := z.DecBinary() + _ = yym103 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct104 := r.ContainerType() + if yyct104 == codecSelferValueTypeMap1234 { + yyl104 := r.ReadMapStart() + if yyl104 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl104, d) + } + } else if yyct104 == codecSelferValueTypeArray1234 { + yyl104 := r.ReadArrayStart() + if yyl104 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl104, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys105Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys105Slc + var yyhl105 bool = l >= 0 + for yyj105 := 0; ; yyj105++ { + if yyhl105 { + if yyj105 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys105Slc = r.DecodeBytes(yys105Slc, true, true) + yys105 := string(yys105Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys105 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv108 := &x.ListMeta + yym109 := z.DecBinary() + _ = yym109 + if false { + } else if z.HasExtensions() && z.DecExt(yyv108) { + } else { + z.DecFallback(yyv108, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv110 := &x.Items + yym111 := z.DecBinary() + _ = yym111 + if false { + } else { + h.decSlicePetSet((*[]PetSet)(yyv110), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys105) + } // end switch yys105 + } // end for yyj105 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj112 int + var yyb112 bool + var yyhl112 bool = l >= 0 + yyj112++ + if yyhl112 { + yyb112 = yyj112 > l + } else { + yyb112 = r.CheckBreak() + } + if yyb112 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj112++ + if yyhl112 { + yyb112 = yyj112 > l + } else { + yyb112 = r.CheckBreak() + } + if yyb112 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj112++ + if yyhl112 { + yyb112 = yyj112 > l + } else { + yyb112 = r.CheckBreak() + } + if yyb112 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv115 := &x.ListMeta + yym116 := z.DecBinary() + _ = yym116 + if false { + } else if z.HasExtensions() && z.DecExt(yyv115) { + } else { + z.DecFallback(yyv115, false) + } + } + yyj112++ + if yyhl112 { + yyb112 = yyj112 > l + } else { + yyb112 = r.CheckBreak() + } + if yyb112 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv117 := &x.Items + yym118 := z.DecBinary() + _ = yym118 + if false { + } else { + h.decSlicePetSet((*[]PetSet)(yyv117), d) + } + } + for { + yyj112++ + if yyhl112 { + yyb112 = yyj112 > l + } else { + yyb112 = r.CheckBreak() + } + if yyb112 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj112-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceapi_PersistentVolumeClaim(v []pkg2_api.PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv119 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy120 := &yyv119 + yy120.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceapi_PersistentVolumeClaim(v *[]pkg2_api.PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv121 := *v + yyh121, yyl121 := z.DecSliceHelperStart() + var yyc121 bool + if yyl121 == 0 { + if yyv121 == nil { + yyv121 = []pkg2_api.PersistentVolumeClaim{} + yyc121 = true + } else if len(yyv121) != 0 { + yyv121 = yyv121[:0] + yyc121 = true + } + } else if yyl121 > 0 { + var yyrr121, yyrl121 int + var yyrt121 bool + if yyl121 > cap(yyv121) { + + yyrg121 := len(yyv121) > 0 + yyv2121 := yyv121 + yyrl121, yyrt121 = z.DecInferLen(yyl121, z.DecBasicHandle().MaxInitLen, 368) + if yyrt121 { + if yyrl121 <= cap(yyv121) { + yyv121 = yyv121[:yyrl121] + } else { + yyv121 = make([]pkg2_api.PersistentVolumeClaim, yyrl121) + } + } else { + yyv121 = make([]pkg2_api.PersistentVolumeClaim, yyrl121) + } + yyc121 = true + yyrr121 = len(yyv121) + if yyrg121 { + copy(yyv121, yyv2121) + } + } else if yyl121 != len(yyv121) { + yyv121 = yyv121[:yyl121] + yyc121 = true + } + yyj121 := 0 + for ; yyj121 < yyrr121; yyj121++ { + yyh121.ElemContainerState(yyj121) + if r.TryDecodeAsNil() { + yyv121[yyj121] = pkg2_api.PersistentVolumeClaim{} + } else { + yyv122 := &yyv121[yyj121] + yyv122.CodecDecodeSelf(d) + } + + } + if yyrt121 { + for ; yyj121 < yyl121; yyj121++ { + yyv121 = append(yyv121, pkg2_api.PersistentVolumeClaim{}) + yyh121.ElemContainerState(yyj121) + if r.TryDecodeAsNil() { + yyv121[yyj121] = pkg2_api.PersistentVolumeClaim{} + } else { + yyv123 := &yyv121[yyj121] + yyv123.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj121 := 0 + for ; !r.CheckBreak(); yyj121++ { + + if yyj121 >= len(yyv121) { + yyv121 = append(yyv121, pkg2_api.PersistentVolumeClaim{}) // var yyz121 pkg2_api.PersistentVolumeClaim + yyc121 = true + } + yyh121.ElemContainerState(yyj121) + if yyj121 < len(yyv121) { + if r.TryDecodeAsNil() { + yyv121[yyj121] = pkg2_api.PersistentVolumeClaim{} + } else { + yyv124 := &yyv121[yyj121] + yyv124.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj121 < len(yyv121) { + yyv121 = yyv121[:yyj121] + yyc121 = true + } else if yyj121 == 0 && yyv121 == nil { + yyv121 = []pkg2_api.PersistentVolumeClaim{} + yyc121 = true + } + } + yyh121.End() + if yyc121 { + *v = yyv121 + } +} + +func (x codecSelfer1234) encSlicePetSet(v []PetSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv125 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy126 := &yyv125 + yy126.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePetSet(v *[]PetSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv127 := *v + yyh127, yyl127 := z.DecSliceHelperStart() + var yyc127 bool + if yyl127 == 0 { + if yyv127 == nil { + yyv127 = []PetSet{} + yyc127 = true + } else if len(yyv127) != 0 { + yyv127 = yyv127[:0] + yyc127 = true + } + } else if yyl127 > 0 { + var yyrr127, yyrl127 int + var yyrt127 bool + if yyl127 > cap(yyv127) { + + yyrg127 := len(yyv127) > 0 + yyv2127 := yyv127 + yyrl127, yyrt127 = z.DecInferLen(yyl127, z.DecBasicHandle().MaxInitLen, 776) + if yyrt127 { + if yyrl127 <= cap(yyv127) { + yyv127 = yyv127[:yyrl127] + } else { + yyv127 = make([]PetSet, yyrl127) + } + } else { + yyv127 = make([]PetSet, yyrl127) + } + yyc127 = true + yyrr127 = len(yyv127) + if yyrg127 { + copy(yyv127, yyv2127) + } + } else if yyl127 != len(yyv127) { + yyv127 = yyv127[:yyl127] + yyc127 = true + } + yyj127 := 0 + for ; yyj127 < yyrr127; yyj127++ { + yyh127.ElemContainerState(yyj127) + if r.TryDecodeAsNil() { + yyv127[yyj127] = PetSet{} + } else { + yyv128 := &yyv127[yyj127] + yyv128.CodecDecodeSelf(d) + } + + } + if yyrt127 { + for ; yyj127 < yyl127; yyj127++ { + yyv127 = append(yyv127, PetSet{}) + yyh127.ElemContainerState(yyj127) + if r.TryDecodeAsNil() { + yyv127[yyj127] = PetSet{} + } else { + yyv129 := &yyv127[yyj127] + yyv129.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj127 := 0 + for ; !r.CheckBreak(); yyj127++ { + + if yyj127 >= len(yyv127) { + yyv127 = append(yyv127, PetSet{}) // var yyz127 PetSet + yyc127 = true + } + yyh127.ElemContainerState(yyj127) + if yyj127 < len(yyv127) { + if r.TryDecodeAsNil() { + yyv127[yyj127] = PetSet{} + } else { + yyv130 := &yyv127[yyj127] + yyv130.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj127 < len(yyv127) { + yyv127 = yyv127[:yyj127] + yyc127 = true + } else if yyj127 == 0 && yyv127 == nil { + yyv127 = []PetSet{} + yyc127 = true + } + } + yyh127.End() + if yyc127 { + *v = yyv127 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.go new file mode 100644 index 0000000000..19c114edd0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/types.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package apps + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// +genclient=true + +// PetSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The PetSet guarantees that a given network identity will always +// map to the same storage identity. PetSet is currently in alpha and +// and subject to change without notice. +type PetSet struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the desired identities of pets in this set. + Spec PetSetSpec `json:"spec,omitempty"` + + // Status is the current status of Pets in this PetSet. This data + // may be out of date by some window of time. + Status PetSetStatus `json:"status,omitempty"` +} + +// A PetSetSpec is the specification of a PetSet. +type PetSetSpec struct { + // Replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + Replicas int `json:"replicas,omitempty"` + + // Selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the PetSet + // will fulfill this Template, but have a unique identity from the rest + // of the PetSet. + Template api.PodTemplateSpec `json:"template"` + + // VolumeClaimTemplates is a list of claims that pets are allowed to reference. + // The PetSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pet. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + VolumeClaimTemplates []api.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"` + + // ServiceName is the name of the service that governs this PetSet. + // This service must exist before the PetSet, and is responsible for + // the network identity of the set. Pets get DNS/hostnames that follow the + // pattern: pet-specific-string.serviceName.default.svc.cluster.local + // where "pet-specific-string" is managed by the PetSet controller. + ServiceName string `json:"serviceName"` +} + +// PetSetStatus represents the current state of a PetSet. +type PetSetStatus struct { + // most recent generation observed by this autoscaler. + ObservedGeneration *int64 `json:"observedGeneration,omitempty"` + + // Replicas is the number of actual replicas. + Replicas int `json:"replicas"` +} + +// PetSetList is a collection of PetSets. +type PetSetList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + Items []PetSet `json:"items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/conversion.go new file mode 100644 index 0000000000..04c6f44b19 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/conversion.go @@ -0,0 +1,114 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/apis/apps" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions to handle the *int32 -> int + // conversion. A pointer is useful in the versioned type so we can default + // it, but a plain int32 is more convenient in the internal type. These + // functions are the same as the autogenerated ones in every other way. + err := scheme.AddConversionFuncs( + Convert_v1alpha1_PetSetSpec_To_apps_PetSetSpec, + Convert_apps_PetSetSpec_To_v1alpha1_PetSetSpec, + ) + if err != nil { + return err + } + + return api.Scheme.AddFieldLabelConversionFunc("apps/v1alpha1", "PetSet", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) +} + +func Convert_v1alpha1_PetSetSpec_To_apps_PetSetSpec(in *PetSetSpec, out *apps.PetSetSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = int(*in.Replicas) + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := s.Convert(&in.Template, &out.Template, 0); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil +} + +func Convert_apps_PetSetSpec_To_v1alpha1_PetSetSpec(in *apps.PetSetSpec, out *PetSetSpec, s conversion.Scope) error { + out.Replicas = new(int32) + *out.Replicas = int32(in.Replicas) + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := s.Convert(&in.Template, &out.Template, 0); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/defaults.go new file mode 100644 index 0000000000..a9bb781ab0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/defaults.go @@ -0,0 +1,46 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_PetSet, + ) +} + +func SetDefaults_PetSet(obj *PetSet) { + labels := obj.Spec.Template.Labels + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &unversioned.LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/doc.go new file mode 100644 index 0000000000..5e6926dfa5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/apps +// +k8s:openapi-gen=true + +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..8164d9105f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.pb.go @@ -0,0 +1,1075 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/apps/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/apps/v1alpha1/generated.proto + + It has these top-level messages: + PetSet + PetSetList + PetSetSpec + PetSetStatus +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *PetSet) Reset() { *m = PetSet{} } +func (*PetSet) ProtoMessage() {} +func (*PetSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PetSetList) Reset() { *m = PetSetList{} } +func (*PetSetList) ProtoMessage() {} +func (*PetSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *PetSetSpec) Reset() { *m = PetSetSpec{} } +func (*PetSetSpec) ProtoMessage() {} +func (*PetSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *PetSetStatus) Reset() { *m = PetSetStatus{} } +func (*PetSetStatus) ProtoMessage() {} +func (*PetSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func init() { + proto.RegisterType((*PetSet)(nil), "k8s.io.client-go.1.5.pkg.apis.apps.v1alpha1.PetSet") + proto.RegisterType((*PetSetList)(nil), "k8s.io.client-go.1.5.pkg.apis.apps.v1alpha1.PetSetList") + proto.RegisterType((*PetSetSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.apps.v1alpha1.PetSetSpec") + proto.RegisterType((*PetSetStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.apps.v1alpha1.PetSetStatus") +} +func (m *PetSet) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PetSet) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *PetSetList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PetSetList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n4, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PetSetSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PetSetSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n5, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n6, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.VolumeClaimTemplates) > 0 { + for _, msg := range m.VolumeClaimTemplates { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ServiceName))) + i += copy(data[i:], m.ServiceName) + return i, nil +} + +func (m *PetSetStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PetSetStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ObservedGeneration)) + } + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *PetSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PetSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PetSetSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.VolumeClaimTemplates) > 0 { + for _, e := range m.VolumeClaimTemplates { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.ServiceName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PetSetStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *PetSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PetSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PetSetSpec", "PetSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PetSetStatus", "PetSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PetSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PetSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PetSet", "PetSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PetSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PetSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_kubernetes_pkg_api_unversioned.LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `VolumeClaimTemplates:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeClaimTemplates), "PersistentVolumeClaim", "k8s_io_kubernetes_pkg_api_v1.PersistentVolumeClaim", 1), `&`, ``, 1) + `,`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `}`, + }, "") + return s +} +func (this *PetSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PetSetStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *PetSet) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PetSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PetSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PetSetList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PetSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PetSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PetSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PetSetSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PetSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PetSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_kubernetes_pkg_api_unversioned.LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeClaimTemplates", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VolumeClaimTemplates = append(m.VolumeClaimTemplates, k8s_io_kubernetes_pkg_api_v1.PersistentVolumeClaim{}) + if err := m.VolumeClaimTemplates[len(m.VolumeClaimTemplates)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PetSetStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PetSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PetSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 611 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x93, 0x4f, 0x6f, 0xd3, 0x4c, + 0x10, 0xc6, 0xeb, 0xa6, 0xa9, 0xfc, 0x6e, 0xf3, 0x22, 0xb4, 0x54, 0x28, 0x8a, 0x50, 0x8a, 0x72, + 0x8a, 0x50, 0xb3, 0x26, 0x85, 0xa2, 0x9e, 0x8d, 0x04, 0x42, 0x02, 0x5a, 0x39, 0x10, 0x21, 0x10, + 0x48, 0x6b, 0x67, 0x48, 0x97, 0xd8, 0x5e, 0xcb, 0xbb, 0xce, 0x99, 0x03, 0xdc, 0x39, 0xf3, 0x31, + 0xf8, 0x08, 0x9c, 0x72, 0xec, 0x91, 0x53, 0x05, 0xe5, 0x8b, 0xb0, 0x5e, 0xff, 0x49, 0xa8, 0x93, + 0x96, 0x1e, 0x36, 0xca, 0xee, 0xce, 0xf3, 0xdb, 0x99, 0x67, 0xc6, 0xe8, 0x60, 0x72, 0x20, 0x08, + 0xe3, 0xd6, 0x24, 0x71, 0x21, 0x0e, 0x41, 0x82, 0xb0, 0xa2, 0xc9, 0xd8, 0xa2, 0x11, 0x13, 0xea, + 0x27, 0x12, 0xd6, 0xb4, 0x4f, 0xfd, 0xe8, 0x98, 0xf6, 0xad, 0x31, 0x84, 0x10, 0x53, 0x09, 0x23, + 0x12, 0xc5, 0x5c, 0x72, 0xdc, 0xcd, 0x94, 0x64, 0xae, 0x24, 0x4a, 0x49, 0x52, 0x25, 0x49, 0x95, + 0xa4, 0x50, 0xb6, 0x7a, 0x63, 0x26, 0x8f, 0x13, 0x97, 0x78, 0x3c, 0xb0, 0xc6, 0x7c, 0xcc, 0x2d, + 0x0d, 0x70, 0x93, 0xf7, 0x7a, 0xa7, 0x37, 0xfa, 0x5f, 0x06, 0x6e, 0xed, 0xad, 0x4c, 0xc9, 0x8a, + 0x41, 0xf0, 0x24, 0xf6, 0xe0, 0x7c, 0x32, 0xad, 0xfd, 0xd5, 0x9a, 0x24, 0x9c, 0x42, 0x2c, 0x18, + 0x0f, 0x61, 0x54, 0x91, 0xed, 0xae, 0x96, 0x4d, 0x2b, 0x15, 0xb7, 0x7a, 0xcb, 0xa3, 0xe3, 0x24, + 0x94, 0x2c, 0xa8, 0xe6, 0xd4, 0x5f, 0x1e, 0x9e, 0x48, 0xe6, 0x5b, 0x2c, 0x94, 0x42, 0xc6, 0xe7, + 0x25, 0x9d, 0xaf, 0xeb, 0x68, 0xf3, 0x08, 0xe4, 0x00, 0x24, 0x7e, 0x85, 0xcc, 0x00, 0x24, 0x1d, + 0x51, 0x49, 0x9b, 0xc6, 0x6d, 0xa3, 0xbb, 0xb5, 0xd7, 0x25, 0x2b, 0x1d, 0x57, 0x5e, 0x93, 0x43, + 0xf7, 0x03, 0x78, 0xf2, 0x99, 0xd2, 0xd8, 0x78, 0x76, 0xba, 0xb3, 0x76, 0x76, 0xba, 0x83, 0xe6, + 0x67, 0x4e, 0x49, 0xc3, 0x43, 0xb4, 0x21, 0x22, 0xf0, 0x9a, 0xeb, 0x9a, 0x7a, 0x9f, 0xfc, 0x6b, + 0x1f, 0x49, 0x96, 0xd9, 0x40, 0x69, 0xed, 0x46, 0xfe, 0xc2, 0x46, 0xba, 0x73, 0x34, 0x0f, 0xbf, + 0x43, 0x9b, 0x42, 0x52, 0x99, 0x88, 0x66, 0x4d, 0x93, 0x1f, 0x5c, 0x99, 0xac, 0xd5, 0xf6, 0xb5, + 0x9c, 0xbd, 0x99, 0xed, 0x9d, 0x9c, 0xda, 0xf9, 0x6e, 0x20, 0x94, 0x05, 0x3e, 0x65, 0x42, 0xe2, + 0xb7, 0x15, 0x83, 0xac, 0x0b, 0x0c, 0x5a, 0x98, 0x02, 0x92, 0xca, 0xb5, 0x4f, 0xd7, 0xf3, 0x97, + 0xcc, 0xe2, 0x64, 0xc1, 0xa5, 0x97, 0xa8, 0xce, 0x24, 0x04, 0x42, 0xd9, 0x54, 0x53, 0xec, 0xbb, + 0x57, 0x2d, 0xc6, 0xfe, 0x3f, 0x87, 0xd7, 0x9f, 0xa4, 0x18, 0x27, 0xa3, 0x75, 0xbe, 0xd5, 0x8a, + 0x22, 0x52, 0xe7, 0x70, 0x17, 0x99, 0x31, 0x44, 0x3e, 0xf3, 0xa8, 0xd0, 0x45, 0xd4, 0xed, 0x46, + 0x9a, 0x8f, 0x93, 0x9f, 0x39, 0xe5, 0xad, 0x72, 0xd7, 0x14, 0xe0, 0xab, 0x6e, 0xf2, 0xf8, 0xf2, + 0xce, 0xfd, 0x5d, 0x2e, 0x75, 0xc1, 0x1f, 0xe4, 0xda, 0x8c, 0x5f, 0xec, 0x9c, 0x92, 0x89, 0xdf, + 0x20, 0x53, 0x25, 0x18, 0xf9, 0x6a, 0x1a, 0xf3, 0xfe, 0xf5, 0x2e, 0x9e, 0xb7, 0x23, 0x3e, 0x7a, + 0x91, 0x0b, 0xf4, 0x48, 0x94, 0x66, 0x16, 0xa7, 0x4e, 0x09, 0xc4, 0x9f, 0x0d, 0xb4, 0x3d, 0xe5, + 0x7e, 0x12, 0xc0, 0x43, 0x9f, 0xb2, 0xa0, 0x88, 0x10, 0xcd, 0x0d, 0x6d, 0xee, 0xbd, 0x4b, 0x5e, + 0x4a, 0x4b, 0x11, 0x12, 0x42, 0x39, 0x9c, 0x33, 0xec, 0x5b, 0xf9, 0x7b, 0xdb, 0xc3, 0x25, 0x60, + 0x67, 0xe9, 0x73, 0x78, 0x1f, 0x6d, 0x09, 0x88, 0xa7, 0xcc, 0x83, 0xe7, 0x34, 0x80, 0x66, 0x5d, + 0xd5, 0xf9, 0x9f, 0x7d, 0x23, 0x07, 0x6d, 0x0d, 0xe6, 0x57, 0xce, 0x62, 0x5c, 0xe7, 0x93, 0x81, + 0x1a, 0x8b, 0x23, 0x8a, 0x1f, 0x21, 0xcc, 0xdd, 0x34, 0x02, 0x46, 0x8f, 0xb3, 0x4f, 0x58, 0x59, + 0xad, 0x1b, 0x58, 0xb3, 0x6f, 0x2a, 0x14, 0x3e, 0xac, 0xdc, 0x3a, 0x4b, 0x14, 0x78, 0x77, 0xa1, + 0xfd, 0xeb, 0xba, 0xfd, 0xa5, 0x8b, 0xd5, 0x11, 0xb0, 0xef, 0xcc, 0x7e, 0xb5, 0xd7, 0x4e, 0xd4, + 0xfa, 0xa1, 0xd6, 0xc7, 0xb3, 0xb6, 0x31, 0x53, 0xeb, 0x44, 0xad, 0x9f, 0x6a, 0x7d, 0xf9, 0xdd, + 0x5e, 0x7b, 0x6d, 0x16, 0x43, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0x14, 0xcf, 0x45, 0x01, 0xd8, + 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.proto new file mode 100644 index 0000000000..2338042bfd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/generated.proto @@ -0,0 +1,103 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.apps.v1alpha1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// PetSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The PetSet guarantees that a given network identity will always +// map to the same storage identity. PetSet is currently in alpha +// and subject to change without notice. +message PetSet { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec defines the desired identities of pets in this set. + optional PetSetSpec spec = 2; + + // Status is the current status of Pets in this PetSet. This data + // may be out of date by some window of time. + optional PetSetStatus status = 3; +} + +// PetSetList is a collection of PetSets. +message PetSetList { + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + repeated PetSet items = 2; +} + +// A PetSetSpec is the specification of a PetSet. +message PetSetSpec { + // Replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + optional int32 replicas = 1; + + // Selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the PetSet + // will fulfill this Template, but have a unique identity from the rest + // of the PetSet. + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 3; + + // VolumeClaimTemplates is a list of claims that pets are allowed to reference. + // The PetSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pet. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + repeated k8s.io.kubernetes.pkg.api.v1.PersistentVolumeClaim volumeClaimTemplates = 4; + + // ServiceName is the name of the service that governs this PetSet. + // This service must exist before the PetSet, and is responsible for + // the network identity of the set. Pets get DNS/hostnames that follow the + // pattern: pet-specific-string.serviceName.default.svc.cluster.local + // where "pet-specific-string" is managed by the PetSet controller. + optional string serviceName = 5; +} + +// PetSetStatus represents the current state of a PetSet. +message PetSetStatus { + // most recent generation observed by this autoscaler. + optional int64 observedGeneration = 1; + + // Replicas is the number of actual replicas. + optional int32 replicas = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/register.go new file mode 100644 index 0000000000..9a6bb38032 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "apps" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PetSet{}, + &PetSetList{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} + +func (obj *PetSet) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *PetSetList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.generated.go new file mode 100644 index 0000000000..2bea91f51f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.generated.go @@ -0,0 +1,1658 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_unversioned.TypeMeta + var v2 pkg2_v1.ObjectMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *PetSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PetSetSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PetSetStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PetSetSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PetSetStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [5]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Replicas != nil + yyq33[1] = x.Selector != nil + yyq33[3] = len(x.VolumeClaimTemplates) != 0 + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(5) + } else { + yynn33 = 2 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy35 := *x.Replicas + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(yy35)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy37 := *x.Replicas + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeInt(int64(yy37)) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym40 := z.EncBinary() + _ = yym40 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy43 := &x.Template + yy43.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy44 := &x.Template + yy44.CodecEncodeSelf(e) + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[3] { + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + h.encSlicev1_PersistentVolumeClaim(([]pkg2_v1.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumeClaimTemplates")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.VolumeClaimTemplates == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + h.encSlicev1_PersistentVolumeClaim(([]pkg2_v1.PersistentVolumeClaim)(x.VolumeClaimTemplates), e) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym49 := z.EncBinary() + _ = yym49 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym51 := z.DecBinary() + _ = yym51 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct52 := r.ContainerType() + if yyct52 == codecSelferValueTypeMap1234 { + yyl52 := r.ReadMapStart() + if yyl52 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl52, d) + } + } else if yyct52 == codecSelferValueTypeArray1234 { + yyl52 := r.ReadArrayStart() + if yyl52 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl52, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys53Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys53Slc + var yyhl53 bool = l >= 0 + for yyj53 := 0; ; yyj53++ { + if yyhl53 { + if yyj53 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys53Slc = r.DecodeBytes(yys53Slc, true, true) + yys53 := string(yys53Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys53 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym55 := z.DecBinary() + _ = yym55 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym57 := z.DecBinary() + _ = yym57 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv58 := &x.Template + yyv58.CodecDecodeSelf(d) + } + case "volumeClaimTemplates": + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv59 := &x.VolumeClaimTemplates + yym60 := z.DecBinary() + _ = yym60 + if false { + } else { + h.decSlicev1_PersistentVolumeClaim((*[]pkg2_v1.PersistentVolumeClaim)(yyv59), d) + } + } + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys53) + } // end switch yys53 + } // end for yyj53 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj62 int + var yyb62 bool + var yyhl62 bool = l >= 0 + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym64 := z.DecBinary() + _ = yym64 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym66 := z.DecBinary() + _ = yym66 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv67 := &x.Template + yyv67.CodecDecodeSelf(d) + } + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.VolumeClaimTemplates = nil + } else { + yyv68 := &x.VolumeClaimTemplates + yym69 := z.DecBinary() + _ = yym69 + if false { + } else { + h.decSlicev1_PersistentVolumeClaim((*[]pkg2_v1.PersistentVolumeClaim)(yyv68), d) + } + } + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + for { + yyj62++ + if yyhl62 { + yyb62 = yyj62 > l + } else { + yyb62 = r.CheckBreak() + } + if yyb62 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj62-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym71 := z.EncBinary() + _ = yym71 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep72 := !z.EncBinary() + yy2arr72 := z.EncBasicHandle().StructToArray + var yyq72 [2]bool + _, _, _ = yysep72, yyq72, yy2arr72 + const yyr72 bool = false + yyq72[0] = x.ObservedGeneration != nil + var yynn72 int + if yyr72 || yy2arr72 { + r.EncodeArrayStart(2) + } else { + yynn72 = 1 + for _, b := range yyq72 { + if b { + yynn72++ + } + } + r.EncodeMapStart(yynn72) + yynn72 = 0 + } + if yyr72 || yy2arr72 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq72[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy74 := *x.ObservedGeneration + yym75 := z.EncBinary() + _ = yym75 + if false { + } else { + r.EncodeInt(int64(yy74)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq72[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy76 := *x.ObservedGeneration + yym77 := z.EncBinary() + _ = yym77 + if false { + } else { + r.EncodeInt(int64(yy76)) + } + } + } + } + if yyr72 || yy2arr72 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym79 := z.EncBinary() + _ = yym79 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym80 := z.EncBinary() + _ = yym80 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr72 || yy2arr72 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym81 := z.DecBinary() + _ = yym81 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct82 := r.ContainerType() + if yyct82 == codecSelferValueTypeMap1234 { + yyl82 := r.ReadMapStart() + if yyl82 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl82, d) + } + } else if yyct82 == codecSelferValueTypeArray1234 { + yyl82 := r.ReadArrayStart() + if yyl82 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl82, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys83Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys83Slc + var yyhl83 bool = l >= 0 + for yyj83 := 0; ; yyj83++ { + if yyhl83 { + if yyj83 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys83Slc = r.DecodeBytes(yys83Slc, true, true) + yys83 := string(yys83Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys83 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym85 := z.DecBinary() + _ = yym85 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys83) + } // end switch yys83 + } // end for yyj83 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj87 int + var yyb87 bool + var yyhl87 bool = l >= 0 + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym89 := z.DecBinary() + _ = yym89 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + for { + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj87-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PetSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym91 := z.EncBinary() + _ = yym91 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep92 := !z.EncBinary() + yy2arr92 := z.EncBasicHandle().StructToArray + var yyq92 [4]bool + _, _, _ = yysep92, yyq92, yy2arr92 + const yyr92 bool = false + yyq92[0] = x.Kind != "" + yyq92[1] = x.APIVersion != "" + yyq92[2] = true + var yynn92 int + if yyr92 || yy2arr92 { + r.EncodeArrayStart(4) + } else { + yynn92 = 1 + for _, b := range yyq92 { + if b { + yynn92++ + } + } + r.EncodeMapStart(yynn92) + yynn92 = 0 + } + if yyr92 || yy2arr92 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq92[0] { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq92[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym95 := z.EncBinary() + _ = yym95 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr92 || yy2arr92 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq92[1] { + yym97 := z.EncBinary() + _ = yym97 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq92[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym98 := z.EncBinary() + _ = yym98 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr92 || yy2arr92 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq92[2] { + yy100 := &x.ListMeta + yym101 := z.EncBinary() + _ = yym101 + if false { + } else if z.HasExtensions() && z.EncExt(yy100) { + } else { + z.EncFallback(yy100) + } + } else { + r.EncodeNil() + } + } else { + if yyq92[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy102 := &x.ListMeta + yym103 := z.EncBinary() + _ = yym103 + if false { + } else if z.HasExtensions() && z.EncExt(yy102) { + } else { + z.EncFallback(yy102) + } + } + } + if yyr92 || yy2arr92 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym105 := z.EncBinary() + _ = yym105 + if false { + } else { + h.encSlicePetSet(([]PetSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym106 := z.EncBinary() + _ = yym106 + if false { + } else { + h.encSlicePetSet(([]PetSet)(x.Items), e) + } + } + } + if yyr92 || yy2arr92 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PetSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym107 := z.DecBinary() + _ = yym107 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct108 := r.ContainerType() + if yyct108 == codecSelferValueTypeMap1234 { + yyl108 := r.ReadMapStart() + if yyl108 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl108, d) + } + } else if yyct108 == codecSelferValueTypeArray1234 { + yyl108 := r.ReadArrayStart() + if yyl108 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl108, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PetSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys109Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys109Slc + var yyhl109 bool = l >= 0 + for yyj109 := 0; ; yyj109++ { + if yyhl109 { + if yyj109 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys109Slc = r.DecodeBytes(yys109Slc, true, true) + yys109 := string(yys109Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys109 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv112 := &x.ListMeta + yym113 := z.DecBinary() + _ = yym113 + if false { + } else if z.HasExtensions() && z.DecExt(yyv112) { + } else { + z.DecFallback(yyv112, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv114 := &x.Items + yym115 := z.DecBinary() + _ = yym115 + if false { + } else { + h.decSlicePetSet((*[]PetSet)(yyv114), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys109) + } // end switch yys109 + } // end for yyj109 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PetSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj116 int + var yyb116 bool + var yyhl116 bool = l >= 0 + yyj116++ + if yyhl116 { + yyb116 = yyj116 > l + } else { + yyb116 = r.CheckBreak() + } + if yyb116 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj116++ + if yyhl116 { + yyb116 = yyj116 > l + } else { + yyb116 = r.CheckBreak() + } + if yyb116 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj116++ + if yyhl116 { + yyb116 = yyj116 > l + } else { + yyb116 = r.CheckBreak() + } + if yyb116 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv119 := &x.ListMeta + yym120 := z.DecBinary() + _ = yym120 + if false { + } else if z.HasExtensions() && z.DecExt(yyv119) { + } else { + z.DecFallback(yyv119, false) + } + } + yyj116++ + if yyhl116 { + yyb116 = yyj116 > l + } else { + yyb116 = r.CheckBreak() + } + if yyb116 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv121 := &x.Items + yym122 := z.DecBinary() + _ = yym122 + if false { + } else { + h.decSlicePetSet((*[]PetSet)(yyv121), d) + } + } + for { + yyj116++ + if yyhl116 { + yyb116 = yyj116 > l + } else { + yyb116 = r.CheckBreak() + } + if yyb116 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj116-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicev1_PersistentVolumeClaim(v []pkg2_v1.PersistentVolumeClaim, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv123 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy124 := &yyv123 + yy124.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_PersistentVolumeClaim(v *[]pkg2_v1.PersistentVolumeClaim, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv125 := *v + yyh125, yyl125 := z.DecSliceHelperStart() + var yyc125 bool + if yyl125 == 0 { + if yyv125 == nil { + yyv125 = []pkg2_v1.PersistentVolumeClaim{} + yyc125 = true + } else if len(yyv125) != 0 { + yyv125 = yyv125[:0] + yyc125 = true + } + } else if yyl125 > 0 { + var yyrr125, yyrl125 int + var yyrt125 bool + if yyl125 > cap(yyv125) { + + yyrg125 := len(yyv125) > 0 + yyv2125 := yyv125 + yyrl125, yyrt125 = z.DecInferLen(yyl125, z.DecBasicHandle().MaxInitLen, 368) + if yyrt125 { + if yyrl125 <= cap(yyv125) { + yyv125 = yyv125[:yyrl125] + } else { + yyv125 = make([]pkg2_v1.PersistentVolumeClaim, yyrl125) + } + } else { + yyv125 = make([]pkg2_v1.PersistentVolumeClaim, yyrl125) + } + yyc125 = true + yyrr125 = len(yyv125) + if yyrg125 { + copy(yyv125, yyv2125) + } + } else if yyl125 != len(yyv125) { + yyv125 = yyv125[:yyl125] + yyc125 = true + } + yyj125 := 0 + for ; yyj125 < yyrr125; yyj125++ { + yyh125.ElemContainerState(yyj125) + if r.TryDecodeAsNil() { + yyv125[yyj125] = pkg2_v1.PersistentVolumeClaim{} + } else { + yyv126 := &yyv125[yyj125] + yyv126.CodecDecodeSelf(d) + } + + } + if yyrt125 { + for ; yyj125 < yyl125; yyj125++ { + yyv125 = append(yyv125, pkg2_v1.PersistentVolumeClaim{}) + yyh125.ElemContainerState(yyj125) + if r.TryDecodeAsNil() { + yyv125[yyj125] = pkg2_v1.PersistentVolumeClaim{} + } else { + yyv127 := &yyv125[yyj125] + yyv127.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj125 := 0 + for ; !r.CheckBreak(); yyj125++ { + + if yyj125 >= len(yyv125) { + yyv125 = append(yyv125, pkg2_v1.PersistentVolumeClaim{}) // var yyz125 pkg2_v1.PersistentVolumeClaim + yyc125 = true + } + yyh125.ElemContainerState(yyj125) + if yyj125 < len(yyv125) { + if r.TryDecodeAsNil() { + yyv125[yyj125] = pkg2_v1.PersistentVolumeClaim{} + } else { + yyv128 := &yyv125[yyj125] + yyv128.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj125 < len(yyv125) { + yyv125 = yyv125[:yyj125] + yyc125 = true + } else if yyj125 == 0 && yyv125 == nil { + yyv125 = []pkg2_v1.PersistentVolumeClaim{} + yyc125 = true + } + } + yyh125.End() + if yyc125 { + *v = yyv125 + } +} + +func (x codecSelfer1234) encSlicePetSet(v []PetSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv129 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy130 := &yyv129 + yy130.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePetSet(v *[]PetSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv131 := *v + yyh131, yyl131 := z.DecSliceHelperStart() + var yyc131 bool + if yyl131 == 0 { + if yyv131 == nil { + yyv131 = []PetSet{} + yyc131 = true + } else if len(yyv131) != 0 { + yyv131 = yyv131[:0] + yyc131 = true + } + } else if yyl131 > 0 { + var yyrr131, yyrl131 int + var yyrt131 bool + if yyl131 > cap(yyv131) { + + yyrg131 := len(yyv131) > 0 + yyv2131 := yyv131 + yyrl131, yyrt131 = z.DecInferLen(yyl131, z.DecBasicHandle().MaxInitLen, 800) + if yyrt131 { + if yyrl131 <= cap(yyv131) { + yyv131 = yyv131[:yyrl131] + } else { + yyv131 = make([]PetSet, yyrl131) + } + } else { + yyv131 = make([]PetSet, yyrl131) + } + yyc131 = true + yyrr131 = len(yyv131) + if yyrg131 { + copy(yyv131, yyv2131) + } + } else if yyl131 != len(yyv131) { + yyv131 = yyv131[:yyl131] + yyc131 = true + } + yyj131 := 0 + for ; yyj131 < yyrr131; yyj131++ { + yyh131.ElemContainerState(yyj131) + if r.TryDecodeAsNil() { + yyv131[yyj131] = PetSet{} + } else { + yyv132 := &yyv131[yyj131] + yyv132.CodecDecodeSelf(d) + } + + } + if yyrt131 { + for ; yyj131 < yyl131; yyj131++ { + yyv131 = append(yyv131, PetSet{}) + yyh131.ElemContainerState(yyj131) + if r.TryDecodeAsNil() { + yyv131[yyj131] = PetSet{} + } else { + yyv133 := &yyv131[yyj131] + yyv133.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj131 := 0 + for ; !r.CheckBreak(); yyj131++ { + + if yyj131 >= len(yyv131) { + yyv131 = append(yyv131, PetSet{}) // var yyz131 PetSet + yyc131 = true + } + yyh131.ElemContainerState(yyj131) + if yyj131 < len(yyv131) { + if r.TryDecodeAsNil() { + yyv131[yyj131] = PetSet{} + } else { + yyv134 := &yyv131[yyj131] + yyv134.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj131 < len(yyv131) { + yyv131 = yyv131[:yyj131] + yyc131 = true + } else if yyj131 == 0 && yyv131 == nil { + yyv131 = []PetSet{} + yyc131 = true + } + } + yyh131.End() + if yyc131 { + *v = yyv131 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.go new file mode 100644 index 0000000000..7502cc1929 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types.go @@ -0,0 +1,96 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true + +// PetSet represents a set of pods with consistent identities. +// Identities are defined as: +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// The PetSet guarantees that a given network identity will always +// map to the same storage identity. PetSet is currently in alpha +// and subject to change without notice. +type PetSet struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired identities of pets in this set. + Spec PetSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current status of Pets in this PetSet. This data + // may be out of date by some window of time. + Status PetSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// A PetSetSpec is the specification of a PetSet. +type PetSetSpec struct { + // Replicas is the desired number of replicas of the given Template. + // These are replicas in the sense that they are instantiations of the + // same Template, but individual replicas also have a consistent identity. + // If unspecified, defaults to 1. + // TODO: Consider a rename of this field. + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Selector is a label query over pods that should match the replica count. + // If empty, defaulted to labels on the pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *unversioned.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. Each pod stamped out by the PetSet + // will fulfill this Template, but have a unique identity from the rest + // of the PetSet. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // VolumeClaimTemplates is a list of claims that pets are allowed to reference. + // The PetSet controller is responsible for mapping network identities to + // claims in a way that maintains the identity of a pet. Every claim in + // this list must have at least one matching (by name) volumeMount in one + // container in the template. A claim in this list takes precedence over + // any volumes in the template, with the same name. + // TODO: Define the behavior if a claim already exists with the same name. + VolumeClaimTemplates []v1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"` + + // ServiceName is the name of the service that governs this PetSet. + // This service must exist before the PetSet, and is responsible for + // the network identity of the set. Pets get DNS/hostnames that follow the + // pattern: pet-specific-string.serviceName.default.svc.cluster.local + // where "pet-specific-string" is managed by the PetSet controller. + ServiceName string `json:"serviceName" protobuf:"bytes,5,opt,name=serviceName"` +} + +// PetSetStatus represents the current state of a PetSet. +type PetSetStatus struct { + // most recent generation observed by this autoscaler. + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // Replicas is the number of actual replicas. + Replicas int32 `json:"replicas" protobuf:"varint,2,opt,name=replicas"` +} + +// PetSetList is a collection of PetSets. +type PetSetList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []PetSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..5191f1224c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,71 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_PetSet = map[string]string{ + "": "PetSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe PetSet guarantees that a given network identity will always map to the same storage identity. PetSet is currently in alpha and subject to change without notice.", + "spec": "Spec defines the desired identities of pets in this set.", + "status": "Status is the current status of Pets in this PetSet. This data may be out of date by some window of time.", +} + +func (PetSet) SwaggerDoc() map[string]string { + return map_PetSet +} + +var map_PetSetList = map[string]string{ + "": "PetSetList is a collection of PetSets.", +} + +func (PetSetList) SwaggerDoc() map[string]string { + return map_PetSetList +} + +var map_PetSetSpec = map[string]string{ + "": "A PetSetSpec is the specification of a PetSet.", + "replicas": "Replicas is the desired number of replicas of the given Template. These are replicas in the sense that they are instantiations of the same Template, but individual replicas also have a consistent identity. If unspecified, defaults to 1.", + "selector": "Selector is a label query over pods that should match the replica count. If empty, defaulted to labels on the pod template. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. Each pod stamped out by the PetSet will fulfill this Template, but have a unique identity from the rest of the PetSet.", + "volumeClaimTemplates": "VolumeClaimTemplates is a list of claims that pets are allowed to reference. The PetSet controller is responsible for mapping network identities to claims in a way that maintains the identity of a pet. Every claim in this list must have at least one matching (by name) volumeMount in one container in the template. A claim in this list takes precedence over any volumes in the template, with the same name.", + "serviceName": "ServiceName is the name of the service that governs this PetSet. This service must exist before the PetSet, and is responsible for the network identity of the set. Pets get DNS/hostnames that follow the pattern: pet-specific-string.serviceName.default.svc.cluster.local where \"pet-specific-string\" is managed by the PetSet controller.", +} + +func (PetSetSpec) SwaggerDoc() map[string]string { + return map_PetSetSpec +} + +var map_PetSetStatus = map[string]string{ + "": "PetSetStatus represents the current state of a PetSet.", + "observedGeneration": "most recent generation observed by this autoscaler.", + "replicas": "Replicas is the number of actual replicas.", +} + +func (PetSetStatus) SwaggerDoc() map[string]string { + return map_PetSetStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.conversion.go new file mode 100644 index 0000000000..d93e738b27 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,205 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + apps "k8s.io/client-go/1.5/pkg/apis/apps" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_PetSet_To_apps_PetSet, + Convert_apps_PetSet_To_v1alpha1_PetSet, + Convert_v1alpha1_PetSetList_To_apps_PetSetList, + Convert_apps_PetSetList_To_v1alpha1_PetSetList, + Convert_v1alpha1_PetSetSpec_To_apps_PetSetSpec, + Convert_apps_PetSetSpec_To_v1alpha1_PetSetSpec, + Convert_v1alpha1_PetSetStatus_To_apps_PetSetStatus, + Convert_apps_PetSetStatus_To_v1alpha1_PetSetStatus, + ) +} + +func autoConvert_v1alpha1_PetSet_To_apps_PetSet(in *PetSet, out *apps.PetSet, s conversion.Scope) error { + SetDefaults_PetSet(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1alpha1_PetSetSpec_To_apps_PetSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_PetSet_To_apps_PetSet(in *PetSet, out *apps.PetSet, s conversion.Scope) error { + return autoConvert_v1alpha1_PetSet_To_apps_PetSet(in, out, s) +} + +func autoConvert_apps_PetSet_To_v1alpha1_PetSet(in *apps.PetSet, out *PetSet, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_apps_PetSetSpec_To_v1alpha1_PetSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_apps_PetSet_To_v1alpha1_PetSet(in *apps.PetSet, out *PetSet, s conversion.Scope) error { + return autoConvert_apps_PetSet_To_v1alpha1_PetSet(in, out, s) +} + +func autoConvert_v1alpha1_PetSetList_To_apps_PetSetList(in *PetSetList, out *apps.PetSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]apps.PetSet, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_PetSet_To_apps_PetSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_PetSetList_To_apps_PetSetList(in *PetSetList, out *apps.PetSetList, s conversion.Scope) error { + return autoConvert_v1alpha1_PetSetList_To_apps_PetSetList(in, out, s) +} + +func autoConvert_apps_PetSetList_To_v1alpha1_PetSetList(in *apps.PetSetList, out *PetSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PetSet, len(*in)) + for i := range *in { + if err := Convert_apps_PetSet_To_v1alpha1_PetSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_apps_PetSetList_To_v1alpha1_PetSetList(in *apps.PetSetList, out *PetSetList, s conversion.Scope) error { + return autoConvert_apps_PetSetList_To_v1alpha1_PetSetList(in, out, s) +} + +func autoConvert_v1alpha1_PetSetSpec_To_apps_PetSetSpec(in *PetSetSpec, out *apps.PetSetSpec, s conversion.Scope) error { + // WARNING: in.Replicas requires manual conversion: inconvertible types (*int32 vs int) + out.Selector = in.Selector + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil +} + +func autoConvert_apps_PetSetSpec_To_v1alpha1_PetSetSpec(in *apps.PetSetSpec, out *PetSetSpec, s conversion.Scope) error { + // WARNING: in.Replicas requires manual conversion: inconvertible types (int vs *int32) + out.Selector = in.Selector + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil +} + +func autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = int(in.Replicas) + return nil +} + +func Convert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in *PetSetStatus, out *apps.PetSetStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_PetSetStatus_To_apps_PetSetStatus(in, out, s) +} + +func autoConvert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(in *apps.PetSetStatus, out *PetSetStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = int32(in.Replicas) + return nil +} + +func Convert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(in *apps.PetSetStatus, out *PetSetStatus, s conversion.Scope) error { + return autoConvert_apps_PetSetStatus_To_v1alpha1_PetSetStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..5c36b9e402 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,138 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PetSet, InType: reflect.TypeOf(&PetSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PetSetList, InType: reflect.TypeOf(&PetSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PetSetSpec, InType: reflect.TypeOf(&PetSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PetSetStatus, InType: reflect.TypeOf(&PetSetStatus{})}, + ) +} + +func DeepCopy_v1alpha1_PetSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSet) + out := out.(*PetSet) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1alpha1_PetSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1alpha1_PetSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1alpha1_PetSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetList) + out := out.(*PetSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PetSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PetSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_PetSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetSpec) + out := out.(*PetSetSpec) + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } else { + out.Replicas = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]v1.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := v1.DeepCopy_v1_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil + } +} + +func DeepCopy_v1alpha1_PetSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetStatus) + out := out.(*PetSetStatus) + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } else { + out.ObservedGeneration = nil + } + out.Replicas = in.Replicas + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/apps/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/zz_generated.deepcopy.go new file mode 100644 index 0000000000..adf473b271 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/apps/zz_generated.deepcopy.go @@ -0,0 +1,132 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package apps + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_PetSet, InType: reflect.TypeOf(&PetSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_PetSetList, InType: reflect.TypeOf(&PetSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_PetSetSpec, InType: reflect.TypeOf(&PetSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_apps_PetSetStatus, InType: reflect.TypeOf(&PetSetStatus{})}, + ) +} + +func DeepCopy_apps_PetSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSet) + out := out.(*PetSet) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_apps_PetSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_apps_PetSetStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_apps_PetSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetList) + out := out.(*PetSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PetSet, len(*in)) + for i := range *in { + if err := DeepCopy_apps_PetSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_apps_PetSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetSpec) + out := out.(*PetSetSpec) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if in.VolumeClaimTemplates != nil { + in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates + *out = make([]api.PersistentVolumeClaim, len(*in)) + for i := range *in { + if err := api.DeepCopy_api_PersistentVolumeClaim(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.VolumeClaimTemplates = nil + } + out.ServiceName = in.ServiceName + return nil + } +} + +func DeepCopy_apps_PetSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PetSetStatus) + out := out.(*PetSetStatus) + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } else { + out.ObservedGeneration = nil + } + out.Replicas = in.Replicas + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/doc.go new file mode 100644 index 0000000000..35cb18de8b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +groupName=authentication.k8s.io +// +k8s:openapi-gen=true +package authentication diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/install/install.go new file mode 100644 index 0000000000..e4caa753d1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/authentication" + "k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: authentication.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/authentication", + RootScopedKinds: sets.NewString("TokenReview"), + AddInternalObjectsToScheme: authentication.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/register.go new file mode 100644 index 0000000000..ffef35f18c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/register.go @@ -0,0 +1,55 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authentication + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &api.ListOptions{}, + &api.DeleteOptions{}, + &api.ExportOptions{}, + + &TokenReview{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.generated.go new file mode 100644 index 0000000000..09842eeb1e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.generated.go @@ -0,0 +1,2394 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package authentication + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg1_unversioned.TypeMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *TokenReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [19]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Name != "" + yyq2[3] = x.GenerateName != "" + yyq2[4] = x.Namespace != "" + yyq2[5] = x.SelfLink != "" + yyq2[6] = x.UID != "" + yyq2[7] = x.ResourceVersion != "" + yyq2[8] = x.Generation != 0 + yyq2[9] = true + yyq2[10] = x.ObjectMeta.DeletionTimestamp != nil && x.DeletionTimestamp != nil + yyq2[11] = x.ObjectMeta.DeletionGracePeriodSeconds != nil && x.DeletionGracePeriodSeconds != nil + yyq2[12] = len(x.Labels) != 0 + yyq2[13] = len(x.Annotations) != 0 + yyq2[14] = len(x.OwnerReferences) != 0 + yyq2[15] = len(x.Finalizers) != 0 + yyq2[16] = x.ClusterName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(19) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + yy31 := &x.CreationTimestamp + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(yy31) { + } else if yym32 { + z.EncBinaryMarshal(yy31) + } else if !yym32 && z.IsJSONHandle() { + z.EncJSONMarshal(yy31) + } else { + z.EncFallback(yy31) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy33 := &x.CreationTimestamp + yym34 := z.EncBinary() + _ = yym34 + if false { + } else if z.HasExtensions() && z.EncExt(yy33) { + } else if yym34 { + z.EncBinaryMarshal(yy33) + } else if !yym34 && z.IsJSONHandle() { + z.EncJSONMarshal(yy33) + } else { + z.EncFallback(yy33) + } + } + } + var yyn35 bool + if x.ObjectMeta.DeletionTimestamp == nil { + yyn35 = true + goto LABEL35 + } + LABEL35: + if yyr2 || yy2arr2 { + if yyn35 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym36 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym36 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn35 { + r.EncodeNil() + } else { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym37 := z.EncBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym37 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym37 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + } + var yyn38 bool + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + yyn38 = true + goto LABEL38 + } + LABEL38: + if yyr2 || yy2arr2 { + if yyn38 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy39 := *x.DeletionGracePeriodSeconds + yym40 := z.EncBinary() + _ = yym40 + if false { + } else { + r.EncodeInt(int64(yy39)) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn38 { + r.EncodeNil() + } else { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy41 := *x.DeletionGracePeriodSeconds + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeInt(int64(yy41)) + } + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym54 := z.EncBinary() + _ = yym54 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + yym56 := z.EncBinary() + _ = yym56 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym57 := z.EncBinary() + _ = yym57 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy59 := &x.Spec + yy59.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy60 := &x.Spec + yy60.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy62 := &x.Status + yy62.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy63 := &x.Status + yy63.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym64 := z.DecBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct65 := r.ContainerType() + if yyct65 == codecSelferValueTypeMap1234 { + yyl65 := r.ReadMapStart() + if yyl65 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl65, d) + } + } else if yyct65 == codecSelferValueTypeArray1234 { + yyl65 := r.ReadArrayStart() + if yyl65 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl65, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys66Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys66Slc + var yyhl66 bool = l >= 0 + for yyj66 := 0; ; yyj66++ { + if yyhl66 { + if yyj66 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys66Slc = r.DecodeBytes(yys66Slc, true, true) + yys66 := string(yys66Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys66 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv76 := &x.CreationTimestamp + yym77 := z.DecBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.DecExt(yyv76) { + } else if yym77 { + z.DecBinaryUnmarshal(yyv76) + } else if !yym77 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv76) + } else { + z.DecFallback(yyv76, false) + } + } + case "deletionTimestamp": + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym79 := z.DecBinary() + _ = yym79 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym79 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym79 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv82 := &x.Labels + yym83 := z.DecBinary() + _ = yym83 + if false { + } else { + z.F.DecMapStringStringX(yyv82, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv84 := &x.Annotations + yym85 := z.DecBinary() + _ = yym85 + if false { + } else { + z.F.DecMapStringStringX(yyv84, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv86 := &x.OwnerReferences + yym87 := z.DecBinary() + _ = yym87 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv86), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv88 := &x.Finalizers + yym89 := z.DecBinary() + _ = yym89 + if false { + } else { + z.F.DecSliceStringX(yyv88, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + case "Spec": + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv91 := &x.Spec + yyv91.CodecDecodeSelf(d) + } + case "Status": + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv92 := &x.Status + yyv92.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys66) + } // end switch yys66 + } // end for yyj66 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj93 int + var yyb93 bool + var yyhl93 bool = l >= 0 + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv103 := &x.CreationTimestamp + yym104 := z.DecBinary() + _ = yym104 + if false { + } else if z.HasExtensions() && z.DecExt(yyv103) { + } else if yym104 { + z.DecBinaryUnmarshal(yyv103) + } else if !yym104 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv103) + } else { + z.DecFallback(yyv103, false) + } + } + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym106 := z.DecBinary() + _ = yym106 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym106 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym106 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym108 := z.DecBinary() + _ = yym108 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv109 := &x.Labels + yym110 := z.DecBinary() + _ = yym110 + if false { + } else { + z.F.DecMapStringStringX(yyv109, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv111 := &x.Annotations + yym112 := z.DecBinary() + _ = yym112 + if false { + } else { + z.F.DecMapStringStringX(yyv111, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv113 := &x.OwnerReferences + yym114 := z.DecBinary() + _ = yym114 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv113), d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv115 := &x.Finalizers + yym116 := z.DecBinary() + _ = yym116 + if false { + } else { + z.F.DecSliceStringX(yyv115, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv118 := &x.Spec + yyv118.CodecDecodeSelf(d) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv119 := &x.Status + yyv119.CodecDecodeSelf(d) + } + for { + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj93-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym120 := z.EncBinary() + _ = yym120 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep121 := !z.EncBinary() + yy2arr121 := z.EncBasicHandle().StructToArray + var yyq121 [1]bool + _, _, _ = yysep121, yyq121, yy2arr121 + const yyr121 bool = false + var yynn121 int + if yyr121 || yy2arr121 { + r.EncodeArrayStart(1) + } else { + yynn121 = 1 + for _, b := range yyq121 { + if b { + yynn121++ + } + } + r.EncodeMapStart(yynn121) + yynn121 = 0 + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym123 := z.EncBinary() + _ = yym123 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Token")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym124 := z.EncBinary() + _ = yym124 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym125 := z.DecBinary() + _ = yym125 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct126 := r.ContainerType() + if yyct126 == codecSelferValueTypeMap1234 { + yyl126 := r.ReadMapStart() + if yyl126 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl126, d) + } + } else if yyct126 == codecSelferValueTypeArray1234 { + yyl126 := r.ReadArrayStart() + if yyl126 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl126, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys127Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys127Slc + var yyhl127 bool = l >= 0 + for yyj127 := 0; ; yyj127++ { + if yyhl127 { + if yyj127 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys127Slc = r.DecodeBytes(yys127Slc, true, true) + yys127 := string(yys127Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys127 { + case "Token": + if r.TryDecodeAsNil() { + x.Token = "" + } else { + x.Token = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys127) + } // end switch yys127 + } // end for yyj127 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj129 int + var yyb129 bool + var yyhl129 bool = l >= 0 + yyj129++ + if yyhl129 { + yyb129 = yyj129 > l + } else { + yyb129 = r.CheckBreak() + } + if yyb129 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Token = "" + } else { + x.Token = string(r.DecodeString()) + } + for { + yyj129++ + if yyhl129 { + yyb129 = yyj129 > l + } else { + yyb129 = r.CheckBreak() + } + if yyb129 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj129-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym131 := z.EncBinary() + _ = yym131 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep132 := !z.EncBinary() + yy2arr132 := z.EncBasicHandle().StructToArray + var yyq132 [3]bool + _, _, _ = yysep132, yyq132, yy2arr132 + const yyr132 bool = false + var yynn132 int + if yyr132 || yy2arr132 { + r.EncodeArrayStart(3) + } else { + yynn132 = 3 + for _, b := range yyq132 { + if b { + yynn132++ + } + } + r.EncodeMapStart(yynn132) + yynn132 = 0 + } + if yyr132 || yy2arr132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym134 := z.EncBinary() + _ = yym134 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Authenticated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym135 := z.EncBinary() + _ = yym135 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } + if yyr132 || yy2arr132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy137 := &x.User + yy137.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("User")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy138 := &x.User + yy138.CodecEncodeSelf(e) + } + if yyr132 || yy2arr132 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym140 := z.EncBinary() + _ = yym140 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym141 := z.EncBinary() + _ = yym141 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + if yyr132 || yy2arr132 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym142 := z.DecBinary() + _ = yym142 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct143 := r.ContainerType() + if yyct143 == codecSelferValueTypeMap1234 { + yyl143 := r.ReadMapStart() + if yyl143 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl143, d) + } + } else if yyct143 == codecSelferValueTypeArray1234 { + yyl143 := r.ReadArrayStart() + if yyl143 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl143, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys144Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys144Slc + var yyhl144 bool = l >= 0 + for yyj144 := 0; ; yyj144++ { + if yyhl144 { + if yyj144 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys144Slc = r.DecodeBytes(yys144Slc, true, true) + yys144 := string(yys144Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys144 { + case "Authenticated": + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + x.Authenticated = bool(r.DecodeBool()) + } + case "User": + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv146 := &x.User + yyv146.CodecDecodeSelf(d) + } + case "Error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys144) + } // end switch yys144 + } // end for yyj144 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj148 int + var yyb148 bool + var yyhl148 bool = l >= 0 + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + x.Authenticated = bool(r.DecodeBool()) + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv150 := &x.User + yyv150.CodecDecodeSelf(d) + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + for { + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj148-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *UserInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym152 := z.EncBinary() + _ = yym152 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep153 := !z.EncBinary() + yy2arr153 := z.EncBasicHandle().StructToArray + var yyq153 [4]bool + _, _, _ = yysep153, yyq153, yy2arr153 + const yyr153 bool = false + var yynn153 int + if yyr153 || yy2arr153 { + r.EncodeArrayStart(4) + } else { + yynn153 = 4 + for _, b := range yyq153 { + if b { + yynn153++ + } + } + r.EncodeMapStart(yynn153) + yynn153 = 0 + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym155 := z.EncBinary() + _ = yym155 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym156 := z.EncBinary() + _ = yym156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym158 := z.EncBinary() + _ = yym158 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("UID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym161 := z.EncBinary() + _ = yym161 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym162 := z.EncBinary() + _ = yym162 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym164 := z.EncBinary() + _ = yym164 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym165 := z.EncBinary() + _ = yym165 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *UserInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym166 := z.DecBinary() + _ = yym166 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct167 := r.ContainerType() + if yyct167 == codecSelferValueTypeMap1234 { + yyl167 := r.ReadMapStart() + if yyl167 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl167, d) + } + } else if yyct167 == codecSelferValueTypeArray1234 { + yyl167 := r.ReadArrayStart() + if yyl167 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl167, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *UserInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys168Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys168Slc + var yyhl168 bool = l >= 0 + for yyj168 := 0; ; yyj168++ { + if yyhl168 { + if yyj168 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys168Slc = r.DecodeBytes(yys168Slc, true, true) + yys168 := string(yys168Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys168 { + case "Username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + case "UID": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + case "Groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv171 := &x.Groups + yym172 := z.DecBinary() + _ = yym172 + if false { + } else { + z.F.DecSliceStringX(yyv171, false, d) + } + } + case "Extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv173 := &x.Extra + yym174 := z.DecBinary() + _ = yym174 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv173), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys168) + } // end switch yys168 + } // end for yyj168 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *UserInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj175 int + var yyb175 bool + var yyhl175 bool = l >= 0 + yyj175++ + if yyhl175 { + yyb175 = yyj175 > l + } else { + yyb175 = r.CheckBreak() + } + if yyb175 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + yyj175++ + if yyhl175 { + yyb175 = yyj175 > l + } else { + yyb175 = r.CheckBreak() + } + if yyb175 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + yyj175++ + if yyhl175 { + yyb175 = yyj175 > l + } else { + yyb175 = r.CheckBreak() + } + if yyb175 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv178 := &x.Groups + yym179 := z.DecBinary() + _ = yym179 + if false { + } else { + z.F.DecSliceStringX(yyv178, false, d) + } + } + yyj175++ + if yyhl175 { + yyb175 = yyj175 > l + } else { + yyb175 = r.CheckBreak() + } + if yyb175 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv180 := &x.Extra + yym181 := z.DecBinary() + _ = yym181 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv180), d) + } + } + for { + yyj175++ + if yyhl175 { + yyb175 = yyj175 > l + } else { + yyb175 = r.CheckBreak() + } + if yyb175 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj175-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym182 := z.EncBinary() + _ = yym182 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym183 := z.DecBinary() + _ = yym183 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x codecSelfer1234) encSliceapi_OwnerReference(v []pkg2_api.OwnerReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv184 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy185 := &yyv184 + yy185.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceapi_OwnerReference(v *[]pkg2_api.OwnerReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv186 := *v + yyh186, yyl186 := z.DecSliceHelperStart() + var yyc186 bool + if yyl186 == 0 { + if yyv186 == nil { + yyv186 = []pkg2_api.OwnerReference{} + yyc186 = true + } else if len(yyv186) != 0 { + yyv186 = yyv186[:0] + yyc186 = true + } + } else if yyl186 > 0 { + var yyrr186, yyrl186 int + var yyrt186 bool + if yyl186 > cap(yyv186) { + + yyrg186 := len(yyv186) > 0 + yyv2186 := yyv186 + yyrl186, yyrt186 = z.DecInferLen(yyl186, z.DecBasicHandle().MaxInitLen, 72) + if yyrt186 { + if yyrl186 <= cap(yyv186) { + yyv186 = yyv186[:yyrl186] + } else { + yyv186 = make([]pkg2_api.OwnerReference, yyrl186) + } + } else { + yyv186 = make([]pkg2_api.OwnerReference, yyrl186) + } + yyc186 = true + yyrr186 = len(yyv186) + if yyrg186 { + copy(yyv186, yyv2186) + } + } else if yyl186 != len(yyv186) { + yyv186 = yyv186[:yyl186] + yyc186 = true + } + yyj186 := 0 + for ; yyj186 < yyrr186; yyj186++ { + yyh186.ElemContainerState(yyj186) + if r.TryDecodeAsNil() { + yyv186[yyj186] = pkg2_api.OwnerReference{} + } else { + yyv187 := &yyv186[yyj186] + yyv187.CodecDecodeSelf(d) + } + + } + if yyrt186 { + for ; yyj186 < yyl186; yyj186++ { + yyv186 = append(yyv186, pkg2_api.OwnerReference{}) + yyh186.ElemContainerState(yyj186) + if r.TryDecodeAsNil() { + yyv186[yyj186] = pkg2_api.OwnerReference{} + } else { + yyv188 := &yyv186[yyj186] + yyv188.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj186 := 0 + for ; !r.CheckBreak(); yyj186++ { + + if yyj186 >= len(yyv186) { + yyv186 = append(yyv186, pkg2_api.OwnerReference{}) // var yyz186 pkg2_api.OwnerReference + yyc186 = true + } + yyh186.ElemContainerState(yyj186) + if yyj186 < len(yyv186) { + if r.TryDecodeAsNil() { + yyv186[yyj186] = pkg2_api.OwnerReference{} + } else { + yyv189 := &yyv186[yyj186] + yyv189.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj186 < len(yyv186) { + yyv186 = yyv186[:yyj186] + yyc186 = true + } else if yyj186 == 0 && yyv186 == nil { + yyv186 = []pkg2_api.OwnerReference{} + yyc186 = true + } + } + yyh186.End() + if yyc186 { + *v = yyv186 + } +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk190, yyv190 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym191 := z.EncBinary() + _ = yym191 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk190)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv190 == nil { + r.EncodeNil() + } else { + yyv190.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv192 := *v + yyl192 := r.ReadMapStart() + yybh192 := z.DecBasicHandle() + if yyv192 == nil { + yyrl192, _ := z.DecInferLen(yyl192, yybh192.MaxInitLen, 40) + yyv192 = make(map[string]ExtraValue, yyrl192) + *v = yyv192 + } + var yymk192 string + var yymv192 ExtraValue + var yymg192 bool + if yybh192.MapValueReset { + yymg192 = true + } + if yyl192 > 0 { + for yyj192 := 0; yyj192 < yyl192; yyj192++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk192 = "" + } else { + yymk192 = string(r.DecodeString()) + } + + if yymg192 { + yymv192 = yyv192[yymk192] + } else { + yymv192 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv192 = nil + } else { + yyv194 := &yymv192 + yyv194.CodecDecodeSelf(d) + } + + if yyv192 != nil { + yyv192[yymk192] = yymv192 + } + } + } else if yyl192 < 0 { + for yyj192 := 0; !r.CheckBreak(); yyj192++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk192 = "" + } else { + yymk192 = string(r.DecodeString()) + } + + if yymg192 { + yymv192 = yyv192[yymk192] + } else { + yymv192 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv192 = nil + } else { + yyv196 := &yymv192 + yyv196.CodecDecodeSelf(d) + } + + if yyv192 != nil { + yyv192[yymk192] = yymv192 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv197 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym198 := z.EncBinary() + _ = yym198 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv197)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv199 := *v + yyh199, yyl199 := z.DecSliceHelperStart() + var yyc199 bool + if yyl199 == 0 { + if yyv199 == nil { + yyv199 = []string{} + yyc199 = true + } else if len(yyv199) != 0 { + yyv199 = yyv199[:0] + yyc199 = true + } + } else if yyl199 > 0 { + var yyrr199, yyrl199 int + var yyrt199 bool + if yyl199 > cap(yyv199) { + + yyrl199, yyrt199 = z.DecInferLen(yyl199, z.DecBasicHandle().MaxInitLen, 16) + if yyrt199 { + if yyrl199 <= cap(yyv199) { + yyv199 = yyv199[:yyrl199] + } else { + yyv199 = make([]string, yyrl199) + } + } else { + yyv199 = make([]string, yyrl199) + } + yyc199 = true + yyrr199 = len(yyv199) + } else if yyl199 != len(yyv199) { + yyv199 = yyv199[:yyl199] + yyc199 = true + } + yyj199 := 0 + for ; yyj199 < yyrr199; yyj199++ { + yyh199.ElemContainerState(yyj199) + if r.TryDecodeAsNil() { + yyv199[yyj199] = "" + } else { + yyv199[yyj199] = string(r.DecodeString()) + } + + } + if yyrt199 { + for ; yyj199 < yyl199; yyj199++ { + yyv199 = append(yyv199, "") + yyh199.ElemContainerState(yyj199) + if r.TryDecodeAsNil() { + yyv199[yyj199] = "" + } else { + yyv199[yyj199] = string(r.DecodeString()) + } + + } + } + + } else { + yyj199 := 0 + for ; !r.CheckBreak(); yyj199++ { + + if yyj199 >= len(yyv199) { + yyv199 = append(yyv199, "") // var yyz199 string + yyc199 = true + } + yyh199.ElemContainerState(yyj199) + if yyj199 < len(yyv199) { + if r.TryDecodeAsNil() { + yyv199[yyj199] = "" + } else { + yyv199[yyj199] = string(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj199 < len(yyv199) { + yyv199 = yyv199[:yyj199] + yyc199 = true + } else if yyj199 == 0 && yyv199 == nil { + yyv199 = []string{} + yyc199 = true + } + } + yyh199.End() + if yyc199 { + *v = yyv199 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.go new file mode 100644 index 0000000000..16be102101 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/types.go @@ -0,0 +1,90 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authentication + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +const ( + // ImpersonateUserHeader is used to impersonate a particular user during an API server request + ImpersonateUserHeader = "Impersonate-User" + + // ImpersonateGroupHeader is used to impersonate a particular group during an API server request. + // It can be repeated multiplied times for multiple groups. + ImpersonateGroupHeader = "Impersonate-Group" + + // ImpersonateUserExtraHeaderPrefix is a prefix for any header used to impersonate an entry in the + // extra map[string][]string for user.Info. The key will be every after the prefix. + // It can be repeated multiplied times for multiple map keys and the same key can be repeated multiple + // times to have multiple elements in the slice under a single key + ImpersonateUserExtraHeaderPrefix = "Impersonate-Extra-" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// TokenReview attempts to authenticate a token to a known user. +type TokenReview struct { + unversioned.TypeMeta + // ObjectMeta fulfills the meta.ObjectMetaAccessor interface so that the stock + // REST handler paths work + api.ObjectMeta + + // Spec holds information about the request being evaluated + Spec TokenReviewSpec + + // Status is filled in by the server and indicates whether the request can be authenticated. + Status TokenReviewStatus +} + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Token is the opaque bearer token. + Token string +} + +// TokenReviewStatus is the result of the token authentication request. +// This type mirrors the authentication.Token interface +type TokenReviewStatus struct { + // Authenticated indicates that the token was associated with a known user. + Authenticated bool + // User is the UserInfo associated with the provided token. + User UserInfo + // Error indicates that the token couldn't be checked + Error string +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +type UserInfo struct { + // The name that uniquely identifies this user among all active users. + Username string + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + UID string + // The names of groups this user is a part of. + Groups []string + // Any additional information provided by the authenticator. + Extra map[string]ExtraValue +} + +// ExtraValue masks the value so protobuf can generate +type ExtraValue []string diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/conversion.go new file mode 100644 index 0000000000..1f00014982 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/defaults.go new file mode 100644 index 0000000000..d80bd84c02 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/doc.go new file mode 100644 index 0000000000..e6530b5291 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/authentication +// +groupName=authentication.k8s.io +// +k8s:openapi-gen=true +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.pb.go new file mode 100644 index 0000000000..096d955862 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.pb.go @@ -0,0 +1,1280 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authentication/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authentication/v1beta1/generated.proto + + It has these top-level messages: + ExtraValue + TokenReview + TokenReviewSpec + TokenReviewStatus + UserInfo +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *TokenReview) Reset() { *m = TokenReview{} } +func (*TokenReview) ProtoMessage() {} +func (*TokenReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *TokenReviewSpec) Reset() { *m = TokenReviewSpec{} } +func (*TokenReviewSpec) ProtoMessage() {} +func (*TokenReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *TokenReviewStatus) Reset() { *m = TokenReviewStatus{} } +func (*TokenReviewStatus) ProtoMessage() {} +func (*TokenReviewStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *UserInfo) Reset() { *m = UserInfo{} } +func (*UserInfo) ProtoMessage() {} +func (*UserInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.1.5.pkg.apis.authentication.v1beta1.ExtraValue") + proto.RegisterType((*TokenReview)(nil), "k8s.io.client-go.1.5.pkg.apis.authentication.v1beta1.TokenReview") + proto.RegisterType((*TokenReviewSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.authentication.v1beta1.TokenReviewSpec") + proto.RegisterType((*TokenReviewStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.authentication.v1beta1.TokenReviewStatus") + proto.RegisterType((*UserInfo)(nil), "k8s.io.client-go.1.5.pkg.apis.authentication.v1beta1.UserInfo") +} +func (m ExtraValue) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m ExtraValue) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *TokenReview) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TokenReview) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *TokenReviewSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TokenReviewSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Token))) + i += copy(data[i:], m.Token) + return i, nil +} + +func (m *TokenReviewStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TokenReviewStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Authenticated { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.User.Size())) + n4, err := m.User.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Error))) + i += copy(data[i:], m.Error) + return i, nil +} + +func (m *UserInfo) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *UserInfo) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Username))) + i += copy(data[i:], m.Username) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.UID))) + i += copy(data[i:], m.UID) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Extra) > 0 { + for k := range m.Extra { + data[i] = 0x22 + i++ + v := m.Extra[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n5, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + } + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *TokenReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewSpec) Size() (n int) { + var l int + _ = l + l = len(m.Token) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *TokenReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = m.User.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Error) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *UserInfo) Size() (n int) { + var l int + _ = l + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *TokenReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "TokenReviewSpec", "TokenReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "TokenReviewStatus", "TokenReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewSpec{`, + `Token:` + fmt.Sprintf("%v", this.Token) + `,`, + `}`, + }, "") + return s +} +func (this *TokenReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TokenReviewStatus{`, + `Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`, + `User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`, + `Error:` + fmt.Sprintf("%v", this.Error) + `,`, + `}`, + }, "") + return s +} +func (this *UserInfo) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&UserInfo{`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReview) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenReviewStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TokenReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Authenticated", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Authenticated = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.User.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserInfo) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UserInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + m.Extra[mapkey] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 632 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x53, 0x4f, 0x4f, 0x13, 0x41, + 0x14, 0xef, 0x5f, 0x6c, 0xa7, 0xa2, 0x38, 0x89, 0x49, 0xd3, 0x44, 0x4a, 0xd6, 0x0b, 0x26, 0x30, + 0x9b, 0x92, 0xa8, 0x04, 0xe2, 0x81, 0x0d, 0x68, 0x38, 0x18, 0x93, 0x41, 0x8c, 0x31, 0xf1, 0xb0, + 0xed, 0x3e, 0x96, 0x75, 0xdb, 0x9d, 0x66, 0x76, 0xa6, 0xc8, 0x8d, 0x8f, 0xe0, 0xd1, 0xa3, 0xdf, + 0xc3, 0x2f, 0xd0, 0x23, 0x07, 0x0f, 0x1e, 0x0c, 0x11, 0xfc, 0x22, 0xce, 0xcc, 0x8e, 0xb4, 0xb4, + 0xf4, 0x20, 0x1c, 0x26, 0xd9, 0xf9, 0xcd, 0xfb, 0xfd, 0xde, 0xef, 0xbd, 0xb7, 0x0f, 0x6d, 0xc5, + 0xeb, 0x29, 0x89, 0x98, 0x1b, 0xcb, 0x36, 0xf0, 0x04, 0x04, 0xa4, 0x6e, 0x3f, 0x0e, 0x5d, 0xbf, + 0x1f, 0xa5, 0xae, 0x2f, 0xc5, 0x21, 0x24, 0x22, 0xea, 0xf8, 0x22, 0x62, 0x89, 0x3b, 0x68, 0xb5, + 0x41, 0xf8, 0x2d, 0x37, 0x84, 0x04, 0xb8, 0x2f, 0x20, 0x20, 0x7d, 0xce, 0x04, 0xc3, 0xad, 0x4c, + 0x82, 0x8c, 0x24, 0x88, 0x92, 0x20, 0x5a, 0x82, 0x5c, 0x95, 0x20, 0x56, 0xa2, 0xb1, 0x1a, 0x46, + 0xe2, 0x50, 0xb6, 0x49, 0x87, 0xf5, 0xdc, 0x90, 0x85, 0xcc, 0x35, 0x4a, 0x6d, 0x79, 0x60, 0x6e, + 0xe6, 0x62, 0xbe, 0xb2, 0x0c, 0x8d, 0xb5, 0x99, 0x26, 0x5d, 0x0e, 0x29, 0x93, 0xbc, 0x03, 0x93, + 0xae, 0x1a, 0x4f, 0x67, 0x73, 0x64, 0x32, 0x00, 0x9e, 0x2a, 0x3f, 0x10, 0x4c, 0xd1, 0x56, 0x66, + 0xd3, 0x06, 0x53, 0xa5, 0x37, 0x56, 0xaf, 0x8f, 0xe6, 0x52, 0x95, 0xdc, 0x9b, 0xf6, 0xd4, 0xba, + 0x3e, 0x5c, 0x8a, 0xa8, 0xeb, 0x46, 0x89, 0x48, 0x05, 0x9f, 0xa4, 0x38, 0xcf, 0x11, 0xda, 0xf9, + 0x2c, 0xb8, 0xff, 0xce, 0xef, 0x4a, 0xc0, 0x4d, 0x54, 0x8e, 0x04, 0xf4, 0xd2, 0x7a, 0x7e, 0xa9, + 0xb8, 0x5c, 0xf5, 0xaa, 0x17, 0x67, 0xcd, 0xf2, 0xae, 0x06, 0x68, 0x86, 0x6f, 0x54, 0xbe, 0x7e, + 0x6b, 0xe6, 0x4e, 0x7e, 0x2d, 0xe5, 0x9c, 0xef, 0x05, 0x54, 0x7b, 0xcb, 0x62, 0x48, 0x28, 0x0c, + 0x22, 0x38, 0xc2, 0xef, 0x51, 0xa5, 0xa7, 0x7a, 0x1f, 0xf8, 0xc2, 0x57, 0xec, 0xfc, 0x72, 0x6d, + 0x6d, 0x99, 0xcc, 0x1c, 0x9c, 0x1a, 0x14, 0x79, 0xd3, 0xfe, 0x04, 0x1d, 0xf1, 0x5a, 0x71, 0x3c, + 0x3c, 0x3c, 0x6b, 0xe6, 0x54, 0x2e, 0x34, 0xc2, 0xe8, 0xa5, 0x1a, 0x0e, 0x50, 0x29, 0xed, 0x43, + 0xa7, 0x5e, 0x30, 0xaa, 0x1e, 0xf9, 0xef, 0xdf, 0x81, 0x8c, 0xf9, 0xdc, 0x53, 0x4a, 0xde, 0x5d, + 0x9b, 0xaf, 0xa4, 0x6f, 0xd4, 0xa8, 0xe3, 0x2e, 0x9a, 0x4b, 0x85, 0x2f, 0x64, 0x5a, 0x2f, 0x9a, + 0x3c, 0xdb, 0xb7, 0xcc, 0x63, 0xb4, 0xbc, 0x7b, 0x36, 0xd3, 0x5c, 0x76, 0xa7, 0x36, 0x87, 0xf3, + 0x0c, 0xdd, 0x9f, 0x30, 0x85, 0x1f, 0xa3, 0xb2, 0xd0, 0x90, 0xe9, 0x5e, 0xd5, 0x9b, 0xb7, 0xcc, + 0x72, 0x16, 0x97, 0xbd, 0x39, 0x3f, 0xf2, 0xe8, 0xc1, 0x54, 0x16, 0xbc, 0x89, 0xe6, 0xc7, 0x1c, + 0x41, 0x60, 0x24, 0x2a, 0xde, 0x43, 0x2b, 0x31, 0xbf, 0x35, 0xfe, 0x48, 0xaf, 0xc6, 0xe2, 0x8f, + 0xa8, 0x24, 0x53, 0xe0, 0xb6, 0xbd, 0x9b, 0x37, 0x28, 0x7b, 0x5f, 0xd1, 0x77, 0x93, 0x03, 0x36, + 0xea, 0xab, 0x46, 0xa8, 0x91, 0xd5, 0x65, 0x01, 0xe7, 0x8c, 0x9b, 0xb6, 0x8e, 0x95, 0xb5, 0xa3, + 0x41, 0x9a, 0xbd, 0x39, 0xe7, 0x05, 0x54, 0xf9, 0xa7, 0x82, 0x57, 0x50, 0x45, 0x33, 0x13, 0xbf, + 0x07, 0xb6, 0x17, 0x0b, 0x96, 0x64, 0x62, 0x34, 0x4e, 0x2f, 0x23, 0xf0, 0x23, 0x54, 0x94, 0x51, + 0x60, 0xdc, 0x57, 0xbd, 0x9a, 0x0d, 0x2c, 0xee, 0xef, 0x6e, 0x53, 0x8d, 0x63, 0x07, 0xcd, 0x85, + 0x9c, 0xc9, 0xbe, 0x1e, 0xab, 0xfe, 0xa5, 0x91, 0x1e, 0xc6, 0x2b, 0x83, 0x50, 0xfb, 0x82, 0x63, + 0x65, 0x51, 0xef, 0x40, 0xbd, 0xa4, 0x42, 0x6a, 0x6b, 0x2f, 0x6f, 0xd1, 0x02, 0x62, 0x96, 0x69, + 0x27, 0x11, 0xfc, 0x78, 0xac, 0x54, 0x8d, 0xd1, 0x2c, 0x47, 0xe3, 0xc8, 0x2e, 0x9c, 0x89, 0xc1, + 0x0b, 0xa8, 0x18, 0xc3, 0x71, 0x56, 0x26, 0xd5, 0x9f, 0x78, 0x0f, 0x95, 0x07, 0x7a, 0x17, 0xed, + 0x3c, 0x5e, 0xdc, 0xc0, 0xcc, 0x68, 0xa1, 0x69, 0xa6, 0xb5, 0x51, 0x58, 0xcf, 0x7b, 0x4f, 0x86, + 0xe7, 0x8b, 0xb9, 0x53, 0x75, 0x7e, 0xaa, 0x73, 0x72, 0xb1, 0x98, 0x1f, 0xaa, 0x73, 0xaa, 0xce, + 0x6f, 0x75, 0xbe, 0xfc, 0x59, 0xcc, 0x7d, 0xb8, 0x63, 0x05, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, + 0xca, 0xd0, 0x35, 0x8c, 0xb5, 0x05, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.proto new file mode 100644 index 0000000000..ac148e207d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/generated.proto @@ -0,0 +1,90 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.authentication.v1beta1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +message TokenReview { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional TokenReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request can be authenticated. + optional TokenReviewStatus status = 3; +} + +// TokenReviewSpec is a description of the token authentication request. +message TokenReviewSpec { + // Token is the opaque bearer token. + optional string token = 1; +} + +// TokenReviewStatus is the result of the token authentication request. +message TokenReviewStatus { + // Authenticated indicates that the token was associated with a known user. + optional bool authenticated = 1; + + // User is the UserInfo associated with the provided token. + optional UserInfo user = 2; + + // Error indicates that the token couldn't be checked + optional string error = 3; +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +message UserInfo { + // The name that uniquely identifies this user among all active users. + optional string username = 1; + + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + optional string uid = 2; + + // The names of groups this user is a part of. + repeated string groups = 3; + + // Any additional information provided by the authenticator. + map<string, ExtraValue> extra = 4; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/register.go new file mode 100644 index 0000000000..430ff05273 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/register.go @@ -0,0 +1,46 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "authentication.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + &v1.ExportOptions{}, + + &TokenReview{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.generated.go new file mode 100644 index 0000000000..8076b845c5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.generated.go @@ -0,0 +1,1429 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_unversioned.TypeMeta + var v1 pkg2_v1.ObjectMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *TokenReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = TokenReviewSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = TokenReviewStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [1]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Token != "" + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(1) + } else { + yynn33 = 0 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("token")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Token)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym37 := z.DecBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct38 := r.ContainerType() + if yyct38 == codecSelferValueTypeMap1234 { + yyl38 := r.ReadMapStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl38, d) + } + } else if yyct38 == codecSelferValueTypeArray1234 { + yyl38 := r.ReadArrayStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl38, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys39Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys39Slc + var yyhl39 bool = l >= 0 + for yyj39 := 0; ; yyj39++ { + if yyhl39 { + if yyj39 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys39Slc = r.DecodeBytes(yys39Slc, true, true) + yys39 := string(yys39Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys39 { + case "token": + if r.TryDecodeAsNil() { + x.Token = "" + } else { + x.Token = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys39) + } // end switch yys39 + } // end for yyj39 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj41 int + var yyb41 bool + var yyhl41 bool = l >= 0 + yyj41++ + if yyhl41 { + yyb41 = yyj41 > l + } else { + yyb41 = r.CheckBreak() + } + if yyb41 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Token = "" + } else { + x.Token = string(r.DecodeString()) + } + for { + yyj41++ + if yyhl41 { + yyb41 = yyj41 > l + } else { + yyb41 = r.CheckBreak() + } + if yyb41 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj41-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *TokenReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym43 := z.EncBinary() + _ = yym43 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep44 := !z.EncBinary() + yy2arr44 := z.EncBasicHandle().StructToArray + var yyq44 [3]bool + _, _, _ = yysep44, yyq44, yy2arr44 + const yyr44 bool = false + yyq44[0] = x.Authenticated != false + yyq44[1] = true + yyq44[2] = x.Error != "" + var yynn44 int + if yyr44 || yy2arr44 { + r.EncodeArrayStart(3) + } else { + yynn44 = 0 + for _, b := range yyq44 { + if b { + yynn44++ + } + } + r.EncodeMapStart(yynn44) + yynn44 = 0 + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq44[0] { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq44[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("authenticated")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + r.EncodeBool(bool(x.Authenticated)) + } + } + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq44[1] { + yy49 := &x.User + yy49.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq44[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy50 := &x.User + yy50.CodecEncodeSelf(e) + } + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq44[2] { + yym52 := z.EncBinary() + _ = yym52 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq44[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("error")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Error)) + } + } + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *TokenReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct55 := r.ContainerType() + if yyct55 == codecSelferValueTypeMap1234 { + yyl55 := r.ReadMapStart() + if yyl55 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl55, d) + } + } else if yyct55 == codecSelferValueTypeArray1234 { + yyl55 := r.ReadArrayStart() + if yyl55 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl55, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *TokenReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys56Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys56Slc + var yyhl56 bool = l >= 0 + for yyj56 := 0; ; yyj56++ { + if yyhl56 { + if yyj56 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys56Slc = r.DecodeBytes(yys56Slc, true, true) + yys56 := string(yys56Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys56 { + case "authenticated": + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + x.Authenticated = bool(r.DecodeBool()) + } + case "user": + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv58 := &x.User + yyv58.CodecDecodeSelf(d) + } + case "error": + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys56) + } // end switch yys56 + } // end for yyj56 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *TokenReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj60 int + var yyb60 bool + var yyhl60 bool = l >= 0 + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Authenticated = false + } else { + x.Authenticated = bool(r.DecodeBool()) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = UserInfo{} + } else { + yyv62 := &x.User + yyv62.CodecDecodeSelf(d) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Error = "" + } else { + x.Error = string(r.DecodeString()) + } + for { + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj60-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *UserInfo) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep65 := !z.EncBinary() + yy2arr65 := z.EncBasicHandle().StructToArray + var yyq65 [4]bool + _, _, _ = yysep65, yyq65, yy2arr65 + const yyr65 bool = false + yyq65[0] = x.Username != "" + yyq65[1] = x.UID != "" + yyq65[2] = len(x.Groups) != 0 + yyq65[3] = len(x.Extra) != 0 + var yynn65 int + if yyr65 || yy2arr65 { + r.EncodeArrayStart(4) + } else { + yynn65 = 0 + for _, b := range yyq65 { + if b { + yynn65++ + } + } + r.EncodeMapStart(yynn65) + yynn65 = 0 + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[0] { + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[1] { + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[2] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym73 := z.EncBinary() + _ = yym73 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym74 := z.EncBinary() + _ = yym74 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[3] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym76 := z.EncBinary() + _ = yym76 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym77 := z.EncBinary() + _ = yym77 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *UserInfo) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym78 := z.DecBinary() + _ = yym78 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct79 := r.ContainerType() + if yyct79 == codecSelferValueTypeMap1234 { + yyl79 := r.ReadMapStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl79, d) + } + } else if yyct79 == codecSelferValueTypeArray1234 { + yyl79 := r.ReadArrayStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl79, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *UserInfo) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys80Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys80Slc + var yyhl80 bool = l >= 0 + for yyj80 := 0; ; yyj80++ { + if yyhl80 { + if yyj80 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys80Slc = r.DecodeBytes(yys80Slc, true, true) + yys80 := string(yys80Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys80 { + case "username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv83 := &x.Groups + yym84 := z.DecBinary() + _ = yym84 + if false { + } else { + z.F.DecSliceStringX(yyv83, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv85 := &x.Extra + yym86 := z.DecBinary() + _ = yym86 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv85), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys80) + } // end switch yys80 + } // end for yyj80 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *UserInfo) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj87 int + var yyb87 bool + var yyhl87 bool = l >= 0 + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv90 := &x.Groups + yym91 := z.DecBinary() + _ = yym91 + if false { + } else { + z.F.DecSliceStringX(yyv90, false, d) + } + } + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv92 := &x.Extra + yym93 := z.DecBinary() + _ = yym93 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv92), d) + } + } + for { + yyj87++ + if yyhl87 { + yyb87 = yyj87 > l + } else { + yyb87 = r.CheckBreak() + } + if yyb87 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj87-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym95 := z.DecBinary() + _ = yym95 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk96, yyv96 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym97 := z.EncBinary() + _ = yym97 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk96)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv96 == nil { + r.EncodeNil() + } else { + yyv96.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv98 := *v + yyl98 := r.ReadMapStart() + yybh98 := z.DecBasicHandle() + if yyv98 == nil { + yyrl98, _ := z.DecInferLen(yyl98, yybh98.MaxInitLen, 40) + yyv98 = make(map[string]ExtraValue, yyrl98) + *v = yyv98 + } + var yymk98 string + var yymv98 ExtraValue + var yymg98 bool + if yybh98.MapValueReset { + yymg98 = true + } + if yyl98 > 0 { + for yyj98 := 0; yyj98 < yyl98; yyj98++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk98 = "" + } else { + yymk98 = string(r.DecodeString()) + } + + if yymg98 { + yymv98 = yyv98[yymk98] + } else { + yymv98 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv98 = nil + } else { + yyv100 := &yymv98 + yyv100.CodecDecodeSelf(d) + } + + if yyv98 != nil { + yyv98[yymk98] = yymv98 + } + } + } else if yyl98 < 0 { + for yyj98 := 0; !r.CheckBreak(); yyj98++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk98 = "" + } else { + yymk98 = string(r.DecodeString()) + } + + if yymg98 { + yymv98 = yyv98[yymk98] + } else { + yymv98 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv98 = nil + } else { + yyv102 := &yymv98 + yyv102.CodecDecodeSelf(d) + } + + if yyv98 != nil { + yyv98[yymk98] = yymv98 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv103 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv103)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv105 := *v + yyh105, yyl105 := z.DecSliceHelperStart() + var yyc105 bool + if yyl105 == 0 { + if yyv105 == nil { + yyv105 = []string{} + yyc105 = true + } else if len(yyv105) != 0 { + yyv105 = yyv105[:0] + yyc105 = true + } + } else if yyl105 > 0 { + var yyrr105, yyrl105 int + var yyrt105 bool + if yyl105 > cap(yyv105) { + + yyrl105, yyrt105 = z.DecInferLen(yyl105, z.DecBasicHandle().MaxInitLen, 16) + if yyrt105 { + if yyrl105 <= cap(yyv105) { + yyv105 = yyv105[:yyrl105] + } else { + yyv105 = make([]string, yyrl105) + } + } else { + yyv105 = make([]string, yyrl105) + } + yyc105 = true + yyrr105 = len(yyv105) + } else if yyl105 != len(yyv105) { + yyv105 = yyv105[:yyl105] + yyc105 = true + } + yyj105 := 0 + for ; yyj105 < yyrr105; yyj105++ { + yyh105.ElemContainerState(yyj105) + if r.TryDecodeAsNil() { + yyv105[yyj105] = "" + } else { + yyv105[yyj105] = string(r.DecodeString()) + } + + } + if yyrt105 { + for ; yyj105 < yyl105; yyj105++ { + yyv105 = append(yyv105, "") + yyh105.ElemContainerState(yyj105) + if r.TryDecodeAsNil() { + yyv105[yyj105] = "" + } else { + yyv105[yyj105] = string(r.DecodeString()) + } + + } + } + + } else { + yyj105 := 0 + for ; !r.CheckBreak(); yyj105++ { + + if yyj105 >= len(yyv105) { + yyv105 = append(yyv105, "") // var yyz105 string + yyc105 = true + } + yyh105.ElemContainerState(yyj105) + if yyj105 < len(yyv105) { + if r.TryDecodeAsNil() { + yyv105[yyj105] = "" + } else { + yyv105[yyj105] = string(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj105 < len(yyv105) { + yyv105 = yyv105[:yyj105] + yyc105 = true + } else if yyj105 == 0 && yyv105 == nil { + yyv105 = []string{} + yyc105 = true + } + } + yyh105.End() + if yyc105 { + *v = yyv105 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.go new file mode 100644 index 0000000000..aa5943bcd4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types.go @@ -0,0 +1,82 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// TokenReview attempts to authenticate a token to a known user. +// Note: TokenReview requests may be cached by the webhook token authenticator +// plugin in the kube-apiserver. +type TokenReview struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec TokenReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request can be authenticated. + Status TokenReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// TokenReviewSpec is a description of the token authentication request. +type TokenReviewSpec struct { + // Token is the opaque bearer token. + Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"` +} + +// TokenReviewStatus is the result of the token authentication request. +type TokenReviewStatus struct { + // Authenticated indicates that the token was associated with a known user. + Authenticated bool `json:"authenticated,omitempty" protobuf:"varint,1,opt,name=authenticated"` + // User is the UserInfo associated with the provided token. + User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"` + // Error indicates that the token couldn't be checked + Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"` +} + +// UserInfo holds the information about the user needed to implement the +// user.Info interface. +type UserInfo struct { + // The name that uniquely identifies this user among all active users. + Username string `json:"username,omitempty" protobuf:"bytes,1,opt,name=username"` + // A unique value that identifies this user across time. If this user is + // deleted and another user by the same name is added, they will have + // different UIDs. + UID string `json:"uid,omitempty" protobuf:"bytes,2,opt,name=uid"` + // The names of groups this user is a part of. + Groups []string `json:"groups,omitempty" protobuf:"bytes,3,rep,name=groups"` + // Any additional information provided by the authenticator. + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,4,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..f910bea6fc --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,72 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_TokenReview = map[string]string{ + "": "TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request can be authenticated.", +} + +func (TokenReview) SwaggerDoc() map[string]string { + return map_TokenReview +} + +var map_TokenReviewSpec = map[string]string{ + "": "TokenReviewSpec is a description of the token authentication request.", + "token": "Token is the opaque bearer token.", +} + +func (TokenReviewSpec) SwaggerDoc() map[string]string { + return map_TokenReviewSpec +} + +var map_TokenReviewStatus = map[string]string{ + "": "TokenReviewStatus is the result of the token authentication request.", + "authenticated": "Authenticated indicates that the token was associated with a known user.", + "user": "User is the UserInfo associated with the provided token.", + "error": "Error indicates that the token couldn't be checked", +} + +func (TokenReviewStatus) SwaggerDoc() map[string]string { + return map_TokenReviewStatus +} + +var map_UserInfo = map[string]string{ + "": "UserInfo holds the information about the user needed to implement the user.Info interface.", + "username": "The name that uniquely identifies this user among all active users.", + "uid": "A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.", + "groups": "The names of groups this user is a part of.", + "extra": "Any additional information provided by the authenticator.", +} + +func (UserInfo) SwaggerDoc() map[string]string { + return map_UserInfo +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.conversion.go new file mode 100644 index 0000000000..9c952e0a16 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.conversion.go @@ -0,0 +1,183 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + authentication "k8s.io/client-go/1.5/pkg/apis/authentication" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_TokenReview_To_authentication_TokenReview, + Convert_authentication_TokenReview_To_v1beta1_TokenReview, + Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec, + Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec, + Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus, + Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus, + Convert_v1beta1_UserInfo_To_authentication_UserInfo, + Convert_authentication_UserInfo_To_v1beta1_UserInfo, + ) +} + +func autoConvert_v1beta1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_TokenReview_To_authentication_TokenReview(in *TokenReview, out *authentication.TokenReview, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReview_To_authentication_TokenReview(in, out, s) +} + +func autoConvert_authentication_TokenReview_To_v1beta1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_authentication_TokenReview_To_v1beta1_TokenReview(in *authentication.TokenReview, out *TokenReview, s conversion.Scope) error { + return autoConvert_authentication_TokenReview_To_v1beta1_TokenReview(in, out, s) +} + +func autoConvert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +func Convert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in *TokenReviewSpec, out *authentication.TokenReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReviewSpec_To_authentication_TokenReviewSpec(in, out, s) +} + +func autoConvert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + out.Token = in.Token + return nil +} + +func Convert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in *authentication.TokenReviewSpec, out *TokenReviewSpec, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewSpec_To_v1beta1_TokenReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_v1beta1_UserInfo_To_authentication_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +func Convert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in *TokenReviewStatus, out *authentication.TokenReviewStatus, s conversion.Scope) error { + return autoConvert_v1beta1_TokenReviewStatus_To_authentication_TokenReviewStatus(in, out, s) +} + +func autoConvert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + out.Authenticated = in.Authenticated + if err := Convert_authentication_UserInfo_To_v1beta1_UserInfo(&in.User, &out.User, s); err != nil { + return err + } + out.Error = in.Error + return nil +} + +func Convert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in *authentication.TokenReviewStatus, out *TokenReviewStatus, s conversion.Scope) error { + return autoConvert_authentication_TokenReviewStatus_To_v1beta1_TokenReviewStatus(in, out, s) +} + +func autoConvert_v1beta1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = in.Groups + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]authentication.ExtraValue, len(*in)) + for key, val := range *in { + newVal := new(authentication.ExtraValue) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&val, newVal, 0); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Extra = nil + } + return nil +} + +func Convert_v1beta1_UserInfo_To_authentication_UserInfo(in *UserInfo, out *authentication.UserInfo, s conversion.Scope) error { + return autoConvert_v1beta1_UserInfo_To_authentication_UserInfo(in, out, s) +} + +func autoConvert_authentication_UserInfo_To_v1beta1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + out.Username = in.Username + out.UID = in.UID + out.Groups = in.Groups + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + newVal := new(ExtraValue) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&val, newVal, 0); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Extra = nil + } + return nil +} + +func Convert_authentication_UserInfo_To_v1beta1_UserInfo(in *authentication.UserInfo, out *UserInfo, s conversion.Scope) error { + return autoConvert_authentication_UserInfo_To_v1beta1_UserInfo(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..9f52817663 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,111 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReview, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReviewSpec, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_TokenReviewStatus, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_UserInfo, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +func DeepCopy_v1beta1_TokenReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReview) + out := out.(*TokenReview) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_v1beta1_TokenReviewStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_TokenReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewSpec) + out := out.(*TokenReviewSpec) + out.Token = in.Token + return nil + } +} + +func DeepCopy_v1beta1_TokenReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewStatus) + out := out.(*TokenReviewStatus) + out.Authenticated = in.Authenticated + if err := DeepCopy_v1beta1_UserInfo(&in.User, &out.User, c); err != nil { + return err + } + out.Error = in.Error + return nil + } +} + +func DeepCopy_v1beta1_UserInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserInfo) + out := out.(*UserInfo) + out.Username = in.Username + out.UID = in.UID + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } else { + out.Extra = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/zz_generated.deepcopy.go new file mode 100644 index 0000000000..8b1b0a728e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authentication/zz_generated.deepcopy.go @@ -0,0 +1,111 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package authentication + +import ( + api "k8s.io/client-go/1.5/pkg/api" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReview, InType: reflect.TypeOf(&TokenReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReviewSpec, InType: reflect.TypeOf(&TokenReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_TokenReviewStatus, InType: reflect.TypeOf(&TokenReviewStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authentication_UserInfo, InType: reflect.TypeOf(&UserInfo{})}, + ) +} + +func DeepCopy_authentication_TokenReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReview) + out := out.(*TokenReview) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_authentication_TokenReviewStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_authentication_TokenReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewSpec) + out := out.(*TokenReviewSpec) + out.Token = in.Token + return nil + } +} + +func DeepCopy_authentication_TokenReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TokenReviewStatus) + out := out.(*TokenReviewStatus) + out.Authenticated = in.Authenticated + if err := DeepCopy_authentication_UserInfo(&in.User, &out.User, c); err != nil { + return err + } + out.Error = in.Error + return nil + } +} + +func DeepCopy_authentication_UserInfo(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*UserInfo) + out := out.(*UserInfo) + out.Username = in.Username + out.UID = in.UID + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } else { + out.Extra = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/doc.go new file mode 100644 index 0000000000..4e2deb516e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +// +groupName=authorization.k8s.io +package authorization diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/install/install.go new file mode 100644 index 0000000000..49667c72fa --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/authorization" + "k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: authorization.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/authorization", + RootScopedKinds: sets.NewString("SubjectAccessReview", "SelfSubjectAccessReview"), + AddInternalObjectsToScheme: authorization.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/register.go new file mode 100644 index 0000000000..b911d49bda --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/register.go @@ -0,0 +1,52 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authorization + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.generated.go new file mode 100644 index 0000000000..8625d4b6cd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.generated.go @@ -0,0 +1,5607 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package authorization + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg1_unversioned.TypeMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *SubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [19]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = x.Name != "" + yyq2[3] = x.GenerateName != "" + yyq2[4] = x.Namespace != "" + yyq2[5] = x.SelfLink != "" + yyq2[6] = x.UID != "" + yyq2[7] = x.ResourceVersion != "" + yyq2[8] = x.Generation != 0 + yyq2[9] = true + yyq2[10] = x.ObjectMeta.DeletionTimestamp != nil && x.DeletionTimestamp != nil + yyq2[11] = x.ObjectMeta.DeletionGracePeriodSeconds != nil && x.DeletionGracePeriodSeconds != nil + yyq2[12] = len(x.Labels) != 0 + yyq2[13] = len(x.Annotations) != 0 + yyq2[14] = len(x.OwnerReferences) != 0 + yyq2[15] = len(x.Finalizers) != 0 + yyq2[16] = x.ClusterName != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(19) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym20 := z.EncBinary() + _ = yym20 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[6] { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym23 := z.EncBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[7] { + yym25 := z.EncBinary() + _ = yym25 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[8] { + yym28 := z.EncBinary() + _ = yym28 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[9] { + yy31 := &x.CreationTimestamp + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(yy31) { + } else if yym32 { + z.EncBinaryMarshal(yy31) + } else if !yym32 && z.IsJSONHandle() { + z.EncJSONMarshal(yy31) + } else { + z.EncFallback(yy31) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy33 := &x.CreationTimestamp + yym34 := z.EncBinary() + _ = yym34 + if false { + } else if z.HasExtensions() && z.EncExt(yy33) { + } else if yym34 { + z.EncBinaryMarshal(yy33) + } else if !yym34 && z.IsJSONHandle() { + z.EncJSONMarshal(yy33) + } else { + z.EncFallback(yy33) + } + } + } + var yyn35 bool + if x.ObjectMeta.DeletionTimestamp == nil { + yyn35 = true + goto LABEL35 + } + LABEL35: + if yyr2 || yy2arr2 { + if yyn35 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[10] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym36 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym36 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn35 { + r.EncodeNil() + } else { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym37 := z.EncBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym37 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym37 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + } + var yyn38 bool + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + yyn38 = true + goto LABEL38 + } + LABEL38: + if yyr2 || yy2arr2 { + if yyn38 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[11] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy39 := *x.DeletionGracePeriodSeconds + yym40 := z.EncBinary() + _ = yym40 + if false { + } else { + r.EncodeInt(int64(yy39)) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq2[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn38 { + r.EncodeNil() + } else { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy41 := *x.DeletionGracePeriodSeconds + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeInt(int64(yy41)) + } + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[12] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[13] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[14] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym51 := z.EncBinary() + _ = yym51 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[15] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym54 := z.EncBinary() + _ = yym54 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[16] { + yym56 := z.EncBinary() + _ = yym56 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym57 := z.EncBinary() + _ = yym57 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy59 := &x.Spec + yy59.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy60 := &x.Spec + yy60.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy62 := &x.Status + yy62.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy63 := &x.Status + yy63.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym64 := z.DecBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct65 := r.ContainerType() + if yyct65 == codecSelferValueTypeMap1234 { + yyl65 := r.ReadMapStart() + if yyl65 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl65, d) + } + } else if yyct65 == codecSelferValueTypeArray1234 { + yyl65 := r.ReadArrayStart() + if yyl65 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl65, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys66Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys66Slc + var yyhl66 bool = l >= 0 + for yyj66 := 0; ; yyj66++ { + if yyhl66 { + if yyj66 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys66Slc = r.DecodeBytes(yys66Slc, true, true) + yys66 := string(yys66Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys66 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv76 := &x.CreationTimestamp + yym77 := z.DecBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.DecExt(yyv76) { + } else if yym77 { + z.DecBinaryUnmarshal(yyv76) + } else if !yym77 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv76) + } else { + z.DecFallback(yyv76, false) + } + } + case "deletionTimestamp": + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym79 := z.DecBinary() + _ = yym79 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym79 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym79 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv82 := &x.Labels + yym83 := z.DecBinary() + _ = yym83 + if false { + } else { + z.F.DecMapStringStringX(yyv82, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv84 := &x.Annotations + yym85 := z.DecBinary() + _ = yym85 + if false { + } else { + z.F.DecMapStringStringX(yyv84, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv86 := &x.OwnerReferences + yym87 := z.DecBinary() + _ = yym87 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv86), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv88 := &x.Finalizers + yym89 := z.DecBinary() + _ = yym89 + if false { + } else { + z.F.DecSliceStringX(yyv88, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + case "Spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv91 := &x.Spec + yyv91.CodecDecodeSelf(d) + } + case "Status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv92 := &x.Status + yyv92.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys66) + } // end switch yys66 + } // end for yyj66 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj93 int + var yyb93 bool + var yyhl93 bool = l >= 0 + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv103 := &x.CreationTimestamp + yym104 := z.DecBinary() + _ = yym104 + if false { + } else if z.HasExtensions() && z.DecExt(yyv103) { + } else if yym104 { + z.DecBinaryUnmarshal(yyv103) + } else if !yym104 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv103) + } else { + z.DecFallback(yyv103, false) + } + } + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym106 := z.DecBinary() + _ = yym106 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym106 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym106 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym108 := z.DecBinary() + _ = yym108 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv109 := &x.Labels + yym110 := z.DecBinary() + _ = yym110 + if false { + } else { + z.F.DecMapStringStringX(yyv109, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv111 := &x.Annotations + yym112 := z.DecBinary() + _ = yym112 + if false { + } else { + z.F.DecMapStringStringX(yyv111, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv113 := &x.OwnerReferences + yym114 := z.DecBinary() + _ = yym114 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv113), d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv115 := &x.Finalizers + yym116 := z.DecBinary() + _ = yym116 + if false { + } else { + z.F.DecSliceStringX(yyv115, false, d) + } + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv118 := &x.Spec + yyv118.CodecDecodeSelf(d) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv119 := &x.Status + yyv119.CodecDecodeSelf(d) + } + for { + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj93-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SelfSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym120 := z.EncBinary() + _ = yym120 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep121 := !z.EncBinary() + yy2arr121 := z.EncBasicHandle().StructToArray + var yyq121 [19]bool + _, _, _ = yysep121, yyq121, yy2arr121 + const yyr121 bool = false + yyq121[0] = x.Kind != "" + yyq121[1] = x.APIVersion != "" + yyq121[2] = x.Name != "" + yyq121[3] = x.GenerateName != "" + yyq121[4] = x.Namespace != "" + yyq121[5] = x.SelfLink != "" + yyq121[6] = x.UID != "" + yyq121[7] = x.ResourceVersion != "" + yyq121[8] = x.Generation != 0 + yyq121[9] = true + yyq121[10] = x.ObjectMeta.DeletionTimestamp != nil && x.DeletionTimestamp != nil + yyq121[11] = x.ObjectMeta.DeletionGracePeriodSeconds != nil && x.DeletionGracePeriodSeconds != nil + yyq121[12] = len(x.Labels) != 0 + yyq121[13] = len(x.Annotations) != 0 + yyq121[14] = len(x.OwnerReferences) != 0 + yyq121[15] = len(x.Finalizers) != 0 + yyq121[16] = x.ClusterName != "" + var yynn121 int + if yyr121 || yy2arr121 { + r.EncodeArrayStart(19) + } else { + yynn121 = 2 + for _, b := range yyq121 { + if b { + yynn121++ + } + } + r.EncodeMapStart(yynn121) + yynn121 = 0 + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[0] { + yym123 := z.EncBinary() + _ = yym123 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym124 := z.EncBinary() + _ = yym124 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[1] { + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym127 := z.EncBinary() + _ = yym127 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[2] { + yym129 := z.EncBinary() + _ = yym129 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym130 := z.EncBinary() + _ = yym130 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[3] { + yym132 := z.EncBinary() + _ = yym132 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym133 := z.EncBinary() + _ = yym133 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[4] { + yym135 := z.EncBinary() + _ = yym135 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym136 := z.EncBinary() + _ = yym136 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[5] { + yym138 := z.EncBinary() + _ = yym138 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym139 := z.EncBinary() + _ = yym139 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[6] { + yym141 := z.EncBinary() + _ = yym141 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym142 := z.EncBinary() + _ = yym142 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[7] { + yym144 := z.EncBinary() + _ = yym144 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym145 := z.EncBinary() + _ = yym145 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[8] { + yym147 := z.EncBinary() + _ = yym147 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq121[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym148 := z.EncBinary() + _ = yym148 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[9] { + yy150 := &x.CreationTimestamp + yym151 := z.EncBinary() + _ = yym151 + if false { + } else if z.HasExtensions() && z.EncExt(yy150) { + } else if yym151 { + z.EncBinaryMarshal(yy150) + } else if !yym151 && z.IsJSONHandle() { + z.EncJSONMarshal(yy150) + } else { + z.EncFallback(yy150) + } + } else { + r.EncodeNil() + } + } else { + if yyq121[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy152 := &x.CreationTimestamp + yym153 := z.EncBinary() + _ = yym153 + if false { + } else if z.HasExtensions() && z.EncExt(yy152) { + } else if yym153 { + z.EncBinaryMarshal(yy152) + } else if !yym153 && z.IsJSONHandle() { + z.EncJSONMarshal(yy152) + } else { + z.EncFallback(yy152) + } + } + } + var yyn154 bool + if x.ObjectMeta.DeletionTimestamp == nil { + yyn154 = true + goto LABEL154 + } + LABEL154: + if yyr121 || yy2arr121 { + if yyn154 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[10] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym155 := z.EncBinary() + _ = yym155 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym155 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym155 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq121[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn154 { + r.EncodeNil() + } else { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym156 := z.EncBinary() + _ = yym156 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym156 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym156 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + } + var yyn157 bool + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + yyn157 = true + goto LABEL157 + } + LABEL157: + if yyr121 || yy2arr121 { + if yyn157 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[11] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy158 := *x.DeletionGracePeriodSeconds + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + r.EncodeInt(int64(yy158)) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq121[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn157 { + r.EncodeNil() + } else { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy160 := *x.DeletionGracePeriodSeconds + yym161 := z.EncBinary() + _ = yym161 + if false { + } else { + r.EncodeInt(int64(yy160)) + } + } + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[12] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym163 := z.EncBinary() + _ = yym163 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq121[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym164 := z.EncBinary() + _ = yym164 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[13] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym166 := z.EncBinary() + _ = yym166 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq121[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym167 := z.EncBinary() + _ = yym167 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[14] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym169 := z.EncBinary() + _ = yym169 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq121[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym170 := z.EncBinary() + _ = yym170 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[15] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym172 := z.EncBinary() + _ = yym172 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq121[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym173 := z.EncBinary() + _ = yym173 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq121[16] { + yym175 := z.EncBinary() + _ = yym175 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq121[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym176 := z.EncBinary() + _ = yym176 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy178 := &x.Spec + yy178.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy179 := &x.Spec + yy179.CodecEncodeSelf(e) + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy181 := &x.Status + yy181.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy182 := &x.Status + yy182.CodecEncodeSelf(e) + } + if yyr121 || yy2arr121 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym183 := z.DecBinary() + _ = yym183 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct184 := r.ContainerType() + if yyct184 == codecSelferValueTypeMap1234 { + yyl184 := r.ReadMapStart() + if yyl184 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl184, d) + } + } else if yyct184 == codecSelferValueTypeArray1234 { + yyl184 := r.ReadArrayStart() + if yyl184 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl184, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys185Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys185Slc + var yyhl185 bool = l >= 0 + for yyj185 := 0; ; yyj185++ { + if yyhl185 { + if yyj185 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys185Slc = r.DecodeBytes(yys185Slc, true, true) + yys185 := string(yys185Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys185 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv195 := &x.CreationTimestamp + yym196 := z.DecBinary() + _ = yym196 + if false { + } else if z.HasExtensions() && z.DecExt(yyv195) { + } else if yym196 { + z.DecBinaryUnmarshal(yyv195) + } else if !yym196 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv195) + } else { + z.DecFallback(yyv195, false) + } + } + case "deletionTimestamp": + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym198 := z.DecBinary() + _ = yym198 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym198 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym198 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym200 := z.DecBinary() + _ = yym200 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv201 := &x.Labels + yym202 := z.DecBinary() + _ = yym202 + if false { + } else { + z.F.DecMapStringStringX(yyv201, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv203 := &x.Annotations + yym204 := z.DecBinary() + _ = yym204 + if false { + } else { + z.F.DecMapStringStringX(yyv203, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv205 := &x.OwnerReferences + yym206 := z.DecBinary() + _ = yym206 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv205), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv207 := &x.Finalizers + yym208 := z.DecBinary() + _ = yym208 + if false { + } else { + z.F.DecSliceStringX(yyv207, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + case "Spec": + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv210 := &x.Spec + yyv210.CodecDecodeSelf(d) + } + case "Status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv211 := &x.Status + yyv211.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys185) + } // end switch yys185 + } // end for yyj185 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj212 int + var yyb212 bool + var yyhl212 bool = l >= 0 + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv222 := &x.CreationTimestamp + yym223 := z.DecBinary() + _ = yym223 + if false { + } else if z.HasExtensions() && z.DecExt(yyv222) { + } else if yym223 { + z.DecBinaryUnmarshal(yyv222) + } else if !yym223 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv222) + } else { + z.DecFallback(yyv222, false) + } + } + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym225 := z.DecBinary() + _ = yym225 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym225 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym225 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym227 := z.DecBinary() + _ = yym227 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv228 := &x.Labels + yym229 := z.DecBinary() + _ = yym229 + if false { + } else { + z.F.DecMapStringStringX(yyv228, false, d) + } + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv230 := &x.Annotations + yym231 := z.DecBinary() + _ = yym231 + if false { + } else { + z.F.DecMapStringStringX(yyv230, false, d) + } + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv232 := &x.OwnerReferences + yym233 := z.DecBinary() + _ = yym233 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv232), d) + } + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv234 := &x.Finalizers + yym235 := z.DecBinary() + _ = yym235 + if false { + } else { + z.F.DecSliceStringX(yyv234, false, d) + } + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv237 := &x.Spec + yyv237.CodecDecodeSelf(d) + } + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv238 := &x.Status + yyv238.CodecDecodeSelf(d) + } + for { + yyj212++ + if yyhl212 { + yyb212 = yyj212 > l + } else { + yyb212 = r.CheckBreak() + } + if yyb212 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj212-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym239 := z.EncBinary() + _ = yym239 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep240 := !z.EncBinary() + yy2arr240 := z.EncBasicHandle().StructToArray + var yyq240 [19]bool + _, _, _ = yysep240, yyq240, yy2arr240 + const yyr240 bool = false + yyq240[0] = x.Kind != "" + yyq240[1] = x.APIVersion != "" + yyq240[2] = x.Name != "" + yyq240[3] = x.GenerateName != "" + yyq240[4] = x.Namespace != "" + yyq240[5] = x.SelfLink != "" + yyq240[6] = x.UID != "" + yyq240[7] = x.ResourceVersion != "" + yyq240[8] = x.Generation != 0 + yyq240[9] = true + yyq240[10] = x.ObjectMeta.DeletionTimestamp != nil && x.DeletionTimestamp != nil + yyq240[11] = x.ObjectMeta.DeletionGracePeriodSeconds != nil && x.DeletionGracePeriodSeconds != nil + yyq240[12] = len(x.Labels) != 0 + yyq240[13] = len(x.Annotations) != 0 + yyq240[14] = len(x.OwnerReferences) != 0 + yyq240[15] = len(x.Finalizers) != 0 + yyq240[16] = x.ClusterName != "" + var yynn240 int + if yyr240 || yy2arr240 { + r.EncodeArrayStart(19) + } else { + yynn240 = 2 + for _, b := range yyq240 { + if b { + yynn240++ + } + } + r.EncodeMapStart(yynn240) + yynn240 = 0 + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[0] { + yym242 := z.EncBinary() + _ = yym242 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym243 := z.EncBinary() + _ = yym243 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[1] { + yym245 := z.EncBinary() + _ = yym245 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym246 := z.EncBinary() + _ = yym246 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[2] { + yym248 := z.EncBinary() + _ = yym248 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym249 := z.EncBinary() + _ = yym249 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[3] { + yym251 := z.EncBinary() + _ = yym251 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generateName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym252 := z.EncBinary() + _ = yym252 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.GenerateName)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[4] { + yym254 := z.EncBinary() + _ = yym254 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym255 := z.EncBinary() + _ = yym255 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[5] { + yym257 := z.EncBinary() + _ = yym257 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selfLink")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym258 := z.EncBinary() + _ = yym258 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SelfLink)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[6] { + yym260 := z.EncBinary() + _ = yym260 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym261 := z.EncBinary() + _ = yym261 + if false { + } else if z.HasExtensions() && z.EncExt(x.UID) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[7] { + yym263 := z.EncBinary() + _ = yym263 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym264 := z.EncBinary() + _ = yym264 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[8] { + yym266 := z.EncBinary() + _ = yym266 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq240[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("generation")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym267 := z.EncBinary() + _ = yym267 + if false { + } else { + r.EncodeInt(int64(x.Generation)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[9] { + yy269 := &x.CreationTimestamp + yym270 := z.EncBinary() + _ = yym270 + if false { + } else if z.HasExtensions() && z.EncExt(yy269) { + } else if yym270 { + z.EncBinaryMarshal(yy269) + } else if !yym270 && z.IsJSONHandle() { + z.EncJSONMarshal(yy269) + } else { + z.EncFallback(yy269) + } + } else { + r.EncodeNil() + } + } else { + if yyq240[9] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("creationTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy271 := &x.CreationTimestamp + yym272 := z.EncBinary() + _ = yym272 + if false { + } else if z.HasExtensions() && z.EncExt(yy271) { + } else if yym272 { + z.EncBinaryMarshal(yy271) + } else if !yym272 && z.IsJSONHandle() { + z.EncJSONMarshal(yy271) + } else { + z.EncFallback(yy271) + } + } + } + var yyn273 bool + if x.ObjectMeta.DeletionTimestamp == nil { + yyn273 = true + goto LABEL273 + } + LABEL273: + if yyr240 || yy2arr240 { + if yyn273 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[10] { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym274 := z.EncBinary() + _ = yym274 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym274 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym274 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq240[10] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionTimestamp")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn273 { + r.EncodeNil() + } else { + if x.DeletionTimestamp == nil { + r.EncodeNil() + } else { + yym275 := z.EncBinary() + _ = yym275 + if false { + } else if z.HasExtensions() && z.EncExt(x.DeletionTimestamp) { + } else if yym275 { + z.EncBinaryMarshal(x.DeletionTimestamp) + } else if !yym275 && z.IsJSONHandle() { + z.EncJSONMarshal(x.DeletionTimestamp) + } else { + z.EncFallback(x.DeletionTimestamp) + } + } + } + } + } + var yyn276 bool + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + yyn276 = true + goto LABEL276 + } + LABEL276: + if yyr240 || yy2arr240 { + if yyn276 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[11] { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy277 := *x.DeletionGracePeriodSeconds + yym278 := z.EncBinary() + _ = yym278 + if false { + } else { + r.EncodeInt(int64(yy277)) + } + } + } else { + r.EncodeNil() + } + } + } else { + if yyq240[11] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deletionGracePeriodSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn276 { + r.EncodeNil() + } else { + if x.DeletionGracePeriodSeconds == nil { + r.EncodeNil() + } else { + yy279 := *x.DeletionGracePeriodSeconds + yym280 := z.EncBinary() + _ = yym280 + if false { + } else { + r.EncodeInt(int64(yy279)) + } + } + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[12] { + if x.Labels == nil { + r.EncodeNil() + } else { + yym282 := z.EncBinary() + _ = yym282 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq240[12] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Labels == nil { + r.EncodeNil() + } else { + yym283 := z.EncBinary() + _ = yym283 + if false { + } else { + z.F.EncMapStringStringV(x.Labels, false, e) + } + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[13] { + if x.Annotations == nil { + r.EncodeNil() + } else { + yym285 := z.EncBinary() + _ = yym285 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq240[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("annotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Annotations == nil { + r.EncodeNil() + } else { + yym286 := z.EncBinary() + _ = yym286 + if false { + } else { + z.F.EncMapStringStringV(x.Annotations, false, e) + } + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[14] { + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym288 := z.EncBinary() + _ = yym288 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq240[14] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ownerReferences")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.OwnerReferences == nil { + r.EncodeNil() + } else { + yym289 := z.EncBinary() + _ = yym289 + if false { + } else { + h.encSliceapi_OwnerReference(([]pkg2_api.OwnerReference)(x.OwnerReferences), e) + } + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[15] { + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym291 := z.EncBinary() + _ = yym291 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq240[15] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("finalizers")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Finalizers == nil { + r.EncodeNil() + } else { + yym292 := z.EncBinary() + _ = yym292 + if false { + } else { + z.F.EncSliceStringV(x.Finalizers, false, e) + } + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq240[16] { + yym294 := z.EncBinary() + _ = yym294 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq240[16] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("clusterName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym295 := z.EncBinary() + _ = yym295 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ClusterName)) + } + } + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy297 := &x.Spec + yy297.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy298 := &x.Spec + yy298.CodecEncodeSelf(e) + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy300 := &x.Status + yy300.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy301 := &x.Status + yy301.CodecEncodeSelf(e) + } + if yyr240 || yy2arr240 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym302 := z.DecBinary() + _ = yym302 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct303 := r.ContainerType() + if yyct303 == codecSelferValueTypeMap1234 { + yyl303 := r.ReadMapStart() + if yyl303 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl303, d) + } + } else if yyct303 == codecSelferValueTypeArray1234 { + yyl303 := r.ReadArrayStart() + if yyl303 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl303, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys304Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys304Slc + var yyhl304 bool = l >= 0 + for yyj304 := 0; ; yyj304++ { + if yyhl304 { + if yyj304 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys304Slc = r.DecodeBytes(yys304Slc, true, true) + yys304 := string(yys304Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys304 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "generateName": + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "selfLink": + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "generation": + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + case "creationTimestamp": + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv314 := &x.CreationTimestamp + yym315 := z.DecBinary() + _ = yym315 + if false { + } else if z.HasExtensions() && z.DecExt(yyv314) { + } else if yym315 { + z.DecBinaryUnmarshal(yyv314) + } else if !yym315 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv314) + } else { + z.DecFallback(yyv314, false) + } + } + case "deletionTimestamp": + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym317 := z.DecBinary() + _ = yym317 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym317 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym317 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + case "deletionGracePeriodSeconds": + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym319 := z.DecBinary() + _ = yym319 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + case "labels": + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv320 := &x.Labels + yym321 := z.DecBinary() + _ = yym321 + if false { + } else { + z.F.DecMapStringStringX(yyv320, false, d) + } + } + case "annotations": + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv322 := &x.Annotations + yym323 := z.DecBinary() + _ = yym323 + if false { + } else { + z.F.DecMapStringStringX(yyv322, false, d) + } + } + case "ownerReferences": + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv324 := &x.OwnerReferences + yym325 := z.DecBinary() + _ = yym325 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv324), d) + } + } + case "finalizers": + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv326 := &x.Finalizers + yym327 := z.DecBinary() + _ = yym327 + if false { + } else { + z.F.DecSliceStringX(yyv326, false, d) + } + } + case "clusterName": + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + case "Spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv329 := &x.Spec + yyv329.CodecDecodeSelf(d) + } + case "Status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv330 := &x.Status + yyv330.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys304) + } // end switch yys304 + } // end for yyj304 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj331 int + var yyb331 bool + var yyhl331 bool = l >= 0 + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.GenerateName = "" + } else { + x.GenerateName = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SelfLink = "" + } else { + x.SelfLink = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = pkg3_types.UID(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Generation = 0 + } else { + x.Generation = int64(r.DecodeInt(64)) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CreationTimestamp = pkg1_unversioned.Time{} + } else { + yyv341 := &x.CreationTimestamp + yym342 := z.DecBinary() + _ = yym342 + if false { + } else if z.HasExtensions() && z.DecExt(yyv341) { + } else if yym342 { + z.DecBinaryUnmarshal(yyv341) + } else if !yym342 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv341) + } else { + z.DecFallback(yyv341, false) + } + } + if x.ObjectMeta.DeletionTimestamp == nil { + x.ObjectMeta.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionTimestamp != nil { + x.DeletionTimestamp = nil + } + } else { + if x.DeletionTimestamp == nil { + x.DeletionTimestamp = new(pkg1_unversioned.Time) + } + yym344 := z.DecBinary() + _ = yym344 + if false { + } else if z.HasExtensions() && z.DecExt(x.DeletionTimestamp) { + } else if yym344 { + z.DecBinaryUnmarshal(x.DeletionTimestamp) + } else if !yym344 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.DeletionTimestamp) + } else { + z.DecFallback(x.DeletionTimestamp, false) + } + } + if x.ObjectMeta.DeletionGracePeriodSeconds == nil { + x.ObjectMeta.DeletionGracePeriodSeconds = new(int64) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeletionGracePeriodSeconds != nil { + x.DeletionGracePeriodSeconds = nil + } + } else { + if x.DeletionGracePeriodSeconds == nil { + x.DeletionGracePeriodSeconds = new(int64) + } + yym346 := z.DecBinary() + _ = yym346 + if false { + } else { + *((*int64)(x.DeletionGracePeriodSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Labels = nil + } else { + yyv347 := &x.Labels + yym348 := z.DecBinary() + _ = yym348 + if false { + } else { + z.F.DecMapStringStringX(yyv347, false, d) + } + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Annotations = nil + } else { + yyv349 := &x.Annotations + yym350 := z.DecBinary() + _ = yym350 + if false { + } else { + z.F.DecMapStringStringX(yyv349, false, d) + } + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.OwnerReferences = nil + } else { + yyv351 := &x.OwnerReferences + yym352 := z.DecBinary() + _ = yym352 + if false { + } else { + h.decSliceapi_OwnerReference((*[]pkg2_api.OwnerReference)(yyv351), d) + } + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Finalizers = nil + } else { + yyv353 := &x.Finalizers + yym354 := z.DecBinary() + _ = yym354 + if false { + } else { + z.F.DecSliceStringX(yyv353, false, d) + } + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ClusterName = "" + } else { + x.ClusterName = string(r.DecodeString()) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv356 := &x.Spec + yyv356.CodecDecodeSelf(d) + } + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv357 := &x.Status + yyv357.CodecDecodeSelf(d) + } + for { + yyj331++ + if yyhl331 { + yyb331 = yyj331 > l + } else { + yyb331 = r.CheckBreak() + } + if yyb331 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj331-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym358 := z.EncBinary() + _ = yym358 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep359 := !z.EncBinary() + yy2arr359 := z.EncBasicHandle().StructToArray + var yyq359 [7]bool + _, _, _ = yysep359, yyq359, yy2arr359 + const yyr359 bool = false + var yynn359 int + if yyr359 || yy2arr359 { + r.EncodeArrayStart(7) + } else { + yynn359 = 7 + for _, b := range yyq359 { + if b { + yynn359++ + } + } + r.EncodeMapStart(yynn359) + yynn359 = 0 + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym361 := z.EncBinary() + _ = yym361 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym362 := z.EncBinary() + _ = yym362 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym364 := z.EncBinary() + _ = yym364 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym365 := z.EncBinary() + _ = yym365 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym367 := z.EncBinary() + _ = yym367 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym368 := z.EncBinary() + _ = yym368 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym370 := z.EncBinary() + _ = yym370 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Version")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym371 := z.EncBinary() + _ = yym371 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym373 := z.EncBinary() + _ = yym373 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym374 := z.EncBinary() + _ = yym374 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym376 := z.EncBinary() + _ = yym376 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Subresource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym377 := z.EncBinary() + _ = yym377 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym379 := z.EncBinary() + _ = yym379 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym380 := z.EncBinary() + _ = yym380 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr359 || yy2arr359 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym381 := z.DecBinary() + _ = yym381 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct382 := r.ContainerType() + if yyct382 == codecSelferValueTypeMap1234 { + yyl382 := r.ReadMapStart() + if yyl382 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl382, d) + } + } else if yyct382 == codecSelferValueTypeArray1234 { + yyl382 := r.ReadArrayStart() + if yyl382 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl382, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys383Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys383Slc + var yyhl383 bool = l >= 0 + for yyj383 := 0; ; yyj383++ { + if yyhl383 { + if yyj383 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys383Slc = r.DecodeBytes(yys383Slc, true, true) + yys383 := string(yys383Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys383 { + case "Namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "Verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + case "Group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + case "Version": + if r.TryDecodeAsNil() { + x.Version = "" + } else { + x.Version = string(r.DecodeString()) + } + case "Resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + case "Subresource": + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + case "Name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys383) + } // end switch yys383 + } // end for yyj383 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj391 int + var yyb391 bool + var yyhl391 bool = l >= 0 + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Version = "" + } else { + x.Version = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj391-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NonResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym399 := z.EncBinary() + _ = yym399 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep400 := !z.EncBinary() + yy2arr400 := z.EncBasicHandle().StructToArray + var yyq400 [2]bool + _, _, _ = yysep400, yyq400, yy2arr400 + const yyr400 bool = false + var yynn400 int + if yyr400 || yy2arr400 { + r.EncodeArrayStart(2) + } else { + yynn400 = 2 + for _, b := range yyq400 { + if b { + yynn400++ + } + } + r.EncodeMapStart(yynn400) + yynn400 = 0 + } + if yyr400 || yy2arr400 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym402 := z.EncBinary() + _ = yym402 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym403 := z.EncBinary() + _ = yym403 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + if yyr400 || yy2arr400 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym405 := z.EncBinary() + _ = yym405 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym406 := z.EncBinary() + _ = yym406 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + if yyr400 || yy2arr400 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NonResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym407 := z.DecBinary() + _ = yym407 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct408 := r.ContainerType() + if yyct408 == codecSelferValueTypeMap1234 { + yyl408 := r.ReadMapStart() + if yyl408 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl408, d) + } + } else if yyct408 == codecSelferValueTypeArray1234 { + yyl408 := r.ReadArrayStart() + if yyl408 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl408, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NonResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys409Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys409Slc + var yyhl409 bool = l >= 0 + for yyj409 := 0; ; yyj409++ { + if yyhl409 { + if yyj409 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys409Slc = r.DecodeBytes(yys409Slc, true, true) + yys409 := string(yys409Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys409 { + case "Path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "Verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys409) + } // end switch yys409 + } // end for yyj409 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NonResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj412 int + var yyb412 bool + var yyhl412 bool = l >= 0 + yyj412++ + if yyhl412 { + yyb412 = yyj412 > l + } else { + yyb412 = r.CheckBreak() + } + if yyb412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj412++ + if yyhl412 { + yyb412 = yyj412 > l + } else { + yyb412 = r.CheckBreak() + } + if yyb412 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + for { + yyj412++ + if yyhl412 { + yyb412 = yyj412 > l + } else { + yyb412 = r.CheckBreak() + } + if yyb412 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj412-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym415 := z.EncBinary() + _ = yym415 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep416 := !z.EncBinary() + yy2arr416 := z.EncBasicHandle().StructToArray + var yyq416 [5]bool + _, _, _ = yysep416, yyq416, yy2arr416 + const yyr416 bool = false + var yynn416 int + if yyr416 || yy2arr416 { + r.EncodeArrayStart(5) + } else { + yynn416 = 5 + for _, b := range yyq416 { + if b { + yynn416++ + } + } + r.EncodeMapStart(yynn416) + yynn416 = 0 + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("NonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym420 := z.EncBinary() + _ = yym420 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("User")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym421 := z.EncBinary() + _ = yym421 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym423 := z.EncBinary() + _ = yym423 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym424 := z.EncBinary() + _ = yym424 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym426 := z.EncBinary() + _ = yym426 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym427 := z.EncBinary() + _ = yym427 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + if yyr416 || yy2arr416 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym428 := z.DecBinary() + _ = yym428 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct429 := r.ContainerType() + if yyct429 == codecSelferValueTypeMap1234 { + yyl429 := r.ReadMapStart() + if yyl429 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl429, d) + } + } else if yyct429 == codecSelferValueTypeArray1234 { + yyl429 := r.ReadArrayStart() + if yyl429 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl429, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys430Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys430Slc + var yyhl430 bool = l >= 0 + for yyj430 := 0; ; yyj430++ { + if yyhl430 { + if yyj430 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys430Slc = r.DecodeBytes(yys430Slc, true, true) + yys430 := string(yys430Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys430 { + case "ResourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "NonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + case "User": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "Groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv434 := &x.Groups + yym435 := z.DecBinary() + _ = yym435 + if false { + } else { + z.F.DecSliceStringX(yyv434, false, d) + } + } + case "Extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv436 := &x.Extra + yym437 := z.DecBinary() + _ = yym437 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv436), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys430) + } // end switch yys430 + } // end for yyj430 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj438 int + var yyb438 bool + var yyhl438 bool = l >= 0 + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv442 := &x.Groups + yym443 := z.DecBinary() + _ = yym443 + if false { + } else { + z.F.DecSliceStringX(yyv442, false, d) + } + } + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv444 := &x.Extra + yym445 := z.DecBinary() + _ = yym445 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv444), d) + } + } + for { + yyj438++ + if yyhl438 { + yyb438 = yyj438 > l + } else { + yyb438 = r.CheckBreak() + } + if yyb438 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj438-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym446 := z.EncBinary() + _ = yym446 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym447 := z.DecBinary() + _ = yym447 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym448 := z.EncBinary() + _ = yym448 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep449 := !z.EncBinary() + yy2arr449 := z.EncBasicHandle().StructToArray + var yyq449 [2]bool + _, _, _ = yysep449, yyq449, yy2arr449 + const yyr449 bool = false + var yynn449 int + if yyr449 || yy2arr449 { + r.EncodeArrayStart(2) + } else { + yynn449 = 2 + for _, b := range yyq449 { + if b { + yynn449++ + } + } + r.EncodeMapStart(yynn449) + yynn449 = 0 + } + if yyr449 || yy2arr449 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + if yyr449 || yy2arr449 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("NonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + if yyr449 || yy2arr449 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym452 := z.DecBinary() + _ = yym452 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct453 := r.ContainerType() + if yyct453 == codecSelferValueTypeMap1234 { + yyl453 := r.ReadMapStart() + if yyl453 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl453, d) + } + } else if yyct453 == codecSelferValueTypeArray1234 { + yyl453 := r.ReadArrayStart() + if yyl453 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl453, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys454Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys454Slc + var yyhl454 bool = l >= 0 + for yyj454 := 0; ; yyj454++ { + if yyhl454 { + if yyj454 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys454Slc = r.DecodeBytes(yys454Slc, true, true) + yys454 := string(yys454Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys454 { + case "ResourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "NonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys454) + } // end switch yys454 + } // end for yyj454 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj457 int + var yyb457 bool + var yyhl457 bool = l >= 0 + yyj457++ + if yyhl457 { + yyb457 = yyj457 > l + } else { + yyb457 = r.CheckBreak() + } + if yyb457 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj457++ + if yyhl457 { + yyb457 = yyj457 > l + } else { + yyb457 = r.CheckBreak() + } + if yyb457 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + for { + yyj457++ + if yyhl457 { + yyb457 = yyj457 > l + } else { + yyb457 = r.CheckBreak() + } + if yyb457 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj457-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym460 := z.EncBinary() + _ = yym460 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep461 := !z.EncBinary() + yy2arr461 := z.EncBasicHandle().StructToArray + var yyq461 [3]bool + _, _, _ = yysep461, yyq461, yy2arr461 + const yyr461 bool = false + var yynn461 int + if yyr461 || yy2arr461 { + r.EncodeArrayStart(3) + } else { + yynn461 = 3 + for _, b := range yyq461 { + if b { + yynn461++ + } + } + r.EncodeMapStart(yynn461) + yynn461 = 0 + } + if yyr461 || yy2arr461 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym463 := z.EncBinary() + _ = yym463 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Allowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym464 := z.EncBinary() + _ = yym464 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } + if yyr461 || yy2arr461 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym466 := z.EncBinary() + _ = yym466 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("Reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym467 := z.EncBinary() + _ = yym467 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + if yyr461 || yy2arr461 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym469 := z.EncBinary() + _ = yym469 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("EvaluationError")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym470 := z.EncBinary() + _ = yym470 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } + if yyr461 || yy2arr461 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym471 := z.DecBinary() + _ = yym471 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct472 := r.ContainerType() + if yyct472 == codecSelferValueTypeMap1234 { + yyl472 := r.ReadMapStart() + if yyl472 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl472, d) + } + } else if yyct472 == codecSelferValueTypeArray1234 { + yyl472 := r.ReadArrayStart() + if yyl472 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl472, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys473Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys473Slc + var yyhl473 bool = l >= 0 + for yyj473 := 0; ; yyj473++ { + if yyhl473 { + if yyj473 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys473Slc = r.DecodeBytes(yys473Slc, true, true) + yys473 := string(yys473Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys473 { + case "Allowed": + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + x.Allowed = bool(r.DecodeBool()) + } + case "Reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "EvaluationError": + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + x.EvaluationError = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys473) + } // end switch yys473 + } // end for yyj473 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj477 int + var yyb477 bool + var yyhl477 bool = l >= 0 + yyj477++ + if yyhl477 { + yyb477 = yyj477 > l + } else { + yyb477 = r.CheckBreak() + } + if yyb477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + x.Allowed = bool(r.DecodeBool()) + } + yyj477++ + if yyhl477 { + yyb477 = yyj477 > l + } else { + yyb477 = r.CheckBreak() + } + if yyb477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj477++ + if yyhl477 { + yyb477 = yyj477 > l + } else { + yyb477 = r.CheckBreak() + } + if yyb477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + x.EvaluationError = string(r.DecodeString()) + } + for { + yyj477++ + if yyhl477 { + yyb477 = yyj477 > l + } else { + yyb477 = r.CheckBreak() + } + if yyb477 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj477-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceapi_OwnerReference(v []pkg2_api.OwnerReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv481 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy482 := &yyv481 + yy482.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceapi_OwnerReference(v *[]pkg2_api.OwnerReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv483 := *v + yyh483, yyl483 := z.DecSliceHelperStart() + var yyc483 bool + if yyl483 == 0 { + if yyv483 == nil { + yyv483 = []pkg2_api.OwnerReference{} + yyc483 = true + } else if len(yyv483) != 0 { + yyv483 = yyv483[:0] + yyc483 = true + } + } else if yyl483 > 0 { + var yyrr483, yyrl483 int + var yyrt483 bool + if yyl483 > cap(yyv483) { + + yyrg483 := len(yyv483) > 0 + yyv2483 := yyv483 + yyrl483, yyrt483 = z.DecInferLen(yyl483, z.DecBasicHandle().MaxInitLen, 72) + if yyrt483 { + if yyrl483 <= cap(yyv483) { + yyv483 = yyv483[:yyrl483] + } else { + yyv483 = make([]pkg2_api.OwnerReference, yyrl483) + } + } else { + yyv483 = make([]pkg2_api.OwnerReference, yyrl483) + } + yyc483 = true + yyrr483 = len(yyv483) + if yyrg483 { + copy(yyv483, yyv2483) + } + } else if yyl483 != len(yyv483) { + yyv483 = yyv483[:yyl483] + yyc483 = true + } + yyj483 := 0 + for ; yyj483 < yyrr483; yyj483++ { + yyh483.ElemContainerState(yyj483) + if r.TryDecodeAsNil() { + yyv483[yyj483] = pkg2_api.OwnerReference{} + } else { + yyv484 := &yyv483[yyj483] + yyv484.CodecDecodeSelf(d) + } + + } + if yyrt483 { + for ; yyj483 < yyl483; yyj483++ { + yyv483 = append(yyv483, pkg2_api.OwnerReference{}) + yyh483.ElemContainerState(yyj483) + if r.TryDecodeAsNil() { + yyv483[yyj483] = pkg2_api.OwnerReference{} + } else { + yyv485 := &yyv483[yyj483] + yyv485.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj483 := 0 + for ; !r.CheckBreak(); yyj483++ { + + if yyj483 >= len(yyv483) { + yyv483 = append(yyv483, pkg2_api.OwnerReference{}) // var yyz483 pkg2_api.OwnerReference + yyc483 = true + } + yyh483.ElemContainerState(yyj483) + if yyj483 < len(yyv483) { + if r.TryDecodeAsNil() { + yyv483[yyj483] = pkg2_api.OwnerReference{} + } else { + yyv486 := &yyv483[yyj483] + yyv486.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj483 < len(yyv483) { + yyv483 = yyv483[:yyj483] + yyc483 = true + } else if yyj483 == 0 && yyv483 == nil { + yyv483 = []pkg2_api.OwnerReference{} + yyc483 = true + } + } + yyh483.End() + if yyc483 { + *v = yyv483 + } +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk487, yyv487 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym488 := z.EncBinary() + _ = yym488 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk487)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv487 == nil { + r.EncodeNil() + } else { + yyv487.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv489 := *v + yyl489 := r.ReadMapStart() + yybh489 := z.DecBasicHandle() + if yyv489 == nil { + yyrl489, _ := z.DecInferLen(yyl489, yybh489.MaxInitLen, 40) + yyv489 = make(map[string]ExtraValue, yyrl489) + *v = yyv489 + } + var yymk489 string + var yymv489 ExtraValue + var yymg489 bool + if yybh489.MapValueReset { + yymg489 = true + } + if yyl489 > 0 { + for yyj489 := 0; yyj489 < yyl489; yyj489++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk489 = "" + } else { + yymk489 = string(r.DecodeString()) + } + + if yymg489 { + yymv489 = yyv489[yymk489] + } else { + yymv489 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv489 = nil + } else { + yyv491 := &yymv489 + yyv491.CodecDecodeSelf(d) + } + + if yyv489 != nil { + yyv489[yymk489] = yymv489 + } + } + } else if yyl489 < 0 { + for yyj489 := 0; !r.CheckBreak(); yyj489++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk489 = "" + } else { + yymk489 = string(r.DecodeString()) + } + + if yymg489 { + yymv489 = yyv489[yymk489] + } else { + yymv489 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv489 = nil + } else { + yyv493 := &yymv489 + yyv493.CodecDecodeSelf(d) + } + + if yyv489 != nil { + yyv489[yymk489] = yymv489 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv494 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym495 := z.EncBinary() + _ = yym495 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv494)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv496 := *v + yyh496, yyl496 := z.DecSliceHelperStart() + var yyc496 bool + if yyl496 == 0 { + if yyv496 == nil { + yyv496 = []string{} + yyc496 = true + } else if len(yyv496) != 0 { + yyv496 = yyv496[:0] + yyc496 = true + } + } else if yyl496 > 0 { + var yyrr496, yyrl496 int + var yyrt496 bool + if yyl496 > cap(yyv496) { + + yyrl496, yyrt496 = z.DecInferLen(yyl496, z.DecBasicHandle().MaxInitLen, 16) + if yyrt496 { + if yyrl496 <= cap(yyv496) { + yyv496 = yyv496[:yyrl496] + } else { + yyv496 = make([]string, yyrl496) + } + } else { + yyv496 = make([]string, yyrl496) + } + yyc496 = true + yyrr496 = len(yyv496) + } else if yyl496 != len(yyv496) { + yyv496 = yyv496[:yyl496] + yyc496 = true + } + yyj496 := 0 + for ; yyj496 < yyrr496; yyj496++ { + yyh496.ElemContainerState(yyj496) + if r.TryDecodeAsNil() { + yyv496[yyj496] = "" + } else { + yyv496[yyj496] = string(r.DecodeString()) + } + + } + if yyrt496 { + for ; yyj496 < yyl496; yyj496++ { + yyv496 = append(yyv496, "") + yyh496.ElemContainerState(yyj496) + if r.TryDecodeAsNil() { + yyv496[yyj496] = "" + } else { + yyv496[yyj496] = string(r.DecodeString()) + } + + } + } + + } else { + yyj496 := 0 + for ; !r.CheckBreak(); yyj496++ { + + if yyj496 >= len(yyv496) { + yyv496 = append(yyv496, "") // var yyz496 string + yyc496 = true + } + yyh496.ElemContainerState(yyj496) + if yyj496 < len(yyv496) { + if r.TryDecodeAsNil() { + yyv496[yyj496] = "" + } else { + yyv496[yyj496] = string(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj496 < len(yyv496) { + yyv496 = yyv496[:yyj496] + yyc496 = true + } else if yyj496 == 0 && yyv496 == nil { + yyv496 = []string{} + yyc496 = true + } + } + yyh496.End() + if yyc496 { + *v = yyv496 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.go new file mode 100644 index 0000000000..81070c7e8e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/types.go @@ -0,0 +1,147 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package authorization + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SubjectAccessReview checks whether or not a user or group can perform an action. Not filling in a +// spec.namespace means "in all namespaces". +type SubjectAccessReview struct { + unversioned.TypeMeta + api.ObjectMeta + + // Spec holds information about the request being evaluated + Spec SubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +type SelfSubjectAccessReview struct { + unversioned.TypeMeta + api.ObjectMeta + + // Spec holds information about the request being evaluated. + Spec SelfSubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// +genclient=true +// +noMethods=true + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +type LocalSubjectAccessReview struct { + unversioned.TypeMeta + api.ObjectMeta + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + Spec SubjectAccessReviewSpec + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +type ResourceAttributes struct { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + Namespace string + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + Verb string + // Group is the API Group of the Resource. "*" means all. + Group string + // Version is the API Version of the Resource. "*" means all. + Version string + // Resource is one of the existing resource types. "*" means all. + Resource string + // Subresource is one of the existing resource types. "" means none. + Subresource string + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + Name string +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +type NonResourceAttributes struct { + // Path is the URL path of the request + Path string + // Verb is the standard HTTP verb + Verb string +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAttributes +// and NonResourceAttributes must be set +type SubjectAccessReviewSpec struct { + // ResourceAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + User string + // Groups is the groups you're testing for. + Groups []string + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + Extra map[string]ExtraValue +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +type ExtraValue []string + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAttributes +// and NonResourceAttributes must be set +type SelfSubjectAccessReviewSpec struct { + // ResourceAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes +} + +// SubjectAccessReviewStatus +type SubjectAccessReviewStatus struct { + // Allowed is required. True if the action would be allowed, false otherwise. + Allowed bool + // Reason is optional. It indicates why a request was allowed or denied. + Reason string + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + EvaluationError string +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/conversion.go new file mode 100644 index 0000000000..8429076135 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/conversion.go @@ -0,0 +1,26 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + return scheme.AddConversionFuncs() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/defaults.go new file mode 100644 index 0000000000..3ea53fa490 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/defaults.go @@ -0,0 +1,25 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/doc.go new file mode 100644 index 0000000000..392ee49992 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/authorization +// +k8s:openapi-gen=true + +// +groupName=authorization.k8s.io +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.pb.go new file mode 100644 index 0000000000..47aa735988 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.pb.go @@ -0,0 +1,2341 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/authorization/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/authorization/v1beta1/generated.proto + + It has these top-level messages: + ExtraValue + LocalSubjectAccessReview + NonResourceAttributes + ResourceAttributes + SelfSubjectAccessReview + SelfSubjectAccessReviewSpec + SubjectAccessReview + SubjectAccessReviewSpec + SubjectAccessReviewStatus +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *ExtraValue) Reset() { *m = ExtraValue{} } +func (*ExtraValue) ProtoMessage() {} +func (*ExtraValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *LocalSubjectAccessReview) Reset() { *m = LocalSubjectAccessReview{} } +func (*LocalSubjectAccessReview) ProtoMessage() {} +func (*LocalSubjectAccessReview) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *NonResourceAttributes) Reset() { *m = NonResourceAttributes{} } +func (*NonResourceAttributes) ProtoMessage() {} +func (*NonResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *ResourceAttributes) Reset() { *m = ResourceAttributes{} } +func (*ResourceAttributes) ProtoMessage() {} +func (*ResourceAttributes) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *SelfSubjectAccessReview) Reset() { *m = SelfSubjectAccessReview{} } +func (*SelfSubjectAccessReview) ProtoMessage() {} +func (*SelfSubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *SelfSubjectAccessReviewSpec) Reset() { *m = SelfSubjectAccessReviewSpec{} } +func (*SelfSubjectAccessReviewSpec) ProtoMessage() {} +func (*SelfSubjectAccessReviewSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{5} +} + +func (m *SubjectAccessReview) Reset() { *m = SubjectAccessReview{} } +func (*SubjectAccessReview) ProtoMessage() {} +func (*SubjectAccessReview) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *SubjectAccessReviewSpec) Reset() { *m = SubjectAccessReviewSpec{} } +func (*SubjectAccessReviewSpec) ProtoMessage() {} +func (*SubjectAccessReviewSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *SubjectAccessReviewStatus) Reset() { *m = SubjectAccessReviewStatus{} } +func (*SubjectAccessReviewStatus) ProtoMessage() {} +func (*SubjectAccessReviewStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{8} +} + +func init() { + proto.RegisterType((*ExtraValue)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.ExtraValue") + proto.RegisterType((*LocalSubjectAccessReview)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.LocalSubjectAccessReview") + proto.RegisterType((*NonResourceAttributes)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.NonResourceAttributes") + proto.RegisterType((*ResourceAttributes)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.ResourceAttributes") + proto.RegisterType((*SelfSubjectAccessReview)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.SelfSubjectAccessReview") + proto.RegisterType((*SelfSubjectAccessReviewSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.SelfSubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReview)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.SubjectAccessReview") + proto.RegisterType((*SubjectAccessReviewSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.SubjectAccessReviewSpec") + proto.RegisterType((*SubjectAccessReviewStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.authorization.v1beta1.SubjectAccessReviewStatus") +} +func (m ExtraValue) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m ExtraValue) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *LocalSubjectAccessReview) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LocalSubjectAccessReview) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *NonResourceAttributes) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NonResourceAttributes) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Verb))) + i += copy(data[i:], m.Verb) + return i, nil +} + +func (m *ResourceAttributes) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ResourceAttributes) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Namespace))) + i += copy(data[i:], m.Namespace) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Verb))) + i += copy(data[i:], m.Verb) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Group))) + i += copy(data[i:], m.Group) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Version))) + i += copy(data[i:], m.Version) + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Resource))) + i += copy(data[i:], m.Resource) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Subresource))) + i += copy(data[i:], m.Subresource) + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + return i, nil +} + +func (m *SelfSubjectAccessReview) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SelfSubjectAccessReview) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n4, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n5, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n6, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + return i, nil +} + +func (m *SelfSubjectAccessReviewSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SelfSubjectAccessReviewSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ResourceAttributes.Size())) + n7, err := m.ResourceAttributes.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.NonResourceAttributes != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.NonResourceAttributes.Size())) + n8, err := m.NonResourceAttributes.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + } + return i, nil +} + +func (m *SubjectAccessReview) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SubjectAccessReview) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n10, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n11, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n11 + return i, nil +} + +func (m *SubjectAccessReviewSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SubjectAccessReviewSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ResourceAttributes != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ResourceAttributes.Size())) + n12, err := m.ResourceAttributes.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n12 + } + if m.NonResourceAttributes != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.NonResourceAttributes.Size())) + n13, err := m.NonResourceAttributes.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n13 + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.User))) + i += copy(data[i:], m.User) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Extra) > 0 { + for k := range m.Extra { + data[i] = 0x2a + i++ + v := m.Extra[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n14, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n14 + } + } + return i, nil +} + +func (m *SubjectAccessReviewStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SubjectAccessReviewStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Allowed { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.EvaluationError))) + i += copy(data[i:], m.EvaluationError) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m ExtraValue) Size() (n int) { + var l int + _ = l + if len(m) > 0 { + for _, s := range m { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LocalSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NonResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ResourceAttributes) Size() (n int) { + var l int + _ = l + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Verb) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Version) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Resource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Subresource) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SelfSubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *SubjectAccessReview) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SubjectAccessReviewSpec) Size() (n int) { + var l int + _ = l + if m.ResourceAttributes != nil { + l = m.ResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NonResourceAttributes != nil { + l = m.NonResourceAttributes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.User) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Extra) > 0 { + for k, v := range m.Extra { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *SubjectAccessReviewStatus) Size() (n int) { + var l int + _ = l + n += 2 + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.EvaluationError) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *LocalSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LocalSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NonResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NonResourceAttributes{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `}`, + }, "") + return s +} +func (this *ResourceAttributes) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ResourceAttributes{`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `Verb:` + fmt.Sprintf("%v", this.Verb) + `,`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `Resource:` + fmt.Sprintf("%v", this.Resource) + `,`, + `Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SelfSubjectAccessReviewSpec", "SelfSubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SelfSubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SelfSubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReview) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReview{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SubjectAccessReviewSpec", "SubjectAccessReviewSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SubjectAccessReviewStatus", "SubjectAccessReviewStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewSpec) String() string { + if this == nil { + return "nil" + } + keysForExtra := make([]string, 0, len(this.Extra)) + for k := range this.Extra { + keysForExtra = append(keysForExtra, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForExtra) + mapStringForExtra := "map[string]ExtraValue{" + for _, k := range keysForExtra { + mapStringForExtra += fmt.Sprintf("%v: %v,", k, this.Extra[k]) + } + mapStringForExtra += "}" + s := strings.Join([]string{`&SubjectAccessReviewSpec{`, + `ResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ResourceAttributes), "ResourceAttributes", "ResourceAttributes", 1) + `,`, + `NonResourceAttributes:` + strings.Replace(fmt.Sprintf("%v", this.NonResourceAttributes), "NonResourceAttributes", "NonResourceAttributes", 1) + `,`, + `User:` + fmt.Sprintf("%v", this.User) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `Extra:` + mapStringForExtra + `,`, + `}`, + }, "") + return s +} +func (this *SubjectAccessReviewStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubjectAccessReviewStatus{`, + `Allowed:` + fmt.Sprintf("%v", this.Allowed) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `EvaluationError:` + fmt.Sprintf("%v", this.EvaluationError) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ExtraValue) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExtraValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExtraValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + *m = append(*m, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LocalSubjectAccessReview) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LocalSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LocalSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NonResourceAttributes) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NonResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NonResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResourceAttributes) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ResourceAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResourceAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verb", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verb = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subresource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subresource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReview) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SelfSubjectAccessReviewSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SelfSubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReview) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReview: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReview: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResourceAttributes == nil { + m.ResourceAttributes = &ResourceAttributes{} + } + if err := m.ResourceAttributes.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceAttributes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NonResourceAttributes == nil { + m.NonResourceAttributes = &NonResourceAttributes{} + } + if err := m.NonResourceAttributes.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extra", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &ExtraValue{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Extra == nil { + m.Extra = make(map[string]ExtraValue) + } + m.Extra[mapkey] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubjectAccessReviewStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubjectAccessReviewStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Allowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Allowed = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvaluationError", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvaluationError = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 864 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x4f, 0x1b, 0x47, + 0x18, 0xf6, 0xf7, 0xc7, 0xd0, 0x16, 0x3a, 0x88, 0x62, 0x5c, 0x09, 0x5b, 0xae, 0x54, 0x81, 0x04, + 0xbb, 0x05, 0x09, 0x15, 0xa1, 0x1e, 0xea, 0x55, 0x2d, 0x84, 0x5a, 0x68, 0x35, 0x6e, 0x51, 0xd5, + 0x9e, 0x66, 0xd7, 0x83, 0xd9, 0xd8, 0xde, 0xb5, 0x66, 0x66, 0x4d, 0xc8, 0x89, 0x1f, 0x90, 0x43, + 0x8e, 0x1c, 0xf3, 0x17, 0xf2, 0x07, 0x72, 0x0d, 0x47, 0x72, 0x89, 0x12, 0x29, 0x42, 0x09, 0xf9, + 0x17, 0x39, 0x65, 0x76, 0x76, 0xec, 0xc5, 0x78, 0x9d, 0xc8, 0x09, 0x8a, 0x72, 0xe0, 0x30, 0xd2, + 0xce, 0xfb, 0xf1, 0xbc, 0xcf, 0xcc, 0x3c, 0xb3, 0xef, 0x80, 0x5f, 0x5b, 0x9b, 0x4c, 0xb3, 0x5d, + 0xbd, 0xe5, 0x99, 0x84, 0x3a, 0x84, 0x13, 0xa6, 0x77, 0x5b, 0x4d, 0x1d, 0x77, 0x6d, 0xa6, 0x63, + 0x8f, 0x1f, 0xba, 0xd4, 0xbe, 0x87, 0xb9, 0xed, 0x3a, 0x7a, 0x6f, 0xcd, 0x24, 0x1c, 0xaf, 0xe9, + 0x4d, 0xe2, 0x10, 0x8a, 0x39, 0x69, 0x68, 0x5d, 0xea, 0x72, 0x17, 0xfe, 0x14, 0x20, 0x68, 0x21, + 0x82, 0x26, 0x10, 0x34, 0x1f, 0x41, 0x1b, 0x42, 0xd0, 0x14, 0x42, 0x71, 0xb5, 0x69, 0xf3, 0x43, + 0xcf, 0xd4, 0x2c, 0xb7, 0xa3, 0x37, 0xdd, 0xa6, 0xab, 0x4b, 0x20, 0xd3, 0x3b, 0x90, 0x33, 0x39, + 0x91, 0x5f, 0x41, 0x81, 0xe2, 0xfa, 0x58, 0x8a, 0x3a, 0x25, 0xcc, 0xf5, 0xa8, 0x45, 0xae, 0x93, + 0x2a, 0x6e, 0x8c, 0xcf, 0xf1, 0x9c, 0x1e, 0xa1, 0x4c, 0xf0, 0x21, 0x8d, 0x91, 0xb4, 0x95, 0xf1, + 0x69, 0xbd, 0x91, 0x95, 0x17, 0x57, 0xa3, 0xa3, 0xa9, 0xe7, 0x70, 0xbb, 0x33, 0xca, 0x69, 0x2d, + 0x3a, 0xdc, 0xe3, 0x76, 0x5b, 0xb7, 0x1d, 0xce, 0x38, 0xbd, 0x9e, 0x52, 0xf9, 0x19, 0x80, 0xda, + 0x5d, 0x4e, 0xf1, 0x3e, 0x6e, 0x7b, 0x04, 0x96, 0x40, 0xda, 0xe6, 0xa4, 0xc3, 0x0a, 0xf1, 0x72, + 0x72, 0x29, 0x6f, 0xe4, 0x2f, 0x2f, 0x4a, 0xe9, 0x1d, 0xdf, 0x80, 0x02, 0xfb, 0x56, 0xee, 0xf4, + 0x61, 0x29, 0x76, 0xf2, 0xb2, 0x1c, 0xab, 0x3c, 0x4b, 0x80, 0xc2, 0x1f, 0xae, 0x85, 0xdb, 0x75, + 0xcf, 0xbc, 0x43, 0x2c, 0x5e, 0xb5, 0x2c, 0xc2, 0x18, 0x22, 0x3d, 0x9b, 0x1c, 0xc1, 0x7f, 0x41, + 0xae, 0x23, 0x0e, 0xa2, 0x81, 0x39, 0x16, 0x50, 0xf1, 0xa5, 0xa9, 0xf5, 0x25, 0x6d, 0xec, 0x21, + 0x8a, 0x53, 0xd3, 0xfe, 0x94, 0x18, 0xbb, 0x22, 0xc7, 0x80, 0x67, 0x17, 0xa5, 0x98, 0x28, 0x0c, + 0x42, 0x1b, 0x1a, 0xa0, 0xc1, 0x16, 0x48, 0xb1, 0x2e, 0xb1, 0x0a, 0x09, 0x89, 0xba, 0xa3, 0x4d, + 0x2a, 0x0d, 0x2d, 0x82, 0x6e, 0x5d, 0x00, 0x1a, 0x5f, 0xa9, 0xb2, 0x29, 0x7f, 0x86, 0x64, 0x11, + 0xc8, 0x40, 0x86, 0x71, 0xcc, 0x3d, 0x56, 0x48, 0xca, 0x72, 0xbf, 0xdf, 0x4c, 0x39, 0x09, 0x69, + 0x7c, 0xa3, 0x0a, 0x66, 0x82, 0x39, 0x52, 0xa5, 0x2a, 0xff, 0x83, 0xb9, 0x3d, 0xd7, 0x41, 0x4a, + 0x77, 0x55, 0xce, 0xa9, 0x6d, 0x7a, 0xa2, 0x12, 0x2c, 0x83, 0x54, 0x17, 0xf3, 0x43, 0xb9, 0xa1, + 0xf9, 0x90, 0xef, 0x5f, 0xc2, 0x86, 0xa4, 0xc7, 0x8f, 0x10, 0xca, 0x33, 0xe5, 0xe6, 0x5c, 0x89, + 0xd8, 0x17, 0x36, 0x24, 0x3d, 0x95, 0xc7, 0x09, 0x00, 0x23, 0xa0, 0x75, 0x90, 0x77, 0x70, 0x87, + 0xb0, 0x2e, 0xb6, 0x88, 0xc2, 0xff, 0x56, 0x65, 0xe7, 0xf7, 0xfa, 0x0e, 0x14, 0xc6, 0x7c, 0xb8, + 0x12, 0xfc, 0x01, 0xa4, 0x9b, 0xd4, 0xf5, 0xba, 0x72, 0xeb, 0xf2, 0xc6, 0xd7, 0x2a, 0x24, 0xbd, + 0xed, 0x1b, 0x51, 0xe0, 0x83, 0xcb, 0x20, 0xab, 0xae, 0x4a, 0x21, 0x25, 0xc3, 0xa6, 0x55, 0x58, + 0x76, 0x3f, 0x30, 0xa3, 0xbe, 0x1f, 0xae, 0x80, 0x5c, 0xff, 0x2e, 0x16, 0xd2, 0x32, 0x76, 0x46, + 0xc5, 0xe6, 0xfa, 0x0b, 0x42, 0x83, 0x08, 0xb8, 0x01, 0xa6, 0x98, 0x67, 0x0e, 0x12, 0x32, 0x32, + 0x61, 0x56, 0x25, 0x4c, 0xd5, 0x43, 0x17, 0xba, 0x1a, 0xe7, 0x2f, 0xcb, 0x5f, 0x63, 0x21, 0x3b, + 0xbc, 0x2c, 0x7f, 0x0b, 0x90, 0xf4, 0x54, 0x5e, 0x24, 0xc0, 0x7c, 0x9d, 0xb4, 0x0f, 0x3e, 0xaf, + 0xea, 0xdd, 0x21, 0xd5, 0xef, 0x7e, 0x84, 0x0c, 0xa3, 0x29, 0x7f, 0x59, 0xca, 0x7f, 0x92, 0x00, + 0xdf, 0xbf, 0x87, 0x28, 0xbc, 0x1f, 0x07, 0x90, 0x8e, 0x88, 0x57, 0x6d, 0xf5, 0x6f, 0x93, 0x33, + 0x1c, 0xbd, 0x08, 0xc6, 0x77, 0x82, 0x56, 0xc4, 0x05, 0x41, 0x11, 0x75, 0xe1, 0x69, 0x1c, 0xcc, + 0x39, 0x51, 0x37, 0x55, 0x1d, 0xd3, 0xf6, 0xe4, 0x8c, 0x22, 0x2f, 0xbe, 0xb1, 0x20, 0x48, 0x45, + 0xff, 0x13, 0x50, 0x34, 0x81, 0xca, 0xd3, 0x04, 0x98, 0xbd, 0xfd, 0x2f, 0xdf, 0xac, 0x3a, 0xdf, + 0xa6, 0xc4, 0xcd, 0xbf, 0x55, 0xe6, 0xa7, 0x29, 0x73, 0xd0, 0x38, 0x92, 0xc3, 0x7f, 0xd8, 0x7f, + 0x18, 0xa1, 0xaa, 0x71, 0x94, 0xfb, 0x8d, 0x23, 0x25, 0xdf, 0x20, 0xc0, 0x3f, 0x0a, 0xd9, 0x34, + 0x58, 0xbf, 0x6b, 0x1c, 0x83, 0x34, 0xf1, 0xdf, 0x2c, 0xa2, 0x0f, 0x24, 0xc5, 0x6a, 0xfe, 0xbe, + 0x31, 0xb1, 0x69, 0xf2, 0x29, 0x54, 0x73, 0x38, 0x3d, 0x0e, 0x1b, 0x96, 0xb4, 0xa1, 0xa0, 0x62, + 0xb1, 0xa7, 0x9e, 0x4b, 0x32, 0x06, 0xce, 0x80, 0x64, 0x8b, 0x1c, 0x07, 0x0d, 0x13, 0xf9, 0x9f, + 0x10, 0x81, 0x74, 0xcf, 0x7f, 0x49, 0xa9, 0x8d, 0xfe, 0x65, 0x72, 0x6a, 0xe1, 0x6b, 0x0c, 0x05, + 0x50, 0x5b, 0x89, 0xcd, 0x78, 0xe5, 0x51, 0x1c, 0x2c, 0x8c, 0x95, 0xac, 0xdf, 0x46, 0x71, 0xbb, + 0xed, 0x1e, 0x91, 0x86, 0xe4, 0x92, 0x0b, 0xdb, 0x68, 0x35, 0x30, 0xa3, 0xbe, 0x1f, 0xfe, 0x08, + 0x32, 0x94, 0x60, 0x26, 0x1a, 0x6e, 0xd0, 0xba, 0x07, 0x6a, 0x47, 0xd2, 0x8a, 0x94, 0x17, 0x56, + 0xc1, 0x34, 0xf1, 0xcb, 0x4b, 0x72, 0x35, 0x4a, 0x5d, 0xaa, 0x8e, 0x6c, 0x5e, 0x25, 0x4c, 0xd7, + 0x86, 0xdd, 0xe8, 0x7a, 0xbc, 0xb1, 0x7c, 0xf6, 0x7a, 0x31, 0x76, 0x2e, 0xc6, 0x73, 0x31, 0x4e, + 0x2e, 0x17, 0xe3, 0x67, 0x62, 0x9c, 0x8b, 0xf1, 0x4a, 0x8c, 0x07, 0x6f, 0x16, 0x63, 0xff, 0x65, + 0xd5, 0xa2, 0xdf, 0x05, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xa4, 0x8c, 0xef, 0x24, 0x0c, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.proto new file mode 100644 index 0000000000..bd98cee070 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/generated.proto @@ -0,0 +1,160 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.authorization.v1beta1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +message ExtraValue { + // items, if empty, will result in an empty slice + + repeated string items = 1; +} + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +message LocalSubjectAccessReview { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + optional SubjectAccessReviewStatus status = 3; +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +message NonResourceAttributes { + // Path is the URL path of the request + optional string path = 1; + + // Verb is the standard HTTP verb + optional string verb = 2; +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +message ResourceAttributes { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + optional string namespace = 1; + + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + optional string verb = 2; + + // Group is the API Group of the Resource. "*" means all. + optional string group = 3; + + // Version is the API Version of the Resource. "*" means all. + optional string version = 4; + + // Resource is one of the existing resource types. "*" means all. + optional string resource = 5; + + // Subresource is one of the existing resource types. "" means none. + optional string subresource = 6; + + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + optional string name = 7; +} + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +message SelfSubjectAccessReview { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated. user and groups must be empty + optional SelfSubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + optional SubjectAccessReviewStatus status = 3; +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SelfSubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + optional NonResourceAttributes nonResourceAttributes = 2; +} + +// SubjectAccessReview checks whether or not a user or group can perform an action. +message SubjectAccessReview { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec holds information about the request being evaluated + optional SubjectAccessReviewSpec spec = 2; + + // Status is filled in by the server and indicates whether the request is allowed or not + optional SubjectAccessReviewStatus status = 3; +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +message SubjectAccessReviewSpec { + // ResourceAuthorizationAttributes describes information for a resource access request + optional ResourceAttributes resourceAttributes = 1; + + // NonResourceAttributes describes information for a non-resource access request + optional NonResourceAttributes nonResourceAttributes = 2; + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + optional string verb = 3; + + // Groups is the groups you're testing for. + repeated string group = 4; + + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + map<string, ExtraValue> extra = 5; +} + +// SubjectAccessReviewStatus +message SubjectAccessReviewStatus { + // Allowed is required. True if the action would be allowed, false otherwise. + optional bool allowed = 1; + + // Reason is optional. It indicates why a request was allowed or denied. + optional string reason = 2; + + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + optional string evaluationError = 3; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/register.go new file mode 100644 index 0000000000..d809d7c9b4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/register.go @@ -0,0 +1,54 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + + &SelfSubjectAccessReview{}, + &SubjectAccessReview{}, + &LocalSubjectAccessReview{}, + ) + + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} + +func (obj *LocalSubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *SubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *SelfSubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.generated.go new file mode 100644 index 0000000000..90178f2d72 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.generated.go @@ -0,0 +1,2902 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_unversioned.TypeMeta + var v1 pkg2_v1.ObjectMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *SubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SelfSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [5]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Kind != "" + yyq33[1] = x.APIVersion != "" + yyq33[2] = true + yyq33[4] = true + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(5) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yy41 := &x.ObjectMeta + yy41.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy42 := &x.ObjectMeta + yy42.CodecEncodeSelf(e) + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy44 := &x.Spec + yy44.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy45 := &x.Spec + yy45.CodecEncodeSelf(e) + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[4] { + yy47 := &x.Status + yy47.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq33[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy48 := &x.Status + yy48.CodecEncodeSelf(e) + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym49 := z.DecBinary() + _ = yym49 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct50 := r.ContainerType() + if yyct50 == codecSelferValueTypeMap1234 { + yyl50 := r.ReadMapStart() + if yyl50 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl50, d) + } + } else if yyct50 == codecSelferValueTypeArray1234 { + yyl50 := r.ReadArrayStart() + if yyl50 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl50, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys51Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys51Slc + var yyhl51 bool = l >= 0 + for yyj51 := 0; ; yyj51++ { + if yyhl51 { + if yyj51 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys51Slc = r.DecodeBytes(yys51Slc, true, true) + yys51 := string(yys51Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys51 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv54 := &x.ObjectMeta + yyv54.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv55 := &x.Spec + yyv55.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv56 := &x.Status + yyv56.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys51) + } // end switch yys51 + } // end for yyj51 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj57 int + var yyb57 bool + var yyhl57 bool = l >= 0 + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv60 := &x.ObjectMeta + yyv60.CodecDecodeSelf(d) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SelfSubjectAccessReviewSpec{} + } else { + yyv61 := &x.Spec + yyv61.CodecDecodeSelf(d) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv62 := &x.Status + yyv62.CodecDecodeSelf(d) + } + for { + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj57-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LocalSubjectAccessReview) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym63 := z.EncBinary() + _ = yym63 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep64 := !z.EncBinary() + yy2arr64 := z.EncBasicHandle().StructToArray + var yyq64 [5]bool + _, _, _ = yysep64, yyq64, yy2arr64 + const yyr64 bool = false + yyq64[0] = x.Kind != "" + yyq64[1] = x.APIVersion != "" + yyq64[2] = true + yyq64[4] = true + var yynn64 int + if yyr64 || yy2arr64 { + r.EncodeArrayStart(5) + } else { + yynn64 = 1 + for _, b := range yyq64 { + if b { + yynn64++ + } + } + r.EncodeMapStart(yynn64) + yynn64 = 0 + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq64[0] { + yym66 := z.EncBinary() + _ = yym66 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq64[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq64[1] { + yym69 := z.EncBinary() + _ = yym69 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq64[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq64[2] { + yy72 := &x.ObjectMeta + yy72.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq64[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy73 := &x.ObjectMeta + yy73.CodecEncodeSelf(e) + } + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy75 := &x.Spec + yy75.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy76 := &x.Spec + yy76.CodecEncodeSelf(e) + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq64[4] { + yy78 := &x.Status + yy78.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq64[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy79 := &x.Status + yy79.CodecEncodeSelf(e) + } + } + if yyr64 || yy2arr64 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LocalSubjectAccessReview) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym80 := z.DecBinary() + _ = yym80 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct81 := r.ContainerType() + if yyct81 == codecSelferValueTypeMap1234 { + yyl81 := r.ReadMapStart() + if yyl81 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl81, d) + } + } else if yyct81 == codecSelferValueTypeArray1234 { + yyl81 := r.ReadArrayStart() + if yyl81 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl81, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys82Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys82Slc + var yyhl82 bool = l >= 0 + for yyj82 := 0; ; yyj82++ { + if yyhl82 { + if yyj82 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys82Slc = r.DecodeBytes(yys82Slc, true, true) + yys82 := string(yys82Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys82 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv85 := &x.ObjectMeta + yyv85.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv86 := &x.Spec + yyv86.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv87 := &x.Status + yyv87.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys82) + } // end switch yys82 + } // end for yyj82 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LocalSubjectAccessReview) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj88 int + var yyb88 bool + var yyhl88 bool = l >= 0 + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv91 := &x.ObjectMeta + yyv91.CodecDecodeSelf(d) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = SubjectAccessReviewSpec{} + } else { + yyv92 := &x.Spec + yyv92.CodecDecodeSelf(d) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = SubjectAccessReviewStatus{} + } else { + yyv93 := &x.Status + yyv93.CodecDecodeSelf(d) + } + for { + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj88-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep95 := !z.EncBinary() + yy2arr95 := z.EncBasicHandle().StructToArray + var yyq95 [7]bool + _, _, _ = yysep95, yyq95, yy2arr95 + const yyr95 bool = false + yyq95[0] = x.Namespace != "" + yyq95[1] = x.Verb != "" + yyq95[2] = x.Group != "" + yyq95[3] = x.Version != "" + yyq95[4] = x.Resource != "" + yyq95[5] = x.Subresource != "" + yyq95[6] = x.Name != "" + var yynn95 int + if yyr95 || yy2arr95 { + r.EncodeArrayStart(7) + } else { + yynn95 = 0 + for _, b := range yyq95 { + if b { + yynn95++ + } + } + r.EncodeMapStart(yynn95) + yynn95 = 0 + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[0] { + yym97 := z.EncBinary() + _ = yym97 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym98 := z.EncBinary() + _ = yym98 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[1] { + yym100 := z.EncBinary() + _ = yym100 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym101 := z.EncBinary() + _ = yym101 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[2] { + yym103 := z.EncBinary() + _ = yym103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Group)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[3] { + yym106 := z.EncBinary() + _ = yym106 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("version")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym107 := z.EncBinary() + _ = yym107 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Version)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[4] { + yym109 := z.EncBinary() + _ = yym109 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym110 := z.EncBinary() + _ = yym110 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Resource)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[5] { + yym112 := z.EncBinary() + _ = yym112 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subresource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym113 := z.EncBinary() + _ = yym113 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq95[6] { + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq95[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym116 := z.EncBinary() + _ = yym116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr95 || yy2arr95 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym117 := z.DecBinary() + _ = yym117 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct118 := r.ContainerType() + if yyct118 == codecSelferValueTypeMap1234 { + yyl118 := r.ReadMapStart() + if yyl118 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl118, d) + } + } else if yyct118 == codecSelferValueTypeArray1234 { + yyl118 := r.ReadArrayStart() + if yyl118 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl118, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys119Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys119Slc + var yyhl119 bool = l >= 0 + for yyj119 := 0; ; yyj119++ { + if yyhl119 { + if yyj119 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys119Slc = r.DecodeBytes(yys119Slc, true, true) + yys119 := string(yys119Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys119 { + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + case "group": + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + case "version": + if r.TryDecodeAsNil() { + x.Version = "" + } else { + x.Version = string(r.DecodeString()) + } + case "resource": + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + case "subresource": + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys119) + } // end switch yys119 + } // end for yyj119 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj127 int + var yyb127 bool + var yyhl127 bool = l >= 0 + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Group = "" + } else { + x.Group = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Version = "" + } else { + x.Version = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resource = "" + } else { + x.Resource = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj127++ + if yyhl127 { + yyb127 = yyj127 > l + } else { + yyb127 = r.CheckBreak() + } + if yyb127 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj127-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NonResourceAttributes) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym135 := z.EncBinary() + _ = yym135 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep136 := !z.EncBinary() + yy2arr136 := z.EncBasicHandle().StructToArray + var yyq136 [2]bool + _, _, _ = yysep136, yyq136, yy2arr136 + const yyr136 bool = false + yyq136[0] = x.Path != "" + yyq136[1] = x.Verb != "" + var yynn136 int + if yyr136 || yy2arr136 { + r.EncodeArrayStart(2) + } else { + yynn136 = 0 + for _, b := range yyq136 { + if b { + yynn136++ + } + } + r.EncodeMapStart(yynn136) + yynn136 = 0 + } + if yyr136 || yy2arr136 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq136[0] { + yym138 := z.EncBinary() + _ = yym138 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq136[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym139 := z.EncBinary() + _ = yym139 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr136 || yy2arr136 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq136[1] { + yym141 := z.EncBinary() + _ = yym141 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq136[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verb")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym142 := z.EncBinary() + _ = yym142 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Verb)) + } + } + } + if yyr136 || yy2arr136 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NonResourceAttributes) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym143 := z.DecBinary() + _ = yym143 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct144 := r.ContainerType() + if yyct144 == codecSelferValueTypeMap1234 { + yyl144 := r.ReadMapStart() + if yyl144 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl144, d) + } + } else if yyct144 == codecSelferValueTypeArray1234 { + yyl144 := r.ReadArrayStart() + if yyl144 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl144, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NonResourceAttributes) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys145Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys145Slc + var yyhl145 bool = l >= 0 + for yyj145 := 0; ; yyj145++ { + if yyhl145 { + if yyj145 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys145Slc = r.DecodeBytes(yys145Slc, true, true) + yys145 := string(yys145Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys145 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "verb": + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys145) + } // end switch yys145 + } // end for yyj145 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NonResourceAttributes) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj148 int + var yyb148 bool + var yyhl148 bool = l >= 0 + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verb = "" + } else { + x.Verb = string(r.DecodeString()) + } + for { + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj148-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym151 := z.EncBinary() + _ = yym151 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep152 := !z.EncBinary() + yy2arr152 := z.EncBasicHandle().StructToArray + var yyq152 [5]bool + _, _, _ = yysep152, yyq152, yy2arr152 + const yyr152 bool = false + yyq152[0] = x.ResourceAttributes != nil + yyq152[1] = x.NonResourceAttributes != nil + yyq152[2] = x.User != "" + yyq152[3] = len(x.Groups) != 0 + yyq152[4] = len(x.Extra) != 0 + var yynn152 int + if yyr152 || yy2arr152 { + r.EncodeArrayStart(5) + } else { + yynn152 = 0 + for _, b := range yyq152 { + if b { + yynn152++ + } + } + r.EncodeMapStart(yynn152) + yynn152 = 0 + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq152[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq152[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq152[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq152[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq152[2] { + yym156 := z.EncBinary() + _ = yym156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq152[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("user")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym157 := z.EncBinary() + _ = yym157 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.User)) + } + } + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq152[3] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq152[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("group")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym160 := z.EncBinary() + _ = yym160 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq152[4] { + if x.Extra == nil { + r.EncodeNil() + } else { + yym162 := z.EncBinary() + _ = yym162 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq152[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("extra")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Extra == nil { + r.EncodeNil() + } else { + yym163 := z.EncBinary() + _ = yym163 + if false { + } else { + h.encMapstringExtraValue((map[string]ExtraValue)(x.Extra), e) + } + } + } + } + if yyr152 || yy2arr152 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym164 := z.DecBinary() + _ = yym164 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct165 := r.ContainerType() + if yyct165 == codecSelferValueTypeMap1234 { + yyl165 := r.ReadMapStart() + if yyl165 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl165, d) + } + } else if yyct165 == codecSelferValueTypeArray1234 { + yyl165 := r.ReadArrayStart() + if yyl165 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl165, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys166Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys166Slc + var yyhl166 bool = l >= 0 + for yyj166 := 0; ; yyj166++ { + if yyhl166 { + if yyj166 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys166Slc = r.DecodeBytes(yys166Slc, true, true) + yys166 := string(yys166Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys166 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + case "user": + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + case "group": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv170 := &x.Groups + yym171 := z.DecBinary() + _ = yym171 + if false { + } else { + z.F.DecSliceStringX(yyv170, false, d) + } + } + case "extra": + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv172 := &x.Extra + yym173 := z.DecBinary() + _ = yym173 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv172), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys166) + } // end switch yys166 + } // end for yyj166 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj174 int + var yyb174 bool + var yyhl174 bool = l >= 0 + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.User = "" + } else { + x.User = string(r.DecodeString()) + } + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv178 := &x.Groups + yym179 := z.DecBinary() + _ = yym179 + if false { + } else { + z.F.DecSliceStringX(yyv178, false, d) + } + } + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Extra = nil + } else { + yyv180 := &x.Extra + yym181 := z.DecBinary() + _ = yym181 + if false { + } else { + h.decMapstringExtraValue((*map[string]ExtraValue)(yyv180), d) + } + } + for { + yyj174++ + if yyhl174 { + yyb174 = yyj174 > l + } else { + yyb174 = r.CheckBreak() + } + if yyb174 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj174-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ExtraValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym182 := z.EncBinary() + _ = yym182 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + h.encExtraValue((ExtraValue)(x), e) + } + } +} + +func (x *ExtraValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym183 := z.DecBinary() + _ = yym183 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + h.decExtraValue((*ExtraValue)(x), d) + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym184 := z.EncBinary() + _ = yym184 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep185 := !z.EncBinary() + yy2arr185 := z.EncBasicHandle().StructToArray + var yyq185 [2]bool + _, _, _ = yysep185, yyq185, yy2arr185 + const yyr185 bool = false + yyq185[0] = x.ResourceAttributes != nil + yyq185[1] = x.NonResourceAttributes != nil + var yynn185 int + if yyr185 || yy2arr185 { + r.EncodeArrayStart(2) + } else { + yynn185 = 0 + for _, b := range yyq185 { + if b { + yynn185++ + } + } + r.EncodeMapStart(yynn185) + yynn185 = 0 + } + if yyr185 || yy2arr185 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq185[0] { + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq185[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceAttributes == nil { + r.EncodeNil() + } else { + x.ResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr185 || yy2arr185 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq185[1] { + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq185[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceAttributes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceAttributes == nil { + r.EncodeNil() + } else { + x.NonResourceAttributes.CodecEncodeSelf(e) + } + } + } + if yyr185 || yy2arr185 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SelfSubjectAccessReviewSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym188 := z.DecBinary() + _ = yym188 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct189 := r.ContainerType() + if yyct189 == codecSelferValueTypeMap1234 { + yyl189 := r.ReadMapStart() + if yyl189 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl189, d) + } + } else if yyct189 == codecSelferValueTypeArray1234 { + yyl189 := r.ReadArrayStart() + if yyl189 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl189, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys190Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys190Slc + var yyhl190 bool = l >= 0 + for yyj190 := 0; ; yyj190++ { + if yyhl190 { + if yyj190 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys190Slc = r.DecodeBytes(yys190Slc, true, true) + yys190 := string(yys190Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys190 { + case "resourceAttributes": + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + case "nonResourceAttributes": + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys190) + } // end switch yys190 + } // end for yyj190 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SelfSubjectAccessReviewSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj193 int + var yyb193 bool + var yyhl193 bool = l >= 0 + yyj193++ + if yyhl193 { + yyb193 = yyj193 > l + } else { + yyb193 = r.CheckBreak() + } + if yyb193 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ResourceAttributes != nil { + x.ResourceAttributes = nil + } + } else { + if x.ResourceAttributes == nil { + x.ResourceAttributes = new(ResourceAttributes) + } + x.ResourceAttributes.CodecDecodeSelf(d) + } + yyj193++ + if yyhl193 { + yyb193 = yyj193 > l + } else { + yyb193 = r.CheckBreak() + } + if yyb193 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NonResourceAttributes != nil { + x.NonResourceAttributes = nil + } + } else { + if x.NonResourceAttributes == nil { + x.NonResourceAttributes = new(NonResourceAttributes) + } + x.NonResourceAttributes.CodecDecodeSelf(d) + } + for { + yyj193++ + if yyhl193 { + yyb193 = yyj193 > l + } else { + yyb193 = r.CheckBreak() + } + if yyb193 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj193-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubjectAccessReviewStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym196 := z.EncBinary() + _ = yym196 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep197 := !z.EncBinary() + yy2arr197 := z.EncBasicHandle().StructToArray + var yyq197 [3]bool + _, _, _ = yysep197, yyq197, yy2arr197 + const yyr197 bool = false + yyq197[1] = x.Reason != "" + yyq197[2] = x.EvaluationError != "" + var yynn197 int + if yyr197 || yy2arr197 { + r.EncodeArrayStart(3) + } else { + yynn197 = 1 + for _, b := range yyq197 { + if b { + yynn197++ + } + } + r.EncodeMapStart(yynn197) + yynn197 = 0 + } + if yyr197 || yy2arr197 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym199 := z.EncBinary() + _ = yym199 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym200 := z.EncBinary() + _ = yym200 + if false { + } else { + r.EncodeBool(bool(x.Allowed)) + } + } + if yyr197 || yy2arr197 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq197[1] { + yym202 := z.EncBinary() + _ = yym202 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq197[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym203 := z.EncBinary() + _ = yym203 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr197 || yy2arr197 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq197[2] { + yym205 := z.EncBinary() + _ = yym205 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq197[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("evaluationError")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym206 := z.EncBinary() + _ = yym206 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.EvaluationError)) + } + } + } + if yyr197 || yy2arr197 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubjectAccessReviewStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym207 := z.DecBinary() + _ = yym207 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct208 := r.ContainerType() + if yyct208 == codecSelferValueTypeMap1234 { + yyl208 := r.ReadMapStart() + if yyl208 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl208, d) + } + } else if yyct208 == codecSelferValueTypeArray1234 { + yyl208 := r.ReadArrayStart() + if yyl208 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl208, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys209Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys209Slc + var yyhl209 bool = l >= 0 + for yyj209 := 0; ; yyj209++ { + if yyhl209 { + if yyj209 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys209Slc = r.DecodeBytes(yys209Slc, true, true) + yys209 := string(yys209Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys209 { + case "allowed": + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + x.Allowed = bool(r.DecodeBool()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "evaluationError": + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + x.EvaluationError = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys209) + } // end switch yys209 + } // end for yyj209 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubjectAccessReviewStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj213 int + var yyb213 bool + var yyhl213 bool = l >= 0 + yyj213++ + if yyhl213 { + yyb213 = yyj213 > l + } else { + yyb213 = r.CheckBreak() + } + if yyb213 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Allowed = false + } else { + x.Allowed = bool(r.DecodeBool()) + } + yyj213++ + if yyhl213 { + yyb213 = yyj213 > l + } else { + yyb213 = r.CheckBreak() + } + if yyb213 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj213++ + if yyhl213 { + yyb213 = yyj213 > l + } else { + yyb213 = r.CheckBreak() + } + if yyb213 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.EvaluationError = "" + } else { + x.EvaluationError = string(r.DecodeString()) + } + for { + yyj213++ + if yyhl213 { + yyb213 = yyj213 > l + } else { + yyb213 = r.CheckBreak() + } + if yyb213 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj213-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encMapstringExtraValue(v map[string]ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeMapStart(len(v)) + for yyk217, yyv217 := range v { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + yym218 := z.EncBinary() + _ = yym218 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyk217)) + } + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyv217 == nil { + r.EncodeNil() + } else { + yyv217.CodecEncodeSelf(e) + } + } + z.EncSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) decMapstringExtraValue(v *map[string]ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv219 := *v + yyl219 := r.ReadMapStart() + yybh219 := z.DecBasicHandle() + if yyv219 == nil { + yyrl219, _ := z.DecInferLen(yyl219, yybh219.MaxInitLen, 40) + yyv219 = make(map[string]ExtraValue, yyrl219) + *v = yyv219 + } + var yymk219 string + var yymv219 ExtraValue + var yymg219 bool + if yybh219.MapValueReset { + yymg219 = true + } + if yyl219 > 0 { + for yyj219 := 0; yyj219 < yyl219; yyj219++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk219 = "" + } else { + yymk219 = string(r.DecodeString()) + } + + if yymg219 { + yymv219 = yyv219[yymk219] + } else { + yymv219 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv219 = nil + } else { + yyv221 := &yymv219 + yyv221.CodecDecodeSelf(d) + } + + if yyv219 != nil { + yyv219[yymk219] = yymv219 + } + } + } else if yyl219 < 0 { + for yyj219 := 0; !r.CheckBreak(); yyj219++ { + z.DecSendContainerState(codecSelfer_containerMapKey1234) + if r.TryDecodeAsNil() { + yymk219 = "" + } else { + yymk219 = string(r.DecodeString()) + } + + if yymg219 { + yymv219 = yyv219[yymk219] + } else { + yymv219 = nil + } + z.DecSendContainerState(codecSelfer_containerMapValue1234) + if r.TryDecodeAsNil() { + yymv219 = nil + } else { + yyv223 := &yymv219 + yyv223.CodecDecodeSelf(d) + } + + if yyv219 != nil { + yyv219[yymk219] = yymv219 + } + } + } // else len==0: TODO: Should we clear map entries? + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x codecSelfer1234) encExtraValue(v ExtraValue, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv224 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym225 := z.EncBinary() + _ = yym225 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv224)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decExtraValue(v *ExtraValue, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv226 := *v + yyh226, yyl226 := z.DecSliceHelperStart() + var yyc226 bool + if yyl226 == 0 { + if yyv226 == nil { + yyv226 = []string{} + yyc226 = true + } else if len(yyv226) != 0 { + yyv226 = yyv226[:0] + yyc226 = true + } + } else if yyl226 > 0 { + var yyrr226, yyrl226 int + var yyrt226 bool + if yyl226 > cap(yyv226) { + + yyrl226, yyrt226 = z.DecInferLen(yyl226, z.DecBasicHandle().MaxInitLen, 16) + if yyrt226 { + if yyrl226 <= cap(yyv226) { + yyv226 = yyv226[:yyrl226] + } else { + yyv226 = make([]string, yyrl226) + } + } else { + yyv226 = make([]string, yyrl226) + } + yyc226 = true + yyrr226 = len(yyv226) + } else if yyl226 != len(yyv226) { + yyv226 = yyv226[:yyl226] + yyc226 = true + } + yyj226 := 0 + for ; yyj226 < yyrr226; yyj226++ { + yyh226.ElemContainerState(yyj226) + if r.TryDecodeAsNil() { + yyv226[yyj226] = "" + } else { + yyv226[yyj226] = string(r.DecodeString()) + } + + } + if yyrt226 { + for ; yyj226 < yyl226; yyj226++ { + yyv226 = append(yyv226, "") + yyh226.ElemContainerState(yyj226) + if r.TryDecodeAsNil() { + yyv226[yyj226] = "" + } else { + yyv226[yyj226] = string(r.DecodeString()) + } + + } + } + + } else { + yyj226 := 0 + for ; !r.CheckBreak(); yyj226++ { + + if yyj226 >= len(yyv226) { + yyv226 = append(yyv226, "") // var yyz226 string + yyc226 = true + } + yyh226.ElemContainerState(yyj226) + if yyj226 < len(yyv226) { + if r.TryDecodeAsNil() { + yyv226[yyj226] = "" + } else { + yyv226[yyj226] = string(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj226 < len(yyv226) { + yyv226 = yyv226[:yyj226] + yyc226 = true + } else if yyj226 == 0 && yyv226 == nil { + yyv226 = []string{} + yyc226 = true + } + } + yyh226.End() + if yyc226 { + *v = yyv226 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.go new file mode 100644 index 0000000000..43e931d4b1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types.go @@ -0,0 +1,153 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SubjectAccessReview checks whether or not a user or group can perform an action. +type SubjectAccessReview struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +nonNamespaced=true +// +noMethods=true + +// SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a +// spec.namespace means "in all namespaces". Self is a special case, because users should always be able +// to check whether they can perform an action +type SelfSubjectAccessReview struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. user and groups must be empty + Spec SelfSubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// +genclient=true +// +noMethods=true + +// LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. +// Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions +// checking. +type LocalSubjectAccessReview struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace + // you made the request against. If empty, it is defaulted. + Spec SubjectAccessReviewSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + + // Status is filled in by the server and indicates whether the request is allowed or not + Status SubjectAccessReviewStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface +type ResourceAttributes struct { + // Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces + // "" (empty) is defaulted for LocalSubjectAccessReviews + // "" (empty) is empty for cluster-scoped resources + // "" (empty) means "all" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview + Namespace string `json:"namespace,omitempty" protobuf:"bytes,1,opt,name=namespace"` + // Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. "*" means all. + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` + // Group is the API Group of the Resource. "*" means all. + Group string `json:"group,omitempty" protobuf:"bytes,3,opt,name=group"` + // Version is the API Version of the Resource. "*" means all. + Version string `json:"version,omitempty" protobuf:"bytes,4,opt,name=version"` + // Resource is one of the existing resource types. "*" means all. + Resource string `json:"resource,omitempty" protobuf:"bytes,5,opt,name=resource"` + // Subresource is one of the existing resource types. "" means none. + Subresource string `json:"subresource,omitempty" protobuf:"bytes,6,opt,name=subresource"` + // Name is the name of the resource being requested for a "get" or deleted for a "delete". "" (empty) means all. + Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"` +} + +// NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface +type NonResourceAttributes struct { + // Path is the URL path of the request + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + // Verb is the standard HTTP verb + Verb string `json:"verb,omitempty" protobuf:"bytes,2,opt,name=verb"` +} + +// SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` + + // User is the user you're testing for. + // If you specify "User" but not "Group", then is it interpreted as "What if User were not a member of any groups + User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=verb"` + // Groups is the groups you're testing for. + Groups []string `json:"group,omitempty" protobuf:"bytes,4,rep,name=group"` + // Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer + // it needs a reflection here. + Extra map[string]ExtraValue `json:"extra,omitempty" protobuf:"bytes,5,rep,name=extra"` +} + +// ExtraValue masks the value so protobuf can generate +// +protobuf.nullable=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +type ExtraValue []string + +func (t ExtraValue) String() string { + return fmt.Sprintf("%v", []string(t)) +} + +// SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes +// and NonResourceAuthorizationAttributes must be set +type SelfSubjectAccessReviewSpec struct { + // ResourceAuthorizationAttributes describes information for a resource access request + ResourceAttributes *ResourceAttributes `json:"resourceAttributes,omitempty" protobuf:"bytes,1,opt,name=resourceAttributes"` + // NonResourceAttributes describes information for a non-resource access request + NonResourceAttributes *NonResourceAttributes `json:"nonResourceAttributes,omitempty" protobuf:"bytes,2,opt,name=nonResourceAttributes"` +} + +// SubjectAccessReviewStatus +type SubjectAccessReviewStatus struct { + // Allowed is required. True if the action would be allowed, false otherwise. + Allowed bool `json:"allowed" protobuf:"varint,1,opt,name=allowed"` + // Reason is optional. It indicates why a request was allowed or denied. + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // EvaluationError is an indication that some error occurred during the authorization check. + // It is entirely possible to get an error and be able to continue determine authorization status in spite of it. + // For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request. + EvaluationError string `json:"evaluationError,omitempty" protobuf:"bytes,3,opt,name=evaluationError"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..8e521ba16f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,119 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_LocalSubjectAccessReview = map[string]string{ + "": "LocalSubjectAccessReview checks whether or not a user or group can perform an action in a given namespace. Having a namespace scoped resource makes it much easier to grant namespace scoped policy that includes permissions checking.", + "spec": "Spec holds information about the request being evaluated. spec.namespace must be equal to the namespace you made the request against. If empty, it is defaulted.", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (LocalSubjectAccessReview) SwaggerDoc() map[string]string { + return map_LocalSubjectAccessReview +} + +var map_NonResourceAttributes = map[string]string{ + "": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", + "path": "Path is the URL path of the request", + "verb": "Verb is the standard HTTP verb", +} + +func (NonResourceAttributes) SwaggerDoc() map[string]string { + return map_NonResourceAttributes +} + +var map_ResourceAttributes = map[string]string{ + "": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", + "namespace": "Namespace is the namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces \"\" (empty) is defaulted for LocalSubjectAccessReviews \"\" (empty) is empty for cluster-scoped resources \"\" (empty) means \"all\" for namespace scoped resources from a SubjectAccessReview or SelfSubjectAccessReview", + "verb": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", + "group": "Group is the API Group of the Resource. \"*\" means all.", + "version": "Version is the API Version of the Resource. \"*\" means all.", + "resource": "Resource is one of the existing resource types. \"*\" means all.", + "subresource": "Subresource is one of the existing resource types. \"\" means none.", + "name": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", +} + +func (ResourceAttributes) SwaggerDoc() map[string]string { + return map_ResourceAttributes +} + +var map_SelfSubjectAccessReview = map[string]string{ + "": "SelfSubjectAccessReview checks whether or the current user can perform an action. Not filling in a spec.namespace means \"in all namespaces\". Self is a special case, because users should always be able to check whether they can perform an action", + "spec": "Spec holds information about the request being evaluated. user and groups must be empty", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SelfSubjectAccessReview) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReview +} + +var map_SelfSubjectAccessReviewSpec = map[string]string{ + "": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", +} + +func (SelfSubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SelfSubjectAccessReviewSpec +} + +var map_SubjectAccessReview = map[string]string{ + "": "SubjectAccessReview checks whether or not a user or group can perform an action.", + "spec": "Spec holds information about the request being evaluated", + "status": "Status is filled in by the server and indicates whether the request is allowed or not", +} + +func (SubjectAccessReview) SwaggerDoc() map[string]string { + return map_SubjectAccessReview +} + +var map_SubjectAccessReviewSpec = map[string]string{ + "": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", + "resourceAttributes": "ResourceAuthorizationAttributes describes information for a resource access request", + "nonResourceAttributes": "NonResourceAttributes describes information for a non-resource access request", + "user": "User is the user you're testing for. If you specify \"User\" but not \"Group\", then is it interpreted as \"What if User were not a member of any groups", + "group": "Groups is the groups you're testing for.", + "extra": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", +} + +func (SubjectAccessReviewSpec) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewSpec +} + +var map_SubjectAccessReviewStatus = map[string]string{ + "": "SubjectAccessReviewStatus", + "allowed": "Allowed is required. True if the action would be allowed, false otherwise.", + "reason": "Reason is optional. It indicates why a request was allowed or denied.", + "evaluationError": "EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.", +} + +func (SubjectAccessReviewStatus) SwaggerDoc() map[string]string { + return map_SubjectAccessReviewStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.conversion.go new file mode 100644 index 0000000000..b7da219883 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.conversion.go @@ -0,0 +1,389 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + authorization "k8s.io/client-go/1.5/pkg/apis/authorization" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview, + Convert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview, + Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes, + Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes, + Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes, + Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes, + Convert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview, + Convert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview, + Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec, + Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec, + Convert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview, + Convert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview, + Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec, + Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec, + Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus, + Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus, + ) +} + +func autoConvert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in *LocalSubjectAccessReview, out *authorization.LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_LocalSubjectAccessReview_To_authorization_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in *authorization.LocalSubjectAccessReview, out *LocalSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_LocalSubjectAccessReview_To_v1beta1_LocalSubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +func Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in *NonResourceAttributes, out *authorization.NonResourceAttributes, s conversion.Scope) error { + return autoConvert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(in, out, s) +} + +func autoConvert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + out.Path = in.Path + out.Verb = in.Verb + return nil +} + +func Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in *authorization.NonResourceAttributes, out *NonResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(in, out, s) +} + +func autoConvert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +func Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in *ResourceAttributes, out *authorization.ResourceAttributes, s conversion.Scope) error { + return autoConvert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(in, out, s) +} + +func autoConvert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil +} + +func Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in *authorization.ResourceAttributes, out *ResourceAttributes, s conversion.Scope) error { + return autoConvert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(in, out, s) +} + +func autoConvert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in *SelfSubjectAccessReview, out *authorization.SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_SelfSubjectAccessReview_To_authorization_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in *authorization.SelfSubjectAccessReview, out *SelfSubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReview_To_v1beta1_SelfSubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(authorization.ResourceAttributes) + if err := Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(authorization.NonResourceAttributes) + if err := Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.NonResourceAttributes = nil + } + return nil +} + +func Convert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in *SelfSubjectAccessReviewSpec, out *authorization.SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_SelfSubjectAccessReviewSpec_To_authorization_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + if err := Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + if err := Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.NonResourceAttributes = nil + } + return nil +} + +func Convert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in *authorization.SelfSubjectAccessReviewSpec, out *SelfSubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SelfSubjectAccessReviewSpec_To_v1beta1_SelfSubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in *SubjectAccessReview, out *authorization.SubjectAccessReview, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReview_To_authorization_SubjectAccessReview(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in *authorization.SubjectAccessReview, out *SubjectAccessReview, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReview_To_v1beta1_SubjectAccessReview(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(authorization.ResourceAttributes) + if err := Convert_v1beta1_ResourceAttributes_To_authorization_ResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(authorization.NonResourceAttributes) + if err := Convert_v1beta1_NonResourceAttributes_To_authorization_NonResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.NonResourceAttributes = nil + } + out.User = in.User + out.Groups = in.Groups + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]authorization.ExtraValue, len(*in)) + for key, val := range *in { + newVal := new(authorization.ExtraValue) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&val, newVal, 0); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Extra = nil + } + return nil +} + +func Convert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in *SubjectAccessReviewSpec, out *authorization.SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReviewSpec_To_authorization_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + if err := Convert_authorization_ResourceAttributes_To_v1beta1_ResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + if err := Convert_authorization_NonResourceAttributes_To_v1beta1_NonResourceAttributes(*in, *out, s); err != nil { + return err + } + } else { + out.NonResourceAttributes = nil + } + out.User = in.User + out.Groups = in.Groups + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue, len(*in)) + for key, val := range *in { + newVal := new(ExtraValue) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&val, newVal, 0); err != nil { + return err + } + (*out)[key] = *newVal + } + } else { + out.Extra = nil + } + return nil +} + +func Convert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in *authorization.SubjectAccessReviewSpec, out *SubjectAccessReviewSpec, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewSpec_To_v1beta1_SubjectAccessReviewSpec(in, out, s) +} + +func autoConvert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +func Convert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in *SubjectAccessReviewStatus, out *authorization.SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_v1beta1_SubjectAccessReviewStatus_To_authorization_SubjectAccessReviewStatus(in, out, s) +} + +func autoConvert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil +} + +func Convert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in *authorization.SubjectAccessReviewStatus, out *SubjectAccessReviewStatus, s conversion.Scope) error { + return autoConvert_authorization_SubjectAccessReviewStatus_To_v1beta1_SubjectAccessReviewStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..62f1fef48f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,196 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_LocalSubjectAccessReview, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NonResourceAttributes, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ResourceAttributes, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SelfSubjectAccessReview, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SelfSubjectAccessReviewSpec, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReview, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReviewSpec, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubjectAccessReviewStatus, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + ) +} + +func DeepCopy_v1beta1_LocalSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalSubjectAccessReview) + out := out.(*LocalSubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_NonResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NonResourceAttributes) + out := out.(*NonResourceAttributes) + out.Path = in.Path + out.Verb = in.Verb + return nil + } +} + +func DeepCopy_v1beta1_ResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceAttributes) + out := out.(*ResourceAttributes) + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil + } +} + +func DeepCopy_v1beta1_SelfSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReview) + out := out.(*SelfSubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_SelfSubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReviewSpec) + out := out.(*SelfSubjectAccessReviewSpec) + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } else { + out.NonResourceAttributes = nil + } + return nil + } +} + +func DeepCopy_v1beta1_SubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReview) + out := out.(*SubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_SubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewSpec) + out := out.(*SubjectAccessReviewSpec) + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } else { + out.NonResourceAttributes = nil + } + out.User = in.User + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } else { + out.Extra = nil + } + return nil + } +} + +func DeepCopy_v1beta1_SubjectAccessReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewStatus) + out := out.(*SubjectAccessReviewStatus) + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/zz_generated.deepcopy.go new file mode 100644 index 0000000000..48da2b495c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/authorization/zz_generated.deepcopy.go @@ -0,0 +1,196 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package authorization + +import ( + api "k8s.io/client-go/1.5/pkg/api" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_LocalSubjectAccessReview, InType: reflect.TypeOf(&LocalSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_NonResourceAttributes, InType: reflect.TypeOf(&NonResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_ResourceAttributes, InType: reflect.TypeOf(&ResourceAttributes{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SelfSubjectAccessReview, InType: reflect.TypeOf(&SelfSubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SelfSubjectAccessReviewSpec, InType: reflect.TypeOf(&SelfSubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReview, InType: reflect.TypeOf(&SubjectAccessReview{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReviewSpec, InType: reflect.TypeOf(&SubjectAccessReviewSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_authorization_SubjectAccessReviewStatus, InType: reflect.TypeOf(&SubjectAccessReviewStatus{})}, + ) +} + +func DeepCopy_authorization_LocalSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LocalSubjectAccessReview) + out := out.(*LocalSubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_authorization_NonResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NonResourceAttributes) + out := out.(*NonResourceAttributes) + out.Path = in.Path + out.Verb = in.Verb + return nil + } +} + +func DeepCopy_authorization_ResourceAttributes(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ResourceAttributes) + out := out.(*ResourceAttributes) + out.Namespace = in.Namespace + out.Verb = in.Verb + out.Group = in.Group + out.Version = in.Version + out.Resource = in.Resource + out.Subresource = in.Subresource + out.Name = in.Name + return nil + } +} + +func DeepCopy_authorization_SelfSubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReview) + out := out.(*SelfSubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_authorization_SelfSubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_authorization_SelfSubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SelfSubjectAccessReviewSpec) + out := out.(*SelfSubjectAccessReviewSpec) + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } else { + out.NonResourceAttributes = nil + } + return nil + } +} + +func DeepCopy_authorization_SubjectAccessReview(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReview) + out := out.(*SubjectAccessReview) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_authorization_SubjectAccessReviewSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_authorization_SubjectAccessReviewSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewSpec) + out := out.(*SubjectAccessReviewSpec) + if in.ResourceAttributes != nil { + in, out := &in.ResourceAttributes, &out.ResourceAttributes + *out = new(ResourceAttributes) + **out = **in + } else { + out.ResourceAttributes = nil + } + if in.NonResourceAttributes != nil { + in, out := &in.NonResourceAttributes, &out.NonResourceAttributes + *out = new(NonResourceAttributes) + **out = **in + } else { + out.NonResourceAttributes = nil + } + out.User = in.User + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + if in.Extra != nil { + in, out := &in.Extra, &out.Extra + *out = make(map[string]ExtraValue) + for key, val := range *in { + if newVal, err := c.DeepCopy(&val); err != nil { + return err + } else { + (*out)[key] = *newVal.(*ExtraValue) + } + } + } else { + out.Extra = nil + } + return nil + } +} + +func DeepCopy_authorization_SubjectAccessReviewStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubjectAccessReviewStatus) + out := out.(*SubjectAccessReviewStatus) + out.Allowed = in.Allowed + out.Reason = in.Reason + out.EvaluationError = in.EvaluationError + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/doc.go new file mode 100644 index 0000000000..7550f9d2b2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package autoscaling diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/install/install.go new file mode 100644 index 0000000000..bf0f08f413 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/install/install.go @@ -0,0 +1,41 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/autoscaling" + "k8s.io/client-go/1.5/pkg/apis/autoscaling/v1" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: autoscaling.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/autoscaling", + AddInternalObjectsToScheme: autoscaling.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/register.go new file mode 100644 index 0000000000..9f2e3ccca1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/register.go @@ -0,0 +1,55 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Scale{}, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + &api.ListOptions{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.generated.go new file mode 100644 index 0000000000..d9c9c3fa0a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.generated.go @@ -0,0 +1,2656 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package autoscaling + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg1_unversioned.TypeMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [1]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Replicas != 0 + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(1) + } else { + yynn33 = 0 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym37 := z.DecBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct38 := r.ContainerType() + if yyct38 == codecSelferValueTypeMap1234 { + yyl38 := r.ReadMapStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl38, d) + } + } else if yyct38 == codecSelferValueTypeArray1234 { + yyl38 := r.ReadArrayStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl38, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys39Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys39Slc + var yyhl39 bool = l >= 0 + for yyj39 := 0; ; yyj39++ { + if yyhl39 { + if yyj39 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys39Slc = r.DecodeBytes(yys39Slc, true, true) + yys39 := string(yys39Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys39 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys39) + } // end switch yys39 + } // end for yyj39 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj41 int + var yyb41 bool + var yyhl41 bool = l >= 0 + yyj41++ + if yyhl41 { + yyb41 = yyj41 > l + } else { + yyb41 = r.CheckBreak() + } + if yyb41 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + for { + yyj41++ + if yyhl41 { + yyb41 = yyj41 > l + } else { + yyb41 = r.CheckBreak() + } + if yyb41 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj41-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym43 := z.EncBinary() + _ = yym43 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep44 := !z.EncBinary() + yy2arr44 := z.EncBasicHandle().StructToArray + var yyq44 [2]bool + _, _, _ = yysep44, yyq44, yy2arr44 + const yyr44 bool = false + yyq44[1] = x.Selector != "" + var yynn44 int + if yyr44 || yy2arr44 { + r.EncodeArrayStart(2) + } else { + yynn44 = 1 + for _, b := range yyq44 { + if b { + yynn44++ + } + } + r.EncodeMapStart(yynn44) + yynn44 = 0 + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq44[1] { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq44[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym50 := z.EncBinary() + _ = yym50 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } + } + if yyr44 || yy2arr44 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym51 := z.DecBinary() + _ = yym51 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct52 := r.ContainerType() + if yyct52 == codecSelferValueTypeMap1234 { + yyl52 := r.ReadMapStart() + if yyl52 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl52, d) + } + } else if yyct52 == codecSelferValueTypeArray1234 { + yyl52 := r.ReadArrayStart() + if yyl52 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl52, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys53Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys53Slc + var yyhl53 bool = l >= 0 + for yyj53 := 0; ; yyj53++ { + if yyhl53 { + if yyj53 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys53Slc = r.DecodeBytes(yys53Slc, true, true) + yys53 := string(yys53Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys53 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + x.Selector = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys53) + } // end switch yys53 + } // end for yyj53 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj56 int + var yyb56 bool + var yyhl56 bool = l >= 0 + yyj56++ + if yyhl56 { + yyb56 = yyj56 > l + } else { + yyb56 = r.CheckBreak() + } + if yyb56 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj56++ + if yyhl56 { + yyb56 = yyj56 > l + } else { + yyb56 = r.CheckBreak() + } + if yyb56 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + x.Selector = string(r.DecodeString()) + } + for { + yyj56++ + if yyhl56 { + yyb56 = yyj56 > l + } else { + yyb56 = r.CheckBreak() + } + if yyb56 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj56-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CrossVersionObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym59 := z.EncBinary() + _ = yym59 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep60 := !z.EncBinary() + yy2arr60 := z.EncBasicHandle().StructToArray + var yyq60 [3]bool + _, _, _ = yysep60, yyq60, yy2arr60 + const yyr60 bool = false + yyq60[2] = x.APIVersion != "" + var yynn60 int + if yyr60 || yy2arr60 { + r.EncodeArrayStart(3) + } else { + yynn60 = 2 + for _, b := range yyq60 { + if b { + yynn60++ + } + } + r.EncodeMapStart(yynn60) + yynn60 = 0 + } + if yyr60 || yy2arr60 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym62 := z.EncBinary() + _ = yym62 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym63 := z.EncBinary() + _ = yym63 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr60 || yy2arr60 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym65 := z.EncBinary() + _ = yym65 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym66 := z.EncBinary() + _ = yym66 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr60 || yy2arr60 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq60[2] { + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq60[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym69 := z.EncBinary() + _ = yym69 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr60 || yy2arr60 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CrossVersionObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym70 := z.DecBinary() + _ = yym70 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct71 := r.ContainerType() + if yyct71 == codecSelferValueTypeMap1234 { + yyl71 := r.ReadMapStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl71, d) + } + } else if yyct71 == codecSelferValueTypeArray1234 { + yyl71 := r.ReadArrayStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl71, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys72Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys72Slc + var yyhl72 bool = l >= 0 + for yyj72 := 0; ; yyj72++ { + if yyhl72 { + if yyj72 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys72Slc = r.DecodeBytes(yys72Slc, true, true) + yys72 := string(yys72Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys72 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys72) + } // end switch yys72 + } // end for yyj72 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj76 int + var yyb76 bool + var yyhl76 bool = l >= 0 + yyj76++ + if yyhl76 { + yyb76 = yyj76 > l + } else { + yyb76 = r.CheckBreak() + } + if yyb76 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj76++ + if yyhl76 { + yyb76 = yyj76 > l + } else { + yyb76 = r.CheckBreak() + } + if yyb76 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj76++ + if yyhl76 { + yyb76 = yyj76 > l + } else { + yyb76 = r.CheckBreak() + } + if yyb76 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + for { + yyj76++ + if yyhl76 { + yyb76 = yyj76 > l + } else { + yyb76 = r.CheckBreak() + } + if yyb76 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj76-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym80 := z.EncBinary() + _ = yym80 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep81 := !z.EncBinary() + yy2arr81 := z.EncBasicHandle().StructToArray + var yyq81 [4]bool + _, _, _ = yysep81, yyq81, yy2arr81 + const yyr81 bool = false + yyq81[1] = x.MinReplicas != nil + yyq81[3] = x.TargetCPUUtilizationPercentage != nil + var yynn81 int + if yyr81 || yy2arr81 { + r.EncodeArrayStart(4) + } else { + yynn81 = 2 + for _, b := range yyq81 { + if b { + yynn81++ + } + } + r.EncodeMapStart(yynn81) + yynn81 = 0 + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy83 := &x.ScaleTargetRef + yy83.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleTargetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy84 := &x.ScaleTargetRef + yy84.CodecEncodeSelf(e) + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[1] { + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy86 := *x.MinReplicas + yym87 := z.EncBinary() + _ = yym87 + if false { + } else { + r.EncodeInt(int64(yy86)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq81[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy88 := *x.MinReplicas + yym89 := z.EncBinary() + _ = yym89 + if false { + } else { + r.EncodeInt(int64(yy88)) + } + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym91 := z.EncBinary() + _ = yym91 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym92 := z.EncBinary() + _ = yym92 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[3] { + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy94 := *x.TargetCPUUtilizationPercentage + yym95 := z.EncBinary() + _ = yym95 + if false { + } else { + r.EncodeInt(int64(yy94)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq81[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy96 := *x.TargetCPUUtilizationPercentage + yym97 := z.EncBinary() + _ = yym97 + if false { + } else { + r.EncodeInt(int64(yy96)) + } + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym98 := z.DecBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct99 := r.ContainerType() + if yyct99 == codecSelferValueTypeMap1234 { + yyl99 := r.ReadMapStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl99, d) + } + } else if yyct99 == codecSelferValueTypeArray1234 { + yyl99 := r.ReadArrayStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl99, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys100Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys100Slc + var yyhl100 bool = l >= 0 + for yyj100 := 0; ; yyj100++ { + if yyhl100 { + if yyj100 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys100Slc = r.DecodeBytes(yys100Slc, true, true) + yys100 := string(yys100Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys100 { + case "scaleTargetRef": + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv101 := &x.ScaleTargetRef + yyv101.CodecDecodeSelf(d) + } + case "minReplicas": + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym103 := z.DecBinary() + _ = yym103 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + case "maxReplicas": + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + case "targetCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym106 := z.DecBinary() + _ = yym106 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys100) + } // end switch yys100 + } // end for yyj100 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj107 int + var yyb107 bool + var yyhl107 bool = l >= 0 + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv108 := &x.ScaleTargetRef + yyv108.CodecDecodeSelf(d) + } + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym110 := z.DecBinary() + _ = yym110 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym113 := z.DecBinary() + _ = yym113 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj107-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym114 := z.EncBinary() + _ = yym114 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep115 := !z.EncBinary() + yy2arr115 := z.EncBasicHandle().StructToArray + var yyq115 [5]bool + _, _, _ = yysep115, yyq115, yy2arr115 + const yyr115 bool = false + yyq115[0] = x.ObservedGeneration != nil + yyq115[1] = x.LastScaleTime != nil + yyq115[4] = x.CurrentCPUUtilizationPercentage != nil + var yynn115 int + if yyr115 || yy2arr115 { + r.EncodeArrayStart(5) + } else { + yynn115 = 2 + for _, b := range yyq115 { + if b { + yynn115++ + } + } + r.EncodeMapStart(yynn115) + yynn115 = 0 + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy117 := *x.ObservedGeneration + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + r.EncodeInt(int64(yy117)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy119 := *x.ObservedGeneration + yym120 := z.EncBinary() + _ = yym120 + if false { + } else { + r.EncodeInt(int64(yy119)) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[1] { + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym122 := z.EncBinary() + _ = yym122 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym122 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym122 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScaleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym123 := z.EncBinary() + _ = yym123 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym123 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym123 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym125 := z.EncBinary() + _ = yym125 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym128 := z.EncBinary() + _ = yym128 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym129 := z.EncBinary() + _ = yym129 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[4] { + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy131 := *x.CurrentCPUUtilizationPercentage + yym132 := z.EncBinary() + _ = yym132 + if false { + } else { + r.EncodeInt(int64(yy131)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy133 := *x.CurrentCPUUtilizationPercentage + yym134 := z.EncBinary() + _ = yym134 + if false { + } else { + r.EncodeInt(int64(yy133)) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym135 := z.DecBinary() + _ = yym135 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct136 := r.ContainerType() + if yyct136 == codecSelferValueTypeMap1234 { + yyl136 := r.ReadMapStart() + if yyl136 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl136, d) + } + } else if yyct136 == codecSelferValueTypeArray1234 { + yyl136 := r.ReadArrayStart() + if yyl136 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl136, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys137Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys137Slc + var yyhl137 bool = l >= 0 + for yyj137 := 0; ; yyj137++ { + if yyhl137 { + if yyj137 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys137Slc = r.DecodeBytes(yys137Slc, true, true) + yys137 := string(yys137Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys137 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym139 := z.DecBinary() + _ = yym139 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "lastScaleTime": + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym141 := z.DecBinary() + _ = yym141 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym141 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym141 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + case "desiredReplicas": + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + case "currentCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym145 := z.DecBinary() + _ = yym145 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys137) + } // end switch yys137 + } // end for yyj137 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj146 int + var yyb146 bool + var yyhl146 bool = l >= 0 + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym148 := z.DecBinary() + _ = yym148 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym150 := z.DecBinary() + _ = yym150 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym150 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym150 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym154 := z.DecBinary() + _ = yym154 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj146-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscaler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym155 := z.EncBinary() + _ = yym155 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep156 := !z.EncBinary() + yy2arr156 := z.EncBasicHandle().StructToArray + var yyq156 [5]bool + _, _, _ = yysep156, yyq156, yy2arr156 + const yyr156 bool = false + yyq156[0] = x.Kind != "" + yyq156[1] = x.APIVersion != "" + yyq156[2] = true + yyq156[3] = true + yyq156[4] = true + var yynn156 int + if yyr156 || yy2arr156 { + r.EncodeArrayStart(5) + } else { + yynn156 = 0 + for _, b := range yyq156 { + if b { + yynn156++ + } + } + r.EncodeMapStart(yynn156) + yynn156 = 0 + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq156[0] { + yym158 := z.EncBinary() + _ = yym158 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq156[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq156[1] { + yym161 := z.EncBinary() + _ = yym161 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq156[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym162 := z.EncBinary() + _ = yym162 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq156[2] { + yy164 := &x.ObjectMeta + yy164.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq156[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy165 := &x.ObjectMeta + yy165.CodecEncodeSelf(e) + } + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq156[3] { + yy167 := &x.Spec + yy167.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq156[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy168 := &x.Spec + yy168.CodecEncodeSelf(e) + } + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq156[4] { + yy170 := &x.Status + yy170.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq156[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy171 := &x.Status + yy171.CodecEncodeSelf(e) + } + } + if yyr156 || yy2arr156 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscaler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym172 := z.DecBinary() + _ = yym172 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct173 := r.ContainerType() + if yyct173 == codecSelferValueTypeMap1234 { + yyl173 := r.ReadMapStart() + if yyl173 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl173, d) + } + } else if yyct173 == codecSelferValueTypeArray1234 { + yyl173 := r.ReadArrayStart() + if yyl173 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl173, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys174Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys174Slc + var yyhl174 bool = l >= 0 + for yyj174 := 0; ; yyj174++ { + if yyhl174 { + if yyj174 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys174Slc = r.DecodeBytes(yys174Slc, true, true) + yys174 := string(yys174Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys174 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv177 := &x.ObjectMeta + yyv177.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv178 := &x.Spec + yyv178.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv179 := &x.Status + yyv179.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys174) + } // end switch yys174 + } // end for yyj174 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj180 int + var yyb180 bool + var yyhl180 bool = l >= 0 + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv183 := &x.ObjectMeta + yyv183.CodecDecodeSelf(d) + } + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv184 := &x.Spec + yyv184.CodecDecodeSelf(d) + } + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv185 := &x.Status + yyv185.CodecDecodeSelf(d) + } + for { + yyj180++ + if yyhl180 { + yyb180 = yyj180 > l + } else { + yyb180 = r.CheckBreak() + } + if yyb180 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj180-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym186 := z.EncBinary() + _ = yym186 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep187 := !z.EncBinary() + yy2arr187 := z.EncBasicHandle().StructToArray + var yyq187 [4]bool + _, _, _ = yysep187, yyq187, yy2arr187 + const yyr187 bool = false + yyq187[0] = x.Kind != "" + yyq187[1] = x.APIVersion != "" + yyq187[2] = true + var yynn187 int + if yyr187 || yy2arr187 { + r.EncodeArrayStart(4) + } else { + yynn187 = 1 + for _, b := range yyq187 { + if b { + yynn187++ + } + } + r.EncodeMapStart(yynn187) + yynn187 = 0 + } + if yyr187 || yy2arr187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq187[0] { + yym189 := z.EncBinary() + _ = yym189 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq187[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym190 := z.EncBinary() + _ = yym190 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr187 || yy2arr187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq187[1] { + yym192 := z.EncBinary() + _ = yym192 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq187[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym193 := z.EncBinary() + _ = yym193 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr187 || yy2arr187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq187[2] { + yy195 := &x.ListMeta + yym196 := z.EncBinary() + _ = yym196 + if false { + } else if z.HasExtensions() && z.EncExt(yy195) { + } else { + z.EncFallback(yy195) + } + } else { + r.EncodeNil() + } + } else { + if yyq187[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy197 := &x.ListMeta + yym198 := z.EncBinary() + _ = yym198 + if false { + } else if z.HasExtensions() && z.EncExt(yy197) { + } else { + z.EncFallback(yy197) + } + } + } + if yyr187 || yy2arr187 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym200 := z.EncBinary() + _ = yym200 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym201 := z.EncBinary() + _ = yym201 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } + if yyr187 || yy2arr187 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym202 := z.DecBinary() + _ = yym202 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct203 := r.ContainerType() + if yyct203 == codecSelferValueTypeMap1234 { + yyl203 := r.ReadMapStart() + if yyl203 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl203, d) + } + } else if yyct203 == codecSelferValueTypeArray1234 { + yyl203 := r.ReadArrayStart() + if yyl203 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl203, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys204Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys204Slc + var yyhl204 bool = l >= 0 + for yyj204 := 0; ; yyj204++ { + if yyhl204 { + if yyj204 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys204Slc = r.DecodeBytes(yys204Slc, true, true) + yys204 := string(yys204Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys204 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv207 := &x.ListMeta + yym208 := z.DecBinary() + _ = yym208 + if false { + } else if z.HasExtensions() && z.DecExt(yyv207) { + } else { + z.DecFallback(yyv207, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv209 := &x.Items + yym210 := z.DecBinary() + _ = yym210 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv209), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys204) + } // end switch yys204 + } // end for yyj204 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj211 int + var yyb211 bool + var yyhl211 bool = l >= 0 + yyj211++ + if yyhl211 { + yyb211 = yyj211 > l + } else { + yyb211 = r.CheckBreak() + } + if yyb211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj211++ + if yyhl211 { + yyb211 = yyj211 > l + } else { + yyb211 = r.CheckBreak() + } + if yyb211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj211++ + if yyhl211 { + yyb211 = yyj211 > l + } else { + yyb211 = r.CheckBreak() + } + if yyb211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv214 := &x.ListMeta + yym215 := z.DecBinary() + _ = yym215 + if false { + } else if z.HasExtensions() && z.DecExt(yyv214) { + } else { + z.DecFallback(yyv214, false) + } + } + yyj211++ + if yyhl211 { + yyb211 = yyj211 > l + } else { + yyb211 = r.CheckBreak() + } + if yyb211 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv216 := &x.Items + yym217 := z.DecBinary() + _ = yym217 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv216), d) + } + } + for { + yyj211++ + if yyhl211 { + yyb211 = yyj211 > l + } else { + yyb211 = r.CheckBreak() + } + if yyb211 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj211-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscaler(v []HorizontalPodAutoscaler, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv218 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy219 := &yyv218 + yy219.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscaler(v *[]HorizontalPodAutoscaler, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv220 := *v + yyh220, yyl220 := z.DecSliceHelperStart() + var yyc220 bool + if yyl220 == 0 { + if yyv220 == nil { + yyv220 = []HorizontalPodAutoscaler{} + yyc220 = true + } else if len(yyv220) != 0 { + yyv220 = yyv220[:0] + yyc220 = true + } + } else if yyl220 > 0 { + var yyrr220, yyrl220 int + var yyrt220 bool + if yyl220 > cap(yyv220) { + + yyrg220 := len(yyv220) > 0 + yyv2220 := yyv220 + yyrl220, yyrt220 = z.DecInferLen(yyl220, z.DecBasicHandle().MaxInitLen, 360) + if yyrt220 { + if yyrl220 <= cap(yyv220) { + yyv220 = yyv220[:yyrl220] + } else { + yyv220 = make([]HorizontalPodAutoscaler, yyrl220) + } + } else { + yyv220 = make([]HorizontalPodAutoscaler, yyrl220) + } + yyc220 = true + yyrr220 = len(yyv220) + if yyrg220 { + copy(yyv220, yyv2220) + } + } else if yyl220 != len(yyv220) { + yyv220 = yyv220[:yyl220] + yyc220 = true + } + yyj220 := 0 + for ; yyj220 < yyrr220; yyj220++ { + yyh220.ElemContainerState(yyj220) + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv221 := &yyv220[yyj220] + yyv221.CodecDecodeSelf(d) + } + + } + if yyrt220 { + for ; yyj220 < yyl220; yyj220++ { + yyv220 = append(yyv220, HorizontalPodAutoscaler{}) + yyh220.ElemContainerState(yyj220) + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv222 := &yyv220[yyj220] + yyv222.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj220 := 0 + for ; !r.CheckBreak(); yyj220++ { + + if yyj220 >= len(yyv220) { + yyv220 = append(yyv220, HorizontalPodAutoscaler{}) // var yyz220 HorizontalPodAutoscaler + yyc220 = true + } + yyh220.ElemContainerState(yyj220) + if yyj220 < len(yyv220) { + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv223 := &yyv220[yyj220] + yyv223.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj220 < len(yyv220) { + yyv220 = yyv220[:yyj220] + yyc220 = true + } else if yyj220 == 0 && yyv220 == nil { + yyv220 = []HorizontalPodAutoscaler{} + yyc220 = true + } + } + yyh220.End() + if yyc220 { + *v = yyv220 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.go new file mode 100644 index 0000000000..183ca49346 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/types.go @@ -0,0 +1,120 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package autoscaling + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// Scale represents a scaling request for a resource. +type Scale struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + api.ObjectMeta `json:"metadata,omitempty"` + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec ScaleSpec `json:"spec,omitempty"` + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + Status ScaleStatus `json:"status,omitempty"` +} + +// ScaleSpec describes the attributes of a scale subresource. +type ScaleSpec struct { + // desired number of instances for the scaled object. + Replicas int32 `json:"replicas,omitempty"` +} + +// ScaleStatus represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas"` + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector string `json:"selector,omitempty"` +} + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` +} + +// specification of a horizontal pod autoscaler. +type HorizontalPodAutoscalerSpec struct { + // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption + // and will set the desired number of pods by using its Scale subresource. + ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef"` + // lower limit for the number of pods that can be set by the autoscaler, default 1. + MinReplicas *int32 `json:"minReplicas,omitempty"` + // upper limit for the number of pods that can be set by the autoscaler. It cannot be smaller than MinReplicas. + MaxReplicas int32 `json:"maxReplicas"` + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified the default autoscaling policy will be used. + TargetCPUUtilizationPercentage *int32 `json:"targetCPUUtilizationPercentage,omitempty"` +} + +// current status of a horizontal pod autoscaler +type HorizontalPodAutoscalerStatus struct { + // most recent generation observed by this autoscaler. + ObservedGeneration *int64 `json:"observedGeneration,omitempty"` + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + LastScaleTime *unversioned.Time `json:"lastScaleTime,omitempty"` + + // current number of replicas of pods managed by this autoscaler. + CurrentReplicas int32 `json:"currentReplicas"` + + // desired number of replicas of pods managed by this autoscaler. + DesiredReplicas int32 `json:"desiredReplicas"` + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty"` +} + +// +genclient=true + +// configuration of a horizontal pod autoscaler. +type HorizontalPodAutoscaler struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty"` + + // current information about the autoscaler. + Status HorizontalPodAutoscalerStatus `json:"status,omitempty"` +} + +// list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + // list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/defaults.go new file mode 100644 index 0000000000..38ee1b1de3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/defaults.go @@ -0,0 +1,34 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_HorizontalPodAutoscaler, + ) +} + +func SetDefaults_HorizontalPodAutoscaler(obj *HorizontalPodAutoscaler) { + if obj.Spec.MinReplicas == nil { + minReplicas := int32(1) + obj.Spec.MinReplicas = &minReplicas + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/doc.go new file mode 100644 index 0000000000..f89c5c89c1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/autoscaling +// +k8s:openapi-gen=true + +package v1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.pb.go new file mode 100644 index 0000000000..04f08e9930 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.pb.go @@ -0,0 +1,1786 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/autoscaling/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/autoscaling/v1/generated.proto + + It has these top-level messages: + CrossVersionObjectReference + HorizontalPodAutoscaler + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + Scale + ScaleSpec + ScaleStatus +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *CrossVersionObjectReference) Reset() { *m = CrossVersionObjectReference{} } +func (*CrossVersionObjectReference) ProtoMessage() {} +func (*CrossVersionObjectReference) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *HorizontalPodAutoscaler) Reset() { *m = HorizontalPodAutoscaler{} } +func (*HorizontalPodAutoscaler) ProtoMessage() {} +func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func init() { + proto.RegisterType((*CrossVersionObjectReference)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.CrossVersionObjectReference") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*Scale)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.autoscaling.v1.ScaleStatus") +} +func (m *CrossVersionObjectReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CrossVersionObjectReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + return i, nil +} + +func (m *HorizontalPodAutoscaler) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscaler) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *HorizontalPodAutoscalerList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n4, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscalerSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ScaleTargetRef.Size())) + n5, err := m.ScaleTargetRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + if m.MinReplicas != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.MinReplicas)) + } + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.MaxReplicas)) + if m.TargetCPUUtilizationPercentage != nil { + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.TargetCPUUtilizationPercentage)) + } + return i, nil +} + +func (m *HorizontalPodAutoscalerStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastScaleTime.Size())) + n6, err := m.LastScaleTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + } + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CurrentReplicas)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.CurrentCPUUtilizationPercentage)) + } + return i, nil +} + +func (m *Scale) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Scale) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n7, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n8, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n9, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + return i, nil +} + +func (m *ScaleSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScaleSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + return i, nil +} + +func (m *ScaleStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScaleStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Selector))) + i += copy(data[i:], m.Selector) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *CrossVersionObjectReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscaler) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscalerSpec) Size() (n int) { + var l int + _ = l + l = m.ScaleTargetRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.MinReplicas != nil { + n += 1 + sovGenerated(uint64(*m.MinReplicas)) + } + n += 1 + sovGenerated(uint64(m.MaxReplicas)) + if m.TargetCPUUtilizationPercentage != nil { + n += 1 + sovGenerated(uint64(*m.TargetCPUUtilizationPercentage)) + } + return n +} + +func (m *HorizontalPodAutoscalerStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + l = m.LastScaleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + n += 1 + sovGenerated(uint64(*m.CurrentCPUUtilizationPercentage)) + } + return n +} + +func (m *Scale) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleSpec) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func (m *ScaleStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + l = len(m.Selector) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CrossVersionObjectReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CrossVersionObjectReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscaler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscaler{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "HorizontalPodAutoscalerSpec", "HorizontalPodAutoscalerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "HorizontalPodAutoscalerStatus", "HorizontalPodAutoscalerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "HorizontalPodAutoscaler", "HorizontalPodAutoscaler", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerSpec{`, + `ScaleTargetRef:` + strings.Replace(strings.Replace(this.ScaleTargetRef.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`, + `MinReplicas:` + valueToStringGenerated(this.MinReplicas) + `,`, + `MaxReplicas:` + fmt.Sprintf("%v", this.MaxReplicas) + `,`, + `TargetCPUUtilizationPercentage:` + valueToStringGenerated(this.TargetCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `LastScaleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScaleTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentCPUUtilizationPercentage:` + valueToStringGenerated(this.CurrentCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *Scale) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Scale{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScaleSpec", "ScaleSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScaleStatus", "ScaleStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleSpec{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `Selector:` + fmt.Sprintf("%v", this.Selector) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CrossVersionObjectReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CrossVersionObjectReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CrossVersionObjectReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscaler) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, HorizontalPodAutoscaler{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleTargetRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ScaleTargetRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReplicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.MinReplicas = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicas", wireType) + } + m.MaxReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.MaxReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetCPUUtilizationPercentage", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TargetCPUUtilizationPercentage = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScaleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScaleTime == nil { + m.LastScaleTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.LastScaleTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentReplicas", wireType) + } + m.CurrentReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.CurrentReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredReplicas", wireType) + } + m.DesiredReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.DesiredReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentCPUUtilizationPercentage", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CurrentCPUUtilizationPercentage = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Scale) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Scale: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Scale: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Selector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 823 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x55, 0xcf, 0x4f, 0xe3, 0x46, + 0x14, 0x26, 0xbf, 0x10, 0x8c, 0x0b, 0xb4, 0x53, 0x09, 0xa2, 0x54, 0x4d, 0x90, 0xdb, 0x03, 0x55, + 0xc1, 0x56, 0xa2, 0x52, 0x95, 0x23, 0x4e, 0x45, 0x41, 0x85, 0x12, 0x0d, 0x3f, 0x54, 0x55, 0x6a, + 0x25, 0xc7, 0x1e, 0xcc, 0x90, 0xc4, 0x8e, 0x66, 0xc6, 0x51, 0xc5, 0xa9, 0xa7, 0x9e, 0x7b, 0xe9, + 0xa1, 0xff, 0x4e, 0x4f, 0xdc, 0xca, 0xb1, 0x27, 0xb4, 0xcb, 0x6a, 0xff, 0x8b, 0x3d, 0xec, 0x78, + 0x3c, 0x38, 0x4e, 0x82, 0x03, 0xd1, 0xee, 0x1e, 0x46, 0xca, 0xcc, 0x7c, 0xdf, 0xf7, 0xde, 0x7c, + 0xef, 0xf9, 0x05, 0xec, 0x74, 0xbe, 0x63, 0x06, 0x09, 0xcc, 0x4e, 0xd8, 0xc6, 0xd4, 0xc7, 0x1c, + 0x33, 0xb3, 0xdf, 0xf1, 0x4c, 0xbb, 0x4f, 0x98, 0x69, 0x87, 0x3c, 0x60, 0x8e, 0xdd, 0x25, 0xbe, + 0x67, 0x0e, 0xea, 0xa6, 0x87, 0x7d, 0x4c, 0x6d, 0x8e, 0x5d, 0xa3, 0x4f, 0x03, 0x1e, 0xc0, 0xaf, + 0x62, 0xaa, 0x31, 0xa4, 0x1a, 0x82, 0x6a, 0x44, 0x54, 0x23, 0x45, 0x35, 0x06, 0xf5, 0xca, 0x96, + 0x47, 0xf8, 0x65, 0xd8, 0x36, 0x9c, 0xa0, 0x67, 0x7a, 0x81, 0x17, 0x98, 0x52, 0xa1, 0x1d, 0x5e, + 0xc8, 0x9d, 0xdc, 0xc8, 0x5f, 0xb1, 0x72, 0xa5, 0x91, 0x99, 0x94, 0x49, 0x31, 0x0b, 0x42, 0xea, + 0xe0, 0xf1, 0x6c, 0x2a, 0xdb, 0xd9, 0x9c, 0xd0, 0x1f, 0x60, 0xca, 0x48, 0xe0, 0x63, 0x77, 0x82, + 0xb6, 0x99, 0x4d, 0x9b, 0x7c, 0x72, 0x65, 0xeb, 0x71, 0x34, 0x0d, 0x7d, 0x4e, 0x7a, 0x93, 0x39, + 0xd5, 0x1f, 0x87, 0x87, 0x9c, 0x74, 0x4d, 0xe2, 0x73, 0xc6, 0xe9, 0x38, 0x45, 0xff, 0x3b, 0x07, + 0x3e, 0x6b, 0xd2, 0x80, 0xb1, 0xf3, 0x38, 0xe5, 0xe3, 0xf6, 0x15, 0x76, 0x38, 0xc2, 0x17, 0x98, + 0x62, 0xdf, 0xc1, 0x70, 0x1d, 0x14, 0x3b, 0xc4, 0x77, 0xcb, 0xb9, 0xf5, 0xdc, 0xc6, 0xa2, 0xf5, + 0xd1, 0xcd, 0x5d, 0x6d, 0xee, 0xfe, 0xae, 0x56, 0xfc, 0x51, 0x9c, 0x21, 0x79, 0x13, 0x21, 0x7c, + 0xbb, 0x87, 0xcb, 0xf9, 0x51, 0xc4, 0x4f, 0xe2, 0x0c, 0xc9, 0x1b, 0xd8, 0x00, 0x40, 0xbc, 0x4f, + 0x05, 0x28, 0x17, 0x24, 0x0e, 0x2a, 0x1c, 0xd8, 0x6d, 0x1d, 0xa8, 0x1b, 0x94, 0x42, 0xe9, 0xff, + 0xe5, 0xc1, 0xda, 0x7e, 0x40, 0xc9, 0x75, 0xe0, 0x73, 0xbb, 0xdb, 0x0a, 0xdc, 0x5d, 0x55, 0x61, + 0x4c, 0xe1, 0xcf, 0x60, 0xa1, 0x87, 0xb9, 0xed, 0xda, 0xdc, 0x96, 0x79, 0x69, 0x8d, 0x0d, 0x23, + 0xb3, 0x37, 0x44, 0x3b, 0x18, 0xf1, 0xa3, 0x8e, 0x04, 0x67, 0x18, 0x77, 0x78, 0x86, 0x12, 0x35, + 0x78, 0x09, 0x8a, 0xac, 0x8f, 0x1d, 0xf9, 0x16, 0xad, 0xb1, 0x67, 0x3c, 0xbb, 0xe3, 0x8c, 0x8c, + 0x5c, 0x4f, 0x84, 0xda, 0xd0, 0x93, 0x68, 0x87, 0x64, 0x04, 0xd8, 0x07, 0xf3, 0x8c, 0xdb, 0x3c, + 0x64, 0xd2, 0x0f, 0xad, 0xb1, 0xff, 0x1e, 0x62, 0x49, 0x3d, 0x6b, 0x59, 0x45, 0x9b, 0x8f, 0xf7, + 0x48, 0xc5, 0xd1, 0x5f, 0x8b, 0x4a, 0x67, 0x30, 0x0f, 0x09, 0xe3, 0xf0, 0xd7, 0x09, 0x57, 0xcd, + 0x29, 0xae, 0xa6, 0x7a, 0xdc, 0x88, 0xe8, 0xd2, 0xdc, 0x8f, 0x55, 0xe8, 0x85, 0x87, 0x93, 0x94, + 0xb5, 0x1e, 0x28, 0x11, 0x8e, 0x7b, 0x4c, 0x78, 0x5b, 0x10, 0xda, 0xd6, 0xbb, 0xbf, 0xd7, 0x5a, + 0x52, 0xe1, 0x4a, 0x07, 0x91, 0x30, 0x8a, 0xf5, 0xf5, 0x37, 0xf9, 0xcc, 0x77, 0x46, 0xfe, 0xc3, + 0x3f, 0x73, 0x60, 0x59, 0x6e, 0x4f, 0x6d, 0xea, 0xe1, 0xa8, 0xd5, 0xd5, 0x73, 0x67, 0x29, 0xf7, + 0x94, 0x4f, 0xc6, 0x5a, 0x55, 0x69, 0x2d, 0x9f, 0x8c, 0x44, 0x41, 0x63, 0x51, 0x61, 0x1d, 0x68, + 0x3d, 0xe2, 0x23, 0xdc, 0xef, 0x12, 0xc7, 0x66, 0xb2, 0xe7, 0x4a, 0xd6, 0x8a, 0x20, 0x6a, 0x47, + 0xc3, 0x63, 0x94, 0xc6, 0xc0, 0x6d, 0x41, 0xb1, 0x7f, 0x4f, 0x28, 0x05, 0x49, 0xf9, 0x54, 0xc5, + 0xd3, 0x8e, 0x86, 0x57, 0x28, 0x8d, 0x83, 0x57, 0xa0, 0xca, 0x65, 0xd8, 0x66, 0xeb, 0xec, 0x4c, + 0x0c, 0x03, 0x72, 0x6d, 0x73, 0x91, 0x78, 0x0b, 0x8b, 0xc1, 0x26, 0x4c, 0xf2, 0x70, 0xb9, 0x28, + 0x95, 0x74, 0xa1, 0x52, 0x3d, 0x9d, 0x8a, 0x44, 0x4f, 0x28, 0xe9, 0xff, 0x16, 0xc0, 0xe7, 0x53, + 0x1b, 0x14, 0xee, 0x01, 0x18, 0xb4, 0x19, 0xa6, 0x03, 0xec, 0xfe, 0x10, 0x4f, 0xa3, 0x68, 0x2c, + 0x44, 0x35, 0x28, 0x58, 0xab, 0x22, 0x03, 0x78, 0x3c, 0x71, 0x8b, 0x1e, 0x61, 0x40, 0x17, 0x2c, + 0x75, 0x6d, 0xc6, 0x63, 0x97, 0x89, 0x9a, 0x40, 0x5a, 0xe3, 0xeb, 0x67, 0x76, 0x6d, 0x44, 0xb1, + 0x3e, 0x11, 0xf1, 0x96, 0x0e, 0xd3, 0x2a, 0x68, 0x54, 0x14, 0xee, 0x82, 0x15, 0x27, 0xa4, 0xa2, + 0xb2, 0x7c, 0xcc, 0xf6, 0x35, 0x65, 0xfb, 0x4a, 0x73, 0xf4, 0x1a, 0x8d, 0xe3, 0x23, 0x09, 0x17, + 0x33, 0x42, 0xb1, 0x9b, 0x48, 0x14, 0x47, 0x25, 0xbe, 0x1f, 0xbd, 0x46, 0xe3, 0x78, 0xd8, 0x03, + 0x35, 0xa5, 0x9a, 0x59, 0xc2, 0x92, 0x94, 0xfc, 0x42, 0xc8, 0xd5, 0x9a, 0xd3, 0xa1, 0xe8, 0x29, + 0x2d, 0xfd, 0x9f, 0x3c, 0x28, 0x49, 0x0b, 0x3e, 0xe0, 0xac, 0x3d, 0x1f, 0x99, 0xb5, 0xdf, 0xcc, + 0xf0, 0xf1, 0xc9, 0xcc, 0x32, 0x27, 0xeb, 0x6f, 0x63, 0x93, 0xf5, 0xdb, 0x99, 0x95, 0xa7, 0xcf, + 0xd1, 0x1d, 0xb0, 0x98, 0x24, 0x00, 0x37, 0xc1, 0x02, 0x7d, 0xa8, 0x69, 0x4e, 0x16, 0x20, 0x99, + 0x81, 0x49, 0x31, 0x13, 0x84, 0x4e, 0x80, 0x96, 0x8a, 0x30, 0x1b, 0x39, 0x42, 0x33, 0xdc, 0x15, + 0x3e, 0x06, 0x54, 0xfd, 0xd7, 0x26, 0xe8, 0x13, 0x75, 0x8e, 0x12, 0x84, 0xf5, 0xe5, 0xcd, 0xcb, + 0xea, 0xdc, 0xad, 0x58, 0xff, 0x8b, 0xf5, 0xc7, 0x7d, 0x35, 0x77, 0x23, 0xd6, 0xad, 0x58, 0x2f, + 0xc4, 0xfa, 0xeb, 0x55, 0x75, 0xee, 0x97, 0xfc, 0xa0, 0xfe, 0x36, 0x00, 0x00, 0xff, 0xff, 0x45, + 0xec, 0x9a, 0x15, 0x8e, 0x09, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.proto new file mode 100644 index 0000000000..891aff3b52 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/generated.proto @@ -0,0 +1,132 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.autoscaling.v1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +message CrossVersionObjectReference { + // Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" + optional string kind = 1; + + // Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 2; + + // API version of the referent + optional string apiVersion = 3; +} + +// configuration of a horizontal pod autoscaler. +message HorizontalPodAutoscaler { + // Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + optional HorizontalPodAutoscalerSpec spec = 2; + + // current information about the autoscaler. + optional HorizontalPodAutoscalerStatus status = 3; +} + +// list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // Standard list metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // list of horizontal pod autoscaler objects. + repeated HorizontalPodAutoscaler items = 2; +} + +// specification of a horizontal pod autoscaler. +message HorizontalPodAutoscalerSpec { + // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption + // and will set the desired number of pods by using its Scale subresource. + optional CrossVersionObjectReference scaleTargetRef = 1; + + // lower limit for the number of pods that can be set by the autoscaler, default 1. + optional int32 minReplicas = 2; + + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + optional int32 maxReplicas = 3; + + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified the default autoscaling policy will be used. + optional int32 targetCPUUtilizationPercentage = 4; +} + +// current status of a horizontal pod autoscaler +message HorizontalPodAutoscalerStatus { + // most recent generation observed by this autoscaler. + optional int64 observedGeneration = 1; + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastScaleTime = 2; + + // current number of replicas of pods managed by this autoscaler. + optional int32 currentReplicas = 3; + + // desired number of replicas of pods managed by this autoscaler. + optional int32 desiredReplicas = 4; + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + optional int32 currentCPUUtilizationPercentage = 5; +} + +// Scale represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + optional ScaleSpec spec = 2; + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + optional ScaleStatus status = 3; +} + +// ScaleSpec describes the attributes of a scale subresource. +message ScaleSpec { + // desired number of instances for the scaled object. + optional int32 replicas = 1; +} + +// ScaleStatus represents the current status of a scale subresource. +message ScaleStatus { + // actual number of observed instances of the scaled object. + optional int32 replicas = 1; + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info about label selectors: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional string selector = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/register.go new file mode 100644 index 0000000000..c32e44b6e7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/register.go @@ -0,0 +1,48 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "autoscaling" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + &Scale{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.generated.go new file mode 100644 index 0000000000..ef0d82d5c2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.generated.go @@ -0,0 +1,2656 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_unversioned.Time + var v1 pkg2_v1.ObjectMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *CrossVersionObjectReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [3]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[2] = x.APIVersion != "" + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(3) + } else { + yynn2 = 2 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym11 := z.EncBinary() + _ = yym11 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CrossVersionObjectReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym12 := z.DecBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct13 := r.ContainerType() + if yyct13 == codecSelferValueTypeMap1234 { + yyl13 := r.ReadMapStart() + if yyl13 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl13, d) + } + } else if yyct13 == codecSelferValueTypeArray1234 { + yyl13 := r.ReadArrayStart() + if yyl13 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl13, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys14Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys14Slc + var yyhl14 bool = l >= 0 + for yyj14 := 0; ; yyj14++ { + if yyhl14 { + if yyj14 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys14Slc = r.DecodeBytes(yys14Slc, true, true) + yys14 := string(yys14Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys14 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys14) + } // end switch yys14 + } // end for yyj14 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CrossVersionObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep23 := !z.EncBinary() + yy2arr23 := z.EncBasicHandle().StructToArray + var yyq23 [4]bool + _, _, _ = yysep23, yyq23, yy2arr23 + const yyr23 bool = false + yyq23[1] = x.MinReplicas != nil + yyq23[3] = x.TargetCPUUtilizationPercentage != nil + var yynn23 int + if yyr23 || yy2arr23 { + r.EncodeArrayStart(4) + } else { + yynn23 = 2 + for _, b := range yyq23 { + if b { + yynn23++ + } + } + r.EncodeMapStart(yynn23) + yynn23 = 0 + } + if yyr23 || yy2arr23 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy25 := &x.ScaleTargetRef + yy25.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleTargetRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy26 := &x.ScaleTargetRef + yy26.CodecEncodeSelf(e) + } + if yyr23 || yy2arr23 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq23[1] { + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy28 := *x.MinReplicas + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(yy28)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq23[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy30 := *x.MinReplicas + yym31 := z.EncBinary() + _ = yym31 + if false { + } else { + r.EncodeInt(int64(yy30)) + } + } + } + } + if yyr23 || yy2arr23 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } + if yyr23 || yy2arr23 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq23[3] { + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy36 := *x.TargetCPUUtilizationPercentage + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeInt(int64(yy36)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq23[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TargetCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy38 := *x.TargetCPUUtilizationPercentage + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeInt(int64(yy38)) + } + } + } + } + if yyr23 || yy2arr23 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym40 := z.DecBinary() + _ = yym40 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct41 := r.ContainerType() + if yyct41 == codecSelferValueTypeMap1234 { + yyl41 := r.ReadMapStart() + if yyl41 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl41, d) + } + } else if yyct41 == codecSelferValueTypeArray1234 { + yyl41 := r.ReadArrayStart() + if yyl41 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl41, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys42Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys42Slc + var yyhl42 bool = l >= 0 + for yyj42 := 0; ; yyj42++ { + if yyhl42 { + if yyj42 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys42Slc = r.DecodeBytes(yys42Slc, true, true) + yys42 := string(yys42Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys42 { + case "scaleTargetRef": + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv43 := &x.ScaleTargetRef + yyv43.CodecDecodeSelf(d) + } + case "minReplicas": + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym45 := z.DecBinary() + _ = yym45 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + case "maxReplicas": + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + case "targetCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym48 := z.DecBinary() + _ = yym48 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys42) + } // end switch yys42 + } // end for yyj42 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj49 int + var yyb49 bool + var yyhl49 bool = l >= 0 + yyj49++ + if yyhl49 { + yyb49 = yyj49 > l + } else { + yyb49 = r.CheckBreak() + } + if yyb49 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ScaleTargetRef = CrossVersionObjectReference{} + } else { + yyv50 := &x.ScaleTargetRef + yyv50.CodecDecodeSelf(d) + } + yyj49++ + if yyhl49 { + yyb49 = yyj49 > l + } else { + yyb49 = r.CheckBreak() + } + if yyb49 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym52 := z.DecBinary() + _ = yym52 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + yyj49++ + if yyhl49 { + yyb49 = yyj49 > l + } else { + yyb49 = r.CheckBreak() + } + if yyb49 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + yyj49++ + if yyhl49 { + yyb49 = yyj49 > l + } else { + yyb49 = r.CheckBreak() + } + if yyb49 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TargetCPUUtilizationPercentage != nil { + x.TargetCPUUtilizationPercentage = nil + } + } else { + if x.TargetCPUUtilizationPercentage == nil { + x.TargetCPUUtilizationPercentage = new(int32) + } + yym55 := z.DecBinary() + _ = yym55 + if false { + } else { + *((*int32)(x.TargetCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj49++ + if yyhl49 { + yyb49 = yyj49 > l + } else { + yyb49 = r.CheckBreak() + } + if yyb49 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj49-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym56 := z.EncBinary() + _ = yym56 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep57 := !z.EncBinary() + yy2arr57 := z.EncBasicHandle().StructToArray + var yyq57 [5]bool + _, _, _ = yysep57, yyq57, yy2arr57 + const yyr57 bool = false + yyq57[0] = x.ObservedGeneration != nil + yyq57[1] = x.LastScaleTime != nil + yyq57[4] = x.CurrentCPUUtilizationPercentage != nil + var yynn57 int + if yyr57 || yy2arr57 { + r.EncodeArrayStart(5) + } else { + yynn57 = 2 + for _, b := range yyq57 { + if b { + yynn57++ + } + } + r.EncodeMapStart(yynn57) + yynn57 = 0 + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq57[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy59 := *x.ObservedGeneration + yym60 := z.EncBinary() + _ = yym60 + if false { + } else { + r.EncodeInt(int64(yy59)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq57[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy61 := *x.ObservedGeneration + yym62 := z.EncBinary() + _ = yym62 + if false { + } else { + r.EncodeInt(int64(yy61)) + } + } + } + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq57[1] { + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym64 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym64 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq57[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScaleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym65 := z.EncBinary() + _ = yym65 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym65 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym65 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq57[4] { + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy73 := *x.CurrentCPUUtilizationPercentage + yym74 := z.EncBinary() + _ = yym74 + if false { + } else { + r.EncodeInt(int64(yy73)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq57[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy75 := *x.CurrentCPUUtilizationPercentage + yym76 := z.EncBinary() + _ = yym76 + if false { + } else { + r.EncodeInt(int64(yy75)) + } + } + } + } + if yyr57 || yy2arr57 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym77 := z.DecBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct78 := r.ContainerType() + if yyct78 == codecSelferValueTypeMap1234 { + yyl78 := r.ReadMapStart() + if yyl78 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl78, d) + } + } else if yyct78 == codecSelferValueTypeArray1234 { + yyl78 := r.ReadArrayStart() + if yyl78 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl78, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys79Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys79Slc + var yyhl79 bool = l >= 0 + for yyj79 := 0; ; yyj79++ { + if yyhl79 { + if yyj79 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys79Slc = r.DecodeBytes(yys79Slc, true, true) + yys79 := string(yys79Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys79 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "lastScaleTime": + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym83 := z.DecBinary() + _ = yym83 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym83 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym83 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + case "desiredReplicas": + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + case "currentCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym87 := z.DecBinary() + _ = yym87 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys79) + } // end switch yys79 + } // end for yyj79 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj88 int + var yyb88 bool + var yyhl88 bool = l >= 0 + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym90 := z.DecBinary() + _ = yym90 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym92 := z.DecBinary() + _ = yym92 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym92 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym92 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym96 := z.DecBinary() + _ = yym96 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj88++ + if yyhl88 { + yyb88 = yyj88 > l + } else { + yyb88 = r.CheckBreak() + } + if yyb88 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj88-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscaler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym97 := z.EncBinary() + _ = yym97 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep98 := !z.EncBinary() + yy2arr98 := z.EncBasicHandle().StructToArray + var yyq98 [5]bool + _, _, _ = yysep98, yyq98, yy2arr98 + const yyr98 bool = false + yyq98[0] = x.Kind != "" + yyq98[1] = x.APIVersion != "" + yyq98[2] = true + yyq98[3] = true + yyq98[4] = true + var yynn98 int + if yyr98 || yy2arr98 { + r.EncodeArrayStart(5) + } else { + yynn98 = 0 + for _, b := range yyq98 { + if b { + yynn98++ + } + } + r.EncodeMapStart(yynn98) + yynn98 = 0 + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq98[0] { + yym100 := z.EncBinary() + _ = yym100 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq98[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym101 := z.EncBinary() + _ = yym101 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq98[1] { + yym103 := z.EncBinary() + _ = yym103 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq98[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq98[2] { + yy106 := &x.ObjectMeta + yy106.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq98[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy107 := &x.ObjectMeta + yy107.CodecEncodeSelf(e) + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq98[3] { + yy109 := &x.Spec + yy109.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq98[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy110 := &x.Spec + yy110.CodecEncodeSelf(e) + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq98[4] { + yy112 := &x.Status + yy112.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq98[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy113 := &x.Status + yy113.CodecEncodeSelf(e) + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscaler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym114 := z.DecBinary() + _ = yym114 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct115 := r.ContainerType() + if yyct115 == codecSelferValueTypeMap1234 { + yyl115 := r.ReadMapStart() + if yyl115 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl115, d) + } + } else if yyct115 == codecSelferValueTypeArray1234 { + yyl115 := r.ReadArrayStart() + if yyl115 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl115, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys116Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys116Slc + var yyhl116 bool = l >= 0 + for yyj116 := 0; ; yyj116++ { + if yyhl116 { + if yyj116 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys116Slc = r.DecodeBytes(yys116Slc, true, true) + yys116 := string(yys116Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys116 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv119 := &x.ObjectMeta + yyv119.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv120 := &x.Spec + yyv120.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv121 := &x.Status + yyv121.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys116) + } // end switch yys116 + } // end for yyj116 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj122 int + var yyb122 bool + var yyhl122 bool = l >= 0 + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv125 := &x.ObjectMeta + yyv125.CodecDecodeSelf(d) + } + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv126 := &x.Spec + yyv126.CodecDecodeSelf(d) + } + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv127 := &x.Status + yyv127.CodecDecodeSelf(d) + } + for { + yyj122++ + if yyhl122 { + yyb122 = yyj122 > l + } else { + yyb122 = r.CheckBreak() + } + if yyb122 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj122-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym128 := z.EncBinary() + _ = yym128 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep129 := !z.EncBinary() + yy2arr129 := z.EncBasicHandle().StructToArray + var yyq129 [4]bool + _, _, _ = yysep129, yyq129, yy2arr129 + const yyr129 bool = false + yyq129[0] = x.Kind != "" + yyq129[1] = x.APIVersion != "" + yyq129[2] = true + var yynn129 int + if yyr129 || yy2arr129 { + r.EncodeArrayStart(4) + } else { + yynn129 = 1 + for _, b := range yyq129 { + if b { + yynn129++ + } + } + r.EncodeMapStart(yynn129) + yynn129 = 0 + } + if yyr129 || yy2arr129 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq129[0] { + yym131 := z.EncBinary() + _ = yym131 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq129[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym132 := z.EncBinary() + _ = yym132 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr129 || yy2arr129 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq129[1] { + yym134 := z.EncBinary() + _ = yym134 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq129[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym135 := z.EncBinary() + _ = yym135 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr129 || yy2arr129 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq129[2] { + yy137 := &x.ListMeta + yym138 := z.EncBinary() + _ = yym138 + if false { + } else if z.HasExtensions() && z.EncExt(yy137) { + } else { + z.EncFallback(yy137) + } + } else { + r.EncodeNil() + } + } else { + if yyq129[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy139 := &x.ListMeta + yym140 := z.EncBinary() + _ = yym140 + if false { + } else if z.HasExtensions() && z.EncExt(yy139) { + } else { + z.EncFallback(yy139) + } + } + } + if yyr129 || yy2arr129 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym142 := z.EncBinary() + _ = yym142 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym143 := z.EncBinary() + _ = yym143 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } + if yyr129 || yy2arr129 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym144 := z.DecBinary() + _ = yym144 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct145 := r.ContainerType() + if yyct145 == codecSelferValueTypeMap1234 { + yyl145 := r.ReadMapStart() + if yyl145 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl145, d) + } + } else if yyct145 == codecSelferValueTypeArray1234 { + yyl145 := r.ReadArrayStart() + if yyl145 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl145, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys146Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys146Slc + var yyhl146 bool = l >= 0 + for yyj146 := 0; ; yyj146++ { + if yyhl146 { + if yyj146 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys146Slc = r.DecodeBytes(yys146Slc, true, true) + yys146 := string(yys146Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys146 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv149 := &x.ListMeta + yym150 := z.DecBinary() + _ = yym150 + if false { + } else if z.HasExtensions() && z.DecExt(yyv149) { + } else { + z.DecFallback(yyv149, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv151 := &x.Items + yym152 := z.DecBinary() + _ = yym152 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv151), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys146) + } // end switch yys146 + } // end for yyj146 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj153 int + var yyb153 bool + var yyhl153 bool = l >= 0 + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv156 := &x.ListMeta + yym157 := z.DecBinary() + _ = yym157 + if false { + } else if z.HasExtensions() && z.DecExt(yyv156) { + } else { + z.DecFallback(yyv156, false) + } + } + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv158 := &x.Items + yym159 := z.DecBinary() + _ = yym159 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv158), d) + } + } + for { + yyj153++ + if yyhl153 { + yyb153 = yyj153 > l + } else { + yyb153 = r.CheckBreak() + } + if yyb153 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj153-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym160 := z.EncBinary() + _ = yym160 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep161 := !z.EncBinary() + yy2arr161 := z.EncBasicHandle().StructToArray + var yyq161 [5]bool + _, _, _ = yysep161, yyq161, yy2arr161 + const yyr161 bool = false + yyq161[0] = x.Kind != "" + yyq161[1] = x.APIVersion != "" + yyq161[2] = true + yyq161[3] = true + yyq161[4] = true + var yynn161 int + if yyr161 || yy2arr161 { + r.EncodeArrayStart(5) + } else { + yynn161 = 0 + for _, b := range yyq161 { + if b { + yynn161++ + } + } + r.EncodeMapStart(yynn161) + yynn161 = 0 + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[0] { + yym163 := z.EncBinary() + _ = yym163 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq161[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym164 := z.EncBinary() + _ = yym164 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[1] { + yym166 := z.EncBinary() + _ = yym166 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq161[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym167 := z.EncBinary() + _ = yym167 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[2] { + yy169 := &x.ObjectMeta + yy169.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq161[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy170 := &x.ObjectMeta + yy170.CodecEncodeSelf(e) + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[3] { + yy172 := &x.Spec + yy172.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq161[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy173 := &x.Spec + yy173.CodecEncodeSelf(e) + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[4] { + yy175 := &x.Status + yy175.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq161[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy176 := &x.Status + yy176.CodecEncodeSelf(e) + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym177 := z.DecBinary() + _ = yym177 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct178 := r.ContainerType() + if yyct178 == codecSelferValueTypeMap1234 { + yyl178 := r.ReadMapStart() + if yyl178 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl178, d) + } + } else if yyct178 == codecSelferValueTypeArray1234 { + yyl178 := r.ReadArrayStart() + if yyl178 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl178, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys179Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys179Slc + var yyhl179 bool = l >= 0 + for yyj179 := 0; ; yyj179++ { + if yyhl179 { + if yyj179 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys179Slc = r.DecodeBytes(yys179Slc, true, true) + yys179 := string(yys179Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys179 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv182 := &x.ObjectMeta + yyv182.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv183 := &x.Spec + yyv183.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv184 := &x.Status + yyv184.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys179) + } // end switch yys179 + } // end for yyj179 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj185 int + var yyb185 bool + var yyhl185 bool = l >= 0 + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv188 := &x.ObjectMeta + yyv188.CodecDecodeSelf(d) + } + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv189 := &x.Spec + yyv189.CodecDecodeSelf(d) + } + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv190 := &x.Status + yyv190.CodecDecodeSelf(d) + } + for { + yyj185++ + if yyhl185 { + yyb185 = yyj185 > l + } else { + yyb185 = r.CheckBreak() + } + if yyb185 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj185-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym191 := z.EncBinary() + _ = yym191 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep192 := !z.EncBinary() + yy2arr192 := z.EncBasicHandle().StructToArray + var yyq192 [1]bool + _, _, _ = yysep192, yyq192, yy2arr192 + const yyr192 bool = false + yyq192[0] = x.Replicas != 0 + var yynn192 int + if yyr192 || yy2arr192 { + r.EncodeArrayStart(1) + } else { + yynn192 = 0 + for _, b := range yyq192 { + if b { + yynn192++ + } + } + r.EncodeMapStart(yynn192) + yynn192 = 0 + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq192[0] { + yym194 := z.EncBinary() + _ = yym194 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq192[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym195 := z.EncBinary() + _ = yym195 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym196 := z.DecBinary() + _ = yym196 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct197 := r.ContainerType() + if yyct197 == codecSelferValueTypeMap1234 { + yyl197 := r.ReadMapStart() + if yyl197 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl197, d) + } + } else if yyct197 == codecSelferValueTypeArray1234 { + yyl197 := r.ReadArrayStart() + if yyl197 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl197, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys198Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys198Slc + var yyhl198 bool = l >= 0 + for yyj198 := 0; ; yyj198++ { + if yyhl198 { + if yyj198 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys198Slc = r.DecodeBytes(yys198Slc, true, true) + yys198 := string(yys198Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys198 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys198) + } // end switch yys198 + } // end for yyj198 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj200 int + var yyb200 bool + var yyhl200 bool = l >= 0 + yyj200++ + if yyhl200 { + yyb200 = yyj200 > l + } else { + yyb200 = r.CheckBreak() + } + if yyb200 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + for { + yyj200++ + if yyhl200 { + yyb200 = yyj200 > l + } else { + yyb200 = r.CheckBreak() + } + if yyb200 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj200-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym202 := z.EncBinary() + _ = yym202 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep203 := !z.EncBinary() + yy2arr203 := z.EncBasicHandle().StructToArray + var yyq203 [2]bool + _, _, _ = yysep203, yyq203, yy2arr203 + const yyr203 bool = false + yyq203[1] = x.Selector != "" + var yynn203 int + if yyr203 || yy2arr203 { + r.EncodeArrayStart(2) + } else { + yynn203 = 1 + for _, b := range yyq203 { + if b { + yynn203++ + } + } + r.EncodeMapStart(yynn203) + yynn203 = 0 + } + if yyr203 || yy2arr203 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym205 := z.EncBinary() + _ = yym205 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym206 := z.EncBinary() + _ = yym206 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr203 || yy2arr203 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq203[1] { + yym208 := z.EncBinary() + _ = yym208 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq203[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym209 := z.EncBinary() + _ = yym209 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Selector)) + } + } + } + if yyr203 || yy2arr203 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym210 := z.DecBinary() + _ = yym210 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct211 := r.ContainerType() + if yyct211 == codecSelferValueTypeMap1234 { + yyl211 := r.ReadMapStart() + if yyl211 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl211, d) + } + } else if yyct211 == codecSelferValueTypeArray1234 { + yyl211 := r.ReadArrayStart() + if yyl211 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl211, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys212Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys212Slc + var yyhl212 bool = l >= 0 + for yyj212 := 0; ; yyj212++ { + if yyhl212 { + if yyj212 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys212Slc = r.DecodeBytes(yys212Slc, true, true) + yys212 := string(yys212Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys212 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + x.Selector = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys212) + } // end switch yys212 + } // end for yyj212 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj215 int + var yyb215 bool + var yyhl215 bool = l >= 0 + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = "" + } else { + x.Selector = string(r.DecodeString()) + } + for { + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj215-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscaler(v []HorizontalPodAutoscaler, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv218 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy219 := &yyv218 + yy219.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscaler(v *[]HorizontalPodAutoscaler, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv220 := *v + yyh220, yyl220 := z.DecSliceHelperStart() + var yyc220 bool + if yyl220 == 0 { + if yyv220 == nil { + yyv220 = []HorizontalPodAutoscaler{} + yyc220 = true + } else if len(yyv220) != 0 { + yyv220 = yyv220[:0] + yyc220 = true + } + } else if yyl220 > 0 { + var yyrr220, yyrl220 int + var yyrt220 bool + if yyl220 > cap(yyv220) { + + yyrg220 := len(yyv220) > 0 + yyv2220 := yyv220 + yyrl220, yyrt220 = z.DecInferLen(yyl220, z.DecBasicHandle().MaxInitLen, 360) + if yyrt220 { + if yyrl220 <= cap(yyv220) { + yyv220 = yyv220[:yyrl220] + } else { + yyv220 = make([]HorizontalPodAutoscaler, yyrl220) + } + } else { + yyv220 = make([]HorizontalPodAutoscaler, yyrl220) + } + yyc220 = true + yyrr220 = len(yyv220) + if yyrg220 { + copy(yyv220, yyv2220) + } + } else if yyl220 != len(yyv220) { + yyv220 = yyv220[:yyl220] + yyc220 = true + } + yyj220 := 0 + for ; yyj220 < yyrr220; yyj220++ { + yyh220.ElemContainerState(yyj220) + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv221 := &yyv220[yyj220] + yyv221.CodecDecodeSelf(d) + } + + } + if yyrt220 { + for ; yyj220 < yyl220; yyj220++ { + yyv220 = append(yyv220, HorizontalPodAutoscaler{}) + yyh220.ElemContainerState(yyj220) + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv222 := &yyv220[yyj220] + yyv222.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj220 := 0 + for ; !r.CheckBreak(); yyj220++ { + + if yyj220 >= len(yyv220) { + yyv220 = append(yyv220, HorizontalPodAutoscaler{}) // var yyz220 HorizontalPodAutoscaler + yyc220 = true + } + yyh220.ElemContainerState(yyj220) + if yyj220 < len(yyv220) { + if r.TryDecodeAsNil() { + yyv220[yyj220] = HorizontalPodAutoscaler{} + } else { + yyv223 := &yyv220[yyj220] + yyv223.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj220 < len(yyv220) { + yyv220 = yyv220[:yyj220] + yyc220 = true + } else if yyj220 == 0 && yyv220 == nil { + yyv220 = []HorizontalPodAutoscaler{} + yyc220 = true + } + } + yyh220.End() + if yyc220 { + *v = yyv220 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.go new file mode 100644 index 0000000000..de8985857b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types.go @@ -0,0 +1,122 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// CrossVersionObjectReference contains enough information to let you identify the referred resource. +type CrossVersionObjectReference struct { + // Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds" + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` +} + +// specification of a horizontal pod autoscaler. +type HorizontalPodAutoscalerSpec struct { + // reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption + // and will set the desired number of pods by using its Scale subresource. + ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef" protobuf:"bytes,1,opt,name=scaleTargetRef"` + // lower limit for the number of pods that can be set by the autoscaler, default 1. + MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"` + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified the default autoscaling policy will be used. + TargetCPUUtilizationPercentage *int32 `json:"targetCPUUtilizationPercentage,omitempty" protobuf:"varint,4,opt,name=targetCPUUtilizationPercentage"` +} + +// current status of a horizontal pod autoscaler +type HorizontalPodAutoscalerStatus struct { + // most recent generation observed by this autoscaler. + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + LastScaleTime *unversioned.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"` + + // current number of replicas of pods managed by this autoscaler. + CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"` + + // desired number of replicas of pods managed by this autoscaler. + DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"` + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty" protobuf:"varint,5,opt,name=currentCPUUtilizationPercentage"` +} + +// +genclient=true + +// configuration of a horizontal pod autoscaler. +type HorizontalPodAutoscaler struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current information about the autoscaler. + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Scale represents a scaling request for a resource. +type Scale struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ScaleSpec describes the attributes of a scale subresource. +type ScaleSpec struct { + // desired number of instances for the scaled object. + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` +} + +// ScaleStatus represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // label query over pods that should match the replicas count. This is same + // as the label selector but in the string format to avoid introspection + // by clients. The string will be in the same format as the query-param syntax. + // More info about label selectors: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector string `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..6b9bcf47e8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/types_swagger_doc_generated.go @@ -0,0 +1,117 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CrossVersionObjectReference = map[string]string{ + "": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", + "kind": "Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds\"", + "name": "Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", + "apiVersion": "API version of the referent", +} + +func (CrossVersionObjectReference) SwaggerDoc() map[string]string { + return map_CrossVersionObjectReference +} + +var map_HorizontalPodAutoscaler = map[string]string{ + "": "configuration of a horizontal pod autoscaler.", + "metadata": "Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.", + "status": "current information about the autoscaler.", +} + +func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscaler +} + +var map_HorizontalPodAutoscalerList = map[string]string{ + "": "list of horizontal pod autoscaler objects.", + "metadata": "Standard list metadata.", + "items": "list of horizontal pod autoscaler objects.", +} + +func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerList +} + +var map_HorizontalPodAutoscalerSpec = map[string]string{ + "": "specification of a horizontal pod autoscaler.", + "scaleTargetRef": "reference to scaled resource; horizontal pod autoscaler will learn the current resource consumption and will set the desired number of pods by using its Scale subresource.", + "minReplicas": "lower limit for the number of pods that can be set by the autoscaler, default 1.", + "maxReplicas": "upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.", + "targetCPUUtilizationPercentage": "target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified the default autoscaling policy will be used.", +} + +func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerSpec +} + +var map_HorizontalPodAutoscalerStatus = map[string]string{ + "": "current status of a horizontal pod autoscaler", + "observedGeneration": "most recent generation observed by this autoscaler.", + "lastScaleTime": "last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.", + "currentReplicas": "current number of replicas of pods managed by this autoscaler.", + "desiredReplicas": "desired number of replicas of pods managed by this autoscaler.", + "currentCPUUtilizationPercentage": "current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.", +} + +func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerStatus +} + +var map_Scale = map[string]string{ + "": "Scale represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only.", +} + +func (Scale) SwaggerDoc() map[string]string { + return map_Scale +} + +var map_ScaleSpec = map[string]string{ + "": "ScaleSpec describes the attributes of a scale subresource.", + "replicas": "desired number of instances for the scaled object.", +} + +func (ScaleSpec) SwaggerDoc() map[string]string { + return map_ScaleSpec +} + +var map_ScaleStatus = map[string]string{ + "": "ScaleStatus represents the current status of a scale subresource.", + "replicas": "actual number of observed instances of the scaled object.", + "selector": "label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.conversion.go new file mode 100644 index 0000000000..cc51da305d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.conversion.go @@ -0,0 +1,304 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + autoscaling "k8s.io/client-go/1.5/pkg/apis/autoscaling" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference, + Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference, + Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler, + Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler, + Convert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList, + Convert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList, + Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec, + Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus, + Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus, + Convert_v1_Scale_To_autoscaling_Scale, + Convert_autoscaling_Scale_To_v1_Scale, + Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec, + Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec, + Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus, + Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus, + ) +} + +func autoConvert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +func Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in *CrossVersionObjectReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +func Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in *autoscaling.CrossVersionObjectReference, out *CrossVersionObjectReference, s conversion.Scope) error { + return autoConvert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + SetDefaults_HorizontalPodAutoscaler(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]autoscaling.HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_v1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_autoscaling_HorizontalPodAutoscaler_To_v1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_v1_CrossVersionObjectReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + out.TargetCPUUtilizationPercentage = in.TargetCPUUtilizationPercentage + return nil +} + +func Convert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1_CrossVersionObjectReference(&in.ScaleTargetRef, &out.ScaleTargetRef, s); err != nil { + return err + } + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + out.TargetCPUUtilizationPercentage = in.TargetCPUUtilizationPercentage + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1_HorizontalPodAutoscalerSpec(in, out, s) +} + +func autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage + return nil +} + +func Convert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_v1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_v1_Scale_To_autoscaling_Scale(in *Scale, out *autoscaling.Scale, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Scale_To_autoscaling_Scale(in *Scale, out *autoscaling.Scale, s conversion.Scope) error { + return autoConvert_v1_Scale_To_autoscaling_Scale(in, out, s) +} + +func autoConvert_autoscaling_Scale_To_v1_Scale(in *autoscaling.Scale, out *Scale, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_autoscaling_Scale_To_v1_Scale(in *autoscaling.Scale, out *Scale, s conversion.Scope) error { + return autoConvert_autoscaling_Scale_To_v1_Scale(in, out, s) +} + +func autoConvert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in *ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +func Convert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in *ScaleSpec, out *autoscaling.ScaleSpec, s conversion.Scope) error { + return autoConvert_v1_ScaleSpec_To_autoscaling_ScaleSpec(in, out, s) +} + +func autoConvert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in *autoscaling.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +func Convert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in *autoscaling.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + return autoConvert_autoscaling_ScaleSpec_To_v1_ScaleSpec(in, out, s) +} + +func autoConvert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in *ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil +} + +func Convert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in *ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error { + return autoConvert_v1_ScaleStatus_To_autoscaling_ScaleStatus(in, out, s) +} + +func autoConvert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in *autoscaling.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil +} + +func Convert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in *autoscaling.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + return autoConvert_autoscaling_ScaleStatus_To_v1_ScaleStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..9146f39251 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/v1/zz_generated.deepcopy.go @@ -0,0 +1,186 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_CrossVersionObjectReference, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + ) +} + +func DeepCopy_v1_CrossVersionObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CrossVersionObjectReference) + out := out.(*CrossVersionObjectReference) + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil + } +} + +func DeepCopy_v1_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + out.TypeMeta = in.TypeMeta + if err := api_v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_v1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + out.ScaleTargetRef = in.ScaleTargetRef + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } else { + out.MinReplicas = nil + } + out.MaxReplicas = in.MaxReplicas + if in.TargetCPUUtilizationPercentage != nil { + in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage + *out = new(int32) + **out = **in + } else { + out.TargetCPUUtilizationPercentage = nil + } + return nil + } +} + +func DeepCopy_v1_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } else { + out.ObservedGeneration = nil + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.LastScaleTime = nil + } + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + if in.CurrentCPUUtilizationPercentage != nil { + in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage + *out = new(int32) + **out = **in + } else { + out.CurrentCPUUtilizationPercentage = nil + } + return nil + } +} + +func DeepCopy_v1_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + out.TypeMeta = in.TypeMeta + if err := api_v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + out.Replicas = in.Replicas + return nil + } +} + +func DeepCopy_v1_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/zz_generated.deepcopy.go new file mode 100644 index 0000000000..1f367bf37a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/autoscaling/zz_generated.deepcopy.go @@ -0,0 +1,186 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package autoscaling + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_CrossVersionObjectReference, InType: reflect.TypeOf(&CrossVersionObjectReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_autoscaling_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + ) +} + +func DeepCopy_autoscaling_CrossVersionObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CrossVersionObjectReference) + out := out.(*CrossVersionObjectReference) + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil + } +} + +func DeepCopy_autoscaling_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_autoscaling_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_autoscaling_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_autoscaling_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + out.ScaleTargetRef = in.ScaleTargetRef + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } else { + out.MinReplicas = nil + } + out.MaxReplicas = in.MaxReplicas + if in.TargetCPUUtilizationPercentage != nil { + in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage + *out = new(int32) + **out = **in + } else { + out.TargetCPUUtilizationPercentage = nil + } + return nil + } +} + +func DeepCopy_autoscaling_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } else { + out.ObservedGeneration = nil + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.LastScaleTime = nil + } + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + if in.CurrentCPUUtilizationPercentage != nil { + in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage + *out = new(int32) + **out = **in + } else { + out.CurrentCPUUtilizationPercentage = nil + } + return nil + } +} + +func DeepCopy_autoscaling_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + out.Status = in.Status + return nil + } +} + +func DeepCopy_autoscaling_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + out.Replicas = in.Replicas + return nil + } +} + +func DeepCopy_autoscaling_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + out.Replicas = in.Replicas + out.Selector = in.Selector + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/doc.go new file mode 100644 index 0000000000..f8774e80ad --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package batch diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/install/install.go new file mode 100644 index 0000000000..9e511cea83 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the batch API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/apis/batch/v1" + "k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: batch.GroupName, + VersionPreferenceOrder: []string{v1.SchemeGroupVersion.Version, v2alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/batch", + AddInternalObjectsToScheme: batch.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1.SchemeGroupVersion.Version: v1.AddToScheme, + v2alpha1.SchemeGroupVersion.Version: v2alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/register.go new file mode 100644 index 0000000000..19f8e72ae3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/register.go @@ -0,0 +1,57 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package batch + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + &JobTemplate{}, + &ScheduledJob{}, + &ScheduledJobList{}, + &api.ListOptions{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.generated.go new file mode 100644 index 0000000000..cd09a3c7f1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.generated.go @@ -0,0 +1,4676 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package batch + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg4_resource.Quantity + var v2 pkg1_unversioned.TypeMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *Job) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Job) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Job) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Job) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [4]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Kind != "" + yyq33[1] = x.APIVersion != "" + yyq33[2] = true + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(4) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yy41 := &x.ListMeta + yym42 := z.EncBinary() + _ = yym42 + if false { + } else if z.HasExtensions() && z.EncExt(yy41) { + } else { + z.EncFallback(yy41) + } + } else { + r.EncodeNil() + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy43 := &x.ListMeta + yym44 := z.EncBinary() + _ = yym44 + if false { + } else if z.HasExtensions() && z.EncExt(yy43) { + } else { + z.EncFallback(yy43) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym48 := z.DecBinary() + _ = yym48 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct49 := r.ContainerType() + if yyct49 == codecSelferValueTypeMap1234 { + yyl49 := r.ReadMapStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl49, d) + } + } else if yyct49 == codecSelferValueTypeArray1234 { + yyl49 := r.ReadArrayStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl49, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys50Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys50Slc + var yyhl50 bool = l >= 0 + for yyj50 := 0; ; yyj50++ { + if yyhl50 { + if yyj50 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys50Slc = r.DecodeBytes(yys50Slc, true, true) + yys50 := string(yys50Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys50 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv53 := &x.ListMeta + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(yyv53) { + } else { + z.DecFallback(yyv53, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv55 := &x.Items + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + h.decSliceJob((*[]Job)(yyv55), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys50) + } // end switch yys50 + } // end for yyj50 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj57 int + var yyb57 bool + var yyhl57 bool = l >= 0 + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv60 := &x.ListMeta + yym61 := z.DecBinary() + _ = yym61 + if false { + } else if z.HasExtensions() && z.DecExt(yyv60) { + } else { + z.DecFallback(yyv60, false) + } + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv62 := &x.Items + yym63 := z.DecBinary() + _ = yym63 + if false { + } else { + h.decSliceJob((*[]Job)(yyv62), d) + } + } + for { + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj57-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep65 := !z.EncBinary() + yy2arr65 := z.EncBasicHandle().StructToArray + var yyq65 [4]bool + _, _, _ = yysep65, yyq65, yy2arr65 + const yyr65 bool = false + yyq65[0] = x.Kind != "" + yyq65[1] = x.APIVersion != "" + yyq65[2] = true + yyq65[3] = true + var yynn65 int + if yyr65 || yy2arr65 { + r.EncodeArrayStart(4) + } else { + yynn65 = 0 + for _, b := range yyq65 { + if b { + yynn65++ + } + } + r.EncodeMapStart(yynn65) + yynn65 = 0 + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[0] { + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[1] { + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[2] { + yy73 := &x.ObjectMeta + yy73.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq65[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy74 := &x.ObjectMeta + yy74.CodecEncodeSelf(e) + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[3] { + yy76 := &x.Template + yy76.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq65[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy77 := &x.Template + yy77.CodecEncodeSelf(e) + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym78 := z.DecBinary() + _ = yym78 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct79 := r.ContainerType() + if yyct79 == codecSelferValueTypeMap1234 { + yyl79 := r.ReadMapStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl79, d) + } + } else if yyct79 == codecSelferValueTypeArray1234 { + yyl79 := r.ReadArrayStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl79, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys80Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys80Slc + var yyhl80 bool = l >= 0 + for yyj80 := 0; ; yyj80++ { + if yyhl80 { + if yyj80 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys80Slc = r.DecodeBytes(yys80Slc, true, true) + yys80 := string(yys80Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys80 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv83 := &x.ObjectMeta + yyv83.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv84 := &x.Template + yyv84.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys80) + } // end switch yys80 + } // end for yyj80 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj85 int + var yyb85 bool + var yyhl85 bool = l >= 0 + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv88 := &x.ObjectMeta + yyv88.CodecDecodeSelf(d) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv89 := &x.Template + yyv89.CodecDecodeSelf(d) + } + for { + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj85-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym90 := z.EncBinary() + _ = yym90 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep91 := !z.EncBinary() + yy2arr91 := z.EncBasicHandle().StructToArray + var yyq91 [2]bool + _, _, _ = yysep91, yyq91, yy2arr91 + const yyr91 bool = false + yyq91[0] = true + yyq91[1] = true + var yynn91 int + if yyr91 || yy2arr91 { + r.EncodeArrayStart(2) + } else { + yynn91 = 0 + for _, b := range yyq91 { + if b { + yynn91++ + } + } + r.EncodeMapStart(yynn91) + yynn91 = 0 + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq91[0] { + yy93 := &x.ObjectMeta + yy93.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq91[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy94 := &x.ObjectMeta + yy94.CodecEncodeSelf(e) + } + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq91[1] { + yy96 := &x.Spec + yy96.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq91[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy97 := &x.Spec + yy97.CodecEncodeSelf(e) + } + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym98 := z.DecBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct99 := r.ContainerType() + if yyct99 == codecSelferValueTypeMap1234 { + yyl99 := r.ReadMapStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl99, d) + } + } else if yyct99 == codecSelferValueTypeArray1234 { + yyl99 := r.ReadArrayStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl99, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys100Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys100Slc + var yyhl100 bool = l >= 0 + for yyj100 := 0; ; yyj100++ { + if yyhl100 { + if yyj100 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys100Slc = r.DecodeBytes(yys100Slc, true, true) + yys100 := string(yys100Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys100 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv101 := &x.ObjectMeta + yyv101.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv102 := &x.Spec + yyv102.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys100) + } // end switch yys100 + } // end for yyj100 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj103 int + var yyb103 bool + var yyhl103 bool = l >= 0 + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv104 := &x.ObjectMeta + yyv104.CodecDecodeSelf(d) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv105 := &x.Spec + yyv105.CodecDecodeSelf(d) + } + for { + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj103-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym106 := z.EncBinary() + _ = yym106 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep107 := !z.EncBinary() + yy2arr107 := z.EncBasicHandle().StructToArray + var yyq107 [6]bool + _, _, _ = yysep107, yyq107, yy2arr107 + const yyr107 bool = false + yyq107[0] = x.Parallelism != nil + yyq107[1] = x.Completions != nil + yyq107[2] = x.ActiveDeadlineSeconds != nil + yyq107[3] = x.Selector != nil + yyq107[4] = x.ManualSelector != nil + var yynn107 int + if yyr107 || yy2arr107 { + r.EncodeArrayStart(6) + } else { + yynn107 = 1 + for _, b := range yyq107 { + if b { + yynn107++ + } + } + r.EncodeMapStart(yynn107) + yynn107 = 0 + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[0] { + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy109 := *x.Parallelism + yym110 := z.EncBinary() + _ = yym110 + if false { + } else { + r.EncodeInt(int64(yy109)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parallelism")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy111 := *x.Parallelism + yym112 := z.EncBinary() + _ = yym112 + if false { + } else { + r.EncodeInt(int64(yy111)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[1] { + if x.Completions == nil { + r.EncodeNil() + } else { + yy114 := *x.Completions + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeInt(int64(yy114)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Completions == nil { + r.EncodeNil() + } else { + yy116 := *x.Completions + yym117 := z.EncBinary() + _ = yym117 + if false { + } else { + r.EncodeInt(int64(yy116)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[2] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy119 := *x.ActiveDeadlineSeconds + yym120 := z.EncBinary() + _ = yym120 + if false { + } else { + r.EncodeInt(int64(yy119)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy121 := *x.ActiveDeadlineSeconds + yym122 := z.EncBinary() + _ = yym122 + if false { + } else { + r.EncodeInt(int64(yy121)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[3] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym124 := z.EncBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym125 := z.EncBinary() + _ = yym125 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[4] { + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy127 := *x.ManualSelector + yym128 := z.EncBinary() + _ = yym128 + if false { + } else { + r.EncodeBool(bool(yy127)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("manualSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy129 := *x.ManualSelector + yym130 := z.EncBinary() + _ = yym130 + if false { + } else { + r.EncodeBool(bool(yy129)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy132 := &x.Template + yy132.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy133 := &x.Template + yy133.CodecEncodeSelf(e) + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym134 := z.DecBinary() + _ = yym134 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct135 := r.ContainerType() + if yyct135 == codecSelferValueTypeMap1234 { + yyl135 := r.ReadMapStart() + if yyl135 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl135, d) + } + } else if yyct135 == codecSelferValueTypeArray1234 { + yyl135 := r.ReadArrayStart() + if yyl135 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl135, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys136Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys136Slc + var yyhl136 bool = l >= 0 + for yyj136 := 0; ; yyj136++ { + if yyhl136 { + if yyj136 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys136Slc = r.DecodeBytes(yys136Slc, true, true) + yys136 := string(yys136Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys136 { + case "parallelism": + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym138 := z.DecBinary() + _ = yym138 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + case "completions": + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym140 := z.DecBinary() + _ = yym140 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym142 := z.DecBinary() + _ = yym142 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym144 := z.DecBinary() + _ = yym144 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "manualSelector": + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym146 := z.DecBinary() + _ = yym146 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv147 := &x.Template + yyv147.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys136) + } // end switch yys136 + } // end for yyj136 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj148 int + var yyb148 bool + var yyhl148 bool = l >= 0 + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym150 := z.DecBinary() + _ = yym150 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym152 := z.DecBinary() + _ = yym152 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym154 := z.DecBinary() + _ = yym154 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym156 := z.DecBinary() + _ = yym156 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym158 := z.DecBinary() + _ = yym158 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv159 := &x.Template + yyv159.CodecDecodeSelf(d) + } + for { + yyj148++ + if yyhl148 { + yyb148 = yyj148 > l + } else { + yyb148 = r.CheckBreak() + } + if yyb148 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj148-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym160 := z.EncBinary() + _ = yym160 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep161 := !z.EncBinary() + yy2arr161 := z.EncBasicHandle().StructToArray + var yyq161 [6]bool + _, _, _ = yysep161, yyq161, yy2arr161 + const yyr161 bool = false + yyq161[0] = len(x.Conditions) != 0 + yyq161[1] = x.StartTime != nil + yyq161[2] = x.CompletionTime != nil + yyq161[3] = x.Active != 0 + yyq161[4] = x.Succeeded != 0 + yyq161[5] = x.Failed != 0 + var yynn161 int + if yyr161 || yy2arr161 { + r.EncodeArrayStart(6) + } else { + yynn161 = 0 + for _, b := range yyq161 { + if b { + yynn161++ + } + } + r.EncodeMapStart(yynn161) + yynn161 = 0 + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym163 := z.EncBinary() + _ = yym163 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq161[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym164 := z.EncBinary() + _ = yym164 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[1] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym166 := z.EncBinary() + _ = yym166 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym166 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym166 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq161[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym167 := z.EncBinary() + _ = yym167 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym167 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym167 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[2] { + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym169 := z.EncBinary() + _ = yym169 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym169 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym169 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq161[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym170 := z.EncBinary() + _ = yym170 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym170 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym170 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[3] { + yym172 := z.EncBinary() + _ = yym172 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq161[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym173 := z.EncBinary() + _ = yym173 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[4] { + yym175 := z.EncBinary() + _ = yym175 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq161[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("succeeded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym176 := z.EncBinary() + _ = yym176 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq161[5] { + yym178 := z.EncBinary() + _ = yym178 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq161[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym179 := z.EncBinary() + _ = yym179 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } + } + if yyr161 || yy2arr161 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym180 := z.DecBinary() + _ = yym180 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct181 := r.ContainerType() + if yyct181 == codecSelferValueTypeMap1234 { + yyl181 := r.ReadMapStart() + if yyl181 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl181, d) + } + } else if yyct181 == codecSelferValueTypeArray1234 { + yyl181 := r.ReadArrayStart() + if yyl181 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl181, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys182Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys182Slc + var yyhl182 bool = l >= 0 + for yyj182 := 0; ; yyj182++ { + if yyhl182 { + if yyj182 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys182Slc = r.DecodeBytes(yys182Slc, true, true) + yys182 := string(yys182Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys182 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv183 := &x.Conditions + yym184 := z.DecBinary() + _ = yym184 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv183), d) + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym186 := z.DecBinary() + _ = yym186 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym186 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym186 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "completionTime": + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym188 := z.DecBinary() + _ = yym188 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym188 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym188 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + case "active": + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + case "succeeded": + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + case "failed": + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys182) + } // end switch yys182 + } // end for yyj182 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj192 int + var yyb192 bool + var yyhl192 bool = l >= 0 + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv193 := &x.Conditions + yym194 := z.DecBinary() + _ = yym194 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv193), d) + } + } + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym196 := z.DecBinary() + _ = yym196 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym196 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym196 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym198 := z.DecBinary() + _ = yym198 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym198 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym198 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + for { + yyj192++ + if yyhl192 { + yyb192 = yyj192 > l + } else { + yyb192 = r.CheckBreak() + } + if yyb192 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj192-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x JobConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym202 := z.EncBinary() + _ = yym202 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *JobConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym203 := z.DecBinary() + _ = yym203 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *JobCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym204 := z.EncBinary() + _ = yym204 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep205 := !z.EncBinary() + yy2arr205 := z.EncBasicHandle().StructToArray + var yyq205 [6]bool + _, _, _ = yysep205, yyq205, yy2arr205 + const yyr205 bool = false + yyq205[2] = true + yyq205[3] = true + yyq205[4] = x.Reason != "" + yyq205[5] = x.Message != "" + var yynn205 int + if yyr205 || yy2arr205 { + r.EncodeArrayStart(6) + } else { + yynn205 = 2 + for _, b := range yyq205 { + if b { + yynn205++ + } + } + r.EncodeMapStart(yynn205) + yynn205 = 0 + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym208 := z.EncBinary() + _ = yym208 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym209 := z.EncBinary() + _ = yym209 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq205[2] { + yy211 := &x.LastProbeTime + yym212 := z.EncBinary() + _ = yym212 + if false { + } else if z.HasExtensions() && z.EncExt(yy211) { + } else if yym212 { + z.EncBinaryMarshal(yy211) + } else if !yym212 && z.IsJSONHandle() { + z.EncJSONMarshal(yy211) + } else { + z.EncFallback(yy211) + } + } else { + r.EncodeNil() + } + } else { + if yyq205[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy213 := &x.LastProbeTime + yym214 := z.EncBinary() + _ = yym214 + if false { + } else if z.HasExtensions() && z.EncExt(yy213) { + } else if yym214 { + z.EncBinaryMarshal(yy213) + } else if !yym214 && z.IsJSONHandle() { + z.EncJSONMarshal(yy213) + } else { + z.EncFallback(yy213) + } + } + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq205[3] { + yy216 := &x.LastTransitionTime + yym217 := z.EncBinary() + _ = yym217 + if false { + } else if z.HasExtensions() && z.EncExt(yy216) { + } else if yym217 { + z.EncBinaryMarshal(yy216) + } else if !yym217 && z.IsJSONHandle() { + z.EncJSONMarshal(yy216) + } else { + z.EncFallback(yy216) + } + } else { + r.EncodeNil() + } + } else { + if yyq205[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy218 := &x.LastTransitionTime + yym219 := z.EncBinary() + _ = yym219 + if false { + } else if z.HasExtensions() && z.EncExt(yy218) { + } else if yym219 { + z.EncBinaryMarshal(yy218) + } else if !yym219 && z.IsJSONHandle() { + z.EncJSONMarshal(yy218) + } else { + z.EncFallback(yy218) + } + } + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq205[4] { + yym221 := z.EncBinary() + _ = yym221 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq205[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym222 := z.EncBinary() + _ = yym222 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq205[5] { + yym224 := z.EncBinary() + _ = yym224 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq205[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym225 := z.EncBinary() + _ = yym225 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr205 || yy2arr205 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym226 := z.DecBinary() + _ = yym226 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct227 := r.ContainerType() + if yyct227 == codecSelferValueTypeMap1234 { + yyl227 := r.ReadMapStart() + if yyl227 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl227, d) + } + } else if yyct227 == codecSelferValueTypeArray1234 { + yyl227 := r.ReadArrayStart() + if yyl227 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl227, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys228Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys228Slc + var yyhl228 bool = l >= 0 + for yyj228 := 0; ; yyj228++ { + if yyhl228 { + if yyj228 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys228Slc = r.DecodeBytes(yys228Slc, true, true) + yys228 := string(yys228Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys228 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_api.ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv231 := &x.LastProbeTime + yym232 := z.DecBinary() + _ = yym232 + if false { + } else if z.HasExtensions() && z.DecExt(yyv231) { + } else if yym232 { + z.DecBinaryUnmarshal(yyv231) + } else if !yym232 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv231) + } else { + z.DecFallback(yyv231, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv233 := &x.LastTransitionTime + yym234 := z.DecBinary() + _ = yym234 + if false { + } else if z.HasExtensions() && z.DecExt(yyv233) { + } else if yym234 { + z.DecBinaryUnmarshal(yyv233) + } else if !yym234 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv233) + } else { + z.DecFallback(yyv233, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys228) + } // end switch yys228 + } // end for yyj228 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj237 int + var yyb237 bool + var yyhl237 bool = l >= 0 + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_api.ConditionStatus(r.DecodeString()) + } + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv240 := &x.LastProbeTime + yym241 := z.DecBinary() + _ = yym241 + if false { + } else if z.HasExtensions() && z.DecExt(yyv240) { + } else if yym241 { + z.DecBinaryUnmarshal(yyv240) + } else if !yym241 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv240) + } else { + z.DecFallback(yyv240, false) + } + } + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv242 := &x.LastTransitionTime + yym243 := z.DecBinary() + _ = yym243 + if false { + } else if z.HasExtensions() && z.DecExt(yyv242) { + } else if yym243 { + z.DecBinaryUnmarshal(yyv242) + } else if !yym243 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv242) + } else { + z.DecFallback(yyv242, false) + } + } + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj237++ + if yyhl237 { + yyb237 = yyj237 > l + } else { + yyb237 = r.CheckBreak() + } + if yyb237 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj237-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJob) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym246 := z.EncBinary() + _ = yym246 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep247 := !z.EncBinary() + yy2arr247 := z.EncBasicHandle().StructToArray + var yyq247 [5]bool + _, _, _ = yysep247, yyq247, yy2arr247 + const yyr247 bool = false + yyq247[0] = x.Kind != "" + yyq247[1] = x.APIVersion != "" + yyq247[2] = true + yyq247[3] = true + yyq247[4] = true + var yynn247 int + if yyr247 || yy2arr247 { + r.EncodeArrayStart(5) + } else { + yynn247 = 0 + for _, b := range yyq247 { + if b { + yynn247++ + } + } + r.EncodeMapStart(yynn247) + yynn247 = 0 + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq247[0] { + yym249 := z.EncBinary() + _ = yym249 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq247[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym250 := z.EncBinary() + _ = yym250 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq247[1] { + yym252 := z.EncBinary() + _ = yym252 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq247[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym253 := z.EncBinary() + _ = yym253 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq247[2] { + yy255 := &x.ObjectMeta + yy255.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq247[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy256 := &x.ObjectMeta + yy256.CodecEncodeSelf(e) + } + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq247[3] { + yy258 := &x.Spec + yy258.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq247[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy259 := &x.Spec + yy259.CodecEncodeSelf(e) + } + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq247[4] { + yy261 := &x.Status + yy261.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq247[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy262 := &x.Status + yy262.CodecEncodeSelf(e) + } + } + if yyr247 || yy2arr247 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJob) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym263 := z.DecBinary() + _ = yym263 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct264 := r.ContainerType() + if yyct264 == codecSelferValueTypeMap1234 { + yyl264 := r.ReadMapStart() + if yyl264 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl264, d) + } + } else if yyct264 == codecSelferValueTypeArray1234 { + yyl264 := r.ReadArrayStart() + if yyl264 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl264, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJob) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys265Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys265Slc + var yyhl265 bool = l >= 0 + for yyj265 := 0; ; yyj265++ { + if yyhl265 { + if yyj265 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys265Slc = r.DecodeBytes(yys265Slc, true, true) + yys265 := string(yys265Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys265 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv268 := &x.ObjectMeta + yyv268.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScheduledJobSpec{} + } else { + yyv269 := &x.Spec + yyv269.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScheduledJobStatus{} + } else { + yyv270 := &x.Status + yyv270.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys265) + } // end switch yys265 + } // end for yyj265 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJob) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj271 int + var yyb271 bool + var yyhl271 bool = l >= 0 + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv274 := &x.ObjectMeta + yyv274.CodecDecodeSelf(d) + } + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScheduledJobSpec{} + } else { + yyv275 := &x.Spec + yyv275.CodecDecodeSelf(d) + } + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScheduledJobStatus{} + } else { + yyv276 := &x.Status + yyv276.CodecDecodeSelf(d) + } + for { + yyj271++ + if yyhl271 { + yyb271 = yyj271 > l + } else { + yyb271 = r.CheckBreak() + } + if yyb271 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj271-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym277 := z.EncBinary() + _ = yym277 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep278 := !z.EncBinary() + yy2arr278 := z.EncBasicHandle().StructToArray + var yyq278 [4]bool + _, _, _ = yysep278, yyq278, yy2arr278 + const yyr278 bool = false + yyq278[0] = x.Kind != "" + yyq278[1] = x.APIVersion != "" + yyq278[2] = true + var yynn278 int + if yyr278 || yy2arr278 { + r.EncodeArrayStart(4) + } else { + yynn278 = 1 + for _, b := range yyq278 { + if b { + yynn278++ + } + } + r.EncodeMapStart(yynn278) + yynn278 = 0 + } + if yyr278 || yy2arr278 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq278[0] { + yym280 := z.EncBinary() + _ = yym280 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq278[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym281 := z.EncBinary() + _ = yym281 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr278 || yy2arr278 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq278[1] { + yym283 := z.EncBinary() + _ = yym283 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq278[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym284 := z.EncBinary() + _ = yym284 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr278 || yy2arr278 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq278[2] { + yy286 := &x.ListMeta + yym287 := z.EncBinary() + _ = yym287 + if false { + } else if z.HasExtensions() && z.EncExt(yy286) { + } else { + z.EncFallback(yy286) + } + } else { + r.EncodeNil() + } + } else { + if yyq278[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy288 := &x.ListMeta + yym289 := z.EncBinary() + _ = yym289 + if false { + } else if z.HasExtensions() && z.EncExt(yy288) { + } else { + z.EncFallback(yy288) + } + } + } + if yyr278 || yy2arr278 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym291 := z.EncBinary() + _ = yym291 + if false { + } else { + h.encSliceScheduledJob(([]ScheduledJob)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym292 := z.EncBinary() + _ = yym292 + if false { + } else { + h.encSliceScheduledJob(([]ScheduledJob)(x.Items), e) + } + } + } + if yyr278 || yy2arr278 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym293 := z.DecBinary() + _ = yym293 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct294 := r.ContainerType() + if yyct294 == codecSelferValueTypeMap1234 { + yyl294 := r.ReadMapStart() + if yyl294 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl294, d) + } + } else if yyct294 == codecSelferValueTypeArray1234 { + yyl294 := r.ReadArrayStart() + if yyl294 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl294, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys295Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys295Slc + var yyhl295 bool = l >= 0 + for yyj295 := 0; ; yyj295++ { + if yyhl295 { + if yyj295 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys295Slc = r.DecodeBytes(yys295Slc, true, true) + yys295 := string(yys295Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys295 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv298 := &x.ListMeta + yym299 := z.DecBinary() + _ = yym299 + if false { + } else if z.HasExtensions() && z.DecExt(yyv298) { + } else { + z.DecFallback(yyv298, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv300 := &x.Items + yym301 := z.DecBinary() + _ = yym301 + if false { + } else { + h.decSliceScheduledJob((*[]ScheduledJob)(yyv300), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys295) + } // end switch yys295 + } // end for yyj295 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj302 int + var yyb302 bool + var yyhl302 bool = l >= 0 + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv305 := &x.ListMeta + yym306 := z.DecBinary() + _ = yym306 + if false { + } else if z.HasExtensions() && z.DecExt(yyv305) { + } else { + z.DecFallback(yyv305, false) + } + } + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv307 := &x.Items + yym308 := z.DecBinary() + _ = yym308 + if false { + } else { + h.decSliceScheduledJob((*[]ScheduledJob)(yyv307), d) + } + } + for { + yyj302++ + if yyhl302 { + yyb302 = yyj302 > l + } else { + yyb302 = r.CheckBreak() + } + if yyb302 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj302-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym309 := z.EncBinary() + _ = yym309 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep310 := !z.EncBinary() + yy2arr310 := z.EncBasicHandle().StructToArray + var yyq310 [5]bool + _, _, _ = yysep310, yyq310, yy2arr310 + const yyr310 bool = false + yyq310[1] = x.StartingDeadlineSeconds != nil + yyq310[2] = x.ConcurrencyPolicy != "" + yyq310[3] = x.Suspend != nil + var yynn310 int + if yyr310 || yy2arr310 { + r.EncodeArrayStart(5) + } else { + yynn310 = 2 + for _, b := range yyq310 { + if b { + yynn310++ + } + } + r.EncodeMapStart(yynn310) + yynn310 = 0 + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym312 := z.EncBinary() + _ = yym312 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("schedule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym313 := z.EncBinary() + _ = yym313 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq310[1] { + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy315 := *x.StartingDeadlineSeconds + yym316 := z.EncBinary() + _ = yym316 + if false { + } else { + r.EncodeInt(int64(yy315)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq310[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startingDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy317 := *x.StartingDeadlineSeconds + yym318 := z.EncBinary() + _ = yym318 + if false { + } else { + r.EncodeInt(int64(yy317)) + } + } + } + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq310[2] { + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq310[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("concurrencyPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq310[3] { + if x.Suspend == nil { + r.EncodeNil() + } else { + yy321 := *x.Suspend + yym322 := z.EncBinary() + _ = yym322 + if false { + } else { + r.EncodeBool(bool(yy321)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq310[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("suspend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Suspend == nil { + r.EncodeNil() + } else { + yy323 := *x.Suspend + yym324 := z.EncBinary() + _ = yym324 + if false { + } else { + r.EncodeBool(bool(yy323)) + } + } + } + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy326 := &x.JobTemplate + yy326.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("jobTemplate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy327 := &x.JobTemplate + yy327.CodecEncodeSelf(e) + } + if yyr310 || yy2arr310 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym328 := z.DecBinary() + _ = yym328 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct329 := r.ContainerType() + if yyct329 == codecSelferValueTypeMap1234 { + yyl329 := r.ReadMapStart() + if yyl329 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl329, d) + } + } else if yyct329 == codecSelferValueTypeArray1234 { + yyl329 := r.ReadArrayStart() + if yyl329 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl329, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys330Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys330Slc + var yyhl330 bool = l >= 0 + for yyj330 := 0; ; yyj330++ { + if yyhl330 { + if yyj330 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys330Slc = r.DecodeBytes(yys330Slc, true, true) + yys330 := string(yys330Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys330 { + case "schedule": + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + x.Schedule = string(r.DecodeString()) + } + case "startingDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym333 := z.DecBinary() + _ = yym333 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "concurrencyPolicy": + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + x.ConcurrencyPolicy = ConcurrencyPolicy(r.DecodeString()) + } + case "suspend": + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym336 := z.DecBinary() + _ = yym336 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + case "jobTemplate": + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv337 := &x.JobTemplate + yyv337.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys330) + } // end switch yys330 + } // end for yyj330 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj338 int + var yyb338 bool + var yyhl338 bool = l >= 0 + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + x.Schedule = string(r.DecodeString()) + } + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym341 := z.DecBinary() + _ = yym341 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + x.ConcurrencyPolicy = ConcurrencyPolicy(r.DecodeString()) + } + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym344 := z.DecBinary() + _ = yym344 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv345 := &x.JobTemplate + yyv345.CodecDecodeSelf(d) + } + for { + yyj338++ + if yyhl338 { + yyb338 = yyj338 > l + } else { + yyb338 = r.CheckBreak() + } + if yyb338 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj338-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConcurrencyPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym346 := z.EncBinary() + _ = yym346 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConcurrencyPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym347 := z.DecBinary() + _ = yym347 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ScheduledJobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym348 := z.EncBinary() + _ = yym348 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep349 := !z.EncBinary() + yy2arr349 := z.EncBasicHandle().StructToArray + var yyq349 [2]bool + _, _, _ = yysep349, yyq349, yy2arr349 + const yyr349 bool = false + yyq349[0] = len(x.Active) != 0 + yyq349[1] = x.LastScheduleTime != nil + var yynn349 int + if yyr349 || yy2arr349 { + r.EncodeArrayStart(2) + } else { + yynn349 = 0 + for _, b := range yyq349 { + if b { + yynn349++ + } + } + r.EncodeMapStart(yynn349) + yynn349 = 0 + } + if yyr349 || yy2arr349 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq349[0] { + if x.Active == nil { + r.EncodeNil() + } else { + yym351 := z.EncBinary() + _ = yym351 + if false { + } else { + h.encSliceapi_ObjectReference(([]pkg2_api.ObjectReference)(x.Active), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq349[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Active == nil { + r.EncodeNil() + } else { + yym352 := z.EncBinary() + _ = yym352 + if false { + } else { + h.encSliceapi_ObjectReference(([]pkg2_api.ObjectReference)(x.Active), e) + } + } + } + } + if yyr349 || yy2arr349 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq349[1] { + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym354 := z.EncBinary() + _ = yym354 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym354 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym354 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq349[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScheduleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym355 := z.EncBinary() + _ = yym355 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym355 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym355 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } + } + if yyr349 || yy2arr349 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym356 := z.DecBinary() + _ = yym356 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct357 := r.ContainerType() + if yyct357 == codecSelferValueTypeMap1234 { + yyl357 := r.ReadMapStart() + if yyl357 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl357, d) + } + } else if yyct357 == codecSelferValueTypeArray1234 { + yyl357 := r.ReadArrayStart() + if yyl357 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl357, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys358Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys358Slc + var yyhl358 bool = l >= 0 + for yyj358 := 0; ; yyj358++ { + if yyhl358 { + if yyj358 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys358Slc = r.DecodeBytes(yys358Slc, true, true) + yys358 := string(yys358Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys358 { + case "active": + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv359 := &x.Active + yym360 := z.DecBinary() + _ = yym360 + if false { + } else { + h.decSliceapi_ObjectReference((*[]pkg2_api.ObjectReference)(yyv359), d) + } + } + case "lastScheduleTime": + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_unversioned.Time) + } + yym362 := z.DecBinary() + _ = yym362 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym362 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym362 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys358) + } // end switch yys358 + } // end for yyj358 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj363 int + var yyb363 bool + var yyhl363 bool = l >= 0 + yyj363++ + if yyhl363 { + yyb363 = yyj363 > l + } else { + yyb363 = r.CheckBreak() + } + if yyb363 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv364 := &x.Active + yym365 := z.DecBinary() + _ = yym365 + if false { + } else { + h.decSliceapi_ObjectReference((*[]pkg2_api.ObjectReference)(yyv364), d) + } + } + yyj363++ + if yyhl363 { + yyb363 = yyj363 > l + } else { + yyb363 = r.CheckBreak() + } + if yyb363 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_unversioned.Time) + } + yym367 := z.DecBinary() + _ = yym367 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym367 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym367 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + for { + yyj363++ + if yyhl363 { + yyb363 = yyj363 > l + } else { + yyb363 = r.CheckBreak() + } + if yyb363 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj363-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceJob(v []Job, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv368 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy369 := &yyv368 + yy369.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv370 := *v + yyh370, yyl370 := z.DecSliceHelperStart() + var yyc370 bool + if yyl370 == 0 { + if yyv370 == nil { + yyv370 = []Job{} + yyc370 = true + } else if len(yyv370) != 0 { + yyv370 = yyv370[:0] + yyc370 = true + } + } else if yyl370 > 0 { + var yyrr370, yyrl370 int + var yyrt370 bool + if yyl370 > cap(yyv370) { + + yyrg370 := len(yyv370) > 0 + yyv2370 := yyv370 + yyrl370, yyrt370 = z.DecInferLen(yyl370, z.DecBasicHandle().MaxInitLen, 800) + if yyrt370 { + if yyrl370 <= cap(yyv370) { + yyv370 = yyv370[:yyrl370] + } else { + yyv370 = make([]Job, yyrl370) + } + } else { + yyv370 = make([]Job, yyrl370) + } + yyc370 = true + yyrr370 = len(yyv370) + if yyrg370 { + copy(yyv370, yyv2370) + } + } else if yyl370 != len(yyv370) { + yyv370 = yyv370[:yyl370] + yyc370 = true + } + yyj370 := 0 + for ; yyj370 < yyrr370; yyj370++ { + yyh370.ElemContainerState(yyj370) + if r.TryDecodeAsNil() { + yyv370[yyj370] = Job{} + } else { + yyv371 := &yyv370[yyj370] + yyv371.CodecDecodeSelf(d) + } + + } + if yyrt370 { + for ; yyj370 < yyl370; yyj370++ { + yyv370 = append(yyv370, Job{}) + yyh370.ElemContainerState(yyj370) + if r.TryDecodeAsNil() { + yyv370[yyj370] = Job{} + } else { + yyv372 := &yyv370[yyj370] + yyv372.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj370 := 0 + for ; !r.CheckBreak(); yyj370++ { + + if yyj370 >= len(yyv370) { + yyv370 = append(yyv370, Job{}) // var yyz370 Job + yyc370 = true + } + yyh370.ElemContainerState(yyj370) + if yyj370 < len(yyv370) { + if r.TryDecodeAsNil() { + yyv370[yyj370] = Job{} + } else { + yyv373 := &yyv370[yyj370] + yyv373.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj370 < len(yyv370) { + yyv370 = yyv370[:yyj370] + yyc370 = true + } else if yyj370 == 0 && yyv370 == nil { + yyv370 = []Job{} + yyc370 = true + } + } + yyh370.End() + if yyc370 { + *v = yyv370 + } +} + +func (x codecSelfer1234) encSliceJobCondition(v []JobCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv374 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy375 := &yyv374 + yy375.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJobCondition(v *[]JobCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv376 := *v + yyh376, yyl376 := z.DecSliceHelperStart() + var yyc376 bool + if yyl376 == 0 { + if yyv376 == nil { + yyv376 = []JobCondition{} + yyc376 = true + } else if len(yyv376) != 0 { + yyv376 = yyv376[:0] + yyc376 = true + } + } else if yyl376 > 0 { + var yyrr376, yyrl376 int + var yyrt376 bool + if yyl376 > cap(yyv376) { + + yyrg376 := len(yyv376) > 0 + yyv2376 := yyv376 + yyrl376, yyrt376 = z.DecInferLen(yyl376, z.DecBasicHandle().MaxInitLen, 112) + if yyrt376 { + if yyrl376 <= cap(yyv376) { + yyv376 = yyv376[:yyrl376] + } else { + yyv376 = make([]JobCondition, yyrl376) + } + } else { + yyv376 = make([]JobCondition, yyrl376) + } + yyc376 = true + yyrr376 = len(yyv376) + if yyrg376 { + copy(yyv376, yyv2376) + } + } else if yyl376 != len(yyv376) { + yyv376 = yyv376[:yyl376] + yyc376 = true + } + yyj376 := 0 + for ; yyj376 < yyrr376; yyj376++ { + yyh376.ElemContainerState(yyj376) + if r.TryDecodeAsNil() { + yyv376[yyj376] = JobCondition{} + } else { + yyv377 := &yyv376[yyj376] + yyv377.CodecDecodeSelf(d) + } + + } + if yyrt376 { + for ; yyj376 < yyl376; yyj376++ { + yyv376 = append(yyv376, JobCondition{}) + yyh376.ElemContainerState(yyj376) + if r.TryDecodeAsNil() { + yyv376[yyj376] = JobCondition{} + } else { + yyv378 := &yyv376[yyj376] + yyv378.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj376 := 0 + for ; !r.CheckBreak(); yyj376++ { + + if yyj376 >= len(yyv376) { + yyv376 = append(yyv376, JobCondition{}) // var yyz376 JobCondition + yyc376 = true + } + yyh376.ElemContainerState(yyj376) + if yyj376 < len(yyv376) { + if r.TryDecodeAsNil() { + yyv376[yyj376] = JobCondition{} + } else { + yyv379 := &yyv376[yyj376] + yyv379.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj376 < len(yyv376) { + yyv376 = yyv376[:yyj376] + yyc376 = true + } else if yyj376 == 0 && yyv376 == nil { + yyv376 = []JobCondition{} + yyc376 = true + } + } + yyh376.End() + if yyc376 { + *v = yyv376 + } +} + +func (x codecSelfer1234) encSliceScheduledJob(v []ScheduledJob, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv380 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy381 := &yyv380 + yy381.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceScheduledJob(v *[]ScheduledJob, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv382 := *v + yyh382, yyl382 := z.DecSliceHelperStart() + var yyc382 bool + if yyl382 == 0 { + if yyv382 == nil { + yyv382 = []ScheduledJob{} + yyc382 = true + } else if len(yyv382) != 0 { + yyv382 = yyv382[:0] + yyc382 = true + } + } else if yyl382 > 0 { + var yyrr382, yyrl382 int + var yyrt382 bool + if yyl382 > cap(yyv382) { + + yyrg382 := len(yyv382) > 0 + yyv2382 := yyv382 + yyrl382, yyrt382 = z.DecInferLen(yyl382, z.DecBasicHandle().MaxInitLen, 1048) + if yyrt382 { + if yyrl382 <= cap(yyv382) { + yyv382 = yyv382[:yyrl382] + } else { + yyv382 = make([]ScheduledJob, yyrl382) + } + } else { + yyv382 = make([]ScheduledJob, yyrl382) + } + yyc382 = true + yyrr382 = len(yyv382) + if yyrg382 { + copy(yyv382, yyv2382) + } + } else if yyl382 != len(yyv382) { + yyv382 = yyv382[:yyl382] + yyc382 = true + } + yyj382 := 0 + for ; yyj382 < yyrr382; yyj382++ { + yyh382.ElemContainerState(yyj382) + if r.TryDecodeAsNil() { + yyv382[yyj382] = ScheduledJob{} + } else { + yyv383 := &yyv382[yyj382] + yyv383.CodecDecodeSelf(d) + } + + } + if yyrt382 { + for ; yyj382 < yyl382; yyj382++ { + yyv382 = append(yyv382, ScheduledJob{}) + yyh382.ElemContainerState(yyj382) + if r.TryDecodeAsNil() { + yyv382[yyj382] = ScheduledJob{} + } else { + yyv384 := &yyv382[yyj382] + yyv384.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj382 := 0 + for ; !r.CheckBreak(); yyj382++ { + + if yyj382 >= len(yyv382) { + yyv382 = append(yyv382, ScheduledJob{}) // var yyz382 ScheduledJob + yyc382 = true + } + yyh382.ElemContainerState(yyj382) + if yyj382 < len(yyv382) { + if r.TryDecodeAsNil() { + yyv382[yyj382] = ScheduledJob{} + } else { + yyv385 := &yyv382[yyj382] + yyv385.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj382 < len(yyv382) { + yyv382 = yyv382[:yyj382] + yyc382 = true + } else if yyj382 == 0 && yyv382 == nil { + yyv382 = []ScheduledJob{} + yyc382 = true + } + } + yyh382.End() + if yyc382 { + *v = yyv382 + } +} + +func (x codecSelfer1234) encSliceapi_ObjectReference(v []pkg2_api.ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv386 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy387 := &yyv386 + yy387.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceapi_ObjectReference(v *[]pkg2_api.ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv388 := *v + yyh388, yyl388 := z.DecSliceHelperStart() + var yyc388 bool + if yyl388 == 0 { + if yyv388 == nil { + yyv388 = []pkg2_api.ObjectReference{} + yyc388 = true + } else if len(yyv388) != 0 { + yyv388 = yyv388[:0] + yyc388 = true + } + } else if yyl388 > 0 { + var yyrr388, yyrl388 int + var yyrt388 bool + if yyl388 > cap(yyv388) { + + yyrg388 := len(yyv388) > 0 + yyv2388 := yyv388 + yyrl388, yyrt388 = z.DecInferLen(yyl388, z.DecBasicHandle().MaxInitLen, 112) + if yyrt388 { + if yyrl388 <= cap(yyv388) { + yyv388 = yyv388[:yyrl388] + } else { + yyv388 = make([]pkg2_api.ObjectReference, yyrl388) + } + } else { + yyv388 = make([]pkg2_api.ObjectReference, yyrl388) + } + yyc388 = true + yyrr388 = len(yyv388) + if yyrg388 { + copy(yyv388, yyv2388) + } + } else if yyl388 != len(yyv388) { + yyv388 = yyv388[:yyl388] + yyc388 = true + } + yyj388 := 0 + for ; yyj388 < yyrr388; yyj388++ { + yyh388.ElemContainerState(yyj388) + if r.TryDecodeAsNil() { + yyv388[yyj388] = pkg2_api.ObjectReference{} + } else { + yyv389 := &yyv388[yyj388] + yyv389.CodecDecodeSelf(d) + } + + } + if yyrt388 { + for ; yyj388 < yyl388; yyj388++ { + yyv388 = append(yyv388, pkg2_api.ObjectReference{}) + yyh388.ElemContainerState(yyj388) + if r.TryDecodeAsNil() { + yyv388[yyj388] = pkg2_api.ObjectReference{} + } else { + yyv390 := &yyv388[yyj388] + yyv390.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj388 := 0 + for ; !r.CheckBreak(); yyj388++ { + + if yyj388 >= len(yyv388) { + yyv388 = append(yyv388, pkg2_api.ObjectReference{}) // var yyz388 pkg2_api.ObjectReference + yyc388 = true + } + yyh388.ElemContainerState(yyj388) + if yyj388 < len(yyv388) { + if r.TryDecodeAsNil() { + yyv388[yyj388] = pkg2_api.ObjectReference{} + } else { + yyv391 := &yyv388[yyj388] + yyv391.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj388 < len(yyv388) { + yyv388 = yyv388[:yyj388] + yyc388 = true + } else if yyj388 == 0 && yyv388 == nil { + yyv388 = []pkg2_api.ObjectReference{} + yyc388 = true + } + } + yyh388.End() + if yyc388 { + *v = yyv388 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.go new file mode 100644 index 0000000000..3c8aec5a12 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/types.go @@ -0,0 +1,244 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package batch + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// +genclient=true + +// Job represents the configuration of a single job. +type Job struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status JobStatus `json:"status,omitempty"` +} + +// JobList is a collection of jobs. +type JobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of Job. + Items []Job `json:"items"` +} + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Template defines jobs that will be created from this template + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Template JobTemplateSpec `json:"template,omitempty"` +} + +// JobTemplateSpec describes the data a Job should have when created from a template +type JobTemplateSpec struct { + // Standard object's metadata of the jobs created from this template. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Specification of the desired behavior of the job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + Parallelism *int32 `json:"parallelism,omitempty"` + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + Completions *int32 `json:"completions,omitempty"` + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"` + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + + // ManualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + ManualSelector *bool `json:"manualSelector,omitempty"` + + // Template is the object that describes the pod that will be created when + // executing a job. + Template api.PodTemplateSpec `json:"template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + + // Conditions represent the latest available observations of an object's current state. + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"` + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + StartTime *unversioned.Time `json:"startTime,omitempty"` + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + CompletionTime *unversioned.Time `json:"completionTime,omitempty"` + + // Active is the number of actively running pods. + Active int32 `json:"active,omitempty"` + + // Succeeded is the number of pods which reached Phase Succeeded. + Succeeded int32 `json:"succeeded,omitempty"` + + // Failed is the number of pods which reached Phase Failed. + Failed int32 `json:"failed,omitempty"` +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType `json:"type"` + // Status of the condition, one of True, False, Unknown. + Status api.ConditionStatus `json:"status"` + // Last time the condition was checked. + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty"` + // Last time the condition transit from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty"` + // (brief) reason for the condition's last transition. + Reason string `json:"reason,omitempty"` + // Human readable message indicating details about last transition. + Message string `json:"message,omitempty"` +} + +// +genclient=true + +// ScheduledJob represents the configuration of a single scheduled job. +type ScheduledJob struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec is a structure defining the expected behavior of a job, including the schedule. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ScheduledJobSpec `json:"spec,omitempty"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ScheduledJobStatus `json:"status,omitempty"` +} + +// ScheduledJobList is a collection of scheduled jobs. +type ScheduledJobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of ScheduledJob. + Items []ScheduledJob `json:"items"` +} + +// ScheduledJobSpec describes how the job execution will look like and when it will actually run. +type ScheduledJobSpec struct { + + // Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + Schedule string `json:"schedule"` + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty"` + + // ConcurrencyPolicy specifies how to treat concurrent executions of a Job. + ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty"` + + // Suspend flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + Suspend *bool `json:"suspend,omitempty"` + + // JobTemplate is the object that describes the job that will be created when + // executing a ScheduledJob. + JobTemplate JobTemplateSpec `json:"jobTemplate"` +} + +// ConcurrencyPolicy describes how the job will be handled. +// Only one of the following concurrent policies may be specified. +// If none of the following policies is specified, the default one +// is AllowConcurrent. +type ConcurrencyPolicy string + +const ( + // AllowConcurrent allows ScheduledJobs to run concurrently. + AllowConcurrent ConcurrencyPolicy = "Allow" + + // ForbidConcurrent forbids concurrent runs, skipping next run if previous + // hasn't finished yet. + ForbidConcurrent ConcurrencyPolicy = "Forbid" + + // ReplaceConcurrent cancels currently running job and replaces it with a new one. + ReplaceConcurrent ConcurrencyPolicy = "Replace" +) + +// ScheduledJobStatus represents the current state of a Job. +type ScheduledJobStatus struct { + // Active holds pointers to currently running jobs. + Active []api.ObjectReference `json:"active,omitempty"` + + // LastScheduleTime keeps information of when was the last time the job was successfully scheduled. + LastScheduleTime *unversioned.Time `json:"lastScheduleTime,omitempty"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/conversion.go new file mode 100644 index 0000000000..30bcf44a67 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/conversion.go @@ -0,0 +1,102 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_batch_JobSpec_To_v1_JobSpec, + Convert_v1_JobSpec_To_batch_JobSpec, + ) + if err != nil { + return err + } + + return api.Scheme.AddFieldLabelConversionFunc("batch/v1", "Job", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) +} + +func Convert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for unversioned.LabelSelector -> v1.LabelSelector + if in.Selector != nil { + out.Selector = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for v1.LabelSelector -> unversioned.LabelSelector + if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + if err := Convert_v1_LabelSelector_To_unversioned_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/defaults.go new file mode 100644 index 0000000000..bc05051f1a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/defaults.go @@ -0,0 +1,46 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_Job, + ) +} + +func SetDefaults_Job(obj *Job) { + // For a non-parallel job, you can leave both `.spec.completions` and + // `.spec.parallelism` unset. When both are unset, both are defaulted to 1. + if obj.Spec.Completions == nil && obj.Spec.Parallelism == nil { + obj.Spec.Completions = new(int32) + *obj.Spec.Completions = 1 + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + if obj.Spec.Parallelism == nil { + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + labels := obj.Spec.Template.Labels + if labels != nil && len(obj.Labels) == 0 { + obj.Labels = labels + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/doc.go new file mode 100644 index 0000000000..608c03bdd0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch +// +k8s:openapi-gen=true + +package v1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.pb.go new file mode 100644 index 0000000000..427fc24921 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.pb.go @@ -0,0 +1,2089 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/batch/v1/generated.proto +// DO NOT EDIT! + +/* + Package v1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/batch/v1/generated.proto + + It has these top-level messages: + Job + JobCondition + JobList + JobSpec + JobStatus + LabelSelector + LabelSelectorRequirement +*/ +package v1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *Job) Reset() { *m = Job{} } +func (*Job) ProtoMessage() {} +func (*Job) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *JobCondition) Reset() { *m = JobCondition{} } +func (*JobCondition) ProtoMessage() {} +func (*JobCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *JobList) Reset() { *m = JobList{} } +func (*JobList) ProtoMessage() {} +func (*JobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *JobSpec) Reset() { *m = JobSpec{} } +func (*JobSpec) ProtoMessage() {} +func (*JobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobStatus) Reset() { *m = JobStatus{} } +func (*JobStatus) ProtoMessage() {} +func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *LabelSelector) Reset() { *m = LabelSelector{} } +func (*LabelSelector) ProtoMessage() {} +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{6} +} + +func init() { + proto.RegisterType((*Job)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.Job") + proto.RegisterType((*JobCondition)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.JobCondition") + proto.RegisterType((*JobList)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.JobList") + proto.RegisterType((*JobSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.JobSpec") + proto.RegisterType((*JobStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.JobStatus") + proto.RegisterType((*LabelSelector)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.LabelSelector") + proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v1.LabelSelectorRequirement") +} +func (m *Job) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Job) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *JobCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastProbeTime.Size())) + n4, err := m.LastProbeTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n5, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *JobList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *JobSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Parallelism != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Parallelism)) + } + if m.Completions != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n7, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.ManualSelector != nil { + data[i] = 0x28 + i++ + if *m.ManualSelector { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *JobStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.StartTime != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartTime.Size())) + n9, err := m.StartTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.CompletionTime != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.CompletionTime.Size())) + n10, err := m.CompletionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + } + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Active)) + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Succeeded)) + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Failed)) + return i, nil +} + +func (m *LabelSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k := range m.MatchLabels { + data[i] = 0xa + i++ + v := m.MatchLabels[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LabelSelectorRequirement) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelectorRequirement) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *Job) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *JobSpec) Size() (n int) { + var l int + _ = l + if m.Parallelism != nil { + n += 1 + sovGenerated(uint64(*m.Parallelism)) + } + if m.Completions != nil { + n += 1 + sovGenerated(uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ManualSelector != nil { + n += 2 + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CompletionTime != nil { + l = m.CompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Active)) + n += 1 + sovGenerated(uint64(m.Succeeded)) + n += 1 + sovGenerated(uint64(m.Failed)) + return n +} + +func (m *LabelSelector) Size() (n int) { + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k, v := range m.MatchLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LabelSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Job) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Job{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "JobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "JobStatus", "JobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *JobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Job", "Job", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobSpec{`, + `Parallelism:` + valueToStringGenerated(this.Parallelism) + `,`, + `Completions:` + valueToStringGenerated(this.Completions) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `ManualSelector:` + valueToStringGenerated(this.ManualSelector) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "JobCondition", "JobCondition", 1), `&`, ``, 1) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `Active:` + fmt.Sprintf("%v", this.Active) + `,`, + `Succeeded:` + fmt.Sprintf("%v", this.Succeeded) + `,`, + `Failed:` + fmt.Sprintf("%v", this.Failed) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelector) String() string { + if this == nil { + return "nil" + } + keysForMatchLabels := make([]string, 0, len(this.MatchLabels)) + for k := range this.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + mapStringForMatchLabels := "map[string]string{" + for _, k := range keysForMatchLabels { + mapStringForMatchLabels += fmt.Sprintf("%v: %v,", k, this.MatchLabels[k]) + } + mapStringForMatchLabels += "}" + s := strings.Join([]string{`&LabelSelector{`, + `MatchLabels:` + mapStringForMatchLabels + `,`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "LabelSelectorRequirement", "LabelSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LabelSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Job) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Job: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Job: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = JobConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Job{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Parallelism", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Parallelism = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Completions", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Completions = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ManualSelector", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ManualSelector = &b + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, JobCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.StartTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CompletionTime == nil { + m.CompletionTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.CompletionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + m.Active = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Active |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Succeeded", wireType) + } + m.Succeeded = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Succeeded |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Failed", wireType) + } + m.Failed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Failed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.MatchLabels == nil { + m.MatchLabels = make(map[string]string) + } + m.MatchLabels[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, LabelSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelectorRequirement) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = LabelSelectorOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 1027 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x6e, 0x23, 0x45, + 0x10, 0x8e, 0x3d, 0xb1, 0x63, 0xb7, 0x93, 0xac, 0x69, 0x88, 0x64, 0x2c, 0x91, 0xac, 0x0c, 0x42, + 0xbb, 0x62, 0x33, 0x23, 0x07, 0x90, 0x56, 0x2b, 0xb1, 0x12, 0x13, 0x82, 0x04, 0xc4, 0x24, 0x6a, + 0x47, 0x2b, 0xc4, 0xcf, 0xa1, 0x3d, 0xae, 0x75, 0x86, 0x8c, 0x67, 0x86, 0xe9, 0x1e, 0x43, 0x38, + 0x21, 0x71, 0xe0, 0xca, 0x43, 0xf0, 0x0c, 0xec, 0x2b, 0xe4, 0xb8, 0x70, 0xe2, 0x14, 0xc1, 0xf2, + 0x16, 0x9c, 0xe8, 0xee, 0xe9, 0xf9, 0xf1, 0x5f, 0xe4, 0xec, 0xa1, 0x25, 0x77, 0x75, 0x7d, 0x5f, + 0x55, 0x77, 0x7d, 0x55, 0x63, 0xf4, 0xee, 0xc5, 0x43, 0x66, 0xba, 0x81, 0x75, 0x11, 0x0f, 0x20, + 0xf2, 0x81, 0x03, 0xb3, 0xc2, 0x8b, 0x91, 0x45, 0x43, 0x97, 0x59, 0x03, 0xca, 0x9d, 0x73, 0x6b, + 0xd2, 0xb5, 0x46, 0xe0, 0x43, 0x44, 0x39, 0x0c, 0xcd, 0x30, 0x0a, 0x78, 0x80, 0xdf, 0x4c, 0x40, + 0x66, 0x0e, 0x32, 0x05, 0xc8, 0x94, 0x20, 0x53, 0x81, 0xcc, 0x49, 0xb7, 0xbd, 0x3f, 0x72, 0xf9, + 0x79, 0x3c, 0x30, 0x9d, 0x60, 0x6c, 0x8d, 0x82, 0x51, 0x60, 0x29, 0xec, 0x20, 0x7e, 0xaa, 0x76, + 0x6a, 0xa3, 0x7e, 0x25, 0x9c, 0xed, 0x83, 0xa5, 0x89, 0x58, 0x11, 0xb0, 0x20, 0x8e, 0x1c, 0x98, + 0xcd, 0xa3, 0xfd, 0xfe, 0x72, 0x4c, 0xec, 0x4f, 0x20, 0x62, 0x6e, 0xe0, 0xc3, 0x70, 0x0e, 0xf6, + 0x60, 0x39, 0x6c, 0xfe, 0xb2, 0xed, 0xfd, 0xc5, 0xde, 0x51, 0xec, 0x73, 0x77, 0x3c, 0x9f, 0x53, + 0x77, 0xb1, 0x7b, 0xcc, 0x5d, 0xcf, 0x72, 0x7d, 0xce, 0x78, 0x34, 0x0b, 0xe9, 0xfc, 0x52, 0x46, + 0xc6, 0xa7, 0xc1, 0x00, 0x7f, 0x81, 0x6a, 0x63, 0xe0, 0x74, 0x48, 0x39, 0x6d, 0x95, 0xee, 0x96, + 0xee, 0x35, 0x0e, 0xee, 0x99, 0x4b, 0x5f, 0x5a, 0x3c, 0xb1, 0x79, 0x32, 0xf8, 0x16, 0x1c, 0xde, + 0x13, 0x18, 0x1b, 0x5f, 0x5d, 0xef, 0xad, 0xbd, 0xb8, 0xde, 0x43, 0xb9, 0x8d, 0x64, 0x6c, 0xf8, + 0x73, 0xb4, 0xce, 0x42, 0x70, 0x5a, 0x65, 0xc5, 0xfa, 0xc0, 0x5c, 0xa1, 0x7e, 0xa6, 0xc8, 0xa8, + 0x2f, 0x30, 0xf6, 0xa6, 0x66, 0x5e, 0x97, 0x3b, 0xa2, 0x78, 0xf0, 0x13, 0x54, 0x65, 0x9c, 0xf2, + 0x98, 0xb5, 0x0c, 0xc5, 0x68, 0xae, 0xcc, 0xa8, 0x50, 0xf6, 0xb6, 0xe6, 0xac, 0x26, 0x7b, 0xa2, + 0xd9, 0x3a, 0x7f, 0x1a, 0x68, 0x53, 0x78, 0x1d, 0x06, 0xfe, 0xd0, 0xe5, 0xa2, 0x78, 0xf8, 0x3d, + 0xb4, 0xce, 0x2f, 0x43, 0x50, 0xcf, 0x51, 0xb7, 0xef, 0xa6, 0xa9, 0x9c, 0x09, 0xdb, 0x7f, 0xd7, + 0x7b, 0xcd, 0xa2, 0xaf, 0xb4, 0x11, 0xe5, 0x5d, 0x48, 0xaf, 0xac, 0x70, 0x8f, 0xa7, 0xc3, 0x09, + 0xe4, 0x8d, 0x12, 0x30, 0x33, 0xce, 0xe9, 0xf4, 0xf0, 0x39, 0xda, 0xf2, 0x28, 0xe3, 0xa7, 0x51, + 0x30, 0x80, 0x33, 0x51, 0x7c, 0x7d, 0xfb, 0x77, 0x6e, 0xa8, 0x52, 0x41, 0x87, 0xa6, 0x84, 0xd8, + 0x3b, 0x3a, 0x97, 0xad, 0xe3, 0x22, 0x13, 0x99, 0x26, 0xc6, 0xdf, 0x23, 0x2c, 0x0d, 0x67, 0x11, + 0xf5, 0x59, 0x72, 0x3b, 0x19, 0x6e, 0xfd, 0xf6, 0xe1, 0xda, 0x3a, 0x1c, 0x3e, 0x9e, 0xa3, 0x23, + 0x0b, 0x42, 0xe0, 0xb7, 0x51, 0x35, 0x02, 0xca, 0x02, 0xbf, 0x55, 0x51, 0x4f, 0x97, 0x55, 0x8a, + 0x28, 0x2b, 0xd1, 0xa7, 0xf8, 0x3e, 0xda, 0x18, 0x03, 0x63, 0x74, 0x04, 0xad, 0xaa, 0x72, 0xbc, + 0xa3, 0x1d, 0x37, 0x7a, 0x89, 0x99, 0xa4, 0xe7, 0x9d, 0x67, 0x25, 0xb4, 0x21, 0x0a, 0x75, 0xec, + 0x32, 0x8e, 0xbf, 0x99, 0x93, 0xb8, 0xb5, 0xe2, 0x6d, 0x24, 0x5c, 0x29, 0xbd, 0xa9, 0x03, 0xd5, + 0x52, 0x4b, 0x41, 0xe7, 0x3d, 0x54, 0x71, 0x39, 0x8c, 0x65, 0xdd, 0x8d, 0x9b, 0xdb, 0x67, 0x5a, + 0x96, 0xf6, 0x96, 0x26, 0xad, 0x7c, 0x22, 0xe1, 0x24, 0x61, 0xe9, 0x3c, 0x33, 0x54, 0xe6, 0x52, + 0xf8, 0xb8, 0x8b, 0x1a, 0x21, 0x8d, 0xa8, 0xe7, 0x81, 0xe7, 0xb2, 0xb1, 0x4a, 0xbe, 0x62, 0xdf, + 0x11, 0x90, 0xc6, 0x69, 0x6e, 0x26, 0x45, 0x1f, 0x09, 0x11, 0xc3, 0x2f, 0xf4, 0x40, 0xbe, 0x6e, + 0xa2, 0x45, 0x0d, 0x39, 0xcc, 0xcd, 0xa4, 0xe8, 0x83, 0x4f, 0xd0, 0x0e, 0x75, 0xb8, 0x3b, 0x81, + 0x8f, 0x80, 0x0e, 0x3d, 0xd7, 0x87, 0x3e, 0x38, 0x42, 0x8c, 0x49, 0x9f, 0x19, 0xf6, 0xeb, 0x02, + 0xbc, 0xf3, 0xe1, 0x22, 0x07, 0xb2, 0x18, 0x87, 0xbf, 0x46, 0x35, 0x06, 0x9e, 0x98, 0x08, 0x41, + 0xa4, 0xe5, 0x73, 0xb0, 0xd2, 0xa3, 0x1c, 0xd3, 0x01, 0x78, 0x7d, 0x8d, 0xb4, 0x37, 0xe5, 0x7b, + 0xa7, 0x3b, 0x92, 0x31, 0xe2, 0x47, 0x68, 0x7b, 0x4c, 0xfd, 0x98, 0x66, 0x9e, 0x4a, 0x35, 0x35, + 0x1b, 0x0b, 0xff, 0xed, 0xde, 0xd4, 0x09, 0x99, 0xf1, 0xc4, 0x5f, 0xa1, 0x9a, 0x78, 0xe4, 0xd0, + 0x13, 0x83, 0x50, 0x49, 0xa8, 0x71, 0xb0, 0x7f, 0xf3, 0xb4, 0x3b, 0x0d, 0x86, 0x67, 0x1a, 0xa0, + 0x06, 0x53, 0x26, 0x84, 0xd4, 0x4a, 0x32, 0xc2, 0xce, 0xef, 0x06, 0xaa, 0x67, 0xe3, 0x06, 0x03, + 0x42, 0x4e, 0xda, 0xd2, 0x4c, 0x94, 0x4e, 0x6a, 0xa3, 0xbb, 0xaa, 0x36, 0xb2, 0x61, 0x90, 0xcf, + 0xd8, 0xcc, 0xc4, 0x48, 0x81, 0x58, 0xcc, 0xef, 0xba, 0x18, 0x14, 0x11, 0x57, 0xbd, 0x5a, 0xbe, + 0x7d, 0xaf, 0x6e, 0x09, 0xee, 0x7a, 0x3f, 0x65, 0x20, 0x39, 0x19, 0x1e, 0xa1, 0xed, 0x5c, 0x25, + 0x2f, 0x3b, 0x79, 0x54, 0x51, 0x0e, 0xa7, 0x68, 0xc8, 0x0c, 0xad, 0x6c, 0xff, 0x44, 0x47, 0x4a, + 0x2c, 0x95, 0xbc, 0xfd, 0x13, 0xd1, 0x11, 0x7d, 0x8a, 0x2d, 0x71, 0xd5, 0xd8, 0x71, 0x00, 0x86, + 0x30, 0x54, 0x35, 0xaf, 0xd8, 0xaf, 0x68, 0xd7, 0x7a, 0x3f, 0x3d, 0x20, 0xb9, 0x8f, 0x24, 0x7e, + 0x4a, 0x5d, 0x4f, 0x78, 0x57, 0xa7, 0x89, 0x3f, 0x56, 0x56, 0xa2, 0x4f, 0x3b, 0x7f, 0x94, 0xd1, + 0xd6, 0x94, 0xf6, 0xf0, 0x8f, 0xa8, 0x31, 0x96, 0xe5, 0x50, 0xd6, 0xb4, 0x7a, 0x87, 0xb7, 0x17, + 0xb1, 0xd9, 0xcb, 0x59, 0x8e, 0x7c, 0x1e, 0x5d, 0xda, 0xaf, 0xea, 0x1c, 0x1a, 0x85, 0x13, 0x52, + 0x0c, 0x86, 0x7f, 0x2e, 0xa1, 0xa6, 0xda, 0x1f, 0xfd, 0x10, 0x8a, 0x7f, 0x21, 0x4c, 0xf7, 0xb1, + 0xcc, 0xe0, 0x83, 0xdb, 0x67, 0x40, 0xe0, 0xbb, 0xd8, 0x8d, 0x60, 0x0c, 0x3e, 0xb7, 0x5b, 0x3a, + 0x76, 0xb3, 0x37, 0x43, 0x4f, 0xe6, 0x02, 0xb6, 0x1f, 0xa3, 0xe6, 0x6c, 0xee, 0xb8, 0x89, 0x8c, + 0x0b, 0xb8, 0x4c, 0xbe, 0x8b, 0x44, 0xfe, 0xc4, 0xaf, 0xa1, 0xca, 0x84, 0x7a, 0x71, 0xa2, 0xbc, + 0x3a, 0x49, 0x36, 0x8f, 0xca, 0x0f, 0x4b, 0x9d, 0xdf, 0x4a, 0xa8, 0xb5, 0x2c, 0x11, 0xfc, 0x46, + 0x81, 0xc8, 0x6e, 0xe8, 0xac, 0x8c, 0xcf, 0xe0, 0x32, 0x61, 0x3d, 0x42, 0xb5, 0x20, 0x94, 0xff, + 0x56, 0x44, 0x6f, 0x27, 0x1f, 0xd3, 0xfb, 0x69, 0xdb, 0x9d, 0x68, 0xbb, 0xf8, 0x9c, 0xee, 0x4c, + 0xd1, 0xa7, 0x07, 0x24, 0x83, 0xe2, 0x0e, 0xaa, 0xaa, 0x7c, 0xe4, 0x20, 0x33, 0x04, 0x09, 0x92, + 0xa5, 0x7f, 0xa2, 0x2c, 0x44, 0x9f, 0xd8, 0x6f, 0x5d, 0xfd, 0xb3, 0xbb, 0xf6, 0x5c, 0xac, 0xbf, + 0xc4, 0xfa, 0xe9, 0xc5, 0x6e, 0xe9, 0x4a, 0xac, 0xe7, 0x62, 0xfd, 0x2d, 0xd6, 0xaf, 0xff, 0xee, + 0xae, 0x7d, 0x59, 0x9e, 0x74, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x8b, 0x10, 0xf1, 0xb1, + 0x0a, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.proto new file mode 100644 index 0000000000..264959e4f8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/generated.proto @@ -0,0 +1,178 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.batch.v1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1"; + +// Job represents the configuration of a single job. +message Job { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobSpec spec = 2; + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobStatus status = 3; +} + +// JobCondition describes current state of a job. +message JobCondition { + // Type of job condition, Complete or Failed. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time the condition was checked. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastProbeTime = 3; + + // Last time the condition transit from one status to another. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + optional string reason = 5; + + // Human readable message indicating details about last transition. + optional string message = 6; +} + +// JobList is a collection of jobs. +message JobList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Job. + repeated Job items = 2; +} + +// JobSpec describes how the job execution will look like. +message JobSpec { + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 parallelism = 1; + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 completions = 2; + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + optional int64 activeDeadlineSeconds = 3; + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional LabelSelector selector = 4; + + // ManualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + optional bool manualSelector = 5; + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 6; +} + +// JobStatus represents the current state of a Job. +message JobStatus { + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + repeated JobCondition conditions = 1; + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time startTime = 2; + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time completionTime = 3; + + // Active is the number of actively running pods. + optional int32 active = 4; + + // Succeeded is the number of pods which reached Phase Succeeded. + optional int32 succeeded = 5; + + // Failed is the number of pods which reached Phase Failed. + optional int32 failed = 6; +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + map<string, string> matchLabels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + repeated LabelSelectorRequirement matchExpressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + optional string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + optional string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + repeated string values = 3; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/register.go new file mode 100644 index 0000000000..b9b0c12aae --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/register.go @@ -0,0 +1,47 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.generated.go new file mode 100644 index 0000000000..14607fc4b0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.generated.go @@ -0,0 +1,3185 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_unversioned.TypeMeta + var v2 pkg2_v1.ObjectMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *Job) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Job) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Job) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Job) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [4]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Kind != "" + yyq33[1] = x.APIVersion != "" + yyq33[2] = true + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(4) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yy41 := &x.ListMeta + yym42 := z.EncBinary() + _ = yym42 + if false { + } else if z.HasExtensions() && z.EncExt(yy41) { + } else { + z.EncFallback(yy41) + } + } else { + r.EncodeNil() + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy43 := &x.ListMeta + yym44 := z.EncBinary() + _ = yym44 + if false { + } else if z.HasExtensions() && z.EncExt(yy43) { + } else { + z.EncFallback(yy43) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym48 := z.DecBinary() + _ = yym48 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct49 := r.ContainerType() + if yyct49 == codecSelferValueTypeMap1234 { + yyl49 := r.ReadMapStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl49, d) + } + } else if yyct49 == codecSelferValueTypeArray1234 { + yyl49 := r.ReadArrayStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl49, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys50Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys50Slc + var yyhl50 bool = l >= 0 + for yyj50 := 0; ; yyj50++ { + if yyhl50 { + if yyj50 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys50Slc = r.DecodeBytes(yys50Slc, true, true) + yys50 := string(yys50Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys50 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv53 := &x.ListMeta + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(yyv53) { + } else { + z.DecFallback(yyv53, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv55 := &x.Items + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + h.decSliceJob((*[]Job)(yyv55), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys50) + } // end switch yys50 + } // end for yyj50 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj57 int + var yyb57 bool + var yyhl57 bool = l >= 0 + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv60 := &x.ListMeta + yym61 := z.DecBinary() + _ = yym61 + if false { + } else if z.HasExtensions() && z.DecExt(yyv60) { + } else { + z.DecFallback(yyv60, false) + } + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv62 := &x.Items + yym63 := z.DecBinary() + _ = yym63 + if false { + } else { + h.decSliceJob((*[]Job)(yyv62), d) + } + } + for { + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj57-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep65 := !z.EncBinary() + yy2arr65 := z.EncBasicHandle().StructToArray + var yyq65 [6]bool + _, _, _ = yysep65, yyq65, yy2arr65 + const yyr65 bool = false + yyq65[0] = x.Parallelism != nil + yyq65[1] = x.Completions != nil + yyq65[2] = x.ActiveDeadlineSeconds != nil + yyq65[3] = x.Selector != nil + yyq65[4] = x.ManualSelector != nil + var yynn65 int + if yyr65 || yy2arr65 { + r.EncodeArrayStart(6) + } else { + yynn65 = 1 + for _, b := range yyq65 { + if b { + yynn65++ + } + } + r.EncodeMapStart(yynn65) + yynn65 = 0 + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[0] { + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy67 := *x.Parallelism + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeInt(int64(yy67)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parallelism")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy69 := *x.Parallelism + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeInt(int64(yy69)) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[1] { + if x.Completions == nil { + r.EncodeNil() + } else { + yy72 := *x.Completions + yym73 := z.EncBinary() + _ = yym73 + if false { + } else { + r.EncodeInt(int64(yy72)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Completions == nil { + r.EncodeNil() + } else { + yy74 := *x.Completions + yym75 := z.EncBinary() + _ = yym75 + if false { + } else { + r.EncodeInt(int64(yy74)) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[2] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy77 := *x.ActiveDeadlineSeconds + yym78 := z.EncBinary() + _ = yym78 + if false { + } else { + r.EncodeInt(int64(yy77)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy79 := *x.ActiveDeadlineSeconds + yym80 := z.EncBinary() + _ = yym80 + if false { + } else { + r.EncodeInt(int64(yy79)) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[3] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq65[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[4] { + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy83 := *x.ManualSelector + yym84 := z.EncBinary() + _ = yym84 + if false { + } else { + r.EncodeBool(bool(yy83)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq65[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("manualSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy85 := *x.ManualSelector + yym86 := z.EncBinary() + _ = yym86 + if false { + } else { + r.EncodeBool(bool(yy85)) + } + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy88 := &x.Template + yy88.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy89 := &x.Template + yy89.CodecEncodeSelf(e) + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym90 := z.DecBinary() + _ = yym90 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct91 := r.ContainerType() + if yyct91 == codecSelferValueTypeMap1234 { + yyl91 := r.ReadMapStart() + if yyl91 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl91, d) + } + } else if yyct91 == codecSelferValueTypeArray1234 { + yyl91 := r.ReadArrayStart() + if yyl91 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl91, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys92Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys92Slc + var yyhl92 bool = l >= 0 + for yyj92 := 0; ; yyj92++ { + if yyhl92 { + if yyj92 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys92Slc = r.DecodeBytes(yys92Slc, true, true) + yys92 := string(yys92Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys92 { + case "parallelism": + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym94 := z.DecBinary() + _ = yym94 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + case "completions": + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym96 := z.DecBinary() + _ = yym96 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym98 := z.DecBinary() + _ = yym98 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "manualSelector": + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym101 := z.DecBinary() + _ = yym101 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv102 := &x.Template + yyv102.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys92) + } // end switch yys92 + } // end for yyj92 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj103 int + var yyb103 bool + var yyhl103 bool = l >= 0 + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym105 := z.DecBinary() + _ = yym105 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym107 := z.DecBinary() + _ = yym107 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym109 := z.DecBinary() + _ = yym109 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym112 := z.DecBinary() + _ = yym112 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv113 := &x.Template + yyv113.CodecDecodeSelf(d) + } + for { + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj103-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym114 := z.EncBinary() + _ = yym114 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep115 := !z.EncBinary() + yy2arr115 := z.EncBasicHandle().StructToArray + var yyq115 [6]bool + _, _, _ = yysep115, yyq115, yy2arr115 + const yyr115 bool = false + yyq115[0] = len(x.Conditions) != 0 + yyq115[1] = x.StartTime != nil + yyq115[2] = x.CompletionTime != nil + yyq115[3] = x.Active != 0 + yyq115[4] = x.Succeeded != 0 + yyq115[5] = x.Failed != 0 + var yynn115 int + if yyr115 || yy2arr115 { + r.EncodeArrayStart(6) + } else { + yynn115 = 0 + for _, b := range yyq115 { + if b { + yynn115++ + } + } + r.EncodeMapStart(yynn115) + yynn115 = 0 + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym117 := z.EncBinary() + _ = yym117 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[1] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym120 := z.EncBinary() + _ = yym120 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym120 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym120 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym121 := z.EncBinary() + _ = yym121 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym121 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym121 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[2] { + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym123 := z.EncBinary() + _ = yym123 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym123 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym123 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq115[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym124 := z.EncBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym124 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym124 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[3] { + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq115[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym127 := z.EncBinary() + _ = yym127 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[4] { + yym129 := z.EncBinary() + _ = yym129 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq115[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("succeeded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym130 := z.EncBinary() + _ = yym130 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq115[5] { + yym132 := z.EncBinary() + _ = yym132 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq115[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym133 := z.EncBinary() + _ = yym133 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } + } + if yyr115 || yy2arr115 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym134 := z.DecBinary() + _ = yym134 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct135 := r.ContainerType() + if yyct135 == codecSelferValueTypeMap1234 { + yyl135 := r.ReadMapStart() + if yyl135 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl135, d) + } + } else if yyct135 == codecSelferValueTypeArray1234 { + yyl135 := r.ReadArrayStart() + if yyl135 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl135, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys136Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys136Slc + var yyhl136 bool = l >= 0 + for yyj136 := 0; ; yyj136++ { + if yyhl136 { + if yyj136 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys136Slc = r.DecodeBytes(yys136Slc, true, true) + yys136 := string(yys136Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys136 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv137 := &x.Conditions + yym138 := z.DecBinary() + _ = yym138 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv137), d) + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym140 := z.DecBinary() + _ = yym140 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym140 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym140 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "completionTime": + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym142 := z.DecBinary() + _ = yym142 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym142 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym142 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + case "active": + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + case "succeeded": + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + case "failed": + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys136) + } // end switch yys136 + } // end for yyj136 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj146 int + var yyb146 bool + var yyhl146 bool = l >= 0 + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv147 := &x.Conditions + yym148 := z.DecBinary() + _ = yym148 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv147), d) + } + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym150 := z.DecBinary() + _ = yym150 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym150 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym150 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym152 := z.DecBinary() + _ = yym152 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym152 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym152 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + for { + yyj146++ + if yyhl146 { + yyb146 = yyj146 > l + } else { + yyb146 = r.CheckBreak() + } + if yyb146 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj146-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x JobConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym156 := z.EncBinary() + _ = yym156 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *JobConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym157 := z.DecBinary() + _ = yym157 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *JobCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym158 := z.EncBinary() + _ = yym158 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep159 := !z.EncBinary() + yy2arr159 := z.EncBasicHandle().StructToArray + var yyq159 [6]bool + _, _, _ = yysep159, yyq159, yy2arr159 + const yyr159 bool = false + yyq159[2] = true + yyq159[3] = true + yyq159[4] = x.Reason != "" + yyq159[5] = x.Message != "" + var yynn159 int + if yyr159 || yy2arr159 { + r.EncodeArrayStart(6) + } else { + yynn159 = 2 + for _, b := range yyq159 { + if b { + yynn159++ + } + } + r.EncodeMapStart(yynn159) + yynn159 = 0 + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym162 := z.EncBinary() + _ = yym162 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym163 := z.EncBinary() + _ = yym163 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq159[2] { + yy165 := &x.LastProbeTime + yym166 := z.EncBinary() + _ = yym166 + if false { + } else if z.HasExtensions() && z.EncExt(yy165) { + } else if yym166 { + z.EncBinaryMarshal(yy165) + } else if !yym166 && z.IsJSONHandle() { + z.EncJSONMarshal(yy165) + } else { + z.EncFallback(yy165) + } + } else { + r.EncodeNil() + } + } else { + if yyq159[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy167 := &x.LastProbeTime + yym168 := z.EncBinary() + _ = yym168 + if false { + } else if z.HasExtensions() && z.EncExt(yy167) { + } else if yym168 { + z.EncBinaryMarshal(yy167) + } else if !yym168 && z.IsJSONHandle() { + z.EncJSONMarshal(yy167) + } else { + z.EncFallback(yy167) + } + } + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq159[3] { + yy170 := &x.LastTransitionTime + yym171 := z.EncBinary() + _ = yym171 + if false { + } else if z.HasExtensions() && z.EncExt(yy170) { + } else if yym171 { + z.EncBinaryMarshal(yy170) + } else if !yym171 && z.IsJSONHandle() { + z.EncJSONMarshal(yy170) + } else { + z.EncFallback(yy170) + } + } else { + r.EncodeNil() + } + } else { + if yyq159[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy172 := &x.LastTransitionTime + yym173 := z.EncBinary() + _ = yym173 + if false { + } else if z.HasExtensions() && z.EncExt(yy172) { + } else if yym173 { + z.EncBinaryMarshal(yy172) + } else if !yym173 && z.IsJSONHandle() { + z.EncJSONMarshal(yy172) + } else { + z.EncFallback(yy172) + } + } + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq159[4] { + yym175 := z.EncBinary() + _ = yym175 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq159[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym176 := z.EncBinary() + _ = yym176 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq159[5] { + yym178 := z.EncBinary() + _ = yym178 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq159[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym179 := z.EncBinary() + _ = yym179 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr159 || yy2arr159 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym180 := z.DecBinary() + _ = yym180 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct181 := r.ContainerType() + if yyct181 == codecSelferValueTypeMap1234 { + yyl181 := r.ReadMapStart() + if yyl181 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl181, d) + } + } else if yyct181 == codecSelferValueTypeArray1234 { + yyl181 := r.ReadArrayStart() + if yyl181 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl181, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys182Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys182Slc + var yyhl182 bool = l >= 0 + for yyj182 := 0; ; yyj182++ { + if yyhl182 { + if yyj182 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys182Slc = r.DecodeBytes(yys182Slc, true, true) + yys182 := string(yys182Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys182 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv185 := &x.LastProbeTime + yym186 := z.DecBinary() + _ = yym186 + if false { + } else if z.HasExtensions() && z.DecExt(yyv185) { + } else if yym186 { + z.DecBinaryUnmarshal(yyv185) + } else if !yym186 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv185) + } else { + z.DecFallback(yyv185, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv187 := &x.LastTransitionTime + yym188 := z.DecBinary() + _ = yym188 + if false { + } else if z.HasExtensions() && z.DecExt(yyv187) { + } else if yym188 { + z.DecBinaryUnmarshal(yyv187) + } else if !yym188 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv187) + } else { + z.DecFallback(yyv187, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys182) + } // end switch yys182 + } // end for yyj182 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj191 int + var yyb191 bool + var yyhl191 bool = l >= 0 + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv194 := &x.LastProbeTime + yym195 := z.DecBinary() + _ = yym195 + if false { + } else if z.HasExtensions() && z.DecExt(yyv194) { + } else if yym195 { + z.DecBinaryUnmarshal(yyv194) + } else if !yym195 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv194) + } else { + z.DecFallback(yyv194, false) + } + } + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv196 := &x.LastTransitionTime + yym197 := z.DecBinary() + _ = yym197 + if false { + } else if z.HasExtensions() && z.DecExt(yyv196) { + } else if yym197 { + z.DecBinaryUnmarshal(yyv196) + } else if !yym197 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv196) + } else { + z.DecFallback(yyv196, false) + } + } + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj191++ + if yyhl191 { + yyb191 = yyj191 > l + } else { + yyb191 = r.CheckBreak() + } + if yyb191 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj191-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym200 := z.EncBinary() + _ = yym200 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep201 := !z.EncBinary() + yy2arr201 := z.EncBasicHandle().StructToArray + var yyq201 [2]bool + _, _, _ = yysep201, yyq201, yy2arr201 + const yyr201 bool = false + yyq201[0] = len(x.MatchLabels) != 0 + yyq201[1] = len(x.MatchExpressions) != 0 + var yynn201 int + if yyr201 || yy2arr201 { + r.EncodeArrayStart(2) + } else { + yynn201 = 0 + for _, b := range yyq201 { + if b { + yynn201++ + } + } + r.EncodeMapStart(yynn201) + yynn201 = 0 + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[0] { + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym203 := z.EncBinary() + _ = yym203 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq201[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchLabels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym204 := z.EncBinary() + _ = yym204 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[1] { + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym206 := z.EncBinary() + _ = yym206 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq201[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym207 := z.EncBinary() + _ = yym207 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym208 := z.DecBinary() + _ = yym208 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct209 := r.ContainerType() + if yyct209 == codecSelferValueTypeMap1234 { + yyl209 := r.ReadMapStart() + if yyl209 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl209, d) + } + } else if yyct209 == codecSelferValueTypeArray1234 { + yyl209 := r.ReadArrayStart() + if yyl209 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl209, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys210Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys210Slc + var yyhl210 bool = l >= 0 + for yyj210 := 0; ; yyj210++ { + if yyhl210 { + if yyj210 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys210Slc = r.DecodeBytes(yys210Slc, true, true) + yys210 := string(yys210Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys210 { + case "matchLabels": + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv211 := &x.MatchLabels + yym212 := z.DecBinary() + _ = yym212 + if false { + } else { + z.F.DecMapStringStringX(yyv211, false, d) + } + } + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv213 := &x.MatchExpressions + yym214 := z.DecBinary() + _ = yym214 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv213), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys210) + } // end switch yys210 + } // end for yyj210 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj215 int + var yyb215 bool + var yyhl215 bool = l >= 0 + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv216 := &x.MatchLabels + yym217 := z.DecBinary() + _ = yym217 + if false { + } else { + z.F.DecMapStringStringX(yyv216, false, d) + } + } + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv218 := &x.MatchExpressions + yym219 := z.DecBinary() + _ = yym219 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv218), d) + } + } + for { + yyj215++ + if yyhl215 { + yyb215 = yyj215 > l + } else { + yyb215 = r.CheckBreak() + } + if yyb215 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj215-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym220 := z.EncBinary() + _ = yym220 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep221 := !z.EncBinary() + yy2arr221 := z.EncBasicHandle().StructToArray + var yyq221 [3]bool + _, _, _ = yysep221, yyq221, yy2arr221 + const yyr221 bool = false + yyq221[2] = len(x.Values) != 0 + var yynn221 int + if yyr221 || yy2arr221 { + r.EncodeArrayStart(3) + } else { + yynn221 = 2 + for _, b := range yyq221 { + if b { + yynn221++ + } + } + r.EncodeMapStart(yynn221) + yynn221 = 0 + } + if yyr221 || yy2arr221 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym223 := z.EncBinary() + _ = yym223 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym224 := z.EncBinary() + _ = yym224 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr221 || yy2arr221 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr221 || yy2arr221 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq221[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym227 := z.EncBinary() + _ = yym227 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq221[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym228 := z.EncBinary() + _ = yym228 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr221 || yy2arr221 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym229 := z.DecBinary() + _ = yym229 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct230 := r.ContainerType() + if yyct230 == codecSelferValueTypeMap1234 { + yyl230 := r.ReadMapStart() + if yyl230 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl230, d) + } + } else if yyct230 == codecSelferValueTypeArray1234 { + yyl230 := r.ReadArrayStart() + if yyl230 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl230, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys231Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys231Slc + var yyhl231 bool = l >= 0 + for yyj231 := 0; ; yyj231++ { + if yyhl231 { + if yyj231 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys231Slc = r.DecodeBytes(yys231Slc, true, true) + yys231 := string(yys231Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys231 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv234 := &x.Values + yym235 := z.DecBinary() + _ = yym235 + if false { + } else { + z.F.DecSliceStringX(yyv234, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys231) + } // end switch yys231 + } // end for yyj231 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj236 int + var yyb236 bool + var yyhl236 bool = l >= 0 + yyj236++ + if yyhl236 { + yyb236 = yyj236 > l + } else { + yyb236 = r.CheckBreak() + } + if yyb236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj236++ + if yyhl236 { + yyb236 = yyj236 > l + } else { + yyb236 = r.CheckBreak() + } + if yyb236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + yyj236++ + if yyhl236 { + yyb236 = yyj236 > l + } else { + yyb236 = r.CheckBreak() + } + if yyb236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv239 := &x.Values + yym240 := z.DecBinary() + _ = yym240 + if false { + } else { + z.F.DecSliceStringX(yyv239, false, d) + } + } + for { + yyj236++ + if yyhl236 { + yyb236 = yyj236 > l + } else { + yyb236 = r.CheckBreak() + } + if yyb236 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj236-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LabelSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym241 := z.EncBinary() + _ = yym241 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LabelSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym242 := z.DecBinary() + _ = yym242 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x codecSelfer1234) encSliceJob(v []Job, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv243 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy244 := &yyv243 + yy244.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv245 := *v + yyh245, yyl245 := z.DecSliceHelperStart() + var yyc245 bool + if yyl245 == 0 { + if yyv245 == nil { + yyv245 = []Job{} + yyc245 = true + } else if len(yyv245) != 0 { + yyv245 = yyv245[:0] + yyc245 = true + } + } else if yyl245 > 0 { + var yyrr245, yyrl245 int + var yyrt245 bool + if yyl245 > cap(yyv245) { + + yyrg245 := len(yyv245) > 0 + yyv2245 := yyv245 + yyrl245, yyrt245 = z.DecInferLen(yyl245, z.DecBasicHandle().MaxInitLen, 824) + if yyrt245 { + if yyrl245 <= cap(yyv245) { + yyv245 = yyv245[:yyrl245] + } else { + yyv245 = make([]Job, yyrl245) + } + } else { + yyv245 = make([]Job, yyrl245) + } + yyc245 = true + yyrr245 = len(yyv245) + if yyrg245 { + copy(yyv245, yyv2245) + } + } else if yyl245 != len(yyv245) { + yyv245 = yyv245[:yyl245] + yyc245 = true + } + yyj245 := 0 + for ; yyj245 < yyrr245; yyj245++ { + yyh245.ElemContainerState(yyj245) + if r.TryDecodeAsNil() { + yyv245[yyj245] = Job{} + } else { + yyv246 := &yyv245[yyj245] + yyv246.CodecDecodeSelf(d) + } + + } + if yyrt245 { + for ; yyj245 < yyl245; yyj245++ { + yyv245 = append(yyv245, Job{}) + yyh245.ElemContainerState(yyj245) + if r.TryDecodeAsNil() { + yyv245[yyj245] = Job{} + } else { + yyv247 := &yyv245[yyj245] + yyv247.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj245 := 0 + for ; !r.CheckBreak(); yyj245++ { + + if yyj245 >= len(yyv245) { + yyv245 = append(yyv245, Job{}) // var yyz245 Job + yyc245 = true + } + yyh245.ElemContainerState(yyj245) + if yyj245 < len(yyv245) { + if r.TryDecodeAsNil() { + yyv245[yyj245] = Job{} + } else { + yyv248 := &yyv245[yyj245] + yyv248.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj245 < len(yyv245) { + yyv245 = yyv245[:yyj245] + yyc245 = true + } else if yyj245 == 0 && yyv245 == nil { + yyv245 = []Job{} + yyc245 = true + } + } + yyh245.End() + if yyc245 { + *v = yyv245 + } +} + +func (x codecSelfer1234) encSliceJobCondition(v []JobCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv249 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy250 := &yyv249 + yy250.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJobCondition(v *[]JobCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv251 := *v + yyh251, yyl251 := z.DecSliceHelperStart() + var yyc251 bool + if yyl251 == 0 { + if yyv251 == nil { + yyv251 = []JobCondition{} + yyc251 = true + } else if len(yyv251) != 0 { + yyv251 = yyv251[:0] + yyc251 = true + } + } else if yyl251 > 0 { + var yyrr251, yyrl251 int + var yyrt251 bool + if yyl251 > cap(yyv251) { + + yyrg251 := len(yyv251) > 0 + yyv2251 := yyv251 + yyrl251, yyrt251 = z.DecInferLen(yyl251, z.DecBasicHandle().MaxInitLen, 112) + if yyrt251 { + if yyrl251 <= cap(yyv251) { + yyv251 = yyv251[:yyrl251] + } else { + yyv251 = make([]JobCondition, yyrl251) + } + } else { + yyv251 = make([]JobCondition, yyrl251) + } + yyc251 = true + yyrr251 = len(yyv251) + if yyrg251 { + copy(yyv251, yyv2251) + } + } else if yyl251 != len(yyv251) { + yyv251 = yyv251[:yyl251] + yyc251 = true + } + yyj251 := 0 + for ; yyj251 < yyrr251; yyj251++ { + yyh251.ElemContainerState(yyj251) + if r.TryDecodeAsNil() { + yyv251[yyj251] = JobCondition{} + } else { + yyv252 := &yyv251[yyj251] + yyv252.CodecDecodeSelf(d) + } + + } + if yyrt251 { + for ; yyj251 < yyl251; yyj251++ { + yyv251 = append(yyv251, JobCondition{}) + yyh251.ElemContainerState(yyj251) + if r.TryDecodeAsNil() { + yyv251[yyj251] = JobCondition{} + } else { + yyv253 := &yyv251[yyj251] + yyv253.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj251 := 0 + for ; !r.CheckBreak(); yyj251++ { + + if yyj251 >= len(yyv251) { + yyv251 = append(yyv251, JobCondition{}) // var yyz251 JobCondition + yyc251 = true + } + yyh251.ElemContainerState(yyj251) + if yyj251 < len(yyv251) { + if r.TryDecodeAsNil() { + yyv251[yyj251] = JobCondition{} + } else { + yyv254 := &yyv251[yyj251] + yyv254.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj251 < len(yyv251) { + yyv251 = yyv251[:yyj251] + yyc251 = true + } else if yyj251 == 0 && yyv251 == nil { + yyv251 = []JobCondition{} + yyc251 = true + } + } + yyh251.End() + if yyc251 { + *v = yyv251 + } +} + +func (x codecSelfer1234) encSliceLabelSelectorRequirement(v []LabelSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv255 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy256 := &yyv255 + yy256.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLabelSelectorRequirement(v *[]LabelSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv257 := *v + yyh257, yyl257 := z.DecSliceHelperStart() + var yyc257 bool + if yyl257 == 0 { + if yyv257 == nil { + yyv257 = []LabelSelectorRequirement{} + yyc257 = true + } else if len(yyv257) != 0 { + yyv257 = yyv257[:0] + yyc257 = true + } + } else if yyl257 > 0 { + var yyrr257, yyrl257 int + var yyrt257 bool + if yyl257 > cap(yyv257) { + + yyrg257 := len(yyv257) > 0 + yyv2257 := yyv257 + yyrl257, yyrt257 = z.DecInferLen(yyl257, z.DecBasicHandle().MaxInitLen, 56) + if yyrt257 { + if yyrl257 <= cap(yyv257) { + yyv257 = yyv257[:yyrl257] + } else { + yyv257 = make([]LabelSelectorRequirement, yyrl257) + } + } else { + yyv257 = make([]LabelSelectorRequirement, yyrl257) + } + yyc257 = true + yyrr257 = len(yyv257) + if yyrg257 { + copy(yyv257, yyv2257) + } + } else if yyl257 != len(yyv257) { + yyv257 = yyv257[:yyl257] + yyc257 = true + } + yyj257 := 0 + for ; yyj257 < yyrr257; yyj257++ { + yyh257.ElemContainerState(yyj257) + if r.TryDecodeAsNil() { + yyv257[yyj257] = LabelSelectorRequirement{} + } else { + yyv258 := &yyv257[yyj257] + yyv258.CodecDecodeSelf(d) + } + + } + if yyrt257 { + for ; yyj257 < yyl257; yyj257++ { + yyv257 = append(yyv257, LabelSelectorRequirement{}) + yyh257.ElemContainerState(yyj257) + if r.TryDecodeAsNil() { + yyv257[yyj257] = LabelSelectorRequirement{} + } else { + yyv259 := &yyv257[yyj257] + yyv259.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj257 := 0 + for ; !r.CheckBreak(); yyj257++ { + + if yyj257 >= len(yyv257) { + yyv257 = append(yyv257, LabelSelectorRequirement{}) // var yyz257 LabelSelectorRequirement + yyc257 = true + } + yyh257.ElemContainerState(yyj257) + if yyj257 < len(yyv257) { + if r.TryDecodeAsNil() { + yyv257[yyj257] = LabelSelectorRequirement{} + } else { + yyv260 := &yyv257[yyj257] + yyv260.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj257 < len(yyv257) { + yyv257 = yyv257[:yyj257] + yyc257 = true + } else if yyj257 == 0 && yyv257 == nil { + yyv257 = []LabelSelectorRequirement{} + yyc257 = true + } + } + yyh257.End() + if yyc257 { + *v = yyv257 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.go new file mode 100644 index 0000000000..e478737479 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types.go @@ -0,0 +1,186 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true + +// Job represents the configuration of a single job. +type Job struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// JobList is a collection of jobs. +type JobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Job. + Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"` + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"` + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + + // ManualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + ManualSelector *bool `json:"manualSelector,omitempty" protobuf:"varint,5,opt,name=manualSelector"` + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + StartTime *unversioned.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"` + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + CompletionTime *unversioned.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"` + + // Active is the number of actively running pods. + Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"` + + // Succeeded is the number of pods which reached Phase Succeeded. + Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"` + + // Failed is the number of pods which reached Phase Failed. + Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"` +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=JobConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // Last time the condition was checked. + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transit from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +type LabelSelector struct { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"` +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + Operator LabelSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=LabelSelectorOperator"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A label selector operator is the set of operators that can be used in a selector requirement. +type LabelSelectorOperator string + +const ( + LabelSelectorOpIn LabelSelectorOperator = "In" + LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" + LabelSelectorOpExists LabelSelectorOperator = "Exists" + LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..aa0dbcc2fd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/types_swagger_doc_generated.go @@ -0,0 +1,114 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_Job = map[string]string{ + "": "Job represents the configuration of a single job.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Job) SwaggerDoc() map[string]string { + return map_Job +} + +var map_JobCondition = map[string]string{ + "": "JobCondition describes current state of a job.", + "type": "Type of job condition, Complete or Failed.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastProbeTime": "Last time the condition was checked.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (JobCondition) SwaggerDoc() map[string]string { + return map_JobCondition +} + +var map_JobList = map[string]string{ + "": "JobList is a collection of jobs.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of Job.", +} + +func (JobList) SwaggerDoc() map[string]string { + return map_JobList +} + +var map_JobSpec = map[string]string{ + "": "JobSpec describes how the job execution will look like.", + "parallelism": "Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "completions": "Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "activeDeadlineSeconds": "Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer", + "selector": "Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "manualSelector": "ManualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md", + "template": "Template is the object that describes the pod that will be created when executing a job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", +} + +func (JobSpec) SwaggerDoc() map[string]string { + return map_JobSpec +} + +var map_JobStatus = map[string]string{ + "": "JobStatus represents the current state of a Job.", + "conditions": "Conditions represent the latest available observations of an object's current state. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "startTime": "StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "completionTime": "CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "active": "Active is the number of actively running pods.", + "succeeded": "Succeeded is the number of pods which reached Phase Succeeded.", + "failed": "Failed is the number of pods which reached Phase Failed.", +} + +func (JobStatus) SwaggerDoc() map[string]string { + return map_JobStatus +} + +var map_LabelSelector = map[string]string{ + "": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "matchLabels": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "matchExpressions": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", +} + +func (LabelSelector) SwaggerDoc() map[string]string { + return map_LabelSelector +} + +var map_LabelSelectorRequirement = map[string]string{ + "": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "key is the label key that the selector applies to.", + "operator": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", + "values": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", +} + +func (LabelSelectorRequirement) SwaggerDoc() map[string]string { + return map_LabelSelectorRequirement +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.conversion.go new file mode 100644 index 0000000000..b4c218138a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.conversion.go @@ -0,0 +1,334 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + batch "k8s.io/client-go/1.5/pkg/apis/batch" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1_Job_To_batch_Job, + Convert_batch_Job_To_v1_Job, + Convert_v1_JobCondition_To_batch_JobCondition, + Convert_batch_JobCondition_To_v1_JobCondition, + Convert_v1_JobList_To_batch_JobList, + Convert_batch_JobList_To_v1_JobList, + Convert_v1_JobSpec_To_batch_JobSpec, + Convert_batch_JobSpec_To_v1_JobSpec, + Convert_v1_JobStatus_To_batch_JobStatus, + Convert_batch_JobStatus_To_v1_JobStatus, + Convert_v1_LabelSelector_To_unversioned_LabelSelector, + Convert_unversioned_LabelSelector_To_v1_LabelSelector, + Convert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement, + Convert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement, + ) +} + +func autoConvert_v1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + SetDefaults_Job(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1_JobStatus_To_batch_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + return autoConvert_v1_Job_To_batch_Job(in, out, s) +} + +func autoConvert_batch_Job_To_v1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_JobSpec_To_v1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_JobStatus_To_v1_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_batch_Job_To_v1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + return autoConvert_batch_Job_To_v1_Job(in, out, s) +} + +func autoConvert_v1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + out.Type = batch.JobConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + return autoConvert_v1_JobCondition_To_batch_JobCondition(in, out, s) +} + +func autoConvert_batch_JobCondition_To_v1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + out.Type = JobConditionType(in.Type) + out.Status = api_v1.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_batch_JobCondition_To_v1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + return autoConvert_batch_JobCondition_To_v1_JobCondition(in, out, s) +} + +func autoConvert_v1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.Job, len(*in)) + for i := range *in { + if err := Convert_v1_Job_To_batch_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + return autoConvert_v1_JobList_To_batch_JobList(in, out, s) +} + +func autoConvert_batch_JobList_To_v1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := Convert_batch_Job_To_v1_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_batch_JobList_To_v1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + return autoConvert_batch_JobList_To_v1_JobList(in, out, s) +} + +func autoConvert_v1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + out.ManualSelector = in.ManualSelector + if err := api_v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_batch_JobSpec_To_v1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + out.ManualSelector = in.ManualSelector + if err := api_v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]batch.JobCondition, len(*in)) + for i := range *in { + if err := Convert_v1_JobCondition_To_batch_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_v1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + return autoConvert_v1_JobStatus_To_batch_JobStatus(in, out, s) +} + +func autoConvert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := Convert_batch_JobCondition_To_v1_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_batch_JobStatus_To_v1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + return autoConvert_batch_JobStatus_To_v1_JobStatus(in, out, s) +} + +func autoConvert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]unversioned.LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_v1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + return autoConvert_v1_LabelSelector_To_unversioned_LabelSelector(in, out, s) +} + +func autoConvert_unversioned_LabelSelector_To_v1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_unversioned_LabelSelector_To_v1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelector_To_v1_LabelSelector(in, out, s) +} + +func autoConvert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = unversioned.LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_v1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in, out, s) +} + +func autoConvert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelectorRequirement_To_v1_LabelSelectorRequirement(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..7655a5cc59 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v1/zz_generated.deepcopy.go @@ -0,0 +1,229 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LabelSelector, InType: reflect.TypeOf(&LabelSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_LabelSelectorRequirement, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, + ) +} + +func DeepCopy_v1_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + out.TypeMeta = in.TypeMeta + if err := api_v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_v1_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } else { + out.Parallelism = nil + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } else { + out.Completions = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + *out = new(bool) + **out = **in + } else { + out.ManualSelector = nil + } + if err := api_v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.CompletionTime = nil + } + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil + } +} + +func DeepCopy_v1_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelector) + out := out.(*LabelSelector) + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.MatchLabels = nil + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_v1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_v1_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelectorRequirement) + out := out.(*LabelSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/conversion.go new file mode 100644 index 0000000000..5e78d1f627 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/conversion.go @@ -0,0 +1,115 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_batch_JobSpec_To_v2alpha1_JobSpec, + Convert_v2alpha1_JobSpec_To_batch_JobSpec, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, kind := range []string{"Job", "JobTemplate", "ScheduledJob"} { + err = api.Scheme.AddFieldLabelConversionFunc("batch/v2alpha1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }) + if err != nil { + return err + } + } + return nil +} + +func Convert_batch_JobSpec_To_v2alpha1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*batch.JobSpec))(in) + } + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for unversioned.LabelSelector -> v1.LabelSelector + if in.Selector != nil { + out.Selector = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { + defaulting.(func(*JobSpec))(in) + } + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for unversioned.LabelSelector -> v1.LabelSelector + if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + if err := Convert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + out.ManualSelector = new(bool) + *out.ManualSelector = *in.ManualSelector + } else { + out.ManualSelector = nil + } + + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/defaults.go new file mode 100644 index 0000000000..0350f88151 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/defaults.go @@ -0,0 +1,56 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_Job, + SetDefaults_ScheduledJob, + ) +} + +func SetDefaults_Job(obj *Job) { + // For a non-parallel job, you can leave both `.spec.completions` and + // `.spec.parallelism` unset. When both are unset, both are defaulted to 1. + if obj.Spec.Completions == nil && obj.Spec.Parallelism == nil { + obj.Spec.Completions = new(int32) + *obj.Spec.Completions = 1 + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + if obj.Spec.Parallelism == nil { + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + labels := obj.Spec.Template.Labels + if labels != nil && len(obj.Labels) == 0 { + obj.Labels = labels + } +} + +func SetDefaults_ScheduledJob(obj *ScheduledJob) { + if obj.Spec.ConcurrencyPolicy == "" { + obj.Spec.ConcurrencyPolicy = AllowConcurrent + } + if obj.Spec.Suspend == nil { + obj.Spec.Suspend = new(bool) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/doc.go new file mode 100644 index 0000000000..087b478c96 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch +// +k8s:openapi-gen=true + +package v2alpha1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.pb.go new file mode 100644 index 0000000000..c395bb5f5d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.pb.go @@ -0,0 +1,3293 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/batch/v2alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v2alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/batch/v2alpha1/generated.proto + + It has these top-level messages: + Job + JobCondition + JobList + JobSpec + JobStatus + JobTemplate + JobTemplateSpec + LabelSelector + LabelSelectorRequirement + ScheduledJob + ScheduledJobList + ScheduledJobSpec + ScheduledJobStatus +*/ +package v2alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *Job) Reset() { *m = Job{} } +func (*Job) ProtoMessage() {} +func (*Job) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *JobCondition) Reset() { *m = JobCondition{} } +func (*JobCondition) ProtoMessage() {} +func (*JobCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *JobList) Reset() { *m = JobList{} } +func (*JobList) ProtoMessage() {} +func (*JobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *JobSpec) Reset() { *m = JobSpec{} } +func (*JobSpec) ProtoMessage() {} +func (*JobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *JobStatus) Reset() { *m = JobStatus{} } +func (*JobStatus) ProtoMessage() {} +func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *JobTemplate) Reset() { *m = JobTemplate{} } +func (*JobTemplate) ProtoMessage() {} +func (*JobTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *JobTemplateSpec) Reset() { *m = JobTemplateSpec{} } +func (*JobTemplateSpec) ProtoMessage() {} +func (*JobTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *LabelSelector) Reset() { *m = LabelSelector{} } +func (*LabelSelector) ProtoMessage() {} +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{8} +} + +func (m *ScheduledJob) Reset() { *m = ScheduledJob{} } +func (*ScheduledJob) ProtoMessage() {} +func (*ScheduledJob) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *ScheduledJobList) Reset() { *m = ScheduledJobList{} } +func (*ScheduledJobList) ProtoMessage() {} +func (*ScheduledJobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *ScheduledJobSpec) Reset() { *m = ScheduledJobSpec{} } +func (*ScheduledJobSpec) ProtoMessage() {} +func (*ScheduledJobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *ScheduledJobStatus) Reset() { *m = ScheduledJobStatus{} } +func (*ScheduledJobStatus) ProtoMessage() {} +func (*ScheduledJobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func init() { + proto.RegisterType((*Job)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.Job") + proto.RegisterType((*JobCondition)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobCondition") + proto.RegisterType((*JobList)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobList") + proto.RegisterType((*JobSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobSpec") + proto.RegisterType((*JobStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobStatus") + proto.RegisterType((*JobTemplate)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobTemplate") + proto.RegisterType((*JobTemplateSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.JobTemplateSpec") + proto.RegisterType((*LabelSelector)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.LabelSelector") + proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.LabelSelectorRequirement") + proto.RegisterType((*ScheduledJob)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.ScheduledJob") + proto.RegisterType((*ScheduledJobList)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.ScheduledJobList") + proto.RegisterType((*ScheduledJobSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.ScheduledJobSpec") + proto.RegisterType((*ScheduledJobStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.batch.v2alpha1.ScheduledJobStatus") +} +func (m *Job) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Job) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *JobCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastProbeTime.Size())) + n4, err := m.LastProbeTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n5, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *JobList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *JobSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Parallelism != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Parallelism)) + } + if m.Completions != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n7, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + } + if m.ManualSelector != nil { + data[i] = 0x28 + i++ + if *m.ManualSelector { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *JobStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.StartTime != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartTime.Size())) + n9, err := m.StartTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + } + if m.CompletionTime != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.CompletionTime.Size())) + n10, err := m.CompletionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + } + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Active)) + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Succeeded)) + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Failed)) + return i, nil +} + +func (m *JobTemplate) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobTemplate) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n11, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n11 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n12, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n12 + return i, nil +} + +func (m *JobTemplateSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobTemplateSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n13, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n13 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n14, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n14 + return i, nil +} + +func (m *LabelSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k := range m.MatchLabels { + data[i] = 0xa + i++ + v := m.MatchLabels[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LabelSelectorRequirement) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelectorRequirement) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ScheduledJob) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScheduledJob) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n15, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n15 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n16, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n16 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n17, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n17 + return i, nil +} + +func (m *ScheduledJobList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScheduledJobList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n18, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n18 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ScheduledJobSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScheduledJobSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Schedule))) + i += copy(data[i:], m.Schedule) + if m.StartingDeadlineSeconds != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.StartingDeadlineSeconds)) + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ConcurrencyPolicy))) + i += copy(data[i:], m.ConcurrencyPolicy) + if m.Suspend != nil { + data[i] = 0x20 + i++ + if *m.Suspend { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(m.JobTemplate.Size())) + n19, err := m.JobTemplate.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *ScheduledJobStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScheduledJobStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Active) > 0 { + for _, msg := range m.Active { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.LastScheduleTime != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastScheduleTime.Size())) + n20, err := m.LastScheduleTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n20 + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *Job) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *JobSpec) Size() (n int) { + var l int + _ = l + if m.Parallelism != nil { + n += 1 + sovGenerated(uint64(*m.Parallelism)) + } + if m.Completions != nil { + n += 1 + sovGenerated(uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.ManualSelector != nil { + n += 2 + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CompletionTime != nil { + l = m.CompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Active)) + n += 1 + sovGenerated(uint64(m.Succeeded)) + n += 1 + sovGenerated(uint64(m.Failed)) + return n +} + +func (m *JobTemplate) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobTemplateSpec) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *LabelSelector) Size() (n int) { + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k, v := range m.MatchLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LabelSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ScheduledJob) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScheduledJobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ScheduledJobSpec) Size() (n int) { + var l int + _ = l + l = len(m.Schedule) + n += 1 + l + sovGenerated(uint64(l)) + if m.StartingDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.StartingDeadlineSeconds)) + } + l = len(m.ConcurrencyPolicy) + n += 1 + l + sovGenerated(uint64(l)) + if m.Suspend != nil { + n += 2 + } + l = m.JobTemplate.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScheduledJobStatus) Size() (n int) { + var l int + _ = l + if len(m.Active) > 0 { + for _, e := range m.Active { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.LastScheduleTime != nil { + l = m.LastScheduleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Job) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Job{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "JobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "JobStatus", "JobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *JobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Job", "Job", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobSpec{`, + `Parallelism:` + valueToStringGenerated(this.Parallelism) + `,`, + `Completions:` + valueToStringGenerated(this.Completions) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `ManualSelector:` + valueToStringGenerated(this.ManualSelector) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "JobCondition", "JobCondition", 1), `&`, ``, 1) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `Active:` + fmt.Sprintf("%v", this.Active) + `,`, + `Succeeded:` + fmt.Sprintf("%v", this.Succeeded) + `,`, + `Failed:` + fmt.Sprintf("%v", this.Failed) + `,`, + `}`, + }, "") + return s +} +func (this *JobTemplate) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobTemplate{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "JobTemplateSpec", "JobTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobTemplateSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobTemplateSpec{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "JobSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelector) String() string { + if this == nil { + return "nil" + } + keysForMatchLabels := make([]string, 0, len(this.MatchLabels)) + for k := range this.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + mapStringForMatchLabels := "map[string]string{" + for _, k := range keysForMatchLabels { + mapStringForMatchLabels += fmt.Sprintf("%v: %v,", k, this.MatchLabels[k]) + } + mapStringForMatchLabels += "}" + s := strings.Join([]string{`&LabelSelector{`, + `MatchLabels:` + mapStringForMatchLabels + `,`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "LabelSelectorRequirement", "LabelSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LabelSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *ScheduledJob) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScheduledJob{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScheduledJobSpec", "ScheduledJobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScheduledJobStatus", "ScheduledJobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScheduledJobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScheduledJobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ScheduledJob", "ScheduledJob", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScheduledJobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScheduledJobSpec{`, + `Schedule:` + fmt.Sprintf("%v", this.Schedule) + `,`, + `StartingDeadlineSeconds:` + valueToStringGenerated(this.StartingDeadlineSeconds) + `,`, + `ConcurrencyPolicy:` + fmt.Sprintf("%v", this.ConcurrencyPolicy) + `,`, + `Suspend:` + valueToStringGenerated(this.Suspend) + `,`, + `JobTemplate:` + strings.Replace(strings.Replace(this.JobTemplate.String(), "JobTemplateSpec", "JobTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScheduledJobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScheduledJobStatus{`, + `Active:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Active), "ObjectReference", "k8s_io_kubernetes_pkg_api_v1.ObjectReference", 1), `&`, ``, 1) + `,`, + `LastScheduleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScheduleTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Job) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Job: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Job: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = JobConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Job{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Parallelism", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Parallelism = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Completions", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Completions = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ManualSelector", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.ManualSelector = &b + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, JobCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.StartTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CompletionTime == nil { + m.CompletionTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.CompletionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + m.Active = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Active |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Succeeded", wireType) + } + m.Succeeded = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Succeeded |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Failed", wireType) + } + m.Failed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Failed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobTemplate) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobTemplate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobTemplate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobTemplateSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobTemplateSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.MatchLabels == nil { + m.MatchLabels = make(map[string]string) + } + m.MatchLabels[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, LabelSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelectorRequirement) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = LabelSelectorOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScheduledJob) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScheduledJob: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScheduledJob: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScheduledJobList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScheduledJobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScheduledJobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ScheduledJob{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScheduledJobSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScheduledJobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScheduledJobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Schedule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Schedule = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StartingDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.StartingDeadlineSeconds = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConcurrencyPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConcurrencyPolicy = ConcurrencyPolicy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Suspend", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.Suspend = &b + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JobTemplate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.JobTemplate.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScheduledJobStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScheduledJobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScheduledJobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Active = append(m.Active, k8s_io_kubernetes_pkg_api_v1.ObjectReference{}) + if err := m.Active[len(m.Active)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScheduleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScheduleTime == nil { + m.LastScheduleTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.LastScheduleTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 1300 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x57, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xaf, 0xed, 0xd8, 0xb1, 0xc7, 0xf9, 0xe1, 0xcc, 0xb7, 0x51, 0xfd, 0x35, 0x22, 0xa9, 0x2c, + 0x81, 0x1a, 0x68, 0x76, 0x95, 0xa8, 0xa8, 0x21, 0x88, 0x4a, 0x6c, 0x08, 0x52, 0x21, 0x51, 0xa2, + 0x71, 0xa8, 0x10, 0xb4, 0x87, 0xf1, 0x7a, 0x62, 0x6f, 0xb3, 0xde, 0x75, 0x77, 0x67, 0x0d, 0xbe, + 0xf5, 0xca, 0x09, 0x24, 0xfe, 0x05, 0xce, 0xfc, 0x05, 0xf4, 0xc0, 0x2d, 0x37, 0x0a, 0x27, 0xc4, + 0x21, 0x82, 0xf2, 0x5f, 0xf4, 0xc4, 0x9b, 0xd9, 0xd9, 0xf5, 0xfa, 0x57, 0x14, 0x1b, 0x15, 0x89, + 0xc3, 0x4a, 0x9e, 0x37, 0xef, 0xf3, 0x99, 0x37, 0xf3, 0x3e, 0xf3, 0xe6, 0x19, 0xbd, 0x7b, 0xb6, + 0xe3, 0x6b, 0x96, 0xab, 0x9f, 0x05, 0x75, 0xe6, 0x39, 0x8c, 0x33, 0x5f, 0xef, 0x9c, 0x35, 0x75, + 0xda, 0xb1, 0x7c, 0xbd, 0x4e, 0xb9, 0xd9, 0xd2, 0xbb, 0xdb, 0xd4, 0xee, 0xb4, 0xe8, 0x96, 0xde, + 0x64, 0x0e, 0xf3, 0x28, 0x67, 0x0d, 0xad, 0xe3, 0xb9, 0xdc, 0xc5, 0x1b, 0x21, 0x54, 0xeb, 0x43, + 0x35, 0x80, 0x6a, 0x02, 0xaa, 0x49, 0xa8, 0x16, 0x41, 0x2b, 0x9b, 0x4d, 0x8b, 0xb7, 0x82, 0xba, + 0x66, 0xba, 0x6d, 0xbd, 0xe9, 0x36, 0x5d, 0x5d, 0x32, 0xd4, 0x83, 0x53, 0x39, 0x92, 0x03, 0xf9, + 0x2b, 0x64, 0xae, 0x6c, 0x4f, 0x0c, 0x4a, 0xf7, 0x98, 0xef, 0x06, 0x9e, 0xc9, 0x86, 0xa3, 0xa9, + 0xbc, 0x33, 0x19, 0x13, 0x38, 0x5d, 0xe6, 0xf9, 0x96, 0xeb, 0xb0, 0xc6, 0x08, 0xec, 0xf6, 0x64, + 0x58, 0x77, 0x64, 0xcb, 0x95, 0xcd, 0xf1, 0xde, 0x5e, 0xe0, 0x70, 0xab, 0x3d, 0x1a, 0xd3, 0xd6, + 0x78, 0xf7, 0x80, 0x5b, 0xb6, 0x6e, 0x39, 0xdc, 0xe7, 0xde, 0x30, 0xa4, 0xfa, 0x5d, 0x1a, 0x65, + 0x3e, 0x76, 0xeb, 0xf8, 0x33, 0x94, 0x6f, 0x33, 0x4e, 0x1b, 0x94, 0xd3, 0x72, 0xea, 0x66, 0xea, + 0x56, 0x71, 0xfb, 0x96, 0x36, 0xf1, 0xbc, 0xb5, 0xee, 0x96, 0x76, 0x54, 0x7f, 0xcc, 0x4c, 0x7e, + 0x08, 0x18, 0x03, 0x9f, 0x5f, 0xac, 0x5f, 0x7b, 0x71, 0xb1, 0x8e, 0xfa, 0x36, 0x12, 0xb3, 0xe1, + 0x13, 0x34, 0xe7, 0x77, 0x98, 0x59, 0x4e, 0x4b, 0xd6, 0x6d, 0xed, 0xca, 0x59, 0xd4, 0x20, 0xae, + 0x1a, 0x20, 0x8d, 0x05, 0xc5, 0x3f, 0x27, 0x46, 0x44, 0xb2, 0xe1, 0x87, 0x28, 0xe7, 0x73, 0xca, + 0x03, 0xbf, 0x9c, 0x91, 0xbc, 0x77, 0xa6, 0xe4, 0x95, 0x58, 0x63, 0x49, 0x31, 0xe7, 0xc2, 0x31, + 0x51, 0x9c, 0xd5, 0x5f, 0x33, 0x68, 0x01, 0xbc, 0xf6, 0x5c, 0xa7, 0x61, 0x71, 0x48, 0x24, 0xbe, + 0x83, 0xe6, 0x78, 0xaf, 0xc3, 0xe4, 0xd1, 0x14, 0x8c, 0x9b, 0x51, 0x40, 0x27, 0x60, 0x7b, 0x79, + 0xb1, 0x5e, 0x4a, 0xfa, 0x0a, 0x1b, 0x91, 0xde, 0xf8, 0x41, 0x1c, 0x64, 0x5a, 0xe2, 0xee, 0x0d, + 0x2e, 0x07, 0xc8, 0x4b, 0xe5, 0xa0, 0xc5, 0x9c, 0x83, 0xe1, 0xe1, 0x16, 0x5a, 0xb4, 0xa9, 0xcf, + 0x8f, 0x3d, 0xb7, 0xce, 0x4e, 0x40, 0x08, 0xea, 0x0c, 0xde, 0xbe, 0x24, 0x63, 0x09, 0x4d, 0x6a, + 0x02, 0x62, 0xac, 0xaa, 0x58, 0x16, 0x0f, 0x92, 0x4c, 0x64, 0x90, 0x18, 0x7f, 0x89, 0xb0, 0x30, + 0x9c, 0x78, 0xd4, 0xf1, 0xc3, 0xdd, 0x89, 0xe5, 0xe6, 0xa6, 0x5f, 0xae, 0xa2, 0x96, 0xc3, 0x07, + 0x23, 0x74, 0x64, 0xcc, 0x12, 0xf8, 0x4d, 0x94, 0xf3, 0x18, 0xf5, 0x5d, 0xa7, 0x9c, 0x95, 0x47, + 0x17, 0x67, 0x8a, 0x48, 0x2b, 0x51, 0xb3, 0x78, 0x03, 0xcd, 0xb7, 0x99, 0xef, 0xd3, 0x26, 0x2b, + 0xe7, 0xa4, 0xe3, 0xb2, 0x72, 0x9c, 0x3f, 0x0c, 0xcd, 0x24, 0x9a, 0xaf, 0x3e, 0x4b, 0xa1, 0x79, + 0x48, 0xd4, 0x81, 0xe5, 0x73, 0xfc, 0x68, 0x44, 0xee, 0xfa, 0x15, 0x77, 0x23, 0xe0, 0x52, 0xf5, + 0x25, 0xb5, 0x50, 0x3e, 0xb2, 0x24, 0x34, 0x5f, 0x43, 0x59, 0x8b, 0xb3, 0xb6, 0xc8, 0x7b, 0x06, + 0xb8, 0xb5, 0xe9, 0xc4, 0x69, 0x2c, 0x2a, 0xea, 0xec, 0x7d, 0x41, 0x42, 0x42, 0xae, 0xea, 0xb3, + 0x8c, 0x8c, 0x5f, 0x5c, 0x02, 0xbc, 0x85, 0x8a, 0x1d, 0xea, 0x51, 0xdb, 0x66, 0xb6, 0xe5, 0xb7, + 0xe5, 0x16, 0xb2, 0xc6, 0x32, 0x40, 0x8a, 0xc7, 0x7d, 0x33, 0x49, 0xfa, 0x08, 0x08, 0x94, 0xc3, + 0x8e, 0xcd, 0xc4, 0x19, 0x87, 0x8a, 0x54, 0x90, 0xbd, 0xbe, 0x99, 0x24, 0x7d, 0xf0, 0x11, 0x5a, + 0xa5, 0x26, 0xb7, 0xba, 0xec, 0x43, 0x46, 0x1b, 0xb6, 0xe5, 0xb0, 0x1a, 0x33, 0x41, 0x92, 0xe1, + 0x9d, 0xcb, 0x18, 0xff, 0x07, 0xf0, 0xea, 0x07, 0xe3, 0x1c, 0xc8, 0x78, 0x1c, 0xae, 0xa3, 0xbc, + 0xcf, 0x6c, 0xa8, 0x11, 0xae, 0xa7, 0x44, 0xb4, 0x33, 0xc5, 0xd1, 0x1c, 0xd0, 0x3a, 0xb3, 0x6b, + 0x0a, 0x6f, 0x2c, 0x88, 0xb3, 0x8f, 0x46, 0x24, 0xe6, 0xc5, 0xbb, 0x68, 0xa9, 0x4d, 0x9d, 0x80, + 0xc6, 0x9e, 0x52, 0x41, 0x79, 0x03, 0x83, 0xff, 0xd2, 0xe1, 0xc0, 0x0c, 0x19, 0xf2, 0xc4, 0x5f, + 0xa0, 0x3c, 0x1c, 0x75, 0xc7, 0x86, 0x02, 0x29, 0xe5, 0x54, 0xdc, 0xde, 0xbc, 0xbc, 0x0a, 0x1e, + 0xbb, 0x8d, 0x13, 0x05, 0x90, 0xa5, 0x2a, 0x16, 0x45, 0x64, 0x25, 0x31, 0x61, 0xf5, 0xc7, 0x0c, + 0x2a, 0xc4, 0xa5, 0x07, 0x9f, 0x21, 0x64, 0x46, 0xd7, 0xdb, 0x87, 0x04, 0x0a, 0x9d, 0xdc, 0x9d, + 0x4e, 0x27, 0x71, 0x79, 0xe8, 0x57, 0xe0, 0xd8, 0xe4, 0x93, 0x04, 0x3d, 0x54, 0xf7, 0x02, 0x94, + 0x0e, 0x8f, 0xcb, 0xdb, 0x9b, 0x9e, 0xfe, 0xf6, 0x2e, 0x02, 0x77, 0xa1, 0x16, 0x31, 0x90, 0x3e, + 0x19, 0x6e, 0xa2, 0xa5, 0xbe, 0x62, 0x66, 0xad, 0x45, 0x32, 0x35, 0x7b, 0x03, 0x34, 0x64, 0x88, + 0x56, 0x14, 0x84, 0x50, 0x53, 0x52, 0x38, 0xd9, 0x7e, 0x41, 0x08, 0x05, 0x48, 0xd4, 0x2c, 0xd6, + 0x61, 0xab, 0x81, 0x69, 0x32, 0xd6, 0x60, 0x0d, 0x99, 0xf9, 0xac, 0xb1, 0xa2, 0x5c, 0x0b, 0xb5, + 0x68, 0x82, 0xf4, 0x7d, 0x04, 0xf1, 0x29, 0xb5, 0x6c, 0xf0, 0xce, 0x0d, 0x12, 0x7f, 0x24, 0xad, + 0x44, 0xcd, 0x56, 0x7f, 0x49, 0xa1, 0x22, 0x1c, 0x7a, 0x94, 0xd8, 0x57, 0xf8, 0x62, 0xb6, 0x12, + 0x2a, 0x0c, 0x93, 0xb5, 0x3b, 0x9d, 0x30, 0xae, 0x2c, 0xc9, 0x9f, 0x52, 0x68, 0x79, 0xc8, 0xff, + 0xbf, 0xd6, 0x09, 0x54, 0x2f, 0xd2, 0x68, 0x71, 0xa0, 0x32, 0xe0, 0xa7, 0x90, 0xa9, 0xb6, 0x20, + 0x90, 0xe6, 0xe8, 0x72, 0xdd, 0x9f, 0xb5, 0xd2, 0x68, 0x87, 0x7d, 0xae, 0x7d, 0x87, 0x7b, 0x3d, + 0xe3, 0x7f, 0x2a, 0x8c, 0x62, 0x62, 0x86, 0x24, 0x97, 0xc4, 0x5f, 0xa7, 0x50, 0x49, 0x8e, 0xf7, + 0xbf, 0xea, 0x40, 0x0b, 0xe9, 0xab, 0x92, 0x2b, 0xe2, 0xd8, 0x9b, 0x35, 0x0e, 0xc2, 0x9e, 0x04, + 0x96, 0xc7, 0xda, 0xcc, 0xe1, 0x46, 0x59, 0x45, 0x50, 0x3a, 0x1c, 0x5a, 0x84, 0x8c, 0x2c, 0x5b, + 0xb9, 0x87, 0x4a, 0xc3, 0x3b, 0xc0, 0x25, 0x94, 0x39, 0x63, 0xbd, 0xb0, 0x9d, 0x21, 0xe2, 0x27, + 0xbe, 0x8e, 0xb2, 0x5d, 0x6a, 0x07, 0xa1, 0xe2, 0x0a, 0x24, 0x1c, 0xec, 0xa6, 0x77, 0x52, 0xd5, + 0xef, 0x53, 0xa8, 0x3c, 0x29, 0x10, 0xfc, 0x7a, 0x82, 0xc8, 0x28, 0xaa, 0xa8, 0x32, 0x9f, 0xb0, + 0x5e, 0xc8, 0xba, 0x8f, 0xf2, 0x6e, 0x47, 0x34, 0x9c, 0x50, 0x86, 0xc3, 0x1e, 0x68, 0x23, 0x92, + 0xe3, 0x91, 0xb2, 0x43, 0x17, 0xb4, 0x3a, 0x40, 0x1f, 0x4d, 0x90, 0x18, 0x8a, 0xab, 0x28, 0x27, + 0xe3, 0x11, 0x2f, 0x4f, 0x06, 0x48, 0x90, 0xb8, 0x9f, 0x0f, 0xa4, 0x85, 0xa8, 0x99, 0xea, 0x0f, + 0x69, 0xb4, 0x50, 0x33, 0x5b, 0xac, 0x11, 0xc0, 0x6d, 0x7d, 0xb5, 0x2d, 0xed, 0xa3, 0x01, 0x21, + 0xbf, 0x37, 0x45, 0x42, 0x93, 0x01, 0x4e, 0xec, 0x6d, 0xd9, 0x50, 0x6f, 0xfb, 0xfe, 0xac, 0x0b, + 0x5c, 0xde, 0xe4, 0xfe, 0x0c, 0x1a, 0x4d, 0xba, 0xff, 0x1b, 0x8d, 0xd1, 0xc3, 0xc1, 0xc6, 0xe8, + 0xee, 0x8c, 0x3b, 0x9b, 0xd0, 0x21, 0x7d, 0x93, 0x19, 0xdc, 0x91, 0xac, 0x67, 0xb7, 0xa1, 0xe7, + 0x50, 0x36, 0x25, 0xd3, 0x38, 0xc0, 0xc8, 0x97, 0xc4, 0x1e, 0xf8, 0x53, 0x74, 0x43, 0x3e, 0x6e, + 0x96, 0xd3, 0x1c, 0x6e, 0x7a, 0xd2, 0xb2, 0xe9, 0x79, 0x0d, 0x80, 0x37, 0x6a, 0xe3, 0x5d, 0xc8, + 0x24, 0x2c, 0xec, 0x7b, 0x05, 0x7e, 0x98, 0x81, 0xe7, 0x31, 0xc7, 0xec, 0x1d, 0xbb, 0xb6, 0x65, + 0xf6, 0x64, 0x76, 0x0b, 0x86, 0xa6, 0xa2, 0x59, 0xd9, 0x1b, 0x76, 0x78, 0x39, 0xce, 0x48, 0x46, + 0x89, 0xf0, 0x1b, 0x68, 0xde, 0x0f, 0x40, 0x3a, 0x4e, 0x43, 0x3e, 0x8e, 0x79, 0xa3, 0x28, 0x1a, + 0xe0, 0x5a, 0x68, 0x22, 0xd1, 0x1c, 0x7e, 0x82, 0x8a, 0x8f, 0xfb, 0xc5, 0x5e, 0x3e, 0x8e, 0xff, + 0xec, 0x69, 0x89, 0xeb, 0x60, 0x62, 0x82, 0x24, 0xd7, 0xa8, 0xfe, 0x9e, 0x42, 0x78, 0x54, 0x92, + 0x70, 0xca, 0xd1, 0x63, 0x1e, 0xd6, 0xe6, 0xcd, 0xab, 0x5c, 0x4c, 0xc2, 0x4e, 0x99, 0xd8, 0x35, + 0x9b, 0xf8, 0xf6, 0xb7, 0x51, 0x49, 0xfc, 0x95, 0x88, 0x16, 0x9c, 0xf5, 0xbf, 0xca, 0x75, 0x51, + 0x58, 0x0f, 0x86, 0x88, 0xc8, 0x08, 0xb5, 0xf1, 0xd6, 0xf9, 0x9f, 0x6b, 0xd7, 0x9e, 0xc3, 0xf7, + 0x1b, 0x7c, 0x4f, 0x5f, 0xac, 0xa5, 0xce, 0xe1, 0x7b, 0x0e, 0xdf, 0x1f, 0xf0, 0x7d, 0xfb, 0xd7, + 0xda, 0xb5, 0xcf, 0xf3, 0xd1, 0xd1, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x67, 0x5d, 0xb9, 0x32, + 0xf8, 0x10, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.proto new file mode 100644 index 0000000000..95e371e2f7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/generated.proto @@ -0,0 +1,255 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.batch.v2alpha1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v2alpha1"; + +// Job represents the configuration of a single job. +message Job { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobSpec spec = 2; + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobStatus status = 3; +} + +// JobCondition describes current state of a job. +message JobCondition { + // Type of job condition, Complete or Failed. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time the condition was checked. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastProbeTime = 3; + + // Last time the condition transit from one status to another. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + optional string reason = 5; + + // Human readable message indicating details about last transition. + optional string message = 6; +} + +// JobList is a collection of jobs. +message JobList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Job. + repeated Job items = 2; +} + +// JobSpec describes how the job execution will look like. +message JobSpec { + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 parallelism = 1; + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 completions = 2; + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + optional int64 activeDeadlineSeconds = 3; + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional LabelSelector selector = 4; + + // ManualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + optional bool manualSelector = 5; + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 6; +} + +// JobStatus represents the current state of a Job. +message JobStatus { + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + repeated JobCondition conditions = 1; + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time startTime = 2; + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time completionTime = 3; + + // Active is the number of actively running pods. + optional int32 active = 4; + + // Succeeded is the number of pods which reached Phase Succeeded. + optional int32 succeeded = 5; + + // Failed is the number of pods which reached Phase Failed. + optional int32 failed = 6; +} + +// JobTemplate describes a template for creating copies of a predefined pod. +message JobTemplate { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Template defines jobs that will be created from this template + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobTemplateSpec template = 2; +} + +// JobTemplateSpec describes the data a Job should have when created from a template +message JobTemplateSpec { + // Standard object's metadata of the jobs created from this template. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobSpec spec = 2; +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + map<string, string> matchLabels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + repeated LabelSelectorRequirement matchExpressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + optional string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + optional string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + repeated string values = 3; +} + +// ScheduledJob represents the configuration of a single scheduled job. +message ScheduledJob { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec is a structure defining the expected behavior of a job, including the schedule. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ScheduledJobSpec spec = 2; + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ScheduledJobStatus status = 3; +} + +// ScheduledJobList is a collection of scheduled jobs. +message ScheduledJobList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of ScheduledJob. + repeated ScheduledJob items = 2; +} + +// ScheduledJobSpec describes how the job execution will look like and when it will actually run. +message ScheduledJobSpec { + // Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + optional string schedule = 1; + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + optional int64 startingDeadlineSeconds = 2; + + // ConcurrencyPolicy specifies how to treat concurrent executions of a Job. + optional string concurrencyPolicy = 3; + + // Suspend flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + optional bool suspend = 4; + + // JobTemplate is the object that describes the job that will be created when + // executing a ScheduledJob. + optional JobTemplateSpec jobTemplate = 5; +} + +// ScheduledJobStatus represents the current state of a Job. +message ScheduledJobStatus { + // Active holds pointers to currently running jobs. + repeated k8s.io.kubernetes.pkg.api.v1.ObjectReference active = 1; + + // LastScheduleTime keeps information of when was the last time the job was successfully scheduled. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastScheduleTime = 4; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/register.go new file mode 100644 index 0000000000..4cf8e85a0b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "batch" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v2alpha1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Job{}, + &JobList{}, + &JobTemplate{}, + &ScheduledJob{}, + &ScheduledJobList{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.generated.go new file mode 100644 index 0000000000..e0e4ad058a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.generated.go @@ -0,0 +1,5312 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v2alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_unversioned.TypeMeta + var v2 pkg2_v1.ObjectMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *Job) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Job) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Job) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Job) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [4]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[0] = x.Kind != "" + yyq33[1] = x.APIVersion != "" + yyq33[2] = true + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(4) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[0] { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yy41 := &x.ListMeta + yym42 := z.EncBinary() + _ = yym42 + if false { + } else if z.HasExtensions() && z.EncExt(yy41) { + } else { + z.EncFallback(yy41) + } + } else { + r.EncodeNil() + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy43 := &x.ListMeta + yym44 := z.EncBinary() + _ = yym44 + if false { + } else if z.HasExtensions() && z.EncExt(yy43) { + } else { + z.EncFallback(yy43) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym46 := z.EncBinary() + _ = yym46 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym47 := z.EncBinary() + _ = yym47 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym48 := z.DecBinary() + _ = yym48 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct49 := r.ContainerType() + if yyct49 == codecSelferValueTypeMap1234 { + yyl49 := r.ReadMapStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl49, d) + } + } else if yyct49 == codecSelferValueTypeArray1234 { + yyl49 := r.ReadArrayStart() + if yyl49 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl49, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys50Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys50Slc + var yyhl50 bool = l >= 0 + for yyj50 := 0; ; yyj50++ { + if yyhl50 { + if yyj50 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys50Slc = r.DecodeBytes(yys50Slc, true, true) + yys50 := string(yys50Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys50 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv53 := &x.ListMeta + yym54 := z.DecBinary() + _ = yym54 + if false { + } else if z.HasExtensions() && z.DecExt(yyv53) { + } else { + z.DecFallback(yyv53, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv55 := &x.Items + yym56 := z.DecBinary() + _ = yym56 + if false { + } else { + h.decSliceJob((*[]Job)(yyv55), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys50) + } // end switch yys50 + } // end for yyj50 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj57 int + var yyb57 bool + var yyhl57 bool = l >= 0 + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv60 := &x.ListMeta + yym61 := z.DecBinary() + _ = yym61 + if false { + } else if z.HasExtensions() && z.DecExt(yyv60) { + } else { + z.DecFallback(yyv60, false) + } + } + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv62 := &x.Items + yym63 := z.DecBinary() + _ = yym63 + if false { + } else { + h.decSliceJob((*[]Job)(yyv62), d) + } + } + for { + yyj57++ + if yyhl57 { + yyb57 = yyj57 > l + } else { + yyb57 = r.CheckBreak() + } + if yyb57 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj57-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobTemplate) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep65 := !z.EncBinary() + yy2arr65 := z.EncBasicHandle().StructToArray + var yyq65 [4]bool + _, _, _ = yysep65, yyq65, yy2arr65 + const yyr65 bool = false + yyq65[0] = x.Kind != "" + yyq65[1] = x.APIVersion != "" + yyq65[2] = true + yyq65[3] = true + var yynn65 int + if yyr65 || yy2arr65 { + r.EncodeArrayStart(4) + } else { + yynn65 = 0 + for _, b := range yyq65 { + if b { + yynn65++ + } + } + r.EncodeMapStart(yynn65) + yynn65 = 0 + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[0] { + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[1] { + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq65[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym71 := z.EncBinary() + _ = yym71 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[2] { + yy73 := &x.ObjectMeta + yy73.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq65[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy74 := &x.ObjectMeta + yy74.CodecEncodeSelf(e) + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq65[3] { + yy76 := &x.Template + yy76.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq65[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy77 := &x.Template + yy77.CodecEncodeSelf(e) + } + } + if yyr65 || yy2arr65 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplate) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym78 := z.DecBinary() + _ = yym78 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct79 := r.ContainerType() + if yyct79 == codecSelferValueTypeMap1234 { + yyl79 := r.ReadMapStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl79, d) + } + } else if yyct79 == codecSelferValueTypeArray1234 { + yyl79 := r.ReadArrayStart() + if yyl79 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl79, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplate) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys80Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys80Slc + var yyhl80 bool = l >= 0 + for yyj80 := 0; ; yyj80++ { + if yyhl80 { + if yyj80 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys80Slc = r.DecodeBytes(yys80Slc, true, true) + yys80 := string(yys80Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys80 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv83 := &x.ObjectMeta + yyv83.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv84 := &x.Template + yyv84.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys80) + } // end switch yys80 + } // end for yyj80 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplate) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj85 int + var yyb85 bool + var yyhl85 bool = l >= 0 + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv88 := &x.ObjectMeta + yyv88.CodecDecodeSelf(d) + } + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = JobTemplateSpec{} + } else { + yyv89 := &x.Template + yyv89.CodecDecodeSelf(d) + } + for { + yyj85++ + if yyhl85 { + yyb85 = yyj85 > l + } else { + yyb85 = r.CheckBreak() + } + if yyb85 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj85-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobTemplateSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym90 := z.EncBinary() + _ = yym90 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep91 := !z.EncBinary() + yy2arr91 := z.EncBasicHandle().StructToArray + var yyq91 [2]bool + _, _, _ = yysep91, yyq91, yy2arr91 + const yyr91 bool = false + yyq91[0] = true + yyq91[1] = true + var yynn91 int + if yyr91 || yy2arr91 { + r.EncodeArrayStart(2) + } else { + yynn91 = 0 + for _, b := range yyq91 { + if b { + yynn91++ + } + } + r.EncodeMapStart(yynn91) + yynn91 = 0 + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq91[0] { + yy93 := &x.ObjectMeta + yy93.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq91[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy94 := &x.ObjectMeta + yy94.CodecEncodeSelf(e) + } + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq91[1] { + yy96 := &x.Spec + yy96.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq91[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy97 := &x.Spec + yy97.CodecEncodeSelf(e) + } + } + if yyr91 || yy2arr91 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobTemplateSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym98 := z.DecBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct99 := r.ContainerType() + if yyct99 == codecSelferValueTypeMap1234 { + yyl99 := r.ReadMapStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl99, d) + } + } else if yyct99 == codecSelferValueTypeArray1234 { + yyl99 := r.ReadArrayStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl99, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobTemplateSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys100Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys100Slc + var yyhl100 bool = l >= 0 + for yyj100 := 0; ; yyj100++ { + if yyhl100 { + if yyj100 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys100Slc = r.DecodeBytes(yys100Slc, true, true) + yys100 := string(yys100Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys100 { + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv101 := &x.ObjectMeta + yyv101.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv102 := &x.Spec + yyv102.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys100) + } // end switch yys100 + } // end for yyj100 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobTemplateSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj103 int + var yyb103 bool + var yyhl103 bool = l >= 0 + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv104 := &x.ObjectMeta + yyv104.CodecDecodeSelf(d) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv105 := &x.Spec + yyv105.CodecDecodeSelf(d) + } + for { + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj103-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym106 := z.EncBinary() + _ = yym106 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep107 := !z.EncBinary() + yy2arr107 := z.EncBasicHandle().StructToArray + var yyq107 [6]bool + _, _, _ = yysep107, yyq107, yy2arr107 + const yyr107 bool = false + yyq107[0] = x.Parallelism != nil + yyq107[1] = x.Completions != nil + yyq107[2] = x.ActiveDeadlineSeconds != nil + yyq107[3] = x.Selector != nil + yyq107[4] = x.ManualSelector != nil + var yynn107 int + if yyr107 || yy2arr107 { + r.EncodeArrayStart(6) + } else { + yynn107 = 1 + for _, b := range yyq107 { + if b { + yynn107++ + } + } + r.EncodeMapStart(yynn107) + yynn107 = 0 + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[0] { + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy109 := *x.Parallelism + yym110 := z.EncBinary() + _ = yym110 + if false { + } else { + r.EncodeInt(int64(yy109)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parallelism")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy111 := *x.Parallelism + yym112 := z.EncBinary() + _ = yym112 + if false { + } else { + r.EncodeInt(int64(yy111)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[1] { + if x.Completions == nil { + r.EncodeNil() + } else { + yy114 := *x.Completions + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeInt(int64(yy114)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Completions == nil { + r.EncodeNil() + } else { + yy116 := *x.Completions + yym117 := z.EncBinary() + _ = yym117 + if false { + } else { + r.EncodeInt(int64(yy116)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[2] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy119 := *x.ActiveDeadlineSeconds + yym120 := z.EncBinary() + _ = yym120 + if false { + } else { + r.EncodeInt(int64(yy119)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy121 := *x.ActiveDeadlineSeconds + yym122 := z.EncBinary() + _ = yym122 + if false { + } else { + r.EncodeInt(int64(yy121)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[3] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq107[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq107[4] { + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy125 := *x.ManualSelector + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + r.EncodeBool(bool(yy125)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq107[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("manualSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ManualSelector == nil { + r.EncodeNil() + } else { + yy127 := *x.ManualSelector + yym128 := z.EncBinary() + _ = yym128 + if false { + } else { + r.EncodeBool(bool(yy127)) + } + } + } + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy130 := &x.Template + yy130.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy131 := &x.Template + yy131.CodecEncodeSelf(e) + } + if yyr107 || yy2arr107 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym132 := z.DecBinary() + _ = yym132 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct133 := r.ContainerType() + if yyct133 == codecSelferValueTypeMap1234 { + yyl133 := r.ReadMapStart() + if yyl133 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl133, d) + } + } else if yyct133 == codecSelferValueTypeArray1234 { + yyl133 := r.ReadArrayStart() + if yyl133 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl133, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys134Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys134Slc + var yyhl134 bool = l >= 0 + for yyj134 := 0; ; yyj134++ { + if yyhl134 { + if yyj134 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys134Slc = r.DecodeBytes(yys134Slc, true, true) + yys134 := string(yys134Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys134 { + case "parallelism": + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym136 := z.DecBinary() + _ = yym136 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + case "completions": + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym138 := z.DecBinary() + _ = yym138 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym140 := z.DecBinary() + _ = yym140 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "manualSelector": + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym143 := z.DecBinary() + _ = yym143 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv144 := &x.Template + yyv144.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys134) + } // end switch yys134 + } // end for yyj134 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj145 int + var yyb145 bool + var yyhl145 bool = l >= 0 + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym147 := z.DecBinary() + _ = yym147 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym149 := z.DecBinary() + _ = yym149 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym151 := z.DecBinary() + _ = yym151 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ManualSelector != nil { + x.ManualSelector = nil + } + } else { + if x.ManualSelector == nil { + x.ManualSelector = new(bool) + } + yym154 := z.DecBinary() + _ = yym154 + if false { + } else { + *((*bool)(x.ManualSelector)) = r.DecodeBool() + } + } + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv155 := &x.Template + yyv155.CodecDecodeSelf(d) + } + for { + yyj145++ + if yyhl145 { + yyb145 = yyj145 > l + } else { + yyb145 = r.CheckBreak() + } + if yyb145 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj145-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym156 := z.EncBinary() + _ = yym156 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep157 := !z.EncBinary() + yy2arr157 := z.EncBasicHandle().StructToArray + var yyq157 [6]bool + _, _, _ = yysep157, yyq157, yy2arr157 + const yyr157 bool = false + yyq157[0] = len(x.Conditions) != 0 + yyq157[1] = x.StartTime != nil + yyq157[2] = x.CompletionTime != nil + yyq157[3] = x.Active != 0 + yyq157[4] = x.Succeeded != 0 + yyq157[5] = x.Failed != 0 + var yynn157 int + if yyr157 || yy2arr157 { + r.EncodeArrayStart(6) + } else { + yynn157 = 0 + for _, b := range yyq157 { + if b { + yynn157++ + } + } + r.EncodeMapStart(yynn157) + yynn157 = 0 + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq157[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym160 := z.EncBinary() + _ = yym160 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[1] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym162 := z.EncBinary() + _ = yym162 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym162 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym162 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq157[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym163 := z.EncBinary() + _ = yym163 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym163 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym163 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[2] { + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym165 := z.EncBinary() + _ = yym165 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym165 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym165 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq157[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym166 := z.EncBinary() + _ = yym166 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym166 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym166 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[3] { + yym168 := z.EncBinary() + _ = yym168 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq157[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym169 := z.EncBinary() + _ = yym169 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[4] { + yym171 := z.EncBinary() + _ = yym171 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq157[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("succeeded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym172 := z.EncBinary() + _ = yym172 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq157[5] { + yym174 := z.EncBinary() + _ = yym174 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq157[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym175 := z.EncBinary() + _ = yym175 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } + } + if yyr157 || yy2arr157 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym176 := z.DecBinary() + _ = yym176 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct177 := r.ContainerType() + if yyct177 == codecSelferValueTypeMap1234 { + yyl177 := r.ReadMapStart() + if yyl177 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl177, d) + } + } else if yyct177 == codecSelferValueTypeArray1234 { + yyl177 := r.ReadArrayStart() + if yyl177 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl177, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys178Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys178Slc + var yyhl178 bool = l >= 0 + for yyj178 := 0; ; yyj178++ { + if yyhl178 { + if yyj178 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys178Slc = r.DecodeBytes(yys178Slc, true, true) + yys178 := string(yys178Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys178 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv179 := &x.Conditions + yym180 := z.DecBinary() + _ = yym180 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv179), d) + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym182 := z.DecBinary() + _ = yym182 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym182 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym182 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "completionTime": + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym184 := z.DecBinary() + _ = yym184 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym184 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym184 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + case "active": + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + case "succeeded": + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + case "failed": + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys178) + } // end switch yys178 + } // end for yyj178 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj188 int + var yyb188 bool + var yyhl188 bool = l >= 0 + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv189 := &x.Conditions + yym190 := z.DecBinary() + _ = yym190 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv189), d) + } + } + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym192 := z.DecBinary() + _ = yym192 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym192 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym192 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym194 := z.DecBinary() + _ = yym194 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym194 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym194 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + for { + yyj188++ + if yyhl188 { + yyb188 = yyj188 > l + } else { + yyb188 = r.CheckBreak() + } + if yyb188 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj188-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x JobConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym198 := z.EncBinary() + _ = yym198 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *JobConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym199 := z.DecBinary() + _ = yym199 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *JobCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym200 := z.EncBinary() + _ = yym200 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep201 := !z.EncBinary() + yy2arr201 := z.EncBasicHandle().StructToArray + var yyq201 [6]bool + _, _, _ = yysep201, yyq201, yy2arr201 + const yyr201 bool = false + yyq201[2] = true + yyq201[3] = true + yyq201[4] = x.Reason != "" + yyq201[5] = x.Message != "" + var yynn201 int + if yyr201 || yy2arr201 { + r.EncodeArrayStart(6) + } else { + yynn201 = 2 + for _, b := range yyq201 { + if b { + yynn201++ + } + } + r.EncodeMapStart(yynn201) + yynn201 = 0 + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym204 := z.EncBinary() + _ = yym204 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym205 := z.EncBinary() + _ = yym205 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[2] { + yy207 := &x.LastProbeTime + yym208 := z.EncBinary() + _ = yym208 + if false { + } else if z.HasExtensions() && z.EncExt(yy207) { + } else if yym208 { + z.EncBinaryMarshal(yy207) + } else if !yym208 && z.IsJSONHandle() { + z.EncJSONMarshal(yy207) + } else { + z.EncFallback(yy207) + } + } else { + r.EncodeNil() + } + } else { + if yyq201[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy209 := &x.LastProbeTime + yym210 := z.EncBinary() + _ = yym210 + if false { + } else if z.HasExtensions() && z.EncExt(yy209) { + } else if yym210 { + z.EncBinaryMarshal(yy209) + } else if !yym210 && z.IsJSONHandle() { + z.EncJSONMarshal(yy209) + } else { + z.EncFallback(yy209) + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[3] { + yy212 := &x.LastTransitionTime + yym213 := z.EncBinary() + _ = yym213 + if false { + } else if z.HasExtensions() && z.EncExt(yy212) { + } else if yym213 { + z.EncBinaryMarshal(yy212) + } else if !yym213 && z.IsJSONHandle() { + z.EncJSONMarshal(yy212) + } else { + z.EncFallback(yy212) + } + } else { + r.EncodeNil() + } + } else { + if yyq201[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy214 := &x.LastTransitionTime + yym215 := z.EncBinary() + _ = yym215 + if false { + } else if z.HasExtensions() && z.EncExt(yy214) { + } else if yym215 { + z.EncBinaryMarshal(yy214) + } else if !yym215 && z.IsJSONHandle() { + z.EncJSONMarshal(yy214) + } else { + z.EncFallback(yy214) + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[4] { + yym217 := z.EncBinary() + _ = yym217 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq201[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym218 := z.EncBinary() + _ = yym218 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq201[5] { + yym220 := z.EncBinary() + _ = yym220 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq201[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym221 := z.EncBinary() + _ = yym221 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr201 || yy2arr201 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym222 := z.DecBinary() + _ = yym222 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct223 := r.ContainerType() + if yyct223 == codecSelferValueTypeMap1234 { + yyl223 := r.ReadMapStart() + if yyl223 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl223, d) + } + } else if yyct223 == codecSelferValueTypeArray1234 { + yyl223 := r.ReadArrayStart() + if yyl223 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl223, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys224Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys224Slc + var yyhl224 bool = l >= 0 + for yyj224 := 0; ; yyj224++ { + if yyhl224 { + if yyj224 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys224Slc = r.DecodeBytes(yys224Slc, true, true) + yys224 := string(yys224Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys224 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv227 := &x.LastProbeTime + yym228 := z.DecBinary() + _ = yym228 + if false { + } else if z.HasExtensions() && z.DecExt(yyv227) { + } else if yym228 { + z.DecBinaryUnmarshal(yyv227) + } else if !yym228 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv227) + } else { + z.DecFallback(yyv227, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv229 := &x.LastTransitionTime + yym230 := z.DecBinary() + _ = yym230 + if false { + } else if z.HasExtensions() && z.DecExt(yyv229) { + } else if yym230 { + z.DecBinaryUnmarshal(yyv229) + } else if !yym230 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv229) + } else { + z.DecFallback(yyv229, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys224) + } // end switch yys224 + } // end for yyj224 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj233 int + var yyb233 bool + var yyhl233 bool = l >= 0 + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv236 := &x.LastProbeTime + yym237 := z.DecBinary() + _ = yym237 + if false { + } else if z.HasExtensions() && z.DecExt(yyv236) { + } else if yym237 { + z.DecBinaryUnmarshal(yyv236) + } else if !yym237 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv236) + } else { + z.DecFallback(yyv236, false) + } + } + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv238 := &x.LastTransitionTime + yym239 := z.DecBinary() + _ = yym239 + if false { + } else if z.HasExtensions() && z.DecExt(yyv238) { + } else if yym239 { + z.DecBinaryUnmarshal(yyv238) + } else if !yym239 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv238) + } else { + z.DecFallback(yyv238, false) + } + } + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj233++ + if yyhl233 { + yyb233 = yyj233 > l + } else { + yyb233 = r.CheckBreak() + } + if yyb233 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj233-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJob) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym242 := z.EncBinary() + _ = yym242 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep243 := !z.EncBinary() + yy2arr243 := z.EncBasicHandle().StructToArray + var yyq243 [5]bool + _, _, _ = yysep243, yyq243, yy2arr243 + const yyr243 bool = false + yyq243[0] = x.Kind != "" + yyq243[1] = x.APIVersion != "" + yyq243[2] = true + yyq243[3] = true + yyq243[4] = true + var yynn243 int + if yyr243 || yy2arr243 { + r.EncodeArrayStart(5) + } else { + yynn243 = 0 + for _, b := range yyq243 { + if b { + yynn243++ + } + } + r.EncodeMapStart(yynn243) + yynn243 = 0 + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq243[0] { + yym245 := z.EncBinary() + _ = yym245 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq243[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym246 := z.EncBinary() + _ = yym246 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq243[1] { + yym248 := z.EncBinary() + _ = yym248 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq243[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym249 := z.EncBinary() + _ = yym249 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq243[2] { + yy251 := &x.ObjectMeta + yy251.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq243[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy252 := &x.ObjectMeta + yy252.CodecEncodeSelf(e) + } + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq243[3] { + yy254 := &x.Spec + yy254.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq243[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy255 := &x.Spec + yy255.CodecEncodeSelf(e) + } + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq243[4] { + yy257 := &x.Status + yy257.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq243[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy258 := &x.Status + yy258.CodecEncodeSelf(e) + } + } + if yyr243 || yy2arr243 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJob) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym259 := z.DecBinary() + _ = yym259 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct260 := r.ContainerType() + if yyct260 == codecSelferValueTypeMap1234 { + yyl260 := r.ReadMapStart() + if yyl260 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl260, d) + } + } else if yyct260 == codecSelferValueTypeArray1234 { + yyl260 := r.ReadArrayStart() + if yyl260 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl260, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJob) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys261Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys261Slc + var yyhl261 bool = l >= 0 + for yyj261 := 0; ; yyj261++ { + if yyhl261 { + if yyj261 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys261Slc = r.DecodeBytes(yys261Slc, true, true) + yys261 := string(yys261Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys261 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv264 := &x.ObjectMeta + yyv264.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScheduledJobSpec{} + } else { + yyv265 := &x.Spec + yyv265.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScheduledJobStatus{} + } else { + yyv266 := &x.Status + yyv266.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys261) + } // end switch yys261 + } // end for yyj261 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJob) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj267 int + var yyb267 bool + var yyhl267 bool = l >= 0 + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv270 := &x.ObjectMeta + yyv270.CodecDecodeSelf(d) + } + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScheduledJobSpec{} + } else { + yyv271 := &x.Spec + yyv271.CodecDecodeSelf(d) + } + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScheduledJobStatus{} + } else { + yyv272 := &x.Status + yyv272.CodecDecodeSelf(d) + } + for { + yyj267++ + if yyhl267 { + yyb267 = yyj267 > l + } else { + yyb267 = r.CheckBreak() + } + if yyb267 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj267-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym273 := z.EncBinary() + _ = yym273 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep274 := !z.EncBinary() + yy2arr274 := z.EncBasicHandle().StructToArray + var yyq274 [4]bool + _, _, _ = yysep274, yyq274, yy2arr274 + const yyr274 bool = false + yyq274[0] = x.Kind != "" + yyq274[1] = x.APIVersion != "" + yyq274[2] = true + var yynn274 int + if yyr274 || yy2arr274 { + r.EncodeArrayStart(4) + } else { + yynn274 = 1 + for _, b := range yyq274 { + if b { + yynn274++ + } + } + r.EncodeMapStart(yynn274) + yynn274 = 0 + } + if yyr274 || yy2arr274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq274[0] { + yym276 := z.EncBinary() + _ = yym276 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq274[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym277 := z.EncBinary() + _ = yym277 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr274 || yy2arr274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq274[1] { + yym279 := z.EncBinary() + _ = yym279 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq274[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym280 := z.EncBinary() + _ = yym280 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr274 || yy2arr274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq274[2] { + yy282 := &x.ListMeta + yym283 := z.EncBinary() + _ = yym283 + if false { + } else if z.HasExtensions() && z.EncExt(yy282) { + } else { + z.EncFallback(yy282) + } + } else { + r.EncodeNil() + } + } else { + if yyq274[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy284 := &x.ListMeta + yym285 := z.EncBinary() + _ = yym285 + if false { + } else if z.HasExtensions() && z.EncExt(yy284) { + } else { + z.EncFallback(yy284) + } + } + } + if yyr274 || yy2arr274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym287 := z.EncBinary() + _ = yym287 + if false { + } else { + h.encSliceScheduledJob(([]ScheduledJob)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym288 := z.EncBinary() + _ = yym288 + if false { + } else { + h.encSliceScheduledJob(([]ScheduledJob)(x.Items), e) + } + } + } + if yyr274 || yy2arr274 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym289 := z.DecBinary() + _ = yym289 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct290 := r.ContainerType() + if yyct290 == codecSelferValueTypeMap1234 { + yyl290 := r.ReadMapStart() + if yyl290 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl290, d) + } + } else if yyct290 == codecSelferValueTypeArray1234 { + yyl290 := r.ReadArrayStart() + if yyl290 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl290, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys291Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys291Slc + var yyhl291 bool = l >= 0 + for yyj291 := 0; ; yyj291++ { + if yyhl291 { + if yyj291 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys291Slc = r.DecodeBytes(yys291Slc, true, true) + yys291 := string(yys291Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys291 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv294 := &x.ListMeta + yym295 := z.DecBinary() + _ = yym295 + if false { + } else if z.HasExtensions() && z.DecExt(yyv294) { + } else { + z.DecFallback(yyv294, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv296 := &x.Items + yym297 := z.DecBinary() + _ = yym297 + if false { + } else { + h.decSliceScheduledJob((*[]ScheduledJob)(yyv296), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys291) + } // end switch yys291 + } // end for yyj291 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj298 int + var yyb298 bool + var yyhl298 bool = l >= 0 + yyj298++ + if yyhl298 { + yyb298 = yyj298 > l + } else { + yyb298 = r.CheckBreak() + } + if yyb298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj298++ + if yyhl298 { + yyb298 = yyj298 > l + } else { + yyb298 = r.CheckBreak() + } + if yyb298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj298++ + if yyhl298 { + yyb298 = yyj298 > l + } else { + yyb298 = r.CheckBreak() + } + if yyb298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv301 := &x.ListMeta + yym302 := z.DecBinary() + _ = yym302 + if false { + } else if z.HasExtensions() && z.DecExt(yyv301) { + } else { + z.DecFallback(yyv301, false) + } + } + yyj298++ + if yyhl298 { + yyb298 = yyj298 > l + } else { + yyb298 = r.CheckBreak() + } + if yyb298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv303 := &x.Items + yym304 := z.DecBinary() + _ = yym304 + if false { + } else { + h.decSliceScheduledJob((*[]ScheduledJob)(yyv303), d) + } + } + for { + yyj298++ + if yyhl298 { + yyb298 = yyj298 > l + } else { + yyb298 = r.CheckBreak() + } + if yyb298 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj298-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScheduledJobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym305 := z.EncBinary() + _ = yym305 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep306 := !z.EncBinary() + yy2arr306 := z.EncBasicHandle().StructToArray + var yyq306 [5]bool + _, _, _ = yysep306, yyq306, yy2arr306 + const yyr306 bool = false + yyq306[1] = x.StartingDeadlineSeconds != nil + yyq306[2] = x.ConcurrencyPolicy != "" + yyq306[3] = x.Suspend != nil + var yynn306 int + if yyr306 || yy2arr306 { + r.EncodeArrayStart(5) + } else { + yynn306 = 2 + for _, b := range yyq306 { + if b { + yynn306++ + } + } + r.EncodeMapStart(yynn306) + yynn306 = 0 + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym308 := z.EncBinary() + _ = yym308 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("schedule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym309 := z.EncBinary() + _ = yym309 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Schedule)) + } + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq306[1] { + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy311 := *x.StartingDeadlineSeconds + yym312 := z.EncBinary() + _ = yym312 + if false { + } else { + r.EncodeInt(int64(yy311)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq306[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startingDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartingDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy313 := *x.StartingDeadlineSeconds + yym314 := z.EncBinary() + _ = yym314 + if false { + } else { + r.EncodeInt(int64(yy313)) + } + } + } + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq306[2] { + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq306[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("concurrencyPolicy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.ConcurrencyPolicy.CodecEncodeSelf(e) + } + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq306[3] { + if x.Suspend == nil { + r.EncodeNil() + } else { + yy317 := *x.Suspend + yym318 := z.EncBinary() + _ = yym318 + if false { + } else { + r.EncodeBool(bool(yy317)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq306[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("suspend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Suspend == nil { + r.EncodeNil() + } else { + yy319 := *x.Suspend + yym320 := z.EncBinary() + _ = yym320 + if false { + } else { + r.EncodeBool(bool(yy319)) + } + } + } + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy322 := &x.JobTemplate + yy322.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("jobTemplate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy323 := &x.JobTemplate + yy323.CodecEncodeSelf(e) + } + if yyr306 || yy2arr306 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym324 := z.DecBinary() + _ = yym324 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct325 := r.ContainerType() + if yyct325 == codecSelferValueTypeMap1234 { + yyl325 := r.ReadMapStart() + if yyl325 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl325, d) + } + } else if yyct325 == codecSelferValueTypeArray1234 { + yyl325 := r.ReadArrayStart() + if yyl325 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl325, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys326Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys326Slc + var yyhl326 bool = l >= 0 + for yyj326 := 0; ; yyj326++ { + if yyhl326 { + if yyj326 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys326Slc = r.DecodeBytes(yys326Slc, true, true) + yys326 := string(yys326Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys326 { + case "schedule": + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + x.Schedule = string(r.DecodeString()) + } + case "startingDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym329 := z.DecBinary() + _ = yym329 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "concurrencyPolicy": + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + x.ConcurrencyPolicy = ConcurrencyPolicy(r.DecodeString()) + } + case "suspend": + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym332 := z.DecBinary() + _ = yym332 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + case "jobTemplate": + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv333 := &x.JobTemplate + yyv333.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys326) + } // end switch yys326 + } // end for yyj326 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj334 int + var yyb334 bool + var yyhl334 bool = l >= 0 + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Schedule = "" + } else { + x.Schedule = string(r.DecodeString()) + } + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartingDeadlineSeconds != nil { + x.StartingDeadlineSeconds = nil + } + } else { + if x.StartingDeadlineSeconds == nil { + x.StartingDeadlineSeconds = new(int64) + } + yym337 := z.DecBinary() + _ = yym337 + if false { + } else { + *((*int64)(x.StartingDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ConcurrencyPolicy = "" + } else { + x.ConcurrencyPolicy = ConcurrencyPolicy(r.DecodeString()) + } + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Suspend != nil { + x.Suspend = nil + } + } else { + if x.Suspend == nil { + x.Suspend = new(bool) + } + yym340 := z.DecBinary() + _ = yym340 + if false { + } else { + *((*bool)(x.Suspend)) = r.DecodeBool() + } + } + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.JobTemplate = JobTemplateSpec{} + } else { + yyv341 := &x.JobTemplate + yyv341.CodecDecodeSelf(d) + } + for { + yyj334++ + if yyhl334 { + yyb334 = yyj334 > l + } else { + yyb334 = r.CheckBreak() + } + if yyb334 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj334-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x ConcurrencyPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym342 := z.EncBinary() + _ = yym342 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *ConcurrencyPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym343 := z.DecBinary() + _ = yym343 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ScheduledJobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym344 := z.EncBinary() + _ = yym344 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep345 := !z.EncBinary() + yy2arr345 := z.EncBasicHandle().StructToArray + var yyq345 [2]bool + _, _, _ = yysep345, yyq345, yy2arr345 + const yyr345 bool = false + yyq345[0] = len(x.Active) != 0 + yyq345[1] = x.LastScheduleTime != nil + var yynn345 int + if yyr345 || yy2arr345 { + r.EncodeArrayStart(2) + } else { + yynn345 = 0 + for _, b := range yyq345 { + if b { + yynn345++ + } + } + r.EncodeMapStart(yynn345) + yynn345 = 0 + } + if yyr345 || yy2arr345 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq345[0] { + if x.Active == nil { + r.EncodeNil() + } else { + yym347 := z.EncBinary() + _ = yym347 + if false { + } else { + h.encSlicev1_ObjectReference(([]pkg2_v1.ObjectReference)(x.Active), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq345[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Active == nil { + r.EncodeNil() + } else { + yym348 := z.EncBinary() + _ = yym348 + if false { + } else { + h.encSlicev1_ObjectReference(([]pkg2_v1.ObjectReference)(x.Active), e) + } + } + } + } + if yyr345 || yy2arr345 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq345[1] { + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym350 := z.EncBinary() + _ = yym350 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym350 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym350 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq345[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScheduleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScheduleTime == nil { + r.EncodeNil() + } else { + yym351 := z.EncBinary() + _ = yym351 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScheduleTime) { + } else if yym351 { + z.EncBinaryMarshal(x.LastScheduleTime) + } else if !yym351 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScheduleTime) + } else { + z.EncFallback(x.LastScheduleTime) + } + } + } + } + if yyr345 || yy2arr345 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScheduledJobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym352 := z.DecBinary() + _ = yym352 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct353 := r.ContainerType() + if yyct353 == codecSelferValueTypeMap1234 { + yyl353 := r.ReadMapStart() + if yyl353 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl353, d) + } + } else if yyct353 == codecSelferValueTypeArray1234 { + yyl353 := r.ReadArrayStart() + if yyl353 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl353, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScheduledJobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys354Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys354Slc + var yyhl354 bool = l >= 0 + for yyj354 := 0; ; yyj354++ { + if yyhl354 { + if yyj354 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys354Slc = r.DecodeBytes(yys354Slc, true, true) + yys354 := string(yys354Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys354 { + case "active": + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv355 := &x.Active + yym356 := z.DecBinary() + _ = yym356 + if false { + } else { + h.decSlicev1_ObjectReference((*[]pkg2_v1.ObjectReference)(yyv355), d) + } + } + case "lastScheduleTime": + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_unversioned.Time) + } + yym358 := z.DecBinary() + _ = yym358 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym358 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym358 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys354) + } // end switch yys354 + } // end for yyj354 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScheduledJobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj359 int + var yyb359 bool + var yyhl359 bool = l >= 0 + yyj359++ + if yyhl359 { + yyb359 = yyj359 > l + } else { + yyb359 = r.CheckBreak() + } + if yyb359 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = nil + } else { + yyv360 := &x.Active + yym361 := z.DecBinary() + _ = yym361 + if false { + } else { + h.decSlicev1_ObjectReference((*[]pkg2_v1.ObjectReference)(yyv360), d) + } + } + yyj359++ + if yyhl359 { + yyb359 = yyj359 > l + } else { + yyb359 = r.CheckBreak() + } + if yyb359 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScheduleTime != nil { + x.LastScheduleTime = nil + } + } else { + if x.LastScheduleTime == nil { + x.LastScheduleTime = new(pkg1_unversioned.Time) + } + yym363 := z.DecBinary() + _ = yym363 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScheduleTime) { + } else if yym363 { + z.DecBinaryUnmarshal(x.LastScheduleTime) + } else if !yym363 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScheduleTime) + } else { + z.DecFallback(x.LastScheduleTime, false) + } + } + for { + yyj359++ + if yyhl359 { + yyb359 = yyj359 > l + } else { + yyb359 = r.CheckBreak() + } + if yyb359 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj359-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym364 := z.EncBinary() + _ = yym364 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep365 := !z.EncBinary() + yy2arr365 := z.EncBasicHandle().StructToArray + var yyq365 [2]bool + _, _, _ = yysep365, yyq365, yy2arr365 + const yyr365 bool = false + yyq365[0] = len(x.MatchLabels) != 0 + yyq365[1] = len(x.MatchExpressions) != 0 + var yynn365 int + if yyr365 || yy2arr365 { + r.EncodeArrayStart(2) + } else { + yynn365 = 0 + for _, b := range yyq365 { + if b { + yynn365++ + } + } + r.EncodeMapStart(yynn365) + yynn365 = 0 + } + if yyr365 || yy2arr365 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq365[0] { + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym367 := z.EncBinary() + _ = yym367 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq365[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchLabels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym368 := z.EncBinary() + _ = yym368 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } + } + if yyr365 || yy2arr365 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq365[1] { + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym370 := z.EncBinary() + _ = yym370 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq365[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym371 := z.EncBinary() + _ = yym371 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } + } + if yyr365 || yy2arr365 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym372 := z.DecBinary() + _ = yym372 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct373 := r.ContainerType() + if yyct373 == codecSelferValueTypeMap1234 { + yyl373 := r.ReadMapStart() + if yyl373 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl373, d) + } + } else if yyct373 == codecSelferValueTypeArray1234 { + yyl373 := r.ReadArrayStart() + if yyl373 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl373, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys374Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys374Slc + var yyhl374 bool = l >= 0 + for yyj374 := 0; ; yyj374++ { + if yyhl374 { + if yyj374 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys374Slc = r.DecodeBytes(yys374Slc, true, true) + yys374 := string(yys374Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys374 { + case "matchLabels": + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv375 := &x.MatchLabels + yym376 := z.DecBinary() + _ = yym376 + if false { + } else { + z.F.DecMapStringStringX(yyv375, false, d) + } + } + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv377 := &x.MatchExpressions + yym378 := z.DecBinary() + _ = yym378 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv377), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys374) + } // end switch yys374 + } // end for yyj374 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj379 int + var yyb379 bool + var yyhl379 bool = l >= 0 + yyj379++ + if yyhl379 { + yyb379 = yyj379 > l + } else { + yyb379 = r.CheckBreak() + } + if yyb379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv380 := &x.MatchLabels + yym381 := z.DecBinary() + _ = yym381 + if false { + } else { + z.F.DecMapStringStringX(yyv380, false, d) + } + } + yyj379++ + if yyhl379 { + yyb379 = yyj379 > l + } else { + yyb379 = r.CheckBreak() + } + if yyb379 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv382 := &x.MatchExpressions + yym383 := z.DecBinary() + _ = yym383 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv382), d) + } + } + for { + yyj379++ + if yyhl379 { + yyb379 = yyj379 > l + } else { + yyb379 = r.CheckBreak() + } + if yyb379 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj379-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym384 := z.EncBinary() + _ = yym384 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep385 := !z.EncBinary() + yy2arr385 := z.EncBasicHandle().StructToArray + var yyq385 [3]bool + _, _, _ = yysep385, yyq385, yy2arr385 + const yyr385 bool = false + yyq385[2] = len(x.Values) != 0 + var yynn385 int + if yyr385 || yy2arr385 { + r.EncodeArrayStart(3) + } else { + yynn385 = 2 + for _, b := range yyq385 { + if b { + yynn385++ + } + } + r.EncodeMapStart(yynn385) + yynn385 = 0 + } + if yyr385 || yy2arr385 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym387 := z.EncBinary() + _ = yym387 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym388 := z.EncBinary() + _ = yym388 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr385 || yy2arr385 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr385 || yy2arr385 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq385[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym391 := z.EncBinary() + _ = yym391 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq385[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym392 := z.EncBinary() + _ = yym392 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr385 || yy2arr385 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym393 := z.DecBinary() + _ = yym393 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct394 := r.ContainerType() + if yyct394 == codecSelferValueTypeMap1234 { + yyl394 := r.ReadMapStart() + if yyl394 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl394, d) + } + } else if yyct394 == codecSelferValueTypeArray1234 { + yyl394 := r.ReadArrayStart() + if yyl394 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl394, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys395Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys395Slc + var yyhl395 bool = l >= 0 + for yyj395 := 0; ; yyj395++ { + if yyhl395 { + if yyj395 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys395Slc = r.DecodeBytes(yys395Slc, true, true) + yys395 := string(yys395Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys395 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv398 := &x.Values + yym399 := z.DecBinary() + _ = yym399 + if false { + } else { + z.F.DecSliceStringX(yyv398, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys395) + } // end switch yys395 + } // end for yyj395 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj400 int + var yyb400 bool + var yyhl400 bool = l >= 0 + yyj400++ + if yyhl400 { + yyb400 = yyj400 > l + } else { + yyb400 = r.CheckBreak() + } + if yyb400 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj400++ + if yyhl400 { + yyb400 = yyj400 > l + } else { + yyb400 = r.CheckBreak() + } + if yyb400 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + yyj400++ + if yyhl400 { + yyb400 = yyj400 > l + } else { + yyb400 = r.CheckBreak() + } + if yyb400 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv403 := &x.Values + yym404 := z.DecBinary() + _ = yym404 + if false { + } else { + z.F.DecSliceStringX(yyv403, false, d) + } + } + for { + yyj400++ + if yyhl400 { + yyb400 = yyj400 > l + } else { + yyb400 = r.CheckBreak() + } + if yyb400 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj400-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LabelSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym405 := z.EncBinary() + _ = yym405 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LabelSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym406 := z.DecBinary() + _ = yym406 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x codecSelfer1234) encSliceJob(v []Job, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv407 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy408 := &yyv407 + yy408.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv409 := *v + yyh409, yyl409 := z.DecSliceHelperStart() + var yyc409 bool + if yyl409 == 0 { + if yyv409 == nil { + yyv409 = []Job{} + yyc409 = true + } else if len(yyv409) != 0 { + yyv409 = yyv409[:0] + yyc409 = true + } + } else if yyl409 > 0 { + var yyrr409, yyrl409 int + var yyrt409 bool + if yyl409 > cap(yyv409) { + + yyrg409 := len(yyv409) > 0 + yyv2409 := yyv409 + yyrl409, yyrt409 = z.DecInferLen(yyl409, z.DecBasicHandle().MaxInitLen, 824) + if yyrt409 { + if yyrl409 <= cap(yyv409) { + yyv409 = yyv409[:yyrl409] + } else { + yyv409 = make([]Job, yyrl409) + } + } else { + yyv409 = make([]Job, yyrl409) + } + yyc409 = true + yyrr409 = len(yyv409) + if yyrg409 { + copy(yyv409, yyv2409) + } + } else if yyl409 != len(yyv409) { + yyv409 = yyv409[:yyl409] + yyc409 = true + } + yyj409 := 0 + for ; yyj409 < yyrr409; yyj409++ { + yyh409.ElemContainerState(yyj409) + if r.TryDecodeAsNil() { + yyv409[yyj409] = Job{} + } else { + yyv410 := &yyv409[yyj409] + yyv410.CodecDecodeSelf(d) + } + + } + if yyrt409 { + for ; yyj409 < yyl409; yyj409++ { + yyv409 = append(yyv409, Job{}) + yyh409.ElemContainerState(yyj409) + if r.TryDecodeAsNil() { + yyv409[yyj409] = Job{} + } else { + yyv411 := &yyv409[yyj409] + yyv411.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj409 := 0 + for ; !r.CheckBreak(); yyj409++ { + + if yyj409 >= len(yyv409) { + yyv409 = append(yyv409, Job{}) // var yyz409 Job + yyc409 = true + } + yyh409.ElemContainerState(yyj409) + if yyj409 < len(yyv409) { + if r.TryDecodeAsNil() { + yyv409[yyj409] = Job{} + } else { + yyv412 := &yyv409[yyj409] + yyv412.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj409 < len(yyv409) { + yyv409 = yyv409[:yyj409] + yyc409 = true + } else if yyj409 == 0 && yyv409 == nil { + yyv409 = []Job{} + yyc409 = true + } + } + yyh409.End() + if yyc409 { + *v = yyv409 + } +} + +func (x codecSelfer1234) encSliceJobCondition(v []JobCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv413 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy414 := &yyv413 + yy414.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJobCondition(v *[]JobCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv415 := *v + yyh415, yyl415 := z.DecSliceHelperStart() + var yyc415 bool + if yyl415 == 0 { + if yyv415 == nil { + yyv415 = []JobCondition{} + yyc415 = true + } else if len(yyv415) != 0 { + yyv415 = yyv415[:0] + yyc415 = true + } + } else if yyl415 > 0 { + var yyrr415, yyrl415 int + var yyrt415 bool + if yyl415 > cap(yyv415) { + + yyrg415 := len(yyv415) > 0 + yyv2415 := yyv415 + yyrl415, yyrt415 = z.DecInferLen(yyl415, z.DecBasicHandle().MaxInitLen, 112) + if yyrt415 { + if yyrl415 <= cap(yyv415) { + yyv415 = yyv415[:yyrl415] + } else { + yyv415 = make([]JobCondition, yyrl415) + } + } else { + yyv415 = make([]JobCondition, yyrl415) + } + yyc415 = true + yyrr415 = len(yyv415) + if yyrg415 { + copy(yyv415, yyv2415) + } + } else if yyl415 != len(yyv415) { + yyv415 = yyv415[:yyl415] + yyc415 = true + } + yyj415 := 0 + for ; yyj415 < yyrr415; yyj415++ { + yyh415.ElemContainerState(yyj415) + if r.TryDecodeAsNil() { + yyv415[yyj415] = JobCondition{} + } else { + yyv416 := &yyv415[yyj415] + yyv416.CodecDecodeSelf(d) + } + + } + if yyrt415 { + for ; yyj415 < yyl415; yyj415++ { + yyv415 = append(yyv415, JobCondition{}) + yyh415.ElemContainerState(yyj415) + if r.TryDecodeAsNil() { + yyv415[yyj415] = JobCondition{} + } else { + yyv417 := &yyv415[yyj415] + yyv417.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj415 := 0 + for ; !r.CheckBreak(); yyj415++ { + + if yyj415 >= len(yyv415) { + yyv415 = append(yyv415, JobCondition{}) // var yyz415 JobCondition + yyc415 = true + } + yyh415.ElemContainerState(yyj415) + if yyj415 < len(yyv415) { + if r.TryDecodeAsNil() { + yyv415[yyj415] = JobCondition{} + } else { + yyv418 := &yyv415[yyj415] + yyv418.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj415 < len(yyv415) { + yyv415 = yyv415[:yyj415] + yyc415 = true + } else if yyj415 == 0 && yyv415 == nil { + yyv415 = []JobCondition{} + yyc415 = true + } + } + yyh415.End() + if yyc415 { + *v = yyv415 + } +} + +func (x codecSelfer1234) encSliceScheduledJob(v []ScheduledJob, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv419 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy420 := &yyv419 + yy420.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceScheduledJob(v *[]ScheduledJob, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv421 := *v + yyh421, yyl421 := z.DecSliceHelperStart() + var yyc421 bool + if yyl421 == 0 { + if yyv421 == nil { + yyv421 = []ScheduledJob{} + yyc421 = true + } else if len(yyv421) != 0 { + yyv421 = yyv421[:0] + yyc421 = true + } + } else if yyl421 > 0 { + var yyrr421, yyrl421 int + var yyrt421 bool + if yyl421 > cap(yyv421) { + + yyrg421 := len(yyv421) > 0 + yyv2421 := yyv421 + yyrl421, yyrt421 = z.DecInferLen(yyl421, z.DecBasicHandle().MaxInitLen, 1072) + if yyrt421 { + if yyrl421 <= cap(yyv421) { + yyv421 = yyv421[:yyrl421] + } else { + yyv421 = make([]ScheduledJob, yyrl421) + } + } else { + yyv421 = make([]ScheduledJob, yyrl421) + } + yyc421 = true + yyrr421 = len(yyv421) + if yyrg421 { + copy(yyv421, yyv2421) + } + } else if yyl421 != len(yyv421) { + yyv421 = yyv421[:yyl421] + yyc421 = true + } + yyj421 := 0 + for ; yyj421 < yyrr421; yyj421++ { + yyh421.ElemContainerState(yyj421) + if r.TryDecodeAsNil() { + yyv421[yyj421] = ScheduledJob{} + } else { + yyv422 := &yyv421[yyj421] + yyv422.CodecDecodeSelf(d) + } + + } + if yyrt421 { + for ; yyj421 < yyl421; yyj421++ { + yyv421 = append(yyv421, ScheduledJob{}) + yyh421.ElemContainerState(yyj421) + if r.TryDecodeAsNil() { + yyv421[yyj421] = ScheduledJob{} + } else { + yyv423 := &yyv421[yyj421] + yyv423.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj421 := 0 + for ; !r.CheckBreak(); yyj421++ { + + if yyj421 >= len(yyv421) { + yyv421 = append(yyv421, ScheduledJob{}) // var yyz421 ScheduledJob + yyc421 = true + } + yyh421.ElemContainerState(yyj421) + if yyj421 < len(yyv421) { + if r.TryDecodeAsNil() { + yyv421[yyj421] = ScheduledJob{} + } else { + yyv424 := &yyv421[yyj421] + yyv424.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj421 < len(yyv421) { + yyv421 = yyv421[:yyj421] + yyc421 = true + } else if yyj421 == 0 && yyv421 == nil { + yyv421 = []ScheduledJob{} + yyc421 = true + } + } + yyh421.End() + if yyc421 { + *v = yyv421 + } +} + +func (x codecSelfer1234) encSlicev1_ObjectReference(v []pkg2_v1.ObjectReference, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv425 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy426 := &yyv425 + yy426.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_ObjectReference(v *[]pkg2_v1.ObjectReference, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv427 := *v + yyh427, yyl427 := z.DecSliceHelperStart() + var yyc427 bool + if yyl427 == 0 { + if yyv427 == nil { + yyv427 = []pkg2_v1.ObjectReference{} + yyc427 = true + } else if len(yyv427) != 0 { + yyv427 = yyv427[:0] + yyc427 = true + } + } else if yyl427 > 0 { + var yyrr427, yyrl427 int + var yyrt427 bool + if yyl427 > cap(yyv427) { + + yyrg427 := len(yyv427) > 0 + yyv2427 := yyv427 + yyrl427, yyrt427 = z.DecInferLen(yyl427, z.DecBasicHandle().MaxInitLen, 112) + if yyrt427 { + if yyrl427 <= cap(yyv427) { + yyv427 = yyv427[:yyrl427] + } else { + yyv427 = make([]pkg2_v1.ObjectReference, yyrl427) + } + } else { + yyv427 = make([]pkg2_v1.ObjectReference, yyrl427) + } + yyc427 = true + yyrr427 = len(yyv427) + if yyrg427 { + copy(yyv427, yyv2427) + } + } else if yyl427 != len(yyv427) { + yyv427 = yyv427[:yyl427] + yyc427 = true + } + yyj427 := 0 + for ; yyj427 < yyrr427; yyj427++ { + yyh427.ElemContainerState(yyj427) + if r.TryDecodeAsNil() { + yyv427[yyj427] = pkg2_v1.ObjectReference{} + } else { + yyv428 := &yyv427[yyj427] + yyv428.CodecDecodeSelf(d) + } + + } + if yyrt427 { + for ; yyj427 < yyl427; yyj427++ { + yyv427 = append(yyv427, pkg2_v1.ObjectReference{}) + yyh427.ElemContainerState(yyj427) + if r.TryDecodeAsNil() { + yyv427[yyj427] = pkg2_v1.ObjectReference{} + } else { + yyv429 := &yyv427[yyj427] + yyv429.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj427 := 0 + for ; !r.CheckBreak(); yyj427++ { + + if yyj427 >= len(yyv427) { + yyv427 = append(yyv427, pkg2_v1.ObjectReference{}) // var yyz427 pkg2_v1.ObjectReference + yyc427 = true + } + yyh427.ElemContainerState(yyj427) + if yyj427 < len(yyv427) { + if r.TryDecodeAsNil() { + yyv427[yyj427] = pkg2_v1.ObjectReference{} + } else { + yyv430 := &yyv427[yyj427] + yyv430.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj427 < len(yyv427) { + yyv427 = yyv427[:yyj427] + yyc427 = true + } else if yyj427 == 0 && yyv427 == nil { + yyv427 = []pkg2_v1.ObjectReference{} + yyc427 = true + } + } + yyh427.End() + if yyc427 { + *v = yyv427 + } +} + +func (x codecSelfer1234) encSliceLabelSelectorRequirement(v []LabelSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv431 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy432 := &yyv431 + yy432.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLabelSelectorRequirement(v *[]LabelSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv433 := *v + yyh433, yyl433 := z.DecSliceHelperStart() + var yyc433 bool + if yyl433 == 0 { + if yyv433 == nil { + yyv433 = []LabelSelectorRequirement{} + yyc433 = true + } else if len(yyv433) != 0 { + yyv433 = yyv433[:0] + yyc433 = true + } + } else if yyl433 > 0 { + var yyrr433, yyrl433 int + var yyrt433 bool + if yyl433 > cap(yyv433) { + + yyrg433 := len(yyv433) > 0 + yyv2433 := yyv433 + yyrl433, yyrt433 = z.DecInferLen(yyl433, z.DecBasicHandle().MaxInitLen, 56) + if yyrt433 { + if yyrl433 <= cap(yyv433) { + yyv433 = yyv433[:yyrl433] + } else { + yyv433 = make([]LabelSelectorRequirement, yyrl433) + } + } else { + yyv433 = make([]LabelSelectorRequirement, yyrl433) + } + yyc433 = true + yyrr433 = len(yyv433) + if yyrg433 { + copy(yyv433, yyv2433) + } + } else if yyl433 != len(yyv433) { + yyv433 = yyv433[:yyl433] + yyc433 = true + } + yyj433 := 0 + for ; yyj433 < yyrr433; yyj433++ { + yyh433.ElemContainerState(yyj433) + if r.TryDecodeAsNil() { + yyv433[yyj433] = LabelSelectorRequirement{} + } else { + yyv434 := &yyv433[yyj433] + yyv434.CodecDecodeSelf(d) + } + + } + if yyrt433 { + for ; yyj433 < yyl433; yyj433++ { + yyv433 = append(yyv433, LabelSelectorRequirement{}) + yyh433.ElemContainerState(yyj433) + if r.TryDecodeAsNil() { + yyv433[yyj433] = LabelSelectorRequirement{} + } else { + yyv435 := &yyv433[yyj433] + yyv435.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj433 := 0 + for ; !r.CheckBreak(); yyj433++ { + + if yyj433 >= len(yyv433) { + yyv433 = append(yyv433, LabelSelectorRequirement{}) // var yyz433 LabelSelectorRequirement + yyc433 = true + } + yyh433.ElemContainerState(yyj433) + if yyj433 < len(yyv433) { + if r.TryDecodeAsNil() { + yyv433[yyj433] = LabelSelectorRequirement{} + } else { + yyv436 := &yyv433[yyj433] + yyv436.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj433 < len(yyv433) { + yyv433 = yyv433[:yyj433] + yyc433 = true + } else if yyj433 == 0 && yyv433 == nil { + yyv433 = []LabelSelectorRequirement{} + yyc433 = true + } + } + yyh433.End() + if yyc433 { + *v = yyv433 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.go new file mode 100644 index 0000000000..c8c6025c37 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types.go @@ -0,0 +1,283 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// Job represents the configuration of a single job. +type Job struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// JobList is a collection of jobs. +type JobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Job. + Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// JobTemplate describes a template for creating copies of a predefined pod. +type JobTemplate struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Template defines jobs that will be created from this template + // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Template JobTemplateSpec `json:"template,omitempty" protobuf:"bytes,2,opt,name=template"` +} + +// JobTemplateSpec describes the data a Job should have when created from a template +type JobTemplateSpec struct { + // Standard object's metadata of the jobs created from this template. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"` + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"` + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + + // ManualSelector controls generation of pod labels and pod selectors. + // Leave `manualSelector` unset unless you are certain what you are doing. + // When false or unset, the system pick labels unique to this job + // and appends those labels to the pod template. When true, + // the user is responsible for picking unique labels and specifying + // the selector. Failure to pick a unique label may cause this + // and other jobs to not function correctly. However, You may see + // `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` + // API. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + ManualSelector *bool `json:"manualSelector,omitempty" protobuf:"varint,5,opt,name=manualSelector"` + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + StartTime *unversioned.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"` + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + CompletionTime *unversioned.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"` + + // Active is the number of actively running pods. + Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"` + + // Succeeded is the number of pods which reached Phase Succeeded. + Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"` + + // Failed is the number of pods which reached Phase Failed. + Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"` +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=JobConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // Last time the condition was checked. + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transit from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// ScheduledJob represents the configuration of a single scheduled job. +type ScheduledJob struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is a structure defining the expected behavior of a job, including the schedule. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ScheduledJobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ScheduledJobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ScheduledJobList is a collection of scheduled jobs. +type ScheduledJobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ScheduledJob. + Items []ScheduledJob `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ScheduledJobSpec describes how the job execution will look like and when it will actually run. +type ScheduledJobSpec struct { + + // Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. + Schedule string `json:"schedule" protobuf:"bytes,1,opt,name=schedule"` + + // Optional deadline in seconds for starting the job if it misses scheduled + // time for any reason. Missed jobs executions will be counted as failed ones. + StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty" protobuf:"varint,2,opt,name=startingDeadlineSeconds"` + + // ConcurrencyPolicy specifies how to treat concurrent executions of a Job. + ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty" protobuf:"bytes,3,opt,name=concurrencyPolicy,casttype=ConcurrencyPolicy"` + + // Suspend flag tells the controller to suspend subsequent executions, it does + // not apply to already started executions. Defaults to false. + Suspend *bool `json:"suspend,omitempty" protobuf:"varint,4,opt,name=suspend"` + + // JobTemplate is the object that describes the job that will be created when + // executing a ScheduledJob. + JobTemplate JobTemplateSpec `json:"jobTemplate" protobuf:"bytes,5,opt,name=jobTemplate"` +} + +// ConcurrencyPolicy describes how the job will be handled. +// Only one of the following concurrent policies may be specified. +// If none of the following policies is specified, the default one +// is AllowConcurrent. +type ConcurrencyPolicy string + +const ( + // AllowConcurrent allows ScheduledJobs to run concurrently. + AllowConcurrent ConcurrencyPolicy = "Allow" + + // ForbidConcurrent forbids concurrent runs, skipping next run if previous + // hasn't finished yet. + ForbidConcurrent ConcurrencyPolicy = "Forbid" + + // ReplaceConcurrent cancels currently running job and replaces it with a new one. + ReplaceConcurrent ConcurrencyPolicy = "Replace" +) + +// ScheduledJobStatus represents the current state of a Job. +type ScheduledJobStatus struct { + // Active holds pointers to currently running jobs. + Active []v1.ObjectReference `json:"active,omitempty" protobuf:"bytes,1,rep,name=active"` + + // LastScheduleTime keeps information of when was the last time the job was successfully scheduled. + LastScheduleTime *unversioned.Time `json:"lastScheduleTime,omitempty" protobuf:"bytes,4,opt,name=lastScheduleTime"` +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +type LabelSelector struct { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"` +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + Operator LabelSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=LabelSelectorOperator"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A label selector operator is the set of operators that can be used in a selector requirement. +type LabelSelectorOperator string + +const ( + LabelSelectorOpIn LabelSelectorOperator = "In" + LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" + LabelSelectorOpExists LabelSelectorOperator = "Exists" + LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..17d43318df --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/types_swagger_doc_generated.go @@ -0,0 +1,178 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v2alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_Job = map[string]string{ + "": "Job represents the configuration of a single job.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Job) SwaggerDoc() map[string]string { + return map_Job +} + +var map_JobCondition = map[string]string{ + "": "JobCondition describes current state of a job.", + "type": "Type of job condition, Complete or Failed.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastProbeTime": "Last time the condition was checked.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (JobCondition) SwaggerDoc() map[string]string { + return map_JobCondition +} + +var map_JobList = map[string]string{ + "": "JobList is a collection of jobs.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of Job.", +} + +func (JobList) SwaggerDoc() map[string]string { + return map_JobList +} + +var map_JobSpec = map[string]string{ + "": "JobSpec describes how the job execution will look like.", + "parallelism": "Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "completions": "Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "activeDeadlineSeconds": "Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer", + "selector": "Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "manualSelector": "ManualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md", + "template": "Template is the object that describes the pod that will be created when executing a job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", +} + +func (JobSpec) SwaggerDoc() map[string]string { + return map_JobSpec +} + +var map_JobStatus = map[string]string{ + "": "JobStatus represents the current state of a Job.", + "conditions": "Conditions represent the latest available observations of an object's current state. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "startTime": "StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "completionTime": "CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "active": "Active is the number of actively running pods.", + "succeeded": "Succeeded is the number of pods which reached Phase Succeeded.", + "failed": "Failed is the number of pods which reached Phase Failed.", +} + +func (JobStatus) SwaggerDoc() map[string]string { + return map_JobStatus +} + +var map_JobTemplate = map[string]string{ + "": "JobTemplate describes a template for creating copies of a predefined pod.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "template": "Template defines jobs that will be created from this template http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (JobTemplate) SwaggerDoc() map[string]string { + return map_JobTemplate +} + +var map_JobTemplateSpec = map[string]string{ + "": "JobTemplateSpec describes the data a Job should have when created from a template", + "metadata": "Standard object's metadata of the jobs created from this template. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior of the job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (JobTemplateSpec) SwaggerDoc() map[string]string { + return map_JobTemplateSpec +} + +var map_LabelSelector = map[string]string{ + "": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "matchLabels": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "matchExpressions": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", +} + +func (LabelSelector) SwaggerDoc() map[string]string { + return map_LabelSelector +} + +var map_LabelSelectorRequirement = map[string]string{ + "": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "key is the label key that the selector applies to.", + "operator": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", + "values": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", +} + +func (LabelSelectorRequirement) SwaggerDoc() map[string]string { + return map_LabelSelectorRequirement +} + +var map_ScheduledJob = map[string]string{ + "": "ScheduledJob represents the configuration of a single scheduled job.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec is a structure defining the expected behavior of a job, including the schedule. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (ScheduledJob) SwaggerDoc() map[string]string { + return map_ScheduledJob +} + +var map_ScheduledJobList = map[string]string{ + "": "ScheduledJobList is a collection of scheduled jobs.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of ScheduledJob.", +} + +func (ScheduledJobList) SwaggerDoc() map[string]string { + return map_ScheduledJobList +} + +var map_ScheduledJobSpec = map[string]string{ + "": "ScheduledJobSpec describes how the job execution will look like and when it will actually run.", + "schedule": "Schedule contains the schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.", + "startingDeadlineSeconds": "Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.", + "concurrencyPolicy": "ConcurrencyPolicy specifies how to treat concurrent executions of a Job.", + "suspend": "Suspend flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", + "jobTemplate": "JobTemplate is the object that describes the job that will be created when executing a ScheduledJob.", +} + +func (ScheduledJobSpec) SwaggerDoc() map[string]string { + return map_ScheduledJobSpec +} + +var map_ScheduledJobStatus = map[string]string{ + "": "ScheduledJobStatus represents the current state of a Job.", + "active": "Active holds pointers to currently running jobs.", + "lastScheduleTime": "LastScheduleTime keeps information of when was the last time the job was successfully scheduled.", +} + +func (ScheduledJobStatus) SwaggerDoc() map[string]string { + return map_ScheduledJobStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.conversion.go new file mode 100644 index 0000000000..ea087e8e70 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.conversion.go @@ -0,0 +1,577 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v2alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + batch "k8s.io/client-go/1.5/pkg/apis/batch" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v2alpha1_Job_To_batch_Job, + Convert_batch_Job_To_v2alpha1_Job, + Convert_v2alpha1_JobCondition_To_batch_JobCondition, + Convert_batch_JobCondition_To_v2alpha1_JobCondition, + Convert_v2alpha1_JobList_To_batch_JobList, + Convert_batch_JobList_To_v2alpha1_JobList, + Convert_v2alpha1_JobSpec_To_batch_JobSpec, + Convert_batch_JobSpec_To_v2alpha1_JobSpec, + Convert_v2alpha1_JobStatus_To_batch_JobStatus, + Convert_batch_JobStatus_To_v2alpha1_JobStatus, + Convert_v2alpha1_JobTemplate_To_batch_JobTemplate, + Convert_batch_JobTemplate_To_v2alpha1_JobTemplate, + Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec, + Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec, + Convert_v2alpha1_LabelSelector_To_unversioned_LabelSelector, + Convert_unversioned_LabelSelector_To_v2alpha1_LabelSelector, + Convert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement, + Convert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement, + Convert_v2alpha1_ScheduledJob_To_batch_ScheduledJob, + Convert_batch_ScheduledJob_To_v2alpha1_ScheduledJob, + Convert_v2alpha1_ScheduledJobList_To_batch_ScheduledJobList, + Convert_batch_ScheduledJobList_To_v2alpha1_ScheduledJobList, + Convert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec, + Convert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec, + Convert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus, + Convert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus, + ) +} + +func autoConvert_v2alpha1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + SetDefaults_Job(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v2alpha1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v2alpha1_JobStatus_To_batch_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + return autoConvert_v2alpha1_Job_To_batch_Job(in, out, s) +} + +func autoConvert_batch_Job_To_v2alpha1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_JobSpec_To_v2alpha1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_JobStatus_To_v2alpha1_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_batch_Job_To_v2alpha1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + return autoConvert_batch_Job_To_v2alpha1_Job(in, out, s) +} + +func autoConvert_v2alpha1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + out.Type = batch.JobConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v2alpha1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + return autoConvert_v2alpha1_JobCondition_To_batch_JobCondition(in, out, s) +} + +func autoConvert_batch_JobCondition_To_v2alpha1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + out.Type = JobConditionType(in.Type) + out.Status = v1.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_batch_JobCondition_To_v2alpha1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + return autoConvert_batch_JobCondition_To_v2alpha1_JobCondition(in, out, s) +} + +func autoConvert_v2alpha1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.Job, len(*in)) + for i := range *in { + if err := Convert_v2alpha1_Job_To_batch_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v2alpha1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + return autoConvert_v2alpha1_JobList_To_batch_JobList(in, out, s) +} + +func autoConvert_batch_JobList_To_v2alpha1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := Convert_batch_Job_To_v2alpha1_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_batch_JobList_To_v2alpha1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + return autoConvert_batch_JobList_To_v2alpha1_JobList(in, out, s) +} + +func autoConvert_v2alpha1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + out.ManualSelector = in.ManualSelector + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_batch_JobSpec_To_v2alpha1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + out.ManualSelector = in.ManualSelector + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v2alpha1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]batch.JobCondition, len(*in)) + for i := range *in { + if err := Convert_v2alpha1_JobCondition_To_batch_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_v2alpha1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_JobStatus_To_batch_JobStatus(in, out, s) +} + +func autoConvert_batch_JobStatus_To_v2alpha1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := Convert_batch_JobCondition_To_v2alpha1_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_batch_JobStatus_To_v2alpha1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + return autoConvert_batch_JobStatus_To_v2alpha1_JobStatus(in, out, s) +} + +func autoConvert_v2alpha1_JobTemplate_To_batch_JobTemplate(in *JobTemplate, out *batch.JobTemplate, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_JobTemplate_To_batch_JobTemplate(in *JobTemplate, out *batch.JobTemplate, s conversion.Scope) error { + return autoConvert_v2alpha1_JobTemplate_To_batch_JobTemplate(in, out, s) +} + +func autoConvert_batch_JobTemplate_To_v2alpha1_JobTemplate(in *batch.JobTemplate, out *JobTemplate, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_batch_JobTemplate_To_v2alpha1_JobTemplate(in *batch.JobTemplate, out *JobTemplate, s conversion.Scope) error { + return autoConvert_batch_JobTemplate_To_v2alpha1_JobTemplate(in, out, s) +} + +func autoConvert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v2alpha1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in *JobTemplateSpec, out *batch.JobTemplateSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(in, out, s) +} + +func autoConvert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemplateSpec, out *JobTemplateSpec, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_JobSpec_To_v2alpha1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in *batch.JobTemplateSpec, out *JobTemplateSpec, s conversion.Scope) error { + return autoConvert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(in, out, s) +} + +func autoConvert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]unversioned.LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + return autoConvert_v2alpha1_LabelSelector_To_unversioned_LabelSelector(in, out, s) +} + +func autoConvert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelector_To_v2alpha1_LabelSelector(in, out, s) +} + +func autoConvert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = unversioned.LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_v2alpha1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in, out, s) +} + +func autoConvert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelectorRequirement_To_v2alpha1_LabelSelectorRequirement(in, out, s) +} + +func autoConvert_v2alpha1_ScheduledJob_To_batch_ScheduledJob(in *ScheduledJob, out *batch.ScheduledJob, s conversion.Scope) error { + SetDefaults_ScheduledJob(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_ScheduledJob_To_batch_ScheduledJob(in *ScheduledJob, out *batch.ScheduledJob, s conversion.Scope) error { + return autoConvert_v2alpha1_ScheduledJob_To_batch_ScheduledJob(in, out, s) +} + +func autoConvert_batch_ScheduledJob_To_v2alpha1_ScheduledJob(in *batch.ScheduledJob, out *ScheduledJob, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_batch_ScheduledJob_To_v2alpha1_ScheduledJob(in *batch.ScheduledJob, out *ScheduledJob, s conversion.Scope) error { + return autoConvert_batch_ScheduledJob_To_v2alpha1_ScheduledJob(in, out, s) +} + +func autoConvert_v2alpha1_ScheduledJobList_To_batch_ScheduledJobList(in *ScheduledJobList, out *batch.ScheduledJobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.ScheduledJob, len(*in)) + for i := range *in { + if err := Convert_v2alpha1_ScheduledJob_To_batch_ScheduledJob(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v2alpha1_ScheduledJobList_To_batch_ScheduledJobList(in *ScheduledJobList, out *batch.ScheduledJobList, s conversion.Scope) error { + return autoConvert_v2alpha1_ScheduledJobList_To_batch_ScheduledJobList(in, out, s) +} + +func autoConvert_batch_ScheduledJobList_To_v2alpha1_ScheduledJobList(in *batch.ScheduledJobList, out *ScheduledJobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ScheduledJob, len(*in)) + for i := range *in { + if err := Convert_batch_ScheduledJob_To_v2alpha1_ScheduledJob(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_batch_ScheduledJobList_To_v2alpha1_ScheduledJobList(in *batch.ScheduledJobList, out *ScheduledJobList, s conversion.Scope) error { + return autoConvert_batch_ScheduledJobList_To_v2alpha1_ScheduledJobList(in, out, s) +} + +func autoConvert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in *ScheduledJobSpec, out *batch.ScheduledJobSpec, s conversion.Scope) error { + out.Schedule = in.Schedule + out.StartingDeadlineSeconds = in.StartingDeadlineSeconds + out.ConcurrencyPolicy = batch.ConcurrencyPolicy(in.ConcurrencyPolicy) + out.Suspend = in.Suspend + if err := Convert_v2alpha1_JobTemplateSpec_To_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { + return err + } + return nil +} + +func Convert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in *ScheduledJobSpec, out *batch.ScheduledJobSpec, s conversion.Scope) error { + return autoConvert_v2alpha1_ScheduledJobSpec_To_batch_ScheduledJobSpec(in, out, s) +} + +func autoConvert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(in *batch.ScheduledJobSpec, out *ScheduledJobSpec, s conversion.Scope) error { + out.Schedule = in.Schedule + out.StartingDeadlineSeconds = in.StartingDeadlineSeconds + out.ConcurrencyPolicy = ConcurrencyPolicy(in.ConcurrencyPolicy) + out.Suspend = in.Suspend + if err := Convert_batch_JobTemplateSpec_To_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, s); err != nil { + return err + } + return nil +} + +func Convert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(in *batch.ScheduledJobSpec, out *ScheduledJobSpec, s conversion.Scope) error { + return autoConvert_batch_ScheduledJobSpec_To_v2alpha1_ScheduledJobSpec(in, out, s) +} + +func autoConvert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus(in *ScheduledJobStatus, out *batch.ScheduledJobStatus, s conversion.Scope) error { + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]api.ObjectReference, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.Active = nil + } + out.LastScheduleTime = in.LastScheduleTime + return nil +} + +func Convert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus(in *ScheduledJobStatus, out *batch.ScheduledJobStatus, s conversion.Scope) error { + return autoConvert_v2alpha1_ScheduledJobStatus_To_batch_ScheduledJobStatus(in, out, s) +} + +func autoConvert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus(in *batch.ScheduledJobStatus, out *ScheduledJobStatus, s conversion.Scope) error { + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]v1.ObjectReference, len(*in)) + for i := range *in { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil { + return err + } + } + } else { + out.Active = nil + } + out.LastScheduleTime = in.LastScheduleTime + return nil +} + +func Convert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus(in *batch.ScheduledJobStatus, out *ScheduledJobStatus, s conversion.Scope) error { + return autoConvert_batch_ScheduledJobStatus_To_v2alpha1_ScheduledJobStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..6d9dd9b2bd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1/zz_generated.deepcopy.go @@ -0,0 +1,354 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v2alpha1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobTemplate, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_JobTemplateSpec, InType: reflect.TypeOf(&JobTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_LabelSelector, InType: reflect.TypeOf(&LabelSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_LabelSelectorRequirement, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ScheduledJob, InType: reflect.TypeOf(&ScheduledJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ScheduledJobList, InType: reflect.TypeOf(&ScheduledJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ScheduledJobSpec, InType: reflect.TypeOf(&ScheduledJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v2alpha1_ScheduledJobStatus, InType: reflect.TypeOf(&ScheduledJobStatus{})}, + ) +} + +func DeepCopy_v2alpha1_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v2alpha1_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v2alpha1_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } else { + out.Parallelism = nil + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } else { + out.Completions = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v2alpha1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + *out = new(bool) + **out = **in + } else { + out.ManualSelector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.CompletionTime = nil + } + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil + } +} + +func DeepCopy_v2alpha1_JobTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplate) + out := out.(*JobTemplate) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_JobTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_JobTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplateSpec) + out := out.(*JobTemplateSpec) + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelector) + out := out.(*LabelSelector) + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.MatchLabels = nil + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_v2alpha1_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelectorRequirement) + out := out.(*LabelSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} + +func DeepCopy_v2alpha1_ScheduledJob(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJob) + out := out.(*ScheduledJob) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_ScheduledJobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v2alpha1_ScheduledJobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_ScheduledJobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobList) + out := out.(*ScheduledJobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ScheduledJob, len(*in)) + for i := range *in { + if err := DeepCopy_v2alpha1_ScheduledJob(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v2alpha1_ScheduledJobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobSpec) + out := out.(*ScheduledJobSpec) + out.Schedule = in.Schedule + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.StartingDeadlineSeconds = nil + } + out.ConcurrencyPolicy = in.ConcurrencyPolicy + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + *out = new(bool) + **out = **in + } else { + out.Suspend = nil + } + if err := DeepCopy_v2alpha1_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v2alpha1_ScheduledJobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobStatus) + out := out.(*ScheduledJobStatus) + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]v1.ObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Active = nil + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.LastScheduleTime = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/batch/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/zz_generated.deepcopy.go new file mode 100644 index 0000000000..ef66e4412a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/batch/zz_generated.deepcopy.go @@ -0,0 +1,307 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package batch + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobTemplate, InType: reflect.TypeOf(&JobTemplate{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_JobTemplateSpec, InType: reflect.TypeOf(&JobTemplateSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_ScheduledJob, InType: reflect.TypeOf(&ScheduledJob{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_ScheduledJobList, InType: reflect.TypeOf(&ScheduledJobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_ScheduledJobSpec, InType: reflect.TypeOf(&ScheduledJobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_batch_ScheduledJobStatus, InType: reflect.TypeOf(&ScheduledJobStatus{})}, + ) +} + +func DeepCopy_batch_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_batch_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_batch_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_batch_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_batch_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_batch_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } else { + out.Parallelism = nil + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } else { + out.Completions = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.ManualSelector != nil { + in, out := &in.ManualSelector, &out.ManualSelector + *out = new(bool) + **out = **in + } else { + out.ManualSelector = nil + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_batch_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.CompletionTime = nil + } + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil + } +} + +func DeepCopy_batch_JobTemplate(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplate) + out := out.(*JobTemplate) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_batch_JobTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_JobTemplateSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobTemplateSpec) + out := out.(*JobTemplateSpec) + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_batch_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_ScheduledJob(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJob) + out := out.(*ScheduledJob) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_batch_ScheduledJobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_batch_ScheduledJobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_ScheduledJobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobList) + out := out.(*ScheduledJobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ScheduledJob, len(*in)) + for i := range *in { + if err := DeepCopy_batch_ScheduledJob(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_batch_ScheduledJobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobSpec) + out := out.(*ScheduledJobSpec) + out.Schedule = in.Schedule + if in.StartingDeadlineSeconds != nil { + in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.StartingDeadlineSeconds = nil + } + out.ConcurrencyPolicy = in.ConcurrencyPolicy + if in.Suspend != nil { + in, out := &in.Suspend, &out.Suspend + *out = new(bool) + **out = **in + } else { + out.Suspend = nil + } + if err := DeepCopy_batch_JobTemplateSpec(&in.JobTemplate, &out.JobTemplate, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_batch_ScheduledJobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScheduledJobStatus) + out := out.(*ScheduledJobStatus) + if in.Active != nil { + in, out := &in.Active, &out.Active + *out = make([]api.ObjectReference, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Active = nil + } + if in.LastScheduleTime != nil { + in, out := &in.LastScheduleTime, &out.LastScheduleTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.LastScheduleTime = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/doc.go new file mode 100644 index 0000000000..3a1b77095a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +// +groupName=certificates.k8s.io +package certificates diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/install/install.go new file mode 100644 index 0000000000..6ae0401572 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the certificates API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/certificates" + "k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: certificates.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/certificates", + RootScopedKinds: sets.NewString("CertificateSigningRequest"), + AddInternalObjectsToScheme: certificates.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/register.go new file mode 100644 index 0000000000..eeac015abe --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/register.go @@ -0,0 +1,58 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package certificates + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// GroupName is the group name use in this package +const GroupName = "certificates.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &CertificateSigningRequest{}, + &CertificateSigningRequestList{}, + &api.ListOptions{}, + &api.DeleteOptions{}, + ) + return nil +} + +func (obj *CertificateSigningRequest) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequestList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.generated.go new file mode 100644 index 0000000000..b377c9ac8c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.generated.go @@ -0,0 +1,1957 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package certificates + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg1_unversioned.TypeMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *CertificateSigningRequest) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequest) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [4]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[1] = x.Username != "" + yyq33[2] = x.UID != "" + yyq33[3] = len(x.Groups) != 0 + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(4) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("request")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[3] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym46 := z.DecBinary() + _ = yym46 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct47 := r.ContainerType() + if yyct47 == codecSelferValueTypeMap1234 { + yyl47 := r.ReadMapStart() + if yyl47 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl47, d) + } + } else if yyct47 == codecSelferValueTypeArray1234 { + yyl47 := r.ReadArrayStart() + if yyl47 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl47, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys48Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys48Slc + var yyhl48 bool = l >= 0 + for yyj48 := 0; ; yyj48++ { + if yyhl48 { + if yyj48 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys48Slc = r.DecodeBytes(yys48Slc, true, true) + yys48 := string(yys48Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys48 { + case "request": + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv49 := &x.Request + yym50 := z.DecBinary() + _ = yym50 + if false { + } else { + *yyv49 = r.DecodeBytes(*(*[]byte)(yyv49), false, false) + } + } + case "username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv53 := &x.Groups + yym54 := z.DecBinary() + _ = yym54 + if false { + } else { + z.F.DecSliceStringX(yyv53, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys48) + } // end switch yys48 + } // end for yyj48 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj55 int + var yyb55 bool + var yyhl55 bool = l >= 0 + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv56 := &x.Request + yym57 := z.DecBinary() + _ = yym57 + if false { + } else { + *yyv56 = r.DecodeBytes(*(*[]byte)(yyv56), false, false) + } + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv60 := &x.Groups + yym61 := z.DecBinary() + _ = yym61 + if false { + } else { + z.F.DecSliceStringX(yyv60, false, d) + } + } + for { + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj55-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym62 := z.EncBinary() + _ = yym62 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep63 := !z.EncBinary() + yy2arr63 := z.EncBasicHandle().StructToArray + var yyq63 [2]bool + _, _, _ = yysep63, yyq63, yy2arr63 + const yyr63 bool = false + yyq63[0] = len(x.Conditions) != 0 + yyq63[1] = len(x.Certificate) != 0 + var yynn63 int + if yyr63 || yy2arr63 { + r.EncodeArrayStart(2) + } else { + yynn63 = 0 + for _, b := range yyq63 { + if b { + yynn63++ + } + } + r.EncodeMapStart(yynn63) + yynn63 = 0 + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq63[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym65 := z.EncBinary() + _ = yym65 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq63[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym66 := z.EncBinary() + _ = yym66 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq63[1] { + if x.Certificate == nil { + r.EncodeNil() + } else { + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq63[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("certificate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Certificate == nil { + r.EncodeNil() + } else { + yym69 := z.EncBinary() + _ = yym69 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym70 := z.DecBinary() + _ = yym70 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct71 := r.ContainerType() + if yyct71 == codecSelferValueTypeMap1234 { + yyl71 := r.ReadMapStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl71, d) + } + } else if yyct71 == codecSelferValueTypeArray1234 { + yyl71 := r.ReadArrayStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl71, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys72Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys72Slc + var yyhl72 bool = l >= 0 + for yyj72 := 0; ; yyj72++ { + if yyhl72 { + if yyj72 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys72Slc = r.DecodeBytes(yys72Slc, true, true) + yys72 := string(yys72Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys72 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv73 := &x.Conditions + yym74 := z.DecBinary() + _ = yym74 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv73), d) + } + } + case "certificate": + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv75 := &x.Certificate + yym76 := z.DecBinary() + _ = yym76 + if false { + } else { + *yyv75 = r.DecodeBytes(*(*[]byte)(yyv75), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys72) + } // end switch yys72 + } // end for yyj72 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj77 int + var yyb77 bool + var yyhl77 bool = l >= 0 + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv78 := &x.Conditions + yym79 := z.DecBinary() + _ = yym79 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv78), d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv80 := &x.Certificate + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *yyv80 = r.DecodeBytes(*(*[]byte)(yyv80), false, false) + } + } + for { + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj77-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RequestConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym82 := z.EncBinary() + _ = yym82 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RequestConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym83 := z.DecBinary() + _ = yym83 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *CertificateSigningRequestCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym84 := z.EncBinary() + _ = yym84 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep85 := !z.EncBinary() + yy2arr85 := z.EncBasicHandle().StructToArray + var yyq85 [4]bool + _, _, _ = yysep85, yyq85, yy2arr85 + const yyr85 bool = false + yyq85[1] = x.Reason != "" + yyq85[2] = x.Message != "" + yyq85[3] = true + var yynn85 int + if yyr85 || yy2arr85 { + r.EncodeArrayStart(4) + } else { + yynn85 = 1 + for _, b := range yyq85 { + if b { + yynn85++ + } + } + r.EncodeMapStart(yynn85) + yynn85 = 0 + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[1] { + yym88 := z.EncBinary() + _ = yym88 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq85[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym89 := z.EncBinary() + _ = yym89 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[2] { + yym91 := z.EncBinary() + _ = yym91 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq85[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym92 := z.EncBinary() + _ = yym92 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[3] { + yy94 := &x.LastUpdateTime + yym95 := z.EncBinary() + _ = yym95 + if false { + } else if z.HasExtensions() && z.EncExt(yy94) { + } else if yym95 { + z.EncBinaryMarshal(yy94) + } else if !yym95 && z.IsJSONHandle() { + z.EncJSONMarshal(yy94) + } else { + z.EncFallback(yy94) + } + } else { + r.EncodeNil() + } + } else { + if yyq85[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastUpdateTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy96 := &x.LastUpdateTime + yym97 := z.EncBinary() + _ = yym97 + if false { + } else if z.HasExtensions() && z.EncExt(yy96) { + } else if yym97 { + z.EncBinaryMarshal(yy96) + } else if !yym97 && z.IsJSONHandle() { + z.EncJSONMarshal(yy96) + } else { + z.EncFallback(yy96) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym98 := z.DecBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct99 := r.ContainerType() + if yyct99 == codecSelferValueTypeMap1234 { + yyl99 := r.ReadMapStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl99, d) + } + } else if yyct99 == codecSelferValueTypeArray1234 { + yyl99 := r.ReadArrayStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl99, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys100Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys100Slc + var yyhl100 bool = l >= 0 + for yyj100 := 0; ; yyj100++ { + if yyhl100 { + if yyj100 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys100Slc = r.DecodeBytes(yys100Slc, true, true) + yys100 := string(yys100Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys100 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = RequestConditionType(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "lastUpdateTime": + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_unversioned.Time{} + } else { + yyv104 := &x.LastUpdateTime + yym105 := z.DecBinary() + _ = yym105 + if false { + } else if z.HasExtensions() && z.DecExt(yyv104) { + } else if yym105 { + z.DecBinaryUnmarshal(yyv104) + } else if !yym105 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv104) + } else { + z.DecFallback(yyv104, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys100) + } // end switch yys100 + } // end for yyj100 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj106 int + var yyb106 bool + var yyhl106 bool = l >= 0 + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = RequestConditionType(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_unversioned.Time{} + } else { + yyv110 := &x.LastUpdateTime + yym111 := z.DecBinary() + _ = yym111 + if false { + } else if z.HasExtensions() && z.DecExt(yyv110) { + } else if yym111 { + z.DecBinaryUnmarshal(yyv110) + } else if !yym111 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv110) + } else { + z.DecFallback(yyv110, false) + } + } + for { + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj106-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym112 := z.EncBinary() + _ = yym112 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep113 := !z.EncBinary() + yy2arr113 := z.EncBasicHandle().StructToArray + var yyq113 [4]bool + _, _, _ = yysep113, yyq113, yy2arr113 + const yyr113 bool = false + yyq113[0] = x.Kind != "" + yyq113[1] = x.APIVersion != "" + yyq113[2] = true + yyq113[3] = len(x.Items) != 0 + var yynn113 int + if yyr113 || yy2arr113 { + r.EncodeArrayStart(4) + } else { + yynn113 = 0 + for _, b := range yyq113 { + if b { + yynn113++ + } + } + r.EncodeMapStart(yynn113) + yynn113 = 0 + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[0] { + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym116 := z.EncBinary() + _ = yym116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[1] { + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym119 := z.EncBinary() + _ = yym119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[2] { + yy121 := &x.ListMeta + yym122 := z.EncBinary() + _ = yym122 + if false { + } else if z.HasExtensions() && z.EncExt(yy121) { + } else { + z.EncFallback(yy121) + } + } else { + r.EncodeNil() + } + } else { + if yyq113[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy123 := &x.ListMeta + yym124 := z.EncBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.EncExt(yy123) { + } else { + z.EncFallback(yy123) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[3] { + if x.Items == nil { + r.EncodeNil() + } else { + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq113[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym127 := z.EncBinary() + _ = yym127 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym128 := z.DecBinary() + _ = yym128 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct129 := r.ContainerType() + if yyct129 == codecSelferValueTypeMap1234 { + yyl129 := r.ReadMapStart() + if yyl129 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl129, d) + } + } else if yyct129 == codecSelferValueTypeArray1234 { + yyl129 := r.ReadArrayStart() + if yyl129 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl129, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys130Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys130Slc + var yyhl130 bool = l >= 0 + for yyj130 := 0; ; yyj130++ { + if yyhl130 { + if yyj130 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys130Slc = r.DecodeBytes(yys130Slc, true, true) + yys130 := string(yys130Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys130 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv133 := &x.ListMeta + yym134 := z.DecBinary() + _ = yym134 + if false { + } else if z.HasExtensions() && z.DecExt(yyv133) { + } else { + z.DecFallback(yyv133, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv135 := &x.Items + yym136 := z.DecBinary() + _ = yym136 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv135), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys130) + } // end switch yys130 + } // end for yyj130 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj137 int + var yyb137 bool + var yyhl137 bool = l >= 0 + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv140 := &x.ListMeta + yym141 := z.DecBinary() + _ = yym141 + if false { + } else if z.HasExtensions() && z.DecExt(yyv140) { + } else { + z.DecFallback(yyv140, false) + } + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv142 := &x.Items + yym143 := z.DecBinary() + _ = yym143 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv142), d) + } + } + for { + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj137-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCertificateSigningRequestCondition(v []CertificateSigningRequestCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv144 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy145 := &yyv144 + yy145.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequestCondition(v *[]CertificateSigningRequestCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv146 := *v + yyh146, yyl146 := z.DecSliceHelperStart() + var yyc146 bool + if yyl146 == 0 { + if yyv146 == nil { + yyv146 = []CertificateSigningRequestCondition{} + yyc146 = true + } else if len(yyv146) != 0 { + yyv146 = yyv146[:0] + yyc146 = true + } + } else if yyl146 > 0 { + var yyrr146, yyrl146 int + var yyrt146 bool + if yyl146 > cap(yyv146) { + + yyrg146 := len(yyv146) > 0 + yyv2146 := yyv146 + yyrl146, yyrt146 = z.DecInferLen(yyl146, z.DecBasicHandle().MaxInitLen, 72) + if yyrt146 { + if yyrl146 <= cap(yyv146) { + yyv146 = yyv146[:yyrl146] + } else { + yyv146 = make([]CertificateSigningRequestCondition, yyrl146) + } + } else { + yyv146 = make([]CertificateSigningRequestCondition, yyrl146) + } + yyc146 = true + yyrr146 = len(yyv146) + if yyrg146 { + copy(yyv146, yyv2146) + } + } else if yyl146 != len(yyv146) { + yyv146 = yyv146[:yyl146] + yyc146 = true + } + yyj146 := 0 + for ; yyj146 < yyrr146; yyj146++ { + yyh146.ElemContainerState(yyj146) + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv147 := &yyv146[yyj146] + yyv147.CodecDecodeSelf(d) + } + + } + if yyrt146 { + for ; yyj146 < yyl146; yyj146++ { + yyv146 = append(yyv146, CertificateSigningRequestCondition{}) + yyh146.ElemContainerState(yyj146) + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv148 := &yyv146[yyj146] + yyv148.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj146 := 0 + for ; !r.CheckBreak(); yyj146++ { + + if yyj146 >= len(yyv146) { + yyv146 = append(yyv146, CertificateSigningRequestCondition{}) // var yyz146 CertificateSigningRequestCondition + yyc146 = true + } + yyh146.ElemContainerState(yyj146) + if yyj146 < len(yyv146) { + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv149 := &yyv146[yyj146] + yyv149.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj146 < len(yyv146) { + yyv146 = yyv146[:yyj146] + yyc146 = true + } else if yyj146 == 0 && yyv146 == nil { + yyv146 = []CertificateSigningRequestCondition{} + yyc146 = true + } + } + yyh146.End() + if yyc146 { + *v = yyv146 + } +} + +func (x codecSelfer1234) encSliceCertificateSigningRequest(v []CertificateSigningRequest, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv150 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy151 := &yyv150 + yy151.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequest(v *[]CertificateSigningRequest, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv152 := *v + yyh152, yyl152 := z.DecSliceHelperStart() + var yyc152 bool + if yyl152 == 0 { + if yyv152 == nil { + yyv152 = []CertificateSigningRequest{} + yyc152 = true + } else if len(yyv152) != 0 { + yyv152 = yyv152[:0] + yyc152 = true + } + } else if yyl152 > 0 { + var yyrr152, yyrl152 int + var yyrt152 bool + if yyl152 > cap(yyv152) { + + yyrg152 := len(yyv152) > 0 + yyv2152 := yyv152 + yyrl152, yyrt152 = z.DecInferLen(yyl152, z.DecBasicHandle().MaxInitLen, 384) + if yyrt152 { + if yyrl152 <= cap(yyv152) { + yyv152 = yyv152[:yyrl152] + } else { + yyv152 = make([]CertificateSigningRequest, yyrl152) + } + } else { + yyv152 = make([]CertificateSigningRequest, yyrl152) + } + yyc152 = true + yyrr152 = len(yyv152) + if yyrg152 { + copy(yyv152, yyv2152) + } + } else if yyl152 != len(yyv152) { + yyv152 = yyv152[:yyl152] + yyc152 = true + } + yyj152 := 0 + for ; yyj152 < yyrr152; yyj152++ { + yyh152.ElemContainerState(yyj152) + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv153 := &yyv152[yyj152] + yyv153.CodecDecodeSelf(d) + } + + } + if yyrt152 { + for ; yyj152 < yyl152; yyj152++ { + yyv152 = append(yyv152, CertificateSigningRequest{}) + yyh152.ElemContainerState(yyj152) + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv154 := &yyv152[yyj152] + yyv154.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj152 := 0 + for ; !r.CheckBreak(); yyj152++ { + + if yyj152 >= len(yyv152) { + yyv152 = append(yyv152, CertificateSigningRequest{}) // var yyz152 CertificateSigningRequest + yyc152 = true + } + yyh152.ElemContainerState(yyj152) + if yyj152 < len(yyv152) { + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv155 := &yyv152[yyj152] + yyv155.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj152 < len(yyv152) { + yyv152 = yyv152[:yyj152] + yyc152 = true + } else if yyj152 == 0 && yyv152 == nil { + yyv152 = []CertificateSigningRequest{} + yyc152 = true + } + } + yyh152.End() + if yyc152 { + *v = yyv152 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.go new file mode 100644 index 0000000000..43105fbc6e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/types.go @@ -0,0 +1,85 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package certificates + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// +genclient=true +// +nonNamespaced=true + +// Describes a certificate signing request +type CertificateSigningRequest struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // The certificate request itself and any additional information. + Spec CertificateSigningRequestSpec `json:"spec,omitempty"` + + // Derived information about the request. + Status CertificateSigningRequestStatus `json:"status,omitempty"` +} + +// This information is immutable after the request is created. Only the Request +// and ExtraInfo fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +type CertificateSigningRequestSpec struct { + // Base64-encoded PKCS#10 CSR data + Request []byte `json:"request"` + + // Information about the requesting user (if relevant) + // See user.Info interface for details + Username string `json:"username,omitempty"` + UID string `json:"uid,omitempty"` + Groups []string `json:"groups,omitempty"` +} + +type CertificateSigningRequestStatus struct { + // Conditions applied to the request, such as approval or denial. + Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty"` + + // If request was approved, the controller will place the issued certificate here. + Certificate []byte `json:"certificate,omitempty"` +} + +type RequestConditionType string + +// These are the possible conditions for a certificate request. +const ( + CertificateApproved RequestConditionType = "Approved" + CertificateDenied RequestConditionType = "Denied" +) + +type CertificateSigningRequestCondition struct { + // request approval state, currently Approved or Denied. + Type RequestConditionType `json:"type"` + // brief reason for the request state + Reason string `json:"reason,omitempty"` + // human readable message with details about the request state + Message string `json:"message,omitempty"` + // timestamp for the last update to this condition + LastUpdateTime unversioned.Time `json:"lastUpdateTime,omitempty"` +} + +type CertificateSigningRequestList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []CertificateSigningRequest `json:"items,omitempty"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/conversion.go new file mode 100644 index 0000000000..171c4cbcf3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/conversion.go @@ -0,0 +1,39 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions here. Currently there are none. + + return api.Scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.String(), "CertificateSigningRequest", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/doc.go new file mode 100644 index 0000000000..08eb645976 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/certificates +// +k8s:openapi-gen=true + +// +groupName=certificates.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..3124b3d60d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.pb.go @@ -0,0 +1,1324 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/certificates/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/certificates/v1alpha1/generated.proto + + It has these top-level messages: + CertificateSigningRequest + CertificateSigningRequestCondition + CertificateSigningRequestList + CertificateSigningRequestSpec + CertificateSigningRequestStatus +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *CertificateSigningRequest) Reset() { *m = CertificateSigningRequest{} } +func (*CertificateSigningRequest) ProtoMessage() {} +func (*CertificateSigningRequest) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{0} +} + +func (m *CertificateSigningRequestCondition) Reset() { *m = CertificateSigningRequestCondition{} } +func (*CertificateSigningRequestCondition) ProtoMessage() {} +func (*CertificateSigningRequestCondition) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{1} +} + +func (m *CertificateSigningRequestList) Reset() { *m = CertificateSigningRequestList{} } +func (*CertificateSigningRequestList) ProtoMessage() {} +func (*CertificateSigningRequestList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *CertificateSigningRequestSpec) Reset() { *m = CertificateSigningRequestSpec{} } +func (*CertificateSigningRequestSpec) ProtoMessage() {} +func (*CertificateSigningRequestSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *CertificateSigningRequestStatus) Reset() { *m = CertificateSigningRequestStatus{} } +func (*CertificateSigningRequestStatus) ProtoMessage() {} +func (*CertificateSigningRequestStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func init() { + proto.RegisterType((*CertificateSigningRequest)(nil), "k8s.io.client-go.1.5.pkg.apis.certificates.v1alpha1.CertificateSigningRequest") + proto.RegisterType((*CertificateSigningRequestCondition)(nil), "k8s.io.client-go.1.5.pkg.apis.certificates.v1alpha1.CertificateSigningRequestCondition") + proto.RegisterType((*CertificateSigningRequestList)(nil), "k8s.io.client-go.1.5.pkg.apis.certificates.v1alpha1.CertificateSigningRequestList") + proto.RegisterType((*CertificateSigningRequestSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.certificates.v1alpha1.CertificateSigningRequestSpec") + proto.RegisterType((*CertificateSigningRequestStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.certificates.v1alpha1.CertificateSigningRequestStatus") +} +func (m *CertificateSigningRequest) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CertificateSigningRequest) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n2, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n3, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *CertificateSigningRequestCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CertificateSigningRequestCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastUpdateTime.Size())) + n4, err := m.LastUpdateTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + return i, nil +} + +func (m *CertificateSigningRequestList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CertificateSigningRequestList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CertificateSigningRequestSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CertificateSigningRequestSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Request != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Request))) + i += copy(data[i:], m.Request) + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Username))) + i += copy(data[i:], m.Username) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.UID))) + i += copy(data[i:], m.UID) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *CertificateSigningRequestStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CertificateSigningRequestStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.Certificate != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Certificate))) + i += copy(data[i:], m.Certificate) + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *CertificateSigningRequest) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CertificateSigningRequestCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastUpdateTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CertificateSigningRequestList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CertificateSigningRequestSpec) Size() (n int) { + var l int + _ = l + if m.Request != nil { + l = len(m.Request) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Username) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.UID) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Groups) > 0 { + for _, s := range m.Groups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CertificateSigningRequestStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.Certificate != nil { + l = len(m.Certificate) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CertificateSigningRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequest{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CertificateSigningRequestSpec", "CertificateSigningRequestSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CertificateSigningRequestStatus", "CertificateSigningRequestStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `LastUpdateTime:` + strings.Replace(strings.Replace(this.LastUpdateTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CertificateSigningRequest", "CertificateSigningRequest", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestSpec{`, + `Request:` + valueToStringGenerated(this.Request) + `,`, + `Username:` + fmt.Sprintf("%v", this.Username) + `,`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `Groups:` + fmt.Sprintf("%v", this.Groups) + `,`, + `}`, + }, "") + return s +} +func (this *CertificateSigningRequestStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CertificateSigningRequestStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "CertificateSigningRequestCondition", "CertificateSigningRequestCondition", 1), `&`, ``, 1) + `,`, + `Certificate:` + valueToStringGenerated(this.Certificate) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *CertificateSigningRequest) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = RequestConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastUpdateTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastUpdateTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CertificateSigningRequest{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Request = append(m.Request[:0], data[iNdEx:postIndex]...) + if m.Request == nil { + m.Request = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Username = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UID = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Groups = append(m.Groups, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CertificateSigningRequestStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CertificateSigningRequestStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CertificateSigningRequestStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, CertificateSigningRequestCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Certificate", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Certificate = append(m.Certificate[:0], data[iNdEx:postIndex]...) + if m.Certificate == nil { + m.Certificate = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 681 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0x13, 0x4f, + 0x18, 0xa6, 0xb4, 0x94, 0x32, 0xe5, 0x07, 0xbf, 0x4c, 0x8c, 0xa9, 0x4d, 0xa0, 0x66, 0xa3, 0x06, + 0x15, 0x66, 0x2d, 0x89, 0x09, 0x47, 0xb3, 0x98, 0x18, 0x22, 0x84, 0x38, 0x40, 0x62, 0x4c, 0x3c, + 0x6c, 0xb7, 0xc3, 0x32, 0x96, 0xee, 0x2e, 0xf3, 0x87, 0x84, 0x9b, 0x47, 0x8f, 0x7e, 0x02, 0xbf, + 0x86, 0x5f, 0x81, 0x23, 0x47, 0x4f, 0xa8, 0xf0, 0x05, 0x3c, 0x7b, 0x72, 0x66, 0x76, 0xb6, 0x5d, + 0x5b, 0x16, 0x35, 0xe1, 0x30, 0x49, 0xe7, 0x99, 0xf7, 0x7d, 0xde, 0xf7, 0x7d, 0xde, 0x67, 0x0b, + 0x9e, 0xf5, 0xd6, 0x38, 0xa2, 0xb1, 0xdb, 0x93, 0x1d, 0xc2, 0x22, 0x22, 0x08, 0x77, 0x93, 0x5e, + 0xe8, 0xfa, 0x09, 0xe5, 0x6e, 0x40, 0x98, 0xa0, 0xfb, 0x34, 0xf0, 0x35, 0x7a, 0xdc, 0xf6, 0x0f, + 0x93, 0x03, 0xbf, 0xed, 0x86, 0x24, 0x22, 0x4c, 0x41, 0x5d, 0x94, 0xb0, 0x58, 0xc4, 0xf0, 0x49, + 0xca, 0x80, 0x86, 0x0c, 0x48, 0x31, 0x20, 0xcd, 0x80, 0xf2, 0x0c, 0x28, 0x63, 0x68, 0xae, 0x84, + 0x54, 0x1c, 0xc8, 0x0e, 0x0a, 0xe2, 0xbe, 0x1b, 0xc6, 0x61, 0xec, 0x1a, 0xa2, 0x8e, 0xdc, 0x37, + 0x37, 0x73, 0x31, 0xbf, 0xd2, 0x02, 0xcd, 0xd5, 0xc2, 0x16, 0x5d, 0x46, 0x78, 0x2c, 0x59, 0x40, + 0x46, 0x9b, 0x6a, 0x3e, 0x2d, 0xce, 0x91, 0xd1, 0x31, 0x61, 0x9c, 0xc6, 0x11, 0xe9, 0x8e, 0xa5, + 0x2d, 0x17, 0xa7, 0x1d, 0x8f, 0x4d, 0xde, 0x5c, 0xb9, 0x3a, 0x9a, 0xc9, 0x48, 0xd0, 0xfe, 0x78, + 0x4f, 0xed, 0xab, 0xc3, 0xa5, 0xa0, 0x87, 0x2e, 0x8d, 0x04, 0x17, 0x6c, 0x34, 0xc5, 0xb9, 0x9c, + 0x04, 0x77, 0xd6, 0x87, 0x1a, 0xee, 0xd0, 0x30, 0xa2, 0x51, 0x88, 0xc9, 0x91, 0x24, 0x5c, 0xc0, + 0xd7, 0xa0, 0xd6, 0x27, 0xc2, 0xef, 0xfa, 0xc2, 0x6f, 0x94, 0xee, 0x96, 0x96, 0xea, 0xab, 0x4b, + 0xa8, 0x70, 0x19, 0x4a, 0x7e, 0xb4, 0xdd, 0x79, 0x47, 0x02, 0xb1, 0xa5, 0x72, 0x3c, 0x78, 0x7a, + 0xde, 0x9a, 0xb8, 0x38, 0x6f, 0x81, 0x21, 0x86, 0x07, 0x6c, 0xf0, 0x08, 0x54, 0x78, 0x42, 0x82, + 0xc6, 0xa4, 0x61, 0xdd, 0x46, 0xff, 0xba, 0x62, 0x54, 0xd8, 0xf4, 0x8e, 0xa2, 0xf5, 0x66, 0x6d, + 0xf1, 0x8a, 0xbe, 0x61, 0x53, 0x0a, 0x9e, 0x80, 0x2a, 0x17, 0xbe, 0x90, 0xbc, 0x51, 0x36, 0x45, + 0x5f, 0xdd, 0x64, 0x51, 0x43, 0xec, 0xcd, 0xd9, 0xb2, 0xd5, 0xf4, 0x8e, 0x6d, 0x41, 0xe7, 0xd3, + 0x24, 0x70, 0x0a, 0x73, 0xd7, 0xe3, 0xa8, 0x4b, 0x85, 0xb2, 0x0b, 0x5c, 0x03, 0x15, 0x71, 0x92, + 0x10, 0x23, 0xf5, 0x8c, 0x77, 0x2f, 0x9b, 0x61, 0x57, 0x61, 0x3f, 0xcf, 0x5b, 0xb7, 0x46, 0xe3, + 0x35, 0x8e, 0x4d, 0x06, 0x7c, 0x00, 0xaa, 0x8c, 0xf8, 0x3c, 0x8e, 0x8c, 0xa0, 0x33, 0xc3, 0x46, + 0xb0, 0x41, 0xb1, 0x7d, 0x85, 0x0f, 0xc1, 0x74, 0x9f, 0x70, 0xee, 0x87, 0xc4, 0x88, 0x30, 0xe3, + 0xcd, 0xdb, 0xc0, 0xe9, 0xad, 0x14, 0xc6, 0xd9, 0x3b, 0xec, 0x81, 0xb9, 0x43, 0x9f, 0x8b, 0xbd, + 0x44, 0xed, 0x8b, 0xec, 0x2a, 0xbb, 0x35, 0x2a, 0x46, 0xb6, 0xc7, 0xd7, 0x38, 0x20, 0xe7, 0x7c, + 0xa4, 0x53, 0xbc, 0xdb, 0x96, 0x7e, 0x6e, 0xf3, 0x37, 0x2a, 0x3c, 0x42, 0xed, 0xfc, 0x28, 0x81, + 0x85, 0x42, 0x81, 0x36, 0xa9, 0xb2, 0xe2, 0xdb, 0x31, 0x2b, 0xba, 0x7f, 0xd9, 0x88, 0x4e, 0x37, + 0x8e, 0xfc, 0xdf, 0x36, 0x53, 0xcb, 0x90, 0x9c, 0x1f, 0x13, 0x30, 0x45, 0x05, 0xe9, 0x73, 0xa5, + 0x5f, 0x59, 0x71, 0xbf, 0xbc, 0x41, 0x6f, 0x78, 0xff, 0xd9, 0xba, 0x53, 0x1b, 0xba, 0x02, 0x4e, + 0x0b, 0x39, 0x9f, 0xaf, 0x1b, 0x59, 0xdb, 0x16, 0xde, 0x07, 0xd3, 0x2c, 0xbd, 0x9a, 0x89, 0x67, + 0xbd, 0xba, 0x5e, 0x94, 0x8d, 0xc0, 0xd9, 0x1b, 0x5c, 0x06, 0x35, 0xc9, 0x55, 0x93, 0xbe, 0x5a, + 0x51, 0xba, 0xfd, 0xc1, 0xa0, 0x7b, 0x16, 0xc7, 0x83, 0x08, 0xb8, 0x00, 0xca, 0x92, 0x76, 0xed, + 0xf6, 0xeb, 0x36, 0xb0, 0xbc, 0xb7, 0xf1, 0x1c, 0x6b, 0x1c, 0x3a, 0xa0, 0x1a, 0xb2, 0x58, 0x26, + 0x5c, 0x6d, 0xbb, 0xac, 0x22, 0x80, 0x36, 0xd1, 0x0b, 0x83, 0x60, 0xfb, 0xe2, 0x7c, 0x2d, 0x81, + 0xd6, 0x1f, 0xbe, 0x04, 0xf8, 0xa1, 0x04, 0x40, 0x90, 0x19, 0x95, 0xab, 0xfe, 0xb5, 0xaa, 0xbb, + 0x37, 0xa8, 0xea, 0xe0, 0x2b, 0x18, 0xfe, 0xd1, 0x0c, 0x20, 0x8e, 0x73, 0xb5, 0x61, 0x1b, 0xd4, + 0x73, 0xdc, 0x46, 0xa2, 0x59, 0x6f, 0x5e, 0x25, 0xd4, 0x73, 0xe4, 0x38, 0x1f, 0xe3, 0x3d, 0x3a, + 0xfd, 0xbe, 0x38, 0x71, 0xa6, 0xce, 0x17, 0x75, 0xde, 0x5f, 0x2c, 0x96, 0x4e, 0xd5, 0x39, 0x53, + 0xe7, 0x9b, 0x3a, 0x1f, 0x2f, 0x17, 0x27, 0xde, 0xd4, 0xb2, 0x0e, 0x7f, 0x05, 0x00, 0x00, 0xff, + 0xff, 0x29, 0x0b, 0xef, 0x6d, 0xe0, 0x06, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.proto new file mode 100644 index 0000000000..5638d1d62a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/generated.proto @@ -0,0 +1,87 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.certificates.v1alpha1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// Describes a certificate signing request +message CertificateSigningRequest { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // The certificate request itself and any additional information. + optional CertificateSigningRequestSpec spec = 2; + + // Derived information about the request. + optional CertificateSigningRequestStatus status = 3; +} + +message CertificateSigningRequestCondition { + // request approval state, currently Approved or Denied. + optional string type = 1; + + // brief reason for the request state + optional string reason = 2; + + // human readable message with details about the request state + optional string message = 3; + + // timestamp for the last update to this condition + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastUpdateTime = 4; +} + +message CertificateSigningRequestList { + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + repeated CertificateSigningRequest items = 2; +} + +// This information is immutable after the request is created. Only the Request +// and ExtraInfo fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +message CertificateSigningRequestSpec { + // Base64-encoded PKCS#10 CSR data + optional bytes request = 1; + + // Information about the requesting user (if relevant) + // See user.Info interface for details + optional string username = 2; + + optional string uid = 3; + + repeated string groups = 4; +} + +message CertificateSigningRequestStatus { + // Conditions applied to the request, such as approval or denial. + repeated CertificateSigningRequestCondition conditions = 1; + + // If request was approved, the controller will place the issued certificate here. + optional bytes certificate = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/register.go new file mode 100644 index 0000000000..d93141b365 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/register.go @@ -0,0 +1,62 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "certificates.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &CertificateSigningRequest{}, + &CertificateSigningRequestList{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + + // Add the watch version that applies + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} + +func (obj *CertificateSigningRequest) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequestList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.generated.go new file mode 100644 index 0000000000..96527c1881 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.generated.go @@ -0,0 +1,1950 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_unversioned.TypeMeta + var v1 pkg2_v1.ObjectMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *CertificateSigningRequest) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[3] = true + yyq2[4] = true + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + yy13 := &x.Spec + yy13.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy14 := &x.Spec + yy14.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + yy16 := &x.Status + yy16.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy17 := &x.Status + yy17.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequest) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv24 := &x.Spec + yyv24.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv25 := &x.Status + yyv25.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequest) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv29 := &x.ObjectMeta + yyv29.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = CertificateSigningRequestSpec{} + } else { + yyv30 := &x.Spec + yyv30.CodecDecodeSelf(d) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = CertificateSigningRequestStatus{} + } else { + yyv31 := &x.Status + yyv31.CodecDecodeSelf(d) + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym32 := z.EncBinary() + _ = yym32 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep33 := !z.EncBinary() + yy2arr33 := z.EncBasicHandle().StructToArray + var yyq33 [4]bool + _, _, _ = yysep33, yyq33, yy2arr33 + const yyr33 bool = false + yyq33[1] = x.Username != "" + yyq33[2] = x.UID != "" + yyq33[3] = len(x.Groups) != 0 + var yynn33 int + if yyr33 || yy2arr33 { + r.EncodeArrayStart(4) + } else { + yynn33 = 1 + for _, b := range yyq33 { + if b { + yynn33++ + } + } + r.EncodeMapStart(yynn33) + yynn33 = 0 + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("request")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Request == nil { + r.EncodeNil() + } else { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Request)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[1] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("username")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Username)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[2] { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq33[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("uid")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.UID)) + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq33[3] { + if x.Groups == nil { + r.EncodeNil() + } else { + yym44 := z.EncBinary() + _ = yym44 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq33[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("groups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Groups == nil { + r.EncodeNil() + } else { + yym45 := z.EncBinary() + _ = yym45 + if false { + } else { + z.F.EncSliceStringV(x.Groups, false, e) + } + } + } + } + if yyr33 || yy2arr33 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym46 := z.DecBinary() + _ = yym46 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct47 := r.ContainerType() + if yyct47 == codecSelferValueTypeMap1234 { + yyl47 := r.ReadMapStart() + if yyl47 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl47, d) + } + } else if yyct47 == codecSelferValueTypeArray1234 { + yyl47 := r.ReadArrayStart() + if yyl47 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl47, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys48Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys48Slc + var yyhl48 bool = l >= 0 + for yyj48 := 0; ; yyj48++ { + if yyhl48 { + if yyj48 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys48Slc = r.DecodeBytes(yys48Slc, true, true) + yys48 := string(yys48Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys48 { + case "request": + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv49 := &x.Request + yym50 := z.DecBinary() + _ = yym50 + if false { + } else { + *yyv49 = r.DecodeBytes(*(*[]byte)(yyv49), false, false) + } + } + case "username": + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + case "uid": + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + case "groups": + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv53 := &x.Groups + yym54 := z.DecBinary() + _ = yym54 + if false { + } else { + z.F.DecSliceStringX(yyv53, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys48) + } // end switch yys48 + } // end for yyj48 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj55 int + var yyb55 bool + var yyhl55 bool = l >= 0 + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Request = nil + } else { + yyv56 := &x.Request + yym57 := z.DecBinary() + _ = yym57 + if false { + } else { + *yyv56 = r.DecodeBytes(*(*[]byte)(yyv56), false, false) + } + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Username = "" + } else { + x.Username = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UID = "" + } else { + x.UID = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Groups = nil + } else { + yyv60 := &x.Groups + yym61 := z.DecBinary() + _ = yym61 + if false { + } else { + z.F.DecSliceStringX(yyv60, false, d) + } + } + for { + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj55-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym62 := z.EncBinary() + _ = yym62 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep63 := !z.EncBinary() + yy2arr63 := z.EncBasicHandle().StructToArray + var yyq63 [2]bool + _, _, _ = yysep63, yyq63, yy2arr63 + const yyr63 bool = false + yyq63[0] = len(x.Conditions) != 0 + yyq63[1] = len(x.Certificate) != 0 + var yynn63 int + if yyr63 || yy2arr63 { + r.EncodeArrayStart(2) + } else { + yynn63 = 0 + for _, b := range yyq63 { + if b { + yynn63++ + } + } + r.EncodeMapStart(yynn63) + yynn63 = 0 + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq63[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym65 := z.EncBinary() + _ = yym65 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq63[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym66 := z.EncBinary() + _ = yym66 + if false { + } else { + h.encSliceCertificateSigningRequestCondition(([]CertificateSigningRequestCondition)(x.Conditions), e) + } + } + } + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq63[1] { + if x.Certificate == nil { + r.EncodeNil() + } else { + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq63[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("certificate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Certificate == nil { + r.EncodeNil() + } else { + yym69 := z.EncBinary() + _ = yym69 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Certificate)) + } + } + } + } + if yyr63 || yy2arr63 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym70 := z.DecBinary() + _ = yym70 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct71 := r.ContainerType() + if yyct71 == codecSelferValueTypeMap1234 { + yyl71 := r.ReadMapStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl71, d) + } + } else if yyct71 == codecSelferValueTypeArray1234 { + yyl71 := r.ReadArrayStart() + if yyl71 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl71, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys72Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys72Slc + var yyhl72 bool = l >= 0 + for yyj72 := 0; ; yyj72++ { + if yyhl72 { + if yyj72 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys72Slc = r.DecodeBytes(yys72Slc, true, true) + yys72 := string(yys72Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys72 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv73 := &x.Conditions + yym74 := z.DecBinary() + _ = yym74 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv73), d) + } + } + case "certificate": + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv75 := &x.Certificate + yym76 := z.DecBinary() + _ = yym76 + if false { + } else { + *yyv75 = r.DecodeBytes(*(*[]byte)(yyv75), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys72) + } // end switch yys72 + } // end for yyj72 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj77 int + var yyb77 bool + var yyhl77 bool = l >= 0 + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv78 := &x.Conditions + yym79 := z.DecBinary() + _ = yym79 + if false { + } else { + h.decSliceCertificateSigningRequestCondition((*[]CertificateSigningRequestCondition)(yyv78), d) + } + } + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Certificate = nil + } else { + yyv80 := &x.Certificate + yym81 := z.DecBinary() + _ = yym81 + if false { + } else { + *yyv80 = r.DecodeBytes(*(*[]byte)(yyv80), false, false) + } + } + for { + yyj77++ + if yyhl77 { + yyb77 = yyj77 > l + } else { + yyb77 = r.CheckBreak() + } + if yyb77 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj77-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RequestConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym82 := z.EncBinary() + _ = yym82 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RequestConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym83 := z.DecBinary() + _ = yym83 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *CertificateSigningRequestCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym84 := z.EncBinary() + _ = yym84 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep85 := !z.EncBinary() + yy2arr85 := z.EncBasicHandle().StructToArray + var yyq85 [4]bool + _, _, _ = yysep85, yyq85, yy2arr85 + const yyr85 bool = false + yyq85[1] = x.Reason != "" + yyq85[2] = x.Message != "" + yyq85[3] = true + var yynn85 int + if yyr85 || yy2arr85 { + r.EncodeArrayStart(4) + } else { + yynn85 = 1 + for _, b := range yyq85 { + if b { + yynn85++ + } + } + r.EncodeMapStart(yynn85) + yynn85 = 0 + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[1] { + yym88 := z.EncBinary() + _ = yym88 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq85[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym89 := z.EncBinary() + _ = yym89 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[2] { + yym91 := z.EncBinary() + _ = yym91 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq85[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym92 := z.EncBinary() + _ = yym92 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq85[3] { + yy94 := &x.LastUpdateTime + yym95 := z.EncBinary() + _ = yym95 + if false { + } else if z.HasExtensions() && z.EncExt(yy94) { + } else if yym95 { + z.EncBinaryMarshal(yy94) + } else if !yym95 && z.IsJSONHandle() { + z.EncJSONMarshal(yy94) + } else { + z.EncFallback(yy94) + } + } else { + r.EncodeNil() + } + } else { + if yyq85[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastUpdateTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy96 := &x.LastUpdateTime + yym97 := z.EncBinary() + _ = yym97 + if false { + } else if z.HasExtensions() && z.EncExt(yy96) { + } else if yym97 { + z.EncBinaryMarshal(yy96) + } else if !yym97 && z.IsJSONHandle() { + z.EncJSONMarshal(yy96) + } else { + z.EncFallback(yy96) + } + } + } + if yyr85 || yy2arr85 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym98 := z.DecBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct99 := r.ContainerType() + if yyct99 == codecSelferValueTypeMap1234 { + yyl99 := r.ReadMapStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl99, d) + } + } else if yyct99 == codecSelferValueTypeArray1234 { + yyl99 := r.ReadArrayStart() + if yyl99 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl99, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys100Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys100Slc + var yyhl100 bool = l >= 0 + for yyj100 := 0; ; yyj100++ { + if yyhl100 { + if yyj100 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys100Slc = r.DecodeBytes(yys100Slc, true, true) + yys100 := string(yys100Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys100 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = RequestConditionType(r.DecodeString()) + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + case "lastUpdateTime": + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_unversioned.Time{} + } else { + yyv104 := &x.LastUpdateTime + yym105 := z.DecBinary() + _ = yym105 + if false { + } else if z.HasExtensions() && z.DecExt(yyv104) { + } else if yym105 { + z.DecBinaryUnmarshal(yyv104) + } else if !yym105 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv104) + } else { + z.DecFallback(yyv104, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys100) + } // end switch yys100 + } // end for yyj100 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj106 int + var yyb106 bool + var yyhl106 bool = l >= 0 + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = RequestConditionType(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastUpdateTime = pkg1_unversioned.Time{} + } else { + yyv110 := &x.LastUpdateTime + yym111 := z.DecBinary() + _ = yym111 + if false { + } else if z.HasExtensions() && z.DecExt(yyv110) { + } else if yym111 { + z.DecBinaryUnmarshal(yyv110) + } else if !yym111 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv110) + } else { + z.DecFallback(yyv110, false) + } + } + for { + yyj106++ + if yyhl106 { + yyb106 = yyj106 > l + } else { + yyb106 = r.CheckBreak() + } + if yyb106 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj106-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CertificateSigningRequestList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym112 := z.EncBinary() + _ = yym112 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep113 := !z.EncBinary() + yy2arr113 := z.EncBasicHandle().StructToArray + var yyq113 [4]bool + _, _, _ = yysep113, yyq113, yy2arr113 + const yyr113 bool = false + yyq113[0] = x.Kind != "" + yyq113[1] = x.APIVersion != "" + yyq113[2] = true + var yynn113 int + if yyr113 || yy2arr113 { + r.EncodeArrayStart(4) + } else { + yynn113 = 1 + for _, b := range yyq113 { + if b { + yynn113++ + } + } + r.EncodeMapStart(yynn113) + yynn113 = 0 + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[0] { + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym116 := z.EncBinary() + _ = yym116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[1] { + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym119 := z.EncBinary() + _ = yym119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[2] { + yy121 := &x.ListMeta + yym122 := z.EncBinary() + _ = yym122 + if false { + } else if z.HasExtensions() && z.EncExt(yy121) { + } else { + z.EncFallback(yy121) + } + } else { + r.EncodeNil() + } + } else { + if yyq113[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy123 := &x.ListMeta + yym124 := z.EncBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.EncExt(yy123) { + } else { + z.EncFallback(yy123) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym126 := z.EncBinary() + _ = yym126 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym127 := z.EncBinary() + _ = yym127 + if false { + } else { + h.encSliceCertificateSigningRequest(([]CertificateSigningRequest)(x.Items), e) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CertificateSigningRequestList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym128 := z.DecBinary() + _ = yym128 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct129 := r.ContainerType() + if yyct129 == codecSelferValueTypeMap1234 { + yyl129 := r.ReadMapStart() + if yyl129 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl129, d) + } + } else if yyct129 == codecSelferValueTypeArray1234 { + yyl129 := r.ReadArrayStart() + if yyl129 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl129, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys130Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys130Slc + var yyhl130 bool = l >= 0 + for yyj130 := 0; ; yyj130++ { + if yyhl130 { + if yyj130 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys130Slc = r.DecodeBytes(yys130Slc, true, true) + yys130 := string(yys130Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys130 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv133 := &x.ListMeta + yym134 := z.DecBinary() + _ = yym134 + if false { + } else if z.HasExtensions() && z.DecExt(yyv133) { + } else { + z.DecFallback(yyv133, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv135 := &x.Items + yym136 := z.DecBinary() + _ = yym136 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv135), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys130) + } // end switch yys130 + } // end for yyj130 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CertificateSigningRequestList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj137 int + var yyb137 bool + var yyhl137 bool = l >= 0 + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv140 := &x.ListMeta + yym141 := z.DecBinary() + _ = yym141 + if false { + } else if z.HasExtensions() && z.DecExt(yyv140) { + } else { + z.DecFallback(yyv140, false) + } + } + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv142 := &x.Items + yym143 := z.DecBinary() + _ = yym143 + if false { + } else { + h.decSliceCertificateSigningRequest((*[]CertificateSigningRequest)(yyv142), d) + } + } + for { + yyj137++ + if yyhl137 { + yyb137 = yyj137 > l + } else { + yyb137 = r.CheckBreak() + } + if yyb137 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj137-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCertificateSigningRequestCondition(v []CertificateSigningRequestCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv144 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy145 := &yyv144 + yy145.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequestCondition(v *[]CertificateSigningRequestCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv146 := *v + yyh146, yyl146 := z.DecSliceHelperStart() + var yyc146 bool + if yyl146 == 0 { + if yyv146 == nil { + yyv146 = []CertificateSigningRequestCondition{} + yyc146 = true + } else if len(yyv146) != 0 { + yyv146 = yyv146[:0] + yyc146 = true + } + } else if yyl146 > 0 { + var yyrr146, yyrl146 int + var yyrt146 bool + if yyl146 > cap(yyv146) { + + yyrg146 := len(yyv146) > 0 + yyv2146 := yyv146 + yyrl146, yyrt146 = z.DecInferLen(yyl146, z.DecBasicHandle().MaxInitLen, 72) + if yyrt146 { + if yyrl146 <= cap(yyv146) { + yyv146 = yyv146[:yyrl146] + } else { + yyv146 = make([]CertificateSigningRequestCondition, yyrl146) + } + } else { + yyv146 = make([]CertificateSigningRequestCondition, yyrl146) + } + yyc146 = true + yyrr146 = len(yyv146) + if yyrg146 { + copy(yyv146, yyv2146) + } + } else if yyl146 != len(yyv146) { + yyv146 = yyv146[:yyl146] + yyc146 = true + } + yyj146 := 0 + for ; yyj146 < yyrr146; yyj146++ { + yyh146.ElemContainerState(yyj146) + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv147 := &yyv146[yyj146] + yyv147.CodecDecodeSelf(d) + } + + } + if yyrt146 { + for ; yyj146 < yyl146; yyj146++ { + yyv146 = append(yyv146, CertificateSigningRequestCondition{}) + yyh146.ElemContainerState(yyj146) + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv148 := &yyv146[yyj146] + yyv148.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj146 := 0 + for ; !r.CheckBreak(); yyj146++ { + + if yyj146 >= len(yyv146) { + yyv146 = append(yyv146, CertificateSigningRequestCondition{}) // var yyz146 CertificateSigningRequestCondition + yyc146 = true + } + yyh146.ElemContainerState(yyj146) + if yyj146 < len(yyv146) { + if r.TryDecodeAsNil() { + yyv146[yyj146] = CertificateSigningRequestCondition{} + } else { + yyv149 := &yyv146[yyj146] + yyv149.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj146 < len(yyv146) { + yyv146 = yyv146[:yyj146] + yyc146 = true + } else if yyj146 == 0 && yyv146 == nil { + yyv146 = []CertificateSigningRequestCondition{} + yyc146 = true + } + } + yyh146.End() + if yyc146 { + *v = yyv146 + } +} + +func (x codecSelfer1234) encSliceCertificateSigningRequest(v []CertificateSigningRequest, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv150 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy151 := &yyv150 + yy151.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCertificateSigningRequest(v *[]CertificateSigningRequest, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv152 := *v + yyh152, yyl152 := z.DecSliceHelperStart() + var yyc152 bool + if yyl152 == 0 { + if yyv152 == nil { + yyv152 = []CertificateSigningRequest{} + yyc152 = true + } else if len(yyv152) != 0 { + yyv152 = yyv152[:0] + yyc152 = true + } + } else if yyl152 > 0 { + var yyrr152, yyrl152 int + var yyrt152 bool + if yyl152 > cap(yyv152) { + + yyrg152 := len(yyv152) > 0 + yyv2152 := yyv152 + yyrl152, yyrt152 = z.DecInferLen(yyl152, z.DecBasicHandle().MaxInitLen, 384) + if yyrt152 { + if yyrl152 <= cap(yyv152) { + yyv152 = yyv152[:yyrl152] + } else { + yyv152 = make([]CertificateSigningRequest, yyrl152) + } + } else { + yyv152 = make([]CertificateSigningRequest, yyrl152) + } + yyc152 = true + yyrr152 = len(yyv152) + if yyrg152 { + copy(yyv152, yyv2152) + } + } else if yyl152 != len(yyv152) { + yyv152 = yyv152[:yyl152] + yyc152 = true + } + yyj152 := 0 + for ; yyj152 < yyrr152; yyj152++ { + yyh152.ElemContainerState(yyj152) + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv153 := &yyv152[yyj152] + yyv153.CodecDecodeSelf(d) + } + + } + if yyrt152 { + for ; yyj152 < yyl152; yyj152++ { + yyv152 = append(yyv152, CertificateSigningRequest{}) + yyh152.ElemContainerState(yyj152) + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv154 := &yyv152[yyj152] + yyv154.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj152 := 0 + for ; !r.CheckBreak(); yyj152++ { + + if yyj152 >= len(yyv152) { + yyv152 = append(yyv152, CertificateSigningRequest{}) // var yyz152 CertificateSigningRequest + yyc152 = true + } + yyh152.ElemContainerState(yyj152) + if yyj152 < len(yyv152) { + if r.TryDecodeAsNil() { + yyv152[yyj152] = CertificateSigningRequest{} + } else { + yyv155 := &yyv152[yyj152] + yyv155.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj152 < len(yyv152) { + yyv152 = yyv152[:yyj152] + yyc152 = true + } else if yyj152 == 0 && yyv152 == nil { + yyv152 = []CertificateSigningRequest{} + yyc152 = true + } + } + yyh152.End() + if yyc152 { + *v = yyv152 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.go new file mode 100644 index 0000000000..b1d2b18444 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types.go @@ -0,0 +1,85 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// Describes a certificate signing request +type CertificateSigningRequest struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // The certificate request itself and any additional information. + Spec CertificateSigningRequestSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Derived information about the request. + Status CertificateSigningRequestStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// This information is immutable after the request is created. Only the Request +// and ExtraInfo fields can be set on creation, other fields are derived by +// Kubernetes and cannot be modified by users. +type CertificateSigningRequestSpec struct { + // Base64-encoded PKCS#10 CSR data + Request []byte `json:"request" protobuf:"bytes,1,opt,name=request"` + + // Information about the requesting user (if relevant) + // See user.Info interface for details + Username string `json:"username,omitempty" protobuf:"bytes,2,opt,name=username"` + UID string `json:"uid,omitempty" protobuf:"bytes,3,opt,name=uid"` + Groups []string `json:"groups,omitempty" protobuf:"bytes,4,rep,name=groups"` +} + +type CertificateSigningRequestStatus struct { + // Conditions applied to the request, such as approval or denial. + Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"` + + // If request was approved, the controller will place the issued certificate here. + Certificate []byte `json:"certificate,omitempty" protobuf:"bytes,2,opt,name=certificate"` +} + +type RequestConditionType string + +// These are the possible conditions for a certificate request. +const ( + CertificateApproved RequestConditionType = "Approved" + CertificateDenied RequestConditionType = "Denied" +) + +type CertificateSigningRequestCondition struct { + // request approval state, currently Approved or Denied. + Type RequestConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=RequestConditionType"` + // brief reason for the request state + Reason string `json:"reason,omitempty" protobuf:"bytes,2,opt,name=reason"` + // human readable message with details about the request state + Message string `json:"message,omitempty" protobuf:"bytes,3,opt,name=message"` + // timestamp for the last update to this condition + LastUpdateTime unversioned.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,4,opt,name=lastUpdateTime"` +} + +type CertificateSigningRequestList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + Items []CertificateSigningRequest `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..cf66d07467 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,70 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_CertificateSigningRequest = map[string]string{ + "": "Describes a certificate signing request", + "spec": "The certificate request itself and any additional information.", + "status": "Derived information about the request.", +} + +func (CertificateSigningRequest) SwaggerDoc() map[string]string { + return map_CertificateSigningRequest +} + +var map_CertificateSigningRequestCondition = map[string]string{ + "type": "request approval state, currently Approved or Denied.", + "reason": "brief reason for the request state", + "message": "human readable message with details about the request state", + "lastUpdateTime": "timestamp for the last update to this condition", +} + +func (CertificateSigningRequestCondition) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestCondition +} + +var map_CertificateSigningRequestSpec = map[string]string{ + "": "This information is immutable after the request is created. Only the Request and ExtraInfo fields can be set on creation, other fields are derived by Kubernetes and cannot be modified by users.", + "request": "Base64-encoded PKCS#10 CSR data", + "username": "Information about the requesting user (if relevant) See user.Info interface for details", +} + +func (CertificateSigningRequestSpec) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestSpec +} + +var map_CertificateSigningRequestStatus = map[string]string{ + "conditions": "Conditions applied to the request, such as approval or denial.", + "certificate": "If request was approved, the controller will place the issued certificate here.", +} + +func (CertificateSigningRequestStatus) SwaggerDoc() map[string]string { + return map_CertificateSigningRequestStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.conversion.go new file mode 100644 index 0000000000..75b3e55cd4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,241 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + certificates "k8s.io/client-go/1.5/pkg/apis/certificates" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_CertificateSigningRequest_To_certificates_CertificateSigningRequest, + Convert_certificates_CertificateSigningRequest_To_v1alpha1_CertificateSigningRequest, + Convert_v1alpha1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition, + Convert_certificates_CertificateSigningRequestCondition_To_v1alpha1_CertificateSigningRequestCondition, + Convert_v1alpha1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList, + Convert_certificates_CertificateSigningRequestList_To_v1alpha1_CertificateSigningRequestList, + Convert_v1alpha1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec, + Convert_certificates_CertificateSigningRequestSpec_To_v1alpha1_CertificateSigningRequestSpec, + Convert_v1alpha1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus, + Convert_certificates_CertificateSigningRequestStatus_To_v1alpha1_CertificateSigningRequestStatus, + ) +} + +func autoConvert_v1alpha1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in *CertificateSigningRequest, out *certificates.CertificateSigningRequest, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1alpha1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in *CertificateSigningRequest, out *certificates.CertificateSigningRequest, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequest_To_v1alpha1_CertificateSigningRequest(in *certificates.CertificateSigningRequest, out *CertificateSigningRequest, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_certificates_CertificateSigningRequestSpec_To_v1alpha1_CertificateSigningRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certificates_CertificateSigningRequestStatus_To_v1alpha1_CertificateSigningRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_certificates_CertificateSigningRequest_To_v1alpha1_CertificateSigningRequest(in *certificates.CertificateSigningRequest, out *CertificateSigningRequest, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequest_To_v1alpha1_CertificateSigningRequest(in, out, s) +} + +func autoConvert_v1alpha1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in *CertificateSigningRequestCondition, out *certificates.CertificateSigningRequestCondition, s conversion.Scope) error { + out.Type = certificates.RequestConditionType(in.Type) + out.Reason = in.Reason + out.Message = in.Message + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastUpdateTime, &out.LastUpdateTime, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in *CertificateSigningRequestCondition, out *certificates.CertificateSigningRequestCondition, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestCondition_To_v1alpha1_CertificateSigningRequestCondition(in *certificates.CertificateSigningRequestCondition, out *CertificateSigningRequestCondition, s conversion.Scope) error { + out.Type = RequestConditionType(in.Type) + out.Reason = in.Reason + out.Message = in.Message + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastUpdateTime, &out.LastUpdateTime, s); err != nil { + return err + } + return nil +} + +func Convert_certificates_CertificateSigningRequestCondition_To_v1alpha1_CertificateSigningRequestCondition(in *certificates.CertificateSigningRequestCondition, out *CertificateSigningRequestCondition, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestCondition_To_v1alpha1_CertificateSigningRequestCondition(in, out, s) +} + +func autoConvert_v1alpha1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in *CertificateSigningRequestList, out *certificates.CertificateSigningRequestList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]certificates.CertificateSigningRequest, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_CertificateSigningRequest_To_certificates_CertificateSigningRequest(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in *CertificateSigningRequestList, out *certificates.CertificateSigningRequestList, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSigningRequestList_To_certificates_CertificateSigningRequestList(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestList_To_v1alpha1_CertificateSigningRequestList(in *certificates.CertificateSigningRequestList, out *CertificateSigningRequestList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CertificateSigningRequest, len(*in)) + for i := range *in { + if err := Convert_certificates_CertificateSigningRequest_To_v1alpha1_CertificateSigningRequest(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_certificates_CertificateSigningRequestList_To_v1alpha1_CertificateSigningRequestList(in *certificates.CertificateSigningRequestList, out *CertificateSigningRequestList, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestList_To_v1alpha1_CertificateSigningRequestList(in, out, s) +} + +func autoConvert_v1alpha1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in *CertificateSigningRequestSpec, out *certificates.CertificateSigningRequestSpec, s conversion.Scope) error { + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Request, &out.Request, s); err != nil { + return err + } + out.Username = in.Username + out.UID = in.UID + out.Groups = in.Groups + return nil +} + +func Convert_v1alpha1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in *CertificateSigningRequestSpec, out *certificates.CertificateSigningRequestSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSigningRequestSpec_To_certificates_CertificateSigningRequestSpec(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestSpec_To_v1alpha1_CertificateSigningRequestSpec(in *certificates.CertificateSigningRequestSpec, out *CertificateSigningRequestSpec, s conversion.Scope) error { + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Request, &out.Request, s); err != nil { + return err + } + out.Username = in.Username + out.UID = in.UID + out.Groups = in.Groups + return nil +} + +func Convert_certificates_CertificateSigningRequestSpec_To_v1alpha1_CertificateSigningRequestSpec(in *certificates.CertificateSigningRequestSpec, out *CertificateSigningRequestSpec, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestSpec_To_v1alpha1_CertificateSigningRequestSpec(in, out, s) +} + +func autoConvert_v1alpha1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in *CertificateSigningRequestStatus, out *certificates.CertificateSigningRequestStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]certificates.CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_CertificateSigningRequestCondition_To_certificates_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Certificate, &out.Certificate, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in *CertificateSigningRequestStatus, out *certificates.CertificateSigningRequestStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSigningRequestStatus_To_certificates_CertificateSigningRequestStatus(in, out, s) +} + +func autoConvert_certificates_CertificateSigningRequestStatus_To_v1alpha1_CertificateSigningRequestStatus(in *certificates.CertificateSigningRequestStatus, out *CertificateSigningRequestStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := Convert_certificates_CertificateSigningRequestCondition_To_v1alpha1_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Certificate, &out.Certificate, s); err != nil { + return err + } + return nil +} + +func Convert_certificates_CertificateSigningRequestStatus_To_v1alpha1_CertificateSigningRequestStatus(in *certificates.CertificateSigningRequestStatus, out *CertificateSigningRequestStatus, s conversion.Scope) error { + return autoConvert_certificates_CertificateSigningRequestStatus_To_v1alpha1_CertificateSigningRequestStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..3f6b909915 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,145 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_CertificateSigningRequest, InType: reflect.TypeOf(&CertificateSigningRequest{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_CertificateSigningRequestCondition, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_CertificateSigningRequestList, InType: reflect.TypeOf(&CertificateSigningRequestList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_CertificateSigningRequestSpec, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_CertificateSigningRequestStatus, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})}, + ) +} + +func DeepCopy_v1alpha1_CertificateSigningRequest(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequest) + out := out.(*CertificateSigningRequest) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1alpha1_CertificateSigningRequestSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1alpha1_CertificateSigningRequestStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1alpha1_CertificateSigningRequestCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestCondition) + out := out.(*CertificateSigningRequestCondition) + out.Type = in.Type + out.Reason = in.Reason + out.Message = in.Message + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + return nil + } +} + +func DeepCopy_v1alpha1_CertificateSigningRequestList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestList) + out := out.(*CertificateSigningRequestList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CertificateSigningRequest, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_CertificateSigningRequest(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_CertificateSigningRequestSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestSpec) + out := out.(*CertificateSigningRequestSpec) + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Request = nil + } + out.Username = in.Username + out.UID = in.UID + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_CertificateSigningRequestStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestStatus) + out := out.(*CertificateSigningRequestStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Certificate != nil { + in, out := &in.Certificate, &out.Certificate + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Certificate = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/zz_generated.deepcopy.go new file mode 100644 index 0000000000..347ea29907 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/certificates/zz_generated.deepcopy.go @@ -0,0 +1,145 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package certificates + +import ( + api "k8s.io/client-go/1.5/pkg/api" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequest, InType: reflect.TypeOf(&CertificateSigningRequest{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestCondition, InType: reflect.TypeOf(&CertificateSigningRequestCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestList, InType: reflect.TypeOf(&CertificateSigningRequestList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestSpec, InType: reflect.TypeOf(&CertificateSigningRequestSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_certificates_CertificateSigningRequestStatus, InType: reflect.TypeOf(&CertificateSigningRequestStatus{})}, + ) +} + +func DeepCopy_certificates_CertificateSigningRequest(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequest) + out := out.(*CertificateSigningRequest) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_certificates_CertificateSigningRequestSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_certificates_CertificateSigningRequestStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_certificates_CertificateSigningRequestCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestCondition) + out := out.(*CertificateSigningRequestCondition) + out.Type = in.Type + out.Reason = in.Reason + out.Message = in.Message + out.LastUpdateTime = in.LastUpdateTime.DeepCopy() + return nil + } +} + +func DeepCopy_certificates_CertificateSigningRequestList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestList) + out := out.(*CertificateSigningRequestList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CertificateSigningRequest, len(*in)) + for i := range *in { + if err := DeepCopy_certificates_CertificateSigningRequest(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_certificates_CertificateSigningRequestSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestSpec) + out := out.(*CertificateSigningRequestSpec) + if in.Request != nil { + in, out := &in.Request, &out.Request + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Request = nil + } + out.Username = in.Username + out.UID = in.UID + if in.Groups != nil { + in, out := &in.Groups, &out.Groups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Groups = nil + } + return nil + } +} + +func DeepCopy_certificates_CertificateSigningRequestStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CertificateSigningRequestStatus) + out := out.(*CertificateSigningRequestStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]CertificateSigningRequestCondition, len(*in)) + for i := range *in { + if err := DeepCopy_certificates_CertificateSigningRequestCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.Certificate != nil { + in, out := &in.Certificate, &out.Certificate + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Certificate = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/doc.go new file mode 100644 index 0000000000..6b51a43e8b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package extensions diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/helpers.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/helpers.go new file mode 100644 index 0000000000..27d3e23add --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/helpers.go @@ -0,0 +1,37 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package extensions + +import ( + "strings" +) + +// SysctlsFromPodSecurityPolicyAnnotation parses an annotation value of the key +// SysctlsSecurityPolocyAnnotationKey into a slice of sysctls. An empty slice +// is returned if annotation is the empty string. +func SysctlsFromPodSecurityPolicyAnnotation(annotation string) ([]string, error) { + if len(annotation) == 0 { + return []string{}, nil + } + + return strings.Split(annotation, ","), nil +} + +// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls. +func PodAnnotationsFromSysctls(sysctls []string) string { + return strings.Join(sysctls, ",") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/install/install.go new file mode 100644 index 0000000000..4d1d1cdc94 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/extensions" + "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: extensions.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/extensions", + RootScopedKinds: sets.NewString("PodSecurityPolicy", "ThirdPartyResource"), + AddInternalObjectsToScheme: extensions.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/register.go new file mode 100644 index 0000000000..35ad88d1c7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/register.go @@ -0,0 +1,81 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package extensions + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/apis/autoscaling" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "extensions" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this gets cleaned up when the types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &autoscaling.HorizontalPodAutoscaler{}, + &autoscaling.HorizontalPodAutoscalerList{}, + &batch.Job{}, + &batch.JobList{}, + &batch.JobTemplate{}, + &ReplicationControllerDummy{}, + &Scale{}, + &ThirdPartyResource{}, + &ThirdPartyResourceList{}, + &DaemonSetList{}, + &DaemonSet{}, + &ThirdPartyResourceData{}, + &ThirdPartyResourceDataList{}, + &Ingress{}, + &IngressList{}, + &api.ListOptions{}, + &api.DeleteOptions{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &api.ExportOptions{}, + &PodSecurityPolicy{}, + &PodSecurityPolicyList{}, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.generated.go new file mode 100644 index 0000000000..a2fd0549d5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.generated.go @@ -0,0 +1,17991 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package extensions + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg4_resource.Quantity + var v2 pkg1_unversioned.LabelSelector + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct7 := r.ContainerType() + if yyct7 == codecSelferValueTypeMap1234 { + yyl7 := r.ReadMapStart() + if yyl7 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl7, d) + } + } else if yyct7 == codecSelferValueTypeArray1234 { + yyl7 := r.ReadArrayStart() + if yyl7 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl7, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys8Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys8Slc + var yyhl8 bool = l >= 0 + for yyj8 := 0; ; yyj8++ { + if yyhl8 { + if yyj8 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys8Slc = r.DecodeBytes(yys8Slc, true, true) + yys8 := string(yys8Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys8 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys8) + } // end switch yys8 + } // end for yyj8 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep13 := !z.EncBinary() + yy2arr13 := z.EncBasicHandle().StructToArray + var yyq13 [2]bool + _, _, _ = yysep13, yyq13, yy2arr13 + const yyr13 bool = false + yyq13[1] = x.Selector != nil + var yynn13 int + if yyr13 || yy2arr13 { + r.EncodeArrayStart(2) + } else { + yynn13 = 1 + for _, b := range yyq13 { + if b { + yynn13++ + } + } + r.EncodeMapStart(yynn13) + yynn13 = 0 + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq13[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq13[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct21 := r.ContainerType() + if yyct21 == codecSelferValueTypeMap1234 { + yyl21 := r.ReadMapStart() + if yyl21 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl21, d) + } + } else if yyct21 == codecSelferValueTypeArray1234 { + yyl21 := r.ReadArrayStart() + if yyl21 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl21, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys22Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys22Slc + var yyhl22 bool = l >= 0 + for yyj22 := 0; ; yyj22++ { + if yyhl22 { + if yyj22 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys22Slc = r.DecodeBytes(yys22Slc, true, true) + yys22 := string(yys22Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys22 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym25 := z.DecBinary() + _ = yym25 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys22) + } // end switch yys22 + } // end for yyj22 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj26 int + var yyb26 bool + var yyhl26 bool = l >= 0 + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym29 := z.DecBinary() + _ = yym29 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + for { + yyj26++ + if yyhl26 { + yyb26 = yyj26 > l + } else { + yyb26 = r.CheckBreak() + } + if yyb26 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj26-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym30 := z.EncBinary() + _ = yym30 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep31 := !z.EncBinary() + yy2arr31 := z.EncBasicHandle().StructToArray + var yyq31 [5]bool + _, _, _ = yysep31, yyq31, yy2arr31 + const yyr31 bool = false + yyq31[0] = x.Kind != "" + yyq31[1] = x.APIVersion != "" + yyq31[2] = true + yyq31[3] = true + yyq31[4] = true + var yynn31 int + if yyr31 || yy2arr31 { + r.EncodeArrayStart(5) + } else { + yynn31 = 0 + for _, b := range yyq31 { + if b { + yynn31++ + } + } + r.EncodeMapStart(yynn31) + yynn31 = 0 + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq31[0] { + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq31[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym34 := z.EncBinary() + _ = yym34 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq31[1] { + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq31[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq31[2] { + yy39 := &x.ObjectMeta + yy39.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq31[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy40 := &x.ObjectMeta + yy40.CodecEncodeSelf(e) + } + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq31[3] { + yy42 := &x.Spec + yy42.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq31[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy43 := &x.Spec + yy43.CodecEncodeSelf(e) + } + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq31[4] { + yy45 := &x.Status + yy45.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq31[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy46 := &x.Status + yy46.CodecEncodeSelf(e) + } + } + if yyr31 || yy2arr31 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym47 := z.DecBinary() + _ = yym47 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct48 := r.ContainerType() + if yyct48 == codecSelferValueTypeMap1234 { + yyl48 := r.ReadMapStart() + if yyl48 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl48, d) + } + } else if yyct48 == codecSelferValueTypeArray1234 { + yyl48 := r.ReadArrayStart() + if yyl48 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl48, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys49Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys49Slc + var yyhl49 bool = l >= 0 + for yyj49 := 0; ; yyj49++ { + if yyhl49 { + if yyj49 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys49Slc = r.DecodeBytes(yys49Slc, true, true) + yys49 := string(yys49Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys49 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv52 := &x.ObjectMeta + yyv52.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv53 := &x.Spec + yyv53.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv54 := &x.Status + yyv54.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys49) + } // end switch yys49 + } // end for yyj49 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj55 int + var yyb55 bool + var yyhl55 bool = l >= 0 + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv58 := &x.ObjectMeta + yyv58.CodecDecodeSelf(d) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv59 := &x.Spec + yyv59.CodecDecodeSelf(d) + } + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv60 := &x.Status + yyv60.CodecDecodeSelf(d) + } + for { + yyj55++ + if yyhl55 { + yyb55 = yyj55 > l + } else { + yyb55 = r.CheckBreak() + } + if yyb55 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj55-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerDummy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym61 := z.EncBinary() + _ = yym61 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep62 := !z.EncBinary() + yy2arr62 := z.EncBasicHandle().StructToArray + var yyq62 [2]bool + _, _, _ = yysep62, yyq62, yy2arr62 + const yyr62 bool = false + yyq62[0] = x.Kind != "" + yyq62[1] = x.APIVersion != "" + var yynn62 int + if yyr62 || yy2arr62 { + r.EncodeArrayStart(2) + } else { + yynn62 = 0 + for _, b := range yyq62 { + if b { + yynn62++ + } + } + r.EncodeMapStart(yynn62) + yynn62 = 0 + } + if yyr62 || yy2arr62 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq62[0] { + yym64 := z.EncBinary() + _ = yym64 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq62[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym65 := z.EncBinary() + _ = yym65 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr62 || yy2arr62 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq62[1] { + yym67 := z.EncBinary() + _ = yym67 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq62[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym68 := z.EncBinary() + _ = yym68 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr62 || yy2arr62 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerDummy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym69 := z.DecBinary() + _ = yym69 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct70 := r.ContainerType() + if yyct70 == codecSelferValueTypeMap1234 { + yyl70 := r.ReadMapStart() + if yyl70 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl70, d) + } + } else if yyct70 == codecSelferValueTypeArray1234 { + yyl70 := r.ReadArrayStart() + if yyl70 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl70, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys71Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys71Slc + var yyhl71 bool = l >= 0 + for yyj71 := 0; ; yyj71++ { + if yyhl71 { + if yyj71 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys71Slc = r.DecodeBytes(yys71Slc, true, true) + yys71 := string(yys71Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys71 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys71) + } // end switch yys71 + } // end for yyj71 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj74 int + var yyb74 bool + var yyhl74 bool = l >= 0 + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + for { + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj74-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTarget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym77 := z.EncBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep78 := !z.EncBinary() + yy2arr78 := z.EncBasicHandle().StructToArray + var yyq78 [2]bool + _, _, _ = yysep78, yyq78, yy2arr78 + const yyr78 bool = false + var yynn78 int + if yyr78 || yy2arr78 { + r.EncodeArrayStart(2) + } else { + yynn78 = 2 + for _, b := range yyq78 { + if b { + yynn78++ + } + } + r.EncodeMapStart(yynn78) + yynn78 = 0 + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym80 := z.EncBinary() + _ = yym80 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym81 := z.EncBinary() + _ = yym81 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy83 := &x.TargetValue + yym84 := z.EncBinary() + _ = yym84 + if false { + } else if z.HasExtensions() && z.EncExt(yy83) { + } else if !yym84 && z.IsJSONHandle() { + z.EncJSONMarshal(yy83) + } else { + z.EncFallback(yy83) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy85 := &x.TargetValue + yym86 := z.EncBinary() + _ = yym86 + if false { + } else if z.HasExtensions() && z.EncExt(yy85) { + } else if !yym86 && z.IsJSONHandle() { + z.EncJSONMarshal(yy85) + } else { + z.EncFallback(yy85) + } + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTarget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym87 := z.DecBinary() + _ = yym87 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct88 := r.ContainerType() + if yyct88 == codecSelferValueTypeMap1234 { + yyl88 := r.ReadMapStart() + if yyl88 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl88, d) + } + } else if yyct88 == codecSelferValueTypeArray1234 { + yyl88 := r.ReadArrayStart() + if yyl88 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl88, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTarget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys89Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys89Slc + var yyhl89 bool = l >= 0 + for yyj89 := 0; ; yyj89++ { + if yyhl89 { + if yyj89 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys89Slc = r.DecodeBytes(yys89Slc, true, true) + yys89 := string(yys89Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys89 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.TargetValue = pkg4_resource.Quantity{} + } else { + yyv91 := &x.TargetValue + yym92 := z.DecBinary() + _ = yym92 + if false { + } else if z.HasExtensions() && z.DecExt(yyv91) { + } else if !yym92 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv91) + } else { + z.DecFallback(yyv91, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys89) + } // end switch yys89 + } // end for yyj89 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTarget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj93 int + var yyb93 bool + var yyhl93 bool = l >= 0 + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetValue = pkg4_resource.Quantity{} + } else { + yyv95 := &x.TargetValue + yym96 := z.DecBinary() + _ = yym96 + if false { + } else if z.HasExtensions() && z.DecExt(yyv95) { + } else if !yym96 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv95) + } else { + z.DecFallback(yyv95, false) + } + } + for { + yyj93++ + if yyhl93 { + yyb93 = yyj93 > l + } else { + yyb93 = r.CheckBreak() + } + if yyb93 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj93-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTargetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym97 := z.EncBinary() + _ = yym97 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep98 := !z.EncBinary() + yy2arr98 := z.EncBasicHandle().StructToArray + var yyq98 [1]bool + _, _, _ = yysep98, yyq98, yy2arr98 + const yyr98 bool = false + var yynn98 int + if yyr98 || yy2arr98 { + r.EncodeArrayStart(1) + } else { + yynn98 = 1 + for _, b := range yyq98 { + if b { + yynn98++ + } + } + r.EncodeMapStart(yynn98) + yynn98 = 0 + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym100 := z.EncBinary() + _ = yym100 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym101 := z.EncBinary() + _ = yym101 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } + if yyr98 || yy2arr98 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTargetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym102 := z.DecBinary() + _ = yym102 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct103 := r.ContainerType() + if yyct103 == codecSelferValueTypeMap1234 { + yyl103 := r.ReadMapStart() + if yyl103 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl103, d) + } + } else if yyct103 == codecSelferValueTypeArray1234 { + yyl103 := r.ReadArrayStart() + if yyl103 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl103, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys104Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys104Slc + var yyhl104 bool = l >= 0 + for yyj104 := 0; ; yyj104++ { + if yyhl104 { + if yyj104 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys104Slc = r.DecodeBytes(yys104Slc, true, true) + yys104 := string(yys104Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys104 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv105 := &x.Items + yym106 := z.DecBinary() + _ = yym106 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv105), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys104) + } // end switch yys104 + } // end for yyj104 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj107 int + var yyb107 bool + var yyhl107 bool = l >= 0 + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv108 := &x.Items + yym109 := z.DecBinary() + _ = yym109 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv108), d) + } + } + for { + yyj107++ + if yyhl107 { + yyb107 = yyj107 > l + } else { + yyb107 = r.CheckBreak() + } + if yyb107 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj107-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym110 := z.EncBinary() + _ = yym110 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep111 := !z.EncBinary() + yy2arr111 := z.EncBasicHandle().StructToArray + var yyq111 [2]bool + _, _, _ = yysep111, yyq111, yy2arr111 + const yyr111 bool = false + var yynn111 int + if yyr111 || yy2arr111 { + r.EncodeArrayStart(2) + } else { + yynn111 = 2 + for _, b := range yyq111 { + if b { + yynn111++ + } + } + r.EncodeMapStart(yynn111) + yynn111 = 0 + } + if yyr111 || yy2arr111 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym113 := z.EncBinary() + _ = yym113 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym114 := z.EncBinary() + _ = yym114 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr111 || yy2arr111 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy116 := &x.CurrentValue + yym117 := z.EncBinary() + _ = yym117 + if false { + } else if z.HasExtensions() && z.EncExt(yy116) { + } else if !yym117 && z.IsJSONHandle() { + z.EncJSONMarshal(yy116) + } else { + z.EncFallback(yy116) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy118 := &x.CurrentValue + yym119 := z.EncBinary() + _ = yym119 + if false { + } else if z.HasExtensions() && z.EncExt(yy118) { + } else if !yym119 && z.IsJSONHandle() { + z.EncJSONMarshal(yy118) + } else { + z.EncFallback(yy118) + } + } + if yyr111 || yy2arr111 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym120 := z.DecBinary() + _ = yym120 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct121 := r.ContainerType() + if yyct121 == codecSelferValueTypeMap1234 { + yyl121 := r.ReadMapStart() + if yyl121 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl121, d) + } + } else if yyct121 == codecSelferValueTypeArray1234 { + yyl121 := r.ReadArrayStart() + if yyl121 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl121, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys122Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys122Slc + var yyhl122 bool = l >= 0 + for yyj122 := 0; ; yyj122++ { + if yyhl122 { + if yyj122 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys122Slc = r.DecodeBytes(yys122Slc, true, true) + yys122 := string(yys122Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys122 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.CurrentValue = pkg4_resource.Quantity{} + } else { + yyv124 := &x.CurrentValue + yym125 := z.DecBinary() + _ = yym125 + if false { + } else if z.HasExtensions() && z.DecExt(yyv124) { + } else if !yym125 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv124) + } else { + z.DecFallback(yyv124, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys122) + } // end switch yys122 + } // end for yyj122 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj126 int + var yyb126 bool + var yyhl126 bool = l >= 0 + yyj126++ + if yyhl126 { + yyb126 = yyj126 > l + } else { + yyb126 = r.CheckBreak() + } + if yyb126 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj126++ + if yyhl126 { + yyb126 = yyj126 > l + } else { + yyb126 = r.CheckBreak() + } + if yyb126 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentValue = pkg4_resource.Quantity{} + } else { + yyv128 := &x.CurrentValue + yym129 := z.DecBinary() + _ = yym129 + if false { + } else if z.HasExtensions() && z.DecExt(yyv128) { + } else if !yym129 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv128) + } else { + z.DecFallback(yyv128, false) + } + } + for { + yyj126++ + if yyhl126 { + yyb126 = yyj126 > l + } else { + yyb126 = r.CheckBreak() + } + if yyb126 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj126-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym130 := z.EncBinary() + _ = yym130 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep131 := !z.EncBinary() + yy2arr131 := z.EncBasicHandle().StructToArray + var yyq131 [1]bool + _, _, _ = yysep131, yyq131, yy2arr131 + const yyr131 bool = false + var yynn131 int + if yyr131 || yy2arr131 { + r.EncodeArrayStart(1) + } else { + yynn131 = 1 + for _, b := range yyq131 { + if b { + yynn131++ + } + } + r.EncodeMapStart(yynn131) + yynn131 = 0 + } + if yyr131 || yy2arr131 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym133 := z.EncBinary() + _ = yym133 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym134 := z.EncBinary() + _ = yym134 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } + if yyr131 || yy2arr131 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym135 := z.DecBinary() + _ = yym135 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct136 := r.ContainerType() + if yyct136 == codecSelferValueTypeMap1234 { + yyl136 := r.ReadMapStart() + if yyl136 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl136, d) + } + } else if yyct136 == codecSelferValueTypeArray1234 { + yyl136 := r.ReadArrayStart() + if yyl136 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl136, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys137Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys137Slc + var yyhl137 bool = l >= 0 + for yyj137 := 0; ; yyj137++ { + if yyhl137 { + if yyj137 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys137Slc = r.DecodeBytes(yys137Slc, true, true) + yys137 := string(yys137Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys137 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv138 := &x.Items + yym139 := z.DecBinary() + _ = yym139 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv138), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys137) + } // end switch yys137 + } // end for yyj137 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj140 int + var yyb140 bool + var yyhl140 bool = l >= 0 + yyj140++ + if yyhl140 { + yyb140 = yyj140 > l + } else { + yyb140 = r.CheckBreak() + } + if yyb140 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv141 := &x.Items + yym142 := z.DecBinary() + _ = yym142 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv141), d) + } + } + for { + yyj140++ + if yyhl140 { + yyb140 = yyj140 > l + } else { + yyb140 = r.CheckBreak() + } + if yyb140 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj140-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym143 := z.EncBinary() + _ = yym143 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep144 := !z.EncBinary() + yy2arr144 := z.EncBasicHandle().StructToArray + var yyq144 [5]bool + _, _, _ = yysep144, yyq144, yy2arr144 + const yyr144 bool = false + yyq144[0] = x.Kind != "" + yyq144[1] = x.APIVersion != "" + yyq144[2] = true + yyq144[3] = x.Description != "" + yyq144[4] = len(x.Versions) != 0 + var yynn144 int + if yyr144 || yy2arr144 { + r.EncodeArrayStart(5) + } else { + yynn144 = 0 + for _, b := range yyq144 { + if b { + yynn144++ + } + } + r.EncodeMapStart(yynn144) + yynn144 = 0 + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq144[0] { + yym146 := z.EncBinary() + _ = yym146 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq144[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym147 := z.EncBinary() + _ = yym147 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq144[1] { + yym149 := z.EncBinary() + _ = yym149 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq144[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym150 := z.EncBinary() + _ = yym150 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq144[2] { + yy152 := &x.ObjectMeta + yy152.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq144[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy153 := &x.ObjectMeta + yy153.CodecEncodeSelf(e) + } + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq144[3] { + yym155 := z.EncBinary() + _ = yym155 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq144[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("description")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym156 := z.EncBinary() + _ = yym156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq144[4] { + if x.Versions == nil { + r.EncodeNil() + } else { + yym158 := z.EncBinary() + _ = yym158 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq144[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("versions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Versions == nil { + r.EncodeNil() + } else { + yym159 := z.EncBinary() + _ = yym159 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } + } + if yyr144 || yy2arr144 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym160 := z.DecBinary() + _ = yym160 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct161 := r.ContainerType() + if yyct161 == codecSelferValueTypeMap1234 { + yyl161 := r.ReadMapStart() + if yyl161 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl161, d) + } + } else if yyct161 == codecSelferValueTypeArray1234 { + yyl161 := r.ReadArrayStart() + if yyl161 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl161, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys162Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys162Slc + var yyhl162 bool = l >= 0 + for yyj162 := 0; ; yyj162++ { + if yyhl162 { + if yyj162 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys162Slc = r.DecodeBytes(yys162Slc, true, true) + yys162 := string(yys162Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys162 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv165 := &x.ObjectMeta + yyv165.CodecDecodeSelf(d) + } + case "description": + if r.TryDecodeAsNil() { + x.Description = "" + } else { + x.Description = string(r.DecodeString()) + } + case "versions": + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv167 := &x.Versions + yym168 := z.DecBinary() + _ = yym168 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv167), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys162) + } // end switch yys162 + } // end for yyj162 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj169 int + var yyb169 bool + var yyhl169 bool = l >= 0 + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv172 := &x.ObjectMeta + yyv172.CodecDecodeSelf(d) + } + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Description = "" + } else { + x.Description = string(r.DecodeString()) + } + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv174 := &x.Versions + yym175 := z.DecBinary() + _ = yym175 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv174), d) + } + } + for { + yyj169++ + if yyhl169 { + yyb169 = yyj169 > l + } else { + yyb169 = r.CheckBreak() + } + if yyb169 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj169-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym176 := z.EncBinary() + _ = yym176 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep177 := !z.EncBinary() + yy2arr177 := z.EncBasicHandle().StructToArray + var yyq177 [4]bool + _, _, _ = yysep177, yyq177, yy2arr177 + const yyr177 bool = false + yyq177[0] = x.Kind != "" + yyq177[1] = x.APIVersion != "" + yyq177[2] = true + var yynn177 int + if yyr177 || yy2arr177 { + r.EncodeArrayStart(4) + } else { + yynn177 = 1 + for _, b := range yyq177 { + if b { + yynn177++ + } + } + r.EncodeMapStart(yynn177) + yynn177 = 0 + } + if yyr177 || yy2arr177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq177[0] { + yym179 := z.EncBinary() + _ = yym179 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq177[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym180 := z.EncBinary() + _ = yym180 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr177 || yy2arr177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq177[1] { + yym182 := z.EncBinary() + _ = yym182 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq177[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym183 := z.EncBinary() + _ = yym183 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr177 || yy2arr177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq177[2] { + yy185 := &x.ListMeta + yym186 := z.EncBinary() + _ = yym186 + if false { + } else if z.HasExtensions() && z.EncExt(yy185) { + } else { + z.EncFallback(yy185) + } + } else { + r.EncodeNil() + } + } else { + if yyq177[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy187 := &x.ListMeta + yym188 := z.EncBinary() + _ = yym188 + if false { + } else if z.HasExtensions() && z.EncExt(yy187) { + } else { + z.EncFallback(yy187) + } + } + } + if yyr177 || yy2arr177 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym190 := z.EncBinary() + _ = yym190 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym191 := z.EncBinary() + _ = yym191 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } + if yyr177 || yy2arr177 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym192 := z.DecBinary() + _ = yym192 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct193 := r.ContainerType() + if yyct193 == codecSelferValueTypeMap1234 { + yyl193 := r.ReadMapStart() + if yyl193 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl193, d) + } + } else if yyct193 == codecSelferValueTypeArray1234 { + yyl193 := r.ReadArrayStart() + if yyl193 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl193, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys194Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys194Slc + var yyhl194 bool = l >= 0 + for yyj194 := 0; ; yyj194++ { + if yyhl194 { + if yyj194 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys194Slc = r.DecodeBytes(yys194Slc, true, true) + yys194 := string(yys194Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys194 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv197 := &x.ListMeta + yym198 := z.DecBinary() + _ = yym198 + if false { + } else if z.HasExtensions() && z.DecExt(yyv197) { + } else { + z.DecFallback(yyv197, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv199 := &x.Items + yym200 := z.DecBinary() + _ = yym200 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv199), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys194) + } // end switch yys194 + } // end for yyj194 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj201 int + var yyb201 bool + var yyhl201 bool = l >= 0 + yyj201++ + if yyhl201 { + yyb201 = yyj201 > l + } else { + yyb201 = r.CheckBreak() + } + if yyb201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj201++ + if yyhl201 { + yyb201 = yyj201 > l + } else { + yyb201 = r.CheckBreak() + } + if yyb201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj201++ + if yyhl201 { + yyb201 = yyj201 > l + } else { + yyb201 = r.CheckBreak() + } + if yyb201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv204 := &x.ListMeta + yym205 := z.DecBinary() + _ = yym205 + if false { + } else if z.HasExtensions() && z.DecExt(yyv204) { + } else { + z.DecFallback(yyv204, false) + } + } + yyj201++ + if yyhl201 { + yyb201 = yyj201 > l + } else { + yyb201 = r.CheckBreak() + } + if yyb201 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv206 := &x.Items + yym207 := z.DecBinary() + _ = yym207 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv206), d) + } + } + for { + yyj201++ + if yyhl201 { + yyb201 = yyj201 > l + } else { + yyb201 = r.CheckBreak() + } + if yyb201 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj201-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *APIVersion) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym208 := z.EncBinary() + _ = yym208 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep209 := !z.EncBinary() + yy2arr209 := z.EncBasicHandle().StructToArray + var yyq209 [1]bool + _, _, _ = yysep209, yyq209, yy2arr209 + const yyr209 bool = false + yyq209[0] = x.Name != "" + var yynn209 int + if yyr209 || yy2arr209 { + r.EncodeArrayStart(1) + } else { + yynn209 = 0 + for _, b := range yyq209 { + if b { + yynn209++ + } + } + r.EncodeMapStart(yynn209) + yynn209 = 0 + } + if yyr209 || yy2arr209 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq209[0] { + yym211 := z.EncBinary() + _ = yym211 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq209[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym212 := z.EncBinary() + _ = yym212 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr209 || yy2arr209 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *APIVersion) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym213 := z.DecBinary() + _ = yym213 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct214 := r.ContainerType() + if yyct214 == codecSelferValueTypeMap1234 { + yyl214 := r.ReadMapStart() + if yyl214 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl214, d) + } + } else if yyct214 == codecSelferValueTypeArray1234 { + yyl214 := r.ReadArrayStart() + if yyl214 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl214, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *APIVersion) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys215Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys215Slc + var yyhl215 bool = l >= 0 + for yyj215 := 0; ; yyj215++ { + if yyhl215 { + if yyj215 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys215Slc = r.DecodeBytes(yys215Slc, true, true) + yys215 := string(yys215Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys215 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys215) + } // end switch yys215 + } // end for yyj215 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *APIVersion) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj217 int + var yyb217 bool + var yyhl217 bool = l >= 0 + yyj217++ + if yyhl217 { + yyb217 = yyj217 > l + } else { + yyb217 = r.CheckBreak() + } + if yyb217 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj217++ + if yyhl217 { + yyb217 = yyj217 > l + } else { + yyb217 = r.CheckBreak() + } + if yyb217 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj217-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceData) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym219 := z.EncBinary() + _ = yym219 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep220 := !z.EncBinary() + yy2arr220 := z.EncBasicHandle().StructToArray + var yyq220 [4]bool + _, _, _ = yysep220, yyq220, yy2arr220 + const yyr220 bool = false + yyq220[0] = x.Kind != "" + yyq220[1] = x.APIVersion != "" + yyq220[2] = true + yyq220[3] = len(x.Data) != 0 + var yynn220 int + if yyr220 || yy2arr220 { + r.EncodeArrayStart(4) + } else { + yynn220 = 0 + for _, b := range yyq220 { + if b { + yynn220++ + } + } + r.EncodeMapStart(yynn220) + yynn220 = 0 + } + if yyr220 || yy2arr220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq220[0] { + yym222 := z.EncBinary() + _ = yym222 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq220[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym223 := z.EncBinary() + _ = yym223 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr220 || yy2arr220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq220[1] { + yym225 := z.EncBinary() + _ = yym225 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq220[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym226 := z.EncBinary() + _ = yym226 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr220 || yy2arr220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq220[2] { + yy228 := &x.ObjectMeta + yy228.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq220[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy229 := &x.ObjectMeta + yy229.CodecEncodeSelf(e) + } + } + if yyr220 || yy2arr220 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq220[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym231 := z.EncBinary() + _ = yym231 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq220[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym232 := z.EncBinary() + _ = yym232 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + } + if yyr220 || yy2arr220 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceData) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym233 := z.DecBinary() + _ = yym233 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct234 := r.ContainerType() + if yyct234 == codecSelferValueTypeMap1234 { + yyl234 := r.ReadMapStart() + if yyl234 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl234, d) + } + } else if yyct234 == codecSelferValueTypeArray1234 { + yyl234 := r.ReadArrayStart() + if yyl234 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl234, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys235Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys235Slc + var yyhl235 bool = l >= 0 + for yyj235 := 0; ; yyj235++ { + if yyhl235 { + if yyj235 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys235Slc = r.DecodeBytes(yys235Slc, true, true) + yys235 := string(yys235Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys235 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv238 := &x.ObjectMeta + yyv238.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv239 := &x.Data + yym240 := z.DecBinary() + _ = yym240 + if false { + } else { + *yyv239 = r.DecodeBytes(*(*[]byte)(yyv239), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys235) + } // end switch yys235 + } // end for yyj235 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj241 int + var yyb241 bool + var yyhl241 bool = l >= 0 + yyj241++ + if yyhl241 { + yyb241 = yyj241 > l + } else { + yyb241 = r.CheckBreak() + } + if yyb241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj241++ + if yyhl241 { + yyb241 = yyj241 > l + } else { + yyb241 = r.CheckBreak() + } + if yyb241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj241++ + if yyhl241 { + yyb241 = yyj241 > l + } else { + yyb241 = r.CheckBreak() + } + if yyb241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv244 := &x.ObjectMeta + yyv244.CodecDecodeSelf(d) + } + yyj241++ + if yyhl241 { + yyb241 = yyj241 > l + } else { + yyb241 = r.CheckBreak() + } + if yyb241 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv245 := &x.Data + yym246 := z.DecBinary() + _ = yym246 + if false { + } else { + *yyv245 = r.DecodeBytes(*(*[]byte)(yyv245), false, false) + } + } + for { + yyj241++ + if yyhl241 { + yyb241 = yyj241 > l + } else { + yyb241 = r.CheckBreak() + } + if yyb241 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj241-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Deployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym247 := z.EncBinary() + _ = yym247 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep248 := !z.EncBinary() + yy2arr248 := z.EncBasicHandle().StructToArray + var yyq248 [5]bool + _, _, _ = yysep248, yyq248, yy2arr248 + const yyr248 bool = false + yyq248[0] = x.Kind != "" + yyq248[1] = x.APIVersion != "" + yyq248[2] = true + yyq248[3] = true + yyq248[4] = true + var yynn248 int + if yyr248 || yy2arr248 { + r.EncodeArrayStart(5) + } else { + yynn248 = 0 + for _, b := range yyq248 { + if b { + yynn248++ + } + } + r.EncodeMapStart(yynn248) + yynn248 = 0 + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq248[0] { + yym250 := z.EncBinary() + _ = yym250 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq248[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym251 := z.EncBinary() + _ = yym251 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq248[1] { + yym253 := z.EncBinary() + _ = yym253 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq248[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym254 := z.EncBinary() + _ = yym254 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq248[2] { + yy256 := &x.ObjectMeta + yy256.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq248[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy257 := &x.ObjectMeta + yy257.CodecEncodeSelf(e) + } + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq248[3] { + yy259 := &x.Spec + yy259.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq248[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy260 := &x.Spec + yy260.CodecEncodeSelf(e) + } + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq248[4] { + yy262 := &x.Status + yy262.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq248[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy263 := &x.Status + yy263.CodecEncodeSelf(e) + } + } + if yyr248 || yy2arr248 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Deployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym264 := z.DecBinary() + _ = yym264 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct265 := r.ContainerType() + if yyct265 == codecSelferValueTypeMap1234 { + yyl265 := r.ReadMapStart() + if yyl265 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl265, d) + } + } else if yyct265 == codecSelferValueTypeArray1234 { + yyl265 := r.ReadArrayStart() + if yyl265 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl265, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Deployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys266Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys266Slc + var yyhl266 bool = l >= 0 + for yyj266 := 0; ; yyj266++ { + if yyhl266 { + if yyj266 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys266Slc = r.DecodeBytes(yys266Slc, true, true) + yys266 := string(yys266Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys266 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv269 := &x.ObjectMeta + yyv269.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv270 := &x.Spec + yyv270.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv271 := &x.Status + yyv271.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys266) + } // end switch yys266 + } // end for yyj266 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Deployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj272 int + var yyb272 bool + var yyhl272 bool = l >= 0 + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv275 := &x.ObjectMeta + yyv275.CodecDecodeSelf(d) + } + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv276 := &x.Spec + yyv276.CodecDecodeSelf(d) + } + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv277 := &x.Status + yyv277.CodecDecodeSelf(d) + } + for { + yyj272++ + if yyhl272 { + yyb272 = yyj272 > l + } else { + yyb272 = r.CheckBreak() + } + if yyb272 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj272-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym278 := z.EncBinary() + _ = yym278 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep279 := !z.EncBinary() + yy2arr279 := z.EncBasicHandle().StructToArray + var yyq279 [8]bool + _, _, _ = yysep279, yyq279, yy2arr279 + const yyr279 bool = false + yyq279[0] = x.Replicas != 0 + yyq279[1] = x.Selector != nil + yyq279[3] = true + yyq279[4] = x.MinReadySeconds != 0 + yyq279[5] = x.RevisionHistoryLimit != nil + yyq279[6] = x.Paused != false + yyq279[7] = x.RollbackTo != nil + var yynn279 int + if yyr279 || yy2arr279 { + r.EncodeArrayStart(8) + } else { + yynn279 = 1 + for _, b := range yyq279 { + if b { + yynn279++ + } + } + r.EncodeMapStart(yynn279) + yynn279 = 0 + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[0] { + yym281 := z.EncBinary() + _ = yym281 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq279[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym282 := z.EncBinary() + _ = yym282 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym284 := z.EncBinary() + _ = yym284 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq279[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym285 := z.EncBinary() + _ = yym285 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy287 := &x.Template + yy287.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy288 := &x.Template + yy288.CodecEncodeSelf(e) + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[3] { + yy290 := &x.Strategy + yy290.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq279[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("strategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy291 := &x.Strategy + yy291.CodecEncodeSelf(e) + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[4] { + yym293 := z.EncBinary() + _ = yym293 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq279[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym294 := z.EncBinary() + _ = yym294 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[5] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy296 := *x.RevisionHistoryLimit + yym297 := z.EncBinary() + _ = yym297 + if false { + } else { + r.EncodeInt(int64(yy296)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq279[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy298 := *x.RevisionHistoryLimit + yym299 := z.EncBinary() + _ = yym299 + if false { + } else { + r.EncodeInt(int64(yy298)) + } + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[6] { + yym301 := z.EncBinary() + _ = yym301 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq279[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paused")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym302 := z.EncBinary() + _ = yym302 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq279[7] { + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq279[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } + } + if yyr279 || yy2arr279 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym304 := z.DecBinary() + _ = yym304 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct305 := r.ContainerType() + if yyct305 == codecSelferValueTypeMap1234 { + yyl305 := r.ReadMapStart() + if yyl305 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl305, d) + } + } else if yyct305 == codecSelferValueTypeArray1234 { + yyl305 := r.ReadArrayStart() + if yyl305 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl305, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys306Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys306Slc + var yyhl306 bool = l >= 0 + for yyj306 := 0; ; yyj306++ { + if yyhl306 { + if yyj306 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys306Slc = r.DecodeBytes(yys306Slc, true, true) + yys306 := string(yys306Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys306 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym309 := z.DecBinary() + _ = yym309 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv310 := &x.Template + yyv310.CodecDecodeSelf(d) + } + case "strategy": + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv311 := &x.Strategy + yyv311.CodecDecodeSelf(d) + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + x.MinReadySeconds = int32(r.DecodeInt(32)) + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym314 := z.DecBinary() + _ = yym314 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + case "paused": + if r.TryDecodeAsNil() { + x.Paused = false + } else { + x.Paused = bool(r.DecodeBool()) + } + case "rollbackTo": + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys306) + } // end switch yys306 + } // end for yyj306 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj317 int + var yyb317 bool + var yyhl317 bool = l >= 0 + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym320 := z.DecBinary() + _ = yym320 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv321 := &x.Template + yyv321.CodecDecodeSelf(d) + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv322 := &x.Strategy + yyv322.CodecDecodeSelf(d) + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + x.MinReadySeconds = int32(r.DecodeInt(32)) + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym325 := z.DecBinary() + _ = yym325 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paused = false + } else { + x.Paused = bool(r.DecodeBool()) + } + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + for { + yyj317++ + if yyhl317 { + yyb317 = yyj317 > l + } else { + yyb317 = r.CheckBreak() + } + if yyb317 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj317-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentRollback) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym328 := z.EncBinary() + _ = yym328 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep329 := !z.EncBinary() + yy2arr329 := z.EncBasicHandle().StructToArray + var yyq329 [5]bool + _, _, _ = yysep329, yyq329, yy2arr329 + const yyr329 bool = false + yyq329[0] = x.Kind != "" + yyq329[1] = x.APIVersion != "" + yyq329[3] = len(x.UpdatedAnnotations) != 0 + var yynn329 int + if yyr329 || yy2arr329 { + r.EncodeArrayStart(5) + } else { + yynn329 = 2 + for _, b := range yyq329 { + if b { + yynn329++ + } + } + r.EncodeMapStart(yynn329) + yynn329 = 0 + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq329[0] { + yym331 := z.EncBinary() + _ = yym331 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq329[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym332 := z.EncBinary() + _ = yym332 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq329[1] { + yym334 := z.EncBinary() + _ = yym334 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq329[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym335 := z.EncBinary() + _ = yym335 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym337 := z.EncBinary() + _ = yym337 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym338 := z.EncBinary() + _ = yym338 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq329[3] { + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym340 := z.EncBinary() + _ = yym340 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq329[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedAnnotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym341 := z.EncBinary() + _ = yym341 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy343 := &x.RollbackTo + yy343.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy344 := &x.RollbackTo + yy344.CodecEncodeSelf(e) + } + if yyr329 || yy2arr329 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentRollback) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym345 := z.DecBinary() + _ = yym345 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct346 := r.ContainerType() + if yyct346 == codecSelferValueTypeMap1234 { + yyl346 := r.ReadMapStart() + if yyl346 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl346, d) + } + } else if yyct346 == codecSelferValueTypeArray1234 { + yyl346 := r.ReadArrayStart() + if yyl346 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl346, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentRollback) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys347Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys347Slc + var yyhl347 bool = l >= 0 + for yyj347 := 0; ; yyj347++ { + if yyhl347 { + if yyj347 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys347Slc = r.DecodeBytes(yys347Slc, true, true) + yys347 := string(yys347Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys347 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "updatedAnnotations": + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv351 := &x.UpdatedAnnotations + yym352 := z.DecBinary() + _ = yym352 + if false { + } else { + z.F.DecMapStringStringX(yyv351, false, d) + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv353 := &x.RollbackTo + yyv353.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys347) + } // end switch yys347 + } // end for yyj347 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentRollback) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj354 int + var yyb354 bool + var yyhl354 bool = l >= 0 + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv358 := &x.UpdatedAnnotations + yym359 := z.DecBinary() + _ = yym359 + if false { + } else { + z.F.DecMapStringStringX(yyv358, false, d) + } + } + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv360 := &x.RollbackTo + yyv360.CodecDecodeSelf(d) + } + for { + yyj354++ + if yyhl354 { + yyb354 = yyj354 > l + } else { + yyb354 = r.CheckBreak() + } + if yyb354 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj354-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RollbackConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym361 := z.EncBinary() + _ = yym361 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep362 := !z.EncBinary() + yy2arr362 := z.EncBasicHandle().StructToArray + var yyq362 [1]bool + _, _, _ = yysep362, yyq362, yy2arr362 + const yyr362 bool = false + yyq362[0] = x.Revision != 0 + var yynn362 int + if yyr362 || yy2arr362 { + r.EncodeArrayStart(1) + } else { + yynn362 = 0 + for _, b := range yyq362 { + if b { + yynn362++ + } + } + r.EncodeMapStart(yynn362) + yynn362 = 0 + } + if yyr362 || yy2arr362 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq362[0] { + yym364 := z.EncBinary() + _ = yym364 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq362[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym365 := z.EncBinary() + _ = yym365 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } + } + if yyr362 || yy2arr362 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollbackConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym366 := z.DecBinary() + _ = yym366 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct367 := r.ContainerType() + if yyct367 == codecSelferValueTypeMap1234 { + yyl367 := r.ReadMapStart() + if yyl367 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl367, d) + } + } else if yyct367 == codecSelferValueTypeArray1234 { + yyl367 := r.ReadArrayStart() + if yyl367 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl367, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollbackConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys368Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys368Slc + var yyhl368 bool = l >= 0 + for yyj368 := 0; ; yyj368++ { + if yyhl368 { + if yyj368 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys368Slc = r.DecodeBytes(yys368Slc, true, true) + yys368 := string(yys368Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys368 { + case "revision": + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + x.Revision = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys368) + } // end switch yys368 + } // end for yyj368 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollbackConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj370 int + var yyb370 bool + var yyhl370 bool = l >= 0 + yyj370++ + if yyhl370 { + yyb370 = yyj370 > l + } else { + yyb370 = r.CheckBreak() + } + if yyb370 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + x.Revision = int64(r.DecodeInt(64)) + } + for { + yyj370++ + if yyhl370 { + yyb370 = yyj370 > l + } else { + yyb370 = r.CheckBreak() + } + if yyb370 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj370-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym372 := z.EncBinary() + _ = yym372 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep373 := !z.EncBinary() + yy2arr373 := z.EncBasicHandle().StructToArray + var yyq373 [2]bool + _, _, _ = yysep373, yyq373, yy2arr373 + const yyr373 bool = false + yyq373[0] = x.Type != "" + yyq373[1] = x.RollingUpdate != nil + var yynn373 int + if yyr373 || yy2arr373 { + r.EncodeArrayStart(2) + } else { + yynn373 = 0 + for _, b := range yyq373 { + if b { + yynn373++ + } + } + r.EncodeMapStart(yynn373) + yynn373 = 0 + } + if yyr373 || yy2arr373 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq373[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq373[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr373 || yy2arr373 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq373[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq373[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr373 || yy2arr373 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym376 := z.DecBinary() + _ = yym376 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct377 := r.ContainerType() + if yyct377 == codecSelferValueTypeMap1234 { + yyl377 := r.ReadMapStart() + if yyl377 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl377, d) + } + } else if yyct377 == codecSelferValueTypeArray1234 { + yyl377 := r.ReadArrayStart() + if yyl377 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl377, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys378Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys378Slc + var yyhl378 bool = l >= 0 + for yyj378 := 0; ; yyj378++ { + if yyhl378 { + if yyj378 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys378Slc = r.DecodeBytes(yys378Slc, true, true) + yys378 := string(yys378Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys378 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = DeploymentStrategyType(r.DecodeString()) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys378) + } // end switch yys378 + } // end for yyj378 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj381 int + var yyb381 bool + var yyhl381 bool = l >= 0 + yyj381++ + if yyhl381 { + yyb381 = yyj381 > l + } else { + yyb381 = r.CheckBreak() + } + if yyb381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = DeploymentStrategyType(r.DecodeString()) + } + yyj381++ + if yyhl381 { + yyb381 = yyj381 > l + } else { + yyb381 = r.CheckBreak() + } + if yyb381 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj381++ + if yyhl381 { + yyb381 = yyj381 > l + } else { + yyb381 = r.CheckBreak() + } + if yyb381 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj381-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym384 := z.EncBinary() + _ = yym384 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym385 := z.DecBinary() + _ = yym385 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateDeployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym386 := z.EncBinary() + _ = yym386 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep387 := !z.EncBinary() + yy2arr387 := z.EncBasicHandle().StructToArray + var yyq387 [2]bool + _, _, _ = yysep387, yyq387, yy2arr387 + const yyr387 bool = false + yyq387[0] = true + yyq387[1] = true + var yynn387 int + if yyr387 || yy2arr387 { + r.EncodeArrayStart(2) + } else { + yynn387 = 0 + for _, b := range yyq387 { + if b { + yynn387++ + } + } + r.EncodeMapStart(yynn387) + yynn387 = 0 + } + if yyr387 || yy2arr387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq387[0] { + yy389 := &x.MaxUnavailable + yym390 := z.EncBinary() + _ = yym390 + if false { + } else if z.HasExtensions() && z.EncExt(yy389) { + } else if !yym390 && z.IsJSONHandle() { + z.EncJSONMarshal(yy389) + } else { + z.EncFallback(yy389) + } + } else { + r.EncodeNil() + } + } else { + if yyq387[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy391 := &x.MaxUnavailable + yym392 := z.EncBinary() + _ = yym392 + if false { + } else if z.HasExtensions() && z.EncExt(yy391) { + } else if !yym392 && z.IsJSONHandle() { + z.EncJSONMarshal(yy391) + } else { + z.EncFallback(yy391) + } + } + } + if yyr387 || yy2arr387 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq387[1] { + yy394 := &x.MaxSurge + yym395 := z.EncBinary() + _ = yym395 + if false { + } else if z.HasExtensions() && z.EncExt(yy394) { + } else if !yym395 && z.IsJSONHandle() { + z.EncJSONMarshal(yy394) + } else { + z.EncFallback(yy394) + } + } else { + r.EncodeNil() + } + } else { + if yyq387[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxSurge")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy396 := &x.MaxSurge + yym397 := z.EncBinary() + _ = yym397 + if false { + } else if z.HasExtensions() && z.EncExt(yy396) { + } else if !yym397 && z.IsJSONHandle() { + z.EncJSONMarshal(yy396) + } else { + z.EncFallback(yy396) + } + } + } + if yyr387 || yy2arr387 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateDeployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym398 := z.DecBinary() + _ = yym398 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct399 := r.ContainerType() + if yyct399 == codecSelferValueTypeMap1234 { + yyl399 := r.ReadMapStart() + if yyl399 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl399, d) + } + } else if yyct399 == codecSelferValueTypeArray1234 { + yyl399 := r.ReadArrayStart() + if yyl399 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl399, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys400Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys400Slc + var yyhl400 bool = l >= 0 + for yyj400 := 0; ; yyj400++ { + if yyhl400 { + if yyj400 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys400Slc = r.DecodeBytes(yys400Slc, true, true) + yys400 := string(yys400Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys400 { + case "maxUnavailable": + if r.TryDecodeAsNil() { + x.MaxUnavailable = pkg5_intstr.IntOrString{} + } else { + yyv401 := &x.MaxUnavailable + yym402 := z.DecBinary() + _ = yym402 + if false { + } else if z.HasExtensions() && z.DecExt(yyv401) { + } else if !yym402 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv401) + } else { + z.DecFallback(yyv401, false) + } + } + case "maxSurge": + if r.TryDecodeAsNil() { + x.MaxSurge = pkg5_intstr.IntOrString{} + } else { + yyv403 := &x.MaxSurge + yym404 := z.DecBinary() + _ = yym404 + if false { + } else if z.HasExtensions() && z.DecExt(yyv403) { + } else if !yym404 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv403) + } else { + z.DecFallback(yyv403, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys400) + } // end switch yys400 + } // end for yyj400 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj405 int + var yyb405 bool + var yyhl405 bool = l >= 0 + yyj405++ + if yyhl405 { + yyb405 = yyj405 > l + } else { + yyb405 = r.CheckBreak() + } + if yyb405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxUnavailable = pkg5_intstr.IntOrString{} + } else { + yyv406 := &x.MaxUnavailable + yym407 := z.DecBinary() + _ = yym407 + if false { + } else if z.HasExtensions() && z.DecExt(yyv406) { + } else if !yym407 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv406) + } else { + z.DecFallback(yyv406, false) + } + } + yyj405++ + if yyhl405 { + yyb405 = yyj405 > l + } else { + yyb405 = r.CheckBreak() + } + if yyb405 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxSurge = pkg5_intstr.IntOrString{} + } else { + yyv408 := &x.MaxSurge + yym409 := z.DecBinary() + _ = yym409 + if false { + } else if z.HasExtensions() && z.DecExt(yyv408) { + } else if !yym409 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv408) + } else { + z.DecFallback(yyv408, false) + } + } + for { + yyj405++ + if yyhl405 { + yyb405 = yyj405 > l + } else { + yyb405 = r.CheckBreak() + } + if yyb405 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj405-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym410 := z.EncBinary() + _ = yym410 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep411 := !z.EncBinary() + yy2arr411 := z.EncBasicHandle().StructToArray + var yyq411 [5]bool + _, _, _ = yysep411, yyq411, yy2arr411 + const yyr411 bool = false + yyq411[0] = x.ObservedGeneration != 0 + yyq411[1] = x.Replicas != 0 + yyq411[2] = x.UpdatedReplicas != 0 + yyq411[3] = x.AvailableReplicas != 0 + yyq411[4] = x.UnavailableReplicas != 0 + var yynn411 int + if yyr411 || yy2arr411 { + r.EncodeArrayStart(5) + } else { + yynn411 = 0 + for _, b := range yyq411 { + if b { + yynn411++ + } + } + r.EncodeMapStart(yynn411) + yynn411 = 0 + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq411[0] { + yym413 := z.EncBinary() + _ = yym413 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq411[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym414 := z.EncBinary() + _ = yym414 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq411[1] { + yym416 := z.EncBinary() + _ = yym416 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq411[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym417 := z.EncBinary() + _ = yym417 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq411[2] { + yym419 := z.EncBinary() + _ = yym419 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq411[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym420 := z.EncBinary() + _ = yym420 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq411[3] { + yym422 := z.EncBinary() + _ = yym422 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq411[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym423 := z.EncBinary() + _ = yym423 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq411[4] { + yym425 := z.EncBinary() + _ = yym425 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq411[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unavailableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym426 := z.EncBinary() + _ = yym426 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } + } + if yyr411 || yy2arr411 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym427 := z.DecBinary() + _ = yym427 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct428 := r.ContainerType() + if yyct428 == codecSelferValueTypeMap1234 { + yyl428 := r.ReadMapStart() + if yyl428 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl428, d) + } + } else if yyct428 == codecSelferValueTypeArray1234 { + yyl428 := r.ReadArrayStart() + if yyl428 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl428, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys429Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys429Slc + var yyhl429 bool = l >= 0 + for yyj429 := 0; ; yyj429++ { + if yyhl429 { + if yyj429 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys429Slc = r.DecodeBytes(yys429Slc, true, true) + yys429 := string(yys429Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys429 { + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "updatedReplicas": + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + x.UpdatedReplicas = int32(r.DecodeInt(32)) + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + x.AvailableReplicas = int32(r.DecodeInt(32)) + } + case "unavailableReplicas": + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + x.UnavailableReplicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys429) + } // end switch yys429 + } // end for yyj429 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj435 int + var yyb435 bool + var yyhl435 bool = l >= 0 + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + x.UpdatedReplicas = int32(r.DecodeInt(32)) + } + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + x.AvailableReplicas = int32(r.DecodeInt(32)) + } + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + x.UnavailableReplicas = int32(r.DecodeInt(32)) + } + for { + yyj435++ + if yyhl435 { + yyb435 = yyj435 > l + } else { + yyb435 = r.CheckBreak() + } + if yyb435 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj435-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym441 := z.EncBinary() + _ = yym441 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep442 := !z.EncBinary() + yy2arr442 := z.EncBasicHandle().StructToArray + var yyq442 [4]bool + _, _, _ = yysep442, yyq442, yy2arr442 + const yyr442 bool = false + yyq442[0] = x.Kind != "" + yyq442[1] = x.APIVersion != "" + yyq442[2] = true + var yynn442 int + if yyr442 || yy2arr442 { + r.EncodeArrayStart(4) + } else { + yynn442 = 1 + for _, b := range yyq442 { + if b { + yynn442++ + } + } + r.EncodeMapStart(yynn442) + yynn442 = 0 + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[0] { + yym444 := z.EncBinary() + _ = yym444 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym445 := z.EncBinary() + _ = yym445 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[1] { + yym447 := z.EncBinary() + _ = yym447 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq442[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym448 := z.EncBinary() + _ = yym448 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq442[2] { + yy450 := &x.ListMeta + yym451 := z.EncBinary() + _ = yym451 + if false { + } else if z.HasExtensions() && z.EncExt(yy450) { + } else { + z.EncFallback(yy450) + } + } else { + r.EncodeNil() + } + } else { + if yyq442[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy452 := &x.ListMeta + yym453 := z.EncBinary() + _ = yym453 + if false { + } else if z.HasExtensions() && z.EncExt(yy452) { + } else { + z.EncFallback(yy452) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym455 := z.EncBinary() + _ = yym455 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym456 := z.EncBinary() + _ = yym456 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } + if yyr442 || yy2arr442 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym457 := z.DecBinary() + _ = yym457 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct458 := r.ContainerType() + if yyct458 == codecSelferValueTypeMap1234 { + yyl458 := r.ReadMapStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl458, d) + } + } else if yyct458 == codecSelferValueTypeArray1234 { + yyl458 := r.ReadArrayStart() + if yyl458 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl458, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys459Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys459Slc + var yyhl459 bool = l >= 0 + for yyj459 := 0; ; yyj459++ { + if yyhl459 { + if yyj459 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys459Slc = r.DecodeBytes(yys459Slc, true, true) + yys459 := string(yys459Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys459 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv462 := &x.ListMeta + yym463 := z.DecBinary() + _ = yym463 + if false { + } else if z.HasExtensions() && z.DecExt(yyv462) { + } else { + z.DecFallback(yyv462, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv464 := &x.Items + yym465 := z.DecBinary() + _ = yym465 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv464), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys459) + } // end switch yys459 + } // end for yyj459 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj466 int + var yyb466 bool + var yyhl466 bool = l >= 0 + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv469 := &x.ListMeta + yym470 := z.DecBinary() + _ = yym470 + if false { + } else if z.HasExtensions() && z.DecExt(yyv469) { + } else { + z.DecFallback(yyv469, false) + } + } + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv471 := &x.Items + yym472 := z.DecBinary() + _ = yym472 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv471), d) + } + } + for { + yyj466++ + if yyhl466 { + yyb466 = yyj466 > l + } else { + yyb466 = r.CheckBreak() + } + if yyb466 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj466-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym473 := z.EncBinary() + _ = yym473 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep474 := !z.EncBinary() + yy2arr474 := z.EncBasicHandle().StructToArray + var yyq474 [2]bool + _, _, _ = yysep474, yyq474, yy2arr474 + const yyr474 bool = false + yyq474[0] = x.Selector != nil + var yynn474 int + if yyr474 || yy2arr474 { + r.EncodeArrayStart(2) + } else { + yynn474 = 1 + for _, b := range yyq474 { + if b { + yynn474++ + } + } + r.EncodeMapStart(yynn474) + yynn474 = 0 + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq474[0] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym476 := z.EncBinary() + _ = yym476 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq474[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym477 := z.EncBinary() + _ = yym477 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy479 := &x.Template + yy479.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy480 := &x.Template + yy480.CodecEncodeSelf(e) + } + if yyr474 || yy2arr474 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym481 := z.DecBinary() + _ = yym481 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct482 := r.ContainerType() + if yyct482 == codecSelferValueTypeMap1234 { + yyl482 := r.ReadMapStart() + if yyl482 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl482, d) + } + } else if yyct482 == codecSelferValueTypeArray1234 { + yyl482 := r.ReadArrayStart() + if yyl482 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl482, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys483Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys483Slc + var yyhl483 bool = l >= 0 + for yyj483 := 0; ; yyj483++ { + if yyhl483 { + if yyj483 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys483Slc = r.DecodeBytes(yys483Slc, true, true) + yys483 := string(yys483Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys483 { + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym485 := z.DecBinary() + _ = yym485 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv486 := &x.Template + yyv486.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys483) + } // end switch yys483 + } // end for yyj483 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj487 int + var yyb487 bool + var yyhl487 bool = l >= 0 + yyj487++ + if yyhl487 { + yyb487 = yyj487 > l + } else { + yyb487 = r.CheckBreak() + } + if yyb487 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym489 := z.DecBinary() + _ = yym489 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj487++ + if yyhl487 { + yyb487 = yyj487 > l + } else { + yyb487 = r.CheckBreak() + } + if yyb487 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv490 := &x.Template + yyv490.CodecDecodeSelf(d) + } + for { + yyj487++ + if yyhl487 { + yyb487 = yyj487 > l + } else { + yyb487 = r.CheckBreak() + } + if yyb487 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj487-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym491 := z.EncBinary() + _ = yym491 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep492 := !z.EncBinary() + yy2arr492 := z.EncBasicHandle().StructToArray + var yyq492 [3]bool + _, _, _ = yysep492, yyq492, yy2arr492 + const yyr492 bool = false + var yynn492 int + if yyr492 || yy2arr492 { + r.EncodeArrayStart(3) + } else { + yynn492 = 3 + for _, b := range yyq492 { + if b { + yynn492++ + } + } + r.EncodeMapStart(yynn492) + yynn492 = 0 + } + if yyr492 || yy2arr492 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym494 := z.EncBinary() + _ = yym494 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym495 := z.EncBinary() + _ = yym495 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } + if yyr492 || yy2arr492 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym497 := z.EncBinary() + _ = yym497 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberMisscheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym498 := z.EncBinary() + _ = yym498 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } + if yyr492 || yy2arr492 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym500 := z.EncBinary() + _ = yym500 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym501 := z.EncBinary() + _ = yym501 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } + if yyr492 || yy2arr492 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym502 := z.DecBinary() + _ = yym502 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct503 := r.ContainerType() + if yyct503 == codecSelferValueTypeMap1234 { + yyl503 := r.ReadMapStart() + if yyl503 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl503, d) + } + } else if yyct503 == codecSelferValueTypeArray1234 { + yyl503 := r.ReadArrayStart() + if yyl503 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl503, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys504Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys504Slc + var yyhl504 bool = l >= 0 + for yyj504 := 0; ; yyj504++ { + if yyhl504 { + if yyj504 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys504Slc = r.DecodeBytes(yys504Slc, true, true) + yys504 := string(yys504Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys504 { + case "currentNumberScheduled": + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + x.CurrentNumberScheduled = int32(r.DecodeInt(32)) + } + case "numberMisscheduled": + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + x.NumberMisscheduled = int32(r.DecodeInt(32)) + } + case "desiredNumberScheduled": + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + x.DesiredNumberScheduled = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys504) + } // end switch yys504 + } // end for yyj504 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj508 int + var yyb508 bool + var yyhl508 bool = l >= 0 + yyj508++ + if yyhl508 { + yyb508 = yyj508 > l + } else { + yyb508 = r.CheckBreak() + } + if yyb508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + x.CurrentNumberScheduled = int32(r.DecodeInt(32)) + } + yyj508++ + if yyhl508 { + yyb508 = yyj508 > l + } else { + yyb508 = r.CheckBreak() + } + if yyb508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + x.NumberMisscheduled = int32(r.DecodeInt(32)) + } + yyj508++ + if yyhl508 { + yyb508 = yyj508 > l + } else { + yyb508 = r.CheckBreak() + } + if yyb508 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + x.DesiredNumberScheduled = int32(r.DecodeInt(32)) + } + for { + yyj508++ + if yyhl508 { + yyb508 = yyj508 > l + } else { + yyb508 = r.CheckBreak() + } + if yyb508 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj508-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym512 := z.EncBinary() + _ = yym512 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep513 := !z.EncBinary() + yy2arr513 := z.EncBasicHandle().StructToArray + var yyq513 [5]bool + _, _, _ = yysep513, yyq513, yy2arr513 + const yyr513 bool = false + yyq513[0] = x.Kind != "" + yyq513[1] = x.APIVersion != "" + yyq513[2] = true + yyq513[3] = true + yyq513[4] = true + var yynn513 int + if yyr513 || yy2arr513 { + r.EncodeArrayStart(5) + } else { + yynn513 = 0 + for _, b := range yyq513 { + if b { + yynn513++ + } + } + r.EncodeMapStart(yynn513) + yynn513 = 0 + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq513[0] { + yym515 := z.EncBinary() + _ = yym515 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq513[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym516 := z.EncBinary() + _ = yym516 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq513[1] { + yym518 := z.EncBinary() + _ = yym518 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq513[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym519 := z.EncBinary() + _ = yym519 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq513[2] { + yy521 := &x.ObjectMeta + yy521.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq513[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy522 := &x.ObjectMeta + yy522.CodecEncodeSelf(e) + } + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq513[3] { + yy524 := &x.Spec + yy524.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq513[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy525 := &x.Spec + yy525.CodecEncodeSelf(e) + } + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq513[4] { + yy527 := &x.Status + yy527.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq513[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy528 := &x.Status + yy528.CodecEncodeSelf(e) + } + } + if yyr513 || yy2arr513 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym529 := z.DecBinary() + _ = yym529 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct530 := r.ContainerType() + if yyct530 == codecSelferValueTypeMap1234 { + yyl530 := r.ReadMapStart() + if yyl530 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl530, d) + } + } else if yyct530 == codecSelferValueTypeArray1234 { + yyl530 := r.ReadArrayStart() + if yyl530 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl530, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys531Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys531Slc + var yyhl531 bool = l >= 0 + for yyj531 := 0; ; yyj531++ { + if yyhl531 { + if yyj531 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys531Slc = r.DecodeBytes(yys531Slc, true, true) + yys531 := string(yys531Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys531 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv534 := &x.ObjectMeta + yyv534.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv535 := &x.Spec + yyv535.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv536 := &x.Status + yyv536.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys531) + } // end switch yys531 + } // end for yyj531 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj537 int + var yyb537 bool + var yyhl537 bool = l >= 0 + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv540 := &x.ObjectMeta + yyv540.CodecDecodeSelf(d) + } + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv541 := &x.Spec + yyv541.CodecDecodeSelf(d) + } + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv542 := &x.Status + yyv542.CodecDecodeSelf(d) + } + for { + yyj537++ + if yyhl537 { + yyb537 = yyj537 > l + } else { + yyb537 = r.CheckBreak() + } + if yyb537 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj537-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym543 := z.EncBinary() + _ = yym543 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep544 := !z.EncBinary() + yy2arr544 := z.EncBasicHandle().StructToArray + var yyq544 [4]bool + _, _, _ = yysep544, yyq544, yy2arr544 + const yyr544 bool = false + yyq544[0] = x.Kind != "" + yyq544[1] = x.APIVersion != "" + yyq544[2] = true + var yynn544 int + if yyr544 || yy2arr544 { + r.EncodeArrayStart(4) + } else { + yynn544 = 1 + for _, b := range yyq544 { + if b { + yynn544++ + } + } + r.EncodeMapStart(yynn544) + yynn544 = 0 + } + if yyr544 || yy2arr544 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq544[0] { + yym546 := z.EncBinary() + _ = yym546 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq544[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym547 := z.EncBinary() + _ = yym547 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr544 || yy2arr544 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq544[1] { + yym549 := z.EncBinary() + _ = yym549 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq544[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym550 := z.EncBinary() + _ = yym550 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr544 || yy2arr544 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq544[2] { + yy552 := &x.ListMeta + yym553 := z.EncBinary() + _ = yym553 + if false { + } else if z.HasExtensions() && z.EncExt(yy552) { + } else { + z.EncFallback(yy552) + } + } else { + r.EncodeNil() + } + } else { + if yyq544[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy554 := &x.ListMeta + yym555 := z.EncBinary() + _ = yym555 + if false { + } else if z.HasExtensions() && z.EncExt(yy554) { + } else { + z.EncFallback(yy554) + } + } + } + if yyr544 || yy2arr544 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym557 := z.EncBinary() + _ = yym557 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym558 := z.EncBinary() + _ = yym558 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } + if yyr544 || yy2arr544 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym559 := z.DecBinary() + _ = yym559 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct560 := r.ContainerType() + if yyct560 == codecSelferValueTypeMap1234 { + yyl560 := r.ReadMapStart() + if yyl560 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl560, d) + } + } else if yyct560 == codecSelferValueTypeArray1234 { + yyl560 := r.ReadArrayStart() + if yyl560 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl560, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys561Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys561Slc + var yyhl561 bool = l >= 0 + for yyj561 := 0; ; yyj561++ { + if yyhl561 { + if yyj561 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys561Slc = r.DecodeBytes(yys561Slc, true, true) + yys561 := string(yys561Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys561 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv564 := &x.ListMeta + yym565 := z.DecBinary() + _ = yym565 + if false { + } else if z.HasExtensions() && z.DecExt(yyv564) { + } else { + z.DecFallback(yyv564, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv566 := &x.Items + yym567 := z.DecBinary() + _ = yym567 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv566), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys561) + } // end switch yys561 + } // end for yyj561 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj568 int + var yyb568 bool + var yyhl568 bool = l >= 0 + yyj568++ + if yyhl568 { + yyb568 = yyj568 > l + } else { + yyb568 = r.CheckBreak() + } + if yyb568 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj568++ + if yyhl568 { + yyb568 = yyj568 > l + } else { + yyb568 = r.CheckBreak() + } + if yyb568 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj568++ + if yyhl568 { + yyb568 = yyj568 > l + } else { + yyb568 = r.CheckBreak() + } + if yyb568 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv571 := &x.ListMeta + yym572 := z.DecBinary() + _ = yym572 + if false { + } else if z.HasExtensions() && z.DecExt(yyv571) { + } else { + z.DecFallback(yyv571, false) + } + } + yyj568++ + if yyhl568 { + yyb568 = yyj568 > l + } else { + yyb568 = r.CheckBreak() + } + if yyb568 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv573 := &x.Items + yym574 := z.DecBinary() + _ = yym574 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv573), d) + } + } + for { + yyj568++ + if yyhl568 { + yyb568 = yyj568 > l + } else { + yyb568 = r.CheckBreak() + } + if yyb568 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj568-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceDataList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym575 := z.EncBinary() + _ = yym575 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep576 := !z.EncBinary() + yy2arr576 := z.EncBasicHandle().StructToArray + var yyq576 [4]bool + _, _, _ = yysep576, yyq576, yy2arr576 + const yyr576 bool = false + yyq576[0] = x.Kind != "" + yyq576[1] = x.APIVersion != "" + yyq576[2] = true + var yynn576 int + if yyr576 || yy2arr576 { + r.EncodeArrayStart(4) + } else { + yynn576 = 1 + for _, b := range yyq576 { + if b { + yynn576++ + } + } + r.EncodeMapStart(yynn576) + yynn576 = 0 + } + if yyr576 || yy2arr576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq576[0] { + yym578 := z.EncBinary() + _ = yym578 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq576[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym579 := z.EncBinary() + _ = yym579 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr576 || yy2arr576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq576[1] { + yym581 := z.EncBinary() + _ = yym581 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq576[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym582 := z.EncBinary() + _ = yym582 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr576 || yy2arr576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq576[2] { + yy584 := &x.ListMeta + yym585 := z.EncBinary() + _ = yym585 + if false { + } else if z.HasExtensions() && z.EncExt(yy584) { + } else { + z.EncFallback(yy584) + } + } else { + r.EncodeNil() + } + } else { + if yyq576[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy586 := &x.ListMeta + yym587 := z.EncBinary() + _ = yym587 + if false { + } else if z.HasExtensions() && z.EncExt(yy586) { + } else { + z.EncFallback(yy586) + } + } + } + if yyr576 || yy2arr576 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym589 := z.EncBinary() + _ = yym589 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym590 := z.EncBinary() + _ = yym590 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } + if yyr576 || yy2arr576 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceDataList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym591 := z.DecBinary() + _ = yym591 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct592 := r.ContainerType() + if yyct592 == codecSelferValueTypeMap1234 { + yyl592 := r.ReadMapStart() + if yyl592 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl592, d) + } + } else if yyct592 == codecSelferValueTypeArray1234 { + yyl592 := r.ReadArrayStart() + if yyl592 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl592, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys593Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys593Slc + var yyhl593 bool = l >= 0 + for yyj593 := 0; ; yyj593++ { + if yyhl593 { + if yyj593 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys593Slc = r.DecodeBytes(yys593Slc, true, true) + yys593 := string(yys593Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys593 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv596 := &x.ListMeta + yym597 := z.DecBinary() + _ = yym597 + if false { + } else if z.HasExtensions() && z.DecExt(yyv596) { + } else { + z.DecFallback(yyv596, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv598 := &x.Items + yym599 := z.DecBinary() + _ = yym599 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv598), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys593) + } // end switch yys593 + } // end for yyj593 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj600 int + var yyb600 bool + var yyhl600 bool = l >= 0 + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv603 := &x.ListMeta + yym604 := z.DecBinary() + _ = yym604 + if false { + } else if z.HasExtensions() && z.DecExt(yyv603) { + } else { + z.DecFallback(yyv603, false) + } + } + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv605 := &x.Items + yym606 := z.DecBinary() + _ = yym606 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv605), d) + } + } + for { + yyj600++ + if yyhl600 { + yyb600 = yyj600 > l + } else { + yyb600 = r.CheckBreak() + } + if yyb600 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj600-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Ingress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym607 := z.EncBinary() + _ = yym607 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep608 := !z.EncBinary() + yy2arr608 := z.EncBasicHandle().StructToArray + var yyq608 [5]bool + _, _, _ = yysep608, yyq608, yy2arr608 + const yyr608 bool = false + yyq608[0] = x.Kind != "" + yyq608[1] = x.APIVersion != "" + yyq608[2] = true + yyq608[3] = true + yyq608[4] = true + var yynn608 int + if yyr608 || yy2arr608 { + r.EncodeArrayStart(5) + } else { + yynn608 = 0 + for _, b := range yyq608 { + if b { + yynn608++ + } + } + r.EncodeMapStart(yynn608) + yynn608 = 0 + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq608[0] { + yym610 := z.EncBinary() + _ = yym610 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq608[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym611 := z.EncBinary() + _ = yym611 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq608[1] { + yym613 := z.EncBinary() + _ = yym613 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq608[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym614 := z.EncBinary() + _ = yym614 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq608[2] { + yy616 := &x.ObjectMeta + yy616.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq608[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy617 := &x.ObjectMeta + yy617.CodecEncodeSelf(e) + } + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq608[3] { + yy619 := &x.Spec + yy619.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq608[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy620 := &x.Spec + yy620.CodecEncodeSelf(e) + } + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq608[4] { + yy622 := &x.Status + yy622.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq608[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy623 := &x.Status + yy623.CodecEncodeSelf(e) + } + } + if yyr608 || yy2arr608 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Ingress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym624 := z.DecBinary() + _ = yym624 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct625 := r.ContainerType() + if yyct625 == codecSelferValueTypeMap1234 { + yyl625 := r.ReadMapStart() + if yyl625 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl625, d) + } + } else if yyct625 == codecSelferValueTypeArray1234 { + yyl625 := r.ReadArrayStart() + if yyl625 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl625, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Ingress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys626Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys626Slc + var yyhl626 bool = l >= 0 + for yyj626 := 0; ; yyj626++ { + if yyhl626 { + if yyj626 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys626Slc = r.DecodeBytes(yys626Slc, true, true) + yys626 := string(yys626Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys626 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv629 := &x.ObjectMeta + yyv629.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv630 := &x.Spec + yyv630.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv631 := &x.Status + yyv631.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys626) + } // end switch yys626 + } // end for yyj626 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Ingress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj632 int + var yyb632 bool + var yyhl632 bool = l >= 0 + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv635 := &x.ObjectMeta + yyv635.CodecDecodeSelf(d) + } + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv636 := &x.Spec + yyv636.CodecDecodeSelf(d) + } + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv637 := &x.Status + yyv637.CodecDecodeSelf(d) + } + for { + yyj632++ + if yyhl632 { + yyb632 = yyj632 > l + } else { + yyb632 = r.CheckBreak() + } + if yyb632 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj632-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym638 := z.EncBinary() + _ = yym638 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep639 := !z.EncBinary() + yy2arr639 := z.EncBasicHandle().StructToArray + var yyq639 [4]bool + _, _, _ = yysep639, yyq639, yy2arr639 + const yyr639 bool = false + yyq639[0] = x.Kind != "" + yyq639[1] = x.APIVersion != "" + yyq639[2] = true + var yynn639 int + if yyr639 || yy2arr639 { + r.EncodeArrayStart(4) + } else { + yynn639 = 1 + for _, b := range yyq639 { + if b { + yynn639++ + } + } + r.EncodeMapStart(yynn639) + yynn639 = 0 + } + if yyr639 || yy2arr639 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq639[0] { + yym641 := z.EncBinary() + _ = yym641 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq639[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym642 := z.EncBinary() + _ = yym642 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr639 || yy2arr639 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq639[1] { + yym644 := z.EncBinary() + _ = yym644 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq639[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym645 := z.EncBinary() + _ = yym645 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr639 || yy2arr639 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq639[2] { + yy647 := &x.ListMeta + yym648 := z.EncBinary() + _ = yym648 + if false { + } else if z.HasExtensions() && z.EncExt(yy647) { + } else { + z.EncFallback(yy647) + } + } else { + r.EncodeNil() + } + } else { + if yyq639[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy649 := &x.ListMeta + yym650 := z.EncBinary() + _ = yym650 + if false { + } else if z.HasExtensions() && z.EncExt(yy649) { + } else { + z.EncFallback(yy649) + } + } + } + if yyr639 || yy2arr639 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym652 := z.EncBinary() + _ = yym652 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym653 := z.EncBinary() + _ = yym653 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } + if yyr639 || yy2arr639 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym654 := z.DecBinary() + _ = yym654 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct655 := r.ContainerType() + if yyct655 == codecSelferValueTypeMap1234 { + yyl655 := r.ReadMapStart() + if yyl655 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl655, d) + } + } else if yyct655 == codecSelferValueTypeArray1234 { + yyl655 := r.ReadArrayStart() + if yyl655 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl655, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys656Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys656Slc + var yyhl656 bool = l >= 0 + for yyj656 := 0; ; yyj656++ { + if yyhl656 { + if yyj656 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys656Slc = r.DecodeBytes(yys656Slc, true, true) + yys656 := string(yys656Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys656 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv659 := &x.ListMeta + yym660 := z.DecBinary() + _ = yym660 + if false { + } else if z.HasExtensions() && z.DecExt(yyv659) { + } else { + z.DecFallback(yyv659, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv661 := &x.Items + yym662 := z.DecBinary() + _ = yym662 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv661), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys656) + } // end switch yys656 + } // end for yyj656 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj663 int + var yyb663 bool + var yyhl663 bool = l >= 0 + yyj663++ + if yyhl663 { + yyb663 = yyj663 > l + } else { + yyb663 = r.CheckBreak() + } + if yyb663 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj663++ + if yyhl663 { + yyb663 = yyj663 > l + } else { + yyb663 = r.CheckBreak() + } + if yyb663 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj663++ + if yyhl663 { + yyb663 = yyj663 > l + } else { + yyb663 = r.CheckBreak() + } + if yyb663 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv666 := &x.ListMeta + yym667 := z.DecBinary() + _ = yym667 + if false { + } else if z.HasExtensions() && z.DecExt(yyv666) { + } else { + z.DecFallback(yyv666, false) + } + } + yyj663++ + if yyhl663 { + yyb663 = yyj663 > l + } else { + yyb663 = r.CheckBreak() + } + if yyb663 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv668 := &x.Items + yym669 := z.DecBinary() + _ = yym669 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv668), d) + } + } + for { + yyj663++ + if yyhl663 { + yyb663 = yyj663 > l + } else { + yyb663 = r.CheckBreak() + } + if yyb663 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj663-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym670 := z.EncBinary() + _ = yym670 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep671 := !z.EncBinary() + yy2arr671 := z.EncBasicHandle().StructToArray + var yyq671 [3]bool + _, _, _ = yysep671, yyq671, yy2arr671 + const yyr671 bool = false + yyq671[0] = x.Backend != nil + yyq671[1] = len(x.TLS) != 0 + yyq671[2] = len(x.Rules) != 0 + var yynn671 int + if yyr671 || yy2arr671 { + r.EncodeArrayStart(3) + } else { + yynn671 = 0 + for _, b := range yyq671 { + if b { + yynn671++ + } + } + r.EncodeMapStart(yynn671) + yynn671 = 0 + } + if yyr671 || yy2arr671 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq671[0] { + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq671[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } + } + if yyr671 || yy2arr671 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq671[1] { + if x.TLS == nil { + r.EncodeNil() + } else { + yym674 := z.EncBinary() + _ = yym674 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq671[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tls")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TLS == nil { + r.EncodeNil() + } else { + yym675 := z.EncBinary() + _ = yym675 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } + } + if yyr671 || yy2arr671 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq671[2] { + if x.Rules == nil { + r.EncodeNil() + } else { + yym677 := z.EncBinary() + _ = yym677 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq671[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym678 := z.EncBinary() + _ = yym678 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } + } + if yyr671 || yy2arr671 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym679 := z.DecBinary() + _ = yym679 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct680 := r.ContainerType() + if yyct680 == codecSelferValueTypeMap1234 { + yyl680 := r.ReadMapStart() + if yyl680 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl680, d) + } + } else if yyct680 == codecSelferValueTypeArray1234 { + yyl680 := r.ReadArrayStart() + if yyl680 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl680, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys681Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys681Slc + var yyhl681 bool = l >= 0 + for yyj681 := 0; ; yyj681++ { + if yyhl681 { + if yyj681 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys681Slc = r.DecodeBytes(yys681Slc, true, true) + yys681 := string(yys681Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys681 { + case "backend": + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + case "tls": + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv683 := &x.TLS + yym684 := z.DecBinary() + _ = yym684 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv683), d) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv685 := &x.Rules + yym686 := z.DecBinary() + _ = yym686 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv685), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys681) + } // end switch yys681 + } // end for yyj681 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj687 int + var yyb687 bool + var yyhl687 bool = l >= 0 + yyj687++ + if yyhl687 { + yyb687 = yyj687 > l + } else { + yyb687 = r.CheckBreak() + } + if yyb687 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + yyj687++ + if yyhl687 { + yyb687 = yyj687 > l + } else { + yyb687 = r.CheckBreak() + } + if yyb687 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv689 := &x.TLS + yym690 := z.DecBinary() + _ = yym690 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv689), d) + } + } + yyj687++ + if yyhl687 { + yyb687 = yyj687 > l + } else { + yyb687 = r.CheckBreak() + } + if yyb687 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv691 := &x.Rules + yym692 := z.DecBinary() + _ = yym692 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv691), d) + } + } + for { + yyj687++ + if yyhl687 { + yyb687 = yyj687 > l + } else { + yyb687 = r.CheckBreak() + } + if yyb687 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj687-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressTLS) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym693 := z.EncBinary() + _ = yym693 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep694 := !z.EncBinary() + yy2arr694 := z.EncBasicHandle().StructToArray + var yyq694 [2]bool + _, _, _ = yysep694, yyq694, yy2arr694 + const yyr694 bool = false + yyq694[0] = len(x.Hosts) != 0 + yyq694[1] = x.SecretName != "" + var yynn694 int + if yyr694 || yy2arr694 { + r.EncodeArrayStart(2) + } else { + yynn694 = 0 + for _, b := range yyq694 { + if b { + yynn694++ + } + } + r.EncodeMapStart(yynn694) + yynn694 = 0 + } + if yyr694 || yy2arr694 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq694[0] { + if x.Hosts == nil { + r.EncodeNil() + } else { + yym696 := z.EncBinary() + _ = yym696 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq694[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hosts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hosts == nil { + r.EncodeNil() + } else { + yym697 := z.EncBinary() + _ = yym697 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } + } + if yyr694 || yy2arr694 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq694[1] { + yym699 := z.EncBinary() + _ = yym699 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq694[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym700 := z.EncBinary() + _ = yym700 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr694 || yy2arr694 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressTLS) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym701 := z.DecBinary() + _ = yym701 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct702 := r.ContainerType() + if yyct702 == codecSelferValueTypeMap1234 { + yyl702 := r.ReadMapStart() + if yyl702 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl702, d) + } + } else if yyct702 == codecSelferValueTypeArray1234 { + yyl702 := r.ReadArrayStart() + if yyl702 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl702, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressTLS) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys703Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys703Slc + var yyhl703 bool = l >= 0 + for yyj703 := 0; ; yyj703++ { + if yyhl703 { + if yyj703 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys703Slc = r.DecodeBytes(yys703Slc, true, true) + yys703 := string(yys703Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys703 { + case "hosts": + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv704 := &x.Hosts + yym705 := z.DecBinary() + _ = yym705 + if false { + } else { + z.F.DecSliceStringX(yyv704, false, d) + } + } + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys703) + } // end switch yys703 + } // end for yyj703 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressTLS) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj707 int + var yyb707 bool + var yyhl707 bool = l >= 0 + yyj707++ + if yyhl707 { + yyb707 = yyj707 > l + } else { + yyb707 = r.CheckBreak() + } + if yyb707 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv708 := &x.Hosts + yym709 := z.DecBinary() + _ = yym709 + if false { + } else { + z.F.DecSliceStringX(yyv708, false, d) + } + } + yyj707++ + if yyhl707 { + yyb707 = yyj707 > l + } else { + yyb707 = r.CheckBreak() + } + if yyb707 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + for { + yyj707++ + if yyhl707 { + yyb707 = yyj707 > l + } else { + yyb707 = r.CheckBreak() + } + if yyb707 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj707-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym711 := z.EncBinary() + _ = yym711 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep712 := !z.EncBinary() + yy2arr712 := z.EncBasicHandle().StructToArray + var yyq712 [1]bool + _, _, _ = yysep712, yyq712, yy2arr712 + const yyr712 bool = false + yyq712[0] = true + var yynn712 int + if yyr712 || yy2arr712 { + r.EncodeArrayStart(1) + } else { + yynn712 = 0 + for _, b := range yyq712 { + if b { + yynn712++ + } + } + r.EncodeMapStart(yynn712) + yynn712 = 0 + } + if yyr712 || yy2arr712 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq712[0] { + yy714 := &x.LoadBalancer + yy714.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq712[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy715 := &x.LoadBalancer + yy715.CodecEncodeSelf(e) + } + } + if yyr712 || yy2arr712 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym716 := z.DecBinary() + _ = yym716 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct717 := r.ContainerType() + if yyct717 == codecSelferValueTypeMap1234 { + yyl717 := r.ReadMapStart() + if yyl717 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl717, d) + } + } else if yyct717 == codecSelferValueTypeArray1234 { + yyl717 := r.ReadArrayStart() + if yyl717 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl717, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys718Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys718Slc + var yyhl718 bool = l >= 0 + for yyj718 := 0; ; yyj718++ { + if yyhl718 { + if yyj718 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys718Slc = r.DecodeBytes(yys718Slc, true, true) + yys718 := string(yys718Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys718 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg2_api.LoadBalancerStatus{} + } else { + yyv719 := &x.LoadBalancer + yyv719.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys718) + } // end switch yys718 + } // end for yyj718 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj720 int + var yyb720 bool + var yyhl720 bool = l >= 0 + yyj720++ + if yyhl720 { + yyb720 = yyj720 > l + } else { + yyb720 = r.CheckBreak() + } + if yyb720 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg2_api.LoadBalancerStatus{} + } else { + yyv721 := &x.LoadBalancer + yyv721.CodecDecodeSelf(d) + } + for { + yyj720++ + if yyhl720 { + yyb720 = yyj720 > l + } else { + yyb720 = r.CheckBreak() + } + if yyb720 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj720-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym722 := z.EncBinary() + _ = yym722 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep723 := !z.EncBinary() + yy2arr723 := z.EncBasicHandle().StructToArray + var yyq723 [2]bool + _, _, _ = yysep723, yyq723, yy2arr723 + const yyr723 bool = false + yyq723[0] = x.Host != "" + yyq723[1] = x.IngressRuleValue.HTTP != nil && x.HTTP != nil + var yynn723 int + if yyr723 || yy2arr723 { + r.EncodeArrayStart(2) + } else { + yynn723 = 0 + for _, b := range yyq723 { + if b { + yynn723++ + } + } + r.EncodeMapStart(yynn723) + yynn723 = 0 + } + if yyr723 || yy2arr723 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq723[0] { + yym725 := z.EncBinary() + _ = yym725 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq723[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym726 := z.EncBinary() + _ = yym726 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + var yyn727 bool + if x.IngressRuleValue.HTTP == nil { + yyn727 = true + goto LABEL727 + } + LABEL727: + if yyr723 || yy2arr723 { + if yyn727 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq723[1] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq723[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn727 { + r.EncodeNil() + } else { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + } + if yyr723 || yy2arr723 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym728 := z.DecBinary() + _ = yym728 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct729 := r.ContainerType() + if yyct729 == codecSelferValueTypeMap1234 { + yyl729 := r.ReadMapStart() + if yyl729 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl729, d) + } + } else if yyct729 == codecSelferValueTypeArray1234 { + yyl729 := r.ReadArrayStart() + if yyl729 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl729, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys730Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys730Slc + var yyhl730 bool = l >= 0 + for yyj730 := 0; ; yyj730++ { + if yyhl730 { + if yyj730 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys730Slc = r.DecodeBytes(yys730Slc, true, true) + yys730 := string(yys730Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys730 { + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + case "http": + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys730) + } // end switch yys730 + } // end for yyj730 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj733 int + var yyb733 bool + var yyhl733 bool = l >= 0 + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj733++ + if yyhl733 { + yyb733 = yyj733 > l + } else { + yyb733 = r.CheckBreak() + } + if yyb733 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj733-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym736 := z.EncBinary() + _ = yym736 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep737 := !z.EncBinary() + yy2arr737 := z.EncBasicHandle().StructToArray + var yyq737 [1]bool + _, _, _ = yysep737, yyq737, yy2arr737 + const yyr737 bool = false + yyq737[0] = x.HTTP != nil + var yynn737 int + if yyr737 || yy2arr737 { + r.EncodeArrayStart(1) + } else { + yynn737 = 0 + for _, b := range yyq737 { + if b { + yynn737++ + } + } + r.EncodeMapStart(yynn737) + yynn737 = 0 + } + if yyr737 || yy2arr737 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq737[0] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq737[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + if yyr737 || yy2arr737 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym739 := z.DecBinary() + _ = yym739 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct740 := r.ContainerType() + if yyct740 == codecSelferValueTypeMap1234 { + yyl740 := r.ReadMapStart() + if yyl740 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl740, d) + } + } else if yyct740 == codecSelferValueTypeArray1234 { + yyl740 := r.ReadArrayStart() + if yyl740 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl740, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys741Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys741Slc + var yyhl741 bool = l >= 0 + for yyj741 := 0; ; yyj741++ { + if yyhl741 { + if yyj741 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys741Slc = r.DecodeBytes(yys741Slc, true, true) + yys741 := string(yys741Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys741 { + case "http": + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys741) + } // end switch yys741 + } // end for yyj741 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj743 int + var yyb743 bool + var yyhl743 bool = l >= 0 + yyj743++ + if yyhl743 { + yyb743 = yyj743 > l + } else { + yyb743 = r.CheckBreak() + } + if yyb743 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj743++ + if yyhl743 { + yyb743 = yyj743 > l + } else { + yyb743 = r.CheckBreak() + } + if yyb743 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj743-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym745 := z.EncBinary() + _ = yym745 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep746 := !z.EncBinary() + yy2arr746 := z.EncBasicHandle().StructToArray + var yyq746 [1]bool + _, _, _ = yysep746, yyq746, yy2arr746 + const yyr746 bool = false + var yynn746 int + if yyr746 || yy2arr746 { + r.EncodeArrayStart(1) + } else { + yynn746 = 1 + for _, b := range yyq746 { + if b { + yynn746++ + } + } + r.EncodeMapStart(yynn746) + yynn746 = 0 + } + if yyr746 || yy2arr746 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym748 := z.EncBinary() + _ = yym748 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paths")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym749 := z.EncBinary() + _ = yym749 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } + if yyr746 || yy2arr746 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym750 := z.DecBinary() + _ = yym750 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct751 := r.ContainerType() + if yyct751 == codecSelferValueTypeMap1234 { + yyl751 := r.ReadMapStart() + if yyl751 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl751, d) + } + } else if yyct751 == codecSelferValueTypeArray1234 { + yyl751 := r.ReadArrayStart() + if yyl751 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl751, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys752Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys752Slc + var yyhl752 bool = l >= 0 + for yyj752 := 0; ; yyj752++ { + if yyhl752 { + if yyj752 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys752Slc = r.DecodeBytes(yys752Slc, true, true) + yys752 := string(yys752Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys752 { + case "paths": + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv753 := &x.Paths + yym754 := z.DecBinary() + _ = yym754 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv753), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys752) + } // end switch yys752 + } // end for yyj752 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj755 int + var yyb755 bool + var yyhl755 bool = l >= 0 + yyj755++ + if yyhl755 { + yyb755 = yyj755 > l + } else { + yyb755 = r.CheckBreak() + } + if yyb755 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv756 := &x.Paths + yym757 := z.DecBinary() + _ = yym757 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv756), d) + } + } + for { + yyj755++ + if yyhl755 { + yyb755 = yyj755 > l + } else { + yyb755 = r.CheckBreak() + } + if yyb755 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj755-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym758 := z.EncBinary() + _ = yym758 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep759 := !z.EncBinary() + yy2arr759 := z.EncBasicHandle().StructToArray + var yyq759 [2]bool + _, _, _ = yysep759, yyq759, yy2arr759 + const yyr759 bool = false + yyq759[0] = x.Path != "" + var yynn759 int + if yyr759 || yy2arr759 { + r.EncodeArrayStart(2) + } else { + yynn759 = 1 + for _, b := range yyq759 { + if b { + yynn759++ + } + } + r.EncodeMapStart(yynn759) + yynn759 = 0 + } + if yyr759 || yy2arr759 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq759[0] { + yym761 := z.EncBinary() + _ = yym761 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq759[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym762 := z.EncBinary() + _ = yym762 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr759 || yy2arr759 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy764 := &x.Backend + yy764.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy765 := &x.Backend + yy765.CodecEncodeSelf(e) + } + if yyr759 || yy2arr759 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym766 := z.DecBinary() + _ = yym766 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct767 := r.ContainerType() + if yyct767 == codecSelferValueTypeMap1234 { + yyl767 := r.ReadMapStart() + if yyl767 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl767, d) + } + } else if yyct767 == codecSelferValueTypeArray1234 { + yyl767 := r.ReadArrayStart() + if yyl767 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl767, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys768Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys768Slc + var yyhl768 bool = l >= 0 + for yyj768 := 0; ; yyj768++ { + if yyhl768 { + if yyj768 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys768Slc = r.DecodeBytes(yys768Slc, true, true) + yys768 := string(yys768Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys768 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "backend": + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv770 := &x.Backend + yyv770.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys768) + } // end switch yys768 + } // end for yyj768 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj771 int + var yyb771 bool + var yyhl771 bool = l >= 0 + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv773 := &x.Backend + yyv773.CodecDecodeSelf(d) + } + for { + yyj771++ + if yyhl771 { + yyb771 = yyj771 > l + } else { + yyb771 = r.CheckBreak() + } + if yyb771 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj771-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressBackend) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym774 := z.EncBinary() + _ = yym774 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep775 := !z.EncBinary() + yy2arr775 := z.EncBasicHandle().StructToArray + var yyq775 [2]bool + _, _, _ = yysep775, yyq775, yy2arr775 + const yyr775 bool = false + var yynn775 int + if yyr775 || yy2arr775 { + r.EncodeArrayStart(2) + } else { + yynn775 = 2 + for _, b := range yyq775 { + if b { + yynn775++ + } + } + r.EncodeMapStart(yynn775) + yynn775 = 0 + } + if yyr775 || yy2arr775 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym777 := z.EncBinary() + _ = yym777 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym778 := z.EncBinary() + _ = yym778 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr775 || yy2arr775 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy780 := &x.ServicePort + yym781 := z.EncBinary() + _ = yym781 + if false { + } else if z.HasExtensions() && z.EncExt(yy780) { + } else if !yym781 && z.IsJSONHandle() { + z.EncJSONMarshal(yy780) + } else { + z.EncFallback(yy780) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("servicePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy782 := &x.ServicePort + yym783 := z.EncBinary() + _ = yym783 + if false { + } else if z.HasExtensions() && z.EncExt(yy782) { + } else if !yym783 && z.IsJSONHandle() { + z.EncJSONMarshal(yy782) + } else { + z.EncFallback(yy782) + } + } + if yyr775 || yy2arr775 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressBackend) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym784 := z.DecBinary() + _ = yym784 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct785 := r.ContainerType() + if yyct785 == codecSelferValueTypeMap1234 { + yyl785 := r.ReadMapStart() + if yyl785 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl785, d) + } + } else if yyct785 == codecSelferValueTypeArray1234 { + yyl785 := r.ReadArrayStart() + if yyl785 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl785, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressBackend) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys786Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys786Slc + var yyhl786 bool = l >= 0 + for yyj786 := 0; ; yyj786++ { + if yyhl786 { + if yyj786 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys786Slc = r.DecodeBytes(yys786Slc, true, true) + yys786 := string(yys786Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys786 { + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + case "servicePort": + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv788 := &x.ServicePort + yym789 := z.DecBinary() + _ = yym789 + if false { + } else if z.HasExtensions() && z.DecExt(yyv788) { + } else if !yym789 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv788) + } else { + z.DecFallback(yyv788, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys786) + } // end switch yys786 + } // end for yyj786 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressBackend) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj790 int + var yyb790 bool + var yyhl790 bool = l >= 0 + yyj790++ + if yyhl790 { + yyb790 = yyj790 > l + } else { + yyb790 = r.CheckBreak() + } + if yyb790 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + yyj790++ + if yyhl790 { + yyb790 = yyj790 > l + } else { + yyb790 = r.CheckBreak() + } + if yyb790 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv792 := &x.ServicePort + yym793 := z.DecBinary() + _ = yym793 + if false { + } else if z.HasExtensions() && z.DecExt(yyv792) { + } else if !yym793 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv792) + } else { + z.DecFallback(yyv792, false) + } + } + for { + yyj790++ + if yyhl790 { + yyb790 = yyj790 > l + } else { + yyb790 = r.CheckBreak() + } + if yyb790 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj790-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym794 := z.EncBinary() + _ = yym794 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep795 := !z.EncBinary() + yy2arr795 := z.EncBasicHandle().StructToArray + var yyq795 [5]bool + _, _, _ = yysep795, yyq795, yy2arr795 + const yyr795 bool = false + yyq795[0] = x.Kind != "" + yyq795[1] = x.APIVersion != "" + yyq795[2] = true + yyq795[3] = true + yyq795[4] = true + var yynn795 int + if yyr795 || yy2arr795 { + r.EncodeArrayStart(5) + } else { + yynn795 = 0 + for _, b := range yyq795 { + if b { + yynn795++ + } + } + r.EncodeMapStart(yynn795) + yynn795 = 0 + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq795[0] { + yym797 := z.EncBinary() + _ = yym797 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq795[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym798 := z.EncBinary() + _ = yym798 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq795[1] { + yym800 := z.EncBinary() + _ = yym800 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq795[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym801 := z.EncBinary() + _ = yym801 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq795[2] { + yy803 := &x.ObjectMeta + yy803.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq795[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy804 := &x.ObjectMeta + yy804.CodecEncodeSelf(e) + } + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq795[3] { + yy806 := &x.Spec + yy806.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq795[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy807 := &x.Spec + yy807.CodecEncodeSelf(e) + } + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq795[4] { + yy809 := &x.Status + yy809.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq795[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy810 := &x.Status + yy810.CodecEncodeSelf(e) + } + } + if yyr795 || yy2arr795 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym811 := z.DecBinary() + _ = yym811 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct812 := r.ContainerType() + if yyct812 == codecSelferValueTypeMap1234 { + yyl812 := r.ReadMapStart() + if yyl812 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl812, d) + } + } else if yyct812 == codecSelferValueTypeArray1234 { + yyl812 := r.ReadArrayStart() + if yyl812 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl812, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys813Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys813Slc + var yyhl813 bool = l >= 0 + for yyj813 := 0; ; yyj813++ { + if yyhl813 { + if yyj813 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys813Slc = r.DecodeBytes(yys813Slc, true, true) + yys813 := string(yys813Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys813 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv816 := &x.ObjectMeta + yyv816.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv817 := &x.Spec + yyv817.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv818 := &x.Status + yyv818.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys813) + } // end switch yys813 + } // end for yyj813 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj819 int + var yyb819 bool + var yyhl819 bool = l >= 0 + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv822 := &x.ObjectMeta + yyv822.CodecDecodeSelf(d) + } + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv823 := &x.Spec + yyv823.CodecDecodeSelf(d) + } + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv824 := &x.Status + yyv824.CodecDecodeSelf(d) + } + for { + yyj819++ + if yyhl819 { + yyb819 = yyj819 > l + } else { + yyb819 = r.CheckBreak() + } + if yyb819 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj819-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym825 := z.EncBinary() + _ = yym825 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep826 := !z.EncBinary() + yy2arr826 := z.EncBasicHandle().StructToArray + var yyq826 [4]bool + _, _, _ = yysep826, yyq826, yy2arr826 + const yyr826 bool = false + yyq826[0] = x.Kind != "" + yyq826[1] = x.APIVersion != "" + yyq826[2] = true + var yynn826 int + if yyr826 || yy2arr826 { + r.EncodeArrayStart(4) + } else { + yynn826 = 1 + for _, b := range yyq826 { + if b { + yynn826++ + } + } + r.EncodeMapStart(yynn826) + yynn826 = 0 + } + if yyr826 || yy2arr826 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq826[0] { + yym828 := z.EncBinary() + _ = yym828 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq826[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym829 := z.EncBinary() + _ = yym829 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr826 || yy2arr826 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq826[1] { + yym831 := z.EncBinary() + _ = yym831 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq826[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym832 := z.EncBinary() + _ = yym832 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr826 || yy2arr826 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq826[2] { + yy834 := &x.ListMeta + yym835 := z.EncBinary() + _ = yym835 + if false { + } else if z.HasExtensions() && z.EncExt(yy834) { + } else { + z.EncFallback(yy834) + } + } else { + r.EncodeNil() + } + } else { + if yyq826[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy836 := &x.ListMeta + yym837 := z.EncBinary() + _ = yym837 + if false { + } else if z.HasExtensions() && z.EncExt(yy836) { + } else { + z.EncFallback(yy836) + } + } + } + if yyr826 || yy2arr826 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym839 := z.EncBinary() + _ = yym839 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym840 := z.EncBinary() + _ = yym840 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } + if yyr826 || yy2arr826 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym841 := z.DecBinary() + _ = yym841 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct842 := r.ContainerType() + if yyct842 == codecSelferValueTypeMap1234 { + yyl842 := r.ReadMapStart() + if yyl842 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl842, d) + } + } else if yyct842 == codecSelferValueTypeArray1234 { + yyl842 := r.ReadArrayStart() + if yyl842 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl842, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys843Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys843Slc + var yyhl843 bool = l >= 0 + for yyj843 := 0; ; yyj843++ { + if yyhl843 { + if yyj843 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys843Slc = r.DecodeBytes(yys843Slc, true, true) + yys843 := string(yys843Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys843 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv846 := &x.ListMeta + yym847 := z.DecBinary() + _ = yym847 + if false { + } else if z.HasExtensions() && z.DecExt(yyv846) { + } else { + z.DecFallback(yyv846, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv848 := &x.Items + yym849 := z.DecBinary() + _ = yym849 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv848), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys843) + } // end switch yys843 + } // end for yyj843 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj850 int + var yyb850 bool + var yyhl850 bool = l >= 0 + yyj850++ + if yyhl850 { + yyb850 = yyj850 > l + } else { + yyb850 = r.CheckBreak() + } + if yyb850 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj850++ + if yyhl850 { + yyb850 = yyj850 > l + } else { + yyb850 = r.CheckBreak() + } + if yyb850 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj850++ + if yyhl850 { + yyb850 = yyj850 > l + } else { + yyb850 = r.CheckBreak() + } + if yyb850 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv853 := &x.ListMeta + yym854 := z.DecBinary() + _ = yym854 + if false { + } else if z.HasExtensions() && z.DecExt(yyv853) { + } else { + z.DecFallback(yyv853, false) + } + } + yyj850++ + if yyhl850 { + yyb850 = yyj850 > l + } else { + yyb850 = r.CheckBreak() + } + if yyb850 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv855 := &x.Items + yym856 := z.DecBinary() + _ = yym856 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv855), d) + } + } + for { + yyj850++ + if yyhl850 { + yyb850 = yyj850 > l + } else { + yyb850 = r.CheckBreak() + } + if yyb850 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj850-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym857 := z.EncBinary() + _ = yym857 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep858 := !z.EncBinary() + yy2arr858 := z.EncBasicHandle().StructToArray + var yyq858 [3]bool + _, _, _ = yysep858, yyq858, yy2arr858 + const yyr858 bool = false + yyq858[1] = x.Selector != nil + yyq858[2] = true + var yynn858 int + if yyr858 || yy2arr858 { + r.EncodeArrayStart(3) + } else { + yynn858 = 1 + for _, b := range yyq858 { + if b { + yynn858++ + } + } + r.EncodeMapStart(yynn858) + yynn858 = 0 + } + if yyr858 || yy2arr858 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym860 := z.EncBinary() + _ = yym860 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym861 := z.EncBinary() + _ = yym861 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr858 || yy2arr858 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq858[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym863 := z.EncBinary() + _ = yym863 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq858[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym864 := z.EncBinary() + _ = yym864 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr858 || yy2arr858 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq858[2] { + yy866 := &x.Template + yy866.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq858[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy867 := &x.Template + yy867.CodecEncodeSelf(e) + } + } + if yyr858 || yy2arr858 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym868 := z.DecBinary() + _ = yym868 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct869 := r.ContainerType() + if yyct869 == codecSelferValueTypeMap1234 { + yyl869 := r.ReadMapStart() + if yyl869 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl869, d) + } + } else if yyct869 == codecSelferValueTypeArray1234 { + yyl869 := r.ReadArrayStart() + if yyl869 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl869, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys870Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys870Slc + var yyhl870 bool = l >= 0 + for yyj870 := 0; ; yyj870++ { + if yyhl870 { + if yyj870 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys870Slc = r.DecodeBytes(yys870Slc, true, true) + yys870 := string(yys870Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys870 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym873 := z.DecBinary() + _ = yym873 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv874 := &x.Template + yyv874.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys870) + } // end switch yys870 + } // end for yyj870 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj875 int + var yyb875 bool + var yyhl875 bool = l >= 0 + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg1_unversioned.LabelSelector) + } + yym878 := z.DecBinary() + _ = yym878 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_api.PodTemplateSpec{} + } else { + yyv879 := &x.Template + yyv879.CodecDecodeSelf(d) + } + for { + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj875-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym880 := z.EncBinary() + _ = yym880 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep881 := !z.EncBinary() + yy2arr881 := z.EncBasicHandle().StructToArray + var yyq881 [4]bool + _, _, _ = yysep881, yyq881, yy2arr881 + const yyr881 bool = false + yyq881[1] = x.FullyLabeledReplicas != 0 + yyq881[2] = x.ReadyReplicas != 0 + yyq881[3] = x.ObservedGeneration != 0 + var yynn881 int + if yyr881 || yy2arr881 { + r.EncodeArrayStart(4) + } else { + yynn881 = 1 + for _, b := range yyq881 { + if b { + yynn881++ + } + } + r.EncodeMapStart(yynn881) + yynn881 = 0 + } + if yyr881 || yy2arr881 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym883 := z.EncBinary() + _ = yym883 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym884 := z.EncBinary() + _ = yym884 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr881 || yy2arr881 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq881[1] { + yym886 := z.EncBinary() + _ = yym886 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq881[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym887 := z.EncBinary() + _ = yym887 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr881 || yy2arr881 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq881[2] { + yym889 := z.EncBinary() + _ = yym889 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq881[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym890 := z.EncBinary() + _ = yym890 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr881 || yy2arr881 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq881[3] { + yym892 := z.EncBinary() + _ = yym892 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq881[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym893 := z.EncBinary() + _ = yym893 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr881 || yy2arr881 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym894 := z.DecBinary() + _ = yym894 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct895 := r.ContainerType() + if yyct895 == codecSelferValueTypeMap1234 { + yyl895 := r.ReadMapStart() + if yyl895 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl895, d) + } + } else if yyct895 == codecSelferValueTypeArray1234 { + yyl895 := r.ReadArrayStart() + if yyl895 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl895, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys896Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys896Slc + var yyhl896 bool = l >= 0 + for yyj896 := 0; ; yyj896++ { + if yyhl896 { + if yyj896 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys896Slc = r.DecodeBytes(yys896Slc, true, true) + yys896 := string(yys896Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys896 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys896) + } // end switch yys896 + } // end for yyj896 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj901 int + var yyb901 bool + var yyhl901 bool = l >= 0 + yyj901++ + if yyhl901 { + yyb901 = yyj901 > l + } else { + yyb901 = r.CheckBreak() + } + if yyb901 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj901++ + if yyhl901 { + yyb901 = yyj901 > l + } else { + yyb901 = r.CheckBreak() + } + if yyb901 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + yyj901++ + if yyhl901 { + yyb901 = yyj901 > l + } else { + yyb901 = r.CheckBreak() + } + if yyb901 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + yyj901++ + if yyhl901 { + yyb901 = yyj901 > l + } else { + yyb901 = r.CheckBreak() + } + if yyb901 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + for { + yyj901++ + if yyhl901 { + yyb901 = yyj901 > l + } else { + yyb901 = r.CheckBreak() + } + if yyb901 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj901-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym906 := z.EncBinary() + _ = yym906 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep907 := !z.EncBinary() + yy2arr907 := z.EncBasicHandle().StructToArray + var yyq907 [4]bool + _, _, _ = yysep907, yyq907, yy2arr907 + const yyr907 bool = false + yyq907[0] = x.Kind != "" + yyq907[1] = x.APIVersion != "" + yyq907[2] = true + yyq907[3] = true + var yynn907 int + if yyr907 || yy2arr907 { + r.EncodeArrayStart(4) + } else { + yynn907 = 0 + for _, b := range yyq907 { + if b { + yynn907++ + } + } + r.EncodeMapStart(yynn907) + yynn907 = 0 + } + if yyr907 || yy2arr907 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq907[0] { + yym909 := z.EncBinary() + _ = yym909 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq907[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym910 := z.EncBinary() + _ = yym910 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr907 || yy2arr907 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq907[1] { + yym912 := z.EncBinary() + _ = yym912 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq907[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym913 := z.EncBinary() + _ = yym913 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr907 || yy2arr907 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq907[2] { + yy915 := &x.ObjectMeta + yy915.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq907[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy916 := &x.ObjectMeta + yy916.CodecEncodeSelf(e) + } + } + if yyr907 || yy2arr907 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq907[3] { + yy918 := &x.Spec + yy918.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq907[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy919 := &x.Spec + yy919.CodecEncodeSelf(e) + } + } + if yyr907 || yy2arr907 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym920 := z.DecBinary() + _ = yym920 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct921 := r.ContainerType() + if yyct921 == codecSelferValueTypeMap1234 { + yyl921 := r.ReadMapStart() + if yyl921 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl921, d) + } + } else if yyct921 == codecSelferValueTypeArray1234 { + yyl921 := r.ReadArrayStart() + if yyl921 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl921, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys922Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys922Slc + var yyhl922 bool = l >= 0 + for yyj922 := 0; ; yyj922++ { + if yyhl922 { + if yyj922 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys922Slc = r.DecodeBytes(yys922Slc, true, true) + yys922 := string(yys922Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys922 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv925 := &x.ObjectMeta + yyv925.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv926 := &x.Spec + yyv926.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys922) + } // end switch yys922 + } // end for yyj922 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj927 int + var yyb927 bool + var yyhl927 bool = l >= 0 + yyj927++ + if yyhl927 { + yyb927 = yyj927 > l + } else { + yyb927 = r.CheckBreak() + } + if yyb927 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj927++ + if yyhl927 { + yyb927 = yyj927 > l + } else { + yyb927 = r.CheckBreak() + } + if yyb927 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj927++ + if yyhl927 { + yyb927 = yyj927 > l + } else { + yyb927 = r.CheckBreak() + } + if yyb927 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv930 := &x.ObjectMeta + yyv930.CodecDecodeSelf(d) + } + yyj927++ + if yyhl927 { + yyb927 = yyj927 > l + } else { + yyb927 = r.CheckBreak() + } + if yyb927 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv931 := &x.Spec + yyv931.CodecDecodeSelf(d) + } + for { + yyj927++ + if yyhl927 { + yyb927 = yyj927 > l + } else { + yyb927 = r.CheckBreak() + } + if yyb927 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj927-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym932 := z.EncBinary() + _ = yym932 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep933 := !z.EncBinary() + yy2arr933 := z.EncBasicHandle().StructToArray + var yyq933 [14]bool + _, _, _ = yysep933, yyq933, yy2arr933 + const yyr933 bool = false + yyq933[0] = x.Privileged != false + yyq933[1] = len(x.DefaultAddCapabilities) != 0 + yyq933[2] = len(x.RequiredDropCapabilities) != 0 + yyq933[3] = len(x.AllowedCapabilities) != 0 + yyq933[4] = len(x.Volumes) != 0 + yyq933[5] = x.HostNetwork != false + yyq933[6] = len(x.HostPorts) != 0 + yyq933[7] = x.HostPID != false + yyq933[8] = x.HostIPC != false + yyq933[13] = x.ReadOnlyRootFilesystem != false + var yynn933 int + if yyr933 || yy2arr933 { + r.EncodeArrayStart(14) + } else { + yynn933 = 4 + for _, b := range yyq933 { + if b { + yynn933++ + } + } + r.EncodeMapStart(yynn933) + yynn933 = 0 + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[0] { + yym935 := z.EncBinary() + _ = yym935 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq933[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym936 := z.EncBinary() + _ = yym936 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[1] { + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym938 := z.EncBinary() + _ = yym938 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.DefaultAddCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq933[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultAddCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym939 := z.EncBinary() + _ = yym939 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.DefaultAddCapabilities), e) + } + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[2] { + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym941 := z.EncBinary() + _ = yym941 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.RequiredDropCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq933[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDropCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym942 := z.EncBinary() + _ = yym942 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.RequiredDropCapabilities), e) + } + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[3] { + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym944 := z.EncBinary() + _ = yym944 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.AllowedCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq933[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowedCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym945 := z.EncBinary() + _ = yym945 + if false { + } else { + h.encSliceapi_Capability(([]pkg2_api.Capability)(x.AllowedCapabilities), e) + } + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[4] { + if x.Volumes == nil { + r.EncodeNil() + } else { + yym947 := z.EncBinary() + _ = yym947 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq933[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym948 := z.EncBinary() + _ = yym948 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[5] { + yym950 := z.EncBinary() + _ = yym950 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq933[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym951 := z.EncBinary() + _ = yym951 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[6] { + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym953 := z.EncBinary() + _ = yym953 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq933[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPorts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym954 := z.EncBinary() + _ = yym954 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[7] { + yym956 := z.EncBinary() + _ = yym956 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq933[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym957 := z.EncBinary() + _ = yym957 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[8] { + yym959 := z.EncBinary() + _ = yym959 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq933[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym960 := z.EncBinary() + _ = yym960 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy962 := &x.SELinux + yy962.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinux")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy963 := &x.SELinux + yy963.CodecEncodeSelf(e) + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy965 := &x.RunAsUser + yy965.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy966 := &x.RunAsUser + yy966.CodecEncodeSelf(e) + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy968 := &x.SupplementalGroups + yy968.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy969 := &x.SupplementalGroups + yy969.CodecEncodeSelf(e) + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy971 := &x.FSGroup + yy971.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy972 := &x.FSGroup + yy972.CodecEncodeSelf(e) + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq933[13] { + yym974 := z.EncBinary() + _ = yym974 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq933[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym975 := z.EncBinary() + _ = yym975 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } + } + if yyr933 || yy2arr933 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym976 := z.DecBinary() + _ = yym976 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct977 := r.ContainerType() + if yyct977 == codecSelferValueTypeMap1234 { + yyl977 := r.ReadMapStart() + if yyl977 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl977, d) + } + } else if yyct977 == codecSelferValueTypeArray1234 { + yyl977 := r.ReadArrayStart() + if yyl977 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl977, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys978Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys978Slc + var yyhl978 bool = l >= 0 + for yyj978 := 0; ; yyj978++ { + if yyhl978 { + if yyj978 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys978Slc = r.DecodeBytes(yys978Slc, true, true) + yys978 := string(yys978Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys978 { + case "privileged": + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + x.Privileged = bool(r.DecodeBool()) + } + case "defaultAddCapabilities": + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv980 := &x.DefaultAddCapabilities + yym981 := z.DecBinary() + _ = yym981 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv980), d) + } + } + case "requiredDropCapabilities": + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv982 := &x.RequiredDropCapabilities + yym983 := z.DecBinary() + _ = yym983 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv982), d) + } + } + case "allowedCapabilities": + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv984 := &x.AllowedCapabilities + yym985 := z.DecBinary() + _ = yym985 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv984), d) + } + } + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv986 := &x.Volumes + yym987 := z.DecBinary() + _ = yym987 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv986), d) + } + } + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + case "hostPorts": + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv989 := &x.HostPorts + yym990 := z.DecBinary() + _ = yym990 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv989), d) + } + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + case "seLinux": + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv993 := &x.SELinux + yyv993.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv994 := &x.RunAsUser + yyv994.CodecDecodeSelf(d) + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv995 := &x.SupplementalGroups + yyv995.CodecDecodeSelf(d) + } + case "fsGroup": + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv996 := &x.FSGroup + yyv996.CodecDecodeSelf(d) + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + x.ReadOnlyRootFilesystem = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys978) + } // end switch yys978 + } // end for yyj978 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj998 int + var yyb998 bool + var yyhl998 bool = l >= 0 + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + x.Privileged = bool(r.DecodeBool()) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv1000 := &x.DefaultAddCapabilities + yym1001 := z.DecBinary() + _ = yym1001 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv1000), d) + } + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv1002 := &x.RequiredDropCapabilities + yym1003 := z.DecBinary() + _ = yym1003 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv1002), d) + } + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv1004 := &x.AllowedCapabilities + yym1005 := z.DecBinary() + _ = yym1005 + if false { + } else { + h.decSliceapi_Capability((*[]pkg2_api.Capability)(yyv1004), d) + } + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv1006 := &x.Volumes + yym1007 := z.DecBinary() + _ = yym1007 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv1006), d) + } + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv1009 := &x.HostPorts + yym1010 := z.DecBinary() + _ = yym1010 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv1009), d) + } + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv1013 := &x.SELinux + yyv1013.CodecDecodeSelf(d) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv1014 := &x.RunAsUser + yyv1014.CodecDecodeSelf(d) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv1015 := &x.SupplementalGroups + yyv1015.CodecDecodeSelf(d) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv1016 := &x.FSGroup + yyv1016.CodecDecodeSelf(d) + } + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + x.ReadOnlyRootFilesystem = bool(r.DecodeBool()) + } + for { + yyj998++ + if yyhl998 { + yyb998 = yyj998 > l + } else { + yyb998 = r.CheckBreak() + } + if yyb998 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj998-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HostPortRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1018 := z.EncBinary() + _ = yym1018 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1019 := !z.EncBinary() + yy2arr1019 := z.EncBasicHandle().StructToArray + var yyq1019 [2]bool + _, _, _ = yysep1019, yyq1019, yy2arr1019 + const yyr1019 bool = false + var yynn1019 int + if yyr1019 || yy2arr1019 { + r.EncodeArrayStart(2) + } else { + yynn1019 = 2 + for _, b := range yyq1019 { + if b { + yynn1019++ + } + } + r.EncodeMapStart(yynn1019) + yynn1019 = 0 + } + if yyr1019 || yy2arr1019 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1021 := z.EncBinary() + _ = yym1021 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1022 := z.EncBinary() + _ = yym1022 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr1019 || yy2arr1019 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1024 := z.EncBinary() + _ = yym1024 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1025 := z.EncBinary() + _ = yym1025 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr1019 || yy2arr1019 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPortRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1026 := z.DecBinary() + _ = yym1026 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1027 := r.ContainerType() + if yyct1027 == codecSelferValueTypeMap1234 { + yyl1027 := r.ReadMapStart() + if yyl1027 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1027, d) + } + } else if yyct1027 == codecSelferValueTypeArray1234 { + yyl1027 := r.ReadArrayStart() + if yyl1027 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1027, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPortRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1028Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1028Slc + var yyhl1028 bool = l >= 0 + for yyj1028 := 0; ; yyj1028++ { + if yyhl1028 { + if yyj1028 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1028Slc = r.DecodeBytes(yys1028Slc, true, true) + yys1028 := string(yys1028Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1028 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int(r.DecodeInt(codecSelferBitsize1234)) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int(r.DecodeInt(codecSelferBitsize1234)) + } + default: + z.DecStructFieldNotFound(-1, yys1028) + } // end switch yys1028 + } // end for yyj1028 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPortRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1031 int + var yyb1031 bool + var yyhl1031 bool = l >= 0 + yyj1031++ + if yyhl1031 { + yyb1031 = yyj1031 > l + } else { + yyb1031 = r.CheckBreak() + } + if yyb1031 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int(r.DecodeInt(codecSelferBitsize1234)) + } + yyj1031++ + if yyhl1031 { + yyb1031 = yyj1031 > l + } else { + yyb1031 = r.CheckBreak() + } + if yyb1031 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int(r.DecodeInt(codecSelferBitsize1234)) + } + for { + yyj1031++ + if yyhl1031 { + yyb1031 = yyj1031 > l + } else { + yyb1031 = r.CheckBreak() + } + if yyb1031 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1031-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1034 := z.EncBinary() + _ = yym1034 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1035 := z.DecBinary() + _ = yym1035 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SELinuxStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1036 := z.EncBinary() + _ = yym1036 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1037 := !z.EncBinary() + yy2arr1037 := z.EncBasicHandle().StructToArray + var yyq1037 [2]bool + _, _, _ = yysep1037, yyq1037, yy2arr1037 + const yyr1037 bool = false + yyq1037[1] = x.SELinuxOptions != nil + var yynn1037 int + if yyr1037 || yy2arr1037 { + r.EncodeArrayStart(2) + } else { + yynn1037 = 1 + for _, b := range yyq1037 { + if b { + yynn1037++ + } + } + r.EncodeMapStart(yynn1037) + yynn1037 = 0 + } + if yyr1037 || yy2arr1037 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr1037 || yy2arr1037 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1037[1] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1037[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr1037 || yy2arr1037 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1040 := z.DecBinary() + _ = yym1040 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1041 := r.ContainerType() + if yyct1041 == codecSelferValueTypeMap1234 { + yyl1041 := r.ReadMapStart() + if yyl1041 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1041, d) + } + } else if yyct1041 == codecSelferValueTypeArray1234 { + yyl1041 := r.ReadArrayStart() + if yyl1041 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1041, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1042Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1042Slc + var yyhl1042 bool = l >= 0 + for yyj1042 := 0; ; yyj1042++ { + if yyhl1042 { + if yyj1042 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1042Slc = r.DecodeBytes(yys1042Slc, true, true) + yys1042 := string(yys1042Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1042 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SELinuxStrategy(r.DecodeString()) + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg2_api.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1042) + } // end switch yys1042 + } // end for yyj1042 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1045 int + var yyb1045 bool + var yyhl1045 bool = l >= 0 + yyj1045++ + if yyhl1045 { + yyb1045 = yyj1045 > l + } else { + yyb1045 = r.CheckBreak() + } + if yyb1045 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SELinuxStrategy(r.DecodeString()) + } + yyj1045++ + if yyhl1045 { + yyb1045 = yyj1045 > l + } else { + yyb1045 = r.CheckBreak() + } + if yyb1045 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg2_api.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + for { + yyj1045++ + if yyhl1045 { + yyb1045 = yyj1045 > l + } else { + yyb1045 = r.CheckBreak() + } + if yyb1045 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1045-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SELinuxStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1048 := z.EncBinary() + _ = yym1048 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SELinuxStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1049 := z.DecBinary() + _ = yym1049 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RunAsUserStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1050 := z.EncBinary() + _ = yym1050 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1051 := !z.EncBinary() + yy2arr1051 := z.EncBasicHandle().StructToArray + var yyq1051 [2]bool + _, _, _ = yysep1051, yyq1051, yy2arr1051 + const yyr1051 bool = false + yyq1051[1] = len(x.Ranges) != 0 + var yynn1051 int + if yyr1051 || yy2arr1051 { + r.EncodeArrayStart(2) + } else { + yynn1051 = 1 + for _, b := range yyq1051 { + if b { + yynn1051++ + } + } + r.EncodeMapStart(yynn1051) + yynn1051 = 0 + } + if yyr1051 || yy2arr1051 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr1051 || yy2arr1051 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1051[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1054 := z.EncBinary() + _ = yym1054 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1051[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1055 := z.EncBinary() + _ = yym1055 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1051 || yy2arr1051 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RunAsUserStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1056 := z.DecBinary() + _ = yym1056 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1057 := r.ContainerType() + if yyct1057 == codecSelferValueTypeMap1234 { + yyl1057 := r.ReadMapStart() + if yyl1057 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1057, d) + } + } else if yyct1057 == codecSelferValueTypeArray1234 { + yyl1057 := r.ReadArrayStart() + if yyl1057 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1057, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1058Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1058Slc + var yyhl1058 bool = l >= 0 + for yyj1058 := 0; ; yyj1058++ { + if yyhl1058 { + if yyj1058 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1058Slc = r.DecodeBytes(yys1058Slc, true, true) + yys1058 := string(yys1058Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1058 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = RunAsUserStrategy(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1060 := &x.Ranges + yym1061 := z.DecBinary() + _ = yym1061 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1060), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1058) + } // end switch yys1058 + } // end for yyj1058 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1062 int + var yyb1062 bool + var yyhl1062 bool = l >= 0 + yyj1062++ + if yyhl1062 { + yyb1062 = yyj1062 > l + } else { + yyb1062 = r.CheckBreak() + } + if yyb1062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = RunAsUserStrategy(r.DecodeString()) + } + yyj1062++ + if yyhl1062 { + yyb1062 = yyj1062 > l + } else { + yyb1062 = r.CheckBreak() + } + if yyb1062 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1064 := &x.Ranges + yym1065 := z.DecBinary() + _ = yym1065 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1064), d) + } + } + for { + yyj1062++ + if yyhl1062 { + yyb1062 = yyj1062 > l + } else { + yyb1062 = r.CheckBreak() + } + if yyb1062 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1062-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IDRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1066 := z.EncBinary() + _ = yym1066 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1067 := !z.EncBinary() + yy2arr1067 := z.EncBasicHandle().StructToArray + var yyq1067 [2]bool + _, _, _ = yysep1067, yyq1067, yy2arr1067 + const yyr1067 bool = false + var yynn1067 int + if yyr1067 || yy2arr1067 { + r.EncodeArrayStart(2) + } else { + yynn1067 = 2 + for _, b := range yyq1067 { + if b { + yynn1067++ + } + } + r.EncodeMapStart(yynn1067) + yynn1067 = 0 + } + if yyr1067 || yy2arr1067 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1069 := z.EncBinary() + _ = yym1069 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1070 := z.EncBinary() + _ = yym1070 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr1067 || yy2arr1067 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1072 := z.EncBinary() + _ = yym1072 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1073 := z.EncBinary() + _ = yym1073 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr1067 || yy2arr1067 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IDRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1074 := z.DecBinary() + _ = yym1074 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1075 := r.ContainerType() + if yyct1075 == codecSelferValueTypeMap1234 { + yyl1075 := r.ReadMapStart() + if yyl1075 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1075, d) + } + } else if yyct1075 == codecSelferValueTypeArray1234 { + yyl1075 := r.ReadArrayStart() + if yyl1075 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1075, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IDRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1076Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1076Slc + var yyhl1076 bool = l >= 0 + for yyj1076 := 0; ; yyj1076++ { + if yyhl1076 { + if yyj1076 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1076Slc = r.DecodeBytes(yys1076Slc, true, true) + yys1076 := string(yys1076Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1076 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int64(r.DecodeInt(64)) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys1076) + } // end switch yys1076 + } // end for yyj1076 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IDRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1079 int + var yyb1079 bool + var yyhl1079 bool = l >= 0 + yyj1079++ + if yyhl1079 { + yyb1079 = yyj1079 > l + } else { + yyb1079 = r.CheckBreak() + } + if yyb1079 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int64(r.DecodeInt(64)) + } + yyj1079++ + if yyhl1079 { + yyb1079 = yyj1079 > l + } else { + yyb1079 = r.CheckBreak() + } + if yyb1079 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int64(r.DecodeInt(64)) + } + for { + yyj1079++ + if yyhl1079 { + yyb1079 = yyj1079 > l + } else { + yyb1079 = r.CheckBreak() + } + if yyb1079 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1079-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RunAsUserStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1082 := z.EncBinary() + _ = yym1082 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RunAsUserStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1083 := z.DecBinary() + _ = yym1083 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *FSGroupStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1084 := z.EncBinary() + _ = yym1084 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1085 := !z.EncBinary() + yy2arr1085 := z.EncBasicHandle().StructToArray + var yyq1085 [2]bool + _, _, _ = yysep1085, yyq1085, yy2arr1085 + const yyr1085 bool = false + yyq1085[0] = x.Rule != "" + yyq1085[1] = len(x.Ranges) != 0 + var yynn1085 int + if yyr1085 || yy2arr1085 { + r.EncodeArrayStart(2) + } else { + yynn1085 = 0 + for _, b := range yyq1085 { + if b { + yynn1085++ + } + } + r.EncodeMapStart(yynn1085) + yynn1085 = 0 + } + if yyr1085 || yy2arr1085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1085[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1085[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr1085 || yy2arr1085 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1085[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1088 := z.EncBinary() + _ = yym1088 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1085[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1089 := z.EncBinary() + _ = yym1089 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1085 || yy2arr1085 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FSGroupStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1090 := z.DecBinary() + _ = yym1090 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1091 := r.ContainerType() + if yyct1091 == codecSelferValueTypeMap1234 { + yyl1091 := r.ReadMapStart() + if yyl1091 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1091, d) + } + } else if yyct1091 == codecSelferValueTypeArray1234 { + yyl1091 := r.ReadArrayStart() + if yyl1091 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1091, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1092Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1092Slc + var yyhl1092 bool = l >= 0 + for yyj1092 := 0; ; yyj1092++ { + if yyhl1092 { + if yyj1092 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1092Slc = r.DecodeBytes(yys1092Slc, true, true) + yys1092 := string(yys1092Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1092 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = FSGroupStrategyType(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1094 := &x.Ranges + yym1095 := z.DecBinary() + _ = yym1095 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1094), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1092) + } // end switch yys1092 + } // end for yyj1092 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1096 int + var yyb1096 bool + var yyhl1096 bool = l >= 0 + yyj1096++ + if yyhl1096 { + yyb1096 = yyj1096 > l + } else { + yyb1096 = r.CheckBreak() + } + if yyb1096 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = FSGroupStrategyType(r.DecodeString()) + } + yyj1096++ + if yyhl1096 { + yyb1096 = yyj1096 > l + } else { + yyb1096 = r.CheckBreak() + } + if yyb1096 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1098 := &x.Ranges + yym1099 := z.DecBinary() + _ = yym1099 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1098), d) + } + } + for { + yyj1096++ + if yyhl1096 { + yyb1096 = yyj1096 > l + } else { + yyb1096 = r.CheckBreak() + } + if yyb1096 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1096-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSGroupStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1100 := z.EncBinary() + _ = yym1100 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSGroupStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1101 := z.DecBinary() + _ = yym1101 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1102 := z.EncBinary() + _ = yym1102 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1103 := !z.EncBinary() + yy2arr1103 := z.EncBasicHandle().StructToArray + var yyq1103 [2]bool + _, _, _ = yysep1103, yyq1103, yy2arr1103 + const yyr1103 bool = false + yyq1103[0] = x.Rule != "" + yyq1103[1] = len(x.Ranges) != 0 + var yynn1103 int + if yyr1103 || yy2arr1103 { + r.EncodeArrayStart(2) + } else { + yynn1103 = 0 + for _, b := range yyq1103 { + if b { + yynn1103++ + } + } + r.EncodeMapStart(yynn1103) + yynn1103 = 0 + } + if yyr1103 || yy2arr1103 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1103[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1103[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr1103 || yy2arr1103 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1103[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1106 := z.EncBinary() + _ = yym1106 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1103[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1107 := z.EncBinary() + _ = yym1107 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1103 || yy2arr1103 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1108 := z.DecBinary() + _ = yym1108 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1109 := r.ContainerType() + if yyct1109 == codecSelferValueTypeMap1234 { + yyl1109 := r.ReadMapStart() + if yyl1109 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1109, d) + } + } else if yyct1109 == codecSelferValueTypeArray1234 { + yyl1109 := r.ReadArrayStart() + if yyl1109 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1109, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1110Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1110Slc + var yyhl1110 bool = l >= 0 + for yyj1110 := 0; ; yyj1110++ { + if yyhl1110 { + if yyj1110 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1110Slc = r.DecodeBytes(yys1110Slc, true, true) + yys1110 := string(yys1110Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1110 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SupplementalGroupsStrategyType(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1112 := &x.Ranges + yym1113 := z.DecBinary() + _ = yym1113 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1112), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1110) + } // end switch yys1110 + } // end for yyj1110 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1114 int + var yyb1114 bool + var yyhl1114 bool = l >= 0 + yyj1114++ + if yyhl1114 { + yyb1114 = yyj1114 > l + } else { + yyb1114 = r.CheckBreak() + } + if yyb1114 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SupplementalGroupsStrategyType(r.DecodeString()) + } + yyj1114++ + if yyhl1114 { + yyb1114 = yyj1114 > l + } else { + yyb1114 = r.CheckBreak() + } + if yyb1114 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1116 := &x.Ranges + yym1117 := z.DecBinary() + _ = yym1117 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1116), d) + } + } + for { + yyj1114++ + if yyhl1114 { + yyb1114 = yyj1114 > l + } else { + yyb1114 = r.CheckBreak() + } + if yyb1114 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1114-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SupplementalGroupsStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1118 := z.EncBinary() + _ = yym1118 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SupplementalGroupsStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1119 := z.DecBinary() + _ = yym1119 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSecurityPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1120 := z.EncBinary() + _ = yym1120 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1121 := !z.EncBinary() + yy2arr1121 := z.EncBasicHandle().StructToArray + var yyq1121 [4]bool + _, _, _ = yysep1121, yyq1121, yy2arr1121 + const yyr1121 bool = false + yyq1121[0] = x.Kind != "" + yyq1121[1] = x.APIVersion != "" + yyq1121[2] = true + var yynn1121 int + if yyr1121 || yy2arr1121 { + r.EncodeArrayStart(4) + } else { + yynn1121 = 1 + for _, b := range yyq1121 { + if b { + yynn1121++ + } + } + r.EncodeMapStart(yynn1121) + yynn1121 = 0 + } + if yyr1121 || yy2arr1121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1121[0] { + yym1123 := z.EncBinary() + _ = yym1123 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1121[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1124 := z.EncBinary() + _ = yym1124 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1121 || yy2arr1121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1121[1] { + yym1126 := z.EncBinary() + _ = yym1126 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1121[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1127 := z.EncBinary() + _ = yym1127 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1121 || yy2arr1121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1121[2] { + yy1129 := &x.ListMeta + yym1130 := z.EncBinary() + _ = yym1130 + if false { + } else if z.HasExtensions() && z.EncExt(yy1129) { + } else { + z.EncFallback(yy1129) + } + } else { + r.EncodeNil() + } + } else { + if yyq1121[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1131 := &x.ListMeta + yym1132 := z.EncBinary() + _ = yym1132 + if false { + } else if z.HasExtensions() && z.EncExt(yy1131) { + } else { + z.EncFallback(yy1131) + } + } + } + if yyr1121 || yy2arr1121 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1134 := z.EncBinary() + _ = yym1134 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1135 := z.EncBinary() + _ = yym1135 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } + if yyr1121 || yy2arr1121 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1136 := z.DecBinary() + _ = yym1136 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1137 := r.ContainerType() + if yyct1137 == codecSelferValueTypeMap1234 { + yyl1137 := r.ReadMapStart() + if yyl1137 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1137, d) + } + } else if yyct1137 == codecSelferValueTypeArray1234 { + yyl1137 := r.ReadArrayStart() + if yyl1137 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1137, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1138Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1138Slc + var yyhl1138 bool = l >= 0 + for yyj1138 := 0; ; yyj1138++ { + if yyhl1138 { + if yyj1138 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1138Slc = r.DecodeBytes(yys1138Slc, true, true) + yys1138 := string(yys1138Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1138 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1141 := &x.ListMeta + yym1142 := z.DecBinary() + _ = yym1142 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1141) { + } else { + z.DecFallback(yyv1141, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1143 := &x.Items + yym1144 := z.DecBinary() + _ = yym1144 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv1143), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1138) + } // end switch yys1138 + } // end for yyj1138 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1145 int + var yyb1145 bool + var yyhl1145 bool = l >= 0 + yyj1145++ + if yyhl1145 { + yyb1145 = yyj1145 > l + } else { + yyb1145 = r.CheckBreak() + } + if yyb1145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1145++ + if yyhl1145 { + yyb1145 = yyj1145 > l + } else { + yyb1145 = r.CheckBreak() + } + if yyb1145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1145++ + if yyhl1145 { + yyb1145 = yyj1145 > l + } else { + yyb1145 = r.CheckBreak() + } + if yyb1145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1148 := &x.ListMeta + yym1149 := z.DecBinary() + _ = yym1149 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1148) { + } else { + z.DecFallback(yyv1148, false) + } + } + yyj1145++ + if yyhl1145 { + yyb1145 = yyj1145 > l + } else { + yyb1145 = r.CheckBreak() + } + if yyb1145 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1150 := &x.Items + yym1151 := z.DecBinary() + _ = yym1151 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv1150), d) + } + } + for { + yyj1145++ + if yyhl1145 { + yyb1145 = yyj1145 > l + } else { + yyb1145 = r.CheckBreak() + } + if yyb1145 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1145-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1152 := z.EncBinary() + _ = yym1152 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1153 := !z.EncBinary() + yy2arr1153 := z.EncBasicHandle().StructToArray + var yyq1153 [4]bool + _, _, _ = yysep1153, yyq1153, yy2arr1153 + const yyr1153 bool = false + yyq1153[0] = x.Kind != "" + yyq1153[1] = x.APIVersion != "" + yyq1153[2] = true + yyq1153[3] = true + var yynn1153 int + if yyr1153 || yy2arr1153 { + r.EncodeArrayStart(4) + } else { + yynn1153 = 0 + for _, b := range yyq1153 { + if b { + yynn1153++ + } + } + r.EncodeMapStart(yynn1153) + yynn1153 = 0 + } + if yyr1153 || yy2arr1153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1153[0] { + yym1155 := z.EncBinary() + _ = yym1155 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1153[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1156 := z.EncBinary() + _ = yym1156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1153 || yy2arr1153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1153[1] { + yym1158 := z.EncBinary() + _ = yym1158 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1153[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1159 := z.EncBinary() + _ = yym1159 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1153 || yy2arr1153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1153[2] { + yy1161 := &x.ObjectMeta + yy1161.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1153[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1162 := &x.ObjectMeta + yy1162.CodecEncodeSelf(e) + } + } + if yyr1153 || yy2arr1153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1153[3] { + yy1164 := &x.Spec + yy1164.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1153[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1165 := &x.Spec + yy1165.CodecEncodeSelf(e) + } + } + if yyr1153 || yy2arr1153 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1166 := z.DecBinary() + _ = yym1166 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1167 := r.ContainerType() + if yyct1167 == codecSelferValueTypeMap1234 { + yyl1167 := r.ReadMapStart() + if yyl1167 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1167, d) + } + } else if yyct1167 == codecSelferValueTypeArray1234 { + yyl1167 := r.ReadArrayStart() + if yyl1167 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1167, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1168Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1168Slc + var yyhl1168 bool = l >= 0 + for yyj1168 := 0; ; yyj1168++ { + if yyhl1168 { + if yyj1168 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1168Slc = r.DecodeBytes(yys1168Slc, true, true) + yys1168 := string(yys1168Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1168 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv1171 := &x.ObjectMeta + yyv1171.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv1172 := &x.Spec + yyv1172.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1168) + } // end switch yys1168 + } // end for yyj1168 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1173 int + var yyb1173 bool + var yyhl1173 bool = l >= 0 + yyj1173++ + if yyhl1173 { + yyb1173 = yyj1173 > l + } else { + yyb1173 = r.CheckBreak() + } + if yyb1173 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1173++ + if yyhl1173 { + yyb1173 = yyj1173 > l + } else { + yyb1173 = r.CheckBreak() + } + if yyb1173 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1173++ + if yyhl1173 { + yyb1173 = yyj1173 > l + } else { + yyb1173 = r.CheckBreak() + } + if yyb1173 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv1176 := &x.ObjectMeta + yyv1176.CodecDecodeSelf(d) + } + yyj1173++ + if yyhl1173 { + yyb1173 = yyj1173 > l + } else { + yyb1173 = r.CheckBreak() + } + if yyb1173 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv1177 := &x.Spec + yyv1177.CodecDecodeSelf(d) + } + for { + yyj1173++ + if yyhl1173 { + yyb1173 = yyj1173 > l + } else { + yyb1173 = r.CheckBreak() + } + if yyb1173 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1173-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1178 := z.EncBinary() + _ = yym1178 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1179 := !z.EncBinary() + yy2arr1179 := z.EncBasicHandle().StructToArray + var yyq1179 [2]bool + _, _, _ = yysep1179, yyq1179, yy2arr1179 + const yyr1179 bool = false + yyq1179[1] = len(x.Ingress) != 0 + var yynn1179 int + if yyr1179 || yy2arr1179 { + r.EncodeArrayStart(2) + } else { + yynn1179 = 1 + for _, b := range yyq1179 { + if b { + yynn1179++ + } + } + r.EncodeMapStart(yynn1179) + yynn1179 = 0 + } + if yyr1179 || yy2arr1179 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1181 := &x.PodSelector + yym1182 := z.EncBinary() + _ = yym1182 + if false { + } else if z.HasExtensions() && z.EncExt(yy1181) { + } else { + z.EncFallback(yy1181) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1183 := &x.PodSelector + yym1184 := z.EncBinary() + _ = yym1184 + if false { + } else if z.HasExtensions() && z.EncExt(yy1183) { + } else { + z.EncFallback(yy1183) + } + } + if yyr1179 || yy2arr1179 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1179[1] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym1186 := z.EncBinary() + _ = yym1186 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1179[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym1187 := z.EncBinary() + _ = yym1187 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } + } + if yyr1179 || yy2arr1179 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1188 := z.DecBinary() + _ = yym1188 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1189 := r.ContainerType() + if yyct1189 == codecSelferValueTypeMap1234 { + yyl1189 := r.ReadMapStart() + if yyl1189 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1189, d) + } + } else if yyct1189 == codecSelferValueTypeArray1234 { + yyl1189 := r.ReadArrayStart() + if yyl1189 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1189, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1190Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1190Slc + var yyhl1190 bool = l >= 0 + for yyj1190 := 0; ; yyj1190++ { + if yyhl1190 { + if yyj1190 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1190Slc = r.DecodeBytes(yys1190Slc, true, true) + yys1190 := string(yys1190Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1190 { + case "podSelector": + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_unversioned.LabelSelector{} + } else { + yyv1191 := &x.PodSelector + yym1192 := z.DecBinary() + _ = yym1192 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1191) { + } else { + z.DecFallback(yyv1191, false) + } + } + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv1193 := &x.Ingress + yym1194 := z.DecBinary() + _ = yym1194 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv1193), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1190) + } // end switch yys1190 + } // end for yyj1190 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1195 int + var yyb1195 bool + var yyhl1195 bool = l >= 0 + yyj1195++ + if yyhl1195 { + yyb1195 = yyj1195 > l + } else { + yyb1195 = r.CheckBreak() + } + if yyb1195 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSelector = pkg1_unversioned.LabelSelector{} + } else { + yyv1196 := &x.PodSelector + yym1197 := z.DecBinary() + _ = yym1197 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1196) { + } else { + z.DecFallback(yyv1196, false) + } + } + yyj1195++ + if yyhl1195 { + yyb1195 = yyj1195 > l + } else { + yyb1195 = r.CheckBreak() + } + if yyb1195 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv1198 := &x.Ingress + yym1199 := z.DecBinary() + _ = yym1199 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv1198), d) + } + } + for { + yyj1195++ + if yyhl1195 { + yyb1195 = yyj1195 > l + } else { + yyb1195 = r.CheckBreak() + } + if yyb1195 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1195-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyIngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1200 := z.EncBinary() + _ = yym1200 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1201 := !z.EncBinary() + yy2arr1201 := z.EncBasicHandle().StructToArray + var yyq1201 [2]bool + _, _, _ = yysep1201, yyq1201, yy2arr1201 + const yyr1201 bool = false + yyq1201[0] = len(x.Ports) != 0 + yyq1201[1] = len(x.From) != 0 + var yynn1201 int + if yyr1201 || yy2arr1201 { + r.EncodeArrayStart(2) + } else { + yynn1201 = 0 + for _, b := range yyq1201 { + if b { + yynn1201++ + } + } + r.EncodeMapStart(yynn1201) + yynn1201 = 0 + } + if yyr1201 || yy2arr1201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1201[0] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym1203 := z.EncBinary() + _ = yym1203 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1201[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym1204 := z.EncBinary() + _ = yym1204 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } + } + if yyr1201 || yy2arr1201 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1201[1] { + if x.From == nil { + r.EncodeNil() + } else { + yym1206 := z.EncBinary() + _ = yym1206 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1201[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("from")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.From == nil { + r.EncodeNil() + } else { + yym1207 := z.EncBinary() + _ = yym1207 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } + } + if yyr1201 || yy2arr1201 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyIngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1208 := z.DecBinary() + _ = yym1208 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1209 := r.ContainerType() + if yyct1209 == codecSelferValueTypeMap1234 { + yyl1209 := r.ReadMapStart() + if yyl1209 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1209, d) + } + } else if yyct1209 == codecSelferValueTypeArray1234 { + yyl1209 := r.ReadArrayStart() + if yyl1209 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1209, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1210Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1210Slc + var yyhl1210 bool = l >= 0 + for yyj1210 := 0; ; yyj1210++ { + if yyhl1210 { + if yyj1210 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1210Slc = r.DecodeBytes(yys1210Slc, true, true) + yys1210 := string(yys1210Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1210 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1211 := &x.Ports + yym1212 := z.DecBinary() + _ = yym1212 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv1211), d) + } + } + case "from": + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv1213 := &x.From + yym1214 := z.DecBinary() + _ = yym1214 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv1213), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1210) + } // end switch yys1210 + } // end for yyj1210 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1215 int + var yyb1215 bool + var yyhl1215 bool = l >= 0 + yyj1215++ + if yyhl1215 { + yyb1215 = yyj1215 > l + } else { + yyb1215 = r.CheckBreak() + } + if yyb1215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1216 := &x.Ports + yym1217 := z.DecBinary() + _ = yym1217 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv1216), d) + } + } + yyj1215++ + if yyhl1215 { + yyb1215 = yyj1215 > l + } else { + yyb1215 = r.CheckBreak() + } + if yyb1215 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv1218 := &x.From + yym1219 := z.DecBinary() + _ = yym1219 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv1218), d) + } + } + for { + yyj1215++ + if yyhl1215 { + yyb1215 = yyj1215 > l + } else { + yyb1215 = r.CheckBreak() + } + if yyb1215 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1215-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1220 := z.EncBinary() + _ = yym1220 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1221 := !z.EncBinary() + yy2arr1221 := z.EncBasicHandle().StructToArray + var yyq1221 [2]bool + _, _, _ = yysep1221, yyq1221, yy2arr1221 + const yyr1221 bool = false + yyq1221[0] = x.Protocol != nil + yyq1221[1] = x.Port != nil + var yynn1221 int + if yyr1221 || yy2arr1221 { + r.EncodeArrayStart(2) + } else { + yynn1221 = 0 + for _, b := range yyq1221 { + if b { + yynn1221++ + } + } + r.EncodeMapStart(yynn1221) + yynn1221 = 0 + } + if yyr1221 || yy2arr1221 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1221[0] { + if x.Protocol == nil { + r.EncodeNil() + } else { + yy1223 := *x.Protocol + yym1224 := z.EncBinary() + _ = yym1224 + if false { + } else if z.HasExtensions() && z.EncExt(yy1223) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1223)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1221[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Protocol == nil { + r.EncodeNil() + } else { + yy1225 := *x.Protocol + yym1226 := z.EncBinary() + _ = yym1226 + if false { + } else if z.HasExtensions() && z.EncExt(yy1225) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1225)) + } + } + } + } + if yyr1221 || yy2arr1221 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1221[1] { + if x.Port == nil { + r.EncodeNil() + } else { + yym1228 := z.EncBinary() + _ = yym1228 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym1228 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1221[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Port == nil { + r.EncodeNil() + } else { + yym1229 := z.EncBinary() + _ = yym1229 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym1229 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } + } + if yyr1221 || yy2arr1221 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1230 := z.DecBinary() + _ = yym1230 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1231 := r.ContainerType() + if yyct1231 == codecSelferValueTypeMap1234 { + yyl1231 := r.ReadMapStart() + if yyl1231 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1231, d) + } + } else if yyct1231 == codecSelferValueTypeArray1234 { + yyl1231 := r.ReadArrayStart() + if yyl1231 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1231, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1232Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1232Slc + var yyhl1232 bool = l >= 0 + for yyj1232 := 0; ; yyj1232++ { + if yyhl1232 { + if yyj1232 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1232Slc = r.DecodeBytes(yys1232Slc, true, true) + yys1232 := string(yys1232Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1232 { + case "protocol": + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg2_api.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + case "port": + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym1235 := z.DecBinary() + _ = yym1235 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym1235 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1232) + } // end switch yys1232 + } // end for yyj1232 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1236 int + var yyb1236 bool + var yyhl1236 bool = l >= 0 + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg2_api.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym1239 := z.DecBinary() + _ = yym1239 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym1239 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + for { + yyj1236++ + if yyhl1236 { + yyb1236 = yyj1236 > l + } else { + yyb1236 = r.CheckBreak() + } + if yyb1236 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1236-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPeer) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1240 := z.EncBinary() + _ = yym1240 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1241 := !z.EncBinary() + yy2arr1241 := z.EncBasicHandle().StructToArray + var yyq1241 [2]bool + _, _, _ = yysep1241, yyq1241, yy2arr1241 + const yyr1241 bool = false + yyq1241[0] = x.PodSelector != nil + yyq1241[1] = x.NamespaceSelector != nil + var yynn1241 int + if yyr1241 || yy2arr1241 { + r.EncodeArrayStart(2) + } else { + yynn1241 = 0 + for _, b := range yyq1241 { + if b { + yynn1241++ + } + } + r.EncodeMapStart(yynn1241) + yynn1241 = 0 + } + if yyr1241 || yy2arr1241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1241[0] { + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym1243 := z.EncBinary() + _ = yym1243 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1241[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodSelector == nil { + r.EncodeNil() + } else { + yym1244 := z.EncBinary() + _ = yym1244 + if false { + } else if z.HasExtensions() && z.EncExt(x.PodSelector) { + } else { + z.EncFallback(x.PodSelector) + } + } + } + } + if yyr1241 || yy2arr1241 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1241[1] { + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym1246 := z.EncBinary() + _ = yym1246 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1241[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaceSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + yym1247 := z.EncBinary() + _ = yym1247 + if false { + } else if z.HasExtensions() && z.EncExt(x.NamespaceSelector) { + } else { + z.EncFallback(x.NamespaceSelector) + } + } + } + } + if yyr1241 || yy2arr1241 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPeer) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1248 := z.DecBinary() + _ = yym1248 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1249 := r.ContainerType() + if yyct1249 == codecSelferValueTypeMap1234 { + yyl1249 := r.ReadMapStart() + if yyl1249 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1249, d) + } + } else if yyct1249 == codecSelferValueTypeArray1234 { + yyl1249 := r.ReadArrayStart() + if yyl1249 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1249, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1250Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1250Slc + var yyhl1250 bool = l >= 0 + for yyj1250 := 0; ; yyj1250++ { + if yyhl1250 { + if yyj1250 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1250Slc = r.DecodeBytes(yys1250Slc, true, true) + yys1250 := string(yys1250Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1250 { + case "podSelector": + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_unversioned.LabelSelector) + } + yym1252 := z.DecBinary() + _ = yym1252 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + case "namespaceSelector": + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_unversioned.LabelSelector) + } + yym1254 := z.DecBinary() + _ = yym1254 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1250) + } // end switch yys1250 + } // end for yyj1250 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1255 int + var yyb1255 bool + var yyhl1255 bool = l >= 0 + yyj1255++ + if yyhl1255 { + yyb1255 = yyj1255 > l + } else { + yyb1255 = r.CheckBreak() + } + if yyb1255 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(pkg1_unversioned.LabelSelector) + } + yym1257 := z.DecBinary() + _ = yym1257 + if false { + } else if z.HasExtensions() && z.DecExt(x.PodSelector) { + } else { + z.DecFallback(x.PodSelector, false) + } + } + yyj1255++ + if yyhl1255 { + yyb1255 = yyj1255 > l + } else { + yyb1255 = r.CheckBreak() + } + if yyb1255 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(pkg1_unversioned.LabelSelector) + } + yym1259 := z.DecBinary() + _ = yym1259 + if false { + } else if z.HasExtensions() && z.DecExt(x.NamespaceSelector) { + } else { + z.DecFallback(x.NamespaceSelector, false) + } + } + for { + yyj1255++ + if yyhl1255 { + yyb1255 = yyj1255 > l + } else { + yyb1255 = r.CheckBreak() + } + if yyb1255 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1255-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1260 := z.EncBinary() + _ = yym1260 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1261 := !z.EncBinary() + yy2arr1261 := z.EncBasicHandle().StructToArray + var yyq1261 [4]bool + _, _, _ = yysep1261, yyq1261, yy2arr1261 + const yyr1261 bool = false + yyq1261[0] = x.Kind != "" + yyq1261[1] = x.APIVersion != "" + yyq1261[2] = true + var yynn1261 int + if yyr1261 || yy2arr1261 { + r.EncodeArrayStart(4) + } else { + yynn1261 = 1 + for _, b := range yyq1261 { + if b { + yynn1261++ + } + } + r.EncodeMapStart(yynn1261) + yynn1261 = 0 + } + if yyr1261 || yy2arr1261 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1261[0] { + yym1263 := z.EncBinary() + _ = yym1263 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1261[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1264 := z.EncBinary() + _ = yym1264 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1261 || yy2arr1261 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1261[1] { + yym1266 := z.EncBinary() + _ = yym1266 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1261[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1267 := z.EncBinary() + _ = yym1267 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1261 || yy2arr1261 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1261[2] { + yy1269 := &x.ListMeta + yym1270 := z.EncBinary() + _ = yym1270 + if false { + } else if z.HasExtensions() && z.EncExt(yy1269) { + } else { + z.EncFallback(yy1269) + } + } else { + r.EncodeNil() + } + } else { + if yyq1261[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1271 := &x.ListMeta + yym1272 := z.EncBinary() + _ = yym1272 + if false { + } else if z.HasExtensions() && z.EncExt(yy1271) { + } else { + z.EncFallback(yy1271) + } + } + } + if yyr1261 || yy2arr1261 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1274 := z.EncBinary() + _ = yym1274 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1275 := z.EncBinary() + _ = yym1275 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } + if yyr1261 || yy2arr1261 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1276 := z.DecBinary() + _ = yym1276 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1277 := r.ContainerType() + if yyct1277 == codecSelferValueTypeMap1234 { + yyl1277 := r.ReadMapStart() + if yyl1277 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1277, d) + } + } else if yyct1277 == codecSelferValueTypeArray1234 { + yyl1277 := r.ReadArrayStart() + if yyl1277 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1277, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1278Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1278Slc + var yyhl1278 bool = l >= 0 + for yyj1278 := 0; ; yyj1278++ { + if yyhl1278 { + if yyj1278 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1278Slc = r.DecodeBytes(yys1278Slc, true, true) + yys1278 := string(yys1278Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1278 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1281 := &x.ListMeta + yym1282 := z.DecBinary() + _ = yym1282 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1281) { + } else { + z.DecFallback(yyv1281, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1283 := &x.Items + yym1284 := z.DecBinary() + _ = yym1284 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv1283), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1278) + } // end switch yys1278 + } // end for yyj1278 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1285 int + var yyb1285 bool + var yyhl1285 bool = l >= 0 + yyj1285++ + if yyhl1285 { + yyb1285 = yyj1285 > l + } else { + yyb1285 = r.CheckBreak() + } + if yyb1285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1285++ + if yyhl1285 { + yyb1285 = yyj1285 > l + } else { + yyb1285 = r.CheckBreak() + } + if yyb1285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1285++ + if yyhl1285 { + yyb1285 = yyj1285 > l + } else { + yyb1285 = r.CheckBreak() + } + if yyb1285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1288 := &x.ListMeta + yym1289 := z.DecBinary() + _ = yym1289 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1288) { + } else { + z.DecFallback(yyv1288, false) + } + } + yyj1285++ + if yyhl1285 { + yyb1285 = yyj1285 > l + } else { + yyb1285 = r.CheckBreak() + } + if yyb1285 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1290 := &x.Items + yym1291 := z.DecBinary() + _ = yym1291 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv1290), d) + } + } + for { + yyj1285++ + if yyhl1285 { + yyb1285 = yyj1285 > l + } else { + yyb1285 = r.CheckBreak() + } + if yyb1285 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1285-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1292 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1293 := &yyv1292 + yy1293.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricTarget(v *[]CustomMetricTarget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1294 := *v + yyh1294, yyl1294 := z.DecSliceHelperStart() + var yyc1294 bool + if yyl1294 == 0 { + if yyv1294 == nil { + yyv1294 = []CustomMetricTarget{} + yyc1294 = true + } else if len(yyv1294) != 0 { + yyv1294 = yyv1294[:0] + yyc1294 = true + } + } else if yyl1294 > 0 { + var yyrr1294, yyrl1294 int + var yyrt1294 bool + if yyl1294 > cap(yyv1294) { + + yyrg1294 := len(yyv1294) > 0 + yyv21294 := yyv1294 + yyrl1294, yyrt1294 = z.DecInferLen(yyl1294, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1294 { + if yyrl1294 <= cap(yyv1294) { + yyv1294 = yyv1294[:yyrl1294] + } else { + yyv1294 = make([]CustomMetricTarget, yyrl1294) + } + } else { + yyv1294 = make([]CustomMetricTarget, yyrl1294) + } + yyc1294 = true + yyrr1294 = len(yyv1294) + if yyrg1294 { + copy(yyv1294, yyv21294) + } + } else if yyl1294 != len(yyv1294) { + yyv1294 = yyv1294[:yyl1294] + yyc1294 = true + } + yyj1294 := 0 + for ; yyj1294 < yyrr1294; yyj1294++ { + yyh1294.ElemContainerState(yyj1294) + if r.TryDecodeAsNil() { + yyv1294[yyj1294] = CustomMetricTarget{} + } else { + yyv1295 := &yyv1294[yyj1294] + yyv1295.CodecDecodeSelf(d) + } + + } + if yyrt1294 { + for ; yyj1294 < yyl1294; yyj1294++ { + yyv1294 = append(yyv1294, CustomMetricTarget{}) + yyh1294.ElemContainerState(yyj1294) + if r.TryDecodeAsNil() { + yyv1294[yyj1294] = CustomMetricTarget{} + } else { + yyv1296 := &yyv1294[yyj1294] + yyv1296.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1294 := 0 + for ; !r.CheckBreak(); yyj1294++ { + + if yyj1294 >= len(yyv1294) { + yyv1294 = append(yyv1294, CustomMetricTarget{}) // var yyz1294 CustomMetricTarget + yyc1294 = true + } + yyh1294.ElemContainerState(yyj1294) + if yyj1294 < len(yyv1294) { + if r.TryDecodeAsNil() { + yyv1294[yyj1294] = CustomMetricTarget{} + } else { + yyv1297 := &yyv1294[yyj1294] + yyv1297.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1294 < len(yyv1294) { + yyv1294 = yyv1294[:yyj1294] + yyc1294 = true + } else if yyj1294 == 0 && yyv1294 == nil { + yyv1294 = []CustomMetricTarget{} + yyc1294 = true + } + } + yyh1294.End() + if yyc1294 { + *v = yyv1294 + } +} + +func (x codecSelfer1234) encSliceCustomMetricCurrentStatus(v []CustomMetricCurrentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1298 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1299 := &yyv1298 + yy1299.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricCurrentStatus(v *[]CustomMetricCurrentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1300 := *v + yyh1300, yyl1300 := z.DecSliceHelperStart() + var yyc1300 bool + if yyl1300 == 0 { + if yyv1300 == nil { + yyv1300 = []CustomMetricCurrentStatus{} + yyc1300 = true + } else if len(yyv1300) != 0 { + yyv1300 = yyv1300[:0] + yyc1300 = true + } + } else if yyl1300 > 0 { + var yyrr1300, yyrl1300 int + var yyrt1300 bool + if yyl1300 > cap(yyv1300) { + + yyrg1300 := len(yyv1300) > 0 + yyv21300 := yyv1300 + yyrl1300, yyrt1300 = z.DecInferLen(yyl1300, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1300 { + if yyrl1300 <= cap(yyv1300) { + yyv1300 = yyv1300[:yyrl1300] + } else { + yyv1300 = make([]CustomMetricCurrentStatus, yyrl1300) + } + } else { + yyv1300 = make([]CustomMetricCurrentStatus, yyrl1300) + } + yyc1300 = true + yyrr1300 = len(yyv1300) + if yyrg1300 { + copy(yyv1300, yyv21300) + } + } else if yyl1300 != len(yyv1300) { + yyv1300 = yyv1300[:yyl1300] + yyc1300 = true + } + yyj1300 := 0 + for ; yyj1300 < yyrr1300; yyj1300++ { + yyh1300.ElemContainerState(yyj1300) + if r.TryDecodeAsNil() { + yyv1300[yyj1300] = CustomMetricCurrentStatus{} + } else { + yyv1301 := &yyv1300[yyj1300] + yyv1301.CodecDecodeSelf(d) + } + + } + if yyrt1300 { + for ; yyj1300 < yyl1300; yyj1300++ { + yyv1300 = append(yyv1300, CustomMetricCurrentStatus{}) + yyh1300.ElemContainerState(yyj1300) + if r.TryDecodeAsNil() { + yyv1300[yyj1300] = CustomMetricCurrentStatus{} + } else { + yyv1302 := &yyv1300[yyj1300] + yyv1302.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1300 := 0 + for ; !r.CheckBreak(); yyj1300++ { + + if yyj1300 >= len(yyv1300) { + yyv1300 = append(yyv1300, CustomMetricCurrentStatus{}) // var yyz1300 CustomMetricCurrentStatus + yyc1300 = true + } + yyh1300.ElemContainerState(yyj1300) + if yyj1300 < len(yyv1300) { + if r.TryDecodeAsNil() { + yyv1300[yyj1300] = CustomMetricCurrentStatus{} + } else { + yyv1303 := &yyv1300[yyj1300] + yyv1303.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1300 < len(yyv1300) { + yyv1300 = yyv1300[:yyj1300] + yyc1300 = true + } else if yyj1300 == 0 && yyv1300 == nil { + yyv1300 = []CustomMetricCurrentStatus{} + yyc1300 = true + } + } + yyh1300.End() + if yyc1300 { + *v = yyv1300 + } +} + +func (x codecSelfer1234) encSliceAPIVersion(v []APIVersion, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1304 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1305 := &yyv1304 + yy1305.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAPIVersion(v *[]APIVersion, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1306 := *v + yyh1306, yyl1306 := z.DecSliceHelperStart() + var yyc1306 bool + if yyl1306 == 0 { + if yyv1306 == nil { + yyv1306 = []APIVersion{} + yyc1306 = true + } else if len(yyv1306) != 0 { + yyv1306 = yyv1306[:0] + yyc1306 = true + } + } else if yyl1306 > 0 { + var yyrr1306, yyrl1306 int + var yyrt1306 bool + if yyl1306 > cap(yyv1306) { + + yyrg1306 := len(yyv1306) > 0 + yyv21306 := yyv1306 + yyrl1306, yyrt1306 = z.DecInferLen(yyl1306, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1306 { + if yyrl1306 <= cap(yyv1306) { + yyv1306 = yyv1306[:yyrl1306] + } else { + yyv1306 = make([]APIVersion, yyrl1306) + } + } else { + yyv1306 = make([]APIVersion, yyrl1306) + } + yyc1306 = true + yyrr1306 = len(yyv1306) + if yyrg1306 { + copy(yyv1306, yyv21306) + } + } else if yyl1306 != len(yyv1306) { + yyv1306 = yyv1306[:yyl1306] + yyc1306 = true + } + yyj1306 := 0 + for ; yyj1306 < yyrr1306; yyj1306++ { + yyh1306.ElemContainerState(yyj1306) + if r.TryDecodeAsNil() { + yyv1306[yyj1306] = APIVersion{} + } else { + yyv1307 := &yyv1306[yyj1306] + yyv1307.CodecDecodeSelf(d) + } + + } + if yyrt1306 { + for ; yyj1306 < yyl1306; yyj1306++ { + yyv1306 = append(yyv1306, APIVersion{}) + yyh1306.ElemContainerState(yyj1306) + if r.TryDecodeAsNil() { + yyv1306[yyj1306] = APIVersion{} + } else { + yyv1308 := &yyv1306[yyj1306] + yyv1308.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1306 := 0 + for ; !r.CheckBreak(); yyj1306++ { + + if yyj1306 >= len(yyv1306) { + yyv1306 = append(yyv1306, APIVersion{}) // var yyz1306 APIVersion + yyc1306 = true + } + yyh1306.ElemContainerState(yyj1306) + if yyj1306 < len(yyv1306) { + if r.TryDecodeAsNil() { + yyv1306[yyj1306] = APIVersion{} + } else { + yyv1309 := &yyv1306[yyj1306] + yyv1309.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1306 < len(yyv1306) { + yyv1306 = yyv1306[:yyj1306] + yyc1306 = true + } else if yyj1306 == 0 && yyv1306 == nil { + yyv1306 = []APIVersion{} + yyc1306 = true + } + } + yyh1306.End() + if yyc1306 { + *v = yyv1306 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResource(v []ThirdPartyResource, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1310 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1311 := &yyv1310 + yy1311.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResource(v *[]ThirdPartyResource, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1312 := *v + yyh1312, yyl1312 := z.DecSliceHelperStart() + var yyc1312 bool + if yyl1312 == 0 { + if yyv1312 == nil { + yyv1312 = []ThirdPartyResource{} + yyc1312 = true + } else if len(yyv1312) != 0 { + yyv1312 = yyv1312[:0] + yyc1312 = true + } + } else if yyl1312 > 0 { + var yyrr1312, yyrl1312 int + var yyrt1312 bool + if yyl1312 > cap(yyv1312) { + + yyrg1312 := len(yyv1312) > 0 + yyv21312 := yyv1312 + yyrl1312, yyrt1312 = z.DecInferLen(yyl1312, z.DecBasicHandle().MaxInitLen, 296) + if yyrt1312 { + if yyrl1312 <= cap(yyv1312) { + yyv1312 = yyv1312[:yyrl1312] + } else { + yyv1312 = make([]ThirdPartyResource, yyrl1312) + } + } else { + yyv1312 = make([]ThirdPartyResource, yyrl1312) + } + yyc1312 = true + yyrr1312 = len(yyv1312) + if yyrg1312 { + copy(yyv1312, yyv21312) + } + } else if yyl1312 != len(yyv1312) { + yyv1312 = yyv1312[:yyl1312] + yyc1312 = true + } + yyj1312 := 0 + for ; yyj1312 < yyrr1312; yyj1312++ { + yyh1312.ElemContainerState(yyj1312) + if r.TryDecodeAsNil() { + yyv1312[yyj1312] = ThirdPartyResource{} + } else { + yyv1313 := &yyv1312[yyj1312] + yyv1313.CodecDecodeSelf(d) + } + + } + if yyrt1312 { + for ; yyj1312 < yyl1312; yyj1312++ { + yyv1312 = append(yyv1312, ThirdPartyResource{}) + yyh1312.ElemContainerState(yyj1312) + if r.TryDecodeAsNil() { + yyv1312[yyj1312] = ThirdPartyResource{} + } else { + yyv1314 := &yyv1312[yyj1312] + yyv1314.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1312 := 0 + for ; !r.CheckBreak(); yyj1312++ { + + if yyj1312 >= len(yyv1312) { + yyv1312 = append(yyv1312, ThirdPartyResource{}) // var yyz1312 ThirdPartyResource + yyc1312 = true + } + yyh1312.ElemContainerState(yyj1312) + if yyj1312 < len(yyv1312) { + if r.TryDecodeAsNil() { + yyv1312[yyj1312] = ThirdPartyResource{} + } else { + yyv1315 := &yyv1312[yyj1312] + yyv1315.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1312 < len(yyv1312) { + yyv1312 = yyv1312[:yyj1312] + yyc1312 = true + } else if yyj1312 == 0 && yyv1312 == nil { + yyv1312 = []ThirdPartyResource{} + yyc1312 = true + } + } + yyh1312.End() + if yyc1312 { + *v = yyv1312 + } +} + +func (x codecSelfer1234) encSliceDeployment(v []Deployment, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1316 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1317 := &yyv1316 + yy1317.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeployment(v *[]Deployment, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1318 := *v + yyh1318, yyl1318 := z.DecSliceHelperStart() + var yyc1318 bool + if yyl1318 == 0 { + if yyv1318 == nil { + yyv1318 = []Deployment{} + yyc1318 = true + } else if len(yyv1318) != 0 { + yyv1318 = yyv1318[:0] + yyc1318 = true + } + } else if yyl1318 > 0 { + var yyrr1318, yyrl1318 int + var yyrt1318 bool + if yyl1318 > cap(yyv1318) { + + yyrg1318 := len(yyv1318) > 0 + yyv21318 := yyv1318 + yyrl1318, yyrt1318 = z.DecInferLen(yyl1318, z.DecBasicHandle().MaxInitLen, 800) + if yyrt1318 { + if yyrl1318 <= cap(yyv1318) { + yyv1318 = yyv1318[:yyrl1318] + } else { + yyv1318 = make([]Deployment, yyrl1318) + } + } else { + yyv1318 = make([]Deployment, yyrl1318) + } + yyc1318 = true + yyrr1318 = len(yyv1318) + if yyrg1318 { + copy(yyv1318, yyv21318) + } + } else if yyl1318 != len(yyv1318) { + yyv1318 = yyv1318[:yyl1318] + yyc1318 = true + } + yyj1318 := 0 + for ; yyj1318 < yyrr1318; yyj1318++ { + yyh1318.ElemContainerState(yyj1318) + if r.TryDecodeAsNil() { + yyv1318[yyj1318] = Deployment{} + } else { + yyv1319 := &yyv1318[yyj1318] + yyv1319.CodecDecodeSelf(d) + } + + } + if yyrt1318 { + for ; yyj1318 < yyl1318; yyj1318++ { + yyv1318 = append(yyv1318, Deployment{}) + yyh1318.ElemContainerState(yyj1318) + if r.TryDecodeAsNil() { + yyv1318[yyj1318] = Deployment{} + } else { + yyv1320 := &yyv1318[yyj1318] + yyv1320.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1318 := 0 + for ; !r.CheckBreak(); yyj1318++ { + + if yyj1318 >= len(yyv1318) { + yyv1318 = append(yyv1318, Deployment{}) // var yyz1318 Deployment + yyc1318 = true + } + yyh1318.ElemContainerState(yyj1318) + if yyj1318 < len(yyv1318) { + if r.TryDecodeAsNil() { + yyv1318[yyj1318] = Deployment{} + } else { + yyv1321 := &yyv1318[yyj1318] + yyv1321.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1318 < len(yyv1318) { + yyv1318 = yyv1318[:yyj1318] + yyc1318 = true + } else if yyj1318 == 0 && yyv1318 == nil { + yyv1318 = []Deployment{} + yyc1318 = true + } + } + yyh1318.End() + if yyc1318 { + *v = yyv1318 + } +} + +func (x codecSelfer1234) encSliceDaemonSet(v []DaemonSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1322 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1323 := &yyv1322 + yy1323.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDaemonSet(v *[]DaemonSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1324 := *v + yyh1324, yyl1324 := z.DecSliceHelperStart() + var yyc1324 bool + if yyl1324 == 0 { + if yyv1324 == nil { + yyv1324 = []DaemonSet{} + yyc1324 = true + } else if len(yyv1324) != 0 { + yyv1324 = yyv1324[:0] + yyc1324 = true + } + } else if yyl1324 > 0 { + var yyrr1324, yyrl1324 int + var yyrt1324 bool + if yyl1324 > cap(yyv1324) { + + yyrg1324 := len(yyv1324) > 0 + yyv21324 := yyv1324 + yyrl1324, yyrt1324 = z.DecInferLen(yyl1324, z.DecBasicHandle().MaxInitLen, 728) + if yyrt1324 { + if yyrl1324 <= cap(yyv1324) { + yyv1324 = yyv1324[:yyrl1324] + } else { + yyv1324 = make([]DaemonSet, yyrl1324) + } + } else { + yyv1324 = make([]DaemonSet, yyrl1324) + } + yyc1324 = true + yyrr1324 = len(yyv1324) + if yyrg1324 { + copy(yyv1324, yyv21324) + } + } else if yyl1324 != len(yyv1324) { + yyv1324 = yyv1324[:yyl1324] + yyc1324 = true + } + yyj1324 := 0 + for ; yyj1324 < yyrr1324; yyj1324++ { + yyh1324.ElemContainerState(yyj1324) + if r.TryDecodeAsNil() { + yyv1324[yyj1324] = DaemonSet{} + } else { + yyv1325 := &yyv1324[yyj1324] + yyv1325.CodecDecodeSelf(d) + } + + } + if yyrt1324 { + for ; yyj1324 < yyl1324; yyj1324++ { + yyv1324 = append(yyv1324, DaemonSet{}) + yyh1324.ElemContainerState(yyj1324) + if r.TryDecodeAsNil() { + yyv1324[yyj1324] = DaemonSet{} + } else { + yyv1326 := &yyv1324[yyj1324] + yyv1326.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1324 := 0 + for ; !r.CheckBreak(); yyj1324++ { + + if yyj1324 >= len(yyv1324) { + yyv1324 = append(yyv1324, DaemonSet{}) // var yyz1324 DaemonSet + yyc1324 = true + } + yyh1324.ElemContainerState(yyj1324) + if yyj1324 < len(yyv1324) { + if r.TryDecodeAsNil() { + yyv1324[yyj1324] = DaemonSet{} + } else { + yyv1327 := &yyv1324[yyj1324] + yyv1327.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1324 < len(yyv1324) { + yyv1324 = yyv1324[:yyj1324] + yyc1324 = true + } else if yyj1324 == 0 && yyv1324 == nil { + yyv1324 = []DaemonSet{} + yyc1324 = true + } + } + yyh1324.End() + if yyc1324 { + *v = yyv1324 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResourceData(v []ThirdPartyResourceData, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1328 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1329 := &yyv1328 + yy1329.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResourceData(v *[]ThirdPartyResourceData, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1330 := *v + yyh1330, yyl1330 := z.DecSliceHelperStart() + var yyc1330 bool + if yyl1330 == 0 { + if yyv1330 == nil { + yyv1330 = []ThirdPartyResourceData{} + yyc1330 = true + } else if len(yyv1330) != 0 { + yyv1330 = yyv1330[:0] + yyc1330 = true + } + } else if yyl1330 > 0 { + var yyrr1330, yyrl1330 int + var yyrt1330 bool + if yyl1330 > cap(yyv1330) { + + yyrg1330 := len(yyv1330) > 0 + yyv21330 := yyv1330 + yyrl1330, yyrt1330 = z.DecInferLen(yyl1330, z.DecBasicHandle().MaxInitLen, 280) + if yyrt1330 { + if yyrl1330 <= cap(yyv1330) { + yyv1330 = yyv1330[:yyrl1330] + } else { + yyv1330 = make([]ThirdPartyResourceData, yyrl1330) + } + } else { + yyv1330 = make([]ThirdPartyResourceData, yyrl1330) + } + yyc1330 = true + yyrr1330 = len(yyv1330) + if yyrg1330 { + copy(yyv1330, yyv21330) + } + } else if yyl1330 != len(yyv1330) { + yyv1330 = yyv1330[:yyl1330] + yyc1330 = true + } + yyj1330 := 0 + for ; yyj1330 < yyrr1330; yyj1330++ { + yyh1330.ElemContainerState(yyj1330) + if r.TryDecodeAsNil() { + yyv1330[yyj1330] = ThirdPartyResourceData{} + } else { + yyv1331 := &yyv1330[yyj1330] + yyv1331.CodecDecodeSelf(d) + } + + } + if yyrt1330 { + for ; yyj1330 < yyl1330; yyj1330++ { + yyv1330 = append(yyv1330, ThirdPartyResourceData{}) + yyh1330.ElemContainerState(yyj1330) + if r.TryDecodeAsNil() { + yyv1330[yyj1330] = ThirdPartyResourceData{} + } else { + yyv1332 := &yyv1330[yyj1330] + yyv1332.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1330 := 0 + for ; !r.CheckBreak(); yyj1330++ { + + if yyj1330 >= len(yyv1330) { + yyv1330 = append(yyv1330, ThirdPartyResourceData{}) // var yyz1330 ThirdPartyResourceData + yyc1330 = true + } + yyh1330.ElemContainerState(yyj1330) + if yyj1330 < len(yyv1330) { + if r.TryDecodeAsNil() { + yyv1330[yyj1330] = ThirdPartyResourceData{} + } else { + yyv1333 := &yyv1330[yyj1330] + yyv1333.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1330 < len(yyv1330) { + yyv1330 = yyv1330[:yyj1330] + yyc1330 = true + } else if yyj1330 == 0 && yyv1330 == nil { + yyv1330 = []ThirdPartyResourceData{} + yyc1330 = true + } + } + yyh1330.End() + if yyc1330 { + *v = yyv1330 + } +} + +func (x codecSelfer1234) encSliceIngress(v []Ingress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1334 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1335 := &yyv1334 + yy1335.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngress(v *[]Ingress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1336 := *v + yyh1336, yyl1336 := z.DecSliceHelperStart() + var yyc1336 bool + if yyl1336 == 0 { + if yyv1336 == nil { + yyv1336 = []Ingress{} + yyc1336 = true + } else if len(yyv1336) != 0 { + yyv1336 = yyv1336[:0] + yyc1336 = true + } + } else if yyl1336 > 0 { + var yyrr1336, yyrl1336 int + var yyrt1336 bool + if yyl1336 > cap(yyv1336) { + + yyrg1336 := len(yyv1336) > 0 + yyv21336 := yyv1336 + yyrl1336, yyrt1336 = z.DecInferLen(yyl1336, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1336 { + if yyrl1336 <= cap(yyv1336) { + yyv1336 = yyv1336[:yyrl1336] + } else { + yyv1336 = make([]Ingress, yyrl1336) + } + } else { + yyv1336 = make([]Ingress, yyrl1336) + } + yyc1336 = true + yyrr1336 = len(yyv1336) + if yyrg1336 { + copy(yyv1336, yyv21336) + } + } else if yyl1336 != len(yyv1336) { + yyv1336 = yyv1336[:yyl1336] + yyc1336 = true + } + yyj1336 := 0 + for ; yyj1336 < yyrr1336; yyj1336++ { + yyh1336.ElemContainerState(yyj1336) + if r.TryDecodeAsNil() { + yyv1336[yyj1336] = Ingress{} + } else { + yyv1337 := &yyv1336[yyj1336] + yyv1337.CodecDecodeSelf(d) + } + + } + if yyrt1336 { + for ; yyj1336 < yyl1336; yyj1336++ { + yyv1336 = append(yyv1336, Ingress{}) + yyh1336.ElemContainerState(yyj1336) + if r.TryDecodeAsNil() { + yyv1336[yyj1336] = Ingress{} + } else { + yyv1338 := &yyv1336[yyj1336] + yyv1338.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1336 := 0 + for ; !r.CheckBreak(); yyj1336++ { + + if yyj1336 >= len(yyv1336) { + yyv1336 = append(yyv1336, Ingress{}) // var yyz1336 Ingress + yyc1336 = true + } + yyh1336.ElemContainerState(yyj1336) + if yyj1336 < len(yyv1336) { + if r.TryDecodeAsNil() { + yyv1336[yyj1336] = Ingress{} + } else { + yyv1339 := &yyv1336[yyj1336] + yyv1339.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1336 < len(yyv1336) { + yyv1336 = yyv1336[:yyj1336] + yyc1336 = true + } else if yyj1336 == 0 && yyv1336 == nil { + yyv1336 = []Ingress{} + yyc1336 = true + } + } + yyh1336.End() + if yyc1336 { + *v = yyv1336 + } +} + +func (x codecSelfer1234) encSliceIngressTLS(v []IngressTLS, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1340 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1341 := &yyv1340 + yy1341.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressTLS(v *[]IngressTLS, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1342 := *v + yyh1342, yyl1342 := z.DecSliceHelperStart() + var yyc1342 bool + if yyl1342 == 0 { + if yyv1342 == nil { + yyv1342 = []IngressTLS{} + yyc1342 = true + } else if len(yyv1342) != 0 { + yyv1342 = yyv1342[:0] + yyc1342 = true + } + } else if yyl1342 > 0 { + var yyrr1342, yyrl1342 int + var yyrt1342 bool + if yyl1342 > cap(yyv1342) { + + yyrg1342 := len(yyv1342) > 0 + yyv21342 := yyv1342 + yyrl1342, yyrt1342 = z.DecInferLen(yyl1342, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1342 { + if yyrl1342 <= cap(yyv1342) { + yyv1342 = yyv1342[:yyrl1342] + } else { + yyv1342 = make([]IngressTLS, yyrl1342) + } + } else { + yyv1342 = make([]IngressTLS, yyrl1342) + } + yyc1342 = true + yyrr1342 = len(yyv1342) + if yyrg1342 { + copy(yyv1342, yyv21342) + } + } else if yyl1342 != len(yyv1342) { + yyv1342 = yyv1342[:yyl1342] + yyc1342 = true + } + yyj1342 := 0 + for ; yyj1342 < yyrr1342; yyj1342++ { + yyh1342.ElemContainerState(yyj1342) + if r.TryDecodeAsNil() { + yyv1342[yyj1342] = IngressTLS{} + } else { + yyv1343 := &yyv1342[yyj1342] + yyv1343.CodecDecodeSelf(d) + } + + } + if yyrt1342 { + for ; yyj1342 < yyl1342; yyj1342++ { + yyv1342 = append(yyv1342, IngressTLS{}) + yyh1342.ElemContainerState(yyj1342) + if r.TryDecodeAsNil() { + yyv1342[yyj1342] = IngressTLS{} + } else { + yyv1344 := &yyv1342[yyj1342] + yyv1344.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1342 := 0 + for ; !r.CheckBreak(); yyj1342++ { + + if yyj1342 >= len(yyv1342) { + yyv1342 = append(yyv1342, IngressTLS{}) // var yyz1342 IngressTLS + yyc1342 = true + } + yyh1342.ElemContainerState(yyj1342) + if yyj1342 < len(yyv1342) { + if r.TryDecodeAsNil() { + yyv1342[yyj1342] = IngressTLS{} + } else { + yyv1345 := &yyv1342[yyj1342] + yyv1345.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1342 < len(yyv1342) { + yyv1342 = yyv1342[:yyj1342] + yyc1342 = true + } else if yyj1342 == 0 && yyv1342 == nil { + yyv1342 = []IngressTLS{} + yyc1342 = true + } + } + yyh1342.End() + if yyc1342 { + *v = yyv1342 + } +} + +func (x codecSelfer1234) encSliceIngressRule(v []IngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1346 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1347 := &yyv1346 + yy1347.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressRule(v *[]IngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1348 := *v + yyh1348, yyl1348 := z.DecSliceHelperStart() + var yyc1348 bool + if yyl1348 == 0 { + if yyv1348 == nil { + yyv1348 = []IngressRule{} + yyc1348 = true + } else if len(yyv1348) != 0 { + yyv1348 = yyv1348[:0] + yyc1348 = true + } + } else if yyl1348 > 0 { + var yyrr1348, yyrl1348 int + var yyrt1348 bool + if yyl1348 > cap(yyv1348) { + + yyrg1348 := len(yyv1348) > 0 + yyv21348 := yyv1348 + yyrl1348, yyrt1348 = z.DecInferLen(yyl1348, z.DecBasicHandle().MaxInitLen, 24) + if yyrt1348 { + if yyrl1348 <= cap(yyv1348) { + yyv1348 = yyv1348[:yyrl1348] + } else { + yyv1348 = make([]IngressRule, yyrl1348) + } + } else { + yyv1348 = make([]IngressRule, yyrl1348) + } + yyc1348 = true + yyrr1348 = len(yyv1348) + if yyrg1348 { + copy(yyv1348, yyv21348) + } + } else if yyl1348 != len(yyv1348) { + yyv1348 = yyv1348[:yyl1348] + yyc1348 = true + } + yyj1348 := 0 + for ; yyj1348 < yyrr1348; yyj1348++ { + yyh1348.ElemContainerState(yyj1348) + if r.TryDecodeAsNil() { + yyv1348[yyj1348] = IngressRule{} + } else { + yyv1349 := &yyv1348[yyj1348] + yyv1349.CodecDecodeSelf(d) + } + + } + if yyrt1348 { + for ; yyj1348 < yyl1348; yyj1348++ { + yyv1348 = append(yyv1348, IngressRule{}) + yyh1348.ElemContainerState(yyj1348) + if r.TryDecodeAsNil() { + yyv1348[yyj1348] = IngressRule{} + } else { + yyv1350 := &yyv1348[yyj1348] + yyv1350.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1348 := 0 + for ; !r.CheckBreak(); yyj1348++ { + + if yyj1348 >= len(yyv1348) { + yyv1348 = append(yyv1348, IngressRule{}) // var yyz1348 IngressRule + yyc1348 = true + } + yyh1348.ElemContainerState(yyj1348) + if yyj1348 < len(yyv1348) { + if r.TryDecodeAsNil() { + yyv1348[yyj1348] = IngressRule{} + } else { + yyv1351 := &yyv1348[yyj1348] + yyv1351.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1348 < len(yyv1348) { + yyv1348 = yyv1348[:yyj1348] + yyc1348 = true + } else if yyj1348 == 0 && yyv1348 == nil { + yyv1348 = []IngressRule{} + yyc1348 = true + } + } + yyh1348.End() + if yyc1348 { + *v = yyv1348 + } +} + +func (x codecSelfer1234) encSliceHTTPIngressPath(v []HTTPIngressPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1352 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1353 := &yyv1352 + yy1353.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPIngressPath(v *[]HTTPIngressPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1354 := *v + yyh1354, yyl1354 := z.DecSliceHelperStart() + var yyc1354 bool + if yyl1354 == 0 { + if yyv1354 == nil { + yyv1354 = []HTTPIngressPath{} + yyc1354 = true + } else if len(yyv1354) != 0 { + yyv1354 = yyv1354[:0] + yyc1354 = true + } + } else if yyl1354 > 0 { + var yyrr1354, yyrl1354 int + var yyrt1354 bool + if yyl1354 > cap(yyv1354) { + + yyrg1354 := len(yyv1354) > 0 + yyv21354 := yyv1354 + yyrl1354, yyrt1354 = z.DecInferLen(yyl1354, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1354 { + if yyrl1354 <= cap(yyv1354) { + yyv1354 = yyv1354[:yyrl1354] + } else { + yyv1354 = make([]HTTPIngressPath, yyrl1354) + } + } else { + yyv1354 = make([]HTTPIngressPath, yyrl1354) + } + yyc1354 = true + yyrr1354 = len(yyv1354) + if yyrg1354 { + copy(yyv1354, yyv21354) + } + } else if yyl1354 != len(yyv1354) { + yyv1354 = yyv1354[:yyl1354] + yyc1354 = true + } + yyj1354 := 0 + for ; yyj1354 < yyrr1354; yyj1354++ { + yyh1354.ElemContainerState(yyj1354) + if r.TryDecodeAsNil() { + yyv1354[yyj1354] = HTTPIngressPath{} + } else { + yyv1355 := &yyv1354[yyj1354] + yyv1355.CodecDecodeSelf(d) + } + + } + if yyrt1354 { + for ; yyj1354 < yyl1354; yyj1354++ { + yyv1354 = append(yyv1354, HTTPIngressPath{}) + yyh1354.ElemContainerState(yyj1354) + if r.TryDecodeAsNil() { + yyv1354[yyj1354] = HTTPIngressPath{} + } else { + yyv1356 := &yyv1354[yyj1354] + yyv1356.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1354 := 0 + for ; !r.CheckBreak(); yyj1354++ { + + if yyj1354 >= len(yyv1354) { + yyv1354 = append(yyv1354, HTTPIngressPath{}) // var yyz1354 HTTPIngressPath + yyc1354 = true + } + yyh1354.ElemContainerState(yyj1354) + if yyj1354 < len(yyv1354) { + if r.TryDecodeAsNil() { + yyv1354[yyj1354] = HTTPIngressPath{} + } else { + yyv1357 := &yyv1354[yyj1354] + yyv1357.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1354 < len(yyv1354) { + yyv1354 = yyv1354[:yyj1354] + yyc1354 = true + } else if yyj1354 == 0 && yyv1354 == nil { + yyv1354 = []HTTPIngressPath{} + yyc1354 = true + } + } + yyh1354.End() + if yyc1354 { + *v = yyv1354 + } +} + +func (x codecSelfer1234) encSliceReplicaSet(v []ReplicaSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1358 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1359 := &yyv1358 + yy1359.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicaSet(v *[]ReplicaSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1360 := *v + yyh1360, yyl1360 := z.DecSliceHelperStart() + var yyc1360 bool + if yyl1360 == 0 { + if yyv1360 == nil { + yyv1360 = []ReplicaSet{} + yyc1360 = true + } else if len(yyv1360) != 0 { + yyv1360 = yyv1360[:0] + yyc1360 = true + } + } else if yyl1360 > 0 { + var yyrr1360, yyrl1360 int + var yyrt1360 bool + if yyl1360 > cap(yyv1360) { + + yyrg1360 := len(yyv1360) > 0 + yyv21360 := yyv1360 + yyrl1360, yyrt1360 = z.DecInferLen(yyl1360, z.DecBasicHandle().MaxInitLen, 744) + if yyrt1360 { + if yyrl1360 <= cap(yyv1360) { + yyv1360 = yyv1360[:yyrl1360] + } else { + yyv1360 = make([]ReplicaSet, yyrl1360) + } + } else { + yyv1360 = make([]ReplicaSet, yyrl1360) + } + yyc1360 = true + yyrr1360 = len(yyv1360) + if yyrg1360 { + copy(yyv1360, yyv21360) + } + } else if yyl1360 != len(yyv1360) { + yyv1360 = yyv1360[:yyl1360] + yyc1360 = true + } + yyj1360 := 0 + for ; yyj1360 < yyrr1360; yyj1360++ { + yyh1360.ElemContainerState(yyj1360) + if r.TryDecodeAsNil() { + yyv1360[yyj1360] = ReplicaSet{} + } else { + yyv1361 := &yyv1360[yyj1360] + yyv1361.CodecDecodeSelf(d) + } + + } + if yyrt1360 { + for ; yyj1360 < yyl1360; yyj1360++ { + yyv1360 = append(yyv1360, ReplicaSet{}) + yyh1360.ElemContainerState(yyj1360) + if r.TryDecodeAsNil() { + yyv1360[yyj1360] = ReplicaSet{} + } else { + yyv1362 := &yyv1360[yyj1360] + yyv1362.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1360 := 0 + for ; !r.CheckBreak(); yyj1360++ { + + if yyj1360 >= len(yyv1360) { + yyv1360 = append(yyv1360, ReplicaSet{}) // var yyz1360 ReplicaSet + yyc1360 = true + } + yyh1360.ElemContainerState(yyj1360) + if yyj1360 < len(yyv1360) { + if r.TryDecodeAsNil() { + yyv1360[yyj1360] = ReplicaSet{} + } else { + yyv1363 := &yyv1360[yyj1360] + yyv1363.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1360 < len(yyv1360) { + yyv1360 = yyv1360[:yyj1360] + yyc1360 = true + } else if yyj1360 == 0 && yyv1360 == nil { + yyv1360 = []ReplicaSet{} + yyc1360 = true + } + } + yyh1360.End() + if yyc1360 { + *v = yyv1360 + } +} + +func (x codecSelfer1234) encSliceapi_Capability(v []pkg2_api.Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1364 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1365 := z.EncBinary() + _ = yym1365 + if false { + } else if z.HasExtensions() && z.EncExt(yyv1364) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1364)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceapi_Capability(v *[]pkg2_api.Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1366 := *v + yyh1366, yyl1366 := z.DecSliceHelperStart() + var yyc1366 bool + if yyl1366 == 0 { + if yyv1366 == nil { + yyv1366 = []pkg2_api.Capability{} + yyc1366 = true + } else if len(yyv1366) != 0 { + yyv1366 = yyv1366[:0] + yyc1366 = true + } + } else if yyl1366 > 0 { + var yyrr1366, yyrl1366 int + var yyrt1366 bool + if yyl1366 > cap(yyv1366) { + + yyrl1366, yyrt1366 = z.DecInferLen(yyl1366, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1366 { + if yyrl1366 <= cap(yyv1366) { + yyv1366 = yyv1366[:yyrl1366] + } else { + yyv1366 = make([]pkg2_api.Capability, yyrl1366) + } + } else { + yyv1366 = make([]pkg2_api.Capability, yyrl1366) + } + yyc1366 = true + yyrr1366 = len(yyv1366) + } else if yyl1366 != len(yyv1366) { + yyv1366 = yyv1366[:yyl1366] + yyc1366 = true + } + yyj1366 := 0 + for ; yyj1366 < yyrr1366; yyj1366++ { + yyh1366.ElemContainerState(yyj1366) + if r.TryDecodeAsNil() { + yyv1366[yyj1366] = "" + } else { + yyv1366[yyj1366] = pkg2_api.Capability(r.DecodeString()) + } + + } + if yyrt1366 { + for ; yyj1366 < yyl1366; yyj1366++ { + yyv1366 = append(yyv1366, "") + yyh1366.ElemContainerState(yyj1366) + if r.TryDecodeAsNil() { + yyv1366[yyj1366] = "" + } else { + yyv1366[yyj1366] = pkg2_api.Capability(r.DecodeString()) + } + + } + } + + } else { + yyj1366 := 0 + for ; !r.CheckBreak(); yyj1366++ { + + if yyj1366 >= len(yyv1366) { + yyv1366 = append(yyv1366, "") // var yyz1366 pkg2_api.Capability + yyc1366 = true + } + yyh1366.ElemContainerState(yyj1366) + if yyj1366 < len(yyv1366) { + if r.TryDecodeAsNil() { + yyv1366[yyj1366] = "" + } else { + yyv1366[yyj1366] = pkg2_api.Capability(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj1366 < len(yyv1366) { + yyv1366 = yyv1366[:yyj1366] + yyc1366 = true + } else if yyj1366 == 0 && yyv1366 == nil { + yyv1366 = []pkg2_api.Capability{} + yyc1366 = true + } + } + yyh1366.End() + if yyc1366 { + *v = yyv1366 + } +} + +func (x codecSelfer1234) encSliceFSType(v []FSType, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1370 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1370.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFSType(v *[]FSType, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1371 := *v + yyh1371, yyl1371 := z.DecSliceHelperStart() + var yyc1371 bool + if yyl1371 == 0 { + if yyv1371 == nil { + yyv1371 = []FSType{} + yyc1371 = true + } else if len(yyv1371) != 0 { + yyv1371 = yyv1371[:0] + yyc1371 = true + } + } else if yyl1371 > 0 { + var yyrr1371, yyrl1371 int + var yyrt1371 bool + if yyl1371 > cap(yyv1371) { + + yyrl1371, yyrt1371 = z.DecInferLen(yyl1371, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1371 { + if yyrl1371 <= cap(yyv1371) { + yyv1371 = yyv1371[:yyrl1371] + } else { + yyv1371 = make([]FSType, yyrl1371) + } + } else { + yyv1371 = make([]FSType, yyrl1371) + } + yyc1371 = true + yyrr1371 = len(yyv1371) + } else if yyl1371 != len(yyv1371) { + yyv1371 = yyv1371[:yyl1371] + yyc1371 = true + } + yyj1371 := 0 + for ; yyj1371 < yyrr1371; yyj1371++ { + yyh1371.ElemContainerState(yyj1371) + if r.TryDecodeAsNil() { + yyv1371[yyj1371] = "" + } else { + yyv1371[yyj1371] = FSType(r.DecodeString()) + } + + } + if yyrt1371 { + for ; yyj1371 < yyl1371; yyj1371++ { + yyv1371 = append(yyv1371, "") + yyh1371.ElemContainerState(yyj1371) + if r.TryDecodeAsNil() { + yyv1371[yyj1371] = "" + } else { + yyv1371[yyj1371] = FSType(r.DecodeString()) + } + + } + } + + } else { + yyj1371 := 0 + for ; !r.CheckBreak(); yyj1371++ { + + if yyj1371 >= len(yyv1371) { + yyv1371 = append(yyv1371, "") // var yyz1371 FSType + yyc1371 = true + } + yyh1371.ElemContainerState(yyj1371) + if yyj1371 < len(yyv1371) { + if r.TryDecodeAsNil() { + yyv1371[yyj1371] = "" + } else { + yyv1371[yyj1371] = FSType(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj1371 < len(yyv1371) { + yyv1371 = yyv1371[:yyj1371] + yyc1371 = true + } else if yyj1371 == 0 && yyv1371 == nil { + yyv1371 = []FSType{} + yyc1371 = true + } + } + yyh1371.End() + if yyc1371 { + *v = yyv1371 + } +} + +func (x codecSelfer1234) encSliceHostPortRange(v []HostPortRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1375 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1376 := &yyv1375 + yy1376.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHostPortRange(v *[]HostPortRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1377 := *v + yyh1377, yyl1377 := z.DecSliceHelperStart() + var yyc1377 bool + if yyl1377 == 0 { + if yyv1377 == nil { + yyv1377 = []HostPortRange{} + yyc1377 = true + } else if len(yyv1377) != 0 { + yyv1377 = yyv1377[:0] + yyc1377 = true + } + } else if yyl1377 > 0 { + var yyrr1377, yyrl1377 int + var yyrt1377 bool + if yyl1377 > cap(yyv1377) { + + yyrg1377 := len(yyv1377) > 0 + yyv21377 := yyv1377 + yyrl1377, yyrt1377 = z.DecInferLen(yyl1377, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1377 { + if yyrl1377 <= cap(yyv1377) { + yyv1377 = yyv1377[:yyrl1377] + } else { + yyv1377 = make([]HostPortRange, yyrl1377) + } + } else { + yyv1377 = make([]HostPortRange, yyrl1377) + } + yyc1377 = true + yyrr1377 = len(yyv1377) + if yyrg1377 { + copy(yyv1377, yyv21377) + } + } else if yyl1377 != len(yyv1377) { + yyv1377 = yyv1377[:yyl1377] + yyc1377 = true + } + yyj1377 := 0 + for ; yyj1377 < yyrr1377; yyj1377++ { + yyh1377.ElemContainerState(yyj1377) + if r.TryDecodeAsNil() { + yyv1377[yyj1377] = HostPortRange{} + } else { + yyv1378 := &yyv1377[yyj1377] + yyv1378.CodecDecodeSelf(d) + } + + } + if yyrt1377 { + for ; yyj1377 < yyl1377; yyj1377++ { + yyv1377 = append(yyv1377, HostPortRange{}) + yyh1377.ElemContainerState(yyj1377) + if r.TryDecodeAsNil() { + yyv1377[yyj1377] = HostPortRange{} + } else { + yyv1379 := &yyv1377[yyj1377] + yyv1379.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1377 := 0 + for ; !r.CheckBreak(); yyj1377++ { + + if yyj1377 >= len(yyv1377) { + yyv1377 = append(yyv1377, HostPortRange{}) // var yyz1377 HostPortRange + yyc1377 = true + } + yyh1377.ElemContainerState(yyj1377) + if yyj1377 < len(yyv1377) { + if r.TryDecodeAsNil() { + yyv1377[yyj1377] = HostPortRange{} + } else { + yyv1380 := &yyv1377[yyj1377] + yyv1380.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1377 < len(yyv1377) { + yyv1377 = yyv1377[:yyj1377] + yyc1377 = true + } else if yyj1377 == 0 && yyv1377 == nil { + yyv1377 = []HostPortRange{} + yyc1377 = true + } + } + yyh1377.End() + if yyc1377 { + *v = yyv1377 + } +} + +func (x codecSelfer1234) encSliceIDRange(v []IDRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1381 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1382 := &yyv1381 + yy1382.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIDRange(v *[]IDRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1383 := *v + yyh1383, yyl1383 := z.DecSliceHelperStart() + var yyc1383 bool + if yyl1383 == 0 { + if yyv1383 == nil { + yyv1383 = []IDRange{} + yyc1383 = true + } else if len(yyv1383) != 0 { + yyv1383 = yyv1383[:0] + yyc1383 = true + } + } else if yyl1383 > 0 { + var yyrr1383, yyrl1383 int + var yyrt1383 bool + if yyl1383 > cap(yyv1383) { + + yyrg1383 := len(yyv1383) > 0 + yyv21383 := yyv1383 + yyrl1383, yyrt1383 = z.DecInferLen(yyl1383, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1383 { + if yyrl1383 <= cap(yyv1383) { + yyv1383 = yyv1383[:yyrl1383] + } else { + yyv1383 = make([]IDRange, yyrl1383) + } + } else { + yyv1383 = make([]IDRange, yyrl1383) + } + yyc1383 = true + yyrr1383 = len(yyv1383) + if yyrg1383 { + copy(yyv1383, yyv21383) + } + } else if yyl1383 != len(yyv1383) { + yyv1383 = yyv1383[:yyl1383] + yyc1383 = true + } + yyj1383 := 0 + for ; yyj1383 < yyrr1383; yyj1383++ { + yyh1383.ElemContainerState(yyj1383) + if r.TryDecodeAsNil() { + yyv1383[yyj1383] = IDRange{} + } else { + yyv1384 := &yyv1383[yyj1383] + yyv1384.CodecDecodeSelf(d) + } + + } + if yyrt1383 { + for ; yyj1383 < yyl1383; yyj1383++ { + yyv1383 = append(yyv1383, IDRange{}) + yyh1383.ElemContainerState(yyj1383) + if r.TryDecodeAsNil() { + yyv1383[yyj1383] = IDRange{} + } else { + yyv1385 := &yyv1383[yyj1383] + yyv1385.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1383 := 0 + for ; !r.CheckBreak(); yyj1383++ { + + if yyj1383 >= len(yyv1383) { + yyv1383 = append(yyv1383, IDRange{}) // var yyz1383 IDRange + yyc1383 = true + } + yyh1383.ElemContainerState(yyj1383) + if yyj1383 < len(yyv1383) { + if r.TryDecodeAsNil() { + yyv1383[yyj1383] = IDRange{} + } else { + yyv1386 := &yyv1383[yyj1383] + yyv1386.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1383 < len(yyv1383) { + yyv1383 = yyv1383[:yyj1383] + yyc1383 = true + } else if yyj1383 == 0 && yyv1383 == nil { + yyv1383 = []IDRange{} + yyc1383 = true + } + } + yyh1383.End() + if yyc1383 { + *v = yyv1383 + } +} + +func (x codecSelfer1234) encSlicePodSecurityPolicy(v []PodSecurityPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1387 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1388 := &yyv1387 + yy1388.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodSecurityPolicy(v *[]PodSecurityPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1389 := *v + yyh1389, yyl1389 := z.DecSliceHelperStart() + var yyc1389 bool + if yyl1389 == 0 { + if yyv1389 == nil { + yyv1389 = []PodSecurityPolicy{} + yyc1389 = true + } else if len(yyv1389) != 0 { + yyv1389 = yyv1389[:0] + yyc1389 = true + } + } else if yyl1389 > 0 { + var yyrr1389, yyrl1389 int + var yyrt1389 bool + if yyl1389 > cap(yyv1389) { + + yyrg1389 := len(yyv1389) > 0 + yyv21389 := yyv1389 + yyrl1389, yyrt1389 = z.DecInferLen(yyl1389, z.DecBasicHandle().MaxInitLen, 552) + if yyrt1389 { + if yyrl1389 <= cap(yyv1389) { + yyv1389 = yyv1389[:yyrl1389] + } else { + yyv1389 = make([]PodSecurityPolicy, yyrl1389) + } + } else { + yyv1389 = make([]PodSecurityPolicy, yyrl1389) + } + yyc1389 = true + yyrr1389 = len(yyv1389) + if yyrg1389 { + copy(yyv1389, yyv21389) + } + } else if yyl1389 != len(yyv1389) { + yyv1389 = yyv1389[:yyl1389] + yyc1389 = true + } + yyj1389 := 0 + for ; yyj1389 < yyrr1389; yyj1389++ { + yyh1389.ElemContainerState(yyj1389) + if r.TryDecodeAsNil() { + yyv1389[yyj1389] = PodSecurityPolicy{} + } else { + yyv1390 := &yyv1389[yyj1389] + yyv1390.CodecDecodeSelf(d) + } + + } + if yyrt1389 { + for ; yyj1389 < yyl1389; yyj1389++ { + yyv1389 = append(yyv1389, PodSecurityPolicy{}) + yyh1389.ElemContainerState(yyj1389) + if r.TryDecodeAsNil() { + yyv1389[yyj1389] = PodSecurityPolicy{} + } else { + yyv1391 := &yyv1389[yyj1389] + yyv1391.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1389 := 0 + for ; !r.CheckBreak(); yyj1389++ { + + if yyj1389 >= len(yyv1389) { + yyv1389 = append(yyv1389, PodSecurityPolicy{}) // var yyz1389 PodSecurityPolicy + yyc1389 = true + } + yyh1389.ElemContainerState(yyj1389) + if yyj1389 < len(yyv1389) { + if r.TryDecodeAsNil() { + yyv1389[yyj1389] = PodSecurityPolicy{} + } else { + yyv1392 := &yyv1389[yyj1389] + yyv1392.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1389 < len(yyv1389) { + yyv1389 = yyv1389[:yyj1389] + yyc1389 = true + } else if yyj1389 == 0 && yyv1389 == nil { + yyv1389 = []PodSecurityPolicy{} + yyc1389 = true + } + } + yyh1389.End() + if yyc1389 { + *v = yyv1389 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyIngressRule(v []NetworkPolicyIngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1393 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1394 := &yyv1393 + yy1394.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyIngressRule(v *[]NetworkPolicyIngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1395 := *v + yyh1395, yyl1395 := z.DecSliceHelperStart() + var yyc1395 bool + if yyl1395 == 0 { + if yyv1395 == nil { + yyv1395 = []NetworkPolicyIngressRule{} + yyc1395 = true + } else if len(yyv1395) != 0 { + yyv1395 = yyv1395[:0] + yyc1395 = true + } + } else if yyl1395 > 0 { + var yyrr1395, yyrl1395 int + var yyrt1395 bool + if yyl1395 > cap(yyv1395) { + + yyrg1395 := len(yyv1395) > 0 + yyv21395 := yyv1395 + yyrl1395, yyrt1395 = z.DecInferLen(yyl1395, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1395 { + if yyrl1395 <= cap(yyv1395) { + yyv1395 = yyv1395[:yyrl1395] + } else { + yyv1395 = make([]NetworkPolicyIngressRule, yyrl1395) + } + } else { + yyv1395 = make([]NetworkPolicyIngressRule, yyrl1395) + } + yyc1395 = true + yyrr1395 = len(yyv1395) + if yyrg1395 { + copy(yyv1395, yyv21395) + } + } else if yyl1395 != len(yyv1395) { + yyv1395 = yyv1395[:yyl1395] + yyc1395 = true + } + yyj1395 := 0 + for ; yyj1395 < yyrr1395; yyj1395++ { + yyh1395.ElemContainerState(yyj1395) + if r.TryDecodeAsNil() { + yyv1395[yyj1395] = NetworkPolicyIngressRule{} + } else { + yyv1396 := &yyv1395[yyj1395] + yyv1396.CodecDecodeSelf(d) + } + + } + if yyrt1395 { + for ; yyj1395 < yyl1395; yyj1395++ { + yyv1395 = append(yyv1395, NetworkPolicyIngressRule{}) + yyh1395.ElemContainerState(yyj1395) + if r.TryDecodeAsNil() { + yyv1395[yyj1395] = NetworkPolicyIngressRule{} + } else { + yyv1397 := &yyv1395[yyj1395] + yyv1397.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1395 := 0 + for ; !r.CheckBreak(); yyj1395++ { + + if yyj1395 >= len(yyv1395) { + yyv1395 = append(yyv1395, NetworkPolicyIngressRule{}) // var yyz1395 NetworkPolicyIngressRule + yyc1395 = true + } + yyh1395.ElemContainerState(yyj1395) + if yyj1395 < len(yyv1395) { + if r.TryDecodeAsNil() { + yyv1395[yyj1395] = NetworkPolicyIngressRule{} + } else { + yyv1398 := &yyv1395[yyj1395] + yyv1398.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1395 < len(yyv1395) { + yyv1395 = yyv1395[:yyj1395] + yyc1395 = true + } else if yyj1395 == 0 && yyv1395 == nil { + yyv1395 = []NetworkPolicyIngressRule{} + yyc1395 = true + } + } + yyh1395.End() + if yyc1395 { + *v = yyv1395 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPort(v []NetworkPolicyPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1399 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1400 := &yyv1399 + yy1400.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPort(v *[]NetworkPolicyPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1401 := *v + yyh1401, yyl1401 := z.DecSliceHelperStart() + var yyc1401 bool + if yyl1401 == 0 { + if yyv1401 == nil { + yyv1401 = []NetworkPolicyPort{} + yyc1401 = true + } else if len(yyv1401) != 0 { + yyv1401 = yyv1401[:0] + yyc1401 = true + } + } else if yyl1401 > 0 { + var yyrr1401, yyrl1401 int + var yyrt1401 bool + if yyl1401 > cap(yyv1401) { + + yyrg1401 := len(yyv1401) > 0 + yyv21401 := yyv1401 + yyrl1401, yyrt1401 = z.DecInferLen(yyl1401, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1401 { + if yyrl1401 <= cap(yyv1401) { + yyv1401 = yyv1401[:yyrl1401] + } else { + yyv1401 = make([]NetworkPolicyPort, yyrl1401) + } + } else { + yyv1401 = make([]NetworkPolicyPort, yyrl1401) + } + yyc1401 = true + yyrr1401 = len(yyv1401) + if yyrg1401 { + copy(yyv1401, yyv21401) + } + } else if yyl1401 != len(yyv1401) { + yyv1401 = yyv1401[:yyl1401] + yyc1401 = true + } + yyj1401 := 0 + for ; yyj1401 < yyrr1401; yyj1401++ { + yyh1401.ElemContainerState(yyj1401) + if r.TryDecodeAsNil() { + yyv1401[yyj1401] = NetworkPolicyPort{} + } else { + yyv1402 := &yyv1401[yyj1401] + yyv1402.CodecDecodeSelf(d) + } + + } + if yyrt1401 { + for ; yyj1401 < yyl1401; yyj1401++ { + yyv1401 = append(yyv1401, NetworkPolicyPort{}) + yyh1401.ElemContainerState(yyj1401) + if r.TryDecodeAsNil() { + yyv1401[yyj1401] = NetworkPolicyPort{} + } else { + yyv1403 := &yyv1401[yyj1401] + yyv1403.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1401 := 0 + for ; !r.CheckBreak(); yyj1401++ { + + if yyj1401 >= len(yyv1401) { + yyv1401 = append(yyv1401, NetworkPolicyPort{}) // var yyz1401 NetworkPolicyPort + yyc1401 = true + } + yyh1401.ElemContainerState(yyj1401) + if yyj1401 < len(yyv1401) { + if r.TryDecodeAsNil() { + yyv1401[yyj1401] = NetworkPolicyPort{} + } else { + yyv1404 := &yyv1401[yyj1401] + yyv1404.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1401 < len(yyv1401) { + yyv1401 = yyv1401[:yyj1401] + yyc1401 = true + } else if yyj1401 == 0 && yyv1401 == nil { + yyv1401 = []NetworkPolicyPort{} + yyc1401 = true + } + } + yyh1401.End() + if yyc1401 { + *v = yyv1401 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPeer(v []NetworkPolicyPeer, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1405 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1406 := &yyv1405 + yy1406.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPeer(v *[]NetworkPolicyPeer, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1407 := *v + yyh1407, yyl1407 := z.DecSliceHelperStart() + var yyc1407 bool + if yyl1407 == 0 { + if yyv1407 == nil { + yyv1407 = []NetworkPolicyPeer{} + yyc1407 = true + } else if len(yyv1407) != 0 { + yyv1407 = yyv1407[:0] + yyc1407 = true + } + } else if yyl1407 > 0 { + var yyrr1407, yyrl1407 int + var yyrt1407 bool + if yyl1407 > cap(yyv1407) { + + yyrg1407 := len(yyv1407) > 0 + yyv21407 := yyv1407 + yyrl1407, yyrt1407 = z.DecInferLen(yyl1407, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1407 { + if yyrl1407 <= cap(yyv1407) { + yyv1407 = yyv1407[:yyrl1407] + } else { + yyv1407 = make([]NetworkPolicyPeer, yyrl1407) + } + } else { + yyv1407 = make([]NetworkPolicyPeer, yyrl1407) + } + yyc1407 = true + yyrr1407 = len(yyv1407) + if yyrg1407 { + copy(yyv1407, yyv21407) + } + } else if yyl1407 != len(yyv1407) { + yyv1407 = yyv1407[:yyl1407] + yyc1407 = true + } + yyj1407 := 0 + for ; yyj1407 < yyrr1407; yyj1407++ { + yyh1407.ElemContainerState(yyj1407) + if r.TryDecodeAsNil() { + yyv1407[yyj1407] = NetworkPolicyPeer{} + } else { + yyv1408 := &yyv1407[yyj1407] + yyv1408.CodecDecodeSelf(d) + } + + } + if yyrt1407 { + for ; yyj1407 < yyl1407; yyj1407++ { + yyv1407 = append(yyv1407, NetworkPolicyPeer{}) + yyh1407.ElemContainerState(yyj1407) + if r.TryDecodeAsNil() { + yyv1407[yyj1407] = NetworkPolicyPeer{} + } else { + yyv1409 := &yyv1407[yyj1407] + yyv1409.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1407 := 0 + for ; !r.CheckBreak(); yyj1407++ { + + if yyj1407 >= len(yyv1407) { + yyv1407 = append(yyv1407, NetworkPolicyPeer{}) // var yyz1407 NetworkPolicyPeer + yyc1407 = true + } + yyh1407.ElemContainerState(yyj1407) + if yyj1407 < len(yyv1407) { + if r.TryDecodeAsNil() { + yyv1407[yyj1407] = NetworkPolicyPeer{} + } else { + yyv1410 := &yyv1407[yyj1407] + yyv1410.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1407 < len(yyv1407) { + yyv1407 = yyv1407[:yyj1407] + yyc1407 = true + } else if yyj1407 == 0 && yyv1407 == nil { + yyv1407 = []NetworkPolicyPeer{} + yyc1407 = true + } + } + yyh1407.End() + if yyc1407 { + *v = yyv1407 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicy(v []NetworkPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1411 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1412 := &yyv1411 + yy1412.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1413 := *v + yyh1413, yyl1413 := z.DecSliceHelperStart() + var yyc1413 bool + if yyl1413 == 0 { + if yyv1413 == nil { + yyv1413 = []NetworkPolicy{} + yyc1413 = true + } else if len(yyv1413) != 0 { + yyv1413 = yyv1413[:0] + yyc1413 = true + } + } else if yyl1413 > 0 { + var yyrr1413, yyrl1413 int + var yyrt1413 bool + if yyl1413 > cap(yyv1413) { + + yyrg1413 := len(yyv1413) > 0 + yyv21413 := yyv1413 + yyrl1413, yyrt1413 = z.DecInferLen(yyl1413, z.DecBasicHandle().MaxInitLen, 312) + if yyrt1413 { + if yyrl1413 <= cap(yyv1413) { + yyv1413 = yyv1413[:yyrl1413] + } else { + yyv1413 = make([]NetworkPolicy, yyrl1413) + } + } else { + yyv1413 = make([]NetworkPolicy, yyrl1413) + } + yyc1413 = true + yyrr1413 = len(yyv1413) + if yyrg1413 { + copy(yyv1413, yyv21413) + } + } else if yyl1413 != len(yyv1413) { + yyv1413 = yyv1413[:yyl1413] + yyc1413 = true + } + yyj1413 := 0 + for ; yyj1413 < yyrr1413; yyj1413++ { + yyh1413.ElemContainerState(yyj1413) + if r.TryDecodeAsNil() { + yyv1413[yyj1413] = NetworkPolicy{} + } else { + yyv1414 := &yyv1413[yyj1413] + yyv1414.CodecDecodeSelf(d) + } + + } + if yyrt1413 { + for ; yyj1413 < yyl1413; yyj1413++ { + yyv1413 = append(yyv1413, NetworkPolicy{}) + yyh1413.ElemContainerState(yyj1413) + if r.TryDecodeAsNil() { + yyv1413[yyj1413] = NetworkPolicy{} + } else { + yyv1415 := &yyv1413[yyj1413] + yyv1415.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1413 := 0 + for ; !r.CheckBreak(); yyj1413++ { + + if yyj1413 >= len(yyv1413) { + yyv1413 = append(yyv1413, NetworkPolicy{}) // var yyz1413 NetworkPolicy + yyc1413 = true + } + yyh1413.ElemContainerState(yyj1413) + if yyj1413 < len(yyv1413) { + if r.TryDecodeAsNil() { + yyv1413[yyj1413] = NetworkPolicy{} + } else { + yyv1416 := &yyv1413[yyj1413] + yyv1416.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1413 < len(yyv1413) { + yyv1413 = yyv1413[:yyj1413] + yyc1413 = true + } else if yyj1413 == 0 && yyv1413 == nil { + yyv1413 = []NetworkPolicy{} + yyc1413 = true + } + } + yyh1413.End() + if yyc1413 { + *v = yyv1413 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.go new file mode 100644 index 0000000000..a2fd99ae68 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/types.go @@ -0,0 +1,915 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +This file (together with pkg/apis/extensions/v1beta1/types.go) contain the experimental +types in kubernetes. These API objects are experimental, meaning that the +APIs may be broken at any time by the kubernetes team. + +DISCLAIMER: The implementation of the experimental API group itself is +a temporary one meant as a stopgap solution until kubernetes has proper +support for multiple API groups. The transition may require changes +beyond registration differences. In other words, experimental API group +support is experimental. +*/ + +package extensions + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +const ( + // SysctlsPodSecurityPolicyAnnotationKey represents the key of a whitelist of + // allowed safe and unsafe sysctls in a pod spec. It's a comma-separated list of plain sysctl + // names or sysctl patterns (which end in *). The string "*" matches all sysctls. + SysctlsPodSecurityPolicyAnnotationKey string = "security.alpha.kubernetes.io/sysctls" +) + +// describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + Replicas int32 `json:"replicas,omitempty"` +} + +// represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas"` + + // label query over pods that should match the replicas count. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *unversioned.LabelSelector `json:"selector,omitempty"` +} + +// +genclient=true +// +noMethods=true + +// represents a scaling request for a resource. +type Scale struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + api.ObjectMeta `json:"metadata,omitempty"` + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec ScaleSpec `json:"spec,omitempty"` + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + Status ScaleStatus `json:"status,omitempty"` +} + +// Dummy definition +type ReplicationControllerDummy struct { + unversioned.TypeMeta `json:",inline"` +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +type CustomMetricTarget struct { + // Custom Metric name. + Name string `json:"name"` + // Custom Metric value (average). + TargetValue resource.Quantity `json:"value"` +} + +type CustomMetricTargetList struct { + Items []CustomMetricTarget `json:"items"` +} + +type CustomMetricCurrentStatus struct { + // Custom Metric name. + Name string `json:"name"` + // Custom Metric value (average). + CurrentValue resource.Quantity `json:"value"` +} + +type CustomMetricCurrentStatusList struct { + Items []CustomMetricCurrentStatus `json:"items"` +} + +// +genclient=true +// +nonNamespaced=true + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +type ThirdPartyResource struct { + unversioned.TypeMeta `json:",inline"` + + // Standard object metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Description is the description of this object. + Description string `json:"description,omitempty"` + + // Versions are versions for this third party object + Versions []APIVersion `json:"versions,omitempty"` +} + +type ThirdPartyResourceList struct { + unversioned.TypeMeta `json:",inline"` + + // Standard list metadata. + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of horizontal pod autoscalers. + Items []ThirdPartyResource `json:"items"` +} + +// An APIVersion represents a single concrete version of an object model. +// TODO: we should consider merge this struct with GroupVersion in unversioned.go +type APIVersion struct { + // Name of this version (e.g. 'v1'). + Name string `json:"name,omitempty"` +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +type ThirdPartyResourceData struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata. + api.ObjectMeta `json:"metadata,omitempty"` + + // Data is the raw JSON data for this data. + Data []byte `json:"data,omitempty"` +} + +// +genclient=true + +type Deployment struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Specification of the desired behavior of the Deployment. + Spec DeploymentSpec `json:"spec,omitempty"` + + // Most recently observed status of the Deployment. + Status DeploymentStatus `json:"status,omitempty"` +} + +type DeploymentSpec struct { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + Replicas int32 `json:"replicas,omitempty"` + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + + // Template describes the pods that will be created. + Template api.PodTemplateSpec `json:"template"` + + // The deployment strategy to use to replace existing pods with new ones. + Strategy DeploymentStrategy `json:"strategy,omitempty"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + MinReadySeconds int32 `json:"minReadySeconds,omitempty"` + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"` + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + Paused bool `json:"paused,omitempty"` + // The config this deployment is rolling back to. Will be cleared after rollback is done. + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty"` +} + +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + unversioned.TypeMeta `json:",inline"` + // Required: This must match the Name of a deployment. + Name string `json:"name"` + // The annotations to be updated to a deployment + UpdatedAnnotations map[string]string `json:"updatedAnnotations,omitempty"` + // The config of this deployment rollback. + RollbackTo RollbackConfig `json:"rollbackTo"` +} + +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollbck to the last revision. + Revision int64 `json:"revision,omitempty"` +} + +const ( + // DefaultDeploymentUniqueLabelKey is the default key of the selector that is added + // to existing RCs (and label key that is added to its pods) to prevent the existing RCs + // to select new pods (and old pods being select by new RC). + DefaultDeploymentUniqueLabelKey string = "pod-template-hash" +) + +type DeploymentStrategy struct { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + Type DeploymentStrategyType `json:"type,omitempty"` + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty"` +} + +type DeploymentStrategyType string + +const ( + // Kill all existing pods before creating new ones. + RecreateDeploymentStrategyType DeploymentStrategyType = "Recreate" + + // Replace the old RCs by new one using rolling update i.e gradually scale down the old RCs and scale up the new one. + RollingUpdateDeploymentStrategyType DeploymentStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of total pods at the start of update (ex: 10%). + // Absolute number is calculated from percentage by rounding up. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down by 30% + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that at least 70% of original number of pods are available at all times + // during the update. + MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty"` + + // The maximum number of pods that can be scheduled above the original number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of total pods at + // the start of the update (ex: 10%). This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up by 30% + // immediately when the rolling update starts. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of original pods. + MaxSurge intstr.IntOrString `json:"maxSurge,omitempty"` +} + +type DeploymentStatus struct { + // The generation observed by the deployment controller. + ObservedGeneration int64 `json:"observedGeneration,omitempty"` + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + Replicas int32 `json:"replicas,omitempty"` + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + UpdatedReplicas int32 `json:"updatedReplicas,omitempty"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + AvailableReplicas int32 `json:"availableReplicas,omitempty"` + + // Total number of unavailable pods targeted by this deployment. + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty"` +} + +type DeploymentList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of deployments. + Items []Deployment `json:"items"` +} + +// TODO(madhusudancs): Uncomment while implementing DaemonSet updates. +/* Commenting out for v1.2. We are planning to bring these types back with a more robust DaemonSet update implementation in v1.3, hence not deleting but just commenting the types out. +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Only "RollingUpdate" is supported at this time. Default is RollingUpdate. + Type DaemonSetUpdateStrategyType `json:"type,omitempty"` + + // Rolling update config params. Present only if DaemonSetUpdateStrategy = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as DeploymentStrategy.RollingUpdate. + RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty"` +} + +type DaemonSetUpdateStrategyType string + +const ( + // Replace the old daemons by new ones using rolling update i.e replace them on each node one after the other. + RollingUpdateDaemonSetStrategyType DaemonSetUpdateStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of daemon set rolling update. +type RollingUpdateDaemonSet struct { + // The maximum number of DaemonSet pods that can be unavailable during the + // update. Value can be an absolute number (ex: 5) or a percentage of total + // number of DaemonSet pods at the start of the update (ex: 10%). Absolute + // number is calculated from percentage by rounding up. + // This cannot be 0. + // Default value is 1. + // Example: when this is set to 30%, 30% of the currently running DaemonSet + // pods can be stopped for an update at any given time. The update starts + // by stopping at most 30% of the currently running DaemonSet pods and then + // brings up new DaemonSet pods in their place. Once the new pods are ready, + // it then proceeds onto other DaemonSet pods, thus ensuring that at least + // 70% of original number of DaemonSet pods are available at all times + // during the update. + MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty"` + + // Minimum number of seconds for which a newly created DaemonSet pod should + // be ready without any of its container crashing, for it to be considered + // available. Defaults to 0 (pod will be considered available as soon as it + // is ready). + MinReadySeconds int `json:"minReadySeconds,omitempty"` +} +*/ + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // Selector is a label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + + // Template is the object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + Template api.PodTemplateSpec `json:"template"` + + // TODO(madhusudancs): Uncomment while implementing DaemonSet updates. + /* Commenting out for v1.2. We are planning to bring these fields back with a more robust DaemonSet update implementation in v1.3, hence not deleting but just commenting these fields out. + // Update strategy to replace existing DaemonSet pods with new pods. + UpdateStrategy DaemonSetUpdateStrategy `json:"updateStrategy,omitempty"` + + // Label key that is added to DaemonSet pods to distinguish between old and + // new pod templates during DaemonSet update. + // Users can set this to an empty string to indicate that the system should + // not add any label. If unspecified, system uses + // DefaultDaemonSetUniqueLabelKey("daemonset.kubernetes.io/podTemplateHash"). + // Value of this key is hash of DaemonSetSpec.PodTemplateSpec. + // No label is added if this is set to empty string. + UniqueLabelKey string `json:"uniqueLabelKey,omitempty"` + */ +} + +const ( + // DefaultDaemonSetUniqueLabelKey is the default key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates during + // DaemonSet update. See DaemonSetSpec's UniqueLabelKey field for more information. + DefaultDaemonSetUniqueLabelKey string = "daemonset.kubernetes.io/podTemplateHash" +) + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // CurrentNumberScheduled is the number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + CurrentNumberScheduled int32 `json:"currentNumberScheduled"` + + // NumberMisscheduled is the number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + NumberMisscheduled int32 `json:"numberMisscheduled"` + + // DesiredNumberScheduled is the total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + DesiredNumberScheduled int32 `json:"desiredNumberScheduled"` +} + +// +genclient=true + +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the desired behavior of this daemon set. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec DaemonSetSpec `json:"spec,omitempty"` + + // Status is the current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status DaemonSetStatus `json:"status,omitempty"` +} + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is a list of daemon sets. + Items []DaemonSet `json:"items"` +} + +type ThirdPartyResourceDataList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + // Items is a list of third party objects + Items []ThirdPartyResourceData `json:"items"` +} + +// +genclient=true + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +type Ingress struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec is the desired state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec IngressSpec `json:"spec,omitempty"` + + // Status is the current state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status IngressStatus `json:"status,omitempty"` +} + +// IngressList is a collection of Ingress. +type IngressList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of Ingress. + Items []Ingress `json:"items"` +} + +// IngressSpec describes the Ingress the user wishes to exist. +type IngressSpec struct { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + Backend *IngressBackend `json:"backend,omitempty"` + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + TLS []IngressTLS `json:"tls,omitempty"` + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + Rules []IngressRule `json:"rules,omitempty"` + // TODO: Add the ability to specify load-balancer IP through claims +} + +// IngressTLS describes the transport layer security associated with an Ingress. +type IngressTLS struct { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + Hosts []string `json:"hosts,omitempty"` + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + SecretName string `json:"secretName,omitempty"` + // TODO: Consider specifying different modes of termination, protocols etc. +} + +// IngressStatus describe the current state of the Ingress. +type IngressStatus struct { + // LoadBalancer contains the current status of the load-balancer. + LoadBalancer api.LoadBalancerStatus `json:"loadBalancer,omitempty"` +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +type IngressRule struct { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + Host string `json:"host,omitempty"` + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + IngressRuleValue `json:",inline,omitempty"` +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +type IngressRuleValue struct { + //TODO: + // 1. Consider renaming this resource and the associated rules so they + // aren't tied to Ingress. They can be used to route intra-cluster traffic. + // 2. Consider adding fields for ingress-type specific global options + // usable by a loadbalancer, like http keep-alive. + + HTTP *HTTPIngressRuleValue `json:"http,omitempty"` +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http://<host>/<path>?<searchpart> -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +type HTTPIngressRuleValue struct { + // A collection of paths that map requests to backends. + Paths []HTTPIngressPath `json:"paths"` + // TODO: Consider adding fields for ingress-type specific global + // options usable by a loadbalancer, like http keep-alive. +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +type HTTPIngressPath struct { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + Path string `json:"path,omitempty"` + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + Backend IngressBackend `json:"backend"` +} + +// IngressBackend describes all endpoints for a given service and port. +type IngressBackend struct { + // Specifies the name of the referenced service. + ServiceName string `json:"serviceName"` + + // Specifies the port of the referenced service. + ServicePort intstr.IntOrString `json:"servicePort"` +} + +// +genclient=true + +// ReplicaSet represents the configuration of a replica set. +type ReplicaSet struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the desired behavior of this ReplicaSet. + Spec ReplicaSetSpec `json:"spec,omitempty"` + + // Status is the current status of this ReplicaSet. This data may be + // out of date by some window of time. + Status ReplicaSetStatus `json:"status,omitempty"` +} + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []ReplicaSet `json:"items"` +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +// As the internal representation of a ReplicaSet, it must have +// a Template set. +type ReplicaSetSpec struct { + // Replicas is the number of desired replicas. + Replicas int32 `json:"replicas"` + + // Selector is a label query over pods that should match the replica count. + // Must match in order to be controlled. + // If empty, defaulted to labels on pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *unversioned.LabelSelector `json:"selector,omitempty"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + Template api.PodTemplateSpec `json:"template,omitempty"` +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +type ReplicaSetStatus struct { + // Replicas is the number of actual replicas. + Replicas int32 `json:"replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty"` + + // The number of ready replicas for this replica set. + ReadyReplicas int32 `json:"readyReplicas,omitempty"` + + // ObservedGeneration is the most recent generation observed by the controller. + ObservedGeneration int64 `json:"observedGeneration,omitempty"` +} + +// +genclient=true +// +nonNamespaced=true + +// PodSecurityPolicy governs the ability to make requests that affect the SecurityContext +// that will be applied to a pod and container. +type PodSecurityPolicy struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Spec defines the policy enforced. + Spec PodSecurityPolicySpec `json:"spec,omitempty"` +} + +// PodSecurityPolicySpec defines the policy enforced. +type PodSecurityPolicySpec struct { + // Privileged determines if a pod can request to be run as privileged. + Privileged bool `json:"privileged,omitempty"` + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capability in both + // DefaultAddCapabilities and RequiredDropCapabilities. + DefaultAddCapabilities []api.Capability `json:"defaultAddCapabilities,omitempty"` + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + RequiredDropCapabilities []api.Capability `json:"requiredDropCapabilities,omitempty"` + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + AllowedCapabilities []api.Capability `json:"allowedCapabilities,omitempty"` + // Volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + Volumes []FSType `json:"volumes,omitempty"` + // HostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + HostNetwork bool `json:"hostNetwork,omitempty"` + // HostPorts determines which host port ranges are allowed to be exposed. + HostPorts []HostPortRange `json:"hostPorts,omitempty"` + // HostPID determines if the policy allows the use of HostPID in the pod spec. + HostPID bool `json:"hostPID,omitempty"` + // HostIPC determines if the policy allows the use of HostIPC in the pod spec. + HostIPC bool `json:"hostIPC,omitempty"` + // SELinux is the strategy that will dictate the allowable labels that may be set. + SELinux SELinuxStrategyOptions `json:"seLinux"` + // RunAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + RunAsUser RunAsUserStrategyOptions `json:"runAsUser"` + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + SupplementalGroups SupplementalGroupsStrategyOptions `json:"supplementalGroups"` + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + FSGroup FSGroupStrategyOptions `json:"fsGroup"` + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + ReadOnlyRootFilesystem bool `json:"readOnlyRootFilesystem,omitempty"` +} + +// HostPortRange defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +type HostPortRange struct { + // Min is the start of the range, inclusive. + Min int `json:"min"` + // Max is the end of the range, inclusive. + Max int `json:"max"` +} + +// FSType gives strong typing to different file systems that are used by volumes. +type FSType string + +var ( + AzureFile FSType = "azureFile" + Flocker FSType = "flocker" + FlexVolume FSType = "flexVolume" + HostPath FSType = "hostPath" + EmptyDir FSType = "emptyDir" + GCEPersistentDisk FSType = "gcePersistentDisk" + AWSElasticBlockStore FSType = "awsElasticBlockStore" + GitRepo FSType = "gitRepo" + Secret FSType = "secret" + NFS FSType = "nfs" + ISCSI FSType = "iscsi" + Glusterfs FSType = "glusterfs" + PersistentVolumeClaim FSType = "persistentVolumeClaim" + RBD FSType = "rbd" + Cinder FSType = "cinder" + CephFS FSType = "cephFS" + DownwardAPI FSType = "downwardAPI" + FC FSType = "fc" + ConfigMap FSType = "configMap" + VsphereVolume FSType = "vsphereVolume" + Quobyte FSType = "quobyte" + AzureDisk FSType = "azureDisk" + All FSType = "*" +) + +// SELinuxStrategyOptions defines the strategy type and any options used to create the strategy. +type SELinuxStrategyOptions struct { + // Rule is the strategy that will dictate the allowable labels that may be set. + Rule SELinuxStrategy `json:"rule"` + // seLinuxOptions required to run as; required for MustRunAs + // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context + SELinuxOptions *api.SELinuxOptions `json:"seLinuxOptions,omitempty"` +} + +// SELinuxStrategy denotes strategy types for generating SELinux options for a +// Security. +type SELinuxStrategy string + +const ( + // container must have SELinux labels of X applied. + SELinuxStrategyMustRunAs SELinuxStrategy = "MustRunAs" + // container may make requests for any SELinux context labels. + SELinuxStrategyRunAsAny SELinuxStrategy = "RunAsAny" +) + +// RunAsUserStrategyOptions defines the strategy type and any options used to create the strategy. +type RunAsUserStrategyOptions struct { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + Rule RunAsUserStrategy `json:"rule"` + // Ranges are the allowed ranges of uids that may be used. + Ranges []IDRange `json:"ranges,omitempty"` +} + +// IDRange provides a min/max of an allowed range of IDs. +type IDRange struct { + // Min is the start of the range, inclusive. + Min int64 `json:"min"` + // Max is the end of the range, inclusive. + Max int64 `json:"max"` +} + +// RunAsUserStrategy denotes strategy types for generating RunAsUser values for a +// SecurityContext. +type RunAsUserStrategy string + +const ( + // container must run as a particular uid. + RunAsUserStrategyMustRunAs RunAsUserStrategy = "MustRunAs" + // container must run as a non-root uid + RunAsUserStrategyMustRunAsNonRoot RunAsUserStrategy = "MustRunAsNonRoot" + // container may make requests for any uid. + RunAsUserStrategyRunAsAny RunAsUserStrategy = "RunAsAny" +) + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +type FSGroupStrategyOptions struct { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + Rule FSGroupStrategyType `json:"rule,omitempty"` + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + Ranges []IDRange `json:"ranges,omitempty"` +} + +// FSGroupStrategyType denotes strategy types for generating FSGroup values for a +// SecurityContext +type FSGroupStrategyType string + +const ( + // container must have FSGroup of X applied. + FSGroupStrategyMustRunAs FSGroupStrategyType = "MustRunAs" + // container may make requests for any FSGroup labels. + FSGroupStrategyRunAsAny FSGroupStrategyType = "RunAsAny" +) + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +type SupplementalGroupsStrategyOptions struct { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + Rule SupplementalGroupsStrategyType `json:"rule,omitempty"` + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + Ranges []IDRange `json:"ranges,omitempty"` +} + +// SupplementalGroupsStrategyType denotes strategy types for determining valid supplemental +// groups for a SecurityContext. +type SupplementalGroupsStrategyType string + +const ( + // container must run as a particular gid. + SupplementalGroupsStrategyMustRunAs SupplementalGroupsStrategyType = "MustRunAs" + // container may make requests for any gid. + SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" +) + +// PodSecurityPolicyList is a list of PodSecurityPolicy objects. +type PodSecurityPolicyList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []PodSecurityPolicy `json:"items"` +} + +// +genclient=true + +type NetworkPolicy struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Specification of the desired behavior for this NetworkPolicy. + Spec NetworkPolicySpec `json:"spec,omitempty"` +} + +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + PodSelector unversioned.LabelSelector `json:"podSelector"` + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not affect ingress isolation. + // If this field is present and contains at least one rule, this policy allows any traffic + // which matches at least one of the ingress rules in this list. + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty"` +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is not provided, this rule matches all ports (traffic not restricted by port). + // If this field is empty, this rule matches no ports (no traffic matches). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + Ports []NetworkPolicyPort `json:"ports,omitempty"` + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is not provided, this rule matches all sources (traffic not restricted by source). + // If this field is empty, this rule matches no sources (no traffic matches). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + From []NetworkPolicyPeer `json:"from,omitempty"` +} + +type NetworkPolicyPort struct { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + Protocol *api.Protocol `json:"protocol,omitempty"` + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + Port *intstr.IntOrString `json:"port,omitempty"` +} + +type NetworkPolicyPeer struct { + // Exactly one of the following must be specified. + + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If not provided, this selector selects no pods. + // If present but empty, this selector selects all pods in this namespace. + PodSelector *unversioned.LabelSelector `json:"podSelector,omitempty"` + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If omitted, this selector selects no namespaces. + // If present but empty, this selector selects all namespaces. + NamespaceSelector *unversioned.LabelSelector `json:"namespaceSelector,omitempty"` +} + +// NetworkPolicyList is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + + Items []NetworkPolicy `json:"items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/conversion.go new file mode 100644 index 0000000000..56f605e51e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/conversion.go @@ -0,0 +1,401 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/apis/autoscaling" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/apis/extensions" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +func addConversionFuncs(scheme *runtime.Scheme) error { + // Add non-generated conversion functions + err := scheme.AddConversionFuncs( + Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus, + Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus, + Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec, + Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec, + Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy, + Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy, + Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment, + Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment, + Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec, + Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec, + // autoscaling + Convert_autoscaling_CrossVersionObjectReference_To_v1beta1_SubresourceReference, + Convert_v1beta1_SubresourceReference_To_autoscaling_CrossVersionObjectReference, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec, + Convert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + // batch + Convert_batch_JobSpec_To_v1beta1_JobSpec, + Convert_v1beta1_JobSpec_To_batch_JobSpec, + ) + if err != nil { + return err + } + + // Add field label conversions for kinds having selectable nothing but ObjectMeta fields. + for _, k := range []string{"DaemonSet", "Deployment", "Ingress"} { + kind := k // don't close over range variables + err = api.Scheme.AddFieldLabelConversionFunc("extensions/v1beta1", kind, + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace": + return label, value, nil + default: + return "", "", fmt.Errorf("field label %q not supported for %q", label, kind) + } + }, + ) + if err != nil { + return err + } + } + + return api.Scheme.AddFieldLabelConversionFunc("extensions/v1beta1", "Job", + func(label, value string) (string, string, error) { + switch label { + case "metadata.name", "metadata.namespace", "status.successful": + return label, value, nil + default: + return "", "", fmt.Errorf("field label not supported: %s", label) + } + }, + ) +} + +func Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = int32(in.Replicas) + + out.Selector = nil + out.TargetSelector = "" + if in.Selector != nil { + if in.Selector.MatchExpressions == nil || len(in.Selector.MatchExpressions) == 0 { + out.Selector = in.Selector.MatchLabels + } + + selector, err := unversioned.LabelSelectorAsSelector(in.Selector) + if err != nil { + return fmt.Errorf("invalid label selector: %v", err) + } + out.TargetSelector = selector.String() + } + return nil +} + +func Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + + // Normally when 2 fields map to the same internal value we favor the old field, since + // old clients can't be expected to know about new fields but clients that know about the + // new field can be expected to know about the old field (though that's not quite true, due + // to kubectl apply). However, these fields are readonly, so any non-nil value should work. + if in.TargetSelector != "" { + labelSelector, err := unversioned.ParseToLabelSelector(in.TargetSelector) + if err != nil { + out.Selector = nil + return fmt.Errorf("failed to parse target selector: %v", err) + } + out.Selector = labelSelector + } else if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + selector := make(map[string]string) + for key, val := range in.Selector { + selector[key] = val + } + out.Selector.MatchLabels = selector + } else { + out.Selector = nil + } + return nil +} + +func Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *DeploymentSpec, s conversion.Scope) error { + out.Replicas = &in.Replicas + if in.Selector != nil { + out.Selector = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + if in.RevisionHistoryLimit != nil { + out.RevisionHistoryLimit = new(int32) + *out.RevisionHistoryLimit = int32(*in.RevisionHistoryLimit) + } + out.MinReadySeconds = int32(in.MinReadySeconds) + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(RollbackConfig) + out.RollbackTo.Revision = int64(in.RollbackTo.Revision) + } else { + out.RollbackTo = nil + } + return nil +} + +func Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + + if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.RevisionHistoryLimit = in.RevisionHistoryLimit + out.MinReadySeconds = in.MinReadySeconds + out.Paused = in.Paused + if in.RollbackTo != nil { + out.RollbackTo = new(extensions.RollbackConfig) + out.RollbackTo.Revision = in.RollbackTo.Revision + } else { + out.RollbackTo = nil + } + return nil +} + +func Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(in *extensions.DeploymentStrategy, out *DeploymentStrategy, s conversion.Scope) error { + out.Type = DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(RollingUpdateDeployment) + if err := Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(in *DeploymentStrategy, out *extensions.DeploymentStrategy, s conversion.Scope) error { + out.Type = extensions.DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + out.RollingUpdate = new(extensions.RollingUpdateDeployment) + if err := Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error { + if out.MaxUnavailable == nil { + out.MaxUnavailable = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil { + return err + } + if out.MaxSurge == nil { + out.MaxSurge = &intstr.IntOrString{} + } + if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error { + if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil { + return err + } + if err := s.Convert(in.MaxSurge, &out.MaxSurge, 0); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error { + out.Replicas = new(int32) + *out.Replicas = int32(in.Replicas) + if in.Selector != nil { + out.Selector = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + if in.Replicas != nil { + out.Replicas = *in.Replicas + } + if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_batch_JobSpec_To_v1beta1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for unversioned.LabelSelector -> v1beta1.LabelSelector + if in.Selector != nil { + out.Selector = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + + // BEGIN non-standard conversion + // autoSelector has opposite meaning as manualSelector. + // in both cases, unset means false, and unset is always preferred to false. + // unset vs set-false distinction is not preserved. + manualSelector := in.ManualSelector != nil && *in.ManualSelector + autoSelector := !manualSelector + if autoSelector { + out.AutoSelector = new(bool) + *out.AutoSelector = true + } else { + out.AutoSelector = nil + } + // END non-standard conversion + + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + // unable to generate simple pointer conversion for v1beta1.LabelSelector -> unversioned.LabelSelector + if in.Selector != nil { + out.Selector = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in.Selector, out.Selector, s); err != nil { + return err + } + } else { + out.Selector = nil + } + + // BEGIN non-standard conversion + // autoSelector has opposite meaning as manualSelector. + // in both cases, unset means false, and unset is always preferred to false. + // unset vs set-false distinction is not preserved. + autoSelector := bool(in.AutoSelector != nil && *in.AutoSelector) + manualSelector := !autoSelector + if manualSelector { + out.ManualSelector = new(bool) + *out.ManualSelector = true + } else { + out.ManualSelector = nil + } + // END non-standard conversion + + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_autoscaling_CrossVersionObjectReference_To_v1beta1_SubresourceReference(in *autoscaling.CrossVersionObjectReference, out *SubresourceReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + out.Subresource = "scale" + return nil +} + +func Convert_v1beta1_SubresourceReference_To_autoscaling_CrossVersionObjectReference(in *SubresourceReference, out *autoscaling.CrossVersionObjectReference, s conversion.Scope) error { + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_autoscaling_CrossVersionObjectReference_To_v1beta1_SubresourceReference(&in.ScaleTargetRef, &out.ScaleRef, s); err != nil { + return err + } + if in.MinReplicas != nil { + out.MinReplicas = new(int32) + *out.MinReplicas = *in.MinReplicas + } else { + out.MinReplicas = nil + } + out.MaxReplicas = in.MaxReplicas + if in.TargetCPUUtilizationPercentage != nil { + out.CPUUtilization = &CPUTargetUtilization{TargetPercentage: *in.TargetCPUUtilizationPercentage} + } + return nil +} + +func Convert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + if err := Convert_v1beta1_SubresourceReference_To_autoscaling_CrossVersionObjectReference(&in.ScaleRef, &out.ScaleTargetRef, s); err != nil { + return err + } + if in.MinReplicas != nil { + out.MinReplicas = new(int32) + *out.MinReplicas = int32(*in.MinReplicas) + } else { + out.MinReplicas = nil + } + out.MaxReplicas = int32(in.MaxReplicas) + if in.CPUUtilization != nil { + out.TargetCPUUtilizationPercentage = new(int32) + *out.TargetCPUUtilizationPercentage = int32(in.CPUUtilization.TargetPercentage) + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/defaults.go new file mode 100644 index 0000000000..ae30a2bb31 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/defaults.go @@ -0,0 +1,167 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + SetDefaults_DaemonSet, + SetDefaults_Deployment, + SetDefaults_Job, + SetDefaults_HorizontalPodAutoscaler, + SetDefaults_ReplicaSet, + SetDefaults_NetworkPolicy, + ) +} + +func SetDefaults_DaemonSet(obj *DaemonSet) { + labels := obj.Spec.Template.Labels + + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } +} + +func SetDefaults_Deployment(obj *Deployment) { + // Default labels and selector to labels from pod template spec. + labels := obj.Spec.Template.Labels + + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &LabelSelector{MatchLabels: labels} + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + // Set DeploymentSpec.Replicas to 1 if it is not set. + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } + strategy := &obj.Spec.Strategy + // Set default DeploymentStrategyType as RollingUpdate. + if strategy.Type == "" { + strategy.Type = RollingUpdateDeploymentStrategyType + } + if strategy.Type == RollingUpdateDeploymentStrategyType { + if strategy.RollingUpdate == nil { + rollingUpdate := RollingUpdateDeployment{} + strategy.RollingUpdate = &rollingUpdate + } + if strategy.RollingUpdate.MaxUnavailable == nil { + // Set default MaxUnavailable as 1 by default. + maxUnavailable := intstr.FromInt(1) + strategy.RollingUpdate.MaxUnavailable = &maxUnavailable + } + if strategy.RollingUpdate.MaxSurge == nil { + // Set default MaxSurge as 1 by default. + maxSurge := intstr.FromInt(1) + strategy.RollingUpdate.MaxSurge = &maxSurge + } + } +} + +func SetDefaults_Job(obj *Job) { + labels := obj.Spec.Template.Labels + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + // if an autoselector is requested, we'll build the selector later with controller-uid and job-name + autoSelector := bool(obj.Spec.AutoSelector != nil && *obj.Spec.AutoSelector) + + // otherwise, we are using a manual selector + manualSelector := !autoSelector + + // and default behavior for an unspecified manual selector is to use the pod template labels + if manualSelector && obj.Spec.Selector == nil { + obj.Spec.Selector = &LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + // For a non-parallel job, you can leave both `.spec.completions` and + // `.spec.parallelism` unset. When both are unset, both are defaulted to 1. + if obj.Spec.Completions == nil && obj.Spec.Parallelism == nil { + obj.Spec.Completions = new(int32) + *obj.Spec.Completions = 1 + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } + if obj.Spec.Parallelism == nil { + obj.Spec.Parallelism = new(int32) + *obj.Spec.Parallelism = 1 + } +} + +func SetDefaults_HorizontalPodAutoscaler(obj *HorizontalPodAutoscaler) { + if obj.Spec.MinReplicas == nil { + minReplicas := int32(1) + obj.Spec.MinReplicas = &minReplicas + } + if obj.Spec.CPUUtilization == nil { + obj.Spec.CPUUtilization = &CPUTargetUtilization{TargetPercentage: 80} + } +} + +func SetDefaults_ReplicaSet(obj *ReplicaSet) { + labels := obj.Spec.Template.Labels + + // TODO: support templates defined elsewhere when we support them in the API + if labels != nil { + if obj.Spec.Selector == nil { + obj.Spec.Selector = &LabelSelector{ + MatchLabels: labels, + } + } + if len(obj.Labels) == 0 { + obj.Labels = labels + } + } + if obj.Spec.Replicas == nil { + obj.Spec.Replicas = new(int32) + *obj.Spec.Replicas = 1 + } +} + +func SetDefaults_NetworkPolicy(obj *NetworkPolicy) { + // Default any undefined Protocol fields to TCP. + for _, i := range obj.Spec.Ingress { + // TODO: Update Ports to be a pointer to slice as soon as auto-generation supports it. + for _, p := range i.Ports { + if p.Protocol == nil { + proto := v1.ProtocolTCP + p.Protocol = &proto + } + } + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/doc.go new file mode 100644 index 0000000000..a9520c2c22 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/extensions +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/autoscaling +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/batch +// +k8s:openapi-gen=true + +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.pb.go new file mode 100644 index 0000000000..67b6a9c5a6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.pb.go @@ -0,0 +1,14157 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/extensions/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/extensions/v1beta1/generated.proto + + It has these top-level messages: + APIVersion + CPUTargetUtilization + CustomMetricCurrentStatus + CustomMetricCurrentStatusList + CustomMetricTarget + CustomMetricTargetList + DaemonSet + DaemonSetList + DaemonSetSpec + DaemonSetStatus + Deployment + DeploymentList + DeploymentRollback + DeploymentSpec + DeploymentStatus + DeploymentStrategy + ExportOptions + FSGroupStrategyOptions + HTTPIngressPath + HTTPIngressRuleValue + HorizontalPodAutoscaler + HorizontalPodAutoscalerList + HorizontalPodAutoscalerSpec + HorizontalPodAutoscalerStatus + HostPortRange + IDRange + Ingress + IngressBackend + IngressList + IngressRule + IngressRuleValue + IngressSpec + IngressStatus + IngressTLS + Job + JobCondition + JobList + JobSpec + JobStatus + LabelSelector + LabelSelectorRequirement + ListOptions + NetworkPolicy + NetworkPolicyIngressRule + NetworkPolicyList + NetworkPolicyPeer + NetworkPolicyPort + NetworkPolicySpec + PodSecurityPolicy + PodSecurityPolicyList + PodSecurityPolicySpec + ReplicaSet + ReplicaSetList + ReplicaSetSpec + ReplicaSetStatus + ReplicationControllerDummy + RollbackConfig + RollingUpdateDeployment + RunAsUserStrategyOptions + SELinuxStrategyOptions + Scale + ScaleSpec + ScaleStatus + SubresourceReference + SupplementalGroupsStrategyOptions + ThirdPartyResource + ThirdPartyResourceData + ThirdPartyResourceDataList + ThirdPartyResourceList +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + +import k8s_io_kubernetes_pkg_util_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *APIVersion) Reset() { *m = APIVersion{} } +func (*APIVersion) ProtoMessage() {} +func (*APIVersion) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *CPUTargetUtilization) Reset() { *m = CPUTargetUtilization{} } +func (*CPUTargetUtilization) ProtoMessage() {} +func (*CPUTargetUtilization) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *CustomMetricCurrentStatus) Reset() { *m = CustomMetricCurrentStatus{} } +func (*CustomMetricCurrentStatus) ProtoMessage() {} +func (*CustomMetricCurrentStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + +func (m *CustomMetricCurrentStatusList) Reset() { *m = CustomMetricCurrentStatusList{} } +func (*CustomMetricCurrentStatusList) ProtoMessage() {} +func (*CustomMetricCurrentStatusList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{3} +} + +func (m *CustomMetricTarget) Reset() { *m = CustomMetricTarget{} } +func (*CustomMetricTarget) ProtoMessage() {} +func (*CustomMetricTarget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *CustomMetricTargetList) Reset() { *m = CustomMetricTargetList{} } +func (*CustomMetricTargetList) ProtoMessage() {} +func (*CustomMetricTargetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *DaemonSet) Reset() { *m = DaemonSet{} } +func (*DaemonSet) ProtoMessage() {} +func (*DaemonSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *DaemonSetList) Reset() { *m = DaemonSetList{} } +func (*DaemonSetList) ProtoMessage() {} +func (*DaemonSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *DaemonSetSpec) Reset() { *m = DaemonSetSpec{} } +func (*DaemonSetSpec) ProtoMessage() {} +func (*DaemonSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *DaemonSetStatus) Reset() { *m = DaemonSetStatus{} } +func (*DaemonSetStatus) ProtoMessage() {} +func (*DaemonSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *Deployment) Reset() { *m = Deployment{} } +func (*Deployment) ProtoMessage() {} +func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func (m *DeploymentList) Reset() { *m = DeploymentList{} } +func (*DeploymentList) ProtoMessage() {} +func (*DeploymentList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } + +func (m *DeploymentRollback) Reset() { *m = DeploymentRollback{} } +func (*DeploymentRollback) ProtoMessage() {} +func (*DeploymentRollback) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } + +func (m *DeploymentSpec) Reset() { *m = DeploymentSpec{} } +func (*DeploymentSpec) ProtoMessage() {} +func (*DeploymentSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{13} } + +func (m *DeploymentStatus) Reset() { *m = DeploymentStatus{} } +func (*DeploymentStatus) ProtoMessage() {} +func (*DeploymentStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{14} } + +func (m *DeploymentStrategy) Reset() { *m = DeploymentStrategy{} } +func (*DeploymentStrategy) ProtoMessage() {} +func (*DeploymentStrategy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{15} } + +func (m *ExportOptions) Reset() { *m = ExportOptions{} } +func (*ExportOptions) ProtoMessage() {} +func (*ExportOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{16} } + +func (m *FSGroupStrategyOptions) Reset() { *m = FSGroupStrategyOptions{} } +func (*FSGroupStrategyOptions) ProtoMessage() {} +func (*FSGroupStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{17} } + +func (m *HTTPIngressPath) Reset() { *m = HTTPIngressPath{} } +func (*HTTPIngressPath) ProtoMessage() {} +func (*HTTPIngressPath) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{18} } + +func (m *HTTPIngressRuleValue) Reset() { *m = HTTPIngressRuleValue{} } +func (*HTTPIngressRuleValue) ProtoMessage() {} +func (*HTTPIngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{19} } + +func (m *HorizontalPodAutoscaler) Reset() { *m = HorizontalPodAutoscaler{} } +func (*HorizontalPodAutoscaler) ProtoMessage() {} +func (*HorizontalPodAutoscaler) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{20} +} + +func (m *HorizontalPodAutoscalerList) Reset() { *m = HorizontalPodAutoscalerList{} } +func (*HorizontalPodAutoscalerList) ProtoMessage() {} +func (*HorizontalPodAutoscalerList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{21} +} + +func (m *HorizontalPodAutoscalerSpec) Reset() { *m = HorizontalPodAutoscalerSpec{} } +func (*HorizontalPodAutoscalerSpec) ProtoMessage() {} +func (*HorizontalPodAutoscalerSpec) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{22} +} + +func (m *HorizontalPodAutoscalerStatus) Reset() { *m = HorizontalPodAutoscalerStatus{} } +func (*HorizontalPodAutoscalerStatus) ProtoMessage() {} +func (*HorizontalPodAutoscalerStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{23} +} + +func (m *HostPortRange) Reset() { *m = HostPortRange{} } +func (*HostPortRange) ProtoMessage() {} +func (*HostPortRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{24} } + +func (m *IDRange) Reset() { *m = IDRange{} } +func (*IDRange) ProtoMessage() {} +func (*IDRange) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{25} } + +func (m *Ingress) Reset() { *m = Ingress{} } +func (*Ingress) ProtoMessage() {} +func (*Ingress) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{26} } + +func (m *IngressBackend) Reset() { *m = IngressBackend{} } +func (*IngressBackend) ProtoMessage() {} +func (*IngressBackend) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{27} } + +func (m *IngressList) Reset() { *m = IngressList{} } +func (*IngressList) ProtoMessage() {} +func (*IngressList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{28} } + +func (m *IngressRule) Reset() { *m = IngressRule{} } +func (*IngressRule) ProtoMessage() {} +func (*IngressRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{29} } + +func (m *IngressRuleValue) Reset() { *m = IngressRuleValue{} } +func (*IngressRuleValue) ProtoMessage() {} +func (*IngressRuleValue) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{30} } + +func (m *IngressSpec) Reset() { *m = IngressSpec{} } +func (*IngressSpec) ProtoMessage() {} +func (*IngressSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{31} } + +func (m *IngressStatus) Reset() { *m = IngressStatus{} } +func (*IngressStatus) ProtoMessage() {} +func (*IngressStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{32} } + +func (m *IngressTLS) Reset() { *m = IngressTLS{} } +func (*IngressTLS) ProtoMessage() {} +func (*IngressTLS) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{33} } + +func (m *Job) Reset() { *m = Job{} } +func (*Job) ProtoMessage() {} +func (*Job) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{34} } + +func (m *JobCondition) Reset() { *m = JobCondition{} } +func (*JobCondition) ProtoMessage() {} +func (*JobCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{35} } + +func (m *JobList) Reset() { *m = JobList{} } +func (*JobList) ProtoMessage() {} +func (*JobList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{36} } + +func (m *JobSpec) Reset() { *m = JobSpec{} } +func (*JobSpec) ProtoMessage() {} +func (*JobSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{37} } + +func (m *JobStatus) Reset() { *m = JobStatus{} } +func (*JobStatus) ProtoMessage() {} +func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{38} } + +func (m *LabelSelector) Reset() { *m = LabelSelector{} } +func (*LabelSelector) ProtoMessage() {} +func (*LabelSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{39} } + +func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} } +func (*LabelSelectorRequirement) ProtoMessage() {} +func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{40} +} + +func (m *ListOptions) Reset() { *m = ListOptions{} } +func (*ListOptions) ProtoMessage() {} +func (*ListOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{41} } + +func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } +func (*NetworkPolicy) ProtoMessage() {} +func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{42} } + +func (m *NetworkPolicyIngressRule) Reset() { *m = NetworkPolicyIngressRule{} } +func (*NetworkPolicyIngressRule) ProtoMessage() {} +func (*NetworkPolicyIngressRule) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{43} +} + +func (m *NetworkPolicyList) Reset() { *m = NetworkPolicyList{} } +func (*NetworkPolicyList) ProtoMessage() {} +func (*NetworkPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{44} } + +func (m *NetworkPolicyPeer) Reset() { *m = NetworkPolicyPeer{} } +func (*NetworkPolicyPeer) ProtoMessage() {} +func (*NetworkPolicyPeer) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{45} } + +func (m *NetworkPolicyPort) Reset() { *m = NetworkPolicyPort{} } +func (*NetworkPolicyPort) ProtoMessage() {} +func (*NetworkPolicyPort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{46} } + +func (m *NetworkPolicySpec) Reset() { *m = NetworkPolicySpec{} } +func (*NetworkPolicySpec) ProtoMessage() {} +func (*NetworkPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{47} } + +func (m *PodSecurityPolicy) Reset() { *m = PodSecurityPolicy{} } +func (*PodSecurityPolicy) ProtoMessage() {} +func (*PodSecurityPolicy) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{48} } + +func (m *PodSecurityPolicyList) Reset() { *m = PodSecurityPolicyList{} } +func (*PodSecurityPolicyList) ProtoMessage() {} +func (*PodSecurityPolicyList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{49} } + +func (m *PodSecurityPolicySpec) Reset() { *m = PodSecurityPolicySpec{} } +func (*PodSecurityPolicySpec) ProtoMessage() {} +func (*PodSecurityPolicySpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{50} } + +func (m *ReplicaSet) Reset() { *m = ReplicaSet{} } +func (*ReplicaSet) ProtoMessage() {} +func (*ReplicaSet) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{51} } + +func (m *ReplicaSetList) Reset() { *m = ReplicaSetList{} } +func (*ReplicaSetList) ProtoMessage() {} +func (*ReplicaSetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{52} } + +func (m *ReplicaSetSpec) Reset() { *m = ReplicaSetSpec{} } +func (*ReplicaSetSpec) ProtoMessage() {} +func (*ReplicaSetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{53} } + +func (m *ReplicaSetStatus) Reset() { *m = ReplicaSetStatus{} } +func (*ReplicaSetStatus) ProtoMessage() {} +func (*ReplicaSetStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{54} } + +func (m *ReplicationControllerDummy) Reset() { *m = ReplicationControllerDummy{} } +func (*ReplicationControllerDummy) ProtoMessage() {} +func (*ReplicationControllerDummy) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{55} +} + +func (m *RollbackConfig) Reset() { *m = RollbackConfig{} } +func (*RollbackConfig) ProtoMessage() {} +func (*RollbackConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{56} } + +func (m *RollingUpdateDeployment) Reset() { *m = RollingUpdateDeployment{} } +func (*RollingUpdateDeployment) ProtoMessage() {} +func (*RollingUpdateDeployment) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{57} +} + +func (m *RunAsUserStrategyOptions) Reset() { *m = RunAsUserStrategyOptions{} } +func (*RunAsUserStrategyOptions) ProtoMessage() {} +func (*RunAsUserStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{58} +} + +func (m *SELinuxStrategyOptions) Reset() { *m = SELinuxStrategyOptions{} } +func (*SELinuxStrategyOptions) ProtoMessage() {} +func (*SELinuxStrategyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{59} } + +func (m *Scale) Reset() { *m = Scale{} } +func (*Scale) ProtoMessage() {} +func (*Scale) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{60} } + +func (m *ScaleSpec) Reset() { *m = ScaleSpec{} } +func (*ScaleSpec) ProtoMessage() {} +func (*ScaleSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{61} } + +func (m *ScaleStatus) Reset() { *m = ScaleStatus{} } +func (*ScaleStatus) ProtoMessage() {} +func (*ScaleStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{62} } + +func (m *SubresourceReference) Reset() { *m = SubresourceReference{} } +func (*SubresourceReference) ProtoMessage() {} +func (*SubresourceReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{63} } + +func (m *SupplementalGroupsStrategyOptions) Reset() { *m = SupplementalGroupsStrategyOptions{} } +func (*SupplementalGroupsStrategyOptions) ProtoMessage() {} +func (*SupplementalGroupsStrategyOptions) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{64} +} + +func (m *ThirdPartyResource) Reset() { *m = ThirdPartyResource{} } +func (*ThirdPartyResource) ProtoMessage() {} +func (*ThirdPartyResource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{65} } + +func (m *ThirdPartyResourceData) Reset() { *m = ThirdPartyResourceData{} } +func (*ThirdPartyResourceData) ProtoMessage() {} +func (*ThirdPartyResourceData) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{66} } + +func (m *ThirdPartyResourceDataList) Reset() { *m = ThirdPartyResourceDataList{} } +func (*ThirdPartyResourceDataList) ProtoMessage() {} +func (*ThirdPartyResourceDataList) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{67} +} + +func (m *ThirdPartyResourceList) Reset() { *m = ThirdPartyResourceList{} } +func (*ThirdPartyResourceList) ProtoMessage() {} +func (*ThirdPartyResourceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{68} } + +func init() { + proto.RegisterType((*APIVersion)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.APIVersion") + proto.RegisterType((*CPUTargetUtilization)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.CPUTargetUtilization") + proto.RegisterType((*CustomMetricCurrentStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.CustomMetricCurrentStatus") + proto.RegisterType((*CustomMetricCurrentStatusList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.CustomMetricCurrentStatusList") + proto.RegisterType((*CustomMetricTarget)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.CustomMetricTarget") + proto.RegisterType((*CustomMetricTargetList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.CustomMetricTargetList") + proto.RegisterType((*DaemonSet)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DaemonSet") + proto.RegisterType((*DaemonSetList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DaemonSetList") + proto.RegisterType((*DaemonSetSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DaemonSetSpec") + proto.RegisterType((*DaemonSetStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DaemonSetStatus") + proto.RegisterType((*Deployment)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.Deployment") + proto.RegisterType((*DeploymentList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DeploymentList") + proto.RegisterType((*DeploymentRollback)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DeploymentRollback") + proto.RegisterType((*DeploymentSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DeploymentSpec") + proto.RegisterType((*DeploymentStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DeploymentStatus") + proto.RegisterType((*DeploymentStrategy)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.DeploymentStrategy") + proto.RegisterType((*ExportOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ExportOptions") + proto.RegisterType((*FSGroupStrategyOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.FSGroupStrategyOptions") + proto.RegisterType((*HTTPIngressPath)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HTTPIngressPath") + proto.RegisterType((*HTTPIngressRuleValue)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HTTPIngressRuleValue") + proto.RegisterType((*HorizontalPodAutoscaler)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HorizontalPodAutoscaler") + proto.RegisterType((*HorizontalPodAutoscalerList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HorizontalPodAutoscalerList") + proto.RegisterType((*HorizontalPodAutoscalerSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HorizontalPodAutoscalerSpec") + proto.RegisterType((*HorizontalPodAutoscalerStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HorizontalPodAutoscalerStatus") + proto.RegisterType((*HostPortRange)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.HostPortRange") + proto.RegisterType((*IDRange)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IDRange") + proto.RegisterType((*Ingress)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.Ingress") + proto.RegisterType((*IngressBackend)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressBackend") + proto.RegisterType((*IngressList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressList") + proto.RegisterType((*IngressRule)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressRule") + proto.RegisterType((*IngressRuleValue)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressRuleValue") + proto.RegisterType((*IngressSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressSpec") + proto.RegisterType((*IngressStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressStatus") + proto.RegisterType((*IngressTLS)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.IngressTLS") + proto.RegisterType((*Job)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.Job") + proto.RegisterType((*JobCondition)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.JobCondition") + proto.RegisterType((*JobList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.JobList") + proto.RegisterType((*JobSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.JobSpec") + proto.RegisterType((*JobStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.JobStatus") + proto.RegisterType((*LabelSelector)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.LabelSelector") + proto.RegisterType((*LabelSelectorRequirement)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.LabelSelectorRequirement") + proto.RegisterType((*ListOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ListOptions") + proto.RegisterType((*NetworkPolicy)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicy") + proto.RegisterType((*NetworkPolicyIngressRule)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicyIngressRule") + proto.RegisterType((*NetworkPolicyList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicyList") + proto.RegisterType((*NetworkPolicyPeer)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicyPeer") + proto.RegisterType((*NetworkPolicyPort)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicyPort") + proto.RegisterType((*NetworkPolicySpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.NetworkPolicySpec") + proto.RegisterType((*PodSecurityPolicy)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.PodSecurityPolicy") + proto.RegisterType((*PodSecurityPolicyList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.PodSecurityPolicyList") + proto.RegisterType((*PodSecurityPolicySpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.PodSecurityPolicySpec") + proto.RegisterType((*ReplicaSet)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ReplicaSet") + proto.RegisterType((*ReplicaSetList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ReplicaSetList") + proto.RegisterType((*ReplicaSetSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ReplicaSetSpec") + proto.RegisterType((*ReplicaSetStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ReplicaSetStatus") + proto.RegisterType((*ReplicationControllerDummy)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ReplicationControllerDummy") + proto.RegisterType((*RollbackConfig)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.RollbackConfig") + proto.RegisterType((*RollingUpdateDeployment)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.RollingUpdateDeployment") + proto.RegisterType((*RunAsUserStrategyOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.RunAsUserStrategyOptions") + proto.RegisterType((*SELinuxStrategyOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.SELinuxStrategyOptions") + proto.RegisterType((*Scale)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.Scale") + proto.RegisterType((*ScaleSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ScaleSpec") + proto.RegisterType((*ScaleStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ScaleStatus") + proto.RegisterType((*SubresourceReference)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.SubresourceReference") + proto.RegisterType((*SupplementalGroupsStrategyOptions)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions") + proto.RegisterType((*ThirdPartyResource)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ThirdPartyResource") + proto.RegisterType((*ThirdPartyResourceData)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ThirdPartyResourceData") + proto.RegisterType((*ThirdPartyResourceDataList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ThirdPartyResourceDataList") + proto.RegisterType((*ThirdPartyResourceList)(nil), "k8s.io.client-go.1.5.pkg.apis.extensions.v1beta1.ThirdPartyResourceList") +} +func (m *APIVersion) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *APIVersion) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + return i, nil +} + +func (m *CPUTargetUtilization) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CPUTargetUtilization) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.TargetPercentage)) + return i, nil +} + +func (m *CustomMetricCurrentStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CustomMetricCurrentStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CurrentValue.Size())) + n1, err := m.CurrentValue.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + return i, nil +} + +func (m *CustomMetricCurrentStatusList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CustomMetricCurrentStatusList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *CustomMetricTarget) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CustomMetricTarget) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.TargetValue.Size())) + n2, err := m.TargetValue.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + return i, nil +} + +func (m *CustomMetricTargetList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *CustomMetricTargetList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DaemonSet) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DaemonSet) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n3, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n4, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n5, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *DaemonSetList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DaemonSetList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DaemonSetSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DaemonSetSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Selector != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n7, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n8, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + +func (m *DaemonSetStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DaemonSetStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CurrentNumberScheduled)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.NumberMisscheduled)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DesiredNumberScheduled)) + return i, nil +} + +func (m *Deployment) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Deployment) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n9, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n10, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n11, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n11 + return i, nil +} + +func (m *DeploymentList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeploymentList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n12, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n12 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *DeploymentRollback) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeploymentRollback) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + if len(m.UpdatedAnnotations) > 0 { + for k := range m.UpdatedAnnotations { + data[i] = 0x12 + i++ + v := m.UpdatedAnnotations[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.RollbackTo.Size())) + n13, err := m.RollbackTo.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n13 + return i, nil +} + +func (m *DeploymentSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeploymentSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n14, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n14 + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n15, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n15 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Strategy.Size())) + n16, err := m.Strategy.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n16 + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.RevisionHistoryLimit)) + } + data[i] = 0x38 + i++ + if m.Paused { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if m.RollbackTo != nil { + data[i] = 0x42 + i++ + i = encodeVarintGenerated(data, i, uint64(m.RollbackTo.Size())) + n17, err := m.RollbackTo.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n17 + } + return i, nil +} + +func (m *DeploymentStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeploymentStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObservedGeneration)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.UpdatedReplicas)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AvailableReplicas)) + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.UnavailableReplicas)) + return i, nil +} + +func (m *DeploymentStrategy) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *DeploymentStrategy) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + if m.RollingUpdate != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.RollingUpdate.Size())) + n18, err := m.RollingUpdate.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n18 + } + return i, nil +} + +func (m *ExportOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ExportOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Export { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + if m.Exact { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *FSGroupStrategyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *FSGroupStrategyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Rule))) + i += copy(data[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HTTPIngressPath) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HTTPIngressPath) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Path))) + i += copy(data[i:], m.Path) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Backend.Size())) + n19, err := m.Backend.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n19 + return i, nil +} + +func (m *HTTPIngressRuleValue) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HTTPIngressRuleValue) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Paths) > 0 { + for _, msg := range m.Paths { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscaler) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscaler) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n20, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n20 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n21, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n21 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n22, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n22 + return i, nil +} + +func (m *HorizontalPodAutoscalerList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n23, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n23 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *HorizontalPodAutoscalerSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ScaleRef.Size())) + n24, err := m.ScaleRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n24 + if m.MinReplicas != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.MinReplicas)) + } + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.MaxReplicas)) + if m.CPUUtilization != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CPUUtilization.Size())) + n25, err := m.CPUUtilization.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n25 + } + return i, nil +} + +func (m *HorizontalPodAutoscalerStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HorizontalPodAutoscalerStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.ObservedGeneration != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastScaleTime.Size())) + n26, err := m.LastScaleTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n26 + } + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CurrentReplicas)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.CurrentCPUUtilizationPercentage)) + } + return i, nil +} + +func (m *HostPortRange) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *HostPortRange) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Min)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Max)) + return i, nil +} + +func (m *IDRange) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IDRange) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Min)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Max)) + return i, nil +} + +func (m *Ingress) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Ingress) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n27, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n27 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n28, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n28 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n29, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n29 + return i, nil +} + +func (m *IngressBackend) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressBackend) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ServiceName))) + i += copy(data[i:], m.ServiceName) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ServicePort.Size())) + n30, err := m.ServicePort.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n30 + return i, nil +} + +func (m *IngressList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n31, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n31 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *IngressRule) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressRule) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Host))) + i += copy(data[i:], m.Host) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.IngressRuleValue.Size())) + n32, err := m.IngressRuleValue.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n32 + return i, nil +} + +func (m *IngressRuleValue) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressRuleValue) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.HTTP != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.HTTP.Size())) + n33, err := m.HTTP.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n33 + } + return i, nil +} + +func (m *IngressSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Backend != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.Backend.Size())) + n34, err := m.Backend.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n34 + } + if len(m.TLS) > 0 { + for _, msg := range m.TLS { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *IngressStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.LoadBalancer.Size())) + n35, err := m.LoadBalancer.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n35 + return i, nil +} + +func (m *IngressTLS) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IngressTLS) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Hosts) > 0 { + for _, s := range m.Hosts { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.SecretName))) + i += copy(data[i:], m.SecretName) + return i, nil +} + +func (m *Job) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Job) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n36, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n36 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n37, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n37 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n38, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n38 + return i, nil +} + +func (m *JobCondition) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobCondition) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Status))) + i += copy(data[i:], m.Status) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastProbeTime.Size())) + n39, err := m.LastProbeTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n39 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n40, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n40 + data[i] = 0x2a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) + i += copy(data[i:], m.Reason) + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Message))) + i += copy(data[i:], m.Message) + return i, nil +} + +func (m *JobList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n41, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n41 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *JobSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Parallelism != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Parallelism)) + } + if m.Completions != nil { + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n42, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n42 + } + if m.AutoSelector != nil { + data[i] = 0x28 + i++ + if *m.AutoSelector { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + } + data[i] = 0x32 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n43, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n43 + return i, nil +} + +func (m *JobStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *JobStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Conditions) > 0 { + for _, msg := range m.Conditions { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.StartTime != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.StartTime.Size())) + n44, err := m.StartTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n44 + } + if m.CompletionTime != nil { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.CompletionTime.Size())) + n45, err := m.CompletionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n45 + } + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Active)) + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Succeeded)) + data[i] = 0x30 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Failed)) + return i, nil +} + +func (m *LabelSelector) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelector) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k := range m.MatchLabels { + data[i] = 0xa + i++ + v := m.MatchLabels[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + if len(m.MatchExpressions) > 0 { + for _, msg := range m.MatchExpressions { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *LabelSelectorRequirement) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *LabelSelectorRequirement) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Key))) + i += copy(data[i:], m.Key) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Operator))) + i += copy(data[i:], m.Operator) + if len(m.Values) > 0 { + for _, s := range m.Values { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *ListOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ListOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.LabelSelector))) + i += copy(data[i:], m.LabelSelector) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.FieldSelector))) + i += copy(data[i:], m.FieldSelector) + data[i] = 0x18 + i++ + if m.Watch { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ResourceVersion))) + i += copy(data[i:], m.ResourceVersion) + if m.TimeoutSeconds != nil { + data[i] = 0x28 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.TimeoutSeconds)) + } + return i, nil +} + +func (m *NetworkPolicy) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicy) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n46, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n46 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n47, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n47 + return i, nil +} + +func (m *NetworkPolicyIngressRule) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicyIngressRule) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Ports) > 0 { + for _, msg := range m.Ports { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if len(m.From) > 0 { + for _, msg := range m.From { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicyList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n48, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n48 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *NetworkPolicyPeer) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicyPeer) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.PodSelector != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodSelector.Size())) + n49, err := m.PodSelector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n49 + } + if m.NamespaceSelector != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.NamespaceSelector.Size())) + n50, err := m.NamespaceSelector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n50 + } + return i, nil +} + +func (m *NetworkPolicyPort) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicyPort) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Protocol != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(*m.Protocol))) + i += copy(data[i:], *m.Protocol) + } + if m.Port != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Port.Size())) + n51, err := m.Port.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n51 + } + return i, nil +} + +func (m *NetworkPolicySpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NetworkPolicySpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PodSelector.Size())) + n52, err := m.PodSelector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n52 + if len(m.Ingress) > 0 { + for _, msg := range m.Ingress { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodSecurityPolicy) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSecurityPolicy) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n53, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n53 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n54, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n54 + return i, nil +} + +func (m *PodSecurityPolicyList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSecurityPolicyList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n55, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n55 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodSecurityPolicySpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodSecurityPolicySpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.Privileged { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if len(m.DefaultAddCapabilities) > 0 { + for _, s := range m.DefaultAddCapabilities { + data[i] = 0x12 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.RequiredDropCapabilities) > 0 { + for _, s := range m.RequiredDropCapabilities { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.AllowedCapabilities) > 0 { + for _, s := range m.AllowedCapabilities { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Volumes) > 0 { + for _, s := range m.Volumes { + data[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x30 + i++ + if m.HostNetwork { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + if len(m.HostPorts) > 0 { + for _, msg := range m.HostPorts { + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x40 + i++ + if m.HostPID { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x48 + i++ + if m.HostIPC { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x52 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SELinux.Size())) + n56, err := m.SELinux.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n56 + data[i] = 0x5a + i++ + i = encodeVarintGenerated(data, i, uint64(m.RunAsUser.Size())) + n57, err := m.RunAsUser.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n57 + data[i] = 0x62 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SupplementalGroups.Size())) + n58, err := m.SupplementalGroups.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n58 + data[i] = 0x6a + i++ + i = encodeVarintGenerated(data, i, uint64(m.FSGroup.Size())) + n59, err := m.FSGroup.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n59 + data[i] = 0x70 + i++ + if m.ReadOnlyRootFilesystem { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + return i, nil +} + +func (m *ReplicaSet) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicaSet) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n60, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n60 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n61, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n61 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n62, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n62 + return i, nil +} + +func (m *ReplicaSetList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicaSetList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n63, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n63 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ReplicaSetSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicaSetSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Replicas != nil { + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(*m.Replicas)) + } + if m.Selector != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n64, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n64 + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n65, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n65 + return i, nil +} + +func (m *ReplicaSetStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicaSetStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.FullyLabeledReplicas)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObservedGeneration)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ReadyReplicas)) + return i, nil +} + +func (m *ReplicationControllerDummy) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ReplicationControllerDummy) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func (m *RollbackConfig) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RollbackConfig) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Revision)) + return i, nil +} + +func (m *RollingUpdateDeployment) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RollingUpdateDeployment) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.MaxUnavailable != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.MaxUnavailable.Size())) + n66, err := m.MaxUnavailable.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n66 + } + if m.MaxSurge != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.MaxSurge.Size())) + n67, err := m.MaxSurge.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n67 + } + return i, nil +} + +func (m *RunAsUserStrategyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RunAsUserStrategyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Rule))) + i += copy(data[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *SELinuxStrategyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SELinuxStrategyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Rule))) + i += copy(data[i:], m.Rule) + if m.SELinuxOptions != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.SELinuxOptions.Size())) + n68, err := m.SELinuxOptions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n68 + } + return i, nil +} + +func (m *Scale) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Scale) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n69, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n69 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n70, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n70 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n71, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n71 + return i, nil +} + +func (m *ScaleSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScaleSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + return i, nil +} + +func (m *ScaleStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ScaleStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Replicas)) + if len(m.Selector) > 0 { + for k := range m.Selector { + data[i] = 0x12 + i++ + v := m.Selector[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.TargetSelector))) + i += copy(data[i:], m.TargetSelector) + return i, nil +} + +func (m *SubresourceReference) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SubresourceReference) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Subresource))) + i += copy(data[i:], m.Subresource) + return i, nil +} + +func (m *SupplementalGroupsStrategyOptions) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *SupplementalGroupsStrategyOptions) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Rule))) + i += copy(data[i:], m.Rule) + if len(m.Ranges) > 0 { + for _, msg := range m.Ranges { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResource) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ThirdPartyResource) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n72, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n72 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Description))) + i += copy(data[i:], m.Description) + if len(m.Versions) > 0 { + for _, msg := range m.Versions { + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResourceData) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ThirdPartyResourceData) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n73, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n73 + if m.Data != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Data))) + i += copy(data[i:], m.Data) + } + return i, nil +} + +func (m *ThirdPartyResourceDataList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ThirdPartyResourceDataList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n74, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n74 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ThirdPartyResourceList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ThirdPartyResourceList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n75, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n75 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *APIVersion) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CPUTargetUtilization) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.TargetPercentage)) + return n +} + +func (m *CustomMetricCurrentStatus) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.CurrentValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomMetricCurrentStatusList) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *CustomMetricTarget) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = m.TargetValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *CustomMetricTargetList) Size() (n int) { + var l int + _ = l + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DaemonSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DaemonSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DaemonSetSpec) Size() (n int) { + var l int + _ = l + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DaemonSetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.CurrentNumberScheduled)) + n += 1 + sovGenerated(uint64(m.NumberMisscheduled)) + n += 1 + sovGenerated(uint64(m.DesiredNumberScheduled)) + return n +} + +func (m *Deployment) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *DeploymentRollback) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.UpdatedAnnotations) > 0 { + for k, v := range m.UpdatedAnnotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *DeploymentSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Strategy.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 1 + sovGenerated(uint64(m.MinReadySeconds)) + if m.RevisionHistoryLimit != nil { + n += 1 + sovGenerated(uint64(*m.RevisionHistoryLimit)) + } + n += 2 + if m.RollbackTo != nil { + l = m.RollbackTo.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *DeploymentStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.UpdatedReplicas)) + n += 1 + sovGenerated(uint64(m.AvailableReplicas)) + n += 1 + sovGenerated(uint64(m.UnavailableReplicas)) + return n +} + +func (m *DeploymentStrategy) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + if m.RollingUpdate != nil { + l = m.RollingUpdate.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ExportOptions) Size() (n int) { + var l int + _ = l + n += 2 + n += 2 + return n +} + +func (m *FSGroupStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HTTPIngressPath) Size() (n int) { + var l int + _ = l + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Backend.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HTTPIngressRuleValue) Size() (n int) { + var l int + _ = l + if len(m.Paths) > 0 { + for _, e := range m.Paths { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscaler) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *HorizontalPodAutoscalerList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *HorizontalPodAutoscalerSpec) Size() (n int) { + var l int + _ = l + l = m.ScaleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.MinReplicas != nil { + n += 1 + sovGenerated(uint64(*m.MinReplicas)) + } + n += 1 + sovGenerated(uint64(m.MaxReplicas)) + if m.CPUUtilization != nil { + l = m.CPUUtilization.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *HorizontalPodAutoscalerStatus) Size() (n int) { + var l int + _ = l + if m.ObservedGeneration != nil { + n += 1 + sovGenerated(uint64(*m.ObservedGeneration)) + } + if m.LastScaleTime != nil { + l = m.LastScaleTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.CurrentReplicas)) + n += 1 + sovGenerated(uint64(m.DesiredReplicas)) + if m.CurrentCPUUtilizationPercentage != nil { + n += 1 + sovGenerated(uint64(*m.CurrentCPUUtilizationPercentage)) + } + return n +} + +func (m *HostPortRange) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Min)) + n += 1 + sovGenerated(uint64(m.Max)) + return n +} + +func (m *IDRange) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Min)) + n += 1 + sovGenerated(uint64(m.Max)) + return n +} + +func (m *Ingress) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressBackend) Size() (n int) { + var l int + _ = l + l = len(m.ServiceName) + n += 1 + l + sovGenerated(uint64(l)) + l = m.ServicePort.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *IngressRule) Size() (n int) { + var l int + _ = l + l = len(m.Host) + n += 1 + l + sovGenerated(uint64(l)) + l = m.IngressRuleValue.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressRuleValue) Size() (n int) { + var l int + _ = l + if m.HTTP != nil { + l = m.HTTP.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *IngressSpec) Size() (n int) { + var l int + _ = l + if m.Backend != nil { + l = m.Backend.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.TLS) > 0 { + for _, e := range m.TLS { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *IngressStatus) Size() (n int) { + var l int + _ = l + l = m.LoadBalancer.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *IngressTLS) Size() (n int) { + var l int + _ = l + if len(m.Hosts) > 0 { + for _, s := range m.Hosts { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = len(m.SecretName) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Job) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobCondition) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastProbeTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.LastTransitionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Reason) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Message) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *JobSpec) Size() (n int) { + var l int + _ = l + if m.Parallelism != nil { + n += 1 + sovGenerated(uint64(*m.Parallelism)) + } + if m.Completions != nil { + n += 1 + sovGenerated(uint64(*m.Completions)) + } + if m.ActiveDeadlineSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ActiveDeadlineSeconds)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AutoSelector != nil { + n += 2 + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *JobStatus) Size() (n int) { + var l int + _ = l + if len(m.Conditions) > 0 { + for _, e := range m.Conditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if m.StartTime != nil { + l = m.StartTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.CompletionTime != nil { + l = m.CompletionTime.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.Active)) + n += 1 + sovGenerated(uint64(m.Succeeded)) + n += 1 + sovGenerated(uint64(m.Failed)) + return n +} + +func (m *LabelSelector) Size() (n int) { + var l int + _ = l + if len(m.MatchLabels) > 0 { + for k, v := range m.MatchLabels { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + if len(m.MatchExpressions) > 0 { + for _, e := range m.MatchExpressions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *LabelSelectorRequirement) Size() (n int) { + var l int + _ = l + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, s := range m.Values { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ListOptions) Size() (n int) { + var l int + _ = l + l = len(m.LabelSelector) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FieldSelector) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + l = len(m.ResourceVersion) + n += 1 + l + sovGenerated(uint64(l)) + if m.TimeoutSeconds != nil { + n += 1 + sovGenerated(uint64(*m.TimeoutSeconds)) + } + return n +} + +func (m *NetworkPolicy) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *NetworkPolicyIngressRule) Size() (n int) { + var l int + _ = l + if len(m.Ports) > 0 { + for _, e := range m.Ports { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.From) > 0 { + for _, e := range m.From { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *NetworkPolicyPeer) Size() (n int) { + var l int + _ = l + if m.PodSelector != nil { + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.NamespaceSelector != nil { + l = m.NamespaceSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicyPort) Size() (n int) { + var l int + _ = l + if m.Protocol != nil { + l = len(*m.Protocol) + n += 1 + l + sovGenerated(uint64(l)) + } + if m.Port != nil { + l = m.Port.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *NetworkPolicySpec) Size() (n int) { + var l int + _ = l + l = m.PodSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ingress) > 0 { + for _, e := range m.Ingress { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodSecurityPolicy) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodSecurityPolicyList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodSecurityPolicySpec) Size() (n int) { + var l int + _ = l + n += 2 + if len(m.DefaultAddCapabilities) > 0 { + for _, s := range m.DefaultAddCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.RequiredDropCapabilities) > 0 { + for _, s := range m.RequiredDropCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.AllowedCapabilities) > 0 { + for _, s := range m.AllowedCapabilities { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Volumes) > 0 { + for _, s := range m.Volumes { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + if len(m.HostPorts) > 0 { + for _, e := range m.HostPorts { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + n += 2 + n += 2 + l = m.SELinux.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.RunAsUser.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.SupplementalGroups.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.FSGroup.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + +func (m *ReplicaSet) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicaSetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ReplicaSetSpec) Size() (n int) { + var l int + _ = l + if m.Replicas != nil { + n += 1 + sovGenerated(uint64(*m.Replicas)) + } + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + l = m.Template.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ReplicaSetStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + n += 1 + sovGenerated(uint64(m.FullyLabeledReplicas)) + n += 1 + sovGenerated(uint64(m.ObservedGeneration)) + n += 1 + sovGenerated(uint64(m.ReadyReplicas)) + return n +} + +func (m *ReplicationControllerDummy) Size() (n int) { + var l int + _ = l + return n +} + +func (m *RollbackConfig) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Revision)) + return n +} + +func (m *RollingUpdateDeployment) Size() (n int) { + var l int + _ = l + if m.MaxUnavailable != nil { + l = m.MaxUnavailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.MaxSurge != nil { + l = m.MaxSurge.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *RunAsUserStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *SELinuxStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if m.SELinuxOptions != nil { + l = m.SELinuxOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *Scale) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ScaleSpec) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + return n +} + +func (m *ScaleStatus) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Replicas)) + if len(m.Selector) > 0 { + for k, v := range m.Selector { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + l = len(m.TargetSelector) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SubresourceReference) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Subresource) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *SupplementalGroupsStrategyOptions) Size() (n int) { + var l int + _ = l + l = len(m.Rule) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Ranges) > 0 { + for _, e := range m.Ranges { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResource) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Description) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Versions) > 0 { + for _, e := range m.Versions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResourceData) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Data != nil { + l = len(m.Data) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ThirdPartyResourceDataList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ThirdPartyResourceList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *APIVersion) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&APIVersion{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *CPUTargetUtilization) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CPUTargetUtilization{`, + `TargetPercentage:` + fmt.Sprintf("%v", this.TargetPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricCurrentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricCurrentStatus{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_kubernetes_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricCurrentStatusList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricCurrentStatusList{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomMetricCurrentStatus", "CustomMetricCurrentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricTarget) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricTarget{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_kubernetes_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CustomMetricTargetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CustomMetricTargetList{`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "CustomMetricTarget", "CustomMetricTarget", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DaemonSetSpec", "DaemonSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DaemonSetStatus", "DaemonSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "DaemonSet", "DaemonSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetSpec{`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DaemonSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DaemonSetStatus{`, + `CurrentNumberScheduled:` + fmt.Sprintf("%v", this.CurrentNumberScheduled) + `,`, + `NumberMisscheduled:` + fmt.Sprintf("%v", this.NumberMisscheduled) + `,`, + `DesiredNumberScheduled:` + fmt.Sprintf("%v", this.DesiredNumberScheduled) + `,`, + `}`, + }, "") + return s +} +func (this *Deployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Deployment{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeploymentSpec", "DeploymentSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DeploymentStatus", "DeploymentStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Deployment", "Deployment", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentRollback) String() string { + if this == nil { + return "nil" + } + keysForUpdatedAnnotations := make([]string, 0, len(this.UpdatedAnnotations)) + for k := range this.UpdatedAnnotations { + keysForUpdatedAnnotations = append(keysForUpdatedAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForUpdatedAnnotations) + mapStringForUpdatedAnnotations := "map[string]string{" + for _, k := range keysForUpdatedAnnotations { + mapStringForUpdatedAnnotations += fmt.Sprintf("%v: %v,", k, this.UpdatedAnnotations[k]) + } + mapStringForUpdatedAnnotations += "}" + s := strings.Join([]string{`&DeploymentRollback{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `UpdatedAnnotations:` + mapStringForUpdatedAnnotations + `,`, + `RollbackTo:` + strings.Replace(strings.Replace(this.RollbackTo.String(), "RollbackConfig", "RollbackConfig", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `Strategy:` + strings.Replace(strings.Replace(this.Strategy.String(), "DeploymentStrategy", "DeploymentStrategy", 1), `&`, ``, 1) + `,`, + `MinReadySeconds:` + fmt.Sprintf("%v", this.MinReadySeconds) + `,`, + `RevisionHistoryLimit:` + valueToStringGenerated(this.RevisionHistoryLimit) + `,`, + `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, + `RollbackTo:` + strings.Replace(fmt.Sprintf("%v", this.RollbackTo), "RollbackConfig", "RollbackConfig", 1) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStatus{`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`, + `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, + `UnavailableReplicas:` + fmt.Sprintf("%v", this.UnavailableReplicas) + `,`, + `}`, + }, "") + return s +} +func (this *DeploymentStrategy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DeploymentStrategy{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `RollingUpdate:` + strings.Replace(fmt.Sprintf("%v", this.RollingUpdate), "RollingUpdateDeployment", "RollingUpdateDeployment", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ExportOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExportOptions{`, + `Export:` + fmt.Sprintf("%v", this.Export) + `,`, + `Exact:` + fmt.Sprintf("%v", this.Exact) + `,`, + `}`, + }, "") + return s +} +func (this *FSGroupStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&FSGroupStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPIngressPath) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPIngressPath{`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `Backend:` + strings.Replace(strings.Replace(this.Backend.String(), "IngressBackend", "IngressBackend", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HTTPIngressRuleValue) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HTTPIngressRuleValue{`, + `Paths:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Paths), "HTTPIngressPath", "HTTPIngressPath", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscaler) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscaler{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "HorizontalPodAutoscalerSpec", "HorizontalPodAutoscalerSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "HorizontalPodAutoscalerStatus", "HorizontalPodAutoscalerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "HorizontalPodAutoscaler", "HorizontalPodAutoscaler", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerSpec{`, + `ScaleRef:` + strings.Replace(strings.Replace(this.ScaleRef.String(), "SubresourceReference", "SubresourceReference", 1), `&`, ``, 1) + `,`, + `MinReplicas:` + valueToStringGenerated(this.MinReplicas) + `,`, + `MaxReplicas:` + fmt.Sprintf("%v", this.MaxReplicas) + `,`, + `CPUUtilization:` + strings.Replace(fmt.Sprintf("%v", this.CPUUtilization), "CPUTargetUtilization", "CPUTargetUtilization", 1) + `,`, + `}`, + }, "") + return s +} +func (this *HorizontalPodAutoscalerStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HorizontalPodAutoscalerStatus{`, + `ObservedGeneration:` + valueToStringGenerated(this.ObservedGeneration) + `,`, + `LastScaleTime:` + strings.Replace(fmt.Sprintf("%v", this.LastScaleTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `CurrentReplicas:` + fmt.Sprintf("%v", this.CurrentReplicas) + `,`, + `DesiredReplicas:` + fmt.Sprintf("%v", this.DesiredReplicas) + `,`, + `CurrentCPUUtilizationPercentage:` + valueToStringGenerated(this.CurrentCPUUtilizationPercentage) + `,`, + `}`, + }, "") + return s +} +func (this *HostPortRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HostPortRange{`, + `Min:` + fmt.Sprintf("%v", this.Min) + `,`, + `Max:` + fmt.Sprintf("%v", this.Max) + `,`, + `}`, + }, "") + return s +} +func (this *IDRange) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IDRange{`, + `Min:` + fmt.Sprintf("%v", this.Min) + `,`, + `Max:` + fmt.Sprintf("%v", this.Max) + `,`, + `}`, + }, "") + return s +} +func (this *Ingress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Ingress{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "IngressSpec", "IngressSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "IngressStatus", "IngressStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressBackend) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressBackend{`, + `ServiceName:` + fmt.Sprintf("%v", this.ServiceName) + `,`, + `ServicePort:` + strings.Replace(strings.Replace(this.ServicePort.String(), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Ingress", "Ingress", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressRule{`, + `Host:` + fmt.Sprintf("%v", this.Host) + `,`, + `IngressRuleValue:` + strings.Replace(strings.Replace(this.IngressRuleValue.String(), "IngressRuleValue", "IngressRuleValue", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressRuleValue) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressRuleValue{`, + `HTTP:` + strings.Replace(fmt.Sprintf("%v", this.HTTP), "HTTPIngressRuleValue", "HTTPIngressRuleValue", 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressSpec{`, + `Backend:` + strings.Replace(fmt.Sprintf("%v", this.Backend), "IngressBackend", "IngressBackend", 1) + `,`, + `TLS:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.TLS), "IngressTLS", "IngressTLS", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "IngressRule", "IngressRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressStatus{`, + `LoadBalancer:` + strings.Replace(strings.Replace(this.LoadBalancer.String(), "LoadBalancerStatus", "k8s_io_kubernetes_pkg_api_v1.LoadBalancerStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *IngressTLS) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&IngressTLS{`, + `Hosts:` + fmt.Sprintf("%v", this.Hosts) + `,`, + `SecretName:` + fmt.Sprintf("%v", this.SecretName) + `,`, + `}`, + }, "") + return s +} +func (this *Job) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Job{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "JobSpec", "JobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "JobStatus", "JobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobCondition) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobCondition{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `LastProbeTime:` + strings.Replace(strings.Replace(this.LastProbeTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `LastTransitionTime:` + strings.Replace(strings.Replace(this.LastTransitionTime.String(), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1), `&`, ``, 1) + `,`, + `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, + `Message:` + fmt.Sprintf("%v", this.Message) + `,`, + `}`, + }, "") + return s +} +func (this *JobList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Job", "Job", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobSpec{`, + `Parallelism:` + valueToStringGenerated(this.Parallelism) + `,`, + `Completions:` + valueToStringGenerated(this.Completions) + `,`, + `ActiveDeadlineSeconds:` + valueToStringGenerated(this.ActiveDeadlineSeconds) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `AutoSelector:` + valueToStringGenerated(this.AutoSelector) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *JobStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&JobStatus{`, + `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "JobCondition", "JobCondition", 1), `&`, ``, 1) + `,`, + `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "k8s_io_kubernetes_pkg_api_unversioned.Time", 1) + `,`, + `Active:` + fmt.Sprintf("%v", this.Active) + `,`, + `Succeeded:` + fmt.Sprintf("%v", this.Succeeded) + `,`, + `Failed:` + fmt.Sprintf("%v", this.Failed) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelector) String() string { + if this == nil { + return "nil" + } + keysForMatchLabels := make([]string, 0, len(this.MatchLabels)) + for k := range this.MatchLabels { + keysForMatchLabels = append(keysForMatchLabels, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForMatchLabels) + mapStringForMatchLabels := "map[string]string{" + for _, k := range keysForMatchLabels { + mapStringForMatchLabels += fmt.Sprintf("%v: %v,", k, this.MatchLabels[k]) + } + mapStringForMatchLabels += "}" + s := strings.Join([]string{`&LabelSelector{`, + `MatchLabels:` + mapStringForMatchLabels + `,`, + `MatchExpressions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.MatchExpressions), "LabelSelectorRequirement", "LabelSelectorRequirement", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *LabelSelectorRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LabelSelectorRequirement{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *ListOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ListOptions{`, + `LabelSelector:` + fmt.Sprintf("%v", this.LabelSelector) + `,`, + `FieldSelector:` + fmt.Sprintf("%v", this.FieldSelector) + `,`, + `Watch:` + fmt.Sprintf("%v", this.Watch) + `,`, + `ResourceVersion:` + fmt.Sprintf("%v", this.ResourceVersion) + `,`, + `TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "NetworkPolicySpec", "NetworkPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyIngressRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyIngressRule{`, + `Ports:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ports), "NetworkPolicyPort", "NetworkPolicyPort", 1), `&`, ``, 1) + `,`, + `From:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.From), "NetworkPolicyPeer", "NetworkPolicyPeer", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "NetworkPolicy", "NetworkPolicy", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPeer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPeer{`, + `PodSelector:` + strings.Replace(fmt.Sprintf("%v", this.PodSelector), "LabelSelector", "LabelSelector", 1) + `,`, + `NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "LabelSelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicyPort) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicyPort{`, + `Protocol:` + valueToStringGenerated(this.Protocol) + `,`, + `Port:` + strings.Replace(fmt.Sprintf("%v", this.Port), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *NetworkPolicySpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&NetworkPolicySpec{`, + `PodSelector:` + strings.Replace(strings.Replace(this.PodSelector.String(), "LabelSelector", "LabelSelector", 1), `&`, ``, 1) + `,`, + `Ingress:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ingress), "NetworkPolicyIngressRule", "NetworkPolicyIngressRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicy{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodSecurityPolicySpec", "PodSecurityPolicySpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicyList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicyList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodSecurityPolicy", "PodSecurityPolicy", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodSecurityPolicySpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodSecurityPolicySpec{`, + `Privileged:` + fmt.Sprintf("%v", this.Privileged) + `,`, + `DefaultAddCapabilities:` + fmt.Sprintf("%v", this.DefaultAddCapabilities) + `,`, + `RequiredDropCapabilities:` + fmt.Sprintf("%v", this.RequiredDropCapabilities) + `,`, + `AllowedCapabilities:` + fmt.Sprintf("%v", this.AllowedCapabilities) + `,`, + `Volumes:` + fmt.Sprintf("%v", this.Volumes) + `,`, + `HostNetwork:` + fmt.Sprintf("%v", this.HostNetwork) + `,`, + `HostPorts:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.HostPorts), "HostPortRange", "HostPortRange", 1), `&`, ``, 1) + `,`, + `HostPID:` + fmt.Sprintf("%v", this.HostPID) + `,`, + `HostIPC:` + fmt.Sprintf("%v", this.HostIPC) + `,`, + `SELinux:` + strings.Replace(strings.Replace(this.SELinux.String(), "SELinuxStrategyOptions", "SELinuxStrategyOptions", 1), `&`, ``, 1) + `,`, + `RunAsUser:` + strings.Replace(strings.Replace(this.RunAsUser.String(), "RunAsUserStrategyOptions", "RunAsUserStrategyOptions", 1), `&`, ``, 1) + `,`, + `SupplementalGroups:` + strings.Replace(strings.Replace(this.SupplementalGroups.String(), "SupplementalGroupsStrategyOptions", "SupplementalGroupsStrategyOptions", 1), `&`, ``, 1) + `,`, + `FSGroup:` + strings.Replace(strings.Replace(this.FSGroup.String(), "FSGroupStrategyOptions", "FSGroupStrategyOptions", 1), `&`, ``, 1) + `,`, + `ReadOnlyRootFilesystem:` + fmt.Sprintf("%v", this.ReadOnlyRootFilesystem) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSet) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSet{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ReplicaSetSpec", "ReplicaSetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ReplicaSetStatus", "ReplicaSetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ReplicaSet", "ReplicaSet", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetSpec{`, + `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "LabelSelector", 1) + `,`, + `Template:` + strings.Replace(strings.Replace(this.Template.String(), "PodTemplateSpec", "k8s_io_kubernetes_pkg_api_v1.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicaSetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicaSetStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `FullyLabeledReplicas:` + fmt.Sprintf("%v", this.FullyLabeledReplicas) + `,`, + `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`, + `}`, + }, "") + return s +} +func (this *ReplicationControllerDummy) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ReplicationControllerDummy{`, + `}`, + }, "") + return s +} +func (this *RollbackConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollbackConfig{`, + `Revision:` + fmt.Sprintf("%v", this.Revision) + `,`, + `}`, + }, "") + return s +} +func (this *RollingUpdateDeployment) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RollingUpdateDeployment{`, + `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1) + `,`, + `MaxSurge:` + strings.Replace(fmt.Sprintf("%v", this.MaxSurge), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1) + `,`, + `}`, + }, "") + return s +} +func (this *RunAsUserStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RunAsUserStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SELinuxStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SELinuxStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `SELinuxOptions:` + strings.Replace(fmt.Sprintf("%v", this.SELinuxOptions), "SELinuxOptions", "k8s_io_kubernetes_pkg_api_v1.SELinuxOptions", 1) + `,`, + `}`, + }, "") + return s +} +func (this *Scale) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Scale{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ScaleSpec", "ScaleSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ScaleStatus", "ScaleStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleSpec{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `}`, + }, "") + return s +} +func (this *ScaleStatus) String() string { + if this == nil { + return "nil" + } + keysForSelector := make([]string, 0, len(this.Selector)) + for k := range this.Selector { + keysForSelector = append(keysForSelector, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForSelector) + mapStringForSelector := "map[string]string{" + for _, k := range keysForSelector { + mapStringForSelector += fmt.Sprintf("%v: %v,", k, this.Selector[k]) + } + mapStringForSelector += "}" + s := strings.Join([]string{`&ScaleStatus{`, + `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, + `Selector:` + mapStringForSelector + `,`, + `TargetSelector:` + fmt.Sprintf("%v", this.TargetSelector) + `,`, + `}`, + }, "") + return s +} +func (this *SubresourceReference) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SubresourceReference{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Subresource:` + fmt.Sprintf("%v", this.Subresource) + `,`, + `}`, + }, "") + return s +} +func (this *SupplementalGroupsStrategyOptions) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SupplementalGroupsStrategyOptions{`, + `Rule:` + fmt.Sprintf("%v", this.Rule) + `,`, + `Ranges:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Ranges), "IDRange", "IDRange", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResource{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Description:` + fmt.Sprintf("%v", this.Description) + `,`, + `Versions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Versions), "APIVersion", "APIVersion", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceData) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceData{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Data:` + valueToStringGenerated(this.Data) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceDataList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceDataList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ThirdPartyResourceData", "ThirdPartyResourceData", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ThirdPartyResourceList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ThirdPartyResourceList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ThirdPartyResource", "ThirdPartyResource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *APIVersion) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: APIVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: APIVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CPUTargetUtilization) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CPUTargetUtilization: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CPUTargetUtilization: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetPercentage", wireType) + } + m.TargetPercentage = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.TargetPercentage |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricCurrentStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricCurrentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricCurrentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CurrentValue.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricCurrentStatusList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricCurrentStatusList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricCurrentStatusList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CustomMetricCurrentStatus{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricTarget) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricTarget: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricTarget: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TargetValue.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomMetricTargetList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CustomMetricTargetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomMetricTargetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, CustomMetricTarget{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSet) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, DaemonSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DaemonSetStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DaemonSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DaemonSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentNumberScheduled", wireType) + } + m.CurrentNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.CurrentNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumberMisscheduled", wireType) + } + m.NumberMisscheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.NumberMisscheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredNumberScheduled", wireType) + } + m.DesiredNumberScheduled = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.DesiredNumberScheduled |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Deployment) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Deployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Deployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Deployment{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentRollback) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentRollback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentRollback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedAnnotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.UpdatedAnnotations == nil { + m.UpdatedAnnotations = make(map[string]string) + } + m.UpdatedAnnotations[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RollbackTo.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Strategy.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReadySeconds", wireType) + } + m.MinReadySeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.MinReadySeconds |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RevisionHistoryLimit", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RevisionHistoryLimit = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollbackTo", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollbackTo == nil { + m.RollbackTo = &RollbackConfig{} + } + if err := m.RollbackTo.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdatedReplicas", wireType) + } + m.UpdatedReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.UpdatedReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableReplicas", wireType) + } + m.AvailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.AvailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnavailableReplicas", wireType) + } + m.UnavailableReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.UnavailableReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeploymentStrategy) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DeploymentStrategy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeploymentStrategy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = DeploymentStrategyType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RollingUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RollingUpdate == nil { + m.RollingUpdate = &RollingUpdateDeployment{} + } + if err := m.RollingUpdate.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ExportOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ExportOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExportOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Export", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Export = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Exact = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FSGroupStrategyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: FSGroupStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FSGroupStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = FSGroupStrategyType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPIngressPath) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPIngressPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPIngressPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Backend.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HTTPIngressRuleValue) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HTTPIngressRuleValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HTTPIngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Paths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Paths = append(m.Paths, HTTPIngressPath{}) + if err := m.Paths[len(m.Paths)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscaler) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscaler: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, HorizontalPodAutoscaler{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScaleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ScaleRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinReplicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.MinReplicas = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicas", wireType) + } + m.MaxReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.MaxReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPUUtilization", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CPUUtilization == nil { + m.CPUUtilization = &CPUTargetUtilization{} + } + if err := m.CPUUtilization.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HorizontalPodAutoscalerStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HorizontalPodAutoscalerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ObservedGeneration = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastScaleTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LastScaleTime == nil { + m.LastScaleTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.LastScaleTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentReplicas", wireType) + } + m.CurrentReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.CurrentReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredReplicas", wireType) + } + m.DesiredReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.DesiredReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentCPUUtilizationPercentage", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.CurrentCPUUtilizationPercentage = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostPortRange) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostPortRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostPortRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + m.Min = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Min |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + m.Max = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Max |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IDRange) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IDRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IDRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType) + } + m.Min = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Min |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + m.Max = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Max |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Ingress) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Ingress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Ingress: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressBackend) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressBackend: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressBackend: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ServiceName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServicePort", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ServicePort.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Ingress{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressRule) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Host = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IngressRuleValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IngressRuleValue.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressRuleValue) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressRuleValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressRuleValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HTTP", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HTTP == nil { + m.HTTP = &HTTPIngressRuleValue{} + } + if err := m.HTTP.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Backend == nil { + m.Backend = &IngressBackend{} + } + if err := m.Backend.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TLS = append(m.TLS, IngressTLS{}) + if err := m.TLS[len(m.TLS)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, IngressRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LoadBalancer", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LoadBalancer.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IngressTLS) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IngressTLS: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IngressTLS: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hosts = append(m.Hosts, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SecretName = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Job) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Job: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Job: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobCondition) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = JobConditionType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_kubernetes_pkg_api_v1.ConditionStatus(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastProbeTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastProbeTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransitionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastTransitionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Message = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Job{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Parallelism", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Parallelism = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Completions", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Completions = &v + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveDeadlineSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ActiveDeadlineSeconds = &v + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoSelector", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.AutoSelector = &b + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *JobStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: JobStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: JobStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Conditions = append(m.Conditions, JobCondition{}) + if err := m.Conditions[len(m.Conditions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.StartTime == nil { + m.StartTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.StartTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CompletionTime == nil { + m.CompletionTime = &k8s_io_kubernetes_pkg_api_unversioned.Time{} + } + if err := m.CompletionTime.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + m.Active = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Active |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Succeeded", wireType) + } + m.Succeeded = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Succeeded |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Failed", wireType) + } + m.Failed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Failed |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelector) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelector: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelector: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabels", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.MatchLabels == nil { + m.MatchLabels = make(map[string]string) + } + m.MatchLabels[mapkey] = mapvalue + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchExpressions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchExpressions = append(m.MatchExpressions, LabelSelectorRequirement{}) + if err := m.MatchExpressions[len(m.MatchExpressions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LabelSelectorRequirement) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LabelSelectorRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LabelSelectorRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = LabelSelectorOperator(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Values = append(m.Values, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LabelSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LabelSelector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldSelector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Watch", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Watch = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.TimeoutSeconds = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicy) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyIngressRule) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyIngressRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ports = append(m.Ports, NetworkPolicyPort{}) + if err := m.Ports[len(m.Ports)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = append(m.From, NetworkPolicyPeer{}) + if err := m.From[len(m.From)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, NetworkPolicy{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPeer) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPeer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPeer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodSelector == nil { + m.PodSelector = &LabelSelector{} + } + if err := m.PodSelector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NamespaceSelector == nil { + m.NamespaceSelector = &LabelSelector{} + } + if err := m.NamespaceSelector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicyPort) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicyPort: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicyPort: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := k8s_io_kubernetes_pkg_api_v1.Protocol(data[iNdEx:postIndex]) + m.Protocol = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Port == nil { + m.Port = &k8s_io_kubernetes_pkg_util_intstr.IntOrString{} + } + if err := m.Port.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NetworkPolicySpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NetworkPolicySpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NetworkPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PodSelector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ingress", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ingress = append(m.Ingress, NetworkPolicyIngressRule{}) + if err := m.Ingress[len(m.Ingress)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicy) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicyList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicyList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicyList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodSecurityPolicy{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodSecurityPolicySpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodSecurityPolicySpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodSecurityPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Privileged", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Privileged = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultAddCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DefaultAddCapabilities = append(m.DefaultAddCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(data[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequiredDropCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequiredDropCapabilities = append(m.RequiredDropCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedCapabilities", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedCapabilities = append(m.AllowedCapabilities, k8s_io_kubernetes_pkg_api_v1.Capability(data[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Volumes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Volumes = append(m.Volumes, FSType(data[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostNetwork", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostNetwork = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPorts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostPorts = append(m.HostPorts, HostPortRange{}) + if err := m.HostPorts[len(m.HostPorts)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostPID", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostPID = bool(v != 0) + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostIPC", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.HostIPC = bool(v != 0) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SELinux.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RunAsUser", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RunAsUser.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.SupplementalGroups.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSGroup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FSGroup.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnlyRootFilesystem", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnlyRootFilesystem = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSet) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ReplicaSet{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Template", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Template.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicaSetStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicaSetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicaSetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field FullyLabeledReplicas", wireType) + } + m.FullyLabeledReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.FullyLabeledReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + } + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ObservedGeneration |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType) + } + m.ReadyReplicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ReadyReplicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ReplicationControllerDummy) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ReplicationControllerDummy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ReplicationControllerDummy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollbackConfig) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollbackConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollbackConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Revision", wireType) + } + m.Revision = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Revision |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RollingUpdateDeployment) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RollingUpdateDeployment: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RollingUpdateDeployment: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxUnavailable == nil { + m.MaxUnavailable = &k8s_io_kubernetes_pkg_util_intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSurge", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxSurge == nil { + m.MaxSurge = &k8s_io_kubernetes_pkg_util_intstr.IntOrString{} + } + if err := m.MaxSurge.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RunAsUserStrategyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RunAsUserStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RunAsUserStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = RunAsUserStrategy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SELinuxStrategyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SELinuxStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SELinuxStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = SELinuxStrategy(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SELinuxOptions == nil { + m.SELinuxOptions = &k8s_io_kubernetes_pkg_api_v1.SELinuxOptions{} + } + if err := m.SELinuxOptions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Scale) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Scale: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Scale: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScaleStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScaleStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + m.Replicas = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Replicas |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Selector == nil { + m.Selector = make(map[string]string) + } + m.Selector[mapkey] = mapvalue + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetSelector = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SubresourceReference) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SubresourceReference: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SubresourceReference: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subresource", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subresource = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SupplementalGroupsStrategyOptions) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SupplementalGroupsStrategyOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SupplementalGroupsStrategyOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rule = SupplementalGroupsStrategyType(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ranges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ranges = append(m.Ranges, IDRange{}) + if err := m.Ranges[len(m.Ranges)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResource) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Versions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Versions = append(m.Versions, APIVersion{}) + if err := m.Versions[len(m.Versions)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceData) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], data[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceDataList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceDataList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceDataList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ThirdPartyResourceData{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ThirdPartyResourceList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ThirdPartyResourceList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ThirdPartyResourceList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ThirdPartyResource{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 3921 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x1b, 0x4d, 0x8f, 0x1c, 0x47, + 0x35, 0x33, 0xb3, 0x1f, 0x33, 0xb5, 0x1f, 0x5e, 0x97, 0xd7, 0xf6, 0x64, 0x93, 0xd8, 0x49, 0x47, + 0x84, 0x44, 0xc4, 0xb3, 0xd8, 0x24, 0xc1, 0x71, 0x12, 0x27, 0x3b, 0xfb, 0x61, 0x3b, 0xd9, 0xb5, + 0x27, 0x35, 0x6b, 0x27, 0xe4, 0x93, 0xde, 0x99, 0xda, 0xd9, 0xf6, 0xf6, 0x4c, 0x4f, 0xfa, 0x63, + 0xbd, 0x13, 0x84, 0x08, 0x02, 0x24, 0x2e, 0x09, 0xb9, 0x11, 0x09, 0x38, 0x20, 0x81, 0x38, 0x20, + 0x22, 0x90, 0x90, 0x72, 0xe0, 0x02, 0x48, 0x08, 0x73, 0x40, 0x04, 0x04, 0x82, 0x0b, 0x09, 0x04, + 0x41, 0xc4, 0x5f, 0x08, 0x48, 0xf0, 0xaa, 0xba, 0xba, 0xbb, 0xaa, 0xa7, 0x7b, 0xec, 0x99, 0xfd, + 0x90, 0x10, 0x87, 0x95, 0xdd, 0xf5, 0x3e, 0xeb, 0xd5, 0xab, 0xf7, 0x5e, 0x55, 0xbd, 0x41, 0x8f, + 0x6d, 0x9e, 0x76, 0x4a, 0x86, 0x35, 0xbb, 0xe9, 0xad, 0x51, 0xbb, 0x45, 0x5d, 0xea, 0xcc, 0xb6, + 0x37, 0x1b, 0xb3, 0x7a, 0xdb, 0x70, 0x66, 0xe9, 0xb6, 0x4b, 0x5b, 0x8e, 0x61, 0xb5, 0x9c, 0xd9, + 0xad, 0x93, 0x6b, 0xd4, 0xd5, 0x4f, 0xce, 0x36, 0x68, 0x8b, 0xda, 0xba, 0x4b, 0xeb, 0xa5, 0xb6, + 0x6d, 0xb9, 0x16, 0x3e, 0xe1, 0x93, 0x97, 0x22, 0xf2, 0x12, 0x90, 0x97, 0x18, 0x79, 0x29, 0x22, + 0x2f, 0x09, 0xf2, 0x99, 0x13, 0x0d, 0xc3, 0xdd, 0xf0, 0xd6, 0x4a, 0x35, 0xab, 0x39, 0xdb, 0xb0, + 0x1a, 0xd6, 0x2c, 0xe7, 0xb2, 0xe6, 0xad, 0xf3, 0x2f, 0xfe, 0xc1, 0xff, 0xe7, 0x73, 0x9f, 0x39, + 0x95, 0xaa, 0xdc, 0xac, 0x4d, 0x1d, 0xcb, 0xb3, 0x6b, 0x34, 0xae, 0xd1, 0xcc, 0x83, 0xe9, 0x34, + 0x5e, 0x6b, 0x8b, 0xda, 0x4c, 0x21, 0x5a, 0xef, 0x22, 0xbb, 0x3f, 0x9d, 0x6c, 0xab, 0x6b, 0xda, + 0x33, 0x27, 0x92, 0xb1, 0x6d, 0xaf, 0xe5, 0x1a, 0xcd, 0x6e, 0x9d, 0x4e, 0x26, 0xa3, 0x7b, 0xae, + 0x61, 0xce, 0x1a, 0x2d, 0xd7, 0x71, 0xed, 0x38, 0x89, 0x56, 0x42, 0x68, 0xae, 0x72, 0xe1, 0x8a, + 0xaf, 0x2f, 0xbe, 0x13, 0x0d, 0xb5, 0xf4, 0x26, 0x2d, 0x66, 0xee, 0xcc, 0xdc, 0x5b, 0x28, 0x8f, + 0x5f, 0x7f, 0xef, 0xf8, 0x2d, 0x1f, 0xbc, 0x77, 0x7c, 0xe8, 0x22, 0x8c, 0x11, 0x0e, 0xd1, 0x5e, + 0x40, 0xd3, 0xf3, 0x95, 0xcb, 0xab, 0xba, 0xdd, 0xa0, 0xee, 0x65, 0xe0, 0x6b, 0xbc, 0xaa, 0xbb, + 0x8c, 0x72, 0x01, 0x4d, 0xb9, 0x7c, 0xb0, 0x42, 0xc1, 0x5a, 0x2d, 0x57, 0x6f, 0xf8, 0x5c, 0x86, + 0xcb, 0x45, 0xc1, 0x65, 0x6a, 0x35, 0x06, 0x27, 0x5d, 0x14, 0xda, 0xd7, 0x33, 0xe8, 0xd6, 0x79, + 0xcf, 0x71, 0xad, 0xe6, 0x0a, 0x75, 0x6d, 0xa3, 0x36, 0xef, 0xd9, 0x36, 0x80, 0xaa, 0xae, 0xee, + 0x7a, 0xce, 0x8d, 0xb5, 0xc3, 0xcf, 0xa2, 0xe1, 0x2d, 0xdd, 0xf4, 0x68, 0x31, 0x0b, 0x28, 0x63, + 0xa7, 0xee, 0x2f, 0xa5, 0xba, 0x4d, 0x29, 0x58, 0xd8, 0xd2, 0xd3, 0x9e, 0x0e, 0xd6, 0x74, 0x3b, + 0xe5, 0x69, 0xc1, 0x70, 0x5c, 0x48, 0xbd, 0xc2, 0x38, 0x11, 0x9f, 0xa1, 0xf6, 0x46, 0x06, 0xdd, + 0x91, 0xaa, 0xd9, 0xb2, 0xe1, 0xb8, 0xb8, 0x89, 0x86, 0x0d, 0x97, 0x36, 0x1d, 0x50, 0x2f, 0x07, + 0xb2, 0xcf, 0x97, 0xfa, 0x72, 0xd9, 0x52, 0x2a, 0xf3, 0xf2, 0x84, 0xd0, 0x6b, 0xf8, 0x02, 0x63, + 0x4f, 0x7c, 0x29, 0xda, 0xd7, 0x32, 0x08, 0xcb, 0x34, 0xbe, 0x75, 0x6f, 0xc2, 0x46, 0xcf, 0xec, + 0xc4, 0x46, 0x87, 0x04, 0xc3, 0x31, 0x5f, 0x9c, 0x62, 0xa2, 0xd7, 0x32, 0xe8, 0x48, 0xb7, 0x46, + 0xdc, 0x36, 0xeb, 0xaa, 0x6d, 0xe6, 0x76, 0x60, 0x1b, 0x9f, 0x6b, 0x8a, 0x51, 0x7e, 0x90, 0x45, + 0x85, 0x05, 0x9d, 0x36, 0xad, 0x56, 0x15, 0x6c, 0xf1, 0x2c, 0xca, 0x37, 0x81, 0xbe, 0xae, 0xbb, + 0x3a, 0xb7, 0xc7, 0xd8, 0xa9, 0x7b, 0x7b, 0x4c, 0x76, 0xeb, 0x64, 0xe9, 0xd2, 0xda, 0x55, 0x5a, + 0x73, 0x41, 0x8e, 0x5e, 0xc6, 0x82, 0x3f, 0x8a, 0xc6, 0x48, 0xc8, 0x0d, 0xbf, 0x84, 0x86, 0x9c, + 0x36, 0xad, 0x09, 0x13, 0x3e, 0xda, 0xe7, 0x74, 0x42, 0x0d, 0xab, 0xc0, 0x23, 0x5a, 0x23, 0xf6, + 0x45, 0x38, 0x5f, 0xb0, 0xd7, 0x88, 0xc3, 0x17, 0xbf, 0x98, 0xe3, 0x12, 0xce, 0x0e, 0x2c, 0xc1, + 0x77, 0xa1, 0x49, 0x21, 0x63, 0xc4, 0xff, 0x26, 0x82, 0xbb, 0xf6, 0xeb, 0x0c, 0x9a, 0x08, 0x71, + 0xf9, 0x4a, 0xbd, 0xd8, 0x65, 0xb3, 0xd9, 0x1e, 0x36, 0x93, 0x22, 0x5d, 0x89, 0x91, 0x73, 0xd3, + 0x4d, 0x09, 0x61, 0xf9, 0x60, 0x44, 0x32, 0xdc, 0x8b, 0x81, 0x23, 0x64, 0xb9, 0x23, 0x9c, 0x1e, + 0x74, 0x5e, 0x29, 0xeb, 0xff, 0x7b, 0x79, 0x3e, 0x55, 0xdf, 0x92, 0x79, 0x87, 0x9a, 0xb0, 0x82, + 0x96, 0x2d, 0xe6, 0xd3, 0xef, 0x6a, 0x2d, 0xeb, 0x6b, 0xd4, 0xac, 0x0a, 0x1e, 0xe5, 0x71, 0x36, + 0xb1, 0xe0, 0x8b, 0x84, 0xbc, 0xf1, 0xf3, 0x28, 0x0f, 0x1a, 0xb4, 0x4d, 0x08, 0xad, 0xc2, 0x2b, + 0x4e, 0xf4, 0xf6, 0xb5, 0x8a, 0x55, 0x5f, 0x15, 0x04, 0xdc, 0x0d, 0x42, 0xab, 0x05, 0xa3, 0x24, + 0x64, 0xa8, 0xbd, 0x9e, 0x45, 0x07, 0x62, 0x4b, 0x8a, 0xaf, 0xa0, 0x23, 0x35, 0x3f, 0x4c, 0x5c, + 0xf4, 0x9a, 0x20, 0xa0, 0x5a, 0xdb, 0xa0, 0x75, 0xcf, 0xa4, 0x75, 0x11, 0x76, 0x8f, 0x09, 0x7e, + 0x47, 0xe6, 0x13, 0xb1, 0x48, 0x0a, 0x35, 0x7e, 0x12, 0xe1, 0x16, 0x1f, 0x5a, 0x31, 0x1c, 0x27, + 0xe4, 0x99, 0xe5, 0x3c, 0x67, 0x04, 0x4f, 0x7c, 0xb1, 0x0b, 0x83, 0x24, 0x50, 0x31, 0x1d, 0xeb, + 0xd4, 0x31, 0x6c, 0x5a, 0x8f, 0xeb, 0x98, 0x53, 0x75, 0x5c, 0x48, 0xc4, 0x22, 0x29, 0xd4, 0xda, + 0x0f, 0xb3, 0x08, 0x2d, 0xd0, 0xb6, 0x69, 0x75, 0x9a, 0x30, 0x83, 0x3d, 0xdc, 0xe7, 0x2f, 0x2b, + 0xfb, 0xfc, 0xb1, 0x7e, 0xbd, 0x35, 0x54, 0x31, 0x75, 0xa3, 0x37, 0x62, 0x1b, 0xfd, 0xf1, 0xc1, + 0x45, 0xf4, 0xde, 0xe9, 0xbf, 0xc9, 0xa0, 0xc9, 0x08, 0x79, 0x3f, 0xb6, 0xfa, 0x4b, 0xea, 0x56, + 0x7f, 0x78, 0xe0, 0x99, 0xa5, 0xec, 0xf5, 0xb7, 0x72, 0x08, 0x47, 0x48, 0xc4, 0x32, 0xcd, 0x35, + 0xbd, 0xb6, 0x79, 0x13, 0x09, 0xf0, 0xbb, 0x90, 0x39, 0xbd, 0x76, 0x9d, 0x15, 0x41, 0x73, 0xad, + 0x96, 0xe5, 0xf2, 0x02, 0x26, 0x50, 0xf3, 0x33, 0x03, 0xab, 0x19, 0x68, 0x50, 0xba, 0xdc, 0xc5, + 0x7b, 0xb1, 0xe5, 0xda, 0x9d, 0x68, 0xf7, 0x74, 0x23, 0x90, 0x04, 0x85, 0xf0, 0x2b, 0x08, 0xd9, + 0x82, 0xe7, 0xaa, 0x25, 0xfc, 0xa3, 0x5f, 0x17, 0x0c, 0x94, 0x9a, 0xb7, 0x5a, 0xeb, 0x46, 0x23, + 0xf2, 0x76, 0x12, 0x32, 0x26, 0x92, 0x90, 0x99, 0x45, 0x74, 0x34, 0x45, 0x7b, 0x3c, 0x85, 0x72, + 0x9b, 0xb4, 0xe3, 0x9b, 0x95, 0xb0, 0xff, 0xe2, 0x69, 0xb9, 0x90, 0x28, 0x88, 0x2a, 0xe0, 0x4c, + 0xf6, 0x74, 0x46, 0x7b, 0x6b, 0x58, 0x76, 0x36, 0x1e, 0x87, 0xef, 0x45, 0x79, 0x1b, 0x46, 0x8c, + 0x9a, 0xee, 0x88, 0x00, 0xc5, 0x23, 0x29, 0x11, 0x63, 0x24, 0x84, 0x2a, 0x11, 0x3b, 0xbb, 0x4f, + 0x11, 0x3b, 0xb7, 0xcb, 0x11, 0x1b, 0x5b, 0x30, 0x09, 0x97, 0xd5, 0xd9, 0x8d, 0x4e, 0x71, 0x88, + 0x33, 0x9f, 0xdb, 0xc1, 0xce, 0xf6, 0x19, 0x45, 0x02, 0x83, 0x11, 0x12, 0x0a, 0xc1, 0x73, 0xe8, + 0x40, 0xd3, 0x68, 0x11, 0xaa, 0xd7, 0x3b, 0x55, 0x5a, 0xb3, 0x5a, 0x75, 0xa7, 0x38, 0xcc, 0xcd, + 0x7c, 0x54, 0x10, 0x1d, 0x58, 0x51, 0xc1, 0x24, 0x8e, 0x8f, 0x97, 0xd1, 0xb4, 0x4d, 0xb7, 0x0c, + 0xa6, 0xc6, 0x79, 0xd8, 0xce, 0x96, 0xdd, 0x59, 0x36, 0x9a, 0x86, 0x5b, 0x1c, 0xf1, 0xcb, 0x78, + 0xe0, 0x31, 0x4d, 0x12, 0xe0, 0x24, 0x91, 0x0a, 0xdf, 0x83, 0x46, 0xda, 0xba, 0xe7, 0x40, 0xac, + 0x1f, 0x05, 0xfa, 0x7c, 0x14, 0x98, 0x2a, 0x7c, 0x94, 0x08, 0x28, 0x94, 0xcd, 0xb2, 0x97, 0xe7, + 0x77, 0xc3, 0xcb, 0x27, 0xd3, 0x3d, 0x5c, 0xfb, 0x30, 0x8b, 0xa6, 0xe2, 0x41, 0x93, 0xe5, 0x3c, + 0x6b, 0xcd, 0xa1, 0xf6, 0x16, 0xad, 0x9f, 0xf3, 0xcf, 0x47, 0xc0, 0x9e, 0xbb, 0x69, 0x2e, 0xda, + 0xb5, 0x97, 0xba, 0x30, 0x48, 0x02, 0x15, 0xbe, 0x5f, 0x72, 0x74, 0x3f, 0x6b, 0x86, 0xcb, 0x96, + 0xe0, 0xec, 0xb0, 0x6c, 0x62, 0xe7, 0x07, 0x40, 0x91, 0x1a, 0xc3, 0x65, 0xbb, 0xac, 0x82, 0x49, + 0x1c, 0x1f, 0x9f, 0x43, 0x07, 0xf5, 0x2d, 0xdd, 0x30, 0xf5, 0x35, 0x93, 0x86, 0x4c, 0x86, 0x38, + 0x93, 0x5b, 0x05, 0x93, 0x83, 0x73, 0x71, 0x04, 0xd2, 0x4d, 0x83, 0x57, 0xd0, 0x21, 0xaf, 0xd5, + 0xcd, 0xca, 0x77, 0xa3, 0xdb, 0x04, 0xab, 0x43, 0x97, 0xbb, 0x51, 0x48, 0x12, 0x9d, 0xf6, 0xdb, + 0x8c, 0x1c, 0x9f, 0x03, 0x97, 0xc5, 0x67, 0xd0, 0x90, 0xdb, 0x69, 0x07, 0xf1, 0xf9, 0x9e, 0x20, + 0x3e, 0xaf, 0xc2, 0xd8, 0x47, 0xbc, 0x12, 0x88, 0x53, 0x30, 0x08, 0xe1, 0x34, 0xf8, 0x0b, 0x68, + 0x82, 0x2d, 0xa5, 0xd1, 0x6a, 0xf8, 0x56, 0x11, 0xf1, 0x61, 0x69, 0x00, 0x77, 0x09, 0x79, 0x48, + 0x79, 0xe6, 0x20, 0x28, 0x32, 0xa1, 0x00, 0x89, 0x2a, 0x0f, 0x4e, 0xbf, 0x13, 0x8b, 0xdb, 0x6d, + 0xcb, 0x76, 0x2f, 0xb5, 0xfd, 0x18, 0x0d, 0x5e, 0x4e, 0xf9, 0x00, 0x9f, 0x8f, 0xe4, 0xe5, 0x3e, + 0x1a, 0x11, 0x50, 0x7c, 0x37, 0x1a, 0xa6, 0xdb, 0x7a, 0xcd, 0xe5, 0x1a, 0xe7, 0xa3, 0x8c, 0xb6, + 0xc8, 0x06, 0x89, 0x0f, 0xd3, 0x7e, 0x04, 0x07, 0xa8, 0xa5, 0xea, 0x39, 0xdb, 0xf2, 0xda, 0xc1, + 0xe4, 0x03, 0x39, 0x9f, 0x46, 0x43, 0x36, 0x94, 0x3e, 0xc2, 0x6a, 0x77, 0x07, 0x56, 0x23, 0x30, + 0x06, 0x56, 0x3b, 0x14, 0xa3, 0xf2, 0x4d, 0xc6, 0x08, 0x20, 0x0b, 0x8f, 0xd8, 0x7a, 0xab, 0x41, + 0x83, 0xfc, 0xf6, 0x50, 0x9f, 0xb6, 0xba, 0xb0, 0x40, 0x18, 0x79, 0x34, 0x31, 0xfe, 0x09, 0x75, + 0x85, 0xcf, 0x55, 0xfb, 0x56, 0x06, 0x1d, 0x38, 0xbf, 0xba, 0x5a, 0xb9, 0xd0, 0x6a, 0xc0, 0x69, + 0xd1, 0xa9, 0xe8, 0xee, 0x06, 0x4b, 0xc1, 0x6d, 0xf8, 0x37, 0x9e, 0x82, 0x19, 0x8c, 0x70, 0x08, + 0xde, 0x40, 0xa3, 0x6c, 0x3f, 0xd2, 0x56, 0x7d, 0xc0, 0xd2, 0x4a, 0x88, 0x2b, 0xfb, 0x4c, 0xca, + 0x07, 0x84, 0x8c, 0x51, 0x31, 0x40, 0x02, 0xf6, 0xda, 0xe7, 0xd0, 0xb4, 0xa4, 0x1e, 0xb3, 0x17, + 0x3f, 0xb3, 0xe2, 0x1a, 0x1a, 0x66, 0x9a, 0x04, 0x27, 0xd2, 0x7e, 0x0f, 0x58, 0xb1, 0x29, 0x47, + 0x0b, 0xca, 0xbe, 0xa0, 0x44, 0xe1, 0xbc, 0xb5, 0x3f, 0x66, 0xd1, 0xd1, 0xf3, 0x96, 0x6d, 0xbc, + 0x6a, 0xb5, 0x5c, 0xdd, 0x84, 0xfc, 0x31, 0xe7, 0xb9, 0x96, 0x53, 0xd3, 0x4d, 0x6a, 0xef, 0x61, + 0xd1, 0x6a, 0x2a, 0x45, 0xeb, 0x93, 0xfd, 0xce, 0x2c, 0x59, 0xdf, 0xd4, 0x0a, 0xd6, 0x8d, 0x55, + 0xb0, 0xcb, 0xbb, 0x24, 0xaf, 0x77, 0x39, 0xfb, 0xcf, 0x0c, 0xba, 0x2d, 0x85, 0x72, 0x3f, 0x6a, + 0xdb, 0x4d, 0xb5, 0xb6, 0x5d, 0xda, 0x9d, 0x39, 0xa7, 0x14, 0xba, 0xff, 0xca, 0xa6, 0xce, 0x95, + 0x97, 0x56, 0xaf, 0x40, 0xad, 0xc1, 0xbe, 0x08, 0x5d, 0x17, 0x73, 0x9d, 0xef, 0x53, 0x9f, 0xaa, + 0xb7, 0x16, 0x5c, 0xf5, 0x00, 0x13, 0x0a, 0xc7, 0xc2, 0x1a, 0x95, 0xaa, 0x0d, 0xc1, 0x9c, 0x84, + 0x62, 0xf0, 0x49, 0x34, 0xc6, 0xab, 0x07, 0x25, 0xcf, 0x1d, 0x60, 0xf7, 0x42, 0x2b, 0xd1, 0x30, + 0x91, 0x71, 0xf0, 0x83, 0x40, 0xa2, 0x6f, 0xc7, 0xb2, 0x5c, 0x78, 0x9d, 0xb4, 0x12, 0x81, 0x88, + 0x8c, 0x07, 0x21, 0x7f, 0xb2, 0xd6, 0xf6, 0xa4, 0x9b, 0x46, 0x51, 0x4e, 0xf5, 0x3b, 0xc5, 0xa4, + 0x4b, 0xcb, 0x32, 0x06, 0xd1, 0x93, 0x00, 0x91, 0xc6, 0x48, 0x4c, 0x9c, 0xf6, 0xf3, 0x1c, 0xba, + 0xa3, 0xa7, 0x8f, 0xe2, 0xa5, 0x1e, 0xd5, 0xc3, 0x91, 0x3e, 0x2a, 0x87, 0x3a, 0x9a, 0x30, 0x75, + 0xc7, 0xe5, 0xe6, 0x5e, 0x35, 0x9a, 0x41, 0x76, 0xfb, 0xc4, 0x4d, 0x3a, 0x2e, 0x23, 0xf1, 0x53, + 0xd8, 0xb2, 0xcc, 0x85, 0xa8, 0x4c, 0x59, 0xc5, 0x21, 0x4e, 0xfe, 0x69, 0x15, 0xc7, 0xbc, 0x0a, + 0x26, 0x71, 0x7c, 0xc6, 0x42, 0x1c, 0xcc, 0x63, 0xf5, 0x46, 0xc8, 0x62, 0x41, 0x05, 0x93, 0x38, + 0x3e, 0x54, 0x7d, 0xc7, 0x05, 0x57, 0xd5, 0xfc, 0xd2, 0xed, 0xb1, 0x5f, 0x77, 0xdc, 0x0d, 0xec, + 0x8e, 0xcf, 0xf7, 0x46, 0x25, 0x37, 0xe2, 0xa5, 0xad, 0xa0, 0x89, 0xf3, 0x96, 0xe3, 0x56, 0x58, + 0x4a, 0x66, 0x79, 0x0b, 0xdf, 0x81, 0x72, 0xe0, 0x9c, 0xe2, 0x24, 0x32, 0x26, 0xd4, 0xce, 0x31, + 0xe7, 0x65, 0xe3, 0x1c, 0xac, 0x6f, 0x0b, 0xbf, 0x8e, 0xc0, 0xe0, 0x97, 0x6c, 0x5c, 0x3b, 0x87, + 0x46, 0x45, 0x5e, 0x94, 0x19, 0xe5, 0x7a, 0x33, 0xca, 0x25, 0x30, 0xfa, 0x5e, 0x16, 0x38, 0xf9, + 0x69, 0x64, 0x0f, 0x13, 0xc2, 0x0b, 0x4a, 0x42, 0x38, 0x33, 0x58, 0xaa, 0x4d, 0x4d, 0x00, 0xf5, + 0x58, 0x02, 0x78, 0x74, 0x40, 0xfe, 0xbd, 0x03, 0xfe, 0xdb, 0x19, 0x34, 0xa9, 0x26, 0x7d, 0x16, + 0x51, 0xd8, 0x1e, 0x32, 0x6a, 0xf4, 0x62, 0x74, 0xe0, 0x0f, 0x23, 0x4a, 0x35, 0x02, 0x11, 0x19, + 0x0f, 0xd3, 0x90, 0x8c, 0xb9, 0x83, 0x30, 0x4a, 0x29, 0x45, 0x69, 0xf6, 0x74, 0x52, 0xf2, 0x9f, + 0x4e, 0x40, 0x51, 0xf7, 0x12, 0xec, 0x79, 0x1b, 0xca, 0xc1, 0x2e, 0x31, 0xdc, 0xb3, 0x64, 0xbe, + 0xda, 0xaf, 0x32, 0x68, 0x4c, 0x28, 0xbc, 0x1f, 0x19, 0xe9, 0x79, 0x35, 0x23, 0x3d, 0x34, 0x60, + 0x3d, 0x95, 0x9c, 0x81, 0xde, 0x89, 0xe6, 0xc2, 0x2a, 0x28, 0x56, 0xe0, 0x6d, 0xc0, 0x76, 0x8a, + 0x17, 0x78, 0x6c, 0x8b, 0x11, 0x0e, 0xc1, 0x5f, 0xc9, 0xa0, 0x29, 0x23, 0x56, 0x73, 0x09, 0x53, + 0x3f, 0x3e, 0x98, 0x6a, 0x21, 0x9b, 0xe8, 0x41, 0x29, 0x0e, 0x21, 0x5d, 0x22, 0x35, 0x0f, 0x75, + 0x61, 0x61, 0x1d, 0xb4, 0x77, 0xdd, 0xf6, 0x80, 0xb9, 0x32, 0xa9, 0x9a, 0x2c, 0xe7, 0xf9, 0xf4, + 0x01, 0x42, 0x38, 0x6b, 0xed, 0xed, 0x6c, 0x68, 0xb0, 0xaa, 0xbf, 0x47, 0xc2, 0x7a, 0x37, 0xb3, + 0x1b, 0xf5, 0xee, 0x58, 0x52, 0xad, 0x0b, 0x11, 0x24, 0xe7, 0x9a, 0x83, 0xde, 0xb7, 0x09, 0x09, + 0xab, 0xcb, 0xd5, 0x28, 0x4e, 0xc1, 0x07, 0x61, 0x2c, 0xf1, 0xcb, 0x68, 0x98, 0x9d, 0x26, 0xd8, + 0x16, 0xcf, 0x0d, 0x1e, 0x42, 0x98, 0xbd, 0x22, 0x0f, 0x63, 0x5f, 0xe0, 0x61, 0x9c, 0x2f, 0x94, + 0xe9, 0x13, 0x4a, 0x1c, 0xc0, 0x57, 0xd1, 0xb8, 0x69, 0xe9, 0xf5, 0xb2, 0x6e, 0xea, 0x50, 0x8c, + 0x04, 0x77, 0xf7, 0x9f, 0xec, 0x1d, 0x11, 0x97, 0x25, 0x0a, 0x11, 0x4f, 0xc2, 0x47, 0x3d, 0x19, + 0x46, 0x14, 0xde, 0x9a, 0x8e, 0x50, 0x34, 0x7b, 0x7c, 0x1c, 0x0d, 0x33, 0x17, 0xf6, 0x4f, 0x06, + 0x85, 0x72, 0x81, 0xe9, 0xca, 0x3c, 0x1b, 0x74, 0xe5, 0xe3, 0xf8, 0x14, 0x42, 0x0e, 0xad, 0xd9, + 0xd4, 0xe5, 0x61, 0x87, 0x5f, 0x7e, 0x45, 0x01, 0xb8, 0x1a, 0x42, 0x88, 0x84, 0xa5, 0x7d, 0x23, + 0x8b, 0x72, 0x4f, 0x5a, 0x6b, 0x7b, 0x18, 0xe4, 0x9f, 0x55, 0x82, 0x7c, 0xbf, 0xfb, 0x1f, 0x74, + 0x4b, 0x0d, 0xf0, 0x9f, 0x8d, 0x05, 0xf8, 0xd3, 0x03, 0xf0, 0xee, 0x1d, 0xdc, 0x7f, 0x97, 0x43, + 0xe3, 0x80, 0x35, 0x6f, 0xb5, 0xea, 0x06, 0x2f, 0x85, 0x1e, 0x50, 0x2e, 0x09, 0xee, 0x8c, 0x5d, + 0x12, 0x4c, 0xc9, 0xb8, 0xd2, 0xf5, 0xc0, 0x95, 0x50, 0x51, 0x7f, 0x51, 0xce, 0xaa, 0xe2, 0x80, + 0xb2, 0xe7, 0xeb, 0x7b, 0x29, 0xe4, 0xa9, 0xaa, 0x07, 0xa7, 0x55, 0x5e, 0x43, 0x55, 0x6c, 0x6b, + 0xcd, 0x2f, 0xcc, 0x72, 0xfd, 0x17, 0x66, 0x87, 0x85, 0x2e, 0xbc, 0x38, 0x0b, 0x39, 0x11, 0x95, + 0x31, 0xbe, 0x86, 0x30, 0x1b, 0x58, 0x85, 0xc3, 0xb5, 0xe3, 0xcf, 0x8e, 0x89, 0x1b, 0xea, 0x5f, + 0x5c, 0x78, 0x6b, 0xb5, 0xdc, 0xc5, 0x8e, 0x24, 0x88, 0x60, 0xf7, 0x18, 0x36, 0xd5, 0x1d, 0xa8, + 0x5b, 0x87, 0xb9, 0xe9, 0xa2, 0xe3, 0x3e, 0x1f, 0x25, 0x02, 0x8a, 0xef, 0x43, 0xa3, 0x4d, 0xd8, + 0x27, 0xac, 0x3e, 0x1b, 0xe1, 0x88, 0xe1, 0xc9, 0x7b, 0xc5, 0x1f, 0x26, 0x01, 0x5c, 0xfb, 0x59, + 0x06, 0x8d, 0xc2, 0x42, 0xed, 0x47, 0xf2, 0x7b, 0x46, 0x4d, 0x7e, 0xa7, 0xfa, 0x77, 0xd0, 0x94, + 0xc4, 0xf7, 0x93, 0x1c, 0x9f, 0x03, 0x8f, 0xe1, 0x70, 0xe6, 0x69, 0xeb, 0xb6, 0x6e, 0x9a, 0xd4, + 0x34, 0x9c, 0xa6, 0x28, 0x1d, 0xf9, 0x99, 0xa7, 0x12, 0x0d, 0x13, 0x19, 0x87, 0x91, 0xd4, 0xac, + 0x66, 0xdb, 0xa4, 0xc1, 0x0b, 0x43, 0x48, 0x32, 0x1f, 0x0d, 0x13, 0x19, 0x07, 0x5f, 0x42, 0x87, + 0xf5, 0x9a, 0x6b, 0x6c, 0xd1, 0x05, 0xaa, 0xd7, 0x4d, 0xa3, 0x45, 0x83, 0xdb, 0xdc, 0x1c, 0x2f, + 0x21, 0x6f, 0x05, 0xe2, 0xc3, 0x73, 0x49, 0x08, 0x24, 0x99, 0x4e, 0xb9, 0x4e, 0x1f, 0xda, 0xc3, + 0xeb, 0xf4, 0x07, 0xd0, 0xb8, 0x0e, 0x27, 0xa3, 0x00, 0xc2, 0xfd, 0x28, 0x5f, 0x9e, 0x62, 0xa1, + 0x77, 0x4e, 0x1a, 0x27, 0x0a, 0x96, 0x72, 0x09, 0x3f, 0xb2, 0xdb, 0xcf, 0xa6, 0x3f, 0xcd, 0xa1, + 0x42, 0x18, 0x7c, 0xb0, 0x85, 0x50, 0x2d, 0xd8, 0xe0, 0xc1, 0xb5, 0xcf, 0x23, 0xfd, 0x7b, 0x4a, + 0x18, 0x24, 0xa2, 0x78, 0x1c, 0x0e, 0x39, 0x44, 0x12, 0x01, 0x11, 0xb9, 0x00, 0x01, 0xc4, 0x76, + 0x07, 0x3d, 0xcb, 0x4d, 0x00, 0xef, 0x42, 0x35, 0xe0, 0x40, 0x22, 0x66, 0xb8, 0x01, 0x87, 0xe2, + 0xd0, 0x67, 0x06, 0x8d, 0x48, 0xfe, 0xe1, 0x57, 0x61, 0x43, 0x62, 0x6c, 0x59, 0x58, 0xf0, 0xbd, + 0x4a, 0x1c, 0xf0, 0xc2, 0xb0, 0xe0, 0xbb, 0x20, 0x11, 0x50, 0x3c, 0x0b, 0x53, 0xf5, 0x6a, 0x35, + 0x4a, 0xeb, 0xb4, 0x2e, 0x0e, 0x6e, 0x07, 0x05, 0x6a, 0xa1, 0x1a, 0x00, 0x48, 0x84, 0xc3, 0x18, + 0xaf, 0xeb, 0x06, 0x7b, 0x09, 0x1e, 0x51, 0x19, 0x2f, 0xf1, 0x51, 0x22, 0xa0, 0xda, 0x3f, 0xb2, + 0x68, 0x42, 0xf1, 0x3f, 0xfc, 0xe5, 0x0c, 0xbb, 0x48, 0x70, 0x6b, 0x1b, 0x7c, 0x38, 0x58, 0xc8, + 0x95, 0x9d, 0xf8, 0x74, 0x69, 0x25, 0xe2, 0xe7, 0x3f, 0xd5, 0x49, 0xf7, 0x12, 0x21, 0x84, 0xc8, + 0x62, 0xf1, 0xeb, 0x50, 0xe0, 0xf2, 0xef, 0xc5, 0xed, 0x36, 0xab, 0x1c, 0xa4, 0x27, 0xc4, 0x73, + 0x3b, 0xd1, 0x85, 0xd0, 0x57, 0x3c, 0x38, 0x29, 0xf3, 0xfb, 0xe8, 0xb0, 0xd0, 0x5d, 0x89, 0x09, + 0x22, 0x5d, 0xa2, 0x67, 0xce, 0xa2, 0xa9, 0xf8, 0x2c, 0xfa, 0x7a, 0xb2, 0xfb, 0x4e, 0x06, 0x15, + 0xd3, 0x14, 0x61, 0xa7, 0xd8, 0x90, 0x51, 0x54, 0x1d, 0x3e, 0x45, 0x3b, 0x3e, 0xd7, 0x45, 0x94, + 0xb7, 0xda, 0xec, 0x16, 0x43, 0xbc, 0xd8, 0x15, 0xca, 0xf7, 0x05, 0xbb, 0xf2, 0x92, 0x18, 0x87, + 0xdc, 0x7b, 0x58, 0x61, 0x1f, 0x00, 0x48, 0x48, 0x8a, 0x35, 0x34, 0xc2, 0xf5, 0xf1, 0xab, 0xcc, + 0x42, 0x19, 0x31, 0x7f, 0xe0, 0xf5, 0x35, 0xa4, 0x62, 0x1f, 0xa2, 0x7d, 0x1f, 0x0a, 0x6b, 0x96, + 0x00, 0x82, 0x7b, 0xf1, 0x47, 0x58, 0x6a, 0x96, 0xd8, 0x0a, 0x1d, 0xa5, 0x6c, 0x2b, 0x4f, 0x49, + 0xc5, 0x65, 0xc4, 0xeb, 0x06, 0x35, 0xeb, 0x55, 0xf9, 0xb9, 0x51, 0x22, 0x5e, 0x92, 0x81, 0x44, + 0xc5, 0x65, 0x37, 0xfa, 0xd7, 0x98, 0xc1, 0xf9, 0xd6, 0x93, 0x6e, 0xf4, 0x9f, 0x61, 0x83, 0xc4, + 0x87, 0xb1, 0x9b, 0x92, 0xe0, 0x62, 0x4d, 0xb4, 0xd8, 0xf1, 0x8d, 0x54, 0x88, 0x6e, 0x4a, 0x88, + 0x0a, 0x26, 0x71, 0x7c, 0x7c, 0x06, 0x4d, 0xb2, 0x5e, 0x3f, 0xcb, 0x73, 0xe5, 0x77, 0xbd, 0x9c, + 0xbf, 0x7d, 0x57, 0x15, 0x08, 0x89, 0x61, 0xf2, 0xf6, 0x9e, 0x8b, 0xd4, 0xbd, 0x66, 0xd9, 0x9b, + 0x15, 0xcb, 0x34, 0x6a, 0x9d, 0x3d, 0xac, 0x3f, 0xd7, 0x94, 0xfa, 0xf3, 0x89, 0x3e, 0xf7, 0x80, + 0xa2, 0x65, 0x5a, 0x25, 0xaa, 0xfd, 0x1d, 0x9c, 0x54, 0xc1, 0x94, 0x0f, 0xa5, 0x14, 0x0d, 0xb3, + 0xa7, 0x96, 0x20, 0x22, 0xec, 0x48, 0x03, 0x76, 0x82, 0x97, 0xee, 0xf4, 0x19, 0x5b, 0xe2, 0x73, + 0x67, 0xf3, 0x5c, 0xb7, 0xad, 0xa6, 0xd8, 0xeb, 0x3b, 0x93, 0x42, 0xa9, 0x1d, 0xcd, 0x73, 0x09, + 0xb8, 0x12, 0xce, 0x5b, 0xfb, 0x43, 0x06, 0x1d, 0x54, 0x30, 0xf7, 0xa3, 0x88, 0xd2, 0xd5, 0x22, + 0xea, 0xd1, 0x9d, 0xcc, 0x2c, 0xa5, 0x9c, 0xfa, 0x6a, 0x36, 0x36, 0x2f, 0x66, 0x01, 0x48, 0xcc, + 0x63, 0x6d, 0xab, 0x5e, 0xdd, 0xcd, 0x2e, 0x2d, 0xbf, 0x2c, 0x8b, 0x98, 0x12, 0x59, 0x02, 0xfe, + 0x22, 0x98, 0x97, 0x75, 0x82, 0x38, 0x6d, 0xbd, 0x46, 0xab, 0xbb, 0xd9, 0x6b, 0x70, 0x98, 0x3d, + 0xb6, 0x5e, 0x8c, 0xb3, 0x26, 0xdd, 0xd2, 0xb4, 0x1f, 0xc7, 0x97, 0x98, 0x39, 0x19, 0x7e, 0x1a, + 0xe5, 0x79, 0x5b, 0x6e, 0xcd, 0x32, 0x45, 0x24, 0x7b, 0x90, 0xad, 0x56, 0x45, 0x8c, 0x41, 0x14, + 0xfd, 0x58, 0xcf, 0x13, 0x4c, 0x80, 0x48, 0x42, 0x36, 0x78, 0x19, 0x0d, 0xb5, 0x07, 0xbf, 0xe7, + 0xe2, 0x17, 0x1b, 0xfc, 0x72, 0x8b, 0x73, 0xd1, 0xfe, 0x1d, 0x57, 0x9b, 0x97, 0xc6, 0xce, 0xee, + 0xaf, 0x60, 0x98, 0x81, 0x53, 0x57, 0xd1, 0x46, 0xa3, 0xe2, 0xba, 0x67, 0xc0, 0xbc, 0x9b, 0x16, + 0x49, 0xa2, 0x33, 0x4d, 0x30, 0x18, 0x08, 0xe2, 0x1b, 0x93, 0x2b, 0x54, 0xf3, 0x6c, 0xc3, 0xed, + 0xec, 0x79, 0x50, 0x5d, 0x57, 0x82, 0xea, 0x42, 0x9f, 0x13, 0xec, 0xd2, 0x34, 0x35, 0xb0, 0xfe, + 0x39, 0x83, 0x0e, 0x77, 0x61, 0xef, 0x47, 0xd0, 0xa1, 0x6a, 0xd0, 0x79, 0x62, 0xa7, 0x33, 0x4c, + 0x09, 0x3c, 0xd7, 0x51, 0xc2, 0xfc, 0xb8, 0xeb, 0x9e, 0x42, 0xa8, 0x6d, 0x1b, 0x5b, 0x50, 0x6c, + 0x36, 0x44, 0xeb, 0x64, 0x3e, 0x5a, 0x93, 0x4a, 0x08, 0x21, 0x12, 0x16, 0xfe, 0x3c, 0x6b, 0x6b, + 0x5c, 0xd7, 0x3d, 0xd3, 0x9d, 0xab, 0xd7, 0xe7, 0xf5, 0xb6, 0xbe, 0x66, 0x98, 0x50, 0xf3, 0x8b, + 0x37, 0xf6, 0x42, 0x79, 0xd1, 0x6f, 0x69, 0x4c, 0xc2, 0x80, 0x1d, 0xfc, 0xf1, 0xde, 0x77, 0x10, + 0x01, 0x72, 0x87, 0xa4, 0x08, 0xc1, 0x5f, 0x82, 0x2c, 0x68, 0xfb, 0xd5, 0x59, 0x7d, 0xc1, 0xb6, + 0xda, 0x8a, 0x06, 0x7e, 0xe9, 0x74, 0x0e, 0x34, 0x28, 0x92, 0x14, 0x9c, 0x7e, 0x74, 0x48, 0x15, + 0x84, 0x5d, 0x74, 0x08, 0xce, 0xb9, 0xd6, 0x35, 0xaa, 0x5a, 0x60, 0x88, 0xcb, 0x2f, 0xb3, 0x4e, + 0x91, 0xb9, 0x6e, 0x70, 0x3f, 0xa2, 0x93, 0xd8, 0xc3, 0x41, 0x63, 0x74, 0xcb, 0x32, 0x3d, 0x88, + 0xa6, 0x50, 0x06, 0x31, 0x49, 0x2c, 0xe2, 0x8e, 0x5e, 0xf1, 0x87, 0x3e, 0x62, 0xe7, 0x87, 0x2a, + 0xbf, 0x10, 0x0a, 0xb0, 0xd8, 0x23, 0x01, 0xbb, 0xb5, 0x13, 0x7b, 0x9d, 0x9f, 0x36, 0xf2, 0x51, + 0x70, 0x39, 0x1f, 0x81, 0x88, 0x8c, 0x87, 0x9b, 0xa8, 0xb0, 0x21, 0x1e, 0x8c, 0x9c, 0xe2, 0xe8, + 0x40, 0x09, 0x51, 0x79, 0x70, 0x8a, 0x8e, 0x43, 0xc1, 0xb0, 0x43, 0x22, 0x09, 0xec, 0x5a, 0x85, + 0x7f, 0x5c, 0x58, 0xe0, 0x1d, 0x50, 0xf9, 0x28, 0x04, 0x9d, 0xf7, 0x87, 0x49, 0x00, 0x0f, 0x50, + 0x2f, 0x54, 0xe6, 0x8b, 0x85, 0x6e, 0x54, 0x18, 0x26, 0x01, 0x1c, 0xb7, 0xd1, 0xa8, 0x43, 0x97, + 0x8d, 0x96, 0xb7, 0x5d, 0x44, 0x7c, 0xeb, 0x2e, 0xf6, 0xfb, 0x2e, 0xbc, 0xc8, 0xa9, 0x63, 0xcd, + 0x28, 0x91, 0x44, 0x01, 0x27, 0x81, 0x18, 0xbc, 0x8d, 0x0a, 0xb6, 0xd7, 0x9a, 0x73, 0x2e, 0x3b, + 0xd4, 0x2e, 0x8e, 0x71, 0x99, 0xfd, 0x46, 0x65, 0x12, 0xd0, 0xc7, 0xa5, 0x86, 0x16, 0x0c, 0x31, + 0x48, 0x24, 0x0c, 0x7f, 0x33, 0x83, 0xb0, 0xe3, 0xb5, 0xe1, 0xf0, 0xca, 0x4e, 0x2c, 0xba, 0xc9, + 0xfb, 0x61, 0x9c, 0xe2, 0x38, 0xd7, 0xa1, 0xd2, 0xf7, 0x7b, 0x78, 0x9c, 0x51, 0x5c, 0x99, 0xf0, + 0x7e, 0xad, 0x1b, 0x95, 0x24, 0xe8, 0xc1, 0x96, 0x62, 0xdd, 0xe1, 0xff, 0x2f, 0x4e, 0x0c, 0xb4, + 0x14, 0xc9, 0x7d, 0x41, 0xd1, 0x52, 0x08, 0x38, 0x09, 0xc4, 0xb0, 0xde, 0x6b, 0x9b, 0xea, 0xf5, + 0x4b, 0x2d, 0xb3, 0x43, 0x2c, 0xcb, 0x5d, 0x82, 0xd8, 0xe5, 0x74, 0x1c, 0x88, 0x86, 0xc5, 0x49, + 0xee, 0x36, 0x61, 0xef, 0x35, 0x49, 0xc4, 0x22, 0x29, 0xd4, 0xbc, 0xf7, 0x5a, 0x3c, 0xe3, 0xee, + 0xed, 0x6f, 0x2c, 0x76, 0xd6, 0x7b, 0x1d, 0xa9, 0xb8, 0x67, 0xbd, 0xd7, 0x92, 0x88, 0x1b, 0xf7, + 0x5e, 0x47, 0xc8, 0xff, 0x03, 0xbd, 0xd7, 0x91, 0xb2, 0x29, 0xf9, 0xf4, 0x3f, 0xca, 0x8c, 0xfe, + 0x0f, 0x1b, 0x7c, 0xd9, 0x83, 0xce, 0x54, 0xdc, 0x01, 0x94, 0xde, 0xcf, 0xcc, 0x0d, 0x7b, 0x3f, + 0x2b, 0x68, 0x7a, 0xdd, 0x33, 0xcd, 0x0e, 0x9f, 0x8d, 0xd4, 0x4b, 0xe1, 0x5f, 0x13, 0xdf, 0x2e, + 0x28, 0xa7, 0x97, 0x12, 0x70, 0x48, 0x22, 0x65, 0x4a, 0x1f, 0x6b, 0x6e, 0xa0, 0x3e, 0xd6, 0x47, + 0xd0, 0x04, 0x8b, 0x00, 0x9d, 0x58, 0x8b, 0x47, 0x78, 0x39, 0x42, 0x64, 0x20, 0x51, 0x71, 0xb5, + 0xdb, 0xd1, 0x8c, 0xf8, 0x3f, 0xe3, 0x35, 0x6f, 0xb5, 0x5c, 0xd6, 0x47, 0x49, 0xed, 0x05, 0xaf, + 0xd9, 0xec, 0x68, 0x67, 0xc1, 0x79, 0x94, 0x8e, 0x5d, 0xdf, 0x70, 0x7e, 0x13, 0xb1, 0x68, 0xa5, + 0x90, 0x0c, 0xe7, 0x8f, 0x93, 0x10, 0x43, 0x7b, 0x3f, 0x83, 0x8e, 0xa6, 0xf4, 0x70, 0xe2, 0xab, + 0x68, 0xb2, 0xa9, 0x6f, 0x4b, 0x4d, 0xaa, 0x62, 0x7b, 0xf5, 0x7b, 0xf0, 0xe1, 0xd7, 0x2b, 0x2b, + 0x0a, 0x27, 0x12, 0xe3, 0xcc, 0x63, 0x9f, 0xbe, 0x5d, 0xf5, 0xec, 0x06, 0x1d, 0xf0, 0x78, 0xc5, + 0x5d, 0x77, 0x45, 0xf0, 0x20, 0x21, 0x37, 0xd6, 0x09, 0x5a, 0x4c, 0x4b, 0x84, 0x50, 0xd2, 0xc8, + 0xbd, 0xa0, 0x77, 0xc5, 0x7a, 0x41, 0x0f, 0x76, 0xd1, 0xed, 0x53, 0x27, 0xe8, 0x3b, 0x19, 0x74, + 0x24, 0xb9, 0x60, 0xc0, 0x9f, 0x52, 0x34, 0x3e, 0x1e, 0xd3, 0xf8, 0x40, 0x8c, 0x4a, 0xe8, 0xbb, + 0x81, 0x26, 0x45, 0x59, 0x21, 0xd8, 0xdc, 0xc4, 0x0f, 0x16, 0xb7, 0xc2, 0x9a, 0x25, 0x48, 0x90, + 0x7c, 0x1d, 0xd5, 0x31, 0x12, 0xe3, 0xab, 0x7d, 0x3b, 0x8b, 0x86, 0x79, 0x83, 0xd4, 0x1e, 0x66, + 0xb3, 0xe7, 0x94, 0x6c, 0xd6, 0xef, 0x13, 0x2a, 0xd7, 0x2e, 0x35, 0x91, 0xad, 0xc5, 0x12, 0xd9, + 0x99, 0x81, 0xb8, 0xf7, 0xce, 0x61, 0x0f, 0xa3, 0x42, 0xa8, 0x44, 0x7f, 0x71, 0x8e, 0x55, 0x0c, + 0x63, 0x92, 0x88, 0x3e, 0xa3, 0xe4, 0x96, 0x92, 0x2d, 0x06, 0xf9, 0x65, 0xad, 0x24, 0xbb, 0x14, + 0xa4, 0x09, 0xff, 0x9a, 0x3f, 0x6a, 0x71, 0xec, 0xce, 0x1e, 0x10, 0xa4, 0xfc, 0x9f, 0x27, 0x87, + 0xd7, 0x1a, 0x39, 0xee, 0xbd, 0x47, 0x04, 0xcd, 0xe4, 0xaa, 0x02, 0x25, 0x31, 0xec, 0x19, 0x88, + 0x9f, 0x8a, 0xb0, 0xbe, 0x6e, 0xe3, 0x7f, 0x91, 0x41, 0xd3, 0x49, 0x4d, 0x99, 0xac, 0xf3, 0x66, + 0xd3, 0x10, 0x5d, 0x24, 0x52, 0xe7, 0xcd, 0x53, 0x30, 0x46, 0x38, 0x24, 0xfc, 0xfd, 0x53, 0x36, + 0xf5, 0xf7, 0x4f, 0x70, 0xe4, 0x05, 0x53, 0x05, 0xf7, 0xd1, 0x39, 0xb5, 0x7f, 0x21, 0xfa, 0x31, + 0x38, 0x91, 0xb0, 0x78, 0xaf, 0x55, 0xa4, 0x8f, 0xb8, 0xc4, 0x8e, 0x9a, 0xa0, 0x24, 0x55, 0x65, + 0x3c, 0xed, 0x97, 0x19, 0x74, 0xd7, 0x0d, 0x8b, 0x69, 0x5c, 0x56, 0xc2, 0x43, 0x29, 0x16, 0x1e, + 0x8e, 0xa5, 0x33, 0xd8, 0xc7, 0x3e, 0xf7, 0x37, 0xb2, 0x08, 0xaf, 0x6e, 0x18, 0x76, 0xbd, 0xa2, + 0xdb, 0x70, 0x38, 0x15, 0x13, 0xdc, 0xc3, 0x80, 0x01, 0x16, 0xaf, 0x53, 0xa7, 0x66, 0x1b, 0xdc, + 0x48, 0x62, 0x39, 0x43, 0x8b, 0x2f, 0x44, 0x20, 0x22, 0xe3, 0x41, 0x51, 0x9b, 0x17, 0xb5, 0x62, + 0xd0, 0xac, 0xd3, 0x6f, 0xf1, 0x17, 0x79, 0x40, 0xb4, 0x3f, 0xc4, 0x00, 0xec, 0xcb, 0x80, 0xb9, + 0xf6, 0x26, 0x84, 0xfb, 0x6e, 0x83, 0x2c, 0xf8, 0xad, 0x28, 0x7b, 0x65, 0x94, 0xdb, 0xd1, 0x10, + 0xe7, 0xca, 0xac, 0x31, 0xee, 0x5f, 0x4e, 0x32, 0x89, 0x84, 0x8f, 0x6a, 0x1f, 0x66, 0xd0, 0x4c, + 0xb2, 0x4a, 0xfb, 0x51, 0x73, 0x5f, 0x55, 0x6b, 0xee, 0x7e, 0x0f, 0x78, 0xc9, 0x8a, 0xa7, 0xd4, + 0xdf, 0xef, 0x27, 0x1a, 0x7f, 0x3f, 0x66, 0xb9, 0xae, 0xce, 0x72, 0x6e, 0xc7, 0xb3, 0x4c, 0x9e, + 0x61, 0xf9, 0xbe, 0xeb, 0x7f, 0x3d, 0x76, 0xcb, 0xbb, 0xf0, 0xf7, 0x27, 0xf8, 0x7b, 0xed, 0x83, + 0x63, 0x99, 0xeb, 0xf0, 0xf7, 0x2e, 0xfc, 0xfd, 0x05, 0xfe, 0xde, 0xfc, 0xdb, 0xb1, 0x5b, 0x9e, + 0x1b, 0x15, 0x3c, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x58, 0xd8, 0xcd, 0xc3, 0x5b, 0x44, 0x00, + 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.proto new file mode 100644 index 0000000000..d0c891c8db --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/generated.proto @@ -0,0 +1,1013 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.extensions.v1beta1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// An APIVersion represents a single concrete version of an object model. +message APIVersion { + // Name of this version (e.g. 'v1'). + optional string name = 1; +} + +message CPUTargetUtilization { + // fraction of the requested CPU that should be utilized/used, + // e.g. 70 means that 70% of the requested CPU should be in use. + optional int32 targetPercentage = 1; +} + +message CustomMetricCurrentStatus { + // Custom Metric name. + optional string name = 1; + + // Custom Metric value (average). + optional k8s.io.kubernetes.pkg.api.resource.Quantity value = 2; +} + +message CustomMetricCurrentStatusList { + repeated CustomMetricCurrentStatus items = 1; +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +message CustomMetricTarget { + // Custom Metric name. + optional string name = 1; + + // Custom Metric value (average). + optional k8s.io.kubernetes.pkg.api.resource.Quantity value = 2; +} + +message CustomMetricTargetList { + repeated CustomMetricTarget items = 1; +} + +// DaemonSet represents the configuration of a daemon set. +message DaemonSet { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec defines the desired behavior of this daemon set. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional DaemonSetSpec spec = 2; + + // Status is the current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional DaemonSetStatus status = 3; +} + +// DaemonSetList is a collection of daemon sets. +message DaemonSetList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of daemon sets. + repeated DaemonSet items = 2; +} + +// DaemonSetSpec is the specification of a daemon set. +message DaemonSetSpec { + // Selector is a label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional LabelSelector selector = 1; + + // Template is the object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 2; +} + +// DaemonSetStatus represents the current status of a daemon set. +message DaemonSetStatus { + // CurrentNumberScheduled is the number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + optional int32 currentNumberScheduled = 1; + + // NumberMisscheduled is the number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + optional int32 numberMisscheduled = 2; + + // DesiredNumberScheduled is the total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + optional int32 desiredNumberScheduled = 3; +} + +// Deployment enables declarative updates for Pods and ReplicaSets. +message Deployment { + // Standard object metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the Deployment. + optional DeploymentSpec spec = 2; + + // Most recently observed status of the Deployment. + optional DeploymentStatus status = 3; +} + +// DeploymentList is a list of Deployments. +message DeploymentList { + // Standard list metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Deployments. + repeated Deployment items = 2; +} + +// DeploymentRollback stores the information required to rollback a deployment. +message DeploymentRollback { + // Required: This must match the Name of a deployment. + optional string name = 1; + + // The annotations to be updated to a deployment + map<string, string> updatedAnnotations = 2; + + // The config of this deployment rollback. + optional RollbackConfig rollbackTo = 3; +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +message DeploymentSpec { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + optional int32 replicas = 1; + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + optional LabelSelector selector = 2; + + // Template describes the pods that will be created. + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 3; + + // The deployment strategy to use to replace existing pods with new ones. + optional DeploymentStrategy strategy = 4; + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + optional int32 minReadySeconds = 5; + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + optional int32 revisionHistoryLimit = 6; + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + optional bool paused = 7; + + // The config this deployment is rolling back to. Will be cleared after rollback is done. + optional RollbackConfig rollbackTo = 8; +} + +// DeploymentStatus is the most recently observed status of the Deployment. +message DeploymentStatus { + // The generation observed by the deployment controller. + optional int64 observedGeneration = 1; + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + optional int32 replicas = 2; + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + optional int32 updatedReplicas = 3; + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + optional int32 availableReplicas = 4; + + // Total number of unavailable pods targeted by this deployment. + optional int32 unavailableReplicas = 5; +} + +// DeploymentStrategy describes how to replace existing pods with new ones. +message DeploymentStrategy { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + optional string type = 1; + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + // --- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + optional RollingUpdateDeployment rollingUpdate = 2; +} + +// ExportOptions is the query options to the standard REST get call. +message ExportOptions { + // Should this value be exported. Export strips fields that a user can not specify. + optional bool export = 1; + + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + optional bool exact = 2; +} + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +message FSGroupStrategyOptions { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + optional string rule = 1; + + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + repeated IDRange ranges = 2; +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +message HTTPIngressPath { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + optional string path = 1; + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + optional IngressBackend backend = 2; +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http://<host>/<path>?<searchpart> -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +message HTTPIngressRuleValue { + // A collection of paths that map requests to backends. + repeated HTTPIngressPath paths = 1; +} + +// configuration of a horizontal pod autoscaler. +message HorizontalPodAutoscaler { + // Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + optional HorizontalPodAutoscalerSpec spec = 2; + + // current information about the autoscaler. + optional HorizontalPodAutoscalerStatus status = 3; +} + +// list of horizontal pod autoscaler objects. +message HorizontalPodAutoscalerList { + // Standard list metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // list of horizontal pod autoscaler objects. + repeated HorizontalPodAutoscaler items = 2; +} + +// specification of a horizontal pod autoscaler. +message HorizontalPodAutoscalerSpec { + // reference to Scale subresource; horizontal pod autoscaler will learn the current resource consumption from its status, + // and will set the desired number of pods by modifying its spec. + optional SubresourceReference scaleRef = 1; + + // lower limit for the number of pods that can be set by the autoscaler, default 1. + optional int32 minReplicas = 2; + + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + optional int32 maxReplicas = 3; + + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified it defaults to the target CPU utilization at 80% of the requested resources. + optional CPUTargetUtilization cpuUtilization = 4; +} + +// current status of a horizontal pod autoscaler +message HorizontalPodAutoscalerStatus { + // most recent generation observed by this autoscaler. + optional int64 observedGeneration = 1; + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastScaleTime = 2; + + // current number of replicas of pods managed by this autoscaler. + optional int32 currentReplicas = 3; + + // desired number of replicas of pods managed by this autoscaler. + optional int32 desiredReplicas = 4; + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + optional int32 currentCPUUtilizationPercentage = 5; +} + +// Host Port Range defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +message HostPortRange { + // min is the start of the range, inclusive. + optional int32 min = 1; + + // max is the end of the range, inclusive. + optional int32 max = 2; +} + +// ID Range provides a min/max of an allowed range of IDs. +message IDRange { + // Min is the start of the range, inclusive. + optional int64 min = 1; + + // Max is the end of the range, inclusive. + optional int64 max = 2; +} + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +message Ingress { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec is the desired state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional IngressSpec spec = 2; + + // Status is the current state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional IngressStatus status = 3; +} + +// IngressBackend describes all endpoints for a given service and port. +message IngressBackend { + // Specifies the name of the referenced service. + optional string serviceName = 1; + + // Specifies the port of the referenced service. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString servicePort = 2; +} + +// IngressList is a collection of Ingress. +message IngressList { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Ingress. + repeated Ingress items = 2; +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +message IngressRule { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + optional string host = 1; + + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + optional IngressRuleValue ingressRuleValue = 2; +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +message IngressRuleValue { + optional HTTPIngressRuleValue http = 1; +} + +// IngressSpec describes the Ingress the user wishes to exist. +message IngressSpec { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + optional IngressBackend backend = 1; + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + repeated IngressTLS tls = 2; + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + repeated IngressRule rules = 3; +} + +// IngressStatus describe the current state of the Ingress. +message IngressStatus { + // LoadBalancer contains the current status of the load-balancer. + optional k8s.io.kubernetes.pkg.api.v1.LoadBalancerStatus loadBalancer = 1; +} + +// IngressTLS describes the transport layer security associated with an Ingress. +message IngressTLS { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + repeated string hosts = 1; + + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + optional string secretName = 2; +} + +// Job represents the configuration of a single job. +message Job { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobSpec spec = 2; + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional JobStatus status = 3; +} + +// JobCondition describes current state of a job. +message JobCondition { + // Type of job condition, Complete or Failed. + optional string type = 1; + + // Status of the condition, one of True, False, Unknown. + optional string status = 2; + + // Last time the condition was checked. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastProbeTime = 3; + + // Last time the condition transit from one status to another. + optional k8s.io.kubernetes.pkg.api.unversioned.Time lastTransitionTime = 4; + + // (brief) reason for the condition's last transition. + optional string reason = 5; + + // Human readable message indicating details about last transition. + optional string message = 6; +} + +// JobList is a collection of jobs. +message JobList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of Job. + repeated Job items = 2; +} + +// JobSpec describes how the job execution will look like. +message JobSpec { + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 parallelism = 1; + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional int32 completions = 2; + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + optional int64 activeDeadlineSeconds = 3; + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional LabelSelector selector = 4; + + // AutoSelector controls generation of pod labels and pod selectors. + // It was not present in the original extensions/v1beta1 Job definition, but exists + // to allow conversion from batch/v1 Jobs, where it corresponds to, but has the opposite + // meaning as, ManualSelector. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + optional bool autoSelector = 5; + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 6; +} + +// JobStatus represents the current state of a Job. +message JobStatus { + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + repeated JobCondition conditions = 1; + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time startTime = 2; + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + optional k8s.io.kubernetes.pkg.api.unversioned.Time completionTime = 3; + + // Active is the number of actively running pods. + optional int32 active = 4; + + // Succeeded is the number of pods which reached Phase Succeeded. + optional int32 succeeded = 5; + + // Failed is the number of pods which reached Phase Failed. + optional int32 failed = 6; +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +message LabelSelector { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + map<string, string> matchLabels = 1; + + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + repeated LabelSelectorRequirement matchExpressions = 2; +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +message LabelSelectorRequirement { + // key is the label key that the selector applies to. + optional string key = 1; + + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + optional string operator = 2; + + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + repeated string values = 3; +} + +// ListOptions is the query options to a standard REST list call. +message ListOptions { + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + optional string labelSelector = 1; + + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + optional string fieldSelector = 2; + + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + optional bool watch = 3; + + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + optional string resourceVersion = 4; + + // Timeout for the list/watch call. + optional int64 timeoutSeconds = 5; +} + +message NetworkPolicy { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior for this NetworkPolicy. + optional NetworkPolicySpec spec = 2; +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +message NetworkPolicyIngressRule { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is not provided, this rule matches all ports (traffic not restricted by port). + // If this field is empty, this rule matches no ports (no traffic matches). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + repeated NetworkPolicyPort ports = 1; + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is not provided, this rule matches all sources (traffic not restricted by source). + // If this field is empty, this rule matches no sources (no traffic matches). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + repeated NetworkPolicyPeer from = 2; +} + +// Network Policy List is a list of NetworkPolicy objects. +message NetworkPolicyList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated NetworkPolicy items = 2; +} + +message NetworkPolicyPeer { + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If not provided, this selector selects no pods. + // If present but empty, this selector selects all pods in this namespace. + optional LabelSelector podSelector = 1; + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If omitted, this selector selects no namespaces. + // If present but empty, this selector selects all namespaces. + optional LabelSelector namespaceSelector = 2; +} + +message NetworkPolicyPort { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + optional string protocol = 1; + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString port = 2; +} + +message NetworkPolicySpec { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + optional LabelSelector podSelector = 1; + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not affect ingress isolation. + // If this field is present and contains at least one rule, this policy allows any traffic + // which matches at least one of the ingress rules in this list. + repeated NetworkPolicyIngressRule ingress = 2; +} + +// Pod Security Policy governs the ability to make requests that affect the Security Context +// that will be applied to a pod and container. +message PodSecurityPolicy { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // spec defines the policy enforced. + optional PodSecurityPolicySpec spec = 2; +} + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +message PodSecurityPolicyList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of schema objects. + repeated PodSecurityPolicy items = 2; +} + +// Pod Security Policy Spec defines the policy enforced. +message PodSecurityPolicySpec { + // privileged determines if a pod can request to be run as privileged. + optional bool privileged = 1; + + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capabiility in both + // DefaultAddCapabilities and RequiredDropCapabilities. + repeated string defaultAddCapabilities = 2; + + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + repeated string requiredDropCapabilities = 3; + + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + repeated string allowedCapabilities = 4; + + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + repeated string volumes = 5; + + // hostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + optional bool hostNetwork = 6; + + // hostPorts determines which host port ranges are allowed to be exposed. + repeated HostPortRange hostPorts = 7; + + // hostPID determines if the policy allows the use of HostPID in the pod spec. + optional bool hostPID = 8; + + // hostIPC determines if the policy allows the use of HostIPC in the pod spec. + optional bool hostIPC = 9; + + // seLinux is the strategy that will dictate the allowable labels that may be set. + optional SELinuxStrategyOptions seLinux = 10; + + // runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + optional RunAsUserStrategyOptions runAsUser = 11; + + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + optional SupplementalGroupsStrategyOptions supplementalGroups = 12; + + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + optional FSGroupStrategyOptions fsGroup = 13; + + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + optional bool readOnlyRootFilesystem = 14; +} + +// ReplicaSet represents the configuration of a ReplicaSet. +message ReplicaSet { + // If the Labels of a ReplicaSet are empty, they are defaulted to + // be the same as the Pod(s) that the ReplicaSet manages. + // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ReplicaSetSpec spec = 2; + + // Status is the most recently observed status of the ReplicaSet. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + optional ReplicaSetStatus status = 3; +} + +// ReplicaSetList is a collection of ReplicaSets. +message ReplicaSetList { + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // List of ReplicaSets. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md + repeated ReplicaSet items = 2; +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +message ReplicaSetSpec { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + optional int32 replicas = 1; + + // Selector is a label query over pods that should match the replica count. + // If the selector is empty, it is defaulted to the labels present on the pod template. + // Label keys and values that must match in order to be controlled by this replica set. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional LabelSelector selector = 2; + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + optional k8s.io.kubernetes.pkg.api.v1.PodTemplateSpec template = 3; +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +message ReplicaSetStatus { + // Replicas is the most recently oberved number of replicas. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + optional int32 replicas = 1; + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + optional int32 fullyLabeledReplicas = 2; + + // The number of ready replicas for this replica set. + optional int32 readyReplicas = 4; + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + optional int64 observedGeneration = 3; +} + +// Dummy definition +message ReplicationControllerDummy { +} + +message RollbackConfig { + // The revision to rollback to. If set to 0, rollbck to the last revision. + optional int64 revision = 1; +} + +// Spec to control the desired behavior of rolling update. +message RollingUpdateDeployment { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding up. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString maxUnavailable = 1; + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString maxSurge = 2; +} + +// Run A sUser Strategy Options defines the strategy type and any options used to create the strategy. +message RunAsUserStrategyOptions { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + optional string rule = 1; + + // Ranges are the allowed ranges of uids that may be used. + repeated IDRange ranges = 2; +} + +// SELinux Strategy Options defines the strategy type and any options used to create the strategy. +message SELinuxStrategyOptions { + // type is the strategy that will dictate the allowable labels that may be set. + optional string rule = 1; + + // seLinuxOptions required to run as; required for MustRunAs + // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context + optional k8s.io.kubernetes.pkg.api.v1.SELinuxOptions seLinuxOptions = 2; +} + +// represents a scaling request for a resource. +message Scale { + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + optional ScaleSpec spec = 2; + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + optional ScaleStatus status = 3; +} + +// describes the attributes of a scale subresource +message ScaleSpec { + // desired number of instances for the scaled object. + optional int32 replicas = 1; +} + +// represents the current status of a scale subresource. +message ScaleStatus { + // actual number of observed instances of the scaled object. + optional int32 replicas = 1; + + // label query over pods that should match the replicas count. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + map<string, string> selector = 2; + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + optional string targetSelector = 3; +} + +// SubresourceReference contains enough information to let you inspect or modify the referred subresource. +message SubresourceReference { + // Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + optional string kind = 1; + + // Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + optional string name = 2; + + // API version of the referent + optional string apiVersion = 3; + + // Subresource name of the referent + optional string subresource = 4; +} + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +message SupplementalGroupsStrategyOptions { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + optional string rule = 1; + + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + repeated IDRange ranges = 2; +} + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +message ThirdPartyResource { + // Standard object metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Description is the description of this object. + optional string description = 2; + + // Versions are versions for this third party object + repeated APIVersion versions = 3; +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +message ThirdPartyResourceData { + // Standard object metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Data is the raw JSON data for this data. + optional bytes data = 2; +} + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +message ThirdPartyResourceDataList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of ThirdpartyResourceData. + repeated ThirdPartyResourceData items = 2; +} + +// ThirdPartyResourceList is a list of ThirdPartyResources. +message ThirdPartyResourceList { + // Standard list metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of ThirdPartyResources. + repeated ThirdPartyResource items = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/register.go new file mode 100644 index 0000000000..fb6bf0c5b6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/register.go @@ -0,0 +1,69 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "extensions" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Deployment{}, + &DeploymentList{}, + &DeploymentRollback{}, + &HorizontalPodAutoscaler{}, + &HorizontalPodAutoscalerList{}, + &Job{}, + &JobList{}, + &ReplicationControllerDummy{}, + &Scale{}, + &ThirdPartyResource{}, + &ThirdPartyResourceList{}, + &DaemonSetList{}, + &DaemonSet{}, + &ThirdPartyResourceData{}, + &ThirdPartyResourceDataList{}, + &Ingress{}, + &IngressList{}, + &ListOptions{}, + &v1.DeleteOptions{}, + &ReplicaSet{}, + &ReplicaSetList{}, + &PodSecurityPolicy{}, + &PodSecurityPolicyList{}, + &NetworkPolicy{}, + &NetworkPolicyList{}, + ) + // Add the watch version that applies + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.generated.go new file mode 100644 index 0000000000..05642626ed --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.generated.go @@ -0,0 +1,23937 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg4_resource "k8s.io/client-go/1.5/pkg/api/resource" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + pkg5_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg4_resource.Quantity + var v1 pkg1_unversioned.TypeMeta + var v2 pkg2_v1.ObjectMeta + var v3 pkg3_types.UID + var v4 pkg5_intstr.IntOrString + var v5 time.Time + _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5 + } +} + +func (x *ScaleSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [1]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Replicas != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(1) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym6 := z.DecBinary() + _ = yym6 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct7 := r.ContainerType() + if yyct7 == codecSelferValueTypeMap1234 { + yyl7 := r.ReadMapStart() + if yyl7 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl7, d) + } + } else if yyct7 == codecSelferValueTypeArray1234 { + yyl7 := r.ReadArrayStart() + if yyl7 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl7, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys8Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys8Slc + var yyhl8 bool = l >= 0 + for yyj8 := 0; ; yyj8++ { + if yyhl8 { + if yyj8 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys8Slc = r.DecodeBytes(yys8Slc, true, true) + yys8 := string(yys8Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys8 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys8) + } // end switch yys8 + } // end for yyj8 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj10 int + var yyb10 bool + var yyhl10 bool = l >= 0 + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + for { + yyj10++ + if yyhl10 { + yyb10 = yyj10 > l + } else { + yyb10 = r.CheckBreak() + } + if yyb10 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj10-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ScaleStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep13 := !z.EncBinary() + yy2arr13 := z.EncBasicHandle().StructToArray + var yyq13 [3]bool + _, _, _ = yysep13, yyq13, yy2arr13 + const yyr13 bool = false + yyq13[1] = len(x.Selector) != 0 + yyq13[2] = x.TargetSelector != "" + var yynn13 int + if yyr13 || yy2arr13 { + r.EncodeArrayStart(3) + } else { + yynn13 = 1 + for _, b := range yyq13 { + if b { + yynn13++ + } + } + r.EncodeMapStart(yynn13) + yynn13 = 0 + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq13[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq13[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + z.F.EncMapStringStringV(x.Selector, false, e) + } + } + } + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq13[2] { + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq13[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.TargetSelector)) + } + } + } + if yyr13 || yy2arr13 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ScaleStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym23 := z.DecBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct24 := r.ContainerType() + if yyct24 == codecSelferValueTypeMap1234 { + yyl24 := r.ReadMapStart() + if yyl24 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl24, d) + } + } else if yyct24 == codecSelferValueTypeArray1234 { + yyl24 := r.ReadArrayStart() + if yyl24 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl24, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ScaleStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys25Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys25Slc + var yyhl25 bool = l >= 0 + for yyj25 := 0; ; yyj25++ { + if yyhl25 { + if yyj25 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys25Slc = r.DecodeBytes(yys25Slc, true, true) + yys25 := string(yys25Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys25 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "selector": + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv27 := &x.Selector + yym28 := z.DecBinary() + _ = yym28 + if false { + } else { + z.F.DecMapStringStringX(yyv27, false, d) + } + } + case "targetSelector": + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + x.TargetSelector = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys25) + } // end switch yys25 + } // end for yyj25 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ScaleStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj30 int + var yyb30 bool + var yyhl30 bool = l >= 0 + yyj30++ + if yyhl30 { + yyb30 = yyj30 > l + } else { + yyb30 = r.CheckBreak() + } + if yyb30 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj30++ + if yyhl30 { + yyb30 = yyj30 > l + } else { + yyb30 = r.CheckBreak() + } + if yyb30 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Selector = nil + } else { + yyv32 := &x.Selector + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + z.F.DecMapStringStringX(yyv32, false, d) + } + } + yyj30++ + if yyhl30 { + yyb30 = yyj30 > l + } else { + yyb30 = r.CheckBreak() + } + if yyb30 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetSelector = "" + } else { + x.TargetSelector = string(r.DecodeString()) + } + for { + yyj30++ + if yyhl30 { + yyb30 = yyj30 > l + } else { + yyb30 = r.CheckBreak() + } + if yyb30 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj30-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Scale) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym35 := z.EncBinary() + _ = yym35 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep36 := !z.EncBinary() + yy2arr36 := z.EncBasicHandle().StructToArray + var yyq36 [5]bool + _, _, _ = yysep36, yyq36, yy2arr36 + const yyr36 bool = false + yyq36[0] = x.Kind != "" + yyq36[1] = x.APIVersion != "" + yyq36[2] = true + yyq36[3] = true + yyq36[4] = true + var yynn36 int + if yyr36 || yy2arr36 { + r.EncodeArrayStart(5) + } else { + yynn36 = 0 + for _, b := range yyq36 { + if b { + yynn36++ + } + } + r.EncodeMapStart(yynn36) + yynn36 = 0 + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq36[0] { + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq36[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym39 := z.EncBinary() + _ = yym39 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq36[1] { + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq36[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym42 := z.EncBinary() + _ = yym42 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq36[2] { + yy44 := &x.ObjectMeta + yy44.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq36[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy45 := &x.ObjectMeta + yy45.CodecEncodeSelf(e) + } + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq36[3] { + yy47 := &x.Spec + yy47.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq36[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy48 := &x.Spec + yy48.CodecEncodeSelf(e) + } + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq36[4] { + yy50 := &x.Status + yy50.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq36[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy51 := &x.Status + yy51.CodecEncodeSelf(e) + } + } + if yyr36 || yy2arr36 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Scale) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym52 := z.DecBinary() + _ = yym52 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct53 := r.ContainerType() + if yyct53 == codecSelferValueTypeMap1234 { + yyl53 := r.ReadMapStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl53, d) + } + } else if yyct53 == codecSelferValueTypeArray1234 { + yyl53 := r.ReadArrayStart() + if yyl53 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl53, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Scale) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys54Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys54Slc + var yyhl54 bool = l >= 0 + for yyj54 := 0; ; yyj54++ { + if yyhl54 { + if yyj54 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys54Slc = r.DecodeBytes(yys54Slc, true, true) + yys54 := string(yys54Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys54 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv57 := &x.ObjectMeta + yyv57.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv58 := &x.Spec + yyv58.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv59 := &x.Status + yyv59.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys54) + } // end switch yys54 + } // end for yyj54 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Scale) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj60 int + var yyb60 bool + var yyhl60 bool = l >= 0 + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv63 := &x.ObjectMeta + yyv63.CodecDecodeSelf(d) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ScaleSpec{} + } else { + yyv64 := &x.Spec + yyv64.CodecDecodeSelf(d) + } + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ScaleStatus{} + } else { + yyv65 := &x.Status + yyv65.CodecDecodeSelf(d) + } + for { + yyj60++ + if yyhl60 { + yyb60 = yyj60 > l + } else { + yyb60 = r.CheckBreak() + } + if yyb60 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj60-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicationControllerDummy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym66 := z.EncBinary() + _ = yym66 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep67 := !z.EncBinary() + yy2arr67 := z.EncBasicHandle().StructToArray + var yyq67 [2]bool + _, _, _ = yysep67, yyq67, yy2arr67 + const yyr67 bool = false + yyq67[0] = x.Kind != "" + yyq67[1] = x.APIVersion != "" + var yynn67 int + if yyr67 || yy2arr67 { + r.EncodeArrayStart(2) + } else { + yynn67 = 0 + for _, b := range yyq67 { + if b { + yynn67++ + } + } + r.EncodeMapStart(yynn67) + yynn67 = 0 + } + if yyr67 || yy2arr67 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq67[0] { + yym69 := z.EncBinary() + _ = yym69 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq67[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym70 := z.EncBinary() + _ = yym70 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr67 || yy2arr67 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq67[1] { + yym72 := z.EncBinary() + _ = yym72 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq67[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym73 := z.EncBinary() + _ = yym73 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr67 || yy2arr67 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicationControllerDummy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym74 := z.DecBinary() + _ = yym74 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct75 := r.ContainerType() + if yyct75 == codecSelferValueTypeMap1234 { + yyl75 := r.ReadMapStart() + if yyl75 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl75, d) + } + } else if yyct75 == codecSelferValueTypeArray1234 { + yyl75 := r.ReadArrayStart() + if yyl75 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl75, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys76Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys76Slc + var yyhl76 bool = l >= 0 + for yyj76 := 0; ; yyj76++ { + if yyhl76 { + if yyj76 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys76Slc = r.DecodeBytes(yys76Slc, true, true) + yys76 := string(yys76Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys76 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys76) + } // end switch yys76 + } // end for yyj76 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicationControllerDummy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj79 int + var yyb79 bool + var yyhl79 bool = l >= 0 + yyj79++ + if yyhl79 { + yyb79 = yyj79 > l + } else { + yyb79 = r.CheckBreak() + } + if yyb79 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj79++ + if yyhl79 { + yyb79 = yyj79 > l + } else { + yyb79 = r.CheckBreak() + } + if yyb79 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + for { + yyj79++ + if yyhl79 { + yyb79 = yyj79 > l + } else { + yyb79 = r.CheckBreak() + } + if yyb79 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj79-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SubresourceReference) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym82 := z.EncBinary() + _ = yym82 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep83 := !z.EncBinary() + yy2arr83 := z.EncBasicHandle().StructToArray + var yyq83 [4]bool + _, _, _ = yysep83, yyq83, yy2arr83 + const yyr83 bool = false + yyq83[0] = x.Kind != "" + yyq83[1] = x.Name != "" + yyq83[2] = x.APIVersion != "" + yyq83[3] = x.Subresource != "" + var yynn83 int + if yyr83 || yy2arr83 { + r.EncodeArrayStart(4) + } else { + yynn83 = 0 + for _, b := range yyq83 { + if b { + yynn83++ + } + } + r.EncodeMapStart(yynn83) + yynn83 = 0 + } + if yyr83 || yy2arr83 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq83[0] { + yym85 := z.EncBinary() + _ = yym85 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq83[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym86 := z.EncBinary() + _ = yym86 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr83 || yy2arr83 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq83[1] { + yym88 := z.EncBinary() + _ = yym88 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq83[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym89 := z.EncBinary() + _ = yym89 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr83 || yy2arr83 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq83[2] { + yym91 := z.EncBinary() + _ = yym91 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq83[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym92 := z.EncBinary() + _ = yym92 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr83 || yy2arr83 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq83[3] { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq83[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subresource")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym95 := z.EncBinary() + _ = yym95 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Subresource)) + } + } + } + if yyr83 || yy2arr83 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SubresourceReference) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym96 := z.DecBinary() + _ = yym96 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct97 := r.ContainerType() + if yyct97 == codecSelferValueTypeMap1234 { + yyl97 := r.ReadMapStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl97, d) + } + } else if yyct97 == codecSelferValueTypeArray1234 { + yyl97 := r.ReadArrayStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl97, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SubresourceReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys98Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys98Slc + var yyhl98 bool = l >= 0 + for yyj98 := 0; ; yyj98++ { + if yyhl98 { + if yyj98 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys98Slc = r.DecodeBytes(yys98Slc, true, true) + yys98 := string(yys98Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys98 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "subresource": + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys98) + } // end switch yys98 + } // end for yyj98 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SubresourceReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj103 int + var yyb103 bool + var yyhl103 bool = l >= 0 + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subresource = "" + } else { + x.Subresource = string(r.DecodeString()) + } + for { + yyj103++ + if yyhl103 { + yyb103 = yyj103 > l + } else { + yyb103 = r.CheckBreak() + } + if yyb103 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj103-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CPUTargetUtilization) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym108 := z.EncBinary() + _ = yym108 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep109 := !z.EncBinary() + yy2arr109 := z.EncBasicHandle().StructToArray + var yyq109 [1]bool + _, _, _ = yysep109, yyq109, yy2arr109 + const yyr109 bool = false + var yynn109 int + if yyr109 || yy2arr109 { + r.EncodeArrayStart(1) + } else { + yynn109 = 1 + for _, b := range yyq109 { + if b { + yynn109++ + } + } + r.EncodeMapStart(yynn109) + yynn109 = 0 + } + if yyr109 || yy2arr109 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym111 := z.EncBinary() + _ = yym111 + if false { + } else { + r.EncodeInt(int64(x.TargetPercentage)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("targetPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym112 := z.EncBinary() + _ = yym112 + if false { + } else { + r.EncodeInt(int64(x.TargetPercentage)) + } + } + if yyr109 || yy2arr109 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CPUTargetUtilization) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym113 := z.DecBinary() + _ = yym113 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct114 := r.ContainerType() + if yyct114 == codecSelferValueTypeMap1234 { + yyl114 := r.ReadMapStart() + if yyl114 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl114, d) + } + } else if yyct114 == codecSelferValueTypeArray1234 { + yyl114 := r.ReadArrayStart() + if yyl114 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl114, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CPUTargetUtilization) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys115Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys115Slc + var yyhl115 bool = l >= 0 + for yyj115 := 0; ; yyj115++ { + if yyhl115 { + if yyj115 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys115Slc = r.DecodeBytes(yys115Slc, true, true) + yys115 := string(yys115Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys115 { + case "targetPercentage": + if r.TryDecodeAsNil() { + x.TargetPercentage = 0 + } else { + x.TargetPercentage = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys115) + } // end switch yys115 + } // end for yyj115 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CPUTargetUtilization) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj117 int + var yyb117 bool + var yyhl117 bool = l >= 0 + yyj117++ + if yyhl117 { + yyb117 = yyj117 > l + } else { + yyb117 = r.CheckBreak() + } + if yyb117 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetPercentage = 0 + } else { + x.TargetPercentage = int32(r.DecodeInt(32)) + } + for { + yyj117++ + if yyhl117 { + yyb117 = yyj117 > l + } else { + yyb117 = r.CheckBreak() + } + if yyb117 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj117-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTarget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym119 := z.EncBinary() + _ = yym119 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep120 := !z.EncBinary() + yy2arr120 := z.EncBasicHandle().StructToArray + var yyq120 [2]bool + _, _, _ = yysep120, yyq120, yy2arr120 + const yyr120 bool = false + var yynn120 int + if yyr120 || yy2arr120 { + r.EncodeArrayStart(2) + } else { + yynn120 = 2 + for _, b := range yyq120 { + if b { + yynn120++ + } + } + r.EncodeMapStart(yynn120) + yynn120 = 0 + } + if yyr120 || yy2arr120 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym122 := z.EncBinary() + _ = yym122 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym123 := z.EncBinary() + _ = yym123 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr120 || yy2arr120 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy125 := &x.TargetValue + yym126 := z.EncBinary() + _ = yym126 + if false { + } else if z.HasExtensions() && z.EncExt(yy125) { + } else if !yym126 && z.IsJSONHandle() { + z.EncJSONMarshal(yy125) + } else { + z.EncFallback(yy125) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy127 := &x.TargetValue + yym128 := z.EncBinary() + _ = yym128 + if false { + } else if z.HasExtensions() && z.EncExt(yy127) { + } else if !yym128 && z.IsJSONHandle() { + z.EncJSONMarshal(yy127) + } else { + z.EncFallback(yy127) + } + } + if yyr120 || yy2arr120 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTarget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym129 := z.DecBinary() + _ = yym129 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct130 := r.ContainerType() + if yyct130 == codecSelferValueTypeMap1234 { + yyl130 := r.ReadMapStart() + if yyl130 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl130, d) + } + } else if yyct130 == codecSelferValueTypeArray1234 { + yyl130 := r.ReadArrayStart() + if yyl130 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl130, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTarget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys131Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys131Slc + var yyhl131 bool = l >= 0 + for yyj131 := 0; ; yyj131++ { + if yyhl131 { + if yyj131 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys131Slc = r.DecodeBytes(yys131Slc, true, true) + yys131 := string(yys131Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys131 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.TargetValue = pkg4_resource.Quantity{} + } else { + yyv133 := &x.TargetValue + yym134 := z.DecBinary() + _ = yym134 + if false { + } else if z.HasExtensions() && z.DecExt(yyv133) { + } else if !yym134 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv133) + } else { + z.DecFallback(yyv133, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys131) + } // end switch yys131 + } // end for yyj131 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTarget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj135 int + var yyb135 bool + var yyhl135 bool = l >= 0 + yyj135++ + if yyhl135 { + yyb135 = yyj135 > l + } else { + yyb135 = r.CheckBreak() + } + if yyb135 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj135++ + if yyhl135 { + yyb135 = yyj135 > l + } else { + yyb135 = r.CheckBreak() + } + if yyb135 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TargetValue = pkg4_resource.Quantity{} + } else { + yyv137 := &x.TargetValue + yym138 := z.DecBinary() + _ = yym138 + if false { + } else if z.HasExtensions() && z.DecExt(yyv137) { + } else if !yym138 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv137) + } else { + z.DecFallback(yyv137, false) + } + } + for { + yyj135++ + if yyhl135 { + yyb135 = yyj135 > l + } else { + yyb135 = r.CheckBreak() + } + if yyb135 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj135-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricTargetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym139 := z.EncBinary() + _ = yym139 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep140 := !z.EncBinary() + yy2arr140 := z.EncBasicHandle().StructToArray + var yyq140 [1]bool + _, _, _ = yysep140, yyq140, yy2arr140 + const yyr140 bool = false + var yynn140 int + if yyr140 || yy2arr140 { + r.EncodeArrayStart(1) + } else { + yynn140 = 1 + for _, b := range yyq140 { + if b { + yynn140++ + } + } + r.EncodeMapStart(yynn140) + yynn140 = 0 + } + if yyr140 || yy2arr140 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym142 := z.EncBinary() + _ = yym142 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym143 := z.EncBinary() + _ = yym143 + if false { + } else { + h.encSliceCustomMetricTarget(([]CustomMetricTarget)(x.Items), e) + } + } + } + if yyr140 || yy2arr140 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricTargetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym144 := z.DecBinary() + _ = yym144 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct145 := r.ContainerType() + if yyct145 == codecSelferValueTypeMap1234 { + yyl145 := r.ReadMapStart() + if yyl145 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl145, d) + } + } else if yyct145 == codecSelferValueTypeArray1234 { + yyl145 := r.ReadArrayStart() + if yyl145 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl145, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys146Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys146Slc + var yyhl146 bool = l >= 0 + for yyj146 := 0; ; yyj146++ { + if yyhl146 { + if yyj146 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys146Slc = r.DecodeBytes(yys146Slc, true, true) + yys146 := string(yys146Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys146 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv147 := &x.Items + yym148 := z.DecBinary() + _ = yym148 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv147), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys146) + } // end switch yys146 + } // end for yyj146 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricTargetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj149 int + var yyb149 bool + var yyhl149 bool = l >= 0 + yyj149++ + if yyhl149 { + yyb149 = yyj149 > l + } else { + yyb149 = r.CheckBreak() + } + if yyb149 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv150 := &x.Items + yym151 := z.DecBinary() + _ = yym151 + if false { + } else { + h.decSliceCustomMetricTarget((*[]CustomMetricTarget)(yyv150), d) + } + } + for { + yyj149++ + if yyhl149 { + yyb149 = yyj149 > l + } else { + yyb149 = r.CheckBreak() + } + if yyb149 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj149-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym152 := z.EncBinary() + _ = yym152 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep153 := !z.EncBinary() + yy2arr153 := z.EncBasicHandle().StructToArray + var yyq153 [2]bool + _, _, _ = yysep153, yyq153, yy2arr153 + const yyr153 bool = false + var yynn153 int + if yyr153 || yy2arr153 { + r.EncodeArrayStart(2) + } else { + yynn153 = 2 + for _, b := range yyq153 { + if b { + yynn153++ + } + } + r.EncodeMapStart(yynn153) + yynn153 = 0 + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym155 := z.EncBinary() + _ = yym155 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym156 := z.EncBinary() + _ = yym156 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy158 := &x.CurrentValue + yym159 := z.EncBinary() + _ = yym159 + if false { + } else if z.HasExtensions() && z.EncExt(yy158) { + } else if !yym159 && z.IsJSONHandle() { + z.EncJSONMarshal(yy158) + } else { + z.EncFallback(yy158) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("value")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy160 := &x.CurrentValue + yym161 := z.EncBinary() + _ = yym161 + if false { + } else if z.HasExtensions() && z.EncExt(yy160) { + } else if !yym161 && z.IsJSONHandle() { + z.EncJSONMarshal(yy160) + } else { + z.EncFallback(yy160) + } + } + if yyr153 || yy2arr153 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym162 := z.DecBinary() + _ = yym162 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct163 := r.ContainerType() + if yyct163 == codecSelferValueTypeMap1234 { + yyl163 := r.ReadMapStart() + if yyl163 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl163, d) + } + } else if yyct163 == codecSelferValueTypeArray1234 { + yyl163 := r.ReadArrayStart() + if yyl163 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl163, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys164Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys164Slc + var yyhl164 bool = l >= 0 + for yyj164 := 0; ; yyj164++ { + if yyhl164 { + if yyj164 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys164Slc = r.DecodeBytes(yys164Slc, true, true) + yys164 := string(yys164Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys164 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "value": + if r.TryDecodeAsNil() { + x.CurrentValue = pkg4_resource.Quantity{} + } else { + yyv166 := &x.CurrentValue + yym167 := z.DecBinary() + _ = yym167 + if false { + } else if z.HasExtensions() && z.DecExt(yyv166) { + } else if !yym167 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv166) + } else { + z.DecFallback(yyv166, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys164) + } // end switch yys164 + } // end for yyj164 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj168 int + var yyb168 bool + var yyhl168 bool = l >= 0 + yyj168++ + if yyhl168 { + yyb168 = yyj168 > l + } else { + yyb168 = r.CheckBreak() + } + if yyb168 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj168++ + if yyhl168 { + yyb168 = yyj168 > l + } else { + yyb168 = r.CheckBreak() + } + if yyb168 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentValue = pkg4_resource.Quantity{} + } else { + yyv170 := &x.CurrentValue + yym171 := z.DecBinary() + _ = yym171 + if false { + } else if z.HasExtensions() && z.DecExt(yyv170) { + } else if !yym171 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv170) + } else { + z.DecFallback(yyv170, false) + } + } + for { + yyj168++ + if yyhl168 { + yyb168 = yyj168 > l + } else { + yyb168 = r.CheckBreak() + } + if yyb168 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj168-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *CustomMetricCurrentStatusList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym172 := z.EncBinary() + _ = yym172 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep173 := !z.EncBinary() + yy2arr173 := z.EncBasicHandle().StructToArray + var yyq173 [1]bool + _, _, _ = yysep173, yyq173, yy2arr173 + const yyr173 bool = false + var yynn173 int + if yyr173 || yy2arr173 { + r.EncodeArrayStart(1) + } else { + yynn173 = 1 + for _, b := range yyq173 { + if b { + yynn173++ + } + } + r.EncodeMapStart(yynn173) + yynn173 = 0 + } + if yyr173 || yy2arr173 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym175 := z.EncBinary() + _ = yym175 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym176 := z.EncBinary() + _ = yym176 + if false { + } else { + h.encSliceCustomMetricCurrentStatus(([]CustomMetricCurrentStatus)(x.Items), e) + } + } + } + if yyr173 || yy2arr173 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *CustomMetricCurrentStatusList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym177 := z.DecBinary() + _ = yym177 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct178 := r.ContainerType() + if yyct178 == codecSelferValueTypeMap1234 { + yyl178 := r.ReadMapStart() + if yyl178 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl178, d) + } + } else if yyct178 == codecSelferValueTypeArray1234 { + yyl178 := r.ReadArrayStart() + if yyl178 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl178, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys179Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys179Slc + var yyhl179 bool = l >= 0 + for yyj179 := 0; ; yyj179++ { + if yyhl179 { + if yyj179 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys179Slc = r.DecodeBytes(yys179Slc, true, true) + yys179 := string(yys179Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys179 { + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv180 := &x.Items + yym181 := z.DecBinary() + _ = yym181 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv180), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys179) + } // end switch yys179 + } // end for yyj179 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *CustomMetricCurrentStatusList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj182 int + var yyb182 bool + var yyhl182 bool = l >= 0 + yyj182++ + if yyhl182 { + yyb182 = yyj182 > l + } else { + yyb182 = r.CheckBreak() + } + if yyb182 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv183 := &x.Items + yym184 := z.DecBinary() + _ = yym184 + if false { + } else { + h.decSliceCustomMetricCurrentStatus((*[]CustomMetricCurrentStatus)(yyv183), d) + } + } + for { + yyj182++ + if yyhl182 { + yyb182 = yyj182 > l + } else { + yyb182 = r.CheckBreak() + } + if yyb182 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj182-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym185 := z.EncBinary() + _ = yym185 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep186 := !z.EncBinary() + yy2arr186 := z.EncBasicHandle().StructToArray + var yyq186 [4]bool + _, _, _ = yysep186, yyq186, yy2arr186 + const yyr186 bool = false + yyq186[1] = x.MinReplicas != nil + yyq186[3] = x.CPUUtilization != nil + var yynn186 int + if yyr186 || yy2arr186 { + r.EncodeArrayStart(4) + } else { + yynn186 = 2 + for _, b := range yyq186 { + if b { + yynn186++ + } + } + r.EncodeMapStart(yynn186) + yynn186 = 0 + } + if yyr186 || yy2arr186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy188 := &x.ScaleRef + yy188.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("scaleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy189 := &x.ScaleRef + yy189.CodecEncodeSelf(e) + } + if yyr186 || yy2arr186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq186[1] { + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy191 := *x.MinReplicas + yym192 := z.EncBinary() + _ = yym192 + if false { + } else { + r.EncodeInt(int64(yy191)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq186[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MinReplicas == nil { + r.EncodeNil() + } else { + yy193 := *x.MinReplicas + yym194 := z.EncBinary() + _ = yym194 + if false { + } else { + r.EncodeInt(int64(yy193)) + } + } + } + } + if yyr186 || yy2arr186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym196 := z.EncBinary() + _ = yym196 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym197 := z.EncBinary() + _ = yym197 + if false { + } else { + r.EncodeInt(int64(x.MaxReplicas)) + } + } + if yyr186 || yy2arr186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq186[3] { + if x.CPUUtilization == nil { + r.EncodeNil() + } else { + x.CPUUtilization.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq186[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("cpuUtilization")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CPUUtilization == nil { + r.EncodeNil() + } else { + x.CPUUtilization.CodecEncodeSelf(e) + } + } + } + if yyr186 || yy2arr186 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym199 := z.DecBinary() + _ = yym199 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct200 := r.ContainerType() + if yyct200 == codecSelferValueTypeMap1234 { + yyl200 := r.ReadMapStart() + if yyl200 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl200, d) + } + } else if yyct200 == codecSelferValueTypeArray1234 { + yyl200 := r.ReadArrayStart() + if yyl200 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl200, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys201Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys201Slc + var yyhl201 bool = l >= 0 + for yyj201 := 0; ; yyj201++ { + if yyhl201 { + if yyj201 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys201Slc = r.DecodeBytes(yys201Slc, true, true) + yys201 := string(yys201Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys201 { + case "scaleRef": + if r.TryDecodeAsNil() { + x.ScaleRef = SubresourceReference{} + } else { + yyv202 := &x.ScaleRef + yyv202.CodecDecodeSelf(d) + } + case "minReplicas": + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym204 := z.DecBinary() + _ = yym204 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + case "maxReplicas": + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + case "cpuUtilization": + if r.TryDecodeAsNil() { + if x.CPUUtilization != nil { + x.CPUUtilization = nil + } + } else { + if x.CPUUtilization == nil { + x.CPUUtilization = new(CPUTargetUtilization) + } + x.CPUUtilization.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys201) + } // end switch yys201 + } // end for yyj201 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj207 int + var yyb207 bool + var yyhl207 bool = l >= 0 + yyj207++ + if yyhl207 { + yyb207 = yyj207 > l + } else { + yyb207 = r.CheckBreak() + } + if yyb207 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ScaleRef = SubresourceReference{} + } else { + yyv208 := &x.ScaleRef + yyv208.CodecDecodeSelf(d) + } + yyj207++ + if yyhl207 { + yyb207 = yyj207 > l + } else { + yyb207 = r.CheckBreak() + } + if yyb207 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MinReplicas != nil { + x.MinReplicas = nil + } + } else { + if x.MinReplicas == nil { + x.MinReplicas = new(int32) + } + yym210 := z.DecBinary() + _ = yym210 + if false { + } else { + *((*int32)(x.MinReplicas)) = int32(r.DecodeInt(32)) + } + } + yyj207++ + if yyhl207 { + yyb207 = yyj207 > l + } else { + yyb207 = r.CheckBreak() + } + if yyb207 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MaxReplicas = 0 + } else { + x.MaxReplicas = int32(r.DecodeInt(32)) + } + yyj207++ + if yyhl207 { + yyb207 = yyj207 > l + } else { + yyb207 = r.CheckBreak() + } + if yyb207 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CPUUtilization != nil { + x.CPUUtilization = nil + } + } else { + if x.CPUUtilization == nil { + x.CPUUtilization = new(CPUTargetUtilization) + } + x.CPUUtilization.CodecDecodeSelf(d) + } + for { + yyj207++ + if yyhl207 { + yyb207 = yyj207 > l + } else { + yyb207 = r.CheckBreak() + } + if yyb207 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj207-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym213 := z.EncBinary() + _ = yym213 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep214 := !z.EncBinary() + yy2arr214 := z.EncBasicHandle().StructToArray + var yyq214 [5]bool + _, _, _ = yysep214, yyq214, yy2arr214 + const yyr214 bool = false + yyq214[0] = x.ObservedGeneration != nil + yyq214[1] = x.LastScaleTime != nil + yyq214[4] = x.CurrentCPUUtilizationPercentage != nil + var yynn214 int + if yyr214 || yy2arr214 { + r.EncodeArrayStart(5) + } else { + yynn214 = 2 + for _, b := range yyq214 { + if b { + yynn214++ + } + } + r.EncodeMapStart(yynn214) + yynn214 = 0 + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq214[0] { + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy216 := *x.ObservedGeneration + yym217 := z.EncBinary() + _ = yym217 + if false { + } else { + r.EncodeInt(int64(yy216)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq214[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ObservedGeneration == nil { + r.EncodeNil() + } else { + yy218 := *x.ObservedGeneration + yym219 := z.EncBinary() + _ = yym219 + if false { + } else { + r.EncodeInt(int64(yy218)) + } + } + } + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq214[1] { + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym221 := z.EncBinary() + _ = yym221 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym221 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym221 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq214[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastScaleTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.LastScaleTime == nil { + r.EncodeNil() + } else { + yym222 := z.EncBinary() + _ = yym222 + if false { + } else if z.HasExtensions() && z.EncExt(x.LastScaleTime) { + } else if yym222 { + z.EncBinaryMarshal(x.LastScaleTime) + } else if !yym222 && z.IsJSONHandle() { + z.EncJSONMarshal(x.LastScaleTime) + } else { + z.EncFallback(x.LastScaleTime) + } + } + } + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym224 := z.EncBinary() + _ = yym224 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym225 := z.EncBinary() + _ = yym225 + if false { + } else { + r.EncodeInt(int64(x.CurrentReplicas)) + } + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym227 := z.EncBinary() + _ = yym227 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym228 := z.EncBinary() + _ = yym228 + if false { + } else { + r.EncodeInt(int64(x.DesiredReplicas)) + } + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq214[4] { + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy230 := *x.CurrentCPUUtilizationPercentage + yym231 := z.EncBinary() + _ = yym231 + if false { + } else { + r.EncodeInt(int64(yy230)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq214[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentCPUUtilizationPercentage")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CurrentCPUUtilizationPercentage == nil { + r.EncodeNil() + } else { + yy232 := *x.CurrentCPUUtilizationPercentage + yym233 := z.EncBinary() + _ = yym233 + if false { + } else { + r.EncodeInt(int64(yy232)) + } + } + } + } + if yyr214 || yy2arr214 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym234 := z.DecBinary() + _ = yym234 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct235 := r.ContainerType() + if yyct235 == codecSelferValueTypeMap1234 { + yyl235 := r.ReadMapStart() + if yyl235 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl235, d) + } + } else if yyct235 == codecSelferValueTypeArray1234 { + yyl235 := r.ReadArrayStart() + if yyl235 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl235, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys236Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys236Slc + var yyhl236 bool = l >= 0 + for yyj236 := 0; ; yyj236++ { + if yyhl236 { + if yyj236 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys236Slc = r.DecodeBytes(yys236Slc, true, true) + yys236 := string(yys236Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys236 { + case "observedGeneration": + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym238 := z.DecBinary() + _ = yym238 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + case "lastScaleTime": + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym240 := z.DecBinary() + _ = yym240 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym240 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym240 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + case "currentReplicas": + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + case "desiredReplicas": + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + case "currentCPUUtilizationPercentage": + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym244 := z.DecBinary() + _ = yym244 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + default: + z.DecStructFieldNotFound(-1, yys236) + } // end switch yys236 + } // end for yyj236 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj245 int + var yyb245 bool + var yyhl245 bool = l >= 0 + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ObservedGeneration != nil { + x.ObservedGeneration = nil + } + } else { + if x.ObservedGeneration == nil { + x.ObservedGeneration = new(int64) + } + yym247 := z.DecBinary() + _ = yym247 + if false { + } else { + *((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64)) + } + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.LastScaleTime != nil { + x.LastScaleTime = nil + } + } else { + if x.LastScaleTime == nil { + x.LastScaleTime = new(pkg1_unversioned.Time) + } + yym249 := z.DecBinary() + _ = yym249 + if false { + } else if z.HasExtensions() && z.DecExt(x.LastScaleTime) { + } else if yym249 { + z.DecBinaryUnmarshal(x.LastScaleTime) + } else if !yym249 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.LastScaleTime) + } else { + z.DecFallback(x.LastScaleTime, false) + } + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentReplicas = 0 + } else { + x.CurrentReplicas = int32(r.DecodeInt(32)) + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredReplicas = 0 + } else { + x.DesiredReplicas = int32(r.DecodeInt(32)) + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CurrentCPUUtilizationPercentage != nil { + x.CurrentCPUUtilizationPercentage = nil + } + } else { + if x.CurrentCPUUtilizationPercentage == nil { + x.CurrentCPUUtilizationPercentage = new(int32) + } + yym253 := z.DecBinary() + _ = yym253 + if false { + } else { + *((*int32)(x.CurrentCPUUtilizationPercentage)) = int32(r.DecodeInt(32)) + } + } + for { + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj245-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscaler) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym254 := z.EncBinary() + _ = yym254 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep255 := !z.EncBinary() + yy2arr255 := z.EncBasicHandle().StructToArray + var yyq255 [5]bool + _, _, _ = yysep255, yyq255, yy2arr255 + const yyr255 bool = false + yyq255[0] = x.Kind != "" + yyq255[1] = x.APIVersion != "" + yyq255[2] = true + yyq255[3] = true + yyq255[4] = true + var yynn255 int + if yyr255 || yy2arr255 { + r.EncodeArrayStart(5) + } else { + yynn255 = 0 + for _, b := range yyq255 { + if b { + yynn255++ + } + } + r.EncodeMapStart(yynn255) + yynn255 = 0 + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq255[0] { + yym257 := z.EncBinary() + _ = yym257 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq255[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym258 := z.EncBinary() + _ = yym258 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq255[1] { + yym260 := z.EncBinary() + _ = yym260 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq255[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym261 := z.EncBinary() + _ = yym261 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq255[2] { + yy263 := &x.ObjectMeta + yy263.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq255[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy264 := &x.ObjectMeta + yy264.CodecEncodeSelf(e) + } + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq255[3] { + yy266 := &x.Spec + yy266.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq255[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy267 := &x.Spec + yy267.CodecEncodeSelf(e) + } + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq255[4] { + yy269 := &x.Status + yy269.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq255[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy270 := &x.Status + yy270.CodecEncodeSelf(e) + } + } + if yyr255 || yy2arr255 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscaler) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym271 := z.DecBinary() + _ = yym271 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct272 := r.ContainerType() + if yyct272 == codecSelferValueTypeMap1234 { + yyl272 := r.ReadMapStart() + if yyl272 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl272, d) + } + } else if yyct272 == codecSelferValueTypeArray1234 { + yyl272 := r.ReadArrayStart() + if yyl272 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl272, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys273Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys273Slc + var yyhl273 bool = l >= 0 + for yyj273 := 0; ; yyj273++ { + if yyhl273 { + if yyj273 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys273Slc = r.DecodeBytes(yys273Slc, true, true) + yys273 := string(yys273Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys273 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv276 := &x.ObjectMeta + yyv276.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv277 := &x.Spec + yyv277.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv278 := &x.Status + yyv278.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys273) + } // end switch yys273 + } // end for yyj273 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscaler) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj279 int + var yyb279 bool + var yyhl279 bool = l >= 0 + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv282 := &x.ObjectMeta + yyv282.CodecDecodeSelf(d) + } + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = HorizontalPodAutoscalerSpec{} + } else { + yyv283 := &x.Spec + yyv283.CodecDecodeSelf(d) + } + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = HorizontalPodAutoscalerStatus{} + } else { + yyv284 := &x.Status + yyv284.CodecDecodeSelf(d) + } + for { + yyj279++ + if yyhl279 { + yyb279 = yyj279 > l + } else { + yyb279 = r.CheckBreak() + } + if yyb279 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj279-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HorizontalPodAutoscalerList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym285 := z.EncBinary() + _ = yym285 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep286 := !z.EncBinary() + yy2arr286 := z.EncBasicHandle().StructToArray + var yyq286 [4]bool + _, _, _ = yysep286, yyq286, yy2arr286 + const yyr286 bool = false + yyq286[0] = x.Kind != "" + yyq286[1] = x.APIVersion != "" + yyq286[2] = true + var yynn286 int + if yyr286 || yy2arr286 { + r.EncodeArrayStart(4) + } else { + yynn286 = 1 + for _, b := range yyq286 { + if b { + yynn286++ + } + } + r.EncodeMapStart(yynn286) + yynn286 = 0 + } + if yyr286 || yy2arr286 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq286[0] { + yym288 := z.EncBinary() + _ = yym288 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq286[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym289 := z.EncBinary() + _ = yym289 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr286 || yy2arr286 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq286[1] { + yym291 := z.EncBinary() + _ = yym291 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq286[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym292 := z.EncBinary() + _ = yym292 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr286 || yy2arr286 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq286[2] { + yy294 := &x.ListMeta + yym295 := z.EncBinary() + _ = yym295 + if false { + } else if z.HasExtensions() && z.EncExt(yy294) { + } else { + z.EncFallback(yy294) + } + } else { + r.EncodeNil() + } + } else { + if yyq286[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy296 := &x.ListMeta + yym297 := z.EncBinary() + _ = yym297 + if false { + } else if z.HasExtensions() && z.EncExt(yy296) { + } else { + z.EncFallback(yy296) + } + } + } + if yyr286 || yy2arr286 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym299 := z.EncBinary() + _ = yym299 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym300 := z.EncBinary() + _ = yym300 + if false { + } else { + h.encSliceHorizontalPodAutoscaler(([]HorizontalPodAutoscaler)(x.Items), e) + } + } + } + if yyr286 || yy2arr286 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HorizontalPodAutoscalerList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym301 := z.DecBinary() + _ = yym301 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct302 := r.ContainerType() + if yyct302 == codecSelferValueTypeMap1234 { + yyl302 := r.ReadMapStart() + if yyl302 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl302, d) + } + } else if yyct302 == codecSelferValueTypeArray1234 { + yyl302 := r.ReadArrayStart() + if yyl302 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl302, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys303Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys303Slc + var yyhl303 bool = l >= 0 + for yyj303 := 0; ; yyj303++ { + if yyhl303 { + if yyj303 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys303Slc = r.DecodeBytes(yys303Slc, true, true) + yys303 := string(yys303Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys303 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv306 := &x.ListMeta + yym307 := z.DecBinary() + _ = yym307 + if false { + } else if z.HasExtensions() && z.DecExt(yyv306) { + } else { + z.DecFallback(yyv306, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv308 := &x.Items + yym309 := z.DecBinary() + _ = yym309 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv308), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys303) + } // end switch yys303 + } // end for yyj303 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HorizontalPodAutoscalerList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj310 int + var yyb310 bool + var yyhl310 bool = l >= 0 + yyj310++ + if yyhl310 { + yyb310 = yyj310 > l + } else { + yyb310 = r.CheckBreak() + } + if yyb310 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj310++ + if yyhl310 { + yyb310 = yyj310 > l + } else { + yyb310 = r.CheckBreak() + } + if yyb310 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj310++ + if yyhl310 { + yyb310 = yyj310 > l + } else { + yyb310 = r.CheckBreak() + } + if yyb310 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv313 := &x.ListMeta + yym314 := z.DecBinary() + _ = yym314 + if false { + } else if z.HasExtensions() && z.DecExt(yyv313) { + } else { + z.DecFallback(yyv313, false) + } + } + yyj310++ + if yyhl310 { + yyb310 = yyj310 > l + } else { + yyb310 = r.CheckBreak() + } + if yyb310 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv315 := &x.Items + yym316 := z.DecBinary() + _ = yym316 + if false { + } else { + h.decSliceHorizontalPodAutoscaler((*[]HorizontalPodAutoscaler)(yyv315), d) + } + } + for { + yyj310++ + if yyhl310 { + yyb310 = yyj310 > l + } else { + yyb310 = r.CheckBreak() + } + if yyb310 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj310-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResource) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym317 := z.EncBinary() + _ = yym317 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep318 := !z.EncBinary() + yy2arr318 := z.EncBasicHandle().StructToArray + var yyq318 [5]bool + _, _, _ = yysep318, yyq318, yy2arr318 + const yyr318 bool = false + yyq318[0] = x.Kind != "" + yyq318[1] = x.APIVersion != "" + yyq318[2] = true + yyq318[3] = x.Description != "" + yyq318[4] = len(x.Versions) != 0 + var yynn318 int + if yyr318 || yy2arr318 { + r.EncodeArrayStart(5) + } else { + yynn318 = 0 + for _, b := range yyq318 { + if b { + yynn318++ + } + } + r.EncodeMapStart(yynn318) + yynn318 = 0 + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq318[0] { + yym320 := z.EncBinary() + _ = yym320 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq318[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym321 := z.EncBinary() + _ = yym321 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq318[1] { + yym323 := z.EncBinary() + _ = yym323 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq318[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym324 := z.EncBinary() + _ = yym324 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq318[2] { + yy326 := &x.ObjectMeta + yy326.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq318[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy327 := &x.ObjectMeta + yy327.CodecEncodeSelf(e) + } + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq318[3] { + yym329 := z.EncBinary() + _ = yym329 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq318[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("description")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym330 := z.EncBinary() + _ = yym330 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Description)) + } + } + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq318[4] { + if x.Versions == nil { + r.EncodeNil() + } else { + yym332 := z.EncBinary() + _ = yym332 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq318[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("versions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Versions == nil { + r.EncodeNil() + } else { + yym333 := z.EncBinary() + _ = yym333 + if false { + } else { + h.encSliceAPIVersion(([]APIVersion)(x.Versions), e) + } + } + } + } + if yyr318 || yy2arr318 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResource) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym334 := z.DecBinary() + _ = yym334 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct335 := r.ContainerType() + if yyct335 == codecSelferValueTypeMap1234 { + yyl335 := r.ReadMapStart() + if yyl335 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl335, d) + } + } else if yyct335 == codecSelferValueTypeArray1234 { + yyl335 := r.ReadArrayStart() + if yyl335 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl335, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResource) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys336Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys336Slc + var yyhl336 bool = l >= 0 + for yyj336 := 0; ; yyj336++ { + if yyhl336 { + if yyj336 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys336Slc = r.DecodeBytes(yys336Slc, true, true) + yys336 := string(yys336Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys336 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv339 := &x.ObjectMeta + yyv339.CodecDecodeSelf(d) + } + case "description": + if r.TryDecodeAsNil() { + x.Description = "" + } else { + x.Description = string(r.DecodeString()) + } + case "versions": + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv341 := &x.Versions + yym342 := z.DecBinary() + _ = yym342 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv341), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys336) + } // end switch yys336 + } // end for yyj336 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResource) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj343 int + var yyb343 bool + var yyhl343 bool = l >= 0 + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv346 := &x.ObjectMeta + yyv346.CodecDecodeSelf(d) + } + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Description = "" + } else { + x.Description = string(r.DecodeString()) + } + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Versions = nil + } else { + yyv348 := &x.Versions + yym349 := z.DecBinary() + _ = yym349 + if false { + } else { + h.decSliceAPIVersion((*[]APIVersion)(yyv348), d) + } + } + for { + yyj343++ + if yyhl343 { + yyb343 = yyj343 > l + } else { + yyb343 = r.CheckBreak() + } + if yyb343 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj343-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym350 := z.EncBinary() + _ = yym350 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep351 := !z.EncBinary() + yy2arr351 := z.EncBasicHandle().StructToArray + var yyq351 [4]bool + _, _, _ = yysep351, yyq351, yy2arr351 + const yyr351 bool = false + yyq351[0] = x.Kind != "" + yyq351[1] = x.APIVersion != "" + yyq351[2] = true + var yynn351 int + if yyr351 || yy2arr351 { + r.EncodeArrayStart(4) + } else { + yynn351 = 1 + for _, b := range yyq351 { + if b { + yynn351++ + } + } + r.EncodeMapStart(yynn351) + yynn351 = 0 + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[0] { + yym353 := z.EncBinary() + _ = yym353 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq351[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym354 := z.EncBinary() + _ = yym354 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[1] { + yym356 := z.EncBinary() + _ = yym356 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq351[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym357 := z.EncBinary() + _ = yym357 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq351[2] { + yy359 := &x.ListMeta + yym360 := z.EncBinary() + _ = yym360 + if false { + } else if z.HasExtensions() && z.EncExt(yy359) { + } else { + z.EncFallback(yy359) + } + } else { + r.EncodeNil() + } + } else { + if yyq351[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy361 := &x.ListMeta + yym362 := z.EncBinary() + _ = yym362 + if false { + } else if z.HasExtensions() && z.EncExt(yy361) { + } else { + z.EncFallback(yy361) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym364 := z.EncBinary() + _ = yym364 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym365 := z.EncBinary() + _ = yym365 + if false { + } else { + h.encSliceThirdPartyResource(([]ThirdPartyResource)(x.Items), e) + } + } + } + if yyr351 || yy2arr351 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym366 := z.DecBinary() + _ = yym366 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct367 := r.ContainerType() + if yyct367 == codecSelferValueTypeMap1234 { + yyl367 := r.ReadMapStart() + if yyl367 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl367, d) + } + } else if yyct367 == codecSelferValueTypeArray1234 { + yyl367 := r.ReadArrayStart() + if yyl367 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl367, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys368Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys368Slc + var yyhl368 bool = l >= 0 + for yyj368 := 0; ; yyj368++ { + if yyhl368 { + if yyj368 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys368Slc = r.DecodeBytes(yys368Slc, true, true) + yys368 := string(yys368Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys368 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv371 := &x.ListMeta + yym372 := z.DecBinary() + _ = yym372 + if false { + } else if z.HasExtensions() && z.DecExt(yyv371) { + } else { + z.DecFallback(yyv371, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv373 := &x.Items + yym374 := z.DecBinary() + _ = yym374 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv373), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys368) + } // end switch yys368 + } // end for yyj368 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj375 int + var yyb375 bool + var yyhl375 bool = l >= 0 + yyj375++ + if yyhl375 { + yyb375 = yyj375 > l + } else { + yyb375 = r.CheckBreak() + } + if yyb375 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj375++ + if yyhl375 { + yyb375 = yyj375 > l + } else { + yyb375 = r.CheckBreak() + } + if yyb375 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj375++ + if yyhl375 { + yyb375 = yyj375 > l + } else { + yyb375 = r.CheckBreak() + } + if yyb375 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv378 := &x.ListMeta + yym379 := z.DecBinary() + _ = yym379 + if false { + } else if z.HasExtensions() && z.DecExt(yyv378) { + } else { + z.DecFallback(yyv378, false) + } + } + yyj375++ + if yyhl375 { + yyb375 = yyj375 > l + } else { + yyb375 = r.CheckBreak() + } + if yyb375 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv380 := &x.Items + yym381 := z.DecBinary() + _ = yym381 + if false { + } else { + h.decSliceThirdPartyResource((*[]ThirdPartyResource)(yyv380), d) + } + } + for { + yyj375++ + if yyhl375 { + yyb375 = yyj375 > l + } else { + yyb375 = r.CheckBreak() + } + if yyb375 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj375-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *APIVersion) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym382 := z.EncBinary() + _ = yym382 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep383 := !z.EncBinary() + yy2arr383 := z.EncBasicHandle().StructToArray + var yyq383 [1]bool + _, _, _ = yysep383, yyq383, yy2arr383 + const yyr383 bool = false + yyq383[0] = x.Name != "" + var yynn383 int + if yyr383 || yy2arr383 { + r.EncodeArrayStart(1) + } else { + yynn383 = 0 + for _, b := range yyq383 { + if b { + yynn383++ + } + } + r.EncodeMapStart(yynn383) + yynn383 = 0 + } + if yyr383 || yy2arr383 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq383[0] { + yym385 := z.EncBinary() + _ = yym385 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq383[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym386 := z.EncBinary() + _ = yym386 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + } + if yyr383 || yy2arr383 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *APIVersion) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym387 := z.DecBinary() + _ = yym387 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct388 := r.ContainerType() + if yyct388 == codecSelferValueTypeMap1234 { + yyl388 := r.ReadMapStart() + if yyl388 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl388, d) + } + } else if yyct388 == codecSelferValueTypeArray1234 { + yyl388 := r.ReadArrayStart() + if yyl388 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl388, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *APIVersion) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys389Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys389Slc + var yyhl389 bool = l >= 0 + for yyj389 := 0; ; yyj389++ { + if yyhl389 { + if yyj389 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys389Slc = r.DecodeBytes(yys389Slc, true, true) + yys389 := string(yys389Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys389 { + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys389) + } // end switch yys389 + } // end for yyj389 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *APIVersion) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj391 int + var yyb391 bool + var yyhl391 bool = l >= 0 + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj391++ + if yyhl391 { + yyb391 = yyj391 > l + } else { + yyb391 = r.CheckBreak() + } + if yyb391 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj391-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceData) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym393 := z.EncBinary() + _ = yym393 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep394 := !z.EncBinary() + yy2arr394 := z.EncBasicHandle().StructToArray + var yyq394 [4]bool + _, _, _ = yysep394, yyq394, yy2arr394 + const yyr394 bool = false + yyq394[0] = x.Kind != "" + yyq394[1] = x.APIVersion != "" + yyq394[2] = true + yyq394[3] = len(x.Data) != 0 + var yynn394 int + if yyr394 || yy2arr394 { + r.EncodeArrayStart(4) + } else { + yynn394 = 0 + for _, b := range yyq394 { + if b { + yynn394++ + } + } + r.EncodeMapStart(yynn394) + yynn394 = 0 + } + if yyr394 || yy2arr394 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq394[0] { + yym396 := z.EncBinary() + _ = yym396 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq394[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym397 := z.EncBinary() + _ = yym397 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr394 || yy2arr394 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq394[1] { + yym399 := z.EncBinary() + _ = yym399 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq394[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym400 := z.EncBinary() + _ = yym400 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr394 || yy2arr394 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq394[2] { + yy402 := &x.ObjectMeta + yy402.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq394[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy403 := &x.ObjectMeta + yy403.CodecEncodeSelf(e) + } + } + if yyr394 || yy2arr394 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq394[3] { + if x.Data == nil { + r.EncodeNil() + } else { + yym405 := z.EncBinary() + _ = yym405 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq394[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("data")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Data == nil { + r.EncodeNil() + } else { + yym406 := z.EncBinary() + _ = yym406 + if false { + } else { + r.EncodeStringBytes(codecSelferC_RAW1234, []byte(x.Data)) + } + } + } + } + if yyr394 || yy2arr394 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceData) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym407 := z.DecBinary() + _ = yym407 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct408 := r.ContainerType() + if yyct408 == codecSelferValueTypeMap1234 { + yyl408 := r.ReadMapStart() + if yyl408 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl408, d) + } + } else if yyct408 == codecSelferValueTypeArray1234 { + yyl408 := r.ReadArrayStart() + if yyl408 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl408, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys409Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys409Slc + var yyhl409 bool = l >= 0 + for yyj409 := 0; ; yyj409++ { + if yyhl409 { + if yyj409 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys409Slc = r.DecodeBytes(yys409Slc, true, true) + yys409 := string(yys409Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys409 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv412 := &x.ObjectMeta + yyv412.CodecDecodeSelf(d) + } + case "data": + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv413 := &x.Data + yym414 := z.DecBinary() + _ = yym414 + if false { + } else { + *yyv413 = r.DecodeBytes(*(*[]byte)(yyv413), false, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys409) + } // end switch yys409 + } // end for yyj409 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceData) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj415 int + var yyb415 bool + var yyhl415 bool = l >= 0 + yyj415++ + if yyhl415 { + yyb415 = yyj415 > l + } else { + yyb415 = r.CheckBreak() + } + if yyb415 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj415++ + if yyhl415 { + yyb415 = yyj415 > l + } else { + yyb415 = r.CheckBreak() + } + if yyb415 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj415++ + if yyhl415 { + yyb415 = yyj415 > l + } else { + yyb415 = r.CheckBreak() + } + if yyb415 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv418 := &x.ObjectMeta + yyv418.CodecDecodeSelf(d) + } + yyj415++ + if yyhl415 { + yyb415 = yyj415 > l + } else { + yyb415 = r.CheckBreak() + } + if yyb415 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Data = nil + } else { + yyv419 := &x.Data + yym420 := z.DecBinary() + _ = yym420 + if false { + } else { + *yyv419 = r.DecodeBytes(*(*[]byte)(yyv419), false, false) + } + } + for { + yyj415++ + if yyhl415 { + yyb415 = yyj415 > l + } else { + yyb415 = r.CheckBreak() + } + if yyb415 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj415-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Deployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym421 := z.EncBinary() + _ = yym421 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep422 := !z.EncBinary() + yy2arr422 := z.EncBasicHandle().StructToArray + var yyq422 [5]bool + _, _, _ = yysep422, yyq422, yy2arr422 + const yyr422 bool = false + yyq422[0] = x.Kind != "" + yyq422[1] = x.APIVersion != "" + yyq422[2] = true + yyq422[3] = true + yyq422[4] = true + var yynn422 int + if yyr422 || yy2arr422 { + r.EncodeArrayStart(5) + } else { + yynn422 = 0 + for _, b := range yyq422 { + if b { + yynn422++ + } + } + r.EncodeMapStart(yynn422) + yynn422 = 0 + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq422[0] { + yym424 := z.EncBinary() + _ = yym424 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq422[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym425 := z.EncBinary() + _ = yym425 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq422[1] { + yym427 := z.EncBinary() + _ = yym427 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq422[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym428 := z.EncBinary() + _ = yym428 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq422[2] { + yy430 := &x.ObjectMeta + yy430.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq422[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy431 := &x.ObjectMeta + yy431.CodecEncodeSelf(e) + } + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq422[3] { + yy433 := &x.Spec + yy433.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq422[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy434 := &x.Spec + yy434.CodecEncodeSelf(e) + } + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq422[4] { + yy436 := &x.Status + yy436.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq422[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy437 := &x.Status + yy437.CodecEncodeSelf(e) + } + } + if yyr422 || yy2arr422 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Deployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym438 := z.DecBinary() + _ = yym438 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct439 := r.ContainerType() + if yyct439 == codecSelferValueTypeMap1234 { + yyl439 := r.ReadMapStart() + if yyl439 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl439, d) + } + } else if yyct439 == codecSelferValueTypeArray1234 { + yyl439 := r.ReadArrayStart() + if yyl439 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl439, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Deployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys440Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys440Slc + var yyhl440 bool = l >= 0 + for yyj440 := 0; ; yyj440++ { + if yyhl440 { + if yyj440 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys440Slc = r.DecodeBytes(yys440Slc, true, true) + yys440 := string(yys440Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys440 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv443 := &x.ObjectMeta + yyv443.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv444 := &x.Spec + yyv444.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv445 := &x.Status + yyv445.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys440) + } // end switch yys440 + } // end for yyj440 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Deployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj446 int + var yyb446 bool + var yyhl446 bool = l >= 0 + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv449 := &x.ObjectMeta + yyv449.CodecDecodeSelf(d) + } + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DeploymentSpec{} + } else { + yyv450 := &x.Spec + yyv450.CodecDecodeSelf(d) + } + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DeploymentStatus{} + } else { + yyv451 := &x.Status + yyv451.CodecDecodeSelf(d) + } + for { + yyj446++ + if yyhl446 { + yyb446 = yyj446 > l + } else { + yyb446 = r.CheckBreak() + } + if yyb446 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj446-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym452 := z.EncBinary() + _ = yym452 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep453 := !z.EncBinary() + yy2arr453 := z.EncBasicHandle().StructToArray + var yyq453 [8]bool + _, _, _ = yysep453, yyq453, yy2arr453 + const yyr453 bool = false + yyq453[0] = x.Replicas != nil + yyq453[1] = x.Selector != nil + yyq453[3] = true + yyq453[4] = x.MinReadySeconds != 0 + yyq453[5] = x.RevisionHistoryLimit != nil + yyq453[6] = x.Paused != false + yyq453[7] = x.RollbackTo != nil + var yynn453 int + if yyr453 || yy2arr453 { + r.EncodeArrayStart(8) + } else { + yynn453 = 1 + for _, b := range yyq453 { + if b { + yynn453++ + } + } + r.EncodeMapStart(yynn453) + yynn453 = 0 + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy455 := *x.Replicas + yym456 := z.EncBinary() + _ = yym456 + if false { + } else { + r.EncodeInt(int64(yy455)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq453[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy457 := *x.Replicas + yym458 := z.EncBinary() + _ = yym458 + if false { + } else { + r.EncodeInt(int64(yy457)) + } + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq453[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy461 := &x.Template + yy461.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy462 := &x.Template + yy462.CodecEncodeSelf(e) + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[3] { + yy464 := &x.Strategy + yy464.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq453[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("strategy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy465 := &x.Strategy + yy465.CodecEncodeSelf(e) + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[4] { + yym467 := z.EncBinary() + _ = yym467 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq453[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minReadySeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym468 := z.EncBinary() + _ = yym468 + if false { + } else { + r.EncodeInt(int64(x.MinReadySeconds)) + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[5] { + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy470 := *x.RevisionHistoryLimit + yym471 := z.EncBinary() + _ = yym471 + if false { + } else { + r.EncodeInt(int64(yy470)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq453[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revisionHistoryLimit")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RevisionHistoryLimit == nil { + r.EncodeNil() + } else { + yy472 := *x.RevisionHistoryLimit + yym473 := z.EncBinary() + _ = yym473 + if false { + } else { + r.EncodeInt(int64(yy472)) + } + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[6] { + yym475 := z.EncBinary() + _ = yym475 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq453[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paused")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym476 := z.EncBinary() + _ = yym476 + if false { + } else { + r.EncodeBool(bool(x.Paused)) + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq453[7] { + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq453[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollbackTo == nil { + r.EncodeNil() + } else { + x.RollbackTo.CodecEncodeSelf(e) + } + } + } + if yyr453 || yy2arr453 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym478 := z.DecBinary() + _ = yym478 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct479 := r.ContainerType() + if yyct479 == codecSelferValueTypeMap1234 { + yyl479 := r.ReadMapStart() + if yyl479 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl479, d) + } + } else if yyct479 == codecSelferValueTypeArray1234 { + yyl479 := r.ReadArrayStart() + if yyl479 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl479, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys480Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys480Slc + var yyhl480 bool = l >= 0 + for yyj480 := 0; ; yyj480++ { + if yyhl480 { + if yyj480 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys480Slc = r.DecodeBytes(yys480Slc, true, true) + yys480 := string(yys480Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys480 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym482 := z.DecBinary() + _ = yym482 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv484 := &x.Template + yyv484.CodecDecodeSelf(d) + } + case "strategy": + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv485 := &x.Strategy + yyv485.CodecDecodeSelf(d) + } + case "minReadySeconds": + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + x.MinReadySeconds = int32(r.DecodeInt(32)) + } + case "revisionHistoryLimit": + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym488 := z.DecBinary() + _ = yym488 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + case "paused": + if r.TryDecodeAsNil() { + x.Paused = false + } else { + x.Paused = bool(r.DecodeBool()) + } + case "rollbackTo": + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys480) + } // end switch yys480 + } // end for yyj480 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj491 int + var yyb491 bool + var yyhl491 bool = l >= 0 + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym493 := z.DecBinary() + _ = yym493 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv495 := &x.Template + yyv495.CodecDecodeSelf(d) + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Strategy = DeploymentStrategy{} + } else { + yyv496 := &x.Strategy + yyv496.CodecDecodeSelf(d) + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinReadySeconds = 0 + } else { + x.MinReadySeconds = int32(r.DecodeInt(32)) + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RevisionHistoryLimit != nil { + x.RevisionHistoryLimit = nil + } + } else { + if x.RevisionHistoryLimit == nil { + x.RevisionHistoryLimit = new(int32) + } + yym499 := z.DecBinary() + _ = yym499 + if false { + } else { + *((*int32)(x.RevisionHistoryLimit)) = int32(r.DecodeInt(32)) + } + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paused = false + } else { + x.Paused = bool(r.DecodeBool()) + } + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollbackTo != nil { + x.RollbackTo = nil + } + } else { + if x.RollbackTo == nil { + x.RollbackTo = new(RollbackConfig) + } + x.RollbackTo.CodecDecodeSelf(d) + } + for { + yyj491++ + if yyhl491 { + yyb491 = yyj491 > l + } else { + yyb491 = r.CheckBreak() + } + if yyb491 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj491-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentRollback) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym502 := z.EncBinary() + _ = yym502 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep503 := !z.EncBinary() + yy2arr503 := z.EncBasicHandle().StructToArray + var yyq503 [5]bool + _, _, _ = yysep503, yyq503, yy2arr503 + const yyr503 bool = false + yyq503[0] = x.Kind != "" + yyq503[1] = x.APIVersion != "" + yyq503[3] = len(x.UpdatedAnnotations) != 0 + var yynn503 int + if yyr503 || yy2arr503 { + r.EncodeArrayStart(5) + } else { + yynn503 = 2 + for _, b := range yyq503 { + if b { + yynn503++ + } + } + r.EncodeMapStart(yynn503) + yynn503 = 0 + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq503[0] { + yym505 := z.EncBinary() + _ = yym505 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq503[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym506 := z.EncBinary() + _ = yym506 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq503[1] { + yym508 := z.EncBinary() + _ = yym508 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq503[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym509 := z.EncBinary() + _ = yym509 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym511 := z.EncBinary() + _ = yym511 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym512 := z.EncBinary() + _ = yym512 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq503[3] { + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym514 := z.EncBinary() + _ = yym514 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq503[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedAnnotations")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.UpdatedAnnotations == nil { + r.EncodeNil() + } else { + yym515 := z.EncBinary() + _ = yym515 + if false { + } else { + z.F.EncMapStringStringV(x.UpdatedAnnotations, false, e) + } + } + } + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy517 := &x.RollbackTo + yy517.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollbackTo")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy518 := &x.RollbackTo + yy518.CodecEncodeSelf(e) + } + if yyr503 || yy2arr503 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentRollback) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym519 := z.DecBinary() + _ = yym519 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct520 := r.ContainerType() + if yyct520 == codecSelferValueTypeMap1234 { + yyl520 := r.ReadMapStart() + if yyl520 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl520, d) + } + } else if yyct520 == codecSelferValueTypeArray1234 { + yyl520 := r.ReadArrayStart() + if yyl520 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl520, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentRollback) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys521Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys521Slc + var yyhl521 bool = l >= 0 + for yyj521 := 0; ; yyj521++ { + if yyhl521 { + if yyj521 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys521Slc = r.DecodeBytes(yys521Slc, true, true) + yys521 := string(yys521Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys521 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "updatedAnnotations": + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv525 := &x.UpdatedAnnotations + yym526 := z.DecBinary() + _ = yym526 + if false { + } else { + z.F.DecMapStringStringX(yyv525, false, d) + } + } + case "rollbackTo": + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv527 := &x.RollbackTo + yyv527.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys521) + } // end switch yys521 + } // end for yyj521 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentRollback) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj528 int + var yyb528 bool + var yyhl528 bool = l >= 0 + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedAnnotations = nil + } else { + yyv532 := &x.UpdatedAnnotations + yym533 := z.DecBinary() + _ = yym533 + if false { + } else { + z.F.DecMapStringStringX(yyv532, false, d) + } + } + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RollbackTo = RollbackConfig{} + } else { + yyv534 := &x.RollbackTo + yyv534.CodecDecodeSelf(d) + } + for { + yyj528++ + if yyhl528 { + yyb528 = yyj528 > l + } else { + yyb528 = r.CheckBreak() + } + if yyb528 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj528-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RollbackConfig) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym535 := z.EncBinary() + _ = yym535 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep536 := !z.EncBinary() + yy2arr536 := z.EncBasicHandle().StructToArray + var yyq536 [1]bool + _, _, _ = yysep536, yyq536, yy2arr536 + const yyr536 bool = false + yyq536[0] = x.Revision != 0 + var yynn536 int + if yyr536 || yy2arr536 { + r.EncodeArrayStart(1) + } else { + yynn536 = 0 + for _, b := range yyq536 { + if b { + yynn536++ + } + } + r.EncodeMapStart(yynn536) + yynn536 = 0 + } + if yyr536 || yy2arr536 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq536[0] { + yym538 := z.EncBinary() + _ = yym538 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq536[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("revision")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym539 := z.EncBinary() + _ = yym539 + if false { + } else { + r.EncodeInt(int64(x.Revision)) + } + } + } + if yyr536 || yy2arr536 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollbackConfig) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym540 := z.DecBinary() + _ = yym540 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct541 := r.ContainerType() + if yyct541 == codecSelferValueTypeMap1234 { + yyl541 := r.ReadMapStart() + if yyl541 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl541, d) + } + } else if yyct541 == codecSelferValueTypeArray1234 { + yyl541 := r.ReadArrayStart() + if yyl541 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl541, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollbackConfig) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys542Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys542Slc + var yyhl542 bool = l >= 0 + for yyj542 := 0; ; yyj542++ { + if yyhl542 { + if yyj542 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys542Slc = r.DecodeBytes(yys542Slc, true, true) + yys542 := string(yys542Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys542 { + case "revision": + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + x.Revision = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys542) + } // end switch yys542 + } // end for yyj542 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollbackConfig) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj544 int + var yyb544 bool + var yyhl544 bool = l >= 0 + yyj544++ + if yyhl544 { + yyb544 = yyj544 > l + } else { + yyb544 = r.CheckBreak() + } + if yyb544 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Revision = 0 + } else { + x.Revision = int64(r.DecodeInt(64)) + } + for { + yyj544++ + if yyhl544 { + yyb544 = yyj544 > l + } else { + yyb544 = r.CheckBreak() + } + if yyb544 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj544-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym546 := z.EncBinary() + _ = yym546 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep547 := !z.EncBinary() + yy2arr547 := z.EncBasicHandle().StructToArray + var yyq547 [2]bool + _, _, _ = yysep547, yyq547, yy2arr547 + const yyr547 bool = false + yyq547[0] = x.Type != "" + yyq547[1] = x.RollingUpdate != nil + var yynn547 int + if yyr547 || yy2arr547 { + r.EncodeArrayStart(2) + } else { + yynn547 = 0 + for _, b := range yyq547 { + if b { + yynn547++ + } + } + r.EncodeMapStart(yynn547) + yynn547 = 0 + } + if yyr547 || yy2arr547 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq547[0] { + x.Type.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq547[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + } + if yyr547 || yy2arr547 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq547[1] { + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq547[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rollingUpdate")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RollingUpdate == nil { + r.EncodeNil() + } else { + x.RollingUpdate.CodecEncodeSelf(e) + } + } + } + if yyr547 || yy2arr547 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym550 := z.DecBinary() + _ = yym550 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct551 := r.ContainerType() + if yyct551 == codecSelferValueTypeMap1234 { + yyl551 := r.ReadMapStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl551, d) + } + } else if yyct551 == codecSelferValueTypeArray1234 { + yyl551 := r.ReadArrayStart() + if yyl551 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl551, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStrategy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys552Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys552Slc + var yyhl552 bool = l >= 0 + for yyj552 := 0; ; yyj552++ { + if yyhl552 { + if yyj552 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys552Slc = r.DecodeBytes(yys552Slc, true, true) + yys552 := string(yys552Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys552 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = DeploymentStrategyType(r.DecodeString()) + } + case "rollingUpdate": + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys552) + } // end switch yys552 + } // end for yyj552 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStrategy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj555 int + var yyb555 bool + var yyhl555 bool = l >= 0 + yyj555++ + if yyhl555 { + yyb555 = yyj555 > l + } else { + yyb555 = r.CheckBreak() + } + if yyb555 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = DeploymentStrategyType(r.DecodeString()) + } + yyj555++ + if yyhl555 { + yyb555 = yyj555 > l + } else { + yyb555 = r.CheckBreak() + } + if yyb555 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.RollingUpdate != nil { + x.RollingUpdate = nil + } + } else { + if x.RollingUpdate == nil { + x.RollingUpdate = new(RollingUpdateDeployment) + } + x.RollingUpdate.CodecDecodeSelf(d) + } + for { + yyj555++ + if yyhl555 { + yyb555 = yyj555 > l + } else { + yyb555 = r.CheckBreak() + } + if yyb555 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj555-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x DeploymentStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym558 := z.EncBinary() + _ = yym558 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *DeploymentStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym559 := z.DecBinary() + _ = yym559 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RollingUpdateDeployment) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym560 := z.EncBinary() + _ = yym560 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep561 := !z.EncBinary() + yy2arr561 := z.EncBasicHandle().StructToArray + var yyq561 [2]bool + _, _, _ = yysep561, yyq561, yy2arr561 + const yyr561 bool = false + yyq561[0] = x.MaxUnavailable != nil + yyq561[1] = x.MaxSurge != nil + var yynn561 int + if yyr561 || yy2arr561 { + r.EncodeArrayStart(2) + } else { + yynn561 = 0 + for _, b := range yyq561 { + if b { + yynn561++ + } + } + r.EncodeMapStart(yynn561) + yynn561 = 0 + } + if yyr561 || yy2arr561 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq561[0] { + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym563 := z.EncBinary() + _ = yym563 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym563 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq561[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxUnavailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxUnavailable == nil { + r.EncodeNil() + } else { + yym564 := z.EncBinary() + _ = yym564 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxUnavailable) { + } else if !yym564 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxUnavailable) + } else { + z.EncFallback(x.MaxUnavailable) + } + } + } + } + if yyr561 || yy2arr561 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq561[1] { + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym566 := z.EncBinary() + _ = yym566 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym566 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq561[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("maxSurge")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MaxSurge == nil { + r.EncodeNil() + } else { + yym567 := z.EncBinary() + _ = yym567 + if false { + } else if z.HasExtensions() && z.EncExt(x.MaxSurge) { + } else if !yym567 && z.IsJSONHandle() { + z.EncJSONMarshal(x.MaxSurge) + } else { + z.EncFallback(x.MaxSurge) + } + } + } + } + if yyr561 || yy2arr561 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RollingUpdateDeployment) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym568 := z.DecBinary() + _ = yym568 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct569 := r.ContainerType() + if yyct569 == codecSelferValueTypeMap1234 { + yyl569 := r.ReadMapStart() + if yyl569 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl569, d) + } + } else if yyct569 == codecSelferValueTypeArray1234 { + yyl569 := r.ReadArrayStart() + if yyl569 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl569, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys570Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys570Slc + var yyhl570 bool = l >= 0 + for yyj570 := 0; ; yyj570++ { + if yyhl570 { + if yyj570 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys570Slc = r.DecodeBytes(yys570Slc, true, true) + yys570 := string(yys570Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys570 { + case "maxUnavailable": + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym572 := z.DecBinary() + _ = yym572 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym572 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + case "maxSurge": + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym574 := z.DecBinary() + _ = yym574 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym574 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys570) + } // end switch yys570 + } // end for yyj570 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj575 int + var yyb575 bool + var yyhl575 bool = l >= 0 + yyj575++ + if yyhl575 { + yyb575 = yyj575 > l + } else { + yyb575 = r.CheckBreak() + } + if yyb575 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxUnavailable != nil { + x.MaxUnavailable = nil + } + } else { + if x.MaxUnavailable == nil { + x.MaxUnavailable = new(pkg5_intstr.IntOrString) + } + yym577 := z.DecBinary() + _ = yym577 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxUnavailable) { + } else if !yym577 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxUnavailable) + } else { + z.DecFallback(x.MaxUnavailable, false) + } + } + yyj575++ + if yyhl575 { + yyb575 = yyj575 > l + } else { + yyb575 = r.CheckBreak() + } + if yyb575 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.MaxSurge != nil { + x.MaxSurge = nil + } + } else { + if x.MaxSurge == nil { + x.MaxSurge = new(pkg5_intstr.IntOrString) + } + yym579 := z.DecBinary() + _ = yym579 + if false { + } else if z.HasExtensions() && z.DecExt(x.MaxSurge) { + } else if !yym579 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.MaxSurge) + } else { + z.DecFallback(x.MaxSurge, false) + } + } + for { + yyj575++ + if yyhl575 { + yyb575 = yyj575 > l + } else { + yyb575 = r.CheckBreak() + } + if yyb575 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj575-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym580 := z.EncBinary() + _ = yym580 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep581 := !z.EncBinary() + yy2arr581 := z.EncBasicHandle().StructToArray + var yyq581 [5]bool + _, _, _ = yysep581, yyq581, yy2arr581 + const yyr581 bool = false + yyq581[0] = x.ObservedGeneration != 0 + yyq581[1] = x.Replicas != 0 + yyq581[2] = x.UpdatedReplicas != 0 + yyq581[3] = x.AvailableReplicas != 0 + yyq581[4] = x.UnavailableReplicas != 0 + var yynn581 int + if yyr581 || yy2arr581 { + r.EncodeArrayStart(5) + } else { + yynn581 = 0 + for _, b := range yyq581 { + if b { + yynn581++ + } + } + r.EncodeMapStart(yynn581) + yynn581 = 0 + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq581[0] { + yym583 := z.EncBinary() + _ = yym583 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq581[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym584 := z.EncBinary() + _ = yym584 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq581[1] { + yym586 := z.EncBinary() + _ = yym586 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq581[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym587 := z.EncBinary() + _ = yym587 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq581[2] { + yym589 := z.EncBinary() + _ = yym589 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq581[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("updatedReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym590 := z.EncBinary() + _ = yym590 + if false { + } else { + r.EncodeInt(int64(x.UpdatedReplicas)) + } + } + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq581[3] { + yym592 := z.EncBinary() + _ = yym592 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq581[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("availableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym593 := z.EncBinary() + _ = yym593 + if false { + } else { + r.EncodeInt(int64(x.AvailableReplicas)) + } + } + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq581[4] { + yym595 := z.EncBinary() + _ = yym595 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq581[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("unavailableReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym596 := z.EncBinary() + _ = yym596 + if false { + } else { + r.EncodeInt(int64(x.UnavailableReplicas)) + } + } + } + if yyr581 || yy2arr581 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym597 := z.DecBinary() + _ = yym597 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct598 := r.ContainerType() + if yyct598 == codecSelferValueTypeMap1234 { + yyl598 := r.ReadMapStart() + if yyl598 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl598, d) + } + } else if yyct598 == codecSelferValueTypeArray1234 { + yyl598 := r.ReadArrayStart() + if yyl598 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl598, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys599Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys599Slc + var yyhl599 bool = l >= 0 + for yyj599 := 0; ; yyj599++ { + if yyhl599 { + if yyj599 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys599Slc = r.DecodeBytes(yys599Slc, true, true) + yys599 := string(yys599Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys599 { + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "updatedReplicas": + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + x.UpdatedReplicas = int32(r.DecodeInt(32)) + } + case "availableReplicas": + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + x.AvailableReplicas = int32(r.DecodeInt(32)) + } + case "unavailableReplicas": + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + x.UnavailableReplicas = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys599) + } // end switch yys599 + } // end for yyj599 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj605 int + var yyb605 bool + var yyhl605 bool = l >= 0 + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UpdatedReplicas = 0 + } else { + x.UpdatedReplicas = int32(r.DecodeInt(32)) + } + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AvailableReplicas = 0 + } else { + x.AvailableReplicas = int32(r.DecodeInt(32)) + } + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.UnavailableReplicas = 0 + } else { + x.UnavailableReplicas = int32(r.DecodeInt(32)) + } + for { + yyj605++ + if yyhl605 { + yyb605 = yyj605 > l + } else { + yyb605 = r.CheckBreak() + } + if yyb605 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj605-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DeploymentList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym611 := z.EncBinary() + _ = yym611 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep612 := !z.EncBinary() + yy2arr612 := z.EncBasicHandle().StructToArray + var yyq612 [4]bool + _, _, _ = yysep612, yyq612, yy2arr612 + const yyr612 bool = false + yyq612[0] = x.Kind != "" + yyq612[1] = x.APIVersion != "" + yyq612[2] = true + var yynn612 int + if yyr612 || yy2arr612 { + r.EncodeArrayStart(4) + } else { + yynn612 = 1 + for _, b := range yyq612 { + if b { + yynn612++ + } + } + r.EncodeMapStart(yynn612) + yynn612 = 0 + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq612[0] { + yym614 := z.EncBinary() + _ = yym614 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq612[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym615 := z.EncBinary() + _ = yym615 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq612[1] { + yym617 := z.EncBinary() + _ = yym617 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq612[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym618 := z.EncBinary() + _ = yym618 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq612[2] { + yy620 := &x.ListMeta + yym621 := z.EncBinary() + _ = yym621 + if false { + } else if z.HasExtensions() && z.EncExt(yy620) { + } else { + z.EncFallback(yy620) + } + } else { + r.EncodeNil() + } + } else { + if yyq612[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy622 := &x.ListMeta + yym623 := z.EncBinary() + _ = yym623 + if false { + } else if z.HasExtensions() && z.EncExt(yy622) { + } else { + z.EncFallback(yy622) + } + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym625 := z.EncBinary() + _ = yym625 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym626 := z.EncBinary() + _ = yym626 + if false { + } else { + h.encSliceDeployment(([]Deployment)(x.Items), e) + } + } + } + if yyr612 || yy2arr612 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DeploymentList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym627 := z.DecBinary() + _ = yym627 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct628 := r.ContainerType() + if yyct628 == codecSelferValueTypeMap1234 { + yyl628 := r.ReadMapStart() + if yyl628 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl628, d) + } + } else if yyct628 == codecSelferValueTypeArray1234 { + yyl628 := r.ReadArrayStart() + if yyl628 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl628, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DeploymentList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys629Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys629Slc + var yyhl629 bool = l >= 0 + for yyj629 := 0; ; yyj629++ { + if yyhl629 { + if yyj629 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys629Slc = r.DecodeBytes(yys629Slc, true, true) + yys629 := string(yys629Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys629 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv632 := &x.ListMeta + yym633 := z.DecBinary() + _ = yym633 + if false { + } else if z.HasExtensions() && z.DecExt(yyv632) { + } else { + z.DecFallback(yyv632, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv634 := &x.Items + yym635 := z.DecBinary() + _ = yym635 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv634), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys629) + } // end switch yys629 + } // end for yyj629 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DeploymentList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj636 int + var yyb636 bool + var yyhl636 bool = l >= 0 + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv639 := &x.ListMeta + yym640 := z.DecBinary() + _ = yym640 + if false { + } else if z.HasExtensions() && z.DecExt(yyv639) { + } else { + z.DecFallback(yyv639, false) + } + } + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv641 := &x.Items + yym642 := z.DecBinary() + _ = yym642 + if false { + } else { + h.decSliceDeployment((*[]Deployment)(yyv641), d) + } + } + for { + yyj636++ + if yyhl636 { + yyb636 = yyj636 > l + } else { + yyb636 = r.CheckBreak() + } + if yyb636 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj636-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym643 := z.EncBinary() + _ = yym643 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep644 := !z.EncBinary() + yy2arr644 := z.EncBasicHandle().StructToArray + var yyq644 [2]bool + _, _, _ = yysep644, yyq644, yy2arr644 + const yyr644 bool = false + yyq644[0] = x.Selector != nil + var yynn644 int + if yyr644 || yy2arr644 { + r.EncodeArrayStart(2) + } else { + yynn644 = 1 + for _, b := range yyq644 { + if b { + yynn644++ + } + } + r.EncodeMapStart(yynn644) + yynn644 = 0 + } + if yyr644 || yy2arr644 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq644[0] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq644[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr644 || yy2arr644 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy647 := &x.Template + yy647.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy648 := &x.Template + yy648.CodecEncodeSelf(e) + } + if yyr644 || yy2arr644 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym649 := z.DecBinary() + _ = yym649 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct650 := r.ContainerType() + if yyct650 == codecSelferValueTypeMap1234 { + yyl650 := r.ReadMapStart() + if yyl650 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl650, d) + } + } else if yyct650 == codecSelferValueTypeArray1234 { + yyl650 := r.ReadArrayStart() + if yyl650 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl650, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys651Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys651Slc + var yyhl651 bool = l >= 0 + for yyj651 := 0; ; yyj651++ { + if yyhl651 { + if yyj651 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys651Slc = r.DecodeBytes(yys651Slc, true, true) + yys651 := string(yys651Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys651 { + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv653 := &x.Template + yyv653.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys651) + } // end switch yys651 + } // end for yyj651 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj654 int + var yyb654 bool + var yyhl654 bool = l >= 0 + yyj654++ + if yyhl654 { + yyb654 = yyj654 > l + } else { + yyb654 = r.CheckBreak() + } + if yyb654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj654++ + if yyhl654 { + yyb654 = yyj654 > l + } else { + yyb654 = r.CheckBreak() + } + if yyb654 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv656 := &x.Template + yyv656.CodecDecodeSelf(d) + } + for { + yyj654++ + if yyhl654 { + yyb654 = yyj654 > l + } else { + yyb654 = r.CheckBreak() + } + if yyb654 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj654-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym657 := z.EncBinary() + _ = yym657 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep658 := !z.EncBinary() + yy2arr658 := z.EncBasicHandle().StructToArray + var yyq658 [3]bool + _, _, _ = yysep658, yyq658, yy2arr658 + const yyr658 bool = false + var yynn658 int + if yyr658 || yy2arr658 { + r.EncodeArrayStart(3) + } else { + yynn658 = 3 + for _, b := range yyq658 { + if b { + yynn658++ + } + } + r.EncodeMapStart(yynn658) + yynn658 = 0 + } + if yyr658 || yy2arr658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym660 := z.EncBinary() + _ = yym660 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym661 := z.EncBinary() + _ = yym661 + if false { + } else { + r.EncodeInt(int64(x.CurrentNumberScheduled)) + } + } + if yyr658 || yy2arr658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym663 := z.EncBinary() + _ = yym663 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("numberMisscheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym664 := z.EncBinary() + _ = yym664 + if false { + } else { + r.EncodeInt(int64(x.NumberMisscheduled)) + } + } + if yyr658 || yy2arr658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym666 := z.EncBinary() + _ = yym666 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredNumberScheduled")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym667 := z.EncBinary() + _ = yym667 + if false { + } else { + r.EncodeInt(int64(x.DesiredNumberScheduled)) + } + } + if yyr658 || yy2arr658 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym668 := z.DecBinary() + _ = yym668 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct669 := r.ContainerType() + if yyct669 == codecSelferValueTypeMap1234 { + yyl669 := r.ReadMapStart() + if yyl669 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl669, d) + } + } else if yyct669 == codecSelferValueTypeArray1234 { + yyl669 := r.ReadArrayStart() + if yyl669 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl669, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys670Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys670Slc + var yyhl670 bool = l >= 0 + for yyj670 := 0; ; yyj670++ { + if yyhl670 { + if yyj670 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys670Slc = r.DecodeBytes(yys670Slc, true, true) + yys670 := string(yys670Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys670 { + case "currentNumberScheduled": + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + x.CurrentNumberScheduled = int32(r.DecodeInt(32)) + } + case "numberMisscheduled": + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + x.NumberMisscheduled = int32(r.DecodeInt(32)) + } + case "desiredNumberScheduled": + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + x.DesiredNumberScheduled = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys670) + } // end switch yys670 + } // end for yyj670 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj674 int + var yyb674 bool + var yyhl674 bool = l >= 0 + yyj674++ + if yyhl674 { + yyb674 = yyj674 > l + } else { + yyb674 = r.CheckBreak() + } + if yyb674 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentNumberScheduled = 0 + } else { + x.CurrentNumberScheduled = int32(r.DecodeInt(32)) + } + yyj674++ + if yyhl674 { + yyb674 = yyj674 > l + } else { + yyb674 = r.CheckBreak() + } + if yyb674 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NumberMisscheduled = 0 + } else { + x.NumberMisscheduled = int32(r.DecodeInt(32)) + } + yyj674++ + if yyhl674 { + yyb674 = yyj674 > l + } else { + yyb674 = r.CheckBreak() + } + if yyb674 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredNumberScheduled = 0 + } else { + x.DesiredNumberScheduled = int32(r.DecodeInt(32)) + } + for { + yyj674++ + if yyhl674 { + yyb674 = yyj674 > l + } else { + yyb674 = r.CheckBreak() + } + if yyb674 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj674-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym678 := z.EncBinary() + _ = yym678 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep679 := !z.EncBinary() + yy2arr679 := z.EncBasicHandle().StructToArray + var yyq679 [5]bool + _, _, _ = yysep679, yyq679, yy2arr679 + const yyr679 bool = false + yyq679[0] = x.Kind != "" + yyq679[1] = x.APIVersion != "" + yyq679[2] = true + yyq679[3] = true + yyq679[4] = true + var yynn679 int + if yyr679 || yy2arr679 { + r.EncodeArrayStart(5) + } else { + yynn679 = 0 + for _, b := range yyq679 { + if b { + yynn679++ + } + } + r.EncodeMapStart(yynn679) + yynn679 = 0 + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[0] { + yym681 := z.EncBinary() + _ = yym681 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq679[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym682 := z.EncBinary() + _ = yym682 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[1] { + yym684 := z.EncBinary() + _ = yym684 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq679[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym685 := z.EncBinary() + _ = yym685 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[2] { + yy687 := &x.ObjectMeta + yy687.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq679[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy688 := &x.ObjectMeta + yy688.CodecEncodeSelf(e) + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[3] { + yy690 := &x.Spec + yy690.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq679[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy691 := &x.Spec + yy691.CodecEncodeSelf(e) + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq679[4] { + yy693 := &x.Status + yy693.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq679[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy694 := &x.Status + yy694.CodecEncodeSelf(e) + } + } + if yyr679 || yy2arr679 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym695 := z.DecBinary() + _ = yym695 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct696 := r.ContainerType() + if yyct696 == codecSelferValueTypeMap1234 { + yyl696 := r.ReadMapStart() + if yyl696 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl696, d) + } + } else if yyct696 == codecSelferValueTypeArray1234 { + yyl696 := r.ReadArrayStart() + if yyl696 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl696, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys697Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys697Slc + var yyhl697 bool = l >= 0 + for yyj697 := 0; ; yyj697++ { + if yyhl697 { + if yyj697 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys697Slc = r.DecodeBytes(yys697Slc, true, true) + yys697 := string(yys697Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys697 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv700 := &x.ObjectMeta + yyv700.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv701 := &x.Spec + yyv701.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv702 := &x.Status + yyv702.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys697) + } // end switch yys697 + } // end for yyj697 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj703 int + var yyb703 bool + var yyhl703 bool = l >= 0 + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv706 := &x.ObjectMeta + yyv706.CodecDecodeSelf(d) + } + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = DaemonSetSpec{} + } else { + yyv707 := &x.Spec + yyv707.CodecDecodeSelf(d) + } + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = DaemonSetStatus{} + } else { + yyv708 := &x.Status + yyv708.CodecDecodeSelf(d) + } + for { + yyj703++ + if yyhl703 { + yyb703 = yyj703 > l + } else { + yyb703 = r.CheckBreak() + } + if yyb703 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj703-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *DaemonSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym709 := z.EncBinary() + _ = yym709 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep710 := !z.EncBinary() + yy2arr710 := z.EncBasicHandle().StructToArray + var yyq710 [4]bool + _, _, _ = yysep710, yyq710, yy2arr710 + const yyr710 bool = false + yyq710[0] = x.Kind != "" + yyq710[1] = x.APIVersion != "" + yyq710[2] = true + var yynn710 int + if yyr710 || yy2arr710 { + r.EncodeArrayStart(4) + } else { + yynn710 = 1 + for _, b := range yyq710 { + if b { + yynn710++ + } + } + r.EncodeMapStart(yynn710) + yynn710 = 0 + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[0] { + yym712 := z.EncBinary() + _ = yym712 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq710[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym713 := z.EncBinary() + _ = yym713 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[1] { + yym715 := z.EncBinary() + _ = yym715 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq710[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym716 := z.EncBinary() + _ = yym716 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq710[2] { + yy718 := &x.ListMeta + yym719 := z.EncBinary() + _ = yym719 + if false { + } else if z.HasExtensions() && z.EncExt(yy718) { + } else { + z.EncFallback(yy718) + } + } else { + r.EncodeNil() + } + } else { + if yyq710[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy720 := &x.ListMeta + yym721 := z.EncBinary() + _ = yym721 + if false { + } else if z.HasExtensions() && z.EncExt(yy720) { + } else { + z.EncFallback(yy720) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym723 := z.EncBinary() + _ = yym723 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym724 := z.EncBinary() + _ = yym724 + if false { + } else { + h.encSliceDaemonSet(([]DaemonSet)(x.Items), e) + } + } + } + if yyr710 || yy2arr710 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *DaemonSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym725 := z.DecBinary() + _ = yym725 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct726 := r.ContainerType() + if yyct726 == codecSelferValueTypeMap1234 { + yyl726 := r.ReadMapStart() + if yyl726 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl726, d) + } + } else if yyct726 == codecSelferValueTypeArray1234 { + yyl726 := r.ReadArrayStart() + if yyl726 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl726, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *DaemonSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys727Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys727Slc + var yyhl727 bool = l >= 0 + for yyj727 := 0; ; yyj727++ { + if yyhl727 { + if yyj727 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys727Slc = r.DecodeBytes(yys727Slc, true, true) + yys727 := string(yys727Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys727 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv730 := &x.ListMeta + yym731 := z.DecBinary() + _ = yym731 + if false { + } else if z.HasExtensions() && z.DecExt(yyv730) { + } else { + z.DecFallback(yyv730, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv732 := &x.Items + yym733 := z.DecBinary() + _ = yym733 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv732), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys727) + } // end switch yys727 + } // end for yyj727 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *DaemonSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj734 int + var yyb734 bool + var yyhl734 bool = l >= 0 + yyj734++ + if yyhl734 { + yyb734 = yyj734 > l + } else { + yyb734 = r.CheckBreak() + } + if yyb734 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj734++ + if yyhl734 { + yyb734 = yyj734 > l + } else { + yyb734 = r.CheckBreak() + } + if yyb734 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj734++ + if yyhl734 { + yyb734 = yyj734 > l + } else { + yyb734 = r.CheckBreak() + } + if yyb734 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv737 := &x.ListMeta + yym738 := z.DecBinary() + _ = yym738 + if false { + } else if z.HasExtensions() && z.DecExt(yyv737) { + } else { + z.DecFallback(yyv737, false) + } + } + yyj734++ + if yyhl734 { + yyb734 = yyj734 > l + } else { + yyb734 = r.CheckBreak() + } + if yyb734 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv739 := &x.Items + yym740 := z.DecBinary() + _ = yym740 + if false { + } else { + h.decSliceDaemonSet((*[]DaemonSet)(yyv739), d) + } + } + for { + yyj734++ + if yyhl734 { + yyb734 = yyj734 > l + } else { + yyb734 = r.CheckBreak() + } + if yyb734 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj734-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ThirdPartyResourceDataList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym741 := z.EncBinary() + _ = yym741 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep742 := !z.EncBinary() + yy2arr742 := z.EncBasicHandle().StructToArray + var yyq742 [4]bool + _, _, _ = yysep742, yyq742, yy2arr742 + const yyr742 bool = false + yyq742[0] = x.Kind != "" + yyq742[1] = x.APIVersion != "" + yyq742[2] = true + var yynn742 int + if yyr742 || yy2arr742 { + r.EncodeArrayStart(4) + } else { + yynn742 = 1 + for _, b := range yyq742 { + if b { + yynn742++ + } + } + r.EncodeMapStart(yynn742) + yynn742 = 0 + } + if yyr742 || yy2arr742 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq742[0] { + yym744 := z.EncBinary() + _ = yym744 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq742[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym745 := z.EncBinary() + _ = yym745 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr742 || yy2arr742 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq742[1] { + yym747 := z.EncBinary() + _ = yym747 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq742[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym748 := z.EncBinary() + _ = yym748 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr742 || yy2arr742 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq742[2] { + yy750 := &x.ListMeta + yym751 := z.EncBinary() + _ = yym751 + if false { + } else if z.HasExtensions() && z.EncExt(yy750) { + } else { + z.EncFallback(yy750) + } + } else { + r.EncodeNil() + } + } else { + if yyq742[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy752 := &x.ListMeta + yym753 := z.EncBinary() + _ = yym753 + if false { + } else if z.HasExtensions() && z.EncExt(yy752) { + } else { + z.EncFallback(yy752) + } + } + } + if yyr742 || yy2arr742 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym755 := z.EncBinary() + _ = yym755 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym756 := z.EncBinary() + _ = yym756 + if false { + } else { + h.encSliceThirdPartyResourceData(([]ThirdPartyResourceData)(x.Items), e) + } + } + } + if yyr742 || yy2arr742 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ThirdPartyResourceDataList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym757 := z.DecBinary() + _ = yym757 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct758 := r.ContainerType() + if yyct758 == codecSelferValueTypeMap1234 { + yyl758 := r.ReadMapStart() + if yyl758 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl758, d) + } + } else if yyct758 == codecSelferValueTypeArray1234 { + yyl758 := r.ReadArrayStart() + if yyl758 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl758, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys759Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys759Slc + var yyhl759 bool = l >= 0 + for yyj759 := 0; ; yyj759++ { + if yyhl759 { + if yyj759 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys759Slc = r.DecodeBytes(yys759Slc, true, true) + yys759 := string(yys759Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys759 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv762 := &x.ListMeta + yym763 := z.DecBinary() + _ = yym763 + if false { + } else if z.HasExtensions() && z.DecExt(yyv762) { + } else { + z.DecFallback(yyv762, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv764 := &x.Items + yym765 := z.DecBinary() + _ = yym765 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv764), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys759) + } // end switch yys759 + } // end for yyj759 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ThirdPartyResourceDataList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj766 int + var yyb766 bool + var yyhl766 bool = l >= 0 + yyj766++ + if yyhl766 { + yyb766 = yyj766 > l + } else { + yyb766 = r.CheckBreak() + } + if yyb766 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj766++ + if yyhl766 { + yyb766 = yyj766 > l + } else { + yyb766 = r.CheckBreak() + } + if yyb766 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj766++ + if yyhl766 { + yyb766 = yyj766 > l + } else { + yyb766 = r.CheckBreak() + } + if yyb766 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv769 := &x.ListMeta + yym770 := z.DecBinary() + _ = yym770 + if false { + } else if z.HasExtensions() && z.DecExt(yyv769) { + } else { + z.DecFallback(yyv769, false) + } + } + yyj766++ + if yyhl766 { + yyb766 = yyj766 > l + } else { + yyb766 = r.CheckBreak() + } + if yyb766 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv771 := &x.Items + yym772 := z.DecBinary() + _ = yym772 + if false { + } else { + h.decSliceThirdPartyResourceData((*[]ThirdPartyResourceData)(yyv771), d) + } + } + for { + yyj766++ + if yyhl766 { + yyb766 = yyj766 > l + } else { + yyb766 = r.CheckBreak() + } + if yyb766 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj766-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Job) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym773 := z.EncBinary() + _ = yym773 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep774 := !z.EncBinary() + yy2arr774 := z.EncBasicHandle().StructToArray + var yyq774 [5]bool + _, _, _ = yysep774, yyq774, yy2arr774 + const yyr774 bool = false + yyq774[0] = x.Kind != "" + yyq774[1] = x.APIVersion != "" + yyq774[2] = true + yyq774[3] = true + yyq774[4] = true + var yynn774 int + if yyr774 || yy2arr774 { + r.EncodeArrayStart(5) + } else { + yynn774 = 0 + for _, b := range yyq774 { + if b { + yynn774++ + } + } + r.EncodeMapStart(yynn774) + yynn774 = 0 + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq774[0] { + yym776 := z.EncBinary() + _ = yym776 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq774[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym777 := z.EncBinary() + _ = yym777 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq774[1] { + yym779 := z.EncBinary() + _ = yym779 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq774[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym780 := z.EncBinary() + _ = yym780 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq774[2] { + yy782 := &x.ObjectMeta + yy782.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq774[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy783 := &x.ObjectMeta + yy783.CodecEncodeSelf(e) + } + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq774[3] { + yy785 := &x.Spec + yy785.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq774[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy786 := &x.Spec + yy786.CodecEncodeSelf(e) + } + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq774[4] { + yy788 := &x.Status + yy788.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq774[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy789 := &x.Status + yy789.CodecEncodeSelf(e) + } + } + if yyr774 || yy2arr774 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Job) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym790 := z.DecBinary() + _ = yym790 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct791 := r.ContainerType() + if yyct791 == codecSelferValueTypeMap1234 { + yyl791 := r.ReadMapStart() + if yyl791 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl791, d) + } + } else if yyct791 == codecSelferValueTypeArray1234 { + yyl791 := r.ReadArrayStart() + if yyl791 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl791, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Job) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys792Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys792Slc + var yyhl792 bool = l >= 0 + for yyj792 := 0; ; yyj792++ { + if yyhl792 { + if yyj792 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys792Slc = r.DecodeBytes(yys792Slc, true, true) + yys792 := string(yys792Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys792 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv795 := &x.ObjectMeta + yyv795.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv796 := &x.Spec + yyv796.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv797 := &x.Status + yyv797.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys792) + } // end switch yys792 + } // end for yyj792 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Job) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj798 int + var yyb798 bool + var yyhl798 bool = l >= 0 + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv801 := &x.ObjectMeta + yyv801.CodecDecodeSelf(d) + } + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = JobSpec{} + } else { + yyv802 := &x.Spec + yyv802.CodecDecodeSelf(d) + } + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = JobStatus{} + } else { + yyv803 := &x.Status + yyv803.CodecDecodeSelf(d) + } + for { + yyj798++ + if yyhl798 { + yyb798 = yyj798 > l + } else { + yyb798 = r.CheckBreak() + } + if yyb798 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj798-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym804 := z.EncBinary() + _ = yym804 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep805 := !z.EncBinary() + yy2arr805 := z.EncBasicHandle().StructToArray + var yyq805 [4]bool + _, _, _ = yysep805, yyq805, yy2arr805 + const yyr805 bool = false + yyq805[0] = x.Kind != "" + yyq805[1] = x.APIVersion != "" + yyq805[2] = true + var yynn805 int + if yyr805 || yy2arr805 { + r.EncodeArrayStart(4) + } else { + yynn805 = 1 + for _, b := range yyq805 { + if b { + yynn805++ + } + } + r.EncodeMapStart(yynn805) + yynn805 = 0 + } + if yyr805 || yy2arr805 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq805[0] { + yym807 := z.EncBinary() + _ = yym807 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq805[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym808 := z.EncBinary() + _ = yym808 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr805 || yy2arr805 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq805[1] { + yym810 := z.EncBinary() + _ = yym810 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq805[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym811 := z.EncBinary() + _ = yym811 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr805 || yy2arr805 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq805[2] { + yy813 := &x.ListMeta + yym814 := z.EncBinary() + _ = yym814 + if false { + } else if z.HasExtensions() && z.EncExt(yy813) { + } else { + z.EncFallback(yy813) + } + } else { + r.EncodeNil() + } + } else { + if yyq805[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy815 := &x.ListMeta + yym816 := z.EncBinary() + _ = yym816 + if false { + } else if z.HasExtensions() && z.EncExt(yy815) { + } else { + z.EncFallback(yy815) + } + } + } + if yyr805 || yy2arr805 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym818 := z.EncBinary() + _ = yym818 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym819 := z.EncBinary() + _ = yym819 + if false { + } else { + h.encSliceJob(([]Job)(x.Items), e) + } + } + } + if yyr805 || yy2arr805 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym820 := z.DecBinary() + _ = yym820 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct821 := r.ContainerType() + if yyct821 == codecSelferValueTypeMap1234 { + yyl821 := r.ReadMapStart() + if yyl821 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl821, d) + } + } else if yyct821 == codecSelferValueTypeArray1234 { + yyl821 := r.ReadArrayStart() + if yyl821 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl821, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys822Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys822Slc + var yyhl822 bool = l >= 0 + for yyj822 := 0; ; yyj822++ { + if yyhl822 { + if yyj822 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys822Slc = r.DecodeBytes(yys822Slc, true, true) + yys822 := string(yys822Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys822 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv825 := &x.ListMeta + yym826 := z.DecBinary() + _ = yym826 + if false { + } else if z.HasExtensions() && z.DecExt(yyv825) { + } else { + z.DecFallback(yyv825, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv827 := &x.Items + yym828 := z.DecBinary() + _ = yym828 + if false { + } else { + h.decSliceJob((*[]Job)(yyv827), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys822) + } // end switch yys822 + } // end for yyj822 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj829 int + var yyb829 bool + var yyhl829 bool = l >= 0 + yyj829++ + if yyhl829 { + yyb829 = yyj829 > l + } else { + yyb829 = r.CheckBreak() + } + if yyb829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj829++ + if yyhl829 { + yyb829 = yyj829 > l + } else { + yyb829 = r.CheckBreak() + } + if yyb829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj829++ + if yyhl829 { + yyb829 = yyj829 > l + } else { + yyb829 = r.CheckBreak() + } + if yyb829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv832 := &x.ListMeta + yym833 := z.DecBinary() + _ = yym833 + if false { + } else if z.HasExtensions() && z.DecExt(yyv832) { + } else { + z.DecFallback(yyv832, false) + } + } + yyj829++ + if yyhl829 { + yyb829 = yyj829 > l + } else { + yyb829 = r.CheckBreak() + } + if yyb829 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv834 := &x.Items + yym835 := z.DecBinary() + _ = yym835 + if false { + } else { + h.decSliceJob((*[]Job)(yyv834), d) + } + } + for { + yyj829++ + if yyhl829 { + yyb829 = yyj829 > l + } else { + yyb829 = r.CheckBreak() + } + if yyb829 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj829-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym836 := z.EncBinary() + _ = yym836 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep837 := !z.EncBinary() + yy2arr837 := z.EncBasicHandle().StructToArray + var yyq837 [6]bool + _, _, _ = yysep837, yyq837, yy2arr837 + const yyr837 bool = false + yyq837[0] = x.Parallelism != nil + yyq837[1] = x.Completions != nil + yyq837[2] = x.ActiveDeadlineSeconds != nil + yyq837[3] = x.Selector != nil + yyq837[4] = x.AutoSelector != nil + var yynn837 int + if yyr837 || yy2arr837 { + r.EncodeArrayStart(6) + } else { + yynn837 = 1 + for _, b := range yyq837 { + if b { + yynn837++ + } + } + r.EncodeMapStart(yynn837) + yynn837 = 0 + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq837[0] { + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy839 := *x.Parallelism + yym840 := z.EncBinary() + _ = yym840 + if false { + } else { + r.EncodeInt(int64(yy839)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq837[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parallelism")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parallelism == nil { + r.EncodeNil() + } else { + yy841 := *x.Parallelism + yym842 := z.EncBinary() + _ = yym842 + if false { + } else { + r.EncodeInt(int64(yy841)) + } + } + } + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq837[1] { + if x.Completions == nil { + r.EncodeNil() + } else { + yy844 := *x.Completions + yym845 := z.EncBinary() + _ = yym845 + if false { + } else { + r.EncodeInt(int64(yy844)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq837[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Completions == nil { + r.EncodeNil() + } else { + yy846 := *x.Completions + yym847 := z.EncBinary() + _ = yym847 + if false { + } else { + r.EncodeInt(int64(yy846)) + } + } + } + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq837[2] { + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy849 := *x.ActiveDeadlineSeconds + yym850 := z.EncBinary() + _ = yym850 + if false { + } else { + r.EncodeInt(int64(yy849)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq837[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("activeDeadlineSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ActiveDeadlineSeconds == nil { + r.EncodeNil() + } else { + yy851 := *x.ActiveDeadlineSeconds + yym852 := z.EncBinary() + _ = yym852 + if false { + } else { + r.EncodeInt(int64(yy851)) + } + } + } + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq837[3] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq837[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq837[4] { + if x.AutoSelector == nil { + r.EncodeNil() + } else { + yy855 := *x.AutoSelector + yym856 := z.EncBinary() + _ = yym856 + if false { + } else { + r.EncodeBool(bool(yy855)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq837[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("autoSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AutoSelector == nil { + r.EncodeNil() + } else { + yy857 := *x.AutoSelector + yym858 := z.EncBinary() + _ = yym858 + if false { + } else { + r.EncodeBool(bool(yy857)) + } + } + } + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy860 := &x.Template + yy860.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy861 := &x.Template + yy861.CodecEncodeSelf(e) + } + if yyr837 || yy2arr837 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym862 := z.DecBinary() + _ = yym862 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct863 := r.ContainerType() + if yyct863 == codecSelferValueTypeMap1234 { + yyl863 := r.ReadMapStart() + if yyl863 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl863, d) + } + } else if yyct863 == codecSelferValueTypeArray1234 { + yyl863 := r.ReadArrayStart() + if yyl863 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl863, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys864Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys864Slc + var yyhl864 bool = l >= 0 + for yyj864 := 0; ; yyj864++ { + if yyhl864 { + if yyj864 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys864Slc = r.DecodeBytes(yys864Slc, true, true) + yys864 := string(yys864Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys864 { + case "parallelism": + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym866 := z.DecBinary() + _ = yym866 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + case "completions": + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym868 := z.DecBinary() + _ = yym868 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + case "activeDeadlineSeconds": + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym870 := z.DecBinary() + _ = yym870 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "autoSelector": + if r.TryDecodeAsNil() { + if x.AutoSelector != nil { + x.AutoSelector = nil + } + } else { + if x.AutoSelector == nil { + x.AutoSelector = new(bool) + } + yym873 := z.DecBinary() + _ = yym873 + if false { + } else { + *((*bool)(x.AutoSelector)) = r.DecodeBool() + } + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv874 := &x.Template + yyv874.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys864) + } // end switch yys864 + } // end for yyj864 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj875 int + var yyb875 bool + var yyhl875 bool = l >= 0 + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Parallelism != nil { + x.Parallelism = nil + } + } else { + if x.Parallelism == nil { + x.Parallelism = new(int32) + } + yym877 := z.DecBinary() + _ = yym877 + if false { + } else { + *((*int32)(x.Parallelism)) = int32(r.DecodeInt(32)) + } + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Completions != nil { + x.Completions = nil + } + } else { + if x.Completions == nil { + x.Completions = new(int32) + } + yym879 := z.DecBinary() + _ = yym879 + if false { + } else { + *((*int32)(x.Completions)) = int32(r.DecodeInt(32)) + } + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.ActiveDeadlineSeconds != nil { + x.ActiveDeadlineSeconds = nil + } + } else { + if x.ActiveDeadlineSeconds == nil { + x.ActiveDeadlineSeconds = new(int64) + } + yym881 := z.DecBinary() + _ = yym881 + if false { + } else { + *((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64)) + } + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.AutoSelector != nil { + x.AutoSelector = nil + } + } else { + if x.AutoSelector == nil { + x.AutoSelector = new(bool) + } + yym884 := z.DecBinary() + _ = yym884 + if false { + } else { + *((*bool)(x.AutoSelector)) = r.DecodeBool() + } + } + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv885 := &x.Template + yyv885.CodecDecodeSelf(d) + } + for { + yyj875++ + if yyhl875 { + yyb875 = yyj875 > l + } else { + yyb875 = r.CheckBreak() + } + if yyb875 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj875-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *JobStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym886 := z.EncBinary() + _ = yym886 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep887 := !z.EncBinary() + yy2arr887 := z.EncBasicHandle().StructToArray + var yyq887 [6]bool + _, _, _ = yysep887, yyq887, yy2arr887 + const yyr887 bool = false + yyq887[0] = len(x.Conditions) != 0 + yyq887[1] = x.StartTime != nil + yyq887[2] = x.CompletionTime != nil + yyq887[3] = x.Active != 0 + yyq887[4] = x.Succeeded != 0 + yyq887[5] = x.Failed != 0 + var yynn887 int + if yyr887 || yy2arr887 { + r.EncodeArrayStart(6) + } else { + yynn887 = 0 + for _, b := range yyq887 { + if b { + yynn887++ + } + } + r.EncodeMapStart(yynn887) + yynn887 = 0 + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[0] { + if x.Conditions == nil { + r.EncodeNil() + } else { + yym889 := z.EncBinary() + _ = yym889 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq887[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("conditions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Conditions == nil { + r.EncodeNil() + } else { + yym890 := z.EncBinary() + _ = yym890 + if false { + } else { + h.encSliceJobCondition(([]JobCondition)(x.Conditions), e) + } + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[1] { + if x.StartTime == nil { + r.EncodeNil() + } else { + yym892 := z.EncBinary() + _ = yym892 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym892 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym892 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq887[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("startTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.StartTime == nil { + r.EncodeNil() + } else { + yym893 := z.EncBinary() + _ = yym893 + if false { + } else if z.HasExtensions() && z.EncExt(x.StartTime) { + } else if yym893 { + z.EncBinaryMarshal(x.StartTime) + } else if !yym893 && z.IsJSONHandle() { + z.EncJSONMarshal(x.StartTime) + } else { + z.EncFallback(x.StartTime) + } + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[2] { + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym895 := z.EncBinary() + _ = yym895 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym895 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym895 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq887[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("completionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.CompletionTime == nil { + r.EncodeNil() + } else { + yym896 := z.EncBinary() + _ = yym896 + if false { + } else if z.HasExtensions() && z.EncExt(x.CompletionTime) { + } else if yym896 { + z.EncBinaryMarshal(x.CompletionTime) + } else if !yym896 && z.IsJSONHandle() { + z.EncJSONMarshal(x.CompletionTime) + } else { + z.EncFallback(x.CompletionTime) + } + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[3] { + yym898 := z.EncBinary() + _ = yym898 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq887[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("active")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym899 := z.EncBinary() + _ = yym899 + if false { + } else { + r.EncodeInt(int64(x.Active)) + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[4] { + yym901 := z.EncBinary() + _ = yym901 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq887[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("succeeded")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym902 := z.EncBinary() + _ = yym902 + if false { + } else { + r.EncodeInt(int64(x.Succeeded)) + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq887[5] { + yym904 := z.EncBinary() + _ = yym904 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq887[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("failed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym905 := z.EncBinary() + _ = yym905 + if false { + } else { + r.EncodeInt(int64(x.Failed)) + } + } + } + if yyr887 || yy2arr887 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym906 := z.DecBinary() + _ = yym906 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct907 := r.ContainerType() + if yyct907 == codecSelferValueTypeMap1234 { + yyl907 := r.ReadMapStart() + if yyl907 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl907, d) + } + } else if yyct907 == codecSelferValueTypeArray1234 { + yyl907 := r.ReadArrayStart() + if yyl907 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl907, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys908Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys908Slc + var yyhl908 bool = l >= 0 + for yyj908 := 0; ; yyj908++ { + if yyhl908 { + if yyj908 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys908Slc = r.DecodeBytes(yys908Slc, true, true) + yys908 := string(yys908Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys908 { + case "conditions": + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv909 := &x.Conditions + yym910 := z.DecBinary() + _ = yym910 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv909), d) + } + } + case "startTime": + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym912 := z.DecBinary() + _ = yym912 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym912 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym912 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + case "completionTime": + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym914 := z.DecBinary() + _ = yym914 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym914 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym914 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + case "active": + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + case "succeeded": + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + case "failed": + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys908) + } // end switch yys908 + } // end for yyj908 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj918 int + var yyb918 bool + var yyhl918 bool = l >= 0 + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Conditions = nil + } else { + yyv919 := &x.Conditions + yym920 := z.DecBinary() + _ = yym920 + if false { + } else { + h.decSliceJobCondition((*[]JobCondition)(yyv919), d) + } + } + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.StartTime != nil { + x.StartTime = nil + } + } else { + if x.StartTime == nil { + x.StartTime = new(pkg1_unversioned.Time) + } + yym922 := z.DecBinary() + _ = yym922 + if false { + } else if z.HasExtensions() && z.DecExt(x.StartTime) { + } else if yym922 { + z.DecBinaryUnmarshal(x.StartTime) + } else if !yym922 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.StartTime) + } else { + z.DecFallback(x.StartTime, false) + } + } + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.CompletionTime != nil { + x.CompletionTime = nil + } + } else { + if x.CompletionTime == nil { + x.CompletionTime = new(pkg1_unversioned.Time) + } + yym924 := z.DecBinary() + _ = yym924 + if false { + } else if z.HasExtensions() && z.DecExt(x.CompletionTime) { + } else if yym924 { + z.DecBinaryUnmarshal(x.CompletionTime) + } else if !yym924 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.CompletionTime) + } else { + z.DecFallback(x.CompletionTime, false) + } + } + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Active = 0 + } else { + x.Active = int32(r.DecodeInt(32)) + } + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Succeeded = 0 + } else { + x.Succeeded = int32(r.DecodeInt(32)) + } + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Failed = 0 + } else { + x.Failed = int32(r.DecodeInt(32)) + } + for { + yyj918++ + if yyhl918 { + yyb918 = yyj918 > l + } else { + yyb918 = r.CheckBreak() + } + if yyb918 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj918-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x JobConditionType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym928 := z.EncBinary() + _ = yym928 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *JobConditionType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym929 := z.DecBinary() + _ = yym929 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *JobCondition) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym930 := z.EncBinary() + _ = yym930 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep931 := !z.EncBinary() + yy2arr931 := z.EncBasicHandle().StructToArray + var yyq931 [6]bool + _, _, _ = yysep931, yyq931, yy2arr931 + const yyr931 bool = false + yyq931[2] = true + yyq931[3] = true + yyq931[4] = x.Reason != "" + yyq931[5] = x.Message != "" + var yynn931 int + if yyr931 || yy2arr931 { + r.EncodeArrayStart(6) + } else { + yynn931 = 2 + for _, b := range yyq931 { + if b { + yynn931++ + } + } + r.EncodeMapStart(yynn931) + yynn931 = 0 + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Type.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("type")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Type.CodecEncodeSelf(e) + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym934 := z.EncBinary() + _ = yym934 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym935 := z.EncBinary() + _ = yym935 + if false { + } else if z.HasExtensions() && z.EncExt(x.Status) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Status)) + } + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq931[2] { + yy937 := &x.LastProbeTime + yym938 := z.EncBinary() + _ = yym938 + if false { + } else if z.HasExtensions() && z.EncExt(yy937) { + } else if yym938 { + z.EncBinaryMarshal(yy937) + } else if !yym938 && z.IsJSONHandle() { + z.EncJSONMarshal(yy937) + } else { + z.EncFallback(yy937) + } + } else { + r.EncodeNil() + } + } else { + if yyq931[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastProbeTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy939 := &x.LastProbeTime + yym940 := z.EncBinary() + _ = yym940 + if false { + } else if z.HasExtensions() && z.EncExt(yy939) { + } else if yym940 { + z.EncBinaryMarshal(yy939) + } else if !yym940 && z.IsJSONHandle() { + z.EncJSONMarshal(yy939) + } else { + z.EncFallback(yy939) + } + } + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq931[3] { + yy942 := &x.LastTransitionTime + yym943 := z.EncBinary() + _ = yym943 + if false { + } else if z.HasExtensions() && z.EncExt(yy942) { + } else if yym943 { + z.EncBinaryMarshal(yy942) + } else if !yym943 && z.IsJSONHandle() { + z.EncJSONMarshal(yy942) + } else { + z.EncFallback(yy942) + } + } else { + r.EncodeNil() + } + } else { + if yyq931[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("lastTransitionTime")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy944 := &x.LastTransitionTime + yym945 := z.EncBinary() + _ = yym945 + if false { + } else if z.HasExtensions() && z.EncExt(yy944) { + } else if yym945 { + z.EncBinaryMarshal(yy944) + } else if !yym945 && z.IsJSONHandle() { + z.EncJSONMarshal(yy944) + } else { + z.EncFallback(yy944) + } + } + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq931[4] { + yym947 := z.EncBinary() + _ = yym947 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq931[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("reason")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym948 := z.EncBinary() + _ = yym948 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Reason)) + } + } + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq931[5] { + yym950 := z.EncBinary() + _ = yym950 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq931[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("message")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym951 := z.EncBinary() + _ = yym951 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Message)) + } + } + } + if yyr931 || yy2arr931 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *JobCondition) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym952 := z.DecBinary() + _ = yym952 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct953 := r.ContainerType() + if yyct953 == codecSelferValueTypeMap1234 { + yyl953 := r.ReadMapStart() + if yyl953 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl953, d) + } + } else if yyct953 == codecSelferValueTypeArray1234 { + yyl953 := r.ReadArrayStart() + if yyl953 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl953, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *JobCondition) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys954Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys954Slc + var yyhl954 bool = l >= 0 + for yyj954 := 0; ; yyj954++ { + if yyhl954 { + if yyj954 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys954Slc = r.DecodeBytes(yys954Slc, true, true) + yys954 := string(yys954Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys954 { + case "type": + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + case "lastProbeTime": + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv957 := &x.LastProbeTime + yym958 := z.DecBinary() + _ = yym958 + if false { + } else if z.HasExtensions() && z.DecExt(yyv957) { + } else if yym958 { + z.DecBinaryUnmarshal(yyv957) + } else if !yym958 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv957) + } else { + z.DecFallback(yyv957, false) + } + } + case "lastTransitionTime": + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv959 := &x.LastTransitionTime + yym960 := z.DecBinary() + _ = yym960 + if false { + } else if z.HasExtensions() && z.DecExt(yyv959) { + } else if yym960 { + z.DecBinaryUnmarshal(yyv959) + } else if !yym960 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv959) + } else { + z.DecFallback(yyv959, false) + } + } + case "reason": + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + case "message": + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys954) + } // end switch yys954 + } // end for yyj954 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *JobCondition) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj963 int + var yyb963 bool + var yyhl963 bool = l >= 0 + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Type = "" + } else { + x.Type = JobConditionType(r.DecodeString()) + } + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = "" + } else { + x.Status = pkg2_v1.ConditionStatus(r.DecodeString()) + } + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastProbeTime = pkg1_unversioned.Time{} + } else { + yyv966 := &x.LastProbeTime + yym967 := z.DecBinary() + _ = yym967 + if false { + } else if z.HasExtensions() && z.DecExt(yyv966) { + } else if yym967 { + z.DecBinaryUnmarshal(yyv966) + } else if !yym967 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv966) + } else { + z.DecFallback(yyv966, false) + } + } + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LastTransitionTime = pkg1_unversioned.Time{} + } else { + yyv968 := &x.LastTransitionTime + yym969 := z.DecBinary() + _ = yym969 + if false { + } else if z.HasExtensions() && z.DecExt(yyv968) { + } else if yym969 { + z.DecBinaryUnmarshal(yyv968) + } else if !yym969 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv968) + } else { + z.DecFallback(yyv968, false) + } + } + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Reason = "" + } else { + x.Reason = string(r.DecodeString()) + } + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Message = "" + } else { + x.Message = string(r.DecodeString()) + } + for { + yyj963++ + if yyhl963 { + yyb963 = yyj963 > l + } else { + yyb963 = r.CheckBreak() + } + if yyb963 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj963-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Ingress) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym972 := z.EncBinary() + _ = yym972 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep973 := !z.EncBinary() + yy2arr973 := z.EncBasicHandle().StructToArray + var yyq973 [5]bool + _, _, _ = yysep973, yyq973, yy2arr973 + const yyr973 bool = false + yyq973[0] = x.Kind != "" + yyq973[1] = x.APIVersion != "" + yyq973[2] = true + yyq973[3] = true + yyq973[4] = true + var yynn973 int + if yyr973 || yy2arr973 { + r.EncodeArrayStart(5) + } else { + yynn973 = 0 + for _, b := range yyq973 { + if b { + yynn973++ + } + } + r.EncodeMapStart(yynn973) + yynn973 = 0 + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq973[0] { + yym975 := z.EncBinary() + _ = yym975 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq973[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym976 := z.EncBinary() + _ = yym976 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq973[1] { + yym978 := z.EncBinary() + _ = yym978 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq973[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym979 := z.EncBinary() + _ = yym979 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq973[2] { + yy981 := &x.ObjectMeta + yy981.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq973[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy982 := &x.ObjectMeta + yy982.CodecEncodeSelf(e) + } + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq973[3] { + yy984 := &x.Spec + yy984.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq973[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy985 := &x.Spec + yy985.CodecEncodeSelf(e) + } + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq973[4] { + yy987 := &x.Status + yy987.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq973[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy988 := &x.Status + yy988.CodecEncodeSelf(e) + } + } + if yyr973 || yy2arr973 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Ingress) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym989 := z.DecBinary() + _ = yym989 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct990 := r.ContainerType() + if yyct990 == codecSelferValueTypeMap1234 { + yyl990 := r.ReadMapStart() + if yyl990 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl990, d) + } + } else if yyct990 == codecSelferValueTypeArray1234 { + yyl990 := r.ReadArrayStart() + if yyl990 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl990, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Ingress) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys991Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys991Slc + var yyhl991 bool = l >= 0 + for yyj991 := 0; ; yyj991++ { + if yyhl991 { + if yyj991 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys991Slc = r.DecodeBytes(yys991Slc, true, true) + yys991 := string(yys991Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys991 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv994 := &x.ObjectMeta + yyv994.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv995 := &x.Spec + yyv995.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv996 := &x.Status + yyv996.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys991) + } // end switch yys991 + } // end for yyj991 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Ingress) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj997 int + var yyb997 bool + var yyhl997 bool = l >= 0 + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1000 := &x.ObjectMeta + yyv1000.CodecDecodeSelf(d) + } + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = IngressSpec{} + } else { + yyv1001 := &x.Spec + yyv1001.CodecDecodeSelf(d) + } + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = IngressStatus{} + } else { + yyv1002 := &x.Status + yyv1002.CodecDecodeSelf(d) + } + for { + yyj997++ + if yyhl997 { + yyb997 = yyj997 > l + } else { + yyb997 = r.CheckBreak() + } + if yyb997 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj997-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1003 := z.EncBinary() + _ = yym1003 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1004 := !z.EncBinary() + yy2arr1004 := z.EncBasicHandle().StructToArray + var yyq1004 [4]bool + _, _, _ = yysep1004, yyq1004, yy2arr1004 + const yyr1004 bool = false + yyq1004[0] = x.Kind != "" + yyq1004[1] = x.APIVersion != "" + yyq1004[2] = true + var yynn1004 int + if yyr1004 || yy2arr1004 { + r.EncodeArrayStart(4) + } else { + yynn1004 = 1 + for _, b := range yyq1004 { + if b { + yynn1004++ + } + } + r.EncodeMapStart(yynn1004) + yynn1004 = 0 + } + if yyr1004 || yy2arr1004 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1004[0] { + yym1006 := z.EncBinary() + _ = yym1006 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1004[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1007 := z.EncBinary() + _ = yym1007 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1004 || yy2arr1004 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1004[1] { + yym1009 := z.EncBinary() + _ = yym1009 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1004[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1010 := z.EncBinary() + _ = yym1010 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1004 || yy2arr1004 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1004[2] { + yy1012 := &x.ListMeta + yym1013 := z.EncBinary() + _ = yym1013 + if false { + } else if z.HasExtensions() && z.EncExt(yy1012) { + } else { + z.EncFallback(yy1012) + } + } else { + r.EncodeNil() + } + } else { + if yyq1004[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1014 := &x.ListMeta + yym1015 := z.EncBinary() + _ = yym1015 + if false { + } else if z.HasExtensions() && z.EncExt(yy1014) { + } else { + z.EncFallback(yy1014) + } + } + } + if yyr1004 || yy2arr1004 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1017 := z.EncBinary() + _ = yym1017 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1018 := z.EncBinary() + _ = yym1018 + if false { + } else { + h.encSliceIngress(([]Ingress)(x.Items), e) + } + } + } + if yyr1004 || yy2arr1004 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1019 := z.DecBinary() + _ = yym1019 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1020 := r.ContainerType() + if yyct1020 == codecSelferValueTypeMap1234 { + yyl1020 := r.ReadMapStart() + if yyl1020 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1020, d) + } + } else if yyct1020 == codecSelferValueTypeArray1234 { + yyl1020 := r.ReadArrayStart() + if yyl1020 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1020, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1021Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1021Slc + var yyhl1021 bool = l >= 0 + for yyj1021 := 0; ; yyj1021++ { + if yyhl1021 { + if yyj1021 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1021Slc = r.DecodeBytes(yys1021Slc, true, true) + yys1021 := string(yys1021Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1021 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1024 := &x.ListMeta + yym1025 := z.DecBinary() + _ = yym1025 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1024) { + } else { + z.DecFallback(yyv1024, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1026 := &x.Items + yym1027 := z.DecBinary() + _ = yym1027 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv1026), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1021) + } // end switch yys1021 + } // end for yyj1021 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1028 int + var yyb1028 bool + var yyhl1028 bool = l >= 0 + yyj1028++ + if yyhl1028 { + yyb1028 = yyj1028 > l + } else { + yyb1028 = r.CheckBreak() + } + if yyb1028 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1028++ + if yyhl1028 { + yyb1028 = yyj1028 > l + } else { + yyb1028 = r.CheckBreak() + } + if yyb1028 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1028++ + if yyhl1028 { + yyb1028 = yyj1028 > l + } else { + yyb1028 = r.CheckBreak() + } + if yyb1028 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1031 := &x.ListMeta + yym1032 := z.DecBinary() + _ = yym1032 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1031) { + } else { + z.DecFallback(yyv1031, false) + } + } + yyj1028++ + if yyhl1028 { + yyb1028 = yyj1028 > l + } else { + yyb1028 = r.CheckBreak() + } + if yyb1028 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1033 := &x.Items + yym1034 := z.DecBinary() + _ = yym1034 + if false { + } else { + h.decSliceIngress((*[]Ingress)(yyv1033), d) + } + } + for { + yyj1028++ + if yyhl1028 { + yyb1028 = yyj1028 > l + } else { + yyb1028 = r.CheckBreak() + } + if yyb1028 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1028-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1035 := z.EncBinary() + _ = yym1035 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1036 := !z.EncBinary() + yy2arr1036 := z.EncBasicHandle().StructToArray + var yyq1036 [3]bool + _, _, _ = yysep1036, yyq1036, yy2arr1036 + const yyr1036 bool = false + yyq1036[0] = x.Backend != nil + yyq1036[1] = len(x.TLS) != 0 + yyq1036[2] = len(x.Rules) != 0 + var yynn1036 int + if yyr1036 || yy2arr1036 { + r.EncodeArrayStart(3) + } else { + yynn1036 = 0 + for _, b := range yyq1036 { + if b { + yynn1036++ + } + } + r.EncodeMapStart(yynn1036) + yynn1036 = 0 + } + if yyr1036 || yy2arr1036 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1036[0] { + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1036[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Backend == nil { + r.EncodeNil() + } else { + x.Backend.CodecEncodeSelf(e) + } + } + } + if yyr1036 || yy2arr1036 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1036[1] { + if x.TLS == nil { + r.EncodeNil() + } else { + yym1039 := z.EncBinary() + _ = yym1039 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1036[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("tls")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TLS == nil { + r.EncodeNil() + } else { + yym1040 := z.EncBinary() + _ = yym1040 + if false { + } else { + h.encSliceIngressTLS(([]IngressTLS)(x.TLS), e) + } + } + } + } + if yyr1036 || yy2arr1036 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1036[2] { + if x.Rules == nil { + r.EncodeNil() + } else { + yym1042 := z.EncBinary() + _ = yym1042 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1036[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym1043 := z.EncBinary() + _ = yym1043 + if false { + } else { + h.encSliceIngressRule(([]IngressRule)(x.Rules), e) + } + } + } + } + if yyr1036 || yy2arr1036 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1044 := z.DecBinary() + _ = yym1044 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1045 := r.ContainerType() + if yyct1045 == codecSelferValueTypeMap1234 { + yyl1045 := r.ReadMapStart() + if yyl1045 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1045, d) + } + } else if yyct1045 == codecSelferValueTypeArray1234 { + yyl1045 := r.ReadArrayStart() + if yyl1045 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1045, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1046Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1046Slc + var yyhl1046 bool = l >= 0 + for yyj1046 := 0; ; yyj1046++ { + if yyhl1046 { + if yyj1046 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1046Slc = r.DecodeBytes(yys1046Slc, true, true) + yys1046 := string(yys1046Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1046 { + case "backend": + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + case "tls": + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv1048 := &x.TLS + yym1049 := z.DecBinary() + _ = yym1049 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv1048), d) + } + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv1050 := &x.Rules + yym1051 := z.DecBinary() + _ = yym1051 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv1050), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1046) + } // end switch yys1046 + } // end for yyj1046 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1052 int + var yyb1052 bool + var yyhl1052 bool = l >= 0 + yyj1052++ + if yyhl1052 { + yyb1052 = yyj1052 > l + } else { + yyb1052 = r.CheckBreak() + } + if yyb1052 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Backend != nil { + x.Backend = nil + } + } else { + if x.Backend == nil { + x.Backend = new(IngressBackend) + } + x.Backend.CodecDecodeSelf(d) + } + yyj1052++ + if yyhl1052 { + yyb1052 = yyj1052 > l + } else { + yyb1052 = r.CheckBreak() + } + if yyb1052 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.TLS = nil + } else { + yyv1054 := &x.TLS + yym1055 := z.DecBinary() + _ = yym1055 + if false { + } else { + h.decSliceIngressTLS((*[]IngressTLS)(yyv1054), d) + } + } + yyj1052++ + if yyhl1052 { + yyb1052 = yyj1052 > l + } else { + yyb1052 = r.CheckBreak() + } + if yyb1052 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv1056 := &x.Rules + yym1057 := z.DecBinary() + _ = yym1057 + if false { + } else { + h.decSliceIngressRule((*[]IngressRule)(yyv1056), d) + } + } + for { + yyj1052++ + if yyhl1052 { + yyb1052 = yyj1052 > l + } else { + yyb1052 = r.CheckBreak() + } + if yyb1052 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1052-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressTLS) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1058 := z.EncBinary() + _ = yym1058 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1059 := !z.EncBinary() + yy2arr1059 := z.EncBasicHandle().StructToArray + var yyq1059 [2]bool + _, _, _ = yysep1059, yyq1059, yy2arr1059 + const yyr1059 bool = false + yyq1059[0] = len(x.Hosts) != 0 + yyq1059[1] = x.SecretName != "" + var yynn1059 int + if yyr1059 || yy2arr1059 { + r.EncodeArrayStart(2) + } else { + yynn1059 = 0 + for _, b := range yyq1059 { + if b { + yynn1059++ + } + } + r.EncodeMapStart(yynn1059) + yynn1059 = 0 + } + if yyr1059 || yy2arr1059 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1059[0] { + if x.Hosts == nil { + r.EncodeNil() + } else { + yym1061 := z.EncBinary() + _ = yym1061 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1059[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hosts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Hosts == nil { + r.EncodeNil() + } else { + yym1062 := z.EncBinary() + _ = yym1062 + if false { + } else { + z.F.EncSliceStringV(x.Hosts, false, e) + } + } + } + } + if yyr1059 || yy2arr1059 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1059[1] { + yym1064 := z.EncBinary() + _ = yym1064 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1059[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("secretName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1065 := z.EncBinary() + _ = yym1065 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.SecretName)) + } + } + } + if yyr1059 || yy2arr1059 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressTLS) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1066 := z.DecBinary() + _ = yym1066 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1067 := r.ContainerType() + if yyct1067 == codecSelferValueTypeMap1234 { + yyl1067 := r.ReadMapStart() + if yyl1067 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1067, d) + } + } else if yyct1067 == codecSelferValueTypeArray1234 { + yyl1067 := r.ReadArrayStart() + if yyl1067 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1067, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressTLS) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1068Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1068Slc + var yyhl1068 bool = l >= 0 + for yyj1068 := 0; ; yyj1068++ { + if yyhl1068 { + if yyj1068 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1068Slc = r.DecodeBytes(yys1068Slc, true, true) + yys1068 := string(yys1068Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1068 { + case "hosts": + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv1069 := &x.Hosts + yym1070 := z.DecBinary() + _ = yym1070 + if false { + } else { + z.F.DecSliceStringX(yyv1069, false, d) + } + } + case "secretName": + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys1068) + } // end switch yys1068 + } // end for yyj1068 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressTLS) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1072 int + var yyb1072 bool + var yyhl1072 bool = l >= 0 + yyj1072++ + if yyhl1072 { + yyb1072 = yyj1072 > l + } else { + yyb1072 = r.CheckBreak() + } + if yyb1072 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Hosts = nil + } else { + yyv1073 := &x.Hosts + yym1074 := z.DecBinary() + _ = yym1074 + if false { + } else { + z.F.DecSliceStringX(yyv1073, false, d) + } + } + yyj1072++ + if yyhl1072 { + yyb1072 = yyj1072 > l + } else { + yyb1072 = r.CheckBreak() + } + if yyb1072 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SecretName = "" + } else { + x.SecretName = string(r.DecodeString()) + } + for { + yyj1072++ + if yyhl1072 { + yyb1072 = yyj1072 > l + } else { + yyb1072 = r.CheckBreak() + } + if yyb1072 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1072-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1076 := z.EncBinary() + _ = yym1076 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1077 := !z.EncBinary() + yy2arr1077 := z.EncBasicHandle().StructToArray + var yyq1077 [1]bool + _, _, _ = yysep1077, yyq1077, yy2arr1077 + const yyr1077 bool = false + yyq1077[0] = true + var yynn1077 int + if yyr1077 || yy2arr1077 { + r.EncodeArrayStart(1) + } else { + yynn1077 = 0 + for _, b := range yyq1077 { + if b { + yynn1077++ + } + } + r.EncodeMapStart(yynn1077) + yynn1077 = 0 + } + if yyr1077 || yy2arr1077 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1077[0] { + yy1079 := &x.LoadBalancer + yy1079.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1077[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("loadBalancer")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1080 := &x.LoadBalancer + yy1080.CodecEncodeSelf(e) + } + } + if yyr1077 || yy2arr1077 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1081 := z.DecBinary() + _ = yym1081 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1082 := r.ContainerType() + if yyct1082 == codecSelferValueTypeMap1234 { + yyl1082 := r.ReadMapStart() + if yyl1082 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1082, d) + } + } else if yyct1082 == codecSelferValueTypeArray1234 { + yyl1082 := r.ReadArrayStart() + if yyl1082 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1082, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1083Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1083Slc + var yyhl1083 bool = l >= 0 + for yyj1083 := 0; ; yyj1083++ { + if yyhl1083 { + if yyj1083 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1083Slc = r.DecodeBytes(yys1083Slc, true, true) + yys1083 := string(yys1083Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1083 { + case "loadBalancer": + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg2_v1.LoadBalancerStatus{} + } else { + yyv1084 := &x.LoadBalancer + yyv1084.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1083) + } // end switch yys1083 + } // end for yyj1083 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1085 int + var yyb1085 bool + var yyhl1085 bool = l >= 0 + yyj1085++ + if yyhl1085 { + yyb1085 = yyj1085 > l + } else { + yyb1085 = r.CheckBreak() + } + if yyb1085 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LoadBalancer = pkg2_v1.LoadBalancerStatus{} + } else { + yyv1086 := &x.LoadBalancer + yyv1086.CodecDecodeSelf(d) + } + for { + yyj1085++ + if yyhl1085 { + yyb1085 = yyj1085 > l + } else { + yyb1085 = r.CheckBreak() + } + if yyb1085 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1085-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1087 := z.EncBinary() + _ = yym1087 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1088 := !z.EncBinary() + yy2arr1088 := z.EncBasicHandle().StructToArray + var yyq1088 [2]bool + _, _, _ = yysep1088, yyq1088, yy2arr1088 + const yyr1088 bool = false + yyq1088[0] = x.Host != "" + yyq1088[1] = x.IngressRuleValue.HTTP != nil && x.HTTP != nil + var yynn1088 int + if yyr1088 || yy2arr1088 { + r.EncodeArrayStart(2) + } else { + yynn1088 = 0 + for _, b := range yyq1088 { + if b { + yynn1088++ + } + } + r.EncodeMapStart(yynn1088) + yynn1088 = 0 + } + if yyr1088 || yy2arr1088 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1088[0] { + yym1090 := z.EncBinary() + _ = yym1090 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1088[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("host")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1091 := z.EncBinary() + _ = yym1091 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Host)) + } + } + } + var yyn1092 bool + if x.IngressRuleValue.HTTP == nil { + yyn1092 = true + goto LABEL1092 + } + LABEL1092: + if yyr1088 || yy2arr1088 { + if yyn1092 { + r.EncodeNil() + } else { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1088[1] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } + } else { + if yyq1088[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if yyn1092 { + r.EncodeNil() + } else { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + } + if yyr1088 || yy2arr1088 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1093 := z.DecBinary() + _ = yym1093 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1094 := r.ContainerType() + if yyct1094 == codecSelferValueTypeMap1234 { + yyl1094 := r.ReadMapStart() + if yyl1094 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1094, d) + } + } else if yyct1094 == codecSelferValueTypeArray1234 { + yyl1094 := r.ReadArrayStart() + if yyl1094 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1094, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1095Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1095Slc + var yyhl1095 bool = l >= 0 + for yyj1095 := 0; ; yyj1095++ { + if yyhl1095 { + if yyj1095 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1095Slc = r.DecodeBytes(yys1095Slc, true, true) + yys1095 := string(yys1095Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1095 { + case "host": + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + case "http": + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1095) + } // end switch yys1095 + } // end for yyj1095 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1098 int + var yyb1098 bool + var yyhl1098 bool = l >= 0 + yyj1098++ + if yyhl1098 { + yyb1098 = yyj1098 > l + } else { + yyb1098 = r.CheckBreak() + } + if yyb1098 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Host = "" + } else { + x.Host = string(r.DecodeString()) + } + if x.IngressRuleValue.HTTP == nil { + x.IngressRuleValue.HTTP = new(HTTPIngressRuleValue) + } + yyj1098++ + if yyhl1098 { + yyb1098 = yyj1098 > l + } else { + yyb1098 = r.CheckBreak() + } + if yyb1098 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj1098++ + if yyhl1098 { + yyb1098 = yyj1098 > l + } else { + yyb1098 = r.CheckBreak() + } + if yyb1098 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1098-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1101 := z.EncBinary() + _ = yym1101 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1102 := !z.EncBinary() + yy2arr1102 := z.EncBasicHandle().StructToArray + var yyq1102 [1]bool + _, _, _ = yysep1102, yyq1102, yy2arr1102 + const yyr1102 bool = false + yyq1102[0] = x.HTTP != nil + var yynn1102 int + if yyr1102 || yy2arr1102 { + r.EncodeArrayStart(1) + } else { + yynn1102 = 0 + for _, b := range yyq1102 { + if b { + yynn1102++ + } + } + r.EncodeMapStart(yynn1102) + yynn1102 = 0 + } + if yyr1102 || yy2arr1102 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1102[0] { + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1102[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("http")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HTTP == nil { + r.EncodeNil() + } else { + x.HTTP.CodecEncodeSelf(e) + } + } + } + if yyr1102 || yy2arr1102 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1104 := z.DecBinary() + _ = yym1104 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1105 := r.ContainerType() + if yyct1105 == codecSelferValueTypeMap1234 { + yyl1105 := r.ReadMapStart() + if yyl1105 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1105, d) + } + } else if yyct1105 == codecSelferValueTypeArray1234 { + yyl1105 := r.ReadArrayStart() + if yyl1105 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1105, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1106Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1106Slc + var yyhl1106 bool = l >= 0 + for yyj1106 := 0; ; yyj1106++ { + if yyhl1106 { + if yyj1106 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1106Slc = r.DecodeBytes(yys1106Slc, true, true) + yys1106 := string(yys1106Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1106 { + case "http": + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1106) + } // end switch yys1106 + } // end for yyj1106 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1108 int + var yyb1108 bool + var yyhl1108 bool = l >= 0 + yyj1108++ + if yyhl1108 { + yyb1108 = yyj1108 > l + } else { + yyb1108 = r.CheckBreak() + } + if yyb1108 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.HTTP != nil { + x.HTTP = nil + } + } else { + if x.HTTP == nil { + x.HTTP = new(HTTPIngressRuleValue) + } + x.HTTP.CodecDecodeSelf(d) + } + for { + yyj1108++ + if yyhl1108 { + yyb1108 = yyj1108 > l + } else { + yyb1108 = r.CheckBreak() + } + if yyb1108 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1108-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressRuleValue) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1110 := z.EncBinary() + _ = yym1110 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1111 := !z.EncBinary() + yy2arr1111 := z.EncBasicHandle().StructToArray + var yyq1111 [1]bool + _, _, _ = yysep1111, yyq1111, yy2arr1111 + const yyr1111 bool = false + var yynn1111 int + if yyr1111 || yy2arr1111 { + r.EncodeArrayStart(1) + } else { + yynn1111 = 1 + for _, b := range yyq1111 { + if b { + yynn1111++ + } + } + r.EncodeMapStart(yynn1111) + yynn1111 = 0 + } + if yyr1111 || yy2arr1111 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym1113 := z.EncBinary() + _ = yym1113 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("paths")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Paths == nil { + r.EncodeNil() + } else { + yym1114 := z.EncBinary() + _ = yym1114 + if false { + } else { + h.encSliceHTTPIngressPath(([]HTTPIngressPath)(x.Paths), e) + } + } + } + if yyr1111 || yy2arr1111 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressRuleValue) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1115 := z.DecBinary() + _ = yym1115 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1116 := r.ContainerType() + if yyct1116 == codecSelferValueTypeMap1234 { + yyl1116 := r.ReadMapStart() + if yyl1116 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1116, d) + } + } else if yyct1116 == codecSelferValueTypeArray1234 { + yyl1116 := r.ReadArrayStart() + if yyl1116 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1116, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1117Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1117Slc + var yyhl1117 bool = l >= 0 + for yyj1117 := 0; ; yyj1117++ { + if yyhl1117 { + if yyj1117 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1117Slc = r.DecodeBytes(yys1117Slc, true, true) + yys1117 := string(yys1117Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1117 { + case "paths": + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv1118 := &x.Paths + yym1119 := z.DecBinary() + _ = yym1119 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv1118), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1117) + } // end switch yys1117 + } // end for yyj1117 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressRuleValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1120 int + var yyb1120 bool + var yyhl1120 bool = l >= 0 + yyj1120++ + if yyhl1120 { + yyb1120 = yyj1120 > l + } else { + yyb1120 = r.CheckBreak() + } + if yyb1120 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Paths = nil + } else { + yyv1121 := &x.Paths + yym1122 := z.DecBinary() + _ = yym1122 + if false { + } else { + h.decSliceHTTPIngressPath((*[]HTTPIngressPath)(yyv1121), d) + } + } + for { + yyj1120++ + if yyhl1120 { + yyb1120 = yyj1120 > l + } else { + yyb1120 = r.CheckBreak() + } + if yyb1120 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1120-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *HTTPIngressPath) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1123 := z.EncBinary() + _ = yym1123 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1124 := !z.EncBinary() + yy2arr1124 := z.EncBasicHandle().StructToArray + var yyq1124 [2]bool + _, _, _ = yysep1124, yyq1124, yy2arr1124 + const yyr1124 bool = false + yyq1124[0] = x.Path != "" + var yynn1124 int + if yyr1124 || yy2arr1124 { + r.EncodeArrayStart(2) + } else { + yynn1124 = 1 + for _, b := range yyq1124 { + if b { + yynn1124++ + } + } + r.EncodeMapStart(yynn1124) + yynn1124 = 0 + } + if yyr1124 || yy2arr1124 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1124[0] { + yym1126 := z.EncBinary() + _ = yym1126 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1124[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("path")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1127 := z.EncBinary() + _ = yym1127 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Path)) + } + } + } + if yyr1124 || yy2arr1124 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1129 := &x.Backend + yy1129.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("backend")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1130 := &x.Backend + yy1130.CodecEncodeSelf(e) + } + if yyr1124 || yy2arr1124 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HTTPIngressPath) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1131 := z.DecBinary() + _ = yym1131 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1132 := r.ContainerType() + if yyct1132 == codecSelferValueTypeMap1234 { + yyl1132 := r.ReadMapStart() + if yyl1132 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1132, d) + } + } else if yyct1132 == codecSelferValueTypeArray1234 { + yyl1132 := r.ReadArrayStart() + if yyl1132 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1132, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HTTPIngressPath) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1133Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1133Slc + var yyhl1133 bool = l >= 0 + for yyj1133 := 0; ; yyj1133++ { + if yyhl1133 { + if yyj1133 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1133Slc = r.DecodeBytes(yys1133Slc, true, true) + yys1133 := string(yys1133Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1133 { + case "path": + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + case "backend": + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv1135 := &x.Backend + yyv1135.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1133) + } // end switch yys1133 + } // end for yyj1133 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HTTPIngressPath) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1136 int + var yyb1136 bool + var yyhl1136 bool = l >= 0 + yyj1136++ + if yyhl1136 { + yyb1136 = yyj1136 > l + } else { + yyb1136 = r.CheckBreak() + } + if yyb1136 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Path = "" + } else { + x.Path = string(r.DecodeString()) + } + yyj1136++ + if yyhl1136 { + yyb1136 = yyj1136 > l + } else { + yyb1136 = r.CheckBreak() + } + if yyb1136 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Backend = IngressBackend{} + } else { + yyv1138 := &x.Backend + yyv1138.CodecDecodeSelf(d) + } + for { + yyj1136++ + if yyhl1136 { + yyb1136 = yyj1136 > l + } else { + yyb1136 = r.CheckBreak() + } + if yyb1136 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1136-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IngressBackend) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1139 := z.EncBinary() + _ = yym1139 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1140 := !z.EncBinary() + yy2arr1140 := z.EncBasicHandle().StructToArray + var yyq1140 [2]bool + _, _, _ = yysep1140, yyq1140, yy2arr1140 + const yyr1140 bool = false + var yynn1140 int + if yyr1140 || yy2arr1140 { + r.EncodeArrayStart(2) + } else { + yynn1140 = 2 + for _, b := range yyq1140 { + if b { + yynn1140++ + } + } + r.EncodeMapStart(yynn1140) + yynn1140 = 0 + } + if yyr1140 || yy2arr1140 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1142 := z.EncBinary() + _ = yym1142 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("serviceName")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1143 := z.EncBinary() + _ = yym1143 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ServiceName)) + } + } + if yyr1140 || yy2arr1140 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1145 := &x.ServicePort + yym1146 := z.EncBinary() + _ = yym1146 + if false { + } else if z.HasExtensions() && z.EncExt(yy1145) { + } else if !yym1146 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1145) + } else { + z.EncFallback(yy1145) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("servicePort")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1147 := &x.ServicePort + yym1148 := z.EncBinary() + _ = yym1148 + if false { + } else if z.HasExtensions() && z.EncExt(yy1147) { + } else if !yym1148 && z.IsJSONHandle() { + z.EncJSONMarshal(yy1147) + } else { + z.EncFallback(yy1147) + } + } + if yyr1140 || yy2arr1140 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IngressBackend) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1149 := z.DecBinary() + _ = yym1149 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1150 := r.ContainerType() + if yyct1150 == codecSelferValueTypeMap1234 { + yyl1150 := r.ReadMapStart() + if yyl1150 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1150, d) + } + } else if yyct1150 == codecSelferValueTypeArray1234 { + yyl1150 := r.ReadArrayStart() + if yyl1150 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1150, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IngressBackend) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1151Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1151Slc + var yyhl1151 bool = l >= 0 + for yyj1151 := 0; ; yyj1151++ { + if yyhl1151 { + if yyj1151 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1151Slc = r.DecodeBytes(yys1151Slc, true, true) + yys1151 := string(yys1151Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1151 { + case "serviceName": + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + case "servicePort": + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv1153 := &x.ServicePort + yym1154 := z.DecBinary() + _ = yym1154 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1153) { + } else if !yym1154 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1153) + } else { + z.DecFallback(yyv1153, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1151) + } // end switch yys1151 + } // end for yyj1151 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IngressBackend) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1155 int + var yyb1155 bool + var yyhl1155 bool = l >= 0 + yyj1155++ + if yyhl1155 { + yyb1155 = yyj1155 > l + } else { + yyb1155 = r.CheckBreak() + } + if yyb1155 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServiceName = "" + } else { + x.ServiceName = string(r.DecodeString()) + } + yyj1155++ + if yyhl1155 { + yyb1155 = yyj1155 > l + } else { + yyb1155 = r.CheckBreak() + } + if yyb1155 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ServicePort = pkg5_intstr.IntOrString{} + } else { + yyv1157 := &x.ServicePort + yym1158 := z.DecBinary() + _ = yym1158 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1157) { + } else if !yym1158 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv1157) + } else { + z.DecFallback(yyv1157, false) + } + } + for { + yyj1155++ + if yyhl1155 { + yyb1155 = yyj1155 > l + } else { + yyb1155 = r.CheckBreak() + } + if yyb1155 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1155-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ExportOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1159 := z.EncBinary() + _ = yym1159 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1160 := !z.EncBinary() + yy2arr1160 := z.EncBasicHandle().StructToArray + var yyq1160 [4]bool + _, _, _ = yysep1160, yyq1160, yy2arr1160 + const yyr1160 bool = false + yyq1160[0] = x.Kind != "" + yyq1160[1] = x.APIVersion != "" + var yynn1160 int + if yyr1160 || yy2arr1160 { + r.EncodeArrayStart(4) + } else { + yynn1160 = 2 + for _, b := range yyq1160 { + if b { + yynn1160++ + } + } + r.EncodeMapStart(yynn1160) + yynn1160 = 0 + } + if yyr1160 || yy2arr1160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1160[0] { + yym1162 := z.EncBinary() + _ = yym1162 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1160[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1163 := z.EncBinary() + _ = yym1163 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1160 || yy2arr1160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1160[1] { + yym1165 := z.EncBinary() + _ = yym1165 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1160[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1166 := z.EncBinary() + _ = yym1166 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1160 || yy2arr1160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1168 := z.EncBinary() + _ = yym1168 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("export")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1169 := z.EncBinary() + _ = yym1169 + if false { + } else { + r.EncodeBool(bool(x.Export)) + } + } + if yyr1160 || yy2arr1160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1171 := z.EncBinary() + _ = yym1171 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("exact")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1172 := z.EncBinary() + _ = yym1172 + if false { + } else { + r.EncodeBool(bool(x.Exact)) + } + } + if yyr1160 || yy2arr1160 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ExportOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1173 := z.DecBinary() + _ = yym1173 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1174 := r.ContainerType() + if yyct1174 == codecSelferValueTypeMap1234 { + yyl1174 := r.ReadMapStart() + if yyl1174 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1174, d) + } + } else if yyct1174 == codecSelferValueTypeArray1234 { + yyl1174 := r.ReadArrayStart() + if yyl1174 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1174, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ExportOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1175Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1175Slc + var yyhl1175 bool = l >= 0 + for yyj1175 := 0; ; yyj1175++ { + if yyhl1175 { + if yyj1175 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1175Slc = r.DecodeBytes(yys1175Slc, true, true) + yys1175 := string(yys1175Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1175 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "export": + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + case "exact": + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1175) + } // end switch yys1175 + } // end for yyj1175 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ExportOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1180 int + var yyb1180 bool + var yyhl1180 bool = l >= 0 + yyj1180++ + if yyhl1180 { + yyb1180 = yyj1180 > l + } else { + yyb1180 = r.CheckBreak() + } + if yyb1180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1180++ + if yyhl1180 { + yyb1180 = yyj1180 > l + } else { + yyb1180 = r.CheckBreak() + } + if yyb1180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1180++ + if yyhl1180 { + yyb1180 = yyj1180 > l + } else { + yyb1180 = r.CheckBreak() + } + if yyb1180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Export = false + } else { + x.Export = bool(r.DecodeBool()) + } + yyj1180++ + if yyhl1180 { + yyb1180 = yyj1180 > l + } else { + yyb1180 = r.CheckBreak() + } + if yyb1180 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Exact = false + } else { + x.Exact = bool(r.DecodeBool()) + } + for { + yyj1180++ + if yyhl1180 { + yyb1180 = yyj1180 > l + } else { + yyb1180 = r.CheckBreak() + } + if yyb1180 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1180-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ListOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1185 := z.EncBinary() + _ = yym1185 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1186 := !z.EncBinary() + yy2arr1186 := z.EncBasicHandle().StructToArray + var yyq1186 [7]bool + _, _, _ = yysep1186, yyq1186, yy2arr1186 + const yyr1186 bool = false + yyq1186[0] = x.Kind != "" + yyq1186[1] = x.APIVersion != "" + yyq1186[2] = x.LabelSelector != "" + yyq1186[3] = x.FieldSelector != "" + yyq1186[4] = x.Watch != false + yyq1186[5] = x.ResourceVersion != "" + yyq1186[6] = x.TimeoutSeconds != nil + var yynn1186 int + if yyr1186 || yy2arr1186 { + r.EncodeArrayStart(7) + } else { + yynn1186 = 0 + for _, b := range yyq1186 { + if b { + yynn1186++ + } + } + r.EncodeMapStart(yynn1186) + yynn1186 = 0 + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[0] { + yym1188 := z.EncBinary() + _ = yym1188 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1186[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1189 := z.EncBinary() + _ = yym1189 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[1] { + yym1191 := z.EncBinary() + _ = yym1191 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1186[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1192 := z.EncBinary() + _ = yym1192 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[2] { + yym1194 := z.EncBinary() + _ = yym1194 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1186[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("labelSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1195 := z.EncBinary() + _ = yym1195 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.LabelSelector)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[3] { + yym1197 := z.EncBinary() + _ = yym1197 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1186[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fieldSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1198 := z.EncBinary() + _ = yym1198 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.FieldSelector)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[4] { + yym1200 := z.EncBinary() + _ = yym1200 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1186[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("watch")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1201 := z.EncBinary() + _ = yym1201 + if false { + } else { + r.EncodeBool(bool(x.Watch)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[5] { + yym1203 := z.EncBinary() + _ = yym1203 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1186[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1204 := z.EncBinary() + _ = yym1204 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion)) + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1186[6] { + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy1206 := *x.TimeoutSeconds + yym1207 := z.EncBinary() + _ = yym1207 + if false { + } else { + r.EncodeInt(int64(yy1206)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1186[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("timeoutSeconds")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.TimeoutSeconds == nil { + r.EncodeNil() + } else { + yy1208 := *x.TimeoutSeconds + yym1209 := z.EncBinary() + _ = yym1209 + if false { + } else { + r.EncodeInt(int64(yy1208)) + } + } + } + } + if yyr1186 || yy2arr1186 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ListOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1210 := z.DecBinary() + _ = yym1210 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1211 := r.ContainerType() + if yyct1211 == codecSelferValueTypeMap1234 { + yyl1211 := r.ReadMapStart() + if yyl1211 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1211, d) + } + } else if yyct1211 == codecSelferValueTypeArray1234 { + yyl1211 := r.ReadArrayStart() + if yyl1211 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1211, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ListOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1212Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1212Slc + var yyhl1212 bool = l >= 0 + for yyj1212 := 0; ; yyj1212++ { + if yyhl1212 { + if yyj1212 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1212Slc = r.DecodeBytes(yys1212Slc, true, true) + yys1212 := string(yys1212Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1212 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "labelSelector": + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + x.LabelSelector = string(r.DecodeString()) + } + case "fieldSelector": + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + x.FieldSelector = string(r.DecodeString()) + } + case "watch": + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + case "resourceVersion": + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + case "timeoutSeconds": + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym1220 := z.DecBinary() + _ = yym1220 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + default: + z.DecStructFieldNotFound(-1, yys1212) + } // end switch yys1212 + } // end for yyj1212 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ListOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1221 int + var yyb1221 bool + var yyhl1221 bool = l >= 0 + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.LabelSelector = "" + } else { + x.LabelSelector = string(r.DecodeString()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FieldSelector = "" + } else { + x.FieldSelector = string(r.DecodeString()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Watch = false + } else { + x.Watch = bool(r.DecodeBool()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceVersion = "" + } else { + x.ResourceVersion = string(r.DecodeString()) + } + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.TimeoutSeconds != nil { + x.TimeoutSeconds = nil + } + } else { + if x.TimeoutSeconds == nil { + x.TimeoutSeconds = new(int64) + } + yym1229 := z.DecBinary() + _ = yym1229 + if false { + } else { + *((*int64)(x.TimeoutSeconds)) = int64(r.DecodeInt(64)) + } + } + for { + yyj1221++ + if yyhl1221 { + yyb1221 = yyj1221 > l + } else { + yyb1221 = r.CheckBreak() + } + if yyb1221 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1221-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelector) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1230 := z.EncBinary() + _ = yym1230 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1231 := !z.EncBinary() + yy2arr1231 := z.EncBasicHandle().StructToArray + var yyq1231 [2]bool + _, _, _ = yysep1231, yyq1231, yy2arr1231 + const yyr1231 bool = false + yyq1231[0] = len(x.MatchLabels) != 0 + yyq1231[1] = len(x.MatchExpressions) != 0 + var yynn1231 int + if yyr1231 || yy2arr1231 { + r.EncodeArrayStart(2) + } else { + yynn1231 = 0 + for _, b := range yyq1231 { + if b { + yynn1231++ + } + } + r.EncodeMapStart(yynn1231) + yynn1231 = 0 + } + if yyr1231 || yy2arr1231 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1231[0] { + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym1233 := z.EncBinary() + _ = yym1233 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1231[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchLabels")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchLabels == nil { + r.EncodeNil() + } else { + yym1234 := z.EncBinary() + _ = yym1234 + if false { + } else { + z.F.EncMapStringStringV(x.MatchLabels, false, e) + } + } + } + } + if yyr1231 || yy2arr1231 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1231[1] { + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1236 := z.EncBinary() + _ = yym1236 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1231[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("matchExpressions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.MatchExpressions == nil { + r.EncodeNil() + } else { + yym1237 := z.EncBinary() + _ = yym1237 + if false { + } else { + h.encSliceLabelSelectorRequirement(([]LabelSelectorRequirement)(x.MatchExpressions), e) + } + } + } + } + if yyr1231 || yy2arr1231 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelector) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1238 := z.DecBinary() + _ = yym1238 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1239 := r.ContainerType() + if yyct1239 == codecSelferValueTypeMap1234 { + yyl1239 := r.ReadMapStart() + if yyl1239 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1239, d) + } + } else if yyct1239 == codecSelferValueTypeArray1234 { + yyl1239 := r.ReadArrayStart() + if yyl1239 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1239, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelector) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1240Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1240Slc + var yyhl1240 bool = l >= 0 + for yyj1240 := 0; ; yyj1240++ { + if yyhl1240 { + if yyj1240 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1240Slc = r.DecodeBytes(yys1240Slc, true, true) + yys1240 := string(yys1240Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1240 { + case "matchLabels": + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv1241 := &x.MatchLabels + yym1242 := z.DecBinary() + _ = yym1242 + if false { + } else { + z.F.DecMapStringStringX(yyv1241, false, d) + } + } + case "matchExpressions": + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1243 := &x.MatchExpressions + yym1244 := z.DecBinary() + _ = yym1244 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv1243), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1240) + } // end switch yys1240 + } // end for yyj1240 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelector) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1245 int + var yyb1245 bool + var yyhl1245 bool = l >= 0 + yyj1245++ + if yyhl1245 { + yyb1245 = yyj1245 > l + } else { + yyb1245 = r.CheckBreak() + } + if yyb1245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchLabels = nil + } else { + yyv1246 := &x.MatchLabels + yym1247 := z.DecBinary() + _ = yym1247 + if false { + } else { + z.F.DecMapStringStringX(yyv1246, false, d) + } + } + yyj1245++ + if yyhl1245 { + yyb1245 = yyj1245 > l + } else { + yyb1245 = r.CheckBreak() + } + if yyb1245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MatchExpressions = nil + } else { + yyv1248 := &x.MatchExpressions + yym1249 := z.DecBinary() + _ = yym1249 + if false { + } else { + h.decSliceLabelSelectorRequirement((*[]LabelSelectorRequirement)(yyv1248), d) + } + } + for { + yyj1245++ + if yyhl1245 { + yyb1245 = yyj1245 > l + } else { + yyb1245 = r.CheckBreak() + } + if yyb1245 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1245-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *LabelSelectorRequirement) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1250 := z.EncBinary() + _ = yym1250 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1251 := !z.EncBinary() + yy2arr1251 := z.EncBasicHandle().StructToArray + var yyq1251 [3]bool + _, _, _ = yysep1251, yyq1251, yy2arr1251 + const yyr1251 bool = false + yyq1251[2] = len(x.Values) != 0 + var yynn1251 int + if yyr1251 || yy2arr1251 { + r.EncodeArrayStart(3) + } else { + yynn1251 = 2 + for _, b := range yyq1251 { + if b { + yynn1251++ + } + } + r.EncodeMapStart(yynn1251) + yynn1251 = 0 + } + if yyr1251 || yy2arr1251 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1253 := z.EncBinary() + _ = yym1253 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("key")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1254 := z.EncBinary() + _ = yym1254 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Key)) + } + } + if yyr1251 || yy2arr1251 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Operator.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("operator")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Operator.CodecEncodeSelf(e) + } + if yyr1251 || yy2arr1251 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1251[2] { + if x.Values == nil { + r.EncodeNil() + } else { + yym1257 := z.EncBinary() + _ = yym1257 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1251[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("values")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Values == nil { + r.EncodeNil() + } else { + yym1258 := z.EncBinary() + _ = yym1258 + if false { + } else { + z.F.EncSliceStringV(x.Values, false, e) + } + } + } + } + if yyr1251 || yy2arr1251 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *LabelSelectorRequirement) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1259 := z.DecBinary() + _ = yym1259 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1260 := r.ContainerType() + if yyct1260 == codecSelferValueTypeMap1234 { + yyl1260 := r.ReadMapStart() + if yyl1260 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1260, d) + } + } else if yyct1260 == codecSelferValueTypeArray1234 { + yyl1260 := r.ReadArrayStart() + if yyl1260 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1260, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1261Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1261Slc + var yyhl1261 bool = l >= 0 + for yyj1261 := 0; ; yyj1261++ { + if yyhl1261 { + if yyj1261 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1261Slc = r.DecodeBytes(yys1261Slc, true, true) + yys1261 := string(yys1261Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1261 { + case "key": + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + case "operator": + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + case "values": + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1264 := &x.Values + yym1265 := z.DecBinary() + _ = yym1265 + if false { + } else { + z.F.DecSliceStringX(yyv1264, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1261) + } // end switch yys1261 + } // end for yyj1261 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *LabelSelectorRequirement) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1266 int + var yyb1266 bool + var yyhl1266 bool = l >= 0 + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Key = "" + } else { + x.Key = string(r.DecodeString()) + } + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Operator = "" + } else { + x.Operator = LabelSelectorOperator(r.DecodeString()) + } + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Values = nil + } else { + yyv1269 := &x.Values + yym1270 := z.DecBinary() + _ = yym1270 + if false { + } else { + z.F.DecSliceStringX(yyv1269, false, d) + } + } + for { + yyj1266++ + if yyhl1266 { + yyb1266 = yyj1266 > l + } else { + yyb1266 = r.CheckBreak() + } + if yyb1266 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1266-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x LabelSelectorOperator) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1271 := z.EncBinary() + _ = yym1271 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *LabelSelectorOperator) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1272 := z.DecBinary() + _ = yym1272 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *ReplicaSet) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1273 := z.EncBinary() + _ = yym1273 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1274 := !z.EncBinary() + yy2arr1274 := z.EncBasicHandle().StructToArray + var yyq1274 [5]bool + _, _, _ = yysep1274, yyq1274, yy2arr1274 + const yyr1274 bool = false + yyq1274[0] = x.Kind != "" + yyq1274[1] = x.APIVersion != "" + yyq1274[2] = true + yyq1274[3] = true + yyq1274[4] = true + var yynn1274 int + if yyr1274 || yy2arr1274 { + r.EncodeArrayStart(5) + } else { + yynn1274 = 0 + for _, b := range yyq1274 { + if b { + yynn1274++ + } + } + r.EncodeMapStart(yynn1274) + yynn1274 = 0 + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1274[0] { + yym1276 := z.EncBinary() + _ = yym1276 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1274[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1277 := z.EncBinary() + _ = yym1277 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1274[1] { + yym1279 := z.EncBinary() + _ = yym1279 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1274[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1280 := z.EncBinary() + _ = yym1280 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1274[2] { + yy1282 := &x.ObjectMeta + yy1282.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1274[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1283 := &x.ObjectMeta + yy1283.CodecEncodeSelf(e) + } + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1274[3] { + yy1285 := &x.Spec + yy1285.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1274[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1286 := &x.Spec + yy1286.CodecEncodeSelf(e) + } + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1274[4] { + yy1288 := &x.Status + yy1288.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1274[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1289 := &x.Status + yy1289.CodecEncodeSelf(e) + } + } + if yyr1274 || yy2arr1274 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSet) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1290 := z.DecBinary() + _ = yym1290 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1291 := r.ContainerType() + if yyct1291 == codecSelferValueTypeMap1234 { + yyl1291 := r.ReadMapStart() + if yyl1291 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1291, d) + } + } else if yyct1291 == codecSelferValueTypeArray1234 { + yyl1291 := r.ReadArrayStart() + if yyl1291 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1291, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSet) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1292Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1292Slc + var yyhl1292 bool = l >= 0 + for yyj1292 := 0; ; yyj1292++ { + if yyhl1292 { + if yyj1292 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1292Slc = r.DecodeBytes(yys1292Slc, true, true) + yys1292 := string(yys1292Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1292 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1295 := &x.ObjectMeta + yyv1295.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv1296 := &x.Spec + yyv1296.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv1297 := &x.Status + yyv1297.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1292) + } // end switch yys1292 + } // end for yyj1292 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSet) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1298 int + var yyb1298 bool + var yyhl1298 bool = l >= 0 + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1301 := &x.ObjectMeta + yyv1301.CodecDecodeSelf(d) + } + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = ReplicaSetSpec{} + } else { + yyv1302 := &x.Spec + yyv1302.CodecDecodeSelf(d) + } + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = ReplicaSetStatus{} + } else { + yyv1303 := &x.Status + yyv1303.CodecDecodeSelf(d) + } + for { + yyj1298++ + if yyhl1298 { + yyb1298 = yyj1298 > l + } else { + yyb1298 = r.CheckBreak() + } + if yyb1298 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1298-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1304 := z.EncBinary() + _ = yym1304 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1305 := !z.EncBinary() + yy2arr1305 := z.EncBasicHandle().StructToArray + var yyq1305 [4]bool + _, _, _ = yysep1305, yyq1305, yy2arr1305 + const yyr1305 bool = false + yyq1305[0] = x.Kind != "" + yyq1305[1] = x.APIVersion != "" + yyq1305[2] = true + var yynn1305 int + if yyr1305 || yy2arr1305 { + r.EncodeArrayStart(4) + } else { + yynn1305 = 1 + for _, b := range yyq1305 { + if b { + yynn1305++ + } + } + r.EncodeMapStart(yynn1305) + yynn1305 = 0 + } + if yyr1305 || yy2arr1305 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1305[0] { + yym1307 := z.EncBinary() + _ = yym1307 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1305[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1308 := z.EncBinary() + _ = yym1308 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1305 || yy2arr1305 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1305[1] { + yym1310 := z.EncBinary() + _ = yym1310 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1305[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1311 := z.EncBinary() + _ = yym1311 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1305 || yy2arr1305 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1305[2] { + yy1313 := &x.ListMeta + yym1314 := z.EncBinary() + _ = yym1314 + if false { + } else if z.HasExtensions() && z.EncExt(yy1313) { + } else { + z.EncFallback(yy1313) + } + } else { + r.EncodeNil() + } + } else { + if yyq1305[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1315 := &x.ListMeta + yym1316 := z.EncBinary() + _ = yym1316 + if false { + } else if z.HasExtensions() && z.EncExt(yy1315) { + } else { + z.EncFallback(yy1315) + } + } + } + if yyr1305 || yy2arr1305 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1318 := z.EncBinary() + _ = yym1318 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1319 := z.EncBinary() + _ = yym1319 + if false { + } else { + h.encSliceReplicaSet(([]ReplicaSet)(x.Items), e) + } + } + } + if yyr1305 || yy2arr1305 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1320 := z.DecBinary() + _ = yym1320 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1321 := r.ContainerType() + if yyct1321 == codecSelferValueTypeMap1234 { + yyl1321 := r.ReadMapStart() + if yyl1321 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1321, d) + } + } else if yyct1321 == codecSelferValueTypeArray1234 { + yyl1321 := r.ReadArrayStart() + if yyl1321 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1321, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1322Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1322Slc + var yyhl1322 bool = l >= 0 + for yyj1322 := 0; ; yyj1322++ { + if yyhl1322 { + if yyj1322 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1322Slc = r.DecodeBytes(yys1322Slc, true, true) + yys1322 := string(yys1322Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1322 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1325 := &x.ListMeta + yym1326 := z.DecBinary() + _ = yym1326 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1325) { + } else { + z.DecFallback(yyv1325, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1327 := &x.Items + yym1328 := z.DecBinary() + _ = yym1328 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv1327), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1322) + } // end switch yys1322 + } // end for yyj1322 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1329 int + var yyb1329 bool + var yyhl1329 bool = l >= 0 + yyj1329++ + if yyhl1329 { + yyb1329 = yyj1329 > l + } else { + yyb1329 = r.CheckBreak() + } + if yyb1329 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1329++ + if yyhl1329 { + yyb1329 = yyj1329 > l + } else { + yyb1329 = r.CheckBreak() + } + if yyb1329 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1329++ + if yyhl1329 { + yyb1329 = yyj1329 > l + } else { + yyb1329 = r.CheckBreak() + } + if yyb1329 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1332 := &x.ListMeta + yym1333 := z.DecBinary() + _ = yym1333 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1332) { + } else { + z.DecFallback(yyv1332, false) + } + } + yyj1329++ + if yyhl1329 { + yyb1329 = yyj1329 > l + } else { + yyb1329 = r.CheckBreak() + } + if yyb1329 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1334 := &x.Items + yym1335 := z.DecBinary() + _ = yym1335 + if false { + } else { + h.decSliceReplicaSet((*[]ReplicaSet)(yyv1334), d) + } + } + for { + yyj1329++ + if yyhl1329 { + yyb1329 = yyj1329 > l + } else { + yyb1329 = r.CheckBreak() + } + if yyb1329 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1329-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1336 := z.EncBinary() + _ = yym1336 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1337 := !z.EncBinary() + yy2arr1337 := z.EncBasicHandle().StructToArray + var yyq1337 [3]bool + _, _, _ = yysep1337, yyq1337, yy2arr1337 + const yyr1337 bool = false + yyq1337[0] = x.Replicas != nil + yyq1337[1] = x.Selector != nil + yyq1337[2] = true + var yynn1337 int + if yyr1337 || yy2arr1337 { + r.EncodeArrayStart(3) + } else { + yynn1337 = 0 + for _, b := range yyq1337 { + if b { + yynn1337++ + } + } + r.EncodeMapStart(yynn1337) + yynn1337 = 0 + } + if yyr1337 || yy2arr1337 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1337[0] { + if x.Replicas == nil { + r.EncodeNil() + } else { + yy1339 := *x.Replicas + yym1340 := z.EncBinary() + _ = yym1340 + if false { + } else { + r.EncodeInt(int64(yy1339)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1337[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Replicas == nil { + r.EncodeNil() + } else { + yy1341 := *x.Replicas + yym1342 := z.EncBinary() + _ = yym1342 + if false { + } else { + r.EncodeInt(int64(yy1341)) + } + } + } + } + if yyr1337 || yy2arr1337 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1337[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1337[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + x.Selector.CodecEncodeSelf(e) + } + } + } + if yyr1337 || yy2arr1337 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1337[2] { + yy1345 := &x.Template + yy1345.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1337[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("template")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1346 := &x.Template + yy1346.CodecEncodeSelf(e) + } + } + if yyr1337 || yy2arr1337 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1347 := z.DecBinary() + _ = yym1347 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1348 := r.ContainerType() + if yyct1348 == codecSelferValueTypeMap1234 { + yyl1348 := r.ReadMapStart() + if yyl1348 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1348, d) + } + } else if yyct1348 == codecSelferValueTypeArray1234 { + yyl1348 := r.ReadArrayStart() + if yyl1348 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1348, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1349Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1349Slc + var yyhl1349 bool = l >= 0 + for yyj1349 := 0; ; yyj1349++ { + if yyhl1349 { + if yyj1349 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1349Slc = r.DecodeBytes(yys1349Slc, true, true) + yys1349 := string(yys1349Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1349 { + case "replicas": + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym1351 := z.DecBinary() + _ = yym1351 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + case "template": + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv1353 := &x.Template + yyv1353.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1349) + } // end switch yys1349 + } // end for yyj1349 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1354 int + var yyb1354 bool + var yyhl1354 bool = l >= 0 + yyj1354++ + if yyhl1354 { + yyb1354 = yyj1354 > l + } else { + yyb1354 = r.CheckBreak() + } + if yyb1354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Replicas != nil { + x.Replicas = nil + } + } else { + if x.Replicas == nil { + x.Replicas = new(int32) + } + yym1356 := z.DecBinary() + _ = yym1356 + if false { + } else { + *((*int32)(x.Replicas)) = int32(r.DecodeInt(32)) + } + } + yyj1354++ + if yyhl1354 { + yyb1354 = yyj1354 > l + } else { + yyb1354 = r.CheckBreak() + } + if yyb1354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(LabelSelector) + } + x.Selector.CodecDecodeSelf(d) + } + yyj1354++ + if yyhl1354 { + yyb1354 = yyj1354 > l + } else { + yyb1354 = r.CheckBreak() + } + if yyb1354 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Template = pkg2_v1.PodTemplateSpec{} + } else { + yyv1358 := &x.Template + yyv1358.CodecDecodeSelf(d) + } + for { + yyj1354++ + if yyhl1354 { + yyb1354 = yyj1354 > l + } else { + yyb1354 = r.CheckBreak() + } + if yyb1354 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1354-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ReplicaSetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1359 := z.EncBinary() + _ = yym1359 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1360 := !z.EncBinary() + yy2arr1360 := z.EncBasicHandle().StructToArray + var yyq1360 [4]bool + _, _, _ = yysep1360, yyq1360, yy2arr1360 + const yyr1360 bool = false + yyq1360[1] = x.FullyLabeledReplicas != 0 + yyq1360[2] = x.ReadyReplicas != 0 + yyq1360[3] = x.ObservedGeneration != 0 + var yynn1360 int + if yyr1360 || yy2arr1360 { + r.EncodeArrayStart(4) + } else { + yynn1360 = 1 + for _, b := range yyq1360 { + if b { + yynn1360++ + } + } + r.EncodeMapStart(yynn1360) + yynn1360 = 0 + } + if yyr1360 || yy2arr1360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1362 := z.EncBinary() + _ = yym1362 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("replicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1363 := z.EncBinary() + _ = yym1363 + if false { + } else { + r.EncodeInt(int64(x.Replicas)) + } + } + if yyr1360 || yy2arr1360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1360[1] { + yym1365 := z.EncBinary() + _ = yym1365 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1360[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fullyLabeledReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1366 := z.EncBinary() + _ = yym1366 + if false { + } else { + r.EncodeInt(int64(x.FullyLabeledReplicas)) + } + } + } + if yyr1360 || yy2arr1360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1360[2] { + yym1368 := z.EncBinary() + _ = yym1368 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1360[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readyReplicas")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1369 := z.EncBinary() + _ = yym1369 + if false { + } else { + r.EncodeInt(int64(x.ReadyReplicas)) + } + } + } + if yyr1360 || yy2arr1360 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1360[3] { + yym1371 := z.EncBinary() + _ = yym1371 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } else { + r.EncodeInt(0) + } + } else { + if yyq1360[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("observedGeneration")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1372 := z.EncBinary() + _ = yym1372 + if false { + } else { + r.EncodeInt(int64(x.ObservedGeneration)) + } + } + } + if yyr1360 || yy2arr1360 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ReplicaSetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1373 := z.DecBinary() + _ = yym1373 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1374 := r.ContainerType() + if yyct1374 == codecSelferValueTypeMap1234 { + yyl1374 := r.ReadMapStart() + if yyl1374 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1374, d) + } + } else if yyct1374 == codecSelferValueTypeArray1234 { + yyl1374 := r.ReadArrayStart() + if yyl1374 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1374, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1375Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1375Slc + var yyhl1375 bool = l >= 0 + for yyj1375 := 0; ; yyj1375++ { + if yyhl1375 { + if yyj1375 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1375Slc = r.DecodeBytes(yys1375Slc, true, true) + yys1375 := string(yys1375Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1375 { + case "replicas": + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + case "fullyLabeledReplicas": + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + case "readyReplicas": + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + case "observedGeneration": + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys1375) + } // end switch yys1375 + } // end for yyj1375 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ReplicaSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1380 int + var yyb1380 bool + var yyhl1380 bool = l >= 0 + yyj1380++ + if yyhl1380 { + yyb1380 = yyj1380 > l + } else { + yyb1380 = r.CheckBreak() + } + if yyb1380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Replicas = 0 + } else { + x.Replicas = int32(r.DecodeInt(32)) + } + yyj1380++ + if yyhl1380 { + yyb1380 = yyj1380 > l + } else { + yyb1380 = r.CheckBreak() + } + if yyb1380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FullyLabeledReplicas = 0 + } else { + x.FullyLabeledReplicas = int32(r.DecodeInt(32)) + } + yyj1380++ + if yyhl1380 { + yyb1380 = yyj1380 > l + } else { + yyb1380 = r.CheckBreak() + } + if yyb1380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadyReplicas = 0 + } else { + x.ReadyReplicas = int32(r.DecodeInt(32)) + } + yyj1380++ + if yyhl1380 { + yyb1380 = yyj1380 > l + } else { + yyb1380 = r.CheckBreak() + } + if yyb1380 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObservedGeneration = 0 + } else { + x.ObservedGeneration = int64(r.DecodeInt(64)) + } + for { + yyj1380++ + if yyhl1380 { + yyb1380 = yyj1380 > l + } else { + yyb1380 = r.CheckBreak() + } + if yyb1380 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1380-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1385 := z.EncBinary() + _ = yym1385 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1386 := !z.EncBinary() + yy2arr1386 := z.EncBasicHandle().StructToArray + var yyq1386 [4]bool + _, _, _ = yysep1386, yyq1386, yy2arr1386 + const yyr1386 bool = false + yyq1386[0] = x.Kind != "" + yyq1386[1] = x.APIVersion != "" + yyq1386[2] = true + yyq1386[3] = true + var yynn1386 int + if yyr1386 || yy2arr1386 { + r.EncodeArrayStart(4) + } else { + yynn1386 = 0 + for _, b := range yyq1386 { + if b { + yynn1386++ + } + } + r.EncodeMapStart(yynn1386) + yynn1386 = 0 + } + if yyr1386 || yy2arr1386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1386[0] { + yym1388 := z.EncBinary() + _ = yym1388 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1386[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1389 := z.EncBinary() + _ = yym1389 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1386 || yy2arr1386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1386[1] { + yym1391 := z.EncBinary() + _ = yym1391 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1386[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1392 := z.EncBinary() + _ = yym1392 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1386 || yy2arr1386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1386[2] { + yy1394 := &x.ObjectMeta + yy1394.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1386[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1395 := &x.ObjectMeta + yy1395.CodecEncodeSelf(e) + } + } + if yyr1386 || yy2arr1386 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1386[3] { + yy1397 := &x.Spec + yy1397.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1386[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1398 := &x.Spec + yy1398.CodecEncodeSelf(e) + } + } + if yyr1386 || yy2arr1386 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1399 := z.DecBinary() + _ = yym1399 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1400 := r.ContainerType() + if yyct1400 == codecSelferValueTypeMap1234 { + yyl1400 := r.ReadMapStart() + if yyl1400 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1400, d) + } + } else if yyct1400 == codecSelferValueTypeArray1234 { + yyl1400 := r.ReadArrayStart() + if yyl1400 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1400, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1401Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1401Slc + var yyhl1401 bool = l >= 0 + for yyj1401 := 0; ; yyj1401++ { + if yyhl1401 { + if yyj1401 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1401Slc = r.DecodeBytes(yys1401Slc, true, true) + yys1401 := string(yys1401Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1401 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1404 := &x.ObjectMeta + yyv1404.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv1405 := &x.Spec + yyv1405.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1401) + } // end switch yys1401 + } // end for yyj1401 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1406 int + var yyb1406 bool + var yyhl1406 bool = l >= 0 + yyj1406++ + if yyhl1406 { + yyb1406 = yyj1406 > l + } else { + yyb1406 = r.CheckBreak() + } + if yyb1406 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1406++ + if yyhl1406 { + yyb1406 = yyj1406 > l + } else { + yyb1406 = r.CheckBreak() + } + if yyb1406 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1406++ + if yyhl1406 { + yyb1406 = yyj1406 > l + } else { + yyb1406 = r.CheckBreak() + } + if yyb1406 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1409 := &x.ObjectMeta + yyv1409.CodecDecodeSelf(d) + } + yyj1406++ + if yyhl1406 { + yyb1406 = yyj1406 > l + } else { + yyb1406 = r.CheckBreak() + } + if yyb1406 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodSecurityPolicySpec{} + } else { + yyv1410 := &x.Spec + yyv1410.CodecDecodeSelf(d) + } + for { + yyj1406++ + if yyhl1406 { + yyb1406 = yyj1406 > l + } else { + yyb1406 = r.CheckBreak() + } + if yyb1406 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1406-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodSecurityPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1411 := z.EncBinary() + _ = yym1411 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1412 := !z.EncBinary() + yy2arr1412 := z.EncBasicHandle().StructToArray + var yyq1412 [14]bool + _, _, _ = yysep1412, yyq1412, yy2arr1412 + const yyr1412 bool = false + yyq1412[0] = x.Privileged != false + yyq1412[1] = len(x.DefaultAddCapabilities) != 0 + yyq1412[2] = len(x.RequiredDropCapabilities) != 0 + yyq1412[3] = len(x.AllowedCapabilities) != 0 + yyq1412[4] = len(x.Volumes) != 0 + yyq1412[5] = x.HostNetwork != false + yyq1412[6] = len(x.HostPorts) != 0 + yyq1412[7] = x.HostPID != false + yyq1412[8] = x.HostIPC != false + yyq1412[13] = x.ReadOnlyRootFilesystem != false + var yynn1412 int + if yyr1412 || yy2arr1412 { + r.EncodeArrayStart(14) + } else { + yynn1412 = 4 + for _, b := range yyq1412 { + if b { + yynn1412++ + } + } + r.EncodeMapStart(yynn1412) + yynn1412 = 0 + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[0] { + yym1414 := z.EncBinary() + _ = yym1414 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1412[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("privileged")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1415 := z.EncBinary() + _ = yym1415 + if false { + } else { + r.EncodeBool(bool(x.Privileged)) + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[1] { + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym1417 := z.EncBinary() + _ = yym1417 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.DefaultAddCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1412[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("defaultAddCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DefaultAddCapabilities == nil { + r.EncodeNil() + } else { + yym1418 := z.EncBinary() + _ = yym1418 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.DefaultAddCapabilities), e) + } + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[2] { + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym1420 := z.EncBinary() + _ = yym1420 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.RequiredDropCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1412[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("requiredDropCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.RequiredDropCapabilities == nil { + r.EncodeNil() + } else { + yym1421 := z.EncBinary() + _ = yym1421 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.RequiredDropCapabilities), e) + } + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[3] { + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym1423 := z.EncBinary() + _ = yym1423 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.AllowedCapabilities), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1412[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("allowedCapabilities")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.AllowedCapabilities == nil { + r.EncodeNil() + } else { + yym1424 := z.EncBinary() + _ = yym1424 + if false { + } else { + h.encSlicev1_Capability(([]pkg2_v1.Capability)(x.AllowedCapabilities), e) + } + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[4] { + if x.Volumes == nil { + r.EncodeNil() + } else { + yym1426 := z.EncBinary() + _ = yym1426 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1412[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("volumes")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Volumes == nil { + r.EncodeNil() + } else { + yym1427 := z.EncBinary() + _ = yym1427 + if false { + } else { + h.encSliceFSType(([]FSType)(x.Volumes), e) + } + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[5] { + yym1429 := z.EncBinary() + _ = yym1429 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1412[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostNetwork")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1430 := z.EncBinary() + _ = yym1430 + if false { + } else { + r.EncodeBool(bool(x.HostNetwork)) + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[6] { + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym1432 := z.EncBinary() + _ = yym1432 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1412[6] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPorts")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.HostPorts == nil { + r.EncodeNil() + } else { + yym1433 := z.EncBinary() + _ = yym1433 + if false { + } else { + h.encSliceHostPortRange(([]HostPortRange)(x.HostPorts), e) + } + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[7] { + yym1435 := z.EncBinary() + _ = yym1435 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1412[7] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostPID")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1436 := z.EncBinary() + _ = yym1436 + if false { + } else { + r.EncodeBool(bool(x.HostPID)) + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[8] { + yym1438 := z.EncBinary() + _ = yym1438 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1412[8] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("hostIPC")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1439 := z.EncBinary() + _ = yym1439 + if false { + } else { + r.EncodeBool(bool(x.HostIPC)) + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1441 := &x.SELinux + yy1441.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinux")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1442 := &x.SELinux + yy1442.CodecEncodeSelf(e) + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1444 := &x.RunAsUser + yy1444.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("runAsUser")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1445 := &x.RunAsUser + yy1445.CodecEncodeSelf(e) + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1447 := &x.SupplementalGroups + yy1447.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("supplementalGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1448 := &x.SupplementalGroups + yy1448.CodecEncodeSelf(e) + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1450 := &x.FSGroup + yy1450.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("fsGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1451 := &x.FSGroup + yy1451.CodecEncodeSelf(e) + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1412[13] { + yym1453 := z.EncBinary() + _ = yym1453 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } else { + r.EncodeBool(false) + } + } else { + if yyq1412[13] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("readOnlyRootFilesystem")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1454 := z.EncBinary() + _ = yym1454 + if false { + } else { + r.EncodeBool(bool(x.ReadOnlyRootFilesystem)) + } + } + } + if yyr1412 || yy2arr1412 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1455 := z.DecBinary() + _ = yym1455 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1456 := r.ContainerType() + if yyct1456 == codecSelferValueTypeMap1234 { + yyl1456 := r.ReadMapStart() + if yyl1456 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1456, d) + } + } else if yyct1456 == codecSelferValueTypeArray1234 { + yyl1456 := r.ReadArrayStart() + if yyl1456 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1456, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1457Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1457Slc + var yyhl1457 bool = l >= 0 + for yyj1457 := 0; ; yyj1457++ { + if yyhl1457 { + if yyj1457 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1457Slc = r.DecodeBytes(yys1457Slc, true, true) + yys1457 := string(yys1457Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1457 { + case "privileged": + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + x.Privileged = bool(r.DecodeBool()) + } + case "defaultAddCapabilities": + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv1459 := &x.DefaultAddCapabilities + yym1460 := z.DecBinary() + _ = yym1460 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1459), d) + } + } + case "requiredDropCapabilities": + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv1461 := &x.RequiredDropCapabilities + yym1462 := z.DecBinary() + _ = yym1462 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1461), d) + } + } + case "allowedCapabilities": + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv1463 := &x.AllowedCapabilities + yym1464 := z.DecBinary() + _ = yym1464 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1463), d) + } + } + case "volumes": + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv1465 := &x.Volumes + yym1466 := z.DecBinary() + _ = yym1466 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv1465), d) + } + } + case "hostNetwork": + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + case "hostPorts": + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv1468 := &x.HostPorts + yym1469 := z.DecBinary() + _ = yym1469 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv1468), d) + } + } + case "hostPID": + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + case "hostIPC": + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + case "seLinux": + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv1472 := &x.SELinux + yyv1472.CodecDecodeSelf(d) + } + case "runAsUser": + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv1473 := &x.RunAsUser + yyv1473.CodecDecodeSelf(d) + } + case "supplementalGroups": + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv1474 := &x.SupplementalGroups + yyv1474.CodecDecodeSelf(d) + } + case "fsGroup": + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv1475 := &x.FSGroup + yyv1475.CodecDecodeSelf(d) + } + case "readOnlyRootFilesystem": + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + x.ReadOnlyRootFilesystem = bool(r.DecodeBool()) + } + default: + z.DecStructFieldNotFound(-1, yys1457) + } // end switch yys1457 + } // end for yyj1457 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1477 int + var yyb1477 bool + var yyhl1477 bool = l >= 0 + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Privileged = false + } else { + x.Privileged = bool(r.DecodeBool()) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DefaultAddCapabilities = nil + } else { + yyv1479 := &x.DefaultAddCapabilities + yym1480 := z.DecBinary() + _ = yym1480 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1479), d) + } + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RequiredDropCapabilities = nil + } else { + yyv1481 := &x.RequiredDropCapabilities + yym1482 := z.DecBinary() + _ = yym1482 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1481), d) + } + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AllowedCapabilities = nil + } else { + yyv1483 := &x.AllowedCapabilities + yym1484 := z.DecBinary() + _ = yym1484 + if false { + } else { + h.decSlicev1_Capability((*[]pkg2_v1.Capability)(yyv1483), d) + } + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Volumes = nil + } else { + yyv1485 := &x.Volumes + yym1486 := z.DecBinary() + _ = yym1486 + if false { + } else { + h.decSliceFSType((*[]FSType)(yyv1485), d) + } + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostNetwork = false + } else { + x.HostNetwork = bool(r.DecodeBool()) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPorts = nil + } else { + yyv1488 := &x.HostPorts + yym1489 := z.DecBinary() + _ = yym1489 + if false { + } else { + h.decSliceHostPortRange((*[]HostPortRange)(yyv1488), d) + } + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostPID = false + } else { + x.HostPID = bool(r.DecodeBool()) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.HostIPC = false + } else { + x.HostIPC = bool(r.DecodeBool()) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SELinux = SELinuxStrategyOptions{} + } else { + yyv1492 := &x.SELinux + yyv1492.CodecDecodeSelf(d) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RunAsUser = RunAsUserStrategyOptions{} + } else { + yyv1493 := &x.RunAsUser + yyv1493.CodecDecodeSelf(d) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.SupplementalGroups = SupplementalGroupsStrategyOptions{} + } else { + yyv1494 := &x.SupplementalGroups + yyv1494.CodecDecodeSelf(d) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.FSGroup = FSGroupStrategyOptions{} + } else { + yyv1495 := &x.FSGroup + yyv1495.CodecDecodeSelf(d) + } + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ReadOnlyRootFilesystem = false + } else { + x.ReadOnlyRootFilesystem = bool(r.DecodeBool()) + } + for { + yyj1477++ + if yyhl1477 { + yyb1477 = yyj1477 > l + } else { + yyb1477 = r.CheckBreak() + } + if yyb1477 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1477-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1497 := z.EncBinary() + _ = yym1497 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1498 := z.DecBinary() + _ = yym1498 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *HostPortRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1499 := z.EncBinary() + _ = yym1499 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1500 := !z.EncBinary() + yy2arr1500 := z.EncBasicHandle().StructToArray + var yyq1500 [2]bool + _, _, _ = yysep1500, yyq1500, yy2arr1500 + const yyr1500 bool = false + var yynn1500 int + if yyr1500 || yy2arr1500 { + r.EncodeArrayStart(2) + } else { + yynn1500 = 2 + for _, b := range yyq1500 { + if b { + yynn1500++ + } + } + r.EncodeMapStart(yynn1500) + yynn1500 = 0 + } + if yyr1500 || yy2arr1500 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1502 := z.EncBinary() + _ = yym1502 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1503 := z.EncBinary() + _ = yym1503 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr1500 || yy2arr1500 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1505 := z.EncBinary() + _ = yym1505 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1506 := z.EncBinary() + _ = yym1506 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr1500 || yy2arr1500 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *HostPortRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1507 := z.DecBinary() + _ = yym1507 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1508 := r.ContainerType() + if yyct1508 == codecSelferValueTypeMap1234 { + yyl1508 := r.ReadMapStart() + if yyl1508 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1508, d) + } + } else if yyct1508 == codecSelferValueTypeArray1234 { + yyl1508 := r.ReadArrayStart() + if yyl1508 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1508, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *HostPortRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1509Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1509Slc + var yyhl1509 bool = l >= 0 + for yyj1509 := 0; ; yyj1509++ { + if yyhl1509 { + if yyj1509 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1509Slc = r.DecodeBytes(yys1509Slc, true, true) + yys1509 := string(yys1509Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1509 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int32(r.DecodeInt(32)) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys1509) + } // end switch yys1509 + } // end for yyj1509 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *HostPortRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1512 int + var yyb1512 bool + var yyhl1512 bool = l >= 0 + yyj1512++ + if yyhl1512 { + yyb1512 = yyj1512 > l + } else { + yyb1512 = r.CheckBreak() + } + if yyb1512 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int32(r.DecodeInt(32)) + } + yyj1512++ + if yyhl1512 { + yyb1512 = yyj1512 > l + } else { + yyb1512 = r.CheckBreak() + } + if yyb1512 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int32(r.DecodeInt(32)) + } + for { + yyj1512++ + if yyhl1512 { + yyb1512 = yyj1512 > l + } else { + yyb1512 = r.CheckBreak() + } + if yyb1512 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1512-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *SELinuxStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1515 := z.EncBinary() + _ = yym1515 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1516 := !z.EncBinary() + yy2arr1516 := z.EncBasicHandle().StructToArray + var yyq1516 [2]bool + _, _, _ = yysep1516, yyq1516, yy2arr1516 + const yyr1516 bool = false + yyq1516[1] = x.SELinuxOptions != nil + var yynn1516 int + if yyr1516 || yy2arr1516 { + r.EncodeArrayStart(2) + } else { + yynn1516 = 1 + for _, b := range yyq1516 { + if b { + yynn1516++ + } + } + r.EncodeMapStart(yynn1516) + yynn1516 = 0 + } + if yyr1516 || yy2arr1516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr1516 || yy2arr1516 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1516[1] { + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1516[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("seLinuxOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.SELinuxOptions == nil { + r.EncodeNil() + } else { + x.SELinuxOptions.CodecEncodeSelf(e) + } + } + } + if yyr1516 || yy2arr1516 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SELinuxStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1519 := z.DecBinary() + _ = yym1519 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1520 := r.ContainerType() + if yyct1520 == codecSelferValueTypeMap1234 { + yyl1520 := r.ReadMapStart() + if yyl1520 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1520, d) + } + } else if yyct1520 == codecSelferValueTypeArray1234 { + yyl1520 := r.ReadArrayStart() + if yyl1520 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1520, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1521Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1521Slc + var yyhl1521 bool = l >= 0 + for yyj1521 := 0; ; yyj1521++ { + if yyhl1521 { + if yyj1521 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1521Slc = r.DecodeBytes(yys1521Slc, true, true) + yys1521 := string(yys1521Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1521 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SELinuxStrategy(r.DecodeString()) + } + case "seLinuxOptions": + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg2_v1.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1521) + } // end switch yys1521 + } // end for yyj1521 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SELinuxStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1524 int + var yyb1524 bool + var yyhl1524 bool = l >= 0 + yyj1524++ + if yyhl1524 { + yyb1524 = yyj1524 > l + } else { + yyb1524 = r.CheckBreak() + } + if yyb1524 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SELinuxStrategy(r.DecodeString()) + } + yyj1524++ + if yyhl1524 { + yyb1524 = yyj1524 > l + } else { + yyb1524 = r.CheckBreak() + } + if yyb1524 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.SELinuxOptions != nil { + x.SELinuxOptions = nil + } + } else { + if x.SELinuxOptions == nil { + x.SELinuxOptions = new(pkg2_v1.SELinuxOptions) + } + x.SELinuxOptions.CodecDecodeSelf(d) + } + for { + yyj1524++ + if yyhl1524 { + yyb1524 = yyj1524 > l + } else { + yyb1524 = r.CheckBreak() + } + if yyb1524 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1524-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SELinuxStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1527 := z.EncBinary() + _ = yym1527 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SELinuxStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1528 := z.DecBinary() + _ = yym1528 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *RunAsUserStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1529 := z.EncBinary() + _ = yym1529 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1530 := !z.EncBinary() + yy2arr1530 := z.EncBasicHandle().StructToArray + var yyq1530 [2]bool + _, _, _ = yysep1530, yyq1530, yy2arr1530 + const yyr1530 bool = false + yyq1530[1] = len(x.Ranges) != 0 + var yynn1530 int + if yyr1530 || yy2arr1530 { + r.EncodeArrayStart(2) + } else { + yynn1530 = 1 + for _, b := range yyq1530 { + if b { + yynn1530++ + } + } + r.EncodeMapStart(yynn1530) + yynn1530 = 0 + } + if yyr1530 || yy2arr1530 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + x.Rule.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + if yyr1530 || yy2arr1530 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1530[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1533 := z.EncBinary() + _ = yym1533 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1530[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1534 := z.EncBinary() + _ = yym1534 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1530 || yy2arr1530 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RunAsUserStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1535 := z.DecBinary() + _ = yym1535 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1536 := r.ContainerType() + if yyct1536 == codecSelferValueTypeMap1234 { + yyl1536 := r.ReadMapStart() + if yyl1536 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1536, d) + } + } else if yyct1536 == codecSelferValueTypeArray1234 { + yyl1536 := r.ReadArrayStart() + if yyl1536 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1536, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1537Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1537Slc + var yyhl1537 bool = l >= 0 + for yyj1537 := 0; ; yyj1537++ { + if yyhl1537 { + if yyj1537 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1537Slc = r.DecodeBytes(yys1537Slc, true, true) + yys1537 := string(yys1537Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1537 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = RunAsUserStrategy(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1539 := &x.Ranges + yym1540 := z.DecBinary() + _ = yym1540 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1539), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1537) + } // end switch yys1537 + } // end for yyj1537 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RunAsUserStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1541 int + var yyb1541 bool + var yyhl1541 bool = l >= 0 + yyj1541++ + if yyhl1541 { + yyb1541 = yyj1541 > l + } else { + yyb1541 = r.CheckBreak() + } + if yyb1541 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = RunAsUserStrategy(r.DecodeString()) + } + yyj1541++ + if yyhl1541 { + yyb1541 = yyj1541 > l + } else { + yyb1541 = r.CheckBreak() + } + if yyb1541 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1543 := &x.Ranges + yym1544 := z.DecBinary() + _ = yym1544 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1543), d) + } + } + for { + yyj1541++ + if yyhl1541 { + yyb1541 = yyj1541 > l + } else { + yyb1541 = r.CheckBreak() + } + if yyb1541 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1541-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *IDRange) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1545 := z.EncBinary() + _ = yym1545 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1546 := !z.EncBinary() + yy2arr1546 := z.EncBasicHandle().StructToArray + var yyq1546 [2]bool + _, _, _ = yysep1546, yyq1546, yy2arr1546 + const yyr1546 bool = false + var yynn1546 int + if yyr1546 || yy2arr1546 { + r.EncodeArrayStart(2) + } else { + yynn1546 = 2 + for _, b := range yyq1546 { + if b { + yynn1546++ + } + } + r.EncodeMapStart(yynn1546) + yynn1546 = 0 + } + if yyr1546 || yy2arr1546 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1548 := z.EncBinary() + _ = yym1548 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("min")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1549 := z.EncBinary() + _ = yym1549 + if false { + } else { + r.EncodeInt(int64(x.Min)) + } + } + if yyr1546 || yy2arr1546 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1551 := z.EncBinary() + _ = yym1551 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("max")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1552 := z.EncBinary() + _ = yym1552 + if false { + } else { + r.EncodeInt(int64(x.Max)) + } + } + if yyr1546 || yy2arr1546 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *IDRange) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1553 := z.DecBinary() + _ = yym1553 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1554 := r.ContainerType() + if yyct1554 == codecSelferValueTypeMap1234 { + yyl1554 := r.ReadMapStart() + if yyl1554 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1554, d) + } + } else if yyct1554 == codecSelferValueTypeArray1234 { + yyl1554 := r.ReadArrayStart() + if yyl1554 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1554, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *IDRange) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1555Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1555Slc + var yyhl1555 bool = l >= 0 + for yyj1555 := 0; ; yyj1555++ { + if yyhl1555 { + if yyj1555 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1555Slc = r.DecodeBytes(yys1555Slc, true, true) + yys1555 := string(yys1555Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1555 { + case "min": + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int64(r.DecodeInt(64)) + } + case "max": + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int64(r.DecodeInt(64)) + } + default: + z.DecStructFieldNotFound(-1, yys1555) + } // end switch yys1555 + } // end for yyj1555 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *IDRange) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1558 int + var yyb1558 bool + var yyhl1558 bool = l >= 0 + yyj1558++ + if yyhl1558 { + yyb1558 = yyj1558 > l + } else { + yyb1558 = r.CheckBreak() + } + if yyb1558 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Min = 0 + } else { + x.Min = int64(r.DecodeInt(64)) + } + yyj1558++ + if yyhl1558 { + yyb1558 = yyj1558 > l + } else { + yyb1558 = r.CheckBreak() + } + if yyb1558 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Max = 0 + } else { + x.Max = int64(r.DecodeInt(64)) + } + for { + yyj1558++ + if yyhl1558 { + yyb1558 = yyj1558 > l + } else { + yyb1558 = r.CheckBreak() + } + if yyb1558 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1558-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x RunAsUserStrategy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1561 := z.EncBinary() + _ = yym1561 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *RunAsUserStrategy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1562 := z.DecBinary() + _ = yym1562 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *FSGroupStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1563 := z.EncBinary() + _ = yym1563 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1564 := !z.EncBinary() + yy2arr1564 := z.EncBasicHandle().StructToArray + var yyq1564 [2]bool + _, _, _ = yysep1564, yyq1564, yy2arr1564 + const yyr1564 bool = false + yyq1564[0] = x.Rule != "" + yyq1564[1] = len(x.Ranges) != 0 + var yynn1564 int + if yyr1564 || yy2arr1564 { + r.EncodeArrayStart(2) + } else { + yynn1564 = 0 + for _, b := range yyq1564 { + if b { + yynn1564++ + } + } + r.EncodeMapStart(yynn1564) + yynn1564 = 0 + } + if yyr1564 || yy2arr1564 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1564[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1564[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr1564 || yy2arr1564 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1564[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1567 := z.EncBinary() + _ = yym1567 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1564[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1568 := z.EncBinary() + _ = yym1568 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1564 || yy2arr1564 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *FSGroupStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1569 := z.DecBinary() + _ = yym1569 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1570 := r.ContainerType() + if yyct1570 == codecSelferValueTypeMap1234 { + yyl1570 := r.ReadMapStart() + if yyl1570 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1570, d) + } + } else if yyct1570 == codecSelferValueTypeArray1234 { + yyl1570 := r.ReadArrayStart() + if yyl1570 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1570, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1571Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1571Slc + var yyhl1571 bool = l >= 0 + for yyj1571 := 0; ; yyj1571++ { + if yyhl1571 { + if yyj1571 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1571Slc = r.DecodeBytes(yys1571Slc, true, true) + yys1571 := string(yys1571Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1571 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = FSGroupStrategyType(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1573 := &x.Ranges + yym1574 := z.DecBinary() + _ = yym1574 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1573), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1571) + } // end switch yys1571 + } // end for yyj1571 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *FSGroupStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1575 int + var yyb1575 bool + var yyhl1575 bool = l >= 0 + yyj1575++ + if yyhl1575 { + yyb1575 = yyj1575 > l + } else { + yyb1575 = r.CheckBreak() + } + if yyb1575 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = FSGroupStrategyType(r.DecodeString()) + } + yyj1575++ + if yyhl1575 { + yyb1575 = yyj1575 > l + } else { + yyb1575 = r.CheckBreak() + } + if yyb1575 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1577 := &x.Ranges + yym1578 := z.DecBinary() + _ = yym1578 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1577), d) + } + } + for { + yyj1575++ + if yyhl1575 { + yyb1575 = yyj1575 > l + } else { + yyb1575 = r.CheckBreak() + } + if yyb1575 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1575-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x FSGroupStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1579 := z.EncBinary() + _ = yym1579 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *FSGroupStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1580 := z.DecBinary() + _ = yym1580 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1581 := z.EncBinary() + _ = yym1581 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1582 := !z.EncBinary() + yy2arr1582 := z.EncBasicHandle().StructToArray + var yyq1582 [2]bool + _, _, _ = yysep1582, yyq1582, yy2arr1582 + const yyr1582 bool = false + yyq1582[0] = x.Rule != "" + yyq1582[1] = len(x.Ranges) != 0 + var yynn1582 int + if yyr1582 || yy2arr1582 { + r.EncodeArrayStart(2) + } else { + yynn1582 = 0 + for _, b := range yyq1582 { + if b { + yynn1582++ + } + } + r.EncodeMapStart(yynn1582) + yynn1582 = 0 + } + if yyr1582 || yy2arr1582 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1582[0] { + x.Rule.CodecEncodeSelf(e) + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1582[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rule")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + x.Rule.CodecEncodeSelf(e) + } + } + if yyr1582 || yy2arr1582 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1582[1] { + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1585 := z.EncBinary() + _ = yym1585 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1582[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ranges")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ranges == nil { + r.EncodeNil() + } else { + yym1586 := z.EncBinary() + _ = yym1586 + if false { + } else { + h.encSliceIDRange(([]IDRange)(x.Ranges), e) + } + } + } + } + if yyr1582 || yy2arr1582 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *SupplementalGroupsStrategyOptions) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1587 := z.DecBinary() + _ = yym1587 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1588 := r.ContainerType() + if yyct1588 == codecSelferValueTypeMap1234 { + yyl1588 := r.ReadMapStart() + if yyl1588 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1588, d) + } + } else if yyct1588 == codecSelferValueTypeArray1234 { + yyl1588 := r.ReadArrayStart() + if yyl1588 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1588, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1589Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1589Slc + var yyhl1589 bool = l >= 0 + for yyj1589 := 0; ; yyj1589++ { + if yyhl1589 { + if yyj1589 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1589Slc = r.DecodeBytes(yys1589Slc, true, true) + yys1589 := string(yys1589Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1589 { + case "rule": + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SupplementalGroupsStrategyType(r.DecodeString()) + } + case "ranges": + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1591 := &x.Ranges + yym1592 := z.DecBinary() + _ = yym1592 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1591), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1589) + } // end switch yys1589 + } // end for yyj1589 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *SupplementalGroupsStrategyOptions) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1593 int + var yyb1593 bool + var yyhl1593 bool = l >= 0 + yyj1593++ + if yyhl1593 { + yyb1593 = yyj1593 > l + } else { + yyb1593 = r.CheckBreak() + } + if yyb1593 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rule = "" + } else { + x.Rule = SupplementalGroupsStrategyType(r.DecodeString()) + } + yyj1593++ + if yyhl1593 { + yyb1593 = yyj1593 > l + } else { + yyb1593 = r.CheckBreak() + } + if yyb1593 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ranges = nil + } else { + yyv1595 := &x.Ranges + yym1596 := z.DecBinary() + _ = yym1596 + if false { + } else { + h.decSliceIDRange((*[]IDRange)(yyv1595), d) + } + } + for { + yyj1593++ + if yyhl1593 { + yyb1593 = yyj1593 > l + } else { + yyb1593 = r.CheckBreak() + } + if yyb1593 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1593-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x SupplementalGroupsStrategyType) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + yym1597 := z.EncBinary() + _ = yym1597 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x)) + } +} + +func (x *SupplementalGroupsStrategyType) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1598 := z.DecBinary() + _ = yym1598 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + *((*string)(x)) = r.DecodeString() + } +} + +func (x *PodSecurityPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1599 := z.EncBinary() + _ = yym1599 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1600 := !z.EncBinary() + yy2arr1600 := z.EncBasicHandle().StructToArray + var yyq1600 [4]bool + _, _, _ = yysep1600, yyq1600, yy2arr1600 + const yyr1600 bool = false + yyq1600[0] = x.Kind != "" + yyq1600[1] = x.APIVersion != "" + yyq1600[2] = true + var yynn1600 int + if yyr1600 || yy2arr1600 { + r.EncodeArrayStart(4) + } else { + yynn1600 = 1 + for _, b := range yyq1600 { + if b { + yynn1600++ + } + } + r.EncodeMapStart(yynn1600) + yynn1600 = 0 + } + if yyr1600 || yy2arr1600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1600[0] { + yym1602 := z.EncBinary() + _ = yym1602 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1600[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1603 := z.EncBinary() + _ = yym1603 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1600 || yy2arr1600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1600[1] { + yym1605 := z.EncBinary() + _ = yym1605 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1600[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1606 := z.EncBinary() + _ = yym1606 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1600 || yy2arr1600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1600[2] { + yy1608 := &x.ListMeta + yym1609 := z.EncBinary() + _ = yym1609 + if false { + } else if z.HasExtensions() && z.EncExt(yy1608) { + } else { + z.EncFallback(yy1608) + } + } else { + r.EncodeNil() + } + } else { + if yyq1600[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1610 := &x.ListMeta + yym1611 := z.EncBinary() + _ = yym1611 + if false { + } else if z.HasExtensions() && z.EncExt(yy1610) { + } else { + z.EncFallback(yy1610) + } + } + } + if yyr1600 || yy2arr1600 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1613 := z.EncBinary() + _ = yym1613 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1614 := z.EncBinary() + _ = yym1614 + if false { + } else { + h.encSlicePodSecurityPolicy(([]PodSecurityPolicy)(x.Items), e) + } + } + } + if yyr1600 || yy2arr1600 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodSecurityPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1615 := z.DecBinary() + _ = yym1615 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1616 := r.ContainerType() + if yyct1616 == codecSelferValueTypeMap1234 { + yyl1616 := r.ReadMapStart() + if yyl1616 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1616, d) + } + } else if yyct1616 == codecSelferValueTypeArray1234 { + yyl1616 := r.ReadArrayStart() + if yyl1616 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1616, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1617Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1617Slc + var yyhl1617 bool = l >= 0 + for yyj1617 := 0; ; yyj1617++ { + if yyhl1617 { + if yyj1617 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1617Slc = r.DecodeBytes(yys1617Slc, true, true) + yys1617 := string(yys1617Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1617 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1620 := &x.ListMeta + yym1621 := z.DecBinary() + _ = yym1621 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1620) { + } else { + z.DecFallback(yyv1620, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1622 := &x.Items + yym1623 := z.DecBinary() + _ = yym1623 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv1622), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1617) + } // end switch yys1617 + } // end for yyj1617 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodSecurityPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1624 int + var yyb1624 bool + var yyhl1624 bool = l >= 0 + yyj1624++ + if yyhl1624 { + yyb1624 = yyj1624 > l + } else { + yyb1624 = r.CheckBreak() + } + if yyb1624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1624++ + if yyhl1624 { + yyb1624 = yyj1624 > l + } else { + yyb1624 = r.CheckBreak() + } + if yyb1624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1624++ + if yyhl1624 { + yyb1624 = yyj1624 > l + } else { + yyb1624 = r.CheckBreak() + } + if yyb1624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1627 := &x.ListMeta + yym1628 := z.DecBinary() + _ = yym1628 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1627) { + } else { + z.DecFallback(yyv1627, false) + } + } + yyj1624++ + if yyhl1624 { + yyb1624 = yyj1624 > l + } else { + yyb1624 = r.CheckBreak() + } + if yyb1624 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1629 := &x.Items + yym1630 := z.DecBinary() + _ = yym1630 + if false { + } else { + h.decSlicePodSecurityPolicy((*[]PodSecurityPolicy)(yyv1629), d) + } + } + for { + yyj1624++ + if yyhl1624 { + yyb1624 = yyj1624 > l + } else { + yyb1624 = r.CheckBreak() + } + if yyb1624 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1624-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicy) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1631 := z.EncBinary() + _ = yym1631 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1632 := !z.EncBinary() + yy2arr1632 := z.EncBasicHandle().StructToArray + var yyq1632 [4]bool + _, _, _ = yysep1632, yyq1632, yy2arr1632 + const yyr1632 bool = false + yyq1632[0] = x.Kind != "" + yyq1632[1] = x.APIVersion != "" + yyq1632[2] = true + yyq1632[3] = true + var yynn1632 int + if yyr1632 || yy2arr1632 { + r.EncodeArrayStart(4) + } else { + yynn1632 = 0 + for _, b := range yyq1632 { + if b { + yynn1632++ + } + } + r.EncodeMapStart(yynn1632) + yynn1632 = 0 + } + if yyr1632 || yy2arr1632 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1632[0] { + yym1634 := z.EncBinary() + _ = yym1634 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1632[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1635 := z.EncBinary() + _ = yym1635 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1632 || yy2arr1632 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1632[1] { + yym1637 := z.EncBinary() + _ = yym1637 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1632[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1638 := z.EncBinary() + _ = yym1638 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1632 || yy2arr1632 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1632[2] { + yy1640 := &x.ObjectMeta + yy1640.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1632[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1641 := &x.ObjectMeta + yy1641.CodecEncodeSelf(e) + } + } + if yyr1632 || yy2arr1632 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1632[3] { + yy1643 := &x.Spec + yy1643.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq1632[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1644 := &x.Spec + yy1644.CodecEncodeSelf(e) + } + } + if yyr1632 || yy2arr1632 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicy) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1645 := z.DecBinary() + _ = yym1645 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1646 := r.ContainerType() + if yyct1646 == codecSelferValueTypeMap1234 { + yyl1646 := r.ReadMapStart() + if yyl1646 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1646, d) + } + } else if yyct1646 == codecSelferValueTypeArray1234 { + yyl1646 := r.ReadArrayStart() + if yyl1646 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1646, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicy) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1647Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1647Slc + var yyhl1647 bool = l >= 0 + for yyj1647 := 0; ; yyj1647++ { + if yyhl1647 { + if yyj1647 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1647Slc = r.DecodeBytes(yys1647Slc, true, true) + yys1647 := string(yys1647Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1647 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1650 := &x.ObjectMeta + yyv1650.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv1651 := &x.Spec + yyv1651.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1647) + } // end switch yys1647 + } // end for yyj1647 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicy) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1652 int + var yyb1652 bool + var yyhl1652 bool = l >= 0 + yyj1652++ + if yyhl1652 { + yyb1652 = yyj1652 > l + } else { + yyb1652 = r.CheckBreak() + } + if yyb1652 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1652++ + if yyhl1652 { + yyb1652 = yyj1652 > l + } else { + yyb1652 = r.CheckBreak() + } + if yyb1652 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1652++ + if yyhl1652 { + yyb1652 = yyj1652 > l + } else { + yyb1652 = r.CheckBreak() + } + if yyb1652 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv1655 := &x.ObjectMeta + yyv1655.CodecDecodeSelf(d) + } + yyj1652++ + if yyhl1652 { + yyb1652 = yyj1652 > l + } else { + yyb1652 = r.CheckBreak() + } + if yyb1652 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = NetworkPolicySpec{} + } else { + yyv1656 := &x.Spec + yyv1656.CodecDecodeSelf(d) + } + for { + yyj1652++ + if yyhl1652 { + yyb1652 = yyj1652 > l + } else { + yyb1652 = r.CheckBreak() + } + if yyb1652 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1652-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicySpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1657 := z.EncBinary() + _ = yym1657 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1658 := !z.EncBinary() + yy2arr1658 := z.EncBasicHandle().StructToArray + var yyq1658 [2]bool + _, _, _ = yysep1658, yyq1658, yy2arr1658 + const yyr1658 bool = false + yyq1658[1] = len(x.Ingress) != 0 + var yynn1658 int + if yyr1658 || yy2arr1658 { + r.EncodeArrayStart(2) + } else { + yynn1658 = 1 + for _, b := range yyq1658 { + if b { + yynn1658++ + } + } + r.EncodeMapStart(yynn1658) + yynn1658 = 0 + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1660 := &x.PodSelector + yy1660.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1661 := &x.PodSelector + yy1661.CodecEncodeSelf(e) + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1658[1] { + if x.Ingress == nil { + r.EncodeNil() + } else { + yym1663 := z.EncBinary() + _ = yym1663 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1658[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ingress")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ingress == nil { + r.EncodeNil() + } else { + yym1664 := z.EncBinary() + _ = yym1664 + if false { + } else { + h.encSliceNetworkPolicyIngressRule(([]NetworkPolicyIngressRule)(x.Ingress), e) + } + } + } + } + if yyr1658 || yy2arr1658 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicySpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1665 := z.DecBinary() + _ = yym1665 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1666 := r.ContainerType() + if yyct1666 == codecSelferValueTypeMap1234 { + yyl1666 := r.ReadMapStart() + if yyl1666 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1666, d) + } + } else if yyct1666 == codecSelferValueTypeArray1234 { + yyl1666 := r.ReadArrayStart() + if yyl1666 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1666, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1667Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1667Slc + var yyhl1667 bool = l >= 0 + for yyj1667 := 0; ; yyj1667++ { + if yyhl1667 { + if yyj1667 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1667Slc = r.DecodeBytes(yys1667Slc, true, true) + yys1667 := string(yys1667Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1667 { + case "podSelector": + if r.TryDecodeAsNil() { + x.PodSelector = LabelSelector{} + } else { + yyv1668 := &x.PodSelector + yyv1668.CodecDecodeSelf(d) + } + case "ingress": + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv1669 := &x.Ingress + yym1670 := z.DecBinary() + _ = yym1670 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv1669), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1667) + } // end switch yys1667 + } // end for yyj1667 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicySpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1671 int + var yyb1671 bool + var yyhl1671 bool = l >= 0 + yyj1671++ + if yyhl1671 { + yyb1671 = yyj1671 > l + } else { + yyb1671 = r.CheckBreak() + } + if yyb1671 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodSelector = LabelSelector{} + } else { + yyv1672 := &x.PodSelector + yyv1672.CodecDecodeSelf(d) + } + yyj1671++ + if yyhl1671 { + yyb1671 = yyj1671 > l + } else { + yyb1671 = r.CheckBreak() + } + if yyb1671 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ingress = nil + } else { + yyv1673 := &x.Ingress + yym1674 := z.DecBinary() + _ = yym1674 + if false { + } else { + h.decSliceNetworkPolicyIngressRule((*[]NetworkPolicyIngressRule)(yyv1673), d) + } + } + for { + yyj1671++ + if yyhl1671 { + yyb1671 = yyj1671 > l + } else { + yyb1671 = r.CheckBreak() + } + if yyb1671 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1671-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyIngressRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1675 := z.EncBinary() + _ = yym1675 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1676 := !z.EncBinary() + yy2arr1676 := z.EncBasicHandle().StructToArray + var yyq1676 [2]bool + _, _, _ = yysep1676, yyq1676, yy2arr1676 + const yyr1676 bool = false + yyq1676[0] = len(x.Ports) != 0 + yyq1676[1] = len(x.From) != 0 + var yynn1676 int + if yyr1676 || yy2arr1676 { + r.EncodeArrayStart(2) + } else { + yynn1676 = 0 + for _, b := range yyq1676 { + if b { + yynn1676++ + } + } + r.EncodeMapStart(yynn1676) + yynn1676 = 0 + } + if yyr1676 || yy2arr1676 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1676[0] { + if x.Ports == nil { + r.EncodeNil() + } else { + yym1678 := z.EncBinary() + _ = yym1678 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1676[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("ports")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Ports == nil { + r.EncodeNil() + } else { + yym1679 := z.EncBinary() + _ = yym1679 + if false { + } else { + h.encSliceNetworkPolicyPort(([]NetworkPolicyPort)(x.Ports), e) + } + } + } + } + if yyr1676 || yy2arr1676 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1676[1] { + if x.From == nil { + r.EncodeNil() + } else { + yym1681 := z.EncBinary() + _ = yym1681 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1676[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("from")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.From == nil { + r.EncodeNil() + } else { + yym1682 := z.EncBinary() + _ = yym1682 + if false { + } else { + h.encSliceNetworkPolicyPeer(([]NetworkPolicyPeer)(x.From), e) + } + } + } + } + if yyr1676 || yy2arr1676 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyIngressRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1683 := z.DecBinary() + _ = yym1683 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1684 := r.ContainerType() + if yyct1684 == codecSelferValueTypeMap1234 { + yyl1684 := r.ReadMapStart() + if yyl1684 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1684, d) + } + } else if yyct1684 == codecSelferValueTypeArray1234 { + yyl1684 := r.ReadArrayStart() + if yyl1684 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1684, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1685Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1685Slc + var yyhl1685 bool = l >= 0 + for yyj1685 := 0; ; yyj1685++ { + if yyhl1685 { + if yyj1685 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1685Slc = r.DecodeBytes(yys1685Slc, true, true) + yys1685 := string(yys1685Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1685 { + case "ports": + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1686 := &x.Ports + yym1687 := z.DecBinary() + _ = yym1687 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv1686), d) + } + } + case "from": + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv1688 := &x.From + yym1689 := z.DecBinary() + _ = yym1689 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv1688), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1685) + } // end switch yys1685 + } // end for yyj1685 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyIngressRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1690 int + var yyb1690 bool + var yyhl1690 bool = l >= 0 + yyj1690++ + if yyhl1690 { + yyb1690 = yyj1690 > l + } else { + yyb1690 = r.CheckBreak() + } + if yyb1690 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Ports = nil + } else { + yyv1691 := &x.Ports + yym1692 := z.DecBinary() + _ = yym1692 + if false { + } else { + h.decSliceNetworkPolicyPort((*[]NetworkPolicyPort)(yyv1691), d) + } + } + yyj1690++ + if yyhl1690 { + yyb1690 = yyj1690 > l + } else { + yyb1690 = r.CheckBreak() + } + if yyb1690 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.From = nil + } else { + yyv1693 := &x.From + yym1694 := z.DecBinary() + _ = yym1694 + if false { + } else { + h.decSliceNetworkPolicyPeer((*[]NetworkPolicyPeer)(yyv1693), d) + } + } + for { + yyj1690++ + if yyhl1690 { + yyb1690 = yyj1690 > l + } else { + yyb1690 = r.CheckBreak() + } + if yyb1690 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1690-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPort) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1695 := z.EncBinary() + _ = yym1695 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1696 := !z.EncBinary() + yy2arr1696 := z.EncBasicHandle().StructToArray + var yyq1696 [2]bool + _, _, _ = yysep1696, yyq1696, yy2arr1696 + const yyr1696 bool = false + yyq1696[0] = x.Protocol != nil + yyq1696[1] = x.Port != nil + var yynn1696 int + if yyr1696 || yy2arr1696 { + r.EncodeArrayStart(2) + } else { + yynn1696 = 0 + for _, b := range yyq1696 { + if b { + yynn1696++ + } + } + r.EncodeMapStart(yynn1696) + yynn1696 = 0 + } + if yyr1696 || yy2arr1696 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1696[0] { + if x.Protocol == nil { + r.EncodeNil() + } else { + yy1698 := *x.Protocol + yym1699 := z.EncBinary() + _ = yym1699 + if false { + } else if z.HasExtensions() && z.EncExt(yy1698) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1698)) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1696[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("protocol")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Protocol == nil { + r.EncodeNil() + } else { + yy1700 := *x.Protocol + yym1701 := z.EncBinary() + _ = yym1701 + if false { + } else if z.HasExtensions() && z.EncExt(yy1700) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yy1700)) + } + } + } + } + if yyr1696 || yy2arr1696 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1696[1] { + if x.Port == nil { + r.EncodeNil() + } else { + yym1703 := z.EncBinary() + _ = yym1703 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym1703 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq1696[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("port")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Port == nil { + r.EncodeNil() + } else { + yym1704 := z.EncBinary() + _ = yym1704 + if false { + } else if z.HasExtensions() && z.EncExt(x.Port) { + } else if !yym1704 && z.IsJSONHandle() { + z.EncJSONMarshal(x.Port) + } else { + z.EncFallback(x.Port) + } + } + } + } + if yyr1696 || yy2arr1696 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPort) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1705 := z.DecBinary() + _ = yym1705 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1706 := r.ContainerType() + if yyct1706 == codecSelferValueTypeMap1234 { + yyl1706 := r.ReadMapStart() + if yyl1706 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1706, d) + } + } else if yyct1706 == codecSelferValueTypeArray1234 { + yyl1706 := r.ReadArrayStart() + if yyl1706 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1706, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1707Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1707Slc + var yyhl1707 bool = l >= 0 + for yyj1707 := 0; ; yyj1707++ { + if yyhl1707 { + if yyj1707 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1707Slc = r.DecodeBytes(yys1707Slc, true, true) + yys1707 := string(yys1707Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1707 { + case "protocol": + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg2_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + case "port": + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym1710 := z.DecBinary() + _ = yym1710 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym1710 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys1707) + } // end switch yys1707 + } // end for yyj1707 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1711 int + var yyb1711 bool + var yyhl1711 bool = l >= 0 + yyj1711++ + if yyhl1711 { + yyb1711 = yyj1711 > l + } else { + yyb1711 = r.CheckBreak() + } + if yyb1711 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Protocol != nil { + x.Protocol = nil + } + } else { + if x.Protocol == nil { + x.Protocol = new(pkg2_v1.Protocol) + } + x.Protocol.CodecDecodeSelf(d) + } + yyj1711++ + if yyhl1711 { + yyb1711 = yyj1711 > l + } else { + yyb1711 = r.CheckBreak() + } + if yyb1711 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Port != nil { + x.Port = nil + } + } else { + if x.Port == nil { + x.Port = new(pkg5_intstr.IntOrString) + } + yym1714 := z.DecBinary() + _ = yym1714 + if false { + } else if z.HasExtensions() && z.DecExt(x.Port) { + } else if !yym1714 && z.IsJSONHandle() { + z.DecJSONUnmarshal(x.Port) + } else { + z.DecFallback(x.Port, false) + } + } + for { + yyj1711++ + if yyhl1711 { + yyb1711 = yyj1711 > l + } else { + yyb1711 = r.CheckBreak() + } + if yyb1711 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1711-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyPeer) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1715 := z.EncBinary() + _ = yym1715 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1716 := !z.EncBinary() + yy2arr1716 := z.EncBasicHandle().StructToArray + var yyq1716 [2]bool + _, _, _ = yysep1716, yyq1716, yy2arr1716 + const yyr1716 bool = false + yyq1716[0] = x.PodSelector != nil + yyq1716[1] = x.NamespaceSelector != nil + var yynn1716 int + if yyr1716 || yy2arr1716 { + r.EncodeArrayStart(2) + } else { + yynn1716 = 0 + for _, b := range yyq1716 { + if b { + yynn1716++ + } + } + r.EncodeMapStart(yynn1716) + yynn1716 = 0 + } + if yyr1716 || yy2arr1716 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1716[0] { + if x.PodSelector == nil { + r.EncodeNil() + } else { + x.PodSelector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1716[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("podSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.PodSelector == nil { + r.EncodeNil() + } else { + x.PodSelector.CodecEncodeSelf(e) + } + } + } + if yyr1716 || yy2arr1716 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1716[1] { + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + x.NamespaceSelector.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq1716[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespaceSelector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NamespaceSelector == nil { + r.EncodeNil() + } else { + x.NamespaceSelector.CodecEncodeSelf(e) + } + } + } + if yyr1716 || yy2arr1716 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyPeer) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1719 := z.DecBinary() + _ = yym1719 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1720 := r.ContainerType() + if yyct1720 == codecSelferValueTypeMap1234 { + yyl1720 := r.ReadMapStart() + if yyl1720 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1720, d) + } + } else if yyct1720 == codecSelferValueTypeArray1234 { + yyl1720 := r.ReadArrayStart() + if yyl1720 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1720, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1721Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1721Slc + var yyhl1721 bool = l >= 0 + for yyj1721 := 0; ; yyj1721++ { + if yyhl1721 { + if yyj1721 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1721Slc = r.DecodeBytes(yys1721Slc, true, true) + yys1721 := string(yys1721Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1721 { + case "podSelector": + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(LabelSelector) + } + x.PodSelector.CodecDecodeSelf(d) + } + case "namespaceSelector": + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(LabelSelector) + } + x.NamespaceSelector.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys1721) + } // end switch yys1721 + } // end for yyj1721 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyPeer) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1724 int + var yyb1724 bool + var yyhl1724 bool = l >= 0 + yyj1724++ + if yyhl1724 { + yyb1724 = yyj1724 > l + } else { + yyb1724 = r.CheckBreak() + } + if yyb1724 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.PodSelector != nil { + x.PodSelector = nil + } + } else { + if x.PodSelector == nil { + x.PodSelector = new(LabelSelector) + } + x.PodSelector.CodecDecodeSelf(d) + } + yyj1724++ + if yyhl1724 { + yyb1724 = yyj1724 > l + } else { + yyb1724 = r.CheckBreak() + } + if yyb1724 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.NamespaceSelector != nil { + x.NamespaceSelector = nil + } + } else { + if x.NamespaceSelector == nil { + x.NamespaceSelector = new(LabelSelector) + } + x.NamespaceSelector.CodecDecodeSelf(d) + } + for { + yyj1724++ + if yyhl1724 { + yyb1724 = yyj1724 > l + } else { + yyb1724 = r.CheckBreak() + } + if yyb1724 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1724-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *NetworkPolicyList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1727 := z.EncBinary() + _ = yym1727 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep1728 := !z.EncBinary() + yy2arr1728 := z.EncBasicHandle().StructToArray + var yyq1728 [4]bool + _, _, _ = yysep1728, yyq1728, yy2arr1728 + const yyr1728 bool = false + yyq1728[0] = x.Kind != "" + yyq1728[1] = x.APIVersion != "" + yyq1728[2] = true + var yynn1728 int + if yyr1728 || yy2arr1728 { + r.EncodeArrayStart(4) + } else { + yynn1728 = 1 + for _, b := range yyq1728 { + if b { + yynn1728++ + } + } + r.EncodeMapStart(yynn1728) + yynn1728 = 0 + } + if yyr1728 || yy2arr1728 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1728[0] { + yym1730 := z.EncBinary() + _ = yym1730 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1728[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1731 := z.EncBinary() + _ = yym1731 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr1728 || yy2arr1728 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1728[1] { + yym1733 := z.EncBinary() + _ = yym1733 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq1728[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym1734 := z.EncBinary() + _ = yym1734 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr1728 || yy2arr1728 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq1728[2] { + yy1736 := &x.ListMeta + yym1737 := z.EncBinary() + _ = yym1737 + if false { + } else if z.HasExtensions() && z.EncExt(yy1736) { + } else { + z.EncFallback(yy1736) + } + } else { + r.EncodeNil() + } + } else { + if yyq1728[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy1738 := &x.ListMeta + yym1739 := z.EncBinary() + _ = yym1739 + if false { + } else if z.HasExtensions() && z.EncExt(yy1738) { + } else { + z.EncFallback(yy1738) + } + } + } + if yyr1728 || yy2arr1728 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1741 := z.EncBinary() + _ = yym1741 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym1742 := z.EncBinary() + _ = yym1742 + if false { + } else { + h.encSliceNetworkPolicy(([]NetworkPolicy)(x.Items), e) + } + } + } + if yyr1728 || yy2arr1728 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *NetworkPolicyList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym1743 := z.DecBinary() + _ = yym1743 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct1744 := r.ContainerType() + if yyct1744 == codecSelferValueTypeMap1234 { + yyl1744 := r.ReadMapStart() + if yyl1744 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl1744, d) + } + } else if yyct1744 == codecSelferValueTypeArray1234 { + yyl1744 := r.ReadArrayStart() + if yyl1744 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl1744, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *NetworkPolicyList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys1745Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys1745Slc + var yyhl1745 bool = l >= 0 + for yyj1745 := 0; ; yyj1745++ { + if yyhl1745 { + if yyj1745 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys1745Slc = r.DecodeBytes(yys1745Slc, true, true) + yys1745 := string(yys1745Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys1745 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1748 := &x.ListMeta + yym1749 := z.DecBinary() + _ = yym1749 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1748) { + } else { + z.DecFallback(yyv1748, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1750 := &x.Items + yym1751 := z.DecBinary() + _ = yym1751 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv1750), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys1745) + } // end switch yys1745 + } // end for yyj1745 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj1752 int + var yyb1752 bool + var yyhl1752 bool = l >= 0 + yyj1752++ + if yyhl1752 { + yyb1752 = yyj1752 > l + } else { + yyb1752 = r.CheckBreak() + } + if yyb1752 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj1752++ + if yyhl1752 { + yyb1752 = yyj1752 > l + } else { + yyb1752 = r.CheckBreak() + } + if yyb1752 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj1752++ + if yyhl1752 { + yyb1752 = yyj1752 > l + } else { + yyb1752 = r.CheckBreak() + } + if yyb1752 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv1755 := &x.ListMeta + yym1756 := z.DecBinary() + _ = yym1756 + if false { + } else if z.HasExtensions() && z.DecExt(yyv1755) { + } else { + z.DecFallback(yyv1755, false) + } + } + yyj1752++ + if yyhl1752 { + yyb1752 = yyj1752 > l + } else { + yyb1752 = r.CheckBreak() + } + if yyb1752 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv1757 := &x.Items + yym1758 := z.DecBinary() + _ = yym1758 + if false { + } else { + h.decSliceNetworkPolicy((*[]NetworkPolicy)(yyv1757), d) + } + } + for { + yyj1752++ + if yyhl1752 { + yyb1752 = yyj1752 > l + } else { + yyb1752 = r.CheckBreak() + } + if yyb1752 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj1752-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1759 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1760 := &yyv1759 + yy1760.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricTarget(v *[]CustomMetricTarget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1761 := *v + yyh1761, yyl1761 := z.DecSliceHelperStart() + var yyc1761 bool + if yyl1761 == 0 { + if yyv1761 == nil { + yyv1761 = []CustomMetricTarget{} + yyc1761 = true + } else if len(yyv1761) != 0 { + yyv1761 = yyv1761[:0] + yyc1761 = true + } + } else if yyl1761 > 0 { + var yyrr1761, yyrl1761 int + var yyrt1761 bool + if yyl1761 > cap(yyv1761) { + + yyrg1761 := len(yyv1761) > 0 + yyv21761 := yyv1761 + yyrl1761, yyrt1761 = z.DecInferLen(yyl1761, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1761 { + if yyrl1761 <= cap(yyv1761) { + yyv1761 = yyv1761[:yyrl1761] + } else { + yyv1761 = make([]CustomMetricTarget, yyrl1761) + } + } else { + yyv1761 = make([]CustomMetricTarget, yyrl1761) + } + yyc1761 = true + yyrr1761 = len(yyv1761) + if yyrg1761 { + copy(yyv1761, yyv21761) + } + } else if yyl1761 != len(yyv1761) { + yyv1761 = yyv1761[:yyl1761] + yyc1761 = true + } + yyj1761 := 0 + for ; yyj1761 < yyrr1761; yyj1761++ { + yyh1761.ElemContainerState(yyj1761) + if r.TryDecodeAsNil() { + yyv1761[yyj1761] = CustomMetricTarget{} + } else { + yyv1762 := &yyv1761[yyj1761] + yyv1762.CodecDecodeSelf(d) + } + + } + if yyrt1761 { + for ; yyj1761 < yyl1761; yyj1761++ { + yyv1761 = append(yyv1761, CustomMetricTarget{}) + yyh1761.ElemContainerState(yyj1761) + if r.TryDecodeAsNil() { + yyv1761[yyj1761] = CustomMetricTarget{} + } else { + yyv1763 := &yyv1761[yyj1761] + yyv1763.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1761 := 0 + for ; !r.CheckBreak(); yyj1761++ { + + if yyj1761 >= len(yyv1761) { + yyv1761 = append(yyv1761, CustomMetricTarget{}) // var yyz1761 CustomMetricTarget + yyc1761 = true + } + yyh1761.ElemContainerState(yyj1761) + if yyj1761 < len(yyv1761) { + if r.TryDecodeAsNil() { + yyv1761[yyj1761] = CustomMetricTarget{} + } else { + yyv1764 := &yyv1761[yyj1761] + yyv1764.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1761 < len(yyv1761) { + yyv1761 = yyv1761[:yyj1761] + yyc1761 = true + } else if yyj1761 == 0 && yyv1761 == nil { + yyv1761 = []CustomMetricTarget{} + yyc1761 = true + } + } + yyh1761.End() + if yyc1761 { + *v = yyv1761 + } +} + +func (x codecSelfer1234) encSliceCustomMetricCurrentStatus(v []CustomMetricCurrentStatus, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1765 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1766 := &yyv1765 + yy1766.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceCustomMetricCurrentStatus(v *[]CustomMetricCurrentStatus, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1767 := *v + yyh1767, yyl1767 := z.DecSliceHelperStart() + var yyc1767 bool + if yyl1767 == 0 { + if yyv1767 == nil { + yyv1767 = []CustomMetricCurrentStatus{} + yyc1767 = true + } else if len(yyv1767) != 0 { + yyv1767 = yyv1767[:0] + yyc1767 = true + } + } else if yyl1767 > 0 { + var yyrr1767, yyrl1767 int + var yyrt1767 bool + if yyl1767 > cap(yyv1767) { + + yyrg1767 := len(yyv1767) > 0 + yyv21767 := yyv1767 + yyrl1767, yyrt1767 = z.DecInferLen(yyl1767, z.DecBasicHandle().MaxInitLen, 72) + if yyrt1767 { + if yyrl1767 <= cap(yyv1767) { + yyv1767 = yyv1767[:yyrl1767] + } else { + yyv1767 = make([]CustomMetricCurrentStatus, yyrl1767) + } + } else { + yyv1767 = make([]CustomMetricCurrentStatus, yyrl1767) + } + yyc1767 = true + yyrr1767 = len(yyv1767) + if yyrg1767 { + copy(yyv1767, yyv21767) + } + } else if yyl1767 != len(yyv1767) { + yyv1767 = yyv1767[:yyl1767] + yyc1767 = true + } + yyj1767 := 0 + for ; yyj1767 < yyrr1767; yyj1767++ { + yyh1767.ElemContainerState(yyj1767) + if r.TryDecodeAsNil() { + yyv1767[yyj1767] = CustomMetricCurrentStatus{} + } else { + yyv1768 := &yyv1767[yyj1767] + yyv1768.CodecDecodeSelf(d) + } + + } + if yyrt1767 { + for ; yyj1767 < yyl1767; yyj1767++ { + yyv1767 = append(yyv1767, CustomMetricCurrentStatus{}) + yyh1767.ElemContainerState(yyj1767) + if r.TryDecodeAsNil() { + yyv1767[yyj1767] = CustomMetricCurrentStatus{} + } else { + yyv1769 := &yyv1767[yyj1767] + yyv1769.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1767 := 0 + for ; !r.CheckBreak(); yyj1767++ { + + if yyj1767 >= len(yyv1767) { + yyv1767 = append(yyv1767, CustomMetricCurrentStatus{}) // var yyz1767 CustomMetricCurrentStatus + yyc1767 = true + } + yyh1767.ElemContainerState(yyj1767) + if yyj1767 < len(yyv1767) { + if r.TryDecodeAsNil() { + yyv1767[yyj1767] = CustomMetricCurrentStatus{} + } else { + yyv1770 := &yyv1767[yyj1767] + yyv1770.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1767 < len(yyv1767) { + yyv1767 = yyv1767[:yyj1767] + yyc1767 = true + } else if yyj1767 == 0 && yyv1767 == nil { + yyv1767 = []CustomMetricCurrentStatus{} + yyc1767 = true + } + } + yyh1767.End() + if yyc1767 { + *v = yyv1767 + } +} + +func (x codecSelfer1234) encSliceHorizontalPodAutoscaler(v []HorizontalPodAutoscaler, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1771 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1772 := &yyv1771 + yy1772.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHorizontalPodAutoscaler(v *[]HorizontalPodAutoscaler, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1773 := *v + yyh1773, yyl1773 := z.DecSliceHelperStart() + var yyc1773 bool + if yyl1773 == 0 { + if yyv1773 == nil { + yyv1773 = []HorizontalPodAutoscaler{} + yyc1773 = true + } else if len(yyv1773) != 0 { + yyv1773 = yyv1773[:0] + yyc1773 = true + } + } else if yyl1773 > 0 { + var yyrr1773, yyrl1773 int + var yyrt1773 bool + if yyl1773 > cap(yyv1773) { + + yyrg1773 := len(yyv1773) > 0 + yyv21773 := yyv1773 + yyrl1773, yyrt1773 = z.DecInferLen(yyl1773, z.DecBasicHandle().MaxInitLen, 376) + if yyrt1773 { + if yyrl1773 <= cap(yyv1773) { + yyv1773 = yyv1773[:yyrl1773] + } else { + yyv1773 = make([]HorizontalPodAutoscaler, yyrl1773) + } + } else { + yyv1773 = make([]HorizontalPodAutoscaler, yyrl1773) + } + yyc1773 = true + yyrr1773 = len(yyv1773) + if yyrg1773 { + copy(yyv1773, yyv21773) + } + } else if yyl1773 != len(yyv1773) { + yyv1773 = yyv1773[:yyl1773] + yyc1773 = true + } + yyj1773 := 0 + for ; yyj1773 < yyrr1773; yyj1773++ { + yyh1773.ElemContainerState(yyj1773) + if r.TryDecodeAsNil() { + yyv1773[yyj1773] = HorizontalPodAutoscaler{} + } else { + yyv1774 := &yyv1773[yyj1773] + yyv1774.CodecDecodeSelf(d) + } + + } + if yyrt1773 { + for ; yyj1773 < yyl1773; yyj1773++ { + yyv1773 = append(yyv1773, HorizontalPodAutoscaler{}) + yyh1773.ElemContainerState(yyj1773) + if r.TryDecodeAsNil() { + yyv1773[yyj1773] = HorizontalPodAutoscaler{} + } else { + yyv1775 := &yyv1773[yyj1773] + yyv1775.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1773 := 0 + for ; !r.CheckBreak(); yyj1773++ { + + if yyj1773 >= len(yyv1773) { + yyv1773 = append(yyv1773, HorizontalPodAutoscaler{}) // var yyz1773 HorizontalPodAutoscaler + yyc1773 = true + } + yyh1773.ElemContainerState(yyj1773) + if yyj1773 < len(yyv1773) { + if r.TryDecodeAsNil() { + yyv1773[yyj1773] = HorizontalPodAutoscaler{} + } else { + yyv1776 := &yyv1773[yyj1773] + yyv1776.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1773 < len(yyv1773) { + yyv1773 = yyv1773[:yyj1773] + yyc1773 = true + } else if yyj1773 == 0 && yyv1773 == nil { + yyv1773 = []HorizontalPodAutoscaler{} + yyc1773 = true + } + } + yyh1773.End() + if yyc1773 { + *v = yyv1773 + } +} + +func (x codecSelfer1234) encSliceAPIVersion(v []APIVersion, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1777 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1778 := &yyv1777 + yy1778.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceAPIVersion(v *[]APIVersion, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1779 := *v + yyh1779, yyl1779 := z.DecSliceHelperStart() + var yyc1779 bool + if yyl1779 == 0 { + if yyv1779 == nil { + yyv1779 = []APIVersion{} + yyc1779 = true + } else if len(yyv1779) != 0 { + yyv1779 = yyv1779[:0] + yyc1779 = true + } + } else if yyl1779 > 0 { + var yyrr1779, yyrl1779 int + var yyrt1779 bool + if yyl1779 > cap(yyv1779) { + + yyrg1779 := len(yyv1779) > 0 + yyv21779 := yyv1779 + yyrl1779, yyrt1779 = z.DecInferLen(yyl1779, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1779 { + if yyrl1779 <= cap(yyv1779) { + yyv1779 = yyv1779[:yyrl1779] + } else { + yyv1779 = make([]APIVersion, yyrl1779) + } + } else { + yyv1779 = make([]APIVersion, yyrl1779) + } + yyc1779 = true + yyrr1779 = len(yyv1779) + if yyrg1779 { + copy(yyv1779, yyv21779) + } + } else if yyl1779 != len(yyv1779) { + yyv1779 = yyv1779[:yyl1779] + yyc1779 = true + } + yyj1779 := 0 + for ; yyj1779 < yyrr1779; yyj1779++ { + yyh1779.ElemContainerState(yyj1779) + if r.TryDecodeAsNil() { + yyv1779[yyj1779] = APIVersion{} + } else { + yyv1780 := &yyv1779[yyj1779] + yyv1780.CodecDecodeSelf(d) + } + + } + if yyrt1779 { + for ; yyj1779 < yyl1779; yyj1779++ { + yyv1779 = append(yyv1779, APIVersion{}) + yyh1779.ElemContainerState(yyj1779) + if r.TryDecodeAsNil() { + yyv1779[yyj1779] = APIVersion{} + } else { + yyv1781 := &yyv1779[yyj1779] + yyv1781.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1779 := 0 + for ; !r.CheckBreak(); yyj1779++ { + + if yyj1779 >= len(yyv1779) { + yyv1779 = append(yyv1779, APIVersion{}) // var yyz1779 APIVersion + yyc1779 = true + } + yyh1779.ElemContainerState(yyj1779) + if yyj1779 < len(yyv1779) { + if r.TryDecodeAsNil() { + yyv1779[yyj1779] = APIVersion{} + } else { + yyv1782 := &yyv1779[yyj1779] + yyv1782.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1779 < len(yyv1779) { + yyv1779 = yyv1779[:yyj1779] + yyc1779 = true + } else if yyj1779 == 0 && yyv1779 == nil { + yyv1779 = []APIVersion{} + yyc1779 = true + } + } + yyh1779.End() + if yyc1779 { + *v = yyv1779 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResource(v []ThirdPartyResource, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1783 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1784 := &yyv1783 + yy1784.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResource(v *[]ThirdPartyResource, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1785 := *v + yyh1785, yyl1785 := z.DecSliceHelperStart() + var yyc1785 bool + if yyl1785 == 0 { + if yyv1785 == nil { + yyv1785 = []ThirdPartyResource{} + yyc1785 = true + } else if len(yyv1785) != 0 { + yyv1785 = yyv1785[:0] + yyc1785 = true + } + } else if yyl1785 > 0 { + var yyrr1785, yyrl1785 int + var yyrt1785 bool + if yyl1785 > cap(yyv1785) { + + yyrg1785 := len(yyv1785) > 0 + yyv21785 := yyv1785 + yyrl1785, yyrt1785 = z.DecInferLen(yyl1785, z.DecBasicHandle().MaxInitLen, 296) + if yyrt1785 { + if yyrl1785 <= cap(yyv1785) { + yyv1785 = yyv1785[:yyrl1785] + } else { + yyv1785 = make([]ThirdPartyResource, yyrl1785) + } + } else { + yyv1785 = make([]ThirdPartyResource, yyrl1785) + } + yyc1785 = true + yyrr1785 = len(yyv1785) + if yyrg1785 { + copy(yyv1785, yyv21785) + } + } else if yyl1785 != len(yyv1785) { + yyv1785 = yyv1785[:yyl1785] + yyc1785 = true + } + yyj1785 := 0 + for ; yyj1785 < yyrr1785; yyj1785++ { + yyh1785.ElemContainerState(yyj1785) + if r.TryDecodeAsNil() { + yyv1785[yyj1785] = ThirdPartyResource{} + } else { + yyv1786 := &yyv1785[yyj1785] + yyv1786.CodecDecodeSelf(d) + } + + } + if yyrt1785 { + for ; yyj1785 < yyl1785; yyj1785++ { + yyv1785 = append(yyv1785, ThirdPartyResource{}) + yyh1785.ElemContainerState(yyj1785) + if r.TryDecodeAsNil() { + yyv1785[yyj1785] = ThirdPartyResource{} + } else { + yyv1787 := &yyv1785[yyj1785] + yyv1787.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1785 := 0 + for ; !r.CheckBreak(); yyj1785++ { + + if yyj1785 >= len(yyv1785) { + yyv1785 = append(yyv1785, ThirdPartyResource{}) // var yyz1785 ThirdPartyResource + yyc1785 = true + } + yyh1785.ElemContainerState(yyj1785) + if yyj1785 < len(yyv1785) { + if r.TryDecodeAsNil() { + yyv1785[yyj1785] = ThirdPartyResource{} + } else { + yyv1788 := &yyv1785[yyj1785] + yyv1788.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1785 < len(yyv1785) { + yyv1785 = yyv1785[:yyj1785] + yyc1785 = true + } else if yyj1785 == 0 && yyv1785 == nil { + yyv1785 = []ThirdPartyResource{} + yyc1785 = true + } + } + yyh1785.End() + if yyc1785 { + *v = yyv1785 + } +} + +func (x codecSelfer1234) encSliceDeployment(v []Deployment, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1789 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1790 := &yyv1789 + yy1790.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDeployment(v *[]Deployment, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1791 := *v + yyh1791, yyl1791 := z.DecSliceHelperStart() + var yyc1791 bool + if yyl1791 == 0 { + if yyv1791 == nil { + yyv1791 = []Deployment{} + yyc1791 = true + } else if len(yyv1791) != 0 { + yyv1791 = yyv1791[:0] + yyc1791 = true + } + } else if yyl1791 > 0 { + var yyrr1791, yyrl1791 int + var yyrt1791 bool + if yyl1791 > cap(yyv1791) { + + yyrg1791 := len(yyv1791) > 0 + yyv21791 := yyv1791 + yyrl1791, yyrt1791 = z.DecInferLen(yyl1791, z.DecBasicHandle().MaxInitLen, 824) + if yyrt1791 { + if yyrl1791 <= cap(yyv1791) { + yyv1791 = yyv1791[:yyrl1791] + } else { + yyv1791 = make([]Deployment, yyrl1791) + } + } else { + yyv1791 = make([]Deployment, yyrl1791) + } + yyc1791 = true + yyrr1791 = len(yyv1791) + if yyrg1791 { + copy(yyv1791, yyv21791) + } + } else if yyl1791 != len(yyv1791) { + yyv1791 = yyv1791[:yyl1791] + yyc1791 = true + } + yyj1791 := 0 + for ; yyj1791 < yyrr1791; yyj1791++ { + yyh1791.ElemContainerState(yyj1791) + if r.TryDecodeAsNil() { + yyv1791[yyj1791] = Deployment{} + } else { + yyv1792 := &yyv1791[yyj1791] + yyv1792.CodecDecodeSelf(d) + } + + } + if yyrt1791 { + for ; yyj1791 < yyl1791; yyj1791++ { + yyv1791 = append(yyv1791, Deployment{}) + yyh1791.ElemContainerState(yyj1791) + if r.TryDecodeAsNil() { + yyv1791[yyj1791] = Deployment{} + } else { + yyv1793 := &yyv1791[yyj1791] + yyv1793.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1791 := 0 + for ; !r.CheckBreak(); yyj1791++ { + + if yyj1791 >= len(yyv1791) { + yyv1791 = append(yyv1791, Deployment{}) // var yyz1791 Deployment + yyc1791 = true + } + yyh1791.ElemContainerState(yyj1791) + if yyj1791 < len(yyv1791) { + if r.TryDecodeAsNil() { + yyv1791[yyj1791] = Deployment{} + } else { + yyv1794 := &yyv1791[yyj1791] + yyv1794.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1791 < len(yyv1791) { + yyv1791 = yyv1791[:yyj1791] + yyc1791 = true + } else if yyj1791 == 0 && yyv1791 == nil { + yyv1791 = []Deployment{} + yyc1791 = true + } + } + yyh1791.End() + if yyc1791 { + *v = yyv1791 + } +} + +func (x codecSelfer1234) encSliceDaemonSet(v []DaemonSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1795 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1796 := &yyv1795 + yy1796.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceDaemonSet(v *[]DaemonSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1797 := *v + yyh1797, yyl1797 := z.DecSliceHelperStart() + var yyc1797 bool + if yyl1797 == 0 { + if yyv1797 == nil { + yyv1797 = []DaemonSet{} + yyc1797 = true + } else if len(yyv1797) != 0 { + yyv1797 = yyv1797[:0] + yyc1797 = true + } + } else if yyl1797 > 0 { + var yyrr1797, yyrl1797 int + var yyrt1797 bool + if yyl1797 > cap(yyv1797) { + + yyrg1797 := len(yyv1797) > 0 + yyv21797 := yyv1797 + yyrl1797, yyrt1797 = z.DecInferLen(yyl1797, z.DecBasicHandle().MaxInitLen, 752) + if yyrt1797 { + if yyrl1797 <= cap(yyv1797) { + yyv1797 = yyv1797[:yyrl1797] + } else { + yyv1797 = make([]DaemonSet, yyrl1797) + } + } else { + yyv1797 = make([]DaemonSet, yyrl1797) + } + yyc1797 = true + yyrr1797 = len(yyv1797) + if yyrg1797 { + copy(yyv1797, yyv21797) + } + } else if yyl1797 != len(yyv1797) { + yyv1797 = yyv1797[:yyl1797] + yyc1797 = true + } + yyj1797 := 0 + for ; yyj1797 < yyrr1797; yyj1797++ { + yyh1797.ElemContainerState(yyj1797) + if r.TryDecodeAsNil() { + yyv1797[yyj1797] = DaemonSet{} + } else { + yyv1798 := &yyv1797[yyj1797] + yyv1798.CodecDecodeSelf(d) + } + + } + if yyrt1797 { + for ; yyj1797 < yyl1797; yyj1797++ { + yyv1797 = append(yyv1797, DaemonSet{}) + yyh1797.ElemContainerState(yyj1797) + if r.TryDecodeAsNil() { + yyv1797[yyj1797] = DaemonSet{} + } else { + yyv1799 := &yyv1797[yyj1797] + yyv1799.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1797 := 0 + for ; !r.CheckBreak(); yyj1797++ { + + if yyj1797 >= len(yyv1797) { + yyv1797 = append(yyv1797, DaemonSet{}) // var yyz1797 DaemonSet + yyc1797 = true + } + yyh1797.ElemContainerState(yyj1797) + if yyj1797 < len(yyv1797) { + if r.TryDecodeAsNil() { + yyv1797[yyj1797] = DaemonSet{} + } else { + yyv1800 := &yyv1797[yyj1797] + yyv1800.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1797 < len(yyv1797) { + yyv1797 = yyv1797[:yyj1797] + yyc1797 = true + } else if yyj1797 == 0 && yyv1797 == nil { + yyv1797 = []DaemonSet{} + yyc1797 = true + } + } + yyh1797.End() + if yyc1797 { + *v = yyv1797 + } +} + +func (x codecSelfer1234) encSliceThirdPartyResourceData(v []ThirdPartyResourceData, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1801 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1802 := &yyv1801 + yy1802.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceThirdPartyResourceData(v *[]ThirdPartyResourceData, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1803 := *v + yyh1803, yyl1803 := z.DecSliceHelperStart() + var yyc1803 bool + if yyl1803 == 0 { + if yyv1803 == nil { + yyv1803 = []ThirdPartyResourceData{} + yyc1803 = true + } else if len(yyv1803) != 0 { + yyv1803 = yyv1803[:0] + yyc1803 = true + } + } else if yyl1803 > 0 { + var yyrr1803, yyrl1803 int + var yyrt1803 bool + if yyl1803 > cap(yyv1803) { + + yyrg1803 := len(yyv1803) > 0 + yyv21803 := yyv1803 + yyrl1803, yyrt1803 = z.DecInferLen(yyl1803, z.DecBasicHandle().MaxInitLen, 280) + if yyrt1803 { + if yyrl1803 <= cap(yyv1803) { + yyv1803 = yyv1803[:yyrl1803] + } else { + yyv1803 = make([]ThirdPartyResourceData, yyrl1803) + } + } else { + yyv1803 = make([]ThirdPartyResourceData, yyrl1803) + } + yyc1803 = true + yyrr1803 = len(yyv1803) + if yyrg1803 { + copy(yyv1803, yyv21803) + } + } else if yyl1803 != len(yyv1803) { + yyv1803 = yyv1803[:yyl1803] + yyc1803 = true + } + yyj1803 := 0 + for ; yyj1803 < yyrr1803; yyj1803++ { + yyh1803.ElemContainerState(yyj1803) + if r.TryDecodeAsNil() { + yyv1803[yyj1803] = ThirdPartyResourceData{} + } else { + yyv1804 := &yyv1803[yyj1803] + yyv1804.CodecDecodeSelf(d) + } + + } + if yyrt1803 { + for ; yyj1803 < yyl1803; yyj1803++ { + yyv1803 = append(yyv1803, ThirdPartyResourceData{}) + yyh1803.ElemContainerState(yyj1803) + if r.TryDecodeAsNil() { + yyv1803[yyj1803] = ThirdPartyResourceData{} + } else { + yyv1805 := &yyv1803[yyj1803] + yyv1805.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1803 := 0 + for ; !r.CheckBreak(); yyj1803++ { + + if yyj1803 >= len(yyv1803) { + yyv1803 = append(yyv1803, ThirdPartyResourceData{}) // var yyz1803 ThirdPartyResourceData + yyc1803 = true + } + yyh1803.ElemContainerState(yyj1803) + if yyj1803 < len(yyv1803) { + if r.TryDecodeAsNil() { + yyv1803[yyj1803] = ThirdPartyResourceData{} + } else { + yyv1806 := &yyv1803[yyj1803] + yyv1806.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1803 < len(yyv1803) { + yyv1803 = yyv1803[:yyj1803] + yyc1803 = true + } else if yyj1803 == 0 && yyv1803 == nil { + yyv1803 = []ThirdPartyResourceData{} + yyc1803 = true + } + } + yyh1803.End() + if yyc1803 { + *v = yyv1803 + } +} + +func (x codecSelfer1234) encSliceJob(v []Job, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1807 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1808 := &yyv1807 + yy1808.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1809 := *v + yyh1809, yyl1809 := z.DecSliceHelperStart() + var yyc1809 bool + if yyl1809 == 0 { + if yyv1809 == nil { + yyv1809 = []Job{} + yyc1809 = true + } else if len(yyv1809) != 0 { + yyv1809 = yyv1809[:0] + yyc1809 = true + } + } else if yyl1809 > 0 { + var yyrr1809, yyrl1809 int + var yyrt1809 bool + if yyl1809 > cap(yyv1809) { + + yyrg1809 := len(yyv1809) > 0 + yyv21809 := yyv1809 + yyrl1809, yyrt1809 = z.DecInferLen(yyl1809, z.DecBasicHandle().MaxInitLen, 824) + if yyrt1809 { + if yyrl1809 <= cap(yyv1809) { + yyv1809 = yyv1809[:yyrl1809] + } else { + yyv1809 = make([]Job, yyrl1809) + } + } else { + yyv1809 = make([]Job, yyrl1809) + } + yyc1809 = true + yyrr1809 = len(yyv1809) + if yyrg1809 { + copy(yyv1809, yyv21809) + } + } else if yyl1809 != len(yyv1809) { + yyv1809 = yyv1809[:yyl1809] + yyc1809 = true + } + yyj1809 := 0 + for ; yyj1809 < yyrr1809; yyj1809++ { + yyh1809.ElemContainerState(yyj1809) + if r.TryDecodeAsNil() { + yyv1809[yyj1809] = Job{} + } else { + yyv1810 := &yyv1809[yyj1809] + yyv1810.CodecDecodeSelf(d) + } + + } + if yyrt1809 { + for ; yyj1809 < yyl1809; yyj1809++ { + yyv1809 = append(yyv1809, Job{}) + yyh1809.ElemContainerState(yyj1809) + if r.TryDecodeAsNil() { + yyv1809[yyj1809] = Job{} + } else { + yyv1811 := &yyv1809[yyj1809] + yyv1811.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1809 := 0 + for ; !r.CheckBreak(); yyj1809++ { + + if yyj1809 >= len(yyv1809) { + yyv1809 = append(yyv1809, Job{}) // var yyz1809 Job + yyc1809 = true + } + yyh1809.ElemContainerState(yyj1809) + if yyj1809 < len(yyv1809) { + if r.TryDecodeAsNil() { + yyv1809[yyj1809] = Job{} + } else { + yyv1812 := &yyv1809[yyj1809] + yyv1812.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1809 < len(yyv1809) { + yyv1809 = yyv1809[:yyj1809] + yyc1809 = true + } else if yyj1809 == 0 && yyv1809 == nil { + yyv1809 = []Job{} + yyc1809 = true + } + } + yyh1809.End() + if yyc1809 { + *v = yyv1809 + } +} + +func (x codecSelfer1234) encSliceJobCondition(v []JobCondition, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1813 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1814 := &yyv1813 + yy1814.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceJobCondition(v *[]JobCondition, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1815 := *v + yyh1815, yyl1815 := z.DecSliceHelperStart() + var yyc1815 bool + if yyl1815 == 0 { + if yyv1815 == nil { + yyv1815 = []JobCondition{} + yyc1815 = true + } else if len(yyv1815) != 0 { + yyv1815 = yyv1815[:0] + yyc1815 = true + } + } else if yyl1815 > 0 { + var yyrr1815, yyrl1815 int + var yyrt1815 bool + if yyl1815 > cap(yyv1815) { + + yyrg1815 := len(yyv1815) > 0 + yyv21815 := yyv1815 + yyrl1815, yyrt1815 = z.DecInferLen(yyl1815, z.DecBasicHandle().MaxInitLen, 112) + if yyrt1815 { + if yyrl1815 <= cap(yyv1815) { + yyv1815 = yyv1815[:yyrl1815] + } else { + yyv1815 = make([]JobCondition, yyrl1815) + } + } else { + yyv1815 = make([]JobCondition, yyrl1815) + } + yyc1815 = true + yyrr1815 = len(yyv1815) + if yyrg1815 { + copy(yyv1815, yyv21815) + } + } else if yyl1815 != len(yyv1815) { + yyv1815 = yyv1815[:yyl1815] + yyc1815 = true + } + yyj1815 := 0 + for ; yyj1815 < yyrr1815; yyj1815++ { + yyh1815.ElemContainerState(yyj1815) + if r.TryDecodeAsNil() { + yyv1815[yyj1815] = JobCondition{} + } else { + yyv1816 := &yyv1815[yyj1815] + yyv1816.CodecDecodeSelf(d) + } + + } + if yyrt1815 { + for ; yyj1815 < yyl1815; yyj1815++ { + yyv1815 = append(yyv1815, JobCondition{}) + yyh1815.ElemContainerState(yyj1815) + if r.TryDecodeAsNil() { + yyv1815[yyj1815] = JobCondition{} + } else { + yyv1817 := &yyv1815[yyj1815] + yyv1817.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1815 := 0 + for ; !r.CheckBreak(); yyj1815++ { + + if yyj1815 >= len(yyv1815) { + yyv1815 = append(yyv1815, JobCondition{}) // var yyz1815 JobCondition + yyc1815 = true + } + yyh1815.ElemContainerState(yyj1815) + if yyj1815 < len(yyv1815) { + if r.TryDecodeAsNil() { + yyv1815[yyj1815] = JobCondition{} + } else { + yyv1818 := &yyv1815[yyj1815] + yyv1818.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1815 < len(yyv1815) { + yyv1815 = yyv1815[:yyj1815] + yyc1815 = true + } else if yyj1815 == 0 && yyv1815 == nil { + yyv1815 = []JobCondition{} + yyc1815 = true + } + } + yyh1815.End() + if yyc1815 { + *v = yyv1815 + } +} + +func (x codecSelfer1234) encSliceIngress(v []Ingress, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1819 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1820 := &yyv1819 + yy1820.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngress(v *[]Ingress, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1821 := *v + yyh1821, yyl1821 := z.DecSliceHelperStart() + var yyc1821 bool + if yyl1821 == 0 { + if yyv1821 == nil { + yyv1821 = []Ingress{} + yyc1821 = true + } else if len(yyv1821) != 0 { + yyv1821 = yyv1821[:0] + yyc1821 = true + } + } else if yyl1821 > 0 { + var yyrr1821, yyrl1821 int + var yyrt1821 bool + if yyl1821 > cap(yyv1821) { + + yyrg1821 := len(yyv1821) > 0 + yyv21821 := yyv1821 + yyrl1821, yyrt1821 = z.DecInferLen(yyl1821, z.DecBasicHandle().MaxInitLen, 336) + if yyrt1821 { + if yyrl1821 <= cap(yyv1821) { + yyv1821 = yyv1821[:yyrl1821] + } else { + yyv1821 = make([]Ingress, yyrl1821) + } + } else { + yyv1821 = make([]Ingress, yyrl1821) + } + yyc1821 = true + yyrr1821 = len(yyv1821) + if yyrg1821 { + copy(yyv1821, yyv21821) + } + } else if yyl1821 != len(yyv1821) { + yyv1821 = yyv1821[:yyl1821] + yyc1821 = true + } + yyj1821 := 0 + for ; yyj1821 < yyrr1821; yyj1821++ { + yyh1821.ElemContainerState(yyj1821) + if r.TryDecodeAsNil() { + yyv1821[yyj1821] = Ingress{} + } else { + yyv1822 := &yyv1821[yyj1821] + yyv1822.CodecDecodeSelf(d) + } + + } + if yyrt1821 { + for ; yyj1821 < yyl1821; yyj1821++ { + yyv1821 = append(yyv1821, Ingress{}) + yyh1821.ElemContainerState(yyj1821) + if r.TryDecodeAsNil() { + yyv1821[yyj1821] = Ingress{} + } else { + yyv1823 := &yyv1821[yyj1821] + yyv1823.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1821 := 0 + for ; !r.CheckBreak(); yyj1821++ { + + if yyj1821 >= len(yyv1821) { + yyv1821 = append(yyv1821, Ingress{}) // var yyz1821 Ingress + yyc1821 = true + } + yyh1821.ElemContainerState(yyj1821) + if yyj1821 < len(yyv1821) { + if r.TryDecodeAsNil() { + yyv1821[yyj1821] = Ingress{} + } else { + yyv1824 := &yyv1821[yyj1821] + yyv1824.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1821 < len(yyv1821) { + yyv1821 = yyv1821[:yyj1821] + yyc1821 = true + } else if yyj1821 == 0 && yyv1821 == nil { + yyv1821 = []Ingress{} + yyc1821 = true + } + } + yyh1821.End() + if yyc1821 { + *v = yyv1821 + } +} + +func (x codecSelfer1234) encSliceIngressTLS(v []IngressTLS, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1825 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1826 := &yyv1825 + yy1826.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressTLS(v *[]IngressTLS, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1827 := *v + yyh1827, yyl1827 := z.DecSliceHelperStart() + var yyc1827 bool + if yyl1827 == 0 { + if yyv1827 == nil { + yyv1827 = []IngressTLS{} + yyc1827 = true + } else if len(yyv1827) != 0 { + yyv1827 = yyv1827[:0] + yyc1827 = true + } + } else if yyl1827 > 0 { + var yyrr1827, yyrl1827 int + var yyrt1827 bool + if yyl1827 > cap(yyv1827) { + + yyrg1827 := len(yyv1827) > 0 + yyv21827 := yyv1827 + yyrl1827, yyrt1827 = z.DecInferLen(yyl1827, z.DecBasicHandle().MaxInitLen, 40) + if yyrt1827 { + if yyrl1827 <= cap(yyv1827) { + yyv1827 = yyv1827[:yyrl1827] + } else { + yyv1827 = make([]IngressTLS, yyrl1827) + } + } else { + yyv1827 = make([]IngressTLS, yyrl1827) + } + yyc1827 = true + yyrr1827 = len(yyv1827) + if yyrg1827 { + copy(yyv1827, yyv21827) + } + } else if yyl1827 != len(yyv1827) { + yyv1827 = yyv1827[:yyl1827] + yyc1827 = true + } + yyj1827 := 0 + for ; yyj1827 < yyrr1827; yyj1827++ { + yyh1827.ElemContainerState(yyj1827) + if r.TryDecodeAsNil() { + yyv1827[yyj1827] = IngressTLS{} + } else { + yyv1828 := &yyv1827[yyj1827] + yyv1828.CodecDecodeSelf(d) + } + + } + if yyrt1827 { + for ; yyj1827 < yyl1827; yyj1827++ { + yyv1827 = append(yyv1827, IngressTLS{}) + yyh1827.ElemContainerState(yyj1827) + if r.TryDecodeAsNil() { + yyv1827[yyj1827] = IngressTLS{} + } else { + yyv1829 := &yyv1827[yyj1827] + yyv1829.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1827 := 0 + for ; !r.CheckBreak(); yyj1827++ { + + if yyj1827 >= len(yyv1827) { + yyv1827 = append(yyv1827, IngressTLS{}) // var yyz1827 IngressTLS + yyc1827 = true + } + yyh1827.ElemContainerState(yyj1827) + if yyj1827 < len(yyv1827) { + if r.TryDecodeAsNil() { + yyv1827[yyj1827] = IngressTLS{} + } else { + yyv1830 := &yyv1827[yyj1827] + yyv1830.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1827 < len(yyv1827) { + yyv1827 = yyv1827[:yyj1827] + yyc1827 = true + } else if yyj1827 == 0 && yyv1827 == nil { + yyv1827 = []IngressTLS{} + yyc1827 = true + } + } + yyh1827.End() + if yyc1827 { + *v = yyv1827 + } +} + +func (x codecSelfer1234) encSliceIngressRule(v []IngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1831 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1832 := &yyv1831 + yy1832.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIngressRule(v *[]IngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1833 := *v + yyh1833, yyl1833 := z.DecSliceHelperStart() + var yyc1833 bool + if yyl1833 == 0 { + if yyv1833 == nil { + yyv1833 = []IngressRule{} + yyc1833 = true + } else if len(yyv1833) != 0 { + yyv1833 = yyv1833[:0] + yyc1833 = true + } + } else if yyl1833 > 0 { + var yyrr1833, yyrl1833 int + var yyrt1833 bool + if yyl1833 > cap(yyv1833) { + + yyrg1833 := len(yyv1833) > 0 + yyv21833 := yyv1833 + yyrl1833, yyrt1833 = z.DecInferLen(yyl1833, z.DecBasicHandle().MaxInitLen, 24) + if yyrt1833 { + if yyrl1833 <= cap(yyv1833) { + yyv1833 = yyv1833[:yyrl1833] + } else { + yyv1833 = make([]IngressRule, yyrl1833) + } + } else { + yyv1833 = make([]IngressRule, yyrl1833) + } + yyc1833 = true + yyrr1833 = len(yyv1833) + if yyrg1833 { + copy(yyv1833, yyv21833) + } + } else if yyl1833 != len(yyv1833) { + yyv1833 = yyv1833[:yyl1833] + yyc1833 = true + } + yyj1833 := 0 + for ; yyj1833 < yyrr1833; yyj1833++ { + yyh1833.ElemContainerState(yyj1833) + if r.TryDecodeAsNil() { + yyv1833[yyj1833] = IngressRule{} + } else { + yyv1834 := &yyv1833[yyj1833] + yyv1834.CodecDecodeSelf(d) + } + + } + if yyrt1833 { + for ; yyj1833 < yyl1833; yyj1833++ { + yyv1833 = append(yyv1833, IngressRule{}) + yyh1833.ElemContainerState(yyj1833) + if r.TryDecodeAsNil() { + yyv1833[yyj1833] = IngressRule{} + } else { + yyv1835 := &yyv1833[yyj1833] + yyv1835.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1833 := 0 + for ; !r.CheckBreak(); yyj1833++ { + + if yyj1833 >= len(yyv1833) { + yyv1833 = append(yyv1833, IngressRule{}) // var yyz1833 IngressRule + yyc1833 = true + } + yyh1833.ElemContainerState(yyj1833) + if yyj1833 < len(yyv1833) { + if r.TryDecodeAsNil() { + yyv1833[yyj1833] = IngressRule{} + } else { + yyv1836 := &yyv1833[yyj1833] + yyv1836.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1833 < len(yyv1833) { + yyv1833 = yyv1833[:yyj1833] + yyc1833 = true + } else if yyj1833 == 0 && yyv1833 == nil { + yyv1833 = []IngressRule{} + yyc1833 = true + } + } + yyh1833.End() + if yyc1833 { + *v = yyv1833 + } +} + +func (x codecSelfer1234) encSliceHTTPIngressPath(v []HTTPIngressPath, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1837 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1838 := &yyv1837 + yy1838.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHTTPIngressPath(v *[]HTTPIngressPath, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1839 := *v + yyh1839, yyl1839 := z.DecSliceHelperStart() + var yyc1839 bool + if yyl1839 == 0 { + if yyv1839 == nil { + yyv1839 = []HTTPIngressPath{} + yyc1839 = true + } else if len(yyv1839) != 0 { + yyv1839 = yyv1839[:0] + yyc1839 = true + } + } else if yyl1839 > 0 { + var yyrr1839, yyrl1839 int + var yyrt1839 bool + if yyl1839 > cap(yyv1839) { + + yyrg1839 := len(yyv1839) > 0 + yyv21839 := yyv1839 + yyrl1839, yyrt1839 = z.DecInferLen(yyl1839, z.DecBasicHandle().MaxInitLen, 64) + if yyrt1839 { + if yyrl1839 <= cap(yyv1839) { + yyv1839 = yyv1839[:yyrl1839] + } else { + yyv1839 = make([]HTTPIngressPath, yyrl1839) + } + } else { + yyv1839 = make([]HTTPIngressPath, yyrl1839) + } + yyc1839 = true + yyrr1839 = len(yyv1839) + if yyrg1839 { + copy(yyv1839, yyv21839) + } + } else if yyl1839 != len(yyv1839) { + yyv1839 = yyv1839[:yyl1839] + yyc1839 = true + } + yyj1839 := 0 + for ; yyj1839 < yyrr1839; yyj1839++ { + yyh1839.ElemContainerState(yyj1839) + if r.TryDecodeAsNil() { + yyv1839[yyj1839] = HTTPIngressPath{} + } else { + yyv1840 := &yyv1839[yyj1839] + yyv1840.CodecDecodeSelf(d) + } + + } + if yyrt1839 { + for ; yyj1839 < yyl1839; yyj1839++ { + yyv1839 = append(yyv1839, HTTPIngressPath{}) + yyh1839.ElemContainerState(yyj1839) + if r.TryDecodeAsNil() { + yyv1839[yyj1839] = HTTPIngressPath{} + } else { + yyv1841 := &yyv1839[yyj1839] + yyv1841.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1839 := 0 + for ; !r.CheckBreak(); yyj1839++ { + + if yyj1839 >= len(yyv1839) { + yyv1839 = append(yyv1839, HTTPIngressPath{}) // var yyz1839 HTTPIngressPath + yyc1839 = true + } + yyh1839.ElemContainerState(yyj1839) + if yyj1839 < len(yyv1839) { + if r.TryDecodeAsNil() { + yyv1839[yyj1839] = HTTPIngressPath{} + } else { + yyv1842 := &yyv1839[yyj1839] + yyv1842.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1839 < len(yyv1839) { + yyv1839 = yyv1839[:yyj1839] + yyc1839 = true + } else if yyj1839 == 0 && yyv1839 == nil { + yyv1839 = []HTTPIngressPath{} + yyc1839 = true + } + } + yyh1839.End() + if yyc1839 { + *v = yyv1839 + } +} + +func (x codecSelfer1234) encSliceLabelSelectorRequirement(v []LabelSelectorRequirement, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1843 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1844 := &yyv1843 + yy1844.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceLabelSelectorRequirement(v *[]LabelSelectorRequirement, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1845 := *v + yyh1845, yyl1845 := z.DecSliceHelperStart() + var yyc1845 bool + if yyl1845 == 0 { + if yyv1845 == nil { + yyv1845 = []LabelSelectorRequirement{} + yyc1845 = true + } else if len(yyv1845) != 0 { + yyv1845 = yyv1845[:0] + yyc1845 = true + } + } else if yyl1845 > 0 { + var yyrr1845, yyrl1845 int + var yyrt1845 bool + if yyl1845 > cap(yyv1845) { + + yyrg1845 := len(yyv1845) > 0 + yyv21845 := yyv1845 + yyrl1845, yyrt1845 = z.DecInferLen(yyl1845, z.DecBasicHandle().MaxInitLen, 56) + if yyrt1845 { + if yyrl1845 <= cap(yyv1845) { + yyv1845 = yyv1845[:yyrl1845] + } else { + yyv1845 = make([]LabelSelectorRequirement, yyrl1845) + } + } else { + yyv1845 = make([]LabelSelectorRequirement, yyrl1845) + } + yyc1845 = true + yyrr1845 = len(yyv1845) + if yyrg1845 { + copy(yyv1845, yyv21845) + } + } else if yyl1845 != len(yyv1845) { + yyv1845 = yyv1845[:yyl1845] + yyc1845 = true + } + yyj1845 := 0 + for ; yyj1845 < yyrr1845; yyj1845++ { + yyh1845.ElemContainerState(yyj1845) + if r.TryDecodeAsNil() { + yyv1845[yyj1845] = LabelSelectorRequirement{} + } else { + yyv1846 := &yyv1845[yyj1845] + yyv1846.CodecDecodeSelf(d) + } + + } + if yyrt1845 { + for ; yyj1845 < yyl1845; yyj1845++ { + yyv1845 = append(yyv1845, LabelSelectorRequirement{}) + yyh1845.ElemContainerState(yyj1845) + if r.TryDecodeAsNil() { + yyv1845[yyj1845] = LabelSelectorRequirement{} + } else { + yyv1847 := &yyv1845[yyj1845] + yyv1847.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1845 := 0 + for ; !r.CheckBreak(); yyj1845++ { + + if yyj1845 >= len(yyv1845) { + yyv1845 = append(yyv1845, LabelSelectorRequirement{}) // var yyz1845 LabelSelectorRequirement + yyc1845 = true + } + yyh1845.ElemContainerState(yyj1845) + if yyj1845 < len(yyv1845) { + if r.TryDecodeAsNil() { + yyv1845[yyj1845] = LabelSelectorRequirement{} + } else { + yyv1848 := &yyv1845[yyj1845] + yyv1848.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1845 < len(yyv1845) { + yyv1845 = yyv1845[:yyj1845] + yyc1845 = true + } else if yyj1845 == 0 && yyv1845 == nil { + yyv1845 = []LabelSelectorRequirement{} + yyc1845 = true + } + } + yyh1845.End() + if yyc1845 { + *v = yyv1845 + } +} + +func (x codecSelfer1234) encSliceReplicaSet(v []ReplicaSet, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1849 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1850 := &yyv1849 + yy1850.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceReplicaSet(v *[]ReplicaSet, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1851 := *v + yyh1851, yyl1851 := z.DecSliceHelperStart() + var yyc1851 bool + if yyl1851 == 0 { + if yyv1851 == nil { + yyv1851 = []ReplicaSet{} + yyc1851 = true + } else if len(yyv1851) != 0 { + yyv1851 = yyv1851[:0] + yyc1851 = true + } + } else if yyl1851 > 0 { + var yyrr1851, yyrl1851 int + var yyrt1851 bool + if yyl1851 > cap(yyv1851) { + + yyrg1851 := len(yyv1851) > 0 + yyv21851 := yyv1851 + yyrl1851, yyrt1851 = z.DecInferLen(yyl1851, z.DecBasicHandle().MaxInitLen, 768) + if yyrt1851 { + if yyrl1851 <= cap(yyv1851) { + yyv1851 = yyv1851[:yyrl1851] + } else { + yyv1851 = make([]ReplicaSet, yyrl1851) + } + } else { + yyv1851 = make([]ReplicaSet, yyrl1851) + } + yyc1851 = true + yyrr1851 = len(yyv1851) + if yyrg1851 { + copy(yyv1851, yyv21851) + } + } else if yyl1851 != len(yyv1851) { + yyv1851 = yyv1851[:yyl1851] + yyc1851 = true + } + yyj1851 := 0 + for ; yyj1851 < yyrr1851; yyj1851++ { + yyh1851.ElemContainerState(yyj1851) + if r.TryDecodeAsNil() { + yyv1851[yyj1851] = ReplicaSet{} + } else { + yyv1852 := &yyv1851[yyj1851] + yyv1852.CodecDecodeSelf(d) + } + + } + if yyrt1851 { + for ; yyj1851 < yyl1851; yyj1851++ { + yyv1851 = append(yyv1851, ReplicaSet{}) + yyh1851.ElemContainerState(yyj1851) + if r.TryDecodeAsNil() { + yyv1851[yyj1851] = ReplicaSet{} + } else { + yyv1853 := &yyv1851[yyj1851] + yyv1853.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1851 := 0 + for ; !r.CheckBreak(); yyj1851++ { + + if yyj1851 >= len(yyv1851) { + yyv1851 = append(yyv1851, ReplicaSet{}) // var yyz1851 ReplicaSet + yyc1851 = true + } + yyh1851.ElemContainerState(yyj1851) + if yyj1851 < len(yyv1851) { + if r.TryDecodeAsNil() { + yyv1851[yyj1851] = ReplicaSet{} + } else { + yyv1854 := &yyv1851[yyj1851] + yyv1854.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1851 < len(yyv1851) { + yyv1851 = yyv1851[:yyj1851] + yyc1851 = true + } else if yyj1851 == 0 && yyv1851 == nil { + yyv1851 = []ReplicaSet{} + yyc1851 = true + } + } + yyh1851.End() + if yyc1851 { + *v = yyv1851 + } +} + +func (x codecSelfer1234) encSlicev1_Capability(v []pkg2_v1.Capability, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1855 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym1856 := z.EncBinary() + _ = yym1856 + if false { + } else if z.HasExtensions() && z.EncExt(yyv1855) { + } else { + r.EncodeString(codecSelferC_UTF81234, string(yyv1855)) + } + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicev1_Capability(v *[]pkg2_v1.Capability, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1857 := *v + yyh1857, yyl1857 := z.DecSliceHelperStart() + var yyc1857 bool + if yyl1857 == 0 { + if yyv1857 == nil { + yyv1857 = []pkg2_v1.Capability{} + yyc1857 = true + } else if len(yyv1857) != 0 { + yyv1857 = yyv1857[:0] + yyc1857 = true + } + } else if yyl1857 > 0 { + var yyrr1857, yyrl1857 int + var yyrt1857 bool + if yyl1857 > cap(yyv1857) { + + yyrl1857, yyrt1857 = z.DecInferLen(yyl1857, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1857 { + if yyrl1857 <= cap(yyv1857) { + yyv1857 = yyv1857[:yyrl1857] + } else { + yyv1857 = make([]pkg2_v1.Capability, yyrl1857) + } + } else { + yyv1857 = make([]pkg2_v1.Capability, yyrl1857) + } + yyc1857 = true + yyrr1857 = len(yyv1857) + } else if yyl1857 != len(yyv1857) { + yyv1857 = yyv1857[:yyl1857] + yyc1857 = true + } + yyj1857 := 0 + for ; yyj1857 < yyrr1857; yyj1857++ { + yyh1857.ElemContainerState(yyj1857) + if r.TryDecodeAsNil() { + yyv1857[yyj1857] = "" + } else { + yyv1857[yyj1857] = pkg2_v1.Capability(r.DecodeString()) + } + + } + if yyrt1857 { + for ; yyj1857 < yyl1857; yyj1857++ { + yyv1857 = append(yyv1857, "") + yyh1857.ElemContainerState(yyj1857) + if r.TryDecodeAsNil() { + yyv1857[yyj1857] = "" + } else { + yyv1857[yyj1857] = pkg2_v1.Capability(r.DecodeString()) + } + + } + } + + } else { + yyj1857 := 0 + for ; !r.CheckBreak(); yyj1857++ { + + if yyj1857 >= len(yyv1857) { + yyv1857 = append(yyv1857, "") // var yyz1857 pkg2_v1.Capability + yyc1857 = true + } + yyh1857.ElemContainerState(yyj1857) + if yyj1857 < len(yyv1857) { + if r.TryDecodeAsNil() { + yyv1857[yyj1857] = "" + } else { + yyv1857[yyj1857] = pkg2_v1.Capability(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj1857 < len(yyv1857) { + yyv1857 = yyv1857[:yyj1857] + yyc1857 = true + } else if yyj1857 == 0 && yyv1857 == nil { + yyv1857 = []pkg2_v1.Capability{} + yyc1857 = true + } + } + yyh1857.End() + if yyc1857 { + *v = yyv1857 + } +} + +func (x codecSelfer1234) encSliceFSType(v []FSType, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1861 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yyv1861.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceFSType(v *[]FSType, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1862 := *v + yyh1862, yyl1862 := z.DecSliceHelperStart() + var yyc1862 bool + if yyl1862 == 0 { + if yyv1862 == nil { + yyv1862 = []FSType{} + yyc1862 = true + } else if len(yyv1862) != 0 { + yyv1862 = yyv1862[:0] + yyc1862 = true + } + } else if yyl1862 > 0 { + var yyrr1862, yyrl1862 int + var yyrt1862 bool + if yyl1862 > cap(yyv1862) { + + yyrl1862, yyrt1862 = z.DecInferLen(yyl1862, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1862 { + if yyrl1862 <= cap(yyv1862) { + yyv1862 = yyv1862[:yyrl1862] + } else { + yyv1862 = make([]FSType, yyrl1862) + } + } else { + yyv1862 = make([]FSType, yyrl1862) + } + yyc1862 = true + yyrr1862 = len(yyv1862) + } else if yyl1862 != len(yyv1862) { + yyv1862 = yyv1862[:yyl1862] + yyc1862 = true + } + yyj1862 := 0 + for ; yyj1862 < yyrr1862; yyj1862++ { + yyh1862.ElemContainerState(yyj1862) + if r.TryDecodeAsNil() { + yyv1862[yyj1862] = "" + } else { + yyv1862[yyj1862] = FSType(r.DecodeString()) + } + + } + if yyrt1862 { + for ; yyj1862 < yyl1862; yyj1862++ { + yyv1862 = append(yyv1862, "") + yyh1862.ElemContainerState(yyj1862) + if r.TryDecodeAsNil() { + yyv1862[yyj1862] = "" + } else { + yyv1862[yyj1862] = FSType(r.DecodeString()) + } + + } + } + + } else { + yyj1862 := 0 + for ; !r.CheckBreak(); yyj1862++ { + + if yyj1862 >= len(yyv1862) { + yyv1862 = append(yyv1862, "") // var yyz1862 FSType + yyc1862 = true + } + yyh1862.ElemContainerState(yyj1862) + if yyj1862 < len(yyv1862) { + if r.TryDecodeAsNil() { + yyv1862[yyj1862] = "" + } else { + yyv1862[yyj1862] = FSType(r.DecodeString()) + } + + } else { + z.DecSwallow() + } + + } + if yyj1862 < len(yyv1862) { + yyv1862 = yyv1862[:yyj1862] + yyc1862 = true + } else if yyj1862 == 0 && yyv1862 == nil { + yyv1862 = []FSType{} + yyc1862 = true + } + } + yyh1862.End() + if yyc1862 { + *v = yyv1862 + } +} + +func (x codecSelfer1234) encSliceHostPortRange(v []HostPortRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1866 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1867 := &yyv1866 + yy1867.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceHostPortRange(v *[]HostPortRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1868 := *v + yyh1868, yyl1868 := z.DecSliceHelperStart() + var yyc1868 bool + if yyl1868 == 0 { + if yyv1868 == nil { + yyv1868 = []HostPortRange{} + yyc1868 = true + } else if len(yyv1868) != 0 { + yyv1868 = yyv1868[:0] + yyc1868 = true + } + } else if yyl1868 > 0 { + var yyrr1868, yyrl1868 int + var yyrt1868 bool + if yyl1868 > cap(yyv1868) { + + yyrg1868 := len(yyv1868) > 0 + yyv21868 := yyv1868 + yyrl1868, yyrt1868 = z.DecInferLen(yyl1868, z.DecBasicHandle().MaxInitLen, 8) + if yyrt1868 { + if yyrl1868 <= cap(yyv1868) { + yyv1868 = yyv1868[:yyrl1868] + } else { + yyv1868 = make([]HostPortRange, yyrl1868) + } + } else { + yyv1868 = make([]HostPortRange, yyrl1868) + } + yyc1868 = true + yyrr1868 = len(yyv1868) + if yyrg1868 { + copy(yyv1868, yyv21868) + } + } else if yyl1868 != len(yyv1868) { + yyv1868 = yyv1868[:yyl1868] + yyc1868 = true + } + yyj1868 := 0 + for ; yyj1868 < yyrr1868; yyj1868++ { + yyh1868.ElemContainerState(yyj1868) + if r.TryDecodeAsNil() { + yyv1868[yyj1868] = HostPortRange{} + } else { + yyv1869 := &yyv1868[yyj1868] + yyv1869.CodecDecodeSelf(d) + } + + } + if yyrt1868 { + for ; yyj1868 < yyl1868; yyj1868++ { + yyv1868 = append(yyv1868, HostPortRange{}) + yyh1868.ElemContainerState(yyj1868) + if r.TryDecodeAsNil() { + yyv1868[yyj1868] = HostPortRange{} + } else { + yyv1870 := &yyv1868[yyj1868] + yyv1870.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1868 := 0 + for ; !r.CheckBreak(); yyj1868++ { + + if yyj1868 >= len(yyv1868) { + yyv1868 = append(yyv1868, HostPortRange{}) // var yyz1868 HostPortRange + yyc1868 = true + } + yyh1868.ElemContainerState(yyj1868) + if yyj1868 < len(yyv1868) { + if r.TryDecodeAsNil() { + yyv1868[yyj1868] = HostPortRange{} + } else { + yyv1871 := &yyv1868[yyj1868] + yyv1871.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1868 < len(yyv1868) { + yyv1868 = yyv1868[:yyj1868] + yyc1868 = true + } else if yyj1868 == 0 && yyv1868 == nil { + yyv1868 = []HostPortRange{} + yyc1868 = true + } + } + yyh1868.End() + if yyc1868 { + *v = yyv1868 + } +} + +func (x codecSelfer1234) encSliceIDRange(v []IDRange, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1872 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1873 := &yyv1872 + yy1873.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceIDRange(v *[]IDRange, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1874 := *v + yyh1874, yyl1874 := z.DecSliceHelperStart() + var yyc1874 bool + if yyl1874 == 0 { + if yyv1874 == nil { + yyv1874 = []IDRange{} + yyc1874 = true + } else if len(yyv1874) != 0 { + yyv1874 = yyv1874[:0] + yyc1874 = true + } + } else if yyl1874 > 0 { + var yyrr1874, yyrl1874 int + var yyrt1874 bool + if yyl1874 > cap(yyv1874) { + + yyrg1874 := len(yyv1874) > 0 + yyv21874 := yyv1874 + yyrl1874, yyrt1874 = z.DecInferLen(yyl1874, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1874 { + if yyrl1874 <= cap(yyv1874) { + yyv1874 = yyv1874[:yyrl1874] + } else { + yyv1874 = make([]IDRange, yyrl1874) + } + } else { + yyv1874 = make([]IDRange, yyrl1874) + } + yyc1874 = true + yyrr1874 = len(yyv1874) + if yyrg1874 { + copy(yyv1874, yyv21874) + } + } else if yyl1874 != len(yyv1874) { + yyv1874 = yyv1874[:yyl1874] + yyc1874 = true + } + yyj1874 := 0 + for ; yyj1874 < yyrr1874; yyj1874++ { + yyh1874.ElemContainerState(yyj1874) + if r.TryDecodeAsNil() { + yyv1874[yyj1874] = IDRange{} + } else { + yyv1875 := &yyv1874[yyj1874] + yyv1875.CodecDecodeSelf(d) + } + + } + if yyrt1874 { + for ; yyj1874 < yyl1874; yyj1874++ { + yyv1874 = append(yyv1874, IDRange{}) + yyh1874.ElemContainerState(yyj1874) + if r.TryDecodeAsNil() { + yyv1874[yyj1874] = IDRange{} + } else { + yyv1876 := &yyv1874[yyj1874] + yyv1876.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1874 := 0 + for ; !r.CheckBreak(); yyj1874++ { + + if yyj1874 >= len(yyv1874) { + yyv1874 = append(yyv1874, IDRange{}) // var yyz1874 IDRange + yyc1874 = true + } + yyh1874.ElemContainerState(yyj1874) + if yyj1874 < len(yyv1874) { + if r.TryDecodeAsNil() { + yyv1874[yyj1874] = IDRange{} + } else { + yyv1877 := &yyv1874[yyj1874] + yyv1877.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1874 < len(yyv1874) { + yyv1874 = yyv1874[:yyj1874] + yyc1874 = true + } else if yyj1874 == 0 && yyv1874 == nil { + yyv1874 = []IDRange{} + yyc1874 = true + } + } + yyh1874.End() + if yyc1874 { + *v = yyv1874 + } +} + +func (x codecSelfer1234) encSlicePodSecurityPolicy(v []PodSecurityPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1878 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1879 := &yyv1878 + yy1879.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodSecurityPolicy(v *[]PodSecurityPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1880 := *v + yyh1880, yyl1880 := z.DecSliceHelperStart() + var yyc1880 bool + if yyl1880 == 0 { + if yyv1880 == nil { + yyv1880 = []PodSecurityPolicy{} + yyc1880 = true + } else if len(yyv1880) != 0 { + yyv1880 = yyv1880[:0] + yyc1880 = true + } + } else if yyl1880 > 0 { + var yyrr1880, yyrl1880 int + var yyrt1880 bool + if yyl1880 > cap(yyv1880) { + + yyrg1880 := len(yyv1880) > 0 + yyv21880 := yyv1880 + yyrl1880, yyrt1880 = z.DecInferLen(yyl1880, z.DecBasicHandle().MaxInitLen, 552) + if yyrt1880 { + if yyrl1880 <= cap(yyv1880) { + yyv1880 = yyv1880[:yyrl1880] + } else { + yyv1880 = make([]PodSecurityPolicy, yyrl1880) + } + } else { + yyv1880 = make([]PodSecurityPolicy, yyrl1880) + } + yyc1880 = true + yyrr1880 = len(yyv1880) + if yyrg1880 { + copy(yyv1880, yyv21880) + } + } else if yyl1880 != len(yyv1880) { + yyv1880 = yyv1880[:yyl1880] + yyc1880 = true + } + yyj1880 := 0 + for ; yyj1880 < yyrr1880; yyj1880++ { + yyh1880.ElemContainerState(yyj1880) + if r.TryDecodeAsNil() { + yyv1880[yyj1880] = PodSecurityPolicy{} + } else { + yyv1881 := &yyv1880[yyj1880] + yyv1881.CodecDecodeSelf(d) + } + + } + if yyrt1880 { + for ; yyj1880 < yyl1880; yyj1880++ { + yyv1880 = append(yyv1880, PodSecurityPolicy{}) + yyh1880.ElemContainerState(yyj1880) + if r.TryDecodeAsNil() { + yyv1880[yyj1880] = PodSecurityPolicy{} + } else { + yyv1882 := &yyv1880[yyj1880] + yyv1882.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1880 := 0 + for ; !r.CheckBreak(); yyj1880++ { + + if yyj1880 >= len(yyv1880) { + yyv1880 = append(yyv1880, PodSecurityPolicy{}) // var yyz1880 PodSecurityPolicy + yyc1880 = true + } + yyh1880.ElemContainerState(yyj1880) + if yyj1880 < len(yyv1880) { + if r.TryDecodeAsNil() { + yyv1880[yyj1880] = PodSecurityPolicy{} + } else { + yyv1883 := &yyv1880[yyj1880] + yyv1883.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1880 < len(yyv1880) { + yyv1880 = yyv1880[:yyj1880] + yyc1880 = true + } else if yyj1880 == 0 && yyv1880 == nil { + yyv1880 = []PodSecurityPolicy{} + yyc1880 = true + } + } + yyh1880.End() + if yyc1880 { + *v = yyv1880 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyIngressRule(v []NetworkPolicyIngressRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1884 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1885 := &yyv1884 + yy1885.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyIngressRule(v *[]NetworkPolicyIngressRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1886 := *v + yyh1886, yyl1886 := z.DecSliceHelperStart() + var yyc1886 bool + if yyl1886 == 0 { + if yyv1886 == nil { + yyv1886 = []NetworkPolicyIngressRule{} + yyc1886 = true + } else if len(yyv1886) != 0 { + yyv1886 = yyv1886[:0] + yyc1886 = true + } + } else if yyl1886 > 0 { + var yyrr1886, yyrl1886 int + var yyrt1886 bool + if yyl1886 > cap(yyv1886) { + + yyrg1886 := len(yyv1886) > 0 + yyv21886 := yyv1886 + yyrl1886, yyrt1886 = z.DecInferLen(yyl1886, z.DecBasicHandle().MaxInitLen, 48) + if yyrt1886 { + if yyrl1886 <= cap(yyv1886) { + yyv1886 = yyv1886[:yyrl1886] + } else { + yyv1886 = make([]NetworkPolicyIngressRule, yyrl1886) + } + } else { + yyv1886 = make([]NetworkPolicyIngressRule, yyrl1886) + } + yyc1886 = true + yyrr1886 = len(yyv1886) + if yyrg1886 { + copy(yyv1886, yyv21886) + } + } else if yyl1886 != len(yyv1886) { + yyv1886 = yyv1886[:yyl1886] + yyc1886 = true + } + yyj1886 := 0 + for ; yyj1886 < yyrr1886; yyj1886++ { + yyh1886.ElemContainerState(yyj1886) + if r.TryDecodeAsNil() { + yyv1886[yyj1886] = NetworkPolicyIngressRule{} + } else { + yyv1887 := &yyv1886[yyj1886] + yyv1887.CodecDecodeSelf(d) + } + + } + if yyrt1886 { + for ; yyj1886 < yyl1886; yyj1886++ { + yyv1886 = append(yyv1886, NetworkPolicyIngressRule{}) + yyh1886.ElemContainerState(yyj1886) + if r.TryDecodeAsNil() { + yyv1886[yyj1886] = NetworkPolicyIngressRule{} + } else { + yyv1888 := &yyv1886[yyj1886] + yyv1888.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1886 := 0 + for ; !r.CheckBreak(); yyj1886++ { + + if yyj1886 >= len(yyv1886) { + yyv1886 = append(yyv1886, NetworkPolicyIngressRule{}) // var yyz1886 NetworkPolicyIngressRule + yyc1886 = true + } + yyh1886.ElemContainerState(yyj1886) + if yyj1886 < len(yyv1886) { + if r.TryDecodeAsNil() { + yyv1886[yyj1886] = NetworkPolicyIngressRule{} + } else { + yyv1889 := &yyv1886[yyj1886] + yyv1889.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1886 < len(yyv1886) { + yyv1886 = yyv1886[:yyj1886] + yyc1886 = true + } else if yyj1886 == 0 && yyv1886 == nil { + yyv1886 = []NetworkPolicyIngressRule{} + yyc1886 = true + } + } + yyh1886.End() + if yyc1886 { + *v = yyv1886 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPort(v []NetworkPolicyPort, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1890 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1891 := &yyv1890 + yy1891.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPort(v *[]NetworkPolicyPort, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1892 := *v + yyh1892, yyl1892 := z.DecSliceHelperStart() + var yyc1892 bool + if yyl1892 == 0 { + if yyv1892 == nil { + yyv1892 = []NetworkPolicyPort{} + yyc1892 = true + } else if len(yyv1892) != 0 { + yyv1892 = yyv1892[:0] + yyc1892 = true + } + } else if yyl1892 > 0 { + var yyrr1892, yyrl1892 int + var yyrt1892 bool + if yyl1892 > cap(yyv1892) { + + yyrg1892 := len(yyv1892) > 0 + yyv21892 := yyv1892 + yyrl1892, yyrt1892 = z.DecInferLen(yyl1892, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1892 { + if yyrl1892 <= cap(yyv1892) { + yyv1892 = yyv1892[:yyrl1892] + } else { + yyv1892 = make([]NetworkPolicyPort, yyrl1892) + } + } else { + yyv1892 = make([]NetworkPolicyPort, yyrl1892) + } + yyc1892 = true + yyrr1892 = len(yyv1892) + if yyrg1892 { + copy(yyv1892, yyv21892) + } + } else if yyl1892 != len(yyv1892) { + yyv1892 = yyv1892[:yyl1892] + yyc1892 = true + } + yyj1892 := 0 + for ; yyj1892 < yyrr1892; yyj1892++ { + yyh1892.ElemContainerState(yyj1892) + if r.TryDecodeAsNil() { + yyv1892[yyj1892] = NetworkPolicyPort{} + } else { + yyv1893 := &yyv1892[yyj1892] + yyv1893.CodecDecodeSelf(d) + } + + } + if yyrt1892 { + for ; yyj1892 < yyl1892; yyj1892++ { + yyv1892 = append(yyv1892, NetworkPolicyPort{}) + yyh1892.ElemContainerState(yyj1892) + if r.TryDecodeAsNil() { + yyv1892[yyj1892] = NetworkPolicyPort{} + } else { + yyv1894 := &yyv1892[yyj1892] + yyv1894.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1892 := 0 + for ; !r.CheckBreak(); yyj1892++ { + + if yyj1892 >= len(yyv1892) { + yyv1892 = append(yyv1892, NetworkPolicyPort{}) // var yyz1892 NetworkPolicyPort + yyc1892 = true + } + yyh1892.ElemContainerState(yyj1892) + if yyj1892 < len(yyv1892) { + if r.TryDecodeAsNil() { + yyv1892[yyj1892] = NetworkPolicyPort{} + } else { + yyv1895 := &yyv1892[yyj1892] + yyv1895.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1892 < len(yyv1892) { + yyv1892 = yyv1892[:yyj1892] + yyc1892 = true + } else if yyj1892 == 0 && yyv1892 == nil { + yyv1892 = []NetworkPolicyPort{} + yyc1892 = true + } + } + yyh1892.End() + if yyc1892 { + *v = yyv1892 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicyPeer(v []NetworkPolicyPeer, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1896 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1897 := &yyv1896 + yy1897.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicyPeer(v *[]NetworkPolicyPeer, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1898 := *v + yyh1898, yyl1898 := z.DecSliceHelperStart() + var yyc1898 bool + if yyl1898 == 0 { + if yyv1898 == nil { + yyv1898 = []NetworkPolicyPeer{} + yyc1898 = true + } else if len(yyv1898) != 0 { + yyv1898 = yyv1898[:0] + yyc1898 = true + } + } else if yyl1898 > 0 { + var yyrr1898, yyrl1898 int + var yyrt1898 bool + if yyl1898 > cap(yyv1898) { + + yyrg1898 := len(yyv1898) > 0 + yyv21898 := yyv1898 + yyrl1898, yyrt1898 = z.DecInferLen(yyl1898, z.DecBasicHandle().MaxInitLen, 16) + if yyrt1898 { + if yyrl1898 <= cap(yyv1898) { + yyv1898 = yyv1898[:yyrl1898] + } else { + yyv1898 = make([]NetworkPolicyPeer, yyrl1898) + } + } else { + yyv1898 = make([]NetworkPolicyPeer, yyrl1898) + } + yyc1898 = true + yyrr1898 = len(yyv1898) + if yyrg1898 { + copy(yyv1898, yyv21898) + } + } else if yyl1898 != len(yyv1898) { + yyv1898 = yyv1898[:yyl1898] + yyc1898 = true + } + yyj1898 := 0 + for ; yyj1898 < yyrr1898; yyj1898++ { + yyh1898.ElemContainerState(yyj1898) + if r.TryDecodeAsNil() { + yyv1898[yyj1898] = NetworkPolicyPeer{} + } else { + yyv1899 := &yyv1898[yyj1898] + yyv1899.CodecDecodeSelf(d) + } + + } + if yyrt1898 { + for ; yyj1898 < yyl1898; yyj1898++ { + yyv1898 = append(yyv1898, NetworkPolicyPeer{}) + yyh1898.ElemContainerState(yyj1898) + if r.TryDecodeAsNil() { + yyv1898[yyj1898] = NetworkPolicyPeer{} + } else { + yyv1900 := &yyv1898[yyj1898] + yyv1900.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1898 := 0 + for ; !r.CheckBreak(); yyj1898++ { + + if yyj1898 >= len(yyv1898) { + yyv1898 = append(yyv1898, NetworkPolicyPeer{}) // var yyz1898 NetworkPolicyPeer + yyc1898 = true + } + yyh1898.ElemContainerState(yyj1898) + if yyj1898 < len(yyv1898) { + if r.TryDecodeAsNil() { + yyv1898[yyj1898] = NetworkPolicyPeer{} + } else { + yyv1901 := &yyv1898[yyj1898] + yyv1901.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1898 < len(yyv1898) { + yyv1898 = yyv1898[:yyj1898] + yyc1898 = true + } else if yyj1898 == 0 && yyv1898 == nil { + yyv1898 = []NetworkPolicyPeer{} + yyc1898 = true + } + } + yyh1898.End() + if yyc1898 { + *v = yyv1898 + } +} + +func (x codecSelfer1234) encSliceNetworkPolicy(v []NetworkPolicy, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv1902 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy1903 := &yyv1902 + yy1903.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv1904 := *v + yyh1904, yyl1904 := z.DecSliceHelperStart() + var yyc1904 bool + if yyl1904 == 0 { + if yyv1904 == nil { + yyv1904 = []NetworkPolicy{} + yyc1904 = true + } else if len(yyv1904) != 0 { + yyv1904 = yyv1904[:0] + yyc1904 = true + } + } else if yyl1904 > 0 { + var yyrr1904, yyrl1904 int + var yyrt1904 bool + if yyl1904 > cap(yyv1904) { + + yyrg1904 := len(yyv1904) > 0 + yyv21904 := yyv1904 + yyrl1904, yyrt1904 = z.DecInferLen(yyl1904, z.DecBasicHandle().MaxInitLen, 312) + if yyrt1904 { + if yyrl1904 <= cap(yyv1904) { + yyv1904 = yyv1904[:yyrl1904] + } else { + yyv1904 = make([]NetworkPolicy, yyrl1904) + } + } else { + yyv1904 = make([]NetworkPolicy, yyrl1904) + } + yyc1904 = true + yyrr1904 = len(yyv1904) + if yyrg1904 { + copy(yyv1904, yyv21904) + } + } else if yyl1904 != len(yyv1904) { + yyv1904 = yyv1904[:yyl1904] + yyc1904 = true + } + yyj1904 := 0 + for ; yyj1904 < yyrr1904; yyj1904++ { + yyh1904.ElemContainerState(yyj1904) + if r.TryDecodeAsNil() { + yyv1904[yyj1904] = NetworkPolicy{} + } else { + yyv1905 := &yyv1904[yyj1904] + yyv1905.CodecDecodeSelf(d) + } + + } + if yyrt1904 { + for ; yyj1904 < yyl1904; yyj1904++ { + yyv1904 = append(yyv1904, NetworkPolicy{}) + yyh1904.ElemContainerState(yyj1904) + if r.TryDecodeAsNil() { + yyv1904[yyj1904] = NetworkPolicy{} + } else { + yyv1906 := &yyv1904[yyj1904] + yyv1906.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj1904 := 0 + for ; !r.CheckBreak(); yyj1904++ { + + if yyj1904 >= len(yyv1904) { + yyv1904 = append(yyv1904, NetworkPolicy{}) // var yyz1904 NetworkPolicy + yyc1904 = true + } + yyh1904.ElemContainerState(yyj1904) + if yyj1904 < len(yyv1904) { + if r.TryDecodeAsNil() { + yyv1904[yyj1904] = NetworkPolicy{} + } else { + yyv1907 := &yyv1904[yyj1904] + yyv1907.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj1904 < len(yyv1904) { + yyv1904 = yyv1904[:yyj1904] + yyc1904 = true + } else if yyj1904 == 0 && yyv1904 == nil { + yyv1904 = []NetworkPolicy{} + yyc1904 = true + } + } + yyh1904.End() + if yyc1904 { + *v = yyv1904 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.go new file mode 100644 index 0000000000..1b916ecaff --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types.go @@ -0,0 +1,1201 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/resource" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +// describes the attributes of a scale subresource +type ScaleSpec struct { + // desired number of instances for the scaled object. + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` +} + +// represents the current status of a scale subresource. +type ScaleStatus struct { + // actual number of observed instances of the scaled object. + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // label query over pods that should match the replicas count. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector map[string]string `json:"selector,omitempty" protobuf:"bytes,2,rep,name=selector"` + + // label selector for pods that should match the replicas count. This is a serializated + // version of both map-based and more expressive set-based selectors. This is done to + // avoid introspection in the clients. The string will be in the same format as the + // query-param syntax. If the target type only supports map-based selectors, both this + // field and map-based selector field are populated. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"` +} + +// +genclient=true +// +noMethods=true + +// represents a scaling request for a resource. +type Scale struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only. + Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// Dummy definition +type ReplicationControllerDummy struct { + unversioned.TypeMeta `json:",inline"` +} + +// SubresourceReference contains enough information to let you inspect or modify the referred subresource. +type SubresourceReference struct { + // Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"` + // Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names + Name string `json:"name,omitempty" protobuf:"bytes,2,opt,name=name"` + // API version of the referent + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"` + // Subresource name of the referent + Subresource string `json:"subresource,omitempty" protobuf:"bytes,4,opt,name=subresource"` +} + +type CPUTargetUtilization struct { + // fraction of the requested CPU that should be utilized/used, + // e.g. 70 means that 70% of the requested CPU should be in use. + TargetPercentage int32 `json:"targetPercentage" protobuf:"varint,1,opt,name=targetPercentage"` +} + +// Alpha-level support for Custom Metrics in HPA (as annotations). +type CustomMetricTarget struct { + // Custom Metric name. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Custom Metric value (average). + TargetValue resource.Quantity `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +type CustomMetricTargetList struct { + Items []CustomMetricTarget `json:"items" protobuf:"bytes,1,rep,name=items"` +} + +type CustomMetricCurrentStatus struct { + // Custom Metric name. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // Custom Metric value (average). + CurrentValue resource.Quantity `json:"value" protobuf:"bytes,2,opt,name=value"` +} + +type CustomMetricCurrentStatusList struct { + Items []CustomMetricCurrentStatus `json:"items" protobuf:"bytes,1,rep,name=items"` +} + +// specification of a horizontal pod autoscaler. +type HorizontalPodAutoscalerSpec struct { + // reference to Scale subresource; horizontal pod autoscaler will learn the current resource consumption from its status, + // and will set the desired number of pods by modifying its spec. + ScaleRef SubresourceReference `json:"scaleRef" protobuf:"bytes,1,opt,name=scaleRef"` + // lower limit for the number of pods that can be set by the autoscaler, default 1. + MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"` + // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. + MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"` + // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; + // if not specified it defaults to the target CPU utilization at 80% of the requested resources. + CPUUtilization *CPUTargetUtilization `json:"cpuUtilization,omitempty" protobuf:"bytes,4,opt,name=cpuUtilization"` +} + +// current status of a horizontal pod autoscaler +type HorizontalPodAutoscalerStatus struct { + // most recent generation observed by this autoscaler. + ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // last time the HorizontalPodAutoscaler scaled the number of pods; + // used by the autoscaler to control how often the number of pods is changed. + LastScaleTime *unversioned.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"` + + // current number of replicas of pods managed by this autoscaler. + CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"` + + // desired number of replicas of pods managed by this autoscaler. + DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"` + + // current average CPU utilization over all pods, represented as a percentage of requested CPU, + // e.g. 70 means that an average pod is using now 70% of its requested CPU. + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty" protobuf:"varint,5,opt,name=currentCPUUtilizationPercentage"` +} + +// configuration of a horizontal pod autoscaler. +type HorizontalPodAutoscaler struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. + Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // current information about the autoscaler. + Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// list of horizontal pod autoscaler objects. +type HorizontalPodAutoscalerList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // list of horizontal pod autoscaler objects. + Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true +// +nonNamespaced=true + +// A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource +// types to the API. It consists of one or more Versions of the api. +type ThirdPartyResource struct { + unversioned.TypeMeta `json:",inline"` + + // Standard object metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Description is the description of this object. + Description string `json:"description,omitempty" protobuf:"bytes,2,opt,name=description"` + + // Versions are versions for this third party object + Versions []APIVersion `json:"versions,omitempty" protobuf:"bytes,3,rep,name=versions"` +} + +// ThirdPartyResourceList is a list of ThirdPartyResources. +type ThirdPartyResourceList struct { + unversioned.TypeMeta `json:",inline"` + + // Standard list metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ThirdPartyResources. + Items []ThirdPartyResource `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// An APIVersion represents a single concrete version of an object model. +type APIVersion struct { + // Name of this version (e.g. 'v1'). + Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` +} + +// An internal object, used for versioned storage in etcd. Not exposed to the end user. +type ThirdPartyResourceData struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Data is the raw JSON data for this data. + Data []byte `json:"data,omitempty" protobuf:"bytes,2,opt,name=data"` +} + +// +genclient=true + +// Deployment enables declarative updates for Pods and ReplicaSets. +type Deployment struct { + unversioned.TypeMeta `json:",inline"` + // Standard object metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the Deployment. + Spec DeploymentSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Most recently observed status of the Deployment. + Status DeploymentStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// DeploymentSpec is the specification of the desired behavior of the Deployment. +type DeploymentSpec struct { + // Number of desired pods. This is a pointer to distinguish between explicit + // zero and not specified. Defaults to 1. + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Label selector for pods. Existing ReplicaSets whose pods are + // selected by this will be the ones affected by this deployment. + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template describes the pods that will be created. + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"` + + // The deployment strategy to use to replace existing pods with new ones. + Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"` + + // Minimum number of seconds for which a newly created pod should be ready + // without any of its container crashing, for it to be considered available. + // Defaults to 0 (pod will be considered available as soon as it is ready) + MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,5,opt,name=minReadySeconds"` + + // The number of old ReplicaSets to retain to allow rollback. + // This is a pointer to distinguish between explicit zero and not specified. + RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty" protobuf:"varint,6,opt,name=revisionHistoryLimit"` + + // Indicates that the deployment is paused and will not be processed by the + // deployment controller. + Paused bool `json:"paused,omitempty" protobuf:"varint,7,opt,name=paused"` + // The config this deployment is rolling back to. Will be cleared after rollback is done. + RollbackTo *RollbackConfig `json:"rollbackTo,omitempty" protobuf:"bytes,8,opt,name=rollbackTo"` +} + +// DeploymentRollback stores the information required to rollback a deployment. +type DeploymentRollback struct { + unversioned.TypeMeta `json:",inline"` + // Required: This must match the Name of a deployment. + Name string `json:"name" protobuf:"bytes,1,opt,name=name"` + // The annotations to be updated to a deployment + UpdatedAnnotations map[string]string `json:"updatedAnnotations,omitempty" protobuf:"bytes,2,rep,name=updatedAnnotations"` + // The config of this deployment rollback. + RollbackTo RollbackConfig `json:"rollbackTo" protobuf:"bytes,3,opt,name=rollbackTo"` +} + +type RollbackConfig struct { + // The revision to rollback to. If set to 0, rollbck to the last revision. + Revision int64 `json:"revision,omitempty" protobuf:"varint,1,opt,name=revision"` +} + +const ( + // DefaultDeploymentUniqueLabelKey is the default key of the selector that is added + // to existing RCs (and label key that is added to its pods) to prevent the existing RCs + // to select new pods (and old pods being select by new RC). + DefaultDeploymentUniqueLabelKey string = "pod-template-hash" +) + +// DeploymentStrategy describes how to replace existing pods with new ones. +type DeploymentStrategy struct { + // Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. + Type DeploymentStrategyType `json:"type,omitempty" protobuf:"bytes,1,opt,name=type,casttype=DeploymentStrategyType"` + + // Rolling update config params. Present only if DeploymentStrategyType = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. + RollingUpdate *RollingUpdateDeployment `json:"rollingUpdate,omitempty" protobuf:"bytes,2,opt,name=rollingUpdate"` +} + +type DeploymentStrategyType string + +const ( + // Kill all existing pods before creating new ones. + RecreateDeploymentStrategyType DeploymentStrategyType = "Recreate" + + // Replace the old RCs by new one using rolling update i.e gradually scale down the old RCs and scale up the new one. + RollingUpdateDeploymentStrategyType DeploymentStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of rolling update. +type RollingUpdateDeployment struct { + // The maximum number of pods that can be unavailable during the update. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // Absolute number is calculated from percentage by rounding up. + // This can not be 0 if MaxSurge is 0. + // By default, a fixed value of 1 is used. + // Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods + // immediately when the rolling update starts. Once new pods are ready, old RC + // can be scaled down further, followed by scaling up the new RC, ensuring + // that the total number of pods available at all times during the update is at + // least 70% of desired pods. + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,1,opt,name=maxUnavailable"` + + // The maximum number of pods that can be scheduled above the desired number of + // pods. + // Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). + // This can not be 0 if MaxUnavailable is 0. + // Absolute number is calculated from percentage by rounding up. + // By default, a value of 1 is used. + // Example: when this is set to 30%, the new RC can be scaled up immediately when + // the rolling update starts, such that the total number of old and new pods do not exceed + // 130% of desired pods. Once old pods have been killed, + // new RC can be scaled up further, ensuring that total number of pods running + // at any time during the update is atmost 130% of desired pods. + MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"` +} + +// DeploymentStatus is the most recently observed status of the Deployment. +type DeploymentStatus struct { + // The generation observed by the deployment controller. + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"` + + // Total number of non-terminated pods targeted by this deployment (their labels match the selector). + Replicas int32 `json:"replicas,omitempty" protobuf:"varint,2,opt,name=replicas"` + + // Total number of non-terminated pods targeted by this deployment that have the desired template spec. + UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` + + // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. + AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` + + // Total number of unavailable pods targeted by this deployment. + UnavailableReplicas int32 `json:"unavailableReplicas,omitempty" protobuf:"varint,5,opt,name=unavailableReplicas"` +} + +// DeploymentList is a list of Deployments. +type DeploymentList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Deployments. + Items []Deployment `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// TODO(madhusudancs): Uncomment while implementing DaemonSet updates. +/* Commenting out for v1.2. We are planning to bring these types back with a more robust DaemonSet update implementation in v1.3, hence not deleting but just commenting the types out. +type DaemonSetUpdateStrategy struct { + // Type of daemon set update. Only "RollingUpdate" is supported at this time. Default is RollingUpdate. + Type DaemonSetUpdateStrategyType `json:"type,omitempty"` + + // Rolling update config params. Present only if DaemonSetUpdateStrategy = + // RollingUpdate. + //--- + // TODO: Update this to follow our convention for oneOf, whatever we decide it + // to be. Same as DeploymentStrategy.RollingUpdate. + RollingUpdate *RollingUpdateDaemonSet `json:"rollingUpdate,omitempty"` +} + +type DaemonSetUpdateStrategyType string + +const ( + // Replace the old daemons by new ones using rolling update i.e replace them on each node one after the other. + RollingUpdateDaemonSetStrategyType DaemonSetUpdateStrategyType = "RollingUpdate" +) + +// Spec to control the desired behavior of daemon set rolling update. +type RollingUpdateDaemonSet struct { + // The maximum number of DaemonSet pods that can be unavailable during the + // update. Value can be an absolute number (ex: 5) or a percentage of total + // number of DaemonSet pods at the start of the update (ex: 10%). Absolute + // number is calculated from percentage by rounding up. + // This cannot be 0. + // Default value is 1. + // Example: when this is set to 30%, 30% of the currently running DaemonSet + // pods can be stopped for an update at any given time. The update starts + // by stopping at most 30% of the currently running DaemonSet pods and then + // brings up new DaemonSet pods in their place. Once the new pods are ready, + // it then proceeds onto other DaemonSet pods, thus ensuring that at least + // 70% of original number of DaemonSet pods are available at all times + // during the update. + MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"` + + // Minimum number of seconds for which a newly created DaemonSet pod should + // be ready without any of its container crashing, for it to be considered + // available. Defaults to 0 (pod will be considered available as soon as it + // is ready). + MinReadySeconds int32 `json:"minReadySeconds,omitempty"` +} +*/ + +// DaemonSetSpec is the specification of a daemon set. +type DaemonSetSpec struct { + // Selector is a label query over pods that are managed by the daemon set. + // Must match in order to be controlled. + // If empty, defaulted to labels on Pod template. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,1,opt,name=selector"` + + // Template is the object that describes the pod that will be created. + // The DaemonSet will create exactly one copy of this pod on every node + // that matches the template's node selector (or on every node if no node + // selector is specified). + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,2,opt,name=template"` + + // TODO(madhusudancs): Uncomment while implementing DaemonSet updates. + /* Commenting out for v1.2. We are planning to bring these fields back with a more robust DaemonSet update implementation in v1.3, hence not deleting but just commenting these fields out. + // Update strategy to replace existing DaemonSet pods with new pods. + UpdateStrategy DaemonSetUpdateStrategy `json:"updateStrategy,omitempty"` + + // Label key that is added to DaemonSet pods to distinguish between old and + // new pod templates during DaemonSet update. + // Users can set this to an empty string to indicate that the system should + // not add any label. If unspecified, system uses + // DefaultDaemonSetUniqueLabelKey("daemonset.kubernetes.io/podTemplateHash"). + // Value of this key is hash of DaemonSetSpec.PodTemplateSpec. + // No label is added if this is set to empty string. + UniqueLabelKey *string `json:"uniqueLabelKey,omitempty"` + */ +} + +const ( + // DefaultDaemonSetUniqueLabelKey is the default key of the labels that is added + // to daemon set pods to distinguish between old and new pod templates during + // DaemonSet update. See DaemonSetSpec's UniqueLabelKey field for more information. + DefaultDaemonSetUniqueLabelKey string = "daemonset.kubernetes.io/podTemplateHash" +) + +// DaemonSetStatus represents the current status of a daemon set. +type DaemonSetStatus struct { + // CurrentNumberScheduled is the number of nodes that are running at least 1 + // daemon pod and are supposed to run the daemon pod. + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + CurrentNumberScheduled int32 `json:"currentNumberScheduled" protobuf:"varint,1,opt,name=currentNumberScheduled"` + + // NumberMisscheduled is the number of nodes that are running the daemon pod, but are + // not supposed to run the daemon pod. + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + NumberMisscheduled int32 `json:"numberMisscheduled" protobuf:"varint,2,opt,name=numberMisscheduled"` + + // DesiredNumberScheduled is the total number of nodes that should be running the daemon + // pod (including nodes correctly running the daemon pod). + // More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md + DesiredNumberScheduled int32 `json:"desiredNumberScheduled" protobuf:"varint,3,opt,name=desiredNumberScheduled"` +} + +// +genclient=true + +// DaemonSet represents the configuration of a daemon set. +type DaemonSet struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the desired behavior of this daemon set. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current status of this daemon set. This data may be + // out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// DaemonSetList is a collection of daemon sets. +type DaemonSetList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of daemon sets. + Items []DaemonSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ThirdPartyResrouceDataList is a list of ThirdPartyResourceData. +type ThirdPartyResourceDataList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ThirdpartyResourceData. + Items []ThirdPartyResourceData `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true + +// Job represents the configuration of a single job. +type Job struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is a structure defining the expected behavior of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec JobSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is a structure describing current status of a job. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status JobStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// JobList is a collection of jobs. +type JobList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Job. + Items []Job `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// JobSpec describes how the job execution will look like. +type JobSpec struct { + + // Parallelism specifies the maximum desired number of pods the job should + // run at any given time. The actual number of pods running in steady state will + // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), + // i.e. when the work left to do is less than max parallelism. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Parallelism *int32 `json:"parallelism,omitempty" protobuf:"varint,1,opt,name=parallelism"` + + // Completions specifies the desired number of successfully finished pods the + // job should be run with. Setting to nil means that the success of any + // pod signals the success of all pods, and allows parallelism to have any positive + // value. Setting to 1 means that parallelism is limited to 1 and the success of that + // pod signals the success of the job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Completions *int32 `json:"completions,omitempty" protobuf:"varint,2,opt,name=completions"` + + // Optional duration in seconds relative to the startTime that the job may be active + // before the system tries to terminate it; value must be positive integer + ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + + // Selector is a label query over pods that should match the pod count. + // Normally, the system sets this field for you. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` + + // AutoSelector controls generation of pod labels and pod selectors. + // It was not present in the original extensions/v1beta1 Job definition, but exists + // to allow conversion from batch/v1 Jobs, where it corresponds to, but has the opposite + // meaning as, ManualSelector. + // More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md + AutoSelector *bool `json:"autoSelector,omitempty" protobuf:"varint,5,opt,name=autoSelector"` + + // Template is the object that describes the pod that will be created when + // executing a job. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Template v1.PodTemplateSpec `json:"template" protobuf:"bytes,6,opt,name=template"` +} + +// JobStatus represents the current state of a Job. +type JobStatus struct { + + // Conditions represent the latest available observations of an object's current state. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md + Conditions []JobCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` + + // StartTime represents time when the job was acknowledged by the Job Manager. + // It is not guaranteed to be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + StartTime *unversioned.Time `json:"startTime,omitempty" protobuf:"bytes,2,opt,name=startTime"` + + // CompletionTime represents time when the job was completed. It is not guaranteed to + // be set in happens-before order across separate operations. + // It is represented in RFC3339 form and is in UTC. + CompletionTime *unversioned.Time `json:"completionTime,omitempty" protobuf:"bytes,3,opt,name=completionTime"` + + // Active is the number of actively running pods. + Active int32 `json:"active,omitempty" protobuf:"varint,4,opt,name=active"` + + // Succeeded is the number of pods which reached Phase Succeeded. + Succeeded int32 `json:"succeeded,omitempty" protobuf:"varint,5,opt,name=succeeded"` + + // Failed is the number of pods which reached Phase Failed. + Failed int32 `json:"failed,omitempty" protobuf:"varint,6,opt,name=failed"` +} + +type JobConditionType string + +// These are valid conditions of a job. +const ( + // JobComplete means the job has completed its execution. + JobComplete JobConditionType = "Complete" + // JobFailed means the job has failed its execution. + JobFailed JobConditionType = "Failed" +) + +// JobCondition describes current state of a job. +type JobCondition struct { + // Type of job condition, Complete or Failed. + Type JobConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=JobConditionType"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/kubernetes/pkg/api/v1.ConditionStatus"` + // Last time the condition was checked. + LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` + // Last time the condition transit from one status to another. + LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` + // (brief) reason for the condition's last transition. + Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` + // Human readable message indicating details about last transition. + Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` +} + +// +genclient=true + +// Ingress is a collection of rules that allow inbound connections to reach the +// endpoints defined by a backend. An Ingress can be configured to give services +// externally-reachable urls, load balance traffic, terminate SSL, offer name +// based virtual hosting etc. +type Ingress struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is the desired state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec IngressSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the current state of the Ingress. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status IngressStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// IngressList is a collection of Ingress. +type IngressList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of Ingress. + Items []Ingress `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// IngressSpec describes the Ingress the user wishes to exist. +type IngressSpec struct { + // A default backend capable of servicing requests that don't match any + // rule. At least one of 'backend' or 'rules' must be specified. This field + // is optional to allow the loadbalancer controller or defaulting logic to + // specify a global default. + Backend *IngressBackend `json:"backend,omitempty" protobuf:"bytes,1,opt,name=backend"` + + // TLS configuration. Currently the Ingress only supports a single TLS + // port, 443. If multiple members of this list specify different hosts, they + // will be multiplexed on the same port according to the hostname specified + // through the SNI TLS extension, if the ingress controller fulfilling the + // ingress supports SNI. + TLS []IngressTLS `json:"tls,omitempty" protobuf:"bytes,2,rep,name=tls"` + + // A list of host rules used to configure the Ingress. If unspecified, or + // no rule matches, all traffic is sent to the default backend. + Rules []IngressRule `json:"rules,omitempty" protobuf:"bytes,3,rep,name=rules"` + // TODO: Add the ability to specify load-balancer IP through claims +} + +// IngressTLS describes the transport layer security associated with an Ingress. +type IngressTLS struct { + // Hosts are a list of hosts included in the TLS certificate. The values in + // this list must match the name/s used in the tlsSecret. Defaults to the + // wildcard host setting for the loadbalancer controller fulfilling this + // Ingress, if left unspecified. + Hosts []string `json:"hosts,omitempty" protobuf:"bytes,1,rep,name=hosts"` + // SecretName is the name of the secret used to terminate SSL traffic on 443. + // Field is left optional to allow SSL routing based on SNI hostname alone. + // If the SNI host in a listener conflicts with the "Host" header field used + // by an IngressRule, the SNI host is used for termination and value of the + // Host header is used for routing. + SecretName string `json:"secretName,omitempty" protobuf:"bytes,2,opt,name=secretName"` + // TODO: Consider specifying different modes of termination, protocols etc. +} + +// IngressStatus describe the current state of the Ingress. +type IngressStatus struct { + // LoadBalancer contains the current status of the load-balancer. + LoadBalancer v1.LoadBalancerStatus `json:"loadBalancer,omitempty" protobuf:"bytes,1,opt,name=loadBalancer"` +} + +// IngressRule represents the rules mapping the paths under a specified host to +// the related backend services. Incoming requests are first evaluated for a host +// match, then routed to the backend associated with the matching IngressRuleValue. +type IngressRule struct { + // Host is the fully qualified domain name of a network host, as defined + // by RFC 3986. Note the following deviations from the "host" part of the + // URI as defined in the RFC: + // 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the + // IP in the Spec of the parent Ingress. + // 2. The `:` delimiter is not respected because ports are not allowed. + // Currently the port of an Ingress is implicitly :80 for http and + // :443 for https. + // Both these may change in the future. + // Incoming requests are matched against the host before the IngressRuleValue. + // If the host is unspecified, the Ingress routes all traffic based on the + // specified IngressRuleValue. + Host string `json:"host,omitempty" protobuf:"bytes,1,opt,name=host"` + // IngressRuleValue represents a rule to route requests for this IngressRule. + // If unspecified, the rule defaults to a http catch-all. Whether that sends + // just traffic matching the host to the default backend or all traffic to the + // default backend, is left to the controller fulfilling the Ingress. Http is + // currently the only supported IngressRuleValue. + IngressRuleValue `json:",inline,omitempty" protobuf:"bytes,2,opt,name=ingressRuleValue"` +} + +// IngressRuleValue represents a rule to apply against incoming requests. If the +// rule is satisfied, the request is routed to the specified backend. Currently +// mixing different types of rules in a single Ingress is disallowed, so exactly +// one of the following must be set. +type IngressRuleValue struct { + //TODO: + // 1. Consider renaming this resource and the associated rules so they + // aren't tied to Ingress. They can be used to route intra-cluster traffic. + // 2. Consider adding fields for ingress-type specific global options + // usable by a loadbalancer, like http keep-alive. + + HTTP *HTTPIngressRuleValue `json:"http,omitempty" protobuf:"bytes,1,opt,name=http"` +} + +// HTTPIngressRuleValue is a list of http selectors pointing to backends. +// In the example: http://<host>/<path>?<searchpart> -> backend where +// where parts of the url correspond to RFC 3986, this resource will be used +// to match against everything after the last '/' and before the first '?' +// or '#'. +type HTTPIngressRuleValue struct { + // A collection of paths that map requests to backends. + Paths []HTTPIngressPath `json:"paths" protobuf:"bytes,1,rep,name=paths"` + // TODO: Consider adding fields for ingress-type specific global + // options usable by a loadbalancer, like http keep-alive. +} + +// HTTPIngressPath associates a path regex with a backend. Incoming urls matching +// the path are forwarded to the backend. +type HTTPIngressPath struct { + // Path is an extended POSIX regex as defined by IEEE Std 1003.1, + // (i.e this follows the egrep/unix syntax, not the perl syntax) + // matched against the path of an incoming request. Currently it can + // contain characters disallowed from the conventional "path" + // part of a URL as defined by RFC 3986. Paths must begin with + // a '/'. If unspecified, the path defaults to a catch all sending + // traffic to the backend. + Path string `json:"path,omitempty" protobuf:"bytes,1,opt,name=path"` + + // Backend defines the referenced service endpoint to which the traffic + // will be forwarded to. + Backend IngressBackend `json:"backend" protobuf:"bytes,2,opt,name=backend"` +} + +// IngressBackend describes all endpoints for a given service and port. +type IngressBackend struct { + // Specifies the name of the referenced service. + ServiceName string `json:"serviceName" protobuf:"bytes,1,opt,name=serviceName"` + + // Specifies the port of the referenced service. + ServicePort intstr.IntOrString `json:"servicePort" protobuf:"bytes,2,opt,name=servicePort"` +} + +// ExportOptions is the query options to the standard REST get call. +type ExportOptions struct { + unversioned.TypeMeta `json:",inline"` + // Should this value be exported. Export strips fields that a user can not specify. + Export bool `json:"export" protobuf:"varint,1,opt,name=export"` + // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace' + Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` +} + +// ListOptions is the query options to a standard REST list call. +type ListOptions struct { + unversioned.TypeMeta `json:",inline"` + + // A selector to restrict the list of returned objects by their labels. + // Defaults to everything. + LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"` + // A selector to restrict the list of returned objects by their fields. + // Defaults to everything. + FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"` + // Watch for changes to the described resources and return them as a stream of + // add, update, and remove notifications. Specify resourceVersion. + Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"` + // When specified with a watch call, shows changes that occur after that particular version of a resource. + // Defaults to changes from the beginning of history. + ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` + // Timeout for the list/watch call. + TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"` +} + +// A label selector is a label query over a set of resources. The result of matchLabels and +// matchExpressions are ANDed. An empty label selector matches all objects. A null +// label selector matches no objects. +type LabelSelector struct { + // matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + // map is equivalent to an element of matchExpressions, whose key field is "key", the + // operator is "In", and the values array contains only "value". The requirements are ANDed. + MatchLabels map[string]string `json:"matchLabels,omitempty" protobuf:"bytes,1,rep,name=matchLabels"` + // matchExpressions is a list of label selector requirements. The requirements are ANDed. + MatchExpressions []LabelSelectorRequirement `json:"matchExpressions,omitempty" protobuf:"bytes,2,rep,name=matchExpressions"` +} + +// A label selector requirement is a selector that contains values, a key, and an operator that +// relates the key and values. +type LabelSelectorRequirement struct { + // key is the label key that the selector applies to. + Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key" protobuf:"bytes,1,opt,name=key"` + // operator represents a key's relationship to a set of values. + // Valid operators ard In, NotIn, Exists and DoesNotExist. + Operator LabelSelectorOperator `json:"operator" protobuf:"bytes,2,opt,name=operator,casttype=LabelSelectorOperator"` + // values is an array of string values. If the operator is In or NotIn, + // the values array must be non-empty. If the operator is Exists or DoesNotExist, + // the values array must be empty. This array is replaced during a strategic + // merge patch. + Values []string `json:"values,omitempty" protobuf:"bytes,3,rep,name=values"` +} + +// A label selector operator is the set of operators that can be used in a selector requirement. +type LabelSelectorOperator string + +const ( + LabelSelectorOpIn LabelSelectorOperator = "In" + LabelSelectorOpNotIn LabelSelectorOperator = "NotIn" + LabelSelectorOpExists LabelSelectorOperator = "Exists" + LabelSelectorOpDoesNotExist LabelSelectorOperator = "DoesNotExist" +) + +// +genclient=true + +// ReplicaSet represents the configuration of a ReplicaSet. +type ReplicaSet struct { + unversioned.TypeMeta `json:",inline"` + + // If the Labels of a ReplicaSet are empty, they are defaulted to + // be the same as the Pod(s) that the ReplicaSet manages. + // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec defines the specification of the desired behavior of the ReplicaSet. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + + // Status is the most recently observed status of the ReplicaSet. + // This data may be out of date by some window of time. + // Populated by the system. + // Read-only. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status + Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// ReplicaSetList is a collection of ReplicaSets. +type ReplicaSetList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // List of ReplicaSets. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md + Items []ReplicaSet `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ReplicaSetSpec is the specification of a ReplicaSet. +type ReplicaSetSpec struct { + // Replicas is the number of desired replicas. + // This is a pointer to distinguish between explicit zero and unspecified. + // Defaults to 1. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"` + + // Selector is a label query over pods that should match the replica count. + // If the selector is empty, it is defaulted to the labels present on the pod template. + // Label keys and values that must match in order to be controlled by this replica set. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors + Selector *LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` + + // Template is the object that describes the pod that will be created if + // insufficient replicas are detected. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template + Template v1.PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"` +} + +// ReplicaSetStatus represents the current status of a ReplicaSet. +type ReplicaSetStatus struct { + // Replicas is the most recently oberved number of replicas. + // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller + Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"` + + // The number of pods that have labels matching the labels of the pod template of the replicaset. + FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"` + + // The number of ready replicas for this replica set. + ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"` + + // ObservedGeneration reflects the generation of the most recently observed ReplicaSet. + ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"` +} + +// +genclient=true +// +nonNamespaced=true + +// Pod Security Policy governs the ability to make requests that affect the Security Context +// that will be applied to a pod and container. +type PodSecurityPolicy struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // spec defines the policy enforced. + Spec PodSecurityPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// Pod Security Policy Spec defines the policy enforced. +type PodSecurityPolicySpec struct { + // privileged determines if a pod can request to be run as privileged. + Privileged bool `json:"privileged,omitempty" protobuf:"varint,1,opt,name=privileged"` + // DefaultAddCapabilities is the default set of capabilities that will be added to the container + // unless the pod spec specifically drops the capability. You may not list a capabiility in both + // DefaultAddCapabilities and RequiredDropCapabilities. + DefaultAddCapabilities []v1.Capability `json:"defaultAddCapabilities,omitempty" protobuf:"bytes,2,rep,name=defaultAddCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // RequiredDropCapabilities are the capabilities that will be dropped from the container. These + // are required to be dropped and cannot be added. + RequiredDropCapabilities []v1.Capability `json:"requiredDropCapabilities,omitempty" protobuf:"bytes,3,rep,name=requiredDropCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // AllowedCapabilities is a list of capabilities that can be requested to add to the container. + // Capabilities in this field may be added at the pod author's discretion. + // You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities. + AllowedCapabilities []v1.Capability `json:"allowedCapabilities,omitempty" protobuf:"bytes,4,rep,name=allowedCapabilities,casttype=k8s.io/kubernetes/pkg/api/v1.Capability"` + // volumes is a white list of allowed volume plugins. Empty indicates that all plugins + // may be used. + Volumes []FSType `json:"volumes,omitempty" protobuf:"bytes,5,rep,name=volumes,casttype=FSType"` + // hostNetwork determines if the policy allows the use of HostNetwork in the pod spec. + HostNetwork bool `json:"hostNetwork,omitempty" protobuf:"varint,6,opt,name=hostNetwork"` + // hostPorts determines which host port ranges are allowed to be exposed. + HostPorts []HostPortRange `json:"hostPorts,omitempty" protobuf:"bytes,7,rep,name=hostPorts"` + // hostPID determines if the policy allows the use of HostPID in the pod spec. + HostPID bool `json:"hostPID,omitempty" protobuf:"varint,8,opt,name=hostPID"` + // hostIPC determines if the policy allows the use of HostIPC in the pod spec. + HostIPC bool `json:"hostIPC,omitempty" protobuf:"varint,9,opt,name=hostIPC"` + // seLinux is the strategy that will dictate the allowable labels that may be set. + SELinux SELinuxStrategyOptions `json:"seLinux" protobuf:"bytes,10,opt,name=seLinux"` + // runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set. + RunAsUser RunAsUserStrategyOptions `json:"runAsUser" protobuf:"bytes,11,opt,name=runAsUser"` + // SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext. + SupplementalGroups SupplementalGroupsStrategyOptions `json:"supplementalGroups" protobuf:"bytes,12,opt,name=supplementalGroups"` + // FSGroup is the strategy that will dictate what fs group is used by the SecurityContext. + FSGroup FSGroupStrategyOptions `json:"fsGroup" protobuf:"bytes,13,opt,name=fsGroup"` + // ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file + // system. If the container specifically requests to run with a non-read only root file system + // the PSP should deny the pod. + // If set to false the container may run with a read only root file system if it wishes but it + // will not be forced to. + ReadOnlyRootFilesystem bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,14,opt,name=readOnlyRootFilesystem"` +} + +// FS Type gives strong typing to different file systems that are used by volumes. +type FSType string + +var ( + AzureFile FSType = "azureFile" + Flocker FSType = "flocker" + FlexVolume FSType = "flexVolume" + HostPath FSType = "hostPath" + EmptyDir FSType = "emptyDir" + GCEPersistentDisk FSType = "gcePersistentDisk" + AWSElasticBlockStore FSType = "awsElasticBlockStore" + GitRepo FSType = "gitRepo" + Secret FSType = "secret" + NFS FSType = "nfs" + ISCSI FSType = "iscsi" + Glusterfs FSType = "glusterfs" + PersistentVolumeClaim FSType = "persistentVolumeClaim" + RBD FSType = "rbd" + Cinder FSType = "cinder" + CephFS FSType = "cephFS" + DownwardAPI FSType = "downwardAPI" + FC FSType = "fc" + ConfigMap FSType = "configMap" + Quobyte FSType = "quobyte" + AzureDisk FSType = "azureDisk" + All FSType = "*" +) + +// Host Port Range defines a range of host ports that will be enabled by a policy +// for pods to use. It requires both the start and end to be defined. +type HostPortRange struct { + // min is the start of the range, inclusive. + Min int32 `json:"min" protobuf:"varint,1,opt,name=min"` + // max is the end of the range, inclusive. + Max int32 `json:"max" protobuf:"varint,2,opt,name=max"` +} + +// SELinux Strategy Options defines the strategy type and any options used to create the strategy. +type SELinuxStrategyOptions struct { + // type is the strategy that will dictate the allowable labels that may be set. + Rule SELinuxStrategy `json:"rule" protobuf:"bytes,1,opt,name=rule,casttype=SELinuxStrategy"` + // seLinuxOptions required to run as; required for MustRunAs + // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context + SELinuxOptions *v1.SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,2,opt,name=seLinuxOptions"` +} + +// SELinuxStrategy denotes strategy types for generating SELinux options for a +// Security Context. +type SELinuxStrategy string + +const ( + // container must have SELinux labels of X applied. + SELinuxStrategyMustRunAs SELinuxStrategy = "MustRunAs" + // container may make requests for any SELinux context labels. + SELinuxStrategyRunAsAny SELinuxStrategy = "RunAsAny" +) + +// Run A sUser Strategy Options defines the strategy type and any options used to create the strategy. +type RunAsUserStrategyOptions struct { + // Rule is the strategy that will dictate the allowable RunAsUser values that may be set. + Rule RunAsUserStrategy `json:"rule" protobuf:"bytes,1,opt,name=rule,casttype=RunAsUserStrategy"` + // Ranges are the allowed ranges of uids that may be used. + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// ID Range provides a min/max of an allowed range of IDs. +type IDRange struct { + // Min is the start of the range, inclusive. + Min int64 `json:"min" protobuf:"varint,1,opt,name=min"` + // Max is the end of the range, inclusive. + Max int64 `json:"max" protobuf:"varint,2,opt,name=max"` +} + +// RunAsUserStrategy denotes strategy types for generating RunAsUser values for a +// Security Context. +type RunAsUserStrategy string + +const ( + // container must run as a particular uid. + RunAsUserStrategyMustRunAs RunAsUserStrategy = "MustRunAs" + // container must run as a non-root uid + RunAsUserStrategyMustRunAsNonRoot RunAsUserStrategy = "MustRunAsNonRoot" + // container may make requests for any uid. + RunAsUserStrategyRunAsAny RunAsUserStrategy = "RunAsAny" +) + +// FSGroupStrategyOptions defines the strategy type and options used to create the strategy. +type FSGroupStrategyOptions struct { + // Rule is the strategy that will dictate what FSGroup is used in the SecurityContext. + Rule FSGroupStrategyType `json:"rule,omitempty" protobuf:"bytes,1,opt,name=rule,casttype=FSGroupStrategyType"` + // Ranges are the allowed ranges of fs groups. If you would like to force a single + // fs group then supply a single range with the same start and end. + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// FSGroupStrategyType denotes strategy types for generating FSGroup values for a +// SecurityContext +type FSGroupStrategyType string + +const ( + // container must have FSGroup of X applied. + FSGroupStrategyMustRunAs FSGroupStrategyType = "MustRunAs" + // container may make requests for any FSGroup labels. + FSGroupStrategyRunAsAny FSGroupStrategyType = "RunAsAny" +) + +// SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy. +type SupplementalGroupsStrategyOptions struct { + // Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext. + Rule SupplementalGroupsStrategyType `json:"rule,omitempty" protobuf:"bytes,1,opt,name=rule,casttype=SupplementalGroupsStrategyType"` + // Ranges are the allowed ranges of supplemental groups. If you would like to force a single + // supplemental group then supply a single range with the same start and end. + Ranges []IDRange `json:"ranges,omitempty" protobuf:"bytes,2,rep,name=ranges"` +} + +// SupplementalGroupsStrategyType denotes strategy types for determining valid supplemental +// groups for a SecurityContext. +type SupplementalGroupsStrategyType string + +const ( + // container must run as a particular gid. + SupplementalGroupsStrategyMustRunAs SupplementalGroupsStrategyType = "MustRunAs" + // container may make requests for any gid. + SupplementalGroupsStrategyRunAsAny SupplementalGroupsStrategyType = "RunAsAny" +) + +// Pod Security Policy List is a list of PodSecurityPolicy objects. +type PodSecurityPolicyList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []PodSecurityPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +type NetworkPolicy struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior for this NetworkPolicy. + Spec NetworkPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +type NetworkPolicySpec struct { + // Selects the pods to which this NetworkPolicy object applies. The array of ingress rules + // is applied to any pods selected by this field. Multiple network policies can select the + // same set of pods. In this case, the ingress rules for each are combined additively. + // This field is NOT optional and follows standard label selector semantics. + // An empty podSelector matches all pods in this namespace. + PodSelector LabelSelector `json:"podSelector" protobuf:"bytes,1,opt,name=podSelector"` + + // List of ingress rules to be applied to the selected pods. + // Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, + // OR if the traffic source is the pod's local node, + // OR if the traffic matches at least one ingress rule across all of the NetworkPolicy + // objects whose podSelector matches the pod. + // If this field is empty then this NetworkPolicy does not affect ingress isolation. + // If this field is present and contains at least one rule, this policy allows any traffic + // which matches at least one of the ingress rules in this list. + Ingress []NetworkPolicyIngressRule `json:"ingress,omitempty" protobuf:"bytes,2,rep,name=ingress"` +} + +// This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from. +type NetworkPolicyIngressRule struct { + // List of ports which should be made accessible on the pods selected for this rule. + // Each item in this list is combined using a logical OR. + // If this field is not provided, this rule matches all ports (traffic not restricted by port). + // If this field is empty, this rule matches no ports (no traffic matches). + // If this field is present and contains at least one item, then this rule allows traffic + // only if the traffic matches at least one port in the list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + Ports []NetworkPolicyPort `json:"ports,omitempty" protobuf:"bytes,1,rep,name=ports"` + + // List of sources which should be able to access the pods selected for this rule. + // Items in this list are combined using a logical OR operation. + // If this field is not provided, this rule matches all sources (traffic not restricted by source). + // If this field is empty, this rule matches no sources (no traffic matches). + // If this field is present and contains at least on item, this rule allows traffic only if the + // traffic matches at least one item in the from list. + // TODO: Update this to be a pointer to slice as soon as auto-generation supports it. + From []NetworkPolicyPeer `json:"from,omitempty" protobuf:"bytes,2,rep,name=from"` +} + +type NetworkPolicyPort struct { + // Optional. The protocol (TCP or UDP) which traffic must match. + // If not specified, this field defaults to TCP. + Protocol *v1.Protocol `json:"protocol,omitempty" protobuf:"bytes,1,opt,name=protocol,casttype=k8s.io/kubernetes/pkg/api/v1.Protocol"` + + // If specified, the port on the given protocol. This can + // either be a numerical or named port on a pod. If this field is not provided, + // this matches all port names and numbers. + // If present, only traffic on the specified protocol AND port + // will be matched. + Port *intstr.IntOrString `json:"port,omitempty" protobuf:"bytes,2,opt,name=port"` +} + +type NetworkPolicyPeer struct { + // Exactly one of the following must be specified. + + // This is a label selector which selects Pods in this namespace. + // This field follows standard label selector semantics. + // If not provided, this selector selects no pods. + // If present but empty, this selector selects all pods in this namespace. + PodSelector *LabelSelector `json:"podSelector,omitempty" protobuf:"bytes,1,opt,name=podSelector"` + + // Selects Namespaces using cluster scoped-labels. This + // matches all pods in all namespaces selected by this label selector. + // This field follows standard label selector semantics. + // If omitted, this selector selects no namespaces. + // If present but empty, this selector selects all namespaces. + NamespaceSelector *LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,2,opt,name=namespaceSelector"` +} + +// Network Policy List is a list of NetworkPolicy objects. +type NetworkPolicyList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of schema objects. + Items []NetworkPolicy `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..4b1e22ba57 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,741 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_APIVersion = map[string]string{ + "": "An APIVersion represents a single concrete version of an object model.", + "name": "Name of this version (e.g. 'v1').", +} + +func (APIVersion) SwaggerDoc() map[string]string { + return map_APIVersion +} + +var map_CPUTargetUtilization = map[string]string{ + "targetPercentage": "fraction of the requested CPU that should be utilized/used, e.g. 70 means that 70% of the requested CPU should be in use.", +} + +func (CPUTargetUtilization) SwaggerDoc() map[string]string { + return map_CPUTargetUtilization +} + +var map_CustomMetricCurrentStatus = map[string]string{ + "name": "Custom Metric name.", + "value": "Custom Metric value (average).", +} + +func (CustomMetricCurrentStatus) SwaggerDoc() map[string]string { + return map_CustomMetricCurrentStatus +} + +var map_CustomMetricTarget = map[string]string{ + "": "Alpha-level support for Custom Metrics in HPA (as annotations).", + "name": "Custom Metric name.", + "value": "Custom Metric value (average).", +} + +func (CustomMetricTarget) SwaggerDoc() map[string]string { + return map_CustomMetricTarget +} + +var map_DaemonSet = map[string]string{ + "": "DaemonSet represents the configuration of a daemon set.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the desired behavior of this daemon set. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is the current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (DaemonSet) SwaggerDoc() map[string]string { + return map_DaemonSet +} + +var map_DaemonSetList = map[string]string{ + "": "DaemonSetList is a collection of daemon sets.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is a list of daemon sets.", +} + +func (DaemonSetList) SwaggerDoc() map[string]string { + return map_DaemonSetList +} + +var map_DaemonSetSpec = map[string]string{ + "": "DaemonSetSpec is the specification of a daemon set.", + "selector": "Selector is a label query over pods that are managed by the daemon set. Must match in order to be controlled. If empty, defaulted to labels on Pod template. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "template": "Template is the object that describes the pod that will be created. The DaemonSet will create exactly one copy of this pod on every node that matches the template's node selector (or on every node if no node selector is specified). More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template", +} + +func (DaemonSetSpec) SwaggerDoc() map[string]string { + return map_DaemonSetSpec +} + +var map_DaemonSetStatus = map[string]string{ + "": "DaemonSetStatus represents the current status of a daemon set.", + "currentNumberScheduled": "CurrentNumberScheduled is the number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md", + "numberMisscheduled": "NumberMisscheduled is the number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md", + "desiredNumberScheduled": "DesiredNumberScheduled is the total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: http://releases.k8s.io/HEAD/docs/admin/daemons.md", +} + +func (DaemonSetStatus) SwaggerDoc() map[string]string { + return map_DaemonSetStatus +} + +var map_Deployment = map[string]string{ + "": "Deployment enables declarative updates for Pods and ReplicaSets.", + "metadata": "Standard object metadata.", + "spec": "Specification of the desired behavior of the Deployment.", + "status": "Most recently observed status of the Deployment.", +} + +func (Deployment) SwaggerDoc() map[string]string { + return map_Deployment +} + +var map_DeploymentList = map[string]string{ + "": "DeploymentList is a list of Deployments.", + "metadata": "Standard list metadata.", + "items": "Items is the list of Deployments.", +} + +func (DeploymentList) SwaggerDoc() map[string]string { + return map_DeploymentList +} + +var map_DeploymentRollback = map[string]string{ + "": "DeploymentRollback stores the information required to rollback a deployment.", + "name": "Required: This must match the Name of a deployment.", + "updatedAnnotations": "The annotations to be updated to a deployment", + "rollbackTo": "The config of this deployment rollback.", +} + +func (DeploymentRollback) SwaggerDoc() map[string]string { + return map_DeploymentRollback +} + +var map_DeploymentSpec = map[string]string{ + "": "DeploymentSpec is the specification of the desired behavior of the Deployment.", + "replicas": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", + "selector": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.", + "template": "Template describes the pods that will be created.", + "strategy": "The deployment strategy to use to replace existing pods with new ones.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", + "revisionHistoryLimit": "The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.", + "paused": "Indicates that the deployment is paused and will not be processed by the deployment controller.", + "rollbackTo": "The config this deployment is rolling back to. Will be cleared after rollback is done.", +} + +func (DeploymentSpec) SwaggerDoc() map[string]string { + return map_DeploymentSpec +} + +var map_DeploymentStatus = map[string]string{ + "": "DeploymentStatus is the most recently observed status of the Deployment.", + "observedGeneration": "The generation observed by the deployment controller.", + "replicas": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", + "updatedReplicas": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", + "unavailableReplicas": "Total number of unavailable pods targeted by this deployment.", +} + +func (DeploymentStatus) SwaggerDoc() map[string]string { + return map_DeploymentStatus +} + +var map_DeploymentStrategy = map[string]string{ + "": "DeploymentStrategy describes how to replace existing pods with new ones.", + "type": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", + "rollingUpdate": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", +} + +func (DeploymentStrategy) SwaggerDoc() map[string]string { + return map_DeploymentStrategy +} + +var map_ExportOptions = map[string]string{ + "": "ExportOptions is the query options to the standard REST get call.", + "export": "Should this value be exported. Export strips fields that a user can not specify.", + "exact": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'", +} + +func (ExportOptions) SwaggerDoc() map[string]string { + return map_ExportOptions +} + +var map_FSGroupStrategyOptions = map[string]string{ + "": "FSGroupStrategyOptions defines the strategy type and options used to create the strategy.", + "rule": "Rule is the strategy that will dictate what FSGroup is used in the SecurityContext.", + "ranges": "Ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end.", +} + +func (FSGroupStrategyOptions) SwaggerDoc() map[string]string { + return map_FSGroupStrategyOptions +} + +var map_HTTPIngressPath = map[string]string{ + "": "HTTPIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.", + "path": "Path is an extended POSIX regex as defined by IEEE Std 1003.1, (i.e this follows the egrep/unix syntax, not the perl syntax) matched against the path of an incoming request. Currently it can contain characters disallowed from the conventional \"path\" part of a URL as defined by RFC 3986. Paths must begin with a '/'. If unspecified, the path defaults to a catch all sending traffic to the backend.", + "backend": "Backend defines the referenced service endpoint to which the traffic will be forwarded to.", +} + +func (HTTPIngressPath) SwaggerDoc() map[string]string { + return map_HTTPIngressPath +} + +var map_HTTPIngressRuleValue = map[string]string{ + "": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://<host>/<path>?<searchpart> -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.", + "paths": "A collection of paths that map requests to backends.", +} + +func (HTTPIngressRuleValue) SwaggerDoc() map[string]string { + return map_HTTPIngressRuleValue +} + +var map_HorizontalPodAutoscaler = map[string]string{ + "": "configuration of a horizontal pod autoscaler.", + "metadata": "Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.", + "status": "current information about the autoscaler.", +} + +func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscaler +} + +var map_HorizontalPodAutoscalerList = map[string]string{ + "": "list of horizontal pod autoscaler objects.", + "metadata": "Standard list metadata.", + "items": "list of horizontal pod autoscaler objects.", +} + +func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerList +} + +var map_HorizontalPodAutoscalerSpec = map[string]string{ + "": "specification of a horizontal pod autoscaler.", + "scaleRef": "reference to Scale subresource; horizontal pod autoscaler will learn the current resource consumption from its status, and will set the desired number of pods by modifying its spec.", + "minReplicas": "lower limit for the number of pods that can be set by the autoscaler, default 1.", + "maxReplicas": "upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.", + "cpuUtilization": "target average CPU utilization (represented as a percentage of requested CPU) over all the pods; if not specified it defaults to the target CPU utilization at 80% of the requested resources.", +} + +func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerSpec +} + +var map_HorizontalPodAutoscalerStatus = map[string]string{ + "": "current status of a horizontal pod autoscaler", + "observedGeneration": "most recent generation observed by this autoscaler.", + "lastScaleTime": "last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.", + "currentReplicas": "current number of replicas of pods managed by this autoscaler.", + "desiredReplicas": "desired number of replicas of pods managed by this autoscaler.", + "currentCPUUtilizationPercentage": "current average CPU utilization over all pods, represented as a percentage of requested CPU, e.g. 70 means that an average pod is using now 70% of its requested CPU.", +} + +func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string { + return map_HorizontalPodAutoscalerStatus +} + +var map_HostPortRange = map[string]string{ + "": "Host Port Range defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.", + "min": "min is the start of the range, inclusive.", + "max": "max is the end of the range, inclusive.", +} + +func (HostPortRange) SwaggerDoc() map[string]string { + return map_HostPortRange +} + +var map_IDRange = map[string]string{ + "": "ID Range provides a min/max of an allowed range of IDs.", + "min": "Min is the start of the range, inclusive.", + "max": "Max is the end of the range, inclusive.", +} + +func (IDRange) SwaggerDoc() map[string]string { + return map_IDRange +} + +var map_Ingress = map[string]string{ + "": "Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec is the desired state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is the current state of the Ingress. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Ingress) SwaggerDoc() map[string]string { + return map_Ingress +} + +var map_IngressBackend = map[string]string{ + "": "IngressBackend describes all endpoints for a given service and port.", + "serviceName": "Specifies the name of the referenced service.", + "servicePort": "Specifies the port of the referenced service.", +} + +func (IngressBackend) SwaggerDoc() map[string]string { + return map_IngressBackend +} + +var map_IngressList = map[string]string{ + "": "IngressList is a collection of Ingress.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of Ingress.", +} + +func (IngressList) SwaggerDoc() map[string]string { + return map_IngressList +} + +var map_IngressRule = map[string]string{ + "": "IngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching IngressRuleValue.", + "host": "Host is the fully qualified domain name of a network host, as defined by RFC 3986. Note the following deviations from the \"host\" part of the URI as defined in the RFC: 1. IPs are not allowed. Currently an IngressRuleValue can only apply to the\n\t IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue.", +} + +func (IngressRule) SwaggerDoc() map[string]string { + return map_IngressRule +} + +var map_IngressRuleValue = map[string]string{ + "": "IngressRuleValue represents a rule to apply against incoming requests. If the rule is satisfied, the request is routed to the specified backend. Currently mixing different types of rules in a single Ingress is disallowed, so exactly one of the following must be set.", +} + +func (IngressRuleValue) SwaggerDoc() map[string]string { + return map_IngressRuleValue +} + +var map_IngressSpec = map[string]string{ + "": "IngressSpec describes the Ingress the user wishes to exist.", + "backend": "A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default.", + "tls": "TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.", + "rules": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.", +} + +func (IngressSpec) SwaggerDoc() map[string]string { + return map_IngressSpec +} + +var map_IngressStatus = map[string]string{ + "": "IngressStatus describe the current state of the Ingress.", + "loadBalancer": "LoadBalancer contains the current status of the load-balancer.", +} + +func (IngressStatus) SwaggerDoc() map[string]string { + return map_IngressStatus +} + +var map_IngressTLS = map[string]string{ + "": "IngressTLS describes the transport layer security associated with an Ingress.", + "hosts": "Hosts are a list of hosts included in the TLS certificate. The values in this list must match the name/s used in the tlsSecret. Defaults to the wildcard host setting for the loadbalancer controller fulfilling this Ingress, if left unspecified.", + "secretName": "SecretName is the name of the secret used to terminate SSL traffic on 443. Field is left optional to allow SSL routing based on SNI hostname alone. If the SNI host in a listener conflicts with the \"Host\" header field used by an IngressRule, the SNI host is used for termination and value of the Host header is used for routing.", +} + +func (IngressTLS) SwaggerDoc() map[string]string { + return map_IngressTLS +} + +var map_Job = map[string]string{ + "": "Job represents the configuration of a single job.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec is a structure defining the expected behavior of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is a structure describing current status of a job. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (Job) SwaggerDoc() map[string]string { + return map_Job +} + +var map_JobCondition = map[string]string{ + "": "JobCondition describes current state of a job.", + "type": "Type of job condition, Complete or Failed.", + "status": "Status of the condition, one of True, False, Unknown.", + "lastProbeTime": "Last time the condition was checked.", + "lastTransitionTime": "Last time the condition transit from one status to another.", + "reason": "(brief) reason for the condition's last transition.", + "message": "Human readable message indicating details about last transition.", +} + +func (JobCondition) SwaggerDoc() map[string]string { + return map_JobCondition +} + +var map_JobList = map[string]string{ + "": "JobList is a collection of jobs.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of Job.", +} + +func (JobList) SwaggerDoc() map[string]string { + return map_JobList +} + +var map_JobSpec = map[string]string{ + "": "JobSpec describes how the job execution will look like.", + "parallelism": "Parallelism specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "completions": "Completions specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "activeDeadlineSeconds": "Optional duration in seconds relative to the startTime that the job may be active before the system tries to terminate it; value must be positive integer", + "selector": "Selector is a label query over pods that should match the pod count. Normally, the system sets this field for you. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "autoSelector": "AutoSelector controls generation of pod labels and pod selectors. It was not present in the original extensions/v1beta1 Job definition, but exists to allow conversion from batch/v1 Jobs, where it corresponds to, but has the opposite meaning as, ManualSelector. More info: http://releases.k8s.io/HEAD/docs/design/selector-generation.md", + "template": "Template is the object that describes the pod that will be created when executing a job. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", +} + +func (JobSpec) SwaggerDoc() map[string]string { + return map_JobSpec +} + +var map_JobStatus = map[string]string{ + "": "JobStatus represents the current state of a Job.", + "conditions": "Conditions represent the latest available observations of an object's current state. More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md", + "startTime": "StartTime represents time when the job was acknowledged by the Job Manager. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "completionTime": "CompletionTime represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.", + "active": "Active is the number of actively running pods.", + "succeeded": "Succeeded is the number of pods which reached Phase Succeeded.", + "failed": "Failed is the number of pods which reached Phase Failed.", +} + +func (JobStatus) SwaggerDoc() map[string]string { + return map_JobStatus +} + +var map_LabelSelector = map[string]string{ + "": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "matchLabels": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "matchExpressions": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", +} + +func (LabelSelector) SwaggerDoc() map[string]string { + return map_LabelSelector +} + +var map_LabelSelectorRequirement = map[string]string{ + "": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "key": "key is the label key that the selector applies to.", + "operator": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", + "values": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", +} + +func (LabelSelectorRequirement) SwaggerDoc() map[string]string { + return map_LabelSelectorRequirement +} + +var map_ListOptions = map[string]string{ + "": "ListOptions is the query options to a standard REST list call.", + "labelSelector": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", + "fieldSelector": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", + "watch": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", + "resourceVersion": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.", + "timeoutSeconds": "Timeout for the list/watch call.", +} + +func (ListOptions) SwaggerDoc() map[string]string { + return map_ListOptions +} + +var map_NetworkPolicy = map[string]string{ + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Specification of the desired behavior for this NetworkPolicy.", +} + +func (NetworkPolicy) SwaggerDoc() map[string]string { + return map_NetworkPolicy +} + +var map_NetworkPolicyIngressRule = map[string]string{ + "": "This NetworkPolicyIngressRule matches traffic if and only if the traffic matches both ports AND from.", + "ports": "List of ports which should be made accessible on the pods selected for this rule. Each item in this list is combined using a logical OR. If this field is not provided, this rule matches all ports (traffic not restricted by port). If this field is empty, this rule matches no ports (no traffic matches). If this field is present and contains at least one item, then this rule allows traffic only if the traffic matches at least one port in the list.", + "from": "List of sources which should be able to access the pods selected for this rule. Items in this list are combined using a logical OR operation. If this field is not provided, this rule matches all sources (traffic not restricted by source). If this field is empty, this rule matches no sources (no traffic matches). If this field is present and contains at least on item, this rule allows traffic only if the traffic matches at least one item in the from list.", +} + +func (NetworkPolicyIngressRule) SwaggerDoc() map[string]string { + return map_NetworkPolicyIngressRule +} + +var map_NetworkPolicyList = map[string]string{ + "": "Network Policy List is a list of NetworkPolicy objects.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (NetworkPolicyList) SwaggerDoc() map[string]string { + return map_NetworkPolicyList +} + +var map_NetworkPolicyPeer = map[string]string{ + "podSelector": "This is a label selector which selects Pods in this namespace. This field follows standard label selector semantics. If not provided, this selector selects no pods. If present but empty, this selector selects all pods in this namespace.", + "namespaceSelector": "Selects Namespaces using cluster scoped-labels. This matches all pods in all namespaces selected by this label selector. This field follows standard label selector semantics. If omitted, this selector selects no namespaces. If present but empty, this selector selects all namespaces.", +} + +func (NetworkPolicyPeer) SwaggerDoc() map[string]string { + return map_NetworkPolicyPeer +} + +var map_NetworkPolicyPort = map[string]string{ + "protocol": "Optional. The protocol (TCP or UDP) which traffic must match. If not specified, this field defaults to TCP.", + "port": "If specified, the port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.", +} + +func (NetworkPolicyPort) SwaggerDoc() map[string]string { + return map_NetworkPolicyPort +} + +var map_NetworkPolicySpec = map[string]string{ + "podSelector": "Selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.", + "ingress": "List of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if namespace.networkPolicy.ingress.isolation is undefined and cluster policy allows it, OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not affect ingress isolation. If this field is present and contains at least one rule, this policy allows any traffic which matches at least one of the ingress rules in this list.", +} + +func (NetworkPolicySpec) SwaggerDoc() map[string]string { + return map_NetworkPolicySpec +} + +var map_PodSecurityPolicy = map[string]string{ + "": "Pod Security Policy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "spec defines the policy enforced.", +} + +func (PodSecurityPolicy) SwaggerDoc() map[string]string { + return map_PodSecurityPolicy +} + +var map_PodSecurityPolicyList = map[string]string{ + "": "Pod Security Policy List is a list of PodSecurityPolicy objects.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is a list of schema objects.", +} + +func (PodSecurityPolicyList) SwaggerDoc() map[string]string { + return map_PodSecurityPolicyList +} + +var map_PodSecurityPolicySpec = map[string]string{ + "": "Pod Security Policy Spec defines the policy enforced.", + "privileged": "privileged determines if a pod can request to be run as privileged.", + "defaultAddCapabilities": "DefaultAddCapabilities is the default set of capabilities that will be added to the container unless the pod spec specifically drops the capability. You may not list a capabiility in both DefaultAddCapabilities and RequiredDropCapabilities.", + "requiredDropCapabilities": "RequiredDropCapabilities are the capabilities that will be dropped from the container. These are required to be dropped and cannot be added.", + "allowedCapabilities": "AllowedCapabilities is a list of capabilities that can be requested to add to the container. Capabilities in this field may be added at the pod author's discretion. You must not list a capability in both AllowedCapabilities and RequiredDropCapabilities.", + "volumes": "volumes is a white list of allowed volume plugins. Empty indicates that all plugins may be used.", + "hostNetwork": "hostNetwork determines if the policy allows the use of HostNetwork in the pod spec.", + "hostPorts": "hostPorts determines which host port ranges are allowed to be exposed.", + "hostPID": "hostPID determines if the policy allows the use of HostPID in the pod spec.", + "hostIPC": "hostIPC determines if the policy allows the use of HostIPC in the pod spec.", + "seLinux": "seLinux is the strategy that will dictate the allowable labels that may be set.", + "runAsUser": "runAsUser is the strategy that will dictate the allowable RunAsUser values that may be set.", + "supplementalGroups": "SupplementalGroups is the strategy that will dictate what supplemental groups are used by the SecurityContext.", + "fsGroup": "FSGroup is the strategy that will dictate what fs group is used by the SecurityContext.", + "readOnlyRootFilesystem": "ReadOnlyRootFilesystem when set to true will force containers to run with a read only root file system. If the container specifically requests to run with a non-read only root file system the PSP should deny the pod. If set to false the container may run with a read only root file system if it wishes but it will not be forced to.", +} + +func (PodSecurityPolicySpec) SwaggerDoc() map[string]string { + return map_PodSecurityPolicySpec +} + +var map_ReplicaSet = map[string]string{ + "": "ReplicaSet represents the configuration of a ReplicaSet.", + "metadata": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", + "status": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status", +} + +func (ReplicaSet) SwaggerDoc() map[string]string { + return map_ReplicaSet +} + +var map_ReplicaSetList = map[string]string{ + "": "ReplicaSetList is a collection of ReplicaSets.", + "metadata": "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "items": "List of ReplicaSets. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md", +} + +func (ReplicaSetList) SwaggerDoc() map[string]string { + return map_ReplicaSetList +} + +var map_ReplicaSetSpec = map[string]string{ + "": "ReplicaSetSpec is the specification of a ReplicaSet.", + "replicas": "Replicas is the number of desired replicas. This is a pointer to distinguish between explicit zero and unspecified. Defaults to 1. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller", + "selector": "Selector is a label query over pods that should match the replica count. If the selector is empty, it is defaulted to the labels present on the pod template. Label keys and values that must match in order to be controlled by this replica set. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "template": "Template is the object that describes the pod that will be created if insufficient replicas are detected. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template", +} + +func (ReplicaSetSpec) SwaggerDoc() map[string]string { + return map_ReplicaSetSpec +} + +var map_ReplicaSetStatus = map[string]string{ + "": "ReplicaSetStatus represents the current status of a ReplicaSet.", + "replicas": "Replicas is the most recently oberved number of replicas. More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller", + "fullyLabeledReplicas": "The number of pods that have labels matching the labels of the pod template of the replicaset.", + "readyReplicas": "The number of ready replicas for this replica set.", + "observedGeneration": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", +} + +func (ReplicaSetStatus) SwaggerDoc() map[string]string { + return map_ReplicaSetStatus +} + +var map_ReplicationControllerDummy = map[string]string{ + "": "Dummy definition", +} + +func (ReplicationControllerDummy) SwaggerDoc() map[string]string { + return map_ReplicationControllerDummy +} + +var map_RollbackConfig = map[string]string{ + "revision": "The revision to rollback to. If set to 0, rollbck to the last revision.", +} + +func (RollbackConfig) SwaggerDoc() map[string]string { + return map_RollbackConfig +} + +var map_RollingUpdateDeployment = map[string]string{ + "": "Spec to control the desired behavior of rolling update.", + "maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding up. This can not be 0 if MaxSurge is 0. By default, a fixed value of 1 is used. Example: when this is set to 30%, the old RC can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old RC can be scaled down further, followed by scaling up the new RC, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.", + "maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. By default, a value of 1 is used. Example: when this is set to 30%, the new RC can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new RC can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.", +} + +func (RollingUpdateDeployment) SwaggerDoc() map[string]string { + return map_RollingUpdateDeployment +} + +var map_RunAsUserStrategyOptions = map[string]string{ + "": "Run A sUser Strategy Options defines the strategy type and any options used to create the strategy.", + "rule": "Rule is the strategy that will dictate the allowable RunAsUser values that may be set.", + "ranges": "Ranges are the allowed ranges of uids that may be used.", +} + +func (RunAsUserStrategyOptions) SwaggerDoc() map[string]string { + return map_RunAsUserStrategyOptions +} + +var map_SELinuxStrategyOptions = map[string]string{ + "": "SELinux Strategy Options defines the strategy type and any options used to create the strategy.", + "rule": "type is the strategy that will dictate the allowable labels that may be set.", + "seLinuxOptions": "seLinuxOptions required to run as; required for MustRunAs More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context", +} + +func (SELinuxStrategyOptions) SwaggerDoc() map[string]string { + return map_SELinuxStrategyOptions +} + +var map_Scale = map[string]string{ + "": "represents a scaling request for a resource.", + "metadata": "Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata.", + "spec": "defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.", + "status": "current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only.", +} + +func (Scale) SwaggerDoc() map[string]string { + return map_Scale +} + +var map_ScaleSpec = map[string]string{ + "": "describes the attributes of a scale subresource", + "replicas": "desired number of instances for the scaled object.", +} + +func (ScaleSpec) SwaggerDoc() map[string]string { + return map_ScaleSpec +} + +var map_ScaleStatus = map[string]string{ + "": "represents the current status of a scale subresource.", + "replicas": "actual number of observed instances of the scaled object.", + "selector": "label query over pods that should match the replicas count. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", + "targetSelector": "label selector for pods that should match the replicas count. This is a serializated version of both map-based and more expressive set-based selectors. This is done to avoid introspection in the clients. The string will be in the same format as the query-param syntax. If the target type only supports map-based selectors, both this field and map-based selector field are populated. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors", +} + +func (ScaleStatus) SwaggerDoc() map[string]string { + return map_ScaleStatus +} + +var map_SubresourceReference = map[string]string{ + "": "SubresourceReference contains enough information to let you inspect or modify the referred subresource.", + "kind": "Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds", + "name": "Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names", + "apiVersion": "API version of the referent", + "subresource": "Subresource name of the referent", +} + +func (SubresourceReference) SwaggerDoc() map[string]string { + return map_SubresourceReference +} + +var map_SupplementalGroupsStrategyOptions = map[string]string{ + "": "SupplementalGroupsStrategyOptions defines the strategy type and options used to create the strategy.", + "rule": "Rule is the strategy that will dictate what supplemental groups is used in the SecurityContext.", + "ranges": "Ranges are the allowed ranges of supplemental groups. If you would like to force a single supplemental group then supply a single range with the same start and end.", +} + +func (SupplementalGroupsStrategyOptions) SwaggerDoc() map[string]string { + return map_SupplementalGroupsStrategyOptions +} + +var map_ThirdPartyResource = map[string]string{ + "": "A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource types to the API. It consists of one or more Versions of the api.", + "metadata": "Standard object metadata", + "description": "Description is the description of this object.", + "versions": "Versions are versions for this third party object", +} + +func (ThirdPartyResource) SwaggerDoc() map[string]string { + return map_ThirdPartyResource +} + +var map_ThirdPartyResourceData = map[string]string{ + "": "An internal object, used for versioned storage in etcd. Not exposed to the end user.", + "metadata": "Standard object metadata.", + "data": "Data is the raw JSON data for this data.", +} + +func (ThirdPartyResourceData) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceData +} + +var map_ThirdPartyResourceDataList = map[string]string{ + "": "ThirdPartyResrouceDataList is a list of ThirdPartyResourceData.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of ThirdpartyResourceData.", +} + +func (ThirdPartyResourceDataList) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceDataList +} + +var map_ThirdPartyResourceList = map[string]string{ + "": "ThirdPartyResourceList is a list of ThirdPartyResources.", + "metadata": "Standard list metadata.", + "items": "Items is the list of ThirdPartyResources.", +} + +func (ThirdPartyResourceList) SwaggerDoc() map[string]string { + return map_ThirdPartyResourceList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.conversion.go new file mode 100644 index 0000000000..6c76c93cdf --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.conversion.go @@ -0,0 +1,2732 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + autoscaling "k8s.io/client-go/1.5/pkg/apis/autoscaling" + batch "k8s.io/client-go/1.5/pkg/apis/batch" + extensions "k8s.io/client-go/1.5/pkg/apis/extensions" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_APIVersion_To_extensions_APIVersion, + Convert_extensions_APIVersion_To_v1beta1_APIVersion, + Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus, + Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus, + Convert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList, + Convert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList, + Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget, + Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget, + Convert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList, + Convert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList, + Convert_v1beta1_DaemonSet_To_extensions_DaemonSet, + Convert_extensions_DaemonSet_To_v1beta1_DaemonSet, + Convert_v1beta1_DaemonSetList_To_extensions_DaemonSetList, + Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList, + Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec, + Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec, + Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus, + Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus, + Convert_v1beta1_Deployment_To_extensions_Deployment, + Convert_extensions_Deployment_To_v1beta1_Deployment, + Convert_v1beta1_DeploymentList_To_extensions_DeploymentList, + Convert_extensions_DeploymentList_To_v1beta1_DeploymentList, + Convert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback, + Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback, + Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec, + Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec, + Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus, + Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus, + Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy, + Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy, + Convert_v1beta1_ExportOptions_To_api_ExportOptions, + Convert_api_ExportOptions_To_v1beta1_ExportOptions, + Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions, + Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions, + Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath, + Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath, + Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue, + Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue, + Convert_v1beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler, + Convert_autoscaling_HorizontalPodAutoscaler_To_v1beta1_HorizontalPodAutoscaler, + Convert_v1beta1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList, + Convert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList, + Convert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec, + Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec, + Convert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus, + Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus, + Convert_v1beta1_HostPortRange_To_extensions_HostPortRange, + Convert_extensions_HostPortRange_To_v1beta1_HostPortRange, + Convert_v1beta1_IDRange_To_extensions_IDRange, + Convert_extensions_IDRange_To_v1beta1_IDRange, + Convert_v1beta1_Ingress_To_extensions_Ingress, + Convert_extensions_Ingress_To_v1beta1_Ingress, + Convert_v1beta1_IngressBackend_To_extensions_IngressBackend, + Convert_extensions_IngressBackend_To_v1beta1_IngressBackend, + Convert_v1beta1_IngressList_To_extensions_IngressList, + Convert_extensions_IngressList_To_v1beta1_IngressList, + Convert_v1beta1_IngressRule_To_extensions_IngressRule, + Convert_extensions_IngressRule_To_v1beta1_IngressRule, + Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue, + Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue, + Convert_v1beta1_IngressSpec_To_extensions_IngressSpec, + Convert_extensions_IngressSpec_To_v1beta1_IngressSpec, + Convert_v1beta1_IngressStatus_To_extensions_IngressStatus, + Convert_extensions_IngressStatus_To_v1beta1_IngressStatus, + Convert_v1beta1_IngressTLS_To_extensions_IngressTLS, + Convert_extensions_IngressTLS_To_v1beta1_IngressTLS, + Convert_v1beta1_Job_To_batch_Job, + Convert_batch_Job_To_v1beta1_Job, + Convert_v1beta1_JobCondition_To_batch_JobCondition, + Convert_batch_JobCondition_To_v1beta1_JobCondition, + Convert_v1beta1_JobList_To_batch_JobList, + Convert_batch_JobList_To_v1beta1_JobList, + Convert_v1beta1_JobSpec_To_batch_JobSpec, + Convert_batch_JobSpec_To_v1beta1_JobSpec, + Convert_v1beta1_JobStatus_To_batch_JobStatus, + Convert_batch_JobStatus_To_v1beta1_JobStatus, + Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector, + Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector, + Convert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement, + Convert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement, + Convert_v1beta1_ListOptions_To_api_ListOptions, + Convert_api_ListOptions_To_v1beta1_ListOptions, + Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy, + Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy, + Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule, + Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule, + Convert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList, + Convert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList, + Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer, + Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer, + Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort, + Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort, + Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec, + Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec, + Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy, + Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy, + Convert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList, + Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList, + Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec, + Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec, + Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet, + Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet, + Convert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList, + Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList, + Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec, + Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec, + Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus, + Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus, + Convert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy, + Convert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy, + Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig, + Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig, + Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment, + Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment, + Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions, + Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions, + Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions, + Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions, + Convert_v1beta1_Scale_To_extensions_Scale, + Convert_extensions_Scale_To_v1beta1_Scale, + Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec, + Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec, + Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus, + Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus, + Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions, + Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions, + Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource, + Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource, + Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData, + Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData, + Convert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList, + Convert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList, + Convert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList, + Convert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList, + ) +} + +func autoConvert_v1beta1_APIVersion_To_extensions_APIVersion(in *APIVersion, out *extensions.APIVersion, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +func Convert_v1beta1_APIVersion_To_extensions_APIVersion(in *APIVersion, out *extensions.APIVersion, s conversion.Scope) error { + return autoConvert_v1beta1_APIVersion_To_extensions_APIVersion(in, out, s) +} + +func autoConvert_extensions_APIVersion_To_v1beta1_APIVersion(in *extensions.APIVersion, out *APIVersion, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +func Convert_extensions_APIVersion_To_v1beta1_APIVersion(in *extensions.APIVersion, out *APIVersion, s conversion.Scope) error { + return autoConvert_extensions_APIVersion_To_v1beta1_APIVersion(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in *CustomMetricCurrentStatus, out *extensions.CustomMetricCurrentStatus, s conversion.Scope) error { + out.Name = in.Name + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.CurrentValue, &out.CurrentValue, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in *CustomMetricCurrentStatus, out *extensions.CustomMetricCurrentStatus, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(in, out, s) +} + +func autoConvert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in *extensions.CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, s conversion.Scope) error { + out.Name = in.Name + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.CurrentValue, &out.CurrentValue, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in *extensions.CustomMetricCurrentStatus, out *CustomMetricCurrentStatus, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in *CustomMetricCurrentStatusList, out *extensions.CustomMetricCurrentStatusList, s conversion.Scope) error { + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := Convert_v1beta1_CustomMetricCurrentStatus_To_extensions_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in *CustomMetricCurrentStatusList, out *extensions.CustomMetricCurrentStatusList, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricCurrentStatusList_To_extensions_CustomMetricCurrentStatusList(in, out, s) +} + +func autoConvert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in *extensions.CustomMetricCurrentStatusList, out *CustomMetricCurrentStatusList, s conversion.Scope) error { + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := Convert_extensions_CustomMetricCurrentStatus_To_v1beta1_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in *extensions.CustomMetricCurrentStatusList, out *CustomMetricCurrentStatusList, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricCurrentStatusList_To_v1beta1_CustomMetricCurrentStatusList(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in *CustomMetricTarget, out *extensions.CustomMetricTarget, s conversion.Scope) error { + out.Name = in.Name + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.TargetValue, &out.TargetValue, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in *CustomMetricTarget, out *extensions.CustomMetricTarget, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(in, out, s) +} + +func autoConvert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in *extensions.CustomMetricTarget, out *CustomMetricTarget, s conversion.Scope) error { + out.Name = in.Name + if err := api.Convert_resource_Quantity_To_resource_Quantity(&in.TargetValue, &out.TargetValue, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in *extensions.CustomMetricTarget, out *CustomMetricTarget, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(in, out, s) +} + +func autoConvert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in *CustomMetricTargetList, out *extensions.CustomMetricTargetList, s conversion.Scope) error { + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.CustomMetricTarget, len(*in)) + for i := range *in { + if err := Convert_v1beta1_CustomMetricTarget_To_extensions_CustomMetricTarget(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in *CustomMetricTargetList, out *extensions.CustomMetricTargetList, s conversion.Scope) error { + return autoConvert_v1beta1_CustomMetricTargetList_To_extensions_CustomMetricTargetList(in, out, s) +} + +func autoConvert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in *extensions.CustomMetricTargetList, out *CustomMetricTargetList, s conversion.Scope) error { + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + if err := Convert_extensions_CustomMetricTarget_To_v1beta1_CustomMetricTarget(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in *extensions.CustomMetricTargetList, out *CustomMetricTargetList, s conversion.Scope) error { + return autoConvert_extensions_CustomMetricTargetList_To_v1beta1_CustomMetricTargetList(in, out, s) +} + +func autoConvert_v1beta1_DaemonSet_To_extensions_DaemonSet(in *DaemonSet, out *extensions.DaemonSet, s conversion.Scope) error { + SetDefaults_DaemonSet(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_DaemonSet_To_extensions_DaemonSet(in *DaemonSet, out *extensions.DaemonSet, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSet_To_extensions_DaemonSet(in, out, s) +} + +func autoConvert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet, out *DaemonSet, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_DaemonSet_To_v1beta1_DaemonSet(in *extensions.DaemonSet, out *DaemonSet, s conversion.Scope) error { + return autoConvert_extensions_DaemonSet_To_v1beta1_DaemonSet(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in *DaemonSetList, out *extensions.DaemonSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.DaemonSet, len(*in)) + for i := range *in { + if err := Convert_v1beta1_DaemonSet_To_extensions_DaemonSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in *DaemonSetList, out *extensions.DaemonSetList, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetList_To_extensions_DaemonSetList(in, out, s) +} + +func autoConvert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.DaemonSetList, out *DaemonSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := Convert_extensions_DaemonSet_To_v1beta1_DaemonSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in *extensions.DaemonSetList, out *DaemonSetList, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetList_To_v1beta1_DaemonSetList(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in *DaemonSetSpec, out *extensions.DaemonSetSpec, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetSpec_To_extensions_DaemonSetSpec(in, out, s) +} + +func autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *DaemonSetSpec, s conversion.Scope) error { + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in *extensions.DaemonSetSpec, out *DaemonSetSpec, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetSpec_To_v1beta1_DaemonSetSpec(in, out, s) +} + +func autoConvert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in *DaemonSetStatus, out *extensions.DaemonSetStatus, s conversion.Scope) error { + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + return nil +} + +func Convert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in *DaemonSetStatus, out *extensions.DaemonSetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_DaemonSetStatus_To_extensions_DaemonSetStatus(in, out, s) +} + +func autoConvert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in *extensions.DaemonSetStatus, out *DaemonSetStatus, s conversion.Scope) error { + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + return nil +} + +func Convert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in *extensions.DaemonSetStatus, out *DaemonSetStatus, s conversion.Scope) error { + return autoConvert_extensions_DaemonSetStatus_To_v1beta1_DaemonSetStatus(in, out, s) +} + +func autoConvert_v1beta1_Deployment_To_extensions_Deployment(in *Deployment, out *extensions.Deployment, s conversion.Scope) error { + SetDefaults_Deployment(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_Deployment_To_extensions_Deployment(in *Deployment, out *extensions.Deployment, s conversion.Scope) error { + return autoConvert_v1beta1_Deployment_To_extensions_Deployment(in, out, s) +} + +func autoConvert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployment, out *Deployment, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_Deployment_To_v1beta1_Deployment(in *extensions.Deployment, out *Deployment, s conversion.Scope) error { + return autoConvert_extensions_Deployment_To_v1beta1_Deployment(in, out, s) +} + +func autoConvert_v1beta1_DeploymentList_To_extensions_DeploymentList(in *DeploymentList, out *extensions.DeploymentList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.Deployment, len(*in)) + for i := range *in { + if err := Convert_v1beta1_Deployment_To_extensions_Deployment(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_DeploymentList_To_extensions_DeploymentList(in *DeploymentList, out *extensions.DeploymentList, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentList_To_extensions_DeploymentList(in, out, s) +} + +func autoConvert_extensions_DeploymentList_To_v1beta1_DeploymentList(in *extensions.DeploymentList, out *DeploymentList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := Convert_extensions_Deployment_To_v1beta1_Deployment(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_DeploymentList_To_v1beta1_DeploymentList(in *extensions.DeploymentList, out *DeploymentList, s conversion.Scope) error { + return autoConvert_extensions_DeploymentList_To_v1beta1_DeploymentList(in, out, s) +} + +func autoConvert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in *DeploymentRollback, out *extensions.DeploymentRollback, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Name = in.Name + out.UpdatedAnnotations = in.UpdatedAnnotations + if err := Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in *DeploymentRollback, out *extensions.DeploymentRollback, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentRollback_To_extensions_DeploymentRollback(in, out, s) +} + +func autoConvert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *extensions.DeploymentRollback, out *DeploymentRollback, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Name = in.Name + out.UpdatedAnnotations = in.UpdatedAnnotations + if err := Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(&in.RollbackTo, &out.RollbackTo, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in *extensions.DeploymentRollback, out *DeploymentRollback, s conversion.Scope) error { + return autoConvert_extensions_DeploymentRollback_To_v1beta1_DeploymentRollback(in, out, s) +} + +func autoConvert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentSpec, out *extensions.DeploymentSpec, s conversion.Scope) error { + if err := api.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.RevisionHistoryLimit = in.RevisionHistoryLimit + out.Paused = in.Paused + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(extensions.RollbackConfig) + if err := Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(*in, *out, s); err != nil { + return err + } + } else { + out.RollbackTo = nil + } + return nil +} + +func autoConvert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions.DeploymentSpec, out *DeploymentSpec, s conversion.Scope) error { + if err := api.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + if err := Convert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + out.RevisionHistoryLimit = in.RevisionHistoryLimit + out.Paused = in.Paused + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + if err := Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(*in, *out, s); err != nil { + return err + } + } else { + out.RollbackTo = nil + } + return nil +} + +func autoConvert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in *DeploymentStatus, out *extensions.DeploymentStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + return nil +} + +func Convert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in *DeploymentStatus, out *extensions.DeploymentStatus, s conversion.Scope) error { + return autoConvert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in, out, s) +} + +func autoConvert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in *extensions.DeploymentStatus, out *DeploymentStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + return nil +} + +func Convert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in *extensions.DeploymentStatus, out *DeploymentStatus, s conversion.Scope) error { + return autoConvert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in, out, s) +} + +func autoConvert_v1beta1_DeploymentStrategy_To_extensions_DeploymentStrategy(in *DeploymentStrategy, out *extensions.DeploymentStrategy, s conversion.Scope) error { + out.Type = extensions.DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(extensions.RollingUpdateDeployment) + if err := Convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func autoConvert_extensions_DeploymentStrategy_To_v1beta1_DeploymentStrategy(in *extensions.DeploymentStrategy, out *DeploymentStrategy, s conversion.Scope) error { + out.Type = DeploymentStrategyType(in.Type) + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + if err := Convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(*in, *out, s); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil +} + +func autoConvert_v1beta1_ExportOptions_To_api_ExportOptions(in *ExportOptions, out *api.ExportOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Export = in.Export + out.Exact = in.Exact + return nil +} + +func Convert_v1beta1_ExportOptions_To_api_ExportOptions(in *ExportOptions, out *api.ExportOptions, s conversion.Scope) error { + return autoConvert_v1beta1_ExportOptions_To_api_ExportOptions(in, out, s) +} + +func autoConvert_api_ExportOptions_To_v1beta1_ExportOptions(in *api.ExportOptions, out *ExportOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + out.Export = in.Export + out.Exact = in.Exact + return nil +} + +func Convert_api_ExportOptions_To_v1beta1_ExportOptions(in *api.ExportOptions, out *ExportOptions, s conversion.Scope) error { + return autoConvert_api_ExportOptions_To_v1beta1_ExportOptions(in, out, s) +} + +func autoConvert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in *FSGroupStrategyOptions, out *extensions.FSGroupStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.FSGroupStrategyType(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]extensions.IDRange, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IDRange_To_extensions_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in *FSGroupStrategyOptions, out *extensions.FSGroupStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(in, out, s) +} + +func autoConvert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in *extensions.FSGroupStrategyOptions, out *FSGroupStrategyOptions, s conversion.Scope) error { + out.Rule = FSGroupStrategyType(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + if err := Convert_extensions_IDRange_To_v1beta1_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in *extensions.FSGroupStrategyOptions, out *FSGroupStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in *HTTPIngressPath, out *extensions.HTTPIngressPath, s conversion.Scope) error { + out.Path = in.Path + if err := Convert_v1beta1_IngressBackend_To_extensions_IngressBackend(&in.Backend, &out.Backend, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in *HTTPIngressPath, out *extensions.HTTPIngressPath, s conversion.Scope) error { + return autoConvert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(in, out, s) +} + +func autoConvert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in *extensions.HTTPIngressPath, out *HTTPIngressPath, s conversion.Scope) error { + out.Path = in.Path + if err := Convert_extensions_IngressBackend_To_v1beta1_IngressBackend(&in.Backend, &out.Backend, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in *extensions.HTTPIngressPath, out *HTTPIngressPath, s conversion.Scope) error { + return autoConvert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(in, out, s) +} + +func autoConvert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in *HTTPIngressRuleValue, out *extensions.HTTPIngressRuleValue, s conversion.Scope) error { + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]extensions.HTTPIngressPath, len(*in)) + for i := range *in { + if err := Convert_v1beta1_HTTPIngressPath_To_extensions_HTTPIngressPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Paths = nil + } + return nil +} + +func Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in *HTTPIngressRuleValue, out *extensions.HTTPIngressRuleValue, s conversion.Scope) error { + return autoConvert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(in, out, s) +} + +func autoConvert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in *extensions.HTTPIngressRuleValue, out *HTTPIngressRuleValue, s conversion.Scope) error { + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + for i := range *in { + if err := Convert_extensions_HTTPIngressPath_To_v1beta1_HTTPIngressPath(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Paths = nil + } + return nil +} + +func Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in *extensions.HTTPIngressRuleValue, out *HTTPIngressRuleValue, s conversion.Scope) error { + return autoConvert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(in, out, s) +} + +func autoConvert_v1beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + SetDefaults_HorizontalPodAutoscaler(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in *HorizontalPodAutoscaler, out *autoscaling.HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_v1beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1beta1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscaler_To_v1beta1_HorizontalPodAutoscaler(in *autoscaling.HorizontalPodAutoscaler, out *HorizontalPodAutoscaler, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscaler_To_v1beta1_HorizontalPodAutoscaler(in, out, s) +} + +func autoConvert_v1beta1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]autoscaling.HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_v1beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in *HorizontalPodAutoscalerList, out *autoscaling.HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_v1beta1_HorizontalPodAutoscalerList_To_autoscaling_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := Convert_autoscaling_HorizontalPodAutoscaler_To_v1beta1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList(in *autoscaling.HorizontalPodAutoscalerList, out *HorizontalPodAutoscalerList, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerList_To_v1beta1_HorizontalPodAutoscalerList(in, out, s) +} + +func autoConvert_v1beta1_HorizontalPodAutoscalerSpec_To_autoscaling_HorizontalPodAutoscalerSpec(in *HorizontalPodAutoscalerSpec, out *autoscaling.HorizontalPodAutoscalerSpec, s conversion.Scope) error { + // WARNING: in.ScaleRef requires manual conversion: does not exist in peer-type + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + // WARNING: in.CPUUtilization requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerSpec_To_v1beta1_HorizontalPodAutoscalerSpec(in *autoscaling.HorizontalPodAutoscalerSpec, out *HorizontalPodAutoscalerSpec, s conversion.Scope) error { + // WARNING: in.ScaleTargetRef requires manual conversion: does not exist in peer-type + out.MinReplicas = in.MinReplicas + out.MaxReplicas = in.MaxReplicas + // WARNING: in.TargetCPUUtilizationPercentage requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage + return nil +} + +func Convert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in *HorizontalPodAutoscalerStatus, out *autoscaling.HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_v1beta1_HorizontalPodAutoscalerStatus_To_autoscaling_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + out.ObservedGeneration = in.ObservedGeneration + out.LastScaleTime = in.LastScaleTime + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + out.CurrentCPUUtilizationPercentage = in.CurrentCPUUtilizationPercentage + return nil +} + +func Convert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(in *autoscaling.HorizontalPodAutoscalerStatus, out *HorizontalPodAutoscalerStatus, s conversion.Scope) error { + return autoConvert_autoscaling_HorizontalPodAutoscalerStatus_To_v1beta1_HorizontalPodAutoscalerStatus(in, out, s) +} + +func autoConvert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *HostPortRange, out *extensions.HostPortRange, s conversion.Scope) error { + out.Min = int(in.Min) + out.Max = int(in.Max) + return nil +} + +func Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(in *HostPortRange, out *extensions.HostPortRange, s conversion.Scope) error { + return autoConvert_v1beta1_HostPortRange_To_extensions_HostPortRange(in, out, s) +} + +func autoConvert_extensions_HostPortRange_To_v1beta1_HostPortRange(in *extensions.HostPortRange, out *HostPortRange, s conversion.Scope) error { + out.Min = int32(in.Min) + out.Max = int32(in.Max) + return nil +} + +func Convert_extensions_HostPortRange_To_v1beta1_HostPortRange(in *extensions.HostPortRange, out *HostPortRange, s conversion.Scope) error { + return autoConvert_extensions_HostPortRange_To_v1beta1_HostPortRange(in, out, s) +} + +func autoConvert_v1beta1_IDRange_To_extensions_IDRange(in *IDRange, out *extensions.IDRange, s conversion.Scope) error { + out.Min = in.Min + out.Max = in.Max + return nil +} + +func Convert_v1beta1_IDRange_To_extensions_IDRange(in *IDRange, out *extensions.IDRange, s conversion.Scope) error { + return autoConvert_v1beta1_IDRange_To_extensions_IDRange(in, out, s) +} + +func autoConvert_extensions_IDRange_To_v1beta1_IDRange(in *extensions.IDRange, out *IDRange, s conversion.Scope) error { + out.Min = in.Min + out.Max = in.Max + return nil +} + +func Convert_extensions_IDRange_To_v1beta1_IDRange(in *extensions.IDRange, out *IDRange, s conversion.Scope) error { + return autoConvert_extensions_IDRange_To_v1beta1_IDRange(in, out, s) +} + +func autoConvert_v1beta1_Ingress_To_extensions_Ingress(in *Ingress, out *extensions.Ingress, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_IngressSpec_To_extensions_IngressSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_IngressStatus_To_extensions_IngressStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_Ingress_To_extensions_Ingress(in *Ingress, out *extensions.Ingress, s conversion.Scope) error { + return autoConvert_v1beta1_Ingress_To_extensions_Ingress(in, out, s) +} + +func autoConvert_extensions_Ingress_To_v1beta1_Ingress(in *extensions.Ingress, out *Ingress, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_IngressSpec_To_v1beta1_IngressSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_IngressStatus_To_v1beta1_IngressStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_Ingress_To_v1beta1_Ingress(in *extensions.Ingress, out *Ingress, s conversion.Scope) error { + return autoConvert_extensions_Ingress_To_v1beta1_Ingress(in, out, s) +} + +func autoConvert_v1beta1_IngressBackend_To_extensions_IngressBackend(in *IngressBackend, out *extensions.IngressBackend, s conversion.Scope) error { + out.ServiceName = in.ServiceName + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.ServicePort, &out.ServicePort, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_IngressBackend_To_extensions_IngressBackend(in *IngressBackend, out *extensions.IngressBackend, s conversion.Scope) error { + return autoConvert_v1beta1_IngressBackend_To_extensions_IngressBackend(in, out, s) +} + +func autoConvert_extensions_IngressBackend_To_v1beta1_IngressBackend(in *extensions.IngressBackend, out *IngressBackend, s conversion.Scope) error { + out.ServiceName = in.ServiceName + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.ServicePort, &out.ServicePort, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_IngressBackend_To_v1beta1_IngressBackend(in *extensions.IngressBackend, out *IngressBackend, s conversion.Scope) error { + return autoConvert_extensions_IngressBackend_To_v1beta1_IngressBackend(in, out, s) +} + +func autoConvert_v1beta1_IngressList_To_extensions_IngressList(in *IngressList, out *extensions.IngressList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.Ingress, len(*in)) + for i := range *in { + if err := Convert_v1beta1_Ingress_To_extensions_Ingress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_IngressList_To_extensions_IngressList(in *IngressList, out *extensions.IngressList, s conversion.Scope) error { + return autoConvert_v1beta1_IngressList_To_extensions_IngressList(in, out, s) +} + +func autoConvert_extensions_IngressList_To_v1beta1_IngressList(in *extensions.IngressList, out *IngressList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Ingress, len(*in)) + for i := range *in { + if err := Convert_extensions_Ingress_To_v1beta1_Ingress(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_IngressList_To_v1beta1_IngressList(in *extensions.IngressList, out *IngressList, s conversion.Scope) error { + return autoConvert_extensions_IngressList_To_v1beta1_IngressList(in, out, s) +} + +func autoConvert_v1beta1_IngressRule_To_extensions_IngressRule(in *IngressRule, out *extensions.IngressRule, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_IngressRule_To_extensions_IngressRule(in *IngressRule, out *extensions.IngressRule, s conversion.Scope) error { + return autoConvert_v1beta1_IngressRule_To_extensions_IngressRule(in, out, s) +} + +func autoConvert_extensions_IngressRule_To_v1beta1_IngressRule(in *extensions.IngressRule, out *IngressRule, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_IngressRule_To_v1beta1_IngressRule(in *extensions.IngressRule, out *IngressRule, s conversion.Scope) error { + return autoConvert_extensions_IngressRule_To_v1beta1_IngressRule(in, out, s) +} + +func autoConvert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in *IngressRuleValue, out *extensions.IngressRuleValue, s conversion.Scope) error { + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(extensions.HTTPIngressRuleValue) + if err := Convert_v1beta1_HTTPIngressRuleValue_To_extensions_HTTPIngressRuleValue(*in, *out, s); err != nil { + return err + } + } else { + out.HTTP = nil + } + return nil +} + +func Convert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in *IngressRuleValue, out *extensions.IngressRuleValue, s conversion.Scope) error { + return autoConvert_v1beta1_IngressRuleValue_To_extensions_IngressRuleValue(in, out, s) +} + +func autoConvert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in *extensions.IngressRuleValue, out *IngressRuleValue, s conversion.Scope) error { + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(HTTPIngressRuleValue) + if err := Convert_extensions_HTTPIngressRuleValue_To_v1beta1_HTTPIngressRuleValue(*in, *out, s); err != nil { + return err + } + } else { + out.HTTP = nil + } + return nil +} + +func Convert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in *extensions.IngressRuleValue, out *IngressRuleValue, s conversion.Scope) error { + return autoConvert_extensions_IngressRuleValue_To_v1beta1_IngressRuleValue(in, out, s) +} + +func autoConvert_v1beta1_IngressSpec_To_extensions_IngressSpec(in *IngressSpec, out *extensions.IngressSpec, s conversion.Scope) error { + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(extensions.IngressBackend) + if err := Convert_v1beta1_IngressBackend_To_extensions_IngressBackend(*in, *out, s); err != nil { + return err + } + } else { + out.Backend = nil + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]extensions.IngressTLS, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IngressTLS_To_extensions_IngressTLS(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.TLS = nil + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]extensions.IngressRule, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IngressRule_To_extensions_IngressRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_v1beta1_IngressSpec_To_extensions_IngressSpec(in *IngressSpec, out *extensions.IngressSpec, s conversion.Scope) error { + return autoConvert_v1beta1_IngressSpec_To_extensions_IngressSpec(in, out, s) +} + +func autoConvert_extensions_IngressSpec_To_v1beta1_IngressSpec(in *extensions.IngressSpec, out *IngressSpec, s conversion.Scope) error { + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(IngressBackend) + if err := Convert_extensions_IngressBackend_To_v1beta1_IngressBackend(*in, *out, s); err != nil { + return err + } + } else { + out.Backend = nil + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + if err := Convert_extensions_IngressTLS_To_v1beta1_IngressTLS(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.TLS = nil + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + if err := Convert_extensions_IngressRule_To_v1beta1_IngressRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_extensions_IngressSpec_To_v1beta1_IngressSpec(in *extensions.IngressSpec, out *IngressSpec, s conversion.Scope) error { + return autoConvert_extensions_IngressSpec_To_v1beta1_IngressSpec(in, out, s) +} + +func autoConvert_v1beta1_IngressStatus_To_extensions_IngressStatus(in *IngressStatus, out *extensions.IngressStatus, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.LoadBalancer, &out.LoadBalancer, 0); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_IngressStatus_To_extensions_IngressStatus(in *IngressStatus, out *extensions.IngressStatus, s conversion.Scope) error { + return autoConvert_v1beta1_IngressStatus_To_extensions_IngressStatus(in, out, s) +} + +func autoConvert_extensions_IngressStatus_To_v1beta1_IngressStatus(in *extensions.IngressStatus, out *IngressStatus, s conversion.Scope) error { + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.LoadBalancer, &out.LoadBalancer, 0); err != nil { + return err + } + return nil +} + +func Convert_extensions_IngressStatus_To_v1beta1_IngressStatus(in *extensions.IngressStatus, out *IngressStatus, s conversion.Scope) error { + return autoConvert_extensions_IngressStatus_To_v1beta1_IngressStatus(in, out, s) +} + +func autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error { + out.Hosts = in.Hosts + out.SecretName = in.SecretName + return nil +} + +func Convert_v1beta1_IngressTLS_To_extensions_IngressTLS(in *IngressTLS, out *extensions.IngressTLS, s conversion.Scope) error { + return autoConvert_v1beta1_IngressTLS_To_extensions_IngressTLS(in, out, s) +} + +func autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error { + out.Hosts = in.Hosts + out.SecretName = in.SecretName + return nil +} + +func Convert_extensions_IngressTLS_To_v1beta1_IngressTLS(in *extensions.IngressTLS, out *IngressTLS, s conversion.Scope) error { + return autoConvert_extensions_IngressTLS_To_v1beta1_IngressTLS(in, out, s) +} + +func autoConvert_v1beta1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + SetDefaults_Job(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_JobSpec_To_batch_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_JobStatus_To_batch_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_Job_To_batch_Job(in *Job, out *batch.Job, s conversion.Scope) error { + return autoConvert_v1beta1_Job_To_batch_Job(in, out, s) +} + +func autoConvert_batch_Job_To_v1beta1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_batch_JobSpec_To_v1beta1_JobSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_batch_JobStatus_To_v1beta1_JobStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_batch_Job_To_v1beta1_Job(in *batch.Job, out *Job, s conversion.Scope) error { + return autoConvert_batch_Job_To_v1beta1_Job(in, out, s) +} + +func autoConvert_v1beta1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + out.Type = batch.JobConditionType(in.Type) + out.Status = api.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_v1beta1_JobCondition_To_batch_JobCondition(in *JobCondition, out *batch.JobCondition, s conversion.Scope) error { + return autoConvert_v1beta1_JobCondition_To_batch_JobCondition(in, out, s) +} + +func autoConvert_batch_JobCondition_To_v1beta1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + out.Type = JobConditionType(in.Type) + out.Status = v1.ConditionStatus(in.Status) + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastProbeTime, &out.LastProbeTime, s); err != nil { + return err + } + if err := api.Convert_unversioned_Time_To_unversioned_Time(&in.LastTransitionTime, &out.LastTransitionTime, s); err != nil { + return err + } + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +func Convert_batch_JobCondition_To_v1beta1_JobCondition(in *batch.JobCondition, out *JobCondition, s conversion.Scope) error { + return autoConvert_batch_JobCondition_To_v1beta1_JobCondition(in, out, s) +} + +func autoConvert_v1beta1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]batch.Job, len(*in)) + for i := range *in { + if err := Convert_v1beta1_Job_To_batch_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_JobList_To_batch_JobList(in *JobList, out *batch.JobList, s conversion.Scope) error { + return autoConvert_v1beta1_JobList_To_batch_JobList(in, out, s) +} + +func autoConvert_batch_JobList_To_v1beta1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := Convert_batch_Job_To_v1beta1_Job(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_batch_JobList_To_v1beta1_JobList(in *batch.JobList, out *JobList, s conversion.Scope) error { + return autoConvert_batch_JobList_To_v1beta1_JobList(in, out, s) +} + +func autoConvert_v1beta1_JobSpec_To_batch_JobSpec(in *JobSpec, out *batch.JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + // WARNING: in.AutoSelector requires manual conversion: does not exist in peer-type + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_batch_JobSpec_To_v1beta1_JobSpec(in *batch.JobSpec, out *JobSpec, s conversion.Scope) error { + out.Parallelism = in.Parallelism + out.Completions = in.Completions + out.ActiveDeadlineSeconds = in.ActiveDeadlineSeconds + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + // WARNING: in.ManualSelector requires manual conversion: does not exist in peer-type + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1beta1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]batch.JobCondition, len(*in)) + for i := range *in { + if err := Convert_v1beta1_JobCondition_To_batch_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_v1beta1_JobStatus_To_batch_JobStatus(in *JobStatus, out *batch.JobStatus, s conversion.Scope) error { + return autoConvert_v1beta1_JobStatus_To_batch_JobStatus(in, out, s) +} + +func autoConvert_batch_JobStatus_To_v1beta1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := Convert_batch_JobCondition_To_v1beta1_JobCondition(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + out.StartTime = in.StartTime + out.CompletionTime = in.CompletionTime + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil +} + +func Convert_batch_JobStatus_To_v1beta1_JobStatus(in *batch.JobStatus, out *JobStatus, s conversion.Scope) error { + return autoConvert_batch_JobStatus_To_v1beta1_JobStatus(in, out, s) +} + +func autoConvert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]unversioned.LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in *LabelSelector, out *unversioned.LabelSelector, s conversion.Scope) error { + return autoConvert_v1beta1_LabelSelector_To_unversioned_LabelSelector(in, out, s) +} + +func autoConvert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + out.MatchLabels = in.MatchLabels + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := Convert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil +} + +func Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in *unversioned.LabelSelector, out *LabelSelector, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelector_To_v1beta1_LabelSelector(in, out, s) +} + +func autoConvert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = unversioned.LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in *LabelSelectorRequirement, out *unversioned.LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_v1beta1_LabelSelectorRequirement_To_unversioned_LabelSelectorRequirement(in, out, s) +} + +func autoConvert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + out.Key = in.Key + out.Operator = LabelSelectorOperator(in.Operator) + out.Values = in.Values + return nil +} + +func Convert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(in *unversioned.LabelSelectorRequirement, out *LabelSelectorRequirement, s conversion.Scope) error { + return autoConvert_unversioned_LabelSelectorRequirement_To_v1beta1_LabelSelectorRequirement(in, out, s) +} + +func autoConvert_v1beta1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_string_To_labels_Selector(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := api.Convert_string_To_fields_Selector(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + return nil +} + +func Convert_v1beta1_ListOptions_To_api_ListOptions(in *ListOptions, out *api.ListOptions, s conversion.Scope) error { + return autoConvert_v1beta1_ListOptions_To_api_ListOptions(in, out, s) +} + +func autoConvert_api_ListOptions_To_v1beta1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_labels_Selector_To_string(&in.LabelSelector, &out.LabelSelector, s); err != nil { + return err + } + if err := api.Convert_fields_Selector_To_string(&in.FieldSelector, &out.FieldSelector, s); err != nil { + return err + } + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + out.TimeoutSeconds = in.TimeoutSeconds + return nil +} + +func Convert_api_ListOptions_To_v1beta1_ListOptions(in *api.ListOptions, out *ListOptions, s conversion.Scope) error { + return autoConvert_api_ListOptions_To_v1beta1_ListOptions(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in *NetworkPolicy, out *extensions.NetworkPolicy, s conversion.Scope) error { + SetDefaults_NetworkPolicy(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in *NetworkPolicy, out *extensions.NetworkPolicy, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(in, out, s) +} + +func autoConvert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in *extensions.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in *extensions.NetworkPolicy, out *NetworkPolicy, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *extensions.NetworkPolicyIngressRule, s conversion.Scope) error { + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]extensions.NetworkPolicyPort, len(*in)) + for i := range *in { + if err := Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]extensions.NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.From = nil + } + return nil +} + +func Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in *NetworkPolicyIngressRule, out *extensions.NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in *extensions.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.From = nil + } + return nil +} + +func Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in *extensions.NetworkPolicyIngressRule, out *NetworkPolicyIngressRule, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in *NetworkPolicyList, out *extensions.NetworkPolicyList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.NetworkPolicy, len(*in)) + for i := range *in { + if err := Convert_v1beta1_NetworkPolicy_To_extensions_NetworkPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in *NetworkPolicyList, out *extensions.NetworkPolicyList, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyList_To_extensions_NetworkPolicyList(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in *extensions.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := Convert_extensions_NetworkPolicy_To_v1beta1_NetworkPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in *extensions.NetworkPolicyList, out *NetworkPolicyList, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyList_To_v1beta1_NetworkPolicyList(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in *NetworkPolicyPeer, out *extensions.NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in *NetworkPolicyPeer, out *extensions.NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyPeer_To_extensions_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in *extensions.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil +} + +func Convert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in *extensions.NetworkPolicyPeer, out *NetworkPolicyPeer, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyPeer_To_v1beta1_NetworkPolicyPeer(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *NetworkPolicyPort, out *extensions.NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api.Protocol) + **out = api.Protocol(**in) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in *NetworkPolicyPort, out *extensions.NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicyPort_To_extensions_NetworkPolicyPort(in, out, s) +} + +func autoConvert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *extensions.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(v1.Protocol) + **out = v1.Protocol(**in) + } else { + out.Protocol = nil + } + out.Port = in.Port + return nil +} + +func Convert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in *extensions.NetworkPolicyPort, out *NetworkPolicyPort, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicyPort_To_v1beta1_NetworkPolicyPort(in, out, s) +} + +func autoConvert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in *NetworkPolicySpec, out *extensions.NetworkPolicySpec, s conversion.Scope) error { + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(&in.PodSelector, &out.PodSelector, s); err != nil { + return err + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]extensions.NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := Convert_v1beta1_NetworkPolicyIngressRule_To_extensions_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil +} + +func Convert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in *NetworkPolicySpec, out *extensions.NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_v1beta1_NetworkPolicySpec_To_extensions_NetworkPolicySpec(in, out, s) +} + +func autoConvert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in *extensions.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(&in.PodSelector, &out.PodSelector, s); err != nil { + return err + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := Convert_extensions_NetworkPolicyIngressRule_To_v1beta1_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil +} + +func Convert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in *extensions.NetworkPolicySpec, out *NetworkPolicySpec, s conversion.Scope) error { + return autoConvert_extensions_NetworkPolicySpec_To_v1beta1_NetworkPolicySpec(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in *PodSecurityPolicy, out *extensions.PodSecurityPolicy, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in *PodSecurityPolicy, out *extensions.PodSecurityPolicy, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in *extensions.PodSecurityPolicy, out *PodSecurityPolicy, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in *extensions.PodSecurityPolicy, out *PodSecurityPolicy, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in *PodSecurityPolicyList, out *extensions.PodSecurityPolicyList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.PodSecurityPolicy, len(*in)) + for i := range *in { + if err := Convert_v1beta1_PodSecurityPolicy_To_extensions_PodSecurityPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in *PodSecurityPolicyList, out *extensions.PodSecurityPolicyList, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicyList_To_extensions_PodSecurityPolicyList(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in *extensions.PodSecurityPolicyList, out *PodSecurityPolicyList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := Convert_extensions_PodSecurityPolicy_To_v1beta1_PodSecurityPolicy(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in *extensions.PodSecurityPolicyList, out *PodSecurityPolicyList, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicyList_To_v1beta1_PodSecurityPolicyList(in, out, s) +} + +func autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in *PodSecurityPolicySpec, out *extensions.PodSecurityPolicySpec, s conversion.Scope) error { + out.Privileged = in.Privileged + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = api.Capability((*in)[i]) + } + } else { + out.DefaultAddCapabilities = nil + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = api.Capability((*in)[i]) + } + } else { + out.RequiredDropCapabilities = nil + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = api.Capability((*in)[i]) + } + } else { + out.AllowedCapabilities = nil + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]extensions.FSType, len(*in)) + for i := range *in { + (*out)[i] = extensions.FSType((*in)[i]) + } + } else { + out.Volumes = nil + } + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]extensions.HostPortRange, len(*in)) + for i := range *in { + if err := Convert_v1beta1_HostPortRange_To_extensions_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil { + return err + } + if err := Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, s); err != nil { + return err + } + if err := Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, s); err != nil { + return err + } + if err := Convert_v1beta1_FSGroupStrategyOptions_To_extensions_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, s); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +func Convert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in *PodSecurityPolicySpec, out *extensions.PodSecurityPolicySpec, s conversion.Scope) error { + return autoConvert_v1beta1_PodSecurityPolicySpec_To_extensions_PodSecurityPolicySpec(in, out, s) +} + +func autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in *extensions.PodSecurityPolicySpec, out *PodSecurityPolicySpec, s conversion.Scope) error { + out.Privileged = in.Privileged + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = v1.Capability((*in)[i]) + } + } else { + out.DefaultAddCapabilities = nil + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = v1.Capability((*in)[i]) + } + } else { + out.RequiredDropCapabilities = nil + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = v1.Capability((*in)[i]) + } + } else { + out.AllowedCapabilities = nil + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + for i := range *in { + (*out)[i] = FSType((*in)[i]) + } + } else { + out.Volumes = nil + } + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + for i := range *in { + if err := Convert_extensions_HostPortRange_To_v1beta1_HostPortRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, s); err != nil { + return err + } + if err := Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, s); err != nil { + return err + } + if err := Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, s); err != nil { + return err + } + if err := Convert_extensions_FSGroupStrategyOptions_To_v1beta1_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, s); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil +} + +func Convert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in *extensions.PodSecurityPolicySpec, out *PodSecurityPolicySpec, s conversion.Scope) error { + return autoConvert_extensions_PodSecurityPolicySpec_To_v1beta1_PodSecurityPolicySpec(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in *ReplicaSet, out *extensions.ReplicaSet, s conversion.Scope) error { + SetDefaults_ReplicaSet(in) + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in *ReplicaSet, out *extensions.ReplicaSet, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(in, out, s) +} + +func autoConvert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in *extensions.ReplicaSet, out *ReplicaSet, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in *extensions.ReplicaSet, out *ReplicaSet, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in *ReplicaSetList, out *extensions.ReplicaSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.ReplicaSet, len(*in)) + for i := range *in { + if err := Convert_v1beta1_ReplicaSet_To_extensions_ReplicaSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in *ReplicaSetList, out *extensions.ReplicaSetList, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSetList_To_extensions_ReplicaSetList(in, out, s) +} + +func autoConvert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in *extensions.ReplicaSetList, out *ReplicaSetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := Convert_extensions_ReplicaSet_To_v1beta1_ReplicaSet(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in *extensions.ReplicaSetList, out *ReplicaSetList, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSetList_To_v1beta1_ReplicaSetList(in, out, s) +} + +func autoConvert_v1beta1_ReplicaSetSpec_To_extensions_ReplicaSetSpec(in *ReplicaSetSpec, out *extensions.ReplicaSetSpec, s conversion.Scope) error { + if err := api.Convert_Pointer_int32_To_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := Convert_v1beta1_LabelSelector_To_unversioned_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_v1_PodTemplateSpec_To_api_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_extensions_ReplicaSetSpec_To_v1beta1_ReplicaSetSpec(in *extensions.ReplicaSetSpec, out *ReplicaSetSpec, s conversion.Scope) error { + if err := api.Convert_int32_To_Pointer_int32(&in.Replicas, &out.Replicas, s); err != nil { + return err + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := Convert_unversioned_LabelSelector_To_v1beta1_LabelSelector(*in, *out, s); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.Convert_api_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil { + return err + } + return nil +} + +func autoConvert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in *ReplicaSetStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in *ReplicaSetStatus, out *extensions.ReplicaSetStatus, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicaSetStatus_To_extensions_ReplicaSetStatus(in, out, s) +} + +func autoConvert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in *extensions.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil +} + +func Convert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in *extensions.ReplicaSetStatus, out *ReplicaSetStatus, s conversion.Scope) error { + return autoConvert_extensions_ReplicaSetStatus_To_v1beta1_ReplicaSetStatus(in, out, s) +} + +func autoConvert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in *ReplicationControllerDummy, out *extensions.ReplicationControllerDummy, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in *ReplicationControllerDummy, out *extensions.ReplicationControllerDummy, s conversion.Scope) error { + return autoConvert_v1beta1_ReplicationControllerDummy_To_extensions_ReplicationControllerDummy(in, out, s) +} + +func autoConvert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in *extensions.ReplicationControllerDummy, out *ReplicationControllerDummy, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in *extensions.ReplicationControllerDummy, out *ReplicationControllerDummy, s conversion.Scope) error { + return autoConvert_extensions_ReplicationControllerDummy_To_v1beta1_ReplicationControllerDummy(in, out, s) +} + +func autoConvert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in *RollbackConfig, out *extensions.RollbackConfig, s conversion.Scope) error { + out.Revision = in.Revision + return nil +} + +func Convert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in *RollbackConfig, out *extensions.RollbackConfig, s conversion.Scope) error { + return autoConvert_v1beta1_RollbackConfig_To_extensions_RollbackConfig(in, out, s) +} + +func autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in *extensions.RollbackConfig, out *RollbackConfig, s conversion.Scope) error { + out.Revision = in.Revision + return nil +} + +func Convert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in *extensions.RollbackConfig, out *RollbackConfig, s conversion.Scope) error { + return autoConvert_extensions_RollbackConfig_To_v1beta1_RollbackConfig(in, out, s) +} + +func autoConvert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployment(in *RollingUpdateDeployment, out *extensions.RollingUpdateDeployment, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/util/intstr.IntOrString vs k8s.io/kubernetes/pkg/util/intstr.IntOrString) + // WARNING: in.MaxSurge requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/util/intstr.IntOrString vs k8s.io/kubernetes/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployment(in *extensions.RollingUpdateDeployment, out *RollingUpdateDeployment, s conversion.Scope) error { + // WARNING: in.MaxUnavailable requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/util/intstr.IntOrString vs *k8s.io/kubernetes/pkg/util/intstr.IntOrString) + // WARNING: in.MaxSurge requires manual conversion: inconvertible types (k8s.io/kubernetes/pkg/util/intstr.IntOrString vs *k8s.io/kubernetes/pkg/util/intstr.IntOrString) + return nil +} + +func autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.RunAsUserStrategy(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]extensions.IDRange, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IDRange_To_extensions_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in *RunAsUserStrategyOptions, out *extensions.RunAsUserStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_RunAsUserStrategyOptions_To_extensions_RunAsUserStrategyOptions(in, out, s) +} + +func autoConvert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in *extensions.RunAsUserStrategyOptions, out *RunAsUserStrategyOptions, s conversion.Scope) error { + out.Rule = RunAsUserStrategy(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + if err := Convert_extensions_IDRange_To_v1beta1_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in *extensions.RunAsUserStrategyOptions, out *RunAsUserStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_RunAsUserStrategyOptions_To_v1beta1_RunAsUserStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in *SELinuxStrategyOptions, out *extensions.SELinuxStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.SELinuxStrategy(in.Rule) + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api.SELinuxOptions) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + return nil +} + +func Convert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in *SELinuxStrategyOptions, out *extensions.SELinuxStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_SELinuxStrategyOptions_To_extensions_SELinuxStrategyOptions(in, out, s) +} + +func autoConvert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in *extensions.SELinuxStrategyOptions, out *SELinuxStrategyOptions, s conversion.Scope) error { + out.Rule = SELinuxStrategy(in.Rule) + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(v1.SELinuxOptions) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.SELinuxOptions = nil + } + return nil +} + +func Convert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in *extensions.SELinuxStrategyOptions, out *SELinuxStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_SELinuxStrategyOptions_To_v1beta1_SELinuxStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_Scale_To_extensions_Scale(in *Scale, out *extensions.Scale, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_Scale_To_extensions_Scale(in *Scale, out *extensions.Scale, s conversion.Scope) error { + return autoConvert_v1beta1_Scale_To_extensions_Scale(in, out, s) +} + +func autoConvert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *Scale, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_Scale_To_v1beta1_Scale(in *extensions.Scale, out *Scale, s conversion.Scope) error { + return autoConvert_extensions_Scale_To_v1beta1_Scale(in, out, s) +} + +func autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +func Convert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in *ScaleSpec, out *extensions.ScaleSpec, s conversion.Scope) error { + return autoConvert_v1beta1_ScaleSpec_To_extensions_ScaleSpec(in, out, s) +} + +func autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + out.Replicas = in.Replicas + return nil +} + +func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec, out *ScaleSpec, s conversion.Scope) error { + return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s) +} + +func autoConvert_v1beta1_ScaleStatus_To_extensions_ScaleStatus(in *ScaleStatus, out *extensions.ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + // WARNING: in.Selector requires manual conversion: inconvertible types (map[string]string vs *k8s.io/kubernetes/pkg/api/unversioned.LabelSelector) + // WARNING: in.TargetSelector requires manual conversion: does not exist in peer-type + return nil +} + +func autoConvert_extensions_ScaleStatus_To_v1beta1_ScaleStatus(in *extensions.ScaleStatus, out *ScaleStatus, s conversion.Scope) error { + out.Replicas = in.Replicas + // WARNING: in.Selector requires manual conversion: inconvertible types (*k8s.io/kubernetes/pkg/api/unversioned.LabelSelector vs map[string]string) + return nil +} + +func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error { + out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]extensions.IDRange, len(*in)) + for i := range *in { + if err := Convert_v1beta1_IDRange_To_extensions_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error { + return autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in, out, s) +} + +func autoConvert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in *extensions.SupplementalGroupsStrategyOptions, out *SupplementalGroupsStrategyOptions, s conversion.Scope) error { + out.Rule = SupplementalGroupsStrategyType(in.Rule) + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + if err := Convert_extensions_IDRange_To_v1beta1_IDRange(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Ranges = nil + } + return nil +} + +func Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in *extensions.SupplementalGroupsStrategyOptions, out *SupplementalGroupsStrategyOptions, s conversion.Scope) error { + return autoConvert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in *ThirdPartyResource, out *extensions.ThirdPartyResource, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + out.Description = in.Description + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]extensions.APIVersion, len(*in)) + for i := range *in { + if err := Convert_v1beta1_APIVersion_To_extensions_APIVersion(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Versions = nil + } + return nil +} + +func Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in *ThirdPartyResource, out *extensions.ThirdPartyResource, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in *extensions.ThirdPartyResource, out *ThirdPartyResource, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + out.Description = in.Description + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + for i := range *in { + if err := Convert_extensions_APIVersion_To_v1beta1_APIVersion(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Versions = nil + } + return nil +} + +func Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in *extensions.ThirdPartyResource, out *ThirdPartyResource, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in *ThirdPartyResourceData, out *extensions.ThirdPartyResourceData, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Data, &out.Data, s); err != nil { + return err + } + return nil +} + +func Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in *ThirdPartyResourceData, out *extensions.ThirdPartyResourceData, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in *extensions.ThirdPartyResourceData, out *ThirdPartyResourceData, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := conversion.Convert_Slice_byte_To_Slice_byte(&in.Data, &out.Data, s); err != nil { + return err + } + return nil +} + +func Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in *extensions.ThirdPartyResourceData, out *ThirdPartyResourceData, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in *ThirdPartyResourceDataList, out *extensions.ThirdPartyResourceDataList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := Convert_v1beta1_ThirdPartyResourceData_To_extensions_ThirdPartyResourceData(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in *ThirdPartyResourceDataList, out *extensions.ThirdPartyResourceDataList, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceDataList_To_extensions_ThirdPartyResourceDataList(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in *extensions.ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := Convert_extensions_ThirdPartyResourceData_To_v1beta1_ThirdPartyResourceData(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in *extensions.ThirdPartyResourceDataList, out *ThirdPartyResourceDataList, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceDataList_To_v1beta1_ThirdPartyResourceDataList(in, out, s) +} + +func autoConvert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in *ThirdPartyResourceList, out *extensions.ThirdPartyResourceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]extensions.ThirdPartyResource, len(*in)) + for i := range *in { + if err := Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in *ThirdPartyResourceList, out *extensions.ThirdPartyResourceList, s conversion.Scope) error { + return autoConvert_v1beta1_ThirdPartyResourceList_To_extensions_ThirdPartyResourceList(in, out, s) +} + +func autoConvert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in *extensions.ThirdPartyResourceList, out *ThirdPartyResourceList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResource, len(*in)) + for i := range *in { + if err := Convert_extensions_ThirdPartyResource_To_v1beta1_ThirdPartyResource(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in *extensions.ThirdPartyResourceList, out *ThirdPartyResourceList, s conversion.Scope) error { + return autoConvert_extensions_ThirdPartyResourceList_To_v1beta1_ThirdPartyResourceList(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..614d0d6c1d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,1451 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + intstr "k8s.io/client-go/1.5/pkg/util/intstr" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_APIVersion, InType: reflect.TypeOf(&APIVersion{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CPUTargetUtilization, InType: reflect.TypeOf(&CPUTargetUtilization{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricCurrentStatus, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricCurrentStatusList, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricTarget, InType: reflect.TypeOf(&CustomMetricTarget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_CustomMetricTargetList, InType: reflect.TypeOf(&CustomMetricTargetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSet, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetList, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetSpec, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DaemonSetStatus, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Deployment, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentList, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentRollback, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentSpec, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStatus, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_DeploymentStrategy, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ExportOptions, InType: reflect.TypeOf(&ExportOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_FSGroupStrategyOptions, InType: reflect.TypeOf(&FSGroupStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HTTPIngressPath, InType: reflect.TypeOf(&HTTPIngressPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HTTPIngressRuleValue, InType: reflect.TypeOf(&HTTPIngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HorizontalPodAutoscaler, InType: reflect.TypeOf(&HorizontalPodAutoscaler{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HorizontalPodAutoscalerList, InType: reflect.TypeOf(&HorizontalPodAutoscalerList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HorizontalPodAutoscalerSpec, InType: reflect.TypeOf(&HorizontalPodAutoscalerSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HorizontalPodAutoscalerStatus, InType: reflect.TypeOf(&HorizontalPodAutoscalerStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_HostPortRange, InType: reflect.TypeOf(&HostPortRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IDRange, InType: reflect.TypeOf(&IDRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Ingress, InType: reflect.TypeOf(&Ingress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressBackend, InType: reflect.TypeOf(&IngressBackend{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressList, InType: reflect.TypeOf(&IngressList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressRule, InType: reflect.TypeOf(&IngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressRuleValue, InType: reflect.TypeOf(&IngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressSpec, InType: reflect.TypeOf(&IngressSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressStatus, InType: reflect.TypeOf(&IngressStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_IngressTLS, InType: reflect.TypeOf(&IngressTLS{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Job, InType: reflect.TypeOf(&Job{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_JobCondition, InType: reflect.TypeOf(&JobCondition{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_JobList, InType: reflect.TypeOf(&JobList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_JobSpec, InType: reflect.TypeOf(&JobSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_JobStatus, InType: reflect.TypeOf(&JobStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_LabelSelector, InType: reflect.TypeOf(&LabelSelector{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_LabelSelectorRequirement, InType: reflect.TypeOf(&LabelSelectorRequirement{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ListOptions, InType: reflect.TypeOf(&ListOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicy, InType: reflect.TypeOf(&PodSecurityPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicyList, InType: reflect.TypeOf(&PodSecurityPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_PodSecurityPolicySpec, InType: reflect.TypeOf(&PodSecurityPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSet, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetList, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetSpec, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicaSetStatus, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ReplicationControllerDummy, InType: reflect.TypeOf(&ReplicationControllerDummy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollbackConfig, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RollingUpdateDeployment, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_RunAsUserStrategyOptions, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SELinuxStrategyOptions, InType: reflect.TypeOf(&SELinuxStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubresourceReference, InType: reflect.TypeOf(&SubresourceReference{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResource, InType: reflect.TypeOf(&ThirdPartyResource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceData, InType: reflect.TypeOf(&ThirdPartyResourceData{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceDataList, InType: reflect.TypeOf(&ThirdPartyResourceDataList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResourceList, InType: reflect.TypeOf(&ThirdPartyResourceList{})}, + ) +} + +func DeepCopy_v1beta1_APIVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersion) + out := out.(*APIVersion) + out.Name = in.Name + return nil + } +} + +func DeepCopy_v1beta1_CPUTargetUtilization(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CPUTargetUtilization) + out := out.(*CPUTargetUtilization) + out.TargetPercentage = in.TargetPercentage + return nil + } +} + +func DeepCopy_v1beta1_CustomMetricCurrentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatus) + out := out.(*CustomMetricCurrentStatus) + out.Name = in.Name + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +func DeepCopy_v1beta1_CustomMetricCurrentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatusList) + out := out.(*CustomMetricCurrentStatusList) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_CustomMetricTarget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTarget) + out := out.(*CustomMetricTarget) + out.Name = in.Name + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +func DeepCopy_v1beta1_CustomMetricTargetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTargetList) + out := out.(*CustomMetricTargetList) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_CustomMetricTarget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_DaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSet) + out := out.(*DaemonSet) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DaemonSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_DaemonSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetList) + out := out.(*DaemonSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_DaemonSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_DaemonSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetSpec) + out := out.(*DaemonSetSpec) + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_DaemonSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetStatus) + out := out.(*DaemonSetStatus) + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + return nil + } +} + +func DeepCopy_v1beta1_Deployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Deployment) + out := out.(*Deployment) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_DeploymentList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentList) + out := out.(*DeploymentList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Deployment(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_DeploymentRollback(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentRollback) + out := out.(*DeploymentRollback) + out.TypeMeta = in.TypeMeta + out.Name = in.Name + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.UpdatedAnnotations = nil + } + out.RollbackTo = in.RollbackTo + return nil + } +} + +func DeepCopy_v1beta1_DeploymentSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentSpec) + out := out.(*DeploymentSpec) + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } else { + out.Replicas = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_DeploymentStrategy(&in.Strategy, &out.Strategy, c); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } else { + out.RevisionHistoryLimit = nil + } + out.Paused = in.Paused + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + **out = **in + } else { + out.RollbackTo = nil + } + return nil + } +} + +func DeepCopy_v1beta1_DeploymentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStatus) + out := out.(*DeploymentStatus) + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + return nil + } +} + +func DeepCopy_v1beta1_DeploymentStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStrategy) + out := out.(*DeploymentStrategy) + out.Type = in.Type + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + if err := DeepCopy_v1beta1_RollingUpdateDeployment(*in, *out, c); err != nil { + return err + } + } else { + out.RollingUpdate = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ExportOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ExportOptions) + out := out.(*ExportOptions) + out.TypeMeta = in.TypeMeta + out.Export = in.Export + out.Exact = in.Exact + return nil + } +} + +func DeepCopy_v1beta1_FSGroupStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FSGroupStrategyOptions) + out := out.(*FSGroupStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_v1beta1_HTTPIngressPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressPath) + out := out.(*HTTPIngressPath) + out.Path = in.Path + out.Backend = in.Backend + return nil + } +} + +func DeepCopy_v1beta1_HTTPIngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressRuleValue) + out := out.(*HTTPIngressRuleValue) + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Paths = nil + } + return nil + } +} + +func DeepCopy_v1beta1_HorizontalPodAutoscaler(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscaler) + out := out.(*HorizontalPodAutoscaler) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_HorizontalPodAutoscalerSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_HorizontalPodAutoscalerStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_HorizontalPodAutoscalerList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerList) + out := out.(*HorizontalPodAutoscalerList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]HorizontalPodAutoscaler, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_HorizontalPodAutoscaler(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_HorizontalPodAutoscalerSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerSpec) + out := out.(*HorizontalPodAutoscalerSpec) + out.ScaleRef = in.ScaleRef + if in.MinReplicas != nil { + in, out := &in.MinReplicas, &out.MinReplicas + *out = new(int32) + **out = **in + } else { + out.MinReplicas = nil + } + out.MaxReplicas = in.MaxReplicas + if in.CPUUtilization != nil { + in, out := &in.CPUUtilization, &out.CPUUtilization + *out = new(CPUTargetUtilization) + **out = **in + } else { + out.CPUUtilization = nil + } + return nil + } +} + +func DeepCopy_v1beta1_HorizontalPodAutoscalerStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HorizontalPodAutoscalerStatus) + out := out.(*HorizontalPodAutoscalerStatus) + if in.ObservedGeneration != nil { + in, out := &in.ObservedGeneration, &out.ObservedGeneration + *out = new(int64) + **out = **in + } else { + out.ObservedGeneration = nil + } + if in.LastScaleTime != nil { + in, out := &in.LastScaleTime, &out.LastScaleTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.LastScaleTime = nil + } + out.CurrentReplicas = in.CurrentReplicas + out.DesiredReplicas = in.DesiredReplicas + if in.CurrentCPUUtilizationPercentage != nil { + in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage + *out = new(int32) + **out = **in + } else { + out.CurrentCPUUtilizationPercentage = nil + } + return nil + } +} + +func DeepCopy_v1beta1_HostPortRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPortRange) + out := out.(*HostPortRange) + out.Min = in.Min + out.Max = in.Max + return nil + } +} + +func DeepCopy_v1beta1_IDRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IDRange) + out := out.(*IDRange) + out.Min = in.Min + out.Max = in.Max + return nil + } +} + +func DeepCopy_v1beta1_Ingress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Ingress) + out := out.(*Ingress) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_IngressSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_IngressStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_IngressBackend(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressBackend) + out := out.(*IngressBackend) + out.ServiceName = in.ServiceName + out.ServicePort = in.ServicePort + return nil + } +} + +func DeepCopy_v1beta1_IngressList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressList) + out := out.(*IngressList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Ingress, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Ingress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_IngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRule) + out := out.(*IngressRule) + out.Host = in.Host + if err := DeepCopy_v1beta1_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_IngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRuleValue) + out := out.(*IngressRuleValue) + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(HTTPIngressRuleValue) + if err := DeepCopy_v1beta1_HTTPIngressRuleValue(*in, *out, c); err != nil { + return err + } + } else { + out.HTTP = nil + } + return nil + } +} + +func DeepCopy_v1beta1_IngressSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressSpec) + out := out.(*IngressSpec) + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(IngressBackend) + **out = **in + } else { + out.Backend = nil + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_IngressTLS(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.TLS = nil + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_IngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_v1beta1_IngressStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressStatus) + out := out.(*IngressStatus) + if err := v1.DeepCopy_v1_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_IngressTLS(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressTLS) + out := out.(*IngressTLS) + if in.Hosts != nil { + in, out := &in.Hosts, &out.Hosts + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Hosts = nil + } + out.SecretName = in.SecretName + return nil + } +} + +func DeepCopy_v1beta1_Job(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Job) + out := out.(*Job) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_JobSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_JobStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_JobCondition(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobCondition) + out := out.(*JobCondition) + out.Type = in.Type + out.Status = in.Status + out.LastProbeTime = in.LastProbeTime.DeepCopy() + out.LastTransitionTime = in.LastTransitionTime.DeepCopy() + out.Reason = in.Reason + out.Message = in.Message + return nil + } +} + +func DeepCopy_v1beta1_JobList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobList) + out := out.(*JobList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Job, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_Job(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_JobSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobSpec) + out := out.(*JobSpec) + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } else { + out.Parallelism = nil + } + if in.Completions != nil { + in, out := &in.Completions, &out.Completions + *out = new(int32) + **out = **in + } else { + out.Completions = nil + } + if in.ActiveDeadlineSeconds != nil { + in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds + *out = new(int64) + **out = **in + } else { + out.ActiveDeadlineSeconds = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if in.AutoSelector != nil { + in, out := &in.AutoSelector, &out.AutoSelector + *out = new(bool) + **out = **in + } else { + out.AutoSelector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_JobStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*JobStatus) + out := out.(*JobStatus) + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]JobCondition, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_JobCondition(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Conditions = nil + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.StartTime = nil + } + if in.CompletionTime != nil { + in, out := &in.CompletionTime, &out.CompletionTime + *out = new(unversioned.Time) + **out = (*in).DeepCopy() + } else { + out.CompletionTime = nil + } + out.Active = in.Active + out.Succeeded = in.Succeeded + out.Failed = in.Failed + return nil + } +} + +func DeepCopy_v1beta1_LabelSelector(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelector) + out := out.(*LabelSelector) + if in.MatchLabels != nil { + in, out := &in.MatchLabels, &out.MatchLabels + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.MatchLabels = nil + } + if in.MatchExpressions != nil { + in, out := &in.MatchExpressions, &out.MatchExpressions + *out = make([]LabelSelectorRequirement, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_LabelSelectorRequirement(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.MatchExpressions = nil + } + return nil + } +} + +func DeepCopy_v1beta1_LabelSelectorRequirement(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*LabelSelectorRequirement) + out := out.(*LabelSelectorRequirement) + out.Key = in.Key + out.Operator = in.Operator + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Values = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ListOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ListOptions) + out := out.(*ListOptions) + out.TypeMeta = in.TypeMeta + out.LabelSelector = in.LabelSelector + out.FieldSelector = in.FieldSelector + out.Watch = in.Watch + out.ResourceVersion = in.ResourceVersion + if in.TimeoutSeconds != nil { + in, out := &in.TimeoutSeconds, &out.TimeoutSeconds + *out = new(int64) + **out = **in + } else { + out.TimeoutSeconds = nil + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.From = nil + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(v1.Protocol) + **out = **in + } else { + out.Protocol = nil + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } else { + out.Port = nil + } + return nil + } +} + +func DeepCopy_v1beta1_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + if err := DeepCopy_v1beta1_LabelSelector(&in.PodSelector, &out.PodSelector, c); err != nil { + return err + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil + } +} + +func DeepCopy_v1beta1_PodSecurityPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicy) + out := out.(*PodSecurityPolicy) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_PodSecurityPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_PodSecurityPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicyList) + out := out.(*PodSecurityPolicyList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_PodSecurityPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_PodSecurityPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicySpec) + out := out.(*PodSecurityPolicySpec) + out.Privileged = in.Privileged + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.DefaultAddCapabilities = nil + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.RequiredDropCapabilities = nil + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]v1.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AllowedCapabilities = nil + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Volumes = nil + } + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := DeepCopy_v1beta1_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, c); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil + } +} + +func DeepCopy_v1beta1_ReplicaSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSet) + out := out.(*ReplicaSet) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1beta1_ReplicaSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1beta1_ReplicaSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetList) + out := out.(*ReplicaSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ReplicaSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ReplicaSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetSpec) + out := out.(*ReplicaSetSpec) + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } else { + out.Replicas = nil + } + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(LabelSelector) + if err := DeepCopy_v1beta1_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := v1.DeepCopy_v1_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_ReplicaSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetStatus) + out := out.(*ReplicaSetStatus) + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil + } +} + +func DeepCopy_v1beta1_ReplicationControllerDummy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerDummy) + out := out.(*ReplicationControllerDummy) + out.TypeMeta = in.TypeMeta + return nil + } +} + +func DeepCopy_v1beta1_RollbackConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollbackConfig) + out := out.(*RollbackConfig) + out.Revision = in.Revision + return nil + } +} + +func DeepCopy_v1beta1_RollingUpdateDeployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDeployment) + out := out.(*RollingUpdateDeployment) + if in.MaxUnavailable != nil { + in, out := &in.MaxUnavailable, &out.MaxUnavailable + *out = new(intstr.IntOrString) + **out = **in + } else { + out.MaxUnavailable = nil + } + if in.MaxSurge != nil { + in, out := &in.MaxSurge, &out.MaxSurge + *out = new(intstr.IntOrString) + **out = **in + } else { + out.MaxSurge = nil + } + return nil + } +} + +func DeepCopy_v1beta1_RunAsUserStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RunAsUserStrategyOptions) + out := out.(*RunAsUserStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_v1beta1_SELinuxStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxStrategyOptions) + out := out.(*SELinuxStrategyOptions) + out.Rule = in.Rule + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(v1.SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + return nil + } +} + +func DeepCopy_v1beta1_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_v1beta1_ScaleStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_v1beta1_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + out.Replicas = in.Replicas + return nil + } +} + +func DeepCopy_v1beta1_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Selector = nil + } + out.TargetSelector = in.TargetSelector + return nil + } +} + +func DeepCopy_v1beta1_SubresourceReference(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SubresourceReference) + out := out.(*SubresourceReference) + out.Kind = in.Kind + out.Name = in.Name + out.APIVersion = in.APIVersion + out.Subresource = in.Subresource + return nil + } +} + +func DeepCopy_v1beta1_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SupplementalGroupsStrategyOptions) + out := out.(*SupplementalGroupsStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ThirdPartyResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResource) + out := out.(*ThirdPartyResource) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Description = in.Description + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Versions = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ThirdPartyResourceData(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceData) + out := out.(*ThirdPartyResourceData) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ThirdPartyResourceDataList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceDataList) + out := out.(*ThirdPartyResourceDataList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ThirdPartyResourceData(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1beta1_ThirdPartyResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceList) + out := out.(*ThirdPartyResourceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResource, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_ThirdPartyResource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/zz_generated.deepcopy.go new file mode 100644 index 0000000000..4f5b015afc --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/extensions/zz_generated.deepcopy.go @@ -0,0 +1,1081 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package extensions + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + intstr "k8s.io/client-go/1.5/pkg/util/intstr" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_APIVersion, InType: reflect.TypeOf(&APIVersion{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricCurrentStatus, InType: reflect.TypeOf(&CustomMetricCurrentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricCurrentStatusList, InType: reflect.TypeOf(&CustomMetricCurrentStatusList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricTarget, InType: reflect.TypeOf(&CustomMetricTarget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_CustomMetricTargetList, InType: reflect.TypeOf(&CustomMetricTargetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSet, InType: reflect.TypeOf(&DaemonSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetList, InType: reflect.TypeOf(&DaemonSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetSpec, InType: reflect.TypeOf(&DaemonSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DaemonSetStatus, InType: reflect.TypeOf(&DaemonSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Deployment, InType: reflect.TypeOf(&Deployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentList, InType: reflect.TypeOf(&DeploymentList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentRollback, InType: reflect.TypeOf(&DeploymentRollback{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentSpec, InType: reflect.TypeOf(&DeploymentSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentStatus, InType: reflect.TypeOf(&DeploymentStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_DeploymentStrategy, InType: reflect.TypeOf(&DeploymentStrategy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_FSGroupStrategyOptions, InType: reflect.TypeOf(&FSGroupStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HTTPIngressPath, InType: reflect.TypeOf(&HTTPIngressPath{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HTTPIngressRuleValue, InType: reflect.TypeOf(&HTTPIngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_HostPortRange, InType: reflect.TypeOf(&HostPortRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IDRange, InType: reflect.TypeOf(&IDRange{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Ingress, InType: reflect.TypeOf(&Ingress{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressBackend, InType: reflect.TypeOf(&IngressBackend{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressList, InType: reflect.TypeOf(&IngressList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressRule, InType: reflect.TypeOf(&IngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressRuleValue, InType: reflect.TypeOf(&IngressRuleValue{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressSpec, InType: reflect.TypeOf(&IngressSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressStatus, InType: reflect.TypeOf(&IngressStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_IngressTLS, InType: reflect.TypeOf(&IngressTLS{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicy, InType: reflect.TypeOf(&NetworkPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyIngressRule, InType: reflect.TypeOf(&NetworkPolicyIngressRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyList, InType: reflect.TypeOf(&NetworkPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyPeer, InType: reflect.TypeOf(&NetworkPolicyPeer{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicyPort, InType: reflect.TypeOf(&NetworkPolicyPort{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_NetworkPolicySpec, InType: reflect.TypeOf(&NetworkPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicy, InType: reflect.TypeOf(&PodSecurityPolicy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicyList, InType: reflect.TypeOf(&PodSecurityPolicyList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_PodSecurityPolicySpec, InType: reflect.TypeOf(&PodSecurityPolicySpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSet, InType: reflect.TypeOf(&ReplicaSet{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetList, InType: reflect.TypeOf(&ReplicaSetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetSpec, InType: reflect.TypeOf(&ReplicaSetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicaSetStatus, InType: reflect.TypeOf(&ReplicaSetStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ReplicationControllerDummy, InType: reflect.TypeOf(&ReplicationControllerDummy{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RollbackConfig, InType: reflect.TypeOf(&RollbackConfig{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RollingUpdateDeployment, InType: reflect.TypeOf(&RollingUpdateDeployment{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_RunAsUserStrategyOptions, InType: reflect.TypeOf(&RunAsUserStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SELinuxStrategyOptions, InType: reflect.TypeOf(&SELinuxStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Scale, InType: reflect.TypeOf(&Scale{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleSpec, InType: reflect.TypeOf(&ScaleSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleStatus, InType: reflect.TypeOf(&ScaleStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(&SupplementalGroupsStrategyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResource, InType: reflect.TypeOf(&ThirdPartyResource{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceData, InType: reflect.TypeOf(&ThirdPartyResourceData{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceDataList, InType: reflect.TypeOf(&ThirdPartyResourceDataList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceList, InType: reflect.TypeOf(&ThirdPartyResourceList{})}, + ) +} + +func DeepCopy_extensions_APIVersion(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*APIVersion) + out := out.(*APIVersion) + out.Name = in.Name + return nil + } +} + +func DeepCopy_extensions_CustomMetricCurrentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatus) + out := out.(*CustomMetricCurrentStatus) + out.Name = in.Name + out.CurrentValue = in.CurrentValue.DeepCopy() + return nil + } +} + +func DeepCopy_extensions_CustomMetricCurrentStatusList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricCurrentStatusList) + out := out.(*CustomMetricCurrentStatusList) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricCurrentStatus, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_CustomMetricCurrentStatus(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_CustomMetricTarget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTarget) + out := out.(*CustomMetricTarget) + out.Name = in.Name + out.TargetValue = in.TargetValue.DeepCopy() + return nil + } +} + +func DeepCopy_extensions_CustomMetricTargetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*CustomMetricTargetList) + out := out.(*CustomMetricTargetList) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]CustomMetricTarget, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_CustomMetricTarget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_DaemonSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSet) + out := out.(*DaemonSet) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_DaemonSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_extensions_DaemonSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetList) + out := out.(*DaemonSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DaemonSet, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_DaemonSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_DaemonSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetSpec) + out := out.(*DaemonSetSpec) + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_DaemonSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DaemonSetStatus) + out := out.(*DaemonSetStatus) + out.CurrentNumberScheduled = in.CurrentNumberScheduled + out.NumberMisscheduled = in.NumberMisscheduled + out.DesiredNumberScheduled = in.DesiredNumberScheduled + return nil + } +} + +func DeepCopy_extensions_Deployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Deployment) + out := out.(*Deployment) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_DeploymentSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_extensions_DeploymentList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentList) + out := out.(*DeploymentList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Deployment, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_Deployment(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_DeploymentRollback(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentRollback) + out := out.(*DeploymentRollback) + out.TypeMeta = in.TypeMeta + out.Name = in.Name + if in.UpdatedAnnotations != nil { + in, out := &in.UpdatedAnnotations, &out.UpdatedAnnotations + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.UpdatedAnnotations = nil + } + out.RollbackTo = in.RollbackTo + return nil + } +} + +func DeepCopy_extensions_DeploymentSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentSpec) + out := out.(*DeploymentSpec) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + if err := DeepCopy_extensions_DeploymentStrategy(&in.Strategy, &out.Strategy, c); err != nil { + return err + } + out.MinReadySeconds = in.MinReadySeconds + if in.RevisionHistoryLimit != nil { + in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit + *out = new(int32) + **out = **in + } else { + out.RevisionHistoryLimit = nil + } + out.Paused = in.Paused + if in.RollbackTo != nil { + in, out := &in.RollbackTo, &out.RollbackTo + *out = new(RollbackConfig) + **out = **in + } else { + out.RollbackTo = nil + } + return nil + } +} + +func DeepCopy_extensions_DeploymentStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStatus) + out := out.(*DeploymentStatus) + out.ObservedGeneration = in.ObservedGeneration + out.Replicas = in.Replicas + out.UpdatedReplicas = in.UpdatedReplicas + out.AvailableReplicas = in.AvailableReplicas + out.UnavailableReplicas = in.UnavailableReplicas + return nil + } +} + +func DeepCopy_extensions_DeploymentStrategy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*DeploymentStrategy) + out := out.(*DeploymentStrategy) + out.Type = in.Type + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdateDeployment) + **out = **in + } else { + out.RollingUpdate = nil + } + return nil + } +} + +func DeepCopy_extensions_FSGroupStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*FSGroupStrategyOptions) + out := out.(*FSGroupStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_extensions_HTTPIngressPath(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressPath) + out := out.(*HTTPIngressPath) + out.Path = in.Path + out.Backend = in.Backend + return nil + } +} + +func DeepCopy_extensions_HTTPIngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HTTPIngressRuleValue) + out := out.(*HTTPIngressRuleValue) + if in.Paths != nil { + in, out := &in.Paths, &out.Paths + *out = make([]HTTPIngressPath, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Paths = nil + } + return nil + } +} + +func DeepCopy_extensions_HostPortRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*HostPortRange) + out := out.(*HostPortRange) + out.Min = in.Min + out.Max = in.Max + return nil + } +} + +func DeepCopy_extensions_IDRange(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IDRange) + out := out.(*IDRange) + out.Min = in.Min + out.Max = in.Max + return nil + } +} + +func DeepCopy_extensions_Ingress(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Ingress) + out := out.(*Ingress) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_IngressSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + if err := DeepCopy_extensions_IngressStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_IngressBackend(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressBackend) + out := out.(*IngressBackend) + out.ServiceName = in.ServiceName + out.ServicePort = in.ServicePort + return nil + } +} + +func DeepCopy_extensions_IngressList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressList) + out := out.(*IngressList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Ingress, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_Ingress(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_IngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRule) + out := out.(*IngressRule) + out.Host = in.Host + if err := DeepCopy_extensions_IngressRuleValue(&in.IngressRuleValue, &out.IngressRuleValue, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_IngressRuleValue(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressRuleValue) + out := out.(*IngressRuleValue) + if in.HTTP != nil { + in, out := &in.HTTP, &out.HTTP + *out = new(HTTPIngressRuleValue) + if err := DeepCopy_extensions_HTTPIngressRuleValue(*in, *out, c); err != nil { + return err + } + } else { + out.HTTP = nil + } + return nil + } +} + +func DeepCopy_extensions_IngressSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressSpec) + out := out.(*IngressSpec) + if in.Backend != nil { + in, out := &in.Backend, &out.Backend + *out = new(IngressBackend) + **out = **in + } else { + out.Backend = nil + } + if in.TLS != nil { + in, out := &in.TLS, &out.TLS + *out = make([]IngressTLS, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_IngressTLS(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.TLS = nil + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]IngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_IngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_extensions_IngressStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressStatus) + out := out.(*IngressStatus) + if err := api.DeepCopy_api_LoadBalancerStatus(&in.LoadBalancer, &out.LoadBalancer, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_IngressTLS(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*IngressTLS) + out := out.(*IngressTLS) + if in.Hosts != nil { + in, out := &in.Hosts, &out.Hosts + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Hosts = nil + } + out.SecretName = in.SecretName + return nil + } +} + +func DeepCopy_extensions_NetworkPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicy) + out := out.(*NetworkPolicy) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_NetworkPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_NetworkPolicyIngressRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyIngressRule) + out := out.(*NetworkPolicyIngressRule) + if in.Ports != nil { + in, out := &in.Ports, &out.Ports + *out = make([]NetworkPolicyPort, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyPort(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Ports = nil + } + if in.From != nil { + in, out := &in.From, &out.From + *out = make([]NetworkPolicyPeer, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyPeer(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.From = nil + } + return nil + } +} + +func DeepCopy_extensions_NetworkPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyList) + out := out.(*NetworkPolicyList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]NetworkPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_NetworkPolicyPeer(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPeer) + out := out.(*NetworkPolicyPeer) + if in.PodSelector != nil { + in, out := &in.PodSelector, &out.PodSelector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.PodSelector = nil + } + if in.NamespaceSelector != nil { + in, out := &in.NamespaceSelector, &out.NamespaceSelector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.NamespaceSelector = nil + } + return nil + } +} + +func DeepCopy_extensions_NetworkPolicyPort(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicyPort) + out := out.(*NetworkPolicyPort) + if in.Protocol != nil { + in, out := &in.Protocol, &out.Protocol + *out = new(api.Protocol) + **out = **in + } else { + out.Protocol = nil + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(intstr.IntOrString) + **out = **in + } else { + out.Port = nil + } + return nil + } +} + +func DeepCopy_extensions_NetworkPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NetworkPolicySpec) + out := out.(*NetworkPolicySpec) + if err := unversioned.DeepCopy_unversioned_LabelSelector(&in.PodSelector, &out.PodSelector, c); err != nil { + return err + } + if in.Ingress != nil { + in, out := &in.Ingress, &out.Ingress + *out = make([]NetworkPolicyIngressRule, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_NetworkPolicyIngressRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Ingress = nil + } + return nil + } +} + +func DeepCopy_extensions_PodSecurityPolicy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicy) + out := out.(*PodSecurityPolicy) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_PodSecurityPolicySpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_PodSecurityPolicyList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicyList) + out := out.(*PodSecurityPolicyList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodSecurityPolicy, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_PodSecurityPolicy(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_PodSecurityPolicySpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodSecurityPolicySpec) + out := out.(*PodSecurityPolicySpec) + out.Privileged = in.Privileged + if in.DefaultAddCapabilities != nil { + in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.DefaultAddCapabilities = nil + } + if in.RequiredDropCapabilities != nil { + in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.RequiredDropCapabilities = nil + } + if in.AllowedCapabilities != nil { + in, out := &in.AllowedCapabilities, &out.AllowedCapabilities + *out = make([]api.Capability, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.AllowedCapabilities = nil + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make([]FSType, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Volumes = nil + } + out.HostNetwork = in.HostNetwork + if in.HostPorts != nil { + in, out := &in.HostPorts, &out.HostPorts + *out = make([]HostPortRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.HostPorts = nil + } + out.HostPID = in.HostPID + out.HostIPC = in.HostIPC + if err := DeepCopy_extensions_SELinuxStrategyOptions(&in.SELinux, &out.SELinux, c); err != nil { + return err + } + if err := DeepCopy_extensions_RunAsUserStrategyOptions(&in.RunAsUser, &out.RunAsUser, c); err != nil { + return err + } + if err := DeepCopy_extensions_SupplementalGroupsStrategyOptions(&in.SupplementalGroups, &out.SupplementalGroups, c); err != nil { + return err + } + if err := DeepCopy_extensions_FSGroupStrategyOptions(&in.FSGroup, &out.FSGroup, c); err != nil { + return err + } + out.ReadOnlyRootFilesystem = in.ReadOnlyRootFilesystem + return nil + } +} + +func DeepCopy_extensions_ReplicaSet(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSet) + out := out.(*ReplicaSet) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_extensions_ReplicaSetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_extensions_ReplicaSetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetList) + out := out.(*ReplicaSetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ReplicaSet, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ReplicaSet(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_ReplicaSetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetSpec) + out := out.(*ReplicaSetSpec) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + if err := api.DeepCopy_api_PodTemplateSpec(&in.Template, &out.Template, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_ReplicaSetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicaSetStatus) + out := out.(*ReplicaSetStatus) + out.Replicas = in.Replicas + out.FullyLabeledReplicas = in.FullyLabeledReplicas + out.ReadyReplicas = in.ReadyReplicas + out.ObservedGeneration = in.ObservedGeneration + return nil + } +} + +func DeepCopy_extensions_ReplicationControllerDummy(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ReplicationControllerDummy) + out := out.(*ReplicationControllerDummy) + out.TypeMeta = in.TypeMeta + return nil + } +} + +func DeepCopy_extensions_RollbackConfig(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollbackConfig) + out := out.(*RollbackConfig) + out.Revision = in.Revision + return nil + } +} + +func DeepCopy_extensions_RollingUpdateDeployment(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RollingUpdateDeployment) + out := out.(*RollingUpdateDeployment) + out.MaxUnavailable = in.MaxUnavailable + out.MaxSurge = in.MaxSurge + return nil + } +} + +func DeepCopy_extensions_RunAsUserStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RunAsUserStrategyOptions) + out := out.(*RunAsUserStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_extensions_SELinuxStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SELinuxStrategyOptions) + out := out.(*SELinuxStrategyOptions) + out.Rule = in.Rule + if in.SELinuxOptions != nil { + in, out := &in.SELinuxOptions, &out.SELinuxOptions + *out = new(api.SELinuxOptions) + **out = **in + } else { + out.SELinuxOptions = nil + } + return nil + } +} + +func DeepCopy_extensions_Scale(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Scale) + out := out.(*Scale) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Spec = in.Spec + if err := DeepCopy_extensions_ScaleStatus(&in.Status, &out.Status, c); err != nil { + return err + } + return nil + } +} + +func DeepCopy_extensions_ScaleSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleSpec) + out := out.(*ScaleSpec) + out.Replicas = in.Replicas + return nil + } +} + +func DeepCopy_extensions_ScaleStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ScaleStatus) + out := out.(*ScaleStatus) + out.Replicas = in.Replicas + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + return nil + } +} + +func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*SupplementalGroupsStrategyOptions) + out := out.(*SupplementalGroupsStrategyOptions) + out.Rule = in.Rule + if in.Ranges != nil { + in, out := &in.Ranges, &out.Ranges + *out = make([]IDRange, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Ranges = nil + } + return nil + } +} + +func DeepCopy_extensions_ThirdPartyResource(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResource) + out := out.(*ThirdPartyResource) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Description = in.Description + if in.Versions != nil { + in, out := &in.Versions, &out.Versions + *out = make([]APIVersion, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Versions = nil + } + return nil + } +} + +func DeepCopy_extensions_ThirdPartyResourceData(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceData) + out := out.(*ThirdPartyResourceData) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Data != nil { + in, out := &in.Data, &out.Data + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Data = nil + } + return nil + } +} + +func DeepCopy_extensions_ThirdPartyResourceDataList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceDataList) + out := out.(*ThirdPartyResourceDataList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResourceData, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ThirdPartyResourceData(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_extensions_ThirdPartyResourceList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ThirdPartyResourceList) + out := out.(*ThirdPartyResourceList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ThirdPartyResource, len(*in)) + for i := range *in { + if err := DeepCopy_extensions_ThirdPartyResource(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/doc.go new file mode 100644 index 0000000000..6536d5c964 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +package policy diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/install/install.go new file mode 100644 index 0000000000..26d374d462 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/install/install.go @@ -0,0 +1,41 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/policy" + "k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: policy.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/policy", + AddInternalObjectsToScheme: policy.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/register.go new file mode 100644 index 0000000000..bb0f6c63e5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/register.go @@ -0,0 +1,56 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package policy + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "policy" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + // TODO this gets cleaned up when the types are fixed + scheme.AddKnownTypes(SchemeGroupVersion, + &PodDisruptionBudget{}, + &PodDisruptionBudgetList{}, + &api.ListOptions{}, + &Eviction{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.generated.go new file mode 100644 index 0000000000..9afa1aa7be --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.generated.go @@ -0,0 +1,1752 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package policy + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg3_api "k8s.io/client-go/1.5/pkg/api" + pkg2_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg4_types "k8s.io/client-go/1.5/pkg/types" + pkg1_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg3_api.ObjectMeta + var v1 pkg2_unversioned.LabelSelector + var v2 pkg4_types.UID + var v3 pkg1_intstr.IntOrString + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *PodDisruptionBudgetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + yyq2[1] = x.Selector != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.MinAvailable + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4) + } else { + z.EncFallback(yy4) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minAvailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.MinAvailable + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(yy6) + } else { + z.EncFallback(yy6) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct12 := r.ContainerType() + if yyct12 == codecSelferValueTypeMap1234 { + yyl12 := r.ReadMapStart() + if yyl12 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl12, d) + } + } else if yyct12 == codecSelferValueTypeArray1234 { + yyl12 := r.ReadArrayStart() + if yyl12 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl12, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys13Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys13Slc + var yyhl13 bool = l >= 0 + for yyj13 := 0; ; yyj13++ { + if yyhl13 { + if yyj13 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys13Slc = r.DecodeBytes(yys13Slc, true, true) + yys13 := string(yys13Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys13 { + case "minAvailable": + if r.TryDecodeAsNil() { + x.MinAvailable = pkg1_intstr.IntOrString{} + } else { + yyv14 := &x.MinAvailable + yym15 := z.DecBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.DecExt(yyv14) { + } else if !yym15 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv14) + } else { + z.DecFallback(yyv14, false) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys13) + } // end switch yys13 + } // end for yyj13 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinAvailable = pkg1_intstr.IntOrString{} + } else { + yyv19 := &x.MinAvailable + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep24 := !z.EncBinary() + yy2arr24 := z.EncBasicHandle().StructToArray + var yyq24 [4]bool + _, _, _ = yysep24, yyq24, yy2arr24 + const yyr24 bool = false + var yynn24 int + if yyr24 || yy2arr24 { + r.EncodeArrayStart(4) + } else { + yynn24 = 4 + for _, b := range yyq24 { + if b { + yynn24++ + } + } + r.EncodeMapStart(yynn24) + yynn24 = 0 + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(x.PodDisruptionAllowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("disruptionAllowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym27 := z.EncBinary() + _ = yym27 + if false { + } else { + r.EncodeBool(bool(x.PodDisruptionAllowed)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("expectedPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym37 := z.DecBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct38 := r.ContainerType() + if yyct38 == codecSelferValueTypeMap1234 { + yyl38 := r.ReadMapStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl38, d) + } + } else if yyct38 == codecSelferValueTypeArray1234 { + yyl38 := r.ReadArrayStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl38, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys39Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys39Slc + var yyhl39 bool = l >= 0 + for yyj39 := 0; ; yyj39++ { + if yyhl39 { + if yyj39 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys39Slc = r.DecodeBytes(yys39Slc, true, true) + yys39 := string(yys39Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys39 { + case "disruptionAllowed": + if r.TryDecodeAsNil() { + x.PodDisruptionAllowed = false + } else { + x.PodDisruptionAllowed = bool(r.DecodeBool()) + } + case "currentHealthy": + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + x.CurrentHealthy = int32(r.DecodeInt(32)) + } + case "desiredHealthy": + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + x.DesiredHealthy = int32(r.DecodeInt(32)) + } + case "expectedPods": + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + x.ExpectedPods = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys39) + } // end switch yys39 + } // end for yyj39 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj44 int + var yyb44 bool + var yyhl44 bool = l >= 0 + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodDisruptionAllowed = false + } else { + x.PodDisruptionAllowed = bool(r.DecodeBool()) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + x.CurrentHealthy = int32(r.DecodeInt(32)) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + x.DesiredHealthy = int32(r.DecodeInt(32)) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + x.ExpectedPods = int32(r.DecodeInt(32)) + } + for { + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj44-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep50 := !z.EncBinary() + yy2arr50 := z.EncBasicHandle().StructToArray + var yyq50 [5]bool + _, _, _ = yysep50, yyq50, yy2arr50 + const yyr50 bool = false + yyq50[0] = x.Kind != "" + yyq50[1] = x.APIVersion != "" + yyq50[2] = true + yyq50[3] = true + yyq50[4] = true + var yynn50 int + if yyr50 || yy2arr50 { + r.EncodeArrayStart(5) + } else { + yynn50 = 0 + for _, b := range yyq50 { + if b { + yynn50++ + } + } + r.EncodeMapStart(yynn50) + yynn50 = 0 + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[0] { + yym52 := z.EncBinary() + _ = yym52 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq50[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[1] { + yym55 := z.EncBinary() + _ = yym55 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq50[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym56 := z.EncBinary() + _ = yym56 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[2] { + yy58 := &x.ObjectMeta + yy58.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy59 := &x.ObjectMeta + yy59.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[3] { + yy61 := &x.Spec + yy61.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy62 := &x.Spec + yy62.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[4] { + yy64 := &x.Status + yy64.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy65 := &x.Status + yy65.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym66 := z.DecBinary() + _ = yym66 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct67 := r.ContainerType() + if yyct67 == codecSelferValueTypeMap1234 { + yyl67 := r.ReadMapStart() + if yyl67 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl67, d) + } + } else if yyct67 == codecSelferValueTypeArray1234 { + yyl67 := r.ReadArrayStart() + if yyl67 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl67, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys68Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys68Slc + var yyhl68 bool = l >= 0 + for yyj68 := 0; ; yyj68++ { + if yyhl68 { + if yyj68 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys68Slc = r.DecodeBytes(yys68Slc, true, true) + yys68 := string(yys68Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys68 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_api.ObjectMeta{} + } else { + yyv71 := &x.ObjectMeta + yyv71.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv72 := &x.Spec + yyv72.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv73 := &x.Status + yyv73.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys68) + } // end switch yys68 + } // end for yyj68 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj74 int + var yyb74 bool + var yyhl74 bool = l >= 0 + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_api.ObjectMeta{} + } else { + yyv77 := &x.ObjectMeta + yyv77.CodecDecodeSelf(d) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv78 := &x.Spec + yyv78.CodecDecodeSelf(d) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv79 := &x.Status + yyv79.CodecDecodeSelf(d) + } + for { + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj74-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym80 := z.EncBinary() + _ = yym80 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep81 := !z.EncBinary() + yy2arr81 := z.EncBasicHandle().StructToArray + var yyq81 [4]bool + _, _, _ = yysep81, yyq81, yy2arr81 + const yyr81 bool = false + yyq81[0] = x.Kind != "" + yyq81[1] = x.APIVersion != "" + yyq81[2] = true + var yynn81 int + if yyr81 || yy2arr81 { + r.EncodeArrayStart(4) + } else { + yynn81 = 1 + for _, b := range yyq81 { + if b { + yynn81++ + } + } + r.EncodeMapStart(yynn81) + yynn81 = 0 + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[0] { + yym83 := z.EncBinary() + _ = yym83 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq81[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym84 := z.EncBinary() + _ = yym84 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[1] { + yym86 := z.EncBinary() + _ = yym86 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq81[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym87 := z.EncBinary() + _ = yym87 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[2] { + yy89 := &x.ListMeta + yym90 := z.EncBinary() + _ = yym90 + if false { + } else if z.HasExtensions() && z.EncExt(yy89) { + } else { + z.EncFallback(yy89) + } + } else { + r.EncodeNil() + } + } else { + if yyq81[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy91 := &x.ListMeta + yym92 := z.EncBinary() + _ = yym92 + if false { + } else if z.HasExtensions() && z.EncExt(yy91) { + } else { + z.EncFallback(yy91) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym95 := z.EncBinary() + _ = yym95 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym96 := z.DecBinary() + _ = yym96 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct97 := r.ContainerType() + if yyct97 == codecSelferValueTypeMap1234 { + yyl97 := r.ReadMapStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl97, d) + } + } else if yyct97 == codecSelferValueTypeArray1234 { + yyl97 := r.ReadArrayStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl97, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys98Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys98Slc + var yyhl98 bool = l >= 0 + for yyj98 := 0; ; yyj98++ { + if yyhl98 { + if yyj98 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys98Slc = r.DecodeBytes(yys98Slc, true, true) + yys98 := string(yys98Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys98 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv101 := &x.ListMeta + yym102 := z.DecBinary() + _ = yym102 + if false { + } else if z.HasExtensions() && z.DecExt(yyv101) { + } else { + z.DecFallback(yyv101, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv103 := &x.Items + yym104 := z.DecBinary() + _ = yym104 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv103), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys98) + } // end switch yys98 + } // end for yyj98 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj105 int + var yyb105 bool + var yyhl105 bool = l >= 0 + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv108 := &x.ListMeta + yym109 := z.DecBinary() + _ = yym109 + if false { + } else if z.HasExtensions() && z.DecExt(yyv108) { + } else { + z.DecFallback(yyv108, false) + } + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv110 := &x.Items + yym111 := z.DecBinary() + _ = yym111 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv110), d) + } + } + for { + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj105-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Eviction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym112 := z.EncBinary() + _ = yym112 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep113 := !z.EncBinary() + yy2arr113 := z.EncBasicHandle().StructToArray + var yyq113 [4]bool + _, _, _ = yysep113, yyq113, yy2arr113 + const yyr113 bool = false + yyq113[0] = x.Kind != "" + yyq113[1] = x.APIVersion != "" + yyq113[2] = true + yyq113[3] = x.DeleteOptions != nil + var yynn113 int + if yyr113 || yy2arr113 { + r.EncodeArrayStart(4) + } else { + yynn113 = 0 + for _, b := range yyq113 { + if b { + yynn113++ + } + } + r.EncodeMapStart(yynn113) + yynn113 = 0 + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[0] { + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym116 := z.EncBinary() + _ = yym116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[1] { + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym119 := z.EncBinary() + _ = yym119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[2] { + yy121 := &x.ObjectMeta + yy121.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq113[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy122 := &x.ObjectMeta + yy122.CodecEncodeSelf(e) + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[3] { + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + x.DeleteOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq113[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deleteOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + x.DeleteOptions.CodecEncodeSelf(e) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Eviction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym124 := z.DecBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct125 := r.ContainerType() + if yyct125 == codecSelferValueTypeMap1234 { + yyl125 := r.ReadMapStart() + if yyl125 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl125, d) + } + } else if yyct125 == codecSelferValueTypeArray1234 { + yyl125 := r.ReadArrayStart() + if yyl125 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl125, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Eviction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys126Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys126Slc + var yyhl126 bool = l >= 0 + for yyj126 := 0; ; yyj126++ { + if yyhl126 { + if yyj126 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys126Slc = r.DecodeBytes(yys126Slc, true, true) + yys126 := string(yys126Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys126 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_api.ObjectMeta{} + } else { + yyv129 := &x.ObjectMeta + yyv129.CodecDecodeSelf(d) + } + case "deleteOptions": + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg3_api.DeleteOptions) + } + x.DeleteOptions.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys126) + } // end switch yys126 + } // end for yyj126 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Eviction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj131 int + var yyb131 bool + var yyhl131 bool = l >= 0 + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_api.ObjectMeta{} + } else { + yyv134 := &x.ObjectMeta + yyv134.CodecDecodeSelf(d) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg3_api.DeleteOptions) + } + x.DeleteOptions.CodecDecodeSelf(d) + } + for { + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj131-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv136 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy137 := &yyv136 + yy137.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv138 := *v + yyh138, yyl138 := z.DecSliceHelperStart() + var yyc138 bool + if yyl138 == 0 { + if yyv138 == nil { + yyv138 = []PodDisruptionBudget{} + yyc138 = true + } else if len(yyv138) != 0 { + yyv138 = yyv138[:0] + yyc138 = true + } + } else if yyl138 > 0 { + var yyrr138, yyrl138 int + var yyrt138 bool + if yyl138 > cap(yyv138) { + + yyrg138 := len(yyv138) > 0 + yyv2138 := yyv138 + yyrl138, yyrt138 = z.DecInferLen(yyl138, z.DecBasicHandle().MaxInitLen, 312) + if yyrt138 { + if yyrl138 <= cap(yyv138) { + yyv138 = yyv138[:yyrl138] + } else { + yyv138 = make([]PodDisruptionBudget, yyrl138) + } + } else { + yyv138 = make([]PodDisruptionBudget, yyrl138) + } + yyc138 = true + yyrr138 = len(yyv138) + if yyrg138 { + copy(yyv138, yyv2138) + } + } else if yyl138 != len(yyv138) { + yyv138 = yyv138[:yyl138] + yyc138 = true + } + yyj138 := 0 + for ; yyj138 < yyrr138; yyj138++ { + yyh138.ElemContainerState(yyj138) + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv139 := &yyv138[yyj138] + yyv139.CodecDecodeSelf(d) + } + + } + if yyrt138 { + for ; yyj138 < yyl138; yyj138++ { + yyv138 = append(yyv138, PodDisruptionBudget{}) + yyh138.ElemContainerState(yyj138) + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv140 := &yyv138[yyj138] + yyv140.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj138 := 0 + for ; !r.CheckBreak(); yyj138++ { + + if yyj138 >= len(yyv138) { + yyv138 = append(yyv138, PodDisruptionBudget{}) // var yyz138 PodDisruptionBudget + yyc138 = true + } + yyh138.ElemContainerState(yyj138) + if yyj138 < len(yyv138) { + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv141 := &yyv138[yyj138] + yyv141.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj138 < len(yyv138) { + yyv138 = yyv138[:yyj138] + yyc138 = true + } else if yyj138 == 0 && yyv138 == nil { + yyv138 = []PodDisruptionBudget{} + yyc138 = true + } + } + yyh138.End() + if yyc138 { + *v = yyv138 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.go new file mode 100644 index 0000000000..c2d2724371 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/types.go @@ -0,0 +1,83 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package policy + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // The minimum number of pods that must be available simultaneously. This + // can be either an integer or a string specifying a percentage, e.g. "28%". + MinAvailable intstr.IntOrString `json:"minAvailable,omitempty"` + + // Label query over pods whose evictions are managed by the disruption + // budget. + Selector *unversioned.LabelSelector `json:"selector,omitempty"` +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +type PodDisruptionBudgetStatus struct { + // Whether or not a disruption is currently allowed. + PodDisruptionAllowed bool `json:"disruptionAllowed"` + + // current number of healthy pods + CurrentHealthy int32 `json:"currentHealthy"` + + // minimum desired number of healthy pods + DesiredHealthy int32 `json:"desiredHealthy"` + + // total number of pods counted by this disruption budget + ExpectedPods int32 `json:"expectedPods"` +} + +// +genclient=true + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +type PodDisruptionBudget struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // Specification of the desired behavior of the PodDisruptionBudget. + Spec PodDisruptionBudgetSpec `json:"spec,omitempty"` + // Most recently observed status of the PodDisruptionBudget. + Status PodDisruptionBudgetStatus `json:"status,omitempty"` +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type PodDisruptionBudgetList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty"` + Items []PodDisruptionBudget `json:"items"` +} + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods/<pod name>/evictions. +type Eviction struct { + unversioned.TypeMeta `json:",inline"` + + // ObjectMeta describes the pod that is being evicted. + api.ObjectMeta `json:"metadata,omitempty"` + + // DeleteOptions may be provided + DeleteOptions *api.DeleteOptions `json:"deleteOptions,omitempty"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/doc.go new file mode 100644 index 0000000000..90fb7f9281 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/policy + +// Package policy is for any kind of policy object. Suitable examples, even if +// they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, +// NetworkPolicy, etc. +// +k8s:openapi-gen=true +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..cc337cb9be --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.pb.go @@ -0,0 +1,1191 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/policy/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/policy/v1alpha1/generated.proto + + It has these top-level messages: + Eviction + PodDisruptionBudget + PodDisruptionBudgetList + PodDisruptionBudgetSpec + PodDisruptionBudgetStatus +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" +import k8s_io_kubernetes_pkg_api_v1 "k8s.io/client-go/1.5/pkg/api/v1" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *Eviction) Reset() { *m = Eviction{} } +func (*Eviction) ProtoMessage() {} +func (*Eviction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *PodDisruptionBudget) Reset() { *m = PodDisruptionBudget{} } +func (*PodDisruptionBudget) ProtoMessage() {} +func (*PodDisruptionBudget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *PodDisruptionBudgetList) Reset() { *m = PodDisruptionBudgetList{} } +func (*PodDisruptionBudgetList) ProtoMessage() {} +func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *PodDisruptionBudgetSpec) Reset() { *m = PodDisruptionBudgetSpec{} } +func (*PodDisruptionBudgetSpec) ProtoMessage() {} +func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *PodDisruptionBudgetStatus) Reset() { *m = PodDisruptionBudgetStatus{} } +func (*PodDisruptionBudgetStatus) ProtoMessage() {} +func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{4} +} + +func init() { + proto.RegisterType((*Eviction)(nil), "k8s.io.client-go.1.5.pkg.apis.policy.v1alpha1.Eviction") + proto.RegisterType((*PodDisruptionBudget)(nil), "k8s.io.client-go.1.5.pkg.apis.policy.v1alpha1.PodDisruptionBudget") + proto.RegisterType((*PodDisruptionBudgetList)(nil), "k8s.io.client-go.1.5.pkg.apis.policy.v1alpha1.PodDisruptionBudgetList") + proto.RegisterType((*PodDisruptionBudgetSpec)(nil), "k8s.io.client-go.1.5.pkg.apis.policy.v1alpha1.PodDisruptionBudgetSpec") + proto.RegisterType((*PodDisruptionBudgetStatus)(nil), "k8s.io.client-go.1.5.pkg.apis.policy.v1alpha1.PodDisruptionBudgetStatus") +} +func (m *Eviction) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Eviction) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.DeleteOptions != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DeleteOptions.Size())) + n2, err := m.DeleteOptions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + } + return i, nil +} + +func (m *PodDisruptionBudget) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodDisruptionBudget) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n3, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n4, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n5, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + return i, nil +} + +func (m *PodDisruptionBudgetList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodDisruptionBudgetList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n6, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PodDisruptionBudgetSpec) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodDisruptionBudgetSpec) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.MinAvailable.Size())) + n7, err := m.MinAvailable.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + if m.Selector != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) + n8, err := m.Selector.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + } + return i, nil +} + +func (m *PodDisruptionBudgetStatus) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PodDisruptionBudgetStatus) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + if m.PodDisruptionAllowed { + data[i] = 1 + } else { + data[i] = 0 + } + i++ + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.CurrentHealthy)) + data[i] = 0x18 + i++ + i = encodeVarintGenerated(data, i, uint64(m.DesiredHealthy)) + data[i] = 0x20 + i++ + i = encodeVarintGenerated(data, i, uint64(m.ExpectedPods)) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *Eviction) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.DeleteOptions != nil { + l = m.DeleteOptions.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodDisruptionBudget) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodDisruptionBudgetList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PodDisruptionBudgetSpec) Size() (n int) { + var l int + _ = l + l = m.MinAvailable.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Selector != nil { + l = m.Selector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *PodDisruptionBudgetStatus) Size() (n int) { + var l int + _ = l + n += 2 + n += 1 + sovGenerated(uint64(m.CurrentHealthy)) + n += 1 + sovGenerated(uint64(m.DesiredHealthy)) + n += 1 + sovGenerated(uint64(m.ExpectedPods)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Eviction) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Eviction{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `DeleteOptions:` + strings.Replace(fmt.Sprintf("%v", this.DeleteOptions), "DeleteOptions", "k8s_io_kubernetes_pkg_api_v1.DeleteOptions", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudget) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudget{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodDisruptionBudgetSpec", "PodDisruptionBudgetSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodDisruptionBudgetStatus", "PodDisruptionBudgetStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudgetList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "PodDisruptionBudget", "PodDisruptionBudget", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudgetSpec{`, + `MinAvailable:` + strings.Replace(strings.Replace(this.MinAvailable.String(), "IntOrString", "k8s_io_kubernetes_pkg_util_intstr.IntOrString", 1), `&`, ``, 1) + `,`, + `Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_kubernetes_pkg_api_unversioned.LabelSelector", 1) + `,`, + `}`, + }, "") + return s +} +func (this *PodDisruptionBudgetStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodDisruptionBudgetStatus{`, + `PodDisruptionAllowed:` + fmt.Sprintf("%v", this.PodDisruptionAllowed) + `,`, + `CurrentHealthy:` + fmt.Sprintf("%v", this.CurrentHealthy) + `,`, + `DesiredHealthy:` + fmt.Sprintf("%v", this.DesiredHealthy) + `,`, + `ExpectedPods:` + fmt.Sprintf("%v", this.ExpectedPods) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Eviction) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Eviction: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Eviction: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DeleteOptions == nil { + m.DeleteOptions = &k8s_io_kubernetes_pkg_api_v1.DeleteOptions{} + } + if err := m.DeleteOptions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudget) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudget: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudget: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, PodDisruptionBudget{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetSpec) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinAvailable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinAvailable.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Selector == nil { + m.Selector = &k8s_io_kubernetes_pkg_api_unversioned.LabelSelector{} + } + if err := m.Selector.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodDisruptionBudgetStatus) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodDisruptionBudgetStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodDisruptionBudgetStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PodDisruptionAllowed", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.PodDisruptionAllowed = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentHealthy", wireType) + } + m.CurrentHealthy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.CurrentHealthy |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DesiredHealthy", wireType) + } + m.DesiredHealthy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.DesiredHealthy |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectedPods", wireType) + } + m.ExpectedPods = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.ExpectedPods |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 648 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x94, 0xdf, 0x6a, 0xd4, 0x4e, + 0x14, 0xc7, 0xbb, 0xfd, 0xc7, 0x32, 0xbf, 0x6d, 0xf9, 0x35, 0x16, 0x5d, 0x17, 0x69, 0x65, 0xaf, + 0x4a, 0xb5, 0x13, 0x5a, 0x14, 0x8a, 0x17, 0x4a, 0xd3, 0x16, 0xac, 0x58, 0x2a, 0xe9, 0x8d, 0x08, + 0x0a, 0x93, 0xe4, 0x98, 0x1d, 0x9b, 0x64, 0xc2, 0xcc, 0x64, 0xb5, 0x77, 0x3e, 0x82, 0xaf, 0xe0, + 0xc3, 0x08, 0xc5, 0xab, 0x5e, 0x7a, 0xb5, 0x68, 0xfb, 0x22, 0x4e, 0x26, 0xb3, 0xdb, 0xcd, 0xee, + 0xa6, 0x14, 0x8a, 0x17, 0x03, 0x39, 0x33, 0xe7, 0xf3, 0x3d, 0x7f, 0xe6, 0x4c, 0xd0, 0xb3, 0x93, + 0x6d, 0x81, 0x29, 0xb3, 0x4f, 0x32, 0x0f, 0x78, 0x02, 0x12, 0x84, 0x9d, 0x9e, 0x84, 0x36, 0x49, + 0xa9, 0xfa, 0x60, 0x11, 0xf5, 0x4f, 0xed, 0xee, 0x26, 0x89, 0xd2, 0x0e, 0xd9, 0xb4, 0x43, 0x48, + 0x80, 0x13, 0x09, 0x01, 0x4e, 0x39, 0x93, 0xcc, 0x5a, 0x2f, 0x58, 0x7c, 0xc5, 0x62, 0xc5, 0xe2, + 0x9c, 0xc5, 0x05, 0x8b, 0xfb, 0x6c, 0x6b, 0x23, 0xa4, 0xb2, 0x93, 0x79, 0xd8, 0x67, 0xb1, 0x1d, + 0xb2, 0x90, 0xd9, 0x5a, 0xc2, 0xcb, 0x3e, 0x6a, 0x4b, 0x1b, 0xfa, 0xab, 0x90, 0x6e, 0x6d, 0x55, + 0xa6, 0x65, 0x73, 0x10, 0x2c, 0xe3, 0x3e, 0x8c, 0xa6, 0xd3, 0x7a, 0x5a, 0xcd, 0x64, 0x49, 0x17, + 0xb8, 0xa0, 0x2c, 0x81, 0x60, 0x0c, 0x7b, 0x5c, 0x8d, 0x75, 0xc7, 0x6a, 0x6e, 0x6d, 0x4c, 0xf6, + 0xe6, 0x59, 0x22, 0x69, 0x3c, 0x9e, 0xd3, 0xe6, 0x64, 0xf7, 0x4c, 0xd2, 0xc8, 0xa6, 0x89, 0x14, + 0x92, 0x8f, 0x22, 0xed, 0x9f, 0x35, 0x54, 0xdf, 0xef, 0x52, 0x5f, 0xaa, 0x74, 0xad, 0xb7, 0xa8, + 0x1e, 0x83, 0x24, 0x01, 0x91, 0xa4, 0x59, 0x7b, 0x58, 0x5b, 0xfb, 0x6f, 0x6b, 0x0d, 0x57, 0x76, + 0x5d, 0x75, 0x1b, 0x1f, 0x79, 0x9f, 0xc0, 0x97, 0x87, 0x8a, 0x71, 0xac, 0xb3, 0xde, 0xea, 0xd4, + 0x45, 0x6f, 0x15, 0x5d, 0xed, 0xb9, 0x03, 0x35, 0x2b, 0x40, 0x0b, 0x01, 0x44, 0x0a, 0x3f, 0x4a, + 0xf3, 0x48, 0xa2, 0x39, 0xad, 0xe5, 0x1f, 0x5d, 0x2f, 0xbf, 0x37, 0x8c, 0x38, 0x4b, 0x4a, 0x7d, + 0xa1, 0xb4, 0xe5, 0x96, 0x45, 0xdb, 0x3f, 0xa6, 0xd1, 0x9d, 0x37, 0x2c, 0xd8, 0xa3, 0x82, 0x67, + 0x7a, 0xcb, 0xc9, 0x82, 0x10, 0xe4, 0x3f, 0xac, 0x0b, 0xd0, 0xac, 0x48, 0xc1, 0x37, 0xe5, 0xec, + 0xe2, 0x9b, 0xcf, 0x28, 0x9e, 0x90, 0xe8, 0xb1, 0x92, 0x72, 0x1a, 0x26, 0xe0, 0x6c, 0x6e, 0xb9, + 0x5a, 0xde, 0x8a, 0xd1, 0xbc, 0x90, 0x44, 0x66, 0xa2, 0x39, 0xa3, 0x03, 0xed, 0xdf, 0x36, 0x90, + 0x16, 0x73, 0x16, 0x4d, 0xa8, 0xf9, 0xc2, 0x76, 0x4d, 0x90, 0x76, 0xaf, 0x86, 0xee, 0x4d, 0xa0, + 0x5e, 0x53, 0x21, 0xad, 0xf7, 0x63, 0xbd, 0xb4, 0xaf, 0xe9, 0xe5, 0xd0, 0x53, 0xc0, 0x39, 0xae, + 0x5b, 0xfa, 0xbf, 0x09, 0x5b, 0xef, 0xef, 0x94, 0x06, 0x65, 0x8e, 0x4a, 0x88, 0xf3, 0x01, 0x99, + 0x51, 0xda, 0x2f, 0x6e, 0x59, 0xa8, 0xb3, 0x60, 0x62, 0xcd, 0x1d, 0xe4, 0xaa, 0x6e, 0x21, 0xde, + 0xbe, 0x9c, 0x5c, 0x60, 0xde, 0x71, 0xab, 0x83, 0x1a, 0x31, 0x4d, 0x76, 0xba, 0x84, 0x46, 0xc4, + 0x8b, 0xc0, 0x14, 0x89, 0x2b, 0x12, 0xc9, 0xdf, 0x16, 0x2e, 0xde, 0x16, 0x3e, 0x48, 0xe4, 0x11, + 0x3f, 0x96, 0x9c, 0x26, 0xa1, 0xb3, 0x6c, 0xe2, 0x36, 0x0e, 0x87, 0xb4, 0xdc, 0x92, 0xb2, 0xf5, + 0x01, 0xd5, 0x85, 0x9a, 0x5f, 0x5f, 0x32, 0x6e, 0x06, 0xe8, 0xc9, 0x4d, 0x5b, 0x49, 0x3c, 0x88, + 0x8e, 0x0d, 0xeb, 0x34, 0xf2, 0x5e, 0xf6, 0x2d, 0x77, 0xa0, 0xd9, 0xfe, 0x3e, 0x8d, 0xee, 0x57, + 0x5e, 0xbe, 0xf5, 0x0a, 0x2d, 0x05, 0x83, 0x93, 0x9d, 0x28, 0x62, 0x9f, 0x21, 0xd0, 0xc5, 0xd6, + 0x9d, 0x07, 0x26, 0xf9, 0xe5, 0x12, 0x6d, 0x7c, 0xdc, 0x71, 0xcc, 0x7a, 0x8e, 0x16, 0xfd, 0x8c, + 0x73, 0x48, 0xe4, 0x4b, 0x20, 0x91, 0xec, 0x9c, 0xea, 0x7a, 0xe6, 0x9c, 0xbb, 0x46, 0x68, 0x71, + 0xb7, 0x74, 0xea, 0x8e, 0x78, 0xe7, 0x7c, 0x00, 0x82, 0x72, 0x08, 0xfa, 0xfc, 0x4c, 0x99, 0xdf, + 0x2b, 0x9d, 0xba, 0x23, 0xde, 0xd6, 0x36, 0x6a, 0xc0, 0x17, 0x75, 0x79, 0xea, 0xbf, 0xa6, 0x52, + 0x16, 0xcd, 0x59, 0x4d, 0x0f, 0xee, 0x60, 0x7f, 0xe8, 0xcc, 0x2d, 0x79, 0x3a, 0xeb, 0x67, 0x7f, + 0x56, 0xa6, 0xce, 0xd5, 0xfa, 0xa5, 0xd6, 0xd7, 0x8b, 0x95, 0xda, 0x99, 0x5a, 0xe7, 0x6a, 0xfd, + 0x56, 0xeb, 0xdb, 0xe5, 0xca, 0xd4, 0xbb, 0x7a, 0x7f, 0xbe, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, + 0x7d, 0xdd, 0x26, 0x2d, 0xbe, 0x06, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.proto new file mode 100644 index 0000000000..8fb5c2be63 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/generated.proto @@ -0,0 +1,88 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.policy.v1alpha1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods/<pod name>/evictions. +message Eviction { + // ObjectMeta describes the pod that is being evicted. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // DeleteOptions may be provided + optional k8s.io.kubernetes.pkg.api.v1.DeleteOptions deleteOptions = 2; +} + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +message PodDisruptionBudget { + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Specification of the desired behavior of the PodDisruptionBudget. + optional PodDisruptionBudgetSpec spec = 2; + + // Most recently observed status of the PodDisruptionBudget. + optional PodDisruptionBudgetStatus status = 3; +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +message PodDisruptionBudgetList { + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + repeated PodDisruptionBudget items = 2; +} + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +message PodDisruptionBudgetSpec { + // The minimum number of pods that must be available simultaneously. This + // can be either an integer or a string specifying a percentage, e.g. "28%". + optional k8s.io.kubernetes.pkg.util.intstr.IntOrString minAvailable = 1; + + // Label query over pods whose evictions are managed by the disruption + // budget. + optional k8s.io.kubernetes.pkg.api.unversioned.LabelSelector selector = 2; +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +message PodDisruptionBudgetStatus { + // Whether or not a disruption is currently allowed. + optional bool disruptionAllowed = 1; + + // current number of healthy pods + optional int32 currentHealthy = 2; + + // minimum desired number of healthy pods + optional int32 desiredHealthy = 3; + + // total number of pods counted by this disruption budget + optional int32 expectedPods = 4; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/register.go new file mode 100644 index 0000000000..f3f36faaaa --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/register.go @@ -0,0 +1,49 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "policy" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &PodDisruptionBudget{}, + &PodDisruptionBudgetList{}, + &Eviction{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + ) + // Add the watch version that applies + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.generated.go new file mode 100644 index 0000000000..afaf78fdce --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.generated.go @@ -0,0 +1,1752 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg4_types "k8s.io/client-go/1.5/pkg/types" + pkg1_intstr "k8s.io/client-go/1.5/pkg/util/intstr" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_unversioned.LabelSelector + var v1 pkg3_v1.ObjectMeta + var v2 pkg4_types.UID + var v3 pkg1_intstr.IntOrString + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *PodDisruptionBudgetSpec) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [2]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = true + yyq2[1] = x.Selector != nil + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(2) + } else { + yynn2 = 0 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yy4 := &x.MinAvailable + yym5 := z.EncBinary() + _ = yym5 + if false { + } else if z.HasExtensions() && z.EncExt(yy4) { + } else if !yym5 && z.IsJSONHandle() { + z.EncJSONMarshal(yy4) + } else { + z.EncFallback(yy4) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("minAvailable")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy6 := &x.MinAvailable + yym7 := z.EncBinary() + _ = yym7 + if false { + } else if z.HasExtensions() && z.EncExt(yy6) { + } else if !yym7 && z.IsJSONHandle() { + z.EncJSONMarshal(yy6) + } else { + z.EncFallback(yy6) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + if x.Selector == nil { + r.EncodeNil() + } else { + yym9 := z.EncBinary() + _ = yym9 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("selector")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Selector == nil { + r.EncodeNil() + } else { + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(x.Selector) { + } else { + z.EncFallback(x.Selector) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetSpec) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym11 := z.DecBinary() + _ = yym11 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct12 := r.ContainerType() + if yyct12 == codecSelferValueTypeMap1234 { + yyl12 := r.ReadMapStart() + if yyl12 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl12, d) + } + } else if yyct12 == codecSelferValueTypeArray1234 { + yyl12 := r.ReadArrayStart() + if yyl12 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl12, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys13Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys13Slc + var yyhl13 bool = l >= 0 + for yyj13 := 0; ; yyj13++ { + if yyhl13 { + if yyj13 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys13Slc = r.DecodeBytes(yys13Slc, true, true) + yys13 := string(yys13Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys13 { + case "minAvailable": + if r.TryDecodeAsNil() { + x.MinAvailable = pkg1_intstr.IntOrString{} + } else { + yyv14 := &x.MinAvailable + yym15 := z.DecBinary() + _ = yym15 + if false { + } else if z.HasExtensions() && z.DecExt(yyv14) { + } else if !yym15 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv14) + } else { + z.DecFallback(yyv14, false) + } + } + case "selector": + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym17 := z.DecBinary() + _ = yym17 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + default: + z.DecStructFieldNotFound(-1, yys13) + } // end switch yys13 + } // end for yyj13 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj18 int + var yyb18 bool + var yyhl18 bool = l >= 0 + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.MinAvailable = pkg1_intstr.IntOrString{} + } else { + yyv19 := &x.MinAvailable + yym20 := z.DecBinary() + _ = yym20 + if false { + } else if z.HasExtensions() && z.DecExt(yyv19) { + } else if !yym20 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv19) + } else { + z.DecFallback(yyv19, false) + } + } + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.Selector != nil { + x.Selector = nil + } + } else { + if x.Selector == nil { + x.Selector = new(pkg2_unversioned.LabelSelector) + } + yym22 := z.DecBinary() + _ = yym22 + if false { + } else if z.HasExtensions() && z.DecExt(x.Selector) { + } else { + z.DecFallback(x.Selector, false) + } + } + for { + yyj18++ + if yyhl18 { + yyb18 = yyj18 > l + } else { + yyb18 = r.CheckBreak() + } + if yyb18 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj18-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetStatus) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym23 := z.EncBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep24 := !z.EncBinary() + yy2arr24 := z.EncBasicHandle().StructToArray + var yyq24 [4]bool + _, _, _ = yysep24, yyq24, yy2arr24 + const yyr24 bool = false + var yynn24 int + if yyr24 || yy2arr24 { + r.EncodeArrayStart(4) + } else { + yynn24 = 4 + for _, b := range yyq24 { + if b { + yynn24++ + } + } + r.EncodeMapStart(yynn24) + yynn24 = 0 + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym26 := z.EncBinary() + _ = yym26 + if false { + } else { + r.EncodeBool(bool(x.PodDisruptionAllowed)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("disruptionAllowed")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym27 := z.EncBinary() + _ = yym27 + if false { + } else { + r.EncodeBool(bool(x.PodDisruptionAllowed)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym29 := z.EncBinary() + _ = yym29 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("currentHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym30 := z.EncBinary() + _ = yym30 + if false { + } else { + r.EncodeInt(int64(x.CurrentHealthy)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym32 := z.EncBinary() + _ = yym32 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("desiredHealthy")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym33 := z.EncBinary() + _ = yym33 + if false { + } else { + r.EncodeInt(int64(x.DesiredHealthy)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym35 := z.EncBinary() + _ = yym35 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("expectedPods")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym36 := z.EncBinary() + _ = yym36 + if false { + } else { + r.EncodeInt(int64(x.ExpectedPods)) + } + } + if yyr24 || yy2arr24 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetStatus) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym37 := z.DecBinary() + _ = yym37 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct38 := r.ContainerType() + if yyct38 == codecSelferValueTypeMap1234 { + yyl38 := r.ReadMapStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl38, d) + } + } else if yyct38 == codecSelferValueTypeArray1234 { + yyl38 := r.ReadArrayStart() + if yyl38 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl38, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys39Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys39Slc + var yyhl39 bool = l >= 0 + for yyj39 := 0; ; yyj39++ { + if yyhl39 { + if yyj39 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys39Slc = r.DecodeBytes(yys39Slc, true, true) + yys39 := string(yys39Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys39 { + case "disruptionAllowed": + if r.TryDecodeAsNil() { + x.PodDisruptionAllowed = false + } else { + x.PodDisruptionAllowed = bool(r.DecodeBool()) + } + case "currentHealthy": + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + x.CurrentHealthy = int32(r.DecodeInt(32)) + } + case "desiredHealthy": + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + x.DesiredHealthy = int32(r.DecodeInt(32)) + } + case "expectedPods": + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + x.ExpectedPods = int32(r.DecodeInt(32)) + } + default: + z.DecStructFieldNotFound(-1, yys39) + } // end switch yys39 + } // end for yyj39 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj44 int + var yyb44 bool + var yyhl44 bool = l >= 0 + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.PodDisruptionAllowed = false + } else { + x.PodDisruptionAllowed = bool(r.DecodeBool()) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.CurrentHealthy = 0 + } else { + x.CurrentHealthy = int32(r.DecodeInt(32)) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.DesiredHealthy = 0 + } else { + x.DesiredHealthy = int32(r.DecodeInt(32)) + } + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ExpectedPods = 0 + } else { + x.ExpectedPods = int32(r.DecodeInt(32)) + } + for { + yyj44++ + if yyhl44 { + yyb44 = yyj44 > l + } else { + yyb44 = r.CheckBreak() + } + if yyb44 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj44-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudget) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep50 := !z.EncBinary() + yy2arr50 := z.EncBasicHandle().StructToArray + var yyq50 [5]bool + _, _, _ = yysep50, yyq50, yy2arr50 + const yyr50 bool = false + yyq50[0] = x.Kind != "" + yyq50[1] = x.APIVersion != "" + yyq50[2] = true + yyq50[3] = true + yyq50[4] = true + var yynn50 int + if yyr50 || yy2arr50 { + r.EncodeArrayStart(5) + } else { + yynn50 = 0 + for _, b := range yyq50 { + if b { + yynn50++ + } + } + r.EncodeMapStart(yynn50) + yynn50 = 0 + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[0] { + yym52 := z.EncBinary() + _ = yym52 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq50[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym53 := z.EncBinary() + _ = yym53 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[1] { + yym55 := z.EncBinary() + _ = yym55 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq50[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym56 := z.EncBinary() + _ = yym56 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[2] { + yy58 := &x.ObjectMeta + yy58.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy59 := &x.ObjectMeta + yy59.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[3] { + yy61 := &x.Spec + yy61.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("spec")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy62 := &x.Spec + yy62.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq50[4] { + yy64 := &x.Status + yy64.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq50[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("status")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy65 := &x.Status + yy65.CodecEncodeSelf(e) + } + } + if yyr50 || yy2arr50 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudget) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym66 := z.DecBinary() + _ = yym66 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct67 := r.ContainerType() + if yyct67 == codecSelferValueTypeMap1234 { + yyl67 := r.ReadMapStart() + if yyl67 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl67, d) + } + } else if yyct67 == codecSelferValueTypeArray1234 { + yyl67 := r.ReadArrayStart() + if yyl67 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl67, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys68Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys68Slc + var yyhl68 bool = l >= 0 + for yyj68 := 0; ; yyj68++ { + if yyhl68 { + if yyj68 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys68Slc = r.DecodeBytes(yys68Slc, true, true) + yys68 := string(yys68Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys68 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv71 := &x.ObjectMeta + yyv71.CodecDecodeSelf(d) + } + case "spec": + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv72 := &x.Spec + yyv72.CodecDecodeSelf(d) + } + case "status": + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv73 := &x.Status + yyv73.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys68) + } // end switch yys68 + } // end for yyj68 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudget) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj74 int + var yyb74 bool + var yyhl74 bool = l >= 0 + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv77 := &x.ObjectMeta + yyv77.CodecDecodeSelf(d) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Spec = PodDisruptionBudgetSpec{} + } else { + yyv78 := &x.Spec + yyv78.CodecDecodeSelf(d) + } + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Status = PodDisruptionBudgetStatus{} + } else { + yyv79 := &x.Status + yyv79.CodecDecodeSelf(d) + } + for { + yyj74++ + if yyhl74 { + yyb74 = yyj74 > l + } else { + yyb74 = r.CheckBreak() + } + if yyb74 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj74-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *PodDisruptionBudgetList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym80 := z.EncBinary() + _ = yym80 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep81 := !z.EncBinary() + yy2arr81 := z.EncBasicHandle().StructToArray + var yyq81 [4]bool + _, _, _ = yysep81, yyq81, yy2arr81 + const yyr81 bool = false + yyq81[0] = x.Kind != "" + yyq81[1] = x.APIVersion != "" + yyq81[2] = true + var yynn81 int + if yyr81 || yy2arr81 { + r.EncodeArrayStart(4) + } else { + yynn81 = 1 + for _, b := range yyq81 { + if b { + yynn81++ + } + } + r.EncodeMapStart(yynn81) + yynn81 = 0 + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[0] { + yym83 := z.EncBinary() + _ = yym83 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq81[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym84 := z.EncBinary() + _ = yym84 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[1] { + yym86 := z.EncBinary() + _ = yym86 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq81[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym87 := z.EncBinary() + _ = yym87 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq81[2] { + yy89 := &x.ListMeta + yym90 := z.EncBinary() + _ = yym90 + if false { + } else if z.HasExtensions() && z.EncExt(yy89) { + } else { + z.EncFallback(yy89) + } + } else { + r.EncodeNil() + } + } else { + if yyq81[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy91 := &x.ListMeta + yym92 := z.EncBinary() + _ = yym92 + if false { + } else if z.HasExtensions() && z.EncExt(yy91) { + } else { + z.EncFallback(yy91) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym94 := z.EncBinary() + _ = yym94 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym95 := z.EncBinary() + _ = yym95 + if false { + } else { + h.encSlicePodDisruptionBudget(([]PodDisruptionBudget)(x.Items), e) + } + } + } + if yyr81 || yy2arr81 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PodDisruptionBudgetList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym96 := z.DecBinary() + _ = yym96 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct97 := r.ContainerType() + if yyct97 == codecSelferValueTypeMap1234 { + yyl97 := r.ReadMapStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl97, d) + } + } else if yyct97 == codecSelferValueTypeArray1234 { + yyl97 := r.ReadArrayStart() + if yyl97 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl97, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys98Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys98Slc + var yyhl98 bool = l >= 0 + for yyj98 := 0; ; yyj98++ { + if yyhl98 { + if yyj98 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys98Slc = r.DecodeBytes(yys98Slc, true, true) + yys98 := string(yys98Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys98 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv101 := &x.ListMeta + yym102 := z.DecBinary() + _ = yym102 + if false { + } else if z.HasExtensions() && z.DecExt(yyv101) { + } else { + z.DecFallback(yyv101, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv103 := &x.Items + yym104 := z.DecBinary() + _ = yym104 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv103), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys98) + } // end switch yys98 + } // end for yyj98 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PodDisruptionBudgetList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj105 int + var yyb105 bool + var yyhl105 bool = l >= 0 + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv108 := &x.ListMeta + yym109 := z.DecBinary() + _ = yym109 + if false { + } else if z.HasExtensions() && z.DecExt(yyv108) { + } else { + z.DecFallback(yyv108, false) + } + } + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv110 := &x.Items + yym111 := z.DecBinary() + _ = yym111 + if false { + } else { + h.decSlicePodDisruptionBudget((*[]PodDisruptionBudget)(yyv110), d) + } + } + for { + yyj105++ + if yyhl105 { + yyb105 = yyj105 > l + } else { + yyb105 = r.CheckBreak() + } + if yyb105 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj105-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Eviction) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym112 := z.EncBinary() + _ = yym112 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep113 := !z.EncBinary() + yy2arr113 := z.EncBasicHandle().StructToArray + var yyq113 [4]bool + _, _, _ = yysep113, yyq113, yy2arr113 + const yyr113 bool = false + yyq113[0] = x.Kind != "" + yyq113[1] = x.APIVersion != "" + yyq113[2] = true + yyq113[3] = x.DeleteOptions != nil + var yynn113 int + if yyr113 || yy2arr113 { + r.EncodeArrayStart(4) + } else { + yynn113 = 0 + for _, b := range yyq113 { + if b { + yynn113++ + } + } + r.EncodeMapStart(yynn113) + yynn113 = 0 + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[0] { + yym115 := z.EncBinary() + _ = yym115 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym116 := z.EncBinary() + _ = yym116 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[1] { + yym118 := z.EncBinary() + _ = yym118 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq113[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym119 := z.EncBinary() + _ = yym119 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[2] { + yy121 := &x.ObjectMeta + yy121.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq113[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy122 := &x.ObjectMeta + yy122.CodecEncodeSelf(e) + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq113[3] { + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + x.DeleteOptions.CodecEncodeSelf(e) + } + } else { + r.EncodeNil() + } + } else { + if yyq113[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("deleteOptions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.DeleteOptions == nil { + r.EncodeNil() + } else { + x.DeleteOptions.CodecEncodeSelf(e) + } + } + } + if yyr113 || yy2arr113 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Eviction) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym124 := z.DecBinary() + _ = yym124 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct125 := r.ContainerType() + if yyct125 == codecSelferValueTypeMap1234 { + yyl125 := r.ReadMapStart() + if yyl125 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl125, d) + } + } else if yyct125 == codecSelferValueTypeArray1234 { + yyl125 := r.ReadArrayStart() + if yyl125 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl125, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Eviction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys126Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys126Slc + var yyhl126 bool = l >= 0 + for yyj126 := 0; ; yyj126++ { + if yyhl126 { + if yyj126 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys126Slc = r.DecodeBytes(yys126Slc, true, true) + yys126 := string(yys126Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys126 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv129 := &x.ObjectMeta + yyv129.CodecDecodeSelf(d) + } + case "deleteOptions": + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg3_v1.DeleteOptions) + } + x.DeleteOptions.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys126) + } // end switch yys126 + } // end for yyj126 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Eviction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj131 int + var yyb131 bool + var yyhl131 bool = l >= 0 + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv134 := &x.ObjectMeta + yyv134.CodecDecodeSelf(d) + } + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + if x.DeleteOptions != nil { + x.DeleteOptions = nil + } + } else { + if x.DeleteOptions == nil { + x.DeleteOptions = new(pkg3_v1.DeleteOptions) + } + x.DeleteOptions.CodecDecodeSelf(d) + } + for { + yyj131++ + if yyhl131 { + yyb131 = yyj131 > l + } else { + yyb131 = r.CheckBreak() + } + if yyb131 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj131-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv136 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy137 := &yyv136 + yy137.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv138 := *v + yyh138, yyl138 := z.DecSliceHelperStart() + var yyc138 bool + if yyl138 == 0 { + if yyv138 == nil { + yyv138 = []PodDisruptionBudget{} + yyc138 = true + } else if len(yyv138) != 0 { + yyv138 = yyv138[:0] + yyc138 = true + } + } else if yyl138 > 0 { + var yyrr138, yyrl138 int + var yyrt138 bool + if yyl138 > cap(yyv138) { + + yyrg138 := len(yyv138) > 0 + yyv2138 := yyv138 + yyrl138, yyrt138 = z.DecInferLen(yyl138, z.DecBasicHandle().MaxInitLen, 312) + if yyrt138 { + if yyrl138 <= cap(yyv138) { + yyv138 = yyv138[:yyrl138] + } else { + yyv138 = make([]PodDisruptionBudget, yyrl138) + } + } else { + yyv138 = make([]PodDisruptionBudget, yyrl138) + } + yyc138 = true + yyrr138 = len(yyv138) + if yyrg138 { + copy(yyv138, yyv2138) + } + } else if yyl138 != len(yyv138) { + yyv138 = yyv138[:yyl138] + yyc138 = true + } + yyj138 := 0 + for ; yyj138 < yyrr138; yyj138++ { + yyh138.ElemContainerState(yyj138) + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv139 := &yyv138[yyj138] + yyv139.CodecDecodeSelf(d) + } + + } + if yyrt138 { + for ; yyj138 < yyl138; yyj138++ { + yyv138 = append(yyv138, PodDisruptionBudget{}) + yyh138.ElemContainerState(yyj138) + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv140 := &yyv138[yyj138] + yyv140.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj138 := 0 + for ; !r.CheckBreak(); yyj138++ { + + if yyj138 >= len(yyv138) { + yyv138 = append(yyv138, PodDisruptionBudget{}) // var yyz138 PodDisruptionBudget + yyc138 = true + } + yyh138.ElemContainerState(yyj138) + if yyj138 < len(yyv138) { + if r.TryDecodeAsNil() { + yyv138[yyj138] = PodDisruptionBudget{} + } else { + yyv141 := &yyv138[yyj138] + yyv141.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj138 < len(yyv138) { + yyv138 = yyv138[:yyj138] + yyc138 = true + } else if yyj138 == 0 && yyv138 == nil { + yyv138 = []PodDisruptionBudget{} + yyc138 = true + } + } + yyh138.End() + if yyc138 { + *v = yyv138 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.go new file mode 100644 index 0000000000..f10b845361 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types.go @@ -0,0 +1,83 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/util/intstr" +) + +// PodDisruptionBudgetSpec is a description of a PodDisruptionBudget. +type PodDisruptionBudgetSpec struct { + // The minimum number of pods that must be available simultaneously. This + // can be either an integer or a string specifying a percentage, e.g. "28%". + MinAvailable intstr.IntOrString `json:"minAvailable,omitempty" protobuf:"bytes,1,opt,name=minAvailable"` + + // Label query over pods whose evictions are managed by the disruption + // budget. + Selector *unversioned.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"` +} + +// PodDisruptionBudgetStatus represents information about the status of a +// PodDisruptionBudget. Status may trail the actual state of a system. +type PodDisruptionBudgetStatus struct { + // Whether or not a disruption is currently allowed. + PodDisruptionAllowed bool `json:"disruptionAllowed" protobuf:"varint,1,opt,name=disruptionAllowed"` + + // current number of healthy pods + CurrentHealthy int32 `json:"currentHealthy" protobuf:"varint,2,opt,name=currentHealthy"` + + // minimum desired number of healthy pods + DesiredHealthy int32 `json:"desiredHealthy" protobuf:"varint,3,opt,name=desiredHealthy"` + + // total number of pods counted by this disruption budget + ExpectedPods int32 `json:"expectedPods" protobuf:"varint,4,opt,name=expectedPods"` +} + +// +genclient=true + +// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods +type PodDisruptionBudget struct { + unversioned.TypeMeta `json:",inline"` + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Specification of the desired behavior of the PodDisruptionBudget. + Spec PodDisruptionBudgetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + // Most recently observed status of the PodDisruptionBudget. + Status PodDisruptionBudgetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` +} + +// PodDisruptionBudgetList is a collection of PodDisruptionBudgets. +type PodDisruptionBudgetList struct { + unversioned.TypeMeta `json:",inline"` + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// Eviction evicts a pod from its node subject to certain policies and safety constraints. +// This is a subresource of Pod. A request to cause such an eviction is +// created by POSTing to .../pods/<pod name>/evictions. +type Eviction struct { + unversioned.TypeMeta `json:",inline"` + + // ObjectMeta describes the pod that is being evicted. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // DeleteOptions may be provided + DeleteOptions *v1.DeleteOptions `json:"deleteOptions,omitempty" protobuf:"bytes,2,opt,name=deleteOptions"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..7750b1007f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,80 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_Eviction = map[string]string{ + "": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/<pod name>/evictions.", + "metadata": "ObjectMeta describes the pod that is being evicted.", + "deleteOptions": "DeleteOptions may be provided", +} + +func (Eviction) SwaggerDoc() map[string]string { + return map_Eviction +} + +var map_PodDisruptionBudget = map[string]string{ + "": "PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods", + "spec": "Specification of the desired behavior of the PodDisruptionBudget.", + "status": "Most recently observed status of the PodDisruptionBudget.", +} + +func (PodDisruptionBudget) SwaggerDoc() map[string]string { + return map_PodDisruptionBudget +} + +var map_PodDisruptionBudgetList = map[string]string{ + "": "PodDisruptionBudgetList is a collection of PodDisruptionBudgets.", +} + +func (PodDisruptionBudgetList) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetList +} + +var map_PodDisruptionBudgetSpec = map[string]string{ + "": "PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.", + "minAvailable": "The minimum number of pods that must be available simultaneously. This can be either an integer or a string specifying a percentage, e.g. \"28%\".", + "selector": "Label query over pods whose evictions are managed by the disruption budget.", +} + +func (PodDisruptionBudgetSpec) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetSpec +} + +var map_PodDisruptionBudgetStatus = map[string]string{ + "": "PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.", + "disruptionAllowed": "Whether or not a disruption is currently allowed.", + "currentHealthy": "current number of healthy pods", + "desiredHealthy": "minimum desired number of healthy pods", + "expectedPods": "total number of pods counted by this disruption budget", +} + +func (PodDisruptionBudgetStatus) SwaggerDoc() map[string]string { + return map_PodDisruptionBudgetStatus +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.conversion.go new file mode 100644 index 0000000000..d20b4763d0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,240 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + policy "k8s.io/client-go/1.5/pkg/apis/policy" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_Eviction_To_policy_Eviction, + Convert_policy_Eviction_To_v1alpha1_Eviction, + Convert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget, + Convert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget, + Convert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList, + Convert_policy_PodDisruptionBudgetList_To_v1alpha1_PodDisruptionBudgetList, + Convert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec, + Convert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetSpec, + Convert_v1alpha1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus, + Convert_policy_PodDisruptionBudgetStatus_To_v1alpha1_PodDisruptionBudgetStatus, + ) +} + +func autoConvert_v1alpha1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + *out = new(api.DeleteOptions) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.DeleteOptions = nil + } + return nil +} + +func Convert_v1alpha1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error { + return autoConvert_v1alpha1_Eviction_To_policy_Eviction(in, out, s) +} + +func autoConvert_policy_Eviction_To_v1alpha1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + *out = new(v1.DeleteOptions) + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(*in, *out, 0); err != nil { + return err + } + } else { + out.DeleteOptions = nil + } + return nil +} + +func Convert_policy_Eviction_To_v1alpha1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error { + return autoConvert_policy_Eviction_To_v1alpha1_Eviction(in, out, s) +} + +func autoConvert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error { + return autoConvert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget(in *policy.PodDisruptionBudget, out *PodDisruptionBudget, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if err := Convert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_policy_PodDisruptionBudgetStatus_To_v1alpha1_PodDisruptionBudgetStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +func Convert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget(in *policy.PodDisruptionBudget, out *PodDisruptionBudget, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget(in, out, s) +} + +func autoConvert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in *PodDisruptionBudgetList, out *policy.PodDisruptionBudgetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]policy.PodDisruptionBudget, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in *PodDisruptionBudgetList, out *policy.PodDisruptionBudgetList, s conversion.Scope) error { + return autoConvert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetList_To_v1alpha1_PodDisruptionBudgetList(in *policy.PodDisruptionBudgetList, out *PodDisruptionBudgetList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodDisruptionBudget, len(*in)) + for i := range *in { + if err := Convert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_policy_PodDisruptionBudgetList_To_v1alpha1_PodDisruptionBudgetList(in *policy.PodDisruptionBudgetList, out *PodDisruptionBudgetList, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetList_To_v1alpha1_PodDisruptionBudgetList(in, out, s) +} + +func autoConvert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in *PodDisruptionBudgetSpec, out *policy.PodDisruptionBudgetSpec, s conversion.Scope) error { + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil { + return err + } + out.Selector = in.Selector + return nil +} + +func Convert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in *PodDisruptionBudgetSpec, out *policy.PodDisruptionBudgetSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_PodDisruptionBudgetSpec_To_policy_PodDisruptionBudgetSpec(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetSpec(in *policy.PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, s conversion.Scope) error { + if err := api.Convert_intstr_IntOrString_To_intstr_IntOrString(&in.MinAvailable, &out.MinAvailable, s); err != nil { + return err + } + out.Selector = in.Selector + return nil +} + +func Convert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetSpec(in *policy.PodDisruptionBudgetSpec, out *PodDisruptionBudgetSpec, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetSpec_To_v1alpha1_PodDisruptionBudgetSpec(in, out, s) +} + +func autoConvert_v1alpha1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in *PodDisruptionBudgetStatus, out *policy.PodDisruptionBudgetStatus, s conversion.Scope) error { + out.PodDisruptionAllowed = in.PodDisruptionAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil +} + +func Convert_v1alpha1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in *PodDisruptionBudgetStatus, out *policy.PodDisruptionBudgetStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_PodDisruptionBudgetStatus_To_policy_PodDisruptionBudgetStatus(in, out, s) +} + +func autoConvert_policy_PodDisruptionBudgetStatus_To_v1alpha1_PodDisruptionBudgetStatus(in *policy.PodDisruptionBudgetStatus, out *PodDisruptionBudgetStatus, s conversion.Scope) error { + out.PodDisruptionAllowed = in.PodDisruptionAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil +} + +func Convert_policy_PodDisruptionBudgetStatus_To_v1alpha1_PodDisruptionBudgetStatus(in *policy.PodDisruptionBudgetStatus, out *PodDisruptionBudgetStatus, s conversion.Scope) error { + return autoConvert_policy_PodDisruptionBudgetStatus_To_v1alpha1_PodDisruptionBudgetStatus(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..56439e069f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,133 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Eviction, InType: reflect.TypeOf(&Eviction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetStatus, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})}, + ) +} + +func DeepCopy_v1alpha1_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Eviction) + out := out.(*Eviction) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + *out = new(v1.DeleteOptions) + if err := v1.DeepCopy_v1_DeleteOptions(*in, *out, c); err != nil { + return err + } + } else { + out.DeleteOptions = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudget) + out := out.(*PodDisruptionBudget) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_v1alpha1_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_v1alpha1_PodDisruptionBudgetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetList) + out := out.(*PodDisruptionBudgetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodDisruptionBudget, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PodDisruptionBudget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_PodDisruptionBudgetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetSpec) + out := out.(*PodDisruptionBudgetSpec) + out.MinAvailable = in.MinAvailable + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_PodDisruptionBudgetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetStatus) + out := out.(*PodDisruptionBudgetStatus) + out.PodDisruptionAllowed = in.PodDisruptionAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/policy/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/zz_generated.deepcopy.go new file mode 100644 index 0000000000..9153d5e741 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/policy/zz_generated.deepcopy.go @@ -0,0 +1,133 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package policy + +import ( + api "k8s.io/client-go/1.5/pkg/api" + unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_Eviction, InType: reflect.TypeOf(&Eviction{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetStatus, InType: reflect.TypeOf(&PodDisruptionBudgetStatus{})}, + ) +} + +func DeepCopy_policy_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Eviction) + out := out.(*Eviction) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.DeleteOptions != nil { + in, out := &in.DeleteOptions, &out.DeleteOptions + *out = new(api.DeleteOptions) + if err := api.DeepCopy_api_DeleteOptions(*in, *out, c); err != nil { + return err + } + } else { + out.DeleteOptions = nil + } + return nil + } +} + +func DeepCopy_policy_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudget) + out := out.(*PodDisruptionBudget) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if err := DeepCopy_policy_PodDisruptionBudgetSpec(&in.Spec, &out.Spec, c); err != nil { + return err + } + out.Status = in.Status + return nil + } +} + +func DeepCopy_policy_PodDisruptionBudgetList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetList) + out := out.(*PodDisruptionBudgetList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]PodDisruptionBudget, len(*in)) + for i := range *in { + if err := DeepCopy_policy_PodDisruptionBudget(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_policy_PodDisruptionBudgetSpec(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetSpec) + out := out.(*PodDisruptionBudgetSpec) + out.MinAvailable = in.MinAvailable + if in.Selector != nil { + in, out := &in.Selector, &out.Selector + *out = new(unversioned.LabelSelector) + if err := unversioned.DeepCopy_unversioned_LabelSelector(*in, *out, c); err != nil { + return err + } + } else { + out.Selector = nil + } + return nil + } +} + +func DeepCopy_policy_PodDisruptionBudgetStatus(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PodDisruptionBudgetStatus) + out := out.(*PodDisruptionBudgetStatus) + out.PodDisruptionAllowed = in.PodDisruptionAllowed + out.CurrentHealthy = in.CurrentHealthy + out.DesiredHealthy = in.DesiredHealthy + out.ExpectedPods = in.ExpectedPods + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/doc.go new file mode 100644 index 0000000000..aefe6e09b1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:openapi-gen=true + +// +groupName=rbac.authorization.k8s.io +package rbac diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/helpers.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/helpers.go new file mode 100644 index 0000000000..4be3bf062c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/helpers.go @@ -0,0 +1,164 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + "fmt" + "strings" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +func RoleRefGroupKind(roleRef RoleRef) unversioned.GroupKind { + return unversioned.GroupKind{Group: roleRef.APIGroup, Kind: roleRef.Kind} +} + +func VerbMatches(rule PolicyRule, requestedVerb string) bool { + for _, ruleVerb := range rule.Verbs { + if ruleVerb == VerbAll { + return true + } + if ruleVerb == requestedVerb { + return true + } + } + + return false +} + +func APIGroupMatches(rule PolicyRule, requestedGroup string) bool { + for _, ruleGroup := range rule.APIGroups { + if ruleGroup == APIGroupAll { + return true + } + if ruleGroup == requestedGroup { + return true + } + } + + return false +} + +func ResourceMatches(rule PolicyRule, requestedResource string) bool { + for _, ruleResource := range rule.Resources { + if ruleResource == ResourceAll { + return true + } + if ruleResource == requestedResource { + return true + } + } + + return false +} + +func ResourceNameMatches(rule PolicyRule, requestedName string) bool { + if len(rule.ResourceNames) == 0 { + return true + } + + for _, ruleName := range rule.ResourceNames { + if ruleName == requestedName { + return true + } + } + + return false +} + +func NonResourceURLMatches(rule PolicyRule, requestedURL string) bool { + for _, ruleURL := range rule.NonResourceURLs { + if ruleURL == NonResourceAll { + return true + } + if ruleURL == requestedURL { + return true + } + if strings.HasSuffix(ruleURL, "*") && strings.HasPrefix(requestedURL, strings.TrimRight(ruleURL, "*")) { + return true + } + } + + return false +} + +// +k8s:deepcopy-gen=false +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +type PolicyRuleBuilder struct { + PolicyRule PolicyRule +} + +func NewRule(verbs ...string) *PolicyRuleBuilder { + return &PolicyRuleBuilder{ + PolicyRule: PolicyRule{Verbs: verbs}, + } +} + +func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder { + r.PolicyRule.APIGroups = append(r.PolicyRule.APIGroups, groups...) + return r +} + +func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder { + r.PolicyRule.Resources = append(r.PolicyRule.Resources, resources...) + return r +} + +func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder { + r.PolicyRule.ResourceNames = append(r.PolicyRule.ResourceNames, names...) + return r +} + +func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder { + r.PolicyRule.NonResourceURLs = append(r.PolicyRule.NonResourceURLs, urls...) + return r +} + +func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule { + ret, err := r.Rule() + if err != nil { + panic(err) + } + return ret +} + +func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) { + if len(r.PolicyRule.Verbs) == 0 { + return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule) + } + + switch { + case len(r.PolicyRule.NonResourceURLs) > 0: + if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 { + return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule) + } + case len(r.PolicyRule.Resources) > 0: + if len(r.PolicyRule.NonResourceURLs) != 0 { + return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule) + } + if len(r.PolicyRule.APIGroups) == 0 { + // this a common bug + return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule) + } + default: + return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule) + } + + return r.PolicyRule, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/install/install.go new file mode 100644 index 0000000000..d02f33943d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the batch API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/rbac" + "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: rbac.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/rbac", + RootScopedKinds: sets.NewString("ClusterRole", "ClusterRoleBinding"), + AddInternalObjectsToScheme: rbac.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/register.go new file mode 100644 index 0000000000..4ac400d942 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/register.go @@ -0,0 +1,65 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Role{}, + &RoleBinding{}, + &RoleBindingList{}, + &RoleList{}, + + &ClusterRole{}, + &ClusterRoleBinding{}, + &ClusterRoleBindingList{}, + &ClusterRoleList{}, + + &api.ListOptions{}, + &api.DeleteOptions{}, + &api.ExportOptions{}, + ) + versioned.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/types.go new file mode 100644 index 0000000000..c2af95acc6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/types.go @@ -0,0 +1,191 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rbac + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +const ( + APIGroupAll = "*" + ResourceAll = "*" + VerbAll = "*" + NonResourceAll = "*" + + GroupKind = "Group" + ServiceAccountKind = "ServiceAccount" + UserKind = "User" + + UserAll = "*" +) + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + Verbs []string + // AttributeRestrictions will vary depending on what the Authorizer/AuthorizationAttributeBuilder pair supports. + // If the Authorizer does not recognize how to handle the AttributeRestrictions, the Authorizer should report an error. + AttributeRestrictions runtime.Object + // APIGroups is the name of the APIGroup that contains the resources. + // If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. + + APIGroups []string + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + Resources []string + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + ResourceNames []string + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // If an action is not a resource API request, then the URL is split on '/' and is checked against the NonResourceURLs to look for a match. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + NonResourceURLs []string +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind string + // APIVersion holds the API group and version of the referenced object. For non-object references such as "Group" and "User" this is + // expected to be API version of this API group. For example, "rbac/v1alpha1". + APIVersion string + // Name of the object being referenced. + Name string + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + Namespace string +} + +// RoleRef contains information that points to the role being used +type RoleRef struct { + // APIGroup is the group for the resource being referenced + APIGroup string + // Kind is the type of resource being referenced + Kind string + // Name is the name of resource being referenced + Name string +} + +// +genclient=true + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + unversioned.TypeMeta + // Standard object's metadata. + api.ObjectMeta + + // Rules holds all the PolicyRules for this Role + Rules []PolicyRule +} + +// +genclient=true + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +type RoleBinding struct { + unversioned.TypeMeta + api.ObjectMeta + + // Subjects holds references to the objects the role applies to. + Subjects []Subject + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef +} + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + unversioned.TypeMeta + // Standard object's metadata. + unversioned.ListMeta + + // Items is a list of roleBindings + Items []RoleBinding +} + +// RoleList is a collection of Roles +type RoleList struct { + unversioned.TypeMeta + // Standard object's metadata. + unversioned.ListMeta + + // Items is a list of roles + Items []Role +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + unversioned.TypeMeta + // Standard object's metadata. + api.ObjectMeta + + // Rules holds all the PolicyRules for this ClusterRole + Rules []PolicyRule +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +type ClusterRoleBinding struct { + unversioned.TypeMeta + // Standard object's metadata. + api.ObjectMeta + + // Subjects holds references to the objects the role applies to. + Subjects []Subject + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + unversioned.TypeMeta + // Standard object's metadata. + unversioned.ListMeta + + // Items is a list of ClusterRoleBindings + Items []ClusterRoleBinding +} + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + unversioned.TypeMeta + // Standard object's metadata. + unversioned.ListMeta + + // Items is a list of ClusterRoles + Items []ClusterRole +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/defaults.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/defaults.go new file mode 100644 index 0000000000..d989a3e020 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/defaults.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return scheme.AddDefaultingFuncs( + func(obj *ClusterRoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } + }, + func(obj *RoleBinding) { + if len(obj.RoleRef.APIGroup) == 0 { + obj.RoleRef.APIGroup = GroupName + } + }, + ) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/doc.go new file mode 100644 index 0000000000..ab6aa6aba4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/doc.go @@ -0,0 +1,22 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/rbac +// +k8s:openapi-gen=true + +// +groupName=rbac.authorization.k8s.io +package v1alpha1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.pb.go new file mode 100644 index 0000000000..fc09bd66fd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.pb.go @@ -0,0 +1,2593 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/generated.proto +// DO NOT EDIT! + +/* + Package v1alpha1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/rbac/v1alpha1/generated.proto + + It has these top-level messages: + ClusterRole + ClusterRoleBinding + ClusterRoleBindingList + ClusterRoleList + PolicyRule + Role + RoleBinding + RoleBindingList + RoleList + RoleRef + Subject +*/ +package v1alpha1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *ClusterRole) Reset() { *m = ClusterRole{} } +func (*ClusterRole) ProtoMessage() {} +func (*ClusterRole) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBinding{} } +func (*ClusterRoleBinding) ProtoMessage() {} +func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} } +func (*ClusterRoleBindingList) ProtoMessage() {} +func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} } +func (*ClusterRoleList) ProtoMessage() {} +func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } + +func (m *PolicyRule) Reset() { *m = PolicyRule{} } +func (*PolicyRule) ProtoMessage() {} +func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } + +func (m *Role) Reset() { *m = Role{} } +func (*Role) ProtoMessage() {} +func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *RoleBinding) Reset() { *m = RoleBinding{} } +func (*RoleBinding) ProtoMessage() {} +func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } + +func (m *RoleBindingList) Reset() { *m = RoleBindingList{} } +func (*RoleBindingList) ProtoMessage() {} +func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } + +func (m *RoleList) Reset() { *m = RoleList{} } +func (*RoleList) ProtoMessage() {} +func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } + +func (m *RoleRef) Reset() { *m = RoleRef{} } +func (*RoleRef) ProtoMessage() {} +func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } + +func (m *Subject) Reset() { *m = Subject{} } +func (*Subject) ProtoMessage() {} +func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } + +func init() { + proto.RegisterType((*ClusterRole)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.ClusterRole") + proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList") + proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.ClusterRoleList") + proto.RegisterType((*PolicyRule)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.PolicyRule") + proto.RegisterType((*Role)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.Role") + proto.RegisterType((*RoleBinding)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.RoleBinding") + proto.RegisterType((*RoleBindingList)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.RoleBindingList") + proto.RegisterType((*RoleList)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.RoleList") + proto.RegisterType((*RoleRef)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.RoleRef") + proto.RegisterType((*Subject)(nil), "k8s.io.client-go.1.5.pkg.apis.rbac.v1alpha1.Subject") +} +func (m *ClusterRole) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ClusterRole) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleBinding) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ClusterRoleBinding) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n2, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.RoleRef.Size())) + n3, err := m.RoleRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 + return i, nil +} + +func (m *ClusterRoleBindingList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ClusterRoleBindingList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n4, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *ClusterRoleList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ClusterRoleList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n5, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n5 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *PolicyRule) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PolicyRule) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + data[i] = 0xa + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.AttributeRestrictions.Size())) + n6, err := m.AttributeRestrictions.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n6 + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + data[i] = 0x1a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + data[i] = 0x22 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + data[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + data[i] = 0x32 + i++ + l = len(s) + for l >= 1<<7 { + data[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + data[i] = uint8(l) + i++ + i += copy(data[i:], s) + } + } + return i, nil +} + +func (m *Role) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Role) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n7, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n7 + if len(m.Rules) > 0 { + for _, msg := range m.Rules { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleBinding) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RoleBinding) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n8, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + if len(m.Subjects) > 0 { + for _, msg := range m.Subjects { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.RoleRef.Size())) + n9, err := m.RoleRef.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n9 + return i, nil +} + +func (m *RoleBindingList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RoleBindingList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n10, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n10 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RoleList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n11, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n11 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *RoleRef) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RoleRef) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIGroup))) + i += copy(data[i:], m.APIGroup) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + return i, nil +} + +func (m *Subject) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Subject) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Namespace))) + i += copy(data[i:], m.Namespace) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *ClusterRole) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterRoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterRoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *PolicyRule) Size() (n int) { + var l int + _ = l + if len(m.Verbs) > 0 { + for _, s := range m.Verbs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.AttributeRestrictions.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.APIGroups) > 0 { + for _, s := range m.APIGroups { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Resources) > 0 { + for _, s := range m.Resources { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.ResourceNames) > 0 { + for _, s := range m.ResourceNames { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.NonResourceURLs) > 0 { + for _, s := range m.NonResourceURLs { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *Role) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleBinding) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Subjects) > 0 { + for _, e := range m.Subjects { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + l = m.RoleRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *RoleBindingList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *RoleRef) Size() (n int) { + var l int + _ = l + l = len(m.APIGroup) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Subject) Size() (n int) { + var l int + _ = l + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Namespace) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *ClusterRole) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRole{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterRoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "ClusterRole", "ClusterRole", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *PolicyRule) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRule{`, + `Verbs:` + fmt.Sprintf("%v", this.Verbs) + `,`, + `AttributeRestrictions:` + strings.Replace(strings.Replace(this.AttributeRestrictions.String(), "RawExtension", "k8s_io_kubernetes_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`, + `Resources:` + fmt.Sprintf("%v", this.Resources) + `,`, + `ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`, + `NonResourceURLs:` + fmt.Sprintf("%v", this.NonResourceURLs) + `,`, + `}`, + }, "") + return s +} +func (this *Role) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Role{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBinding) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBinding{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Subjects:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Subjects), "Subject", "Subject", 1), `&`, ``, 1) + `,`, + `RoleRef:` + strings.Replace(strings.Replace(this.RoleRef.String(), "RoleRef", "RoleRef", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleBindingList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleBindingList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "RoleBinding", "RoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "Role", "Role", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *RoleRef) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RoleRef{`, + `APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} +func (this *Subject) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Subject{`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ClusterRole) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRole: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRole: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBinding) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleBindingList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterRoleList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterRole{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PolicyRule) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verbs = append(m.Verbs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AttributeRestrictions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AttributeRestrictions.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroups", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroups = append(m.APIGroups, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResourceNames = append(m.ResourceNames, string(data[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NonResourceURLs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NonResourceURLs = append(m.NonResourceURLs, string(data[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Role) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Role: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Role: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBinding) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBinding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBinding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Subjects", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Subjects = append(m.Subjects, Subject{}) + if err := m.Subjects[len(m.Subjects)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RoleRef.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleBindingList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleBindingList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleBindingList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, RoleBinding{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, Role{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RoleRef) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RoleRef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RoleRef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIGroup = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Subject) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Subject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Subject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespace = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 800 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x54, 0x41, 0x4f, 0x13, 0x4d, + 0x18, 0x66, 0x69, 0xfb, 0xd1, 0x1d, 0xbe, 0xa6, 0x1f, 0xf3, 0x85, 0x2f, 0x4d, 0x93, 0x0f, 0x48, + 0x4f, 0x8d, 0xc0, 0x6c, 0x4a, 0x24, 0x72, 0xd0, 0x03, 0x6b, 0x8c, 0x21, 0x22, 0x92, 0x21, 0x12, + 0x25, 0x1a, 0xb3, 0x6d, 0x87, 0xb2, 0xb6, 0xdd, 0x6d, 0x76, 0x66, 0x51, 0xe3, 0x85, 0xf8, 0x0b, + 0xfc, 0x15, 0xde, 0xbc, 0x78, 0x35, 0xf1, 0xe0, 0x89, 0x83, 0x07, 0x8e, 0xc6, 0x03, 0x51, 0xfc, + 0x23, 0xbe, 0xb3, 0xbb, 0xd3, 0xdd, 0xd2, 0x56, 0x0a, 0x89, 0x24, 0x26, 0x1e, 0x26, 0xed, 0xbc, + 0xef, 0xf3, 0xbc, 0xf3, 0x3e, 0xef, 0xce, 0x3c, 0x68, 0xa5, 0xb9, 0xc2, 0x89, 0xed, 0x1a, 0x4d, + 0xbf, 0xca, 0x3c, 0x87, 0x09, 0xc6, 0x8d, 0x4e, 0xb3, 0x61, 0x58, 0x1d, 0x9b, 0x1b, 0x5e, 0xd5, + 0xaa, 0x19, 0xfb, 0x15, 0xab, 0xd5, 0xd9, 0xb3, 0x2a, 0x46, 0x83, 0x39, 0xcc, 0xb3, 0x04, 0xab, + 0x93, 0x8e, 0xe7, 0x0a, 0x17, 0x97, 0x43, 0x26, 0x89, 0x99, 0x04, 0x98, 0x44, 0x32, 0x89, 0x64, + 0x12, 0xc5, 0x2c, 0x2e, 0x36, 0x6c, 0xb1, 0xe7, 0x57, 0x49, 0xcd, 0x6d, 0x1b, 0x0d, 0xb7, 0xe1, + 0x1a, 0x41, 0x81, 0xaa, 0xbf, 0x1b, 0xec, 0x82, 0x4d, 0xf0, 0x2f, 0x2c, 0x5c, 0x5c, 0x1a, 0xda, + 0x92, 0xe1, 0x31, 0xee, 0xfa, 0x5e, 0x8d, 0x9d, 0x6e, 0xa6, 0xb8, 0x3c, 0x9c, 0xe3, 0x3b, 0xfb, + 0xcc, 0xe3, 0xb6, 0xeb, 0xb0, 0x7a, 0x1f, 0x6d, 0x61, 0x38, 0x6d, 0xbf, 0x4f, 0x71, 0x71, 0x71, + 0x30, 0xda, 0xf3, 0x1d, 0x61, 0xb7, 0xfb, 0x7b, 0xaa, 0x0c, 0x86, 0xfb, 0xc2, 0x6e, 0x19, 0xb6, + 0x23, 0xb8, 0xf0, 0x4e, 0x53, 0x4a, 0x1f, 0x35, 0x34, 0x79, 0xb3, 0xe5, 0x73, 0xc1, 0x3c, 0xea, + 0xb6, 0x18, 0x7e, 0x80, 0xb2, 0x6d, 0x26, 0xac, 0xba, 0x25, 0xac, 0x82, 0x36, 0xa7, 0x95, 0x27, + 0x97, 0xca, 0x64, 0xe8, 0xd8, 0x61, 0xe0, 0xe4, 0x5e, 0xf5, 0x29, 0xab, 0x89, 0xbb, 0xc0, 0x31, + 0xf1, 0xe1, 0xf1, 0xec, 0xd8, 0xc9, 0xf1, 0x2c, 0x8a, 0x63, 0xb4, 0x5b, 0x0d, 0x3f, 0x44, 0x19, + 0xcf, 0x6f, 0x31, 0x5e, 0x18, 0x9f, 0x4b, 0x41, 0xd9, 0xab, 0x64, 0xd4, 0xaf, 0x49, 0x36, 0xdd, + 0x96, 0x5d, 0x7b, 0x41, 0x81, 0x6c, 0xe6, 0xa2, 0x23, 0x32, 0x72, 0xc7, 0x69, 0x58, 0xb1, 0xf4, + 0x76, 0x1c, 0xe1, 0x84, 0x08, 0xd3, 0x76, 0xea, 0xb6, 0xd3, 0xf8, 0x85, 0x5a, 0x9e, 0xa0, 0x2c, + 0xf7, 0x83, 0x84, 0x92, 0x53, 0x19, 0x5d, 0xce, 0x56, 0xc8, 0x34, 0xff, 0x89, 0x8e, 0xc8, 0x46, + 0x01, 0x4e, 0xbb, 0x45, 0xf1, 0x23, 0x34, 0xe1, 0x81, 0x12, 0xca, 0x76, 0x0b, 0xa9, 0xa0, 0xf3, + 0x73, 0xd4, 0xa7, 0x21, 0xd1, 0xcc, 0x47, 0xf5, 0x27, 0xa2, 0x00, 0x55, 0x25, 0x4b, 0x5f, 0x34, + 0xf4, 0x5f, 0xff, 0xbc, 0xd6, 0x6d, 0x2e, 0xf0, 0xe3, 0xbe, 0x99, 0x19, 0x3f, 0x99, 0x59, 0xe2, + 0xa6, 0x13, 0x49, 0x0f, 0x46, 0xd7, 0xd5, 0xa5, 0x22, 0x89, 0xc1, 0x59, 0x28, 0x63, 0x0b, 0xd6, + 0x56, 0x53, 0xbb, 0x3e, 0xba, 0xaa, 0xfe, 0x7e, 0xe3, 0xcb, 0xb0, 0x26, 0x4b, 0xd2, 0xb0, 0x72, + 0xe9, 0x93, 0x86, 0xf2, 0x09, 0xf0, 0x65, 0xa8, 0xda, 0xe9, 0x55, 0xb5, 0x7c, 0x31, 0x55, 0x83, + 0xe5, 0xbc, 0x4a, 0x21, 0x14, 0x3f, 0x00, 0x3c, 0x8b, 0x32, 0xd0, 0x5c, 0x95, 0x83, 0x8c, 0x54, + 0x59, 0x37, 0x75, 0x89, 0xdf, 0x96, 0x01, 0x1a, 0xc6, 0xf1, 0x81, 0x86, 0xa6, 0x2d, 0x21, 0x3c, + 0xbb, 0xea, 0x0b, 0xf8, 0xd8, 0xf0, 0xe6, 0xed, 0x9a, 0x00, 0x2d, 0xb2, 0x39, 0x29, 0x7c, 0x7e, + 0x48, 0x73, 0x91, 0xa7, 0x10, 0x6a, 0x3d, 0xbb, 0xf5, 0x5c, 0x30, 0x47, 0xea, 0x37, 0xff, 0x8f, + 0x5a, 0x9a, 0x5e, 0x1d, 0x54, 0x91, 0x0e, 0x3e, 0x08, 0xcf, 0x23, 0x1d, 0xa4, 0xde, 0xf6, 0x5c, + 0xbf, 0xc3, 0xe1, 0xfa, 0xca, 0x3e, 0x73, 0x50, 0x44, 0x5f, 0xdd, 0x5c, 0x0b, 0x83, 0x34, 0xce, + 0x4b, 0xb0, 0xf2, 0x58, 0x5e, 0x48, 0xc7, 0x60, 0xaa, 0x82, 0x34, 0xce, 0xe3, 0x6b, 0x28, 0xa7, + 0x36, 0x1b, 0x56, 0x1b, 0x08, 0x99, 0x80, 0x30, 0x05, 0x84, 0x1c, 0x4d, 0x26, 0x68, 0x2f, 0x0e, + 0xdf, 0x40, 0x79, 0xc7, 0x75, 0x14, 0xe4, 0x3e, 0x5d, 0xe7, 0x85, 0xbf, 0x02, 0xea, 0xbf, 0x40, + 0xcd, 0x6f, 0xf4, 0xa6, 0xe8, 0x69, 0x6c, 0xe9, 0xbd, 0x86, 0xd2, 0xbf, 0xaf, 0x3d, 0xbe, 0x19, + 0x47, 0x93, 0x7f, 0x7c, 0x71, 0x04, 0x5f, 0x94, 0xd6, 0x71, 0xc9, 0x86, 0x78, 0x71, 0xeb, 0x38, + 0xdb, 0x09, 0x3f, 0x68, 0x28, 0x7b, 0x59, 0x16, 0xb8, 0xd5, 0xab, 0x83, 0x9c, 0x53, 0xc7, 0x60, + 0x01, 0x2f, 0x91, 0xfa, 0x46, 0x78, 0x01, 0x65, 0x95, 0x67, 0x04, 0xed, 0xeb, 0x71, 0x37, 0xca, + 0x56, 0x68, 0x17, 0x81, 0xe7, 0x50, 0xba, 0x09, 0xa3, 0x09, 0x2c, 0x4f, 0x37, 0xff, 0x8e, 0x90, + 0xe9, 0x3b, 0x10, 0xa3, 0x41, 0x46, 0x22, 0x1c, 0x70, 0x86, 0xe0, 0x16, 0x25, 0x10, 0xd2, 0x2d, + 0x68, 0x90, 0x29, 0xbd, 0xd3, 0xd0, 0x44, 0x74, 0x03, 0xbb, 0xf5, 0xb4, 0xa1, 0xf5, 0x96, 0x10, + 0x82, 0xd3, 0xb7, 0xc3, 0xa1, 0x45, 0xe7, 0x76, 0xdf, 0x0a, 0x74, 0x18, 0x65, 0x68, 0x02, 0x75, + 0x76, 0x0f, 0xd8, 0x40, 0xba, 0xfc, 0xe5, 0x1d, 0xab, 0xc6, 0xc0, 0x1c, 0x25, 0x6c, 0x2a, 0x82, + 0xe9, 0x1b, 0x2a, 0x41, 0x63, 0x8c, 0x79, 0xe5, 0xf0, 0xdb, 0xcc, 0xd8, 0x11, 0xac, 0xcf, 0xb0, + 0x0e, 0x4e, 0x66, 0xb4, 0x43, 0x58, 0x47, 0xb0, 0xbe, 0xc2, 0x7a, 0xfd, 0x7d, 0x66, 0x6c, 0x27, + 0xab, 0x06, 0xff, 0x23, 0x00, 0x00, 0xff, 0xff, 0x62, 0x32, 0x8a, 0x1f, 0x89, 0x0b, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.proto new file mode 100644 index 0000000000..ebb657c4a9 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/generated.proto @@ -0,0 +1,172 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.rbac.v1alpha1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1alpha1"; + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +message ClusterRole { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this ClusterRole + repeated PolicyRule rules = 2; +} + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +message ClusterRoleBinding { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +message ClusterRoleBindingList { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of ClusterRoleBindings + repeated ClusterRoleBinding items = 2; +} + +// ClusterRoleList is a collection of ClusterRoles +message ClusterRoleList { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of ClusterRoles + repeated ClusterRole items = 2; +} + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +message PolicyRule { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + repeated string verbs = 1; + + // AttributeRestrictions will vary depending on what the Authorizer/AuthorizationAttributeBuilder pair supports. + // If the Authorizer does not recognize how to handle the AttributeRestrictions, the Authorizer should report an error. + optional k8s.io.kubernetes.pkg.runtime.RawExtension attributeRestrictions = 2; + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + repeated string apiGroups = 3; + + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + repeated string resources = 4; + + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + repeated string resourceNames = 5; + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + repeated string nonResourceURLs = 6; +} + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +message Role { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Rules holds all the PolicyRules for this Role + repeated PolicyRule rules = 2; +} + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +message RoleBinding { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Subjects holds references to the objects the role applies to. + repeated Subject subjects = 2; + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + optional RoleRef roleRef = 3; +} + +// RoleBindingList is a collection of RoleBindings +message RoleBindingList { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of RoleBindings + repeated RoleBinding items = 2; +} + +// RoleList is a collection of Roles +message RoleList { + // Standard object's metadata. + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is a list of Roles + repeated Role items = 2; +} + +// RoleRef contains information that points to the role being used +message RoleRef { + // APIGroup is the group for the resource being referenced + optional string apiGroup = 1; + + // Kind is the type of resource being referenced + optional string kind = 2; + + // Name is the name of resource being referenced + optional string name = 3; +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +message Subject { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + optional string kind = 1; + + // APIVersion holds the API group and version of the referenced object. + optional string apiVersion = 2; + + // Name of the object being referenced. + optional string name = 3; + + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + optional string namespace = 4; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/register.go new file mode 100644 index 0000000000..7657ecc298 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/register.go @@ -0,0 +1,55 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +const GroupName = "rbac.authorization.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Role{}, + &RoleBinding{}, + &RoleBindingList{}, + &RoleList{}, + + &ClusterRole{}, + &ClusterRoleBinding{}, + &ClusterRoleBindingList{}, + &ClusterRoleList{}, + + &v1.ListOptions{}, + &v1.DeleteOptions{}, + &v1.ExportOptions{}, + ) + versioned.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.generated.go new file mode 100644 index 0000000000..7113b91496 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.generated.go @@ -0,0 +1,4567 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1alpha1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg1_runtime "k8s.io/client-go/1.5/pkg/runtime" + pkg4_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_unversioned.TypeMeta + var v1 pkg3_v1.ObjectMeta + var v2 pkg1_runtime.RawExtension + var v3 pkg4_types.UID + var v4 time.Time + _, _, _, _, _ = v0, v1, v2, v3, v4 + } +} + +func (x *PolicyRule) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [6]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[1] = true + yyq2[2] = len(x.APIGroups) != 0 + yyq2[3] = len(x.Resources) != 0 + yyq2[4] = len(x.ResourceNames) != 0 + yyq2[5] = len(x.NonResourceURLs) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(6) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("verbs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Verbs == nil { + r.EncodeNil() + } else { + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + z.F.EncSliceStringV(x.Verbs, false, e) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yy7 := &x.AttributeRestrictions + yym8 := z.EncBinary() + _ = yym8 + if false { + } else if z.HasExtensions() && z.EncExt(yy7) { + } else if !yym8 && z.IsJSONHandle() { + z.EncJSONMarshal(yy7) + } else { + z.EncFallback(yy7) + } + } else { + r.EncodeNil() + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("attributeRestrictions")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy9 := &x.AttributeRestrictions + yym10 := z.EncBinary() + _ = yym10 + if false { + } else if z.HasExtensions() && z.EncExt(yy9) { + } else if !yym10 && z.IsJSONHandle() { + z.EncJSONMarshal(yy9) + } else { + z.EncFallback(yy9) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym12 := z.EncBinary() + _ = yym12 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroups")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.APIGroups == nil { + r.EncodeNil() + } else { + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + z.F.EncSliceStringV(x.APIGroups, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[3] { + if x.Resources == nil { + r.EncodeNil() + } else { + yym15 := z.EncBinary() + _ = yym15 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resources")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Resources == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncSliceStringV(x.Resources, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym18 := z.EncBinary() + _ = yym18 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("resourceNames")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.ResourceNames == nil { + r.EncodeNil() + } else { + yym19 := z.EncBinary() + _ = yym19 + if false { + } else { + z.F.EncSliceStringV(x.ResourceNames, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[5] { + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym21 := z.EncBinary() + _ = yym21 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[5] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("nonResourceURLs")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.NonResourceURLs == nil { + r.EncodeNil() + } else { + yym22 := z.EncBinary() + _ = yym22 + if false { + } else { + z.F.EncSliceStringV(x.NonResourceURLs, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *PolicyRule) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym23 := z.DecBinary() + _ = yym23 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct24 := r.ContainerType() + if yyct24 == codecSelferValueTypeMap1234 { + yyl24 := r.ReadMapStart() + if yyl24 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl24, d) + } + } else if yyct24 == codecSelferValueTypeArray1234 { + yyl24 := r.ReadArrayStart() + if yyl24 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl24, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *PolicyRule) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys25Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys25Slc + var yyhl25 bool = l >= 0 + for yyj25 := 0; ; yyj25++ { + if yyhl25 { + if yyj25 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys25Slc = r.DecodeBytes(yys25Slc, true, true) + yys25 := string(yys25Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys25 { + case "verbs": + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv26 := &x.Verbs + yym27 := z.DecBinary() + _ = yym27 + if false { + } else { + z.F.DecSliceStringX(yyv26, false, d) + } + } + case "attributeRestrictions": + if r.TryDecodeAsNil() { + x.AttributeRestrictions = pkg1_runtime.RawExtension{} + } else { + yyv28 := &x.AttributeRestrictions + yym29 := z.DecBinary() + _ = yym29 + if false { + } else if z.HasExtensions() && z.DecExt(yyv28) { + } else if !yym29 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv28) + } else { + z.DecFallback(yyv28, false) + } + } + case "apiGroups": + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv30 := &x.APIGroups + yym31 := z.DecBinary() + _ = yym31 + if false { + } else { + z.F.DecSliceStringX(yyv30, false, d) + } + } + case "resources": + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv32 := &x.Resources + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + z.F.DecSliceStringX(yyv32, false, d) + } + } + case "resourceNames": + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv34 := &x.ResourceNames + yym35 := z.DecBinary() + _ = yym35 + if false { + } else { + z.F.DecSliceStringX(yyv34, false, d) + } + } + case "nonResourceURLs": + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv36 := &x.NonResourceURLs + yym37 := z.DecBinary() + _ = yym37 + if false { + } else { + z.F.DecSliceStringX(yyv36, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys25) + } // end switch yys25 + } // end for yyj25 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *PolicyRule) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj38 int + var yyb38 bool + var yyhl38 bool = l >= 0 + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Verbs = nil + } else { + yyv39 := &x.Verbs + yym40 := z.DecBinary() + _ = yym40 + if false { + } else { + z.F.DecSliceStringX(yyv39, false, d) + } + } + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.AttributeRestrictions = pkg1_runtime.RawExtension{} + } else { + yyv41 := &x.AttributeRestrictions + yym42 := z.DecBinary() + _ = yym42 + if false { + } else if z.HasExtensions() && z.DecExt(yyv41) { + } else if !yym42 && z.IsJSONHandle() { + z.DecJSONUnmarshal(yyv41) + } else { + z.DecFallback(yyv41, false) + } + } + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroups = nil + } else { + yyv43 := &x.APIGroups + yym44 := z.DecBinary() + _ = yym44 + if false { + } else { + z.F.DecSliceStringX(yyv43, false, d) + } + } + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Resources = nil + } else { + yyv45 := &x.Resources + yym46 := z.DecBinary() + _ = yym46 + if false { + } else { + z.F.DecSliceStringX(yyv45, false, d) + } + } + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ResourceNames = nil + } else { + yyv47 := &x.ResourceNames + yym48 := z.DecBinary() + _ = yym48 + if false { + } else { + z.F.DecSliceStringX(yyv47, false, d) + } + } + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.NonResourceURLs = nil + } else { + yyv49 := &x.NonResourceURLs + yym50 := z.DecBinary() + _ = yym50 + if false { + } else { + z.F.DecSliceStringX(yyv49, false, d) + } + } + for { + yyj38++ + if yyhl38 { + yyb38 = yyj38 > l + } else { + yyb38 = r.CheckBreak() + } + if yyb38 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj38-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Subject) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym51 := z.EncBinary() + _ = yym51 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep52 := !z.EncBinary() + yy2arr52 := z.EncBasicHandle().StructToArray + var yyq52 [4]bool + _, _, _ = yysep52, yyq52, yy2arr52 + const yyr52 bool = false + yyq52[1] = x.APIVersion != "" + yyq52[3] = x.Namespace != "" + var yynn52 int + if yyr52 || yy2arr52 { + r.EncodeArrayStart(4) + } else { + yynn52 = 2 + for _, b := range yyq52 { + if b { + yynn52++ + } + } + r.EncodeMapStart(yynn52) + yynn52 = 0 + } + if yyr52 || yy2arr52 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym54 := z.EncBinary() + _ = yym54 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym55 := z.EncBinary() + _ = yym55 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr52 || yy2arr52 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq52[1] { + yym57 := z.EncBinary() + _ = yym57 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq52[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym58 := z.EncBinary() + _ = yym58 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr52 || yy2arr52 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym60 := z.EncBinary() + _ = yym60 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym61 := z.EncBinary() + _ = yym61 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr52 || yy2arr52 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq52[3] { + yym63 := z.EncBinary() + _ = yym63 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq52[3] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("namespace")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym64 := z.EncBinary() + _ = yym64 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Namespace)) + } + } + } + if yyr52 || yy2arr52 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Subject) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym65 := z.DecBinary() + _ = yym65 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct66 := r.ContainerType() + if yyct66 == codecSelferValueTypeMap1234 { + yyl66 := r.ReadMapStart() + if yyl66 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl66, d) + } + } else if yyct66 == codecSelferValueTypeArray1234 { + yyl66 := r.ReadArrayStart() + if yyl66 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl66, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Subject) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys67Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys67Slc + var yyhl67 bool = l >= 0 + for yyj67 := 0; ; yyj67++ { + if yyhl67 { + if yyj67 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys67Slc = r.DecodeBytes(yys67Slc, true, true) + yys67 := string(yys67Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys67 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + case "namespace": + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys67) + } // end switch yys67 + } // end for yyj67 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Subject) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj72 int + var yyb72 bool + var yyhl72 bool = l >= 0 + yyj72++ + if yyhl72 { + yyb72 = yyj72 > l + } else { + yyb72 = r.CheckBreak() + } + if yyb72 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj72++ + if yyhl72 { + yyb72 = yyj72 > l + } else { + yyb72 = r.CheckBreak() + } + if yyb72 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj72++ + if yyhl72 { + yyb72 = yyj72 > l + } else { + yyb72 = r.CheckBreak() + } + if yyb72 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + yyj72++ + if yyhl72 { + yyb72 = yyj72 > l + } else { + yyb72 = r.CheckBreak() + } + if yyb72 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Namespace = "" + } else { + x.Namespace = string(r.DecodeString()) + } + for { + yyj72++ + if yyhl72 { + yyb72 = yyj72 > l + } else { + yyb72 = r.CheckBreak() + } + if yyb72 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj72-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleRef) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym77 := z.EncBinary() + _ = yym77 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep78 := !z.EncBinary() + yy2arr78 := z.EncBasicHandle().StructToArray + var yyq78 [3]bool + _, _, _ = yysep78, yyq78, yy2arr78 + const yyr78 bool = false + var yynn78 int + if yyr78 || yy2arr78 { + r.EncodeArrayStart(3) + } else { + yynn78 = 3 + for _, b := range yyq78 { + if b { + yynn78++ + } + } + r.EncodeMapStart(yynn78) + yynn78 = 0 + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym80 := z.EncBinary() + _ = yym80 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiGroup")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym81 := z.EncBinary() + _ = yym81 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIGroup)) + } + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym83 := z.EncBinary() + _ = yym83 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym84 := z.EncBinary() + _ = yym84 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym86 := z.EncBinary() + _ = yym86 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("name")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym87 := z.EncBinary() + _ = yym87 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Name)) + } + } + if yyr78 || yy2arr78 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleRef) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym88 := z.DecBinary() + _ = yym88 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct89 := r.ContainerType() + if yyct89 == codecSelferValueTypeMap1234 { + yyl89 := r.ReadMapStart() + if yyl89 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl89, d) + } + } else if yyct89 == codecSelferValueTypeArray1234 { + yyl89 := r.ReadArrayStart() + if yyl89 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl89, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleRef) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys90Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys90Slc + var yyhl90 bool = l >= 0 + for yyj90 := 0; ; yyj90++ { + if yyhl90 { + if yyj90 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys90Slc = r.DecodeBytes(yys90Slc, true, true) + yys90 := string(yys90Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys90 { + case "apiGroup": + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + x.APIGroup = string(r.DecodeString()) + } + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "name": + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + default: + z.DecStructFieldNotFound(-1, yys90) + } // end switch yys90 + } // end for yyj90 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleRef) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj94 int + var yyb94 bool + var yyhl94 bool = l >= 0 + yyj94++ + if yyhl94 { + yyb94 = yyj94 > l + } else { + yyb94 = r.CheckBreak() + } + if yyb94 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIGroup = "" + } else { + x.APIGroup = string(r.DecodeString()) + } + yyj94++ + if yyhl94 { + yyb94 = yyj94 > l + } else { + yyb94 = r.CheckBreak() + } + if yyb94 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj94++ + if yyhl94 { + yyb94 = yyj94 > l + } else { + yyb94 = r.CheckBreak() + } + if yyb94 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Name = "" + } else { + x.Name = string(r.DecodeString()) + } + for { + yyj94++ + if yyhl94 { + yyb94 = yyj94 > l + } else { + yyb94 = r.CheckBreak() + } + if yyb94 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj94-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *Role) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym98 := z.EncBinary() + _ = yym98 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep99 := !z.EncBinary() + yy2arr99 := z.EncBasicHandle().StructToArray + var yyq99 [4]bool + _, _, _ = yysep99, yyq99, yy2arr99 + const yyr99 bool = false + yyq99[0] = x.Kind != "" + yyq99[1] = x.APIVersion != "" + yyq99[2] = true + var yynn99 int + if yyr99 || yy2arr99 { + r.EncodeArrayStart(4) + } else { + yynn99 = 1 + for _, b := range yyq99 { + if b { + yynn99++ + } + } + r.EncodeMapStart(yynn99) + yynn99 = 0 + } + if yyr99 || yy2arr99 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq99[0] { + yym101 := z.EncBinary() + _ = yym101 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq99[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym102 := z.EncBinary() + _ = yym102 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr99 || yy2arr99 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq99[1] { + yym104 := z.EncBinary() + _ = yym104 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq99[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym105 := z.EncBinary() + _ = yym105 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr99 || yy2arr99 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq99[2] { + yy107 := &x.ObjectMeta + yy107.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq99[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy108 := &x.ObjectMeta + yy108.CodecEncodeSelf(e) + } + } + if yyr99 || yy2arr99 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym110 := z.EncBinary() + _ = yym110 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym111 := z.EncBinary() + _ = yym111 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr99 || yy2arr99 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *Role) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym112 := z.DecBinary() + _ = yym112 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct113 := r.ContainerType() + if yyct113 == codecSelferValueTypeMap1234 { + yyl113 := r.ReadMapStart() + if yyl113 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl113, d) + } + } else if yyct113 == codecSelferValueTypeArray1234 { + yyl113 := r.ReadArrayStart() + if yyl113 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl113, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *Role) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys114Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys114Slc + var yyhl114 bool = l >= 0 + for yyj114 := 0; ; yyj114++ { + if yyhl114 { + if yyj114 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys114Slc = r.DecodeBytes(yys114Slc, true, true) + yys114 := string(yys114Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys114 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv117 := &x.ObjectMeta + yyv117.CodecDecodeSelf(d) + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv118 := &x.Rules + yym119 := z.DecBinary() + _ = yym119 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv118), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys114) + } // end switch yys114 + } // end for yyj114 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *Role) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj120 int + var yyb120 bool + var yyhl120 bool = l >= 0 + yyj120++ + if yyhl120 { + yyb120 = yyj120 > l + } else { + yyb120 = r.CheckBreak() + } + if yyb120 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj120++ + if yyhl120 { + yyb120 = yyj120 > l + } else { + yyb120 = r.CheckBreak() + } + if yyb120 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj120++ + if yyhl120 { + yyb120 = yyj120 > l + } else { + yyb120 = r.CheckBreak() + } + if yyb120 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv123 := &x.ObjectMeta + yyv123.CodecDecodeSelf(d) + } + yyj120++ + if yyhl120 { + yyb120 = yyj120 > l + } else { + yyb120 = r.CheckBreak() + } + if yyb120 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv124 := &x.Rules + yym125 := z.DecBinary() + _ = yym125 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv124), d) + } + } + for { + yyj120++ + if yyhl120 { + yyb120 = yyj120 > l + } else { + yyb120 = r.CheckBreak() + } + if yyb120 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj120-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym126 := z.EncBinary() + _ = yym126 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep127 := !z.EncBinary() + yy2arr127 := z.EncBasicHandle().StructToArray + var yyq127 [5]bool + _, _, _ = yysep127, yyq127, yy2arr127 + const yyr127 bool = false + yyq127[0] = x.Kind != "" + yyq127[1] = x.APIVersion != "" + yyq127[2] = true + var yynn127 int + if yyr127 || yy2arr127 { + r.EncodeArrayStart(5) + } else { + yynn127 = 2 + for _, b := range yyq127 { + if b { + yynn127++ + } + } + r.EncodeMapStart(yynn127) + yynn127 = 0 + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq127[0] { + yym129 := z.EncBinary() + _ = yym129 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq127[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym130 := z.EncBinary() + _ = yym130 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq127[1] { + yym132 := z.EncBinary() + _ = yym132 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq127[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym133 := z.EncBinary() + _ = yym133 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq127[2] { + yy135 := &x.ObjectMeta + yy135.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq127[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy136 := &x.ObjectMeta + yy136.CodecEncodeSelf(e) + } + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym138 := z.EncBinary() + _ = yym138 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym139 := z.EncBinary() + _ = yym139 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy141 := &x.RoleRef + yy141.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy142 := &x.RoleRef + yy142.CodecEncodeSelf(e) + } + if yyr127 || yy2arr127 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym143 := z.DecBinary() + _ = yym143 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct144 := r.ContainerType() + if yyct144 == codecSelferValueTypeMap1234 { + yyl144 := r.ReadMapStart() + if yyl144 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl144, d) + } + } else if yyct144 == codecSelferValueTypeArray1234 { + yyl144 := r.ReadArrayStart() + if yyl144 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl144, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys145Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys145Slc + var yyhl145 bool = l >= 0 + for yyj145 := 0; ; yyj145++ { + if yyhl145 { + if yyj145 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys145Slc = r.DecodeBytes(yys145Slc, true, true) + yys145 := string(yys145Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys145 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv148 := &x.ObjectMeta + yyv148.CodecDecodeSelf(d) + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv149 := &x.Subjects + yym150 := z.DecBinary() + _ = yym150 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv149), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv151 := &x.RoleRef + yyv151.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys145) + } // end switch yys145 + } // end for yyj145 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj152 int + var yyb152 bool + var yyhl152 bool = l >= 0 + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv155 := &x.ObjectMeta + yyv155.CodecDecodeSelf(d) + } + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv156 := &x.Subjects + yym157 := z.DecBinary() + _ = yym157 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv156), d) + } + } + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv158 := &x.RoleRef + yyv158.CodecDecodeSelf(d) + } + for { + yyj152++ + if yyhl152 { + yyb152 = yyj152 > l + } else { + yyb152 = r.CheckBreak() + } + if yyb152 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj152-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym159 := z.EncBinary() + _ = yym159 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep160 := !z.EncBinary() + yy2arr160 := z.EncBasicHandle().StructToArray + var yyq160 [4]bool + _, _, _ = yysep160, yyq160, yy2arr160 + const yyr160 bool = false + yyq160[0] = x.Kind != "" + yyq160[1] = x.APIVersion != "" + yyq160[2] = true + var yynn160 int + if yyr160 || yy2arr160 { + r.EncodeArrayStart(4) + } else { + yynn160 = 1 + for _, b := range yyq160 { + if b { + yynn160++ + } + } + r.EncodeMapStart(yynn160) + yynn160 = 0 + } + if yyr160 || yy2arr160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq160[0] { + yym162 := z.EncBinary() + _ = yym162 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq160[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym163 := z.EncBinary() + _ = yym163 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr160 || yy2arr160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq160[1] { + yym165 := z.EncBinary() + _ = yym165 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq160[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym166 := z.EncBinary() + _ = yym166 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr160 || yy2arr160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq160[2] { + yy168 := &x.ListMeta + yym169 := z.EncBinary() + _ = yym169 + if false { + } else if z.HasExtensions() && z.EncExt(yy168) { + } else { + z.EncFallback(yy168) + } + } else { + r.EncodeNil() + } + } else { + if yyq160[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy170 := &x.ListMeta + yym171 := z.EncBinary() + _ = yym171 + if false { + } else if z.HasExtensions() && z.EncExt(yy170) { + } else { + z.EncFallback(yy170) + } + } + } + if yyr160 || yy2arr160 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym173 := z.EncBinary() + _ = yym173 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym174 := z.EncBinary() + _ = yym174 + if false { + } else { + h.encSliceRoleBinding(([]RoleBinding)(x.Items), e) + } + } + } + if yyr160 || yy2arr160 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym175 := z.DecBinary() + _ = yym175 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct176 := r.ContainerType() + if yyct176 == codecSelferValueTypeMap1234 { + yyl176 := r.ReadMapStart() + if yyl176 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl176, d) + } + } else if yyct176 == codecSelferValueTypeArray1234 { + yyl176 := r.ReadArrayStart() + if yyl176 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl176, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys177Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys177Slc + var yyhl177 bool = l >= 0 + for yyj177 := 0; ; yyj177++ { + if yyhl177 { + if yyj177 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys177Slc = r.DecodeBytes(yys177Slc, true, true) + yys177 := string(yys177Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys177 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv180 := &x.ListMeta + yym181 := z.DecBinary() + _ = yym181 + if false { + } else if z.HasExtensions() && z.DecExt(yyv180) { + } else { + z.DecFallback(yyv180, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv182 := &x.Items + yym183 := z.DecBinary() + _ = yym183 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv182), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys177) + } // end switch yys177 + } // end for yyj177 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj184 int + var yyb184 bool + var yyhl184 bool = l >= 0 + yyj184++ + if yyhl184 { + yyb184 = yyj184 > l + } else { + yyb184 = r.CheckBreak() + } + if yyb184 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj184++ + if yyhl184 { + yyb184 = yyj184 > l + } else { + yyb184 = r.CheckBreak() + } + if yyb184 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj184++ + if yyhl184 { + yyb184 = yyj184 > l + } else { + yyb184 = r.CheckBreak() + } + if yyb184 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv187 := &x.ListMeta + yym188 := z.DecBinary() + _ = yym188 + if false { + } else if z.HasExtensions() && z.DecExt(yyv187) { + } else { + z.DecFallback(yyv187, false) + } + } + yyj184++ + if yyhl184 { + yyb184 = yyj184 > l + } else { + yyb184 = r.CheckBreak() + } + if yyb184 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv189 := &x.Items + yym190 := z.DecBinary() + _ = yym190 + if false { + } else { + h.decSliceRoleBinding((*[]RoleBinding)(yyv189), d) + } + } + for { + yyj184++ + if yyhl184 { + yyb184 = yyj184 > l + } else { + yyb184 = r.CheckBreak() + } + if yyb184 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj184-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *RoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym191 := z.EncBinary() + _ = yym191 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep192 := !z.EncBinary() + yy2arr192 := z.EncBasicHandle().StructToArray + var yyq192 [4]bool + _, _, _ = yysep192, yyq192, yy2arr192 + const yyr192 bool = false + yyq192[0] = x.Kind != "" + yyq192[1] = x.APIVersion != "" + yyq192[2] = true + var yynn192 int + if yyr192 || yy2arr192 { + r.EncodeArrayStart(4) + } else { + yynn192 = 1 + for _, b := range yyq192 { + if b { + yynn192++ + } + } + r.EncodeMapStart(yynn192) + yynn192 = 0 + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq192[0] { + yym194 := z.EncBinary() + _ = yym194 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq192[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym195 := z.EncBinary() + _ = yym195 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq192[1] { + yym197 := z.EncBinary() + _ = yym197 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq192[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym198 := z.EncBinary() + _ = yym198 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq192[2] { + yy200 := &x.ListMeta + yym201 := z.EncBinary() + _ = yym201 + if false { + } else if z.HasExtensions() && z.EncExt(yy200) { + } else { + z.EncFallback(yy200) + } + } else { + r.EncodeNil() + } + } else { + if yyq192[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy202 := &x.ListMeta + yym203 := z.EncBinary() + _ = yym203 + if false { + } else if z.HasExtensions() && z.EncExt(yy202) { + } else { + z.EncFallback(yy202) + } + } + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym205 := z.EncBinary() + _ = yym205 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym206 := z.EncBinary() + _ = yym206 + if false { + } else { + h.encSliceRole(([]Role)(x.Items), e) + } + } + } + if yyr192 || yy2arr192 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *RoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym207 := z.DecBinary() + _ = yym207 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct208 := r.ContainerType() + if yyct208 == codecSelferValueTypeMap1234 { + yyl208 := r.ReadMapStart() + if yyl208 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl208, d) + } + } else if yyct208 == codecSelferValueTypeArray1234 { + yyl208 := r.ReadArrayStart() + if yyl208 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl208, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *RoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys209Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys209Slc + var yyhl209 bool = l >= 0 + for yyj209 := 0; ; yyj209++ { + if yyhl209 { + if yyj209 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys209Slc = r.DecodeBytes(yys209Slc, true, true) + yys209 := string(yys209Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys209 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv212 := &x.ListMeta + yym213 := z.DecBinary() + _ = yym213 + if false { + } else if z.HasExtensions() && z.DecExt(yyv212) { + } else { + z.DecFallback(yyv212, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv214 := &x.Items + yym215 := z.DecBinary() + _ = yym215 + if false { + } else { + h.decSliceRole((*[]Role)(yyv214), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys209) + } // end switch yys209 + } // end for yyj209 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *RoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj216 int + var yyb216 bool + var yyhl216 bool = l >= 0 + yyj216++ + if yyhl216 { + yyb216 = yyj216 > l + } else { + yyb216 = r.CheckBreak() + } + if yyb216 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj216++ + if yyhl216 { + yyb216 = yyj216 > l + } else { + yyb216 = r.CheckBreak() + } + if yyb216 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj216++ + if yyhl216 { + yyb216 = yyj216 > l + } else { + yyb216 = r.CheckBreak() + } + if yyb216 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv219 := &x.ListMeta + yym220 := z.DecBinary() + _ = yym220 + if false { + } else if z.HasExtensions() && z.DecExt(yyv219) { + } else { + z.DecFallback(yyv219, false) + } + } + yyj216++ + if yyhl216 { + yyb216 = yyj216 > l + } else { + yyb216 = r.CheckBreak() + } + if yyb216 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv221 := &x.Items + yym222 := z.DecBinary() + _ = yym222 + if false { + } else { + h.decSliceRole((*[]Role)(yyv221), d) + } + } + for { + yyj216++ + if yyhl216 { + yyb216 = yyj216 > l + } else { + yyb216 = r.CheckBreak() + } + if yyb216 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj216-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRole) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym223 := z.EncBinary() + _ = yym223 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep224 := !z.EncBinary() + yy2arr224 := z.EncBasicHandle().StructToArray + var yyq224 [4]bool + _, _, _ = yysep224, yyq224, yy2arr224 + const yyr224 bool = false + yyq224[0] = x.Kind != "" + yyq224[1] = x.APIVersion != "" + yyq224[2] = true + var yynn224 int + if yyr224 || yy2arr224 { + r.EncodeArrayStart(4) + } else { + yynn224 = 1 + for _, b := range yyq224 { + if b { + yynn224++ + } + } + r.EncodeMapStart(yynn224) + yynn224 = 0 + } + if yyr224 || yy2arr224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq224[0] { + yym226 := z.EncBinary() + _ = yym226 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq224[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym227 := z.EncBinary() + _ = yym227 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr224 || yy2arr224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq224[1] { + yym229 := z.EncBinary() + _ = yym229 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq224[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym230 := z.EncBinary() + _ = yym230 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr224 || yy2arr224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq224[2] { + yy232 := &x.ObjectMeta + yy232.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq224[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy233 := &x.ObjectMeta + yy233.CodecEncodeSelf(e) + } + } + if yyr224 || yy2arr224 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym235 := z.EncBinary() + _ = yym235 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("rules")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Rules == nil { + r.EncodeNil() + } else { + yym236 := z.EncBinary() + _ = yym236 + if false { + } else { + h.encSlicePolicyRule(([]PolicyRule)(x.Rules), e) + } + } + } + if yyr224 || yy2arr224 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRole) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym237 := z.DecBinary() + _ = yym237 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct238 := r.ContainerType() + if yyct238 == codecSelferValueTypeMap1234 { + yyl238 := r.ReadMapStart() + if yyl238 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl238, d) + } + } else if yyct238 == codecSelferValueTypeArray1234 { + yyl238 := r.ReadArrayStart() + if yyl238 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl238, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRole) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys239Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys239Slc + var yyhl239 bool = l >= 0 + for yyj239 := 0; ; yyj239++ { + if yyhl239 { + if yyj239 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys239Slc = r.DecodeBytes(yys239Slc, true, true) + yys239 := string(yys239Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys239 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv242 := &x.ObjectMeta + yyv242.CodecDecodeSelf(d) + } + case "rules": + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv243 := &x.Rules + yym244 := z.DecBinary() + _ = yym244 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv243), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys239) + } // end switch yys239 + } // end for yyj239 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRole) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj245 int + var yyb245 bool + var yyhl245 bool = l >= 0 + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv248 := &x.ObjectMeta + yyv248.CodecDecodeSelf(d) + } + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Rules = nil + } else { + yyv249 := &x.Rules + yym250 := z.DecBinary() + _ = yym250 + if false { + } else { + h.decSlicePolicyRule((*[]PolicyRule)(yyv249), d) + } + } + for { + yyj245++ + if yyhl245 { + yyb245 = yyj245 > l + } else { + yyb245 = r.CheckBreak() + } + if yyb245 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj245-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBinding) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym251 := z.EncBinary() + _ = yym251 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep252 := !z.EncBinary() + yy2arr252 := z.EncBasicHandle().StructToArray + var yyq252 [5]bool + _, _, _ = yysep252, yyq252, yy2arr252 + const yyr252 bool = false + yyq252[0] = x.Kind != "" + yyq252[1] = x.APIVersion != "" + yyq252[2] = true + var yynn252 int + if yyr252 || yy2arr252 { + r.EncodeArrayStart(5) + } else { + yynn252 = 2 + for _, b := range yyq252 { + if b { + yynn252++ + } + } + r.EncodeMapStart(yynn252) + yynn252 = 0 + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq252[0] { + yym254 := z.EncBinary() + _ = yym254 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq252[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym255 := z.EncBinary() + _ = yym255 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq252[1] { + yym257 := z.EncBinary() + _ = yym257 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq252[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym258 := z.EncBinary() + _ = yym258 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq252[2] { + yy260 := &x.ObjectMeta + yy260.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq252[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy261 := &x.ObjectMeta + yy261.CodecEncodeSelf(e) + } + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym263 := z.EncBinary() + _ = yym263 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("subjects")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Subjects == nil { + r.EncodeNil() + } else { + yym264 := z.EncBinary() + _ = yym264 + if false { + } else { + h.encSliceSubject(([]Subject)(x.Subjects), e) + } + } + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy266 := &x.RoleRef + yy266.CodecEncodeSelf(e) + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("roleRef")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy267 := &x.RoleRef + yy267.CodecEncodeSelf(e) + } + if yyr252 || yy2arr252 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBinding) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym268 := z.DecBinary() + _ = yym268 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct269 := r.ContainerType() + if yyct269 == codecSelferValueTypeMap1234 { + yyl269 := r.ReadMapStart() + if yyl269 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl269, d) + } + } else if yyct269 == codecSelferValueTypeArray1234 { + yyl269 := r.ReadArrayStart() + if yyl269 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl269, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys270Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys270Slc + var yyhl270 bool = l >= 0 + for yyj270 := 0; ; yyj270++ { + if yyhl270 { + if yyj270 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys270Slc = r.DecodeBytes(yys270Slc, true, true) + yys270 := string(yys270Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys270 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv273 := &x.ObjectMeta + yyv273.CodecDecodeSelf(d) + } + case "subjects": + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv274 := &x.Subjects + yym275 := z.DecBinary() + _ = yym275 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv274), d) + } + } + case "roleRef": + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv276 := &x.RoleRef + yyv276.CodecDecodeSelf(d) + } + default: + z.DecStructFieldNotFound(-1, yys270) + } // end switch yys270 + } // end for yyj270 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBinding) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj277 int + var yyb277 bool + var yyhl277 bool = l >= 0 + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg3_v1.ObjectMeta{} + } else { + yyv280 := &x.ObjectMeta + yyv280.CodecDecodeSelf(d) + } + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Subjects = nil + } else { + yyv281 := &x.Subjects + yym282 := z.DecBinary() + _ = yym282 + if false { + } else { + h.decSliceSubject((*[]Subject)(yyv281), d) + } + } + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.RoleRef = RoleRef{} + } else { + yyv283 := &x.RoleRef + yyv283.CodecDecodeSelf(d) + } + for { + yyj277++ + if yyhl277 { + yyb277 = yyj277 > l + } else { + yyb277 = r.CheckBreak() + } + if yyb277 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj277-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleBindingList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym284 := z.EncBinary() + _ = yym284 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep285 := !z.EncBinary() + yy2arr285 := z.EncBasicHandle().StructToArray + var yyq285 [4]bool + _, _, _ = yysep285, yyq285, yy2arr285 + const yyr285 bool = false + yyq285[0] = x.Kind != "" + yyq285[1] = x.APIVersion != "" + yyq285[2] = true + var yynn285 int + if yyr285 || yy2arr285 { + r.EncodeArrayStart(4) + } else { + yynn285 = 1 + for _, b := range yyq285 { + if b { + yynn285++ + } + } + r.EncodeMapStart(yynn285) + yynn285 = 0 + } + if yyr285 || yy2arr285 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq285[0] { + yym287 := z.EncBinary() + _ = yym287 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq285[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym288 := z.EncBinary() + _ = yym288 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr285 || yy2arr285 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq285[1] { + yym290 := z.EncBinary() + _ = yym290 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq285[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym291 := z.EncBinary() + _ = yym291 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr285 || yy2arr285 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq285[2] { + yy293 := &x.ListMeta + yym294 := z.EncBinary() + _ = yym294 + if false { + } else if z.HasExtensions() && z.EncExt(yy293) { + } else { + z.EncFallback(yy293) + } + } else { + r.EncodeNil() + } + } else { + if yyq285[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy295 := &x.ListMeta + yym296 := z.EncBinary() + _ = yym296 + if false { + } else if z.HasExtensions() && z.EncExt(yy295) { + } else { + z.EncFallback(yy295) + } + } + } + if yyr285 || yy2arr285 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym298 := z.EncBinary() + _ = yym298 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym299 := z.EncBinary() + _ = yym299 + if false { + } else { + h.encSliceClusterRoleBinding(([]ClusterRoleBinding)(x.Items), e) + } + } + } + if yyr285 || yy2arr285 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleBindingList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym300 := z.DecBinary() + _ = yym300 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct301 := r.ContainerType() + if yyct301 == codecSelferValueTypeMap1234 { + yyl301 := r.ReadMapStart() + if yyl301 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl301, d) + } + } else if yyct301 == codecSelferValueTypeArray1234 { + yyl301 := r.ReadArrayStart() + if yyl301 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl301, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys302Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys302Slc + var yyhl302 bool = l >= 0 + for yyj302 := 0; ; yyj302++ { + if yyhl302 { + if yyj302 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys302Slc = r.DecodeBytes(yys302Slc, true, true) + yys302 := string(yys302Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys302 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv305 := &x.ListMeta + yym306 := z.DecBinary() + _ = yym306 + if false { + } else if z.HasExtensions() && z.DecExt(yyv305) { + } else { + z.DecFallback(yyv305, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv307 := &x.Items + yym308 := z.DecBinary() + _ = yym308 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv307), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys302) + } // end switch yys302 + } // end for yyj302 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleBindingList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj309 int + var yyb309 bool + var yyhl309 bool = l >= 0 + yyj309++ + if yyhl309 { + yyb309 = yyj309 > l + } else { + yyb309 = r.CheckBreak() + } + if yyb309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj309++ + if yyhl309 { + yyb309 = yyj309 > l + } else { + yyb309 = r.CheckBreak() + } + if yyb309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj309++ + if yyhl309 { + yyb309 = yyj309 > l + } else { + yyb309 = r.CheckBreak() + } + if yyb309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv312 := &x.ListMeta + yym313 := z.DecBinary() + _ = yym313 + if false { + } else if z.HasExtensions() && z.DecExt(yyv312) { + } else { + z.DecFallback(yyv312, false) + } + } + yyj309++ + if yyhl309 { + yyb309 = yyj309 > l + } else { + yyb309 = r.CheckBreak() + } + if yyb309 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv314 := &x.Items + yym315 := z.DecBinary() + _ = yym315 + if false { + } else { + h.decSliceClusterRoleBinding((*[]ClusterRoleBinding)(yyv314), d) + } + } + for { + yyj309++ + if yyhl309 { + yyb309 = yyj309 > l + } else { + yyb309 = r.CheckBreak() + } + if yyb309 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj309-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *ClusterRoleList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym316 := z.EncBinary() + _ = yym316 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep317 := !z.EncBinary() + yy2arr317 := z.EncBasicHandle().StructToArray + var yyq317 [4]bool + _, _, _ = yysep317, yyq317, yy2arr317 + const yyr317 bool = false + yyq317[0] = x.Kind != "" + yyq317[1] = x.APIVersion != "" + yyq317[2] = true + var yynn317 int + if yyr317 || yy2arr317 { + r.EncodeArrayStart(4) + } else { + yynn317 = 1 + for _, b := range yyq317 { + if b { + yynn317++ + } + } + r.EncodeMapStart(yynn317) + yynn317 = 0 + } + if yyr317 || yy2arr317 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq317[0] { + yym319 := z.EncBinary() + _ = yym319 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq317[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym320 := z.EncBinary() + _ = yym320 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr317 || yy2arr317 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq317[1] { + yym322 := z.EncBinary() + _ = yym322 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq317[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym323 := z.EncBinary() + _ = yym323 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr317 || yy2arr317 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq317[2] { + yy325 := &x.ListMeta + yym326 := z.EncBinary() + _ = yym326 + if false { + } else if z.HasExtensions() && z.EncExt(yy325) { + } else { + z.EncFallback(yy325) + } + } else { + r.EncodeNil() + } + } else { + if yyq317[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy327 := &x.ListMeta + yym328 := z.EncBinary() + _ = yym328 + if false { + } else if z.HasExtensions() && z.EncExt(yy327) { + } else { + z.EncFallback(yy327) + } + } + } + if yyr317 || yy2arr317 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym330 := z.EncBinary() + _ = yym330 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym331 := z.EncBinary() + _ = yym331 + if false { + } else { + h.encSliceClusterRole(([]ClusterRole)(x.Items), e) + } + } + } + if yyr317 || yy2arr317 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *ClusterRoleList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym332 := z.DecBinary() + _ = yym332 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct333 := r.ContainerType() + if yyct333 == codecSelferValueTypeMap1234 { + yyl333 := r.ReadMapStart() + if yyl333 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl333, d) + } + } else if yyct333 == codecSelferValueTypeArray1234 { + yyl333 := r.ReadArrayStart() + if yyl333 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl333, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *ClusterRoleList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys334Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys334Slc + var yyhl334 bool = l >= 0 + for yyj334 := 0; ; yyj334++ { + if yyhl334 { + if yyj334 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys334Slc = r.DecodeBytes(yys334Slc, true, true) + yys334 := string(yys334Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys334 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv337 := &x.ListMeta + yym338 := z.DecBinary() + _ = yym338 + if false { + } else if z.HasExtensions() && z.DecExt(yyv337) { + } else { + z.DecFallback(yyv337, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv339 := &x.Items + yym340 := z.DecBinary() + _ = yym340 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv339), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys334) + } // end switch yys334 + } // end for yyj334 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *ClusterRoleList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj341 int + var yyb341 bool + var yyhl341 bool = l >= 0 + yyj341++ + if yyhl341 { + yyb341 = yyj341 > l + } else { + yyb341 = r.CheckBreak() + } + if yyb341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj341++ + if yyhl341 { + yyb341 = yyj341 > l + } else { + yyb341 = r.CheckBreak() + } + if yyb341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj341++ + if yyhl341 { + yyb341 = yyj341 > l + } else { + yyb341 = r.CheckBreak() + } + if yyb341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg2_unversioned.ListMeta{} + } else { + yyv344 := &x.ListMeta + yym345 := z.DecBinary() + _ = yym345 + if false { + } else if z.HasExtensions() && z.DecExt(yyv344) { + } else { + z.DecFallback(yyv344, false) + } + } + yyj341++ + if yyhl341 { + yyb341 = yyj341 > l + } else { + yyb341 = r.CheckBreak() + } + if yyb341 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv346 := &x.Items + yym347 := z.DecBinary() + _ = yym347 + if false { + } else { + h.decSliceClusterRole((*[]ClusterRole)(yyv346), d) + } + } + for { + yyj341++ + if yyhl341 { + yyb341 = yyj341 > l + } else { + yyb341 = r.CheckBreak() + } + if yyb341 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj341-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSlicePolicyRule(v []PolicyRule, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv348 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy349 := &yyv348 + yy349.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSlicePolicyRule(v *[]PolicyRule, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv350 := *v + yyh350, yyl350 := z.DecSliceHelperStart() + var yyc350 bool + if yyl350 == 0 { + if yyv350 == nil { + yyv350 = []PolicyRule{} + yyc350 = true + } else if len(yyv350) != 0 { + yyv350 = yyv350[:0] + yyc350 = true + } + } else if yyl350 > 0 { + var yyrr350, yyrl350 int + var yyrt350 bool + if yyl350 > cap(yyv350) { + + yyrg350 := len(yyv350) > 0 + yyv2350 := yyv350 + yyrl350, yyrt350 = z.DecInferLen(yyl350, z.DecBasicHandle().MaxInitLen, 160) + if yyrt350 { + if yyrl350 <= cap(yyv350) { + yyv350 = yyv350[:yyrl350] + } else { + yyv350 = make([]PolicyRule, yyrl350) + } + } else { + yyv350 = make([]PolicyRule, yyrl350) + } + yyc350 = true + yyrr350 = len(yyv350) + if yyrg350 { + copy(yyv350, yyv2350) + } + } else if yyl350 != len(yyv350) { + yyv350 = yyv350[:yyl350] + yyc350 = true + } + yyj350 := 0 + for ; yyj350 < yyrr350; yyj350++ { + yyh350.ElemContainerState(yyj350) + if r.TryDecodeAsNil() { + yyv350[yyj350] = PolicyRule{} + } else { + yyv351 := &yyv350[yyj350] + yyv351.CodecDecodeSelf(d) + } + + } + if yyrt350 { + for ; yyj350 < yyl350; yyj350++ { + yyv350 = append(yyv350, PolicyRule{}) + yyh350.ElemContainerState(yyj350) + if r.TryDecodeAsNil() { + yyv350[yyj350] = PolicyRule{} + } else { + yyv352 := &yyv350[yyj350] + yyv352.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj350 := 0 + for ; !r.CheckBreak(); yyj350++ { + + if yyj350 >= len(yyv350) { + yyv350 = append(yyv350, PolicyRule{}) // var yyz350 PolicyRule + yyc350 = true + } + yyh350.ElemContainerState(yyj350) + if yyj350 < len(yyv350) { + if r.TryDecodeAsNil() { + yyv350[yyj350] = PolicyRule{} + } else { + yyv353 := &yyv350[yyj350] + yyv353.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj350 < len(yyv350) { + yyv350 = yyv350[:yyj350] + yyc350 = true + } else if yyj350 == 0 && yyv350 == nil { + yyv350 = []PolicyRule{} + yyc350 = true + } + } + yyh350.End() + if yyc350 { + *v = yyv350 + } +} + +func (x codecSelfer1234) encSliceSubject(v []Subject, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv354 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy355 := &yyv354 + yy355.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceSubject(v *[]Subject, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv356 := *v + yyh356, yyl356 := z.DecSliceHelperStart() + var yyc356 bool + if yyl356 == 0 { + if yyv356 == nil { + yyv356 = []Subject{} + yyc356 = true + } else if len(yyv356) != 0 { + yyv356 = yyv356[:0] + yyc356 = true + } + } else if yyl356 > 0 { + var yyrr356, yyrl356 int + var yyrt356 bool + if yyl356 > cap(yyv356) { + + yyrg356 := len(yyv356) > 0 + yyv2356 := yyv356 + yyrl356, yyrt356 = z.DecInferLen(yyl356, z.DecBasicHandle().MaxInitLen, 64) + if yyrt356 { + if yyrl356 <= cap(yyv356) { + yyv356 = yyv356[:yyrl356] + } else { + yyv356 = make([]Subject, yyrl356) + } + } else { + yyv356 = make([]Subject, yyrl356) + } + yyc356 = true + yyrr356 = len(yyv356) + if yyrg356 { + copy(yyv356, yyv2356) + } + } else if yyl356 != len(yyv356) { + yyv356 = yyv356[:yyl356] + yyc356 = true + } + yyj356 := 0 + for ; yyj356 < yyrr356; yyj356++ { + yyh356.ElemContainerState(yyj356) + if r.TryDecodeAsNil() { + yyv356[yyj356] = Subject{} + } else { + yyv357 := &yyv356[yyj356] + yyv357.CodecDecodeSelf(d) + } + + } + if yyrt356 { + for ; yyj356 < yyl356; yyj356++ { + yyv356 = append(yyv356, Subject{}) + yyh356.ElemContainerState(yyj356) + if r.TryDecodeAsNil() { + yyv356[yyj356] = Subject{} + } else { + yyv358 := &yyv356[yyj356] + yyv358.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj356 := 0 + for ; !r.CheckBreak(); yyj356++ { + + if yyj356 >= len(yyv356) { + yyv356 = append(yyv356, Subject{}) // var yyz356 Subject + yyc356 = true + } + yyh356.ElemContainerState(yyj356) + if yyj356 < len(yyv356) { + if r.TryDecodeAsNil() { + yyv356[yyj356] = Subject{} + } else { + yyv359 := &yyv356[yyj356] + yyv359.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj356 < len(yyv356) { + yyv356 = yyv356[:yyj356] + yyc356 = true + } else if yyj356 == 0 && yyv356 == nil { + yyv356 = []Subject{} + yyc356 = true + } + } + yyh356.End() + if yyc356 { + *v = yyv356 + } +} + +func (x codecSelfer1234) encSliceRoleBinding(v []RoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv360 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy361 := &yyv360 + yy361.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRoleBinding(v *[]RoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv362 := *v + yyh362, yyl362 := z.DecSliceHelperStart() + var yyc362 bool + if yyl362 == 0 { + if yyv362 == nil { + yyv362 = []RoleBinding{} + yyc362 = true + } else if len(yyv362) != 0 { + yyv362 = yyv362[:0] + yyc362 = true + } + } else if yyl362 > 0 { + var yyrr362, yyrl362 int + var yyrt362 bool + if yyl362 > cap(yyv362) { + + yyrg362 := len(yyv362) > 0 + yyv2362 := yyv362 + yyrl362, yyrt362 = z.DecInferLen(yyl362, z.DecBasicHandle().MaxInitLen, 328) + if yyrt362 { + if yyrl362 <= cap(yyv362) { + yyv362 = yyv362[:yyrl362] + } else { + yyv362 = make([]RoleBinding, yyrl362) + } + } else { + yyv362 = make([]RoleBinding, yyrl362) + } + yyc362 = true + yyrr362 = len(yyv362) + if yyrg362 { + copy(yyv362, yyv2362) + } + } else if yyl362 != len(yyv362) { + yyv362 = yyv362[:yyl362] + yyc362 = true + } + yyj362 := 0 + for ; yyj362 < yyrr362; yyj362++ { + yyh362.ElemContainerState(yyj362) + if r.TryDecodeAsNil() { + yyv362[yyj362] = RoleBinding{} + } else { + yyv363 := &yyv362[yyj362] + yyv363.CodecDecodeSelf(d) + } + + } + if yyrt362 { + for ; yyj362 < yyl362; yyj362++ { + yyv362 = append(yyv362, RoleBinding{}) + yyh362.ElemContainerState(yyj362) + if r.TryDecodeAsNil() { + yyv362[yyj362] = RoleBinding{} + } else { + yyv364 := &yyv362[yyj362] + yyv364.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj362 := 0 + for ; !r.CheckBreak(); yyj362++ { + + if yyj362 >= len(yyv362) { + yyv362 = append(yyv362, RoleBinding{}) // var yyz362 RoleBinding + yyc362 = true + } + yyh362.ElemContainerState(yyj362) + if yyj362 < len(yyv362) { + if r.TryDecodeAsNil() { + yyv362[yyj362] = RoleBinding{} + } else { + yyv365 := &yyv362[yyj362] + yyv365.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj362 < len(yyv362) { + yyv362 = yyv362[:yyj362] + yyc362 = true + } else if yyj362 == 0 && yyv362 == nil { + yyv362 = []RoleBinding{} + yyc362 = true + } + } + yyh362.End() + if yyc362 { + *v = yyv362 + } +} + +func (x codecSelfer1234) encSliceRole(v []Role, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv366 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy367 := &yyv366 + yy367.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceRole(v *[]Role, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv368 := *v + yyh368, yyl368 := z.DecSliceHelperStart() + var yyc368 bool + if yyl368 == 0 { + if yyv368 == nil { + yyv368 = []Role{} + yyc368 = true + } else if len(yyv368) != 0 { + yyv368 = yyv368[:0] + yyc368 = true + } + } else if yyl368 > 0 { + var yyrr368, yyrl368 int + var yyrt368 bool + if yyl368 > cap(yyv368) { + + yyrg368 := len(yyv368) > 0 + yyv2368 := yyv368 + yyrl368, yyrt368 = z.DecInferLen(yyl368, z.DecBasicHandle().MaxInitLen, 280) + if yyrt368 { + if yyrl368 <= cap(yyv368) { + yyv368 = yyv368[:yyrl368] + } else { + yyv368 = make([]Role, yyrl368) + } + } else { + yyv368 = make([]Role, yyrl368) + } + yyc368 = true + yyrr368 = len(yyv368) + if yyrg368 { + copy(yyv368, yyv2368) + } + } else if yyl368 != len(yyv368) { + yyv368 = yyv368[:yyl368] + yyc368 = true + } + yyj368 := 0 + for ; yyj368 < yyrr368; yyj368++ { + yyh368.ElemContainerState(yyj368) + if r.TryDecodeAsNil() { + yyv368[yyj368] = Role{} + } else { + yyv369 := &yyv368[yyj368] + yyv369.CodecDecodeSelf(d) + } + + } + if yyrt368 { + for ; yyj368 < yyl368; yyj368++ { + yyv368 = append(yyv368, Role{}) + yyh368.ElemContainerState(yyj368) + if r.TryDecodeAsNil() { + yyv368[yyj368] = Role{} + } else { + yyv370 := &yyv368[yyj368] + yyv370.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj368 := 0 + for ; !r.CheckBreak(); yyj368++ { + + if yyj368 >= len(yyv368) { + yyv368 = append(yyv368, Role{}) // var yyz368 Role + yyc368 = true + } + yyh368.ElemContainerState(yyj368) + if yyj368 < len(yyv368) { + if r.TryDecodeAsNil() { + yyv368[yyj368] = Role{} + } else { + yyv371 := &yyv368[yyj368] + yyv371.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj368 < len(yyv368) { + yyv368 = yyv368[:yyj368] + yyc368 = true + } else if yyj368 == 0 && yyv368 == nil { + yyv368 = []Role{} + yyc368 = true + } + } + yyh368.End() + if yyc368 { + *v = yyv368 + } +} + +func (x codecSelfer1234) encSliceClusterRoleBinding(v []ClusterRoleBinding, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv372 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy373 := &yyv372 + yy373.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRoleBinding(v *[]ClusterRoleBinding, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv374 := *v + yyh374, yyl374 := z.DecSliceHelperStart() + var yyc374 bool + if yyl374 == 0 { + if yyv374 == nil { + yyv374 = []ClusterRoleBinding{} + yyc374 = true + } else if len(yyv374) != 0 { + yyv374 = yyv374[:0] + yyc374 = true + } + } else if yyl374 > 0 { + var yyrr374, yyrl374 int + var yyrt374 bool + if yyl374 > cap(yyv374) { + + yyrg374 := len(yyv374) > 0 + yyv2374 := yyv374 + yyrl374, yyrt374 = z.DecInferLen(yyl374, z.DecBasicHandle().MaxInitLen, 328) + if yyrt374 { + if yyrl374 <= cap(yyv374) { + yyv374 = yyv374[:yyrl374] + } else { + yyv374 = make([]ClusterRoleBinding, yyrl374) + } + } else { + yyv374 = make([]ClusterRoleBinding, yyrl374) + } + yyc374 = true + yyrr374 = len(yyv374) + if yyrg374 { + copy(yyv374, yyv2374) + } + } else if yyl374 != len(yyv374) { + yyv374 = yyv374[:yyl374] + yyc374 = true + } + yyj374 := 0 + for ; yyj374 < yyrr374; yyj374++ { + yyh374.ElemContainerState(yyj374) + if r.TryDecodeAsNil() { + yyv374[yyj374] = ClusterRoleBinding{} + } else { + yyv375 := &yyv374[yyj374] + yyv375.CodecDecodeSelf(d) + } + + } + if yyrt374 { + for ; yyj374 < yyl374; yyj374++ { + yyv374 = append(yyv374, ClusterRoleBinding{}) + yyh374.ElemContainerState(yyj374) + if r.TryDecodeAsNil() { + yyv374[yyj374] = ClusterRoleBinding{} + } else { + yyv376 := &yyv374[yyj374] + yyv376.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj374 := 0 + for ; !r.CheckBreak(); yyj374++ { + + if yyj374 >= len(yyv374) { + yyv374 = append(yyv374, ClusterRoleBinding{}) // var yyz374 ClusterRoleBinding + yyc374 = true + } + yyh374.ElemContainerState(yyj374) + if yyj374 < len(yyv374) { + if r.TryDecodeAsNil() { + yyv374[yyj374] = ClusterRoleBinding{} + } else { + yyv377 := &yyv374[yyj374] + yyv377.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj374 < len(yyv374) { + yyv374 = yyv374[:yyj374] + yyc374 = true + } else if yyj374 == 0 && yyv374 == nil { + yyv374 = []ClusterRoleBinding{} + yyc374 = true + } + } + yyh374.End() + if yyc374 { + *v = yyv374 + } +} + +func (x codecSelfer1234) encSliceClusterRole(v []ClusterRole, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv378 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy379 := &yyv378 + yy379.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceClusterRole(v *[]ClusterRole, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv380 := *v + yyh380, yyl380 := z.DecSliceHelperStart() + var yyc380 bool + if yyl380 == 0 { + if yyv380 == nil { + yyv380 = []ClusterRole{} + yyc380 = true + } else if len(yyv380) != 0 { + yyv380 = yyv380[:0] + yyc380 = true + } + } else if yyl380 > 0 { + var yyrr380, yyrl380 int + var yyrt380 bool + if yyl380 > cap(yyv380) { + + yyrg380 := len(yyv380) > 0 + yyv2380 := yyv380 + yyrl380, yyrt380 = z.DecInferLen(yyl380, z.DecBasicHandle().MaxInitLen, 280) + if yyrt380 { + if yyrl380 <= cap(yyv380) { + yyv380 = yyv380[:yyrl380] + } else { + yyv380 = make([]ClusterRole, yyrl380) + } + } else { + yyv380 = make([]ClusterRole, yyrl380) + } + yyc380 = true + yyrr380 = len(yyv380) + if yyrg380 { + copy(yyv380, yyv2380) + } + } else if yyl380 != len(yyv380) { + yyv380 = yyv380[:yyl380] + yyc380 = true + } + yyj380 := 0 + for ; yyj380 < yyrr380; yyj380++ { + yyh380.ElemContainerState(yyj380) + if r.TryDecodeAsNil() { + yyv380[yyj380] = ClusterRole{} + } else { + yyv381 := &yyv380[yyj380] + yyv381.CodecDecodeSelf(d) + } + + } + if yyrt380 { + for ; yyj380 < yyl380; yyj380++ { + yyv380 = append(yyv380, ClusterRole{}) + yyh380.ElemContainerState(yyj380) + if r.TryDecodeAsNil() { + yyv380[yyj380] = ClusterRole{} + } else { + yyv382 := &yyv380[yyj380] + yyv382.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj380 := 0 + for ; !r.CheckBreak(); yyj380++ { + + if yyj380 >= len(yyv380) { + yyv380 = append(yyv380, ClusterRole{}) // var yyz380 ClusterRole + yyc380 = true + } + yyh380.ElemContainerState(yyj380) + if yyj380 < len(yyv380) { + if r.TryDecodeAsNil() { + yyv380[yyj380] = ClusterRole{} + } else { + yyv383 := &yyv380[yyj380] + yyv383.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj380 < len(yyv380) { + yyv380 = yyv380[:yyj380] + yyc380 = true + } else if yyj380 == 0 && yyv380 == nil { + yyv380 = []ClusterRole{} + yyc380 = true + } + } + yyh380.End() + if yyc380 { + *v = yyv380 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.go new file mode 100644 index 0000000000..eefa6636b1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types.go @@ -0,0 +1,178 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + +// PolicyRule holds information that describes a policy rule, but does not contain information +// about who the rule applies to or which namespace the rule applies to. +type PolicyRule struct { + // Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds. + Verbs []string `json:"verbs" protobuf:"bytes,1,rep,name=verbs"` + // AttributeRestrictions will vary depending on what the Authorizer/AuthorizationAttributeBuilder pair supports. + // If the Authorizer does not recognize how to handle the AttributeRestrictions, the Authorizer should report an error. + AttributeRestrictions runtime.RawExtension `json:"attributeRestrictions,omitempty" protobuf:"bytes,2,opt,name=attributeRestrictions"` + + // APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of + // the enumerated resources in any API group will be allowed. + APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,3,rep,name=apiGroups"` + // Resources is a list of resources this rule applies to. ResourceAll represents all resources. + Resources []string `json:"resources,omitempty" protobuf:"bytes,4,rep,name=resources"` + // ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + ResourceNames []string `json:"resourceNames,omitempty" protobuf:"bytes,5,rep,name=resourceNames"` + + // NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path + // This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. + // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. + // Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both. + NonResourceURLs []string `json:"nonResourceURLs,omitempty" protobuf:"bytes,6,rep,name=nonResourceURLs"` +} + +// Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, +// or a value for non-objects such as user and group names. +type Subject struct { + // Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount". + // If the Authorizer does not recognized the kind value, the Authorizer should report an error. + Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` + // APIVersion holds the API group and version of the referenced object. + APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,2,opt.name=apiVersion"` + // Name of the object being referenced. + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` + // Namespace of the referenced object. If the object kind is non-namespace, such as "User" or "Group", and this value is not empty + // the Authorizer should report an error. + Namespace string `json:"namespace,omitempty" protobuf:"bytes,4,opt,name=namespace"` +} + +// RoleRef contains information that points to the role being used +type RoleRef struct { + // APIGroup is the group for the resource being referenced + APIGroup string `json:"apiGroup" protobuf:"bytes,1,opt,name=apiGroup"` + // Kind is the type of resource being referenced + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` + // Name is the name of resource being referenced + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` +} + +// +genclient=true + +// Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. +type Role struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this Role + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true + +// RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. +// It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given +// namespace only have effect in that namespace. +type RoleBinding struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// RoleBindingList is a collection of RoleBindings +type RoleBindingList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of RoleBindings + Items []RoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// RoleList is a collection of Roles +type RoleList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of Roles + Items []Role `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding. +type ClusterRole struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Rules holds all the PolicyRules for this ClusterRole + Rules []PolicyRule `json:"rules" protobuf:"bytes,2,rep,name=rules"` +} + +// +genclient=true +// +nonNamespaced=true + +// ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, +// and adds who information via Subject. +type ClusterRoleBinding struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Subjects holds references to the objects the role applies to. + Subjects []Subject `json:"subjects" protobuf:"bytes,2,rep,name=subjects"` + + // RoleRef can only reference a ClusterRole in the global namespace. + // If the RoleRef cannot be resolved, the Authorizer must return an error. + RoleRef RoleRef `json:"roleRef" protobuf:"bytes,3,opt,name=roleRef"` +} + +// ClusterRoleBindingList is a collection of ClusterRoleBindings +type ClusterRoleBindingList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoleBindings + Items []ClusterRoleBinding `json:"items" protobuf:"bytes,2,rep,name=items"` +} + +// ClusterRoleList is a collection of ClusterRoles +type ClusterRoleList struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is a list of ClusterRoles + Items []ClusterRole `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..633bae9799 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,149 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_ClusterRole = map[string]string{ + "": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this ClusterRole", +} + +func (ClusterRole) SwaggerDoc() map[string]string { + return map_ClusterRole +} + +var map_ClusterRoleBinding = map[string]string{ + "": "ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (ClusterRoleBinding) SwaggerDoc() map[string]string { + return map_ClusterRoleBinding +} + +var map_ClusterRoleBindingList = map[string]string{ + "": "ClusterRoleBindingList is a collection of ClusterRoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoleBindings", +} + +func (ClusterRoleBindingList) SwaggerDoc() map[string]string { + return map_ClusterRoleBindingList +} + +var map_ClusterRoleList = map[string]string{ + "": "ClusterRoleList is a collection of ClusterRoles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of ClusterRoles", +} + +func (ClusterRoleList) SwaggerDoc() map[string]string { + return map_ClusterRoleList +} + +var map_PolicyRule = map[string]string{ + "": "PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.", + "verbs": "Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds.", + "attributeRestrictions": "AttributeRestrictions will vary depending on what the Authorizer/AuthorizationAttributeBuilder pair supports. If the Authorizer does not recognize how to handle the AttributeRestrictions, the Authorizer should report an error.", + "apiGroups": "APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed.", + "resources": "Resources is a list of resources this rule applies to. ResourceAll represents all resources.", + "resourceNames": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.", + "nonResourceURLs": "NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path This name is intentionally different than the internal type so that the DefaultConvert works nicely and because the ordering may be different. Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both.", +} + +func (PolicyRule) SwaggerDoc() map[string]string { + return map_PolicyRule +} + +var map_Role = map[string]string{ + "": "Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.", + "metadata": "Standard object's metadata.", + "rules": "Rules holds all the PolicyRules for this Role", +} + +func (Role) SwaggerDoc() map[string]string { + return map_Role +} + +var map_RoleBinding = map[string]string{ + "": "RoleBinding references a role, but does not contain it. It can reference a Role in the same namespace or a ClusterRole in the global namespace. It adds who information via Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace.", + "metadata": "Standard object's metadata.", + "subjects": "Subjects holds references to the objects the role applies to.", + "roleRef": "RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", +} + +func (RoleBinding) SwaggerDoc() map[string]string { + return map_RoleBinding +} + +var map_RoleBindingList = map[string]string{ + "": "RoleBindingList is a collection of RoleBindings", + "metadata": "Standard object's metadata.", + "items": "Items is a list of RoleBindings", +} + +func (RoleBindingList) SwaggerDoc() map[string]string { + return map_RoleBindingList +} + +var map_RoleList = map[string]string{ + "": "RoleList is a collection of Roles", + "metadata": "Standard object's metadata.", + "items": "Items is a list of Roles", +} + +func (RoleList) SwaggerDoc() map[string]string { + return map_RoleList +} + +var map_RoleRef = map[string]string{ + "": "RoleRef contains information that points to the role being used", + "apiGroup": "APIGroup is the group for the resource being referenced", + "kind": "Kind is the type of resource being referenced", + "name": "Name is the name of resource being referenced", +} + +func (RoleRef) SwaggerDoc() map[string]string { + return map_RoleRef +} + +var map_Subject = map[string]string{ + "": "Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.", + "kind": "Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.", + "apiVersion": "APIVersion holds the API group and version of the referenced object.", + "name": "Name of the object being referenced.", + "namespace": "Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.", +} + +func (Subject) SwaggerDoc() map[string]string { + return map_Subject +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go new file mode 100644 index 0000000000..49e957994a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,559 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1alpha1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + rbac "k8s.io/client-go/1.5/pkg/apis/rbac" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole, + Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole, + Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding, + Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding, + Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList, + Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList, + Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList, + Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList, + Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule, + Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule, + Convert_v1alpha1_Role_To_rbac_Role, + Convert_rbac_Role_To_v1alpha1_Role, + Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding, + Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding, + Convert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList, + Convert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList, + Convert_v1alpha1_RoleList_To_rbac_RoleList, + Convert_rbac_RoleList_To_v1alpha1_RoleList, + Convert_v1alpha1_RoleRef_To_rbac_RoleRef, + Convert_rbac_RoleRef_To_v1alpha1_RoleRef, + Convert_v1alpha1_Subject_To_rbac_Subject, + Convert_rbac_Subject_To_v1alpha1_Subject, + ) +} + +func autoConvert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]rbac.PolicyRule, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in *ClusterRole, out *rbac.ClusterRole, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRole_To_rbac_ClusterRole(in, out, s) +} + +func autoConvert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in *rbac.ClusterRole, out *ClusterRole, s conversion.Scope) error { + return autoConvert_rbac_ClusterRole_To_v1alpha1_ClusterRole(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]rbac.Subject, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Subject_To_rbac_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_v1alpha1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in *ClusterRoleBinding, out *rbac.ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + if err := Convert_rbac_Subject_To_v1alpha1_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_rbac_RoleRef_To_v1alpha1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +func Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in *rbac.ClusterRoleBinding, out *ClusterRoleBinding, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.ClusterRoleBinding, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in *rbac.ClusterRoleBindingList, out *ClusterRoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList(in, out, s) +} + +func autoConvert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.ClusterRole, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_ClusterRole_To_rbac_ClusterRole(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in *ClusterRoleList, out *rbac.ClusterRoleList, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList(in, out, s) +} + +func autoConvert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in *rbac.ClusterRoleList, out *ClusterRoleList, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList(in, out, s) +} + +func autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + out.Verbs = in.Verbs + if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil { + return err + } + out.APIGroups = in.APIGroups + out.Resources = in.Resources + out.ResourceNames = in.ResourceNames + out.NonResourceURLs = in.NonResourceURLs + return nil +} + +func Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in *PolicyRule, out *rbac.PolicyRule, s conversion.Scope) error { + return autoConvert_v1alpha1_PolicyRule_To_rbac_PolicyRule(in, out, s) +} + +func autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + out.Verbs = in.Verbs + if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.AttributeRestrictions, &out.AttributeRestrictions, s); err != nil { + return err + } + out.APIGroups = in.APIGroups + out.Resources = in.Resources + out.ResourceNames = in.ResourceNames + out.NonResourceURLs = in.NonResourceURLs + return nil +} + +func Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *PolicyRule, s conversion.Scope) error { + return autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in, out, s) +} + +func autoConvert_v1alpha1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]rbac.PolicyRule, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_v1alpha1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { + return autoConvert_v1alpha1_Role_To_rbac_Role(in, out, s) +} + +func autoConvert_rbac_Role_To_v1alpha1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil +} + +func Convert_rbac_Role_To_v1alpha1_Role(in *rbac.Role, out *Role, s conversion.Scope) error { + return autoConvert_rbac_Role_To_v1alpha1_Role(in, out, s) +} + +func autoConvert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]rbac.Subject, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Subject_To_rbac_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_v1alpha1_RoleRef_To_rbac_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in *RoleBinding, out *rbac.RoleBinding, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleBinding_To_rbac_RoleBinding(in, out, s) +} + +func autoConvert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + if err := Convert_rbac_Subject_To_v1alpha1_Subject(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Subjects = nil + } + if err := Convert_rbac_RoleRef_To_v1alpha1_RoleRef(&in.RoleRef, &out.RoleRef, s); err != nil { + return err + } + return nil +} + +func Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in *rbac.RoleBinding, out *RoleBinding, s conversion.Scope) error { + return autoConvert_rbac_RoleBinding_To_v1alpha1_RoleBinding(in, out, s) +} + +func autoConvert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.RoleBinding, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in *RoleBindingList, out *rbac.RoleBindingList, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleBindingList_To_rbac_RoleBindingList(in, out, s) +} + +func autoConvert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := Convert_rbac_RoleBinding_To_v1alpha1_RoleBinding(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in *rbac.RoleBindingList, out *RoleBindingList, s conversion.Scope) error { + return autoConvert_rbac_RoleBindingList_To_v1alpha1_RoleBindingList(in, out, s) +} + +func autoConvert_v1alpha1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac.Role, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Role_To_rbac_Role(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1alpha1_RoleList_To_rbac_RoleList(in *RoleList, out *rbac.RoleList, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleList_To_rbac_RoleList(in, out, s) +} + +func autoConvert_rbac_RoleList_To_v1alpha1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := Convert_rbac_Role_To_v1alpha1_Role(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_rbac_RoleList_To_v1alpha1_RoleList(in *rbac.RoleList, out *RoleList, s conversion.Scope) error { + return autoConvert_rbac_RoleList_To_v1alpha1_RoleList(in, out, s) +} + +func autoConvert_v1alpha1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +func Convert_v1alpha1_RoleRef_To_rbac_RoleRef(in *RoleRef, out *rbac.RoleRef, s conversion.Scope) error { + return autoConvert_v1alpha1_RoleRef_To_rbac_RoleRef(in, out, s) +} + +func autoConvert_rbac_RoleRef_To_v1alpha1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil +} + +func Convert_rbac_RoleRef_To_v1alpha1_RoleRef(in *rbac.RoleRef, out *RoleRef, s conversion.Scope) error { + return autoConvert_rbac_RoleRef_To_v1alpha1_RoleRef(in, out, s) +} + +func autoConvert_v1alpha1_Subject_To_rbac_Subject(in *Subject, out *rbac.Subject, s conversion.Scope) error { + out.Kind = in.Kind + out.APIVersion = in.APIVersion + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} + +func Convert_v1alpha1_Subject_To_rbac_Subject(in *Subject, out *rbac.Subject, s conversion.Scope) error { + return autoConvert_v1alpha1_Subject_To_rbac_Subject(in, out, s) +} + +func autoConvert_rbac_Subject_To_v1alpha1_Subject(in *rbac.Subject, out *Subject, s conversion.Scope) error { + out.Kind = in.Kind + out.APIVersion = in.APIVersion + out.Name = in.Name + out.Namespace = in.Namespace + return nil +} + +func Convert_rbac_Subject_To_v1alpha1_Subject(in *rbac.Subject, out *Subject, s conversion.Scope) error { + return autoConvert_rbac_Subject_To_v1alpha1_Subject(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..f8dd0b8a00 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,293 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1alpha1 + +import ( + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRole, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleBinding, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleBindingList, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_ClusterRoleList, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PolicyRule, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Role, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleBinding, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleBindingList, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleList, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_RoleRef, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Subject, InType: reflect.TypeOf(&Subject{})}, + ) +} + +func DeepCopy_v1alpha1_ClusterRole(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRole) + out := out.(*ClusterRole) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_ClusterRoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBinding) + out := out.(*ClusterRoleBinding) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Subjects = nil + } + out.RoleRef = in.RoleRef + return nil + } +} + +func DeepCopy_v1alpha1_ClusterRoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBindingList) + out := out.(*ClusterRoleBindingList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ClusterRoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_ClusterRoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleList) + out := out.(*ClusterRoleList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_ClusterRole(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_PolicyRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PolicyRule) + out := out.(*PolicyRule) + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Verbs = nil + } + if err := runtime.DeepCopy_runtime_RawExtension(&in.AttributeRestrictions, &out.AttributeRestrictions, c); err != nil { + return err + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.APIGroups = nil + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Resources = nil + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.ResourceNames = nil + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.NonResourceURLs = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_Role(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Role) + out := out.(*Role) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_RoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBinding) + out := out.(*RoleBinding) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Subjects = nil + } + out.RoleRef = in.RoleRef + return nil + } +} + +func DeepCopy_v1alpha1_RoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBindingList) + out := out.(*RoleBindingList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_RoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_RoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleList) + out := out.(*RoleList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := DeepCopy_v1alpha1_Role(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_v1alpha1_RoleRef(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleRef) + out := out.(*RoleRef) + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil + } +} + +func DeepCopy_v1alpha1_Subject(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Subject) + out := out.(*Subject) + out.Kind = in.Kind + out.APIVersion = in.APIVersion + out.Name = in.Name + out.Namespace = in.Namespace + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/zz_generated.deepcopy.go new file mode 100644 index 0000000000..20df3be7dd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/rbac/zz_generated.deepcopy.go @@ -0,0 +1,297 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package rbac + +import ( + api "k8s.io/client-go/1.5/pkg/api" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRole, InType: reflect.TypeOf(&ClusterRole{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleBinding, InType: reflect.TypeOf(&ClusterRoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleBindingList, InType: reflect.TypeOf(&ClusterRoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_ClusterRoleList, InType: reflect.TypeOf(&ClusterRoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_PolicyRule, InType: reflect.TypeOf(&PolicyRule{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_Role, InType: reflect.TypeOf(&Role{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleBinding, InType: reflect.TypeOf(&RoleBinding{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleBindingList, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleList, InType: reflect.TypeOf(&RoleList{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_RoleRef, InType: reflect.TypeOf(&RoleRef{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_rbac_Subject, InType: reflect.TypeOf(&Subject{})}, + ) +} + +func DeepCopy_rbac_ClusterRole(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRole) + out := out.(*ClusterRole) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_rbac_ClusterRoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBinding) + out := out.(*ClusterRoleBinding) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Subjects = nil + } + out.RoleRef = in.RoleRef + return nil + } +} + +func DeepCopy_rbac_ClusterRoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleBindingList) + out := out.(*ClusterRoleBindingList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_ClusterRoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_rbac_ClusterRoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*ClusterRoleList) + out := out.(*ClusterRoleList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterRole, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_ClusterRole(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_rbac_PolicyRule(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*PolicyRule) + out := out.(*PolicyRule) + if in.Verbs != nil { + in, out := &in.Verbs, &out.Verbs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Verbs = nil + } + if in.AttributeRestrictions == nil { + out.AttributeRestrictions = nil + } else if newVal, err := c.DeepCopy(&in.AttributeRestrictions); err != nil { + return err + } else { + out.AttributeRestrictions = *newVal.(*runtime.Object) + } + if in.APIGroups != nil { + in, out := &in.APIGroups, &out.APIGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.APIGroups = nil + } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.Resources = nil + } + if in.ResourceNames != nil { + in, out := &in.ResourceNames, &out.ResourceNames + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.ResourceNames = nil + } + if in.NonResourceURLs != nil { + in, out := &in.NonResourceURLs, &out.NonResourceURLs + *out = make([]string, len(*in)) + copy(*out, *in) + } else { + out.NonResourceURLs = nil + } + return nil + } +} + +func DeepCopy_rbac_Role(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Role) + out := out.(*Role) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PolicyRule, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_PolicyRule(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Rules = nil + } + return nil + } +} + +func DeepCopy_rbac_RoleBinding(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBinding) + out := out.(*RoleBinding) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + if in.Subjects != nil { + in, out := &in.Subjects, &out.Subjects + *out = make([]Subject, len(*in)) + for i := range *in { + (*out)[i] = (*in)[i] + } + } else { + out.Subjects = nil + } + out.RoleRef = in.RoleRef + return nil + } +} + +func DeepCopy_rbac_RoleBindingList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleBindingList) + out := out.(*RoleBindingList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RoleBinding, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_RoleBinding(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_rbac_RoleList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleList) + out := out.(*RoleList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Role, len(*in)) + for i := range *in { + if err := DeepCopy_rbac_Role(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} + +func DeepCopy_rbac_RoleRef(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RoleRef) + out := out.(*RoleRef) + out.APIGroup = in.APIGroup + out.Kind = in.Kind + out.Name = in.Name + return nil + } +} + +func DeepCopy_rbac_Subject(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Subject) + out := out.(*Subject) + out.Kind = in.Kind + out.APIVersion = in.APIVersion + out.Name = in.Name + out.Namespace = in.Namespace + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/doc.go new file mode 100644 index 0000000000..0294d1350b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +groupName=storage.k8s.io +// +g8k:openapi-gen=true +package storage diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/install/install.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/install/install.go new file mode 100644 index 0000000000..175ee2c719 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/install/install.go @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package install installs the experimental API group, making it available as +// an option to all of the API encoding/decoding machinery. +package install + +import ( + "k8s.io/client-go/1.5/pkg/apimachinery/announced" + "k8s.io/client-go/1.5/pkg/apis/storage" + "k8s.io/client-go/1.5/pkg/apis/storage/v1beta1" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: storage.GroupName, + VersionPreferenceOrder: []string{v1beta1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/client-go/1.5/pkg/apis/storage", + RootScopedKinds: sets.NewString("StorageClass"), + AddInternalObjectsToScheme: storage.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1beta1.SchemeGroupVersion.Version: v1beta1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/register.go new file mode 100644 index 0000000000..d71cdf61ef --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/register.go @@ -0,0 +1,56 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package storage + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// GroupName is the group name use in this package +const GroupName = "storage.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} + +// Kind takes an unqualified kind and returns a Group qualified GroupKind +func Kind(kind string) unversioned.GroupKind { + return SchemeGroupVersion.WithKind(kind).GroupKind() +} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource +func Resource(resource string) unversioned.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &api.ListOptions{}, + &api.DeleteOptions{}, + &api.ExportOptions{}, + + &StorageClass{}, + &StorageClassList{}, + ) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.generated.go new file mode 100644 index 0000000000..68f862894f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.generated.go @@ -0,0 +1,900 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package storage + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg2_api "k8s.io/client-go/1.5/pkg/api" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg2_api.ObjectMeta + var v1 pkg1_unversioned.TypeMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *StorageClass) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = len(x.Parameters) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("provisioner")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Parameters == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parameters")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parameters == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClass) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClass) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "provisioner": + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + x.Provisioner = string(r.DecodeString()) + } + case "parameters": + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv25 := &x.Parameters + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + z.F.DecMapStringStringX(yyv25, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClass) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj27 int + var yyb27 bool + var yyhl27 bool = l >= 0 + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_api.ObjectMeta{} + } else { + yyv30 := &x.ObjectMeta + yyv30.CodecDecodeSelf(d) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + x.Provisioner = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv32 := &x.Parameters + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + z.F.DecMapStringStringX(yyv32, false, d) + } + } + for { + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj27-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StorageClassList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym34 := z.EncBinary() + _ = yym34 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep35 := !z.EncBinary() + yy2arr35 := z.EncBasicHandle().StructToArray + var yyq35 [4]bool + _, _, _ = yysep35, yyq35, yy2arr35 + const yyr35 bool = false + yyq35[0] = x.Kind != "" + yyq35[1] = x.APIVersion != "" + yyq35[2] = true + var yynn35 int + if yyr35 || yy2arr35 { + r.EncodeArrayStart(4) + } else { + yynn35 = 1 + for _, b := range yyq35 { + if b { + yynn35++ + } + } + r.EncodeMapStart(yynn35) + yynn35 = 0 + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[0] { + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq35[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[1] { + yym40 := z.EncBinary() + _ = yym40 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq35[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[2] { + yy43 := &x.ListMeta + yym44 := z.EncBinary() + _ = yym44 + if false { + } else if z.HasExtensions() && z.EncExt(yy43) { + } else { + z.EncFallback(yy43) + } + } else { + r.EncodeNil() + } + } else { + if yyq35[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy45 := &x.ListMeta + yym46 := z.EncBinary() + _ = yym46 + if false { + } else if z.HasExtensions() && z.EncExt(yy45) { + } else { + z.EncFallback(yy45) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClassList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym50 := z.DecBinary() + _ = yym50 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct51 := r.ContainerType() + if yyct51 == codecSelferValueTypeMap1234 { + yyl51 := r.ReadMapStart() + if yyl51 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl51, d) + } + } else if yyct51 == codecSelferValueTypeArray1234 { + yyl51 := r.ReadArrayStart() + if yyl51 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl51, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClassList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys52Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys52Slc + var yyhl52 bool = l >= 0 + for yyj52 := 0; ; yyj52++ { + if yyhl52 { + if yyj52 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys52Slc = r.DecodeBytes(yys52Slc, true, true) + yys52 := string(yys52Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys52 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv55 := &x.ListMeta + yym56 := z.DecBinary() + _ = yym56 + if false { + } else if z.HasExtensions() && z.DecExt(yyv55) { + } else { + z.DecFallback(yyv55, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv57 := &x.Items + yym58 := z.DecBinary() + _ = yym58 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv57), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys52) + } // end switch yys52 + } // end for yyj52 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClassList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj59 int + var yyb59 bool + var yyhl59 bool = l >= 0 + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv62 := &x.ListMeta + yym63 := z.DecBinary() + _ = yym63 + if false { + } else if z.HasExtensions() && z.DecExt(yyv62) { + } else { + z.DecFallback(yyv62, false) + } + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv64 := &x.Items + yym65 := z.DecBinary() + _ = yym65 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv64), d) + } + } + for { + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj59-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceStorageClass(v []StorageClass, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv66 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy67 := &yyv66 + yy67.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceStorageClass(v *[]StorageClass, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv68 := *v + yyh68, yyl68 := z.DecSliceHelperStart() + var yyc68 bool + if yyl68 == 0 { + if yyv68 == nil { + yyv68 = []StorageClass{} + yyc68 = true + } else if len(yyv68) != 0 { + yyv68 = yyv68[:0] + yyc68 = true + } + } else if yyl68 > 0 { + var yyrr68, yyrl68 int + var yyrt68 bool + if yyl68 > cap(yyv68) { + + yyrg68 := len(yyv68) > 0 + yyv268 := yyv68 + yyrl68, yyrt68 = z.DecInferLen(yyl68, z.DecBasicHandle().MaxInitLen, 280) + if yyrt68 { + if yyrl68 <= cap(yyv68) { + yyv68 = yyv68[:yyrl68] + } else { + yyv68 = make([]StorageClass, yyrl68) + } + } else { + yyv68 = make([]StorageClass, yyrl68) + } + yyc68 = true + yyrr68 = len(yyv68) + if yyrg68 { + copy(yyv68, yyv268) + } + } else if yyl68 != len(yyv68) { + yyv68 = yyv68[:yyl68] + yyc68 = true + } + yyj68 := 0 + for ; yyj68 < yyrr68; yyj68++ { + yyh68.ElemContainerState(yyj68) + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv69 := &yyv68[yyj68] + yyv69.CodecDecodeSelf(d) + } + + } + if yyrt68 { + for ; yyj68 < yyl68; yyj68++ { + yyv68 = append(yyv68, StorageClass{}) + yyh68.ElemContainerState(yyj68) + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv70 := &yyv68[yyj68] + yyv70.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj68 := 0 + for ; !r.CheckBreak(); yyj68++ { + + if yyj68 >= len(yyv68) { + yyv68 = append(yyv68, StorageClass{}) // var yyz68 StorageClass + yyc68 = true + } + yyh68.ElemContainerState(yyj68) + if yyj68 < len(yyv68) { + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv71 := &yyv68[yyj68] + yyv71.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj68 < len(yyv68) { + yyv68 = yyv68[:yyj68] + yyc68 = true + } else if yyj68 == 0 && yyv68 == nil { + yyv68 = []StorageClass{} + yyc68 = true + } + } + yyh68.End() + if yyc68 { + *v = yyv68 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.go new file mode 100644 index 0000000000..20b70cee63 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/types.go @@ -0,0 +1,60 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package storage + +import ( + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// +genclient=true +// +nonNamespaced=true + +// StorageClass describes a named "class" of storage offered in a cluster. +// Different classes might map to quality-of-service levels, or to backup policies, +// or to arbitrary policies determined by the cluster administrators. Kubernetes +// itself is unopinionated about what classes represent. This concept is sometimes +// called "profiles" in other storage systems. +// The name of a StorageClass object is significant, and is how users can request a particular class. +type StorageClass struct { + unversioned.TypeMeta `json:",inline"` + api.ObjectMeta `json:"metadata,omitempty"` + + // provisioner is the driver expected to handle this StorageClass. + // This is an optionally-prefixed name, like a label key. + // For example: "kubernetes.io/gce-pd" or "kubernetes.io/aws-ebs". + // This value may not be empty. + Provisioner string `json:"provisioner"` + + // parameters holds parameters for the provisioner. + // These values are opaque to the system and are passed directly + // to the provisioner. The only validation done on keys is that they are + // not empty. The maximum number of parameters is + // 512, with a cumulative max size of 256K + Parameters map[string]string `json:"parameters,omitempty"` +} + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty"` + + // Items is the list of StorageClasses + Items []StorageClass `json:"items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/doc.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/doc.go new file mode 100644 index 0000000000..c560310f25 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// +k8s:deepcopy-gen=package,register +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/storage +// +groupName=storage.k8s.io +// +k8s:openapi-gen=true +package v1beta1 diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.pb.go new file mode 100644 index 0000000000..c865fbd6e2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.pb.go @@ -0,0 +1,729 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/apis/storage/v1beta1/generated.proto +// DO NOT EDIT! + +/* + Package v1beta1 is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/apis/storage/v1beta1/generated.proto + + It has these top-level messages: + StorageClass + StorageClassList +*/ +package v1beta1 + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" +import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *StorageClass) Reset() { *m = StorageClass{} } +func (*StorageClass) ProtoMessage() {} +func (*StorageClass) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *StorageClassList) Reset() { *m = StorageClassList{} } +func (*StorageClassList) ProtoMessage() {} +func (*StorageClassList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func init() { + proto.RegisterType((*StorageClass)(nil), "k8s.io.client-go.1.5.pkg.apis.storage.v1beta1.StorageClass") + proto.RegisterType((*StorageClassList)(nil), "k8s.io.client-go.1.5.pkg.apis.storage.v1beta1.StorageClassList") +} +func (m *StorageClass) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *StorageClass) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) + n1, err := m.ObjectMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Provisioner))) + i += copy(data[i:], m.Provisioner) + if len(m.Parameters) > 0 { + for k := range m.Parameters { + data[i] = 0x1a + i++ + v := m.Parameters[k] + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(v))) + i += copy(data[i:], v) + } + } + return i, nil +} + +func (m *StorageClassList) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *StorageClassList) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) + n2, err := m.ListMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n2 + if len(m.Items) > 0 { + for _, msg := range m.Items { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *StorageClass) Size() (n int) { + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Provisioner) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Parameters) > 0 { + for k, v := range m.Parameters { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + +func (m *StorageClassList) Size() (n int) { + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *StorageClass) String() string { + if this == nil { + return "nil" + } + keysForParameters := make([]string, 0, len(this.Parameters)) + for k := range this.Parameters { + keysForParameters = append(keysForParameters, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForParameters) + mapStringForParameters := "map[string]string{" + for _, k := range keysForParameters { + mapStringForParameters += fmt.Sprintf("%v: %v,", k, this.Parameters[k]) + } + mapStringForParameters += "}" + s := strings.Join([]string{`&StorageClass{`, + `ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`, + `Parameters:` + mapStringForParameters + `,`, + `}`, + }, "") + return s +} +func (this *StorageClassList) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&StorageClassList{`, + `ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StorageClass", "StorageClass", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *StorageClass) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClass: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClass: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Provisioner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Provisioner = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(data[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + if m.Parameters == nil { + m.Parameters = make(map[string]string) + } + m.Parameters[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StorageClassList) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StorageClassList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StorageClassList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, StorageClass{}) + if err := m.Items[len(m.Items)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 455 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x92, 0x4d, 0x6b, 0x13, 0x41, + 0x18, 0xc7, 0xb3, 0x09, 0xc1, 0x76, 0xa2, 0x18, 0x46, 0x0f, 0x61, 0x0f, 0x69, 0xe9, 0xa9, 0x8a, + 0x9d, 0x21, 0x85, 0x42, 0x28, 0x78, 0x59, 0x11, 0x14, 0x14, 0xcb, 0x7a, 0x11, 0xa1, 0x87, 0xd9, + 0xe4, 0x71, 0x1d, 0x37, 0xbb, 0xb3, 0xcc, 0xcb, 0x42, 0xc1, 0x83, 0x1f, 0xc1, 0x8f, 0x95, 0x63, + 0x8e, 0x1e, 0xa4, 0x68, 0xfd, 0x22, 0xce, 0xbe, 0xd8, 0x5d, 0xb2, 0x59, 0x11, 0x0f, 0x0f, 0xcc, + 0xdb, 0xef, 0xff, 0xfc, 0x9f, 0x3f, 0x83, 0xce, 0xa3, 0xb9, 0x22, 0x5c, 0xd0, 0xc8, 0x04, 0x20, + 0x13, 0xd0, 0xa0, 0x68, 0x1a, 0x85, 0x94, 0xa5, 0x5c, 0x51, 0xa5, 0x85, 0x64, 0x21, 0xd0, 0x6c, + 0x16, 0x80, 0x66, 0x33, 0x1a, 0x42, 0x02, 0x92, 0x69, 0x58, 0x92, 0x54, 0x0a, 0x2d, 0xf0, 0xe3, + 0x92, 0x25, 0x35, 0x4b, 0x2c, 0x4b, 0x72, 0x96, 0x54, 0x2c, 0xa9, 0x58, 0xf7, 0x24, 0xe4, 0xfa, + 0xa3, 0x09, 0xc8, 0x42, 0xc4, 0x34, 0x14, 0xa1, 0xa0, 0x85, 0x44, 0x60, 0x3e, 0x14, 0xbb, 0x62, + 0x53, 0xac, 0x4a, 0x69, 0xf7, 0xb4, 0xd3, 0x16, 0x95, 0xa0, 0x84, 0x91, 0x0b, 0xd8, 0xb6, 0xe3, + 0x9e, 0x75, 0x33, 0x26, 0xc9, 0x40, 0x2a, 0x2e, 0x12, 0x58, 0xb6, 0xb0, 0x27, 0xdd, 0x58, 0xd6, + 0x9a, 0xd9, 0x3d, 0xd9, 0xfd, 0x5a, 0x9a, 0x44, 0xf3, 0xb8, 0xed, 0x69, 0xb6, 0xfb, 0xb9, 0xd1, + 0x7c, 0x45, 0x79, 0xa2, 0x95, 0x96, 0xdb, 0xc8, 0xd1, 0xf7, 0x3e, 0xba, 0xfb, 0xb6, 0x4c, 0xef, + 0xd9, 0x8a, 0x29, 0x85, 0xdf, 0xa1, 0xbd, 0xd8, 0x66, 0xb8, 0x64, 0x9a, 0x4d, 0x9c, 0x43, 0xe7, + 0x78, 0x74, 0x7a, 0x4c, 0x3a, 0x93, 0xb7, 0x81, 0x93, 0x37, 0xc1, 0x27, 0x58, 0xe8, 0xd7, 0x96, + 0xf1, 0xf0, 0xfa, 0xfa, 0xa0, 0x77, 0x73, 0x7d, 0x80, 0xea, 0x33, 0xff, 0x56, 0x0d, 0x9f, 0xa1, + 0x91, 0xed, 0x99, 0xf1, 0x22, 0x19, 0x39, 0xe9, 0x5b, 0xf1, 0x7d, 0xef, 0x41, 0x85, 0x8c, 0x2e, + 0xea, 0x2b, 0xbf, 0xf9, 0x0e, 0x7f, 0x46, 0x28, 0x65, 0x92, 0x59, 0x19, 0x1b, 0xea, 0x64, 0x70, + 0x38, 0xb0, 0x96, 0x5e, 0x90, 0x7f, 0xff, 0x0c, 0xa4, 0x39, 0x1e, 0xb9, 0xb8, 0x95, 0x7a, 0x9e, + 0x68, 0x79, 0x55, 0x5b, 0xae, 0x2f, 0xfc, 0x46, 0x3f, 0xf7, 0x29, 0xba, 0xbf, 0x85, 0xe0, 0x31, + 0x1a, 0x44, 0x70, 0x55, 0x84, 0xb3, 0xef, 0xe7, 0x4b, 0xfc, 0x10, 0x0d, 0x33, 0xb6, 0x32, 0x50, + 0xce, 0xe4, 0x97, 0x9b, 0xf3, 0xfe, 0xdc, 0x39, 0xda, 0x38, 0x68, 0xdc, 0xec, 0xff, 0x8a, 0x2b, + 0x8d, 0x2f, 0x5b, 0x11, 0xd3, 0xbf, 0x44, 0xdc, 0xf8, 0x4d, 0x24, 0xc7, 0x8b, 0xa4, 0xc7, 0x95, + 0xed, 0xbd, 0x3f, 0x27, 0x8d, 0x9c, 0x2f, 0xd1, 0x90, 0x6b, 0x88, 0x95, 0x75, 0x93, 0x67, 0x35, + 0xff, 0xdf, 0xac, 0xbc, 0x7b, 0x55, 0x93, 0xe1, 0xcb, 0x5c, 0xce, 0x2f, 0x55, 0xbd, 0x47, 0xeb, + 0x9f, 0xd3, 0xde, 0xc6, 0xd6, 0x37, 0x5b, 0x5f, 0x6e, 0xa6, 0xce, 0xda, 0xd6, 0xc6, 0xd6, 0x0f, + 0x5b, 0x5f, 0x7f, 0x4d, 0x7b, 0xef, 0xef, 0x54, 0x6a, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x86, + 0x21, 0xa9, 0x43, 0xef, 0x03, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.proto new file mode 100644 index 0000000000..dbcdcc3c03 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/generated.proto @@ -0,0 +1,60 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.apis.storage.v1beta1; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; +import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "v1beta1"; + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +message StorageClass { + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; + + // Provisioner indicates the type of the provisioner. + optional string provisioner = 2; + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + map<string, string> parameters = 3; +} + +// StorageClassList is a collection of storage classes. +message StorageClassList { + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1; + + // Items is the list of StorageClasses + repeated StorageClass items = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/register.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/register.go new file mode 100644 index 0000000000..97c322dcf5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + "k8s.io/client-go/1.5/pkg/runtime" + versionedwatch "k8s.io/client-go/1.5/pkg/watch/versioned" +) + +// GroupName is the group name use in this package +const GroupName = "storage.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +// Adds the list of known types to api.Scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &v1.ListOptions{}, + &v1.DeleteOptions{}, + &v1.ExportOptions{}, + + &StorageClass{}, + &StorageClassList{}, + ) + + versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.generated.go new file mode 100644 index 0000000000..4e8d774466 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.generated.go @@ -0,0 +1,900 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// ************************************************************ +// DO NOT EDIT. +// THIS FILE IS AUTO-GENERATED BY codecgen. +// ************************************************************ + +package v1beta1 + +import ( + "errors" + "fmt" + codec1978 "github.com/ugorji/go/codec" + pkg1_unversioned "k8s.io/client-go/1.5/pkg/api/unversioned" + pkg2_v1 "k8s.io/client-go/1.5/pkg/api/v1" + pkg3_types "k8s.io/client-go/1.5/pkg/types" + "reflect" + "runtime" + time "time" +) + +const ( + // ----- content types ---- + codecSelferC_UTF81234 = 1 + codecSelferC_RAW1234 = 0 + // ----- value types used ---- + codecSelferValueTypeArray1234 = 10 + codecSelferValueTypeMap1234 = 9 + // ----- containerStateValues ---- + codecSelfer_containerMapKey1234 = 2 + codecSelfer_containerMapValue1234 = 3 + codecSelfer_containerMapEnd1234 = 4 + codecSelfer_containerArrayElem1234 = 6 + codecSelfer_containerArrayEnd1234 = 7 +) + +var ( + codecSelferBitsize1234 = uint8(reflect.TypeOf(uint(0)).Bits()) + codecSelferOnlyMapOrArrayEncodeToStructErr1234 = errors.New(`only encoded map or array can be decoded into a struct`) +) + +type codecSelfer1234 struct{} + +func init() { + if codec1978.GenVersion != 5 { + _, file, _, _ := runtime.Caller(0) + err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v", + 5, codec1978.GenVersion, file) + panic(err) + } + if false { // reference the types, but skip this branch at build/run time + var v0 pkg1_unversioned.TypeMeta + var v1 pkg2_v1.ObjectMeta + var v2 pkg3_types.UID + var v3 time.Time + _, _, _, _ = v0, v1, v2, v3 + } +} + +func (x *StorageClass) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym1 := z.EncBinary() + _ = yym1 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep2 := !z.EncBinary() + yy2arr2 := z.EncBasicHandle().StructToArray + var yyq2 [5]bool + _, _, _ = yysep2, yyq2, yy2arr2 + const yyr2 bool = false + yyq2[0] = x.Kind != "" + yyq2[1] = x.APIVersion != "" + yyq2[2] = true + yyq2[4] = len(x.Parameters) != 0 + var yynn2 int + if yyr2 || yy2arr2 { + r.EncodeArrayStart(5) + } else { + yynn2 = 1 + for _, b := range yyq2 { + if b { + yynn2++ + } + } + r.EncodeMapStart(yynn2) + yynn2 = 0 + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[0] { + yym4 := z.EncBinary() + _ = yym4 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym5 := z.EncBinary() + _ = yym5 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[1] { + yym7 := z.EncBinary() + _ = yym7 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq2[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym8 := z.EncBinary() + _ = yym8 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[2] { + yy10 := &x.ObjectMeta + yy10.CodecEncodeSelf(e) + } else { + r.EncodeNil() + } + } else { + if yyq2[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy11 := &x.ObjectMeta + yy11.CodecEncodeSelf(e) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yym13 := z.EncBinary() + _ = yym13 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("provisioner")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym14 := z.EncBinary() + _ = yym14 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner)) + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq2[4] { + if x.Parameters == nil { + r.EncodeNil() + } else { + yym16 := z.EncBinary() + _ = yym16 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } else { + r.EncodeNil() + } + } else { + if yyq2[4] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("parameters")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Parameters == nil { + r.EncodeNil() + } else { + yym17 := z.EncBinary() + _ = yym17 + if false { + } else { + z.F.EncMapStringStringV(x.Parameters, false, e) + } + } + } + } + if yyr2 || yy2arr2 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClass) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym18 := z.DecBinary() + _ = yym18 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct19 := r.ContainerType() + if yyct19 == codecSelferValueTypeMap1234 { + yyl19 := r.ReadMapStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl19, d) + } + } else if yyct19 == codecSelferValueTypeArray1234 { + yyl19 := r.ReadArrayStart() + if yyl19 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl19, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClass) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys20Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys20Slc + var yyhl20 bool = l >= 0 + for yyj20 := 0; ; yyj20++ { + if yyhl20 { + if yyj20 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys20Slc = r.DecodeBytes(yys20Slc, true, true) + yys20 := string(yys20Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys20 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv23 := &x.ObjectMeta + yyv23.CodecDecodeSelf(d) + } + case "provisioner": + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + x.Provisioner = string(r.DecodeString()) + } + case "parameters": + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv25 := &x.Parameters + yym26 := z.DecBinary() + _ = yym26 + if false { + } else { + z.F.DecMapStringStringX(yyv25, false, d) + } + } + default: + z.DecStructFieldNotFound(-1, yys20) + } // end switch yys20 + } // end for yyj20 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClass) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj27 int + var yyb27 bool + var yyhl27 bool = l >= 0 + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ObjectMeta = pkg2_v1.ObjectMeta{} + } else { + yyv30 := &x.ObjectMeta + yyv30.CodecDecodeSelf(d) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Provisioner = "" + } else { + x.Provisioner = string(r.DecodeString()) + } + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Parameters = nil + } else { + yyv32 := &x.Parameters + yym33 := z.DecBinary() + _ = yym33 + if false { + } else { + z.F.DecMapStringStringX(yyv32, false, d) + } + } + for { + yyj27++ + if yyhl27 { + yyb27 = yyj27 > l + } else { + yyb27 = r.CheckBreak() + } + if yyb27 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj27-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x *StorageClassList) CodecEncodeSelf(e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + if x == nil { + r.EncodeNil() + } else { + yym34 := z.EncBinary() + _ = yym34 + if false { + } else if z.HasExtensions() && z.EncExt(x) { + } else { + yysep35 := !z.EncBinary() + yy2arr35 := z.EncBasicHandle().StructToArray + var yyq35 [4]bool + _, _, _ = yysep35, yyq35, yy2arr35 + const yyr35 bool = false + yyq35[0] = x.Kind != "" + yyq35[1] = x.APIVersion != "" + yyq35[2] = true + var yynn35 int + if yyr35 || yy2arr35 { + r.EncodeArrayStart(4) + } else { + yynn35 = 1 + for _, b := range yyq35 { + if b { + yynn35++ + } + } + r.EncodeMapStart(yynn35) + yynn35 = 0 + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[0] { + yym37 := z.EncBinary() + _ = yym37 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq35[0] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("kind")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym38 := z.EncBinary() + _ = yym38 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.Kind)) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[1] { + yym40 := z.EncBinary() + _ = yym40 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } else { + r.EncodeString(codecSelferC_UTF81234, "") + } + } else { + if yyq35[1] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("apiVersion")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yym41 := z.EncBinary() + _ = yym41 + if false { + } else { + r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion)) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if yyq35[2] { + yy43 := &x.ListMeta + yym44 := z.EncBinary() + _ = yym44 + if false { + } else if z.HasExtensions() && z.EncExt(yy43) { + } else { + z.EncFallback(yy43) + } + } else { + r.EncodeNil() + } + } else { + if yyq35[2] { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("metadata")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + yy45 := &x.ListMeta + yym46 := z.EncBinary() + _ = yym46 + if false { + } else if z.HasExtensions() && z.EncExt(yy45) { + } else { + z.EncFallback(yy45) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym48 := z.EncBinary() + _ = yym48 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } else { + z.EncSendContainerState(codecSelfer_containerMapKey1234) + r.EncodeString(codecSelferC_UTF81234, string("items")) + z.EncSendContainerState(codecSelfer_containerMapValue1234) + if x.Items == nil { + r.EncodeNil() + } else { + yym49 := z.EncBinary() + _ = yym49 + if false { + } else { + h.encSliceStorageClass(([]StorageClass)(x.Items), e) + } + } + } + if yyr35 || yy2arr35 { + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + z.EncSendContainerState(codecSelfer_containerMapEnd1234) + } + } + } +} + +func (x *StorageClassList) CodecDecodeSelf(d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + yym50 := z.DecBinary() + _ = yym50 + if false { + } else if z.HasExtensions() && z.DecExt(x) { + } else { + yyct51 := r.ContainerType() + if yyct51 == codecSelferValueTypeMap1234 { + yyl51 := r.ReadMapStart() + if yyl51 == 0 { + z.DecSendContainerState(codecSelfer_containerMapEnd1234) + } else { + x.codecDecodeSelfFromMap(yyl51, d) + } + } else if yyct51 == codecSelferValueTypeArray1234 { + yyl51 := r.ReadArrayStart() + if yyl51 == 0 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + } else { + x.codecDecodeSelfFromArray(yyl51, d) + } + } else { + panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234) + } + } +} + +func (x *StorageClassList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yys52Slc = z.DecScratchBuffer() // default slice to decode into + _ = yys52Slc + var yyhl52 bool = l >= 0 + for yyj52 := 0; ; yyj52++ { + if yyhl52 { + if yyj52 >= l { + break + } + } else { + if r.CheckBreak() { + break + } + } + z.DecSendContainerState(codecSelfer_containerMapKey1234) + yys52Slc = r.DecodeBytes(yys52Slc, true, true) + yys52 := string(yys52Slc) + z.DecSendContainerState(codecSelfer_containerMapValue1234) + switch yys52 { + case "kind": + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + case "apiVersion": + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + case "metadata": + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv55 := &x.ListMeta + yym56 := z.DecBinary() + _ = yym56 + if false { + } else if z.HasExtensions() && z.DecExt(yyv55) { + } else { + z.DecFallback(yyv55, false) + } + } + case "items": + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv57 := &x.Items + yym58 := z.DecBinary() + _ = yym58 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv57), d) + } + } + default: + z.DecStructFieldNotFound(-1, yys52) + } // end switch yys52 + } // end for yyj52 + z.DecSendContainerState(codecSelfer_containerMapEnd1234) +} + +func (x *StorageClassList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + var yyj59 int + var yyb59 bool + var yyhl59 bool = l >= 0 + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Kind = "" + } else { + x.Kind = string(r.DecodeString()) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.APIVersion = "" + } else { + x.APIVersion = string(r.DecodeString()) + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.ListMeta = pkg1_unversioned.ListMeta{} + } else { + yyv62 := &x.ListMeta + yym63 := z.DecBinary() + _ = yym63 + if false { + } else if z.HasExtensions() && z.DecExt(yyv62) { + } else { + z.DecFallback(yyv62, false) + } + } + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) + return + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + if r.TryDecodeAsNil() { + x.Items = nil + } else { + yyv64 := &x.Items + yym65 := z.DecBinary() + _ = yym65 + if false { + } else { + h.decSliceStorageClass((*[]StorageClass)(yyv64), d) + } + } + for { + yyj59++ + if yyhl59 { + yyb59 = yyj59 > l + } else { + yyb59 = r.CheckBreak() + } + if yyb59 { + break + } + z.DecSendContainerState(codecSelfer_containerArrayElem1234) + z.DecStructFieldNotFound(yyj59-1, "") + } + z.DecSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) encSliceStorageClass(v []StorageClass, e *codec1978.Encoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperEncoder(e) + _, _, _ = h, z, r + r.EncodeArrayStart(len(v)) + for _, yyv66 := range v { + z.EncSendContainerState(codecSelfer_containerArrayElem1234) + yy67 := &yyv66 + yy67.CodecEncodeSelf(e) + } + z.EncSendContainerState(codecSelfer_containerArrayEnd1234) +} + +func (x codecSelfer1234) decSliceStorageClass(v *[]StorageClass, d *codec1978.Decoder) { + var h codecSelfer1234 + z, r := codec1978.GenHelperDecoder(d) + _, _, _ = h, z, r + + yyv68 := *v + yyh68, yyl68 := z.DecSliceHelperStart() + var yyc68 bool + if yyl68 == 0 { + if yyv68 == nil { + yyv68 = []StorageClass{} + yyc68 = true + } else if len(yyv68) != 0 { + yyv68 = yyv68[:0] + yyc68 = true + } + } else if yyl68 > 0 { + var yyrr68, yyrl68 int + var yyrt68 bool + if yyl68 > cap(yyv68) { + + yyrg68 := len(yyv68) > 0 + yyv268 := yyv68 + yyrl68, yyrt68 = z.DecInferLen(yyl68, z.DecBasicHandle().MaxInitLen, 280) + if yyrt68 { + if yyrl68 <= cap(yyv68) { + yyv68 = yyv68[:yyrl68] + } else { + yyv68 = make([]StorageClass, yyrl68) + } + } else { + yyv68 = make([]StorageClass, yyrl68) + } + yyc68 = true + yyrr68 = len(yyv68) + if yyrg68 { + copy(yyv68, yyv268) + } + } else if yyl68 != len(yyv68) { + yyv68 = yyv68[:yyl68] + yyc68 = true + } + yyj68 := 0 + for ; yyj68 < yyrr68; yyj68++ { + yyh68.ElemContainerState(yyj68) + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv69 := &yyv68[yyj68] + yyv69.CodecDecodeSelf(d) + } + + } + if yyrt68 { + for ; yyj68 < yyl68; yyj68++ { + yyv68 = append(yyv68, StorageClass{}) + yyh68.ElemContainerState(yyj68) + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv70 := &yyv68[yyj68] + yyv70.CodecDecodeSelf(d) + } + + } + } + + } else { + yyj68 := 0 + for ; !r.CheckBreak(); yyj68++ { + + if yyj68 >= len(yyv68) { + yyv68 = append(yyv68, StorageClass{}) // var yyz68 StorageClass + yyc68 = true + } + yyh68.ElemContainerState(yyj68) + if yyj68 < len(yyv68) { + if r.TryDecodeAsNil() { + yyv68[yyj68] = StorageClass{} + } else { + yyv71 := &yyv68[yyj68] + yyv71.CodecDecodeSelf(d) + } + + } else { + z.DecSwallow() + } + + } + if yyj68 < len(yyv68) { + yyv68 = yyv68[:yyj68] + yyc68 = true + } else if yyj68 == 0 && yyv68 == nil { + yyv68 = []StorageClass{} + yyc68 = true + } + } + yyh68.End() + if yyc68 { + *v = yyv68 + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.go new file mode 100644 index 0000000000..e281b57935 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types.go @@ -0,0 +1,55 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" +) + +// +genclient=true +// +nonNamespaced=true + +// StorageClass describes the parameters for a class of storage for +// which PersistentVolumes can be dynamically provisioned. +// +// StorageClasses are non-namespaced; the name of the storage class +// according to etcd is in ObjectMeta.Name. +type StorageClass struct { + unversioned.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Provisioner indicates the type of the provisioner. + Provisioner string `json:"provisioner" protobuf:"bytes,2,opt,name=provisioner"` + + // Parameters holds the parameters for the provisioner that should + // create volumes of this storage class. + Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"` +} + +// StorageClassList is a collection of storage classes. +type StorageClassList struct { + unversioned.TypeMeta `json:",inline"` + // Standard list metadata + // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata + unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of StorageClasses + Items []StorageClass `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go new file mode 100644 index 0000000000..e8362e381f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/types_swagger_doc_generated.go @@ -0,0 +1,51 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1beta1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE +var map_StorageClass = map[string]string{ + "": "StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.", + "metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "provisioner": "Provisioner indicates the type of the provisioner.", + "parameters": "Parameters holds the parameters for the provisioner that should create volumes of this storage class.", +} + +func (StorageClass) SwaggerDoc() map[string]string { + return map_StorageClass +} + +var map_StorageClassList = map[string]string{ + "": "StorageClassList is a collection of storage classes.", + "metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata", + "items": "Items is the list of StorageClasses", +} + +func (StorageClassList) SwaggerDoc() map[string]string { + return map_StorageClassList +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.conversion.go new file mode 100644 index 0000000000..fc900af2fe --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.conversion.go @@ -0,0 +1,127 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by conversion-gen. Do not edit it manually! + +package v1beta1 + +import ( + api "k8s.io/client-go/1.5/pkg/api" + storage "k8s.io/client-go/1.5/pkg/apis/storage" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" +) + +func init() { + SchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(scheme *runtime.Scheme) error { + return scheme.AddGeneratedConversionFuncs( + Convert_v1beta1_StorageClass_To_storage_StorageClass, + Convert_storage_StorageClass_To_v1beta1_StorageClass, + Convert_v1beta1_StorageClassList_To_storage_StorageClassList, + Convert_storage_StorageClassList_To_v1beta1_StorageClassList, + ) +} + +func autoConvert_v1beta1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + out.Provisioner = in.Provisioner + out.Parameters = in.Parameters + return nil +} + +func Convert_v1beta1_StorageClass_To_storage_StorageClass(in *StorageClass, out *storage.StorageClass, s conversion.Scope) error { + return autoConvert_v1beta1_StorageClass_To_storage_StorageClass(in, out, s) +} + +func autoConvert_storage_StorageClass_To_v1beta1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + // TODO: Inefficient conversion - can we improve it? + if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { + return err + } + out.Provisioner = in.Provisioner + out.Parameters = in.Parameters + return nil +} + +func Convert_storage_StorageClass_To_v1beta1_StorageClass(in *storage.StorageClass, out *StorageClass, s conversion.Scope) error { + return autoConvert_storage_StorageClass_To_v1beta1_StorageClass(in, out, s) +} + +func autoConvert_v1beta1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]storage.StorageClass, len(*in)) + for i := range *in { + if err := Convert_v1beta1_StorageClass_To_storage_StorageClass(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_v1beta1_StorageClassList_To_storage_StorageClassList(in *StorageClassList, out *storage.StorageClassList, s conversion.Scope) error { + return autoConvert_v1beta1_StorageClassList_To_storage_StorageClassList(in, out, s) +} + +func autoConvert_storage_StorageClassList_To_v1beta1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil { + return err + } + if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil { + return err + } + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := Convert_storage_StorageClass_To_v1beta1_StorageClass(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +func Convert_storage_StorageClassList_To_v1beta1_StorageClassList(in *storage.StorageClassList, out *StorageClassList, s conversion.Scope) error { + return autoConvert_storage_StorageClassList_To_v1beta1_StorageClassList(in, out, s) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000000..27e39b68cc --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,84 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package v1beta1 + +import ( + v1 "k8s.io/client-go/1.5/pkg/api/v1" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClass, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClassList, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +func DeepCopy_v1beta1_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClass) + out := out.(*StorageClass) + out.TypeMeta = in.TypeMeta + if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Provisioner = in.Provisioner + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Parameters = nil + } + return nil + } +} + +func DeepCopy_v1beta1_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClassList) + out := out.(*StorageClassList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := DeepCopy_v1beta1_StorageClass(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/apis/storage/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/zz_generated.deepcopy.go new file mode 100644 index 0000000000..d158ebcc6c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/apis/storage/zz_generated.deepcopy.go @@ -0,0 +1,84 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package storage + +import ( + api "k8s.io/client-go/1.5/pkg/api" + conversion "k8s.io/client-go/1.5/pkg/conversion" + runtime "k8s.io/client-go/1.5/pkg/runtime" + reflect "reflect" +) + +func init() { + SchemeBuilder.Register(RegisterDeepCopies) +} + +// RegisterDeepCopies adds deep-copy functions to the given scheme. Public +// to allow building arbitrary schemes. +func RegisterDeepCopies(scheme *runtime.Scheme) error { + return scheme.AddGeneratedDeepCopyFuncs( + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_storage_StorageClass, InType: reflect.TypeOf(&StorageClass{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_storage_StorageClassList, InType: reflect.TypeOf(&StorageClassList{})}, + ) +} + +func DeepCopy_storage_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClass) + out := out.(*StorageClass) + out.TypeMeta = in.TypeMeta + if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil { + return err + } + out.Provisioner = in.Provisioner + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make(map[string]string) + for key, val := range *in { + (*out)[key] = val + } + } else { + out.Parameters = nil + } + return nil + } +} + +func DeepCopy_storage_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*StorageClassList) + out := out.(*StorageClassList) + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]StorageClass, len(*in)) + for i := range *in { + if err := DeepCopy_storage_StorageClass(&(*in)[i], &(*out)[i], c); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/auth/user/doc.go b/vendor/k8s.io/client-go/1.5/pkg/auth/user/doc.go new file mode 100644 index 0000000000..570c51ae99 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/auth/user/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package user contains utilities for dealing with simple user exchange in the auth +// packages. The user.Info interface defines an interface for exchanging that info. +package user diff --git a/vendor/k8s.io/client-go/1.5/pkg/auth/user/user.go b/vendor/k8s.io/client-go/1.5/pkg/auth/user/user.go new file mode 100644 index 0000000000..7e7cc16f68 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/auth/user/user.go @@ -0,0 +1,67 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package user + +// Info describes a user that has been authenticated to the system. +type Info interface { + // GetName returns the name that uniquely identifies this user among all + // other active users. + GetName() string + // GetUID returns a unique value for a particular user that will change + // if the user is removed from the system and another user is added with + // the same name. + GetUID() string + // GetGroups returns the names of the groups the user is a member of + GetGroups() []string + + // GetExtra can contain any additional information that the authenticator + // thought was interesting. One example would be scopes on a token. + // Keys in this map should be namespaced to the authenticator or + // authenticator/authorizer pair making use of them. + // For instance: "example.org/foo" instead of "foo" + // This is a map[string][]string because it needs to be serializeable into + // a SubjectAccessReviewSpec.authorization.k8s.io for proper authorization + // delegation flows + // In order to faithfully round-trip through an impersonation flow, these keys + // MUST be lowercase. + GetExtra() map[string][]string +} + +// DefaultInfo provides a simple user information exchange object +// for components that implement the UserInfo interface. +type DefaultInfo struct { + Name string + UID string + Groups []string + Extra map[string][]string +} + +func (i *DefaultInfo) GetName() string { + return i.Name +} + +func (i *DefaultInfo) GetUID() string { + return i.UID +} + +func (i *DefaultInfo) GetGroups() []string { + return i.Groups +} + +func (i *DefaultInfo) GetExtra() map[string][]string { + return i.Extra +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/OWNERS b/vendor/k8s.io/client-go/1.5/pkg/conversion/OWNERS new file mode 100644 index 0000000000..a046efc0c2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/OWNERS @@ -0,0 +1,5 @@ +assignees: + - derekwaynecarr + - lavalamp + - smarterclayton + - wojtek-t diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/cloner.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/cloner.go new file mode 100644 index 0000000000..c5dec1f31e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/cloner.go @@ -0,0 +1,249 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +// Cloner knows how to copy one type to another. +type Cloner struct { + // Map from the type to a function which can do the deep copy. + deepCopyFuncs map[reflect.Type]reflect.Value + generatedDeepCopyFuncs map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error +} + +// NewCloner creates a new Cloner object. +func NewCloner() *Cloner { + c := &Cloner{ + deepCopyFuncs: map[reflect.Type]reflect.Value{}, + generatedDeepCopyFuncs: map[reflect.Type]func(in interface{}, out interface{}, c *Cloner) error{}, + } + if err := c.RegisterDeepCopyFunc(byteSliceDeepCopy); err != nil { + // If one of the deep-copy functions is malformed, detect it immediately. + panic(err) + } + return c +} + +// Prevent recursing into every byte... +func byteSliceDeepCopy(in *[]byte, out *[]byte, c *Cloner) error { + if *in != nil { + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + *out = nil + } + return nil +} + +// Verifies whether a deep-copy function has a correct signature. +func verifyDeepCopyFunctionSignature(ft reflect.Type) error { + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 3 { + return fmt.Errorf("expected three 'in' params, got %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got %v", ft) + } + if ft.In(0).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft) + } + if ft.In(1) != ft.In(0) { + return fmt.Errorf("expected 'in' param 0 the same as param 1, got: %v", ft) + } + var forClonerType Cloner + if expected := reflect.TypeOf(&forClonerType); ft.In(2) != expected { + return fmt.Errorf("expected '%v' arg for 'in' param 2, got: '%v'", expected, ft.In(2)) + } + var forErrorType error + // This convolution is necessary, otherwise TypeOf picks up on the fact + // that forErrorType is nil + errorType := reflect.TypeOf(&forErrorType).Elem() + if ft.Out(0) != errorType { + return fmt.Errorf("expected error return, got: %v", ft) + } + return nil +} + +// RegisterGeneratedDeepCopyFunc registers a copying func with the Cloner. +// deepCopyFunc must take three parameters: a type input, a pointer to a +// type output, and a pointer to Cloner. It should return an error. +// +// Example: +// c.RegisterGeneratedDeepCopyFunc( +// func(in Pod, out *Pod, c *Cloner) error { +// // deep copy logic... +// return nil +// }) +func (c *Cloner) RegisterDeepCopyFunc(deepCopyFunc interface{}) error { + fv := reflect.ValueOf(deepCopyFunc) + ft := fv.Type() + if err := verifyDeepCopyFunctionSignature(ft); err != nil { + return err + } + c.deepCopyFuncs[ft.In(0)] = fv + return nil +} + +// GeneratedDeepCopyFunc bundles an untyped generated deep-copy function of a type +// with a reflection type object used as a key to lookup the deep-copy function. +type GeneratedDeepCopyFunc struct { + Fn func(in interface{}, out interface{}, c *Cloner) error + InType reflect.Type +} + +// Similar to RegisterDeepCopyFunc, but registers deep copy function that were +// automatically generated. +func (c *Cloner) RegisterGeneratedDeepCopyFunc(fn GeneratedDeepCopyFunc) error { + c.generatedDeepCopyFuncs[fn.InType] = fn.Fn + return nil +} + +// DeepCopy will perform a deep copy of a given object. +func (c *Cloner) DeepCopy(in interface{}) (interface{}, error) { + // Can be invalid if we run DeepCopy(X) where X is a nil interface type. + // For example, we get an invalid value when someone tries to deep-copy + // a nil labels.Selector. + // This does not occur if X is nil and is a pointer to a concrete type. + if in == nil { + return nil, nil + } + inValue := reflect.ValueOf(in) + outValue, err := c.deepCopy(inValue) + if err != nil { + return nil, err + } + return outValue.Interface(), nil +} + +func (c *Cloner) deepCopy(src reflect.Value) (reflect.Value, error) { + inType := src.Type() + + switch src.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + if src.IsNil() { + return src, nil + } + } + + if fv, ok := c.deepCopyFuncs[inType]; ok { + return c.customDeepCopy(src, fv) + } + if fv, ok := c.generatedDeepCopyFuncs[inType]; ok { + var outValue reflect.Value + outValue = reflect.New(inType.Elem()) + err := fv(src.Interface(), outValue.Interface(), c) + return outValue, err + } + return c.defaultDeepCopy(src) +} + +func (c *Cloner) customDeepCopy(src, fv reflect.Value) (reflect.Value, error) { + outValue := reflect.New(src.Type().Elem()) + args := []reflect.Value{src, outValue, reflect.ValueOf(c)} + result := fv.Call(args)[0].Interface() + // This convolution is necessary because nil interfaces won't convert + // to error. + if result == nil { + return outValue, nil + } + return outValue, result.(error) +} + +func (c *Cloner) defaultDeepCopy(src reflect.Value) (reflect.Value, error) { + switch src.Kind() { + case reflect.Chan, reflect.Func, reflect.UnsafePointer, reflect.Uintptr: + return src, fmt.Errorf("cannot deep copy kind: %s", src.Kind()) + case reflect.Array: + dst := reflect.New(src.Type()) + for i := 0; i < src.Len(); i++ { + copyVal, err := c.deepCopy(src.Index(i)) + if err != nil { + return src, err + } + dst.Elem().Index(i).Set(copyVal) + } + return dst.Elem(), nil + case reflect.Interface: + if src.IsNil() { + return src, nil + } + return c.deepCopy(src.Elem()) + case reflect.Map: + if src.IsNil() { + return src, nil + } + dst := reflect.MakeMap(src.Type()) + for _, k := range src.MapKeys() { + copyVal, err := c.deepCopy(src.MapIndex(k)) + if err != nil { + return src, err + } + dst.SetMapIndex(k, copyVal) + } + return dst, nil + case reflect.Ptr: + if src.IsNil() { + return src, nil + } + dst := reflect.New(src.Type().Elem()) + copyVal, err := c.deepCopy(src.Elem()) + if err != nil { + return src, err + } + dst.Elem().Set(copyVal) + return dst, nil + case reflect.Slice: + if src.IsNil() { + return src, nil + } + dst := reflect.MakeSlice(src.Type(), 0, src.Len()) + for i := 0; i < src.Len(); i++ { + copyVal, err := c.deepCopy(src.Index(i)) + if err != nil { + return src, err + } + dst = reflect.Append(dst, copyVal) + } + return dst, nil + case reflect.Struct: + dst := reflect.New(src.Type()) + for i := 0; i < src.NumField(); i++ { + if !dst.Elem().Field(i).CanSet() { + // Can't set private fields. At this point, the + // best we can do is a shallow copy. For + // example, time.Time is a value type with + // private members that can be shallow copied. + return src, nil + } + copyVal, err := c.deepCopy(src.Field(i)) + if err != nil { + return src, err + } + dst.Elem().Field(i).Set(copyVal) + } + return dst.Elem(), nil + + default: + // Value types like numbers, booleans, and strings. + return src, nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/converter.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/converter.go new file mode 100644 index 0000000000..8941b18aef --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/converter.go @@ -0,0 +1,953 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +type typePair struct { + source reflect.Type + dest reflect.Type +} + +type typeNamePair struct { + fieldType reflect.Type + fieldName string +} + +// DebugLogger allows you to get debugging messages if necessary. +type DebugLogger interface { + Logf(format string, args ...interface{}) +} + +type NameFunc func(t reflect.Type) string + +var DefaultNameFunc = func(t reflect.Type) string { return t.Name() } + +type GenericConversionFunc func(a, b interface{}, scope Scope) (bool, error) + +// Converter knows how to convert one type to another. +type Converter struct { + // Map from the conversion pair to a function which can + // do the conversion. + conversionFuncs ConversionFuncs + generatedConversionFuncs ConversionFuncs + + // genericConversions are called during normal conversion to offer a "fast-path" + // that avoids all reflection. These methods are not called outside of the .Convert() + // method. + genericConversions []GenericConversionFunc + + // Set of conversions that should be treated as a no-op + ignoredConversions map[typePair]struct{} + + // This is a map from a source field type and name, to a list of destination + // field type and name. + structFieldDests map[typeNamePair][]typeNamePair + + // Allows for the opposite lookup of structFieldDests. So that SourceFromDest + // copy flag also works. So this is a map of destination field name, to potential + // source field name and type to look for. + structFieldSources map[typeNamePair][]typeNamePair + + // Map from a type to a function which applies defaults. + defaultingFuncs map[reflect.Type]reflect.Value + + // Similar to above, but function is stored as interface{}. + defaultingInterfaces map[reflect.Type]interface{} + + // Map from an input type to a function which can apply a key name mapping + inputFieldMappingFuncs map[reflect.Type]FieldMappingFunc + + // Map from an input type to a set of default conversion flags. + inputDefaultFlags map[reflect.Type]FieldMatchingFlags + + // If non-nil, will be called to print helpful debugging info. Quite verbose. + Debug DebugLogger + + // nameFunc is called to retrieve the name of a type; this name is used for the + // purpose of deciding whether two types match or not (i.e., will we attempt to + // do a conversion). The default returns the go type name. + nameFunc func(t reflect.Type) string +} + +// NewConverter creates a new Converter object. +func NewConverter(nameFn NameFunc) *Converter { + c := &Converter{ + conversionFuncs: NewConversionFuncs(), + generatedConversionFuncs: NewConversionFuncs(), + ignoredConversions: make(map[typePair]struct{}), + defaultingFuncs: make(map[reflect.Type]reflect.Value), + defaultingInterfaces: make(map[reflect.Type]interface{}), + nameFunc: nameFn, + structFieldDests: make(map[typeNamePair][]typeNamePair), + structFieldSources: make(map[typeNamePair][]typeNamePair), + + inputFieldMappingFuncs: make(map[reflect.Type]FieldMappingFunc), + inputDefaultFlags: make(map[reflect.Type]FieldMatchingFlags), + } + c.RegisterConversionFunc(Convert_Slice_byte_To_Slice_byte) + return c +} + +// AddGenericConversionFunc adds a function that accepts the ConversionFunc call pattern +// (for two conversion types) to the converter. These functions are checked first during +// a normal conversion, but are otherwise not called. Use AddConversionFuncs when registering +// typed conversions. +func (c *Converter) AddGenericConversionFunc(fn GenericConversionFunc) { + c.genericConversions = append(c.genericConversions, fn) +} + +// WithConversions returns a Converter that is a copy of c but with the additional +// fns merged on top. +func (c *Converter) WithConversions(fns ConversionFuncs) *Converter { + copied := *c + copied.conversionFuncs = c.conversionFuncs.Merge(fns) + return &copied +} + +// DefaultMeta returns the conversion FieldMappingFunc and meta for a given type. +func (c *Converter) DefaultMeta(t reflect.Type) (FieldMatchingFlags, *Meta) { + return c.inputDefaultFlags[t], &Meta{ + KeyNameMapping: c.inputFieldMappingFuncs[t], + } +} + +// Convert_Slice_byte_To_Slice_byte prevents recursing into every byte +func Convert_Slice_byte_To_Slice_byte(in *[]byte, out *[]byte, s Scope) error { + if *in == nil { + *out = nil + return nil + } + *out = make([]byte, len(*in)) + copy(*out, *in) + return nil +} + +// Scope is passed to conversion funcs to allow them to continue an ongoing conversion. +// If multiple converters exist in the system, Scope will allow you to use the correct one +// from a conversion function--that is, the one your conversion function was called by. +type Scope interface { + // Call Convert to convert sub-objects. Note that if you call it with your own exact + // parameters, you'll run out of stack space before anything useful happens. + Convert(src, dest interface{}, flags FieldMatchingFlags) error + + // DefaultConvert performs the default conversion, without calling a conversion func + // on the current stack frame. This makes it safe to call from a conversion func. + DefaultConvert(src, dest interface{}, flags FieldMatchingFlags) error + + // If registered, returns a function applying defaults for objects of a given type. + // Used for automatically generating conversion functions. + DefaultingInterface(inType reflect.Type) (interface{}, bool) + + // SrcTags and DestTags contain the struct tags that src and dest had, respectively. + // If the enclosing object was not a struct, then these will contain no tags, of course. + SrcTag() reflect.StructTag + DestTag() reflect.StructTag + + // Flags returns the flags with which the conversion was started. + Flags() FieldMatchingFlags + + // Meta returns any information originally passed to Convert. + Meta() *Meta +} + +// FieldMappingFunc can convert an input field value into different values, depending on +// the value of the source or destination struct tags. +type FieldMappingFunc func(key string, sourceTag, destTag reflect.StructTag) (source string, dest string) + +func NewConversionFuncs() ConversionFuncs { + return ConversionFuncs{fns: make(map[typePair]reflect.Value)} +} + +type ConversionFuncs struct { + fns map[typePair]reflect.Value +} + +// Add adds the provided conversion functions to the lookup table - they must have the signature +// `func(type1, type2, Scope) error`. Functions are added in the order passed and will override +// previously registered pairs. +func (c ConversionFuncs) Add(fns ...interface{}) error { + for _, fn := range fns { + fv := reflect.ValueOf(fn) + ft := fv.Type() + if err := verifyConversionFunctionSignature(ft); err != nil { + return err + } + c.fns[typePair{ft.In(0).Elem(), ft.In(1).Elem()}] = fv + } + return nil +} + +// Merge returns a new ConversionFuncs that contains all conversions from +// both other and c, with other conversions taking precedence. +func (c ConversionFuncs) Merge(other ConversionFuncs) ConversionFuncs { + merged := NewConversionFuncs() + for k, v := range c.fns { + merged.fns[k] = v + } + for k, v := range other.fns { + merged.fns[k] = v + } + return merged +} + +// Meta is supplied by Scheme, when it calls Convert. +type Meta struct { + // KeyNameMapping is an optional function which may map the listed key (field name) + // into a source and destination value. + KeyNameMapping FieldMappingFunc + // Context is an optional field that callers may use to pass info to conversion functions. + Context interface{} +} + +// scope contains information about an ongoing conversion. +type scope struct { + converter *Converter + meta *Meta + flags FieldMatchingFlags + + // srcStack & destStack are separate because they may not have a 1:1 + // relationship. + srcStack scopeStack + destStack scopeStack +} + +type scopeStackElem struct { + tag reflect.StructTag + value reflect.Value + key string +} + +type scopeStack []scopeStackElem + +func (s *scopeStack) pop() { + n := len(*s) + *s = (*s)[:n-1] +} + +func (s *scopeStack) push(e scopeStackElem) { + *s = append(*s, e) +} + +func (s *scopeStack) top() *scopeStackElem { + return &(*s)[len(*s)-1] +} + +func (s scopeStack) describe() string { + desc := "" + if len(s) > 1 { + desc = "(" + s[1].value.Type().String() + ")" + } + for i, v := range s { + if i < 2 { + // First layer on stack is not real; second is handled specially above. + continue + } + if v.key == "" { + desc += fmt.Sprintf(".%v", v.value.Type()) + } else { + desc += fmt.Sprintf(".%v", v.key) + } + } + return desc +} + +func (s *scope) DefaultingInterface(inType reflect.Type) (interface{}, bool) { + value, found := s.converter.defaultingInterfaces[inType] + return value, found +} + +// Formats src & dest as indices for printing. +func (s *scope) setIndices(src, dest int) { + s.srcStack.top().key = fmt.Sprintf("[%v]", src) + s.destStack.top().key = fmt.Sprintf("[%v]", dest) +} + +// Formats src & dest as map keys for printing. +func (s *scope) setKeys(src, dest interface{}) { + s.srcStack.top().key = fmt.Sprintf(`["%v"]`, src) + s.destStack.top().key = fmt.Sprintf(`["%v"]`, dest) +} + +// Convert continues a conversion. +func (s *scope) Convert(src, dest interface{}, flags FieldMatchingFlags) error { + return s.converter.Convert(src, dest, flags, s.meta) +} + +// DefaultConvert continues a conversion, performing a default conversion (no conversion func) +// for the current stack frame. +func (s *scope) DefaultConvert(src, dest interface{}, flags FieldMatchingFlags) error { + return s.converter.DefaultConvert(src, dest, flags, s.meta) +} + +// SrcTag returns the tag of the struct containing the current source item, if any. +func (s *scope) SrcTag() reflect.StructTag { + return s.srcStack.top().tag +} + +// DestTag returns the tag of the struct containing the current dest item, if any. +func (s *scope) DestTag() reflect.StructTag { + return s.destStack.top().tag +} + +// Flags returns the flags with which the current conversion was started. +func (s *scope) Flags() FieldMatchingFlags { + return s.flags +} + +// Meta returns the meta object that was originally passed to Convert. +func (s *scope) Meta() *Meta { + return s.meta +} + +// describe prints the path to get to the current (source, dest) values. +func (s *scope) describe() (src, dest string) { + return s.srcStack.describe(), s.destStack.describe() +} + +// error makes an error that includes information about where we were in the objects +// we were asked to convert. +func (s *scope) errorf(message string, args ...interface{}) error { + srcPath, destPath := s.describe() + where := fmt.Sprintf("converting %v to %v: ", srcPath, destPath) + return fmt.Errorf(where+message, args...) +} + +// Verifies whether a conversion function has a correct signature. +func verifyConversionFunctionSignature(ft reflect.Type) error { + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 3 { + return fmt.Errorf("expected three 'in' params, got: %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got: %v", ft) + } + if ft.In(0).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft) + } + if ft.In(1).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 1, got: %v", ft) + } + scopeType := Scope(nil) + if e, a := reflect.TypeOf(&scopeType).Elem(), ft.In(2); e != a { + return fmt.Errorf("expected '%v' arg for 'in' param 2, got '%v' (%v)", e, a, ft) + } + var forErrorType error + // This convolution is necessary, otherwise TypeOf picks up on the fact + // that forErrorType is nil. + errorType := reflect.TypeOf(&forErrorType).Elem() + if ft.Out(0) != errorType { + return fmt.Errorf("expected error return, got: %v", ft) + } + return nil +} + +// RegisterConversionFunc registers a conversion func with the +// Converter. conversionFunc must take three parameters: a pointer to the input +// type, a pointer to the output type, and a conversion.Scope (which should be +// used if recursive conversion calls are desired). It must return an error. +// +// Example: +// c.RegisterConversionFunc( +// func(in *Pod, out *v1.Pod, s Scope) error { +// // conversion logic... +// return nil +// }) +func (c *Converter) RegisterConversionFunc(conversionFunc interface{}) error { + return c.conversionFuncs.Add(conversionFunc) +} + +// Similar to RegisterConversionFunc, but registers conversion function that were +// automatically generated. +func (c *Converter) RegisterGeneratedConversionFunc(conversionFunc interface{}) error { + return c.generatedConversionFuncs.Add(conversionFunc) +} + +// RegisterIgnoredConversion registers a "no-op" for conversion, where any requested +// conversion between from and to is ignored. +func (c *Converter) RegisterIgnoredConversion(from, to interface{}) error { + typeFrom := reflect.TypeOf(from) + typeTo := reflect.TypeOf(to) + if reflect.TypeOf(from).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'from' param 0, got: %v", typeFrom) + } + if typeTo.Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'to' param 1, got: %v", typeTo) + } + c.ignoredConversions[typePair{typeFrom.Elem(), typeTo.Elem()}] = struct{}{} + return nil +} + +// IsConversionIgnored returns true if the specified objects should be dropped during +// conversion. +func (c *Converter) IsConversionIgnored(inType, outType reflect.Type) bool { + _, found := c.ignoredConversions[typePair{inType, outType}] + return found +} + +func (c *Converter) HasConversionFunc(inType, outType reflect.Type) bool { + _, found := c.conversionFuncs.fns[typePair{inType, outType}] + return found +} + +func (c *Converter) ConversionFuncValue(inType, outType reflect.Type) (reflect.Value, bool) { + value, found := c.conversionFuncs.fns[typePair{inType, outType}] + return value, found +} + +// SetStructFieldCopy registers a correspondence. Whenever a struct field is encountered +// which has a type and name matching srcFieldType and srcFieldName, it wil be copied +// into the field in the destination struct matching destFieldType & Name, if such a +// field exists. +// May be called multiple times, even for the same source field & type--all applicable +// copies will be performed. +func (c *Converter) SetStructFieldCopy(srcFieldType interface{}, srcFieldName string, destFieldType interface{}, destFieldName string) error { + st := reflect.TypeOf(srcFieldType) + dt := reflect.TypeOf(destFieldType) + srcKey := typeNamePair{st, srcFieldName} + destKey := typeNamePair{dt, destFieldName} + c.structFieldDests[srcKey] = append(c.structFieldDests[srcKey], destKey) + c.structFieldSources[destKey] = append(c.structFieldSources[destKey], srcKey) + return nil +} + +// RegisterDefaultingFunc registers a value-defaulting func with the Converter. +// defaultingFunc must take one parameters: a pointer to the input type. +// +// Example: +// c.RegisteDefaultingFunc( +// func(in *v1.Pod) { +// // defaulting logic... +// }) +func (c *Converter) RegisterDefaultingFunc(defaultingFunc interface{}) error { + fv := reflect.ValueOf(defaultingFunc) + ft := fv.Type() + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 1 { + return fmt.Errorf("expected one 'in' param, got: %v", ft) + } + if ft.NumOut() != 0 { + return fmt.Errorf("expected zero 'out' params, got: %v", ft) + } + if ft.In(0).Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft) + } + inType := ft.In(0).Elem() + c.defaultingFuncs[inType] = fv + c.defaultingInterfaces[inType] = defaultingFunc + return nil +} + +// RegisterInputDefaults registers a field name mapping function, used when converting +// from maps to structs. Inputs to the conversion methods are checked for this type and a mapping +// applied automatically if the input matches in. A set of default flags for the input conversion +// may also be provided, which will be used when no explicit flags are requested. +func (c *Converter) RegisterInputDefaults(in interface{}, fn FieldMappingFunc, defaultFlags FieldMatchingFlags) error { + fv := reflect.ValueOf(in) + ft := fv.Type() + if ft.Kind() != reflect.Ptr { + return fmt.Errorf("expected pointer 'in' argument, got: %v", ft) + } + c.inputFieldMappingFuncs[ft] = fn + c.inputDefaultFlags[ft] = defaultFlags + return nil +} + +// FieldMatchingFlags contains a list of ways in which struct fields could be +// copied. These constants may be | combined. +type FieldMatchingFlags int + +const ( + // Loop through destination fields, search for matching source + // field to copy it from. Source fields with no corresponding + // destination field will be ignored. If SourceToDest is + // specified, this flag is ignored. If neither is specified, + // or no flags are passed, this flag is the default. + DestFromSource FieldMatchingFlags = 0 + // Loop through source fields, search for matching dest field + // to copy it into. Destination fields with no corresponding + // source field will be ignored. + SourceToDest FieldMatchingFlags = 1 << iota + // Don't treat it as an error if the corresponding source or + // dest field can't be found. + IgnoreMissingFields + // Don't require type names to match. + AllowDifferentFieldTypeNames +) + +// IsSet returns true if the given flag or combination of flags is set. +func (f FieldMatchingFlags) IsSet(flag FieldMatchingFlags) bool { + if flag == DestFromSource { + // The bit logic doesn't work on the default value. + return f&SourceToDest != SourceToDest + } + return f&flag == flag +} + +// Convert will translate src to dest if it knows how. Both must be pointers. +// If no conversion func is registered and the default copying mechanism +// doesn't work on this type pair, an error will be returned. +// Read the comments on the various FieldMatchingFlags constants to understand +// what the 'flags' parameter does. +// 'meta' is given to allow you to pass information to conversion functions, +// it is not used by Convert() other than storing it in the scope. +// Not safe for objects with cyclic references! +func (c *Converter) Convert(src, dest interface{}, flags FieldMatchingFlags, meta *Meta) error { + if len(c.genericConversions) > 0 { + // TODO: avoid scope allocation + s := &scope{converter: c, flags: flags, meta: meta} + for _, fn := range c.genericConversions { + if ok, err := fn(src, dest, s); ok { + return err + } + } + } + return c.doConversion(src, dest, flags, meta, c.convert) +} + +// DefaultConvert will translate src to dest if it knows how. Both must be pointers. +// No conversion func is used. If the default copying mechanism +// doesn't work on this type pair, an error will be returned. +// Read the comments on the various FieldMatchingFlags constants to understand +// what the 'flags' parameter does. +// 'meta' is given to allow you to pass information to conversion functions, +// it is not used by DefaultConvert() other than storing it in the scope. +// Not safe for objects with cyclic references! +func (c *Converter) DefaultConvert(src, dest interface{}, flags FieldMatchingFlags, meta *Meta) error { + return c.doConversion(src, dest, flags, meta, c.defaultConvert) +} + +type conversionFunc func(sv, dv reflect.Value, scope *scope) error + +func (c *Converter) doConversion(src, dest interface{}, flags FieldMatchingFlags, meta *Meta, f conversionFunc) error { + dv, err := EnforcePtr(dest) + if err != nil { + return err + } + if !dv.CanAddr() && !dv.CanSet() { + return fmt.Errorf("can't write to dest") + } + sv, err := EnforcePtr(src) + if err != nil { + return err + } + s := &scope{ + converter: c, + flags: flags, + meta: meta, + } + // Leave something on the stack, so that calls to struct tag getters never fail. + s.srcStack.push(scopeStackElem{}) + s.destStack.push(scopeStackElem{}) + return f(sv, dv, s) +} + +// callCustom calls 'custom' with sv & dv. custom must be a conversion function. +func (c *Converter) callCustom(sv, dv, custom reflect.Value, scope *scope) error { + if !sv.CanAddr() { + sv2 := reflect.New(sv.Type()) + sv2.Elem().Set(sv) + sv = sv2 + } else { + sv = sv.Addr() + } + if !dv.CanAddr() { + if !dv.CanSet() { + return scope.errorf("can't addr or set dest.") + } + dvOrig := dv + dv := reflect.New(dvOrig.Type()) + defer func() { dvOrig.Set(dv) }() + } else { + dv = dv.Addr() + } + args := []reflect.Value{sv, dv, reflect.ValueOf(scope)} + ret := custom.Call(args)[0].Interface() + // This convolution is necessary because nil interfaces won't convert + // to errors. + if ret == nil { + return nil + } + return ret.(error) +} + +// convert recursively copies sv into dv, calling an appropriate conversion function if +// one is registered. +func (c *Converter) convert(sv, dv reflect.Value, scope *scope) error { + dt, st := dv.Type(), sv.Type() + // Apply default values. + if fv, ok := c.defaultingFuncs[st]; ok { + if c.Debug != nil { + c.Debug.Logf("Applying defaults for '%v'", st) + } + args := []reflect.Value{sv.Addr()} + fv.Call(args) + } + + pair := typePair{st, dt} + + // ignore conversions of this type + if _, ok := c.ignoredConversions[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Ignoring conversion of '%v' to '%v'", st, dt) + } + return nil + } + + // Convert sv to dv. + if fv, ok := c.conversionFuncs.fns[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Calling custom conversion of '%v' to '%v'", st, dt) + } + return c.callCustom(sv, dv, fv, scope) + } + if fv, ok := c.generatedConversionFuncs.fns[pair]; ok { + if c.Debug != nil { + c.Debug.Logf("Calling generated conversion of '%v' to '%v'", st, dt) + } + return c.callCustom(sv, dv, fv, scope) + } + + return c.defaultConvert(sv, dv, scope) +} + +// defaultConvert recursively copies sv into dv. no conversion function is called +// for the current stack frame (but conversion functions may be called for nested objects) +func (c *Converter) defaultConvert(sv, dv reflect.Value, scope *scope) error { + dt, st := dv.Type(), sv.Type() + + if !dv.CanSet() { + return scope.errorf("Cannot set dest. (Tried to deep copy something with unexported fields?)") + } + + if !scope.flags.IsSet(AllowDifferentFieldTypeNames) && c.nameFunc(dt) != c.nameFunc(st) { + return scope.errorf( + "type names don't match (%v, %v), and no conversion 'func (%v, %v) error' registered.", + c.nameFunc(st), c.nameFunc(dt), st, dt) + } + + switch st.Kind() { + case reflect.Map, reflect.Ptr, reflect.Slice, reflect.Interface, reflect.Struct: + // Don't copy these via assignment/conversion! + default: + // This should handle all simple types. + if st.AssignableTo(dt) { + dv.Set(sv) + return nil + } + if st.ConvertibleTo(dt) { + dv.Set(sv.Convert(dt)) + return nil + } + } + + if c.Debug != nil { + c.Debug.Logf("Trying to convert '%v' to '%v'", st, dt) + } + + scope.srcStack.push(scopeStackElem{value: sv}) + scope.destStack.push(scopeStackElem{value: dv}) + defer scope.srcStack.pop() + defer scope.destStack.pop() + + switch dv.Kind() { + case reflect.Struct: + return c.convertKV(toKVValue(sv), toKVValue(dv), scope) + case reflect.Slice: + if sv.IsNil() { + // Don't make a zero-length slice. + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeSlice(dt, sv.Len(), sv.Cap())) + for i := 0; i < sv.Len(); i++ { + scope.setIndices(i, i) + if err := c.convert(sv.Index(i), dv.Index(i), scope); err != nil { + return err + } + } + case reflect.Ptr: + if sv.IsNil() { + // Don't copy a nil ptr! + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.New(dt.Elem())) + switch st.Kind() { + case reflect.Ptr, reflect.Interface: + return c.convert(sv.Elem(), dv.Elem(), scope) + default: + return c.convert(sv, dv.Elem(), scope) + } + case reflect.Map: + if sv.IsNil() { + // Don't copy a nil ptr! + dv.Set(reflect.Zero(dt)) + return nil + } + dv.Set(reflect.MakeMap(dt)) + for _, sk := range sv.MapKeys() { + dk := reflect.New(dt.Key()).Elem() + if err := c.convert(sk, dk, scope); err != nil { + return err + } + dkv := reflect.New(dt.Elem()).Elem() + scope.setKeys(sk.Interface(), dk.Interface()) + // TODO: sv.MapIndex(sk) may return a value with CanAddr() == false, + // because a map[string]struct{} does not allow a pointer reference. + // Calling a custom conversion function defined for the map value + // will panic. Example is PodInfo map[string]ContainerStatus. + if err := c.convert(sv.MapIndex(sk), dkv, scope); err != nil { + return err + } + dv.SetMapIndex(dk, dkv) + } + case reflect.Interface: + if sv.IsNil() { + // Don't copy a nil interface! + dv.Set(reflect.Zero(dt)) + return nil + } + tmpdv := reflect.New(sv.Elem().Type()).Elem() + if err := c.convert(sv.Elem(), tmpdv, scope); err != nil { + return err + } + dv.Set(reflect.ValueOf(tmpdv.Interface())) + return nil + default: + return scope.errorf("couldn't copy '%v' into '%v'; didn't understand types", st, dt) + } + return nil +} + +var stringType = reflect.TypeOf("") + +func toKVValue(v reflect.Value) kvValue { + switch v.Kind() { + case reflect.Struct: + return structAdaptor(v) + case reflect.Map: + if v.Type().Key().AssignableTo(stringType) { + return stringMapAdaptor(v) + } + } + + return nil +} + +// kvValue lets us write the same conversion logic to work with both maps +// and structs. Only maps with string keys make sense for this. +type kvValue interface { + // returns all keys, as a []string. + keys() []string + // Will just return "" for maps. + tagOf(key string) reflect.StructTag + // Will return the zero Value if the key doesn't exist. + value(key string) reflect.Value + // Maps require explicit setting-- will do nothing for structs. + // Returns false on failure. + confirmSet(key string, v reflect.Value) bool +} + +type stringMapAdaptor reflect.Value + +func (a stringMapAdaptor) len() int { + return reflect.Value(a).Len() +} + +func (a stringMapAdaptor) keys() []string { + v := reflect.Value(a) + keys := make([]string, v.Len()) + for i, v := range v.MapKeys() { + if v.IsNil() { + continue + } + switch t := v.Interface().(type) { + case string: + keys[i] = t + } + } + return keys +} + +func (a stringMapAdaptor) tagOf(key string) reflect.StructTag { + return "" +} + +func (a stringMapAdaptor) value(key string) reflect.Value { + return reflect.Value(a).MapIndex(reflect.ValueOf(key)) +} + +func (a stringMapAdaptor) confirmSet(key string, v reflect.Value) bool { + return true +} + +type structAdaptor reflect.Value + +func (a structAdaptor) len() int { + v := reflect.Value(a) + return v.Type().NumField() +} + +func (a structAdaptor) keys() []string { + v := reflect.Value(a) + t := v.Type() + keys := make([]string, t.NumField()) + for i := range keys { + keys[i] = t.Field(i).Name + } + return keys +} + +func (a structAdaptor) tagOf(key string) reflect.StructTag { + v := reflect.Value(a) + field, ok := v.Type().FieldByName(key) + if ok { + return field.Tag + } + return "" +} + +func (a structAdaptor) value(key string) reflect.Value { + v := reflect.Value(a) + return v.FieldByName(key) +} + +func (a structAdaptor) confirmSet(key string, v reflect.Value) bool { + return true +} + +// convertKV can convert things that consist of key/value pairs, like structs +// and some maps. +func (c *Converter) convertKV(skv, dkv kvValue, scope *scope) error { + if skv == nil || dkv == nil { + // TODO: add keys to stack to support really understandable error messages. + return fmt.Errorf("Unable to convert %#v to %#v", skv, dkv) + } + + lister := dkv + if scope.flags.IsSet(SourceToDest) { + lister = skv + } + + var mapping FieldMappingFunc + if scope.meta != nil && scope.meta.KeyNameMapping != nil { + mapping = scope.meta.KeyNameMapping + } + + for _, key := range lister.keys() { + if found, err := c.checkField(key, skv, dkv, scope); found { + if err != nil { + return err + } + continue + } + stag := skv.tagOf(key) + dtag := dkv.tagOf(key) + skey := key + dkey := key + if mapping != nil { + skey, dkey = scope.meta.KeyNameMapping(key, stag, dtag) + } + + df := dkv.value(dkey) + sf := skv.value(skey) + if !df.IsValid() || !sf.IsValid() { + switch { + case scope.flags.IsSet(IgnoreMissingFields): + // No error. + case scope.flags.IsSet(SourceToDest): + return scope.errorf("%v not present in dest", dkey) + default: + return scope.errorf("%v not present in src", skey) + } + continue + } + scope.srcStack.top().key = skey + scope.srcStack.top().tag = stag + scope.destStack.top().key = dkey + scope.destStack.top().tag = dtag + if err := c.convert(sf, df, scope); err != nil { + return err + } + } + return nil +} + +// checkField returns true if the field name matches any of the struct +// field copying rules. The error should be ignored if it returns false. +func (c *Converter) checkField(fieldName string, skv, dkv kvValue, scope *scope) (bool, error) { + replacementMade := false + if scope.flags.IsSet(DestFromSource) { + df := dkv.value(fieldName) + if !df.IsValid() { + return false, nil + } + destKey := typeNamePair{df.Type(), fieldName} + // Check each of the potential source (type, name) pairs to see if they're + // present in sv. + for _, potentialSourceKey := range c.structFieldSources[destKey] { + sf := skv.value(potentialSourceKey.fieldName) + if !sf.IsValid() { + continue + } + if sf.Type() == potentialSourceKey.fieldType { + // Both the source's name and type matched, so copy. + scope.srcStack.top().key = potentialSourceKey.fieldName + scope.destStack.top().key = fieldName + if err := c.convert(sf, df, scope); err != nil { + return true, err + } + dkv.confirmSet(fieldName, df) + replacementMade = true + } + } + return replacementMade, nil + } + + sf := skv.value(fieldName) + if !sf.IsValid() { + return false, nil + } + srcKey := typeNamePair{sf.Type(), fieldName} + // Check each of the potential dest (type, name) pairs to see if they're + // present in dv. + for _, potentialDestKey := range c.structFieldDests[srcKey] { + df := dkv.value(potentialDestKey.fieldName) + if !df.IsValid() { + continue + } + if df.Type() == potentialDestKey.fieldType { + // Both the dest's name and type matched, so copy. + scope.srcStack.top().key = fieldName + scope.destStack.top().key = potentialDestKey.fieldName + if err := c.convert(sf, df, scope); err != nil { + return true, err + } + dkv.confirmSet(potentialDestKey.fieldName, df) + replacementMade = true + } + } + return replacementMade, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/deep_equal.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/deep_equal.go new file mode 100644 index 0000000000..9edb3a82ed --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/deep_equal.go @@ -0,0 +1,36 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect" +) + +// The code for this type must be located in third_party, since it forks from +// go std lib. But for convenience, we expose the type here, too. +type Equalities struct { + reflect.Equalities +} + +// For convenience, panics on errors +func EqualitiesOrDie(funcs ...interface{}) Equalities { + e := Equalities{reflect.Equalities{}} + if err := e.AddFuncs(funcs...); err != nil { + panic(err) + } + return e +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/doc.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/doc.go new file mode 100644 index 0000000000..0c46ef2d16 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package conversion provides go object versioning. +// +// Specifically, conversion provides a way for you to define multiple versions +// of the same object. You may write functions which implement conversion logic, +// but for the fields which did not change, copying is automated. This makes it +// easy to modify the structures you use in memory without affecting the format +// you store on disk or respond to in your external API calls. +package conversion diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/helper.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/helper.go new file mode 100644 index 0000000000..4ebc1ebc51 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/helper.go @@ -0,0 +1,39 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package conversion + +import ( + "fmt" + "reflect" +) + +// EnforcePtr ensures that obj is a pointer of some sort. Returns a reflect.Value +// of the dereferenced pointer, ensuring that it is settable/addressable. +// Returns an error if this is not possible. +func EnforcePtr(obj interface{}) (reflect.Value, error) { + v := reflect.ValueOf(obj) + if v.Kind() != reflect.Ptr { + if v.Kind() == reflect.Invalid { + return reflect.Value{}, fmt.Errorf("expected pointer, but got invalid kind") + } + return reflect.Value{}, fmt.Errorf("expected pointer, but got %v type", v.Type()) + } + if v.IsNil() { + return reflect.Value{}, fmt.Errorf("expected pointer, but got nil") + } + return v.Elem(), nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/convert.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/convert.go new file mode 100644 index 0000000000..30f717b2ce --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/convert.go @@ -0,0 +1,188 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package queryparams + +import ( + "fmt" + "net/url" + "reflect" + "strings" +) + +// Marshaler converts an object to a query parameter string representation +type Marshaler interface { + MarshalQueryParameter() (string, error) +} + +// Unmarshaler converts a string representation to an object +type Unmarshaler interface { + UnmarshalQueryParameter(string) error +} + +func jsonTag(field reflect.StructField) (string, bool) { + structTag := field.Tag.Get("json") + if len(structTag) == 0 { + return "", false + } + parts := strings.Split(structTag, ",") + tag := parts[0] + if tag == "-" { + tag = "" + } + omitempty := false + parts = parts[1:] + for _, part := range parts { + if part == "omitempty" { + omitempty = true + break + } + } + return tag, omitempty +} + +func formatValue(value interface{}) string { + return fmt.Sprintf("%v", value) +} + +func isPointerKind(kind reflect.Kind) bool { + return kind == reflect.Ptr +} + +func isStructKind(kind reflect.Kind) bool { + return kind == reflect.Struct +} + +func isValueKind(kind reflect.Kind) bool { + switch kind { + case reflect.String, reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, + reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, + reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, + reflect.Float64, reflect.Complex64, reflect.Complex128: + return true + default: + return false + } +} + +func zeroValue(value reflect.Value) bool { + return reflect.DeepEqual(reflect.Zero(value.Type()).Interface(), value.Interface()) +} + +func customMarshalValue(value reflect.Value) (reflect.Value, bool) { + // Return unless we implement a custom query marshaler + if !value.CanInterface() { + return reflect.Value{}, false + } + + marshaler, ok := value.Interface().(Marshaler) + if !ok { + return reflect.Value{}, false + } + + // Don't invoke functions on nil pointers + // If the type implements MarshalQueryParameter, AND the tag is not omitempty, AND the value is a nil pointer, "" seems like a reasonable response + if isPointerKind(value.Kind()) && zeroValue(value) { + return reflect.ValueOf(""), true + } + + // Get the custom marshalled value + v, err := marshaler.MarshalQueryParameter() + if err != nil { + return reflect.Value{}, false + } + return reflect.ValueOf(v), true +} + +func addParam(values url.Values, tag string, omitempty bool, value reflect.Value) { + if omitempty && zeroValue(value) { + return + } + val := "" + iValue := fmt.Sprintf("%v", value.Interface()) + + if iValue != "<nil>" { + val = iValue + } + values.Add(tag, val) +} + +func addListOfParams(values url.Values, tag string, omitempty bool, list reflect.Value) { + for i := 0; i < list.Len(); i++ { + addParam(values, tag, omitempty, list.Index(i)) + } +} + +// Convert takes an object and converts it to a url.Values object using JSON tags as +// parameter names. Only top-level simple values, arrays, and slices are serialized. +// Embedded structs, maps, etc. will not be serialized. +func Convert(obj interface{}) (url.Values, error) { + result := url.Values{} + if obj == nil { + return result, nil + } + var sv reflect.Value + switch reflect.TypeOf(obj).Kind() { + case reflect.Ptr, reflect.Interface: + sv = reflect.ValueOf(obj).Elem() + default: + return nil, fmt.Errorf("expecting a pointer or interface") + } + st := sv.Type() + if !isStructKind(st.Kind()) { + return nil, fmt.Errorf("expecting a pointer to a struct") + } + + // Check all object fields + convertStruct(result, st, sv) + + return result, nil +} + +func convertStruct(result url.Values, st reflect.Type, sv reflect.Value) { + for i := 0; i < st.NumField(); i++ { + field := sv.Field(i) + tag, omitempty := jsonTag(st.Field(i)) + if len(tag) == 0 { + continue + } + ft := field.Type() + + kind := ft.Kind() + if isPointerKind(kind) { + ft = ft.Elem() + kind = ft.Kind() + if !field.IsNil() { + field = reflect.Indirect(field) + } + } + + switch { + case isValueKind(kind): + addParam(result, tag, omitempty, field) + case kind == reflect.Array || kind == reflect.Slice: + if isValueKind(ft.Elem().Kind()) { + addListOfParams(result, tag, omitempty, field) + } + case isStructKind(kind) && !(zeroValue(field) && omitempty): + if marshalValue, ok := customMarshalValue(field); ok { + addParam(result, tag, omitempty, marshalValue) + } else { + convertStruct(result, ft, field) + } + } + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/doc.go b/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/doc.go new file mode 100644 index 0000000000..4c1002a4c1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/conversion/queryparams/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package queryparams provides conversion from versioned +// runtime objects to URL query values +package queryparams diff --git a/vendor/k8s.io/client-go/1.5/pkg/fields/doc.go b/vendor/k8s.io/client-go/1.5/pkg/fields/doc.go new file mode 100644 index 0000000000..49059e2635 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/fields/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package fields implements a simple field system, parsing and matching +// selectors with sets of fields. +package fields diff --git a/vendor/k8s.io/client-go/1.5/pkg/fields/fields.go b/vendor/k8s.io/client-go/1.5/pkg/fields/fields.go new file mode 100644 index 0000000000..623b27e957 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/fields/fields.go @@ -0,0 +1,62 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "sort" + "strings" +) + +// Fields allows you to present fields independently from their storage. +type Fields interface { + // Has returns whether the provided field exists. + Has(field string) (exists bool) + + // Get returns the value for the provided field. + Get(field string) (value string) +} + +// Set is a map of field:value. It implements Fields. +type Set map[string]string + +// String returns all fields listed as a human readable string. +// Conveniently, exactly the format that ParseSelector takes. +func (ls Set) String() string { + selector := make([]string, 0, len(ls)) + for key, value := range ls { + selector = append(selector, key+"="+value) + } + // Sort for determinism. + sort.StringSlice(selector).Sort() + return strings.Join(selector, ",") +} + +// Has returns whether the provided field exists in the map. +func (ls Set) Has(field string) bool { + _, exists := ls[field] + return exists +} + +// Get returns the value in the map for the provided field. +func (ls Set) Get(field string) string { + return ls[field] +} + +// AsSelector converts fields into a selectors. +func (ls Set) AsSelector() Selector { + return SelectorFromSet(ls) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/fields/requirements.go b/vendor/k8s.io/client-go/1.5/pkg/fields/requirements.go new file mode 100644 index 0000000000..1ab540aa63 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/fields/requirements.go @@ -0,0 +1,30 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import "k8s.io/client-go/1.5/pkg/selection" + +// Requirements is AND of all requirements. +type Requirements []Requirement + +// Requirement contains a field, a value, and an operator that relates the field and value. +// This is currently for reading internal selection information of field selector. +type Requirement struct { + Operator selection.Operator + Field string + Value string +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/fields/selector.go b/vendor/k8s.io/client-go/1.5/pkg/fields/selector.go new file mode 100644 index 0000000000..cd61a0130b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/fields/selector.go @@ -0,0 +1,278 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fields + +import ( + "fmt" + "sort" + "strings" + + "k8s.io/client-go/1.5/pkg/selection" +) + +// Selector represents a field selector. +type Selector interface { + // Matches returns true if this selector matches the given set of fields. + Matches(Fields) bool + + // Empty returns true if this selector does not restrict the selection space. + Empty() bool + + // RequiresExactMatch allows a caller to introspect whether a given selector + // requires a single specific field to be set, and if so returns the value it + // requires. + RequiresExactMatch(field string) (value string, found bool) + + // Transform returns a new copy of the selector after TransformFunc has been + // applied to the entire selector, or an error if fn returns an error. + Transform(fn TransformFunc) (Selector, error) + + // Requirements converts this interface to Requirements to expose + // more detailed selection information. + Requirements() Requirements + + // String returns a human readable string that represents this selector. + String() string +} + +// Everything returns a selector that matches all fields. +func Everything() Selector { + return andTerm{} +} + +type hasTerm struct { + field, value string +} + +func (t *hasTerm) Matches(ls Fields) bool { + return ls.Get(t.field) == t.value +} + +func (t *hasTerm) Empty() bool { + return false +} + +func (t *hasTerm) RequiresExactMatch(field string) (value string, found bool) { + if t.field == field { + return t.value, true + } + return "", false +} + +func (t *hasTerm) Transform(fn TransformFunc) (Selector, error) { + field, value, err := fn(t.field, t.value) + if err != nil { + return nil, err + } + return &hasTerm{field, value}, nil +} + +func (t *hasTerm) Requirements() Requirements { + return []Requirement{{ + Field: t.field, + Operator: selection.Equals, + Value: t.value, + }} +} + +func (t *hasTerm) String() string { + return fmt.Sprintf("%v=%v", t.field, t.value) +} + +type notHasTerm struct { + field, value string +} + +func (t *notHasTerm) Matches(ls Fields) bool { + return ls.Get(t.field) != t.value +} + +func (t *notHasTerm) Empty() bool { + return false +} + +func (t *notHasTerm) RequiresExactMatch(field string) (value string, found bool) { + return "", false +} + +func (t *notHasTerm) Transform(fn TransformFunc) (Selector, error) { + field, value, err := fn(t.field, t.value) + if err != nil { + return nil, err + } + return ¬HasTerm{field, value}, nil +} + +func (t *notHasTerm) Requirements() Requirements { + return []Requirement{{ + Field: t.field, + Operator: selection.NotEquals, + Value: t.value, + }} +} + +func (t *notHasTerm) String() string { + return fmt.Sprintf("%v!=%v", t.field, t.value) +} + +type andTerm []Selector + +func (t andTerm) Matches(ls Fields) bool { + for _, q := range t { + if !q.Matches(ls) { + return false + } + } + return true +} + +func (t andTerm) Empty() bool { + if t == nil { + return true + } + if len([]Selector(t)) == 0 { + return true + } + for i := range t { + if !t[i].Empty() { + return false + } + } + return true +} + +func (t andTerm) RequiresExactMatch(field string) (string, bool) { + if t == nil || len([]Selector(t)) == 0 { + return "", false + } + for i := range t { + if value, found := t[i].RequiresExactMatch(field); found { + return value, found + } + } + return "", false +} + +func (t andTerm) Transform(fn TransformFunc) (Selector, error) { + next := make([]Selector, len([]Selector(t))) + for i, s := range []Selector(t) { + n, err := s.Transform(fn) + if err != nil { + return nil, err + } + next[i] = n + } + return andTerm(next), nil +} + +func (t andTerm) Requirements() Requirements { + reqs := make([]Requirement, 0, len(t)) + for _, s := range []Selector(t) { + rs := s.Requirements() + reqs = append(reqs, rs...) + } + return reqs +} + +func (t andTerm) String() string { + var terms []string + for _, q := range t { + terms = append(terms, q.String()) + } + return strings.Join(terms, ",") +} + +// SelectorFromSet returns a Selector which will match exactly the given Set. A +// nil Set is considered equivalent to Everything(). +func SelectorFromSet(ls Set) Selector { + if ls == nil { + return Everything() + } + items := make([]Selector, 0, len(ls)) + for field, value := range ls { + items = append(items, &hasTerm{field: field, value: value}) + } + if len(items) == 1 { + return items[0] + } + return andTerm(items) +} + +// ParseSelectorOrDie takes a string representing a selector and returns an +// object suitable for matching, or panic when an error occur. +func ParseSelectorOrDie(s string) Selector { + selector, err := ParseSelector(s) + if err != nil { + panic(err) + } + return selector +} + +// ParseSelector takes a string representing a selector and returns an +// object suitable for matching, or an error. +func ParseSelector(selector string) (Selector, error) { + return parseSelector(selector, + func(lhs, rhs string) (newLhs, newRhs string, err error) { + return lhs, rhs, nil + }) +} + +// Parses the selector and runs them through the given TransformFunc. +func ParseAndTransformSelector(selector string, fn TransformFunc) (Selector, error) { + return parseSelector(selector, fn) +} + +// Function to transform selectors. +type TransformFunc func(field, value string) (newField, newValue string, err error) + +func try(selectorPiece, op string) (lhs, rhs string, ok bool) { + pieces := strings.Split(selectorPiece, op) + if len(pieces) == 2 { + return pieces[0], pieces[1], true + } + return "", "", false +} + +func parseSelector(selector string, fn TransformFunc) (Selector, error) { + parts := strings.Split(selector, ",") + sort.StringSlice(parts).Sort() + var items []Selector + for _, part := range parts { + if part == "" { + continue + } + if lhs, rhs, ok := try(part, "!="); ok { + items = append(items, ¬HasTerm{field: lhs, value: rhs}) + } else if lhs, rhs, ok := try(part, "=="); ok { + items = append(items, &hasTerm{field: lhs, value: rhs}) + } else if lhs, rhs, ok := try(part, "="); ok { + items = append(items, &hasTerm{field: lhs, value: rhs}) + } else { + return nil, fmt.Errorf("invalid selector: '%s'; can't understand '%s'", selector, part) + } + } + if len(items) == 1 { + return items[0].Transform(fn) + } + return andTerm(items).Transform(fn) +} + +// OneTermEqualSelector returns an object that matches objects where one field/field equals one value. +// Cannot return an error. +func OneTermEqualSelector(k, v string) Selector { + return &hasTerm{field: k, value: v} +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/common.go b/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/common.go new file mode 100644 index 0000000000..48c4f9c019 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/common.go @@ -0,0 +1,105 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package common + +import "github.com/go-openapi/spec" + +// OpenAPIDefinition describes single type. Normally these definitions are auto-generated using gen-openapi. +type OpenAPIDefinition struct { + Schema spec.Schema + Dependencies []string +} + +// OpenAPIDefinitions is collection of all definitions. +type OpenAPIDefinitions map[string]OpenAPIDefinition + +// OpenAPIDefinitionGetter gets openAPI definitions for a given type. If a type implements this interface, +// the definition returned by it will be used, otherwise the auto-generated definitions will be used. See +// GetOpenAPITypeFormat for more information about trade-offs of using this interface or GetOpenAPITypeFormat method when +// possible. +type OpenAPIDefinitionGetter interface { + OpenAPIDefinition() *OpenAPIDefinition +} + +// This function is a reference for converting go (or any custom type) to a simple open API type,format pair. There are +// two ways to customize spec for a type. If you add it here, a type will be converted to a simple type and the type +// comment (the comment that is added before type definition) will be lost. The spec will still have the property +// comment. The second way is to implement OpenAPIDefinitionGetter interface. That function can customize the spec (so +// the spec does not need to be simple type,format) or can even return a simple type,format (e.g. IntOrString). For simple +// type formats, the benefit of adding OpenAPIDefinitionGetter interface is to keep both type and property documentation. +// Example: +// type Sample struct { +// ... +// // port of the server +// port IntOrString +// ... +// } +// // IntOrString documentation... +// type IntOrString { ... } +// +// Adding IntOrString to this function: +// "port" : { +// format: "string", +// type: "int-or-string", +// Description: "port of the server" +// } +// +// Implement OpenAPIDefinitionGetter for IntOrString: +// +// "port" : { +// $Ref: "#/definitions/IntOrString" +// Description: "port of the server" +// } +// ... +// definitions: +// { +// "IntOrString": { +// format: "string", +// type: "int-or-string", +// Description: "IntOrString documentation..." // new +// } +// } +// +func GetOpenAPITypeFormat(typeName string) (string, string) { + schemaTypeFormatMap := map[string][]string{ + "uint": {"integer", "int32"}, + "uint8": {"integer", "byte"}, + "uint16": {"integer", "int32"}, + "uint32": {"integer", "int64"}, + "uint64": {"integer", "int64"}, + "int": {"integer", "int32"}, + "int8": {"integer", "byte"}, + "int16": {"integer", "int32"}, + "int32": {"integer", "int32"}, + "int64": {"integer", "int64"}, + "byte": {"integer", "byte"}, + "float64": {"number", "double"}, + "float32": {"number", "float"}, + "bool": {"boolean", ""}, + "time.Time": {"string", "date-time"}, + "string": {"string", ""}, + "integer": {"integer", ""}, + "number": {"number", ""}, + "boolean": {"boolean", ""}, + "[]byte": {"string", "byte"}, // base64 encoded characters + } + mapped, ok := schemaTypeFormatMap[typeName] + if !ok { + return "", "" + } + return mapped[0], mapped[1] +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/doc.go b/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/doc.go new file mode 100644 index 0000000000..0308d58b4d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// package common holds shared codes and types between open API code generator and spec generator. +package common diff --git a/vendor/k8s.io/client-go/1.5/pkg/labels/doc.go b/vendor/k8s.io/client-go/1.5/pkg/labels/doc.go new file mode 100644 index 0000000000..35ba788094 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/labels/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package labels implements a simple label system, parsing and matching +// selectors with sets of labels. +package labels diff --git a/vendor/k8s.io/client-go/1.5/pkg/labels/labels.go b/vendor/k8s.io/client-go/1.5/pkg/labels/labels.go new file mode 100644 index 0000000000..822b137a9e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/labels/labels.go @@ -0,0 +1,80 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "sort" + "strings" +) + +// Labels allows you to present labels independently from their storage. +type Labels interface { + // Has returns whether the provided label exists. + Has(label string) (exists bool) + + // Get returns the value for the provided label. + Get(label string) (value string) +} + +// Set is a map of label:value. It implements Labels. +type Set map[string]string + +// String returns all labels listed as a human readable string. +// Conveniently, exactly the format that ParseSelector takes. +func (ls Set) String() string { + selector := make([]string, 0, len(ls)) + for key, value := range ls { + selector = append(selector, key+"="+value) + } + // Sort for determinism. + sort.StringSlice(selector).Sort() + return strings.Join(selector, ",") +} + +// Has returns whether the provided label exists in the map. +func (ls Set) Has(label string) bool { + _, exists := ls[label] + return exists +} + +// Get returns the value in the map for the provided label. +func (ls Set) Get(label string) string { + return ls[label] +} + +// AsSelector converts labels into a selectors. +func (ls Set) AsSelector() Selector { + return SelectorFromSet(ls) +} + +// AsSelectorPreValidated converts labels into a selector, but +// assumes that labels are already validated and thus don't +// preform any validation. +// According to our measurements this is significantly faster +// in codepaths that matter at high sccale. +func (ls Set) AsSelectorPreValidated() Selector { + return SelectorFromValidatedSet(ls) +} + +// FormatLables convert label map into plain string +func FormatLabels(labelMap map[string]string) string { + l := Set(labelMap).String() + if l == "" { + l = "<none>" + } + return l +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/labels/selector.go b/vendor/k8s.io/client-go/1.5/pkg/labels/selector.go new file mode 100644 index 0000000000..c6b8fd1d64 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/labels/selector.go @@ -0,0 +1,822 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "bytes" + "fmt" + "sort" + "strconv" + "strings" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/selection" + "k8s.io/client-go/1.5/pkg/util/sets" + "k8s.io/client-go/1.5/pkg/util/validation" +) + +// Requirements is AND of all requirements. +type Requirements []Requirement + +// Selector represents a label selector. +type Selector interface { + // Matches returns true if this selector matches the given set of labels. + Matches(Labels) bool + + // Empty returns true if this selector does not restrict the selection space. + Empty() bool + + // String returns a human readable string that represents this selector. + String() string + + // Add adds requirements to the Selector + Add(r ...Requirement) Selector + + // Requirements converts this interface into Requirements to expose + // more detailed selection information. + // If there are querying parameters, it will return converted requirements and selectable=true. + // If this selector doesn't want to select anything, it will return selectable=false. + Requirements() (requirements Requirements, selectable bool) +} + +// Everything returns a selector that matches all labels. +func Everything() Selector { + return internalSelector{} +} + +type nothingSelector struct{} + +func (n nothingSelector) Matches(_ Labels) bool { return false } +func (n nothingSelector) Empty() bool { return false } +func (n nothingSelector) String() string { return "<null>" } +func (n nothingSelector) Add(_ ...Requirement) Selector { return n } +func (n nothingSelector) Requirements() (Requirements, bool) { return nil, false } + +// Nothing returns a selector that matches no labels +func Nothing() Selector { + return nothingSelector{} +} + +func NewSelector() Selector { + return internalSelector(nil) +} + +type internalSelector []Requirement + +// Sort by key to obtain determisitic parser +type ByKey []Requirement + +func (a ByKey) Len() int { return len(a) } + +func (a ByKey) Swap(i, j int) { a[i], a[j] = a[j], a[i] } + +func (a ByKey) Less(i, j int) bool { return a[i].key < a[j].key } + +// Requirement contains values, a key, and an operator that relates the key and values. +// The zero value of Requirement is invalid. +// Requirement implements both set based match and exact match +// Requirement should be initialized via NewRequirement constructor for creating a valid Requirement. +type Requirement struct { + key string + operator selection.Operator + strValues sets.String +} + +// NewRequirement is the constructor for a Requirement. +// If any of these rules is violated, an error is returned: +// (1) The operator can only be In, NotIn, Equals, DoubleEquals, NotEquals, Exists, or DoesNotExist. +// (2) If the operator is In or NotIn, the values set must be non-empty. +// (3) If the operator is Equals, DoubleEquals, or NotEquals, the values set must contain one value. +// (4) If the operator is Exists or DoesNotExist, the value set must be empty. +// (5) If the operator is Gt or Lt, the values set must contain only one value, which will be interpreted as an integer. +// (6) The key is invalid due to its length, or sequence +// of characters. See validateLabelKey for more details. +// +// The empty string is a valid value in the input values set. +func NewRequirement(key string, op selection.Operator, vals sets.String) (*Requirement, error) { + if err := validateLabelKey(key); err != nil { + return nil, err + } + switch op { + case selection.In, selection.NotIn: + if len(vals) == 0 { + return nil, fmt.Errorf("for 'in', 'notin' operators, values set can't be empty") + } + case selection.Equals, selection.DoubleEquals, selection.NotEquals: + if len(vals) != 1 { + return nil, fmt.Errorf("exact-match compatibility requires one single value") + } + case selection.Exists, selection.DoesNotExist: + if len(vals) != 0 { + return nil, fmt.Errorf("values set must be empty for exists and does not exist") + } + case selection.GreaterThan, selection.LessThan: + if len(vals) != 1 { + return nil, fmt.Errorf("for 'Gt', 'Lt' operators, exactly one value is required") + } + for val := range vals { + if _, err := strconv.ParseInt(val, 10, 64); err != nil { + return nil, fmt.Errorf("for 'Gt', 'Lt' operators, the value must be an integer") + } + } + default: + return nil, fmt.Errorf("operator '%v' is not recognized", op) + } + + for v := range vals { + if err := validateLabelValue(v); err != nil { + return nil, err + } + } + return &Requirement{key: key, operator: op, strValues: vals}, nil +} + +// Matches returns true if the Requirement matches the input Labels. +// There is a match in the following cases: +// (1) The operator is Exists and Labels has the Requirement's key. +// (2) The operator is In, Labels has the Requirement's key and Labels' +// value for that key is in Requirement's value set. +// (3) The operator is NotIn, Labels has the Requirement's key and +// Labels' value for that key is not in Requirement's value set. +// (4) The operator is DoesNotExist or NotIn and Labels does not have the +// Requirement's key. +// (5) The operator is GreaterThanOperator or LessThanOperator, and Labels has +// the Requirement's key and the corresponding value satisfies mathematical inequality. +func (r *Requirement) Matches(ls Labels) bool { + switch r.operator { + case selection.In, selection.Equals, selection.DoubleEquals: + if !ls.Has(r.key) { + return false + } + return r.strValues.Has(ls.Get(r.key)) + case selection.NotIn, selection.NotEquals: + if !ls.Has(r.key) { + return true + } + return !r.strValues.Has(ls.Get(r.key)) + case selection.Exists: + return ls.Has(r.key) + case selection.DoesNotExist: + return !ls.Has(r.key) + case selection.GreaterThan, selection.LessThan: + if !ls.Has(r.key) { + return false + } + lsValue, err := strconv.ParseInt(ls.Get(r.key), 10, 64) + if err != nil { + glog.V(10).Infof("ParseInt failed for value %+v in label %+v, %+v", ls.Get(r.key), ls, err) + return false + } + + // There should be only one strValue in r.strValues, and can be converted to a integer. + if len(r.strValues) != 1 { + glog.V(10).Infof("Invalid values count %+v of requirement %#v, for 'Gt', 'Lt' operators, exactly one value is required", len(r.strValues), r) + return false + } + + var rValue int64 + for strValue := range r.strValues { + rValue, err = strconv.ParseInt(strValue, 10, 64) + if err != nil { + glog.V(10).Infof("ParseInt failed for value %+v in requirement %#v, for 'Gt', 'Lt' operators, the value must be an integer", strValue, r) + return false + } + } + return (r.operator == selection.GreaterThan && lsValue > rValue) || (r.operator == selection.LessThan && lsValue < rValue) + default: + return false + } +} + +func (r *Requirement) Key() string { + return r.key +} +func (r *Requirement) Operator() selection.Operator { + return r.operator +} +func (r *Requirement) Values() sets.String { + ret := sets.String{} + for k := range r.strValues { + ret.Insert(k) + } + return ret +} + +// Return true if the internalSelector doesn't restrict selection space +func (lsel internalSelector) Empty() bool { + if lsel == nil { + return true + } + return len(lsel) == 0 +} + +// String returns a human-readable string that represents this +// Requirement. If called on an invalid Requirement, an error is +// returned. See NewRequirement for creating a valid Requirement. +func (r *Requirement) String() string { + var buffer bytes.Buffer + if r.operator == selection.DoesNotExist { + buffer.WriteString("!") + } + buffer.WriteString(r.key) + + switch r.operator { + case selection.Equals: + buffer.WriteString("=") + case selection.DoubleEquals: + buffer.WriteString("==") + case selection.NotEquals: + buffer.WriteString("!=") + case selection.In: + buffer.WriteString(" in ") + case selection.NotIn: + buffer.WriteString(" notin ") + case selection.GreaterThan: + buffer.WriteString(">") + case selection.LessThan: + buffer.WriteString("<") + case selection.Exists, selection.DoesNotExist: + return buffer.String() + } + + switch r.operator { + case selection.In, selection.NotIn: + buffer.WriteString("(") + } + if len(r.strValues) == 1 { + buffer.WriteString(r.strValues.List()[0]) + } else { // only > 1 since == 0 prohibited by NewRequirement + buffer.WriteString(strings.Join(r.strValues.List(), ",")) + } + + switch r.operator { + case selection.In, selection.NotIn: + buffer.WriteString(")") + } + return buffer.String() +} + +// Add adds requirements to the selector. It copies the current selector returning a new one +func (lsel internalSelector) Add(reqs ...Requirement) Selector { + var sel internalSelector + for ix := range lsel { + sel = append(sel, lsel[ix]) + } + for _, r := range reqs { + sel = append(sel, r) + } + sort.Sort(ByKey(sel)) + return sel +} + +// Matches for a internalSelector returns true if all +// its Requirements match the input Labels. If any +// Requirement does not match, false is returned. +func (lsel internalSelector) Matches(l Labels) bool { + for ix := range lsel { + if matches := lsel[ix].Matches(l); !matches { + return false + } + } + return true +} + +func (lsel internalSelector) Requirements() (Requirements, bool) { return Requirements(lsel), true } + +// String returns a comma-separated string of all +// the internalSelector Requirements' human-readable strings. +func (lsel internalSelector) String() string { + var reqs []string + for ix := range lsel { + reqs = append(reqs, lsel[ix].String()) + } + return strings.Join(reqs, ",") +} + +// constants definition for lexer token +type Token int + +const ( + ErrorToken Token = iota + EndOfStringToken + ClosedParToken + CommaToken + DoesNotExistToken + DoubleEqualsToken + EqualsToken + GreaterThanToken + IdentifierToken // to represent keys and values + InToken + LessThanToken + NotEqualsToken + NotInToken + OpenParToken +) + +// string2token contains the mapping between lexer Token and token literal +// (except IdentifierToken, EndOfStringToken and ErrorToken since it makes no sense) +var string2token = map[string]Token{ + ")": ClosedParToken, + ",": CommaToken, + "!": DoesNotExistToken, + "==": DoubleEqualsToken, + "=": EqualsToken, + ">": GreaterThanToken, + "in": InToken, + "<": LessThanToken, + "!=": NotEqualsToken, + "notin": NotInToken, + "(": OpenParToken, +} + +// The item produced by the lexer. It contains the Token and the literal. +type ScannedItem struct { + tok Token + literal string +} + +// isWhitespace returns true if the rune is a space, tab, or newline. +func isWhitespace(ch byte) bool { + return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' +} + +// isSpecialSymbol detect if the character ch can be an operator +func isSpecialSymbol(ch byte) bool { + switch ch { + case '=', '!', '(', ')', ',', '>', '<': + return true + } + return false +} + +// Lexer represents the Lexer struct for label selector. +// It contains necessary informationt to tokenize the input string +type Lexer struct { + // s stores the string to be tokenized + s string + // pos is the position currently tokenized + pos int +} + +// read return the character currently lexed +// increment the position and check the buffer overflow +func (l *Lexer) read() (b byte) { + b = 0 + if l.pos < len(l.s) { + b = l.s[l.pos] + l.pos++ + } + return b +} + +// unread 'undoes' the last read character +func (l *Lexer) unread() { + l.pos-- +} + +// scanIdOrKeyword scans string to recognize literal token (for example 'in') or an identifier. +func (l *Lexer) scanIdOrKeyword() (tok Token, lit string) { + var buffer []byte +IdentifierLoop: + for { + switch ch := l.read(); { + case ch == 0: + break IdentifierLoop + case isSpecialSymbol(ch) || isWhitespace(ch): + l.unread() + break IdentifierLoop + default: + buffer = append(buffer, ch) + } + } + s := string(buffer) + if val, ok := string2token[s]; ok { // is a literal token? + return val, s + } + return IdentifierToken, s // otherwise is an identifier +} + +// scanSpecialSymbol scans string starting with special symbol. +// special symbol identify non literal operators. "!=", "==", "=" +func (l *Lexer) scanSpecialSymbol() (Token, string) { + lastScannedItem := ScannedItem{} + var buffer []byte +SpecialSymbolLoop: + for { + switch ch := l.read(); { + case ch == 0: + break SpecialSymbolLoop + case isSpecialSymbol(ch): + buffer = append(buffer, ch) + if token, ok := string2token[string(buffer)]; ok { + lastScannedItem = ScannedItem{tok: token, literal: string(buffer)} + } else if lastScannedItem.tok != 0 { + l.unread() + break SpecialSymbolLoop + } + default: + l.unread() + break SpecialSymbolLoop + } + } + if lastScannedItem.tok == 0 { + return ErrorToken, fmt.Sprintf("error expected: keyword found '%s'", buffer) + } + return lastScannedItem.tok, lastScannedItem.literal +} + +// skipWhiteSpaces consumes all blank characters +// returning the first non blank character +func (l *Lexer) skipWhiteSpaces(ch byte) byte { + for { + if !isWhitespace(ch) { + return ch + } + ch = l.read() + } +} + +// Lex returns a pair of Token and the literal +// literal is meaningfull only for IdentifierToken token +func (l *Lexer) Lex() (tok Token, lit string) { + switch ch := l.skipWhiteSpaces(l.read()); { + case ch == 0: + return EndOfStringToken, "" + case isSpecialSymbol(ch): + l.unread() + return l.scanSpecialSymbol() + default: + l.unread() + return l.scanIdOrKeyword() + } +} + +// Parser data structure contains the label selector parser data structure +type Parser struct { + l *Lexer + scannedItems []ScannedItem + position int +} + +// Parser context represents context during parsing: +// some literal for example 'in' and 'notin' can be +// recognized as operator for example 'x in (a)' but +// it can be recognized as value for example 'value in (in)' +type ParserContext int + +const ( + KeyAndOperator ParserContext = iota + Values +) + +// lookahead func returns the current token and string. No increment of current position +func (p *Parser) lookahead(context ParserContext) (Token, string) { + tok, lit := p.scannedItems[p.position].tok, p.scannedItems[p.position].literal + if context == Values { + switch tok { + case InToken, NotInToken: + tok = IdentifierToken + } + } + return tok, lit +} + +// consume returns current token and string. Increments the the position +func (p *Parser) consume(context ParserContext) (Token, string) { + p.position++ + tok, lit := p.scannedItems[p.position-1].tok, p.scannedItems[p.position-1].literal + if context == Values { + switch tok { + case InToken, NotInToken: + tok = IdentifierToken + } + } + return tok, lit +} + +// scan runs through the input string and stores the ScannedItem in an array +// Parser can now lookahead and consume the tokens +func (p *Parser) scan() { + for { + token, literal := p.l.Lex() + p.scannedItems = append(p.scannedItems, ScannedItem{token, literal}) + if token == EndOfStringToken { + break + } + } +} + +// parse runs the left recursive descending algorithm +// on input string. It returns a list of Requirement objects. +func (p *Parser) parse() (internalSelector, error) { + p.scan() // init scannedItems + + var requirements internalSelector + for { + tok, lit := p.lookahead(Values) + switch tok { + case IdentifierToken, DoesNotExistToken: + r, err := p.parseRequirement() + if err != nil { + return nil, fmt.Errorf("unable to parse requirement: %v", err) + } + requirements = append(requirements, *r) + t, l := p.consume(Values) + switch t { + case EndOfStringToken: + return requirements, nil + case CommaToken: + t2, l2 := p.lookahead(Values) + if t2 != IdentifierToken && t2 != DoesNotExistToken { + return nil, fmt.Errorf("found '%s', expected: identifier after ','", l2) + } + default: + return nil, fmt.Errorf("found '%s', expected: ',' or 'end of string'", l) + } + case EndOfStringToken: + return requirements, nil + default: + return nil, fmt.Errorf("found '%s', expected: !, identifier, or 'end of string'", lit) + } + } +} + +func (p *Parser) parseRequirement() (*Requirement, error) { + key, operator, err := p.parseKeyAndInferOperator() + if err != nil { + return nil, err + } + if operator == selection.Exists || operator == selection.DoesNotExist { // operator found lookahead set checked + return NewRequirement(key, operator, nil) + } + operator, err = p.parseOperator() + if err != nil { + return nil, err + } + var values sets.String + switch operator { + case selection.In, selection.NotIn: + values, err = p.parseValues() + case selection.Equals, selection.DoubleEquals, selection.NotEquals, selection.GreaterThan, selection.LessThan: + values, err = p.parseExactValue() + } + if err != nil { + return nil, err + } + return NewRequirement(key, operator, values) + +} + +// parseKeyAndInferOperator parse literals. +// in case of no operator '!, in, notin, ==, =, !=' are found +// the 'exists' operator is inferred +func (p *Parser) parseKeyAndInferOperator() (string, selection.Operator, error) { + var operator selection.Operator + tok, literal := p.consume(Values) + if tok == DoesNotExistToken { + operator = selection.DoesNotExist + tok, literal = p.consume(Values) + } + if tok != IdentifierToken { + err := fmt.Errorf("found '%s', expected: identifier", literal) + return "", "", err + } + if err := validateLabelKey(literal); err != nil { + return "", "", err + } + if t, _ := p.lookahead(Values); t == EndOfStringToken || t == CommaToken { + if operator != selection.DoesNotExist { + operator = selection.Exists + } + } + return literal, operator, nil +} + +// parseOperator return operator and eventually matchType +// matchType can be exact +func (p *Parser) parseOperator() (op selection.Operator, err error) { + tok, lit := p.consume(KeyAndOperator) + switch tok { + // DoesNotExistToken shouldn't be here because it's a unary operator, not a binary operator + case InToken: + op = selection.In + case EqualsToken: + op = selection.Equals + case DoubleEqualsToken: + op = selection.DoubleEquals + case GreaterThanToken: + op = selection.GreaterThan + case LessThanToken: + op = selection.LessThan + case NotInToken: + op = selection.NotIn + case NotEqualsToken: + op = selection.NotEquals + default: + return "", fmt.Errorf("found '%s', expected: '=', '!=', '==', 'in', notin'", lit) + } + return op, nil +} + +// parseValues parses the values for set based matching (x,y,z) +func (p *Parser) parseValues() (sets.String, error) { + tok, lit := p.consume(Values) + if tok != OpenParToken { + return nil, fmt.Errorf("found '%s' expected: '('", lit) + } + tok, lit = p.lookahead(Values) + switch tok { + case IdentifierToken, CommaToken: + s, err := p.parseIdentifiersList() // handles general cases + if err != nil { + return s, err + } + if tok, _ = p.consume(Values); tok != ClosedParToken { + return nil, fmt.Errorf("found '%s', expected: ')'", lit) + } + return s, nil + case ClosedParToken: // handles "()" + p.consume(Values) + return sets.NewString(""), nil + default: + return nil, fmt.Errorf("found '%s', expected: ',', ')' or identifier", lit) + } +} + +// parseIdentifiersList parses a (possibly empty) list of +// of comma separated (possibly empty) identifiers +func (p *Parser) parseIdentifiersList() (sets.String, error) { + s := sets.NewString() + for { + tok, lit := p.consume(Values) + switch tok { + case IdentifierToken: + s.Insert(lit) + tok2, lit2 := p.lookahead(Values) + switch tok2 { + case CommaToken: + continue + case ClosedParToken: + return s, nil + default: + return nil, fmt.Errorf("found '%s', expected: ',' or ')'", lit2) + } + case CommaToken: // handled here since we can have "(," + if s.Len() == 0 { + s.Insert("") // to handle (, + } + tok2, _ := p.lookahead(Values) + if tok2 == ClosedParToken { + s.Insert("") // to handle ,) Double "" removed by StringSet + return s, nil + } + if tok2 == CommaToken { + p.consume(Values) + s.Insert("") // to handle ,, Double "" removed by StringSet + } + default: // it can be operator + return s, fmt.Errorf("found '%s', expected: ',', or identifier", lit) + } + } +} + +// parseExactValue parses the only value for exact match style +func (p *Parser) parseExactValue() (sets.String, error) { + s := sets.NewString() + tok, lit := p.lookahead(Values) + if tok == EndOfStringToken || tok == CommaToken { + s.Insert("") + return s, nil + } + tok, lit = p.consume(Values) + if tok == IdentifierToken { + s.Insert(lit) + return s, nil + } + return nil, fmt.Errorf("found '%s', expected: identifier", lit) +} + +// Parse takes a string representing a selector and returns a selector +// object, or an error. This parsing function differs from ParseSelector +// as they parse different selectors with different syntaxes. +// The input will cause an error if it does not follow this form: +// +// <selector-syntax> ::= <requirement> | <requirement> "," <selector-syntax> ] +// <requirement> ::= [!] KEY [ <set-based-restriction> | <exact-match-restriction> ] +// <set-based-restriction> ::= "" | <inclusion-exclusion> <value-set> +// <inclusion-exclusion> ::= <inclusion> | <exclusion> +// <exclusion> ::= "notin" +// <inclusion> ::= "in" +// <value-set> ::= "(" <values> ")" +// <values> ::= VALUE | VALUE "," <values> +// <exact-match-restriction> ::= ["="|"=="|"!="] VALUE +// KEY is a sequence of one or more characters following [ DNS_SUBDOMAIN "/" ] DNS_LABEL. Max length is 63 characters. +// VALUE is a sequence of zero or more characters "([A-Za-z0-9_-\.])". Max length is 63 characters. +// Delimiter is white space: (' ', '\t') +// Example of valid syntax: +// "x in (foo,,baz),y,z notin ()" +// +// Note: +// (1) Inclusion - " in " - denotes that the KEY exists and is equal to any of the +// VALUEs in its requirement +// (2) Exclusion - " notin " - denotes that the KEY is not equal to any +// of the VALUEs in its requirement or does not exist +// (3) The empty string is a valid VALUE +// (4) A requirement with just a KEY - as in "y" above - denotes that +// the KEY exists and can be any VALUE. +// (5) A requirement with just !KEY requires that the KEY not exist. +// +func Parse(selector string) (Selector, error) { + parsedSelector, err := parse(selector) + if err == nil { + return parsedSelector, nil + } + return nil, err +} + +// parse parses the string representation of the selector and returns the internalSelector struct. +// The callers of this method can then decide how to return the internalSelector struct to their +// callers. This function has two callers now, one returns a Selector interface and the other +// returns a list of requirements. +func parse(selector string) (internalSelector, error) { + p := &Parser{l: &Lexer{s: selector, pos: 0}} + items, err := p.parse() + if err != nil { + return nil, err + } + sort.Sort(ByKey(items)) // sort to grant determistic parsing + return internalSelector(items), err +} + +func validateLabelKey(k string) error { + if errs := validation.IsQualifiedName(k); len(errs) != 0 { + return fmt.Errorf("invalid label key %q: %s", k, strings.Join(errs, "; ")) + } + return nil +} + +func validateLabelValue(v string) error { + if errs := validation.IsValidLabelValue(v); len(errs) != 0 { + return fmt.Errorf("invalid label value: %q: %s", v, strings.Join(errs, "; ")) + } + return nil +} + +// SelectorFromSet returns a Selector which will match exactly the given Set. A +// nil and empty Sets are considered equivalent to Everything(). +func SelectorFromSet(ls Set) Selector { + if ls == nil { + return internalSelector{} + } + var requirements internalSelector + for label, value := range ls { + if r, err := NewRequirement(label, selection.Equals, sets.NewString(value)); err != nil { + //TODO: double check errors when input comes from serialization? + return internalSelector{} + } else { + requirements = append(requirements, *r) + } + } + // sort to have deterministic string representation + sort.Sort(ByKey(requirements)) + return internalSelector(requirements) +} + +// SelectorFromValidatedSet returns a Selector which will match exactly the given Set. +// A nil and empty Sets are considered equivalent to Everything(). +// It assumes that Set is already validated and doesn't do any validation. +func SelectorFromValidatedSet(ls Set) Selector { + if ls == nil { + return internalSelector{} + } + var requirements internalSelector + for label, value := range ls { + requirements = append(requirements, Requirement{key: label, operator: selection.Equals, strValues: sets.NewString(value)}) + } + // sort to have deterministic string representation + sort.Sort(ByKey(requirements)) + return internalSelector(requirements) +} + +// ParseToRequirements takes a string representing a selector and returns a list of +// requirements. This function is suitable for those callers that perform additional +// processing on selector requirements. +// See the documentation for Parse() function for more details. +// TODO: Consider exporting the internalSelector type instead. +func ParseToRequirements(selector string) ([]Requirement, error) { + return parse(selector) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/OWNERS b/vendor/k8s.io/client-go/1.5/pkg/runtime/OWNERS new file mode 100644 index 0000000000..d038b5e9b9 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/OWNERS @@ -0,0 +1,5 @@ +assignees: + - caesarxuchao + - deads2k + - lavalamp + - smarterclayton diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/codec.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/codec.go new file mode 100644 index 0000000000..10ea163a17 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/codec.go @@ -0,0 +1,280 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "bytes" + "encoding/base64" + "fmt" + "io" + "net/url" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion/queryparams" +) + +// codec binds an encoder and decoder. +type codec struct { + Encoder + Decoder +} + +// NewCodec creates a Codec from an Encoder and Decoder. +func NewCodec(e Encoder, d Decoder) Codec { + return codec{e, d} +} + +// Encode is a convenience wrapper for encoding to a []byte from an Encoder +func Encode(e Encoder, obj Object) ([]byte, error) { + // TODO: reuse buffer + buf := &bytes.Buffer{} + if err := e.Encode(obj, buf); err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +// Decode is a convenience wrapper for decoding data into an Object. +func Decode(d Decoder, data []byte) (Object, error) { + obj, _, err := d.Decode(data, nil, nil) + return obj, err +} + +// DecodeInto performs a Decode into the provided object. +func DecodeInto(d Decoder, data []byte, into Object) error { + out, gvk, err := d.Decode(data, nil, into) + if err != nil { + return err + } + if out != into { + return fmt.Errorf("unable to decode %s into %v", gvk, reflect.TypeOf(into)) + } + return nil +} + +// EncodeOrDie is a version of Encode which will panic instead of returning an error. For tests. +func EncodeOrDie(e Encoder, obj Object) string { + bytes, err := Encode(e, obj) + if err != nil { + panic(err) + } + return string(bytes) +} + +// UseOrCreateObject returns obj if the canonical ObjectKind returned by the provided typer matches gvk, or +// invokes the ObjectCreator to instantiate a new gvk. Returns an error if the typer cannot find the object. +func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk unversioned.GroupVersionKind, obj Object) (Object, error) { + if obj != nil { + kinds, _, err := t.ObjectKinds(obj) + if err != nil { + return nil, err + } + for _, kind := range kinds { + if gvk == kind { + return obj, nil + } + } + } + return c.New(gvk) +} + +// NoopEncoder converts an Decoder to a Serializer or Codec for code that expects them but only uses decoding. +type NoopEncoder struct { + Decoder +} + +var _ Serializer = NoopEncoder{} + +func (n NoopEncoder) Encode(obj Object, w io.Writer) error { + return fmt.Errorf("encoding is not allowed for this codec: %v", reflect.TypeOf(n.Decoder)) +} + +// NoopDecoder converts an Encoder to a Serializer or Codec for code that expects them but only uses encoding. +type NoopDecoder struct { + Encoder +} + +var _ Serializer = NoopDecoder{} + +func (n NoopDecoder) Decode(data []byte, gvk *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) { + return nil, nil, fmt.Errorf("decoding is not allowed for this codec: %v", reflect.TypeOf(n.Encoder)) +} + +// NewParameterCodec creates a ParameterCodec capable of transforming url values into versioned objects and back. +func NewParameterCodec(scheme *Scheme) ParameterCodec { + return ¶meterCodec{ + typer: scheme, + convertor: scheme, + creator: scheme, + } +} + +// parameterCodec implements conversion to and from query parameters and objects. +type parameterCodec struct { + typer ObjectTyper + convertor ObjectConvertor + creator ObjectCreater +} + +var _ ParameterCodec = ¶meterCodec{} + +// DecodeParameters converts the provided url.Values into an object of type From with the kind of into, and then +// converts that object to into (if necessary). Returns an error if the operation cannot be completed. +func (c *parameterCodec) DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into Object) error { + if len(parameters) == 0 { + return nil + } + targetGVKs, _, err := c.typer.ObjectKinds(into) + if err != nil { + return err + } + targetGVK := targetGVKs[0] + if targetGVK.GroupVersion() == from { + return c.convertor.Convert(¶meters, into, nil) + } + input, err := c.creator.New(from.WithKind(targetGVK.Kind)) + if err != nil { + return err + } + if err := c.convertor.Convert(¶meters, input, nil); err != nil { + return err + } + return c.convertor.Convert(input, into, nil) +} + +// EncodeParameters converts the provided object into the to version, then converts that object to url.Values. +// Returns an error if conversion is not possible. +func (c *parameterCodec) EncodeParameters(obj Object, to unversioned.GroupVersion) (url.Values, error) { + gvks, _, err := c.typer.ObjectKinds(obj) + if err != nil { + return nil, err + } + gvk := gvks[0] + if to != gvk.GroupVersion() { + out, err := c.convertor.ConvertToVersion(obj, to) + if err != nil { + return nil, err + } + obj = out + } + return queryparams.Convert(obj) +} + +type base64Serializer struct { + Serializer +} + +func NewBase64Serializer(s Serializer) Serializer { + return &base64Serializer{s} +} + +func (s base64Serializer) Encode(obj Object, stream io.Writer) error { + e := base64.NewEncoder(base64.StdEncoding, stream) + err := s.Serializer.Encode(obj, e) + e.Close() + return err +} + +func (s base64Serializer) Decode(data []byte, defaults *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) { + out := make([]byte, base64.StdEncoding.DecodedLen(len(data))) + n, err := base64.StdEncoding.Decode(out, data) + if err != nil { + return nil, nil, err + } + return s.Serializer.Decode(out[:n], defaults, into) +} + +var ( + // InternalGroupVersioner will always prefer the internal version for a given group version kind. + InternalGroupVersioner GroupVersioner = internalGroupVersioner{} + // DisabledGroupVersioner will reject all kinds passed to it. + DisabledGroupVersioner GroupVersioner = disabledGroupVersioner{} +) + +type internalGroupVersioner struct{} + +// KindForGroupVersionKinds returns an internal Kind if one is found, or converts the first provided kind to the internal version. +func (internalGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { + for _, kind := range kinds { + if kind.Version == APIVersionInternal { + return kind, true + } + } + for _, kind := range kinds { + return unversioned.GroupVersionKind{Group: kind.Group, Version: APIVersionInternal, Kind: kind.Kind}, true + } + return unversioned.GroupVersionKind{}, false +} + +type disabledGroupVersioner struct{} + +// KindForGroupVersionKinds returns false for any input. +func (disabledGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { + return unversioned.GroupVersionKind{}, false +} + +// GroupVersioners implements GroupVersioner and resolves to the first exact match for any kind. +type GroupVersioners []GroupVersioner + +// KindForGroupVersionKinds returns the first match of any of the group versioners, or false if no match occured. +func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { + for _, gv := range gvs { + target, ok := gv.KindForGroupVersionKinds(kinds) + if !ok { + continue + } + return target, true + } + return unversioned.GroupVersionKind{}, false +} + +// Assert that unversioned.GroupVersion and GroupVersions implement GroupVersioner +var _ GroupVersioner = unversioned.GroupVersion{} +var _ GroupVersioner = unversioned.GroupVersions{} +var _ GroupVersioner = multiGroupVersioner{} + +type multiGroupVersioner struct { + target unversioned.GroupVersion + acceptedGroupKinds []unversioned.GroupKind +} + +// NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds. +// Kind may be empty in the provided group kind, in which case any kind will match. +func NewMultiGroupVersioner(gv unversioned.GroupVersion, groupKinds ...unversioned.GroupKind) GroupVersioner { + if len(groupKinds) == 0 || (len(groupKinds) == 1 && groupKinds[0].Group == gv.Group) { + return gv + } + return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds} +} + +// KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will +// use the originating kind where possible. +func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { + for _, src := range kinds { + for _, kind := range v.acceptedGroupKinds { + if kind.Group != src.Group { + continue + } + if len(kind.Kind) > 0 && kind.Kind != src.Kind { + continue + } + return v.target.WithKind(src.Kind), true + } + } + return unversioned.GroupVersionKind{}, false +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/codec_check.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/codec_check.go new file mode 100644 index 0000000000..1f9755e92c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/codec_check.go @@ -0,0 +1,50 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// CheckCodec makes sure that the codec can encode objects like internalType, +// decode all of the external types listed, and also decode them into the given +// object. (Will modify internalObject.) (Assumes JSON serialization.) +// TODO: verify that the correct external version is chosen on encode... +func CheckCodec(c Codec, internalType Object, externalTypes ...unversioned.GroupVersionKind) error { + _, err := Encode(c, internalType) + if err != nil { + return fmt.Errorf("Internal type not encodable: %v", err) + } + for _, et := range externalTypes { + exBytes := []byte(fmt.Sprintf(`{"kind":"%v","apiVersion":"%v"}`, et.Kind, et.GroupVersion().String())) + obj, err := Decode(c, exBytes) + if err != nil { + return fmt.Errorf("external type %s not interpretable: %v", et, err) + } + if reflect.TypeOf(obj) != reflect.TypeOf(internalType) { + return fmt.Errorf("decode of external type %s produced: %#v", et, obj) + } + err = DecodeInto(c, exBytes, internalType) + if err != nil { + return fmt.Errorf("external type %s not convertable to internal type: %v", et, err) + } + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/conversion.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/conversion.go new file mode 100644 index 0000000000..822304db2c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/conversion.go @@ -0,0 +1,98 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Defines conversions between generic types and structs to map query strings +// to struct objects. +package runtime + +import ( + "reflect" + "strconv" + "strings" + + "k8s.io/client-go/1.5/pkg/conversion" +) + +// JSONKeyMapper uses the struct tags on a conversion to determine the key value for +// the other side. Use when mapping from a map[string]* to a struct or vice versa. +func JSONKeyMapper(key string, sourceTag, destTag reflect.StructTag) (string, string) { + if s := destTag.Get("json"); len(s) > 0 { + return strings.SplitN(s, ",", 2)[0], key + } + if s := sourceTag.Get("json"); len(s) > 0 { + return key, strings.SplitN(s, ",", 2)[0] + } + return key, key +} + +// DefaultStringConversions are helpers for converting []string and string to real values. +var DefaultStringConversions = []interface{}{ + Convert_Slice_string_To_string, + Convert_Slice_string_To_int, + Convert_Slice_string_To_bool, + Convert_Slice_string_To_int64, +} + +func Convert_Slice_string_To_string(input *[]string, out *string, s conversion.Scope) error { + if len(*input) == 0 { + *out = "" + } + *out = (*input)[0] + return nil +} + +func Convert_Slice_string_To_int(input *[]string, out *int, s conversion.Scope) error { + if len(*input) == 0 { + *out = 0 + } + str := (*input)[0] + i, err := strconv.Atoi(str) + if err != nil { + return err + } + *out = i + return nil +} + +// Conver_Slice_string_To_bool will convert a string parameter to boolean. +// Only the absence of a value, a value of "false", or a value of "0" resolve to false. +// Any other value (including empty string) resolves to true. +func Convert_Slice_string_To_bool(input *[]string, out *bool, s conversion.Scope) error { + if len(*input) == 0 { + *out = false + return nil + } + switch strings.ToLower((*input)[0]) { + case "false", "0": + *out = false + default: + *out = true + } + return nil +} + +func Convert_Slice_string_To_int64(input *[]string, out *int64, s conversion.Scope) error { + if len(*input) == 0 { + *out = 0 + } + str := (*input)[0] + i, err := strconv.ParseInt(str, 10, 64) + if err != nil { + return err + } + *out = i + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/doc.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/doc.go new file mode 100644 index 0000000000..a9d084d9fb --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/doc.go @@ -0,0 +1,45 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package runtime includes helper functions for working with API objects +// that follow the kubernetes API object conventions, which are: +// +// 0. Your API objects have a common metadata struct member, TypeMeta. +// 1. Your code refers to an internal set of API objects. +// 2. In a separate package, you have an external set of API objects. +// 3. The external set is considered to be versioned, and no breaking +// changes are ever made to it (fields may be added but not changed +// or removed). +// 4. As your api evolves, you'll make an additional versioned package +// with every major change. +// 5. Versioned packages have conversion functions which convert to +// and from the internal version. +// 6. You'll continue to support older versions according to your +// deprecation policy, and you can easily provide a program/library +// to update old versions into new versions because of 5. +// 7. All of your serializations and deserializations are handled in a +// centralized place. +// +// Package runtime provides a conversion helper to make 5 easy, and the +// Encode/Decode/DecodeInto trio to accomplish 7. You can also register +// additional "codecs" which use a version of your choice. It's +// recommended that you register your types with runtime in your +// package's init function. +// +// As a bonus, a few common types useful from all api objects and versions +// are provided in types.go. + +package runtime diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/embedded.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/embedded.go new file mode 100644 index 0000000000..7184a7d344 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/embedded.go @@ -0,0 +1,136 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "errors" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" +) + +type encodable struct { + E Encoder `json:"-"` + obj Object + versions []unversioned.GroupVersion +} + +func (e encodable) GetObjectKind() unversioned.ObjectKind { return e.obj.GetObjectKind() } + +// NewEncodable creates an object that will be encoded with the provided codec on demand. +// Provided as a convenience for test cases dealing with internal objects. +func NewEncodable(e Encoder, obj Object, versions ...unversioned.GroupVersion) Object { + if _, ok := obj.(*Unknown); ok { + return obj + } + return encodable{e, obj, versions} +} + +func (re encodable) UnmarshalJSON(in []byte) error { + return errors.New("runtime.encodable cannot be unmarshalled from JSON") +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re encodable) MarshalJSON() ([]byte, error) { + return Encode(re.E, re.obj) +} + +// NewEncodableList creates an object that will be encoded with the provided codec on demand. +// Provided as a convenience for test cases dealing with internal objects. +func NewEncodableList(e Encoder, objects []Object, versions ...unversioned.GroupVersion) []Object { + out := make([]Object, len(objects)) + for i := range objects { + if _, ok := objects[i].(*Unknown); ok { + out[i] = objects[i] + continue + } + out[i] = NewEncodable(e, objects[i], versions...) + } + return out +} + +func (re *Unknown) UnmarshalJSON(in []byte) error { + if re == nil { + return errors.New("runtime.Unknown: UnmarshalJSON on nil pointer") + } + re.TypeMeta = TypeMeta{} + re.Raw = append(re.Raw[0:0], in...) + re.ContentEncoding = "" + re.ContentType = ContentTypeJSON + return nil +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re Unknown) MarshalJSON() ([]byte, error) { + // If ContentType is unset, we assume this is JSON. + if re.ContentType != "" && re.ContentType != ContentTypeJSON { + return nil, errors.New("runtime.Unknown: MarshalJSON on non-json data") + } + if re.Raw == nil { + return []byte("null"), nil + } + return re.Raw, nil +} + +func Convert_runtime_Object_To_runtime_RawExtension(in *Object, out *RawExtension, s conversion.Scope) error { + if in == nil { + out.Raw = []byte("null") + return nil + } + obj := *in + if unk, ok := obj.(*Unknown); ok { + if unk.Raw != nil { + out.Raw = unk.Raw + return nil + } + obj = out.Object + } + if obj == nil { + out.Raw = nil + return nil + } + out.Object = obj + return nil +} + +func Convert_runtime_RawExtension_To_runtime_Object(in *RawExtension, out *Object, s conversion.Scope) error { + if in.Object != nil { + *out = in.Object + return nil + } + data := in.Raw + if len(data) == 0 || (len(data) == 4 && string(data) == "null") { + *out = nil + return nil + } + *out = &Unknown{ + Raw: data, + // TODO: Set ContentEncoding and ContentType appropriately. + // Currently we set ContentTypeJSON to make tests passing. + ContentType: ContentTypeJSON, + } + return nil +} + +func DefaultEmbeddedConversions() []interface{} { + return []interface{}{ + Convert_runtime_Object_To_runtime_RawExtension, + Convert_runtime_RawExtension_To_runtime_Object, + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/error.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/error.go new file mode 100644 index 0000000000..098e5bcf20 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/error.go @@ -0,0 +1,102 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +type notRegisteredErr struct { + gvk unversioned.GroupVersionKind + t reflect.Type +} + +// NewNotRegisteredErr is exposed for testing. +func NewNotRegisteredErr(gvk unversioned.GroupVersionKind, t reflect.Type) error { + return ¬RegisteredErr{gvk: gvk, t: t} +} + +func (k *notRegisteredErr) Error() string { + if k.t != nil { + return fmt.Sprintf("no kind is registered for the type %v", k.t) + } + if len(k.gvk.Kind) == 0 { + return fmt.Sprintf("no version %q has been registered", k.gvk.GroupVersion()) + } + if k.gvk.Version == APIVersionInternal { + return fmt.Sprintf("no kind %q is registered for the internal version of group %q", k.gvk.Kind, k.gvk.Group) + } + + return fmt.Sprintf("no kind %q is registered for version %q", k.gvk.Kind, k.gvk.GroupVersion()) +} + +// IsNotRegisteredError returns true if the error indicates the provided +// object or input data is not registered. +func IsNotRegisteredError(err error) bool { + if err == nil { + return false + } + _, ok := err.(*notRegisteredErr) + return ok +} + +type missingKindErr struct { + data string +} + +func NewMissingKindErr(data string) error { + return &missingKindErr{data} +} + +func (k *missingKindErr) Error() string { + return fmt.Sprintf("Object 'Kind' is missing in '%s'", k.data) +} + +// IsMissingKind returns true if the error indicates that the provided object +// is missing a 'Kind' field. +func IsMissingKind(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingKindErr) + return ok +} + +type missingVersionErr struct { + data string +} + +// IsMissingVersion returns true if the error indicates that the provided object +// is missing a 'Version' field. +func NewMissingVersionErr(data string) error { + return &missingVersionErr{data} +} + +func (k *missingVersionErr) Error() string { + return fmt.Sprintf("Object 'apiVersion' is missing in '%s'", k.data) +} + +func IsMissingVersion(err error) bool { + if err == nil { + return false + } + _, ok := err.(*missingVersionErr) + return ok +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/extension.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/extension.go new file mode 100644 index 0000000000..4d23ee9ee3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/extension.go @@ -0,0 +1,48 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "encoding/json" + "errors" +) + +func (re *RawExtension) UnmarshalJSON(in []byte) error { + if re == nil { + return errors.New("runtime.RawExtension: UnmarshalJSON on nil pointer") + } + re.Raw = append(re.Raw[0:0], in...) + return nil +} + +// Marshal may get called on pointers or values, so implement MarshalJSON on value. +// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go +func (re RawExtension) MarshalJSON() ([]byte, error) { + if re.Raw == nil { + // TODO: this is to support legacy behavior of JSONPrinter and YAMLPrinter, which + // expect to call json.Marshal on arbitrary versioned objects (even those not in + // the scheme). pkg/kubectl/resource#AsVersionedObjects and its interaction with + // kubectl get on objects not in the scheme needs to be updated to ensure that the + // objects that are not part of the scheme are correctly put into the right form. + if re.Object != nil { + return json.Marshal(re.Object) + } + return []byte("null"), nil + } + // TODO: Check whether ContentType is actually JSON before returning it. + return re.Raw, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.pb.go new file mode 100644 index 0000000000..bdf9aa92bf --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.pb.go @@ -0,0 +1,766 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/runtime/generated.proto +// DO NOT EDIT! + +/* + Package runtime is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/runtime/generated.proto + + It has these top-level messages: + RawExtension + TypeMeta + Unknown +*/ +package runtime + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *RawExtension) Reset() { *m = RawExtension{} } +func (*RawExtension) ProtoMessage() {} +func (*RawExtension) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func (m *TypeMeta) Reset() { *m = TypeMeta{} } +func (*TypeMeta) ProtoMessage() {} +func (*TypeMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } + +func (m *Unknown) Reset() { *m = Unknown{} } +func (*Unknown) ProtoMessage() {} +func (*Unknown) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } + +func init() { + proto.RegisterType((*RawExtension)(nil), "k8s.io.client-go.1.5.pkg.runtime.RawExtension") + proto.RegisterType((*TypeMeta)(nil), "k8s.io.client-go.1.5.pkg.runtime.TypeMeta") + proto.RegisterType((*Unknown)(nil), "k8s.io.client-go.1.5.pkg.runtime.Unknown") +} +func (m *RawExtension) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *RawExtension) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Raw != nil { + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Raw))) + i += copy(data[i:], m.Raw) + } + return i, nil +} + +func (m *TypeMeta) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *TypeMeta) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.APIVersion))) + i += copy(data[i:], m.APIVersion) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Kind))) + i += copy(data[i:], m.Kind) + return i, nil +} + +func (m *Unknown) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Unknown) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.TypeMeta.Size())) + n1, err := m.TypeMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + if m.Raw != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Raw))) + i += copy(data[i:], m.Raw) + } + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentEncoding))) + i += copy(data[i:], m.ContentEncoding) + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentType))) + i += copy(data[i:], m.ContentType) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *RawExtension) Size() (n int) { + var l int + _ = l + if m.Raw != nil { + l = len(m.Raw) + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *TypeMeta) Size() (n int) { + var l int + _ = l + l = len(m.APIVersion) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *Unknown) Size() (n int) { + var l int + _ = l + l = m.TypeMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if m.Raw != nil { + l = len(m.Raw) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.ContentEncoding) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.ContentType) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *RawExtension) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RawExtension{`, + `Raw:` + valueToStringGenerated(this.Raw) + `,`, + `}`, + }, "") + return s +} +func (this *TypeMeta) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&TypeMeta{`, + `APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `}`, + }, "") + return s +} +func (this *Unknown) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Unknown{`, + `TypeMeta:` + strings.Replace(strings.Replace(this.TypeMeta.String(), "TypeMeta", "TypeMeta", 1), `&`, ``, 1) + `,`, + `Raw:` + valueToStringGenerated(this.Raw) + `,`, + `ContentEncoding:` + fmt.Sprintf("%v", this.ContentEncoding) + `,`, + `ContentType:` + fmt.Sprintf("%v", this.ContentType) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *RawExtension) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RawExtension: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RawExtension: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Raw = append(m.Raw[:0], data[iNdEx:postIndex]...) + if m.Raw == nil { + m.Raw = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TypeMeta) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TypeMeta: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TypeMeta: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field APIVersion", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.APIVersion = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Unknown) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Unknown: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Unknown: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TypeMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TypeMeta.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + byteLen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + byteLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Raw = append(m.Raw[:0], data[iNdEx:postIndex]...) + if m.Raw == nil { + m.Raw = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentEncoding", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentEncoding = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContentType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContentType = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 380 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x90, 0xcf, 0x4e, 0x2a, 0x31, + 0x14, 0xc6, 0x19, 0x20, 0x81, 0x5b, 0x48, 0xb8, 0xe9, 0x5d, 0xdc, 0x91, 0x44, 0x20, 0x6c, 0x94, + 0x05, 0x6d, 0x24, 0x31, 0x71, 0xcb, 0x10, 0x16, 0xc6, 0x98, 0x98, 0x89, 0xb8, 0x70, 0xe5, 0x30, + 0xd4, 0xb1, 0x19, 0x69, 0x27, 0x9d, 0x4e, 0xd0, 0x9d, 0x8f, 0xe0, 0x63, 0xb1, 0x64, 0xe9, 0x8a, + 0x28, 0x3e, 0x83, 0x7b, 0x4b, 0x29, 0x7f, 0x04, 0xe2, 0xe2, 0x24, 0x33, 0xe7, 0xfc, 0xbe, 0xef, + 0x7c, 0xa7, 0xa0, 0x19, 0x9e, 0xc5, 0x88, 0x72, 0x1c, 0x26, 0x7d, 0x22, 0x18, 0x91, 0x24, 0xc6, + 0x51, 0x18, 0x60, 0x91, 0x30, 0x49, 0x87, 0x04, 0x07, 0x84, 0x11, 0xe1, 0x49, 0x32, 0x40, 0x91, + 0xe0, 0x92, 0xc3, 0xc3, 0x05, 0x8e, 0xd6, 0x38, 0x52, 0x38, 0x32, 0x78, 0xb9, 0x19, 0x50, 0xf9, + 0x90, 0xf4, 0x91, 0xcf, 0x87, 0x38, 0xe0, 0x01, 0xc7, 0x5a, 0xd5, 0x4f, 0xee, 0xf5, 0x9f, 0xfe, + 0xd1, 0x5f, 0x0b, 0xb7, 0x72, 0x6b, 0xff, 0x72, 0x2f, 0xa2, 0x58, 0x90, 0x98, 0x27, 0xc2, 0xdf, + 0x49, 0x50, 0x3e, 0xd9, 0xaf, 0x49, 0x24, 0x7d, 0xc4, 0x94, 0xc9, 0x58, 0x8a, 0x6d, 0x49, 0xbd, + 0x01, 0x8a, 0xae, 0x37, 0xea, 0x3e, 0x49, 0xc2, 0x62, 0xca, 0x19, 0x3c, 0x00, 0x19, 0xe1, 0x8d, + 0x6c, 0xab, 0x66, 0x1d, 0x17, 0x9d, 0xdc, 0x6c, 0x5a, 0xcd, 0xa8, 0xb1, 0x3b, 0xef, 0xd5, 0xef, + 0x40, 0xfe, 0xfa, 0x39, 0x22, 0x97, 0x44, 0x7a, 0xb0, 0x05, 0x80, 0x4a, 0x72, 0x43, 0xc4, 0x5c, + 0xa4, 0xe9, 0x3f, 0x0e, 0x1c, 0x4f, 0xab, 0x29, 0xa5, 0x00, 0xed, 0xab, 0x73, 0x33, 0x71, 0x37, + 0x28, 0x58, 0x03, 0xd9, 0x90, 0xb2, 0x81, 0x9d, 0xd6, 0x74, 0xd1, 0xd0, 0xd9, 0x0b, 0xd5, 0x73, + 0xf5, 0xa4, 0xfe, 0x65, 0x81, 0x5c, 0x8f, 0x85, 0x8c, 0x8f, 0x18, 0xec, 0x81, 0xbc, 0x34, 0xdb, + 0xb4, 0x7f, 0xa1, 0x75, 0x84, 0x7e, 0x7d, 0x60, 0xb4, 0x0c, 0xe7, 0xfc, 0x35, 0xd6, 0xab, 0xb8, + 0xee, 0xca, 0x6a, 0x79, 0x5f, 0x7a, 0xf7, 0x3e, 0xd8, 0x06, 0x25, 0x9f, 0x33, 0xf5, 0x10, 0xb2, + 0xcb, 0x7c, 0x3e, 0xa0, 0x2c, 0xb0, 0x33, 0x3a, 0xea, 0x7f, 0xe3, 0x57, 0xea, 0xfc, 0x1c, 0xbb, + 0xdb, 0x3c, 0x3c, 0x05, 0x05, 0xd3, 0x9a, 0xaf, 0xb6, 0xb3, 0x5a, 0xfe, 0xcf, 0xc8, 0x0b, 0x9d, + 0xf5, 0xc8, 0xdd, 0xe4, 0x9c, 0xc6, 0xf8, 0xa3, 0x92, 0x9a, 0xa8, 0x7a, 0x53, 0xf5, 0x32, 0xab, + 0x58, 0x63, 0x55, 0x13, 0x55, 0xef, 0xaa, 0x5e, 0x3f, 0x2b, 0xa9, 0xdb, 0x9c, 0x39, 0xf2, 0x3b, + 0x00, 0x00, 0xff, 0xff, 0x32, 0xc1, 0x73, 0x2d, 0x94, 0x02, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.proto new file mode 100644 index 0000000000..17951fd308 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/generated.proto @@ -0,0 +1,127 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.runtime; + +import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "runtime"; + +// RawExtension is used to hold extensions in external versions. +// +// To use this, make a field which has RawExtension as its type in your external, versioned +// struct, and Object in your internal struct. You also need to register your +// various plugin types. +// +// // Internal package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // External package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // On the wire, the JSON will look something like this: +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } +// +// So what happens? Decode first uses json or yaml to unmarshal the serialized data into +// your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. +// The next step is to copy (using pkg/conversion) into the internal struct. The runtime +// package's DefaultScheme has conversion functions installed which will unpack the +// JSON stored in RawExtension, turning it into the correct object type, and storing it +// in the Object. (TODO: In the case where the object is of an unknown type, a +// runtime.Unknown object will be created and stored.) +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message RawExtension { + // Raw is the underlying serialization of this object. + // + // TODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data. + optional bytes raw = 1; +} + +// TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, +// like this: +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *unversioned.GroupVersionKind) { unversioned.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind +// +// TypeMeta is provided here for convenience. You may use it directly from this package or define +// your own with the same fields. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message TypeMeta { + optional string apiVersion = 1; + + optional string kind = 2; +} + +// Unknown allows api objects with unknown types to be passed-through. This can be used +// to deal with the API objects from a plug-in. Unknown objects still have functioning +// TypeMeta features-- kind, version, etc. +// TODO: Make this object have easy access to field based accessors and settors for +// metadata and field mutatation. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +message Unknown { + optional TypeMeta typeMeta = 1; + + // Raw will hold the complete serialized object which couldn't be matched + // with a registered type. Most likely, nothing should be done with this + // except for passing it through the system. + optional bytes raw = 2; + + // ContentEncoding is encoding used to encode 'Raw' data. + // Unspecified means no encoding. + optional string contentEncoding = 3; + + // ContentType is serialization method used to serialize 'Raw'. + // Unspecified means ContentTypeJSON. + optional string contentType = 4; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/helper.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/helper.go new file mode 100644 index 0000000000..3c2c683250 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/helper.go @@ -0,0 +1,212 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "io" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/util/errors" +) + +// unsafeObjectConvertor implements ObjectConvertor using the unsafe conversion path. +type unsafeObjectConvertor struct { + *Scheme +} + +var _ ObjectConvertor = unsafeObjectConvertor{} + +// ConvertToVersion converts in to the provided outVersion without copying the input first, which +// is only safe if the output object is not mutated or reused. +func (c unsafeObjectConvertor) ConvertToVersion(in Object, outVersion GroupVersioner) (Object, error) { + return c.Scheme.UnsafeConvertToVersion(in, outVersion) +} + +// UnsafeObjectConvertor performs object conversion without copying the object structure, +// for use when the converted object will not be reused or mutated. Primarily for use within +// versioned codecs, which use the external object for serialization but do not return it. +func UnsafeObjectConvertor(scheme *Scheme) ObjectConvertor { + return unsafeObjectConvertor{scheme} +} + +// SetField puts the value of src, into fieldName, which must be a member of v. +// The value of src must be assignable to the field. +func SetField(src interface{}, v reflect.Value, fieldName string) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + srcValue := reflect.ValueOf(src) + if srcValue.Type().AssignableTo(field.Type()) { + field.Set(srcValue) + return nil + } + if srcValue.Type().ConvertibleTo(field.Type()) { + field.Set(srcValue.Convert(field.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", srcValue.Type(), field.Type()) +} + +// Field puts the value of fieldName, which must be a member of v, into dest, +// which must be a variable to which this field's value can be assigned. +func Field(v reflect.Value, fieldName string, dest interface{}) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + destValue, err := conversion.EnforcePtr(dest) + if err != nil { + return err + } + if field.Type().AssignableTo(destValue.Type()) { + destValue.Set(field) + return nil + } + if field.Type().ConvertibleTo(destValue.Type()) { + destValue.Set(field.Convert(destValue.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", field.Type(), destValue.Type()) +} + +// fieldPtr puts the address of fieldName, which must be a member of v, +// into dest, which must be an address of a variable to which this field's +// address can be assigned. +func FieldPtr(v reflect.Value, fieldName string, dest interface{}) error { + field := v.FieldByName(fieldName) + if !field.IsValid() { + return fmt.Errorf("couldn't find %v field in %#v", fieldName, v.Interface()) + } + v, err := conversion.EnforcePtr(dest) + if err != nil { + return err + } + field = field.Addr() + if field.Type().AssignableTo(v.Type()) { + v.Set(field) + return nil + } + if field.Type().ConvertibleTo(v.Type()) { + v.Set(field.Convert(v.Type())) + return nil + } + return fmt.Errorf("couldn't assign/convert %v to %v", field.Type(), v.Type()) +} + +// EncodeList ensures that each object in an array is converted to a Unknown{} in serialized form. +// TODO: accept a content type. +func EncodeList(e Encoder, objects []Object) error { + var errs []error + for i := range objects { + data, err := Encode(e, objects[i]) + if err != nil { + errs = append(errs, err) + continue + } + // TODO: Set ContentEncoding and ContentType. + objects[i] = &Unknown{Raw: data} + } + return errors.NewAggregate(errs) +} + +func decodeListItem(obj *Unknown, decoders []Decoder) (Object, error) { + for _, decoder := range decoders { + // TODO: Decode based on ContentType. + obj, err := Decode(decoder, obj.Raw) + if err != nil { + if IsNotRegisteredError(err) { + continue + } + return nil, err + } + return obj, nil + } + // could not decode, so leave the object as Unknown, but give the decoders the + // chance to set Unknown.TypeMeta if it is available. + for _, decoder := range decoders { + if err := DecodeInto(decoder, obj.Raw, obj); err == nil { + return obj, nil + } + } + return obj, nil +} + +// DecodeList alters the list in place, attempting to decode any objects found in +// the list that have the Unknown type. Any errors that occur are returned +// after the entire list is processed. Decoders are tried in order. +func DecodeList(objects []Object, decoders ...Decoder) []error { + errs := []error(nil) + for i, obj := range objects { + switch t := obj.(type) { + case *Unknown: + decoded, err := decodeListItem(t, decoders) + if err != nil { + errs = append(errs, err) + break + } + objects[i] = decoded + } + } + return errs +} + +// MultiObjectTyper returns the types of objects across multiple schemes in order. +type MultiObjectTyper []ObjectTyper + +var _ ObjectTyper = MultiObjectTyper{} + +func (m MultiObjectTyper) ObjectKinds(obj Object) (gvks []unversioned.GroupVersionKind, unversionedType bool, err error) { + for _, t := range m { + gvks, unversionedType, err = t.ObjectKinds(obj) + if err == nil { + return + } + } + return +} + +func (m MultiObjectTyper) Recognizes(gvk unversioned.GroupVersionKind) bool { + for _, t := range m { + if t.Recognizes(gvk) { + return true + } + } + return false +} + +// SetZeroValue would set the object of objPtr to zero value of its type. +func SetZeroValue(objPtr Object) error { + v, err := conversion.EnforcePtr(objPtr) + if err != nil { + return err + } + v.Set(reflect.Zero(v.Type())) + return nil +} + +// DefaultFramer is valid for any stream that can read objects serially without +// any separation in the stream. +var DefaultFramer = defaultFramer{} + +type defaultFramer struct{} + +func (defaultFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { return r } +func (defaultFramer) NewFrameWriter(w io.Writer) io.Writer { return w } diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/interfaces.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/interfaces.go new file mode 100644 index 0000000000..caed60a2bd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/interfaces.go @@ -0,0 +1,238 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "io" + "net/url" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +const ( + // APIVersionInternal may be used if you are registering a type that should not + // be considered stable or serialized - it is a convention only and has no + // special behavior in this package. + APIVersionInternal = "__internal" +) + +// GroupVersioner refines a set of possible conversion targets into a single option. +type GroupVersioner interface { + // KindForGroupVersionKinds returns a desired target group version kind for the given input, or returns ok false if no + // target is known. In general, if the return target is not in the input list, the caller is expected to invoke + // Scheme.New(target) and then perform a conversion between the current Go type and the destination Go type. + // Sophisticated implementations may use additional information about the input kinds to pick a destination kind. + KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (target unversioned.GroupVersionKind, ok bool) +} + +// Encoders write objects to a serialized form +type Encoder interface { + // Encode writes an object to a stream. Implementations may return errors if the versions are + // incompatible, or if no conversion is defined. + Encode(obj Object, w io.Writer) error +} + +// Decoders attempt to load an object from data. +type Decoder interface { + // Decode attempts to deserialize the provided data using either the innate typing of the scheme or the + // default kind, group, and version provided. It returns a decoded object as well as the kind, group, and + // version from the serialized data, or an error. If into is non-nil, it will be used as the target type + // and implementations may choose to use it rather than reallocating an object. However, the object is not + // guaranteed to be populated. The returned object is not guaranteed to match into. If defaults are + // provided, they are applied to the data by default. If no defaults or partial defaults are provided, the + // type of the into may be used to guide conversion decisions. + Decode(data []byte, defaults *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) +} + +// Serializer is the core interface for transforming objects into a serialized format and back. +// Implementations may choose to perform conversion of the object, but no assumptions should be made. +type Serializer interface { + Encoder + Decoder +} + +// Codec is a Serializer that deals with the details of versioning objects. It offers the same +// interface as Serializer, so this is a marker to consumers that care about the version of the objects +// they receive. +type Codec Serializer + +// ParameterCodec defines methods for serializing and deserializing API objects to url.Values and +// performing any necessary conversion. Unlike the normal Codec, query parameters are not self describing +// and the desired version must be specified. +type ParameterCodec interface { + // DecodeParameters takes the given url.Values in the specified group version and decodes them + // into the provided object, or returns an error. + DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into Object) error + // EncodeParameters encodes the provided object as query parameters or returns an error. + EncodeParameters(obj Object, to unversioned.GroupVersion) (url.Values, error) +} + +// Framer is a factory for creating readers and writers that obey a particular framing pattern. +type Framer interface { + NewFrameReader(r io.ReadCloser) io.ReadCloser + NewFrameWriter(w io.Writer) io.Writer +} + +// SerializerInfo contains information about a specific serialization format +type SerializerInfo struct { + Serializer + // EncodesAsText indicates this serializer can be encoded to UTF-8 safely. + EncodesAsText bool + // MediaType is the value that represents this serializer over the wire. + MediaType string +} + +// StreamSerializerInfo contains information about a specific stream serialization format +type StreamSerializerInfo struct { + SerializerInfo + // Framer is the factory for retrieving streams that separate objects on the wire + Framer + // Embedded is the type of the nested serialization that should be used. + Embedded SerializerInfo +} + +// NegotiatedSerializer is an interface used for obtaining encoders, decoders, and serializers +// for multiple supported media types. This would commonly be accepted by a server component +// that performs HTTP content negotiation to accept multiple formats. +type NegotiatedSerializer interface { + // SupportedMediaTypes is the media types supported for reading and writing single objects. + SupportedMediaTypes() []string + // SerializerForMediaType returns a serializer for the provided media type. params is the set of + // parameters applied to the media type that may modify the resulting output. ok will be false + // if no serializer matched the media type. + SerializerForMediaType(mediaType string, params map[string]string) (s SerializerInfo, ok bool) + + // SupportedStreamingMediaTypes returns the media types of the supported streaming serializers. + // Streaming serializers control how multiple objects are written to a stream output. + SupportedStreamingMediaTypes() []string + // StreamingSerializerForMediaType returns a serializer for the provided media type that supports + // reading and writing multiple objects to a stream. It returns a framer and serializer, or an + // error if no such serializer can be created. Params is the set of parameters applied to the + // media type that may modify the resulting output. ok will be false if no serializer matched + // the media type. + StreamingSerializerForMediaType(mediaType string, params map[string]string) (s StreamSerializerInfo, ok bool) + + // EncoderForVersion returns an encoder that ensures objects being written to the provided + // serializer are in the provided group version. + EncoderForVersion(serializer Encoder, gv GroupVersioner) Encoder + // DecoderForVersion returns a decoder that ensures objects being read by the provided + // serializer are in the provided group version by default. + DecoderToVersion(serializer Decoder, gv GroupVersioner) Decoder +} + +// StorageSerializer is an interface used for obtaining encoders, decoders, and serializers +// that can read and write data at rest. This would commonly be used by client tools that must +// read files, or server side storage interfaces that persist restful objects. +type StorageSerializer interface { + // SerializerForMediaType returns a serializer for the provided media type. Options is a set of + // parameters applied to the media type that may modify the resulting output. + SerializerForMediaType(mediaType string, options map[string]string) (SerializerInfo, bool) + + // UniversalDeserializer returns a Serializer that can read objects in multiple supported formats + // by introspecting the data at rest. + UniversalDeserializer() Decoder + + // EncoderForVersion returns an encoder that ensures objects being written to the provided + // serializer are in the provided group version. + EncoderForVersion(serializer Encoder, gv GroupVersioner) Encoder + // DecoderForVersion returns a decoder that ensures objects being read by the provided + // serializer are in the provided group version by default. + DecoderToVersion(serializer Decoder, gv GroupVersioner) Decoder +} + +// NestedObjectEncoder is an optional interface that objects may implement to be given +// an opportunity to encode any nested Objects / RawExtensions during serialization. +type NestedObjectEncoder interface { + EncodeNestedObjects(e Encoder) error +} + +// NestedObjectDecoder is an optional interface that objects may implement to be given +// an opportunity to decode any nested Objects / RawExtensions during serialization. +type NestedObjectDecoder interface { + DecodeNestedObjects(d Decoder) error +} + +/////////////////////////////////////////////////////////////////////////////// +// Non-codec interfaces + +type ObjectVersioner interface { + ConvertToVersion(in Object, gv GroupVersioner) (out Object, err error) +} + +// ObjectConvertor converts an object to a different version. +type ObjectConvertor interface { + // Convert attempts to convert one object into another, or returns an error. This method does + // not guarantee the in object is not mutated. The context argument will be passed to + // all nested conversions. + Convert(in, out, context interface{}) error + // ConvertToVersion takes the provided object and converts it the provided version. This + // method does not guarantee that the in object is not mutated. This method is similar to + // Convert() but handles specific details of choosing the correct output version. + ConvertToVersion(in Object, gv GroupVersioner) (out Object, err error) + ConvertFieldLabel(version, kind, label, value string) (string, string, error) +} + +// ObjectTyper contains methods for extracting the APIVersion and Kind +// of objects. +type ObjectTyper interface { + // ObjectKinds returns the all possible group,version,kind of the provided object, true if + // the object is unversioned, or an error if the object is not recognized + // (IsNotRegisteredError will return true). + ObjectKinds(Object) ([]unversioned.GroupVersionKind, bool, error) + // Recognizes returns true if the scheme is able to handle the provided version and kind, + // or more precisely that the provided version is a possible conversion or decoding + // target. + Recognizes(gvk unversioned.GroupVersionKind) bool +} + +// ObjectCreater contains methods for instantiating an object by kind and version. +type ObjectCreater interface { + New(kind unversioned.GroupVersionKind) (out Object, err error) +} + +// ObjectCopier duplicates an object. +type ObjectCopier interface { + // Copy returns an exact copy of the provided Object, or an error if the + // copy could not be completed. + Copy(Object) (Object, error) +} + +// ResourceVersioner provides methods for setting and retrieving +// the resource version from an API object. +type ResourceVersioner interface { + SetResourceVersion(obj Object, version string) error + ResourceVersion(obj Object) (string, error) +} + +// SelfLinker provides methods for setting and retrieving the SelfLink field of an API object. +type SelfLinker interface { + SetSelfLink(obj Object, selfLink string) error + SelfLink(obj Object) (string, error) + + // Knowing Name is sometimes necessary to use a SelfLinker. + Name(obj Object) (string, error) + // Knowing Namespace is sometimes necessary to use a SelfLinker + Namespace(obj Object) (string, error) +} + +// All API types registered with Scheme must support the Object interface. Since objects in a scheme are +// expected to be serialized to the wire, the interface an Object must provide to the Scheme allows +// serializers to set the kind, version, and group the object is represented as. An Object may choose +// to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. +type Object interface { + GetObjectKind() unversioned.ObjectKind +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/register.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/register.go new file mode 100644 index 0000000000..7515b795e4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/register.go @@ -0,0 +1,66 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} + +// GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta +func (obj *TypeMeta) GroupVersionKind() unversioned.GroupVersionKind { + return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} + +func (obj *Unknown) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } + +func (obj *Unstructured) GetObjectKind() unversioned.ObjectKind { return obj } +func (obj *UnstructuredList) GetObjectKind() unversioned.ObjectKind { return obj } + +// GetObjectKind implements Object for VersionedObjects, returning an empty ObjectKind +// interface if no objects are provided, or the ObjectKind interface of the object in the +// highest array position. +func (obj *VersionedObjects) GetObjectKind() unversioned.ObjectKind { + last := obj.Last() + if last == nil { + return unversioned.EmptyObjectKind + } + return last.GetObjectKind() +} + +// First returns the leftmost object in the VersionedObjects array, which is usually the +// object as serialized on the wire. +func (obj *VersionedObjects) First() Object { + if len(obj.Objects) == 0 { + return nil + } + return obj.Objects[0] +} + +// Last is the rightmost object in the VersionedObjects array, which is the object after +// all transformations have been applied. This is the same object that would be returned +// by Decode in a normal invocation (without VersionedObjects in the into argument). +func (obj *VersionedObjects) Last() Object { + if len(obj.Objects) == 0 { + return nil + } + return obj.Objects[len(obj.Objects)-1] +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme.go new file mode 100644 index 0000000000..51eb10a8f1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme.go @@ -0,0 +1,570 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "net/url" + "reflect" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" +) + +// Scheme defines methods for serializing and deserializing API objects, a type +// registry for converting group, version, and kind information to and from Go +// schemas, and mappings between Go schemas of different versions. A scheme is the +// foundation for a versioned API and versioned configuration over time. +// +// In a Scheme, a Type is a particular Go struct, a Version is a point-in-time +// identifier for a particular representation of that Type (typically backwards +// compatible), a Kind is the unique name for that Type within the Version, and a +// Group identifies a set of Versions, Kinds, and Types that evolve over time. An +// Unversioned Type is one that is not yet formally bound to a type and is promised +// to be backwards compatible (effectively a "v1" of a Type that does not expect +// to break in the future). +// +// Schemes are not expected to change at runtime and are only threadsafe after +// registration is complete. +type Scheme struct { + // versionMap allows one to figure out the go type of an object with + // the given version and name. + gvkToType map[unversioned.GroupVersionKind]reflect.Type + + // typeToGroupVersion allows one to find metadata for a given go object. + // The reflect.Type we index by should *not* be a pointer. + typeToGVK map[reflect.Type][]unversioned.GroupVersionKind + + // unversionedTypes are transformed without conversion in ConvertToVersion. + unversionedTypes map[reflect.Type]unversioned.GroupVersionKind + + // unversionedKinds are the names of kinds that can be created in the context of any group + // or version + // TODO: resolve the status of unversioned types. + unversionedKinds map[string]reflect.Type + + // Map from version and resource to the corresponding func to convert + // resource field labels in that version to internal version. + fieldLabelConversionFuncs map[string]map[string]FieldLabelConversionFunc + + // converter stores all registered conversion functions. It also has + // default coverting behavior. + converter *conversion.Converter + + // cloner stores all registered copy functions. It also has default + // deep copy behavior. + cloner *conversion.Cloner +} + +// Function to convert a field selector to internal representation. +type FieldLabelConversionFunc func(label, value string) (internalLabel, internalValue string, err error) + +// NewScheme creates a new Scheme. This scheme is pluggable by default. +func NewScheme() *Scheme { + s := &Scheme{ + gvkToType: map[unversioned.GroupVersionKind]reflect.Type{}, + typeToGVK: map[reflect.Type][]unversioned.GroupVersionKind{}, + unversionedTypes: map[reflect.Type]unversioned.GroupVersionKind{}, + unversionedKinds: map[string]reflect.Type{}, + cloner: conversion.NewCloner(), + fieldLabelConversionFuncs: map[string]map[string]FieldLabelConversionFunc{}, + } + s.converter = conversion.NewConverter(s.nameFunc) + + s.AddConversionFuncs(DefaultEmbeddedConversions()...) + + // Enable map[string][]string conversions by default + if err := s.AddConversionFuncs(DefaultStringConversions...); err != nil { + panic(err) + } + if err := s.RegisterInputDefaults(&map[string][]string{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { + panic(err) + } + if err := s.RegisterInputDefaults(&url.Values{}, JSONKeyMapper, conversion.AllowDifferentFieldTypeNames|conversion.IgnoreMissingFields); err != nil { + panic(err) + } + return s +} + +// nameFunc returns the name of the type that we wish to use to determine when two types attempt +// a conversion. Defaults to the go name of the type if the type is not registered. +func (s *Scheme) nameFunc(t reflect.Type) string { + // find the preferred names for this type + gvks, ok := s.typeToGVK[t] + if !ok { + return t.Name() + } + + for _, gvk := range gvks { + internalGV := gvk.GroupVersion() + internalGV.Version = "__internal" // this is hacky and maybe should be passed in + internalGVK := internalGV.WithKind(gvk.Kind) + + if internalType, exists := s.gvkToType[internalGVK]; exists { + return s.typeToGVK[internalType][0].Kind + } + } + + return gvks[0].Kind +} + +// fromScope gets the input version, desired output version, and desired Scheme +// from a conversion.Scope. +func (s *Scheme) fromScope(scope conversion.Scope) *Scheme { + return s +} + +// Converter allows access to the converter for the scheme +func (s *Scheme) Converter() *conversion.Converter { + return s.converter +} + +// AddUnversionedTypes registers the provided types as "unversioned", which means that they follow special rules. +// Whenever an object of this type is serialized, it is serialized with the provided group version and is not +// converted. Thus unversioned objects are expected to remain backwards compatible forever, as if they were in an +// API group and version that would never be updated. +// +// TODO: there is discussion about removing unversioned and replacing it with objects that are manifest into +// every version with particular schemas. Resolve this method at that point. +func (s *Scheme) AddUnversionedTypes(version unversioned.GroupVersion, types ...Object) { + s.AddKnownTypes(version, types...) + for _, obj := range types { + t := reflect.TypeOf(obj).Elem() + gvk := version.WithKind(t.Name()) + s.unversionedTypes[t] = gvk + if _, ok := s.unversionedKinds[gvk.Kind]; ok { + panic(fmt.Sprintf("%v has already been registered as unversioned kind %q - kind name must be unique", reflect.TypeOf(t), gvk.Kind)) + } + s.unversionedKinds[gvk.Kind] = t + } +} + +// AddKnownTypes registers all types passed in 'types' as being members of version 'version'. +// All objects passed to types should be pointers to structs. The name that go reports for +// the struct becomes the "kind" field when encoding. Version may not be empty - use the +// APIVersionInternal constant if you have a type that does not have a formal version. +func (s *Scheme) AddKnownTypes(gv unversioned.GroupVersion, types ...Object) { + if len(gv.Version) == 0 { + panic(fmt.Sprintf("version is required on all types: %s %v", gv, types[0])) + } + for _, obj := range types { + t := reflect.TypeOf(obj) + if t.Kind() != reflect.Ptr { + panic("All types must be pointers to structs.") + } + t = t.Elem() + if t.Kind() != reflect.Struct { + panic("All types must be pointers to structs.") + } + + gvk := gv.WithKind(t.Name()) + s.gvkToType[gvk] = t + s.typeToGVK[t] = append(s.typeToGVK[t], gvk) + } +} + +// AddKnownTypeWithName is like AddKnownTypes, but it lets you specify what this type should +// be encoded as. Useful for testing when you don't want to make multiple packages to define +// your structs. Version may not be empty - use the APIVersionInternal constant if you have a +// type that does not have a formal version. +func (s *Scheme) AddKnownTypeWithName(gvk unversioned.GroupVersionKind, obj Object) { + t := reflect.TypeOf(obj) + if len(gvk.Version) == 0 { + panic(fmt.Sprintf("version is required on all types: %s %v", gvk, t)) + } + if t.Kind() != reflect.Ptr { + panic("All types must be pointers to structs.") + } + t = t.Elem() + if t.Kind() != reflect.Struct { + panic("All types must be pointers to structs.") + } + + s.gvkToType[gvk] = t + s.typeToGVK[t] = append(s.typeToGVK[t], gvk) +} + +// KnownTypes returns the types known for the given version. +func (s *Scheme) KnownTypes(gv unversioned.GroupVersion) map[string]reflect.Type { + types := make(map[string]reflect.Type) + for gvk, t := range s.gvkToType { + if gv != gvk.GroupVersion() { + continue + } + + types[gvk.Kind] = t + } + return types +} + +// AllKnownTypes returns the all known types. +func (s *Scheme) AllKnownTypes() map[unversioned.GroupVersionKind]reflect.Type { + return s.gvkToType +} + +// ObjectKind returns the group,version,kind of the go object and true if this object +// is considered unversioned, or an error if it's not a pointer or is unregistered. +func (s *Scheme) ObjectKind(obj Object) (unversioned.GroupVersionKind, bool, error) { + gvks, unversionedType, err := s.ObjectKinds(obj) + if err != nil { + return unversioned.GroupVersionKind{}, false, err + } + return gvks[0], unversionedType, nil +} + +// ObjectKinds returns all possible group,version,kind of the go object, true if the +// object is considered unversioned, or an error if it's not a pointer or is unregistered. +func (s *Scheme) ObjectKinds(obj Object) ([]unversioned.GroupVersionKind, bool, error) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return nil, false, err + } + t := v.Type() + + gvks, ok := s.typeToGVK[t] + if !ok { + return nil, false, NewNotRegisteredErr(unversioned.GroupVersionKind{}, t) + } + _, unversionedType := s.unversionedTypes[t] + + return gvks, unversionedType, nil +} + +// Recognizes returns true if the scheme is able to handle the provided group,version,kind +// of an object. +func (s *Scheme) Recognizes(gvk unversioned.GroupVersionKind) bool { + _, exists := s.gvkToType[gvk] + return exists +} + +func (s *Scheme) IsUnversioned(obj Object) (bool, bool) { + v, err := conversion.EnforcePtr(obj) + if err != nil { + return false, false + } + t := v.Type() + + if _, ok := s.typeToGVK[t]; !ok { + return false, false + } + _, ok := s.unversionedTypes[t] + return ok, true +} + +// New returns a new API object of the given version and name, or an error if it hasn't +// been registered. The version and kind fields must be specified. +func (s *Scheme) New(kind unversioned.GroupVersionKind) (Object, error) { + if t, exists := s.gvkToType[kind]; exists { + return reflect.New(t).Interface().(Object), nil + } + + if t, exists := s.unversionedKinds[kind.Kind]; exists { + return reflect.New(t).Interface().(Object), nil + } + return nil, NewNotRegisteredErr(kind, nil) +} + +// AddGenericConversionFunc adds a function that accepts the ConversionFunc call pattern +// (for two conversion types) to the converter. These functions are checked first during +// a normal conversion, but are otherwise not called. Use AddConversionFuncs when registering +// typed conversions. +func (s *Scheme) AddGenericConversionFunc(fn conversion.GenericConversionFunc) { + s.converter.AddGenericConversionFunc(fn) +} + +// Log sets a logger on the scheme. For test purposes only +func (s *Scheme) Log(l conversion.DebugLogger) { + s.converter.Debug = l +} + +// AddIgnoredConversionType identifies a pair of types that should be skipped by +// conversion (because the data inside them is explicitly dropped during +// conversion). +func (s *Scheme) AddIgnoredConversionType(from, to interface{}) error { + return s.converter.RegisterIgnoredConversion(from, to) +} + +// AddConversionFuncs adds functions to the list of conversion functions. The given +// functions should know how to convert between two of your API objects, or their +// sub-objects. We deduce how to call these functions from the types of their two +// parameters; see the comment for Converter.Register. +// +// Note that, if you need to copy sub-objects that didn't change, you can use the +// conversion.Scope object that will be passed to your conversion function. +// Additionally, all conversions started by Scheme will set the SrcVersion and +// DestVersion fields on the Meta object. Example: +// +// s.AddConversionFuncs( +// func(in *InternalObject, out *ExternalObject, scope conversion.Scope) error { +// // You can depend on Meta() being non-nil, and this being set to +// // the source version, e.g., "" +// s.Meta().SrcVersion +// // You can depend on this being set to the destination version, +// // e.g., "v1". +// s.Meta().DestVersion +// // Call scope.Convert to copy sub-fields. +// s.Convert(&in.SubFieldThatMoved, &out.NewLocation.NewName, 0) +// return nil +// }, +// ) +// +// (For more detail about conversion functions, see Converter.Register's comment.) +// +// Also note that the default behavior, if you don't add a conversion function, is to +// sanely copy fields that have the same names and same type names. It's OK if the +// destination type has extra fields, but it must not remove any. So you only need to +// add conversion functions for things with changed/removed fields. +func (s *Scheme) AddConversionFuncs(conversionFuncs ...interface{}) error { + for _, f := range conversionFuncs { + if err := s.converter.RegisterConversionFunc(f); err != nil { + return err + } + } + return nil +} + +// Similar to AddConversionFuncs, but registers conversion functions that were +// automatically generated. +func (s *Scheme) AddGeneratedConversionFuncs(conversionFuncs ...interface{}) error { + for _, f := range conversionFuncs { + if err := s.converter.RegisterGeneratedConversionFunc(f); err != nil { + return err + } + } + return nil +} + +// AddDeepCopyFuncs adds a function to the list of deep-copy functions. +// For the expected format of deep-copy function, see the comment for +// Copier.RegisterDeepCopyFunction. +func (s *Scheme) AddDeepCopyFuncs(deepCopyFuncs ...interface{}) error { + for _, f := range deepCopyFuncs { + if err := s.cloner.RegisterDeepCopyFunc(f); err != nil { + return err + } + } + return nil +} + +// Similar to AddDeepCopyFuncs, but registers deep-copy functions that were +// automatically generated. +func (s *Scheme) AddGeneratedDeepCopyFuncs(deepCopyFuncs ...conversion.GeneratedDeepCopyFunc) error { + for _, fn := range deepCopyFuncs { + if err := s.cloner.RegisterGeneratedDeepCopyFunc(fn); err != nil { + return err + } + } + return nil +} + +// AddFieldLabelConversionFunc adds a conversion function to convert field selectors +// of the given kind from the given version to internal version representation. +func (s *Scheme) AddFieldLabelConversionFunc(version, kind string, conversionFunc FieldLabelConversionFunc) error { + if s.fieldLabelConversionFuncs[version] == nil { + s.fieldLabelConversionFuncs[version] = map[string]FieldLabelConversionFunc{} + } + + s.fieldLabelConversionFuncs[version][kind] = conversionFunc + return nil +} + +// AddStructFieldConversion allows you to specify a mechanical copy for a moved +// or renamed struct field without writing an entire conversion function. See +// the comment in conversion.Converter.SetStructFieldCopy for parameter details. +// Call as many times as needed, even on the same fields. +func (s *Scheme) AddStructFieldConversion(srcFieldType interface{}, srcFieldName string, destFieldType interface{}, destFieldName string) error { + return s.converter.SetStructFieldCopy(srcFieldType, srcFieldName, destFieldType, destFieldName) +} + +// RegisterInputDefaults sets the provided field mapping function and field matching +// as the defaults for the provided input type. The fn may be nil, in which case no +// mapping will happen by default. Use this method to register a mechanism for handling +// a specific input type in conversion, such as a map[string]string to structs. +func (s *Scheme) RegisterInputDefaults(in interface{}, fn conversion.FieldMappingFunc, defaultFlags conversion.FieldMatchingFlags) error { + return s.converter.RegisterInputDefaults(in, fn, defaultFlags) +} + +// AddDefaultingFuncs adds functions to the list of default-value functions. +// Each of the given functions is responsible for applying default values +// when converting an instance of a versioned API object into an internal +// API object. These functions do not need to handle sub-objects. We deduce +// how to call these functions from the types of their two parameters. +// +// s.AddDefaultingFuncs( +// func(obj *v1.Pod) { +// if obj.OptionalField == "" { +// obj.OptionalField = "DefaultValue" +// } +// }, +// ) +func (s *Scheme) AddDefaultingFuncs(defaultingFuncs ...interface{}) error { + for _, f := range defaultingFuncs { + err := s.converter.RegisterDefaultingFunc(f) + if err != nil { + return err + } + } + return nil +} + +// Copy does a deep copy of an API object. +func (s *Scheme) Copy(src Object) (Object, error) { + dst, err := s.DeepCopy(src) + if err != nil { + return nil, err + } + return dst.(Object), nil +} + +// Performs a deep copy of the given object. +func (s *Scheme) DeepCopy(src interface{}) (interface{}, error) { + return s.cloner.DeepCopy(src) +} + +// Convert will attempt to convert in into out. Both must be pointers. For easy +// testing of conversion functions. Returns an error if the conversion isn't +// possible. You can call this with types that haven't been registered (for example, +// a to test conversion of types that are nested within registered types). The +// context interface is passed to the convertor. +// TODO: identify whether context should be hidden, or behind a formal context/scope +// interface +func (s *Scheme) Convert(in, out interface{}, context interface{}) error { + flags, meta := s.generateConvertMeta(in) + meta.Context = context + if flags == 0 { + flags = conversion.AllowDifferentFieldTypeNames + } + return s.converter.Convert(in, out, flags, meta) +} + +// Converts the given field label and value for an kind field selector from +// versioned representation to an unversioned one. +func (s *Scheme) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + if s.fieldLabelConversionFuncs[version] == nil { + return "", "", fmt.Errorf("No field label conversion function found for version: %s", version) + } + conversionFunc, ok := s.fieldLabelConversionFuncs[version][kind] + if !ok { + return "", "", fmt.Errorf("No field label conversion function found for version %s and kind %s", version, kind) + } + return conversionFunc(label, value) +} + +// ConvertToVersion attempts to convert an input object to its matching Kind in another +// version within this scheme. Will return an error if the provided version does not +// contain the inKind (or a mapping by name defined with AddKnownTypeWithName). Will also +// return an error if the conversion does not result in a valid Object being +// returned. Passes target down to the conversion methods as the Context on the scope. +func (s *Scheme) ConvertToVersion(in Object, target GroupVersioner) (Object, error) { + return s.convertToVersion(true, in, target) +} + +// UnsafeConvertToVersion will convert in to the provided target if such a conversion is possible, +// but does not guarantee the output object does not share fields with the input object. It attempts to be as +// efficient as possible when doing conversion. +func (s *Scheme) UnsafeConvertToVersion(in Object, target GroupVersioner) (Object, error) { + return s.convertToVersion(false, in, target) +} + +// convertToVersion handles conversion with an optional copy. +func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) (Object, error) { + // determine the incoming kinds with as few allocations as possible. + t := reflect.TypeOf(in) + if t.Kind() != reflect.Ptr { + return nil, fmt.Errorf("only pointer types may be converted: %v", t) + } + t = t.Elem() + if t.Kind() != reflect.Struct { + return nil, fmt.Errorf("only pointers to struct types may be converted: %v", t) + } + kinds, ok := s.typeToGVK[t] + if !ok || len(kinds) == 0 { + return nil, NewNotRegisteredErr(unversioned.GroupVersionKind{}, t) + } + + gvk, ok := target.KindForGroupVersionKinds(kinds) + if !ok { + // TODO: should this be a typed error? + return nil, fmt.Errorf("%v is not suitable for converting to %q", t, target) + } + + // target wants to use the existing type, set kind and return (no conversion necessary) + for _, kind := range kinds { + if gvk == kind { + return copyAndSetTargetKind(copy, s, in, gvk) + } + } + + // type is unversioned, no conversion necessary + if unversionedKind, ok := s.unversionedTypes[t]; ok { + if gvk, ok := target.KindForGroupVersionKinds([]unversioned.GroupVersionKind{unversionedKind}); ok { + return copyAndSetTargetKind(copy, s, in, gvk) + } + return copyAndSetTargetKind(copy, s, in, unversionedKind) + } + + out, err := s.New(gvk) + if err != nil { + return nil, err + } + + if copy { + copied, err := s.Copy(in) + if err != nil { + return nil, err + } + in = copied + } + + flags, meta := s.generateConvertMeta(in) + meta.Context = target + if err := s.converter.Convert(in, out, flags, meta); err != nil { + return nil, err + } + + setTargetKind(out, gvk) + return out, nil +} + +// generateConvertMeta constructs the meta value we pass to Convert. +func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFlags, *conversion.Meta) { + return s.converter.DefaultMeta(reflect.TypeOf(in)) +} + +// copyAndSetTargetKind performs a conditional copy before returning the object, or an error if copy was not successful. +func copyAndSetTargetKind(copy bool, copier ObjectCopier, obj Object, kind unversioned.GroupVersionKind) (Object, error) { + if copy { + copied, err := copier.Copy(obj) + if err != nil { + return nil, err + } + obj = copied + } + setTargetKind(obj, kind) + return obj, nil +} + +// setTargetKind sets the kind on an object, taking into account whether the target kind is the internal version. +func setTargetKind(obj Object, kind unversioned.GroupVersionKind) { + if kind.Version == APIVersionInternal { + // internal is a special case + // TODO: look at removing the need to special case this + obj.GetObjectKind().SetGroupVersionKind(unversioned.GroupVersionKind{}) + return + } + obj.GetObjectKind().SetGroupVersionKind(kind) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme_builder.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme_builder.go new file mode 100644 index 0000000000..944db48182 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/scheme_builder.go @@ -0,0 +1,48 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +// SchemeBuilder collects functions that add things to a scheme. It's to allow +// code to compile without explicitly referencing generated types. You should +// declare one in each package that will have generated deep copy or conversion +// functions. +type SchemeBuilder []func(*Scheme) error + +// AddToScheme applies all the stored functions to the scheme. A non-nil error +// indicates that one function failed and the attempt was abandoned. +func (sb *SchemeBuilder) AddToScheme(s *Scheme) error { + for _, f := range *sb { + if err := f(s); err != nil { + return err + } + } + return nil +} + +// Register adds a scheme setup function to the list. +func (sb *SchemeBuilder) Register(funcs ...func(*Scheme) error) { + for _, f := range funcs { + *sb = append(*sb, f) + } +} + +// NewSchemeBuilder calls Register for you. +func NewSchemeBuilder(funcs ...func(*Scheme) error) SchemeBuilder { + var sb SchemeBuilder + sb.Register(funcs...) + return sb +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/codec_factory.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/codec_factory.go new file mode 100644 index 0000000000..6d0c9f0464 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/codec_factory.go @@ -0,0 +1,348 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/json" + "k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer" + "k8s.io/client-go/1.5/pkg/runtime/serializer/versioning" +) + +// serializerExtensions are for serializers that are conditionally compiled in +var serializerExtensions = []func(*runtime.Scheme) (serializerType, bool){} + +type serializerType struct { + AcceptContentTypes []string + ContentType string + FileExtensions []string + // EncodesAsText should be true if this content type can be represented safely in UTF-8 + EncodesAsText bool + + Serializer runtime.Serializer + PrettySerializer runtime.Serializer + // RawSerializer serializes an object without adding a type wrapper. Some serializers, like JSON + // automatically include identifying type information with the JSON. Others, like Protobuf, need + // a wrapper object that includes type information. This serializer should be set if the serializer + // can serialize / deserialize objects without type info. Note that this serializer will always + // be expected to pass into or a gvk to Decode, since no type information will be available on + // the object itself. + RawSerializer runtime.Serializer + // Specialize gives the type the opportunity to return a different serializer implementation if + // the content type contains alternate operations. Here it is used to implement "pretty" as an + // option to application/json, but could also be used to allow serializers to perform type + // defaulting or alter output. + Specialize func(map[string]string) (runtime.Serializer, bool) + + AcceptStreamContentTypes []string + StreamContentType string + + Framer runtime.Framer + StreamSerializer runtime.Serializer + StreamSpecialize func(map[string]string) (runtime.Serializer, bool) +} + +func newSerializersForScheme(scheme *runtime.Scheme, mf json.MetaFactory) []serializerType { + jsonSerializer := json.NewSerializer(mf, scheme, scheme, false) + jsonPrettySerializer := json.NewSerializer(mf, scheme, scheme, true) + yamlSerializer := json.NewYAMLSerializer(mf, scheme, scheme) + + serializers := []serializerType{ + { + AcceptContentTypes: []string{"application/json"}, + ContentType: "application/json", + FileExtensions: []string{"json"}, + EncodesAsText: true, + Serializer: jsonSerializer, + PrettySerializer: jsonPrettySerializer, + + AcceptStreamContentTypes: []string{"application/json", "application/json;stream=watch"}, + StreamContentType: "application/json", + Framer: json.Framer, + StreamSerializer: jsonSerializer, + }, + { + AcceptContentTypes: []string{"application/yaml"}, + ContentType: "application/yaml", + FileExtensions: []string{"yaml"}, + EncodesAsText: true, + Serializer: yamlSerializer, + + // TODO: requires runtime.RawExtension to properly distinguish when the nested content is + // yaml, because the yaml encoder invokes MarshalJSON first + //AcceptStreamContentTypes: []string{"application/yaml", "application/yaml;stream=watch"}, + //StreamContentType: "application/yaml;stream=watch", + //Framer: json.YAMLFramer, + //StreamSerializer: yamlSerializer, + }, + } + + for _, fn := range serializerExtensions { + if serializer, ok := fn(scheme); ok { + serializers = append(serializers, serializer) + } + } + return serializers +} + +// CodecFactory provides methods for retrieving codecs and serializers for specific +// versions and content types. +type CodecFactory struct { + scheme *runtime.Scheme + serializers []serializerType + universal runtime.Decoder + accepts []string + streamingAccepts []string + + legacySerializer runtime.Serializer +} + +// NewCodecFactory provides methods for retrieving serializers for the supported wire formats +// and conversion wrappers to define preferred internal and external versions. In the future, +// as the internal version is used less, callers may instead use a defaulting serializer and +// only convert objects which are shared internally (Status, common API machinery). +// TODO: allow other codecs to be compiled in? +// TODO: accept a scheme interface +func NewCodecFactory(scheme *runtime.Scheme) CodecFactory { + serializers := newSerializersForScheme(scheme, json.DefaultMetaFactory) + return newCodecFactory(scheme, serializers) +} + +// newCodecFactory is a helper for testing that allows a different metafactory to be specified. +func newCodecFactory(scheme *runtime.Scheme, serializers []serializerType) CodecFactory { + decoders := make([]runtime.Decoder, 0, len(serializers)) + accepts := []string{} + alreadyAccepted := make(map[string]struct{}) + + var legacySerializer runtime.Serializer + for _, d := range serializers { + decoders = append(decoders, d.Serializer) + for _, mediaType := range d.AcceptContentTypes { + if _, ok := alreadyAccepted[mediaType]; ok { + continue + } + alreadyAccepted[mediaType] = struct{}{} + accepts = append(accepts, mediaType) + if mediaType == "application/json" { + legacySerializer = d.Serializer + } + } + } + if legacySerializer == nil { + legacySerializer = serializers[0].Serializer + } + + streamAccepts := []string{} + alreadyAccepted = make(map[string]struct{}) + for _, d := range serializers { + if len(d.StreamContentType) == 0 { + continue + } + for _, mediaType := range d.AcceptStreamContentTypes { + if _, ok := alreadyAccepted[mediaType]; ok { + continue + } + alreadyAccepted[mediaType] = struct{}{} + streamAccepts = append(streamAccepts, mediaType) + } + } + + return CodecFactory{ + scheme: scheme, + serializers: serializers, + universal: recognizer.NewDecoder(decoders...), + + accepts: accepts, + streamingAccepts: streamAccepts, + + legacySerializer: legacySerializer, + } +} + +var _ runtime.NegotiatedSerializer = &CodecFactory{} + +// SupportedMediaTypes returns the RFC2046 media types that this factory has serializers for. +func (f CodecFactory) SupportedMediaTypes() []string { + return f.accepts +} + +// SupportedStreamingMediaTypes returns the RFC2046 media types that this factory has stream serializers for. +func (f CodecFactory) SupportedStreamingMediaTypes() []string { + return f.streamingAccepts +} + +// LegacyCodec encodes output to a given API versions, and decodes output into the internal form from +// any recognized source. The returned codec will always encode output to JSON. If a type is not +// found in the list of versions an error will be returned. +// +// This method is deprecated - clients and servers should negotiate a serializer by mime-type and +// invoke CodecForVersions. Callers that need only to read data should use UniversalDecoder(). +// +// TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. +// All other callers will be forced to request a Codec directly. +func (f CodecFactory) LegacyCodec(version ...unversioned.GroupVersion) runtime.Codec { + return versioning.NewCodecForScheme(f.scheme, f.legacySerializer, f.universal, unversioned.GroupVersions(version), runtime.InternalGroupVersioner) +} + +// UniversalDeserializer can convert any stored data recognized by this factory into a Go object that satisfies +// runtime.Object. It does not perform conversion. It does not perform defaulting. +func (f CodecFactory) UniversalDeserializer() runtime.Decoder { + return f.universal +} + +// UniversalDecoder returns a runtime.Decoder capable of decoding all known API objects in all known formats. Used +// by clients that do not need to encode objects but want to deserialize API objects stored on disk. Only decodes +// objects in groups registered with the scheme. The GroupVersions passed may be used to select alternate +// versions of objects to return - by default, runtime.APIVersionInternal is used. If any versions are specified, +// unrecognized groups will be returned in the version they are encoded as (no conversion). This decoder performs +// defaulting. +// +// TODO: the decoder will eventually be removed in favor of dealing with objects in their versioned form +// TODO: only accept a group versioner +func (f CodecFactory) UniversalDecoder(versions ...unversioned.GroupVersion) runtime.Decoder { + var versioner runtime.GroupVersioner + if len(versions) == 0 { + versioner = runtime.InternalGroupVersioner + } else { + versioner = unversioned.GroupVersions(versions) + } + return f.CodecForVersions(nil, f.universal, nil, versioner) +} + +// CodecForVersions creates a codec with the provided serializer. If an object is decoded and its group is not in the list, +// it will default to runtime.APIVersionInternal. If encode is not specified for an object's group, the object is not +// converted. If encode or decode are nil, no conversion is performed. +func (f CodecFactory) CodecForVersions(encoder runtime.Encoder, decoder runtime.Decoder, encode runtime.GroupVersioner, decode runtime.GroupVersioner) runtime.Codec { + // TODO: these are for backcompat, remove them in the future + if encode == nil { + encode = runtime.DisabledGroupVersioner + } + if decode == nil { + decode = runtime.InternalGroupVersioner + } + return versioning.NewCodecForScheme(f.scheme, encoder, decoder, encode, decode) +} + +// DecoderToVersion returns a decoder that targets the provided group version. +func (f CodecFactory) DecoderToVersion(decoder runtime.Decoder, gv runtime.GroupVersioner) runtime.Decoder { + return f.CodecForVersions(nil, decoder, nil, gv) +} + +// EncoderForVersion returns an encoder that targets the provided group version. +func (f CodecFactory) EncoderForVersion(encoder runtime.Encoder, gv runtime.GroupVersioner) runtime.Encoder { + return f.CodecForVersions(encoder, nil, gv, nil) +} + +// SerializerForMediaType returns a serializer that matches the provided RFC2046 mediaType, or false if no such +// serializer exists +func (f CodecFactory) SerializerForMediaType(mediaType string, params map[string]string) (runtime.SerializerInfo, bool) { + for _, s := range f.serializers { + for _, accepted := range s.AcceptContentTypes { + if accepted == mediaType { + // specialization abstracts variants to the content type + if s.Specialize != nil && len(params) > 0 { + serializer, ok := s.Specialize(params) + // TODO: return formatted mediaType+params + return runtime.SerializerInfo{Serializer: serializer, MediaType: s.ContentType, EncodesAsText: s.EncodesAsText}, ok + } + + // legacy support for ?pretty=1 continues, but this is more formally defined + if v, ok := params["pretty"]; ok && v == "1" && s.PrettySerializer != nil { + return runtime.SerializerInfo{Serializer: s.PrettySerializer, MediaType: s.ContentType, EncodesAsText: s.EncodesAsText}, true + } + + // return the base variant + return runtime.SerializerInfo{Serializer: s.Serializer, MediaType: s.ContentType, EncodesAsText: s.EncodesAsText}, true + } + } + } + return runtime.SerializerInfo{}, false +} + +// StreamingSerializerForMediaType returns a serializer that matches the provided RFC2046 mediaType, or false if no such +// serializer exists +func (f CodecFactory) StreamingSerializerForMediaType(mediaType string, params map[string]string) (runtime.StreamSerializerInfo, bool) { + for _, s := range f.serializers { + for _, accepted := range s.AcceptStreamContentTypes { + if accepted == mediaType { + // TODO: accept params + nested, ok := f.SerializerForMediaType(s.ContentType, nil) + if !ok { + panic("no serializer defined for internal content type") + } + + if s.StreamSpecialize != nil && len(params) > 0 { + serializer, ok := s.StreamSpecialize(params) + // TODO: return formatted mediaType+params + return runtime.StreamSerializerInfo{ + SerializerInfo: runtime.SerializerInfo{ + Serializer: serializer, + MediaType: s.StreamContentType, + EncodesAsText: s.EncodesAsText, + }, + Framer: s.Framer, + Embedded: nested, + }, ok + } + + return runtime.StreamSerializerInfo{ + SerializerInfo: runtime.SerializerInfo{ + Serializer: s.StreamSerializer, + MediaType: s.StreamContentType, + EncodesAsText: s.EncodesAsText, + }, + Framer: s.Framer, + Embedded: nested, + }, true + } + } + } + return runtime.StreamSerializerInfo{}, false +} + +// SerializerForFileExtension returns a serializer for the provided extension, or false if no serializer matches. +func (f CodecFactory) SerializerForFileExtension(extension string) (runtime.Serializer, bool) { + for _, s := range f.serializers { + for _, ext := range s.FileExtensions { + if extension == ext { + return s.Serializer, true + } + } + } + return nil, false +} + +// DirectCodecFactory provides methods for retrieving "DirectCodec"s, which do not do conversion. +type DirectCodecFactory struct { + CodecFactory +} + +// EncoderForVersion returns an encoder that does not do conversion. gv is ignored. +func (f DirectCodecFactory) EncoderForVersion(serializer runtime.Encoder, _ runtime.GroupVersioner) runtime.Encoder { + return versioning.DirectEncoder{ + Encoder: serializer, + ObjectTyper: f.CodecFactory.scheme, + } +} + +// DecoderToVersion returns an decoder that does not do conversion. gv is ignored. +func (f DirectCodecFactory) DecoderToVersion(serializer runtime.Decoder, _ runtime.GroupVersioner) runtime.Decoder { + return versioning.DirectDecoder{ + Decoder: serializer, + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/json.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/json.go new file mode 100644 index 0000000000..513f6d9691 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/json.go @@ -0,0 +1,245 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "encoding/json" + "io" + + "github.com/ghodss/yaml" + "github.com/ugorji/go/codec" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer" + "k8s.io/client-go/1.5/pkg/util/framer" + utilyaml "k8s.io/client-go/1.5/pkg/util/yaml" +) + +// NewSerializer creates a JSON serializer that handles encoding versioned objects into the proper JSON form. If typer +// is not nil, the object has the group, version, and kind fields set. +func NewSerializer(meta MetaFactory, creater runtime.ObjectCreater, typer runtime.ObjectTyper, pretty bool) *Serializer { + return &Serializer{ + meta: meta, + creater: creater, + typer: typer, + yaml: false, + pretty: pretty, + } +} + +// NewYAMLSerializer creates a YAML serializer that handles encoding versioned objects into the proper YAML form. If typer +// is not nil, the object has the group, version, and kind fields set. This serializer supports only the subset of YAML that +// matches JSON, and will error if constructs are used that do not serialize to JSON. +func NewYAMLSerializer(meta MetaFactory, creater runtime.ObjectCreater, typer runtime.ObjectTyper) *Serializer { + return &Serializer{ + meta: meta, + creater: creater, + typer: typer, + yaml: true, + } +} + +type Serializer struct { + meta MetaFactory + creater runtime.ObjectCreater + typer runtime.ObjectTyper + yaml bool + pretty bool +} + +// Serializer implements Serializer +var _ runtime.Serializer = &Serializer{} +var _ recognizer.RecognizingDecoder = &Serializer{} + +// Decode attempts to convert the provided data into YAML or JSON, extract the stored schema kind, apply the provided default gvk, and then +// load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, the raw data will be +// extracted and no decoding will be performed. If into is not registered with the typer, then the object will be straight decoded using +// normal JSON/YAML unmarshalling. If into is provided and the original data is not fully qualified with kind/version/group, the type of +// the into will be used to alter the returned gvk. On success or most errors, the method will return the calculated schema kind. +func (s *Serializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + versioned.Objects = []runtime.Object{obj} + return versioned, actual, nil + } + + data := originalData + if s.yaml { + altered, err := yaml.YAMLToJSON(data) + if err != nil { + return nil, nil, err + } + data = altered + } + + actual, err := s.meta.Interpret(data) + if err != nil { + return nil, nil, err + } + + if gvk != nil { + // apply kind and version defaulting from provided default + if len(actual.Kind) == 0 { + actual.Kind = gvk.Kind + } + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = gvk.Group + actual.Version = gvk.Version + } + if len(actual.Version) == 0 && actual.Group == gvk.Group { + actual.Version = gvk.Version + } + } + + if unk, ok := into.(*runtime.Unknown); ok && unk != nil { + unk.Raw = originalData + unk.ContentType = runtime.ContentTypeJSON + unk.GetObjectKind().SetGroupVersionKind(*actual) + return unk, actual, nil + } + + if into != nil { + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(into); err != nil { + return nil, actual, err + } + return into, actual, nil + case err != nil: + return nil, actual, err + default: + typed := types[0] + if len(actual.Kind) == 0 { + actual.Kind = typed.Kind + } + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = typed.Group + actual.Version = typed.Version + } + if len(actual.Version) == 0 && actual.Group == typed.Group { + actual.Version = typed.Version + } + } + } + + if len(actual.Kind) == 0 { + return nil, actual, runtime.NewMissingKindErr(string(originalData)) + } + if len(actual.Version) == 0 { + return nil, actual, runtime.NewMissingVersionErr(string(originalData)) + } + + // use the target if necessary + obj, err := runtime.UseOrCreateObject(s.typer, s.creater, *actual, into) + if err != nil { + return nil, actual, err + } + + if err := codec.NewDecoderBytes(data, new(codec.JsonHandle)).Decode(obj); err != nil { + return nil, actual, err + } + return obj, actual, nil +} + +// Encode serializes the provided object to the given writer. +func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { + if s.yaml { + json, err := json.Marshal(obj) + if err != nil { + return err + } + data, err := yaml.JSONToYAML(json) + if err != nil { + return err + } + _, err = w.Write(data) + return err + } + + if s.pretty { + data, err := json.MarshalIndent(obj, "", " ") + if err != nil { + return err + } + _, err = w.Write(data) + return err + } + encoder := json.NewEncoder(w) + return encoder.Encode(obj) +} + +// RecognizesData implements the RecognizingDecoder interface. +func (s *Serializer) RecognizesData(peek io.Reader) (ok, unknown bool, err error) { + if s.yaml { + // we could potentially look for '---' + return false, true, nil + } + _, ok = utilyaml.GuessJSONStream(peek, 2048) + return ok, false, nil +} + +// Framer is the default JSON framing behavior, with newlines delimiting individual objects. +var Framer = jsonFramer{} + +type jsonFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (jsonFramer) NewFrameWriter(w io.Writer) io.Writer { + // we can write JSON objects directly to the writer, because they are self-framing + return w +} + +// NewFrameReader implements stream framing for this serializer +func (jsonFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + // we need to extract the JSON chunks of data to pass to Decode() + return framer.NewJSONFramedReader(r) +} + +// Framer is the default JSON framing behavior, with newlines delimiting individual objects. +var YAMLFramer = yamlFramer{} + +type yamlFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (yamlFramer) NewFrameWriter(w io.Writer) io.Writer { + return yamlFrameWriter{w} +} + +// NewFrameReader implements stream framing for this serializer +func (yamlFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + // extract the YAML document chunks directly + return utilyaml.NewDocumentDecoder(r) +} + +type yamlFrameWriter struct { + w io.Writer +} + +// Write separates each document with the YAML document separator (`---` followed by line +// break). Writers must write well formed YAML documents (include a final line break). +func (w yamlFrameWriter) Write(data []byte) (n int, err error) { + if _, err := w.w.Write([]byte("---\n")); err != nil { + return 0, err + } + return w.w.Write(data) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/meta.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/meta.go new file mode 100644 index 0000000000..d9dacf4376 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/json/meta.go @@ -0,0 +1,61 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "encoding/json" + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// MetaFactory is used to store and retrieve the version and kind +// information for JSON objects in a serializer. +type MetaFactory interface { + // Interpret should return the version and kind of the wire-format of + // the object. + Interpret(data []byte) (*unversioned.GroupVersionKind, error) +} + +// DefaultMetaFactory is a default factory for versioning objects in JSON. The object +// in memory and in the default JSON serialization will use the "kind" and "apiVersion" +// fields. +var DefaultMetaFactory = SimpleMetaFactory{} + +// SimpleMetaFactory provides default methods for retrieving the type and version of objects +// that are identified with an "apiVersion" and "kind" fields in their JSON +// serialization. It may be parameterized with the names of the fields in memory, or an +// optional list of base structs to search for those fields in memory. +type SimpleMetaFactory struct { +} + +// Interpret will return the APIVersion and Kind of the JSON wire-format +// encoding of an object, or an error. +func (SimpleMetaFactory) Interpret(data []byte) (*unversioned.GroupVersionKind, error) { + findKind := struct { + APIVersion string `json:"apiVersion,omitempty"` + Kind string `json:"kind,omitempty"` + }{} + if err := json.Unmarshal(data, &findKind); err != nil { + return nil, fmt.Errorf("couldn't get version/kind; json parse error: %v", err) + } + gv, err := unversioned.ParseGroupVersion(findKind.APIVersion) + if err != nil { + return nil, err + } + return &unversioned.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.Kind}, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/negotiated_codec.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/negotiated_codec.go new file mode 100644 index 0000000000..6b3cf018e0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/negotiated_codec.go @@ -0,0 +1,56 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +// TODO: We should figure out what happens when someone asks +// encoder for version and it conflicts with the raw serializer. +type negotiatedSerializerWrapper struct { + info runtime.SerializerInfo + streamInfo runtime.StreamSerializerInfo +} + +func NegotiatedSerializerWrapper(info runtime.SerializerInfo, streamInfo runtime.StreamSerializerInfo) runtime.NegotiatedSerializer { + return &negotiatedSerializerWrapper{info, streamInfo} +} + +func (n *negotiatedSerializerWrapper) SupportedMediaTypes() []string { + return []string{} +} + +func (n *negotiatedSerializerWrapper) SerializerForMediaType(mediaType string, options map[string]string) (runtime.SerializerInfo, bool) { + return n.info, true +} + +func (n *negotiatedSerializerWrapper) SupportedStreamingMediaTypes() []string { + return []string{} +} + +func (n *negotiatedSerializerWrapper) StreamingSerializerForMediaType(mediaType string, options map[string]string) (runtime.StreamSerializerInfo, bool) { + return n.streamInfo, true +} + +func (n *negotiatedSerializerWrapper) EncoderForVersion(e runtime.Encoder, _ runtime.GroupVersioner) runtime.Encoder { + return e +} + +func (n *negotiatedSerializerWrapper) DecoderToVersion(d runtime.Decoder, _gv runtime.GroupVersioner) runtime.Decoder { + return d +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/doc.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/doc.go new file mode 100644 index 0000000000..381748d69f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package protobuf provides a Kubernetes serializer for the protobuf format. +package protobuf diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/protobuf.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/protobuf.go new file mode 100644 index 0000000000..b64bf62f49 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf/protobuf.go @@ -0,0 +1,448 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package protobuf + +import ( + "bytes" + "fmt" + "io" + "reflect" + + "github.com/gogo/protobuf/proto" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer" + "k8s.io/client-go/1.5/pkg/util/framer" +) + +var ( + // protoEncodingPrefix serves as a magic number for an encoded protobuf message on this serializer. All + // proto messages serialized by this schema will be preceded by the bytes 0x6b 0x38 0x73, with the fourth + // byte being reserved for the encoding style. The only encoding style defined is 0x00, which means that + // the rest of the byte stream is a message of type k8s.io.kubernetes.pkg.runtime.Unknown (proto2). + // + // See k8s.io/kubernetes/pkg/runtime/generated.proto for details of the runtime.Unknown message. + // + // This encoding scheme is experimental, and is subject to change at any time. + protoEncodingPrefix = []byte{0x6b, 0x38, 0x73, 0x00} +) + +type errNotMarshalable struct { + t reflect.Type +} + +func (e errNotMarshalable) Error() string { + return fmt.Sprintf("object %v does not implement the protobuf marshalling interface and cannot be encoded to a protobuf message", e.t) +} + +func IsNotMarshalable(err error) bool { + _, ok := err.(errNotMarshalable) + return err != nil && ok +} + +// NewSerializer creates a Protobuf serializer that handles encoding versioned objects into the proper wire form. If a typer +// is passed, the encoded object will have group, version, and kind fields set. If typer is nil, the objects will be written +// as-is (any type info passed with the object will be used). +// +// This encoding scheme is experimental, and is subject to change at any time. +func NewSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *Serializer { + return &Serializer{ + prefix: protoEncodingPrefix, + creater: creater, + typer: typer, + contentType: defaultContentType, + } +} + +type Serializer struct { + prefix []byte + creater runtime.ObjectCreater + typer runtime.ObjectTyper + contentType string +} + +var _ runtime.Serializer = &Serializer{} +var _ recognizer.RecognizingDecoder = &Serializer{} + +// Decode attempts to convert the provided data into a protobuf message, extract the stored schema kind, apply the provided default +// gvk, and then load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, +// the raw data will be extracted and no decoding will be performed. If into is not registered with the typer, then the object will +// be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is +// not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most +// errors, the method will return the calculated schema kind. +func (s *Serializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + // the last item in versioned becomes into, so if versioned was not originally empty we reset the object + // array so the first position is the decoded object and the second position is the outermost object. + // if there were no objects in the versioned list passed to us, only add ourselves. + if into != nil && into != obj { + versioned.Objects = []runtime.Object{obj, into} + } else { + versioned.Objects = []runtime.Object{obj} + } + return versioned, actual, err + } + + prefixLen := len(s.prefix) + switch { + case len(originalData) == 0: + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty data") + case len(originalData) < prefixLen || !bytes.Equal(s.prefix, originalData[:prefixLen]): + return nil, nil, fmt.Errorf("provided data does not appear to be a protobuf message, expected prefix %v", s.prefix) + case len(originalData) == prefixLen: + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty body") + } + + data := originalData[prefixLen:] + unk := runtime.Unknown{} + if err := unk.Unmarshal(data); err != nil { + return nil, nil, err + } + + actual := unk.GroupVersionKind() + copyKindDefaults(&actual, gvk) + + if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil { + *intoUnknown = unk + if ok, _, _ := s.RecognizesData(bytes.NewBuffer(unk.Raw)); ok { + intoUnknown.ContentType = s.contentType + } + return intoUnknown, &actual, nil + } + + if into != nil { + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + pb, ok := into.(proto.Message) + if !ok { + return nil, &actual, errNotMarshalable{reflect.TypeOf(into)} + } + if err := proto.Unmarshal(unk.Raw, pb); err != nil { + return nil, &actual, err + } + return into, &actual, nil + case err != nil: + return nil, &actual, err + default: + copyKindDefaults(&actual, &types[0]) + // if the result of defaulting did not set a version or group, ensure that at least group is set + // (copyKindDefaults will not assign Group if version is already set). This guarantees that the group + // of into is set if there is no better information from the caller or object. + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = types[0].Group + } + } + } + + if len(actual.Kind) == 0 { + return nil, &actual, runtime.NewMissingKindErr(fmt.Sprintf("%#v", unk.TypeMeta)) + } + if len(actual.Version) == 0 { + return nil, &actual, runtime.NewMissingVersionErr(fmt.Sprintf("%#v", unk.TypeMeta)) + } + + return unmarshalToObject(s.typer, s.creater, &actual, into, unk.Raw) +} + +// Encode serializes the provided object to the given writer. +func (s *Serializer) Encode(obj runtime.Object, w io.Writer) error { + prefixSize := uint64(len(s.prefix)) + + var unk runtime.Unknown + switch t := obj.(type) { + case *runtime.Unknown: + estimatedSize := prefixSize + uint64(t.Size()) + data := make([]byte, estimatedSize) + i, err := t.MarshalTo(data[prefixSize:]) + if err != nil { + return err + } + copy(data, s.prefix) + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + default: + kind := obj.GetObjectKind().GroupVersionKind() + unk = runtime.Unknown{ + TypeMeta: runtime.TypeMeta{ + Kind: kind.Kind, + APIVersion: kind.GroupVersion().String(), + }, + } + } + + switch t := obj.(type) { + case bufferedMarshaller: + // this path performs a single allocation during write but requires the caller to implement + // the more efficient Size and MarshalTo methods + encodedSize := uint64(t.Size()) + estimatedSize := prefixSize + estimateUnknownSize(&unk, encodedSize) + data := make([]byte, estimatedSize) + + i, err := unk.NestedMarshalTo(data[prefixSize:], t, encodedSize) + if err != nil { + return err + } + + copy(data, s.prefix) + + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + + case proto.Marshaler: + // this path performs extra allocations + data, err := t.Marshal() + if err != nil { + return err + } + unk.Raw = data + + estimatedSize := prefixSize + uint64(unk.Size()) + data = make([]byte, estimatedSize) + + i, err := unk.MarshalTo(data[prefixSize:]) + if err != nil { + return err + } + + copy(data, s.prefix) + + _, err = w.Write(data[:prefixSize+uint64(i)]) + return err + + default: + // TODO: marshal with a different content type and serializer (JSON for third party objects) + return errNotMarshalable{reflect.TypeOf(obj)} + } +} + +// RecognizesData implements the RecognizingDecoder interface. +func (s *Serializer) RecognizesData(peek io.Reader) (bool, bool, error) { + prefix := make([]byte, 4) + n, err := peek.Read(prefix) + if err != nil { + if err == io.EOF { + return false, false, nil + } + return false, false, err + } + if n != 4 { + return false, false, nil + } + return bytes.Equal(s.prefix, prefix), false, nil +} + +// copyKindDefaults defaults dst to the value in src if dst does not have a value set. +func copyKindDefaults(dst, src *unversioned.GroupVersionKind) { + if src == nil { + return + } + // apply kind and version defaulting from provided default + if len(dst.Kind) == 0 { + dst.Kind = src.Kind + } + if len(dst.Version) == 0 && len(src.Version) > 0 { + dst.Group = src.Group + dst.Version = src.Version + } +} + +// bufferedMarshaller describes a more efficient marshalling interface that can avoid allocating multiple +// byte buffers by pre-calculating the size of the final buffer needed. +type bufferedMarshaller interface { + proto.Sizer + runtime.ProtobufMarshaller +} + +// estimateUnknownSize returns the expected bytes consumed by a given runtime.Unknown +// object with a nil RawJSON struct and the expected size of the provided buffer. The +// returned size will not be correct if RawJSOn is set on unk. +func estimateUnknownSize(unk *runtime.Unknown, byteSize uint64) uint64 { + size := uint64(unk.Size()) + // protobuf uses 1 byte for the tag, a varint for the length of the array (at most 8 bytes - uint64 - here), + // and the size of the array. + size += 1 + 8 + byteSize + return size +} + +// NewRawSerializer creates a Protobuf serializer that handles encoding versioned objects into the proper wire form. If typer +// is not nil, the object has the group, version, and kind fields set. This serializer does not provide type information for the +// encoded object, and thus is not self describing (callers must know what type is being described in order to decode). +// +// This encoding scheme is experimental, and is subject to change at any time. +func NewRawSerializer(creater runtime.ObjectCreater, typer runtime.ObjectTyper, defaultContentType string) *RawSerializer { + return &RawSerializer{ + creater: creater, + typer: typer, + contentType: defaultContentType, + } +} + +// RawSerializer encodes and decodes objects without adding a runtime.Unknown wrapper (objects are encoded without identifying +// type). +type RawSerializer struct { + creater runtime.ObjectCreater + typer runtime.ObjectTyper + contentType string +} + +var _ runtime.Serializer = &RawSerializer{} + +// Decode attempts to convert the provided data into a protobuf message, extract the stored schema kind, apply the provided default +// gvk, and then load that data into an object matching the desired schema kind or the provided into. If into is *runtime.Unknown, +// the raw data will be extracted and no decoding will be performed. If into is not registered with the typer, then the object will +// be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is +// not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most +// errors, the method will return the calculated schema kind. +func (s *RawSerializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + if into == nil { + return nil, nil, fmt.Errorf("this serializer requires an object to decode into: %#v", s) + } + + if versioned, ok := into.(*runtime.VersionedObjects); ok { + into = versioned.Last() + obj, actual, err := s.Decode(originalData, gvk, into) + if err != nil { + return nil, actual, err + } + if into != nil && into != obj { + versioned.Objects = []runtime.Object{obj, into} + } else { + versioned.Objects = []runtime.Object{obj} + } + return versioned, actual, err + } + + if len(originalData) == 0 { + // TODO: treat like decoding {} from JSON with defaulting + return nil, nil, fmt.Errorf("empty data") + } + data := originalData + + actual := &unversioned.GroupVersionKind{} + copyKindDefaults(actual, gvk) + + if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil { + intoUnknown.Raw = data + intoUnknown.ContentEncoding = "" + intoUnknown.ContentType = s.contentType + intoUnknown.SetGroupVersionKind(*actual) + return intoUnknown, actual, nil + } + + types, _, err := s.typer.ObjectKinds(into) + switch { + case runtime.IsNotRegisteredError(err): + pb, ok := into.(proto.Message) + if !ok { + return nil, actual, errNotMarshalable{reflect.TypeOf(into)} + } + if err := proto.Unmarshal(data, pb); err != nil { + return nil, actual, err + } + return into, actual, nil + case err != nil: + return nil, actual, err + default: + copyKindDefaults(actual, &types[0]) + // if the result of defaulting did not set a version or group, ensure that at least group is set + // (copyKindDefaults will not assign Group if version is already set). This guarantees that the group + // of into is set if there is no better information from the caller or object. + if len(actual.Version) == 0 && len(actual.Group) == 0 { + actual.Group = types[0].Group + } + } + + if len(actual.Kind) == 0 { + return nil, actual, runtime.NewMissingKindErr("<protobuf encoded body - must provide default type>") + } + if len(actual.Version) == 0 { + return nil, actual, runtime.NewMissingVersionErr("<protobuf encoded body - must provide default type>") + } + + return unmarshalToObject(s.typer, s.creater, actual, into, data) +} + +// unmarshalToObject is the common code between decode in the raw and normal serializer. +func unmarshalToObject(typer runtime.ObjectTyper, creater runtime.ObjectCreater, actual *unversioned.GroupVersionKind, into runtime.Object, data []byte) (runtime.Object, *unversioned.GroupVersionKind, error) { + // use the target if necessary + obj, err := runtime.UseOrCreateObject(typer, creater, *actual, into) + if err != nil { + return nil, actual, err + } + + pb, ok := obj.(proto.Message) + if !ok { + return nil, actual, errNotMarshalable{reflect.TypeOf(obj)} + } + if err := proto.Unmarshal(data, pb); err != nil { + return nil, actual, err + } + return obj, actual, nil +} + +// Encode serializes the provided object to the given writer. Overrides is ignored. +func (s *RawSerializer) Encode(obj runtime.Object, w io.Writer) error { + switch t := obj.(type) { + case bufferedMarshaller: + // this path performs a single allocation during write but requires the caller to implement + // the more efficient Size and MarshalTo methods + encodedSize := uint64(t.Size()) + data := make([]byte, encodedSize) + + n, err := t.MarshalTo(data) + if err != nil { + return err + } + _, err = w.Write(data[:n]) + return err + + case proto.Marshaler: + // this path performs extra allocations + data, err := t.Marshal() + if err != nil { + return err + } + _, err = w.Write(data) + return err + + default: + return errNotMarshalable{reflect.TypeOf(obj)} + } +} + +var LengthDelimitedFramer = lengthDelimitedFramer{} + +type lengthDelimitedFramer struct{} + +// NewFrameWriter implements stream framing for this serializer +func (lengthDelimitedFramer) NewFrameWriter(w io.Writer) io.Writer { + return framer.NewLengthDelimitedFrameWriter(w) +} + +// NewFrameReader implements stream framing for this serializer +func (lengthDelimitedFramer) NewFrameReader(r io.ReadCloser) io.ReadCloser { + return framer.NewLengthDelimitedFrameReader(r) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf_extension.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf_extension.go new file mode 100644 index 0000000000..c47383b990 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf_extension.go @@ -0,0 +1,52 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package serializer + +import ( + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf" +) + +const ( + // contentTypeProtobuf is the protobuf type exposed for Kubernetes. It is private to prevent others from + // depending on it unintentionally. + // TODO: potentially move to pkg/api (since it's part of the Kube public API) and pass it in to the + // CodecFactory on initialization. + contentTypeProtobuf = "application/vnd.kubernetes.protobuf" + contentTypeProtobufWatch = contentTypeProtobuf + ";stream=watch" +) + +func protobufSerializer(scheme *runtime.Scheme) (serializerType, bool) { + serializer := protobuf.NewSerializer(scheme, scheme, contentTypeProtobuf) + raw := protobuf.NewRawSerializer(scheme, scheme, contentTypeProtobuf) + return serializerType{ + AcceptContentTypes: []string{contentTypeProtobuf}, + ContentType: contentTypeProtobuf, + FileExtensions: []string{"pb"}, + Serializer: serializer, + RawSerializer: raw, + + AcceptStreamContentTypes: []string{contentTypeProtobuf, contentTypeProtobufWatch}, + StreamContentType: contentTypeProtobufWatch, + Framer: protobuf.LengthDelimitedFramer, + StreamSerializer: raw, + }, true +} + +func init() { + serializerExtensions = append(serializerExtensions, protobufSerializer) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer/recognizer.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer/recognizer.go new file mode 100644 index 0000000000..bc29015ca3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer/recognizer.go @@ -0,0 +1,127 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package recognizer + +import ( + "bufio" + "bytes" + "fmt" + "io" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +type RecognizingDecoder interface { + runtime.Decoder + // RecognizesData should return true if the input provided in the provided reader + // belongs to this decoder, or an error if the data could not be read or is ambiguous. + // Unknown is true if the data could not be determined to match the decoder type. + // Decoders should assume that they can read as much of peek as they need (as the caller + // provides) and may return unknown if the data provided is not sufficient to make a + // a determination. When peek returns EOF that may mean the end of the input or the + // end of buffered input - recognizers should return the best guess at that time. + RecognizesData(peek io.Reader) (ok, unknown bool, err error) +} + +// NewDecoder creates a decoder that will attempt multiple decoders in an order defined +// by: +// +// 1. The decoder implements RecognizingDecoder and identifies the data +// 2. All other decoders, and any decoder that returned true for unknown. +// +// The order passed to the constructor is preserved within those priorities. +func NewDecoder(decoders ...runtime.Decoder) runtime.Decoder { + return &decoder{ + decoders: decoders, + } +} + +type decoder struct { + decoders []runtime.Decoder +} + +var _ RecognizingDecoder = &decoder{} + +func (d *decoder) RecognizesData(peek io.Reader) (bool, bool, error) { + var ( + lastErr error + anyUnknown bool + ) + data, _ := bufio.NewReaderSize(peek, 1024).Peek(1024) + for _, r := range d.decoders { + switch t := r.(type) { + case RecognizingDecoder: + ok, unknown, err := t.RecognizesData(bytes.NewBuffer(data)) + if err != nil { + lastErr = err + continue + } + anyUnknown = anyUnknown || unknown + if !ok { + continue + } + return true, false, nil + } + } + return false, anyUnknown, lastErr +} + +func (d *decoder) Decode(data []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + var ( + lastErr error + skipped []runtime.Decoder + ) + + // try recognizers, record any decoders we need to give a chance later + for _, r := range d.decoders { + switch t := r.(type) { + case RecognizingDecoder: + buf := bytes.NewBuffer(data) + ok, unknown, err := t.RecognizesData(buf) + if err != nil { + lastErr = err + continue + } + if unknown { + skipped = append(skipped, t) + continue + } + if !ok { + continue + } + return r.Decode(data, gvk, into) + default: + skipped = append(skipped, t) + } + } + + // try recognizers that returned unknown or didn't recognize their data + for _, r := range skipped { + out, actual, err := r.Decode(data, gvk, into) + if err != nil { + lastErr = err + continue + } + return out, actual, nil + } + + if lastErr == nil { + lastErr = fmt.Errorf("no serialization format matched the provided data") + } + return nil, nil, lastErr +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/streaming/streaming.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/streaming/streaming.go new file mode 100644 index 0000000000..ffdcf2e266 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/streaming/streaming.go @@ -0,0 +1,137 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package streaming implements encoder and decoder for streams +// of runtime.Objects over io.Writer/Readers. +package streaming + +import ( + "bytes" + "fmt" + "io" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Encoder is a runtime.Encoder on a stream. +type Encoder interface { + // Encode will write the provided object to the stream or return an error. It obeys the same + // contract as runtime.VersionedEncoder. + Encode(obj runtime.Object) error +} + +// Decoder is a runtime.Decoder from a stream. +type Decoder interface { + // Decode will return io.EOF when no more objects are available. + Decode(defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) + // Close closes the underlying stream. + Close() error +} + +// Serializer is a factory for creating encoders and decoders that work over streams. +type Serializer interface { + NewEncoder(w io.Writer) Encoder + NewDecoder(r io.ReadCloser) Decoder +} + +type decoder struct { + reader io.ReadCloser + decoder runtime.Decoder + buf []byte + maxBytes int + resetRead bool +} + +// NewDecoder creates a streaming decoder that reads object chunks from r and decodes them with d. +// The reader is expected to return ErrShortRead if the provided buffer is not large enough to read +// an entire object. +func NewDecoder(r io.ReadCloser, d runtime.Decoder) Decoder { + return &decoder{ + reader: r, + decoder: d, + buf: make([]byte, 1024), + maxBytes: 1024 * 1024, + } +} + +var ErrObjectTooLarge = fmt.Errorf("object to decode was longer than maximum allowed size") + +// Decode reads the next object from the stream and decodes it. +func (d *decoder) Decode(defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + base := 0 + for { + n, err := d.reader.Read(d.buf[base:]) + if err == io.ErrShortBuffer { + if n == 0 { + return nil, nil, fmt.Errorf("got short buffer with n=0, base=%d, cap=%d", base, cap(d.buf)) + } + if d.resetRead { + continue + } + // double the buffer size up to maxBytes + if len(d.buf) < d.maxBytes { + base += n + d.buf = append(d.buf, make([]byte, len(d.buf))...) + continue + } + // must read the rest of the frame (until we stop getting ErrShortBuffer) + d.resetRead = true + base = 0 + return nil, nil, ErrObjectTooLarge + } + if err != nil { + return nil, nil, err + } + if d.resetRead { + // now that we have drained the large read, continue + d.resetRead = false + continue + } + base += n + break + } + return d.decoder.Decode(d.buf[:base], defaults, into) +} + +func (d *decoder) Close() error { + return d.reader.Close() +} + +type encoder struct { + writer io.Writer + encoder runtime.Encoder + buf *bytes.Buffer +} + +// NewEncoder returns a new streaming encoder. +func NewEncoder(w io.Writer, e runtime.Encoder) Encoder { + return &encoder{ + writer: w, + encoder: e, + buf: &bytes.Buffer{}, + } +} + +// Encode writes the provided object to the nested writer. +func (e *encoder) Encode(obj runtime.Object) error { + if err := e.encoder.Encode(obj, e.buf); err != nil { + return err + } + _, err := e.writer.Write(e.buf.Bytes()) + e.buf.Reset() + return err +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/versioning/versioning.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/versioning/versioning.go new file mode 100644 index 0000000000..310d1aa91d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/serializer/versioning/versioning.go @@ -0,0 +1,222 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioning + +import ( + "io" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// NewCodecForScheme is a convenience method for callers that are using a scheme. +func NewCodecForScheme( + // TODO: I should be a scheme interface? + scheme *runtime.Scheme, + encoder runtime.Encoder, + decoder runtime.Decoder, + encodeVersion runtime.GroupVersioner, + decodeVersion runtime.GroupVersioner, +) runtime.Codec { + return NewCodec(encoder, decoder, runtime.UnsafeObjectConvertor(scheme), scheme, scheme, scheme, encodeVersion, decodeVersion) +} + +// NewCodec takes objects in their internal versions and converts them to external versions before +// serializing them. It assumes the serializer provided to it only deals with external versions. +// This class is also a serializer, but is generally used with a specific version. +func NewCodec( + encoder runtime.Encoder, + decoder runtime.Decoder, + convertor runtime.ObjectConvertor, + creater runtime.ObjectCreater, + copier runtime.ObjectCopier, + typer runtime.ObjectTyper, + encodeVersion runtime.GroupVersioner, + decodeVersion runtime.GroupVersioner, +) runtime.Codec { + internal := &codec{ + encoder: encoder, + decoder: decoder, + convertor: convertor, + creater: creater, + copier: copier, + typer: typer, + + encodeVersion: encodeVersion, + decodeVersion: decodeVersion, + } + return internal +} + +type codec struct { + encoder runtime.Encoder + decoder runtime.Decoder + convertor runtime.ObjectConvertor + creater runtime.ObjectCreater + copier runtime.ObjectCopier + typer runtime.ObjectTyper + + encodeVersion runtime.GroupVersioner + decodeVersion runtime.GroupVersioner +} + +// Decode attempts a decode of the object, then tries to convert it to the internal version. If into is provided and the decoding is +// successful, the returned runtime.Object will be the value passed as into. Note that this may bypass conversion if you pass an +// into that matches the serialized version. +func (c *codec) Decode(data []byte, defaultGVK *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + versioned, isVersioned := into.(*runtime.VersionedObjects) + if isVersioned { + into = versioned.Last() + } + + obj, gvk, err := c.decoder.Decode(data, defaultGVK, into) + if err != nil { + return nil, gvk, err + } + + if d, ok := obj.(runtime.NestedObjectDecoder); ok { + if err := d.DecodeNestedObjects(DirectDecoder{c.decoder}); err != nil { + return nil, gvk, err + } + } + + // if we specify a target, use generic conversion. + if into != nil { + if into == obj { + if isVersioned { + return versioned, gvk, nil + } + return into, gvk, nil + } + if err := c.convertor.Convert(obj, into, c.decodeVersion); err != nil { + return nil, gvk, err + } + if isVersioned { + versioned.Objects = []runtime.Object{obj, into} + return versioned, gvk, nil + } + return into, gvk, nil + } + + // Convert if needed. + if isVersioned { + // create a copy, because ConvertToVersion does not guarantee non-mutation of objects + copied, err := c.copier.Copy(obj) + if err != nil { + copied = obj + } + versioned.Objects = []runtime.Object{copied} + } + out, err := c.convertor.ConvertToVersion(obj, c.decodeVersion) + if err != nil { + return nil, gvk, err + } + if isVersioned { + if versioned.Last() != out { + versioned.Objects = append(versioned.Objects, out) + } + return versioned, gvk, nil + } + return out, gvk, nil +} + +// Encode ensures the provided object is output in the appropriate group and version, invoking +// conversion if necessary. Unversioned objects (according to the ObjectTyper) are output as is. +func (c *codec) Encode(obj runtime.Object, w io.Writer) error { + switch obj.(type) { + case *runtime.Unknown, *runtime.Unstructured, *runtime.UnstructuredList: + return c.encoder.Encode(obj, w) + } + + gvks, isUnversioned, err := c.typer.ObjectKinds(obj) + if err != nil { + return err + } + + if c.encodeVersion == nil || isUnversioned { + if e, ok := obj.(runtime.NestedObjectEncoder); ok { + if err := e.EncodeNestedObjects(DirectEncoder{Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { + return err + } + } + objectKind := obj.GetObjectKind() + old := objectKind.GroupVersionKind() + objectKind.SetGroupVersionKind(gvks[0]) + err = c.encoder.Encode(obj, w) + objectKind.SetGroupVersionKind(old) + return err + } + + // Perform a conversion if necessary + objectKind := obj.GetObjectKind() + old := objectKind.GroupVersionKind() + out, err := c.convertor.ConvertToVersion(obj, c.encodeVersion) + if err != nil { + return err + } + + if e, ok := out.(runtime.NestedObjectEncoder); ok { + if err := e.EncodeNestedObjects(DirectEncoder{Encoder: c.encoder, ObjectTyper: c.typer}); err != nil { + return err + } + } + + // Conversion is responsible for setting the proper group, version, and kind onto the outgoing object + err = c.encoder.Encode(out, w) + // restore the old GVK, in case conversion returned the same object + objectKind.SetGroupVersionKind(old) + return err +} + +// DirectEncoder serializes an object and ensures the GVK is set. +type DirectEncoder struct { + runtime.Encoder + runtime.ObjectTyper +} + +// Encode does not do conversion. It sets the gvk during serialization. +func (e DirectEncoder) Encode(obj runtime.Object, stream io.Writer) error { + gvks, _, err := e.ObjectTyper.ObjectKinds(obj) + if err != nil { + if runtime.IsNotRegisteredError(err) { + return e.Encoder.Encode(obj, stream) + } + return err + } + kind := obj.GetObjectKind() + oldGVK := kind.GroupVersionKind() + kind.SetGroupVersionKind(gvks[0]) + err = e.Encoder.Encode(obj, stream) + kind.SetGroupVersionKind(oldGVK) + return err +} + +// DirectDecoder clears the group version kind of a deserialized object. +type DirectDecoder struct { + runtime.Decoder +} + +// Decode does not do conversion. It removes the gvk during deserialization. +func (d DirectDecoder) Decode(data []byte, defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { + obj, gvk, err := d.Decoder.Decode(data, defaults, into) + if obj != nil { + kind := obj.GetObjectKind() + // clearing the gvk is just a convention of a codec + kind.SetGroupVersionKind(unversioned.GroupVersionKind{}) + } + return obj, gvk, err +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/swagger_doc_generator.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/swagger_doc_generator.go new file mode 100644 index 0000000000..29722d52e7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/swagger_doc_generator.go @@ -0,0 +1,262 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "bytes" + "fmt" + "go/ast" + "go/doc" + "go/parser" + "go/token" + "io" + "reflect" + "strings" +) + +// Pair of strings. We keed the name of fields and the doc +type Pair struct { + Name, Doc string +} + +// KubeTypes is an array to represent all available types in a parsed file. [0] is for the type itself +type KubeTypes []Pair + +func astFrom(filePath string) *doc.Package { + fset := token.NewFileSet() + m := make(map[string]*ast.File) + + f, err := parser.ParseFile(fset, filePath, nil, parser.ParseComments) + if err != nil { + fmt.Println(err) + return nil + } + + m[filePath] = f + apkg, _ := ast.NewPackage(fset, m, nil, nil) + + return doc.New(apkg, "", 0) +} + +func fmtRawDoc(rawDoc string) string { + var buffer bytes.Buffer + delPrevChar := func() { + if buffer.Len() > 0 { + buffer.Truncate(buffer.Len() - 1) // Delete the last " " or "\n" + } + } + + // Ignore all lines after --- + rawDoc = strings.Split(rawDoc, "---")[0] + + for _, line := range strings.Split(rawDoc, "\n") { + line = strings.TrimRight(line, " ") + leading := strings.TrimLeft(line, " ") + switch { + case len(line) == 0: // Keep paragraphs + delPrevChar() + buffer.WriteString("\n\n") + case strings.HasPrefix(leading, "TODO"): // Ignore one line TODOs + case strings.HasPrefix(leading, "+"): // Ignore instructions to go2idl + default: + if strings.HasPrefix(line, " ") || strings.HasPrefix(line, "\t") { + delPrevChar() + line = "\n" + line + "\n" // Replace it with newline. This is useful when we have a line with: "Example:\n\tJSON-someting..." + } else { + line += " " + } + buffer.WriteString(line) + } + } + + postDoc := strings.TrimRight(buffer.String(), "\n") + postDoc = strings.Replace(postDoc, "\\\"", "\"", -1) // replace user's \" to " + postDoc = strings.Replace(postDoc, "\"", "\\\"", -1) // Escape " + postDoc = strings.Replace(postDoc, "\n", "\\n", -1) + postDoc = strings.Replace(postDoc, "\t", "\\t", -1) + + return postDoc +} + +// fieldName returns the name of the field as it should appear in JSON format +// "-" indicates that this field is not part of the JSON representation +func fieldName(field *ast.Field) string { + jsonTag := "" + if field.Tag != nil { + jsonTag = reflect.StructTag(field.Tag.Value[1 : len(field.Tag.Value)-1]).Get("json") // Delete first and last quotation + if strings.Contains(jsonTag, "inline") { + return "-" + } + } + + jsonTag = strings.Split(jsonTag, ",")[0] // This can return "-" + if jsonTag == "" { + if field.Names != nil { + return field.Names[0].Name + } + return field.Type.(*ast.Ident).Name + } + return jsonTag +} + +// A buffer of lines that will be written. +type bufferedLine struct { + line string + indentation int +} + +type buffer struct { + lines []bufferedLine +} + +func newBuffer() *buffer { + return &buffer{ + lines: make([]bufferedLine, 0), + } +} + +func (b *buffer) addLine(line string, indent int) { + b.lines = append(b.lines, bufferedLine{line, indent}) +} + +func (b *buffer) flushLines(w io.Writer) error { + for _, line := range b.lines { + indentation := strings.Repeat("\t", line.indentation) + fullLine := fmt.Sprintf("%s%s", indentation, line.line) + if _, err := io.WriteString(w, fullLine); err != nil { + return err + } + } + return nil +} + +func writeFuncHeader(b *buffer, structName string, indent int) { + s := fmt.Sprintf("var map_%s = map[string]string {\n", structName) + b.addLine(s, indent) +} + +func writeFuncFooter(b *buffer, structName string, indent int) { + b.addLine("}\n", indent) // Closes the map definition + + s := fmt.Sprintf("func (%s) SwaggerDoc() map[string]string {\n", structName) + b.addLine(s, indent) + s = fmt.Sprintf("return map_%s\n", structName) + b.addLine(s, indent+1) + b.addLine("}\n", indent) // Closes the function definition +} + +func writeMapBody(b *buffer, kubeType []Pair, indent int) { + format := "\"%s\": \"%s\",\n" + for _, pair := range kubeType { + s := fmt.Sprintf(format, pair.Name, pair.Doc) + b.addLine(s, indent+2) + } +} + +// ParseDocumentationFrom gets all types' documentation and returns them as an +// array. Each type is again represented as an array (we have to use arrays as we +// need to be sure for the order of the fields). This function returns fields and +// struct definitions that have no documentation as {name, ""}. +func ParseDocumentationFrom(src string) []KubeTypes { + var docForTypes []KubeTypes + + pkg := astFrom(src) + + for _, kubType := range pkg.Types { + if structType, ok := kubType.Decl.Specs[0].(*ast.TypeSpec).Type.(*ast.StructType); ok { + var ks KubeTypes + ks = append(ks, Pair{kubType.Name, fmtRawDoc(kubType.Doc)}) + + for _, field := range structType.Fields.List { + if n := fieldName(field); n != "-" { + fieldDoc := fmtRawDoc(field.Doc.Text()) + ks = append(ks, Pair{n, fieldDoc}) + } + } + docForTypes = append(docForTypes, ks) + } + } + + return docForTypes +} + +// WriteSwaggerDocFunc writes a declaration of a function as a string. This function is used in +// Swagger as a documentation source for structs and theirs fields +func WriteSwaggerDocFunc(kubeTypes []KubeTypes, w io.Writer) error { + for _, kubeType := range kubeTypes { + structName := kubeType[0].Name + kubeType[0].Name = "" + + // Ignore empty documentation + docfulTypes := make(KubeTypes, 0, len(kubeType)) + for _, pair := range kubeType { + if pair.Doc != "" { + docfulTypes = append(docfulTypes, pair) + } + } + + if len(docfulTypes) == 0 { + continue // If no fields and the struct have documentation, skip the function definition + } + + indent := 0 + buffer := newBuffer() + + writeFuncHeader(buffer, structName, indent) + writeMapBody(buffer, docfulTypes, indent) + writeFuncFooter(buffer, structName, indent) + buffer.addLine("\n", 0) + + if err := buffer.flushLines(w); err != nil { + return err + } + } + + return nil +} + +// VerifySwaggerDocsExist writes in a io.Writer a list of structs and fields that +// are missing of documentation. +func VerifySwaggerDocsExist(kubeTypes []KubeTypes, w io.Writer) (int, error) { + missingDocs := 0 + buffer := newBuffer() + + for _, kubeType := range kubeTypes { + structName := kubeType[0].Name + if kubeType[0].Doc == "" { + format := "Missing documentation for the struct itself: %s\n" + s := fmt.Sprintf(format, structName) + buffer.addLine(s, 0) + missingDocs++ + } + kubeType = kubeType[1:] // Skip struct definition + + for _, pair := range kubeType { // Iterate only the fields + if pair.Doc == "" { + format := "In struct: %s, field documentation is missing: %s\n" + s := fmt.Sprintf(format, structName, pair.Name) + buffer.addLine(s, 0) + missingDocs++ + } + } + } + + if err := buffer.flushLines(w); err != nil { + return -1, err + } + return missingDocs, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/types.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/types.go new file mode 100644 index 0000000000..2ac265ccd7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/types.go @@ -0,0 +1,142 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +// Note that the types provided in this file are not versioned and are intended to be +// safe to use from within all versions of every API object. + +// TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, +// like this: +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *unversioned.GroupVersionKind) { unversioned.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind +// +// TypeMeta is provided here for convenience. You may use it directly from this package or define +// your own with the same fields. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type TypeMeta struct { + APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" protobuf:"bytes,1,opt,name=apiVersion"` + Kind string `json:"kind,omitempty" yaml:"kind,omitempty" protobuf:"bytes,2,opt,name=kind"` +} + +const ( + ContentTypeJSON string = "application/json" +) + +// RawExtension is used to hold extensions in external versions. +// +// To use this, make a field which has RawExtension as its type in your external, versioned +// struct, and Object in your internal struct. You also need to register your +// various plugin types. +// +// // Internal package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // External package: +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// type PluginA struct { +// AOption string `json:"aOption"` +// } +// +// // On the wire, the JSON will look something like this: +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } +// +// So what happens? Decode first uses json or yaml to unmarshal the serialized data into +// your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. +// The next step is to copy (using pkg/conversion) into the internal struct. The runtime +// package's DefaultScheme has conversion functions installed which will unpack the +// JSON stored in RawExtension, turning it into the correct object type, and storing it +// in the Object. (TODO: In the case where the object is of an unknown type, a +// runtime.Unknown object will be created and stored.) +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type RawExtension struct { + // Raw is the underlying serialization of this object. + // + // TODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data. + Raw []byte `protobuf:"bytes,1,opt,name=raw"` + // Object can hold a representation of this extension - useful for working with versioned + // structs. + Object Object `json:"-"` +} + +// Unknown allows api objects with unknown types to be passed-through. This can be used +// to deal with the API objects from a plug-in. Unknown objects still have functioning +// TypeMeta features-- kind, version, etc. +// TODO: Make this object have easy access to field based accessors and settors for +// metadata and field mutatation. +// +// +k8s:deepcopy-gen=true +// +protobuf=true +// +k8s:openapi-gen=true +type Unknown struct { + TypeMeta `json:",inline" protobuf:"bytes,1,opt,name=typeMeta"` + // Raw will hold the complete serialized object which couldn't be matched + // with a registered type. Most likely, nothing should be done with this + // except for passing it through the system. + Raw []byte `protobuf:"bytes,2,opt,name=raw"` + // ContentEncoding is encoding used to encode 'Raw' data. + // Unspecified means no encoding. + ContentEncoding string `protobuf:"bytes,3,opt,name=contentEncoding"` + // ContentType is serialization method used to serialize 'Raw'. + // Unspecified means ContentTypeJSON. + ContentType string `protobuf:"bytes,4,opt,name=contentType"` +} + +// Unstructured allows objects that do not have Golang structs registered to be manipulated +// generically. This can be used to deal with the API objects from a plug-in. Unstructured +// objects still have functioning TypeMeta features-- kind, version, etc. +// TODO: Make this object have easy access to field based accessors and settors for +// metadata and field mutatation. +type Unstructured struct { + // Object is a JSON compatible map with string, float, int, []interface{}, or map[string]interface{} + // children. + Object map[string]interface{} +} + +// VersionedObjects is used by Decoders to give callers a way to access all versions +// of an object during the decoding process. +type VersionedObjects struct { + // Objects is the set of objects retrieved during decoding, in order of conversion. + // The 0 index is the object as serialized on the wire. If conversion has occurred, + // other objects may be present. The right most object is the same as would be returned + // by a normal Decode call. + Objects []Object +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/types_proto.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/types_proto.go new file mode 100644 index 0000000000..ead96ee055 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/types_proto.go @@ -0,0 +1,69 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" +) + +type ProtobufMarshaller interface { + MarshalTo(data []byte) (int, error) +} + +// NestedMarshalTo allows a caller to avoid extra allocations during serialization of an Unknown +// that will contain an object that implements ProtobufMarshaller. +func (m *Unknown) NestedMarshalTo(data []byte, b ProtobufMarshaller, size uint64) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.TypeMeta.Size())) + n1, err := m.TypeMeta.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + + if b != nil { + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, size) + n2, err := b.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + if uint64(n2) != size { + // programmer error: the Size() method for protobuf does not match the results of MarshalTo, which means the proto + // struct returned would be wrong. + return 0, fmt.Errorf("the Size() value of %T was %d, but NestedMarshalTo wrote %d bytes to data", b, size, n2) + } + i += n2 + } + + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentEncoding))) + i += copy(data[i:], m.ContentEncoding) + + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.ContentType))) + i += copy(data[i:], m.ContentType) + return i, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/unstructured.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/unstructured.go new file mode 100644 index 0000000000..54b38ddb38 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/unstructured.go @@ -0,0 +1,612 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "bytes" + gojson "encoding/json" + "errors" + "fmt" + "io" + "strings" + + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/api/meta/metatypes" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/types" + "k8s.io/client-go/1.5/pkg/util/json" +) + +// MarshalJSON ensures that the unstructured object produces proper +// JSON when passed to Go's standard JSON library. +func (u *Unstructured) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + err := UnstructuredJSONScheme.Encode(u, &buf) + return buf.Bytes(), err +} + +// UnmarshalJSON ensures that the unstructured object properly decodes +// JSON when passed to Go's standard JSON library. +func (u *Unstructured) UnmarshalJSON(b []byte) error { + _, _, err := UnstructuredJSONScheme.Decode(b, nil, u) + return err +} + +func getNestedField(obj map[string]interface{}, fields ...string) interface{} { + var val interface{} = obj + for _, field := range fields { + if _, ok := val.(map[string]interface{}); !ok { + return nil + } + val = val.(map[string]interface{})[field] + } + return val +} + +func getNestedString(obj map[string]interface{}, fields ...string) string { + if str, ok := getNestedField(obj, fields...).(string); ok { + return str + } + return "" +} + +func getNestedSlice(obj map[string]interface{}, fields ...string) []string { + if m, ok := getNestedField(obj, fields...).([]interface{}); ok { + strSlice := make([]string, 0, len(m)) + for _, v := range m { + if str, ok := v.(string); ok { + strSlice = append(strSlice, str) + } + } + return strSlice + } + return nil +} + +func getNestedMap(obj map[string]interface{}, fields ...string) map[string]string { + if m, ok := getNestedField(obj, fields...).(map[string]interface{}); ok { + strMap := make(map[string]string, len(m)) + for k, v := range m { + if str, ok := v.(string); ok { + strMap[k] = str + } + } + return strMap + } + return nil +} + +func setNestedField(obj map[string]interface{}, value interface{}, fields ...string) { + m := obj + if len(fields) > 1 { + for _, field := range fields[0 : len(fields)-1] { + if _, ok := m[field].(map[string]interface{}); !ok { + m[field] = make(map[string]interface{}) + } + m = m[field].(map[string]interface{}) + } + } + m[fields[len(fields)-1]] = value +} + +func setNestedSlice(obj map[string]interface{}, value []string, fields ...string) { + m := make([]interface{}, 0, len(value)) + for _, v := range value { + m = append(m, v) + } + setNestedField(obj, m, fields...) +} + +func setNestedMap(obj map[string]interface{}, value map[string]string, fields ...string) { + m := make(map[string]interface{}, len(value)) + for k, v := range value { + m[k] = v + } + setNestedField(obj, m, fields...) +} + +func (u *Unstructured) setNestedField(value interface{}, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedField(u.Object, value, fields...) +} + +func (u *Unstructured) setNestedSlice(value []string, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedSlice(u.Object, value, fields...) +} + +func (u *Unstructured) setNestedMap(value map[string]string, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedMap(u.Object, value, fields...) +} + +func extractOwnerReference(src interface{}) metatypes.OwnerReference { + v := src.(map[string]interface{}) + controllerPtr, ok := (getNestedField(v, "controller")).(*bool) + if !ok { + controllerPtr = nil + } else { + if controllerPtr != nil { + controller := *controllerPtr + controllerPtr = &controller + } + } + return metatypes.OwnerReference{ + Kind: getNestedString(v, "kind"), + Name: getNestedString(v, "name"), + APIVersion: getNestedString(v, "apiVersion"), + UID: (types.UID)(getNestedString(v, "uid")), + Controller: controllerPtr, + } +} + +func setOwnerReference(src metatypes.OwnerReference) map[string]interface{} { + ret := make(map[string]interface{}) + controllerPtr := src.Controller + if controllerPtr != nil { + controller := *controllerPtr + controllerPtr = &controller + } + setNestedField(ret, src.Kind, "kind") + setNestedField(ret, src.Name, "name") + setNestedField(ret, src.APIVersion, "apiVersion") + setNestedField(ret, string(src.UID), "uid") + setNestedField(ret, controllerPtr, "controller") + return ret +} + +func getOwnerReferences(object map[string]interface{}) ([]map[string]interface{}, error) { + field := getNestedField(object, "metadata", "ownerReferences") + if field == nil { + return nil, fmt.Errorf("cannot find field metadata.ownerReferences in %v", object) + } + ownerReferences, ok := field.([]map[string]interface{}) + if ok { + return ownerReferences, nil + } + // TODO: This is hacky... + interfaces, ok := field.([]interface{}) + if !ok { + return nil, fmt.Errorf("expect metadata.ownerReferences to be a slice in %#v", object) + } + ownerReferences = make([]map[string]interface{}, 0, len(interfaces)) + for i := 0; i < len(interfaces); i++ { + r, ok := interfaces[i].(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("expect element metadata.ownerReferences to be a map[string]interface{} in %#v", object) + } + ownerReferences = append(ownerReferences, r) + } + return ownerReferences, nil +} + +func (u *Unstructured) GetOwnerReferences() []metatypes.OwnerReference { + original, err := getOwnerReferences(u.Object) + if err != nil { + glog.V(6).Info(err) + return nil + } + ret := make([]metatypes.OwnerReference, 0, len(original)) + for i := 0; i < len(original); i++ { + ret = append(ret, extractOwnerReference(original[i])) + } + return ret +} + +func (u *Unstructured) SetOwnerReferences(references []metatypes.OwnerReference) { + var newReferences = make([]map[string]interface{}, 0, len(references)) + for i := 0; i < len(references); i++ { + newReferences = append(newReferences, setOwnerReference(references[i])) + } + u.setNestedField(newReferences, "metadata", "ownerReferences") +} + +func (u *Unstructured) GetAPIVersion() string { + return getNestedString(u.Object, "apiVersion") +} + +func (u *Unstructured) SetAPIVersion(version string) { + u.setNestedField(version, "apiVersion") +} + +func (u *Unstructured) GetKind() string { + return getNestedString(u.Object, "kind") +} + +func (u *Unstructured) SetKind(kind string) { + u.setNestedField(kind, "kind") +} + +func (u *Unstructured) GetNamespace() string { + return getNestedString(u.Object, "metadata", "namespace") +} + +func (u *Unstructured) SetNamespace(namespace string) { + u.setNestedField(namespace, "metadata", "namespace") +} + +func (u *Unstructured) GetName() string { + return getNestedString(u.Object, "metadata", "name") +} + +func (u *Unstructured) SetName(name string) { + u.setNestedField(name, "metadata", "name") +} + +func (u *Unstructured) GetGenerateName() string { + return getNestedString(u.Object, "metadata", "generateName") +} + +func (u *Unstructured) SetGenerateName(name string) { + u.setNestedField(name, "metadata", "generateName") +} + +func (u *Unstructured) GetUID() types.UID { + return types.UID(getNestedString(u.Object, "metadata", "uid")) +} + +func (u *Unstructured) SetUID(uid types.UID) { + u.setNestedField(string(uid), "metadata", "uid") +} + +func (u *Unstructured) GetResourceVersion() string { + return getNestedString(u.Object, "metadata", "resourceVersion") +} + +func (u *Unstructured) SetResourceVersion(version string) { + u.setNestedField(version, "metadata", "resourceVersion") +} + +func (u *Unstructured) GetSelfLink() string { + return getNestedString(u.Object, "metadata", "selfLink") +} + +func (u *Unstructured) SetSelfLink(selfLink string) { + u.setNestedField(selfLink, "metadata", "selfLink") +} + +func (u *Unstructured) GetCreationTimestamp() unversioned.Time { + var timestamp unversioned.Time + timestamp.UnmarshalQueryParameter(getNestedString(u.Object, "metadata", "creationTimestamp")) + return timestamp +} + +func (u *Unstructured) SetCreationTimestamp(timestamp unversioned.Time) { + ts, _ := timestamp.MarshalQueryParameter() + u.setNestedField(ts, "metadata", "creationTimestamp") +} + +func (u *Unstructured) GetDeletionTimestamp() *unversioned.Time { + var timestamp unversioned.Time + timestamp.UnmarshalQueryParameter(getNestedString(u.Object, "metadata", "deletionTimestamp")) + if timestamp.IsZero() { + return nil + } + return ×tamp +} + +func (u *Unstructured) SetDeletionTimestamp(timestamp *unversioned.Time) { + ts, _ := timestamp.MarshalQueryParameter() + u.setNestedField(ts, "metadata", "deletionTimestamp") +} + +func (u *Unstructured) GetLabels() map[string]string { + return getNestedMap(u.Object, "metadata", "labels") +} + +func (u *Unstructured) SetLabels(labels map[string]string) { + u.setNestedMap(labels, "metadata", "labels") +} + +func (u *Unstructured) GetAnnotations() map[string]string { + return getNestedMap(u.Object, "metadata", "annotations") +} + +func (u *Unstructured) SetAnnotations(annotations map[string]string) { + u.setNestedMap(annotations, "metadata", "annotations") +} + +func (u *Unstructured) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + u.SetAPIVersion(gvk.GroupVersion().String()) + u.SetKind(gvk.Kind) +} + +func (u *Unstructured) GroupVersionKind() unversioned.GroupVersionKind { + gv, err := unversioned.ParseGroupVersion(u.GetAPIVersion()) + if err != nil { + return unversioned.GroupVersionKind{} + } + gvk := gv.WithKind(u.GetKind()) + return gvk +} + +func (u *Unstructured) GetFinalizers() []string { + return getNestedSlice(u.Object, "metadata", "finalizers") +} + +func (u *Unstructured) SetFinalizers(finalizers []string) { + u.setNestedSlice(finalizers, "metadata", "finalizers") +} + +func (u *Unstructured) GetClusterName() string { + return getNestedString(u.Object, "metadata", "clusterName") +} + +func (u *Unstructured) SetClusterName(clusterName string) { + u.setNestedField(clusterName, "metadata", "clusterName") +} + +// UnstructuredList allows lists that do not have Golang structs +// registered to be manipulated generically. This can be used to deal +// with the API lists from a plug-in. +type UnstructuredList struct { + Object map[string]interface{} + + // Items is a list of unstructured objects. + Items []*Unstructured `json:"items"` +} + +// MarshalJSON ensures that the unstructured list object produces proper +// JSON when passed to Go's standard JSON library. +func (u *UnstructuredList) MarshalJSON() ([]byte, error) { + var buf bytes.Buffer + err := UnstructuredJSONScheme.Encode(u, &buf) + return buf.Bytes(), err +} + +// UnmarshalJSON ensures that the unstructured list object properly +// decodes JSON when passed to Go's standard JSON library. +func (u *UnstructuredList) UnmarshalJSON(b []byte) error { + _, _, err := UnstructuredJSONScheme.Decode(b, nil, u) + return err +} + +func (u *UnstructuredList) setNestedField(value interface{}, fields ...string) { + if u.Object == nil { + u.Object = make(map[string]interface{}) + } + setNestedField(u.Object, value, fields...) +} + +func (u *UnstructuredList) GetAPIVersion() string { + return getNestedString(u.Object, "apiVersion") +} + +func (u *UnstructuredList) SetAPIVersion(version string) { + u.setNestedField(version, "apiVersion") +} + +func (u *UnstructuredList) GetKind() string { + return getNestedString(u.Object, "kind") +} + +func (u *UnstructuredList) SetKind(kind string) { + u.setNestedField(kind, "kind") +} + +func (u *UnstructuredList) GetResourceVersion() string { + return getNestedString(u.Object, "metadata", "resourceVersion") +} + +func (u *UnstructuredList) SetResourceVersion(version string) { + u.setNestedField(version, "metadata", "resourceVersion") +} + +func (u *UnstructuredList) GetSelfLink() string { + return getNestedString(u.Object, "metadata", "selfLink") +} + +func (u *UnstructuredList) SetSelfLink(selfLink string) { + u.setNestedField(selfLink, "metadata", "selfLink") +} + +func (u *UnstructuredList) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + u.SetAPIVersion(gvk.GroupVersion().String()) + u.SetKind(gvk.Kind) +} + +func (u *UnstructuredList) GroupVersionKind() unversioned.GroupVersionKind { + gv, err := unversioned.ParseGroupVersion(u.GetAPIVersion()) + if err != nil { + return unversioned.GroupVersionKind{} + } + gvk := gv.WithKind(u.GetKind()) + return gvk +} + +// UnstructuredJSONScheme is capable of converting JSON data into the Unstructured +// type, which can be used for generic access to objects without a predefined scheme. +// TODO: move into serializer/json. +var UnstructuredJSONScheme Codec = unstructuredJSONScheme{} + +type unstructuredJSONScheme struct{} + +func (s unstructuredJSONScheme) Decode(data []byte, _ *unversioned.GroupVersionKind, obj Object) (Object, *unversioned.GroupVersionKind, error) { + var err error + if obj != nil { + err = s.decodeInto(data, obj) + } else { + obj, err = s.decode(data) + } + + if err != nil { + return nil, nil, err + } + + gvk := obj.GetObjectKind().GroupVersionKind() + if len(gvk.Kind) == 0 { + return nil, &gvk, NewMissingKindErr(string(data)) + } + + return obj, &gvk, nil +} + +func (unstructuredJSONScheme) Encode(obj Object, w io.Writer) error { + switch t := obj.(type) { + case *Unstructured: + return json.NewEncoder(w).Encode(t.Object) + case *UnstructuredList: + items := make([]map[string]interface{}, 0, len(t.Items)) + for _, i := range t.Items { + items = append(items, i.Object) + } + t.Object["items"] = items + defer func() { delete(t.Object, "items") }() + return json.NewEncoder(w).Encode(t.Object) + case *Unknown: + // TODO: Unstructured needs to deal with ContentType. + _, err := w.Write(t.Raw) + return err + default: + return json.NewEncoder(w).Encode(t) + } +} + +func (s unstructuredJSONScheme) decode(data []byte) (Object, error) { + type detector struct { + Items gojson.RawMessage + } + var det detector + if err := json.Unmarshal(data, &det); err != nil { + return nil, err + } + + if det.Items != nil { + list := &UnstructuredList{} + err := s.decodeToList(data, list) + return list, err + } + + // No Items field, so it wasn't a list. + unstruct := &Unstructured{} + err := s.decodeToUnstructured(data, unstruct) + return unstruct, err +} + +func (s unstructuredJSONScheme) decodeInto(data []byte, obj Object) error { + switch x := obj.(type) { + case *Unstructured: + return s.decodeToUnstructured(data, x) + case *UnstructuredList: + return s.decodeToList(data, x) + case *VersionedObjects: + o, err := s.decode(data) + if err == nil { + x.Objects = []Object{o} + } + return err + default: + return json.Unmarshal(data, x) + } +} + +func (unstructuredJSONScheme) decodeToUnstructured(data []byte, unstruct *Unstructured) error { + m := make(map[string]interface{}) + if err := json.Unmarshal(data, &m); err != nil { + return err + } + + unstruct.Object = m + + return nil +} + +func (s unstructuredJSONScheme) decodeToList(data []byte, list *UnstructuredList) error { + type decodeList struct { + Items []gojson.RawMessage + } + + var dList decodeList + if err := json.Unmarshal(data, &dList); err != nil { + return err + } + + if err := json.Unmarshal(data, &list.Object); err != nil { + return err + } + + // For typed lists, e.g., a PodList, API server doesn't set each item's + // APIVersion and Kind. We need to set it. + listAPIVersion := list.GetAPIVersion() + listKind := list.GetKind() + itemKind := strings.TrimSuffix(listKind, "List") + + delete(list.Object, "items") + list.Items = nil + for _, i := range dList.Items { + unstruct := &Unstructured{} + if err := s.decodeToUnstructured([]byte(i), unstruct); err != nil { + return err + } + // This is hacky. Set the item's Kind and APIVersion to those inferred + // from the List. + if len(unstruct.GetKind()) == 0 && len(unstruct.GetAPIVersion()) == 0 { + unstruct.SetKind(itemKind) + unstruct.SetAPIVersion(listAPIVersion) + } + list.Items = append(list.Items, unstruct) + } + return nil +} + +// UnstructuredObjectConverter is an ObjectConverter for use with +// Unstructured objects. Since it has no schema or type information, +// it will only succeed for no-op conversions. This is provided as a +// sane implementation for APIs that require an object converter. +type UnstructuredObjectConverter struct{} + +func (UnstructuredObjectConverter) Convert(in, out, context interface{}) error { + unstructIn, ok := in.(*Unstructured) + if !ok { + return fmt.Errorf("input type %T in not valid for unstructured conversion", in) + } + + unstructOut, ok := out.(*Unstructured) + if !ok { + return fmt.Errorf("output type %T in not valid for unstructured conversion", out) + } + + // maybe deep copy the map? It is documented in the + // ObjectConverter interface that this function is not + // guaranteeed to not mutate the input. Or maybe set the input + // object to nil. + unstructOut.Object = unstructIn.Object + return nil +} + +func (UnstructuredObjectConverter) ConvertToVersion(in Object, target GroupVersioner) (Object, error) { + if kind := in.GetObjectKind().GroupVersionKind(); !kind.Empty() { + gvk, ok := target.KindForGroupVersionKinds([]unversioned.GroupVersionKind{kind}) + if !ok { + // TODO: should this be a typed error? + return nil, fmt.Errorf("%v is unstructured and is not suitable for converting to %q", kind, target) + } + in.GetObjectKind().SetGroupVersionKind(gvk) + } + return in, nil +} + +func (UnstructuredObjectConverter) ConvertFieldLabel(version, kind, label, value string) (string, string, error) { + return "", "", errors.New("unstructured cannot convert field labels") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/runtime/zz_generated.deepcopy.go b/vendor/k8s.io/client-go/1.5/pkg/runtime/zz_generated.deepcopy.go new file mode 100644 index 0000000000..c9f30ba2be --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/runtime/zz_generated.deepcopy.go @@ -0,0 +1,75 @@ +// +build !ignore_autogenerated + +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by deepcopy-gen. Do not edit it manually! + +package runtime + +import ( + conversion "k8s.io/client-go/1.5/pkg/conversion" +) + +func DeepCopy_runtime_RawExtension(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*RawExtension) + out := out.(*RawExtension) + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Raw = nil + } + if in.Object == nil { + out.Object = nil + } else if newVal, err := c.DeepCopy(&in.Object); err != nil { + return err + } else { + out.Object = *newVal.(*Object) + } + return nil + } +} + +func DeepCopy_runtime_TypeMeta(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*TypeMeta) + out := out.(*TypeMeta) + out.APIVersion = in.APIVersion + out.Kind = in.Kind + return nil + } +} + +func DeepCopy_runtime_Unknown(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Unknown) + out := out.(*Unknown) + out.TypeMeta = in.TypeMeta + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = make([]byte, len(*in)) + copy(*out, *in) + } else { + out.Raw = nil + } + out.ContentEncoding = in.ContentEncoding + out.ContentType = in.ContentType + return nil + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/selection/operator.go b/vendor/k8s.io/client-go/1.5/pkg/selection/operator.go new file mode 100644 index 0000000000..298f798c43 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/selection/operator.go @@ -0,0 +1,33 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package selection + +// Operator represents a key/field's relationship to value(s). +// See labels.Requirement and fields.Requirement for more details. +type Operator string + +const ( + DoesNotExist Operator = "!" + Equals Operator = "=" + DoubleEquals Operator = "==" + In Operator = "in" + NotEquals Operator = "!=" + NotIn Operator = "notin" + Exists Operator = "exists" + GreaterThan Operator = "gt" + LessThan Operator = "lt" +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/deep_equal.go b/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/deep_equal.go new file mode 100644 index 0000000000..9e45dbe1d2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/deep_equal.go @@ -0,0 +1,388 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package reflect is a fork of go's standard library reflection package, which +// allows for deep equal with equality functions defined. +package reflect + +import ( + "fmt" + "reflect" + "strings" +) + +// Equalities is a map from type to a function comparing two values of +// that type. +type Equalities map[reflect.Type]reflect.Value + +// For convenience, panics on errrors +func EqualitiesOrDie(funcs ...interface{}) Equalities { + e := Equalities{} + if err := e.AddFuncs(funcs...); err != nil { + panic(err) + } + return e +} + +// AddFuncs is a shortcut for multiple calls to AddFunc. +func (e Equalities) AddFuncs(funcs ...interface{}) error { + for _, f := range funcs { + if err := e.AddFunc(f); err != nil { + return err + } + } + return nil +} + +// AddFunc uses func as an equality function: it must take +// two parameters of the same type, and return a boolean. +func (e Equalities) AddFunc(eqFunc interface{}) error { + fv := reflect.ValueOf(eqFunc) + ft := fv.Type() + if ft.Kind() != reflect.Func { + return fmt.Errorf("expected func, got: %v", ft) + } + if ft.NumIn() != 2 { + return fmt.Errorf("expected three 'in' params, got: %v", ft) + } + if ft.NumOut() != 1 { + return fmt.Errorf("expected one 'out' param, got: %v", ft) + } + if ft.In(0) != ft.In(1) { + return fmt.Errorf("expected arg 1 and 2 to have same type, but got %v", ft) + } + var forReturnType bool + boolType := reflect.TypeOf(forReturnType) + if ft.Out(0) != boolType { + return fmt.Errorf("expected bool return, got: %v", ft) + } + e[ft.In(0)] = fv + return nil +} + +// Below here is forked from go's reflect/deepequal.go + +// During deepValueEqual, must keep track of checks that are +// in progress. The comparison algorithm assumes that all +// checks in progress are true when it reencounters them. +// Visited comparisons are stored in a map indexed by visit. +type visit struct { + a1 uintptr + a2 uintptr + typ reflect.Type +} + +// unexportedTypePanic is thrown when you use this DeepEqual on something that has an +// unexported type. It indicates a programmer error, so should not occur at runtime, +// which is why it's not public and thus impossible to catch. +type unexportedTypePanic []reflect.Type + +func (u unexportedTypePanic) Error() string { return u.String() } +func (u unexportedTypePanic) String() string { + strs := make([]string, len(u)) + for i, t := range u { + strs[i] = fmt.Sprintf("%v", t) + } + return "an unexported field was encountered, nested like this: " + strings.Join(strs, " -> ") +} + +func makeUsefulPanic(v reflect.Value) { + if x := recover(); x != nil { + if u, ok := x.(unexportedTypePanic); ok { + u = append(unexportedTypePanic{v.Type()}, u...) + x = u + } + panic(x) + } +} + +// Tests for deep equality using reflected types. The map argument tracks +// comparisons that have already been seen, which allows short circuiting on +// recursive types. +func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { + defer makeUsefulPanic(v1) + + if !v1.IsValid() || !v2.IsValid() { + return v1.IsValid() == v2.IsValid() + } + if v1.Type() != v2.Type() { + return false + } + if fv, ok := e[v1.Type()]; ok { + return fv.Call([]reflect.Value{v1, v2})[0].Bool() + } + + hard := func(k reflect.Kind) bool { + switch k { + case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct: + return true + } + return false + } + + if v1.CanAddr() && v2.CanAddr() && hard(v1.Kind()) { + addr1 := v1.UnsafeAddr() + addr2 := v2.UnsafeAddr() + if addr1 > addr2 { + // Canonicalize order to reduce number of entries in visited. + addr1, addr2 = addr2, addr1 + } + + // Short circuit if references are identical ... + if addr1 == addr2 { + return true + } + + // ... or already seen + typ := v1.Type() + v := visit{addr1, addr2, typ} + if visited[v] { + return true + } + + // Remember for later. + visited[v] = true + } + + switch v1.Kind() { + case reflect.Array: + // We don't need to check length here because length is part of + // an array's type, which has already been filtered for. + for i := 0; i < v1.Len(); i++ { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Slice: + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() != v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for i := 0; i < v1.Len(); i++ { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Interface: + if v1.IsNil() || v2.IsNil() { + return v1.IsNil() == v2.IsNil() + } + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Ptr: + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Struct: + for i, n := 0, v1.NumField(); i < n; i++ { + if !e.deepValueEqual(v1.Field(i), v2.Field(i), visited, depth+1) { + return false + } + } + return true + case reflect.Map: + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() != v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for _, k := range v1.MapKeys() { + if !e.deepValueEqual(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) { + return false + } + } + return true + case reflect.Func: + if v1.IsNil() && v2.IsNil() { + return true + } + // Can't do better than this: + return false + default: + // Normal equality suffices + if !v1.CanInterface() || !v2.CanInterface() { + panic(unexportedTypePanic{}) + } + return v1.Interface() == v2.Interface() + } +} + +// DeepEqual is like reflect.DeepEqual, but focused on semantic equality +// instead of memory equality. +// +// It will use e's equality functions if it finds types that match. +// +// An empty slice *is* equal to a nil slice for our purposes; same for maps. +// +// Unexported field members cannot be compared and will cause an imformative panic; you must add an Equality +// function for these types. +func (e Equalities) DeepEqual(a1, a2 interface{}) bool { + if a1 == nil || a2 == nil { + return a1 == a2 + } + v1 := reflect.ValueOf(a1) + v2 := reflect.ValueOf(a2) + if v1.Type() != v2.Type() { + return false + } + return e.deepValueEqual(v1, v2, make(map[visit]bool), 0) +} + +func (e Equalities) deepValueDerive(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { + defer makeUsefulPanic(v1) + + if !v1.IsValid() || !v2.IsValid() { + return v1.IsValid() == v2.IsValid() + } + if v1.Type() != v2.Type() { + return false + } + if fv, ok := e[v1.Type()]; ok { + return fv.Call([]reflect.Value{v1, v2})[0].Bool() + } + + hard := func(k reflect.Kind) bool { + switch k { + case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct: + return true + } + return false + } + + if v1.CanAddr() && v2.CanAddr() && hard(v1.Kind()) { + addr1 := v1.UnsafeAddr() + addr2 := v2.UnsafeAddr() + if addr1 > addr2 { + // Canonicalize order to reduce number of entries in visited. + addr1, addr2 = addr2, addr1 + } + + // Short circuit if references are identical ... + if addr1 == addr2 { + return true + } + + // ... or already seen + typ := v1.Type() + v := visit{addr1, addr2, typ} + if visited[v] { + return true + } + + // Remember for later. + visited[v] = true + } + + switch v1.Kind() { + case reflect.Array: + // We don't need to check length here because length is part of + // an array's type, which has already been filtered for. + for i := 0; i < v1.Len(); i++ { + if !e.deepValueDerive(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.Slice: + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for i := 0; i < v1.Len(); i++ { + if !e.deepValueDerive(v1.Index(i), v2.Index(i), visited, depth+1) { + return false + } + } + return true + case reflect.String: + if v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + return v1.String() == v2.String() + case reflect.Interface: + if v1.IsNil() { + return true + } + return e.deepValueDerive(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Ptr: + if v1.IsNil() { + return true + } + return e.deepValueDerive(v1.Elem(), v2.Elem(), visited, depth+1) + case reflect.Struct: + for i, n := 0, v1.NumField(); i < n; i++ { + if !e.deepValueDerive(v1.Field(i), v2.Field(i), visited, depth+1) { + return false + } + } + return true + case reflect.Map: + if v1.IsNil() || v1.Len() == 0 { + return true + } + if v1.Len() > v2.Len() { + return false + } + if v1.Pointer() == v2.Pointer() { + return true + } + for _, k := range v1.MapKeys() { + if !e.deepValueDerive(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) { + return false + } + } + return true + case reflect.Func: + if v1.IsNil() && v2.IsNil() { + return true + } + // Can't do better than this: + return false + default: + // Normal equality suffices + if !v1.CanInterface() || !v2.CanInterface() { + panic(unexportedTypePanic{}) + } + return v1.Interface() == v2.Interface() + } +} + +// DeepDerivative is similar to DeepEqual except that unset fields in a1 are +// ignored (not compared). This allows us to focus on the fields that matter to +// the semantic comparison. +// +// The unset fields include a nil pointer and an empty string. +func (e Equalities) DeepDerivative(a1, a2 interface{}) bool { + if a1 == nil { + return true + } + v1 := reflect.ValueOf(a1) + v2 := reflect.ValueOf(a2) + if v1.Type() != v2.Type() { + return false + } + return e.deepValueDerive(v1, v2, make(map[visit]bool), 0) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/type.go b/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/type.go new file mode 100644 index 0000000000..67957ee33e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect/type.go @@ -0,0 +1,91 @@ +//This package is copied from Go library reflect/type.go. +//The struct tag library provides no way to extract the list of struct tags, only +//a specific tag +package reflect + +import ( + "fmt" + + "strconv" + "strings" +) + +type StructTag struct { + Name string + Value string +} + +func (t StructTag) String() string { + return fmt.Sprintf("%s:%q", t.Name, t.Value) +} + +type StructTags []StructTag + +func (tags StructTags) String() string { + s := make([]string, 0, len(tags)) + for _, tag := range tags { + s = append(s, tag.String()) + } + return "`" + strings.Join(s, " ") + "`" +} + +func (tags StructTags) Has(name string) bool { + for i := range tags { + if tags[i].Name == name { + return true + } + } + return false +} + +// ParseStructTags returns the full set of fields in a struct tag in the order they appear in +// the struct tag. +func ParseStructTags(tag string) (StructTags, error) { + tags := StructTags{} + for tag != "" { + // Skip leading space. + i := 0 + for i < len(tag) && tag[i] == ' ' { + i++ + } + tag = tag[i:] + if tag == "" { + break + } + + // Scan to colon. A space, a quote or a control character is a syntax error. + // Strictly speaking, control chars include the range [0x7f, 0x9f], not just + // [0x00, 0x1f], but in practice, we ignore the multi-byte control characters + // as it is simpler to inspect the tag's bytes than the tag's runes. + i = 0 + for i < len(tag) && tag[i] > ' ' && tag[i] != ':' && tag[i] != '"' && tag[i] != 0x7f { + i++ + } + if i == 0 || i+1 >= len(tag) || tag[i] != ':' || tag[i+1] != '"' { + break + } + name := string(tag[:i]) + tag = tag[i+1:] + + // Scan quoted string to find value. + i = 1 + for i < len(tag) && tag[i] != '"' { + if tag[i] == '\\' { + i++ + } + i++ + } + if i >= len(tag) { + break + } + qvalue := string(tag[:i+1]) + tag = tag[i+1:] + + value, err := strconv.Unquote(qvalue) + if err != nil { + return nil, err + } + tags = append(tags, StructTag{Name: name, Value: value}) + } + return tags, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/types/doc.go b/vendor/k8s.io/client-go/1.5/pkg/types/doc.go new file mode 100644 index 0000000000..783cbcdc8d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/types/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package types implements various generic types used throughout kubernetes. +package types diff --git a/vendor/k8s.io/client-go/1.5/pkg/types/namespacedname.go b/vendor/k8s.io/client-go/1.5/pkg/types/namespacedname.go new file mode 100644 index 0000000000..1e2130da08 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/types/namespacedname.go @@ -0,0 +1,60 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "fmt" + "strings" +) + +// NamespacedName comprises a resource name, with a mandatory namespace, +// rendered as "<namespace>/<name>". Being a type captures intent and +// helps make sure that UIDs, namespaced names and non-namespaced names +// do not get conflated in code. For most use cases, namespace and name +// will already have been format validated at the API entry point, so we +// don't do that here. Where that's not the case (e.g. in testing), +// consider using NamespacedNameOrDie() in testing.go in this package. + +type NamespacedName struct { + Namespace string + Name string +} + +const ( + Separator = '/' +) + +// String returns the general purpose string representation +func (n NamespacedName) String() string { + return fmt.Sprintf("%s%c%s", n.Namespace, Separator, n.Name) +} + +// NewNamespacedNameFromString parses the provided string and returns a NamespacedName. +// The expected format is as per String() above. +// If the input string is invalid, the returned NamespacedName has all empty string field values. +// This allows a single-value return from this function, while still allowing error checks in the caller. +// Note that an input string which does not include exactly one Separator is not a valid input (as it could never +// have neem returned by String() ) +func NewNamespacedNameFromString(s string) NamespacedName { + nn := NamespacedName{} + result := strings.Split(s, string(Separator)) + if len(result) == 2 { + nn.Namespace = result[0] + nn.Name = result[1] + } + return nn +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/types/nodename.go b/vendor/k8s.io/client-go/1.5/pkg/types/nodename.go new file mode 100644 index 0000000000..fee348d7e7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/types/nodename.go @@ -0,0 +1,43 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// NodeName is a type that holds a api.Node's Name identifier. +// Being a type captures intent and helps make sure that the node name +// is not confused with similar concepts (the hostname, the cloud provider id, +// the cloud provider name etc) +// +// To clarify the various types: +// +// * Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. +// Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. +// +// * Hostname is the hostname of the local machine (from uname -n). +// However, some components allow the user to pass in a --hostname-override flag, +// which will override this in most places. In the absence of anything more meaningful, +// kubelet will use Hostname as the Node.Name when it creates the Node. +// +// * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. +// +// For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the +// Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up +// to the cloudprovider how to do this mapping. +// +// For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the +// PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if +// we are using a custom DHCP domain it won't be. +type NodeName string diff --git a/vendor/k8s.io/client-go/1.5/pkg/types/uid.go b/vendor/k8s.io/client-go/1.5/pkg/types/uid.go new file mode 100644 index 0000000000..869339222e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/types/uid.go @@ -0,0 +1,22 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// UID is a type that holds unique ID values, including UUIDs. Because we +// don't ONLY use UUIDs, this is an alias to string. Being a type captures +// intent and helps make sure that UIDs and names do not get conflated. +type UID string diff --git a/vendor/k8s.io/client-go/1.5/pkg/types/unix_user_id.go b/vendor/k8s.io/client-go/1.5/pkg/types/unix_user_id.go new file mode 100644 index 0000000000..dc770c11e2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/types/unix_user_id.go @@ -0,0 +1,23 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +// int64 is used as a safe bet against wrap-around (uid's are general +// int32) and to support uid_t -1, and -2. + +type UnixUserID int64 +type UnixGroupID int64 diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/cert/cert.go b/vendor/k8s.io/client-go/1.5/pkg/util/cert/cert.go new file mode 100644 index 0000000000..8617744a73 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/cert/cert.go @@ -0,0 +1,190 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "bytes" + "crypto/ecdsa" + "crypto/elliptic" + cryptorand "crypto/rand" + "crypto/rsa" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "fmt" + "math" + "math/big" + "net" + "time" +) + +const ( + rsaKeySize = 2048 + duration365d = time.Hour * 24 * 365 +) + +// Config containes the basic fields required for creating a certificate +type Config struct { + CommonName string + Organization []string + AltNames AltNames +} + +// AltNames contains the domain names and IP addresses that will be added +// to the API Server's x509 certificate SubAltNames field. The values will +// be passed directly to the x509.Certificate object. +type AltNames struct { + DNSNames []string + IPs []net.IP +} + +// NewPrivateKey creates an RSA private key +func NewPrivateKey() (*rsa.PrivateKey, error) { + return rsa.GenerateKey(cryptorand.Reader, rsaKeySize) +} + +// NewSelfSignedCACert creates a CA certificate +func NewSelfSignedCACert(cfg Config, key *rsa.PrivateKey) (*x509.Certificate, error) { + now := time.Now() + tmpl := x509.Certificate{ + SerialNumber: new(big.Int).SetInt64(0), + Subject: pkix.Name{ + CommonName: cfg.CommonName, + Organization: cfg.Organization, + }, + NotBefore: now.UTC(), + NotAfter: now.Add(duration365d * 10).UTC(), + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + BasicConstraintsValid: true, + IsCA: true, + } + + certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &tmpl, &tmpl, key.Public(), key) + if err != nil { + return nil, err + } + return x509.ParseCertificate(certDERBytes) +} + +// NewSignedCert creates a signed certificate using the given CA certificate and key +func NewSignedCert(cfg Config, key *rsa.PrivateKey, caCert *x509.Certificate, caKey *rsa.PrivateKey) (*x509.Certificate, error) { + serial, err := cryptorand.Int(cryptorand.Reader, new(big.Int).SetInt64(math.MaxInt64)) + if err != nil { + return nil, err + } + + certTmpl := x509.Certificate{ + Subject: pkix.Name{ + CommonName: cfg.CommonName, + Organization: caCert.Subject.Organization, + }, + DNSNames: cfg.AltNames.DNSNames, + IPAddresses: cfg.AltNames.IPs, + SerialNumber: serial, + NotBefore: caCert.NotBefore, + NotAfter: time.Now().Add(duration365d).UTC(), + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth}, + } + certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &certTmpl, caCert, key.Public(), caKey) + if err != nil { + return nil, err + } + return x509.ParseCertificate(certDERBytes) +} + +// MakeEllipticPrivateKeyPEM creates an ECDSA private key +func MakeEllipticPrivateKeyPEM() ([]byte, error) { + privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader) + if err != nil { + return nil, err + } + + derBytes, err := x509.MarshalECPrivateKey(privateKey) + if err != nil { + return nil, err + } + + privateKeyPemBlock := &pem.Block{ + Type: "EC PRIVATE KEY", + Bytes: derBytes, + } + return pem.EncodeToMemory(privateKeyPemBlock), nil +} + +// GenerateSelfSignedCert creates a self-signed certificate and key for the given host. +// Host may be an IP or a DNS name +// You may also specify additional subject alt names (either ip or dns names) for the certificate +// The certificate will be created with file mode 0644. The key will be created with file mode 0600. +// If the certificate or key files already exist, they will be overwritten. +// Any parent directories of the certPath or keyPath will be created as needed with file mode 0755. +func GenerateSelfSignedCert(host, certPath, keyPath string, alternateIPs []net.IP, alternateDNS []string) error { + priv, err := rsa.GenerateKey(cryptorand.Reader, 2048) + if err != nil { + return err + } + + template := x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{ + CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()), + }, + NotBefore: time.Now(), + NotAfter: time.Now().Add(time.Hour * 24 * 365), + + KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, + BasicConstraintsValid: true, + IsCA: true, + } + + if ip := net.ParseIP(host); ip != nil { + template.IPAddresses = append(template.IPAddresses, ip) + } else { + template.DNSNames = append(template.DNSNames, host) + } + + template.IPAddresses = append(template.IPAddresses, alternateIPs...) + template.DNSNames = append(template.DNSNames, alternateDNS...) + + derBytes, err := x509.CreateCertificate(cryptorand.Reader, &template, &template, &priv.PublicKey, priv) + if err != nil { + return err + } + + // Generate cert + certBuffer := bytes.Buffer{} + if err := pem.Encode(&certBuffer, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}); err != nil { + return err + } + + // Generate key + keyBuffer := bytes.Buffer{} + if err := pem.Encode(&keyBuffer, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}); err != nil { + return err + } + + if err := WriteCert(certPath, certBuffer.Bytes()); err != nil { + return err + } + + if err := WriteKey(keyPath, keyBuffer.Bytes()); err != nil { + return err + } + + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/cert/csr.go b/vendor/k8s.io/client-go/1.5/pkg/util/cert/csr.go new file mode 100644 index 0000000000..f03e8d8262 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/cert/csr.go @@ -0,0 +1,81 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + cryptorand "crypto/rand" + "crypto/rsa" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + "errors" + "net" + + "k8s.io/client-go/1.5/pkg/apis/certificates" +) + +// ParseCSR extracts the CSR from the API object and decodes it. +func ParseCSR(obj *certificates.CertificateSigningRequest) (*x509.CertificateRequest, error) { + // extract PEM from request object + pemBytes := obj.Spec.Request + block, _ := pem.Decode(pemBytes) + if block == nil || block.Type != "CERTIFICATE REQUEST" { + return nil, errors.New("PEM block type must be CERTIFICATE REQUEST") + } + csr, err := x509.ParseCertificateRequest(block.Bytes) + if err != nil { + return nil, err + } + return csr, nil +} + +// MakeCSR generates a PEM-encoded CSR using the supplied private key, subject, and SANs. +// All key types that are implemented via crypto.Signer are supported (This includes *rsa.PrivateKey and *ecdsa.PrivateKey.) +func MakeCSR(privateKey interface{}, subject *pkix.Name, dnsSANs []string, ipSANs []net.IP) (csr []byte, err error) { + // Customize the signature for RSA keys, depending on the key size + var sigType x509.SignatureAlgorithm + if privateKey, ok := privateKey.(*rsa.PrivateKey); ok { + keySize := privateKey.N.BitLen() + switch { + case keySize >= 4096: + sigType = x509.SHA512WithRSA + case keySize >= 3072: + sigType = x509.SHA384WithRSA + default: + sigType = x509.SHA256WithRSA + } + } + + template := &x509.CertificateRequest{ + Subject: *subject, + SignatureAlgorithm: sigType, + DNSNames: dnsSANs, + IPAddresses: ipSANs, + } + + csr, err = x509.CreateCertificateRequest(cryptorand.Reader, template, privateKey) + if err != nil { + return nil, err + } + + csrPemBlock := &pem.Block{ + Type: "CERTIFICATE REQUEST", + Bytes: csr, + } + + return pem.EncodeToMemory(csrPemBlock), nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/cert/io.go b/vendor/k8s.io/client-go/1.5/pkg/util/cert/io.go new file mode 100644 index 0000000000..9a3e1622f3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/cert/io.go @@ -0,0 +1,108 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "crypto/x509" + "errors" + "fmt" + "io/ioutil" + "os" + "path/filepath" +) + +// CanReadCertOrKey returns true if the certificate or key files already exists, +// otherwise returns false. +func CanReadCertOrKey(certPath, keyPath string) bool { + if canReadFile(certPath) || canReadFile(keyPath) { + return true + } + + return false +} + +// If the file represented by path exists and +// readable, returns true otherwise returns false. +func canReadFile(path string) bool { + f, err := os.Open(path) + if err != nil { + return false + } + + defer f.Close() + + return true +} + +// WriteCert writes the pem-encoded certificate data to certPath. +// The certificate file will be created with file mode 0644. +// If the certificate file already exists, it will be overwritten. +// The parent directory of the certPath will be created as needed with file mode 0755. +func WriteCert(certPath string, data []byte) error { + if err := os.MkdirAll(filepath.Dir(certPath), os.FileMode(0755)); err != nil { + return err + } + if err := ioutil.WriteFile(certPath, data, os.FileMode(0644)); err != nil { + return err + } + return nil +} + +// WriteKey writes the pem-encoded key data to keyPath. +// The key file will be created with file mode 0600. +// If the key file already exists, it will be overwritten. +// The parent directory of the keyPath will be created as needed with file mode 0755. +func WriteKey(keyPath string, data []byte) error { + if err := os.MkdirAll(filepath.Dir(keyPath), os.FileMode(0755)); err != nil { + return err + } + if err := ioutil.WriteFile(keyPath, data, os.FileMode(0600)); err != nil { + return err + } + return nil +} + +// NewPool returns an x509.CertPool containing the certificates in the given PEM-encoded file. +// Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates +func NewPool(filename string) (*x509.CertPool, error) { + certs, err := certsFromFile(filename) + if err != nil { + return nil, err + } + pool := x509.NewCertPool() + for _, cert := range certs { + pool.AddCert(cert) + } + return pool, nil +} + +// certsFromFile returns the x509.Certificates contained in the given PEM-encoded file. +// Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates +func certsFromFile(file string) ([]*x509.Certificate, error) { + if len(file) == 0 { + return nil, errors.New("error reading certificates from an empty filename") + } + pemBlock, err := ioutil.ReadFile(file) + if err != nil { + return nil, err + } + certs, err := ParseCertsPEM(pemBlock) + if err != nil { + return nil, fmt.Errorf("error reading %s: %s", file, err) + } + return certs, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/cert/pem.go b/vendor/k8s.io/client-go/1.5/pkg/util/cert/pem.go new file mode 100644 index 0000000000..59e602d2f1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/cert/pem.go @@ -0,0 +1,107 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cert + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/pem" + "errors" + "fmt" +) + +// EncodePublicKeyPEM returns PEM-endcode public data +func EncodePublicKeyPEM(key *rsa.PublicKey) ([]byte, error) { + der, err := x509.MarshalPKIXPublicKey(key) + if err != nil { + return []byte{}, err + } + block := pem.Block{ + Type: "PUBLIC KEY", + Bytes: der, + } + return pem.EncodeToMemory(&block), nil +} + +// EncodePrivateKeyPEM returns PEM-encoded private key data +func EncodePrivateKeyPEM(key *rsa.PrivateKey) []byte { + block := pem.Block{ + Type: "RSA PRIVATE KEY", + Bytes: x509.MarshalPKCS1PrivateKey(key), + } + return pem.EncodeToMemory(&block) +} + +// EncodeCertPEM returns PEM-endcoded certificate data +func EncodeCertPEM(cert *x509.Certificate) []byte { + block := pem.Block{ + Type: "CERTIFICATE", + Bytes: cert.Raw, + } + return pem.EncodeToMemory(&block) +} + +// ParsePrivateKeyPEM returns a private key parsed from a PEM block in the supplied data. +// Recognizes PEM blocks for "EC PRIVATE KEY" and "RSA PRIVATE KEY" +func ParsePrivateKeyPEM(keyData []byte) (interface{}, error) { + for { + var privateKeyPemBlock *pem.Block + privateKeyPemBlock, keyData = pem.Decode(keyData) + if privateKeyPemBlock == nil { + // we read all the PEM blocks and didn't recognize one + return nil, fmt.Errorf("no private key PEM block found") + } + + switch privateKeyPemBlock.Type { + case "EC PRIVATE KEY": + return x509.ParseECPrivateKey(privateKeyPemBlock.Bytes) + case "RSA PRIVATE KEY": + return x509.ParsePKCS1PrivateKey(privateKeyPemBlock.Bytes) + } + } +} + +// ParseCertsPEM returns the x509.Certificates contained in the given PEM-encoded byte array +// Returns an error if a certificate could not be parsed, or if the data does not contain any certificates +func ParseCertsPEM(pemCerts []byte) ([]*x509.Certificate, error) { + ok := false + certs := []*x509.Certificate{} + for len(pemCerts) > 0 { + var block *pem.Block + block, pemCerts = pem.Decode(pemCerts) + if block == nil { + break + } + // Only use PEM "CERTIFICATE" blocks without extra headers + if block.Type != "CERTIFICATE" || len(block.Headers) != 0 { + continue + } + + cert, err := x509.ParseCertificate(block.Bytes) + if err != nil { + return certs, err + } + + certs = append(certs, cert) + ok = true + } + + if !ok { + return certs, errors.New("could not read any certificates") + } + return certs, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/clock/clock.go b/vendor/k8s.io/client-go/1.5/pkg/util/clock/clock.go new file mode 100644 index 0000000000..2ea1b53c1a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/clock/clock.go @@ -0,0 +1,218 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package clock + +import ( + "sync" + "time" +) + +// Clock allows for injecting fake or real clocks into code that +// needs to do arbitrary things based on time. +type Clock interface { + Now() time.Time + Since(time.Time) time.Duration + After(d time.Duration) <-chan time.Time + Sleep(d time.Duration) + Tick(d time.Duration) <-chan time.Time +} + +var ( + _ = Clock(RealClock{}) + _ = Clock(&FakeClock{}) + _ = Clock(&IntervalClock{}) +) + +// RealClock really calls time.Now() +type RealClock struct{} + +// Now returns the current time. +func (RealClock) Now() time.Time { + return time.Now() +} + +// Since returns time since the specified timestamp. +func (RealClock) Since(ts time.Time) time.Duration { + return time.Since(ts) +} + +// Same as time.After(d). +func (RealClock) After(d time.Duration) <-chan time.Time { + return time.After(d) +} + +func (RealClock) Tick(d time.Duration) <-chan time.Time { + return time.Tick(d) +} + +func (RealClock) Sleep(d time.Duration) { + time.Sleep(d) +} + +// FakeClock implements Clock, but returns an arbitrary time. +type FakeClock struct { + lock sync.RWMutex + time time.Time + + // waiters are waiting for the fake time to pass their specified time + waiters []fakeClockWaiter +} + +type fakeClockWaiter struct { + targetTime time.Time + stepInterval time.Duration + skipIfBlocked bool + destChan chan<- time.Time +} + +func NewFakeClock(t time.Time) *FakeClock { + return &FakeClock{ + time: t, + } +} + +// Now returns f's time. +func (f *FakeClock) Now() time.Time { + f.lock.RLock() + defer f.lock.RUnlock() + return f.time +} + +// Since returns time since the time in f. +func (f *FakeClock) Since(ts time.Time) time.Duration { + f.lock.RLock() + defer f.lock.RUnlock() + return f.time.Sub(ts) +} + +// Fake version of time.After(d). +func (f *FakeClock) After(d time.Duration) <-chan time.Time { + f.lock.Lock() + defer f.lock.Unlock() + stopTime := f.time.Add(d) + ch := make(chan time.Time, 1) // Don't block! + f.waiters = append(f.waiters, fakeClockWaiter{ + targetTime: stopTime, + destChan: ch, + }) + return ch +} + +func (f *FakeClock) Tick(d time.Duration) <-chan time.Time { + f.lock.Lock() + defer f.lock.Unlock() + tickTime := f.time.Add(d) + ch := make(chan time.Time, 1) // hold one tick + f.waiters = append(f.waiters, fakeClockWaiter{ + targetTime: tickTime, + stepInterval: d, + skipIfBlocked: true, + destChan: ch, + }) + + return ch +} + +// Move clock by Duration, notify anyone that's called After or Tick +func (f *FakeClock) Step(d time.Duration) { + f.lock.Lock() + defer f.lock.Unlock() + f.setTimeLocked(f.time.Add(d)) +} + +// Sets the time. +func (f *FakeClock) SetTime(t time.Time) { + f.lock.Lock() + defer f.lock.Unlock() + f.setTimeLocked(t) +} + +// Actually changes the time and checks any waiters. f must be write-locked. +func (f *FakeClock) setTimeLocked(t time.Time) { + f.time = t + newWaiters := make([]fakeClockWaiter, 0, len(f.waiters)) + for i := range f.waiters { + w := &f.waiters[i] + if !w.targetTime.After(t) { + + if w.skipIfBlocked { + select { + case w.destChan <- t: + default: + } + } else { + w.destChan <- t + } + + if w.stepInterval > 0 { + for !w.targetTime.After(t) { + w.targetTime = w.targetTime.Add(w.stepInterval) + } + newWaiters = append(newWaiters, *w) + } + + } else { + newWaiters = append(newWaiters, f.waiters[i]) + } + } + f.waiters = newWaiters +} + +// Returns true if After has been called on f but not yet satisfied (so you can +// write race-free tests). +func (f *FakeClock) HasWaiters() bool { + f.lock.RLock() + defer f.lock.RUnlock() + return len(f.waiters) > 0 +} + +func (f *FakeClock) Sleep(d time.Duration) { + f.Step(d) +} + +// IntervalClock implements Clock, but each invocation of Now steps the clock forward the specified duration +type IntervalClock struct { + Time time.Time + Duration time.Duration +} + +// Now returns i's time. +func (i *IntervalClock) Now() time.Time { + i.Time = i.Time.Add(i.Duration) + return i.Time +} + +// Since returns time since the time in i. +func (i *IntervalClock) Since(ts time.Time) time.Duration { + return i.Time.Sub(ts) +} + +// Unimplemented, will panic. +// TODO: make interval clock use FakeClock so this can be implemented. +func (*IntervalClock) After(d time.Duration) <-chan time.Time { + panic("IntervalClock doesn't implement After") +} + +// Unimplemented, will panic. +// TODO: make interval clock use FakeClock so this can be implemented. +func (*IntervalClock) Tick(d time.Duration) <-chan time.Time { + panic("IntervalClock doesn't implement Tick") +} + +func (*IntervalClock) Sleep(d time.Duration) { + panic("IntervalClock doesn't implement Sleep") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/doc.go b/vendor/k8s.io/client-go/1.5/pkg/util/doc.go new file mode 100644 index 0000000000..1747db5506 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package util implements various utility functions used in both testing and implementation +// of Kubernetes. Package util may not depend on any other package in the Kubernetes +// package tree. +package util diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/errors/doc.go b/vendor/k8s.io/client-go/1.5/pkg/util/errors/doc.go new file mode 100644 index 0000000000..b3b39bc388 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/errors/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package errors implements various utility functions and types around errors. +package errors diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/errors/errors.go b/vendor/k8s.io/client-go/1.5/pkg/util/errors/errors.go new file mode 100644 index 0000000000..de62fe3997 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/errors/errors.go @@ -0,0 +1,182 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package errors + +import ( + "errors" + "fmt" +) + +// Aggregate represents an object that contains multiple errors, but does not +// necessarily have singular semantic meaning. +type Aggregate interface { + error + Errors() []error +} + +// NewAggregate converts a slice of errors into an Aggregate interface, which +// is itself an implementation of the error interface. If the slice is empty, +// this returns nil. +// It will check if any of the element of input error list is nil, to avoid +// nil pointer panic when call Error(). +func NewAggregate(errlist []error) Aggregate { + if len(errlist) == 0 { + return nil + } + // In case of input error list contains nil + var errs []error + for _, e := range errlist { + if e != nil { + errs = append(errs, e) + } + } + if len(errs) == 0 { + return nil + } + return aggregate(errs) +} + +// This helper implements the error and Errors interfaces. Keeping it private +// prevents people from making an aggregate of 0 errors, which is not +// an error, but does satisfy the error interface. +type aggregate []error + +// Error is part of the error interface. +func (agg aggregate) Error() string { + if len(agg) == 0 { + // This should never happen, really. + return "" + } + if len(agg) == 1 { + return agg[0].Error() + } + result := fmt.Sprintf("[%s", agg[0].Error()) + for i := 1; i < len(agg); i++ { + result += fmt.Sprintf(", %s", agg[i].Error()) + } + result += "]" + return result +} + +// Errors is part of the Aggregate interface. +func (agg aggregate) Errors() []error { + return []error(agg) +} + +// Matcher is used to match errors. Returns true if the error matches. +type Matcher func(error) bool + +// FilterOut removes all errors that match any of the matchers from the input +// error. If the input is a singular error, only that error is tested. If the +// input implements the Aggregate interface, the list of errors will be +// processed recursively. +// +// This can be used, for example, to remove known-OK errors (such as io.EOF or +// os.PathNotFound) from a list of errors. +func FilterOut(err error, fns ...Matcher) error { + if err == nil { + return nil + } + if agg, ok := err.(Aggregate); ok { + return NewAggregate(filterErrors(agg.Errors(), fns...)) + } + if !matchesError(err, fns...) { + return err + } + return nil +} + +// matchesError returns true if any Matcher returns true +func matchesError(err error, fns ...Matcher) bool { + for _, fn := range fns { + if fn(err) { + return true + } + } + return false +} + +// filterErrors returns any errors (or nested errors, if the list contains +// nested Errors) for which all fns return false. If no errors +// remain a nil list is returned. The resulting silec will have all +// nested slices flattened as a side effect. +func filterErrors(list []error, fns ...Matcher) []error { + result := []error{} + for _, err := range list { + r := FilterOut(err, fns...) + if r != nil { + result = append(result, r) + } + } + return result +} + +// Flatten takes an Aggregate, which may hold other Aggregates in arbitrary +// nesting, and flattens them all into a single Aggregate, recursively. +func Flatten(agg Aggregate) Aggregate { + result := []error{} + if agg == nil { + return nil + } + for _, err := range agg.Errors() { + if a, ok := err.(Aggregate); ok { + r := Flatten(a) + if r != nil { + result = append(result, r.Errors()...) + } + } else { + if err != nil { + result = append(result, err) + } + } + } + return NewAggregate(result) +} + +// Reduce will return err or, if err is an Aggregate and only has one item, +// the first item in the aggregate. +func Reduce(err error) error { + if agg, ok := err.(Aggregate); ok && err != nil { + switch len(agg.Errors()) { + case 1: + return agg.Errors()[0] + case 0: + return nil + } + } + return err +} + +// AggregateGoroutines runs the provided functions in parallel, stuffing all +// non-nil errors into the returned Aggregate. +// Returns nil if all the functions complete successfully. +func AggregateGoroutines(funcs ...func() error) Aggregate { + errChan := make(chan error, len(funcs)) + for _, f := range funcs { + go func(f func() error) { errChan <- f() }(f) + } + errs := make([]error, 0) + for i := 0; i < cap(errChan); i++ { + if err := <-errChan; err != nil { + errs = append(errs, err) + } + } + return NewAggregate(errs) +} + +// ErrPreconditionViolated is returned when the precondition is violated +var ErrPreconditionViolated = errors.New("precondition is violated") diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/backoff.go b/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/backoff.go new file mode 100644 index 0000000000..dae8980652 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/backoff.go @@ -0,0 +1,149 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "sync" + "time" + + "k8s.io/client-go/1.5/pkg/util/clock" + "k8s.io/client-go/1.5/pkg/util/integer" +) + +type backoffEntry struct { + backoff time.Duration + lastUpdate time.Time +} + +type Backoff struct { + sync.Mutex + Clock clock.Clock + defaultDuration time.Duration + maxDuration time.Duration + perItemBackoff map[string]*backoffEntry +} + +func NewFakeBackOff(initial, max time.Duration, tc *clock.FakeClock) *Backoff { + return &Backoff{ + perItemBackoff: map[string]*backoffEntry{}, + Clock: tc, + defaultDuration: initial, + maxDuration: max, + } +} + +func NewBackOff(initial, max time.Duration) *Backoff { + return &Backoff{ + perItemBackoff: map[string]*backoffEntry{}, + Clock: clock.RealClock{}, + defaultDuration: initial, + maxDuration: max, + } +} + +// Get the current backoff Duration +func (p *Backoff) Get(id string) time.Duration { + p.Lock() + defer p.Unlock() + var delay time.Duration + entry, ok := p.perItemBackoff[id] + if ok { + delay = entry.backoff + } + return delay +} + +// move backoff to the next mark, capping at maxDuration +func (p *Backoff) Next(id string, eventTime time.Time) { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok || hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + entry = p.initEntryUnsafe(id) + } else { + delay := entry.backoff * 2 // exponential + entry.backoff = time.Duration(integer.Int64Min(int64(delay), int64(p.maxDuration))) + } + entry.lastUpdate = p.Clock.Now() +} + +// Reset forces clearing of all backoff data for a given key. +func (p *Backoff) Reset(id string) { + p.Lock() + defer p.Unlock() + delete(p.perItemBackoff, id) +} + +// Returns True if the elapsed time since eventTime is smaller than the current backoff window +func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok { + return false + } + if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + return false + } + return p.Clock.Now().Sub(eventTime) < entry.backoff +} + +// Returns True if time since lastupdate is less than the current backoff window. +func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool { + p.Lock() + defer p.Unlock() + entry, ok := p.perItemBackoff[id] + if !ok { + return false + } + if hasExpired(eventTime, entry.lastUpdate, p.maxDuration) { + return false + } + return eventTime.Sub(entry.lastUpdate) < entry.backoff +} + +// Garbage collect records that have aged past maxDuration. Backoff users are expected +// to invoke this periodically. +func (p *Backoff) GC() { + p.Lock() + defer p.Unlock() + now := p.Clock.Now() + for id, entry := range p.perItemBackoff { + if now.Sub(entry.lastUpdate) > p.maxDuration*2 { + // GC when entry has not been updated for 2*maxDuration + delete(p.perItemBackoff, id) + } + } +} + +func (p *Backoff) DeleteEntry(id string) { + p.Lock() + defer p.Unlock() + delete(p.perItemBackoff, id) +} + +// Take a lock on *Backoff, before calling initEntryUnsafe +func (p *Backoff) initEntryUnsafe(id string) *backoffEntry { + entry := &backoffEntry{backoff: p.defaultDuration} + p.perItemBackoff[id] = entry + return entry +} + +// After 2*maxDuration we restart the backoff factor to the beginning +func hasExpired(eventTime time.Time, lastUpdate time.Time, maxDuration time.Duration) bool { + return eventTime.Sub(lastUpdate) > maxDuration*2 // consider stable if it's ok for twice the maxDuration +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/throttle.go b/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/throttle.go new file mode 100644 index 0000000000..881a2f57d7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/flowcontrol/throttle.go @@ -0,0 +1,132 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package flowcontrol + +import ( + "sync" + + "github.com/juju/ratelimit" +) + +type RateLimiter interface { + // TryAccept returns true if a token is taken immediately. Otherwise, + // it returns false. + TryAccept() bool + // Accept returns once a token becomes available. + Accept() + // Stop stops the rate limiter, subsequent calls to CanAccept will return false + Stop() + // Saturation returns a percentage number which describes how saturated + // this rate limiter is. + // Usually we use token bucket rate limiter. In that case, + // 1.0 means no tokens are available; 0.0 means we have a full bucket of tokens to use. + Saturation() float64 + // QPS returns QPS of this rate limiter + QPS() float32 +} + +type tokenBucketRateLimiter struct { + limiter *ratelimit.Bucket + qps float32 +} + +// NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach. +// The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a +// smoothed qps rate of 'qps'. +// The bucket is initially filled with 'burst' tokens, and refills at a rate of 'qps'. +// The maximum number of tokens in the bucket is capped at 'burst'. +func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter { + limiter := ratelimit.NewBucketWithRate(float64(qps), int64(burst)) + return &tokenBucketRateLimiter{ + limiter: limiter, + qps: qps, + } +} + +func (t *tokenBucketRateLimiter) TryAccept() bool { + return t.limiter.TakeAvailable(1) == 1 +} + +func (t *tokenBucketRateLimiter) Saturation() float64 { + capacity := t.limiter.Capacity() + avail := t.limiter.Available() + return float64(capacity-avail) / float64(capacity) +} + +// Accept will block until a token becomes available +func (t *tokenBucketRateLimiter) Accept() { + t.limiter.Wait(1) +} + +func (t *tokenBucketRateLimiter) Stop() { +} + +func (t *tokenBucketRateLimiter) QPS() float32 { + return t.qps +} + +type fakeAlwaysRateLimiter struct{} + +func NewFakeAlwaysRateLimiter() RateLimiter { + return &fakeAlwaysRateLimiter{} +} + +func (t *fakeAlwaysRateLimiter) TryAccept() bool { + return true +} + +func (t *fakeAlwaysRateLimiter) Saturation() float64 { + return 0 +} + +func (t *fakeAlwaysRateLimiter) Stop() {} + +func (t *fakeAlwaysRateLimiter) Accept() {} + +func (t *fakeAlwaysRateLimiter) QPS() float32 { + return 1 +} + +type fakeNeverRateLimiter struct { + wg sync.WaitGroup +} + +func NewFakeNeverRateLimiter() RateLimiter { + rl := fakeNeverRateLimiter{} + rl.wg.Add(1) + return &rl +} + +func (t *fakeNeverRateLimiter) TryAccept() bool { + return false +} + +func (t *fakeNeverRateLimiter) Saturation() float64 { + return 1 +} + +func (t *fakeNeverRateLimiter) Stop() { + t.wg.Done() +} + +func (t *fakeNeverRateLimiter) Accept() { + t.wg.Wait() +} + +func (t *fakeNeverRateLimiter) QPS() float32 { + return 1 +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/framer/framer.go b/vendor/k8s.io/client-go/1.5/pkg/util/framer/framer.go new file mode 100644 index 0000000000..066680f443 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/framer/framer.go @@ -0,0 +1,167 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package framer implements simple frame decoding techniques for an io.ReadCloser +package framer + +import ( + "encoding/binary" + "encoding/json" + "io" +) + +type lengthDelimitedFrameWriter struct { + w io.Writer + h [4]byte +} + +func NewLengthDelimitedFrameWriter(w io.Writer) io.Writer { + return &lengthDelimitedFrameWriter{w: w} +} + +// Write writes a single frame to the nested writer, prepending it with the length in +// in bytes of data (as a 4 byte, bigendian uint32). +func (w *lengthDelimitedFrameWriter) Write(data []byte) (int, error) { + binary.BigEndian.PutUint32(w.h[:], uint32(len(data))) + n, err := w.w.Write(w.h[:]) + if err != nil { + return 0, err + } + if n != len(w.h) { + return 0, io.ErrShortWrite + } + return w.w.Write(data) +} + +type lengthDelimitedFrameReader struct { + r io.ReadCloser + remaining int +} + +// NewLengthDelimitedFrameReader returns an io.Reader that will decode length-prefixed +// frames off of a stream. +// +// The protocol is: +// +// stream: message ... +// message: prefix body +// prefix: 4 byte uint32 in BigEndian order, denotes length of body +// body: bytes (0..prefix) +// +// If the buffer passed to Read is not long enough to contain an entire frame, io.ErrShortRead +// will be returned along with the number of bytes read. +func NewLengthDelimitedFrameReader(r io.ReadCloser) io.ReadCloser { + return &lengthDelimitedFrameReader{r: r} +} + +// Read attempts to read an entire frame into data. If that is not possible, io.ErrShortBuffer +// is returned and subsequent calls will attempt to read the last frame. A frame is complete when +// err is nil. +func (r *lengthDelimitedFrameReader) Read(data []byte) (int, error) { + if r.remaining <= 0 { + header := [4]byte{} + n, err := io.ReadAtLeast(r.r, header[:4], 4) + if err != nil { + return 0, err + } + if n != 4 { + return 0, io.ErrUnexpectedEOF + } + frameLength := int(binary.BigEndian.Uint32(header[:])) + r.remaining = frameLength + } + + expect := r.remaining + max := expect + if max > len(data) { + max = len(data) + } + n, err := io.ReadAtLeast(r.r, data[:max], int(max)) + r.remaining -= n + if err == io.ErrShortBuffer || r.remaining > 0 { + return n, io.ErrShortBuffer + } + if err != nil { + return n, err + } + if n != expect { + return n, io.ErrUnexpectedEOF + } + + return n, nil +} + +func (r *lengthDelimitedFrameReader) Close() error { + return r.r.Close() +} + +type jsonFrameReader struct { + r io.ReadCloser + decoder *json.Decoder + remaining []byte +} + +// NewJSONFramedReader returns an io.Reader that will decode individual JSON objects off +// of a wire. +// +// The boundaries between each frame are valid JSON objects. A JSON parsing error will terminate +// the read. +func NewJSONFramedReader(r io.ReadCloser) io.ReadCloser { + return &jsonFrameReader{ + r: r, + decoder: json.NewDecoder(r), + } +} + +// ReadFrame decodes the next JSON object in the stream, or returns an error. The returned +// byte slice will be modified the next time ReadFrame is invoked and should not be altered. +func (r *jsonFrameReader) Read(data []byte) (int, error) { + // Return whatever remaining data exists from an in progress frame + if n := len(r.remaining); n > 0 { + if n <= len(data) { + data = append(data[0:0], r.remaining...) + r.remaining = nil + return n, nil + } + + n = len(data) + data = append(data[0:0], r.remaining[:n]...) + r.remaining = r.remaining[n:] + return n, io.ErrShortBuffer + } + + // RawMessage#Unmarshal appends to data - we reset the slice down to 0 and will either see + // data written to data, or be larger than data and a different array. + n := len(data) + m := json.RawMessage(data[:0]) + if err := r.decoder.Decode(&m); err != nil { + return 0, err + } + + // If capacity of data is less than length of the message, decoder will allocate a new slice + // and set m to it, which means we need to copy the partial result back into data and preserve + // the remaining result for subsequent reads. + if len(m) > n { + data = append(data[0:0], m[:n]...) + r.remaining = m[n:] + return n, io.ErrShortBuffer + } + return len(m), nil +} + +func (r *jsonFrameReader) Close() error { + return r.r.Close() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/integer/integer.go b/vendor/k8s.io/client-go/1.5/pkg/util/integer/integer.go new file mode 100644 index 0000000000..c6ea106f9b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/integer/integer.go @@ -0,0 +1,67 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package integer + +func IntMax(a, b int) int { + if b > a { + return b + } + return a +} + +func IntMin(a, b int) int { + if b < a { + return b + } + return a +} + +func Int32Max(a, b int32) int32 { + if b > a { + return b + } + return a +} + +func Int32Min(a, b int32) int32 { + if b < a { + return b + } + return a +} + +func Int64Max(a, b int64) int64 { + if b > a { + return b + } + return a +} + +func Int64Min(a, b int64) int64 { + if b < a { + return b + } + return a +} + +// RoundToInt32 rounds floats into integer numbers. +func RoundToInt32(a float64) int32 { + if a < 0 { + return int32(a - 0.5) + } + return int32(a + 0.5) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.pb.go new file mode 100644 index 0000000000..de36b07aed --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.pb.go @@ -0,0 +1,372 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/util/intstr/generated.proto +// DO NOT EDIT! + +/* + Package intstr is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/util/intstr/generated.proto + + It has these top-level messages: + IntOrString +*/ +package intstr + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *IntOrString) Reset() { *m = IntOrString{} } +func (*IntOrString) ProtoMessage() {} +func (*IntOrString) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func init() { + proto.RegisterType((*IntOrString)(nil), "k8s.io.client-go.1.5.pkg.util.intstr.IntOrString") +} +func (m *IntOrString) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *IntOrString) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0x8 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Type)) + data[i] = 0x10 + i++ + i = encodeVarintGenerated(data, i, uint64(m.IntVal)) + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.StrVal))) + i += copy(data[i:], m.StrVal) + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *IntOrString) Size() (n int) { + var l int + _ = l + n += 1 + sovGenerated(uint64(m.Type)) + n += 1 + sovGenerated(uint64(m.IntVal)) + l = len(m.StrVal) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *IntOrString) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: IntOrString: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IntOrString: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Type |= (Type(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IntVal", wireType) + } + m.IntVal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.IntVal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StrVal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StrVal = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 256 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0xcc, 0xb6, 0x28, 0xd6, + 0xcb, 0xcc, 0xd7, 0xcf, 0x2e, 0x4d, 0x4a, 0x2d, 0xca, 0x4b, 0x2d, 0x49, 0x2d, 0xd6, 0x2f, 0xc8, + 0x4e, 0xd7, 0x2f, 0x2d, 0xc9, 0xcc, 0xd1, 0xcf, 0xcc, 0x2b, 0x29, 0x2e, 0x29, 0xd2, 0x4f, 0x4f, + 0xcd, 0x4b, 0x2d, 0x4a, 0x2c, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0x84, + 0x68, 0xd1, 0x43, 0x68, 0xd1, 0x03, 0x6a, 0xd1, 0x03, 0x69, 0xd1, 0x83, 0x68, 0x91, 0xd2, 0x4d, + 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0x4f, 0xcf, 0xd7, 0x07, + 0xeb, 0x4c, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, 0x62, 0xa2, 0xd2, 0x44, 0x46, 0x2e, + 0x6e, 0xcf, 0xbc, 0x12, 0xff, 0xa2, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0x74, 0x21, 0x0d, 0x2e, 0x96, + 0x92, 0xca, 0x82, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x66, 0x27, 0x91, 0x13, 0xf7, 0xe4, 0x19, + 0x1e, 0xdd, 0x93, 0x67, 0x09, 0x01, 0x8a, 0xfd, 0x82, 0xd2, 0x41, 0x60, 0x15, 0x42, 0x6a, 0x5c, + 0x6c, 0x40, 0x2b, 0xc3, 0x12, 0x73, 0x24, 0x98, 0x80, 0x6a, 0x59, 0x9d, 0xf8, 0xa0, 0x6a, 0xd9, + 0x3c, 0xc1, 0xa2, 0x41, 0x50, 0x59, 0x90, 0x3a, 0xa0, 0xbb, 0x40, 0xea, 0x98, 0x81, 0xea, 0x38, + 0x11, 0xea, 0x82, 0xc1, 0xa2, 0x41, 0x50, 0x59, 0x2b, 0x8e, 0x19, 0x0b, 0xe4, 0x19, 0x1a, 0xee, + 0x28, 0x30, 0x38, 0x69, 0x9c, 0x78, 0x28, 0xc7, 0x70, 0x01, 0x88, 0x6f, 0x00, 0x71, 0xc3, 0x23, + 0x39, 0xc6, 0x13, 0x40, 0x7c, 0x01, 0x88, 0x1f, 0x00, 0xf1, 0x84, 0xc7, 0x72, 0x0c, 0x51, 0x6c, + 0x10, 0xcf, 0x02, 0x02, 0x00, 0x00, 0xff, 0xff, 0x68, 0x57, 0xfb, 0xfa, 0x43, 0x01, 0x00, 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.proto new file mode 100644 index 0000000000..4dc4e994a7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/generated.proto @@ -0,0 +1,43 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.util.intstr; + +// Package-wide variables from generator "generated". +option go_package = "intstr"; + +// IntOrString is a type that can hold an int32 or a string. When used in +// JSON or YAML marshalling and unmarshalling, it produces or consumes the +// inner type. This allows you to have, for example, a JSON field that can +// accept a name or number. +// TODO: Rename to Int32OrString +// +// +protobuf=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +message IntOrString { + optional int64 type = 1; + + optional int32 intVal = 2; + + optional string strVal = 3; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/intstr/intstr.go b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/intstr.go new file mode 100644 index 0000000000..28c0c0ed43 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/intstr/intstr.go @@ -0,0 +1,162 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package intstr + +import ( + "encoding/json" + "fmt" + "math" + "strconv" + "strings" + + "k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common" + + "github.com/go-openapi/spec" + "github.com/google/gofuzz" +) + +// IntOrString is a type that can hold an int32 or a string. When used in +// JSON or YAML marshalling and unmarshalling, it produces or consumes the +// inner type. This allows you to have, for example, a JSON field that can +// accept a name or number. +// TODO: Rename to Int32OrString +// +// +protobuf=true +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +k8s:openapi-gen=true +type IntOrString struct { + Type Type `protobuf:"varint,1,opt,name=type,casttype=Type"` + IntVal int32 `protobuf:"varint,2,opt,name=intVal"` + StrVal string `protobuf:"bytes,3,opt,name=strVal"` +} + +// Type represents the stored type of IntOrString. +type Type int + +const ( + Int Type = iota // The IntOrString holds an int. + String // The IntOrString holds a string. +) + +// FromInt creates an IntOrString object with an int32 value. It is +// your responsibility not to call this method with a value greater +// than int32. +// TODO: convert to (val int32) +func FromInt(val int) IntOrString { + return IntOrString{Type: Int, IntVal: int32(val)} +} + +// FromString creates an IntOrString object with a string value. +func FromString(val string) IntOrString { + return IntOrString{Type: String, StrVal: val} +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (intstr *IntOrString) UnmarshalJSON(value []byte) error { + if value[0] == '"' { + intstr.Type = String + return json.Unmarshal(value, &intstr.StrVal) + } + intstr.Type = Int + return json.Unmarshal(value, &intstr.IntVal) +} + +// String returns the string value, or the Itoa of the int value. +func (intstr *IntOrString) String() string { + if intstr.Type == String { + return intstr.StrVal + } + return strconv.Itoa(intstr.IntValue()) +} + +// IntValue returns the IntVal if type Int, or if +// it is a String, will attempt a conversion to int. +func (intstr *IntOrString) IntValue() int { + if intstr.Type == String { + i, _ := strconv.Atoi(intstr.StrVal) + return i + } + return int(intstr.IntVal) +} + +// MarshalJSON implements the json.Marshaller interface. +func (intstr IntOrString) MarshalJSON() ([]byte, error) { + switch intstr.Type { + case Int: + return json.Marshal(intstr.IntVal) + case String: + return json.Marshal(intstr.StrVal) + default: + return []byte{}, fmt.Errorf("impossible IntOrString.Type") + } +} + +func (_ IntOrString) OpenAPIDefinition() common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Format: "int-or-string", + }, + }, + } +} + +func (intstr *IntOrString) Fuzz(c fuzz.Continue) { + if intstr == nil { + return + } + if c.RandBool() { + intstr.Type = Int + c.Fuzz(&intstr.IntVal) + intstr.StrVal = "" + } else { + intstr.Type = String + intstr.IntVal = 0 + c.Fuzz(&intstr.StrVal) + } +} + +func GetValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) { + value, isPercent, err := getIntOrPercentValue(intOrPercent) + if err != nil { + return 0, fmt.Errorf("invalid value for IntOrString: %v", err) + } + if isPercent { + if roundUp { + value = int(math.Ceil(float64(value) * (float64(total)) / 100)) + } else { + value = int(math.Floor(float64(value) * (float64(total)) / 100)) + } + } + return value, nil +} + +func getIntOrPercentValue(intOrStr *IntOrString) (int, bool, error) { + switch intOrStr.Type { + case Int: + return intOrStr.IntValue(), false, nil + case String: + s := strings.Replace(intOrStr.StrVal, "%", "", -1) + v, err := strconv.Atoi(s) + if err != nil { + return 0, false, fmt.Errorf("invalid value %q: %v", intOrStr.StrVal, err) + } + return int(v), true, nil + } + return 0, false, fmt.Errorf("invalid type: neither int nor percentage") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/json/json.go b/vendor/k8s.io/client-go/1.5/pkg/util/json/json.go new file mode 100644 index 0000000000..e8054a12ed --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/json/json.go @@ -0,0 +1,107 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package json + +import ( + "bytes" + "encoding/json" + "io" +) + +// NewEncoder delegates to json.NewEncoder +// It is only here so this package can be a drop-in for common encoding/json uses +func NewEncoder(w io.Writer) *json.Encoder { + return json.NewEncoder(w) +} + +// Marshal delegates to json.Marshal +// It is only here so this package can be a drop-in for common encoding/json uses +func Marshal(v interface{}) ([]byte, error) { + return json.Marshal(v) +} + +// Unmarshal unmarshals the given data +// If v is a *map[string]interface{}, numbers are converted to int64 or float64 +func Unmarshal(data []byte, v interface{}) error { + switch v := v.(type) { + case *map[string]interface{}: + // Build a decoder from the given data + decoder := json.NewDecoder(bytes.NewBuffer(data)) + // Preserve numbers, rather than casting to float64 automatically + decoder.UseNumber() + // Run the decode + if err := decoder.Decode(v); err != nil { + return err + } + // If the decode succeeds, post-process the map to convert json.Number objects to int64 or float64 + return convertMapNumbers(*v) + + default: + return json.Unmarshal(data, v) + } +} + +// convertMapNumbers traverses the map, converting any json.Number values to int64 or float64. +// values which are map[string]interface{} or []interface{} are recursively visited +func convertMapNumbers(m map[string]interface{}) error { + var err error + for k, v := range m { + switch v := v.(type) { + case json.Number: + m[k], err = convertNumber(v) + case map[string]interface{}: + err = convertMapNumbers(v) + case []interface{}: + err = convertSliceNumbers(v) + } + if err != nil { + return err + } + } + return nil +} + +// convertSliceNumbers traverses the slice, converting any json.Number values to int64 or float64. +// values which are map[string]interface{} or []interface{} are recursively visited +func convertSliceNumbers(s []interface{}) error { + var err error + for i, v := range s { + switch v := v.(type) { + case json.Number: + s[i], err = convertNumber(v) + case map[string]interface{}: + err = convertMapNumbers(v) + case []interface{}: + err = convertSliceNumbers(v) + } + if err != nil { + return err + } + } + return nil +} + +// convertNumber converts a json.Number to an int64 or float64, or returns an error +func convertNumber(n json.Number) (interface{}, error) { + // Attempt to convert to an int64 first + if i, err := n.Int64(); err == nil { + return i, nil + } + // Return a float64 (default json.Decode() behavior) + // An overflow will return an error + return n.Float64() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/labels/doc.go b/vendor/k8s.io/client-go/1.5/pkg/util/labels/doc.go new file mode 100644 index 0000000000..c87305fb09 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/labels/doc.go @@ -0,0 +1,18 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package labels provides utilities to work with Kubernetes labels. +package labels diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/labels/labels.go b/vendor/k8s.io/client-go/1.5/pkg/util/labels/labels.go new file mode 100644 index 0000000000..37f60cffb1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/labels/labels.go @@ -0,0 +1,126 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package labels + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// Clones the given map and returns a new map with the given key and value added. +// Returns the given map, if labelKey is empty. +func CloneAndAddLabel(labels map[string]string, labelKey string, labelValue uint32) map[string]string { + if labelKey == "" { + // Don't need to add a label. + return labels + } + // Clone. + newLabels := map[string]string{} + for key, value := range labels { + newLabels[key] = value + } + newLabels[labelKey] = fmt.Sprintf("%d", labelValue) + return newLabels +} + +// CloneAndRemoveLabel clones the given map and returns a new map with the given key removed. +// Returns the given map, if labelKey is empty. +func CloneAndRemoveLabel(labels map[string]string, labelKey string) map[string]string { + if labelKey == "" { + // Don't need to add a label. + return labels + } + // Clone. + newLabels := map[string]string{} + for key, value := range labels { + newLabels[key] = value + } + delete(newLabels, labelKey) + return newLabels +} + +// AddLabel returns a map with the given key and value added to the given map. +func AddLabel(labels map[string]string, labelKey string, labelValue string) map[string]string { + if labelKey == "" { + // Don't need to add a label. + return labels + } + if labels == nil { + labels = make(map[string]string) + } + labels[labelKey] = labelValue + return labels +} + +// Clones the given selector and returns a new selector with the given key and value added. +// Returns the given selector, if labelKey is empty. +func CloneSelectorAndAddLabel(selector *unversioned.LabelSelector, labelKey string, labelValue uint32) *unversioned.LabelSelector { + if labelKey == "" { + // Don't need to add a label. + return selector + } + + // Clone. + newSelector := new(unversioned.LabelSelector) + + // TODO(madhusudancs): Check if you can use deepCopy_extensions_LabelSelector here. + newSelector.MatchLabels = make(map[string]string) + if selector.MatchLabels != nil { + for key, val := range selector.MatchLabels { + newSelector.MatchLabels[key] = val + } + } + newSelector.MatchLabels[labelKey] = fmt.Sprintf("%d", labelValue) + + if selector.MatchExpressions != nil { + newMExps := make([]unversioned.LabelSelectorRequirement, len(selector.MatchExpressions)) + for i, me := range selector.MatchExpressions { + newMExps[i].Key = me.Key + newMExps[i].Operator = me.Operator + if me.Values != nil { + newMExps[i].Values = make([]string, len(me.Values)) + copy(newMExps[i].Values, me.Values) + } else { + newMExps[i].Values = nil + } + } + newSelector.MatchExpressions = newMExps + } else { + newSelector.MatchExpressions = nil + } + + return newSelector +} + +// AddLabelToSelector returns a selector with the given key and value added to the given selector's MatchLabels. +func AddLabelToSelector(selector *unversioned.LabelSelector, labelKey string, labelValue string) *unversioned.LabelSelector { + if labelKey == "" { + // Don't need to add a label. + return selector + } + if selector.MatchLabels == nil { + selector.MatchLabels = make(map[string]string) + } + selector.MatchLabels[labelKey] = labelValue + return selector +} + +// SelectorHasLabel checks if the given selector contains the given label key in its MatchLabels +func SelectorHasLabel(selector *unversioned.LabelSelector, labelKey string) bool { + return len(selector.MatchLabels[labelKey]) > 0 +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/net/http.go b/vendor/k8s.io/client-go/1.5/pkg/util/net/http.go new file mode 100644 index 0000000000..bfe2e09375 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/net/http.go @@ -0,0 +1,263 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "crypto/tls" + "fmt" + "io" + "net" + "net/http" + "net/url" + "os" + "strconv" + "strings" + + "github.com/golang/glog" + "golang.org/x/net/http2" +) + +// IsProbableEOF returns true if the given error resembles a connection termination +// scenario that would justify assuming that the watch is empty. +// These errors are what the Go http stack returns back to us which are general +// connection closure errors (strongly correlated) and callers that need to +// differentiate probable errors in connection behavior between normal "this is +// disconnected" should use the method. +func IsProbableEOF(err error) bool { + if uerr, ok := err.(*url.Error); ok { + err = uerr.Err + } + switch { + case err == io.EOF: + return true + case err.Error() == "http: can't write HTTP request on broken connection": + return true + case strings.Contains(err.Error(), "connection reset by peer"): + return true + case strings.Contains(strings.ToLower(err.Error()), "use of closed network connection"): + return true + } + return false +} + +var defaultTransport = http.DefaultTransport.(*http.Transport) + +// SetOldTransportDefaults applies the defaults from http.DefaultTransport +// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset +func SetOldTransportDefaults(t *http.Transport) *http.Transport { + if t.Proxy == nil || isDefault(t.Proxy) { + // http.ProxyFromEnvironment doesn't respect CIDRs and that makes it impossible to exclude things like pod and service IPs from proxy settings + // ProxierWithNoProxyCIDR allows CIDR rules in NO_PROXY + t.Proxy = NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment) + } + if t.Dial == nil { + t.Dial = defaultTransport.Dial + } + if t.TLSHandshakeTimeout == 0 { + t.TLSHandshakeTimeout = defaultTransport.TLSHandshakeTimeout + } + return t +} + +// SetTransportDefaults applies the defaults from http.DefaultTransport +// for the Proxy, Dial, and TLSHandshakeTimeout fields if unset +func SetTransportDefaults(t *http.Transport) *http.Transport { + t = SetOldTransportDefaults(t) + // Allow clients to disable http2 if needed. + if s := os.Getenv("DISABLE_HTTP2"); len(s) > 0 { + glog.Infof("HTTP2 has been explicitly disabled") + } else { + if err := http2.ConfigureTransport(t); err != nil { + glog.Warningf("Transport failed http2 configuration: %v", err) + } + } + return t +} + +type RoundTripperWrapper interface { + http.RoundTripper + WrappedRoundTripper() http.RoundTripper +} + +type DialFunc func(net, addr string) (net.Conn, error) + +func Dialer(transport http.RoundTripper) (DialFunc, error) { + if transport == nil { + return nil, nil + } + + switch transport := transport.(type) { + case *http.Transport: + return transport.Dial, nil + case RoundTripperWrapper: + return Dialer(transport.WrappedRoundTripper()) + default: + return nil, fmt.Errorf("unknown transport type: %v", transport) + } +} + +// CloneTLSConfig returns a tls.Config with all exported fields except SessionTicketsDisabled and SessionTicketKey copied. +// This makes it safe to call CloneTLSConfig on a config in active use by a server. +// TODO: replace with tls.Config#Clone when we move to go1.8 +func CloneTLSConfig(cfg *tls.Config) *tls.Config { + if cfg == nil { + return &tls.Config{} + } + return &tls.Config{ + Rand: cfg.Rand, + Time: cfg.Time, + Certificates: cfg.Certificates, + NameToCertificate: cfg.NameToCertificate, + GetCertificate: cfg.GetCertificate, + RootCAs: cfg.RootCAs, + NextProtos: cfg.NextProtos, + ServerName: cfg.ServerName, + ClientAuth: cfg.ClientAuth, + ClientCAs: cfg.ClientCAs, + InsecureSkipVerify: cfg.InsecureSkipVerify, + CipherSuites: cfg.CipherSuites, + PreferServerCipherSuites: cfg.PreferServerCipherSuites, + ClientSessionCache: cfg.ClientSessionCache, + MinVersion: cfg.MinVersion, + MaxVersion: cfg.MaxVersion, + CurvePreferences: cfg.CurvePreferences, + } +} + +func TLSClientConfig(transport http.RoundTripper) (*tls.Config, error) { + if transport == nil { + return nil, nil + } + + switch transport := transport.(type) { + case *http.Transport: + return transport.TLSClientConfig, nil + case RoundTripperWrapper: + return TLSClientConfig(transport.WrappedRoundTripper()) + default: + return nil, fmt.Errorf("unknown transport type: %v", transport) + } +} + +func FormatURL(scheme string, host string, port int, path string) *url.URL { + return &url.URL{ + Scheme: scheme, + Host: net.JoinHostPort(host, strconv.Itoa(port)), + Path: path, + } +} + +func GetHTTPClient(req *http.Request) string { + if userAgent, ok := req.Header["User-Agent"]; ok { + if len(userAgent) > 0 { + return userAgent[0] + } + } + return "unknown" +} + +// Extracts and returns the clients IP from the given request. +// Looks at X-Forwarded-For header, X-Real-Ip header and request.RemoteAddr in that order. +// Returns nil if none of them are set or is set to an invalid value. +func GetClientIP(req *http.Request) net.IP { + hdr := req.Header + // First check the X-Forwarded-For header for requests via proxy. + hdrForwardedFor := hdr.Get("X-Forwarded-For") + if hdrForwardedFor != "" { + // X-Forwarded-For can be a csv of IPs in case of multiple proxies. + // Use the first valid one. + parts := strings.Split(hdrForwardedFor, ",") + for _, part := range parts { + ip := net.ParseIP(strings.TrimSpace(part)) + if ip != nil { + return ip + } + } + } + + // Try the X-Real-Ip header. + hdrRealIp := hdr.Get("X-Real-Ip") + if hdrRealIp != "" { + ip := net.ParseIP(hdrRealIp) + if ip != nil { + return ip + } + } + + // Fallback to Remote Address in request, which will give the correct client IP when there is no proxy. + // Remote Address in Go's HTTP server is in the form host:port so we need to split that first. + host, _, err := net.SplitHostPort(req.RemoteAddr) + if err == nil { + return net.ParseIP(host) + } + + // Fallback if Remote Address was just IP. + return net.ParseIP(req.RemoteAddr) +} + +var defaultProxyFuncPointer = fmt.Sprintf("%p", http.ProxyFromEnvironment) + +// isDefault checks to see if the transportProxierFunc is pointing to the default one +func isDefault(transportProxier func(*http.Request) (*url.URL, error)) bool { + transportProxierPointer := fmt.Sprintf("%p", transportProxier) + return transportProxierPointer == defaultProxyFuncPointer +} + +// NewProxierWithNoProxyCIDR constructs a Proxier function that respects CIDRs in NO_PROXY and delegates if +// no matching CIDRs are found +func NewProxierWithNoProxyCIDR(delegate func(req *http.Request) (*url.URL, error)) func(req *http.Request) (*url.URL, error) { + // we wrap the default method, so we only need to perform our check if the NO_PROXY envvar has a CIDR in it + noProxyEnv := os.Getenv("NO_PROXY") + noProxyRules := strings.Split(noProxyEnv, ",") + + cidrs := []*net.IPNet{} + for _, noProxyRule := range noProxyRules { + _, cidr, _ := net.ParseCIDR(noProxyRule) + if cidr != nil { + cidrs = append(cidrs, cidr) + } + } + + if len(cidrs) == 0 { + return delegate + } + + return func(req *http.Request) (*url.URL, error) { + host := req.URL.Host + // for some urls, the Host is already the host, not the host:port + if net.ParseIP(host) == nil { + var err error + host, _, err = net.SplitHostPort(req.URL.Host) + if err != nil { + return delegate(req) + } + } + + ip := net.ParseIP(host) + if ip == nil { + return delegate(req) + } + + for _, cidr := range cidrs { + if cidr.Contains(ip) { + return nil, nil + } + } + + return delegate(req) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/net/interface.go b/vendor/k8s.io/client-go/1.5/pkg/util/net/interface.go new file mode 100644 index 0000000000..a1e53d2e43 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/net/interface.go @@ -0,0 +1,278 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "bufio" + "encoding/hex" + "fmt" + "io" + "net" + "os" + + "strings" + + "github.com/golang/glog" +) + +type Route struct { + Interface string + Destination net.IP + Gateway net.IP + // TODO: add more fields here if needed +} + +func getRoutes(input io.Reader) ([]Route, error) { + routes := []Route{} + if input == nil { + return nil, fmt.Errorf("input is nil") + } + scanner := bufio.NewReader(input) + for { + line, err := scanner.ReadString('\n') + if err == io.EOF { + break + } + //ignore the headers in the route info + if strings.HasPrefix(line, "Iface") { + continue + } + fields := strings.Fields(line) + routes = append(routes, Route{}) + route := &routes[len(routes)-1] + route.Interface = fields[0] + ip, err := parseIP(fields[1]) + if err != nil { + return nil, err + } + route.Destination = ip + ip, err = parseIP(fields[2]) + if err != nil { + return nil, err + } + route.Gateway = ip + } + return routes, nil +} + +func parseIP(str string) (net.IP, error) { + if str == "" { + return nil, fmt.Errorf("input is nil") + } + bytes, err := hex.DecodeString(str) + if err != nil { + return nil, err + } + //TODO add ipv6 support + if len(bytes) != net.IPv4len { + return nil, fmt.Errorf("only IPv4 is supported") + } + bytes[0], bytes[1], bytes[2], bytes[3] = bytes[3], bytes[2], bytes[1], bytes[0] + return net.IP(bytes), nil +} + +func isInterfaceUp(intf *net.Interface) bool { + if intf == nil { + return false + } + if intf.Flags&net.FlagUp != 0 { + glog.V(4).Infof("Interface %v is up", intf.Name) + return true + } + return false +} + +//getFinalIP method receives all the IP addrs of a Interface +//and returns a nil if the address is Loopback, Ipv6, link-local or nil. +//It returns a valid IPv4 if an Ipv4 address is found in the array. +func getFinalIP(addrs []net.Addr) (net.IP, error) { + if len(addrs) > 0 { + for i := range addrs { + glog.V(4).Infof("Checking addr %s.", addrs[i].String()) + ip, _, err := net.ParseCIDR(addrs[i].String()) + if err != nil { + return nil, err + } + //Only IPv4 + //TODO : add IPv6 support + if ip.To4() != nil { + if !ip.IsLoopback() && !ip.IsLinkLocalMulticast() && !ip.IsLinkLocalUnicast() { + glog.V(4).Infof("IP found %v", ip) + return ip, nil + } else { + glog.V(4).Infof("Loopback/link-local found %v", ip) + } + } else { + glog.V(4).Infof("%v is not a valid IPv4 address", ip) + } + + } + } + return nil, nil +} + +func getIPFromInterface(intfName string, nw networkInterfacer) (net.IP, error) { + intf, err := nw.InterfaceByName(intfName) + if err != nil { + return nil, err + } + if isInterfaceUp(intf) { + addrs, err := nw.Addrs(intf) + if err != nil { + return nil, err + } + glog.V(4).Infof("Interface %q has %d addresses :%v.", intfName, len(addrs), addrs) + finalIP, err := getFinalIP(addrs) + if err != nil { + return nil, err + } + if finalIP != nil { + glog.V(4).Infof("valid IPv4 address for interface %q found as %v.", intfName, finalIP) + return finalIP, nil + } + } + + return nil, nil +} + +func flagsSet(flags net.Flags, test net.Flags) bool { + return flags&test != 0 +} + +func flagsClear(flags net.Flags, test net.Flags) bool { + return flags&test == 0 +} + +func chooseHostInterfaceNativeGo() (net.IP, error) { + intfs, err := net.Interfaces() + if err != nil { + return nil, err + } + i := 0 + var ip net.IP + for i = range intfs { + if flagsSet(intfs[i].Flags, net.FlagUp) && flagsClear(intfs[i].Flags, net.FlagLoopback|net.FlagPointToPoint) { + addrs, err := intfs[i].Addrs() + if err != nil { + return nil, err + } + if len(addrs) > 0 { + for _, addr := range addrs { + if addrIP, _, err := net.ParseCIDR(addr.String()); err == nil { + if addrIP.To4() != nil { + ip = addrIP.To4() + if !ip.IsLinkLocalMulticast() && !ip.IsLinkLocalUnicast() { + break + } + } + } + } + if ip != nil { + // This interface should suffice. + break + } + } + } + } + if ip == nil { + return nil, fmt.Errorf("no acceptable interface from host") + } + glog.V(4).Infof("Choosing interface %s (IP %v) as default", intfs[i].Name, ip) + return ip, nil +} + +//ChooseHostInterface is a method used fetch an IP for a daemon. +//It uses data from /proc/net/route file. +//For a node with no internet connection ,it returns error +//For a multi n/w interface node it returns the IP of the interface with gateway on it. +func ChooseHostInterface() (net.IP, error) { + inFile, err := os.Open("/proc/net/route") + if err != nil { + if os.IsNotExist(err) { + return chooseHostInterfaceNativeGo() + } + return nil, err + } + defer inFile.Close() + var nw networkInterfacer = networkInterface{} + return chooseHostInterfaceFromRoute(inFile, nw) +} + +type networkInterfacer interface { + InterfaceByName(intfName string) (*net.Interface, error) + Addrs(intf *net.Interface) ([]net.Addr, error) +} + +type networkInterface struct{} + +func (_ networkInterface) InterfaceByName(intfName string) (*net.Interface, error) { + intf, err := net.InterfaceByName(intfName) + if err != nil { + return nil, err + } + return intf, nil +} + +func (_ networkInterface) Addrs(intf *net.Interface) ([]net.Addr, error) { + addrs, err := intf.Addrs() + if err != nil { + return nil, err + } + return addrs, nil +} + +func chooseHostInterfaceFromRoute(inFile io.Reader, nw networkInterfacer) (net.IP, error) { + routes, err := getRoutes(inFile) + if err != nil { + return nil, err + } + zero := net.IP{0, 0, 0, 0} + var finalIP net.IP + for i := range routes { + //find interface with gateway + if routes[i].Destination.Equal(zero) { + glog.V(4).Infof("Default route transits interface %q", routes[i].Interface) + finalIP, err := getIPFromInterface(routes[i].Interface, nw) + if err != nil { + return nil, err + } + if finalIP != nil { + glog.V(4).Infof("Choosing IP %v ", finalIP) + return finalIP, nil + } + } + } + glog.V(4).Infof("No valid IP found") + if finalIP == nil { + return nil, fmt.Errorf("Unable to select an IP.") + } + return nil, nil +} + +// If bind-address is usable, return it directly +// If bind-address is not usable (unset, 0.0.0.0, or loopback), we will use the host's default +// interface. +func ChooseBindAddress(bindAddress net.IP) (net.IP, error) { + if bindAddress == nil || bindAddress.IsUnspecified() || bindAddress.IsLoopback() { + hostIP, err := ChooseHostInterface() + if err != nil { + return nil, err + } + bindAddress = hostIP + } + return bindAddress, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/net/port_range.go b/vendor/k8s.io/client-go/1.5/pkg/util/net/port_range.go new file mode 100644 index 0000000000..6a50e6186d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/net/port_range.go @@ -0,0 +1,113 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "fmt" + "strconv" + "strings" +) + +// PortRange represents a range of TCP/UDP ports. To represent a single port, +// set Size to 1. +type PortRange struct { + Base int + Size int +} + +// Contains tests whether a given port falls within the PortRange. +func (pr *PortRange) Contains(p int) bool { + return (p >= pr.Base) && ((p - pr.Base) < pr.Size) +} + +// String converts the PortRange to a string representation, which can be +// parsed by PortRange.Set or ParsePortRange. +func (pr PortRange) String() string { + if pr.Size == 0 { + return "" + } + return fmt.Sprintf("%d-%d", pr.Base, pr.Base+pr.Size-1) +} + +// Set parses a string of the form "min-max", inclusive at both ends, and +// sets the PortRange from it. This is part of the flag.Value and pflag.Value +// interfaces. +func (pr *PortRange) Set(value string) error { + value = strings.TrimSpace(value) + + // TODO: Accept "80" syntax + // TODO: Accept "80+8" syntax + + if value == "" { + pr.Base = 0 + pr.Size = 0 + return nil + } + + hyphenIndex := strings.Index(value, "-") + if hyphenIndex == -1 { + return fmt.Errorf("expected hyphen in port range") + } + + var err error + var low int + var high int + low, err = strconv.Atoi(value[:hyphenIndex]) + if err == nil { + high, err = strconv.Atoi(value[hyphenIndex+1:]) + } + if err != nil { + return fmt.Errorf("unable to parse port range: %s: %v", value, err) + } + + if low > 65535 || high > 65535 { + return fmt.Errorf("the port range cannot be greater than 65535: %s", value) + } + + if high < low { + return fmt.Errorf("end port cannot be less than start port: %s", value) + } + + pr.Base = low + pr.Size = 1 + high - low + return nil +} + +// Type returns a descriptive string about this type. This is part of the +// pflag.Value interface. +func (*PortRange) Type() string { + return "portRange" +} + +// ParsePortRange parses a string of the form "min-max", inclusive at both +// ends, and initializs a new PortRange from it. +func ParsePortRange(value string) (*PortRange, error) { + pr := &PortRange{} + err := pr.Set(value) + if err != nil { + return nil, err + } + return pr, nil +} + +func ParsePortRangeOrDie(value string) *PortRange { + pr, err := ParsePortRange(value) + if err != nil { + panic(fmt.Sprintf("couldn't parse port range %q: %v", value, err)) + } + return pr +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/net/port_split.go b/vendor/k8s.io/client-go/1.5/pkg/util/net/port_split.go new file mode 100644 index 0000000000..74983498d6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/net/port_split.go @@ -0,0 +1,77 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "strings" + + "k8s.io/client-go/1.5/pkg/util/sets" +) + +var validSchemes = sets.NewString("http", "https", "") + +// SplitSchemeNamePort takes a string of the following forms: +// * "<name>", returns "", "<name>","", true +// * "<name>:<port>", returns "", "<name>","<port>",true +// * "<scheme>:<name>:<port>", returns "<scheme>","<name>","<port>",true +// +// Name must be non-empty or valid will be returned false. +// Scheme must be "http" or "https" if specified +// Port is returned as a string, and it is not required to be numeric (could be +// used for a named port, for example). +func SplitSchemeNamePort(id string) (scheme, name, port string, valid bool) { + parts := strings.Split(id, ":") + switch len(parts) { + case 1: + name = parts[0] + case 2: + name = parts[0] + port = parts[1] + case 3: + scheme = parts[0] + name = parts[1] + port = parts[2] + default: + return "", "", "", false + } + + if len(name) > 0 && validSchemes.Has(scheme) { + return scheme, name, port, true + } else { + return "", "", "", false + } +} + +// JoinSchemeNamePort returns a string that specifies the scheme, name, and port: +// * "<name>" +// * "<name>:<port>" +// * "<scheme>:<name>:<port>" +// None of the parameters may contain a ':' character +// Name is required +// Scheme must be "", "http", or "https" +func JoinSchemeNamePort(scheme, name, port string) string { + if len(scheme) > 0 { + // Must include three segments to specify scheme + return scheme + ":" + name + ":" + port + } + if len(port) > 0 { + // Must include two segments to specify port + return name + ":" + port + } + // Return name alone + return name +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/net/util.go b/vendor/k8s.io/client-go/1.5/pkg/util/net/util.go new file mode 100644 index 0000000000..1348f4deeb --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/net/util.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package net + +import ( + "net" + "reflect" +) + +// IPNetEqual checks if the two input IPNets are representing the same subnet. +// For example, +// 10.0.0.1/24 and 10.0.0.0/24 are the same subnet. +// 10.0.0.1/24 and 10.0.0.0/25 are not the same subnet. +func IPNetEqual(ipnet1, ipnet2 *net.IPNet) bool { + if ipnet1 == nil || ipnet2 == nil { + return false + } + if reflect.DeepEqual(ipnet1.Mask, ipnet2.Mask) && ipnet1.Contains(ipnet2.IP) && ipnet2.Contains(ipnet1.IP) { + return true + } + return false +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/parsers/parsers.go b/vendor/k8s.io/client-go/1.5/pkg/util/parsers/parsers.go new file mode 100644 index 0000000000..4e70cc6827 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/parsers/parsers.go @@ -0,0 +1,54 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package parsers + +import ( + "fmt" + + dockerref "github.com/docker/distribution/reference" +) + +const ( + DefaultImageTag = "latest" +) + +// ParseImageName parses a docker image string into three parts: repo, tag and digest. +// If both tag and digest are empty, a default image tag will be returned. +func ParseImageName(image string) (string, string, string, error) { + named, err := dockerref.ParseNamed(image) + if err != nil { + return "", "", "", fmt.Errorf("couldn't parse image name: %v", err) + } + + repoToPull := named.Name() + var tag, digest string + + tagged, ok := named.(dockerref.Tagged) + if ok { + tag = tagged.Tag() + } + + digested, ok := named.(dockerref.Digested) + if ok { + digest = digested.Digest().String() + } + // If no tag was specified, use the default "latest". + if len(tag) == 0 && len(digest) == 0 { + tag = DefaultImageTag + } + return repoToPull, tag, digest, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/rand/rand.go b/vendor/k8s.io/client-go/1.5/pkg/util/rand/rand.go new file mode 100644 index 0000000000..134c152605 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/rand/rand.go @@ -0,0 +1,83 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package rand provides utilities related to randomization. +package rand + +import ( + "math/rand" + "sync" + "time" +) + +var letters = []rune("abcdefghijklmnopqrstuvwxyz0123456789") +var numLetters = len(letters) +var rng = struct { + sync.Mutex + rand *rand.Rand +}{ + rand: rand.New(rand.NewSource(time.Now().UTC().UnixNano())), +} + +// Intn generates an integer in range [0,max). +// By design this should panic if input is invalid, <= 0. +func Intn(max int) int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Intn(max) +} + +// IntnRange generates an integer in range [min,max). +// By design this should panic if input is invalid, <= 0. +func IntnRange(min, max int) int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Intn(max-min) + min +} + +// IntnRange generates an int64 integer in range [min,max). +// By design this should panic if input is invalid, <= 0. +func Int63nRange(min, max int64) int64 { + rng.Lock() + defer rng.Unlock() + return rng.rand.Int63n(max-min) + min +} + +// Seed seeds the rng with the provided seed. +func Seed(seed int64) { + rng.Lock() + defer rng.Unlock() + + rng.rand = rand.New(rand.NewSource(seed)) +} + +// Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n) +// from the default Source. +func Perm(n int) []int { + rng.Lock() + defer rng.Unlock() + return rng.rand.Perm(n) +} + +// String generates a random alphanumeric string n characters long. This will +// panic if n is less than zero. +func String(length int) string { + b := make([]rune, length) + for i := range b { + b[i] = letters[Intn(numLetters)] + } + return string(b) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/runtime/runtime.go b/vendor/k8s.io/client-go/1.5/pkg/util/runtime/runtime.go new file mode 100644 index 0000000000..976de49d58 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/runtime/runtime.go @@ -0,0 +1,128 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +import ( + "fmt" + "runtime" + + "github.com/golang/glog" +) + +var ( + // ReallyCrash controls the behavior of HandleCrash and now defaults + // true. It's still exposed so components can optionally set to false + // to restore prior behavior. + ReallyCrash = true +) + +// PanicHandlers is a list of functions which will be invoked when a panic happens. +var PanicHandlers = []func(interface{}){logPanic} + +// HandleCrash simply catches a crash and logs an error. Meant to be called via +// defer. Additional context-specific handlers can be provided, and will be +// called in case of panic. HandleCrash actually crashes, after calling the +// handlers and logging the panic message. +// +// TODO: remove this function. We are switching to a world where it's safe for +// apiserver to panic, since it will be restarted by kubelet. At the beginning +// of the Kubernetes project, nothing was going to restart apiserver and so +// catching panics was important. But it's actually much simpler for montoring +// software if we just exit when an unexpected panic happens. +func HandleCrash(additionalHandlers ...func(interface{})) { + if r := recover(); r != nil { + for _, fn := range PanicHandlers { + fn(r) + } + for _, fn := range additionalHandlers { + fn(r) + } + if ReallyCrash { + // Actually proceed to panic. + panic(r) + } + } +} + +// logPanic logs the caller tree when a panic occurs. +func logPanic(r interface{}) { + callers := getCallers(r) + glog.Errorf("Observed a panic: %#v (%v)\n%v", r, r, callers) +} + +func getCallers(r interface{}) string { + callers := "" + for i := 0; true; i++ { + _, file, line, ok := runtime.Caller(i) + if !ok { + break + } + callers = callers + fmt.Sprintf("%v:%v\n", file, line) + } + + return callers +} + +// ErrorHandlers is a list of functions which will be invoked when an unreturnable +// error occurs. +var ErrorHandlers = []func(error){logError} + +// HandlerError is a method to invoke when a non-user facing piece of code cannot +// return an error and needs to indicate it has been ignored. Invoking this method +// is preferable to logging the error - the default behavior is to log but the +// errors may be sent to a remote server for analysis. +func HandleError(err error) { + // this is sometimes called with a nil error. We probably shouldn't fail and should do nothing instead + if err == nil { + return + } + + for _, fn := range ErrorHandlers { + fn(err) + } +} + +// logError prints an error with the call stack of the location it was reported +func logError(err error) { + glog.ErrorDepth(2, err) +} + +// GetCaller returns the caller of the function that calls it. +func GetCaller() string { + var pc [1]uintptr + runtime.Callers(3, pc[:]) + f := runtime.FuncForPC(pc[0]) + if f == nil { + return fmt.Sprintf("Unable to find caller") + } + return f.Name() +} + +// RecoverFromPanic replaces the specified error with an error containing the +// original error, and the call tree when a panic occurs. This enables error +// handlers to handle errors and panics the same way. +func RecoverFromPanic(err *error) { + if r := recover(); r != nil { + callers := getCallers(r) + + *err = fmt.Errorf( + "recovered from panic %q. (err=%v) Call stack:\n%v", + r, + *err, + callers) + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/byte.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/byte.go new file mode 100644 index 0000000000..3d6d0dfe43 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/byte.go @@ -0,0 +1,203 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Byte is a set of bytes, implemented via map[byte]struct{} for minimal memory consumption. +type Byte map[byte]Empty + +// New creates a Byte from a list of values. +func NewByte(items ...byte) Byte { + ss := Byte{} + ss.Insert(items...) + return ss +} + +// ByteKeySet creates a Byte from a keys of a map[byte](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func ByteKeySet(theMap interface{}) Byte { + v := reflect.ValueOf(theMap) + ret := Byte{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(byte)) + } + return ret +} + +// Insert adds items to the set. +func (s Byte) Insert(items ...byte) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Byte) Delete(items ...byte) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Byte) Has(item byte) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Byte) HasAll(items ...byte) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Byte) HasAny(items ...byte) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Byte) Difference(s2 Byte) Byte { + result := NewByte() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Byte) Union(s2 Byte) Byte { + result := NewByte() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Byte) Intersection(s2 Byte) Byte { + var walk, other Byte + result := NewByte() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Byte) IsSuperset(s2 Byte) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Byte) Equal(s2 Byte) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfByte []byte + +func (s sortableSliceOfByte) Len() int { return len(s) } +func (s sortableSliceOfByte) Less(i, j int) bool { return lessByte(s[i], s[j]) } +func (s sortableSliceOfByte) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted byte slice. +func (s Byte) List() []byte { + res := make(sortableSliceOfByte, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []byte(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Byte) UnsortedList() []byte { + res := make([]byte, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Byte) PopAny() (byte, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue byte + return zeroValue, false +} + +// Len returns the size of the set. +func (s Byte) Len() int { + return len(s) +} + +func lessByte(lhs, rhs byte) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/doc.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/doc.go new file mode 100644 index 0000000000..c5e541621f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +// Package sets has auto-generated set types. +package sets diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/empty.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/empty.go new file mode 100644 index 0000000000..5654edd773 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/empty.go @@ -0,0 +1,23 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +// Empty is public since it is used by some internal API objects for conversions between external +// string arrays and internal sets, and conversion logic requires public types today. +type Empty struct{} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/int.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/int.go new file mode 100644 index 0000000000..6d32f84c78 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/int.go @@ -0,0 +1,203 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Int is a set of ints, implemented via map[int]struct{} for minimal memory consumption. +type Int map[int]Empty + +// New creates a Int from a list of values. +func NewInt(items ...int) Int { + ss := Int{} + ss.Insert(items...) + return ss +} + +// IntKeySet creates a Int from a keys of a map[int](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func IntKeySet(theMap interface{}) Int { + v := reflect.ValueOf(theMap) + ret := Int{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(int)) + } + return ret +} + +// Insert adds items to the set. +func (s Int) Insert(items ...int) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Int) Delete(items ...int) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Int) Has(item int) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Int) HasAll(items ...int) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Int) HasAny(items ...int) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Int) Difference(s2 Int) Int { + result := NewInt() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Int) Union(s2 Int) Int { + result := NewInt() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Int) Intersection(s2 Int) Int { + var walk, other Int + result := NewInt() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Int) IsSuperset(s2 Int) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Int) Equal(s2 Int) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfInt []int + +func (s sortableSliceOfInt) Len() int { return len(s) } +func (s sortableSliceOfInt) Less(i, j int) bool { return lessInt(s[i], s[j]) } +func (s sortableSliceOfInt) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted int slice. +func (s Int) List() []int { + res := make(sortableSliceOfInt, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []int(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Int) UnsortedList() []int { + res := make([]int, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Int) PopAny() (int, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue int + return zeroValue, false +} + +// Len returns the size of the set. +func (s Int) Len() int { + return len(s) +} + +func lessInt(lhs, rhs int) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/int64.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/int64.go new file mode 100644 index 0000000000..1de18319b7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/int64.go @@ -0,0 +1,203 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.Int64 is a set of int64s, implemented via map[int64]struct{} for minimal memory consumption. +type Int64 map[int64]Empty + +// New creates a Int64 from a list of values. +func NewInt64(items ...int64) Int64 { + ss := Int64{} + ss.Insert(items...) + return ss +} + +// Int64KeySet creates a Int64 from a keys of a map[int64](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func Int64KeySet(theMap interface{}) Int64 { + v := reflect.ValueOf(theMap) + ret := Int64{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(int64)) + } + return ret +} + +// Insert adds items to the set. +func (s Int64) Insert(items ...int64) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s Int64) Delete(items ...int64) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s Int64) Has(item int64) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s Int64) HasAll(items ...int64) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s Int64) HasAny(items ...int64) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s Int64) Difference(s2 Int64) Int64 { + result := NewInt64() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 Int64) Union(s2 Int64) Int64 { + result := NewInt64() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 Int64) Intersection(s2 Int64) Int64 { + var walk, other Int64 + result := NewInt64() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 Int64) IsSuperset(s2 Int64) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 Int64) Equal(s2 Int64) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfInt64 []int64 + +func (s sortableSliceOfInt64) Len() int { return len(s) } +func (s sortableSliceOfInt64) Less(i, j int) bool { return lessInt64(s[i], s[j]) } +func (s sortableSliceOfInt64) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted int64 slice. +func (s Int64) List() []int64 { + res := make(sortableSliceOfInt64, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []int64(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s Int64) UnsortedList() []int64 { + res := make([]int64, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s Int64) PopAny() (int64, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue int64 + return zeroValue, false +} + +// Len returns the size of the set. +func (s Int64) Len() int { + return len(s) +} + +func lessInt64(lhs, rhs int64) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/sets/string.go b/vendor/k8s.io/client-go/1.5/pkg/util/sets/string.go new file mode 100644 index 0000000000..da66eaf8e7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/sets/string.go @@ -0,0 +1,203 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file was autogenerated by set-gen. Do not edit it manually! + +package sets + +import ( + "reflect" + "sort" +) + +// sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption. +type String map[string]Empty + +// New creates a String from a list of values. +func NewString(items ...string) String { + ss := String{} + ss.Insert(items...) + return ss +} + +// StringKeySet creates a String from a keys of a map[string](? extends interface{}). +// If the value passed in is not actually a map, this will panic. +func StringKeySet(theMap interface{}) String { + v := reflect.ValueOf(theMap) + ret := String{} + + for _, keyValue := range v.MapKeys() { + ret.Insert(keyValue.Interface().(string)) + } + return ret +} + +// Insert adds items to the set. +func (s String) Insert(items ...string) { + for _, item := range items { + s[item] = Empty{} + } +} + +// Delete removes all items from the set. +func (s String) Delete(items ...string) { + for _, item := range items { + delete(s, item) + } +} + +// Has returns true if and only if item is contained in the set. +func (s String) Has(item string) bool { + _, contained := s[item] + return contained +} + +// HasAll returns true if and only if all items are contained in the set. +func (s String) HasAll(items ...string) bool { + for _, item := range items { + if !s.Has(item) { + return false + } + } + return true +} + +// HasAny returns true if any items are contained in the set. +func (s String) HasAny(items ...string) bool { + for _, item := range items { + if s.Has(item) { + return true + } + } + return false +} + +// Difference returns a set of objects that are not in s2 +// For example: +// s1 = {a1, a2, a3} +// s2 = {a1, a2, a4, a5} +// s1.Difference(s2) = {a3} +// s2.Difference(s1) = {a4, a5} +func (s String) Difference(s2 String) String { + result := NewString() + for key := range s { + if !s2.Has(key) { + result.Insert(key) + } + } + return result +} + +// Union returns a new set which includes items in either s1 or s2. +// For example: +// s1 = {a1, a2} +// s2 = {a3, a4} +// s1.Union(s2) = {a1, a2, a3, a4} +// s2.Union(s1) = {a1, a2, a3, a4} +func (s1 String) Union(s2 String) String { + result := NewString() + for key := range s1 { + result.Insert(key) + } + for key := range s2 { + result.Insert(key) + } + return result +} + +// Intersection returns a new set which includes the item in BOTH s1 and s2 +// For example: +// s1 = {a1, a2} +// s2 = {a2, a3} +// s1.Intersection(s2) = {a2} +func (s1 String) Intersection(s2 String) String { + var walk, other String + result := NewString() + if s1.Len() < s2.Len() { + walk = s1 + other = s2 + } else { + walk = s2 + other = s1 + } + for key := range walk { + if other.Has(key) { + result.Insert(key) + } + } + return result +} + +// IsSuperset returns true if and only if s1 is a superset of s2. +func (s1 String) IsSuperset(s2 String) bool { + for item := range s2 { + if !s1.Has(item) { + return false + } + } + return true +} + +// Equal returns true if and only if s1 is equal (as a set) to s2. +// Two sets are equal if their membership is identical. +// (In practice, this means same elements, order doesn't matter) +func (s1 String) Equal(s2 String) bool { + return len(s1) == len(s2) && s1.IsSuperset(s2) +} + +type sortableSliceOfString []string + +func (s sortableSliceOfString) Len() int { return len(s) } +func (s sortableSliceOfString) Less(i, j int) bool { return lessString(s[i], s[j]) } +func (s sortableSliceOfString) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +// List returns the contents as a sorted string slice. +func (s String) List() []string { + res := make(sortableSliceOfString, 0, len(s)) + for key := range s { + res = append(res, key) + } + sort.Sort(res) + return []string(res) +} + +// UnsortedList returns the slice with contents in random order. +func (s String) UnsortedList() []string { + res := make([]string, 0, len(s)) + for key := range s { + res = append(res, key) + } + return res +} + +// Returns a single element from the set. +func (s String) PopAny() (string, bool) { + for key := range s { + s.Delete(key) + return key, true + } + var zeroValue string + return zeroValue, false +} + +// Len returns the size of the set. +func (s String) Len() int { + return len(s) +} + +func lessString(lhs, rhs string) bool { + return lhs < rhs +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/string_flag.go b/vendor/k8s.io/client-go/1.5/pkg/util/string_flag.go new file mode 100644 index 0000000000..9d6a00a159 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/string_flag.go @@ -0,0 +1,56 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +// StringFlag is a string flag compatible with flags and pflags that keeps track of whether it had a value supplied or not. +type StringFlag struct { + // If Set has been invoked this value is true + provided bool + // The exact value provided on the flag + value string +} + +func NewStringFlag(defaultVal string) StringFlag { + return StringFlag{value: defaultVal} +} + +func (f *StringFlag) Default(value string) { + f.value = value +} + +func (f StringFlag) String() string { + return f.value +} + +func (f StringFlag) Value() string { + return f.value +} + +func (f *StringFlag) Set(value string) error { + f.value = value + f.provided = true + + return nil +} + +func (f StringFlag) Provided() bool { + return f.provided +} + +func (f *StringFlag) Type() string { + return "string" +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/template.go b/vendor/k8s.io/client-go/1.5/pkg/util/template.go new file mode 100644 index 0000000000..d09d7dc867 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/template.go @@ -0,0 +1,48 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "bytes" + "go/doc" + "io" + "strings" + "text/template" +) + +func wrap(indent string, s string) string { + var buf bytes.Buffer + doc.ToText(&buf, s, indent, indent+" ", 80-len(indent)) + return buf.String() +} + +// ExecuteTemplate executes templateText with data and output written to w. +func ExecuteTemplate(w io.Writer, templateText string, data interface{}) error { + t := template.New("top") + t.Funcs(template.FuncMap{ + "trim": strings.TrimSpace, + "wrap": wrap, + }) + template.Must(t.Parse(templateText)) + return t.Execute(w, data) +} + +func ExecuteTemplateToString(templateText string, data interface{}) (string, error) { + b := bytes.Buffer{} + err := ExecuteTemplate(&b, templateText, data) + return b.String(), err +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/trace.go b/vendor/k8s.io/client-go/1.5/pkg/util/trace.go new file mode 100644 index 0000000000..fe93db8df6 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/trace.go @@ -0,0 +1,72 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "bytes" + "fmt" + "time" + + "github.com/golang/glog" +) + +type traceStep struct { + stepTime time.Time + msg string +} + +type Trace struct { + name string + startTime time.Time + steps []traceStep +} + +func NewTrace(name string) *Trace { + return &Trace{name, time.Now(), nil} +} + +func (t *Trace) Step(msg string) { + if t.steps == nil { + // traces almost always have less than 6 steps, do this to avoid more than a single allocation + t.steps = make([]traceStep, 0, 6) + } + t.steps = append(t.steps, traceStep{time.Now(), msg}) +} + +func (t *Trace) Log() { + endTime := time.Now() + var buffer bytes.Buffer + + buffer.WriteString(fmt.Sprintf("Trace %q (started %v):\n", t.name, t.startTime)) + lastStepTime := t.startTime + for _, step := range t.steps { + buffer.WriteString(fmt.Sprintf("[%v] [%v] %v\n", step.stepTime.Sub(t.startTime), step.stepTime.Sub(lastStepTime), step.msg)) + lastStepTime = step.stepTime + } + buffer.WriteString(fmt.Sprintf("[%v] [%v] END\n", endTime.Sub(t.startTime), endTime.Sub(lastStepTime))) + glog.Info(buffer.String()) +} + +func (t *Trace) LogIfLong(threshold time.Duration) { + if time.Since(t.startTime) >= threshold { + t.Log() + } +} + +func (t *Trace) TotalTime() time.Duration { + return time.Since(t.startTime) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/umask.go b/vendor/k8s.io/client-go/1.5/pkg/util/umask.go new file mode 100644 index 0000000000..35ccce50bd --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/umask.go @@ -0,0 +1,27 @@ +// +build !windows + +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "syscall" +) + +func Umask(mask int) (old int, err error) { + return syscall.Umask(mask), nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/umask_windows.go b/vendor/k8s.io/client-go/1.5/pkg/util/umask_windows.go new file mode 100644 index 0000000000..8c1b2cbc7d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/umask_windows.go @@ -0,0 +1,27 @@ +// +build windows + +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "errors" +) + +func Umask(mask int) (old int, err error) { + return 0, errors.New("platform and architecture is not supported") +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/util.go b/vendor/k8s.io/client-go/1.5/pkg/util/util.go new file mode 100644 index 0000000000..7a94149578 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/util.go @@ -0,0 +1,147 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "fmt" + "os" + "reflect" + "regexp" +) + +// Takes a list of strings and compiles them into a list of regular expressions +func CompileRegexps(regexpStrings []string) ([]*regexp.Regexp, error) { + regexps := []*regexp.Regexp{} + for _, regexpStr := range regexpStrings { + r, err := regexp.Compile(regexpStr) + if err != nil { + return []*regexp.Regexp{}, err + } + regexps = append(regexps, r) + } + return regexps, nil +} + +// Detects if using systemd as the init system +// Please note that simply reading /proc/1/cmdline can be misleading because +// some installation of various init programs can automatically make /sbin/init +// a symlink or even a renamed version of their main program. +// TODO(dchen1107): realiably detects the init system using on the system: +// systemd, upstart, initd, etc. +func UsingSystemdInitSystem() bool { + if _, err := os.Stat("/run/systemd/system"); err == nil { + return true + } + + return false +} + +// Tests whether all pointer fields in a struct are nil. This is useful when, +// for example, an API struct is handled by plugins which need to distinguish +// "no plugin accepted this spec" from "this spec is empty". +// +// This function is only valid for structs and pointers to structs. Any other +// type will cause a panic. Passing a typed nil pointer will return true. +func AllPtrFieldsNil(obj interface{}) bool { + v := reflect.ValueOf(obj) + if !v.IsValid() { + panic(fmt.Sprintf("reflect.ValueOf() produced a non-valid Value for %#v", obj)) + } + if v.Kind() == reflect.Ptr { + if v.IsNil() { + return true + } + v = v.Elem() + } + for i := 0; i < v.NumField(); i++ { + if v.Field(i).Kind() == reflect.Ptr && !v.Field(i).IsNil() { + return false + } + } + return true +} + +func FileExists(filename string) (bool, error) { + if _, err := os.Stat(filename); os.IsNotExist(err) { + return false, nil + } else if err != nil { + return false, err + } + return true, nil +} + +// borrowed from ioutil.ReadDir +// ReadDir reads the directory named by dirname and returns +// a list of directory entries, minus those with lstat errors +func ReadDirNoExit(dirname string) ([]os.FileInfo, []error, error) { + if dirname == "" { + dirname = "." + } + + f, err := os.Open(dirname) + if err != nil { + return nil, nil, err + } + defer f.Close() + + names, err := f.Readdirnames(-1) + list := make([]os.FileInfo, 0, len(names)) + errs := make([]error, 0, len(names)) + for _, filename := range names { + fip, lerr := os.Lstat(dirname + "/" + filename) + if os.IsNotExist(lerr) { + // File disappeared between readdir + stat. + // Just treat it as if it didn't exist. + continue + } + + list = append(list, fip) + errs = append(errs, lerr) + } + + return list, errs, nil +} + +// IntPtr returns a pointer to an int +func IntPtr(i int) *int { + o := i + return &o +} + +// Int32Ptr returns a pointer to an int32 +func Int32Ptr(i int32) *int32 { + o := i + return &o +} + +// IntPtrDerefOr dereference the int ptr and returns it i not nil, +// else returns def. +func IntPtrDerefOr(ptr *int, def int) int { + if ptr != nil { + return *ptr + } + return def +} + +// Int32PtrDerefOr dereference the int32 ptr and returns it i not nil, +// else returns def. +func Int32PtrDerefOr(ptr *int32, def int32) int32 { + if ptr != nil { + return *ptr + } + return def +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/uuid/uuid.go b/vendor/k8s.io/client-go/1.5/pkg/util/uuid/uuid.go new file mode 100644 index 0000000000..d1cbda5da2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/uuid/uuid.go @@ -0,0 +1,42 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package uuid + +import ( + "sync" + + "github.com/pborman/uuid" + "k8s.io/client-go/1.5/pkg/types" +) + +var uuidLock sync.Mutex +var lastUUID uuid.UUID + +func NewUUID() types.UID { + uuidLock.Lock() + defer uuidLock.Unlock() + result := uuid.NewUUID() + // The UUID package is naive and can generate identical UUIDs if the + // time interval is quick enough. + // The UUID uses 100 ns increments so it's short enough to actively + // wait for a new value. + for uuid.Equal(lastUUID, result) == true { + result = uuid.NewUUID() + } + lastUUID = result + return types.UID(result.String()) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/errors.go b/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/errors.go new file mode 100644 index 0000000000..0e303e37ae --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/errors.go @@ -0,0 +1,228 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import ( + "encoding/json" + "fmt" + "strings" + + utilerrors "k8s.io/client-go/1.5/pkg/util/errors" +) + +// Error is an implementation of the 'error' interface, which represents a +// field-level validation error. +type Error struct { + Type ErrorType + Field string + BadValue interface{} + Detail string +} + +var _ error = &Error{} + +// Error implements the error interface. +func (v *Error) Error() string { + return fmt.Sprintf("%s: %s", v.Field, v.ErrorBody()) +} + +// ErrorBody returns the error message without the field name. This is useful +// for building nice-looking higher-level error reporting. +func (v *Error) ErrorBody() string { + var s string + switch v.Type { + case ErrorTypeRequired, ErrorTypeForbidden, ErrorTypeTooLong, ErrorTypeInternal: + s = fmt.Sprintf("%s", v.Type) + default: + var bad string + badBytes, err := json.Marshal(v.BadValue) + if err != nil { + bad = err.Error() + } else { + bad = string(badBytes) + } + s = fmt.Sprintf("%s: %s", v.Type, bad) + } + if len(v.Detail) != 0 { + s += fmt.Sprintf(": %s", v.Detail) + } + return s +} + +// ErrorType is a machine readable value providing more detail about why +// a field is invalid. These values are expected to match 1-1 with +// CauseType in api/types.go. +type ErrorType string + +// TODO: These values are duplicated in api/types.go, but there's a circular dep. Fix it. +const ( + // ErrorTypeNotFound is used to report failure to find a requested value + // (e.g. looking up an ID). See NotFound(). + ErrorTypeNotFound ErrorType = "FieldValueNotFound" + // ErrorTypeRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). See + // Required(). + ErrorTypeRequired ErrorType = "FieldValueRequired" + // ErrorTypeDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). See Duplicate(). + ErrorTypeDuplicate ErrorType = "FieldValueDuplicate" + // ErrorTypeInvalid is used to report malformed values (e.g. failed regex + // match, too long, out of bounds). See Invalid(). + ErrorTypeInvalid ErrorType = "FieldValueInvalid" + // ErrorTypeNotSupported is used to report unknown values for enumerated + // fields (e.g. a list of valid values). See NotSupported(). + ErrorTypeNotSupported ErrorType = "FieldValueNotSupported" + // ErrorTypeForbidden is used to report valid (as per formatting rules) + // values which would be accepted under some conditions, but which are not + // permitted by the current conditions (such as security policy). See + // Forbidden(). + ErrorTypeForbidden ErrorType = "FieldValueForbidden" + // ErrorTypeTooLong is used to report that the given value is too long. + // This is similar to ErrorTypeInvalid, but the error will not include the + // too-long value. See TooLong(). + ErrorTypeTooLong ErrorType = "FieldValueTooLong" + // ErrorTypeInternal is used to report other errors that are not related + // to user input. See InternalError(). + ErrorTypeInternal ErrorType = "InternalError" +) + +// String converts a ErrorType into its corresponding canonical error message. +func (t ErrorType) String() string { + switch t { + case ErrorTypeNotFound: + return "Not found" + case ErrorTypeRequired: + return "Required value" + case ErrorTypeDuplicate: + return "Duplicate value" + case ErrorTypeInvalid: + return "Invalid value" + case ErrorTypeNotSupported: + return "Unsupported value" + case ErrorTypeForbidden: + return "Forbidden" + case ErrorTypeTooLong: + return "Too long" + case ErrorTypeInternal: + return "Internal error" + default: + panic(fmt.Sprintf("unrecognized validation error: %q", string(t))) + } +} + +// NotFound returns a *Error indicating "value not found". This is +// used to report failure to find a requested value (e.g. looking up an ID). +func NotFound(field *Path, value interface{}) *Error { + return &Error{ErrorTypeNotFound, field.String(), value, ""} +} + +// Required returns a *Error indicating "value required". This is used +// to report required values that are not provided (e.g. empty strings, null +// values, or empty arrays). +func Required(field *Path, detail string) *Error { + return &Error{ErrorTypeRequired, field.String(), "", detail} +} + +// Duplicate returns a *Error indicating "duplicate value". This is +// used to report collisions of values that must be unique (e.g. names or IDs). +func Duplicate(field *Path, value interface{}) *Error { + return &Error{ErrorTypeDuplicate, field.String(), value, ""} +} + +// Invalid returns a *Error indicating "invalid value". This is used +// to report malformed values (e.g. failed regex match, too long, out of bounds). +func Invalid(field *Path, value interface{}, detail string) *Error { + return &Error{ErrorTypeInvalid, field.String(), value, detail} +} + +// NotSupported returns a *Error indicating "unsupported value". +// This is used to report unknown values for enumerated fields (e.g. a list of +// valid values). +func NotSupported(field *Path, value interface{}, validValues []string) *Error { + detail := "" + if validValues != nil && len(validValues) > 0 { + detail = "supported values: " + strings.Join(validValues, ", ") + } + return &Error{ErrorTypeNotSupported, field.String(), value, detail} +} + +// Forbidden returns a *Error indicating "forbidden". This is used to +// report valid (as per formatting rules) values which would be accepted under +// some conditions, but which are not permitted by current conditions (e.g. +// security policy). +func Forbidden(field *Path, detail string) *Error { + return &Error{ErrorTypeForbidden, field.String(), "", detail} +} + +// TooLong returns a *Error indicating "too long". This is used to +// report that the given value is too long. This is similar to +// Invalid, but the returned error will not include the too-long +// value. +func TooLong(field *Path, value interface{}, maxLength int) *Error { + return &Error{ErrorTypeTooLong, field.String(), value, fmt.Sprintf("must have at most %d characters", maxLength)} +} + +// InternalError returns a *Error indicating "internal error". This is used +// to signal that an error was found that was not directly related to user +// input. The err argument must be non-nil. +func InternalError(field *Path, err error) *Error { + return &Error{ErrorTypeInternal, field.String(), nil, err.Error()} +} + +// ErrorList holds a set of Errors. It is plausible that we might one day have +// non-field errors in this same umbrella package, but for now we don't, so +// we can keep it simple and leave ErrorList here. +type ErrorList []*Error + +// NewErrorTypeMatcher returns an errors.Matcher that returns true +// if the provided error is a Error and has the provided ErrorType. +func NewErrorTypeMatcher(t ErrorType) utilerrors.Matcher { + return func(err error) bool { + if e, ok := err.(*Error); ok { + return e.Type == t + } + return false + } +} + +// ToAggregate converts the ErrorList into an errors.Aggregate. +func (list ErrorList) ToAggregate() utilerrors.Aggregate { + errs := make([]error, len(list)) + for i := range list { + errs[i] = list[i] + } + return utilerrors.NewAggregate(errs) +} + +func fromAggregate(agg utilerrors.Aggregate) ErrorList { + errs := agg.Errors() + list := make(ErrorList, len(errs)) + for i := range errs { + list[i] = errs[i].(*Error) + } + return list +} + +// Filter removes items from the ErrorList that match the provided fns. +func (list ErrorList) Filter(fns ...utilerrors.Matcher) ErrorList { + err := utilerrors.FilterOut(list.ToAggregate(), fns...) + if err == nil { + return nil + } + // FilterOut takes an Aggregate and returns an Aggregate + return fromAggregate(err.(utilerrors.Aggregate)) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/path.go b/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/path.go new file mode 100644 index 0000000000..2efc8eec76 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/validation/field/path.go @@ -0,0 +1,91 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package field + +import ( + "bytes" + "fmt" + "strconv" +) + +// Path represents the path from some root to a particular field. +type Path struct { + name string // the name of this field or "" if this is an index + index string // if name == "", this is a subscript (index or map key) of the previous element + parent *Path // nil if this is the root element +} + +// NewPath creates a root Path object. +func NewPath(name string, moreNames ...string) *Path { + r := &Path{name: name, parent: nil} + for _, anotherName := range moreNames { + r = &Path{name: anotherName, parent: r} + } + return r +} + +// Root returns the root element of this Path. +func (p *Path) Root() *Path { + for ; p.parent != nil; p = p.parent { + // Do nothing. + } + return p +} + +// Child creates a new Path that is a child of the method receiver. +func (p *Path) Child(name string, moreNames ...string) *Path { + r := NewPath(name, moreNames...) + r.Root().parent = p + return r +} + +// Index indicates that the previous Path is to be subscripted by an int. +// This sets the same underlying value as Key. +func (p *Path) Index(index int) *Path { + return &Path{index: strconv.Itoa(index), parent: p} +} + +// Key indicates that the previous Path is to be subscripted by a string. +// This sets the same underlying value as Index. +func (p *Path) Key(key string) *Path { + return &Path{index: key, parent: p} +} + +// String produces a string representation of the Path. +func (p *Path) String() string { + // make a slice to iterate + elems := []*Path{} + for ; p != nil; p = p.parent { + elems = append(elems, p) + } + + // iterate, but it has to be backwards + buf := bytes.NewBuffer(nil) + for i := range elems { + p := elems[len(elems)-1-i] + if p.parent != nil && len(p.name) > 0 { + // This is either the root or it is a subscript. + buf.WriteString(".") + } + if len(p.name) > 0 { + buf.WriteString(p.name) + } else { + fmt.Fprintf(buf, "[%s]", p.index) + } + } + return buf.String() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/validation/validation.go b/vendor/k8s.io/client-go/1.5/pkg/util/validation/validation.go new file mode 100644 index 0000000000..aac2357d74 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/validation/validation.go @@ -0,0 +1,334 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package validation + +import ( + "fmt" + "math" + "net" + "regexp" + "strings" +) + +const qnameCharFmt string = "[A-Za-z0-9]" +const qnameExtCharFmt string = "[-A-Za-z0-9_.]" +const qualifiedNameFmt string = "(" + qnameCharFmt + qnameExtCharFmt + "*)?" + qnameCharFmt +const qualifiedNameMaxLength int = 63 + +var qualifiedNameRegexp = regexp.MustCompile("^" + qualifiedNameFmt + "$") + +// IsQualifiedName tests whether the value passed is what Kubernetes calls a +// "qualified name". This is a format used in various places throughout the +// system. If the value is not valid, a list of error strings is returned. +// Otherwise an empty list (or nil) is returned. +func IsQualifiedName(value string) []string { + var errs []string + parts := strings.Split(value, "/") + var name string + switch len(parts) { + case 1: + name = parts[0] + case 2: + var prefix string + prefix, name = parts[0], parts[1] + if len(prefix) == 0 { + errs = append(errs, "prefix part "+EmptyError()) + } else if msgs := IsDNS1123Subdomain(prefix); len(msgs) != 0 { + errs = append(errs, prefixEach(msgs, "prefix part ")...) + } + default: + return append(errs, RegexError(qualifiedNameFmt, "MyName", "my.name", "123-abc")+ + " with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName'") + } + + if len(name) == 0 { + errs = append(errs, "name part "+EmptyError()) + } else if len(name) > qualifiedNameMaxLength { + errs = append(errs, "name part "+MaxLenError(qualifiedNameMaxLength)) + } + if !qualifiedNameRegexp.MatchString(name) { + errs = append(errs, "name part "+RegexError(qualifiedNameFmt, "MyName", "my.name", "123-abc")) + } + return errs +} + +const labelValueFmt string = "(" + qualifiedNameFmt + ")?" +const LabelValueMaxLength int = 63 + +var labelValueRegexp = regexp.MustCompile("^" + labelValueFmt + "$") + +// IsValidLabelValue tests whether the value passed is a valid label value. If +// the value is not valid, a list of error strings is returned. Otherwise an +// empty list (or nil) is returned. +func IsValidLabelValue(value string) []string { + var errs []string + if len(value) > LabelValueMaxLength { + errs = append(errs, MaxLenError(LabelValueMaxLength)) + } + if !labelValueRegexp.MatchString(value) { + errs = append(errs, RegexError(labelValueFmt, "MyValue", "my_value", "12345")) + } + return errs +} + +const dns1123LabelFmt string = "[a-z0-9]([-a-z0-9]*[a-z0-9])?" +const DNS1123LabelMaxLength int = 63 + +var dns1123LabelRegexp = regexp.MustCompile("^" + dns1123LabelFmt + "$") + +// IsDNS1123Label tests for a string that conforms to the definition of a label in +// DNS (RFC 1123). +func IsDNS1123Label(value string) []string { + var errs []string + if len(value) > DNS1123LabelMaxLength { + errs = append(errs, MaxLenError(DNS1123LabelMaxLength)) + } + if !dns1123LabelRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1123LabelFmt, "my-name", "123-abc")) + } + return errs +} + +const dns1123SubdomainFmt string = dns1123LabelFmt + "(\\." + dns1123LabelFmt + ")*" +const DNS1123SubdomainMaxLength int = 253 + +var dns1123SubdomainRegexp = regexp.MustCompile("^" + dns1123SubdomainFmt + "$") + +// IsDNS1123Subdomain tests for a string that conforms to the definition of a +// subdomain in DNS (RFC 1123). +func IsDNS1123Subdomain(value string) []string { + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !dns1123SubdomainRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1123SubdomainFmt, "example.com")) + } + return errs +} + +const dns1035LabelFmt string = "[a-z]([-a-z0-9]*[a-z0-9])?" +const DNS1035LabelMaxLength int = 63 + +var dns1035LabelRegexp = regexp.MustCompile("^" + dns1035LabelFmt + "$") + +// IsDNS1035Label tests for a string that conforms to the definition of a label in +// DNS (RFC 1035). +func IsDNS1035Label(value string) []string { + var errs []string + if len(value) > DNS1035LabelMaxLength { + errs = append(errs, MaxLenError(DNS1035LabelMaxLength)) + } + if !dns1035LabelRegexp.MatchString(value) { + errs = append(errs, RegexError(dns1035LabelFmt, "my-name", "abc-123")) + } + return errs +} + +// wildcard definition - RFC 1034 section 4.3.3. +// examples: +// - valid: *.bar.com, *.foo.bar.com +// - invalid: *.*.bar.com, *.foo.*.com, *bar.com, f*.bar.com, * +const wildcardDNF1123SubdomainFmt = "\\*\\." + dns1123SubdomainFmt + +// IsWildcardDNS1123Subdomain tests for a string that conforms to the definition of a +// wildcard subdomain in DNS (RFC 1034 section 4.3.3). +func IsWildcardDNS1123Subdomain(value string) []string { + wildcardDNS1123SubdomainRegexp := regexp.MustCompile("^\\*\\." + dns1123SubdomainFmt + "$") + + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !wildcardDNS1123SubdomainRegexp.MatchString(value) { + errs = append(errs, RegexError(wildcardDNF1123SubdomainFmt, "*.example.com")) + } + return errs +} + +const cIdentifierFmt string = "[A-Za-z_][A-Za-z0-9_]*" + +var cIdentifierRegexp = regexp.MustCompile("^" + cIdentifierFmt + "$") + +// IsCIdentifier tests for a string that conforms the definition of an identifier +// in C. This checks the format, but not the length. +func IsCIdentifier(value string) []string { + if !cIdentifierRegexp.MatchString(value) { + return []string{RegexError(cIdentifierFmt, "my_name", "MY_NAME", "MyName")} + } + return nil +} + +// IsValidPortNum tests that the argument is a valid, non-zero port number. +func IsValidPortNum(port int) []string { + if 1 <= port && port <= 65535 { + return nil + } + return []string{InclusiveRangeError(1, 65535)} +} + +// Now in libcontainer UID/GID limits is 0 ~ 1<<31 - 1 +// TODO: once we have a type for UID/GID we should make these that type. +const ( + minUserID = 0 + maxUserID = math.MaxInt32 + minGroupID = 0 + maxGroupID = math.MaxInt32 +) + +// IsValidGroupId tests that the argument is a valid Unix GID. +func IsValidGroupId(gid int64) []string { + if minGroupID <= gid && gid <= maxGroupID { + return nil + } + return []string{InclusiveRangeError(minGroupID, maxGroupID)} +} + +// IsValidUserId tests that the argument is a valid Unix UID. +func IsValidUserId(uid int64) []string { + if minUserID <= uid && uid <= maxUserID { + return nil + } + return []string{InclusiveRangeError(minUserID, maxUserID)} +} + +var portNameCharsetRegex = regexp.MustCompile("^[-a-z0-9]+$") +var portNameOneLetterRegexp = regexp.MustCompile("[a-z]") + +// IsValidPortName check that the argument is valid syntax. It must be +// non-empty and no more than 15 characters long. It may contain only [-a-z0-9] +// and must contain at least one letter [a-z]. It must not start or end with a +// hyphen, nor contain adjacent hyphens. +// +// Note: We only allow lower-case characters, even though RFC 6335 is case +// insensitive. +func IsValidPortName(port string) []string { + var errs []string + if len(port) > 15 { + errs = append(errs, MaxLenError(15)) + } + if !portNameCharsetRegex.MatchString(port) { + errs = append(errs, "must contain only alpha-numeric characters (a-z, 0-9), and hyphens (-)") + } + if !portNameOneLetterRegexp.MatchString(port) { + errs = append(errs, "must contain at least one letter (a-z)") + } + if strings.Contains(port, "--") { + errs = append(errs, "must not contain consecutive hyphens") + } + if len(port) > 0 && (port[0] == '-' || port[len(port)-1] == '-') { + errs = append(errs, "must not begin or end with a hyphen") + } + return errs +} + +// IsValidIP tests that the argument is a valid IP address. +func IsValidIP(value string) []string { + if net.ParseIP(value) == nil { + return []string{"must be a valid IP address, (e.g. 10.9.8.7)"} + } + return nil +} + +const percentFmt string = "[0-9]+%" + +var percentRegexp = regexp.MustCompile("^" + percentFmt + "$") + +func IsValidPercent(percent string) []string { + if !percentRegexp.MatchString(percent) { + return []string{RegexError(percentFmt, "1%", "93%")} + } + return nil +} + +const httpHeaderNameFmt string = "[-A-Za-z0-9]+" + +var httpHeaderNameRegexp = regexp.MustCompile("^" + httpHeaderNameFmt + "$") + +// IsHTTPHeaderName checks that a string conforms to the Go HTTP library's +// definition of a valid header field name (a stricter subset than RFC7230). +func IsHTTPHeaderName(value string) []string { + if !httpHeaderNameRegexp.MatchString(value) { + return []string{RegexError(httpHeaderNameFmt, "X-Header-Name")} + } + return nil +} + +const configMapKeyFmt = `[-._a-zA-Z0-9]+` + +var configMapKeyRegexp = regexp.MustCompile("^" + configMapKeyFmt + "$") + +// IsConfigMapKey tests for a string that is a valid key for a ConfigMap or Secret +func IsConfigMapKey(value string) []string { + var errs []string + if len(value) > DNS1123SubdomainMaxLength { + errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength)) + } + if !configMapKeyRegexp.MatchString(value) { + errs = append(errs, RegexError(configMapKeyFmt, "key.name", "KEY_NAME", "key-name")) + } + if value == "." { + errs = append(errs, `must not be '.'`) + } + if value == ".." { + errs = append(errs, `must not be '..'`) + } else if strings.HasPrefix(value, "..") { + errs = append(errs, `must not start with '..'`) + } + return errs +} + +// MaxLenError returns a string explanation of a "string too long" validation +// failure. +func MaxLenError(length int) string { + return fmt.Sprintf("must be no more than %d characters", length) +} + +// RegexError returns a string explanation of a regex validation failure. +func RegexError(fmt string, examples ...string) string { + s := "must match the regex " + fmt + if len(examples) == 0 { + return s + } + s += " (e.g. " + for i := range examples { + if i > 0 { + s += " or " + } + s += "'" + examples[i] + "'" + } + return s + ")" +} + +// EmptyError returns a string explanation of a "must not be empty" validation +// failure. +func EmptyError() string { + return "must be non-empty" +} + +func prefixEach(msgs []string, prefix string) []string { + for i := range msgs { + msgs[i] = prefix + msgs[i] + } + return msgs +} + +// InclusiveRangeError returns a string explanation of a numeric "must be +// between" validation failure. +func InclusiveRangeError(lo, hi int) string { + return fmt.Sprintf(`must be between %d and %d, inclusive`, lo, hi) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/wait/doc.go b/vendor/k8s.io/client-go/1.5/pkg/util/wait/doc.go new file mode 100644 index 0000000000..ff89dc170e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/wait/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package wait provides tools for polling or listening for changes +// to a condition. +package wait diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/wait/wait.go b/vendor/k8s.io/client-go/1.5/pkg/util/wait/wait.go new file mode 100644 index 0000000000..b58a6288d0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/wait/wait.go @@ -0,0 +1,268 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package wait + +import ( + "errors" + "math/rand" + "time" +) + +// For any test of the style: +// ... +// <- time.After(timeout): +// t.Errorf("Timed out") +// The value for timeout should effectively be "forever." Obviously we don't want our tests to truly lock up forever, but 30s +// is long enough that it is effectively forever for the things that can slow down a run on a heavily contended machine +// (GC, seeks, etc), but not so long as to make a developer ctrl-c a test run if they do happen to break that test. +var ForeverTestTimeout = time.Second * 30 + +// NeverStop may be passed to Until to make it never stop. +var NeverStop <-chan struct{} = make(chan struct{}) + +// Forever is syntactic sugar on top of Until +func Forever(f func(), period time.Duration) { + Until(f, period, NeverStop) +} + +// Until loops until stop channel is closed, running f every period. +// Until is syntactic sugar on top of JitterUntil with zero jitter +// factor, with sliding = true (which means the timer for period +// starts after the f completes). +func Until(f func(), period time.Duration, stopCh <-chan struct{}) { + JitterUntil(f, period, 0.0, true, stopCh) +} + +// NonSlidingUntil loops until stop channel is closed, running f every +// period. NonSlidingUntil is syntactic sugar on top of JitterUntil +// with zero jitter factor, with sliding = false (meaning the timer for +// period starts at the same time as the function starts). +func NonSlidingUntil(f func(), period time.Duration, stopCh <-chan struct{}) { + JitterUntil(f, period, 0.0, false, stopCh) +} + +// JitterUntil loops until stop channel is closed, running f every period. +// If jitterFactor is positive, the period is jittered before every run of f. +// If jitterFactor is not positive, the period is unchanged. +// Catches any panics, and keeps going. f may not be invoked if +// stop channel is already closed. Pass NeverStop to Until if you +// don't want it stop. +func JitterUntil(f func(), period time.Duration, jitterFactor float64, sliding bool, stopCh <-chan struct{}) { + for { + + select { + case <-stopCh: + return + default: + } + + jitteredPeriod := period + if jitterFactor > 0.0 { + jitteredPeriod = Jitter(period, jitterFactor) + } + + var t *time.Timer + if !sliding { + t = time.NewTimer(jitteredPeriod) + } + + func() { + f() + }() + + if sliding { + t = time.NewTimer(jitteredPeriod) + } + + // NOTE: b/c there is no priority selection in golang + // it is possible for this to race, meaning we could + // trigger t.C and stopCh, and t.C select falls through. + // In order to mitigate we re-check stopCh at the beginning + // of every loop to prevent extra executions of f(). + select { + case <-stopCh: + return + case <-t.C: + } + } +} + +// Jitter returns a time.Duration between duration and duration + maxFactor * duration, +// to allow clients to avoid converging on periodic behavior. If maxFactor is 0.0, a +// suggested default value will be chosen. +func Jitter(duration time.Duration, maxFactor float64) time.Duration { + if maxFactor <= 0.0 { + maxFactor = 1.0 + } + wait := duration + time.Duration(rand.Float64()*maxFactor*float64(duration)) + return wait +} + +// ErrWaitTimeout is returned when the condition exited without success +var ErrWaitTimeout = errors.New("timed out waiting for the condition") + +// ConditionFunc returns true if the condition is satisfied, or an error +// if the loop should be aborted. +type ConditionFunc func() (done bool, err error) + +// Backoff is parameters applied to a Backoff function. +type Backoff struct { + Duration time.Duration + Factor float64 + Jitter float64 + Steps int +} + +// ExponentialBackoff repeats a condition check up to steps times, increasing the wait +// by multipling the previous duration by factor. If jitter is greater than zero, +// a random amount of each duration is added (between duration and duration*(1+jitter)). +// If the condition never returns true, ErrWaitTimeout is returned. All other errors +// terminate immediately. +func ExponentialBackoff(backoff Backoff, condition ConditionFunc) error { + duration := backoff.Duration + for i := 0; i < backoff.Steps; i++ { + if i != 0 { + adjusted := duration + if backoff.Jitter > 0.0 { + adjusted = Jitter(duration, backoff.Jitter) + } + time.Sleep(adjusted) + duration = time.Duration(float64(duration) * backoff.Factor) + } + if ok, err := condition(); err != nil || ok { + return err + } + } + return ErrWaitTimeout +} + +// Poll tries a condition func until it returns true, an error, or the timeout +// is reached. condition will always be invoked at least once but some intervals +// may be missed if the condition takes too long or the time window is too short. +// If you want to Poll something forever, see PollInfinite. +// Poll always waits the interval before the first check of the condition. +func Poll(interval, timeout time.Duration, condition ConditionFunc) error { + return pollInternal(poller(interval, timeout), condition) +} + +func pollInternal(wait WaitFunc, condition ConditionFunc) error { + done := make(chan struct{}) + defer close(done) + return WaitFor(wait, condition, done) +} + +// PollImmediate is identical to Poll, except that it performs the first check +// immediately, not waiting interval beforehand. +func PollImmediate(interval, timeout time.Duration, condition ConditionFunc) error { + return pollImmediateInternal(poller(interval, timeout), condition) +} + +func pollImmediateInternal(wait WaitFunc, condition ConditionFunc) error { + done, err := condition() + if err != nil { + return err + } + if done { + return nil + } + return pollInternal(wait, condition) +} + +// PollInfinite polls forever. +func PollInfinite(interval time.Duration, condition ConditionFunc) error { + done := make(chan struct{}) + defer close(done) + return PollUntil(interval, condition, done) +} + +// PollUntil is like Poll, but it takes a stop change instead of total duration +func PollUntil(interval time.Duration, condition ConditionFunc, stopCh <-chan struct{}) error { + return WaitFor(poller(interval, 0), condition, stopCh) +} + +// WaitFunc creates a channel that receives an item every time a test +// should be executed and is closed when the last test should be invoked. +type WaitFunc func(done <-chan struct{}) <-chan struct{} + +// WaitFor gets a channel from wait(), and then invokes fn once for every value +// placed on the channel and once more when the channel is closed. If fn +// returns an error the loop ends and that error is returned, and if fn returns +// true the loop ends and nil is returned. ErrWaitTimeout will be returned if +// the channel is closed without fn ever returning true. +func WaitFor(wait WaitFunc, fn ConditionFunc, done <-chan struct{}) error { + c := wait(done) + for { + _, open := <-c + ok, err := fn() + if err != nil { + return err + } + if ok { + return nil + } + if !open { + break + } + } + return ErrWaitTimeout +} + +// poller returns a WaitFunc that will send to the channel every +// interval until timeout has elapsed and then close the channel. +// Over very short intervals you may receive no ticks before +// the channel is closed. If timeout is 0, the channel +// will never be closed. +func poller(interval, timeout time.Duration) WaitFunc { + return WaitFunc(func(done <-chan struct{}) <-chan struct{} { + ch := make(chan struct{}) + + go func() { + defer close(ch) + + tick := time.NewTicker(interval) + defer tick.Stop() + + var after <-chan time.Time + if timeout != 0 { + // time.After is more convenient, but it + // potentially leaves timers around much longer + // than necessary if we exit early. + timer := time.NewTimer(timeout) + after = timer.C + defer timer.Stop() + } + + for { + select { + case <-tick.C: + // If the consumer isn't ready for this signal drop it and + // check the other channels. + select { + case ch <- struct{}{}: + default: + } + case <-after: + return + case <-done: + return + } + } + }() + + return ch + }) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/util/yaml/decoder.go b/vendor/k8s.io/client-go/1.5/pkg/util/yaml/decoder.go new file mode 100644 index 0000000000..c65c2d6ba3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/util/yaml/decoder.go @@ -0,0 +1,306 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package yaml + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "strings" + "unicode" + + "github.com/ghodss/yaml" + "github.com/golang/glog" +) + +// ToJSON converts a single YAML document into a JSON document +// or returns an error. If the document appears to be JSON the +// YAML decoding path is not used (so that error messages are +// JSON specific). +func ToJSON(data []byte) ([]byte, error) { + if hasJSONPrefix(data) { + return data, nil + } + return yaml.YAMLToJSON(data) +} + +// YAMLToJSONDecoder decodes YAML documents from an io.Reader by +// separating individual documents. It first converts the YAML +// body to JSON, then unmarshals the JSON. +type YAMLToJSONDecoder struct { + reader Reader +} + +// NewYAMLToJSONDecoder decodes YAML documents from the provided +// stream in chunks by converting each document (as defined by +// the YAML spec) into its own chunk, converting it to JSON via +// yaml.YAMLToJSON, and then passing it to json.Decoder. +func NewYAMLToJSONDecoder(r io.Reader) *YAMLToJSONDecoder { + reader := bufio.NewReader(r) + return &YAMLToJSONDecoder{ + reader: NewYAMLReader(reader), + } +} + +// Decode reads a YAML document as JSON from the stream or returns +// an error. The decoding rules match json.Unmarshal, not +// yaml.Unmarshal. +func (d *YAMLToJSONDecoder) Decode(into interface{}) error { + bytes, err := d.reader.Read() + if err != nil && err != io.EOF { + return err + } + + if len(bytes) != 0 { + data, err := yaml.YAMLToJSON(bytes) + if err != nil { + return err + } + return json.Unmarshal(data, into) + } + return err +} + +// YAMLDecoder reads chunks of objects and returns ErrShortBuffer if +// the data is not sufficient. +type YAMLDecoder struct { + r io.ReadCloser + scanner *bufio.Scanner + remaining []byte +} + +// NewDocumentDecoder decodes YAML documents from the provided +// stream in chunks by converting each document (as defined by +// the YAML spec) into its own chunk. io.ErrShortBuffer will be +// returned if the entire buffer could not be read to assist +// the caller in framing the chunk. +func NewDocumentDecoder(r io.ReadCloser) io.ReadCloser { + scanner := bufio.NewScanner(r) + scanner.Split(splitYAMLDocument) + return &YAMLDecoder{ + r: r, + scanner: scanner, + } +} + +// Read reads the previous slice into the buffer, or attempts to read +// the next chunk. +// TODO: switch to readline approach. +func (d *YAMLDecoder) Read(data []byte) (n int, err error) { + left := len(d.remaining) + if left == 0 { + // return the next chunk from the stream + if !d.scanner.Scan() { + err := d.scanner.Err() + if err == nil { + err = io.EOF + } + return 0, err + } + out := d.scanner.Bytes() + d.remaining = out + left = len(out) + } + + // fits within data + if left <= len(data) { + copy(data, d.remaining) + d.remaining = nil + return len(d.remaining), nil + } + + // caller will need to reread + copy(data, d.remaining[:left]) + d.remaining = d.remaining[left:] + return len(data), io.ErrShortBuffer +} + +func (d *YAMLDecoder) Close() error { + return d.r.Close() +} + +const yamlSeparator = "\n---" +const separator = "---\n" + +// splitYAMLDocument is a bufio.SplitFunc for splitting YAML streams into individual documents. +func splitYAMLDocument(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + sep := len([]byte(yamlSeparator)) + if i := bytes.Index(data, []byte(yamlSeparator)); i >= 0 { + // We have a potential document terminator + i += sep + after := data[i:] + if len(after) == 0 { + // we can't read any more characters + if atEOF { + return len(data), data[:len(data)-sep], nil + } + return 0, nil, nil + } + if j := bytes.IndexByte(after, '\n'); j >= 0 { + return i + j + 1, data[0 : i-sep], nil + } + return 0, nil, nil + } + // If we're at EOF, we have a final, non-terminated line. Return it. + if atEOF { + return len(data), data, nil + } + // Request more data. + return 0, nil, nil +} + +// decoder is a convenience interface for Decode. +type decoder interface { + Decode(into interface{}) error +} + +// YAMLOrJSONDecoder attempts to decode a stream of JSON documents or +// YAML documents by sniffing for a leading { character. +type YAMLOrJSONDecoder struct { + r io.Reader + bufferSize int + + decoder decoder +} + +// NewYAMLOrJSONDecoder returns a decoder that will process YAML documents +// or JSON documents from the given reader as a stream. bufferSize determines +// how far into the stream the decoder will look to figure out whether this +// is a JSON stream (has whitespace followed by an open brace). +func NewYAMLOrJSONDecoder(r io.Reader, bufferSize int) *YAMLOrJSONDecoder { + return &YAMLOrJSONDecoder{ + r: r, + bufferSize: bufferSize, + } +} + +// Decode unmarshals the next object from the underlying stream into the +// provide object, or returns an error. +func (d *YAMLOrJSONDecoder) Decode(into interface{}) error { + if d.decoder == nil { + buffer, isJSON := GuessJSONStream(d.r, d.bufferSize) + if isJSON { + glog.V(4).Infof("decoding stream as JSON") + d.decoder = json.NewDecoder(buffer) + } else { + glog.V(4).Infof("decoding stream as YAML") + d.decoder = NewYAMLToJSONDecoder(buffer) + } + } + err := d.decoder.Decode(into) + if jsonDecoder, ok := d.decoder.(*json.Decoder); ok { + if syntax, ok := err.(*json.SyntaxError); ok { + data, readErr := ioutil.ReadAll(jsonDecoder.Buffered()) + if readErr != nil { + glog.V(4).Infof("reading stream failed: %v", readErr) + } + js := string(data) + start := strings.LastIndex(js[:syntax.Offset], "\n") + 1 + line := strings.Count(js[:start], "\n") + return fmt.Errorf("json: line %d: %s", line, syntax.Error()) + } + } + return err +} + +type Reader interface { + Read() ([]byte, error) +} + +type YAMLReader struct { + reader Reader +} + +func NewYAMLReader(r *bufio.Reader) *YAMLReader { + return &YAMLReader{ + reader: &LineReader{reader: r}, + } +} + +// Read returns a full YAML document. +func (r *YAMLReader) Read() ([]byte, error) { + var buffer bytes.Buffer + for { + line, err := r.reader.Read() + if err != nil && err != io.EOF { + return nil, err + } + + if string(line) == separator || err == io.EOF { + if buffer.Len() != 0 { + return buffer.Bytes(), nil + } + if err == io.EOF { + return nil, err + } + } else { + buffer.Write(line) + } + } +} + +type LineReader struct { + reader *bufio.Reader +} + +// Read returns a single line (with '\n' ended) from the underlying reader. +// An error is returned iff there is an error with the underlying reader. +func (r *LineReader) Read() ([]byte, error) { + var ( + isPrefix bool = true + err error = nil + line []byte + buffer bytes.Buffer + ) + + for isPrefix && err == nil { + line, isPrefix, err = r.reader.ReadLine() + buffer.Write(line) + } + buffer.WriteByte('\n') + return buffer.Bytes(), err +} + +// GuessJSONStream scans the provided reader up to size, looking +// for an open brace indicating this is JSON. It will return the +// bufio.Reader it creates for the consumer. +func GuessJSONStream(r io.Reader, size int) (io.Reader, bool) { + buffer := bufio.NewReaderSize(r, size) + b, _ := buffer.Peek(size) + return buffer, hasJSONPrefix(b) +} + +var jsonPrefix = []byte("{") + +// hasJSONPrefix returns true if the provided buffer appears to start with +// a JSON open brace. +func hasJSONPrefix(buf []byte) bool { + return hasPrefix(buf, jsonPrefix) +} + +// Return true if the first non-whitespace bytes in buf is +// prefix. +func hasPrefix(buf []byte, prefix []byte) bool { + trim := bytes.TrimLeftFunc(buf, unicode.IsSpace) + return bytes.HasPrefix(trim, prefix) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/version/base.go b/vendor/k8s.io/client-go/1.5/pkg/version/base.go new file mode 100644 index 0000000000..c377705fe8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/version/base.go @@ -0,0 +1,59 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +// Base version information. +// +// This is the fallback data used when version information from git is not +// provided via go ldflags. It provides an approximation of the Kubernetes +// version for ad-hoc builds (e.g. `go build`) that cannot get the version +// information from git. +// +// If you are looking at these fields in the git tree, they look +// strange. They are modified on the fly by the build process. The +// in-tree values are dummy values used for "git archive", which also +// works for GitHub tar downloads. +// +// When releasing a new Kubernetes version, this file is updated by +// build/mark_new_version.sh to reflect the new version, and then a +// git annotated tag (using format vX.Y where X == Major version and Y +// == Minor version) is created to point to the commit that updates +// pkg/version/base.go +var ( + // TODO: Deprecate gitMajor and gitMinor, use only gitVersion + // instead. First step in deprecation, keep the fields but make + // them irrelevant. (Next we'll take it out, which may muck with + // scripts consuming the kubectl version output - but most of + // these should be looking at gitVersion already anyways.) + gitMajor string = "" // major version, always numeric + gitMinor string = "" // minor version, numeric possibly followed by "+" + + // semantic version, derived by build scripts (see + // https://github.com/kubernetes/kubernetes/blob/master/docs/design/versioning.md + // for a detailed discussion of this field) + // + // TODO: This field is still called "gitVersion" for legacy + // reasons. For prerelease versions, the build metadata on the + // semantic version is a git hash, but the version itself is no + // longer the direct output of "git describe", but a slight + // translation to be semver compliant. + gitVersion string = "v0.0.0-master+$Format:%h$" + gitCommit string = "$Format:%H$" // sha1 from git, output of $(git rev-parse HEAD) + gitTreeState string = "not a git tree" // state of git tree, either "clean" or "dirty" + + buildDate string = "1970-01-01T00:00:00Z" // build date in ISO8601 format, output of $(date -u +'%Y-%m-%dT%H:%M:%SZ') +) diff --git a/vendor/k8s.io/client-go/1.5/pkg/version/doc.go b/vendor/k8s.io/client-go/1.5/pkg/version/doc.go new file mode 100644 index 0000000000..3803957848 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/version/doc.go @@ -0,0 +1,20 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package version supplies version information collected at build time to +// kubernetes components. +// +k8s:openapi-gen=true +package version diff --git a/vendor/k8s.io/client-go/1.5/pkg/version/semver.go b/vendor/k8s.io/client-go/1.5/pkg/version/semver.go new file mode 100644 index 0000000000..1f4067e217 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/version/semver.go @@ -0,0 +1,50 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +import ( + "strings" + "unicode" + + "github.com/blang/semver" + "github.com/golang/glog" +) + +func Parse(gitversion string) (semver.Version, error) { + // optionally trim leading spaces then one v + var seen bool + gitversion = strings.TrimLeftFunc(gitversion, func(ch rune) bool { + if seen { + return false + } + if ch == 'v' { + seen = true + return true + } + return unicode.IsSpace(ch) + }) + + return semver.Make(gitversion) +} + +func MustParse(gitversion string) semver.Version { + v, err := Parse(gitversion) + if err != nil { + glog.Fatalf("failed to parse semver from gitversion %q: %v", gitversion, err) + } + return v +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/version/version.go b/vendor/k8s.io/client-go/1.5/pkg/version/version.go new file mode 100644 index 0000000000..0da3aadde0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/version/version.go @@ -0,0 +1,60 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +import ( + "fmt" + "runtime" +) + +// Info contains versioning information. +// TODO: Add []string of api versions supported? It's still unclear +// how we'll want to distribute that information. +type Info struct { + Major string `json:"major"` + Minor string `json:"minor"` + GitVersion string `json:"gitVersion"` + GitCommit string `json:"gitCommit"` + GitTreeState string `json:"gitTreeState"` + BuildDate string `json:"buildDate"` + GoVersion string `json:"goVersion"` + Compiler string `json:"compiler"` + Platform string `json:"platform"` +} + +// Get returns the overall codebase version. It's for detecting +// what code a binary was built from. +func Get() Info { + // These variables typically come from -ldflags settings and in + // their absence fallback to the settings in pkg/version/base.go + return Info{ + Major: gitMajor, + Minor: gitMinor, + GitVersion: gitVersion, + GitCommit: gitCommit, + GitTreeState: gitTreeState, + BuildDate: buildDate, + GoVersion: runtime.Version(), + Compiler: runtime.Compiler, + Platform: fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH), + } +} + +// String returns info as a human-friendly version string. +func (info Info) String() string { + return info.GitVersion +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/doc.go b/vendor/k8s.io/client-go/1.5/pkg/watch/doc.go new file mode 100644 index 0000000000..5fde5e7427 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/doc.go @@ -0,0 +1,19 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package watch contains a generic watchable interface, and a fake for +// testing code that uses the watch interface. +package watch diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/filter.go b/vendor/k8s.io/client-go/1.5/pkg/watch/filter.go new file mode 100644 index 0000000000..3ca27f22c5 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/filter.go @@ -0,0 +1,109 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "sync" +) + +// FilterFunc should take an event, possibly modify it in some way, and return +// the modified event. If the event should be ignored, then return keep=false. +type FilterFunc func(in Event) (out Event, keep bool) + +// Filter passes all events through f before allowing them to pass on. +// Putting a filter on a watch, as an unavoidable side-effect due to the way +// go channels work, effectively causes the watch's event channel to have its +// queue length increased by one. +// +// WARNING: filter has a fatal flaw, in that it can't properly update the +// Type field (Add/Modified/Deleted) to reflect items beginning to pass the +// filter when they previously didn't. +// +func Filter(w Interface, f FilterFunc) Interface { + fw := &filteredWatch{ + incoming: w, + result: make(chan Event), + f: f, + } + go fw.loop() + return fw +} + +type filteredWatch struct { + incoming Interface + result chan Event + f FilterFunc +} + +// ResultChan returns a channel which will receive filtered events. +func (fw *filteredWatch) ResultChan() <-chan Event { + return fw.result +} + +// Stop stops the upstream watch, which will eventually stop this watch. +func (fw *filteredWatch) Stop() { + fw.incoming.Stop() +} + +// loop waits for new values, filters them, and resends them. +func (fw *filteredWatch) loop() { + defer close(fw.result) + for { + event, ok := <-fw.incoming.ResultChan() + if !ok { + break + } + filtered, keep := fw.f(event) + if keep { + fw.result <- filtered + } + } +} + +// Recorder records all events that are sent from the watch until it is closed. +type Recorder struct { + Interface + + lock sync.Mutex + events []Event +} + +var _ Interface = &Recorder{} + +// NewRecorder wraps an Interface and records any changes sent across it. +func NewRecorder(w Interface) *Recorder { + r := &Recorder{} + r.Interface = Filter(w, r.record) + return r +} + +// record is a FilterFunc and tracks each received event. +func (r *Recorder) record(in Event) (Event, bool) { + r.lock.Lock() + defer r.lock.Unlock() + r.events = append(r.events, in) + return in, true +} + +// Events returns a copy of the events sent across this recorder. +func (r *Recorder) Events() []Event { + r.lock.Lock() + defer r.lock.Unlock() + copied := make([]Event, len(r.events)) + copy(copied, r.events) + return copied +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/mux.go b/vendor/k8s.io/client-go/1.5/pkg/watch/mux.go new file mode 100644 index 0000000000..65b6609a16 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/mux.go @@ -0,0 +1,257 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "sync" + + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch +// channel is full. +type FullChannelBehavior int + +const ( + WaitIfChannelFull FullChannelBehavior = iota + DropIfChannelFull +) + +// Buffer the incoming queue a little bit even though it should rarely ever accumulate +// anything, just in case a few events are received in such a short window that +// Broadcaster can't move them onto the watchers' queues fast enough. +const incomingQueueLength = 25 + +// Broadcaster distributes event notifications among any number of watchers. Every event +// is delivered to every watcher. +type Broadcaster struct { + // TODO: see if this lock is needed now that new watchers go through + // the incoming channel. + lock sync.Mutex + + watchers map[int64]*broadcasterWatcher + nextWatcher int64 + distributing sync.WaitGroup + + incoming chan Event + + // How large to make watcher's channel. + watchQueueLength int + // If one of the watch channels is full, don't wait for it to become empty. + // Instead just deliver it to the watchers that do have space in their + // channels and move on to the next event. + // It's more fair to do this on a per-watcher basis than to do it on the + // "incoming" channel, which would allow one slow watcher to prevent all + // other watchers from getting new events. + fullChannelBehavior FullChannelBehavior +} + +// NewBroadcaster creates a new Broadcaster. queueLength is the maximum number of events to queue per watcher. +// It is guaranteed that events will be distributed in the order in which they occur, +// but the order in which a single event is distributed among all of the watchers is unspecified. +func NewBroadcaster(queueLength int, fullChannelBehavior FullChannelBehavior) *Broadcaster { + m := &Broadcaster{ + watchers: map[int64]*broadcasterWatcher{}, + incoming: make(chan Event, incomingQueueLength), + watchQueueLength: queueLength, + fullChannelBehavior: fullChannelBehavior, + } + m.distributing.Add(1) + go m.loop() + return m +} + +const internalRunFunctionMarker = "internal-do-function" + +// a function type we can shoehorn into the queue. +type functionFakeRuntimeObject func() + +func (obj functionFakeRuntimeObject) GetObjectKind() unversioned.ObjectKind { + return unversioned.EmptyObjectKind +} + +// Execute f, blocking the incoming queue (and waiting for it to drain first). +// The purpose of this terrible hack is so that watchers added after an event +// won't ever see that event, and will always see any event after they are +// added. +func (b *Broadcaster) blockQueue(f func()) { + var wg sync.WaitGroup + wg.Add(1) + b.incoming <- Event{ + Type: internalRunFunctionMarker, + Object: functionFakeRuntimeObject(func() { + defer wg.Done() + f() + }), + } + wg.Wait() +} + +// Watch adds a new watcher to the list and returns an Interface for it. +// Note: new watchers will only receive new events. They won't get an entire history +// of previous events. +func (m *Broadcaster) Watch() Interface { + var w *broadcasterWatcher + m.blockQueue(func() { + m.lock.Lock() + defer m.lock.Unlock() + id := m.nextWatcher + m.nextWatcher++ + w = &broadcasterWatcher{ + result: make(chan Event, m.watchQueueLength), + stopped: make(chan struct{}), + id: id, + m: m, + } + m.watchers[id] = w + }) + return w +} + +// WatchWithPrefix adds a new watcher to the list and returns an Interface for it. It sends +// queuedEvents down the new watch before beginning to send ordinary events from Broadcaster. +// The returned watch will have a queue length that is at least large enough to accommodate +// all of the items in queuedEvents. +func (m *Broadcaster) WatchWithPrefix(queuedEvents []Event) Interface { + var w *broadcasterWatcher + m.blockQueue(func() { + m.lock.Lock() + defer m.lock.Unlock() + id := m.nextWatcher + m.nextWatcher++ + length := m.watchQueueLength + if n := len(queuedEvents) + 1; n > length { + length = n + } + w = &broadcasterWatcher{ + result: make(chan Event, length), + stopped: make(chan struct{}), + id: id, + m: m, + } + m.watchers[id] = w + for _, e := range queuedEvents { + w.result <- e + } + }) + return w +} + +// stopWatching stops the given watcher and removes it from the list. +func (m *Broadcaster) stopWatching(id int64) { + m.lock.Lock() + defer m.lock.Unlock() + w, ok := m.watchers[id] + if !ok { + // No need to do anything, it's already been removed from the list. + return + } + delete(m.watchers, id) + close(w.result) +} + +// closeAll disconnects all watchers (presumably in response to a Shutdown call). +func (m *Broadcaster) closeAll() { + m.lock.Lock() + defer m.lock.Unlock() + for _, w := range m.watchers { + close(w.result) + } + // Delete everything from the map, since presence/absence in the map is used + // by stopWatching to avoid double-closing the channel. + m.watchers = map[int64]*broadcasterWatcher{} +} + +// Action distributes the given event among all watchers. +func (m *Broadcaster) Action(action EventType, obj runtime.Object) { + m.incoming <- Event{action, obj} +} + +// Shutdown disconnects all watchers (but any queued events will still be distributed). +// You must not call Action or Watch* after calling Shutdown. This call blocks +// until all events have been distributed through the outbound channels. Note +// that since they can be buffered, this means that the watchers might not +// have received the data yet as it can remain sitting in the buffered +// channel. +func (m *Broadcaster) Shutdown() { + close(m.incoming) + m.distributing.Wait() +} + +// loop receives from m.incoming and distributes to all watchers. +func (m *Broadcaster) loop() { + // Deliberately not catching crashes here. Yes, bring down the process if there's a + // bug in watch.Broadcaster. + for { + event, ok := <-m.incoming + if !ok { + break + } + if event.Type == internalRunFunctionMarker { + event.Object.(functionFakeRuntimeObject)() + continue + } + m.distribute(event) + } + m.closeAll() + m.distributing.Done() +} + +// distribute sends event to all watchers. Blocking. +func (m *Broadcaster) distribute(event Event) { + m.lock.Lock() + defer m.lock.Unlock() + if m.fullChannelBehavior == DropIfChannelFull { + for _, w := range m.watchers { + select { + case w.result <- event: + case <-w.stopped: + default: // Don't block if the event can't be queued. + } + } + } else { + for _, w := range m.watchers { + select { + case w.result <- event: + case <-w.stopped: + } + } + } +} + +// broadcasterWatcher handles a single watcher of a broadcaster +type broadcasterWatcher struct { + result chan Event + stopped chan struct{} + stop sync.Once + id int64 + m *Broadcaster +} + +// ResultChan returns a channel to use for waiting on events. +func (mw *broadcasterWatcher) ResultChan() <-chan Event { + return mw.result +} + +// Stop stops watching and removes mw from its list. +func (mw *broadcasterWatcher) Stop() { + mw.stop.Do(func() { + close(mw.stopped) + mw.m.stopWatching(mw.id) + }) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/streamwatcher.go b/vendor/k8s.io/client-go/1.5/pkg/watch/streamwatcher.go new file mode 100644 index 0000000000..92609a06c0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/streamwatcher.go @@ -0,0 +1,119 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "io" + "sync" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/net" + utilruntime "k8s.io/client-go/1.5/pkg/util/runtime" +) + +// Decoder allows StreamWatcher to watch any stream for which a Decoder can be written. +type Decoder interface { + // Decode should return the type of event, the decoded object, or an error. + // An error will cause StreamWatcher to call Close(). Decode should block until + // it has data or an error occurs. + Decode() (action EventType, object runtime.Object, err error) + + // Close should close the underlying io.Reader, signalling to the source of + // the stream that it is no longer being watched. Close() must cause any + // outstanding call to Decode() to return with an error of some sort. + Close() +} + +// StreamWatcher turns any stream for which you can write a Decoder interface +// into a watch.Interface. +type StreamWatcher struct { + sync.Mutex + source Decoder + result chan Event + stopped bool +} + +// NewStreamWatcher creates a StreamWatcher from the given decoder. +func NewStreamWatcher(d Decoder) *StreamWatcher { + sw := &StreamWatcher{ + source: d, + // It's easy for a consumer to add buffering via an extra + // goroutine/channel, but impossible for them to remove it, + // so nonbuffered is better. + result: make(chan Event), + } + go sw.receive() + return sw +} + +// ResultChan implements Interface. +func (sw *StreamWatcher) ResultChan() <-chan Event { + return sw.result +} + +// Stop implements Interface. +func (sw *StreamWatcher) Stop() { + // Call Close() exactly once by locking and setting a flag. + sw.Lock() + defer sw.Unlock() + if !sw.stopped { + sw.stopped = true + sw.source.Close() + } +} + +// stopping returns true if Stop() was called previously. +func (sw *StreamWatcher) stopping() bool { + sw.Lock() + defer sw.Unlock() + return sw.stopped +} + +// receive reads result from the decoder in a loop and sends down the result channel. +func (sw *StreamWatcher) receive() { + defer close(sw.result) + defer sw.Stop() + defer utilruntime.HandleCrash() + for { + action, obj, err := sw.source.Decode() + if err != nil { + // Ignore expected error. + if sw.stopping() { + return + } + switch err { + case io.EOF: + // watch closed normally + case io.ErrUnexpectedEOF: + glog.V(1).Infof("Unexpected EOF during watch stream event decoding: %v", err) + default: + msg := "Unable to decode an event from the watch stream: %v" + if net.IsProbableEOF(err) { + glog.V(5).Infof(msg, err) + } else { + glog.Errorf(msg, err) + } + } + return + } + sw.result <- Event{ + Type: action, + Object: obj, + } + } +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/until.go b/vendor/k8s.io/client-go/1.5/pkg/watch/until.go new file mode 100644 index 0000000000..cd46b099c2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/until.go @@ -0,0 +1,82 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "time" + + "k8s.io/client-go/1.5/pkg/util/wait" +) + +// ConditionFunc returns true if the condition has been reached, false if it has not been reached yet, +// or an error if the condition cannot be checked and should terminate. In general, it is better to define +// level driven conditions over edge driven conditions (pod has ready=true, vs pod modified and ready changed +// from false to true). +type ConditionFunc func(event Event) (bool, error) + +// Until reads items from the watch until each provided condition succeeds, and then returns the last watch +// encountered. The first condition that returns an error terminates the watch (and the event is also returned). +// If no event has been received, the returned event will be nil. +// Conditions are satisfied sequentially so as to provide a useful primitive for higher level composition. +func Until(timeout time.Duration, watcher Interface, conditions ...ConditionFunc) (*Event, error) { + ch := watcher.ResultChan() + defer watcher.Stop() + var after <-chan time.Time + if timeout > 0 { + after = time.After(timeout) + } else { + ch := make(chan time.Time) + close(ch) + after = ch + } + var lastEvent *Event + for _, condition := range conditions { + // check the next condition against the previous event and short circuit waiting for the next watch + if lastEvent != nil { + done, err := condition(*lastEvent) + if err != nil { + return lastEvent, err + } + if done { + break + } + } + ConditionSucceeded: + for { + select { + case event, ok := <-ch: + if !ok { + return lastEvent, wait.ErrWaitTimeout + } + lastEvent = &event + + // TODO: check for watch expired error and retry watch from latest point? + done, err := condition(event) + if err != nil { + return lastEvent, err + } + if done { + break ConditionSucceeded + } + + case <-after: + return lastEvent, wait.ErrWaitTimeout + } + } + } + return lastEvent, nil +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/decoder.go b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/decoder.go new file mode 100644 index 0000000000..1506233487 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/decoder.go @@ -0,0 +1,71 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/streaming" + "k8s.io/client-go/1.5/pkg/watch" +) + +// Decoder implements the watch.Decoder interface for io.ReadClosers that +// have contents which consist of a series of watchEvent objects encoded +// with the given streaming decoder. The internal objects will be then +// decoded by the embedded decoder. +type Decoder struct { + decoder streaming.Decoder + embeddedDecoder runtime.Decoder +} + +// NewDecoder creates an Decoder for the given writer and codec. +func NewDecoder(decoder streaming.Decoder, embeddedDecoder runtime.Decoder) *Decoder { + return &Decoder{ + decoder: decoder, + embeddedDecoder: embeddedDecoder, + } +} + +// Decode blocks until it can return the next object in the reader. Returns an error +// if the reader is closed or an object can't be decoded. +func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) { + var got Event + res, _, err := d.decoder.Decode(nil, &got) + if err != nil { + return "", nil, err + } + if res != &got { + return "", nil, fmt.Errorf("unable to decode to versioned.Event") + } + switch got.Type { + case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error): + default: + return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type) + } + + obj, err := runtime.Decode(d.embeddedDecoder, got.Object.Raw) + if err != nil { + return "", nil, fmt.Errorf("unable to decode watch event: %v", err) + } + return watch.EventType(got.Type), obj, nil +} + +// Close closes the underlying r. +func (d *Decoder) Close() { + d.decoder.Close() +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/encoder.go b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/encoder.go new file mode 100644 index 0000000000..0f499d4bba --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/encoder.go @@ -0,0 +1,51 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned + +import ( + "encoding/json" + + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/streaming" + "k8s.io/client-go/1.5/pkg/watch" +) + +// Encoder serializes watch.Events into io.Writer. The internal objects +// are encoded using embedded encoder, and the outer Event is serialized +// using encoder. +type Encoder struct { + encoder streaming.Encoder + embeddedEncoder runtime.Encoder +} + +func NewEncoder(encoder streaming.Encoder, embeddedEncoder runtime.Encoder) *Encoder { + return &Encoder{ + encoder: encoder, + embeddedEncoder: embeddedEncoder, + } +} + +// Encode writes an event to the writer. Returns an error +// if the writer is closed or an object can't be encoded. +func (e *Encoder) Encode(event *watch.Event) error { + data, err := runtime.Encode(e.embeddedEncoder, event.Object) + if err != nil { + return err + } + // FIXME: get rid of json.RawMessage. + return e.encoder.Encode(&Event{string(event.Type), runtime.RawExtension{Raw: json.RawMessage(data)}}) +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.pb.go b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.pb.go new file mode 100644 index 0000000000..241878de1c --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.pb.go @@ -0,0 +1,390 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/watch/versioned/generated.proto +// DO NOT EDIT! + +/* + Package versioned is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/watch/versioned/generated.proto + + It has these top-level messages: + Event +*/ +package versioned + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +import strings "strings" +import reflect "reflect" + +import io "io" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +func (m *Event) Reset() { *m = Event{} } +func (*Event) ProtoMessage() {} +func (*Event) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} } + +func init() { + proto.RegisterType((*Event)(nil), "k8s.io.client-go.1.5.pkg.watch.versioned.Event") +} +func (m *Event) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Event) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Type))) + i += copy(data[i:], m.Type) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Object.Size())) + n1, err := m.Object.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n1 + return i, nil +} + +func encodeFixed64Generated(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Generated(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintGenerated(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} +func (m *Event) Size() (n int) { + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = m.Object.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *Event) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Event{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Object:` + strings.Replace(strings.Replace(this.Object.String(), "RawExtension", "k8s_io_kubernetes_pkg_runtime.RawExtension", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *Event) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Event: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Object", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Object.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipGenerated(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") +) + +var fileDescriptorGenerated = []byte{ + // 273 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0xcd, 0xb6, 0x28, 0xd6, + 0xcb, 0xcc, 0xd7, 0xcf, 0x2e, 0x4d, 0x4a, 0x2d, 0xca, 0x4b, 0x2d, 0x49, 0x2d, 0xd6, 0x2f, 0xc8, + 0x4e, 0xd7, 0x2f, 0x4f, 0x2c, 0x49, 0xce, 0xd0, 0x2f, 0x4b, 0x2d, 0x2a, 0xce, 0xcc, 0xcf, 0x4b, + 0x4d, 0xd1, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0x4a, 0x2c, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, + 0xc9, 0x17, 0x52, 0x85, 0x68, 0xd3, 0x43, 0x68, 0xd3, 0x03, 0x6a, 0xd3, 0x03, 0x6b, 0xd3, 0x83, + 0x6b, 0x93, 0xd2, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, + 0x4f, 0xcf, 0xd7, 0x07, 0xeb, 0x4e, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, 0x62, 0xaa, + 0x94, 0x2e, 0x76, 0xc7, 0x14, 0x95, 0xe6, 0x95, 0x64, 0xe6, 0xa6, 0xa2, 0x3b, 0x42, 0xca, 0x10, + 0xbb, 0xf2, 0xd2, 0x92, 0xcc, 0x1c, 0xfd, 0xcc, 0xbc, 0x92, 0xe2, 0x92, 0x22, 0x74, 0x2d, 0x4a, + 0x75, 0x5c, 0xac, 0xae, 0x65, 0xa9, 0x79, 0x25, 0x42, 0x0a, 0x5c, 0x2c, 0x25, 0x95, 0x05, 0xa9, + 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x4e, 0x3c, 0x27, 0xee, 0xc9, 0x33, 0x3c, 0xba, 0x27, 0xcf, + 0x12, 0x02, 0x14, 0x0b, 0x02, 0xcb, 0x08, 0x05, 0x73, 0xb1, 0xe5, 0x27, 0x65, 0xa5, 0x26, 0x97, + 0x48, 0x30, 0x01, 0xd5, 0x70, 0x1b, 0x69, 0xeb, 0x61, 0xf7, 0x33, 0xd4, 0x75, 0x7a, 0x41, 0x89, + 0xe5, 0xae, 0x15, 0x25, 0xa9, 0x79, 0x20, 0xaf, 0x3b, 0xf1, 0x41, 0x0d, 0x64, 0xf3, 0x07, 0x1b, + 0x11, 0x04, 0x35, 0xca, 0x49, 0xfb, 0xc4, 0x43, 0x39, 0x86, 0x0b, 0x40, 0x7c, 0x03, 0x88, 0x1b, + 0x1e, 0xc9, 0x31, 0x9e, 0x00, 0xe2, 0x0b, 0x40, 0xfc, 0x00, 0x88, 0x27, 0x3c, 0x96, 0x63, 0x88, + 0xe2, 0x84, 0x87, 0x1e, 0x20, 0x00, 0x00, 0xff, 0xff, 0x23, 0x3d, 0x7b, 0x7e, 0x9c, 0x01, 0x00, + 0x00, +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.proto b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.proto new file mode 100644 index 0000000000..340e18dad8 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/generated.proto @@ -0,0 +1,44 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.watch.versioned; + +import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "versioned"; + +// Event represents a single event to a watched resource. +// +// +protobuf=true +// +k8s:openapi-gen=true +message Event { + optional string type = 1; + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context. + optional k8s.io.kubernetes.pkg.runtime.RawExtension object = 2; +} + diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/register.go b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/register.go new file mode 100644 index 0000000000..a1eaec494b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/register.go @@ -0,0 +1,84 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package versioned + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/conversion" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/watch" +) + +// WatchEventKind is name reserved for serializing watch events. +const WatchEventKind = "WatchEvent" + +// AddToGroupVersion registers the watch external and internal kinds with the scheme, and ensures the proper +// conversions are in place. +func AddToGroupVersion(scheme *runtime.Scheme, groupVersion unversioned.GroupVersion) { + scheme.AddKnownTypeWithName(groupVersion.WithKind(WatchEventKind), &Event{}) + scheme.AddKnownTypeWithName( + unversioned.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind), + &InternalEvent{}, + ) + scheme.AddConversionFuncs( + Convert_versioned_Event_to_watch_Event, + Convert_versioned_InternalEvent_to_versioned_Event, + Convert_watch_Event_to_versioned_Event, + Convert_versioned_Event_to_versioned_InternalEvent, + ) +} + +func Convert_watch_Event_to_versioned_Event(in *watch.Event, out *Event, s conversion.Scope) error { + out.Type = string(in.Type) + switch t := in.Object.(type) { + case *runtime.Unknown: + // TODO: handle other fields on Unknown and detect type + out.Object.Raw = t.Raw + case nil: + default: + out.Object.Object = in.Object + } + return nil +} + +func Convert_versioned_InternalEvent_to_versioned_Event(in *InternalEvent, out *Event, s conversion.Scope) error { + return Convert_watch_Event_to_versioned_Event((*watch.Event)(in), out, s) +} + +func Convert_versioned_Event_to_watch_Event(in *Event, out *watch.Event, s conversion.Scope) error { + out.Type = watch.EventType(in.Type) + if in.Object.Object != nil { + out.Object = in.Object.Object + } else if in.Object.Raw != nil { + // TODO: handle other fields on Unknown and detect type + out.Object = &runtime.Unknown{ + Raw: in.Object.Raw, + ContentType: runtime.ContentTypeJSON, + } + } + return nil +} + +func Convert_versioned_Event_to_versioned_InternalEvent(in *Event, out *InternalEvent, s conversion.Scope) error { + return Convert_versioned_Event_to_watch_Event(in, (*watch.Event)(out), s) +} + +// InternalEvent makes watch.Event versioned +type InternalEvent watch.Event + +func (e *InternalEvent) GetObjectKind() unversioned.ObjectKind { return unversioned.EmptyObjectKind } +func (e *Event) GetObjectKind() unversioned.ObjectKind { return unversioned.EmptyObjectKind } diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/types.go b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/types.go new file mode 100644 index 0000000000..f73cb68db1 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/versioned/types.go @@ -0,0 +1,38 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package versioned contains the versioned types for watch. This is the first +// serialization version unless otherwise noted. +package versioned + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Event represents a single event to a watched resource. +// +// +protobuf=true +// +k8s:openapi-gen=true +type Event struct { + Type string `json:"type" protobuf:"bytes,1,opt,name=type"` + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context. + Object runtime.RawExtension `json:"object" protobuf:"bytes,2,opt,name=object"` +} diff --git a/vendor/k8s.io/client-go/1.5/pkg/watch/watch.go b/vendor/k8s.io/client-go/1.5/pkg/watch/watch.go new file mode 100644 index 0000000000..861932af30 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/pkg/watch/watch.go @@ -0,0 +1,152 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package watch + +import ( + "sync" + + "k8s.io/client-go/1.5/pkg/runtime" + + "github.com/golang/glog" +) + +// Interface can be implemented by anything that knows how to watch and report changes. +type Interface interface { + // Stops watching. Will close the channel returned by ResultChan(). Releases + // any resources used by the watch. + Stop() + + // Returns a chan which will receive all the events. If an error occurs + // or Stop() is called, this channel will be closed, in which case the + // watch should be completely cleaned up. + ResultChan() <-chan Event +} + +// EventType defines the possible types of events. +type EventType string + +const ( + Added EventType = "ADDED" + Modified EventType = "MODIFIED" + Deleted EventType = "DELETED" + Error EventType = "ERROR" +) + +// Event represents a single event to a watched resource. +type Event struct { + Type EventType + + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context. + Object runtime.Object +} + +type emptyWatch chan Event + +// NewEmptyWatch returns a watch interface that returns no results and is closed. +// May be used in certain error conditions where no information is available but +// an error is not warranted. +func NewEmptyWatch() Interface { + ch := make(chan Event) + close(ch) + return emptyWatch(ch) +} + +// Stop implements Interface +func (w emptyWatch) Stop() { +} + +// ResultChan implements Interface +func (w emptyWatch) ResultChan() <-chan Event { + return chan Event(w) +} + +// FakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. +type FakeWatcher struct { + result chan Event + Stopped bool + sync.Mutex +} + +func NewFake() *FakeWatcher { + return &FakeWatcher{ + result: make(chan Event), + } +} + +func NewFakeWithChanSize(size int) *FakeWatcher { + return &FakeWatcher{ + result: make(chan Event, size), + } +} + +// Stop implements Interface.Stop(). +func (f *FakeWatcher) Stop() { + f.Lock() + defer f.Unlock() + if !f.Stopped { + glog.V(4).Infof("Stopping fake watcher.") + close(f.result) + f.Stopped = true + } +} + +func (f *FakeWatcher) IsStopped() bool { + f.Lock() + defer f.Unlock() + return f.Stopped +} + +// Reset prepares the watcher to be reused. +func (f *FakeWatcher) Reset() { + f.Lock() + defer f.Unlock() + f.Stopped = false + f.result = make(chan Event) +} + +func (f *FakeWatcher) ResultChan() <-chan Event { + return f.result +} + +// Add sends an add event. +func (f *FakeWatcher) Add(obj runtime.Object) { + f.result <- Event{Added, obj} +} + +// Modify sends a modify event. +func (f *FakeWatcher) Modify(obj runtime.Object) { + f.result <- Event{Modified, obj} +} + +// Delete sends a delete event. +func (f *FakeWatcher) Delete(lastValue runtime.Object) { + f.result <- Event{Deleted, lastValue} +} + +// Error sends an Error event. +func (f *FakeWatcher) Error(errValue runtime.Object) { + f.result <- Event{Error, errValue} +} + +// Action sends an event of the requested type, for table-based testing. +func (f *FakeWatcher) Action(action EventType, obj runtime.Object) { + f.result <- Event{action, obj} +} diff --git a/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/gcp/gcp.go b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/gcp/gcp.go new file mode 100644 index 0000000000..bbc0f0b8b0 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/gcp/gcp.go @@ -0,0 +1,105 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package gcp + +import ( + "net/http" + "time" + + "github.com/golang/glog" + "golang.org/x/net/context" + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" + "k8s.io/client-go/1.5/rest" +) + +func init() { + if err := rest.RegisterAuthProviderPlugin("gcp", newGCPAuthProvider); err != nil { + glog.Fatalf("Failed to register gcp auth plugin: %v", err) + } +} + +type gcpAuthProvider struct { + tokenSource oauth2.TokenSource + persister rest.AuthProviderConfigPersister +} + +func newGCPAuthProvider(_ string, gcpConfig map[string]string, persister rest.AuthProviderConfigPersister) (rest.AuthProvider, error) { + ts, err := newCachedTokenSource(gcpConfig["access-token"], gcpConfig["expiry"], persister) + if err != nil { + return nil, err + } + return &gcpAuthProvider{ts, persister}, nil +} + +func (g *gcpAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper { + return &oauth2.Transport{ + Source: g.tokenSource, + Base: rt, + } +} + +func (g *gcpAuthProvider) Login() error { return nil } + +type cachedTokenSource struct { + source oauth2.TokenSource + accessToken string + expiry time.Time + persister rest.AuthProviderConfigPersister +} + +func newCachedTokenSource(accessToken, expiry string, persister rest.AuthProviderConfigPersister) (*cachedTokenSource, error) { + var expiryTime time.Time + if parsedTime, err := time.Parse(time.RFC3339Nano, expiry); err == nil { + expiryTime = parsedTime + } + ts, err := google.DefaultTokenSource(context.Background(), "https://www.googleapis.com/auth/cloud-platform") + if err != nil { + return nil, err + } + return &cachedTokenSource{ + source: ts, + accessToken: accessToken, + expiry: expiryTime, + persister: persister, + }, nil +} + +func (t *cachedTokenSource) Token() (*oauth2.Token, error) { + tok := &oauth2.Token{ + AccessToken: t.accessToken, + TokenType: "Bearer", + Expiry: t.expiry, + } + if tok.Valid() && !tok.Expiry.IsZero() { + return tok, nil + } + tok, err := t.source.Token() + if err != nil { + return nil, err + } + if t.persister != nil { + cached := map[string]string{ + "access-token": tok.AccessToken, + "expiry": tok.Expiry.Format(time.RFC3339Nano), + } + if err := t.persister.Persist(cached); err != nil { + glog.V(4).Infof("Failed to persist token: %v", err) + } + } + return tok, nil +} diff --git a/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/OWNERS b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/OWNERS new file mode 100644 index 0000000000..2f80bc7e10 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/OWNERS @@ -0,0 +1,2 @@ +assignees: + - ericchiang diff --git a/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/oidc.go b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/oidc.go new file mode 100644 index 0000000000..b397fa1626 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc/oidc.go @@ -0,0 +1,270 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package oidc + +import ( + "encoding/base64" + "errors" + "fmt" + "net/http" + "strings" + "time" + + "github.com/coreos/go-oidc/jose" + "github.com/coreos/go-oidc/oauth2" + "github.com/coreos/go-oidc/oidc" + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/util/wait" + "k8s.io/client-go/1.5/rest" +) + +const ( + cfgIssuerUrl = "idp-issuer-url" + cfgClientID = "client-id" + cfgClientSecret = "client-secret" + cfgCertificateAuthority = "idp-certificate-authority" + cfgCertificateAuthorityData = "idp-certificate-authority-data" + cfgExtraScopes = "extra-scopes" + cfgIDToken = "id-token" + cfgRefreshToken = "refresh-token" +) + +var ( + backoff = wait.Backoff{ + Duration: 1 * time.Second, + Factor: 2, + Jitter: .1, + Steps: 5, + } +) + +func init() { + if err := rest.RegisterAuthProviderPlugin("oidc", newOIDCAuthProvider); err != nil { + glog.Fatalf("Failed to register oidc auth plugin: %v", err) + } +} + +func newOIDCAuthProvider(_ string, cfg map[string]string, persister rest.AuthProviderConfigPersister) (rest.AuthProvider, error) { + issuer := cfg[cfgIssuerUrl] + if issuer == "" { + return nil, fmt.Errorf("Must provide %s", cfgIssuerUrl) + } + + clientID := cfg[cfgClientID] + if clientID == "" { + return nil, fmt.Errorf("Must provide %s", cfgClientID) + } + + clientSecret := cfg[cfgClientSecret] + if clientSecret == "" { + return nil, fmt.Errorf("Must provide %s", cfgClientSecret) + } + + var certAuthData []byte + var err error + if cfg[cfgCertificateAuthorityData] != "" { + certAuthData, err = base64.StdEncoding.DecodeString(cfg[cfgCertificateAuthorityData]) + if err != nil { + return nil, err + } + } + + clientConfig := rest.Config{ + TLSClientConfig: rest.TLSClientConfig{ + CAFile: cfg[cfgCertificateAuthority], + CAData: certAuthData, + }, + } + + trans, err := rest.TransportFor(&clientConfig) + if err != nil { + return nil, err + } + hc := &http.Client{Transport: trans} + + providerCfg, err := oidc.FetchProviderConfig(hc, issuer) + if err != nil { + return nil, fmt.Errorf("error fetching provider config: %v", err) + } + + scopes := strings.Split(cfg[cfgExtraScopes], ",") + oidcCfg := oidc.ClientConfig{ + HTTPClient: hc, + Credentials: oidc.ClientCredentials{ + ID: clientID, + Secret: clientSecret, + }, + ProviderConfig: providerCfg, + Scope: append(scopes, oidc.DefaultScope...), + } + + client, err := oidc.NewClient(oidcCfg) + if err != nil { + return nil, fmt.Errorf("error creating OIDC Client: %v", err) + } + + oClient := &oidcClient{client} + + var initialIDToken jose.JWT + if cfg[cfgIDToken] != "" { + initialIDToken, err = jose.ParseJWT(cfg[cfgIDToken]) + if err != nil { + return nil, err + } + } + + return &oidcAuthProvider{ + initialIDToken: initialIDToken, + refresher: &idTokenRefresher{ + client: oClient, + cfg: cfg, + persister: persister, + }, + }, nil +} + +type oidcAuthProvider struct { + refresher *idTokenRefresher + initialIDToken jose.JWT +} + +func (g *oidcAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper { + at := &oidc.AuthenticatedTransport{ + TokenRefresher: g.refresher, + RoundTripper: rt, + } + at.SetJWT(g.initialIDToken) + return &roundTripper{ + wrapped: at, + refresher: g.refresher, + } +} + +func (g *oidcAuthProvider) Login() error { + return errors.New("not yet implemented") +} + +type OIDCClient interface { + refreshToken(rt string) (oauth2.TokenResponse, error) + verifyJWT(jwt jose.JWT) error +} + +type roundTripper struct { + refresher *idTokenRefresher + wrapped *oidc.AuthenticatedTransport +} + +func (r *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + var res *http.Response + var err error + firstTime := true + wait.ExponentialBackoff(backoff, func() (bool, error) { + if !firstTime { + var jwt jose.JWT + jwt, err = r.refresher.Refresh() + if err != nil { + return true, nil + } + r.wrapped.SetJWT(jwt) + } else { + firstTime = false + } + + res, err = r.wrapped.RoundTrip(req) + if err != nil { + return true, nil + } + if res.StatusCode == http.StatusUnauthorized { + return false, nil + } + return true, nil + }) + return res, err +} + +type idTokenRefresher struct { + cfg map[string]string + client OIDCClient + persister rest.AuthProviderConfigPersister + intialIDToken jose.JWT +} + +func (r *idTokenRefresher) Verify(jwt jose.JWT) error { + claims, err := jwt.Claims() + if err != nil { + return err + } + + now := time.Now() + exp, ok, err := claims.TimeClaim("exp") + switch { + case err != nil: + return fmt.Errorf("failed to parse 'exp' claim: %v", err) + case !ok: + return errors.New("missing required 'exp' claim") + case exp.Before(now): + return fmt.Errorf("token already expired at: %v", exp) + } + + return nil +} + +func (r *idTokenRefresher) Refresh() (jose.JWT, error) { + rt, ok := r.cfg[cfgRefreshToken] + if !ok { + return jose.JWT{}, errors.New("No valid id-token, and cannot refresh without refresh-token") + } + + tokens, err := r.client.refreshToken(rt) + if err != nil { + return jose.JWT{}, fmt.Errorf("could not refresh token: %v", err) + } + jwt, err := jose.ParseJWT(tokens.IDToken) + if err != nil { + return jose.JWT{}, err + } + + if tokens.RefreshToken != "" && tokens.RefreshToken != rt { + r.cfg[cfgRefreshToken] = tokens.RefreshToken + } + r.cfg[cfgIDToken] = jwt.Encode() + + err = r.persister.Persist(r.cfg) + if err != nil { + return jose.JWT{}, fmt.Errorf("could not perist new tokens: %v", err) + } + + return jwt, r.client.verifyJWT(jwt) +} + +type oidcClient struct { + client *oidc.Client +} + +func (o *oidcClient) refreshToken(rt string) (oauth2.TokenResponse, error) { + oac, err := o.client.OAuthClient() + if err != nil { + return oauth2.TokenResponse{}, err + } + + return oac.RequestToken(oauth2.GrantTypeRefreshToken, rt) +} + +func (o *oidcClient) verifyJWT(jwt jose.JWT) error { + return o.client.VerifyJWT(jwt) +} diff --git a/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/plugins.go b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/plugins.go new file mode 100644 index 0000000000..4be6cc515e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/plugin/pkg/client/auth/plugins.go @@ -0,0 +1,23 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package auth + +import ( + // Initialize all known client auth plugins. + _ "k8s.io/client-go/1.5/plugin/pkg/client/auth/gcp" + _ "k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc" +) diff --git a/vendor/k8s.io/client-go/1.5/rest/client.go b/vendor/k8s.io/client-go/1.5/rest/client.go new file mode 100644 index 0000000000..c1fdf1f09a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/client.go @@ -0,0 +1,224 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/http" + "net/url" + "os" + "strconv" + "strings" + "time" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/util/flowcontrol" +) + +const ( + // Environment variables: Note that the duration should be long enough that the backoff + // persists for some reasonable time (i.e. 120 seconds). The typical base might be "1". + envBackoffBase = "KUBE_CLIENT_BACKOFF_BASE" + envBackoffDuration = "KUBE_CLIENT_BACKOFF_DURATION" +) + +// RESTClient imposes common Kubernetes API conventions on a set of resource paths. +// The baseURL is expected to point to an HTTP or HTTPS path that is the parent +// of one or more resources. The server should return a decodable API resource +// object, or an api.Status object which contains information about the reason for +// any failure. +// +// Most consumers should use client.New() to get a Kubernetes API client. +type RESTClient struct { + // base is the root URL for all invocations of the client + base *url.URL + // versionedAPIPath is a path segment connecting the base URL to the resource root + versionedAPIPath string + + // contentConfig is the information used to communicate with the server. + contentConfig ContentConfig + + // serializers contain all serializers for underlying content type. + serializers Serializers + + // creates BackoffManager that is passed to requests. + createBackoffMgr func() BackoffManager + + // TODO extract this into a wrapper interface via the RESTClient interface in kubectl. + Throttle flowcontrol.RateLimiter + + // Set specific behavior of the client. If not set http.DefaultClient will be used. + Client *http.Client +} + +type Serializers struct { + Encoder runtime.Encoder + Decoder runtime.Decoder + StreamingSerializer runtime.Serializer + Framer runtime.Framer + RenegotiatedDecoder func(contentType string, params map[string]string) (runtime.Decoder, error) +} + +// NewRESTClient creates a new RESTClient. This client performs generic REST functions +// such as Get, Put, Post, and Delete on specified paths. Codec controls encoding and +// decoding of responses from the server. +func NewRESTClient(baseURL *url.URL, versionedAPIPath string, config ContentConfig, maxQPS float32, maxBurst int, rateLimiter flowcontrol.RateLimiter, client *http.Client) (*RESTClient, error) { + base := *baseURL + if !strings.HasSuffix(base.Path, "/") { + base.Path += "/" + } + base.RawQuery = "" + base.Fragment = "" + + if config.GroupVersion == nil { + config.GroupVersion = &unversioned.GroupVersion{} + } + if len(config.ContentType) == 0 { + config.ContentType = "application/json" + } + serializers, err := createSerializers(config) + if err != nil { + return nil, err + } + + var throttle flowcontrol.RateLimiter + if maxQPS > 0 && rateLimiter == nil { + throttle = flowcontrol.NewTokenBucketRateLimiter(maxQPS, maxBurst) + } else if rateLimiter != nil { + throttle = rateLimiter + } + return &RESTClient{ + base: &base, + versionedAPIPath: versionedAPIPath, + contentConfig: config, + serializers: *serializers, + createBackoffMgr: readExpBackoffConfig, + Throttle: throttle, + Client: client, + }, nil +} + +// GetRateLimiter returns rate limier for a given client, or nil if it's called on a nil client +func (c *RESTClient) GetRateLimiter() flowcontrol.RateLimiter { + if c == nil { + return nil + } + return c.Throttle +} + +// readExpBackoffConfig handles the internal logic of determining what the +// backoff policy is. By default if no information is available, NoBackoff. +// TODO Generalize this see #17727 . +func readExpBackoffConfig() BackoffManager { + backoffBase := os.Getenv(envBackoffBase) + backoffDuration := os.Getenv(envBackoffDuration) + + backoffBaseInt, errBase := strconv.ParseInt(backoffBase, 10, 64) + backoffDurationInt, errDuration := strconv.ParseInt(backoffDuration, 10, 64) + if errBase != nil || errDuration != nil { + return &NoBackoff{} + } + return &URLBackoff{ + Backoff: flowcontrol.NewBackOff( + time.Duration(backoffBaseInt)*time.Second, + time.Duration(backoffDurationInt)*time.Second)} +} + +// createSerializers creates all necessary serializers for given contentType. +func createSerializers(config ContentConfig) (*Serializers, error) { + negotiated := config.NegotiatedSerializer + contentType := config.ContentType + info, ok := negotiated.SerializerForMediaType(contentType, nil) + if !ok { + return nil, fmt.Errorf("serializer for %s not registered", contentType) + } + streamInfo, ok := negotiated.StreamingSerializerForMediaType(contentType, nil) + if !ok { + return nil, fmt.Errorf("streaming serializer for %s not registered", contentType) + } + internalGV := unversioned.GroupVersion{ + Group: config.GroupVersion.Group, + Version: runtime.APIVersionInternal, + } + return &Serializers{ + Encoder: negotiated.EncoderForVersion(info.Serializer, *config.GroupVersion), + Decoder: negotiated.DecoderToVersion(info.Serializer, internalGV), + StreamingSerializer: streamInfo.Serializer, + Framer: streamInfo.Framer, + RenegotiatedDecoder: func(contentType string, params map[string]string) (runtime.Decoder, error) { + renegotiated, ok := negotiated.SerializerForMediaType(contentType, params) + if !ok { + return nil, fmt.Errorf("serializer for %s not registered", contentType) + } + return negotiated.DecoderToVersion(renegotiated.Serializer, internalGV), nil + }, + }, nil +} + +// Verb begins a request with a verb (GET, POST, PUT, DELETE). +// +// Example usage of RESTClient's request building interface: +// c, err := NewRESTClient(...) +// if err != nil { ... } +// resp, err := c.Verb("GET"). +// Path("pods"). +// SelectorParam("labels", "area=staging"). +// Timeout(10*time.Second). +// Do() +// if err != nil { ... } +// list, ok := resp.(*api.PodList) +// +func (c *RESTClient) Verb(verb string) *Request { + backoff := c.createBackoffMgr() + + if c.Client == nil { + return NewRequest(nil, verb, c.base, c.versionedAPIPath, c.contentConfig, c.serializers, backoff, c.Throttle) + } + return NewRequest(c.Client, verb, c.base, c.versionedAPIPath, c.contentConfig, c.serializers, backoff, c.Throttle) +} + +// Post begins a POST request. Short for c.Verb("POST"). +func (c *RESTClient) Post() *Request { + return c.Verb("POST") +} + +// Put begins a PUT request. Short for c.Verb("PUT"). +func (c *RESTClient) Put() *Request { + return c.Verb("PUT") +} + +// Patch begins a PATCH request. Short for c.Verb("Patch"). +func (c *RESTClient) Patch(pt api.PatchType) *Request { + return c.Verb("PATCH").SetHeader("Content-Type", string(pt)) +} + +// Get begins a GET request. Short for c.Verb("GET"). +func (c *RESTClient) Get() *Request { + return c.Verb("GET") +} + +// Delete begins a DELETE request. Short for c.Verb("DELETE"). +func (c *RESTClient) Delete() *Request { + return c.Verb("DELETE") +} + +// APIVersion returns the APIVersion this RESTClient is expected to use. +func (c *RESTClient) APIVersion() unversioned.GroupVersion { + return *c.contentConfig.GroupVersion +} diff --git a/vendor/k8s.io/client-go/1.5/rest/config.go b/vendor/k8s.io/client-go/1.5/rest/config.go new file mode 100644 index 0000000000..5c5e1e0381 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/config.go @@ -0,0 +1,335 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "io/ioutil" + "net" + "net/http" + "os" + "path" + gruntime "runtime" + "strings" + + "github.com/golang/glog" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" + certutil "k8s.io/client-go/1.5/pkg/util/cert" + "k8s.io/client-go/1.5/pkg/util/flowcontrol" + "k8s.io/client-go/1.5/pkg/version" + clientcmdapi "k8s.io/client-go/1.5/tools/clientcmd/api" +) + +const ( + DefaultQPS float32 = 5.0 + DefaultBurst int = 10 +) + +// Config holds the common attributes that can be passed to a Kubernetes client on +// initialization. +type Config struct { + // Host must be a host string, a host:port pair, or a URL to the base of the apiserver. + // If a URL is given then the (optional) Path of that URL represents a prefix that must + // be appended to all request URIs used to access the apiserver. This allows a frontend + // proxy to easily relocate all of the apiserver endpoints. + Host string + // APIPath is a sub-path that points to an API root. + APIPath string + // Prefix is the sub path of the server. If not specified, the client will set + // a default value. Use "/" to indicate the server root should be used + Prefix string + + // ContentConfig contains settings that affect how objects are transformed when + // sent to the server. + ContentConfig + + // Server requires Basic authentication + Username string + Password string + + // Server requires Bearer authentication. This client will not attempt to use + // refresh tokens for an OAuth2 flow. + // TODO: demonstrate an OAuth2 compatible client. + BearerToken string + + // Impersonate is the username that this RESTClient will impersonate + Impersonate string + + // Server requires plugin-specified authentication. + AuthProvider *clientcmdapi.AuthProviderConfig + + // Callback to persist config for AuthProvider. + AuthConfigPersister AuthProviderConfigPersister + + // TLSClientConfig contains settings to enable transport layer security + TLSClientConfig + + // Server should be accessed without verifying the TLS + // certificate. For testing only. + Insecure bool + + // UserAgent is an optional field that specifies the caller of this request. + UserAgent string + + // Transport may be used for custom HTTP behavior. This attribute may not + // be specified with the TLS client certificate options. Use WrapTransport + // for most client level operations. + Transport http.RoundTripper + // WrapTransport will be invoked for custom HTTP behavior after the underlying + // transport is initialized (either the transport created from TLSClientConfig, + // Transport, or http.DefaultTransport). The config may layer other RoundTrippers + // on top of the returned RoundTripper. + WrapTransport func(rt http.RoundTripper) http.RoundTripper + + // QPS indicates the maximum QPS to the master from this client. + // If it's zero, the created RESTClient will use DefaultQPS: 5 + QPS float32 + + // Maximum burst for throttle. + // If it's zero, the created RESTClient will use DefaultBurst: 10. + Burst int + + // Rate limiter for limiting connections to the master from this client. If present overwrites QPS/Burst + RateLimiter flowcontrol.RateLimiter + + // Version forces a specific version to be used (if registered) + // Do we need this? + // Version string +} + +// TLSClientConfig contains settings to enable transport layer security +type TLSClientConfig struct { + // Server requires TLS client certificate authentication + CertFile string + // Server requires TLS client certificate authentication + KeyFile string + // Trusted root certificates for server + CAFile string + + // CertData holds PEM-encoded bytes (typically read from a client certificate file). + // CertData takes precedence over CertFile + CertData []byte + // KeyData holds PEM-encoded bytes (typically read from a client certificate key file). + // KeyData takes precedence over KeyFile + KeyData []byte + // CAData holds PEM-encoded bytes (typically read from a root certificates bundle). + // CAData takes precedence over CAFile + CAData []byte +} + +type ContentConfig struct { + // AcceptContentTypes specifies the types the client will accept and is optional. + // If not set, ContentType will be used to define the Accept header + AcceptContentTypes string + // ContentType specifies the wire format used to communicate with the server. + // This value will be set as the Accept header on requests made to the server, and + // as the default content type on any object sent to the server. If not set, + // "application/json" is used. + ContentType string + // GroupVersion is the API version to talk to. Must be provided when initializing + // a RESTClient directly. When initializing a Client, will be set with the default + // code version. + GroupVersion *unversioned.GroupVersion + // NegotiatedSerializer is used for obtaining encoders and decoders for multiple + // supported media types. + NegotiatedSerializer runtime.NegotiatedSerializer +} + +// RESTClientFor returns a RESTClient that satisfies the requested attributes on a client Config +// object. Note that a RESTClient may require fields that are optional when initializing a Client. +// A RESTClient created by this method is generic - it expects to operate on an API that follows +// the Kubernetes conventions, but may not be the Kubernetes API. +func RESTClientFor(config *Config) (*RESTClient, error) { + if config.GroupVersion == nil { + return nil, fmt.Errorf("GroupVersion is required when initializing a RESTClient") + } + if config.NegotiatedSerializer == nil { + return nil, fmt.Errorf("NegotiatedSerializer is required when initializing a RESTClient") + } + qps := config.QPS + if config.QPS == 0.0 { + qps = DefaultQPS + } + burst := config.Burst + if config.Burst == 0 { + burst = DefaultBurst + } + + baseURL, versionedAPIPath, err := defaultServerUrlFor(config) + if err != nil { + return nil, err + } + + transport, err := TransportFor(config) + if err != nil { + return nil, err + } + + var httpClient *http.Client + if transport != http.DefaultTransport { + httpClient = &http.Client{Transport: transport} + } + + return NewRESTClient(baseURL, versionedAPIPath, config.ContentConfig, qps, burst, config.RateLimiter, httpClient) +} + +// UnversionedRESTClientFor is the same as RESTClientFor, except that it allows +// the config.Version to be empty. +func UnversionedRESTClientFor(config *Config) (*RESTClient, error) { + if config.NegotiatedSerializer == nil { + return nil, fmt.Errorf("NeogitatedSerializer is required when initializing a RESTClient") + } + + baseURL, versionedAPIPath, err := defaultServerUrlFor(config) + if err != nil { + return nil, err + } + + transport, err := TransportFor(config) + if err != nil { + return nil, err + } + + var httpClient *http.Client + if transport != http.DefaultTransport { + httpClient = &http.Client{Transport: transport} + } + + versionConfig := config.ContentConfig + if versionConfig.GroupVersion == nil { + v := unversioned.SchemeGroupVersion + versionConfig.GroupVersion = &v + } + + return NewRESTClient(baseURL, versionedAPIPath, versionConfig, config.QPS, config.Burst, config.RateLimiter, httpClient) +} + +// SetKubernetesDefaults sets default values on the provided client config for accessing the +// Kubernetes API or returns an error if any of the defaults are impossible or invalid. +func SetKubernetesDefaults(config *Config) error { + if len(config.UserAgent) == 0 { + config.UserAgent = DefaultKubernetesUserAgent() + } + return nil +} + +// DefaultKubernetesUserAgent returns the default user agent that clients can use. +func DefaultKubernetesUserAgent() string { + commit := version.Get().GitCommit + if len(commit) > 7 { + commit = commit[:7] + } + if len(commit) == 0 { + commit = "unknown" + } + version := version.Get().GitVersion + seg := strings.SplitN(version, "-", 2) + version = seg[0] + return fmt.Sprintf("%s/%s (%s/%s) kubernetes/%s", path.Base(os.Args[0]), version, gruntime.GOOS, gruntime.GOARCH, commit) +} + +// InClusterConfig returns a config object which uses the service account +// kubernetes gives to pods. It's intended for clients that expect to be +// running inside a pod running on kubernetes. It will return an error if +// called from a process not running in a kubernetes environment. +func InClusterConfig() (*Config, error) { + host, port := os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT") + if len(host) == 0 || len(port) == 0 { + return nil, fmt.Errorf("unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined") + } + + token, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountTokenKey) + if err != nil { + return nil, err + } + tlsClientConfig := TLSClientConfig{} + rootCAFile := "/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountRootCAKey + if _, err := certutil.NewPool(rootCAFile); err != nil { + glog.Errorf("Expected to load root CA config from %s, but got err: %v", rootCAFile, err) + } else { + tlsClientConfig.CAFile = rootCAFile + } + + return &Config{ + // TODO: switch to using cluster DNS. + Host: "https://" + net.JoinHostPort(host, port), + BearerToken: string(token), + TLSClientConfig: tlsClientConfig, + }, nil +} + +// IsConfigTransportTLS returns true if and only if the provided +// config will result in a protected connection to the server when it +// is passed to restclient.RESTClientFor(). Use to determine when to +// send credentials over the wire. +// +// Note: the Insecure flag is ignored when testing for this value, so MITM attacks are +// still possible. +func IsConfigTransportTLS(config Config) bool { + baseURL, _, err := defaultServerUrlFor(&config) + if err != nil { + return false + } + return baseURL.Scheme == "https" +} + +// LoadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData, +// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are +// either populated or were empty to start. +func LoadTLSFiles(c *Config) error { + var err error + c.CAData, err = dataFromSliceOrFile(c.CAData, c.CAFile) + if err != nil { + return err + } + + c.CertData, err = dataFromSliceOrFile(c.CertData, c.CertFile) + if err != nil { + return err + } + + c.KeyData, err = dataFromSliceOrFile(c.KeyData, c.KeyFile) + if err != nil { + return err + } + return nil +} + +// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file, +// or an error if an error occurred reading the file +func dataFromSliceOrFile(data []byte, file string) ([]byte, error) { + if len(data) > 0 { + return data, nil + } + if len(file) > 0 { + fileData, err := ioutil.ReadFile(file) + if err != nil { + return []byte{}, err + } + return fileData, nil + } + return nil, nil +} + +func AddUserAgent(config *Config, userAgent string) *Config { + fullUserAgent := DefaultKubernetesUserAgent() + "/" + userAgent + config.UserAgent = fullUserAgent + return config +} diff --git a/vendor/k8s.io/client-go/1.5/rest/plugin.go b/vendor/k8s.io/client-go/1.5/rest/plugin.go new file mode 100644 index 0000000000..9f1ce9973f --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/plugin.go @@ -0,0 +1,73 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/http" + "sync" + + "github.com/golang/glog" + + clientcmdapi "k8s.io/client-go/1.5/tools/clientcmd/api" +) + +type AuthProvider interface { + // WrapTransport allows the plugin to create a modified RoundTripper that + // attaches authorization headers (or other info) to requests. + WrapTransport(http.RoundTripper) http.RoundTripper + // Login allows the plugin to initialize its configuration. It must not + // require direct user interaction. + Login() error +} + +// Factory generates an AuthProvider plugin. +// clusterAddress is the address of the current cluster. +// config is the initial configuration for this plugin. +// persister allows the plugin to save updated configuration. +type Factory func(clusterAddress string, config map[string]string, persister AuthProviderConfigPersister) (AuthProvider, error) + +// AuthProviderConfigPersister allows a plugin to persist configuration info +// for just itself. +type AuthProviderConfigPersister interface { + Persist(map[string]string) error +} + +// All registered auth provider plugins. +var pluginsLock sync.Mutex +var plugins = make(map[string]Factory) + +func RegisterAuthProviderPlugin(name string, plugin Factory) error { + pluginsLock.Lock() + defer pluginsLock.Unlock() + if _, found := plugins[name]; found { + return fmt.Errorf("Auth Provider Plugin %q was registered twice", name) + } + glog.V(4).Infof("Registered Auth Provider Plugin %q", name) + plugins[name] = plugin + return nil +} + +func GetAuthProvider(clusterAddress string, apc *clientcmdapi.AuthProviderConfig, persister AuthProviderConfigPersister) (AuthProvider, error) { + pluginsLock.Lock() + defer pluginsLock.Unlock() + p, ok := plugins[apc.Name] + if !ok { + return nil, fmt.Errorf("No Auth Provider found for name %q", apc.Name) + } + return p(clusterAddress, apc.Config, persister) +} diff --git a/vendor/k8s.io/client-go/1.5/rest/request.go b/vendor/k8s.io/client-go/1.5/rest/request.go new file mode 100644 index 0000000000..4e57a0cc27 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/request.go @@ -0,0 +1,1099 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "bytes" + "encoding/hex" + "fmt" + "io" + "io/ioutil" + "mime" + "net/http" + "net/url" + "path" + "reflect" + "strconv" + "strings" + "time" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/api/v1" + pathvalidation "k8s.io/client-go/1.5/pkg/api/validation/path" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/labels" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/runtime/serializer/streaming" + "k8s.io/client-go/1.5/pkg/util/flowcontrol" + "k8s.io/client-go/1.5/pkg/util/net" + "k8s.io/client-go/1.5/pkg/util/sets" + "k8s.io/client-go/1.5/pkg/watch" + "k8s.io/client-go/1.5/pkg/watch/versioned" + "k8s.io/client-go/1.5/tools/metrics" +) + +var ( + // specialParams lists parameters that are handled specially and which users of Request + // are therefore not allowed to set manually. + specialParams = sets.NewString("timeout") + + // longThrottleLatency defines threshold for logging requests. All requests being + // throttle for more than longThrottleLatency will be logged. + longThrottleLatency = 50 * time.Millisecond +) + +// HTTPClient is an interface for testing a request object. +type HTTPClient interface { + Do(req *http.Request) (*http.Response, error) +} + +// ResponseWrapper is an interface for getting a response. +// The response may be either accessed as a raw data (the whole output is put into memory) or as a stream. +type ResponseWrapper interface { + DoRaw() ([]byte, error) + Stream() (io.ReadCloser, error) +} + +// RequestConstructionError is returned when there's an error assembling a request. +type RequestConstructionError struct { + Err error +} + +// Error returns a textual description of 'r'. +func (r *RequestConstructionError) Error() string { + return fmt.Sprintf("request construction error: '%v'", r.Err) +} + +// Request allows for building up a request to a server in a chained fashion. +// Any errors are stored until the end of your call, so you only have to +// check once. +type Request struct { + // required + client HTTPClient + verb string + + baseURL *url.URL + content ContentConfig + serializers Serializers + + // generic components accessible via method setters + pathPrefix string + subpath string + params url.Values + headers http.Header + + // structural elements of the request that are part of the Kubernetes API conventions + namespace string + namespaceSet bool + resource string + resourceName string + subresource string + selector labels.Selector + timeout time.Duration + + // output + err error + body io.Reader + + // The constructed request and the response + req *http.Request + resp *http.Response + + backoffMgr BackoffManager + throttle flowcontrol.RateLimiter +} + +// NewRequest creates a new request helper object for accessing runtime.Objects on a server. +func NewRequest(client HTTPClient, verb string, baseURL *url.URL, versionedAPIPath string, content ContentConfig, serializers Serializers, backoff BackoffManager, throttle flowcontrol.RateLimiter) *Request { + if backoff == nil { + glog.V(2).Infof("Not implementing request backoff strategy.") + backoff = &NoBackoff{} + } + + pathPrefix := "/" + if baseURL != nil { + pathPrefix = path.Join(pathPrefix, baseURL.Path) + } + r := &Request{ + client: client, + verb: verb, + baseURL: baseURL, + pathPrefix: path.Join(pathPrefix, versionedAPIPath), + content: content, + serializers: serializers, + backoffMgr: backoff, + throttle: throttle, + } + switch { + case len(content.AcceptContentTypes) > 0: + r.SetHeader("Accept", content.AcceptContentTypes) + case len(content.ContentType) > 0: + r.SetHeader("Accept", content.ContentType+", */*") + } + return r +} + +// Prefix adds segments to the relative beginning to the request path. These +// items will be placed before the optional Namespace, Resource, or Name sections. +// Setting AbsPath will clear any previously set Prefix segments +func (r *Request) Prefix(segments ...string) *Request { + if r.err != nil { + return r + } + r.pathPrefix = path.Join(r.pathPrefix, path.Join(segments...)) + return r +} + +// Suffix appends segments to the end of the path. These items will be placed after the prefix and optional +// Namespace, Resource, or Name sections. +func (r *Request) Suffix(segments ...string) *Request { + if r.err != nil { + return r + } + r.subpath = path.Join(r.subpath, path.Join(segments...)) + return r +} + +// Resource sets the resource to access (<resource>/[ns/<namespace>/]<name>) +func (r *Request) Resource(resource string) *Request { + if r.err != nil { + return r + } + if len(r.resource) != 0 { + r.err = fmt.Errorf("resource already set to %q, cannot change to %q", r.resource, resource) + return r + } + if msgs := pathvalidation.IsValidPathSegmentName(resource); len(msgs) != 0 { + r.err = fmt.Errorf("invalid resource %q: %v", resource, msgs) + return r + } + r.resource = resource + return r +} + +// SubResource sets a sub-resource path which can be multiple segments segment after the resource +// name but before the suffix. +func (r *Request) SubResource(subresources ...string) *Request { + if r.err != nil { + return r + } + subresource := path.Join(subresources...) + if len(r.subresource) != 0 { + r.err = fmt.Errorf("subresource already set to %q, cannot change to %q", r.resource, subresource) + return r + } + for _, s := range subresources { + if msgs := pathvalidation.IsValidPathSegmentName(s); len(msgs) != 0 { + r.err = fmt.Errorf("invalid subresource %q: %v", s, msgs) + return r + } + } + r.subresource = subresource + return r +} + +// Name sets the name of a resource to access (<resource>/[ns/<namespace>/]<name>) +func (r *Request) Name(resourceName string) *Request { + if r.err != nil { + return r + } + if len(resourceName) == 0 { + r.err = fmt.Errorf("resource name may not be empty") + return r + } + if len(r.resourceName) != 0 { + r.err = fmt.Errorf("resource name already set to %q, cannot change to %q", r.resourceName, resourceName) + return r + } + if msgs := pathvalidation.IsValidPathSegmentName(resourceName); len(msgs) != 0 { + r.err = fmt.Errorf("invalid resource name %q: %v", resourceName, msgs) + return r + } + r.resourceName = resourceName + return r +} + +// Namespace applies the namespace scope to a request (<resource>/[ns/<namespace>/]<name>) +func (r *Request) Namespace(namespace string) *Request { + if r.err != nil { + return r + } + if r.namespaceSet { + r.err = fmt.Errorf("namespace already set to %q, cannot change to %q", r.namespace, namespace) + return r + } + if msgs := pathvalidation.IsValidPathSegmentName(namespace); len(msgs) != 0 { + r.err = fmt.Errorf("invalid namespace %q: %v", namespace, msgs) + return r + } + r.namespaceSet = true + r.namespace = namespace + return r +} + +// NamespaceIfScoped is a convenience function to set a namespace if scoped is true +func (r *Request) NamespaceIfScoped(namespace string, scoped bool) *Request { + if scoped { + return r.Namespace(namespace) + } + return r +} + +// AbsPath overwrites an existing path with the segments provided. Trailing slashes are preserved +// when a single segment is passed. +func (r *Request) AbsPath(segments ...string) *Request { + if r.err != nil { + return r + } + r.pathPrefix = path.Join(r.baseURL.Path, path.Join(segments...)) + if len(segments) == 1 && (len(r.baseURL.Path) > 1 || len(segments[0]) > 1) && strings.HasSuffix(segments[0], "/") { + // preserve any trailing slashes for legacy behavior + r.pathPrefix += "/" + } + return r +} + +// RequestURI overwrites existing path and parameters with the value of the provided server relative +// URI. Some parameters (those in specialParameters) cannot be overwritten. +func (r *Request) RequestURI(uri string) *Request { + if r.err != nil { + return r + } + locator, err := url.Parse(uri) + if err != nil { + r.err = err + return r + } + r.pathPrefix = locator.Path + if len(locator.Query()) > 0 { + if r.params == nil { + r.params = make(url.Values) + } + for k, v := range locator.Query() { + r.params[k] = v + } + } + return r +} + +const ( + // A constant that clients can use to refer in a field selector to the object name field. + // Will be automatically emitted as the correct name for the API version. + nodeUnschedulable = "spec.unschedulable" + objectNameField = "metadata.name" + podHost = "spec.nodeName" + podStatus = "status.phase" + secretType = "type" + + eventReason = "reason" + eventSource = "source" + eventType = "type" + eventInvolvedKind = "involvedObject.kind" + eventInvolvedNamespace = "involvedObject.namespace" + eventInvolvedName = "involvedObject.name" + eventInvolvedUID = "involvedObject.uid" + eventInvolvedAPIVersion = "involvedObject.apiVersion" + eventInvolvedResourceVersion = "involvedObject.resourceVersion" + eventInvolvedFieldPath = "involvedObject.fieldPath" +) + +type clientFieldNameToAPIVersionFieldName map[string]string + +func (c clientFieldNameToAPIVersionFieldName) filterField(field, value string) (newField, newValue string, err error) { + newFieldName, ok := c[field] + if !ok { + return "", "", fmt.Errorf("%v - %v - no field mapping defined", field, value) + } + return newFieldName, value, nil +} + +type resourceTypeToFieldMapping map[string]clientFieldNameToAPIVersionFieldName + +func (r resourceTypeToFieldMapping) filterField(resourceType, field, value string) (newField, newValue string, err error) { + fMapping, ok := r[resourceType] + if !ok { + return "", "", fmt.Errorf("%v - %v - %v - no field mapping defined", resourceType, field, value) + } + return fMapping.filterField(field, value) +} + +type versionToResourceToFieldMapping map[unversioned.GroupVersion]resourceTypeToFieldMapping + +// filterField transforms the given field/value selector for the given groupVersion and resource +func (v versionToResourceToFieldMapping) filterField(groupVersion *unversioned.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) { + rMapping, ok := v[*groupVersion] + if !ok { + // no groupVersion overrides registered, default to identity mapping + return field, value, nil + } + newField, newValue, err = rMapping.filterField(resourceType, field, value) + if err != nil { + // no groupVersionResource overrides registered, default to identity mapping + return field, value, nil + } + return newField, newValue, nil +} + +var fieldMappings = versionToResourceToFieldMapping{ + v1.SchemeGroupVersion: resourceTypeToFieldMapping{ + "nodes": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + nodeUnschedulable: nodeUnschedulable, + }, + "pods": clientFieldNameToAPIVersionFieldName{ + podHost: podHost, + podStatus: podStatus, + }, + "secrets": clientFieldNameToAPIVersionFieldName{ + secretType: secretType, + }, + "serviceAccounts": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + }, + "endpoints": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + }, + "events": clientFieldNameToAPIVersionFieldName{ + objectNameField: objectNameField, + eventReason: eventReason, + eventSource: eventSource, + eventType: eventType, + eventInvolvedKind: eventInvolvedKind, + eventInvolvedNamespace: eventInvolvedNamespace, + eventInvolvedName: eventInvolvedName, + eventInvolvedUID: eventInvolvedUID, + eventInvolvedAPIVersion: eventInvolvedAPIVersion, + eventInvolvedResourceVersion: eventInvolvedResourceVersion, + eventInvolvedFieldPath: eventInvolvedFieldPath, + }, + }, +} + +// FieldsSelectorParam adds the given selector as a query parameter with the name paramName. +func (r *Request) FieldsSelectorParam(s fields.Selector) *Request { + if r.err != nil { + return r + } + if s == nil { + return r + } + if s.Empty() { + return r + } + s2, err := s.Transform(func(field, value string) (newField, newValue string, err error) { + return fieldMappings.filterField(r.content.GroupVersion, r.resource, field, value) + }) + if err != nil { + r.err = err + return r + } + return r.setParam(unversioned.FieldSelectorQueryParam(r.content.GroupVersion.String()), s2.String()) +} + +// LabelsSelectorParam adds the given selector as a query parameter +func (r *Request) LabelsSelectorParam(s labels.Selector) *Request { + if r.err != nil { + return r + } + if s == nil { + return r + } + if s.Empty() { + return r + } + return r.setParam(unversioned.LabelSelectorQueryParam(r.content.GroupVersion.String()), s.String()) +} + +// UintParam creates a query parameter with the given value. +func (r *Request) UintParam(paramName string, u uint64) *Request { + if r.err != nil { + return r + } + return r.setParam(paramName, strconv.FormatUint(u, 10)) +} + +// Param creates a query parameter with the given string value. +func (r *Request) Param(paramName, s string) *Request { + if r.err != nil { + return r + } + return r.setParam(paramName, s) +} + +// VersionedParams will take the provided object, serialize it to a map[string][]string using the +// implicit RESTClient API version and the default parameter codec, and then add those as parameters +// to the request. Use this to provide versioned query parameters from client libraries. +func (r *Request) VersionedParams(obj runtime.Object, codec runtime.ParameterCodec) *Request { + if r.err != nil { + return r + } + params, err := codec.EncodeParameters(obj, *r.content.GroupVersion) + if err != nil { + r.err = err + return r + } + for k, v := range params { + for _, value := range v { + // TODO: Move it to setParam method, once we get rid of + // FieldSelectorParam & LabelSelectorParam methods. + if k == unversioned.LabelSelectorQueryParam(r.content.GroupVersion.String()) && value == "" { + // Don't set an empty selector for backward compatibility. + // Since there is no way to get the difference between empty + // and unspecified string, we don't set it to avoid having + // labelSelector= param in every request. + continue + } + if k == unversioned.FieldSelectorQueryParam(r.content.GroupVersion.String()) { + if len(value) == 0 { + // Don't set an empty selector for backward compatibility. + // Since there is no way to get the difference between empty + // and unspecified string, we don't set it to avoid having + // fieldSelector= param in every request. + continue + } + // TODO: Filtering should be handled somewhere else. + selector, err := fields.ParseSelector(value) + if err != nil { + r.err = fmt.Errorf("unparsable field selector: %v", err) + return r + } + filteredSelector, err := selector.Transform( + func(field, value string) (newField, newValue string, err error) { + return fieldMappings.filterField(r.content.GroupVersion, r.resource, field, value) + }) + if err != nil { + r.err = fmt.Errorf("untransformable field selector: %v", err) + return r + } + value = filteredSelector.String() + } + + r.setParam(k, value) + } + } + return r +} + +func (r *Request) setParam(paramName, value string) *Request { + if specialParams.Has(paramName) { + r.err = fmt.Errorf("must set %v through the corresponding function, not directly.", paramName) + return r + } + if r.params == nil { + r.params = make(url.Values) + } + r.params[paramName] = append(r.params[paramName], value) + return r +} + +func (r *Request) SetHeader(key, value string) *Request { + if r.headers == nil { + r.headers = http.Header{} + } + r.headers.Set(key, value) + return r +} + +// Timeout makes the request use the given duration as a timeout. Sets the "timeout" +// parameter. +func (r *Request) Timeout(d time.Duration) *Request { + if r.err != nil { + return r + } + r.timeout = d + return r +} + +// Body makes the request use obj as the body. Optional. +// If obj is a string, try to read a file of that name. +// If obj is a []byte, send it directly. +// If obj is an io.Reader, use it directly. +// If obj is a runtime.Object, marshal it correctly, and set Content-Type header. +// If obj is a runtime.Object and nil, do nothing. +// Otherwise, set an error. +func (r *Request) Body(obj interface{}) *Request { + if r.err != nil { + return r + } + switch t := obj.(type) { + case string: + data, err := ioutil.ReadFile(t) + if err != nil { + r.err = err + return r + } + glog.V(8).Infof("Request Body: %#v", string(data)) + r.body = bytes.NewReader(data) + case []byte: + glog.V(8).Infof("Request Body: %#v", string(t)) + r.body = bytes.NewReader(t) + case io.Reader: + r.body = t + case runtime.Object: + // callers may pass typed interface pointers, therefore we must check nil with reflection + if reflect.ValueOf(t).IsNil() { + return r + } + data, err := runtime.Encode(r.serializers.Encoder, t) + if err != nil { + r.err = err + return r + } + glog.V(8).Infof("Request Body: %#v", string(data)) + r.body = bytes.NewReader(data) + r.SetHeader("Content-Type", r.content.ContentType) + default: + r.err = fmt.Errorf("unknown type used for body: %+v", obj) + } + return r +} + +// URL returns the current working URL. +func (r *Request) URL() *url.URL { + p := r.pathPrefix + if r.namespaceSet && len(r.namespace) > 0 { + p = path.Join(p, "namespaces", r.namespace) + } + if len(r.resource) != 0 { + p = path.Join(p, strings.ToLower(r.resource)) + } + // Join trims trailing slashes, so preserve r.pathPrefix's trailing slash for backwards compatibility if nothing was changed + if len(r.resourceName) != 0 || len(r.subpath) != 0 || len(r.subresource) != 0 { + p = path.Join(p, r.resourceName, r.subresource, r.subpath) + } + + finalURL := &url.URL{} + if r.baseURL != nil { + *finalURL = *r.baseURL + } + finalURL.Path = p + + query := url.Values{} + for key, values := range r.params { + for _, value := range values { + query.Add(key, value) + } + } + + // timeout is handled specially here. + if r.timeout != 0 { + query.Set("timeout", r.timeout.String()) + } + finalURL.RawQuery = query.Encode() + return finalURL +} + +// finalURLTemplate is similar to URL(), but will make all specific parameter values equal +// - instead of name or namespace, "{name}" and "{namespace}" will be used, and all query +// parameters will be reset. This creates a copy of the request so as not to change the +// underyling object. This means some useful request info (like the types of field +// selectors in use) will be lost. +// TODO: preserve field selector keys +func (r Request) finalURLTemplate() url.URL { + if len(r.resourceName) != 0 { + r.resourceName = "{name}" + } + if r.namespaceSet && len(r.namespace) != 0 { + r.namespace = "{namespace}" + } + newParams := url.Values{} + v := []string{"{value}"} + for k := range r.params { + newParams[k] = v + } + r.params = newParams + url := r.URL() + return *url +} + +func (r *Request) tryThrottle() { + now := time.Now() + if r.throttle != nil { + r.throttle.Accept() + } + if latency := time.Since(now); latency > longThrottleLatency { + glog.V(4).Infof("Throttling request took %v, request: %s:%s", latency, r.verb, r.URL().String()) + } +} + +// Watch attempts to begin watching the requested location. +// Returns a watch.Interface, or an error. +func (r *Request) Watch() (watch.Interface, error) { + // We specifically don't want to rate limit watches, so we + // don't use r.throttle here. + if r.err != nil { + return nil, r.err + } + if r.serializers.Framer == nil { + return nil, fmt.Errorf("watching resources is not possible with this client (content-type: %s)", r.content.ContentType) + } + + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, r.body) + if err != nil { + return nil, err + } + req.Header = r.headers + client := r.client + if client == nil { + client = http.DefaultClient + } + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if r.baseURL != nil { + if err != nil { + r.backoffMgr.UpdateBackoff(r.baseURL, err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.baseURL, err, resp.StatusCode) + } + } + if err != nil { + // The watch stream mechanism handles many common partial data errors, so closed + // connections can be retried in many cases. + if net.IsProbableEOF(err) { + return watch.NewEmptyWatch(), nil + } + return nil, err + } + if resp.StatusCode != http.StatusOK { + defer resp.Body.Close() + if result := r.transformResponse(resp, req); result.err != nil { + return nil, result.err + } + return nil, fmt.Errorf("for request '%+v', got status: %v", url, resp.StatusCode) + } + framer := r.serializers.Framer.NewFrameReader(resp.Body) + decoder := streaming.NewDecoder(framer, r.serializers.StreamingSerializer) + return watch.NewStreamWatcher(versioned.NewDecoder(decoder, r.serializers.Decoder)), nil +} + +// updateURLMetrics is a convenience function for pushing metrics. +// It also handles corner cases for incomplete/invalid request data. +func updateURLMetrics(req *Request, resp *http.Response, err error) { + url := "none" + if req.baseURL != nil { + url = req.baseURL.Host + } + + // If we have an error (i.e. apiserver down) we report that as a metric label. + if err != nil { + metrics.RequestResult.Increment(err.Error(), req.verb, url) + } else { + //Metrics for failure codes + metrics.RequestResult.Increment(strconv.Itoa(resp.StatusCode), req.verb, url) + } +} + +// Stream formats and executes the request, and offers streaming of the response. +// Returns io.ReadCloser which could be used for streaming of the response, or an error +// Any non-2xx http status code causes an error. If we get a non-2xx code, we try to convert the body into an APIStatus object. +// If we can, we return that as an error. Otherwise, we create an error that lists the http status and the content of the response. +func (r *Request) Stream() (io.ReadCloser, error) { + if r.err != nil { + return nil, r.err + } + + r.tryThrottle() + + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, nil) + if err != nil { + return nil, err + } + req.Header = r.headers + client := r.client + if client == nil { + client = http.DefaultClient + } + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if r.baseURL != nil { + if err != nil { + r.backoffMgr.UpdateBackoff(r.URL(), err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.URL(), err, resp.StatusCode) + } + } + if err != nil { + return nil, err + } + + switch { + case (resp.StatusCode >= 200) && (resp.StatusCode < 300): + return resp.Body, nil + + default: + // ensure we close the body before returning the error + defer resp.Body.Close() + + result := r.transformResponse(resp, req) + if result.err != nil { + return nil, result.err + } + return nil, fmt.Errorf("%d while accessing %v: %s", result.statusCode, url, string(result.body)) + } +} + +// request connects to the server and invokes the provided function when a server response is +// received. It handles retry behavior and up front validation of requests. It will invoke +// fn at most once. It will return an error if a problem occurred prior to connecting to the +// server - the provided function is responsible for handling server errors. +func (r *Request) request(fn func(*http.Request, *http.Response)) error { + //Metrics for total request latency + start := time.Now() + defer func() { + metrics.RequestLatency.Observe(r.verb, r.finalURLTemplate(), time.Since(start)) + }() + + if r.err != nil { + glog.V(4).Infof("Error in request: %v", r.err) + return r.err + } + + // TODO: added to catch programmer errors (invoking operations with an object with an empty namespace) + if (r.verb == "GET" || r.verb == "PUT" || r.verb == "DELETE") && r.namespaceSet && len(r.resourceName) > 0 && len(r.namespace) == 0 { + return fmt.Errorf("an empty namespace may not be set when a resource name is provided") + } + if (r.verb == "POST") && r.namespaceSet && len(r.namespace) == 0 { + return fmt.Errorf("an empty namespace may not be set during creation") + } + + client := r.client + if client == nil { + client = http.DefaultClient + } + + // Right now we make about ten retry attempts if we get a Retry-After response. + // TODO: Change to a timeout based approach. + maxRetries := 10 + retries := 0 + for { + url := r.URL().String() + req, err := http.NewRequest(r.verb, url, r.body) + if err != nil { + return err + } + req.Header = r.headers + + r.backoffMgr.Sleep(r.backoffMgr.CalculateBackoff(r.URL())) + resp, err := client.Do(req) + updateURLMetrics(r, resp, err) + if err != nil { + r.backoffMgr.UpdateBackoff(r.URL(), err, 0) + } else { + r.backoffMgr.UpdateBackoff(r.URL(), err, resp.StatusCode) + } + if err != nil { + return err + } + + done := func() bool { + // Ensure the response body is fully read and closed + // before we reconnect, so that we reuse the same TCP + // connection. + defer func() { + const maxBodySlurpSize = 2 << 10 + if resp.ContentLength <= maxBodySlurpSize { + io.Copy(ioutil.Discard, &io.LimitedReader{R: resp.Body, N: maxBodySlurpSize}) + } + resp.Body.Close() + }() + + retries++ + if seconds, wait := checkWait(resp); wait && retries < maxRetries { + if seeker, ok := r.body.(io.Seeker); ok && r.body != nil { + _, err := seeker.Seek(0, 0) + if err != nil { + glog.V(4).Infof("Could not retry request, can't Seek() back to beginning of body for %T", r.body) + fn(req, resp) + return true + } + } + + glog.V(4).Infof("Got a Retry-After %s response for attempt %d to %v", seconds, retries, url) + r.backoffMgr.Sleep(time.Duration(seconds) * time.Second) + return false + } + fn(req, resp) + return true + }() + if done { + return nil + } + } +} + +// Do formats and executes the request. Returns a Result object for easy response +// processing. +// +// Error type: +// * If the request can't be constructed, or an error happened earlier while building its +// arguments: *RequestConstructionError +// * If the server responds with a status: *errors.StatusError or *errors.UnexpectedObjectError +// * http.Client.Do errors are returned directly. +func (r *Request) Do() Result { + r.tryThrottle() + + var result Result + err := r.request(func(req *http.Request, resp *http.Response) { + result = r.transformResponse(resp, req) + }) + if err != nil { + return Result{err: err} + } + return result +} + +// DoRaw executes the request but does not process the response body. +func (r *Request) DoRaw() ([]byte, error) { + r.tryThrottle() + + var result Result + err := r.request(func(req *http.Request, resp *http.Response) { + result.body, result.err = ioutil.ReadAll(resp.Body) + if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent { + result.err = r.transformUnstructuredResponseError(resp, req, result.body) + } + }) + if err != nil { + return nil, err + } + return result.body, result.err +} + +// transformResponse converts an API response into a structured API object +func (r *Request) transformResponse(resp *http.Response, req *http.Request) Result { + var body []byte + if resp.Body != nil { + if data, err := ioutil.ReadAll(resp.Body); err == nil { + body = data + } + } + + if glog.V(8) { + switch { + case bytes.IndexFunc(body, func(r rune) bool { return r < 0x0a }) != -1: + glog.Infof("Response Body:\n%s", hex.Dump(body)) + default: + glog.Infof("Response Body: %s", string(body)) + } + } + + // verify the content type is accurate + contentType := resp.Header.Get("Content-Type") + decoder := r.serializers.Decoder + if len(contentType) > 0 && (decoder == nil || (len(r.content.ContentType) > 0 && contentType != r.content.ContentType)) { + mediaType, params, err := mime.ParseMediaType(contentType) + if err != nil { + return Result{err: errors.NewInternalError(err)} + } + decoder, err = r.serializers.RenegotiatedDecoder(mediaType, params) + if err != nil { + // if we fail to negotiate a decoder, treat this as an unstructured error + switch { + case resp.StatusCode == http.StatusSwitchingProtocols: + // no-op, we've been upgraded + case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent: + return Result{err: r.transformUnstructuredResponseError(resp, req, body)} + } + return Result{ + body: body, + contentType: contentType, + statusCode: resp.StatusCode, + } + } + } + + // Did the server give us a status response? + isStatusResponse := false + status := &unversioned.Status{} + // Because release-1.1 server returns Status with empty APIVersion at paths + // to the Extensions resources, we need to use DecodeInto here to provide + // default groupVersion, otherwise a status response won't be correctly + // decoded. + err := runtime.DecodeInto(decoder, body, status) + if err == nil && len(status.Status) > 0 { + isStatusResponse = true + } + + switch { + case resp.StatusCode == http.StatusSwitchingProtocols: + // no-op, we've been upgraded + case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent: + if !isStatusResponse { + return Result{err: r.transformUnstructuredResponseError(resp, req, body)} + } + return Result{err: errors.FromObject(status)} + } + + // If the server gave us a status back, look at what it was. + success := resp.StatusCode >= http.StatusOK && resp.StatusCode <= http.StatusPartialContent + if isStatusResponse && (status.Status != unversioned.StatusSuccess && !success) { + // "Failed" requests are clearly just an error and it makes sense to return them as such. + return Result{err: errors.FromObject(status)} + } + + return Result{ + body: body, + contentType: contentType, + statusCode: resp.StatusCode, + decoder: decoder, + } +} + +// transformUnstructuredResponseError handles an error from the server that is not in a structured form. +// It is expected to transform any response that is not recognizable as a clear server sent error from the +// K8S API using the information provided with the request. In practice, HTTP proxies and client libraries +// introduce a level of uncertainty to the responses returned by servers that in common use result in +// unexpected responses. The rough structure is: +// +// 1. Assume the server sends you something sane - JSON + well defined error objects + proper codes +// - this is the happy path +// - when you get this output, trust what the server sends +// 2. Guard against empty fields / bodies in received JSON and attempt to cull sufficient info from them to +// generate a reasonable facsimile of the original failure. +// - Be sure to use a distinct error type or flag that allows a client to distinguish between this and error 1 above +// 3. Handle true disconnect failures / completely malformed data by moving up to a more generic client error +// 4. Distinguish between various connection failures like SSL certificates, timeouts, proxy errors, unexpected +// initial contact, the presence of mismatched body contents from posted content types +// - Give these a separate distinct error type and capture as much as possible of the original message +// +// TODO: introduce transformation of generic http.Client.Do() errors that separates 4. +func (r *Request) transformUnstructuredResponseError(resp *http.Response, req *http.Request, body []byte) error { + if body == nil && resp.Body != nil { + if data, err := ioutil.ReadAll(resp.Body); err == nil { + body = data + } + } + glog.V(8).Infof("Response Body: %#v", string(body)) + + message := "unknown" + if isTextResponse(resp) { + message = strings.TrimSpace(string(body)) + } + retryAfter, _ := retryAfterSeconds(resp) + return errors.NewGenericServerResponse( + resp.StatusCode, + req.Method, + unversioned.GroupResource{ + Group: r.content.GroupVersion.Group, + Resource: r.resource, + }, + r.resourceName, + message, + retryAfter, + true, + ) +} + +// isTextResponse returns true if the response appears to be a textual media type. +func isTextResponse(resp *http.Response) bool { + contentType := resp.Header.Get("Content-Type") + if len(contentType) == 0 { + return true + } + media, _, err := mime.ParseMediaType(contentType) + if err != nil { + return false + } + return strings.HasPrefix(media, "text/") +} + +// checkWait returns true along with a number of seconds if the server instructed us to wait +// before retrying. +func checkWait(resp *http.Response) (int, bool) { + switch r := resp.StatusCode; { + // any 500 error code and 429 can trigger a wait + case r == errors.StatusTooManyRequests, r >= 500: + default: + return 0, false + } + i, ok := retryAfterSeconds(resp) + return i, ok +} + +// retryAfterSeconds returns the value of the Retry-After header and true, or 0 and false if +// the header was missing or not a valid number. +func retryAfterSeconds(resp *http.Response) (int, bool) { + if h := resp.Header.Get("Retry-After"); len(h) > 0 { + if i, err := strconv.Atoi(h); err == nil { + return i, true + } + } + return 0, false +} + +// Result contains the result of calling Request.Do(). +type Result struct { + body []byte + contentType string + err error + statusCode int + + decoder runtime.Decoder +} + +// Raw returns the raw result. +func (r Result) Raw() ([]byte, error) { + return r.body, r.err +} + +// Get returns the result as an object. +func (r Result) Get() (runtime.Object, error) { + if r.err != nil { + return nil, r.err + } + if r.decoder == nil { + return nil, fmt.Errorf("serializer for %s doesn't exist", r.contentType) + } + return runtime.Decode(r.decoder, r.body) +} + +// StatusCode returns the HTTP status code of the request. (Only valid if no +// error was returned.) +func (r Result) StatusCode(statusCode *int) Result { + *statusCode = r.statusCode + return r +} + +// Into stores the result into obj, if possible. If obj is nil it is ignored. +func (r Result) Into(obj runtime.Object) error { + if r.err != nil { + return r.err + } + if r.decoder == nil { + return fmt.Errorf("serializer for %s doesn't exist", r.contentType) + } + return runtime.DecodeInto(r.decoder, r.body, obj) +} + +// WasCreated updates the provided bool pointer to whether the server returned +// 201 created or a different response. +func (r Result) WasCreated(wasCreated *bool) Result { + *wasCreated = r.statusCode == http.StatusCreated + return r +} + +// Error returns the error executing the request, nil if no error occurred. +// See the Request.Do() comment for what errors you might get. +func (r Result) Error() error { + return r.err +} diff --git a/vendor/k8s.io/client-go/1.5/rest/transport.go b/vendor/k8s.io/client-go/1.5/rest/transport.go new file mode 100644 index 0000000000..6cd2757a22 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/transport.go @@ -0,0 +1,94 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "crypto/tls" + "net/http" + + "k8s.io/client-go/1.5/transport" +) + +// TLSConfigFor returns a tls.Config that will provide the transport level security defined +// by the provided Config. Will return nil if no transport level security is requested. +func TLSConfigFor(config *Config) (*tls.Config, error) { + cfg, err := config.transportConfig() + if err != nil { + return nil, err + } + return transport.TLSConfigFor(cfg) +} + +// TransportFor returns an http.RoundTripper that will provide the authentication +// or transport level security defined by the provided Config. Will return the +// default http.DefaultTransport if no special case behavior is needed. +func TransportFor(config *Config) (http.RoundTripper, error) { + cfg, err := config.transportConfig() + if err != nil { + return nil, err + } + return transport.New(cfg) +} + +// HTTPWrappersForConfig wraps a round tripper with any relevant layered behavior from the +// config. Exposed to allow more clients that need HTTP-like behavior but then must hijack +// the underlying connection (like WebSocket or HTTP2 clients). Pure HTTP clients should use +// the higher level TransportFor or RESTClientFor methods. +func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTripper, error) { + cfg, err := config.transportConfig() + if err != nil { + return nil, err + } + return transport.HTTPWrappersForConfig(cfg, rt) +} + +// transportConfig converts a client config to an appropriate transport config. +func (c *Config) transportConfig() (*transport.Config, error) { + wt := c.WrapTransport + if c.AuthProvider != nil { + provider, err := GetAuthProvider(c.Host, c.AuthProvider, c.AuthConfigPersister) + if err != nil { + return nil, err + } + if wt != nil { + previousWT := wt + wt = func(rt http.RoundTripper) http.RoundTripper { + return provider.WrapTransport(previousWT(rt)) + } + } else { + wt = provider.WrapTransport + } + } + return &transport.Config{ + UserAgent: c.UserAgent, + Transport: c.Transport, + WrapTransport: wt, + TLS: transport.TLSConfig{ + CAFile: c.CAFile, + CAData: c.CAData, + CertFile: c.CertFile, + CertData: c.CertData, + KeyFile: c.KeyFile, + KeyData: c.KeyData, + Insecure: c.Insecure, + }, + Username: c.Username, + Password: c.Password, + BearerToken: c.BearerToken, + Impersonate: c.Impersonate, + }, nil +} diff --git a/vendor/k8s.io/client-go/1.5/rest/url_utils.go b/vendor/k8s.io/client-go/1.5/rest/url_utils.go new file mode 100644 index 0000000000..f674f47d15 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/url_utils.go @@ -0,0 +1,93 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "fmt" + "net/url" + "path" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +// DefaultServerURL converts a host, host:port, or URL string to the default base server API path +// to use with a Client at a given API version following the standard conventions for a +// Kubernetes API. +func DefaultServerURL(host, apiPath string, groupVersion unversioned.GroupVersion, defaultTLS bool) (*url.URL, string, error) { + if host == "" { + return nil, "", fmt.Errorf("host must be a URL or a host:port pair") + } + base := host + hostURL, err := url.Parse(base) + if err != nil { + return nil, "", err + } + if hostURL.Scheme == "" || hostURL.Host == "" { + scheme := "http://" + if defaultTLS { + scheme = "https://" + } + hostURL, err = url.Parse(scheme + base) + if err != nil { + return nil, "", err + } + if hostURL.Path != "" && hostURL.Path != "/" { + return nil, "", fmt.Errorf("host must be a URL or a host:port pair: %q", base) + } + } + + // hostURL.Path is optional; a non-empty Path is treated as a prefix that is to be applied to + // all URIs used to access the host. this is useful when there's a proxy in front of the + // apiserver that has relocated the apiserver endpoints, forwarding all requests from, for + // example, /a/b/c to the apiserver. in this case the Path should be /a/b/c. + // + // if running without a frontend proxy (that changes the location of the apiserver), then + // hostURL.Path should be blank. + // + // versionedAPIPath, a path relative to baseURL.Path, points to a versioned API base + versionedAPIPath := path.Join("/", apiPath) + + // Add the version to the end of the path + if len(groupVersion.Group) > 0 { + versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Group, groupVersion.Version) + + } else { + versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Version) + + } + + return hostURL, versionedAPIPath, nil +} + +// defaultServerUrlFor is shared between IsConfigTransportTLS and RESTClientFor. It +// requires Host and Version to be set prior to being called. +func defaultServerUrlFor(config *Config) (*url.URL, string, error) { + // TODO: move the default to secure when the apiserver supports TLS by default + // config.Insecure is taken to mean "I want HTTPS but don't bother checking the certs against a CA." + hasCA := len(config.CAFile) != 0 || len(config.CAData) != 0 + hasCert := len(config.CertFile) != 0 || len(config.CertData) != 0 + defaultTLS := hasCA || hasCert || config.Insecure + host := config.Host + if host == "" { + host = "localhost" + } + + if config.GroupVersion != nil { + return DefaultServerURL(host, config.APIPath, *config.GroupVersion, defaultTLS) + } + return DefaultServerURL(host, config.APIPath, unversioned.GroupVersion{}, defaultTLS) +} diff --git a/vendor/k8s.io/client-go/1.5/rest/urlbackoff.go b/vendor/k8s.io/client-go/1.5/rest/urlbackoff.go new file mode 100644 index 0000000000..bac7477ffe --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/urlbackoff.go @@ -0,0 +1,107 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "net/url" + "time" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/util/flowcontrol" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// Set of resp. Codes that we backoff for. +// In general these should be errors that indicate a server is overloaded. +// These shouldn't be configured by any user, we set them based on conventions +// described in +var serverIsOverloadedSet = sets.NewInt(429) +var maxResponseCode = 499 + +type BackoffManager interface { + UpdateBackoff(actualUrl *url.URL, err error, responseCode int) + CalculateBackoff(actualUrl *url.URL) time.Duration + Sleep(d time.Duration) +} + +// URLBackoff struct implements the semantics on top of Backoff which +// we need for URL specific exponential backoff. +type URLBackoff struct { + // Uses backoff as underlying implementation. + Backoff *flowcontrol.Backoff +} + +// NoBackoff is a stub implementation, can be used for mocking or else as a default. +type NoBackoff struct { +} + +func (n *NoBackoff) UpdateBackoff(actualUrl *url.URL, err error, responseCode int) { + // do nothing. +} + +func (n *NoBackoff) CalculateBackoff(actualUrl *url.URL) time.Duration { + return 0 * time.Second +} + +func (n *NoBackoff) Sleep(d time.Duration) { + time.Sleep(d) +} + +// Disable makes the backoff trivial, i.e., sets it to zero. This might be used +// by tests which want to run 1000s of mock requests without slowing down. +func (b *URLBackoff) Disable() { + glog.V(4).Infof("Disabling backoff strategy") + b.Backoff = flowcontrol.NewBackOff(0*time.Second, 0*time.Second) +} + +// baseUrlKey returns the key which urls will be mapped to. +// For example, 127.0.0.1:8080/api/v2/abcde -> 127.0.0.1:8080. +func (b *URLBackoff) baseUrlKey(rawurl *url.URL) string { + // Simple implementation for now, just the host. + // We may backoff specific paths (i.e. "pods") differentially + // in the future. + host, err := url.Parse(rawurl.String()) + if err != nil { + glog.V(4).Infof("Error extracting url: %v", rawurl) + panic("bad url!") + } + return host.Host +} + +// UpdateBackoff updates backoff metadata +func (b *URLBackoff) UpdateBackoff(actualUrl *url.URL, err error, responseCode int) { + // range for retry counts that we store is [0,13] + if responseCode > maxResponseCode || serverIsOverloadedSet.Has(responseCode) { + b.Backoff.Next(b.baseUrlKey(actualUrl), b.Backoff.Clock.Now()) + return + } else if responseCode >= 300 || err != nil { + glog.V(4).Infof("Client is returning errors: code %v, error %v", responseCode, err) + } + + //If we got this far, there is no backoff required for this URL anymore. + b.Backoff.Reset(b.baseUrlKey(actualUrl)) +} + +// CalculateBackoff takes a url and back's off exponentially, +// based on its knowledge of existing failures. +func (b *URLBackoff) CalculateBackoff(actualUrl *url.URL) time.Duration { + return b.Backoff.Get(b.baseUrlKey(actualUrl)) +} + +func (b *URLBackoff) Sleep(d time.Duration) { + b.Backoff.Clock.Sleep(d) +} diff --git a/vendor/k8s.io/client-go/1.5/rest/versions.go b/vendor/k8s.io/client-go/1.5/rest/versions.go new file mode 100644 index 0000000000..e2cd9212c3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/rest/versions.go @@ -0,0 +1,88 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package rest + +import ( + "encoding/json" + "fmt" + "net/http" + "path" + + "k8s.io/client-go/1.5/pkg/api/unversioned" +) + +const ( + legacyAPIPath = "/api" + defaultAPIPath = "/apis" +) + +// TODO: Is this obsoleted by the discovery client? + +// ServerAPIVersions returns the GroupVersions supported by the API server. +// It creates a RESTClient based on the passed in config, but it doesn't rely +// on the Version and Codec of the config, because it uses AbsPath and +// takes the raw response. +func ServerAPIVersions(c *Config) (groupVersions []string, err error) { + transport, err := TransportFor(c) + if err != nil { + return nil, err + } + client := http.Client{Transport: transport} + + configCopy := *c + configCopy.GroupVersion = nil + configCopy.APIPath = "" + baseURL, _, err := defaultServerUrlFor(&configCopy) + if err != nil { + return nil, err + } + // Get the groupVersions exposed at /api + originalPath := baseURL.Path + baseURL.Path = path.Join(originalPath, legacyAPIPath) + resp, err := client.Get(baseURL.String()) + if err != nil { + return nil, err + } + var v unversioned.APIVersions + defer resp.Body.Close() + err = json.NewDecoder(resp.Body).Decode(&v) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + + groupVersions = append(groupVersions, v.Versions...) + // Get the groupVersions exposed at /apis + baseURL.Path = path.Join(originalPath, defaultAPIPath) + resp2, err := client.Get(baseURL.String()) + if err != nil { + return nil, err + } + var apiGroupList unversioned.APIGroupList + defer resp2.Body.Close() + err = json.NewDecoder(resp2.Body).Decode(&apiGroupList) + if err != nil { + return nil, fmt.Errorf("unexpected error: %v", err) + } + + for _, g := range apiGroupList.Groups { + for _, gv := range g.Versions { + groupVersions = append(groupVersions, gv.GroupVersion) + } + } + + return groupVersions, nil +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/controller.go b/vendor/k8s.io/client-go/1.5/tools/cache/controller.go new file mode 100644 index 0000000000..413f455897 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/controller.go @@ -0,0 +1,325 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + "time" + + "k8s.io/client-go/1.5/pkg/runtime" + utilruntime "k8s.io/client-go/1.5/pkg/util/runtime" + "k8s.io/client-go/1.5/pkg/util/wait" +) + +// Config contains all the settings for a Controller. +type Config struct { + // The queue for your objects; either a FIFO or + // a DeltaFIFO. Your Process() function should accept + // the output of this Oueue's Pop() method. + Queue + + // Something that can list and watch your objects. + ListerWatcher + + // Something that can process your objects. + Process ProcessFunc + + // The type of your objects. + ObjectType runtime.Object + + // Reprocess everything at least this often. + // Note that if it takes longer for you to clear the queue than this + // period, you will end up processing items in the order determined + // by FIFO.Replace(). Currently, this is random. If this is a + // problem, we can change that replacement policy to append new + // things to the end of the queue instead of replacing the entire + // queue. + FullResyncPeriod time.Duration + + // If true, when Process() returns an error, re-enqueue the object. + // TODO: add interface to let you inject a delay/backoff or drop + // the object completely if desired. Pass the object in + // question to this interface as a parameter. + RetryOnError bool +} + +// ProcessFunc processes a single object. +type ProcessFunc func(obj interface{}) error + +// Controller is a generic controller framework. +type Controller struct { + config Config + reflector *Reflector + reflectorMutex sync.RWMutex +} + +// TODO make the "Controller" private, and convert all references to use ControllerInterface instead +type ControllerInterface interface { + Run(stopCh <-chan struct{}) + HasSynced() bool +} + +// New makes a new Controller from the given Config. +func New(c *Config) *Controller { + ctlr := &Controller{ + config: *c, + } + return ctlr +} + +// Run begins processing items, and will continue until a value is sent down stopCh. +// It's an error to call Run more than once. +// Run blocks; call via go. +func (c *Controller) Run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + r := NewReflector( + c.config.ListerWatcher, + c.config.ObjectType, + c.config.Queue, + c.config.FullResyncPeriod, + ) + + c.reflectorMutex.Lock() + c.reflector = r + c.reflectorMutex.Unlock() + + r.RunUntil(stopCh) + + wait.Until(c.processLoop, time.Second, stopCh) +} + +// Returns true once this controller has completed an initial resource listing +func (c *Controller) HasSynced() bool { + return c.config.Queue.HasSynced() +} + +// Requeue adds the provided object back into the queue if it does not already exist. +func (c *Controller) Requeue(obj interface{}) error { + return c.config.Queue.AddIfNotPresent(Deltas{ + Delta{ + Type: Sync, + Object: obj, + }, + }) +} + +// processLoop drains the work queue. +// TODO: Consider doing the processing in parallel. This will require a little thought +// to make sure that we don't end up processing the same object multiple times +// concurrently. +func (c *Controller) processLoop() { + for { + obj, err := c.config.Queue.Pop(PopProcessFunc(c.config.Process)) + if err != nil { + if c.config.RetryOnError { + // This is the safe way to re-enqueue. + c.config.Queue.AddIfNotPresent(obj) + } + } + } +} + +// ResourceEventHandler can handle notifications for events that happen to a +// resource. The events are informational only, so you can't return an +// error. +// * OnAdd is called when an object is added. +// * OnUpdate is called when an object is modified. Note that oldObj is the +// last known state of the object-- it is possible that several changes +// were combined together, so you can't use this to see every single +// change. OnUpdate is also called when a re-list happens, and it will +// get called even if nothing changed. This is useful for periodically +// evaluating or syncing something. +// * OnDelete will get the final state of the item if it is known, otherwise +// it will get an object of type DeletedFinalStateUnknown. This can +// happen if the watch is closed and misses the delete event and we don't +// notice the deletion until the subsequent re-list. +type ResourceEventHandler interface { + OnAdd(obj interface{}) + OnUpdate(oldObj, newObj interface{}) + OnDelete(obj interface{}) +} + +// ResourceEventHandlerFuncs is an adaptor to let you easily specify as many or +// as few of the notification functions as you want while still implementing +// ResourceEventHandler. +type ResourceEventHandlerFuncs struct { + AddFunc func(obj interface{}) + UpdateFunc func(oldObj, newObj interface{}) + DeleteFunc func(obj interface{}) +} + +// OnAdd calls AddFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnAdd(obj interface{}) { + if r.AddFunc != nil { + r.AddFunc(obj) + } +} + +// OnUpdate calls UpdateFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnUpdate(oldObj, newObj interface{}) { + if r.UpdateFunc != nil { + r.UpdateFunc(oldObj, newObj) + } +} + +// OnDelete calls DeleteFunc if it's not nil. +func (r ResourceEventHandlerFuncs) OnDelete(obj interface{}) { + if r.DeleteFunc != nil { + r.DeleteFunc(obj) + } +} + +// DeletionHandlingMetaNamespaceKeyFunc checks for +// DeletedFinalStateUnknown objects before calling +// MetaNamespaceKeyFunc. +func DeletionHandlingMetaNamespaceKeyFunc(obj interface{}) (string, error) { + if d, ok := obj.(DeletedFinalStateUnknown); ok { + return d.Key, nil + } + return MetaNamespaceKeyFunc(obj) +} + +// NewInformer returns a Store and a controller for populating the store +// while also providing event notifications. You should only used the returned +// Store for Get/List operations; Add/Modify/Deletes will cause the event +// notifications to be faulty. +// +// Parameters: +// * lw is list and watch functions for the source of the resource you want to +// be informed of. +// * objType is an object of the type that you expect to receive. +// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// * h is the object you want notifications sent to. +// +func NewInformer( + lw ListerWatcher, + objType runtime.Object, + resyncPeriod time.Duration, + h ResourceEventHandler, +) (Store, *Controller) { + // This will hold the client state, as we know it. + clientState := NewStore(DeletionHandlingMetaNamespaceKeyFunc) + + // This will hold incoming changes. Note how we pass clientState in as a + // KeyLister, that way resync operations will result in the correct set + // of update/delete deltas. + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, clientState) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: lw, + ObjectType: objType, + FullResyncPeriod: resyncPeriod, + RetryOnError: false, + + Process: func(obj interface{}) error { + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + if old, exists, err := clientState.Get(d.Object); err == nil && exists { + if err := clientState.Update(d.Object); err != nil { + return err + } + h.OnUpdate(old, d.Object) + } else { + if err := clientState.Add(d.Object); err != nil { + return err + } + h.OnAdd(d.Object) + } + case Deleted: + if err := clientState.Delete(d.Object); err != nil { + return err + } + h.OnDelete(d.Object) + } + } + return nil + }, + } + return clientState, New(cfg) +} + +// NewIndexerInformer returns a Indexer and a controller for populating the index +// while also providing event notifications. You should only used the returned +// Index for Get/List operations; Add/Modify/Deletes will cause the event +// notifications to be faulty. +// +// Parameters: +// * lw is list and watch functions for the source of the resource you want to +// be informed of. +// * objType is an object of the type that you expect to receive. +// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// * h is the object you want notifications sent to. +// +func NewIndexerInformer( + lw ListerWatcher, + objType runtime.Object, + resyncPeriod time.Duration, + h ResourceEventHandler, + indexers Indexers, +) (Indexer, *Controller) { + // This will hold the client state, as we know it. + clientState := NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers) + + // This will hold incoming changes. Note how we pass clientState in as a + // KeyLister, that way resync operations will result in the correct set + // of update/delete deltas. + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, clientState) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: lw, + ObjectType: objType, + FullResyncPeriod: resyncPeriod, + RetryOnError: false, + + Process: func(obj interface{}) error { + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + if old, exists, err := clientState.Get(d.Object); err == nil && exists { + if err := clientState.Update(d.Object); err != nil { + return err + } + h.OnUpdate(old, d.Object) + } else { + if err := clientState.Add(d.Object); err != nil { + return err + } + h.OnAdd(d.Object) + } + case Deleted: + if err := clientState.Delete(d.Object); err != nil { + return err + } + h.OnDelete(d.Object) + } + } + return nil + }, + } + return clientState, New(cfg) +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/delta_fifo.go b/vendor/k8s.io/client-go/1.5/tools/cache/delta_fifo.go new file mode 100644 index 0000000000..b26eefe6aa --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/delta_fifo.go @@ -0,0 +1,638 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "fmt" + "sync" + + "k8s.io/client-go/1.5/pkg/util/sets" + + "github.com/golang/glog" +) + +// NewDeltaFIFO returns a Store which can be used process changes to items. +// +// keyFunc is used to figure out what key an object should have. (It's +// exposed in the returned DeltaFIFO's KeyOf() method, with bonus features.) +// +// 'compressor' may compress as many or as few items as it wants +// (including returning an empty slice), but it should do what it +// does quickly since it is called while the queue is locked. +// 'compressor' may be nil if you don't want any delta compression. +// +// 'keyLister' is expected to return a list of keys that the consumer of +// this queue "knows about". It is used to decide which items are missing +// when Replace() is called; 'Deleted' deltas are produced for these items. +// It may be nil if you don't need to detect all deletions. +// TODO: consider merging keyLister with this object, tracking a list of +// "known" keys when Pop() is called. Have to think about how that +// affects error retrying. +// TODO(lavalamp): I believe there is a possible race only when using an +// external known object source that the above TODO would +// fix. +// +// Also see the comment on DeltaFIFO. +func NewDeltaFIFO(keyFunc KeyFunc, compressor DeltaCompressor, knownObjects KeyListerGetter) *DeltaFIFO { + f := &DeltaFIFO{ + items: map[string]Deltas{}, + queue: []string{}, + keyFunc: keyFunc, + deltaCompressor: compressor, + knownObjects: knownObjects, + } + f.cond.L = &f.lock + return f +} + +// DeltaFIFO is like FIFO, but allows you to process deletes. +// +// DeltaFIFO is a producer-consumer queue, where a Reflector is +// intended to be the producer, and the consumer is whatever calls +// the Pop() method. +// +// DeltaFIFO solves this use case: +// * You want to process every object change (delta) at most once. +// * When you process an object, you want to see everything +// that's happened to it since you last processed it. +// * You want to process the deletion of objects. +// * You might want to periodically reprocess objects. +// +// DeltaFIFO's Pop(), Get(), and GetByKey() methods return +// interface{} to satisfy the Store/Queue interfaces, but it +// will always return an object of type Deltas. +// +// A note on threading: If you call Pop() in parallel from multiple +// threads, you could end up with multiple threads processing slightly +// different versions of the same object. +// +// A note on the KeyLister used by the DeltaFIFO: It's main purpose is +// to list keys that are "known", for the purpose of figuring out which +// items have been deleted when Replace() or Delete() are called. The deleted +// object will be included in the DeleteFinalStateUnknown markers. These objects +// could be stale. +// +// You may provide a function to compress deltas (e.g., represent a +// series of Updates as a single Update). +type DeltaFIFO struct { + // lock/cond protects access to 'items' and 'queue'. + lock sync.RWMutex + cond sync.Cond + + // We depend on the property that items in the set are in + // the queue and vice versa, and that all Deltas in this + // map have at least one Delta. + items map[string]Deltas + queue []string + + // populated is true if the first batch of items inserted by Replace() has been populated + // or Delete/Add/Update was called first. + populated bool + // initialPopulationCount is the number of items inserted by the first call of Replace() + initialPopulationCount int + + // keyFunc is used to make the key used for queued item + // insertion and retrieval, and should be deterministic. + keyFunc KeyFunc + + // deltaCompressor tells us how to combine two or more + // deltas. It may be nil. + deltaCompressor DeltaCompressor + + // knownObjects list keys that are "known", for the + // purpose of figuring out which items have been deleted + // when Replace() or Delete() is called. + knownObjects KeyListerGetter +} + +var ( + _ = Queue(&DeltaFIFO{}) // DeltaFIFO is a Queue +) + +var ( + // ErrZeroLengthDeltasObject is returned in a KeyError if a Deltas + // object with zero length is encountered (should be impossible, + // even if such an object is accidentally produced by a DeltaCompressor-- + // but included for completeness). + ErrZeroLengthDeltasObject = errors.New("0 length Deltas object; can't get key") +) + +// KeyOf exposes f's keyFunc, but also detects the key of a Deltas object or +// DeletedFinalStateUnknown objects. +func (f *DeltaFIFO) KeyOf(obj interface{}) (string, error) { + if d, ok := obj.(Deltas); ok { + if len(d) == 0 { + return "", KeyError{obj, ErrZeroLengthDeltasObject} + } + obj = d.Newest().Object + } + if d, ok := obj.(DeletedFinalStateUnknown); ok { + return d.Key, nil + } + return f.keyFunc(obj) +} + +// Return true if an Add/Update/Delete/AddIfNotPresent are called first, +// or an Update called first but the first batch of items inserted by Replace() has been popped +func (f *DeltaFIFO) HasSynced() bool { + f.lock.Lock() + defer f.lock.Unlock() + return f.populated && f.initialPopulationCount == 0 +} + +// Add inserts an item, and puts it in the queue. The item is only enqueued +// if it doesn't already exist in the set. +func (f *DeltaFIFO) Add(obj interface{}) error { + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + return f.queueActionLocked(Added, obj) +} + +// Update is just like Add, but makes an Updated Delta. +func (f *DeltaFIFO) Update(obj interface{}) error { + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + return f.queueActionLocked(Updated, obj) +} + +// Delete is just like Add, but makes an Deleted Delta. If the item does not +// already exist, it will be ignored. (It may have already been deleted by a +// Replace (re-list), for example. +func (f *DeltaFIFO) Delete(obj interface{}) error { + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + if f.knownObjects == nil { + if _, exists := f.items[id]; !exists { + // Presumably, this was deleted when a relist happened. + // Don't provide a second report of the same deletion. + return nil + } + } else { + // We only want to skip the "deletion" action if the object doesn't + // exist in knownObjects and it doesn't have corresponding item in items. + // Note that even if there is a "deletion" action in items, we can ignore it, + // because it will be deduped automatically in "queueActionLocked" + _, exists, err := f.knownObjects.GetByKey(id) + _, itemsExist := f.items[id] + if err == nil && !exists && !itemsExist { + // Presumably, this was deleted when a relist happened. + // Don't provide a second report of the same deletion. + // TODO(lavalamp): This may be racy-- we aren't properly locked + // with knownObjects. + return nil + } + } + + return f.queueActionLocked(Deleted, obj) +} + +// AddIfNotPresent inserts an item, and puts it in the queue. If the item is already +// present in the set, it is neither enqueued nor added to the set. +// +// This is useful in a single producer/consumer scenario so that the consumer can +// safely retry items without contending with the producer and potentially enqueueing +// stale items. +// +// Important: obj must be a Deltas (the output of the Pop() function). Yes, this is +// different from the Add/Update/Delete functions. +func (f *DeltaFIFO) AddIfNotPresent(obj interface{}) error { + deltas, ok := obj.(Deltas) + if !ok { + return fmt.Errorf("object must be of type deltas, but got: %#v", obj) + } + id, err := f.KeyOf(deltas.Newest().Object) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.addIfNotPresent(id, deltas) + return nil +} + +// addIfNotPresent inserts deltas under id if it does not exist, and assumes the caller +// already holds the fifo lock. +func (f *DeltaFIFO) addIfNotPresent(id string, deltas Deltas) { + f.populated = true + if _, exists := f.items[id]; exists { + return + } + + f.queue = append(f.queue, id) + f.items[id] = deltas + f.cond.Broadcast() +} + +// re-listing and watching can deliver the same update multiple times in any +// order. This will combine the most recent two deltas if they are the same. +func dedupDeltas(deltas Deltas) Deltas { + n := len(deltas) + if n < 2 { + return deltas + } + a := &deltas[n-1] + b := &deltas[n-2] + if out := isDup(a, b); out != nil { + d := append(Deltas{}, deltas[:n-2]...) + return append(d, *out) + } + return deltas +} + +// If a & b represent the same event, returns the delta that ought to be kept. +// Otherwise, returns nil. +// TODO: is there anything other than deletions that need deduping? +func isDup(a, b *Delta) *Delta { + if out := isDeletionDup(a, b); out != nil { + return out + } + // TODO: Detect other duplicate situations? Are there any? + return nil +} + +// keep the one with the most information if both are deletions. +func isDeletionDup(a, b *Delta) *Delta { + if b.Type != Deleted || a.Type != Deleted { + return nil + } + // Do more sophisticated checks, or is this sufficient? + if _, ok := b.Object.(DeletedFinalStateUnknown); ok { + return a + } + return b +} + +// willObjectBeDeletedLocked returns true only if the last delta for the +// given object is Delete. Caller must lock first. +func (f *DeltaFIFO) willObjectBeDeletedLocked(id string) bool { + deltas := f.items[id] + return len(deltas) > 0 && deltas[len(deltas)-1].Type == Deleted +} + +// queueActionLocked appends to the delta list for the object, calling +// f.deltaCompressor if needed. Caller must lock first. +func (f *DeltaFIFO) queueActionLocked(actionType DeltaType, obj interface{}) error { + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + + // If object is supposed to be deleted (last event is Deleted), + // then we should ignore Sync events, because it would result in + // recreation of this object. + if actionType == Sync && f.willObjectBeDeletedLocked(id) { + return nil + } + + newDeltas := append(f.items[id], Delta{actionType, obj}) + newDeltas = dedupDeltas(newDeltas) + if f.deltaCompressor != nil { + newDeltas = f.deltaCompressor.Compress(newDeltas) + } + + _, exists := f.items[id] + if len(newDeltas) > 0 { + if !exists { + f.queue = append(f.queue, id) + } + f.items[id] = newDeltas + f.cond.Broadcast() + } else if exists { + // The compression step removed all deltas, so + // we need to remove this from our map (extra items + // in the queue are ignored if they are not in the + // map). + delete(f.items, id) + } + return nil +} + +// List returns a list of all the items; it returns the object +// from the most recent Delta. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) List() []interface{} { + f.lock.RLock() + defer f.lock.RUnlock() + return f.listLocked() +} + +func (f *DeltaFIFO) listLocked() []interface{} { + list := make([]interface{}, 0, len(f.items)) + for _, item := range f.items { + // Copy item's slice so operations on this slice (delta + // compression) won't interfere with the object we return. + item = copyDeltas(item) + list = append(list, item.Newest().Object) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the FIFO. +func (f *DeltaFIFO) ListKeys() []string { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]string, 0, len(f.items)) + for key := range f.items { + list = append(list, key) + } + return list +} + +// Get returns the complete list of deltas for the requested item, +// or sets exists=false. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := f.KeyOf(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return f.GetByKey(key) +} + +// GetByKey returns the complete list of deltas for the requested item, +// setting exists=false if that list is empty. +// You should treat the items returned inside the deltas as immutable. +func (f *DeltaFIFO) GetByKey(key string) (item interface{}, exists bool, err error) { + f.lock.RLock() + defer f.lock.RUnlock() + d, exists := f.items[key] + if exists { + // Copy item's slice so operations on this slice (delta + // compression) won't interfere with the object we return. + d = copyDeltas(d) + } + return d, exists, nil +} + +// Pop blocks until an item is added to the queue, and then returns it. If +// multiple items are ready, they are returned in the order in which they were +// added/updated. The item is removed from the queue (and the store) before it +// is returned, so if you don't successfully process it, you need to add it back +// with AddIfNotPresent(). +// process function is called under lock, so it is safe update data structures +// in it that need to be in sync with the queue (e.g. knownKeys). The PopProcessFunc +// may return an instance of ErrRequeue with a nested error to indicate the current +// item should be requeued (equivalent to calling AddIfNotPresent under the lock). +// +// Pop returns a 'Deltas', which has a complete list of all the things +// that happened to the object (deltas) while it was sitting in the queue. +func (f *DeltaFIFO) Pop(process PopProcessFunc) (interface{}, error) { + f.lock.Lock() + defer f.lock.Unlock() + for { + for len(f.queue) == 0 { + f.cond.Wait() + } + id := f.queue[0] + f.queue = f.queue[1:] + item, ok := f.items[id] + if f.initialPopulationCount > 0 { + f.initialPopulationCount-- + } + if !ok { + // Item may have been deleted subsequently. + continue + } + delete(f.items, id) + err := process(item) + if e, ok := err.(ErrRequeue); ok { + f.addIfNotPresent(id, item) + err = e.Err + } + // Don't need to copyDeltas here, because we're transferring + // ownership to the caller. + return item, err + } +} + +// Replace will delete the contents of 'f', using instead the given map. +// 'f' takes ownership of the map, you should not reference the map again +// after calling this function. f's queue is reset, too; upon return, it +// will contain the items in the map, in no particular order. +func (f *DeltaFIFO) Replace(list []interface{}, resourceVersion string) error { + f.lock.Lock() + defer f.lock.Unlock() + keys := make(sets.String, len(list)) + + if !f.populated { + f.populated = true + f.initialPopulationCount = len(list) + } + + for _, item := range list { + key, err := f.KeyOf(item) + if err != nil { + return KeyError{item, err} + } + keys.Insert(key) + if err := f.queueActionLocked(Sync, item); err != nil { + return fmt.Errorf("couldn't enqueue object: %v", err) + } + } + + if f.knownObjects == nil { + // Do deletion detection against our own list. + for k, oldItem := range f.items { + if keys.Has(k) { + continue + } + var deletedObj interface{} + if n := oldItem.Newest(); n != nil { + deletedObj = n.Object + } + if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { + return err + } + } + return nil + } + + // Detect deletions not already in the queue. + // TODO(lavalamp): This may be racy-- we aren't properly locked + // with knownObjects. Unproven. + knownKeys := f.knownObjects.ListKeys() + for _, k := range knownKeys { + if keys.Has(k) { + continue + } + + deletedObj, exists, err := f.knownObjects.GetByKey(k) + if err != nil { + deletedObj = nil + glog.Errorf("Unexpected error %v during lookup of key %v, placing DeleteFinalStateUnknown marker without object", err, k) + } else if !exists { + deletedObj = nil + glog.Infof("Key %v does not exist in known objects store, placing DeleteFinalStateUnknown marker without object", k) + } + if err := f.queueActionLocked(Deleted, DeletedFinalStateUnknown{k, deletedObj}); err != nil { + return err + } + } + return nil +} + +// Resync will send a sync event for each item +func (f *DeltaFIFO) Resync() error { + var keys []string + func() { + f.lock.RLock() + defer f.lock.RUnlock() + keys = f.knownObjects.ListKeys() + }() + for _, k := range keys { + if err := f.syncKey(k); err != nil { + return err + } + } + return nil +} + +func (f *DeltaFIFO) syncKey(key string) error { + f.lock.Lock() + defer f.lock.Unlock() + obj, exists, err := f.knownObjects.GetByKey(key) + if err != nil { + glog.Errorf("Unexpected error %v during lookup of key %v, unable to queue object for sync", err, key) + return nil + } else if !exists { + glog.Infof("Key %v does not exist in known objects store, unable to queue object for sync", key) + return nil + } + + // If we are doing Resync() and there is already an event queued for that object, + // we ignore the Resync for it. This is to avoid the race, in which the resync + // comes with the previous value of object (since queueing an event for the object + // doesn't trigger changing the underlying store <knownObjects>. + id, err := f.KeyOf(obj) + if err != nil { + return KeyError{obj, err} + } + if len(f.items[id]) > 0 { + return nil + } + + if err := f.queueActionLocked(Sync, obj); err != nil { + return fmt.Errorf("couldn't queue object: %v", err) + } + return nil +} + +// A KeyListerGetter is anything that knows how to list its keys and look up by key. +type KeyListerGetter interface { + KeyLister + KeyGetter +} + +// A KeyLister is anything that knows how to list its keys. +type KeyLister interface { + ListKeys() []string +} + +// A KeyGetter is anything that knows how to get the value stored under a given key. +type KeyGetter interface { + GetByKey(key string) (interface{}, bool, error) +} + +// DeltaCompressor is an algorithm that removes redundant changes. +type DeltaCompressor interface { + Compress(Deltas) Deltas +} + +// DeltaCompressorFunc should remove redundant changes; but changes that +// are redundant depend on one's desired semantics, so this is an +// injectable function. +// +// DeltaCompressorFunc adapts a raw function to be a DeltaCompressor. +type DeltaCompressorFunc func(Deltas) Deltas + +// Compress just calls dc. +func (dc DeltaCompressorFunc) Compress(d Deltas) Deltas { + return dc(d) +} + +// DeltaType is the type of a change (addition, deletion, etc) +type DeltaType string + +const ( + Added DeltaType = "Added" + Updated DeltaType = "Updated" + Deleted DeltaType = "Deleted" + // The other types are obvious. You'll get Sync deltas when: + // * A watch expires/errors out and a new list/watch cycle is started. + // * You've turned on periodic syncs. + // (Anything that trigger's DeltaFIFO's Replace() method.) + Sync DeltaType = "Sync" +) + +// Delta is the type stored by a DeltaFIFO. It tells you what change +// happened, and the object's state after* that change. +// +// [*] Unless the change is a deletion, and then you'll get the final +// state of the object before it was deleted. +type Delta struct { + Type DeltaType + Object interface{} +} + +// Deltas is a list of one or more 'Delta's to an individual object. +// The oldest delta is at index 0, the newest delta is the last one. +type Deltas []Delta + +// Oldest is a convenience function that returns the oldest delta, or +// nil if there are no deltas. +func (d Deltas) Oldest() *Delta { + if len(d) > 0 { + return &d[0] + } + return nil +} + +// Newest is a convenience function that returns the newest delta, or +// nil if there are no deltas. +func (d Deltas) Newest() *Delta { + if n := len(d); n > 0 { + return &d[n-1] + } + return nil +} + +// copyDeltas returns a shallow copy of d; that is, it copies the slice but not +// the objects in the slice. This allows Get/List to return an object that we +// know won't be clobbered by a subsequent call to a delta compressor. +func copyDeltas(d Deltas) Deltas { + d2 := make(Deltas, len(d)) + copy(d2, d) + return d2 +} + +// DeletedFinalStateUnknown is placed into a DeltaFIFO in the case where +// an object was deleted but the watch deletion event was missed. In this +// case we don't know the final "resting" state of the object, so there's +// a chance the included `Obj` is stale. +type DeletedFinalStateUnknown struct { + Key string + Obj interface{} +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/doc.go b/vendor/k8s.io/client-go/1.5/tools/cache/doc.go new file mode 100644 index 0000000000..72b39f2f92 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package cache is a client-side caching mechanism. It is useful for +// reducing the number of server calls you'd otherwise need to make. +// Reflector watches a server and updates a Store. Two stores are provided; +// one that simply caches objects (for example, to allow a scheduler to +// list currently available nodes), and one that additionally acts as +// a FIFO queue (for example, to allow a scheduler to process incoming +// pods). +package cache // import "k8s.io/client-go/1.5/tools/cache" diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache.go b/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache.go new file mode 100644 index 0000000000..07f5dee40b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache.go @@ -0,0 +1,208 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + "time" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/util/clock" +) + +// ExpirationCache implements the store interface +// 1. All entries are automatically time stamped on insert +// a. The key is computed based off the original item/keyFunc +// b. The value inserted under that key is the timestamped item +// 2. Expiration happens lazily on read based on the expiration policy +// a. No item can be inserted into the store while we're expiring +// *any* item in the cache. +// 3. Time-stamps are stripped off unexpired entries before return +// Note that the ExpirationCache is inherently slower than a normal +// threadSafeStore because it takes a write lock every time it checks if +// an item has expired. +type ExpirationCache struct { + cacheStorage ThreadSafeStore + keyFunc KeyFunc + clock clock.Clock + expirationPolicy ExpirationPolicy + // expirationLock is a write lock used to guarantee that we don't clobber + // newly inserted objects because of a stale expiration timestamp comparison + expirationLock sync.Mutex +} + +// ExpirationPolicy dictates when an object expires. Currently only abstracted out +// so unittests don't rely on the system clock. +type ExpirationPolicy interface { + IsExpired(obj *timestampedEntry) bool +} + +// TTLPolicy implements a ttl based ExpirationPolicy. +type TTLPolicy struct { + // >0: Expire entries with an age > ttl + // <=0: Don't expire any entry + Ttl time.Duration + + // Clock used to calculate ttl expiration + Clock clock.Clock +} + +// IsExpired returns true if the given object is older than the ttl, or it can't +// determine its age. +func (p *TTLPolicy) IsExpired(obj *timestampedEntry) bool { + return p.Ttl > 0 && p.Clock.Since(obj.timestamp) > p.Ttl +} + +// timestampedEntry is the only type allowed in a ExpirationCache. +type timestampedEntry struct { + obj interface{} + timestamp time.Time +} + +// getTimestampedEntry returns the timestampedEntry stored under the given key. +func (c *ExpirationCache) getTimestampedEntry(key string) (*timestampedEntry, bool) { + item, _ := c.cacheStorage.Get(key) + if tsEntry, ok := item.(*timestampedEntry); ok { + return tsEntry, true + } + return nil, false +} + +// getOrExpire retrieves the object from the timestampedEntry if and only if it hasn't +// already expired. It holds a write lock across deletion. +func (c *ExpirationCache) getOrExpire(key string) (interface{}, bool) { + // Prevent all inserts from the time we deem an item as "expired" to when we + // delete it, so an un-expired item doesn't sneak in under the same key, just + // before the Delete. + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + timestampedItem, exists := c.getTimestampedEntry(key) + if !exists { + return nil, false + } + if c.expirationPolicy.IsExpired(timestampedItem) { + glog.V(4).Infof("Entry %v: %+v has expired", key, timestampedItem.obj) + c.cacheStorage.Delete(key) + return nil, false + } + return timestampedItem.obj, true +} + +// GetByKey returns the item stored under the key, or sets exists=false. +func (c *ExpirationCache) GetByKey(key string) (interface{}, bool, error) { + obj, exists := c.getOrExpire(key) + return obj, exists, nil +} + +// Get returns unexpired items. It purges the cache of expired items in the +// process. +func (c *ExpirationCache) Get(obj interface{}) (interface{}, bool, error) { + key, err := c.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + obj, exists := c.getOrExpire(key) + return obj, exists, nil +} + +// List retrieves a list of unexpired items. It purges the cache of expired +// items in the process. +func (c *ExpirationCache) List() []interface{} { + items := c.cacheStorage.List() + + list := make([]interface{}, 0, len(items)) + for _, item := range items { + obj := item.(*timestampedEntry).obj + if key, err := c.keyFunc(obj); err != nil { + list = append(list, obj) + } else if obj, exists := c.getOrExpire(key); exists { + list = append(list, obj) + } + } + return list +} + +// ListKeys returns a list of all keys in the expiration cache. +func (c *ExpirationCache) ListKeys() []string { + return c.cacheStorage.ListKeys() +} + +// Add timestamps an item and inserts it into the cache, overwriting entries +// that might exist under the same key. +func (c *ExpirationCache) Add(obj interface{}) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Add(key, ×tampedEntry{obj, c.clock.Now()}) + return nil +} + +// Update has not been implemented yet for lack of a use case, so this method +// simply calls `Add`. This effectively refreshes the timestamp. +func (c *ExpirationCache) Update(obj interface{}) error { + return c.Add(obj) +} + +// Delete removes an item from the cache. +func (c *ExpirationCache) Delete(obj interface{}) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Delete(key) + return nil +} + +// Replace will convert all items in the given list to TimestampedEntries +// before attempting the replace operation. The replace operation will +// delete the contents of the ExpirationCache `c`. +func (c *ExpirationCache) Replace(list []interface{}, resourceVersion string) error { + c.expirationLock.Lock() + defer c.expirationLock.Unlock() + items := map[string]interface{}{} + ts := c.clock.Now() + for _, item := range list { + key, err := c.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = ×tampedEntry{item, ts} + } + c.cacheStorage.Replace(items, resourceVersion) + return nil +} + +// Resync will touch all objects to put them into the processing queue +func (c *ExpirationCache) Resync() error { + return c.cacheStorage.Resync() +} + +// NewTTLStore creates and returns a ExpirationCache with a TTLPolicy +func NewTTLStore(keyFunc KeyFunc, ttl time.Duration) Store { + return &ExpirationCache{ + cacheStorage: NewThreadSafeStore(Indexers{}, Indices{}), + keyFunc: keyFunc, + clock: clock.RealClock{}, + expirationPolicy: &TTLPolicy{ttl, clock.RealClock{}}, + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache_fakes.go b/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache_fakes.go new file mode 100644 index 0000000000..53a346ce46 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/expiration_cache_fakes.go @@ -0,0 +1,54 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "k8s.io/client-go/1.5/pkg/util/clock" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +type fakeThreadSafeMap struct { + ThreadSafeStore + deletedKeys chan<- string +} + +func (c *fakeThreadSafeMap) Delete(key string) { + if c.deletedKeys != nil { + c.ThreadSafeStore.Delete(key) + c.deletedKeys <- key + } +} + +type FakeExpirationPolicy struct { + NeverExpire sets.String + RetrieveKeyFunc KeyFunc +} + +func (p *FakeExpirationPolicy) IsExpired(obj *timestampedEntry) bool { + key, _ := p.RetrieveKeyFunc(obj) + return !p.NeverExpire.Has(key) +} + +func NewFakeExpirationStore(keyFunc KeyFunc, deletedKeys chan<- string, expirationPolicy ExpirationPolicy, cacheClock clock.Clock) Store { + cacheStorage := NewThreadSafeStore(Indexers{}, Indices{}) + return &ExpirationCache{ + cacheStorage: &fakeThreadSafeMap{cacheStorage, deletedKeys}, + keyFunc: keyFunc, + clock: cacheClock, + expirationPolicy: expirationPolicy, + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/fake_custom_store.go b/vendor/k8s.io/client-go/1.5/tools/cache/fake_custom_store.go new file mode 100644 index 0000000000..8d71c24749 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/fake_custom_store.go @@ -0,0 +1,102 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +// FakeStore lets you define custom functions for store operations +type FakeCustomStore struct { + AddFunc func(obj interface{}) error + UpdateFunc func(obj interface{}) error + DeleteFunc func(obj interface{}) error + ListFunc func() []interface{} + ListKeysFunc func() []string + GetFunc func(obj interface{}) (item interface{}, exists bool, err error) + GetByKeyFunc func(key string) (item interface{}, exists bool, err error) + ReplaceFunc func(list []interface{}, resourceVerion string) error + ResyncFunc func() error +} + +// Add calls the custom Add function if defined +func (f *FakeCustomStore) Add(obj interface{}) error { + if f.AddFunc != nil { + return f.AddFunc(obj) + } + return nil +} + +// Update calls the custom Update function if defined +func (f *FakeCustomStore) Update(obj interface{}) error { + if f.UpdateFunc != nil { + return f.Update(obj) + } + return nil +} + +// Delete calls the custom Delete function if defined +func (f *FakeCustomStore) Delete(obj interface{}) error { + if f.DeleteFunc != nil { + return f.DeleteFunc(obj) + } + return nil +} + +// List calls the custom List function if defined +func (f *FakeCustomStore) List() []interface{} { + if f.ListFunc != nil { + return f.ListFunc() + } + return nil +} + +// ListKeys calls the custom ListKeys function if defined +func (f *FakeCustomStore) ListKeys() []string { + if f.ListKeysFunc != nil { + return f.ListKeysFunc() + } + return nil +} + +// Get calls the custom Get function if defined +func (f *FakeCustomStore) Get(obj interface{}) (item interface{}, exists bool, err error) { + if f.GetFunc != nil { + return f.GetFunc(obj) + } + return nil, false, nil +} + +// GetByKey calls the custom GetByKey function if defined +func (f *FakeCustomStore) GetByKey(key string) (item interface{}, exists bool, err error) { + if f.GetByKeyFunc != nil { + return f.GetByKeyFunc(key) + } + return nil, false, nil +} + +// Replace calls the custom Replace function if defined +func (f *FakeCustomStore) Replace(list []interface{}, resourceVersion string) error { + if f.ReplaceFunc != nil { + return f.ReplaceFunc(list, resourceVersion) + } + return nil +} + +// Resync calls the custom Resync function if defined +func (f *FakeCustomStore) Resync() error { + if f.ResyncFunc != nil { + return f.ResyncFunc() + } + return nil +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/fifo.go b/vendor/k8s.io/client-go/1.5/tools/cache/fifo.go new file mode 100644 index 0000000000..d0c002c528 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/fifo.go @@ -0,0 +1,321 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "sync" + + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// PopProcessFunc is passed to Pop() method of Queue interface. +// It is supposed to process the element popped from the queue. +type PopProcessFunc func(interface{}) error + +// ErrRequeue may be returned by a PopProcessFunc to safely requeue +// the current item. The value of Err will be returned from Pop. +type ErrRequeue struct { + // Err is returned by the Pop function + Err error +} + +func (e ErrRequeue) Error() string { + if e.Err == nil { + return "the popped item should be requeued without returning an error" + } + return e.Err.Error() +} + +// Queue is exactly like a Store, but has a Pop() method too. +type Queue interface { + Store + + // Pop blocks until it has something to process. + // It returns the object that was process and the result of processing. + // The PopProcessFunc may return an ErrRequeue{...} to indicate the item + // should be requeued before releasing the lock on the queue. + Pop(PopProcessFunc) (interface{}, error) + + // AddIfNotPresent adds a value previously + // returned by Pop back into the queue as long + // as nothing else (presumably more recent) + // has since been added. + AddIfNotPresent(interface{}) error + + // Return true if the first batch of items has been popped + HasSynced() bool +} + +// Helper function for popping from Queue. +// WARNING: Do NOT use this function in non-test code to avoid races +// unless you really really really really know what you are doing. +func Pop(queue Queue) interface{} { + var result interface{} + queue.Pop(func(obj interface{}) error { + result = obj + return nil + }) + return result +} + +// FIFO receives adds and updates from a Reflector, and puts them in a queue for +// FIFO order processing. If multiple adds/updates of a single item happen while +// an item is in the queue before it has been processed, it will only be +// processed once, and when it is processed, the most recent version will be +// processed. This can't be done with a channel. +// +// FIFO solves this use case: +// * You want to process every object (exactly) once. +// * You want to process the most recent version of the object when you process it. +// * You do not want to process deleted objects, they should be removed from the queue. +// * You do not want to periodically reprocess objects. +// Compare with DeltaFIFO for other use cases. +type FIFO struct { + lock sync.RWMutex + cond sync.Cond + // We depend on the property that items in the set are in the queue and vice versa. + items map[string]interface{} + queue []string + + // populated is true if the first batch of items inserted by Replace() has been populated + // or Delete/Add/Update was called first. + populated bool + // initialPopulationCount is the number of items inserted by the first call of Replace() + initialPopulationCount int + + // keyFunc is used to make the key used for queued item insertion and retrieval, and + // should be deterministic. + keyFunc KeyFunc +} + +var ( + _ = Queue(&FIFO{}) // FIFO is a Queue +) + +// Return true if an Add/Update/Delete/AddIfNotPresent are called first, +// or an Update called first but the first batch of items inserted by Replace() has been popped +func (f *FIFO) HasSynced() bool { + f.lock.Lock() + defer f.lock.Unlock() + return f.populated && f.initialPopulationCount == 0 +} + +// Add inserts an item, and puts it in the queue. The item is only enqueued +// if it doesn't already exist in the set. +func (f *FIFO) Add(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + if _, exists := f.items[id]; !exists { + f.queue = append(f.queue, id) + } + f.items[id] = obj + f.cond.Broadcast() + return nil +} + +// AddIfNotPresent inserts an item, and puts it in the queue. If the item is already +// present in the set, it is neither enqueued nor added to the set. +// +// This is useful in a single producer/consumer scenario so that the consumer can +// safely retry items without contending with the producer and potentially enqueueing +// stale items. +func (f *FIFO) AddIfNotPresent(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.addIfNotPresent(id, obj) + return nil +} + +// addIfNotPresent assumes the fifo lock is already held and adds the the provided +// item to the queue under id if it does not already exist. +func (f *FIFO) addIfNotPresent(id string, obj interface{}) { + f.populated = true + if _, exists := f.items[id]; exists { + return + } + + f.queue = append(f.queue, id) + f.items[id] = obj + f.cond.Broadcast() +} + +// Update is the same as Add in this implementation. +func (f *FIFO) Update(obj interface{}) error { + return f.Add(obj) +} + +// Delete removes an item. It doesn't add it to the queue, because +// this implementation assumes the consumer only cares about the objects, +// not the order in which they were created/added. +func (f *FIFO) Delete(obj interface{}) error { + id, err := f.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + f.lock.Lock() + defer f.lock.Unlock() + f.populated = true + delete(f.items, id) + return err +} + +// List returns a list of all the items. +func (f *FIFO) List() []interface{} { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]interface{}, 0, len(f.items)) + for _, item := range f.items { + list = append(list, item) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the FIFO. +func (f *FIFO) ListKeys() []string { + f.lock.RLock() + defer f.lock.RUnlock() + list := make([]string, 0, len(f.items)) + for key := range f.items { + list = append(list, key) + } + return list +} + +// Get returns the requested item, or sets exists=false. +func (f *FIFO) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := f.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return f.GetByKey(key) +} + +// GetByKey returns the requested item, or sets exists=false. +func (f *FIFO) GetByKey(key string) (item interface{}, exists bool, err error) { + f.lock.RLock() + defer f.lock.RUnlock() + item, exists = f.items[key] + return item, exists, nil +} + +// Pop waits until an item is ready and processes it. If multiple items are +// ready, they are returned in the order in which they were added/updated. +// The item is removed from the queue (and the store) before it is processed, +// so if you don't successfully process it, it should be added back with +// AddIfNotPresent(). process function is called under lock, so it is safe +// update data structures in it that need to be in sync with the queue. +func (f *FIFO) Pop(process PopProcessFunc) (interface{}, error) { + f.lock.Lock() + defer f.lock.Unlock() + for { + for len(f.queue) == 0 { + f.cond.Wait() + } + id := f.queue[0] + f.queue = f.queue[1:] + if f.initialPopulationCount > 0 { + f.initialPopulationCount-- + } + item, ok := f.items[id] + if !ok { + // Item may have been deleted subsequently. + continue + } + delete(f.items, id) + err := process(item) + if e, ok := err.(ErrRequeue); ok { + f.addIfNotPresent(id, item) + err = e.Err + } + return item, err + } +} + +// Replace will delete the contents of 'f', using instead the given map. +// 'f' takes ownership of the map, you should not reference the map again +// after calling this function. f's queue is reset, too; upon return, it +// will contain the items in the map, in no particular order. +func (f *FIFO) Replace(list []interface{}, resourceVersion string) error { + items := map[string]interface{}{} + for _, item := range list { + key, err := f.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = item + } + + f.lock.Lock() + defer f.lock.Unlock() + + if !f.populated { + f.populated = true + f.initialPopulationCount = len(items) + } + + f.items = items + f.queue = f.queue[:0] + for id := range items { + f.queue = append(f.queue, id) + } + if len(f.queue) > 0 { + f.cond.Broadcast() + } + return nil +} + +// Resync will touch all objects to put them into the processing queue +func (f *FIFO) Resync() error { + f.lock.Lock() + defer f.lock.Unlock() + + inQueue := sets.NewString() + for _, id := range f.queue { + inQueue.Insert(id) + } + for id := range f.items { + if !inQueue.Has(id) { + f.queue = append(f.queue, id) + } + } + if len(f.queue) > 0 { + f.cond.Broadcast() + } + return nil +} + +// NewFIFO returns a Store which can be used to queue up items to +// process. +func NewFIFO(keyFunc KeyFunc) *FIFO { + f := &FIFO{ + items: map[string]interface{}{}, + queue: []string{}, + keyFunc: keyFunc, + } + f.cond.L = &f.lock + return f +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/index.go b/vendor/k8s.io/client-go/1.5/tools/cache/index.go new file mode 100644 index 0000000000..bc257ae03e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/index.go @@ -0,0 +1,85 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// Indexer is a storage interface that lets you list objects using multiple indexing functions +type Indexer interface { + Store + // Retrieve list of objects that match on the named indexing function + Index(indexName string, obj interface{}) ([]interface{}, error) + // ListIndexFuncValues returns the list of generated values of an Index func + ListIndexFuncValues(indexName string) []string + // ByIndex lists object that match on the named indexing function with the exact key + ByIndex(indexName, indexKey string) ([]interface{}, error) + // GetIndexer return the indexers + GetIndexers() Indexers + + // AddIndexers adds more indexers to this store. If you call this after you already have data + // in the store, the results are undefined. + AddIndexers(newIndexers Indexers) error +} + +// IndexFunc knows how to provide an indexed value for an object. +type IndexFunc func(obj interface{}) ([]string, error) + +// IndexFuncToKeyFuncAdapter adapts an indexFunc to a keyFunc. This is only useful if your index function returns +// unique values for every object. This is conversion can create errors when more than one key is found. You +// should prefer to make proper key and index functions. +func IndexFuncToKeyFuncAdapter(indexFunc IndexFunc) KeyFunc { + return func(obj interface{}) (string, error) { + indexKeys, err := indexFunc(obj) + if err != nil { + return "", err + } + if len(indexKeys) > 1 { + return "", fmt.Errorf("too many keys: %v", indexKeys) + } + if len(indexKeys) == 0 { + return "", fmt.Errorf("unexpected empty indexKeys") + } + return indexKeys[0], nil + } +} + +const ( + NamespaceIndex string = "namespace" +) + +// MetaNamespaceIndexFunc is a default index function that indexes based on an object's namespace +func MetaNamespaceIndexFunc(obj interface{}) ([]string, error) { + meta, err := meta.Accessor(obj) + if err != nil { + return []string{""}, fmt.Errorf("object has no meta: %v", err) + } + return []string{meta.GetNamespace()}, nil +} + +// Index maps the indexed value to a set of keys in the store that match on that value +type Index map[string]sets.String + +// Indexers maps a name to a IndexFunc +type Indexers map[string]IndexFunc + +// Indices maps a name to an Index +type Indices map[string]Index diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/listers.go b/vendor/k8s.io/client-go/1.5/tools/cache/listers.go new file mode 100644 index 0000000000..1b607e7732 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/listers.go @@ -0,0 +1,668 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/apis/apps" + "k8s.io/client-go/1.5/pkg/apis/batch" + "k8s.io/client-go/1.5/pkg/apis/certificates" + "k8s.io/client-go/1.5/pkg/apis/extensions" + "k8s.io/client-go/1.5/pkg/apis/policy" + "k8s.io/client-go/1.5/pkg/labels" +) + +// AppendFunc is used to add a matching item to whatever list the caller is using +type AppendFunc func(interface{}) + +func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error { + for _, m := range store.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + return nil +} + +func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selector, appendFn AppendFunc) error { + if namespace == api.NamespaceAll { + for _, m := range indexer.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + return nil + } + + items, err := indexer.Index(NamespaceIndex, api.ObjectMeta{Namespace: namespace}) + if err != nil { + // Ignore error; do slow search without index. + glog.Warningf("can not retrieve list of objects using index : %v", err) + for _, m := range indexer.List() { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if metadata.GetNamespace() == namespace && selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + + } + return nil + } + for _, m := range items { + metadata, err := meta.Accessor(m) + if err != nil { + return err + } + if selector.Matches(labels.Set(metadata.GetLabels())) { + appendFn(m) + } + } + + return nil +} + +// TODO: generate these classes and methods for all resources of interest using +// a script. Can use "go generate" once 1.4 is supported by all users. + +// NodeConditionPredicate is a function that indicates whether the given node's conditions meet +// some set of criteria defined by the function. +type NodeConditionPredicate func(node *api.Node) bool + +// StoreToNodeLister makes a Store have the List method of the client.NodeInterface +// The Store must contain (only) Nodes. +type StoreToNodeLister struct { + Store +} + +func (s *StoreToNodeLister) List() (machines api.NodeList, err error) { + for _, m := range s.Store.List() { + machines.Items = append(machines.Items, *(m.(*api.Node))) + } + return machines, nil +} + +// NodeCondition returns a storeToNodeConditionLister +func (s *StoreToNodeLister) NodeCondition(predicate NodeConditionPredicate) storeToNodeConditionLister { + // TODO: Move this filtering server side. Currently our selectors don't facilitate searching through a list so we + // have the reflector filter out the Unschedulable field and sift through node conditions in the lister. + return storeToNodeConditionLister{s.Store, predicate} +} + +// storeToNodeConditionLister filters and returns nodes matching the given type and status from the store. +type storeToNodeConditionLister struct { + store Store + predicate NodeConditionPredicate +} + +// List returns a list of nodes that match the conditions defined by the predicate functions in the storeToNodeConditionLister. +func (s storeToNodeConditionLister) List() (nodes []*api.Node, err error) { + for _, m := range s.store.List() { + node := m.(*api.Node) + if s.predicate(node) { + nodes = append(nodes, node) + } else { + glog.V(5).Infof("Node %s matches none of the conditions", node.Name) + } + } + return +} + +// StoreToDeploymentLister gives a store List and Exists methods. The store must contain only Deployments. +type StoreToDeploymentLister struct { + Indexer +} + +// Exists checks if the given deployment exists in the store. +func (s *StoreToDeploymentLister) Exists(deployment *extensions.Deployment) (bool, error) { + _, exists, err := s.Indexer.Get(deployment) + if err != nil { + return false, err + } + return exists, nil +} + +// StoreToDeploymentLister lists all deployments in the store. +// TODO: converge on the interface in pkg/client +func (s *StoreToDeploymentLister) List() (deployments []extensions.Deployment, err error) { + for _, c := range s.Indexer.List() { + deployments = append(deployments, *(c.(*extensions.Deployment))) + } + return deployments, nil +} + +// GetDeploymentsForReplicaSet returns a list of deployments managing a replica set. Returns an error only if no matching deployments are found. +func (s *StoreToDeploymentLister) GetDeploymentsForReplicaSet(rs *extensions.ReplicaSet) (deployments []extensions.Deployment, err error) { + if len(rs.Labels) == 0 { + err = fmt.Errorf("no deployments found for ReplicaSet %v because it has no labels", rs.Name) + return + } + + // TODO: MODIFY THIS METHOD so that it checks for the podTemplateSpecHash label + dList, err := s.Deployments(rs.Namespace).List(labels.Everything()) + if err != nil { + return + } + for _, d := range dList { + selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid label selector: %v", err) + } + // If a deployment with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(rs.Labels)) { + continue + } + deployments = append(deployments, d) + } + if len(deployments) == 0 { + err = fmt.Errorf("could not find deployments set for ReplicaSet %s in namespace %s with labels: %v", rs.Name, rs.Namespace, rs.Labels) + } + return +} + +type storeToDeploymentNamespacer struct { + indexer Indexer + namespace string +} + +// storeToDeploymentNamespacer lists deployments under its namespace in the store. +func (s storeToDeploymentNamespacer) List(selector labels.Selector) (deployments []extensions.Deployment, err error) { + if s.namespace == api.NamespaceAll { + for _, m := range s.indexer.List() { + d := *(m.(*extensions.Deployment)) + if selector.Matches(labels.Set(d.Labels)) { + deployments = append(deployments, d) + } + } + return + } + + key := &extensions.Deployment{ObjectMeta: api.ObjectMeta{Namespace: s.namespace}} + items, err := s.indexer.Index(NamespaceIndex, key) + if err != nil { + // Ignore error; do slow search without index. + glog.Warningf("can not retrieve list of objects using index : %v", err) + for _, m := range s.indexer.List() { + d := *(m.(*extensions.Deployment)) + if s.namespace == d.Namespace && selector.Matches(labels.Set(d.Labels)) { + deployments = append(deployments, d) + } + } + return deployments, nil + } + for _, m := range items { + d := *(m.(*extensions.Deployment)) + if selector.Matches(labels.Set(d.Labels)) { + deployments = append(deployments, d) + } + } + return +} + +func (s *StoreToDeploymentLister) Deployments(namespace string) storeToDeploymentNamespacer { + return storeToDeploymentNamespacer{s.Indexer, namespace} +} + +// GetDeploymentsForPods returns a list of deployments managing a pod. Returns an error only if no matching deployments are found. +func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *api.Pod) (deployments []extensions.Deployment, err error) { + if len(pod.Labels) == 0 { + err = fmt.Errorf("no deployments found for Pod %v because it has no labels", pod.Name) + return + } + + if len(pod.Labels[extensions.DefaultDeploymentUniqueLabelKey]) == 0 { + return + } + + dList, err := s.Deployments(pod.Namespace).List(labels.Everything()) + if err != nil { + return + } + for _, d := range dList { + selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector) + if err != nil { + return nil, fmt.Errorf("invalid label selector: %v", err) + } + // If a deployment with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + deployments = append(deployments, d) + } + if len(deployments) == 0 { + err = fmt.Errorf("could not find deployments set for Pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToReplicaSetLister gives a store List and Exists methods. The store must contain only ReplicaSets. +type StoreToReplicaSetLister struct { + Store +} + +// Exists checks if the given ReplicaSet exists in the store. +func (s *StoreToReplicaSetLister) Exists(rs *extensions.ReplicaSet) (bool, error) { + _, exists, err := s.Store.Get(rs) + if err != nil { + return false, err + } + return exists, nil +} + +// List lists all ReplicaSets in the store. +// TODO: converge on the interface in pkg/client +func (s *StoreToReplicaSetLister) List() (rss []extensions.ReplicaSet, err error) { + for _, rs := range s.Store.List() { + rss = append(rss, *(rs.(*extensions.ReplicaSet))) + } + return rss, nil +} + +type storeReplicaSetsNamespacer struct { + store Store + namespace string +} + +func (s storeReplicaSetsNamespacer) List(selector labels.Selector) (rss []extensions.ReplicaSet, err error) { + for _, c := range s.store.List() { + rs := *(c.(*extensions.ReplicaSet)) + if s.namespace == api.NamespaceAll || s.namespace == rs.Namespace { + if selector.Matches(labels.Set(rs.Labels)) { + rss = append(rss, rs) + } + } + } + return +} + +func (s storeReplicaSetsNamespacer) Get(name string) (*extensions.ReplicaSet, error) { + obj, exists, err := s.store.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(extensions.Resource("replicaset"), name) + } + return obj.(*extensions.ReplicaSet), nil +} + +func (s *StoreToReplicaSetLister) ReplicaSets(namespace string) storeReplicaSetsNamespacer { + return storeReplicaSetsNamespacer{s.Store, namespace} +} + +// GetPodReplicaSets returns a list of ReplicaSets managing a pod. Returns an error only if no matching ReplicaSets are found. +func (s *StoreToReplicaSetLister) GetPodReplicaSets(pod *api.Pod) (rss []extensions.ReplicaSet, err error) { + var selector labels.Selector + var rs extensions.ReplicaSet + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no ReplicaSets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + rs = *m.(*extensions.ReplicaSet) + if rs.Namespace != pod.Namespace { + continue + } + selector, err = unversioned.LabelSelectorAsSelector(rs.Spec.Selector) + if err != nil { + err = fmt.Errorf("invalid selector: %v", err) + return + } + + // If a ReplicaSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + rss = append(rss, rs) + } + if len(rss) == 0 { + err = fmt.Errorf("could not find ReplicaSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToDaemonSetLister gives a store List and Exists methods. The store must contain only DaemonSets. +type StoreToDaemonSetLister struct { + Store +} + +// Exists checks if the given daemon set exists in the store. +func (s *StoreToDaemonSetLister) Exists(ds *extensions.DaemonSet) (bool, error) { + _, exists, err := s.Store.Get(ds) + if err != nil { + return false, err + } + return exists, nil +} + +// List lists all daemon sets in the store. +// TODO: converge on the interface in pkg/client +func (s *StoreToDaemonSetLister) List() (dss extensions.DaemonSetList, err error) { + for _, c := range s.Store.List() { + dss.Items = append(dss.Items, *(c.(*extensions.DaemonSet))) + } + return dss, nil +} + +// GetPodDaemonSets returns a list of daemon sets managing a pod. +// Returns an error if and only if no matching daemon sets are found. +func (s *StoreToDaemonSetLister) GetPodDaemonSets(pod *api.Pod) (daemonSets []extensions.DaemonSet, err error) { + var selector labels.Selector + var daemonSet extensions.DaemonSet + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no daemon sets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + daemonSet = *m.(*extensions.DaemonSet) + if daemonSet.Namespace != pod.Namespace { + continue + } + selector, err = unversioned.LabelSelectorAsSelector(daemonSet.Spec.Selector) + if err != nil { + // this should not happen if the DaemonSet passed validation + return nil, err + } + + // If a daemonSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + daemonSets = append(daemonSets, daemonSet) + } + if len(daemonSets) == 0 { + err = fmt.Errorf("could not find daemon set for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToEndpointsLister makes a Store that lists endpoints. +type StoreToEndpointsLister struct { + Store +} + +// List lists all endpoints in the store. +func (s *StoreToEndpointsLister) List() (services api.EndpointsList, err error) { + for _, m := range s.Store.List() { + services.Items = append(services.Items, *(m.(*api.Endpoints))) + } + return services, nil +} + +// GetServiceEndpoints returns the endpoints of a service, matched on service name. +func (s *StoreToEndpointsLister) GetServiceEndpoints(svc *api.Service) (ep api.Endpoints, err error) { + for _, m := range s.Store.List() { + ep = *m.(*api.Endpoints) + if svc.Name == ep.Name && svc.Namespace == ep.Namespace { + return ep, nil + } + } + err = fmt.Errorf("could not find endpoints for service: %v", svc.Name) + return +} + +// StoreToJobLister gives a store List and Exists methods. The store must contain only Jobs. +type StoreToJobLister struct { + Store +} + +// Exists checks if the given job exists in the store. +func (s *StoreToJobLister) Exists(job *batch.Job) (bool, error) { + _, exists, err := s.Store.Get(job) + if err != nil { + return false, err + } + return exists, nil +} + +// StoreToJobLister lists all jobs in the store. +func (s *StoreToJobLister) List() (jobs batch.JobList, err error) { + for _, c := range s.Store.List() { + jobs.Items = append(jobs.Items, *(c.(*batch.Job))) + } + return jobs, nil +} + +// GetPodJobs returns a list of jobs managing a pod. Returns an error only if no matching jobs are found. +func (s *StoreToJobLister) GetPodJobs(pod *api.Pod) (jobs []batch.Job, err error) { + var selector labels.Selector + var job batch.Job + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no jobs found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + job = *m.(*batch.Job) + if job.Namespace != pod.Namespace { + continue + } + + selector, _ = unversioned.LabelSelectorAsSelector(job.Spec.Selector) + if !selector.Matches(labels.Set(pod.Labels)) { + continue + } + jobs = append(jobs, job) + } + if len(jobs) == 0 { + err = fmt.Errorf("could not find jobs for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// Typed wrapper around a store of PersistentVolumes +type StoreToPVFetcher struct { + Store +} + +// GetPersistentVolumeInfo returns cached data for the PersistentVolume 'id'. +func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*api.PersistentVolume, error) { + o, exists, err := s.Get(&api.PersistentVolume{ObjectMeta: api.ObjectMeta{Name: id}}) + + if err != nil { + return nil, fmt.Errorf("error retrieving PersistentVolume '%v' from cache: %v", id, err) + } + + if !exists { + return nil, fmt.Errorf("PersistentVolume '%v' not found", id) + } + + return o.(*api.PersistentVolume), nil +} + +// Typed wrapper around a store of PersistentVolumeClaims +type StoreToPVCFetcher struct { + Store +} + +// GetPersistentVolumeClaimInfo returns cached data for the PersistentVolumeClaim 'id'. +func (s *StoreToPVCFetcher) GetPersistentVolumeClaimInfo(namespace string, id string) (*api.PersistentVolumeClaim, error) { + o, exists, err := s.Get(&api.PersistentVolumeClaim{ObjectMeta: api.ObjectMeta{Namespace: namespace, Name: id}}) + if err != nil { + return nil, fmt.Errorf("error retrieving PersistentVolumeClaim '%s/%s' from cache: %v", namespace, id, err) + } + + if !exists { + return nil, fmt.Errorf("PersistentVolumeClaim '%s/%s' not found", namespace, id) + } + + return o.(*api.PersistentVolumeClaim), nil +} + +// StoreToPetSetLister gives a store List and Exists methods. The store must contain only PetSets. +type StoreToPetSetLister struct { + Store +} + +// Exists checks if the given PetSet exists in the store. +func (s *StoreToPetSetLister) Exists(ps *apps.PetSet) (bool, error) { + _, exists, err := s.Store.Get(ps) + if err != nil { + return false, err + } + return exists, nil +} + +// List lists all PetSets in the store. +func (s *StoreToPetSetLister) List() (psList []apps.PetSet, err error) { + for _, ps := range s.Store.List() { + psList = append(psList, *(ps.(*apps.PetSet))) + } + return psList, nil +} + +type storePetSetsNamespacer struct { + store Store + namespace string +} + +func (s *StoreToPetSetLister) PetSets(namespace string) storePetSetsNamespacer { + return storePetSetsNamespacer{s.Store, namespace} +} + +// GetPodPetSets returns a list of PetSets managing a pod. Returns an error only if no matching PetSets are found. +func (s *StoreToPetSetLister) GetPodPetSets(pod *api.Pod) (psList []apps.PetSet, err error) { + var selector labels.Selector + var ps apps.PetSet + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no PetSets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + ps = *m.(*apps.PetSet) + if ps.Namespace != pod.Namespace { + continue + } + selector, err = unversioned.LabelSelectorAsSelector(ps.Spec.Selector) + if err != nil { + err = fmt.Errorf("invalid selector: %v", err) + return + } + + // If a PetSet with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + psList = append(psList, ps) + } + if len(psList) == 0 { + err = fmt.Errorf("could not find PetSet for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} + +// StoreToCertificateRequestLister gives a store List and Exists methods. The store must contain only CertificateRequests. +type StoreToCertificateRequestLister struct { + Store +} + +// Exists checks if the given csr exists in the store. +func (s *StoreToCertificateRequestLister) Exists(csr *certificates.CertificateSigningRequest) (bool, error) { + _, exists, err := s.Store.Get(csr) + if err != nil { + return false, err + } + return exists, nil +} + +// StoreToCertificateRequestLister lists all csrs in the store. +func (s *StoreToCertificateRequestLister) List() (csrs certificates.CertificateSigningRequestList, err error) { + for _, c := range s.Store.List() { + csrs.Items = append(csrs.Items, *(c.(*certificates.CertificateSigningRequest))) + } + return csrs, nil +} + +// IndexerToNamespaceLister gives an Indexer List method +type IndexerToNamespaceLister struct { + Indexer +} + +// List returns a list of namespaces +func (i *IndexerToNamespaceLister) List(selector labels.Selector) (namespaces []*api.Namespace, err error) { + for _, m := range i.Indexer.List() { + namespace := m.(*api.Namespace) + if selector.Matches(labels.Set(namespace.Labels)) { + namespaces = append(namespaces, namespace) + } + } + + return namespaces, nil +} + +type StoreToPodDisruptionBudgetLister struct { + Store +} + +// GetPodPodDisruptionBudgets returns a list of PodDisruptionBudgets matching a pod. Returns an error only if no matching PodDisruptionBudgets are found. +func (s *StoreToPodDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *api.Pod) (pdbList []policy.PodDisruptionBudget, err error) { + var selector labels.Selector + + if len(pod.Labels) == 0 { + err = fmt.Errorf("no PodDisruptionBudgets found for pod %v because it has no labels", pod.Name) + return + } + + for _, m := range s.Store.List() { + pdb, ok := m.(*policy.PodDisruptionBudget) + if !ok { + glog.Errorf("Unexpected: %v is not a PodDisruptionBudget", m) + continue + } + if pdb.Namespace != pod.Namespace { + continue + } + selector, err = unversioned.LabelSelectorAsSelector(pdb.Spec.Selector) + if err != nil { + glog.Warningf("invalid selector: %v", err) + // TODO(mml): add an event to the PDB + continue + } + + // If a PDB with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + pdbList = append(pdbList, *pdb) + } + if len(pdbList) == 0 { + err = fmt.Errorf("could not find PodDisruptionBudget for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/listers_core.go b/vendor/k8s.io/client-go/1.5/tools/cache/listers_core.go new file mode 100644 index 0000000000..854c2a2ca7 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/listers_core.go @@ -0,0 +1,205 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/labels" +) + +// TODO: generate these classes and methods for all resources of interest using +// a script. Can use "go generate" once 1.4 is supported by all users. + +// Lister makes an Index have the List method. The Stores must contain only the expected type +// Example: +// s := cache.NewStore() +// lw := cache.ListWatch{Client: c, FieldSelector: sel, Resource: "pods"} +// r := cache.NewReflector(lw, &api.Pod{}, s).Run() +// l := StoreToPodLister{s} +// l.List() + +// StoreToPodLister helps list pods +type StoreToPodLister struct { + Indexer Indexer +} + +func (s *StoreToPodLister) List(selector labels.Selector) (ret []*api.Pod, err error) { + err = ListAll(s.Indexer, selector, func(m interface{}) { + ret = append(ret, m.(*api.Pod)) + }) + return ret, err +} + +func (s *StoreToPodLister) Pods(namespace string) storePodsNamespacer { + return storePodsNamespacer{Indexer: s.Indexer, namespace: namespace} +} + +type storePodsNamespacer struct { + Indexer Indexer + namespace string +} + +func (s storePodsNamespacer) List(selector labels.Selector) (ret []*api.Pod, err error) { + err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*api.Pod)) + }) + return ret, err +} + +func (s storePodsNamespacer) Get(name string) (*api.Pod, error) { + obj, exists, err := s.Indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(api.Resource("pod"), name) + } + return obj.(*api.Pod), nil +} + +// StoreToServiceLister helps list services +type StoreToServiceLister struct { + Indexer Indexer +} + +func (s *StoreToServiceLister) List(selector labels.Selector) (ret []*api.Service, err error) { + err = ListAll(s.Indexer, selector, func(m interface{}) { + ret = append(ret, m.(*api.Service)) + }) + return ret, err +} + +func (s *StoreToServiceLister) Services(namespace string) storeServicesNamespacer { + return storeServicesNamespacer{s.Indexer, namespace} +} + +type storeServicesNamespacer struct { + indexer Indexer + namespace string +} + +func (s storeServicesNamespacer) List(selector labels.Selector) (ret []*api.Service, err error) { + err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*api.Service)) + }) + return ret, err +} + +func (s storeServicesNamespacer) Get(name string) (*api.Service, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(api.Resource("service"), name) + } + return obj.(*api.Service), nil +} + +// TODO: Move this back to scheduler as a helper function that takes a Store, +// rather than a method of StoreToServiceLister. +func (s *StoreToServiceLister) GetPodServices(pod *api.Pod) (services []*api.Service, err error) { + allServices, err := s.Services(pod.Namespace).List(labels.Everything()) + if err != nil { + return nil, err + } + + for i := range allServices { + service := allServices[i] + if service.Spec.Selector == nil { + // services with nil selectors match nothing, not everything. + continue + } + selector := labels.Set(service.Spec.Selector).AsSelectorPreValidated() + if selector.Matches(labels.Set(pod.Labels)) { + services = append(services, service) + } + } + + return services, nil +} + +// StoreToReplicationControllerLister helps list rcs +type StoreToReplicationControllerLister struct { + Indexer Indexer +} + +func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*api.ReplicationController, err error) { + err = ListAll(s.Indexer, selector, func(m interface{}) { + ret = append(ret, m.(*api.ReplicationController)) + }) + return ret, err +} + +func (s *StoreToReplicationControllerLister) ReplicationControllers(namespace string) storeReplicationControllersNamespacer { + return storeReplicationControllersNamespacer{s.Indexer, namespace} +} + +type storeReplicationControllersNamespacer struct { + indexer Indexer + namespace string +} + +func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*api.ReplicationController, err error) { + err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*api.ReplicationController)) + }) + return ret, err +} + +func (s storeReplicationControllersNamespacer) Get(name string) (*api.ReplicationController, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(api.Resource("replicationcontroller"), name) + } + return obj.(*api.ReplicationController), nil +} + +// GetPodControllers returns a list of replication controllers managing a pod. Returns an error only if no matching controllers are found. +func (s *StoreToReplicationControllerLister) GetPodControllers(pod *api.Pod) (controllers []*api.ReplicationController, err error) { + if len(pod.Labels) == 0 { + err = fmt.Errorf("no controllers found for pod %v because it has no labels", pod.Name) + return + } + + key := &api.ReplicationController{ObjectMeta: api.ObjectMeta{Namespace: pod.Namespace}} + items, err := s.Indexer.Index(NamespaceIndex, key) + if err != nil { + return + } + + for _, m := range items { + rc := m.(*api.ReplicationController) + selector := labels.Set(rc.Spec.Selector).AsSelectorPreValidated() + + // If an rc with a nil or empty selector creeps in, it should match nothing, not everything. + if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) { + continue + } + controllers = append(controllers, rc) + } + if len(controllers) == 0 { + err = fmt.Errorf("could not find controller for pod %s in namespace %s with labels: %v", pod.Name, pod.Namespace, pod.Labels) + } + return +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/listwatch.go b/vendor/k8s.io/client-go/1.5/tools/cache/listwatch.go new file mode 100644 index 0000000000..4790c9c5c4 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/listwatch.go @@ -0,0 +1,86 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "time" + + "k8s.io/client-go/1.5/pkg/api" + "k8s.io/client-go/1.5/pkg/fields" + "k8s.io/client-go/1.5/pkg/runtime" + "k8s.io/client-go/1.5/pkg/watch" + "k8s.io/client-go/1.5/rest" +) + +// ListFunc knows how to list resources +type ListFunc func(options api.ListOptions) (runtime.Object, error) + +// WatchFunc knows how to watch resources +type WatchFunc func(options api.ListOptions) (watch.Interface, error) + +// ListWatch knows how to list and watch a set of apiserver resources. It satisfies the ListerWatcher interface. +// It is a convenience function for users of NewReflector, etc. +// ListFunc and WatchFunc must not be nil +type ListWatch struct { + ListFunc ListFunc + WatchFunc WatchFunc +} + +// Getter interface knows how to access Get method from RESTClient. +type Getter interface { + Get() *rest.Request +} + +// NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector. +func NewListWatchFromClient(c Getter, resource string, namespace string, fieldSelector fields.Selector) *ListWatch { + listFunc := func(options api.ListOptions) (runtime.Object, error) { + return c.Get(). + Namespace(namespace). + Resource(resource). + VersionedParams(&options, api.ParameterCodec). + FieldsSelectorParam(fieldSelector). + Do(). + Get() + } + watchFunc := func(options api.ListOptions) (watch.Interface, error) { + return c.Get(). + Prefix("watch"). + Namespace(namespace). + Resource(resource). + VersionedParams(&options, api.ParameterCodec). + FieldsSelectorParam(fieldSelector). + Watch() + } + return &ListWatch{ListFunc: listFunc, WatchFunc: watchFunc} +} + +func timeoutFromListOptions(options api.ListOptions) time.Duration { + if options.TimeoutSeconds != nil { + return time.Duration(*options.TimeoutSeconds) * time.Second + } + return 0 +} + +// List a set of apiserver resources +func (lw *ListWatch) List(options api.ListOptions) (runtime.Object, error) { + return lw.ListFunc(options) +} + +// Watch a set of apiserver resources +func (lw *ListWatch) Watch(options api.ListOptions) (watch.Interface, error) { + return lw.WatchFunc(options) +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/reflector.go b/vendor/k8s.io/client-go/1.5/tools/cache/reflector.go new file mode 100644 index 0000000000..8dacf3ac13 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/reflector.go @@ -0,0 +1,419 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "errors" + "fmt" + "io" + "math/rand" + "net" + "net/url" + "reflect" + "regexp" + goruntime "runtime" + "runtime/debug" + "strconv" + "strings" + "sync" + "syscall" + "time" + + "github.com/golang/glog" + "k8s.io/client-go/1.5/pkg/api" + apierrs "k8s.io/client-go/1.5/pkg/api/errors" + "k8s.io/client-go/1.5/pkg/api/meta" + "k8s.io/client-go/1.5/pkg/runtime" + utilruntime "k8s.io/client-go/1.5/pkg/util/runtime" + "k8s.io/client-go/1.5/pkg/util/wait" + "k8s.io/client-go/1.5/pkg/watch" +) + +// ListerWatcher is any object that knows how to perform an initial list and start a watch on a resource. +type ListerWatcher interface { + // List should return a list type object; the Items field will be extracted, and the + // ResourceVersion field will be used to start the watch in the right place. + List(options api.ListOptions) (runtime.Object, error) + // Watch should begin a watch at the specified version. + Watch(options api.ListOptions) (watch.Interface, error) +} + +// Reflector watches a specified resource and causes all changes to be reflected in the given store. +type Reflector struct { + // name identifies this reflector. By default it will be a file:line if possible. + name string + + // The type of object we expect to place in the store. + expectedType reflect.Type + // The destination to sync up with the watch source + store Store + // listerWatcher is used to perform lists and watches. + listerWatcher ListerWatcher + // period controls timing between one watch ending and + // the beginning of the next one. + period time.Duration + resyncPeriod time.Duration + // now() returns current time - exposed for testing purposes + now func() time.Time + // lastSyncResourceVersion is the resource version token last + // observed when doing a sync with the underlying store + // it is thread safe, but not synchronized with the underlying store + lastSyncResourceVersion string + // lastSyncResourceVersionMutex guards read/write access to lastSyncResourceVersion + lastSyncResourceVersionMutex sync.RWMutex +} + +var ( + // We try to spread the load on apiserver by setting timeouts for + // watch requests - it is random in [minWatchTimeout, 2*minWatchTimeout]. + // However, it can be modified to avoid periodic resync to break the + // TCP connection. + minWatchTimeout = 5 * time.Minute + // If we are within 'forceResyncThreshold' from the next planned resync + // and are just before issuing Watch(), resync will be forced now. + forceResyncThreshold = 3 * time.Second + // We try to set timeouts for Watch() so that we will finish about + // than 'timeoutThreshold' from next planned periodic resync. + timeoutThreshold = 1 * time.Second +) + +// NewNamespaceKeyedIndexerAndReflector creates an Indexer and a Reflector +// The indexer is configured to key on namespace +func NewNamespaceKeyedIndexerAndReflector(lw ListerWatcher, expectedType interface{}, resyncPeriod time.Duration) (indexer Indexer, reflector *Reflector) { + indexer = NewIndexer(MetaNamespaceKeyFunc, Indexers{"namespace": MetaNamespaceIndexFunc}) + reflector = NewReflector(lw, expectedType, indexer, resyncPeriod) + return indexer, reflector +} + +// NewReflector creates a new Reflector object which will keep the given store up to +// date with the server's contents for the given resource. Reflector promises to +// only put things in the store that have the type of expectedType, unless expectedType +// is nil. If resyncPeriod is non-zero, then lists will be executed after every +// resyncPeriod, so that you can use reflectors to periodically process everything as +// well as incrementally processing the things that change. +func NewReflector(lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector { + return NewNamedReflector(getDefaultReflectorName(internalPackages...), lw, expectedType, store, resyncPeriod) +} + +// NewNamedReflector same as NewReflector, but with a specified name for logging +func NewNamedReflector(name string, lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector { + r := &Reflector{ + name: name, + listerWatcher: lw, + store: store, + expectedType: reflect.TypeOf(expectedType), + period: time.Second, + resyncPeriod: resyncPeriod, + now: time.Now, + } + return r +} + +// internalPackages are packages that ignored when creating a default reflector name. These packages are in the common +// call chains to NewReflector, so they'd be low entropy names for reflectors +var internalPackages = []string{"kubernetes/pkg/client/cache/", "kubernetes/pkg/controller/framework/", "/runtime/asm_"} + +// getDefaultReflectorName walks back through the call stack until we find a caller from outside of the ignoredPackages +// it returns back a shortpath/filename:line to aid in identification of this reflector when it starts logging +func getDefaultReflectorName(ignoredPackages ...string) string { + name := "????" + const maxStack = 10 + for i := 1; i < maxStack; i++ { + _, file, line, ok := goruntime.Caller(i) + if !ok { + file, line, ok = extractStackCreator() + if !ok { + break + } + i += maxStack + } + if hasPackage(file, ignoredPackages) { + continue + } + + file = trimPackagePrefix(file) + name = fmt.Sprintf("%s:%d", file, line) + break + } + return name +} + +// hasPackage returns true if the file is in one of the ignored packages. +func hasPackage(file string, ignoredPackages []string) bool { + for _, ignoredPackage := range ignoredPackages { + if strings.Contains(file, ignoredPackage) { + return true + } + } + return false +} + +// trimPackagePrefix reduces duplicate values off the front of a package name. +func trimPackagePrefix(file string) string { + if l := strings.LastIndex(file, "k8s.io/client-go/1.5/pkg/"); l >= 0 { + return file[l+len("k8s.io/client-go/1.5/"):] + } + if l := strings.LastIndex(file, "/src/"); l >= 0 { + return file[l+5:] + } + if l := strings.LastIndex(file, "/pkg/"); l >= 0 { + return file[l+1:] + } + return file +} + +var stackCreator = regexp.MustCompile(`(?m)^created by (.*)\n\s+(.*):(\d+) \+0x[[:xdigit:]]+$`) + +// extractStackCreator retrieves the goroutine file and line that launched this stack. Returns false +// if the creator cannot be located. +// TODO: Go does not expose this via runtime https://github.com/golang/go/issues/11440 +func extractStackCreator() (string, int, bool) { + stack := debug.Stack() + matches := stackCreator.FindStringSubmatch(string(stack)) + if matches == nil || len(matches) != 4 { + return "", 0, false + } + line, err := strconv.Atoi(matches[3]) + if err != nil { + return "", 0, false + } + return matches[2], line, true +} + +// Run starts a watch and handles watch events. Will restart the watch if it is closed. +// Run starts a goroutine and returns immediately. +func (r *Reflector) Run() { + glog.V(3).Infof("Starting reflector %v (%s) from %s", r.expectedType, r.resyncPeriod, r.name) + go wait.Until(func() { + if err := r.ListAndWatch(wait.NeverStop); err != nil { + utilruntime.HandleError(err) + } + }, r.period, wait.NeverStop) +} + +// RunUntil starts a watch and handles watch events. Will restart the watch if it is closed. +// RunUntil starts a goroutine and returns immediately. It will exit when stopCh is closed. +func (r *Reflector) RunUntil(stopCh <-chan struct{}) { + glog.V(3).Infof("Starting reflector %v (%s) from %s", r.expectedType, r.resyncPeriod, r.name) + go wait.Until(func() { + if err := r.ListAndWatch(stopCh); err != nil { + utilruntime.HandleError(err) + } + }, r.period, stopCh) +} + +var ( + // nothing will ever be sent down this channel + neverExitWatch <-chan time.Time = make(chan time.Time) + + // Used to indicate that watching stopped so that a resync could happen. + errorResyncRequested = errors.New("resync channel fired") + + // Used to indicate that watching stopped because of a signal from the stop + // channel passed in from a client of the reflector. + errorStopRequested = errors.New("Stop requested") +) + +// resyncChan returns a channel which will receive something when a resync is +// required, and a cleanup function. +func (r *Reflector) resyncChan() (<-chan time.Time, func() bool) { + if r.resyncPeriod == 0 { + return neverExitWatch, func() bool { return false } + } + // The cleanup function is required: imagine the scenario where watches + // always fail so we end up listing frequently. Then, if we don't + // manually stop the timer, we could end up with many timers active + // concurrently. + t := time.NewTimer(r.resyncPeriod) + return t.C, t.Stop +} + +// ListAndWatch first lists all items and get the resource version at the moment of call, +// and then use the resource version to watch. +// It returns error if ListAndWatch didn't even try to initialize watch. +func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { + glog.V(3).Infof("Listing and watching %v from %s", r.expectedType, r.name) + var resourceVersion string + resyncCh, cleanup := r.resyncChan() + defer cleanup() + + // Explicitly set "0" as resource version - it's fine for the List() + // to be served from cache and potentially be delayed relative to + // etcd contents. Reflector framework will catch up via Watch() eventually. + options := api.ListOptions{ResourceVersion: "0"} + list, err := r.listerWatcher.List(options) + if err != nil { + return fmt.Errorf("%s: Failed to list %v: %v", r.name, r.expectedType, err) + } + listMetaInterface, err := meta.ListAccessor(list) + if err != nil { + return fmt.Errorf("%s: Unable to understand list result %#v: %v", r.name, list, err) + } + resourceVersion = listMetaInterface.GetResourceVersion() + items, err := meta.ExtractList(list) + if err != nil { + return fmt.Errorf("%s: Unable to understand list result %#v (%v)", r.name, list, err) + } + if err := r.syncWith(items, resourceVersion); err != nil { + return fmt.Errorf("%s: Unable to sync list result: %v", r.name, err) + } + r.setLastSyncResourceVersion(resourceVersion) + + resyncerrc := make(chan error, 1) + go func() { + for { + select { + case <-resyncCh: + case <-stopCh: + return + } + glog.V(4).Infof("%s: forcing resync", r.name) + if err := r.store.Resync(); err != nil { + resyncerrc <- err + return + } + cleanup() + resyncCh, cleanup = r.resyncChan() + } + }() + + for { + timemoutseconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0)) + options = api.ListOptions{ + ResourceVersion: resourceVersion, + // We want to avoid situations of hanging watchers. Stop any wachers that do not + // receive any events within the timeout window. + TimeoutSeconds: &timemoutseconds, + } + + w, err := r.listerWatcher.Watch(options) + if err != nil { + switch err { + case io.EOF: + // watch closed normally + case io.ErrUnexpectedEOF: + glog.V(1).Infof("%s: Watch for %v closed with unexpected EOF: %v", r.name, r.expectedType, err) + default: + utilruntime.HandleError(fmt.Errorf("%s: Failed to watch %v: %v", r.name, r.expectedType, err)) + } + // If this is "connection refused" error, it means that most likely apiserver is not responsive. + // It doesn't make sense to re-list all objects because most likely we will be able to restart + // watch where we ended. + // If that's the case wait and resend watch request. + if urlError, ok := err.(*url.Error); ok { + if opError, ok := urlError.Err.(*net.OpError); ok { + if errno, ok := opError.Err.(syscall.Errno); ok && errno == syscall.ECONNREFUSED { + time.Sleep(time.Second) + continue + } + } + } + return nil + } + + if err := r.watchHandler(w, &resourceVersion, resyncerrc, stopCh); err != nil { + if err != errorStopRequested { + glog.Warningf("%s: watch of %v ended with: %v", r.name, r.expectedType, err) + } + return nil + } + } +} + +// syncWith replaces the store's items with the given list. +func (r *Reflector) syncWith(items []runtime.Object, resourceVersion string) error { + found := make([]interface{}, 0, len(items)) + for _, item := range items { + found = append(found, item) + } + return r.store.Replace(found, resourceVersion) +} + +// watchHandler watches w and keeps *resourceVersion up to date. +func (r *Reflector) watchHandler(w watch.Interface, resourceVersion *string, errc chan error, stopCh <-chan struct{}) error { + start := time.Now() + eventCount := 0 + + // Stopping the watcher should be idempotent and if we return from this function there's no way + // we're coming back in with the same watch interface. + defer w.Stop() + +loop: + for { + select { + case <-stopCh: + return errorStopRequested + case err := <-errc: + return err + case event, ok := <-w.ResultChan(): + if !ok { + break loop + } + if event.Type == watch.Error { + return apierrs.FromObject(event.Object) + } + if e, a := r.expectedType, reflect.TypeOf(event.Object); e != nil && e != a { + utilruntime.HandleError(fmt.Errorf("%s: expected type %v, but watch event object had type %v", r.name, e, a)) + continue + } + meta, err := meta.Accessor(event.Object) + if err != nil { + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + continue + } + newResourceVersion := meta.GetResourceVersion() + switch event.Type { + case watch.Added: + r.store.Add(event.Object) + case watch.Modified: + r.store.Update(event.Object) + case watch.Deleted: + // TODO: Will any consumers need access to the "last known + // state", which is passed in event.Object? If so, may need + // to change this. + r.store.Delete(event.Object) + default: + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + } + *resourceVersion = newResourceVersion + r.setLastSyncResourceVersion(newResourceVersion) + eventCount++ + } + } + + watchDuration := time.Now().Sub(start) + if watchDuration < 1*time.Second && eventCount == 0 { + glog.V(4).Infof("%s: Unexpected watch close - watch lasted less than a second and no items received", r.name) + return errors.New("very short watch") + } + glog.V(4).Infof("%s: Watch close - %v total %v items received", r.name, r.expectedType, eventCount) + return nil +} + +// LastSyncResourceVersion is the resource version observed when last sync with the underlying store +// The value returned is not synchronized with access to the underlying store and is not thread-safe +func (r *Reflector) LastSyncResourceVersion() string { + r.lastSyncResourceVersionMutex.RLock() + defer r.lastSyncResourceVersionMutex.RUnlock() + return r.lastSyncResourceVersion +} + +func (r *Reflector) setLastSyncResourceVersion(v string) { + r.lastSyncResourceVersionMutex.Lock() + defer r.lastSyncResourceVersionMutex.Unlock() + r.lastSyncResourceVersion = v +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/shared_informer.go b/vendor/k8s.io/client-go/1.5/tools/cache/shared_informer.go new file mode 100644 index 0000000000..ffa6a919a9 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/shared_informer.go @@ -0,0 +1,413 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "sync" + "time" + + "k8s.io/client-go/1.5/pkg/runtime" + utilruntime "k8s.io/client-go/1.5/pkg/util/runtime" + "k8s.io/client-go/1.5/pkg/util/wait" + + "github.com/golang/glog" +) + +// if you use this, there is one behavior change compared to a standard Informer. +// When you receive a notification, the cache will be AT LEAST as fresh as the +// notification, but it MAY be more fresh. You should NOT depend on the contents +// of the cache exactly matching the notification you've received in handler +// functions. If there was a create, followed by a delete, the cache may NOT +// have your item. This has advantages over the broadcaster since it allows us +// to share a common cache across many controllers. Extending the broadcaster +// would have required us keep duplicate caches for each watch. +type SharedInformer interface { + // events to a single handler are delivered sequentially, but there is no coordination between different handlers + // You may NOT add a handler *after* the SharedInformer is running. That will result in an error being returned. + // TODO we should try to remove this restriction eventually. + AddEventHandler(handler ResourceEventHandler) error + GetStore() Store + // GetController gives back a synthetic interface that "votes" to start the informer + GetController() ControllerInterface + Run(stopCh <-chan struct{}) + HasSynced() bool + LastSyncResourceVersion() string +} + +type SharedIndexInformer interface { + SharedInformer + // AddIndexers add indexers to the informer before it starts. + AddIndexers(indexers Indexers) error + GetIndexer() Indexer +} + +// NewSharedInformer creates a new instance for the listwatcher. +// TODO: create a cache/factory of these at a higher level for the list all, watch all of a given resource that can +// be shared amongst all consumers. +func NewSharedInformer(lw ListerWatcher, objType runtime.Object, resyncPeriod time.Duration) SharedInformer { + return NewSharedIndexInformer(lw, objType, resyncPeriod, Indexers{}) +} + +// NewSharedIndexInformer creates a new instance for the listwatcher. +// TODO: create a cache/factory of these at a higher level for the list all, watch all of a given resource that can +// be shared amongst all consumers. +func NewSharedIndexInformer(lw ListerWatcher, objType runtime.Object, resyncPeriod time.Duration, indexers Indexers) SharedIndexInformer { + sharedIndexInformer := &sharedIndexInformer{ + processor: &sharedProcessor{}, + indexer: NewIndexer(DeletionHandlingMetaNamespaceKeyFunc, indexers), + listerWatcher: lw, + objectType: objType, + fullResyncPeriod: resyncPeriod, + } + return sharedIndexInformer +} + +// InformerSynced is a function that can be used to determine if an informer has synced. This is useful for determining if caches have synced. +type InformerSynced func() bool + +// syncedPollPeriod controls how often you look at the status of your sync funcs +const syncedPollPeriod = 100 * time.Millisecond + +// WaitForCacheSync waits for caches to populate. It returns true if it was successful, false +// if the contoller should shutdown +func WaitForCacheSync(stopCh <-chan struct{}, cacheSyncs ...InformerSynced) bool { + err := wait.PollUntil(syncedPollPeriod, + func() (bool, error) { + for _, syncFunc := range cacheSyncs { + if !syncFunc() { + return false, nil + } + } + return true, nil + }, + stopCh) + if err != nil { + glog.V(2).Infof("stop requested") + return false + } + + glog.V(4).Infof("caches populated") + return true +} + +type sharedIndexInformer struct { + indexer Indexer + controller *Controller + + processor *sharedProcessor + + // This block is tracked to handle late initialization of the controller + listerWatcher ListerWatcher + objectType runtime.Object + fullResyncPeriod time.Duration + + started bool + startedLock sync.Mutex + + // blockDeltas gives a way to stop all event distribution so that a late event handler + // can safely join the shared informer. + blockDeltas sync.Mutex + // stopCh is the channel used to stop the main Run process. We have to track it so that + // late joiners can have a proper stop + stopCh <-chan struct{} +} + +// dummyController hides the fact that a SharedInformer is different from a dedicated one +// where a caller can `Run`. The run method is disonnected in this case, because higher +// level logic will decide when to start the SharedInformer and related controller. +// Because returning information back is always asynchronous, the legacy callers shouldn't +// notice any change in behavior. +type dummyController struct { + informer *sharedIndexInformer +} + +func (v *dummyController) Run(stopCh <-chan struct{}) { +} + +func (v *dummyController) HasSynced() bool { + return v.informer.HasSynced() +} + +type updateNotification struct { + oldObj interface{} + newObj interface{} +} + +type addNotification struct { + newObj interface{} +} + +type deleteNotification struct { + oldObj interface{} +} + +func (s *sharedIndexInformer) Run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + fifo := NewDeltaFIFO(MetaNamespaceKeyFunc, nil, s.indexer) + + cfg := &Config{ + Queue: fifo, + ListerWatcher: s.listerWatcher, + ObjectType: s.objectType, + FullResyncPeriod: s.fullResyncPeriod, + RetryOnError: false, + + Process: s.HandleDeltas, + } + + func() { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + s.controller = New(cfg) + s.started = true + }() + + s.stopCh = stopCh + s.processor.run(stopCh) + s.controller.Run(stopCh) +} + +func (s *sharedIndexInformer) isStarted() bool { + s.startedLock.Lock() + defer s.startedLock.Unlock() + return s.started +} + +func (s *sharedIndexInformer) HasSynced() bool { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.controller == nil { + return false + } + return s.controller.HasSynced() +} + +func (s *sharedIndexInformer) LastSyncResourceVersion() string { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.controller == nil { + return "" + } + return s.controller.reflector.LastSyncResourceVersion() +} + +func (s *sharedIndexInformer) GetStore() Store { + return s.indexer +} + +func (s *sharedIndexInformer) GetIndexer() Indexer { + return s.indexer +} + +func (s *sharedIndexInformer) AddIndexers(indexers Indexers) error { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if s.started { + return fmt.Errorf("informer has already started") + } + + return s.indexer.AddIndexers(indexers) +} + +func (s *sharedIndexInformer) GetController() ControllerInterface { + return &dummyController{informer: s} +} + +func (s *sharedIndexInformer) AddEventHandler(handler ResourceEventHandler) error { + s.startedLock.Lock() + defer s.startedLock.Unlock() + + if !s.started { + listener := newProcessListener(handler) + s.processor.listeners = append(s.processor.listeners, listener) + return nil + } + + // in order to safely join, we have to + // 1. stop sending add/update/delete notifications + // 2. do a list against the store + // 3. send synthetic "Add" events to the new handler + // 4. unblock + s.blockDeltas.Lock() + defer s.blockDeltas.Unlock() + + listener := newProcessListener(handler) + s.processor.listeners = append(s.processor.listeners, listener) + + go listener.run(s.stopCh) + go listener.pop(s.stopCh) + + items := s.indexer.List() + for i := range items { + listener.add(addNotification{newObj: items[i]}) + } + + return nil +} + +func (s *sharedIndexInformer) HandleDeltas(obj interface{}) error { + s.blockDeltas.Lock() + defer s.blockDeltas.Unlock() + + // from oldest to newest + for _, d := range obj.(Deltas) { + switch d.Type { + case Sync, Added, Updated: + if old, exists, err := s.indexer.Get(d.Object); err == nil && exists { + if err := s.indexer.Update(d.Object); err != nil { + return err + } + s.processor.distribute(updateNotification{oldObj: old, newObj: d.Object}) + } else { + if err := s.indexer.Add(d.Object); err != nil { + return err + } + s.processor.distribute(addNotification{newObj: d.Object}) + } + case Deleted: + if err := s.indexer.Delete(d.Object); err != nil { + return err + } + s.processor.distribute(deleteNotification{oldObj: d.Object}) + } + } + return nil +} + +type sharedProcessor struct { + listeners []*processorListener +} + +func (p *sharedProcessor) distribute(obj interface{}) { + for _, listener := range p.listeners { + listener.add(obj) + } +} + +func (p *sharedProcessor) run(stopCh <-chan struct{}) { + for _, listener := range p.listeners { + go listener.run(stopCh) + go listener.pop(stopCh) + } +} + +type processorListener struct { + // lock/cond protects access to 'pendingNotifications'. + lock sync.RWMutex + cond sync.Cond + + // pendingNotifications is an unbounded slice that holds all notifications not yet distributed + // there is one per listener, but a failing/stalled listener will have infinite pendingNotifications + // added until we OOM. + // TODO This is no worse that before, since reflectors were backed by unbounded DeltaFIFOs, but + // we should try to do something better + pendingNotifications []interface{} + + nextCh chan interface{} + + handler ResourceEventHandler +} + +func newProcessListener(handler ResourceEventHandler) *processorListener { + ret := &processorListener{ + pendingNotifications: []interface{}{}, + nextCh: make(chan interface{}), + handler: handler, + } + + ret.cond.L = &ret.lock + return ret +} + +func (p *processorListener) add(notification interface{}) { + p.lock.Lock() + defer p.lock.Unlock() + + p.pendingNotifications = append(p.pendingNotifications, notification) + p.cond.Broadcast() +} + +func (p *processorListener) pop(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + for { + blockingGet := func() (interface{}, bool) { + p.lock.Lock() + defer p.lock.Unlock() + + for len(p.pendingNotifications) == 0 { + // check if we're shutdown + select { + case <-stopCh: + return nil, true + default: + } + p.cond.Wait() + } + + nt := p.pendingNotifications[0] + p.pendingNotifications = p.pendingNotifications[1:] + return nt, false + } + + notification, stopped := blockingGet() + if stopped { + return + } + + select { + case <-stopCh: + return + case p.nextCh <- notification: + } + } +} + +func (p *processorListener) run(stopCh <-chan struct{}) { + defer utilruntime.HandleCrash() + + for { + var next interface{} + select { + case <-stopCh: + func() { + p.lock.Lock() + defer p.lock.Unlock() + p.cond.Broadcast() + }() + return + case next = <-p.nextCh: + } + + switch notification := next.(type) { + case updateNotification: + p.handler.OnUpdate(notification.oldObj, notification.newObj) + case addNotification: + p.handler.OnAdd(notification.newObj) + case deleteNotification: + p.handler.OnDelete(notification.oldObj) + default: + utilruntime.HandleError(fmt.Errorf("unrecognized notification: %#v", next)) + } + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/store.go b/vendor/k8s.io/client-go/1.5/tools/cache/store.go new file mode 100755 index 0000000000..6dcf50a66e --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/store.go @@ -0,0 +1,240 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "strings" + + "k8s.io/client-go/1.5/pkg/api/meta" +) + +// Store is a generic object storage interface. Reflector knows how to watch a server +// and update a store. A generic store is provided, which allows Reflector to be used +// as a local caching system, and an LRU store, which allows Reflector to work like a +// queue of items yet to be processed. +// +// Store makes no assumptions about stored object identity; it is the responsibility +// of a Store implementation to provide a mechanism to correctly key objects and to +// define the contract for obtaining objects by some arbitrary key type. +type Store interface { + Add(obj interface{}) error + Update(obj interface{}) error + Delete(obj interface{}) error + List() []interface{} + ListKeys() []string + Get(obj interface{}) (item interface{}, exists bool, err error) + GetByKey(key string) (item interface{}, exists bool, err error) + + // Replace will delete the contents of the store, using instead the + // given list. Store takes ownership of the list, you should not reference + // it after calling this function. + Replace([]interface{}, string) error + Resync() error +} + +// KeyFunc knows how to make a key from an object. Implementations should be deterministic. +type KeyFunc func(obj interface{}) (string, error) + +// KeyError will be returned any time a KeyFunc gives an error; it includes the object +// at fault. +type KeyError struct { + Obj interface{} + Err error +} + +// Error gives a human-readable description of the error. +func (k KeyError) Error() string { + return fmt.Sprintf("couldn't create key for object %+v: %v", k.Obj, k.Err) +} + +// ExplicitKey can be passed to MetaNamespaceKeyFunc if you have the key for +// the object but not the object itself. +type ExplicitKey string + +// MetaNamespaceKeyFunc is a convenient default KeyFunc which knows how to make +// keys for API objects which implement meta.Interface. +// The key uses the format <namespace>/<name> unless <namespace> is empty, then +// it's just <name>. +// +// TODO: replace key-as-string with a key-as-struct so that this +// packing/unpacking won't be necessary. +func MetaNamespaceKeyFunc(obj interface{}) (string, error) { + if key, ok := obj.(ExplicitKey); ok { + return string(key), nil + } + meta, err := meta.Accessor(obj) + if err != nil { + return "", fmt.Errorf("object has no meta: %v", err) + } + if len(meta.GetNamespace()) > 0 { + return meta.GetNamespace() + "/" + meta.GetName(), nil + } + return meta.GetName(), nil +} + +// SplitMetaNamespaceKey returns the namespace and name that +// MetaNamespaceKeyFunc encoded into key. +// +// TODO: replace key-as-string with a key-as-struct so that this +// packing/unpacking won't be necessary. +func SplitMetaNamespaceKey(key string) (namespace, name string, err error) { + parts := strings.Split(key, "/") + switch len(parts) { + case 1: + // name only, no namespace + return "", parts[0], nil + case 2: + // namespace and name + return parts[0], parts[1], nil + } + + return "", "", fmt.Errorf("unexpected key format: %q", key) +} + +// cache responsibilities are limited to: +// 1. Computing keys for objects via keyFunc +// 2. Invoking methods of a ThreadSafeStorage interface +type cache struct { + // cacheStorage bears the burden of thread safety for the cache + cacheStorage ThreadSafeStore + // keyFunc is used to make the key for objects stored in and retrieved from items, and + // should be deterministic. + keyFunc KeyFunc +} + +var _ Store = &cache{} + +// Add inserts an item into the cache. +func (c *cache) Add(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Add(key, obj) + return nil +} + +// Update sets an item in the cache to its updated state. +func (c *cache) Update(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Update(key, obj) + return nil +} + +// Delete removes an item from the cache. +func (c *cache) Delete(obj interface{}) error { + key, err := c.keyFunc(obj) + if err != nil { + return KeyError{obj, err} + } + c.cacheStorage.Delete(key) + return nil +} + +// List returns a list of all the items. +// List is completely threadsafe as long as you treat all items as immutable. +func (c *cache) List() []interface{} { + return c.cacheStorage.List() +} + +// ListKeys returns a list of all the keys of the objects currently +// in the cache. +func (c *cache) ListKeys() []string { + return c.cacheStorage.ListKeys() +} + +// GetIndexers returns the indexers of cache +func (c *cache) GetIndexers() Indexers { + return c.cacheStorage.GetIndexers() +} + +// Index returns a list of items that match on the index function +// Index is thread-safe so long as you treat all items as immutable +func (c *cache) Index(indexName string, obj interface{}) ([]interface{}, error) { + return c.cacheStorage.Index(indexName, obj) +} + +// ListIndexFuncValues returns the list of generated values of an Index func +func (c *cache) ListIndexFuncValues(indexName string) []string { + return c.cacheStorage.ListIndexFuncValues(indexName) +} + +func (c *cache) ByIndex(indexName, indexKey string) ([]interface{}, error) { + return c.cacheStorage.ByIndex(indexName, indexKey) +} + +func (c *cache) AddIndexers(newIndexers Indexers) error { + return c.cacheStorage.AddIndexers(newIndexers) +} + +// Get returns the requested item, or sets exists=false. +// Get is completely threadsafe as long as you treat all items as immutable. +func (c *cache) Get(obj interface{}) (item interface{}, exists bool, err error) { + key, err := c.keyFunc(obj) + if err != nil { + return nil, false, KeyError{obj, err} + } + return c.GetByKey(key) +} + +// GetByKey returns the request item, or exists=false. +// GetByKey is completely threadsafe as long as you treat all items as immutable. +func (c *cache) GetByKey(key string) (item interface{}, exists bool, err error) { + item, exists = c.cacheStorage.Get(key) + return item, exists, nil +} + +// Replace will delete the contents of 'c', using instead the given list. +// 'c' takes ownership of the list, you should not reference the list again +// after calling this function. +func (c *cache) Replace(list []interface{}, resourceVersion string) error { + items := map[string]interface{}{} + for _, item := range list { + key, err := c.keyFunc(item) + if err != nil { + return KeyError{item, err} + } + items[key] = item + } + c.cacheStorage.Replace(items, resourceVersion) + return nil +} + +// Resync touches all items in the store to force processing +func (c *cache) Resync() error { + return c.cacheStorage.Resync() +} + +// NewStore returns a Store implemented simply with a map and a lock. +func NewStore(keyFunc KeyFunc) Store { + return &cache{ + cacheStorage: NewThreadSafeStore(Indexers{}, Indices{}), + keyFunc: keyFunc, + } +} + +// NewIndexer returns an Indexer implemented simply with a map and a lock. +func NewIndexer(keyFunc KeyFunc, indexers Indexers) Indexer { + return &cache{ + cacheStorage: NewThreadSafeStore(indexers, Indices{}), + keyFunc: keyFunc, + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/thread_safe_store.go b/vendor/k8s.io/client-go/1.5/tools/cache/thread_safe_store.go new file mode 100644 index 0000000000..913a77ac2b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/thread_safe_store.go @@ -0,0 +1,288 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +import ( + "fmt" + "sync" + + "k8s.io/client-go/1.5/pkg/util/sets" +) + +// ThreadSafeStore is an interface that allows concurrent access to a storage backend. +// TL;DR caveats: you must not modify anything returned by Get or List as it will break +// the indexing feature in addition to not being thread safe. +// +// The guarantees of thread safety provided by List/Get are only valid if the caller +// treats returned items as read-only. For example, a pointer inserted in the store +// through `Add` will be returned as is by `Get`. Multiple clients might invoke `Get` +// on the same key and modify the pointer in a non-thread-safe way. Also note that +// modifying objects stored by the indexers (if any) will *not* automatically lead +// to a re-index. So it's not a good idea to directly modify the objects returned by +// Get/List, in general. +type ThreadSafeStore interface { + Add(key string, obj interface{}) + Update(key string, obj interface{}) + Delete(key string) + Get(key string) (item interface{}, exists bool) + List() []interface{} + ListKeys() []string + Replace(map[string]interface{}, string) + Index(indexName string, obj interface{}) ([]interface{}, error) + ListIndexFuncValues(name string) []string + ByIndex(indexName, indexKey string) ([]interface{}, error) + GetIndexers() Indexers + + // AddIndexers adds more indexers to this store. If you call this after you already have data + // in the store, the results are undefined. + AddIndexers(newIndexers Indexers) error + Resync() error +} + +// threadSafeMap implements ThreadSafeStore +type threadSafeMap struct { + lock sync.RWMutex + items map[string]interface{} + + // indexers maps a name to an IndexFunc + indexers Indexers + // indices maps a name to an Index + indices Indices +} + +func (c *threadSafeMap) Add(key string, obj interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + oldObject := c.items[key] + c.items[key] = obj + c.updateIndices(oldObject, obj, key) +} + +func (c *threadSafeMap) Update(key string, obj interface{}) { + c.lock.Lock() + defer c.lock.Unlock() + oldObject := c.items[key] + c.items[key] = obj + c.updateIndices(oldObject, obj, key) +} + +func (c *threadSafeMap) Delete(key string) { + c.lock.Lock() + defer c.lock.Unlock() + if obj, exists := c.items[key]; exists { + c.deleteFromIndices(obj, key) + delete(c.items, key) + } +} + +func (c *threadSafeMap) Get(key string) (item interface{}, exists bool) { + c.lock.RLock() + defer c.lock.RUnlock() + item, exists = c.items[key] + return item, exists +} + +func (c *threadSafeMap) List() []interface{} { + c.lock.RLock() + defer c.lock.RUnlock() + list := make([]interface{}, 0, len(c.items)) + for _, item := range c.items { + list = append(list, item) + } + return list +} + +// ListKeys returns a list of all the keys of the objects currently +// in the threadSafeMap. +func (c *threadSafeMap) ListKeys() []string { + c.lock.RLock() + defer c.lock.RUnlock() + list := make([]string, 0, len(c.items)) + for key := range c.items { + list = append(list, key) + } + return list +} + +func (c *threadSafeMap) Replace(items map[string]interface{}, resourceVersion string) { + c.lock.Lock() + defer c.lock.Unlock() + c.items = items + + // rebuild any index + c.indices = Indices{} + for key, item := range c.items { + c.updateIndices(nil, item, key) + } +} + +// Index returns a list of items that match on the index function +// Index is thread-safe so long as you treat all items as immutable +func (c *threadSafeMap) Index(indexName string, obj interface{}) ([]interface{}, error) { + c.lock.RLock() + defer c.lock.RUnlock() + + indexFunc := c.indexers[indexName] + if indexFunc == nil { + return nil, fmt.Errorf("Index with name %s does not exist", indexName) + } + + indexKeys, err := indexFunc(obj) + if err != nil { + return nil, err + } + index := c.indices[indexName] + + // need to de-dupe the return list. Since multiple keys are allowed, this can happen. + returnKeySet := sets.String{} + for _, indexKey := range indexKeys { + set := index[indexKey] + for _, key := range set.UnsortedList() { + returnKeySet.Insert(key) + } + } + + list := make([]interface{}, 0, returnKeySet.Len()) + for absoluteKey := range returnKeySet { + list = append(list, c.items[absoluteKey]) + } + return list, nil +} + +// ByIndex returns a list of items that match an exact value on the index function +func (c *threadSafeMap) ByIndex(indexName, indexKey string) ([]interface{}, error) { + c.lock.RLock() + defer c.lock.RUnlock() + + indexFunc := c.indexers[indexName] + if indexFunc == nil { + return nil, fmt.Errorf("Index with name %s does not exist", indexName) + } + + index := c.indices[indexName] + + set := index[indexKey] + list := make([]interface{}, 0, set.Len()) + for _, key := range set.List() { + list = append(list, c.items[key]) + } + + return list, nil +} + +func (c *threadSafeMap) ListIndexFuncValues(indexName string) []string { + c.lock.RLock() + defer c.lock.RUnlock() + + index := c.indices[indexName] + names := make([]string, 0, len(index)) + for key := range index { + names = append(names, key) + } + return names +} + +func (c *threadSafeMap) GetIndexers() Indexers { + return c.indexers +} + +func (c *threadSafeMap) AddIndexers(newIndexers Indexers) error { + c.lock.Lock() + defer c.lock.Unlock() + + if len(c.items) > 0 { + return fmt.Errorf("cannot add indexers to running index") + } + + oldKeys := sets.StringKeySet(c.indexers) + newKeys := sets.StringKeySet(newIndexers) + + if oldKeys.HasAny(newKeys.List()...) { + return fmt.Errorf("indexer conflict: %v", oldKeys.Intersection(newKeys)) + } + + for k, v := range newIndexers { + c.indexers[k] = v + } + return nil +} + +// updateIndices modifies the objects location in the managed indexes, if this is an update, you must provide an oldObj +// updateIndices must be called from a function that already has a lock on the cache +func (c *threadSafeMap) updateIndices(oldObj interface{}, newObj interface{}, key string) error { + // if we got an old object, we need to remove it before we add it again + if oldObj != nil { + c.deleteFromIndices(oldObj, key) + } + for name, indexFunc := range c.indexers { + indexValues, err := indexFunc(newObj) + if err != nil { + return err + } + index := c.indices[name] + if index == nil { + index = Index{} + c.indices[name] = index + } + + for _, indexValue := range indexValues { + set := index[indexValue] + if set == nil { + set = sets.String{} + index[indexValue] = set + } + set.Insert(key) + } + } + return nil +} + +// deleteFromIndices removes the object from each of the managed indexes +// it is intended to be called from a function that already has a lock on the cache +func (c *threadSafeMap) deleteFromIndices(obj interface{}, key string) error { + for name, indexFunc := range c.indexers { + indexValues, err := indexFunc(obj) + if err != nil { + return err + } + + index := c.indices[name] + if index == nil { + continue + } + for _, indexValue := range indexValues { + set := index[indexValue] + if set != nil { + set.Delete(key) + } + } + } + return nil +} + +func (c *threadSafeMap) Resync() error { + // Nothing to do + return nil +} + +func NewThreadSafeStore(indexers Indexers, indices Indices) ThreadSafeStore { + return &threadSafeMap{ + items: map[string]interface{}{}, + indexers: indexers, + indices: indices, + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/cache/undelta_store.go b/vendor/k8s.io/client-go/1.5/tools/cache/undelta_store.go new file mode 100644 index 0000000000..117df46c48 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/cache/undelta_store.go @@ -0,0 +1,83 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cache + +// UndeltaStore listens to incremental updates and sends complete state on every change. +// It implements the Store interface so that it can receive a stream of mirrored objects +// from Reflector. Whenever it receives any complete (Store.Replace) or incremental change +// (Store.Add, Store.Update, Store.Delete), it sends the complete state by calling PushFunc. +// It is thread-safe. It guarantees that every change (Add, Update, Replace, Delete) results +// in one call to PushFunc, but sometimes PushFunc may be called twice with the same values. +// PushFunc should be thread safe. +type UndeltaStore struct { + Store + PushFunc func([]interface{}) +} + +// Assert that it implements the Store interface. +var _ Store = &UndeltaStore{} + +// Note about thread safety. The Store implementation (cache.cache) uses a lock for all methods. +// In the functions below, the lock gets released and reacquired betweend the {Add,Delete,etc} +// and the List. So, the following can happen, resulting in two identical calls to PushFunc. +// time thread 1 thread 2 +// 0 UndeltaStore.Add(a) +// 1 UndeltaStore.Add(b) +// 2 Store.Add(a) +// 3 Store.Add(b) +// 4 Store.List() -> [a,b] +// 5 Store.List() -> [a,b] + +func (u *UndeltaStore) Add(obj interface{}) error { + if err := u.Store.Add(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Update(obj interface{}) error { + if err := u.Store.Update(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Delete(obj interface{}) error { + if err := u.Store.Delete(obj); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +func (u *UndeltaStore) Replace(list []interface{}, resourceVersion string) error { + if err := u.Store.Replace(list, resourceVersion); err != nil { + return err + } + u.PushFunc(u.Store.List()) + return nil +} + +// NewUndeltaStore returns an UndeltaStore implemented with a Store. +func NewUndeltaStore(pushFunc func([]interface{}), keyFunc KeyFunc) *UndeltaStore { + return &UndeltaStore{ + Store: NewStore(keyFunc), + PushFunc: pushFunc, + } +} diff --git a/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/helpers.go b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/helpers.go new file mode 100644 index 0000000000..43e26487cb --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/helpers.go @@ -0,0 +1,183 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "encoding/base64" + "errors" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" +) + +func init() { + sDec, _ := base64.StdEncoding.DecodeString("REDACTED+") + redactedBytes = []byte(string(sDec)) +} + +// IsConfigEmpty returns true if the config is empty. +func IsConfigEmpty(config *Config) bool { + return len(config.AuthInfos) == 0 && len(config.Clusters) == 0 && len(config.Contexts) == 0 && + len(config.CurrentContext) == 0 && + len(config.Preferences.Extensions) == 0 && !config.Preferences.Colors && + len(config.Extensions) == 0 +} + +// MinifyConfig read the current context and uses that to keep only the relevant pieces of config +// This is useful for making secrets based on kubeconfig files +func MinifyConfig(config *Config) error { + if len(config.CurrentContext) == 0 { + return errors.New("current-context must exist in order to minify") + } + + currContext, exists := config.Contexts[config.CurrentContext] + if !exists { + return fmt.Errorf("cannot locate context %v", config.CurrentContext) + } + + newContexts := map[string]*Context{} + newContexts[config.CurrentContext] = currContext + + newClusters := map[string]*Cluster{} + if len(currContext.Cluster) > 0 { + if _, exists := config.Clusters[currContext.Cluster]; !exists { + return fmt.Errorf("cannot locate cluster %v", currContext.Cluster) + } + + newClusters[currContext.Cluster] = config.Clusters[currContext.Cluster] + } + + newAuthInfos := map[string]*AuthInfo{} + if len(currContext.AuthInfo) > 0 { + if _, exists := config.AuthInfos[currContext.AuthInfo]; !exists { + return fmt.Errorf("cannot locate user %v", currContext.AuthInfo) + } + + newAuthInfos[currContext.AuthInfo] = config.AuthInfos[currContext.AuthInfo] + } + + config.AuthInfos = newAuthInfos + config.Clusters = newClusters + config.Contexts = newContexts + + return nil +} + +var redactedBytes []byte + +// Flatten redacts raw data entries from the config object for a human-readable view. +func ShortenConfig(config *Config) { + // trick json encoder into printing a human readable string in the raw data + // by base64 decoding what we want to print. Relies on implementation of + // http://golang.org/pkg/encoding/json/#Marshal using base64 to encode []byte + for key, authInfo := range config.AuthInfos { + if len(authInfo.ClientKeyData) > 0 { + authInfo.ClientKeyData = redactedBytes + } + if len(authInfo.ClientCertificateData) > 0 { + authInfo.ClientCertificateData = redactedBytes + } + config.AuthInfos[key] = authInfo + } + for key, cluster := range config.Clusters { + if len(cluster.CertificateAuthorityData) > 0 { + cluster.CertificateAuthorityData = redactedBytes + } + config.Clusters[key] = cluster + } +} + +// Flatten changes the config object into a self contained config (useful for making secrets) +func FlattenConfig(config *Config) error { + for key, authInfo := range config.AuthInfos { + baseDir, err := MakeAbs(path.Dir(authInfo.LocationOfOrigin), "") + if err != nil { + return err + } + + if err := FlattenContent(&authInfo.ClientCertificate, &authInfo.ClientCertificateData, baseDir); err != nil { + return err + } + if err := FlattenContent(&authInfo.ClientKey, &authInfo.ClientKeyData, baseDir); err != nil { + return err + } + + config.AuthInfos[key] = authInfo + } + for key, cluster := range config.Clusters { + baseDir, err := MakeAbs(path.Dir(cluster.LocationOfOrigin), "") + if err != nil { + return err + } + + if err := FlattenContent(&cluster.CertificateAuthority, &cluster.CertificateAuthorityData, baseDir); err != nil { + return err + } + + config.Clusters[key] = cluster + } + + return nil +} + +func FlattenContent(path *string, contents *[]byte, baseDir string) error { + if len(*path) != 0 { + if len(*contents) > 0 { + return errors.New("cannot have values for both path and contents") + } + + var err error + absPath := ResolvePath(*path, baseDir) + *contents, err = ioutil.ReadFile(absPath) + if err != nil { + return err + } + + *path = "" + } + + return nil +} + +// ResolvePath returns the path as an absolute paths, relative to the given base directory +func ResolvePath(path string, base string) string { + // Don't resolve empty paths + if len(path) > 0 { + // Don't resolve absolute paths + if !filepath.IsAbs(path) { + return filepath.Join(base, path) + } + } + + return path +} + +func MakeAbs(path, base string) (string, error) { + if filepath.IsAbs(path) { + return path, nil + } + if len(base) == 0 { + cwd, err := os.Getwd() + if err != nil { + return "", err + } + base = cwd + } + return filepath.Join(base, path), nil +} diff --git a/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/register.go b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/register.go new file mode 100644 index 0000000000..a7f46d5ac2 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/register.go @@ -0,0 +1,46 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/api/unversioned" + "k8s.io/client-go/1.5/pkg/runtime" +) + +// SchemeGroupVersion is group version used to register these objects +// TODO this should be in the "kubeconfig" group +var SchemeGroupVersion = unversioned.GroupVersion{Group: "", Version: runtime.APIVersionInternal} + +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &Config{}, + ) + return nil +} + +func (obj *Config) GetObjectKind() unversioned.ObjectKind { return obj } +func (obj *Config) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { + obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() +} +func (obj *Config) GroupVersionKind() unversioned.GroupVersionKind { + return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +} diff --git a/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/types.go b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/types.go new file mode 100644 index 0000000000..7b7ed9f5bf --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/clientcmd/api/types.go @@ -0,0 +1,154 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package api + +import ( + "k8s.io/client-go/1.5/pkg/runtime" +) + +// Where possible, json tags match the cli argument names. +// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted. + +// Config holds the information needed to build connect to remote kubernetes clusters as a given user +// IMPORTANT if you add fields to this struct, please update IsConfigEmpty() +type Config struct { + // Legacy field from pkg/api/types.go TypeMeta. + // TODO(jlowdermilk): remove this after eliminating downstream dependencies. + Kind string `json:"kind,omitempty"` + // DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc). + // Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify + // a single value for the cluster version. + // This field isn't really needed anyway, so we are deprecating it without replacement. + // It will be ignored if it is present. + APIVersion string `json:"apiVersion,omitempty"` + // Preferences holds general information to be use for cli interactions + Preferences Preferences `json:"preferences"` + // Clusters is a map of referencable names to cluster configs + Clusters map[string]*Cluster `json:"clusters"` + // AuthInfos is a map of referencable names to user configs + AuthInfos map[string]*AuthInfo `json:"users"` + // Contexts is a map of referencable names to context configs + Contexts map[string]*Context `json:"contexts"` + // CurrentContext is the name of the context that you would like to use by default + CurrentContext string `json:"current-context"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// IMPORTANT if you add fields to this struct, please update IsConfigEmpty() +type Preferences struct { + Colors bool `json:"colors,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// Cluster contains information about how to communicate with a kubernetes cluster +type Cluster struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // Server is the address of the kubernetes cluster (https://hostname:port). + Server string `json:"server"` + // APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc). + APIVersion string `json:"api-version,omitempty"` + // InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure. + InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"` + // CertificateAuthority is the path to a cert file for the certificate authority. + CertificateAuthority string `json:"certificate-authority,omitempty"` + // CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority + CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are. +type AuthInfo struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // ClientCertificate is the path to a client cert file for TLS. + ClientCertificate string `json:"client-certificate,omitempty"` + // ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate + ClientCertificateData []byte `json:"client-certificate-data,omitempty"` + // ClientKey is the path to a client key file for TLS. + ClientKey string `json:"client-key,omitempty"` + // ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey + ClientKeyData []byte `json:"client-key-data,omitempty"` + // Token is the bearer token for authentication to the kubernetes cluster. + Token string `json:"token,omitempty"` + // TokenFile is a pointer to a file that contains a bearer token (as described above). If both Token and TokenFile are present, Token takes precedence. + TokenFile string `json:"tokenFile,omitempty"` + // Impersonate is the username to act-as. + Impersonate string `json:"act-as,omitempty"` + // Username is the username for basic authentication to the kubernetes cluster. + Username string `json:"username,omitempty"` + // Password is the password for basic authentication to the kubernetes cluster. + Password string `json:"password,omitempty"` + // AuthProvider specifies a custom authentication plugin for the kubernetes cluster. + AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with) +type Context struct { + // LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized. + LocationOfOrigin string + // Cluster is the name of the cluster for this context + Cluster string `json:"cluster"` + // AuthInfo is the name of the authInfo for this context + AuthInfo string `json:"user"` + // Namespace is the default namespace to use on unspecified requests + Namespace string `json:"namespace,omitempty"` + // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields + Extensions map[string]runtime.Object `json:"extensions,omitempty"` +} + +// AuthProviderConfig holds the configuration for a specified auth provider. +type AuthProviderConfig struct { + Name string `json:"name"` + Config map[string]string `json:"config,omitempty"` +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewConfig() *Config { + return &Config{ + Preferences: *NewPreferences(), + Clusters: make(map[string]*Cluster), + AuthInfos: make(map[string]*AuthInfo), + Contexts: make(map[string]*Context), + Extensions: make(map[string]runtime.Object), + } +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewContext() *Context { + return &Context{Extensions: make(map[string]runtime.Object)} +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewCluster() *Cluster { + return &Cluster{Extensions: make(map[string]runtime.Object)} +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewAuthInfo() *AuthInfo { + return &AuthInfo{Extensions: make(map[string]runtime.Object)} +} + +// NewConfig is a convenience function that returns a new Config object with non-nil maps +func NewPreferences() *Preferences { + return &Preferences{Extensions: make(map[string]runtime.Object)} +} diff --git a/vendor/k8s.io/client-go/1.5/tools/metrics/metrics.go b/vendor/k8s.io/client-go/1.5/tools/metrics/metrics.go new file mode 100644 index 0000000000..a01306c65d --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/tools/metrics/metrics.go @@ -0,0 +1,61 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package metrics provides abstractions for registering which metrics +// to record. +package metrics + +import ( + "net/url" + "sync" + "time" +) + +var registerMetrics sync.Once + +// LatencyMetric observes client latency partitioned by verb and url. +type LatencyMetric interface { + Observe(verb string, u url.URL, latency time.Duration) +} + +// ResultMetric counts response codes partitioned by method and host. +type ResultMetric interface { + Increment(code string, method string, host string) +} + +var ( + // RequestLatency is the latency metric that rest clients will update. + RequestLatency LatencyMetric = noopLatency{} + // RequestResult is the result metric that rest clients will update. + RequestResult ResultMetric = noopResult{} +) + +// Register registers metrics for the rest client to use. This can +// only be called once. +func Register(lm LatencyMetric, rm ResultMetric) { + registerMetrics.Do(func() { + RequestLatency = lm + RequestResult = rm + }) +} + +type noopLatency struct{} + +func (noopLatency) Observe(string, url.URL, time.Duration) {} + +type noopResult struct{} + +func (noopResult) Increment(string, string, string) {} diff --git a/vendor/k8s.io/client-go/1.5/transport/cache.go b/vendor/k8s.io/client-go/1.5/transport/cache.go new file mode 100644 index 0000000000..6902757e19 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/transport/cache.go @@ -0,0 +1,88 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "fmt" + "net" + "net/http" + "sync" + "time" + + utilnet "k8s.io/client-go/1.5/pkg/util/net" +) + +// TlsTransportCache caches TLS http.RoundTrippers different configurations. The +// same RoundTripper will be returned for configs with identical TLS options If +// the config has no custom TLS options, http.DefaultTransport is returned. +type tlsTransportCache struct { + mu sync.Mutex + transports map[string]*http.Transport +} + +const idleConnsPerHost = 25 + +var tlsCache = &tlsTransportCache{transports: make(map[string]*http.Transport)} + +func (c *tlsTransportCache) get(config *Config) (http.RoundTripper, error) { + key, err := tlsConfigKey(config) + if err != nil { + return nil, err + } + + // Ensure we only create a single transport for the given TLS options + c.mu.Lock() + defer c.mu.Unlock() + + // See if we already have a custom transport for this config + if t, ok := c.transports[key]; ok { + return t, nil + } + + // Get the TLS options for this client config + tlsConfig, err := TLSConfigFor(config) + if err != nil { + return nil, err + } + // The options didn't require a custom TLS config + if tlsConfig == nil { + return http.DefaultTransport, nil + } + + // Cache a single transport for these options + c.transports[key] = utilnet.SetTransportDefaults(&http.Transport{ + Proxy: http.ProxyFromEnvironment, + TLSHandshakeTimeout: 10 * time.Second, + TLSClientConfig: tlsConfig, + MaxIdleConnsPerHost: idleConnsPerHost, + Dial: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).Dial, + }) + return c.transports[key], nil +} + +// tlsConfigKey returns a unique key for tls.Config objects returned from TLSConfigFor +func tlsConfigKey(c *Config) (string, error) { + // Make sure ca/key/cert content is loaded + if err := loadTLSFiles(c); err != nil { + return "", err + } + // Only include the things that actually affect the tls.Config + return fmt.Sprintf("%v/%x/%x/%x", c.TLS.Insecure, c.TLS.CAData, c.TLS.CertData, c.TLS.KeyData), nil +} diff --git a/vendor/k8s.io/client-go/1.5/transport/config.go b/vendor/k8s.io/client-go/1.5/transport/config.go new file mode 100644 index 0000000000..6e5c68a30b --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/transport/config.go @@ -0,0 +1,84 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import "net/http" + +// Config holds various options for establishing a transport. +type Config struct { + // UserAgent is an optional field that specifies the caller of this + // request. + UserAgent string + + // The base TLS configuration for this transport. + TLS TLSConfig + + // Username and password for basic authentication + Username string + Password string + + // Bearer token for authentication + BearerToken string + + // Impersonate is the username that this Config will impersonate + Impersonate string + + // Transport may be used for custom HTTP behavior. This attribute may + // not be specified with the TLS client certificate options. Use + // WrapTransport for most client level operations. + Transport http.RoundTripper + + // WrapTransport will be invoked for custom HTTP behavior after the + // underlying transport is initialized (either the transport created + // from TLSClientConfig, Transport, or http.DefaultTransport). The + // config may layer other RoundTrippers on top of the returned + // RoundTripper. + WrapTransport func(rt http.RoundTripper) http.RoundTripper +} + +// HasCA returns whether the configuration has a certificate authority or not. +func (c *Config) HasCA() bool { + return len(c.TLS.CAData) > 0 || len(c.TLS.CAFile) > 0 +} + +// HasBasicAuth returns whether the configuration has basic authentication or not. +func (c *Config) HasBasicAuth() bool { + return len(c.Username) != 0 +} + +// HasTokenAuth returns whether the configuration has token authentication or not. +func (c *Config) HasTokenAuth() bool { + return len(c.BearerToken) != 0 +} + +// HasCertAuth returns whether the configuration has certificate authentication or not. +func (c *Config) HasCertAuth() bool { + return len(c.TLS.CertData) != 0 || len(c.TLS.CertFile) != 0 +} + +// TLSConfig holds the information needed to set up a TLS transport. +type TLSConfig struct { + CAFile string // Path of the PEM-encoded server trusted root certificates. + CertFile string // Path of the PEM-encoded client certificate. + KeyFile string // Path of the PEM-encoded client key. + + Insecure bool // Server should be accessed without verifying the certificate. For testing only. + + CAData []byte // Bytes of the PEM-encoded server trusted root certificates. Supercedes CAFile. + CertData []byte // Bytes of the PEM-encoded client certificate. Supercedes CertFile. + KeyData []byte // Bytes of the PEM-encoded client key. Supercedes KeyFile. +} diff --git a/vendor/k8s.io/client-go/1.5/transport/round_trippers.go b/vendor/k8s.io/client-go/1.5/transport/round_trippers.go new file mode 100644 index 0000000000..aadf0cbf9a --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/transport/round_trippers.go @@ -0,0 +1,337 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "fmt" + "net/http" + "time" + + "github.com/golang/glog" +) + +// HTTPWrappersForConfig wraps a round tripper with any relevant layered +// behavior from the config. Exposed to allow more clients that need HTTP-like +// behavior but then must hijack the underlying connection (like WebSocket or +// HTTP2 clients). Pure HTTP clients should use the RoundTripper returned from +// New. +func HTTPWrappersForConfig(config *Config, rt http.RoundTripper) (http.RoundTripper, error) { + if config.WrapTransport != nil { + rt = config.WrapTransport(rt) + } + + rt = DebugWrappers(rt) + + // Set authentication wrappers + switch { + case config.HasBasicAuth() && config.HasTokenAuth(): + return nil, fmt.Errorf("username/password or bearer token may be set, but not both") + case config.HasTokenAuth(): + rt = NewBearerAuthRoundTripper(config.BearerToken, rt) + case config.HasBasicAuth(): + rt = NewBasicAuthRoundTripper(config.Username, config.Password, rt) + } + if len(config.UserAgent) > 0 { + rt = NewUserAgentRoundTripper(config.UserAgent, rt) + } + if len(config.Impersonate) > 0 { + rt = NewImpersonatingRoundTripper(config.Impersonate, rt) + } + return rt, nil +} + +// DebugWrappers wraps a round tripper and logs based on the current log level. +func DebugWrappers(rt http.RoundTripper) http.RoundTripper { + switch { + case bool(glog.V(9)): + rt = newDebuggingRoundTripper(rt, debugCurlCommand, debugURLTiming, debugResponseHeaders) + case bool(glog.V(8)): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus, debugResponseHeaders) + case bool(glog.V(7)): + rt = newDebuggingRoundTripper(rt, debugJustURL, debugRequestHeaders, debugResponseStatus) + case bool(glog.V(6)): + rt = newDebuggingRoundTripper(rt, debugURLTiming) + } + + return rt +} + +type requestCanceler interface { + CancelRequest(*http.Request) +} + +type userAgentRoundTripper struct { + agent string + rt http.RoundTripper +} + +func NewUserAgentRoundTripper(agent string, rt http.RoundTripper) http.RoundTripper { + return &userAgentRoundTripper{agent, rt} +} + +func (rt *userAgentRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("User-Agent")) != 0 { + return rt.rt.RoundTrip(req) + } + req = cloneRequest(req) + req.Header.Set("User-Agent", rt.agent) + return rt.rt.RoundTrip(req) +} + +func (rt *userAgentRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *userAgentRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +type basicAuthRoundTripper struct { + username string + password string + rt http.RoundTripper +} + +// NewBasicAuthRoundTripper will apply a BASIC auth authorization header to a +// request unless it has already been set. +func NewBasicAuthRoundTripper(username, password string, rt http.RoundTripper) http.RoundTripper { + return &basicAuthRoundTripper{username, password, rt} +} + +func (rt *basicAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return rt.rt.RoundTrip(req) + } + req = cloneRequest(req) + req.SetBasicAuth(rt.username, rt.password) + return rt.rt.RoundTrip(req) +} + +func (rt *basicAuthRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *basicAuthRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +type impersonatingRoundTripper struct { + impersonate string + delegate http.RoundTripper +} + +// NewImpersonatingRoundTripper will add an Act-As header to a request unless it has already been set. +func NewImpersonatingRoundTripper(impersonate string, delegate http.RoundTripper) http.RoundTripper { + return &impersonatingRoundTripper{impersonate, delegate} +} + +func (rt *impersonatingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Impersonate-User")) != 0 { + return rt.delegate.RoundTrip(req) + } + req = cloneRequest(req) + req.Header.Set("Impersonate-User", rt.impersonate) + return rt.delegate.RoundTrip(req) +} + +func (rt *impersonatingRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.delegate.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.delegate } + +type bearerAuthRoundTripper struct { + bearer string + rt http.RoundTripper +} + +// NewBearerAuthRoundTripper adds the provided bearer token to a request +// unless the authorization header has already been set. +func NewBearerAuthRoundTripper(bearer string, rt http.RoundTripper) http.RoundTripper { + return &bearerAuthRoundTripper{bearer, rt} +} + +func (rt *bearerAuthRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + if len(req.Header.Get("Authorization")) != 0 { + return rt.rt.RoundTrip(req) + } + + req = cloneRequest(req) + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", rt.bearer)) + return rt.rt.RoundTrip(req) +} + +func (rt *bearerAuthRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.rt.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *bearerAuthRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt } + +// cloneRequest returns a clone of the provided *http.Request. +// The clone is a shallow copy of the struct and its Header map. +func cloneRequest(r *http.Request) *http.Request { + // shallow copy of the struct + r2 := new(http.Request) + *r2 = *r + // deep copy of the Header + r2.Header = make(http.Header) + for k, s := range r.Header { + r2.Header[k] = s + } + return r2 +} + +// requestInfo keeps track of information about a request/response combination +type requestInfo struct { + RequestHeaders http.Header + RequestVerb string + RequestURL string + + ResponseStatus string + ResponseHeaders http.Header + ResponseErr error + + Duration time.Duration +} + +// newRequestInfo creates a new RequestInfo based on an http request +func newRequestInfo(req *http.Request) *requestInfo { + return &requestInfo{ + RequestURL: req.URL.String(), + RequestVerb: req.Method, + RequestHeaders: req.Header, + } +} + +// complete adds information about the response to the requestInfo +func (r *requestInfo) complete(response *http.Response, err error) { + if err != nil { + r.ResponseErr = err + return + } + r.ResponseStatus = response.Status + r.ResponseHeaders = response.Header +} + +// toCurl returns a string that can be run as a command in a terminal (minus the body) +func (r *requestInfo) toCurl() string { + headers := "" + for key, values := range r.RequestHeaders { + for _, value := range values { + headers += fmt.Sprintf(` -H %q`, fmt.Sprintf("%s: %s", key, value)) + } + } + + return fmt.Sprintf("curl -k -v -X%s %s %s", r.RequestVerb, headers, r.RequestURL) +} + +// debuggingRoundTripper will display information about the requests passing +// through it based on what is configured +type debuggingRoundTripper struct { + delegatedRoundTripper http.RoundTripper + + levels map[debugLevel]bool +} + +type debugLevel int + +const ( + debugJustURL debugLevel = iota + debugURLTiming + debugCurlCommand + debugRequestHeaders + debugResponseStatus + debugResponseHeaders +) + +func newDebuggingRoundTripper(rt http.RoundTripper, levels ...debugLevel) *debuggingRoundTripper { + drt := &debuggingRoundTripper{ + delegatedRoundTripper: rt, + levels: make(map[debugLevel]bool, len(levels)), + } + for _, v := range levels { + drt.levels[v] = true + } + return drt +} + +func (rt *debuggingRoundTripper) CancelRequest(req *http.Request) { + if canceler, ok := rt.delegatedRoundTripper.(requestCanceler); ok { + canceler.CancelRequest(req) + } else { + glog.Errorf("CancelRequest not implemented") + } +} + +func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + reqInfo := newRequestInfo(req) + + if rt.levels[debugJustURL] { + glog.Infof("%s %s", reqInfo.RequestVerb, reqInfo.RequestURL) + } + if rt.levels[debugCurlCommand] { + glog.Infof("%s", reqInfo.toCurl()) + + } + if rt.levels[debugRequestHeaders] { + glog.Infof("Request Headers:") + for key, values := range reqInfo.RequestHeaders { + for _, value := range values { + glog.Infof(" %s: %s", key, value) + } + } + } + + startTime := time.Now() + response, err := rt.delegatedRoundTripper.RoundTrip(req) + reqInfo.Duration = time.Since(startTime) + + reqInfo.complete(response, err) + + if rt.levels[debugURLTiming] { + glog.Infof("%s %s %s in %d milliseconds", reqInfo.RequestVerb, reqInfo.RequestURL, reqInfo.ResponseStatus, reqInfo.Duration.Nanoseconds()/int64(time.Millisecond)) + } + if rt.levels[debugResponseStatus] { + glog.Infof("Response Status: %s in %d milliseconds", reqInfo.ResponseStatus, reqInfo.Duration.Nanoseconds()/int64(time.Millisecond)) + } + if rt.levels[debugResponseHeaders] { + glog.Infof("Response Headers:") + for key, values := range reqInfo.ResponseHeaders { + for _, value := range values { + glog.Infof(" %s: %s", key, value) + } + } + } + + return response, err +} + +func (rt *debuggingRoundTripper) WrappedRoundTripper() http.RoundTripper { + return rt.delegatedRoundTripper +} diff --git a/vendor/k8s.io/client-go/1.5/transport/transport.go b/vendor/k8s.io/client-go/1.5/transport/transport.go new file mode 100644 index 0000000000..9c5b9ef3c3 --- /dev/null +++ b/vendor/k8s.io/client-go/1.5/transport/transport.go @@ -0,0 +1,140 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package transport + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "io/ioutil" + "net/http" +) + +// New returns an http.RoundTripper that will provide the authentication +// or transport level security defined by the provided Config. +func New(config *Config) (http.RoundTripper, error) { + // Set transport level security + if config.Transport != nil && (config.HasCA() || config.HasCertAuth() || config.TLS.Insecure) { + return nil, fmt.Errorf("using a custom transport with TLS certificate options or the insecure flag is not allowed") + } + + var ( + rt http.RoundTripper + err error + ) + + if config.Transport != nil { + rt = config.Transport + } else { + rt, err = tlsCache.get(config) + if err != nil { + return nil, err + } + } + + return HTTPWrappersForConfig(config, rt) +} + +// TLSConfigFor returns a tls.Config that will provide the transport level security defined +// by the provided Config. Will return nil if no transport level security is requested. +func TLSConfigFor(c *Config) (*tls.Config, error) { + if !(c.HasCA() || c.HasCertAuth() || c.TLS.Insecure) { + return nil, nil + } + if c.HasCA() && c.TLS.Insecure { + return nil, fmt.Errorf("specifying a root certificates file with the insecure flag is not allowed") + } + if err := loadTLSFiles(c); err != nil { + return nil, err + } + + tlsConfig := &tls.Config{ + // Can't use SSLv3 because of POODLE and BEAST + // Can't use TLSv1.0 because of POODLE and BEAST using CBC cipher + // Can't use TLSv1.1 because of RC4 cipher usage + MinVersion: tls.VersionTLS12, + InsecureSkipVerify: c.TLS.Insecure, + } + + if c.HasCA() { + tlsConfig.RootCAs = rootCertPool(c.TLS.CAData) + } + + if c.HasCertAuth() { + cert, err := tls.X509KeyPair(c.TLS.CertData, c.TLS.KeyData) + if err != nil { + return nil, err + } + tlsConfig.Certificates = []tls.Certificate{cert} + } + + return tlsConfig, nil +} + +// loadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData, +// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are +// either populated or were empty to start. +func loadTLSFiles(c *Config) error { + var err error + c.TLS.CAData, err = dataFromSliceOrFile(c.TLS.CAData, c.TLS.CAFile) + if err != nil { + return err + } + + c.TLS.CertData, err = dataFromSliceOrFile(c.TLS.CertData, c.TLS.CertFile) + if err != nil { + return err + } + + c.TLS.KeyData, err = dataFromSliceOrFile(c.TLS.KeyData, c.TLS.KeyFile) + if err != nil { + return err + } + return nil +} + +// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file, +// or an error if an error occurred reading the file +func dataFromSliceOrFile(data []byte, file string) ([]byte, error) { + if len(data) > 0 { + return data, nil + } + if len(file) > 0 { + fileData, err := ioutil.ReadFile(file) + if err != nil { + return []byte{}, err + } + return fileData, nil + } + return nil, nil +} + +// rootCertPool returns nil if caData is empty. When passed along, this will mean "use system CAs". +// When caData is not empty, it will be the ONLY information used in the CertPool. +func rootCertPool(caData []byte) *x509.CertPool { + // What we really want is a copy of x509.systemRootsPool, but that isn't exposed. It's difficult to build (see the go + // code for a look at the platform specific insanity), so we'll use the fact that RootCAs == nil gives us the system values + // It doesn't allow trusting either/or, but hopefully that won't be an issue + if len(caData) == 0 { + return nil + } + + // if we have caData, use it + certPool := x509.NewCertPool() + certPool.AppendCertsFromPEM(caData) + return certPool +} diff --git a/vendor/k8s.io/client-go/LICENSE b/vendor/k8s.io/client-go/LICENSE new file mode 100644 index 0000000000..00b2401109 --- /dev/null +++ b/vendor/k8s.io/client-go/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2014 The Kubernetes Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/vendor.json b/vendor/vendor.json index 65708c19df..6b570eefda 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -2,6 +2,34 @@ "comment": "", "ignore": "test appengine", "package": [ + { + "checksumSHA1": "Cslv4/ITyQmgjSUhNXFu8q5bqOU=", + "origin": "k8s.io/client-go/1.5/vendor/cloud.google.com/go/compute/metadata", + "path": "cloud.google.com/go/compute/metadata", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "hiJXjkFEGy+sDFf6O58Ocdy9Rnk=", + "origin": "k8s.io/client-go/1.5/vendor/cloud.google.com/go/internal", + "path": "cloud.google.com/go/internal", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "IatnluZB5jTVUncMN134e4VOV34=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/PuerkitoBio/purell", + "path": "github.com/PuerkitoBio/purell", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "E/Tz8z0B/gaR551g+XqPKAhcteM=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/PuerkitoBio/urlesc", + "path": "github.com/PuerkitoBio/urlesc", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "CDOphCxF7dup+hBBVRpFeQhM9Jw=", "path": "github.com/asaskevich/govalidator", @@ -122,12 +150,173 @@ "revision": "3ac7bf7a47d159a033b107610db8a1b6575507a4", "revisionTime": "2016-02-29T21:34:45Z" }, + { + "checksumSHA1": "n+s4YwtzpMWW5Rt0dEaQa7NHDGQ=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/blang/semver", + "path": "github.com/blang/semver", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Z2AOGSmDKKvI6nuxa+UPjQWpIeM=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/go-oidc/http", + "path": "github.com/coreos/go-oidc/http", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "8yvt1xKCgNwuuavJdxRnvaIjrIc=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/go-oidc/jose", + "path": "github.com/coreos/go-oidc/jose", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "zhXKrWBSSJLqZxVE/Xsw0M9ynFQ=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/go-oidc/key", + "path": "github.com/coreos/go-oidc/key", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "bkW0mnXvmHQwHprW/6wrbpP7lAk=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/go-oidc/oauth2", + "path": "github.com/coreos/go-oidc/oauth2", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "E1x2k5FdhJ+dzFrh3kCmC6aJfVw=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/go-oidc/oidc", + "path": "github.com/coreos/go-oidc/oidc", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "O0UMBRCOD9ItMayDqLQ2MJEjkVE=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/pkg/health", + "path": "github.com/coreos/pkg/health", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "74vyZz/d49FZXMbFaHOfCGvSLj0=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/pkg/httputil", + "path": "github.com/coreos/pkg/httputil", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "etBdQ0LN6ojGunfvUt6B5C3FNrQ=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/coreos/pkg/timeutil", + "path": "github.com/coreos/pkg/timeutil", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "SdSd7pyjONWWTHc5XE3AhglLo34=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/davecgh/go-spew/spew", + "path": "github.com/davecgh/go-spew/spew", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "1LWe3iDPpInibsVD1TzbTWSDXFc=", "path": "github.com/dgrijalva/jwt-go", "revision": "9a4b9f2ac1f7685147a5c01544e3b922dbc1f4a0", "revisionTime": "2016-03-07T15:28:38-08:00" }, + { + "checksumSHA1": "f1wARLDzsF/JoyN01yoxXEwFIp8=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/docker/distribution/digest", + "path": "github.com/docker/distribution/digest", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "PzXRTLmmqWXxmDqdIXLcRYBma18=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/docker/distribution/reference", + "path": "github.com/docker/distribution/reference", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "1vQR+ZyudsjKio6RNKmWhwzGTb0=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/emicklei/go-restful", + "path": "github.com/emicklei/go-restful", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "3xWz4fZ9xW+CfADpYoPFcZCYJ4E=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/emicklei/go-restful/log", + "path": "github.com/emicklei/go-restful/log", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "J7CtF9gIs2yH9A7lPQDDrhYxiRk=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/emicklei/go-restful/swagger", + "path": "github.com/emicklei/go-restful/swagger", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ww7LVo7jNJ1o6sfRcromEHKyY+o=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/ghodss/yaml", + "path": "github.com/ghodss/yaml", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "NaZnW0tKj/b0k5WzcMD0twrLbrE=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/go-openapi/jsonpointer", + "path": "github.com/go-openapi/jsonpointer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "3LJXjMDxPY+veIqzQtiAvK3hXnY=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/go-openapi/jsonreference", + "path": "github.com/go-openapi/jsonreference", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "faeB3fny260hQ/gEfEXa1ZQTGtk=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/go-openapi/spec", + "path": "github.com/go-openapi/spec", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "wGpZwJ5HZtReou8A3WEV1Gdxs6k=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/go-openapi/swag", + "path": "github.com/go-openapi/swag", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "BIyZQL97iG7mzZ2UMR3XpiXbZdc=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/gogo/protobuf/proto", + "path": "github.com/gogo/protobuf/proto", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "e6cMbpJj41MpihS5eP4SIliRBK4=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/gogo/protobuf/sortkeys", + "path": "github.com/gogo/protobuf/sortkeys", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "URsJa4y/sUUw/STmbeYx9EKqaYE=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/golang/glog", + "path": "github.com/golang/glog", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "XnbEHQRzINRKXKmu9GcaqGkK4Lg=", "path": "github.com/golang/protobuf/proto", @@ -139,6 +328,13 @@ "revision": "d9eb7a3d35ec988b8585d4a0068e462c27d28380", "revisionTime": "2016-05-29T15:00:41+10:00" }, + { + "checksumSHA1": "/yFfUp3tGt6cK22UVzbq8SjPDCU=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/google/gofuzz", + "path": "github.com/google/gofuzz", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "path": "github.com/hashicorp/consul/api", "revision": "34f98f7bdf2eec7517e3aac44691566963152721", @@ -154,12 +350,47 @@ "revision": "291aaeb9485b43b16875c238482b2f7d0a22a13b", "revisionTime": "2015-09-16T14:41:53+02:00" }, + { + "checksumSHA1": "9ZVOEbIXnTuYpVqce4en8rwlkPE=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/jonboulle/clockwork", + "path": "github.com/jonboulle/clockwork", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "gA95N2LM2hEJLoqrTPaFsSWDJ2Y=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/juju/ratelimit", + "path": "github.com/juju/ratelimit", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "Farach1xcmsQYrhiUfkwF2rbIaE=", "path": "github.com/julienschmidt/httprouter", "revision": "109e267447e95ad1bb48b758e40dd7453eb7b039", "revisionTime": "2015-09-05T19:25:33+02:00" }, + { + "checksumSHA1": "urY45++NYCue4nh4k8OjUFnIGfU=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/mailru/easyjson/buffer", + "path": "github.com/mailru/easyjson/buffer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "yTDKAM4KBgOvXRsZC50zg0OChvM=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/mailru/easyjson/jlexer", + "path": "github.com/mailru/easyjson/jlexer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "4+d+6rhM1pei6lBguhqSEW7LaXs=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/mailru/easyjson/jwriter", + "path": "github.com/mailru/easyjson/jwriter", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "Q2vw4HZBbnU8BLFt8VrzStwqSJg=", "path": "github.com/matttproud/golang_protobuf_extensions/pbutil", @@ -172,6 +403,20 @@ "revision": "8395762c3490507cf5a27405fcd0e3d3dc547109", "revisionTime": "2015-09-05T08:12:15+01:00" }, + { + "checksumSHA1": "3YJklSuzSE1Rt8A+2dhiWSmf/fw=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/pborman/uuid", + "path": "github.com/pborman/uuid", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "zKKp5SZ3d3ycKe4EKMNT0BqAWBw=", + "origin": "github.com/stretchr/testify/vendor/github.com/pmezard/go-difflib/difflib", + "path": "github.com/pmezard/go-difflib/difflib", + "revision": "d77da356e56a7428ad25149ca77381849a6a5232", + "revisionTime": "2016-06-15T09:26:46Z" + }, { "checksumSHA1": "OpY4giv8kPIYbaunD7BSgCynj78=", "path": "github.com/prometheus/client_golang/prometheus", @@ -232,6 +477,25 @@ "revision": "177002e16a0061912f02377e2dd8951a8b3551bc", "revisionTime": "2015-08-17T10:50:50-07:00" }, + { + "checksumSHA1": "YuPBOVkkE3uuBh4RcRUTF0n+frs=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/spf13/pflag", + "path": "github.com/spf13/pflag", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "iydUphwYqZRq3WhstEdGsbvBAKs=", + "path": "github.com/stretchr/testify/assert", + "revision": "d77da356e56a7428ad25149ca77381849a6a5232", + "revisionTime": "2016-06-15T09:26:46Z" + }, + { + "checksumSHA1": "P9FJpir2c4G5PA46qEkaWy3l60U=", + "path": "github.com/stretchr/testify/require", + "revision": "d77da356e56a7428ad25149ca77381849a6a5232", + "revisionTime": "2016-06-15T09:26:46Z" + }, { "checksumSHA1": "sUPlrnoPPmYuvjEtw9HUTKPCZa4=", "path": "github.com/syndtr/goleveldb/leveldb", @@ -304,6 +568,13 @@ "revision": "ab8b5dcf1042e818ab68e770d465112a899b668e", "revisionTime": "2016-06-29T10:12:33Z" }, + { + "checksumSHA1": "f6Aew+ZA+HBAXCw6/xTST3mB0Lw=", + "origin": "k8s.io/client-go/1.5/vendor/github.com/ugorji/go/codec", + "path": "github.com/ugorji/go/codec", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "sFD8LpJPQtWLwGda3edjf5mNUbs=", "path": "github.com/vaughan0/go-ini", @@ -322,12 +593,40 @@ "revision": "b400c2eff1badec7022a8c8f5bea058b6315eed7", "revisionTime": "2016-06-19T19:44:24Z" }, + { + "checksumSHA1": "SPYGC6DQrH9jICccUsOfbvvhB4g=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/net/http2", + "path": "golang.org/x/net/http2", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "EYNaHp7XdLWRydUCE0amEkKAtgk=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/net/http2/hpack", + "path": "golang.org/x/net/http2/hpack", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "gXiSniT8fevWOVPVKopYgrdzi60=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/net/idna", + "path": "golang.org/x/net/idna", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "/k7k6eJDkxXx6K9Zpo/OwNm58XM=", "path": "golang.org/x/net/internal/timeseries", "revision": "6250b412798208e6c90b03b7c4f226de5aa299e2", "revisionTime": "2016-08-24T22:20:41Z" }, + { + "checksumSHA1": "yhndhWXMs/VSEDLks4dNyFMQStA=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/net/lex/httplex", + "path": "golang.org/x/net/lex/httplex", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "mktBVED98G2vv+OKcSgtnFVZC1Y=", "path": "golang.org/x/oauth2", @@ -364,6 +663,76 @@ "revision": "a408501be4d17ee978c04a618e7a1b22af058c0e", "revisionTime": "2016-07-03T23:56:20Z" }, + { + "checksumSHA1": "QQpKbWuqvhmxVr/hfEYdWzzcXRM=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/cases", + "path": "golang.org/x/text/cases", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "iAsGo/kxvnwILbJVUCd0ZcqZO/Q=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/internal/tag", + "path": "golang.org/x/text/internal/tag", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "mQ6PCGHY7K0oPjKbYD8wsTjm/P8=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/language", + "path": "golang.org/x/text/language", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "WpeH2TweiuiZAQVTJNO5vyZAQQA=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/runes", + "path": "golang.org/x/text/runes", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "1VjEPyjdi0xOiIN/Alkqiad/B/c=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/secure/bidirule", + "path": "golang.org/x/text/secure/bidirule", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "FcK7VslktIAWj5jnWVnU2SesBq0=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/secure/precis", + "path": "golang.org/x/text/secure/precis", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "nwlu7UTwYbCj9l5f3a7t2ROwNzM=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/transform", + "path": "golang.org/x/text/transform", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "nWJ9R1+Xw41f/mM3b7BYtv77CfI=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/unicode/bidi", + "path": "golang.org/x/text/unicode/bidi", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "BAZ96wCGUj6HdY9sG60Yw09KWA4=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/unicode/norm", + "path": "golang.org/x/text/unicode/norm", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "AZMILKWqLP99UilLgbGZ+uzIVrM=", + "origin": "k8s.io/client-go/1.5/vendor/golang.org/x/text/width", + "path": "golang.org/x/text/width", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "AjdmRXf0fiy6Bec9mNlsGsmZi1k=", "path": "google.golang.org/api/compute/v1", @@ -466,6 +835,13 @@ "revision": "30411dbcefb7a1da7e84f75530ad3abe4011b4f8", "revisionTime": "2016-04-12T13:37:56Z" }, + { + "checksumSHA1": "pfQwQtWlFezJq0Viroa/L+v+yDM=", + "origin": "k8s.io/client-go/1.5/vendor/gopkg.in/inf.v0", + "path": "gopkg.in/inf.v0", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, { "checksumSHA1": "KgT+peLCcuh0/m2mpoOZXuxXmwc=", "path": "gopkg.in/yaml.v2", @@ -513,6 +889,624 @@ "path": "gopkg.in/yaml.v2", "revision": "7ad95dd0798a40da1ccdff6dff35fd177b5edf40", "revisionTime": "2015-06-24T11:29:02+01:00" + }, + { + "checksumSHA1": "st0Nbu4zwLcP3mz03lDOJVZtn8Y=", + "path": "k8s.io/client-go/1.5/discovery", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "S+OzpkipMb46LGZoWuveqSLAcoM=", + "path": "k8s.io/client-go/1.5/kubernetes", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "yCBn8ig1TUMrk+ljtK0nDr7E5Vo=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/apps/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ZRnUz5NrpvJsXAjtnRdEv5UYhSI=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/authentication/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "TY55Np20olmPMzXgfVlIUIyqv04=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/authorization/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "FRByJsFff/6lPH20FtJPaK1NPWI=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/autoscaling/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "3Cy2as7HnQ2FDcvpNbatpFWx0P4=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/batch/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "RUKywApIbSLLsfkYxXzifh7HIvs=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/certificates/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "4+Lsxu+sYgzsS2JOHP7CdrZLSKc=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/core/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "H8jzevN03YUfmf2krJt0qj2P9sU=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/extensions/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "hrpA6xxtwj3oMcQbFxI2cDhO2ZA=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/policy/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "B2+F12NeMwrOHvHK2ALyEcr3UGA=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/rbac/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "h2eSNUym87RWPlez7UKujShwrUQ=", + "path": "k8s.io/client-go/1.5/kubernetes/typed/storage/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "+oIykJ3A0wYjAWbbrGo0jNnMLXw=", + "path": "k8s.io/client-go/1.5/pkg/api", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "UsUsIdhuy5Ej2vI0hbmSsrimoaQ=", + "path": "k8s.io/client-go/1.5/pkg/api/errors", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Eo6LLHFqG6YznIAKr2mVjuqUj6k=", + "path": "k8s.io/client-go/1.5/pkg/api/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "dYznkLcCEai21z1dX8kZY7uDsck=", + "path": "k8s.io/client-go/1.5/pkg/api/meta", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "b06esG4xMj/YNFD85Lqq00cx+Yo=", + "path": "k8s.io/client-go/1.5/pkg/api/meta/metatypes", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "L9svak1yut0Mx8r9VLDOwpqZzBk=", + "path": "k8s.io/client-go/1.5/pkg/api/resource", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "m7jGshKDLH9kdokfa6MwAqzxRQk=", + "path": "k8s.io/client-go/1.5/pkg/api/unversioned", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "iI6s5WAexr1PEfqrbvuscB+oVik=", + "path": "k8s.io/client-go/1.5/pkg/api/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ikac34qI/IkTWHnfi8pPl9irPyo=", + "path": "k8s.io/client-go/1.5/pkg/api/validation/path", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "MJyygSPp8N6z+7SPtcROz4PEwas=", + "path": "k8s.io/client-go/1.5/pkg/apimachinery", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "EGb4IcSTQ1VXCmX0xcyG5GpWId8=", + "path": "k8s.io/client-go/1.5/pkg/apimachinery/announced", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "vhSyuINHQhCsDKTyBmvJT1HzDHI=", + "path": "k8s.io/client-go/1.5/pkg/apimachinery/registered", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "rXeBnwLg8ZFe6m5/Ki7tELVBYDk=", + "path": "k8s.io/client-go/1.5/pkg/apis/apps", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "KzHaG858KV1tBh5cuLInNcm+G5s=", + "path": "k8s.io/client-go/1.5/pkg/apis/apps/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "fynWdchlRbPaxuST2oGDKiKLTqE=", + "path": "k8s.io/client-go/1.5/pkg/apis/apps/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "hreIYssoH4Ef/+Aglpitn3GNLR4=", + "path": "k8s.io/client-go/1.5/pkg/apis/authentication", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "EgUqJH4CqB9vXVg6T8II2OEt5LE=", + "path": "k8s.io/client-go/1.5/pkg/apis/authentication/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Z3DKgomzRPGcBv/8hlL6pfnIpXI=", + "path": "k8s.io/client-go/1.5/pkg/apis/authentication/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "GpuScB2Z+NOT4WIQg1mVvVSDUts=", + "path": "k8s.io/client-go/1.5/pkg/apis/authorization", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "+u3UD+HY9lBH+PFi/2B4W564JEw=", + "path": "k8s.io/client-go/1.5/pkg/apis/authorization/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "zIFzgWjmlWNLHGHMpCpDCvoLtKY=", + "path": "k8s.io/client-go/1.5/pkg/apis/authorization/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "tdpzQFQyVkt5kCLTvtKTVqT+maE=", + "path": "k8s.io/client-go/1.5/pkg/apis/autoscaling", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "nb6LbYGS5tv8H8Ovptg6M7XuDZ4=", + "path": "k8s.io/client-go/1.5/pkg/apis/autoscaling/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "DNb1/nl/5RDdckRrJoXBRagzJXs=", + "path": "k8s.io/client-go/1.5/pkg/apis/autoscaling/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "4bLhH2vNl5l4Qp6MjLhWyWVAPE0=", + "path": "k8s.io/client-go/1.5/pkg/apis/batch", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "RpAAEynmxlvOlLLZK1KEUQRnYzk=", + "path": "k8s.io/client-go/1.5/pkg/apis/batch/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "uWJ2BHmjL/Gq4FFlNkqiN6vvPyM=", + "path": "k8s.io/client-go/1.5/pkg/apis/batch/v1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "mHWt/p724dKeP1vqLtWQCye7zaE=", + "path": "k8s.io/client-go/1.5/pkg/apis/batch/v2alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "6dJ1dGfXkB3A42TOtMaY/rvv4N8=", + "path": "k8s.io/client-go/1.5/pkg/apis/certificates", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Bkrhm6HbFYANwtzUE8eza9SWBk0=", + "path": "k8s.io/client-go/1.5/pkg/apis/certificates/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "nRRPIBQ5O3Ad24kscNtK+gPC+fk=", + "path": "k8s.io/client-go/1.5/pkg/apis/certificates/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "KUMhoaOg9GXHN/aAVvSLO18SgqU=", + "path": "k8s.io/client-go/1.5/pkg/apis/extensions", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "eSo2VhNAYtesvmpEPqn05goW4LY=", + "path": "k8s.io/client-go/1.5/pkg/apis/extensions/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "DunWIPrCC5iGMWzkaaugMOxD+hg=", + "path": "k8s.io/client-go/1.5/pkg/apis/extensions/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "rVGYi2ko0E7vL5OZSMYX+NAGPYw=", + "path": "k8s.io/client-go/1.5/pkg/apis/policy", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "llJHd2H0LzABGB6BcletzIHnexo=", + "path": "k8s.io/client-go/1.5/pkg/apis/policy/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "j44bqyY13ldnuCtysYE8nRkMD7o=", + "path": "k8s.io/client-go/1.5/pkg/apis/policy/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "vT7rFxowcKMTYc55mddePqUFRgE=", + "path": "k8s.io/client-go/1.5/pkg/apis/rbac", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "r1MzUXsG+Zyn30aU8I5R5dgrJPA=", + "path": "k8s.io/client-go/1.5/pkg/apis/rbac/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "aNfO8xn8VDO3fM9CpVCe6EIB+GA=", + "path": "k8s.io/client-go/1.5/pkg/apis/rbac/v1alpha1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "rQCxrbisCXmj2wymlYG63kcTL9I=", + "path": "k8s.io/client-go/1.5/pkg/apis/storage", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "wZyxh5nt5Eh6kF7YNAIYukKWWy0=", + "path": "k8s.io/client-go/1.5/pkg/apis/storage/install", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "P8ANOt/I4Cs3QtjVXWmDA/gpQdg=", + "path": "k8s.io/client-go/1.5/pkg/apis/storage/v1beta1", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "qnVPwzvNLz2mmr3BXdU9qIhQXXU=", + "path": "k8s.io/client-go/1.5/pkg/auth/user", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "KrIchxhapSs242yAy8yrTS1XlZo=", + "path": "k8s.io/client-go/1.5/pkg/conversion", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "weZqKFcOhcnF47eDDHXzluCKSF0=", + "path": "k8s.io/client-go/1.5/pkg/conversion/queryparams", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "T3EMfyXZX5939/OOQ1JU+Nmbk4k=", + "path": "k8s.io/client-go/1.5/pkg/fields", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "2v11s3EBH8UBl2qfImT29tQN2kM=", + "path": "k8s.io/client-go/1.5/pkg/genericapiserver/openapi/common", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "GvBlph6PywK3zguou/T9kKNNdoQ=", + "path": "k8s.io/client-go/1.5/pkg/labels", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Vtrgy827r0rWzIAgvIWY4flu740=", + "path": "k8s.io/client-go/1.5/pkg/runtime", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "SEcZqRATexhgHvDn+eHvMc07UJs=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "qzYKG9YZSj8l/W1QVTOrGAry/BM=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer/json", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "F7h+8zZ0JPLYkac4KgSVljguBE4=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer/protobuf", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "CvySOL8C85e3y7EWQ+Au4cwUZJM=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer/recognizer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "eCitoKeIun+lJzYFhAfdSIIicSM=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer/streaming", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "kVWvZuLGltJ4YqQsiaCLRRLDDK0=", + "path": "k8s.io/client-go/1.5/pkg/runtime/serializer/versioning", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "m51+LAeQ9RK1KHX+l2iGcwbVCKs=", + "path": "k8s.io/client-go/1.5/pkg/selection", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "dp4IWcC3U6a0HeOdVCDQWODWCbw=", + "path": "k8s.io/client-go/1.5/pkg/third_party/forked/golang/reflect", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ER898XJD1ox4d71gKZD8TLtTSpM=", + "path": "k8s.io/client-go/1.5/pkg/types", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "BVdXtnLDlmBQksRPfHOIG+qdeVg=", + "path": "k8s.io/client-go/1.5/pkg/util", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "nnh8Sa4dCupxRI4bbKaozGp1d/A=", + "path": "k8s.io/client-go/1.5/pkg/util/cert", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "S32d5uduNlwouM8+mIz+ALpliUQ=", + "path": "k8s.io/client-go/1.5/pkg/util/clock", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Y6rWC0TUw2/uUeUjJ7kazyEUzBQ=", + "path": "k8s.io/client-go/1.5/pkg/util/errors", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "C7IfEAdCOePw3/IraaZCNXuYXLw=", + "path": "k8s.io/client-go/1.5/pkg/util/flowcontrol", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "EuslQHnhBSRXaWimYqLEqhMPV48=", + "path": "k8s.io/client-go/1.5/pkg/util/framer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ByO18NbZwiifFr8qtLyfJAHXguA=", + "path": "k8s.io/client-go/1.5/pkg/util/integer", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ww+RfsoIlUBDwThg2oqC5QVz33Y=", + "path": "k8s.io/client-go/1.5/pkg/util/intstr", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "7E8f8dLlXW7u6r9sggMjvB4HEiw=", + "path": "k8s.io/client-go/1.5/pkg/util/json", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "d0pFZxMJG9j95acNmaIM1l+X+QU=", + "path": "k8s.io/client-go/1.5/pkg/util/labels", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "wCN7u1lE+25neM9jXeI7aE8EAfk=", + "path": "k8s.io/client-go/1.5/pkg/util/net", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "g+kBkxcb+tYmFtRRly+VE+JAIfw=", + "path": "k8s.io/client-go/1.5/pkg/util/parsers", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "S4wUnE5VkaWWrkLbgPL/1oNLJ4g=", + "path": "k8s.io/client-go/1.5/pkg/util/rand", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "8j9c2PqTKybtnymXbStNYRexRj8=", + "path": "k8s.io/client-go/1.5/pkg/util/runtime", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "aAz4e8hLGs0+ZAz1TdA5tY/9e1A=", + "path": "k8s.io/client-go/1.5/pkg/util/sets", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "P/fwh6QZ5tsjVyHTaASDWL3WaGs=", + "path": "k8s.io/client-go/1.5/pkg/util/uuid", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "P9Bq/1qbF4SvnN9HyCTRpbUz7sQ=", + "path": "k8s.io/client-go/1.5/pkg/util/validation", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "D0JIEjlP69cuPOZEdsSKeFgsnI8=", + "path": "k8s.io/client-go/1.5/pkg/util/validation/field", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "T7ba8t8i+BtgClMgL+aMZM94fcI=", + "path": "k8s.io/client-go/1.5/pkg/util/wait", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "6RCTv/KDiw7as4KeyrgU3XrUSQI=", + "path": "k8s.io/client-go/1.5/pkg/util/yaml", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "OwKlsSeKtz1FBVC9cQ5gWRL5pKc=", + "path": "k8s.io/client-go/1.5/pkg/version", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Oil9WGw/dODbpBopn6LWQGS3DYg=", + "path": "k8s.io/client-go/1.5/pkg/watch", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "r5alnRCbLaPsbTeJjjTVn/bt6uw=", + "path": "k8s.io/client-go/1.5/pkg/watch/versioned", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "X1+ltyfHui/XCwDupXIf39+9gWQ=", + "path": "k8s.io/client-go/1.5/plugin/pkg/client/auth", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "KYy+js37AS0ZT08g5uBr1ZoMPmE=", + "path": "k8s.io/client-go/1.5/plugin/pkg/client/auth/gcp", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "wQ9G5++lbQpejqCzGHo037N3YcY=", + "path": "k8s.io/client-go/1.5/plugin/pkg/client/auth/oidc", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "ABe8YfZVEDoRpAUqp2BKP8o1VIA=", + "path": "k8s.io/client-go/1.5/rest", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "Gbe0Vs9hkI7X5hhbXUuWdRFffSI=", + "path": "k8s.io/client-go/1.5/tools/cache", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "K/oOznXABjqSS1c2Fs407c5F8KA=", + "path": "k8s.io/client-go/1.5/tools/clientcmd/api", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "c1PQ4WJRfpA9BYcFHW2+46hu5IE=", + "path": "k8s.io/client-go/1.5/tools/metrics", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" + }, + { + "checksumSHA1": "e4W2q+6wvjejv3V0UCI1mewTTro=", + "path": "k8s.io/client-go/1.5/transport", + "revision": "c589d0c9f0d81640c518354c7bcae77d99820aa3", + "revisionTime": "2016-09-30T00:14:02Z" } ], "rootPath": "github.com/prometheus/prometheus" diff --git a/web/api/v1/api.go b/web/api/v1/api.go index fc05e160a3..733d0ac147 100644 --- a/web/api/v1/api.go +++ b/web/api/v1/api.go @@ -226,7 +226,13 @@ func (api *API) labelValues(r *http.Request) (interface{}, *apiError) { if !model.LabelNameRE.MatchString(name) { return nil, &apiError{errorBadData, fmt.Errorf("invalid label name: %q", name)} } - vals, err := api.Storage.LabelValuesForLabelName(api.context(r), model.LabelName(name)) + q, err := api.Storage.Querier() + if err != nil { + return nil, &apiError{errorExec, err} + } + defer q.Close() + + vals, err := q.LabelValuesForLabelName(api.context(r), model.LabelName(name)) if err != nil { return nil, &apiError{errorExec, err} } @@ -272,7 +278,13 @@ func (api *API) series(r *http.Request) (interface{}, *apiError) { matcherSets = append(matcherSets, matchers) } - res, err := api.Storage.MetricsForLabelMatchers(api.context(r), start, end, matcherSets...) + q, err := api.Storage.Querier() + if err != nil { + return nil, &apiError{errorExec, err} + } + defer q.Close() + + res, err := q.MetricsForLabelMatchers(api.context(r), start, end, matcherSets...) if err != nil { return nil, &apiError{errorExec, err} } diff --git a/web/federate.go b/web/federate.go index 9a7d151933..960b554702 100644 --- a/web/federate.go +++ b/web/federate.go @@ -50,7 +50,14 @@ func (h *Handler) federation(w http.ResponseWriter, req *http.Request) { ) w.Header().Set("Content-Type", string(format)) - vector, err := h.storage.LastSampleForLabelMatchers(h.context, minTimestamp, matcherSets...) + q, err := h.storage.Querier() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + defer q.Close() + + vector, err := q.LastSampleForLabelMatchers(h.context, minTimestamp, matcherSets...) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return diff --git a/web/ui/bindata.go b/web/ui/bindata.go index c4258c6800..ed3c0d4a59 100644 --- a/web/ui/bindata.go +++ b/web/ui/bindata.go @@ -28,6 +28,7 @@ // web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js // web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css // web/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js +// web/ui/static/vendor/fuzzy.js // web/ui/static/vendor/js/handlebars.js // web/ui/static/vendor/js/jquery.hotkeys.js // web/ui/static/vendor/js/jquery.min.js @@ -103,7 +104,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _webUiTemplates_baseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x56\xcd\x8e\xdb\x36\x10\xbe\xe7\x29\xa6\x4c\xd0\x64\x0f\xb2\x50\xe4\x52\x64\x25\x01\xe9\x36\x69\x02\x14\xa8\x91\xf8\xd0\xa2\x28\x02\x5a\x1a\x49\xdc\x50\xa4\x42\x52\xee\x1a\x86\xdf\xbd\x43\x53\x52\x25\xad\xbd\x8b\xb4\x45\x4f\x1c\xd3\x33\xdf\xfc\x7d\x33\x54\xf2\xcd\x8f\xbf\xdc\x6c\x7e\x5b\xbf\x81\xda\x35\x32\x7b\x92\xf8\x03\x24\x57\x55\xca\x50\xb1\xec\x09\x40\x52\x23\x2f\xbc\x40\x62\x83\x8e\x93\xa6\x6b\x23\xfc\xd2\x89\x5d\xca\x6e\xb4\x72\xa8\x5c\xb4\xd9\xb7\xc8\x20\x0f\xbf\x52\xe6\xf0\xce\xc5\x1e\xea\x1a\xf2\x9a\x1b\x8b\x2e\xed\x5c\x19\x7d\xcf\x7a\x1c\x27\x9c\xc4\x6c\x6d\x34\x01\xd6\xd8\x59\xd8\x88\x06\xe1\x23\x1a\x81\x16\x6e\xb4\x94\x98\x3b\xa1\x15\x70\x55\x00\x69\xe5\x68\xad\x50\x95\x57\xd8\xa1\x49\xe2\x60\x1e\xa0\x6c\x6e\x44\xeb\xc0\x9a\x3c\x65\x87\x03\xb4\xdc\xd5\x6b\x83\xa5\xb8\x83\xe3\x31\xb6\x8e\x3b\x91\xc7\x3b\x54\x85\x36\xf1\xad\x8d\x6f\xbf\x74\x68\xf6\xab\x46\xa8\xd5\xad\x65\x59\x12\x07\xf3\xaf\xc7\xda\x6a\xed\xac\x33\xbc\x8d\x5e\xae\x5e\xae\xbe\xf3\xd8\xe3\xd5\x19\xf8\x80\x2f\x85\xfa\x0c\x8e\x4a\xd5\x57\x28\xb7\x96\x81\x41\x99\x32\xeb\xf6\x12\x6d\x8d\xe8\x18\xd4\xe4\xf2\xab\xfd\x13\xd4\x22\x00\x0f\x9e\xfd\x77\x7e\xbd\x83\x76\x6c\x58\x8f\x3e\x2d\x5b\xf0\x05\xb0\xe3\x06\xd6\xaf\x37\xef\x3e\xad\x3f\xbc\x79\xfb\xfe\x57\x48\xe1\x1e\x26\xbb\xee\x75\x9f\xbd\x28\x3b\x15\x5a\xfd\xe2\x0a\x0e\xfd\xad\xbf\x7f\xfe\x7b\xc1\x1d\x8f\x9c\xae\x2a\xe9\xc3\xd6\x5a\x3a\xd1\xb2\x3f\x9e\x5f\xad\x7a\xf9\xc5\x55\xaf\x7e\x0c\xc2\xa2\xd8\x87\x83\xc3\xa6\x95\xdc\x21\x30\xcf\x60\x06\xab\xe3\xd1\xd3\x39\x0e\x7c\xf6\xe2\x56\x17\xfb\xbe\x44\x8a\xef\x20\x97\xdc\xda\x94\x91\xb8\xa5\x1c\xc2\x11\x09\x45\x94\xb3\x38\xfc\xa4\x04\xb0\xa0\xb0\x5a\x36\xe4\x9b\x14\x62\x34\xf5\x03\xc0\x85\x42\xd2\x93\x9d\x28\x46\x9d\xb9\x56\x0f\xe5\xe3\x40\x33\xd1\xf1\x11\x75\xce\x51\x31\x42\xaf\xc2\x0f\xb6\x30\x0b\x25\xa1\x59\x93\x92\xb7\x16\x29\xb1\x59\xa5\x86\xfb\xe1\x9a\x9b\x8a\xa6\x8f\x3d\x0d\xd6\x0c\xb8\x11\x3c\xc2\xbb\x96\x46\x0b\x8b\x94\x95\x5c\x7a\xdd\xd3\xad\x8f\xde\x68\x39\xba\x9a\x85\xe6\xfb\x4c\x46\x43\x30\xd6\x44\x5a\xc9\x3d\xcb\x36\x21\x1c\xb2\x10\x15\xf7\x9d\xa4\x3e\x90\xde\x03\xa6\x82\xfc\x44\x27\xf8\xff\x4b\x35\x89\x43\x29\x67\x77\x7c\x51\xd7\xad\xa1\x92\x5c\x9c\x02\x36\xd9\x56\x49\xcc\x27\x8d\x8d\xa9\xb3\x8b\x3e\x8b\x62\x2c\xe1\xc2\xc9\xd0\x9d\xb1\x7d\xf3\xf6\x77\x72\xa2\x3f\x50\x6e\x22\x4a\x2c\xdd\xa2\x2b\x87\xc3\x33\xca\xdc\x6a\x1a\x63\x78\x95\xc2\x20\xaf\x29\xfa\x13\xdf\xa7\x9a\xa2\x84\x51\x79\xf1\x27\xed\x88\x8c\x4a\x32\x64\x3f\x51\x63\xd9\x4d\x2f\xfb\xbc\x93\x98\x14\x17\xb0\x40\x2b\x09\x1e\xc6\x5b\x54\x93\x4b\x34\x8e\x16\xc8\xeb\xd3\x79\x1e\xf7\x61\x84\x8a\xd6\x5c\xcd\xb2\x9f\xfc\x71\xd1\x7e\x28\x66\x61\x74\x5b\xe8\x3f\xd5\xa2\x74\x27\x12\x04\xfc\xa7\x6c\xa9\xdb\x0f\xd4\x62\xba\x46\x24\xa0\x41\x99\x8c\xe8\x69\x7e\x6a\x6e\x5b\xdd\x76\x2d\xad\x2b\xd3\xe1\x85\x51\xcb\x3e\xd2\x3e\xa5\x17\x6f\x46\xde\x9c\x1b\xda\xc0\x03\x73\x67\xfc\xba\xc7\x8c\x31\xc0\x06\x55\x77\x2f\xa3\xc7\xea\x66\x4f\xde\x59\xf6\xa1\x53\xce\xbf\xb9\xdf\xf2\xa6\xbd\x86\x1f\x3a\x21\x0b\x78\xaf\x4a\x6d\x9a\x7e\x88\xcf\x95\xf4\x71\xf8\x52\xf2\xca\x7a\xc6\x34\x0d\x65\x1d\xfd\x4c\xbb\x10\xde\xfa\xbb\x7f\x0a\x48\x3c\x2c\x45\x75\xe2\x20\x9d\x9d\xf9\x57\xd1\x99\x8e\x58\xec\x73\xbf\x48\xe6\xc7\x31\xc2\x42\x25\x94\x4d\x10\x2e\xe1\x24\x71\x27\x17\x84\x3c\x4b\xf1\x4b\x8c\xf4\x5f\x59\xf6\x55\x3c\x7d\x73\x85\x66\x30\xec\xf3\x4f\x5b\xfa\x48\xfb\xcc\xb2\x77\x28\xdb\x7b\x7c\x59\x7a\x9a\xc7\x32\xdb\x58\x93\x1f\x49\x4c\x5b\xe6\xcc\xeb\xd9\x7f\xd5\xfd\xfd\x80\x86\x67\x33\x89\xc3\x27\xe3\x5f\x01\x00\x00\xff\xff\xdf\x1b\xa4\x60\x43\x0a\x00\x00") +var _webUiTemplates_baseHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x56\x51\x6f\xdc\x36\x0c\x7e\xef\xaf\xe0\xd4\x62\x6d\x1e\x7c\xc6\xd0\x97\xa1\xb1\x0d\x74\x59\xbb\x16\x18\xb0\x43\x7b\x0f\x1b\x86\xa1\x60\x6c\xfa\xac\x54\x96\x54\x89\xf6\x72\x38\xe4\xbf\x0f\x3a\xd9\x9e\xcf\xb9\x4b\xd0\x6d\xd8\x93\x28\x9a\xfc\x48\x91\x1f\x25\x67\xdf\xfc\xf8\xcb\xd5\xe6\xb7\xf5\x1b\x68\xb8\x55\xc5\x93\x2c\x2c\xa0\x50\x6f\x73\x41\x5a\x14\x4f\x00\xb2\x86\xb0\x0a\x02\x40\xd6\x12\x23\x34\xcc\x36\xa1\x2f\x9d\xec\x73\x71\x65\x34\x93\xe6\x64\xb3\xb3\x24\xa0\x8c\xbb\x5c\x30\xdd\x72\x1a\xa0\x2e\xa1\x6c\xd0\x79\xe2\xbc\xe3\x3a\xf9\x5e\x0c\x38\x2c\x59\x51\xb1\x76\xa6\x25\x6e\xa8\xf3\xb0\x91\x2d\xc1\x47\x72\x92\x3c\x5c\x19\xa5\xa8\x64\x69\x34\xa0\xae\x60\xed\x4c\x49\xde\x4b\xbd\x0d\x06\x3d\xb9\x2c\x8d\xee\x11\xca\x97\x4e\x5a\x06\xef\xca\x5c\xec\xf7\x60\x91\x9b\xb5\xa3\x5a\xde\xc2\xdd\x5d\xea\x19\x59\x96\x69\x4f\xba\x32\x2e\xbd\xf1\xe9\xcd\x97\x8e\xdc\x6e\xd5\x4a\xbd\xba\xf1\xa2\xc8\xd2\xe8\xfe\xf5\x58\xd7\xc6\xb0\x67\x87\x36\x79\xb9\x7a\xb9\xfa\x2e\x60\x4f\xaa\x13\xf0\x11\x5f\x49\xfd\x19\x78\x67\x69\xa8\x50\xe9\xbd\x00\x47\x2a\x17\x9e\x77\x8a\x7c\x43\xc4\x02\x1a\x47\xf5\x57\xc7\x2f\xfd\x32\x81\x00\x5e\xfc\x77\x71\x43\x00\x3b\x35\x6c\x40\x9f\x97\x2d\xc6\x02\xe8\xd1\xc1\xfa\xf5\xe6\xdd\xa7\xf5\x87\x37\x6f\xdf\xff\x0a\x39\xdc\xc3\x14\x97\x83\xed\xb3\x17\x75\xa7\x63\xab\x5f\x5c\xc0\x7e\xd0\x06\xfd\xf3\xdf\x2b\x64\x4c\xd8\x6c\xb7\x2a\xa4\x6d\x8c\x62\x69\xc5\x1f\xcf\x2f\x56\x83\xfc\xe2\x62\x30\xbf\x8b\xc2\xa2\xd8\xfb\x3d\x53\x6b\x15\x32\x81\x08\x0c\x16\xb0\xba\xbb\x0b\x74\x4e\x23\x9f\x83\x78\x6d\xaa\xdd\x50\x22\x8d\x3d\x94\x0a\xbd\xcf\x85\xc6\xfe\x1a\x1d\xc4\x25\x91\xba\x27\xe7\x69\xdc\xd6\xf2\x96\xaa\x84\x8d\x15\xe3\x79\xb3\x4a\x4e\xae\x61\x00\x50\x6a\x72\x49\xad\x3a\x59\x4d\x36\xc7\x56\x03\x54\xc8\x83\xdc\xcc\x26\x64\xd4\x31\x1b\x3d\xf4\x2a\x6e\xc4\xc2\x2d\x96\x04\x4a\xa3\x14\x5a\x4f\x95\x80\xa3\x4a\x8d\xfa\x51\x8d\x6e\x4b\x9c\x8b\xa7\xd1\x5b\x00\x3a\x89\x09\xdd\x5a\xd4\x15\x55\xb9\xa8\x51\x05\xdb\x83\x36\x64\xef\x8c\x9a\x42\x1d\xa5\x16\xfa\x6c\x51\x8f\xc9\x78\x97\x18\xad\x76\xa2\xd8\xc4\x74\x34\xf6\x72\x8b\xa1\x93\x59\x1a\xec\x1e\x70\x95\xa5\xd1\xc9\x01\xfe\xff\x32\xcd\xd2\x58\xca\x23\x1d\x2e\xea\x7a\xed\x50\x57\x67\xa7\x40\xcc\x6e\xab\x2c\xc5\x59\x63\xd3\x4a\xf6\x8b\x3e\xcb\x6a\x2a\xe1\x22\xc8\xd8\x9d\xa9\x7d\xc7\xed\xef\xd4\xcc\x7e\xa4\xdc\x4c\x54\x54\xf3\xa2\x2b\xfb\xfd\xb3\xd2\x68\x6f\x14\x79\x78\x95\xc3\x28\xaf\x91\x9b\x03\xdf\xe7\x96\xb2\x86\xc9\x78\xf1\x31\x53\xb2\xc8\x70\x3a\xfd\xcc\x4c\x14\x57\x83\x1c\xce\x9d\xa5\x4a\x2e\x13\x00\xd2\x15\x3c\x8c\xb7\xa8\x26\x2a\x72\xec\x45\xf1\xfa\xb0\x9e\xc6\x7d\x18\x61\xeb\xd0\x36\xa2\xf8\x29\x2c\x67\xfd\xc7\x62\x56\xce\xd8\xca\xfc\xa9\x17\xa5\x3b\x90\x20\xe2\x3f\x15\x4b\xdb\x61\xa0\x16\xd3\x35\x21\x81\x33\x6a\x36\xa2\x87\xf9\x69\xd0\x5b\x63\x3b\x9b\x0b\x76\x1d\x9d\x19\xb5\xe2\x23\x23\x77\xfe\x98\xbc\x25\x3a\xe2\x89\xb9\x47\xfc\xba\xc7\x8c\x29\xc1\x96\x74\x77\xef\x44\x8f\xd5\xcd\x1f\xa2\x8b\xe2\x43\xa7\x39\xbc\xb9\xdf\x62\x6b\x2f\xe1\x87\x4e\xaa\x0a\xde\xeb\xda\xb8\x76\x18\xe2\x53\x25\x7d\x1c\xbe\x56\xb8\xf5\x81\x31\x6d\x8b\xba\x4a\x7e\x96\x9a\xe0\x6d\xd0\xfd\x53\xc0\xd2\xe8\x5a\x6e\x0f\x1c\xac\xe5\xb6\x73\xff\x2a\x3b\xd7\x29\x3a\x9c\xfd\x2c\x99\x1f\xc7\x88\x17\xaa\x17\xc5\x26\x0a\xe7\x70\xb2\xb4\x53\x0b\x42\x9e\xa4\xf8\x39\x46\x86\xbf\x2c\xff\x2a\x9d\xbf\xb9\xd2\x08\x18\xef\xf3\x4f\xd7\x0a\xf5\x67\x51\xbc\x23\x65\xef\xf1\x65\x19\xe9\x38\x97\xa3\x1b\x6b\xb6\xc9\x52\x8d\xfd\x89\xd7\x73\xf8\xab\xfb\xfb\x01\x8d\xcf\x66\x96\xc6\x5f\xc6\xbf\x02\x00\x00\xff\xff\xdf\x1b\xa4\x60\x43\x0a\x00\x00") func webUiTemplates_baseHtmlBytes() ([]byte, error) { return bindataRead( @@ -118,12 +119,12 @@ func webUiTemplates_baseHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/_base.html", size: 2627, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/templates/_base.html", size: 2627, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesAlertsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x54\xcd\x6e\xdb\x3c\x10\xbc\xe7\x29\x16\x42\x0e\xdf\x07\xd4\x16\xd0\x63\x21\x0b\x08\x72\xe9\x21\x0d\x8a\xc4\xcd\x35\xa0\xc9\x75\xc4\x94\xa6\x04\x92\x76\x62\xb0\x7a\xf7\x2e\x49\xc9\x91\x65\xa9\xed\xc5\x16\xb9\xb3\xc3\xd9\x5f\xef\x05\x6e\xa5\x46\xc8\x2a\x64\x22\x6b\xdb\x2b\x80\x42\x49\xfd\x13\xdc\xb1\xc1\x55\xe6\xf0\xdd\xe5\xdc\xda\x0c\x0c\xaa\x55\x66\xdd\x51\xa1\xad\x10\x5d\x06\x95\xc1\xed\x2a\xf3\x1e\x1a\xe6\xaa\xef\x74\x90\xef\xd0\xb6\xb9\x75\xcc\x49\x1e\x7c\x72\xa6\xd0\x38\xbb\x0c\xee\x65\xe0\xb5\xdc\xc8\xc6\x81\x35\x7c\xde\xef\xf5\xe4\xf6\x4a\x5e\x45\x9e\x7c\xca\x2b\xef\x51\x0b\x92\x77\xf5\xa1\x98\xd7\xda\xa1\x76\x41\x74\x21\xe4\x01\xb8\x62\xd6\xae\xe2\x35\x23\x80\x59\x6c\xd5\x5e\x8a\xf4\x74\xf5\xb9\xbc\x89\xb4\x45\x4e\x9f\xe1\xc6\xb1\x8d\xc2\xde\x27\x1d\xe2\xef\x62\x53\x1b\x81\x06\x45\x77\xe4\xb5\x52\xac\xb1\x98\x88\x82\xe3\xa6\x16\xc7\xf4\xed\xfd\x75\x14\xfb\x48\xda\x71\x5d\x3f\xd4\x6f\xb7\x81\x0f\xbe\xac\x60\x79\x33\x61\x88\xe9\x0d\x6e\x86\xe9\x17\xec\x30\x52\xbf\x3c\xec\x29\xab\x9d\x31\xb1\x72\x27\x0f\x98\x14\x27\xb6\xc1\xc5\x09\x58\x38\xd3\x07\xe0\xbd\xd4\x02\xdf\x61\x5a\xcf\x32\x5e\xb4\x2d\x44\xeb\x73\x28\x35\x9a\x2e\x9e\x44\x24\xca\x42\xf6\x5c\x92\x32\xb8\xe0\x15\x1e\x0c\xfd\x8b\xfa\x4d\x87\x3a\xc8\x12\x8a\x4d\xe9\xfd\xf2\x9e\xed\x88\xa9\xc8\x37\x25\xfc\xe7\xbd\x42\x0d\x67\x6a\xc3\x23\xf1\xf8\x7f\x91\x13\x6b\xaf\x34\x77\xa6\xbc\x54\x9d\xe4\x08\xa4\x7a\x29\x3b\xd2\x73\x3a\xd0\x91\xaa\x3b\x3c\xd3\x4d\x63\xb0\x2c\x78\x2d\x30\x48\xfa\xba\xfe\x76\xf7\xa8\x65\xd3\xa0\x1b\x34\x55\x10\x19\x11\x45\x1e\xd0\x43\xbe\x7c\x44\x48\xd9\xdb\x8e\xc3\x18\xe2\xff\xb5\x57\xaa\xfa\x80\xe6\xd4\x37\x54\x10\x4d\x7d\xd3\x25\x1d\x15\xee\xa8\x5b\xed\x73\x34\x67\xa3\x78\x3e\x72\x32\xb2\x04\x5b\x55\xde\xb1\x0d\x2a\xea\x5d\xfa\x9c\xb0\xc6\xea\xce\x19\x53\xe7\xc0\xa3\xd4\x7c\x16\xf3\xc4\xd4\x7e\xc2\x38\xac\x5a\x9f\xa8\xd4\xb9\xf3\xb9\x8a\xb1\x5c\xbe\x21\xc6\x57\x03\x2e\x15\x82\xfb\x04\xd7\x87\xa0\x22\x76\x7b\x0a\x77\xc4\xdb\x51\xd9\x86\xe9\x3e\x57\xd1\x13\xe2\xef\xa2\x31\x72\xc7\xcc\x31\xa3\x86\x48\x8c\x6d\x1b\xc6\x22\xb1\xb6\x6d\x46\xab\x84\x3c\xa7\x64\xa4\xc5\x32\x7a\x26\xbf\x94\x1c\xa7\x64\xf8\x7c\x2c\x6c\x2a\xef\x82\xf6\x59\x9a\x32\xf8\x05\xc3\x19\x4c\x03\x48\x53\x11\xf6\x1b\x3e\xd3\x94\x4a\xce\x5c\x4d\x5d\x42\x9b\x75\xb1\xa7\x9e\x35\x9c\x59\x0c\xb2\xfb\x29\xed\x94\xce\x49\x20\x60\xb7\x0d\xdc\x72\x2d\x77\xb8\xfc\xb1\xbe\x0d\x4e\xb3\xe8\xa7\x94\x81\x4b\xc4\x54\x7d\xc7\xc9\x20\x4c\xe8\xd7\xf3\x69\x39\x07\x4d\x0f\x3a\xa1\x94\xc5\xa9\x5d\xf5\x87\x25\x74\x26\xe6\xbe\x4e\x99\xa4\x05\x09\x26\x6c\x48\x48\x9b\x5f\xfc\xfd\xe5\x93\x3e\xba\xed\xd7\xf5\x29\x92\x6e\xfc\x7b\xd8\xef\x00\x00\x00\xff\xff\x58\x70\x42\x1f\x03\x07\x00\x00") +var _webUiTemplatesAlertsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x54\xbd\x6e\xdb\x30\x10\xde\xfd\x14\x07\x21\x43\x0b\x54\x26\x90\xb1\xa0\x05\x04\x59\x3a\xa4\x41\x91\xb8\x59\x03\x9a\x3c\x47\x4c\x69\x4a\x20\x69\x27\x06\xcb\x77\x2f\x48\x4a\x8a\x2c\xcb\x6d\x17\x41\xbc\x9f\xef\xbe\xfb\xf5\x5e\xe0\x56\x6a\x84\xa2\x46\x26\x8a\x10\x16\x00\x54\x49\xfd\x0b\xdc\xb1\xc5\x55\xe1\xf0\xdd\x11\x6e\x6d\x01\x06\xd5\xaa\xb0\xee\xa8\xd0\xd6\x88\xae\x80\xda\xe0\x76\x55\x78\x0f\x2d\x73\xf5\x0f\x83\x5b\xf9\x0e\x21\x10\xeb\x98\x93\x3c\xfa\x10\xa6\xd0\x38\xbb\x8c\xee\x55\xc4\xb5\xdc\xc8\xd6\x81\x35\xfc\xb2\xdf\xeb\xe0\xf6\x6a\x8b\x8a\x92\xec\x53\x2d\xbc\x47\x2d\x42\x58\x2c\x3e\x18\xf3\x46\x3b\xd4\x2e\x92\xa6\x42\x1e\x80\x2b\x66\xed\x2a\x89\x99\xd4\x68\xca\xad\xda\x4b\x91\x43\xd7\xd7\xd5\x4d\x82\xa5\xa4\xbe\x4e\x12\xc7\x36\x0a\x7b\x9f\xfc\x48\xdf\x72\xd3\x18\x81\x06\x45\xf7\xe4\x8d\x52\xac\xb5\x98\x81\xa2\xe3\xa6\x11\xc7\xfc\xef\xfd\x55\x22\xfb\xe8\x98\xc3\x75\xf3\xd0\xbc\xdd\x46\x3c\xf8\xba\x82\xe5\xcd\x8c\x22\x95\x37\xba\x19\xa6\x5f\xb0\xb3\x91\xfa\xe5\x61\xaf\xb0\x57\x66\x54\xee\xe4\x01\x33\xe3\x8c\x36\x12\x0c\x86\xd4\x99\x3e\x01\xef\xa5\x16\xf8\x0e\xf3\x7c\x96\x49\x10\x02\x24\xed\x73\x6c\x35\x9a\x2e\x9f\x0c\x24\x2a\x2a\x7b\x2c\xc9\x1b\x5d\xf2\x1a\x0f\xa6\xd1\xa5\x68\xde\x74\xec\x83\xac\x80\x6e\x2a\xef\x97\xf7\x6c\x87\x21\x50\xb2\xa9\xe0\x93\xf7\x0a\x35\x9c\xb0\x8d\x41\xd2\xf3\x33\x25\x4e\xf4\x21\x28\x71\xa6\x3a\x67\x9d\xe9\x08\x74\x4c\x2a\x3b\xe1\x33\x3c\x00\x62\x77\xc7\x6f\x00\xda\x1a\xac\x28\x6f\x04\x46\x4a\xdf\xd6\xdf\xef\x1e\xb5\x6c\x5b\x74\xa3\xa1\x8a\x24\x93\x05\x25\xd1\x7a\x8c\x47\x26\x80\xde\xcb\xed\x34\x8d\xb1\xfd\xff\xce\x4a\xdd\x1c\xd0\x0c\x73\xa3\x05\x6a\x8b\xa2\x2b\x3a\x2a\xdc\xa1\x76\xf6\x39\xa9\x8b\x49\x3e\x1f\x35\x99\x68\xa2\xae\xae\xee\xd8\x06\x95\xa5\xc4\xd5\x73\xda\xd4\xdd\x4b\xca\x3c\x39\xf0\x28\x35\xbf\x68\xf3\xc4\xd4\x7e\x46\x39\xee\x5a\x5f\xa8\x3c\xb9\x97\x6b\x95\x72\x39\x8f\x21\xa6\xa2\x11\x96\x8a\xc9\x7d\x81\xab\x43\x64\x91\xa6\x3d\xa7\x3b\xc1\xed\xa0\x6c\xcb\x74\x5f\xab\xe4\x09\xe9\x5b\xb6\x46\xee\x98\x39\x16\x95\xf7\x19\x31\x84\xb8\x16\x19\x35\x84\x82\x92\xe8\x39\x47\x23\x1f\x96\x49\x18\x72\x4e\x39\x6d\xc9\x38\x7c\x6a\x6c\x6e\x6f\xe9\x7d\xb7\x65\xf0\x1b\xc6\x3b\x98\x17\x30\x04\x88\xf7\x0d\x9f\xa5\x16\x92\x33\xd7\x18\x88\x97\xb5\xdc\xb7\x2d\x1a\xce\x2c\x46\xda\xfd\x96\x76\x4c\x2f\x51\xf0\xbe\xbf\x06\x6e\xb9\x96\x3b\x5c\xfe\x5c\xdf\x46\xa7\x8b\xd6\x4f\xb9\x02\xe7\x16\x73\xfd\x9d\x16\x83\x92\x34\xaf\xa7\xdb\x72\x6a\x34\xbf\xe8\xde\xa3\xb2\x38\x77\xab\xfe\x72\x84\x4e\xc8\xdc\x37\xb9\x92\x52\xbf\x80\x89\x17\x12\xf2\xe5\x17\xff\x8e\x3c\xf0\xa3\x64\x38\xd7\x43\x26\xdd\xfa\xf7\x66\x7f\x02\x00\x00\xff\xff\x58\x70\x42\x1f\x03\x07\x00\x00") func webUiTemplatesAlertsHtmlBytes() ([]byte, error) { return bindataRead( @@ -138,12 +139,12 @@ func webUiTemplatesAlertsHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/alerts.html", size: 1795, mode: os.FileMode(420), modTime: time.Unix(1470079840, 0)} + info := bindataFileInfo{name: "web/ui/templates/alerts.html", size: 1795, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesConfigHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x4c\x8e\x41\xaa\xc3\x30\x0c\x05\xf7\x3e\x85\xbe\xf7\xfe\x86\xac\x5d\x6f\x7a\x12\x13\xc9\xb5\x20\x28\xc5\x71\x4a\xc1\xf8\xee\x55\x42\x4b\xbb\x93\x98\x81\x79\xbd\x23\x65\x16\x02\x5b\x28\xa1\x1d\x23\xfc\x39\x07\xc2\x4f\x70\x2e\xf6\x4e\x82\x63\x18\xf3\xb5\xe6\x55\x1a\x49\x53\xd1\x00\x04\xe4\x07\xcc\x4b\xda\xb6\xcb\x09\x92\x2a\xd5\xe5\x65\x67\xb4\x51\xb9\x1a\x65\x02\xc6\x93\x66\xbe\xed\x35\x35\x5e\xc5\xc6\xeb\xef\x1b\x7c\x99\xde\xf6\xbd\x92\x46\xff\x75\x85\x3f\xce\x23\xe1\xb5\x11\xcd\x67\xc9\x2b\x00\x00\xff\xff\x41\xfa\xfc\xb0\xaf\x00\x00\x00") +var _webUiTemplatesConfigHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x4c\x8e\xc1\x0a\xc2\x30\x10\x44\xef\xf9\x8a\x35\xf7\x58\xe8\x39\xe6\xe2\x97\x84\xee\xc6\x2c\x94\xad\xa4\x69\x11\x96\xfd\x77\x69\x51\xf4\x36\xc3\x7b\x30\xa3\x8a\x54\x58\x08\x7c\xa5\x8c\xde\x2c\x5e\x42\x00\xe1\x17\x84\x90\x54\x49\xd0\xcc\xb9\x9f\x35\x2d\xd2\x49\xba\x37\x73\x00\x11\x79\x87\x69\xce\xeb\x7a\x3b\x41\x66\xa1\x16\xca\xbc\x31\xfa\xe4\x00\x00\x62\x1d\x81\xf1\xa4\x85\x1f\x5b\xcb\x9d\x17\xf1\xe9\xfe\x5f\xe3\x50\xc7\x8f\xfd\x6c\x94\x54\xaf\x66\x71\x38\xe2\x31\x31\x20\xef\xc9\x7d\x9f\xbc\x03\x00\x00\xff\xff\x41\xfa\xfc\xb0\xaf\x00\x00\x00") func webUiTemplatesConfigHtmlBytes() ([]byte, error) { return bindataRead( @@ -158,12 +159,12 @@ func webUiTemplatesConfigHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/config.html", size: 175, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/templates/config.html", size: 175, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesFlagsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x90\xcf\x6e\xb4\x30\x0c\xc4\xef\x3c\x85\xbf\x68\x8f\x5f\x8a\xb4\xc7\x0a\xb8\x54\xea\xa9\x2f\x11\xb0\xd9\x44\x65\x13\x94\x04\xda\x55\xc4\xbb\xd7\x61\xf9\xd3\x5e\x90\x7e\xcc\x78\x62\x4f\x4a\x48\xbd\xb1\x04\x42\x93\x42\xb1\x2c\xd5\x3f\x29\xc1\x9a\x6f\x90\xb2\x49\x89\x2c\x2e\x4b\x51\x9c\xae\xce\xd9\x48\x36\xb2\xb1\x00\xa8\xd0\xcc\xd0\x0d\x2a\x84\x7a\x15\x14\x5b\xbc\xec\x87\xc9\xa0\x68\x58\x67\x87\xbe\x82\xc1\x5a\x84\xa8\x7c\x9c\xc6\x7e\x50\xb7\x20\x9a\x37\x77\xbf\x2b\x8b\xf2\x23\x47\xbe\xe7\x7f\x55\xa9\xaf\xdb\x44\x54\xed\x40\x7b\xea\x13\xd6\xaf\xe4\x17\x90\x6c\x20\xdc\xb8\x75\x1e\xc9\x1f\x18\xa2\x37\xe3\x41\xda\xcd\xe4\xb7\x25\x72\x68\xeb\xf0\xb1\x13\x40\x4a\x5e\xd9\x1b\xc1\xe5\x93\x1e\xff\xe1\x32\xab\x61\x22\x78\xad\xe1\x05\xd6\xbb\xf6\x21\x7f\x4e\x64\xd4\x10\x3a\x37\x52\x2d\xbc\xfb\x12\x5c\x4e\x9e\xe6\xc2\xca\xa8\xff\xfa\x30\x6b\x6b\xe6\xaa\xe2\xa9\x32\xf9\xdf\x5b\x3c\xeb\x3d\xb4\x73\x49\x86\x7c\x46\x86\xaa\xe4\x96\x9b\x62\x37\xff\x04\x00\x00\xff\xff\xea\x90\xd3\xc6\xb1\x01\x00\x00") +var _webUiTemplatesFlagsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x54\x90\xcd\x4e\xc4\x20\x10\xc7\xef\x7d\x8a\x91\xec\x51\x6c\xb2\x47\x43\x7b\x31\xf1\xe4\x4b\xd0\xce\x74\x21\x76\xa1\x01\x5a\xdd\x10\xde\xdd\x80\xa5\xd5\x0b\xc9\x8f\xff\x47\x66\x26\x46\xa4\x49\x1b\x02\xa6\x48\x22\x4b\x49\x3c\x71\x0e\x46\x7f\x03\xe7\x7d\x8c\x64\x30\xa5\xa6\x39\x5d\xa3\x35\x81\x4c\x60\x29\x35\x00\x02\xf5\x06\xe3\x2c\xbd\xef\x8a\x20\xb5\x21\xc7\xa7\x79\xd5\xc8\xfa\x06\x00\x40\xa8\x2b\x68\xec\x98\x0f\xd2\x85\x75\x99\x66\x79\xf3\xac\x7f\xb3\xf7\xbb\x34\xc8\x3f\x72\xe5\x7b\xfe\x13\xad\xba\xee\x89\x20\x87\x99\x6a\xeb\x2f\x94\x97\x8f\xd6\x20\x19\x4f\xb8\xf3\x60\x1d\x92\x3b\xd0\x07\xa7\x97\x83\x94\xdd\xc8\xed\x43\xe4\xd2\xc1\xe2\xa3\x12\x40\x8c\x4e\x9a\x1b\xc1\xe5\x93\x1e\xcf\x70\xd9\xe4\xbc\x12\xbc\x76\xf0\x02\x65\xaf\x1a\x72\x67\x22\xa3\x02\x3f\xda\x85\x3a\xe6\xec\x17\xeb\x63\xcc\xe9\x94\x44\x1b\xd4\x7f\x1f\x66\xad\x74\x16\x15\x4f\x55\xb4\x7f\x3b\xeb\x79\x0f\xed\x1c\x52\xb4\x65\x8d\x0c\xa2\x45\xbd\xf5\x4d\x35\xff\x04\x00\x00\xff\xff\xea\x90\xd3\xc6\xb1\x01\x00\x00") func webUiTemplatesFlagsHtmlBytes() ([]byte, error) { return bindataRead( @@ -178,12 +179,12 @@ func webUiTemplatesFlagsHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/flags.html", size: 433, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/templates/flags.html", size: 433, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesGraphHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x94\xcd\x8e\x9b\x30\x10\xc7\xef\x79\x0a\xcb\x77\x40\x55\xae\x21\x55\x4f\xbd\xf6\x0d\x56\xc6\x9e\xd4\x26\xc6\xb8\x9e\x81\x06\x21\xde\xbd\x06\x96\x8f\x56\xbb\xd5\xae\x42\xa4\x48\xfe\x18\xff\xe6\x3f\x63\xfc\xef\x7b\x05\x37\xe3\x80\x71\x0d\x42\xf1\x61\x38\xb1\xf8\xbb\x58\xe3\xee\x8c\x3a\x0f\x39\x27\x78\x50\x26\x11\x39\x0b\x60\x73\x8e\xd4\x59\x40\x0d\x40\x9c\xe9\x00\xb7\x9c\xf7\x3d\xf3\x82\xf4\x8f\x38\x31\x0f\x36\x0c\x19\x92\x20\x23\xc7\x33\xd9\xcf\x20\xbc\x4e\xc7\xd3\xd7\xd3\x71\xe4\x16\x9c\xaa\x43\x16\x8c\xbc\xa3\x16\xbf\xd7\x41\x5a\x19\xf7\x9a\xec\xe8\x5c\x45\x5d\x13\x52\xac\x26\x51\x82\x80\x4c\x05\x3e\x26\x85\xf7\x37\x76\x5a\x66\x31\x28\x83\xf1\xc4\x30\xc8\x8f\x17\xf6\x3a\x57\xe7\xb4\x3d\xa7\x65\x64\x5d\xb2\x19\x73\x3d\x82\x69\x45\x57\x37\x34\x09\x3d\x88\xfd\xd7\x45\x3c\xc7\xfc\x7c\xc3\x0f\xca\x77\x4e\xc6\x2f\x46\x8c\xcf\xe1\xcd\xc5\x37\x6a\xfb\x74\xb2\x12\x33\x2d\x9c\xb2\x50\x88\x80\x4f\x0a\x8f\xac\xf2\x57\x03\xa1\x4b\x11\x2c\x48\x32\xf5\xb3\xad\xdf\x88\xba\xa6\x3b\x74\xff\x2a\xfc\x38\xb0\x5c\x1c\xa0\xc4\xaf\x6d\xfe\xe5\x5d\x88\x51\x39\x9f\x02\x5f\x08\x2a\x6f\xe3\xbd\xf2\xfd\xbb\x7d\x24\x5b\xb7\x92\x35\x62\x07\xeb\xfb\xa8\x3c\x7a\xd7\x69\xb3\x33\x59\x3b\x02\x47\xab\xa3\x29\xd3\xee\xd2\x8c\xbb\x22\xc6\x05\xce\xa4\x15\x88\x39\x5f\x57\x92\x9b\x6d\x8c\x5a\x2c\x24\x8b\xe7\xae\x1b\xe1\xbf\xc1\x73\xcc\xf5\x62\x9c\x6f\x68\x09\x2d\xc8\xb1\xf8\x4f\x7c\x30\x95\x08\xdd\x52\x17\x36\x45\x65\xa2\xf9\xb4\xc2\x36\x71\xfa\x4d\x29\xf6\x7d\x54\xc6\x27\x91\x42\xa9\x97\x49\xe8\x58\xe4\xa6\x60\x1e\x2e\xc5\xfe\x09\x00\x00\xff\xff\x61\x2a\x64\xd3\xbb\x05\x00\x00") +var _webUiTemplatesGraphHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x94\xc1\x8e\x9b\x30\x10\x86\xef\x79\x0a\xcb\x77\x40\xd5\x5e\x03\x55\x4f\xbd\xf6\x0d\x56\x83\x3d\x94\x21\xc6\xb8\x9e\x81\x86\x45\xbc\x7b\x45\xb2\x84\x74\xd5\xad\x76\x15\x6e\xc6\xfe\xfd\xcd\xff\x1b\x7b\xa6\xc9\x62\x45\x1e\x95\xae\x11\xac\x9e\xe7\x83\x52\x4a\x1d\x1d\xf9\x93\x92\x31\x60\xae\x05\xcf\x92\x19\x66\xad\x22\xba\x5c\xb3\x8c\x0e\xb9\x46\x14\xad\xea\x88\x55\xae\xa7\x49\x05\x90\xfa\x47\xc4\x8a\xce\x6a\x9e\x33\x16\x10\x32\xcb\x9e\xec\x67\x84\x50\xa7\xcb\xee\xe2\xb0\x1f\x79\x40\x6f\xbb\x98\x45\x32\x27\xae\xe1\xf7\x6d\x90\xb6\xe4\x5f\x8b\xed\x5d\xab\xec\x3a\x61\x89\x10\x12\x0b\x82\x42\x2d\x06\x32\x27\x7c\x7f\xe1\xce\xcb\xd5\x0c\x9b\x48\x41\x14\x47\xf3\xf1\x60\xaf\xdf\xf6\x29\x1d\x9e\xd2\x86\x75\x71\xcc\xae\x98\x62\x0f\xa6\x83\xb1\xeb\xe5\x62\x74\x27\xf6\x5f\x3f\xe2\x31\xe6\xe7\x0f\x7c\xa7\x7a\x4f\xc9\x72\x63\x60\x79\x0e\xff\x9c\xdc\x21\x5b\xd5\xbf\xbc\x8c\x6f\x18\x9f\x86\x34\x9c\xd5\xe0\xad\xc3\x12\x22\x3f\x68\xa8\xe1\xac\xf9\xd5\x63\x1c\x53\x46\x87\x46\xa8\x7b\x34\xe2\x46\xac\x3b\x39\xe1\xf8\xd6\xe1\xc7\x81\xcd\xda\x45\x1a\xfe\x3a\xe4\x5f\xde\x85\x90\xcd\xf5\x45\xf8\x2c\xd8\x06\x07\x82\xfa\xfe\xed\x9f\x93\xed\xb4\x92\x9b\xe2\x0e\x36\x4d\xe8\xed\x3c\x1f\x0e\x5b\x4b\x34\x9d\x17\xf4\x72\xeb\x8a\x96\x86\xbb\x32\xcb\x2a\x90\xc7\xa8\x95\x71\xc0\x9c\xeb\xdb\x4c\x52\xb9\x9e\xec\xda\x86\x32\x4b\x43\xb1\x11\xfe\x2b\xbe\x6a\x8a\x23\xf9\xd0\xcb\x2a\x2d\xc5\xab\x52\x7c\x12\x22\xb5\x10\xc7\x35\x17\xf7\x65\x4b\xa2\xd5\x00\xae\xc7\x5c\x7f\xb3\x56\x7d\x5f\x9c\xe9\x8b\x49\xb0\xf6\xf9\x62\x74\x09\xb9\x39\xb8\x0e\xd7\xb0\x7f\x02\x00\x00\xff\xff\xe7\x54\x86\x72\xff\x05\x00\x00") func webUiTemplatesGraphHtmlBytes() ([]byte, error) { return bindataRead( @@ -198,12 +199,12 @@ func webUiTemplatesGraphHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/graph.html", size: 1467, mode: os.FileMode(420), modTime: time.Unix(1470079950, 0)} + info := bindataFileInfo{name: "web/ui/templates/graph.html", size: 1535, mode: os.FileMode(420), modTime: time.Unix(1476349925, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesRulesHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x44\x8e\xc1\x8a\xc3\x20\x10\x86\xef\x3e\xc5\xac\x77\x23\xe4\x6c\x3c\xef\x61\x17\x96\x6d\x5f\xc0\xc6\x49\x15\xc2\x54\x8c\x29\x01\xf1\xdd\x3b\x09\x0d\x3d\xcd\xe1\xfb\x86\xff\xab\xd5\xe3\x14\x09\x41\x06\x74\x5e\xb6\x66\xbe\x94\x02\x8a\x1b\x28\x65\x6b\x45\xf2\xad\x09\xf1\xb1\xc6\x07\x15\xa4\xc2\xa2\x00\x30\x3e\x3e\x61\x9c\xdd\xb2\x0c\x07\x70\xac\x64\x35\xcd\x6b\xf4\xd2\x32\x67\x23\xf4\x10\xfd\x20\xf3\x3a\xe3\x22\xed\xff\x7e\x8c\x0e\xfd\x9b\xa6\x8c\x3c\x92\x1d\xdd\x11\xba\x03\xb6\x56\x6b\xf7\x7d\xfd\xfd\xb9\x50\x4c\x09\x0b\x24\x57\xc2\x5f\xe6\xf5\x8d\xdb\x6e\x59\x9f\x51\x46\xef\xcf\x7b\x84\xe6\x0a\x2b\xce\xd6\x57\x00\x00\x00\xff\xff\x04\x2c\xc2\x57\xd1\x00\x00\x00") +var _webUiTemplatesRulesHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x44\xce\xc1\x4a\xc7\x30\x0c\xc7\xf1\x7b\x9f\x22\xf6\xde\x7f\x61\xe7\xae\x67\x0f\x0a\xa2\xbe\x40\x5d\x33\x1b\x18\xb1\x74\xdd\x18\x84\xbc\xbb\x6c\x38\x3c\xe5\xf0\xcd\x0f\x3e\x22\x19\x67\x62\x04\x5b\x30\x65\xab\x1a\x9e\x9c\x03\xa6\x03\x9c\x8b\x22\xc8\x59\xd5\x98\xff\xaf\xe9\x87\x3b\x72\xb7\xaa\x06\x20\x64\xda\x61\x5a\xd2\xba\x8e\x57\x48\xc4\xd8\xdc\xbc\x6c\x94\x6d\x34\x00\x00\xa1\x0c\x40\x79\xb4\x6d\x5b\x70\xb5\xf1\xfd\x3c\xc1\x97\xe1\xaf\xd6\x86\x51\xa4\x25\xfe\x46\x78\x5c\x51\x55\xe4\xf1\xfc\xf9\xfa\xf2\xc1\x54\x2b\x76\xa8\xa9\x97\xb7\x86\x33\x1d\xaa\xe1\xab\xf9\x1b\x15\xfc\x39\x3e\x11\x3e\xd3\x1e\xcd\x6d\xfd\x0d\x00\x00\xff\xff\x04\x2c\xc2\x57\xd1\x00\x00\x00") func webUiTemplatesRulesHtmlBytes() ([]byte, error) { return bindataRead( @@ -218,12 +219,12 @@ func webUiTemplatesRulesHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/rules.html", size: 209, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/templates/rules.html", size: 209, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesStatusHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x54\xb1\x6e\x83\x30\x10\xdd\xf9\x0a\xd7\x3b\x41\xca\x4c\x3c\xa4\x95\xaa\xae\x51\xd3\xdd\xe0\x8b\x7c\x12\xb1\xa3\xb3\x93\xb6\x42\xfc\x7b\xcf\x09\x04\x45\x6a\x4b\x2a\x96\x2e\x70\xcf\xf7\xf4\xde\xf1\x6c\xdc\xb6\x06\x76\xe8\x40\x48\x0b\xda\xc8\xae\x2b\x1f\xf2\x5c\x38\xfc\x10\x79\xae\xda\x16\x9c\xe9\xba\x2c\x1b\x59\xb5\x77\x11\x5c\x64\x62\x26\x44\x69\xf0\x24\xea\x46\x87\xb0\x3a\x37\x34\x53\x28\xdf\x35\x47\x34\x52\x71\x9f\x19\x76\x29\xd0\xac\x24\x1d\x5d\xc4\x3d\x48\xb5\xb9\x14\xe2\xc5\xed\x3c\xed\x75\x44\xef\xca\xc2\x2e\x7b\x76\xd4\x55\x03\x83\xe2\x05\x9c\x9f\x39\xab\x1b\x70\x01\x4c\x8f\x2b\x4f\x06\xe8\x0a\x43\x24\x3c\x5c\x91\xf5\x27\xa0\x7e\x80\x24\x5a\x79\xf3\x39\xa0\x84\x69\x04\x09\x5a\xb5\x3d\xa4\x99\xca\x82\xcb\x9b\x8e\xe1\x04\x16\x6b\xa4\x68\x17\xdb\xd7\x47\xce\xa6\xe0\xa5\x51\xa8\x18\x95\xb8\x1e\x5d\x18\xa4\x39\x54\x76\x13\x41\x75\xc4\xc6\xe0\xf8\xd9\x52\xad\xd3\xca\xbf\x4a\x42\x84\xda\x1f\x80\xb7\xcb\xbf\x4b\xf5\x06\x14\xce\x43\x7d\x1b\x4b\xdf\x1d\xde\xbf\x85\x33\xe9\xb4\x81\x13\xde\x61\x35\xd0\x66\x79\xad\x49\xbb\xda\x4e\x38\x5d\x48\xf3\x7c\xd2\xe6\x6e\x03\xd0\x94\xd5\xc0\x9b\xef\xf6\xa4\xe3\x4f\x87\xf8\xc6\x2d\xf1\x66\xb9\x3d\xfb\xfb\xce\xc6\x95\xf7\xf7\x5f\x27\x95\x7c\xbb\xa8\x6c\xb8\x83\xbe\x02\x00\x00\xff\xff\xed\x7c\x6c\xc8\xa9\x04\x00\x00") +var _webUiTemplatesStatusHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x94\x31\x6f\x83\x30\x10\x85\x77\x7e\x85\xeb\x9d\x20\x65\x76\x3c\xa4\x95\xaa\xae\x51\xd3\x1d\xb8\x8b\x7c\x12\xb1\xa3\xb3\x43\x5b\x21\xff\xf7\xca\x04\x42\x22\xb5\x4d\x2a\x96\x2e\xe0\xc7\x3d\xdd\x77\x3c\x8c\xbb\x0e\x70\x47\x16\x85\x34\x58\x82\x8c\x51\x3d\xe4\xb9\xb0\xf4\x21\xf2\x5c\x77\x1d\x5a\x88\x31\xcb\x26\x57\xed\x6c\x40\x1b\x64\x8c\x99\x10\x0a\xa8\x15\x75\x53\x7a\xbf\xea\x0b\x25\x59\xe4\x7c\xd7\x1c\x09\xa4\xce\x84\x10\x42\x99\xa5\x20\x58\x49\x3e\xda\x40\x7b\x94\x7a\x73\x5a\x88\x17\xbb\x73\xbc\x2f\x03\x39\xab\x0a\xb3\x1c\xdc\xa1\xac\x1a\x1c\x3b\x9e\x44\x7f\xcd\x6b\x67\x01\xad\x47\x18\x74\xe5\x18\x90\xcf\xd2\x07\xa6\xc3\x59\x19\xd7\x22\x0f\x03\xa4\xa6\x95\x83\xcf\x51\x25\xcd\x93\x48\xd2\xe8\xed\x21\xcd\xa4\x8a\x60\xae\x2b\xa0\xbb\x6e\xb1\x26\x0e\x66\xb1\x7d\x7d\x8c\x51\x15\x01\x2e\x1a\x15\x53\x27\x55\x5c\x50\x54\xd1\xcf\xa1\xb3\xab\x08\xaa\x23\x35\x40\xd3\x6b\x4b\xbd\x4e\x4f\xfe\x55\x12\xc2\xd7\xee\x80\x2b\xc9\xee\x5d\xea\x37\x64\xdf\x0f\xf5\x6d\x2c\x43\x75\xbc\xff\x16\xce\x4d\xd2\x06\x5b\xba\x03\x35\xda\x66\xb1\xd6\x5c\xda\xda\xdc\x20\x9d\x4c\xf3\x38\xe9\xe3\x6e\x3d\xf2\x2d\xd4\xe8\x9b\x4f\x7b\x2a\xc3\x4f\x9b\xf8\x8a\x96\x7c\xb3\x68\xcf\xee\xbe\xbd\x71\xf6\xfd\xfd\xd7\x49\x4b\xa0\x56\x67\xe3\x19\xf4\x15\x00\x00\xff\xff\xed\x7c\x6c\xc8\xa9\x04\x00\x00") func webUiTemplatesStatusHtmlBytes() ([]byte, error) { return bindataRead( @@ -238,12 +239,12 @@ func webUiTemplatesStatusHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/status.html", size: 1193, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/templates/status.html", size: 1193, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiTemplatesTargetsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x56\x4f\x6f\xdb\x36\x14\xbf\xfb\x53\x70\x5c\xb0\xd3\x64\x01\x01\x76\xc9\x64\x1d\x36\x04\xc8\x80\xac\x48\x9b\xf4\xd2\x4b\x40\x89\xcf\x12\x1b\x86\x54\xc9\xe7\x20\x81\xa2\xef\xde\x47\x4a\x72\x6c\xc9\x2e\x92\x06\xa8\x0f\x34\xf9\xfe\xff\xf9\x3d\x52\x6d\x2b\x61\xad\x0c\x30\x5e\x83\x90\xbc\xeb\xb2\xdf\x92\x84\x19\xf5\xc8\x92\x24\x6f\x5b\x30\xb2\xeb\x16\x8b\x17\xa9\xd2\x1a\x04\x83\x24\xb8\x60\x2c\x93\xea\x81\x95\x5a\x78\xbf\x8a\x0c\x41\x22\x2e\x59\xeb\x8d\x92\x3c\x27\x3e\x49\xd4\xa7\x4c\xc9\x15\x47\xe1\x2a\x40\xcf\xf3\x9b\x7e\x93\xa5\xf5\x69\x2f\x41\x32\x28\x0a\x0d\xa3\x9d\xfe\x10\xd7\x84\x6c\x4a\x30\x1e\xe4\x70\x2e\xac\x93\xe0\xb6\x47\x8f\x4e\x35\xdb\x53\x6d\x1f\xc0\xf1\xd1\x28\x63\x6d\xeb\x84\xa9\x80\x9d\x7c\xb5\xc5\x9f\xec\xa4\xb1\x56\xb3\xb3\x15\x5b\x5e\xd1\xc6\xc7\xf0\xc7\x5f\x86\x21\xf7\x7c\x87\x12\x68\x2e\x27\x3a\x2b\x49\xb8\x11\x66\xc5\xff\xe2\x63\x84\x64\xef\x36\x28\x04\x6f\x99\x88\xe9\x11\x29\x69\xdb\xe0\xa9\xeb\x38\xab\x1d\xac\x57\xfc\xf7\x3d\x62\x3e\xee\xb2\x54\xe4\x59\x8a\x75\x58\xdc\xdc\xe7\x1e\x21\x86\x96\x9f\x1b\xd9\x58\x65\x30\x6a\x1d\xe0\x5f\xa3\x40\x38\xc6\xbc\x14\x05\x68\x7f\x9c\xeb\x91\x5d\x97\x4e\x34\x47\x0d\x9c\x3b\x67\xdd\x9c\x39\x8d\x3e\x48\x4c\x8a\x98\x61\x61\xe5\xd3\x2e\x65\xdb\x92\xd0\x8c\xbd\x16\x1c\x49\x5e\xce\x48\x62\xa8\x6e\xdb\x2e\x3f\x7f\xba\x64\xcf\xac\xd2\xb6\x10\x9a\xf6\x7d\x91\x03\x75\x79\x5d\xd6\x70\x0f\x5d\x77\x96\xa6\x03\xe5\xc2\x7a\xec\xba\xe1\x70\x25\xb0\x1e\x1a\x51\xcc\x9c\xee\x44\xa9\x43\xed\x08\x3a\x0f\x42\x6f\xc0\x47\xf0\x04\xf5\x8f\x1b\x70\x4f\x6c\x12\xfe\x44\x55\x8d\x6a\x41\x6b\x30\x70\x50\x83\x52\x0a\xf8\x1a\xb1\x15\x5d\xb2\xb8\x26\x8d\x53\xf7\xc2\x3d\x45\xe8\x44\x4a\xd7\x85\xbc\x7b\x6b\x94\x6d\x96\x06\xcd\x79\xfc\x21\x8c\x7e\x6e\x5f\x47\xa7\xd6\xcd\xeb\x3c\x27\x4d\x22\x15\x1a\x1c\xb2\xb8\x12\xca\xd9\xf2\x02\x84\xa6\x79\x79\x66\x75\xdc\xdc\xd8\x7f\x83\x1c\x95\x89\xf9\x80\xcf\x5b\x65\xa4\x2a\x05\x5a\xc7\x10\x1e\x31\xd9\x34\x0d\xb8\x52\x78\xe0\x87\x13\x18\xec\x1d\x48\xe2\x70\xda\x3f\x97\x44\xb9\x71\xde\xba\x24\x8e\x17\x8d\x33\x93\x02\x45\x82\xb6\xaa\x34\xd0\x4d\x44\x20\x45\xd5\x70\x86\x0a\xc3\x79\x60\xd7\x78\xaf\x57\xe8\xa8\xb5\xf1\x68\x9d\xaa\x94\x11\x3a\x19\xa4\xb2\x22\xff\x07\xd6\xd6\x01\x73\x10\xbb\xa6\x4c\x75\x96\xa5\x45\xbe\xc5\xc6\x5d\xc0\x46\x44\xd3\xff\x80\xa2\x1f\x50\x82\x23\x41\x91\x9a\x7b\x17\x2a\x48\x1e\x86\x3f\x6a\xf9\x1f\xdf\x36\x16\xff\x0e\x7d\x9f\xb2\x46\x4e\x6c\xea\x91\x3a\xf6\xc8\x89\xe0\x8d\xd7\x65\xef\x8e\x2d\x87\xff\x70\x73\x71\xc6\x95\xa1\x26\x99\x12\xf8\x8f\x51\xbd\x37\x10\x11\xd9\x7a\x88\xfe\x17\x22\x5b\x7b\x78\xab\x3f\x7a\xbc\xc4\x46\x23\xcf\x8d\x35\xf0\xf6\xb1\x79\x27\xe2\xda\x56\xad\x43\xc1\x3d\xf6\x37\xed\xf2\x3f\xff\x05\x9c\xed\xba\x0f\x40\x2f\xd6\x98\x51\xdb\x7a\x45\x1d\xd8\x15\xa4\xd9\x11\x95\x7d\xe7\xd0\xbe\x78\x8f\x37\xf9\xa1\xf4\x8e\x8d\xb5\x0c\x5d\x77\xd3\xf9\x8d\xb7\xec\x8e\xbd\x63\xf5\x7c\x6d\xdc\xd3\x97\x64\xae\x47\x12\xfb\x2f\xc9\xbe\x08\xb1\xc3\x07\x40\x60\x67\x29\x7d\x91\xe4\x8b\x91\xff\x3d\x00\x00\xff\xff\x29\xce\xb1\xf5\xdd\x08\x00\x00") +var _webUiTemplatesTargetsHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\x55\xcd\x8e\xdb\x36\x10\xbe\xfb\x29\xa6\xec\xa2\xa7\xc8\x02\x02\xf4\xb2\xa5\x74\x68\x11\x20\x05\xb6\x45\x9a\x4d\x2e\xbd\x04\x94\x38\x96\xb8\xe1\x92\x2a\x39\x32\xb2\x60\xf8\xee\x05\x29\xc9\xb1\x65\xbb\x48\xba\x40\x7c\xa0\x35\xff\x7f\xdf\x90\x21\x48\xdc\x29\x83\xc0\x7a\x14\x92\xc5\xc8\x7f\x28\x0a\x30\xea\x13\x14\x45\x1d\x02\x1a\x19\xe3\x66\xf3\x45\xab\xb5\x86\xd0\x10\x8b\x71\x03\xc0\xa5\xda\x43\xab\x85\xf7\x55\x16\x08\x65\xd0\x15\x3b\x3d\x2a\xc9\xea\x0d\x00\x00\xef\x5f\x82\x92\x15\x23\xe1\x3a\x24\xcf\xea\x77\xd3\x07\x2f\xfb\x97\x93\x06\x00\x27\xd1\x68\x5c\xfc\x4c\x44\x3e\x8b\xd6\x1a\x89\xc6\xa3\x9c\xe9\xc6\x3a\x89\xee\x40\x7a\x72\x6a\x38\x50\xbd\xdd\xa3\x63\x8b\x53\x80\x10\x9c\x30\x1d\xc2\xcd\x83\x6d\x5e\xc0\xcd\x60\xad\x86\xdb\x0a\xb6\x6f\xac\xd5\x3e\xa7\xbf\xfc\x38\xa5\xda\xeb\x23\x4e\xe2\xb9\x9a\x53\x0f\xad\xd5\x7e\x10\xa6\x62\x3f\xb3\x25\xc3\x07\xdb\x7c\x48\x06\x29\x1a\x17\xb9\xbc\x07\xdb\x14\x21\xa4\x48\x31\x32\xe8\x1d\xee\x2a\xf6\xe3\x09\xb3\x5e\xbe\x78\x29\x6a\x5e\x52\x9f\x0e\x77\x1e\xf3\x84\x91\x53\xab\x5f\x19\x39\x58\x65\x28\x5b\x5d\x90\xdf\x93\x20\xbc\x26\xbc\x13\x0d\x6a\x7f\x5d\xea\x09\xee\x5b\x27\x86\xab\x0e\x5e\x39\x67\xdd\xb9\x70\x9d\x7d\xd2\x58\x35\x91\x53\x63\xe5\xd3\x31\xe7\x30\x92\x34\x8c\x93\x11\x5c\x29\x5e\x9e\xb1\xc4\xdc\xdd\x10\xb6\xef\xdf\xde\xc1\x67\xe8\xb4\x6d\x84\x7e\xff\xf6\x6e\x6a\x72\xe2\x6e\xef\xdb\x1e\x1f\x31\xc6\xdb\xb2\x9c\x39\xaf\xad\xa7\x18\x67\xe2\x8d\xa0\x7e\x1e\x44\x73\x16\xf4\x28\x4b\x9d\x7a\xf7\x02\x6e\xf6\x42\x8f\xe8\x33\x78\x92\xf9\x5f\x23\xba\x27\x58\xa5\xbf\x32\x55\x8b\x59\xb2\x9a\x1d\x5c\xb4\x00\xe0\x09\x5f\x0b\xb6\x72\x48\xc8\x67\x31\x38\xf5\x28\xdc\x53\x86\x4e\xe6\xc4\x98\xea\x9e\xbc\xc5\xc8\x78\x99\x2c\xcf\xf3\x4f\x69\x4c\x7b\xfb\x75\x7c\x5e\x5e\xe8\xf3\x39\x6b\x95\xa9\xd0\xe8\x08\xf2\x59\x84\x00\xdb\xd7\x28\x34\xf5\xf0\x19\xfa\xfc\xf1\xce\xfe\x96\xf4\x20\x46\xf0\x09\x9f\x1f\x94\x91\xaa\x15\x64\x1d\x10\x7e\xa2\x62\x1c\x06\x74\xad\xf0\xc8\x2e\x17\x30\xfb\xbb\x50\xc4\xe5\xb2\xff\x5f\x11\xed\xe8\xbc\x75\x45\x5e\x2f\x74\x0c\xa4\x20\x51\x90\xed\x3a\x8d\x15\x23\x6b\x35\xa9\x81\x01\x29\x4a\xf4\x2c\xee\xe9\x51\x57\xe4\x46\x9c\x48\xeb\x54\xa7\x8c\xd0\xc5\xac\xc5\x9b\xfa\x57\xdc\x59\x87\xe0\x30\x4f\x4d\x99\xee\x96\x97\x4d\x7d\xc0\xc6\xc7\x84\x8d\x8c\xa6\x3f\x90\xc4\xb4\xa0\x31\x26\x28\x86\x70\xf3\x31\x75\x90\x1e\xf5\xfc\x17\x63\xf5\xd3\x3f\xa3\xa5\x5f\xd2\xdc\xd7\xa2\x45\x92\x87\x7a\xa5\x8f\x13\x72\x32\x78\xf3\x75\x39\x85\x83\xed\xfc\x9f\x6e\x2e\xf6\xdf\x50\x3e\xd9\x82\x0c\x67\x3d\xa7\xfc\x1d\xe1\xac\x3d\x7e\x6b\x3c\x89\x3b\x31\x6a\x62\xb5\xb1\x06\xbf\x7d\x57\x9e\x09\xb3\x10\xd4\x2e\x75\xd9\xd3\x74\xbd\x6e\x7f\xf7\x7f\xa3\xb3\x31\xfe\x89\x7b\x74\x4b\x45\x21\x78\x65\x5a\x3c\x56\x8c\x11\x44\x67\x9f\xb9\xa9\x5f\xa2\xe7\xeb\xfb\x52\x79\xd7\x76\x59\xa6\xa9\xbb\xf5\xd2\xe6\xab\xf5\xc8\xdf\xb5\x7e\x7e\x6d\xde\xeb\xe7\xe3\xdc\x8e\x97\xab\xe7\xe3\x54\x85\x97\xf9\xd5\x4f\x62\x5e\x4a\xb5\xaf\x37\x8b\xfc\xdf\x00\x00\x00\xff\xff\x19\xaf\xc8\xb6\xd2\x08\x00\x00") func webUiTemplatesTargetsHtmlBytes() ([]byte, error) { return bindataRead( @@ -258,7 +259,7 @@ func webUiTemplatesTargetsHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/templates/targets.html", size: 2269, mode: os.FileMode(420), modTime: time.Unix(1471610318, 0)} + info := bindataFileInfo{name: "web/ui/templates/targets.html", size: 2258, mode: os.FileMode(420), modTime: time.Unix(1476349924, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -278,12 +279,12 @@ func webUiStaticCssAlertsCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/css/alerts.css", size: 74, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/css/alerts.css", size: 74, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticCssGraphCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\xdb\x8e\xe3\x36\x0c\x7d\x9f\xaf\x50\x67\x50\x60\xb7\x88\x0d\x3b\x9b\x74\x66\x1d\x6c\x81\xbe\xf5\x1f\x8a\x85\xc1\xd8\xb4\x23\x44\x96\x0c\x49\xb9\x4c\x8b\xfe\x7b\x29\xc9\x4e\xe4\xdc\xda\x01\x76\x77\x62\x40\x26\xc5\x43\x9e\x43\x32\x59\xab\xfa\x9d\xfd\xfd\xc4\x58\x07\xba\xe5\xb2\x60\xd9\xea\xe9\x9f\xa7\xa7\x14\xf7\x20\x4a\x63\xc1\x1a\x6f\x6d\x94\xb4\x89\xe1\x7f\x61\xc1\xf2\xbc\x3f\x06\x9f\x56\x43\xbf\x29\x0f\xf4\xec\x51\x47\x41\x12\xab\x7a\xf2\x9b\x4f\xfc\xbc\xbd\x57\x86\x5b\xae\x08\x46\xa3\x00\xcb\xf7\xb8\xa2\xb7\x02\x1b\x5b\xb0\x45\xe6\xfc\x29\x06\x05\xd8\x20\x6f\x37\xfe\x5d\x36\x04\x79\x81\xba\x2e\xcf\x81\x26\x40\xa3\x4f\x2a\x61\x9f\x58\x58\x9b\xff\xe3\xf2\x1b\x13\x9c\x1e\x10\xf2\xa2\xe8\x5c\xb6\x05\x5b\xf6\xc7\xc8\x99\x1c\x93\x1e\x24\x7a\x9f\xb5\xd2\x35\xea\x24\x24\x4b\x1c\x30\xa3\x04\xaf\xd9\x4b\x5d\xd7\xab\xb3\x59\x87\xc4\xef\xda\xd7\xca\x5a\xd5\xdd\x72\x88\x73\x88\x79\x33\xfb\x36\xc6\x0f\xf5\x9c\x6f\x03\xc0\x43\xf8\xa9\xfd\x06\xbc\x77\x70\x70\x02\x5b\x94\xb5\xc7\xaa\xb9\xe9\x05\xbc\x17\x8c\x4b\xc1\x25\x26\x6b\xa1\xaa\xad\x0b\xb3\x47\x6d\x79\x05\x22\x01\xc1\x5b\x92\x91\xb2\x59\xc5\xcd\xe3\xff\x2f\xb2\x69\x87\x80\x46\x78\x20\xbf\xef\xad\x06\x3a\x2e\x08\xf0\x77\xcd\x41\xcc\xd8\x1f\x28\xf6\xe8\x90\x66\xcc\x80\x34\x89\x41\xcd\x9b\x18\xc9\x09\x95\x85\x67\x80\x7a\x2f\xe1\xc8\x83\xf2\x8a\xb2\x6c\x84\x3a\x14\x6c\xc3\xeb\x1a\xe5\x6a\x02\x4d\xe2\x2b\xb1\xb3\x1e\x7a\x24\x33\x30\x14\xa8\xc9\xdc\xe1\xc0\x6b\xbb\x29\x2e\x2b\x61\x69\x8d\x16\xb8\x60\x29\xb7\xd8\xa5\x50\xb9\x12\x3c\xa4\x67\x69\xec\xda\x3c\x5d\x60\x37\x91\x34\x4b\x97\xee\x8d\x67\x19\xd6\x28\xee\x0c\xd5\x65\x9c\xfc\x01\xfa\x78\x2a\xcd\x01\x6c\x15\xa6\x82\x8a\x06\xba\xe7\x9b\x60\xf5\x48\xc6\xa1\xbc\x7c\x18\xb9\x13\xe0\x38\x82\x03\xc9\x34\xc1\xfe\x93\xb1\x37\x6f\xa0\x54\xb8\xec\x77\xf6\x4f\xcb\xad\xc0\x6f\xbf\x7c\x2f\x36\x8e\xeb\x02\x1a\x3b\x2c\x80\x8a\x4a\x42\x49\xa1\xc0\x5a\xfd\xc9\xbb\x7d\x0e\x25\x90\xa5\xe1\x2d\xf3\xf7\x67\x6c\x3c\x1a\x14\x58\x59\x7f\xf5\x94\xc4\x3c\x4e\x22\x89\x64\x89\xc2\x78\x16\x6f\xb5\xea\xc9\x8b\x44\xc6\x92\x06\x58\xe0\x64\xbd\xf9\x8e\x09\x00\x11\xfd\x59\xfa\x36\xe8\x33\x24\x24\xa1\xc3\x6f\xcf\x5c\x52\xdf\xd9\xb2\x43\xab\x79\xf5\x1c\x6f\x95\x53\x56\xa3\x42\x35\x58\xec\x79\xb5\x1d\x78\x88\xa5\xcd\x7a\xeb\x7d\x02\x75\x21\x32\x0d\x5a\xe9\xcf\xcf\xdf\x67\x2c\x36\x68\x90\x2d\x8e\xa6\x18\x31\xec\x9d\x24\x9f\x90\x33\x8c\x7b\x72\x6a\x14\xd4\x5a\xe9\xab\x95\x76\xa1\x69\x70\x5d\x5b\x49\x3a\x34\x4a\x77\x89\x53\x4d\x2b\x1a\xbb\x3b\xeb\x71\x5c\x2e\x50\xf3\x9d\x39\x49\xd1\x6b\x45\xcc\x6c\x70\x67\x42\xbe\xb4\x9e\xd5\xae\x7f\xbc\x3f\xc6\x2c\x5c\xa7\x8d\x99\x9d\xc7\x15\x76\x56\x3d\x8a\x9d\x46\xec\x5c\x73\xf3\xe5\xeb\x58\xda\x9d\xcc\x5c\xc9\x97\xea\x9c\x95\xbf\x7b\xeb\x0c\x77\x1a\x9b\x8b\xb9\x99\x7f\x0d\xe7\x13\xe7\xbf\xba\xaf\x91\xf9\x55\x9b\xe5\x8b\x5b\x53\x9e\x2e\xe6\x6f\xcb\xd7\x7c\xf1\x65\xe5\x07\x48\x28\x5d\xb0\x97\xe5\x72\xe9\x97\x12\x54\x5b\x97\x86\xac\x93\xd1\xd2\x34\xcd\x85\x85\x77\xd0\x52\x74\xa9\x24\x9e\x57\xfd\x64\xc7\x57\x55\xe5\x2c\xc9\x01\xd7\x5b\x6e\xa9\x7b\x8f\x89\xd9\x40\xed\x38\x77\x3d\x6e\x69\xc2\x9d\xb7\xfb\xe8\x76\x0d\x9f\xb2\x19\x0b\x7f\x69\xf6\xba\xfc\x1c\x82\x7e\xf8\xca\x88\x66\x49\xb5\x71\xf9\x0e\x9d\xe4\x6b\x61\x08\x06\x13\x92\x4f\x11\xbd\x69\xbe\x34\xb3\x1b\x09\x5e\x39\xf9\xc8\xea\x23\x41\xff\x23\xd8\x8f\x8a\xf4\xa8\x85\xdc\x76\x28\xaf\xfa\x68\x7e\xfa\x75\x93\xe2\xb1\xd7\x68\x0c\x25\x71\xed\x46\xed\xf6\x33\xfb\x89\x77\xbd\xd2\x16\xa4\xbd\xb1\x1b\xf3\x5b\x71\xa2\xd5\x3a\xe2\xf9\xa9\xbb\x19\x29\x4c\xd0\xeb\xf4\x7b\xdb\xad\x05\xa0\x56\xd5\x2c\xa5\xfd\xb7\xa5\xca\x0f\x65\xf4\x23\xe1\x46\x6f\xce\xfd\xbf\xd5\x9d\x95\xf1\x6f\x00\x00\x00\xff\xff\xe4\x08\x14\x6d\x6c\x0a\x00\x00") +var _webUiStaticCssGraphCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x56\x6d\x8f\xdb\x36\x0c\xfe\x9e\x5f\xc1\xdd\x61\x40\x3b\xc4\x86\x9d\x26\xbb\xab\x83\x16\xd8\xb7\xfd\x87\xa1\x30\x68\x8b\x76\x84\x93\x25\x43\x62\x5e\x6e\x43\xff\xfb\x20\x29\x4e\xec\xbc\x6d\x05\x7a\x77\x39\x40\x21\xc5\x87\x7c\x48\x3e\x76\x65\xc4\x3b\xfc\x33\x03\xe8\xd0\xb6\x52\x17\x90\xad\x67\xdf\x67\xb3\x94\x76\xa8\x4a\xc7\xc8\x2e\x58\x1b\xa3\x39\x71\xf2\x6f\x2a\x20\xcf\xfb\x43\xf4\x69\x2d\xf6\x9b\x72\x6f\xb1\xef\xc9\x8e\x82\x24\x6c\xfa\x02\xf2\xc5\xc4\x2f\xd8\x7b\xe3\x24\x4b\xa3\x0b\xb0\xa4\x90\xe5\x8e\xd6\x33\x00\x45\x0d\x17\xb0\xcc\xbc\x3f\x40\x27\x75\xb2\x21\xd9\x6e\xc2\x77\xd9\x31\xc8\x33\x0a\x51\x9e\x03\x4d\x80\x06\x9f\x54\xe3\x2e\x61\xac\xdc\xff\x71\xf9\x0a\x4a\xc2\x57\xc0\x98\x17\x0a\x21\x75\x5b\xc0\xaa\x3f\x8c\x9c\x19\xab\xa4\x47\x4d\xc1\xa7\x32\x56\x90\x4d\x62\xb2\x79\x7f\x00\x67\x94\x14\xf0\x2c\x84\x58\x9f\xcd\x36\x26\x7e\xd7\x5e\x19\x66\xd3\xdd\x72\x18\xe7\x30\xe6\xcd\xed\xda\x31\x7e\xac\xe7\x7c\x1b\x11\x1f\xc2\x4f\xed\x37\xe0\x83\x83\x87\x53\xd4\x92\x16\x01\x4b\x48\xd7\x2b\x7c\x2f\x40\x6a\x25\x35\x25\x95\x32\xf5\x9b\x0f\xb3\x23\xcb\xb2\x46\x95\xa0\x92\xad\x2e\x80\x4d\xbf\x1e\x0f\x4f\xf8\x5d\x66\xd3\x09\x41\x4b\xf8\xa0\xfd\x61\xb6\x1a\xec\xa4\x7a\x2f\xe0\x0f\x2b\x51\xcd\xe1\x4f\x52\x3b\xf2\x48\x73\x70\xa8\x5d\xe2\xc8\xca\x66\x8c\xe4\x1b\x95\xc5\xff\x11\xea\xbd\xc4\x83\x8c\x9d\x37\x3b\xb2\x8d\x32\xfb\x02\x36\x52\x08\xd2\xeb\x09\x34\x56\xce\xa8\x2d\x07\xe8\x81\xcc\xc8\x50\xa4\x26\xf3\x87\xbd\x14\xbc\x29\x2e\x2b\x81\x54\x10\xa3\x54\x90\x4a\xa6\x2e\xc5\xda\x97\x10\x20\x03\x4b\xc3\xd4\xe6\xe9\x92\xba\x49\x4b\xb3\x74\xe5\xbf\x09\x2c\x63\x45\xea\xce\x52\x5d\xc6\xc9\x1f\xa0\x0f\xa7\xd2\xed\x91\xeb\xb8\x15\x8d\x32\xc8\x05\x84\x21\x58\x3f\x6a\xe3\xb1\xbc\xfc\xb8\x72\x27\xc0\x61\x05\x8f\x24\x2f\xfa\x43\xf8\x64\xf0\x1a\x0c\xdf\x67\x33\xa9\xfb\x2d\xff\xc5\x92\x15\x7d\xf9\xed\x5b\xb1\xf1\x5c\x17\xd8\xf0\x51\x00\x6a\xa3\x99\x34\x17\x80\xcc\xf6\x43\x70\xfb\x18\x4b\xa8\x8d\x6e\x64\x0b\xe1\xfe\x1c\x86\xa3\x23\x45\x35\x87\xab\xa7\x24\x16\xe3\x24\x92\x51\x5b\x46\x61\x02\x8b\xb7\x46\xf5\xe4\xe5\x8c\xa2\x92\xb1\x52\x34\x91\xb7\x30\x31\x11\x60\x44\x7f\x96\xbe\x1e\xfb\x73\x4c\x48\x63\x47\x5f\x9e\xa4\x76\x64\xb9\xec\x88\xad\xac\x9f\xc6\xaa\x72\xca\x6a\xe8\x90\x40\xa6\x5e\xd6\x6f\x47\x1e\xc6\xad\xcd\x7a\x0e\x3e\x91\xba\x18\x99\xb4\x28\xc3\xf9\xe9\xdb\x1c\xc6\x06\x8b\xba\xa5\xc1\x34\x46\x8c\xba\x93\xe4\x13\x72\x8e\xeb\x9e\x9c\x06\x85\xac\x35\xf6\x4a\xd2\x2e\x7a\x1a\x5d\x2b\xd6\x73\x48\x1b\x63\xbb\xc4\x77\xcd\x1a\x35\x87\x3b\xf2\x38\x88\x0b\x0a\xb9\x75\xa7\x56\xf4\xd6\x74\xc4\x1b\xda\xba\x98\x6f\xd9\x5a\xb3\xed\x1f\xeb\xc7\x90\x85\x9f\xb4\x21\xb3\xf3\xba\xe2\x96\xcd\xa3\xd8\xe9\x88\x9d\x6b\x6e\x3e\x7d\x1e\x4a\xbb\x93\x99\x2f\xf9\xb2\x3b\xe7\xce\xdf\xbd\x75\x86\x3b\xad\xcd\xc5\xde\x2c\x3e\xc7\xf3\x89\xf3\xdf\xfd\x63\x64\x71\x35\x66\xf9\xf2\xd6\x96\xa7\xcb\xc5\xeb\xea\x25\x5f\x7e\x5a\x87\x05\x52\xc6\x16\xf0\xbc\x5a\xad\x82\x28\x61\xfd\xe6\xd3\xd0\x22\x19\x2c\x4d\xd3\x5c\x58\x64\x87\x2d\x15\xa0\x8d\xa6\xb3\xd4\x4f\x34\xbe\xae\x6b\x6f\x49\xf6\x54\xbd\x49\x4e\x2a\x73\x48\xdc\x06\x85\xe7\xdc\xcf\x38\x43\x16\xbc\xfd\xc7\xb6\x15\x7e\xc8\xe6\x10\xff\xd2\xec\x65\xf5\x31\x06\xfd\xe1\x2b\x03\x1a\x5b\xd4\x83\xf8\x1e\x27\x29\xd4\x02\x84\x8e\x12\xa9\x13\xb3\x65\x48\xf3\x95\x9b\xdf\x48\xf0\xca\x29\x44\x36\x3f\x12\xf4\x3f\x82\xfd\xac\x48\x8f\x46\xc8\xab\x43\x79\x35\x47\x8b\xd3\xdb\x4d\x4a\x87\xde\x92\x73\xd2\xe8\x6b\xb7\x3c\xcb\x7e\x85\x5f\x64\xd7\x1b\xcb\xa8\xf9\x86\x36\xe6\xb7\xe2\x8c\xa4\x75\xc0\x0b\x5b\x77\x33\x52\xdc\xa0\x97\xe9\x73\xdb\xcb\x02\x4a\x4d\x16\x52\x2b\xeb\x37\xb7\xc1\x7d\x39\x7a\x49\xb8\x31\x9b\x8b\xf0\xb3\xbe\x23\x19\xff\x06\x00\x00\xff\xff\xe4\x08\x14\x6d\x6c\x0a\x00\x00") func webUiStaticCssGraphCssBytes() ([]byte, error) { return bindataRead( @@ -298,12 +299,12 @@ func webUiStaticCssGraphCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/css/graph.css", size: 2668, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/css/graph.css", size: 2668, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticCssProm_consoleCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x56\xdb\x6e\xdb\x38\x10\x7d\xcf\x57\x10\x0d\x16\x68\x8b\x4a\xb5\x95\xb8\x9b\x28\x4f\xfb\x0d\xfb\xba\x80\x40\x89\x23\x6b\x60\x8a\xd4\x52\x94\x2f\x29\xf2\xef\xcb\x9b\xac\xab\x93\x6e\xfd\x64\x48\xc3\x33\x97\x73\xe6\x88\xb1\xa0\xc7\x9c\x2a\xf2\xf3\x8e\x90\x9a\xaa\x3d\x8a\x28\x97\x5a\xcb\x3a\x25\x9b\x97\xbb\xb7\xbb\x3b\x86\xc7\xb8\x51\xb2\xce\x78\xd5\x66\x35\x88\xce\x85\x96\x5c\x52\x9d\x12\x0e\xa5\x7e\x19\x4e\x2a\xdc\x57\xe6\x69\x02\x67\xfb\x30\xa7\xc5\x61\xaf\x64\x27\x58\x4a\xee\x93\x24\x71\x81\x26\xaa\x02\x1f\xb6\xdd\x6c\xfe\xb0\xcf\xe4\x11\x94\xc1\x3b\xa5\x84\x76\x5a\xda\xa4\xb3\x84\x1d\x77\x39\x39\xb6\x3a\x6a\xf5\x85\x43\x4a\x84\x14\x60\xcf\x36\x94\x31\x14\xfb\xc8\x16\x92\x92\x78\xe7\x33\x87\x72\xc6\x0f\x17\xa0\x1c\x1d\x68\x0f\x10\x4a\xdf\x7a\x80\x29\xec\x76\x15\x80\x7e\xbb\x01\x59\x48\x2e\x95\x69\xf9\xd9\xfd\x2c\x1c\xc3\xb6\xe1\xf4\x92\x92\x9c\xcb\xe2\xb0\x86\xe5\x0e\x6a\x38\xeb\x88\x41\x21\x15\xd5\x28\x45\xdf\xe5\x3c\x3a\x6b\x81\x43\xa1\x81\x85\x63\x8d\x44\xa1\x41\x45\x70\x04\xa1\xdb\x61\x36\x45\xa7\x5a\x5b\x08\x83\x92\x76\x5c\x5b\x20\x8e\xb7\xa0\x7e\xce\x09\xdb\xb9\xdf\x94\xc7\xa8\xe0\xd8\xa4\xd7\xe9\xe4\x72\x7d\xb0\x69\x65\x29\x5d\x42\xfe\x70\x3f\xa7\x2a\x7f\xa6\x90\xa2\x95\x1c\x32\x55\xb5\x63\x55\x39\x2e\x16\x3c\x06\x6a\xa6\xea\x79\x5b\x41\xd2\x34\xe7\x30\x16\xb4\x96\xcd\xf5\xf8\x4c\xe3\x0f\x49\x73\x7e\x21\xe4\xfb\x57\xf2\x77\x43\x0b\x20\xa5\x54\x44\x63\x0d\x86\x44\xa1\x95\xe4\x31\xf9\xfa\x7d\x3d\x49\x35\x50\x46\x39\xee\x0d\x5b\x05\x58\x1a\x6e\xd4\xc4\x52\xa1\xab\xa8\xa8\x90\xb3\xcf\xc9\x97\xc5\xd9\xd0\xf2\x62\x32\xb6\x0c\x03\xeb\xe2\x87\x3d\x39\x62\x8b\xa6\xc7\xdf\xef\xe7\x8e\xfa\x34\xff\x76\xa0\x2e\x19\x53\xc8\x39\x93\x27\xf1\x9e\x0a\xaf\xba\xce\x39\xf5\x1a\x5e\xc7\xf0\xe4\x7f\x23\x37\xde\xd2\x42\xe3\x11\xd6\x13\x19\x95\x80\xe2\xe8\x35\xdf\x4f\x62\xaf\x68\x53\x65\x3d\xa7\x66\xb6\x0a\x8b\x43\x5b\xd1\x53\xc6\x61\x0f\xc2\x29\x37\x08\xd2\x38\x4f\x63\x49\x9e\xd0\xde\x78\x8d\xce\x4f\xf9\x5d\xb5\x76\x74\x42\xa6\xab\xe0\x76\x8b\x30\x63\x3d\x3e\x72\x30\x9f\x48\x5f\x9a\xc1\x81\xae\xab\x8d\xc2\x56\x1e\x0d\x1b\x7e\x85\x72\x1d\xb8\x8e\x43\xaa\xde\xf8\xae\x65\x6f\x06\xd1\xf8\x76\xdd\x0c\xb3\xd2\x6c\x5b\x03\x2c\x3e\x67\x9c\xe6\xe0\x4d\x30\xf8\xd4\x07\x27\x50\x43\x3d\x0e\xdf\x6e\xe6\x63\xf0\x45\xc5\x0c\x34\x45\x4e\xde\x47\x4a\x73\x30\x3a\x82\x60\x6e\x4e\x90\x29\xf9\xf4\x4f\xb2\xcb\x9f\x3e\xd9\x3e\xfc\x7e\x7a\xf3\x1e\x52\x3a\x2a\x8c\x00\x85\x99\x1b\xbe\x9a\x89\x6d\xe2\x27\xa8\xe7\x75\x5f\x34\xea\xb0\xad\xd1\x09\xf2\x03\xea\x48\x2b\x2a\x5a\x93\xd0\xc8\x59\x49\x4d\x35\x7c\x8e\x9e\x37\x0c\xf6\x5f\x2c\x5e\x54\xcb\xd7\xf7\x23\x46\x19\xb7\xe3\x22\x4a\x5a\x23\x37\x44\xfd\xa5\x90\x72\xbf\x3a\xe7\x9e\xfc\xed\x83\x0f\x3c\x55\xa6\xdf\xa8\xb5\xab\x63\x19\x3e\x99\x12\xe7\x05\x9f\x87\x82\xd7\x96\xff\x97\xf3\x4f\x51\x8d\xf1\x59\x29\x04\x3f\x6f\xd1\x2f\x04\xcd\x8d\x09\x74\xda\x6d\x9f\x53\xf3\xc6\xe3\xf9\x81\xf7\x9c\x8e\x60\x40\x29\xe9\x8d\x77\xbd\xe5\x75\xbb\xa2\x93\x4a\x50\x1c\xfe\x9f\x0f\xcc\x36\xd5\xb8\x4d\x30\x9b\xe5\x17\x20\xdc\x02\x86\x0e\x4b\x3c\x03\x9b\xec\x82\x5f\x61\x32\xba\x84\x5c\xfb\xb5\x7f\x5f\x23\x34\x2e\x71\x36\x71\x2f\xf3\x85\x7a\xbb\x59\x48\x86\x42\x84\x0f\xd2\x3a\x67\xfd\x47\xe5\x21\xd8\xc5\x4d\x20\xdb\x49\xe3\x80\x6e\x2c\x7e\xef\xc8\x6e\x01\xc8\x6e\x49\xd1\x12\x2d\xce\xb5\x18\x38\x9b\xec\x8a\x9d\x83\x32\xa6\x18\x29\x23\x8f\xae\x0d\x33\xe8\xab\x4d\x9e\x7f\xa9\xda\x18\x45\xd3\xf9\x4f\xc8\xf4\xe4\x68\xea\x3f\x4c\xb1\xdb\x64\xb1\xb2\xdb\xc7\x20\x38\xdb\xe1\xf5\xcb\x1b\x3f\x26\x4f\xbb\x3f\xb7\x8f\x0f\x23\x35\xdc\xaf\x5c\x16\xc2\x9b\xb2\x2c\x67\x6f\xb0\xa6\xfb\xd1\x25\xce\xf7\xe8\x27\x66\x04\x8f\x8c\xdc\x17\x45\x71\x5b\xaf\x1f\xf5\xcb\x94\x6c\xec\xc7\x26\xba\x5e\x57\x47\x3e\xff\xbc\xb2\x36\x1f\x62\x84\x9b\xdd\x7a\x39\xff\x05\x00\x00\xff\xff\x1f\x9a\x48\x6b\x43\x0b\x00\x00") +var _webUiStaticCssProm_consoleCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x56\xdb\x6e\xdc\x36\x10\x7d\xdf\xaf\x20\x62\x14\x48\x82\x50\xd9\x95\xed\xd4\xa6\x9f\xfa\x0d\x7d\x2d\x20\x50\xe2\x68\x35\x58\x8a\x54\x29\x6a\x2f\x0e\xfc\xef\x05\x2f\x5a\x5d\xd7\x4e\xa3\x27\x41\x9a\x39\x73\x3b\x67\xc8\x44\xf1\x63\xce\x0d\xf9\xb9\x21\xa4\xe6\x66\x8f\x8a\xe6\xda\x5a\x5d\x33\xb2\x7d\xd9\xbc\x6d\x36\x02\x8f\x49\x63\x74\x9d\xc9\xaa\xcd\x6a\x50\x9d\x37\x2d\xa5\xe6\x96\x11\x09\xa5\x7d\x19\x3c\x0d\xee\x2b\xcb\x48\x0a\x67\xf7\x31\xe7\xc5\x61\x6f\x74\xa7\x04\x23\x77\x69\x9a\x7a\x43\x54\xb4\x82\x60\xb6\xdb\x6e\xff\x70\xdf\xf4\x11\x4c\x29\xf5\x89\x11\xde\x59\xed\x82\xce\x02\x76\xd2\xc7\x94\xd8\x5a\xda\xda\x8b\x04\x46\x94\x56\xe0\x7c\x1b\x2e\x04\xaa\x3d\x75\x89\x30\x92\x3c\x86\xc8\x31\x9d\xf1\xc7\x05\xa8\x44\x0f\xda\x03\xc4\xd4\x77\x01\x60\x0a\xbb\x5b\x05\xe0\xdf\x6e\x40\x16\x5a\x6a\xc3\xc8\xdd\xb3\x7f\x1c\x9c\xc0\xb6\x91\xfc\xc2\x48\x2e\x75\x71\x58\xc3\xf2\x8e\x16\xce\x96\x0a\x28\xb4\xe1\x16\xb5\xea\xab\x9c\x5b\x67\x2d\x48\x28\x2c\x88\xe8\xd6\x68\x54\x16\x0c\x85\x23\x28\xdb\x0e\xbd\x29\x3a\xd3\xba\x44\x04\x94\xbc\x93\xd6\x01\x49\xbc\x05\xf5\x73\x3e\xb0\x47\xff\x4c\xe7\x48\x0b\x89\x0d\xbb\x76\x27\xd7\xeb\x8d\x65\x95\x1b\xe9\x12\xf2\x87\x7f\x3c\xab\x82\x4f\xa1\x55\xab\x25\x64\xa6\x6a\xc7\xac\xf2\xb3\x58\xcc\x31\x8e\x66\xca\x9e\xb7\x15\x24\xcb\x73\x09\x63\x42\x5b\xdd\x5c\xdd\x67\x1c\xbf\x4f\x9b\xf3\x0b\x21\xdf\xbf\x92\xbf\x1b\x5e\x00\x29\xb5\x21\x16\x6b\x20\x85\x56\xd6\x68\x99\x90\xaf\xdf\xd7\x83\x54\xc3\xc8\xb8\xc4\xbd\x62\xa4\x00\x37\x86\x1b\x39\x09\xa6\x6c\x45\x8b\x0a\xa5\xf8\x9c\x7e\x59\xf8\xc6\x92\x17\x9d\x71\x69\x80\xb2\xde\x7e\xd0\xc9\x11\x5b\xcc\x25\xfc\x7e\x3d\x1b\x1e\xc2\xfc\xdb\x81\xb9\x64\xc2\xa0\x94\x42\x9f\xd4\x7b\x2c\xbc\xf2\x3a\x97\x3c\x70\x78\x1d\x23\x0c\xff\x1b\xb9\xf1\x97\x17\x16\x8f\xb0\x1e\xa8\x53\x02\x8c\xc4\xc0\xf9\xbe\x13\x7b\xc3\x9b\x2a\xeb\x67\xfa\xb6\x49\x0c\x16\x87\xb6\xe2\xa7\x4c\xc2\x1e\x94\x67\x6e\x24\x24\x23\xae\xfa\xcd\x74\xec\x4d\xe0\xe8\xdc\x2b\x68\xd5\xad\xa3\x13\x0a\x5b\xc5\x6d\xb7\x30\xeb\x64\xb4\x1c\x96\x0f\xb5\x97\x66\xd8\x40\x57\x69\xa3\x72\x99\xd3\x41\xe1\x57\x28\x5f\x81\xaf\x38\x86\xea\x17\xdf\x35\xed\xed\x40\x9a\x50\xae\xef\x61\x56\x4a\x6c\x1a\x10\xc9\x39\x93\x3c\x87\xb0\x04\xe3\x9e\xfa\xc0\x03\x2d\xd4\x63\xf3\xdd\x76\xde\x86\x90\x54\x22\xc0\x72\x94\xe4\x7d\x24\x96\x43\xa9\x0d\xc4\xe5\xe6\x09\xc9\xc8\xa7\x7f\xd2\xc7\xfc\xe9\x93\xab\x23\xe8\x33\x2c\xef\x21\xa4\x1f\x05\x29\xb5\xb2\xb4\xc5\x57\x60\x64\x9b\x3c\x41\x3d\xcf\xfb\x62\xd1\x46\xb5\xd2\x13\xe4\x07\xb4\xd4\x1a\xae\xda\x52\x9b\x9a\x11\xa3\x2d\xb7\xf0\x99\x3e\x6f\x05\xec\xbf\x38\x3c\x5a\xeb\xd7\xf7\x2d\x46\x11\x77\xe3\x24\x4a\x5e\xa3\xbc\x30\xf2\x97\x41\x2e\x83\x74\xce\xfd\xf0\x77\xf7\xc1\xf0\x54\xa1\x05\xda\x3a\xe9\xb8\x09\x9f\x0c\x6f\xe6\x09\x9f\x87\x84\xd7\xc4\xff\xcb\xf1\xa7\xa8\x52\x73\x47\x85\xb8\xcf\x5b\x0c\x82\xe0\x79\xab\x65\x67\xbd\xfa\x3c\x9b\xb7\x01\x2f\x34\xbc\x9f\xe9\x08\x06\x8c\xd1\x61\xf1\xae\x97\xbc\xbe\xae\xf8\x24\x13\x54\x87\xff\xb7\x07\x66\x4a\xc5\x1a\xe2\xb2\x59\x9e\x00\xf1\x16\x30\x54\x58\xe2\x19\xc4\x44\x0b\x41\xc2\x64\x74\x09\xb9\xd6\xeb\x5e\x5f\x29\x2a\x01\x67\x46\x3c\xd0\x44\x50\x6f\x37\x13\xc9\x50\xa9\x78\x20\xad\xcf\xac\x3f\x54\xee\xe3\xba\xb8\x09\xe4\x2a\x69\x3c\xd0\x0d\xe1\xf7\x1b\xd9\x0b\x80\x3c\x2e\x47\xb4\x44\x4b\x72\xab\x86\x99\x4d\xb4\xe2\xfa\x60\x04\x18\x6a\xb8\xc0\xae\x8d\x3d\xe8\xb3\x4d\x9f\x7f\x29\xdb\x04\x55\xd3\x85\x23\x64\xea\x39\xea\xfa\x8f\xe6\x4c\x76\xe9\x42\xb2\xbb\x87\x48\x38\x57\xe1\xf5\xe4\x4d\x1e\xd2\xa7\xc7\x3f\x77\x0f\xf7\x23\x36\xdc\xad\x5c\x16\xe2\x9f\xb2\x2c\x67\x7f\xb0\xe6\xfb\xd1\x25\x2e\xd4\x18\x3a\xd6\x6a\x89\x82\xdc\x15\x45\x71\x9b\xaf\x1f\xd5\x2b\x8c\x6e\xdc\x61\x43\xaf\xd7\xd5\xd1\x9e\x7f\x5e\x91\xcd\x87\x18\xf1\x66\xb7\x9e\xce\x7f\x01\x00\x00\xff\xff\x1f\x9a\x48\x6b\x43\x0b\x00\x00") func webUiStaticCssProm_consoleCssBytes() ([]byte, error) { return bindataRead( @@ -318,12 +319,12 @@ func webUiStaticCssProm_consoleCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/css/prom_console.css", size: 2883, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/css/prom_console.css", size: 2883, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticCssPrometheusCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x90\xcd\x6e\xab\x30\x10\x85\xf7\x3c\xc5\x59\x47\x22\x3f\x57\xb7\x1b\xf7\x19\xfa\x0c\xd1\x80\x87\x30\x95\x99\xb1\x60\x48\x48\xab\xbe\x7b\x09\x24\x6a\x54\xa9\x1b\x2f\x8e\xbf\x73\xf4\xd9\xbb\x0d\xde\xec\xcc\x88\x76\x51\xd4\xa6\xce\xea\xa8\xb8\xa6\x71\x60\x5c\x18\x2d\xcd\x97\x84\x46\x26\x8e\x50\x3a\x57\xd4\xc3\x5b\x72\xc8\x80\x97\x7d\x9e\xe0\x94\x12\x36\xbb\xa2\xb2\x78\xc5\x67\x01\x64\x8a\x51\xf4\x54\xba\xe5\xb0\x20\xaf\x4f\x61\x65\xee\xd6\x05\xfc\x5b\xf2\xaf\xa2\xf0\x76\xfb\x6e\xd5\xb1\x65\x8a\xdc\x2f\xfd\x66\x96\x28\x07\xf9\xe0\x07\xf5\x6b\xf2\xf0\xc7\xe4\xe1\x31\xb9\x1d\x9c\x9c\x8f\xa2\x51\x6a\x72\xeb\x9f\xad\x02\xf6\xf8\x3f\x5b\x2f\xe7\x4a\x27\x71\xee\x29\x1d\x6d\xf4\x3c\x3a\x3c\xfe\x58\x34\xd4\x49\xba\x06\x74\xa6\x36\x64\xaa\x79\x6d\xd4\x63\x3f\x58\x5f\x66\x93\xf9\xbb\xd6\xf9\x35\x0a\xb8\x67\x2b\xe7\x66\xc9\x25\x97\xa2\x7a\xc7\x3a\x9a\xca\x8b\x44\x6f\x03\xd4\x94\x6f\xcf\x70\x9e\xbc\xa4\x24\x27\x0d\x48\xdc\xf8\xad\xfa\x1d\x00\x00\xff\xff\x86\xf0\x99\x9a\x95\x01\x00\x00") +var _webUiStaticCssPrometheusCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x8f\xcd\x6a\xeb\x40\x0c\x85\xf7\x7e\x8a\xb3\x0e\x38\x3f\x97\xdb\xcd\xf4\x19\xfa\x0c\x41\xf6\xc8\xb1\xca\x58\x1a\x3c\x72\xe2\xb4\xf4\xdd\x4b\x62\x87\x86\x42\x37\x5a\x7c\x7c\xe7\x70\xb4\xdb\xe0\xcd\xce\x8c\x68\x17\x45\x6b\xea\xac\x8e\x86\x5b\x9a\x0a\xe3\xc2\xe8\xe9\xcc\x20\x74\x32\x73\x84\xd2\xb9\xa1\x11\xde\x93\x43\x0a\x5e\xf6\x79\x86\x53\x4a\xd8\xec\xaa\xc6\xe2\x15\x9f\x15\x90\x29\x46\xd1\x53\xed\x96\xc3\x5d\x79\x7d\x82\x8d\xb9\xdb\x10\xf0\xef\xce\xbf\xaa\xca\xfb\xed\xbb\x35\xc7\x9e\x29\xf2\x78\xcf\x77\xa6\x5e\x17\xf9\xe0\x87\xf5\xab\xf2\xf0\x47\xe5\xe1\x51\xb9\x2d\x4e\xce\x47\xd1\x28\x2d\xb9\x8d\xcf\xab\x02\xf6\xf8\x9f\xe7\xe5\x2e\x76\x12\xe7\x91\xd2\xd1\x26\xcf\x93\xc3\xe3\xcf\x8a\x8e\x06\x49\xd7\x80\xc1\xd4\x4a\xa6\x96\x97\x44\x3b\x8d\xc5\xc6\x3a\x9b\xa8\xaf\xa3\x17\x14\xb0\xb2\xc5\x73\xb3\xe4\x92\x6b\x51\x5d\xb5\x81\xe6\xfa\x22\xd1\xfb\x00\x35\xe5\xdb\x1b\xce\xb3\xd7\x94\xe4\xa4\x01\x89\x3b\xbf\x45\xbf\x03\x00\x00\xff\xff\x86\xf0\x99\x9a\x95\x01\x00\x00") func webUiStaticCssPrometheusCssBytes() ([]byte, error) { return bindataRead( @@ -338,12 +339,12 @@ func webUiStaticCssPrometheusCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/css/prometheus.css", size: 405, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/css/prometheus.css", size: 405, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticImgAjaxLoaderGif = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x72\xf7\x74\xb3\xb0\x4c\x14\x60\x10\x60\xf8\xc2\xc0\xf0\xff\xff\x7f\x06\x06\x86\x1f\x3f\x7e\x58\x58\x58\xb4\xb4\xb4\xb0\xb1\xb1\xa9\xa9\xa9\x5d\xbb\x76\x6d\xc5\x8a\x15\x62\x62\x62\x65\x65\x65\x69\x69\x69\x4f\x9e\x3c\x99\x31\x63\xc6\xb1\x63\xc7\x3c\x3c\x3c\xc2\xc2\xc2\x18\x48\x01\x8a\xff\xb9\xfd\x5c\x43\x82\x9d\x1d\x03\x5c\x8d\xf4\x0c\x98\x19\x41\x42\xff\xa4\x9c\x8b\x52\x13\x4b\x52\x53\x14\xca\x33\x4b\x32\x14\x12\xb3\x12\x2b\x72\xf2\x13\x53\xf4\x32\xf3\xd2\xf2\x19\x14\x7f\xb2\x70\x72\x01\x55\xe9\x80\x74\x83\x1c\xc9\xc0\x1a\xa0\xa0\xd0\x97\x92\x39\x6f\xa9\x81\x48\x8e\xa2\x56\x4b\xc2\xaa\xb5\x33\x44\x8e\x4d\x94\x32\x6d\xf8\xc0\x76\xb3\xa3\x21\xba\x97\xc5\x86\x29\xb3\x35\x60\xa2\x40\x2b\x63\x67\xeb\xa2\xbe\x35\x9a\x3a\x0d\x9e\x51\x3f\x16\xa9\x24\x7d\xd8\xe5\x31\x69\x82\x45\xcb\x0a\x53\x35\xd9\x8a\x4e\xd3\x6c\x05\x1b\x61\x91\x4f\x95\xb2\x47\xdf\xf7\x3b\x61\xb3\x24\x43\x41\xa1\xcb\xfd\x52\x4f\x86\x96\xd4\xd1\x07\x2b\x56\x38\xa8\xb8\xd6\x1e\x38\x70\xf0\xda\x51\x26\x8e\x9e\x29\x0d\xa9\x19\x22\x42\x3c\x07\x0f\x28\x38\x08\x72\xf9\x1c\x68\xf8\x90\x1c\xe8\xde\xcc\xe4\xb4\xe5\xe9\xb6\x00\xd3\x19\x0a\x36\xab\x4c\x43\x53\x02\xb7\x69\xbf\x50\xda\xb7\x38\x7d\x8a\xc1\x0a\xb1\x75\x8b\x16\xf6\x3b\x66\x0b\x9c\x57\x76\x64\xe0\xb6\x09\x30\x37\x60\xb7\xe1\x64\x69\x30\xe0\x8b\x64\xb3\xd0\xe2\xe5\x6c\x57\x56\xc4\x66\x79\x02\xd0\x87\xca\x9f\x27\x68\xdc\x12\xf1\xd0\xe2\x3a\x12\x20\xc2\xa9\xbb\xa4\xdd\xf0\xbd\x71\x23\x97\x95\xf3\x69\x43\xef\x2d\x1e\x2d\x4d\x0f\xd9\x3c\xf4\x66\xa8\xdc\xdc\x58\xc9\xc0\x21\xb0\xef\xe2\x19\xd6\x1b\x59\xdc\x7a\x8d\xe1\x2e\x0e\x77\xf8\x22\x19\x16\x19\x78\x70\x8a\xb5\xea\x18\xf4\x39\x5d\xe1\xea\xcb\x16\xf0\x7a\xf6\x96\x27\xd4\xde\xb4\x9c\x99\xa5\x46\x25\x9b\x37\x46\x93\x9f\xa7\x1b\xab\xa5\x41\x90\x60\x6d\x50\x98\xc2\x64\x28\x72\xd4\x61\x45\xb3\xb3\x1c\xdb\x1a\xf1\x63\xd9\xdd\x4d\x73\x18\x15\x9d\x9e\x24\xd8\x33\x34\x6e\x67\xda\x37\x41\xd9\xb5\xc9\xa2\xca\x29\x30\xa2\x21\x79\x77\xee\xa2\x32\x6e\x21\xa5\x85\x0a\x2f\x0f\x2d\x4e\x68\x4c\x68\xe3\x0d\x75\x5b\x26\x59\x74\x47\x92\x6f\x69\xc1\x6b\xcd\xcf\x69\xff\x1b\x70\xfa\x0d\x68\xcd\x0a\x07\x1e\x57\x43\x81\x43\x27\x25\x72\x63\x25\x8e\xef\x94\xf0\xe8\xb9\xd0\x76\x43\x83\x5d\xa0\x8b\xc5\x84\x49\xe1\xb9\x86\x8e\xc4\x32\x37\xc5\x44\x0f\x86\x88\xe0\x19\x1c\x8d\xb9\xa6\x4b\xb6\x32\x26\xb9\x78\x6c\x61\x63\x58\xb5\x33\x31\x49\x87\xab\x4f\xb5\xa1\xc0\x58\x2c\xf9\x88\xf2\x06\xf5\x1f\xbc\x6f\x94\xd8\x4d\xcc\xcc\x03\xd4\xb4\x22\xf4\x1b\x34\x7a\x7a\x55\xb0\x5a\x1a\x0f\xb5\xd4\x03\xe8\x31\x8e\x65\x0e\x26\x0c\x87\x36\x1d\x73\x54\xf2\x9c\xc8\xb1\x61\xd6\xc2\x04\x0e\xbb\xbc\x56\x56\x4f\x03\x95\x0e\x89\x5e\x39\x6f\xf3\x4d\xbc\x1e\x3a\xec\x07\x3b\x75\x4b\x9a\xb5\x9a\x9a\x5d\xa5\x44\x04\x96\x1c\xd6\xbd\x98\xb0\xa2\x23\xe1\x00\xd3\x4f\x01\xc3\x4e\x0e\x89\x0d\xd3\x1d\xfa\xf9\x9c\xcd\x33\x38\xf4\x0d\x59\xd2\x58\x63\x34\xbb\x7b\xd4\x14\x19\xac\xe1\x29\x1c\x10\x00\x00\xff\xff\x9f\xb1\x57\x65\x4f\x03\x00\x00") +var _webUiStaticImgAjaxLoaderGif = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x72\xf7\x74\xb3\xb0\x4c\x14\x60\x10\x60\xf8\xc2\xc0\xf0\xff\xff\x7f\x06\x06\x86\x1f\x3f\x7e\x58\x58\x58\xb4\xb4\xb4\xb0\xb1\xb1\xa9\xa9\xa9\x5d\xbb\x76\x6d\xc5\x8a\x15\x62\x62\x62\x65\x65\x65\x69\x69\x69\x4f\x9e\x3c\x99\x31\x63\xc6\xb1\x63\xc7\x3c\x3c\x3c\xc2\xc2\xc2\x18\x48\x01\x8a\xff\xb9\xfd\x5c\x43\x82\x9d\x1d\x03\x5c\x8d\xf4\x0c\x98\x19\x41\x42\xff\xa4\x9c\x8b\x52\x13\x4b\x52\x53\x14\xca\x33\x4b\x32\x14\x12\xb3\x12\x2b\x72\xf2\x13\x53\xf4\x32\xf3\xd2\xf2\x19\x14\x7f\xb2\x70\x72\x31\x30\x30\xe8\x80\x74\x83\x1c\xc9\xc0\x1a\xa0\xa0\xd0\x97\x92\x39\x6f\xa9\x81\x48\x8e\xa2\x56\x4b\xc2\xaa\xb5\x33\x44\x8e\x4d\x94\x32\x6d\xf8\xc0\x76\xb3\xa3\x21\xba\x97\xc5\x86\x29\xb3\x35\x60\xa2\x40\x2b\x63\x67\xeb\xa2\xbe\x35\x9a\x3a\x0d\x9e\x51\x3f\x16\xa9\x24\x7d\xd8\xe5\x31\x69\x82\x45\xcb\x0a\x53\x35\xd9\x8a\x4e\xd3\x6c\x05\x1b\x61\x91\x4f\x95\xb2\x47\xdf\xf7\x3b\x61\xb3\x24\x43\x41\xa1\xcb\xfd\x52\x4f\x86\x96\xd4\xd1\x07\x2b\x56\x38\xa8\xb8\xd6\x1e\x38\x70\xf0\xda\x51\x26\x8e\x9e\x29\x0d\xa9\x19\x22\x42\x3c\x07\x0f\x28\x38\x08\x72\xf9\x1c\x68\xf8\x90\x1c\xe8\xde\xcc\xe4\xb4\xe5\xe9\xb6\x00\xd3\x19\x0a\x36\xab\x4c\x43\x53\x02\xb7\x69\xbf\x50\xda\xb7\x38\x7d\x8a\xc1\x0a\xb1\x75\x8b\x16\xf6\x3b\x66\x0b\x9c\x57\x76\x64\xe0\xb6\x09\x30\x37\x60\xb7\xe1\x64\x69\x30\xe0\x8b\x64\xb3\xd0\xe2\xe5\x6c\x57\x56\xc4\x66\x79\x82\x82\x42\x9f\xf2\xe7\x09\x1a\xb7\x44\x3c\xb4\xb8\x8e\x04\x88\x70\xea\x2e\x69\x37\x7c\x6f\xdc\xc8\x65\xe5\x7c\xda\xd0\x7b\x8b\x47\x4b\xd3\x43\x36\x0f\xbd\x19\x2a\x37\x37\x56\x32\x70\x08\xec\xbb\x78\x86\xf5\x46\x16\xb7\x5e\x63\xb8\x8b\xc3\x1d\xbe\x48\x86\x45\x06\x1e\x9c\x62\xad\x3a\x06\x7d\x4e\x57\xb8\xfa\xb2\x05\xbc\x9e\xbd\xe5\x09\xb5\x37\x2d\x67\x66\xa9\x51\xc9\xe6\x8d\xd1\xe4\xe7\xe9\xc6\x6a\x69\x10\x24\x58\x1b\x14\xa6\x30\x19\x8a\x1c\x75\x58\xd1\xec\x2c\xc7\xb6\x46\xfc\x58\x76\x77\xd3\x1c\x46\x45\xa7\x27\x09\xf6\x0c\x8d\xdb\x99\xf6\x4d\x50\x76\x6d\xb2\xa8\x72\x0a\x8c\x68\x48\xde\x9d\xbb\xa8\x8c\x5b\x48\x69\xa1\xc2\xcb\x43\x8b\x13\x1a\x13\xda\x78\x43\xdd\x96\x49\x16\xdd\x91\xe4\x5b\x5a\xf0\x5a\xf3\x73\xda\xff\x06\x9c\x7e\x4b\xc9\x9c\xb7\xc2\x81\xc7\xd5\x50\xe0\xd0\x49\x89\xdc\x58\x89\xe3\x3b\x25\x3c\x7a\x2e\xb4\xdd\xd0\x60\x17\xe8\x62\x31\x61\x52\x78\xae\xa1\x23\xb1\xcc\x4d\x31\xd1\x83\x21\x22\x78\x06\x47\x63\xae\xe9\x92\xad\x8c\x49\x2e\x1e\x5b\xd8\x18\x56\xed\x4c\x4c\xd2\xe1\xea\x53\x6d\x28\x30\x16\x4b\x3e\xa2\xbc\x41\xfd\x07\xef\x1b\x25\x76\x13\x33\xf3\x00\x35\xad\x08\xfd\x06\x8d\x9e\x5e\x15\xac\x96\xc6\x43\x2d\xf5\x10\x39\xea\xc0\xb1\xcc\xc1\x84\xe1\xd0\xa6\x63\x8e\x4a\x9e\x13\x39\x36\xcc\x5a\x98\xc0\x61\x97\xd7\xca\xea\x69\xa0\xd2\x21\xd1\x2b\xe7\x6d\xbe\x89\xd7\x43\x87\xfd\x60\xa7\x6e\x49\xb3\x56\x53\xb3\xab\x94\x88\xc0\x92\xc3\xba\x17\x13\x56\x74\x24\x1c\x60\xfa\x29\x60\xd8\xc9\x21\xb1\x61\xba\x43\x3f\x9f\xb3\x79\x06\x87\xbe\x21\x4b\x1a\x6b\x8c\x66\x77\x8f\x9a\x22\x83\x35\x3c\x85\x03\x02\x00\x00\xff\xff\x9f\xb1\x57\x65\x4f\x03\x00\x00") func webUiStaticImgAjaxLoaderGifBytes() ([]byte, error) { return bindataRead( @@ -358,12 +359,12 @@ func webUiStaticImgAjaxLoaderGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/img/ajax-loader.gif", size: 847, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/img/ajax-loader.gif", size: 847, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticJsAlertsJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x91\xbd\x4e\xc5\x30\x0c\x85\xf7\x3e\x85\xa9\xee\x90\x0e\x44\xec\xa8\x13\x13\x4f\x81\xa2\xc4\x6d\x2d\x8c\x53\x25\xb9\xe5\x4a\xa8\xef\x8e\x5b\x11\xb8\x15\x3f\x62\x71\xab\xe4\x9c\xef\xd8\xf1\x70\x16\x5f\x28\x0a\x90\x50\x31\x1d\xbc\x35\x00\x27\xd3\x5a\xc7\x98\xca\xd3\x84\x2e\x60\x6a\x3b\xeb\x99\xfc\xb3\xa9\xe2\x0f\x1d\xc0\xe2\x12\xe0\x65\x76\xa2\xaa\x47\xaf\x94\x5e\xcd\x65\xa2\xdc\xd9\x81\x24\x98\x96\x2c\xe9\xf1\xad\x9f\x70\x49\xfa\x0d\xf1\x55\xda\xee\x7e\xf7\xd2\x00\xe6\xda\x6b\x19\x65\x2c\x13\xdc\xf4\x3d\xdc\xd5\x00\x38\xe0\x6d\xc2\x97\xb8\xe0\x03\xbb\x9c\x95\xfd\x9d\x6c\x5d\x08\x3f\xdd\x9e\xe7\x9a\xba\x02\x72\xc6\x4f\xfa\x36\x80\x8f\xcc\x6e\xce\xff\x9b\xe0\x8b\x04\x47\xe3\x1f\xbd\x6d\x9e\xdf\x3a\xbb\x7e\x91\x75\xaf\x35\x5e\xf0\xa2\x0b\xb1\x25\x8e\x23\xa3\xd9\x25\xab\xd6\xb5\x69\x4e\x66\x5b\x96\xfe\xbf\x07\x00\x00\xff\xff\x71\x2c\x19\xf0\xbd\x01\x00\x00") +var _webUiStaticJsAlertsJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x91\xc1\x4e\xc4\x20\x10\x86\xef\x3c\xc5\x48\x7a\x18\x0e\x4b\xbc\x37\x3d\x79\xf2\x29\x0c\x81\x69\x3b\x11\x87\x06\xd8\xba\x89\xe9\xbb\x9b\x36\xa2\xbb\xc9\x6a\xbc\x70\xe1\xff\xbe\x7f\x06\xc6\xb3\xf8\xca\x49\x80\x85\x2b\x1a\xf8\x50\x00\x1d\x6a\xeb\x22\xe5\xfa\x32\x93\x0b\x94\xb5\xb1\x3e\xb2\x7f\xc5\x16\xfe\xca\x01\xac\x2e\x03\x5d\x16\x27\x81\xf2\xb3\x4f\x02\x03\x74\x58\x67\x2e\xc6\x8e\x2c\x01\x35\x5b\xf6\x49\x4e\x7e\xa6\x35\x27\x39\x85\xf4\x2e\xda\xf4\x07\xcb\x23\xe0\x35\x6b\x23\xc9\x54\x67\x78\x18\x06\x78\x6c\x05\x70\xa3\xb7\x99\xde\xd2\x4a\x4f\xd1\x95\x82\xfa\x8e\xd9\xba\x10\xee\xdd\x9e\x97\xd6\xba\x01\xc5\x42\xdf\xf6\x7d\x01\x9f\x62\x74\x4b\xf9\xdf\x06\x3f\x26\xb8\x05\xff\x98\x6d\x67\x7e\x9b\xec\xfa\x45\xb6\xe3\x6c\xf5\x42\x97\x8a\xc6\xd6\x34\x4d\x91\xf0\x88\x6c\xa6\x57\x9b\x52\x1d\xee\x9f\x65\x7a\xf5\x19\x00\x00\xff\xff\x71\x2c\x19\xf0\xbd\x01\x00\x00") func webUiStaticJsAlertsJsBytes() ([]byte, error) { return bindataRead( @@ -378,12 +379,12 @@ func webUiStaticJsAlertsJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/js/alerts.js", size: 445, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/js/alerts.js", size: 445, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticJsGraphJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xe4\x7c\x7b\x77\xdb\xc6\xb1\xf8\xff\xfa\x14\x6b\xc4\xc7\x04\x23\x0a\x94\x9c\x36\xbf\x56\xaf\xfe\x1c\x5b\x6e\xdc\x26\xb6\x63\x2b\x6d\xef\x51\x54\x1d\x90\x58\x91\xb0\x41\x00\x05\x40\x49\xac\xa3\xef\x7e\xe7\xb1\x4f\x00\x14\x69\xe7\xdc\x9e\x73\xcf\xd5\x1f\xa0\xb0\x8f\xd9\xd9\xd9\xd9\x79\xed\x2c\x6e\xe2\x4a\xbc\xad\x8a\x85\x6c\xe6\x72\x59\x8b\x13\xf7\xe5\xd7\x5f\xc5\xa7\xfb\xa3\x1d\x6c\x32\xab\xe2\x72\x7e\x2e\x17\x65\x16\x37\xf2\x68\x87\xca\xde\x9f\x3d\x7f\xf3\xfa\x05\x74\x39\xd8\xdf\xdf\x87\xb2\xef\xe3\x3c\xc9\xe4\x24\xae\xea\xa8\x92\xb3\xb4\x6e\x64\xf5\xbd\xcc\x4a\x59\x85\x83\x32\x6e\xe6\x6f\x2b\x79\x9d\xde\x0d\x46\xe2\x7a\x99\x4f\x9b\xb4\xc8\xc3\xa1\xf8\x24\x2a\xd9\x2c\xab\x5c\xbc\x7d\x76\xfe\xfd\xd5\xdb\x77\x67\x2f\x5f\xfd\xe3\x48\xdc\x0f\x01\x9a\xc5\x23\xfa\x33\x0e\x0e\xe3\x98\x8e\x32\x93\x0b\x99\x37\x23\x51\x94\xf8\x5e\x8f\xc4\x9c\xc6\x7e\x0e\x3f\x33\xa9\xdf\xde\xc9\x45\x71\x23\x61\x90\x1d\x21\x9a\x79\x5a\x47\x32\x03\x20\xaa\xef\x91\x2e\xa4\x99\x7d\x7f\xfe\xe3\x0f\x50\x97\x2f\xb3\xcc\x54\x28\xd8\x50\xac\xfe\x33\x35\xee\x60\x50\xed\xbe\xb6\xda\x30\x0a\x2e\xea\x8c\x8e\xf0\x50\x0c\xb1\xc7\x10\xbb\xde\x9b\xfe\x55\x3a\xfd\x58\xcf\xe3\x5b\x3d\x77\x0f\xb5\x24\x6e\x62\x28\xbb\xb8\x04\x3a\xa9\xa2\x34\x4f\x9b\x34\xce\xd2\x7f\xcb\x10\x20\xdd\xf7\x10\x30\x6a\xd2\x85\x7c\x19\x4f\x9b\xa2\xc2\x49\x21\x1a\xc1\x2a\x38\x14\xdf\xee\x8b\xaf\xf9\xf1\xf4\x77\xf0\xf8\xe6\xdb\xdf\x8f\xb0\xea\xb6\x5b\xf5\xff\xa8\x22\x69\x55\x50\xe1\xdc\x16\xd2\xfb\x82\xde\xe9\xdf\x1a\xfe\x3d\xe8\xc7\x08\x58\xa4\xfc\x5b\x9c\x2d\x25\x22\x74\x81\x8d\x0f\xea\x60\x04\xcf\x7d\xfe\x59\xe0\xf3\xf7\xf4\x3c\xe0\x9f\x6f\xf6\xf9\x6d\x8e\xcf\xa7\xf4\xfc\x96\x9e\x07\xfc\x72\x90\x50\x05\x3c\x09\xda\x2d\xbd\xd1\xf3\x77\xf4\xfc\x03\x3d\x0f\x56\x54\xbe\x0a\x76\x2e\xfb\xd0\xca\x97\x0b\xfa\x07\xb1\xda\xef\x6b\x50\x56\x45\x53\x34\xab\x52\x3a\x64\xef\x2e\x32\xee\x91\x5a\x66\xd7\x50\x83\x4b\x84\xab\x87\xaf\x51\x9a\x78\xdb\xac\x3d\xe8\xee\x2e\xad\xea\x78\x2c\xde\xcb\x46\x24\xf2\x3a\x5e\x66\x8d\xe6\xc1\x48\x03\xd1\xef\x04\x4c\x81\x3d\x6a\x57\x56\xc8\x92\x57\x69\x5e\x2e\x1b\xdd\xaa\xaf\x0a\xf6\x39\x52\x14\xbb\xa7\xd7\x22\xf4\xda\x35\xf1\x44\x9c\x9c\x9c\x88\x65\x0e\x98\xa4\xb9\x4c\x34\x03\x77\x5b\x89\x03\x62\x61\x85\xfc\x8b\x2a\xbe\x65\xb1\x21\xa6\x45\xde\x54\x45\x56\x0b\xe0\x79\x7a\x89\x01\x50\x25\xae\x81\x04\xc2\x0a\x0d\xd1\x28\xf1\x12\xed\xe8\x79\xb8\x7b\xf3\x71\xe8\xc9\x20\x0f\xcb\xe1\xd0\x4c\x5d\x66\x51\x5c\x96\x32\x4f\x42\x1f\xc2\x50\x13\xf5\xcf\x40\x54\x90\x44\xb2\x92\xf9\x14\xf8\xae\x29\x44\x9c\x65\xb0\x40\x52\xa4\x39\x48\x2c\x59\x37\x69\x3e\xd3\x52\xa2\x86\x42\xaa\xb3\x13\x61\xdc\x01\x6b\x06\x37\x49\x61\x4e\xf2\x06\xda\xaa\x2d\x5d\xd1\x1a\x19\x99\xf9\xf7\x0a\xd1\xa9\x34\xf9\x01\x3d\xa0\x62\x12\x06\x5f\x51\xed\xd5\x2d\x57\x07\x62\x57\x2f\xa2\x9d\xca\xbf\x96\xb2\x5a\xbd\x2c\xaa\x05\x74\x76\x61\x29\x08\x5c\x7f\x75\x0d\x0d\x02\x9e\x1d\x8f\x70\x57\x56\xfd\x1d\x1a\x79\xd7\xc4\x95\x8c\x2f\xf2\x78\x21\x4f\xb0\xdd\x65\xe0\x10\x0e\xde\xa3\x8f\x72\x55\x02\x09\xea\xd0\x8a\x5a\xbd\xde\x30\xd7\x33\x24\x90\xb8\x8d\x6b\x41\x8d\x64\x22\x6e\xd3\x66\x5e\x00\x07\x21\x89\xea\x79\x7a\xdd\x08\x80\x10\x51\x7b\xe4\x24\x19\xdd\xce\xd3\x29\x88\x2f\xe0\x8d\x6f\xc4\x93\x27\xe2\x91\x8c\xa8\xd9\x5f\xe5\x4a\xc3\x6d\x4f\x36\xaa\x97\x93\x45\xda\x84\x84\x19\xfe\x49\xd8\x6e\x44\xe0\x17\xbc\x15\x74\x0d\x31\x1a\xe1\xf5\x6c\xd9\x14\x7b\x80\x11\xee\x42\xc4\x04\x27\x2a\x70\xa6\xa2\xc8\x05\xb1\x38\xa3\x84\x8b\x52\x5c\x5f\xd7\xb2\x51\x5b\x32\xe2\xb7\xef\x65\x3a\x9b\x37\x62\x8f\xcb\xa6\x59\x0a\x83\x71\xd9\x91\xe9\xc7\xe0\xcf\x15\x09\x7d\x65\x64\xa7\x22\x80\x4d\xe1\x3d\x9a\x02\x09\x07\x73\x02\x01\x0a\x6f\x10\x03\x82\x83\x76\x29\xb0\x42\x3d\x85\x6d\x91\xa9\xe1\x77\x15\x6e\x7a\x7a\xfc\xf3\x98\x95\x43\x04\x03\x0d\x80\xb6\xcb\x92\x27\xd4\x55\xa3\x2e\x7a\x4a\xa1\x90\x22\x15\xea\x69\x17\x79\x4a\x9a\x8a\xf7\x87\xab\xbb\x1c\x26\x22\xe9\xf0\xca\x95\x1b\x76\x7d\x98\x99\x08\x0b\xe6\x24\x47\x94\xb8\x0c\x55\x37\xf1\xf4\xa3\x4c\xbe\x6b\xf2\x75\x30\x74\x93\xab\x49\x93\x77\x3b\x6e\x31\xb2\x6a\xe9\x8e\x9a\xe6\xb5\xac\x9a\x1f\x65\x03\x0a\x74\x1d\x04\x28\x94\x53\x05\x82\xdb\x5f\x2d\xa8\x83\x0b\x08\x64\x04\x10\x75\xfe\x0a\x79\xfe\x26\xce\xb6\x81\xa5\xba\x5c\xba\xdb\x11\x44\x46\x5d\x64\xf2\x9c\x04\x64\xdf\x2e\x56\x0d\x9c\x91\x59\xce\x41\x07\xb1\xa6\x0b\x8b\x0e\x23\x8c\xdc\xe1\x40\x10\xd7\xfd\xbd\xe2\x0b\xb4\x1a\xf6\x9a\x62\x36\xcb\xe4\xc9\x00\x1a\x0e\xdc\xe9\x62\xc7\x48\xfe\xab\x23\xfc\x87\xf8\x80\x69\xce\x8b\xdb\x76\x6b\x60\x3d\x2a\xcf\xa3\x09\x35\x0d\x1c\x9e\x34\x62\x03\xf7\x0e\xf0\xe4\x8c\xf6\x1c\x6c\x8e\x88\x5f\x14\x93\xf7\x28\x11\xae\x8f\x4a\xe0\xe3\x1c\xf6\x3a\x2c\x68\x22\xef\x42\xb7\xbd\xcb\xb3\xba\x02\xa5\xcd\x63\x90\xaa\x28\x48\x15\x84\xb8\x69\x2a\x98\x76\x95\xc6\x7b\x5a\x01\x05\xc3\x21\xf4\xae\x9f\x67\x31\xec\xc4\xa0\x92\x59\x11\x27\x50\xe6\x4b\x22\x96\x3f\x3f\xe1\x3a\x5b\x51\xc3\xbb\x88\x45\xfe\x3b\x36\x59\xd1\x72\xab\xc5\x75\x31\x05\x4b\x79\x02\x7c\x88\xaa\x84\x84\x2f\xb0\x54\x23\xe3\x04\xb6\xb3\x60\x58\xa8\x51\xa2\x3e\x06\x8d\x26\xb4\x34\xb0\xaf\x13\x20\x23\xda\x24\x6c\x0e\xf7\x52\xd2\x6e\x60\x1a\xd3\x23\x09\x15\x03\x97\x86\xfe\xdb\x50\xb5\x51\x46\x76\xbf\x24\xbd\x1f\x5a\xdd\x51\x55\xc5\x1a\xe5\xc1\x75\x01\xd0\x2f\x4d\x14\xd5\x2d\xb3\x3e\x63\x91\xb8\x9e\x57\x51\x28\xb5\x39\x5c\xef\x28\x03\xc1\xeb\xe2\xb4\x5e\x3d\xbb\x4b\xeb\xb5\xad\x57\x57\x31\x54\x3b\xcd\x33\x39\x03\xf5\xbf\x06\x1d\xae\x74\x85\x4d\x99\xe6\xb9\x5c\x37\x69\x55\xeb\xaa\x49\xa0\xeb\xfb\x26\x6e\xd6\xec\x32\xaa\xbf\xaa\xb1\x81\xa7\x94\xf3\xe4\x05\x18\x2d\xfd\x7d\x1c\x81\x06\xed\xba\x82\x54\x75\x46\xab\x5f\xa2\x0d\x5f\x82\x6b\x00\x4e\x15\x73\x45\x06\xbb\x60\x19\xcf\xe4\xa1\x18\xc8\x7c\x30\xa2\x32\x6c\xf0\x5e\x02\xd3\x27\xf5\xa1\xb8\x8e\xb3\x5a\x8e\x8c\x1a\xe8\x18\x78\x66\x48\x9f\xcf\xec\x98\x71\x38\xf0\x47\x06\x4d\x06\x6a\x8a\xec\xf6\x75\xa0\xd8\x10\x6c\xc1\x52\x7a\xc7\xd3\x5b\x3d\x3b\xce\xd5\x57\x2d\x21\xbc\x1e\xc4\xb2\x44\x1c\xdf\x71\x73\x0d\xc4\x6c\xb9\xfa\xbd\x51\x29\x1d\x47\x4c\xed\x0d\x57\xf3\xf0\xde\x21\xb3\x77\x70\x30\x50\x7e\x99\x36\xe8\x9b\x55\x26\x09\x1c\x2b\xb6\x0e\x3c\x6c\x94\x02\xed\x35\xc3\x5a\x35\xc8\xcb\x3d\x88\x66\xd9\xaa\x9c\x63\x93\x81\x23\xbc\x7c\x44\xc3\x8e\x50\xb2\x50\xe2\x24\x51\x02\x0c\xd4\xe6\x5e\x59\xa5\x8b\xb8\x5a\x05\xc6\x5c\x42\xc0\x4e\x1b\x33\xd8\xde\x74\x2e\xa7\x1f\x5b\xed\x2a\xf2\x3f\x3b\x4d\x61\x4e\xd8\x58\x26\xba\xf9\x3d\x58\x2b\xb5\x5c\x8b\x92\x07\xe6\xf3\xb0\xea\x0c\xf5\x30\x66\xde\x24\xee\xb5\xc7\xec\x2d\x4a\xe8\xac\xbc\x83\x23\x98\x75\xd3\x8f\x61\x67\xb9\xfa\x68\x8f\x96\xaa\x15\x36\x7f\x79\xff\xe6\xb5\x5d\x0d\x90\xff\xaf\xae\x1d\x97\x00\xad\x61\x35\xca\x88\x8a\x8b\x2a\x9d\xa5\x39\x18\x0c\x20\xe6\x53\x50\x10\xe4\xab\xcf\x8a\x46\x2c\x96\x20\x15\x64\x62\xe1\x84\xf5\x34\xce\xd0\xa1\x42\xb7\xe8\x56\x8a\x5c\x02\x87\x82\x12\xa9\x70\xeb\xd6\x4d\xb5\x9c\x36\x22\x6d\xd8\x4d\xf2\x20\x23\x46\x04\x37\x72\xd7\x43\x05\x05\x58\x3f\x83\x4d\x56\xa3\x67\xf0\x02\xf7\x6f\x6b\x2e\x96\x78\xa2\xcb\xf6\x1d\x5a\xfc\x49\x0c\xf6\x07\xe2\x10\x77\x82\xd6\x38\x6d\x6a\x1b\x40\xbc\x0b\xc9\x8d\x0d\x8d\xe9\xd9\x71\x67\xb4\x85\xdf\x59\x8b\x96\xc1\xe4\xf0\x8b\x56\xd5\xce\x58\xda\x4a\x7a\xb8\x55\x8f\x32\x57\x1b\x9e\xe4\x62\xcb\x3c\x56\xe2\xde\xe8\xb8\x2e\xea\x2c\xb1\x27\xcb\xa6\x29\x72\x6d\x40\x4e\xaf\xc8\x02\x06\x91\xdd\xc3\x64\x5a\xe9\x4f\x41\x65\xd5\xf2\x9d\xb2\x59\xdc\x41\x1f\x02\x9e\xc8\x2d\x80\x43\xa3\x2e\xf0\x6d\x51\x07\xe1\xbc\x0d\xe2\x67\xd0\xf7\xf3\xd0\xde\x00\x58\x23\xed\x00\xee\xb5\x90\x7a\x24\x7e\xcb\xec\x61\x0b\x1c\xeb\x80\x01\xca\x2c\x9e\x4a\x30\x9f\x3e\xa1\x0f\x78\xd8\x03\x8f\x44\xfb\x08\x8c\xb7\x04\x54\x66\x30\x91\xb0\x49\x64\x70\xdf\xb1\xa5\xb4\x89\x85\xfb\x14\x94\x10\xbe\x81\x11\x67\x39\x9a\x5d\x42\x14\x51\xac\x06\x7a\xd4\xba\xf6\x09\xb0\x91\x52\xe7\xa6\xc7\x3a\x69\xa4\x94\x1e\x05\x05\x1f\x60\x57\x4d\xa9\xb2\x28\x97\x18\x0c\x79\x45\x33\x8c\x27\x99\xe4\x59\xd6\x8a\x79\x8d\x70\x73\x2c\x42\x77\xa4\xce\xee\xb8\xef\x8f\xd3\xd9\x78\xd7\xda\x11\xb7\x0a\x7f\x3d\x8e\xe2\x0f\xf1\x5d\xa8\x65\x29\x0e\x52\x24\xb0\x0c\x7f\x3e\x3b\x0f\x46\xaa\x70\x59\x65\x87\x6e\x38\x18\x0c\xfa\x60\x1c\x97\xe9\xf8\xe6\x60\x9c\xc5\x13\x99\x8d\xaf\xae\x90\xb2\x57\x57\xe3\x1b\x0a\x1d\x9a\x9e\x28\x00\xcf\x01\x49\x00\xf8\xa1\x2e\x72\x53\x5e\x2f\xa7\x53\x59\xa3\x29\xa4\x11\xc4\xea\x11\x85\x09\xd0\x94\x5b\xd6\xae\x03\x8f\x34\xc3\x7a\x94\x8a\x50\x25\x1e\x81\x15\x10\x28\x10\x81\xdb\x50\xd3\x10\x3c\xa0\x33\xb4\x8d\xc3\x80\x7e\x04\xca\x20\x0c\x21\xc5\x37\x71\x9a\x21\x85\x04\x3b\x97\xf5\x23\xab\xe2\xec\xc2\xda\x92\x7b\xf3\x1f\x52\x6e\x61\xc8\x4a\xc8\xe0\xdc\x6c\x53\x60\x5a\x11\x92\xa1\x41\x11\x4a\xf8\x39\xd6\x1d\xc0\xc2\xcd\x67\xcd\x1c\xca\x76\x77\x7b\xb0\x75\xf7\xc2\xc5\xfe\xa5\x31\xdd\x40\x88\x86\xb9\xbc\x15\x6f\xe8\x3d\x54\xc0\x2e\xd2\xcb\x91\xb0\xff\x0f\x87\x2e\xb6\x3b\x1e\x60\xe2\x30\x64\x91\x78\x0e\xbe\x4f\xe8\x0d\x5c\x2c\xab\x29\xac\x8a\x02\x34\x72\xaa\xd2\x46\x2e\x60\x61\x82\x38\xcb\x02\x0b\xda\x19\x06\xb6\xdf\x39\x30\x0f\xe9\x46\x0a\xd6\xcd\x29\xba\x27\xe2\x6b\x0c\x45\x81\x8b\x17\x4f\xe7\x48\x6c\x0a\xfb\xe8\xd1\x45\x99\x2d\x41\x53\x8e\x04\xe8\xe6\xb4\x71\x61\x15\xd0\xae\xba\x4d\xc1\x94\x99\x80\xf4\xf9\x58\xb7\xfa\x69\x06\x89\xb3\xb4\x59\x45\x3d\x13\xf4\x3c\x2f\xc0\x54\xcf\x85\x9c\xa3\xc3\xae\x31\xf8\xdb\xb8\xe4\x5e\x9b\xed\x1b\x36\x25\x78\xbb\x6f\xcc\x61\xc5\xe6\x5d\x48\x61\x30\xd3\xfe\x93\xb5\x6d\xb9\x90\xc2\x3e\x3a\x20\x2f\xc0\x25\xb5\xe1\x1d\xb5\xa5\x02\x63\xe8\xeb\x02\x0c\xe4\xb7\x4b\xc8\x80\xc0\x55\xbd\x5c\xaf\x8d\xb8\xcb\x30\x92\xb0\x8c\x56\x1a\x92\xcb\x3f\xd2\x31\x58\xd7\xb0\xc6\x8d\x6f\xcf\x70\x22\x7c\x75\xfc\x7f\xe0\xee\x67\x55\x15\xaf\x42\x2c\x1f\x79\xd3\x19\x8a\x53\xd8\x29\x76\x59\x28\x3a\xa9\xa0\x90\x18\x51\xfb\x46\x9c\xba\xad\x84\xa6\x13\xc9\xf2\x4b\x67\x64\xea\x63\xd6\xc9\x0b\x12\x98\x4e\x3a\x14\xdb\x92\xc0\x6e\x0b\x0e\x79\xb4\xa3\x20\xac\x2a\x48\xec\x9b\xa3\xa7\x4d\x72\x39\xae\x6a\xf9\x62\x59\xc5\xd8\xdc\xe5\x02\x5a\x3d\x8c\x0b\x5a\x76\xa0\xa2\x77\x67\x78\xa8\x04\x3b\xfe\x9d\x9c\x9d\xdd\x95\x61\xf0\xcf\xf0\x62\x7f\xef\x8f\x97\xbb\xc3\xf0\x62\x75\x9b\xcc\x17\x35\xfc\xfb\x98\x79\x91\xe4\x51\xdc\x80\xed\x8d\x6c\x61\x20\x46\x54\x16\x2a\x70\xc6\xbb\x7c\xa4\x9a\xda\xd3\xbd\x23\xa2\x0d\xd6\xa9\x2a\x4d\xec\x47\x27\xe2\x9b\x96\x1f\xf6\xed\xbe\xf6\x1d\x71\x54\x22\x33\x8c\x49\xd3\x03\x2f\x50\x03\xb8\x38\xb8\x34\x98\x2d\xf3\x14\x63\x4b\xba\xe6\xe9\xa5\x43\x3e\xee\xff\x75\xf7\xb4\xc5\x39\x0b\xbb\x40\x00\x97\x1b\x29\xec\x99\x70\x5b\xef\x33\x22\x8e\xf2\xc5\xf5\x4a\x7b\x6b\x15\xb6\xe2\xad\x4e\xdc\xa6\x4f\xca\x3f\x70\x84\xd6\x27\xf9\x91\xe6\x1e\x0a\xc7\x7d\x28\x3c\x00\x94\xa4\xbe\xef\xf7\xb5\x70\xdd\xd0\xf9\xc8\xd9\x70\x6b\x4c\x11\x2b\x24\xbb\xc6\xba\x55\x8b\xae\xba\xbc\xdf\xc6\x54\xf1\xcc\xe2\xff\xfc\x82\x6d\x5e\x29\xb1\x27\x0e\x70\x55\x4f\x79\x75\xf7\xf6\xd6\xae\xda\xe9\xff\x9d\x55\x03\x5d\x76\x66\x82\x65\x9b\x97\x8c\x04\x8e\x17\x62\xfb\xf5\x57\xe1\x15\xf8\x58\x2b\xb9\x80\x82\x0f\x2b\x43\x13\xa9\x72\xc3\x40\x1b\x82\x5f\x80\x22\xf7\xc5\xff\xce\xa1\x66\xed\x89\xbb\xaf\xa2\xab\xf7\x9f\x37\x37\x2c\x4a\xb8\x31\x7b\xbc\xa6\xbb\x13\x7f\xad\x6d\x21\xb6\x1d\x3a\xc2\x2f\xa1\x54\x8d\x0d\x88\xd5\xbd\x38\x11\xa8\x07\x0f\xb1\xb7\x0d\x10\x2a\xa4\xb6\x14\xae\x67\x79\x4f\x8c\x6e\x1d\x0a\xce\xd4\xcd\x7a\x6a\x42\xb9\xc4\x06\x30\xbb\xdb\x6f\x64\xd0\x16\x98\xcf\x32\x7e\x2a\x86\xec\xfe\x69\xdc\xc4\x64\x25\x0e\xa0\x98\x7a\x88\x27\x78\x18\x7c\x03\xb6\xb4\x58\xd0\x21\x71\xbd\xd3\xbf\x1d\xb6\x14\x52\xff\x53\x13\xdf\xfb\xc2\x89\x7f\xd9\x6c\x9c\xd6\xdb\xcf\x66\x9a\xc9\xb8\x62\xdb\x78\xd8\xda\xd2\x1d\xa1\x63\xc5\xc9\xfd\x4e\x3b\x68\x83\x26\x76\xd8\x13\xa8\x8f\xe4\xa2\x6c\x56\xe1\xd0\x09\xe1\xc6\x15\xed\x5b\x65\x01\x75\x37\xf3\x6f\x57\x05\xea\xc8\xb8\xc8\x96\xca\x20\xdb\x7c\x94\xa9\x2d\x68\x8c\x9a\x70\x00\x1a\x44\xd9\x8f\x71\x33\x07\x3b\xeb\x2e\xa4\x7f\xae\xb3\x02\xa8\xe4\xe1\x35\x16\x4f\x7f\xbf\x3f\x1c\x89\x03\x33\xac\x3d\x6b\xe8\x48\x0d\x68\xad\x72\xb5\x1c\xd1\x4e\x48\xfd\x63\x5e\x79\x91\x01\x5d\x18\xc5\x93\xa2\x6a\xac\x98\x24\x83\xab\xca\xf4\x58\xca\x2f\xd6\xaf\x40\x9d\x78\xa1\x93\x8b\xc0\x09\x20\x28\xc1\x61\xdb\x02\xde\x51\x61\xdb\xb5\xc9\x26\xc6\x04\x67\x80\x11\xad\x18\x5a\xdf\x6a\x6a\x7b\xde\xda\x1c\xb9\x4d\xf9\xe8\x47\x35\x3c\xf2\x81\xc8\x12\xcd\x57\xb3\x2a\x5c\x0b\xb3\x41\x6d\xdd\x1f\x70\xe0\x14\x0b\x1a\x2c\x50\x21\x22\x9e\xb1\xcb\xde\x3d\xd1\x04\xf7\xa0\x92\x36\xc9\x3b\x59\x97\x30\x43\xd9\x6d\x7c\xc4\xb4\xf0\x22\xec\x0a\xe3\x86\x79\xd4\xf2\xab\x5e\xbe\xed\xf0\xfe\x62\x8c\x9f\x73\x08\x76\x33\xce\xbe\x5f\x07\xec\x82\x67\xbc\xfd\x31\x9e\x16\xff\xf3\xe1\x2c\x57\x06\x43\x2f\xf6\x03\x8f\x4d\x11\x1d\x2c\x3f\x54\x54\xfa\x4f\x47\x79\xa8\x17\xf9\xfb\x5b\x46\x73\x14\xd4\xd0\xc4\x71\x7c\x52\x6e\x0a\x25\xdc\xcd\xab\x11\x32\x6d\xd9\x46\x1f\xcb\xd0\x83\x0a\x68\x8b\xb6\x90\x26\x41\x50\x55\x2e\x86\xd8\x07\x80\x45\x95\x5a\x56\x3a\x45\x78\xd4\x97\xda\xa5\xff\x00\x00\x2c\x68\xbb\x0f\x4f\xde\x85\xdc\x3a\x1d\x6a\x77\x66\x12\xa3\xc7\xe8\x75\x5a\x4f\x62\x15\x22\x91\x77\x72\xba\xa4\x6c\x2c\xe2\x1b\x60\x02\x60\x71\x00\x3b\xec\x52\xd9\x50\x6f\x5a\x2c\xca\x4c\x36\x72\x4d\x2c\x86\x4c\x2a\xeb\x25\xf7\x49\x7f\x54\x99\x7a\xc3\x1d\xb5\x42\x40\x46\xa5\xcc\x9b\x45\x16\x06\x3f\x14\x71\x22\x70\x93\x32\x6a\x06\x30\x6c\x44\x90\x82\xc7\x93\x4a\x8c\x4f\xc1\xbf\xd6\xf2\x86\x5b\x39\x5a\x61\x17\x93\x23\x87\xad\x41\xda\x67\x10\x76\xa2\x5b\x44\x82\x0c\x0d\xdd\xdd\xbe\xa8\x67\x1b\x6c\x39\xec\x11\x21\x53\x52\xdb\x56\xb9\xd6\xab\x1b\x86\xb6\x6a\xfc\x4b\xc7\x1e\x0c\xda\x43\x6b\x1a\x6c\x18\xda\x3b\xfc\xdd\xc2\xf0\x70\x55\x0f\x2e\x5f\xb1\x6c\x5e\xbd\xd0\x6c\x72\x0b\x9a\xb9\xb8\xe5\xe9\x9c\x73\x65\xbb\xa5\x91\x7d\x69\x2b\x39\xa8\xcf\x3a\x68\x9d\x60\x5b\x13\x81\xec\x1c\x0d\xc1\x0f\x96\x68\x2a\x98\x21\x61\x00\x85\x57\xcd\x7c\x8a\x58\xf5\x9f\x1e\xf4\xb8\x63\xbd\x27\xe4\x38\x87\x91\x9d\xc1\xd7\x2a\x9d\x7b\x33\xb5\x2b\x50\xae\xb2\xfa\x01\x43\xf1\x9e\x52\xa1\xe0\x7c\x6d\x49\x4e\xef\xef\x9b\x0a\x36\x70\xad\x92\x95\x1d\x17\x99\x6a\xd1\x70\x76\xbb\x31\x51\xb8\x0a\x25\x9b\x8e\xf4\x3b\xc2\xcd\x85\x1a\x95\x4b\x98\x4a\x70\x5c\x37\x55\x91\xcf\x4e\x71\x77\x71\x5f\xd8\x58\xc7\x63\x55\xaa\xc4\x46\x3d\x8d\x4b\x89\x89\xa0\x0a\xcf\x0b\xfa\x31\x21\xed\x7b\xdf\x0d\xcc\xf4\xec\x82\xe3\x24\xbd\x11\x53\x3c\x5f\x3c\xf9\x25\xe0\xe2\x5f\x02\x3b\x94\xc6\xe4\x43\x91\xe6\x80\xc9\xa4\x3a\x0d\x86\x3c\x3c\xf4\x3b\x0d\x36\x12\x93\x83\xbe\xe7\xc5\x79\xfd\x9a\x43\x9b\x6b\xc9\xd9\xe8\x16\xaa\x26\xd2\xc4\x41\x33\x11\xb6\x0e\x8e\xfa\x29\x38\x7a\x88\xf8\x1b\xa9\xbf\x99\xfc\x3d\xf4\x37\x24\x07\x02\x19\xba\x68\xfa\x62\x39\x14\x6b\x39\x46\xf2\x1a\x1f\x6a\x36\xbb\x27\x7d\x64\x1c\x31\x0d\xef\x03\xc7\x99\xe5\x0e\xdb\xc5\x41\xff\xa6\xa2\x86\x86\x96\x14\x06\xb4\xa4\xe4\x1d\x4b\x4d\x5f\x66\x45\xdc\xa8\x7a\xbd\x29\x53\x18\xea\x35\x96\x0d\x9d\xdc\xd7\x60\xf7\x55\x7e\x8d\x19\x5a\x7b\xea\x97\xde\x61\x57\x66\x99\x98\x48\x06\x96\xe0\x76\x2a\x04\xf4\x46\x5f\xd1\x81\x3f\x8c\xc4\xf9\x5c\x6a\x50\xd3\x38\x1f\x34\xd8\x89\x0e\x0d\x31\x6f\xa0\x2e\x04\x4a\x59\x3c\x8d\x58\xe0\xa1\xc5\x2c\x2e\x6b\x11\x62\xca\xff\x30\xf2\xc2\x16\xea\x12\x80\xc3\xa9\x80\xe6\x46\xa2\x78\xd9\x00\x6d\x3b\xf0\xc1\xf0\x43\x19\x83\x32\x6d\xb4\xa3\xf4\x4e\xdd\x49\x88\x9e\x17\x19\x48\xe7\xb7\x5c\x69\xbd\x36\xb2\x70\x40\xbc\x2c\xb3\x06\xad\x36\xe2\xa1\x45\x0c\x4b\x7b\x17\xf8\x22\xca\x6a\xfa\x77\xd4\x5a\xe0\x09\x4f\xd1\x60\xc6\x1c\xb7\xa7\x33\x99\x47\xe2\x6d\x46\x8e\xb7\xa4\xbc\xe3\x18\x94\x7b\x55\xc9\x69\x43\x59\x76\x60\x51\xc1\x0c\xa2\xc0\x3f\x25\x65\x3e\xbf\xb7\xc1\x93\x58\x1f\xa0\x31\x5a\xe0\x4a\x95\x56\x6e\x36\x75\xfb\x6c\xe1\xc8\xbc\x31\x17\xdb\xc3\x05\x50\xfa\x0b\x95\x54\x7a\xc2\xb7\x31\xec\xa6\x50\xa7\x12\x01\xe6\x73\xc4\x55\x70\xe4\x8a\x2a\x7d\xc4\xd2\x63\x27\xe9\xc3\x0c\x2b\x9a\x88\x3a\xbe\x48\xb0\x03\xdb\xd3\x37\x03\xd8\xd4\x59\x21\x66\x48\xe1\x8e\x72\x48\xcf\x91\xd7\xfd\x50\xfd\xfa\x36\x35\x40\xe4\x53\x55\x9f\x52\xce\x06\xe2\xbf\xd6\x20\xf8\x77\x77\xc8\xe1\xf6\x8b\xfd\x4b\xf7\x88\x6f\x75\xe8\xe8\x46\x8e\x09\x71\xb3\x83\xcb\xa1\xb5\xe3\x8c\x9d\x33\xb4\x96\x5c\x86\x76\xb0\xe2\xc0\x88\x5e\x43\xee\xc1\xce\x07\x91\xc3\xb0\xe4\x7b\xca\xb6\x89\xfe\x2d\xab\xe2\x25\xec\x49\x8c\x3b\xc5\xad\x60\x58\xbc\xa5\x21\xd1\xb9\x6e\xf4\x60\xf4\xd1\xe4\xde\xe8\xa8\xae\x76\x60\x7d\x7d\x4e\x79\xa3\x74\x19\x28\xce\x57\x02\x76\x24\x5e\x3e\x00\x7e\x8f\x73\x60\xe7\x94\x2f\x1d\x90\x3c\x30\x89\xa2\x9c\xaa\x68\xa3\x17\xce\x70\x36\x09\x72\x3a\x4f\xb3\x04\x34\x32\x88\x98\xee\x01\x96\x6d\xdb\xca\x29\xa0\x0a\x4a\xab\xf4\x2a\x4c\xc6\x9e\xce\xcf\x7c\x1c\x0e\x1c\xfd\x17\x70\x62\xe6\x29\xeb\xb6\x41\x37\x41\xb3\xd5\x5c\x65\x66\x76\xdb\x5b\xf4\x3b\x57\x35\x36\x35\xa2\xa1\x6c\x28\x07\xca\x55\x20\x67\x6d\xac\x03\x29\xff\x5c\x85\xea\x40\x38\xff\xfc\x1a\x3c\x65\xb4\xab\xc0\xc8\x5f\x94\xfa\xaa\x86\xe3\x13\x6c\x1f\x2f\x03\xbd\xfb\xcd\xb7\x6a\x84\x83\xb9\xbe\xa9\xa3\x41\xba\x51\x26\x8d\xe6\x9e\x19\xc8\x4c\x93\x38\x07\x64\xf3\x99\x77\x02\x5a\x3b\x9a\xe7\x6d\x9c\xd0\x49\xb1\xca\x27\xc3\x2b\x17\xa0\x67\x6e\xd2\x3a\xc5\x53\xe3\x00\x45\x51\xc0\x3b\xaf\x16\x31\x5f\xc5\x98\x16\xf9\x75\x3a\x5b\x56\xa0\x91\xee\xf6\x70\x11\xc4\xa4\x00\x2f\x2f\x26\x00\x32\xaf\xa1\xa6\xd6\xe0\x9b\x39\x74\x9a\xf1\x75\xa7\xb8\x92\x22\x49\xeb\x32\x8b\x57\xea\x72\x07\x48\xdd\xeb\xf4\xce\xc2\xe1\xe0\xa7\x9b\xe1\x9c\xc3\xf2\xd0\x09\x7c\x41\x43\x9b\xf3\x6c\x03\x1f\x27\xae\xbb\x51\x13\x9b\xb9\x46\x0c\x4d\x24\xc0\x5c\x84\x3b\x3c\xe7\xd0\x54\x73\x8e\x2f\x98\x46\xcb\x9c\x6e\x8e\x84\x9f\x40\xce\x98\x56\x23\x14\x2f\x48\x81\x7b\x2f\xab\xcd\x81\x5b\x7b\x7b\x73\x4f\x1c\xe0\x38\xc7\x7a\x45\x3a\xa3\x90\x45\x83\x43\xa8\x06\xbd\x03\xd8\x54\xf0\xd7\xa0\xb4\x31\x80\xdb\xf0\xc5\x13\x54\x92\xfe\x26\xee\x5c\xe3\x73\xd5\x28\x27\xca\x31\x06\xea\x60\xf9\xd0\x61\x7e\x23\x48\xf9\xca\xc8\xa1\x0d\x06\x3a\x1b\x9b\x9c\x45\xbe\x41\x82\x79\x4d\xc0\xf2\x4a\x82\xde\xa6\x49\x33\x7f\xa0\xcf\xdf\xb1\x9e\xdc\xdd\x3f\xec\x8f\xc4\x53\xd3\x8f\xcd\x7b\x09\xa2\xb7\x2f\x17\x90\xcf\xf5\x03\x01\x56\x75\x96\xe6\x52\x87\x6e\xc8\x8d\x28\x8b\x2c\x56\x7e\x2e\xd6\x81\x26\x1c\x29\x69\x83\x7c\x77\x68\xf9\x9d\x8b\x17\x29\xb6\xc4\xab\x31\xc1\x68\xc7\x4b\xac\xba\x53\xf2\xa4\x4b\xac\x88\x64\x16\x39\xea\x9f\x98\xd2\x87\x7d\x74\x76\x60\xad\x36\xc0\xfa\x2f\x45\xff\xb5\xc0\x18\xd9\xa2\xc2\x4b\x41\x66\x7a\xf2\x5a\x27\x3a\x34\xd0\x16\x23\x5a\x31\xac\x8f\x81\xff\x32\xbd\x6b\x70\x8f\x45\xaf\x97\x8b\x09\x26\x84\x51\x83\xbf\xfe\xf8\xdd\xf9\xa8\x67\xb1\x09\x45\xb5\xd8\x6e\x76\x97\x87\x86\x72\xbb\x9c\x30\xf6\x1c\xe4\x76\xf5\x42\x36\xb0\xdf\xfa\xe7\xf7\xbd\x6d\xb0\xdd\x24\x19\xcd\x46\xba\xe1\x27\x5e\xbc\x91\xb8\x83\x9d\x60\x77\x8b\x73\x34\x35\x38\xae\x4b\x50\x62\x4a\xe6\x63\x61\x70\x3a\x00\xf3\xdd\xc4\x56\xee\xd4\xc1\xc2\x30\x6a\x8a\x9f\xcf\x9f\xb3\xa9\x4f\x67\x32\x03\x70\xd2\xa0\xef\xe9\xe0\xc8\x01\x5b\xdf\xe2\x41\x7e\x17\x30\xcd\xe3\x8a\x6b\x03\xce\x41\x3d\x09\xf0\xde\xc5\xac\x42\xd9\xb6\xa7\xec\x85\x01\x9d\xf5\x90\x2d\x40\x25\x38\x0c\xaa\xa0\xee\x40\x78\x29\x04\xaf\xed\x9d\xe8\x21\x77\x85\x9a\x6d\xd4\xe7\x61\x91\x84\x65\x37\xeb\x50\xb8\x2e\xe7\x4a\xcd\x84\x4b\xcc\x10\xce\x21\x1c\x35\x00\xd7\x10\x71\xd3\xa3\x3a\x45\x2a\x4e\x60\xbd\x6a\x1f\x8d\xae\xe0\x21\xfb\x54\xdf\x72\xe8\x59\xf8\x1f\xa8\xae\x57\xb0\x70\x37\x23\x59\x1e\x64\x08\x67\xb4\x39\xc8\x97\x0c\x65\x0c\xdd\x94\xe8\x19\xf2\x3b\x39\x8f\x6f\x52\x70\x0a\x94\x1d\xf6\xbd\xee\x10\x8a\xad\x58\x8f\xf1\x3a\x54\xbf\xfe\xe0\xf5\x5c\x66\x37\xa8\x62\xb6\x1a\xf9\x9c\x2e\x38\x6d\xc7\xf0\xeb\x46\x75\x63\xe1\xe6\x9a\xd1\xc6\xb0\x08\xde\xc0\xfb\x02\xdb\xd1\x17\x5d\x8f\x5a\xde\x45\x8f\x24\x30\xda\xdd\x04\xd9\xbf\x54\xd6\x7b\x79\xaf\xeb\xc4\xcd\x16\x87\xf6\x3d\x07\x1d\x1b\x8e\x1b\xfa\x69\x82\x46\xb2\xc2\x42\xa5\xcb\xd7\xe0\x00\xd0\x4d\x53\x37\x9b\x1e\xc3\x18\xfa\x92\x20\x5b\x2e\xe4\x42\x3b\x29\xf4\x75\x7c\x23\x77\x94\x79\xe3\x24\xce\x3f\xfb\xcb\xb3\x7f\x08\x1d\xcb\x46\x73\xa4\xa8\x60\x92\x9c\x73\xbf\x67\xbc\x64\x4c\xba\x27\x47\xde\x19\x93\x81\xdd\xce\x25\x9b\x30\x4b\xa8\x42\x4b\x09\x0d\x1d\x4e\x22\x24\x7c\xdc\x7b\x5e\x26\xdf\x5e\x79\xa0\x9e\xc5\xd7\x9f\xa7\x4f\xee\xf8\x46\xbf\xa2\xd7\x8f\x7e\x5d\x10\x9a\x65\x91\xe2\xa5\xe5\x6b\x94\x88\x2d\xdf\xb8\x6b\xe0\x63\xf2\xbc\x77\xcd\xc2\xcd\x9f\x77\x62\x86\x26\x9f\x7f\x2b\x2e\x68\x1d\x1e\xb5\xb2\x0a\xe2\xad\xf8\x80\xcf\x85\xed\x45\x80\x87\xb1\x74\x29\xcd\x11\x12\x05\xb5\xf9\xae\x48\x56\x9a\xd4\x0e\x38\xff\xe6\xe5\x15\xa5\x31\x8b\x66\x02\x8d\x19\x2a\xf5\xf3\x8e\x8d\x6b\xb0\x85\xc1\x3e\xa7\xe5\xb0\x01\x0e\xc6\x7f\x8a\x21\x8a\xe0\x46\x62\x32\x59\x70\x68\xec\x4f\xa7\x6d\xef\x0a\xea\x61\x94\x77\x13\x1c\x37\xd5\xe9\x71\x83\xf7\xe3\x33\xd4\x55\x27\x83\xa7\x83\xd3\xe3\xf4\x34\xe7\x85\x3d\x1e\xa7\xa0\xc4\x9a\x04\x1f\x18\x63\xf4\xb5\x8c\x6b\xfb\xf6\x65\x8d\x75\x71\x69\xe5\x07\xd3\x1a\x40\x7b\xa7\xe1\x45\x7a\xe9\x6a\x4b\x13\x7e\xec\x8b\x51\x98\x10\xc5\xd1\x43\x53\x3b\x6d\x05\x62\x19\xa4\x0a\x97\xe2\xd4\x54\x13\x15\x82\xb8\x38\xb8\xb4\x55\xee\xac\x79\x9e\x94\xc0\x7b\x64\xe8\xaf\xe2\x4c\xff\x8b\xe9\x7f\xf3\xe5\xf4\xbf\x69\xd3\xdf\xe4\x4e\xe2\xa9\x1b\x86\xa6\x4c\x50\xca\xa0\xf7\x81\xd1\xfb\x00\xe8\xdd\xe8\x98\x8f\xc6\xed\x83\x9f\x3b\x6e\x21\xed\x9e\x98\xc6\x17\x1f\x2e\xd5\x0a\x89\xff\x8f\xab\xe6\x96\xef\xf3\xca\x4d\xaa\xf1\x69\xe0\x9e\x60\xfd\x66\xd6\x70\x30\xd9\x9a\x33\x54\x54\x8e\x39\xa3\x7f\x74\x6e\xe2\x8d\xe4\xae\xc4\x3a\x46\x6c\x0f\x44\x96\xed\xc3\x03\x51\x13\x6f\x20\x67\xd6\xfe\x98\xc3\x0d\x83\xaa\x78\xc3\x61\xaf\x3e\xf8\x19\x9c\xfc\xb2\x2c\xaa\x06\xf4\x21\x27\xc1\x52\x44\xb5\x03\x64\xa3\x6a\xaf\xd6\x7c\xc1\xa6\xef\x76\x47\xfb\x93\x1b\x5e\x70\xc9\xb1\xa9\xde\xf5\x17\xfb\xa6\x96\x1e\xcf\x8b\x8f\x12\xf9\x2c\x02\x60\xd7\xa6\xcd\xea\xc7\xb8\xb4\x29\x27\x4f\xc0\x3a\x0f\x9e\xc4\x8b\xf2\x48\x67\xa2\x1f\x53\x49\xd6\x98\x82\x53\x2a\x98\x99\x82\x41\x30\x00\xbf\xe1\xc9\xbf\x96\x45\x73\xa4\x6e\xd0\x06\x83\x00\x8b\xbe\xfa\xe6\x8f\xa6\x64\xcc\x25\x77\x4f\x5f\x1e\x0d\x76\xf4\x8d\x50\x65\xe4\x2b\x9f\x46\xa1\x17\xa9\x6b\x48\xe1\xf8\xe2\xc9\xf1\x69\x30\xf8\x65\x7c\x39\x9e\xd9\x1b\xdd\xc2\x46\x77\xf4\xbd\x6c\x3d\x8d\x8b\xfa\x52\x87\x36\xef\xbd\x55\x79\x1b\xf7\xa5\xb0\xda\xef\x17\xe9\x33\x9e\xd6\x62\x62\xb7\xd6\xc7\x6a\xfa\x57\x92\x80\xd8\x3b\x04\x04\x98\x62\x60\x3f\xbf\xfb\xc1\xc6\x1e\xdd\x56\xbd\x32\xd5\x6b\xc0\xa1\x94\x7b\x7b\x5a\xea\xd5\xea\x90\x17\x0d\x15\x27\x09\x5b\xe5\x42\x7d\x09\x89\xb8\x29\xf8\x0a\xca\xaf\xd4\x6d\x70\x75\x63\xca\x6b\xce\xd7\xe7\xb1\x68\x24\x60\xa0\xae\x85\xd2\x9a\xbf\x9e\x51\x97\x06\x38\x3b\x75\xc0\x9a\x15\x53\x72\xf3\xa3\x5a\xc6\x15\x7f\xbb\x24\x08\x5a\x0b\xa6\x8f\x19\x14\xf5\x28\x3d\xe1\xad\xce\x7d\xea\x87\x83\xe7\xb2\xcc\x1f\xe1\xc1\x30\xaa\xcb\x2c\x6d\xc2\xc1\x93\x81\xc9\xda\xb2\x30\xf8\x9b\x59\xca\xd9\x69\x4f\xe6\xa7\x56\xb3\xd0\x8d\x71\xb7\x61\xf0\x84\x6d\x97\x3a\x74\x30\xdd\x48\x2d\x4d\x65\x97\x5a\xfa\x7b\x3b\x3e\xe3\x74\x71\x65\x93\x91\x48\xf6\xd8\x7c\xeb\xc6\xf9\x60\x85\x0a\xaa\xa8\xaf\x77\xb1\xc0\xc4\x95\x65\x83\x13\x96\xc8\x2e\xed\xd0\xa9\x66\x79\xd2\x5a\x7b\x3c\x13\x18\xda\x0f\x61\xf1\x7e\x60\xee\xb3\x21\xe5\xc7\x6a\x79\x87\xca\x4f\xeb\x1e\x9e\xeb\x38\xb9\xf1\xe2\xec\x0d\x56\xa4\x13\x06\xfb\xde\x9c\x9f\x1d\xb6\xae\x23\x4d\xa4\xf8\x28\xcb\x86\x32\x40\x57\xf9\x94\x63\xa6\xe3\x65\x93\x66\x18\x10\xd0\xbf\x98\x2a\x1a\xcd\x8a\x43\x82\xfb\x43\x9a\x63\xc4\xe8\xcc\x1c\x62\x3d\xb0\x06\x86\x1e\xfd\xdb\x96\x96\x93\x85\x8f\xde\xb5\x6a\xfa\xde\xe9\xcd\x8c\xf7\x16\x5d\xab\x71\x4f\xbc\x5a\xbb\x9e\x29\x60\x2f\x13\xe9\xd3\x82\xdf\xcc\x9e\x0e\x88\x37\x93\x0f\x78\x82\x77\xd2\xe5\x55\xf0\xc0\x65\x05\x93\xfd\xc9\x36\xf3\x04\x8e\xc6\xdf\x3b\xef\x7b\x1c\x51\x12\x58\xe8\xc0\xd6\x99\x0d\xfc\xd9\x1c\x3e\x50\x7e\xa2\xbe\xc5\x00\x45\x60\xa4\xaf\x88\x39\xd0\x05\x01\x0f\x1a\x5a\x06\x78\x9c\x4b\x43\xfd\x09\x15\xb2\x43\xd4\x8d\x7b\xc4\x61\x48\x77\x85\x98\xef\x7a\x64\xb4\xbb\x44\xd7\x69\xd6\x00\x85\x6c\x27\xe8\xa0\xa6\x35\xa3\x30\x00\xb5\xeb\x49\xfa\xe9\xa5\x74\x8b\x41\xb6\xe9\xd2\x96\x8c\x3f\x79\x62\xcc\x40\x73\x65\x86\xe1\x3c\x72\x9c\x65\xe2\x77\xa1\xd9\xf1\xb4\x5e\xe5\x60\x75\xa4\x49\x8f\xd8\x89\x6a\x93\x50\xaa\x8f\xf6\xa9\x9b\x04\x07\x4b\x2d\xf5\x4b\x40\xfc\x0d\x0f\xa0\x00\x74\x87\x1b\x81\xd6\xd9\x8e\x32\x91\x1d\x9d\x03\xb5\x80\xe9\xf8\x9f\xb3\x5f\x92\xdd\x5f\xa2\x68\xf7\x24\xda\x7d\x3c\xfe\x3c\x62\xf5\xcc\xd0\xa5\x17\x71\xe4\xf9\xb2\xcc\xa4\xa2\x97\x9a\xa6\x53\xde\x59\x7b\x5b\xd7\xd2\x34\x9f\x3d\xb9\xa8\x91\x75\xe3\xc2\x73\x85\xd8\xe7\x4c\xf2\xa1\xf5\x58\xc3\x1e\x23\x66\xd9\x57\x56\xce\xa0\x5e\x75\x1a\x58\xa3\xc1\xda\x0c\xfd\x2a\xb5\xa4\x8f\x45\xbe\xb9\x46\x69\x4b\xf0\x34\x7b\x59\x68\xfc\x3d\xc9\xd0\x19\x52\xeb\xd2\x9c\xa2\xee\x6f\xae\x79\x50\xa0\x0b\x42\xd1\x9b\xd4\x45\x67\xeb\x65\xb0\x15\x9c\x8b\x5c\xff\x1d\xe4\x7c\xd8\x41\x52\x11\x5b\xfb\x51\x3a\xd1\xec\x21\x7c\x36\x53\x62\xd3\x24\xd0\x96\x00\x63\x73\x7f\xf4\xc0\xbc\x59\xfc\xf5\x82\xea\x16\xfa\xca\x63\x2b\x9a\x18\xdb\xa6\x43\x12\x45\x0b\xc3\x86\x3b\xed\xfb\xa7\xd6\xd6\x74\x76\xf7\x9b\xeb\x37\xb9\xd2\xc2\x5d\xfc\xcc\x3a\x33\x90\x67\xd3\xe9\x72\x81\x97\xd2\x29\xf3\x70\x0b\x61\xb2\x86\x63\x41\xf4\x1f\x38\x97\x33\x1d\xb0\xe6\xec\x51\x9b\x3f\xae\xed\xdf\x69\xfd\xd9\x5b\x6d\xfd\xe4\x37\x8b\x61\xef\x1a\xaf\xf0\x99\xbb\x7d\xa8\xdc\xb8\x8b\x68\x7b\xa3\xa7\xfd\x2c\x4f\x74\xd2\x54\xc3\x2b\xca\x06\xea\xc9\xc0\x51\xe0\xb6\xb9\x38\xe9\xe9\x0b\x5e\x7f\xbb\xad\x86\x99\xc8\x69\x91\x80\x19\xf3\xea\x79\xb1\x28\x8b\x1c\x3f\xec\xd5\xd3\x9f\xee\x74\x3a\x86\xa1\xee\xed\xbc\x59\xd7\xea\x97\x5d\xf4\xa9\x02\x11\xf0\x25\x1d\x65\x08\x08\x5c\x92\x5a\xd4\x25\xa5\x57\x50\x10\xb7\xcc\x96\xb5\xac\x77\x4c\x5c\xc8\x9d\x05\x98\xf6\xf8\xdd\x32\x1b\xeb\xf0\x07\x36\xb7\x4e\x9d\x62\x1e\x0e\x2f\x2a\xa4\x34\x80\x9c\xc9\x4a\xc5\x1e\x5c\x9b\xf6\xc2\x0e\x73\xe9\x4f\xc1\xd9\x08\x1b\xee\xf8\x6e\xe2\x9b\xb6\x28\x74\xb9\xc5\xb1\xf5\xd4\x28\xc1\x0c\x8d\x9b\x54\x71\x7a\x10\x75\x73\x13\x37\x8d\xd7\x63\xa1\x75\x8c\x9e\x96\xb1\x66\x18\xb5\xd4\x18\xf6\x0b\xf1\xd4\x93\xdf\xbe\xa5\xc8\x9c\xcd\xaf\xf8\x81\xca\xda\x1b\x69\xd8\xe5\xf3\x8f\xf6\xe3\x92\x0e\xa4\x0b\x85\xc2\x2e\x7e\xa2\xf2\x52\x9b\xbb\x0a\xca\x05\x96\xe9\x95\xf1\xfd\x29\xee\xdd\x8a\x49\xa0\x27\xad\xec\x70\xbe\xef\xf0\x1e\x7a\x94\xea\x3c\x66\x0a\xd8\x48\xf5\xe1\x2d\xbb\xd8\xde\xbd\x88\xde\x8f\x5c\x60\x9e\x7c\x3a\x1d\x7f\xa8\xc7\xec\x2f\x99\xef\xa1\xce\xf5\x37\x52\xf5\x81\x7a\xe7\xaa\x03\x65\x3b\x19\x2e\xe6\xe8\xbe\xea\x0d\x33\x75\x3e\xcc\x8c\xf9\xf1\x69\x26\x6d\x7a\x94\xde\x16\x69\xfd\x42\x02\x85\xa6\xf8\x89\x22\x92\x3d\x3f\x57\xad\xcb\x9e\x20\x40\x53\x4c\xbf\x3b\x2f\x7e\x4c\x67\xc8\x07\x09\x35\x31\xf1\xbd\xf6\x25\x00\xfa\xb2\x34\xc7\x2d\x7a\x5c\x85\xd0\xc9\x7b\x27\xc6\x63\x92\xfa\xd1\xc2\x7b\x1b\x0c\xd9\x19\x7f\xfd\xf5\x8e\xf8\x1a\xf3\x28\x61\x94\xe6\xb6\x50\x37\x4b\xea\x7e\xd4\xe9\x9b\x4a\xbd\x18\x0f\x11\x0a\x26\xba\x80\x7f\x2b\x13\x51\xe4\xd9\x8a\x82\xa2\x78\x94\x7c\x1b\x57\x09\x5d\x21\x80\x85\x98\xa4\xf8\x11\x08\xf4\xf1\x8a\x2c\x61\x56\x50\x07\xe4\x11\x40\x18\x3b\xbc\xd0\x4b\xb9\xb5\x61\x85\x79\x5c\xcf\x8d\x1d\xd4\x51\xfe\xf6\x33\x2f\x5a\x53\xb2\xec\x4c\x5e\x56\xf1\x6c\xc1\xc7\xd5\x3d\xd2\xb4\x6f\x10\x3e\xca\x00\xac\xf5\x92\xd0\xe5\x0d\x92\x69\x61\x0b\xa8\x52\xe0\xe1\x81\xba\xf2\x98\x54\x45\x49\xa7\x5a\x08\x47\x7c\x85\xe8\x00\x57\xe3\x19\x79\xe8\xa4\xcc\x74\x51\xb6\x26\x7d\x85\x82\xee\xde\xd9\x31\x6b\xb8\xc7\x08\x88\xdf\x36\xcd\x1e\x6f\xf6\xb7\xcc\xb6\x5f\x08\xb5\x43\x58\x9e\x99\x54\xf8\x82\xcf\x2a\x59\x23\xf9\x7a\x04\x30\xb6\x71\x05\x5b\xb1\x8d\x4c\x7b\x58\xaa\x15\x2d\x81\x26\xbc\x8f\xc0\x9a\x89\xd1\x45\xad\x7e\xdf\xb9\x45\x64\xc4\x7c\xdc\xf2\x8e\x69\x69\x1f\x87\xb8\x65\xa1\xcb\x7f\x07\x00\x00\xff\xff\x04\xfd\x4c\x10\x43\x5e\x00\x00") +var _webUiStaticJsGraphJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xe4\x7c\x6d\x73\xdb\x38\xd2\xe0\x77\xff\x8a\x0e\x27\x15\x51\x63\x99\xb2\x33\xcf\xce\x3d\x2b\x59\x9e\xcb\xe4\x65\x93\xdd\x4c\x92\x75\x3c\xbb\x73\xe5\x78\x5d\x10\x09\x89\x88\x29\x92\x0b\x80\xb6\x35\x89\xfe\xfb\x15\x1a\x00\x09\x90\x94\xa5\x99\xa9\xdb\xaa\xab\x27\x1f\xe4\x10\x04\x1a\xdd\x8d\x46\xa3\xdf\xc0\x5b\xc2\xe1\x03\x2f\x56\x54\xa6\xb4\x12\x30\x73\x1f\xbe\x7e\x85\x2f\x9b\xe9\x81\xea\xb2\xe4\xa4\x4c\x2f\xe8\xaa\xcc\x88\xa4\xd3\x03\x6c\xfb\xf8\xf2\xf9\xfb\x77\x2f\x60\x06\x27\xc7\xc7\xc7\xd3\x83\x83\xd7\x24\x4f\x32\x3a\x27\x5c\x44\x9c\x2e\x99\x90\x94\xbf\xa6\x59\x49\x79\x38\x28\x89\x4c\x3f\x70\xba\x60\xf7\x83\x11\x2c\xaa\x3c\x96\xac\xc8\xc3\x21\x7c\x01\x4e\x65\xc5\x73\xf8\xf0\xec\xe2\xf5\xf5\x87\xf3\x97\xaf\xde\xfc\x32\x85\xcd\x70\x7a\x70\xd0\xe0\x11\xfd\x45\x4d\x0e\xb3\x66\x20\xcd\xe8\x8a\xe6\x72\x04\x45\xa9\x9e\xc5\x08\x52\x9c\xfb\x79\x4a\xf2\x25\xb5\x4f\xe7\x74\x55\xdc\xd2\x21\x7c\x39\x00\x90\x29\x13\x11\xcd\x60\x06\x66\xec\xd4\x36\x22\x65\xaf\x2f\x7e\x7a\x0b\x33\xc8\xab\x2c\xab\x5f\x18\xd8\x30\xb3\xb3\xd4\x6f\xdc\xc9\x60\xe6\xcd\xdd\xea\xa3\x51\x70\x51\xd7\xe8\x80\x87\x62\xa8\x46\x0c\xd5\xd0\x4d\x3d\x9e\xb3\xf8\x46\xa4\xe4\xce\xd2\xee\xa1\x96\x10\x49\x60\x06\x97\x57\xd3\x03\xdb\xc4\x72\x26\x19\xc9\xd8\xaf\x34\x1c\x4e\x0f\x36\x3d\x0c\x8c\x24\x5b\xd1\x57\x24\x96\x05\x57\x44\x29\x34\x82\x75\x30\x81\xef\x8f\xe1\x5b\xfd\xf3\xf4\xbf\xe0\x5b\xf8\xee\xfb\x3f\x8d\xd4\xab\xbb\xee\xab\xff\x85\x2f\x92\xd6\x0b\x6c\x4c\x9b\x46\x7c\x5e\xe1\x33\xfe\x57\x04\x13\x38\xe9\xc7\x48\x48\x5a\xfe\x83\x64\x15\x55\x08\x5d\xaa\xce\x27\x22\x18\x41\x70\x72\xac\xff\xac\xd4\xef\x9f\xf0\xf7\x44\xff\xf9\xee\x58\x3f\xa5\xea\xf7\x29\xfe\x7e\x8f\xbf\x27\xfa\xe1\x24\xc1\x17\x49\x80\x53\x9f\xdc\xe1\x13\xfe\xfe\x17\xfe\xfe\x37\xfe\x9e\xac\xb1\x7d\x1d\x1c\x5c\xf5\xa1\x95\x57\x2b\xfc\x8f\xc2\xea\xb8\xaf\x43\xc9\x0b\x59\xc8\x75\x49\x1d\xb6\x77\x17\x59\xed\x11\x41\xb3\x05\xcc\x70\x89\xd4\xea\xa9\xc7\x88\x25\xde\x36\x6b\x4f\x7a\x78\x88\xab\x3a\x1e\xc3\x47\x2a\x21\xa1\x0b\x52\x65\xd2\xca\x60\x64\x81\xd8\x67\x04\x66\xc0\x4e\xdb\x2f\xb9\x12\xc9\x6b\x96\x97\x95\xb4\xbd\xfa\x5e\x7d\xfd\x8a\x1c\x55\xc3\xd9\x02\x42\xaf\x9f\x24\x73\x98\xcd\x66\x50\xe5\x09\x5d\xb0\x9c\x26\x56\x80\xbb\xbd\xe0\x04\x45\xd8\x20\xff\x82\x93\x3b\xad\x36\x20\x2e\x72\xc9\x8b\x4c\x00\xc9\x13\x7c\x20\x2c\xa7\x1c\x16\xbc\x58\x41\xa3\x34\x40\x1a\xf5\x12\x1d\x58\x3a\xdc\xbd\xf9\x38\xf4\x74\x90\x87\xe5\x70\x58\x93\x4e\xb3\x88\x94\x25\xcd\x93\xd0\x87\x30\xb4\x4c\xfd\x0b\x95\xc0\xe9\x82\x72\x9a\xc7\x54\x80\x2c\x80\x64\x19\xc8\x94\x02\xcb\x25\xe5\x54\x48\x96\x2f\xad\x96\x10\xc0\x72\x7c\xd7\x10\xa2\x71\x27\x79\xa2\xc1\xcd\x59\x9e\x00\xbd\xa5\xb9\x34\x5b\x9a\xe3\x1a\xd5\x3a\xf3\x9f\x5c\xa1\xc3\x2d\xfb\x69\x16\x2d\x58\x9e\x84\xc1\x37\xf8\xf6\xfa\x4e\xbf\x0e\xe0\xd0\x2e\x62\x43\xca\xbf\x2b\xca\xd7\xaf\x0a\xbe\x82\x99\x07\xcb\x40\xd0\xef\xaf\x17\x05\x5f\x05\x9a\x3a\x3d\xc3\x7d\xc9\xfb\x07\x48\x7a\x2f\x09\xa7\xe4\x32\x27\x2b\x3a\x53\xfd\xae\x02\x87\x71\xf7\x25\x8f\x6e\xe8\xba\xe4\x54\x88\xb0\x51\xb5\x76\xbd\xc7\x63\x78\xa9\x18\x04\x77\x44\x00\x76\xa2\x09\xdc\x31\x99\x16\x95\x44\x16\x89\x94\x2d\x24\xdc\xd0\x75\x84\xfd\x95\x24\xd1\xe8\x2e\x65\x71\x0a\xb3\x19\x9c\x7c\x07\x4f\x9e\xc0\x23\x1a\x61\xb7\xbf\xd1\xb5\x85\xdb\x26\x36\x12\xd5\x7c\xc5\x64\x88\x98\xa9\x7f\x34\x2a\x39\x32\xf8\x85\xde\x0a\xf6\x0d\x0a\x1a\xe2\xf5\xac\x92\xc5\x11\xa7\x42\xed\x42\x85\x89\x22\x14\x14\xa5\x50\xe4\x80\x22\xae\x51\x52\x8b\x52\x2c\x16\x82\x4a\xb3\x25\x23\xfd\xf4\x9a\xb2\x65\x2a\xe1\x48\xb7\xc5\x19\xa3\xb9\x69\x9b\xd6\xe3\x34\xf8\x0b\xc3\x42\xff\x30\x6a\x48\x01\x78\xac\x9e\xa3\x58\x88\x70\x90\x22\x88\xc1\x08\x06\xa4\x92\xc5\xa0\xdd\x4a\xb3\x48\xc4\xbc\xc8\x32\x33\xfd\xa1\xc1\xcd\x92\xa7\xff\x3c\xd6\x87\x43\x54\xe4\xe1\xe0\x86\xae\xab\x52\x13\xd4\x3d\x46\x5d\xf4\xcc\x81\x82\x07\x29\x98\xdf\x66\x91\x63\x3c\xa9\xf4\xfe\x70\xcf\x2e\x47\x88\x50\x3b\xbc\x71\xf5\x46\xb3\x3e\x5a\x98\x10\x0b\x2d\x49\x8e\x2a\x71\x05\x4a\x48\x12\xdf\xd0\xe4\x47\x99\x6f\x83\x61\xbb\x5c\xcf\x65\xde\x1d\xb8\xc7\xcc\xa6\xa7\x3b\x2b\xcb\x05\xe5\xf2\x27\x2a\x39\x8b\xb7\x41\x10\x34\xa3\xb1\x01\xa1\xfb\x5f\xaf\x70\x80\x0b\x88\xd3\x05\xa7\x22\x7d\xa3\x64\xfe\x96\x64\xfb\xc0\x32\x43\xae\xdc\xed\x18\x17\xb9\x28\x32\x7a\x81\x0a\xb2\x6f\x17\x9b\x0e\xce\xcc\x5a\xcf\x91\x39\xc0\x96\x21\x5a\x75\xd4\xca\xc8\x9d\x4e\x92\xb9\xe8\x1f\x45\x2e\x95\xd5\x70\x24\x8b\xe5\x32\xa3\xb3\x81\x24\xf3\x81\x4b\xae\x1a\x18\xd1\x7f\x77\x94\xff\x50\xfd\x84\x81\x48\x8b\xbb\x76\xef\x22\xd7\xed\x79\x34\xc7\xae\x81\x23\x93\xb5\xda\x50\x7b\x47\x12\xbe\xc4\x3d\xf7\x38\xa4\x91\x7e\x30\x42\xde\x73\x88\xe8\xf7\x51\x49\x38\xcd\x65\x38\x8c\x58\x9e\xd0\xfb\xd0\xed\xef\xca\xac\x7d\xa1\xb4\xcd\xe3\x30\xf8\x46\x29\x52\x03\x81\x48\xc9\xc3\x80\x70\x46\x8e\xec\x01\x14\x0c\x87\x51\x4a\xc4\xf3\x8c\x08\x11\x06\x9c\x66\x05\x49\x82\x61\x4b\x13\x69\xfd\xf3\x77\xb5\xce\x8d\xaa\xd1\xbb\x48\xab\xfc\x73\x6d\xb2\x2a\xcb\x4d\xc0\xa2\x88\x2b\x01\x73\x12\xdf\xa8\xa3\x04\x95\x2f\xcb\x85\xa4\x24\x81\x62\x01\x1a\x96\x3a\x51\xa2\x3e\x01\x8d\xe6\xb8\x34\x37\x74\x9d\x14\x77\xb9\xb2\x49\xb4\x39\xdc\xcb\xc9\x66\x03\xe3\x9c\x1e\x4b\xb0\xf9\x96\x64\xa1\xff\x34\x34\x7d\x8c\x91\xdd\xaf\x49\x37\xc3\xe6\xec\xe0\xbc\xd8\x72\x78\xe8\x77\xc1\x30\x4a\x59\x62\xb8\xde\x08\xeb\x33\xad\x12\xb7\xcb\xaa\x52\x4a\x6d\x09\xb7\x3b\xaa\x86\xe0\x0d\x71\x7a\xaf\x9f\xdd\x33\xb1\xb5\xf7\xfa\x9a\xdc\x33\xe1\x74\xcf\xe8\x92\xe6\xc9\x16\x74\xf4\x4b\x57\xd9\x94\x2c\xcf\xe9\x36\xa2\xcd\x5b\xf7\x98\xbc\x25\xd9\x47\x49\xe4\x96\x5d\x86\xef\xaf\x85\xea\xe0\x1d\xca\x79\xf2\x82\x48\xda\x3f\xc6\x51\x68\x34\x4f\xba\x8a\xd4\x0c\x56\x56\x3f\x55\x36\x7c\xc9\xe2\x1b\xca\x43\x2d\x15\x19\xc9\x97\x15\x59\xd2\x09\x0c\x68\x3e\x18\x61\x9b\xea\xf0\x91\xc6\x45\x9e\x88\x09\x2c\x48\x26\xe8\xa8\x3e\x06\x3a\x06\x5e\x3d\xa5\x2f\x67\xcd\x9c\x24\x1c\xf8\x33\x0f\x86\x91\xa0\x12\xed\xf6\x6d\xa0\xb4\x21\xd8\x82\x65\xce\x1d\xef\xdc\xea\xd9\x71\xee\x79\xd5\x52\xc2\xdb\x41\x54\xa5\xc2\xf1\x5c\x77\xb7\x40\xea\x2d\x27\x3e\xd6\x47\x4a\xc7\x11\x33\x7b\xc3\x3d\x79\xf4\xde\x41\xb3\x77\x70\x32\x30\x7e\x99\x35\xe8\xe5\x3a\xa3\x08\x4e\x1f\x6c\x1d\x78\xaa\x13\x8b\x8b\xfa\xd0\x6b\x8e\x41\xbd\xdc\x83\x68\x99\xad\xcb\x54\x75\x19\x38\xca\xcb\x47\x34\xec\x28\xa5\x06\x0a\x49\x12\xa3\xc0\xe6\x32\x3f\x2a\x39\x5b\x11\xbe\x0e\x6a\x73\x49\x01\x76\xfa\xd4\x93\x1d\xc5\x29\x8d\x6f\x5a\xfd\x38\xfa\x9f\x9d\xae\x55\x8e\x9d\x69\x62\xbb\x6f\x80\x66\x82\x6e\x45\xc9\x03\xf3\xdb\xb0\xea\x4c\xf5\x30\x66\x1e\x11\x1b\xeb\x31\x7b\x8b\x12\x3a\x2b\xef\xe0\x18\x67\x2c\xbe\x09\x3b\xcb\xd5\xc7\x7b\x65\xa9\x36\xca\xe6\xaf\x1f\xdf\xbf\x6b\x56\x63\x3c\x86\x37\x0b\xc7\x25\x50\xd6\xb0\x99\x65\x84\xcd\x05\x67\x4b\x96\x93\x0c\x04\xe5\x8c\x0a\x40\x5f\x7d\x59\x48\x58\x55\x92\x48\x9a\x34\x70\x42\x11\x93\x4c\x39\x54\xca\x2d\xba\xa3\x90\x53\x9a\xa8\x43\x84\xab\xad\x2b\x24\xaf\x62\x09\x4c\x6a\x37\xc9\x83\xac\x30\x42\xb8\x91\xbb\x1e\x26\x28\xa0\xcf\x67\x4e\x72\xa1\x3c\x83\x17\x6a\xff\xb6\x68\x69\x98\x07\x5d\xb1\xef\xf0\xe2\x07\x18\x1c\x0f\x60\xa2\x76\x82\x3d\x71\xda\xdc\xae\x01\xe9\x5d\x88\x6e\x6c\x58\x9b\x9e\x1d\x77\xc6\x5a\xf8\x9d\xb5\x68\x19\x4c\x8e\xbc\xd8\xa3\xda\x99\xcb\x5a\x49\x0f\xf7\xea\x39\xcc\xcd\x86\x47\xbd\xd8\x32\x8f\x8d\xba\xaf\xcf\xb8\x2e\xea\x5a\x63\xcf\x2b\x29\x8b\xdc\x1a\x90\xf1\x35\x5a\xc0\x57\xc1\xb0\x47\xc8\xec\xa1\x1f\x73\x4a\x04\x3d\x37\x36\x8b\x3b\xe9\x43\xc0\x13\xba\x07\xf0\x84\xf6\x00\xdf\x17\x75\x9a\x27\xfb\x20\xfe\x32\x4f\x7e\x23\xda\x3b\x00\x5b\xa4\x1d\xc0\xbd\x16\x52\x8f\xc6\x6f\x99\x3d\xda\x02\x57\xef\x02\x4e\xcb\x8c\xc4\x34\x18\xc1\x17\xe5\x03\x4e\x7a\xe0\xa1\x6a\x1f\xc1\xaa\x48\xe8\x04\x82\x39\x5d\x14\x9c\x06\x9b\x8e\x2d\x65\x4d\x2c\xb5\x4f\x39\xc5\x27\x96\x2f\x1b\x89\xd6\x2e\xa1\x52\x51\xfa\x18\xe8\x39\xd6\xad\x4f\xa0\x3a\x99\xe3\xbc\x1e\xb1\x4d\x1b\x99\x43\x0f\x83\x82\x0f\x88\xab\xe5\x54\x59\x94\x55\x46\x24\x7d\x83\x14\x92\x79\x46\x35\x95\xc2\x08\x6f\xad\xdc\x1c\x8b\xd0\x9d\xa9\xb3\x3b\x36\xfd\x71\xba\x26\xde\xb5\x75\xc6\xbd\xc2\x5f\x8f\x23\xf2\x99\xdc\x87\x56\x97\xaa\x49\x8a\x64\x02\xc1\x5f\x5e\x5e\x04\x23\xd3\x58\xf1\x6c\xe2\x86\x83\xe1\x10\x82\x31\x29\xd9\xf8\xf6\x64\x9c\x91\x39\xcd\xc6\xd7\xd7\x8a\xb3\xd7\xd7\xe3\x5b\x0c\x1d\xd6\x23\x95\x02\xbc\x58\x97\x6a\x5d\x3f\x8b\x22\xaf\xdb\x45\x15\xc7\x54\x28\x53\xc8\x22\xa8\x5e\x8f\x30\x4c\xa0\x4c\xb9\x4a\xb8\x0e\xbc\xe2\x99\x7a\xaf\xb4\xa2\xac\x04\x3c\x9a\xcd\x20\x30\x20\x02\xb7\xa3\xe5\x61\x5a\xdc\xbd\x54\xb6\x71\x18\xe0\x1f\x50\x3a\x88\xe5\x4b\x20\xb7\x84\x65\x8a\x43\xa0\x9d\x4b\xf1\xa8\x39\xe2\x9a\x85\x6d\x5a\x36\xf5\xff\x14\xe7\x56\x35\x5b\x11\x19\x45\x5b\xd3\x75\x51\x70\x08\xd1\xd0\xc0\x08\x25\x30\x38\xb5\x03\xa2\x8c\xe6\x4b\x99\x4e\x81\x1d\x1e\xf6\x60\xeb\xee\x85\xcb\xe3\xab\xda\x74\x23\x49\x12\xe6\xf4\x0e\xde\xe3\x73\x68\x80\x5d\xb2\xab\x11\x34\xff\x1f\x0e\x5d\x6c\x0f\x3c\xc0\x8b\xea\xd7\x5f\xd7\xe7\x54\x54\x99\x34\xc1\x65\xfb\x0f\x15\xc5\x04\x03\xd8\x23\x8f\x7c\xd5\xb7\xdb\xbe\x22\xe5\x04\xbe\x6c\xb6\x4e\x84\xa2\xac\x64\x91\xa4\x94\x24\xa1\x47\x61\x51\xf1\x98\x4e\x2c\xc6\x2e\x54\x26\xe9\x4a\x4c\x20\x20\x59\x16\xf8\xb3\xc9\x38\xa5\xdc\x91\x0d\xd5\xd3\x67\x9c\x3d\xf4\xef\x28\xa4\xe4\x96\x1a\xcc\x71\x11\xe2\x8a\x2b\x37\x55\xd3\x38\x02\x71\xc3\x4a\x6f\xa0\x12\xa6\x47\x6d\xfe\x68\xd5\x09\x5f\xbf\x76\x38\x67\xde\x28\x91\xc3\x50\x14\x3e\xb6\x91\xe9\x32\xdc\x0c\x73\x07\x4d\x77\x0d\x59\x91\x52\xad\xd3\x66\x67\x47\x6e\xd7\x14\x1b\xa3\x05\xcb\x24\xe5\x61\x33\x53\x64\x94\x6e\x38\xb8\x1e\x8c\x60\x00\x83\x61\x2d\x32\xa3\x0e\xe6\x00\x25\x57\xae\xca\xa9\x90\xbc\xc8\x97\x67\x83\x51\xb7\x43\x21\xa4\xea\x31\xde\xde\x85\xde\x4b\x4e\x62\x39\x69\xc5\xe0\x6a\x37\x37\xeb\xe2\xe4\xec\x2e\x23\x56\xc3\x3d\x29\x8f\x16\x05\x7f\x49\xe2\xb4\x51\xd6\xbc\xbb\x22\xfd\x0c\xbe\xe4\x91\xb5\xd9\xae\x60\x06\xbc\x3d\x63\x1b\x07\x47\xd4\xa1\xd1\xfc\x4a\x20\x81\xe5\xbd\x33\xb8\xe3\x37\xa3\x03\x6f\x2f\x70\xd9\x91\x6b\xd1\xc6\x1c\x1b\x23\xd5\xb7\x21\x8f\x8c\xe6\x5d\x02\xad\xb2\xe9\x25\x73\x7e\x15\x89\xb8\xe0\x14\x8e\xfa\xdf\x13\xf3\xbe\x4d\xbf\x25\x10\x3d\xad\x63\xf8\x01\x48\x94\x15\xca\x26\x7e\x5e\xac\x4a\xc2\x69\x38\x1f\xc2\x04\x58\x8b\x49\x2d\xa6\x39\x5c\x12\xdb\xd9\x91\xb2\x65\x9a\xb1\x65\xea\xf1\x04\x7a\x37\xbb\x01\xf8\x38\x1c\x9c\x26\xec\xf6\x6c\x60\x43\xf3\x6d\xaa\xd4\xd8\xab\x48\x48\xce\xf2\x65\x23\x70\xa0\x04\xee\x7a\x30\x84\x43\x25\xc3\x08\x60\xe8\x63\xd5\x47\xc8\x78\x0c\x17\x29\x13\xe8\x02\x60\x4e\x22\xc5\x24\x06\x90\x85\xa4\x1c\x88\x94\x24\x4e\xd5\x99\x82\xd1\x6d\xab\xfb\xa0\xcc\xaa\x25\xcb\x47\x40\x04\x30\xe9\xc2\x2a\x64\x4a\xf9\x1d\x13\x14\xe6\x9c\x92\x1b\xd1\x1a\x67\xe9\x27\x19\x93\xeb\xa8\x47\xbd\x7a\x01\x26\x07\x69\x8c\x01\x4d\xba\x3e\x2f\xfc\xa1\xc3\x70\x63\xa3\x13\x3b\x6c\x8f\x25\x95\xef\xeb\x9c\xec\x6e\x63\x03\xa3\xfd\x75\xff\x2f\x8d\x0b\xaf\x1b\x31\xba\x6d\xf3\x8e\x00\x81\x13\xc5\x36\x27\x44\x50\xc7\x33\x6c\x83\x90\xb4\x6c\xb7\xa0\x9f\x14\x1c\x00\x5c\x6d\x37\xba\xf5\x90\x61\x44\x3d\x3d\x82\x91\xcd\x91\x4d\x35\xb9\xf1\x03\x65\xdf\x34\xa9\xea\x48\x3d\x3a\x61\xce\x88\xe5\xcf\x38\x27\xeb\x50\xb5\x8f\x3c\x72\x86\x70\x36\x83\xe3\x66\x59\x30\x09\x63\xa0\xa0\xb5\x64\xcc\x03\x38\x73\x7b\x81\xe5\x13\x9a\xac\x57\xce\xcc\x38\xa6\x5e\x27\x2f\x16\x5a\x0f\xb2\x19\xa7\x96\xa1\xe9\xf6\xd0\x91\xdd\x76\xb0\x57\x5b\xc4\xb8\xd9\xea\x0c\xfb\x2e\xf3\x93\x70\x41\x5f\x54\x9c\xe0\xf6\x75\xa4\x00\x57\xef\x82\xde\xcb\x46\x1c\xb0\xe9\xfc\x25\xcc\x40\x19\x36\xe7\x74\xf9\xf2\xbe\x0c\x83\x7f\x85\x97\xc7\x47\x7f\xbe\x3a\x1c\x86\x97\xeb\xbb\x24\x5d\x89\xab\xc3\xe1\x63\x2d\x8b\x68\x76\xa1\x3d\xa0\xc4\xa2\x86\x18\x61\x5b\x68\xc0\xd5\x41\xb4\x47\xa6\x6b\x73\xf0\x4c\x91\x37\xea\x9d\x79\x65\x99\xfd\x68\x06\xdf\xb5\xc2\x4d\xdf\x1f\xdb\x10\x99\x9a\x15\xd9\x0c\x33\x40\xf2\xde\xe4\xd2\x02\xb8\x3c\xb9\xaa\x31\xab\x72\xa6\x4e\x61\xfb\xe6\xe9\x95\xc3\x3e\x3d\xfe\xdb\x6e\x52\xd9\x49\xf9\x5f\x2a\x00\x57\x3b\x39\xec\x79\xaa\x7b\xef\x33\x64\x8e\x09\x39\xda\x95\xf6\xd6\x2a\x6c\xa5\x95\x9c\xf0\x74\x9f\x31\xfb\x40\xa5\x40\x9f\x81\xab\x78\xee\xa1\x70\xda\x87\xc2\x03\x40\xd1\xb8\xf5\xc3\x5b\x2d\x5c\x77\x0c\x9e\x3a\x1b\x6e\x8b\xc7\x05\x0f\xc4\x24\x1a\xeb\xdf\xf5\x0a\x36\xfb\x78\x64\x9e\xf7\xff\x9f\x5f\xb0\xdd\x2b\x05\x47\x70\xa2\x56\xf5\x4c\xaf\xee\xd1\xd1\xd6\x55\x3b\xfb\x9f\xb3\x6a\x4b\x2a\x5f\xd6\x39\x81\xdd\x4b\xd6\xf8\x11\x36\x93\xf0\xf5\x2b\x78\x0d\x3e\xd6\x46\x2f\x28\xc5\xa7\x5e\x86\x75\x40\xde\x8d\x76\xef\x88\xf1\x2f\xa9\xd4\x63\xd5\xff\x2e\xd8\x6a\x7b\x61\x91\x7f\x44\xf3\x8f\xbf\x8d\x36\xd5\x94\xe8\xce\x3a\xb0\x57\x0f\x77\xd2\x4c\xa2\x69\x54\x7d\x87\x8e\xf2\x4b\xb0\x22\x6d\x07\x62\xa2\x17\x27\x04\xf5\x60\xad\xce\xbe\x79\x10\x83\xd4\x9e\xca\xf5\x65\xde\x93\x8a\xd8\x86\x82\x43\x7a\xbd\x9e\x96\x51\x2e\xb3\xc3\xa1\xb5\x54\xf7\xd9\xc8\xf0\x2d\x96\xed\x8d\x9f\xc2\x50\x47\xb9\x2c\x6e\x30\x5f\xc3\xc9\xf8\xa9\xd6\x10\xf0\x04\xe2\x22\xbf\xa5\x5c\xc2\x0a\x6b\x61\xc4\x41\xff\x76\xd8\x53\x49\xfd\xbf\x22\xfc\xe8\x77\x12\xfe\xfb\xa8\x71\x7a\xef\x4f\x4d\x9c\x51\xc2\xb5\x6d\x3c\x6c\x6d\xe9\x8e\xd2\x69\xd4\xc9\xe6\xa0\x1d\x9b\x56\x26\x76\xd8\x93\x8f\x8c\xe8\xaa\x94\xeb\x70\xe8\x64\xaa\x08\xc7\x7d\x6b\x2c\xa0\xee\x66\xfe\xe3\x47\x81\xa9\x8c\x29\xb2\xca\x18\x64\xdb\xcd\x5f\x5b\xb1\x61\x2d\xe8\xab\x60\x68\xf2\x6c\x5f\xbf\xc2\x4f\x44\xa6\xd1\x8a\xdc\x87\xf8\x9f\x45\x56\x14\xdc\x3f\x1a\xc6\xf0\xf4\x4f\xc7\xc3\x11\x9c\xd4\xd3\x36\x29\xd5\x8e\xd6\x80\xb1\x2d\x49\x75\x54\x3b\x22\xf5\x4b\xca\xbd\x00\xa8\x6d\x8c\xc8\x5c\xf9\xc0\x43\xd7\x28\xab\x78\x66\xe7\x32\xe1\x3f\xfb\x58\x12\x4e\x56\xa2\x0e\x73\x05\x08\x25\x98\xb4\x2d\x60\x9b\x9d\xda\x5a\x53\x57\x9b\xe0\x1a\x60\x84\x2b\xa6\xac\x6f\x43\xda\x91\xb7\x36\x53\xb7\xab\xce\x70\x9b\x8e\x53\x1f\x08\x2d\x95\xf9\x5a\xaf\x8a\x7e\x5b\xf1\x4c\x9d\xd6\xfd\x71\x55\x5d\x49\x86\x93\x05\x26\x12\xae\x29\x76\xc5\xbb\x27\x68\xea\xd6\x63\xe0\x26\x39\xa7\xa2\x2c\x72\x41\xbb\x9d\xa7\x9a\x17\x5e\x22\xd1\x60\x2c\xb5\x8c\x36\xf2\x6a\x97\x6f\x3f\xbc\x7f\x37\xc6\xcf\x75\xa6\x69\x37\xce\xbe\x5f\xf7\x4b\xaa\xbc\x9d\x2d\xa1\xec\x96\xfc\xeb\x1a\x14\xfd\x32\x18\x7a\x21\xee\x8a\x67\xbb\x02\xd7\xaa\x7d\x62\xb8\xf4\x9f\x0e\x66\xe3\x28\xf4\xf7\xf7\x0c\x5a\x1b\xa8\x61\x1d\xae\xf6\x59\xb9\x2b\x94\x70\x9f\xf2\x91\x12\xda\xb2\x8d\xbe\x6a\x53\x1e\x54\x80\x5b\xb4\x85\x34\x2a\x02\xee\x05\xd6\xd4\x98\xfb\x94\x47\xdc\x2c\x2b\x26\x4b\x1f\xf5\x55\xb0\xda\x7f\x94\xab\x05\x6d\x8f\xd1\xc4\x7b\x11\x25\x3f\x09\xde\x1e\xac\x59\xac\x3c\x46\x6f\xd0\xce\x7c\x01\xbd\xa7\x71\x85\x45\xa7\x26\x52\x1e\xc0\xa1\x02\x3b\xec\x72\xb9\xe6\x5e\x5c\xac\xca\x8c\x4a\xba\x37\x03\x67\x5b\x18\xf8\x70\x12\x22\x69\x3c\xed\xbe\x13\x44\x1d\xbb\x76\xd3\x4e\x5b\x61\xa4\xfa\x58\x4a\xe5\x2a\x0b\x83\xb7\x05\x49\x40\x6d\x74\x4d\x5e\x0d\xf8\x10\x82\x95\x80\xd3\x39\x87\xf1\x19\x9c\xd7\x3a\x4b\xf7\x72\x4e\x96\x43\x08\x84\x9b\x3e\xe9\x4d\xd7\x36\x24\xec\x11\x4d\xaa\xd7\xc1\xd5\x18\x2b\xb1\xdc\x61\x0f\xaa\x11\x91\x12\x6c\xec\xdb\x6a\xb7\x67\xf3\x8e\xa9\x1b\x53\xe0\xf7\xce\x3d\x18\xb4\xa7\xb6\x3c\xd8\x31\xb5\x57\x27\xb3\x87\xf1\xe2\x1e\x5f\x6a\xf9\x8a\x4a\xbe\x79\x61\x45\xe8\x8e\xe5\x49\x71\xa7\xc9\xb9\xd0\x2f\xdb\x3d\x6b\xfd\xc9\x5a\x75\x94\x7d\x16\x46\xab\xd8\xa7\x31\x33\xd0\x56\xb2\x10\xfc\x80\x4b\x5d\x91\x68\xa7\x84\x99\xc5\x4b\x68\x39\x55\x58\xf5\x27\x5a\x7b\x5c\xba\xde\x62\x22\x45\xc3\xa8\xa1\xe0\x5b\x73\xf3\x65\x37\xb7\x39\xcd\x13\xca\xdf\x92\x39\xcd\xbc\x83\x09\xf3\x98\xa2\x61\x39\x3e\x7f\xc4\x48\xb2\x30\xf7\x3a\x1c\x37\x1b\xdf\x2a\xe3\xdb\x1d\xa6\x99\xa2\x5f\x29\xed\x68\x93\xa2\xce\xfe\x76\xa1\x46\x65\x25\xd2\x30\xb0\x79\x17\xb5\xbb\xf4\xd8\x43\x08\xea\x54\x8b\x51\x3d\x22\x26\x25\x7d\x7d\xf1\xd3\x5b\x83\xe7\x25\xfe\xa9\xb3\x7f\x1b\xdf\x95\xcc\x2c\x75\xc1\x69\xc2\x6e\x21\xce\x88\x10\xb3\x4f\x81\x6e\xfe\x14\x34\x53\x59\x4c\x3e\x17\x2c\x0f\x83\xd3\x39\x3f\x0b\x86\x7a\xfa\x84\xdd\x9e\x05\x3b\x99\xa9\x03\xc7\x17\xc5\x85\x78\xa7\xc3\xa3\x5b\xd9\x29\x6d\x0f\xf3\x26\xb2\xcc\x51\xa6\xe6\x00\x63\xf3\xc1\x97\x60\xfa\x10\xf3\x77\x72\x7f\x37\xfb\x7b\xf8\x5f\xb3\x7c\xf6\x29\xa8\xf9\x62\xf9\xab\xda\x3f\x05\xb5\x92\x43\x4d\xac\x7e\x0c\x35\x87\xb3\x3e\x36\x8e\x34\x0f\x37\x81\xe3\x10\xeb\x01\xfb\xc5\x52\xff\x61\x22\x8f\x35\x2f\x31\x94\xd8\xb0\x52\xef\x58\xec\xfa\x2a\x2b\x88\x34\xef\xed\xa6\x64\xe2\x1d\x79\xa7\xda\x86\xce\x35\x81\xe0\xf0\x4d\xbe\x08\x46\x10\x1c\x99\xbf\xf8\x0c\x77\x2c\xcb\x60\x4e\x35\xb0\x44\x6d\xa7\x02\xde\x91\x77\xca\xdf\x74\xe0\x0f\x23\xb8\x48\xa9\x05\x15\x93\x7c\x20\xd5\x20\xac\xaf\xa0\xc9\x08\x44\x01\x4a\xcb\x82\x4c\xe9\x0a\x88\x80\x25\x29\x05\x84\x79\x95\x65\xc3\xc8\x0b\x7d\x98\xfb\x52\x1b\x2f\x4a\xba\x93\x29\x5e\xe1\x54\xdb\x96\x7c\x30\x84\x51\x92\x8c\x4a\x69\x9d\xad\x73\x73\x7d\x2b\x7a\x5e\x64\x05\x8f\x3e\xe8\x97\x8d\xe7\x87\x56\x92\x4e\x30\x2a\xcb\x0f\x65\x68\x45\x24\x67\xf7\x81\xaf\xa2\x1a\x6b\xc1\x24\xd7\x99\x80\xbc\x90\x50\x2c\x40\xf7\xc7\xbc\xce\x23\xf8\x90\xa1\xf3\x4e\xf1\x8a\x06\x81\xb8\xe0\x9c\xc6\x12\x0b\x92\xa9\x10\xac\xc8\xa3\xc0\x2f\x28\xd1\x72\xbe\x69\x02\x30\xc4\xd6\x1a\xf0\x3a\xc7\xd5\xe8\x4d\x29\xda\xf9\x89\x69\xfd\xa4\xa5\xb8\x49\x50\x48\x61\xf6\x2a\x3a\x39\xb8\x34\xf5\xa6\x30\x99\x8d\x40\xc4\x24\x23\x3c\x98\xba\xaa\x4a\x38\x09\xe9\x96\xad\x65\x13\x22\x8d\x6a\x42\xee\xf8\x2a\xa1\x99\xb8\x29\x54\xa8\x01\xd7\xef\xdc\xea\x37\xc3\x0a\x77\x96\x09\xfe\x8e\xbc\xe1\x13\xf3\xd7\xb7\xcb\xa5\xd0\xe9\x11\xe1\x73\xca\xd9\x40\xae\x89\xe5\x59\x5d\xf7\x13\x1d\xb2\xbf\x3c\xbe\x72\xb3\xdb\xeb\x89\x73\x36\xea\xb8\x92\xee\x76\x72\xd5\xe4\x10\xeb\x8c\xfd\x66\xd8\x58\x83\x99\xb2\xa5\x8d\x04\x46\xf8\x18\xea\x11\x9b\xa6\xc2\xad\x16\xc9\x8f\x58\x98\x18\xfd\x4a\x79\xf1\x8a\x65\x59\xa8\xc8\x69\x05\xd4\xc8\x9e\x86\x44\xe7\x66\xe6\x83\x11\xcc\xba\x4c\xd1\x46\x86\xad\x13\xec\x9f\xe7\x58\x62\x8f\xf7\x26\x49\xbe\x06\xc9\x49\x4c\x85\x92\x77\x92\x03\xbd\x67\xfa\x7e\x16\xea\x83\xc8\x2f\xf9\x6e\x22\x20\xce\x74\x4d\xbd\x78\x9c\xb2\x2c\xe1\x34\x0f\x87\x3d\x49\xb0\xa6\x6f\xab\xfc\x0a\x5f\x60\x05\xba\xf7\x62\xd3\x2e\x65\x37\xe9\x62\x73\xfe\x05\xba\x86\xfd\xcc\x66\x80\xa7\xed\x5a\xf6\x56\x77\x53\xc4\xde\xed\xdf\xa0\xdf\xb9\xd5\xb6\xab\x13\x4e\xd5\x84\x83\x68\x9e\x98\x60\xd0\xd6\x78\x89\xe2\xfc\x73\x13\xee\x93\x05\xfc\xfc\xee\xcd\x2f\x68\xb3\x0b\x49\x56\xa5\xbd\xd5\xe6\xf8\x04\xfb\xc7\xdc\xbe\x7e\x85\xef\xbe\x37\x33\x9c\xa4\xf6\x52\x63\xd4\x13\xa9\xb2\x68\x1e\xd5\x13\xd5\x64\xa2\xe4\x74\xaa\x31\x84\x73\xf2\x7c\x20\x09\x66\x9b\x4d\xe9\xed\x1d\x93\x29\xb0\xfc\x96\x09\x36\xcf\x28\x04\x4a\x15\x05\x7a\xe7\x09\x20\xfa\xd6\x5a\x5c\xe4\x0b\xb6\xac\x38\x4d\xe0\xfe\x48\x2d\x02\xcc\x8b\x2a\x4f\x08\x02\xa0\xb9\xa8\x38\x15\x16\xbc\x4c\x89\xd4\x92\x27\x80\x70\x0a\x09\x13\x65\x46\xd6\xe6\x1e\x1c\x10\x58\xb0\xfb\x06\x8e\x0e\xa0\xba\x97\x41\x72\x52\x96\x98\xc5\x2f\x70\xea\x3a\x27\x5e\xc3\x57\x84\xdb\x61\xd8\xa5\x29\xf2\x45\x81\x46\x16\x5c\x1e\x5f\x45\xf7\x70\xd6\x70\xcd\x49\x81\x68\x1e\x55\x39\x5e\xb2\x0b\xbf\xdc\x4f\x9a\x5e\x23\x30\x45\x58\x1b\xaf\x00\xd8\x81\x2b\xbc\xbd\x79\x04\x27\x6a\x9e\x53\xbb\x22\x9d\x59\xd0\xa2\x51\x53\x98\x0e\xbd\x13\x34\xb7\x66\xde\x15\x77\x10\x73\x4a\xa4\xbe\xa3\xa7\x0e\x49\x7f\x13\x77\x6e\x3c\xbb\xc7\xa8\xae\x29\xd6\x18\x98\xe4\xf4\xc4\x11\xfe\x5a\x91\xea\xdb\x75\x93\x26\xa0\xe8\x6c\x6c\x74\x16\xf5\x65\xbb\x70\x38\x52\x22\x6f\x34\xe8\x1d\x4b\x64\xfa\xc0\x98\x7f\xaa\xf7\xe8\xee\xfe\xf7\xf1\x08\x9e\xd6\xe3\xb4\x79\x4f\xf9\xa4\xa7\x84\xfc\x07\x53\x1b\x10\xc0\x04\x82\x8c\xe5\xd4\x86\x7f\xd0\x8d\x28\x8b\x8c\x18\x3f\x57\xbd\x23\xdc\xc4\x7c\xb4\xe0\x4e\x1a\x79\xd7\xcd\x2b\xa6\x7a\x92\x4a\x16\xc1\xc8\xaf\x41\xbd\x37\xfa\xa4\xcb\xac\x08\x75\x16\x3a\xea\x5f\x34\xa7\x27\x7d\x7c\x76\x60\xad\x77\xc0\xfa\x3f\x86\xff\x5b\x81\x69\x64\x0b\xce\x68\x2e\x6b\xf2\xe8\xc2\x16\x4b\x48\x16\xdf\xbc\x2a\xf8\x8a\xc8\x49\x03\xff\x15\xbb\x97\x6a\x8f\x45\xef\xaa\xd5\x9c\x72\xb5\xbf\x57\x44\xfe\xed\xa7\x1f\x2f\x46\x3d\x8b\x8d\x28\x9a\xc5\x76\x0b\x61\x3d\x34\x8c\xdb\xe5\x84\xc2\xd3\xe2\x96\xf2\x17\x54\x12\x96\xf5\xd3\xf7\xba\xe9\xb0\x1f\x91\x1a\x4d\xbf\xc2\x4a\x2f\xde\x08\xee\x47\xe0\x14\xed\x39\xe9\xad\xc1\xa9\x28\x49\x6e\x75\xbe\x6a\x0c\xb0\xbc\xa8\x8e\xad\xdc\x9b\xe4\xc4\x30\x92\xc5\xcf\x17\xcf\xb5\xa9\x1f\x9a\x5a\x22\x35\xf6\x6c\x30\x75\xc0\x8a\x3b\x22\xe3\xb4\x0b\x18\xe9\xb8\xd6\x6f\x03\x5d\xae\x3f\x0b\xe6\x24\xbe\x59\x72\xa5\xdb\x8e\x8c\xbd\xa0\x2b\x9b\xd0\x16\xc0\x16\x35\x8d\x3a\x82\xba\x13\xc5\x45\x2e\x69\x8e\x77\x41\xf5\x94\x87\x60\xa8\x8d\xfa\x3c\x2c\xd4\xb0\xda\xcd\x9a\x80\xeb\x72\xae\x0d\x25\xa6\xb2\x6f\xea\x65\x4f\x35\x97\x54\x87\x39\x47\xb6\xd8\x59\x9d\x26\x13\x27\x68\xbc\x6a\x1f\x8d\xae\xe2\x41\xfb\xd4\x5e\x08\xeb\x59\xf8\xb7\xf8\xae\x57\xb1\xe8\x61\xb5\x66\x79\x50\x20\x9c\xd9\x9c\x4a\xb3\xfe\x29\x7f\xa4\x29\xb9\x65\x05\xb7\x76\xd8\x6b\x3b\x20\x84\xbd\x44\x4f\xe3\x35\x31\x7f\xfd\xc9\x45\x4a\xb3\x5b\x75\xc4\xec\x35\xf3\x05\xde\x05\xdd\x4f\xe0\xb7\xcd\xea\xc6\xd3\xeb\x1b\x99\x3b\xc3\x22\x82\xfd\xfa\x7b\x6c\x47\x5f\x75\x3d\x6a\x79\x17\x3d\x9a\xa0\x3e\xdd\xeb\x40\xfd\xef\xd5\xf5\xde\x15\x81\x6d\xea\x66\x8f\xc4\x7f\x4f\xb2\x64\x47\xca\xa2\x9f\x27\xca\x48\x36\x58\x98\x9b\x45\x02\x4a\x82\x97\xf2\xdd\x8b\x47\x8b\x82\xdb\xeb\x49\xc6\x72\x41\x17\xda\xb9\x6d\x24\xc8\x2d\x3d\x30\xe6\x8d\x73\xc7\xe8\xd9\x5f\x9f\xfd\x02\x36\x1e\xae\xcc\x91\x82\x27\x94\xeb\xeb\x49\x47\xb5\x97\x0c\x4c\x6a\x47\xde\x99\x53\x03\xbb\x4b\xa9\x36\x61\x2a\x41\xb9\xb2\x94\x94\xa1\xa3\x0b\x11\x11\x1f\xf7\x4a\x6c\x7d\x35\xc9\x78\xa0\x9e\xc5\xd7\x7f\xa5\x09\xdd\xf1\x9d\x7e\x45\xaf\x1f\xfd\xae\x40\x34\xcb\x82\xe5\x52\xc0\x42\x69\xc4\x96\x6f\xdc\x35\xf0\x2f\xc8\xdc\xbf\x91\xe6\x5e\x35\x72\x62\x86\xf5\xd5\xa7\xbd\xa4\xa0\x95\x80\x6a\x55\x26\x90\xbd\xe4\x40\xe7\x96\x9b\x3b\x53\x0f\x63\xe9\x72\x5a\x47\x48\x6c\xc8\xec\xc7\x22\x59\x5b\x56\x3b\xe0\xfc\x4b\xea\xd7\x78\xe3\x03\xe4\xbc\x48\xcc\xdd\x3e\x1c\xe7\xa5\x9e\xc5\x1d\x93\x71\x8a\x04\x38\x01\x0e\x8d\x7f\x4c\x04\x85\xe0\x96\xc6\xb2\xe0\xc1\xa4\xb6\x3f\x9d\xbe\xbd\x2b\x68\xa7\x31\xde\x4d\x70\x2a\xf9\xd9\xa9\x4c\x94\xdf\xab\xce\xaa\xd9\xe0\xe9\xe0\xec\x94\x9d\xe5\x7a\x61\x4f\xc7\xec\xec\x74\x2c\x13\xf5\xc3\xcf\x9a\xa4\x41\xbb\x46\xa7\xbf\xf2\xac\x8b\x4b\xeb\x2a\x05\xae\x01\xcc\xdc\x8e\x97\xec\xca\x3d\x2d\xeb\xf0\x63\x5f\x8c\xa2\x0e\x51\x4c\x1f\x22\xed\xac\x15\x88\xd5\x20\x4d\xb8\x54\x91\x66\xba\x98\x10\xc4\xe5\xc9\x55\xf3\xca\xa5\x5a\xd3\x89\x45\xc0\xd3\x9a\xff\x26\xce\xf4\xff\x31\xff\x6f\x7f\x3f\xff\x6f\xdb\xfc\xaf\xeb\x2f\x2f\xe8\xbd\xb2\x70\x82\x3a\x28\x55\xa3\xf7\x59\xa3\xf7\x19\x4e\xe1\xd6\xc6\x7c\x2c\x6e\x9f\xfd\x6b\x36\x0d\xa4\xc3\x59\xdd\xf9\xf2\xf3\x95\x59\x21\xf8\xdf\x6a\xd5\xdc\xf6\x63\xbd\x72\x73\x3e\x3e\x0b\xda\x55\x65\x7f\x48\x34\x1c\x4c\xf6\x96\x0c\x13\x95\xd3\x92\xd1\x3f\xbb\xee\xe2\xcd\xe4\xae\xc4\x36\x41\x6c\x4f\x84\x96\xed\xc3\x13\x61\x17\x6f\x22\x87\x6a\x7f\xce\xe1\x8e\x49\x4d\xbc\x61\xd2\x7b\x1e\xfc\x9c\x8b\xaa\x2c\x0b\x2e\x69\x62\x0a\x69\x31\xa2\xda\x01\xb2\xf3\x68\xe7\x5b\x3e\xf6\xd5\x77\x11\xae\xfd\x75\x22\x2f\xb8\xe4\xd8\x54\xe7\xfd\xcd\xbe\xa9\x55\xdf\x67\x70\xe3\xa3\xc8\xbe\x06\x01\x9a\x4b\x26\xd7\x3f\xe9\x5b\x3f\x48\x58\xf0\x24\x98\x40\xf0\x84\xac\xca\xa9\xad\x66\x3f\xc5\x96\x4c\xd6\x0d\x67\xd8\xb0\xac\x1b\x06\xc1\x60\x02\x83\x27\xff\xae\x0a\x39\x35\x17\x73\x82\x41\xa0\x9a\xbe\xf9\xee\xcf\x75\xcb\x58\xb7\xdc\x3f\x7d\x35\x1d\xd4\x97\xe7\x8d\x91\x6f\x7c\x1a\x83\x5e\x7d\x6f\x62\x7c\xf9\xe4\xf4\x2c\x18\x7c\x1a\x5f\x8d\x97\x23\xe7\x82\x86\x68\x55\x34\xd6\x64\x5c\x8a\x2b\x1b\xda\xdc\x78\xab\xf2\x81\xf4\x95\xc1\x36\x9f\x7a\xb3\x39\x9e\xd6\x62\xaa\x61\xad\xef\x7a\xf5\xaf\x24\x02\x69\xee\x21\x20\x60\x8c\x81\xfd\x7c\xfe\xb6\x89\x3d\xba\xbd\x7a\x75\xaa\xd7\x41\x87\x52\x36\x4d\xb6\xd4\x7b\x6b\x43\x5e\x38\x15\x49\x12\x6d\x95\x83\xf9\x68\x1c\x4a\x53\xf0\x0d\x49\x92\x6b\xf3\xe1\x0c\x73\xb9\xd4\xeb\xae\xbf\x34\xa2\x9a\x46\xf0\x65\x33\xec\x5a\x28\x2d\xfa\x2d\x45\x5d\x1e\x28\xea\x4c\x82\x35\x2b\x62\x74\xf3\x23\x41\x09\xd7\x9f\x79\x0a\x82\xd6\x82\xd9\x34\x83\xe1\x1e\x96\x38\x7c\xb0\xf5\x53\xfd\x70\x22\x51\xcd\xb5\x7c\x84\x27\xc3\x48\x94\x19\x93\xe1\xe0\xc9\xa0\xae\xfc\x6a\x60\xe8\xcf\x0b\x1a\x67\xa7\x4d\xcc\xdf\x5b\xdd\x42\x37\xc6\xdd\x86\xa1\x09\x6e\x86\x88\xd0\xc1\x74\x27\xb7\x2c\x97\x5d\x6e\xd9\x4f\x93\xf9\x82\xd3\xc5\x55\x9b\x8c\xc8\xb2\xc7\xf5\x67\xc1\x9c\x6f\xfb\x98\xa0\x8a\xf9\xd0\xa1\x56\x98\x6a\x65\xb5\xc1\xf9\xf3\xf9\xdb\x66\x69\x87\xce\x6b\xad\x4f\x5a\x6b\x3f\x3c\x00\x18\x36\xdf\x0c\xd4\xfb\x41\x4b\x5f\x13\x52\x7e\x6c\x96\x77\x68\xfc\xb4\x6e\xf2\xdc\xc6\xc9\x6b\x2f\xae\xb9\xec\xaf\xf8\x34\x1e\xc3\xbb\xf7\x17\x2f\x27\xad\x2b\x4d\x73\x0a\x37\xb4\x94\x58\x45\xba\xce\x63\x1d\x33\x1d\x57\x92\x65\x63\x21\xb9\xfd\x1b\x17\xf9\x6d\xb4\x2c\x26\x08\xf7\x2d\xcb\x6f\x5e\x15\xfc\x65\x9d\xc4\x7a\x60\x0d\x6a\x7e\xf4\x6f\x5b\x5c\x4e\xad\x7c\xec\xae\x35\xe4\x7b\xd9\x9b\xa5\xde\x5b\x78\x35\xc7\xcd\x78\xb5\x76\xbd\xe6\x40\x73\x21\xc9\x66\x0b\xfe\xb0\x78\x3a\x20\xde\xcf\x3f\xd3\x58\x29\xa1\x8e\xac\x2e\x69\x4e\x39\x91\x5a\x5c\x75\x37\x4f\xe1\x58\xfc\xbd\x7c\xdf\xe3\x08\x0b\xc9\x42\x07\xb6\xad\x6c\xd0\x5f\x18\xd3\x09\xe5\x27\xe6\xb3\x35\x29\x13\xb2\xe0\x6b\x14\x0e\xe5\x82\xd0\xf0\xcb\x66\x04\x41\x30\x02\x9d\xdb\xf8\x41\x1d\xc8\x0e\x53\x77\xee\x11\x47\x20\xdd\x15\xd2\x72\xd7\xa3\xa3\xdd\x25\x32\x97\x4e\x9b\x41\x43\xf8\x62\xc8\x5a\x62\x18\x00\xfb\xf5\x14\xfd\xf4\x72\xba\x25\x20\xfb\x0c\x69\x6b\xc6\xbf\x7b\x6a\xac\x86\xe6\xea\x8c\x5a\xf2\xd0\x71\xa6\x89\x3f\x04\xa9\xd3\x64\xbd\xc9\x6f\x49\xc6\x92\x1e\xb5\xa3\x2f\x66\xba\x6a\x4b\x0f\xa3\x32\xb6\x4b\xfd\x8a\x17\xab\xf7\x7a\x02\x03\xa0\x3b\xdd\x08\x8e\xf7\xe4\x4c\xd4\xcc\xae\x03\xb5\x30\x83\xf1\xbf\x96\x9f\x92\xc3\x4f\x51\x74\x38\x8b\x0e\x1f\x8f\x7f\x1b\xb3\x7a\x28\x74\xf9\x85\x12\x79\x51\x95\x19\x35\xfc\x32\x64\x3a\xed\x9d\xb5\x6f\xde\xb5\x4e\x9a\xdf\x4c\x5c\x24\xa9\x90\x2e\xbc\x69\x7f\xe5\xd8\x4e\x22\x1f\x5a\x8f\x2d\xe2\x31\xd2\x22\xfb\xa6\xd1\x33\xea\x5c\x75\x3a\x34\x46\x43\x63\x33\xf4\x1f\xa9\x25\x7e\x57\xf7\xfd\x42\x69\x5b\x84\xe7\x5d\x04\x47\x68\xfa\xd3\xbb\xa1\x33\xa5\x3d\x4b\x73\x8c\xba\xbf\x5f\xe8\x49\x5f\x15\x5c\x41\xb1\x9b\xd4\x45\x67\xef\x65\x68\x5e\xe8\x7a\x66\xf1\x4f\x26\xd3\xb0\x83\xa4\x61\xb6\xf5\xa3\x6c\xa1\xd9\x43\xf8\xec\xe6\xc4\x2e\x22\x94\x2d\x11\xd3\xf0\x78\xf4\x00\xdd\x5a\xfd\xf5\x82\xea\x36\xfa\x87\xc7\x5e\x3c\xa9\x6d\x9b\x0e\x4b\x0c\x2f\xdc\x0f\xe7\xf8\x77\x58\x1b\x5b\xd3\xd9\xdd\xef\x17\xef\x73\x73\x0a\x77\xf1\xab\xd7\x59\x03\x79\x16\xc7\xd5\xaa\xca\x88\xc4\xca\xc3\x3d\x94\xc9\x16\x89\x85\x43\x53\x88\xdf\x01\x5b\xe7\x1e\xad\xf9\xe3\xda\xfe\x9d\xde\xbf\x79\xab\x6d\x27\x7e\xb7\x1a\xf6\xae\x02\x83\x2f\xdc\xed\xa4\xb2\x74\x17\xb1\x19\xad\x3c\xed\x67\x79\x62\x8b\xa6\xa4\x5e\x51\x6d\xa0\xce\x06\xce\x01\xde\x74\xaf\x3f\x1f\xed\x8e\xbd\x3c\xbe\x6a\xf7\xb5\x30\x13\x1a\x17\x09\xfd\xf9\xfc\xcd\xf3\x62\x55\x16\x39\xcd\x2d\x2b\xbd\xf1\x78\x2f\xd4\x31\x0c\xed\x68\xe7\xa9\x71\xad\x3e\x1d\x2a\x9f\x2a\x80\x40\x5f\xf4\x31\x86\x00\xa8\x25\x11\x20\x4a\x2c\xaf\xc0\x20\x6e\x99\x55\x82\x8a\x83\x3a\x2e\xe4\x52\x31\x83\x40\x92\xb9\x53\xde\xe6\x4f\x5c\xdf\x5c\x75\x9a\xf5\x74\x92\xcc\x81\xe1\x04\x74\x49\xb9\x89\x3d\xb8\x36\xed\x65\x33\xcd\x95\x4f\x82\xb3\x11\x76\xdc\x13\xde\x25\x37\x6d\x55\xe8\x4a\x8b\x63\xeb\x99\x59\x82\xa5\x32\x6e\x98\x91\xf4\x20\xea\xd6\x26\xee\x9a\xaf\xc7\x42\xeb\x18\x3d\x2d\x63\xad\x16\xd4\xd2\x62\xd8\xaf\xc4\x99\xa7\xbf\x7d\x4b\x51\x4b\xb6\x7e\x8c\x6e\xe8\x5a\x78\x33\x0d\xbb\x72\x7e\xd3\x7c\x87\xd7\x81\x74\x69\x50\x38\x84\x1b\xba\xbe\xb2\xe6\xae\x81\x72\xa9\xda\x9a\xaa\x22\xd7\x9f\xd2\xa3\x5b\x31\x09\xe5\x49\x1b\x3b\x5c\xdf\x99\xf8\x48\x65\x55\x9a\x7c\x4c\x4c\xe2\x94\x9a\x6f\x14\x36\x8b\xed\xdd\xad\xe8\xfd\x1e\x90\x90\x44\xb2\x78\xfc\x59\x8c\xb5\xbf\x54\x7f\x3a\x3a\xb5\x9f\x93\xb6\x09\xf5\xce\x75\x09\xac\x76\xaa\xa5\xd8\xfb\xa6\x34\xcc\x9c\xcf\x51\x47\x71\xb1\x2a\x59\x46\x9b\xf2\x28\xbb\x2d\x98\x78\x41\x4b\x4e\x63\x22\xa9\x76\xfb\xd0\xf3\xf7\x4b\xbe\x12\xc6\x69\x2c\x2f\x8a\x9f\xd8\x52\xc9\x41\x52\x07\x07\xa0\xef\x22\x01\x7e\x84\x5f\xc7\x2d\x7a\x5c\x85\xd0\xa9\x7b\x47\xc1\xd3\x2c\xf5\xa3\x85\x9b\x26\x18\x82\x1e\xd8\x45\x4a\x05\x05\x79\x57\x98\xab\x29\xa2\x1f\x6f\xfc\xf6\x5c\x2f\xba\x43\x05\x85\x70\x0a\x24\x49\x68\x02\x45\x9e\xad\x31\x22\x3a\x27\xf1\xcd\x1d\xe1\x09\xde\x41\x20\x92\xcd\x59\xc6\xe4\x5a\x39\x78\x45\x96\x68\x39\x30\xd9\xf1\xc8\x11\x82\x5e\x96\x6d\x8d\x27\xa4\x44\xa4\x0f\x18\x40\xcd\xb7\xb0\xec\x19\xa9\xb5\x66\xf2\x8a\x93\xe5\x4a\x27\xaa\x7b\xf4\x68\xdf\x2c\x3a\x89\xc1\xd7\xf5\x62\xe0\xd5\x0f\xd4\x66\x61\x0b\xa8\x39\xba\xc3\x13\x73\x61\x32\xe1\x45\x89\xf9\x2c\x05\x07\xbe\xc1\xcb\x4d\x31\x66\xc7\x43\xa7\x58\xa6\x8b\x72\x63\xcc\x73\xa5\xe2\x36\xce\x5e\xd9\x22\x37\xb5\x6a\xf8\x63\x64\xf6\xf8\xb1\x7f\x84\xda\x7e\xf5\xd3\x0e\x5e\x79\x06\x52\xe1\xab\xbc\xe6\x78\xad\x75\x5e\x8f\xea\x55\x7d\x5c\x95\x56\xec\xa3\xcd\x1e\xd6\x67\x45\x4b\x95\x81\xf7\xa5\xec\x9a\x30\xbc\xe6\xd5\xef\x35\xb7\x98\xac\x30\x1f\xb7\xfc\x62\x5c\xda\xc7\xa1\xda\xac\xc3\xe9\xc1\xff\x0d\x00\x00\xff\xff\xec\x72\x31\x82\x68\x63\x00\x00") func webUiStaticJsGraphJsBytes() ([]byte, error) { return bindataRead( @@ -398,12 +399,12 @@ func webUiStaticJsGraphJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/js/graph.js", size: 24131, mode: os.FileMode(420), modTime: time.Unix(1474059598, 0)} + info := bindataFileInfo{name: "web/ui/static/js/graph.js", size: 25448, mode: os.FileMode(420), modTime: time.Unix(1476349925, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x58\x5f\x6f\xdb\x36\x10\x7f\xdf\xa7\xe0\xb4\x97\x0e\x83\xac\xa5\x03\xfa\x30\xd8\x06\xb6\x2e\x28\x30\xa0\xe8\xd0\x76\x7b\x35\x68\xe9\x6c\x71\xa5\x49\x95\xa4\x9c\x78\x86\xbf\xfb\xee\x48\x49\x96\x1d\x49\x96\x9b\x34\x40\x05\x44\x91\xc9\xe3\xf1\xfe\xfc\xf8\x23\x8f\xac\x7a\xa6\x99\xd8\x32\x91\xcd\xa2\xb5\xe1\x45\xbe\xb8\xc3\x77\x01\x66\xbf\x17\xd9\xe1\x10\xb1\x54\x72\x6b\xcf\xfa\xa2\xf9\x77\xac\x79\xa6\x2b\x6d\x36\xb5\xd8\xe7\x12\xcc\x6e\xe1\x5b\xe8\x15\x0b\x25\x85\x82\x13\xf9\x6a\xc2\x6a\x80\xd1\x77\x67\xbd\xa7\xfd\xa9\x96\xb1\x5c\xc7\x37\x3f\x3f\x90\x42\x39\x07\xf7\x8e\x1b\xe0\x0c\xb5\xa0\xec\x4d\xc4\x0a\xc9\x53\xc8\xb5\xcc\xc0\xcc\xa2\xdb\xfb\xc2\x80\xb5\x42\x2b\xf6\xc2\x7f\xb1\x0f\xb9\x58\xb9\x9f\x6e\x95\x03\x43\xf6\x31\x05\x77\x64\x9f\xfd\x31\x62\x8a\x6f\x60\x16\x01\x0e\x89\x7c\x30\xe8\xeb\x2c\x06\xde\xa3\x54\x2b\x67\xb4\x64\xd0\x28\x5f\x08\x55\x94\x2e\x62\x19\x77\x3c\x2e\x8c\xde\x8a\x0c\x35\xb9\x5d\x01\x3c\x07\x9e\x45\x8c\x97\x4e\xa7\x7a\x53\x48\x70\xd8\xa1\x57\xab\x68\xbe\xdf\xd3\xf8\xc3\x61\x9a\xd4\x3e\x3c\x08\x42\x82\x51\x18\x11\x99\x97\x5d\x81\x69\x89\xc1\x96\xcb\x85\x75\xdc\x59\x56\x94\x52\xc6\x46\xac\x73\x17\xcd\x3b\xd5\xe3\x48\xb1\x59\x33\x6b\xd2\x59\xb4\xdf\xb3\x82\xbb\xfc\x2f\x03\x2b\x71\xcf\x0e\x87\x84\x74\x88\x34\x41\x81\x84\xff\xcb\xef\x63\xa9\x39\x46\x79\xb2\x16\xab\x26\x40\xb6\x10\x4a\x21\x3c\x18\x97\x6e\x16\x91\xd4\xa2\x6e\x1a\xe1\x5e\x57\xd3\x53\x21\xc5\xa7\xa8\x96\x5c\x3a\xc5\xf0\x0f\x73\x25\x36\xdc\xec\x30\x95\x90\x96\x0e\x16\xd8\x16\x31\xca\x1b\x7a\x52\x2e\x37\x02\x73\x8a\xc1\x2b\x81\x90\xe4\x25\x6a\x94\x54\xbd\x1d\xf3\x58\x90\x90\xba\x4b\x80\x09\x52\xb5\x36\xa1\x2c\x18\xb7\xd8\x80\x33\x22\xed\x50\x8a\x6a\x75\xe1\x08\xc5\x95\x35\xd1\x3c\x66\x61\x10\x0b\x83\x18\xc7\x29\x4b\x63\x11\xd1\xf1\x34\x09\xc2\x1d\xc6\x25\x61\xde\xe7\x4b\xc5\x45\x6c\x1a\x83\x26\x73\x49\x9e\xf8\x77\x9c\x71\xb5\x26\xb4\x74\xa3\xbf\xd7\xd0\xd3\xb6\xef\xe3\xf8\x6c\xe4\xc7\x77\x7f\xbc\xfb\x95\xbd\xd6\x6a\x4b\x53\xb9\x5c\x58\xe6\x34\xfb\x5d\x6b\x67\x1d\x52\x1a\x26\x62\xbb\xe4\x66\x82\x82\xd4\x65\xe0\x73\x29\x30\x57\xec\x4f\xbe\xe5\x36\x35\xa2\x70\x1d\x49\x61\x28\xb7\x42\xa9\x7c\x72\xd6\x19\xc7\x5f\x31\x72\x88\x24\x22\x17\xbe\x2c\xb8\x02\xd9\x8d\x96\x52\xd6\xea\xd0\x2f\xf2\x2d\x46\x79\x1b\x1d\xc7\x4a\x61\xbb\xd0\xeb\x07\x4b\x51\xc9\x11\x5a\x41\xd1\xa2\xd7\x0a\x13\xc2\x59\x8e\xfe\xce\xa2\x1f\xfc\x4e\x50\x33\x23\x37\x82\xd7\x08\xaf\x77\x89\xba\xaf\x99\xae\xa2\x46\xa7\xd7\xeb\xba\x65\xfe\x86\x24\xa7\x09\xc7\x4c\x4b\x71\x95\x29\xb5\x6f\x3c\x75\x62\x0b\x6d\xcb\xd0\x0e\x8b\xf2\x3d\xb6\x9d\xf5\x0e\x5a\xf7\x3a\xc8\x0e\xd9\x37\x4d\x4a\xd9\xd9\xde\xca\x26\xea\xf2\x06\xa0\xed\x7d\xe1\xee\xc8\x69\x7b\x34\xb5\xb0\xb0\xf7\x92\x22\x8e\x9b\x95\x41\xdc\x11\xf7\x46\xc7\x3d\xbb\xf2\xa9\x7b\x8a\x33\x80\x49\xe0\x06\x19\xbd\x57\x38\xac\x1f\x76\x7b\x8f\x0b\x23\x75\x90\xd1\x42\x41\x1e\x4b\xc9\x0c\x5d\x16\xd8\xe0\xb9\xd4\x4e\x1e\xe0\xbc\x6f\x4a\xdc\x12\x91\xa6\x72\x28\x6d\xd8\x29\x17\x5e\x11\x33\xb4\xd4\x43\x4b\xd8\x99\x24\xac\xfa\xc2\x54\x29\x5d\x96\xce\x69\x35\x20\xc1\xce\x29\x3e\x83\x15\x2f\x65\x7b\x82\xc1\xd1\x81\xfc\xc3\x34\xc3\x92\x81\xba\x33\x48\x17\xde\x8f\x0b\x6a\x85\xa3\x0c\x7f\xc8\x8d\x50\x9f\x90\x7e\x00\x5b\x36\x10\x22\x30\x19\x74\x99\xb6\xae\xe6\x08\x26\x77\x45\x2e\x10\x06\xac\xf9\x8a\x37\x42\x95\x96\xe8\xb2\x67\x0d\x55\x3a\x92\xe0\xd2\xa0\x8c\xcf\xc4\x98\xd8\x36\xb1\x0c\x48\x18\x76\x9d\x30\xda\xca\x74\x85\xd4\x31\xd1\xfa\xd8\x84\x88\xe9\x55\x58\x03\x63\x92\x47\xe7\xa9\x31\xa9\x6b\x19\x35\x2c\x6e\xc5\x7f\x28\xfe\xcb\xb0\x50\xb5\x33\xef\xf7\x2d\xb5\x03\x2b\x92\x9e\x31\x68\x7e\x2c\x9e\xaf\x41\x34\x6b\x8e\x23\xa3\x30\xdd\xe4\xe9\x0d\xee\x69\x4f\x8a\xe9\x42\x3e\x09\xa4\xbb\x8e\x06\x27\xfd\xcf\x43\x73\x6d\x6a\xfb\x06\xd1\x40\x0c\x07\x2a\x1b\x89\x85\xf7\x70\x27\x54\xe6\xd1\x00\xf4\x1f\x11\xf1\x38\x2c\x2c\x79\xfa\xe9\x8e\x9b\xec\x0a\x3c\x3c\x8e\xe3\x3a\x58\x0e\x8f\x07\xf5\x3e\x35\x82\x2e\x02\xe5\xa1\xf7\x63\xa8\xae\x09\xdc\x6d\x15\xad\x91\x54\xc7\x4e\x0b\xdd\xbf\x95\x13\xf2\xd2\x08\x7f\xca\xa1\x8a\x84\x63\x6d\xb6\xc3\x27\x7e\xfb\x36\xce\x2e\x67\x76\x24\xab\xd6\x80\x41\xcf\xc7\xb0\x6a\xcd\xab\x37\xaf\x2e\xc9\x35\xd4\x8a\x9a\x3d\xa5\x7e\x83\xab\x88\x38\x75\xfc\x2a\xfa\x2d\xdb\x72\x85\x4c\xf4\x74\xcb\x08\xd3\x7e\xe5\x2a\xea\x97\xb8\xc0\xaa\xd7\x31\xe2\x90\x43\xed\x92\xbd\xba\x62\x69\x68\x06\x4f\xe7\xa5\x2f\x89\x85\x62\x16\xd0\xc5\xcc\x9e\x5d\xfe\xa0\xcc\x84\xbd\xa0\x9b\x9d\x16\x82\xeb\xfa\xdd\x41\x51\xdf\xda\xd0\x6a\x3d\xfe\xae\xab\x83\x06\x74\xc7\x2e\x6a\x0e\x98\x7d\x35\x74\x78\x7e\xb6\xf8\x84\x4c\x9d\x82\xb1\x0f\xda\xd6\x21\x8f\x42\xe6\x6f\x38\xae\xc6\x51\x40\x4d\xad\xe3\x49\x8e\x99\x95\xd5\xb9\xc8\x32\x50\xc7\xac\xf8\x09\x4e\x82\xef\x5b\x06\x0f\x52\x3d\x17\x59\x27\x9d\x23\xea\xa2\x50\x63\xd1\x45\x5c\xef\xdd\xd8\xc3\x41\x12\xd6\xb4\xaa\x87\x06\x0c\x75\x8d\xa9\xfd\x42\x95\xcb\xaa\xe2\xf5\xa4\xf4\x3b\x2d\x68\x7b\xed\xa5\x7a\x1f\x5a\x7a\xf1\x87\x7f\x53\x65\x8a\xd1\xb7\x74\xf6\xf1\xbf\x73\xbd\xc5\xe2\xb2\xd2\xba\xf0\x6d\x43\x71\x77\x74\xb9\x39\x98\x6a\x97\xcf\x6f\x25\x6c\xb0\xfa\x9d\x26\xf8\x7d\x41\xf4\x1f\xca\xfa\xb0\x20\xf5\x0e\x4e\x3a\x75\x4b\x9d\xed\x86\x67\x32\xf3\xa9\xcb\xd0\x4d\x69\x31\xc0\xb3\xe8\x25\xa6\x4f\xcc\x95\xf6\xfb\x23\x01\x1d\x27\xc9\xe8\x65\x06\xed\x18\x9a\x07\xbb\x29\x78\x57\x02\xa2\xef\x46\xf6\xba\x9b\xb0\x93\xa6\x2f\xb9\x78\x62\x44\x94\xf5\x2d\x71\xb7\x07\xbc\x2e\xa1\x60\x83\x90\x89\xea\xeb\x97\x68\xfe\xde\x37\xb0\xe6\x6e\xe7\x0b\xac\x9e\x26\x74\x44\x39\xb6\x54\x02\xff\x07\x00\x00\xff\xff\x85\xf0\xac\x72\xac\x18\x00\x00") +var _webUiStaticJsGraph_templateHandlebar = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x58\x5f\x8f\xdb\x36\x0c\x7f\xdf\xa7\xe0\xb4\x97\x16\x83\xcf\x6b\x07\xf4\x61\x70\x02\x6c\xdd\xa1\xc0\x80\xa2\x43\xdb\xed\x35\x60\x2c\x3a\xd6\x2a\x4b\xae\x44\xe7\xcf\x82\xfb\xee\x83\xfc\xef\x92\x9c\xe3\x38\xed\xed\x80\xde\x43\x2e\xa1\x28\x92\x22\x7f\xfa\x49\x14\xb4\x7f\x89\x54\x6b\x50\x72\x26\x56\x0e\xcb\x7c\xb1\x71\x58\x96\xe4\xf6\x7b\x25\xef\xee\x04\xa4\x1a\xbd\x3f\x19\x13\xf3\xef\xa0\xff\x4b\x32\xeb\x8a\x4e\xed\x73\x45\x6e\xb7\xa8\x25\xe1\x23\x52\x46\x2b\x43\x47\xfa\xad\xc3\x76\x82\xb3\x9b\x93\xd1\xe3\xf1\xd4\xea\x48\xaf\xa2\x17\x3f\x3d\xd0\x02\x48\x98\xb6\x8c\x8e\x10\x9c\xdd\xf8\x99\x78\x21\xa0\xd4\x98\x52\x6e\xb5\x24\x37\x13\xb7\xdb\xd2\x91\xf7\xca\x1a\x78\x56\x7f\x83\x0f\xb9\xca\xf8\xc7\x5b\xc3\xe4\x42\x7c\x60\x68\x13\xe2\xf3\xcf\x05\x18\x2c\x68\x26\x68\x5b\x3a\x51\x27\x23\x7c\x3b\xc9\x41\xbd\xa2\xd4\x1a\x76\x56\x03\xf5\xc6\x17\xca\x94\x15\x0b\x90\xc8\x18\x95\xce\xae\x95\xa4\x99\xe0\x5d\x49\x98\x13\x4a\x01\x58\xb1\x4d\x6d\x51\x6a\x62\x9a\x09\x9b\x65\x62\xbe\xdf\x87\xf9\x77\x77\x49\xdc\xad\xe1\x41\x12\x62\xa9\xd6\x13\x32\xf3\x72\x28\x31\x07\x6a\xb4\x46\xbd\xf0\x8c\xec\xa1\xac\xb4\x8e\x9c\x5a\xe5\x2c\xe6\x83\xe6\x01\x12\x55\xac\xc0\xbb\x74\x26\xf6\x7b\x28\x91\xf3\x3f\x1d\x65\x6a\x0b\x77\x77\x71\xb0\xa1\xd2\x58\x15\xab\x18\xff\xc1\x6d\xa4\x2d\x4a\x72\x37\x2b\x95\xf5\x09\xf2\xa5\x32\x86\x9c\x00\xd4\x3c\x13\x41\x6b\xd1\x89\x26\x2c\x6f\x48\xf4\x58\x48\xa9\x4b\xd4\x69\x2e\xd9\xc0\x92\x4d\x54\x3a\x55\xa0\xdb\x01\x6d\x29\xad\x98\x16\x4b\x36\x02\x42\xdd\x66\xc2\x57\xcb\x42\xb1\x80\x35\xea\x8a\x02\x92\x6a\x8d\x0e\x25\xed\xe8\x80\x1f\x4f\x9a\x52\xbe\x04\x98\x46\xab\xb3\xa6\x8c\x27\xc7\x8b\x82\xd8\xa9\x74\xc0\x28\x40\x62\x4b\x0e\x28\x6e\xa3\x11\xf3\x08\x9a\x49\xd0\x4c\x02\x64\x48\x2b\xe7\xad\x83\x28\x89\x1b\xe5\x81\xe0\xe2\xc6\xef\xd3\x95\xe2\x22\x36\x9d\xb3\x0e\x50\x87\x95\xd4\x9f\x91\x44\xb3\x0a\x68\x19\x46\xff\xd9\x40\x8f\x65\xdf\x47\xd1\xc9\xcc\x8f\xef\x7e\x7f\xf7\x0b\xbc\xb6\x66\x1d\x5c\x71\xae\x3c\xb0\x85\xdf\xac\x65\xcf\x0e\x4b\x30\xb8\x5e\xa2\xbb\x01\xf8\x18\x86\x1c\x7d\xae\x94\x23\x0f\x7f\xe0\x1a\x7d\xea\x54\xc9\x03\x45\x01\x70\x94\x39\xf2\xf9\xcd\xc9\x60\x14\xfd\x8f\x99\x73\x56\x07\x72\xc1\x65\x89\x86\xf4\x30\x5a\x2a\xdd\x99\x33\xb8\x0e\x6b\x8b\x18\x97\x5e\xdc\xcf\xd5\xca\x0f\xa1\xb7\x9e\xac\x55\xab\x17\xd0\x4a\x26\x6c\x7a\x6b\xc4\x3c\x41\xc8\x1d\x65\x33\xf1\x43\x7d\x12\x74\xcc\x88\x4e\x61\x87\xf0\xee\x94\xe8\xc6\x7a\x77\x2d\x35\xb2\x5d\xad\x3a\xc9\xfc\x4d\xd0\x4c\x62\x9c\x27\xb1\x56\x57\x85\xd2\xad\x0d\x53\x56\x6b\x3a\x8c\x2c\xb5\xc6\x5b\x4d\x67\x62\x3b\x19\x1d\x8d\xee\x75\xa3\x3b\x16\x5f\x12\x57\x7a\x50\x7e\x50\x4d\xc6\x65\x1d\x00\x99\xb3\xe9\x1e\xa8\xe9\xe1\xec\x20\x81\xe6\xec\x0d\x86\x50\x19\x72\xe0\x28\x70\xaf\xb8\x3f\xb3\xdb\x35\x0d\xbb\x38\x01\x98\x26\x74\x99\xda\x9e\x55\x6e\xf6\x0f\xdc\x6e\xd9\x61\xca\x24\xc3\x46\xc9\xac\x4b\x43\x18\xb6\x2a\x49\x42\xcd\xa5\xfe\xe6\x01\xce\xcf\xb9\x2c\x9d\x2d\x88\x73\xaa\x7c\x73\x52\x2e\x6a\x43\xe0\xc2\x56\x6f\x24\xcd\xc9\xa4\x29\x3b\x97\xa6\xd6\xe8\xb2\x62\xb6\x66\x44\x03\x4e\x29\x5e\x52\x86\x95\x3e\x74\x30\x3a\xbb\x21\xff\xc6\xcd\xb8\x66\x43\xdd\x92\xd2\x45\xbd\x8e\x0b\x66\x15\x87\x0a\x7f\xc8\x9d\x32\x9f\x80\x73\x02\x56\x05\x35\x19\xb8\x19\x5d\x72\x38\xba\xfa\x2b\x98\xde\x95\xb9\x4a\xad\x81\xfe\x5b\x54\x28\x53\xf9\x40\x97\x67\xf6\x50\x6b\x23\x6e\x96\x34\xaa\x53\x57\x62\x4a\x6e\xfb\x5c\x36\x48\x18\x5f\x7a\xc0\xe8\x41\xa5\x5b\xa4\x4e\xc9\xd6\xc7\x3e\x45\x60\xb3\x66\x0f\x4c\x29\x5e\xb8\x4f\x4d\x29\xdd\x41\x50\xe3\xea\x5e\xfd\x4b\x33\xf1\xf3\xb8\x52\x7b\x32\xef\xf7\x07\x66\x47\x76\x24\x4c\x44\xf3\xd7\xe2\xf9\x1a\x44\x43\x7f\x1d\x99\x84\xe9\xbe\x4e\x6f\x9c\xdd\x3c\x2a\xa6\x4b\xfd\x28\x90\x1e\xba\x1a\x1c\x8d\x3f\x0d\xcd\x1d\x52\xdb\x37\x88\x86\xc0\x70\x64\xe4\x44\x2c\xbc\xa7\x8d\x32\xb2\x46\x03\x85\xff\xaa\xf8\x4a\x2c\x2c\x31\xfd\xb4\x41\x27\xaf\xc0\xc3\xd7\x71\xdc\x00\xcb\x49\xe4\xee\x9c\x9a\x40\x17\x0d\xe5\x91\x91\x53\xa8\xae\x4f\xdc\x6d\x9b\xad\x89\x54\x07\xc7\x8d\xee\x5f\x86\x95\xbe\x34\xa3\xbe\xe5\x84\x8e\x04\x79\x26\x76\xbb\xdd\x2e\x7a\xfb\x36\x92\x97\x2b\x3b\x91\x55\x3b\xc0\x90\x91\x53\x58\xb5\xe3\xd5\x17\xaf\x2e\xe9\xf5\xd4\x4a\xa6\xb9\xe4\x7c\x83\xbb\x28\x70\xea\xf4\x5d\xf4\xab\x5c\xa3\x49\xe9\x11\xb7\x51\x66\xdd\x95\xbb\xe8\xbc\xc6\x05\x56\xbd\x8e\x11\xc7\x16\x74\xd8\xb2\xb7\x4f\x2c\x3d\xcd\x78\xab\xab\xba\x25\x56\x06\x3c\xa5\xd6\x48\x7f\xf2\xf8\xf3\x9e\xfc\x0d\x3c\xf3\xcf\xc5\x21\x82\xbb\xfe\x9d\xa9\xec\x5e\x6d\xc2\x6e\xbd\xff\xdd\x75\x07\x3d\xe8\xee\x87\x82\xb8\xc1\xec\xab\xb1\xcb\xf3\x93\xe5\xa7\xa9\xd4\x31\x18\xcf\x41\xdb\x33\xa6\x9f\x48\xd6\x2f\x1c\x57\xe3\xa8\x41\x4d\x67\xe3\x51\xae\x99\x6d\xd4\xb9\x92\x92\xcc\x7d\x55\x6a\x07\x47\xc9\xaf\x25\xa3\x17\xa9\x33\x0f\x59\x47\x83\x13\xfa\xa2\xa6\xc7\x42\x47\x78\xf6\x6d\xec\xe1\x24\x4d\xab\xb0\xab\xc7\x26\x8c\x0d\x4d\xe9\xfd\x9a\x2e\x17\xda\xe6\xf5\xa8\xf5\x3b\x6e\x68\xcf\xc6\x1b\xfa\x7d\x3a\xb0\xab\x09\xea\xcf\xd0\x99\x4a\x32\x3e\xdc\x7d\xea\xdf\xb9\x5d\x93\xeb\x3c\x2d\x6a\xd9\x58\xde\x39\x27\x94\xa3\xa5\xe6\x7c\x7e\xab\xa9\x20\xc3\x49\xcc\xf9\x25\xd5\xbf\x43\xd5\xc7\x15\xc3\xe8\xa8\xd3\x84\x97\x56\xee\xc6\x3d\xb9\x79\xc2\x12\x52\xab\x7d\x89\x66\x26\x5e\x8a\x79\xa2\xe6\xc6\xd6\xe7\x63\x00\x7a\x12\xb3\x0c\x1f\x6e\x34\x8e\x31\x3f\x49\x5c\x27\xef\x4a\x40\x9c\x7b\x91\xbd\xee\x25\xec\x48\xf4\x25\x0f\x4f\x10\x88\xb2\x7b\x25\x1e\x5e\x01\x76\x2d\x14\x15\x76\x4d\xa2\x7b\x7e\x11\xf3\xf7\xb5\x00\xfa\xb7\x9d\x2f\x88\x3a\x89\xc3\x15\xe5\x5e\xd2\x2a\xfc\x17\x00\x00\xff\xff\x85\xf0\xac\x72\xac\x18\x00\x00") func webUiStaticJsGraph_templateHandlebarBytes() ([]byte, error) { return bindataRead( @@ -418,12 +419,12 @@ func webUiStaticJsGraph_templateHandlebar() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/js/graph_template.handlebar", size: 6316, mode: os.FileMode(420), modTime: time.Unix(1470079840, 0)} + info := bindataFileInfo{name: "web/ui/static/js/graph_template.handlebar", size: 6316, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticJsProm_consoleJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x3c\xfd\x77\xdb\xc8\x8d\xbf\xfb\xaf\x98\xb0\x6d\x48\xd9\x32\x25\x27\xbb\x7b\x57\x79\x9d\xbc\x6c\xe2\x7c\xdc\xcb\xd7\x73\xbc\x6d\x77\x15\x9d\x1e\x2d\x8d\x24\x26\x14\xa9\x92\x94\x2d\x35\xf1\xff\x7e\x00\xe6\x9b\xa4\x14\xc9\x7b\xbb\xf7\xae\xdb\x3e\x46\x9c\xc1\x60\x30\x00\x06\x03\x60\x40\x77\x0e\x0f\xd8\x21\x7b\xbe\x4c\x47\x65\x9c\xa5\x05\x2b\x33\x36\x8f\x3e\x73\x16\x97\x8c\x47\x45\xcc\x73\x6c\xb9\xc9\xe3\x92\xb3\x45\x9e\xcd\x79\x39\xe3\xcb\x82\x8d\x00\x34\x4b\x78\xd1\x66\xc5\x72\x34\x43\x0c\x51\xc1\xa6\x79\xb4\x98\x15\x21\xbc\xc1\xff\x3b\x07\x07\xef\x01\xfe\xa9\x00\x64\x67\xec\xcb\xed\xa9\xd3\x14\xbe\x5d\xce\xaf\x78\xfe\x3c\xcb\xe7\x51\x59\xc2\x3c\x02\x64\x0b\x44\xb8\xc8\xf9\x24\x5e\xf1\xe2\xa7\x78\x0a\xd0\x7d\xef\xb3\xd7\x66\xde\x1b\x7c\xbc\xc0\xc7\x25\x3e\xde\xe3\xe3\x1c\x1f\xbf\xe2\xe3\x17\x6f\xb0\x33\xce\x93\xee\x83\xef\x04\xde\x98\x10\xd3\xf3\x05\x3d\x2f\xe9\xf9\x9e\x9e\xe7\xf4\xfc\x95\x9e\xbf\xc4\xbb\xe2\xff\x30\x8f\x92\x84\xb0\xcf\x71\xe0\x12\x1f\x29\x3e\x16\xf8\x98\xe0\x23\xc2\xc7\xbf\xf0\xb1\x46\xac\x0e\xda\x61\x51\xe6\xf1\xe2\x32\x8f\xe2\x24\x4e\xa7\xbf\xf2\x3c\x03\x5c\x13\x29\xb5\x60\xd5\x62\x5f\x0e\x18\xfc\x17\x4f\x58\xb0\x0a\xe3\x74\xcc\x57\xef\x26\x81\xc7\xbd\x16\x3b\x3b\x63\xc7\x27\xaa\x9f\xb1\x4e\x87\xbd\x2a\xfd\x82\xa5\x59\xc9\x8a\x68\xc2\x51\xbc\x84\x1b\xc7\xc6\xd8\x53\x8c\x62\x9e\x96\xf1\x24\x1e\x21\x50\x84\x13\x84\x72\x70\xce\xcb\x65\x9e\xb2\x55\x98\xf3\x45\x12\x8d\x78\xd0\xf9\x18\x3e\xee\x1e\xfe\xb9\xd3\x66\xbe\xdf\x3a\x25\xa8\xdb\x03\x1b\xf2\xf4\x00\xc5\x0e\x93\xbe\x5c\xce\xa3\x34\xfe\x17\x67\x11\x4b\x89\x45\xe1\x56\xb6\xcd\x14\x78\x7d\x95\xd7\x51\x8e\xe8\xa1\x67\x1b\x82\xa1\xc2\x10\x10\x3d\xab\xf6\x56\x68\x4b\x0b\xda\x04\xbf\xb3\x48\xdb\xec\xa4\xdb\xed\xd2\xda\x57\x40\x12\x10\xd6\xef\x0e\x4e\x25\x99\x02\x52\x36\x9f\x50\x33\x4a\xe8\x4d\x54\xce\xc2\xe8\xaa\xc0\x15\xfd\xc8\xb4\x70\x34\x77\xcb\xec\x7c\xb5\xc8\x52\x94\x42\x94\x04\x0f\x5b\xec\x48\x62\x42\x04\xc8\x5f\x09\xb9\x5d\x41\x02\x44\xf4\x1c\x08\x1d\x03\x0a\x1b\xc7\x26\x89\xb4\xd9\x38\x4b\xfd\x92\x2d\x0b\xce\xe6\x71\x92\xc4\x9d\x79\x3c\xca\xb3\x0e\x2f\x47\x21\x53\x8b\xde\x4d\x6c\x6f\x33\x62\xce\x7b\xb5\xfe\xaa\x0c\xbf\xcd\x85\x1d\xd6\x06\xd8\x47\x71\x81\x58\x61\x7d\x8a\x35\x7f\x88\x76\xf4\x07\xfb\x8a\xfd\xf7\x91\x18\xbb\x89\xcb\x19\x23\xbb\x05\xf6\x17\x4c\x33\xbb\x8a\x0a\xde\x66\x39\xb0\x16\x2d\xf7\x2c\x4a\x89\xce\xdd\x84\x26\xed\xdf\x1f\xbc\xdf\x70\x56\x9b\xab\x0f\xbe\xfb\x37\xd9\x4c\x02\x2f\x8c\x67\x20\x05\xbe\x8a\x46\x25\x34\xc1\xb0\x02\x48\x91\x56\x75\x17\xa9\x9c\xd3\xc8\xff\x47\x66\x50\xf2\x53\x08\x0f\x38\xa5\xc4\xf5\x8d\xf3\xdf\x90\xea\x2c\xb6\xcd\x6c\xa2\x58\x65\xd2\x09\xf0\x26\xcb\x0d\x43\xb4\x8e\x78\x9e\xd2\x0f\x78\x83\x23\xb0\xab\xf4\xa2\x73\xc8\x9e\x65\x78\xb0\xcd\x40\x32\x21\xfa\x29\xa0\x05\x8c\x27\x60\xf3\xaa\xda\xf4\xe8\xcc\xa8\xd3\x24\xcb\x59\x80\x33\xc4\x67\xdd\x53\x16\x83\xa6\x59\x64\x85\x09\x4f\xa7\xb0\x11\xef\xdf\x67\x95\xf1\x82\xbe\x53\x76\x74\x14\x9b\x23\x78\xc5\x3a\xba\x47\x36\x69\xba\x2d\xac\xfd\x78\x60\x4e\x54\x49\xe2\xb7\x88\x21\xb6\x6c\x20\x07\x36\x47\x8d\x90\xc3\x6f\x12\x42\x18\x5d\x52\x8c\x8c\xfb\x5a\x3c\x52\xbe\x8e\x80\x2f\xe3\x39\x87\xdf\x65\x9e\x25\xb6\x48\xc5\xfc\xe3\x6c\xb4\x9c\xc3\x4e\x08\xa7\xbc\x3c\x4f\x38\xfe\xfc\x69\xfd\x6a\x1c\x78\xe8\x65\x0e\xc9\x95\x1c\x8e\x97\x39\x6d\x94\x61\x31\xcb\xe3\xf4\xb3\xd7\x0a\xb3\x74\x94\xc4\xa3\xcf\x80\x0e\xe4\x57\x84\x63\x3e\xca\xc1\x4b\xe5\xcf\x24\x60\x78\x05\xae\x4f\x80\x5d\xa4\x89\x7b\xcd\x31\xcd\xb3\x9b\xfa\x0c\x71\xfa\x9b\x67\x28\x81\x0d\xc3\xab\x68\xb4\x85\xfe\xf3\x74\x7c\x57\xc4\xa0\x0b\x37\x51\x3e\xde\x4c\xf9\xdd\x70\x83\x50\xc1\x52\xcd\x86\x57\xcb\xb2\xcc\xd2\x3a\x76\xd9\x5f\xc1\x2c\x16\x25\x59\x25\x51\xc3\x88\x7d\xe4\xe0\x19\x44\x3c\x1d\xef\x87\x83\x18\x02\xa3\xbc\x8d\xc4\xc0\x32\xe2\x74\xb1\x2c\xb5\x00\xe2\x62\x11\x95\xa3\xc6\x75\x98\xe9\x7f\xff\x51\x92\x9d\x7f\x8b\x92\x25\xdf\x6f\xcd\xae\xa0\x86\xd7\x88\x01\xd7\xaf\x4f\x08\xea\x7e\x1d\x17\xfb\x22\x8c\x53\x30\xca\x80\xae\x10\xdc\xb4\x90\xbd\x52\x3d\x14\xce\xbc\x9b\x50\xf0\x72\x42\x61\xcd\xf7\xf4\x3c\x91\xff\xcc\x3c\x32\x1b\x75\x73\x55\x45\x24\x2d\x96\x63\x9e\x70\x40\x12\xdb\x44\xa3\x3e\x97\x8a\x3d\x81\x97\xc4\x9e\x0c\x39\x92\xb8\xaa\x9e\x05\x2f\x2f\xaa\x1a\xda\xae\x4d\x0b\x66\xcd\x60\x28\xf9\xaa\x44\x6b\x25\x58\xdf\x00\x7a\x2a\xfd\x0a\xcd\xd0\x30\x5a\x2c\x40\xdc\x4f\x67\x71\x32\x0e\x92\x58\xba\xa0\x9b\x34\x8f\x24\x53\x39\xad\x2d\x0b\x09\xc7\x69\x56\x66\xe5\x7a\xc1\x51\x38\xe4\x4e\x28\x9b\x13\xd4\x8e\x62\x7b\x1c\x08\x2a\x46\xd7\x86\x74\xc7\x4c\xdb\x52\xe7\xdf\x8e\xe3\x60\x21\xd8\xfb\x36\xbb\xa1\xf3\x72\x09\x21\xe4\x24\x4e\xf9\x58\x89\xa3\xaa\xdc\x77\x58\x0e\x08\x2f\x90\xc7\x4c\xca\x6f\x18\xbd\xef\x47\x1d\x3b\x14\x6e\x86\x64\x75\xd5\xa3\xb0\x11\xa0\x2d\x78\x4e\x47\x1b\xaa\x29\xae\x01\xa2\xea\x1e\xfb\xa1\x0b\x38\xe8\x01\xbe\xee\x21\x7b\xf8\xc3\xf7\xe8\xe8\x78\x37\xf5\xae\xff\xa0\x8e\x71\xa5\x83\x1a\x67\xa6\x91\xde\xe7\xf4\x4e\x3f\x0b\xf8\x79\xb2\x95\xb0\xa2\xe4\x0b\xb1\x2a\xdc\x3e\x38\xe6\xa4\x5b\x6c\xd8\x41\x0f\xbb\x6a\x23\xc1\xf3\x01\x3d\x7f\xa0\xe7\x89\x78\x39\x19\x53\x07\x3c\x09\xcf\x0d\xbd\xd1\xf3\x3b\x7a\xfe\x27\x3d\x4f\xd6\xd4\xbe\xf6\x0e\xaa\x59\x85\x66\x81\x0d\x61\xf7\xbc\x8c\x8a\x59\xfd\xd0\xc6\x3d\xa9\x14\x4c\x6d\xb5\x45\x94\x9b\xe3\x31\xd8\xac\xfa\xda\x8a\x28\x59\xca\xf1\x68\x8a\xd2\x31\x29\x43\x8b\x75\x48\xbe\x08\x79\x03\xdb\x36\xbb\x09\x93\x6c\x24\xce\xdd\x99\x20\xc8\xfb\xd3\x62\x54\x8e\x3c\x70\x2b\x79\x3a\xca\xc6\xfc\xe7\x8b\x57\x4f\xb3\xb9\xf0\xef\x83\xff\xfa\xf0\xee\x6d\x88\xae\x7b\x3a\x8d\x27\x6b\xa1\x6b\x5f\x14\x31\x3d\x4d\x79\x5b\x91\xd0\x53\x3f\x6e\x51\xa3\xb6\x09\xcd\x55\xc7\x66\xc6\x48\x0a\x9b\x08\x57\x7b\x11\x7f\xeb\xec\x8c\x4f\x4b\xf1\x5b\xae\x7f\x2a\x3d\x2b\x5a\x0a\xb1\x36\x00\x27\xa1\xba\x50\xc2\x53\x2c\xaf\xc4\x5a\x83\xef\x5b\x26\xfe\x95\xe3\xad\x65\x3f\xfc\xa1\xdb\xb5\x96\xac\xb7\x5e\x0b\x59\x8f\x6d\x9a\xef\x1a\x0a\xac\x40\x8f\x95\xf9\x92\x03\x4f\x6e\x83\xd6\x4e\x5a\xe3\xe8\x81\xcd\x21\x45\xc9\x25\x18\xd8\xba\x1a\x5d\x9c\x03\x2c\xd2\x74\xc1\xa7\x10\xa8\x05\xde\x7f\x07\xfd\xee\xf1\x5f\x07\x47\xad\xa0\xbf\xbe\x19\xcf\xe6\xc5\xe0\x71\xeb\xcf\xe6\x0c\x9a\xe3\x11\x4a\x22\xb0\xf1\x86\xd4\x1c\x18\xa4\xda\xfc\xdd\x93\x03\x60\x66\xc5\x1b\x64\xc8\xa9\x4e\x16\x28\x43\x46\xf4\x83\xbd\x0f\xe4\x00\x88\x59\xf4\xa4\x4b\x90\x3e\x80\xa8\x9e\x07\x03\xf6\xf5\x2b\xf3\x0b\xdf\x0a\x77\x04\x9a\xc3\x8d\xf6\xd0\xb2\x47\x7d\x44\xd7\x10\x10\xed\x76\x1a\x34\xb1\xd6\xb0\x15\x51\x93\x61\x71\x4f\xde\xcf\x7c\xcd\xe2\x74\x17\xe2\x94\x1e\x12\xa2\x70\xb1\x2c\x66\x41\x7f\x97\x35\xc1\x0c\x10\xbe\xe3\x53\xab\xa2\x40\x51\x64\x79\x19\x68\x8a\xa3\x36\xbb\xb2\x44\x71\x85\x21\xe2\x31\x8b\x30\xcc\x67\xb7\x2d\xd7\x5b\x80\x65\x48\x7f\x41\x60\x6a\x70\x12\x50\xc2\xda\x20\xfd\x45\xc0\xc1\x51\x8d\x58\x9d\x5d\xa5\xc5\x64\xa0\x3b\x36\x34\x46\xf4\xfa\xf5\xa4\x39\xd8\x51\x23\x77\x15\x5c\x35\x74\xd8\x6e\x4e\x3f\xc0\x2e\x4f\xc7\xc5\x9d\xac\x6a\x13\xcb\xbe\x7d\xfc\x68\x7e\xc6\x47\x47\x4d\xfc\x54\x14\xfd\xd8\x44\xd1\xb7\xd1\xa3\x73\x65\xd8\xaf\xbc\xb2\x3d\x11\x9c\xda\xc3\x95\x03\x1d\xe8\x66\x21\x19\x5b\x5a\xbb\x89\xa6\x1a\x37\xfe\x41\xa2\xd9\x59\x26\xb0\x25\x4e\x50\x8c\x8f\x84\x38\x8f\x8f\xb7\xc9\xe7\xd1\xbf\x9f\x7c\x2c\x42\x36\x9b\xbb\xad\x5e\xb6\xd9\xac\x12\x50\x39\x35\xc1\x37\x4e\x7a\xc7\xf0\x4a\xc7\xa4\xae\x1e\x28\x87\x0d\x1e\x31\x98\x1d\xdf\xaf\x9c\xe6\xe9\x32\x49\xec\x04\xf5\x18\x90\xbe\x8f\xf2\x52\xeb\x54\x15\x4d\x58\x2c\x92\xb8\x0c\x3a\xfd\x63\xd6\x1b\x74\x5a\xc6\x08\x21\x39\xe1\xcf\x97\x4f\x03\x8d\x02\xac\x57\xdb\x20\x04\xe3\x85\xca\x63\xb7\x3c\x70\xfa\x1f\x3a\x6f\xdf\x0d\xf6\x61\xc7\xbb\xfc\xc3\x16\x9e\xa8\x85\x35\x39\x76\xea\x34\xc6\xfe\x0a\x6f\xb0\x49\xf1\x46\x0e\x37\x2e\x8a\x16\x5f\x61\x90\x11\x0e\xeb\xe4\xc5\x77\xe3\xca\xec\x7d\xac\x56\xd6\x62\x28\x24\x9f\x2e\x5b\x52\xfc\xa0\xe6\x00\xce\xbf\xc4\xa6\x80\xd2\x69\x5d\xf6\x98\xf9\x5d\x1f\xce\x8e\x86\xfe\x5e\x43\xa3\x76\x62\xe2\x74\x59\xf2\x0a\xe2\x37\xa2\x71\x0b\x6a\x03\xd1\x6b\x6c\x6e\x60\x0a\x74\x3f\x07\xe5\xfb\x85\x47\x79\x80\x87\x9c\x77\x8c\xbe\x73\x60\x8f\x06\xd6\xc0\xae\x38\x3a\x31\xdd\x56\xaf\xf4\xcb\xa1\x07\xfe\x77\x24\xb7\xb5\xe0\x0a\xb4\xf5\x10\x5a\x2e\x66\x57\xc6\x17\x8d\x2a\x64\xd8\x5e\x89\xdf\x03\x4a\x30\x34\xe6\x57\xd4\x5e\x57\xda\x66\xa2\x4c\xad\x22\x77\xdc\xfa\x56\xee\xac\xae\xe7\x78\x83\x2a\xfb\x4d\x30\xf4\xe0\xfb\xbf\xb0\x3c\x4a\xa7\x9c\xdd\xc7\xcb\xf1\x6b\x9e\x97\x6c\x4e\xb7\xe9\x78\x21\x5e\xd3\x61\xad\xe1\x8a\x76\x7b\x6b\x11\xbf\xf7\x3b\x6a\x64\x60\xdc\xf9\x8e\xb5\xac\xdc\x97\x65\x8f\xf7\x3b\x17\x1b\xd7\xbd\xef\x1a\x8e\xff\x6f\xd6\x20\x13\x34\x1b\xe8\x6f\x50\x1f\xdf\x6f\xd4\x94\xbb\x33\x51\x8e\xf8\xfd\x9c\x0a\x19\x45\x6f\x33\xb4\xd4\x0d\x47\x11\x9e\x3c\xca\xe0\x8a\x21\x4d\xf1\x9f\xb2\xbf\x35\x47\xd2\xf5\x23\x75\x86\x70\x1a\x43\xe4\xb9\x6e\x72\x20\x71\x30\x41\x55\xdc\x9d\xca\x50\x9d\x4e\xa3\x66\x5c\x7d\x34\x37\x2b\xb6\xce\x6f\xc9\xa6\x06\x60\x93\x46\xc0\x75\x99\xc4\x81\x02\x73\xbd\x91\x5d\x3d\x8f\x61\x25\xf1\xc7\xce\xe4\xe1\xbd\x9b\x65\xbb\xa8\x2b\x9f\xeb\xb4\x68\xc7\xa1\x36\xd1\xbd\x8a\xb4\x64\x1e\x61\x94\x80\xe9\x56\x40\xcd\x43\xa5\xbb\xd5\x8c\xf6\xcc\x71\x3e\x9c\x78\xe9\xde\x19\x13\xc6\xd5\x72\x2e\x9b\x37\xc9\x3d\xc7\xa9\x71\x73\xd6\x81\x53\xf7\xb1\xb3\x8a\x3b\x79\xca\xcd\xc4\x4b\x2e\x00\x6b\x5d\x1e\x34\x24\xd3\xdb\xb5\x89\x0f\xcd\xa5\xe4\xed\x96\x4c\x7b\x25\xf5\xeb\xc6\x79\x60\xed\x29\x79\x9e\x4d\x18\x16\xf0\x88\x1a\xa7\x36\xd6\x48\x8c\xd9\xd5\x9a\x61\x08\x8c\x06\x1f\x55\xa1\x52\x1b\x51\x51\x79\x19\x94\x3b\x20\x04\xf1\x8c\x4f\xa2\x65\x52\xaa\x34\x25\x5f\x2d\xf2\x1e\x09\xad\x4d\xbc\x06\x02\xce\x57\x78\x6d\x8c\x95\x0e\x78\xa0\x08\xf5\x66\x4f\x23\x08\x9f\xf1\xbe\x39\x91\xe4\x89\x64\x10\x1d\x37\x69\x36\xe6\x15\x1c\xcf\xde\xbd\xa1\x66\xc4\x40\xb5\x3b\x72\x9b\x62\xa2\x37\x57\xf5\x3d\xf6\x7f\x78\xa9\x9d\xdd\xb0\x24\x4b\xa7\x54\x59\x20\xc0\xe3\x82\x65\xd7\x78\xbb\x1d\xa7\xac\x10\x6c\xc6\xc1\x26\xdb\xb4\x67\x9a\xba\xdd\x3c\xf3\x25\x4c\x08\xf1\xf8\x8a\xd8\x6b\x66\xe7\x28\xd5\xa8\xc4\x19\x75\x3e\x6b\xd7\x19\xe5\x80\x36\xe5\x16\xc7\xe5\xcc\xe2\x0f\x2e\x95\xc7\xd3\x19\xb1\xd1\xcc\x36\x8e\xaf\xdb\x20\x8e\x51\xb2\x1c\xe3\x2d\x7e\x19\x97\x09\xf8\x6c\x11\x58\x9b\x84\x4f\xb9\x5c\x79\x03\xf1\x5a\xa0\xc0\xea\x68\x59\x66\xc7\x63\x5e\xf2\x91\xaa\xa3\x9a\xd1\x4c\x3d\xf6\x00\xf3\x6d\xbf\x71\x72\x70\xbd\x7a\xcc\xc3\x39\x3c\x85\x0b\x9c\xc1\x78\xbe\x9c\xb3\x5f\x8e\xa3\x15\x08\x8b\xf6\x2f\xec\x0c\x8b\xa4\x24\xbb\xe1\xa0\x31\xe0\x23\x45\xa2\x9b\x30\x45\xab\x9e\x49\xfa\xb7\x09\x13\x20\xd8\x8e\x69\x06\x64\xd7\x51\xe5\x1c\x55\x8a\x83\x12\xfb\x09\x20\xf3\xdb\x42\xa2\x60\x21\x71\x85\x6a\x03\x65\x0b\x51\x6f\x18\xe5\x5c\xc2\xd1\xe2\x7c\x78\x8f\x7c\xd2\xe1\x68\x5e\xd5\xe1\xbf\xcf\xa2\x12\xe7\x1d\xe1\x4e\x5c\x24\x59\x59\xb8\xf4\xc0\x2e\x23\x5e\x65\x6c\x9c\x35\x8b\xa6\xa0\x0a\x46\x04\x42\x3f\x27\x4b\xa3\xab\x84\x6f\x90\xe2\x2b\xd8\xf0\x72\x4f\xb5\xb1\x30\x0e\xa6\xc4\xc2\xa8\x12\x68\x08\x59\xbf\xcf\x92\xe8\x8a\x27\x6c\x30\x00\x6d\x82\x2e\xd8\x89\x94\x8f\x8d\x4b\xf0\x85\xc7\xdb\x50\xaa\x83\x41\xe2\x84\x81\xb8\x1c\xb0\x26\x54\xcb\x13\x81\x24\x16\xc8\xa7\xcf\x7c\x4d\x6b\x22\xb6\x16\x1b\xb6\x09\x72\xac\x00\x6f\x3c\x19\x2b\xbf\x1f\x15\x08\x39\x87\x43\x81\xdc\x0d\x84\x6c\xb2\x1d\x1d\x45\x1c\x30\x96\x47\xe0\xc2\x70\x61\x21\x9b\xb1\xa8\x85\x47\x0b\x08\x56\x61\x01\x28\x01\x98\x9e\x04\xc3\x26\xb0\x2b\xe9\x75\x94\xe5\x60\xbc\x16\x60\x29\x60\x86\x66\x44\x72\x16\xb5\x01\xd0\x02\x12\x65\x48\xfd\xea\x12\x35\xbf\x87\x25\x98\x73\xee\x69\x55\x40\x03\x41\x7b\x42\x0d\x5a\x31\xd4\x52\x1c\xb1\xfe\x19\x13\x79\x30\xc2\x85\x16\x99\x51\x09\xbd\x36\xd0\x0a\xff\x16\xdc\x06\x1a\x7a\x45\xd9\x0a\xba\x4a\xb2\x6e\x15\x9d\x26\x0b\xdf\x13\xf8\xa1\x8b\x5a\x7a\x5b\x2b\x68\x54\xc1\x4b\x7b\x2b\x66\xa1\x01\x10\x74\x81\xdd\x05\x75\x2f\xa3\x38\xa1\x89\x5e\x62\xc3\x9e\x33\x51\x31\x51\xbb\xe6\x0b\xbd\x90\x1e\x9b\x76\x5a\x84\x8f\x25\x0e\x7c\x93\x44\xae\xa6\x90\x9d\xe3\xcb\xf6\x22\xee\x05\x04\x2b\xb1\x18\xbf\x41\x34\xf4\x3f\x0f\x2a\xde\xa1\x83\x08\xba\xdd\xfc\x2b\xf9\x25\x60\x3e\x40\x1a\xca\xf7\x43\x0d\x01\x9f\xc4\x13\x7a\xab\x3d\x18\xa7\x9b\xf5\xad\xd7\xc1\xe9\x46\x64\xb4\x5d\x2c\x64\x98\xdb\xdf\x00\xa1\xf8\xe3\xd9\xee\xae\xe8\x95\x19\xf7\xe6\x64\xac\x45\x48\x93\xd3\x2c\x8c\x9d\x48\xb6\x5b\x53\x3a\x8e\x95\x43\x0a\xc1\xbb\xd7\xcd\xa2\x5f\xdc\x63\xc0\x0f\xab\xb2\x80\xac\xf1\x78\x48\x46\xda\x78\x83\xdb\xfc\x7a\x22\x44\x16\x28\xa0\x6a\x1e\x22\x05\x87\xec\x12\xad\x25\xd8\xbd\x75\xb6\x2c\x7b\xa2\xe9\xab\xdc\x3f\xf0\x43\xe8\x10\xfb\xaa\x3a\xe4\x7f\x5f\xe5\x0e\x36\x1d\x1d\x71\xc0\x7d\x65\xaf\xe9\x20\x93\x1d\x1d\x19\xd7\x94\x34\xc9\xe6\x5b\x7f\xea\x97\xf9\x00\xb2\xde\xa3\x24\x2a\x8a\xb7\x82\x2d\x4e\x31\x08\x01\x22\x9c\x62\x1d\x78\x3f\xce\x95\x3d\x41\xe8\x80\xaa\xcc\xb7\xcd\x9a\xdb\x53\x3a\x48\x72\x8d\x41\xb0\xe2\x72\xbc\x0d\x8f\xaa\x4d\xc9\x1d\x24\x6a\x64\x05\xd5\xb3\xf8\x7a\x07\x5c\x6a\x70\x03\x46\x40\x60\x81\xc0\xdb\x46\x6e\xad\xc9\xe0\x79\x2e\xb0\xeb\x17\x4b\x36\x4a\x81\x1f\x31\xa5\xaa\xc2\xde\xb2\xc7\xcc\x63\x01\xe6\x83\x9c\xe6\x10\xf6\xd4\x5c\x24\x90\x5a\x1e\x43\x33\x2b\x74\x4a\x04\xae\x38\xf5\x5d\xf8\x65\x8f\x36\xa1\xba\x6c\x70\xd7\x98\xc7\xa3\xcf\xc5\x2c\xba\x11\xeb\xf4\x6a\xc0\xe4\x0b\x9a\xd5\xd1\x6b\x0d\x48\xf8\x6c\x06\x4a\xbc\x8b\x85\xfc\x26\xb5\xa9\xac\x6b\x1b\x1b\xb4\x6e\xac\xee\xac\x66\x2b\x5b\xcd\xd4\xcb\x46\x95\x58\x19\x95\xd0\xb0\x8d\x1a\x21\x7a\xff\x17\xb8\xa1\x93\x07\xaf\xe3\xf4\xf3\x5d\x16\x68\x0d\xae\x23\x7c\xb2\x05\x5f\x24\xd0\x59\xe3\x9b\xf1\x3e\x71\xc1\x9e\x6c\x64\x5e\x82\xf5\x8a\x15\x58\x97\x79\xde\x51\xb5\x7f\x06\xb1\x69\x63\xda\xa4\xb8\xcc\x3e\xc0\x3c\x33\x32\xb1\x3f\x5f\xbc\x0e\xac\xf3\x44\xaf\x53\x84\x05\x77\xe1\x9a\x1a\x69\x76\x92\x68\xd9\x6e\x7e\x20\x40\x11\xd8\xd4\xf0\x8d\x5b\x49\x03\xd4\xb6\xb0\x9e\x47\x18\x05\x19\xec\x47\xe3\xf1\xf9\x35\xcc\x81\x71\x37\x4f\x79\x1e\xf8\xe0\x40\x82\xf3\x02\x91\x44\x25\xa1\x86\xc7\x79\xd0\x70\xcc\x55\x73\x29\x26\xbf\x80\x50\x0d\x23\xac\xa3\xf6\xd6\x4a\x29\x58\xb6\x6a\x5b\x1e\xf0\x85\xc8\x4b\x99\x24\x12\xa5\x3a\xfe\x26\xf3\x8b\x9a\x66\x99\xe6\x54\x99\x40\x91\xe0\x20\xd0\xe7\x49\x16\x95\x81\x49\xf0\xa1\x93\x12\x83\x5a\xbd\xc5\x36\xed\x3f\x81\x8b\xe8\x1d\xbd\x4a\xa9\xdc\xee\x58\xfe\x4b\xef\xda\x13\x27\x64\x63\x70\xbd\xc0\x15\x87\xd1\x98\xa0\xb0\xf0\xb7\x42\x74\x6d\x15\xaa\x51\x84\xdf\x7a\x5c\xc9\x78\x13\x63\xbe\x22\xc3\x60\xe2\x06\x5d\xde\x39\x7d\xcf\x15\x2d\x0a\x16\x10\x1f\x45\x1c\xd1\x70\x9b\x65\xaa\x1f\x76\x60\x0b\x2f\x46\xd1\x82\xbf\xbc\x7c\xf3\xda\x66\x8b\x70\xbb\x0c\x5f\xb0\x52\xbf\x5c\xbf\x81\x30\xe8\x4c\x2e\xdc\xbb\xef\xc1\xc9\x71\x3f\x9a\x2f\x4e\x3d\x11\x09\x79\x3f\x52\x4b\x52\xea\x86\x47\xd4\x30\xd5\x0d\xbe\xe7\x43\x00\x7a\xff\x9f\xcb\xac\x3c\xf5\x25\x8c\xef\x61\xd3\x9f\x1e\xfe\x55\xb7\x74\x44\xcb\xea\xc1\xf3\x53\x1f\x57\x44\xf2\x96\x6b\x12\x74\x99\x4f\x9d\xfa\xf7\x7f\x7c\xe4\xf9\x1f\x3b\x83\xce\xd4\x28\x22\x0b\x8a\xca\x7d\x96\x26\xbf\x5f\x08\xa7\x73\x17\x85\x11\xca\x58\xb9\x10\x89\x0c\x4f\x0a\x9e\x4c\x64\x1e\x4d\xed\xf7\x45\x94\xf0\x52\x5f\x97\x5d\xc8\x63\x2e\x7c\x9a\x25\x59\x1e\xbe\x17\x9d\xe6\xc6\xa9\xe0\x79\xcc\x55\x61\xc8\x81\x0c\x73\x20\xaa\x57\x9a\x43\xf9\xac\x0c\xab\xf6\x71\xa7\x85\x9b\xbc\x47\xfc\x07\xcb\xbc\x8d\xe7\x8b\x5f\x0e\x9a\x82\x13\x9d\x42\x74\x3d\x67\x77\x37\xe2\xd0\xd1\x2c\xcb\x0a\x5a\xb1\x63\xee\x44\xf3\x5b\x89\xd7\x30\x62\xb3\x6b\x6d\xcf\xb6\xdd\xbf\x26\x4a\x85\x6f\x2b\x67\xb7\x77\x7d\x73\x7d\x7d\xf3\x3c\xe4\xad\x37\xce\x63\x45\x17\xd5\x01\xfd\x78\xd0\x14\xb2\x34\x50\xa7\x75\x20\x6e\xb3\x39\x07\xf0\x91\x0d\xdc\xfc\xc1\x0a\x55\xeb\x2e\xb2\x04\x2c\x34\x72\xaf\x26\x04\x98\x5d\x23\x3b\xd5\xb8\x6e\xed\xea\xd8\xb8\xa5\x7b\x1c\x6e\x34\x50\xd8\x80\xdd\x8c\xb5\x62\x37\xa1\x68\x2f\x78\x49\x61\x34\xe9\x10\xd9\x26\x7c\xcb\xc9\xa5\x12\xc1\x6e\xe8\x68\xe9\x6b\x9e\x12\xdf\xed\xd8\x93\x0b\x49\x70\x90\x04\xa2\xd1\xdc\xe7\x86\xfb\x4d\x52\x43\xd8\x3e\x1f\x84\x34\x06\x74\x1b\xe2\xcb\x66\xc1\x89\x99\xfb\x9a\x80\xa3\xa3\x81\x36\x3f\xea\x3f\x44\xd2\x6b\x42\x09\xcb\x17\x89\xf2\x22\x9c\x47\x0b\x23\x3f\xbb\xe8\xec\xcb\xaa\xc7\xc4\x5d\xfd\xba\x47\xdb\xd9\x3e\x25\x02\xaa\x36\xbb\xc5\x12\x28\x37\xd3\x33\xc2\xdd\xdc\x53\x7b\x3d\xa4\xd7\xa0\x02\x23\x12\x65\x02\xa5\xb1\xb0\x81\x16\x19\x10\x1b\x6c\x20\x5a\x2a\x84\x46\x78\xeb\x06\xde\xe2\xd0\xa4\x1b\x08\xb2\x58\xe6\x7a\xe9\x9e\x60\x94\xe4\xa5\xbd\xb1\x79\x9e\x67\x39\x96\xe4\xed\xe2\x3a\x30\x03\xee\x78\x52\xbe\xe5\x49\x11\x84\x5f\x85\x76\x7d\x29\xff\x6d\x46\x99\x78\x69\xe5\x04\xcb\xf9\xd8\xb7\xee\x16\x94\x2b\x6f\xfb\x20\x1a\x9d\x24\xc6\x94\xab\xdc\x0a\xcd\xbd\xe0\x2a\x3b\x6e\xdf\x6b\x39\xf6\x56\x30\xc6\x56\x14\xb3\x15\x29\x21\xee\x61\x72\x33\xca\x3d\x5b\x68\x32\x01\xed\x10\x96\x4d\x26\x05\x2f\xff\x8e\x3d\x36\xa8\x4a\x17\xdb\x5b\x4e\xb4\xd9\x50\x32\x83\xe6\xa2\x6c\x3b\x36\x43\x25\x65\x6d\x44\xaa\xd5\x86\xa4\x4c\xb0\x0d\x04\x0d\x4e\x3f\xe6\x9c\x9d\xfe\xd8\xc9\xe2\x0b\x19\xf4\xe4\xbf\xf2\x00\x54\xd5\x14\xd7\x3c\x7f\x46\x19\xac\x46\x36\x86\x2f\x0d\x80\x66\x29\x2d\xa6\x27\xfe\x51\xf3\x64\xa9\x90\x4c\xaf\xee\x10\x2a\x3d\x5c\xbd\xa6\xfc\xac\xaa\xaf\x91\x37\x3d\xe6\xbb\x87\xe2\xa7\xf5\x53\xa5\x71\x81\xb7\x1a\x52\x3a\xd7\x6b\xc9\xef\x0d\x0d\x9e\xb8\x04\x67\x68\x47\x2c\x08\x5b\x41\x41\x5f\xa0\x11\x29\xb6\x80\x21\x1c\x76\x1a\x5f\xf3\x49\xa9\xee\xfc\xd5\x24\x56\xcf\x23\x79\xe7\xe3\x76\x09\x4c\x5f\xbf\xda\xaa\x07\x04\x54\xe6\xb1\x9a\xee\x3e\x8b\x7b\xfe\x48\xd2\x69\xc3\x8a\xef\x20\xc6\xee\x27\x24\x24\xe7\xe1\x24\x89\x61\xaf\x8d\x3d\xeb\xbc\x91\x14\xde\x61\x64\xed\x44\x6a\x20\x23\xe7\x73\x18\x7e\x47\x4a\xf6\x19\x7c\xab\xcc\xa5\xd2\xc7\xb5\x95\x86\xd5\x1a\xb9\xb6\xb9\xa6\xd3\xf3\x66\xdf\x54\x12\xb8\x08\x7f\xe4\x02\x50\x06\x45\x9f\xab\x56\x5c\xe2\xec\x2a\xca\x38\x37\xef\x27\xec\x09\x7f\xd9\xba\x95\x4a\x18\x21\x68\x70\x77\xb5\x9b\xc7\x76\x26\x5c\x7d\x63\x42\xaa\x29\xd8\x34\xe7\x6d\x25\x60\x6d\xc6\x23\x52\x83\x5b\x09\x77\x4d\x9e\x8e\x24\xf5\x14\x44\xa5\xb4\x70\xe2\xe0\x5a\xd7\x5a\x84\xc2\x9b\x96\x6f\xfa\xe9\xe6\x2c\xac\x57\x77\xdc\xc0\x99\xc2\x99\x93\x9b\x0a\x41\xbd\x4a\x3a\x6b\x9c\xcf\x68\x54\xaf\xd0\xb9\x7a\x4a\xcb\x1a\xa6\x0e\x23\x1b\xb9\x5e\xeb\x06\xf4\xa6\xbf\x36\x41\xd3\xd0\xe6\xf2\x88\xda\xd2\x57\xb3\xbc\x68\xba\xc3\xae\x02\x6e\x2e\x7f\xd1\x0e\xda\x27\xe1\xa0\x7d\x52\x6e\x35\xe1\xd6\x7e\xd9\x27\xe3\x97\x99\xde\xfe\xa7\x41\x18\x5d\x61\x29\xb9\xf3\xa5\x7f\x94\x24\x3a\xb1\x0d\x5a\xf4\x24\xcf\xa3\x75\xb0\x21\x24\xb0\x0a\xc2\xe4\x5a\x76\x1b\x42\xc1\x16\xa7\xeb\x2b\x88\xd3\xfe\x09\x5e\x5e\x69\xd7\x34\x54\x03\x8f\x83\x3d\xe3\x94\xca\x27\x6f\x95\xaf\x63\xdc\x62\x97\x53\x0d\xb6\xcc\xf1\x6c\x7b\xff\xe4\xf2\xe5\xf0\xfd\xc5\xf9\xf3\x57\xff\xc0\x0c\x6b\x27\x5a\xc4\x9d\xeb\x93\x0e\xd0\x98\xaf\x87\x54\x8e\xf6\x98\x7e\x9f\x6d\xf8\x60\xa6\x4a\x14\xfa\xf1\xba\xca\xcf\xbb\x8f\xb5\xbe\x34\xd4\x86\xb3\x0a\xe8\x37\xf9\x2f\x30\xc2\xc2\x11\xe5\x25\x21\x09\xd4\xd2\x8e\x1b\xf1\x51\x8e\xf8\x3e\xc0\x48\x62\x2b\x0b\x06\x91\x49\x89\xfd\xe3\xcd\xeb\x97\x65\xb9\xb8\x10\xa2\x50\xe5\x27\xd0\x1f\x66\x20\xa6\xc0\x87\xd3\xd9\x6f\x23\x83\xda\xf4\x09\x8b\xd5\x2f\xee\x21\x0b\x4e\x77\xd1\xe0\x35\x7e\x2a\xb2\xd4\xb7\x86\xa7\xe4\x10\xda\x8a\x0b\xcd\x18\x18\x55\xd2\x48\x55\x8f\x58\xcb\x6e\x3f\xdf\x77\x5f\xef\x77\x8b\xff\x7b\x4e\x84\x27\x59\x44\xc5\x02\xb8\x23\xf4\x98\x9d\xbd\x5f\xa6\xfe\xaa\x4f\x98\x64\xd3\xa0\x01\x25\xe9\xb5\x5f\x51\x07\xa5\x36\x0a\x47\xc3\x4e\xe9\xaa\x3e\xf0\xa8\xf1\xca\x1d\x76\x31\x03\x21\x61\x35\xc3\x9a\xd1\xab\xae\xa4\x68\x32\x11\x55\x8c\x8e\x85\xd8\x6a\x25\xcc\x59\xed\x04\xba\x52\xa8\xb6\xe0\x71\x99\xdb\xe4\x8e\x6e\x5c\x7d\x65\xee\x17\x26\x22\xd6\xcd\x4a\xfa\x73\x0f\xc4\xbc\x2b\x0e\xeb\xe1\x44\x1f\xfe\x9d\xa4\x11\x2f\xac\x92\x11\xbb\x36\xde\xb8\x14\xb2\x88\x1a\x0d\x9a\xad\xb1\xa7\xf5\xfc\x82\x4e\x74\x7a\xd9\xd5\x27\x3e\x2a\x9d\x8c\x82\x44\x61\x7d\x45\xe6\xe8\xbf\x2d\xf4\xdb\x4d\x82\x3b\x3e\x63\x27\x0a\x48\xd9\x59\x4a\x62\xc8\x2c\xd0\x3e\x9c\x71\xcc\x6e\xdf\xf2\x8f\x9d\xbc\xac\x9a\x65\x2f\xe1\x15\xe8\x28\x38\x55\x64\xa4\x09\x44\x28\xfc\x3a\x55\x89\x08\x72\x39\x84\x36\xbf\x9a\x4f\xb7\xec\xd0\x78\x3e\x95\x89\x6d\x0d\x1d\x16\xf9\xa8\x66\x6e\xfd\x4e\x81\x7f\xc7\x63\xd4\x81\x01\x9d\xe8\x53\xb4\x3a\xc6\x01\x10\x2e\x4e\xe3\x89\x5f\x19\x1f\x25\xb4\x4d\x5f\x8b\x96\x30\x0c\xab\x00\x9b\xf6\xbf\x04\xf1\x6b\x57\x52\x4e\x02\x5f\xe3\x69\xe9\xa2\xb5\x0f\xba\x1a\x85\xb2\x2d\xa2\x8e\x0f\xd4\xc6\xa7\x40\xc7\xa7\x9d\x66\x55\xb1\x54\x4a\xd7\x2a\xe9\x24\x7b\x6b\x60\x5e\xc1\xcd\x4b\x89\x4f\xc3\x01\xa6\x13\x84\x87\x8f\x5b\x1f\xfb\xf0\xbf\xe2\x30\xf8\x78\x73\xd4\x3a\x82\x1f\x1f\x07\x1f\x07\xd4\xd1\x99\x9e\x6a\x68\xcc\x40\xe8\xda\x5b\xe9\xdc\xcc\xa5\xdb\x90\x73\xb0\x2a\x7c\x44\x33\xb5\x4c\x76\x55\x0e\x91\x3f\x8e\xc4\xd7\x78\xf8\xbd\xc3\x91\xa4\xa6\x2f\x5a\x1e\x0c\x06\xba\xf7\xa1\x73\xef\x7f\x4f\x8c\xad\x7e\x9c\xa1\xef\xd2\xad\xbf\x5d\x82\x70\x9a\x97\x2f\xe2\x6b\x9e\x9a\x14\x96\x4a\x2f\x50\xfd\x1f\x34\x3e\x79\xff\x4a\xfd\xb5\x17\xdc\xfb\x20\x99\x3c\x5b\xe4\x31\x56\xb8\x2b\xae\x21\x96\x32\x53\x40\x58\x21\x43\xd3\x56\x2b\x06\xeb\xe9\xcf\xe6\x94\x30\x60\xfb\x69\xad\x4a\x9f\xda\xb2\x2e\x09\x67\x4b\x12\xc9\x0b\x51\x51\x70\xe0\xe6\x69\x2d\x64\xc0\x6d\x27\xb3\x28\xeb\x0a\x44\x63\x38\x1c\xe2\xfb\x70\x88\x47\xf2\x17\xaf\x92\x7c\x15\x2a\x13\xa7\xb5\xdc\x24\xb2\x98\x3a\xad\x4f\x53\xbb\xed\x07\xf4\x27\xc8\xbc\xe1\xd0\x31\x50\x58\x32\x19\xa7\x4b\x5e\xb5\x42\x44\xc7\xd1\x99\x9c\x04\xa6\x3f\xf3\x3d\x23\x60\x6a\x45\xe9\x7a\x7e\xdb\x33\xb9\x2a\x47\x94\xd8\x7b\x4b\x9d\x94\xcd\x3a\x50\x95\x57\x60\xe4\xd7\xf0\xe0\x12\x35\xac\x24\xe6\x45\x5b\xd7\x74\x99\xfa\x35\xbd\x46\xfd\xb1\xef\x97\xdb\x3f\x34\x17\x59\xe7\xf4\xf6\xf4\x9d\xc5\x56\x51\x7c\xa3\xc7\x59\xcb\x68\xb9\x31\xbc\xd5\xa3\xb8\xaa\xd6\xe9\x0a\xa4\x09\xb4\xbf\x95\x1e\x09\x84\x08\x4f\x9a\x92\xc2\x24\x13\xfa\x0a\x06\x86\xc5\x84\x98\x22\xf9\x86\xcf\x56\x1b\x17\x62\xd5\x19\xbd\xa3\x93\x2f\xc4\x5a\xb9\xa0\x4e\x66\x4b\x7d\x4d\xf7\x88\x59\x7f\x00\xaf\x3a\xab\xc8\x68\xd3\x88\x96\x9b\xfe\xc4\x19\x6a\xd0\x12\xe5\x99\xf5\xb7\x81\x1a\xb6\x57\x50\x15\x8d\x54\x50\x65\xa8\x2a\x58\xfb\xdd\x81\xaa\x79\xaa\x58\x22\x85\xbb\x62\x8b\x4c\xe5\x1e\xd7\xb5\xc1\x05\xfe\x2d\x9e\x6c\xbc\x1c\x09\x63\x20\xcb\x6c\x30\x50\x40\x7e\xe2\xa5\x5e\x53\x7d\x72\xf5\x6e\xd9\x5e\x04\xe2\x2e\x9c\x8f\xbb\xa2\xba\x8c\x2c\x0d\x27\xf8\xa6\xc0\x86\xf4\x84\xf8\xfc\xc5\x47\x20\xbf\x27\x60\xe9\x56\xc2\x2f\xa3\x2b\x68\xe8\xde\x56\xbf\x61\xaf\x1e\xb7\x44\xef\x9f\xfc\x9d\xbe\xfd\x27\x5b\x89\xd7\xb7\xc0\xb6\xff\x09\x00\x00\xff\xff\xd0\xa9\xeb\xc6\xe3\x52\x00\x00") +var _webUiStaticJsProm_consoleJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x3c\x6b\x77\xdb\xba\x91\xdf\xfd\x2b\x26\x6c\x1b\x52\x96\x4c\xda\x49\xee\xdd\xad\x1c\x25\x27\x37\x71\x1e\x7b\x12\x27\x27\x71\xda\xde\x2a\x5a\x1f\x58\x84\x24\xc4\x14\xc9\x02\x90\x2d\x35\xf1\x7f\xdf\x83\xc1\x83\x20\x45\x29\xb2\xbb\xf7\xee\xd9\xfa\x03\x6d\x02\x83\xc1\xbc\x30\x18\x0c\x07\x4e\xf6\xf7\x60\x1f\x5e\x2e\xf2\xb1\x64\x45\x2e\x40\x16\x30\x27\x97\x14\x98\x04\x4a\x04\xa3\x5c\xb5\x5c\x73\x26\x29\x94\xbc\x98\x53\x39\xa3\x0b\x01\xe3\x22\x17\x45\x46\x45\x0f\xc4\x62\x3c\x53\x18\x88\x80\x29\x27\xe5\x4c\xc4\x7b\xa0\x50\x26\x7b\x7b\x1f\x78\x31\x7f\xae\x01\x61\x00\xdf\x6e\x8e\x6b\x4d\xf1\xe9\x62\x7e\x41\xf9\xcb\x82\xcf\x89\x94\x94\x1b\x90\x2d\x10\x71\xc9\xe9\x84\x2d\xa9\xf8\x85\x4d\x61\x00\xc3\xe0\x32\xe8\x41\xf0\x4e\x3d\x5e\xa9\xc7\x99\x7a\x7c\x50\x8f\x13\xf5\xf8\xbb\x7a\xfc\x1a\x8c\x76\xc6\x79\x74\xf8\xe0\x91\xc6\xcb\x10\x31\x3e\x5f\xe1\xf3\x0c\x9f\x1f\xf0\x79\x82\xcf\xbf\xe3\xf3\x57\xb6\x2b\xfe\x4f\x73\x92\x65\x88\x7d\xae\x06\x2e\xd4\x23\x57\x8f\x52\x3d\x26\xea\x41\xd4\xe3\x9f\xea\xb1\x52\x58\x6b\x68\xcf\x85\xe4\xac\x3c\xe3\x84\x65\x2c\x9f\xfe\x9d\xf2\x02\x06\x30\x31\x5a\x8b\x96\x1d\xf8\xb6\x07\x00\xc0\x26\x10\x2d\x63\x96\xa7\x74\xf9\x7e\x12\x05\x34\xe8\xc0\x60\x00\x07\x47\xb6\x1f\x20\x49\xe0\x8d\x0c\x05\xe4\x85\x04\x41\x26\x54\xa9\x17\x71\xab\xb1\x4c\xf5\x88\x31\xa3\xb9\x64\x13\x36\x56\x40\x44\x4d\x10\x9b\xc1\x9c\xca\x05\xcf\x61\x19\x73\x5a\x66\x64\x4c\xa3\xe4\x4b\xfc\xf4\x70\xff\x8f\x49\x0f\xc2\xb0\x73\x8c\x50\x37\x7b\x3e\xe4\xf1\x9e\x52\x7b\x92\xc0\xeb\xc5\x9c\xe4\xec\x9f\x14\x08\xe4\x28\xa2\x78\xab\xd8\x66\x16\x7c\x9d\xcb\x2b\xc2\x15\x7a\x18\xc0\x36\x04\xe7\x16\x43\x84\xf4\x2c\x7b\x5b\xa1\x3d\x2b\xe8\x21\xfc\xce\x2a\xed\xc1\xd1\xe1\xe1\x21\xf2\xbe\x84\x81\x22\x6c\x78\x38\x3a\x36\x64\x6a\x48\xd3\x7c\x84\xcd\x4a\x43\xef\x88\x9c\xc5\xe4\x42\x28\x8e\x1e\x83\x53\x8e\x93\xae\x2c\x4e\x96\x65\x91\x2b\x2d\x90\x2c\x7a\xd8\x81\xae\xc1\xa4\x10\x28\xf9\x1a\xc8\xed\x06\x12\x29\x44\x2f\xd9\x92\xa6\xd1\xc3\x8e\x8f\x63\x93\x46\x7a\x90\x16\x79\x28\x61\x21\x28\xcc\x59\x96\xb1\x64\xce\xc6\xbc\x48\xa8\x1c\xc7\x60\x99\xde\x4d\x6d\xa7\x05\x0a\xe7\x83\xe5\xbf\xa9\xc3\x1f\x4b\x61\x07\xde\x3e\x70\x3a\x66\x42\x61\x7d\xd8\xe9\x58\xd1\xfc\x2e\xd6\x31\x1c\xdd\x56\xed\xbf\x8d\xc6\xe0\x9a\xc9\x19\xa0\xdf\x22\x02\xe4\x8c\xc2\x05\x11\xb4\x07\x9c\xc8\x99\xf2\xdc\x33\x92\x23\x9d\xbb\x29\xcd\xf8\xbf\xdf\x79\xbd\xa9\x59\x7d\xa9\x3e\x78\xf4\x6f\xb2\x98\x34\x5e\x96\x4f\x81\xe4\x40\x97\x64\x2c\x81\xd3\x92\x53\x41\x73\xeb\x55\x77\xd1\xca\x09\x8e\xfc\x7f\xe4\x06\x8d\x3c\xb5\xf2\xa0\xeb\xd4\xf5\x83\xfd\xbf\x22\xb5\xc6\x6c\x0f\x7c\xa2\xa0\x31\xe9\x84\x8c\x65\xc1\x2b\x81\x38\x1b\x09\x02\x6b\x1f\x4b\x18\x0c\x06\x70\x68\xed\x22\xd9\x87\x17\x85\xda\xd8\x66\x2c\x9f\xc6\x2a\x4e\x01\xb8\x01\x9a\x09\xba\x66\x4d\x4f\x06\x95\x39\x4d\x0a\x0e\x91\x9a\x81\x0d\x0e\x8f\x81\xc1\x63\x9f\xac\x38\xa3\xf9\x54\xce\xe0\xfe\x7d\x68\x8c\xd7\xf4\x1d\x43\xb7\xcb\xaa\x2d\x78\x09\x89\xeb\x31\x4d\x8e\x6e\x0f\xeb\x90\x8d\xaa\x1d\xd5\x90\xf8\x23\x62\x50\x2c\x1b\xc8\x79\x0c\x47\x6b\x84\xec\xff\x90\x10\xc4\x58\x27\xa5\xd2\xf1\xd0\xa9\xc7\xe8\xb7\xa6\xe0\x33\x36\xa7\xcf\x8b\x5c\xf2\x22\xf3\x55\xaa\xe7\x4f\x8b\xf1\x62\x4e\x73\x19\x4f\xa9\x3c\xc9\xa8\xfa\xf3\x97\xd5\x9b\x34\x0a\x54\x94\x79\x8e\xa1\xe4\x79\xba\xe0\xb8\x50\xce\xc5\x8c\xb3\xfc\x32\xe8\xc4\x45\x3e\xce\xd8\xf8\x12\x06\x20\x67\x4c\xc4\x29\x1d\x73\x4a\x04\x7d\x61\x00\xe3\x0b\x96\xa7\x91\xea\x42\x4b\xbc\xd5\x1c\x53\x5e\x5c\xaf\xcf\xc0\xf2\x7f\x79\x06\xc9\xe6\xf4\xfc\x82\x8c\xb7\xd0\x7f\x92\xa7\x77\x45\x3c\x29\xf8\x35\xe1\xe9\x66\xca\xef\x86\x9b\xd3\x09\xa7\x62\x76\x7e\xb1\x90\xb2\xc8\xd7\xb1\x9b\xfe\x06\x66\xcd\x94\x11\x95\x41\x0d\x83\x5b\xe9\x21\xa8\x10\xd1\x3c\xbd\x1d\x0e\x14\x08\xcd\xd3\x60\x23\x31\x71\x91\xb3\xbc\x5c\x48\xa7\x00\x26\x4a\x22\xc7\xad\x7c\x54\xd3\xff\xf6\xa3\x8c\x38\xff\x42\xb2\x05\xbd\x1d\xcf\x75\x45\x9d\x5f\x29\x0c\x8a\x7f\xb7\x43\x60\xf7\x5b\x26\x6e\x8b\x90\xe5\x92\xf2\x2b\x92\x09\x2d\x4d\x0f\xd9\x1b\xdb\x83\xc7\x99\xf7\x13\x3c\xbc\x1c\xe1\xb1\xe6\x27\x7c\x1e\x99\x5f\xb3\x00\xdd\xc6\xba\xbb\x6a\x22\x32\x1e\xab\xe6\x9e\xd4\x80\x8c\xf9\x44\x2b\x7b\x96\x56\x3c\x51\x90\xb1\xc0\x1c\x39\x32\xd6\x34\x4f\x41\xe5\xc7\xa6\x85\xf6\xd6\xa6\x1d\xb2\x51\x85\x41\xd2\xa5\x54\xde\x4a\x8b\xbe\x05\xf4\xd8\xc4\x15\x4e\xa0\x31\x29\x4b\x9a\xa7\xcf\x67\x2c\x4b\xa3\x8c\x99\x10\x74\x93\xe5\xa1\x66\x1a\xbb\xb5\xe7\x21\xe3\x92\x17\xb2\x90\xab\x92\x2a\xe5\x60\x38\x61\x7d\x4e\xb4\xb6\x15\xfb\xe3\xce\x59\xce\x54\x68\x83\xb6\x53\x4d\xdb\xb1\xfb\xdf\x8e\xe3\x68\x9e\xaa\xde\xd3\xe2\x1a\xf7\xcb\x45\x9e\xd2\x09\xcb\x69\x6a\xd5\xd1\x34\xee\x3b\xb0\x43\xa4\x89\x42\x00\x72\x7a\x0d\xf8\x7e\x3b\xea\x60\x5f\x87\x19\x46\xd4\xcd\x88\xc2\x47\xa0\x7c\xc1\x4b\xdc\xda\x94\x99\x2a\x1e\x82\x55\xd0\x87\x9f\x0f\x61\x5f\x3f\x1e\x3c\x82\x7d\x78\xf8\xf3\x4f\x2a\xd0\x09\xae\xd7\xbb\xfe\x03\x3b\xd2\x46\x07\x36\xce\xaa\x46\x7c\x9f\xe3\x3b\xfe\x29\x82\x3e\x1c\x6d\x25\x4c\x48\x5a\x6a\xae\xd4\xf2\x51\x63\x8e\x0e\xc5\x86\x15\xf4\xf0\xd0\x2e\xa4\x1e\x04\x0f\xf0\xf9\x33\x3e\x8f\xf4\xcb\x51\x8a\x1d\x69\x80\x73\x1f\x5d\xe3\x1b\x3e\x1f\xe1\xf3\x3f\xf1\x79\xb4\xc2\xf6\x55\xb0\xd7\xcc\x2a\xb4\x2b\xec\x5c\x50\xf9\x9a\x88\xd9\xfa\xa6\xad\xd6\xa4\x35\x30\xbb\xd4\x4a\xc2\xab\xed\x31\xda\x6c\xfa\xce\x8b\x58\x5d\x9a\xf1\xca\x15\xe5\x29\x1a\x43\x07\x12\xd4\xaf\x82\xbc\x66\x79\x5a\x5c\xc7\x59\x31\xd6\xfb\xee\x4c\x13\x14\xfc\xa1\x1c\xcb\x71\x00\x5d\xa0\xf9\xb8\x48\xe9\xe7\x8f\x6f\x9e\x17\x73\x1d\xdf\x47\xff\xf5\xe9\xfd\x69\xac\x42\xf7\x7c\xca\x26\x2b\x6d\x6b\xdf\x2c\x31\x7d\x47\x79\xcf\x92\xd0\xb7\x7f\xdc\x28\x8b\xda\xa6\xb4\xba\x39\xb6\x0b\xc6\x50\xd8\x46\xb8\x5d\x8b\xea\x6f\x97\x9d\x09\x91\x95\xb0\x53\x8f\x4f\x4d\x64\x85\xac\xa0\x68\xa3\x94\xae\x31\x8a\x78\xc4\xe2\x42\xf3\x1a\xfd\xd4\xa9\xce\xbf\x66\xbc\xc7\xf6\xc3\x9f\x0f\x0f\x3d\x96\xdd\xd2\xeb\x28\xd1\xab\x36\x27\x77\x07\x75\x5a\x5c\xf7\x41\xf2\x05\xbd\x39\xde\xbb\x89\x3a\x3b\x59\x4d\xcd\x0e\x7c\x09\x59\x4a\xce\xe8\x52\xae\x9b\xd1\xc7\x13\x18\x20\x4d\x1f\xe9\xf4\x64\x59\x46\xc1\x7f\x47\xc3\xc3\x83\x3f\x8f\xba\x9d\x68\xb8\xba\x4e\x67\x73\x31\x7a\xda\xf9\x63\xb5\x07\xcd\xd5\x16\x8a\x2a\xf0\xf1\xc6\xd8\x1c\x55\x48\x9d\xfb\xbb\x67\x06\x74\xe0\x9b\x95\x8d\x12\xc8\xb1\x4b\x16\x58\x47\x86\xf4\xbf\xc9\x65\x64\x06\x0c\x8f\x46\x6e\xd2\x45\xce\xd4\xa6\x60\x7b\x1e\x8c\xe0\xfb\x77\x08\x45\xe8\x1d\x77\x34\x9a\xfd\x8d\xfe\xd0\xf3\x47\x43\x85\xae\xe5\x40\xb4\xdb\x6e\xd0\x26\xda\x4a\xac\x0a\x35\x3a\x96\xfa\xce\x7b\x49\x57\xc0\xf2\x5d\x88\xb3\x76\x88\x88\xe2\x72\x21\x66\xd1\x70\x17\x9e\x2e\xe9\x6a\xd4\x53\xf3\x8c\x9c\x29\x6a\x14\xa2\xe0\x32\x72\x14\x93\x1e\x5c\x78\xaa\xb8\x50\x47\xc4\x03\x20\xea\x98\x0f\x37\x9d\x7a\xb4\x00\x03\x30\xf1\x82\xc6\xd4\x12\x24\x28\x0d\x3b\x87\xf4\x27\x0d\x37\x64\x23\x85\xb5\xb6\xaa\x9c\x9a\x2a\xe8\xc4\x87\x56\x27\x7a\xf7\x7a\xd4\x7e\xd8\xb1\x23\x77\x55\x5c\xf3\xe8\xb0\xdd\x9d\x7e\xa2\xe3\x22\x4f\xc5\x9d\xbc\x6a\x9b\xc8\x7e\xbc\xfd\x38\x79\xb2\x6e\xb7\x4d\x9e\x96\xa2\xc7\x6d\x14\xfd\x18\xbd\x0a\xae\x2a\xf1\xdb\xa8\xec\x96\x08\x8e\xfd\xe1\x36\x80\x8e\x5c\xb3\xd6\x8c\xaf\xad\xdd\x54\xd3\x3c\x37\xfe\x4e\xaa\xd9\x59\x27\x70\xa0\xce\xea\x0c\x9e\x68\x75\x1e\x1c\x6c\xd3\xcf\x93\x7f\x3f\xfd\x78\x84\x6c\x76\x77\x5b\xa3\xec\x6a\xb1\x1a\x40\x1b\xd4\x44\x3f\xd8\xe9\x6b\x8e\xd7\x04\x26\xeb\xe6\xa1\xf4\xb0\x21\x22\x1e\x0c\x20\x0c\x1b\xbb\x79\xbe\xc8\x32\x3f\x41\x9d\x12\x49\x3f\x10\x2e\x9d\x4d\x35\xd1\xc4\xa2\xcc\x98\x8c\x92\xe1\x01\xf4\x47\x49\xa7\x72\x42\x8a\x9c\xf8\xf3\xd9\xf3\xc8\xa1\x18\x1e\x8e\x7a\x15\xc2\xe1\x91\xf2\xa7\x47\x7e\xcb\x83\x5a\xff\xc3\xda\xdb\xa3\xd1\x6d\xc4\xf1\x9e\x7f\xda\x22\x13\xcb\x58\x5b\x60\x67\x77\x63\xd5\xdf\x90\x8d\x6a\xb2\xb2\x31\xc3\xab\x10\xc5\xa9\x4f\x54\xc8\x10\x87\xb7\xf3\xaa\xf7\x2a\x94\xb9\xf5\xb6\xda\xe0\xa5\xa2\x10\x63\xba\x62\x81\xe7\x07\x3b\xc7\xe7\xb3\xe7\xaf\x55\x53\x84\xe9\xb4\x43\x78\x0a\xe1\x61\x08\xdd\xb6\xfe\x7e\x4b\xa3\x0b\x62\x58\xbe\x90\xb4\x81\xf8\x9d\x6e\xdc\x82\xba\x82\xe8\xb7\x36\xb7\x08\xe5\xf3\xd9\xf3\x97\x8b\x2c\xfb\x95\x12\x1e\xa9\x4d\x2e\x38\x50\xb1\x73\xe4\x8f\x2e\x72\x39\x8b\x3a\xdd\xa3\xaa\xdb\xeb\x35\x71\x79\x17\x02\x08\xa0\x6b\x96\xb5\x96\x4a\x17\x82\xbe\x82\x36\xcc\xec\x2a\x78\xd1\x6a\x42\x95\xd8\x1b\xe7\xf7\x08\x13\x0c\xad\xf9\x15\xbb\xd6\xad\xb5\x55\xa7\x4c\x67\x22\x77\x5c\xfa\x5e\xee\x6c\xdd\xce\x93\x04\xde\x98\xfe\xea\x30\xf4\xe0\xa7\x3f\x01\x27\xf9\x94\xc2\x7d\x18\x17\xf9\x15\xe5\x12\xe6\xf8\x35\x5d\xc4\x2d\x36\xec\x2c\xdc\xd2\xee\x2f\x2d\x94\xf7\xed\xb6\x1a\x73\x30\x4e\x1e\x41\xc7\xcb\x7d\x79\xfe\xf8\x76\xfb\x62\x2b\xdf\xb7\xe5\xe1\xe0\xff\x86\x07\x93\xa0\xd9\x40\x7f\x8b\xf9\x84\x61\xab\xa5\xdc\x5d\x88\x66\xc4\x6f\x17\x54\x98\x53\xf4\x36\x47\x8b\xdd\x83\x01\xee\x3c\xd6\xe1\xea\x21\x6d\xe7\x3f\xeb\x7f\xd7\x02\xc9\x7a\x1c\xe9\x32\x84\x53\x26\x24\x5f\xb5\x05\x90\x6a\x30\x42\x35\xc2\x9d\xc6\x50\x97\x4e\xc3\x66\xc5\x3d\x99\x57\x1c\x7b\xfb\xb7\x11\x53\x0b\x70\x95\x46\x50\x7c\x55\x89\x03\x0b\x56\x8f\x46\x76\x8d\x3c\xce\x1b\x89\x3f\x18\x98\xcd\x7b\x37\xcf\xf6\x71\xdd\xf8\xea\x41\x8b\x0b\x1c\xd6\x26\xba\xd7\xd0\x96\xc9\x23\x8c\x33\x4a\xb8\x05\x6a\x1f\x6a\xc2\xad\x76\xb4\x83\x5a\xf0\x51\x3b\x2f\xdd\x1b\x80\x76\xae\x5e\x70\xd9\xbe\x48\xee\xd5\x82\x9a\x7a\xce\x3a\xaa\xd5\x7d\xec\x6c\xe2\xb5\x3c\xe5\x66\xe2\x8d\x14\x04\x95\x75\x19\xb4\x24\xd3\x7b\x6b\x13\xef\x57\x1f\x25\x6f\xb6\x64\xda\x1b\xa9\xdf\xfa\x39\x2f\x49\x00\x93\xe7\xc5\x04\x48\x96\x99\x1a\xa7\x1e\x2c\x04\x4d\xe1\x62\x05\xea\x08\xac\x1c\xbe\x32\x85\x46\x6d\x44\xc3\xe4\xcd\xa1\xbc\x06\x82\x10\x2f\xe8\x84\x2c\x32\x69\xd3\x94\x74\x59\xf2\x3e\x2a\xad\x67\x0b\x76\x4e\x96\x25\xa7\x42\x28\x9d\xc9\xc2\x98\x37\x3c\x27\x39\x5c\x50\x20\x90\x19\xf2\x74\x32\x08\xb7\x9b\xbc\x48\x69\x03\xc7\x8b\xf7\xef\xb0\x59\x61\xc0\xda\x1d\xb3\x4c\x17\x79\x4a\xb9\xad\xef\xf1\x7f\x92\x04\x5e\x17\xd7\x90\x15\xf9\x14\x2b\x0b\x34\x38\x13\x50\x5c\x51\xde\x03\x96\x83\xd0\x62\x56\x83\xab\x6c\xd3\x2d\xd3\xd4\xbd\xf6\x99\xcf\x66\x54\x9d\xc7\x97\x28\xde\x6a\x76\xaa\xb4\x4a\xa4\x9a\xd1\xe5\xb3\x76\x9d\xd1\x0c\xe8\x61\x6e\x31\x95\x33\x4f\x3e\x8a\x55\xca\xa6\x33\x14\x63\x35\x5b\xca\xae\x7a\x40\x97\xe3\x6c\x91\x32\x25\x04\x26\x33\x2a\x80\xe4\x29\x64\x74\x4a\x0d\xe7\x2d\xc4\x3b\x85\xca\x02\xc8\x42\x16\x07\x29\x95\x74\x6c\xeb\xa8\x66\x38\x53\x1f\x1e\x1c\x1e\xfe\xcb\x93\xcf\x59\xde\x87\x40\xcd\x11\x58\x5c\xef\x58\xce\xe6\x8b\x39\xfc\x7a\x40\x96\x4c\xe8\xb4\x54\x0f\x52\x8f\xa4\xac\xb8\xa6\x42\xaa\x20\x8f\xe8\x6e\xc4\x44\x96\xfd\x2a\xe9\xdf\x43\x4c\x64\xf9\x03\x4c\x33\x36\x9d\xad\xa3\xe2\x54\x99\x14\xe5\x7d\x08\x33\x96\xd3\xb0\xa7\x35\xba\x2a\xa9\xe2\xd0\x2e\xa0\xa2\xd4\xf5\x86\x84\x53\x03\x87\xcc\x85\x84\x53\x12\xa2\x0d\x93\x79\xd3\x86\xff\x3a\x23\x52\xcd\x3b\x56\x2b\xb1\xcc\x0a\x29\xea\xf4\x48\xbe\x42\x59\x15\x90\x16\xed\xaa\x11\x58\xc1\xa8\x80\x54\x9c\x53\xe4\xe4\x22\xa3\x1b\xb4\xf8\x66\x02\xc4\xac\xa9\x1e\x30\x19\x66\x19\x16\x46\xc9\x19\x91\x31\x0c\x87\x90\x91\x0b\x9a\xc1\x68\x04\xd7\x2c\xcb\xd4\x4a\xc4\x7c\x2c\x93\x0b\x49\xd3\x6d\x28\xed\xc6\x60\x70\x5e\x50\x64\x87\xa6\xba\x96\x87\xc0\x9c\x94\x4a\x4e\x97\x74\x85\x3c\xa1\x58\xc5\x86\x65\xa2\x24\x26\x66\xc5\x22\x4b\x6d\xdc\xaf\x0c\x48\x49\x4e\x0d\x5d\x88\x4d\xbc\x6d\xf2\x1d\x89\x25\x4e\xf4\x80\x92\xf1\x0c\xa8\xf6\x90\xed\x58\x2c\xe3\xa4\x2c\x33\x46\x53\xd4\xc0\x8c\x6a\xc5\xc0\x84\x17\x73\x7c\x1d\x17\x9c\x53\x51\x16\xb9\xb2\xe3\x76\x44\x66\x16\xbb\x00\x94\x07\x44\xca\x14\xf5\xcb\x33\x65\xf9\x7d\x08\xd4\xe2\x0d\x7a\xbe\x83\xc0\x35\x61\x07\x2d\x41\x59\xa9\x1a\xb1\xfa\x9c\x33\x29\xfa\x10\xd4\xa1\x75\x66\xd4\x40\xaf\x2a\x68\x8b\x7f\x0b\xee\x0a\x3a\x49\x40\x97\xad\xa8\x50\xc9\xd4\xad\xaa\xa0\xc9\xc3\xf7\x6c\xc9\x84\x2b\x6a\xe9\x6f\xad\xa0\xb1\x05\x2f\xbd\xad\x98\xb5\x05\xc0\x4c\xf9\x5d\x48\xa9\x24\x2c\xc3\x89\x5e\xab\x86\x5b\xce\x84\xc5\x44\xbd\xb5\x58\xe8\x95\x89\xd8\x5c\xd0\xa2\x63\x2c\xbd\xe1\x57\x49\xe4\x66\x0a\xb9\xb6\x7d\xf9\x51\xc4\xbd\x08\x61\x0d\x96\x2a\x6e\xd0\x0d\xc3\xcb\x51\x23\x3a\xac\x21\x1a\x5e\x36\xf2\xaf\x18\x97\xac\x4a\x5a\x4c\xc0\xc6\x7e\xca\x42\x06\x03\x08\xb4\xdd\xba\x08\xa6\xd6\x0d\x43\xef\x75\x74\xbc\x11\x19\x2e\x17\x0f\x19\x7c\xff\x0e\x1b\x20\xac\x7c\x02\x3f\xdc\xd5\xbd\x26\xe3\xde\x9e\x8c\xf5\x08\x69\x0b\x9a\xb5\xb3\xd3\xc9\x76\x6f\xca\x5a\x60\x55\x23\x05\xe1\xeb\x9f\x9b\x75\xbf\xfe\x8e\x41\xe6\xc2\xab\x2c\x40\x6f\x9c\x9e\xa3\x93\xae\xa2\xc1\x6d\x71\x3d\x12\x62\x0a\x14\x94\x69\xee\x2b\x0a\xf6\xe1\x4c\x79\x4b\xc8\xc8\xaa\x58\xc8\xbe\x6e\xfa\x6e\xd6\x0f\x7c\x07\x6d\x43\xf0\xdd\x76\x98\x9f\xef\x66\x05\x57\x1d\x89\xde\xe0\xbe\xc3\x5b\xdc\xc8\x4c\x47\x62\xce\x35\x12\x27\xd9\xfc\xd5\x1f\xfb\x4d\x3e\x00\xbd\xf7\x38\x23\x42\x9c\x6a\xb1\xd4\x8a\x41\x10\x50\xc1\x59\xd1\x15\x29\xad\x7d\xb2\x47\x08\x77\xa0\x92\x7c\xdb\xac\xdc\x9f\xb2\x86\x84\x3b\x0c\x5a\x14\x67\xe9\x36\x3c\xb6\x36\x85\xd7\x90\xd8\x91\x0d\x54\x2f\xd8\xd5\x0e\xb8\xec\xe0\x16\x8c\x2f\xd8\x95\x07\xf2\x82\x5d\x6d\x94\xd6\x0a\x1d\x5e\x50\x07\xae\xc7\xc5\x46\x8c\x46\xe1\x5d\xb0\xa6\xaa\xfd\x2d\x3c\x85\x00\xa2\x00\xba\x50\x6b\x8e\x25\x67\x73\x9d\x40\xea\x04\xa0\xdc\xac\xb6\x29\x7d\x70\x55\x53\xdf\x45\x5e\xfe\xe8\xea\xa8\x6e\x1a\xea\x3c\x72\x36\xbe\x14\x33\x72\xad\xf9\x0c\xd6\x80\x31\x16\xac\xb8\xc3\xd7\x35\x20\x1d\xb3\x55\x50\xfa\x5d\x33\xf2\x2f\x99\x4d\x83\xaf\x6d\x62\x70\xb6\xb1\xbc\xb3\x99\x2d\x7d\x33\xb3\x2f\x1b\x4d\x62\x59\x99\x84\x83\x6d\xb5\x08\xdd\xfb\xbf\x20\x0d\x97\x3c\x78\xcb\xf2\xcb\xbb\x30\xe8\x0d\x5e\x47\xf8\x6c\x0b\x3e\xa2\xd1\x79\xe3\xdb\xf1\x3e\xab\x83\x3d\xdb\x28\xbc\x8c\xe5\x97\x41\x03\xb6\x2e\xbc\xa0\xdb\xec\x9f\x71\x3a\x69\x4d\x9b\x88\xb3\xe2\x53\x46\xc4\x0c\x5d\xec\xe7\x8f\x6f\x23\x6f\x3f\x71\x7c\xea\x63\xc1\x5d\xa4\x66\x47\x56\x2b\x49\xb7\x6c\x77\x3f\x29\xbb\xd2\xd8\xec\xf0\x8d\x4b\xc9\x01\xac\x2d\x61\x37\x8f\x76\x0a\xe6\xb0\x4f\xd2\xf4\xe4\x8a\xe6\x52\x9d\xbb\x69\x4e\x79\x14\x72\x2a\xd8\x3f\xd5\x49\xa2\x91\x50\x53\xdb\x79\xd4\xb2\xcd\x35\x73\x29\x55\x7e\x41\x41\xb5\x8c\xf0\xb6\xda\x1b\x2f\xa5\xe0\xf9\xaa\x6d\x79\xc0\x57\x3a\x2f\x55\x25\x91\x30\xd5\xf1\x17\x93\x5f\x74\x34\x9b\x34\xe7\xb7\xaa\xf0\xc0\x96\x1d\xbc\xcc\x0a\x22\xa3\x2a\xc1\xa7\x82\x14\x26\x4e\xc9\xa9\x6a\x73\xf1\x53\x92\x40\xd0\x7d\x93\x63\xb9\xdd\x81\xf9\x8d\xef\x2e\x12\x47\x64\x29\xb0\x5c\x16\x70\x4a\x4e\xe1\x62\xe5\xe3\xef\xc4\x2a\xb4\xb5\xa8\xc6\x24\x0f\xa5\x1a\x84\x26\xa6\xce\x7c\xa2\x50\x87\x89\x6b\x15\xf2\xce\xf1\x3e\x17\x29\x05\x44\x28\xc7\x78\xd3\xd7\xac\xaa\xfa\x61\x07\xb1\x50\x31\x26\x25\x7d\x7d\xf6\xee\xad\x2f\x16\x1d\x76\x55\x72\xa1\xb9\x64\x72\xf5\x8e\x94\x26\x21\x02\x10\xdc\x0f\xfa\x10\xdc\x27\xf3\xf2\x38\xd0\x27\xa1\xe0\x31\xb6\x64\xd2\x35\x3c\xc1\x86\xa9\x6b\x08\x83\xb0\x0f\xe1\xfd\x7f\x2c\x0a\x79\x1c\x1a\x98\x30\x50\x4d\x7f\x78\xf8\x67\xd7\x92\xe8\x96\xe5\x83\x97\xc7\xa1\xe2\x08\xf5\x6d\x78\xd2\x74\x55\x57\x9d\x86\xf7\x1f\x3f\x09\xc2\x2f\xc9\x28\x99\x56\x86\x08\x91\x68\x7c\xcf\x72\xe4\x0f\x85\x0e\x3a\x77\x31\x18\x6d\x8c\x8d\x0f\x22\xa4\x92\x89\xa0\xd9\xc4\xe4\xd1\xdc\x75\x08\x92\x51\xe9\x3e\x97\x7d\x34\xdb\x5c\xfc\xbc\xc8\x0a\x1e\x7f\xd0\x9d\xd5\x17\x27\x41\x39\xa3\xb6\x30\x64\xcf\x1c\x73\x98\x70\x96\x83\xf9\xac\x22\x07\xbd\xd2\xe2\x4d\xd1\xa3\xfa\x75\xbc\x67\x8b\x4b\x55\x14\xfa\x72\x91\x8f\xab\x82\x13\x97\x42\xac\x47\xce\xf5\xd5\xa8\x86\x8e\x67\x45\x21\x90\xe3\x9a\xbb\xd3\xcd\xa7\x06\x6f\x25\x88\xcd\xa1\xb5\x3f\xdb\xf6\xf8\x1a\x29\xd5\xb1\xad\x99\xbd\xf3\xc3\xfa\xfa\xf6\x79\x30\x5a\x6f\x9d\xc7\x3b\x5d\x34\x07\x0c\xd9\xa8\xed\xc8\xd2\x42\x9d\xb3\x01\xd6\x83\x39\x95\x9c\x8d\x7d\xe0\xf6\x0b\x2b\x58\xad\x5b\x16\x19\x91\x28\xbd\x35\x25\x0c\xd9\xc8\x21\x3b\x76\xb8\x6e\xfc\xea\x58\xd6\x71\x3d\x35\x69\xb4\x50\xd8\x82\xbd\x1a\xeb\x9d\xdd\xb4\xa1\xbd\xa2\x12\x8f\xd1\x68\x43\xe8\x9b\xd4\x1b\xc7\x90\x4a\x1f\x76\xe3\x9a\x95\xbe\xa5\x39\xca\xdd\x3f\x7b\x52\xad\x09\x0a\x8f\x11\x8d\x93\x3e\xad\xa4\xdf\xa6\x35\x05\x3b\xa4\xa3\x18\xc7\x70\x2a\x16\x99\x6c\x57\x9c\x9e\x79\xe8\x08\xe8\x76\x47\xce\xfd\xd8\x1f\x85\xa4\xdf\x86\x72\xc8\x46\x3a\x51\x2e\xe2\x39\x29\x2b\xfd\xf9\x45\x67\xdf\x96\x7d\xd0\xdf\xea\x57\x7d\x5c\xce\xfe\x2e\x11\x61\xb5\xd9\xcd\x31\xdc\x74\xea\x99\x9e\xb1\x5a\xcd\x7d\xbb\xd6\x63\x7c\x8d\x1a\x30\x3a\x51\xa6\x51\x56\x1e\x36\x72\x2a\x1b\xd2\x51\xb4\x81\x68\x63\x10\x0e\xe1\x4d\xfd\xe0\xad\x37\x4d\xfc\x02\x81\x1e\xab\xfa\xbc\x74\x4f\x0b\xca\xc8\xd2\x5f\xd8\x94\xf3\x82\x9f\xd1\xa5\xdc\x25\x74\x80\x0a\xbc\x16\x49\x85\x5e\x24\x85\x10\x61\x13\xba\x1e\x4b\x85\xa7\x05\x66\xe2\x8d\x97\xd3\x22\xa7\x69\xe8\x7d\x5b\xb0\xa1\xbc\x1f\x83\x38\x74\x9d\x63\xcf\x83\xdb\xad\x2d\x49\xe0\x23\xb5\xd9\x71\xff\xbb\x56\xcd\xdf\x6a\xc1\xf8\x86\x52\x2d\x45\x4c\x88\x07\x19\xcb\x29\xe1\x81\xaf\x34\x93\x80\xae\x11\x56\x4c\x26\x82\xca\xbf\xaa\x1e\x1f\xd4\xa6\x8b\xfd\x25\xa7\xdb\x7c\x28\x93\x41\xab\xa3\xec\xd5\x7c\x86\x4d\xca\xfa\x88\x6c\xab\x0f\x89\x99\x60\x1f\x68\x4e\x96\xb5\x7e\x96\x37\xfa\x59\x2d\x8b\xaf\x75\xd0\x37\xbf\xcd\x06\x68\xab\x29\xae\x28\x7f\x81\x19\xac\x56\x31\xc6\xaf\x2b\x00\x27\x52\x64\xa6\xaf\x7f\xd9\x79\x8a\x5c\x6b\xa6\xbf\x1e\x10\x5a\x3b\x5c\xbe\xc5\xfc\xac\xad\xaf\x31\x5f\x7a\xaa\x7b\x0f\xe2\x97\xd5\x73\x6b\x71\x51\xb0\x3c\xc7\x74\x6e\xd0\x31\xf7\x0d\x2b\x3c\x4c\xd2\xf9\xae\x58\x14\x6c\x03\x05\xde\x40\x43\x52\x7c\x05\x43\x17\x6a\x8d\x6f\xe9\x44\xda\x6f\xfe\x76\x12\xaf\xe7\x89\xf9\xe6\x53\xef\xd2\x98\xbe\x7f\xf7\x4d\x4f\xd2\x79\x63\x1e\xaf\xe9\xee\xb3\xd4\xf7\x1f\x43\x3a\x2e\x58\x7d\x0f\x22\xad\x5f\x21\x41\x3d\x9f\x4f\x32\x56\x96\x34\x0d\xbc\xfd\xc6\x50\x78\x87\x91\x6b\x3b\x52\x0b\x19\x9c\xce\x8b\x2b\x7a\x47\x4a\x6e\x33\xf8\xc6\xba\x4b\x6b\x8f\x2b\x2f\x0d\xeb\x2c\x72\xe5\x4b\xcd\xa5\xe7\xab\x75\xd3\x48\xe0\x2a\xf8\x6e\x1d\x00\x33\x28\x6e\x5f\xf5\xce\x25\xb5\x55\x85\x19\xe7\xf6\xf5\xa4\x7a\xe2\x5f\xb7\x2e\x25\xc9\xc6\x97\x9a\x86\xfa\xaa\xae\xe7\xb1\x6b\x13\x2e\x7f\x30\x21\xd6\x14\x6c\x9a\xf3\xa6\x71\x60\x6d\xc7\xa3\x53\x83\x5b\x09\xaf\xbb\x3c\x77\x92\x74\x53\x20\x95\xc6\xc3\xe9\x8d\x6b\xb5\xd6\xa2\x0d\xbe\x6a\xf9\x61\x9c\x5e\xed\x85\xeb\xd5\x1d\xd7\x33\x96\x51\xa8\xe5\xa6\xe2\x8c\x08\x89\x7b\x4d\xed\x1a\x8d\xed\xd5\x36\xb7\x9e\xd2\xf2\x86\xd9\xcd\xc8\x47\xee\x78\xdd\x80\xbe\xea\x5f\x9b\xa0\x6d\x68\x7b\x79\xc4\x1a\xeb\xcb\x19\x17\x6d\xdf\xb0\x9b\x80\x9b\xcb\x5f\x5c\x80\xf6\x55\x07\x68\x5f\x6d\x58\x8d\xb8\x5d\x5c\xf6\xb5\x8a\xcb\xaa\xde\xe1\xd7\x51\x4c\x2e\x0a\x2e\xa3\xda\x4d\x7f\x92\x65\x2e\xb1\x4d\xaf\xe1\x19\xe7\x64\x15\x6d\x38\x12\x78\x05\x61\x86\x97\xdd\x86\xe0\x61\x8b\xe2\xe7\xab\x73\x4e\xff\xb1\xa0\x42\xfa\x35\x0d\xcd\x83\xc7\x86\x7a\xec\x8d\xe7\x94\xc6\x95\xb7\xc6\xed\x98\x7a\xb1\xcb\xb1\x03\x5b\x70\xb5\xb7\x7d\x78\x76\xf6\xfa\xfc\xc3\xc7\x93\x97\x6f\xfe\x06\x5d\x08\x12\x52\xb2\xe4\xea\x28\xf9\xc7\x82\xf2\xd5\x39\x96\xa3\x3d\xc5\xbf\x07\x1b\x2e\xcc\x34\x89\x52\x71\xbc\xab\xf2\x0b\xee\x0b\x49\x4b\x1c\xea\xc3\x79\x05\xf4\x9b\xe2\x17\xe8\x82\x87\x83\x70\x89\x48\x22\xcb\xda\x41\x2b\x3e\xcc\x11\xdf\xa7\x79\x6a\x88\x6d\x30\xbc\x9c\x71\xa3\xb1\xbf\xbd\x7b\xfb\x5a\xca\xf2\xa3\x56\x85\x2d\x3f\x59\xce\x78\x5c\x94\x34\x8f\xc2\x29\x95\x61\x4f\x09\xa8\x87\x57\x58\xbc\x7e\xfd\x1d\x52\x50\xfc\x16\x3d\x80\xf0\xab\x28\xf2\xd0\x1b\x9e\x63\x40\x58\xbb\x7e\x3e\xe3\xea\x60\xd4\x48\x23\x35\x23\x62\xb8\x5b\xec\x7b\xdb\xe8\x77\x4b\xfc\x7b\x82\x84\x67\x05\xc1\x62\x01\xb5\x22\xc2\x5a\x69\xf6\x2e\xd1\x2f\xd8\xff\xea\x13\x67\xc5\x34\x6a\x41\x89\x76\x1d\x36\xcc\xc1\x9a\x8d\xc5\xd1\xb2\x52\x0e\x6d\x5f\x92\x40\x91\xe3\x2a\x86\x29\x95\x02\x48\xbe\x02\x7c\x75\x95\x14\x6d\x2e\xa2\x89\xb1\xe6\x21\xb6\x7a\x89\x6a\xaf\xae\x1d\x74\x8d\x52\x7d\xc5\x2b\x36\xb7\xe9\x5d\x85\x71\xeb\x9c\xd5\x6f\x98\xe8\xb3\x6e\x21\xf1\xdf\x3d\xa0\xf0\x2e\xe8\xa4\xe0\x14\xe9\x03\xb1\x18\x8f\xa9\xf0\x4a\x46\xfc\xda\xf8\x2a\xa4\x30\x45\xd4\xca\xa1\xf9\x16\x7b\xbc\x9e\x5f\x70\x89\xce\xa0\xb8\xf8\x4a\xc7\xb2\x96\x51\x30\x28\xbc\x5b\x64\x35\xfb\xf7\x95\x7e\xb3\x49\x71\x07\x03\x38\xb2\x40\xd6\xcf\x62\x12\xc3\x64\x81\x6e\x23\x99\x9a\xdb\x1d\x7a\xf1\x71\x2d\x2f\x6b\x67\xb9\x95\xf2\x84\x0a\x14\x6a\x55\x64\x68\x09\x48\xe8\x72\xc6\xdd\x57\x52\x0c\x39\xb4\x35\xbf\x99\x4f\xb7\xac\x50\x36\x9f\x9a\xc4\xb6\x83\x8e\x05\x1f\xaf\xb9\xdb\x30\x11\x92\x48\x36\x4e\xd8\x7c\x9a\x90\xaf\x64\x79\xa0\x06\x50\x1e\x4f\xd9\x24\x6c\x8c\x27\x19\x2e\xd3\xb7\xba\x25\x8e\xe3\x26\xc0\xa6\xf5\x6f\x40\xc2\xb5\x4f\x52\xb5\x04\xbe\xc3\xd3\x71\x45\x6b\x9f\x5c\x35\x0a\x66\x5b\x74\x1d\x5f\x31\x81\x10\x0f\x3a\x21\xae\x34\xaf\x8a\xa5\x51\xba\xd6\x48\x27\xf9\x4b\x23\x27\x73\x5a\xcf\x4b\xe9\xab\xe1\x30\x80\x24\x8a\xf7\x9f\x76\xbe\x0c\xbf\x0c\xbf\x88\xfd\xe8\xcb\x75\xb7\xd3\xfd\x22\xf6\xbf\x8c\xbe\x8c\xb0\x23\x99\x1e\x3b\x68\xb1\xd0\x12\x41\xc6\x4c\x70\x33\x37\x61\x03\xa7\x31\x5d\xd2\x31\xce\xd4\xa9\xb2\xab\x66\x88\xf9\xa3\xab\x6f\xe3\x0d\x8f\x46\xea\x4f\xa4\x66\xa8\x5b\x1e\x8c\x46\xae\xf7\x61\xed\xbb\xff\x3d\x3d\xb6\x79\x39\xc3\x7d\x4b\xf7\xfe\x77\x89\x82\x73\xb2\x7c\xc5\xae\x68\x5e\xa5\xb0\x6c\x7a\x01\xeb\xff\x66\x14\x9e\x7d\x78\x63\xff\xdb\x8b\x5a\xfb\xa4\x2c\x79\x51\x72\x46\x24\x75\x52\x53\x58\x64\x61\x81\xca\xac\x90\x38\x6d\xb3\x62\x70\x3d\xfd\xd9\x9e\x12\x4e\x12\xf8\x65\x65\x4b\x9f\x7a\xa6\x2e\x49\xcd\x96\x65\x46\x16\xba\xa2\xa0\x91\xa7\xf5\x90\x41\x54\xcf\x2c\x9a\xba\x02\xdd\x18\x9f\x9f\xab\xf7\xf3\x73\xb5\x25\x7f\x0b\x1a\xc9\x57\x6d\x32\x2c\x5f\xcb\x4d\x2a\x11\x63\xa7\x77\x35\xf5\xb0\xf7\x00\xff\x05\x59\x70\x7e\x5e\x73\x50\xe3\x22\x97\x2c\x5f\xd0\xa6\x17\x42\x3a\xba\x03\x33\x49\x17\x82\x41\x18\x54\x0a\xc6\x56\xa5\xdd\x20\xec\x05\x7e\x75\x84\xa7\x4a\xd5\x7b\x83\x9d\x98\xcd\xda\xb3\x95\x57\x45\x9e\xad\xa0\xc8\xa9\x41\x7d\x45\x38\xa3\xa2\xe7\x6a\xba\xaa\xfa\x35\xc7\xa3\xbb\xec\xfb\xed\xe6\x77\xcd\x45\xae\x4b\x7a\x7b\xfa\xce\x13\xab\x2e\xbe\x71\xe3\x3c\x36\x3a\xf5\x33\xbc\xd7\x63\xa5\x6a\xf9\xac\x2b\xa4\x0d\x74\xb8\x95\x1e\x03\xa4\x10\x1e\xb5\x25\x85\x51\x27\x78\x0b\x66\x91\x49\x86\x88\xf1\x24\xdf\x72\x6d\xb5\x95\x11\xaf\xce\xe8\x3d\xee\x7c\xf1\x25\x5d\x89\x68\x9d\xcc\x8e\xbd\x4d\xf7\x04\xbc\x7f\x80\xd7\x9c\x55\x67\xb4\x71\x44\x67\xbd\xee\x68\x0d\xda\xa0\x1c\x78\xff\x1b\xa8\x65\x79\x45\x4d\xd5\x18\x03\xb5\x8e\xaa\x81\x75\x78\x38\xb2\x35\x4f\x0d\x4f\x64\x71\x37\x7c\x51\x55\xb9\x47\x5d\x6d\xb0\xe8\x41\xc9\x8b\x74\x31\xd6\xce\xc0\x94\xd9\xa8\x83\x82\x92\xa7\x9c\xd1\x79\x5b\x7d\x72\xf3\xdb\xb2\xcf\x84\xc2\x2d\x6a\x97\xbb\xc8\xba\x8e\x3c\x0b\x47\xf8\xb6\x83\x0d\xda\x09\xca\xf9\x5b\xa8\x80\xc2\xbe\x86\xc5\xaf\x12\xa1\x24\x17\x61\x1f\x0e\x6f\x9a\x77\xd8\x9b\xdb\x2d\xd2\xfb\x87\x70\xa7\xbb\xff\xe8\x2b\x3b\xc7\x7b\x4a\x6c\xff\x13\x00\x00\xff\xff\xd0\xa9\xeb\xc6\xe3\x52\x00\x00") func webUiStaticJsProm_consoleJsBytes() ([]byte, error) { return bindataRead( @@ -438,12 +439,12 @@ func webUiStaticJsProm_consoleJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/js/prom_console.js", size: 21219, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/js/prom_console.js", size: 21219, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331CssBootstrapThemeMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5b\x5f\x8f\xa3\x38\x12\x7f\xbf\x4f\xc1\x69\x34\xda\xee\x55\x42\x08\x09\x9d\x3f\xa3\x19\x9d\x6e\x6e\x75\x1a\x69\xf7\x5e\x6e\x1e\x4e\x3a\xdd\x83\xc1\x26\x8d\x36\x01\x04\xce\x74\x8f\x5a\xfd\xdd\x0f\x97\x4d\x1a\x13\x43\xb0\x4d\x36\xfb\x30\x8b\x66\x67\x30\xd4\xaf\x0a\x57\xfd\xfc\xa7\xca\x99\xfd\xfc\xd7\xbf\x38\x3f\x3b\x7f\xcf\x32\x5a\xd2\x02\xe5\xce\xb7\x85\xbb\x70\xe7\xce\xdd\x23\xa5\xf9\x76\x36\xdb\x11\x1a\xd6\xcf\xdc\x28\x3b\xdc\xb3\xb7\x3f\x67\xf9\xf7\x22\xd9\x3d\x52\xc7\xf7\xe6\xf3\x69\xf5\xbf\xa5\xf3\xf5\x29\xa1\x94\x14\x13\xe7\x4b\x1a\xb9\xec\xa5\x5f\x93\x88\xa4\x25\xc1\xce\x31\xc5\xa4\x70\x7e\xfb\xf2\x95\x83\x96\x0c\x35\xa1\x8f\xc7\x90\xe1\xcd\xe8\x53\x58\xce\x4e\x2a\x66\xe1\x3e\x0b\x67\x07\x54\x56\x50\xb3\x5f\xbf\x7c\xfe\xe5\x5f\xff\xfe\x85\xa9\x9c\xb9\x21\x4d\xa7\x98\xc4\xe8\xb8\xa7\x13\xb8\xc9\x8b\xe4\x80\x8a\xef\xfc\xa6\x3c\x46\x11\x29\x4b\x7e\x93\xa4\x71\xc6\xff\xf5\x84\x8a\x34\x49\x77\xfc\x06\xa3\x74\x47\x8a\x17\x4a\x9e\xe9\xb4\x7c\x44\x38\x7b\xda\x7a\xce\x74\x9e\x3f\x3b\x9e\x53\xec\x42\x74\xe7\x4d\xd8\xe5\xfa\xf7\x1f\xa6\x4f\x24\xfc\x3d\xa1\xd3\x30\x7b\xae\x5f\x4d\xaa\x6f\xa1\xd5\x9b\x8d\xf7\xfd\x20\x98\xd4\x7f\xdc\x79\x70\x3f\xe1\x4f\xd9\x9f\x26\x9e\xb7\x0a\xee\x3f\x8c\x86\xf4\xda\xec\x89\x2d\x8a\x68\xf2\x8d\x48\x1d\x22\xb5\x89\x7e\x91\xda\x58\xf7\x48\x0d\xa2\x97\xa4\x36\xde\x59\x72\x13\xd7\xe9\x2a\x74\xba\x0a\x9d\x6e\x5b\xa7\xab\xd0\xe9\x9e\xeb\x14\x4d\x2f\x3d\x3e\x58\x54\xfd\x12\xb4\xfa\x66\xee\xab\x7b\xb9\xeb\x5d\xa9\x1f\x1d\x37\x44\x78\x27\x7f\x93\xd4\x26\xbe\x49\x6a\x63\xdf\x24\x35\x88\x6f\x92\xda\xf8\x37\x89\x26\x29\xf6\xd2\x2c\x25\x60\x44\xb3\x93\xeb\x8f\x0f\x51\xf4\xfb\xae\xc8\x2a\xea\x4c\x2b\x63\x76\xe4\xed\xed\xda\xe4\x56\x1c\xf3\x60\x7a\x17\xc7\xf1\x87\x33\xd9\xba\x27\xf7\x49\x4a\x50\x31\xdd\x15\x08\x27\x24\xa5\x77\x34\xcb\x27\x4c\xc2\xf1\x26\xef\x88\xc7\x2e\x67\xee\x79\xef\xef\x15\x08\x99\x8d\xb0\x50\x7f\x12\xe5\x50\x93\x3d\x89\xa9\xc3\x60\xe0\x1f\x61\x46\x69\x76\x98\xc4\x45\x76\xb8\x63\xb8\xf7\x13\x9a\xdd\x09\xe4\x7b\x05\xea\xb9\x3d\x35\x84\xd2\xaa\x38\xd9\x57\x43\xca\x36\x2f\xb2\x5d\x82\xb7\xff\xf8\xcf\x17\x06\xf2\xb5\x40\x69\x19\x67\xc5\xc1\xfd\x2d\x89\x8a\xac\xcc\x62\xea\x9e\x00\x4b\x8a\x0a\xfa\x39\xdb\x67\x45\x35\x32\x7d\xfc\x89\xa1\xc2\x7f\x3f\x4d\x1c\x92\x62\xe9\x01\xd7\x54\x3d\xf8\xa7\x10\xfe\xfa\x3d\x27\x1f\x3d\x13\xad\x24\x45\xe1\x9e\xe0\x8f\x31\xda\x97\x44\xfa\xec\x82\xe4\x04\xd1\x2d\xff\x6b\xfa\x5c\xc5\x7a\x51\x8d\xab\xd3\x88\x19\xb2\x7d\x87\x43\x76\xb5\x1a\xa3\x28\x92\x87\x8b\xc7\xec\x5b\x35\x44\x4b\x4d\x71\x16\x1d\xcb\x66\xbc\x09\x59\xfe\x4d\x4d\x03\xf2\xac\x4c\x68\x92\xa5\x30\x6a\x56\x94\xea\x1e\x89\xe4\x91\xa2\x07\x5c\xf1\x09\x32\x2a\x4e\x4a\xe8\x0f\x09\xf7\xbf\x75\xeb\xff\x06\xd9\xdd\x26\x90\xe0\xf7\x39\xc7\x7a\x79\xb2\x58\xac\x50\xb8\x62\x71\xe5\x3f\x04\x68\xbd\xd6\xa5\xca\x60\x79\x7d\xb6\x70\x68\x4e\x18\x0e\xae\x49\x98\x0e\xdb\xc6\xe0\x0c\x87\x56\x70\x86\x6b\xba\x29\x67\xfc\x65\x10\xac\x3d\x29\x28\x9a\x0c\xa9\x9b\xba\x18\xc2\xbf\xe0\x32\x43\x54\xf3\xb2\x3c\x6f\xf6\x80\x5f\x34\x58\x66\x88\x68\xed\x65\xc8\xb9\xdd\x6d\x86\x88\xd9\x4e\x93\x21\x41\x14\xae\x83\x88\x45\xd1\x72\xbe\x79\x58\xce\x75\x19\x32\x58\x5e\x9f\x21\x1c\x9a\x33\x84\x83\x6b\x32\xa4\xc3\xb6\x31\x18\xc2\xa1\x15\x0c\xe1\x9a\x6e\xca\x90\x05\x59\xc7\x0b\x39\x28\x9a\x0c\xa9\x9b\xba\x18\xc2\xbf\xe0\x32\x43\x54\xab\x54\x79\x15\xd9\x03\x7e\xd1\x60\x99\x21\xa2\xb5\x97\x21\xe7\x76\xb7\x19\xc2\xd6\x7e\xba\xf4\x08\x23\x0f\x13\x18\x64\x11\x0a\xb1\xaf\x4d\x8f\xa1\xf2\x06\xf4\x00\x68\x31\x81\x00\xb8\x2e\x3d\xd4\xb6\x8d\x42\x0f\x80\x56\x4d\x20\xa0\xe9\xb6\x13\xc8\x1a\x2d\xa3\xcd\x5b\x44\x34\xb9\x01\xf7\x9d\x53\x07\xd8\x7e\x99\x18\x67\x5b\xb5\xc6\x3e\xaa\x07\xb6\xdf\x48\x99\x0f\xac\xa9\x7f\xba\x38\xb3\xb5\x4d\x06\xb1\xef\xd1\xe4\x43\xec\x21\xbc\x84\x98\x21\xe1\x66\x31\x7f\xd0\xde\x7b\x0c\x95\x37\xd8\x7e\x00\xb4\xd8\x81\x00\xb8\xee\x0e\x44\x6d\xdb\x28\x9b\x10\x80\x56\x6d\x42\x40\xd3\x4d\xf9\x40\x16\x6b\x3c\x5f\x48\x41\xd1\xa4\x44\xdd\xd4\xb9\xe5\x80\x2f\xb8\xcc\x0a\x55\xbe\x42\xce\x27\xf4\x80\x5f\x34\x58\xa6\x87\x68\xed\xdf\x72\x9c\xd9\x7d\xb6\x67\xe7\xa9\x27\x3d\x82\xe0\x4d\xb0\x58\xc2\x4e\x36\x9a\xfb\xc4\x47\xba\x04\x19\x2c\xaf\x4f\x10\x0e\xcd\x09\xc2\xc1\x35\x09\xd2\x61\xdb\x18\x04\xe1\xd0\x0a\x82\x70\x4d\x37\x25\x48\xb8\xf1\x23\x7f\xdd\x8c\x09\x69\x4b\xce\x5b\xba\xe8\xc1\xed\x1f\xb0\x23\x57\xa4\xee\xa4\xcc\x5a\x37\xf4\x25\x63\x5b\xdb\x71\x68\xec\xa5\xc6\xb9\xcd\x4d\x6a\xd0\xc7\xe3\x21\x4c\x51\xb2\x9f\xb8\xc9\x61\x37\x3d\xdd\xaa\x72\x7f\x3c\xc5\xe5\x5f\xc8\xad\x76\xbf\xf5\xea\xe2\x22\xcb\xab\x77\xd2\xe9\x81\xa4\xc7\x4f\xfb\xe4\x13\xaa\x3b\x5f\xf1\xa4\x73\x8c\x5a\xb3\x4b\x37\xc7\x16\xb0\x0b\xa6\x03\x10\xd7\x9e\xea\x86\xca\x1b\x4c\x75\x00\x2d\xa6\x3a\x00\xd7\x9d\xea\xd4\xb6\x8d\x32\xd5\x01\xb4\x6a\xaa\x03\x4d\x0a\x26\x77\x13\xb1\xed\x7e\xc1\x85\x4f\xa8\xed\xfd\xd3\x03\x75\x70\xbc\x3d\xee\x5c\xdb\x91\x07\x8c\x96\x9a\x11\xd2\xc8\xc0\x80\xb8\x45\x76\xa9\x5f\xde\x32\xbb\x04\xe0\xe6\xd9\xa5\xa6\x6d\xd7\xcd\x2e\x81\x26\xcd\x08\x49\xd1\xb7\xb0\xfa\x86\x3a\xc1\x6e\x94\x47\x8f\xd7\xec\x32\xcc\xa3\x5f\x10\xb6\xc8\xa3\x73\x64\xb3\x3c\xba\x64\xd5\x55\xf3\xe8\x5c\xd3\x6d\x66\x68\x26\x78\x2c\xb7\xcb\xfc\xd9\xae\xfa\xd7\xae\x35\x99\x57\xff\x54\x48\xed\x20\x75\xea\xfb\xea\xaf\x4f\x6e\x96\x93\x94\x8d\x68\x7d\xef\xd4\xe3\x97\xee\x62\x14\x92\xf3\x30\xcc\xfb\xec\xd2\x5e\x8c\x0e\x95\x37\x58\x8c\x02\xb4\x98\xc2\x00\x5c\x77\x31\xaa\xb6\x6d\x94\xc5\x28\x40\xab\xa6\x30\xd0\xa4\x35\x40\xf5\xc5\x25\xab\x72\x6e\x06\x46\x5e\xd7\xbb\xa7\xd8\x0a\xab\x6f\xc4\x93\x66\xd4\xb0\x25\x91\xb2\xe0\x78\x1e\xbf\x7e\x03\x28\x49\xab\x19\xb4\x54\x54\x33\xfb\xe7\xc2\x88\x5d\x30\x5f\xf8\xda\x71\x36\x4c\xd8\x60\x16\x04\x5c\x31\x0b\xfa\xba\x11\xa6\xb2\x6a\x94\xf9\x0f\x70\x55\xf3\x1f\xfc\xf7\xc7\x8e\xa4\x6d\xb7\xf7\x8e\x4d\xca\x77\x0c\xc7\x26\x6f\xcd\x2e\xd6\xbb\x5e\xcc\x2e\xdd\x98\x19\x2c\xaf\x1f\x36\x1c\x9a\x87\x0d\x07\xd7\x8c\x9c\x0e\xdb\xc6\x08\x1e\x0e\xad\x08\x1e\xae\xe9\xaa\x63\x53\xcf\x61\x0d\xc5\xab\x9d\x91\x25\x8f\x54\xaa\x98\x52\x8c\x5c\xaa\x23\x3f\x0d\x1d\x55\x47\xd1\x24\x9a\x32\x7f\xd6\x4d\x71\xf2\x4c\xb0\xa2\x85\x3b\xe9\x45\x5e\x41\x78\xaf\x7f\x3b\x10\x9c\x20\xe7\xee\x80\x9e\xa7\x4f\x09\xa6\x8f\xdb\xd5\xc3\x2a\x7f\xbe\x7f\x11\xd2\x4d\x03\x1d\x20\x86\xd3\xbd\x3b\xd1\x16\xa9\xf7\x2d\xfa\x82\x7c\x47\x23\xb6\x31\xfa\x27\x49\x7e\xec\x61\x6e\xbf\x87\x79\x75\xd1\x9e\x14\xea\xc3\x41\x8a\xb9\xda\xe8\xa4\x9b\x7f\x5a\xa1\x9e\xe5\x59\xf4\x96\xba\xbd\x40\xe2\x4b\x0c\x6b\xd1\xb8\x1a\xc5\x30\x0c\x9b\xd1\x9a\x04\x61\xa4\xbd\x5c\x1d\x2a\x6f\xb0\x5c\x05\x68\x91\x3b\x05\x70\xdd\xe5\xaa\xda\xb6\x51\x96\xab\x00\xad\xca\x9d\x82\x26\xbd\x29\xa1\x95\x4d\xf4\x71\x88\xe6\xb5\x57\x0d\xea\xa7\x78\x43\x70\x0c\x14\x0c\x37\xd5\xce\x46\xfb\xac\xda\x60\x79\x93\x74\x38\x83\xe6\x2e\xe5\xe0\xda\xe9\x70\xa5\x6d\xe3\xa4\xc3\x19\xb4\xc2\xa5\x5c\x93\x8d\x4b\x37\x28\x8a\x09\xaa\x5d\x6a\x58\x05\x8c\xe2\x35\x59\xf0\x34\x03\x89\x23\xfd\x13\x88\x43\xe5\x0d\x92\x27\x00\x5d\xe7\x4f\x18\xb8\x6e\xfe\x44\x6d\xdb\x28\x29\x14\x80\x56\xa6\x50\x98\x26\x1b\xaf\xc6\x01\x59\x6d\x48\xed\x55\xa3\xca\x55\xec\x63\xc2\x8f\x03\x90\x15\xdb\xa1\x68\x3b\x75\xa8\xbc\x81\x53\x01\x5a\x24\x0b\x00\x5c\xd7\xa9\x6a\xdb\x46\x71\x2a\x40\xab\x92\x05\xa0\xc9\xc6\xa9\x38\x42\x2b\xb4\x7a\x75\x99\x7d\x85\xfe\x74\x4a\x42\x76\x41\x24\xf3\x74\xbf\xa6\x43\x07\xcb\xeb\x3b\x94\x43\x0b\x96\xf2\x62\x86\x9e\x43\x3b\x6c\x1b\xc3\xa1\x1c\x5a\xc5\xd2\xba\xb2\xa1\x93\x9e\xae\x7d\x37\xad\x96\xf3\xe6\x87\x57\xd7\x0f\xde\x46\x7b\x94\x1d\x2c\x6f\xb9\x34\x07\x70\xf3\xa5\x79\xd3\xb6\xeb\x2e\xcd\x41\x93\x85\xff\xec\x8f\x58\x2e\x37\x78\xa9\xbd\xc5\x1a\x2c\x6f\x79\xc4\x12\xc0\xcd\x8f\x58\x36\x6d\xbb\xee\x11\x4b\xd0\x64\xe3\x47\xab\x83\x80\x8b\x79\xe8\x61\xed\xc1\x74\xb0\xbc\xdd\x41\x40\x0e\x6e\x7c\x10\x50\xb2\xed\xaa\x07\x01\xb9\x26\x1b\x27\x5a\x1f\x60\x8b\x36\xab\xb9\x76\xda\x71\xb0\xbc\xe5\x01\x36\x00\x37\x3f\xc0\xd6\xb4\xed\xba\x07\xd8\x40\x93\x8d\x1f\x6d\x8f\x59\x6d\x16\x9e\xaf\x9f\x2a\x18\x2a\x6f\x79\xcc\x0a\xc0\xcd\x8f\x59\x35\x6d\xbb\xee\x31\x2b\xd0\x64\x35\x37\xd2\x22\xc9\x09\x1e\xee\xc7\x65\x80\xc9\x6e\xa2\xac\xa5\x3a\x7e\xf0\x7e\x42\xd9\xa7\xe5\xa8\xa8\xde\x3d\xbb\x0f\xbc\xf7\x1d\x92\xdd\x4f\x56\x2d\x8c\xd6\xfd\xb0\xe0\xf9\xf3\x1b\xfd\x67\xb7\xf8\xd5\xdd\x27\x25\x23\x54\x76\xcc\x5f\x06\x95\xf1\xed\x0f\x91\xbd\x69\x9c\x26\x94\x1c\x4e\xbf\x5f\x55\xb7\xd7\xb9\xf8\x8e\xa7\x3c\xe1\xae\xac\x4e\x88\xc5\xac\x79\x0a\x3e\x7c\x78\xd8\x68\x1f\x19\x1d\x2c\x6f\xb9\xce\x07\x70\xf3\x75\x7e\xd3\xb6\xeb\xae\xf3\x41\x93\xcd\xc6\x9b\x23\x74\xc5\xcd\xe9\xa7\xc2\x7d\xe1\x73\xe9\x25\x88\xa2\xee\x5f\x18\xe7\x28\x25\x3a\x27\x2a\x07\x71\x81\x51\x01\x80\xeb\x43\x26\x9f\xc4\xed\x23\xa9\x3a\x4a\x7f\x29\xf5\xe3\x80\xe4\xed\x0f\x48\x72\x07\x8a\x5f\x10\xda\xf9\xf3\x47\x29\xf0\xf6\xa5\x40\xe1\x40\x91\x68\xb0\xf3\xe7\x5b\xc9\x09\x7b\x64\x13\x69\xff\x56\x67\xb0\xbc\x5d\x39\x8d\x83\x1b\x97\xd3\x24\xdb\xae\x5a\x4e\xe3\x9a\x8c\xfc\xc9\x12\x0e\x96\xce\x3c\x15\x9b\xa2\x25\x59\xc4\xda\xd9\xf9\xc1\xf2\x76\x85\x34\x0e\x6e\x5c\x48\x93\x6c\xbb\x6a\x21\x8d\x6b\x32\x72\xa6\x48\x3c\x58\x4e\x9e\x6f\x65\x26\x14\xfb\x91\xf6\x06\x76\xb0\xbc\x65\x09\x0d\xc0\xcd\x4b\x68\x4d\xdb\xae\x5b\x42\x03\x4d\x46\xfe\xe4\x09\x08\x4b\x77\xbe\x15\x98\xc2\x28\x32\x70\xe7\x50\x79\xcb\xe2\x19\x80\x9b\x17\xcf\x9a\xb6\x5d\xb7\x78\x06\x9a\x34\xdd\xf9\x44\xf6\x7b\xdd\x1a\x19\x5f\xdd\x99\xd7\xc8\x86\xca\x1b\xd4\xc8\xf8\xba\xd5\xa2\x46\xa6\xb6\x6d\x94\x1a\x59\xbd\x54\x1d\xa1\x46\x76\x56\xf4\x64\xd7\xa5\x23\x4e\x8b\xf3\xbd\xcd\xa4\xe7\x78\x7e\xe7\x09\x27\x5d\x9c\xd7\xff\x07\x00\x00\xff\xff\x28\x31\x63\xde\x7b\x4d\x00\x00") +var _webUiStaticVendorBootstrap331CssBootstrapThemeMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5b\x5d\x8f\xdb\xba\xd1\xbe\x7f\x7f\x85\x5e\x04\x41\x76\x0f\x6c\x59\x96\xad\xf5\x47\x90\x45\xd1\xf4\xa0\x08\x70\x4e\x6f\x9a\x8b\x02\x45\x2f\x28\x91\xf2\x0a\xc7\x96\x04\x8a\xde\x75\xb0\xd8\xff\x5e\x70\x48\x79\x45\x9b\x92\x45\x52\xae\xcf\x45\x22\x04\x89\x69\xcd\x33\x23\xcd\x3c\xfc\x98\x19\x4f\x7e\xf9\xff\xff\xf3\x7e\xf1\xfe\x5a\x14\xac\x62\x14\x95\xde\xf3\xcc\x9f\xf9\x53\xef\xee\x89\xb1\x72\x3d\x99\x6c\x08\x8b\xeb\xef\xfc\xa4\xd8\xdd\xf3\xbb\xbf\x16\xe5\x0f\x9a\x6d\x9e\x98\x17\x06\xd3\xe9\x38\x0c\xa6\x73\xef\xfb\x4b\xc6\x18\xa1\x23\xef\x5b\x9e\xf8\xfc\xa6\xdf\xb2\x84\xe4\x15\xc1\xde\x3e\xc7\x84\x7a\xbf\x7f\xfb\x2e\x40\x2b\x8e\x9a\xb1\xa7\x7d\xcc\xf1\x26\xec\x25\xae\x26\x47\x15\x93\x78\x5b\xc4\x93\x1d\xaa\x18\xa1\x93\xdf\xbe\x7d\xfd\xf5\x1f\xff\xfc\x95\xab\x9c\xf8\x31\xcb\xc7\x98\xa4\x68\xbf\x65\x23\xf8\x50\xd2\x6c\x87\xe8\x0f\xf1\xa1\xda\x27\x09\xa9\x2a\xf1\x21\xcb\xd3\x42\xfc\xef\x05\xd1\x3c\xcb\x37\xe2\x03\x46\xf9\x86\xd0\x57\x46\x0e\x6c\x5c\x3d\x21\x5c\xbc\xac\x03\x6f\x3c\x2d\x0f\x5e\xe0\xd1\x4d\x8c\xee\x82\x11\xbf\xfc\xf0\xfe\xf3\xf8\x85\xc4\x7f\x64\x6c\x1c\x17\x87\xfa\xd6\x2c\xaf\x08\xf3\x02\xaf\x71\x7f\x18\x45\xa3\xfa\xaf\x3f\x8d\xee\x47\xe2\x5b\xfe\xb7\x89\x17\x2c\xa2\xfb\xcf\x83\x21\xbd\x35\xdf\xc4\x1a\x25\x2c\x7b\x26\xca\x0b\x51\xc6\xe4\x7b\x51\xc6\xf8\xeb\x51\x06\xe4\x5b\x52\xc6\xc4\xcb\x52\x87\x84\x4e\x5f\xa3\xd3\xd7\xe8\xf4\x4f\x75\xfa\x1a\x9d\xfe\xb9\x4e\x39\xf4\xda\xe1\x83\x59\x79\xf0\xa2\x93\x77\x33\x0d\xf5\x6f\xb9\xed\x5e\xe5\x3d\x7a\x7e\x8c\xf0\x46\x7d\x26\x65\x4c\x3e\x93\x32\xc6\x9f\x49\x19\x90\xcf\xa4\x8c\x89\x67\x92\x43\x4a\xec\xe5\x45\x4e\xc0\x88\xe6\x4b\xae\x1f\x3e\x46\xc9\x1f\x1b\x5a\xec\x73\x3c\xce\x76\x68\x43\xde\xef\xae\x4d\x3e\x89\x63\x11\x4c\x1f\xd2\x34\xfd\x7c\x26\x5b\xbf\xc9\x6d\x96\x13\x44\xc7\x1b\x8a\x70\x46\x72\x76\xc7\x8a\x72\xc4\x25\xbc\x60\xf4\x81\x04\xfc\xf2\xa6\x41\xf0\xf1\x5e\x83\x50\xb8\x08\x4b\xf5\x47\x51\x01\x35\xda\x92\x94\x79\x1c\x06\xfe\x13\x17\x8c\x15\xbb\x51\x4a\x8b\xdd\x1d\xc7\xbd\x1f\xb1\xe2\x4e\x22\xdf\x6b\x50\xcf\xed\xa9\x21\xb4\x56\xa5\xd9\x96\x11\xba\x2e\x69\xb1\xc9\xf0\xfa\x6f\xff\xfa\xc6\x41\xbe\x53\x94\x57\x69\x41\x77\xfe\xef\x59\x42\x8b\xaa\x48\x99\x7f\x04\xac\x18\xa2\xec\x6b\xb1\x2d\x68\xc5\xe8\x97\x4f\x1c\x15\xfe\x7c\x1a\x79\x24\xc7\xca\x17\x42\xd3\xa7\x91\xf7\x77\x29\xfc\xfd\x47\x49\xbe\x04\x36\x5a\x49\x8e\xe2\x2d\xc1\x5f\x52\xb4\xad\x88\xf2\xd8\x94\x94\x04\xb1\xb5\xf8\x67\x7c\xf8\x1c\x17\x14\x13\x3a\x4e\xb8\x21\xeb\x0f\x38\xe6\xd7\xc9\x60\x92\x24\xea\x74\xf1\x54\x3c\x13\xaa\xb0\x79\x9d\x16\xc9\xbe\x6a\xc6\x9b\x94\x15\xcf\xd4\x34\xa0\x2c\xaa\x8c\x65\x45\x0e\xb3\x66\x54\x1e\xda\x67\x22\x75\xa6\xe8\x00\xd7\x3c\x82\x8a\x8a\xb3\x0a\xde\x87\x82\xfb\xef\x7a\xf4\x3f\xbd\xec\x3e\x25\x90\xe4\xf7\x39\xc7\x3a\x79\x32\x9b\x2d\x50\xbc\xe0\x71\x15\x3e\x44\x68\xb9\x34\xa5\x4a\x6f\x79\x73\xb6\x08\x68\x41\x18\x01\x6e\x48\x98\x16\xdb\x86\xe0\x8c\x80\xd6\x70\x46\x68\xba\x29\x67\xc2\x79\x14\x2d\x03\x25\x28\x9a\x0c\xa9\x87\xda\x18\x22\x9e\xe0\x32\x43\x74\xeb\xb2\xba\x6e\x76\x80\x5f\x34\x58\x65\x88\x1c\xed\x64\xc8\xb9\xdd\xa7\x0c\x91\xab\x9d\x21\x43\xa2\x24\x5e\x46\x09\x8f\xa2\xf9\x74\xf5\x30\x9f\x9a\x32\xa4\xb7\xbc\x39\x43\x04\xb4\x60\x88\x00\x37\x64\x48\x8b\x6d\x43\x30\x44\x40\x6b\x18\x22\x34\xdd\x94\x21\x33\xb2\x4c\x67\x6a\x50\x34\x19\x52\x0f\xb5\x31\x44\x3c\xc1\x65\x86\xe8\x76\xa9\xea\x2e\xb2\x03\xfc\xa2\xc1\x2a\x43\xe4\x68\x27\x43\xce\xed\x3e\x65\x08\xdf\xfb\x99\xd2\x23\x4e\x02\x4c\x60\x92\x45\x28\xc6\xa1\x31\x3d\xfa\xca\x5b\xd0\x03\xa0\xe5\x02\x02\xe0\xa6\xf4\xd0\xdb\x36\x08\x3d\x00\x5a\xb7\x80\x80\xa6\xdb\x2e\x20\x4b\x34\x4f\x56\xef\x11\xd1\xe4\x06\x7c\x6e\x5d\x3a\xc0\xf6\xcb\xc4\x38\x3b\xaa\x35\xce\x51\x1d\xb0\xdd\x46\xaa\x7c\xe0\x43\xdd\xcb\xc5\x99\xad\xa7\x64\x90\xe7\x1e\x43\x3e\xa4\x01\xc2\x73\x88\x19\x12\xaf\x66\xd3\x07\xe3\xb3\x47\x5f\x79\x8b\xe3\x07\x40\xcb\x13\x08\x80\x9b\x9e\x40\xf4\xb6\x0d\x72\x08\x01\x68\xdd\x21\x04\x34\xdd\x94\x0f\x64\xb6\xc4\xd3\x99\x12\x14\x4d\x4a\xd4\x43\xad\x47\x0e\x78\x82\xcb\xac\xd0\xe5\x2b\xd4\x7c\x42\x07\xf8\x45\x83\x55\x7a\xc8\xd1\xee\x23\xc7\x99\xdd\x67\x67\x76\x91\x7a\x32\x23\x08\x5e\x45\xb3\x39\x9c\x64\x93\x69\x48\x42\x64\x4a\x90\xde\xf2\xe6\x04\x11\xd0\x82\x20\x02\xdc\x90\x20\x2d\xb6\x0d\x41\x10\x01\xad\x21\x88\xd0\x74\x53\x82\xc4\xab\x30\x09\x97\xcd\x98\x50\x8e\xe4\x62\xa4\x8d\x1e\xc2\xfe\x1e\x27\x72\x4d\xea\x4e\xc9\xac\xb5\x43\x5f\x32\xf6\xe4\x38\x0e\x83\x9d\xd4\x38\xb7\xb9\x49\x0d\xf6\xb4\xdf\xc5\x39\xca\xb6\x23\x3f\xdb\x6d\xc6\xc7\x8f\xba\xdc\x9f\x48\x71\x85\x17\x72\xab\xed\x77\xbd\xf9\x98\x16\x25\x2e\x5e\xf2\xf1\x8e\xe4\xfb\xc7\x6d\xf6\x88\xea\x97\xaf\xf9\xa6\x75\x8e\x5a\xf2\xcb\x34\xc7\x16\xf1\x0b\x96\x03\x10\x37\x5e\xea\xfa\xca\x5b\x2c\x75\x00\x2d\x97\x3a\x00\x37\x5d\xea\xf4\xb6\x0d\xb2\xd4\x01\xb4\x6e\xa9\x03\x4d\x1a\x26\xb7\x13\xf1\xd4\xfd\x92\x0b\x8f\xe8\xd4\xfb\xc7\x2f\xf4\xc1\xf1\xfe\x75\xeb\xde\x8e\x3c\x60\x34\x37\x8c\x90\x46\x06\x06\xc4\x1d\xb2\x4b\xdd\xf2\x8e\xd9\x25\x00\xb7\xcf\x2e\x35\x6d\xbb\x6e\x76\x09\x34\x19\x46\x48\x8e\x9e\x63\x44\x8f\x09\x76\xab\x3c\x7a\xba\xe4\x97\x65\x1e\xfd\x82\xb0\x43\x1e\x5d\x20\xdb\xe5\xd1\x15\xab\xae\x9a\x47\x17\x9a\x6e\xb3\x42\x73\xc1\x7d\xb5\x9e\x97\x07\xb7\xea\xdf\x69\xad\xc9\xbe\xfa\xa7\x43\x3a\x0d\x52\xaf\xfe\x9c\xa3\xe7\x47\xbf\x28\x49\xce\x67\xb4\xae\x7b\xea\xf9\xcb\x74\x33\x0a\xc9\x79\x98\xe6\x43\x7e\x19\x6f\x46\xfb\xca\x5b\x6c\x46\x01\x5a\x2e\x61\x00\x6e\xba\x19\xd5\xdb\x36\xc8\x66\x14\xa0\x75\x4b\x18\x68\x32\x9a\xa0\xba\xe2\x72\x56\x1e\xbc\x55\xcf\xc8\x6b\xbb\xf7\x18\x5b\x31\x45\x39\x1e\x35\xa3\x86\x6f\x89\xb4\x05\xc7\xf3\xf8\x0d\x1b\x40\x59\xfe\x4c\x68\xa5\xa9\x66\x76\xaf\x85\x09\xbf\x60\xbd\x08\x8d\xe3\xac\x9f\xb0\xc5\x2a\x08\xb8\x72\x15\x0c\x4d\x23\x4c\x67\xd5\x20\xeb\x1f\xe0\xea\xd6\x3f\xf8\xf3\xbf\x9d\x49\x4f\xdd\xde\x39\x37\x69\xef\xb1\x9c\x9b\x82\x25\xbf\xf8\xdb\x0d\x52\x7e\x99\xc6\x4c\x6f\x79\xf3\xb0\x11\xd0\x22\x6c\x04\xb8\x61\xe4\xb4\xd8\x36\x44\xf0\x08\x68\x4d\xf0\x08\x4d\x57\x9d\x9b\x3a\x9a\x35\x34\xb7\xb6\x46\x96\x3a\x53\xe9\x62\x4a\x33\x73\xe9\x5a\x7e\x1a\x3a\x2a\x86\x58\x96\x8c\xb9\x3f\xeb\xa1\x34\x3b\x10\xac\x19\x11\x4e\x7a\x55\x77\x10\xc1\xdb\x5f\x76\x04\x67\xc8\xbb\xdb\xa1\xc3\xf8\x25\xc3\xec\x69\xbd\x78\x58\x94\x87\xfb\x57\x29\xdd\x34\xd0\x03\x62\x78\xed\xa7\x13\x63\x91\xfa\xdc\x62\x2e\x28\x4e\x34\xf2\x18\x63\xde\x49\xf2\xf3\x0c\x73\xfb\x33\xcc\x9b\x8f\xb6\x84\xea\x9b\x83\x34\x6b\xb5\x55\xa7\x5b\x78\xdc\xa1\x9e\xe5\x59\xcc\xb6\xba\x9d\x40\xf2\x49\x2c\x6b\xd1\x38\x4d\x03\x0c\xd3\x66\xb2\x24\x51\x9c\x18\x6f\x57\xfb\xca\x5b\x6c\x57\x01\x5a\xe6\x4e\x01\xdc\x74\xbb\xaa\xb7\x6d\x90\xed\x2a\x40\xeb\x72\xa7\xa0\xc9\x6c\x49\x38\xc9\x26\x86\x38\x46\xd3\xda\xab\x16\xf5\x53\xbc\x22\x38\x05\x0a\xc6\x2b\x4c\x52\xe3\x5e\xb5\xde\xf2\x36\xe9\x70\x0e\x2d\x5c\x2a\xc0\x8d\xd3\xe1\x5a\xdb\x86\x49\x87\x73\x68\x8d\x4b\x85\x26\x17\x97\xae\x50\x92\x12\x54\xbb\xd4\xb2\x0a\x98\xa4\x4b\x32\x13\x69\x06\x92\x26\xe6\x1d\x88\x7d\xe5\x2d\x92\x27\x00\x5d\xe7\x4f\x38\xb8\x69\xfe\x44\x6f\xdb\x20\x29\x14\x80\xd6\xa6\x50\xb8\x26\x17\xaf\xa6\x11\x59\xac\x48\xed\x55\xab\xca\x55\x1a\x62\x22\xda\x01\xc8\x82\x9f\x50\x8c\x9d\xda\x57\xde\xc2\xa9\x00\x2d\x93\x05\x00\x6e\xea\x54\xbd\x6d\x83\x38\x15\xa0\x75\xc9\x02\xd0\xe4\xe2\x54\x9c\xa0\x05\x5a\xbc\xf9\xdc\x3e\x6a\xbe\x9c\x92\x98\x5f\x10\xc9\x22\xdd\x6f\xe8\xd0\xde\xf2\xe6\x0e\x15\xd0\x92\xa5\xa2\x98\x61\xe6\xd0\x16\xdb\x86\x70\xa8\x80\xd6\xb1\xb4\xae\x6c\x98\xa4\xa7\x6b\xdf\x8d\x63\x64\x4a\xc8\xc6\xf6\x75\xf9\x10\xac\x8c\x67\xd9\xde\xf2\x8e\x5b\x73\x00\xb7\xdf\x9a\x37\x6d\xbb\xee\xd6\x1c\x34\x39\xf8\xcf\xbd\xc5\x72\xbe\xc2\x73\xe3\x23\x56\x6f\x79\xc7\x16\x4b\x00\xb7\x6f\xb1\x6c\xda\x76\xdd\x16\x4b\xd0\xe4\xe2\x47\xa7\x46\xc0\xd9\x34\x0e\xb0\xf1\x64\xda\x5b\xde\xad\x11\x50\x80\x5b\x37\x02\x2a\xb6\x5d\xb5\x11\x50\x68\x72\x71\xa2\x73\x03\x5b\xb2\x5a\x4c\x8d\xd3\x8e\xbd\xe5\x1d\x1b\xd8\x00\xdc\xbe\x81\xad\x69\xdb\x75\x1b\xd8\x40\x93\x8b\x1f\x5d\xdb\xac\x56\xb3\x20\x34\x4f\x15\xf4\x95\x77\x6c\xb3\x02\x70\xfb\x36\xab\xa6\x6d\xd7\x6d\xb3\x02\x4d\x4e\x6b\x23\xa3\x59\x49\x70\x7f\x3f\xce\x23\x4c\x36\x23\x6d\x2d\xd5\x0b\xa3\x8f\x23\xc6\x1f\xad\x44\x94\xe4\xec\xec\x73\x14\x7c\x6c\x91\x6c\xff\x66\x71\x82\x71\xf2\xb9\x5f\xf0\xfc\xf9\x8d\xfe\xb3\x5b\xfc\xe6\x6f\xb3\x8a\x13\xaa\xd8\x97\xaf\xbd\xca\xf8\xee\x4d\x64\xef\x1a\xc7\x19\x23\xbb\xe3\xef\x57\xf5\xe3\x75\x2e\xbe\xe5\x5b\x91\x70\xd7\x56\x27\xe4\x66\xd6\x3e\x05\x1f\x3f\x3c\xac\x8c\x5b\x46\x7b\xcb\x3b\xee\xf3\x01\xdc\x7e\x9f\xdf\xb4\xed\xba\xfb\x7c\xd0\xe4\x72\xf0\x16\x08\x6d\x71\x73\xfc\xa9\x70\x57\xf8\x5c\xba\x09\xa2\xa8\xfd\x17\xc6\x25\xca\x89\x49\x47\x65\x2f\x2e\x70\x2a\x00\x70\xdd\x64\xf2\x28\x3f\x3e\x11\x84\x2d\xb6\x52\x3f\x1b\x24\x6f\xdf\x20\x29\x1c\x28\x7f\x41\xe8\xe6\xcf\x9f\xa5\xc0\xdb\x97\x02\xa5\x03\x65\xa2\xc1\xcd\x9f\xef\x25\x27\x1c\x90\x55\x62\xfc\x5b\x9d\xde\xf2\x6e\xe5\x34\x01\x6e\x5d\x4e\x53\x6c\xbb\x6a\x39\x4d\x68\xb2\xf2\x67\x96\xa7\x85\xa3\x33\x8f\xc5\xa6\x64\x4e\x66\xa9\x71\x76\xbe\xb7\xbc\x5b\x21\x4d\x80\x5b\x17\xd2\x14\xdb\xae\x5a\x48\x13\x9a\xac\x9c\x29\x13\x0f\x8e\x8b\xe7\x7b\x99\x09\xa5\x61\x62\x7c\x80\xed\x2d\xef\x58\x42\x03\x70\xfb\x12\x5a\xd3\xb6\xeb\x96\xd0\x40\x93\x95\x3f\x45\x02\xc2\xd1\x9d\xef\x05\xa6\x38\x49\x2c\xdc\xd9\x57\xde\xb1\x78\x06\xe0\xf6\xc5\xb3\xa6\x6d\xd7\x2d\x9e\x81\x26\x43\x77\xbe\x90\xed\xd6\xb4\x46\x26\x76\x77\xf6\x35\xb2\xbe\xf2\x16\x35\x32\xb1\x6f\x75\xa8\x91\xe9\x6d\x1b\xa4\x46\x56\x6f\x55\x07\xa8\x91\x9d\x15\x3d\xf9\x75\xa9\xc5\x69\x76\x7e\xb6\x19\x75\xb4\xe7\xb7\x76\x38\x99\xe2\xbc\xfd\x37\x00\x00\xff\xff\x28\x31\x63\xde\x7b\x4d\x00\x00") func webUiStaticVendorBootstrap331CssBootstrapThemeMinCssBytes() ([]byte, error) { return bindataRead( @@ -458,12 +459,12 @@ func webUiStaticVendorBootstrap331CssBootstrapThemeMinCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css", size: 19835, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/css/bootstrap-theme.min.css", size: 19835, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331CssBootstrapMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\x6d\x93\xe3\xb8\x91\x30\xf8\xfd\x7e\x85\xdc\x13\x13\xd3\xe5\x96\xd8\xd4\x7b\xa9\x14\x53\xe7\x3d\x3f\x1b\xbb\x8e\x58\xfb\xcb\xfa\xc3\x46\x8c\xe7\x2e\x28\x91\x2a\xd1\x43\x89\x32\x49\xf5\x8b\x75\xda\xdf\x7e\x78\x47\x22\x91\x20\x29\x55\xf5\xdc\x3e\x11\xb3\x1d\x3b\x2e\x01\x89\x44\x22\x33\x81\x4c\x02\x89\xc4\xc7\xdf\xff\xee\xff\x18\xfc\x7e\xf0\x7f\x95\x65\x53\x37\x55\x72\x1a\x7c\x9a\x46\xd3\x68\x3c\x78\xbf\x6f\x9a\xd3\xd3\xc7\x8f\x2f\x59\xb3\xd1\x75\xd1\xb6\x3c\x3c\x70\xe8\x3f\x96\xa7\xaf\x55\xfe\xb2\x6f\x06\x93\x78\x3c\x1e\xb1\xff\xcc\x06\x7f\xfd\x9c\x37\x4d\x56\x0d\x07\x7f\x3a\x6e\x23\x0e\xf4\x1f\xf9\x36\x3b\xd6\x59\x3a\x38\x1f\xd3\xac\x1a\xfc\xf9\x4f\x7f\x95\x48\x6b\x8e\x35\x6f\xf6\xe7\x0d\xc7\xf7\xb1\xf9\xbc\xa9\x3f\x9a\x2e\x3e\x6e\x8a\x72\xf3\xf1\x90\xd4\x0c\xd5\xc7\xff\xf8\xd3\x1f\xff\xf5\x2f\xff\xf9\xaf\xbc\xcb\x8f\x8c\xce\xc1\xb1\xac\x0e\x49\x91\xff\x33\x8b\xb6\x75\xcd\x09\x8d\xa3\xc9\xe0\xff\x15\x98\x55\x67\xec\x17\x43\x1d\xe5\xe5\x47\x03\xcb\xda\xee\x9b\x43\x71\xd9\x95\xc7\x66\xb4\x4b\x0e\x79\xf1\xf5\xa9\x4e\x8e\xf5\xa8\xce\xaa\x7c\xb7\x1e\x7d\xce\x36\xbf\xe4\xcd\xa8\xc9\xbe\x34\xa3\x9a\xc1\x8f\x92\xf4\xef\xe7\xba\x79\x1a\xc7\xf1\xf7\xeb\xd1\xa1\xa6\x6b\xae\x9b\x32\xfd\x7a\x39\x24\xd5\x4b\x7e\x7c\x8a\xaf\x49\xd5\xe4\xdb\x22\x1b\x26\x75\x9e\x66\xc3\x34\x6b\x92\xbc\xa8\x87\xbb\xfc\x65\x9b\x9c\x9a\xbc\x3c\xf2\x3f\xcf\x55\x36\xdc\xb1\x71\x32\x1e\xed\xb3\x24\xe5\xff\xf3\x52\x95\xe7\xd3\xf0\x90\xe4\xc7\xe1\x21\x3b\x9e\x87\xc7\xe4\xd3\xb0\xce\xb6\xa2\x45\x7d\x3e\x30\xf4\x5f\x2f\x69\x5e\x9f\x8a\xe4\xeb\x13\x63\xcc\xf6\x97\x6b\x72\x4e\xf3\x72\xb8\x4d\x8e\x9f\x92\x7a\x78\xaa\xca\x97\x2a\xab\xeb\xe1\x27\xd6\x6b\x69\x20\xf3\x63\x91\x1f\xb3\x91\x68\xb0\xfe\x94\x71\xd2\x92\x62\xc4\x98\xf1\x72\x7c\xda\x24\x75\xc6\x6b\x25\xa2\xa7\x63\xd9\xbc\xff\x69\xcb\x38\x53\x95\x45\xfd\xf3\x83\x41\x71\x2c\x8f\xd9\x7a\x9f\x71\x11\xb3\xd1\xfd\xb4\xcf\xd3\x34\x3b\xfe\x3c\x6c\xb2\x03\xab\x6e\x32\x07\xee\x9a\x5c\x36\xc9\xf6\x17\x3e\x96\x63\x3a\xda\x96\x45\x59\x3d\x31\x51\x1e\xeb\x53\x52\x65\xc7\xe6\x9a\x3c\x25\x6c\x44\x9f\x18\x73\x9e\xf6\x25\x23\xe7\x52\x9e\x1b\x4e\x02\x67\xdb\x66\x53\xfd\xd4\xe4\x4d\x91\xfd\x7c\xd9\x94\x15\xe3\xc9\x68\x53\x36\x4d\x79\x78\x1a\x9f\xbe\x0c\x52\xf6\x67\x96\x5e\x37\x43\xa6\x19\xe5\xf1\x45\x4a\xf0\xb3\x24\x6a\x19\xc7\xd7\x74\x77\x94\x65\x75\xf3\xb5\xc8\x9e\xf2\x86\x0d\x71\x7b\xdd\x8f\xb5\x58\xa2\xc5\x32\x3b\x0c\xe2\xb5\x84\x61\x02\x7c\x9a\x64\x87\x2b\xab\xfc\xe5\x22\xa9\xfc\x2e\x8e\xe3\xb5\xa5\xfd\xe9\xbb\xdd\x2e\xbe\xd6\x4c\x6d\x94\xb6\x88\x36\x8f\x4c\xd8\xf5\x99\x11\x71\x3e\x5d\x4e\x65\x9d\x73\xe1\x3c\x55\x19\x63\x03\x1b\x13\xc0\xbd\x9c\x7f\xbf\x16\x7c\xd7\x6c\x0b\xb2\x9e\x63\x6a\xca\xd3\xd3\x28\x9a\x33\x7a\x18\xee\x8b\x1a\xf4\x28\x9a\xf0\x92\xfc\xf0\xa2\xb8\xc1\x58\x54\x7f\x7a\x11\x52\x7a\xaa\x98\xea\x3c\x5c\x38\x03\x77\x45\xf9\xf9\x49\x8a\xe4\x2a\xf5\x4a\x8f\x78\xcc\xc6\x3b\x8b\x4f\x5f\xae\xfb\xea\x62\xc8\xd0\x1a\xbe\x29\xbf\x70\x4a\xf3\xe3\xcb\x13\x97\x38\x13\x0d\x2f\x62\x2a\x5e\xfe\x33\x54\x47\x17\x5f\x4f\xac\x47\x43\x48\x72\x6e\xca\xeb\xb6\x64\x6a\xff\xcb\x26\x65\x2a\x99\x0d\xeb\xe4\x70\x72\xa6\xdb\xa1\x3c\x96\x4c\x1b\xb6\xd9\xd0\xfc\x05\x18\xc7\x88\xbe\x6e\xce\x8c\x01\xc7\x61\x7e\x3c\x9d\x9b\x61\x79\x6a\xe4\xc4\x60\xfc\x62\x93\x61\xc8\x27\x20\x53\xa5\xc4\x4c\x37\xd1\x98\xa9\xf9\x9e\xcd\xe0\x66\x2d\x65\xa9\x7e\x29\x4c\x96\xbc\x4f\x79\x9d\x6f\x8a\x4c\xf7\x20\x51\x5e\xc4\x9c\x16\x4a\xba\x63\xeb\x84\x54\x63\x05\xc1\x17\x8b\x81\x20\xe4\xa7\xe6\xeb\x29\xfb\x51\x16\xff\x3c\x04\x45\x6c\xce\x65\x8d\x53\xc2\x84\x78\xc8\x9b\x9f\x2f\x9a\xd7\xc9\xe9\x94\x25\x0c\xfd\x36\x7b\x92\xed\xd7\xdb\x73\x55\x33\x32\x4f\x65\xce\xf8\x58\xa9\xce\x7e\x62\xf3\x28\x61\xd4\xa5\x3f\xc3\x6e\x4d\xe1\x45\x35\x4a\xb3\x5d\x72\x2e\xf4\xd8\x9e\x9e\x84\xc8\x76\xe5\xf6\x5c\x8f\xf2\xe3\x91\x2d\x24\xa2\x9d\x5f\x7e\x39\x25\x69\xca\x85\xc7\xb4\x5c\xeb\x93\x00\xbd\x40\x45\x95\x2b\xe5\x15\x8c\x66\xbb\xcf\xb6\xbf\x30\x41\xbb\x83\x4e\xd8\x82\x61\x47\x08\x54\xc3\xcc\x5c\x5f\x99\x40\x15\x5d\x6a\x28\x84\xfd\x1f\xcf\x87\x4d\x56\xfd\xcc\x06\xa4\x3a\x13\xa3\x19\xd5\xa7\xfc\x38\x82\x9a\x12\x80\x66\xeb\x8b\x0b\xad\xe7\x82\x50\x55\x28\x35\x26\xa3\xed\x9e\x1c\xd3\xeb\x66\xc8\x9a\xd0\x03\xae\x72\xbb\x3c\x2b\x52\x82\x02\x4b\xbb\x2c\x18\x6d\x79\x93\x82\x18\x6c\xa8\x41\x9a\x6d\xcb\x2a\xe1\x6b\x13\xa5\x83\x42\xbf\x45\xe7\x4c\x71\x8d\x56\x44\x53\xb6\xda\x0c\xa2\xc5\x44\xfc\xcf\x92\xfd\x77\xad\x67\xd8\x60\x72\xfa\xa2\x75\x86\x2f\xc5\x75\x59\xe4\xe9\xa0\xce\x0b\x36\xad\xae\x45\xf6\x92\x1d\x53\x4a\xb9\xcc\x4c\x75\x57\x07\x3d\xa1\xbd\x15\xbc\xe1\x7a\xae\x57\x7e\xbe\x2e\x40\x7c\xdc\x94\x14\xc9\xa9\xce\x9e\xf4\x1f\xd7\x26\x1d\x36\x7b\xdb\xf1\x95\x3b\x05\xff\x59\x9e\x2b\x36\xc4\x01\xe1\x5a\xec\xe7\x9b\x93\x30\xfe\x73\x26\x94\xbc\xc8\x2a\x61\xbc\x1c\x17\xa3\xae\xb6\x1f\x99\x33\xf1\x91\xdb\x60\xe1\x55\xfc\xfe\xe3\x1f\x0e\x59\x9a\x27\x83\x53\xc5\x66\xea\xe5\xf7\xc3\xa7\x4d\xc6\xd6\x88\x6c\xf8\x94\xec\x58\x03\x60\x39\x7e\x97\x1f\x4e\x65\xd5\x24\xc7\x66\x2d\x5d\x84\x7d\x92\xb2\x11\x73\x5e\x83\x2a\x60\x5e\x80\x51\x04\x00\x8e\xf2\xd1\x28\x42\x35\xd7\x84\xd9\x54\xbe\xc0\x31\x33\x29\x97\x34\xab\x06\x4f\xc2\xeb\x92\xa6\xfe\xa7\x7d\x95\xed\x7e\x36\x03\x10\x6a\xfa\xf4\x6e\xf0\xfe\xdd\x20\x69\x9a\xea\x3d\xaf\x7d\x18\xbc\x7b\x78\x07\xed\x71\x10\x5a\x54\x2b\x70\x81\xf8\xff\xfe\xf1\xdd\x77\xef\x14\xfc\xd0\x14\xfd\x3d\x61\x1e\xca\xb6\xca\x4f\xac\xad\x87\xec\x1d\x37\x21\x43\xe1\xa0\xfc\xe3\xcc\x3c\xa2\x8b\xa7\x6a\xdf\xad\x56\x2b\xb6\x38\xbc\x30\x37\x86\xe9\xd3\x2f\x6c\x05\xe0\x9e\xd5\x53\xf2\xa9\xcc\xd3\x6b\xc3\xfd\x27\xe3\x83\x08\x25\x1a\x49\x97\x6a\x24\xf4\xec\xda\xb0\x25\x91\x19\xd1\x50\x7b\x5e\x77\x48\xbe\x8c\x3e\xe7\x69\xb3\x17\xee\x1c\xe0\xe9\x69\xb8\x9f\x0c\xf7\xd3\x4b\x59\x9d\xf6\x4c\x5e\x4f\xd3\x35\x03\x2b\x3f\xb3\x3f\xae\xb2\x02\x60\x15\xc3\x52\x48\x95\x65\x71\xdd\x89\x1d\x40\x1c\x31\xef\x6e\x93\x54\xae\xef\x14\x6d\x9a\xe3\x73\xb4\x65\x4a\xd1\x0c\xa3\xb4\x2a\x4f\xe7\xd3\x33\x28\xd3\x73\x83\xb9\x0b\x23\x4a\xf3\xae\x51\x91\x6c\xb2\x82\xe0\x1f\x03\xbb\x46\xce\xfc\xf2\xa6\x13\x44\x23\x20\x07\x6c\x7e\xe9\xbf\xf6\xbe\x53\x87\xc7\x23\x19\x2f\xb1\x33\x37\xbf\xd9\x0f\xbd\xa2\x94\xa0\x2c\x4d\x53\x80\xe5\xfa\x07\xe5\x29\x6c\x33\xc7\x67\xf8\xe1\xdf\x8a\xaf\xa7\x7d\xce\x54\xa6\x1e\xfc\x7b\x52\xec\x98\x26\xbf\xd4\x3f\xac\xd9\x7c\x7d\x3a\x57\xc5\xfb\x28\xfa\xc8\xa1\xeb\x8f\x2f\x06\x6c\xb4\xd7\x60\xa3\x2a\x7b\x39\x17\x49\x15\x65\xcc\x65\xba\xbd\xc9\xff\xf9\x5d\x9e\xed\xf2\x2f\x0f\x03\xee\x1b\x24\xcd\xfb\x1f\x32\x66\x60\x98\xb7\x95\x8e\xca\x13\x53\x5f\xb6\x0c\xff\xf0\x30\xec\x8f\xf1\x73\xb9\xdb\x59\x5c\xfc\xd7\x4d\xcd\x9b\x06\xb4\x6e\xaa\x73\x76\x33\x01\xcc\x85\xfc\xce\x02\xfc\x3f\x06\x40\xd5\x5b\xec\x0c\xf0\x87\x87\x6b\x64\x60\x09\x7f\x97\xfb\xad\x4c\x96\x6b\xf2\x5b\xa3\x87\xfc\x80\xbf\x2e\xfd\x8e\x35\xb4\x09\x33\xe6\x8f\x43\xd7\x64\x6c\x56\x47\xd9\xee\xc0\x7c\xe0\x3d\x5f\xfa\x99\xe6\xe4\xcc\xab\x66\x1e\x75\x2a\xcd\x73\x59\x7f\xc1\x30\x2f\x55\xf2\xb5\x66\xee\x77\x06\x46\x34\x12\xab\x7e\x5e\xff\xa2\x56\x75\xbb\x24\xfd\x6d\x92\xbc\x83\x80\xa7\xe2\x5c\x13\x40\x1b\x07\x28\x3b\x57\xa5\xb6\x0f\x6e\x31\xd1\x34\x4e\xb6\x4e\xe3\x43\x7e\x24\xbb\x98\x8c\x27\x0e\xdc\xb6\x28\xcf\x29\x01\xb7\x88\xc7\x2e\x31\xc7\x4f\x59\xc1\x34\x94\x00\x5d\xc6\x2b\x77\x70\xd9\x71\x9b\x17\x24\xe0\xce\x01\x7c\x29\x92\x9a\xa0\x31\x8b\x51\xdf\x87\x73\x9d\x6f\x49\x38\x77\x2c\xd2\x5b\x21\x01\xa7\x0e\x20\x5b\xce\xab\x86\x84\x9b\xbb\x08\x99\xbf\x41\x82\x2d\x3c\xb0\x11\xfb\x78\x6d\xbe\x92\xc0\x4b\x07\xf8\x5c\x67\x34\xce\x47\x07\x6c\x97\x17\x07\x12\xcc\xe5\x75\xb3\x1f\xb1\x49\xf6\x42\x88\x25\x8b\xc7\x31\x02\x25\x81\xc6\x1e\xbe\xbc\x26\x79\x83\x14\xa7\x24\xb4\x9c\x01\xb9\x8c\xae\xb2\x03\x73\xd6\x48\xc0\x99\x03\xf8\xcf\xb2\x3c\x30\x33\x4a\x42\xce\x7d\x48\xe6\x84\x93\xa0\xae\x5c\xd8\x62\x48\x42\xb9\x02\xa9\xd9\xe7\x73\x42\xa8\x2b\x03\x74\x45\xb2\x2d\x5f\x48\x28\x24\x91\x2a\xa9\x49\x4e\x4f\x5c\x71\xec\xcb\x03\xc9\x98\xc9\x18\xeb\x01\x0d\xe6\x4a\xa3\xc9\x03\xd8\x90\x3c\xca\x84\x98\xec\x0c\xcc\x95\x06\xf3\x48\x8e\x05\x03\x1d\x25\x05\xc9\xe7\xc9\x9c\x04\x27\x41\x5d\x91\x9c\x4f\x41\x40\x57\x2a\xf9\x91\x39\xa6\x24\xdc\x23\x5a\x49\x93\xaf\xa3\x6d\x5e\x6d\x03\x6c\x5a\x21\x7d\x64\x5f\x2d\xe4\x90\xa6\x31\x02\xdc\xb1\xef\x70\x52\x8e\x53\x57\x40\x7c\xba\x84\xf8\x34\x75\x85\xc4\xcd\x18\x09\xe6\x0a\x69\x57\x24\xa4\xa2\x4d\x67\x78\x11\x4b\x4f\x7b\xe6\xe6\x91\x4b\xe8\xd4\x15\xd1\xa7\xb2\x38\x1f\xb2\xd0\x8c\x98\x2e\x28\x60\x2e\x56\x12\x7a\x49\x41\x9f\x4f\x24\xac\x2b\xad\x7f\x54\x7c\x2f\x87\x04\x74\x05\xc5\x5c\xd9\x10\xe4\x0c\x2d\x6b\x34\xb3\x66\x63\x0c\x45\xb2\x69\xe6\x4a\x68\x53\xd2\xcb\xda\x6c\xea\x81\xf1\x9d\x3e\x12\xd4\x95\x92\xf8\xd0\x23\xe1\x5c\x01\x6d\x93\x43\x56\x25\x24\xa0\x2b\x1c\xb1\x3b\x45\x81\x2d\x11\x89\x05\x39\xcd\x66\xae\x40\xe4\xb6\x26\x09\x88\x96\x35\xfe\x01\xa8\x1c\x27\x02\x7a\x1e\xfb\xd0\xf2\x03\x88\x02\x76\x65\x23\x36\x30\x47\x45\xb6\xa3\x31\x4f\x08\xe0\x6d\xc6\xf7\xb9\x48\xf0\x29\x01\x5e\x05\xc9\x9e\x11\xd0\x7c\x1b\x3e\xdf\x91\xb6\x7c\x3e\xf7\xe6\x3e\x09\xb6\x40\x6b\x59\xca\xb7\x6e\x82\x23\xc4\x2b\x9f\x80\x0e\xd3\x8c\x1c\x05\xf6\x6d\xc3\x57\xff\x91\xd8\xa6\x27\x1b\x20\xf7\x2c\xdf\x36\xe7\x8a\x9c\x5a\x0b\x57\x8a\x87\xe4\x34\xe2\x6a\x4e\x73\x7a\x81\x04\x23\x8f\x2f\x28\xc0\x29\x32\x55\xb4\x02\x2f\x5c\x59\x64\x69\x4e\x83\x21\x17\x6d\x9f\x04\xc6\xe2\xca\x40\xec\x3a\x92\x70\x2e\xf7\x43\xfe\xca\xe2\x11\xb9\x7c\xd9\x69\xc4\xbf\x61\x3f\x27\x15\x39\xcf\x16\x2b\x24\x25\x66\x25\xda\xe0\x97\x31\x5a\xff\x5a\x40\xc7\x9e\x05\x24\xc1\x5c\xf9\x9c\x12\xe6\x79\x92\x70\x53\x34\xb2\x92\x5c\xc9\x97\x33\xb4\x0c\x55\x41\xfa\xe6\xfe\xd0\xdb\xc0\xb1\x33\xcd\x38\xdb\x06\xee\xca\x2b\xfb\x7b\xb6\x25\xf5\x64\xf9\x88\xe5\xff\xa9\x2a\xc3\xcb\xcc\x72\x45\x82\x07\x67\xe1\x63\xec\x7d\xd0\x09\x4f\x92\x84\x1d\xfb\x9f\x66\x61\xe0\x09\xe1\x41\x87\xa1\xa7\xc8\x29\x0f\x43\xba\xf2\xfb\xc7\x39\xab\xf9\xc7\x77\x18\x7e\x8e\x56\xa5\x5d\x19\x86\x45\x22\xdc\x56\x59\x76\xac\xf7\x25\xcd\xb9\x25\x35\xc0\xb0\x0b\xf7\xf8\x88\x87\xd8\x02\x8b\xbd\x88\x63\x0b\xf0\xca\x15\x61\x52\x55\xe5\xe7\xa0\x7e\xac\xc6\x04\x70\x50\x3b\x56\x13\x02\x9a\xf6\x90\x56\x53\x02\x34\xe4\x7a\xad\x66\xfe\xe2\x17\x72\x3e\x57\x73\xc4\x67\x71\xca\xbc\x3b\x17\xe4\xb7\xce\x6a\x41\x41\x8b\xe3\x4a\x12\x1c\xcd\xc2\x2f\xdb\x22\x39\x24\x6d\x0a\x35\x46\x1f\xf5\x2f\x39\xc9\xe8\x31\xfa\xa6\x2f\xb2\x84\x72\x59\xc7\xe8\x8b\x7e\x97\x93\x56\x60\x1c\x23\xa3\xf2\x35\x13\xdb\x6c\x24\xe8\xdc\x03\xdd\x16\x25\xb9\x66\x8e\xd1\x06\x00\x5b\xab\x8e\xf9\xf1\x25\x3c\xf4\x25\x5e\xb1\x8f\x34\x5a\xb4\x66\x25\x45\x76\x4c\xc9\x2d\x88\x31\xda\x07\xa8\x92\x63\x5a\x52\x1b\x06\x63\xb4\x0b\xb0\x2d\x0f\x87\x8c\x34\xc0\x63\xb4\x15\x70\x48\x5e\x8e\x19\x0d\x38\x21\xd7\x4a\x52\xbf\xc7\x68\x47\x40\x03\x07\x34\x7c\x8c\xf6\x05\xaa\xac\xf9\x9c\x05\xa8\xc0\x8e\x40\x79\x3a\x71\x21\x6c\xe9\xbd\x9d\xf1\x18\xfb\xd1\x85\xd8\xb7\x0e\x89\x18\xed\x12\x28\xf0\x90\xf2\xa0\xad\x02\x35\x7d\xf4\x19\x3d\xd9\x02\x7f\x99\x8a\x16\xfb\xb2\xca\xff\xc9\xa0\xe8\x36\x78\x0b\x21\xa5\x2c\xe4\x18\xed\x20\x6c\xd8\x8c\x67\x68\x49\xb2\xd1\x2e\xc2\x26\x23\x67\xfb\x18\xed\x22\x6c\xf9\xb0\x76\x6c\x60\x0d\xc9\x39\xb4\x99\xd0\xec\xcf\x87\x4d\x1d\xd0\x0e\xb4\x93\xa0\x60\x43\xca\x81\x36\x13\xf6\x4c\xe9\x83\x6b\xf0\x18\x6d\x28\x08\xe0\xc0\xea\x3e\x46\x9b\x0a\x02\x36\x40\xf0\xca\x87\x0c\x91\x8b\xf6\x14\xa4\x25\xea\x30\x1d\x63\xb4\xbd\xe0\x34\x0a\x91\x8f\xf6\x19\x9c\x36\xf4\x30\xd0\x96\x83\xd3\x22\x38\x1c\x57\xae\x2f\x45\xb9\x21\xe5\x8f\xb6\x1e\x3e\x57\xd9\x91\xdc\x95\x1d\xa3\x6d\x87\x26\xa9\x7f\xa1\x3e\xd2\xc7\x68\xc3\x61\x97\x17\xf4\xc7\xdf\x18\xed\x36\x6c\xaa\x3c\xdb\x6d\x13\x7a\x7e\xa3\x0d\x07\x6e\x17\xa5\xdf\x42\x01\xa3\x3d\x87\x34\xa9\xf7\x9b\x92\x76\x50\xc7\x68\xe7\xe1\x94\x9c\x32\xc6\xdc\x9c\x14\x03\xda\x7e\x10\xfb\xd2\xc1\x9d\xe4\x31\xda\x85\x28\xf2\x23\xf5\x45\x33\xc6\x3b\x10\x7c\x8f\x88\x84\x73\xe5\x74\x3a\xd7\xfb\x13\xb9\x05\x3b\x46\x5b\x10\xe7\x9a\x1e\xb8\xcb\xfd\x97\x0d\x3d\x64\x97\xef\x75\x49\xaf\xd6\x68\x43\x81\x83\x8d\x36\x5f\x99\xaf\x73\xda\x27\x1b\xda\x20\xa0\x6d\x05\xdc\x24\xe0\x27\x8d\xd1\x06\x83\x6e\x26\x4f\x16\x29\xf8\x69\x18\x3e\xd8\xc7\x8c\x26\xad\x69\xaa\x7c\x73\x6e\xc8\x2d\xbc\x31\xda\x6c\xf0\x1b\x05\x7b\x43\xe2\x3a\x8a\x8f\xdf\x8c\x14\xda\x1c\x3b\x72\x27\xb6\xa2\x91\x80\x78\x33\x5c\x1e\xf3\x06\x57\x0b\xb4\xeb\x60\xe0\xe9\xf5\x08\xed\x3c\x14\xe5\x0b\x7d\x1a\x30\x5e\x8c\xf1\x5e\x29\xb9\x4b\x3b\x5e\xe0\xad\xd7\x97\xc0\xa1\xc1\x18\x6d\x4f\x1c\xb3\xcf\xa3\xcf\xf9\x91\xc7\x43\x50\xc0\xd8\x3d\xd9\x96\xf4\x2a\x80\xb7\x29\x12\x72\x5b\x61\x8c\x76\x29\x42\xee\x05\xda\xa4\xe0\xd8\xe8\x5e\xd1\xee\x9e\x38\x08\x27\x01\x57\x58\xec\x01\x40\xb4\x2f\x51\x67\xb4\x76\x2c\xb1\x58\x98\x33\xf6\x75\x94\x92\x67\xa1\x0c\x7a\x42\x41\x07\x47\xb5\xc4\xfb\xe3\x02\x3c\x78\xb6\x34\xc6\x5b\x15\x16\x3d\x09\x3d\xa7\xa0\x43\x92\x40\xbb\x15\xcc\x62\xa4\x79\xc3\x7d\x4e\x9a\x72\x57\x6e\x32\x26\x90\x5e\x56\xf0\x7e\xc5\xb9\x29\xb2\x8a\x34\x03\x68\xab\x42\xc6\xa6\x50\x80\x8f\x9e\xeb\x7f\xe2\x01\xbd\x34\x93\xd1\x26\x05\xb3\x44\x41\xc3\x81\xb6\x28\x04\x5c\x68\x2d\x42\x1b\x14\x4d\xf9\x39\x40\x2b\x5a\x21\x9b\xa4\x21\x17\x45\xb4\x2d\x51\xa7\xc1\x7d\xcf\x31\xda\x95\xd8\xb7\x81\xa2\xf9\x75\xde\x88\x40\x24\x9a\x02\xb4\x13\x28\x62\x58\xf8\xc1\x7f\x00\x35\xb6\x77\x67\xe1\x31\x16\x1b\x52\xb6\x2b\x6c\xf6\x38\xf4\x7c\x34\x26\x61\xb1\xbd\xe3\xb0\x8b\x00\x2c\x36\x72\x1c\x76\x19\x80\x45\xbe\xa1\x0e\xc7\x1f\x05\x8e\x3c\xc6\x2b\xbc\x28\xbe\xe4\x3c\xdc\x5e\xec\x06\x04\xdb\xa0\xe3\x0f\x1e\x86\xd0\x76\x90\x38\x46\x3b\x0e\xb2\x41\xf0\x38\x71\xbc\x7a\x44\x33\x2f\x63\x9f\xf3\xe5\x31\x0f\xcc\xbe\x15\x3e\xc4\x65\xe0\x69\xb6\xcd\xd3\x73\x49\x85\x51\x64\x93\x98\x09\xea\xf7\x6f\x1c\xaf\x7a\x55\x1d\xe9\x68\xc0\x37\xc6\x6e\x2f\x2a\xc8\xc8\xe8\xf8\x64\x43\x49\x9b\xe4\x34\xda\x33\x21\x17\x42\xd0\x32\x22\xab\x7a\xd9\x24\xef\xe3\xa1\xf8\xf7\x20\xaf\x24\xc0\x18\x9c\x77\xff\x9e\x15\x9f\x32\xfe\x7d\x3b\xf8\x4b\x76\xce\xde\x0d\xcd\xef\xe1\xbf\x54\x79\x52\x0c\xc1\x3d\x08\xd0\xeb\x8c\xf5\xea\x44\xe1\x44\xb3\xc9\xe3\x7c\xc9\x9c\xdb\xb5\x0a\x04\x9b\x4e\xa7\x6b\x32\x3c\x4c\xc6\xb6\x0e\x9d\x60\x6b\x1b\xbf\x0d\x69\xd3\xd1\xdb\xb6\x5f\x5d\x02\xbb\xd6\x51\xdd\xc9\xc5\xf4\xbc\x4c\x36\xcb\x35\x0e\x76\x94\xf7\x10\xe4\xfd\x82\x61\xf2\x24\x62\xa0\x75\x93\xc9\x74\x3e\x59\x6e\xbd\x26\x20\x3e\x52\xc1\xeb\x7b\x09\x3c\x7c\x48\x5d\x3e\x58\xeb\xb2\xf9\xe9\xcb\x80\xc7\xb2\x0e\x6c\x40\x12\x0f\xb3\xae\xc4\x76\x06\xef\x47\x43\xf2\x03\xdc\x9a\x79\xbf\xa3\xc9\xe9\x0b\x8a\xce\x8f\x45\xe0\x21\xba\x15\x70\xc8\xd3\x94\x87\x28\xb1\x2a\xbe\xc3\x70\x2a\x8f\x35\xbf\x2b\x11\x89\xef\xec\x63\x92\x17\xcf\xac\x06\xfc\x1c\x24\xb2\x80\xd9\x33\xa6\xf7\x59\x21\x63\xa3\x9f\xa3\xbc\xc9\x0e\x2d\x35\xa2\x95\x7b\x97\x64\xed\x86\x40\xae\x61\x90\xb4\x24\x87\x0b\x37\xd3\x21\x7c\x23\x1e\x00\xce\x66\xda\x82\x8d\x4b\x54\x1b\x92\xe8\x8b\x27\x61\xec\x26\xe8\xbb\x45\xd1\x48\xed\xf2\x23\x92\x79\x30\xe1\xda\xa5\x6f\x06\xe7\x0c\xb7\xe6\x32\x82\x2d\x29\x8a\x41\x34\xa9\x07\x19\xfb\xd8\x64\x9c\xe1\xae\xe6\x7a\x54\x76\x41\xb4\x57\x4b\x3e\xc8\x2f\x73\xc4\xa5\x79\xfc\x3d\xbf\x84\x21\x25\xcf\xc3\x37\x9f\x26\x7c\x32\xab\xdf\xea\xbe\x87\x28\xd2\xc1\xd3\x6b\x1b\xea\x09\x07\x98\x65\x4c\x39\xea\x6a\x54\x1e\x8b\xaf\x36\x1e\x2f\xd9\xb0\x6a\xf6\x81\xb1\x56\x1c\x66\x78\x34\x0f\x4f\x20\xa8\x5e\xc7\x73\x8f\x78\x29\xba\x3a\xb2\x16\x5f\xbc\xcc\x3d\x6e\xcc\x0a\x62\x03\xb9\x75\x8f\x52\xcd\x79\x50\xa7\xbe\xc4\x43\xd4\xc8\xd9\x63\x68\xe3\x8e\x41\xbe\x55\x94\x09\x79\x43\xd9\x9b\x3b\x1c\xf8\x86\x86\xa4\x47\x68\xdf\x7e\x2c\x63\x70\x87\xfb\xd9\x70\x3f\x1f\xee\x17\xc3\x88\x15\x45\xac\x2c\x62\x85\x11\x2b\x8d\x58\x71\xb4\x5f\x84\x57\x14\x15\x50\x38\xc7\x01\x85\xd1\x78\xed\xde\x17\xd9\x8f\x07\x62\x0b\x9d\xf5\xa8\xff\x98\xea\x3f\x66\xfa\x8f\xb9\xfe\x63\xa1\xfe\x88\x4c\xb3\xc8\xb4\x8b\x4c\xc3\xc8\xb4\x8c\x4c\xd3\xc8\xb4\x65\x4d\x23\xd3\x65\x64\xfa\x8c\x4c\xa7\x91\xe9\x35\x32\xdd\x46\xb6\xdf\xc8\x76\x1c\xd9\x9e\x23\xdb\x75\x64\xfb\x8e\x6c\xe7\x11\xb8\xd8\x14\x0c\xb7\x54\x73\x6d\xb9\x5c\x5e\x05\xc7\x85\x20\x22\x29\x0c\xd6\x4b\x87\x3e\x8f\xc5\xd5\xa3\xb1\xc7\x23\xc0\x22\x8f\xc9\x96\x6b\x70\x68\x04\x8b\x22\x8a\x5b\x76\xe4\xc0\x6c\x2e\xe6\x6c\xee\xcd\x84\x9e\x08\x35\x51\x1a\xb4\x80\xd4\x8f\x43\xd4\xcf\x3c\x19\x02\x11\x12\x7a\xb0\x18\x60\xb9\x45\x94\x08\x23\x5a\x9a\x0b\x9f\xfa\x25\xa7\x5e\xf0\x1e\x14\x4e\xf9\xaa\x2b\x45\x01\x4b\x05\xc5\x52\x32\xe0\x92\xdb\x4c\x8c\x83\xd3\x01\x7d\x89\x47\x5e\x2a\xd8\x71\x71\x6d\xfd\x55\x71\x07\x94\x72\xdb\x75\x32\x66\x6b\x10\x0f\x04\x6f\xa2\x82\x87\xdd\x13\x4b\x18\x68\xb9\xd0\x3f\x95\x8a\x4d\xbd\x09\x38\xbb\xaa\x0b\x16\xef\x0f\x0c\x8d\x5c\x25\x96\x0b\x46\xdd\xc3\x45\x76\x00\x46\xc2\x96\xad\xeb\x55\xf1\xca\xbb\x97\xc7\xf8\xc4\x5d\xd7\x61\x24\x6e\xf4\x99\x4b\x2d\x93\xec\x40\x59\x8f\xed\xee\x31\x9b\x5e\x23\xe1\x05\xf0\x4d\x5a\x79\x5f\x42\xda\x60\xfe\x5b\x55\x09\x37\x1a\xd6\x89\x02\x55\x29\x63\x5a\x60\xad\x2c\x51\xd5\x2a\x2a\x05\xd6\xab\x22\x05\x70\x2c\x3f\x57\xc9\xe9\xf2\x79\xcf\x4c\xb2\xb8\xee\xc2\x83\xa0\x79\x91\xa6\x8b\x7f\x7a\xf1\xdd\x50\x7c\x3f\xcd\x54\x28\xc0\xf3\xe9\x44\x03\x9a\x0a\x4d\x71\x72\x12\xf1\x43\xff\xf4\x20\x6d\x8d\x02\x3d\x9c\xf9\x2d\x12\xb0\x00\xc8\xe2\x53\x95\x8b\x6b\xa8\x8e\xff\x75\x4d\x9c\x4a\x75\xaf\x53\xfb\x5b\x8f\x8b\x78\x15\xab\xe6\xf5\x79\xbb\x65\x1f\xb4\xa6\xf9\x76\xb9\x98\xa6\xba\xb9\xaa\x44\xcd\x37\xf3\xd9\x64\xab\x9a\xf3\x33\x6d\xd3\x76\xbc\x8c\x1f\x77\xba\x2d\xaf\x41\x0d\x67\xf3\xc9\x62\xa5\x1a\xaa\xf3\x3e\x5d\xf7\x98\x2c\xd2\xe9\x46\xb7\x55\x95\x6e\xf3\xc5\x62\x3e\x36\xfd\xa6\xc9\xf1\xc5\x56\x25\xab\xd9\x6c\x36\xd1\xad\x65\x9d\xdb\xf8\x71\x36\x9d\x4f\x67\xd7\x68\xf3\x82\x19\x26\xdc\x16\x4f\x1d\x0d\x1b\x6d\x03\x85\xd0\x87\xd5\xfc\x64\xa0\x9a\x9b\x3e\x50\xba\xdb\xc5\xe9\xa3\x44\xe8\xb2\xd5\x87\xdd\x8e\xb3\xc9\x66\x2a\x10\x0a\xfe\x12\xd8\x56\x59\xba\x53\xe4\x01\x46\xfb\x80\xc9\x8e\x81\x66\x02\x95\xe6\x78\x70\xee\x25\x00\x2a\x88\x70\xb7\xcc\xb6\x9b\xb9\x40\xa8\x64\x40\xc0\x4c\x98\x57\x9a\x49\x7c\x8e\x30\x7c\xd0\x6c\xb6\x59\x6d\x98\x4e\x88\x3b\x3b\x72\x1b\x46\xaf\x14\x7a\x05\x5b\x19\x43\xf0\xc4\xaf\xce\xb2\xc5\x0e\xb8\x65\xf0\x3a\x32\x70\xc8\xce\xc5\xb0\x2c\xa0\x39\x89\x29\x5b\x72\x2e\x06\x02\x90\xff\x97\xfd\x5d\x8a\xbf\x6d\x3b\x05\xca\x24\x2b\x02\x54\xcf\x47\x71\x2d\xc2\xdc\xab\x93\x47\x49\x7c\xf5\xac\xed\x8d\x09\x7e\x63\x48\x14\x48\x57\x1b\xc3\x2a\xcc\xe2\xd7\x68\x2e\xbc\xeb\x70\xe3\xe7\x22\xa7\x3d\x77\x8d\x54\x1e\x80\xcd\xad\x43\x29\x11\xb3\x82\x6b\xda\x3a\x7a\xce\xc0\x6b\xda\x0c\xd3\xf4\x42\xbb\xf7\xac\xd2\xbf\xcd\x6d\x4c\x8b\x1c\x4c\x8b\x99\x48\x0b\x70\x0a\x3b\xe0\xb8\x8a\x32\x69\xc4\x32\xae\x1d\xe2\x45\x4c\x7a\xbc\x59\x52\x49\x30\xbc\xc2\xcb\x02\xd3\x20\x2b\x98\x33\x5a\xe7\xf5\x9a\x5a\xab\x51\xf7\x2e\xdd\xe3\x47\x3e\x78\x78\x93\x6e\x28\xfe\x4e\x93\x26\x19\xb1\x56\x0c\x90\x7d\xfb\xa9\x3b\xef\xea\x7e\xef\x3e\x2b\x4e\x84\xc2\xc9\x4f\xd0\x81\x5c\x8c\xf3\x63\x2e\xae\xbc\xd4\x07\x60\x03\x57\xec\xc3\x2a\x68\x01\xc0\xf5\x3a\x6d\x1c\xb9\x5a\x0e\x80\xe3\x26\x6c\x3b\x36\xe1\xcb\x68\x6e\xf5\x5f\x4b\x1c\x6a\xbf\x45\x3c\x38\x3d\x15\x3c\x76\x6c\xbb\xcf\x8b\x14\xdc\xe7\x63\x1a\x1f\xa8\x28\x61\x85\x37\x13\x00\xa0\xca\x94\x00\x4a\xa4\x1f\x00\x0a\x94\x4b\xe0\x7e\xd4\x3a\x17\xf7\x3b\xb6\x31\x38\x63\xbd\x2e\xf5\x0e\x0f\xee\x99\x28\x8f\xc8\xe0\x9b\x1f\xfe\x26\xf2\x61\xfc\x2d\x8e\xff\x25\xfe\x81\xad\x64\x06\x9e\x7d\xdf\x33\xfd\xaa\x21\x8a\xe8\x74\x2e\x0a\xe5\x74\xb8\xd3\x6e\xec\xcd\xbb\xd8\x57\x5a\xfd\xcd\xa9\x27\x2a\x90\x92\x23\xc0\x98\x22\x23\x38\x5e\x40\x14\x82\xa1\xb0\x04\x98\x03\x91\x38\x20\x14\x8e\xa8\x07\x92\x00\xb3\x49\x0e\x6b\xb2\xe5\x9d\xd4\xd6\x91\x49\x90\xf0\xc0\xda\x50\x40\x88\x96\x61\xb5\xa1\x80\x20\x40\x83\xb8\xee\x0c\x84\x1e\xfd\x70\x65\x3a\xc0\xcf\x04\xc2\x8e\x37\xbc\x4d\x17\x58\x6f\xdb\xf3\x33\xfc\x39\x3b\x16\xe5\xf0\xcf\xe5\x31\xd9\x96\xc3\x3f\x96\x47\xa6\x45\x49\x3d\x7c\xf7\xc7\xf2\x5c\xe5\x59\x35\xf8\x4b\xf6\xf9\x9d\xcd\xdc\x20\x70\x99\x15\x85\x7d\x29\x0c\x66\xce\xfa\xc1\xd7\x24\xed\x68\x2c\x27\xf3\x59\x46\x79\xe3\xab\xdd\x64\x37\xf3\x37\x6e\xae\x8c\xc4\x7e\xa8\x43\x6e\xd5\x14\x21\x9d\x82\xdd\x20\x70\x8f\x3a\x3f\xd6\x59\xc3\xd6\x3e\xbe\x31\xc2\xfe\x07\xec\xa3\x46\x93\xf9\xc3\xba\x37\x24\x27\x78\x00\x89\x86\xd9\x46\xc4\xbe\x17\x32\x73\xa1\xeb\xde\xf8\x92\xb7\xc8\xb1\xe1\xae\x6c\xba\x8b\x95\x58\x9f\xd1\xc7\x19\xec\x76\xda\x6b\xff\xf6\x33\xe3\x93\xbc\xc6\xfc\xa4\x2e\x33\x17\x85\x2c\xe4\x56\x4e\x95\xf1\xdf\x94\xfc\xe6\xfc\x1f\xb1\x1d\xb7\xdd\x6e\x09\xa9\xb2\xb1\x0c\x1c\xad\x89\x89\x6d\x5f\x67\x5b\xc6\xb1\xbb\xac\xb9\xa0\xc9\x27\x04\xdc\xa8\x47\xdd\xb2\x15\x8f\x37\xab\xb7\x15\x3f\xd5\xe6\xb7\xa0\xf9\x7e\xa4\x62\xc8\x74\x06\xbd\x83\xd1\xd7\x27\x09\x76\x8d\xf8\x04\x4c\x72\x90\x39\x23\xb8\x18\x8f\xad\x0c\x14\x0c\xd8\xdd\x92\x20\x62\x2b\x2b\xec\xc4\xd8\xbe\x54\xf9\x5c\x38\x0e\x7e\x83\xd5\x6a\x42\x36\x58\x2d\x03\x0d\xc6\x93\x38\x26\x5b\x8c\xc7\xb2\x89\xad\x18\xed\x8a\x73\x9e\xbe\xd9\x68\xa3\xaa\xfc\x7c\x71\xe0\x46\xb0\xa9\xf4\x4b\x79\x09\x27\xa1\x18\x7d\xa9\x47\xe3\xa1\xf8\xab\x3e\xe8\xbf\x0e\xa9\xfe\xab\x78\xd1\x7f\x31\xb8\x89\x81\x9b\x18\xb8\x89\x81\x9b\x18\xb8\xa9\x81\x9b\x1a\xb8\xa9\x81\x9b\x1a\xb8\x99\x81\x9b\x19\xb8\x99\x81\x9b\x19\xb8\xb9\x81\x9b\x1b\xb8\xb9\x81\x9b\x1b\xb8\x85\x81\x5b\x18\xb8\x85\x81\x5b\x18\xb8\xa5\x81\x5b\x1a\xb8\xa5\x81\x5b\x1a\xb8\x47\x03\xf7\x68\xe0\x1e\x0d\xdc\xa3\x81\x5b\x19\xb8\x95\x81\x5b\x19\xb8\x95\x81\x1b\xc7\x96\xd1\xb1\xe5\x74\x6c\x59\x1d\x5b\x58\x20\x14\x20\x15\x20\x16\x2b\x97\xb1\x15\xcc\xd8\x4a\x66\x6c\x45\x33\x9e\x10\xb7\xc8\xb9\xae\xfa\xfb\xd5\xad\xea\x87\x35\xc6\xea\x84\x95\xba\x95\xab\x95\x9c\x95\x8d\xe5\xbe\xe5\xaf\xe5\x20\xe0\x11\x60\x81\x18\x21\xf8\xbc\xb8\x82\x52\x7b\xb8\x61\x4b\xc7\x7a\x6e\x8e\xa3\x85\xfc\xbf\x25\xa8\x8d\x55\xed\xe3\x34\x9a\xaa\xff\xb3\xb5\x2b\xb3\x0e\xd8\xb2\x47\x55\xb6\x58\x10\xe8\x96\xaa\x72\xfe\x48\x60\x5b\xe8\x4a\x40\xdd\x5c\x95\xcd\x28\xe2\x66\xaa\x72\x4a\xd1\x36\x55\x95\x13\x40\x9b\x61\x00\x45\x9b\xe6\x03\x45\x9a\xf0\x7e\x18\xff\x94\xb4\x21\xff\x64\xd5\x58\x55\x91\x4c\x94\x20\xb1\x02\x21\x39\x29\x40\x56\x0a\x02\xb2\x53\x54\x3c\xaa\x0a\x92\xa7\x02\x62\xa9\x20\x48\xc6\x0a\x88\x85\x86\xc0\xb4\xcf\x55\x05\xc9\x62\x01\x31\x53\x10\x24\x9f\x05\xc4\x54\x41\x4c\x30\xe5\x86\x65\x41\xca\x35\xe7\x82\x84\x6b\xbe\xc9\xd5\xda\xd4\xd4\x7b\x2e\x10\x39\xd7\x5c\x79\xf0\x9a\xb1\xac\x09\x88\x83\x43\xc4\x12\x22\x20\x0d\x06\xb1\x92\x00\xae\x30\x58\xf9\xa3\x2c\x0f\xc8\x82\x01\x2c\x25\x40\x40\x14\x0c\x60\xa1\x00\x30\xd5\x73\x59\x1e\x10\x04\x03\x98\x49\x80\x80\x1c\x18\xc0\x54\x02\x4c\x30\xcd\x9a\x51\x41\x9a\x15\xbf\x82\x24\x2b\x6e\x39\x32\x90\xa7\xc6\x5c\x0a\xce\x66\x02\x14\x86\x06\x19\x3b\x20\xa4\x54\x34\x68\xec\x80\x92\xe2\x51\xa0\x2b\x07\x12\xca\x49\x01\x3c\x3a\x00\xa4\xc0\x14\xe4\xd2\x81\x24\x25\xa7\x20\x17\x2e\xa4\x3f\xd6\xb9\x03\x40\xca\x52\x41\xce\x1c\x48\x52\xa8\x0a\x72\xea\x40\x4e\xfc\x91\x22\x11\xb4\x8c\xd4\x95\x44\xcb\x40\xe3\xde\x5b\x5b\xae\x33\x64\xdd\x1d\xeb\xd0\x58\x97\xc5\x3a\x25\xd6\xed\xb0\x8e\x85\x75\x1d\xac\x73\x00\xac\x3f\x30\xee\xc2\x76\x7b\x46\x4e\x96\x62\x23\x27\x9a\x05\x8d\x9c\xc0\x1f\x34\x72\x9c\x0e\x6c\xe4\x38\x95\x41\x23\xc7\x07\x13\x34\x72\x7c\xcc\xd8\xc8\x71\x8e\x04\x8d\x1c\x67\x5c\xd0\xc8\x71\xfe\x62\x23\xc7\xb9\x1f\x34\x72\x7c\xa8\x21\x23\xc7\xea\x42\x46\xce\x54\x85\x8d\x9c\x01\x09\x1b\x39\x0d\xe2\x19\x39\x5d\x11\x36\x72\x1a\x22\x6c\xe4\x34\x84\x67\xe4\x74\x45\xd8\xc8\x69\x88\xb0\x91\xd3\x10\x9e\x91\xd3\x15\x61\x23\x67\xf8\x12\x32\x72\x1a\xc0\x37\x72\xa2\x86\x34\x72\xa6\x26\x68\xe4\x0c\x44\xd0\xc8\x69\x08\x6c\xe4\x74\x79\xd0\xc8\x69\x80\xa0\x91\xd3\x00\xd8\xc8\xe9\xf2\xa0\x91\xd3\x00\x41\x23\xa7\x01\xb0\x91\xd3\xe5\x41\x23\x67\xd8\x11\x30\x72\xba\xde\x33\x72\xac\xa2\xcb\xc8\x01\x90\x2e\x23\x07\x40\xbb\x8c\x9c\x05\x0d\x18\x39\x0b\xd0\x65\xe4\x2c\x64\x97\x91\xb3\x90\x01\x23\x67\x01\xba\x8c\x9c\x85\xec\x32\x72\x16\x32\x60\xe4\x2c\x40\x97\x91\x03\xfc\x6d\x37\x72\x16\x10\x1b\xb9\xd6\xad\x0c\xf8\xa1\x6f\x3f\xe5\xed\xc7\xba\xfd\x1c\xb7\x1f\xdc\xf6\x93\xda\x7e\x34\xdb\xcf\x62\xfb\xe1\x0b\x3e\x6c\xc1\x77\xab\xf8\x2c\xf5\xac\x9c\x2c\xc5\x56\x4e\x34\x0b\x5a\x39\x81\x3f\x68\xe5\x38\x1d\xd8\xca\x71\x2a\x83\x56\x8e\x0f\x26\x68\xe5\xf8\x98\xb1\x95\xe3\x1c\x09\x5a\x39\xce\xb8\xa0\x95\xe3\xfc\xc5\x56\x8e\x73\x3f\x68\xe5\xf8\x50\x43\x56\x8e\xd5\x85\xac\x9c\xa9\x0a\x5b\x39\x03\x12\xb6\x72\x1a\xc4\xb3\x72\xba\x22\x6c\xe5\x34\x44\xd8\xca\x69\x08\xcf\xca\xe9\x8a\xb0\x95\xd3\x10\x61\x2b\xa7\x21\x3c\x2b\xa7\x2b\xc2\x56\xce\xf0\x25\x64\xe5\x34\x80\x6f\xe5\x44\x0d\x69\xe5\x4c\x4d\xd0\xca\x19\x88\xa0\x95\xd3\x10\xd8\xca\xe9\xf2\xa0\x95\xd3\x00\x41\x2b\xa7\x01\xb0\x95\xd3\xe5\x41\x2b\xa7\x01\x82\x56\x4e\x03\x60\x2b\xa7\xcb\x83\x56\xce\xb0\x23\x60\xe5\x74\xbd\x67\xe5\x58\x45\x97\x95\x03\x20\x5d\x56\x0e\x80\x76\x59\x39\x0b\x1a\xb0\x72\x16\xa0\xcb\xca\x59\xc8\x2e\x2b\x67\x21\x03\x56\xce\x02\x74\x59\x39\x0b\xd9\x65\xe5\x2c\x64\xc0\xca\x59\x80\x2e\x2b\x07\xf8\xdb\x6e\xe5\x2c\x60\x0f\x2b\x07\xf6\xdf\xe1\x2e\xb6\xdd\xa7\xb6\x3b\xd1\x76\xaf\xd9\xee\x26\xdb\xfd\x62\xbb\x23\x6c\xf7\x7c\xed\xae\x2e\xd8\xb4\x05\x7b\xb2\x72\xcb\x15\x9b\x39\x59\x8a\xcd\x9c\x68\x16\x34\x73\x02\x7f\xd0\xcc\x71\x3a\xb0\x99\xe3\x54\x06\xcd\x1c\x1f\x4c\xd0\xcc\xf1\x31\x63\x33\xc7\x39\x12\x34\x73\x9c\x71\x41\x33\xc7\xf9\x8b\xcd\x1c\xe7\x7e\xd0\xcc\xf1\xa1\x86\xcc\x1c\xab\x0b\x99\x39\x53\x15\x36\x73\x06\x24\x6c\xe6\x34\x88\x67\xe6\x74\x45\xd8\xcc\x69\x88\xb0\x99\xd3\x10\x9e\x99\xd3\x15\x61\x33\xa7\x21\xc2\x66\x4e\x43\x78\x66\x4e\x57\x84\xcd\x9c\xe1\x4b\xc8\xcc\x69\x00\xdf\xcc\x89\x1a\xd2\xcc\x99\x9a\xa0\x99\x33\x10\x41\x33\xa7\x21\xb0\x99\xd3\xe5\x41\x33\xa7\x01\x82\x66\x4e\x03\x60\x33\xa7\xcb\x83\x66\x4e\x03\x04\xcd\x9c\x06\xc0\x66\x4e\x97\x07\xcd\x9c\x61\x47\xc0\xcc\xe9\x7a\xcf\xcc\xb1\x8a\x2e\x33\x07\x40\xba\xcc\x1c\x00\xed\x32\x73\x16\x34\x60\xe6\x2c\x40\x97\x99\xb3\x90\x5d\x66\xce\x42\x06\xcc\x9c\x05\xe8\x32\x73\x16\xb2\xcb\xcc\x59\xc8\x80\x99\xb3\x00\x5d\x66\x0e\xf0\xb7\xdd\xcc\x59\x40\xcf\xcc\xa9\x54\xe2\x6d\x0f\xbd\xa8\xb7\x6e\xcc\x69\x32\x0f\x0d\x7c\x04\x67\x79\x2a\x72\x85\x17\x6d\x4d\x00\xd6\x1a\xc7\x61\x37\x7b\x22\x34\x5b\x74\x0e\x6e\x13\xa1\xcb\x45\x44\xf8\xa1\x6c\xf3\x2c\x52\xc5\x3f\x37\xd5\xb3\xc9\x4e\xfe\xdc\xf0\x7b\x72\xa8\x88\x07\x03\xa1\x22\xd3\x30\xf5\x1b\xa6\x7e\x43\x1b\x02\xf2\x18\x0e\xbf\x40\x77\xbf\x18\x83\x02\xb7\x7e\xd2\x34\x25\x46\x80\xef\x8e\xc9\xf1\xa2\xc8\xc1\x09\x89\x45\xc9\xe6\x83\xc6\xf6\xb4\xcb\x2b\x1d\x86\x07\x46\xcd\xe4\x22\x32\xe8\x77\xc1\x89\x6a\xb7\x2e\x88\xb2\xb5\xe7\xb4\x67\xcf\x69\xff\x9e\x53\x90\x34\xff\x29\xbe\x42\xe1\x7d\x10\xff\x85\xf5\x24\xb7\x06\x51\x40\xdb\xc5\x15\x47\x95\xe4\x7e\x5b\xf2\x2c\x90\x75\x96\x12\x3a\x06\x2b\x3d\x6d\x83\x95\x9e\xde\x91\x68\xd3\x36\xb4\x54\x25\xa1\x95\x73\x33\x27\x4c\x7a\x7e\x3a\x37\x3f\x86\xa2\x86\x67\xeb\xfc\xd1\xd9\x3a\x7f\x70\x04\xce\xb4\x05\x27\x51\x07\x46\xf6\x06\xd4\x5b\x2a\xdc\xe7\xa7\xd4\xda\x32\xb1\x3c\xab\x9b\x2a\x3f\x01\xe2\x9e\x8e\xcd\x5e\x2a\xdc\xfb\x32\x4d\x1f\x28\x55\x59\xf1\x7f\xba\xbd\x08\x50\xb7\xad\x83\xe1\xef\x22\xb0\x4a\x2e\xb6\x03\x56\xf6\xd3\x96\x27\x60\xff\xfd\x8f\x7c\x71\xfe\xd9\xbb\x62\xe7\xbe\x80\xb1\xe5\x59\x7e\x8f\x6b\xe9\xfa\x8b\x18\x32\xfd\xa8\x83\x83\x65\xa8\x1f\x78\xb8\x09\x77\x56\x14\x10\xb3\xbf\x48\x46\xfa\x7e\xa0\xb7\x56\xe2\x1a\x2b\x42\x5c\x63\x45\x15\xc4\xe6\xd5\x58\x25\x0b\x60\x53\xc5\xc4\x3a\x4e\xd4\x28\x6c\x44\x0d\xc6\xe6\x99\x13\xa2\x06\x63\x23\xdf\xd4\x90\x12\x27\xd5\xc4\xb2\x48\xdd\x6c\x0e\x40\xed\x7b\x40\x39\x20\x60\x6a\x51\x8a\xf9\xec\xb2\xb2\x1d\x13\x35\xa8\xec\x91\xff\xa3\xb4\x44\xdd\x4d\xa1\xd4\x04\x57\x01\x3d\xc1\x55\x40\x51\x82\x08\xfd\x2a\xa0\x2a\x01\x84\xba\x9c\x52\x16\xa2\x4a\xcb\x97\xa8\xf2\x10\xfa\xfa\x42\x54\x79\x08\x29\xe6\xaa\xab\x3e\x41\x8d\x71\xae\xff\x84\x55\xa6\x07\x98\x0b\xd3\xa9\x34\x2e\x53\x3b\x70\x91\x23\x8b\xb3\xd5\x76\x41\xa9\x0d\xbf\x84\x44\xe9\x8c\x53\x0e\x14\xc6\x29\x07\xda\x42\xe3\xd9\x07\xf0\xec\x49\x3c\xa2\x90\xd2\x10\x5c\xae\xa5\x89\xcb\x5d\x3c\xbe\x62\xe0\x72\x17\x0f\xc9\x38\x79\x5f\x2b\xa8\x12\xf6\x0e\x57\x58\x1f\xba\x60\x00\x40\xa7\x26\x00\xb6\xb5\x61\xa1\x86\xb2\x9d\x65\xd3\xdd\x94\xd2\x01\x75\x75\x8c\x52\x03\x5c\x05\x34\x01\x57\x01\x65\x08\x22\xf4\xab\x80\x4a\x04\x10\xea\x72\x4a\x31\x88\x2a\x2d\x53\xa2\xca\x43\xe8\x6b\x08\x51\xe5\x21\x24\x8d\x8d\xbe\x05\x1b\xd0\x13\xe7\x76\x5e\x58\x55\x7a\x80\xb9\x30\x9d\x0a\xe3\x32\xb5\x03\x17\x39\xb2\x64\x37\xd9\x6e\x29\xb5\x91\x37\x04\x29\xad\x41\x35\x40\x69\x50\x0d\xd0\x99\x10\x36\xaf\x06\x68\x0c\x8d\x4d\x15\x53\xfa\xe2\xd7\x68\xe9\xfa\x35\x18\x9b\xaf\x2c\x7e\x0d\xc6\x46\x32\x54\x5e\xb2\x0c\xaa\x0a\xbc\x78\x19\xd6\x94\x6e\x28\x07\xa4\x53\x4f\x1c\x56\xb6\x63\x22\xfd\x92\xcd\x76\x6b\xb4\x04\xa4\x5b\xb9\x80\x80\xe4\x28\x1e\x7f\x6f\xef\x06\x7c\x71\xc2\xf8\x65\xfa\xc9\x41\x72\x4c\x07\xef\xed\x16\xc4\x72\xb1\x14\xdb\xfd\x1e\xd6\xe0\x0e\x85\x08\x71\x06\xf7\x0f\xd4\xfd\x44\xfe\xda\xb0\x29\x95\xd7\x7a\x78\x11\xa7\x80\x41\x88\xf4\xc5\xe2\xa2\xc2\x26\xa9\xe8\x54\x28\xfe\xc8\x9e\xd5\xa7\xac\x77\xe7\x34\x00\x48\x7d\x2f\x11\x40\xfe\x67\x1f\x01\xe4\x7f\xff\xb5\x75\x97\xf6\xe9\xae\x0d\x08\x7c\x1a\x92\x37\xec\xe9\x76\xde\xd7\x70\x98\x37\xe4\x47\x25\xdc\x7b\x08\x12\x47\x7e\x30\xdf\xda\xd2\xb2\xf3\xd6\x96\x96\xc7\x77\x53\x7b\x73\x4b\x2b\x0d\xd8\xf2\x82\x6e\x25\xde\xc4\x69\x70\xa3\xf4\x36\x46\xdf\xd6\x10\xf0\xf9\xb6\x86\x80\xcd\x77\x92\x7a\x6b\x43\xc0\x64\x70\xab\xd6\xb9\x15\xda\x8b\xc9\x7a\x95\xb5\x48\xda\x26\xad\x4f\xc0\xed\x0d\xa9\x1e\x6f\x19\xb2\xdb\x10\x3d\x1e\x1e\x5f\xed\x63\xb7\xf6\x58\x36\xf6\xf3\x22\x81\xa7\x6b\xd5\xa3\xb6\xee\x95\x3b\xb0\x80\xe3\xb6\x81\x04\x28\x3c\x65\x09\x95\xc1\xcc\xc9\x9c\x86\x32\x3e\x11\x39\x06\xe6\xfc\xdf\x55\xbe\xed\xd9\x27\xbb\x96\x4b\xd3\x1c\x25\x61\xe1\xd7\xeb\xfb\x3d\x7b\xfc\x9a\xe4\x75\xde\x5b\xd1\x43\xea\x49\x69\x9d\x55\x66\x26\xae\x53\x1a\x6e\xea\xfd\xef\xbf\xad\xd6\xed\x6f\x53\xf3\xd7\xd6\x7e\x46\x8f\xe2\x3b\x3d\x33\x1f\xe0\xe7\xa0\x18\xd5\x2b\xad\x3f\x1d\xce\x45\x93\x9f\xf8\xe5\x7c\x55\xc0\x85\xf7\x73\xe8\x9d\x68\xd1\xa7\x4c\x73\xe5\xbf\x88\xed\x97\x9b\xb1\x7e\xb3\xbc\x72\xac\x8c\xbf\xe2\x4d\xde\x0f\x15\xac\x5c\xba\x37\x42\xbb\x33\xfa\xcd\xe7\xf3\x6b\xc4\x13\x08\xf0\x6d\xe4\x86\x39\x19\xe1\x99\x60\x2e\x51\x82\x4c\x63\x0b\x36\x0c\x9e\x35\xe8\xe6\x4e\x43\x89\xde\x6c\x69\x7e\x48\x5e\x32\x7d\x47\xb6\xd7\x7d\xd3\xb6\x0b\xbf\xbc\x2d\xff\x7f\x78\x8f\x37\x5e\xd2\x57\x7e\x83\xb0\x44\x7a\x39\xfb\xc6\x6e\x59\xc1\x14\x71\x83\x68\x3c\xaf\x87\x3e\x41\x1e\x0c\x4a\x46\xd7\x8e\xaf\x0d\xcf\x5b\x20\x71\x55\x41\xa9\x31\xc4\xc6\xd3\xe5\x24\xbb\x6c\x65\xf4\x98\xbc\xd8\xdc\xc5\xc8\x21\xbf\xbd\xfc\xa8\x2b\xc6\xf1\x64\x38\x5e\xce\x87\x93\xe9\x74\x18\x2d\x6e\x92\x48\x2b\x22\x34\x18\xf9\x4a\x3e\x53\xed\x6d\xb6\x17\x2f\x46\xe8\x4c\x3d\xfc\xc5\xe9\x92\xbf\x41\xde\x7c\x7d\x1a\xa3\x46\xdc\x0d\x17\x33\x3c\xd0\xd0\xeb\xc3\x3c\x5c\xdf\xb7\x8d\x7d\xf5\x7f\xe8\x96\x57\xcc\xab\xe0\x09\xf7\x7e\x1e\x6a\x9b\x66\x41\x07\xee\x94\x55\xe9\x44\x8e\x25\x3f\x3d\xe5\x39\xa3\xa8\xbb\xdb\x3c\x37\x84\x1d\xa6\xce\xcd\xe9\x22\xea\xf9\x5e\x3e\x7e\x61\x9e\xf8\x4a\xd2\xa0\xdc\x0c\xa7\xd9\xa7\x7c\x9b\x8d\x4e\xf9\x97\xac\x18\x89\x2c\x9c\x4f\xf1\xc3\x05\xe0\x4f\x93\x26\x73\xac\x06\x7f\x35\xcd\x29\xe0\x10\xe2\x29\x35\xb6\x28\x25\x85\x53\x75\x60\xb4\x33\xda\xe0\x8a\xc3\x97\xa8\x2b\xc6\x1f\x49\x99\xd4\x07\xaf\x23\xb2\x06\xf5\x48\xc2\xc8\xae\x4d\x95\x4b\x43\x1c\xa6\xa1\x78\x09\xd1\xe0\xd6\xd0\x34\xb8\x30\x0e\x0d\xc5\x8b\x43\xc3\x6c\x21\x6e\x7d\x0b\x11\xcb\x87\xf8\xfd\xcf\xd1\x6b\x24\xcc\xd9\x30\xd2\xd6\x8b\xb8\xb6\x8b\xd3\x87\x76\x66\xd3\x93\x38\x07\xc2\x8f\xb1\x98\xe5\x6f\xf8\xcd\x2d\x9c\x28\xe7\xca\x2f\x91\x5d\x30\xf6\x9e\x8a\x56\xfa\x7e\x2a\x73\x99\x85\x4d\xf6\xe6\xfb\x21\xb2\x42\xa5\x3d\xa2\xea\x0d\x65\x94\x15\xb7\xd5\x04\x06\xeb\xd7\xf8\xb9\x39\x01\x83\x66\xd2\xb5\x71\xee\xc1\x4f\x2c\x87\x3e\x60\xe6\x7f\xb0\x62\x00\x58\x46\x56\x4e\x8a\x14\x8f\xb6\xf6\x8c\x4e\xfd\x59\x4b\x66\xa9\xa5\x19\xae\x7a\xfe\xd0\x4e\xd8\x07\x8f\x52\x2a\x81\x94\x8a\x21\x3a\x11\xde\x24\x58\x20\x29\xfe\xd3\xd5\xb2\x69\xa4\xeb\xc8\x96\xb6\x96\x58\x60\x7d\x65\x69\x07\xb2\xfa\xe0\x2f\xc6\x2e\xbf\x6c\xb7\x98\x33\xad\x04\xb9\x5c\xa6\x00\x30\x9f\x83\x84\x98\x7e\xf0\x04\xc5\x15\x41\x32\x5a\xea\xd1\x64\xa7\x88\x80\x26\x67\x24\x8f\x9d\x2f\xd8\x89\x45\xb1\x43\x4b\x5f\x75\x49\x3c\x76\x89\x6c\xa9\x65\x2b\xb5\x9b\x79\x20\x46\x09\x97\xae\x76\xb5\x07\x8b\x27\xfb\x39\x20\xcd\xe5\x14\xac\x62\xc2\xb1\xc7\x89\x59\x26\x9e\x47\x3c\xf7\xd3\xd5\xa8\x4f\x14\xdb\xb5\xfa\xdd\x97\x00\xcf\xf8\x18\x13\x6f\x30\xba\x46\x9f\xc6\x39\xc4\x5f\x4a\x98\x20\x50\xd3\x83\x34\x95\x55\xda\x95\x8a\x6c\x52\xbc\xd0\x4d\xb8\xd5\x5a\x3b\x99\xcb\x6c\x76\x51\x93\xd2\x14\xf1\xd3\xcb\xff\xb3\xc0\x0c\x65\x9d\xfb\x0c\x6d\x25\xc1\xb3\xa4\x88\xa1\x0c\x23\xc5\x50\x8c\x33\xc4\x50\x43\x10\xcd\xd0\x10\x69\x92\xa1\xfb\xa4\x1e\xed\xb2\x2c\xe5\x6e\x9e\x6f\xb0\xdd\x7a\x84\xc7\x55\xfd\xd9\x24\x12\xc6\xc5\x99\x2d\x3e\x66\x63\xdb\xe4\xaa\xad\xa7\xcd\x3f\xc5\x93\xb8\x5f\x9e\x26\x6b\xea\xab\x51\x7c\x29\xc2\xaf\x46\xec\xa3\xad\xbd\x8c\xaa\x6b\x65\x62\x46\xd9\x27\xf6\xbb\x56\x41\x27\x9a\x61\x1f\x02\x64\xaa\x60\xf1\x85\xed\x8e\x16\xa0\x51\xe5\x76\x44\x62\x3a\xb5\x4e\x2d\xc1\x5f\x75\xb0\x3d\x88\x78\x1a\x3f\x69\x70\x87\x6e\x85\xc6\xaf\x96\x59\xa7\x4e\x19\x7e\x17\x5e\xad\x9d\x14\xa8\xb1\xaf\x64\x0b\xaa\xd6\x75\xc2\x60\x85\xbb\x46\x13\x8d\xb4\xc3\xd3\xd2\xd6\x01\x41\x69\x5e\x5d\x1a\x1d\xed\x73\x3f\x26\x25\xfc\xb7\xfe\x6e\x6f\xa1\x87\xfc\xc4\x95\x99\x68\xef\xfe\xb0\xe5\x7b\x22\xdf\x2d\x96\x9b\xf1\xe2\xf1\xe6\x6f\x59\xd0\x16\x51\x2d\x55\x57\xae\x0d\x6c\x06\x97\x47\x97\xe7\xc4\x07\x9f\x8c\x17\x59\x53\x1c\x6f\xe1\x88\x9d\x0c\x44\x0b\x75\x20\xeb\xab\xbc\xa9\x20\x54\xde\xd4\x01\x95\xb7\xf0\x8e\xca\xbb\xa0\x8e\x52\x7b\x2d\xa8\x5a\x5f\xe5\x75\x05\xa5\xf2\x4e\x23\x42\xe5\x71\x5b\x52\xe5\x55\x86\x61\x97\xc6\x16\x95\x97\xf0\xbf\x8e\xca\x93\xf4\x04\x76\x75\x78\x12\xe4\xd7\xa9\xfc\x36\x4e\xc6\x8b\xcd\x7d\x2a\x2f\xdb\x22\xaa\x83\x2a\xaf\x78\x18\x8a\x73\x58\x53\x1c\x6f\xe1\x88\xa7\xf2\xb0\x45\x56\x55\x65\xe5\x2b\xbc\x2a\x26\xd4\x5d\xd5\x00\x65\xd7\xb0\x8e\xaa\x43\x30\x47\x95\x11\xb4\x5f\xe7\x2b\xb9\x2c\xa6\x54\x1c\x34\x20\x14\xdc\x6d\x47\xaa\xb7\x4a\x81\x0d\x29\x6b\x51\x6e\x09\xfd\xeb\x28\x37\x41\x0d\xa9\xda\x32\x45\xf7\x2b\x55\x3b\x7b\x9c\x3d\x4e\xef\x54\x6d\xd1\xd6\xa1\x39\xa8\xd8\x8a\x7f\xa1\xa8\x8c\x35\xc5\xed\x20\x37\x3c\xb5\x86\xf0\xc6\x39\x14\xd2\xfe\xef\x40\x43\x11\x29\x3f\xd7\x0e\x8f\xdb\x46\x3f\x08\xd2\xd6\x96\x7d\x49\xd9\x89\xe3\xbd\x42\x63\xb6\x01\xe6\xe4\x2e\x92\xb9\x2c\x32\xe5\xff\x5a\x72\xe7\x88\xfe\x95\xf2\xc2\xcd\xae\xc0\x01\x9a\xbb\x01\x12\x78\x96\xc7\xc7\x89\xcf\x47\x1c\xac\xe0\xd1\x93\x5b\x11\xea\x2f\x60\x0a\x2f\x6a\x06\xf4\x06\x83\x8b\xe3\xd2\x5e\x7d\x03\x24\x84\x26\x0e\x7b\x02\x6f\x9a\x56\x50\x87\x63\x96\x39\x61\x52\x9e\xa9\x26\xf2\x52\x99\xd3\xc4\x59\x70\x71\x74\x4b\xaf\xf1\xab\x85\xd9\xc5\xaa\x37\xdd\xda\x54\x86\xca\x78\x7e\x43\x97\x7a\xe1\x25\x3b\x56\x8b\x2e\xde\x86\x20\xb0\x10\xbb\x98\x34\xc6\xf6\xcd\x4a\x9b\x92\xd1\xb9\xee\xe5\xe2\x0a\x7f\x45\xe2\x69\xae\x1a\x82\xf4\xe8\x0e\x9f\x61\xb9\x35\x83\x74\x13\x63\xf0\x82\x2d\x71\x12\x7c\xbd\x67\xd4\x26\xa7\x3b\x08\x74\x36\xaa\x97\xe6\x23\x19\x82\xfa\x3b\xeb\xed\xd9\x4f\x3b\xd6\x30\x87\x0a\x47\xd1\x03\x43\x35\x5a\xe8\x3d\x5c\x42\x10\xdb\x47\x9a\x36\x13\xe7\x2d\xb4\xa2\x6d\x8b\x30\xe9\xe3\x59\x34\xa5\x73\xd7\xf6\xc1\xcd\xf7\x98\xc2\xb8\xe5\x59\x07\x5b\x97\x5a\xb7\xc2\xed\x89\x35\xb9\x13\x6e\x4f\xb0\x5b\xdf\x4b\xb2\x27\xda\xfe\x0e\x86\x1f\x83\x16\xd8\x54\xe7\x67\x8b\x4d\x79\xde\xee\x47\xfc\x62\x05\x9b\x93\x87\xe4\x98\x9f\xce\x85\x78\xa6\x6e\x1d\xae\x71\x37\xe3\x8d\x63\x73\xae\x99\x67\x20\x77\x94\xe4\xa9\xb9\x38\xef\x24\x4a\x6b\xbf\xd0\x2b\xe8\x79\x0e\x1f\xce\xc3\xcc\x4f\xe0\xb8\x30\x54\x94\x84\xf8\x53\xdd\x1f\xb1\x25\x91\x5f\xe2\x81\x47\x1e\x78\xf4\xad\xa2\x2b\x44\xaf\x2a\x64\xd5\x25\x3d\x72\x1e\x16\xe4\xb1\x3c\xe4\x43\x84\x80\x6c\x48\xf0\x85\xe6\x66\xaf\x23\x74\x36\x5d\x06\x73\xe4\x5f\x8e\x03\xa9\xca\x43\xb0\x82\x2e\x70\xec\xc0\x7e\x81\x53\x13\x6a\x13\x9f\xcf\x22\x62\x27\x6e\x4d\x1c\x34\xab\x27\xdf\xc5\x53\xde\xef\xd5\xf9\xf2\x8f\x0b\x10\x2c\xd1\x91\xf0\xdc\x9c\x49\x47\x8b\xb9\x20\x94\x71\x75\x97\x9c\x8b\x06\x72\xbb\xed\x55\x40\x73\x81\x80\x07\xf8\x82\xf6\x40\x92\xa6\xc8\x4a\x54\x17\x45\x7e\x11\x94\xa0\x01\xd3\x65\xfc\xf1\xe1\xe7\x28\xad\xca\x13\x7f\x11\x95\xcd\xdf\x97\x97\x22\xeb\x4f\x76\xb6\xe0\xff\xb0\x1f\x9f\xf2\x7f\xd7\x37\xa4\x81\x54\x38\xa7\x03\x57\x1d\x74\x69\xb7\x5a\x68\xc8\x21\x89\x8c\xe0\xb9\x6d\xaf\x2a\x3b\x10\x13\x28\x2c\x7a\x5f\x58\x00\xbd\xac\xec\x42\x4f\xa8\x80\x86\x24\x74\xc1\x62\x89\x7a\xa1\x27\x50\x58\xea\x09\x99\x02\xf2\x55\x6d\x17\xfd\x94\x62\x98\x01\xb4\xf6\x10\xf5\xeb\x81\x58\xb4\x7a\xcf\x39\x86\x28\x49\x5f\xb2\xae\x37\xb0\xa6\xb2\xd1\x0d\x2f\x66\xa1\x7e\x27\xd9\x22\x4d\x66\x0e\x16\xa8\x37\xba\x08\x08\x43\x15\x45\x7e\x91\xc3\x51\x0d\xd6\x3d\xd5\x7a\x11\x2f\x9f\xf0\xc2\xc4\xc7\xb3\x74\x89\x88\x7f\x1d\x0d\x2d\xd3\x5d\x23\x73\xa7\xbb\x2a\xed\x31\xdd\x15\xe4\x90\x44\x46\xf0\xbc\xf7\x74\x0f\x8b\x8d\x9c\xee\x3e\xfa\xf6\xf9\xd8\xa2\x02\xd4\x74\xf7\xd0\x77\x4c\xf7\xb0\x3a\xd1\xd3\xdd\x27\xbf\x63\x32\xb6\x29\x06\x39\xdd\xfd\x11\xf4\xeb\x21\x3c\xdd\xfb\xce\x3c\x34\xe9\x75\x33\x3a\x87\x02\x6f\x87\xde\x06\xa4\xa7\xce\x7c\xbb\x79\x9c\x6f\x51\xef\xb3\x6d\x92\xcd\xb6\x0e\x16\xa8\x40\xba\x08\x48\x45\x1f\x5b\xf9\x45\x0e\x6b\x35\x58\xf7\x9c\xeb\x45\xfc\x6c\xb6\x4a\x67\x33\x7c\xf4\xb2\x7a\x9c\x4d\x57\xd7\x37\xa4\xa1\x65\xde\x6b\x64\xee\xbc\x57\xa5\x3d\xe6\xbd\xb9\xd3\x4b\x21\x23\x78\xde\x7b\xde\x87\xc5\x46\xce\x7b\x1f\x7d\xfb\xc4\x6c\x51\x01\x6a\xde\x7b\xe8\x3b\xe6\x7d\x58\x9d\xe8\x79\xef\x93\xdf\x31\x2b\xdb\x14\x83\x9c\xf7\xfe\x08\xfa\xf5\x10\x9e\xf7\x7d\x67\x1e\x9a\xf7\xba\x59\x78\xde\xc3\x47\x3d\x03\x93\x7e\xb3\x8d\xbd\x6d\xee\xd9\x62\xf3\x98\x26\x16\x05\x54\x1d\xf1\x1b\x08\x83\xff\x8e\xd0\x6f\x87\x97\x02\xa0\x7b\x86\x75\x93\x3a\x1d\x6f\xe2\x74\x8e\x57\xc7\xc5\x2a\xd9\x6c\xaf\xaf\xef\xba\x65\x66\x0b\x34\xee\xb4\xe6\x45\x3d\xe6\xb4\xbc\x9d\xed\xe1\xc0\xfc\xec\x3d\x95\x29\x61\x90\x93\x18\x61\x6d\x9f\x62\xa4\x48\xa9\xb9\xeb\x62\xed\x98\xb8\x94\x62\xd0\x53\x16\x11\xdb\x31\x9b\x68\x29\x93\x33\x15\xd1\xdb\x03\x71\xcb\x1c\xed\x33\x51\xf0\x04\x55\x6d\xc2\x13\x14\x3d\x9e\x4b\x2b\xfe\x2e\x4e\xd2\x19\xee\x3a\xcb\x92\xc9\x74\xe1\x60\x81\x9a\xa1\x8b\x80\x00\xf4\xe1\xba\x5f\xe4\xb0\x53\x83\x75\xcf\x9b\x5e\xc4\x67\xdb\xd5\x72\x8c\xbf\x62\xd2\xf9\xe3\x7c\x3c\xb9\xbe\x21\x0d\x2d\xd3\x57\x23\x73\x67\xb0\x2a\xed\x31\x89\xcd\x8d\x79\x0a\x19\xc1\xf3\xde\xb3\x39\x2c\x36\x72\x4e\xfb\xe8\xdb\x27\x60\x8b\x0a\x50\x93\xdb\x43\xdf\x31\xbf\xc3\xea\x44\xcf\x72\x9f\xfc\x8e\xf9\xd8\xa6\x18\xe4\x74\xf7\x47\xd0\xaf\x87\x96\xef\xef\x9e\x33\x0f\x7f\x85\xab\x66\xe1\x79\xef\xbe\x7a\x4d\xcf\x9c\x74\x35\x9f\xce\xbc\x99\x33\x9b\xee\xa6\x09\x44\xe2\x6c\xdf\xc8\x12\xb8\x25\x22\x4a\x22\xaf\xc4\xdd\xd5\x90\x40\x3d\x76\xbb\x7a\x90\xbd\x5d\x4d\xe3\x09\x76\x66\x92\xed\x64\x35\x99\x5f\xdf\x8a\x80\xb6\xdd\x36\x89\x0a\x6d\xb6\x89\xc2\x3e\x7b\x6d\x2a\xeb\x01\x81\xc9\xe7\x73\xff\x8d\xb6\x80\xa0\xe8\x6d\x36\x8c\xbb\x63\x1b\x2c\x24\x72\x72\x8f\x0d\xe1\xee\xda\x62\x0b\x28\x4f\x60\x83\x0d\x13\xde\xb5\xfb\x15\xd4\x03\x7a\x77\x0d\xd3\xde\x0b\x7d\x78\x6e\xf7\x9c\x5e\x68\x6a\xeb\x56\xe1\xa9\x5d\xe4\xc7\x5f\x2e\xde\xfd\x19\xea\x03\xdf\x3e\xa0\xa9\xdb\x0d\xcd\x5f\x0e\x5b\x78\x41\x84\x0b\x7a\x68\xb3\x20\xa5\xf5\x29\xcf\xbe\x6f\xa4\x52\x14\x02\x75\x16\xbf\x81\x9a\x80\x11\xb8\xb1\x41\x30\x89\x69\x07\x26\xcd\xf1\xc9\x74\x3e\x59\x6e\xbd\xe3\x1f\x36\x9e\xac\xe2\xa7\x39\xad\x6f\x95\x5e\x09\x76\x75\x4c\x56\x8a\xa2\xde\xb3\xd1\x27\xdf\x24\x5e\xa5\x8e\xae\x44\x80\x3e\xff\x5f\x7d\x94\xfb\xcc\x7f\x5d\xde\x22\x14\x5f\x7e\x37\x1e\x20\xfa\xfa\xe0\xa2\xbf\xff\xe2\x84\x40\xfa\xa5\x86\xc8\xbf\xd4\x88\x76\x79\x34\x76\x27\x6e\x2a\x7c\x09\x46\xa8\x18\x98\x0f\x00\xdc\x8d\x6f\x72\xae\x53\x9e\x37\x87\xbc\xf9\xd9\xc2\x3a\x37\x97\x32\x26\xc8\x40\xdd\xe6\xdc\x34\xe5\x11\x54\xba\x71\x32\x49\x9a\x5d\xf4\x69\x5a\x4c\x5d\x56\x56\x95\xe2\xaa\xef\x80\x8f\x3d\xa9\xd0\xf5\x63\x0a\xa2\xbd\x5a\xf6\x1b\xe5\xc7\x0b\xb8\x43\xbb\xe5\x8f\xef\x9e\x6a\x7b\x2b\x4d\x4c\xe3\x4f\x79\x9d\x6f\xf2\x82\xc3\xc8\xc4\x37\x16\x90\xb7\x77\xf9\x0b\x80\xc5\x9f\x45\x76\x6d\x2a\x12\x5e\xe5\x8e\x28\x3f\x5f\x45\x76\x89\x76\x18\xa9\x1f\xa6\x63\xee\xac\xfb\x31\x31\x4a\x23\x62\x93\xaa\xc7\x24\xea\xf1\x78\x3a\x6a\xf2\x03\x3f\x55\xde\x9d\x8f\xf2\xa8\x9e\x5f\xa9\x76\x99\x4a\x83\x74\xa2\xf0\xbb\x4a\xcf\x6a\xc6\x46\x53\x7c\x6f\x1c\xd5\x85\x1b\xf9\x58\x4f\xcc\xb1\xc9\x2a\x2e\x13\x31\xea\xa1\x65\x3c\xea\xa2\x05\xb0\x17\x14\x63\x3a\x5b\x05\x9b\xb6\x00\xba\xd8\xb2\xde\x49\x7d\xcd\xa6\x2a\x1d\x43\x01\x32\xfa\xce\x74\x54\x82\xfb\x3a\xfe\xac\x2d\x58\x41\x26\xeb\xa6\x20\xae\xc6\xe1\xa3\xae\xd7\x20\x67\x10\xe5\x7b\x88\x01\xc0\x21\x3b\x9e\x03\xd7\x68\x44\x52\x05\x19\x77\x65\x2e\xd2\xb0\xb2\x78\xed\x4c\x1a\xfb\xa2\xc3\x1a\xbc\x34\xb1\xc0\x57\xce\x4c\x6a\x93\x89\xca\xaf\x81\xc2\x59\x50\x6a\x6d\xb6\xf2\xd5\xf6\x05\x79\xca\x6c\x09\x7f\xda\x18\x64\x50\x5b\xe4\xa7\x27\x7b\x3b\xef\xcb\xba\xb5\xae\x25\x71\x03\x28\x75\x02\x16\x44\x6c\x43\x8f\xcc\x0e\x32\xbc\x96\x2f\xe3\x6e\x7b\x14\x4c\xdc\x02\x86\xc4\x04\x9e\xe7\xbf\xe8\x0b\x4e\x20\xfd\xbd\x03\x3b\x60\x5e\xe1\xa7\x9c\xdf\xeb\x07\xcf\x19\x2b\x09\xac\x84\x38\xf0\xd2\x41\xec\x45\xc8\x64\x2f\x2e\xe2\xe7\x22\x7f\x4e\x02\x0f\xc0\xf3\xf8\x0e\x71\x89\x77\x5b\xb0\x85\x97\x67\x01\xdf\xf7\x0d\x53\x02\x41\x09\x54\x8e\x2c\x9f\x04\xed\x73\x10\x35\xae\x3f\xb4\xe0\xff\x48\x9f\x22\xf8\x7e\x3c\xee\x4f\xe7\xc9\x4d\x70\x77\xa6\x82\xa6\xc6\x56\x3b\x24\x71\xc5\xed\x49\x8f\xf2\x80\x43\x13\xf7\xd9\xf8\xfe\x04\x6d\xb6\x2a\x40\x1d\x00\xc0\x3e\x58\x4b\x3f\x7d\x91\x91\x23\xec\x93\x08\xc2\x59\x06\xc9\xc0\x24\x15\xd2\xc3\x56\xf2\x97\x3c\x7d\xfa\x5f\xff\xf5\x27\x5e\xf5\x57\xde\x8c\x07\xe3\x45\x7f\xce\xb7\x55\x59\x97\xbb\x26\x7a\xe1\x33\x94\xe1\x79\x9f\x1d\x05\x71\x3f\xee\x92\xa2\xce\xd8\xbc\x42\x9f\xcc\x62\x11\x74\x74\x5a\x81\x24\xc1\x35\xb3\xe7\x3c\x14\x2b\x38\x78\x29\x64\xad\xe3\x58\x0d\x14\x4f\xce\xc5\xa6\x69\xc7\x8c\x6a\xf5\x0b\xf1\x2c\xe2\x4e\x74\xeb\x2c\xe2\x6c\xe5\x3f\xec\xc2\xbf\xcb\xbf\x30\x59\xb8\x97\x27\x4d\xe4\x21\xb2\x01\xab\x15\xa3\xdf\xae\x45\x98\x8f\x01\x96\xf0\xa8\x6b\x61\x5f\x87\xd1\x31\xf9\xb4\x49\xaa\x91\xe8\x53\xc5\x37\x0e\x0c\x12\x05\x75\xe1\x81\x94\x4c\x74\x4f\xef\xde\x41\x23\x8a\x73\x53\x19\xdb\x68\x3b\x71\xa8\xe9\xec\xcc\xa5\x9d\x77\x21\xc4\x64\xc2\xfc\xfd\x14\x89\xad\xa1\xa7\xaa\x37\xc1\x03\x8c\x9c\x60\x4c\x0b\x78\x48\x73\xae\xf6\x2b\x02\x7e\x50\x68\xf7\xa3\x25\x3b\x86\xe3\xcf\x04\xc2\xc2\x0d\x42\xf1\x79\x42\x75\xa0\xbe\x5b\xbc\x5e\xe0\xcb\x4e\x2e\x16\xf8\x79\x48\xe0\xf2\xaa\x65\x29\xf8\x3e\xa6\x1a\xe1\x6a\x59\x0a\xbf\xfa\xa9\x56\x5e\xbd\x28\x8e\x3a\x9a\xe9\x5d\x11\x73\x9b\x18\x8c\x50\x7c\xc8\x7e\x40\xcc\xb2\x85\x9e\xa0\x06\xf6\x4f\xb2\x15\xa8\x72\x03\xb7\x55\x94\xb6\xfe\xe4\x6b\xca\x92\xa7\xdb\x74\x6b\xe7\xa8\x76\x80\x49\x30\xe5\xf0\xa6\x06\x96\x9c\x02\x02\x1a\x00\x4b\x08\x74\xcf\x0e\x3a\xe7\x21\x1a\x4d\x10\x90\x11\x5b\xfc\xdf\xc3\xd4\x8b\x0f\xb2\xc4\xe6\xcd\x93\x05\xd8\x87\x7d\xb8\x90\xfb\x40\x50\x63\x40\x3a\x47\x74\x6b\x20\x0c\x79\x63\xe7\x6c\x81\x90\xb3\xd5\x90\xe1\x2e\x48\xa8\xd2\xeb\xd9\x76\xe4\xf3\xc1\x51\x4b\xec\xc1\x7b\xd0\x90\x22\x3e\xcc\x10\x41\x4e\x1d\xa6\x27\xa0\x01\x18\xa0\x87\xcc\xe4\xb2\xd0\x21\x22\x85\x0d\xbe\x8a\x82\xb8\x82\xa7\x26\xd5\x02\xb1\xe6\x8d\x44\xa3\x7a\x02\xe9\x1b\x3d\xa5\x7a\x25\xc7\x07\x9e\x50\xbd\x75\x47\x78\x1d\x1e\x1c\x74\x42\x5c\xa2\x3f\x78\xa0\x6e\xf6\x84\x47\x9c\xbe\xe8\xd1\x9f\x90\x22\x6f\x41\x3b\x1a\xe1\x73\x38\x78\xc6\x13\x07\x51\x80\xee\x5f\x23\x6e\xbc\x8d\x00\xbb\xad\x7b\xcb\xce\xad\xf6\x40\x88\x35\x44\xdc\x1e\x11\x95\x4a\xe4\xea\x69\x40\x45\x20\xd6\x04\xb5\x69\x60\x7d\x93\x16\x1c\xf1\x40\x61\xb9\x86\xcc\x50\xd0\x3e\x85\xbd\x81\x67\x24\x6b\xe4\x66\xda\x87\x53\xd6\xc1\x37\xac\x82\xe4\x40\xb4\xf0\x05\x96\x00\x38\xb6\x76\x44\x6d\xaf\x71\xb4\xe3\x09\x9a\x4f\x91\xa6\x6a\x8c\x2e\x3d\xc5\x41\x6a\x7b\xac\x78\x2d\x8b\x1d\xf6\x55\x5a\xcc\x4d\x70\xf5\xe2\xbb\x0a\x6d\xeb\x57\xcf\x45\x07\x91\xd2\x66\x7f\x3a\xd7\xb7\xce\x15\x16\xb6\x9a\xb5\x68\xf2\x9b\x59\x15\x12\x6d\x1b\xbb\x5b\xec\xcd\x1d\xb8\x02\x96\xe8\xed\xe4\xe5\x19\x25\x9f\x67\xb7\x9b\x29\x5f\x8c\xb0\xff\xbf\x9f\xeb\x26\xdf\xe5\x59\xea\xee\x4d\xc3\x05\x42\x6e\x56\xb3\x2a\x66\x97\xd4\x97\xa3\x3d\xb6\x12\x5b\xdb\x4f\x75\xc6\xbe\xe0\x93\x26\x23\x31\x7b\xab\x99\x5b\x83\x2e\x10\xcb\xde\xd0\x43\x4f\x9a\x9c\xef\xc3\x1d\x00\xa7\xfa\x42\x2f\x67\x34\xbc\xfb\xd1\x66\x3f\xd6\x7e\x4a\x93\x26\x51\x92\x56\x27\x1d\xf5\xcf\xa2\x25\x71\xe7\x35\x0c\x0c\x96\xcd\x9b\xda\xd1\x29\x00\x6f\xee\xa7\x2d\x2f\xa0\xd8\x1e\xad\xb2\x6d\xa3\x8c\x6c\xfc\xd0\x96\xee\x48\x4a\x29\xfc\xb9\x29\xd5\x26\xac\x18\x00\x8b\xfb\xe2\x17\x90\x72\xbf\x34\x68\x4a\x70\x6e\x16\x29\x8f\x2e\x9b\x0b\x0a\x6c\x59\x07\x53\x55\xbb\xc8\xc5\x59\xa3\x93\x34\xcb\xab\x25\x6e\xaa\xb7\x81\x30\xb1\xc8\xc5\xed\x9b\x26\x15\x0b\x10\x1f\x80\xf1\x87\xd0\x03\x90\x1c\x48\x57\x6a\xb2\x00\x5d\x41\x28\x9f\xb2\x5e\xa0\x9a\xb6\x50\x8a\xb3\x56\xf6\xb4\x40\x87\x18\xd5\xb3\x09\x66\x19\xcc\x41\x67\xcf\x9e\xc3\xea\xc6\x6b\x3b\xd4\x0d\x83\xe0\x2e\xbf\x45\x4a\xc0\x00\xe9\x01\x98\x5e\xca\xd6\x6b\x18\x5d\x89\x05\x03\x74\x05\xa1\x7a\x2a\x5b\x88\xb6\x76\x5d\x08\xb0\xa7\x05\xfa\x46\x65\xeb\x62\x99\xaf\x6c\x84\xfa\x08\xfb\x1c\x5e\x5c\x7d\xd3\x4c\x60\xec\xe1\xde\x79\x9d\xde\xda\x06\xa5\xd7\xb9\xc7\x69\xef\xe6\x84\xf6\x1e\xbe\xef\x7d\x75\x9e\xc0\x7a\xe9\xca\x48\xdf\x7a\x50\x06\x13\xd3\xfb\x37\xfa\xe9\x5c\xda\x3d\x93\xd2\x13\xb4\x7a\x69\x48\x83\x2b\x04\x11\x8f\x12\xc2\x56\xbc\x74\x07\xea\x10\x71\x39\x1e\x3a\x2a\xc1\x48\x2b\x10\x7e\xe1\x41\x3f\xbf\x1b\x56\x23\xe7\x45\x19\x5f\xaf\x83\xd5\xc8\x11\x57\x6e\x6e\x17\x04\x70\xd4\x3a\x80\xd1\xe7\x86\x0f\x8d\x37\xaf\xfa\xed\x6d\x76\xe2\x81\x9f\x6b\xa1\x8f\xb3\x9b\x77\xdf\x5a\xf9\xea\x3d\x15\x13\x16\x16\xfc\x96\xf3\x71\x86\x6a\x89\x51\xf6\x64\x43\x0f\xd8\x4e\x39\x79\x1b\xa0\xc4\x5e\x70\x3f\xb5\x09\x7c\x0f\xde\xb9\x55\xd9\xc6\x3f\xfc\x42\x12\x5e\x24\x89\x13\x21\x33\xb9\x63\xf2\x38\x92\xb4\x52\x44\x30\x0b\x05\x27\x76\x78\x88\xa3\x11\x0a\x56\x1f\x30\x91\x75\xea\x1c\x89\xac\xf3\x8f\x7d\xde\x6a\xb6\xe3\x6c\x3c\x04\xe9\x77\xaa\x27\xc1\x93\x63\xf2\x09\x25\x6e\xf2\x72\xcb\xa0\x68\x1b\xd1\xe6\xb9\xc8\xbb\x52\xed\x6b\xb8\xe7\xa4\x33\x29\xbf\xbb\xf6\xcf\x15\x5d\x4e\x28\x87\xf9\xdd\x12\x40\x40\x9a\x3a\x8d\x0a\x04\x21\x38\xb1\x0c\x5e\xad\xdb\x63\x5b\x20\x04\x1d\xa8\x71\x63\x18\x83\xa0\x60\xa0\x22\x0a\x86\xf0\x07\x20\xc4\x14\xa9\x1c\x81\x2d\x36\xdd\x8d\x0e\x51\xd8\xd9\x7f\x46\x6f\x17\xf3\xa3\x65\xf1\x9c\x1f\x5e\x2e\x76\x43\xd8\x28\x07\xcf\xe7\x56\x5f\x82\xef\x44\x89\x27\xff\x34\x18\x57\x24\x18\x25\xe6\xe8\x9e\x51\x51\x0d\xca\x64\xe7\x4c\x8e\x96\x70\x87\xdb\xd2\xfd\x0c\xd4\xcb\x4e\xa8\x37\xfd\xe4\x39\xba\xb4\x92\x0d\xe4\x7f\xf0\x48\x40\x2c\x10\x55\x0a\x04\xea\xd7\x39\xca\xc5\x5d\x39\xa5\x47\x2a\x39\x45\x6b\x16\x19\xc4\x5d\xb4\x8e\xd3\x2a\x27\x28\x10\x7f\xd8\x4d\x3d\xb0\xe1\x81\xdf\x26\x0b\x34\xb1\xe2\x73\xa5\xef\x41\x59\xc9\x81\xe7\xbe\x3c\x6f\x35\x88\xa0\x3b\x28\xc3\xee\xc5\xb5\x06\x60\x04\xc6\x40\xec\x27\xda\x4d\xc4\xfe\x83\xe2\x11\x18\x3d\xa0\x6d\x10\x8d\xe7\x6f\x87\xc6\xef\x6b\x56\x08\x02\x6b\x59\x10\x0e\xe6\x1b\xc5\xf3\xf3\x0e\x1e\xb2\xe1\xb5\x4d\xf9\x3e\x73\xee\x57\x1e\xb4\x3b\x41\xc4\xb5\x13\x49\xcb\x29\x2f\x0a\xb4\x32\xb9\x15\x76\xac\x58\x76\x1a\xe2\x03\x6b\x8d\xa2\x80\x5d\x00\x34\x38\xaf\x18\x8e\xc8\xaf\xf4\x62\x06\x43\xe1\x81\xb2\xd3\xba\x61\xd5\xf4\x6c\xb5\x55\x80\x64\x91\x3a\xd5\x3f\x0f\x0b\xad\x16\xd7\xee\x45\xe1\xde\xb5\xe0\x5b\x2c\x01\xb7\xcd\xfc\xde\x13\x1e\xb0\x26\xb8\x7a\xde\xbf\x20\xb4\xcf\x8b\x3e\x73\xe2\x1b\x2c\x02\x6f\xbd\x00\xfc\x0a\x83\x24\x27\x3d\x6b\x39\x52\x31\x85\xe2\xf1\xce\xd1\x29\x39\x76\xdf\xff\x70\x5a\xa9\xef\x81\xce\x7b\x20\x86\x52\xac\xc6\xf8\x2c\xfa\x9e\x93\x3a\x19\x32\x48\x25\x4a\xb5\xd9\x40\xe7\xfe\x4b\x4a\x22\x8a\xb4\xcd\x61\xea\x0c\x6a\x24\x96\xc3\xee\x40\x48\x15\xdd\x0a\x16\x59\x13\xf4\x68\xee\xe0\xa0\x58\x93\xb9\x17\x6b\xe2\x3c\x4a\xfd\x45\xb3\xd9\xc4\xdc\xdb\x97\xa9\xc5\x23\xd4\xfc\x2b\x43\x24\xa7\x84\x71\xa3\xb4\x8f\xd8\x91\x73\x3b\x96\x11\x27\x93\xf9\x7c\xa8\xff\x3f\x1a\x07\x33\x81\xd3\xd0\xde\x70\xc5\x4d\x24\xfb\xc2\x76\xf7\x5a\xe6\xf0\x0a\xe4\x71\x76\xa2\x62\x7b\xc7\xb7\x60\x6a\xbc\x9b\x50\x42\xab\x7f\x97\x1f\x4e\x65\xd5\x24\x8c\x47\x60\xdb\x18\x94\xa2\xe7\x8f\xc0\xa7\x85\x92\x0e\x80\xf5\x67\x88\xad\xec\x62\x0f\x9c\x52\x36\x8c\x97\x8d\x79\x80\x1b\x9a\x48\x5f\x99\xae\xba\x1d\xc6\x8d\x06\x6e\x57\x48\xef\xd4\xf1\x16\x62\xda\x3b\xe2\x1f\x56\xe6\xb9\x99\x18\x06\x16\xb3\x0a\xf5\x2a\xa1\x7a\x3b\xe6\x91\x55\x3f\xc8\xa7\x0b\xcb\x8a\xc7\xb4\xcb\xcf\xd1\x82\x95\xd4\xdb\xe4\x94\x59\x5d\x79\x4b\xaa\x26\x71\x2c\xb2\xd6\xf2\x25\x30\x61\x1f\x61\xd5\xb3\x3b\xb1\x87\xb6\x66\xb4\x2b\xce\x79\x1a\xae\x7f\xf6\xa9\x09\xb5\x05\x94\xbc\x2a\x67\xf1\xff\x04\xaa\x63\xe4\x60\x5d\x7d\x35\xbd\x38\x97\xab\x50\x50\x98\x58\x5b\xba\x17\x08\x80\x0d\x9f\x70\xf8\xea\x4a\xea\x01\xbe\x0b\xe0\x44\xab\xc3\x0b\x60\xd3\xb8\x9b\x9c\x8e\xae\xba\x49\xbc\x38\xc1\xfe\x2e\x33\x02\x28\xd5\x42\x84\xb7\xb6\x1c\x14\x63\xe0\x8d\x70\x14\x1b\x66\x0c\x52\xb8\x39\x01\x0d\xa8\xd9\xb2\x9a\xab\x2d\xab\xb6\xd3\x78\xf9\x68\x22\x44\x0b\xdc\x16\x5b\x16\xde\xda\x72\x1b\x8b\x7d\x17\x77\xaf\xad\x8b\xe9\xcf\x56\x33\x07\x0e\xae\xa1\x0f\x20\x55\xd7\x05\xbb\xf8\x53\xcb\xd0\xa4\xa3\x42\x03\x51\xff\x42\x57\x0c\xbf\x56\xfa\xb0\x08\xb8\x3b\x8f\xf6\x27\x30\xf3\xae\xac\xc4\x09\xd0\xed\xb7\x81\x6e\x4d\xfa\xec\x0c\xc9\xbf\x19\xe9\x54\x0f\xa2\x9c\xf1\x6c\xc4\xbd\x1f\xea\x76\xf5\x64\x62\x1f\xe2\xf2\x8f\xc3\xc6\x5e\x6f\x16\xdd\x07\x8b\xd8\x7d\x8d\xb3\x7b\x6e\x29\x59\x40\xcf\xd5\x0a\x8a\xef\xf5\xaa\x2d\xbf\x25\x7f\x38\x6d\x30\x32\x7b\xad\xaa\x5a\x6d\xd7\xc2\xa4\xe7\xb1\xff\x9e\xe1\x18\x1f\xac\x4f\xb0\x79\xd2\xb4\x2d\x21\x6d\x66\x1f\x13\x7b\xbe\x46\x73\xe4\x42\xe5\x47\x72\x09\x97\xc6\x49\x90\xdf\xae\x0a\x52\xe8\xb7\x3b\x3e\x21\x0a\x05\x5b\x86\x5d\x50\x03\xef\xde\x96\x73\x42\xaa\xe3\x80\x27\x88\xe7\xe1\x1e\x2f\xc1\x35\xa4\xb5\x19\x5a\x5b\xda\x61\xbd\x0d\x65\x90\x04\xa6\x5b\xdd\xb8\x46\x79\xbb\xb7\x60\xa2\x48\x95\xc2\xdb\x28\x61\x65\x9b\x13\xca\xe6\xac\x35\xfc\x74\xef\xe2\x1d\x17\xb4\x2e\x26\xa3\xc0\x6a\xe2\xad\x68\xdd\x9f\x04\xa1\xcf\xdb\x57\x7f\x36\x0c\xdf\xee\x9b\xa2\x15\x55\x0f\xe3\xcc\x18\xfc\x66\xef\xd0\xf8\x38\x5f\xf9\x0e\x4d\x10\x61\xfb\x3b\x34\x4e\xb3\x7b\xdf\xa1\x09\x21\x21\xdf\xa1\xe9\x07\x2c\x4e\xee\xc2\xa0\xc1\x77\x68\x42\x4d\x5a\xde\xa1\x71\x9a\xdc\xf5\x0e\x8d\x83\x41\x3d\x3f\xe2\x62\x7d\xf3\x77\x68\xfc\x2e\xf5\x3b\x34\x64\xc7\x81\x77\x68\x08\x2c\x44\x98\x08\x8d\xf1\xbe\x77\x68\x1c\x5c\x37\xbc\x43\xd3\x69\x42\xbd\xd9\xe9\xed\xa3\x52\x73\x04\xc7\x89\xfb\x7b\x98\xbd\x96\x05\xb8\xbf\x00\x57\xed\xd8\xff\xe0\x6f\xfb\xca\xb9\xdd\x3c\x63\xa3\x11\xde\x38\x8b\x5f\xb1\x6b\x46\x7f\xf8\xd2\x5d\x06\x7a\x99\xb9\xdb\x76\x6f\x78\x65\x43\xfb\xe2\x36\xae\x01\xd9\x3a\x6b\xd8\x20\xb0\x38\xfa\xaf\x0f\x97\x3e\xaf\xde\xa3\x56\x5f\x6a\xa7\xd5\xcc\x6f\xe5\x38\xcc\xec\xa3\xc5\x81\x27\x5e\x45\x6b\xff\x1e\x87\x88\xfc\x03\x61\xff\xbb\xc0\xec\xfe\xf5\xd0\x5e\x71\x5b\xda\x22\x25\x76\x98\xe4\x85\x7d\xf0\xc1\x02\xb6\xa8\x7c\x6f\xc2\x6d\xf6\xdf\x2e\x12\x57\xf7\xad\xf2\x12\xcf\x5b\xe8\x3d\xe8\x47\xfe\x0f\xa7\x46\x5c\xf2\x7f\xb8\x35\xfa\x2a\x43\x81\x0c\x41\x40\xe4\x12\xd2\x30\xee\x09\xb4\x38\xec\xef\x8e\x5c\xa0\xd0\x09\x19\xf6\x20\xcd\xf8\x80\x37\xc0\x76\x8c\xe4\xe8\x86\x89\xb4\x3d\x67\xd2\x67\x24\x1c\x9d\x7b\x10\xd1\x09\xd5\x83\xc0\x96\x43\x7f\x22\xe8\xa2\x5d\x0f\x04\x3e\x98\xe8\xa3\x1f\x5c\x1f\x2a\x43\x91\x2f\x22\x52\xf4\x2e\xbd\x70\x2e\x42\xe9\x2c\x80\x2a\x86\x22\xdc\xa0\x83\x56\xe7\x5b\x9d\xc8\x4d\xd8\x89\x1f\x7c\xc7\xfb\xcd\x1f\x1f\x1f\x83\xcd\xbd\xad\x53\x0c\x20\xac\xe6\x4d\xd3\x5a\x30\x1e\xc4\x02\x75\xc0\xf4\x11\xa3\x13\x39\xd4\x47\xd5\x3a\xbd\x10\xa2\x9b\x96\x8f\xd8\x7e\x93\xbb\xf7\xe7\xec\x6d\x6d\xdf\x6c\x19\xa0\xfb\xe8\xb5\x36\x74\x34\xbd\x77\x7c\x6f\xbc\x8a\x04\x3a\xe9\xb7\xb4\x74\x36\xbe\x7b\x90\x77\x2f\x42\xc1\xb1\x8a\x2b\xdf\x3d\x94\xd2\x26\xaf\x04\xfa\xe3\x43\x9b\x5b\xe4\x6d\x28\x37\x28\x19\x66\xb0\x1e\xeb\x6b\x18\x55\xaf\x24\x9c\xf7\xd2\xd1\x2b\x49\x67\xbf\x41\x88\x57\x96\x14\x68\x7e\x64\xbd\xd6\x54\x06\xd9\xc9\x64\x82\xfc\x9f\xf8\x91\xff\xc3\x4d\x69\xff\x67\x95\xf2\x7f\xed\xb0\x68\xc8\x34\x4c\x77\x58\x0d\xb5\x5c\x60\x5c\xd0\xff\xe9\x20\x0d\xbb\x40\x3d\xc1\x3b\x06\x43\x7b\x41\x77\x8f\x87\xf6\x82\x5a\xa1\x7a\x10\x78\x53\x30\x53\x87\x36\x84\xbc\xa0\x0e\xb8\x3e\x54\x86\x16\xa0\x19\x7f\x22\xe7\x2e\xed\xa0\xbc\x20\x38\xd5\xe9\x06\x1d\xb4\x76\x78\x41\xdd\xf8\x5b\xbd\x20\x91\x91\x39\xd0\xdc\xf3\x82\x30\x00\xe1\x05\x8d\x63\xfe\xaf\x5d\x9c\xc8\x0b\x6a\x81\xe9\x23\x46\xca\x0b\x6a\x55\xb5\x4e\x2f\x88\xe8\x26\x64\xc3\xd0\xb1\xc0\x4d\x0b\x5d\x08\xad\x4d\xe2\x78\xcf\x6c\xe9\xf6\xd7\xba\x57\xa2\xde\x2e\xdb\x6d\x6d\xdf\x6c\xcd\xea\xeb\xb2\xdd\xde\xf4\xde\xf1\xbd\xf1\x92\xd7\xdf\x65\xbb\xa7\xf1\xdd\x83\xbc\x7b\xc5\x0c\x8e\x15\xfa\x57\x1d\x7a\xe9\x7b\x6d\xe4\xda\x85\xbd\xb6\x10\xd6\x80\xc3\xe4\xd7\x63\x81\x86\x51\xdd\xe2\xb8\xdd\x4c\xc7\x2d\x8e\x5b\xc7\x20\x98\xb8\xae\xd1\xa6\x62\x4b\xd6\xb6\x3a\x1f\x36\xe6\xd4\xed\x11\x1d\xba\xc1\x18\xc2\x1e\x89\x79\x45\x12\x55\xea\xe8\xdd\x76\x05\xc3\x72\xdd\x83\x1c\x07\xe6\x43\x91\x3f\x6d\x32\x66\x5d\x4c\x50\x96\xcc\x93\xb4\x06\x9f\x08\x26\x51\xe4\xc7\xbf\xc5\x71\x12\xbf\x73\x50\xe8\x98\x4d\xe8\xb9\x9f\x12\x36\x26\x11\x78\xd1\xfa\x12\xb7\x7b\x57\x4a\x0c\x7e\x40\x86\xef\x5a\x7c\xfe\xa8\x50\x2d\x9f\xaf\x6e\x01\x9b\x18\xed\xd9\x14\x83\x0f\x83\x9b\x1b\x5e\x9d\x39\x75\x45\x0e\xd9\xbe\x19\x70\x43\x37\x4e\xd0\x48\x9c\x8b\x6d\x78\x54\x4e\xa5\x18\x21\x75\x3c\xd0\xb6\xb7\x1e\x4a\x28\xe4\x76\x03\x6e\xc0\x79\x24\x80\x3a\x41\xc1\x9d\x9b\xf6\x7e\xaf\x76\xd9\xf4\x25\x49\xd7\x24\xfa\x96\x21\xd1\x80\x7a\xbc\xa1\xcf\xdd\x2f\x2c\x11\x60\xf3\x88\x52\xde\x15\x59\x41\x8d\x05\x36\x6a\xa9\xa6\x46\xe5\x34\x95\x43\xb3\x69\x57\x80\x86\x75\x5e\x7c\x22\xdf\xf6\xd4\xd7\x1d\x60\x87\xc6\x12\xf9\x43\x74\xaa\xa8\x81\xb8\x00\xc4\x68\xa0\x99\xa5\xcb\x5b\xd1\x12\xd7\x09\xfb\xdc\x1c\x24\xde\x31\x46\xd2\xe6\x19\x45\xf0\x62\xa2\xca\xe4\x7a\xd2\x71\xd1\xde\xc7\x15\x9e\xce\x44\x3d\x9e\x4f\x70\x96\x2e\x5a\xe7\xf0\x82\xec\x3b\x34\x8d\xfd\xea\xd6\x99\xec\x77\x8d\xab\x9d\xbe\xeb\x83\xcf\x43\x59\xe6\xf0\x30\x90\xfa\xc0\x47\xd5\xc2\x42\xbf\xbe\x8d\x85\xd3\x56\x16\x4e\xc9\xbe\x83\x2c\xf4\xaa\x5b\x59\xe8\x77\x8d\xab\x45\xdf\x36\xee\x89\x36\x92\x7e\x8a\x0a\xef\x82\xb1\xc0\x32\xa0\xed\xa5\xa8\x50\xe3\x90\x7f\x0b\xa2\xdb\x8c\xb5\x14\xd3\x8c\x8a\x20\xec\xbe\x44\xa9\xe3\xf5\xe6\x66\x78\x03\xb4\xcc\xeb\x92\xdb\x6f\x26\xcb\xc6\xd1\x91\x35\xb1\x23\x92\x3f\xc5\xa0\xc0\x79\xa4\x01\x3e\x55\xd9\xa7\xbc\x3c\xd7\xa0\x81\x29\x02\x8d\x64\xb0\x95\x02\x40\x4b\x95\x5b\xe4\x8e\xc4\x5b\xa0\xfc\x0a\xd1\xcb\x1d\xcb\xd6\x35\x92\xf1\x19\xae\xa8\x8c\x90\xa2\x49\x76\x18\x44\x0b\xfe\x9f\x69\x76\x00\x33\x6a\x39\xff\xde\x49\x80\xb2\x0c\x25\x40\x31\xb9\xf3\x1d\xed\xea\xce\xcb\xb2\x49\xea\x4c\x3e\x7f\xe4\x88\x3c\x9a\xcc\xb3\xc3\x35\x91\x54\x2b\x2e\xe9\x5f\xfd\x72\xf6\x2b\xce\xa8\x3c\x69\x6a\xfc\x4f\xd9\xe1\xd4\x7c\x75\x43\x34\x65\x66\x51\x15\xbe\xe2\xf9\x7b\xfa\x4a\x90\x42\xd0\x72\x92\x2c\x5c\x58\x07\xe8\xa7\x7d\x95\xed\xf4\x97\x06\x59\x15\xda\x32\x92\x27\xc0\x1a\x1d\xf1\x5a\x3b\x32\xbc\x0e\x1c\xd5\xad\x5b\x15\xea\x56\xbe\x3a\xaf\xd1\x11\x8f\x45\x6b\xf2\xc4\x8b\xbd\x08\x8e\xea\xd6\xad\x0a\x75\x2b\x1f\xbd\xd6\xe8\xf0\x33\xb6\xba\x4f\xf1\x08\x29\x04\xa2\x3a\x04\xe5\xc1\xed\x38\xf1\xfe\xae\x46\x44\x3c\xbc\xa9\x35\x4b\xbc\x7e\x88\xe0\xa8\x3e\xdd\xaa\x60\x96\x00\xf1\x80\xa8\xd1\x10\xef\x01\x40\xed\x50\x88\x87\xd9\x5c\x30\x52\x8f\x60\x4d\xa8\x4f\xf9\x86\xe1\x55\x3d\xfd\x46\x87\x86\xd9\xa7\x61\x60\x68\x3d\xcf\xec\xbb\xf4\xd3\x0a\xfd\x4a\x4b\x01\x35\xb7\xb0\x4d\x10\x71\x33\x62\x60\xe1\x49\x2d\xc7\xdd\x36\xa9\x65\xb4\x8d\x86\x74\x22\xaa\xf4\xd3\x5f\x6c\x15\x92\xdd\xe8\x55\x48\xfe\xba\x73\x15\xe2\xe6\x56\x06\x20\x32\x76\x1c\xb4\x5b\x2e\x71\xc2\x0b\xc7\xc6\x99\x7f\xbe\xe5\x91\x7c\x84\x5e\xb7\x75\x6c\x19\x0d\xf3\x41\x81\x3a\x11\x34\x73\x7c\x71\xda\x92\x03\xbf\x1b\x85\xf7\xf1\x77\xf6\x55\x5f\x36\x15\x48\xa8\x35\xc5\x21\xc2\x6a\xb7\x42\xe4\x86\x93\x54\xe7\xc7\x7d\x56\xe5\xd4\x77\x86\xb0\xd1\x06\xe7\x60\x3f\x1e\x82\x5f\xd1\x7e\x7c\x71\x10\x40\x50\x1c\x98\x87\x2e\x88\x4c\xc6\x48\x8f\x27\x71\x0c\x9a\x3f\xef\x2b\xe8\x84\xe9\x59\x39\xe7\xff\xae\xf0\x22\x87\x69\xe1\x5d\x3c\x02\x75\x17\x22\x71\x16\x18\x86\x69\x78\x41\xa9\x9d\xd5\x06\x78\xbd\xad\xb2\xec\x28\x2f\x97\xf9\x01\x56\x3e\xc7\x67\x7c\x7f\x28\xbe\x83\x4c\xf7\x62\x1d\x7c\x23\x4a\x4a\x78\x11\xbb\x94\xfb\xe2\xb0\x0c\x5e\x4c\x45\xd0\x78\xb3\x67\xf5\xc7\x24\x2f\x02\x2f\xa8\xf8\x41\x6d\x13\x7c\xb5\x01\x66\x14\xb9\xdb\x79\x84\x8f\x40\x81\x07\xe9\x24\xd0\x20\x9a\xd4\x03\xfe\x6a\x1a\x33\x1c\xa3\xf2\xdc\xa0\x47\xed\x02\x40\x9d\x10\x60\xf4\xfc\xbe\xd0\xd0\xfe\x1c\xe8\xc4\x2d\x60\x96\xc1\x1b\x16\xf6\x1a\x7d\x62\x1b\x99\x95\xc7\x96\x48\xf7\x10\x94\x44\xd4\x33\x95\xc6\x3f\xb0\xfd\x47\xdb\xe4\x24\x76\xd8\xc0\xa5\xa0\x35\x3c\xa8\x4a\x0a\xb6\x2a\x5f\xe0\x15\xab\x5b\x2f\x2c\x53\x5b\x71\x02\xeb\x60\x3f\x73\x03\x46\xd1\x1c\x96\x40\xf2\x7f\xfc\xf7\x47\x97\x7c\x9e\x8a\xba\xe7\xd3\x50\xfd\x71\xf6\x22\xa8\x0d\xc8\x87\x13\x7e\x48\x51\x21\x66\xea\x78\xc8\x6b\xe1\x4f\x0f\xdd\x22\x7e\xa1\x15\x4d\x85\x29\xdd\x90\xb1\xb1\x28\x6b\xaa\xbd\xaa\x09\x19\x1d\x6e\x44\x55\x30\xa3\x58\x88\x28\x0e\x18\xc7\x4b\x8b\x65\xbb\x5c\x4c\x29\xbf\x3e\xdd\xed\xe2\x14\xc7\x2e\xa6\x8b\x6c\xb5\x5d\x20\x54\x03\x72\x55\xdb\xae\xb2\xc9\x66\x8a\x41\x21\xff\xb5\x5f\xb8\x99\xcf\xb8\x1f\x21\x6b\x84\x83\x66\x9c\xa9\x65\xfc\x48\xbf\xfa\x9c\xa5\x3b\xbc\x4f\xb4\xd9\x66\x8f\xbb\x31\xc4\x43\x13\x96\x2c\xb2\x71\xe6\xf4\x47\x52\x35\x9b\x4f\x16\x2b\x0d\x85\x5e\x71\x7f\x4c\x16\xe9\x74\x43\xad\x1b\xdb\xdd\x63\x36\x45\x84\xed\x92\x6c\xb3\xdd\x22\x54\x34\x6d\xbb\x65\x36\xde\xcc\x31\x28\x41\xde\x62\x31\x1f\x5b\xa6\xb9\x4f\x4e\x27\xab\xd9\x6c\x36\xa1\xa8\x9b\xa4\x99\xf7\x3c\x3f\xa7\x2d\x1d\xbb\x98\x68\xe2\xb2\xd9\x66\xb5\x8d\x11\x24\x41\xdb\xe3\x6c\xca\xdc\xcc\xeb\x1f\xf4\xc2\xf8\x4b\xf6\x75\x57\x25\x87\xac\x1e\xf0\xb7\xbb\x2a\xa6\x06\xfc\x30\x7a\x54\x37\x55\x7e\xca\xea\xcb\xae\xe2\x17\x39\x2d\xb1\x46\xb9\x67\x62\x5b\xe1\xda\x94\x64\x2d\xbf\xd0\xc9\xfa\x28\xbf\x29\xfa\x6f\x88\x3b\xd2\x18\x2f\xe0\x1e\x18\xb5\x1a\x76\xa7\xef\x0a\x1d\xbd\x74\x5d\x59\xf2\x5e\x1f\x0c\xde\x48\xf2\x21\x2d\xfd\x22\xb2\xc0\x4b\xae\x6d\xde\xcc\x14\x49\xa7\x5a\x52\x0c\x4f\xac\xc3\x16\x70\xee\x83\xfb\xc4\x2d\xc3\x1b\x81\xab\x52\xce\x13\x8e\x7d\x21\x09\xab\x2e\x06\x36\x88\x16\xd2\x1a\x23\x6b\x8e\x2a\x83\x35\x80\x6f\x52\x8b\xd2\x81\xc3\xc9\x61\x44\x68\x5a\xea\xdf\xe3\xd3\xf4\xc9\xe7\x6e\x47\xe6\xcd\xbb\xd9\x3c\xcd\x5e\x86\xc4\x15\xb1\xf9\xc3\x60\x32\xff\x7e\x08\x4c\xa9\xf7\x7b\x1e\x7f\x1f\x68\x19\xae\x59\x22\x1c\xe8\xf7\x83\x7f\x7d\x97\xf1\xed\x7f\x3f\xa2\xff\xc7\x53\x4c\xbc\x89\x2a\xe6\x9b\x58\x89\x66\xb1\xbb\x45\xea\xd6\x58\x95\x54\x7e\x5e\x9b\x46\x6a\x57\x50\xf7\x97\x1c\x19\x83\x84\x9e\x53\x2b\xe4\x60\xa2\x1f\x64\x1e\x30\x43\x9b\x1f\xd9\x37\x21\x9f\x37\xb7\x37\xba\xb9\xc5\x15\xcd\xa3\xce\xed\xa6\xf6\x69\x49\x21\xf8\x6d\x22\xfe\x36\x11\x3d\x8a\x91\xde\x75\xec\x37\x76\x28\x1d\x6e\xfd\x9b\xc6\xfd\xa6\x71\x5d\x1a\xd7\xbd\xe7\xdc\xa1\x74\x04\x82\xdf\xf4\xee\x37\xbd\xeb\xd2\xbb\xce\x43\x87\x0e\xb5\xf3\xdb\xff\xa6\x75\xbf\x69\x1d\xa1\x75\x62\xf7\x1a\x5f\x49\x56\xc5\xd4\x6b\xb0\xea\xe1\x07\x51\x2f\x37\xde\x86\xf2\xc7\x33\x7c\x5a\xdf\xcd\x3d\x18\x1b\x8c\xa2\xc0\x6d\x20\x2e\x1d\xa3\xf4\x85\x74\x03\xa7\x3b\xf6\x99\x9a\x7e\xa5\xb2\x92\xa2\x93\x2a\x46\xaf\x46\x25\xd3\x25\x5c\x02\x49\x14\x34\x56\x91\x09\x0b\x1f\x77\x89\x52\x0d\xc3\xc3\xd3\xf9\x92\xde\x92\xaa\x61\x0e\x06\x90\xd7\x0d\x8e\xf4\xf0\x22\x39\xec\x41\x4f\x7b\x96\x79\x99\xdd\x06\x1d\x0b\xdd\x9e\x37\x9e\xc8\x1f\x7e\x5b\x18\x23\xa2\xa0\xcf\xd3\x79\x1d\x97\xfe\x7d\x9c\xe1\x44\x0c\x1d\xb1\x86\x1d\xf1\x8f\x89\xc7\x3f\x7b\x25\xd0\xaf\x1c\xe0\x02\x23\x7e\xb0\x13\xef\xb5\xb2\x61\x10\x98\x51\xf8\x0e\x62\xdf\x90\x52\xb1\x29\xe5\x1f\x4a\xea\x68\x93\x61\xb0\xc6\x9c\x45\x87\xea\xef\x8b\xaf\x13\x87\x7e\x21\x9c\x41\xa6\x75\x91\x79\x4f\x43\x41\x7f\x97\x98\xcc\xb6\x7d\x7f\x92\xb9\x64\x6e\xa7\xb7\xa3\x55\x80\x58\x2f\x15\x00\x7d\xf8\xec\x23\x96\xe5\x21\x19\xab\xda\x96\x20\xd2\x1b\xa3\x46\xe9\x0e\x6e\x90\x1a\xa4\xf7\xf6\x66\xed\xa2\x0e\x35\x0b\x36\x78\xae\x0f\x4c\xc1\xef\x24\xb2\xa3\x71\x3b\xa9\xed\x8d\xc3\xcd\xa2\x57\x51\xdc\xd1\xba\x83\x64\xd9\xba\x6b\x3e\x85\x46\x40\xcf\x8b\x76\xba\x5b\xdb\xf4\x98\x49\xdb\x65\x9a\x66\x7e\xa8\xc5\x8d\x87\x76\xfe\xea\x4e\x23\x08\xc3\xf5\x5d\x9c\x82\x08\x42\xe6\xc4\xd4\xbb\xf7\xa1\x83\xe3\x89\xc5\x79\x63\x10\x8d\x5e\x65\xba\x00\xba\xc8\x71\xd7\x9d\xf6\xd5\x46\xd1\xea\xae\x36\x92\x9f\x1e\xfa\x1b\x4e\x33\x89\x41\xfa\xad\x03\x40\xf7\x8b\x8b\xb7\x0e\x32\x47\x54\xba\x82\x0a\x8d\x61\x3b\xcb\xa6\x3b\xc2\xad\x10\x38\xc2\x52\x02\xb5\xad\x54\xdc\x22\x1f\x45\xa2\x2b\x1f\xc9\x3d\x0f\xf7\x6d\xe7\xba\xc4\xf0\x48\x04\x61\xb8\xfb\x05\xa5\x10\x04\xb9\xa4\xeb\x1d\x0e\x85\xc7\x93\xec\x26\xdb\x6d\xb8\x9b\xb0\xc4\x5c\x80\x2e\x72\x6e\x90\x9b\xa6\xd5\x91\x9b\xe2\xa7\x87\xfe\xa6\x03\x6f\x62\x98\x54\xfb\x20\xd8\xfd\x42\x93\xed\x83\x4c\x52\xd5\x0e\x73\x82\x63\xe1\xe7\xf4\xa4\xc8\x24\x96\xb0\xc4\x9c\xfa\x0e\x5a\x6e\x90\x97\x26\xd4\x91\x97\xe2\x64\x90\x61\x5d\x1f\xa0\xa4\x6d\xf4\x9f\x2d\x73\x9e\x43\xe6\xc1\xf0\x47\x2f\xdb\xe1\x24\xee\xff\x85\xd8\x1a\x5e\x44\x9d\x32\xcb\x43\xf1\x31\x3a\x14\x8f\xdd\x03\xe6\x20\x90\x22\x58\xee\x07\xc0\x58\x28\x5d\xa1\xb9\xe5\x7f\x05\xf7\xc9\x53\xda\x7d\xbf\x84\xba\x00\x82\xfa\x26\x1f\x65\x51\x09\x0e\x90\x3f\x25\xdb\x35\x79\x53\x64\x6d\xf2\x8d\x61\x10\xc0\xc2\x8f\x4e\x02\x68\xcc\x5d\x75\x54\xb9\x2b\xcb\x06\x24\xdf\x05\x6c\xe9\x08\x89\x70\x13\xbf\x12\x2f\x69\x75\x5c\x87\x21\x6e\xe2\x30\x7a\x9e\x81\xba\x0e\x75\x91\xa4\x74\xab\x52\x27\x40\x10\x3f\x98\xcc\xc3\xe2\xad\x34\x3d\xd0\x7a\x6d\x2e\x7e\xee\xf3\xb5\xf7\xfe\xad\xd7\x35\xdc\x10\xf1\x50\xba\x8f\x9f\x76\x92\xd4\x1b\xd7\xc5\x79\xcd\xe2\x55\x8a\xeb\xf4\x6f\x37\x62\xfc\xee\xe1\xdb\xa0\xdd\x23\xe9\x87\x09\x3f\x0b\xf4\x16\xda\xa5\x67\xe2\x87\x36\x59\x87\xb6\xb1\x54\x0c\x0e\x5c\x50\x3f\xb8\x93\x88\x02\x56\xec\x68\x64\xf4\x22\xfc\x35\xaa\xb2\xfa\x54\x1e\x6b\x11\x4e\xee\xd6\x63\xe6\x89\xda\xa0\xae\x8b\xda\x81\x0a\x13\xed\xea\xc3\x83\x23\xfb\x1a\xa0\xa0\xd3\xd6\x17\x65\x5c\x42\x48\xbd\xc6\xc4\xb8\x8f\x79\x7a\xed\x7a\xdc\xe7\x6b\x55\x5b\x0f\xe1\x73\xc3\x25\xef\x96\x54\x6f\x41\xe9\x8d\x88\x5d\x40\x6e\xac\xbe\x09\x4d\x1d\x88\x7f\x7d\xf6\x0e\x9a\xf4\x57\xe1\x76\x6b\x3f\x37\xf1\xe8\xcd\x28\x7e\x4d\x3f\x37\x8e\x7d\xff\x2b\xf1\xb8\xa5\x9f\x1b\xc7\xfe\x46\x14\xdf\xd6\x4f\x8b\xfa\xbf\x52\xc5\x09\x3b\xf8\x2d\x34\x3c\xd4\xcd\xcd\x8a\xf7\x16\xf4\xbe\xa2\x9b\x9b\xd5\xee\x57\xe1\x6f\xb8\x9b\x9b\x95\xee\x57\xe1\xef\x9e\x70\x9a\x7a\x2c\xdf\x7d\x68\x83\xef\x62\xe3\x56\x97\x37\xf1\xf6\x31\x56\x35\x5e\x58\x50\xbd\x9a\xd4\x9b\x90\x3a\x60\xdc\xb1\x7b\x73\x62\x5a\x91\xfe\xff\xc2\xd6\xde\xc6\xee\x15\x5c\x6e\x37\x74\xbd\xf9\xf3\x46\xa4\xde\xdf\xc7\x2d\x23\xee\x69\xde\x5e\xc5\xd5\x36\x63\x7c\xc3\x88\xdf\x84\xd4\x5b\xfa\xb8\x7c\x33\x4d\xfe\xc6\xcb\x45\xab\x45\xbb\x49\xc7\xbe\xf1\x52\xd2\x9b\xd0\x4e\x0d\xfb\xe6\x1c\x6d\xb1\xb9\x37\xe9\xd7\x37\xe7\x28\x65\x6c\x5b\xf2\xbb\x80\x2f\x6c\xce\x81\x0f\xe4\x77\x3e\xa8\x01\x74\xba\x03\xf8\x00\x60\x83\x43\x83\x40\x97\xe0\x36\x9d\x3b\xb5\xfa\x38\x18\xc3\x5b\x5b\xb8\x9b\x50\x6e\x87\x23\x59\x95\x85\x25\x84\x01\xf5\x83\xcb\x21\x44\xd2\xa7\x63\x44\x3c\xf7\x5c\xc5\xee\x44\x60\xc1\x39\x03\x5e\xd5\x5f\x2f\x04\x16\x9c\x2b\xe5\xab\xfa\xeb\x85\x80\x60\x47\x3f\x5b\x7b\x27\x02\x82\x1d\xf7\xf6\xd7\x0b\x01\xc1\x8e\x7b\xfb\xa3\x11\x68\xad\xd7\x2f\x1b\x75\x6b\x6b\x8f\xf5\xea\xbe\xf6\xa4\xaa\xdd\xd5\x5b\x9f\xf6\xa4\xa2\xdd\xd5\x5b\x9f\xf6\xa4\x9a\xbd\x8e\x93\x2d\xed\x49\x25\x7b\x1d\x27\x7b\xf5\x06\x54\xec\x75\x9c\x4c\x09\x93\xa5\xdf\xdb\xe9\x60\xac\xbb\xc8\xdf\xc1\xd9\x76\x04\x1e\x6b\xee\xef\xaf\x17\x82\x0e\xf2\xf6\xaf\x1d\x1f\x46\xd0\x41\xde\x2d\xfd\xd1\x08\xf0\x19\x49\x50\x9e\xba\x39\x74\x6c\xee\x61\x6f\x5b\x7b\x4f\xf5\xee\xee\xad\x4f\xfb\x76\xda\xee\x61\x6d\x5b\xfb\x76\xda\x6e\xe9\x8d\x6c\xdf\x21\x47\x8b\x2f\x10\x03\x6d\x5a\x90\xa7\xa2\x32\x5c\x1c\xd4\x0f\xc8\xd3\xfd\x40\x46\x5e\xdc\xea\x83\xdb\xd8\xe4\xea\xf0\x21\xcd\x99\x3b\x3d\x3a\x12\xf6\x83\x77\x1e\xe5\xf9\xbd\x3d\xdb\x81\x43\xe2\x2e\x57\xd8\xc5\xe8\x1d\xe6\x05\x28\x96\x70\xb8\xe3\x01\xe1\x83\x7b\xa1\x05\xb0\x6f\x93\x9f\x8e\x4a\x53\x0a\x00\x9e\x11\x53\x6d\xe0\x79\xe7\x51\x7d\x5f\x9c\x6d\xcc\xa7\x72\x2c\x75\xe1\x1b\xb8\x99\xb0\x34\x51\xf4\x7b\x0b\x24\x22\x9a\xc7\x14\x5d\xea\x23\xcc\x27\xcd\xe4\xe2\x23\x43\x99\x1d\x98\x00\x8b\xef\x88\x90\x6e\x43\x7b\x23\x97\xfb\xa0\x1c\xdc\x92\x72\x8c\x44\x74\x2f\xa3\x5d\xea\xcc\x85\x6e\x32\xc1\x8d\x03\x13\x52\xe7\xbb\x52\xe7\xb4\x61\xbe\x55\xa9\x7b\xa0\x44\xec\xd6\xa4\x05\xc2\x5a\x03\xb8\xee\x56\x6d\x87\x40\x79\x9b\x99\xcc\xd9\x63\x01\x42\xbc\xbe\x2b\x15\x50\x10\xed\x8d\x8c\xee\xc4\x87\xb9\xac\x88\x0a\x04\xa7\x52\x88\xee\x65\xb1\x4b\x9a\xb9\xbb\x4b\x26\x20\x72\x60\x02\x8c\xbe\x2f\xb5\x51\x1b\xe6\x1b\x79\xdd\x07\x25\x5e\xac\x15\x69\x81\x98\xd2\x00\xae\x7b\x39\xee\x12\xa8\xaf\xad\x92\x39\x95\x20\x48\x80\xdf\xf7\x25\x6b\x6a\x41\x7c\x23\xbb\x7b\x60\xc4\xdc\x56\x84\x05\x22\x42\x69\x54\xf7\x32\x5b\x93\x97\x1d\x36\x59\x0a\x9d\xcb\xae\x1b\x84\x2a\x3e\xd4\x26\xdc\x8c\x71\x22\x25\x1f\xe9\xc0\x2b\x51\x41\x78\x1e\x60\x2e\xb2\x42\x11\x15\xa2\x80\x28\x2f\x37\x7f\xcf\xb6\x0d\x51\xc1\x5f\xfa\x29\xed\x68\x92\x0d\xf3\xba\xce\x8d\x4c\xe8\xc6\xbd\x5c\x1d\xf3\x2a\xef\x56\xda\x2c\x8e\x4e\x7a\x25\xeb\x59\x63\xfc\xfe\x88\xc6\x8b\xcd\xd7\xd5\x05\x3d\xec\x3c\x5f\x44\x93\xf9\xf7\x7d\x9a\xcf\x36\x5f\xa7\xb8\xf5\x92\x37\xfd\x9c\x15\xcc\xd1\xce\x8f\x4e\x5e\x27\x13\xaa\xb9\x0a\x64\xfa\x6b\xf7\x06\xa1\x1b\x9a\x4d\xf9\xbf\xdb\x93\x5c\x75\x44\xe9\x76\x80\xca\x71\x0d\x84\x4e\xfd\xe3\xcc\x74\xd8\xf7\x7d\xdd\x29\x8a\xf2\x48\xc9\xf6\xa3\xc2\x06\xf3\x4e\xc0\x7d\x4f\x98\xb9\x53\xc0\xd5\x07\x27\x75\xa2\x0b\x26\xf6\xe9\x65\x02\x40\x90\x73\xb5\x2d\xfb\x68\x30\x8b\x6e\x1c\xab\x74\xed\x4e\xac\x72\x3c\x10\xfe\xe3\x2e\x2f\xd8\x5c\x7d\x4a\x8a\xd3\x3e\x79\x5f\x9e\x92\x6d\xde\x7c\xfd\x71\x12\x3f\xac\xd5\xdf\x4f\xd1\x44\xd1\xa1\x6f\xf1\xc9\x1f\x4e\xd0\xb8\xe9\xa1\x3d\x69\x2d\xdd\xd9\x1c\x76\x36\xbf\x6e\xce\x4c\x63\x8e\x6a\xe8\x26\xf1\xd0\xe9\x94\x25\x55\x72\xdc\xaa\x17\x69\xec\x3c\x47\x3d\x58\x1d\xe3\x89\xd7\xc0\x5c\x39\x94\x69\x52\x8c\xf8\x4b\x47\x17\x6f\x69\x10\x75\x76\x5a\x8a\x17\xc4\xd5\x9c\xd4\x6f\x9f\xe3\xb9\xa9\x6f\x2b\x8e\xe3\x59\xbc\x86\xf9\x82\xbd\x0c\x6e\x7a\x08\xba\x7c\x54\x6f\x2b\xb6\x22\x72\xea\x9b\xf2\xbc\xdd\xaf\xcb\x73\xc3\xc5\x66\x88\x8c\x76\x49\xca\x56\x27\x49\x70\x9a\x27\x45\xf9\x72\x21\x12\x94\x39\x45\xf2\x99\xf8\xa9\x4a\x1d\xea\xa7\x1f\xd5\xbf\x7c\x38\x00\x14\xc2\x84\x3b\x92\x80\x6c\x21\xce\x98\xee\x8f\xd8\x52\xf2\xb0\x1e\x1d\xea\xf6\xfa\xb2\xb5\xba\xa5\x4e\x33\x25\x3f\xb6\xb1\xc4\x6b\x1b\xb7\xd1\x14\xb7\x10\x14\x87\xa8\x89\x1f\xa0\x12\x29\x62\x8c\x2e\x8d\xbe\x68\x79\x9b\x92\xaf\x32\xfb\xaa\x4b\xb5\x6f\xc9\xc0\x73\xfc\xea\x85\x05\x95\x5f\x40\x34\x53\x2f\x1f\x11\xed\xe8\xeb\x0e\x44\x66\xb0\x6d\x91\x9f\x9e\xec\x22\xee\xae\xc3\x5e\x9d\xb7\x14\xaf\x56\x2b\xbf\x14\x2e\x7c\x93\x07\x7f\x85\xb3\x4a\x4d\xdf\xa8\xe0\x49\xc1\x57\x68\x01\xc6\x17\x2a\x68\x18\xcd\x18\x3e\x08\x7e\x57\x21\x68\x4d\xf5\xcc\xd5\xef\x11\xf9\x2f\xb3\xc5\x31\x46\x26\xa6\xde\x85\x5c\xa5\xc0\x22\xe5\x37\xcb\x8f\x74\x23\xb4\xb4\xa9\x66\xea\xfd\x40\x60\x3e\xc7\x8b\x68\x36\x85\x16\xb4\xed\xfa\xc7\x77\x22\xa3\x3f\xc2\xa6\x93\xc5\x82\xcd\xaf\xd1\xc4\xaa\x11\xbc\xb0\xe1\x5d\xaa\xd1\xa9\x91\xcd\xb0\xc4\x55\x15\x4f\xe1\xdc\xcb\x2b\x12\x14\x5f\xd2\xe0\x74\x83\x9c\x8e\xd2\x66\xd1\xbb\x5c\xee\x28\x24\x22\xf1\x88\xd9\x07\xfe\x1f\x6f\x0b\x10\x66\x35\xf6\x08\x90\x8f\x9f\xa9\x4d\x30\x8c\xc2\x3c\xa2\x45\xb5\x11\xb6\xfe\x83\xfd\xd3\x7d\xc5\x4a\xb7\x90\x4b\x36\x4f\x5c\x73\x60\xcb\xe2\xb9\xca\x02\x5a\x37\x62\x93\x85\x9b\x72\x39\xa7\xe7\xdc\xe9\x51\x5c\x9e\x3b\xc9\x3d\x25\x3e\xfb\x38\xa5\x97\x90\xdb\x59\x33\x64\xd5\x22\xb6\x29\x43\x65\x42\x74\xb8\xbc\xe8\x75\x82\x9c\x6d\x73\x75\x75\xa6\x75\xba\x05\x80\x0c\x0b\x0e\x8a\x8e\x29\xa7\xe3\x4a\xd0\xbe\x5a\x4d\x00\xed\x85\xa6\x7b\x25\xe1\xa3\xa6\x2c\x8b\x26\xa7\xe6\xab\xb5\xa5\xcb\x18\x39\xf6\xc2\xbf\xd9\x25\x87\xbc\xf8\xfa\xf4\xee\xdf\xb3\xe2\x53\xc6\xf3\x9e\x0c\xfe\x92\x9d\xb3\x77\x43\xf3\x7b\xf8\x2f\x15\xe3\xd4\xb0\x66\x8b\xf5\xa8\xce\xaa\x7c\xd7\xf6\xd8\xc0\x0c\xbb\x49\xd1\x6c\xfd\x29\xaf\xf3\x4d\x5e\xf0\x69\x2a\xfe\x2c\x32\xda\x55\x71\x17\x01\x35\xa2\xe0\xec\x5f\xc1\xd9\xbf\xb2\xf0\x4d\x79\x72\x9e\x1e\x32\xca\x2d\x54\x48\x38\x7e\x1a\xd4\x49\x57\xa3\xde\xc5\xf3\xf2\xe5\x6b\x60\x95\x1c\x26\x88\xda\x01\x86\x79\x6d\x08\xc4\x0e\x19\x4c\x3e\x6e\x66\xf9\x49\x8c\x5f\x78\x78\xec\xca\xeb\xda\x33\x91\x08\xf7\x24\x89\xdd\x7e\x4d\x48\x52\x55\xe5\x67\x42\x85\x50\x1a\xda\xd8\x75\xd3\x89\x0b\x73\x32\xbb\x8d\x58\x8a\x1c\xc1\x0c\x50\x57\xae\xdf\x37\x67\x9f\x5f\x0e\x97\xc0\x3a\xad\xe6\xbc\x7c\xe9\x61\xe0\x5c\x70\x82\x06\x07\xf4\x25\x70\xe0\x0e\xcd\x73\x09\x6b\xbc\xf4\xe9\x6c\x38\xaf\xeb\x53\xe0\xef\x18\xa5\x9f\x81\xe7\xfe\x3e\xc9\xfe\xc4\xd9\x0c\xe3\xa5\x9b\x44\x48\xa8\x7f\xb0\x27\xa7\x37\x19\xd2\x44\xf5\x47\xf1\x54\x77\xa7\x5d\x82\xce\xfe\x62\xdd\xe3\x1a\x04\x4e\x90\xdd\x49\x06\x51\x1d\xf6\x56\x19\xaf\x33\x77\x53\x84\xe8\x8e\x54\x1c\xe8\xf5\x00\x09\xd2\x83\xbc\xa3\xcf\xa0\x20\x7d\xad\xb9\xbf\xcf\x53\x79\x12\x8f\xbe\x86\x9c\x3a\xef\xeb\x6b\x81\xbe\xbe\xc0\x1a\xb5\x5c\x40\x8f\x4a\x5b\x81\xd7\x19\x93\x59\xb7\x31\xd1\xef\x4c\x80\x25\x50\x66\xca\x76\x5e\xad\xa9\x0e\x49\xf1\xab\xb9\xf0\xfc\x09\xd5\xdb\x5d\xf8\xb0\x2b\x11\x23\x2f\x61\x42\xb9\x12\x3e\x90\x11\xaf\xb0\x80\x50\x57\xe4\x17\x8f\xae\x95\x46\x0f\x4e\x1a\xb7\x5e\xd9\x39\x98\x14\xce\xa9\x17\xa6\xcd\x75\xfe\x60\xbd\x72\x86\x9d\x87\x70\xed\x13\x22\xee\xd5\xe5\xc0\x6b\x73\x4b\xfe\xaf\xc5\x41\xdf\xf0\x7f\x88\xa5\x66\x0d\x1b\x58\x3d\xb7\x9f\x77\x76\x1f\x48\x10\x63\x20\x9e\x23\x31\xd1\x86\xe8\xf7\x53\xb2\x6b\xc8\x69\xe2\xba\x4f\xaf\x33\x8b\x6e\x97\xe8\xa6\xf1\xd8\x27\x52\x11\x65\x1e\xeb\x7d\xe7\xce\x7f\x57\x48\x4c\x6c\x16\xb1\x4a\xf3\x26\x1e\xba\x25\x17\x4d\x51\xe5\x5b\x1a\xfb\x6d\x0a\x4a\x1d\xa5\x9b\x3f\xa0\xd5\xc6\xde\x7f\xf5\x08\x51\xf4\x5b\x79\xae\x3d\x25\xb2\x2f\x11\x0f\xde\x11\xf4\x80\x57\x3d\x43\xdd\x09\xe5\xd6\x23\x77\xec\xa0\x1c\xa4\x33\x2d\xc0\xa8\x1d\x8b\x07\xc6\x0d\xcb\x03\x23\x17\xc6\xab\x95\x10\x77\xe4\x72\xa4\x72\xe2\xd1\x43\x76\x88\x01\x83\xa6\x7b\x92\x68\xe1\x98\x6f\x11\xb5\xd6\x61\xd2\x68\x00\x46\x38\x15\x88\x13\x01\x5a\xd4\xb0\xd5\x87\x69\x7f\x69\xb7\x92\x24\x8f\xb2\xc1\x52\x84\x85\xad\x1e\x6d\xe9\x21\x6d\xd4\x0f\x74\x42\xc0\xc0\x41\x71\x70\xd8\x80\x0e\x35\x68\x75\x6f\xda\xfa\x99\xc1\x11\x77\xd2\x22\x46\xbc\x4d\xd8\x12\x59\x53\x0f\x1f\xda\x3a\xf5\x1d\x11\xda\x03\x13\xa7\x1b\xde\xe6\xac\xdb\xf8\x39\xea\x48\x29\x29\xbc\x00\x62\xbb\x54\x3f\xc9\xa0\xde\x55\x1a\x08\x9b\xec\x6e\x92\x92\x20\x1d\xf5\x34\x7d\xf2\xa9\x26\xb2\x46\xbe\xda\xe4\xf8\x0c\xfa\x5b\x3a\x29\x0a\xf9\x40\x97\xd9\x80\x1c\x4d\xd3\x87\xe1\x7b\x6f\xa7\x93\x17\x5f\x68\xc6\xf4\xdb\x28\x5e\xb4\x3d\x55\xe5\xee\x15\x2f\x82\x0f\x56\xb5\xe0\x03\x1e\xcc\x8e\xf9\x3b\x23\xf0\x7d\x0d\xde\x35\x09\x54\xe9\xd6\xa7\xac\xaa\x4f\x99\x4c\x51\x33\xe6\xdf\x85\xb8\x80\xe6\xbd\x78\x78\x95\x66\xbe\x4a\x78\xa3\x1c\x0c\xe5\x4b\xb6\xec\x23\x4f\xd3\xf7\x5c\x27\x87\xa1\x5d\x61\x58\x1f\x20\x86\x3f\xea\xda\x4e\x8c\xf0\x56\x7a\xd1\x32\xea\x22\x66\xd4\x45\x0d\x67\x4d\x24\x53\xd6\x06\xa9\x8d\x54\x1a\xdb\x16\x9a\xfb\x91\x1b\xb7\x91\x2a\x2b\xaf\x3e\x9d\x3a\x93\x24\x2e\xa7\xa5\xca\x09\x76\x5f\x85\x0b\x61\xbc\xe8\x1d\xbd\x1b\x10\x87\xbe\x42\xc0\xf3\x7a\x24\xba\x8b\x72\x5a\xa9\x7a\x81\x58\x9b\x98\x10\x82\x80\x8c\xac\x78\x82\xa3\xf1\x94\x2a\xd0\x8b\x3f\x13\x10\x1c\x37\x04\x55\x59\xdc\x7a\x58\x3d\x87\xcf\xff\x74\xbf\xf6\xe3\x1f\x4b\xe2\xc7\x87\x16\x0f\xbd\x4e\x0d\x3d\xc2\x25\x0b\x7a\x27\x18\x17\x0c\x77\x77\x3e\x07\xb1\x53\xc0\x16\x9c\xf1\xc3\x80\x73\xa9\x5f\xf6\xef\xd7\x62\x54\x84\x5a\x7c\x02\xff\x50\x7c\xfa\x33\x11\x0c\xe5\xf7\x38\xff\x8b\x3f\x4c\xf5\xde\xed\xe9\x61\xd8\x94\xef\xbd\xbe\x1e\x7a\xa4\x00\x6f\xca\x81\x5c\x00\x7a\x93\xae\xc4\xc3\xf3\xbb\xe7\xe9\xd3\xff\xfa\xaf\x3f\x71\xbc\x7f\xd5\xb3\x3e\xfa\x73\xbe\xad\xca\xba\xdc\x35\x91\xe9\xa3\x6e\x92\xaa\xf9\x23\xd7\x8b\xba\xa9\x7e\xfc\xe1\xbb\xc7\x58\xfe\xdf\x0f\xc3\x41\x76\x4c\x41\x45\x6c\x2b\xfe\x4d\x35\xfe\xeb\xd7\x53\xf6\xe3\xd8\x19\x48\x95\x9d\x32\x7e\x40\x2e\xfe\x67\xf4\x85\xd0\x05\xa9\xe6\xce\x89\x90\x38\x70\xbb\x5f\x3d\x24\x03\x62\xcc\xa5\x57\xa8\xc7\x8d\x18\x5f\xa1\x1e\x52\x17\xb0\x86\xcc\xef\x57\x8f\x56\xd2\x5f\xaf\x1e\x71\x48\x3d\x1e\xdf\x46\x3d\x4c\x60\x03\x2e\xef\xf7\x30\x6f\x78\xef\xdf\x9c\x81\xc2\x53\x00\xdc\xcb\x20\xca\xd9\x5f\x23\xe4\x28\xb8\x95\xc8\x46\x99\xca\x97\xe2\xeb\x69\x2f\x20\xb6\xfb\xec\x53\x55\x1e\x47\xc8\x70\xb4\x40\xaa\xa3\x05\x72\x79\xe7\x9f\x29\x7a\x8f\x6d\xbe\xa6\x5e\x7b\xbe\x79\x1c\x34\xa9\x97\xc0\x37\xa0\xd8\x2a\x78\x35\x33\xe0\xb4\x07\x7d\xe8\x0f\xb0\xb6\x4e\x3a\xc5\x71\xd1\x27\x21\xf6\x8c\x0f\xbe\xe9\x67\xb6\xb5\x9c\x5d\x47\xb1\x9f\xd8\xda\xe7\xd3\x26\x63\xd3\x22\x33\x9b\x28\x3f\xfc\x6d\x12\x4f\x57\x3f\xb4\x32\x83\x6c\x93\xfc\xe0\x18\xfd\x34\xdf\x26\x0d\x9b\x37\x84\xc0\xf5\x7e\x47\x0c\x3f\xc9\xcd\x0e\xeb\x7c\xad\x8f\x1f\xbf\x5f\xd3\xb9\xff\xd5\x79\x11\xab\xf7\xed\xbb\xf7\x92\x00\x41\xd2\xa0\xc8\xe9\x07\xc5\xc1\x63\xe2\x26\xfe\xcd\xee\xd3\x8d\xf5\x51\x33\x27\x94\x8d\x7a\x24\x8f\x5e\x83\xf1\x40\x60\x9f\x79\xf0\xb7\x95\x5f\x01\x16\xaf\xf8\x81\xd8\x44\x05\xdb\x1c\xce\xc3\xe1\xd4\x88\xb4\xcf\xa9\x46\x30\x01\x23\x98\xc0\x9d\xc6\x40\x20\xbc\x95\xb5\x4e\x76\xe6\x09\x4d\xa7\x3d\xfb\x7e\xed\x3c\x79\x2c\x33\x9f\x01\xf1\x99\x90\x48\xa1\x91\x30\x4c\xcf\x09\xcd\x7b\xb5\x93\xe6\x13\x2d\xce\xd7\x2f\xb0\xad\xd0\x80\x5e\xef\x51\x7f\x83\x95\x2e\x38\x99\xfb\xce\xf4\x29\xd0\xc3\xa9\x37\xd3\xdd\x97\xc1\xa7\x81\xa5\xa5\xff\x28\x0c\x69\x68\x23\x7b\xde\x17\x71\xfb\xa0\x8f\x20\xd5\xaa\x5e\x0e\x11\x6a\xa5\x7a\x95\x5a\xda\xd4\x26\xe5\x04\x2c\x03\xe0\x11\x76\x7a\xad\x81\xd7\xbc\x78\x10\x21\xf3\x24\x76\xf9\x17\xb5\x5c\x0d\x6d\x81\xd8\x91\x1a\x46\x69\x31\xda\x97\x55\xfe\x4f\xfe\xb8\x78\x31\x48\x53\x03\xe8\x55\xa8\x06\xe6\x19\x72\x8b\xd2\x94\x60\x10\xf9\x52\xb9\x0f\xa8\xca\x15\x38\xdf\x1f\xd3\x20\x66\xaf\x6c\x18\x89\x4d\x17\x40\x82\x2c\x90\x49\x23\x35\x78\x1b\x8c\x42\xc3\xa3\x4c\xf8\xf9\xd9\x26\xb1\x14\xc3\x32\x00\x26\xb3\x3e\xea\x77\x5e\x9e\x6d\x99\xd3\x30\x0c\xa5\x50\x1d\x93\x4f\xa6\x01\xff\xdb\x16\x43\x1a\xd4\x4f\xa7\x52\xc5\x15\x21\x18\x5d\xea\x82\xea\x08\x6f\x0c\x6c\xca\x15\xf8\x29\x79\x01\x18\xe5\x2f\x53\xa5\x43\xc3\x41\xbd\x29\x52\x40\x30\x7c\xc7\x80\x39\x85\x72\x6f\xd3\x79\x76\x07\x6e\x69\x5e\xbb\x75\xce\x53\xad\x80\x22\x01\x85\xe9\xa1\x24\x84\x02\xf4\x12\x36\x10\xa3\x2b\x3a\x52\x56\x01\xa9\x38\xdc\xf7\xf9\x4d\x31\x57\x9d\xe4\x70\x66\xf1\xd7\x85\xf6\x8c\x71\xc2\x16\xa8\x20\x29\xf7\x94\xa9\xc7\x13\xf4\xf0\xf1\x25\x10\xce\xfc\xbb\xfc\x70\x2a\xab\x26\x39\x36\x57\xf0\xda\x92\x7d\x5e\x18\xd6\xef\xf3\x34\xbb\xc0\x5d\x5e\x58\x59\xef\xcb\xcf\x2e\x55\xb0\x36\x3f\xaa\xa8\x9e\x8b\xb7\xdb\x78\x8d\x84\x85\x12\xc8\xf9\xfa\xfd\x14\x7f\x8c\x07\xc9\xda\x3f\x20\xc3\x86\xcc\xb7\xdd\xfe\x71\x1a\xdf\xa0\x91\xdd\x04\x08\x5f\x7b\xf4\x40\xb2\x93\x1d\x53\x54\x14\x96\x7c\xfd\x03\x0f\x6b\xfd\x94\x67\x9f\x39\x98\x32\x4d\x69\xf6\x29\xdf\x66\xd2\x86\x5e\x23\x35\xd6\xd1\x97\x7a\x68\xfe\xae\x0f\xf6\xef\x43\x6a\xff\x2e\x5e\x82\x2c\xb5\x68\xa4\xd0\x87\xb0\x44\xfa\x69\x44\x11\x86\xad\x0f\x44\x09\x6e\x6d\x8a\x30\xec\x21\x25\x4a\x70\x6b\x53\x84\x61\x8b\x17\xa2\x04\xb7\x36\x45\x48\xb5\x11\x3b\x4c\xb8\x9b\x89\x2f\x58\x2e\x96\xc2\x57\xb1\x2c\x08\x2a\xa0\x58\x87\x28\x40\x51\x71\x6d\xaa\x60\xdd\x88\xad\x2f\x10\xd1\x1e\x4a\xb7\x49\xc3\xed\xf8\x5b\x63\xa0\x61\x2f\xfa\xa9\xc9\x7d\x33\x0e\xc9\x4c\xe4\xd0\xdf\x89\x05\x11\x04\x0b\x49\x8c\xc8\x8f\x54\xde\xa5\xe9\x67\xb5\x1a\x3b\xfd\xd4\x87\x9e\x12\x03\x80\x9e\xc4\x70\x5d\x58\x62\x6c\x0e\x02\x89\x79\xed\x82\x12\xbb\x79\x54\xbd\xe5\x78\x3b\xe6\xfe\xd2\xbd\x17\xf7\xdd\x32\x97\xe1\xa7\xb8\x9f\xf1\x98\x7f\x15\x82\x8e\x0e\x69\x4f\xa1\x03\x40\x4f\xe8\xb8\x2e\x2c\x74\xb6\xd8\x02\xa1\x7b\xed\xba\x85\xde\x7b\x58\xb7\x4b\xbd\x3f\xea\x3b\xc4\x7e\x2b\xf2\xbb\xe5\x3e\x16\xc1\xa8\x00\x25\xb0\x69\xed\x12\x06\x80\x9e\x84\x71\x5d\x58\xc2\xc5\x0b\x94\xb0\xd7\xae\x5b\xc2\xc4\x00\x6e\x97\x25\x85\xe4\x0e\xa9\x85\xd1\xdc\x2a\x1f\x6f\x75\x97\xfe\x0d\xb4\x54\xc8\xc4\xde\xbc\x76\x28\x8c\x60\x25\xed\xc6\xd8\xa1\x96\x0a\x25\x98\xa7\xdd\x28\x0d\xcf\x54\xe3\xb0\x4f\x65\x9d\xaa\x53\x95\x1f\x9b\x0e\x5f\x43\xc2\x04\x9a\xb4\x6b\xb6\x0b\xeb\x29\x37\x51\x1d\xd6\x6f\x01\x0c\x55\x9c\x6a\x8d\xb5\xdc\x05\xee\xe5\x5a\x51\xc3\xed\x9a\x07\x08\x1a\x29\xfc\x0d\xfd\x74\x4e\x15\x12\xfe\xfe\x71\xdd\x33\xa7\x14\x22\xa5\x65\xad\x1a\x74\xfd\xff\x02\x00\x00\xff\xff\xb5\x51\xa0\xce\x5a\xbb\x01\x00") +var _webUiStaticVendorBootstrap331CssBootstrapMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\xef\x8f\xe3\x38\xb2\x20\xf8\xfd\xfe\x0a\x4d\x35\x0a\x5d\xd9\x65\xa9\x24\xff\x4c\xdb\xe8\xbc\x79\x37\xbb\xd8\x37\xc0\xce\xfb\xb2\xf3\x61\x81\x9e\xba\x03\x2d\xd1\xb6\xa6\x65\x49\x23\xc9\x99\x59\xed\xf5\xfe\xed\x07\xf1\x87\x48\x06\x83\x92\xec\xcc\xea\x7b\x07\xf4\x2b\xbc\xe9\x34\x19\x0c\x06\x23\x82\x8c\x50\x90\x0c\x7e\xf9\xe9\x4f\xff\x87\xf7\x93\xf7\x7f\x15\x45\x53\x37\x15\x29\xbd\xe7\x59\x30\x0b\x22\xef\xd3\xb1\x69\xca\xcd\x97\x2f\x07\xda\xec\x64\x5d\x10\x17\xa7\x87\x16\xfa\x2f\x45\xf9\xad\x4a\x0f\xc7\xc6\x9b\x86\x51\xe4\x4f\xc3\x68\xee\xfd\xfd\x25\x6d\x1a\x5a\x4d\xbc\xbf\xe6\x71\xd0\x02\xfd\xf7\x34\xa6\x79\x4d\x13\xef\x9c\x27\xb4\xf2\xfe\xf6\xd7\xbf\x73\xa4\x75\x8b\x35\x6d\x8e\xe7\x5d\x8b\xef\x4b\xf3\xb2\xab\xbf\x74\x5d\x7c\xd9\x65\xc5\xee\xcb\x89\xd4\x0d\xad\xbe\xfc\xf7\xbf\xfe\xe5\xbf\xfe\xc7\xff\xf8\xaf\x6d\x97\x5f\xbe\xfc\xf4\x27\x2f\x2f\xaa\x13\xc9\xd2\xdf\x68\x10\xd7\x75\x4b\x68\x18\x4c\xbd\xff\xc5\x30\x8b\xce\xbc\xff\xe5\x1d\xd2\x26\x48\x8b\x2f\x1d\xac\xf7\xd3\x97\x63\x73\xca\x2e\xfb\x22\x6f\xfc\x3d\x39\xa5\xd9\xb7\x4d\x4d\xf2\xda\xaf\x69\x95\xee\xb7\xfe\x0b\xdd\xfd\x9a\x36\x7e\x43\x5f\x1b\xbf\x4e\x7f\xa3\x3e\x49\xfe\x79\xae\x9b\x4d\x14\x86\x1f\xb7\xfe\xa9\xc6\x6b\xae\xbb\x22\xf9\x76\x39\x91\xea\x90\xe6\x9b\xf0\x4a\xaa\x26\x8d\x33\x3a\x21\x75\x9a\xd0\x49\x42\x1b\x92\x66\xf5\x64\x9f\x1e\x62\x52\x36\x69\x91\xb7\x7f\x9e\x2b\x3a\xd9\x17\x45\xcb\xa3\x23\x25\x49\xfb\x9f\x43\x55\x9c\xcb\xc9\x89\xa4\xf9\xe4\x44\xf3\xf3\x24\x27\xcf\x93\x9a\xc6\xac\x45\x7d\x3e\x9d\x48\xf5\xed\x92\xa4\x75\x99\x91\x6f\x9b\x5d\x56\xc4\xbf\x5e\xc9\x39\x49\x8b\x49\x4c\xf2\x67\x52\x4f\xca\xaa\x38\x54\xb4\xae\x27\xcf\x69\x42\x8b\x0e\x32\xcd\xb3\x34\xa7\x3e\x6b\xb0\x7d\xa6\x2d\x69\x24\xf3\x49\x96\x1e\xf2\xcd\x8e\xd4\xb4\xad\xe5\x88\x36\x79\xd1\x7c\xfa\x25\x2e\xf2\xa6\x2a\xb2\xfa\xeb\x43\x87\x22\x2f\x72\xba\x3d\xd2\x56\xc4\x9b\xf0\xfa\xcb\x31\x4d\x12\x9a\x7f\x9d\x34\xf4\x54\x66\xa4\xa1\x06\xdc\x95\x5c\x76\x24\xfe\xb5\x1d\x4b\x9e\xf8\x71\x91\x15\xd5\xa6\xa9\x48\x5e\x97\xa4\xa2\x79\x73\x25\x1b\x12\x37\xe9\x33\x9d\x90\xcd\xb1\x78\xa6\xd5\xa5\x38\x37\x2d\x09\x2d\xdb\x76\xbb\xea\x97\x26\x6d\x32\xfa\xf5\xb2\x2b\xaa\x84\x56\xfe\xae\x68\x9a\xe2\xb4\x89\xca\x57\x2f\x29\x9a\x86\x26\xd7\xdd\xa4\x6e\xaa\x22\x3f\x70\x09\xbe\x70\xa2\x56\x61\x78\x4d\xf6\x39\x2f\xab\x9b\x6f\x19\xdd\xa4\x0d\xc9\xd2\xf8\x7a\x8c\xa4\x58\x82\xe5\x8a\x9e\xbc\x70\xcb\x61\xd2\xdf\xe8\x66\x4a\x4f\xd7\x13\xa9\x7e\xbd\x70\x2a\x7f\x08\xc3\x70\xab\x68\xdf\xfc\xb0\xdf\x87\xd7\xfa\x44\x32\xa1\x2d\xac\xcd\x63\xf8\xf1\x5a\x9f\x77\x93\xfa\x5c\x5e\xca\xa2\x4e\x5b\xe1\x6c\x2a\x9a\x91\x76\x4c\x1a\xee\xd5\xe2\xe3\x96\xf1\x5d\xb2\xcd\xc9\xfa\x16\x53\x53\x94\x1b\x3f\x58\xd0\x53\x8b\xfb\x22\x06\xed\x07\xd3\xb6\x24\x3d\x1d\x04\x37\x36\xe1\xb5\x7e\x3e\x30\x29\x6d\xaa\xa2\x68\x1e\x2e\x2d\x03\xf7\x59\xf1\xb2\xe1\x22\xb9\x72\xbd\x92\x23\x8e\xe8\xc9\x9b\x87\xe5\xeb\xf5\x58\x5d\x3a\x32\xa4\x86\xef\x8a\xd7\x96\xd2\x34\x3f\x6c\x5a\x89\xd3\x9c\x15\x6d\xfd\x53\xf1\x9b\xab\x0e\x2f\xbe\x96\x15\x55\x84\x90\x73\x53\x5c\xe3\x22\xa1\x93\x5f\x77\xc9\xa4\xac\xe8\xa4\x26\xa7\xd2\x98\x6e\xa7\x22\x2f\xea\x92\xc4\x74\xd2\xfd\xa5\x31\x2e\xa2\xa7\xeb\xee\xdc\x34\x45\x3e\x49\xf3\xf2\xdc\x4c\x8a\xb2\xe1\x13\xa3\xa6\x19\x8d\x9b\x49\x3b\x01\x49\x45\x49\x37\xdd\x58\xe3\x4d\x9a\x1f\x69\x95\x36\x5b\x2e\x4b\xf1\x4b\x60\x52\xe4\x3d\xa7\x75\xba\xcb\xa8\xec\x81\xa3\xbc\xb0\x39\xcd\x94\x74\x5f\x54\x27\xae\xc6\x02\xa2\x5d\x2c\x3c\x46\xc8\x2f\xcd\xb7\x92\xfe\xcc\x8b\xbf\x4e\xb4\xa2\x8a\xd6\xb4\x31\x4a\xea\xf3\xee\x94\x36\x5f\x2f\x92\xd7\xa4\x2c\x29\xa9\x48\x1e\xd3\x0d\x6f\xbf\x8d\xcf\x55\x5d\x54\x9b\xb2\x48\xf3\x86\x56\xa2\xb3\x5f\x92\xb4\x26\xbb\x8c\x26\x5f\xf5\x6e\xbb\xc2\x8b\x68\x94\xd0\x3d\x39\x67\x72\x6c\x9b\x0d\x13\xd9\xbe\x88\xcf\xb5\x9f\xe6\x39\xad\x38\x25\x76\xf9\xa5\x24\x49\xd2\x0a\x2f\xdc\x76\xfa\xc4\x40\x2f\xba\xa2\xf2\x95\xf2\xaa\x8d\x26\x3e\xd2\xf8\xd7\x5d\xf1\x6a\x0e\x9a\x24\x69\xa1\x46\xa8\xa9\x46\x37\x73\x6d\x65\xd2\xaa\xf0\xd2\x8e\x42\xbd\xff\xfc\x7c\xda\xd1\xea\xeb\x66\x23\x3b\x63\xa3\xf1\xeb\x32\xcd\x7d\x5d\x53\x1c\xd0\xc5\xb9\x31\xa1\xe5\x5c\x60\xaa\xaa\x4b\x8d\x92\x2a\x3e\xa2\x63\x7a\xdb\x0c\xd9\x22\x7a\xd0\xaa\xdc\x3e\xa5\x59\x82\x50\xa0\x68\xe7\x05\x7e\xdc\x36\xc9\x90\xc1\xba\x1a\x24\x34\x2e\x2a\xd2\xae\x4d\x98\x0e\x32\xfd\x66\x9d\xd7\xb4\xe9\xb4\x22\x98\x2d\xe8\xc9\x0b\x96\x53\xf6\x9f\xd5\x82\x9e\xb6\x72\x86\x79\xd3\xf2\x55\xea\x4c\xbb\x14\xd7\x45\x96\x26\x5e\x9d\x66\xcf\xb4\xba\x66\xf4\x40\xf3\x04\x53\xae\x6e\xa6\x9a\xab\x83\x9c\xd0\xd6\x0a\xde\xb4\x7a\x2e\x57\xfe\x76\x5d\xd0\xf1\xb5\xa6\x24\x23\x65\x4d\x37\xf2\x8f\x6b\x93\x4c\x9a\xa3\xea\xf8\xda\x3a\x05\xff\xa3\x38\x57\x31\xdd\x78\x88\x6b\x71\x5c\xec\x4a\x66\xfc\x17\xfe\xae\x48\x33\x5a\x31\xe3\x65\xb8\x18\x75\x15\x7f\x89\xeb\xfa\x4b\x6b\x83\x99\x57\xf1\xd3\x97\x3f\x9f\x68\x92\x12\xaf\xac\xd2\xbc\xb9\xfc\x34\xd9\xec\xe8\xbe\xa8\xe8\x64\x43\xf6\x0d\xad\x34\xcb\xf1\xa7\xf4\x54\x16\x55\x43\xf2\x66\xcb\x5d\x84\x23\x49\x8a\x17\xc6\x6b\xad\x4a\x33\x2f\x9a\x51\xd4\x00\x0c\xe5\xc3\x51\xb8\x6a\xae\x64\x42\xd8\x02\xd7\xd0\x84\x2f\x69\x4a\x0d\x36\xcc\xeb\xe2\xa6\xfe\x97\x63\x45\xf7\x5f\xbb\x01\x30\x35\xdd\x7c\xf0\x3e\x7d\xf0\x48\xd3\x54\x9f\xda\xda\x07\xef\xc3\xc3\x07\xdd\x1e\x3b\xa1\x59\xb5\x00\x67\x88\xff\xef\x9f\x3f\xfc\xf0\x41\xc0\x4f\xba\xa2\x7f\x92\x67\x52\xc7\x55\x5a\x36\x9b\x0f\x16\xb2\x0f\xad\x09\x99\x30\x07\xe5\x5f\xe7\xa2\x91\x2a\xa0\xa9\xda\x0f\xeb\xf5\x7a\x5b\x92\x03\xf5\x77\x15\x25\xbf\xfa\x69\xde\x7a\x56\x1b\xf2\x5c\xa4\xc9\xb5\x69\xfd\xa7\xce\x07\x61\x4a\xe4\x73\x97\xca\x67\x7a\x76\x6d\xaa\x49\x6b\x44\x5d\xed\xdb\xba\x13\x79\xf5\x5f\xd2\xa4\x39\x32\x77\x4e\xe3\x69\x39\x39\x4e\x27\xc7\xd9\xa5\xa8\xca\x23\xc9\xeb\xcd\x6c\xfb\x92\x26\xc5\x4b\xbd\x99\x5d\x79\x85\x86\x95\x0d\x4b\x20\x15\x96\xc5\x74\x27\xf6\x1a\xe2\x20\x27\xcf\x3b\x52\x99\xbe\x53\xb0\x6b\xf2\xa7\x20\x26\x15\x6d\x26\x41\x52\x15\xe5\xb9\x7c\xd2\xca\xe4\xdc\x68\x8a\xd2\xc7\x34\xef\x1a\x64\x64\x47\x33\x84\x7f\x61\x18\x5e\x03\x63\x7e\x59\xd3\x49\x47\xc3\x20\xbd\x26\x99\xc8\xbf\x8e\xb6\x53\x07\xc7\xc3\x19\xcf\xb1\xd3\xc4\x6b\x8e\x13\xab\x28\x41\x28\x4b\x92\x44\xc3\x72\xfd\xb3\xf0\x14\x62\x6a\xf8\x0c\x3f\xfe\xb7\xec\x5b\x79\x4c\xe3\x22\xaf\xbd\x7f\x27\xd9\x3e\x4b\xf3\x43\xfd\xe3\xb6\xae\xe2\xcd\xb9\xca\x3e\x05\xc1\x97\x16\xba\xfe\x72\xe8\xc0\xfc\xa3\x04\xf3\x2b\x7a\x38\x67\xa4\x0a\x68\xd1\x3c\xdc\xde\xe4\xff\xfc\x21\xa5\xfb\xf4\xf5\xc1\x6b\x7d\x03\xd2\x7c\xfa\x91\x9e\x76\x34\x49\x68\xe2\x17\x25\xcd\xdb\x65\xf8\xc7\x87\xc9\x78\x8c\x2f\xc5\x7e\xaf\x70\xb5\xbf\x6e\x6a\xde\x34\x5a\xeb\xa6\x3a\xd3\x9b\x09\xa8\x9f\x0f\x3f\x28\x80\xff\xa7\x03\x10\xf5\x0a\x7b\xfd\x7c\xf8\xf1\xe1\x1a\x74\xb0\x88\xbf\xdb\xfa\xad\x51\xf9\xba\x45\xbf\x35\x46\xc8\x4f\xf3\xd7\xb9\xdf\xb1\xd5\x6d\xc2\x3c\x0c\x0d\x1f\x3a\xea\x56\x47\xde\xee\x54\x14\xcd\xb1\x5d\xfa\x49\xde\xa4\x24\x4b\x49\x4d\x13\x6e\x9e\x8b\xfa\x15\xc2\x1c\x2a\xf2\xad\x8e\x49\x46\xb5\x11\xf9\x6c\xd5\x4f\xeb\x5f\xc5\xaa\xae\x96\xa4\x7f\x4c\xc9\x07\x1d\xb0\xcc\xce\x35\x02\xb4\x33\x80\xe8\xb9\x2a\xa4\x7d\x30\x8b\x91\xa6\x21\x89\x8d\xc6\xa7\x34\x47\xbb\x98\x46\x53\x03\x2e\xce\x8a\x73\x82\xc0\x2d\xc3\xc8\x24\x26\x7f\xa6\x59\x51\x52\x04\x74\x15\xae\xcd\xc1\xd1\x3c\x4e\x33\x14\x70\x6f\x00\x1e\x32\x52\x23\x34\xd2\x10\xf4\x7d\x3a\xd7\x69\x8c\xc2\x99\x63\xe1\xde\x0a\x0a\x38\x33\x00\x8f\x94\x54\x0d\x0a\xb7\x30\x11\x36\x04\xe1\x35\x0d\xc3\xa5\x05\xe6\xd3\x53\xd9\x7c\x43\x81\x57\x06\xf0\xb9\xa6\x38\xce\x47\x03\x6c\x9f\x66\x27\x14\xcc\xe4\x75\x73\xf4\x33\x52\x1d\x10\xb1\xd0\x30\x0a\x01\x28\x0a\x14\x59\xf8\xd2\x1a\xe5\x0d\x50\x9c\x02\xd1\x72\x1a\x46\x26\xa3\x2b\x7a\x2a\x9e\x71\xe2\xe6\x06\xe0\x6f\x45\x71\xf2\xd3\x1c\x85\x5c\xd8\x90\xc5\x19\x27\xd1\x94\x4b\xb1\xdf\xa3\x50\xa6\x40\xea\xf4\x90\x13\x44\x5d\x69\x18\x99\x22\x89\x8b\x03\x0a\x05\x24\x52\x91\x1a\xe5\xf4\xd4\x14\xc7\xb1\x38\xa1\x8c\x99\x46\x50\x0f\x70\x30\x53\x1a\x4d\xea\xc0\x06\xe4\x51\x10\x64\xb2\xd3\x70\x6a\x4a\x23\x29\x5e\xf2\xac\x20\x89\x4f\x32\x94\xcf\xd3\x05\x0a\x8e\x82\x9a\x22\x39\x97\x4e\x40\x53\x2a\x69\xbe\x2b\x5e\x51\xb8\x47\xb0\x92\x92\x6f\x7e\x9c\x56\xb1\x83\x4d\x6b\xa0\x8f\x25\x25\xe8\x90\x66\x21\x00\xdc\x57\x14\x97\xe3\xcc\x14\x50\x3b\x5d\x5c\x7c\x9a\x99\x42\x6a\xcd\x18\x0a\x66\x0a\x69\x9f\x11\x54\xd1\x66\x73\xb8\x88\x25\xe5\xb1\xc8\x29\xba\x84\xce\x4c\x11\x3d\x17\xd9\xf9\x44\x5d\x33\x62\xb6\xc4\x80\x5b\xb1\xa2\xd0\x2b\x0c\xfa\x5c\xa2\xb0\xa6\xb4\xfe\x55\xc5\x45\x82\x0a\x6a\x66\x0a\x6a\x47\x9c\x90\x73\xb0\xac\xe1\xcc\x9a\x47\x10\x0a\x65\xd3\xdc\x94\xd0\xae\xc0\x97\xb5\xf9\xcc\x02\x3b\x91\x0a\x07\x35\xa5\xc4\x3e\xf4\x50\x38\x53\x40\x31\x39\xd1\x8a\xa0\x80\xa6\x70\x58\x74\x0a\x03\x5b\x01\x12\x33\x74\x9a\xcd\x4d\x81\xf0\xb0\x26\x0a\x08\x96\xb5\xf6\x03\x50\x38\x4e\x08\xf4\x22\xb4\xa1\xf9\x07\x10\x06\x6c\xca\x86\x05\x30\xfd\x8c\xee\x71\xcc\x53\x04\x38\xa6\x79\x83\x9b\xd1\xc5\x0c\x01\xaf\x9c\x64\xcf\x11\xe8\x7f\x9e\xeb\x26\xdd\xa3\xb6\x7c\xb1\xb0\xe6\x3e\x0a\xb6\x04\x6b\x59\x42\xf3\xc6\x3d\x42\xb8\xf2\x31\x68\x37\xcd\xc0\x51\x20\x31\x6d\x57\x7f\x9f\x85\xe9\xd1\x06\xc0\x3d\x4b\xe3\xe6\x5c\xa1\x53\x6b\x69\x4a\xf1\x44\x4a\xbf\x55\x73\x9c\xd3\x4b\x20\x18\xbe\x7d\x81\x01\xce\x80\xa9\xc2\x15\x78\x69\xca\x82\x26\x29\x0e\x06\x5c\xb4\x23\x71\x8c\xc5\x94\x01\x8b\x3a\xa2\x70\x26\xf7\x5d\xfe\xca\xf2\x11\xb8\x7c\xb4\xf4\xdb\x6f\xd8\x17\x52\xa1\xf3\x6c\xb9\x06\x52\xaa\x9b\x5e\xf8\x55\x08\xd6\xbf\x1e\xd0\xc8\xb2\x80\x28\x98\x29\x9f\x92\x9c\x6b\x74\x64\xab\x19\x18\x59\x81\xae\xe4\xab\x39\x58\x86\x2a\x27\x7d\x0b\x7b\xe8\x7d\xe0\xd0\x99\xa6\x65\x2f\xb8\x29\x2f\xfa\x4f\x1a\xa3\x7a\xb2\x7a\x84\xf2\x7f\xae\x0a\xf7\x32\xb3\x5a\xa3\xe0\xce\x59\xf8\x18\x5a\x1f\x74\xcc\x93\x44\x61\x23\xfb\xd3\xcc\x0d\x3c\x45\x3c\x68\x37\xf4\x0c\x38\xe5\x6e\x48\x53\x7e\xff\x3a\xd3\xba\xfd\xf8\x76\xc3\x2f\xc0\xaa\xb4\x2f\xdc\xb0\x40\x84\x71\x45\x69\x5e\x1f\x0b\x9c\x73\x2b\x6c\x80\x6e\x17\xee\xf1\x11\x0e\xb1\x07\x16\x7a\x11\x79\x0f\xf0\xda\x14\x21\xa9\xaa\xe2\xc5\xa9\x1f\xeb\x08\x01\x76\x6a\xc7\x7a\x8a\x40\xe3\x1e\xd2\x7a\x86\x80\xba\x5c\xaf\xf5\xdc\x5e\xfc\x5c\xce\xe7\x7a\x01\xf8\xcc\x76\x99\xf7\xe7\x0c\xfd\xd6\x59\x2f\x31\x68\xb6\x5d\x89\x82\x83\x59\xf8\x1a\x67\xe4\x44\xfa\x14\x2a\x02\x1f\xf5\x87\x14\x65\x74\x04\xbe\xe9\x33\x4a\x30\x97\x35\x02\x5f\xf4\xfb\x14\xb5\x02\x51\x08\x8c\xca\x37\xca\xc2\x6c\x28\xe8\xc2\x02\x8d\xb3\x02\x5d\x33\x23\x10\x00\x78\x21\x55\x9e\xe6\x07\xf7\xd0\x57\x70\xc5\xce\x71\xb4\x60\xcd\x22\x19\xcd\x13\x34\x04\x11\x81\x38\x40\x45\xf2\xa4\xc0\x02\x06\x11\x88\x02\xc4\xc5\xe9\x44\x51\x03\x1c\x81\x50\xc0\x89\x1c\x72\x8a\x03\x4e\xd1\xb5\x12\xd5\xef\x08\x44\x04\x24\xb0\x43\xc3\x23\x10\x17\xa8\x68\xf3\x42\x1d\x54\x40\x47\xa0\x28\xcb\x56\x08\x31\x1e\xdb\x89\x22\xe8\x47\x67\x2c\x6e\xed\x12\x31\x88\x12\x08\x70\x97\xf2\x80\x50\x81\x98\x3e\x72\x8f\x1e\x6d\x01\xbf\x4c\x59\x8b\x63\x51\xa5\xbf\x15\x79\x83\xb7\x81\x21\x84\x04\xb3\x90\x11\x88\x20\xec\xce\x59\x76\x2c\x2a\x94\x6c\x10\x45\xd8\x51\x74\xb6\x47\x20\x8a\x10\xb7\xc3\xda\xa7\x31\x69\x50\xce\x81\x60\x42\x73\x3c\x9f\x76\xb5\x43\x3b\x40\x24\x41\xc0\xba\x94\x03\x04\x13\x8e\x24\x4f\x9c\x6b\x70\x04\x02\x0a\x0c\xd8\xb1\xba\x47\x20\xa8\xc0\x60\x1d\x04\xaf\x6d\x48\x17\xb9\x20\xa6\xc0\x2d\xd1\x80\xe9\x88\x40\x78\xc1\x68\xe4\x22\x1f\xc4\x19\x8c\x36\xf8\x30\x40\xc8\xc1\x68\xe1\x1c\x8e\x29\xd7\x43\x56\xec\x50\xf9\x83\xd0\xc3\x4b\x45\x73\x34\x2a\x1b\x81\xb0\x43\x43\xea\x5f\xb1\x8f\xf4\x08\x04\x1c\xf6\x69\x86\x7f\xfc\x45\x20\xda\xb0\xab\x52\xba\x8f\x09\x3e\xbf\x41\xc0\xa1\xb5\x8b\xdc\x6f\xc1\x80\x41\xcc\x21\x21\xf5\x71\x57\xe0\x0e\x6a\x04\x22\x0f\x25\x29\x69\x15\x67\x29\x2a\x06\x10\x7e\x60\x71\x69\x67\x24\x39\x02\x51\x88\x2c\xcd\xb1\x2f\x9a\x08\x46\x20\x8e\x05\x6e\x6d\x40\x04\xa2\x3c\xd7\xc7\x12\x0d\xc1\x46\x20\x04\x71\xae\xf1\x81\x9b\xdc\x3f\xec\xf0\x21\x9b\x7c\xaf\x0b\x7c\xb5\x06\x01\x85\x16\xcc\xdf\x7d\xf3\x49\x56\x1e\xc9\x0e\x37\x08\x20\xac\x00\x9b\x38\xfc\xa4\x08\x04\x18\x64\x33\xbe\xb3\x88\xc1\xcf\xdc\xf0\xce\x3e\xe6\x38\x69\x4d\x53\xa5\xbb\x73\x83\x86\xf0\x22\x10\x6c\xb0\x1b\x39\x7b\x03\xe2\xca\xd9\xc7\x2f\x45\x85\xb6\x80\x8e\x5c\x49\x72\x1c\x10\x06\xc3\xf9\x36\xaf\x73\xb5\x00\x51\x87\x0e\x1e\x5f\x8f\x40\xe4\x21\x2b\x0e\xf8\x6e\x40\xb4\x8c\x60\xac\x14\x8d\xd2\x46\x4b\x18\x7a\x3d\x38\x36\x0d\x22\x10\x9e\xc8\xe9\x8b\xff\x92\xe6\x49\xf1\x82\x02\x43\xf7\x24\x2e\xf0\x55\x00\x86\x29\x08\x1a\x56\x88\x40\x94\xc2\xe5\x5e\x80\x20\x45\x8b\x0d\xef\x15\x44\xf7\xd8\x46\x38\x0a\xb8\x86\x62\x77\x00\x82\xb8\x44\x4d\x71\xed\x58\x41\xb1\x14\x65\xf9\xcd\x4f\xd0\xbd\x50\x1a\x81\xd0\x84\x80\x76\x8e\x6a\x05\xe3\xe3\x0c\xdc\xb9\xb7\x14\xc1\x50\x85\x42\x8f\x42\x2f\x30\x68\x97\x24\x40\xb4\x22\xae\x68\x92\x36\xad\xcf\x89\x53\x6e\xca\x8d\x9f\x09\xc4\x97\x15\x18\xaf\x38\x37\x19\xad\x50\x33\x00\x42\x15\xfc\x6c\x0a\x06\xf8\x68\xb9\xfe\x65\x45\xeb\x1a\x67\x32\x08\x52\x50\x52\x39\x0d\x07\x08\x51\x30\x38\xd7\x5a\x04\x02\x14\x4d\xf1\xe2\xa0\x15\xac\x90\x0d\x69\xd0\x45\x11\x84\x25\xea\xc4\x19\xf7\x8c\x40\x54\xe2\xd8\x07\x0a\xe6\xd7\x79\xc7\x0e\x22\xe1\x14\x80\x48\x20\x3b\xc3\x52\x37\xb4\x72\xa0\x86\xf6\xee\xcc\x3c\xc6\x6c\x87\xca\x76\x0d\xcd\x5e\x0b\xbd\xf0\x23\x14\x16\xda\xbb\x16\x76\xe9\x80\x85\x46\xae\x85\x5d\x39\x60\x81\x6f\x28\x8f\xe3\xfb\x8e\x2d\x8f\x68\x0d\x17\xc5\x43\x5a\x37\xfc\xa0\x98\xbb\x0d\xd8\xfe\xc8\x8a\x73\xd2\xb7\x91\x18\x81\x88\x03\x6f\xe0\xdc\x4e\x8c\xd6\x8f\x60\xe6\x51\xea\xc7\x45\x9e\x3a\x66\xdf\x1a\x6e\xe2\x52\xea\x27\x34\x4e\x93\x73\x81\x1d\xa3\xa0\xd3\x30\xfc\x70\xfd\xe9\x9d\xcf\xab\x5e\x45\x47\xf2\x34\xe0\x3b\x63\x57\x17\x15\xf8\xc9\xe8\xb0\x54\x47\x49\x1b\x52\xfa\xc7\xf4\x70\xcc\x98\xa0\xf9\x89\xac\xea\xb0\x23\x9f\xc2\x09\xfb\xf7\xc0\xaf\x24\xe8\x67\x70\x3e\xfc\x3b\xcd\x9e\x69\xfb\x7d\xeb\xfd\x07\x3d\xd3\x0f\x93\xee\xf7\xe4\xdf\xaa\x94\x64\x13\xed\x1e\x84\xd6\xeb\xbc\x7c\x35\x4f\xe1\x04\xf3\xe9\xe3\x62\x15\xcd\x67\xe2\xac\xf5\x0f\xb3\xd9\x6c\x8b\x1e\x0f\xe3\x67\x5b\x27\xc6\x61\x6b\x75\x7e\x5b\xa7\x4d\x9e\xde\x56\xfd\xca\x12\xbd\x6b\x79\xaa\x9b\x5c\xba\x9e\x57\x64\xb7\xda\xc2\xc3\x8e\xfc\x1e\x02\xbf\x5f\x30\x21\x1b\x76\x06\x5a\x36\x99\xce\x16\xd3\x55\x6c\x35\xd1\xce\x47\x0a\x78\x79\x2f\xa1\x39\xa6\xb9\xb8\x7c\xb0\x95\x65\x8b\xf2\xd5\x23\xe7\xa6\xf0\xd4\x81\xa4\xf8\x5c\xfb\x15\x0b\x67\xb4\xfd\x48\x48\xbf\xd8\xef\x6b\xda\x6c\xfc\x69\xf9\x0a\x4e\xe7\x87\xec\xe0\x21\xb8\x15\x70\x4a\x93\x24\xa3\xd7\x20\x3d\x1d\xfc\x8a\xd6\x65\x91\xd7\xe9\x33\x9d\x04\xec\x3b\x3b\x27\x69\xf6\x94\x9e\x0e\xda\x4f\x8f\xf0\x82\x98\x54\xc5\xb9\xa6\x19\x3f\x1b\xfd\x14\xa4\x0d\x3d\xf5\xd4\xb0\x56\xe6\x5d\x92\xad\x79\x04\x72\xab\x1f\x92\xe6\xe4\xb4\xc2\xa5\xf2\x08\x9f\x5f\x91\x24\x3d\xd7\x9b\x65\xf9\xca\xab\x3b\x92\xf0\x8b\x27\x6e\xec\xdd\xa1\xef\x1e\x45\x43\xb5\xcb\x3e\x91\xfc\x43\x92\x24\x5b\x93\xbe\xb9\x3e\x67\x5a\x6b\xce\x4f\xb0\x91\x2c\xf3\x82\x69\xed\x51\x52\x53\x3f\xcd\x5b\x57\x73\xeb\x17\x43\x10\xfd\xd5\x9c\x0f\xfc\xcb\x1c\x70\x69\x11\x7e\xbc\x1e\x2b\x21\x79\xbf\x29\xca\xcd\xb4\x9d\xcc\xe2\xb7\xb8\xef\xc1\x8a\xe4\xe1\xe9\xad\x3a\xea\xa9\x0f\x90\x52\x7a\x0d\xea\xca\x2f\xf2\xec\x9b\x3a\x8f\x47\x76\x75\x91\x9d\x1b\xba\x15\x1c\x2e\x5f\x25\x83\xdb\x3f\xd5\xc9\x6c\xa1\x79\x7e\x5b\x0a\xae\x8e\x6c\xd9\x17\x6f\x45\xe3\xa6\x5b\x41\xd4\x41\x6e\xd9\x23\x57\x73\xb2\xcb\xa8\xbc\xc4\x83\xd4\xf0\xd9\xd3\xd1\xd6\x3a\x06\x69\x2c\x28\x63\xf2\xd6\x65\xdf\xdd\xe1\x80\x37\x34\x38\x3d\x4c\xfb\x8e\x11\x3f\x83\x3b\x39\xce\x27\xc7\xc5\xe4\xb8\x9c\x04\xc7\x68\x12\x1c\xa7\x93\xe0\x38\x9b\x04\xc7\xf9\x24\x38\x2e\x26\xc1\x71\xe9\x5e\x51\xc4\x81\xc2\x05\x3c\x50\x18\x44\xe0\xbe\xc8\x31\xf2\x58\x08\x7d\x72\x9c\xca\x3f\x66\xf2\x8f\xb9\xfc\x63\x21\xff\x58\x8a\x3f\x82\xae\x59\xd0\xb5\x0b\xba\x86\x41\xd7\x32\xe8\x9a\x06\x5d\xdb\x63\xe4\x05\x5d\x97\x41\xd7\x67\xd0\x75\x1a\x74\xbd\x06\x5d\xb7\x81\xea\x37\x50\x1d\x07\xaa\xe7\x40\x75\x1d\xa8\xbe\x03\xd5\x79\xa0\x5d\x6c\x72\x1e\xb7\x14\x73\x6d\xb5\x5a\x5d\x19\xc7\x99\x20\x02\x2e\x8c\xe0\x38\x1b\xd0\xe7\x88\x5d\x3d\x8a\x2c\x1e\x69\x2c\xb2\x98\xac\xb8\xa6\x0f\x0d\x61\x51\x80\x71\x4b\x8d\x5c\x33\x9b\xcb\xc5\xc7\x2b\xd3\x11\xa6\x3d\x81\xd4\xa0\xa5\x4e\x7d\xe4\xa2\x7e\x6e\xc9\x50\x13\x21\xa2\x07\x4b\x0f\xca\x2d\xc0\x44\x18\xe0\xd2\x5c\xda\xd4\xaf\x5a\xea\x19\xef\xb5\xc2\x59\xbb\xea\x72\x51\xe8\xa5\x8c\x62\x2e\x19\xed\x92\xdb\x9c\x8d\xa3\xa5\x43\xf7\x25\x1e\xdb\x52\xc6\x8e\x8b\x69\xeb\xaf\x82\x3b\x5a\x69\x6b\xbb\xca\xce\x6c\x79\xa1\xc7\x78\x13\x64\x94\x24\x17\x64\x09\xd3\x5a\x2e\xe5\x4f\xa1\x62\x33\x6b\x02\xce\xaf\xe2\x82\xc5\xa7\x53\x9a\x0b\x0b\xb1\x5a\x3e\x96\xaf\x0f\x17\xde\x81\x36\x92\xa8\x7c\xbd\x5e\x05\xaf\xac\x7b\x79\x8b\x8f\xec\x2e\xdf\x24\x60\x37\xfa\xba\x4b\x2d\x53\x7a\xc2\xac\x47\xbc\x7f\xa4\xb3\x6b\xc0\xbc\x80\x8c\xee\xc5\x15\x30\x6e\x83\xdb\xdf\xa2\x8a\xb9\xd1\x7a\x1d\x2b\x10\x95\xfc\x4c\x8b\x5e\xcb\x4b\x44\xb5\x38\x95\xa2\xd7\x8b\x22\x01\x90\x17\x2f\x15\x29\x2f\x2f\xc7\xb4\xa1\xec\xba\x0b\xdd\xf0\x22\x49\x57\xfb\xe9\x15\x93\x9a\xc2\xfb\x69\x5d\x85\x00\x3c\x97\x25\x0e\xd8\x55\x48\x8a\x49\xc9\xce\x0f\xfd\x66\x41\xaa\x1a\x01\x7a\x3a\x37\x34\xb9\x68\x0b\x00\x2f\x2e\xab\x94\x5d\x43\x35\xfc\xaf\x2b\x31\x2a\xc5\xbd\x4e\xe9\x6f\x3d\x2e\xc3\x75\x28\x9a\xd7\xe7\x38\xa6\x75\xe7\x8b\xcd\xe2\xd5\x72\x96\xc8\xe6\xa2\x12\x34\xdf\x2d\xe6\xd3\x58\x34\x4f\xf3\x7d\xd1\xb5\x8d\x56\xe1\xe3\x5e\xb6\x6d\x6b\x40\xc3\xf9\x62\xba\x5c\x8b\x86\x62\xbf\x4f\xd6\x3d\x92\x65\x32\xdb\xc9\xb6\xa2\xd2\x6c\xbe\x5c\x2e\xa2\xae\xdf\x84\xe4\x07\x55\x45\xd6\xf3\xf9\x7c\x2a\x5b\xf3\x3a\xb3\xf1\xe3\x7c\xb6\x98\xcd\xaf\xc1\xee\x00\x19\xc6\xdc\x16\x4b\x1d\x3b\x36\xaa\x06\x02\xa1\x0d\x2b\xf9\xb9\x3b\x74\xdc\xb4\x81\x92\xfd\x3e\x4c\x1e\x39\x42\x93\xad\x36\x6c\x1c\xd1\xe9\x6e\xc6\x10\x32\xfe\x22\xd8\xd6\x34\xd9\x0b\xf2\x34\x46\xdb\x80\x64\x9f\xac\x5b\x07\x65\x77\xe8\x38\xee\x9c\x7b\x44\x83\x72\x22\xdc\xaf\x68\xbc\x5b\x30\x84\x42\x06\x08\xcc\x34\xa1\x09\xe5\xf8\x0c\x61\xd8\xa0\x74\xbe\x5b\xef\xd6\xd7\x80\xdd\xd9\xe1\x61\x18\xb9\x52\xc8\x15\x6c\xdd\x19\x82\xcd\x3c\x2c\x5f\xbd\xd0\xd3\xdc\x32\xfd\x3a\xb2\xe6\x90\x9d\xb3\x49\x91\xe9\xe6\x24\xc4\x6c\xc9\x39\xf3\x18\x60\xfb\xbf\xe7\xcc\x2b\xd8\xdf\xaa\x9d\x00\x0d\xaf\x01\x3b\xa0\x7a\xce\xd9\xb5\x88\xee\x5e\x1d\xdf\x4a\x6a\x57\xcf\x5a\xdd\x98\xc8\xa9\x80\xe6\xae\x36\x84\x15\x98\xd9\x2f\x7f\xc1\xbc\x6b\x77\xe3\xa7\x2c\xc5\x3d\x77\x89\x94\x6f\x80\x2d\x94\x43\xc9\x11\x2f\xca\xd7\x6b\xd2\x3b\xfa\x96\x81\xd7\xa4\x99\x24\xc9\x05\x77\xef\xaf\x49\x63\xdf\xe6\xee\x4c\x0b\x1f\x4c\x8f\x99\x48\x32\x6d\x17\xd6\x6b\x71\x65\x05\x69\xd8\x32\x2e\x1d\xe2\x65\x88\x7a\xbc\x94\x54\x1c\x0c\xae\xf0\xbc\xa0\x6b\x40\xb3\x2c\x2d\xeb\xb4\xde\x62\x6b\x35\xe8\xde\xa4\x3b\x7a\x6c\x07\xaf\xdf\xa4\x9b\xb0\xbf\x13\xd2\x10\xbf\xa8\xd2\x43\x9a\x93\xcc\x17\x77\xde\xc5\xfd\xde\x23\xcd\x4a\x44\xe1\xf8\x27\xa8\xc7\x17\xe3\x34\x4f\xd9\x95\x97\xfa\xa4\xd9\xc0\x75\xf8\x71\xeb\xb4\x00\xda\xf5\x3a\x69\x1c\x5b\xb5\xf4\x34\xc7\x8d\xd9\x76\x68\xc2\x57\xc1\x42\xe9\xbf\x94\xb8\xae\xfd\x0a\xb1\x57\x6e\x32\x52\x37\x7e\x7c\x4c\xb3\x44\xbb\xcf\xe7\x9d\x33\x47\x45\xa1\x57\x58\x33\x41\x03\x14\x99\x12\xb4\x12\xee\x07\x68\x05\xc2\x25\x30\x3f\x6a\x8d\x8b\xfb\x03\x61\x8c\x96\xb1\x56\x97\x32\xc2\x03\x7b\x46\xca\x03\xf4\xf0\xcd\x8f\xff\x60\xf9\x30\xfe\x11\x86\xff\x16\xfe\x78\x0d\x14\xbc\x5f\xd1\x67\x5a\xd5\x3a\x8a\xa0\x3c\x67\x99\x70\x3a\xcc\x69\x17\x59\xf3\x2e\xb4\x95\x56\x7e\x73\xca\x89\xaa\x49\xc9\x10\x60\x88\x91\xe1\x1c\xaf\x46\x14\x80\xc1\xb0\x38\x98\xa3\x23\x31\x40\x30\x1c\xc1\x08\x24\x0e\x66\xa3\x1c\x96\x64\xf3\x3b\xa9\xbd\x23\xe3\x20\xee\x81\xf5\xa1\xd0\x21\x7a\x86\xd5\x87\x42\x07\xd1\x34\xa8\xd5\x1d\x8f\xe9\xd1\x8f\x57\x92\x24\x55\x6b\xf4\x9d\x8e\xb7\x7e\x9b\xce\xb1\xde\xf6\xe7\x67\xf8\x1b\xcd\xb3\x62\xf2\xb7\x22\x27\x71\x31\xf9\x4b\x91\xd7\x45\x46\xea\xc9\x87\xbf\x14\xe7\x2a\xa5\x95\xf7\x1f\xf4\xe5\x83\xca\xdc\xc0\x70\x75\x2b\xca\xb4\x7c\xf5\xe6\xc6\xfa\xd1\xae\x49\xd2\xd1\x58\x4d\x17\x73\x8a\x79\xe3\xeb\xfd\x74\x3f\xb7\x03\x37\xd7\x5f\x77\xc9\x38\xd4\x2e\xb7\x6a\x06\x90\xce\xb4\x68\x90\x76\x8f\x3a\xcd\x6b\xda\x78\xa1\xe7\x47\xcc\xe2\x6b\x71\xd4\x60\xba\x78\xd8\x8e\x86\x6c\x09\xf6\x74\xa2\xf5\x6c\x23\x2c\xee\x05\xcc\x9c\xeb\xba\x37\xbc\xe4\xcd\x72\x6c\x98\x2b\x9b\xec\x62\xcd\xd6\x67\xf0\x71\xa6\x77\x3b\x1b\x15\xbf\x7d\x29\xaa\x84\x5f\x63\xde\x88\xcb\xcc\x59\xc6\x0b\x5b\x2b\x27\xca\xda\xdf\x98\xfc\x16\xed\x3f\x24\x1c\x17\xc7\x31\x22\xd5\xb2\xa2\x9e\xa1\x35\x21\x12\xf6\x35\xc2\x32\x86\xdd\x2d\x2b\xca\x68\xb2\x09\xd1\x6e\xd4\x83\x6e\xc3\x6b\xd0\x36\xab\xe3\xaa\xc8\x32\x76\x0b\xfa\x44\x5e\x25\x43\x66\x73\xdd\x3b\xf0\xbf\x6d\x38\xd8\x35\x68\x27\x20\x49\xb5\xcc\x19\xce\xc5\x38\x52\x32\x10\x30\x5a\x74\x8b\x83\xb0\x50\x96\xdb\x89\x51\x7d\x89\xf2\x05\x73\x1c\xec\x06\xeb\xf5\x14\x6d\xb0\x5e\x39\x1a\x44\xd3\x30\x44\x5b\x44\x11\x6f\xa2\x2a\xfc\x7d\x76\x4e\x93\x77\x1b\x6d\x50\x15\x2f\x17\x03\xce\xd7\x9b\x72\xbf\xb4\x2d\x69\x49\xc8\xfc\xd7\xda\x8f\x26\xec\xaf\xfa\x24\xff\x3a\x25\xf2\xaf\xec\x20\xff\x7a\xad\xfd\x69\x07\x37\xed\xe0\xa6\x1d\xdc\xb4\x83\x9b\x75\x70\xb3\x0e\x6e\xd6\xc1\xcd\x3a\xb8\x79\x07\x37\xef\xe0\xe6\x1d\xdc\xbc\x83\x5b\x74\x70\x8b\x0e\x6e\xd1\xc1\x2d\x3a\xb8\x65\x07\xb7\xec\xe0\x96\x1d\xdc\xb2\x83\x5b\x75\x70\xab\x0e\x6e\xd5\xc1\xad\x3a\xb8\xc7\x0e\xee\xb1\x83\x7b\xec\xe0\x1e\x3b\xb8\x75\x07\xb7\xee\xe0\xd6\x1d\xdc\xba\x83\x8b\x42\xc5\xe8\x50\x71\x3a\x54\xac\x0e\x15\xac\x26\x14\x4d\x2a\x9a\x58\x94\x5c\x22\x25\x98\x48\x49\x26\x52\xa2\x89\xa6\xc8\x2d\xf2\x56\x57\xed\x78\x75\xaf\xfa\x41\x8d\x51\x3a\xa1\xa4\xae\xe4\xaa\x24\xa7\x64\xa3\xb8\xaf\xf8\xab\x38\xa8\xf1\x48\x63\x01\x1b\xa1\xf6\x79\x71\xd5\x4a\xd5\xe6\x86\x2a\x8d\xe4\xdc\x8c\x82\x25\xff\xbf\x95\x56\x1b\x8a\xda\xc7\x59\x30\x13\xff\xa7\x6a\xd7\xdd\x3a\xa0\xca\x1e\x45\xd9\x72\x89\xa0\x5b\x89\xca\xc5\x23\x82\x6d\x29\x2b\x35\xea\x16\xa2\x6c\x8e\x11\x37\x17\x95\x33\x8c\xb6\x99\xa8\x9c\x6a\xb4\x75\x0c\xc0\x68\x93\x7c\xc0\x48\x63\xde\x4f\x34\xbd\x08\x69\xeb\xfc\xe3\x55\x91\xa8\x42\x99\xc8\x41\x42\x01\x82\x72\x92\x81\xac\x05\x84\xce\x4e\x56\xf1\x28\x2a\x50\x9e\x32\x88\x95\x80\x40\x19\xcb\x20\x96\x12\x02\xd2\xbe\x10\x15\x28\x8b\x19\xc4\x5c\x40\xa0\x7c\x66\x10\x33\x01\x31\x85\x94\x77\x2c\x73\x52\x2e\x39\xe7\x24\x5c\xf2\x8d\xaf\xd6\x5d\x4d\x7d\x6c\x05\xc2\xe7\x9a\x29\x8f\xb6\x26\xe2\x35\x0e\x71\xb4\x10\x21\x87\x70\x48\xa3\x3e\xfa\x6b\x0e\x60\x0a\xa3\x3e\xfa\x8f\xbc\xdc\x21\x8b\xfa\xe8\xaf\x38\x80\x43\x14\xf5\xd1\x5f\x0a\x00\x48\xf5\x82\x97\x3b\x04\x51\x1f\xfd\x39\x07\x70\xc8\xa1\x3e\xfa\x33\x0e\x30\x85\x34\x4b\x46\x39\x69\x16\xfc\x72\x92\x2c\xb8\x65\xc8\x80\xef\x1a\xb7\x52\x30\x82\x09\xba\x30\x24\x48\x64\x80\xa0\x52\x91\xa0\xa1\x01\x8a\x8a\x47\x80\xae\x0d\x48\x5d\x4e\x02\xe0\xd1\x00\x40\x05\x26\x20\x57\x06\x24\x2a\x39\x01\xb9\x34\x21\xed\xb1\x2e\x0c\x00\x54\x96\x02\x72\x6e\x40\xa2\x42\x15\x90\x33\x03\x72\x6a\x8f\x14\x88\xa0\x67\xa4\xa6\x24\x7a\x06\x1a\x8e\x0e\x6d\x99\xce\x90\x72\x77\x94\x43\xa3\x5c\x16\xe5\x94\x28\xb7\x43\x39\x16\xca\x75\x50\xce\x81\x66\xfd\x35\xe3\xce\x6c\xb7\x65\xe4\x78\x29\x34\x72\xac\x99\xd3\xc8\x31\xfc\x4e\x23\xd7\xd2\x01\x8d\x5c\x4b\xa5\xd3\xc8\xb5\x83\x71\x1a\xb9\x76\xcc\xd0\xc8\xb5\x1c\x71\x1a\xb9\x96\x71\x4e\x23\xd7\xf2\x17\x1a\xb9\x96\xfb\x4e\x23\xd7\x0e\xd5\x65\xe4\xea\x93\xd3\xc8\x75\x55\x6e\x23\xd7\x81\xb8\x8d\x9c\x04\xb1\x8c\x9c\xac\x70\x1b\x39\x09\xe1\x36\x72\x12\xc2\x32\x72\xb2\xc2\x6d\xe4\x24\x84\xdb\xc8\x49\x08\xcb\xc8\xc9\x0a\xb7\x91\xeb\xf8\xe2\x32\x72\x12\xc0\x36\x72\xac\x06\x35\x72\x5d\x8d\xd3\xc8\x75\x10\x4e\x23\x27\x21\xa0\x91\x93\xe5\x4e\x23\x27\x01\x9c\x46\x4e\x02\x40\x23\x27\xcb\x9d\x46\x4e\x02\x38\x8d\x9c\x04\x80\x46\x4e\x96\x3b\x8d\x5c\xc7\x0e\x87\x91\x93\xf5\x96\x91\xab\x4f\x83\x46\x4e\x03\x19\x32\x72\x1a\xe8\x90\x91\x53\xa0\x0e\x23\xa7\x00\x86\x8c\x9c\x82\x1c\x32\x72\x0a\xd2\x61\xe4\x14\xc0\x90\x91\x53\x90\x43\x46\x4e\x41\x3a\x8c\x9c\x02\x18\x32\x72\x1a\x7f\xfb\x8d\x9c\x02\x84\x46\xae\x37\x94\xa1\x7f\xe8\xab\x4f\x79\xf5\xb1\xae\x3e\xc7\xd5\x07\xb7\xfa\xa4\x56\x1f\xcd\xea\xb3\x58\x7d\xf8\x6a\x1f\xb6\xda\x77\x2b\xfb\x2c\xb5\xac\x1c\x2f\x85\x56\x8e\x35\x73\x5a\x39\x86\xdf\x69\xe5\x5a\x3a\xa0\x95\x6b\xa9\x74\x5a\xb9\x76\x30\x4e\x2b\xd7\x8e\x19\x5a\xb9\x96\x23\x4e\x2b\xd7\x32\xce\x69\xe5\x5a\xfe\x42\x2b\xd7\x72\xdf\x69\xe5\xda\xa1\xba\xac\xdc\x29\x71\x5a\xb9\xae\xca\x6d\xe5\x3a\x10\xb7\x95\x93\x20\x96\x95\x93\x15\x6e\x2b\x27\x21\xdc\x56\x4e\x42\x58\x56\x4e\x56\xb8\xad\x9c\x84\x70\x5b\x39\x09\x61\x59\x39\x59\xe1\xb6\x72\x1d\x5f\x5c\x56\x4e\x02\xd8\x56\x8e\xd5\xa0\x56\xae\xab\x71\x5a\xb9\x0e\xc2\x69\xe5\x24\x04\xb4\x72\xb2\xdc\x69\xe5\x24\x80\xd3\xca\x49\x00\x68\xe5\x64\xb9\xd3\xca\x49\x00\xa7\x95\x93\x00\xd0\xca\xc9\x72\xa7\x95\xeb\xd8\xe1\xb0\x72\xb2\xde\xb2\x72\xa7\x64\xd0\xca\x69\x20\x43\x56\x4e\x03\x1d\xb2\x72\x0a\xd4\x61\xe5\x14\xc0\x90\x95\x53\x90\x43\x56\x4e\x41\x3a\xac\x9c\x02\x18\xb2\x72\x0a\x72\xc8\xca\x29\x48\x87\x95\x53\x00\x43\x56\x4e\xe3\x6f\xbf\x95\x53\x80\x23\xac\x9c\x16\x7f\xd7\xa3\xd8\x2a\x4e\xad\x22\xd1\x2a\xd6\xac\xa2\xc9\x2a\x5e\xac\x22\xc2\x2a\xe6\xab\xa2\xba\x5a\xd0\x56\x8b\xc9\xf2\x90\x2b\x34\x73\xbc\x14\x9a\x39\xd6\xcc\x69\xe6\x18\x7e\xa7\x99\x6b\xe9\x80\x66\xae\xa5\xd2\x69\xe6\xda\xc1\x38\xcd\x5c\x3b\x66\x68\xe6\x5a\x8e\x38\xcd\x5c\xcb\x38\xa7\x99\x6b\xf9\x0b\xcd\x5c\xcb\x7d\xa7\x99\x6b\x87\xea\x32\x73\xd9\xc1\x69\xe6\xba\x2a\xb7\x99\xeb\x40\xdc\x66\x4e\x82\x58\x66\x4e\x56\xb8\xcd\x9c\x84\x70\x9b\x39\x09\x61\x99\x39\x59\xe1\x36\x73\x12\xc2\x6d\xe6\x24\x84\x65\xe6\x64\x85\xdb\xcc\x75\x7c\x71\x99\x39\x09\x60\x9b\x39\x56\x83\x9a\xb9\xae\xc6\x69\xe6\x3a\x08\xa7\x99\x93\x10\xd0\xcc\xc9\x72\xa7\x99\x93\x00\x4e\x33\x27\x01\xa0\x99\x93\xe5\x4e\x33\x27\x01\x9c\x66\x4e\x02\x40\x33\x27\xcb\x9d\x66\xae\x63\x87\xc3\xcc\xc9\x7a\xcb\xcc\x65\x87\x41\x33\xa7\x81\x0c\x99\x39\x0d\x74\xc8\xcc\x29\x50\x87\x99\x53\x00\x43\x66\x4e\x41\x0e\x99\x39\x05\xe9\x30\x73\x0a\x60\xc8\xcc\x29\xc8\x21\x33\xa7\x20\x1d\x66\x4e\x01\x0c\x99\x39\x8d\xbf\xfd\x66\x4e\x01\x5a\x66\x4e\xa4\x12\xef\x7b\xe8\x45\xbc\x75\xd3\xed\x26\x37\x45\xb9\x79\xd4\xf6\xf2\xc4\xc9\x95\xb6\x48\x1d\xc0\xda\xc2\x73\xd8\xcd\x11\x39\x9a\xcd\x3a\xd7\x6e\x13\x81\xcb\x45\xc8\xf1\x43\xde\xe6\x89\xa5\x8a\x7f\x6a\xaa\xa7\x2e\x3b\xf9\x53\xb3\x2b\x92\x6f\xa0\x68\x5f\x14\x0d\x28\xea\x1a\x26\x76\xc3\xc4\x6e\xa8\x8e\x80\x3c\xba\x8f\x5f\x80\xbb\x5f\x4d\x51\x3a\x6e\xfd\x24\x49\x82\x8c\x00\xde\x1d\xe3\xe3\x05\x27\x07\xa7\x28\x16\x21\x9b\xcf\x12\xdb\x66\x9f\x56\xf2\x18\x9e\x36\xea\xb8\xc8\x58\x06\xfd\x21\x38\x56\x6d\xd6\x39\x51\xf6\xf6\x9c\x8c\xec\x39\x19\xdf\x73\xa2\x25\xcd\xdf\x84\x57\x5d\x78\x9f\xd9\xff\xea\xf5\x28\xb7\xbc\xc0\xa1\xed\xec\x8a\xa3\x48\x72\x1f\x17\x79\xc2\xde\xb7\x42\x74\x4c\xaf\xb4\xb4\x4d\xaf\xb4\xf4\x0e\x45\x9b\xf4\xa1\xc5\x2a\x11\xad\x5c\x74\x73\xa2\x4b\xcf\x8f\xe7\xe6\x87\x50\xd8\xf0\x54\x9d\x3d\x3a\x55\x67\x0f\x0e\xc1\x99\xf4\xe0\x44\xea\xb4\x91\xbd\x03\xf5\x8a\x0a\xf3\xf9\x29\xb1\xb6\x4c\x15\xcf\xea\xa6\x4a\x4b\x8d\xb8\x4d\xde\x1c\xb9\xc2\x7d\x2a\x92\xe4\x01\x53\x95\x75\xfb\x4f\xb6\x67\x07\xd4\x55\x6b\xe7\xf1\x77\x76\xb0\x8a\x2f\xb6\x5e\x5c\x64\xbf\xc4\x19\xa9\xeb\x9f\x7e\x6e\x17\xe7\xaf\xd6\x15\x3b\xf3\x05\x8c\xb8\xc8\xce\xa7\x7c\xcb\x5d\x7f\x76\x86\x4c\x3e\xea\x60\x60\x99\xc8\x07\x1e\x6e\xc2\x4d\xb3\x4c\xc7\x6c\x2f\x92\x81\xbc\x1f\x68\xad\x95\xb0\x46\x89\x10\xd6\x28\x51\x39\xb1\x59\x35\x4a\xc9\x1c\xd8\x44\x31\xb2\x8e\x23\x35\x02\x1b\x52\x03\xb1\x59\xe6\x04\xa9\x81\xd8\xd0\x37\x35\xb8\xc4\x51\x35\x51\x2c\x12\x37\x9b\x1d\x50\xc7\x11\x50\x06\x88\x36\xb5\x30\xc5\x7c\x32\x59\xd9\x8f\x09\x1b\x14\x7d\x6c\xff\x61\x5a\x22\xee\xa6\x60\x6a\x02\xab\x34\x3d\x81\x55\x9a\xa2\x38\x11\xda\x55\x9a\xaa\x38\x10\xca\x72\x4c\x59\x90\x2a\x29\x5f\xa4\xca\x42\x68\xeb\x0b\x52\x65\x21\xc4\x98\x2b\xae\xfa\x38\x35\xc6\xb8\xfe\xe3\x56\x99\x11\x60\x26\xcc\xa0\xd2\x98\x4c\x1d\xc0\x85\x8e\x2c\xa4\xeb\x78\x89\xa9\x4d\x9a\xef\x0b\x4c\x67\x8c\x72\x4d\x61\x8c\x72\x4d\x5b\x70\x3c\x47\x07\x9e\x23\x8a\x87\x15\x62\x1a\x02\xcb\xa5\x34\x61\xb9\x89\xc7\x56\x0c\x58\x6e\xe2\x41\x19\xc7\xef\x6b\x39\x55\x42\xdd\xe1\x72\xeb\xc3\x10\x8c\x06\x30\xa8\x09\x1a\xdb\xfa\xb0\x60\x43\x89\xe7\x74\xb6\x9f\x61\x3a\x20\xae\x8e\x61\x6a\x00\xab\x34\x4d\x80\x55\x9a\x32\x38\x11\xda\x55\x9a\x4a\x38\x10\xca\x72\x4c\x31\x90\x2a\x29\x53\xa4\xca\x42\x68\x6b\x08\x52\x65\x21\x44\x8d\x8d\xbc\x05\xeb\xd0\x13\xe3\x76\x9e\x5b\x55\x46\x80\x99\x30\x83\x0a\x63\x32\x75\x00\x17\x3a\x32\xb2\x9f\xc6\x31\xa6\x36\xfc\x86\x20\xa6\x35\xa0\x46\x53\x1a\x50\xa3\xe9\x8c\x0b\x9b\x55\xa3\x69\x0c\x8e\x4d\x14\x63\xfa\x62\xd7\x48\xe9\xda\x35\x10\x9b\xad\x2c\x76\x0d\xc4\x86\x32\x94\x5f\xb2\x74\xaa\x8a\x7e\xf1\xd2\xad\x29\xc3\x50\x06\xc8\xa0\x9e\x18\xac\xec\xc7\x84\xfa\x25\xbb\x38\xee\xb4\x44\x4b\xb7\x72\xd1\x0e\x24\x07\x61\xf4\x51\xdd\x0d\x78\x35\x8e\xf1\xf3\xf4\x93\x1e\xc9\x13\xef\x93\x0a\x41\xac\x96\x2b\x16\xee\xb7\xb0\x3a\x23\x14\xec\x88\xb3\x76\xff\x40\xdc\x4f\xf4\x4f\x75\x77\x05\x51\x5c\xeb\x69\x8b\x5a\x0a\x8e\x29\x0b\xa1\xf0\x8b\x0a\x3b\x52\xe1\xa9\x50\xec\x91\x3d\x89\x4f\x59\xeb\xce\xa9\x03\x10\xfb\x5e\x42\x80\xec\xcf\x3e\x04\xc8\xfe\xfe\xeb\xeb\x2e\x19\xd3\x5d\x1f\x90\xf6\x69\x88\xde\xb0\xc7\xdb\x59\x5f\xc3\x6e\xde\xa0\x1f\x95\x7a\xec\xc1\x49\x1c\xfa\xc1\x7c\x6b\x4b\xc5\xce\x5b\x5b\x2a\x1e\xdf\x4d\xed\xcd\x2d\x95\x34\xf4\x96\x17\x70\x2b\xf1\x26\x4e\x6b\x37\x4a\x6f\x63\xf4\x6d\x0d\x35\x3e\xdf\xd6\x50\x63\xf3\x9d\xa4\xde\xda\x50\x63\xb2\x76\xab\xd6\xb8\x15\x3a\x8a\xc9\x72\x95\x55\x48\xfa\x26\xad\x4d\xc0\xed\x0d\xb1\x1e\x6f\x19\xb2\xd9\x10\x3c\x1e\x1e\x5e\xd5\x63\xb7\x6a\x5b\x36\xb4\xf3\x22\x69\x4f\xd7\x8a\x47\x6d\xcd\x2b\x77\xda\x02\x0e\xdb\x3a\x12\xa0\x4c\x23\x10\xfd\x35\xaf\xb7\x69\x37\x14\x55\xc6\x27\x24\xc7\xc0\xa2\xfd\x77\xe5\x6f\x7b\x8e\xc9\xae\x65\xd2\xb4\x00\x49\x58\x56\x61\x38\xf2\xd9\xe3\xb7\x24\xaf\xb3\xde\x8a\x9e\x60\x4f\x4a\xcb\xac\x32\x73\x76\x9d\xb2\xe3\xa6\x8c\x7f\xff\x63\xbd\xed\x7f\x9b\x7a\x9f\x66\xf4\x2b\x78\x14\xdf\xe8\x39\x3f\xc0\x7a\x4d\x8c\xe2\x95\xd6\x5f\x4e\xe7\xac\x49\xcb\x8c\x7e\x15\x39\xea\x7e\x69\x85\xf7\xd5\xf5\x4e\x34\xeb\x93\xa7\xb9\xb2\x5f\xc4\xb6\xcb\xbb\xb1\x7e\xb7\xbc\x72\xc5\xb9\x29\xcf\x0d\x7e\x3f\x94\xb1\x72\x65\xde\x08\x1d\xce\xe8\xb7\x58\x2c\xae\xc1\xbe\xa8\x4e\x7e\x5c\xe4\x4d\x55\xc0\x6b\xf5\x76\x26\xb7\xd9\x5c\xcb\x34\xb6\x2c\x5f\xbd\x68\x7a\x47\xa7\xae\x44\x6f\xaa\x34\x3d\x91\x03\x95\x77\x64\x47\xdd\x37\xed\xbb\xf0\xdb\xb6\x6d\xff\x5f\xbf\xc7\x1b\xae\xf0\x2b\xbf\x4e\x58\x24\xbd\x9c\x7a\x63\xb7\xa8\xf4\x14\x71\x5e\x10\x2d\xea\x89\x4d\x90\x05\x03\x92\xd1\xf5\xe3\xeb\xc3\xf3\x1e\x48\x4c\x55\x10\x6a\xac\x63\xdb\xfc\xb0\x5c\x92\x3d\x5d\x77\x7a\x8c\x5e\x6c\x1e\x62\xe4\x24\xf4\x42\xef\x51\x56\x44\xe1\x74\x12\xad\x16\x93\xe9\x6c\x36\x09\x96\x37\x49\xa4\x17\x11\x18\x0c\x7f\x25\xbf\xcc\x48\x4c\x8f\xec\xc5\x08\x99\xa9\x67\xbd\x5e\x6f\x8b\x92\xc4\x69\xf3\x6d\x13\x81\x46\xad\x1b\xce\x66\xb8\xa3\xa1\xd5\x47\xf7\x70\xfd\xd8\x36\xea\xd5\xff\x89\x59\x5e\x51\x92\x14\x79\xf6\xed\xeb\x44\xda\x34\x05\xea\x99\x53\x56\xa4\x13\xc9\x8b\xc6\x27\x59\x56\xbc\x50\xec\xee\x36\xa5\x54\x1b\xa6\xcc\xcd\x69\x22\x1a\xf9\x5e\x3e\x7c\x61\x1e\xf9\x4a\x92\xa0\xad\x19\x4e\xe8\x73\x1a\x53\xbf\x4c\x5f\x69\xe6\xb3\x2c\x9c\x9b\xf0\xe1\xa2\xe1\x4f\x48\x43\x0d\xab\xd1\xa4\x27\xb3\xa0\x85\x60\x4f\xa9\x65\x45\x4c\x32\xa3\xea\x54\xe4\xcd\xf1\xab\x91\x70\xa6\x5d\xa2\xae\x10\x7f\xc0\x65\x52\x9f\xac\x8e\xd0\x1a\xd0\x23\x0a\xc3\xbb\xee\xaa\x4c\x1a\x42\x37\x0d\xd9\xc1\x45\x83\x59\x83\xd3\x60\xc2\x18\x34\x64\x07\x83\x86\xf9\x92\xdd\xfa\x66\x22\xe6\x0f\xf1\xdb\x9f\xa3\xd7\x80\x99\xb3\x49\x20\xad\x17\x72\x6d\x17\xa6\x0f\x1d\xcc\xa6\xc7\x71\x7a\xcc\x8f\x51\x98\xf9\x6f\xfd\x9b\x9b\x39\x51\xc6\x95\x5f\x24\xbb\x60\x68\x3d\x15\x2d\xf4\xbd\x2c\x52\x9e\x85\x8d\xf7\x66\xfb\x21\xbc\x42\xa4\x3d\xc2\xea\x3b\xca\x30\x2b\xae\xaa\x11\x0c\xca\xaf\xb1\x73\x73\x6a\x0c\x9a\x73\xd7\xc6\xb8\x07\x3f\x55\x1c\xfa\x0c\x99\xff\x59\x89\x41\xc3\xe2\x2b\x39\x09\x52\x2c\xda\xfa\x33\x3a\x8d\x67\x2d\x9a\xa5\x16\x67\xb8\xe8\xf9\x73\x3f\x61\x9f\x2d\x4a\xb1\x04\x52\xe2\x0c\x51\x89\x78\x93\xda\x02\x89\xf1\x1f\xaf\xe6\x4d\x03\x59\x87\xb6\x54\xb5\xc8\x02\x6b\x2b\x4b\x3f\x90\xd2\x07\x7b\x31\x36\xf9\xa5\xba\x85\x9c\xe9\x25\xc8\xe4\x32\x06\x00\xf9\xec\x24\xa4\xeb\x07\x4e\x50\x58\xe1\x24\xa3\xa7\x1e\x4c\x76\x8c\x08\xdd\xe4\xf8\x7c\xdb\xf9\x02\x9d\x58\x70\x76\x68\x65\xab\x2e\x8a\x47\x2d\x91\x3d\xb5\xf5\x09\x24\xbe\x08\x41\xc2\xa5\xab\x5a\xed\xb5\xc5\xd3\xaf\x4f\x1e\x6a\x2e\x67\xda\x2a\xc6\x1c\x7b\x98\x98\x65\x6a\x79\xc4\x0b\x3b\x5d\x8d\xf8\x44\x51\x5d\x8b\xdf\x63\x09\xb0\x8c\x4f\x67\xe2\x3b\x8c\xa6\xd1\xc7\x71\x4e\xe0\x97\x12\x24\x48\xab\x19\x41\x9a\xc8\x2a\x6d\x4a\x85\x37\xc9\x0e\x78\x93\xd6\x6a\x6d\x8d\xcc\x65\x2a\xbb\x68\x97\xd2\x14\xf0\xd3\xca\xff\xb3\x84\x0c\xcd\x0e\x08\x43\x7b\x49\xb0\x2c\x29\x60\x68\x76\x40\x19\x0a\x71\xba\x18\xda\x11\x84\x33\xd4\x45\x1a\x67\xe8\x91\xd4\xfe\x9e\xd2\xa4\x75\xf3\x6c\x83\x6d\xd6\x03\x3c\xa6\xea\xcf\xa7\x01\x33\x2e\xc6\x6c\xb1\x31\x77\xb6\x8d\xaf\xda\x72\xda\xfc\xc6\x9e\xc4\x7d\xdd\x4c\xb7\xd8\x57\x23\xfb\x52\xd4\xbf\x1a\xa1\x8f\xb6\xb5\x32\xaa\x6e\x85\x89\xf1\xe9\x33\xcd\x9b\x5a\x1c\x3a\x91\x0c\xfb\xec\x20\x53\x1c\x16\x5f\xaa\xee\x70\x01\x76\xaa\xdc\x8f\x88\x4d\xa7\xde\xa9\xc5\xf8\x2b\x36\xb6\xbd\xe0\x48\xb3\x92\x1b\xdc\x89\x59\x21\xf1\x8b\x65\xd6\xa8\x13\x86\xdf\x84\x17\x6b\x27\x06\xda\xd9\x57\xb4\x05\x56\x6b\x3a\x61\x7a\x85\xb9\x46\x23\x8d\xa4\xc3\xd3\xd3\xd6\x00\x01\x69\x5e\x4d\x1a\x0d\xed\x33\x3f\x26\x39\xfc\xf7\xfe\x6e\xef\xa1\x07\xfd\xc4\xe5\x99\x68\xef\xfe\xb0\x5d\x96\xaf\xde\x0f\xcb\xd5\x2e\x5a\x3e\xde\xfc\x2d\xab\xb5\x05\x54\x73\xd5\xe5\x6b\x03\x49\x92\x22\x37\x79\x8e\x7c\xf0\xf1\xf3\x22\x5b\x8c\xe3\x3d\x1c\x51\x93\x01\x69\x21\x36\x64\x6d\x95\xef\x2a\x10\x95\xef\xea\x34\x95\x57\xf0\x86\xca\x9b\xa0\x86\x52\x5b\x2d\xb0\x5a\x5b\xe5\x65\x05\xa6\xf2\x46\x23\x44\xe5\x61\x5b\x54\xe5\x45\x86\x61\x93\xc6\x1e\x95\xe7\xf0\xbf\x8f\xca\xa3\xf4\x38\xa2\x3a\x8b\xe8\xad\x2a\x1f\x87\x24\x5a\xee\xee\x53\x79\xde\x16\x50\xed\x54\x79\xc1\x43\xd7\x39\x87\x2d\xc6\xf1\x1e\x8e\x58\x2a\xaf\xb7\xa0\x55\x55\x54\xb6\xc2\x8b\x62\x44\xdd\x45\x8d\xa6\xec\x12\xd6\x50\x75\x1d\xcc\x50\x65\x00\x6d\xd7\xd9\x4a\xce\x8b\x31\x15\xd7\x1a\x20\x0a\x6e\xb6\x43\xd5\x5b\xa4\xc0\xd6\x29\xeb\x51\x6e\x0e\xfd\xfb\x28\x37\x42\x0d\xaa\xda\x3c\x45\xf7\x1b\x55\x9b\x3e\xce\x1f\x67\x77\xaa\x36\x6b\x6b\xd0\xec\x54\x6c\xc1\x3f\xd7\xa9\x8c\x2d\xc6\x6d\x27\x37\x2c\xb5\xd6\xe1\x3b\xe7\x90\x49\xfb\x7f\x3b\x1a\xb2\x93\xf2\x0b\xe9\xf0\x98\x6d\xe4\x83\x20\x7d\x6d\xc3\xab\x36\x71\xac\x57\x68\xba\x30\xc0\x02\x8d\x22\x75\x97\x45\x66\xed\xbf\x9e\xdc\x39\xac\x7f\xa1\xbc\x7a\xb0\xcb\xb1\x81\x66\x06\x40\x1c\xcf\xf2\xd8\x38\xe1\xfe\x88\x81\x55\x7b\xf4\xe4\x56\x84\xf2\x0b\x18\xc3\x0b\x9a\x69\x7a\x03\xc1\xd9\x76\xe9\xa8\xbe\x35\x24\x88\x26\x4e\x46\x02\xef\x9a\x5e\x50\x83\x63\x8a\x39\x6e\x52\x9e\xb0\x26\xfc\x52\x99\xd1\xc4\x58\x70\xe1\xe9\x96\x51\xe3\x17\x0b\xb3\x89\x55\x06\xdd\xfa\x54\x06\xcb\x78\x7e\x43\x97\x72\xe1\x45\x3b\x16\x8b\x2e\x0c\x43\x20\x58\x90\x28\x26\x8e\xb1\x3f\x58\xa9\x52\x32\x1a\xd7\xbd\x4c\x5c\xee\xaf\x48\x38\xcd\x45\x43\x2d\x3d\xba\xc1\x67\xbd\x5c\x99\x41\xbc\x49\x67\xf0\x9c\x2d\x61\x12\x7c\x19\x33\xea\x93\xd3\x1d\x04\x1a\x81\xea\x55\xf7\x91\xac\x83\xda\x91\xf5\xfe\xec\xa7\x03\x6b\x98\x41\x85\xa1\xe8\x8e\xa1\x76\x5a\x68\x3d\x5c\x82\x10\x3b\x46\x9a\x2a\x13\xe7\x2d\xb4\x82\xb0\x85\x9b\xf4\x68\x1e\xcc\xf0\xdc\xb5\x63\x70\xd7\xa7\x3e\xdc\x7c\xaf\x63\xd7\xe4\xbd\xa1\x70\xb5\x63\x8d\x46\xc2\xd5\x0e\x76\xef\x7b\x49\x6a\x47\xdb\x8e\x60\xd8\x67\xd0\x1c\x41\x75\xff\x54\xfb\x4d\x71\x8e\x8f\x3e\x89\xd9\x9c\x3c\x91\x3c\x2d\xcf\x19\x7b\xa6\x6e\xeb\xae\x31\x83\xf1\x9d\x63\x73\xae\x69\xe5\xf3\x88\x12\xdf\x35\x67\xfb\x9d\x48\x69\x6d\x17\x5a\x05\x23\xf7\xe1\xdd\x79\x98\xe7\xed\x7c\xd9\x35\xb9\x38\x25\xc1\xfe\x14\xf7\x47\x54\x49\x60\x97\x58\xe0\x81\x05\x1e\x7c\xaf\xd3\x15\xac\x57\x71\x64\xd5\x24\x3d\x30\x1e\x16\x9c\xcd\x66\xf8\x43\x84\x1a\xd9\x3a\xc1\x17\x9c\x9b\xa3\xb6\xd0\x67\xe5\xab\xb7\x00\xfe\x65\xe4\x48\x55\xee\x82\x65\x74\x69\xdb\x0e\xbb\x26\xd7\x76\x4d\xb0\x20\x7e\x3b\x8b\x90\x48\xdc\x16\xd9\x68\x16\x4f\xbe\xb3\xa7\xbc\x3f\x89\xfd\xe5\x9f\x97\xda\x61\x89\x81\x84\xe7\xdd\x9e\x74\xb0\x5c\x30\x42\xfd\x84\xee\xc9\x39\x6b\x2e\x43\x6f\x4e\x02\x6f\x98\x1d\xf0\xd5\xda\x6b\x92\xec\x8a\x94\x44\x65\x51\x60\x17\xe9\x12\xec\xc0\x64\x59\x51\xd2\xfc\x29\x48\xaa\xa2\x4c\x8a\x97\xd6\xd6\x1c\x0e\x19\x1d\x4f\x36\x5d\xb6\xff\xa0\x1f\x9f\xb4\xff\xae\xef\x48\x03\xaa\x70\x46\x07\xa6\x3a\xc8\xd2\x61\xb5\x90\x90\x13\x14\x19\xc2\x73\xd5\x5e\x54\x0e\x20\x46\x50\x28\xf4\xb6\xb0\x34\xf4\xbc\x72\x08\x3d\xa2\x02\x12\x12\xd1\x05\x85\x25\x18\x85\x1e\x41\xa1\xa8\x47\x64\xaa\x91\x2f\x6a\x87\xe8\xc7\x14\xa3\x1b\x40\x6f\x0f\xc1\xb8\x1e\x90\x45\x6b\xf4\x9c\xf3\x82\x1d\x49\x0e\x74\xe8\x0d\xac\x19\x6f\x74\xc3\x8b\x59\xa0\xdf\x29\x5d\x26\x64\x6e\x60\xd1\xf5\x46\x16\x69\xc2\x10\x45\x81\x5d\x64\x70\x54\x82\x0d\x4f\xb5\x51\xc4\xf3\x27\xbc\x20\xf1\xe1\x3c\x59\x01\xe2\xdf\x46\x43\xcf\x74\x97\xc8\xcc\xe9\x2e\x4a\x47\x4c\x77\x01\x39\x41\x91\x21\x3c\x1f\x3d\xdd\xdd\x62\x43\xa7\xbb\x8d\xbe\x7f\x3e\xf6\xa8\x00\x36\xdd\x2d\xf4\x03\xd3\xdd\xad\x4e\xf8\x74\xb7\xc9\x1f\x98\x8c\x7d\x8a\x81\x4e\x77\x7b\x04\xe3\x7a\x70\x4f\xf7\xb1\x33\x0f\x4c\x7a\xd9\x0c\xcf\xa1\xd0\xb6\x03\x6f\x03\xe2\x53\x67\x11\xef\x1e\x17\x31\xe8\x7d\x1e\x13\x3a\x8f\x0d\x2c\xba\x02\xc9\x22\x4d\x2a\x72\xdb\xca\x2e\x32\x58\x2b\xc1\x86\xe7\xdc\x28\xe2\xe7\xf3\x75\x32\x9f\xc3\xad\x97\xf5\xe3\x7c\xb6\xbe\xbe\x23\x0d\x3d\xf3\x5e\x22\x33\xe7\xbd\x28\x1d\x31\xef\xbb\x3b\xbd\x18\x32\x84\xe7\xa3\xe7\xbd\x5b\x6c\xe8\xbc\xb7\xd1\xf7\x4f\xcc\x1e\x15\xc0\xe6\xbd\x85\x7e\x60\xde\xbb\xd5\x09\x9f\xf7\x36\xf9\x03\xb3\xb2\x4f\x31\xd0\x79\x6f\x8f\x60\x5c\x0f\xee\x79\x3f\x76\xe6\x81\x79\x2f\x9b\xb9\xe7\xbd\xfe\xa8\xa7\x63\xd2\xef\xe2\xd0\x0a\x73\xcf\x97\xbb\xc7\x84\x28\x14\xba\xea\xb0\xdf\x9a\x30\xda\xdf\x01\xf8\x6d\xf0\x92\x01\x0c\xcf\xb0\x61\x52\x67\xd1\x2e\x4c\x16\x70\x75\x5c\xae\xc9\x2e\xbe\xbe\xbd\xeb\x9e\x99\xcd\xd0\x98\xd3\xba\x2d\x1a\x31\xa7\xf9\xed\x6c\x0b\x07\xe4\xe7\xe8\xa9\x8c\x09\x03\x9d\xc4\x00\x6b\xff\x14\x43\x45\x8a\xcd\x5d\x13\xeb\xc0\xc4\xc5\x14\x03\x9f\xb2\x80\xd8\x81\xd9\x84\x4b\x19\x9d\xa9\x80\xde\x11\x88\x7b\xe6\xe8\x98\x89\x02\x27\xa8\x68\xe3\x9e\xa0\xe0\xf1\x5c\x5c\xf1\xf7\x21\x49\xe6\xb0\x6b\x4a\xc9\x74\xb6\x34\xb0\xe8\x9a\x21\x8b\x34\x01\xc8\xcd\x75\xbb\xc8\x60\xa7\x04\x1b\x9e\x37\xa3\x88\xa7\xf1\x7a\x15\xc1\xaf\x98\x64\xf1\xb8\x88\xa6\xd7\x77\xa4\xa1\x67\xfa\x4a\x64\xe6\x0c\x16\xa5\x23\x26\x71\x77\x63\x1e\x43\x86\xf0\x7c\xf4\x6c\x76\x8b\x0d\x9d\xd3\x36\xfa\xfe\x09\xd8\xa3\x02\xd8\xe4\xb6\xd0\x0f\xcc\x6f\xb7\x3a\xe1\xb3\xdc\x26\x7f\x60\x3e\xf6\x29\x06\x3a\xdd\xed\x11\x8c\xeb\xa1\xe7\xfb\x7b\xe4\xcc\x83\x5f\xe1\xa2\x99\x7b\xde\x9b\xaf\x5e\xe3\x33\x27\x59\x2f\x66\x73\x6b\xe6\xcc\x67\xfb\x19\xd1\x91\x18\xe1\x1b\x5e\xa2\x87\x44\x58\x49\x60\x95\x98\x51\x0d\x0e\x34\x22\xda\x35\x82\xec\x78\x3d\x0b\xa7\xd0\x99\x21\xf1\x74\x3d\x5d\x5c\xdf\x8b\x80\xbe\x68\x1b\x47\x05\x82\x6d\xac\x70\x4c\xac\x4d\x64\x3d\x40\x30\xd9\x7c\x1e\x1f\x68\x73\x08\x0a\x0f\xb3\x41\xdc\x03\x61\x30\x97\xc8\xd1\x18\x1b\xc0\x3d\x14\x62\x73\x28\x8f\x23\xc0\x06\x09\x1f\x8a\x7e\x39\xf5\x00\x8f\xae\x41\xda\x47\xa1\x77\xcf\xed\x91\xd3\x0b\x4c\x6d\xd9\xca\x3d\xb5\xb3\x34\xff\xf5\x62\xdd\x9f\xc1\x3e\xf0\xd5\x03\x9a\xb2\xdd\xa4\xfb\xcb\x60\x4b\x5b\x10\xc0\x82\x11\xda\xcc\x48\xe9\x7d\xca\x73\xec\x1b\xa9\x18\x85\x9a\x3a\xb3\xdf\x9a\x9a\x68\x23\x30\xcf\x06\xe9\x49\x4c\x07\x30\x49\x8e\x4f\x67\x8b\xe9\x2a\xb6\xb6\x7f\xce\x79\x42\xab\x2c\xcd\x91\x65\x16\xed\x64\xf4\x64\xc5\x28\x1a\x3d\x1b\x6d\xf2\xbb\xc4\xab\xd8\xd6\x15\x3b\xa0\xdf\xfe\x57\x6e\xe5\x3e\x05\x6c\x23\xe8\x1d\x8e\xe2\xf3\xef\xc6\x93\x8e\xbe\x3e\x99\xe8\xef\xbf\x38\xc1\x90\xbe\xd6\x3a\xf2\xd7\x1a\xd0\xce\xb7\xc6\xee\xc4\x8d\x1d\x5f\xd2\x4f\xa8\x74\x30\x9f\x35\x70\xf3\x7c\x93\x71\x9d\xf2\xbc\x3b\xa5\xcd\x57\x05\x6b\xdc\x5c\xa2\x35\x75\xd5\xed\xce\x4d\x53\xe4\x5a\xa5\x79\x4e\x86\x24\xf4\x22\x77\xd3\x42\xec\xb2\xb2\xa8\x64\x57\x7d\xbd\x76\xec\xa4\x02\xd7\x8f\x31\x88\xfe\x6a\xde\x6f\x90\xe6\x17\xed\x0e\x6d\x5c\x64\x19\x29\x6b\x75\x2b\x8d\x4d\xe3\xe7\xb4\x4e\x77\x69\xd6\xc2\xf0\xc4\x37\x0a\xb0\x6d\x6f\xf2\x57\x03\x66\x7f\x66\xf4\xda\x54\x28\xbc\xc8\x1d\x51\xbc\x5c\x59\x76\x89\x7e\x18\xae\x1f\x5d\xc7\xad\xb3\x6e\x9f\x89\x11\x1a\x11\x76\xa9\x7a\xba\x44\x3d\x16\x4f\xfd\x26\x3d\xa5\xf9\xc1\xdf\x9f\x73\xbe\x55\x4f\x49\x4d\x4d\xa6\xe2\x20\x83\x28\xec\xae\x92\xb3\x98\xb1\xc1\x0c\xde\x1b\x07\x75\xee\x46\x36\xd6\xb2\x2a\x4a\x5a\xb5\x32\x61\xa3\x9e\x28\xc6\x83\x2e\x7a\x00\x47\x41\x5d\x83\x98\x54\xb4\xe9\x3b\x40\x17\x2a\xd6\x1b\xa9\xaf\xcb\x57\xc7\x19\x0a\x2d\xa3\xef\x5c\x9e\x4a\x30\x5f\xc7\x9f\xf7\x1d\x56\xe0\xc9\xba\x31\x88\x6b\xe7\xf0\x61\xd7\x6b\x80\x33\x08\xf2\x3d\x84\x1a\xc0\x89\xe6\x67\xc7\x35\x1a\x96\x54\x81\x9f\xbb\xea\x2e\xd2\x44\x61\x18\x6e\x8d\x49\xa3\x5e\x74\xd8\x6a\x2f\x4d\x2c\xe1\x95\xb3\x2e\xb5\xc9\x54\xe4\xd7\x00\xc7\x59\x40\x6a\xed\x6d\x96\xd6\xea\x05\x79\xcc\x6c\x31\x7f\xba\x33\xc8\x5a\x6d\x96\x96\x1b\x75\x3b\xef\x75\xdb\x5b\xd7\x93\xb8\x41\x2b\x35\x0e\x2c\xb0\xb3\x0d\x23\x32\x3b\xf0\xe3\xb5\xed\x32\x6e\xb6\x07\x87\x89\x7b\xc0\x80\x98\xb4\xe7\xf9\x2f\xf2\x82\x93\x96\xfe\xde\x80\xf5\x82\x24\x7d\x4e\x13\x5a\x5d\xb4\xe7\x8c\x85\x04\xd6\x4c\x1c\x70\xe9\x40\x62\x11\x3c\xd9\x8b\x89\xf8\x29\x4b\x9f\x88\xe3\x01\xf8\x59\xf9\xea\xb1\x4b\xbc\x71\x46\x49\xb5\xd9\x15\xcd\x71\xec\x31\x25\xfd\xfd\x77\x24\x47\x96\x4d\x82\xf4\x39\x90\x1a\xd3\x1f\x5a\xb6\xff\x50\x9f\xc2\xf9\x7e\x3c\xec\x4f\xe6\xc9\x25\xb0\xbb\xae\x02\xa7\x46\x55\x1b\x24\xb5\x8a\x3b\x92\x1e\xe1\x01\xbb\x26\xee\x53\xe7\xfb\x23\xb4\xa9\x2a\x07\x75\x1a\x00\xf4\xc1\x7a\xfa\x19\x8b\x0c\x1d\xe1\x98\x44\x10\xc6\x32\x88\x1e\x4c\x12\x47\x7a\xca\xaa\x38\xa4\xc9\xe6\xbf\xfc\xcf\xbf\xb6\x55\x7f\x6f\x9b\xed\x8b\xea\x14\xfc\x2d\x8d\xab\xa2\x2e\xf6\x4d\x70\x68\x67\x28\xcd\x9b\x4f\x34\x67\xc4\xfd\xbc\x27\x59\x4d\x1f\xae\xf0\x93\x99\x2d\x82\x66\xea\x1e\x0e\x42\x9c\x6b\xe6\xc8\x79\xc8\x56\x70\xed\xa5\x90\xad\x3c\xc7\xda\x41\x1d\x29\x69\xa7\xe9\xc0\x8c\xea\xf5\x0b\xe1\x2c\x6a\x9d\xe8\xde\x59\xd4\xb2\xb5\xfd\xa1\x16\xfe\x7d\xfa\x4a\x13\x70\x79\xb2\x3b\x79\x08\x6c\xc0\x7a\x1d\x5e\xb5\xb5\x08\xf2\xd1\xc1\x92\x73\xe9\x71\xfb\x3a\x09\x72\xf2\xbc\x23\x95\xcf\xfa\x14\xe7\x1b\xbd\x0e\x89\x80\xba\xc4\x45\xde\xd0\xbc\xd9\x7c\xf8\xa0\x1b\x51\x98\x9b\xaa\xb3\x8d\xaa\x13\x83\x9a\xc1\xce\x4c\xda\xdb\x2e\x98\x98\xba\x63\xfe\x76\x8a\xc4\xde\xa3\xa7\xa2\x37\xc6\x03\x88\x1c\x61\x4c\x0f\xb8\x4b\x73\xae\xea\x2b\x42\xff\xa0\x90\xee\x47\x4f\x76\x0c\xc3\x9f\x71\x1c\x0b\xef\x10\xb2\xcf\x13\xac\x03\xf1\xdd\x62\xf5\xa2\xbf\xec\x64\x62\xd1\x3f\x0f\x11\x5c\x56\x35\x2f\xd5\xbe\x8f\xb1\x46\xb0\x9a\x97\xea\x5f\xfd\x58\x2b\xab\x9e\x15\x07\x03\xcd\x64\x54\xa4\xbb\x4d\xac\x8d\x90\x7d\xc8\x7e\x06\xcc\x52\x85\x96\xa0\x3c\xf5\x27\xda\x4a\xab\x32\x0f\x6e\x8b\x53\xda\xf2\x93\xaf\x29\x8a\x6c\x47\x2a\xb3\x76\x01\x6a\x3d\x48\x42\x57\xae\xdf\xd4\x80\x92\x13\x40\x9a\x06\xe8\x25\x08\xba\x27\x03\x9d\xf1\x10\x8d\x24\x48\x93\x51\x5e\x34\x9f\xf4\xd4\x8b\x0f\xbc\x44\xe5\xcd\xe3\x05\xd0\x87\x7d\xb8\xa0\x71\x20\x5d\x63\xb4\x74\x8e\xe0\xd6\x80\x1b\xf2\xc6\xce\x9b\xa2\xe4\xb3\xb5\x23\xc3\x5c\x90\x40\xa5\xd5\xb3\xea\xc8\xe6\x83\xa1\x96\xd0\x83\xb7\xa0\x75\x8a\xda\x61\xba\x08\x32\xea\x20\x3d\x0e\x0d\x80\x00\x23\x64\xc6\x97\x85\x01\x11\x09\x6c\xfa\xab\x28\x80\x2b\x70\x6a\x62\x2d\x00\x6b\xde\x49\x34\xa2\x27\x2d\x7d\xa3\xa5\x54\x6f\xe4\xb8\x67\x09\xd5\x5a\x77\x98\xd7\x61\xc1\xe9\x4e\x88\x49\xf4\x67\x0b\xd4\xcc\x9e\xf0\x08\xd3\x17\x3d\xda\x13\x92\xe5\x2d\xe8\x47\xc3\x7c\x0e\x03\x4f\x34\x35\x10\x39\xe8\xfe\x3d\xce\x8d\xf7\x11\xa0\xc2\xba\xb7\x44\x6e\xa5\x07\x82\xac\x21\xec\xf6\x08\xab\x14\x22\x17\x4f\x03\x0a\x02\xa1\x26\x88\xa0\x81\xf2\x4d\x7a\x70\x84\x9e\xc0\x72\x75\x99\x21\xa7\x7d\x72\x7b\x03\x4f\x40\xd6\xc0\xcd\x54\x0f\xa7\x6c\x9d\x6f\x58\x39\xc9\xd1\xd1\xea\x2f\xb0\x38\xc0\xa1\xb5\x43\x6a\x47\x8d\xa3\x1f\x8f\xd3\x7c\xb2\x34\x55\x11\xb8\xf4\x14\x3a\xa9\x1d\xb1\xe2\xf5\x2c\x76\xd0\x57\xe9\x31\x37\xce\xd5\x6b\x5e\xbe\xf6\xae\x5f\x23\x17\x1d\x40\x4a\x9f\xfd\x19\x5c\xdf\x06\x57\x58\xbd\xd5\xbc\x47\x93\xdf\xcd\xaa\xa0\x68\xfb\xd8\xdd\x63\x6f\xee\xc0\xe5\xb0\x44\xef\x27\x2f\xcb\x28\xd9\x3c\xbb\xdd\x4c\xd9\x62\xd4\xfb\xff\xe7\xb9\x6e\xd2\x7d\x4a\x13\x33\x36\xad\x2f\x10\x3c\x58\x9d\x91\x6f\xc5\xb9\x11\x5f\x8e\x6a\xdb\x8a\x85\xb6\x37\x35\x2d\x49\x45\x1a\x8a\x62\xb6\x56\x33\xb3\x06\x5c\x20\xe6\xbd\x81\x87\x9e\x24\x39\x1f\xdd\x1d\x68\x4e\xf5\x05\x5f\xce\x70\x78\xf3\xa3\x4d\x7d\xac\xfd\x92\x90\x86\x08\x49\x8b\x9d\x8e\xfa\x2b\x6b\x89\xdc\x79\x75\x03\x6b\xcb\xe6\x4d\xed\xf0\x14\x80\x37\xf7\xd3\x97\x17\x90\x85\x47\x2b\x1a\x37\xc2\xc8\x86\x0f\x7d\xe9\x8e\xb8\x94\xdc\x9f\x9b\x5c\x6d\xdc\x8a\xa1\x61\x31\x5f\xfc\xd2\xa4\x3c\x2e\x0d\xda\x01\xb9\xd3\x6d\xd3\xa5\x72\x41\x69\x21\x6b\x67\xaa\x6a\x13\x39\xdb\x6b\x34\x92\x66\x59\xb5\xc8\x4d\xf5\x3e\x90\x5d\x93\xf3\xc5\xed\xbb\x26\x15\x73\x10\xef\x80\xb1\x87\x30\x02\x10\x1d\xc8\x50\x6a\x32\x07\x5d\x4e\x28\x9b\xb2\x51\xa0\x92\x36\x57\x8a\xb3\x5e\xf6\xf4\x40\xbb\x18\x35\xb2\x09\x64\x99\x9e\x83\x4e\xed\x3d\xbb\xd5\xad\xad\x1d\x50\x37\x08\x02\xbb\xfc\x1e\x29\x01\x1d\xa4\x3b\x60\x46\x29\xdb\xa8\x61\x0c\x25\x16\x74\xd0\xe5\x84\x1a\xa9\x6c\x2e\xda\xfa\x75\xc1\xc1\x9e\x1e\xe8\x1b\x95\x6d\x88\x65\xb6\xb2\x21\xea\xc3\xec\xb3\x7b\x71\xb5\x4d\x33\x82\x71\x84\x7b\x67\x75\x7a\x6b\x1b\x90\x5e\xe7\x1e\xa7\x7d\x98\x13\xd2\x7b\xf8\x38\xfa\xea\x3c\x82\xf5\x32\x94\x91\xbe\x77\xa3\x4c\x4f\x4c\x6f\xdf\xe8\xc7\x73\x69\x8f\x4c\x4a\x8f\xd0\x6a\xa5\x21\x75\xae\x10\xc8\x79\x14\x17\xb6\xec\x30\x7c\x50\x07\x39\x97\x63\xa1\xc3\x12\x8c\xf4\x02\xc1\x17\x1e\xe4\xf3\xbb\x6e\x35\x32\x5e\x94\xb1\xf5\xda\x59\x0d\x1c\x71\xe1\xe6\x0e\x41\x68\x8e\xda\x00\x30\xf8\xdc\xb0\xa1\x61\xf0\x6a\x5c\x6c\x73\x10\x8f\xfe\xb9\xe6\xfa\x38\xbb\x39\xfa\xd6\xcb\x57\xeb\xa9\x18\xb7\xb0\xf4\x6f\x39\x1b\xa7\xab\x16\x19\xe5\x48\x36\x8c\x80\x1d\x94\x93\x15\x00\x45\x62\xc1\xe3\xd4\xc6\xf1\x3d\x78\x67\xa8\xb2\x8f\x7f\xf0\x85\x24\xb8\x48\x22\x3b\x42\xdd\xe4\x0e\xd1\xed\x48\xd4\x4a\x21\x87\x59\x30\x38\x16\xe1\x41\xb6\x46\x30\x58\xb9\xc1\x84\xd6\x89\x7d\x24\xb4\xce\xde\xf6\x79\xaf\xd9\x0e\xb3\xf1\x20\xa4\xdf\xa9\x9e\x08\x4f\x72\xf2\x0c\x12\x37\x59\xb9\x65\xc0\x69\x1b\xd6\xe6\x29\x4b\x87\x52\xed\x4b\xb8\x27\x32\x98\x94\xdf\x5c\xfb\x17\x82\x2e\xe3\x28\x47\xf7\xbb\xe7\x00\x01\x6a\xea\x24\x2a\xed\x10\x82\x71\x96\xc1\xaa\x35\x7b\xec\x3b\x08\x81\x1f\xd4\xb8\xf1\x18\x03\xa3\xc0\x13\x27\x0a\x26\xfa\x0f\x8d\x90\xae\x48\xe4\x08\xec\xb1\xe9\xe6\xe9\x10\x81\x3d\x27\xcf\xfe\xfb\x9d\xf9\x91\xb2\x78\x4a\x4f\x87\x8b\x0a\x08\x77\xca\xe1\x37\x64\x57\x5f\x9c\xef\x44\xb1\x27\xff\x24\x58\xab\x48\xfa\x29\x31\x43\xf7\x3a\x15\x95\xa0\x4f\xc4\x9c\x1c\x3d\xc7\x1d\x6e\x4b\xf7\xe3\x89\x97\x9d\x40\x6f\xf2\xc9\x73\x70\x69\x85\x7a\xfc\x7f\xe0\x48\xb4\xb3\x40\x58\xa9\x26\x50\xbb\xce\x50\xae\xd6\x95\x13\x7a\x24\x92\x53\xf4\x66\x91\x01\xdc\x05\xeb\x38\xae\x72\x8c\x02\xf6\x87\x0a\xea\x69\x01\x0f\xf8\x36\x99\xa3\x89\x12\x9f\x29\x7d\x0b\x4a\x49\x4e\x7b\xee\xcb\xf2\x56\x9d\x08\x86\x0f\x65\xa8\x58\x5c\xef\x01\x0c\xc7\x18\x90\x78\xa2\x0a\x22\x8e\x1f\x54\x78\x1d\x05\xad\x0e\xd1\x58\xfe\xb6\x6b\xfc\xb6\x66\xb9\x20\xa0\x96\x39\xe1\xf4\x7c\xa3\x70\x7e\xde\xc1\xc3\x27\xd2\x3b\xe5\xc7\xcc\xb9\xdf\x79\xd0\xe6\x04\x61\xd7\x4e\x38\x2d\x65\x9a\x65\x60\x65\x32\x2b\xd4\x58\xa1\xec\x24\xc4\xe7\x2c\xbd\x80\x53\xc0\x26\x00\x18\x9c\x55\xac\x8f\xc8\xae\xb4\xce\x0c\xba\x8e\x07\xf2\x4e\xeb\x86\xc4\xbf\xe2\xb3\x55\x55\x69\x24\xb3\xd4\xa9\xf6\x7e\x98\x6b\xb5\xb8\x0e\x2f\x0a\xf7\xae\x05\xdf\x63\x09\xb8\x6d\xe6\x8f\x9e\xf0\x1a\x6b\x9c\xab\xe7\xfd\x0b\x42\xff\xbc\x18\x33\x27\xbe\xc3\x22\xf0\xde\x0b\xc0\xef\x30\x48\x74\xd2\x37\x64\xe7\x8b\x33\x85\xec\xf1\x4e\xbf\x24\xf9\xf0\xfd\x0f\xa3\x95\xf8\x1e\x18\xbc\x07\xd2\x51\x0a\xd5\x18\xee\x45\xdf\xb3\x53\xc7\x8f\x0c\x62\x89\x52\x55\x36\xd0\x85\xfd\x92\x12\x3b\x45\xda\xe7\x30\x0d\x1e\x6a\x44\x96\xc3\xe1\x83\x90\xe2\x74\xab\xb6\xc8\x76\x87\x1e\xbb\x3b\x38\xe0\xac\xc9\xc2\x3a\x6b\x62\x3c\x4a\xfd\x2a\xd9\xdc\x9d\xb9\x57\x2f\x53\xb3\x47\xa8\xdb\xaf\x0c\x96\x9c\x52\x3f\x37\x8a\xfb\x88\x03\x39\xb7\x43\x7e\xe2\x64\xba\x58\x4c\xe4\xff\x07\x91\x33\x13\x38\x0e\x6d\x0d\x97\xdd\x44\x52\x2f\x6c\x0f\xaf\x65\x06\xaf\xb4\x3c\xce\xc6\xa9\xd8\xd1\xe7\x5b\x20\x35\xd6\x4d\x28\xa6\xd5\x7f\x4a\x4f\x65\x51\x35\x24\x6f\xb6\x5a\xd8\x58\x2b\x05\xcf\x1f\x69\x9f\x16\x42\x3a\x1a\xac\x3d\x43\x54\xe5\x10\x7b\xf4\x29\xa5\x8e\xf1\x36\x45\xe9\xc1\x86\xdd\x49\x5f\x9e\xae\xba\x1f\xc6\x3c\x0d\xdc\xaf\x90\xd6\xae\xe3\x2d\xc4\xf4\x77\xd4\x7e\x58\x75\xcf\xcd\x84\xfa\xc1\x62\xf2\x2a\x5f\x25\x14\x6f\xc7\x3c\x86\xe5\xeb\x03\x7f\xba\xb0\xa8\x52\x9a\x37\xfc\x73\x34\x23\x79\x52\xc7\xa4\xa4\x4a\x57\xde\x93\xaa\x69\x18\xb2\xac\xb5\xed\x12\x48\xd2\x9c\x56\x4f\xe6\xc4\x9e\xa8\x1a\x7f\x9f\x9d\xd3\xc4\x5d\xff\x64\x53\xe3\x6a\xab\x51\xf2\xa6\x9c\xc5\xff\x19\xa8\x0e\x81\x83\x75\xb5\xd5\xf4\x62\x5c\xae\x02\x87\xc2\xd8\xda\x32\xbc\x40\x68\xd8\xe0\x0e\x87\xad\xae\xa8\x1e\xc0\xbb\x00\xc6\x69\x75\xfd\x02\xd8\x2c\x1c\x26\x67\xa0\xab\x61\x12\x2f\xc6\x61\x7f\x93\x19\x0e\x94\x62\x21\x82\xa1\x2d\x03\x45\xa4\x79\x23\x2d\x8a\x5d\x45\xf2\x44\x0f\x4e\xe8\x06\xb4\x0b\x59\x2d\x44\xc8\xaa\x6f\x37\x9e\x3f\x9a\xa8\xa3\xd5\xdc\x16\x55\xe6\x0e\x6d\x99\x8d\x59\xdc\xc5\x8c\xb5\x0d\x31\xfd\x49\x69\xa6\x67\xe0\x9a\xd8\x00\x5c\x75\x4d\xb0\x8b\x3d\xb5\x3a\x9a\xe4\xa9\x50\xc7\xa9\x7f\xa6\x2b\x1d\xbf\xd6\x72\xb3\x48\x73\x77\x1e\xd5\x4f\xcd\xcc\x9b\xb2\x62\x3b\x40\xb7\xdf\x06\xba\x35\xe9\xb3\x31\x24\xfb\x66\xa4\x51\xed\x05\x69\x5c\xe4\x7e\xeb\xfd\x60\xb7\xab\xa7\x53\xf5\x10\x97\xbd\x1d\x16\x59\xbd\x29\x74\x9f\x15\x62\xf3\x35\xce\xe1\xb9\x25\x64\xa1\x7b\xae\x4a\x50\x39\x79\x96\x0f\x99\xaf\x82\x56\x6f\xfd\x2e\xd6\x2a\xaa\x45\xb8\x56\x4f\x7a\x1e\xda\xef\x19\x46\x70\x63\x7d\x0a\xcd\x93\xa4\x6d\xa5\xd3\xd6\xc5\x31\xa1\xe7\xdb\x69\x0e\x5f\xa8\xec\x93\x5c\xcc\xa5\x31\x12\xe4\xf7\xab\x02\x17\xfa\xed\x8e\x8f\x8b\x42\xc6\x96\xc9\x10\x94\x67\xdd\xdb\x32\x76\x48\xe5\x39\xe0\x29\xe0\xb9\xbb\xc7\x8b\x73\x0d\xe9\x6d\x06\xd6\x96\x7e\x58\x2b\xa0\xac\x25\x81\x19\x56\xb7\x56\xa3\xac\xe8\xad\x36\x51\xc4\x4e\x01\x08\xa3\xb8\x95\x6d\x81\x28\x9b\xb1\xd6\xec\x8b\xea\x74\xb1\xb6\x0b\x7a\x17\x13\xdf\xb1\x9a\x58\x2b\xda\xf0\x27\x81\xeb\xf3\xf6\xcd\x9f\x0d\x93\xf7\xfb\xa6\xe8\x45\x35\xc2\x38\x17\xd5\xe9\xdd\xde\xa1\xb1\x71\xbe\xf1\x1d\x1a\x27\xc2\xfe\x77\x68\x8c\x66\xf7\xbe\x43\xe3\x42\x82\xbe\x43\x33\x0e\x98\xed\xdc\xb9\x41\x9d\xef\xd0\xb8\x9a\xf4\xbc\x43\x63\x34\xb9\xeb\x1d\x1a\x03\x83\x78\x7e\xc4\xc4\xfa\xee\xef\xd0\xd8\x5d\xca\x77\x68\xd0\x8e\x1d\xef\xd0\x20\x58\x90\x63\x22\x38\xc6\xfb\xde\xa1\x31\x70\xdd\xf0\x0e\xcd\xa0\x09\xb5\x66\xa7\x15\x47\xc5\xe6\x08\x3c\x27\x6e\xc7\x30\x47\x2d\x0b\x7a\x7c\x41\x5f\xb5\x43\xfb\x83\xbf\xef\x2b\xe7\x76\xf3\x0c\x8d\x86\x3b\x70\x16\xbe\x21\x6a\x86\x7f\xf8\xe2\x5d\x3a\x7a\x99\x9b\x61\xbb\x77\xbc\xb2\x21\x7d\x71\x75\xae\x01\xd8\x3a\x65\xd8\x74\xe0\x80\x67\x2e\xba\x8c\x79\xf5\x1e\xb4\x7a\xad\x8d\x56\x73\xbb\x95\xe1\x30\xd3\xd7\xc6\x80\x47\x5e\x45\xeb\xff\x1e\xd7\x11\xd9\x1b\xc2\xf6\x77\x41\x17\xfd\x1b\xa1\xbd\xec\xb6\xb4\x42\x8a\x44\x98\xf8\x85\x7d\xed\x83\x45\x0b\x51\xd9\xde\x84\xd9\xec\x7f\x9b\x48\x4c\xdd\x57\xca\x8b\x3c\x6f\x21\x63\xd0\x8f\xed\x3f\x98\x1a\x71\xd5\xfe\x83\xad\xc1\x57\x19\x38\xc8\xe0\x04\x04\x2e\x21\x0e\x63\xee\x40\xb3\xcd\xfe\xe1\x93\x0b\x18\x3a\x26\xc3\x11\xa4\x75\x3e\xe0\x0d\xb0\x03\x23\x01\xc7\x44\xfa\x9e\x33\x19\x33\x92\x16\x9d\xb9\x11\x31\x08\x35\x82\xc0\x9e\x4d\x7f\xe4\xd0\x45\xbf\x1e\x30\x7c\x7a\xa2\x8f\x71\x70\x63\xa8\x74\x9d\x7c\x61\x27\x45\xef\xd2\x0b\xe3\x22\x94\xcc\x02\x28\xce\x50\xb8\x1b\x0c\xd0\x6a\x7c\xab\x23\xb9\x09\x07\xf1\x6b\xdf\xf1\x76\xf3\xc7\xc7\x47\x67\x73\x2b\x74\x0a\x01\x98\xd5\xbc\x69\x5a\x33\xc6\x6b\x67\x81\x06\x60\xc6\x88\xd1\x38\x39\x34\x46\xd5\x06\xbd\x10\xa4\x9b\x9e\x8f\xd8\x71\x93\x7b\xf4\xe7\xec\x6d\x6d\xdf\x6d\x19\xc0\xfb\x18\xb5\x36\x0c\x34\xbd\x77\x7c\xef\xbc\x8a\x38\x3a\x19\xb7\xb4\x0c\x36\xbe\x7b\x90\x77\x2f\x42\xce\xb1\xb2\x2b\xdf\x23\x94\x52\x25\xaf\xbc\xe8\x6f\xff\x40\xe8\xee\x16\x79\x1f\x4a\x98\x0c\xd3\x59\x0f\xf5\xd5\x8d\x6a\x54\x12\xce\x7b\xe9\x18\x95\xa4\x73\xdc\x20\xd8\x2b\x4b\x02\x34\xcd\x9f\x69\x55\x63\x19\x64\xa7\xd3\x29\xf0\x7f\xc2\xc7\xf6\x1f\x6c\x8a\xfb\x3f\xeb\xa4\xfd\xd7\x0f\x0b\x86\x8c\xc3\x0c\x1f\xab\xc1\x96\x0b\x88\x4b\xf7\x7f\x06\x48\x83\x2e\xd0\x48\xf0\x81\xc1\xe0\x5e\xd0\xdd\xe3\xc1\xbd\xa0\x5e\xa8\x11\x04\xde\x74\x98\x69\x40\x1b\x5c\x5e\xd0\x00\xdc\x18\x2a\x5d\x0b\xd0\x7c\x3e\xbf\x53\x3b\x30\x2f\x48\x9f\xea\x78\x83\x01\x5a\x07\xbc\xa0\x61\xfc\xbd\x5e\x10\xcb\xc8\xec\x68\x6e\x79\x41\x10\x00\xf1\x82\xa2\xb0\xfd\xd7\x2f\x4e\xe0\x05\xf5\xc0\x8c\x11\x23\xe6\x05\xf5\xaa\xda\xa0\x17\x84\x74\xe3\xb2\x61\x60\x5b\xe0\xa6\x85\xae\x67\xb7\x41\x1c\xe8\xbe\x67\xb6\x0c\xfb\x6b\xc3\x2b\xd1\x68\x97\xed\xb6\xb6\xef\xb6\x66\x8d\x75\xd9\x6e\x6f\x7a\xef\xf8\xde\x79\xc9\x1b\xef\xb2\xdd\xd3\xf8\xee\x41\xde\xbd\x62\x3a\xc7\xaa\xfb\x57\x03\x7a\x69\x7b\x6d\xe8\xda\x05\xbd\x36\x17\x56\x87\xc3\x64\xd7\x43\x81\xba\x51\xdd\xe2\xb8\xdd\x4c\xc7\x2d\x8e\xdb\xc0\x20\xe6\xf3\xf9\x35\xd8\x55\x94\x24\x71\x75\x3e\xed\xba\x5d\xb7\x47\xb0\xe9\xa6\x9f\x21\x1c\x91\x98\x97\x25\x51\x45\xdf\x5b\xee\xba\xd2\x8f\xe5\x9a\x1b\x39\x06\xcc\xe7\x2c\xdd\xec\xe8\xbe\xa8\xba\x43\x59\x3c\x4f\xd2\x56\xfb\x44\xe8\x12\x45\x7e\xf9\x47\x18\x92\xf0\x83\x81\x42\x9e\xd9\xd4\x3d\xf7\x92\x1c\xd2\x9c\x1d\xbc\xe8\x7d\x89\xdb\xbc\x2b\xc5\x06\xef\xa1\xc7\x77\x15\x3e\x7b\x54\xa0\xb6\x9d\xaf\x66\x41\x5d\x92\xfe\x6c\x8a\xce\x87\xc1\xbb\x1b\x5e\x83\x39\x75\x59\x0e\xd9\xb1\x19\x70\x5d\x37\x4e\xc0\x48\x8c\x8b\x6d\x70\x54\x46\x25\x1b\x21\xb6\x3d\xd0\x17\x5b\x77\x25\x14\x32\xbb\xd1\x6e\xc0\x59\x24\x68\x75\x8c\x82\x3b\x83\xf6\x76\xaf\x6a\xd9\xb4\x25\x89\xd7\x10\x79\xcb\x10\x69\x80\x3d\xde\x30\xe6\xee\x17\x94\x88\x66\xf3\x90\xd2\xb6\x2b\xb4\x02\x1b\x8b\xde\xa8\xa7\x1a\x1b\x95\xd1\x94\x0f\x4d\xa5\x5d\xd1\x34\x6c\xf0\xe2\x13\xfa\xb6\xa7\xbc\xee\xa0\x77\xd8\x59\x22\x7b\x88\x46\x15\x36\x10\x13\x00\x19\x8d\x6e\x66\xf1\xf2\x5e\xb4\xc8\x75\xc2\x31\x37\x07\x91\x77\x8c\x81\xb4\xfd\xec\x60\x2d\x26\xa2\x8c\xaf\x27\x03\x17\xed\x6d\x5c\xee\xe9\x8c\xd4\xc3\xf9\xa4\xcf\xd2\x65\xef\x1c\x5e\xa2\x7d\xbb\xa6\xb1\x5d\xdd\x3b\x93\xed\xae\x61\xb5\xd1\x77\x7d\xb2\x79\xc8\xcb\x0c\x1e\x3a\x52\x1f\xd8\xa8\x7a\x58\x68\xd7\xf7\xb1\x70\xd6\xcb\xc2\x19\xda\xb7\x93\x85\x56\x75\x2f\x0b\xed\xae\x61\x35\xeb\x5b\x9d\x7b\xc2\x8d\xa4\x9d\xa2\xc2\xba\x60\xcc\xb0\x78\xb8\xbd\x64\x15\x62\x1c\xfc\x6f\x46\x74\x9f\xb1\xe6\x62\x9a\x63\x27\x08\x87\x2f\x51\xca\xf3\x7a\x8b\x6e\x78\x1e\x58\xe6\x65\xc9\xed\x37\x93\x79\xe3\x20\xa7\xaf\x8d\x1a\x11\xff\xc9\x06\xa5\xed\x47\x76\xc0\x65\x45\x9f\xd3\xe2\x5c\x6b\x0d\xba\x22\xad\x11\x3f\x6c\x25\x00\xc0\x52\x65\x16\x99\x23\xb1\x16\x28\xbb\x82\xf5\x72\xc7\xb2\x75\x0d\xf8\xf9\x0c\x53\x54\x9d\x90\x82\x29\x3d\x79\xc1\xb2\xfd\x9f\x19\x3d\x69\x33\x6a\xb5\xf8\x68\x24\x40\x59\xb9\x12\xa0\x74\xb9\xf3\x0d\xed\x1a\xce\xcb\xb2\x23\x35\xe5\xcf\x1f\x19\x22\x0f\xa6\x0b\x7a\xba\x12\x4e\xb5\xe0\x92\xfc\x35\x2e\x67\xbf\xe0\x8c\xc8\x93\x26\xc6\xbf\xa1\xa7\xb2\xf9\x66\x1e\xd1\x64\x89\xd8\x04\x7b\x6c\x7f\x4f\x5e\x09\x12\x08\x7a\x76\x92\x99\x0b\x6b\x00\xfd\x72\xac\xe8\x5e\x7e\x69\xa0\x55\xae\x90\x11\xdf\x01\x96\xe8\x90\xd7\xda\x81\xe1\x35\xe0\xb0\x6e\xcd\x2a\x57\xb7\xfc\xd5\x79\x89\x0e\x79\x2c\x5a\x92\xc7\x5e\xec\x05\x70\x58\xb7\x66\x95\xab\x5b\xfe\xe8\xb5\x44\x07\x9f\xb1\x95\x7d\xb2\x47\x48\x75\x20\xac\x43\xad\xdc\x19\x8e\x63\xef\xef\x4a\x44\xc8\xc3\x9b\x52\xb3\xd8\xeb\x87\x00\x0e\xeb\xd3\xac\x72\x66\x09\x60\x0f\x88\x76\x1a\x62\x3d\x00\x28\x1d\x0a\xf6\x30\x9b\x09\x86\xea\x91\x5e\xe3\xea\x93\xbf\x61\x78\x15\x4f\xbf\xe1\x47\xc3\xd4\xd3\x30\xfa\xd1\xfa\x59\xf9\xea\xad\xec\xb4\x42\xbf\xd3\x52\x80\xcd\x2d\x68\x13\xd8\xb9\x19\x36\x30\xf7\xa4\xe6\xe3\xee\x9b\xd4\xfc\xb4\x8d\x84\x34\x4e\x54\xc9\xa7\xbf\xae\x44\x74\x23\x57\x21\xfe\xeb\xce\x55\xa8\x35\xb7\xfc\x00\x62\xda\xd0\x93\x74\xcb\x39\x4e\xfd\xc2\x71\xe7\xcc\x3f\xdd\xf2\x48\x3e\x40\x2f\xdb\x1a\xb6\x0c\x87\xf9\x2c\x40\x8d\x13\x34\x0b\x78\x71\x5a\x91\xa3\x7f\x37\x32\xef\xe3\x9f\xe7\xd3\xae\x68\x2a\x2d\xa1\xd6\x0c\x1e\x11\x16\xd1\x0a\x96\x1b\x8e\x53\x9d\xe6\x47\x5a\xa5\xd8\x77\x06\xb3\xd1\x1d\x4e\xef\x18\x4d\xb4\x5f\xc1\x31\xba\x18\x08\x74\x50\x78\x30\x0f\x5c\x10\x99\x46\x40\x8f\xa7\x61\xa8\x35\x7f\x3a\x56\xba\x13\x26\x67\xe5\xa2\xfd\x77\xd5\x2f\x72\x74\x2d\xac\x8b\x47\x5a\xdd\x05\x49\x9c\xa5\x0d\xa3\x6b\x78\x01\xa9\x9d\x45\x00\xbc\x8e\x2b\x4a\x73\x7e\xb9\xcc\x3e\x60\x65\x73\x7c\xfe\xd8\x7a\x79\x77\x90\x69\x5e\xac\xd3\xdf\x88\xe2\x12\x5e\x86\x26\xe5\xb6\x38\x14\x83\x97\x33\x76\x68\xbc\x39\x9e\x4f\xbb\x9c\xa4\x99\xe3\x05\x15\xfb\x50\xdb\x14\x5e\x6d\xd0\x33\x8a\xdc\xed\x3c\xea\x8f\x40\x69\x0f\xd2\x71\x20\x2f\x98\xd6\x1e\x25\x35\xf5\xd3\xdc\x2f\xce\x0d\x78\xd4\xce\x01\x34\x08\xa1\x8d\xfe\x29\x3d\x1d\x26\xea\xa7\x27\x13\xb7\x68\xb3\x4c\xbf\x61\xa1\xae\xd1\x13\xd5\xa8\x5b\x79\x54\x09\x77\x0f\xb5\x92\x00\x7b\xa6\xb2\xf3\x0f\x54\xff\x41\x4c\x4a\x16\x61\xd3\x2e\x05\x6d\xf5\x8d\x2a\x92\xd1\xaa\xb9\xe8\x57\xac\x6e\xbd\xb0\x8c\x85\xe2\x18\x56\xef\x38\x37\x0f\x8c\x82\x39\xcc\x81\xf8\x7f\xec\xf7\x47\x57\xed\x3c\x65\x75\x4f\xe5\x44\xfc\x71\xb6\x4e\x50\x77\x20\x9f\x4b\xf8\x90\xa2\x40\x9c\xa4\xf5\x29\xad\x99\x3f\x3d\x31\x8b\xd2\x9d\x95\x60\x7f\x86\x37\xf4\x82\x38\x2b\x6a\xac\xbd\xa8\x71\x19\x9d\xd6\x88\x8a\xc3\x8c\x6c\x21\xc2\x38\xd0\x39\x5e\x52\x2c\xf1\x6a\x39\xc3\xfc\xfa\x64\xbf\x0f\x13\x78\x76\x31\x59\xd2\x75\xbc\x04\xa8\x3c\x74\x55\x8b\xd7\x74\xba\x9b\x41\x50\x9d\xff\xd2\x2f\xdc\x2d\xe6\xad\x1f\xc1\x6b\x98\x83\xd6\x39\x53\xab\xf0\x11\x7f\xf5\x99\x26\x7b\x18\x27\xda\xc5\xf4\x71\x1f\xe9\x78\x70\xc2\xc8\x92\x46\xd4\xe8\x0f\xa5\x6a\xbe\x98\x2e\xd7\x12\x0a\xbc\xe2\xfe\x48\x96\xc9\x6c\x87\xad\x1b\xf1\xfe\x91\xce\x00\x61\x7b\x42\x77\x71\x0c\x50\xe1\xb4\xed\x57\x34\xda\x2d\x20\x28\x42\xde\x72\xb9\x88\x14\xd3\xcc\x27\xa7\xc9\x7a\x3e\x9f\x4f\x31\xea\xa6\x09\xb5\x9e\xe7\x6f\x69\x4b\x22\x13\x13\x4e\x1c\x9d\xef\xd6\x71\x08\x20\x11\xda\x1e\xe7\xb3\xc5\x6c\x7e\xfd\xb3\x5c\x18\x7f\xa5\xdf\xf6\x15\x39\xd1\xda\x2b\xab\xe2\x50\xd1\xba\xf6\x77\xec\xf2\x6a\x95\x96\xb4\xbe\xec\xab\xe2\xa4\xbb\x97\x9d\x72\xcf\x59\x58\xe1\xda\x14\x68\x6d\xe8\x85\xd7\xeb\x9f\xfd\xe2\xbb\xa2\xff\x8e\xb8\x03\x89\xf1\xa2\xdd\x03\xc3\x56\xc3\xe1\xf4\x5d\xae\xad\x97\xa1\x2b\x4b\xd6\xeb\x83\xce\x1b\x49\x36\xa4\xa2\x9f\x9d\x2c\xb0\x92\x6b\x77\x6f\x66\xb2\xa4\x53\x3d\x29\x86\xa7\xca\x61\x73\x38\xf7\xce\x38\x71\xcf\xf0\x7c\xed\xaa\x94\xf1\x84\xe3\x58\x48\xc4\xaa\xb3\x81\x79\xc1\x92\x5b\x63\x60\xcd\x41\xa5\xb3\x46\xe3\x1b\xd7\xa2\xc4\x33\x38\x39\x09\x10\x4d\x4b\xec\x7b\x7c\x92\x3e\xfe\xdc\xad\xdf\xbd\x79\x37\x5f\x24\xf4\x30\x41\xae\x88\x2d\x1e\xbc\xe9\xe2\xe3\x44\x33\xa5\xd6\xef\x45\xf8\xd1\xd1\xd2\x5d\xb3\x02\x38\xc0\xef\x07\xfb\xfa\xae\x5f\xfc\xff\x90\xe8\xff\xf4\x14\x23\x6f\xa2\xb2\xf9\xc6\x56\xa2\x79\x68\x86\x48\xcd\x1a\xa5\x92\xc2\xcf\xeb\xd3\x48\xe9\x0a\xca\xfe\x48\x9e\x9e\xf8\x27\x29\xb6\x42\x7a\x53\xf9\x20\xb3\x97\xe6\xfb\x34\x4f\x1b\x36\x6f\x6e\x6f\x74\x73\x8b\x2b\x98\x47\x83\xe1\xa6\xfe\x69\x89\x21\xf8\x63\x22\xfe\x31\x11\x2d\x8a\x81\xde\x0d\xc4\x1b\x07\x94\x0e\xb6\xfe\x43\xe3\xfe\xd0\xb8\x21\x8d\x1b\x8e\x39\x0f\x28\x1d\x82\xe0\x0f\xbd\xfb\x43\xef\x86\xf4\x6e\x70\xd3\x61\x40\xed\xec\xf6\x7f\x68\xdd\x1f\x5a\x87\x68\x1d\x8b\x5e\xc3\x2b\xc9\xa2\x18\x7b\x0d\x56\x3c\xfc\xc0\xea\x79\xe0\x6d\xc2\x7f\x3c\xe9\x4f\xeb\x9b\xb9\x07\xc3\x0e\x23\x2b\x30\x1b\xb0\x4b\xc7\x20\x7d\x21\xde\xc0\xe8\xce\xdf\x15\xc9\x37\x2c\x2b\x29\xd8\xa9\x6a\x8a\x52\xa2\xe2\xe9\x12\x2e\x8e\x24\x0a\x12\x2b\xcb\x84\x05\xb7\xbb\x58\xa9\x84\x39\x52\xd2\x12\x7b\xe9\x49\xd5\xb0\xd0\x06\x90\xd6\x0d\x3c\xe9\x61\x9d\xe4\x50\x1b\x3d\xfd\x59\xe6\x79\x76\x1b\xb0\x2d\x74\x7b\xde\x78\x24\x7f\xf8\x6d\xc7\x18\x01\x05\x63\x9e\xce\x1b\xb8\xf4\x6f\xe3\x74\x27\x62\x18\x38\x6b\x38\x70\xfe\x91\x58\xfc\x53\x57\x02\xed\x4a\x0f\x16\x74\xe2\xd7\x22\xf1\x56\x2b\x75\x0c\x02\x32\x0a\xde\x41\x1c\x7b\xa4\x94\x05\xa5\xec\x4d\x49\x79\xda\x64\xe2\xac\xe9\xf6\xa2\x5d\xf5\xf7\x9d\xaf\x63\x9b\x7e\x2e\x9c\x4e\xa6\x0d\x91\x79\x4f\x43\x46\xff\x90\x98\xba\xb0\xfd\x78\x92\x5b\xc9\xdc\x4e\xef\x40\x2b\x07\xb1\x56\x2a\x00\x7c\xf3\xd9\x46\xcc\xcb\x5d\x32\x16\xb5\x3d\x87\x48\x6f\x3c\x35\x8a\x77\x70\x83\xd4\x74\x7a\x6f\x6f\xd6\x2f\x6a\x57\x33\x67\x83\xa7\xfa\x44\xb2\xec\x4e\x22\x07\x1a\xf7\x93\xda\xdf\xd8\xdd\x2c\x78\x13\xc5\x03\xad\x07\x48\xe6\xad\x87\xe6\x93\x6b\x04\xf8\xbc\xe8\xa7\xbb\xb7\xcd\x88\x99\x14\xaf\x92\x84\xda\x47\x2d\x6e\xdc\xb4\xb3\x57\x77\x1c\x81\x1b\x6e\xec\xe2\xe4\x44\xe0\x32\x27\x5d\xbd\x79\x1f\xda\x39\x9e\x90\xed\x37\x3a\xd1\xc8\x55\x66\x08\x60\x88\x1c\x73\xdd\xe9\x5f\x6d\x04\xad\xe6\x6a\xc3\xf9\x69\xa1\xbf\x61\x37\x13\x19\xa4\xdd\xda\x01\x74\xbf\xb8\xda\xd6\x4e\xe6\xb0\x4a\x53\x50\xae\x31\xc4\x73\x3a\xdb\x23\x6e\x05\xc3\xe1\x96\x92\x56\xdb\x4b\xc5\x2d\xf2\x11\x24\x9a\xf2\xe1\xdc\xb3\x70\xdf\xb6\xaf\x8b\x0c\x0f\x45\xe0\x86\xbb\x5f\x50\x02\x81\x93\x4b\xb2\xde\xe0\x90\x7b\x3c\x64\x3f\x8d\x63\x77\x37\x6e\x89\x99\x00\x43\xe4\xdc\x20\x37\x49\xab\x21\x37\xc1\x4f\x0b\xfd\x4d\x1b\xde\xc8\x30\xb1\xf6\x4e\xb0\xfb\x85\xc6\xdb\x3b\x99\x24\xaa\x0d\xe6\x38\xc7\x42\x77\x71\x8c\x8a\x8c\x63\x71\x4b\xcc\xa8\x1f\xa0\xe5\x06\x79\x49\x42\x0d\x79\x09\x4e\x3a\x19\x36\xf4\x01\x8a\xda\x46\xfb\xd9\x32\xe3\x39\xe4\x6b\x50\x92\xdc\xca\x76\x38\x0d\xc7\x7f\x21\xf6\x1e\x2f\xc2\x76\x99\xf9\xa6\x78\x04\x36\xc5\x43\x73\x83\xd9\x09\x24\x08\xe6\xf1\x00\xfd\x2c\x94\xac\x90\xdc\xb2\xbf\x82\xc7\xe4\x29\x1d\xbe\x5f\x82\x5d\x00\x01\x7d\xa3\x8f\xb2\x88\x04\x07\xc0\x9f\xe2\xed\x9a\xb4\xc9\x68\x9f\x7c\x43\xfd\x10\xc0\xd2\x3e\x9d\xa4\xa1\xe9\xee\xaa\x83\xca\x7d\x51\x34\x5a\xf2\x5d\x8d\x2d\x03\x47\x22\xcc\xc4\xaf\xc8\x4b\x5a\x03\xd7\x61\x90\x9b\x38\x39\xcd\x9e\x34\x75\x9d\xc8\x22\x4e\xa9\x4c\x9d\xa0\x83\xd8\x87\xc9\x2c\x2c\xd6\x4a\x33\x02\xad\xd5\xe6\x62\xe7\x3e\xdf\x5a\xef\xdf\x5a\x5d\xeb\x01\x11\x0b\xa5\xf9\xf8\xe9\x20\x49\xa3\x71\x5d\x8c\xd7\x2c\xde\xa4\xb8\x46\xff\x2a\x10\x63\x77\xaf\xbf\x0d\x3a\x3c\x92\x71\x98\xe0\xb3\x40\xef\xa1\x5d\x72\x26\x7e\xee\x93\xb5\x2b\x8c\x25\xce\xe0\xe8\x0b\xea\x67\x73\x12\x61\xc0\x82\x1d\x0d\x3f\xbd\xa8\xff\xf2\x2b\x5a\x97\x45\x5e\xb3\xe3\xe4\x66\x3d\x64\x1e\xab\x75\xea\x3a\xab\xf5\xc4\x31\xd1\xa1\x3e\x2c\x38\xb4\x2f\x0f\x1c\x3a\xed\x7d\x51\xc6\x24\x04\xd5\x6b\x48\x8c\xf9\x98\xa7\xd5\x6e\xc4\x7d\xbe\x5e\xb5\xb5\x10\x3e\x35\xad\xe4\xcd\x92\xea\x3d\x28\xbd\x11\xb1\x09\xd8\x1a\xab\xef\x42\xd3\x00\xe2\xdf\x9f\xbd\x5e\x93\xfc\x2e\xdc\xee\xed\xe7\x26\x1e\xbd\x1b\xc5\x6f\xe9\xe7\xc6\xb1\x1f\x7f\x27\x1e\xf7\xf4\x73\xe3\xd8\xdf\x89\xe2\xdb\xfa\xe9\x51\xff\x37\xaa\x38\x62\x07\xbf\x87\x86\xbb\xba\xb9\x59\xf1\xde\x83\xde\x37\x74\x73\xb3\xda\xfd\x2e\xfc\x75\x77\x73\xb3\xd2\xfd\x2e\xfc\x3d\x22\x4e\xd3\x88\xe5\x7b\x0c\x6d\xfa\xbb\xd8\xb0\xd5\xe5\x5d\xbc\x7d\x88\x55\x8c\x57\x2f\xa8\xde\x4c\xea\x4d\x48\x0d\xb0\xd6\xb1\x7b\x77\x62\x7a\x91\xfe\x7f\xc2\xd6\xd1\xc6\xee\x0d\x5c\xee\x37\x74\xa3\xf9\xf3\x4e\xa4\xde\xdf\xc7\x2d\x23\x1e\x69\xde\xde\xc4\xd5\x3e\x63\x7c\xc3\x88\xdf\x85\xd4\x5b\xfa\xb8\x7c\x37\x4d\xfe\xce\xcb\x45\xaf\x45\xbb\x49\xc7\xbe\xf3\x52\x32\x9a\xd0\x41\x0d\xfb\xee\x1c\xed\xb1\xb9\x37\xe9\xd7\x77\xe7\x28\x66\x6c\x7b\xf2\xbb\x68\x5f\xd8\x2d\x07\x3e\xa3\xdf\xf9\x5a\x8d\x46\xa7\x39\x80\xcf\x1a\xac\x73\x68\x3a\xd0\xc5\x19\xa6\x33\xa7\xd6\x18\x07\x63\x72\x6b\x0b\x33\x08\x65\x76\xe8\xf3\x2a\xea\x96\x10\x04\x94\x0f\x2e\xbb\x10\x71\x9f\xee\xa9\xa9\x9e\x46\xae\x62\x77\x22\x50\xe0\x2d\x03\xde\xd4\xdf\x28\x04\x0a\xbc\x55\xca\x37\xf5\x37\x0a\x01\xc2\x8e\x71\xb6\xf6\x4e\x04\x08\x3b\xee\xed\x6f\x14\x02\x84\x1d\xf7\xf6\x87\x23\x90\x5a\x2f\x5f\x36\x1a\xd6\xd6\x11\xeb\xd5\x7d\xed\x51\x55\xbb\xab\xb7\x31\xed\x51\x45\xbb\xab\xb7\x31\xed\x51\x35\x7b\x1b\x27\x7b\xda\xa3\x4a\xf6\x36\x4e\x8e\xea\x4d\x53\xb1\xb7\x71\x32\x41\x4c\x96\x7c\x6f\x67\x80\xb1\xe6\x22\x7f\x07\x67\xfb\x11\x58\xac\xb9\xbf\xbf\x51\x08\x06\xc8\x3b\xbe\x75\x7c\x10\xc1\x00\x79\xb7\xf4\x87\x23\x80\x7b\x24\x4e\x79\xca\xe6\xba\x63\x73\x0f\x7b\xfb\xda\x5b\xaa\x77\x77\x6f\x63\xda\xf7\xd3\x76\x0f\x6b\xfb\xda\xf7\xd3\x76\x4b\x6f\x68\xfb\x01\x39\x2a\x7c\x8e\x33\xd0\x5d\x0b\x74\x57\x94\x1f\x17\xd7\xea\x3d\x74\x77\xdf\x91\x91\x17\xb6\xfa\x6c\x36\xee\x72\x75\xd8\x90\xdd\x9e\x3b\x3e\x3a\x14\xf6\xb3\xb5\x1f\x65\xf9\xbd\x23\xdb\x69\x9b\xc4\x43\xae\xb0\x89\xd1\xda\xcc\x73\x50\xcc\xe1\x60\xc7\x1e\xe2\x83\x5b\x47\x0b\xf4\xbe\xbb\xfc\x74\x58\x9a\x52\x0d\xe0\x09\x30\x55\x1d\x3c\x1f\xdc\xaa\x1f\x8b\xb3\x8f\xf9\x58\x8e\xa5\x21\x7c\x9e\x99\x09\x4b\x12\x85\xbf\xb7\x80\x22\xc2\x79\x8c\xd1\x25\x3e\xc2\x6c\xd2\xba\x5c\x7c\xe8\x51\x66\x03\xc6\xc1\xe2\x3b\x4e\x48\xf7\xa1\xbd\x91\xcb\x63\x50\x7a\xb7\xa4\x1c\x43\x11\xdd\xcb\x68\x93\xba\xee\x42\x37\x9a\xe0\xc6\x80\x71\xa9\xf3\x5d\xa9\x73\xfa\x30\xdf\xaa\xd4\x23\x50\x02\x76\x4b\xd2\x1c\xc7\x5a\x1d\xb8\xee\x56\x6d\x83\x40\x7e\x9b\x19\xcd\xd9\xa3\x00\x5c\xbc\xbe\x2b\x15\x90\x13\xed\x8d\x8c\x1e\xc4\x07\xb9\x2c\x88\x72\x1c\x4e\xc5\x10\xdd\xcb\x62\x93\xb4\xee\xee\x2e\x9a\x80\xc8\x80\x71\x30\xfa\xbe\xd4\x46\x7d\x98\x6f\xe4\xf5\x18\x94\x70\xb1\x16\xa4\x39\xce\x94\x3a\x70\xdd\xcb\x71\x93\x40\x79\x6d\x15\xcd\xa9\xa4\x83\x38\xf8\x7d\x5f\xb2\xa6\x1e\xc4\x37\xb2\x7b\x04\x46\xc8\x6d\x41\x98\xe3\x44\x28\x8e\xea\x5e\x66\x4b\xf2\xe8\x69\x47\x13\xdd\xb9\x1c\xba\x41\x28\xce\x87\xaa\x84\x9b\x21\x4c\xa4\x64\x23\xf5\xac\x12\x71\x08\xcf\x02\x4c\x59\x56\x28\xa4\x82\x15\x20\xe5\xc5\xee\x9f\x34\x6e\x90\x8a\xe7\x34\xa1\x85\x1a\x0d\xd9\xd5\x45\x76\x6e\x78\x42\xb7\xd6\xcb\x95\x67\x5e\xf9\xdd\x4a\x95\xc5\xd1\x48\xaf\xa4\x3c\x6b\x88\xdf\x1e\x51\xb4\xdc\x7d\x5b\x5f\xc0\xc3\xce\x8b\x65\x30\x5d\x7c\x1c\xd3\x7c\xbe\xfb\x36\x83\xad\x57\x6d\xd3\x17\x9a\x65\x97\x53\x9a\x1b\x79\x9d\xba\xa3\x9a\x6b\x47\xa6\xbf\x7e\x6f\x50\x77\x43\xe9\xac\xfd\x77\x7b\x92\xab\x81\x53\xba\x03\xa0\x7c\x5c\x1e\xd3\xa9\x7f\x9d\x8b\x06\x79\xe4\xd4\x9c\xa2\x20\x8f\x14\x6f\xef\x67\xea\x30\xef\x54\xbb\xef\xa9\x67\xee\x64\x70\xf5\xc9\x48\x9d\x68\x82\xb1\x38\x3d\x4f\x00\xa8\xe5\x5c\xed\xcb\x3e\xea\xcc\xa2\x1b\x86\x22\x5d\xbb\x71\x56\x39\xf4\x98\xff\xb8\x4f\xb3\x86\x56\x1b\x92\x95\x47\xf2\xa9\x28\x49\x9c\x36\xdf\x7e\x9e\x86\x0f\x5b\xf1\xf7\x26\x98\x0a\x3a\xe4\x2d\x3e\xfe\xc3\x38\x34\xde\xf5\xd0\x9f\xb4\x16\xef\x6c\xa1\x77\xb6\xb8\xee\xce\x4d\x53\xe4\x62\xe8\x5d\xe2\xa1\xb2\xa4\xa4\x22\x79\x2c\x5e\xa4\x51\xf3\x1c\xf4\xa0\x74\x6c\x13\x7a\xfa\x57\xe8\xa9\x48\x48\xe6\x17\x25\xcd\x2f\xd6\xd2\xc0\xea\xd4\xb4\x64\x2f\x88\x8b\x39\x29\xdf\x3e\x87\x73\x53\xde\x56\x8c\xc2\x79\xb8\xd5\xf3\x05\x5b\x19\xdc\xe4\x10\x64\xb9\x5f\xc7\x55\x91\x65\x2d\xf5\x4d\x71\x8e\x8f\xdb\xe2\xdc\xb4\x62\xeb\x88\x0c\xf6\x24\xa1\x9e\x20\x38\x49\x49\x56\x1c\x2e\x48\x82\x32\xa3\x88\x3f\x13\x3f\x13\xa9\x43\xed\xf4\xa3\xf2\x97\x0d\xa7\x01\xb9\x30\xc1\x8e\x38\x60\x46\x1a\xfa\x29\x9c\xf8\xd3\xc5\xc7\x87\xad\x7f\xaa\xfb\xeb\x8b\xde\xea\x9e\x3a\xc9\x94\x34\xef\x63\x89\xd5\x36\xec\xa3\x29\xec\x21\x28\x74\x51\x13\x3e\xe8\x4a\x24\x88\xe9\x74\xc9\x7f\x95\xf2\xee\x4a\xbe\xf1\xec\xab\x26\xd5\xb6\x25\xd3\x9e\xe3\x17\x2f\x2c\x88\xfc\x02\xac\x99\x78\xf9\x08\x69\x87\x5f\x77\x40\x32\x83\xc5\x59\x5a\x6e\xd4\x22\x6e\xae\xc3\x56\x9d\xb5\x14\xaf\xd7\x6b\xbb\x54\x5f\xf8\xa6\x0f\xf6\x0a\xa7\x94\x1a\xbf\x51\x31\x2b\x5f\xbd\x35\x58\x80\xe1\x85\x0a\x1c\x46\x32\xa6\x1d\x44\x52\x15\xa5\xd3\x9a\xca\x99\x2b\xdf\x23\xb2\x5f\x66\x0b\x43\x88\x8c\x4d\xbd\x0b\xba\x4a\x69\x8b\x94\xdd\x2c\xcd\xf1\x46\x60\x69\x13\xcd\xc4\xfb\x81\x9a\xf9\x8c\x96\xc1\x7c\xa6\x5b\xd0\xbe\xeb\x1f\x3f\xb0\x8c\xfe\x00\x9b\x4c\x16\xab\x05\xbf\xfc\xa9\x52\x23\xfd\xc2\x86\x75\xa9\x46\xa6\x46\xee\x86\xc5\xae\xaa\x58\x0a\x67\x5e\x5e\xe1\xa0\xf0\x92\x46\x4b\xb7\x96\xd3\x91\xdb\x2c\x3c\xca\x65\x8e\x82\x23\x62\x8f\x98\x7d\x6e\xff\xc7\x0a\x01\xea\x59\x8d\x2d\x02\xf8\xe3\x67\x22\x08\x06\x51\x74\x8f\x68\x61\x6d\x98\xad\xff\xac\xfe\x34\x5f\xb1\x92\x2d\xf8\x92\xbd\x23\x95\x7f\xa2\xa4\x3e\x57\xd4\xa1\x75\xfe\x7a\xbd\x6e\x4d\x39\x9f\xd3\x8b\xd6\xe9\x11\x5c\x5e\x18\xc9\x3d\x39\x3e\xf5\x38\xa5\x95\x90\xdb\x58\x33\x78\xd5\x32\x54\x29\x43\x79\x42\x74\x7d\x79\x91\xeb\x04\x3a\xdb\x16\xe2\xea\x4c\xef\x74\x73\x00\x75\x2c\x38\x09\x3a\x66\x2d\x1d\x57\x84\xf6\xf5\x7a\xaa\xd1\x9e\x49\xba\xd7\x1c\x3e\x68\x8a\x22\x6b\x52\x6c\xbe\x2a\x5b\xba\x0a\x81\x63\xcf\xfc\x9b\x3d\x39\xa5\xd9\xb7\xcd\x87\x7f\xa7\xd9\x33\x6d\xd2\x98\x78\xff\x41\xcf\xf4\xc3\xa4\xfb\x3d\xf9\xb7\x2a\x25\xd9\xa4\x26\x79\xed\xd7\xb4\x4a\xf7\x7d\x8f\x0d\xcc\xa1\x9b\x14\xcc\xb7\xcf\x69\x9d\xee\xd2\xac\x9d\xa6\xec\xcf\x8c\xe2\xae\x8a\xb9\x08\x88\x11\x39\x67\xff\x5a\x9f\xfd\x6b\x05\xdf\x14\xa5\xf1\xf4\x50\xa7\xdc\x4c\x85\x98\xe3\x27\x41\x8d\x74\x35\xe2\x5d\x3c\x2b\x5f\xbe\x04\x16\xc9\x61\x9c\xa8\x0d\x60\x3d\xaf\x0d\x82\xd8\x20\xc3\x4f\x73\x33\xb3\xfc\x34\x84\x2f\x3c\x3c\x0e\xe5\x75\x1d\x99\x48\xa4\xf5\x24\x91\x68\xbf\x24\x84\x54\x55\xf1\x82\xa8\x10\x48\x43\x1b\x9a\x6e\x3a\x72\x61\x8e\x67\xb7\x61\x4b\x91\x21\x18\x0f\x74\x65\xfa\x7d\x8b\xf0\xa3\xc9\x25\x6d\x9d\x16\x73\x9e\xbf\xf4\xe0\x19\x17\x9c\x74\x83\xa3\xf5\xc5\x70\xc0\x0e\xbb\xe7\x12\xb6\x70\xe9\x93\xd9\x70\xde\xd6\x27\xc3\x3f\x30\x4a\x3b\x03\xcf\xfd\x7d\xa2\xfd\xb1\xbd\x99\xf0\xe3\xd6\x4c\x22\xc4\xd4\xdf\xd9\x93\xd1\x1b\x3f\xd2\x84\xf5\x87\xf1\x54\x76\x27\x5d\x82\xc1\xfe\x42\xd9\xe3\x56\x3b\x38\x81\x76\xc7\x19\x84\x75\x38\x5a\x65\xac\xce\xcc\xa0\x08\xd2\x1d\xaa\x38\xba\xd7\xa3\x49\x10\x1f\xe4\x1d\x7d\x3a\x05\x69\x6b\xcd\xfd\x7d\x96\x45\xc9\x1e\x7d\x75\x39\x75\xd6\xd7\xd7\x12\x7c\x7d\x69\x6b\xd4\x6a\xa9\x7b\x54\xd2\x0a\xbc\xcd\x98\xcc\x87\x8d\x89\x7c\x67\x42\x5b\x02\x79\xa6\x6c\xe3\xd5\x9a\xea\x44\xb2\xdf\xcd\x85\x8f\xe3\xf8\x0e\x17\xde\xed\x4a\x84\xc0\x4b\x98\x62\xae\x84\x0d\xd4\x89\x97\x59\x40\x5d\x57\xf8\x17\x8f\xac\xe5\x46\x4f\x9f\x34\x66\xbd\xb0\x73\x7a\x52\x38\xa3\x9e\x99\x36\xd3\xf9\xd3\xeb\x85\x33\x6c\x3c\x84\xab\x9e\x10\x31\xaf\x2e\x3b\x5e\x9b\x5b\xb5\xff\x7a\x1c\xf4\x5d\xfb\x0f\xb0\xb4\x5b\xc3\x3c\xa5\xe7\xea\xf3\x4e\xc5\x81\x18\x31\x1d\xc4\x53\xc0\x26\xda\x04\xfc\xde\x90\x7d\x83\x4e\x13\xd3\x7d\x7a\x9b\x59\x34\xbb\x04\x37\x8d\x23\x9b\x48\x41\x54\xf7\x58\xef\x07\x73\xfe\x9b\x42\x6a\x8a\x52\x21\x16\x69\xde\xd8\x43\xb7\xe8\xa2\xc9\xaa\x6c\x4b\xa3\xbe\x4d\xb5\x52\x43\xe9\x16\x0f\x60\xb5\x51\xf7\x5f\x2d\x42\x04\xfd\x4a\x9e\x5b\x4b\x89\xd4\x4b\xc4\xde\x07\x84\x1e\xed\x55\x4f\x57\x77\x4c\xb9\xe5\xc8\x0d\x3b\xc8\x07\x69\x4c\x0b\x6d\xd4\x86\xc5\xd3\xc6\xad\x97\x3b\x46\xce\x8c\x57\x2f\x21\xe6\xc8\xf9\x48\xf9\xc4\xc3\x87\x6c\x10\xa3\x0d\x1a\xef\x89\xa3\xd5\xc7\x7c\x8b\xa8\xa5\x0e\xa3\x46\x43\x63\x84\x51\x01\x38\xe1\xa0\x45\x0c\x5b\x7c\x98\x8e\x97\x76\x2f\x49\x7c\x2b\x5b\x5b\x8a\xa0\xb0\xc5\xa3\x2d\x23\xa4\x0d\xfa\xd1\x9d\x10\x6d\xe0\x5a\xb1\x73\xd8\x1a\x1d\x62\xd0\xe2\xde\xb4\xf2\x33\x9d\x23\x1e\xa4\x85\x8d\x38\x26\x55\x71\xae\xb1\x87\x0f\x55\x9d\xf8\x8e\x70\xc5\xc0\xd8\xee\x86\x15\x9c\x35\x1b\x3f\x05\x03\x29\x25\x99\x17\x80\x84\x4b\xe5\x93\x0c\xe2\x5d\x25\x8f\xd9\x64\x33\x48\x8a\x82\x0c\xd4\xe3\xf4\xf1\xa7\x9a\xd0\x1a\xfe\x6a\x93\xe1\x33\xc8\x6f\x69\x92\x65\xfc\x81\xae\x2e\x00\xe9\xcf\x92\x87\xc9\x27\x2b\xd2\xd9\x16\x5f\x70\xc6\x8c\x0b\x14\x2f\xfb\x9e\xaa\x32\x63\xc5\x4b\xe7\x83\x55\x3d\xf8\x34\x0f\x66\x4f\x62\xea\x6b\xdf\xd7\xda\xbb\x26\x8e\x2a\xd9\xba\xa4\x55\x5d\x52\x9e\xa2\x26\x6a\xbf\x0b\x61\x01\xce\x7b\xf6\xf0\x2a\xce\x7c\x91\xf0\x46\x38\x18\xc2\x97\xec\x89\x23\xcf\x92\x4f\xad\x4e\x4e\x5c\x51\x61\xbd\xde\x41\x4c\x59\xd1\xe7\x7e\x62\x98\xb7\x32\x8a\x16\x7f\x88\x18\x7f\x88\x9a\x96\x35\x01\x4f\x59\xeb\xa4\x36\x10\x69\x6c\x7b\x68\x1e\x47\x6e\xd8\x47\x2a\xaf\xbc\xda\x74\xca\x4c\x92\xb0\x1c\x97\x6a\x4b\xb0\xf9\x2a\x9c\x0b\xe3\x45\x46\xf4\x6e\x40\xec\xfa\x0a\xd1\x9e\xd7\x43\xd1\x5d\x84\xd3\x8a\xd5\x33\xc4\xd2\xc4\xb8\x10\x38\x64\xa4\xc4\xe3\x1c\x8d\xa5\x54\x8e\x5e\xec\x99\x00\xe0\x5a\x43\x50\x15\xd9\xad\x9b\xd5\x0b\xfd\xf9\x9f\xe1\xd7\x7e\xec\x6d\x49\xf8\xf8\xd0\xf2\x61\xd4\xae\xa1\x45\x38\x67\xc1\xe8\x04\xe3\x8c\xe1\x66\xe4\xd3\x0b\x8d\x82\x30\x0c\xa3\x07\xaf\xe5\xd2\xb8\xec\xdf\x6f\xc5\x28\x08\x55\xf8\x18\xfe\x09\xfb\xf4\x6f\x8a\x72\xc2\xbf\xc7\xdb\xbf\xf6\x55\x71\xfa\x64\xf6\xf4\x30\x69\x8a\x4f\x56\x5f\x0f\x23\x52\x80\x37\x85\xc7\x17\x80\xd1\xa4\x0b\xf1\x94\x55\x71\x48\x93\xcd\x7f\xf9\x9f\x7f\x6d\xf1\xfe\x5d\xce\xfa\xe0\x6f\x69\x5c\x15\x75\xb1\x6f\x82\xae\x8f\xba\x21\x55\xf3\x97\x56\x2f\xea\xa6\xfa\xf9\xc7\x1f\x1e\x43\xfe\x7f\x3f\x4e\x3c\x9a\x27\x5a\x45\xa8\x2a\xfe\x9b\x68\xfc\xf7\x6f\x25\xfd\x39\x32\x06\x52\xd1\x92\x92\x66\xc3\xff\xe3\xbf\x22\xba\xc0\xd5\xdc\xd8\x11\x62\x1b\x6e\xf7\xab\x07\x67\x40\x08\xb9\xf4\x06\xf5\xb8\x11\xe3\x1b\xd4\x83\xeb\x02\xd4\x90\xc5\xfd\xea\xd1\x4b\xfa\xdb\xd5\x23\x74\xa9\xc7\xe3\xfb\xa8\x47\x77\xb0\x01\x96\x8f\x7b\x98\xd7\x1d\xfb\xef\xf6\x40\xf5\x5d\x00\xd8\x8b\x17\xa4\x71\x91\xfb\xc0\x51\x30\x2b\x81\x8d\xea\x2a\x0f\xd9\xb7\xf2\xc8\x20\xe2\x23\x7d\xae\x8a\xdc\x07\x86\xa3\x07\x52\x6c\x2d\xa0\xcb\x7b\xfb\x99\x22\x63\x6c\x8b\x2d\xf6\xda\xf3\xcd\xe3\xc0\x49\xbd\x38\xbe\x01\x59\xa8\xe0\xcd\xcc\xd0\xa7\xbd\xd6\x87\xfc\x00\xeb\xeb\x64\x50\x1c\x17\xb9\x13\xa2\xf6\xf8\xf4\x37\xfd\xba\xb0\x96\x11\x75\x64\xf1\xc4\xde\x3e\x37\x3b\xba\x2f\x2a\xda\x05\x51\x7e\xfc\xc7\x34\x9c\xad\x7f\xec\x65\x06\xda\x86\xfc\x68\x18\xfd\x24\x8d\x49\x53\x54\x35\x22\x70\x19\xef\x08\xf5\x4f\xf2\x2e\xc2\xba\xd8\xca\xed\xc7\x8f\x5b\x3c\xf7\xbf\xd8\x2f\x0a\x3f\x22\xf6\xdd\x7a\x49\x00\x21\xc9\xcb\x52\xfc\x41\x71\xed\x31\xf1\xee\xfc\x9b\x8a\xd3\x45\x72\xab\xb9\x25\x34\x6f\xd8\xde\x6b\xeb\x6e\xb8\xce\x03\x69\x71\x66\xef\x1f\x6b\xbb\x42\x5b\xbc\xc2\x07\x24\x88\xaa\x85\x39\x8c\x87\xc3\xb1\x11\x49\x9f\x53\x8c\x60\xaa\x8d\x60\xaa\x47\x1a\x1d\x07\xe1\x95\xac\x65\xb2\x33\x4b\x68\x32\xed\xd9\xc7\xad\xf1\xe4\x31\xcf\x7c\xa6\x89\xaf\x3b\x12\xc9\x34\x52\x3f\xa6\x67\x1c\xcd\x7b\xb3\x93\x66\x13\xcd\xf6\xd7\x2f\x7a\x5b\xa6\x01\xa3\xde\xa3\xfe\x0e\x2b\x9d\x73\x32\x8f\x9d\xe9\x33\x4d\x0f\x67\xd6\x4c\x37\x5f\x06\x9f\x39\x96\x96\xf1\xa3\xe8\x48\x03\x81\xec\xc5\x58\xc4\xfd\x83\xce\xb5\x54\xab\x72\x39\x04\xa8\x85\xea\x55\x62\x69\x13\x41\xca\xa9\xb6\x0c\x68\x8f\xb0\xe3\x6b\x8d\x7e\xcd\xeb\x1a\xc4\x19\x25\xd5\x3e\x7d\x15\xcb\xd5\x44\x15\xb0\x88\xd4\x24\x48\x32\xff\x58\x54\xe9\x6f\x45\xde\x90\xcc\x4b\x92\x0e\xd0\xaa\x10\x0d\xba\x67\xc8\x15\xca\xae\x04\x82\xf0\x97\xca\x6d\x40\x51\x2e\xc0\xab\xe2\xa5\x03\xe9\x62\x65\x93\x80\x05\x5d\x34\x12\x78\x01\x4f\x1a\x29\xc1\xfb\x60\x04\x9a\x5d\xd3\xaa\x4b\x91\xed\x88\xa2\x58\x2f\xd3\xc0\x78\xd6\x47\xf9\xce\xcb\x93\x2a\x33\x1a\xba\xa1\x04\xaa\x9c\x3c\x77\x0d\xda\xbf\x55\xb1\x4e\x83\xf8\x69\x54\x8a\x73\x45\x00\x46\x96\x9a\xa0\xf2\x84\x37\x04\xee\xca\x05\x78\x49\x0e\x1a\x46\xfe\xab\xab\x92\x47\xc3\xb5\xfa\xae\x48\x00\xe9\xc7\x77\x3a\x30\xa3\x90\xc7\x36\x8d\x67\x77\xf4\x90\xe6\x75\x58\xe7\x2c\xd5\x72\x28\x92\xa6\x30\x23\x94\x04\x51\x80\x51\xc2\xd6\xc4\x68\x8a\x0e\x95\x95\x43\x2a\x06\xf7\x6d\x7e\x63\xcc\x15\x3b\x39\x2d\xb3\x36\xbb\xa2\x39\x5e\x03\x6e\x0b\xc4\x21\x29\x73\x97\x69\xc4\x13\xf4\xfa\xe3\x4b\xda\x71\xe6\x3f\xa5\xa7\xb2\xa8\x1a\x92\x37\x57\xed\xb5\x25\xf5\xbc\xb0\x5e\x7f\x4c\x13\x7a\xd1\xa3\xbc\x7a\x65\x7d\x2c\x5e\x4c\xaa\xf4\xda\x34\x17\xa7\x7a\x2e\x56\xb4\xf1\x1a\x30\x0b\xc5\x90\xb7\xeb\xf7\x26\xfc\x12\x7a\x64\x6b\x6f\x90\x41\x43\x66\xdb\x6e\x7b\x3b\x6d\x13\x32\xb2\x13\x9a\x3b\x08\xdf\x5a\xf4\xe8\x64\x93\xfd\x3e\x7d\x05\xc7\x92\xaf\x7f\xf6\x4f\xb5\xff\x9c\xd2\x97\x16\x4c\x98\xa6\x84\x3e\xa7\x31\xe5\x36\xf4\x1a\x88\xb1\xfa\xaf\xf5\xa4\xfb\xbb\x3e\xa9\xbf\x4f\x89\xfa\x3b\x3b\x38\x59\xaa\xd0\x70\xa1\x4f\xf4\x12\xee\xa7\x21\x45\x10\xb6\x3e\x21\x25\xb0\x75\x57\x04\x61\x4f\x09\x52\x02\x5b\x77\x45\x10\x36\x3b\x20\x25\xb0\x75\x57\x04\x54\x1b\xb0\xa3\x3b\xee\xd6\x9d\x2f\x58\x2d\x57\xcc\x57\x51\x2c\x70\x2a\x20\x5b\x87\x30\x40\x56\x71\x6d\x2a\x67\x9d\x5f\x15\x2f\x3a\xa2\xa3\x2e\xdd\x26\x71\xb7\x8b\x69\x96\x69\x0d\x47\xd1\x8f\x4d\xee\x9b\x71\x70\x66\x02\x87\xfe\x4e\x2c\x80\x20\xbd\x10\xc5\x08\xfc\x48\xe1\x5d\x76\xfd\xac\xd7\x91\xd1\x4f\x7d\x1a\x29\x31\x0d\xd0\x92\x18\xac\x73\x4b\xac\x3e\xe9\x12\xb3\xda\x39\x25\x76\xf3\xa8\x46\xcb\xf1\x76\xcc\xe3\xa5\x7b\x2f\xee\xbb\x65\xce\x8f\x9f\xc2\x7e\xa2\xa8\xfd\x2a\xd4\x3a\x3a\x25\x23\x85\xae\x01\x5a\x42\x87\x75\x6e\xa1\x9f\x12\x5d\xe8\x56\xbb\x61\xa1\x8f\x1e\xd6\xed\x52\x1f\x8f\xfa\x0e\xb1\xdf\x8a\xfc\x6e\xb9\x47\xec\x30\xaa\x86\x52\xb3\x69\xfd\x12\xd6\x00\x2d\x09\xc3\x3a\xb7\x84\xb3\x83\x2e\x61\xab\xdd\xb0\x84\x91\x01\xdc\x2e\x4b\x0c\xc9\x1d\x52\x73\xa3\xb9\x55\x3e\xd6\xea\xce\xfd\x1b\xdd\x52\x01\x13\x7b\xf3\xda\x21\x30\x6a\x2b\xe9\x30\xc6\x01\xb5\x14\x28\xb5\x79\x3a\x8c\xb2\xe3\x99\x68\xec\xf6\xa9\x94\x53\x55\x56\x69\xde\x0c\xf8\x1a\x1c\xc6\xd1\xa4\x5f\xb3\x4d\x58\x4b\xb9\x91\x6a\xb7\x7e\x33\x60\x5d\xc5\xb1\xd6\x50\xcb\x4d\xe0\x51\xae\x15\x36\xdc\xa1\x79\x00\xa0\x81\xc2\xdf\xd0\xcf\xe0\x54\x41\xe1\xef\x1f\xd7\x3d\x73\x4a\x20\x12\x5a\xd6\xab\x41\xd7\xff\x37\x00\x00\xff\xff\xb5\x51\xa0\xce\x5a\xbb\x01\x00") func webUiStaticVendorBootstrap331CssBootstrapMinCssBytes() ([]byte, error) { return bindataRead( @@ -478,12 +479,12 @@ func webUiStaticVendorBootstrap331CssBootstrapMinCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/css/bootstrap.min.css", size: 113498, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/css/bootstrap.min.css", size: 113498, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\xfb\x55\x54\x1d\x5f\xf0\x2d\x0a\x6f\xdc\x9d\x8d\x43\x36\xb0\x71\x77\x77\x77\x77\x77\x77\xd7\xe0\x2e\x1b\x77\x97\xe0\xee\xc1\xdd\xdd\x21\xb8\x43\x08\x10\x48\x82\x7f\xbf\xff\x39\xdf\xb8\x77\x8c\x73\x5e\x6e\xad\xb1\xba\x57\xcd\x35\x7b\x56\x8d\xee\x87\xae\x7a\x58\x2e\x2a\x00\x00\x96\x32\x00\x00\xfd\xdf\x80\x05\xfc\x8f\xc1\x01\xfe\xb7\x41\x01\x20\x50\x80\xff\x30\x45\x55\xc0\xff\x61\x50\xff\xff\x7b\xc2\xc3\x67\xc5\xff\xb9\x07\x00\xd0\x02\x64\x00\x8a\x00\x3d\x80\x2a\x40\x16\x20\x07\x90\x00\xa8\x00\x94\x01\x1a\x00\xd0\x7f\x9e\x19\xc0\x11\x60\xfd\xdf\xb4\x03\x38\x03\x6c\x00\x1e\xff\x71\xd1\x01\xea\x00\xab\xff\xd6\x5e\xff\xa1\x66\x00\xf7\xff\x10\x5f\x80\xf6\x7f\x88\xfb\x7f\xbb\x76\x00\x97\xff\x78\x20\x00\x1b\x80\x19\xc0\xfa\xdf\x60\x03\x08\xfc\xa7\xf9\x3f\x4a\xff\xdb\xfb\x7f\x51\xdb\xff\x98\x9e\x00\x8b\xff\xc5\xf7\xfe\x7f\x9e\x60\x06\xf0\xfc\x77\x15\x00\x38\xfd\xa7\xec\xf0\x9f\xe6\xff\x70\xac\xff\x43\xff\x27\xbe\x39\x80\xfd\xbf\x15\xd7\xff\x9a\xbc\x00\x8e\xff\x3c\xbe\xff\x62\xf3\xfe\x7f\xce\x1c\xf4\x7f\xe5\x0d\x00\x88\x6b\xc8\xfc\x5f\x6f\x0a\x06\xe0\xdd\x05\xe0\xf2\x06\x70\x05\x02\x98\x0c\xb1\xe7\x2e\xe3\x26\x4d\x37\x75\xa6\x6c\x15\xdc\xe4\xbf\xfa\x52\x68\xf1\xbb\x33\xb2\x64\x72\x1a\xe6\xed\x02\xd1\x51\x1d\xed\x96\x77\x56\xee\x63\xa6\x73\x31\xe0\x0b\xa4\x26\x14\xa5\x95\xda\x48\xc7\x43\x70\xcf\xb5\x69\x6d\x56\x75\x08\x48\x89\x0d\x57\x1e\x18\xdc\x15\x58\x91\xd5\x86\x1a\x27\x39\x98\x54\x84\xc3\x24\x26\xbe\x5a\xc6\xd9\x94\x5b\x05\x19\xfe\xe3\xcc\x3c\x36\x90\xb4\x24\x8e\x8c\x47\x70\x9d\xd0\x51\x2b\x7e\x12\xdd\x7e\x4a\x96\x37\xc0\x46\xaf\x52\x4a\xad\xfc\x12\xd5\x53\xa1\x25\x16\xbe\x58\x30\x81\x89\x48\x68\xff\x5c\xcf\xec\x3a\x7c\x6a\xea\x10\x4b\x2f\x71\x2f\xc7\xb9\x59\x8b\x0b\x29\x72\x41\x34\xfc\x83\x94\x31\xe8\x93\x77\x34\x68\xed\x3d\x36\xa6\x2b\xf9\xa7\xdd\x51\x9c\x28\xbe\xc0\x86\x2d\xd6\x80\xc5\x0c\xab\x8b\x34\x0d\x85\x7d\xd0\xf1\x29\x53\xaa\xe0\xb3\xb9\x68\x1a\x9e\xfd\xe4\xf7\x3f\x80\x0d\x7b\x3b\x5f\x9d\xd2\x48\x1c\x3c\xdc\x77\xb4\x68\xb2\x14\x7f\x74\x19\x49\x2d\xf1\x46\xf8\xf6\x33\xb1\x4a\xb0\x62\x77\x4a\x90\xee\x74\x86\xf5\x9b\xbf\x80\x32\x7b\xf2\x9e\xc9\x40\xe1\x41\x9a\x00\x6d\x92\x43\x79\xaf\xa8\xb8\x41\x0f\x79\x36\xb7\xea\x37\x8e\xef\x32\xc8\x98\xd1\x52\xb8\x08\x46\x88\x01\x93\x4f\x83\xf2\x3a\x2c\x1e\xa9\xb5\x9c\x35\x54\x57\x71\x3b\xfb\x39\xc4\x65\x17\x11\xc3\x26\xa4\x3b\x41\x24\x41\x16\x77\x2a\x4c\x9c\x8e\xaa\x4b\x66\x92\xba\x84\x93\x06\xc3\xd3\x30\x6e\xe5\xde\x80\x3c\x38\x02\xfa\x1d\x5d\xc6\x21\x2f\x34\x7a\xe4\xa8\xf5\xc1\xce\x5b\xff\x62\x0e\x79\xc5\x6d\xd2\xa0\x07\x64\xd6\x53\xc2\xf0\xb5\x25\x6d\x7b\x2d\x3f\x7b\xe7\x7e\xba\x12\xbc\xa8\x93\x15\x15\x56\x81\x67\x56\xf2\x13\x26\x72\x77\x00\x0e\x16\x3c\x0e\x05\x21\xb5\x39\x3a\x00\xca\xdc\x91\x91\xc9\xf4\x58\x0d\x92\x9e\x1f\xc8\x62\xfc\x03\x08\xa5\xd8\xf5\x51\x75\xa7\x8d\xb8\xaf\x5e\xe3\xe5\xff\xb6\x5a\x73\x2d\x87\xd0\xb4\xfe\x77\xb1\xe6\xb4\x84\x9c\xf0\xf8\xc6\x21\x8e\x9a\x4e\x3e\x80\xd9\x13\xa2\x21\x92\x53\x5b\x60\xa7\xd1\x17\x52\x3e\x6b\x69\xa7\x2d\xf9\x87\xcd\x07\x64\x9e\x91\x6f\x04\x9f\x5e\x2f\x79\x45\x1f\x4f\xe5\xe6\x31\xa3\x2a\x39\x50\x5a\xbb\xec\x0b\x3d\x1b\x03\x04\xac\xba\x22\x4b\xc9\x98\x66\xbf\x5d\x32\xfc\xf1\xe1\x2f\xd6\xee\xda\xa4\xd7\x15\x34\xd8\x83\x73\xbc\x87\x84\x61\x11\x2b\x55\x13\x1e\x20\x63\xff\x21\x65\xde\x5f\x9c\x2f\xc1\xd6\x80\xb1\x2d\x6d\x58\x70\x73\xc8\xe9\xa3\xe8\x43\x1e\x96\x07\x95\x96\x28\x69\x72\xaf\x80\x2c\xda\xde\x1d\x62\xcd\x5e\xfc\x57\x6b\xda\x9c\x09\x88\xdd\xba\x7f\x39\xb1\x1e\x1f\xb8\x4a\xca\x8f\xcd\x7a\xbf\xfc\xaa\x2c\x9c\x1f\xfa\x5c\xde\x94\x3e\xf7\x0e\xa5\x0d\xd3\x18\x48\xa2\x85\x87\x3e\x5a\x55\x92\x8b\x5a\xe9\x90\xce\xc0\xcc\x39\x84\x57\xf8\x3e\xe7\x24\x28\x8b\xd3\x86\x32\xf6\x77\xd1\x2d\x38\x50\xa9\x45\x17\x68\x1a\x2c\xe7\x11\xf2\xe5\x0b\x0a\x45\xea\xe2\x90\x40\x02\x65\x18\x6f\x2b\xee\x0c\xa2\x2f\xee\x78\x76\x14\x43\xd4\xf6\xf4\xde\xce\x4f\xf8\x5b\x27\x53\x52\x0c\xd4\xb1\x49\x26\x39\x38\xd3\xdf\xc2\xe7\x14\x33\x04\xa7\x42\xe8\xdb\x30\x4c\x91\xf1\xe2\xb4\xc2\xbf\x61\xd4\xac\x5a\xf4\xac\x6c\xe2\x4e\xf2\xe3\x78\x50\x2a\x99\x61\x5e\x4d\x6a\xec\xc3\xa8\x15\x81\x0a\xfb\x48\x7c\xfe\xea\xbd\x5e\xa1\x12\x65\xf3\xf8\x88\xc8\x97\xe9\xea\x93\x89\x58\xd4\xe2\x39\xac\x68\xa9\x50\x17\xd1\x47\xe9\xcb\x3f\x4c\x42\xe1\xd1\xe1\x25\x4c\xbe\x85\x63\xc5\xe4\xd7\x05\x70\xb6\xeb\x88\xe4\x46\x28\x5f\x44\xcc\x51\x80\x09\xff\x51\x9e\xbc\x4b\xa6\x7d\xed\x46\xe2\x97\xe7\x84\x1f\x64\xa9\xca\x7b\x0c\xff\x99\xdb\x21\x43\xbc\x2b\x2f\x60\x34\xea\x73\x71\xb3\x63\xd9\x86\xce\x9f\x2d\xcb\x17\x42\x88\xd3\x36\xdc\x70\x1b\x6a\xb0\x5a\x45\x3f\x5c\xac\x30\x87\x9c\x43\xf9\xca\x2b\x06\x36\x33\x35\xda\x2e\x64\xd2\x94\xe2\x41\xc5\xf8\x0a\x46\xe5\xaf\xf0\x70\x1d\x8e\xb2\x46\x52\x04\x07\xe9\x67\x66\xd6\x87\x9a\x1b\x1d\x9b\xdf\x72\x13\xad\x9e\xf7\xcb\xbe\x3f\x86\x03\xdd\x7d\x99\x3c\xd1\xc2\x73\x21\xf6\xda\x76\x4a\xf6\x29\x18\xca\xc6\x06\x65\x58\xad\xbc\x30\xc5\xc2\x12\xce\x3c\x8a\x68\x90\xfc\x64\x6a\x06\x0e\x1d\xee\x44\x19\xc1\x1f\xe2\xc0\x3a\x6c\x95\xda\xb0\xa7\x2d\x76\x31\xfe\x9a\xd3\xd6\xb8\x54\x85\xa8\x64\x21\x9a\x54\xa1\x67\xf9\x01\xc8\x87\xf8\x78\xb8\x2d\x84\xbd\x6d\x9a\xc2\x32\xaa\x85\x70\xe3\xd7\x3b\xd2\x34\x29\xd2\x3c\x68\x47\x45\xd0\x6e\x37\x6e\xa7\x74\xec\xa0\x62\x52\xc1\x15\xdb\x8e\xb1\x1d\xaa\x4e\xfb\xe7\xbb\x72\x8d\x71\x31\x11\xa7\xba\xad\x2f\x36\x13\x7c\x5c\xb1\xb8\xc6\x56\x6a\xfa\xd5\xbe\x01\x9f\x56\x1e\x88\x42\xcc\xb9\x1c\xe9\xe2\xc4\xc5\x96\x01\x10\x25\x5d\xfb\xbc\xb3\xc7\x86\x57\x56\x8b\x9d\xd5\xe4\x2e\x18\x1c\xa0\x5c\x39\xca\x87\xf6\x3b\x8b\xd3\x5d\x2e\x33\x7b\x76\x07\xa2\xf5\x6e\xea\xfa\xe5\xb7\xbf\x27\xf6\xd4\xd0\x0c\xe2\x96\xd3\xc8\xbd\x0d\x86\x57\x6a\x95\x40\x7f\x82\x7e\x4b\xc1\x5a\x20\xaf\x24\x2a\x4a\x91\x06\x29\xaa\xd2\x86\x82\x40\x0e\xf4\x64\x35\x2e\x02\x4c\xe5\xdb\x4c\xad\x68\x30\x31\x15\x22\xf2\x4b\x81\xaf\xb7\xa8\x58\x14\xaa\x1d\x9c\x1c\x4e\x06\xf5\x0a\xce\xe0\xc8\xf7\xed\xb8\x18\xce\xb0\x8e\xe7\x64\x8b\x66\x35\xf6\x20\xd6\x6e\xe6\x2c\x99\x96\xe0\xc2\xec\x63\xbf\xe2\xb9\x61\xca\x62\x50\x05\x1e\xe2\xa7\x3e\xd3\x40\x56\xc5\x3c\x53\x09\xa0\x76\xba\xb0\x38\x81\xca\x7e\x95\xce\x0b\x9d\xa5\x1e\x87\x0c\x2f\x9f\xc8\x3b\xca\x2c\xa7\x5c\x8e\xd1\x06\x76\x39\x0c\xee\xb6\x0a\x2e\xfc\x80\x6c\x1d\x30\x41\xd1\xe8\x48\x0d\x73\xc4\xbb\x2b\xda\xac\x46\x93\x86\x26\xd2\x1c\x4a\x3a\x7f\xe8\xa6\xc2\xeb\x28\x13\xad\x62\x35\x9e\x9e\x6f\x6f\xaf\x60\x0f\x24\x06\x51\x57\x2d\xad\xbf\x7e\x7e\x76\x21\xe2\x90\x20\xc7\x62\xfe\x2c\x83\xac\x58\xa0\xcf\x93\xa2\x61\x95\x4a\x13\x5c\x2f\xc8\x18\xf8\x36\x27\xca\x9e\xe7\x28\x05\xa1\x4d\x42\x8c\x78\x4b\xfd\x06\x4b\xad\xee\x63\x36\xb9\xb1\x9a\x0c\x84\x38\xa0\xe0\x0d\x3e\xc2\x60\x96\x73\xa5\xff\x11\x2c\x69\x5f\xc8\x1a\x5d\xb9\xfe\xa6\xd6\x9b\x34\xd4\xf9\xdd\xa8\xbd\xa6\x87\x64\x32\xad\x7a\xe1\xa9\x6a\x10\x01\xda\x7f\x57\xf5\xda\x13\xe6\x5d\xdb\xe0\x6e\x24\x3d\x3c\xc2\x1f\xd4\x0d\x73\xb6\xae\x9c\xf8\x84\xbf\xb5\xfb\x27\x52\xc0\x89\xf4\xd4\x3d\x1b\x44\xba\x7a\x29\x48\x10\xc2\x89\x04\x3a\x9e\xef\xb0\xd6\x3e\x4c\xb9\x91\xb1\x32\x0f\x4a\xc9\x45\x29\xfb\x3d\x10\xe5\x81\x62\xb7\x0c\x55\x93\x1a\xa0\x22\xf5\x38\xeb\x4c\x19\x49\xad\xa6\xca\x2d\x09\x47\x0f\x27\x0e\xab\x28\x0e\x88\xf8\x52\x0f\x4f\xcc\x16\xa9\x81\xaf\xee\xf0\x57\xf2\x6f\x7b\x58\x97\xae\x6e\xab\xb0\x60\x20\xab\x40\x46\xdb\xf5\x76\x4c\x08\xd7\x4f\x2c\xae\x2d\x89\xe0\x7f\xab\x9c\xe5\x2f\xbf\x7b\x66\xa6\x44\x6e\x26\xf9\x09\x54\xbb\x83\x28\xda\x76\xa8\xb6\xd6\xbc\x3c\xb9\xb2\x7a\xe3\xe4\x2e\xc8\xdb\x22\xf3\xf9\xfa\x1d\x47\x3e\x60\xc1\xe4\xc5\x2d\x49\x7e\x4a\x63\x9a\xab\xc2\x21\xf7\x34\x9d\x48\x08\x2a\x7b\x9e\x6e\xf0\xb0\x66\x08\x22\xc6\x47\xff\x8a\x48\x48\xa4\x9c\xf2\x40\xfb\x2d\x2d\x12\xdb\x18\xe9\x1e\x57\x1a\x81\x4c\xce\xb2\xa8\x1d\x5f\x7a\xfe\xb9\xa5\x77\x52\xea\x79\x86\xa0\x9d\xdc\x44\x3a\x20\xa5\xdd\x0f\x77\xe3\xdd\x25\x95\xee\x4e\x34\x14\x79\x54\x50\xe1\x07\x4d\xc4\xe5\x98\x4b\xe8\xb0\x04\x56\x9b\x4a\x67\x18\xb6\x98\x33\xc6\xc6\x4e\x25\xb3\xcb\x96\x3e\xb1\xd7\xb0\xfc\xe1\xe3\x24\xa1\x44\x09\xfe\x61\xd5\x75\x80\x89\x19\xfd\x1e\x35\x6d\x11\xd3\x3c\x5a\x4d\xf1\x83\x40\xed\xf8\x68\xf0\x20\x96\xe7\x84\x7f\x59\xbf\x5c\x0e\x6f\x3d\xde\x88\xaa\x74\xf7\x40\x2f\x8f\x7e\x56\x5c\x80\xd7\x4c\xda\x37\x0e\x6e\xba\xda\xfc\xd8\x64\xae\xa8\x65\x9f\x09\x8d\xbe\x93\x90\x08\x06\xfe\x86\x2e\x9d\x13\x63\x47\x64\x18\xd3\xbe\x8c\x40\x34\x0b\x33\x83\x4b\xed\x2b\x4d\xcd\x8d\x2a\x2e\xef\xe3\xf0\x4f\x19\x77\xe8\xb6\xb2\x19\xba\xa2\x45\x41\x99\x18\x69\xb8\x74\xce\x8e\x39\x99\x80\xbf\xed\xdc\xf1\x0f\x17\x59\x02\xc7\x65\x7b\xab\xb1\x1e\x85\x71\x60\x7f\xaa\x3f\x6e\xc9\xdd\x53\x06\xf5\xc8\xe2\x45\xb1\x64\x2a\xca\x92\x4a\x94\x90\x37\x41\x56\x7a\xd6\x14\x66\x68\x0e\x78\xe6\xfb\x67\xe5\xa1\x29\x6e\x69\x35\x1b\x78\xc6\x3f\x9c\xda\x6b\xeb\x28\xdd\x98\xfb\x83\xdd\x1d\xd8\xf0\x34\x5f\xee\x19\xe7\xa6\x5b\x42\x5b\x64\x00\xdd\x00\x2d\x34\xdd\xb7\xd5\x25\x80\xb8\x9d\xd6\xc5\xb5\x90\x12\xd2\x94\x42\xd7\x93\xe8\xef\x37\xbc\xae\x4d\x73\x80\x8b\xb8\xe0\x63\x6a\x7a\x78\x58\x0f\x69\x88\xe8\x9c\xd1\xc5\x6c\x0c\x66\x04\xa0\x2e\xaa\xcf\xec\x72\xf1\xec\x82\xe7\xf6\x8b\xa9\xe0\xe2\x84\x66\x0b\xb5\x3b\x9b\xd0\xda\x0d\xe2\x6d\xfe\x2b\x19\x4c\x84\x76\xf9\xc8\x07\xa7\xa4\x19\xb1\x64\x31\xfb\x97\x70\x92\x11\xdf\x67\x60\xaf\x57\x2c\xf4\x06\x1d\x62\x51\xf1\x76\x12\x51\x4a\xae\x5d\x24\x10\x73\x49\xc5\x3b\x3d\x0b\xd9\xd2\x5c\xf6\x8f\xdd\x65\xd6\x18\x70\x3e\x8d\xe2\x1e\x24\x6d\x24\x8a\x51\x89\x80\xbd\x35\x38\xd8\x33\x1a\x71\x55\x4f\xce\x4d\x7d\x88\x0c\x2f\xc3\x84\x1f\xdf\x84\x91\x3a\x30\x0b\x77\xd1\x15\xce\xe2\x79\x11\x42\x2a\xd1\xf4\x6b\xc2\x77\x92\x13\x4b\x20\x5f\xf2\x67\x09\xe8\x7a\xe7\x9b\x86\x16\x44\x83\x24\xd3\x20\x31\x1b\x97\x58\x85\xa5\xaa\xa5\x2f\x8f\xa6\x07\xcf\x4b\x41\x9d\x8c\xc9\xf1\xd5\x61\x7d\xbc\x91\x26\x31\xd1\xd8\x20\x44\x5c\xbb\x2f\xa2\x9a\x31\x46\xfd\x50\x5e\x61\xb3\x49\xd3\x58\x0a\xd6\xa6\x78\x19\xd7\xf0\x0b\x20\x8e\x7d\x3b\x9b\x11\xff\x97\x16\x35\x3e\xe9\x52\x0e\x83\x17\xe8\x2f\xa4\xc3\xe7\xe7\xcf\xa7\x8c\x08\xf3\x9a\x1e\xfc\x88\x0b\x77\x04\x18\x85\x78\xd9\xfb\x99\x51\x2c\xf7\xf6\x57\x50\x90\x74\xf4\x0f\xfa\x94\x0b\x18\x9f\xe4\xbf\x77\x5f\x31\xb1\xfa\x29\x50\xce\x86\x0a\x11\xe3\xfa\xd4\xf9\x42\x25\xdb\xc5\x06\x4a\xf4\x60\x91\x90\xab\x84\x78\x64\x8a\xb7\x55\xe9\x21\x42\x0c\x5b\x02\xca\x0c\x00\x55\x62\x64\xe1\xb5\x62\xf8\xae\x16\xdf\x1b\xc7\xf5\xe4\x2e\x5a\x0a\xb8\x1e\x8b\x80\xe3\x68\x99\x1f\xd1\xaf\x26\x43\xbe\x3b\xa5\xe3\x6d\xb2\x52\x4c\xe2\x87\xe9\x25\xa6\x86\x26\x78\xb5\xa6\x2f\x10\xcd\xd0\x14\xdd\x78\xbb\x7d\x89\x27\x95\x85\x0b\x8c\xeb\x7b\x72\x81\xa4\xe9\xf7\xd6\x6b\xe2\x93\x83\x75\xca\xbc\xd4\x0b\x42\x42\x70\x92\x9a\x44\x3a\x8c\x56\xe1\x57\xda\xc3\x1e\x0c\x1e\x2e\xc9\x36\x64\xa8\xa5\xf2\x70\xe8\x23\xcb\x36\x52\xac\x08\xa1\x69\x5c\x94\x36\x61\x4b\xfd\x7e\x56\x02\xcf\x5f\x07\xf6\x15\x25\x36\xc9\x93\xde\xec\xdf\x99\x46\xd3\x7c\x21\x5a\x48\xa4\x10\xd4\x47\x0e\x7c\xc6\x2f\x3c\x24\x9e\xc3\xf3\x77\x25\x66\xbf\x18\x69\x8f\xb8\x1e\x86\x3b\x62\x22\x62\xf2\x01\x49\xa4\x7a\x8b\xcf\x83\x52\x43\x51\x23\xe0\x2c\xee\x75\x8f\xd9\xa3\x87\x38\xf1\xdd\x58\x95\xa6\xf6\x09\x24\x8b\x1a\x7e\xe4\xae\x98\x27\xfe\x09\xd0\xf2\xf6\x86\x3a\xb3\x9f\x99\xac\xee\x0d\x22\x55\x23\x1b\xb1\x9f\x22\x34\xcf\xa2\xd8\xd2\xe1\xbb\x3f\x57\x42\x6b\xb1\xcb\x05\x3d\x20\xbd\xd9\x99\xeb\xb7\x55\x63\x72\x36\x9d\x8b\xf4\x38\x41\x67\xaf\x19\x36\x81\xa4\x95\x29\xbe\xad\x2b\x85\xda\x97\xbc\xce\xf4\x11\xe8\x2d\x3d\x97\xca\x6c\x3c\x95\x30\x98\x73\x50\x29\xa7\x4b\x49\x7f\xba\xeb\x37\x0f\x52\xd6\x94\x0a\x15\x29\x64\x3d\x3a\x73\xc4\x46\x5e\xdf\x49\x66\x40\xa3\xc3\x0a\x03\xaf\x16\x1d\x43\x3d\x37\x93\x91\x02\x5f\xc2\x2f\x57\x78\x35\xcf\x50\xea\x36\x84\x93\x42\x98\xa0\x81\x14\x0d\x67\x27\xf3\x16\xa0\x67\xcf\xbf\x52\xc4\x26\x45\xa5\xd2\x6d\x42\x9f\xa7\xbf\x53\xba\x1e\x1a\x72\xf6\x9d\xc2\x4f\x72\x95\x1a\xf6\x68\xec\xa6\x54\x33\xc3\xa4\x71\x98\xd0\x87\x7b\x7c\x37\x9c\xa1\x29\x45\x39\x41\x97\x07\x42\x44\xf2\x7d\x62\x91\xde\x1b\x92\x68\xf6\x71\x59\xcb\x17\x5d\xc5\x61\x9b\x69\x6b\x07\x07\x07\x9a\xc3\x06\x80\x02\x80\x6a\x1f\x2e\x65\xce\xb9\x19\x69\x9d\x4e\x3d\x2b\x89\xa6\x27\x13\x69\xb0\x7f\x75\xa3\x5c\x04\x63\x0a\x77\x5e\x8a\x16\xfb\x1b\x5d\x16\xcd\xa3\x61\x58\x7e\xba\x77\xcf\x3b\xf2\xdd\x9b\x46\x46\x8a\x7a\xdc\x2f\x55\xe2\x33\x10\x50\xdf\x19\x1e\xc6\xed\x1c\x42\x61\x66\x2e\xd5\x76\xe9\xee\xa3\xc8\x16\xfa\x14\xa3\x65\xb0\xea\x8c\xf2\x55\x14\x28\x03\x67\x00\xc7\xe7\xc7\xe1\xd1\x3d\x25\x40\x8e\xe2\xfe\x13\xd2\x47\xc1\x0a\xcf\x19\x90\x13\x89\xc1\x8e\x66\x6d\x46\x28\x8f\x36\x8d\xb9\x4b\x17\x41\xa1\xca\x1f\x82\x32\xc0\x9d\x53\xcd\x41\xa3\xcf\x63\x98\x22\x8b\xc9\x75\xc0\xf7\xfd\x43\x59\x73\xc0\x13\xf9\xb9\x21\x28\xec\x0d\x74\x06\x49\xc4\x13\xf0\xc1\x56\xcc\xc7\x66\x6e\xeb\xf6\xc4\xb7\x9c\x7a\x71\x83\xbe\xc5\x0f\xc3\xf4\x49\x82\x4a\x8d\x70\xc1\x45\x8e\x9b\x8f\x6d\xa7\xbb\xd9\xa0\xb0\x86\x82\x61\xb6\x7c\xf1\xbd\x91\xf0\x47\x56\x90\x56\x9e\x28\xb5\x25\xca\x97\x4e\xcb\xc1\x13\x05\x4c\x1f\x96\x34\xd1\xa1\xb3\x69\xb7\xdd\x98\x75\x1e\xab\x16\xa2\xc8\x6b\x43\xc5\xef\x30\xf6\x88\x07\x50\x27\xdd\x86\x43\xa3\x93\xbe\x13\xdf\x93\x36\x58\xc3\x95\xa0\xba\xe2\x97\x23\xce\xb8\xda\xfe\x1e\xf7\x2d\x51\x61\x9f\x04\x50\xf1\x16\xf4\x8c\xa0\xa8\xb5\x0d\xaa\x62\x2b\xf2\x5b\x2d\x0d\xe3\x24\xa6\x86\x2d\x54\x11\xd8\x29\x1f\x2d\x9b\xee\x17\xdd\x7f\xcb\x5a\x5d\x4e\x1d\x35\x4a\x52\x03\xbf\x07\x70\xe4\x41\xdc\x70\x94\xa7\x1f\x8f\xa8\xc2\x32\x73\xe1\x50\x55\xd0\x3d\x63\xc2\x85\xa0\xed\x21\xbe\x36\xaa\x8f\xbb\x38\x89\xf3\x4d\xc5\xd2\x0a\x6f\x27\x17\xc6\x01\x2d\x15\xd6\x91\xa9\x65\x22\x84\xc6\x5b\x2c\xa5\x20\x95\x04\xc3\x8b\x34\xfe\x08\x79\x7c\x49\x81\x9c\x56\x35\x53\x8b\x2d\xf4\x42\x63\xf2\x95\x79\x4b\xef\x0b\x87\x90\xb4\x01\xa4\x53\xab\x3e\x0e\xc4\xd3\x9e\x94\x54\xb3\x2b\x39\x09\xf4\x3f\xa0\x28\x4b\x6e\x5c\xd0\x34\x02\x64\xe4\x55\x6e\x32\x97\xd2\x30\x88\x71\x9b\x50\x84\x48\xf6\x6d\xd4\x9a\x03\x73\xd3\xe2\x12\x46\xab\xee\xd0\xa7\xa5\x95\xe1\x71\x0e\x9c\xa0\x65\x40\xc1\x1f\x53\x35\x9c\x98\x1a\x14\x6a\x64\x9f\x01\xd5\x6c\x4e\x2b\xe5\x01\xa0\x8b\x36\xfd\x4e\x65\x38\x5c\xf1\x31\xa7\x95\xcd\x4c\x69\xe4\xcd\x42\xf7\x8a\x03\x3c\x5c\x45\x2c\x51\xe0\x97\x43\x87\xde\xb8\xb3\x68\x23\xe1\x2c\x19\x69\x65\xb6\x00\x63\x7f\x48\xdc\xed\x89\x58\xdf\x82\x4c\xd1\x19\x26\xb9\x9f\x2d\x7c\xc1\x94\xf8\x06\xfb\x3d\x09\x48\xd6\xd4\xa8\xb6\x8c\x93\x62\x9c\x2b\x4c\x43\x36\xa1\xa6\x53\x22\x3f\xc0\xcd\xf7\x6c\xa8\x6c\xcb\x70\xe6\xe2\x5c\xf1\x4b\xa8\xa1\x41\x33\x45\xc8\xb0\xba\xa6\xb6\x61\x64\xbd\xc6\x0b\xf3\xff\xd8\x3b\xe9\x33\x96\x87\xb1\xa0\x4f\x10\x29\x7a\x2a\x4c\xbf\xa9\x36\x95\x3c\xab\xf7\x00\x5d\xda\x0b\x5d\x12\xaf\x1b\xc9\x36\xca\x71\xe8\xec\x1d\xfa\x48\x78\x72\x15\x29\x3a\x38\xf6\x02\x03\xfc\x44\x6b\xd6\x7a\xec\xf0\x5b\x5e\x81\x75\x3e\xa2\xd4\x3d\xa4\x41\x36\xe0\x71\x02\x8f\x54\xaf\xad\xfb\x11\x20\xc5\x43\x75\x44\x86\x49\xd4\x53\x5e\x54\x94\x81\x33\x32\xcf\x57\x5a\xf4\xc6\x91\x53\xba\x31\x49\xd3\xb6\x33\xb5\xae\xcb\x87\xb6\xb1\xf4\x47\x27\xe1\x4e\xd1\x87\x2d\x0b\x1b\x49\xc9\x60\x5f\x57\x68\x48\xce\x75\x2a\xa8\x23\xc8\x14\x0e\x27\xd6\xf3\x2e\xcc\x65\x5d\xb6\x46\x13\xb7\xd6\xab\xf7\x29\x7b\x39\x94\x6e\x75\x61\x6a\x14\xce\x89\x07\x4c\x83\xf9\xce\x68\xdb\x8d\xa2\x0b\xab\x7c\xe4\x8e\x87\xe0\x08\x9b\x8c\x90\xea\xf5\xc9\x65\x22\x18\x6e\xb3\x3f\x58\xa3\x38\xcb\xb8\x5a\x5a\xf5\xc9\x30\x67\x0c\x39\x80\xbf\x8b\x59\x19\x0d\x65\x62\xc4\x3f\x65\xbc\xbc\xb4\xb3\x9b\x0f\x1f\x8d\x4b\x86\x69\xda\xdd\x12\xaf\xc2\x65\x8f\x6b\xfb\xb7\x02\x60\xee\x2d\xae\xbb\x94\xac\xcb\x25\x37\x7e\x40\xfa\x14\xa7\x9f\xa7\xb6\x4d\x2b\x6b\x80\x4e\xe9\xf0\x0f\x0d\xc1\x34\xc0\xf1\xa8\xcb\xfc\xba\x91\xe2\x2e\xa7\x6b\x85\xd3\x29\x2c\x2a\x6c\x30\x9e\x78\x32\x24\x68\xdb\x2a\xbe\xfb\xcd\xb5\xc3\xb9\xcb\x80\xbe\xa5\xed\x10\x6f\xcd\x12\x31\xbc\x72\x1e\xd7\x95\x71\x3d\xfe\x62\xf7\x7c\xb8\xff\x8f\xa8\x02\xa6\xe1\x38\x5a\xaa\x24\x58\x43\x11\x32\x44\x57\x35\xf6\x45\x7c\x66\x5d\x32\xb4\x21\xba\x87\x65\xd7\x45\x07\x07\x1a\xa4\xf9\xdd\x3a\xa9\xe5\x30\x2d\x82\x42\x14\xf1\x09\x45\x5a\x33\x2c\x0e\x5e\xb5\x51\x4d\x8c\x7e\x8b\x05\x2e\x96\x6c\x0d\x92\x92\xd7\x8b\xa5\xaf\x50\xc1\x21\x66\x92\x3b\x65\x9c\xc8\x80\xde\xd1\xde\x62\x80\xcd\x87\x74\x03\x03\xbd\xd1\x34\xbd\xbf\x2f\x61\x3d\xf0\x13\x27\x0f\xb7\xbd\x18\x63\xa8\x64\x2e\x79\x4d\xbc\x44\xd5\x57\x13\xaa\x2d\x66\x59\x88\x82\xf5\x62\xd9\xfe\xfd\x46\xab\xcc\xec\x60\x49\xbe\xef\xb2\x65\x5d\x43\xab\xf0\x5b\x72\x86\xdd\x6e\xd4\x4d\x93\xd3\xc1\xf2\x80\xe4\xd6\x49\x25\x69\x72\x00\x53\x1c\x31\xc8\xe3\x1c\xd3\x0e\x19\x35\xed\xe9\xd4\x62\xbd\x13\x06\xa4\x30\xb4\xc7\xb4\x97\x88\xed\xf1\x2f\x3b\xd4\x4a\x12\xe2\x3b\xdb\x19\xee\x1f\x22\x99\x99\x81\x26\x19\x81\x3a\xdb\xb1\x24\x3e\x14\x9f\xec\xba\x15\x89\x5a\x8f\x06\x33\x03\x25\x26\x44\x65\x76\xc4\x58\x8c\x34\xa6\x39\x0f\x5e\x77\xe4\x6b\xa6\xe8\x59\xbe\x1a\x4e\x08\xe6\x28\x70\xba\x7d\x50\x8d\xc0\x87\xe4\xd9\x76\x3b\x71\x77\x61\x4c\xc7\xa8\xf3\xc7\xac\x0f\xbf\x13\x57\x98\x39\x54\xf0\x83\x9e\x88\x9c\x0e\xd2\x59\xe3\x8b\x88\x3f\x5f\xd4\x18\x9b\xa7\xad\xe6\x32\x9e\xd7\xe2\xfc\xd0\x7a\x2b\xa5\xd5\x05\x1f\xb1\xcc\x63\x42\x53\xa0\x0f\xed\x70\xb1\x07\x8a\x45\x0e\xed\x20\xe1\xab\x9a\x0b\x10\xcc\xb4\x7b\x7c\xec\xf0\x4c\x88\xa4\x3f\x15\xb6\x1d\x2f\x74\x5e\x3c\x6c\x10\xe1\xd0\xf8\x4f\x32\xfc\x87\x03\xe6\x02\x44\x5c\x0f\xd8\xce\xf1\x9c\x86\x51\x0e\x45\xa3\x3b\x19\x0c\x1c\xef\xfc\x09\x4e\x0b\xc2\x3a\xb7\xed\x2b\x2f\x41\x5a\x30\x5d\x85\xa9\x56\x79\x11\xf1\x96\xef\xd5\xce\x00\x75\x47\xc4\x7e\x03\xc2\x20\x1b\x88\xfa\xc7\x38\xac\xab\xa0\xf0\xdc\x68\x9d\x11\x77\xfa\xd4\x8f\xe4\x2f\xc5\xc3\x1a\xa2\x3f\xe0\xa9\x1b\xc6\xf3\xd8\x8b\xab\x45\xa3\x97\x71\x61\x38\x3b\xb7\xbe\x3e\xfa\x04\x06\x44\xc7\xa0\xec\x97\xf3\x35\x31\x13\xcc\x4b\xff\xec\xb0\x6c\x8a\xbc\x5c\x38\xcb\x77\xab\xc3\x82\x75\x0f\xa1\x8d\x14\x0b\x5d\x67\x1b\x6f\x23\xed\xa7\x14\x93\x74\xa5\xe4\x9e\x19\x22\x58\xfb\x99\x28\xe4\xae\xfe\x0b\x39\x00\xf0\xe2\x7b\xa5\xfa\x3d\x94\xb6\xfe\x46\x0d\x4e\x94\x02\x26\x7f\xed\x73\x63\xaf\x82\x7a\xa1\xd8\x48\x30\xb6\xde\x95\x23\xe0\x51\xf8\xd1\x0c\x0e\xa5\xc7\xcf\xa0\xbd\x1b\x57\x9e\x36\x3a\x9d\x4a\x40\x49\x6c\xf5\x9c\x00\x35\x18\xa8\x6c\xa9\x2e\x30\x31\x21\xcc\x69\x7b\xa0\x87\xf3\x68\x7f\xae\x96\x2f\x54\xe1\x37\x52\x69\xd0\x66\x6a\x98\x64\x8b\x82\xc2\xaf\x68\xd4\xf2\xb3\x38\x28\x2c\x18\x83\x55\x29\x0e\x37\xbd\x67\x7d\xc4\x51\xf0\xbb\x66\x79\x27\x03\x2a\xae\x22\xad\xae\xb8\x54\x58\xae\x8e\xbb\xc2\x5b\xdb\x89\xc2\x08\x61\xcb\x4e\xa5\xe8\xbe\x53\xf3\x1c\x81\xac\x86\x3c\x75\x08\x26\x5f\x15\x1d\x1b\x96\x89\xbf\x64\x57\x25\x92\xca\xb3\x92\x42\x18\xd1\xb0\x8c\x04\x00\xd4\x4d\xad\x4c\x1e\xb2\xde\x81\x69\x15\x38\xd5\xed\x68\x1c\x11\x8d\xde\x13\x8d\x9a\xc7\x0b\xe6\x9a\x61\x44\xff\x5e\xcc\x58\xea\xd0\x32\x08\x2b\x38\xc4\x1a\xbb\x79\x86\xb4\x85\x9c\xe2\x3c\xc3\x90\xab\xe7\x3b\x4d\x4a\xc0\x7e\xac\x62\xb1\x03\xa3\x4f\xa9\x3d\x9e\x19\x8f\x5b\x88\x17\x7a\x46\x1f\x4d\x9a\xf5\xe7\xb9\x69\xa1\x72\x98\xb5\xa4\xca\x51\x0f\xfb\xe5\x91\xc0\x6c\xf2\x7e\x11\x4e\x42\x7c\x12\x37\x58\x35\x7f\x96\x17\x57\x71\x8c\xcb\x8c\x7b\xb4\xed\x55\xef\x39\xa5\x87\x3e\x7b\xdd\x10\xe5\xda\x9f\x34\xd2\xd1\x0d\x2f\xd4\x3f\xe1\x6b\xff\xfb\xe7\x04\x82\xad\x7a\x84\x4b\x6b\x71\x6e\x1e\x1d\x16\x11\xad\xd1\x9d\xe7\x9c\xed\x40\xb3\xf4\x15\xed\x0f\x38\xbd\x5e\xcd\xd7\x31\x16\xdb\x0a\xf3\x23\xae\x36\xac\x0e\x16\x15\xa3\x56\xd3\xc5\x42\x6d\xf4\x59\x7d\xae\x6b\xd2\x5c\x69\x74\x0f\x64\xf3\x9a\x31\xac\x9e\xb8\x0f\x85\x49\xb3\x50\xbb\x23\x02\x3b\xab\x97\xc5\xe7\xd3\xcb\x31\xf9\xd9\x10\x15\x16\xc5\x52\x0f\x1d\xd5\x0c\x3f\x89\xce\x90\xd2\x9b\xa5\xb7\x0f\x84\x74\x74\x5d\x5d\x3c\x82\x24\xe7\x44\x54\x28\xf0\xeb\x17\xe5\x22\x09\xf8\xbc\x86\xaf\xd8\x4e\xd2\xf4\x3e\x36\xd2\x85\x24\x03\xff\xc6\xa0\x56\x04\xa2\xbc\x6e\xec\xfc\xc6\x69\x11\xe2\x0e\x4b\x44\x2e\x08\x94\x6b\x4d\x06\xf5\x6d\xa1\xd9\xd0\x39\x50\x86\xda\x06\x49\x0e\xbb\x46\x0b\xfd\x74\x4d\xa1\x8d\x28\xbf\x21\xe6\x97\x90\x75\x31\x1c\xe8\x66\x44\xad\x2f\xc8\xe2\x10\x40\xd5\x53\xfa\x3b\x47\x93\x8e\x9d\x7f\xa8\xd2\xf9\x6f\x7b\x85\x3a\x47\xa4\x6d\xea\xd7\x4f\x2a\x52\xe1\x72\xf6\x38\x87\xae\x89\xf9\x23\x14\x14\x02\x92\xde\x38\xfc\xb2\x21\xda\xb3\x66\x28\x7f\x83\xca\x58\xb4\x69\x3a\xee\x8a\x17\xd8\xf7\x64\xa4\xf2\x67\xab\x3d\x69\x62\x04\x09\xc7\x2f\xae\x0a\x15\xf8\xa7\xec\x4c\x49\x78\x21\x4a\x5b\xa8\x93\xd1\xc2\xac\xd2\x93\x70\x94\xa9\xed\x59\xd5\x11\xd7\x59\x5d\x58\x1a\x08\xcd\x2b\xec\x19\xfe\xe2\xe4\xc5\x89\xa4\x4d\x9a\x12\xed\xa8\x8e\x4c\x33\x16\xfc\x9a\x8e\xa7\x89\xc5\xe6\xe9\x64\xb0\x27\xaa\x40\x32\xe8\x3d\xe0\xe1\x9d\xdc\x96\x86\x40\x45\x69\x89\x02\x2e\xec\xc6\x7c\xfe\xaf\x2b\x65\x9d\x62\x57\x9f\xa0\xd4\x39\x75\xca\xb5\x13\x81\xc1\xe0\x1e\x94\xc1\xaf\x4c\xe6\x84\x24\x02\xc0\x6f\x64\xdf\x92\x83\x50\x2a\x38\x44\x87\x85\xb8\x0b\x8c\x1a\x57\x2a\x43\x37\x53\xbf\x88\xf9\x1d\xb0\x56\xda\xf6\xd1\xf5\x88\xe4\x2d\xd0\xba\x18\x5f\xe2\xb3\x27\x6f\xab\xdb\x05\x39\x1a\x4c\x0a\x2d\xb8\x8d\xb6\x1d\xab\x72\xb2\xc1\xa5\x57\x2d\x4e\xf0\xfe\x8e\xec\x2c\x5c\xbc\xe4\x8d\x16\x15\x8f\x15\x1f\xe6\x1d\x50\xb7\x77\x15\x5e\xdc\x8b\x9b\xf7\x1e\xfe\x85\x83\xab\x3a\xc4\x44\x93\xa1\xa0\xf5\x91\x4e\x3c\xa1\x88\x9d\xd9\xa6\x5e\x70\x1a\x22\xf1\x60\x26\x54\xfe\x52\x37\x33\xe9\x4e\x13\xf4\xa3\xca\x21\xff\x5b\xe7\x61\x82\x34\x8c\xeb\xdf\x45\x6c\xee\x74\xd9\x78\x22\x32\x73\x28\x39\x28\x46\x22\x7c\xe9\x49\x97\x4a\xb6\x58\x82\xde\x71\xf7\x17\x1a\x8a\xba\xb5\xee\x2e\x58\xea\x0f\x6a\x47\xb9\x00\x6a\x44\x4c\x35\xeb\x17\xa8\x28\x08\xbb\x59\xba\xa1\x22\x62\x32\x9d\xd8\x94\xfa\x4e\xe8\x10\xb1\x1a\xf4\xb3\xa4\x6e\x4a\xca\xd7\x1d\x7e\x92\x9d\x27\xef\xc6\x79\x33\x3b\x19\x19\x74\x1f\xd2\xbd\x0e\x64\x22\xc4\x3f\x47\x2c\xd9\x58\x0f\x89\xac\xe0\x0d\x15\x56\x6a\x92\x3c\xca\x47\x59\xbe\xca\x66\x17\xda\xc5\x5f\x0f\x27\x1e\x6a\xe3\x75\x7f\x29\x08\x73\xc7\x1f\x70\x3e\x89\x94\xee\xfe\x7d\x4c\xc4\x0c\x10\xd6\x7d\x51\xbc\x22\x7d\xc9\x9b\xe0\x59\x54\xe4\x82\x43\x26\x2e\xf4\xcb\xea\x0d\xa1\x9f\xca\x3d\x1a\x40\x1a\xd2\xeb\x09\x27\x0a\xc5\xa4\x9a\x80\xf1\xe9\xf7\x64\x40\xe7\x22\xe3\xd2\xef\xa4\x4d\xa3\xdb\x9c\x8b\x0b\x5d\x21\x14\xf7\xc6\x50\xfa\xfe\xa4\x70\xd4\xc5\xca\x0f\x5e\x9b\x19\xfe\xbe\xc4\x4b\x8e\xcd\x8a\x4e\x7a\x28\x66\x7e\xdf\x94\x2b\x3f\x42\xc9\xe7\x2a\x3e\x1b\xda\xd2\x37\xfd\x26\x2a\x45\xfb\x0b\x57\xa2\xd4\x2b\x52\x65\x93\x40\x55\x30\xd0\x16\x27\x9f\x08\x2d\x1f\x29\xc7\xe3\x97\xfa\xb3\xdf\xa5\x73\xaa\xaf\x68\x15\x69\x5c\x61\x9a\xb5\x3b\xff\x70\x04\xc4\x2e\x86\x8d\x28\x4b\x7f\x02\xb7\x41\x5c\xd1\x79\xa9\x76\x18\xf6\xa4\xc9\x9d\xc4\x53\x8e\x89\xed\xc4\x17\xeb\x8a\xf1\x1d\x5a\x7a\xaf\x98\x4d\x23\xdf\x9c\x06\xf8\xe7\x9c\x4d\xe2\xe3\xa1\xe0\x56\x0e\xa5\x03\x49\x0f\x61\xec\xd4\x18\x73\x18\xda\xb0\x5a\x0b\x7d\xf2\xed\x49\x5a\x00\xea\x2d\x61\x00\xf7\x61\x78\xfe\x28\x43\xe8\xe1\x98\x1b\x9b\x49\xf3\x82\xa9\x4f\x76\x90\x5d\x86\x66\x8e\x37\x27\x35\x43\xb6\x0a\x9b\xaf\x9e\x9a\x04\xcc\x90\x68\x89\xe2\x20\xa2\x50\x47\x1b\x23\x4f\x83\x48\x36\xed\x76\x66\x8f\xf4\xe9\x61\x7a\xd4\xb5\x7a\x5f\x46\xaf\xc8\xe7\x17\xc6\x2e\x8a\x07\x40\xed\xc9\x81\x2d\x31\x23\xca\x08\x65\x22\xfb\x02\xdd\xff\x9b\x5e\xf5\x1d\xcb\x21\xfe\x05\x8e\xe8\xc3\x1b\x46\x07\x88\x7d\xf1\xc2\x9e\x29\x8d\x97\x7c\x4c\xd6\x59\xf3\xed\xa6\x08\x63\x20\x9d\x95\x76\x6b\x1b\x7d\x0c\xe6\x95\x18\xbe\x04\xe7\x22\x67\xf3\xf4\x4f\x16\xe4\xc2\x53\xf3\xcd\xd1\x36\x7e\x29\x86\xca\x8d\xb0\x18\x3d\x0a\x11\xab\x5c\x8c\xf9\x9b\x41\x72\xf3\x18\xc6\xac\x89\x8d\x30\xdf\x17\xcb\x83\xab\x2b\xa5\x27\xdf\x5b\x02\x46\x27\x1f\xe2\x8c\x6e\x82\x9b\x96\x04\xa6\x00\xe4\xa1\xb2\x4d\x28\x0e\xcf\x57\x9f\xfe\x43\x6e\xb6\xa0\xfa\x7d\x4c\xc5\xc9\x3b\x82\x5e\x9f\x12\xeb\xe6\xcb\xca\xf6\xdb\x1f\x88\xdb\x08\xf0\x57\x32\x98\xe1\x18\x97\xd1\x08\x37\x08\x31\x8c\x88\xb6\xa8\x84\x19\x82\x22\xc7\x29\xd0\xe8\x14\xa2\x7c\x69\x22\x6b\x57\x08\xb4\xc2\x49\xab\xf6\xfa\xdb\xfa\x64\xbc\xd1\xb2\x03\xd0\x5c\x55\x9e\xbf\x23\x31\x2e\xf1\x8f\x27\x86\xd2\xb7\xce\x52\x46\x62\xa3\xff\x61\x88\xfa\x24\x86\xf7\xd8\xd5\x44\x20\x3e\xbe\x1f\xa3\x29\x78\x05\xa6\x8b\xad\xca\xcd\xd9\xb4\x3b\xbf\x3e\xd6\xd2\x85\x64\x40\xb5\xa5\xc3\x56\x30\x07\xf1\xf2\x86\x4a\x23\x8a\x4e\xd3\x23\xd6\x7f\x4e\x17\xff\xf3\xf4\x85\xd6\xae\x25\x08\x96\xbf\x1a\xff\xcc\xd7\xf2\xe1\x16\x63\x86\x8e\x88\x4d\xe8\x8a\x67\x75\xa6\xc7\x4c\xa1\xc0\xbf\x00\xb0\x31\xbd\x7d\x29\xad\xe7\x4a\xe5\xcb\xb0\x74\x7b\x5b\x87\x6b\x12\x01\xfc\xe2\xba\xcd\x56\xc4\x03\x42\x0a\x1f\xef\xe6\x79\x6b\xb1\xbd\x7b\xa8\x91\x8f\x43\x02\xcb\x5f\xa7\xd6\xd3\xe4\x38\x2f\xaa\xc1\xb2\xc7\xb5\xd3\x46\x49\x75\xd7\xfa\x3f\x94\xb4\xec\x59\xd4\x99\x1c\x0d\x71\x7c\x08\x36\xea\x55\xae\x13\x00\xa7\x5a\x20\x58\x45\x35\xc2\x05\xfa\x76\xd3\x72\x4c\x77\xa4\x20\x07\x77\x27\xed\x95\xbc\x0b\x07\x63\xef\x35\xf9\x91\x7f\xdd\xc3\x1a\x28\xdb\x34\x34\x23\xbe\x8d\x5b\x6a\x76\x26\xbb\x87\xf5\xa9\x96\xd5\xc9\x9c\xb4\xb0\x6a\xce\x33\xa8\xc0\xc3\x5e\x43\xcd\xbe\x4c\xa6\xfc\xf8\x28\x8c\x7a\x6d\xf1\x65\x06\x34\x2f\x92\x0d\x5f\xcb\x66\xe9\xc9\x6c\x9d\xe8\xba\x10\xd3\x7e\xb7\xae\x52\xa4\x38\x78\x65\x71\x64\xc3\xcd\x13\xae\x1a\x44\x4a\x0e\xef\xe6\xa1\xff\xba\x32\x15\xca\x7e\x9c\xc9\x6f\x8c\x43\xa9\xd0\xe9\xf4\xb4\x10\x1f\xc3\xea\x81\xb7\x21\x5b\x01\xe3\xe9\xef\x08\x77\xd5\xe3\x35\x09\xa8\xb9\x34\xa9\xca\x7a\x4e\x8a\xd3\x03\x37\x3f\xd3\x29\x46\x7e\x5f\x69\xc2\x20\xbc\xa8\xf7\xa0\xc5\x95\x11\x4a\x90\x40\xf9\xad\x4d\x30\xb7\x5e\x80\x4e\xaf\x84\xad\xd1\x1a\x24\x89\x63\xde\x50\x6a\x1c\x96\xb1\x5b\x24\xb7\x2e\x62\x49\x5d\xb2\x16\xd7\xf9\xee\x3a\xfe\xcd\xb3\x1c\x47\xcd\xef\xc5\x6e\x34\x24\x27\x66\x09\x71\x5a\xab\x65\x6c\x86\xc4\x9e\xd0\x40\x3b\x70\x89\x83\xdd\x61\x15\x89\x32\xf0\xb0\xd2\x6e\xca\x43\x3d\x17\x7f\x9d\x84\x5d\xca\x7d\xc3\x56\xec\xc3\xbe\x7c\xfa\x14\x51\x8d\x20\x17\x56\xb2\x46\x60\x2d\x4f\x64\x48\x31\x9e\xa9\x21\x5f\x2a\x6e\x07\x08\x73\x8d\x56\x51\xfb\x65\x77\xff\x34\x49\xb5\x4c\x11\x23\x4b\x67\xc0\xdd\x5e\x1b\x66\x2b\xcc\xb7\x66\x58\xa4\xac\xd2\x15\x5d\xdf\xc8\x8a\xdd\x5d\x1f\x4d\x6c\x03\xe2\xa4\x60\x10\x1c\x27\xc6\x8d\xe1\x7f\xd7\x60\x76\x17\x60\x0d\x56\x57\xe5\x61\x27\x1e\xcb\x09\x24\x03\x67\x7f\xfe\x73\xa9\x19\x4c\xd1\xc6\x6d\xd5\xfd\x26\x6e\x36\x2b\xd2\xd5\x62\x8c\x64\x1e\x9c\xfb\xf1\x58\x82\x48\x2f\x18\x39\xa9\x18\xfc\x9d\xf5\xbf\x86\xbc\x06\x7c\x41\xf7\x82\x4e\x58\xf2\x03\x84\x34\x8d\x73\x11\xe1\xb7\x68\x39\xd9\x8b\x2a\x1f\xae\x65\x32\xb7\x02\x96\x94\x9a\x19\x99\x61\x87\x58\x34\x07\x88\x91\x0b\xa4\xfe\xd1\x57\x41\xe2\xb2\xfa\x78\xe5\x86\xae\x3b\x5d\x40\x3a\xbe\xd5\xb7\xba\xd4\xfa\x94\xe8\x67\xd2\xaf\xc0\x9e\x2b\x6d\x8d\x47\x29\x5c\xcf\x76\x78\x24\x32\xb4\xe6\x30\x7c\xb3\xba\xa5\x92\x6f\x3f\xe5\x80\xc9\x67\x40\x52\x90\xfa\x33\x88\xa2\x7d\x92\x0e\x38\x19\x4f\x9b\x12\xfb\xe7\xca\x69\xfe\xd5\x03\x66\x2c\xdf\x47\xee\x97\x90\x48\x64\x2a\xc5\x3d\xac\x6f\xd7\x4a\x71\xe6\xc6\xd7\x97\xa5\x08\x1c\x26\xa9\xeb\xa9\xf1\xf3\xcf\xd6\x21\xe4\x63\x64\x42\x5e\x3d\xf3\x7d\xf0\xd5\x3e\x51\x19\x3c\xff\x69\xec\xd5\x55\x98\x15\x1d\x2e\x9a\x1f\x89\x1e\x99\xea\x75\x3c\xba\x40\xc9\x6c\xd3\x31\xc0\x3c\xee\xd2\xf2\x50\x85\xee\xb7\xcf\xab\xb8\x98\x15\x0f\x0f\x4f\xe0\x7b\x3d\xfd\x27\x09\xa1\xf9\xd7\x55\x41\xb1\xd5\x2b\x03\x52\xe2\xe7\xb7\x90\xfd\x6c\x00\x15\x16\x92\x4a\xe6\x87\x8e\x83\x71\x96\x26\x43\x7b\x73\x14\x5c\x25\xd7\x7e\x3c\x7a\x04\x1c\x92\x12\x23\x3e\xf9\xf9\x6e\x4d\xe4\xc2\x11\xe8\xe9\x67\xd8\x59\x74\x1f\xe6\xc5\x77\xba\xd5\xa1\xd1\x7b\xae\xb4\x58\xbe\x0e\xa9\xcf\x92\xfc\xe5\xb8\x2f\x30\x60\x36\xa3\x97\x16\x1c\xda\xd5\x3a\x00\x54\x7d\xf3\x68\xe6\x93\xea\x76\x4b\x35\xac\xbd\x05\x87\x9f\x44\x89\x74\xb9\x1a\xb4\x88\x95\xc7\xed\x60\x91\x35\xba\x67\x3f\x3f\xe1\x06\x3a\x23\x0a\xc8\xac\xc4\x51\x66\xd3\x71\x89\x1f\x77\xae\xc8\x01\x88\x3d\xbe\xf1\xb1\x67\xda\xfb\x94\x95\x5d\xd6\x63\xbd\xb7\xb6\x7d\xfb\x5f\x29\x8b\xcf\x6d\xd1\x89\x12\x5c\xd4\xa3\x6f\x55\x46\xf8\xdd\x0c\x71\xe2\xd2\xcd\xe4\x3d\x15\xbe\x3d\x56\x0c\x86\x73\xd8\x8c\xeb\xe9\xb4\x96\xe0\x01\xc8\x76\xc0\xa1\x65\x95\xf2\xad\xbf\x72\x7d\x8a\xac\x96\x3b\x14\xae\x30\xb5\x2c\x3a\xfc\xce\xde\x65\x5f\xfb\xfc\xc5\xa3\x4b\xd7\x65\x3e\xfc\x2e\x60\x0c\xa5\x2f\x15\xc2\xe3\x97\xfa\x77\x64\x83\x75\xbe\xc3\x84\xdd\x7a\x55\x5e\x59\x39\xc6\x68\x71\xa2\x63\xd1\x1c\xfb\x51\x3b\x12\x53\xf4\x7d\x22\x37\x8f\xcb\x11\x5b\x42\x4c\x89\x1e\x90\xab\x3d\xec\xfd\x2f\x46\x23\x01\x7e\xd3\x63\xf0\x93\x2b\x4e\xcb\x26\x5a\x7b\xb2\x47\x09\xfa\xc9\xa7\x7f\x5d\x32\xee\xad\x71\xd6\xf4\x22\xa0\x37\xea\x7b\x18\x51\x14\x66\xdd\x70\x8c\xff\x5e\xd4\xdc\x2e\x8c\xbe\x47\xe8\x39\x1f\x77\xea\x48\x1b\x7d\x82\x70\x81\xb4\xa6\x68\xc8\x21\xbc\x7c\x6c\xc6\x63\x24\xc6\x78\x0d\x47\x49\xc4\xd9\x59\x79\x10\xcb\x08\x29\x1e\xe9\x8c\x46\x83\x59\xd8\xef\x48\xe2\x0b\x1c\x88\xd6\xda\x64\x4d\x82\x3d\x9b\x86\x99\x38\x4f\xf0\x22\x35\xaa\xb4\x92\xc7\xb7\xc6\x85\xfc\xf0\x3a\x83\x6e\xe1\x48\x28\x86\x6e\x50\xc0\x3f\x36\xf8\x01\x3d\x8f\xd8\x50\xd8\xe1\xab\xf7\xb0\xc9\x62\x51\xac\x5e\xcc\x82\xdf\xfe\xb4\xa4\x30\xfd\x78\xbd\x42\xe4\x9b\x51\x3f\x78\x38\xee\xf6\x62\x01\x78\x13\xd6\xf1\xfe\x71\x5f\x12\xad\xc6\x69\x47\x04\x05\x5c\xac\x86\x38\x4c\xe0\x68\x24\xb7\xfe\xe9\x43\x92\xf7\x7e\xcf\x91\xe1\xf4\x7a\x70\x51\x98\x73\xda\x5c\x58\xca\x4a\x44\xb4\xe4\xb8\x28\x46\x71\x31\x7f\x70\xaf\xf3\xe3\xd4\x70\x5d\x04\xf1\x81\x95\xa2\xd5\x88\x80\x59\x44\x59\x78\x34\xe0\xe1\xe1\x0a\x3e\x49\xf4\x1d\x0f\x0b\x02\x25\xa4\xf1\xc0\x8b\x27\x3a\x47\x39\xb8\x5c\x29\x3e\x52\x82\x10\xfc\x45\xa2\xc8\x22\x4a\x89\xfe\x3e\x2e\xc5\x29\x22\xf9\x3e\xd3\xae\x77\x52\x6b\x05\xcc\xc6\x98\x46\xaa\x07\xc1\x0e\x19\x00\xd4\x0d\x1c\x4d\x77\x6e\x64\xcd\x16\xae\xaa\x4a\x83\x1f\x26\x20\xc5\xb4\x9c\x0b\x8a\xb4\x92\x0b\x8e\x3f\x62\xc3\xa1\xaa\xb7\xa8\x82\x26\xf6\xe4\x65\xd7\xcd\xe6\xaf\x97\x97\x5b\x76\x4c\x81\x01\x63\x0c\x84\xae\x7d\x40\x1f\xce\x1c\x35\xca\x2d\x90\x01\x09\x67\x43\x70\x78\x93\x14\xcb\x85\xd0\x20\x7b\x12\x8e\x7c\x1e\x9e\xa6\x2d\x27\x3c\x42\x19\x88\xb8\x5c\xa5\x00\xac\x90\xd5\x8d\xec\x1a\x6a\xc8\x49\x99\xca\xa7\x70\x87\x5a\xfd\x20\x9d\xc4\x8d\x08\x45\xb2\x86\x4b\x4a\x72\x1c\xb0\xb2\xad\xa3\xc3\xa3\x3d\xc8\xbe\x15\x0e\x50\x25\x64\xb4\xa2\x46\xdb\xa0\x81\x0c\x35\x69\xf0\x40\xcc\x20\x49\x25\xd0\xd3\xfc\xd9\x40\xe7\x7c\xd7\x4b\x68\x0c\xa6\xd1\x48\x05\xff\xf6\x62\x59\x5b\x1f\xaa\xa9\x6e\xa7\x1f\x81\x8e\xfb\x05\xd3\x89\x93\x05\x9e\x90\xef\x21\x49\x24\x56\x65\xc7\xc7\xac\x6e\x7c\x1a\x26\xfe\x2c\x8a\x06\x1b\x28\xaa\x01\x74\x85\xb0\x91\x78\xbe\x9d\x80\xfe\x1b\xe6\xf1\xab\xb2\x00\xdb\xb6\xa7\x84\xaf\x8a\xe1\x5b\x9d\xda\x74\x0e\x71\x5b\x0d\x64\xf8\xd9\xd3\x6e\x21\x39\xd3\xbf\x53\x42\x87\xf6\xb0\x04\xec\xfd\xab\x44\xcd\x97\xd9\x63\xd4\x42\x4c\xd3\x51\xf9\x82\x81\x34\x1c\xc7\x93\xec\xa5\xf6\x4f\xb1\xd2\x9b\xeb\xc8\xde\x69\x6a\x2b\x4b\x17\x9a\x96\x4a\xf7\xa2\x50\xf8\xc2\xbb\xdd\x7f\x8b\x55\x47\x95\xdf\xdc\x62\x8b\x57\xf6\x7a\x10\x2b\x2a\x9a\x30\x65\x97\x32\x09\x7e\xb5\xae\xcb\xc7\x2a\x55\xad\xba\x2b\xb3\x9f\xaa\xe1\x02\xf8\x82\x1c\x67\x43\x90\x53\x69\xb9\x53\x19\x57\x49\xc4\x32\xb7\xf1\x05\x40\x0c\xc0\x75\x8a\x7f\xdb\xfc\xb5\xb4\xb1\x4c\x60\x18\xed\xfb\x2d\x0e\x5f\xee\x16\x31\xcd\x61\xc3\x1c\x60\x22\x45\xcd\xb1\x7f\x7e\x95\x33\x68\xfb\x2f\xd5\x26\xbd\xb9\x4b\x28\x5c\x4e\x84\xa8\x0b\xfe\x2c\xec\x84\xbc\xa2\x78\x71\xab\xdb\xa7\x9c\xbf\x5d\xbe\xe6\xa8\x32\x59\xde\x6f\x28\xe2\x2b\xf4\x16\x3e\xdd\xd3\x33\x7b\x52\xc2\xd4\x2f\x3d\x82\x71\x1c\x7c\xb1\xdf\x1f\x68\x52\x00\x69\x79\x8a\x6f\xea\x88\xdf\x9b\xc4\xc1\x56\x7a\xa5\xcb\xa3\x85\x66\x21\x61\x0c\x49\x43\xb8\xb4\x4f\x09\xd5\x58\xce\xec\x88\x5e\x78\x23\x12\xf8\xe8\x16\x82\xe6\xc9\x4a\x8e\x0f\xb1\xe4\x88\x0a\xa5\x18\x43\x57\xd8\xe7\x29\x7d\x72\x99\xfe\x43\xd3\xda\xff\xbc\x51\xe5\xe5\xb1\xb1\x04\x18\x69\x3c\x31\x39\xd6\x17\xa5\x13\xe5\x3c\xc1\xa4\x0a\x7a\x97\x17\xc6\xda\x32\xbb\xcc\x09\xfd\x82\x33\x75\x62\x07\xf3\xd9\x37\x1a\x34\x26\x9d\x7f\x36\x0b\x23\xcf\x50\xb3\x35\xeb\x31\x33\xa1\x30\xc7\xb4\xc6\xd4\x0f\xfa\xae\xa3\xb2\x6a\xaa\x34\x4e\xc7\xde\x8c\x2a\x5d\xce\x80\x1e\x7e\x5c\x02\x4e\xf4\xec\xc7\x92\xcc\x8a\xa7\x94\x4c\x9a\x25\x56\xba\xdd\xb1\xe6\x8a\x50\xcd\x66\xa9\xb7\x88\xa7\xa8\x49\x1b\xa4\x18\x79\xe7\x38\xfe\x53\x7c\xc6\x93\xe7\x0b\xc8\x00\x8a\xa9\x2c\x44\xed\xf5\xc9\x28\xd5\xee\x3a\x66\xed\xd3\x5b\x99\xc1\xe9\xbf\x76\xda\x60\xfe\xb9\xfa\x66\x27\xae\xa6\xb2\xb3\xd1\x15\x14\xb2\xbd\x2d\xeb\x47\x0d\x1a\x27\xa7\xa2\x47\x24\x0a\x9c\x9b\xcb\x35\xf2\xc4\x2f\xd2\x01\xae\x3c\xbe\x73\x7c\x9b\x01\xf9\xf6\xd6\xb9\x8d\xe2\x8e\x84\xed\x5d\x1d\x45\xec\x79\x0e\xd3\x1c\x13\x64\x85\x3f\xe9\x52\x98\x01\xfd\xf3\x89\x6e\x0f\x72\x04\xab\x29\x81\x05\x86\x2a\xa9\x75\xbb\xa2\x5b\x72\xdd\xd0\x26\x30\xd1\x6e\x84\x28\x19\xbe\xb2\x86\xdf\xc6\x47\x70\x68\x41\x88\xec\x25\xf4\x9c\x75\xb7\x60\x30\xea\xde\xce\x1a\x3c\xa7\x89\x4a\xaf\x8c\xfc\x41\xd2\x2f\xeb\x9e\x0a\x7a\xee\xe1\xaf\x22\x76\xae\xd6\xb4\xc9\x8e\x06\xa6\x86\xee\x1e\x63\xf7\x65\x28\xbf\xaf\xc8\x23\xfb\x77\x63\x1d\x07\xc6\x26\x03\xd8\xc6\xc8\x66\x4c\x93\x09\x18\x33\xe8\x4a\xc3\x4d\x16\x52\x61\x37\xe9\xad\xcb\x50\x1c\x69\x09\x0f\x56\x4e\x40\xc6\x89\x41\x87\xaf\x61\x4b\x54\x14\xad\x35\xce\xe7\x4a\xd5\x2a\xec\x33\x34\x4d\x5a\x39\x7b\x74\x01\xad\x7c\x4d\xe9\x63\xca\x06\xdb\x1b\xf9\x4a\x0d\x53\x45\x6d\x11\x97\x72\xea\xa6\xa3\x27\x6c\x77\x75\x3f\xd0\xf7\x35\xa9\x6b\x18\x72\xf8\x2b\x3e\xff\x0c\xb9\x7c\x96\x0e\x23\x61\xc3\x75\xb6\x48\xa1\x85\x42\x3d\xb8\x5c\x03\xe2\x43\xa1\x59\x37\xd8\x93\x68\x10\xc9\x05\xb2\x88\xa9\x4e\x52\xb0\xf1\x27\xf7\x3c\xa9\xd1\xae\x57\xf5\x15\x73\xca\xb1\xd5\x4d\xec\x88\x09\xe7\xd8\x8b\x28\xbf\x3a\xb3\x28\x64\x65\x7d\x52\xe8\xa6\x8f\x21\x2a\xb0\x18\x5f\xe4\xd2\xda\x3e\xbf\x06\x33\x44\x1d\x42\x31\xba\x15\x1f\x20\xe5\x3a\x38\xcc\xbb\x87\x66\x90\x80\x63\x67\x74\x8a\x3b\x37\xa2\x30\xa8\x96\x3a\x54\xfb\x6b\x32\xb9\x9f\xc4\x8c\xf4\xa2\x5a\x0d\x81\xe7\x8c\xcb\x42\x35\x2e\xd9\x2c\x90\x92\x79\x7c\xac\xff\x6a\x30\xb1\x10\x71\xc3\x7d\x16\xfa\x38\x12\x52\x4b\x30\x1d\x4d\x7d\xc9\xfa\x0b\x8e\xda\xc4\x97\x60\xd0\x14\x0e\x1f\xee\x03\xf7\x86\xf4\xc3\x98\xe7\x9f\xdd\x1c\x55\xcd\x08\xe4\xd1\x6e\x76\x08\xf0\x36\x60\x31\x86\xca\xef\x61\x6a\x5f\x46\x3b\x47\x95\x69\xc2\xe9\x17\xc8\x2e\xf2\x66\x2f\xb7\x5b\xc3\xce\x4a\x12\x48\xb2\x15\x92\x6e\x4b\xc9\x75\xed\xb7\xae\x1d\x1b\xd2\x86\x5d\xf1\xc7\x7d\x14\x8b\x9e\x05\x19\x1a\xd3\x4e\xea\x22\xa2\x7a\x71\x8d\x3a\x52\x6c\xe5\xb4\xde\xfb\x3d\x85\x4a\x50\x59\x93\xe0\x97\xa8\xb6\x7b\xb5\xdd\xcf\x91\x33\x3d\xad\x3e\x57\x04\x06\x31\xd9\x2f\x01\x11\x77\x70\x63\x82\x26\xcb\x23\xa4\xf3\x9e\x94\xfe\x76\xba\x09\x94\x58\x40\xf7\xda\x27\xf5\xe1\xa9\x32\xa5\xa5\x65\xe4\x35\x5e\x4f\xdb\x10\xcc\x52\x33\xfd\xe9\x8f\x12\x31\x61\xb3\x5a\x0c\xaa\x99\xb0\xfe\xf0\x51\x1c\x6c\x7a\x9f\xa7\x6e\x90\x69\x2c\xc1\x70\x3c\xf4\x93\x78\xb8\xd0\x6f\xad\x09\xeb\x80\x3a\xda\x48\xb9\x63\x65\x37\x13\x54\x7f\x5b\x20\x33\x87\x35\xbe\x82\xec\x36\xe2\x1b\x11\x8a\xb5\xd1\x37\xe5\xa9\x07\x54\xc5\xd5\xea\x4b\xdd\xe9\xc4\x14\xcc\x22\xa1\x4a\x1c\x7f\xf5\x1d\x78\x9b\xa0\x9f\xd1\x89\x80\x43\x7d\xdc\x4b\xad\x9d\x75\xcc\x22\xf9\x18\x0a\xbf\x18\xdf\x21\xb7\x38\xa9\x7f\x1a\xfa\x92\x3d\x23\xba\x6d\xa7\x2f\x6d\x95\xf2\xa9\x70\xca\x9c\x5d\xb2\xf8\xeb\x2a\xdf\x70\xb4\x09\xd0\x4d\x5a\x74\x59\x7e\x9b\xdf\x1f\x2f\x8f\x5d\xe8\x39\xa9\x78\xd2\xdd\x36\x60\xb9\xdf\x92\xd3\xcd\x9e\x6f\x3b\x49\x2b\xa2\x33\xe7\xab\x8a\x42\x58\x6b\x2c\x0e\x9e\x5b\x6d\xdc\x35\xa3\x47\x7c\x6d\x42\xc3\x01\xe7\x42\xcd\xd9\x46\xc8\x4d\x1c\x62\x22\xb0\x74\xfe\x4f\x28\x5a\x66\xed\xac\x29\xf0\xa2\xed\x20\xff\x8d\x31\x4b\x18\xd6\x64\xe8\x05\x1f\x8a\x22\x7b\x7d\x57\x45\x93\x13\x4d\x13\x89\xb1\x51\x10\xb4\x15\x2a\x5d\xf0\x6f\x17\xc0\x50\x2d\x46\xa3\x1a\x4e\xa9\xfa\xe4\x8a\x72\x1f\xe6\xdb\x80\x2f\xc7\x48\xd2\xb7\x87\x90\xc0\x6c\x4d\x0a\x73\x46\x50\xec\x22\x3b\x35\xf2\xbe\x85\x66\x2e\x77\xcb\xb3\x28\x1b\x25\x28\x86\x80\x51\x34\x84\x09\x37\xee\x78\x17\x23\x87\xb2\x37\x31\xf5\xdc\x7f\x38\xb0\x58\xdb\x42\x37\x3f\xad\xfe\xce\x81\x0b\xb3\x90\x77\x9a\x48\x07\xa7\x2a\x09\xf8\xa2\xa7\x4a\x1e\x51\x58\xd0\x8b\xb3\x75\x00\x3f\x6b\xc8\xf4\x6a\x7a\x3f\x84\x5b\x01\x82\xf9\x1e\x98\x4d\x27\xa8\xa1\x7c\x86\x07\x57\xbc\x0f\x3f\x6f\xc9\xcb\x88\x05\x51\x46\xb9\xa3\x2b\x6e\x51\xb8\x63\xbc\x34\xc6\x73\x2e\x96\xf5\x2c\xdc\xbd\xe9\x6f\xc7\x88\x50\xe6\x7c\x96\x02\x23\x22\x75\x5c\x08\x4a\xb3\x9d\x13\x8f\x1f\x05\x97\x3f\x18\x76\x2e\xea\xb1\x54\x6b\xb9\x99\x9f\x91\xe5\xf1\xcb\x81\x5d\x6b\x2c\xe5\x02\xe8\x5d\xeb\x7f\xfc\xe2\x76\x27\x1a\xca\xa1\x87\xff\xda\x90\x3d\x7d\x87\xf0\x57\xe4\x5f\x08\xdb\x8f\xa0\xd1\x28\xfe\xcf\xd9\x54\xa0\x6a\x23\xca\x77\x42\x97\x93\xe8\xc4\x62\x5c\x8c\xfc\x18\x17\x30\xb7\x09\x51\x32\x32\x45\xea\xe1\xdd\x2d\x85\xf4\x35\x45\x37\x4c\xfd\xf4\xb2\xff\x06\xa8\x51\x4c\x2c\x32\x9b\x51\x12\x5b\x37\x25\x03\xa9\x9c\x27\x9f\x41\xb3\x9b\x6d\x97\x8a\x21\x9d\xad\x13\x80\xdf\x7e\xa4\x7e\x53\xc6\x40\xf9\x07\xb8\xf9\xce\x6e\xa7\xd6\xf7\x13\xf9\xc5\xf5\x4e\xf1\x55\xaf\xaf\x2d\xe3\x01\xdb\xbd\xf1\x65\xd0\x4c\xb6\x8e\x10\x34\x2f\xa0\xc4\x48\x44\x50\x85\x88\x54\x5c\x3b\x42\x3a\x61\xa9\x84\x63\x90\x3d\x9c\x7c\xa3\xab\x7f\xf5\xce\xb1\x5e\x76\x16\x5c\xce\x41\xe7\x52\xfa\x07\x0d\x2c\x67\xf7\xd4\x87\x52\x63\x9b\x9f\xab\x08\xf7\x1a\xd5\xe2\x4a\x8d\xb0\x2d\xcc\xee\xe2\x52\x87\xdf\x10\xba\x25\x09\x78\xe6\x0c\x8a\xd8\xac\xcc\x6c\x23\x11\x52\xb4\x09\xca\x8e\xce\xfd\x7b\x7c\x3d\xae\x6a\x37\xcd\xb7\x18\x85\x5e\xcb\x1c\x83\xf3\x2b\xd1\xb7\xeb\x0b\x70\x63\x65\xc1\x15\x4f\x33\xca\xc3\xed\x83\xe8\xe9\x65\xed\x73\x9d\x3d\xea\xc8\x6f\x62\xc0\x8c\x49\xc6\x4b\x39\x29\xd9\x56\x57\x36\x8f\xd7\xeb\xed\x5c\x05\xa7\xbe\xde\x0e\x0f\x9d\x2a\x1f\x95\x56\xc2\xa1\x83\x6a\x06\x26\xbe\xd3\x9c\x6f\xe1\x36\xea\x6f\x60\xf5\x8d\x78\x5f\x0c\x2d\x65\x75\x9f\x56\x08\xe8\xa7\x9e\xa7\x10\xf0\xa8\x8b\xc6\x94\x74\x39\x1c\x14\x3a\xbe\x2c\xfc\xf7\xbb\xf2\x2a\x53\x59\x2c\x4d\x3d\xc1\xc6\x00\x4a\x0b\x8a\xd1\x2f\x6e\x52\x3e\xb1\x0a\x56\x6a\x72\x19\x2b\xf2\x69\x24\xa7\xdd\x0a\x4a\x41\x7a\xc5\xbb\xe1\x32\x2d\xe6\xa4\x50\xb6\x83\x2a\x21\x75\x39\x8c\x9a\x68\x76\x9a\x3e\x3a\x41\x1d\x36\x95\xb5\x61\xc1\xde\x5e\x27\x4f\x81\x89\xfd\xbc\xe4\xd9\xc9\xae\x1c\x14\x39\xe4\x76\xcd\x1a\x4c\x6d\x27\x58\xcb\x80\xd5\xb2\xce\x2d\x7d\x3e\xe6\xcd\xa7\xb8\xf4\x14\x3f\xa3\x8a\x62\xda\x92\x87\x4a\xd5\x1d\xb6\x45\xe1\x3d\xd3\x4e\xe1\x96\x3c\x64\xc7\xdb\xa7\xea\xad\x4a\x5b\x5b\x2a\x40\xf6\xc5\x91\xec\x8b\xb1\xde\xa4\x1e\x93\x99\x58\x5a\x0a\xca\x3f\xdf\xf8\xbb\x02\xb7\x8e\x48\xbc\x1b\x83\x45\x78\x54\x9a\x66\x52\x51\x45\x63\x90\x1b\xa9\x10\xb1\xf8\x98\x1a\x74\xff\xae\xcc\x5c\x33\x7b\xc6\xe2\xaf\xd8\x5f\x86\x04\x75\x88\x39\x0a\x31\x2b\x58\x28\x4f\x2e\xdf\xf1\xf0\x8b\x24\x0b\xf8\x7c\x9f\x7c\x77\x5a\xe5\xd0\x62\x4b\x78\x19\xa1\x50\x17\x55\x4e\x7a\x26\x63\xbb\x25\x2e\xeb\x04\x2a\x68\x32\x71\x31\x4e\xd1\x23\xb3\xd9\x5d\x72\xb0\x86\xbc\x2e\x55\x7f\xc0\xb8\xa2\xd4\x76\x49\xc0\xab\xaf\xce\xae\xce\x3c\x22\x03\xa7\x66\x2f\x51\xe0\x5f\x47\x03\xf2\x03\x1b\xd2\xae\x23\xdb\xa0\x5d\x7f\x9b\x76\x71\x92\x46\xe6\x7a\x1e\x63\x78\x87\x7f\x66\xea\xd6\xc4\x20\x89\xea\x7e\x30\xc4\x25\xd5\xb5\x27\x72\xfb\xab\x8a\x30\x1e\x0f\xe5\xcb\xbf\x34\x0c\xd2\xb7\x8d\x3a\x2a\xd8\xf2\x93\xe4\x29\x01\x96\x9a\xbe\xe1\xfe\xb0\x94\x78\x36\xde\xb3\xc6\xb1\xc5\x68\xed\x94\x5c\x46\x85\x0c\x1c\x1a\xf9\x8c\xe2\xc0\xca\x57\x42\x1d\x23\xb4\x6d\x1d\xc3\x2f\x37\x86\xb7\x54\x92\x43\xca\xfe\x06\xf1\x10\x8a\x58\xeb\xc1\x6d\x8d\xc7\x8a\xf5\xa4\x4f\x50\x60\x6b\xbc\x4a\x25\xde\x5e\xb7\x03\xdb\xec\x2e\xb6\x96\x25\xd9\x29\xd7\x2a\x96\xc0\x42\xdd\xad\x77\x30\xe7\x0f\x24\x9b\x27\x9c\x31\xfc\x01\x9f\xae\x3b\x03\x1e\xb9\x77\x13\x70\xf0\xc0\x6b\x61\x08\xf2\x3c\xd1\x18\x60\xc9\xce\xdd\xfd\x0c\x4b\x73\x23\xa9\x1e\x55\x20\x0f\x09\xf0\xe4\x06\x6c\x25\xff\xeb\x65\x82\x71\x77\x59\xee\x4c\x8d\xc0\xb5\x1c\xaa\xb3\x41\x75\x9a\xc8\x43\x84\x8c\x3f\x8a\x33\x34\x0a\x67\x02\x8b\x81\xd0\x86\x82\x63\x31\xca\xb5\xf4\xf5\xe8\x6e\xe6\x2f\xdf\xa3\x35\x2c\x57\x7c\x99\x7b\x63\xb0\x3c\x0c\x42\x7d\x93\x64\x85\xfa\x12\x2c\x17\xfc\x30\xee\x79\x3a\x70\xc0\x2a\x3c\x42\xc4\x20\x47\x93\x3b\xb1\xa8\x65\x02\xde\xc9\x9a\x57\xa5\xc6\xbd\x30\xed\x91\xbe\x3b\x18\xac\xf6\xc5\xe2\x30\x8a\x24\x71\x3b\x79\x3c\x54\x40\x7c\xa0\x60\x11\x56\xa8\x41\xca\xa4\x40\x29\xae\x61\x18\xf3\xc2\x16\xc1\x56\xbd\xdc\x14\x04\x27\x1c\xfc\x5d\x50\x94\x83\xb3\x41\x53\x06\x92\x93\x4a\x6c\x76\xc3\xdb\x36\x8f\xdb\xe4\x4d\x6a\xbd\xfa\xf9\x87\x7a\x4f\xc6\xa0\xa7\x41\xeb\x25\x1d\x97\x4a\x16\xf7\x85\x09\x43\x57\x55\x14\x94\x8d\xaa\x00\x81\x86\xb0\xac\x2c\xe7\xbd\xcf\x89\x1a\xb3\xfe\xcc\xfb\x51\x4d\x94\x40\x03\xd9\xb4\x26\x3d\xde\x4d\x74\x40\x77\xcc\x9a\xde\x6c\xcb\x34\xcc\x49\x12\x3f\x2f\x7e\x95\xf9\x02\x6f\xf4\xfc\x86\xa7\x23\xe2\xd1\x36\x3a\x8b\xa8\x7b\x49\x0b\xd4\x86\xda\x20\x88\x04\xfa\x0f\x25\x82\xa5\x3f\x04\x0a\xbf\x19\xcd\xca\xaa\xf6\x05\xd0\x73\xcf\x48\x5e\x58\x98\x33\xf1\x04\xc6\xe9\x86\x04\x26\xb9\x04\x3b\xc5\x25\x3e\x2e\x0e\xf5\x7a\x6c\x1f\x7a\xd8\x89\x3f\xc2\xac\xc9\x1b\xb0\x06\x68\xb7\xa7\x2e\xa1\x9c\x56\x1b\x0a\x69\x52\xcd\x23\x94\x4b\xc8\xc3\xcf\xb5\x3b\xf1\x09\x92\x5d\xe2\x88\x4c\x58\x2b\x7c\x18\xc1\xae\x62\x4c\xa5\x4a\xf8\xc5\xa6\xdd\xe3\x06\x7c\xfd\x13\x4f\xd0\x80\xa6\x8a\x0e\xf7\x16\xd3\x3c\x76\x34\x9e\x7c\x1d\xdd\x24\xd3\x61\x2c\x2f\x4b\x50\x5c\x2a\x8a\x8e\x6c\x78\x93\x96\x6b\x71\x1a\xac\xfe\x68\x3e\x1d\x76\x2b\xea\x04\x63\xdb\x0e\xd1\xd6\xc8\xbf\xa0\xe4\xcc\x27\x85\x2e\xf3\xd5\x70\x58\x9c\xcc\x5a\x9c\x0e\x4e\xf7\x8b\xa6\x3f\x0b\x77\x7b\xe2\xfe\xf2\x79\x48\x6d\x93\x95\xa5\xb7\x80\x33\x24\x92\x36\x86\x62\x73\x17\x6f\xbe\x8b\xa4\xeb\x0c\x4d\x92\x4c\x7e\x0e\x2e\xe2\x85\x32\x48\x01\x4a\xd1\xd0\xb6\xd1\xc5\x62\xbe\xff\x93\x80\xe6\xa1\x18\x51\x81\x55\xb6\xfd\x46\x20\xc1\x41\xfc\x86\x8e\x05\xd4\x5e\x84\x62\xcc\x48\xa1\x3a\x9a\xb8\x3e\x81\xc7\xa2\xb5\x52\xe7\xe0\x83\x91\xc3\x38\x8f\x92\xad\x96\x98\xed\xc5\x34\xd1\x93\x34\x0f\x13\xc0\xf5\x08\x4e\x53\xec\xee\x32\x7c\x59\xb0\xb2\xc4\xba\xe2\xba\x40\xb5\xc3\xbe\x98\xe7\xf8\x08\x1f\x4c\x6f\xae\xf0\xf8\x96\x51\xb0\x94\xca\x27\xf7\x2d\xd5\x73\x11\x66\xd5\x9d\x64\xf9\x71\x61\xa4\x2d\x3e\x3e\xcc\xce\x41\x17\x3e\x6c\x89\xe0\x77\x83\xfc\xfc\x90\x78\x51\x29\x97\xf4\x43\xda\x5e\x7f\xa8\xd6\x3a\x7c\x13\xce\xba\x97\xe1\x1e\xd3\x9f\x7b\x7a\x16\x28\x2d\x38\x0f\x9f\x8d\xb7\x3d\x64\xd8\x8a\x9b\x71\x73\x10\xbe\xca\xe8\x40\x85\xd3\xab\x0a\xe1\xd6\xe5\x67\x55\xb8\xb3\xa0\xf6\xbf\xf7\xd2\x15\x54\x68\xc7\xc1\xe0\xbb\x6a\xa1\xd8\x2c\x4a\xb2\x1c\x40\x31\x2b\x6c\xf0\xdf\x5b\xa1\x38\xea\x8c\x96\xae\xdf\x34\xb8\x21\x26\xd5\x44\xa3\x70\x31\x69\xb1\x56\x16\x7d\xbb\x7e\x2a\xdd\x9c\x3e\x50\x16\x61\xec\xd7\x4c\x7a\x1d\x0f\x2e\x1b\x8c\x1b\xc7\x29\x94\xad\xa9\x31\x3e\x91\xd5\x07\x63\x23\x65\x03\x24\x6b\xa8\xa1\xa9\x63\x21\x6e\x94\xeb\xe5\xff\x04\x18\xb4\x38\x06\xd3\xc7\x72\x30\x5a\xd3\x22\xbf\x37\x7b\x4b\x95\x21\x2f\x35\xb5\x05\x63\xce\x21\xd8\xe5\x14\x3b\x92\x9a\xfc\xf7\x6d\xcc\x01\x0d\x5d\x8a\x4c\x99\x6c\x6d\x48\x00\x35\xc3\x78\x68\x29\x21\xb0\xea\xef\xb2\x7a\xf5\xee\x05\xd9\x83\x03\x49\x95\x43\x8c\xb8\x4c\x80\xeb\xa9\x2e\xe6\xc3\x6a\xd9\x2a\xa2\xf4\x65\xc9\x6e\x8b\x46\xc4\xb9\x6d\xa8\x87\xc6\xb5\x1c\x18\xa1\x6e\x43\x8a\x7c\x4e\x73\x0e\xe7\xdb\x38\xaa\x15\xda\x7e\x20\x74\x08\xbc\x6e\x71\xc2\xbf\x63\xa8\x93\xcb\xbb\xf9\x5f\x50\x79\x00\x45\x6a\x37\x4d\xd0\xaa\x5b\x14\x02\xb9\x85\xa9\x8d\x2b\x58\xc8\xa2\x18\x5d\x94\x63\x9a\x0a\xb1\x40\x21\x83\x0b\x1e\xe1\x99\x3c\xb3\x3b\x8f\xaa\x29\x0f\x23\x92\x72\xd1\x5a\x63\x46\xb9\x15\x89\x77\xde\x4f\x0f\x89\x2e\xff\x2a\x4d\x6e\xf4\xf8\xe7\x52\xae\x2e\x0c\x59\xaa\x2b\x0a\x2a\x21\xed\x65\xa0\xac\x18\xc2\xeb\xe8\x22\x43\x9b\xbf\x32\x05\x06\x0c\xcb\x33\x87\x0a\x87\x7e\xd5\xa5\x31\x3a\xb2\xae\xc9\x2c\x17\xb2\x4b\x5c\xa6\xdc\x41\xa5\x09\xd1\x64\xe3\x28\xd5\x43\x9c\x2b\xc1\x46\x99\x05\xab\x48\x79\xd8\xc6\xee\x43\x4a\x35\x34\x6c\x0b\x8f\xf3\xe9\xcb\x69\x27\x3f\xef\x3c\xb2\x9f\x11\x2c\xb4\xc2\x37\xde\x41\xb3\x45\xdb\x68\xef\xc7\xe9\x33\x30\xb3\xf0\xee\x15\x23\x9b\xcc\x8a\x8c\xc1\x5a\xa8\xaf\x95\x6e\xd2\x9f\x34\x4c\x2f\xfb\xed\x7d\x7f\x12\x34\xff\xfe\xe5\xd6\x1f\xd9\x4c\xdc\x47\xa6\x95\x7c\x73\x56\x58\x11\x89\xdd\x90\x1e\x30\x2c\x6c\x41\xa8\x37\xd4\x3d\x2e\x7f\xd1\xa2\x91\x91\x68\x16\xf6\xd1\x30\x0b\xaa\x9f\x38\x14\xad\xff\x69\xf5\x48\x12\xf2\xe3\x4f\xf8\xbe\x07\x16\x24\x17\xfd\x41\x27\x1a\x65\x01\x21\x12\x8e\x5d\x2a\x3a\xbf\xef\x3d\xa8\xf3\x6c\x7c\xa5\x77\xd2\x7b\x8a\xd8\xb4\x64\xdf\x0b\x6c\x56\xd5\x07\x15\x44\x51\x05\x40\x93\x86\x34\x13\x34\xbf\x8d\xce\x61\x66\x9b\x23\xd9\xed\xb0\xea\xac\xc2\xbc\xbd\x32\x0a\x28\x51\xdd\xe6\x49\xb2\x5a\xf5\xf1\xaf\x83\xff\xfb\x6b\xcc\xec\x70\xc9\x19\xf1\x31\x76\x34\xfd\x8c\x02\xf1\xe0\xc8\x77\xda\xd1\xc5\xc8\xd2\xd9\x13\x63\x7d\x7b\x67\xb2\x6f\xcb\xf4\x7a\xec\x84\x5a\xcb\x06\x21\x5d\xab\x34\xe2\xa9\xc0\x3d\xf5\xaf\x1c\xb0\x34\xa3\xba\x26\x9c\xf1\xa7\x35\xb3\xf4\x10\x46\x9f\xd3\xc6\x0b\xec\xa9\x8b\x6b\xe5\xf2\x14\x58\xe5\x58\x0e\xcb\x5d\xac\x2a\x7f\x24\xaa\xcb\x96\x89\x00\x84\x75\x59\xfd\x78\x11\x54\x07\xc6\xdd\x29\xcf\xcd\x51\x4c\x1a\x1a\x70\x3a\xb1\x78\xed\x36\x13\x25\xac\x4d\x27\x53\xd6\xcd\xec\x6a\xd9\xb5\x7a\xfc\x9a\x2d\x85\x8a\x71\x47\xd8\xeb\xa0\x89\xe0\x4d\x80\xe3\x92\xe6\x91\x7c\xcd\xd3\xa2\x57\x91\xfc\x6e\xc5\x69\x14\xdb\x09\x1a\xae\x91\xd2\x5d\xc1\xb5\xdb\x3b\x14\xdc\xe8\x9a\x92\x36\x35\x9e\x88\x2b\x51\x43\x64\xf8\xc8\x6d\x5d\x0c\x9e\xd1\x0f\x90\x45\xa2\x3f\xb2\xb6\x3c\xa8\xc2\xcb\x9a\xc5\x6d\x8a\xcb\x09\x48\xcb\xe0\x77\xb1\x09\x35\x86\x54\x2c\x50\x9c\xa8\x80\x00\x6e\xe9\xc6\x5f\xa5\x26\x60\x5f\x1b\xc2\x43\xb0\x4b\x31\x7a\xb9\x86\x20\x3f\x73\x85\xcd\xe0\x33\x75\x41\x82\x29\xb8\x83\x42\xa2\x4b\xd5\x5c\x8d\xd1\xb4\x1f\x7c\x62\x9a\xd3\xb7\x17\x38\x9d\xb7\xf5\x15\xa6\xbb\x53\x67\x83\x8d\xf7\x69\x1d\x4b\x90\xe8\x80\x30\x32\xf8\x0d\x3c\x72\xc3\xf0\xe0\x39\x85\x1c\x2e\xac\x4c\xf8\x2f\x73\xc7\x88\xc9\x29\xb6\x1e\x16\x01\x50\x16\x6a\x85\xd4\x2c\xce\x75\x3f\xa5\xfa\x36\x30\xb1\xbf\xad\x6c\xe1\xbb\xe4\x96\x22\x15\xe4\xbc\x83\x92\xf7\x7e\xff\x79\x27\xce\xcd\x5b\x3a\xc9\x85\x14\x3f\x15\x14\x1b\xa7\x65\x7d\x24\xd8\x4c\x87\xfe\xac\x81\x69\x7e\xac\xd6\x54\x19\xdd\x4f\xa2\x5e\x5a\xdf\xac\xe5\xf0\x87\x98\x4e\x51\x46\x83\xbe\x25\x55\x9a\x3f\x9d\x4c\xd6\x35\x9c\x0a\xd3\x77\xb3\x55\x7d\x8c\xee\xc7\xf0\x19\x91\x47\xd5\xe8\x03\xf3\x5c\xc8\x38\x89\xba\xdb\xd0\x94\x8e\xfd\xf4\xa2\x4c\xda\xe5\xf1\xd3\xbb\xdd\xda\xcc\x8a\x60\x2e\x17\x3e\xdd\x19\x32\x0b\xce\x43\x4c\x4c\x2b\xbb\x69\x15\xf1\x5e\x4b\xf5\x77\xbc\xb3\xdb\x7d\xdc\x1b\xdb\x94\x87\x6f\x88\x03\xdc\xb5\xa6\xd7\x31\x8d\x8a\x6f\x18\x9a\x20\x52\x60\xe5\x10\xe2\x53\xc2\xd8\x54\x66\x8d\x33\x2a\x41\x86\x1a\xe0\x6d\x51\xef\xfa\xb6\x36\x16\xdb\x30\x02\x7a\x5e\xc0\xcb\xd3\x36\x77\x81\x1d\x7b\x91\x5b\x07\x47\xdf\xac\xc5\x5a\x0d\xa3\xa2\xa9\xca\xdd\xb4\xdb\x72\xbb\x1e\x93\xcd\x13\xbb\x69\x82\x29\x94\x2d\x29\xa5\x1e\xde\xec\x5b\x27\x0c\xde\x4d\xe0\x72\x53\xc5\x27\x41\x11\x88\xc0\x86\xf5\x7e\x47\xe2\x6d\xfc\xee\xd9\x0e\x1d\x3d\xc5\xc0\x20\xf9\xcd\x58\x60\x13\x83\xc8\x54\x5a\xc5\xd5\xdc\x78\xac\xb6\x04\x2e\xcb\xd8\x79\x76\x64\xec\x5c\x15\xc5\x49\x5e\xc3\x9d\x53\x81\x5e\xb7\x35\x7e\x26\x0d\x89\xd9\x82\xe8\x8f\xf3\xa0\xb3\x13\x76\xd7\x91\xd4\x13\x30\xe4\x5e\xf5\xf2\x1c\x07\xe3\x2d\x29\xde\x16\x3a\x3d\x57\xbe\xfe\xfa\xcd\x71\x2d\x30\xb3\x01\x01\xa6\x2c\xdb\x22\xf7\x95\x1c\x89\xfc\x50\x3f\x1f\x3a\xf3\x5c\x4e\x58\xd9\xfc\xb0\x47\x33\xaa\xc4\xf5\x99\x30\xee\x50\x15\x71\xf1\xa7\x17\xd8\xc1\x40\xa2\x81\xea\x95\x09\x45\x6d\xed\x3b\x61\xcd\xb2\x9a\x22\xc6\x71\x37\xde\x26\x35\x0c\xd6\xce\x0d\xcc\xe3\xc6\x88\x38\x2f\xef\xdf\x3f\xf2\x0f\x9e\xb8\x55\xe7\x3f\x2b\xdd\x26\xe0\xec\x76\x08\x0e\x2b\x2c\x70\x30\xf0\x72\xd8\x65\x93\xc6\x4a\xa4\x58\x68\x74\x6a\x8d\x8b\xfc\xee\xff\x54\xab\xbb\x3b\xc3\xad\x55\xd2\xc3\xbb\x96\x98\x29\x84\x50\x72\xb1\x11\x9d\x0a\xbd\xce\xf6\x70\x6f\xa1\x3c\xd9\xa7\x48\x9c\x55\x50\x22\xec\x0a\x4e\xa2\xb1\xc8\xcd\xa5\xb0\x83\x04\x46\xe3\xb1\x40\xa6\x1a\xba\x17\x13\x5f\x56\x73\xd2\x1b\x20\x60\xfb\xdb\x5f\x18\x35\x9b\xf6\xd0\x3b\x36\xbf\xe5\x0c\x2d\x1b\x4f\x2b\x54\xb6\x07\x01\x44\xa5\x3f\x08\xe2\x67\x05\x6d\x5a\x1b\x31\x64\xa5\x10\xc7\x6b\xae\xf0\x31\x68\xd9\x64\x65\x7d\x07\x52\xbd\xd8\x06\x07\x30\x50\x4f\x98\x88\x77\x16\x27\xc9\x1f\xf3\xd9\x60\xdb\x14\xeb\x58\x04\xe5\x3b\x21\xb0\x2c\xa3\xa3\xc3\x8b\x22\xdf\x3b\x5c\x03\x44\x57\xad\x62\x6c\x33\xb3\x24\x9c\xb5\xdd\x71\x2d\xda\x50\x87\x08\x31\x3e\xe0\x34\xb6\x4c\x87\x4c\x54\x84\x75\x9b\x76\x5f\xa8\xda\xf2\x84\xc2\x6c\xdc\x01\x7d\xf6\x85\x4d\x53\x88\x01\x7e\xda\x55\x33\xab\xa8\xfd\xaa\xfb\x1e\x24\xf2\x72\xd6\x4f\x4a\x18\x4f\xe4\x07\x82\x66\x19\x19\xc1\x9c\xde\x8c\xe9\xf0\x45\xd5\x41\xb6\x03\xd1\x3b\xc8\x8a\xd7\xc3\x92\xb4\x1f\xbe\xea\x78\x7d\x52\x17\x8e\x37\x21\xe3\xcd\xa7\x11\x25\xd2\x11\x17\x4d\xeb\x6f\x71\xea\x94\x8a\x21\x3f\x4e\x1e\xb7\xb9\x12\x9f\x24\x2b\xa0\x70\xf7\x73\xf4\x2d\x34\x32\x4d\x14\xfa\xf1\xdf\x07\xdd\x90\xfb\x4a\xd3\xef\x96\x48\x60\x67\x80\xb6\x4d\xe6\x23\x21\xb1\xd8\xde\xc1\x87\xad\x47\x08\x0d\xef\x65\x32\x47\x9a\xd1\x76\x00\x74\xcd\x9f\x53\x5f\x11\xc6\xd7\xd9\x98\x64\x15\x99\x85\x3e\xf1\x52\x45\x23\xdf\x3c\x4a\x88\xe9\xaa\xd9\x31\x63\x87\xd0\xc5\x97\xb9\xe2\x3e\x68\x56\x08\xfa\x88\xc8\x61\x76\xb1\x97\x5f\xba\xb2\x26\x15\xd3\xd7\x3f\xe2\x82\x86\x42\x74\xa9\x6b\x3e\x60\xf9\x20\xb1\x29\xd7\x48\xdb\x6b\xf2\x18\x17\xb5\x76\x2a\x6b\x33\x94\xa1\x64\x2e\x98\x29\xe2\x5d\xd1\x4d\x7e\xd0\xfc\x80\x53\xcb\x05\x72\xb0\xd8\x2e\xd2\x7d\x0c\x16\x91\x81\xd7\x99\x14\x6e\x80\xe4\x9e\xaa\xc5\x17\x1b\x44\x89\xdc\x00\xc5\x35\x13\x29\x41\xa8\x94\x67\x37\x22\xc2\x02\xaf\xc4\xec\xa0\xcc\x59\x7c\xe9\xb1\x81\xfe\x6c\xef\xcc\x89\x1f\xbb\xea\xf4\x56\x5a\xcd\xdd\x7a\x06\x8e\x46\xbd\x37\xf6\xb2\x11\xf4\x2e\xe8\x3e\x17\xa1\x66\xe0\x2a\x49\xa6\x2a\x60\xfa\x50\x27\x13\x72\xb4\x46\xe2\xde\x33\x9e\xc5\x44\x88\x1c\x0e\x31\x8a\x6b\xfb\x53\x09\xad\x3b\xd8\xe0\x10\x78\x3d\xa4\xa8\x91\x8e\xef\xc6\x36\xe2\x98\x08\xe7\x88\x8a\xe4\xac\x0a\x73\xbb\x9a\xfd\xcf\x95\xa3\x09\x95\xcf\xd3\xc8\xf3\x1f\xbf\x00\x71\x2e\x27\x52\x29\x5a\x84\x7c\xc6\xd0\xc5\x81\x21\xae\xff\xfa\x00\x13\x65\xfa\x54\xb4\x11\x29\x62\x27\xaf\x1e\xf1\xb1\xd0\x33\x5d\x68\xff\x28\x04\xdd\x66\x78\x85\x83\xe2\x2b\x32\x00\x8b\xcb\x97\xf0\x8d\xa5\x88\x81\x05\xef\xa7\x21\xb2\x08\xaf\x5a\x39\xdf\x24\x1b\x13\x74\xfa\x5e\x9d\xe0\xb4\xfe\xb1\x93\x74\xf0\xd1\x1d\x74\x1e\xfc\x22\x33\x5c\xc5\x62\x9d\x6d\x2b\x27\xf7\x0e\x49\x07\x74\x86\xbc\x4c\x4d\xd6\x9e\xb0\x91\x5c\x8c\xf2\x37\x69\xb8\xaa\xcd\x23\x67\xb4\x6c\x36\xc9\x34\xb3\x23\x3c\x6e\x26\xce\xee\x1c\x05\x1c\xdd\x35\x18\x5e\xba\x6a\xd8\xde\x08\x44\xbc\x1d\x61\xde\x02\x4c\x24\xec\xc6\x08\x3a\x88\xdb\xa3\x68\xc2\x1e\x30\x27\x86\xf8\x7c\x30\x54\x75\x32\x55\x3d\x8b\xbd\x4b\x66\x09\x98\xde\x26\xc7\x2b\x21\xfa\xbb\xcb\x56\x07\x29\x66\x59\xb3\x5f\xcd\x48\x40\x41\x50\xea\x5b\xaa\x77\x5a\x2a\xd9\x04\xf0\x1f\x04\xd1\x1d\x6b\xb8\x90\x32\x5b\x79\x88\x3e\x72\x79\xab\xdd\x4a\x3d\x06\x95\x3f\x42\x74\xfe\xa6\x85\xb7\x74\xa0\xdc\x88\x8d\x7f\x96\x14\x1a\x66\x9b\x97\x4b\x26\x87\x22\xbd\x0d\x2f\x78\xf1\x41\x8b\xd7\x64\x87\x90\x93\xb2\xad\xeb\xef\x71\x89\x7d\x92\x7d\xf1\x9a\x5b\xaf\x18\x15\x88\xf1\x1e\x18\x44\x3e\x5c\xc9\xfb\x47\x84\x91\x8b\xc6\x90\x7d\xd9\xec\x5e\x63\x83\x24\x51\xc9\x52\x81\x0e\xd8\x06\x31\x34\x6c\x67\x67\xee\x3f\xe5\x97\xf9\x7c\x87\x4e\xa9\x5a\x14\xbb\xae\x32\x7b\xf5\x94\xab\xa3\xbc\x00\x2c\x49\x5d\x06\xee\xe2\xe1\x03\x11\x16\x16\xb3\x19\x76\x6c\x0d\x3f\x62\x32\xd8\xd4\xa2\x0e\x4b\x7e\x09\xed\x44\x43\x3f\xd7\x0a\x5e\x48\x42\x05\x7a\x2b\x12\x17\xd7\x52\x39\xef\x14\xb5\x41\xae\x5b\xb0\x14\x8b\x71\xf4\x29\x5e\xd4\x4d\x40\x70\x92\xa0\x38\xdc\xa3\x88\x34\xd6\x72\x04\x0f\x09\x51\xd2\x9a\x76\x93\x41\x1e\xa8\x39\xbf\xc6\x10\x55\xfe\x17\x3d\xcb\x7c\xaa\xba\xa5\x89\x18\x2a\xa9\xa3\xcb\x87\x47\xc1\x26\x03\x8f\x17\xa2\xc2\x28\x75\xe5\x8b\x11\x3e\xce\x61\x92\xdf\xcf\x78\x45\xf0\xa3\xbf\x1a\xd1\xaa\x40\xd3\xf0\x2c\xd5\x16\x2e\x82\x06\x74\x53\xab\xe0\x3f\xf4\x8d\xc1\x65\x35\x87\x19\xf2\x6a\xf6\x3b\x40\x8a\xf1\x7c\x6a\x4c\xe1\xda\x11\x21\x93\x27\x4c\x36\x3c\xb3\x16\xcc\xc1\xfe\xb1\xbb\x8c\xac\x7b\xf4\xaf\x99\x48\x6f\xb1\x93\xcd\xa2\xdb\xf3\xbe\xa5\x5f\xf5\xcf\xc3\x97\x51\xbc\x8a\xdd\x71\xf1\x2c\x3b\x4c\xb1\x4d\xd8\x88\x9a\x35\xab\xe8\xbf\x44\x29\x5c\x99\xaf\x1d\xc3\xac\x3d\x04\x40\x21\x67\xba\x32\x61\x38\x67\x65\x30\x5c\xb5\x6f\xea\xf0\x89\x94\x9e\x10\x6d\x5c\x32\x97\x90\xea\xd0\x3b\x15\xd1\x3b\x7f\x89\x98\xfb\xbb\x5a\x4e\xb3\x42\x9c\xb2\xca\x8c\x21\x21\x06\x0f\xb9\x90\xb0\x4c\xad\x1f\xe9\x93\x0c\x91\x40\x60\x8b\x76\xa6\x4f\x75\x30\x92\x0e\x43\xc5\xc0\xc9\x40\xdb\x6d\x53\x71\xe4\xb1\x7b\x80\x02\x10\x63\x12\x13\x5e\x51\x15\xa3\x5b\xe8\xe2\x39\xc0\xae\xf6\x10\x53\xd9\xd1\x36\xce\xb7\x6f\x0b\x8d\xba\x13\x01\xc1\x5f\x24\xfd\x8e\xb5\x88\xb9\x1f\xa6\x63\x13\x05\x96\x2c\xa2\xcc\x92\xb0\x3e\xd0\x1c\x02\xab\x64\xdc\xf9\x81\x47\x85\x7c\x65\x4e\x4e\x19\xcb\x3a\xb9\x29\x6d\xc6\x23\x85\x90\x2d\xdd\xee\x71\x2b\x08\x5c\xb9\x96\xd8\xcf\x24\xc9\x42\xb5\x4e\x13\xd8\xe1\x5a\x02\xd8\x0b\xcf\xd2\x77\xfb\xb6\x6e\xb0\x96\x6d\x5f\x69\x4a\xfa\x69\x1e\x67\x2a\xf6\x85\xd9\x7d\xd7\xf7\x40\xa4\xaf\xa1\x66\x70\x04\x68\x6f\x56\xe2\x6d\x98\x11\xfd\xbf\xaf\xee\x4a\x40\x2b\x12\x50\x5a\x4a\xcb\xed\xf7\xb6\x55\x7b\xe1\xd0\x18\xbc\x59\xaf\xf5\x3e\x13\xb0\x58\xe3\xe5\x38\x76\x76\x47\xe3\x40\xd7\xd0\x7a\x53\xd2\xf2\x04\xb8\x2b\x1b\xd8\xdb\x14\xee\x85\xd0\x1f\x94\xf8\x78\x29\x4a\x98\x30\x9e\xd3\x89\xe9\x22\x82\x1b\xbc\x3a\x70\x21\xbb\x57\x95\xc6\x57\x54\xbe\xae\xd6\x6c\xd8\x37\x1a\x6e\x68\x76\xba\x88\x15\x7a\x93\xfa\x77\x0a\x9a\xdc\x68\x2c\x5c\x6a\x9e\xd1\x45\xb9\xf3\x95\x65\x6b\xb6\x52\xf0\xfe\xae\x74\x98\xb2\xe7\xf2\x17\xc5\x27\xba\x12\x84\x29\xa8\x31\x98\xf3\x10\x75\x03\x8d\x20\x34\x37\xbc\x7c\x4d\x96\x67\xa9\xa8\x44\x7e\x29\xc6\x36\x76\x2c\x55\xc4\x50\xf2\x13\xfd\x15\xe5\x90\xd1\xb0\x4c\xcd\x43\x04\x9c\xf7\x0e\x3c\x8f\xb5\x15\x21\xce\xd9\xcb\xec\x70\x75\xe5\x82\xbb\xa1\xe5\x49\x8d\xe2\x78\x1f\xd8\xc5\x0b\x3f\x4a\xcb\x5f\xef\xbc\x32\xdc\x82\xa6\x37\x68\x1c\x23\x08\x91\x58\x7a\x33\xe5\x4a\x80\xf8\x51\x21\x3e\x6b\x12\x4f\x52\x0f\xce\x3a\x14\x4c\x62\xb7\xc4\x79\xbe\x62\xdf\x9b\xc8\x0f\x00\xeb\x58\xc9\x08\xac\x99\xd4\xa2\x4d\x82\x14\x4f\x4c\xdf\x0a\x88\x98\xc4\xe0\x7a\x84\x03\x2a\xb6\xc0\x99\x36\x87\x8e\x1e\x94\xef\x58\x24\x98\x39\x04\x31\xfd\xa3\x09\xdd\x4c\xed\x8d\x58\xdf\x1d\x94\x33\x88\xbd\x7d\xaa\xe2\x95\xb3\x01\xa4\xad\x19\x85\xc2\x26\x47\xc5\x36\xcd\x81\xe6\xc4\xbd\x93\x15\x03\xc2\xa6\x63\xe9\xaa\x0c\x7d\x44\xa4\x7e\x59\x6c\x0f\x8f\x43\xaf\x12\x26\xbf\x43\xba\x63\x80\x2c\x47\x85\x70\x91\xf7\x22\xb7\xb1\x9a\x42\xc8\x75\xc4\x39\x31\x42\xb2\x00\x47\x50\xa6\x08\x04\x6c\xa2\xe8\x07\x68\x80\x6e\x18\x5d\x18\x00\x5e\x08\x04\x6e\x16\x43\x74\x11\x91\x16\x74\xc0\x0b\x85\x8d\x54\x4c\x04\xa3\x08\x14\x55\x12\x05\xc2\xfc\x3d\x23\xe3\xf3\x4f\xbe\x55\x71\x18\xd0\xba\x6b\x3c\x7c\x47\x98\xeb\x17\xfc\x2b\xd2\x6d\xdc\x78\x3f\x11\x3d\xb0\x30\xd2\x08\x93\x7f\x76\x43\xf6\xfb\xe1\xc7\xc8\x02\x4c\x3e\xb6\xfb\x71\xe8\x6d\xb1\x87\x49\xc7\x9b\xfc\xc9\x86\x78\xaf\xe0\xfd\xeb\x7c\xa2\xdc\xcd\x5c\x7b\xd0\xe0\x85\x47\x1b\xe9\x67\x3d\xa7\xdf\xae\x8e\x92\x93\x9a\xfd\x8f\x46\xee\x64\xc2\x86\xc1\x73\xaa\x2e\xcc\x91\x84\xae\xf9\x04\xe8\x7b\x8c\xaf\x8b\x31\xef\xef\x16\x1d\xdd\xd2\x3f\x68\xb9\x9d\xc7\xef\x8d\xf8\xf3\xa1\xb2\x44\x80\x3e\xa5\x20\x77\x4e\x1a\xe8\x20\x57\x70\xe5\x71\xad\x3d\x73\x87\x05\x82\x39\x55\x25\x7e\x01\x0a\x63\x67\xc7\x5b\xed\x96\xc1\x17\x55\x72\x89\xe8\xf9\xb6\x18\x45\xc9\x5b\x70\x95\xce\xd4\x24\xac\xbb\xb9\x4c\xa0\xa6\x2e\xf9\x9a\xb9\xb4\x26\xe5\x29\x8c\xb6\x22\x33\x67\x38\x94\x84\x2b\xaa\x20\x78\x14\x9f\x5e\x6f\x88\x1a\xd4\x41\x51\x31\x9a\x5d\xb3\x18\x53\xa3\x19\x52\x5d\x1e\x52\x2d\x1a\x52\x23\xbb\xa4\xd1\x1c\x56\x49\x31\x26\x2f\x15\x97\x8e\x08\xa4\xc4\xa4\x97\x06\x69\x3a\xf2\x56\x0d\x9a\xa9\x81\x86\x4b\x4c\x87\x8b\x07\x4b\x07\xcc\xe0\xfc\x87\xe2\x6e\xc3\x80\x2b\xb0\x0c\xd6\x00\xed\xd6\x7b\x7d\x97\x31\xeb\x01\x60\x94\x2f\xfd\xc5\x8d\x56\xf2\x66\xcd\x40\xb3\xe6\xb9\xf8\xb7\x79\x29\xf9\x40\xe4\x54\x1e\x20\xe1\x15\x3d\xd5\xaa\x66\x6c\x55\xd5\x31\x96\x1a\x37\x74\xc9\x8c\x94\x58\x47\x5c\x48\x3d\xf0\xa1\x49\xa7\xa5\xa7\x1b\xb8\xd6\xd3\x50\x35\x5d\x53\xea\xdf\x1f\x6d\xff\x82\xfd\xed\x02\xbe\xa8\x9f\x33\xe8\xb8\xe8\x56\x71\xdf\xd9\xfa\x95\x3f\xeb\xfa\x43\xa4\xc1\xf7\xaa\xad\xb4\xa6\x23\xae\x46\x98\xa8\x52\xd7\x3e\x83\xbc\x46\x2e\xac\x6a\x1d\xb9\x4e\x97\xbe\xce\xb8\xa6\xd0\xbb\xfa\x72\xbb\x42\xc7\x3e\xb5\xa0\x86\xdf\xbb\xaa\x62\xbb\xe4\xdc\x3e\x7c\xb7\xe6\xc6\xb9\x96\xab\xa7\x36\xaa\xa6\x52\xbf\xc6\xc6\xbe\x5a\x2f\xb7\xbc\xc3\x3e\x71\x13\x25\x45\x9b\x49\xf8\x1f\x85\xf1\x2c\x5e\x49\xcb\xfa\x68\x7b\x0b\x83\x7c\x19\x80\x9c\xbf\xab\x5f\x50\x93\xf3\xfb\xd1\x93\x94\xc3\x1a\x46\xa3\x26\x45\xbb\x2a\xd1\x5a\xe0\x7a\xed\x6a\xbb\x61\x05\xfd\x11\x9d\xa6\x98\x7c\x29\xb2\x16\x8a\x72\x95\xbc\x97\xe8\x72\x0d\x6c\xa2\x89\xad\xd6\x63\xa4\x09\xc2\xda\x89\x97\x6e\x9a\xfd\x08\xb1\xd6\xc9\x76\x23\xbc\x96\x3b\x7b\xad\x5c\x86\xae\x42\x4d\x8f\x91\x96\xfa\x55\x55\x96\x26\xc8\x48\x55\xcc\x2b\x18\xb9\x76\x5e\xcb\xb0\xa5\xe6\x47\x86\xf6\x62\x4d\x7b\xf9\x7b\x11\xcd\x4f\xbd\x2f\xf6\x88\xaf\x60\x99\xcd\xa1\x8f\xe1\xe4\xa7\x8b\xaf\x8d\x94\xef\x2e\x5f\xae\x4d\xd7\x74\xa3\x6a\x75\xb9\xf4\xd5\x6a\xa6\xe2\xb5\x19\xf5\x9b\xa1\xd7\x02\xf0\x6a\x17\xdb\x8d\xe0\x6a\xd6\xa9\xb4\xd9\xe8\x13\x60\x6b\xe8\xb1\xab\x4c\xe5\x8b\xdd\xe8\x5f\x63\x75\xba\xf8\xbb\x87\xd6\x86\xd1\xeb\xab\xbc\x1c\xc2\x6b\x6f\x81\xc6\x90\x9a\xb3\x48\x1d\x58\xa2\x8e\xc1\xb5\x46\xf8\x7a\x02\x2e\x1b\xa8\x5a\x12\x34\x5d\x57\xfb\x84\x90\x1a\x86\x77\xd5\x5f\x57\x11\x03\x9a\x70\x2f\xfd\x45\xb5\x43\x9f\xdd\x5f\x5e\x5d\xee\x5f\xd6\x1c\x53\x73\xb6\xb0\x0f\xd2\x47\x5d\xfb\xdf\xe3\x63\x18\xca\x94\xe8\x41\x5f\x71\xd8\xc1\x27\x02\x61\xae\x2f\x9d\x38\xe8\xf0\xa2\x78\xd4\x99\x75\xbc\xa1\x62\x40\x76\xb0\x3c\x10\x95\x82\x15\x4c\xa2\xfc\x3f\x27\xd4\x60\xa0\x4c\x01\xf8\xa9\x4c\x1c\xb7\x79\x78\x71\x66\x91\x3f\xe6\xd6\x5d\x79\x67\xc3\x4a\x0e\x16\xb1\xf4\x5e\xc2\x4a\xe3\x62\x28\xb5\x30\x8f\x44\x75\x69\x4c\x31\x9b\x1c\x93\xb6\x55\xe9\x5e\x2b\x8e\x6a\x5c\x86\x53\xde\x9e\x7b\xbe\x3b\x87\x31\x00\xba\x1c\xef\x7d\x97\x16\xa3\x55\x05\x7e\xe8\xfa\x7a\x3a\x89\x70\xf2\xa1\x8a\xd6\xaa\x0b\xdc\x69\xe4\xb9\x5e\x24\x4d\xef\xe0\xfb\x5e\x5d\x89\x17\x38\xe0\xb8\x0d\xa7\x36\x2a\xd6\x1a\x43\x7b\x08\x64\x83\x05\xcf\x42\x67\x78\x20\x6c\xc6\x2b\x9d\xf8\x58\x54\xa9\xa1\x00\xbc\xe4\xcd\x9f\x34\x5a\x3c\x59\xfa\xb2\x3f\xaf\x4e\x93\xa3\xe0\xd3\x01\xe6\xdf\xeb\x46\x0e\x09\xfe\x3e\xcd\xe6\xae\xe3\x5c\x33\x99\x3a\x79\xed\x13\xa1\x4e\x34\x4e\xe6\x5f\xc0\x04\x45\xce\x4c\x0c\x4a\xc3\x32\x22\xa3\x27\xf5\xf7\xc1\x18\xe6\xea\xc0\xc7\x6f\xc8\x34\xc8\x78\xe3\x5a\x49\xbb\x88\x1b\xbb\x59\xf9\xe3\xdc\x47\xc7\x32\x57\xc8\xe3\x75\xcd\x32\x89\xf0\xfc\xdb\x5b\xc2\xb6\x29\x67\x7e\xb4\x59\x62\x3f\x7c\x4e\xe3\xd0\x26\x3e\x4e\x38\x67\x8e\x1e\x18\x21\x8a\x88\x99\xc7\x07\x01\x14\x1b\xb6\x1b\x8b\xb3\xe5\x4f\x97\xe8\x01\xd3\xf7\xfb\xcb\x30\x49\x64\x0a\x29\xc0\x74\x6c\x79\x31\x49\x34\xf2\x2e\x12\xb0\xe0\xfe\xa0\x39\xde\x9e\xb5\xe7\xd6\x28\x79\xdc\x42\x3a\x75\xe9\x25\x11\xda\xfe\x3d\x69\x1a\x95\x31\x4c\x8f\x30\x29\xca\x74\x23\xe0\x19\x29\x04\x50\x66\x29\x67\x19\x9d\xbc\x81\xeb\xfe\xa2\xae\xaf\x7f\x0d\x16\x8a\x42\xba\x30\x4f\xf6\x5c\xfe\x3d\x36\x59\xb5\x3a\x1f\x6f\xe8\x2e\x21\xd6\xeb\x69\xa2\xdb\x8b\xb0\x4e\xc3\x3c\x4a\xe0\xdf\x66\x6e\xcd\x6a\xfc\x6a\x5d\x81\x5e\x99\x0c\x82\x8d\x28\xc3\x2c\x94\x84\x43\xd5\xbe\x68\x44\xe4\x09\xe3\x4e\xe2\xb1\x66\xa9\xc4\x17\x66\x89\xc1\x93\xab\x4b\x23\x1e\x21\xd0\x21\x60\x78\x43\x12\xeb\x27\xca\x46\xa5\xe1\xce\xf8\xa2\x5c\x22\xb6\xdd\x3d\x1c\xd6\x62\x43\x91\x8d\x4a\x92\x41\x8a\xe4\x79\x72\xa5\x59\xf5\xb2\xdc\x2d\xa9\x08\x43\x74\x55\xf0\xcf\x52\x54\xc2\x80\x6d\xea\x74\x5e\x69\x96\xd9\xef\xac\x50\x77\x88\x89\x46\x26\x39\x59\xb0\xde\xe2\x31\x6e\x53\xe6\x66\xba\xa3\x49\x72\x09\xb2\x55\x6c\x36\x37\x68\xc5\xd0\x13\x32\x10\x96\x16\x06\x13\xf1\x2a\x23\xa3\x1c\x60\xec\xa8\xd7\x9a\xf5\x8d\x83\x4b\x80\x9c\xcc\xc1\x9b\x15\xe6\xb4\xcb\x5e\x68\xe5\x31\xdb\xba\xf9\xf8\x4e\xfc\xac\xf7\x97\xcf\x6f\x6b\x20\xf8\x36\xee\x4d\x4c\xe9\x55\x5c\x08\x5e\x58\xf1\x97\xb8\x49\x6c\xe0\x7a\xbf\x14\xf0\xe5\xc4\xc6\xb0\x56\x69\x3c\xeb\x4d\xe9\xb9\xff\x17\xb9\xea\x86\x46\x26\x6c\x47\x8c\x10\xfd\x5f\xbf\x18\xad\xcd\xa8\x57\xc1\x17\xeb\xc8\x46\xba\x92\x2e\x07\x5c\x2f\x4d\x6b\x64\x1d\x3c\xc6\x0f\x4c\x55\x99\xef\xe9\x7e\x7d\xd6\x1a\xef\x6b\x19\x22\x3e\x7a\xda\xdd\xa7\x0e\xc6\xb8\x67\x3f\x72\xcf\xa2\xec\x4f\x89\xc8\xce\x7a\x88\x97\x0f\xff\x34\x38\x54\xf8\x7e\x0e\x23\x76\xc6\xbc\x55\xf4\x8a\xc5\xcd\x0e\x0a\x65\xb8\x6a\x26\xb6\x4f\xa8\x07\xc0\xc2\xd1\xce\x1e\x6e\x50\x37\x40\x05\x7c\x15\xeb\xcb\x02\x60\x76\x46\x28\xe4\x9e\x4e\x38\xe7\x0d\x35\xae\x5e\x83\x6e\xeb\xa1\x96\x4a\x11\x06\x14\x25\xfd\x39\x58\x8b\xdf\xba\x75\x2f\xbe\xce\xee\xcb\x0c\x95\xcd\x06\x1e\xb6\x2a\xfd\x85\xb1\x78\x78\xbe\x38\x50\x84\xaa\x31\x21\x52\xf8\x44\xcb\xd4\x56\xb2\x02\xb2\xdb\x2f\xfc\x04\xc3\x9d\x38\x83\xc1\x7e\x84\x24\xa9\x42\xb8\xd8\x39\xd2\xbf\x3b\x91\x32\x45\xb6\x50\xc8\xad\xc8\x33\x3c\x33\x3c\x69\xf3\x1b\x45\x31\x96\xe0\x24\x0c\xd4\xcd\x70\xca\x1c\xc3\x4a\x9c\x0b\x0b\x52\x55\x0c\x37\x43\x51\x5e\xc4\x7d\x9d\x17\x73\x14\x76\x6d\x23\x73\x3a\xf9\xcb\x87\x7a\xf3\x58\xe5\x5a\x22\xcc\x37\x84\xb6\x4e\x56\x67\x97\xde\x6d\x3c\xd9\x2c\xdc\xa9\xd3\xc5\x6b\xd1\xc2\x6b\x6b\x7e\xfc\xeb\xf5\xd4\x02\xe8\x9e\xc0\xb7\x6a\xe9\xdc\xfb\x2a\xe0\x39\x5c\xfa\x5b\x1c\xe6\x1b\x20\x1d\x88\xdb\x9d\xfe\x26\xb0\x9e\xc2\x14\x9f\x2e\x32\xbb\x7b\xe7\x84\xdc\x5f\x4e\x2d\x2e\x8f\x2e\x77\x93\xc6\x1f\xcb\x4a\x1f\x2f\x7f\xe4\x7e\xe7\x91\x0e\xe9\x0a\xc3\x84\x0e\xc7\x43\x8f\x63\x17\x6d\xdf\xd6\x21\x1b\x97\x5d\x6e\xd6\xc1\xc6\xd3\x0d\x67\xda\xce\x44\xc5\xc3\xbd\xda\xeb\xea\x55\xcd\x49\x9f\x6b\xf7\xbf\x40\x21\x20\x88\x54\x3b\x03\xa8\x96\x80\x5d\x19\xc4\xe8\x08\x18\x52\x14\x84\x0d\x17\x90\xd0\xde\x60\x04\xa0\xd3\xf9\xc4\x8f\x64\x7a\x24\x7d\x33\xec\x37\xe9\x21\x38\x24\x5f\x32\x7b\xb2\xad\x66\x72\x86\x4f\xc2\x71\x86\x95\x99\x26\xcd\x67\xd0\x22\x70\x48\x8c\x43\xe4\x20\x0d\x47\x30\x18\x57\x6b\xc3\xca\x3b\x1d\x84\x36\x3a\xa6\x83\x0d\x69\x49\x59\xe8\x74\xd9\xca\xc8\x86\xdb\xe0\x46\x5f\x04\x86\x73\x66\xbc\x8a\xa1\x04\x56\x92\xa5\xbc\xf2\xd2\x5a\xf6\x98\x30\x35\x83\x59\x8d\x28\x09\xc2\x57\x03\x22\x1b\x5d\x34\xaa\x84\x83\xb9\xc0\x42\x81\xe1\x3c\x4b\x32\x49\x28\x0f\x44\x48\x78\xbd\x7d\x57\xa0\x01\xf9\x32\x2f\x8e\x25\x6a\x67\x3a\x6a\x44\x24\xf5\xf3\x37\xbf\xe0\x5f\xfc\x25\x82\x77\xf3\x63\xa3\x7c\x10\xc4\x77\x43\xd9\xde\x3d\x40\x96\x28\xab\xcf\xbe\x98\x26\x9d\x44\x20\x15\x07\x47\xa9\xac\x30\xab\xfb\xd9\xa2\xd0\x05\x01\x2c\x1b\x37\x5b\x86\x2a\x33\xfd\x80\x5f\x62\x75\x32\xa7\xc1\x58\xa5\xc3\xfd\x80\x64\x36\xa7\x70\x2c\xeb\x66\x76\xc5\xb3\x78\x8a\xe3\x21\xc2\x29\xbc\x99\x39\x5a\xf8\x10\x05\x34\x2f\x16\x81\xf0\xb6\x4a\x38\x5c\x68\x0c\xcd\x03\x8d\x34\xb4\xa5\x58\x5c\x3d\xcf\x98\xf9\x50\xcb\x88\x93\x1c\x96\xb3\xb7\x70\x04\xe9\xc8\x49\xdd\x02\x9d\x34\x44\x5f\x83\x1d\xdf\x2f\xc5\xfc\x7c\x8a\x1d\xd3\x9e\x85\x63\x9d\xf6\xf9\xac\x74\x89\xa7\x5f\x7a\xb4\x0e\x2c\xb3\xc4\xc5\x8e\x83\x8b\xd4\x6b\x9d\x87\xde\x49\x4c\x1b\x9a\x30\x9f\xc4\x47\x04\xe1\x9c\x96\x6b\xa7\xa2\x67\x9f\x81\x6b\xa1\xc0\x42\xf0\x9e\xd7\x65\x12\x87\xaf\xf3\x75\xe5\xff\x39\xed\xb0\x5a\xf0\x90\x53\xb7\x6d\x98\x1e\x81\xbf\x0c\xea\x5f\xa2\x6a\xa1\x4d\x68\xc6\xea\x59\xa6\x10\xf5\xcd\x62\xb1\x29\x94\x46\xfa\xfe\x6d\x0c\x37\x49\x33\xe5\x86\x03\xf9\xbe\xb5\x9c\xae\x3c\x50\xc0\x45\xf7\xd7\x2f\x3e\x80\x3a\xad\x4b\xd3\xa1\x4d\x12\x51\xbe\x6a\x75\x95\x1a\x3d\x7f\xdd\x6d\x4e\x71\x46\xb5\x6b\xc6\x99\xbc\xb5\x97\xb7\xee\x66\x3b\x22\x7e\x35\x79\xbe\xba\xff\x02\x74\x7b\x8e\x1a\xa5\x58\x66\x8e\x44\x86\x5b\xac\x5d\x6f\x3d\xb9\x6a\xb9\x99\x5e\x09\xbb\x11\xd0\x9c\xa3\x60\x64\x4e\x4a\xd0\x0f\xb4\x99\x21\xae\x5a\xc5\x41\xad\x16\xcd\x2d\x7d\x95\xd6\xfe\x37\x1e\x4e\x1c\x8f\x86\xdf\x2d\xe7\xc8\x9c\x97\x1e\x60\x6c\x9a\x2b\x5f\x89\x7a\x9c\x68\xae\xcf\x00\x58\x90\xe2\xc4\x82\x5a\x4e\x79\x8d\xde\x4b\x76\x9e\xca\xe1\x0c\x37\xed\x5f\x0d\x68\x59\xd7\xa6\x40\x01\x57\xf7\x71\x16\x24\x0c\x37\x29\x53\x14\x88\xa9\xe6\x4e\xa8\xd0\x4b\x2e\x72\x69\xcf\x35\xc5\xf4\xc5\x4c\x55\x17\x21\x67\x0b\x67\xe4\xe3\xf7\x5e\x71\x37\x91\xaa\x22\xec\xca\x7a\x05\x87\x26\x57\x78\x48\x23\xf8\xaa\x87\x4e\x3e\xfe\xfd\x36\x09\xfb\x0d\x16\x03\xbc\x2b\x7b\x83\xa3\xd9\x11\x97\x46\x92\x61\xea\xc3\xf8\x60\x6c\xc0\x19\xcd\x4f\x47\xc4\x8d\xed\x08\x0c\xf6\x28\xfe\xe0\x33\xc1\x8b\x8a\x60\x1f\x28\xff\x1c\x21\x4f\xf8\x19\xcb\xdc\x58\x35\x32\x88\x64\x03\x12\xb1\xa3\xb3\xb2\x9d\x0f\x84\xc8\x98\xe1\xa2\x51\xc6\xdb\xfd\xb0\xc2\x24\xb4\x97\xbc\xcf\xad\xb2\x14\x73\x31\xcd\x8c\x44\xe2\xc3\x05\xff\xd5\xa8\x3e\xa3\x53\x94\xaa\xf2\x06\x3c\x90\x86\xa7\x89\xc7\xb6\xbc\x84\x35\x33\xb2\x40\xb5\x5f\x2c\x58\x3d\x74\xaa\x4e\x9b\x21\xcf\x12\x9e\xd7\x84\xc8\x87\x4d\x5f\xcb\x01\x49\x36\x09\xe7\x44\x44\xd4\x6c\xe8\x53\x0d\xf8\xc6\x47\xf9\x6e\xaf\x30\xa0\x3f\xc3\x1a\x02\xb0\x91\x70\x4a\x5b\x32\x56\x2a\x39\xa6\x03\xc2\x25\x36\x14\xa0\xbf\xde\x53\xf1\x8f\x1c\xc8\xfc\x94\xdf\x7a\x7a\x8e\xf4\x95\x0b\x5c\x6a\x85\x33\xad\x8e\x51\x86\x4d\xb0\x82\x0a\x55\xbc\xe8\xed\xc9\xf7\xec\x73\xaf\xe2\x5e\xe9\xd9\x41\x60\xfa\x49\x50\x0b\x30\x2c\x2f\xb7\x77\xfd\xe8\xfe\x78\x61\x3a\x56\x03\x1d\x8e\x0f\xd7\x69\x24\x39\x06\x0e\x4e\x86\x77\x72\x17\xb4\xe6\x42\xb3\x67\x4f\xd7\xe6\xac\xfb\x0d\xc3\x95\xf2\x96\x01\x9e\x4d\xc0\xf4\xb4\xc4\x45\x94\x21\x05\xf9\x8b\x0c\x06\x09\x65\xdc\x77\x3f\x41\xda\x94\xd7\x76\x88\x2d\x1a\x3c\x09\x91\x2d\x5e\xe8\xc2\xa3\xfe\xd4\x95\xf3\xb9\x6e\x1d\x39\x91\x04\x54\x46\x88\x6f\xaa\x4b\x21\xdc\x7f\x4c\xb1\x0b\x61\x51\x37\xa5\x3f\x48\x7f\x9b\x63\x51\xb0\x27\xd2\x54\x33\x45\x63\xca\x7e\x8d\x7e\xe9\x40\x57\x0b\x40\xae\x0a\x1d\x08\x65\x59\xd0\x71\xf8\x45\x70\x6b\x71\x07\x26\xbc\x7e\xa9\x8b\x66\xf1\x20\xdb\xac\x69\xc2\xf1\x3b\xc7\x75\x46\x8b\x89\x9b\x7c\x79\x3b\x32\x10\x1d\x5f\xe7\xc1\x04\xf9\x44\xdc\x82\x58\xdb\xcd\x36\x06\xb5\x71\xb2\x65\xe6\x73\xb6\x40\x9d\xe1\xd7\xeb\x41\x8d\x34\x48\xcb\x12\x74\x89\x4b\xa4\x68\x4c\xb8\x07\x00\xdf\x11\x2d\x8a\x2f\xe4\x7c\xe5\xfd\x06\xfb\x0b\xad\xb8\xd7\x31\x07\xaa\xb4\xae\x67\x98\x59\xcd\x31\xf0\x67\x70\x0f\x12\xfa\x8c\xf4\xb3\xe2\xd2\xc4\x0b\x61\x93\xe4\xb8\xce\x1e\x94\xaa\x59\x88\xd8\x80\xc1\x6a\xca\xc9\xd2\xbd\x2a\x7c\xe1\x40\x29\xb8\x18\x86\x7d\x82\x6b\xfd\x3d\xd8\xaf\x1a\xce\x95\x33\x96\x4a\x2a\xb2\xec\x83\xe1\xed\x33\x44\xa8\x8a\x0b\xa8\x19\x2f\x3c\x67\xfa\x12\x12\x31\xfb\x1a\x26\x94\x75\xca\x90\x58\x85\x4a\x76\x7c\xc4\x82\x9d\xb3\x07\xd0\x85\xe4\x57\xa2\x3c\xc1\x44\xa0\x87\x26\xdd\x68\x15\xb2\xaf\x1f\x14\x3c\xc3\xb5\x9e\x64\xe6\x18\xec\x5a\xed\xaa\xc2\xf3\x88\xbd\xbf\xcb\x7b\x8a\xfe\x0f\xb5\x3f\xe0\xb8\x6e\xfe\xa6\x8e\x41\x41\x5d\x7e\x42\x4b\xab\x0f\x31\x8a\x7e\xd9\x4d\x08\xa6\x45\x19\xd9\x10\x75\xd7\xc9\xd9\xe7\xc2\x21\x65\x25\xea\x90\x18\x9f\xf4\x2e\x82\xd6\xa4\xbf\xf3\xa6\x1d\x65\xe0\x8d\x34\x12\x58\xe4\xa0\xd8\xd1\xcc\xa4\x4b\x97\x99\x89\xac\x4d\x16\x93\xe9\x57\xfc\xe0\x3a\xac\x6d\x65\x9a\xa5\x8f\x1b\x8c\x36\x3a\x91\xb9\xcc\xa7\xbc\x58\x0a\xff\xc6\x8c\x51\xfd\xa9\x0a\x15\x99\xe0\xa9\xef\xfa\x70\x82\x41\x7e\xdb\xf9\x45\x94\x2f\x36\x7b\x6d\x24\xd1\x36\xfa\x9a\x4a\x6b\xc2\x19\xba\x8e\x75\x85\xed\x3a\x47\xea\xbf\x3f\x4f\x71\xa9\xb2\xde\x6b\xc3\x9e\x04\xe2\x1b\x27\xbe\x7b\x27\x54\xc8\x54\x38\x96\x14\xdf\xaf\xe8\xec\x04\x5c\x30\x88\x6f\xe1\x61\x4e\xef\xc9\xd3\xda\x4d\x8d\xd8\xa6\x28\xa5\x18\x29\xca\x4b\xb3\x4b\xfe\x22\xd4\x87\x35\xf5\x2c\xea\xf9\x0e\xbd\x44\x36\xd1\x59\x57\xa2\xf6\xa7\xa4\xc3\xd3\x0c\xe3\x90\x72\xaa\xb3\x07\xe6\xc5\x52\xd2\x73\x47\x24\xa7\x30\xdb\xa5\x60\x69\xca\xd8\x66\xe9\xc3\x85\x2c\x96\x45\x8d\x64\xfd\xb0\x61\xf0\x76\xbf\xc5\xa7\xcf\xf0\xd7\xf8\xfc\x27\x94\x64\x6c\x7d\xc0\xa5\xab\xec\x1d\xcb\x8b\x4c\xff\x8b\x77\x0f\xc6\x92\x43\x10\x98\x92\xcf\x3b\x46\xeb\x04\xa0\xa1\x5e\x3e\x43\x75\xf5\xe9\x01\xa6\xa8\x03\x42\x90\x33\x91\x7b\x01\x5b\x02\x61\xb8\x7e\x1f\x19\xb0\xcd\x79\x66\x94\x7e\x59\x95\xf1\x98\xf0\xb2\x21\xee\x7a\x02\xd6\x73\xd0\x88\x7f\x18\x63\x2e\x51\xad\xf2\x65\x8e\xfc\x96\x71\x2b\x70\xc3\x25\xeb\x06\x4b\x05\xe4\x26\xe6\x1e\xb3\x65\xae\xdc\xe8\xa3\x25\xdb\xa4\xe5\xe4\xaa\x29\x64\x75\xa1\xee\x74\x22\xfa\x0e\xcf\x61\x45\x5b\x28\xcf\xe7\x0b\xc5\x73\xf4\xe1\x7f\xc9\x6d\x92\xd2\x29\xc1\x8f\xc2\xf2\x85\xab\x9b\x73\xc9\x64\x73\x40\x73\x30\x96\xb0\x85\xde\xbf\x10\x32\xc2\xc7\x09\x3c\x74\x90\x2c\xdf\xfd\xff\x00\x9c\x0e\x63\xf1\x7a\x0a\x5c\xd7\xa4\x2b\x12\x40\xbd\x31\xb8\x98\xf4\x95\x11\xb4\xab\x73\x60\x4b\xf8\x2a\x1e\x7d\x3f\x74\x17\xa2\x8c\xea\x9f\x9b\x00\x00\xc0\xd9\x9a\x9a\x37\x51\x4a\xbe\xb6\x82\x81\x00\x84\xb0\x8a\xd3\x2d\x26\xa9\x5b\x54\xcf\xc0\x77\x17\x7a\x44\xde\xb5\x0c\x37\xdc\x10\xa0\x2b\x69\xbd\x10\x0a\xde\xc1\x53\x2b\x7b\x5c\x3d\x99\xed\xe9\x9d\xbb\xad\xd5\x04\x70\x26\xf5\xab\x17\x7c\x6f\xb0\x11\x56\x26\xc1\xb0\x2f\x91\xca\x89\xd4\x08\x27\x0f\xc0\xeb\x01\x2a\xdc\xc4\xb8\xfa\x67\xc7\x75\x7e\x42\x8d\xc5\x4d\x12\xe4\x42\xc4\xf3\x4f\xfb\x79\x18\x8a\x40\x85\x47\xdf\xa7\x60\x6e\x89\x18\x7f\x85\x01\x0a\xdf\x06\x88\x85\x4a\x09\x73\x35\x85\x42\xdc\x9b\xf4\xf3\xf9\x38\x37\x4a\x9a\x84\x69\x40\x76\xb9\x12\x88\xaf\x8c\x7d\x75\xed\x5c\xd4\x13\x26\xfd\x87\x72\x3c\x5c\x58\x58\x19\x8d\x86\x82\x86\xe4\xba\x32\xd7\xae\x6f\x9b\x27\xb1\xcd\xef\x0a\x37\x58\xe4\xe8\x8c\x76\x90\x2f\x2e\x59\x40\x7e\xb4\xc2\xe2\x1a\xaf\x88\x75\xb3\x61\x4b\xc9\x35\xa4\xb4\x80\x6d\x12\xd3\xfa\x3d\x20\xd2\x3d\xe6\xd3\x7b\x04\xa2\xce\xf1\xdc\xce\xf1\xd5\xce\x68\x7c\x2f\x23\x3c\x4d\x96\xc8\xcc\x19\x58\x86\xc4\xc3\x45\x6d\x8c\xb4\x0e\x2d\x31\xb2\xa8\x53\x26\x8e\xc1\x93\x41\xd0\x47\x13\x12\x80\x07\x6b\x2a\xd6\xce\x50\xcc\x85\xac\xd0\xc7\xc1\x82\x1f\xcf\x97\x64\x8e\x04\xb2\x42\xa1\x13\x58\x67\x37\x50\xde\xf3\xd6\x63\xb4\x13\x03\x58\x2c\x4b\x37\xee\x1b\x9f\x90\x27\xc8\xe8\x71\xa5\x37\xe5\x6c\xed\x64\x03\xfd\x04\x1a\x15\x25\x89\x2c\x8c\xb5\x64\xf4\x50\xc6\xfe\xa8\x43\xe2\x9e\x11\x05\x63\x21\xc4\x6c\x05\x32\xa7\xcb\x58\xba\xa6\x03\x46\x2a\x4b\xb1\xc8\xf2\x18\x90\x37\xcd\xb9\x8a\x74\xc4\xcc\x23\xc5\x7b\xda\xfd\x99\x43\xc4\x75\x0b\xa5\x98\xe2\xa8\xe7\x74\x90\x42\x44\x49\x03\x34\x45\x9a\x06\x8b\xc0\x3a\xc5\x39\x26\xfa\x82\x08\x40\xa7\xe7\xfa\xb7\xd1\x67\xec\xdb\xb4\x35\x35\x7d\xcf\x07\x50\xb1\x59\x06\x0a\xe2\xb5\xba\x82\x5d\x83\x12\x10\x89\x2e\xfc\xc5\xf8\x11\x0a\x77\xa2\xcb\x8d\xb4\x0c\x56\xe2\x51\xa6\xe7\x8c\x49\x02\x4d\xe3\x49\xf9\x58\x07\x72\x5e\xfb\x98\x41\xe5\xd4\x42\xca\x10\x0f\x2b\x20\xb1\xe9\x80\x44\xd4\xf2\xc2\x52\x4a\x16\x26\x5e\xba\x8e\x40\x89\x17\xe8\x4e\x64\xea\xea\x19\x30\x8a\x33\x55\x82\xa0\x03\x21\x0d\x12\xac\x5a\x81\x37\xd8\x4a\xe5\x10\xb6\x67\x39\xa2\x93\x05\x66\xd0\x20\x99\xce\xca\x35\x1c\xf9\x73\xcc\xdd\x08\x3f\xe4\x02\x21\x06\x7f\xcc\x0f\xc9\xd1\xc2\x22\x58\xb7\xdb\x6c\x31\xaf\x81\xd4\x66\xcd\x18\x8e\x5b\x18\x56\xca\x5d\x22\x5e\x94\x1f\xa6\x22\x15\x11\x0b\x8d\xa3\x67\x7b\xae\x3d\x0e\x65\xe8\x95\x39\xe6\xb2\xeb\x1e\x68\x2a\x58\x70\x64\x27\x20\xf0\xa5\x22\x8f\x8e\x31\xae\xd1\xf8\x21\x7e\x94\x33\x7e\xd8\x40\xc3\xd7\x87\xa4\x2f\x96\x99\x1c\x3c\x6f\x78\x21\x56\x00\xde\x2c\x0c\x27\x42\xfc\x2e\xeb\x9a\xa2\x04\xe5\x09\x32\x6c\x7a\x70\x23\x2f\x43\xd0\xec\xbd\x4f\x8b\xc8\x66\x18\x97\x4e\xa8\xe2\x5e\x56\x8e\xc4\x08\xb3\xce\x75\x11\xcd\xe2\x18\xc1\x10\x84\xeb\x4c\xf9\x66\x5f\xad\xb6\x6b\x53\x64\x96\x57\x3e\x5e\xf4\x48\x31\x8b\x16\x15\xb4\x1a\xb0\xa9\x64\x29\xfd\x13\xba\x82\x26\x02\x49\x49\x5d\xa3\x75\xdb\x32\xe6\x30\xe8\x91\x12\x2e\x9f\x50\x08\x55\x1a\xb9\x0e\x56\x1a\xa3\x59\x1d\x9e\x7a\x73\xa6\x81\x46\x3b\x18\xb7\x26\x6e\x70\x2a\x5a\x97\xed\xad\x38\x50\x4e\x60\x44\x0b\x9c\xc9\x40\x10\xdc\x3f\x23\x78\x02\x85\xe7\x22\x70\x4c\xd9\x42\x5e\xc3\x7b\xa8\xdc\xeb\x1d\xfd\x5a\x2d\x1b\x82\x45\x44\x1d\x5d\x86\x13\x76\xd5\x1d\xa2\x83\xbe\x28\xd0\x9c\x3c\x64\xde\xd5\x9c\x0d\x25\x58\x1d\x25\x0c\x56\x79\x3c\x3b\x72\x5c\xb9\x61\xbd\xc1\xae\x17\x44\xba\x5a\xbd\xd4\xd8\x2a\xa9\x9e\x40\xe3\xc0\x1d\xa6\x05\x07\x4f\x19\x1b\x8b\xe7\x1d\x48\x16\x8d\x37\x2c\x43\xac\x1c\x48\x78\x30\xa4\x6f\x13\xd7\x9d\xac\xc8\x74\x4a\x76\x9f\xd1\xc4\xa1\xcc\xe2\x09\x76\x2c\x81\x61\x66\xcf\x78\xcc\xd3\x44\x66\x2c\x04\x70\x1f\x5f\x59\x5a\x34\x89\x75\x65\x5c\x73\x82\x04\x48\xe6\x6e\x75\x3c\x6e\x7d\xc1\x55\xd0\xec\x74\x06\x45\x84\x51\x9c\x6c\xbc\xf6\xa2\x39\xa2\x48\x26\x4e\x9b\x1d\x52\xd6\x60\x03\x13\xef\x27\xe5\x9c\xa8\x86\xd2\x5b\x1e\xad\x7f\x9c\x8d\xfa\xe2\x64\x28\xe8\xd1\x39\x4a\x84\x70\xfe\x32\xe9\x60\xce\x4c\x52\x17\xc5\x09\x2b\xee\x11\xc1\x4b\xb8\x66\x6f\x24\xfc\x02\x58\xc3\xef\xb3\x89\x2d\x6e\x02\x40\x66\x00\x6f\x63\xde\x8b\xc6\xcd\x4e\x03\x2d\xb4\x41\x02\x57\x4b\x81\x5d\x99\x2c\xc8\x82\x5d\xdf\xd2\x65\x0f\x2a\x23\xba\x64\xad\xd1\x3d\x93\x33\x98\xb7\x4b\x67\x2f\x89\x81\x81\x13\x34\x2d\x99\x32\xb3\x00\x50\x7c\x40\x47\x17\x91\x9a\xb8\x62\x62\x7f\x4c\x35\x9d\x60\xb4\xb4\x29\xac\xdf\xb7\xe6\xbe\x0b\xb1\xf0\x35\x90\x09\x69\x51\x18\xde\x47\xea\x3c\x76\x36\x48\x1c\x5c\x86\xca\xa2\x1a\xa2\x4b\x9f\x96\xbf\x9a\x31\x1a\xf1\x08\x26\x00\x11\xe4\x6b\x90\x16\x27\xe1\xb5\xf0\x8f\x70\xdd\x68\xe8\x9e\x41\x46\x13\x02\xa1\xb6\x0a\x74\x8f\xc6\x0f\x51\xe6\x04\x9d\xc4\x8e\x2c\xd8\x61\xc1\x52\x67\x12\x2a\x65\x44\xb7\xe9\xea\x53\x7b\xcf\x9b\x00\x31\x85\x71\xf8\x0e\xf5\xa5\x55\x1b\x84\x8c\xc8\x69\xa3\x73\x51\xb0\x1a\xac\x00\xc1\x2c\xc4\x92\xa1\x7a\x8a\x5e\xe9\x9b\x12\x23\xa2\x8c\x29\x61\xcc\x86\xd2\x03\x98\x06\x07\x6a\xad\xba\xd7\x74\x32\x34\x32\x58\x16\x80\xcc\x99\x9f\xaa\x48\xbb\x30\xc6\x84\x40\x03\x82\x5d\xbc\x1a\x5e\x2c\x5b\x10\x63\x45\x9c\x70\xaa\x99\x68\x3c\xaa\x3c\x48\x67\x4a\x1e\x03\x11\x0f\x28\x3d\x40\xef\x24\x72\xb9\x2e\x00\x21\x1c\x0e\xad\x02\x7a\x0f\x15\x47\x54\xfa\x40\x73\xb6\x82\x90\x11\xe9\x1c\x2f\x46\x33\x10\x6a\x7b\xd4\x2d\xeb\x6c\xe3\x40\x62\x72\xf6\xc8\xc1\xe5\xe7\xcd\x22\x3d\xff\xca\xfd\xab\xeb\x3f\x92\x33\xfc\xee\x14\x4d\x19\x6b\xdc\x0e\x27\x7e\xee\xda\xb7\x10\xcb\xb3\xfa\x4a\xf5\x99\xa8\x2b\x84\x24\xab\x6f\x8c\x05\x13\x6a\xb5\xc0\x73\x23\x10\x46\xb5\x4e\x96\xb0\xf4\x1d\x3b\x0d\xd8\xa0\xe2\x52\x2b\xed\xc2\x68\x23\xe5\x4f\x62\x9c\x02\xb9\xf8\x2e\x08\xa8\xbe\xa2\x34\x78\x54\xec\xe1\xfd\xf0\xd9\x90\x20\xb3\x96\xc4\xdc\x09\x88\xfc\x30\x96\x77\xf5\x40\x01\x0c\x2d\xa8\x09\xb8\x62\xe8\x61\x47\x65\xa8\x14\x43\x9f\xc4\x1c\x44\x08\x3d\x02\xe2\xe1\x7b\x89\xb2\x26\x7f\xc4\xa3\x15\x1f\x7a\x95\xc7\x85\x9f\x03\x93\x40\x4a\x68\x7e\xb3\x9d\x23\x66\x34\x92\x76\x21\x17\x44\xbf\x1a\x13\x7c\x59\x0a\x44\xd9\xf4\x70\x4b\xd2\x8a\x8e\x9e\x93\xb3\x86\xec\x06\x65\x8c\x5b\xea\x36\x04\x5e\x8c\x48\x26\x3b\x0a\x7b\xb6\x83\xe4\x00\x0e\x42\x22\x32\x82\xb1\x69\x98\x3c\x89\x71\x51\xd5\x43\x0e\x3f\xfa\x51\x01\x10\x67\x03\x0f\x0a\x87\x1e\xcb\xd8\xca\x88\x28\xf7\xaf\x22\xd6\x8e\xd1\xa5\x60\x37\x5e\xc1\x30\x2c\x4f\xfc\xad\x80\xe6\x4a\xa0\x6e\xa3\x0d\xff\xd4\xcc\x4f\x83\x07\x0a\x64\xfc\xfc\x7c\xf7\x52\x89\xef\x07\x01\x0e\xd9\xa7\x73\x86\x6b\xf0\xf8\xc2\xc1\xf9\xd6\x20\x4e\xd3\xcf\x95\xa1\xe1\x76\x4e\x96\x83\x0a\x1e\xa0\x58\x89\xb1\x7d\x24\x26\xf9\xf3\xd9\x29\x72\x60\xba\x32\xa8\x00\x1f\xad\x0d\xc1\xc8\xfe\x9c\x18\x6b\xbd\x85\x88\xec\x87\xc8\x89\x80\xf4\x21\x38\x72\x5c\xbb\xbe\x06\x3b\x6e\x0c\xa7\x45\x36\x65\x6a\x4f\x2f\x04\x2c\x75\x08\x71\xca\x34\x2d\x49\xe0\xb6\x7f\xae\xa5\x0b\x46\x9d\x64\xac\x1d\x11\x8e\x67\x1c\xd4\x38\x45\x0b\x0a\x80\x8a\x5a\xe8\x2f\x63\xb6\x6a\x10\xdd\x0c\x0e\x63\x47\xa9\xe2\xad\x9b\x04\x12\x38\xfa\x11\xfd\x9d\x0a\x18\xa1\x81\xdb\x07\x43\x62\x3d\x42\xad\x9b\x28\x74\x44\x31\xd9\x3b\xa4\x53\x6f\xcc\x0e\xf2\x72\x3e\xe4\x60\x0d\x20\xbc\xd2\x31\xfa\x20\xee\x43\x6d\x16\x2b\x4b\x4a\xc8\x5d\xf0\x0d\x0c\xcd\x35\xed\xab\xd8\xd5\x5d\xbd\x92\x1a\xd2\x4d\x7f\x06\xfd\x69\xb9\x1d\x0d\xe3\xd3\x68\xf5\x30\x6a\x02\x78\x79\xbe\xdb\x9b\x48\x79\xba\xd4\x3a\xc2\x54\x85\xf2\xa1\x0f\x41\x08\x11\xe5\xe3\xdf\xef\x90\xe3\x75\x10\x61\x63\xc6\x29\x17\x79\xb4\x8e\x91\x80\xec\x73\x92\xe3\x6f\xdc\x98\xbc\x61\xcb\x08\x53\x47\x29\x24\xd9\xf5\xad\x0b\x75\x78\x16\xf9\xb7\xf7\xba\xbd\x22\x0c\xb3\x1c\xab\x6d\x54\x71\x00\x76\x92\xb3\xcf\xe2\x8e\x4e\x40\x5b\x55\xb7\x6a\x34\x1f\xe8\x33\xf9\xd4\x59\x0a\x6e\x31\x04\x69\x0a\x7b\x4e\x14\x0e\x2f\xca\x54\x6a\x35\xcd\x66\x08\xcf\xf8\x01\x96\xa7\x63\xe7\xb5\x8b\x58\xb5\xa3\x11\xcc\xbd\xe5\x39\x39\x40\x30\x05\x36\x8c\xa1\xbc\x97\x7c\x0c\x0f\xe6\xf1\x3d\xbf\x11\x0c\x52\xe2\x88\xf9\xf0\x9f\x09\xb8\xd8\x3c\xc9\x0d\x76\xe6\x6c\x62\x19\xd2\x32\xe4\x38\xdd\x14\x6f\x86\xe0\x1e\x0d\xdf\xe6\x90\x51\xfe\x85\x40\xbb\x46\x03\x17\x3b\x44\xfb\x3a\x6c\xf8\xfd\xdb\x00\x05\x92\x81\x2c\x65\x63\x64\xb7\x2d\xac\xc0\x17\x42\x99\x02\x6c\xc0\x0a\xf2\x89\xfc\xcc\xf4\x6d\xe5\xf1\x97\xe7\x88\x10\x58\x19\x08\xb4\x4c\x4c\x3d\x1e\x23\xb9\x85\x9e\x88\xc0\x2b\xde\x59\x80\x24\xc2\x7d\x03\xb2\x6e\x15\xc2\xa3\xae\x7b\xe9\xf1\xa8\xb8\x12\x29\x70\xf1\x42\x53\xd0\x0b\x91\xe5\x34\xa5\x06\x86\xef\x4a\x77\x2e\x64\xab\x44\xdb\xd4\x50\xdd\xef\x23\xd4\x7c\x94\x25\xe3\x81\x00\x4a\x0f\xdb\x70\x16\x2b\xc2\x54\x04\xf8\xed\xa0\x55\x59\x03\xef\xef\x34\xb0\x36\x3f\x14\x9f\xf4\x85\x1b\x71\x6a\x2c\xe4\xb9\x73\xe5\x99\x1c\xa6\x4a\x54\x60\x8f\x4a\x62\x20\x1c\x4c\x28\x37\x90\xba\x1e\x0b\x71\x89\xa0\x79\xf9\x4b\xc1\xae\x04\x26\x4d\xb3\xb9\xac\xc2\x7e\x0a\xe9\x5d\x67\x37\xf3\xc6\x07\x57\xa7\xd5\xe0\x0f\x9d\x3c\x84\x55\x82\x79\x1f\x33\xc3\x4b\x43\x0d\x6d\xb1\xa2\x27\x19\x00\x2a\xe0\xaa\x09\xd0\xe3\xc3\x51\x16\xf8\xc6\x8c\x64\x0b\x6b\x46\xd9\xfd\x82\x0f\x44\x76\x02\xf6\x99\x4a\x74\xc1\x11\xbe\x53\x06\x84\x04\x1e\xa8\x30\x4c\x85\xfe\x8b\x64\x69\xb2\x12\x53\x02\xc0\x42\x18\x3a\x8d\x41\x67\xa3\xc7\xef\xe5\x87\x52\x9d\x58\x59\x96\xbb\xc2\xa2\xb5\x5e\x83\x82\xbc\x40\x99\x4b\x0a\x09\x1f\x53\x24\x6a\x88\x2d\x83\x57\x27\xbf\x39\x83\x23\x5a\xb9\x4b\xa2\xbc\xcc\xd4\xe7\x85\x49\x20\x95\x65\x68\x36\xa7\x47\x74\x99\x1f\x83\x41\x71\xa7\x7e\xde\x33\xf9\xcd\x12\x39\x11\x95\xb6\x2f\x42\x12\x16\x48\x21\xd3\xfe\xa1\x01\xa9\x49\x5b\xc5\x88\x06\x63\xe3\x12\x15\x24\x71\xb7\x86\xe0\xd4\xf5\x67\x46\x12\x8d\x64\x85\xe8\xa0\x93\xa7\xd0\x75\x4d\x63\xf7\x1f\x8b\x03\xa1\xe2\x48\xe7\xb7\x11\xe6\xc9\xb4\xbb\x30\x99\x0c\xef\x54\x02\x32\x16\x46\x6d\x84\x8c\xac\x9e\xbc\xa8\x08\xf5\x60\xdf\x36\x6b\x7b\xf9\xba\xd1\x3a\x3c\x9a\x16\x6e\xe3\xaf\x6b\xc4\x64\x44\xc3\xcd\x64\xe2\x46\xde\x1e\x0d\x71\x0f\x4b\x4d\x43\x4f\xed\x64\x46\xdf\x85\x3e\xea\x96\x45\x0e\x38\x45\xa5\xb2\x72\x12\xae\xdd\x74\x9a\x79\x2e\xbc\x47\x84\xe7\x16\x78\xa1\xf9\x9b\x42\x35\x43\x66\xa7\x87\x12\xa6\xf8\xed\x72\x21\xf9\xbb\x04\x68\x7b\x07\xf8\xea\x62\x23\xca\x10\x12\x7a\x70\x5a\xd3\xd9\x90\x7a\x4e\x64\xb2\x2c\x8a\x67\x4d\x59\x14\xfd\x8a\x95\x95\xad\x96\x7d\x97\x29\xed\x24\xa8\x4f\x3b\xfa\xbc\xb6\x2d\x1b\xc0\x20\xb5\x79\x71\x7d\x66\x71\x37\xa1\xb3\x9a\xd6\xb5\x13\x0c\x48\x53\xac\x84\xf6\xcd\x31\xfd\x99\x52\x91\x26\x04\xf1\x7e\x5a\xef\xf5\x4f\x28\x0f\xe5\x8a\x0e\xbc\xe0\x5d\x34\x9e\x66\x9c\x46\x4e\x16\xa2\x83\xd8\x48\x50\x67\x1d\x36\xb5\x79\xba\xfa\xce\x00\xfe\x31\xc3\x95\xe0\x17\x96\x94\x92\x4b\xac\xbd\x2a\x9d\x86\x52\x01\x5b\x41\x03\x95\x31\xa4\xe0\x12\x93\x1c\x93\xa5\x84\x41\x50\xc8\x94\xab\x18\xf1\x53\xe7\x1e\xe6\x24\x8f\xc3\x2c\x09\x41\x1b\x27\xa3\x62\x43\x70\xb4\xb3\xa1\x09\xe9\x50\x02\xe6\x34\x91\x3e\x59\x21\x4f\x76\xcb\x5e\x5c\x73\x28\x72\xbf\xc2\xd0\x8a\x88\xdb\xa8\x6e\x99\x0d\x70\x29\x0a\x07\x70\x69\x94\x35\x80\x55\xc0\x81\x59\xa8\x8d\x5a\xcd\x44\xf3\x74\x59\x88\x3a\xe8\x31\x1d\xe8\x8e\xec\x51\xab\x96\xc2\x15\x9a\x71\x37\x2f\x52\x6b\x0a\xe6\x1e\x40\x22\x42\xa5\x07\x3f\xd0\x90\x86\x81\x02\x1e\xef\xd3\x6f\xac\xea\x18\x78\x34\x09\xd9\x11\x19\x73\x28\x4a\xee\x28\x71\x6f\x63\x5e\x1e\x45\x63\xd1\xa2\x34\x2c\x88\x9c\x14\x98\xd0\x93\x6d\x58\x68\x13\xb8\x1b\xae\x13\x06\xed\x88\x28\x14\xf3\x62\x17\x87\xd8\x20\x12\xc9\x69\xe5\x6d\x93\x45\x0d\xb1\x65\x26\xa0\x35\x43\x89\x08\x96\x31\xa9\xc2\x79\xa1\x99\x76\xce\x49\x01\x20\x5a\xc3\x26\xb0\x79\x01\x65\x82\x91\x51\x60\x6f\xf4\x76\x59\xd4\xdd\x49\x48\xde\xb8\x58\xf9\x42\x04\xeb\x7b\xce\xa0\x09\x30\xaa\x5c\xcf\x23\x41\xa7\x34\x24\xe6\x8f\xff\xc4\x38\xd0\x83\xce\xa8\xcd\x0c\x8d\xe3\x06\xa5\xb5\x5a\x03\x68\xb2\x4e\x7d\x68\xd8\xa9\xec\x25\x50\xbb\x7d\x40\xef\x0d\xe0\x0a\xa5\x3f\xfa\x35\x64\x8a\x89\x31\xa6\x7f\x39\x1c\x88\x2e\x50\xc5\xa0\x6a\x1e\x63\x6f\xec\xc0\x8e\xcc\x04\xc5\x57\x48\xc2\x57\x09\x47\x91\xb0\x98\xc7\x21\x4e\xa4\x34\x4b\x00\xa9\x9a\x01\x0e\x81\xe8\xf1\x8f\x29\x66\xd3\x3e\x18\xbf\x0e\x2d\xf7\x0f\x74\x16\xec\x6e\xf4\x59\xb8\x34\x1c\xcb\x2a\xd9\xe3\x63\xa8\x4e\xc3\x09\xd8\x61\xf6\xd6\x87\x7f\x44\x27\xe0\x1e\xb9\x1e\x0b\x26\x5f\x30\xe9\x16\x4d\x26\x20\x5e\xda\x98\xc4\x62\x06\x2d\xc2\x39\x80\xa8\x3f\x65\x1d\xb1\x9d\xbd\x6e\xa6\xd7\x91\xde\xb7\x0d\x18\x84\xef\xf2\x82\x87\xa5\x45\x9d\x2c\xaf\x64\x21\x99\x45\x7c\x4b\x4f\x50\xd0\x20\x9c\xe6\x3a\xea\x8d\x1d\x59\x82\x6a\xd9\xad\x14\x4f\x7b\xac\x0b\x1c\x43\x66\x6d\x14\x21\x58\x84\xed\x0d\x77\xbc\xba\x32\x5c\x7e\x95\x80\xb6\x68\x26\xde\x3b\xea\x8d\x9d\x67\x50\xd2\xb2\x78\xa1\x7a\xbb\x5f\x99\x39\xd3\x75\x11\x01\x44\x79\xb9\x01\x22\x06\xc4\xc6\xcc\x48\x84\xca\x0a\x65\x79\x7c\xca\xa0\x16\x27\xb0\xc4\x5b\x71\xaa\x1e\x72\x7c\x23\xe4\x9a\x52\x8d\x72\xb2\x5f\x9a\xfc\x8a\x95\xb6\xaa\xa6\xcd\x0e\x6b\xf0\x52\x3d\x79\x38\x14\x98\xed\x58\x5d\xb0\x38\x77\xe9\x15\x8e\xb7\xa8\x0e\x3d\x51\x2d\xd3\xd7\xcd\x07\x5e\x66\xea\x12\x36\x2c\x4a\x94\x45\x92\x43\x95\x30\x20\x47\xd4\x2f\x49\x00\x94\xd1\x82\x30\x96\x34\x08\xe5\xd8\xc4\x80\xfa\xf6\x63\x00\x39\x5d\x00\x91\x93\x22\x85\x81\x39\xc3\x84\x50\x8e\x2a\xc2\xf0\x52\x23\x88\x4c\x8f\xc9\xbb\x58\x7a\x05\xa2\xc0\x34\x33\x84\x38\xc9\x2f\x17\xb4\xdf\xb9\x7a\x65\x46\x24\x31\xaa\x5f\xc0\xf9\x49\x56\xc4\xff\x46\xd6\x11\x32\x51\xc9\x11\x58\x29\x0f\x2e\x98\x54\xe4\x63\x66\x67\x57\xd2\xf3\xf9\x55\xbd\x86\x01\xea\xf8\x76\x21\xb2\xb8\x21\xcd\xc0\x0d\xcb\xed\x36\xc8\x42\x22\x26\xe0\xc5\x9e\x06\x67\x10\x74\x85\x9d\x39\xea\x0c\x08\x9c\x68\xa3\xa0\xb4\xb6\x64\x45\x70\x6a\x19\x2d\xdb\x81\xca\x81\x2b\xa0\x7e\x99\x5e\x46\xe3\xec\x73\x03\x52\x25\x61\x34\xed\x2f\x7d\x30\x00\xf0\xa4\x15\x9b\xa1\x96\x0b\x15\x88\x51\x27\x03\x94\x60\xe1\x45\xe6\x05\xb5\xc1\x01\x6e\xc9\xb8\xdb\xd9\x95\x74\xd5\xb1\x80\xcc\x57\x7d\x39\x0d\xd5\x0f\x5f\xa4\x32\x50\x53\x30\x9d\xd4\x9e\xc7\x02\xe4\xa4\x10\xec\x21\x0e\x25\x52\x70\xfd\x42\x81\x05\xf1\x09\xa9\x71\x09\x3c\x14\x97\x24\x20\x89\x15\xc2\xf1\x13\xa8\x14\xab\x22\xf1\xd1\x8a\x6d\x7c\x07\xb8\xaa\x17\x03\x42\x70\x5a\x14\x2a\x64\xa3\xf5\xc4\x9f\x5f\x7e\xd6\x2f\xe0\x93\xe2\x60\x0a\x1f\xe4\xbb\xe8\x06\x25\xa4\x11\x37\x79\x81\x2b\x4d\x22\xfa\xf2\xaa\xf3\x10\xa8\x8e\x66\x8d\x66\x6c\xdd\x6e\x8d\x06\xa9\x0e\xb9\x93\x59\xbd\x6c\xde\x20\x53\x79\x03\x02\x61\xc6\x1f\x55\xe4\xb9\x92\xcd\x2b\x4e\x50\x8f\x5a\xbf\x40\x8d\x5f\xdb\x81\x9f\x13\xa3\xab\x3b\xa8\xea\xf7\xfa\x44\x54\x08\xa4\xf9\x18\x00\x14\xcc\x59\x47\x3a\x49\x95\xdd\xf2\x44\x22\x69\xa1\x09\x9e\x12\xe6\x2b\xd8\x39\xc0\xb7\x49\x4c\x7b\xd0\x8b\x3e\x81\xf2\x93\x41\xf4\x01\xb0\x44\xbd\x34\x45\xf8\xc7\x45\x93\x71\x09\x16\x57\x92\x4a\x10\x93\x65\xd1\x45\x7c\xa4\x39\x81\x36\x70\xbf\xe2\xa4\x58\x22\x48\xcb\x4d\x49\x27\x08\x24\xdb\x7c\xb0\x4b\x27\x3c\xb8\xae\x74\x86\x4e\x7b\x49\x1e\x37\x69\x60\x85\xa5\xab\x3c\x4a\xf8\x6f\x91\x07\x2d\xb6\x20\x9f\x20\x31\x02\x22\x6e\x48\xe0\x87\xc6\x3d\x43\x61\xf9\x69\xe9\xc7\x2f\x01\x09\x83\x68\x83\x9a\x14\x32\x6d\x1f\x06\xde\x07\xca\xc4\x10\x19\xc2\x9a\x50\x90\x38\xbd\xac\x53\x1f\x2d\x27\xbc\x16\x06\xa5\xbb\x6c\xfd\x98\xa3\x70\x7b\xe1\x76\xe0\x75\x98\x36\x33\x48\xdf\x3a\x10\x7d\x7b\x08\x72\x4e\x98\x88\x0c\x02\x32\x10\x2c\x10\x33\x2f\xc5\xfa\x7d\x3f\x10\x00\xc4\x5f\x78\x87\x8d\x9e\x16\x9f\x15\xf0\x16\x71\x4b\x78\x3f\xa1\x08\x4f\x1b\x4e\x72\x23\x23\x9c\xe4\x6c\x40\xdb\xb5\x60\x3e\xaf\xcd\xf6\xec\x46\x71\xd6\x42\x3f\xd3\xc0\x59\x89\x66\x9a\x22\x25\x30\x71\x3f\x46\x3d\xc8\xcc\x4f\x18\x2a\x01\x84\x87\xc3\xa6\x3a\x43\x78\x2a\xe3\xba\x19\x8c\x8d\x9d\x18\x68\x58\xd4\xa0\x99\x8f\x7e\x55\xf3\x1f\x84\x19\xbb\xc4\x8c\x19\x3e\x9e\xe0\x82\x01\x00\x00\xff\xff\x90\xb5\x71\xf1\x6f\x4f\x00\x00") +var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x8c\x90\x75\x4c\xdd\xe1\xb3\xe6\xbf\xb8\x3b\x07\x87\x1e\xe0\xe0\xee\xee\xee\x4e\x71\x77\xf7\xe2\xc5\x5d\x0e\xee\x2e\xc5\xdd\x8b\xbb\x17\x28\x0e\xc5\x1d\x4a\x81\x42\x5b\x7c\xb3\xbf\xbb\xd9\x4d\xee\xfd\x67\x3f\xc9\x9b\x37\x33\xf3\xcc\xcc\x93\x71\x55\x03\x00\x1c\x55\x00\x80\x05\x60\x01\x78\xe0\x7f\x83\x00\xfc\x17\x30\x00\x14\x06\x00\xe0\x01\x65\x75\xe0\xbf\x01\xf3\x7f\xfe\x84\xbb\xf7\x8a\xff\x5e\x03\x00\x7a\x40\x0e\x50\x06\xf4\x01\x75\x40\x1e\x50\x00\xa4\x00\x35\x40\x15\xd0\x02\xc0\x80\x3c\x60\x0e\x38\x01\x36\x80\x13\x60\x0f\xb8\x00\xb6\x80\x27\x00\x00\x98\x80\x26\x60\x0d\xd8\x02\xde\x80\x13\x60\x0e\x78\x00\x00\xe0\x0b\xe8\x02\xd6\x80\x07\xe0\x09\xd8\x03\xae\x80\x0b\x00\x06\x38\x00\x56\x80\x1d\x60\x07\x38\x00\x21\x40\xfd\x3f\x93\xfe\x2b\xfa\x7f\x59\x3b\xc0\x15\xf0\x02\x2c\xff\xa3\xf7\xf9\xbf\x1d\xac\x00\x1f\xc0\x0e\x08\x01\xce\x80\x39\xe0\x08\x58\xff\x47\x63\x03\xb0\xfe\x67\xbf\x05\xc0\x09\xb0\x02\x3c\xff\x79\xfc\x00\x17\xc0\x09\x08\x00\x00\xc0\xff\xff\xed\x1c\xfc\x3f\x7c\x03\x80\xa4\x96\xdc\xff\xb8\x14\x1c\xe0\xd3\x05\xf0\xf8\x00\x3c\x81\x00\x8b\x11\xee\xdc\x79\xdc\xa4\xd9\xfa\xc7\x29\x3b\x25\x77\xc5\xcf\xbe\x54\x3a\x82\x1e\xcc\x6c\x99\xdc\x46\x79\xdb\x20\x4c\x74\x27\xfb\xa5\xad\xef\xb7\x31\xd3\xb9\x58\x88\x05\x32\x13\xca\xb2\x2a\x6d\xe4\xe3\x21\xf8\xa7\xba\xf4\xb6\xcb\x1f\x89\xc8\x49\x8d\xbe\xdf\x31\x79\x28\xb1\xa3\x6a\x0c\x35\x4e\x72\xb1\xa8\x89\x86\x49\x4d\x7c\xb6\x8a\xb3\x2d\xb7\x0e\x32\xfa\xc7\x9d\x79\x68\x28\x6d\x45\x1a\x19\x8f\xe4\x36\xf1\x51\xa3\xf8\x41\x7c\xf3\x21\x59\xd1\x10\x17\xb3\x4a\x25\xb5\xf2\x43\x54\x4f\x85\x8e\x44\xf8\x42\xc1\x04\x36\x32\xb1\xc3\x63\x3d\xab\xdb\xf0\xb1\x99\x63\x2c\xa3\xd4\xad\x02\xf7\x7a\x2d\x3e\xb4\xc8\x15\xd9\xe8\x0f\x4a\xc6\xe0\xa7\xbc\x83\x41\x1b\x9f\xb1\x31\x3d\xe9\x3f\xed\x4e\x92\x24\xf1\x05\xb6\x1c\xb1\x86\x6c\xe6\x38\x5d\xe4\x69\x68\x9c\x83\x4e\x0f\x99\x32\x05\xef\xcd\x45\xd3\x88\x9c\x47\xbf\xff\x01\xb6\x9c\xed\x02\x75\x2a\x23\x71\x88\x08\x5f\x31\xa2\x29\x52\xfc\x31\xe5\xa4\x75\x24\x1b\x11\xdb\x4f\x24\x2a\x21\xca\xdd\x29\x41\x7a\xd3\x19\x36\x2f\xfe\x42\xaa\x9c\xc9\x3b\xa6\x03\x85\x7b\x69\x42\xf4\x49\x8e\xe5\xbd\xe2\x92\x86\x3d\x94\xd9\xbc\xea\x5f\xb8\xbe\xca\xa1\x62\x47\xcb\xe0\x23\x19\x23\x07\x4c\x3e\x0c\x2a\x7e\x64\xf3\x4c\xad\xe5\xae\xa1\xb9\x88\xdb\xda\xcd\x21\x2d\x3b\x8b\x18\x36\x25\xdf\x0a\x22\x0b\xb2\xbc\x51\x63\xe1\x76\x52\x5f\x34\x97\xd6\x23\x9e\x34\x1c\x9e\x86\x73\x2f\xf7\x01\xf2\x10\x88\x18\xb7\xf4\x98\x87\xbc\x31\x18\x51\xa3\x56\x07\x3b\xaf\xfd\x8b\xb9\x14\x95\x37\xc9\x83\xee\x50\xd9\x8f\x89\xc3\x57\x16\x75\x1d\x74\xfc\x1c\x5c\xfa\x19\x4a\x08\xa2\x8e\xbe\xab\xb1\x0b\x3d\xb2\x53\x1e\xb1\x50\x7a\x00\x78\x38\x88\x78\x54\xc4\xb4\x16\x98\x00\x8c\x85\x13\x33\x8b\xd9\xa1\x06\x34\x3d\x3f\x90\xcd\xe4\x07\x08\x46\xb9\xeb\xad\xea\x46\x17\x79\x57\xb3\xc6\xdb\xff\x65\xb9\xe6\x52\x01\xa9\x69\xf5\xef\x42\xcd\x71\x09\x25\xf1\xe1\x95\x63\x1c\x2d\x83\x62\x00\xab\x17\x54\x4b\x2c\xa7\xb6\xc0\x5e\xab\x2f\xa4\x7c\xd6\xca\x5e\x57\xfa\x0f\xc7\x27\xb0\x45\x46\xbe\x31\x62\x7a\xbd\xf4\x05\x63\x3c\x8d\xbb\xe7\x8c\xba\xf4\x40\x69\xed\x92\x2f\xec\x6c\x0c\x08\x58\x76\x43\x95\x91\x33\xcb\x7e\x39\x67\xfa\xf3\x49\xb0\x58\xb7\x6b\x9d\x51\x4f\xd8\x70\x07\xc1\xe9\x16\x1a\x86\x43\xaa\x52\x4d\xbc\x87\x8a\xfb\x87\x9c\x75\x77\x61\xbe\x04\x57\x0b\xce\xae\xb4\xe1\x9b\xbb\x63\x4e\x1f\x55\x1f\xea\xb0\x22\xb8\xb4\x44\x45\x9b\xf7\x3b\xd8\xb2\xed\xd5\x31\xd6\xfc\xc9\x7f\xb9\xa6\xcd\x85\x88\xd4\xbd\xfb\x97\x33\xfb\xe1\x9e\x9b\xb4\xe2\xd8\xac\xcf\xd3\xaf\xca\xc2\xf9\xa1\xf7\xa5\x75\xd9\x53\x9f\x50\xfa\x30\xad\x81\x24\x7a\x44\xd8\x83\x65\x15\x85\xa8\xef\x1d\xb2\x19\xd8\x39\xfb\x88\x4a\x5f\xe7\x9c\x85\xe5\xf1\xda\xd0\xc6\xfe\x2e\xb8\x07\x07\xaa\xb4\xe8\x81\xcc\x82\x15\x3c\x43\x3e\x7c\x40\xa3\x4a\x5d\x18\x12\x4a\xa0\x0e\xe3\x6f\xc5\x9f\x41\xf6\xc5\x1f\xcf\x8e\x62\x8a\xda\x9c\xde\xd9\xfa\x89\x78\xed\x6c\x46\x8e\x85\x3e\x36\xc9\xa2\x80\x60\xf6\x5b\xf4\x94\x6a\x86\xe8\x58\x04\x73\x13\x8e\x25\x32\x5e\x92\x5e\xf4\x37\x9c\x86\x75\x8b\xbe\xb5\x6d\xdc\x51\x7e\x1c\x1f\x5a\x25\x2b\xdc\xb3\x69\x8d\x43\x18\xad\x32\x48\x69\x17\x45\xc0\x5f\xb3\xd7\x3b\x54\xaa\x6c\x9e\x10\x19\xf5\x3c\x5d\x73\x32\x11\x87\x56\x32\x87\x1d\x23\x15\xe6\x2c\xfa\x20\x7d\xe9\x87\x69\x28\x22\x26\xa2\x94\xe9\x97\x70\x9c\x98\xfc\xba\x00\xee\xf6\x8f\x62\xb9\x11\xaa\x67\x11\x73\x54\x10\xe2\x7f\xd4\x47\xaf\xd2\x69\x9f\xbb\x51\x04\x15\xb9\x11\x07\xd9\xaa\xf2\xee\xc3\x7f\xe6\x76\xc8\x91\x6e\x2b\x0a\x19\x8f\x7e\x3a\xbb\xda\xb2\x6a\xc3\x14\xcc\x96\x17\x08\x21\xc6\x6b\x1b\x6e\xb8\x0e\x35\x5c\xae\x62\x1c\x2e\x56\x9a\x43\xcd\xa1\x7e\xe6\x97\x80\x98\x9b\x19\x6f\x16\xb2\x68\xcb\xf0\xa1\x63\x7d\x86\xa0\x0b\x56\x78\xba\x0d\x47\xd9\xa0\x28\x43\x82\x0c\x32\x33\xeb\x43\x2d\x8c\x0f\x2d\xae\x79\x49\x96\x4f\xfb\xe5\x5f\xef\xc3\x41\x1e\xbe\x2c\x5e\x18\xe1\xb9\x50\x07\x5d\x7b\x15\x87\x14\x2c\x55\x13\xc3\x32\x9c\x56\x7e\xb8\x62\x51\x29\x17\x3e\x65\x0c\x68\x7e\x32\x2d\x13\xd7\x47\xde\x44\x39\xe1\x1f\x92\xa0\x3a\x5c\xb5\xda\xb0\x87\x0d\x4e\x09\xc1\x9a\xe3\xd6\xb8\x54\xa5\xa8\x64\x11\xba\x54\x91\x47\xc5\x01\xe8\x9b\xe4\x78\xb8\x1d\x94\xb3\x6d\x9a\xca\x2a\xaa\x85\x78\xed\xd7\x2b\xca\x34\x39\xca\x3c\x78\x4b\x4d\xd8\x7e\x3b\x6e\xab\x74\x6c\xaf\x62\x52\xc9\x0d\xd7\x9e\xb9\x1d\xa6\x4e\xf7\xe7\xab\x6a\x8d\x49\x31\x09\xb7\xa6\x9d\x2f\x2e\x0b\x62\x5c\xb1\xa4\xd6\x46\x6a\xfa\xc5\xae\xa1\x80\x4e\x1e\x98\x4a\xc2\xa5\x1c\xe5\xec\xc8\xd5\x8e\x09\x88\x92\xad\x7d\xdc\xda\xe1\x20\x28\xab\xc5\xcd\x6a\xf2\x10\x0e\x0e\x50\xad\x1c\x15\xc0\xf8\x9d\xc5\xed\xa1\x90\x99\x3d\xbb\x05\xd5\x79\x35\x73\xfb\xf0\xdb\xdf\x0b\x77\x6a\x68\x06\x79\xc3\x79\xe4\xd6\x16\xcb\x3b\xb5\x4a\xa8\x3f\xc1\xa0\xa5\x60\x25\x90\x5f\x1a\x1d\xad\x48\x8b\x1c\x5d\x65\x4d\x49\x28\x07\x76\xb2\x1a\x1f\x09\xae\xf2\x65\xa6\x56\x3c\x98\x94\x06\x19\xf5\xa9\xc0\xd7\x47\x5c\x22\x0a\xdd\x1e\x41\x01\x2f\x83\xf6\x3b\xde\xe0\xc8\xd7\xcd\xb8\x18\xee\xb0\x8e\xc7\x64\xcb\x66\x0d\xce\x20\xf6\x6e\xd6\x2c\xb9\x96\xe0\xc2\xec\x43\xbf\xe2\xb9\x61\xea\x62\x70\x05\x01\xf2\xbb\x01\xcb\x40\x56\xc5\x3c\x4b\x09\x50\x3b\x5d\x58\x9c\x40\xe3\xb0\xcc\xe0\x8d\xc9\x56\x8f\x47\x41\x90\x4f\xe2\x13\x65\x9e\x53\xae\xc0\x6c\x0b\xbf\x14\x86\x70\x5d\x85\x10\xbe\x47\xb1\x0a\x4c\x50\x35\x3a\xd1\xc2\x1d\xf0\x6f\x8b\x37\x6b\xd0\xa5\x61\x88\x35\x87\x92\xcf\xef\xbb\xab\xf1\x3b\xc9\x45\xab\x59\x8f\xa7\xe7\x3b\x38\x28\x39\x80\x48\xc1\xb4\x55\x8b\xab\xcf\xef\xef\x5d\xc8\x78\x64\xa8\xb1\xd8\x3f\xcb\xa0\xdf\x2d\x31\xe7\xc9\x31\x70\x4a\x65\x89\x2e\xbf\xc9\x19\xfa\x36\x27\xca\x9f\xe6\xa8\x04\x61\x4c\x42\x8d\xf9\x4b\xfd\x06\x4b\xad\x6f\x63\xd6\x79\x71\x9a\x0c\x45\xb8\x60\x10\x0d\xdf\xc2\xe0\x96\x72\x65\xff\x11\x2d\xea\x9e\xc9\x1b\x5f\xb8\xfd\xa6\xd5\x9f\x34\xfa\xf8\xbb\x51\x77\x45\x1f\xc5\x74\x5a\xfd\xcc\x4b\xdd\x30\x02\xbc\xfb\xaa\xee\xbd\x23\xca\xbf\xb2\xc6\xdb\x48\xbe\x7f\x40\x38\xa8\x17\xe6\x62\x53\x39\xf1\x8e\x78\x6d\xff\x4f\xac\x80\x1b\xe5\xa1\x7b\x36\x88\x7c\xf9\x5c\x98\x28\x84\x1b\x05\x7c\x38\xdf\x61\xa3\xbb\x9f\x72\x25\x67\x6d\x11\x94\x92\x8b\x56\xf6\x7b\x20\xca\x13\xcd\x7e\x09\xa6\x26\x35\x40\x4d\xe6\x7e\xd6\x85\x3a\x92\x56\x43\x9d\x57\x1a\x81\x11\x41\x12\x5e\x59\x12\x88\xf8\x50\x8f\x48\xca\x11\xa9\x45\xa8\xe9\xf8\x57\xfa\x6f\x7b\x58\x97\x9e\x5e\xab\xa8\x70\x20\xbb\x50\x46\xdb\xe5\x66\x4c\x08\xcf\x4f\x1c\x9e\x0d\xa9\xe0\x7f\xcb\xdc\xe5\x4f\xbf\x7b\x66\xa6\xc4\xae\x26\x05\x89\xd4\xbb\x83\xa8\xda\xb6\x68\x36\x56\xbc\xbd\x78\xb2\x7a\xe3\x14\xce\x28\xdb\x22\xf3\x05\xfa\x9d\x46\xde\xe0\x21\x94\xc5\x2d\x49\x7e\x2a\x63\xda\xcb\xa2\x21\xb7\x74\x9d\x28\x48\x6a\x3b\x5e\xee\x88\xf0\xe6\x48\x62\x26\x07\xff\x8a\xc8\xc8\x64\x9c\xf3\xc0\xbb\x2d\x2d\x52\x9b\x58\xe9\x9e\x17\x5a\x81\x2c\x2e\xf2\xe8\x1d\x1f\x7a\xfe\xb9\xa7\x77\x52\xeb\x7b\x85\x60\x1c\x5d\x45\x3a\xa2\xa4\xdd\x0e\x77\x13\xdc\x24\x95\x6e\x4f\x34\x14\x79\x56\xd0\x10\x06\x4d\xc4\xe5\x58\x48\x7d\x64\x0b\xac\x36\x93\xcd\x30\x6a\xb1\x60\x8e\x8d\x9d\x4a\xe6\x94\x2f\x7d\xe0\xac\x61\xfb\x23\xc0\x4d\x46\x8d\x16\xfc\xc3\xba\x6b\x0f\x1b\x3b\xfa\x35\x6a\xda\x32\xa6\x79\xb4\x9a\xea\x07\x91\xc6\xe1\xc1\xe0\x5e\x2c\xdf\x91\xe0\x92\x41\xb9\x02\xc1\x6a\xbc\x31\x4d\xe9\xf6\x9e\x7e\x1e\xe3\xac\xa4\x10\xbf\xb9\xac\x6f\x1c\xc2\x74\xb5\xc5\xa1\xe9\x5c\x51\xcb\x2e\x0b\x06\x63\x27\x31\x09\x1c\xe2\x15\x43\x3a\x37\xd6\x96\xd8\x30\xb6\x43\x19\x91\x78\x16\x76\x06\x8f\xc6\x67\xba\x9a\x2b\x75\x7c\xfe\xfb\xe1\x9f\x72\x1e\xb0\x6d\x65\x33\x0c\x45\x0b\xc2\x72\x31\xb2\x08\xe9\xdc\x1d\x73\x72\x01\x7f\xdb\x79\xe3\xef\xce\xb2\x84\x0e\xcb\x76\x96\x63\x3d\x0b\xe3\x20\xfe\x34\x7f\xdc\x93\xbb\xa7\x0c\xeb\x51\x25\x8b\x62\x29\xd4\x54\xa5\x55\xa8\xa1\x2f\xc2\xec\x8c\xec\x29\xac\xb0\x5c\x88\xac\xb7\x8f\xaa\x43\x53\xbc\xb2\x1a\xb6\x88\xcc\x7f\xb8\x75\x57\x56\xd1\xba\xb1\x77\x07\xbb\x3b\x70\x11\xe9\x3e\xdc\x32\xcf\x4d\xb7\x84\xb6\xc8\x01\xdd\x80\x0e\x86\xde\xcb\xf2\x22\x20\x69\xaf\x73\x76\x29\xa2\x82\x32\xa5\xd4\xf5\x20\xfe\xfb\x85\xa0\x6b\xdd\x02\x70\x95\x14\xbe\x4f\x4d\x0f\x0f\xeb\x21\x0f\x11\x9f\x33\x3e\x9b\x8d\xc1\x8e\x00\xea\xa2\xfa\xcc\xcf\x17\x4e\xce\xf8\xae\x3f\x98\x09\x2f\x4c\x68\xb7\xd0\x7a\x70\x88\xac\x5c\x21\x5f\xe7\x3f\x53\xc0\x45\xe8\x96\x8f\xbc\x71\x4b\x9b\x93\x4a\x17\x73\x7e\x08\x27\x1b\xf1\x7d\x04\xf5\x7a\xc7\xc2\xae\x31\x20\x17\x15\x6f\x26\x91\xa4\xe4\xda\x47\x82\xb0\x17\xd5\x7c\xd2\xb3\x50\xad\x2c\xe4\xff\xd8\x9f\x67\x8d\x81\xe6\xd3\xa8\x6e\xc1\xb2\xc6\xe2\x58\x95\x48\xb8\x1b\x83\x83\x3d\xa3\x11\x17\xf5\x94\xbc\xb4\xfb\xa8\x88\x72\x2c\x84\xf1\x4d\x58\xa9\x03\xb3\x08\x67\x5d\xe1\x6c\x5e\x67\x21\xe4\x52\x4d\xbf\x26\x7c\x27\xb9\x71\x84\xf2\xa5\x7f\x96\x80\x2f\xb7\xbe\x68\xe9\x40\xb5\xc8\x32\x0d\x13\xb3\xf1\x49\xd5\xd8\xaa\x5a\xfa\xf2\xe8\x7a\x08\xbc\x95\x34\x29\x58\x9c\x9e\x1d\x57\xc7\x1b\xe9\x12\x13\x4d\x0c\x43\x24\x75\xfb\x22\xaa\x99\x63\x34\xf7\x15\x95\xd6\x9b\xb4\x4d\x64\xe0\x6d\x8b\x97\xf0\x8d\x3e\x00\x71\x9c\x9b\xd9\xcc\x84\xbf\x74\x68\x09\xc9\x17\x73\x98\xbc\xc1\x7f\xa1\x1d\x9f\x7e\xfe\x7c\xc8\x88\xb0\xa8\xe9\x21\x8c\x38\xf3\x40\x82\x53\x8a\x97\xbf\x9d\x19\xc5\xf1\x68\x7f\x06\x07\xc9\x46\xff\x60\x4c\x39\x83\xfb\x94\xfc\xf7\xe6\x33\x36\x4e\x3f\x15\xda\xc9\x50\x21\x72\x5c\x9f\xa6\x40\xa8\x74\xbb\xc4\x40\x89\x3e\x3c\x0a\x6a\x95\x08\x9f\x5c\xf1\xa6\x3a\x23\x54\x84\x69\x43\x48\x95\x09\x50\x27\x45\x15\x5d\x29\x46\xec\x6a\xf1\xbd\x72\x5a\x4d\xee\xa2\xa7\x42\xe8\xb1\x0c\x38\x8c\x96\xfb\x11\xfd\x6c\x3a\xe4\xbb\x55\x3a\xde\x26\x2f\xc3\x22\xb9\x9f\x5e\x62\x66\x64\x4a\x50\x6b\xf6\x04\xd5\x0e\x4d\xd1\x8b\xb7\xdf\x95\x7a\x50\xfb\x76\x86\x75\x79\x4b\x29\x94\x34\xfd\xda\x7a\x49\x7a\xb4\xb7\x4a\x9d\x97\x7a\x46\x4c\x0c\x49\xd2\x90\x4a\x87\xd3\x29\xfc\x4c\xbf\xdf\x83\xc5\xc7\x23\xdd\x86\x0a\xb3\x58\x1e\x0e\x7b\x60\xd5\x46\x8e\x13\x21\x32\x8d\x8f\xd6\x26\x6a\x65\xd0\xcf\x4e\xe4\xf5\x6b\xcf\xa1\xa2\xc4\x36\x79\xd2\x87\xf3\x2b\xcb\x68\x9a\x2f\x54\x07\x85\x1c\x8a\x7e\xcf\x45\xc8\xfc\x81\x8f\xcc\x6b\x78\xfe\xa6\xc4\xfc\x17\x33\xfd\x01\xcf\xdd\x70\x47\x4c\x44\x4c\x3e\x90\x44\xae\xbf\xf0\x38\x28\x33\x14\x35\x02\xc9\xe2\x5d\xf5\x9c\x3d\xb8\x8b\x93\xdc\x8e\x55\x6b\x6a\x9f\x40\xb1\xac\x11\x44\xed\x8a\x79\x10\x9c\x00\x2f\x6d\xae\x69\xb2\xfa\x99\xcb\xeb\x5d\x21\xd3\x34\x72\x90\xfa\x29\xc3\xf2\x2d\x48\x2c\xee\xbf\xfa\xf3\x24\xb4\x16\xbb\x9e\x31\x02\xe9\xcd\x2e\x3c\xbf\xad\x1b\x93\xb3\x19\x5c\x65\xc7\x89\x3a\x7b\xcd\x71\x89\xa4\xad\xcd\x08\xed\xdc\xa8\x34\x3e\xe4\x75\xa6\x8f\xc0\x6e\xe8\xbb\x56\x66\x13\xa8\x85\xc1\x9d\x82\x4b\xb9\x5d\x4b\xfa\xd3\xdd\xbe\x78\x92\xb3\xa7\x54\xa8\xc9\xa0\xea\x33\x58\x20\x37\xf2\xfb\x4e\xb2\x02\x8d\x8e\xdf\x99\xf8\x75\x18\x98\xea\x79\x59\x8c\x95\x04\x12\x7e\xb9\x21\x6a\x78\x85\xd2\xb6\x21\x1d\x15\xc2\x05\x0d\xa4\x68\xb9\x38\x5b\xb4\x80\xbc\x7a\xfe\x95\x22\x37\x29\xab\x94\x6e\x12\x7f\x7a\xf8\x3b\xa5\xe7\xa9\xa5\xe0\xd0\x29\xfa\xa0\x50\xa9\xe5\x80\xc1\x69\x46\x33\x33\x4c\x1e\x87\x0d\xbb\xbf\x23\x70\xc5\x1d\x9a\x52\x94\x13\x74\xbe\x27\x42\xa2\xd8\x27\x11\xe9\xb3\x26\x8d\xe1\x10\x97\xb5\x74\xd6\x55\x1c\xb6\x9e\xb6\xb2\xb7\xb7\xa7\x3d\x6c\x08\x14\x00\xea\x7d\xf8\xd4\x39\xa7\xe6\xe4\x75\x1f\xeb\xd9\xc9\xb4\xbd\x58\xc8\x83\xfd\xab\x1b\x15\x22\x98\x53\x78\xf3\x52\x74\x38\x5f\x18\xb2\xe8\xee\x8d\xc2\xf2\xd3\x7d\x7a\x5e\x51\x6f\x5e\xb4\x32\x52\x34\xe3\x7e\xa9\x93\x9e\x80\x41\x06\x2e\x88\x70\xee\xa7\x50\x2a\x73\x0b\x99\xb6\x73\x8f\x4f\xca\x1c\xa1\x0f\x31\x3a\x86\xcb\x2e\x68\x9f\xc5\x41\x72\x08\x86\x08\x02\x7e\x5c\x9e\xdd\x53\x42\x94\x68\x1e\x3f\xa1\x7d\x54\xec\x88\xdc\x01\x39\x91\x58\x9c\x18\x36\xe6\xc4\x8a\x18\xd3\xd8\xdb\x0c\x11\x54\xea\x82\x21\x68\x03\xbc\x39\xd5\x5c\x74\x06\x7c\x46\x29\xf2\xd8\x3c\x7b\x02\x5f\xdf\x54\xb5\x07\xbc\x50\x1f\x1b\x82\xc2\x5e\xc0\x27\xd0\x44\x02\xa1\x4f\xb8\xca\xf9\xb8\xac\x6d\xdd\x5e\x84\x56\x53\x4f\xee\xb0\xd7\x84\x61\xd8\x9f\x92\x60\x52\x23\x5c\xf1\x51\xe3\xe6\x63\xdb\x19\xae\xd6\xa8\x6c\x60\xe0\x58\xad\x9e\x7c\xaf\xa4\xfc\x51\x95\x64\x55\x27\x4a\xed\x48\xf2\x65\xd3\x72\x08\xc4\x81\xe9\xfd\x92\x26\x06\x4c\x0e\xdd\xb6\x2b\xf3\xce\x43\xf5\x42\x34\x45\x5d\x98\xf8\x2d\xe6\x1e\xc9\x00\xda\xa4\xeb\x70\x58\x4c\xf2\x57\xd2\x5b\xf2\x06\x1b\x84\x12\x74\x37\xc2\x72\xe4\x19\x37\xbb\xdf\xe3\xbe\x25\x6a\x9c\x93\x00\x0d\x7f\x41\xcf\x08\x9a\x46\xdb\xa0\x3a\xae\xb2\xa0\xf5\xe2\x30\x5e\x62\x6a\xd8\xb7\x2a\x22\x7b\xd5\x83\x25\xb3\xdd\xa2\xdb\x2f\x59\xcb\x4b\xa9\xa3\xc6\x49\x1a\x90\xd7\x00\xae\x3c\xa8\x3b\x9e\xea\xf4\xfd\x01\x4d\x58\x66\x2e\x02\xba\x1a\xa6\x57\x4c\xb8\x08\xac\x03\xd4\xd7\x56\xfd\x7e\x1b\x2f\x71\xbe\xa9\x58\x56\xe9\xe5\xe8\xcc\x24\xa0\xa5\xc2\x26\x32\xb5\x4c\x8c\xd8\x64\x83\xad\x14\xac\x96\x60\x74\x96\x26\x18\xa1\x48\x28\x2d\x94\xd3\xaa\x61\x66\xb9\x81\x59\x68\x42\xf9\x7d\xde\xca\xe7\xcc\x31\x24\x6d\x00\xe5\xd8\xba\x8f\x0b\xf9\xb8\x27\x25\xd5\xfc\x42\x41\x0a\xf3\x0f\x38\xca\x8a\x17\x1f\x3c\x8d\x04\x1d\x79\x56\x98\xcc\xa5\x36\x0a\x62\xde\x24\x16\x23\x91\x7f\x19\xb5\xe1\xc2\x5e\xb7\x3c\x87\xd3\xa9\xdb\xff\xd4\xd2\xca\x74\x3f\x07\x49\xd0\x31\xa4\x12\x8c\xa9\x1a\x4e\x4c\x0d\x0a\x35\x76\xc8\x80\x69\xb6\xa0\x97\xf1\x04\x18\xa2\xcd\xbe\xd2\x18\x0d\x57\xbc\xcd\xe9\x64\xb3\x52\x1b\xfb\xb0\x31\x3c\xe3\x81\xf6\x97\x91\x4b\x94\x04\x15\x30\x61\xd7\x6e\x2c\xdb\xc8\xb8\x4b\x46\x5a\x59\x2d\x21\xb8\x6f\x52\x37\x3b\x62\x36\xd7\x60\x33\x4c\xa6\x49\xde\x47\x4b\x5f\x08\x35\xa1\xe1\x6e\x4f\x02\x8a\x0d\x2d\xba\x1d\xf3\xa4\x04\xf7\x77\x96\x21\xdb\x50\xb3\x29\xb1\x1f\x90\xe6\x5b\x0e\x74\x8e\x25\x04\x0b\x49\x9e\xf8\x45\xf4\xd0\xa0\x99\x22\x54\x78\x3d\x33\xbb\x30\x8a\x5e\x93\x6f\xf3\xff\x38\x3b\x19\x33\x96\x86\x71\x60\x8f\x90\xa9\x7a\x2a\xcc\xbe\xa8\x37\x95\x3c\x6a\xf6\x80\x5c\xdb\x0b\x5d\x13\x2f\x1b\x29\xd6\xca\xf1\x18\x1c\x1c\xfb\xc8\xf8\x72\x95\xa9\x3a\xb8\x76\x02\x03\xfc\xc4\x6b\x56\x7a\xec\x09\x5b\x9e\x41\x75\x9f\xc4\x69\x7b\xc8\x83\x6c\x21\xe3\x44\x9e\xa9\xde\x1b\xb7\x23\x20\xaa\xbb\xea\x88\x0c\xd3\xa8\x87\xbc\xa8\x28\x43\x17\x54\xbe\xcf\xf4\x98\x8d\x23\xc7\x0c\x63\xd2\x66\x6d\x27\x1a\x5d\xe7\x77\x6d\x63\xe9\xf7\xce\xa2\x9d\xe2\x77\x1b\x96\xb6\xd2\xd2\xc1\xbe\x6e\xb0\xd0\x9c\xcb\x54\x70\x47\x90\x19\x02\x5e\xac\xd7\x4d\x98\xeb\xaa\x7c\x8d\x36\x7e\xad\x77\xef\x43\xf6\x52\x28\xc3\xf2\xb7\xa9\x51\x04\x67\x3e\x08\x1d\xf6\x2b\xb3\x5d\x37\x9a\x1e\xbc\xea\x81\x07\x01\x92\x13\x7c\x32\x52\xaa\xf7\x3b\x8f\xa9\x70\xb8\xed\xee\x60\x8d\xf2\x2c\xf3\x72\x69\xd5\x3b\xd3\x9c\x09\x74\x0f\xf1\x26\xe6\xfb\x68\x28\x0b\x33\xe1\x31\xf3\xf9\xb9\xbd\xfd\x7c\xf8\x68\x5c\x32\x5c\xd3\xf6\x86\x64\x15\x3e\x67\x5c\xdb\xbf\xef\x00\x6b\x6f\x71\xdd\xb9\x74\x5d\x2e\xa5\xc9\x1d\xca\xbb\x24\xe3\x3c\xad\x5d\x5a\x59\x03\x6c\x4a\x87\x7f\x68\x08\xb6\x21\x9e\x67\x5d\xe6\xe7\xb5\x14\x0f\x05\x3d\x6b\xbc\x4e\x51\x71\x51\xc3\xf1\xc4\xa3\x21\x61\xbb\x56\xc9\xed\x2f\x6e\x1d\x2e\x5d\x86\x8c\x2d\x6d\xfb\x04\x2b\x56\xc8\xe1\x95\xf3\xf8\x6e\xcc\xab\xf1\x67\xdb\xa7\xc3\xfd\x7f\xc4\x95\xb0\x8d\xc6\x31\x52\xa5\x21\x5a\xca\xd0\x21\x86\xaa\xb1\x0f\x92\x33\xab\xd2\xa1\x0d\xd1\x3d\x6c\xdb\xae\x1f\xf1\x60\xc1\xda\x5f\x6d\x92\x5a\xf6\xd3\x22\xa8\xc4\x91\x1f\xd0\x64\xb5\xc3\xe2\x10\xd5\x1b\x35\x24\x18\x37\xd8\x10\x62\x29\x56\xa0\x29\x79\xbd\x38\x06\x4a\x15\x5c\x12\xa6\xb9\x53\x26\x89\x4c\x98\x1d\xed\x2d\x86\xb8\x02\x28\x57\x70\xb0\x6b\x4d\xd3\xbb\xbb\x52\x36\x03\x3f\xf1\xf2\xf0\xdb\x8b\xb1\x86\x4a\xe6\x92\x57\x24\x4b\xd4\x7d\xb5\x61\xda\x62\x96\x44\xa8\xd8\xcf\x96\x1c\x5e\xaf\x74\xca\xcc\xf7\x16\x15\xfb\xce\x5b\x56\xb5\x74\x0a\xbf\x24\x67\xd8\x6f\x47\x5d\x35\x39\xef\x2d\x0d\x48\x6f\x1c\x55\x92\x27\x07\xb0\xc4\x91\x82\x3d\x4f\xb1\xed\x51\xd1\xd3\x1e\x8e\x2d\x57\x3b\xe1\xc0\x4a\x43\x3b\x2c\x3b\x89\xb8\x9e\xff\xb2\x43\xad\xa5\xa1\xbe\xb3\x9d\xe1\xfe\x21\xd2\x99\x19\x18\xd2\x11\xe8\xb3\x1d\x8b\x92\x43\xf1\xc9\x6e\x1b\x91\xe8\xf5\x18\x70\x33\x30\x12\x22\x34\xe6\x07\xcc\xc5\x28\x63\xda\xf3\x90\x55\x27\x81\x66\xaa\x9e\xa5\x8b\xe1\x84\x60\xae\x02\xe7\xeb\x3b\xf5\x08\x42\x68\x9e\x5d\xb7\x33\x6f\x17\xd6\x74\x8c\xa6\x60\xcc\xea\xf0\x2b\x69\x85\xb9\x63\x85\x20\xf8\x81\xc4\x79\x2f\x9d\x3d\xbe\x88\xf4\xfd\x49\x83\xb9\x79\xda\x7a\x2e\xe3\x71\x25\xce\x0f\xa3\xb7\x52\x56\x53\xf8\x1e\xc7\x22\x26\x34\x05\x76\xdf\x1e\x1f\x77\xa0\x58\x6c\xdf\x1e\x1a\xbe\xac\xfd\x0d\x8a\x9d\x76\x4b\x88\x1b\x9e\x09\x95\xf6\xa7\xc1\xb5\xe7\x87\xcd\x8b\x87\x0f\x22\x1e\x1a\xff\x49\x41\x78\xb7\xc7\x5a\x80\x8c\xef\x09\xdf\x39\x9e\xd3\x30\xca\xa5\x6c\x7c\x23\x87\x85\xe7\x93\x3f\xc1\x6d\x49\x5c\xe7\xbe\x79\xe1\x2d\x4c\x0f\x61\xa8\x30\xd3\x29\x2f\x22\xdd\xf0\xbd\xd8\x1a\xa0\xed\x88\xd8\x6d\x40\x1a\xe4\x00\xd3\xfe\x18\x87\x77\x13\x16\x9d\x1b\xad\x33\xe6\x4d\x9f\xfa\x91\xfc\xa1\x78\x58\x4b\xfc\x07\x22\x6d\xc3\x78\x1e\x67\x71\xb5\x78\xf4\x12\x3e\x1c\x77\xe7\xc6\xe7\xfb\x4f\x81\x01\xd1\x31\x68\xbb\xe5\x02\x4d\xac\x44\xf3\xb2\x3f\x3b\xac\x9a\x22\xcf\xbf\x9d\xe4\xbb\xd7\xe1\xc0\x7b\x84\xd0\x47\x4a\x84\xae\x72\x8c\xb7\x91\xf7\x53\x4b\x48\xbb\x51\xf3\xce\x0c\x11\xad\xfc\x4c\x14\xf1\xd0\xfc\x85\x1a\x00\x3c\xf9\x5e\xa8\x7f\x0d\xa5\xaf\xbf\xd2\x40\x10\xa7\x82\xcb\x5f\x79\x5f\xdb\xa9\xa0\xfd\x56\x6c\x2c\x1c\x5b\xef\xc6\x15\x70\x2f\x7a\x6f\x8e\x80\xd6\xe3\x67\xd8\xde\x8d\xaf\x48\x1f\x9d\x4e\x23\xa4\x22\xb1\x7c\x4a\x84\x1e\x0c\x52\xb5\xd2\x14\x9a\x98\x10\xe5\xb6\xdb\xd3\xc7\xbb\x77\x38\xd5\xc8\x17\xa9\xf0\x1b\xa9\x34\x6c\x33\x33\x4a\xb2\x43\x43\x13\x54\x36\x6e\xf9\x59\x1c\x14\x16\x8c\xc5\xae\x12\x87\x9f\xde\xb3\x3a\xe2\x24\xfc\x55\xbb\xbc\x93\x09\x1d\x5f\x99\x5e\x4f\x52\x26\x2c\xf7\xa3\x87\xd2\x4b\xdb\x91\xd2\x08\x71\xcb\x56\xa5\xf8\xae\x73\xf3\x1c\x91\xbc\x96\x22\x6d\x08\xb6\x40\x15\x03\x07\x8e\xa9\xbf\x74\x57\x25\x8a\xda\xa3\x8a\x52\x18\xc9\xb0\x9c\x14\x00\xee\xa6\x55\xa5\x0c\x59\xed\xc0\xb6\x0e\x9c\xea\x76\x32\x89\x88\xc6\xec\x89\x46\xcf\xe3\x87\xf0\xcc\x30\x63\x7e\x2d\x66\x2e\x75\x6c\x19\x84\x17\x1e\x62\x8f\x5d\x3f\x41\xd9\x40\x4d\x71\x99\x61\xca\xd5\xf7\x9d\x26\x27\xe2\x3c\x54\xb3\xdc\x82\x33\xa0\xd6\x1d\xcf\x8c\xc7\x2f\x24\x08\x3d\x61\x8c\x26\xcf\xfa\xf3\xd8\xf4\xad\x72\x98\xbd\xa4\xca\x49\x1f\xf7\xe9\x9e\xc8\x7c\xf2\x76\x01\x41\x4a\x72\x12\x3f\x58\x3d\x7f\x96\x1f\x5f\x79\x8c\xc7\x9c\x77\xb4\xed\x59\xff\x31\xa5\x87\x31\x7b\xd5\x08\xed\xd2\x9f\x3c\xd2\xc9\x9d\x20\xd4\x3f\xe1\x73\xff\xeb\xfb\x04\x92\x9d\x66\x84\x6b\x6b\x71\x6e\x1e\x03\x0e\x09\xbd\xf1\x8d\xd7\x9c\xdd\x40\xb3\xec\x05\xfd\x0f\x04\xfd\x5e\xed\xe7\x31\x36\xbb\x0a\x8b\x03\x9e\x36\x9c\x0e\x36\x35\xe3\x56\xb3\x85\x42\x5d\xcc\x59\x03\x9e\x4b\xf2\x5c\x59\x4c\x4f\x54\x8b\x9a\x31\x9c\x9e\xb8\x37\xa5\x49\xf3\x50\xfb\x03\x22\x7b\xeb\xa7\x85\xc7\xe3\xf3\x31\xc5\xd9\x10\x35\x36\xe5\x52\xcf\x8f\xea\x19\x7e\x52\x9d\x21\xa5\x57\x8b\x2f\x6f\x48\xe9\x98\x7a\x7a\x04\x44\x49\x2e\x89\xe8\x30\x90\xe7\x0f\xaa\x45\x52\x88\x79\x0d\x9f\x71\x9d\x65\x19\x3f\xd9\xca\x16\x92\x0d\xfc\x1b\x83\xf9\x2e\x14\xe5\x7d\x65\xef\x37\x4e\x8f\x14\xb7\x5f\x22\x76\x46\xa4\x5a\x6b\x3a\x68\x60\x07\xcb\x81\xc9\x85\x36\xd4\x36\x48\xb6\xdf\x35\x5a\xe8\xa7\x67\x06\x6b\x4c\xfd\x05\x39\xbf\x84\xa2\x8b\x69\x4f\x2f\x23\x6a\xf5\x9b\x3c\x1e\x11\x4c\x3d\xb5\xbf\x4b\x34\xf9\xd8\xe9\x9b\x3a\x83\xff\xa6\x77\xa8\x4b\x44\xda\xba\x41\xfd\xa4\x32\x0d\x3e\x77\x8f\x4b\xe8\x8a\x84\x3f\x52\x41\x21\x90\xf4\xc2\xe5\x97\x0d\xd5\x9d\x35\x47\xfb\x1b\x54\xc6\xa6\x4b\xd7\x71\x53\xfc\x8d\x73\x47\x4e\x26\x7f\xb6\xda\x8b\x2e\x46\x98\x78\xfc\xec\xa2\x50\x49\x70\xca\xde\x8c\x8c\x1f\xaa\xb2\x81\x3e\x19\x2d\xca\x2e\x3b\x89\x40\x9d\xda\x9e\x55\x1d\x71\x99\xd5\x85\xa3\x85\xd4\xfc\x9d\x33\xc3\x5f\x92\xb2\x38\x91\xbc\x49\x5b\xaa\x1d\xdd\x89\x65\xc6\x52\x50\xdb\xe9\x38\xb1\xd8\x22\x9d\x02\xfe\x48\x1d\x44\x01\xbb\x03\xda\xbf\x51\xd8\xd0\x12\xaa\x28\x2d\x51\xc2\x87\x5f\x9b\xcf\xff\x75\xa1\xfa\xb1\xd8\xed\x53\x50\xea\x9c\x26\xf5\xca\x91\xd0\x60\x70\x0f\xda\xe0\x67\x16\x0b\x62\x32\x21\xd0\x17\x8a\x2f\xc9\x41\x68\x15\x5c\xe2\xc3\x22\xbc\x05\xc6\x8d\xdf\x2b\x43\xd7\x53\x3f\x48\xf8\xed\xb1\x57\xda\xf5\x31\xf4\x88\xe5\x7d\xa3\x77\x35\x39\x27\xe4\x4c\xde\xd4\xb4\x0f\x72\x32\x9c\x14\xf9\xe6\x3e\xda\x76\xa8\xce\xcd\x81\x90\x5e\xb5\x30\xc1\xff\x3b\xb2\xb3\x70\xe1\x9c\x3f\x5a\x5c\x32\x56\x72\x98\x7f\x40\xd3\xc1\x4d\x74\x61\x27\x6e\xde\x67\xf8\x17\x1e\xbe\xfa\x10\x0b\x5d\x86\x92\xce\x5b\x3a\xe9\x84\x32\x6e\x66\x9b\x66\xc1\x71\x88\xd4\x9d\xb9\x48\xf9\x53\xdd\xcc\xa4\x07\x5d\xd0\x8f\x2a\xc7\xfc\x2f\x9d\xfb\x09\xb2\x70\x6e\x7f\x17\x70\x79\xd3\xe5\xe3\x49\x28\x2c\x60\x14\x60\x98\x49\x08\x65\x27\x5d\x2b\x39\x62\x89\x7a\xc7\x3d\x9e\xe8\xa8\xea\x56\xba\xbb\xe0\x69\xdf\x68\x9d\x14\x02\x68\x91\xb1\x35\x6c\x9e\x60\xa2\xa0\x9c\xe6\xe9\x46\xca\xc8\xc9\x0c\x12\x53\x9a\x5b\xa1\x43\xa4\x1a\xb0\x8f\xd2\x7a\x29\x29\x9f\xb7\x04\xc9\xb6\x1e\x7c\x1a\xe7\xcd\xed\xe5\xe4\x30\x3f\x91\xef\x74\xa0\x92\x20\xff\x39\x60\xcb\xc6\xb9\x4b\x64\x87\xac\xa9\xb1\xd3\x92\xe5\x51\xdf\xcb\x0b\x54\x36\xbb\xd2\x2f\xfc\xba\x3b\xf2\xd4\x18\xaf\xfb\x4b\x45\x9c\x3b\x7e\x87\xf7\x4e\xa2\x72\xf3\xef\x6d\x22\x66\x80\xb8\xee\x83\xf2\x05\xf9\x53\xde\x04\xdf\x82\x32\x0f\x02\x2a\x69\xa1\x5f\x56\x6f\x08\xe3\x54\xee\xc1\x00\xca\x90\x7e\x4f\x38\x49\x28\x36\xcd\x04\xdc\xa7\x7e\x2f\x26\x4c\x1e\x0a\x1e\x83\x4e\xfa\x34\x86\xf5\xb9\xb8\xd0\xef\xc4\x92\x3e\x58\x2a\x5f\x1f\x94\x0e\xba\xd8\x05\x21\x2b\x33\xc3\x5f\x17\xf9\x29\x71\xd9\x31\xc9\xf7\x25\x2c\x6e\x9b\x72\x15\x47\xa8\x05\xdc\x24\x67\x43\x5b\xfa\xa6\x5f\xc4\x65\xe8\x7f\xe1\x4b\x95\x7a\x47\xaa\xad\x13\xa9\x0b\x07\xda\xe1\xe5\x93\x60\xe4\xa3\xe4\x78\xfe\xd2\x7c\xf4\x3b\x77\x49\xf5\x15\xaf\x22\x8f\x2b\x4c\xb3\xf1\x10\x1c\x8e\x80\xda\xc7\x70\x90\x64\x19\x4c\xe0\x37\x48\x2a\xbb\x2c\xd6\x0e\xc3\x1f\x35\x79\x90\x79\x29\xb0\x70\x1c\xf9\xe2\x5c\x30\xbf\xc2\xca\xee\x14\x73\x68\xe5\x5b\xd0\x81\xfe\x9c\x72\x48\xbd\xdd\x15\x5c\x2b\xa0\x75\xa0\xe8\x23\x8d\x1d\x9b\x60\x0f\xc3\x1a\x55\xeb\x60\x4e\xbe\x3c\xc8\x0a\xc1\xbc\x24\x0c\xe0\xdf\x0d\xcf\x1f\x64\x88\xdc\x1d\xf2\xe2\xb2\x68\x9f\xb1\xf4\xc9\x0f\x72\xca\xd1\xcd\xf1\xe7\xa4\x66\xc8\x57\xe1\x0a\xd4\xd3\x92\x41\x98\x12\xad\xd0\x1c\xc5\x94\xea\xe8\x63\x14\xe9\x90\x29\xa6\xdd\x4f\x1c\x50\xde\x3d\xcd\x0e\xba\x96\x6f\xcb\x18\x95\x05\xfc\xc2\x38\xc5\x09\x00\xf4\x9e\x1c\xf8\x12\x73\x92\x8c\x50\x16\x8a\x0f\xb0\xfd\xbf\x19\xd5\x5f\x71\x1c\xe3\x9f\x10\x48\xde\x7c\xe0\x3e\x82\x70\xcf\x9e\x38\x33\x65\x09\x92\x0f\x29\x3a\x6b\xbe\x5c\x15\x61\x0d\xa4\xb3\xd3\x6f\x6c\x62\x8e\xc1\x3d\x93\x22\x96\xe0\x9d\xe5\xac\x1f\xff\xc9\x82\x9e\x79\x69\xbf\x38\xd9\xc5\x2f\xc6\xd0\xb8\x13\x17\x63\x46\x21\xe3\x94\x4b\xb0\x7e\x31\x4c\x6e\x1e\xc3\x9a\x35\xb5\x15\x15\xf8\x60\xb5\x77\x71\xa1\xf2\xe0\x7b\x4d\xc4\xec\xfc\x89\x34\xa3\x9b\xe8\xaa\x25\x81\x25\x00\x75\xa8\x6c\x1d\x86\xcb\xeb\xf9\x53\xff\x3e\x2f\x47\x50\xfd\x2e\xb6\xf2\xe4\x0d\x51\xef\xa7\x12\x9b\xe6\xf3\xca\xf6\xeb\x1f\xc8\x9b\x48\x88\x17\x72\xd8\xe1\x58\xe7\xd1\x48\x57\x48\x31\xcc\xc8\x76\xe8\xc4\x19\xc2\x62\x87\x29\xb0\x98\x54\xe2\x02\x69\x62\x2b\x17\x48\xf4\xa2\x49\xcb\x0e\x06\x9b\x06\x14\xfc\xd1\xf2\x03\xb0\x3c\x55\x5e\xbf\x23\xb1\xce\x09\x0f\x27\x86\xd2\x37\x4e\x52\x46\x62\xa3\xff\x61\x89\x7f\x4a\x0c\xef\xb1\xaf\x89\x40\xbe\x7f\x3d\xc4\x50\xf2\x0e\x4c\x97\x58\x56\x98\xb3\x6d\x77\x79\xbe\xaf\x65\x08\xc9\x80\x69\x4b\x87\xaf\x60\x0d\xe2\xe7\x0f\x95\x45\x16\x9f\x66\x44\xae\x7f\x9f\x2e\xfe\xe7\xe5\x0b\xab\x5b\x4b\x14\xac\x78\x31\xfe\x9e\xaf\xf3\x89\x57\x82\x15\x36\x22\x36\xa1\x2b\x9e\xdd\x85\x11\x3b\x85\x8a\xf0\x0c\xe0\x60\x79\xf9\x50\x5a\xcf\x93\x2a\x90\x61\xe5\xfe\xb2\x8a\xd0\x24\x06\xfc\xe2\xb9\xce\x56\x26\x00\x41\x0b\xef\x6f\xe6\xf9\x6b\x71\x7d\x7a\x68\x51\x0f\x43\x02\xcb\x9f\xa7\x56\xd3\x14\xb8\xcf\xaa\x21\xf2\x87\xb5\xd3\xc6\x49\x75\x97\x06\x3f\x54\x74\x1c\xd8\x34\x59\x9c\x8c\xf0\x3e\x11\xad\xd5\xab\x5d\x26\x00\xc7\x3a\x60\x78\x65\x0d\xe2\x6f\x8c\xed\x66\xe5\xd8\x1e\x28\x41\x8e\x1e\xce\xba\xdf\xf3\xce\x1c\x4d\x7c\x56\x14\x47\xfe\x75\x0f\x6b\xa1\x6d\xd2\xd1\x8d\xf8\x36\x6e\x68\xd8\x9b\x6e\xef\xd7\xa7\x5a\x55\x27\x73\xd3\xc3\x6b\xb8\xcc\xa0\x83\xf6\x7b\x8d\xb4\xfb\x32\x59\xf2\xe3\xa3\xb0\xea\x75\x25\x97\x98\x30\xbc\xc9\xd6\x7c\xad\x9a\x65\x27\xb3\x3f\x46\xd7\x85\x98\xf5\xbb\x77\x95\xa2\xc4\x21\xaa\x4a\xa2\x1a\xad\x1f\xf1\xd4\x20\x53\x73\xf9\x34\x0f\x11\x43\x92\xd4\xa8\xfb\xf1\x26\xbf\x30\x0f\xa5\xc2\xa6\x33\xd2\x43\x3f\x19\x55\x0f\xbc\x0c\xd9\x09\x99\x4c\x7f\x45\xba\xa9\x1e\xaf\x49\x40\xcf\xa5\x4b\x55\xd5\x77\x56\x9e\x1e\xb8\xfa\x99\x4e\x35\xf2\xfb\x42\x1b\x0e\xe9\x49\xb3\x07\x23\xae\x8c\x58\x8a\x0c\xc6\x6f\x65\x82\xb5\xf5\x0c\x7c\x7c\x21\x6a\x83\xd1\x20\x4d\x1a\xf3\x82\x56\xe3\xb8\x84\xdb\x22\xbd\x71\x16\x4b\xee\x9a\xb5\xb0\x2a\x70\xd3\xf1\x6f\x9e\xed\x30\x6a\x7e\x27\x76\xad\x21\x39\x31\x4b\x84\xdb\x46\x23\x63\x3d\x24\xf6\x88\x0e\xd6\x91\x47\x12\xe2\x01\xaf\x4c\x92\x41\x80\x93\x76\x55\x1e\xea\xb5\xf0\xeb\x28\xec\x5c\xe1\x0b\xae\x72\x1f\xee\xf9\xc3\xbb\x98\x7a\x04\xa5\xa8\x8a\x0d\x12\x7b\x79\x22\x53\x8a\xc9\x4c\x0d\xe5\x62\x71\x3b\x20\xca\x33\x5a\x45\xeb\x97\xdd\xfd\xd3\x34\xd5\x2a\x45\x82\x22\x9d\x09\x7f\x73\x65\x98\xa3\x30\xdf\x86\x69\x81\xba\x4a\x4f\x7c\x75\x2d\x2b\x76\x7b\x75\x34\xb1\x0d\x84\x97\x82\x45\x74\x98\x18\x37\x46\xf8\x55\x8b\xd5\x43\x88\x3d\x58\x53\x9d\x8f\x93\x74\x2c\x27\x90\x02\x92\xfd\xfe\xcf\xb5\x66\x30\x45\x17\xbf\x55\xef\x8b\xa4\xf9\xac\x58\x57\x8b\x09\x8a\x45\x70\xee\xdb\x7d\x09\x32\xa3\x70\xe4\xa4\x72\xf0\x57\xf6\xc4\x6c\xfc\x1a\xc8\x19\xc3\x13\x26\x71\xc9\x0f\x30\xca\x34\xde\x59\x84\xdf\x82\xd5\x64\x2f\xba\x62\xb8\x8e\xe9\xdc\x77\x88\xb4\xcc\xcc\xc8\x0c\x27\xd4\xb2\x39\x40\x82\x52\x28\xf5\x8f\x81\x1a\x0a\x8f\xf5\xdb\x33\x2f\x6c\xdd\xf1\x37\x94\xc3\x6b\x03\xeb\x73\x9d\x77\xa9\x7e\x16\x83\x0a\xdc\xb9\xd2\xd6\x78\xb4\xc2\xd5\x6c\xc7\x7b\x12\x23\x1b\x2e\xa3\x17\xeb\x6b\x1a\xc5\xf6\x63\x2e\xb8\x7c\x26\x14\x25\x99\x3f\x83\x68\xba\x47\xe9\xc0\xd1\x78\xda\x94\xc4\x3f\x37\x6e\x8b\xcf\x9e\x70\x63\xf9\x9f\x14\x7e\x89\x88\x45\xa6\x52\xdd\xc2\xfb\x76\x7d\x2f\xce\x5c\xfb\xfc\xb4\x18\x81\xc7\x22\x73\x39\x35\x7e\xfa\xde\x3a\x84\x7a\x88\x4a\xcc\xaf\x6f\xb1\x0b\xb9\xd8\x25\x29\x43\x14\x3c\x8e\xbd\xb8\x08\xb3\x66\xc0\xc7\xf0\x23\xd3\xa7\x50\xbf\x8c\xc7\x14\x2a\x99\x6d\x3a\x04\x2c\xe2\xce\xad\xf6\xd5\x18\x7e\x7f\x7a\x96\x94\xb0\xe6\xe3\xe3\x0b\x7c\xad\x67\x7c\x27\x23\xb6\xf8\xbc\x2c\x2c\xb1\x7c\x61\x48\x4e\xfa\xf8\x12\xb2\x9b\x0d\xd0\xe0\xa0\xa8\x65\xbe\x7d\x74\x34\xc9\xd2\x66\x6a\x6f\x8e\x42\xa8\xe4\xd9\x8d\xc7\x8c\x40\x40\x51\x61\x26\xa4\x3c\xdd\xae\x89\xfc\x76\x00\x7e\xf8\x19\x76\x12\xdd\x87\x7d\xf6\x95\x61\x79\x68\xf4\x96\x27\x2d\x56\xa0\x43\xe6\xbd\x24\x7f\x29\xee\x03\x1c\x84\xc3\xf8\xa9\x05\x8f\x7e\xb9\x0e\x80\xa9\x6f\x1e\xcd\x7c\x50\xdf\x6c\xa9\x86\x77\xb0\xe4\xf2\x93\x2a\x91\x2d\xd7\x80\x15\xb3\xf6\xbc\x1e\x2c\xb2\xc1\xf4\xea\x17\x24\x5e\xc3\x64\x46\x03\x9b\x97\x38\xc9\xad\x3b\x2d\x0a\xe2\xcf\x15\x39\x82\x70\xc7\xd7\xde\x76\xcc\x7a\x1f\xb2\xb2\xcb\x7a\x6c\x76\x56\x36\xaf\x87\x4a\xe6\x08\x79\x2d\x3b\xd1\x82\x8b\x7a\x0c\xac\xcb\x88\xbf\x9a\x23\x4f\x9c\xbb\x9b\xbe\xa6\x22\xb6\xc7\x4a\xc0\x71\x0f\x9b\xf3\x3c\x1c\xd7\x12\xdd\x81\x38\xf6\xb8\x74\xac\x53\xbe\xf4\x57\xae\x4e\x51\xd4\xf2\x86\x22\x14\xa6\x96\x45\x87\xdf\x38\xb8\xee\xea\x9e\x3e\x79\x76\xe9\xb9\xce\x87\xdf\x04\x8c\xa1\xf5\xa5\x42\xf9\xfc\x52\xff\x8e\xac\xb1\xcf\x77\x98\x72\xda\x2c\x2b\xaa\xaa\xc6\x18\x2f\x4c\x74\x2c\x58\xe0\xde\xeb\x46\x62\x8b\xbf\x4e\xe4\xe6\xf1\x38\xe1\x4a\x49\xa8\x30\x02\xb9\xba\xc3\x3e\xff\x62\xb4\x12\x10\xd7\x3d\x07\xdf\x79\xe2\x74\x6c\xa3\x75\x27\x7b\x54\x60\x1f\x3e\xf5\xaf\x4a\xc7\xbd\x34\xce\x9a\x9d\x05\xf4\x46\x7d\x0d\x23\x89\xc2\xae\x1b\x8e\xf1\xdf\x89\x9a\xdb\x86\x33\xf0\x0c\x3d\x15\xe0\x4d\x1d\x69\x63\x4c\x10\x2d\x90\xd5\x16\x0f\xd9\x47\x54\x8c\xcd\xb8\x8f\xc4\x1a\xaf\xe1\x2a\x89\x38\x39\x29\x0f\x62\x1b\x21\x27\x20\x9f\xd1\x6a\x30\x0f\xfb\x1d\x49\x7a\x86\x07\xd5\x59\x99\xac\x49\x70\xe0\xd0\x32\x97\xe4\x0b\x5e\xa0\x45\x97\x55\xf1\xfc\xd2\xf8\x2d\x3f\xbc\xce\xb0\x5b\x34\x12\x86\xa9\x1b\x1c\xf0\x8f\x03\x71\x40\xdf\x33\x36\x14\x7e\xf8\xe2\x35\x6c\xb2\x58\x1c\xa7\x17\xbb\xe0\xb7\x3f\x3d\x39\x5c\x3f\x41\xaf\x08\xe5\x7a\xd4\x0f\x3e\xae\x9b\x9d\x58\x80\x60\xc2\x26\xde\x3f\xee\x43\xa2\xf5\x38\xfd\x88\xb0\x90\xab\xf5\x10\x97\x29\x02\x9d\xf4\xc6\x3f\x03\x68\xf2\xce\xef\x39\x0a\xbc\x5e\x4f\x1e\x2a\x0b\x6e\xdb\x33\x2b\x79\xa9\x88\x96\x1c\x57\xe5\x28\x1e\xd6\x37\xde\x55\x41\xbc\x1a\x9e\xb3\x20\x01\x88\x4a\xb4\x06\x09\x28\x8b\x24\x8b\x80\x0e\x32\x3c\x5c\x21\x20\x8d\xb9\xe5\x69\x49\xa4\x82\x32\x1e\x78\xf6\xc0\xe0\xa4\x80\x90\x2b\x23\x40\x4e\x14\x42\xb8\x40\x12\x59\x44\x2d\xd5\xdf\xc7\xa3\x3c\x45\xa2\xd8\x67\xd6\xf5\x4a\x6e\xa3\x84\xdd\x18\xd3\x48\x73\x27\xdc\x21\x07\xc0\x5c\x21\xd0\x75\xe7\x46\xd6\x6c\xe0\xab\xab\x35\xf8\x61\x03\x29\x66\xe5\x3c\x30\xe4\x95\x3c\x08\x82\x11\x6b\x8e\x55\xbd\x45\x15\x74\xb1\x47\x4f\xdb\xee\xb6\x7f\xbd\xbd\xdd\xb3\x63\x0a\x0c\x99\x63\xa0\x0c\xed\x03\x06\x08\x16\xe8\x51\xee\x81\x4c\x28\x78\x6b\xc2\xc3\xeb\xe4\x38\xae\xc4\x86\xd9\x93\x08\x94\xf3\x88\x74\x6d\x39\xe1\x11\xaa\x20\xe4\xa5\x2a\x25\x50\x85\xbc\x5e\x64\xd7\x50\x43\x4e\xca\x54\x3e\x95\x07\xcc\xf2\x1b\xf9\x24\x7e\x44\x28\x8a\x0d\x42\x52\x92\xd3\x80\xb5\x5d\x1d\x03\x01\xfd\x5e\xf6\xb5\x68\x80\x3a\x31\xb3\x35\x2d\xc6\x1a\x1d\x74\xa8\x49\x8b\x0f\x6a\x0e\x4d\x2a\x81\x9d\x16\xcc\x06\xb9\xe4\xbb\x9d\xc3\x62\xb1\x8c\x46\x2a\xf9\xb7\x17\xcb\xdb\x7d\xa2\x99\xea\x76\xfe\x11\xe8\xb4\x5b\x30\x9d\x38\x59\xe0\x05\xfd\x1a\x92\x44\x66\x5d\x76\x78\xc8\xee\x2e\xa0\x65\xea\xcf\xa6\x6c\xb8\x86\xa6\x1e\xc0\x50\x08\x1f\x49\xe0\xdb\x09\xf4\x5f\xb1\x8e\x5f\x94\x05\xd8\xb5\x3d\x24\x7c\x56\x0e\xdf\xe8\xd4\x65\x70\x8c\xdb\x68\xa0\x20\xcc\x9e\x76\x0f\xc9\x99\xfe\x9d\x12\x3a\xb4\x83\x23\xe4\xe0\x5f\x25\x6e\xb1\xc4\x19\xa3\x11\x62\x96\x8e\x2e\x10\x0c\xa2\xe3\x3a\x9c\xe4\x2c\x75\x78\x88\x95\x5d\x5f\x45\xf5\x49\xd3\xf8\xbe\x78\xa6\x6d\xa5\x72\x2b\x0e\x43\x28\xba\xdd\xfd\xb7\x58\x7d\x54\xf5\xc5\x3d\xb6\xf8\xfb\x4e\x0f\x72\x45\x45\x13\xb6\xfc\x62\x26\xd1\xaf\xd6\x55\xc5\x58\x95\xaa\x65\x0f\x55\xce\x63\x0d\x7c\x40\x20\xc8\x69\x36\x04\x35\x95\x9e\x37\x95\x79\x99\x4c\x22\x73\x93\x50\x08\xcc\x04\x5a\xa5\xfa\xb7\x29\x58\x4b\x1f\xcb\x02\x81\xd3\xbd\xdd\xe0\xf2\xe5\x6d\x91\xd0\x1e\x36\xca\x01\x25\x52\xd5\x1c\xfa\xe7\x57\xb9\x80\x37\xff\xd2\xac\x33\x5a\xb8\x86\x22\xe4\x44\x88\xbb\x12\xce\xc2\x4f\x28\x2a\x4b\x16\xb7\xba\xbf\x2b\xf8\xdb\xe7\x6b\x8f\xaa\x52\xe4\xfd\x86\x21\xbd\xc0\x6c\x11\xd0\x3b\x3e\x71\x20\x27\x4e\xfd\xd0\x23\x1c\xc7\x25\x10\xfb\xf5\x8e\x2e\x05\x48\xcb\x53\x7e\xd1\x44\xfe\xda\x24\x09\xb1\xd6\x2f\x5d\x1a\x2d\x34\x0f\x09\x63\x4a\x1a\xc2\xa7\x7f\x48\xa8\xc6\x71\xe1\x44\xf6\x26\x18\x91\x22\xc4\xb4\x14\xb6\x48\x56\x71\xba\x8b\xa5\x44\x56\x2a\xc5\x1a\xba\xc0\x3d\x4d\xe9\x53\xc8\xf4\x1f\x9a\xd6\xfd\xe7\x83\xae\xa8\x88\x8b\x23\xc4\x4c\xe7\x85\xcd\xb5\xba\x20\x9b\xa8\xe0\x05\x21\x57\xd2\x3f\x3f\x33\xd1\x95\xdb\x66\x4d\xe8\x17\x9e\xa9\x93\xd8\x9b\xcf\xbe\xd2\xa2\x33\xed\xfc\xb3\x5e\x18\x79\x82\x9e\xad\x5d\x8f\x9d\x09\x83\x3d\xa6\x33\xa6\xb9\xd7\x77\x19\x95\x55\x53\xa5\x75\x3c\xf6\x62\x5c\xe9\x7a\x02\xf2\xf4\xe3\x11\x72\x66\xe4\x3c\x94\x66\x55\x3e\xa6\x66\xd1\x2e\xb1\xd6\xeb\x8e\xb5\x50\x86\x69\x36\x4f\xbd\x46\x3e\x46\x4f\x5a\x23\xc7\xca\x3b\xc5\xf3\x9f\x12\x30\x99\x3c\xfd\x86\x0a\x50\x4d\x65\x21\xeb\xae\x4e\x46\xa9\x77\xd7\xb1\xea\x1e\x5f\xcb\x0d\x4e\xff\xb5\xd7\x85\x08\xce\xd5\x37\x3b\xf3\x34\x95\x9d\x8c\x7e\x47\xa3\xd8\xd9\xb0\xb9\xd7\xa2\x73\x76\x2e\xba\x47\xa1\xc2\xbb\x3a\x5f\xa1\x4c\xfc\x20\x1b\xe0\xc6\xe7\x3b\x27\xb0\x1e\x90\xef\x60\x93\xdb\x28\xe9\x44\xdc\xde\xd5\x51\xc4\x99\xe7\x38\xcd\x35\x41\x51\xf8\x93\x21\x85\x15\xe8\x9f\x4f\x74\xbf\x53\x20\x5a\x4e\x09\x2c\x30\x52\x4b\xad\xdb\x16\xdf\x50\xe8\x86\x35\x85\x8b\x76\x27\x46\xcb\xf0\x95\x37\xfa\x32\x3e\x82\x47\x0f\x46\xe6\x2c\x61\xe4\xae\xbb\x86\x40\xd0\x77\xb6\x56\x10\xb9\x4d\xd5\x7a\xe5\x14\xf7\x92\x7e\xd9\xf4\x54\x30\xf2\x0e\x7f\x16\xb3\x77\xb3\xa1\x4f\x76\x32\x34\x33\xf2\xf0\x1c\xbb\x2d\x43\xfb\x7d\x41\x19\xd9\xbf\x1d\xeb\x34\x30\x36\x19\xc0\x31\x46\x31\x63\x96\x4c\xc4\x9c\xc1\x50\x1a\x6e\xfa\x2d\x15\x7e\x9d\xd1\xa6\x0c\xcd\x89\x9e\x78\xef\xfb\x11\xd8\x24\x31\x68\xff\x39\x6c\x91\x86\xaa\xb5\xc6\xe5\x54\xa5\x5a\x8d\x73\x86\xae\x49\x27\x67\x87\x21\xa0\x55\xa0\x29\x7d\x4c\xd5\x70\x73\x2d\x5f\xa5\x61\xaa\xa8\x2d\xe2\x5c\x41\xd3\x6c\xf4\x88\xe3\xa6\xee\x07\xe6\xae\x36\x6d\x0d\x53\x8e\x60\xc5\xfb\x9f\x21\xd7\xf7\xd2\x61\x14\x5c\x84\xce\x16\x19\x8c\x50\x98\x3b\xd7\x4b\x20\x3e\x14\x96\x7d\x8d\x33\x89\x0e\x99\x52\x28\x8b\x94\xe6\x28\x05\x97\x70\x72\xc7\x8b\x16\xe3\x72\xd9\x40\x39\xa7\x1c\x57\xd3\xd4\x9e\x94\x78\x8e\xb3\x88\xfa\xb3\x0b\x9b\x52\x56\xd6\x3b\x95\x5e\xfa\x18\xb2\x12\x9b\xc9\x59\x2e\xbd\xdd\xe3\x73\x30\x53\xd4\x3e\x0c\xb3\x7b\xf1\x1e\x4a\xae\xa3\xe3\xbc\x47\x68\x06\x19\x24\x76\xe6\x63\x71\xe7\x5a\x14\x16\xcd\x62\x87\x7a\x7f\x4d\x26\xef\x83\x84\xb1\x7e\x54\xab\x11\xe8\x94\x79\x49\xa4\xc6\x35\x9b\x0d\x5a\x32\x4f\x88\x73\x1e\x8d\x24\x11\x22\x69\xb4\xcb\xc6\x18\x47\x46\x6e\x05\x61\xa0\xab\x2f\x59\x7d\xc2\xd3\x98\xf8\x10\x0c\x9e\xc2\x13\xc0\xbf\xe3\x5d\x93\xbd\x1b\xf3\xfa\xb3\x9d\xa3\xae\x1d\x81\x3a\xda\xcd\x09\x05\x5d\x07\x2c\xc4\xd0\xf8\xdd\x4d\xed\xca\xe9\xe6\xa8\xb3\x4c\x38\xff\x02\xdb\x47\x5e\xed\xe4\x76\x6b\xd9\x5b\x4b\x83\xc8\x36\x42\xd2\xed\xa8\x79\x2e\xfd\x56\x75\x63\x43\xda\x70\x2b\xfe\x78\x8c\xe2\x30\xb2\xa1\xc2\x62\xdb\xcb\x9c\x45\x54\x2f\xac\xd0\x46\x4a\x7c\x3f\xae\xf7\x79\x4d\xa1\x11\x56\xd5\x26\xfa\x25\xae\xeb\x51\x6d\xff\x73\xe4\x44\x5f\xa7\xcf\x0d\x89\x49\x42\xfe\x43\x40\xc4\x0d\xc2\x98\xb0\xe9\xd2\x08\xf9\xbc\x17\xb5\xbf\xbd\x5e\x02\x35\x0e\xc8\xa3\xf6\x41\x73\x78\xaa\x4c\x65\x71\x09\x75\x85\xdf\xcb\x2e\x04\xbb\xd4\xdc\x60\xfa\xad\x44\x42\xd4\xbc\x16\x8b\x66\x26\xac\x3f\x7c\x14\x0f\x97\xf1\xd3\x43\x37\xd8\x2c\x96\x68\x38\x1e\xf6\x41\x32\x5c\xe4\xb7\xce\x84\x4d\x40\x1d\x7d\xa4\xc2\xa1\xaa\xbb\x29\xba\xbf\x1d\x88\x95\xcb\x86\x50\x49\x7e\x13\xf9\x85\x04\xcd\xc6\xf8\x8b\xea\xd4\x1d\xba\xf2\x72\xf5\xb9\xde\x74\x62\x0a\x76\x91\x48\x25\x9e\xbf\xe6\x16\xa2\x6d\xd0\xcf\xe8\x44\x60\xdf\x00\xff\x5c\x67\x6b\x15\xbb\x48\x31\x86\xca\x2f\xc6\x77\xc8\x3d\x4e\xe6\x9f\x96\x81\x74\xcf\x88\x5e\xdb\xf1\x53\x5b\xa5\x62\x2a\x82\x2a\x77\x97\x3c\xe1\xaa\xda\x17\x3c\x5d\x22\x4c\xd3\x16\x3d\xb6\xdf\x16\xb7\x87\x4b\x63\x67\xfa\xce\x6a\x5e\x0c\xd7\x0d\x38\x1e\xd7\x94\x0c\xb3\xa7\x9b\xce\xb2\xca\x98\xac\xf9\xea\xe2\x50\xf6\x1a\xcb\xbd\xc7\x56\x5b\x0f\xed\xe8\x11\x5f\xdb\xd0\x70\xe0\x54\xa4\x39\xdb\x18\xb5\x89\x4b\x42\x0c\x9e\xc1\xff\x01\x4d\xc7\xbc\x9d\x3d\x05\x51\xbc\x1d\xec\xbf\x36\x66\x05\xc7\x9e\x0c\xfb\xed\x13\x55\x91\x83\x81\x9b\xb2\xe9\x91\xb6\xa9\xd4\xd8\x28\x18\xd6\x1a\x9d\x21\xf8\xb7\x2b\x30\x54\x8b\xd5\xa8\x81\x57\xaa\x39\xf9\x5d\xb5\x0f\xfb\x65\xc0\x97\x6b\x24\xe9\xcb\x5d\x48\x60\xb6\x36\x95\x05\x33\x38\x76\x81\x93\x16\x75\xd7\x52\x3b\x97\xb7\xe5\x51\x9c\x83\x1a\x1c\x43\xc4\x2c\x1e\xc2\x82\x1f\x77\xb8\x8d\x95\x43\xdd\x9b\x98\x7a\xea\x3f\x1c\x58\xac\x6b\xa9\x97\x9f\x56\x7f\xe3\xc8\x83\x5d\xc8\x3f\x4d\xf2\x11\xaf\x2a\x09\xf4\xa4\xaf\x4e\x19\x51\x58\xd0\x8b\xb7\xb1\x87\x38\x6b\xc4\xf2\x6c\x76\x3b\x84\x5f\x01\x86\xfb\x1a\x98\xcd\x20\xac\xa5\x7a\x42\x80\x50\xbc\x8b\x38\x6f\xc5\xcf\x8c\x03\x55\x45\xbb\x61\x28\x6e\x51\xba\x61\x3e\x37\x21\x70\x29\x96\xf7\x2a\xdc\xbe\xea\x6f\xc7\x8a\x50\xe5\x7e\x94\x81\x20\xa3\x74\x9c\x09\xcb\x72\x9c\x92\x8e\x1f\x04\x97\xdf\x19\x75\x2e\xe8\xb3\x55\xeb\xb8\x5b\x9c\x50\xe4\x09\x2a\x40\xdc\x6a\xac\x14\x02\x18\xdd\xea\x7f\xfc\xe2\xf5\x20\x19\xca\x61\x44\xfc\xdc\x90\x3d\x7d\x83\xf4\x57\xec\x5f\x08\xc7\x8f\xa0\xd1\x28\xc1\xf7\xd9\x54\x90\x7a\x23\xda\x57\x62\xd7\xa3\xe8\xc4\x62\x7c\xac\xfc\x18\x57\x08\xaf\x29\x49\x32\x2a\x55\xea\xfe\xcd\x35\x95\xec\x25\x55\x37\x5c\xfd\xf4\x92\xff\x1a\xb8\x51\x42\x22\x32\x9b\x59\x1a\x57\x2f\x25\x03\xa5\x9c\x2f\x9f\x49\xbb\x9b\x63\x9b\x86\x29\x9d\xa3\x13\x20\x6c\x3f\xd0\xbc\x2a\x63\xa2\xfe\x03\x5a\x7f\xe5\xb4\xd7\xe8\xfb\x89\xfa\xe4\x76\xa3\xfc\xac\xdf\xd7\x96\x71\x87\xeb\xd1\xf8\x34\x68\x2e\x5f\x47\x0c\x9e\x17\x52\x61\x26\x21\xaa\x42\x46\x29\xae\x1d\x21\x9f\xb0\x52\xc1\x33\xcc\x1e\x4e\xbe\xd2\x33\xb8\x78\xe5\x5a\x2d\x3b\x09\x2e\xe7\x62\x70\x2d\xfd\x83\x01\x51\xb0\x7f\xe8\x43\xab\xb1\xcb\xcf\x55\x46\x78\x8e\x6a\x71\xa3\x45\xda\x14\xe5\x74\x75\xad\x23\x6c\x08\xdd\x90\x06\x1e\xb9\x83\x22\xd6\x2b\x33\xdb\xc8\x44\x94\x6d\x83\xb2\xa3\x73\xff\x1e\x5e\x8e\xab\xdb\x4f\x0b\x2c\x44\x61\xd6\xb2\xc6\xe0\xfd\x4a\xf4\xed\xfa\x00\x5a\xfb\xfe\xcd\x8d\x40\x3b\xca\xd3\xfd\x8d\xe4\xe1\x69\xe5\x7d\x95\x33\xea\xc0\x6f\x62\xc0\x9c\x45\xce\x5b\x35\x29\xd9\x4e\x4f\x3e\x8f\xdf\xfb\xe5\x54\x0d\xaf\xbe\xde\x9e\x00\x93\x26\x1f\x9d\x5e\xca\xb1\x83\x66\x06\x2e\xbe\xd3\x42\xe0\xdb\x75\xd4\xdf\xc0\xea\x2b\xc9\xbe\x18\x7a\xea\xea\x3e\x9d\x10\xf0\x4f\x7d\x2f\x11\xd0\x41\x17\x9d\x19\xf9\x52\x38\x38\x74\x7c\x49\xf4\xef\x57\xd5\x65\x96\xb2\x58\xba\x7a\xa2\xb5\x01\xb4\x16\x34\xe3\x5f\xbc\xe4\x02\x12\x15\xec\xb4\x94\x72\xd6\x94\xd3\x28\xce\xdb\x15\xd4\xc2\x8c\xca\x37\xc3\x65\x3a\xac\x49\xa1\x1c\x7b\x55\x22\x9a\x0a\x58\x35\xd1\x9c\x74\x7d\x0c\xc2\x1f\x39\xd4\x56\x86\x85\x7b\x7b\x9d\xbd\x84\x26\x76\xf3\x92\x67\x27\xbb\x72\xd0\x14\x50\xdb\xb5\x6b\xb0\x75\x9d\xe1\xad\x02\x96\xcb\x3a\x37\x0c\x04\x58\xd7\x1f\xe2\xd2\x53\xfc\x8c\x2b\x8a\xe9\x4b\xee\x2a\xd5\xb7\x38\x16\x44\x77\xcc\x3a\x45\x5b\xf2\x50\x9d\xae\x1f\xaa\x37\x2a\xed\xec\x68\x80\xec\xb3\x03\xf9\x27\x13\xfd\x49\x7d\x16\x73\x89\xb4\x14\xb4\x7f\xbe\xf1\x37\x05\xee\x1d\x91\x04\x57\x86\x0b\x88\xe8\x74\xcd\xe4\xe2\xca\x26\x60\x77\x72\x11\x52\xc9\x31\x0d\xd8\xfe\x6d\xb9\xb9\x66\xce\x8c\x85\x5f\xb1\xbf\x8c\x88\xea\x90\x73\x94\x62\xbe\xe3\xa0\x3d\xb8\x7e\x25\x20\x2c\x92\x2e\x10\xf0\x7d\xf0\xdd\x6a\x55\xc0\x88\x2d\xe1\x67\x86\x41\x5f\x50\x3b\xea\x99\x8c\xed\x96\x3a\xaf\x13\xaa\xa0\xcb\xc4\xc7\x3a\xc6\x8c\xcc\xe6\x74\xcd\xc1\x19\xf2\x3e\x57\xff\x01\xe7\x86\x56\xdb\x25\x85\xa8\xb9\x3c\xbb\x3c\x73\x8f\x0a\x9a\x9a\x3d\x47\x43\x7c\x1e\x0d\xc8\x0f\x6c\x48\xbb\x8c\x6c\x83\x75\xfb\x6d\xd6\xc5\x4d\x1e\x99\xeb\x75\x88\xe5\x13\xfe\x9e\xa9\x57\x13\x83\x22\xae\xf7\xc6\x14\x97\x54\xd7\x9e\xc8\xeb\xaf\x2e\xc6\x7c\x38\x94\xaf\xf8\xd4\x30\xc8\xd8\x36\xea\xa4\x64\x27\x48\x96\xa7\x02\x2c\x36\x7d\xc1\xff\x61\x25\xf5\x68\xb2\x63\x83\x67\x87\xd5\xda\x29\xbd\x84\x0e\x1d\xd8\x37\xfe\x34\x8a\x07\xaf\x58\x09\x73\x88\xd4\xb6\x71\x88\xb8\xd4\x18\xde\x52\x49\x09\x2d\xfb\x1b\xc4\x47\x2c\x66\xa3\x8f\xb0\x31\x1e\x2b\xd1\x93\x3e\x41\x85\xab\xf5\x2c\x93\x78\x7d\xd9\x0e\x6a\xb3\x3f\xdb\x58\x92\xe6\xa4\x5e\xa9\x58\x84\x88\x74\xb7\xde\xc0\x9d\xde\x91\xad\x1f\x71\xc7\x08\x06\xbc\xbb\x6d\x0d\x78\xe6\xde\x4c\x20\x20\x82\x2e\x45\xa1\xa8\xf3\x24\x63\xc0\xa2\xbd\x87\xc7\x09\x8e\xf6\x5a\x52\x3d\xba\x50\x1e\x0a\xf0\xe0\x0e\x6a\xa5\xfc\xeb\x6d\x8a\x75\x73\x5e\xee\x42\x8b\xc4\xb3\x14\xfa\x71\x8d\xe6\x38\x91\x8f\x04\x95\x70\x14\x6f\x68\x14\xc1\x14\x1e\x0b\xa9\x0d\x0d\xcf\x72\x94\x67\xf1\xf3\xc1\xcd\xcc\x5f\x81\x7b\x1b\x78\x9e\xf8\x32\x8f\xc6\x60\x45\x38\xa4\xfa\x26\xe9\x0a\xcd\x45\x78\x1e\xc4\x61\xfc\xd3\x74\xd0\x80\x75\x78\x84\x98\x61\x8e\x36\x6f\x62\x51\xcb\x04\xa2\xb3\x0d\xbf\x5a\x8d\x47\x61\xda\x3d\x63\x77\x30\x44\xe3\x83\xe5\x7e\x14\x59\xe2\x66\xf2\x78\xa8\x90\xe4\x40\xc1\x02\xbc\x48\x83\x8c\x69\x81\x4a\x5c\xc3\x30\xf6\x99\x1d\x92\x9d\x66\xb9\x19\x18\x41\x34\xf8\xab\xb0\x38\x17\x77\x83\xb6\x1c\x34\x27\x95\xd4\xfc\x8a\xbf\x6d\x1e\xbf\xc9\x87\xdc\x66\xf9\xfd\x0f\xed\x8e\x9c\x61\x4f\x83\xce\x53\x3a\x3e\x8d\x3c\xfe\x13\x0b\x96\x9e\xba\x38\x38\x1b\x5d\x09\x0a\x0b\x65\xfb\xbe\x94\xf7\x3a\x27\x6e\xc2\xfe\x33\xef\x47\x35\x49\x02\x1d\x74\xdd\x86\xfc\x70\x3b\xd1\x11\xd3\x29\x6b\x7a\xbd\x2d\xd3\x28\x27\x49\xf2\xb4\xf8\x59\xee\x03\xa2\xf1\xe3\x0b\xc1\x47\x31\xcf\xb6\xd1\x59\x64\xbd\x73\x7a\x90\x2e\xcc\x1a\x51\x24\xc8\x7f\x28\x11\x22\xfb\x26\x54\xf8\xc5\x78\x56\x5e\xbd\x2f\x80\x91\x77\x46\xfa\xcc\xd2\x82\x85\x2f\x30\x4e\x2f\x24\x30\xc9\x35\xd8\x39\x2e\xf1\x7e\x61\xa8\xd7\x73\x73\xdf\xd3\x5e\xf2\x1e\x6e\x45\xd1\x90\x3d\x40\xb7\x3d\x75\x11\xed\xb8\xda\x48\x44\x9b\x66\x1e\xa9\x5c\x4a\x11\x71\xae\xdd\x59\x40\x98\xe2\x1c\x4f\x6c\xc2\x46\xe9\xcd\x18\x7e\x19\x6b\x2a\x55\xca\x2f\x36\xed\x16\x3f\xe0\xf3\x9f\x78\xa2\x06\x0c\x75\x4c\x84\x97\x98\xe6\xb1\x83\xf1\xe4\xcb\xe8\x26\xb9\x0e\x13\x45\x79\xa2\xe2\x52\x71\x4c\x54\xa3\xab\xb4\x5c\xcb\xe3\x60\xcd\x7b\x8b\xe9\xb0\x6b\x71\x67\x38\xbb\x76\xa8\xae\x56\xfe\x19\x35\x77\x3e\x39\x6c\x99\xaf\x96\xe3\xc2\x64\xd6\xc2\x74\x70\xba\x5f\x34\xe3\x49\xb8\xfb\x03\xef\x87\xf7\x7d\x5a\xdb\xac\x2c\xfd\x6f\x78\x43\x62\x69\x63\x68\xb6\x37\xf1\x16\xdb\x28\x7a\x2e\xb0\x64\xc9\x94\xa7\x90\x22\x7e\x18\xc3\x14\x90\x0c\x1d\x7d\x1b\x43\x2c\xf6\xeb\x3f\x29\x58\x3e\xaa\x11\x35\x78\x55\xbb\x2f\x44\x52\x5c\xa4\x2f\x98\x38\x20\xdd\x05\x18\xe6\x8c\x14\x9a\x83\x89\xcb\x23\x44\x1c\x7a\x6b\x4d\x2e\x01\x38\x05\xac\xd3\x28\xf9\x6a\xa9\xd9\x5e\x6c\x53\x7d\x69\x8b\x30\x21\x7c\xcf\xe0\x34\xe5\xee\x2e\xa3\xa7\x6f\xd6\x56\x38\x17\x3c\x67\xe8\xf6\xb8\x67\xf3\x5c\x6f\xe1\x83\xe9\xcd\x15\x9e\x5f\x32\x0a\x16\x53\x05\x14\xbe\xa4\x7a\x2d\xc0\x2d\x7b\x90\x2d\xdd\x7f\x1b\x69\x8b\x8f\x0f\xb3\x77\xd4\x43\x0c\x5b\x24\xfa\xdd\xa0\x38\x3f\x24\x59\x54\xca\x23\x7b\x97\xb6\xd3\x1f\xaa\xb3\x8a\xd8\x84\xb7\xea\x6d\xb4\xc3\xf2\xe7\x96\x91\x0d\x46\x07\xc1\xf3\xd3\xda\xcb\x0e\x2a\x7c\xc5\xd5\xb8\x05\x98\x50\x6d\x74\xa0\xc2\xf9\x59\x8d\x78\xe3\xfc\xbd\x2a\xdc\x45\x58\xf7\xdf\x6b\xe9\x77\x74\x58\xa7\xc1\xe0\x9b\x6a\x91\xd8\x2c\x6a\x8a\x1c\xa0\x98\x1d\x3e\xf8\xef\xb5\x48\x1c\x6d\x46\x4b\xd7\x6f\x3a\xfc\x10\xd3\x6a\x92\x51\x84\x98\xb4\x58\x6b\xcb\xbe\x6d\x3f\xb5\x6e\xee\x4f\x30\x96\x61\x9c\x97\x2c\xfa\x1d\x77\xae\x6b\xcc\x6b\x87\x29\xd4\xad\xa9\x31\x9f\x22\xab\xf7\xc6\x46\xca\x06\xc8\x56\xd0\x43\x53\xc7\x42\xdc\xa9\x57\xcb\xff\x09\x31\xe9\x70\x0d\xa6\x8f\xe5\x60\xb5\xa6\x45\x7e\x6d\xf6\x91\x29\x43\x5d\x6c\x6a\x0b\xc6\x9e\x43\xb2\xcf\x29\x76\x22\x37\x25\x6a\xc0\xb0\x00\x1a\xba\x94\x59\x32\x39\xda\x50\x00\x0d\xa3\x78\x58\x19\x11\x88\xfa\xef\xb2\x7a\xcd\xee\x6f\xf2\x7b\x7b\xd2\x6a\xfb\x58\x71\x99\x80\xdb\xb1\x1e\xf6\xdd\x72\xd9\x32\xb2\xec\x79\xc9\x76\x8b\x56\xc4\xa9\x5d\xa8\xa7\xd6\xa5\x02\x04\xa9\x6e\x4d\x86\x72\x4e\x7b\x0e\xef\xcb\x38\xba\x35\xc6\x6e\x20\x6c\x08\xa2\x5e\x71\xc2\xbf\x43\x98\xa3\xf3\x9b\xf9\x5f\x30\x79\x80\x32\xad\xbb\x36\x78\xd9\x3d\x0a\x89\xd2\xd2\xcc\xd6\x0d\x22\x62\x59\x8c\x29\xce\x35\x4d\x83\x5c\xa0\x94\xc1\x83\x88\xf4\x48\x99\xd9\x9d\x47\xd3\x94\x87\x15\x49\xbd\x60\xa3\x35\xa3\xda\x8a\xc2\x3f\xef\xa7\x8f\xc2\x90\x7f\x91\xa6\x30\x7a\xf8\x73\x31\x57\x0f\x8e\x22\xd5\x0d\x0d\x9d\x98\xfe\x3c\x50\x5e\x02\xe9\x79\x74\x81\xa9\xcd\x5f\x95\x0a\x0b\x8e\xed\x91\x4b\x8d\xcb\xa0\xea\xdc\x04\x13\x55\xcf\x74\x96\x07\xd5\x35\x2e\x53\x61\xaf\xd2\x94\x64\xb2\x71\x94\xe6\x2e\xce\x8d\x68\xad\xcc\x92\x5d\xac\x3c\x6c\x6d\xfb\x2e\xa5\x1a\x16\xbe\x85\xcf\xe5\xf8\xe9\xb8\x53\x90\x7f\x1e\xd5\xcf\x18\x1e\x56\xe9\x0b\xff\xa0\xf9\x82\x5d\xb4\xcf\xfd\xf4\x09\x84\x55\x74\xfb\x82\x99\x43\xee\xbb\x9c\xe1\x4a\xa8\xaf\xb5\x5e\xd2\x9f\x34\x6c\x6f\x87\xcd\x5d\x7f\x32\x0c\xff\xfe\xa5\xd6\x1f\xd9\x2c\xbc\x07\x66\x95\x02\x73\xd6\x38\x11\x89\xdd\xd0\x1e\x08\x3c\x7c\x41\xa8\x0f\xcc\x2d\xbe\x60\xd1\x82\xb1\xb1\x78\x16\xee\xc1\x30\x1b\xba\x9f\x24\x0c\xbd\xff\x71\xf5\x48\x12\xea\xfd\x4f\xc4\xbe\x3b\x36\x14\x57\x83\x41\x67\x3a\x55\x21\x11\x32\xae\x6d\x1a\x06\xbf\xaf\x3d\xe8\xf3\x1c\x02\xa5\x37\xb2\x3b\xca\xb8\xf4\x14\x5f\x0b\x6c\x97\x35\x07\x95\xc4\xd1\x85\xc0\x93\x46\x74\x13\x74\xbf\x8d\x4f\xe1\x66\x9b\x23\x39\xed\x71\xea\xac\xc3\x7c\xbc\x33\x0a\xa8\xd1\xdd\xe7\xc9\xb2\x5a\x0d\x08\x2f\x83\x43\x39\xf6\x66\xb6\x78\x14\x8c\x05\x98\x3b\x9a\x7e\x46\x81\xf9\xf0\x14\x3b\xed\x19\x62\xe4\x19\x1c\x48\x71\xbe\xbc\xb2\x38\xb4\x65\x7a\xdf\x77\xc2\xac\x64\x83\x51\x2e\xd5\x1a\x09\xd4\x10\x1e\xfa\xbf\xef\xb1\x35\xa3\xbb\x25\x9c\x08\xa6\x35\xb3\xf5\x10\x47\x9f\xd2\xc7\x0b\xed\x68\x4a\xea\xe4\xf2\x15\x58\xe7\x58\x0d\x2b\x9c\x2d\xab\xbe\x25\x6a\xca\x97\x89\x01\xa2\x7a\xec\x7e\xfc\x48\xea\x03\xe3\x1e\xd4\xa7\x16\x68\xa6\x0d\x0d\x78\x9d\x38\xfc\xf6\xeb\x89\x52\x36\x66\x93\x29\xab\xe6\xf6\xb5\x9c\x3a\x3d\x7e\xcd\x56\x22\xc5\xf8\x23\x9c\x75\xb0\x24\x88\xa6\xa0\x71\x69\x8b\x48\x81\xe6\x69\xf1\x8b\x48\x41\xf7\xe2\x34\xaa\xcd\x04\x2d\xb7\x48\xd9\xae\xe0\xda\xcd\x2d\x2a\x5e\x4c\x6d\x69\xdb\x1a\x2f\xe4\xef\x51\x43\x14\x84\xa8\x6d\x5d\x4c\x5e\xd1\x77\xd0\x05\x92\x3f\xf2\x76\x7c\xe8\xa2\x4b\xda\xc5\x6d\xca\x4b\x09\x28\x4b\x90\x57\x89\x09\x0d\xa6\x54\x1c\x70\x9c\xb8\x90\x10\x7e\xe9\xda\x5f\x95\x26\x50\x5f\x1b\xd2\x5d\xb0\x6b\x31\x66\xb9\x96\xb0\x20\x6b\x85\xed\xe0\x23\x6d\x41\x82\x19\xa4\x83\x4a\xaa\x4b\xdd\x42\x83\xd9\xac\x1f\x72\x64\x96\xd3\xb7\x13\x38\x9d\xb7\xf1\x19\xae\xbb\xf3\xe3\x1a\x07\xff\xc3\x2a\x8e\x30\xc9\x1e\x71\x64\xf0\x0b\x64\xe4\x8a\xe9\xce\x6b\x0a\x35\x5c\x54\x95\xf8\x5f\xe6\x96\x31\x8b\x73\x6c\x3d\x3c\x12\x50\x16\x6a\x8d\xd2\x2c\xc9\x73\x3b\xa5\xfe\x32\x30\xb1\xbb\xa9\x6a\xe9\xbb\xe8\x9e\x22\x13\xe4\xb2\x85\x96\xf7\x7a\xfb\x7e\x23\xc9\xcb\x5f\x3a\xc9\x83\x12\x3f\x15\x14\x1b\xa7\x63\x73\x20\xdc\xcc\x80\xf9\xa8\x85\x6d\x71\xa8\xd1\x54\x19\xdd\x4f\xa6\x59\x5a\xdf\xac\xe3\xf8\x87\x94\x41\x59\x4e\x8b\xb1\x25\x55\x56\x30\x9d\x42\xde\x2d\x9c\x06\xdb\x77\xbd\x55\x73\x8c\xe1\xc7\xf0\x09\x89\x67\xd5\xe8\x1d\xeb\x5c\xc8\x38\x99\xa6\xfb\xd0\xd4\x47\x87\xe9\x05\xb9\xb4\xf3\xc3\x87\x57\xfb\x95\x99\xef\xc2\xb9\x3c\x84\x0c\x27\xa8\x6c\x78\x77\x31\x31\xad\x9c\x66\x55\xa4\x3b\x2d\xd5\x5f\x09\x4e\xae\x77\xf1\xaf\xec\x52\xee\xbe\x20\x0f\xf0\xd6\x9a\x5d\xc6\x34\x2a\xbf\x60\x69\x83\xc9\x41\x95\x43\xc8\x0f\x09\x63\x53\x99\x35\x2e\xe8\x44\x19\x1a\xc0\xcb\x82\xfe\xe5\x75\x6d\x2c\xae\x51\x04\xec\xbc\x90\xb7\x97\x5d\xee\x37\x4e\xdc\x05\xde\x8f\x78\x06\xe6\x2d\x36\x1a\x58\x15\x4d\x55\x1e\x66\xdd\x56\x9b\xf5\xd8\x1c\x5e\xb8\x4d\x13\x2c\xa1\x1c\x49\x29\xf5\x88\xe6\x5f\x3a\xe1\x08\xae\x02\x97\x9a\x2a\xde\x89\x8a\xc0\x44\xb6\xec\xb7\x5b\x52\x2f\xe3\x37\x8f\xf6\x98\x98\x29\x86\x86\xc9\x2f\x26\x42\xeb\x58\x24\x66\xb2\x6a\x6e\x16\x26\x63\xb5\x25\x08\x59\x26\x2e\xb3\x23\x63\xa7\xea\x68\xce\x8a\x5a\x1e\xdc\x4a\x8c\x7a\xad\xf1\x33\x69\x28\xac\x96\x24\x7f\x5c\x06\x5d\x9c\x71\xbb\x0e\x64\x1e\x40\x21\xb7\xea\xe7\xa7\x78\x58\x2f\x49\xf1\x76\xb0\xe9\xb9\x8a\xf5\x97\x2f\x4e\x2b\x81\x99\x0d\x48\x70\x65\xd9\x96\xb9\xcf\x94\x28\x94\xfb\x06\xf9\xb0\x99\xa7\x0a\xa2\xaa\x16\xfb\x3d\xda\x51\x25\x6e\x8f\xc4\x71\xfb\xea\xc8\x0b\x3f\xbd\x21\x8e\x86\x52\x0d\x34\xcf\x2c\x68\x1a\x2b\x5f\x89\x6b\x96\x34\x94\xb1\x0e\xbb\x09\xd6\x69\xe1\x70\xb6\xae\xe0\xee\xd7\x46\x24\xf9\xf9\xff\xfe\x51\xbc\xf3\xc2\xaf\x3a\xfd\x59\xe9\x3e\x81\x60\xbf\x45\xb4\x5f\x61\x89\x87\x45\x90\xc3\x29\x9f\x34\x56\x22\xc3\x46\xf7\xb1\xd6\xa4\xc8\xef\xf6\x4f\xb5\xa6\x87\x0b\xc2\x4a\x25\x23\xa2\x5b\x89\xb9\x52\x08\x35\x0f\x07\xc9\xb1\xc8\xf3\x6c\x0f\xef\x06\xda\x83\x43\x8a\xd4\x49\x05\x35\xd2\xb6\xf0\x24\x06\x9b\xc2\x5c\x0a\x27\x58\x68\x34\x1e\x07\x6c\xa6\xa5\x77\x36\xf1\x61\x39\x27\xbd\x01\x0a\x71\xb8\xfe\x85\x55\xb3\xee\x00\xbb\x65\xfb\x5b\xc1\xc8\xaa\xf1\xb8\x42\x6d\x73\x10\x20\x29\xfd\x41\x14\x3f\x2b\x6c\xdb\xda\x88\x25\x2f\x83\x3c\x5e\x73\x41\x88\x45\xcf\x21\x2f\xef\x3b\x90\xea\xcd\x31\x38\x80\x85\x7e\xc4\x42\xba\xb5\x30\x49\x79\x9f\xcf\x01\xdf\xa6\x5c\xc7\x26\xac\xd8\x09\x85\x67\x1b\x1d\x1d\x5e\x10\xfb\xda\xe1\x16\x20\xbe\x6c\x1d\x63\x97\x99\x25\xe5\xa2\xeb\x81\x6f\xd9\x86\x3e\x44\x8c\xf5\x86\xa0\xb5\x61\x36\x64\xaa\x26\xaa\xd7\xb4\xfd\x44\xd3\x96\x27\x12\x66\xeb\x01\xf4\x39\x14\x36\x4d\x21\x07\xf8\xe9\x56\xcd\x2c\xa3\xf7\xab\xef\x7a\x92\x29\x2a\xd8\x3c\xa8\x60\x3d\x50\xee\x09\x9b\x67\x64\x04\x73\xfb\x30\xa7\x23\x16\x55\x07\xd9\x0d\x44\x6f\xa1\x2a\x5f\x0e\x4b\xd3\xbf\xf9\x6a\x12\xf4\xc9\x9c\x39\x5d\x85\x8c\x37\x1f\x47\x94\xc8\x46\x9c\x35\xad\xbe\xc4\x69\x52\x2b\x87\xfc\x38\xba\xdf\xe4\x49\x7c\x90\xae\x80\xc1\xdf\xcd\x31\xb0\xd4\xca\x34\x55\xea\x27\x7c\x1d\x74\x47\xed\x2b\x4d\xbf\x59\x24\x83\x9f\x01\xd9\x35\x59\x8c\x84\xc4\xe2\xfa\x04\xef\xb7\x1e\x20\x35\xbc\x96\xc9\x1d\x68\x47\xdb\x03\x98\xda\x3f\xa7\x3e\x23\x8d\xaf\x72\xb0\xc8\x2b\xb3\x8a\xbc\x13\xa4\x8a\x47\xbe\x78\x96\x90\x32\x54\x73\x62\xc7\x0e\x61\x4a\x2e\xf1\xc4\xbd\xd1\x7d\x27\xea\x23\xa1\x84\xdb\xc6\x5d\x7a\xea\xca\x9a\x54\x4e\x5f\x7d\x8b\x0b\x1a\x0a\xd1\xa3\xad\x79\x83\x17\x80\xc6\xa6\x5c\xa2\x6c\xae\x28\x62\x9d\xd5\xda\xab\xad\xcc\x50\x87\x52\xb8\x62\xa7\x48\x76\x45\x37\xf9\xc1\x0a\x02\xc7\x56\xdf\x28\x21\x12\xdb\x28\xb7\x31\x38\x24\x86\xde\x27\x32\xf8\x01\xd2\x3b\xea\x96\x1f\x6c\x91\xa5\x72\x03\x94\x57\x4c\x65\x84\x61\x52\x1e\xdd\x49\x88\x0b\xbc\x13\xb3\x83\x32\x67\x09\x65\xc7\x06\xfa\xb3\x7d\x32\x27\x7e\x6c\x6b\x32\x5a\xeb\x34\x77\xeb\x1b\x3a\x19\xf7\x5e\x39\xc8\x47\x30\xba\x62\x7e\x3a\x0b\x35\x87\x54\x49\xb3\x54\x81\xd2\x87\x3a\x59\x50\xa3\xb5\x12\x77\x1e\x09\x2c\x27\x42\x14\xf0\x48\xd1\xdc\xda\x1f\x4a\xe8\x3d\x20\x86\xfb\xa0\xcb\x21\x65\xad\x74\x42\x77\x8e\x11\xa7\x44\x04\x27\x74\x14\x17\x75\xb8\xeb\xe5\xec\x7f\x6e\x5c\x4d\xe8\x02\x5e\xc6\x5e\xff\x04\x85\x48\x73\xb9\x51\x4a\x31\x22\x14\x33\x86\xce\xf6\x8c\xf0\xfd\x57\x07\x58\xa8\xd3\xa7\xa2\x8d\xc9\x91\x3b\xf9\xf5\x49\x0f\x45\x1e\x19\x42\xfb\x47\xa1\x98\xb6\xc3\xdf\xb9\xa8\x3e\xa3\x02\x38\x3c\xbe\xc4\x2f\x6c\x45\x4c\x6c\x04\x3f\x8d\x50\xc5\xf8\x35\xca\x05\x26\x39\x58\x60\xd3\x77\xea\x84\xa7\x0d\x0e\x9d\x65\x83\x0f\x6e\x60\xf3\x10\x17\x58\x11\x2a\x16\xea\xec\x5a\xb9\x79\xb7\xc8\x3a\x60\x33\x14\xe5\x6a\xb2\x76\x44\x8d\x15\x62\x54\xbf\xc8\x22\x54\xad\x1f\xb8\x60\x64\x73\x48\xa7\x99\x1f\x10\xf0\xb2\x70\x77\xe7\x28\xe1\xe9\xad\xc0\xf1\x33\x54\xc3\xf7\x46\x20\x13\x6c\x89\xf2\x17\x60\xa3\xe0\x36\x46\x30\x40\xdd\xef\xc5\x13\x76\x40\x39\x31\xa4\xa7\x83\xa1\xea\x93\xa9\x9a\x59\x9c\x5d\x72\x8b\xa0\xf4\x36\x05\x7e\x29\xf1\xdf\x5d\x76\x1f\x51\x62\x96\xb4\xfb\x35\x8c\x85\x94\x84\x65\xbe\xa4\xfa\xa4\xa5\x52\x4c\x80\xfe\x41\x91\x3d\x70\x86\x0b\xa9\xb3\x55\x87\x18\x23\x97\x36\xda\xad\x35\x63\xd0\x05\x23\xc4\xe7\xaf\x5a\xf8\x4b\x07\xca\x8d\x39\x04\x67\xc9\x61\xe1\x36\xf9\x79\xe4\x72\xa8\xd2\xdb\x08\x82\x17\xee\x74\xf8\x4d\xb7\x88\xb9\xa9\xdb\xba\xfe\x1e\x96\x38\x24\x39\x14\xaf\xb8\xf7\x4a\xd0\x80\x99\x6f\x41\x41\x94\xc3\x95\xfc\x7f\xc4\x98\x79\xe8\x8c\x38\x97\xcc\x6f\xb5\xd6\xc8\x12\x55\xac\x94\x18\x40\x6d\x50\x23\xa3\x76\x4e\xd6\xfe\x63\x41\xb9\xf7\x57\xd8\x94\xaa\x05\x89\xcb\x2a\xf3\x67\x2f\x85\x3a\xea\x33\x60\x51\xe6\x3c\x70\x9b\x80\x10\x84\xf4\x6d\x21\x9b\x69\xcb\xce\xe8\x2d\x26\x83\x43\x23\x6a\xbf\xe4\x97\xc8\x56\x34\xec\x63\xad\xf0\x99\x34\x4c\xa0\x8f\x32\x69\x71\x2d\x8d\xcb\x56\x51\x1b\xf4\xb2\x05\x47\xb9\x18\xcf\x80\xea\x49\xd3\x14\x8c\x20\x0d\x8e\xc3\x3f\x88\x48\x63\x2f\x47\xf2\x94\x12\x27\xaf\x69\x37\x1d\xe4\x83\x99\xf3\x6b\x0c\x51\x17\x7c\xd2\xb7\xca\xa7\xa9\x5b\x9c\x88\xa1\x91\x39\x38\xbf\xbb\x17\x6e\x32\xf4\x7c\x22\x29\x8c\xd2\x54\x3d\x1b\x11\xe0\x1e\x26\xfb\xfd\x48\x50\x84\x38\xfa\xab\x11\xa3\x0a\x3c\x8d\xc8\x56\x6d\xe9\x2a\x6c\xc8\x30\xb5\x0c\xf9\xc3\xd8\x18\x5c\x56\xb3\x9f\xa1\xa8\xe1\xb0\x05\xa2\x1a\xcf\xa7\xc5\x16\xad\x1d\x11\x31\x7d\xc0\xe6\x20\x30\x6f\xc1\x1e\xec\x1f\xbb\xc9\xc8\xba\xc5\xfc\x9c\x89\xf2\x12\x3b\xd9\x2c\xbe\x39\xef\x5b\xfa\xd9\xe0\x34\x7c\x09\xcd\xbb\xd8\x03\x9f\xc0\xaa\xc3\x0c\xd7\x94\x83\xa4\x59\xbb\x8a\xf1\x43\x94\xd2\x85\xc5\xca\x21\xdc\xca\x5d\x00\x0c\x6a\xa6\x1b\x0b\x96\x4b\x56\x06\xd3\x45\xfb\xfa\x47\x01\xb1\xd2\x23\x92\xb5\x73\xd6\x12\xf2\x8f\x8c\xce\x45\x8c\x2e\x1f\x22\xe6\xfe\x2e\x97\xd3\x7d\x27\x4d\x59\x66\xc5\x92\x92\x40\x84\x9e\x49\x59\xa5\xd6\x8f\xf4\x49\x87\x48\x21\x71\x44\xbb\x30\xa6\x3a\x1a\xcb\x86\xa1\x63\xe1\x65\x60\x6c\xb7\xa9\x39\xf1\xd9\xdf\xc1\x00\xa4\xd8\xa4\xc4\x17\x34\xc5\x98\x96\x7a\x04\x8e\xf0\xcb\x3d\xa4\x34\xf6\xf4\x8d\xf3\xed\x9b\x22\xa3\x1e\x24\x20\xc8\x07\x69\xbf\x43\x1d\x52\xde\xbb\xe9\xd8\x44\xa1\x45\xcb\x28\xf3\x24\x9c\x37\x0c\xc7\xc0\x2a\x39\x0f\x41\xd0\x41\xa1\x40\x99\xb3\x73\xc6\xd2\xc7\xdc\x94\x36\x93\x91\x42\xe8\x86\x5e\xf7\xb8\x35\x14\xa1\x5c\x47\xe2\x67\x92\x74\xa1\x46\xa7\x29\xfc\x70\x2d\x11\xfc\x99\x57\xe9\xab\x43\x5b\x37\x44\xc7\xae\xaf\x34\x25\xfd\x38\x8f\x3b\x15\xf7\xcc\xfc\xb6\xeb\x6b\x20\xca\xe7\x50\x73\x04\x22\x8c\x17\x6b\xc9\x36\xec\x88\xfe\xdf\x17\x37\x25\xe0\xef\x52\x30\x3a\x2a\x4b\xed\xb7\x76\x55\x3b\xe1\xb0\x58\xfc\x59\xcf\xf5\x9f\x26\xe0\x71\xc6\xcb\xf1\xec\xed\x0f\xc6\x41\x6e\xa1\xf5\x66\xe4\xe5\x09\x08\x17\xb6\xf0\xd7\x29\xbc\xdf\x42\x7f\x50\x13\x12\xa4\xa8\x60\xc3\x79\x4d\x27\xa6\x8b\x09\xaf\xf1\x7f\x44\x08\xd9\xbe\xa8\x34\xb9\xa0\xf1\x75\xb3\xe1\xc0\xbd\xd2\x72\xc7\xb0\xd7\x43\xae\xd0\x9f\x34\xb8\x51\xd2\xe6\xc5\x60\xe3\xd1\xf0\x8a\x2e\xca\x9d\xaf\x2c\x5b\xb1\x93\x41\xf4\x77\x63\xc0\x96\x3f\x55\x3c\x2b\x3e\xd2\x93\x22\x4e\x41\x8f\xc1\x9e\x87\x6a\x1a\x6a\x05\x61\xb8\x13\xe4\x6b\xb3\x3d\xca\x44\x25\x0a\xca\x30\xb7\x71\xe2\xa8\x23\x87\x52\x1e\x19\x7c\x57\x0d\x19\x0d\xcb\xd4\xde\x47\xc2\x7b\xed\x20\xf0\x5c\xf9\x2e\xc2\x3d\x7b\x9e\x1d\xae\xa9\x5a\x70\x33\xb4\x34\xa9\x55\x1c\xff\x09\x7e\xe1\xcc\x8f\xda\xea\xd7\x2b\xbf\x1c\xaf\xb0\xd9\x15\x06\xd7\x08\x52\x24\x8e\xfe\x4c\xb9\x0a\x10\x3f\x2a\x22\x60\x43\xe6\x45\xee\xc9\x5d\x87\x86\x4d\xea\x9e\x38\x2f\x50\xec\x7b\x15\xf9\x06\xb0\x8f\x95\x8c\xc0\x9b\xcb\x2c\xd8\x26\xc8\xf0\xc5\xf4\x7d\x07\x93\x92\x19\x5e\x8e\x70\xc1\xc4\x16\xb8\xd0\xe7\x30\x30\x82\xf3\x9d\x8a\x84\x33\x87\xa0\x66\x7f\xb4\x61\x9b\x69\x7d\x90\xeb\xbb\x83\x72\x06\x71\x37\x8f\xd5\xbc\x73\xd6\x40\xf4\x35\xa3\x30\xb8\x94\xe8\xb8\x66\x39\xb0\xdc\xf8\x37\xf2\x12\x20\xf8\x74\x1c\x3d\xb5\xa1\xb7\x88\xd4\x0f\x0b\xed\xe1\x71\x98\x55\xa2\x94\x37\x28\x37\x4c\xd0\xa5\xa8\x10\x1e\xca\x5e\xd4\x36\x76\x33\x28\xe5\x47\x49\x6e\xac\x90\x2c\xe0\x00\xc6\x0c\x89\x88\x43\x1c\x73\x0f\x03\xe8\x86\xd3\x83\x03\x08\x42\xa0\x08\xb3\x58\xe2\x0b\xc8\xf4\xe0\x3d\x7e\x18\x5c\x94\x62\x12\x38\x65\x90\xb8\x8a\x38\x08\xee\xef\x09\x85\x80\x7f\xf2\xb5\x9a\xe3\x80\xce\x4d\xe3\xfe\x2b\xd2\x5c\xbf\xf0\x5f\xb1\x6e\x93\xc6\xdb\x89\xe8\x81\x6f\x23\x8d\x70\xf9\x27\x57\x14\xbf\xef\x7e\x8c\x7c\x83\xcb\xc7\xf5\x38\x0c\xbd\x2e\xf6\x34\xed\x78\x51\x3c\x5a\x93\xec\x15\xbe\x7d\x9e\x4f\x54\xb8\x9a\x6b\x0f\x1a\x3c\xf3\x6c\x23\x7f\xaf\xe7\xf6\xdb\xfe\xa8\xe2\xac\xe1\xf0\xa3\x91\x37\x99\xb8\x61\xf0\x94\xa6\x0b\x7b\x24\xa1\x6b\x3e\x01\xf6\x16\xeb\xf3\x42\xcc\xeb\xab\x65\x47\xb7\xec\x0f\x7a\x5e\x97\xf1\x5b\x63\xc1\x7c\x98\x2c\x31\xd0\xa7\x52\xb0\x07\x37\x1d\x6c\x90\x1b\xa4\xf2\xb0\xd6\x81\xb5\xc3\x12\xc9\x82\xa6\x92\xb0\x00\x8d\xb9\xb3\xe3\xa5\x76\xc3\xf0\x83\x3a\xa5\x54\xf4\x7c\x5b\x8c\xb2\xf4\x35\xa4\xea\xe3\xd4\x24\xbc\x87\x85\x5c\xa0\xb6\x1e\xe5\x8a\x85\xac\x36\xf5\x31\x9c\xae\x32\x2b\x77\x38\x8c\x94\x1b\xba\x30\x64\x94\x90\x51\x7f\x88\x16\xdc\x41\x55\x31\x9a\x5d\xb3\x10\x53\xa3\x1d\x52\x5d\x1e\x52\x2d\x1e\x52\x23\xbf\xa8\xd5\x1c\x56\x49\x35\xa6\x28\x13\x97\x8e\x0c\xa2\xc6\x66\x94\x05\x6b\x3b\xf1\x57\x0d\x9a\x6b\x80\x87\x4b\xcc\x86\x8b\x07\x4b\x07\xcc\x11\xfc\x87\xe2\xae\xc3\x40\xdf\xe1\x99\x6c\x00\xdd\xd6\x5b\x03\xd7\x31\x9b\x01\x50\x94\x2f\xe3\xd9\x95\x4e\xf2\x7a\xcd\x40\xb3\xf6\xa9\xe4\x97\x79\x19\xc5\x40\xd4\x54\x3e\x10\xf1\x05\x23\xcd\xb2\x76\x6c\x55\xd5\x21\x8e\x06\x2f\x6c\xc9\x8c\x8c\x44\x47\x5c\x48\x3d\xe8\xae\xe9\x63\x4b\x4f\x37\x68\xa5\xa7\xa1\x6a\xba\xa6\xd4\xbf\x3f\xda\xe1\x09\xf7\xcb\x19\x62\x51\x3f\x77\xd0\x61\xd1\xb5\xf2\xae\x8b\xcd\xb3\x60\xd6\xe5\x9b\x58\x83\xef\x45\x5b\x69\x4d\x47\x5c\x8d\x28\x49\xa5\x9e\x43\x06\x65\x8d\x42\x58\xd5\x2a\x6a\x9d\x1e\x63\x9d\x49\x4d\xa1\x4f\xf5\xf9\x66\xc5\x47\x87\xd4\x82\x1a\x41\x9f\xaa\x8a\xcd\x92\x53\x87\xf0\xed\x9a\x2b\x97\x5a\x9e\x9e\xda\xa8\x9a\x4a\x83\x1a\x5b\x87\x6a\xfd\xdc\xf2\x0e\x87\xc4\x75\xb4\x14\x5d\x16\xd1\x7f\x54\x26\xb3\x04\x25\x2d\xab\xa3\xed\x2d\x4c\x8a\x65\x00\xa5\x60\x57\xbf\xb0\x36\xf7\xd7\x83\x07\x19\xc7\x15\xac\x46\x6d\xaa\x76\x75\x92\x95\xc0\xd5\xda\xe5\x76\xa3\x0a\xc6\x03\x06\x6d\x09\xc5\x52\x54\x1d\x34\xd5\x2a\x45\x6f\xf1\xa5\x1a\xf8\x44\x53\x3b\x9d\xfb\x48\x53\xa4\x95\x23\x6f\xbd\x34\x87\x11\x52\x9d\xa3\xcd\x46\x44\x1d\x0f\xce\x5a\x85\x0c\x3d\xa5\x9a\x1e\x63\x1d\xcd\x8b\xaa\x2c\x6d\xb0\xb1\xba\x84\x77\x30\x6a\xed\xbc\x8e\x51\x4b\xcd\x8f\x0c\xdd\x85\x9a\xf6\xf2\xd7\x22\xba\x9f\xfa\x1f\x1c\x90\x9f\x21\x72\xeb\x43\x6f\xc3\xc9\x0f\x67\x9f\x1b\xa9\x5f\x5d\x3f\x5c\x9a\xad\xe8\x45\xd5\xea\xf1\x18\x68\xd4\x4c\xc5\xeb\x32\x1b\x34\xc3\xae\x04\x10\xd4\x2e\xb4\x1b\x23\xd4\xac\xd2\xe8\x72\x30\x26\xc0\xd7\x30\xe2\x56\x99\x29\x16\xbb\x33\x3e\xc7\x7e\xec\x12\xec\x1e\x5a\x19\xc6\xac\xaf\xf2\x76\x0c\xaf\xbd\x06\x99\x40\x6b\x4e\x22\x3f\xc2\x93\x74\x0c\xae\x34\x22\xd6\x13\xf1\xd8\xc2\xd4\x92\x61\xe8\xb9\x39\x24\x84\xd4\x30\xbd\xaa\xff\xba\x88\x18\xd0\x46\x78\xea\x2f\xaa\x1d\x7a\xef\xfe\xf0\xec\x7a\xfb\xb4\xe2\x94\x9a\xb3\x81\xbb\x97\x3e\xea\xd6\xff\x1a\x1f\xc3\x54\xa6\xc2\x08\xfe\x8c\xc7\x09\x39\x12\x0a\x73\x7b\xea\xc4\xc3\x44\x14\x27\xa0\xcd\xac\xe3\x0f\x95\x00\x71\x42\x14\x41\xe8\x54\xec\x10\x32\x55\x00\x00\x60\xe0\x60\xcc\x00\xc2\x54\x16\xae\xeb\x3c\x82\x38\xf3\xc8\x1f\x73\xab\x6e\xfc\xb3\x61\x25\x7b\x0b\x38\xfa\x4f\x61\xa5\x71\x31\xd4\x3a\xd8\x07\xe2\x7a\x74\x66\xd8\x4d\x4e\x49\x9b\xea\x0c\xcf\x15\x07\x35\xae\xc3\x29\x2f\x8f\x3d\x5f\x5d\xc2\x98\x80\x2e\xa7\x5b\xdf\xc5\x85\x68\x75\xa1\x1f\x7a\xbe\x5e\xce\x62\xdc\x02\xe8\xe2\xb5\x9a\x42\x37\x5a\x79\x6e\x67\x49\xd3\x5b\x84\xbe\x17\x17\x92\x05\x8e\x78\xee\xc3\xa9\x8d\xca\xb5\x26\xb0\x9e\x42\xd9\x10\xe1\x93\xd0\x19\x3e\x28\x87\xc9\xf7\x4e\x42\x1c\x9a\xd4\x50\x80\x20\x79\xfd\x27\x9d\x0e\x5f\x96\x81\xfc\xcf\x8b\xe3\xe4\x28\xc4\x74\xc0\xe2\x6b\xdd\xc8\x3e\xd1\xdf\x87\xd9\xdc\x55\xbc\x4b\x16\x33\x67\xef\x5d\x12\xf4\x89\xc6\xc9\xfc\x33\xb8\xa0\xc8\x99\x89\x41\x59\x78\x66\x54\xcc\xa4\xfe\x3e\x38\xa3\xdc\x8f\x88\xf1\x6b\x72\x0d\x72\x3e\xf8\xd6\xb2\xae\x92\x26\xee\xd6\xfe\x78\xb7\xd1\xb1\xac\x15\x8a\x04\x5d\xb3\x2c\x62\x7c\xff\x76\x16\x71\x6d\xcb\x59\xef\x6d\x17\x39\xf7\x1f\xd3\xb8\x74\x49\x0f\x13\x4e\x59\xa3\x07\x46\x48\x22\x62\xe6\x09\xc1\x80\x72\xc3\x66\x63\x71\xb6\xe2\xf1\x22\x23\x30\x7d\xbb\xbb\x04\x97\x44\xa1\x94\x02\x4a\xc7\x55\x94\x90\xc6\xa0\xec\x22\x83\x08\xef\x0e\x5a\x10\xec\xd8\x78\x6d\x8c\x52\xc6\x7d\x4b\xa7\x2d\x3d\x27\xc1\xd8\xbd\x25\x4f\xa3\x31\x81\xeb\x11\x25\x47\x9b\x6e\x04\x1e\x51\x42\x80\x32\x2b\x05\xab\xe8\xe4\x35\x7c\x8f\x27\x4d\x03\x83\x4b\x88\x48\x14\xca\x99\x45\xb2\xd7\xd2\xef\xb1\xc9\xaa\xe5\xf9\x78\x23\x0f\x29\x89\x5e\x2f\x53\xbd\x5e\xa4\x55\x3a\xd6\x51\x22\xff\x36\x0b\x1b\x76\x93\x67\x9b\x0a\xcc\xca\x64\x30\x7c\x44\x19\x76\xa1\x34\x02\xba\xee\x59\x23\x32\x5f\x18\x6f\x12\x9f\x0d\x5b\x25\xa1\x28\x5b\x0c\x81\x42\x5d\x1a\xe9\x08\xd1\x47\x22\xa6\x17\x14\x89\x7e\x92\x6c\x74\x3a\xde\x8c\x0f\xaa\x25\x12\x9b\xdd\xc3\x61\x2d\xb6\x54\xd9\xe8\x64\x19\xe4\x28\x5e\x47\x17\xda\x55\x4f\x4b\xdd\xd2\xca\x70\x24\x17\x05\xff\xac\xc4\xa5\x0c\x39\xa6\x8e\xe7\x55\x66\x59\xfd\x4e\x0a\xf5\x86\x58\xe8\xe4\x92\x93\x85\xeb\x2d\xef\xe3\xd6\xe5\xae\xa6\x3b\x9a\xa4\x17\xa1\x1b\xc5\xe6\x73\x83\xd6\x4c\x3d\x21\x03\x61\x69\x61\x70\x11\xcf\x72\x72\xaa\x01\x26\x4e\xfa\xad\x59\x5f\xb8\x78\x84\x28\x29\x1c\x7d\xd8\xe1\x8e\xbb\x1c\x44\xbe\xdf\x67\xdb\x34\x1f\xde\x48\x9e\xf4\xfe\xfa\xf4\xdb\x06\x04\xb9\x8e\x7b\x91\x50\x79\x96\x14\x41\x14\x55\xfe\x25\x69\x1a\x1b\xb8\xda\x2f\x03\x7a\x3a\xb2\x35\xaa\x55\x19\xcf\x7a\x51\x79\xec\xff\x45\xa9\xbe\xa6\x95\x09\xdf\x11\x23\xc2\xf8\xd7\x2f\x46\x67\x3d\xea\x59\xf8\xc9\x26\xb2\x91\xa1\xa4\xcb\x11\xdf\x5b\xdb\x06\xf5\x23\x01\xf3\x1b\xb6\xba\xdc\xd7\x74\xbf\x3e\x1b\xad\xd7\x95\x0c\xb1\x4f\xfa\xba\xdd\xc7\x8e\x26\xf8\x27\x3f\x72\x4f\xa2\x1c\x8e\x49\x28\x4e\x7a\x48\x97\xf6\xff\x34\x38\x56\xf8\xbe\x0f\x23\x77\xc6\xbc\x54\xf4\x4a\xc4\xcd\x0e\x8a\x64\xb8\x69\x27\xb6\x4f\x68\x06\xc0\x23\xd0\xcf\xee\xaf\xd1\x36\xc0\x04\x7c\x96\xe8\xcb\x02\xb0\x3b\x23\x94\x72\x8f\x27\x5c\xf2\x86\x1a\x97\x2f\xc1\xd7\xf5\x30\x8b\xa5\x48\x03\xca\xd2\xfe\x5c\xec\xc5\x2f\xdd\x7a\x67\x9f\x67\x77\xe5\x86\xca\x66\x03\xf7\x5b\x55\xfe\xc2\x59\xde\x3d\x9e\xed\x29\xc3\xd4\x98\x92\x28\xbd\x63\x64\xea\xaa\x58\x83\x38\x1d\xbe\xfd\x84\x20\x1c\xb9\x40\x20\x7e\xc4\x64\xa9\x22\xf8\xb8\x39\xb2\xbf\x3b\x51\x32\xc5\x36\xd0\x28\xad\x29\x33\xbc\x32\xbc\xe8\xf3\x1b\xc5\xb1\x16\x11\xa4\x0c\x35\xcd\xf1\xca\x9c\xc2\x4a\x5c\x0a\x0b\x52\xd5\x8c\xd6\x43\xd1\x9e\x24\x7d\x5d\x16\x72\x94\xb6\xed\x22\x73\x3a\x05\xcb\x87\x7a\xf3\xd8\x15\x5a\x22\x2c\xd6\x44\x36\x8e\x96\x67\x17\x5f\x6d\xbd\x38\x2c\x3d\x68\xd3\x25\x6b\x31\xc2\x6b\x6b\x7e\xfc\xeb\xf5\xd2\x01\xf4\x8e\x10\x5b\x75\x3e\xde\xfa\x2a\x11\x38\x9e\xfb\x5b\xee\xe7\x1b\xa2\xec\x49\xda\x1f\xff\x26\xb2\x99\xc2\x96\x9c\x2e\x32\xbf\x79\xe5\x86\xde\x9e\x4f\x2d\x2c\x8d\x2e\x75\x93\xc7\x1f\xca\xcb\x1e\x2e\xbd\xe5\x7e\xe5\x93\x0d\xe9\x0a\xc3\x86\x0d\x27\xc0\x8c\xe3\x14\x6f\xdf\xfc\x48\x31\x2e\xbf\xd4\xfc\x11\x97\x40\x2f\x9c\x65\x33\x13\x9d\x00\xff\x62\xa7\xab\x57\x3d\x27\x7d\xae\xdd\xff\x0c\x8d\x88\x28\x52\xe3\x04\x50\x2f\x81\xb8\x31\x49\x30\x10\x31\xa5\x28\x89\x1a\x7d\x43\xc1\x78\x81\x13\x82\x4d\x17\x90\x3c\x90\xeb\x91\xf6\xcd\x70\x58\x67\x84\xe2\x91\x7d\xc8\xec\xc9\xb6\x9e\xc9\x19\x3e\x0a\xc7\x1b\x56\x65\x99\xb4\x98\xc1\x88\xc0\x23\x33\x09\x51\x80\x36\x1c\xc0\x61\x5d\xac\x0c\xab\x6e\x75\x10\xdb\x7e\x34\x1b\x6c\x48\x4b\xca\xc2\x64\xc8\x56\x45\x35\xda\x84\x34\xfa\x22\x31\x9d\xb2\x12\x54\x0c\x25\xb0\x93\x2d\xe6\x95\x97\xd6\x72\xc6\x84\x69\x18\xce\x6a\x45\x49\x11\x3f\x1b\x92\xd8\xea\x61\xd0\x24\xec\xcd\x05\x16\x0a\x0d\xe7\x59\x51\x48\xc3\x78\x22\x43\xc3\xeb\x1d\xba\x02\x0d\x29\x97\xf8\xf1\xac\xd0\x3b\xd3\xd1\x23\x22\x69\x1f\xbf\xf8\x05\xff\x12\x2c\x11\xbe\x99\x1f\x1b\x15\x80\x22\xbf\x1a\xc9\xf7\xee\x00\x59\xe2\xec\x9f\x76\x25\xb4\x19\xa4\x02\x69\xb8\xb8\x4a\xe5\x45\xd9\x3d\x4e\x16\x44\xce\x88\xe0\x39\x78\x39\x32\xd4\x59\x19\x07\xfc\x12\xab\x93\xb9\x0d\xc7\x2a\x1d\x6f\x07\xa4\xb3\xb9\x45\x63\xd9\xd7\xb3\x2b\x1e\x25\x53\x9c\xf6\x91\x8e\x11\xcd\x2d\x30\xc2\x87\xa8\x60\xf9\x71\x88\x44\x37\xd5\xc2\x11\x42\x63\xe8\xee\xe8\x64\x61\xad\x24\xe2\xea\xf9\xc6\x2c\x86\x5a\x46\x9c\x15\x70\x5c\x7c\x44\x23\xc8\x47\x8e\xea\xbe\x31\xc8\x42\x0d\xb4\x38\x09\xfd\x52\x2c\x4e\xa7\x38\xb1\x1d\xd8\xb8\x56\xe9\x1f\x4f\x4a\x17\xf9\xfa\x65\x47\xeb\x20\x72\x8b\x3c\x9c\x78\xf8\x28\xbd\x36\x79\x98\x9d\xa4\xf4\xa1\x09\xf3\x49\x02\x24\x50\xee\x69\x85\x76\x1a\x46\xce\x19\x84\x16\x2a\x1c\x24\x9f\x79\x3d\x16\x49\xc4\x3a\x5f\x37\xc1\x9f\xd3\x8e\xcb\x05\x77\x39\x75\x9b\x46\xe9\x11\x84\x4b\xe0\xfe\x45\x9a\x16\xfa\x84\x66\x9c\x9e\x25\x2a\x71\xdf\x2c\x36\xdb\x42\x59\x94\xaf\x5f\xc6\xf0\x93\xb4\x53\xae\xb8\x50\x6f\x5b\xcb\x19\xca\x03\x85\x5c\xf5\x7e\xfd\x12\x00\x34\xe9\x5d\x9b\xf6\x6d\x93\x48\xf2\xd5\xab\xab\x34\x18\x05\xeb\xae\x73\x8a\x33\xaa\xdd\x32\x4e\x14\x6d\xbc\x7d\xf4\xd6\xdb\x91\x09\xab\x29\xf3\x35\xfd\xbf\xc1\xb6\xe7\x68\x50\x4b\x64\xe6\x48\x65\xb8\xc7\xda\xf7\xd6\x53\xaa\x97\x9b\xeb\x97\x70\x1a\x83\x2c\xb8\x0a\x46\xe6\x64\x84\xfd\xc0\xeb\x19\x92\xea\x55\x5c\xb4\x1a\xd1\xbc\xb2\x17\x69\xed\x7f\xe3\x11\x24\x09\xe8\x04\xdd\x73\x0e\x2c\xf8\x19\x01\x13\xb3\x5c\xc5\x4a\xf4\xc3\x44\x0b\x03\x26\xe0\x9b\x0c\x37\x0e\xcc\x52\xca\x73\xf4\x4e\xb2\xcb\x54\x0e\x77\xb8\x59\xff\x72\x40\xcb\xaa\x2e\x15\x1a\xa4\xba\x8f\xbb\x20\x61\xb8\x49\x95\xaa\x40\x42\x3d\x77\x42\x8d\x51\x7a\x81\x47\x77\xae\x29\xa6\x2f\x66\xaa\xba\x08\x35\x5b\x34\x23\x9f\xb0\xf7\x82\xb7\x89\x5c\x1d\x69\x5b\xde\x3b\x38\x34\xb9\xc2\x53\x16\xc9\x57\x33\x74\xf2\xfe\xef\x97\x49\xf8\x2f\xf0\x58\x90\x6d\xf9\x2b\x3c\xed\x8e\xb8\x34\xb2\x0c\xb3\x4f\xcc\x77\x26\x86\xdc\xd1\x82\x0c\x24\xbc\xb8\x4e\xa0\x60\xcf\xe2\x37\x01\x53\x82\xa8\x08\xce\x81\xf2\xf7\x11\xca\x84\x9f\xb1\xac\x8d\x55\x23\x83\x28\xb6\x60\x31\x7b\x06\x6b\xbb\xf9\x40\xa8\x9c\x39\x3e\x06\x75\xbc\xfd\x0f\x6b\x6c\x62\x07\xe9\xdb\xdc\x2a\x2b\x09\x57\xb3\xcc\x48\x14\x01\x7c\xc8\x5f\xad\xea\x13\x06\x65\x99\x2a\x1f\xe0\x8e\x3c\x3c\x4d\x32\xb6\xe5\x29\xac\x99\x99\x0d\xa6\xfd\xec\x9b\xf5\x5d\xa7\xfa\xb4\x39\xea\x2c\xf1\x69\x4d\x88\x62\xd8\xf4\xa5\x02\x88\x6c\x9d\x78\x4e\x4c\x4c\xc3\x96\x31\xd5\x50\x60\x7c\x54\xe0\xfa\x02\x0b\xf6\x3d\xac\x21\x00\x17\x05\xaf\xb4\x25\xe3\x7b\x25\xd7\x74\x40\xb8\xd4\x9a\x12\xec\xe7\x5b\x1a\xc1\x91\x3d\xb9\x9f\x8a\x1b\x0f\x8f\x91\xbe\x0a\x81\x8b\xad\x08\x66\xd5\x31\xaa\xf0\x09\xd6\x30\xa1\xca\x67\xbd\x3d\xf9\x5e\x7d\x1e\x55\xbc\xdf\x7b\xb6\x90\x58\x7e\x12\xd5\x02\x46\xe5\xe5\x0e\x6e\x6f\xdd\x6f\x4f\x2c\x87\x1a\xe0\xfd\xf1\xe1\x3a\xad\x24\xa7\xc0\xc1\xc9\xf0\x4e\xde\x82\xd6\x5c\x58\xce\xec\xe9\xda\x9c\x55\xbf\x61\x84\x52\xfe\x32\xe0\xd1\x14\xc2\x48\x4f\x5a\x44\x1d\x52\x90\xbf\xc0\x64\x98\x50\xc6\x7b\xf3\x13\xac\x4b\x7d\x69\x8f\xdc\xa2\xc5\x97\x10\xd9\xe2\x8d\x29\x3a\xea\x4f\x5b\x39\x9f\xeb\xde\x91\x13\x49\x44\x63\x8c\xfc\xa2\xbe\x18\xc2\xfb\xc7\x0c\xb7\x10\x1e\x7d\x5d\xf6\x8d\xfc\xb7\x05\x0e\x15\x67\x22\x5d\x35\x4b\x34\xb6\xfc\xe7\xe8\xa7\x0e\x4c\x8d\x00\xd4\xaa\xd0\x81\x50\xb6\x6f\x1f\x1d\x7f\x11\x5d\x5b\xde\x40\x88\x2f\x9f\xea\xa2\xd9\x3c\x29\xd6\x6b\x9a\xf0\xfc\x4e\xf1\x5d\x30\x62\xe2\x26\x9f\x5e\x0e\x0c\xc5\xc7\x57\xf9\xb0\xc1\x9f\x22\xae\xc1\xec\xed\xe6\x6b\x83\xba\x78\xd9\x72\xf3\x39\x1b\xe0\xce\xf0\xcb\xd5\xa0\x46\x3a\x94\x25\x29\x86\xc4\x45\x72\x0c\x16\xfc\x3d\xc0\x77\x44\x87\xea\x03\xa5\x40\x79\xbf\xe1\xee\xb7\x56\xfc\xcb\x98\x3d\x75\x7a\xb7\x13\xec\xac\xe6\x18\xc4\x13\x84\x3b\x29\x03\x66\xc6\x59\x49\x59\xd2\x6f\x61\x93\x94\xf8\x2e\x9e\xd4\xea\x59\xc8\xb8\xc0\x60\x35\xf5\x64\xe9\x4e\x15\xa1\x68\xa0\x0c\x42\x0c\xd3\x2e\xd1\xa5\xc1\x0e\xfc\x67\x2d\x97\xca\x19\x2b\x15\x35\x79\xce\xc1\xf0\xf6\x19\x12\x74\xe5\x6f\xe8\x19\x4f\x7c\x27\x06\x52\x52\x31\xbb\x5a\xa6\xd4\x75\xaa\xd0\x58\xa5\x4a\x4e\x42\xe4\x82\xad\x93\x3b\xf0\x99\xf4\x67\x92\x3c\xe1\x44\x90\xa7\x36\xc3\x68\x15\xaa\xaf\x1f\x0c\x22\xd3\xa5\xbe\x74\xe6\x18\xfc\x4a\xed\xb2\xd2\xe3\x88\x83\xbf\xeb\x6b\x8a\xc1\x0f\x8d\x3f\x90\xb8\x6e\xc1\xa6\x8e\x41\x61\x3d\x41\x62\x2b\xeb\x37\x09\xaa\x7e\xf9\x75\x28\xb6\x65\x19\xc5\x10\x6d\xd7\xd1\xc9\xfb\xb7\x7d\xea\x4a\xf4\x21\x09\x01\xd9\x6d\x24\x9d\x49\x7f\x97\x75\x7b\xea\xc0\x2b\x59\x14\x88\xd8\x5e\xb1\x93\xb9\x69\x97\x1e\x2b\x0b\x45\x9b\x3c\x36\xcb\xaf\xf8\xc1\x55\x78\xbb\xca\x34\xab\x4f\xee\x70\xba\x98\x24\x16\x72\xef\x8a\x12\x29\x82\x6b\x33\xc6\xf5\xc7\x6a\x34\x14\xc2\xc7\xbe\xab\xc3\x09\x86\xf9\x6d\xa7\x67\x51\xbe\xb8\x9c\xb5\x91\x24\x9b\x98\x2b\x6a\xad\x09\x27\x98\x1f\x6d\x2a\xec\x56\xb9\x52\xff\xfd\x79\x88\x4b\x95\xf7\x59\x19\xf6\x22\x92\x5c\x3b\xf2\xdd\x39\xa2\x41\xa5\xc1\xb3\xa2\xfa\x7a\xc1\x60\x2f\xe4\x8a\x45\x7a\x8d\x08\x77\x7c\x4b\x99\xd6\x6e\x66\xcc\x31\x45\x2d\xc3\x4c\x55\x5e\x9a\x5d\xf2\x17\xa9\x3e\xac\xa9\x67\x41\xdf\x77\xe8\x29\xb2\x89\xc1\xa6\x12\xbd\x3f\x25\x1d\x91\x6e\x18\x8f\x9c\x5b\x93\x33\x30\x2f\x96\x9a\x91\x37\x22\x39\x85\xd5\x3e\x05\x47\x5b\xce\x2e\xcb\x00\x21\x64\xa1\x2c\x6a\x24\xeb\x87\x2d\x93\x8f\xc7\x35\x21\x63\x86\xbf\xd6\xfb\x3f\x91\x24\x13\x9b\x3d\x1e\x3d\x55\x9f\x58\x7e\x54\xc6\x5f\xfc\x3b\x70\x56\x5c\xc2\xa0\x94\x7c\xfe\x31\x7a\x67\x80\x8e\x76\xe9\x04\xdd\xed\x53\x0f\x28\x45\x13\x08\x41\xcd\x44\xed\x05\x36\x84\xc2\xf0\xfd\xde\x32\xe0\x9b\xf3\xcc\xa9\xfd\xb2\x2a\xe3\xb1\x11\xe5\x43\x3c\xf4\x85\x6c\xe6\x60\x91\xff\x30\xc7\x9c\xa3\x5b\xe7\xcb\x1d\xf8\x2d\xe1\x57\xe0\x87\x4b\xd7\x0d\x96\x0a\x29\x4c\xcc\xdd\x67\xcb\x5d\xb8\x33\x46\x4b\xb7\xc9\x2a\x28\x54\x53\xc9\xff\x2f\x00\xd2\x0e\x2d\xf1\x58\x01\xf0\x57\x84\xbd\xe1\xe7\x04\x40\xb2\x23\xe7\xce\x9e\x42\x99\x5a\x06\xef\x49\xd8\x1d\x29\x4d\x06\xc4\x04\x39\x83\x52\x62\x35\x47\x98\x33\x02\x33\x2c\xa1\x31\x81\xf1\xfa\x19\x2c\x06\x8a\x3b\xf2\xb6\x1c\xd2\xf0\x7a\x0a\x5c\xd7\xa4\x2b\x12\x40\xbd\x31\xb8\x98\xf4\x95\x11\xb4\xab\x73\x60\x4b\xf8\x2a\x1e\x7d\x3f\x74\x17\xa2\x8c\xea\x9f\x9b\x00\x00\xc0\xd9\x9a\x9a\x37\x51\x4a\xbe\xb6\x82\x81\x00\x84\xb0\x8a\xd3\x2d\x26\xa9\x5b\x54\xcf\xc0\x77\x17\x7a\x44\xde\xb5\x0c\x37\xdc\x10\xa0\x2b\x69\xbd\x10\x0a\xde\xc1\x53\x2b\x7b\x5c\x3d\x99\xed\xe9\x9d\xbb\xad\xd5\x04\x70\x26\xf5\xab\x17\x7c\x6f\xb0\x11\x56\x26\xc1\xb0\x2f\x91\xca\x89\xd4\x08\x27\x0f\xc0\xeb\x01\x2a\xdc\xc4\xb8\xfa\x67\xc7\x75\x7e\x42\x8d\xc5\x4d\x12\xe4\x42\xc4\xf3\x4f\xfb\x79\x18\x8a\x40\x85\x47\xdf\xa7\x60\x6e\x89\x18\x7f\x85\x01\x0a\xdf\x06\x88\x85\x4a\x09\x73\x35\x85\x42\xdc\x9b\xf4\xf3\xf9\x38\x37\x4a\x9a\x84\x69\x40\x76\xb9\x12\x88\xaf\x8c\x7d\x75\xed\x5c\xd4\x13\x26\xfd\x87\x72\x3c\x5c\x58\x58\x19\x8d\x86\x82\x86\xe4\xba\x32\xd7\xae\x6f\x9b\x27\xb1\xcd\xef\x0a\x37\x58\xe4\xe8\x8c\x76\x90\x2f\x2e\x59\x40\x7e\xb4\xc2\xe2\x1a\xaf\x88\x75\xb3\x61\x4b\xc9\x35\xa4\xb4\x80\x6d\x12\xd3\xfa\x3d\x20\xd2\x3d\xe6\xd3\x7b\x04\xa2\xce\xf1\xdc\xce\xf1\xd5\xce\x68\x7c\x2f\x23\x3c\x4d\x96\xc8\xcc\x19\x58\x86\xc4\xc3\x45\x6d\x8c\xb4\x0e\x2d\x31\xb2\xa8\x53\x26\x8e\xc1\x93\x41\xd0\x47\x13\x12\x80\x07\x6b\x2a\xd6\xce\x50\xcc\x85\xac\xd0\xc7\xc1\x82\x1f\xcf\x97\x64\x8e\x04\xb2\x42\xa1\x13\x58\x67\x37\x50\xde\xf3\xd6\x63\xb4\x13\x03\x58\x2c\x4b\x37\xee\x1b\x9f\x90\x27\xc8\xe8\x71\xa5\x37\xe5\x6c\xed\x64\x03\xfd\x04\x1a\x15\x25\x89\x2c\x8c\xb5\x64\xf4\x50\xc6\xfe\xa8\x43\xe2\x9e\x11\x05\x63\x21\xc4\x6c\x05\x32\xa7\xcb\x58\xba\xa6\x03\x46\x2a\x4b\xb1\xc8\xf2\x18\x90\x37\xcd\xb9\x8a\x74\xc4\xcc\x23\xc5\x7b\xda\xfd\x99\x43\xc4\x75\x0b\xa5\x98\xe2\xa8\xe7\x74\x90\x42\x44\x49\x03\x34\x45\x9a\x06\x8b\xc0\x3a\xc5\x39\x26\xfa\x82\x08\x40\xa7\xe7\xfa\xb7\xd1\x67\xec\xdb\xb4\x35\x35\x7d\xcf\x07\x50\xb1\x59\x06\x0a\xe2\xb5\xba\x82\x5d\x83\x12\x10\x89\x2e\xfc\xc5\xf8\x11\x0a\x77\xa2\xcb\x8d\xb4\x0c\x56\xe2\x51\xa6\xe7\x8c\x49\x02\x4d\xe3\x49\xf9\x58\x07\x72\x5e\xfb\x98\x41\xe5\xd4\x42\xca\x10\x0f\x2b\x20\xb1\xe9\x80\x44\xd4\xf2\xc2\x52\x4a\x16\x26\x5e\xba\x8e\x40\x89\x17\xe8\x4e\x64\xea\xea\x19\x30\x8a\x33\x55\x82\xa0\x03\x21\x0d\x12\xac\x5a\x81\x37\xd8\x4a\xe5\x10\xb6\x67\x39\xa2\x93\x05\x66\xd0\x20\x99\xce\xca\x35\x1c\xf9\x73\xcc\xdd\x08\x3f\xe4\x02\x21\x06\x7f\xcc\x0f\xc9\xd1\xc2\x22\x58\xb7\xdb\x6c\x31\xaf\x81\xd4\x66\xcd\x18\x8e\x5b\x18\x56\xca\x5d\x22\x5e\x94\x1f\xa6\x22\x15\x11\x0b\x8d\xa3\x67\x7b\xae\x3d\x0e\x65\xe8\x95\x39\xe6\xb2\xeb\x1e\x68\x2a\x58\x70\x64\x27\x20\xf0\xa5\x22\x8f\x8e\x31\xae\xd1\xf8\x21\x7e\x94\x33\x7e\xd8\x40\xc3\xd7\x87\xa4\x2f\x96\x99\x1c\x3c\x6f\x78\x21\x56\x00\xde\x2c\x0c\x27\x42\xfc\x2e\xeb\x9a\xa2\x04\xe5\x09\x32\x6c\x7a\x70\x23\x2f\x43\xd0\xec\xbd\x4f\x8b\xc8\x66\x18\x97\x4e\xa8\xe2\x5e\x56\x8e\xc4\x08\xb3\xce\x75\x11\xcd\xe2\x18\xc1\x10\x84\xeb\x4c\xf9\x66\x5f\xad\xb6\x6b\x53\x64\x96\x57\x3e\x5e\xf4\x48\x31\x8b\x16\x15\xb4\x1a\xb0\xa9\x64\x29\xfd\x13\xba\x82\x26\x02\x49\x49\x5d\xa3\x75\xdb\x32\xe6\x30\xe8\x91\x12\x2e\x9f\x50\x08\x55\x1a\xb9\x0e\x56\x1a\xa3\x59\x1d\x9e\x7a\x73\xa6\x81\x46\x3b\x18\xb7\x26\x6e\x70\x2a\x5a\x97\xed\xad\x38\x50\x4e\x60\x44\x0b\x9c\xc9\x40\x10\xdc\x3f\x23\x78\x02\x85\xe7\x22\x70\x4c\xd9\x42\x5e\xc3\x7b\xa8\xdc\xeb\x1d\xfd\x5a\x2d\x1b\x82\x45\x44\x1d\x5d\x86\x13\x76\xd5\x1d\xa2\x83\xbe\x28\xd0\x9c\x3c\x64\xde\xd5\x9c\x0d\x25\x58\x1d\x25\x0c\x56\x79\x3c\x3b\x72\x5c\xb9\x61\xbd\xc1\xae\x17\x44\xba\x5a\xbd\xd4\xd8\x2a\xa9\x9e\x40\xe3\xc0\x1d\xa6\x05\x07\x4f\x19\x1b\x8b\xe7\x1d\x48\x16\x8d\x37\x2c\x43\xac\x1c\x48\x78\x30\xa4\x6f\x13\xd7\x9d\xac\xc8\x74\x4a\x76\x9f\xd1\xc4\xa1\xcc\xe2\x09\x76\x2c\x81\x61\x66\xcf\x78\xcc\xd3\x44\x66\x2c\x04\x70\x1f\x5f\x59\x5a\x34\x89\x75\x65\x5c\x73\x82\x04\x48\xe6\x6e\x75\x3c\x6e\x7d\xc1\x55\xd0\xec\x74\x06\x45\x84\x51\x9c\x6c\xbc\xf6\xa2\x39\xa2\x48\x26\x4e\x9b\x1d\x52\xd6\x60\x03\x13\xef\x27\xe5\x9c\xa8\x86\xd2\x5b\x1e\xad\x7f\x9c\x8d\xfa\xe2\x64\x28\xe8\xd1\x39\x4a\x84\x70\xfe\x32\xe9\x60\xce\x4c\x52\x17\xc5\x09\x2b\xee\x11\xc1\x4b\xb8\x66\x6f\x24\xfc\x02\x58\xc3\xef\xb3\x89\x2d\x6e\x02\x40\x66\x00\x6f\x63\xde\x8b\xc6\xcd\x4e\x03\x2d\xb4\x41\x02\x57\x4b\x81\x5d\x99\x2c\xc8\x82\x5d\xdf\xd2\x65\x0f\x2a\x23\xba\x64\xad\xd1\x3d\x93\x33\x98\xb7\x4b\x67\x2f\x89\x81\x81\x13\x34\x2d\x99\x32\xb3\x00\x50\x7c\x40\x47\x17\x91\x9a\xb8\x62\x62\x7f\x4c\x35\x9d\x60\xb4\xb4\x29\xac\xdf\xb7\xe6\xbe\x0b\xb1\xf0\x35\x90\x09\x69\x51\x18\xde\x47\xea\x3c\x76\x36\x48\x1c\x5c\x86\xca\xa2\x1a\xa2\x4b\x9f\x96\xbf\x9a\x31\x1a\xf1\x08\x26\x00\x11\xe4\x6b\x90\x16\x27\xe1\xb5\xf0\x8f\x70\xdd\x68\xe8\x9e\x41\x46\x13\x02\xa1\xb6\x0a\x74\x8f\xc6\x0f\x51\xe6\x04\x9d\xc4\x8e\x2c\xd8\x61\xc1\x52\x67\x12\x2a\x65\x44\xb7\xe9\xea\x53\x7b\xcf\x9b\x00\x31\x85\x71\xf8\x0e\xf5\xa5\x55\x1b\x84\x8c\xc8\x69\xa3\x73\x51\xb0\x1a\xac\x00\xc1\x2c\xc4\x92\xa1\x7a\x8a\x5e\xe9\x9b\x12\x23\xa2\x8c\x29\x61\xcc\x86\xd2\x03\x98\x06\x07\x6a\xad\xba\xd7\x74\x32\x34\x32\x58\x16\x80\xcc\x99\x9f\xaa\x48\xbb\x30\xc6\x84\x40\x03\x82\x5d\xbc\x1a\x5e\x2c\x5b\x10\x63\x45\x9c\x70\xaa\x99\x68\x3c\xaa\x3c\x48\x67\x4a\x1e\x03\x11\x0f\x28\x3d\x40\xef\x24\x72\xb9\x2e\x00\x21\x1c\x0e\xad\x02\x7a\x0f\x15\x47\x54\xfa\x40\x73\xb6\x82\x90\x11\xe9\x1c\x2f\x46\x33\x10\x6a\x7b\xd4\x2d\xeb\x6c\xe3\x40\x62\x72\xf6\xc8\xc1\xe5\xe7\xcd\x22\x3d\xff\xca\xfd\xab\xeb\x3f\x92\x33\xfc\xee\x14\x4d\x19\x6b\xdc\x0e\x27\x7e\xee\xda\xb7\x10\xcb\xb3\xfa\x4a\xf5\x99\xa8\x2b\x84\x24\xab\x6f\x8c\x05\x13\x6a\xb5\xc0\x73\x23\x10\x46\xb5\x4e\x96\xb0\xf4\x1d\x3b\x0d\xd8\xa0\xe2\x52\x2b\xed\xc2\x68\x23\xe5\x4f\x62\x9c\x02\xb9\xf8\x2e\x08\xa8\xbe\xa2\x34\x78\x54\xec\xe1\xfd\xf0\xd9\x90\x20\xb3\x96\xc4\xdc\x09\x88\xfc\x30\x96\x77\xf5\x40\x01\x0c\x2d\xa8\x09\xb8\x62\xe8\x61\x47\x65\xa8\x14\x43\x9f\xc4\x1c\x44\x08\x3d\x02\xe2\xe1\x7b\x89\xb2\x26\x7f\xc4\xa3\x15\x1f\x7a\x95\xc7\x85\x9f\x03\x93\x40\x4a\x68\x7e\xb3\x9d\x23\x66\x34\x92\x76\x21\x17\x44\xbf\x1a\x13\x7c\x59\x0a\x44\xd9\xf4\x70\x4b\xd2\x8a\x8e\x9e\x93\xb3\x86\xec\x06\x65\x8c\x5b\xea\x36\x04\x5e\x8c\x48\x26\x3b\x0a\x7b\xb6\x83\xe4\x00\x0e\x42\x22\x32\x82\xb1\x69\x98\x3c\x89\x71\x51\xd5\x43\x0e\x3f\xfa\x51\x01\x10\x67\x03\x0f\x0a\x87\x1e\xcb\xd8\xca\x88\x28\xf7\xaf\x22\xd6\x8e\xd1\xa5\x60\x37\x5e\xc1\x30\x2c\x4f\xfc\xad\x80\xe6\x4a\xa0\x6e\xa3\x0d\xff\xd4\xcc\x4f\x83\x07\x0a\x64\xfc\xfc\x7c\xf7\x52\x89\xef\x07\x01\x0e\xd9\xa7\x73\x86\x6b\xf0\xf8\xc2\xc1\xf9\xd6\x20\x4e\xd3\xcf\x95\xa1\xe1\x76\x4e\x96\x83\x0a\x1e\xa0\x58\x89\xb1\x7d\x24\x26\xf9\xf3\xd9\x29\x72\x60\xba\x32\xa8\x00\x1f\xad\x0d\xc1\xc8\xfe\x9c\x18\x6b\xbd\x85\x88\xec\x87\xc8\x89\x80\xf4\x21\x38\x72\x5c\xbb\xbe\x06\x3b\x6e\x0c\xa7\x45\x36\x65\x6a\x4f\x2f\x04\x2c\x75\x08\x71\xca\x34\x2d\x49\xe0\xb6\x7f\xae\xa5\x0b\x46\x9d\x64\xac\x1d\x11\x8e\x67\x1c\xd4\x38\x45\x0b\x0a\x80\x8a\x5a\xe8\x2f\x63\xb6\x6a\x10\xdd\x0c\x0e\x63\x47\xa9\xe2\xad\x9b\x04\x12\x38\xfa\x11\xfd\x9d\x0a\x18\xa1\x81\xdb\x07\x43\x62\x3d\x42\xad\x9b\x28\x74\x44\x31\xd9\x3b\xa4\x53\x6f\xcc\x0e\xf2\x72\x3e\xe4\x60\x0d\x20\xbc\xd2\x31\xfa\x20\xee\x43\x6d\x16\x2b\x4b\x4a\xc8\x5d\xf0\x0d\x0c\xcd\x35\xed\xab\xd8\xd5\x5d\xbd\x92\x1a\xd2\x4d\x7f\x06\xfd\x69\xb9\x1d\x0d\xe3\xd3\x68\xf5\x30\x6a\x02\x78\x79\xbe\xdb\x9b\x48\x79\xba\xd4\x3a\xc2\x54\x85\xf2\xa1\x0f\x41\x08\x11\xe5\xe3\xdf\xef\x90\xe3\x75\x10\x61\x63\xc6\x29\x17\x79\xb4\x8e\x91\x80\xec\x73\x92\xe3\x6f\xdc\x98\xbc\x61\xcb\x08\x53\x47\x29\x24\xd9\xf5\xad\x0b\x75\x78\x16\xf9\xb7\xf7\xba\xbd\x22\x0c\xb3\x1c\xab\x6d\x54\x71\x00\x76\x92\xb3\xcf\xe2\x8e\x4e\x40\x5b\x55\xb7\x6a\x34\x1f\xe8\x33\xf9\xd4\x59\x0a\x6e\x31\x04\x69\x0a\x7b\x4e\x14\x0e\x2f\xca\x54\x6a\x35\xcd\x66\x08\xcf\xf8\x01\x96\xa7\x63\xe7\xb5\x8b\x58\xb5\xa3\x11\xcc\xbd\xe5\x39\x39\x40\x30\x05\x36\x8c\xa1\xbc\x97\x7c\x0c\x0f\xe6\xf1\x3d\xbf\x11\x0c\x52\xe2\x88\xf9\xf0\x9f\x09\xb8\xd8\x3c\xc9\x0d\x76\xe6\x6c\x62\x19\xd2\x32\xe4\x38\xdd\x14\x6f\x86\xe0\x1e\x0d\xdf\xe6\x90\x51\xfe\x85\x40\xbb\x46\x03\x17\x3b\x44\xfb\x3a\x6c\xf8\xfd\xdb\x00\x05\x92\x81\x2c\x65\x63\x64\xb7\x2d\xac\xc0\x17\x42\x99\x02\x6c\xc0\x0a\xf2\x89\xfc\xcc\xf4\x6d\xe5\xf1\x97\xe7\x88\x10\x58\x19\x08\xb4\x4c\x4c\x3d\x1e\x23\xb9\x85\x9e\x88\xc0\x2b\xde\x59\x80\x24\xc2\x7d\x03\xb2\x6e\x15\xc2\xa3\xae\x7b\xe9\xf1\xa8\xb8\x12\x29\x70\xf1\x42\x53\xd0\x0b\x91\xe5\x34\xa5\x06\x86\xef\x4a\x77\x2e\x64\xab\x44\xdb\xd4\x50\xdd\xef\x23\xd4\x7c\x94\x25\xe3\x81\x00\x4a\x0f\xdb\x70\x16\x2b\xc2\x54\x04\xf8\xed\xa0\x55\x59\x03\xef\xef\x34\xb0\x36\x3f\x14\x9f\xf4\x85\x1b\x71\x6a\x2c\xe4\xb9\x73\xe5\x99\x1c\xa6\x4a\x54\x60\x8f\x4a\x62\x20\x1c\x4c\x28\x37\x90\xba\x1e\x0b\x71\x89\xa0\x79\xf9\x4b\xc1\xae\x04\x26\x4d\xb3\xb9\xac\xc2\x7e\x0a\xe9\x5d\x67\x37\xf3\xc6\x07\x57\xa7\xd5\xe0\x0f\x9d\x3c\x84\x55\x82\x79\x1f\x33\xc3\x4b\x43\x0d\x6d\xb1\xa2\x27\x19\x00\x2a\xe0\xaa\x09\xd0\xe3\xc3\x51\x16\xf8\xc6\x8c\x64\x0b\x6b\x46\xd9\xfd\x82\x0f\x44\x76\x02\xf6\x99\x4a\x74\xc1\x11\xbe\x53\x06\x84\x04\x1e\xa8\x30\x4c\x85\xfe\x8b\x64\x69\xb2\x12\x53\x02\xc0\x42\x18\x3a\x8d\x41\x67\xa3\xc7\xef\xe5\x87\x52\x9d\x58\x59\x96\xbb\xc2\xa2\xb5\x5e\x83\x82\xbc\x40\x99\x4b\x0a\x09\x1f\x53\x24\x6a\x88\x2d\x83\x57\x27\xbf\x39\x83\x23\x5a\xb9\x4b\xa2\xbc\xcc\xd4\xe7\x85\x49\x20\x95\x65\x68\x36\xa7\x47\x74\x99\x1f\x83\x41\x71\xa7\x7e\xde\x33\xf9\xcd\x12\x39\x11\x95\xb6\x2f\x42\x12\x16\x48\x21\xd3\xfe\xa1\x01\xa9\x49\x5b\xc5\x88\x06\x63\xe3\x12\x15\x24\x71\xb7\x86\xe0\xd4\xf5\x67\x46\x12\x8d\x64\x85\xe8\xa0\x93\xa7\xd0\x75\x4d\x63\xf7\x1f\x8b\x03\xa1\xe2\x48\xe7\xb7\x11\xe6\xc9\xb4\xbb\x30\x99\x0c\xef\x54\x02\x32\x16\x46\x6d\x84\x8c\xac\x9e\xbc\xa8\x08\xf5\x60\xdf\x36\x6b\x7b\xf9\xba\xd1\x3a\x3c\x9a\x16\x6e\xe3\xaf\x6b\xc4\x64\x44\xc3\xcd\x64\xe2\x46\xde\x1e\x0d\x71\x0f\x4b\x4d\x43\x4f\xed\x64\x46\xdf\x85\x3e\xea\x96\x45\x0e\x38\x45\xa5\xb2\x72\x12\xae\xdd\x74\x9a\x79\x2e\xbc\x47\x84\xe7\x16\x78\xa1\xf9\x9b\x42\x35\x43\x66\xa7\x87\x12\xa6\xf8\xed\x72\x21\xf9\xbb\x04\x68\x7b\x07\xf8\xea\x62\x23\xca\x10\x12\x7a\x70\x5a\xd3\xd9\x90\x7a\x4e\x64\xb2\x2c\x8a\x67\x4d\x59\x14\xfd\x8a\x95\x95\xad\x96\x7d\x97\x29\xed\x24\xa8\x4f\x3b\xfa\xbc\xb6\x2d\x1b\xc0\x20\xb5\x79\x71\x7d\x66\x71\x37\xa1\xb3\x9a\xd6\xb5\x13\x0c\x48\x53\xac\x84\xf6\xcd\x31\xfd\x99\x52\x91\x26\x04\xf1\x7e\x5a\xef\xf5\x4f\x28\x0f\xe5\x8a\x0e\xbc\xe0\x5d\x34\x9e\x66\x9c\x46\x4e\x16\xa2\x83\xd8\x48\x50\x67\x1d\x36\xb5\x79\xba\xfa\xce\x00\xfe\x31\xc3\x95\xe0\x17\x96\x94\x92\x4b\xac\xbd\x2a\x9d\x86\x52\x01\x5b\x41\x03\x95\x31\xa4\xe0\x12\x93\x1c\x93\xa5\x84\x41\x50\xc8\x94\xab\x18\xf1\x53\xe7\x1e\xe6\x24\x8f\xc3\x2c\x09\x41\x1b\x27\xa3\x62\x43\x70\xb4\xb3\xa1\x09\xe9\x50\x02\xe6\x34\x91\x3e\x59\x21\x4f\x76\xcb\x5e\x5c\x73\x28\x72\xbf\xc2\xd0\x8a\x88\xdb\xa8\x6e\x99\x0d\x70\x29\x0a\x07\x70\x69\x94\x35\x80\x55\xc0\x81\x59\xa8\x8d\x5a\xcd\x44\xf3\x74\x59\x88\x3a\xe8\x31\x1d\xe8\x8e\xec\x51\xab\x96\xc2\x15\x9a\x71\x37\x2f\x52\x6b\x0a\xe6\x1e\x40\x22\x42\xa5\x07\x3f\xd0\x90\x86\x81\x02\x1e\xef\xd3\x6f\xac\xea\x18\x78\x34\x09\xd9\x11\x19\x73\x28\x4a\xee\x28\x71\x6f\x63\x5e\x1e\x45\x63\xd1\xa2\x34\x2c\x88\x9c\x14\x98\xd0\x93\x6d\x58\x68\x13\xb8\x1b\xae\x13\x06\xed\x88\x28\x14\xf3\x62\x17\x87\xd8\x20\x12\xc9\x69\xe5\x6d\x93\x45\x0d\xb1\x65\x26\xa0\x35\x43\x89\x08\x96\x31\xa9\xc2\x79\xa1\x99\x76\xce\x49\x01\x20\x5a\xc3\x26\xb0\x79\x01\x65\x82\x91\x51\x60\x6f\xf4\x76\x59\xd4\xdd\x49\x48\xde\xb8\x58\xf9\x42\x04\xeb\x7b\xce\xa0\x09\x30\xaa\x5c\xcf\x23\x41\xa7\x34\x24\xe6\x8f\xff\xc4\x38\xd0\x83\xce\xa8\xcd\x0c\x8d\xe3\x06\xa5\xb5\x5a\x03\x68\xb2\x4e\x7d\x68\xd8\xa9\xec\x25\x50\xbb\x7d\x40\xef\x0d\xe0\x0a\xa5\x3f\xfa\x35\x64\x8a\x89\x31\xa6\x7f\x39\x1c\x88\x2e\x50\xc5\xa0\x6a\x1e\x63\x6f\xec\xc0\x8e\xcc\x04\xc5\x57\x48\xc2\x57\x09\x47\x91\xb0\x98\xc7\x21\x4e\xa4\x34\x4b\x00\xa9\x9a\x01\x0e\x81\xe8\xf1\x8f\x29\x66\xd3\x3e\x18\xbf\x0e\x2d\xf7\x0f\x74\x16\xec\x6e\xf4\x59\xb8\x34\x1c\xcb\x2a\xd9\xe3\x63\xa8\x4e\xc3\x09\xd8\x61\xf6\xd6\x87\x7f\x44\x27\xe0\x1e\xb9\x1e\x0b\x26\x5f\x30\xe9\x16\x4d\x26\x20\x5e\xda\x98\xc4\x62\x06\x2d\xc2\x39\x80\xa8\x3f\x65\x1d\xb1\x9d\xbd\x6e\xa6\xd7\x91\xde\xb7\x0d\x18\x84\xef\xf2\x82\x87\xa5\x45\x9d\x2c\xaf\x64\x21\x99\x45\x7c\x4b\x4f\x50\xd0\x20\x9c\xe6\x3a\xea\x8d\x1d\x59\x82\x6a\xd9\xad\x14\x4f\x7b\xac\x0b\x1c\x43\x66\x6d\x14\x21\x58\x84\xed\x0d\x77\xbc\xba\x32\x5c\x7e\x95\x80\xb6\x68\x26\xde\x3b\xea\x8d\x9d\x67\x50\xd2\xb2\x78\xa1\x7a\xbb\x5f\x99\x39\xd3\x75\x11\x01\x44\x79\xb9\x01\x22\x06\xc4\xc6\xcc\x48\x84\xca\x0a\x65\x79\x7c\xca\xa0\x16\x27\xb0\xc4\x5b\x71\xaa\x1e\x72\x7c\x23\xe4\x9a\x52\x8d\x72\xb2\x5f\x9a\xfc\x8a\x95\xb6\xaa\xa6\xcd\x0e\x6b\xf0\x52\x3d\x79\x38\x14\x98\xed\x58\x5d\xb0\x38\x77\xe9\x15\x8e\xb7\xa8\x0e\x3d\x51\x2d\xd3\xd7\xcd\x07\x5e\x66\xea\x12\x36\x2c\x4a\x94\x45\x92\x43\x95\x30\x20\x47\xd4\x2f\x49\x00\x94\xd1\x82\x30\x96\x34\x08\xe5\xd8\xc4\x80\xfa\xf6\x63\x00\x39\x5d\x00\x91\x93\x22\x85\x81\x39\xc3\x84\x50\x8e\x2a\xc2\xf0\x52\x23\x88\x4c\x8f\xc9\xbb\x58\x7a\x05\xa2\xc0\x34\x33\x84\x38\xc9\x2f\x17\xb4\xdf\xb9\x7a\x65\x46\x24\x31\xaa\x5f\xc0\xf9\x49\x56\xc4\xff\x46\xd6\x11\x32\x51\xc9\x11\x58\x29\x0f\x2e\x98\x54\xe4\x63\x66\x67\x57\xd2\xf3\xf9\x55\xbd\x86\x01\xea\xf8\x76\x21\xb2\xb8\x21\xcd\xc0\x0d\xcb\xed\x36\xc8\x42\x22\x26\xe0\xc5\x9e\x06\x67\x10\x74\x85\x9d\x39\xea\x0c\x08\x9c\x68\xa3\xa0\xb4\xb6\x64\x45\x70\x6a\x19\x2d\xdb\x81\xca\x81\x2b\xa0\x7e\x99\x5e\x46\xe3\xec\x73\x03\x52\x25\x61\x34\xed\x2f\x7d\x30\x00\xf0\xa4\x15\x9b\xa1\x96\x0b\x15\x88\x51\x27\x03\x94\x60\xe1\x45\xe6\x05\xb5\xc1\x01\x6e\xc9\xb8\xdb\xd9\x95\x74\xd5\xb1\x80\xcc\x57\x7d\x39\x0d\xd5\x0f\x5f\xa4\x32\x50\x53\x30\x9d\xd4\x9e\xc7\x02\xe4\xa4\x10\xec\x21\x0e\x25\x52\x70\xfd\x42\x81\x05\xf1\x09\xa9\x71\x09\x3c\x14\x97\x24\x20\x89\x15\xc2\xf1\x13\xa8\x14\xab\x22\xf1\xd1\x8a\x6d\x7c\x07\xb8\xaa\x17\x03\x42\x70\x5a\x14\x2a\x64\xa3\xf5\xc4\x9f\x5f\x7e\xd6\x2f\xe0\x93\xe2\x60\x0a\x1f\xe4\xbb\xe8\x06\x25\xa4\x11\x37\x79\x81\x2b\x4d\x22\xfa\xf2\xaa\xf3\x10\xa8\x8e\x66\x8d\x66\x6c\xdd\x6e\x8d\x06\xa9\x0e\xb9\x93\x59\xbd\x6c\xde\x20\x53\x79\x03\x02\x61\xc6\x1f\x55\xe4\xb9\x92\xcd\x2b\x4e\x50\x8f\x5a\xbf\x40\x8d\x5f\xdb\x81\x9f\x13\xa3\xab\x3b\xa8\xea\xf7\xfa\x44\x54\x08\xa4\xf9\x18\x00\x14\xcc\x59\x47\x3a\x49\x95\xdd\xf2\x44\x22\x69\xa1\x09\x9e\x12\xe6\x2b\xd8\x39\xc0\xb7\x49\x4c\x7b\xd0\x8b\x3e\x81\xf2\x93\x41\xf4\x01\xb0\x44\xbd\x34\x45\xf8\xc7\x45\x93\x71\x09\x16\x57\x92\x4a\x10\x93\x65\xd1\x45\x7c\xa4\x39\x81\x36\x70\xbf\xe2\xa4\x58\x22\x48\xcb\x4d\x49\x27\x08\x24\xdb\x7c\xb0\x4b\x27\x3c\xb8\xae\x74\x86\x4e\x7b\x49\x1e\x37\x69\x60\x85\xa5\xab\x3c\x4a\xf8\x6f\x91\x07\x2d\xb6\x20\x9f\x20\x31\x02\x22\x6e\x48\xe0\x87\xc6\x3d\x43\x61\xf9\x69\xe9\xc7\x2f\x01\x09\x83\x68\x83\x9a\x14\x32\x6d\x1f\x06\xde\x07\xca\xc4\x10\x19\xc2\x9a\x50\x90\x38\xbd\xac\x53\x1f\x2d\x27\xbc\x16\x06\xa5\xbb\x6c\xfd\x98\xa3\x70\x7b\xe1\x76\xe0\x75\x98\x36\x33\x48\xdf\x3a\x10\x7d\x7b\x08\x72\x4e\x98\x88\x0c\x02\x32\x10\x2c\x10\x33\x2f\xc5\xfa\x7d\x3f\x10\x00\xc4\x5f\x78\x87\x8d\x9e\x16\x9f\x15\xf0\x16\x71\x4b\x78\x3f\xa1\x08\x4f\x1b\x4e\x72\x23\x23\x9c\xe4\x6c\x40\xdb\xb5\x60\x3e\xaf\xcd\xf6\xec\x46\x71\xd6\x42\x3f\xd3\xc0\x59\x89\x66\x9a\x22\x25\x30\x71\x3f\x46\x3d\xc8\xcc\x4f\x18\x2a\x01\x84\x87\xc3\xa6\x3a\x43\x78\x2a\xe3\xba\x19\x8c\x8d\x9d\x18\x68\x58\xd4\xa0\x99\x8f\x7e\x55\xf3\x1f\x84\x19\xbb\xc4\x8c\x19\x3e\x9e\xe0\x82\x01\x00\x00\xff\xff\x90\xb5\x71\xf1\x6f\x4f\x00\x00") func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularEotBytes() ([]byte, error) { return bindataRead( @@ -498,12 +499,12 @@ func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularEot() (*asset, return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot", size: 20335, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.eot", size: 20335, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x7d\x6d\x8f\xe4\x38\x92\xde\xf7\xfb\x15\x72\x1b\xf0\x07\x1b\xea\x16\xdf\x49\xef\xce\x1e\xe0\xbb\xc3\xc1\x80\xc7\x3e\xc0\x67\x1b\xfe\x64\x34\x76\x7a\x36\x07\xd0\xcd\x9c\xa6\x75\xb9\xeb\xfe\xf5\x8e\xe7\x09\x92\x52\x56\x65\x2a\xbb\xaa\xba\x7b\x6b\x71\xc6\x6e\x4f\xaa\x24\x8a\x22\x83\xc1\x60\xbc\xc7\x6f\xff\xfa\x4f\xff\x34\x0f\xe7\x0f\xbf\x7e\xfc\xe9\x97\x9f\xbf\x7b\x63\xde\x4e\x6f\x86\x8f\xeb\xfb\x9f\x7f\x78\x3f\xff\xf2\xf3\x87\xef\xde\xfc\xfc\xcb\x9b\xbf\xfe\xdd\x5f\xfd\xf6\xdf\xfc\xed\x7f\xfb\x9b\x7f\xfc\xdf\xff\xf0\x77\xc3\xc7\xf3\x1f\x86\x7f\xf8\x1f\xff\xe9\xbf\xfc\xe7\xbf\x19\xde\x8c\xef\xde\xfd\x2f\xf7\x37\xef\xde\xfd\xed\x3f\xfe\xed\xf0\xdf\xff\xe7\xdf\x0f\xe6\xad\x79\xf7\xee\xef\xfe\xeb\x9b\xe1\xcd\x69\x5d\xff\xf9\x3f\xbe\x7b\xf7\xc7\x3f\xfe\xf1\xed\x1f\xdd\xdb\x5f\x7e\xfd\xc3\xbb\xbf\xff\xf5\xfd\x3f\x9f\x7e\xfa\xfd\xc7\x77\xd2\xf0\x1d\x1a\xca\x4b\xef\xa4\x33\x63\xde\xfe\xb0\xfe\xf0\x66\x90\x6f\xa0\x6b\x19\xcc\xcf\x1f\xbf\xbb\xf2\xbe\x9d\xa6\x09\xed\xdf\x48\xc3\x7f\xfa\xb0\xbe\xff\xe1\xfd\xfa\xfe\x77\xbf\x7d\xd7\x2f\xff\xea\xb7\x3f\x7c\xf8\xf1\xa3\xfc\xfc\xf8\xcb\xcf\xeb\xf0\xd3\x0f\xdf\xbd\xf9\xc3\xfc\x7f\xf1\xc5\x5f\x7e\xfe\xf8\x7f\x4e\xef\xe7\x1f\xe7\x9f\x7e\xfe\xc3\xc7\x5f\x3f\xfc\xe1\x5f\xe6\xf7\xbf\xbe\x19\x4e\xbf\xfc\xfa\xd3\xa7\xf1\xfd\x0f\xe7\xf1\x4f\x32\x69\xe9\x9c\x23\xc0\xbb\xe3\x8f\xef\x7f\xff\x61\xf8\x97\x9f\x7f\x5a\x3f\x8e\xff\xfc\xe1\xd7\xf1\xc3\x3f\xb5\x06\xef\x3f\xfe\xfe\xc3\xcf\xeb\x77\x6f\x4a\x94\x3f\x7e\xf8\x50\xff\x1a\xad\x97\x3f\xdf\x61\x58\x3f\x7d\xfc\x28\x1f\x19\xf9\xe1\xcb\x2f\x84\xa9\xb6\xd1\x67\xd7\xae\xe4\x8b\xbf\xff\xe5\x07\x81\xf8\xbf\xfb\xb7\x7f\xfa\xe1\x37\x6f\xae\x3d\x19\xae\xde\xfd\xf7\x32\x98\xef\xde\x7c\x6f\xa6\x69\x90\xcf\x9c\x65\xa8\x27\x1b\xca\x3c\x9a\xec\x06\xf9\x37\x1b\x6f\x06\xf9\x37\xe3\x6f\xdc\x3c\xcb\xd3\x93\xb4\x3a\x8f\x68\xb6\x6f\x35\xa2\xd9\xd8\xda\xa1\x17\x69\x23\xdd\xf5\x86\xb8\x3d\x8f\x97\x4d\xd1\x23\x1a\x9c\xd0\xf4\xdc\xbf\xbc\x35\x6d\xdf\x46\x97\x68\xf8\xe9\xea\x2c\xfe\x83\xce\x62\x1a\xbc\xf4\xe2\xe4\xa3\xf8\x95\x7f\x27\x87\x91\xfa\x7a\x63\xc4\x93\xd1\xb7\x5b\xf8\x93\x8d\xf0\xd7\xf5\x7e\x05\x9a\xef\xa7\xeb\xe0\x94\x47\xc0\xaa\xdf\x3c\xc0\x86\x18\xec\x41\x73\xf3\xb0\xb9\x71\x93\x3f\x68\x6f\x9f\xd6\xbd\x7b\x62\xf7\xfe\x61\x7b\xef\x8e\x9a\x87\x87\xcd\x9d\x8d\x07\xcd\xe3\xc3\xe6\xd6\xa4\x83\xe6\xe9\x69\xcd\xf3\xa3\xb9\x46\x77\xd0\xbc\x3c\xea\x3d\x4e\x07\xcd\xdf\x3f\x6c\x9e\x0e\xe0\x6e\x7f\x7c\x52\xe7\xe1\x51\xf3\x43\x38\xbe\xff\xfd\x6f\x2e\xf6\xe8\x8c\x5f\xf9\x77\x32\xc6\x2d\x82\xf1\x69\x08\xfc\x73\xb4\x26\x6f\xcf\x5c\x58\x5c\x1a\x4c\x94\x7f\xc6\x0e\x36\xa4\xc5\x98\x84\xdd\x34\xd8\xc2\xdf\xc5\x7a\x3b\x4c\x83\x0b\x1e\xbb\xad\x2c\x71\x92\xdf\xc9\x0d\x31\x0e\xb2\x17\x65\x43\x9a\x6c\xa4\xfb\x10\xe4\xcf\xf0\x36\x0c\xa5\xac\x63\x74\x72\x11\xf3\x3a\xa6\x30\xb8\xf8\x36\xc8\x1d\xe9\xcb\xbe\x0d\x8b\xd0\x31\xe9\x6c\x0c\x72\x8d\x6e\xe4\x01\xaf\x9c\x95\x2b\xbc\x2d\x0d\xd7\x31\x4c\xfa\x34\x9d\x5c\xc2\x46\x9f\xf8\x49\xdd\x88\xcb\x28\xdf\xf5\xf2\x2f\xea\x3d\x3f\xc5\xad\xc5\xa0\x4d\xca\x30\x26\x3f\x38\x90\x07\xe9\x58\xbf\x55\xcc\x1a\xad\x7c\xd8\xcb\x68\x82\x34\xb0\x65\xf5\x11\x0f\x92\x8c\xca\x16\x19\x94\x4c\xc8\xb8\x15\x23\x4e\xab\x4e\x40\x1e\xad\x3a\x27\x69\x79\x32\xc9\x2f\xa3\x03\x51\x4a\xd2\x91\xb1\x59\x3a\x49\x79\xc1\x38\xe5\x4f\x01\x9a\xfc\xe9\x79\x25\xb3\x9c\x02\xa6\xe9\x64\xb6\x26\x48\x1b\x17\x07\x8e\xb9\xc8\x27\x0c\xe0\xe1\xc3\x20\x6d\xa4\x57\x59\x8d\x74\x93\xa6\x58\x6b\x6c\x5d\x54\xc1\x35\x10\xad\x53\xa9\x84\x6b\x2c\x95\x50\xdd\x7e\x39\xfc\xf8\xfb\x87\x08\xc4\x13\x42\x29\xe0\xc1\x8b\x91\xf4\x07\xcd\x84\xb4\x0e\xbe\x78\x59\xdf\x31\xcb\x1a\x13\x60\x46\xe0\x23\x68\x83\xcb\x90\x4e\x29\x4c\x8b\x1c\x5c\x32\x5b\xcc\x39\x63\xb1\x33\xe6\x06\xd8\x8d\x7a\xb5\x8e\xfa\x68\xc1\xba\x49\x4f\x05\x8b\x25\xb0\xf4\x7e\x28\x00\x9d\x93\x35\x11\x30\x11\x4f\x64\x9a\xf2\x47\x28\x40\x15\x13\x80\x78\xa3\x55\x8c\x63\x87\x66\xca\xbc\x21\x8f\xf1\x44\xba\x17\x20\x0b\xbc\x81\x8c\x06\xc0\x9f\xb2\x22\x11\x61\xac\x48\x66\xe5\xe7\xf6\x5c\x13\x77\xbc\x82\x44\x30\x68\xf6\x0a\xe7\x19\xf0\xc6\x68\x78\x61\xeb\x03\x3d\x0e\x70\x4e\x7f\x92\xe6\x38\x16\xa2\x3c\x71\x78\xe2\xf4\x9e\x41\x1f\x11\x37\xe2\xe4\x78\x21\xbf\xed\x95\xc2\x3f\xf5\x05\x1e\x38\xf1\x68\xf9\xd2\xf4\x63\x5f\x05\xa2\xf2\xec\x04\xa5\x65\x97\xce\xa3\xb5\x6e\x90\x7f\x9f\xbe\x37\x39\xc9\x68\xdd\x6c\x31\x79\xf9\xcf\x1c\xe5\x42\xfe\xcd\xf8\x63\x90\x7f\x9f\xbe\xcf\x19\x5b\x7b\xdf\xa6\x94\xa1\xd8\x45\xfa\xd4\xff\x3b\x4b\xc8\xca\x85\x20\xbd\xec\xa5\x20\x77\x83\x03\xf8\xf1\x74\xc4\x37\xdd\x3a\xea\x6e\xba\x39\xda\x0f\x53\xc7\x19\x01\x02\x8e\x73\xfc\x67\x96\xad\x8c\xdd\x1e\x64\xae\xf2\x1f\x3d\x65\xb9\x93\xb3\x5c\x99\x7a\xee\xca\x93\xa3\x7e\xdb\x0e\x90\xe1\x67\xbf\x98\x8c\xfe\x04\x9b\x64\xe7\x0a\x0e\xae\x06\x74\x4d\xd0\x21\x0a\x2e\x08\x17\x30\x95\x21\xca\xce\x16\xcc\xc2\xda\x44\xae\x80\x09\x41\x3e\x6f\x8d\xa0\x89\x6c\x47\x60\x8a\x93\x4e\x04\x6b\x12\xe8\x40\xac\x28\x22\x18\x2e\xd3\xe4\x76\x97\x3d\x6c\xae\x7e\x48\x10\x75\x49\x82\x0e\x58\x06\x03\x0a\x21\x10\x5b\x3d\xae\x8a\x34\x39\x67\x52\x42\x23\x33\x16\x90\x07\x42\x35\x0d\x16\x40\x4d\x01\x24\xa3\x00\xaa\xc0\x15\xd0\x10\x7c\x16\x4d\x70\x21\xe8\x2e\xc8\x20\xc4\x95\x23\x4c\x6d\x84\x43\x1d\x62\xd8\x86\x68\xb7\x21\xda\x23\xa0\xb9\x46\x36\x84\x50\x17\x90\x7f\xa0\xb1\x11\x4a\xee\xbc\x5d\xe5\x1f\xae\xf9\x3b\xe2\x02\x0f\x46\xf9\x6b\xe1\xce\x94\xeb\xc4\x6d\x66\x3a\x6a\x2f\x32\xa6\x3c\x60\x60\x59\x47\x9c\x41\x74\x0b\x36\x9c\x0c\x9a\x63\x1d\x01\x30\xd9\xeb\xf2\x93\xe6\xb1\xa2\xb8\xcc\xd7\x94\xde\x1d\x2e\x40\x1b\x27\xd2\xc6\x3a\x88\xb1\x8e\x4a\x90\x39\xc5\x3a\x58\x99\x7f\x24\x6d\xb0\xce\xad\xd6\x09\xde\x96\x24\xbf\xae\x92\xe2\x15\xff\x19\xf8\xf7\x3a\xee\xaf\xb7\x26\x03\xfe\xd0\xf7\xc6\xda\xd1\x11\xb8\xc2\xee\xe8\x4c\x19\xf4\x4e\x16\x42\x28\xbc\xb1\x72\x22\x38\x10\x06\x60\xc0\x04\x42\x15\xfd\x8a\x39\x59\xde\xb1\x98\x48\xee\xcf\x46\xfe\x2c\x3e\x0f\xa0\xf4\x53\x01\x5d\x9b\xd0\x0c\x28\xe2\xb2\xbc\x48\xf2\xa4\xef\x4e\x5c\x51\xe9\x2e\x19\x1e\x5e\x38\x6c\x88\x15\x84\x40\x48\xd8\x7a\xba\xd2\xa4\x66\x05\xe4\xcd\x7a\x62\x95\x55\x42\x6c\x95\x26\x06\x00\x2c\xe8\x2e\xc6\x29\xc3\x83\x4a\x0e\xbb\x8c\x36\x1e\xd8\x22\x77\xf0\x8c\xe3\xa9\x0d\xd9\x05\x7b\x18\xd8\x77\xed\x9a\x9f\xe4\x17\x8f\xc0\x15\x1b\x61\x92\x93\x30\xe3\x10\x96\x63\x1a\x9f\x06\x79\xb4\xbc\x52\x5e\x3a\x09\xad\x72\xd9\xf2\xa0\x94\xdb\x32\x1e\xef\x0b\x6e\x09\x70\x53\xe8\xcf\x82\xbe\xec\x93\xe0\x40\x14\xf4\x31\xb3\xa0\xc6\xd1\xf7\xd3\xb7\xf8\xbe\xec\x9d\x34\x24\xf0\x51\x85\xa7\x8b\xf4\x25\xa8\x20\xb4\x37\xca\x1d\xe0\x2e\x9e\x84\x2a\xa3\xc8\xc9\x6f\xad\x0c\xa2\x38\x3c\x90\x53\xdd\x61\xd7\xcb\xee\x37\x78\x08\xf4\x37\x06\x77\x6f\xc8\x25\x3a\xad\xdc\x29\xa8\x10\x47\xef\x78\xe4\x08\x47\x06\x42\x29\x2c\x44\xc2\xae\x89\x40\xa0\xa4\x4b\x65\xb8\x82\x20\x3c\xb2\xa5\x40\x78\x84\xdb\xc8\x59\x3e\x69\x57\xf9\x27\x97\xfc\x19\xe5\x37\x73\x00\x96\x72\x16\x91\x4b\x30\x8e\xaf\x8f\x7c\x7f\xd5\x6e\x47\xf4\x4b\xfa\xac\x87\x1d\x3e\x2d\xb3\x6b\xc7\xd7\xc1\xc0\xcb\x7e\xe0\xa6\x12\x7f\x79\xd7\x6c\xc7\x65\x67\x38\x2b\xe1\xc7\x67\xf8\x2d\x7d\xe4\x6e\x3f\x0a\xb7\x1f\xa5\xdb\x8f\xca\xf5\x47\xae\x0e\x23\x36\x91\x2e\x56\x29\x4f\x1f\xc5\xeb\x8f\xe4\x8d\x5b\xa3\x1f\xf4\xe1\xed\xf1\x1f\x4d\xe0\x68\x06\xb7\xa6\x70\x7b\x19\xcc\xd4\x97\x21\x70\x0a\x20\xfb\x90\x8c\x41\x7c\xb0\xcc\x64\xda\xf0\x27\xa4\xdc\x45\x1e\x4d\x83\xf2\x71\xb8\xb7\xb2\xdd\x88\x1b\x9c\x35\x19\x2c\xa3\xcf\xf4\xf6\x3a\x6e\xad\x29\x0b\x2f\x23\xfb\x18\x7b\xbf\xeb\xd8\x3f\x06\x66\x28\x7e\x9b\x61\x0c\xc7\xe3\x88\xd3\xeb\x80\x07\x99\xc1\x2f\x30\x90\xe1\xa5\x23\x39\xc0\x20\xb3\xc7\x20\x7b\x34\x50\x7b\x67\xa0\xf6\x3e\xc4\xec\x7d\x0c\xf2\xdf\x66\x18\x77\x30\x68\x92\xa3\xf4\x15\x80\xc3\x4f\x5f\x69\x59\x86\x67\x0c\xe4\x1b\xad\xcc\xfd\x81\xbc\x70\x69\x86\x2f\x33\x92\xfc\xb5\xd6\xe6\x19\xe3\xf8\x9c\xa5\x19\xbe\xc9\x48\x5e\xc3\xb6\x39\xa0\x76\xf6\xf5\x51\xbb\xda\xcb\xae\x93\x5d\x1f\x97\xa3\xd8\x06\xe1\x36\x1e\xb0\x8f\x60\x37\x80\xeb\xdf\xd7\x66\xeb\xf8\x60\x1a\x7f\x51\xd4\x2e\x7d\x01\x6a\x97\xbe\x08\xb5\x7b\xd6\x48\x9e\x31\x90\xbb\x4b\x73\x3c\x90\xcf\xa3\x76\xf7\x46\x72\xb0\xa5\xba\xde\xa1\x08\xcc\xfc\xec\x21\xfd\x7b\x3b\xcd\xd9\xe4\x21\xcb\x2f\xc4\x10\x48\x28\xb3\x70\xd7\x09\x4a\xb2\x24\xb7\xa6\x08\x35\xe1\x51\xb7\xbe\xcb\xe7\x71\x70\x26\xcf\x56\x04\x37\xf9\x27\xef\xd6\x8b\xd6\xad\xa5\x44\x97\xed\xbc\x7f\x30\xf2\x83\x17\x8f\x46\x7d\xfb\xe2\x61\xef\x10\xff\x39\x1a\x4d\xf8\xff\xca\x95\x47\xca\x95\x26\x3e\xd1\x32\xd8\xa4\x16\xdb\xf4\x7d\x94\x5e\xec\x5e\x8e\x51\x43\x5e\x13\x6d\x8e\xa0\x1d\xf7\xd0\xf6\x4f\x83\xb6\x69\xe0\xb1\x0a\x6d\x5b\x0a\xa0\x9d\x8e\xa0\x9d\x15\xda\x99\xd0\xce\x2f\x81\xb6\xbf\x03\xed\xd4\x61\xbd\x41\xba\xc3\x39\x75\x20\x0f\x8f\xa0\x6c\x68\xa6\xb4\xdd\x4a\x79\x2c\x9e\x9b\xb4\x83\xa0\x6a\x0a\x60\x28\x9d\x64\x37\x3b\xb3\xda\x84\x9d\x83\x45\x89\x71\xa1\x65\x07\x6a\x4f\xf9\x0b\xff\x09\xd0\x0d\x60\x43\x58\x12\x0d\x93\x60\xc6\x01\xcd\x98\x04\xe4\x13\xcd\x20\x81\x17\xf8\xc5\x13\xb9\xa6\x26\x02\xaa\x0a\xe9\xd7\x4e\x2b\x7b\x82\x0a\x16\xfd\xc3\xce\xc4\x07\x89\x1b\x6f\x5a\x31\x8a\x51\x86\xc1\xde\x01\x76\xea\xab\xe4\x7b\x4a\x72\x2c\x4d\xbc\x50\x5e\x65\xaa\xbf\x00\x1e\x4b\xaa\xe5\x49\xb5\xf4\x0f\xbd\x46\x13\xb6\xc0\x5b\x7c\x89\x7d\x69\x93\x4f\xdf\x43\x13\x9d\xee\x1c\xb0\xe6\xe8\x80\xf5\x77\x0e\x58\x73\xed\x80\xbd\x3c\x5f\x8f\xec\xc7\xb2\x4e\x79\xa7\x85\x34\xdc\x3c\xae\x6d\x14\xb5\x2f\xe0\x04\x30\xe7\xd0\x76\x56\xa8\x4f\x3f\x7d\x9f\xf8\x20\xb7\x07\xb9\x3f\x50\xcd\xc5\x99\x1a\x79\xdd\x8d\xb6\x3d\x3b\x18\x48\xd3\xe7\xd8\x08\x64\x03\xc8\x9c\xa0\x0e\x14\x44\xb3\xa1\xee\x48\x28\xb0\xac\xe3\x02\x8b\x82\x2f\x03\x94\xd5\xc5\xcd\xc0\x9c\x19\x76\x22\x98\x74\x16\x68\xdb\x42\x21\x9a\x09\x68\xc2\x6c\xa4\x8b\x6c\x66\xc0\x82\xcf\xa4\x6f\xa8\x34\x5d\xc1\x2d\xd9\x9e\xd8\x76\xc1\x2c\x1e\xea\xa9\x01\x86\xb4\xb0\x58\xa8\xbc\xe4\x32\xe0\xa9\x3c\x9c\xe5\x9c\x58\x3c\xcc\x74\x43\x71\x03\xdf\x74\xd2\xaf\xb4\xcd\x66\x09\xd0\xe0\xc9\xe7\xf0\x4f\x87\x21\x4f\x64\x4c\xd2\x8d\xc7\x13\x57\xe4\xa5\xd9\x0c\x71\x86\x5d\xc9\xe5\x45\xf0\x46\x38\x0c\xe9\x1f\xab\x9a\xf9\x55\xf8\x12\xf0\xe1\x20\x17\x03\xb6\x43\x1c\x38\x5f\xbe\x3b\x4a\x67\xb3\xf6\x4b\xe3\x55\xc8\x54\xf8\xea\xf7\xea\x30\x66\xe9\xc6\x2d\x34\xef\xc1\xe8\xc8\x51\x8e\x32\x62\xe8\x1a\xa1\x7b\x95\x47\xf8\x28\xf4\x85\x30\x86\x52\xa7\xc7\xc9\xb2\x01\xbe\x8e\x1e\x46\xb3\x8c\xd4\xea\x62\xff\x2b\x90\x70\x17\xc3\x23\x14\x17\x40\x76\xf4\x89\x90\x55\xf0\x56\xb0\x63\x90\x23\x7a\x0e\xfa\xbc\x2e\xcd\x88\xe5\xc2\xe4\xb8\x78\x6a\x43\xcd\xb4\xa1\x26\x10\x95\x1c\xb0\xce\x50\x2c\xe4\x3c\x44\xd8\x7f\xcc\x0a\x40\x44\xc7\x9f\x51\x7e\xa3\xd3\xf5\x81\x25\xb0\xe0\x0e\x07\xbb\x8e\xed\xf9\x58\xdb\x8f\x7c\xfd\xe8\xf8\xb4\xd3\x1e\xcd\x27\x1b\xce\xdc\x95\x46\x96\x1a\x7b\x09\x3a\x6d\xfc\x07\x7f\x9d\x6c\x0a\xd4\x7e\x0a\x07\x06\x83\x34\xee\x42\x4f\x8e\xff\xf0\x4f\xd8\x8f\x16\x8f\x3d\xc7\x5b\x23\xee\xad\x6c\x37\xe2\x86\x9e\x34\xd2\xc9\x62\x40\xa8\xd9\x2d\x0c\xbe\x2b\x2f\xf0\x27\x36\x91\xd2\x9e\x7a\xcc\xae\x7a\xd4\x62\x3b\x07\xd2\x7c\xac\x10\x8e\x5d\x1c\x16\x26\x7f\xa2\x21\x16\x87\x58\xae\xc6\x58\x6c\x36\xf4\x80\xb3\xa6\x7e\xd9\xac\xa3\x0e\xc7\x4d\x95\x99\xe2\x10\xf5\xa6\x9b\x70\x7c\x72\x2a\x66\xd3\x47\xa2\xc7\xd4\xcf\xc7\x84\xad\x1b\xee\x3c\x6a\xe6\xb3\x66\x19\xaf\xaa\xc3\x74\xfb\xb5\x72\xf3\xd1\xc1\x6a\x35\x95\x90\x01\x8a\xcc\x51\xb6\x59\xf4\x7e\x96\x7f\xb0\x5d\xf8\x4a\x9d\xe2\x85\x9b\x8c\xbb\xf0\x9c\x89\xf7\x09\x8e\xb5\x3b\x94\x10\x84\x30\x46\x51\xc2\x0c\x80\xf9\x0a\xf0\x9f\x7c\x0a\x4a\xf1\x78\xe2\xc5\x14\xae\x2f\x5b\xbe\xbe\x6a\x80\x4a\x56\x82\xda\xf9\xae\xd3\xa1\xf9\x5c\x46\xd5\x98\x59\xdf\x8e\x4d\x18\x55\x64\x80\xa5\xac\x16\x96\x3d\x23\x27\x79\x29\x72\x8b\x3f\x23\x7e\xe9\x06\x20\xf7\xb3\x32\x1b\xeb\xd8\x2f\xfa\xa3\xb1\x35\x1e\xeb\xcb\x63\xeb\x6c\xd4\xce\x61\xd6\x8d\xf5\x93\x82\xa4\x72\x58\xd1\x7e\x24\xcd\x2d\xb1\xbb\x9a\xb5\x4d\xff\x43\xaf\xb5\x95\x36\x1a\x2f\xfe\xd8\xb7\x1a\x2f\xde\x1f\xf7\x5d\x2b\x5e\x85\xba\x8a\x58\x0a\xf5\x84\xea\x5c\xdc\x3d\x78\xf9\x6e\xaf\x06\x5f\x34\x7b\x67\x86\x7a\xf0\x94\x99\x02\x07\xb5\xe4\x11\x5c\xb6\x6a\xcc\xed\x94\xd9\xaa\x9e\x4a\x41\xce\x15\x6c\x15\xa2\x8e\x85\xc1\xc5\x37\x9b\x7b\x70\x02\x16\x2f\xd4\x89\x87\x9f\x85\x81\x3b\xb1\x0b\x01\xd0\xe1\x98\xc2\xce\x34\x41\x9b\x50\x81\x10\x52\xda\xf7\x27\x9e\xa6\xae\x9d\xa6\xb4\x59\xe3\x29\x87\x2a\x6d\x2b\x1e\x1b\x6e\xad\x2c\x07\x0f\xd9\x5b\xa5\x4a\xf8\x76\xb8\xa7\x94\xb7\x71\xb7\x7f\xd4\x4a\x63\x07\x9f\x2a\xb3\xa7\x06\x38\x53\x84\xdc\x16\xa3\xe6\x38\x30\x87\x6c\xc0\x8b\x91\x57\x78\x58\xcd\x7d\xfa\xc6\x88\x57\xd8\x0b\xf9\xca\x71\x77\xb9\x6b\x30\xee\xde\x1b\xb7\xde\xc6\xfe\x85\x71\xfb\xea\xb8\x0d\x65\x6c\xc3\x03\x22\xe6\x0d\x11\x31\x76\x12\x39\x61\x1a\xb5\x63\xbd\xc0\x2f\x9e\x58\x7e\xb2\x5d\xd4\x27\x83\x5e\xb1\xf1\xd8\xde\x17\xba\x17\xd4\xd8\x22\x1b\xfd\xdc\x71\xcc\xe9\x0d\x59\x81\x50\x3d\x2a\x0e\xe0\x9a\xfe\xb5\x6d\xce\x0a\xb2\x19\xc0\x01\x09\x9b\x1b\x94\x4e\x30\x01\x57\xa7\xc5\xce\x34\x9a\x43\xa7\x0a\xbb\x99\x1a\x85\xdc\x0a\x69\xa5\x9b\x0b\xce\x84\x4c\x83\x27\x04\x1d\x5c\x00\x63\x6e\x10\x5a\xd2\xe8\x1b\xe7\x63\xdb\x4a\x41\x7d\x68\xb0\xbf\x70\x6d\xdb\x0e\x13\x71\x26\xa8\x85\x2d\x1e\x0d\xb2\xbc\x8a\x25\xb6\xdb\x12\xbb\xdd\x02\x6f\xcb\xdb\x17\x17\xd2\xb5\x49\x66\x78\x01\xf5\x75\x25\x09\x99\x32\xb2\xb8\x14\xf9\x0e\xb7\x80\x9b\x1e\xca\x75\x14\xa1\xf6\x12\x54\x17\xa0\xba\xfc\xb4\x17\x9f\x76\xd2\x53\x13\x9e\x9a\xec\xb4\x89\x4e\x44\xa5\x26\xfc\x8d\x5d\xfa\x1b\xbb\xf8\x37\x36\xf9\x6f\xac\x02\x60\x13\x04\x9b\x60\xb8\x40\x04\x16\xc8\xc2\x2c\x0f\x0e\x59\x9d\x14\x7c\x6c\xce\xb7\xb8\xa3\xae\x0a\x70\x3a\x4a\xa4\x90\x22\x30\x01\x66\x76\xe1\x94\xa6\xe1\x52\xec\x6b\xb3\x19\xf6\x22\xe2\x6e\xde\x47\x40\x33\x8f\x84\xe1\x06\xb3\x0d\x64\x0d\x62\x1b\xc0\xd0\x60\x31\x25\x53\x36\xe4\x02\x5a\x3a\x14\xc8\xbf\x7a\x44\x60\x22\xf0\x11\x92\x7f\x18\x34\x31\x55\x0e\xb1\x24\xbf\x0b\x61\xc7\xcd\xda\x60\xd6\xe0\xa8\x1b\x95\x7c\x4f\x3d\x9f\x14\x1e\x00\xb5\x87\x2f\xa6\xa5\xe7\x1d\xfa\x91\xdf\x45\xfb\x79\x20\x70\x9f\xda\x02\x7d\x86\xfc\x3c\x5c\x08\xd0\x32\x30\x4e\xa9\x41\xfb\x08\x6e\x7b\x16\x0d\x3e\xa5\xe0\x3c\x6d\x3b\x1b\xcf\xd5\xca\xdf\x98\xe3\xd2\x98\xe3\x52\x5d\x15\x95\xd3\x6d\x2a\x9f\x4d\x09\xd4\x8d\xf2\xfe\xf6\xa3\x78\xfb\x51\xbe\xfe\x28\xe8\xb7\x4e\xa1\xb1\xc7\xa1\xb3\xc7\x61\xf7\xad\xd0\xdf\x0a\xed\x51\xbc\xfa\x68\xe0\xb3\x7c\xf5\xd9\x01\xc8\xdc\xde\xb3\xf0\x1c\x8f\xe4\x18\x33\x35\xbd\x6e\xb6\x03\xc4\x66\x2f\x64\x45\xda\x86\x42\x11\x27\xc3\x13\x92\xea\xac\x50\xe8\xbe\x2a\xd7\xaa\x50\x33\x77\x04\xa0\xf8\x48\x3a\xc1\x87\xc7\xad\x35\x97\xe7\x42\x42\x61\x1f\x63\x1f\x65\x55\x3c\x37\x69\x23\xdc\x35\x33\x0c\xf7\xd4\x20\xc7\x67\x93\xf3\x7b\x4c\xab\xfe\x24\x3b\x77\x92\x1d\xc6\xc0\x19\x39\x4e\xd5\x8d\x09\x7b\xd6\x6e\x22\x24\x88\x08\x08\x1a\x94\x76\x6e\x92\x5f\xee\x90\x15\x0a\x2e\x6f\x57\x32\x27\x00\x50\xe0\xe4\x21\xd5\xd2\x0b\x4b\x9d\x62\xaa\xf3\x9e\x72\x52\x0a\x0e\x78\xe4\x71\xe3\x3a\xc0\xc5\x4f\xab\xba\xce\xe8\x3d\x28\xcd\xb4\x59\x6c\xaf\x9f\xef\x21\xc7\xc6\x98\xda\x7e\xc4\xea\x09\xab\x07\x2c\xfc\x6a\x01\x45\x9e\xad\x38\x5a\x71\xae\x93\x7f\x4c\xba\xd6\x96\x9e\xc4\xb2\xb1\x31\xe5\x48\x86\x43\x08\x52\x48\xfc\x19\xe5\x57\x1f\x8d\xfa\xac\x2e\x38\xde\x21\xab\xf0\x94\x2f\xc2\x67\x92\xce\x63\xd6\x42\x07\x0d\xb6\xbe\x32\x32\x7a\xb4\x39\xb0\x7b\x32\x2c\xaf\x88\x03\x2f\x36\xbd\x34\xf5\xb4\x43\x03\x43\x3e\x9f\x37\x56\xed\x0d\x2d\xab\x62\x4b\x9d\x6c\xcf\x3e\x72\x07\x0c\x51\x90\x69\x85\x27\xab\x48\x0b\x82\xfc\xc4\x7d\x11\x37\x57\x9e\x1b\x42\x6f\xd9\x6c\x54\x05\x86\xa1\x6b\x9b\x5c\x0a\x6a\xc8\xfd\x91\xf4\x0c\xef\xae\xd0\xbb\x78\x35\x44\x7e\xa5\xbe\x0f\x96\x37\xfe\x66\x17\x6a\x72\xea\x62\xa7\x55\xcd\x81\x6a\x95\x55\x23\xee\xba\x9b\x51\xcc\x38\x89\x4a\x8f\xa5\xe9\x81\x2d\xc2\x53\x24\xb3\x05\xcf\xec\x6e\x8f\xc9\xec\x42\x65\xb6\x98\x99\xfd\xa3\xde\x15\xfe\x73\x34\xe6\xf4\x8c\x31\x53\xb0\x0e\x69\x8e\x65\x08\x4e\xf0\x07\x5f\x71\x70\x21\xa4\x8b\x99\xa2\x59\xa4\x76\x3d\xf2\xc0\x9b\x11\x0a\x10\xfc\x22\x1c\x16\xb6\xa4\xfc\x58\x9f\x81\x64\x60\x0a\x8a\x83\xbf\xdb\xd1\x10\xf3\x6e\x88\xe6\xbc\x1f\x66\x53\x7c\xea\x30\xdb\x28\x31\x40\x78\x42\xe6\xc3\x01\xa6\xa9\x0f\xd0\xe9\x00\xc3\x95\x01\x86\x3e\xc0\xef\x73\x2e\x43\x09\xb2\x02\x82\x29\x8b\x9e\xb2\x01\x14\x05\xfe\xd2\x5e\xd5\xfe\xd0\x92\x29\xf1\x81\xf6\x0e\x0d\x67\x90\x98\x18\xe7\x38\xc8\x3b\x30\x19\xa4\x4c\x3b\x86\x9f\xb0\xff\xad\x23\x6e\x79\xf9\x33\x43\x65\x98\x8f\xc0\xb0\x73\xb8\xe3\x71\x14\x1e\x1a\x54\x76\x36\x16\x3d\xdc\xaa\xb8\x55\x9b\xec\x4f\xdb\xfe\x8a\xeb\x27\x65\xdc\x79\xec\xf1\xb6\xeb\x51\x51\xae\x3d\xca\xd7\x1f\xd9\xdb\xc7\xbc\xbd\xed\x96\xd7\x14\x0f\x66\xdf\xa1\xdd\xbf\x7e\x69\x34\x1a\xf4\x5e\xfb\x48\xd7\x69\xd3\xc9\xea\xea\xc7\xa3\xce\xa6\xde\xbf\x10\x39\xdd\xae\x87\x6e\xb6\xaa\xf2\x49\x35\xae\xa8\x37\xc3\xf5\x19\x97\xfe\x49\x77\xa1\x28\xe1\x83\x72\x1d\x14\xc6\xdc\x04\xd3\xed\x55\xf7\x9b\x7f\xdf\xce\xc8\xb6\x03\x4f\x67\x24\xaf\x0c\x66\xb7\x2e\xdb\x17\xf7\xfc\x92\x30\x6d\x46\x1f\xc8\xef\x05\x1b\xa5\xef\xd8\xed\x9d\x6e\x72\xb8\xf2\x4e\x3e\xfa\x4e\x69\xef\xd8\xf6\xce\x66\xa4\xb8\xf5\xa1\x03\x78\x6c\xde\x6a\x2a\xac\xaa\xac\x7a\x55\x91\xec\x93\x9f\x31\x62\x8a\xb5\x35\x2a\x81\x9f\xf6\x59\x36\x32\xcd\xa2\xb2\x13\x2d\xe4\x5e\xb3\x38\xb2\xea\x42\x72\x55\x87\xbb\xf2\xc2\x4d\x08\x13\xd2\xff\x27\xea\x37\xe4\x67\x41\x3b\x34\xaf\x4d\xd6\xb1\xbd\xb4\xa0\x41\xff\x97\x8e\xe8\xae\xef\xac\xf5\xe5\x3c\x2e\xb5\x9f\x9f\x33\x7e\x1d\x09\xc6\xa9\xe3\xaf\xa3\xc7\xd8\x1d\x44\xdb\x81\x77\x57\x7d\xc8\x11\xea\x1b\x75\xe4\x3a\x6e\x37\xe9\x98\xf5\x11\x16\xba\xaa\xf1\x64\x4d\xae\x8c\x01\x57\xb2\x77\x67\x1f\xe8\x26\x71\x34\x4f\x77\xc9\xd8\x4d\x36\xcc\x26\x61\xa5\xc2\xa9\x58\xd5\xa4\x4d\x5b\x30\x57\x45\xee\x14\x76\xf7\x10\x6e\xd4\x90\xa3\x1c\x23\x87\xdf\x05\x4e\xd5\xd1\x79\xcf\xdf\xd1\x7b\xd7\x54\xcc\x76\xea\x8c\x6c\x63\x63\x03\xa3\x53\x1e\xf0\xb0\x3b\x0e\x16\x8c\x68\x38\x5c\xcf\x70\xc1\xf7\xa7\xaa\xf5\x30\xed\xf4\x8c\xf5\x8f\x6e\x93\x4b\x8d\xf8\x90\x0a\xe5\x6e\x2b\x57\x91\x2a\x38\x91\x09\xca\x0c\x1e\xd5\x58\x7f\x0a\xc5\xce\x11\xf2\x9f\x9f\x61\x1b\x72\x3e\xca\x50\x07\x1e\x6b\x60\xdd\xd4\x47\x40\xc4\x51\x6a\x67\xa6\xaa\x9d\xa1\xef\x00\x2f\xa5\x43\x39\x86\xe4\xe5\x6a\x8f\xb2\xd8\x2f\x0c\x66\x31\xc2\x31\x92\xe7\xc7\x89\x52\x0d\x26\x2a\x31\xac\x46\xd9\xe2\x54\xad\x74\x78\x8b\xdd\x69\x7c\x02\xfa\x26\x94\x12\x29\xe6\xd0\xbf\x8b\x9b\xf2\x90\x21\x05\x47\xa7\xba\x8f\x7b\xc2\x56\xc5\x95\x9d\xb4\xb2\x13\x56\xb0\xf4\x3b\x79\x67\x13\x77\x28\xed\x74\x11\x6b\x93\x5e\xd6\x4d\xa6\x51\x4d\xc6\xe8\x07\x4c\x82\x0a\x1a\x2a\x61\xa0\x0c\x15\xb0\x09\x98\xa3\x6c\x0d\x61\x13\xf0\x57\x76\xf5\x79\xf5\x54\x52\xf1\x88\xbe\x21\xb5\x53\x20\xbf\xbc\x65\x29\x92\x8d\xb0\xfe\x21\x6c\x51\x50\x95\x6d\xda\xb7\x36\xa9\x6a\xdc\x89\x55\x9b\x6c\x26\xa2\xa5\x0b\x11\x67\x1f\x29\x97\x4c\x0b\x7c\x81\x5d\xa1\x76\xaa\x3f\xa3\xfc\x32\xe2\x50\x7e\xc7\x7e\xd1\x9e\x8c\xb5\xe5\xa8\x2f\x8a\xb0\x26\x48\x11\x2a\x14\x05\x3d\xc0\x07\x06\x44\x35\x0a\xb3\xc3\xe0\x46\xb3\xca\xbd\xc4\xf8\x01\xfe\xe8\xbd\xb1\xb6\x18\xf5\x05\x25\xd5\xe9\xa9\x07\x54\x63\x20\x05\x96\x72\x00\x45\x59\x90\xd8\x61\x00\x1c\x5d\xd5\x5a\xbc\x92\x9d\x2d\x42\x6f\x9d\x3f\xb9\x62\x66\xc2\xd5\xda\x85\x82\x06\x84\x17\xc0\x28\x67\x02\x5a\x95\x15\x8e\xf0\x8a\x27\x6f\x12\x3b\x15\x78\x1b\x5a\x4e\x3d\x62\xaa\x04\x95\xc9\x68\x41\xb2\xc3\xbe\x75\x89\x46\x57\x98\x6c\x33\x22\x52\xf3\x89\x46\x50\x57\xc8\x88\x4e\x91\x61\xa8\xb4\x80\x62\xfd\x12\xf4\x20\x54\xcc\xb0\x8f\x91\x3a\x2d\x46\xb7\xc2\x62\x2a\xcf\xf1\x65\x01\x2c\x8c\xc1\x56\x98\xec\x04\x2e\x3d\xcd\xaa\xc5\x92\xad\x8c\x51\x3b\x23\xc8\xef\x64\x8f\x1e\x81\x27\x5f\xd0\xbf\x5c\x80\xc8\x55\x98\x73\xb6\x21\x32\xc2\x60\xcf\xd9\xa6\x6a\x95\x96\xc9\x10\x6f\x28\x6b\xc6\xba\xd3\xac\x9e\x3f\x10\x4f\x7c\xa1\xe0\x7d\x16\x80\x7a\xaa\x1e\x5b\x34\x26\x62\xf7\x72\x5e\x0b\x43\x56\x32\xa3\x3e\x42\xc5\x7b\x95\x73\xa5\x0b\x10\x06\x5f\x83\x7e\x9a\x6d\x00\xfe\x2d\x59\xd1\x38\x89\x78\x34\xba\x41\x95\x94\x65\x05\xbc\x28\x73\x46\xe2\x73\xc8\xd5\x02\x51\x28\x7b\xd6\x70\x92\x42\xe9\xc9\xd3\xf6\x3f\xd6\xa0\x4e\xfa\xe4\x80\xe1\x86\x33\x88\xd5\x88\xa9\xaa\x73\xf1\x95\x0e\x8a\x90\xba\x64\x44\xe1\x22\xfc\xd0\x63\xe5\x11\x09\x07\xa8\x2c\x60\xa2\x06\x8d\x13\x36\x41\x75\x09\x0c\x44\x8d\x55\x39\x59\xaa\x24\xe2\x5b\x38\x85\x2b\x4b\x82\xc2\xd1\xc8\x09\x46\xd9\x37\xa0\xab\xcc\xae\x80\x69\x50\xec\xb9\x49\x0d\x21\x85\x1f\x13\x76\x2e\x1d\x45\xe6\xf8\xb2\x3f\x4c\xce\x21\x2d\x09\x2e\x44\x1a\xb9\xea\xd1\x15\x83\x97\x33\x08\x80\x49\x42\xaf\x7d\x01\x01\x0d\x8c\x51\x1e\x00\xe2\x02\xa4\x84\xdd\x9d\x74\x1a\x4b\x48\xf7\x2a\xbd\x90\x0e\x4f\x5e\x0e\x43\xd0\x12\x69\x04\x1c\xcc\x83\xfa\xdd\x50\x11\x01\x4c\x73\xa9\xd1\x0e\x07\x1a\x9f\x94\xcb\x00\xc1\x21\xd8\x67\x0d\x48\xce\x36\x68\x88\x61\xb0\x14\x6b\xb3\x5d\x11\xa2\xe4\xe2\x19\xb1\xba\x77\x54\x12\x61\xea\x61\x55\x81\x8b\x92\x02\xad\xdc\x23\x02\xa4\x2c\x94\x0c\x89\xbf\xb2\x88\x09\x37\xd5\xcf\x24\x91\xe6\xe9\x5d\x55\xcc\xb4\x10\x65\xa1\x80\xa7\x54\x6d\x3c\x63\x15\x2e\x16\xb2\x21\x32\x3d\xae\xf1\xc8\x78\x38\x30\x1f\x1a\x77\x86\x8d\x87\x39\x72\xd6\x8c\x02\x37\x55\x86\xc9\xa1\x1e\xa0\xa1\x91\xa2\x2a\xc2\xf0\xae\xdc\x94\x06\x95\x54\x3b\x8d\x30\xd7\x18\xf2\x95\xba\x1d\x55\x52\xb9\x7e\x92\xe7\xca\xd8\x8d\xbc\xf0\x44\x47\x5f\x3e\x5d\xcf\x7c\xa1\xb0\x69\xbc\xa6\x2c\x8e\xc8\x7d\x8c\x97\x07\xcb\x22\xac\x0b\xce\x6b\x40\x28\xaa\x7a\x7c\x1e\xdb\x95\xdc\xad\xa7\x39\x08\xaa\x21\x64\xcc\xe7\x43\xe6\x12\x2e\x70\x1b\x79\x04\x95\x78\x0f\x2a\xf1\x16\x54\x08\xe6\x03\xb8\x34\xa8\x1c\x32\x74\x61\xef\x40\x4d\xc7\xaa\xa9\x3b\x56\x35\xb7\xaa\x40\x55\xf1\xde\xab\xaa\xfb\x54\x55\xcf\x8e\x03\x8f\x2a\x73\xdf\xa5\xca\xd4\x58\xec\x83\x01\xe4\xe7\x7e\xff\x31\x1b\xf8\xe0\xf3\x43\xff\x7e\x3c\x02\xc0\xf4\x6c\x00\x4c\x9f\x0d\x80\x72\x30\x80\xf8\xdc\xef\xc7\xcf\xf0\x19\x3f\x66\x09\x82\x7b\x35\x28\x72\xb8\x44\x5f\x71\x00\x0d\x49\x70\x76\x1c\xa1\x69\x7a\xee\x10\x1e\xba\x6b\xdf\x02\x01\xf5\x2f\xdf\x6c\x00\x4f\x43\x13\xbf\x0f\xc5\x30\x47\x0e\xee\x0f\x96\xea\xb1\xab\xbd\x99\xda\x14\xfb\x00\xba\x7b\xfb\xb5\x05\x33\x9b\x6f\xbb\x52\xe9\x78\x77\x08\xd3\x0b\x87\xf0\x70\x5b\x9b\x0e\x2d\x8c\xc1\x29\xa2\x1c\x8f\x21\xbf\x6c\x08\x0f\x49\xdb\x05\x10\x82\x22\xca\xf1\x00\xe2\xcb\x06\x10\x1f\x45\xdd\xed\x46\x70\x80\x28\xe1\x95\x20\xca\x67\x2c\xd1\x57\x18\xc0\x70\x31\x82\xfb\x88\xfa\x95\x41\x70\x17\x49\xbe\xc4\x00\x9e\x85\x26\xf1\xf3\xd1\xe4\xc5\x7b\xf9\x65\x48\xf2\xa5\x3f\xff\x54\x14\xf9\xaa\xd3\xbf\x8f\x20\x5f\x73\xfa\x6e\xba\xbf\xfc\x5f\x93\x8e\x7e\x23\x42\x7e\x7b\x83\xa8\xfb\xc4\x9f\x1b\x04\x77\x91\xe0\x45\x03\x18\x8e\x47\x70\x40\x23\xd2\xe6\xae\x6a\xba\xf5\xc9\x8a\x88\x46\x69\x2e\x76\x69\x2e\x6e\xd2\x9c\x3c\xd5\x39\x55\xf3\x8b\xd9\xcc\x2f\x66\xb3\x63\x1d\x33\xe2\x13\x27\x4a\xfe\xea\x21\x77\xb5\xf1\x56\x47\x0c\xf8\x15\xd6\x2e\xdc\xe1\x2d\xdd\x95\x0f\x0f\x87\x5f\x76\x4f\xf8\xf2\x11\x67\x1d\x9e\x3a\xe5\xf0\x84\x0f\x1f\x71\xb3\xe6\xc6\x87\x87\x9b\x5f\xfe\x4c\x51\xe2\x00\xa3\xba\x82\xef\xcf\x82\x04\xe6\xc9\x28\xf0\x45\x30\xc0\x60\xfd\x87\x6f\x8f\x00\xe6\x59\xcb\xff\xd2\xd5\xff\x3e\x0b\xb1\x78\xe8\x95\x34\x34\xfb\xa6\xf3\x43\x80\x4e\x66\xa7\x01\xea\x56\x79\x4b\x3d\xd1\x11\xfa\x94\xbd\x4b\xd0\x59\x77\x95\x33\x83\xb5\x43\x70\x6b\x40\xca\x37\xa6\xdb\x73\x18\x64\xa0\x5e\x77\x85\x97\x53\x70\xd4\x04\x01\x14\xd0\xde\xeb\x2d\x1a\x34\xe4\x9a\x06\x34\xe6\x2d\x84\xfa\x07\x7d\xc0\x43\x47\x5e\x7f\x62\x3a\xba\x0f\x53\xdc\xcc\xcf\xde\xcb\x94\x0c\x23\xfd\x32\x53\xc8\xd1\xa8\x60\x9c\xf0\x7b\x72\xd7\x40\x8f\x5b\xd3\x0b\xc1\xa3\x94\x00\x34\x00\x9f\xd1\xb0\x4c\xa8\xb5\xeb\xdd\xb5\xe5\x21\x42\x96\x21\xbc\x3c\xaa\xbb\x27\xbb\xd3\xac\x74\x46\xa5\x32\x1b\xdd\x0c\x37\x48\x83\x08\xde\x82\x2e\x9c\xe6\x5d\x32\x21\xca\x0d\xa7\x71\xc1\xd4\xdb\xe7\xac\xe6\x7b\xc8\x59\xe7\x31\xb9\x04\xd9\x37\xd7\xe8\xbf\x10\x19\x0a\x16\xa0\x18\x75\x45\xd5\xa3\x65\x95\x5b\x63\xa1\xfa\x51\x7f\xeb\xed\x51\x1b\x31\x00\x2c\x1c\xe9\x07\xe3\x96\xa5\x4e\x3e\xe4\x69\xbf\xb5\xf0\x5b\x7e\xdb\x1d\xb5\x10\x06\x99\xb0\x62\x4d\x79\x4d\xc7\x91\x69\xa0\xbf\x14\x22\xad\x22\x51\xcd\xc4\xd2\x55\xec\x56\x6d\x46\x4c\x3b\x95\x04\x36\xb8\x30\xcc\x73\x18\x99\x01\xcc\x3a\xda\xde\x54\xa9\x97\x11\x24\x86\xae\x18\xc6\x39\xc0\xf2\x9c\x68\x32\x60\x5b\xb5\x85\x95\x88\xb4\x64\xb0\x05\x42\x07\xce\x0d\x60\x98\x71\xd1\x84\xb0\x30\x74\xcb\x69\x70\x97\x8d\x56\x0e\x3a\x6f\x87\x94\x74\xcd\xa6\x34\x24\xdd\x16\xd9\xd2\xed\x8c\xcb\xc6\x5b\x0b\x1e\x02\x15\xb0\xa6\xcc\x95\xc7\xdb\xda\x70\x6c\xd7\xeb\xd8\x1a\xf0\xaa\x66\xd5\xa3\xdd\x89\x9d\x1d\x61\x9e\xfb\x8b\x8e\xa1\x48\x9b\x7b\xb6\xc6\xcf\x12\xf5\xe9\x1f\xdd\x72\x70\x9d\x73\xf0\xf0\x12\x8e\xea\x25\xdc\x6e\x0f\xcd\xcb\x10\xcd\x8f\x00\xd4\x5d\x26\x0d\xf2\x41\x46\xd8\x4c\x60\x1a\x16\xb8\xc7\x15\x76\x34\x60\x1e\x26\x6e\xac\xac\x74\x91\x5f\xdc\x49\x6b\xd6\xe1\x02\x17\x2d\x1d\xc6\x86\xa0\x13\x47\xea\xcc\x35\x31\x55\x22\xf0\x86\x99\x96\xa1\x1d\x5e\x33\x2d\x39\x69\xa5\xc7\x94\x89\x2b\xa3\x14\x69\xa5\x50\xe5\xb1\x71\x91\x06\x20\x98\xe3\x60\x00\x8a\x15\xc7\x68\x5e\xab\xc6\x20\x58\x03\x4b\xb5\xe3\x0c\x54\x3f\x2f\xc4\x6a\x6c\x5d\xda\xa7\x40\xbd\xe8\xb5\x08\x74\x5c\x91\x13\xd1\x1a\xe8\xaf\xbc\x80\xdc\xf8\x45\x0d\x1b\x4c\x12\xca\x0f\x0e\xab\x71\xdc\x0e\x19\x94\x77\x28\x59\x36\x0a\x3a\x03\x6d\x4a\x34\xcd\xc2\xa2\x2b\xeb\x95\x12\xb3\x5a\x72\x17\x09\x6c\x60\x54\x5c\x0d\xb1\xe9\x6d\x98\xcb\x10\xcc\x32\x16\xce\x8f\x93\xd3\xee\x33\x97\x55\x0f\x95\xa3\x60\x85\x18\x7e\xf3\x20\xb7\x34\xf0\x14\x7b\x9e\xb6\x1a\xcb\xcd\xc0\xff\xea\x9d\xc5\x45\x26\xb1\x75\x4c\x81\xea\x91\xce\x9a\x43\x8e\x72\xf0\x1a\x73\xcf\x72\x1c\xee\x98\xc9\xc3\x91\x95\x1c\x6c\x6d\x73\x07\x12\x12\xa3\xce\xa7\xea\xb8\xaa\x5b\x40\x37\xae\x0e\x56\x6f\x56\x6e\x00\xad\xa6\xda\xa0\x4e\x6c\x1d\x77\x13\xfc\xf4\xbd\x97\xe5\x70\xf0\x44\x8c\x86\x4e\x21\x82\x70\x9e\xd6\x29\x00\x1c\x06\x59\x8f\x80\x55\xf9\x8f\x1c\x3f\x42\x5b\xe5\x48\x10\x5e\x9b\xe9\x4d\xe5\x21\x2e\xd8\x48\x90\x31\x0b\xeb\x0d\x0b\xf1\x91\x1b\x5c\x8c\x4f\x83\xf9\x09\x59\x17\xe8\x50\xbf\x30\x90\x76\x74\x8c\x42\xe7\x71\x84\xe3\x02\x01\x08\x5f\x0f\xee\x84\xb9\xc1\x61\xad\xfe\x3a\xcf\x05\xf9\x05\xc4\x07\x01\xb9\x9c\x22\xc1\x7a\x78\xf8\xb8\x3c\x90\x2e\x23\x47\xe5\xe4\x94\xc3\x29\xb4\x13\x27\xbc\x81\xfc\xae\xb0\x31\xd1\x75\xbc\xcc\x2e\xca\x1b\x70\x23\x71\xa1\xe0\xf4\x94\xbb\x26\x62\xef\x60\x70\x68\xb6\xd2\x44\x9e\xe1\x14\xa1\x7b\x81\x04\x9b\x5b\x0d\x07\x8f\x5e\xc1\xfb\x21\x6a\x9a\xc1\x6a\x55\x62\x54\xcb\xd1\xb2\xa5\x27\x2e\x1b\x5a\x44\x7a\x26\x5b\xe6\x41\x10\x74\x42\x1a\x06\xa1\x60\xb0\xb9\x97\xaf\xba\x59\x62\xd9\xf6\x8a\x1c\xcd\x5f\x72\xaf\xe0\x78\x8d\x0e\xf9\x48\x70\xbe\x67\x3f\x07\x78\x9e\xc6\x84\x28\x6f\x18\x97\xe5\xc2\xc3\x09\xcb\xbb\x1a\x34\x63\xfc\x91\x17\x4d\xdc\x7c\x63\x91\x7b\x98\x5e\xb0\x25\x9e\x11\xe2\x71\xb2\x3b\x17\xc7\xc6\xef\x09\x2a\xf0\x60\x01\xe6\x17\x4d\x51\xa3\xcc\x6a\xc9\x2d\x59\x46\xac\x3e\xbf\x4e\x6f\x57\xab\x23\xed\xf5\x25\x20\x50\x52\x3b\xe8\x39\x32\x2e\xbe\xc3\x2f\x1f\x8d\x77\x6f\x54\x57\x15\xc1\x0b\x14\x45\x5e\xc0\xc5\xd8\x8e\x9c\x94\x27\x57\x0f\x35\x2f\xbc\xa0\x3c\xa3\xff\xc3\x51\xca\x9b\x47\x8a\xa4\x8d\xf9\xc7\xdf\x07\xd3\x48\xd3\x03\x55\xe3\x97\x9a\x84\xfc\xe7\xf6\x8c\x72\xfe\x66\xf3\xeb\x01\xe0\x42\xda\x21\xdc\x84\x48\x21\xe7\xee\x00\x8f\xfa\xb4\x17\xce\x79\x10\x44\xd0\xf3\x58\x2f\xaa\x36\xe5\xe0\x7d\xb7\x7b\xdf\xbc\x24\x6b\x56\xbe\x63\xda\xb2\xf7\xa5\xc2\xdc\xdd\x8b\xbf\xf2\x40\xee\xc6\xd5\xe4\x63\xa0\xf9\x2b\x40\x7b\x92\xbd\xfc\xde\x18\xef\xda\xcb\xef\x0e\x31\x3c\x48\x24\x4b\xfc\x02\xa2\x9d\x89\x6c\xd1\x33\x99\xb8\xe0\x59\xbd\x3a\xdf\xc1\xb3\x78\xdc\x5f\xff\xc3\xa5\x17\xa9\xa8\xa7\x17\x6e\x3f\x19\x40\xdd\xcf\xd8\x38\xf7\x26\xd5\x8e\x4f\x37\x5d\x99\xd6\x2b\x98\xc9\xd1\xd8\xf3\x45\xa2\x87\x2f\x65\x67\x3d\x1e\xef\x9d\xb4\x6a\xa6\x06\x2c\x57\x0a\x06\x6f\xe6\x78\x14\xda\x93\xda\xb9\x25\xb2\x81\x08\x21\x65\x0e\x85\x4e\xa0\x72\x90\x7b\x44\x6a\xe2\x38\x0c\x60\xbe\xe4\x0c\xae\xbf\x63\x7d\x72\xd0\x6b\xee\xc1\xbc\xf0\x94\x2c\x7e\x7b\xb7\x5d\x58\x30\x30\xd2\x7b\x48\xf4\x13\x13\x4e\x96\xca\x1e\x64\xaa\x01\x47\x87\xd4\x33\x3a\x90\x23\xdf\xe4\xdc\xfd\x98\x1e\xc5\x54\x83\xed\x51\xf6\x84\x5c\x26\xef\xd4\xd8\x6a\x15\xae\xea\xe3\x51\x9f\xd7\xc0\x6a\x00\x73\x77\x79\xd1\x64\xdc\x5e\x1d\x7b\x77\xe3\xfe\x23\x63\xfb\x74\x33\xd6\x54\x8f\x68\xbb\xe3\x25\x2e\x78\x8a\x8d\xb9\xb8\xb8\x3a\x9a\xb1\x7d\xed\x33\x6e\x59\xd3\xb6\x70\x93\x83\xd9\xb8\xd7\x3a\x1b\x84\x77\x23\x78\x8d\x8e\xa7\xd6\xb4\x8a\x50\xb6\x05\xa5\x59\x3e\xc1\x03\xfa\x83\x6a\xb8\x9a\xfe\x8e\xfa\xc4\x5e\x14\x7d\xaa\x6f\xb7\x1c\x7d\x5b\xed\xa8\x23\x17\xdb\xec\x5f\x2d\x78\x12\x58\x1b\xd9\xb4\xd0\xaa\xd8\x94\x44\x34\x36\x22\x1a\x63\xa6\x0c\x81\x40\x46\x13\x2a\x2f\x1d\xeb\xd9\xc0\x2d\xff\x48\xe3\x93\xc3\x6b\x9d\xa8\x93\xa3\x99\xbe\x8d\xde\x2d\xf0\x39\xac\x1e\xc7\x2b\x23\x14\x56\x88\x8c\x6e\x75\x43\x59\x0d\xfc\xc1\xe1\x7a\x08\xa9\x92\xe5\x76\x56\x90\x67\xcf\x26\x10\xaa\x44\x6e\xe5\x7f\x27\xfa\x11\xe0\x3f\x90\xa4\xaa\x76\x99\x2a\x49\xf6\x69\xa9\x70\x82\xd2\x1b\xe5\x4d\x44\x08\xa5\x8c\x68\x17\xfa\xc5\x76\x45\xb3\xde\x36\x4c\x64\x08\x5f\x7d\x04\xb2\x6a\x15\x05\x0f\xa7\x6a\xa3\x99\xf5\xc9\xa2\xc9\x00\xe1\x3b\x9b\x57\x6a\xa6\xa9\xdb\xd2\x98\x5f\x5e\x19\xd4\x17\x91\xc7\x4c\xee\x17\x58\x0d\x08\x73\x28\x28\x37\x33\x04\xc4\x11\xd0\xa5\xd5\xd6\x0b\x98\x22\x03\x63\x83\x98\xd1\x6b\x42\xf5\x1b\xc2\xc3\x56\x97\x7b\xca\xd4\x81\x2e\x98\x9a\xd6\x9f\x92\x37\xe2\x56\xc3\x4e\xa6\x6a\x06\x84\xe1\x9e\x09\x2a\xc7\xd7\x8a\x17\xbe\x4e\xc7\x3f\x0a\x39\xec\x91\x6a\x66\x7a\x98\x25\xf2\x53\x0b\xbc\xbf\x34\xa3\xdc\x03\x42\xda\x89\x64\x35\x23\x65\x09\x0b\xd3\x11\x85\xa1\x70\x5d\x14\x1e\x13\xab\x60\x40\x03\xde\x8f\x1a\xb2\xfc\x28\x76\x05\xde\x18\xb4\x2c\x02\xcf\x6a\xbd\x2a\x2a\xb7\xab\xc1\x42\x59\x7a\xd7\x4f\x22\xa7\x59\xd7\x54\xd7\x69\xb4\x42\x47\x06\x72\x65\x5d\x71\x03\x29\xa9\xa4\x1a\x66\x58\xa0\x8b\x04\x57\xc0\x34\x1f\x79\x60\x39\x90\x75\x2c\x19\xaa\x06\x32\x2e\x45\x70\x00\xa9\x88\x68\x40\xf3\xc8\xd4\x36\xa4\xaa\x5f\xa1\x12\xdb\xb1\xdb\x94\x39\xf6\xd8\xc6\x1e\x65\x87\x78\x78\xb5\x4b\x3f\xc2\x2f\xc8\x03\x18\xad\xdb\xec\x38\x44\xe4\x9b\x53\xad\x3c\xc3\xb9\x99\x0e\x22\x25\xbc\xec\xdb\x21\x2b\x73\x49\x54\x86\x53\x03\x2c\xcd\xa1\xee\x29\xd4\xe1\x22\x9b\x53\x9b\xb3\x39\x5c\x85\xfc\x2a\xd2\xb7\x7c\xd3\x0c\x3d\x28\xf3\x85\x54\x87\xd0\x5c\x07\x24\x11\xd4\xab\x19\x09\x46\xe5\x1f\x9f\x8c\xbc\xb1\x7b\x30\xe2\xc9\x78\xf1\x88\x17\xe3\xe5\x43\xbd\x55\x1f\x1e\xc1\xfd\x75\xa4\xcd\xf9\x96\x70\xa7\x41\x33\xb5\xb8\xf8\x61\xce\x08\xb7\x4e\xb3\x20\x34\xaa\x92\xcd\xa6\x26\x87\x15\x5e\x9a\xa1\x14\xfe\x08\x7c\x65\x7a\x0d\xe0\x33\x72\x1e\x92\xef\x09\x22\xf5\x66\x68\x05\x17\x06\x41\xea\x4d\x69\x07\x4b\x69\xa2\x54\x73\x08\x99\x02\x99\x21\x2c\x30\x32\x04\x14\x2d\x2a\xf8\x5d\xf4\xcd\x1b\xab\x00\x53\x3e\xf3\xce\xe8\x0b\x47\xa0\xda\x95\x8b\xf0\x89\xb5\xb6\x3c\xf4\xdb\xae\x32\xb5\xaa\x5c\xac\x57\x47\x52\x49\xb1\x0f\x35\xc2\x7c\xdf\xb5\x5a\x6a\x1e\x72\x90\x5e\x79\x64\xa5\x30\xa7\x3b\xb6\xea\xb2\x29\x88\xb8\x8c\x8c\xfb\xe4\x2f\xf3\x16\x92\x78\x95\xbc\xcb\x5b\x58\x6f\x1d\x59\x78\xca\x96\x97\x84\x7d\x9e\xa0\x5d\x8d\x2d\xd2\x5a\x6f\x20\x7f\x9d\x2f\xc3\xbd\xd1\x85\x8b\x78\x47\x44\xaa\x59\x26\x86\xa9\xa5\xa4\x18\xf3\x51\x9c\xa6\x20\x72\x79\xb5\x3c\x72\x60\xef\x3a\xcb\xe5\x0d\x90\x2c\xb4\x59\x03\xd1\xa9\x4e\x46\x82\x12\x06\x29\x32\x2d\xb1\x2c\x7f\xdd\x60\x0c\xa4\xbd\xa3\xf2\x2b\xf1\x32\x69\xde\x6c\x68\x35\xb0\xc2\xdc\x17\xd9\x51\x22\x9c\x6e\x3b\x0a\x77\x46\xde\xaa\x6d\x4e\x35\x97\x85\xc3\xa1\x92\xb6\x96\xfd\xd5\xda\xee\xbc\x65\x4d\xaa\x77\x8e\x46\xd4\x75\x1e\xa8\x8f\x16\xa9\xba\xb6\x85\x91\x47\x42\x58\xe5\xa3\xad\x58\x6b\xbd\xe3\xa6\xaa\x9d\x96\xff\xd4\xca\x2b\xd3\xa3\xa9\x68\x17\x75\x80\x66\x7b\xa1\xb6\x71\x77\x0a\xbe\x7e\x30\xd3\xf3\x73\x49\x5d\xe4\xe1\xea\xc9\xb9\x7a\xbe\xa6\x8b\x2c\x4e\x5f\x27\x25\xb2\x70\x64\x72\x5c\x65\x11\x49\x90\xc7\x16\x79\x9b\x95\xe7\x51\xfa\x01\xee\x66\x75\xa9\xeb\x51\x82\xaf\xde\x34\xa9\xaa\x50\x06\x8d\xf8\x43\x3b\x74\xa0\xef\xc3\x43\x2f\xf3\xde\x0a\xdb\x5a\xd3\x5c\xa6\xae\x80\x71\x4d\x27\x98\xf5\x13\xd7\xb9\xdc\x3b\xfc\x9d\x99\x36\x72\x91\xf7\x6c\x63\xa3\x1d\x3d\xb3\x43\xcb\x92\x6d\x3a\xcf\x89\xc2\x7e\x03\xfe\xa7\xb6\xe8\xca\xa1\x6b\x84\x32\x82\xe9\x88\x5f\xcc\x3a\x06\x2f\x91\xd1\x6b\x95\xbf\x6a\x01\xb3\x28\x00\xca\x9a\x94\x91\x8c\xff\xcc\x00\x42\x99\x91\xdc\x87\x00\x02\x6e\xd1\x53\xcf\x84\xc4\x5a\x03\x63\x4c\x65\x76\x11\xed\x90\xea\xc3\x33\xb6\xcf\x68\x6c\x9f\x41\x59\xd0\xc2\xce\x34\x19\x0e\x5c\x10\xc8\xd2\x45\x64\x0b\x0e\xb4\x6f\x21\xb4\x9b\xb0\x1a\x34\xf5\x1e\xf4\xb3\x42\x6b\x06\xce\x64\x57\xed\x6a\x2b\x64\xdc\xcb\x16\xf7\x7c\x1b\xf2\x19\x4d\x72\xe3\x45\xa4\x89\x43\x89\x33\x90\x34\xa9\xa0\x6e\x98\x84\x21\x9b\x96\xcf\xa1\x97\x40\xee\xf5\x8e\xbf\x4f\xc2\x37\x17\x16\xc2\x84\x62\x2a\x2d\x3c\x6b\x06\x06\xcb\xf2\x60\x77\x2c\x62\x07\xd6\x17\x81\xca\x90\xc1\xb8\xea\xf1\x60\x3f\x9b\x69\x0b\x0b\x12\xc8\xb1\xd8\x19\x4e\x35\x56\x48\x2c\xf4\x6d\x92\xc1\xa1\x1e\x23\xd0\xb5\x78\xc8\x82\x46\xc4\x46\x72\xee\xb0\x66\xb2\x5e\xdd\x22\x64\x2d\xca\x14\xb5\xcc\x9e\x55\xd2\x89\xb2\xb3\xea\x86\x21\xd3\xd5\xea\x77\x2e\xbd\x6d\x79\x92\x68\xf2\xb7\x82\xa6\x41\xc3\x41\x35\x4d\x0b\xf3\xcd\x79\x7c\x8d\xd5\x16\x11\xfe\x8d\x65\xcd\x7a\xa0\x6a\x49\x51\x43\x8a\x8a\x96\xa8\x6b\xdb\xbd\x32\xfa\x81\x5b\xdb\x72\x7b\x90\xd2\xaa\x6f\x05\xaa\xd9\xd2\xfd\x06\xc8\x05\x0e\x20\x84\x4f\xc3\xf7\x24\xf4\x40\x7b\x26\x95\xe3\x9a\xbf\xd5\xe2\xa9\x03\x8c\xaa\x4b\x08\xa8\x46\xeb\x62\x42\x84\x34\x2a\x4e\x02\x7d\xe8\x60\x41\xe7\x20\x88\x18\xa9\xd0\xb2\x0b\xc1\x78\xe5\x8b\xc6\xe7\x05\x7c\x10\x14\x8d\x02\x16\x66\x28\x2a\xb0\xe6\x12\x93\x86\xd0\xe4\x5d\xdd\x7f\x1a\xf4\xe7\x58\x67\x15\xb8\x46\x49\xd6\x68\x24\xe0\xa4\x01\x88\x6a\xcc\xcd\x05\x23\x07\xbe\x3b\x8b\x3a\xb6\x00\x0c\xb8\x09\x0f\xaa\xe1\x71\xec\x78\x86\xd3\x1b\x5d\xf8\x6a\x03\x3d\x5a\xfa\xcd\x57\x05\x99\x5e\x69\xb9\x42\x50\x25\xdc\x8e\x50\xb9\x57\xf3\x78\xab\xff\xc5\x5a\xd3\x5b\x63\xb1\xe8\xda\x66\x50\x97\x71\x34\x11\xb5\x7c\x2d\xd6\x32\xd4\xac\x53\x28\xb9\x68\xa8\x3c\xa6\xcf\xd5\x22\xdb\x34\xd2\xd1\x8b\xeb\x4e\x47\x32\x03\xdf\x96\x25\x91\x0b\xd3\x1c\x83\x06\x78\x4b\xaf\x0b\x4f\x75\x01\x83\xbf\x75\x0b\x52\xd8\x55\xfa\x07\xf1\x4d\x83\x6a\x29\x9a\x7b\x65\xaf\x56\x0d\xf4\x17\xf9\x0e\x38\xa3\x7a\x05\xb4\x58\xab\xaf\x08\x06\x2f\x23\xe6\x24\x34\xd6\x72\x75\x35\xee\x77\x58\xe5\xc8\xc9\x8b\x0c\x5d\x10\x11\x81\xc1\x5e\x1d\x71\x3c\x46\x2a\xac\xab\x8c\x4a\xc3\x89\xb1\x0e\x9e\xf9\x10\x17\x20\x00\xf4\xbe\x9e\x7a\x6b\xaf\x2c\x31\x0b\x18\x5b\x48\x80\x0b\xf5\x1f\x88\x86\xe7\xe1\xb6\x90\x2c\x01\x9b\xe1\xe1\x60\xe8\x5b\xa4\xb5\x72\xdd\x50\x58\x54\x94\x94\x98\x73\x15\xf2\xb1\xe2\x55\x43\x7f\x2c\x44\x7d\x22\xc5\x11\xa7\xac\x71\xc8\x54\x97\x70\x82\x49\x2b\x56\x92\x74\xe6\xbc\x49\xc4\x23\x2b\xf4\x22\x2e\x19\xa8\x80\xe7\x8b\x86\xd3\x67\xa5\xa0\x2b\x7e\x1d\x32\x6c\x11\xa7\xd6\x8e\x7b\xa4\x68\x5a\x5d\x82\x31\xf4\xba\x52\x04\xb0\x67\x20\x7f\xcd\xb6\xa0\x29\x82\x17\x4d\x91\x0e\x8a\x99\xe8\x1d\x48\x72\x19\xf5\xad\x40\xcf\x87\x95\xb1\xd5\x08\xe8\x47\x60\x3f\x13\x4e\x56\x9c\x36\xea\xdb\x67\x50\x8e\x58\x97\xf5\x10\x49\x1b\x87\x06\xcc\x67\xd2\x55\x14\x97\x04\xa7\xc6\x94\x21\xb2\xef\x85\xcb\x63\xf5\x57\xe6\x27\xc8\x74\xb4\x48\x42\x26\x57\x95\xfc\x33\x5d\x8b\x40\x1f\x07\xb8\x5b\xe9\xa9\xcb\x7b\xf5\x30\xdf\x9e\x8f\xf4\xc7\x52\xff\x25\xa7\xdd\x8c\xd2\x8f\xe6\x3d\x60\xc7\x64\x28\x49\xb8\x68\x8a\xc7\x58\x46\x58\x19\xf4\x77\xd1\x4a\xd8\xea\x1e\x0f\x82\xd4\x9b\x8f\xbb\x3e\xc6\xda\xed\xb8\xff\xd4\xb8\x8d\x60\xdc\x0d\x6c\x68\x7f\xd9\x5d\x23\xb6\xd9\xe6\x36\xea\x6c\xc7\x6d\xfa\x63\x83\x88\x26\x77\x96\x73\xc9\x92\xeb\x5a\x98\xa5\x7e\xf0\x2d\x67\x00\x7c\xbe\x12\x03\xfc\x91\x7d\x80\x9a\x26\xae\x47\x52\xf2\xad\x99\xe3\x18\x50\x5e\x05\x13\x66\xe2\x40\xa5\x88\xa9\xf1\x35\xf8\x1e\xb3\xf3\xac\xea\xda\x88\x7b\x41\x5d\x5f\xb0\x5f\xe8\x00\x39\x34\x82\x44\xea\x4f\xe5\x1c\x7e\xd0\x19\x9d\x63\xd3\xdb\x5a\xbe\x57\xf5\x74\xc1\x0f\x8b\xd7\xba\xe1\x9e\x7e\x6b\xea\xa2\x83\x23\xbc\x16\xcf\x5c\xc7\x56\x4d\x73\xac\xd5\x35\x47\x2d\xb6\xb9\x20\x01\x1a\xca\x7b\xb3\xd2\x37\xd5\x3f\x99\x2a\xc8\xc8\xc3\x44\x84\xb0\x24\x63\x0a\x91\xfd\x1b\x56\x04\xf7\x3c\x78\x67\x50\x37\xf9\xc7\xda\x9e\xd4\xf0\x04\x66\xf2\x10\xc2\x90\xbd\xe6\xc8\x3e\x90\x47\xcc\x56\x85\xf5\xcb\xe2\x68\x73\xb5\x51\x16\x07\x9e\x28\xde\x9e\xe4\x74\x11\xa6\x84\xae\xa7\xaa\xa0\x93\xbf\xf9\x48\x0e\x6c\x94\xce\x41\xe3\x58\x17\x85\x7a\x2d\x83\x1c\xb1\xb5\x04\xae\xd1\xf4\x24\x9a\xd0\x83\xae\x35\xde\x6d\xf8\x61\x8d\xba\xc9\x08\xb5\x66\xb9\xe9\xa8\x1d\x1b\xad\xac\x4e\xef\xac\xc4\x83\x5f\x93\x56\x50\x16\x12\x46\x41\x05\xd5\x67\x42\x1e\xb5\x9c\x85\x03\x12\x1e\x23\x31\xe1\x11\xeb\x3f\xb0\x74\x34\x48\x61\x44\xfe\x0b\xe1\x66\xa3\x30\x3f\x38\x2b\x50\xab\x07\xfc\x1b\xc9\xac\x51\x42\x0d\xaa\xcd\xa2\xb1\x2b\x31\x1b\xbf\xf0\x78\xc3\x11\xe4\x1a\xa3\x01\x17\x51\x39\x61\xb4\xf5\x82\x2d\x43\x07\x26\x82\x27\x85\x19\xa7\x93\x8f\x0b\x7c\xc5\x99\xa1\x62\x57\x90\x55\xb7\x04\x25\x41\xf0\x6c\x42\xcd\x1e\xec\x7a\x94\x86\x1e\xf4\x08\x52\x4e\x24\xd7\xaa\xfb\xd5\xb5\xb2\xa8\x09\x74\xaa\x5a\x15\x96\x46\xc7\xee\xaf\x35\xef\x0f\x79\xb3\x1e\x17\x53\x92\x8e\x5c\x49\x32\x7c\xdb\xb5\xaa\x81\x3f\xc9\x19\xe3\x17\x56\xa4\xe5\x2d\x35\xbb\x72\x4b\x91\xd1\x89\x30\xec\x4c\x01\x79\x56\x26\xb8\xa1\x82\x47\x70\x3c\x36\xc0\x2c\xd8\xd2\xda\xc8\xa0\xb0\x59\xad\xd1\x83\x2a\xe9\xf1\x22\xa8\x11\x82\xd6\x5c\xf7\xd8\x11\x8e\xbf\x82\x41\x0e\xee\x5e\xe1\x52\x4c\xe0\xad\x9e\xbb\x55\xb3\x21\xb8\x7a\xe1\x9e\x22\x53\x5c\x58\xa6\xa3\x3d\x7b\xd4\xba\xa0\x0e\x58\x0f\x66\x81\x3b\xb8\xb6\xd9\x45\x94\x4c\x0f\x67\xe7\xe0\x0c\x26\x7c\x08\xab\x8e\xc4\x15\xf9\x03\xbd\xe7\xcf\x08\x6c\x20\xc8\xe3\x99\xe9\xff\xf0\x8e\xcc\x50\x98\x3d\x32\x60\x03\xd6\x50\x65\x7d\xa3\x47\xba\xf0\xdb\xa6\x87\x38\x91\xaf\xd0\xad\x82\x9c\x0f\xea\x9f\x67\x3d\xb4\xae\x42\x96\x38\x43\xb8\x1c\x53\x92\x37\xf0\xfd\xf7\xfd\x55\xa7\x44\x8f\xd2\x17\x93\x83\x88\xd0\x9d\xe0\xb7\x05\x3b\x31\x24\x75\x54\x2d\x02\x1b\x53\x59\x83\xa9\xf2\x46\xa4\x94\x67\x76\x04\x14\x9f\xa8\xfa\x3e\xc3\xe5\x9e\x1f\x97\xe3\xb8\x2c\xb5\x66\xf9\xc0\xe4\x60\x2a\x5e\xca\xc6\x8f\xc7\xcc\x5e\xf9\xac\xf0\xff\x9b\x09\x12\x52\xe8\x09\x86\x53\xd0\x3c\x07\x53\x4b\x3e\x7c\x27\x11\xad\x09\x8f\xb2\x21\x86\x87\x89\x07\x6b\x96\xa6\x3b\x51\x1f\x61\x97\x0c\xd1\x5c\xc9\xe5\xb7\xc3\xb4\xcb\x47\x43\xf3\x2d\xb8\x95\xbe\xf8\x46\x8f\xee\x66\x8f\xcd\x66\x7c\x2b\xe9\xf1\x8d\x0e\xc3\xed\x0e\xc3\xed\x0e\xd3\xed\x0e\xd3\xed\x0e\x93\x76\x38\x5c\x7b\x56\x6e\xf7\x58\x6e\xf7\x58\x6e\x0e\xf1\x36\xe2\x99\x8b\x5c\x89\x6a\xfe\x08\x65\xae\x9a\xa0\x93\xf5\x66\xef\xe7\x18\x2e\xfc\x1c\x13\xb3\x0a\x55\xed\x9a\x6a\x08\xbd\xf9\x54\x95\x0d\xe8\x45\x85\x07\x6b\xbb\x89\x1b\xb2\xa2\x9c\x54\xda\xb2\x66\x8c\x8c\x49\x68\x5e\x36\x9b\x19\x5c\x5f\x72\x27\x64\x2c\x3a\xfa\xb6\x3d\x4a\xd2\x6a\x76\x25\x7a\xfd\x74\x3f\xa9\xf4\x8b\x93\x43\x07\x75\x02\xf5\x3a\x40\x57\x21\x7f\x98\x2f\xfa\x60\xf0\xfb\x24\xe2\xcd\xed\x81\xea\x53\xdb\x52\x98\xb3\xce\x14\x8e\x5a\x43\x9d\xe5\x50\xcd\x69\x49\x45\x1a\x33\xa8\x83\xbe\x9e\x3d\xe4\xfe\xc8\xfc\xc1\xa1\x4d\x8f\x4a\x8b\x03\x77\xd0\x88\x1b\xaf\xcc\x5f\x42\x5a\x30\x4b\xe6\x71\x15\x58\xa5\xb3\x50\x6f\xf9\x5e\xfd\x70\x05\x81\xa5\x92\x25\xb3\x90\x11\x28\xb7\xef\x91\x49\x22\x6d\x8e\x5a\xea\x49\x8d\xa1\xa0\x9e\xaa\x3d\x02\x21\xac\x01\x0e\xca\x6a\xdb\xdd\x1f\xf5\x5a\xda\x68\x13\x64\x8c\xd5\xda\x79\x01\xd6\x3e\x15\x30\xc9\xcb\x18\xa6\xf5\x1a\xf4\x9b\xc2\x96\xf5\x02\xe6\xd7\xb2\x8d\xe6\x9b\x8f\x0e\xc0\xde\xb4\x2d\x60\x75\xe0\x73\x60\xd5\x46\x2e\xdc\x1d\xaa\x5d\x55\x47\xa5\x91\x4e\x46\x72\x34\xe1\x81\x30\xa1\x79\x08\x87\x7c\x42\x2f\xca\x98\x04\xbf\x4a\x9a\x03\x8c\x1e\xf2\xca\x5c\x5f\x9d\xc7\xde\x59\xef\x7e\xac\x1f\x3c\xea\xb6\x8b\x5e\xc8\x4d\x9f\xe8\xa7\x2c\xc7\x5f\x76\x75\xc3\x64\x47\x63\xab\x6a\xa8\x5c\x0e\xb3\xc5\x82\xf5\xcc\x89\x51\xfd\x99\x91\xaf\x8d\x4e\x14\x78\xbf\x35\x90\xed\xd8\xea\xb9\xc8\xfe\xa3\x41\x06\xfd\xd6\xfe\x95\x4d\xe0\xfb\xe9\xc8\x10\x60\x7a\x45\x42\xe1\x4d\x8b\x70\x01\x23\x34\x83\xe0\xba\xbd\x45\x6c\x8a\x1c\xaf\xe0\xec\xca\x29\xcb\xd6\x01\xdf\x18\xed\x02\x4d\xd0\x40\x05\x0e\x6d\xb7\x4e\x05\x6f\xd9\x5f\xc5\xf7\x28\xc5\xea\xde\x16\x9a\x17\xdb\x76\xd5\x1e\xca\x6e\xa4\x5c\x00\xbd\x42\x34\xd4\x0d\x7a\xcd\x53\xad\xe7\x78\x51\x6f\x84\x55\xf5\xac\xe6\xc4\xa8\xbb\x70\x10\x3b\xbd\x3e\x8a\x97\x3e\x87\x66\x90\x3f\x7a\x6f\xb8\xf1\x62\xb8\x19\x87\x7d\xdb\xc9\x2f\xb8\x30\xd3\x5a\x0d\x53\x91\x73\x4d\xc3\x1a\xb8\x87\x90\xe7\x2e\xa9\xbc\x70\xb0\x1e\x69\x67\xae\xa0\x42\xb8\xe5\x82\x3e\xd5\xb2\x04\x5b\x1e\x5e\x7b\x44\x2f\xdd\x21\xb9\xdc\xe5\xfd\x37\x87\x4e\x5a\x66\x2b\xe4\x37\xa8\xb7\x7d\xaa\x83\xaa\xa4\x3e\x6d\x23\x33\x8d\x8a\xbf\x7c\x64\xcd\x71\xe2\x70\x64\xa5\xfb\x8e\x5a\xaa\xdd\x65\x23\xb4\x2d\x93\x19\x56\xa9\x81\x01\xb9\x07\x06\x54\x23\x19\x1e\x8f\xed\xfe\xc1\x07\xec\xb4\x0b\x42\xa8\x89\xb9\xd1\x07\xa2\x07\xe2\x65\x70\x41\x6e\x09\xc5\x4b\xd2\x83\x2f\x6a\xcc\xc0\x41\x8c\x83\xb1\xe6\x22\xb5\xaa\x79\xd1\xe9\x67\xee\x9f\x7e\xea\x3d\x7a\x54\x1b\xc1\x71\x05\x67\x66\xe1\x14\x5a\x00\xe3\x8a\x48\xd1\x03\xd5\x5e\xd8\xfc\xe8\x26\xa6\x16\x14\xab\xce\x33\xaa\x36\x7f\x5b\x4d\x36\xb3\xa6\xf2\x74\xa8\x05\x62\x5c\x56\x12\x6f\xa6\x6b\x79\xb2\xc9\x50\xde\x7a\x78\x00\x35\xbb\xcf\x74\x00\x30\x2b\xef\xec\x51\xa4\xd0\x17\x1c\x9f\xa8\xe8\x08\x17\x03\x9e\xc4\x08\xd7\xd2\x6c\x73\xa0\x6b\x9e\xf9\x82\xab\x15\xde\x0f\x35\xd2\xd1\xf0\x8c\xed\xde\xb3\x38\x50\xcf\x59\xfe\x97\x56\x6a\xe0\x56\x53\x8f\x66\x3b\x08\x1c\x06\x91\x87\xde\x32\xfe\x68\x8d\xf4\xea\x02\x1c\x26\xf5\xb7\x9a\x23\xb2\x0d\x86\x9a\xe3\x6f\x8c\x35\xf7\x20\x6a\x4c\xc2\x6c\x69\x53\x5c\x5a\x6e\xce\x46\xde\xe8\xae\xa5\xfa\x41\xba\xca\x88\x80\x93\x1d\x65\xcd\x49\xcd\x4a\x1c\xb4\xe6\x16\x0c\x22\x29\x07\x54\x3a\x4d\x4c\x80\xe9\x82\xd9\x65\xdf\xce\xe1\xb6\xf7\xf1\x0d\xba\xcc\x61\x76\xca\xd8\xe9\x22\xae\x9f\x9e\x83\xc2\xf4\x12\x73\xc9\xd7\xe0\x7d\x0c\xc6\xf5\xc1\xb8\x46\x25\x4d\x9e\x11\xdb\x69\x92\x9b\x29\x7f\x26\x88\x92\x48\x42\x89\xa8\xa0\x69\x45\xde\xf8\x0c\xcf\x4a\xd9\xc0\x96\x69\x26\xe5\x10\x82\x17\x1a\x8d\xa1\xfd\x94\xa1\x5d\x93\x3a\x0a\x45\x70\x46\x5b\x33\xd7\x29\x7f\xd3\xc2\x40\x4f\xa8\x25\x18\x62\xf9\xb6\xc6\x80\x42\xc3\x31\xab\x08\x9b\x66\xa3\x1a\x19\xe1\x63\x53\x05\x91\xeb\x72\x53\x55\x14\x04\xb5\xad\x34\x89\x14\xc5\x32\xa8\xbd\x4f\x4b\xb5\x65\xc1\x66\x94\xc9\x0b\xc5\x50\x6d\xd5\x53\x4d\xbc\x5a\x55\x92\xa6\x06\x88\x52\xcb\x0c\xd9\xd3\x6a\x34\x95\x6a\xa9\xf4\xb8\xa3\x56\xc8\x6b\x0e\x4c\x1c\x20\x9c\x4d\x62\xec\x78\x45\x52\xc7\xc7\xc8\x89\x9b\x90\xcc\x7f\x01\x16\xc1\x39\xaa\x45\xa0\x72\x4e\x93\x5e\xf0\x57\x0e\xee\x44\xb8\xd4\xea\x98\xe4\x3e\xa3\x0e\xef\x88\x25\xe8\xa5\xef\x2c\xb4\x05\xc2\x93\x30\x50\x58\x06\xc6\x72\xc1\xd6\x0b\x5f\x05\x41\x7c\x66\xe1\x53\xe7\x66\x28\x38\x8c\xb0\x48\x86\x39\x59\xe5\xc2\x33\x58\x98\xcd\xe4\x1d\xbe\xc7\xd7\x10\xbc\x0a\x33\x37\xd4\x50\x41\x48\x05\x7f\x69\x50\x44\x51\xd3\x99\xcd\x10\x89\xd5\xde\xab\xfd\x8c\xda\x71\x9e\xf4\x8a\x17\xed\xdb\x63\x1d\x8b\x0e\x0d\x2f\x73\xb0\x5e\xe8\x90\xa6\x6c\x3d\x9a\xe7\x85\xe7\xc2\xa9\x33\x4c\xb6\xa5\x0f\xd0\x32\x3f\x5a\xd0\x24\x05\x55\x52\x24\xa1\x80\x48\x4b\xab\x4a\x28\x0d\x31\xe7\x59\x2c\x08\xef\x11\xf1\x2c\x58\x17\xa0\x8d\x83\xe9\xd8\x23\x7b\x39\x56\x50\x56\xc2\x37\x02\xef\x75\x99\x06\xb5\xe5\xd0\x5e\xea\xb9\xf3\x9d\xcd\x8b\xa5\x6d\x0c\x2a\x3c\x04\x52\xab\x5a\xe0\xf6\x1b\x64\x51\x18\xe2\x18\x8c\xa2\x9e\x63\xb2\xcb\x19\xb1\xf1\x3c\x05\x47\xad\x46\x55\x54\x7b\x45\x7d\x1b\xcb\x19\x2b\xcb\x29\x34\xb8\x7a\x32\x9e\x1d\xf2\xc4\x04\xa6\xda\xd5\x7c\xde\xc6\x9e\x18\xbc\x84\x94\xa8\x2c\x7d\x66\xc3\xc9\xf3\x0e\xc1\xcc\x72\x6d\xcc\x22\xc3\x78\x5f\x17\x87\xcf\x10\x64\x6d\x7c\x28\xef\x9d\x1a\xb0\x6b\x82\x70\xaa\x04\x6c\xab\x4f\x5c\x81\xbe\xc1\xbc\x81\xfc\x21\xc4\xc7\x0a\xf2\xb1\xc2\x7c\x54\xa0\x8f\x02\xf5\x7e\x32\x36\x28\x8e\x3b\x30\x8e\x17\x90\x1f\x2b\xe8\x19\xc4\xde\x2a\x85\x1d\xbd\x77\x01\xff\x0a\xfe\x0a\xfd\x0e\x7c\x81\xfd\x40\xe0\x57\xd8\x47\xa7\xee\xa3\xc1\x2a\xc0\xa1\x80\xaf\xe9\xd4\x85\xb8\x41\xcf\x53\x21\xde\x00\xde\xe1\x7d\x09\xee\x71\x3b\x30\xdd\x51\x26\x0e\xd3\x8b\x0b\x92\x2f\xbd\x0e\xf4\xcc\x24\x1d\x81\xe1\xd3\xa0\xcc\x5e\x49\xb6\xcd\x54\xa6\xcd\x70\x11\x9e\x1d\xcd\x94\xd3\xc2\xe0\x76\xa1\x60\x11\x52\x6d\x25\xc3\xb6\xfa\xfe\x19\x0a\x0d\x1a\x90\x8e\xc5\xe8\x19\x32\xa8\x14\x9d\xe5\xb8\x41\x63\x73\x82\x87\x45\x06\x11\x64\x2a\x63\x6a\x7c\xd5\x6d\x58\x08\xdb\xaa\xec\x32\xcc\xb0\xa0\x7a\xfa\xbc\x60\xaa\x0c\x26\xa5\x85\x95\xb6\x60\x9a\xba\xd5\xc4\x59\x6d\x88\xb9\x51\x5b\xea\x2e\x86\x1a\xfe\x5b\x04\x45\x0c\xb2\xa0\x0f\xf0\x42\xf5\x98\x6c\x2e\x0a\xf2\x5c\x4e\x16\x85\x94\x05\x5d\xd0\x69\xe4\x89\xc5\xfd\x65\x56\xf6\x66\x01\x2c\x87\x5c\xde\x08\xf1\xc1\x41\x28\x1b\x3a\xaa\x32\x75\x2c\xd5\x3b\xc4\x36\x35\x9d\x47\x5e\xe2\xc8\x2c\x92\x44\x15\x65\x0c\x68\xbd\x96\x59\x91\x59\xd0\xdc\xd7\xd4\x1e\x0f\x70\x61\x01\x5f\x01\xa1\x8b\x3e\x6a\x03\x2b\x93\x1b\xca\x5f\x38\x9d\x98\x21\x44\x88\x5c\x8e\x3c\x10\x9d\xa3\x79\x16\xf9\x8f\xa7\x23\x19\xa2\x17\x44\x54\x16\x89\x85\x8e\x85\x2d\x83\x5e\x1e\x7e\xe6\x0e\x69\xcb\x67\x2d\xdf\xc6\x25\x91\x15\xa1\x93\x08\x72\x7f\x83\x17\xb2\x8d\x8f\x90\xf9\xa9\xb7\xa7\x11\x10\x38\x8c\x91\x1e\x4a\x5a\x59\x09\x56\x2d\x91\x09\x79\xe8\x39\x5a\xc6\x60\x77\xad\x67\xb2\x9a\xe7\x6d\x5c\xd5\x42\x07\x7d\xb9\x8c\x5a\xdd\xdb\x69\x8a\x65\x81\x1c\x2a\xf7\xbd\x5a\xa5\xb9\x64\x2c\x52\x3d\x55\x16\x96\x47\xa9\x2e\x86\x2e\xbc\xab\x68\xb0\x20\xeb\x35\x3b\x2a\x4c\x68\x82\x43\xc1\x08\x2b\x34\xb2\xac\xef\xc9\x0a\x5e\x80\xa3\x98\x54\x13\xac\x66\x57\xd3\xb7\x2d\x57\x1b\xb0\xd4\xa5\x9f\xd2\x90\x8b\xf0\x90\x74\xa8\x74\x82\xe1\x82\x65\x74\xb9\x74\xb3\xd2\xce\xec\x17\xcd\xa1\x30\xd0\xb6\xa3\x53\x40\xf1\x32\xf4\xbc\xd0\xe8\x3b\x68\xf1\x00\xea\xb7\x61\x20\x58\xf9\xb0\xad\xb6\xba\x53\xa8\xbf\x42\xfd\x9d\x2a\x8e\x54\x6c\xf1\x29\x6e\xfe\x2f\xc0\x2d\x73\x65\x9b\x1e\xac\x77\x13\x84\x84\x33\x48\xa6\xcc\xac\xbe\xe3\x22\x42\x16\x80\x7a\xea\xb1\x1d\x54\xed\x0f\xbe\x44\x13\x4c\xe0\xce\x29\xb0\xa2\xe1\xc0\x14\x1b\xd9\xad\x19\xde\x31\x67\xe7\x99\x0d\x27\xa8\x0b\x15\x55\xf0\x5e\xf7\x85\xe2\xa0\x00\x50\x0e\x33\x00\x22\xb3\x9e\xb7\x66\xb6\x80\x0b\x44\x20\x43\x0b\x7a\xa8\x4e\x04\xcc\x6c\xa3\x39\xc9\x27\xa6\xf5\x36\x43\x56\xfb\xbd\xe6\xa7\xa7\xc6\x48\x55\xfc\x1c\x92\x63\xd1\x01\xa3\x79\x2b\xd4\x0f\x89\x5e\x2a\xe8\x10\xc9\x47\x28\x97\xcc\xb2\x93\x33\x1c\x7f\xe8\x80\x25\xd4\x95\xca\x48\xb8\x01\xa1\x5a\xb8\xa0\xe9\x10\x94\x3f\x9f\xb1\xc5\x68\x12\xec\x1c\xbc\xfa\x4a\xd1\xd4\x8e\x3c\xf3\x88\x89\x47\x9c\x5f\x88\x6a\x2c\xb0\xac\x1f\x00\xaa\x4c\x24\x0e\x4a\xfa\x21\x8e\x6a\xe2\x98\xc8\x7d\x4f\xb9\x89\x01\x3c\x00\x09\x77\xa5\xa0\xe7\x99\x9e\x83\xea\x6d\xa3\x0a\xfa\x4a\xe9\x55\x33\x18\xbb\x58\x7b\xe8\x4f\x69\xb6\x42\x98\x43\xc8\x81\x1b\x02\xa7\x19\x41\x30\x77\xd0\x18\xf5\x2a\xa2\x47\x04\xed\x6a\x9e\xeb\x3c\x13\xc2\x64\x58\x82\x0a\x14\x58\x67\xae\x85\x5e\xfb\xea\x2a\x24\x0b\xe7\x6a\x8e\x93\x8c\x72\x72\x44\x5f\xbf\xd6\x35\xd4\x25\xc5\x1a\xcf\x75\xbd\xc1\x1d\x47\xb5\x7b\x1b\x0d\x36\xc0\x06\xc5\xca\x2a\xb2\x24\xd6\x9c\x83\x11\x9d\x88\x24\xb3\x67\xf2\xf6\xb4\xb7\x45\x34\x02\xcd\x8c\xfc\x14\x38\x3e\x7d\x9f\x90\x24\x20\x30\xd5\x11\x76\xa4\xc0\x6c\x98\x2b\x04\x2b\x3c\x1d\x6b\x85\xb0\x06\xcd\x44\x4c\xf0\x93\xb2\x3a\xba\x12\x7d\x6d\x88\x2b\x41\xd3\x30\x21\x38\x85\x64\x59\x10\x55\xd6\xf6\x5c\xed\x20\x1d\xdb\x80\x7e\x9a\xb0\x3e\xb1\x7a\x02\x19\xfb\xc8\xc2\xf5\xea\x88\xe8\x23\x4e\x45\x34\x9f\xfc\xd3\x56\xaf\xc9\xf4\xb0\x43\xa7\xcb\xec\x3e\x74\xea\xaa\x49\x75\x94\x24\x11\x9c\x35\xc7\x0f\x75\xba\x70\x55\x81\x8b\x76\x0d\x34\xb9\x0c\x64\xc9\x74\xc9\x76\x30\x7d\x7e\x4e\x10\x8b\x63\xb0\xc9\xca\x9c\x20\x8f\x23\xb8\xa8\x8e\x64\x02\x11\xa1\x36\xac\x3b\x46\x77\x5b\x81\x38\x54\x8d\x84\xbc\x5e\xe4\x1a\xe8\x71\xac\x2a\x71\xbb\xec\xe9\x4f\x9b\xb7\xe9\xf3\xb6\x9c\xb7\x52\x82\x9a\xe5\xa8\x86\x17\xa5\xb7\xbb\x3c\x47\x13\x1d\x23\x38\xe7\x5a\x52\x41\x0b\x31\x5c\xc0\x24\x77\x88\x50\x2d\xf3\x79\x51\x6d\xd5\xec\x8a\x79\x2b\xee\x31\x78\x95\xc0\xb1\x20\xca\xa7\x66\xd7\x38\x02\x84\xfb\xcb\x40\x00\xd7\x8c\x47\xd3\xae\x82\x58\xfd\x55\x5d\xd6\xb1\xbb\x70\x2f\x6c\xf9\x97\x31\x4f\xd5\xd3\xf9\x7a\xe1\x9b\x98\xe7\xba\xbc\xe7\xee\x1f\xb3\xbd\xca\xe5\x0b\xa6\x4c\xa5\x8a\x22\xfd\x8b\x71\xfc\x59\xfb\x3e\x40\x5c\x9e\x54\x77\xe1\x78\x50\xaa\x33\xbd\xba\x91\x25\xfd\x56\x21\x23\x07\x07\x00\xa4\x75\x9a\x06\xe8\x1a\x30\x6c\x35\x95\x6b\x85\xc0\x55\x35\x22\xd0\x2d\xd1\x91\x46\xce\x1f\xc8\x9e\x96\xa7\x71\xa6\xdb\x2b\x0d\x57\x9a\xd9\x8a\x0e\x02\x35\x1f\x97\x41\x25\x16\x4a\x05\x38\x74\xd4\xc7\x0a\xb5\x42\x60\xb6\x4a\x72\x7c\x69\x75\x60\x25\xf6\xae\x72\x2e\xe3\xa6\x97\x51\xe1\x20\x2d\x86\x76\x3c\x39\xb5\x11\x7c\x69\x6b\x4d\x30\xfa\xc2\xac\x5a\xca\xa4\xe8\x29\xc5\xe8\x12\x8f\x14\x72\x2e\x0d\x6a\xa9\x8a\x83\xfa\x04\xfa\x81\xd5\x3d\x35\xb0\xd1\xd2\xc5\x94\x4e\xcc\xea\x2d\x3a\x51\xa9\xa3\x4e\x26\xca\xa4\x14\xfa\xb6\x56\xe7\xbb\x48\xc6\x9d\xe7\x1b\x1c\x3d\x06\x3a\xf5\x79\x3a\x26\xbe\xad\x16\xb3\xa9\x5e\x50\x89\xe5\xd4\x13\x82\x6e\xb4\x1a\xa6\xb6\xd8\x81\xa7\x16\xa4\x0d\xf6\x37\x20\xe4\xd3\x55\xa6\x75\xa1\x66\x09\x47\x1a\xca\x2a\xaa\x13\x76\x26\x68\x33\xfc\xa2\x22\xf9\x15\xbb\xe0\xc3\x94\x2d\x4d\xd3\xb1\x09\xff\x59\xf3\x7d\x39\xa2\x1c\xb5\x60\xe0\x14\x68\x40\xd4\x80\x51\x15\xea\x46\x38\xac\x3a\x00\x45\x0b\xf3\x00\x1d\xb8\x48\x9c\x88\x53\x4d\xa2\x3a\x8c\x00\x85\xb1\x9e\xb0\xfe\x50\x3e\x71\x61\xa5\x4e\xd2\xac\x5a\xc5\xc7\x6a\xdf\x50\xad\x72\xba\x99\x8d\x12\x8b\x92\xaa\x7e\x58\xab\xba\xf6\x2b\x7a\x1a\xb5\x0b\x13\xaa\x5f\xaa\xad\x5a\xac\x81\x59\xdb\xc0\x41\x56\x37\x40\xf5\x22\xa1\xcf\x9b\x45\xe9\x4b\xd8\xa5\xe0\xaf\x42\x5f\x5a\x01\x2e\xad\x9a\x5e\xd5\x5e\xe0\xfd\xe0\xea\x22\x42\x09\x25\x65\x9a\x56\xd5\x33\xd3\x57\xbe\x05\xae\xcc\xe8\x88\x86\x26\x47\xdc\x60\xb1\xaf\x50\xd5\xb3\x2a\xbf\xc0\xd1\x52\x47\x6c\xe9\x4c\x35\xe6\x8a\x05\xda\xd2\xd5\x12\xd5\x14\xf2\xaa\xcf\xe1\x5b\x55\x9d\x42\x3e\x0d\xdd\xf9\xc5\x79\xd5\xe5\x2e\x44\x68\x32\xa1\x55\x75\xae\x4c\x58\xae\x8f\xda\xe2\x68\x64\x6d\xcf\xfc\xc4\xad\x1b\x60\xa1\x33\x71\xa1\x1c\x26\xcb\x8f\x3a\xc0\x10\xc4\x55\x3a\x99\x86\x9a\xb3\x6e\x62\x3d\x58\x75\x3a\x51\x3d\x66\xa4\x13\x37\x79\x24\x95\xd0\xe8\xf4\xca\x1d\x4e\xc7\xb3\xb1\x10\x69\xcd\xa0\x5b\x43\x1d\x6e\x32\x15\xe5\x08\xdd\x8d\x34\x5c\x4f\xee\x84\xaa\x88\x47\xe4\x71\x53\xee\x30\xfb\xe3\x52\xc3\x2f\x8c\xba\x2d\xd2\x5d\x21\x94\xa2\x61\x03\x90\x4b\x71\xa4\x52\xcf\x1a\xb4\x16\x92\x1c\x08\x1e\x26\x71\x07\xaf\x23\x58\x5c\x59\x75\x49\x44\x55\xa3\xda\x3e\x3b\x5b\xd6\x25\x8d\xca\xfd\x32\xd9\x22\xf5\x5e\x8c\x27\x03\xe2\x20\x46\xc8\x32\x55\xa8\x43\x02\x09\x70\x74\xa5\x2e\x15\xd9\x68\xdd\xca\x71\xd5\x2b\x83\xe0\x74\x88\x75\x10\x35\x0c\x07\xca\x54\xaa\xc7\x5e\x40\x2c\x2c\x7b\xfa\xe5\xd7\x9f\x3e\x8d\xef\x7f\x38\x8f\x7f\xfa\xee\x8d\x1c\x03\x53\x9f\x79\x89\xaf\xc1\x90\x03\x48\x7f\xa3\x81\x0c\xf7\x46\x52\x5e\x07\x48\x14\xfd\xe2\xb5\x32\xea\xb4\x51\xc9\xa3\xee\x62\xe7\xfa\x23\x96\x3d\x2d\xf1\x49\x11\x3d\x6e\xef\x7d\x67\x76\x2e\x42\x3b\x6f\x1f\x88\xfa\xa1\x16\x71\x2d\xe4\xb8\x70\x92\x84\xca\x89\xcc\x0c\x8f\xe7\xb7\x0e\xab\x5c\x99\x5d\xed\xdc\xe6\x19\x64\xec\xde\x13\xe4\xa5\x58\xa4\x81\x38\x87\xb6\xdc\xe3\xc5\xb5\xf7\xd7\xf6\x8e\x41\xb8\x7a\x39\x84\x87\x2b\xb0\xaf\x66\x6f\xa6\x27\x46\x5d\xed\xca\xcf\x3e\x0c\xa5\x53\x73\xda\x3e\x2a\xb0\xae\xc5\xc3\xa8\x40\xfa\x50\xcd\x35\x68\x6f\xde\x5a\x31\x11\x48\x7d\xcf\x6e\x2d\xf6\xd1\x4c\x09\x76\x01\x5b\x7a\xdb\x8b\x4f\x20\x9e\x70\xbc\x08\x28\x44\x3c\x21\xdf\xc9\xc8\x94\x53\xbb\xbd\x15\x2e\x68\xcb\x36\xe4\x23\x08\xec\xe2\x5d\x4b\xfc\xb6\xa1\xc1\xb6\x7e\x92\xf5\x1e\x7b\x90\xaf\xdb\xc5\x55\x6f\x51\xd5\x3d\x9a\xd7\x51\x37\xcd\xe0\x89\xe7\xc4\x55\xdb\x02\x55\x28\xfd\xac\xc1\xd9\x50\x45\xc4\x6c\x1d\xb9\xb2\x1f\xab\x72\x75\xe4\x79\x6b\x0e\x3a\x57\xcf\x8d\xd2\x58\x3e\xaa\xa4\xc0\xf2\xc1\x13\x06\x3c\x9b\x70\x21\xaa\xe4\xa9\xd6\x57\x3d\x99\xb3\xf6\x46\x16\x91\x2f\x50\x11\x56\xbb\x2e\xeb\xd6\x69\xae\x9d\x3a\xe5\x3a\xf9\x86\x76\x9b\xf5\xc8\x47\xf4\x13\x5c\x73\x9d\xa5\xa1\x70\x60\x0d\xc2\x60\xea\xee\xa2\x1f\x9e\x1c\x88\xb3\x1c\x62\x38\xc6\xc1\xd2\x81\x4b\xbc\x3a\x92\xe1\xb3\x86\x62\xbc\xea\x5f\x65\x4b\xcd\x5a\x64\xb1\xba\xaf\xa1\x43\xf0\x34\x74\xed\x65\x72\x17\xf2\x3b\x1a\xb1\x12\x15\xd2\xa1\x5f\xeb\x25\x9b\x44\x9a\xd6\x41\x63\x05\xfc\xbb\x91\xe9\xb8\xd6\xaa\x86\xa2\x72\x2e\x74\x51\xe1\x08\x44\x0d\xee\x07\xb8\xdd\x7d\x04\x3c\xcd\x26\x1a\xfe\x53\x82\x5a\xc0\x93\x5b\x18\x25\x96\x06\xea\x9e\xcb\xca\x7d\xed\x84\x95\x66\x6c\x21\xf9\xec\x05\x4c\x4a\x94\x11\x6b\x45\xc4\xa0\x1e\x77\x4d\x9c\x89\x7e\xf1\xb4\xcb\x49\x1f\xf0\xa7\x47\x7e\x62\xf8\x90\xf3\x03\x1e\x11\x0f\x70\x7e\xa3\xd1\x2d\x51\x9e\xa1\xb9\x7b\xf2\x6a\x07\x22\x78\x21\x2b\x50\xd5\x9d\x74\xfe\x5c\xf8\x48\xd6\x0f\xcb\x8b\x62\x9f\x4c\x3b\x1c\x59\x6e\x9d\x25\xe9\xe5\xf1\x8c\x20\x00\x27\x13\xb0\x84\x23\x35\xf9\x8b\x85\xd6\x9a\xb1\x72\x6e\x40\x6c\x95\xe6\x53\x77\x71\x51\x18\xaa\xc5\x8f\x46\x25\x6a\x48\x7d\xd2\x80\xa2\x40\x4f\x04\x7c\xcf\xd2\xab\x60\x52\x8b\x26\x52\x46\x8b\x90\x88\xc1\x73\x3a\x98\x79\x8c\x9a\x3f\x26\x3a\x44\x7b\x85\x09\x71\x2f\x08\xa2\x05\xbb\x0f\x30\x78\x81\x01\xbc\xe2\x7d\x5e\xa4\x57\xf9\xbf\x26\xc7\x06\x1d\xcf\x02\x24\x38\x92\x53\x4c\xe6\x7e\xc0\x97\x60\x91\xf6\x4b\xe1\x6a\x68\x20\x03\xf2\x36\xaf\x9a\x82\x86\xa2\x00\x0d\x09\xf0\x0d\xc3\xfa\x17\x50\x53\x72\xd3\x9e\x7c\x21\xe5\xa2\x38\x6f\x80\x99\x86\x39\x20\x2e\x50\x64\xcb\x28\x4b\x22\x2b\x8b\x3d\x8d\x5a\xbf\x30\xa0\x50\x89\x8a\x65\x88\xfc\xd8\x4a\x63\x82\x41\x5e\x90\x58\x83\xc7\xe0\xc8\xe7\x34\x46\x03\x60\x60\x86\x01\x18\xce\x95\x67\xd6\x88\x40\x38\xb7\x06\x9a\x69\x20\xe8\x21\xe0\x07\xff\x32\x83\x45\x8e\xac\x31\xbd\x52\xb4\xd0\xbf\x94\x61\x12\x83\x01\x82\x89\x5b\x34\x25\xba\xa5\xbc\x83\x1b\x8b\x34\x86\xb8\x44\xdd\xb2\x45\xd9\x4d\x30\xfb\xf0\x97\x07\x0f\x2f\x7f\xdb\xc2\x1c\xeb\xe0\x8f\xb1\x4b\x0a\xf7\x65\x51\xe6\x9e\x25\x5c\x55\x76\x80\x99\x01\x23\x96\xfd\x93\x92\x86\x3d\x32\x4d\xba\x0a\x08\x2a\x6a\x31\x55\x73\x21\x7f\x40\x67\x08\xa8\xe7\x5b\x42\x5a\x95\x8c\x7c\x15\xaa\xa6\x9a\x55\x7a\x85\x0b\x6b\xa9\x7d\xd1\x67\x7f\x81\xbc\xce\xec\xd9\xec\xbb\x06\xd0\x25\x58\x54\x94\x12\x48\x73\x04\x60\x61\x54\xc5\x40\xfb\xd0\x40\x80\x8d\x51\x73\xbe\x4c\x6b\xec\xe9\xd7\x99\xc1\x1e\xa8\x30\xab\xea\x7f\xc1\xd8\x0a\xb8\x33\x9e\x67\x66\x91\xa3\x03\xe2\x08\xc2\xdd\x27\x37\x33\x74\x77\x11\xa9\x41\x8e\x2e\xc6\x77\x94\xb4\x52\xc2\x4b\x85\x85\x81\xa9\x99\x36\x8c\xd8\x30\xd5\x09\x63\x0a\xac\x49\xb9\x20\x38\x8a\x0a\x0c\x4b\x53\xcf\x58\x3d\x41\x4c\xcd\xee\x9c\x10\x44\x69\x70\x1e\x52\xb2\x80\xc6\x24\x6a\x1d\xe8\x49\x0d\x49\xec\xcd\xab\x98\x0d\xc9\xeb\x08\x01\xba\xaa\x2c\xc1\x5d\x94\x0a\x16\xc6\xc4\xd2\x33\xbb\x65\x14\x5b\x88\x51\x08\xff\x29\x4c\x7b\x5f\x48\x8c\x10\xc7\x13\x99\x54\x57\xfe\x2d\xf2\x58\xff\x6f\x98\xa8\x98\xbf\x2d\xbb\x98\x81\x4e\x87\x01\xad\x03\x82\xb9\x6b\xb0\x29\x3c\x4a\xad\xda\x98\x2b\x45\x41\x66\x7d\x94\x1e\xb0\x3e\xcf\x32\x0c\xe6\x1d\xc8\x0c\xe0\x66\xce\xb3\xea\xe9\x60\x94\xf8\x33\x91\x7e\x1c\xfa\x3f\xf9\x9e\xac\xa2\xec\x9a\x44\xf3\xcf\x28\x83\x7c\x30\x0f\x03\x43\x60\x1a\xd4\x7d\xb3\x05\x85\x0d\x9a\xf9\x0c\xa3\xc0\x20\x30\x06\x4b\x7f\x28\x2f\x23\xe5\x92\x33\x8e\x1b\x5a\x1d\xaf\x1a\x99\xc4\xfd\x0f\xef\xbd\x01\x11\xa0\xa4\x44\xac\x9a\x9b\x91\x41\x02\x2b\xcd\xbc\xf0\x6e\x78\x0c\x05\x85\xd0\xa8\xa0\x63\x22\x89\x49\xff\x92\x27\xf3\x58\xf3\x13\xbb\x3a\x2f\xbf\xcd\xeb\x60\x01\xc3\x3e\xd9\xa8\x70\x5b\x5a\xa4\xde\xa2\xd4\xfc\xe0\x23\xac\x66\x88\xcf\xb6\x5a\x0e\x1a\x85\x07\x20\x75\x33\x58\x75\x65\x90\x94\xdc\x86\x3b\x8a\x34\xc2\x49\xe3\xe3\x79\x6c\x65\xee\x0f\xf8\xf3\x78\xd7\x5b\xaf\x66\x1b\x80\x6d\x22\x4d\x2d\x39\x49\x62\xf9\x60\x78\x20\x54\xff\x05\xd7\x36\x1a\xa3\xe7\xd4\xa9\x69\x6a\x97\xea\x28\x44\x2f\x37\xb5\xd8\x6d\x97\xfd\xf9\x50\xaf\xf5\xb5\x71\xeb\xed\x08\x64\xbb\xac\x1b\xb3\x43\xfa\xee\x8c\xa0\x7b\x44\x09\xc3\xf7\xd2\xa8\x83\x09\x35\xeb\x08\x0c\x87\x83\x35\x16\x59\x85\x75\xba\x10\x60\xc9\xb5\xd2\x09\xfd\x90\x43\xad\x7d\xa2\xde\x69\x2d\xcd\xb4\x5d\xaa\xd0\x4e\x6d\x4c\x6c\x7e\xc6\x64\x63\xea\xf5\x50\x5d\x83\xa5\xc9\x0c\xbe\x05\x89\x87\x2c\x56\x43\x3e\xdc\x84\x2d\xe2\x26\xa5\x2e\xd8\x0d\xa6\x23\xfd\x7e\xaf\x7b\x8d\x04\x1b\xde\x39\x56\x68\x06\x3c\x12\xe9\xca\x50\x2b\x03\xd4\x8c\xda\x20\x46\x67\xe7\x42\x2b\x96\xac\x49\xe1\xb4\x70\xb5\xe3\x8e\xc3\x40\x53\xd3\x6e\x09\x37\x8c\x49\x10\xd1\x91\xeb\xc4\xc3\x6e\xaf\xdc\x10\x50\x1e\x8c\x60\xd1\x18\xad\xc0\xc0\x52\x26\x62\x32\x74\x98\x03\x9b\x72\x4e\x59\x63\x4a\x52\x59\xe8\x08\x34\xa4\x6e\x56\xd5\x32\x16\xaa\x92\x05\x49\xa4\x3a\x8c\x8c\xe4\x98\x7d\x53\xcb\x99\x5c\xab\x50\x83\x96\xc0\x91\x13\x60\x9b\x3a\xc5\x67\x78\x1c\x60\x26\xa7\x2e\xad\x64\x0b\xf4\x55\xa9\x86\xb1\x53\xec\xab\x5f\xa8\x8c\x8c\xad\x4a\xec\x4c\x6b\x2a\xed\xe6\x4d\x9b\x0d\xbe\x44\xd3\x15\xc0\x2e\x08\xd5\x1a\xd2\x7b\x23\x09\x3a\x66\xc0\xc8\xae\xa0\x1c\xa7\x75\x95\x77\x02\xcb\x05\x21\x19\x73\x52\xdf\x01\xc2\x93\xb1\xfd\x82\xf2\xb2\x8f\x73\x66\x4e\x73\x08\x4a\x38\xa6\x9b\xf3\x81\xaf\xd2\xa4\xea\x28\x4d\x33\x99\xf2\x6c\x03\xb9\x42\x35\x77\x69\x76\xb6\xa0\xfa\x38\x38\xe5\x09\x8f\x13\xd5\x98\x36\xbd\xd1\xa4\x29\xea\x11\x13\x24\x63\x5a\x90\x91\x86\x55\x19\x40\xa6\xc1\x15\x03\x0c\x32\x91\x7a\x42\xda\xc8\xe0\xfd\x33\x2a\x20\x1c\xe1\x53\x79\x10\x45\x42\x5d\x41\xd4\xaa\xee\x08\xf5\x64\x44\x9e\x57\xdd\x68\x54\x15\xe7\x10\x54\x25\xae\xc8\x81\x2c\x70\x72\x86\x02\xf9\x72\x42\x72\x24\x44\xf2\x0a\x11\xca\xb9\xf1\x0b\x6e\x52\x36\x77\xa2\x93\x58\xc6\x0a\x83\xfa\x04\x66\x8a\xa8\x67\xb5\x1c\x87\x41\x43\x52\x81\x93\x8b\xea\x43\x35\x4d\x9a\xba\x3d\xd9\xea\x0b\x49\x9a\x85\xf5\x22\xbd\x9f\x34\xd2\x2f\xab\x84\xa1\xa9\x06\x6c\xd6\x0a\xe7\xab\xd7\x73\xdd\x32\x42\xa9\xaa\x3e\x0a\xeb\xb0\xd3\xef\x49\x51\x8e\xfe\xf7\x5a\x94\xdd\x6b\xe7\x20\xd5\x2c\x6e\x6f\xc8\xa8\x1b\xf8\x0c\x08\xa4\x81\x5d\x89\x7c\xf9\x40\x07\x4b\x08\x31\xfc\x4d\xad\x42\x3a\x74\xa2\x33\x8b\x78\x80\xc7\x25\x6d\xad\xc8\xa7\xba\x3f\xcd\x89\x81\x60\xfb\xd8\xd2\x5c\x34\xc1\x02\x05\xc7\x59\x2c\x05\xc1\x9a\x85\xc9\x4c\x46\xad\xcc\x31\x42\x74\x8d\x94\x77\xe6\xca\x0c\xf2\x6c\x94\x53\x61\xe6\xa4\x4d\xd5\x80\xd3\xb5\x06\xa8\xf9\xb6\x86\xfc\x19\xdb\xb4\xb0\x2b\xa9\x01\xb5\xbc\xc2\x8a\x04\x46\x68\x93\x4e\x0c\x55\xcb\x6a\x99\x65\xc4\x1e\x21\x4a\xd8\xfc\x02\xf6\x6e\xed\xcd\xcf\x5d\xdd\xdb\x4b\x57\x7f\x94\x7a\x0b\x8a\x2f\xab\x29\x4f\xae\x3b\xc4\xf7\x57\xfa\x1b\x07\x63\x30\xfb\x31\x9c\xda\x17\xfb\x07\x2f\x1d\xeb\x6b\x16\x16\xbb\x8f\x74\xdb\x45\xba\xb6\x16\x2d\x87\xa2\xeb\x26\xf6\x52\x36\x45\x19\x1f\x95\xd2\x15\x3b\xfa\x4e\x52\xcd\xd8\xa9\x06\x77\xec\x9a\x8e\x0f\xe2\xed\x50\xe1\xaa\xd4\x11\x6c\xd9\x18\x8f\x55\x23\xbd\x14\xf8\x53\xa6\xf9\x79\xc3\x69\x83\xbf\x07\x94\xae\x36\xfc\x5c\xa8\x64\x26\x48\x7c\xe2\x3c\xdd\x33\x51\xaa\x3a\xf5\x33\xc1\xce\x95\x39\xdb\xae\x54\x35\x5b\xa4\xca\xae\x91\xdf\x45\x43\x3e\x63\xd4\xfe\x05\xa3\xf6\x77\x06\x94\x35\x43\xe7\xe1\xcc\xca\x73\x50\x2a\x3c\x73\xd0\x2d\x6e\x15\x1f\xda\x22\x63\xc2\x7e\xf3\xb4\x6c\x51\xfa\xc8\x3f\x44\xb3\x0d\x83\xdc\x2e\x10\x76\xba\xc8\x11\x7a\xcf\xf4\xdd\x4b\xd0\xbe\x64\xf8\x97\x1f\xbb\x18\xfe\x95\x31\xa6\xdb\x33\xeb\xc3\xbf\x04\xc8\xc1\xf0\x9f\x53\xa4\xa5\xba\x27\x50\xc0\x37\x1a\xdf\xce\x18\x3b\xa3\xee\x6c\x1a\xe2\x19\x1b\xdb\x34\x6c\xd5\x53\x6a\xa4\x65\xfa\xdc\xb2\x37\xb5\x9a\xfa\x4b\x0a\xbb\x84\xa6\x82\xdf\xe4\x83\x75\x93\x1a\x86\x5a\x87\xf0\x6e\x65\x99\x23\x10\xe6\xab\x20\x74\x55\x5f\x46\x8b\x2e\xe2\x86\xc9\x42\x2a\xf8\xd4\x03\x73\xab\x25\xb3\xee\xcb\xcc\x3c\x04\x61\xba\x00\xe1\x95\x02\x34\x4e\x41\x68\xf6\x20\xcc\xaf\x10\x84\xcd\xa3\x7e\x76\xc2\xaa\x30\xfe\xa8\x5e\xdc\x85\x70\xb9\x09\x61\x45\x15\xb3\x43\xd2\x0d\xca\x4e\x91\x54\x01\x86\xec\x3b\x15\x19\xcd\x93\x21\xfc\x97\x82\xa4\xdf\xd7\x28\xc4\x59\x83\x10\x10\x69\x02\xef\x78\xe7\xee\x91\x81\x7d\xd1\xc7\x27\x90\x81\xcf\xc5\x63\xbb\x23\x05\x66\x47\x08\xca\x75\x08\xe7\x3d\x84\xcd\xeb\x83\xb0\x57\x02\x5b\x63\x0f\xdc\x91\x8a\x33\x9a\x47\x29\x4f\x9d\x92\xe8\xd9\x33\x1d\x00\xb6\x41\xbb\x3a\x6f\x74\x3e\x74\x06\xf1\x05\xd3\x52\xd3\x60\x3d\x2a\xbe\x1c\xd9\x39\x76\x7f\xeb\x25\x32\x2d\xd5\xce\x85\x2e\x4d\x8c\xf5\x91\x1f\x86\x37\x68\xd4\x92\x57\xfb\xc5\xc4\x1c\x73\xcc\xcb\x06\x8d\x39\x83\x21\x20\x00\x9f\xca\x42\x83\x8b\x85\xba\x06\x4e\x2d\x48\x5f\xc2\x88\x7b\xa7\xb9\x85\xa9\xcd\x74\x93\xea\x86\xa1\x55\x53\x25\x49\xa6\x64\x8c\x1c\xe0\x08\x48\x87\x5c\x87\x54\x90\x70\xed\x1a\x2c\x15\x9d\x50\x29\x40\x4f\xb6\x30\xc7\x0f\x22\x0b\xa0\x69\x1b\x04\x15\x0b\x55\x2c\x93\xca\x46\xb0\xac\x68\xd4\x75\xd1\xc4\x77\x84\x43\x75\xd3\x0d\xb0\xe6\xa9\xba\xd3\x3a\x75\x98\x62\x54\x91\x7a\xe1\x1e\x95\x2e\x30\xd1\xed\x11\xa2\xc1\xfb\x02\xdc\x17\xd0\xa6\x05\x98\x75\x37\x71\xbc\x87\xb3\xc9\xe1\x31\xb2\x3e\x50\x80\x6d\x68\x71\xcd\xee\x4c\x73\x71\x56\x4d\x10\x85\x36\x3f\x28\x49\x2b\x4e\xf3\xd0\xc8\xaf\x7d\xb0\x27\xc7\x0b\xb2\xb7\x43\x18\xf5\x1e\x78\x0a\x6a\xdf\xae\xae\x6a\x7a\x7d\xcb\x27\xc0\x66\x4f\xe6\x1b\x52\xf7\xc3\xef\x5c\x34\xc6\x2e\x41\x8d\x5d\x13\x73\x9c\xe1\xea\x7d\x37\x1d\xc6\x4b\x00\x8c\xc8\x3d\x28\xcd\x91\x3a\x04\xda\x03\x64\xe6\x31\x8f\xc8\xdc\x35\x90\x0e\x15\xa6\x50\x52\x26\x94\xee\x43\x4d\x18\x26\x1e\x81\x2b\x9e\x2f\xca\xd6\x91\xf4\xd4\x3b\xf0\x02\xa7\xfe\xe1\x90\x08\x85\xd7\x90\xeb\xfa\x5b\xa6\x0a\xf7\x13\xbf\xcb\xd4\x61\x13\x6c\x91\xc6\xa5\x15\xe5\xf6\x82\xfe\x8c\xf2\x1b\x58\x29\x22\x31\x11\x9b\x5e\xb4\x27\x63\x6d\x39\xea\x8b\x47\x90\xdd\xa7\x50\xd6\x78\x48\x21\x55\x88\x4d\x5a\x11\xa4\x2a\x82\x90\xe0\x1a\x63\x82\x40\x1c\x98\x05\x4f\x4d\x51\xc2\x9c\x23\x66\xcd\xb4\xd0\x16\x3a\x4c\x30\xff\x55\xa8\x69\xac\x29\x5e\xd9\x12\x54\x04\x73\x53\x4b\xd6\xea\x7a\x86\x9d\xa0\x82\x56\x68\x72\x56\x38\x24\xcb\xe9\x4b\x8d\x34\x4d\xbb\x94\x24\xae\xf9\x46\xc3\x5a\x82\xf1\x87\x67\x0e\x2f\x7f\xb9\xe1\x85\x19\x01\x0a\x32\xbc\x30\xc3\xd3\x8d\xa9\x6d\x60\x49\x45\x64\xad\x8c\x91\x29\x34\xb1\xa7\x98\x4e\xc6\x3c\x6b\xb4\xe5\x4b\x8d\xb6\xe4\x3c\x33\x67\x63\x9e\x55\xd7\x2e\x94\x0a\xd9\xfb\x92\xf2\x3c\xf0\x5d\x89\x88\x6a\x9e\xdd\x10\x4b\xa9\xd1\xa5\xd6\x95\x1d\x01\xe8\x66\x2c\xc3\xfc\x77\xbe\x3c\x67\x46\x69\xfa\x12\x33\x62\x9c\x80\xb1\x9b\x65\x4d\xce\xce\x92\x7a\xe1\x9f\x9a\x0d\x0b\x27\x04\x33\x2a\x6b\x0e\x82\x3a\xea\xf9\x62\x1e\x48\x3c\x68\x3d\x83\xfa\x60\xb2\x93\xc9\xa7\x67\x4d\x6b\x97\xba\xdb\xb3\x06\x2d\x82\xe9\x33\x63\x5f\x61\x59\xf1\x48\x43\x90\x60\x01\x34\xf4\xa1\x70\x67\x6f\x50\x9a\xb7\x58\x10\x61\x16\x24\x9e\x63\xb2\x43\x41\xe1\xb6\xc8\x04\x0e\xc6\xa2\x9a\xee\x51\xf4\x74\xda\x22\x3e\xcc\xae\x56\xe4\xd4\xd2\x0f\xd4\xe4\x03\xe1\x44\xd1\xc7\x55\x69\xdd\xa9\xde\xa4\x3b\x3c\x6d\x19\x08\xcc\x70\x35\x49\x0c\xfa\x26\x45\x48\x9d\x36\x3c\x4c\x73\xf6\xa8\x08\x5a\x6c\x1e\x61\x4f\xd1\xd0\x24\xf7\x65\xe6\x63\x0d\x94\x83\x5a\x18\x89\x39\xdd\x89\x0b\x33\x0d\x02\x70\xf3\x17\xb8\xa7\xfc\xb9\x33\x09\x19\x36\x46\x39\x68\xe1\xb2\x64\x61\xf0\xa6\xae\x7a\xaa\x05\xd5\xec\xac\x19\xd4\x61\xb4\xc7\x22\x23\x90\xf0\xb9\xd3\xf7\x5f\x68\xfa\x11\xbb\x96\x7a\xf9\x89\xb5\x6d\xe1\xb4\x35\x55\x75\xa9\x45\xd9\x55\xd7\xdd\xdb\x5e\xb2\x90\xaa\x08\x42\xf6\x81\xf6\x85\x76\x01\x8b\xab\x41\xf4\x2c\x1d\x13\x70\x63\xf7\x00\x8a\x7e\x6d\x8a\x02\xb8\xbd\x0d\xaa\x9b\xe8\xd3\xb4\x1b\x73\x7b\x7a\x04\xb6\xf0\x65\xc0\xe6\xaa\x82\x6b\x53\x67\x3d\x05\x46\xae\x05\xb8\xb8\xad\x22\xee\xcd\x00\x97\x0e\xd5\x4d\x09\xdd\x40\x7b\x34\xd1\xf8\x65\x26\xea\xa7\x9d\x67\xe4\x0e\x2b\xe4\xfe\x13\x67\x7c\x10\xba\xe4\x9e\x3f\xcd\x8d\x81\xb0\x77\x2a\xa0\xe2\x30\xb8\x5d\x02\x35\x84\x9a\x16\xe9\x8c\x2a\x8c\x3d\xd9\x23\x7d\x54\xef\x25\x7b\x34\xf7\x4b\x8f\xf6\x3c\x8e\xee\xaa\x9a\xf4\x60\x82\x17\x7a\xbc\xcb\x9c\x46\x17\x7d\x68\xc5\xe3\xc6\xb5\x5d\x01\xe2\xf7\xee\xf6\xa3\xb0\x7b\x44\x95\xfb\xb5\x4c\x49\x59\xcb\x30\xfb\xa6\x77\x77\xd7\xfb\xc2\x1a\x0e\xee\xa9\xe4\x6c\x6f\x56\x4d\xaa\xd0\x9f\xd5\xe1\x5a\x2d\x84\x0d\x77\x8c\xe2\xce\x93\x9e\xa9\xaf\xad\xa2\x34\x12\x69\xf8\xd4\x4f\xb0\x1b\x85\x3b\xed\xbd\x42\xa3\x3e\x29\x0c\x34\xb0\x4c\xfd\x2f\xdf\xd2\x01\x47\x2d\xbc\x48\x39\x6e\xa9\x7e\xe6\xdf\xec\x39\xcf\x8c\xb4\x96\xb1\x96\xf4\x08\x53\x87\xcf\x2e\xd6\x6b\x34\x94\x9b\xaa\x8b\xac\xee\x8e\xb4\xef\x32\xf9\x2d\x0f\x32\x43\x07\x4c\x75\xd6\xd3\x98\x91\x51\x6d\xc5\xaa\xed\x8a\xc4\x48\x77\xe8\x42\xd3\x2b\x82\x02\x6c\x8a\x13\xc8\xa8\x9b\x28\x2a\x32\x41\x30\x9c\x37\xe8\x65\xe9\xcf\xae\x78\x95\x01\x1d\x0b\xd3\xa9\x0f\xa8\x86\x85\xfa\x5a\x8b\x60\x44\x12\x84\xd8\xfb\x51\x5f\x2e\xa3\x81\x38\x48\x99\x48\xbb\x6a\xd2\x9c\x4f\x14\x3f\x07\xb8\x38\x9c\x73\xce\x5b\xa0\x37\x3d\x0e\x27\x66\x28\x42\xbe\x28\x2b\x3d\x55\xcc\x97\x2e\x39\xb2\xfa\xa9\xb5\x7d\x9c\x23\x52\xea\xac\x43\x83\x1f\xb0\x0e\x5a\xb3\x1c\xc7\x8b\x3e\xb4\x62\x60\x0d\x24\x83\xe9\xd8\xad\xac\x3f\xc6\x6b\xa3\x09\x73\x39\xac\x51\xc7\xb5\xc5\x30\x13\x3d\x88\x6f\x8c\x88\x67\x02\x71\x74\x79\x04\xe1\x4d\x07\x77\x4f\x87\xe8\x5e\xa2\x6c\x73\x9f\xa9\x42\x34\x35\xb7\x97\xaf\xe4\x5f\x77\x76\x60\xa9\x1a\x10\x1c\xa5\xfa\x36\xd4\x9d\xa4\xe6\xcf\x14\x2e\xa9\xda\x03\xbb\x90\x99\x1e\x66\xda\xec\xfa\x96\xf6\xbd\xed\x83\xd5\x14\x95\xeb\x17\xf1\x71\x25\x1f\xfd\xa3\xdb\x37\xd5\x16\x65\xcf\x26\x3a\xaa\x75\x84\xb1\x38\xdf\x71\xeb\xec\xa5\x58\xd5\x37\x27\x31\xe2\x89\xf0\xa0\x92\x26\x32\x43\x7d\x0d\x1e\x44\x52\x2b\x44\x2b\x1a\xa6\x88\x67\xe4\x92\x9d\xf2\xd2\xd8\x24\x81\x8d\x46\x46\x26\x41\x35\xba\x1c\x4e\x9a\xce\x1c\xdb\x2d\xad\x55\x03\x10\x91\x6b\x40\xb6\xf8\x4c\x9b\x40\xb4\x0b\xb3\x30\x6a\x82\x2d\x04\x10\x6a\x88\x1e\xf8\x17\x78\x48\xd2\x95\x4a\x3d\xc2\xbd\x86\xbb\x33\x9e\xa1\x34\x4f\x47\x38\xfc\x31\xfa\x80\x4e\x21\x11\xa9\x97\xb0\x5d\x84\x09\x92\x3f\x54\xb1\x23\x4d\x98\xa5\x0b\xa7\xbc\x26\x58\xa9\xe9\xa3\x59\x0b\x0e\x59\x21\x3d\xd5\x6b\x8c\xa0\x63\xf4\xa2\x6d\x55\x5f\x98\xa4\x86\x0a\x71\x46\x5f\x72\x6f\x6a\x06\x02\x84\xb3\x1e\x41\xd5\xed\x0b\xd0\x6b\x42\x7a\x30\x19\x8c\x08\x24\x2d\x24\xdd\x2a\xcc\x5d\x0d\xcd\xa8\xd3\xf4\x6f\x9e\x5e\x21\x54\xab\xd4\x50\xc4\x9a\xb9\x22\xc2\xff\x05\x8e\xb2\x7c\x4a\xa7\xd7\x09\x37\xb5\x6a\x81\xa3\x27\xaa\xbe\x26\x5b\x71\xa6\x4b\x0b\x10\x58\xf3\x9a\x38\xa4\x7e\xd1\x7c\x36\xea\x21\xe5\xd4\xed\x8a\xd4\x80\x54\x4f\x47\x78\x5c\xb4\x59\x8f\x73\xcd\xe7\xd6\x49\x7f\x63\x66\xe0\xa0\x6a\x87\x4b\xf2\xad\x09\x1d\x70\x89\xe4\x3b\x28\x55\xe3\xe8\xf1\xed\x49\xb3\x90\x48\x52\xa9\xb7\x1c\xa0\x3e\x2e\x86\xa5\x94\x07\x9e\xe4\x7e\xd5\xb3\x15\xa2\x9f\x8f\x97\xbd\xe6\xda\xa7\x35\xec\x72\xd4\x3e\xc7\xda\x69\xee\x67\x82\xd3\xfa\x91\x70\x59\x53\xa5\xb6\x66\x28\x13\xa4\xf3\x44\x01\x4b\xa5\x11\x14\x5d\xf8\xdb\x3a\x4d\x61\xb6\xc0\x39\x98\xec\x32\x5d\xa5\xf4\x78\x53\x65\x55\xea\x75\x67\xd4\x09\x47\xed\x22\x7e\x1a\x5a\xad\x50\xbd\xad\x59\xd5\xa8\x9a\xd5\x55\x38\x3e\xe1\xb3\xdf\x9f\x28\xea\x36\xb5\x73\xb6\x50\xd6\xa1\xe6\xdf\x2b\x14\xc1\x99\xbf\x87\xc9\xfd\x66\xb3\x73\x60\x18\x2f\xf8\x8d\x87\x45\x99\x8f\x6e\x75\x66\xa0\x51\x30\x26\x1c\x3c\x1a\x73\xb8\x38\x05\xdd\xb4\x8b\xae\xba\x41\x6e\xcd\x7d\x72\xeb\x37\x53\x4a\x65\xcb\x6f\x07\xda\xdd\x8b\xc5\xda\xab\xde\xe8\x55\xfa\xfc\xde\x52\xeb\xec\x00\x1e\x71\x4b\x54\xa4\x44\x5f\x4f\x1f\xa4\xfa\xd2\x7a\x14\xab\x96\xa7\x38\x61\x24\xb8\x4b\xbf\x51\x16\xae\xa8\x95\x2c\x78\xda\x50\xf3\x7a\xad\xbc\x05\xd5\x06\xcb\xa8\x6f\x3e\x28\x75\xa1\xc7\x09\xd1\x63\xaa\x0e\xb4\xb8\x50\x07\xda\x6a\x8a\xeb\x9a\x3f\x2e\x7f\x73\x1c\x31\x5d\x57\xd9\xc5\x10\x33\xed\xe3\xce\x2e\x44\x14\xb3\x71\x92\x97\x9e\x24\x1c\xfa\xb0\x39\x42\x34\x96\x73\x74\xf7\xe5\x94\x5e\x15\xf6\xd5\x42\xce\x3c\xe4\xe6\x55\x9f\x75\x7d\xbf\x55\x1d\xd7\x37\x81\x5c\x7e\xed\x90\x73\xfb\x99\xba\x47\x38\x77\x01\xa6\xcf\x68\x7b\x00\x8a\xf2\x9a\x41\x11\x42\x55\x6a\x80\x68\xef\x8d\x70\xbc\x6b\x42\x95\xf5\x4d\xd5\x37\x1c\xcc\xb3\x57\x41\x7d\x95\xf3\xac\xe3\x39\xa5\xa9\xb9\x9b\xa5\xbd\x09\x1e\xa9\x8f\x48\x66\x85\x47\x43\xea\x77\x70\x32\xa9\xa6\x52\x92\x63\x75\x65\x34\xff\xe0\xdd\x49\x73\x50\xa9\x5d\x3d\xc1\xc5\xb4\x90\xad\x88\x81\x65\x99\xf1\x52\x64\x82\x0e\xf4\x58\xb7\x14\xb2\x2a\x31\x60\x4c\x3b\x81\x90\xd9\x92\xe8\x4d\x47\x7e\xa0\xbd\x56\xea\x6b\x05\xe8\xf3\xe9\xb6\xe9\xc4\xcb\x4c\xd3\xbe\x76\x77\xf5\x49\xc3\xa3\x41\x35\x55\x9d\xa0\xf5\xf7\x0f\x20\x66\xff\x12\x20\xe6\xf7\x10\xdb\x11\x65\x78\x18\xf8\xeb\xda\x99\xaf\x07\x31\xf7\x9a\x21\x96\xa6\x9d\x7b\x2e\x11\xed\x9a\x7b\xee\xe6\xec\x68\x15\x4c\xd7\x2a\x82\xc4\x9b\x8f\x86\xee\x08\xd9\x30\xf8\x8a\xcb\xea\x01\x04\xfd\xbf\x3e\x83\x78\x2f\x92\x3f\x34\x1e\x5f\x97\x68\xdb\xfa\xf6\xe1\xad\x23\x08\x86\x7d\x02\xf8\x6f\x1d\x23\xff\xe7\x82\x60\xab\xbe\xea\x1a\x14\x2f\x9d\xd8\x1f\x64\x61\x78\x4c\x46\x77\xae\xee\xfe\x2a\x5e\x1f\x00\x7c\x63\x6b\x11\xfd\x42\xed\x1f\x5c\x1b\x54\x8d\x42\xef\x06\x4a\xd6\x21\x21\xcb\x27\x29\xbc\xef\xda\x5a\x8b\x80\x17\x66\x06\x9f\xb4\xfe\xe8\x9a\x83\xaa\x56\xd6\x51\xaf\xe0\xcf\x84\x47\x2d\xf6\xba\x30\x56\x64\x61\xd4\x0e\xdd\x23\x18\xae\x11\xb4\x5e\x15\x4b\xf4\x21\xce\x4a\x43\x91\xb0\x8a\x2c\x0d\xa9\x1d\x32\xdb\x95\x65\x79\x4e\xf5\xa5\x62\x7e\x25\x8d\x2a\xa4\xca\x40\x25\xde\xc8\xc6\xbe\x02\xdc\xb6\xb0\x3d\x3b\x5d\x58\x2d\xfa\x81\x34\x6c\xf5\x73\x8e\xa0\x94\x3f\x1b\x4a\x79\xf6\x68\x63\x90\xd6\x8f\xd9\xcb\xdd\x52\xbc\xba\x9b\x69\xc4\xae\xa7\x8e\x04\x97\x49\x53\x43\xd2\xc4\x48\x70\x55\x30\x28\x2c\x5f\x03\xc8\x9a\x69\x6b\xe8\xc6\xae\x07\xb6\xad\x7e\xe4\x1f\x01\x6f\x6f\x19\xe8\x96\x13\x7a\x4d\xd0\x82\x1a\x4e\x74\xe9\x4a\xd0\x37\x9d\xe5\x36\xf5\x89\xa3\x4d\x55\xaa\x49\x0f\xff\xe0\x98\x90\x89\x5c\xc7\x84\x88\xc0\xd6\x66\xac\x8d\x6e\x8f\x46\xbe\xdf\x46\x63\x11\x49\xcd\x0d\x1f\x6a\x09\xb3\xb1\xa4\x1a\xb5\x17\x03\xdd\xf4\xa0\x54\xf4\x2d\x39\x05\x02\xb6\x2a\x8c\x18\x70\xa8\x19\x77\x71\x6b\x09\xb1\x7a\xd2\x29\x43\x18\xaf\xcd\x4c\x6e\x23\x7b\x36\xc3\x8f\x14\x98\x0b\x23\xa2\xb5\x1f\x74\xa3\x49\x0f\xf8\xf7\xc2\xfa\x0a\x28\x66\x2c\x9d\x33\x19\x05\x62\xfb\x91\x30\x96\x02\xbf\xa1\x12\x0c\x98\x11\x35\xe1\x53\x2d\xf9\xc2\x58\x52\x0d\xb2\x8a\x03\x4b\x0d\xb1\x35\x13\x65\x21\xa6\x11\x4a\xcf\x40\xdc\x32\x9a\xf6\xd7\x68\xd4\x9d\xd6\x2a\xae\xee\xb3\xa5\xe6\xa4\xf3\x0c\xa0\x24\x99\xd3\x5f\xea\x1e\xa1\xb6\xa3\x23\x5f\x0d\xe7\xde\xa0\xb0\x8e\x3b\xf0\xd4\x15\x78\xf7\xe3\x2f\x3f\xaf\xf8\xfd\xe1\xc3\x8f\x1f\x7f\xf7\xdb\x77\x1f\xcf\x7f\xf8\xdd\xff\x0b\x00\x00\xff\xff\xad\xd4\x5c\x38\xce\xf5\x00\x00") +var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\x5b\x8f\x25\x39\x92\x26\xf6\x3e\xbf\xc2\x94\x0b\xcc\x83\x04\x46\xd1\xcc\x78\x55\x5f\x16\xd0\xf4\x62\x20\x40\x21\x2d\xb0\xa3\x15\xf4\x24\x14\xba\xb2\xfb\x14\xe0\x53\x35\xde\xe5\x73\xa6\x15\xbf\x5e\xb0\xcf\x48\x3f\x7e\x22\x23\x3c\xf2\x52\x55\x93\x8d\x11\xba\x2b\x8f\x87\x3b\x9d\x4e\x1a\x8d\x46\xbb\xdb\x6f\xff\xf3\x5f\xff\x79\xa1\xeb\xfb\xbf\xfc\xf4\xfd\x8f\x3f\xfc\xee\x1d\x3f\xc4\x77\xf4\xd3\xf6\xed\x0f\xdf\x7d\xbb\xfc\xf8\xc3\xfb\xdf\xbd\xfb\xe1\xc7\x77\xff\xf9\xf7\x7f\xf7\xdb\xff\xe1\x0f\xff\xc7\x3f\xfc\xd3\xff\xfd\x5f\xff\x0b\xfd\x74\xfd\x33\xfd\xd7\xff\xf3\x7f\xf9\xdf\xfe\xd7\x7f\xa0\x77\xe1\x9b\x6f\xfe\x2f\xfd\x87\x6f\xbe\xf9\xc3\x3f\xfd\x81\xfe\xdb\x7f\xff\x47\xe2\x07\xfe\xe6\x9b\xff\xf2\xbf\xbf\xa3\x77\x97\x6d\xfb\x97\xff\xf9\x9b\x6f\xfe\xed\xdf\xfe\xed\xe1\xdf\xf4\xe1\xc7\xbf\xfc\xf9\x9b\x7f\xfc\xcb\xb7\xff\x72\xf9\xfe\x8f\x3f\x7d\xf3\xdf\xfe\xfb\x3f\x7e\x63\x0d\xff\xf0\x4f\x7f\xf8\xe6\xa7\xeb\x9f\x99\x1f\xbe\xdb\xbe\x7b\x47\xbf\xff\xbb\xdf\x5a\xd7\x7f\xfd\xe7\xe5\x87\x9f\x7e\xf7\xc2\xfb\x12\x63\xb4\xf6\xef\x7e\xff\x77\xbf\xfd\xe7\xf7\xdb\xb7\xdf\x7d\xbb\x7d\xfb\xfb\xdf\x7e\xb3\x5f\xfe\xdd\x6f\xbf\x7b\xff\xa7\x9f\x7e\xff\x77\xbf\xfd\xd3\x8f\x3f\x6c\xf4\xfd\x77\xbf\x7b\xf7\xe7\xe5\xff\xb5\x2f\xfe\xf8\xc3\x4f\xff\xcf\xe5\xdb\xe5\x4f\xcb\xf7\x3f\xfc\xf9\xa7\xbf\xbc\xff\xf3\xbf\x2e\xdf\xfe\xe5\x1d\x5d\x7e\xfc\xcb\xf7\x4f\xe1\xdb\xef\xae\xe1\xaf\xbf\x7b\xc7\x12\x23\x46\x60\xef\x86\x3f\x7d\xfb\xc7\xf7\xf4\xaf\x3f\x7c\xbf\xfd\x14\xfe\xe5\xfd\x5f\xc2\xfb\x7f\x9e\x0d\xbe\xfd\xe9\x8f\xef\x7f\xd8\x7e\xf7\xae\x97\xf8\x8e\xbe\x7b\x3f\xfe\x0a\x92\xe2\x3b\xfa\xc6\x86\xf5\xfd\x4f\x3f\x7d\xff\xc3\x9f\x03\x3e\x7c\xff\x85\x1c\x47\x1b\x7f\xf6\xd2\xd5\xbf\xfe\xf0\xfd\x1f\x7f\xfc\xee\xfd\xef\xde\xfd\xfd\x7f\xfa\xeb\x77\xbf\x79\xf7\xd2\x13\x7a\xf1\xee\xff\xf8\x8e\xbe\xfb\xdd\xbb\x47\x8e\x91\x72\x8c\x57\x89\xf1\x22\xb9\x2f\x81\x9b\x12\x37\x5d\x38\x31\x71\xe2\xc5\xfe\xb6\x9b\x57\xc9\xfd\x22\x31\x5e\x83\x35\x3b\xb6\x0a\xd6\x2c\xcc\x76\xd6\xcb\x35\x58\x77\x7b\x43\xbb\xbd\x84\xfb\xa6\xd6\xa3\x35\xb8\x58\xd3\xeb\xfe\xe5\x5b\xd3\xf9\x6d\xeb\xd2\x1a\x3e\xbd\x38\x8b\xff\xc9\x67\x11\x29\xc5\x78\xd5\x18\x2f\xf6\x9b\x62\xbc\xa8\x8d\x34\x8d\x1b\xc1\x9e\x84\x34\x6f\xd9\x9f\x68\x64\x7f\xbd\xdc\xef\xdf\xff\xa7\xbf\x7e\x1b\x5f\x06\xe7\xdf\xff\xa7\xbf\x1a\x56\xfd\xe6\x19\x36\x94\x2c\x27\xcd\xf9\x79\x73\xd6\x98\x4e\xda\xcb\xa7\x75\xaf\x9f\xd8\x7d\x7a\xde\x3e\xe9\x59\xf3\xfc\xbc\xb9\x4a\x39\x69\x5e\x9e\x37\x17\xae\x27\xcd\xeb\xa7\x35\x6f\x1f\xcc\xb5\xe8\x49\xf3\xfe\x41\xef\x25\x9e\x34\xff\xf6\x79\xf3\x7a\x02\x77\xf9\xd3\x27\x75\x9e\x3f\x68\x7e\x0a\xc7\x6f\xff\xf8\x9b\xbb\x3d\xba\xd8\x2f\xc7\x78\x61\xd6\x35\x52\xaa\x94\xf1\x67\x10\x6e\xb7\x67\x9a\x57\xad\xc4\xa5\x12\xb3\x90\xe4\xba\x32\x57\xdb\x4d\x24\x1d\xbf\xab\x24\xa1\x48\x9a\x93\xed\xb6\xbe\x96\x48\x81\xa3\x52\x29\x14\x24\xf6\x4b\xe0\xc6\x6b\xa4\x9c\x29\x48\x7e\xc8\xd4\xfb\x16\x8a\x3e\x64\x2a\x6d\x0b\x35\x93\x96\x87\xbc\x05\xeb\x5f\x1e\xf2\x1a\x24\x51\xa4\x90\xe5\x21\x5b\x37\x5b\x28\xb8\x52\xd9\x42\xb1\xb7\x43\xa9\x5b\xc8\xd1\x9f\xd6\x8b\x56\xdb\xe8\x11\x9f\xf4\x8d\xb8\x86\x42\x21\x15\xb2\x1f\xc6\x7e\x2d\xb7\x16\xe4\x4d\x3a\x85\x9a\x48\x8d\x3c\xa8\x6c\xfe\xad\xce\x5b\x11\x0a\x39\x3d\xe4\x2d\x77\x0a\xd2\xb7\x54\xec\x41\x7d\xc8\xab\x74\x8a\x36\x21\xd6\xcd\x46\x5c\x37\x9f\x40\x7d\xc8\x9b\xcf\xa9\x3c\xe4\x0b\xd7\xb4\x06\x35\xa2\x54\x85\x02\x4b\xa3\x20\xb5\xad\x36\x4e\x0a\x06\xb4\x20\x35\xe1\x6a\x0d\x12\xb3\x4d\x53\x25\x11\xe7\xb6\x06\x2d\x84\x31\x77\x62\x65\x83\x47\xca\x24\x31\x3f\x64\x5b\x8d\xfa\x2a\x4d\x11\x61\x19\x8b\x2a\x11\x44\xeb\xd2\x07\xe1\x0a\x7d\x10\xaa\xd7\x5f\xce\x7f\xfa\xe3\x73\x04\xc2\x09\xe1\x14\xf0\xe4\xc5\x02\xfa\x63\xcd\x02\x27\x4a\x3d\xad\x91\x42\x8b\x94\x01\x30\xd6\xba\xb1\x62\xb1\x72\xbd\xd4\x1c\x57\x96\x48\xd1\xe6\x43\xcd\x16\xbb\xd9\xdc\x0c\x76\xc1\xaf\xb6\xe0\x8f\x56\x5b\xb7\x48\xa1\xdb\x62\xa5\x35\xa4\x44\xdd\x40\xa7\xe9\x21\x13\x67\xe0\x89\x44\x5b\xfb\xdc\x0d\x55\x38\x1b\xe2\x05\x71\x8c\x43\x87\x1c\x1b\x6e\x3c\x64\x1b\x92\x64\x12\x0a\x5a\xd7\x60\xc8\xc8\x06\xfc\xd8\x1c\x89\x00\x63\x47\x32\x91\x87\xfc\xfa\x5c\x2b\x76\xbc\x83\x84\x63\x5c\x92\xc3\x79\x31\x78\xdb\x68\x70\x21\xe3\x81\x1f\x07\x76\x4e\x3f\x3d\x46\xb2\x63\xa1\xc4\xb8\xa8\x3d\x51\xbf\xc7\xd6\x47\xb1\x1b\x25\x2a\x2e\x4a\xd4\xf9\x4a\xc7\x9f\xfe\x02\x0e\x9c\x72\xb6\x7c\x35\xfe\x69\x5f\x05\xa0\xf2\xa2\xaa\xb6\x4b\x97\x20\xa2\x24\xa2\x4f\x8f\xdc\x2a\xa5\xa8\x8b\xd8\xe4\x85\xd3\x52\x38\x51\xe1\xb4\xd8\x1f\x24\x9c\x9e\x1e\x5b\xb3\xad\x7d\x6c\xd3\x3b\x75\x59\x59\xc9\xff\xaf\x02\xc8\x2a\xa9\x3e\xe4\x25\x70\x56\xe2\xac\x06\x7e\x7b\x1a\xec\x9b\xba\x05\xdf\x4d\xaf\x8e\xf6\x7d\xdc\x71\x26\x92\xcd\xf6\x62\xff\x2c\x21\x1b\x28\x72\x8e\x57\xfb\xc7\x4f\x59\xec\xe4\x16\xe3\x95\xc7\xb9\x9b\xf3\xeb\x50\x78\xef\x67\x1b\xc8\x5a\xa2\x96\x56\x6e\xd6\x1f\xb5\x42\xa1\xe6\x87\xbc\xb1\xd1\xb5\x87\xbc\x96\x4c\xc2\xc4\xb1\x53\xe9\x9b\x61\x96\xad\x4d\xc1\x0a\x70\xce\xd7\x90\x85\xd7\x50\x12\xb1\x61\x8a\x36\x0a\x75\x0d\xd5\xe8\x40\x19\x28\x42\xa1\xe9\xe6\x24\x2c\x30\xf3\x8b\x1f\x4a\x0f\x79\xad\x91\xc4\x96\x81\x8d\x42\xe8\x43\xde\x92\x5d\xf5\xfc\x90\xaf\x0d\x94\x90\x23\x85\x4a\x9c\x01\xd5\x4a\x62\x40\xad\xd9\x48\x46\x37\xa8\x1a\xae\x18\x0d\xb1\xcf\x5a\x13\xbb\xe8\x0f\xf9\x1a\x4a\xeb\x3e\xc2\x3a\x47\x48\x63\x88\xf9\x36\x44\xb9\x0d\x51\xce\x80\xa6\x93\x6c\x28\x95\x6e\xe4\xdf\xd0\x98\x93\x90\x26\xd9\x34\x89\x5d\xe3\x37\xd8\x85\x3d\x08\x9a\x64\xc5\xce\x14\x0a\x15\xdb\x8c\x77\xd4\x5e\x2b\x85\x46\x36\xb0\xe6\x23\x6e\x46\x74\xbb\x6d\xb8\xbe\x06\x8c\x35\x18\xc0\xea\x66\x3f\x75\x09\x03\xc5\xd7\xc0\xdc\xf7\xee\xec\xc2\x68\x63\x04\x6d\x1c\x83\x08\x63\x54\x4f\x8f\x5c\xcb\x18\x6c\x60\x2d\xa0\x0d\xa2\xba\x89\x26\x0a\xbd\x6e\x62\xf8\x09\x52\xbc\xd9\x3f\x84\xbf\xb7\x70\xbc\xbe\x35\x21\xfb\xc3\xdf\x0b\xa3\xa3\x33\x70\xe5\xc3\xd1\x59\x9b\xd1\xbb\x92\x48\x1a\xb1\xe8\x56\xd5\x08\x83\x61\x40\x34\x42\x55\xd2\x66\x73\x12\xdc\x11\x9b\x48\xdb\x9f\x05\xfc\xac\xa9\x91\x51\xfa\xd8\x8d\xae\x45\x6b\x66\x28\xa2\x6d\x63\x06\x79\xf2\x77\x23\x56\xb4\xa4\xad\x32\x0e\x2f\x3b\x6c\x80\x15\x80\x40\xae\xb6\xf5\x7c\xa5\x41\xcd\xba\x91\x37\x49\xc0\x2a\x71\x42\x2c\x4e\x13\xb3\x01\x2c\xfb\x2e\xb6\x53\x06\x07\x55\x11\x6a\xd6\x26\x19\xb6\x70\x4d\xf6\x0c\xe3\x19\x0d\xd1\x05\x7a\x20\xf4\x3d\xba\xc6\x27\xf1\xc5\x33\x70\x95\x49\x98\xaa\x50\xb3\x43\xb8\xf6\xc5\x3e\x6d\xe4\x51\x70\xe5\xbc\x74\x95\x25\x68\x13\x1c\x94\x0b\xa7\x4c\x21\xa5\x6e\xb7\x12\x49\xcd\xfb\xb3\xec\x2f\xa7\xfa\xf4\xc8\xa5\x51\xe5\x45\x88\xcf\xbe\x5f\x7f\x8d\xef\x3f\x8a\x56\xaa\xc6\x47\x75\x9c\x2e\xb2\x84\xaa\x14\x44\xca\xc2\xdd\x70\xd7\x9e\xe4\x21\xa3\xd4\x44\x22\x7d\xe1\xae\xf6\xe0\x12\x44\x6d\xd7\x57\x12\xb6\x87\x86\xfe\xcc\x76\xf7\x15\xb9\xc4\xa7\xd5\x76\x0a\x1a\xaf\x9c\x14\x47\x8e\xe4\x6a\x84\x72\x0d\x5a\x6d\xd7\x14\x43\xa0\xea\x4b\xc5\x58\x41\x23\x3c\x12\xa3\x11\x1e\x49\xd4\x1a\x09\xcb\x26\x2c\xd4\x1a\x7e\x42\x6b\x5b\xc3\x00\x04\x72\x16\x90\x8b\xc9\x5f\x0f\x78\x7f\xf3\x6e\x83\xf5\x0b\xfa\xec\x87\x9d\x7d\x3a\x70\x9a\xc7\xd7\xc9\xc0\xfb\x71\xe0\x3c\x88\xff\x35\xe0\x72\x9c\x7d\x3b\xc3\x39\x08\xbf\x7d\x06\xdf\xf2\x47\xfa\xfa\xa3\xfc\xfa\xa3\xfa\xfa\xa3\xfe\xf2\x23\x1d\xc3\x28\x53\xa4\x2b\x43\xca\xf3\x47\xe5\xe5\x47\x1c\x5f\x1d\x3d\xf9\xc3\xd7\xc7\x7f\x36\x81\xb3\x19\xbc\x36\x85\xd7\x97\x81\xe3\xbe\x0c\x19\x53\x30\xb2\x6f\x92\xb1\x11\x1f\x5b\x66\x30\x6d\xf6\xa7\x49\xb9\xab\x30\xd8\x7a\x60\x41\xc2\x01\x07\x4e\xdc\xf0\x29\xf8\xcb\x41\xd8\x9f\xf9\xed\x2d\xdc\x5a\x43\x16\x5e\x03\xfa\x08\x7b\xbf\x5b\xd8\x3f\x66\xcc\x50\xf9\x75\x86\x41\xe7\xe3\x28\xf1\xeb\x80\x07\x98\xc1\x9f\x61\x20\xf4\xa5\x23\x39\xc1\x20\x3e\x62\x90\x9c\x0d\x54\xde\x18\xa8\xbc\x0d\x31\x79\x1b\x83\xd2\xaf\x33\x8c\x37\x30\x28\x52\xfb\x1a\xc0\x91\xe2\x2f\xb4\x2c\xf4\x19\x03\xf9\x95\x56\xe6\xed\x81\x7c\xe1\xd2\xd0\xcf\x33\x92\xf6\x4b\xad\xcd\x67\x8c\xe3\x63\x96\x86\x7e\x95\x91\x7c\x0d\xdb\xe6\x84\xda\xc9\xd7\x47\xed\x46\x2f\x87\x4e\x0e\x7d\xdc\x8f\xe2\x36\x08\xbd\xf1\x80\xfb\x08\x0e\x03\x78\xf9\xfb\xde\x6c\x0b\xcf\xa6\xf1\x37\x45\xed\xea\xcf\x40\xed\xea\xcf\x42\xed\x3e\x6b\x24\x9f\x31\x90\x37\x97\xe6\x7c\x20\x1f\x47\xed\xde\x1a\xc9\xc9\x96\xda\xf5\x0e\x9d\x52\x4e\x4b\x32\xe9\x3f\x49\x5c\x1a\x37\x6a\x12\x17\x13\x43\x4c\x42\x59\x42\x89\x95\xec\x9f\x25\x48\x2c\x24\xf1\x75\x2d\xe8\xfb\xc8\x69\x97\xcf\x0b\x29\xb7\x45\x9a\x90\x34\x59\xc2\xbc\x98\xdd\x0a\x24\xba\x26\xcb\xf1\x41\xc0\x07\xef\x1e\x05\x7f\xfb\xee\xe1\xde\xa1\xfd\x73\x36\x9a\xfc\xff\x2b\x57\x3e\x50\xae\x4c\xf1\x09\x96\xc1\x29\xb5\xc8\xd4\xf7\x41\x7a\x91\xa3\x1c\xe3\x86\xbc\x29\xda\x9c\x41\xbb\x1c\xa1\x9d\x3e\x0d\xda\x3c\xc1\x23\x0e\x6d\xe9\xdd\xa0\x5d\xcf\xa0\xdd\x1c\xda\x0d\xd0\x6e\x5f\x02\xed\xf4\x06\xb4\xeb\x0e\xeb\x1b\xa4\x77\x38\xd7\x1d\xc8\xf4\x01\x94\x19\x66\x4a\xd9\xad\x94\xe7\xe2\x39\xd7\x03\x04\x5d\x53\xd0\x94\x38\x66\x52\xe5\x4d\xaa\xed\x1c\x5b\x94\x52\x56\x58\x76\x42\x36\x4a\x50\xec\x9f\x9c\xb7\x50\x6c\x43\x08\x88\x06\xd7\x4a\x2c\x46\x33\xa2\x6c\x1a\x61\x06\xc9\xb8\xb0\x5f\x7b\xa2\x51\xa0\x89\x88\x64\xef\x89\xc4\x0d\x3d\x71\xce\x57\xeb\x9f\x4b\xf5\x07\x15\x1b\x2f\x6e\x36\x8a\xa0\xca\xe8\xdd\xc0\x0e\x7d\x55\x90\xa9\xe8\x82\x89\x37\xd9\x52\x40\xfd\x65\xe0\x11\x50\xad\x04\xaa\xe5\x7f\xf8\xb5\x35\x41\x0b\x7b\x0b\x2f\xa1\x2f\x6f\xf2\xf4\x98\x4d\xda\x7e\xe3\x80\xe5\xb3\x03\x36\xbd\x71\xc0\xf2\x4b\x07\xec\xfd\xf9\x7a\x66\x3f\x7e\x1f\xb9\x1d\xb4\x90\x8c\xcd\xa3\x73\xa3\xb8\x7d\xc1\x4e\x00\xbe\xe6\xb9\xb3\xf2\x78\xfa\xf4\x58\xf1\xa0\xcd\x07\x6d\x7f\xe0\x9a\x8b\x2b\x34\xf2\xbe\x1b\x65\x3e\x3b\x19\xc8\xd4\xe7\x48\x31\x64\x33\x90\xa9\x52\xa1\x50\xd3\xc2\xd0\x1d\xb5\x45\x28\x94\x95\x13\x85\xd4\x49\x1b\x85\xae\x8b\x61\xce\x12\x1a\x70\x3e\xad\x29\x53\xc8\x1d\x68\x16\x38\xe6\x85\x55\xa9\xf1\x62\xb0\xc0\x33\x29\xd4\x13\x05\xed\x76\x4b\x16\xeb\x83\x33\xaf\x29\x52\xc8\x54\x13\x85\xbc\x4a\xa5\x68\x97\xd9\x9e\x72\xe6\xa5\x90\xac\xa9\x10\x2b\x75\x25\xbc\xa9\x0b\xdb\x26\x69\xbc\xe6\x42\x29\x11\x47\xfb\xcf\x87\xc1\x9a\x16\xa5\xbc\x4a\xb2\x27\xda\xa9\xeb\xc2\x54\x16\xce\x42\xda\xd6\x4c\x29\x92\x7d\xca\x56\xb5\xe1\xab\xba\x04\x7f\x48\x4b\x60\xb2\xed\x50\x08\xf3\xc5\xbb\x41\x29\x2f\xde\x2f\x8c\x57\xb9\x41\xe1\xeb\xdf\x1b\xc3\x58\x42\x26\x5d\x61\xde\xcb\x06\x14\x1b\x65\x28\xc4\x4b\xc0\x14\x64\x0d\xf8\x68\xb0\x59\xad\x01\x13\x0c\x98\x2c\x1a\xd8\xd7\xad\x87\xc0\x6b\x80\x56\xd7\xf6\xbf\x03\xc9\xee\xda\xf0\x00\xc5\xd5\x20\x1b\x52\x05\x64\x1d\xbc\x03\xec\x36\xc8\x60\x3d\x67\x7f\x3e\x96\x26\xd8\x72\xd9\xe4\xb0\x78\x6e\x43\x6d\xb0\xa1\x56\x23\x2a\x2d\xdb\x3a\xd3\x1a\xa9\x35\x2a\x6a\xb0\xde\x0c\x10\x45\xf1\x13\x8a\x6e\x45\x7d\x7d\x22\x85\xd6\xed\x0e\x06\xbb\x85\xf9\x3c\x8c\xf6\x01\xaf\x9f\x1d\x9f\x12\x8f\x68\x1e\x25\x5f\xb1\x2b\x39\x52\x85\xaa\xda\x36\x9d\x5d\x55\x63\x34\x6b\x86\xf6\x33\x12\x0c\xd2\x76\x37\x3e\xe4\xcd\xfe\xc1\x9f\x17\x23\xcc\xc9\xf6\x1c\x6e\x05\xbb\xb7\xa1\x5d\xb0\x1b\x7e\xd2\x48\xcd\x2b\x1b\xa1\x46\xb7\xc1\x3e\x80\x0b\xfb\xd3\x36\x91\xd3\x9e\x71\xcc\x6e\x7e\xd4\xda\x76\xce\xa0\xf9\xb6\x42\x76\xec\xda\x61\xc1\xed\x09\x86\x58\x3b\xc4\xda\x30\xc6\xda\x66\xb3\x1e\xec\xac\x19\x5f\xe6\x2d\xf8\x70\x34\x0e\x66\x0a\x43\xf4\x9b\x1a\xed\xf8\xc4\x54\xf8\xa6\x8f\xb4\x1e\xeb\x7e\x3e\x56\xdb\xba\xf9\x8d\x47\xd3\x7c\x36\x2d\xe3\x43\x75\x58\x5f\x7f\xad\xbf\xfa\xe8\x64\xb5\xa6\x4a\x88\x0d\x45\x96\x92\x0b\x95\x94\x96\x92\x12\x85\x92\xd2\xa0\x4e\xe5\xce\x4d\x46\xef\x3c\x67\xca\xdb\x04\x47\xe4\x80\x12\x92\xaf\xcc\x8e\x12\x4c\x06\xf3\xcd\xc0\x7f\x49\x35\x3b\xc5\xc3\x89\x57\x6a\x7e\x79\xd9\xda\xcb\xab\x66\x50\x69\x4e\x50\x77\xbe\xeb\x72\x6a\x3e\x7f\x1f\x65\x32\xb3\x69\x1e\x9b\x45\xa8\x45\x92\xde\x37\xe1\x4a\xc2\x75\x93\xde\xa9\x45\xfc\x04\xfb\x85\x1b\x00\xd7\xad\x39\xb3\xb1\x85\xfd\x62\x7f\x14\x66\xe3\x30\x5e\x0e\xb3\xb3\xe0\x9d\x3f\x3d\x72\x2b\xe3\x93\x81\x2b\x93\xdb\x8f\x82\x74\x01\x76\x0f\xb3\x36\xef\x7f\xf8\xb5\xb7\xf2\x46\xe1\xee\x8f\x63\xab\x70\xf7\x7e\x38\x76\xed\x78\x95\xc7\x2a\xda\x52\xb8\x27\xd4\xce\xc5\xbd\x05\xaf\xb4\xdb\xab\x8d\x2f\x5a\x92\x32\x8d\x83\xa7\x2f\x10\x38\xa0\x25\x2f\xc6\x65\xbb\xc6\x5c\x62\x43\xab\x71\x2a\x65\x6d\x8b\x6d\x15\xa0\x8e\x24\x59\x8c\x58\x3a\x22\x65\xed\x4f\x8f\xa9\x35\x28\xd3\x45\xd2\x62\xb4\x13\x6b\xc8\xf5\x74\x4c\xf9\x60\x9a\x80\x4d\xa8\x9b\x10\xd2\xe7\xf7\x23\x4e\x53\x9d\xa7\x29\x6c\xd6\xf6\x14\x43\x4d\x7d\xe2\x31\x63\x6b\x35\x56\x02\x7b\xeb\x54\xc9\xbe\x9d\xdf\x52\xca\x4b\x39\xec\x1f\xb7\xd2\x08\xa5\x3a\x98\x3d\x37\xc0\x71\xe7\x8d\x3b\xbb\x39\xce\x98\x43\x34\xc0\x45\xc0\x95\x3d\x1c\xe6\x3e\x7f\x23\xd8\x2b\xe8\x05\x7c\x65\x38\x5c\x1e\x1a\x84\xc3\x7b\xe1\xd6\x5b\xd8\xbf\x10\x6e\x5f\x0d\xb7\xa1\x84\x39\x3c\x43\xc4\x76\x43\x44\x1b\x3b\x88\x1c\x6f\xe2\x1d\xfb\x85\xfd\xda\x13\xc1\x27\xe7\xc5\x78\x42\x7e\x85\xc6\x61\xbe\xff\xf4\xa8\xd9\x8d\x2d\x9c\x9d\xc9\x99\x3c\x8e\xdd\x58\x82\xe4\xe1\x51\x71\x02\xd7\xfa\x1f\x6d\x73\x0e\x90\x2d\x06\x1c\x23\x61\xcb\x84\xd2\x25\x18\x14\xc3\xce\x2b\xce\x5b\x67\xd0\xbb\x99\x1a\x25\x5f\x53\xcd\x70\x73\xb1\x33\xa1\xc1\xe0\x69\x82\x8e\x5d\x18\xc6\xbc\x42\x68\x41\xa3\x5f\x39\x1f\xe7\x56\xca\xee\x43\x63\xfb\xcb\xae\x65\xee\xb0\x5e\xd1\x24\x94\x58\xce\x06\xd9\xbf\x8a\x25\x96\xdb\x12\xeb\x61\x81\x6f\xcb\xbb\x2f\xae\x49\xd7\x5c\x99\xbe\x80\xfa\x6a\xaf\xd7\x14\x99\x16\x81\xc8\x77\xba\x05\x34\x3e\x97\xeb\x20\x42\x1d\x25\xa8\x5d\x80\xda\xe5\xa7\xa3\xf8\x74\x90\x9e\xa6\xf0\x34\x65\xa7\x9b\xe8\x04\x54\x9a\xc2\x5f\xd8\xa5\xbf\xb0\x8b\x7f\x61\xca\x7f\x61\x08\x80\x53\x10\x9c\x82\xe1\x6a\x22\x70\x24\x49\xc5\x39\x64\x77\x52\x48\x65\x3a\xdf\xda\x1d\x77\x55\x58\x03\xe7\x0a\x0a\x19\x34\x1b\xcc\x64\xc5\x94\x22\xdd\x8b\x7d\x73\x36\x74\x14\x11\x0f\xf3\x3e\x03\x1a\x7f\x20\x0c\x4f\x98\xdd\x40\x36\x21\x76\x03\x98\x35\x58\xb9\x37\xc8\x86\xee\x8f\x03\x87\x02\x4e\x79\x1c\x11\x36\x11\x4e\x95\x38\x55\x1b\x34\x30\x35\x48\xaa\xd4\x6c\x9b\x54\x70\xfa\x37\x98\x4d\x38\xfa\x46\x05\xdf\x33\xce\x27\x87\x87\x81\x3a\xd5\x95\x61\xc0\x37\xd8\x55\xfb\x5d\xbd\x9f\x67\x02\xf7\x65\x2e\xd0\x47\xc8\xcf\x74\x27\x40\xaf\xc1\xa7\x34\xa1\x7d\x06\xb7\x23\x8b\x16\x2f\x0c\x15\x8f\xcc\xb3\xf1\x3a\xac\xfc\x93\x39\xee\x93\x39\xee\xc3\x55\xd1\x39\xdd\xa9\xf2\xb9\x29\x81\x76\xa3\x7c\x7a\xfd\x51\x79\xfd\x51\x7b\xf9\x51\xf6\x6f\x5d\xf2\x64\x8f\xf3\xce\x1e\xe7\xc3\xb7\xf2\xfe\x56\x9e\x8f\xca\x8b\x8f\x08\xcf\xda\x8b\xcf\x4e\x40\xa6\x47\xcf\xc2\x6b\x39\x93\x63\x38\x4e\xbd\x6e\x13\x32\xb1\x39\xf1\xc6\x89\x29\x77\x88\x38\x4d\x4c\x7c\x31\x11\x23\x77\xb8\xaf\x72\x62\x57\xa8\xf1\x1b\x02\x50\xf9\x40\x3a\x89\xf0\x3a\xdb\x5b\x63\x79\xee\x24\x14\xf4\x11\xf6\x51\x0e\xc5\xf3\x94\x36\xf2\x9b\x66\x06\x7a\x4b\x0d\x72\x7e\x36\x69\x3a\x62\xda\xf0\x27\x39\xb8\x93\x1c\x30\x66\x2d\xb6\x62\xc3\x8d\xc9\xf6\xac\xdc\x44\x48\x23\x22\x46\xd0\xb8\xdb\x46\xdb\x98\xb1\x43\x36\x8e\x4a\x49\x36\x30\x27\x06\xa0\x8c\xc9\x9b\x54\x0b\x2f\x2c\x77\x8a\x19\xce\x7b\xce\x49\x39\x38\x58\x1b\x61\xe3\xaa\xc1\x25\xc5\xcd\x5d\x67\xfc\x5e\xd4\xd9\xac\xcc\xd7\xaf\x6f\x21\xc7\x8d\x31\x95\xfd\x88\xf5\x13\xd6\x0f\xd8\x1c\x57\x1c\xae\x38\x5b\xed\x68\xb5\x73\x1d\xfc\x63\xf5\xb5\x16\x78\x12\x73\x83\xf7\x6c\x01\xc3\x91\x32\xe5\x8a\x9f\x90\xeb\x78\x14\xfc\xd9\x58\x70\x7b\x07\xac\xc2\xa7\x7c\x91\x0b\x05\x38\x8f\x89\x54\x83\x00\x13\x0f\x46\xc6\x8f\x36\x35\x76\x4f\x2a\x25\x47\x1c\xa9\xde\x7c\x3e\x0f\x68\xc0\xe0\xf3\x71\x63\xf3\xde\xac\xe5\x50\x6c\xb9\x93\xed\x35\x15\xec\x00\x2a\xc4\x69\xe3\x44\xe5\xc2\x25\xae\x0d\xb8\x4f\xa1\x6c\x38\x37\xae\xc1\x9b\x05\x57\x60\x30\x5c\xdb\x28\x94\x4b\xb0\xc6\x01\xf4\xcc\xde\xdd\x82\x75\xe3\x86\xc8\x5f\xa8\xef\x93\xe5\x2d\xbf\x39\x84\x9a\x5c\x76\xb1\x53\x5c\x73\xe0\x5a\x65\xd7\x88\xeb\xee\x66\x54\x9a\x9d\x44\x7d\x8f\xa5\xd9\x03\x5b\x2a\x53\xe5\x5b\xf0\xcc\xe1\x76\xa8\x7c\x08\x95\xb9\xc5\xcc\x1c\x1f\xed\x5d\xd9\x3f\x67\x63\xae\x9f\x31\x66\x08\xd6\xb9\x2e\xa5\x53\xd6\x95\x8d\x4f\x64\xcd\x84\x0b\x65\x47\xb3\x02\xed\x7a\xc1\x81\xb7\x84\x52\x29\xa7\xb5\x15\xb2\x2d\xd9\x0a\x49\x6a\x86\x64\xc6\x14\x74\x25\xc9\x67\x86\x20\x6d\x87\x21\xf2\xf5\x38\xcc\xa9\xf8\xf4\x61\xce\x51\xda\x00\x85\x5a\x6e\xa7\x03\xac\x71\x1f\xa0\xfa\x00\xf3\x0b\x03\xcc\xfb\x00\x1f\x5b\xeb\xd4\x33\x2f\x76\x2a\xaf\x7e\xca\x66\xa3\x28\x4a\x41\x93\xab\xfd\x9b\x4d\x1a\xc4\x47\xfb\x62\xbc\x73\x5b\x8c\xc4\x94\xb2\x14\x6a\x2b\x27\x21\xae\x0d\x76\x8c\x14\x6d\xff\x8b\x02\xb7\x12\xa5\xd8\x96\x50\xa8\x9d\x81\xe1\xe0\x70\x87\xe3\x28\x3f\x37\xa8\x1c\x6c\x2c\x7e\xb8\x0d\x71\x6b\x34\x39\x9e\xb6\xfb\x2b\xba\x9f\x94\xe5\xe0\xb1\x87\xdb\xba\x47\x45\xe9\x7c\xd4\x5e\x7e\x24\xaf\x1f\xf3\xf2\xba\x5b\xde\x54\x3c\xf0\xb1\x43\x39\xbe\x7e\x6f\x34\x22\xbf\x37\x3f\xb2\xeb\xb4\xe1\x64\xf5\xe2\xc7\x8b\xcf\x66\xdc\xbf\x13\x39\xf5\xd0\xc3\x6e\xb6\xca\xbb\x07\x20\xfa\x6d\xaf\xcf\xb8\xef\x9f\xd4\x3b\x45\x09\x1e\xf4\x97\x41\xc1\xfc\x2a\x98\x5e\x5f\xf5\x74\xf3\xef\x3b\x18\xd9\x0e\xe0\xd9\x19\xc9\x17\x06\x73\x58\x97\xdb\x17\x8f\xfc\x52\xbc\x76\xf6\x07\x9d\xef\xd9\x28\x7f\x47\x6e\xef\xec\x26\x87\x17\xde\x69\x67\xdf\xe9\xf3\x1d\x99\xef\xdc\x8c\x14\xaf\x7d\xe8\x04\x1e\x37\x6f\x35\x17\x56\x5d\x56\x7d\x51\x91\x9c\x6a\x5a\x6c\xc4\x10\x6b\x47\x54\x02\x3e\x9d\x1a\xf5\x0c\xb3\x68\x12\x12\x93\x7b\x79\x55\xb0\xea\x54\xd9\x75\xb8\x1b\x2e\x34\xae\xd2\xc9\xff\x5f\xa1\xdf\xa0\xca\xab\xb5\xb3\xe6\xa3\xc9\x16\xe6\x4b\xab\x35\xd8\xff\xab\x67\x74\x37\xed\xac\xf5\xfd\x3c\xee\xb5\x9f\x1f\x33\x7e\x1f\x89\x8d\xd3\xc7\x3f\x46\x6f\x63\x57\x13\x6d\x09\x77\x37\x7f\x88\x11\xfa\x1b\x63\xe4\x3e\x6e\x8d\x3e\x66\x7f\x64\x0b\x3d\xd4\x78\x1c\xe3\x0b\x63\xb0\x2b\xca\x71\x49\x19\x6e\x12\x67\xf3\xd4\x7b\xc6\x2e\x4a\x5e\xb8\xda\x4a\xe5\x4b\x17\xd7\xa4\xc5\x5b\x30\xd7\x40\xee\x9a\x0f\xf7\x2e\x35\xef\xc8\xd1\xcf\x91\x23\x1d\x02\xa7\xc6\xe8\x52\xc2\x6f\x48\x49\xa7\x8a\x59\xe2\xce\xc8\x4e\x36\x36\x23\x3a\xe5\x19\x0f\x7b\xe0\x60\x8d\x11\xcd\xa7\xeb\x99\xef\xf8\xfe\x3a\xb4\x1e\x3c\x4f\xcf\x32\xfe\xd8\x6d\x72\x75\x12\x1f\x99\xa1\x31\xe1\x46\xd1\x24\x2b\x35\xe9\x8b\xf1\xa8\x2c\xe9\x92\xbb\x2c\xc5\xe4\xbf\xb4\x84\x9e\x48\x53\x59\x83\x10\x8e\x35\x63\xdd\xdc\x47\xe0\x12\x12\xb4\x33\x71\x68\x67\xe0\x3b\x80\xcb\xa7\x47\x69\x4c\x92\x96\x61\x8f\x12\xdb\x2f\x08\x66\xe1\xba\x31\x78\x7e\x3b\x51\x86\xc1\xc4\x25\x86\x8d\x9d\x2d\xae\xc3\x4a\x67\x6f\x79\x20\x8b\xdf\xde\x02\x03\x4a\x15\x14\x93\xf6\xef\xda\xcd\xba\xa1\xd5\x49\x90\xdb\xfb\x98\xca\x91\xb0\x0d\x71\xe5\x20\xad\x1c\x84\x15\x5b\xfa\x83\xbc\x73\x13\x77\x20\xed\xec\x22\xd6\x4d\x7a\xd9\x6e\x32\x8d\x6b\x32\x42\x22\x9b\x04\x14\x34\xec\x21\x0f\x94\xda\x16\xb2\x52\xe1\x2d\x94\x8e\xbf\x9a\x8e\xe7\xc3\x53\xc9\xc5\x23\xf8\x86\x8c\x4e\x0d\xf9\xb7\x90\x05\x22\x59\xd0\x44\x08\x5b\x5c\x02\x5c\x4a\xe2\xfc\xd6\x4d\xaa\x0a\x07\xb1\xea\x26\x9b\x3d\xd1\xa3\xe6\x62\x67\x1f\x28\x57\xa4\x6a\x7c\x81\x6c\x5c\x85\xc6\x4f\xa8\xb2\x21\xe2\xb0\xca\x16\xf6\x8b\xf9\x24\x8c\x96\xc1\x5f\x7c\x7a\x4c\x3d\x8d\xee\x42\x4a\x64\x4c\x77\xcd\x5b\x35\xcc\x65\x04\x37\xf2\xa6\x4c\x15\xf1\x03\xf8\xf1\x7b\x61\xb4\x08\xfe\x82\x93\xea\xfa\xa9\x07\xd4\x64\x20\xb3\x52\xbc\x68\xc9\xd7\x52\x76\x18\x18\x8e\x6e\x6e\x2d\xde\xc0\xce\x76\x21\xd1\x74\xd1\xce\x0b\xe0\x2a\xb2\x42\xd0\x30\xe1\xc5\x60\xd4\x1a\x00\xed\xca\x0a\x05\xbc\xca\x25\x71\x45\xa7\x9a\x88\x61\x39\x4d\xba\x1a\x82\x3b\xa3\x65\x92\x9d\xed\x5b\xad\x30\xba\xea\x12\xb4\x65\xea\xbd\x5d\x60\x04\xd5\x0e\x46\x34\x16\x84\xa1\xc2\x02\x6a\xeb\x57\xf3\x8a\x55\xb3\xff\xd4\x24\x39\x03\x0e\xa2\x5b\x97\xc0\xb6\x58\xf6\xe5\xa7\xc7\xc4\x85\xb2\xf0\x62\x6c\x5b\xca\x75\x71\x2d\x56\x5c\x20\x1e\x29\xd7\x4b\xd0\x14\xe9\x0c\x3c\xed\x8e\xfe\xb5\x6e\x88\x3c\x84\x39\x95\x89\xc8\x05\x91\x64\x52\x87\x55\x9a\x49\x81\x37\x90\x35\xcb\xd8\x69\xe2\xe7\x8f\x89\x27\xa9\x43\xf0\xbe\x56\x5e\x12\x54\x8f\x33\x1a\x93\x15\xa1\x1f\x1d\x21\x2b\x0d\x51\x1f\x79\xe0\xbd\xcb\xb9\x5b\xb0\xfe\x6b\x1a\x41\x3f\xd3\x36\xd0\x28\x48\x73\x34\xae\x6b\xa3\xa0\xe4\x4a\xca\xbe\x19\xbc\x20\x73\x16\xe0\x73\x6e\xc3\x02\xd1\x21\x7b\x8e\x70\x92\x0e\xe9\x29\xc1\xf6\x1f\x46\x50\x27\x7c\x72\x8c\xe1\xde\x02\x17\xf1\x88\xa9\xa1\x73\x49\x83\x0e\x72\xe1\xb5\x75\x23\x39\xd9\xb6\xa3\x7d\x24\x11\x1b\x54\x56\x63\xa2\xc8\xe3\x84\x39\xbb\x2e\x01\x81\xa8\x65\x28\x27\xfb\x90\x44\xd2\x0c\xa7\xd0\xbe\xd6\x62\x5d\x69\x24\xc8\xbe\xd9\xba\x6a\xe8\xca\x30\xad\xd9\x9f\xd1\x0d\x21\x1d\x1f\xbb\x06\xad\x67\x91\x39\xa9\x1f\x0f\x93\x6b\xae\x6b\xad\x76\x38\x23\x72\x35\x59\x57\x08\x5e\x6e\x46\x00\xb8\x2a\xb5\xd4\x8d\x80\x66\xc4\x28\x93\x81\xb8\x1b\x52\xae\x86\x94\x76\xcb\x96\x10\xee\x55\x7e\x71\xcd\xf5\x92\x24\x2f\x46\x4b\xea\x0a\x1c\x6c\xe4\x7e\x37\x50\x44\x18\xa6\x69\x9d\xb4\x43\x8d\xc6\x57\xe7\x32\x8c\xe0\x00\xec\x8b\x07\x24\x37\xc9\x1e\x62\x98\x05\x62\x6d\x93\xad\x5b\xc3\x72\x0d\xb9\xbe\xa5\xaf\xca\x71\x0f\xab\xca\x58\x94\x9a\x61\xe5\x0e\x35\x2f\x2c\x99\xb8\x54\xfc\x06\x2e\xd5\x6e\xba\x9f\x49\x05\xcd\xf3\xbb\xae\x98\x99\x21\xca\x9c\xe3\xa5\x0e\x1b\x4f\x18\xc2\xc5\x0a\x36\x24\x34\x5f\xe3\x80\x78\x38\x63\x3e\x3c\xee\xcc\x36\x9e\xcd\x11\xb3\x46\x14\x38\x0f\x19\xa6\xe5\x71\x80\xe6\x49\x8a\x86\x08\xb3\x78\x88\xd0\xb5\xe5\x38\x48\xb5\x7a\x84\xb9\xc7\x90\x6f\xd0\xed\xe4\x3d\xb4\xcd\x4f\xf2\x36\x18\xbb\x80\x8b\x04\x74\x4c\xfd\xe9\xe5\xcc\x17\x0e\x9b\xc9\x6b\xaa\x52\xe6\x05\xf1\xf2\xc6\xb2\xd4\x7c\xb1\xf3\xda\x20\x54\x5c\x3d\xbe\x84\x79\x75\xad\x79\x9c\xe6\x46\x50\x3d\x28\x89\x3f\x1e\x32\xf7\x70\x49\xf1\x05\xa8\x94\xb7\xa0\x52\x5e\x83\x0a\xc0\x7c\x02\x97\x09\x95\x53\x86\x2e\x1f\x1d\xa8\xe1\x58\x15\x77\xc7\xaa\xe9\x56\x95\xa1\x2a\x3e\x7a\x55\xed\x3e\x55\xc3\xb3\xe3\xc4\xa3\xea\x23\x5c\xaa\x78\xc4\x62\x9f\x0c\xa0\x7d\xee\xf7\x3f\x64\x03\x9f\x7d\x9e\xf6\xef\x97\x33\x00\xc4\xcf\x06\x40\xfc\x68\x00\xf4\x93\x01\x94\xcf\xfd\x7e\xf9\x08\x9f\xf1\x73\x96\x20\xeb\x57\x83\x22\xa7\x4b\xf4\x0b\x0e\x60\x22\x89\x9d\x1d\x67\x68\x5a\x3f\x77\x08\xcf\xdd\xb5\x5f\x03\x01\xf4\x2f\xbf\xda\x00\x3e\x0d\x4d\xd2\x31\x14\x83\xcf\x1c\xdc\x9f\x2d\xd5\x87\xae\xf6\x1c\xe7\x14\xf7\x01\xec\xee\xed\x2f\x2d\x18\xdf\x7c\xdb\x9d\x4a\x97\x37\x87\x10\xbf\x70\x08\xcf\xb7\x35\xef\xd0\xb2\x31\xa8\x23\xca\xf9\x18\xda\x97\x0d\xe1\x39\x69\xbb\x03\x42\x76\x44\x39\x1f\x40\xf9\xb2\x01\x94\x0f\xa2\xee\x0e\x23\x38\x41\x94\xfc\x95\x20\xca\x47\x2c\xd1\x2f\x30\x00\xba\x1b\xc1\xdb\x88\xfa\x0b\x83\xe0\x4d\x24\xf9\x39\x06\xf0\x59\x68\x52\x3e\x1e\x4d\xbe\x78\x2f\x7f\x19\x92\xfc\xdc\x9f\xff\x54\x14\xf9\x45\xa7\xff\x36\x82\xfc\x92\xd3\xd7\xf8\xf6\xf2\xff\x92\x74\xf4\x57\x22\xe4\xaf\x6f\x10\x77\x9f\xf8\xf7\x06\xc1\x9b\x48\xf0\x45\x03\xa0\xf3\x11\x9c\xd0\x88\x7a\x73\x57\xe5\xdd\xfa\x24\x91\x5d\x9a\x2b\xbb\x34\x57\x6e\xd2\x9c\xc4\xe1\xb3\x3d\xcc\x2f\x07\xeb\xd4\xc1\x8e\x75\xce\x88\x47\x4c\x14\xfc\xd5\x73\xee\xea\xc6\x5b\x9d\x31\xe0\x2f\xb0\x76\xf9\x0d\xde\x52\x5f\xf8\x30\x9d\x7e\x59\x3f\xe1\xcb\x67\x9c\x75\xfe\xd4\x29\xe7\x4f\xf8\xf0\x19\x37\xcb\xaf\x7c\x98\x5e\xfd\xf2\x47\x8a\x12\x27\x18\xb5\x2b\xf8\xfe\x5d\x90\x80\x3f\x19\x05\x7e\x16\x0c\x60\x5b\x7f\xfa\xf5\x11\x80\x3f\x6b\xf9\xbf\x74\xf5\x1f\x5b\xe4\x0f\xbc\x92\x68\xda\x37\x35\x51\xce\x71\x39\x6a\x80\x76\xab\xbc\x40\x4f\x74\x86\x3e\xfd\xe8\x12\x74\xf5\x5d\xa5\x4c\x22\x94\x75\xcb\x4a\x22\x48\xb7\xa7\x36\xc8\x0c\xbd\xee\x26\x42\x21\x2b\x34\x41\x08\xd3\x62\xbb\x6b\xb7\x60\xd0\x08\x22\x30\xa0\x21\x6f\x61\xb4\xdb\x24\xb2\x05\x74\xf8\x89\xe9\xe8\xde\xc7\x72\x33\x3f\xa7\x74\xe5\xc8\x88\xf4\x6b\x48\x21\x07\xa3\x02\xeb\x85\x99\x65\xe5\x6e\x60\x77\x7d\xb0\x6e\xec\x09\x1e\xd9\xc0\xc7\x1e\x96\xd9\x3c\xf7\xd9\x34\x38\x78\x43\x63\xf6\x58\xa0\xcc\xf7\x89\xb0\x7a\x56\x3a\x76\xa9\x4c\x8a\x2e\x92\x2a\x71\x93\x45\x7a\x83\x57\x11\xf2\x2e\x71\x2e\x8b\x74\xf5\xb8\x60\xe8\xed\x5b\x73\xf3\xbd\xc9\x59\xd7\x50\xb5\x9a\xec\xdb\x46\xf4\x5f\x2e\x08\x05\xcb\x5b\xcf\xa4\xdd\xd5\xa3\x7d\xd3\x4e\xa1\x43\xfd\xe8\xbf\xe3\x76\xf0\x46\x08\x00\xcb\x67\xfa\xc1\x72\xcb\x52\xd7\xa8\xa6\x3c\xd2\x31\x95\x83\xa3\x56\xc9\xb0\xec\x88\x4c\xe5\x35\x1c\x47\x22\xc1\x5f\xaa\xe8\xc6\x65\xb8\x6b\xf5\x5d\xc5\x2e\x6e\x33\x42\xda\xa9\x2a\x2b\x2e\x18\x79\x0e\x0b\x32\x80\x89\xc2\xf6\xe6\x4a\xbd\xd6\x17\x64\x0d\xf3\x30\x4e\xea\xf6\x0e\x4c\x06\x68\xeb\xb6\xb0\x5e\x88\x63\xdf\x3c\x6c\xcd\x37\x00\x32\x8f\x11\xe7\xbc\x22\x74\x4b\x3d\xb8\x4b\x8a\x3c\x3d\x6a\x12\xaa\xd5\xd7\x2c\x56\xaa\xbe\x2d\x9a\xc0\xed\x0c\xcb\x86\x5b\xab\x3d\x34\x54\xb0\x35\x45\xae\x3c\xdc\xf6\x86\x61\x5e\x6f\x61\x36\xc0\xd5\xc8\xaa\x07\xbb\x13\x3a\x3b\xc3\x3c\xfd\x9b\x8e\xa1\xa8\x37\xf7\x6c\x8f\x9f\x7d\xd8\x23\x68\x67\x0e\xae\x6b\xcb\x69\x0d\x0c\xb3\x45\xb8\xdd\xa6\xe9\x65\x68\xcd\xcf\x00\xb4\xbb\x4c\x72\xa5\x14\xcb\x1a\x09\xa6\x61\xe2\x56\xb6\xd6\x60\x7f\xc5\xaa\xb1\x10\xe7\xbe\x31\xdb\x9d\xba\x35\x1f\xae\xe1\xa2\xc0\x61\x8c\xb2\x4f\x3c\x59\xeb\x8a\x54\x89\x86\x37\xc8\xb4\xcc\xcd\xae\x60\xc9\xa9\x1b\x3c\xa6\xb8\x6c\x88\x52\x14\xf7\x20\xf7\x7d\x5c\x66\x88\xa0\x61\x12\x97\x81\x63\x30\xaf\x0d\x63\x50\xa4\x50\xfb\xb0\xe3\x78\x92\xbb\x15\x58\x5d\x90\x25\xed\x21\x1b\xb5\x73\xaf\x45\x43\xc7\x2d\x94\x44\xc2\xf1\xe9\x51\x92\x52\xe2\xb4\xba\x61\x03\x49\x42\x3d\xbc\x7a\x63\xc5\x76\x68\x46\x79\xa9\xb7\x35\x54\xeb\xcc\x68\x53\x85\x69\x36\x35\x98\x79\x6b\x45\x56\x4b\xec\xa2\x44\x9c\x14\x69\xf8\x08\xb9\x15\x97\x4e\x99\xd7\xd0\x31\x3f\x4c\xce\xbb\x6f\x58\x56\x3f\x54\xce\x82\x15\x4a\xfe\xcd\xb3\xdc\xd2\x08\x58\x18\xc9\xf4\x48\xb0\x19\xf0\xaf\xdf\x59\xb5\x20\x89\xad\x22\x05\x6a\x5a\x02\x37\x0c\xb9\x5c\x82\x32\xbf\x65\x39\xce\x6f\x98\xc9\xf3\x99\x95\xdc\xd8\xda\xe9\x0e\x14\x44\xdc\xf9\xd4\x1d\x57\x7d\x0b\xf8\xc6\xf5\xc1\xfa\xcd\xc1\x0d\x58\xab\x38\x1a\x8c\x89\x6d\xe1\x30\xc1\xa7\xc7\xa4\x85\x34\xf1\xc2\x85\xe1\x14\xc2\x42\x09\xd6\x29\x03\x38\xeb\x12\x52\xcc\x64\xff\x3c\x3d\xf6\x9e\x89\x23\xe7\x85\x91\xde\x94\x15\x17\x68\x24\x4c\x2d\x2f\xb6\x18\x72\xe6\x06\x57\xca\xa7\xc1\xfc\x22\x85\x17\x38\xd4\xaf\x08\xa4\x0d\x8a\x28\x74\x1c\x47\x76\x5c\xa4\xfc\x4b\xc2\x1d\x30\x67\x3b\xac\xdd\x5f\xe7\x73\x41\x7e\x07\x71\x7a\x7a\x4c\xa2\x94\x25\xad\x1a\x49\x1b\x81\x2e\x97\x04\x3f\x67\x10\xf8\x0e\x3b\x71\xb5\x37\xd4\x06\x61\xbb\xf2\x1a\x24\xf6\x45\x4b\x24\x95\xb4\x04\xcd\xdd\x4e\xcf\x6b\x10\x2e\xb6\x77\x6c\x70\xdd\x8d\x67\x9e\x08\xa1\x8c\xbd\x00\x82\x8d\xad\x66\x07\x8f\x5f\xe5\xee\x29\x02\x5a\x9b\x56\x25\x44\xb5\x9c\x2d\x5b\xfd\xc4\x65\xb3\x16\x05\x9e\xc9\x82\x3c\x08\x4b\xe0\xda\x40\x4d\x2f\x41\x53\xff\x45\x37\x4b\xe9\xb7\xbd\xc2\xa5\xff\x9c\x7b\xc5\x8e\xd7\xa2\xb2\x88\x91\x57\x69\x69\xc9\xa5\x52\x2e\x75\x09\xac\x95\x58\xeb\x12\x92\xda\xc0\x75\x04\xcd\x70\x3a\xf3\xa2\x29\x37\xdf\xd8\x12\xd5\x7d\x62\x7b\xb9\x06\xee\xed\x22\x07\x17\xc7\xc9\xef\x2d\x02\x26\x07\x8c\x52\xf7\x14\x35\xce\xac\xf6\x36\x93\x65\x94\xe1\xf3\xab\x7e\x7b\x58\x1d\x61\xaf\xef\x79\x09\xb3\x83\x3d\x47\xc6\xdd\x77\xf0\xe5\xb3\xf1\x1e\x8d\xea\xae\x22\xf8\x02\x45\x51\xd2\xba\x20\xb6\xa3\x55\xe7\xc9\xdd\x43\x2d\xb5\x66\xcf\xda\x5b\x29\x6f\x3e\x50\x24\x7d\x74\xca\x9b\x1a\x9f\xa9\x1a\x7f\xae\x49\xa4\x76\x32\xa3\xd6\x7e\xb5\xf9\xed\x01\xe0\x5a\x20\xdc\xe4\x02\x21\xe7\xcd\x01\x9e\xf5\x29\x77\xce\x79\x26\x88\x58\xcf\x61\x5c\x0c\x6d\xca\xc9\xfb\x7a\x78\x9f\xbf\x24\x6b\x56\xfb\x9c\xac\x59\xf7\x52\x61\xdb\xdd\x8b\x7f\xe1\x81\xbc\x19\x57\xd3\xce\x81\x96\x5e\x00\xda\x27\xd9\xcb\xdf\x1a\xe3\x9b\xf6\xf2\x37\x87\x98\x9f\x25\x92\x05\x7e\x19\xa2\x5d\x81\x6c\x25\x21\x99\xf8\x12\xe6\xd5\xf5\x0d\x3c\x2b\xe7\xfd\xed\x7f\x68\xfd\x22\x15\xf5\x9b\x19\xb5\xde\xd8\x7e\xd7\xa4\x63\x3f\xdb\xc6\x79\x6b\x52\xf3\xf8\xd4\xf8\xc2\xb4\xbe\x82\x99\x9c\x8d\xbd\xdd\x25\x7a\xf8\xb9\xec\xac\xe7\xe3\x7d\x23\xad\xda\x9e\x63\xd8\x29\x58\x8e\x94\xcb\x59\x68\x4f\x9d\xe7\x16\xb7\x4c\xb9\xf7\x25\x77\x38\x81\xca\x22\x29\x92\x24\x3b\x0e\xb3\x31\x5f\xba\xcc\xdf\x30\x9e\x9c\xf4\xda\xf6\x60\xde\x2a\x26\x92\xdd\xde\x9d\x17\x62\x0c\x4c\x8a\x4b\xae\xf0\x13\xe3\x05\xc1\xf4\xc6\x5b\x83\xa3\xe3\x25\x8c\x81\x9c\xf9\x26\xb7\xdd\x8f\xe9\x83\x98\x6a\x38\xf1\x81\x3d\x01\x97\x89\x3b\x23\xb6\xda\x85\xab\xf1\x38\xf8\xf3\x11\x58\x6d\xc0\x3c\x5c\xde\x35\x09\xb7\x57\xc3\xde\x5d\x38\x7e\x24\xcc\x4f\x4f\x63\xcd\xf0\x88\x96\x03\x2f\x71\xc7\x53\xdc\x98\x8b\xbb\xab\xb3\x19\xcb\xd7\x3e\xe3\x99\x35\xed\x16\x6e\x72\x32\x1b\xfd\x5a\x67\x23\xa9\x20\x78\x0d\x8e\xa7\xc2\xb3\x22\x94\xcc\xa0\x34\xc1\x13\x7b\x00\x7f\x50\x0f\x57\xf3\xdf\xe0\x4f\xe4\xae\xe8\xd3\x78\x7b\xe6\xe8\xbb\xd5\x8e\x3a\x73\xb1\x6d\xe9\xab\x05\x4f\x35\xd6\x86\x17\xa9\x85\x82\xd4\xba\x24\x66\x4a\x6c\x33\x45\x08\x44\x5a\x82\x2b\x2f\x15\xf5\x6c\x84\xf8\x54\xe3\xd3\xf2\xd7\x3a\x51\x2d\xc9\xdd\x70\x93\xae\x89\x46\x6c\x41\xe0\x0d\x11\x0a\x9b\x89\x8c\xba\x29\xf5\x8d\x89\x79\x53\xeb\xcb\x68\xbe\x09\xad\x9b\x91\xe7\x84\x26\x26\x54\x75\x62\xfc\x1b\xe1\x47\x60\xff\x08\x94\x8d\xd0\x2e\x43\x25\x89\x3e\x05\x0a\x27\x11\x0a\xc9\xa4\xa8\x2d\x40\x46\x94\x15\x7e\xb1\xbb\xa2\xd9\x6f\x33\x12\x19\xaa\x35\xac\x5b\xf0\x2a\x0a\xa9\x6c\xc8\x6e\x51\xda\x60\xd1\x32\x29\x71\xa2\xb6\x41\x33\x0d\xdd\x96\xc7\xfc\xe2\x8a\xa9\xf4\x8d\x13\x21\xb9\x5f\x66\xcf\x22\x45\xad\x6f\x21\x09\xe5\xb6\x85\x0c\x97\x56\x19\x17\x9c\xb7\x90\x11\x1b\x84\x8c\x5e\xa8\x7e\xe3\x32\xf2\x70\xb9\x87\x4c\x9d\xe1\x82\xe9\x69\xfd\x21\x79\x73\x1a\x36\xbd\x29\x93\x0d\x62\x47\x6f\x99\xa0\x5a\xf9\x5a\xf1\x22\x8d\xe9\xa4\x0f\x42\x0e\xf5\xf5\x2c\x91\x4f\x33\xf0\xfe\xde\x8c\xf2\x16\x10\xea\x41\x24\x1b\x19\x29\x7b\x5e\x91\x8e\x28\x53\xc7\xba\x38\x3c\x22\xaa\x60\xc4\xe8\xf9\x73\xf7\xb3\x67\xcd\xc9\x79\x63\xa3\x65\xc5\xf0\x6c\xd4\xab\x82\x72\x7b\x18\x2c\x9c\xa5\xd7\xfd\x24\x52\xcf\xba\xe6\xba\x4e\xf6\x0a\x1d\xcd\x90\xab\xc5\xa1\x1b\x30\x89\xb8\x8e\x30\xc3\x5e\x57\xa8\x42\x81\xad\xb1\x11\xca\x81\x6c\xa1\x37\x42\x09\x24\x93\xc9\xd3\xd3\xa3\x74\x4c\x61\x95\x44\xa1\x2a\xd5\xa1\x5f\x81\x12\x5b\xd1\x6d\x6d\x18\x7b\x99\x63\x2f\xb4\x72\xea\x94\xac\x1f\x26\x7b\x10\x24\xf2\x9c\x1d\x86\x58\xd3\x50\xdc\x33\xc2\xb9\x91\x0e\xa2\x56\x7b\x39\xcd\x43\x56\x57\x60\x27\x02\x5b\x11\x07\x56\x37\x94\xa2\x61\xb1\x0f\xed\x05\xfb\xf8\x74\x15\xda\x57\x91\xbe\xe5\x57\xcd\xd0\x53\x28\x95\xbc\x20\xbe\x58\x33\x2d\x61\x5c\x2d\x1c\x51\x0f\x06\x4f\x02\x6e\x1c\x1e\x04\x7b\x12\xee\x1e\xe1\x22\xdc\x3f\xf4\x5b\xe3\xe1\x19\xdc\xbf\x8e\xb4\x39\xbf\x26\xdc\x61\xd0\xac\x33\x2e\x9e\x96\x56\x29\xb4\xba\x48\x4c\x24\x31\x2f\x3c\x92\xc3\x2e\x41\x11\x4a\x91\xce\xc0\xd7\xe3\xd7\x00\x3e\xce\x84\xf8\x0f\xce\x4b\x2e\x8d\x72\x31\x72\x11\xe3\xb8\x59\xa8\xc8\x0a\x18\x47\x3a\x87\x4c\x37\x99\x21\xaf\xbd\x22\x20\x47\x0c\xa1\x72\x5f\xfd\xcd\x57\x56\x81\x10\x7b\x2a\xf3\x85\x33\x50\x1d\xca\x45\xa4\x8a\x5a\x5b\x29\xab\x47\x34\x94\x3d\x48\x7a\x5c\x9d\x49\x25\x5d\x9e\x6b\x84\xf1\xbe\xce\x5a\x6a\xc9\xe4\x20\xbf\x4a\xed\xaa\x91\x2f\x6f\xd8\xaa\xfb\x4d\x41\x84\x65\x44\xdc\x27\x7e\x91\xb7\x10\xc4\xab\xb7\x43\xde\xc2\x71\xeb\xcc\xc2\xd3\x6f\x79\x49\xd0\xe7\x45\x7a\xc1\x7b\xd3\x76\x7e\x91\xde\x96\x90\x52\xa7\xb7\x46\x97\xef\xe2\x1d\x0b\xb1\x0a\x12\xc3\x8c\x52\x52\x88\xf9\xe8\xea\x29\x88\xb4\x6d\x82\x23\x27\x77\xa3\xf4\x95\x5f\x01\xc9\x0a\x9b\xb5\x90\xd7\x45\x45\xe2\x5d\x04\x29\x22\x2d\x71\xa5\x30\x36\x18\x02\x69\xdf\x50\xf9\xf5\x72\x9f\x34\x6f\x61\x58\x0d\xa4\x2f\xd2\x13\x49\x4f\x87\x1d\x65\x77\x02\x6e\x8d\x36\x97\x91\xcb\x42\xed\x50\xa9\xb7\x96\xfb\xab\xa3\xdd\xf5\x96\x35\x69\xdc\x39\x1b\xd1\xae\xf3\x48\xc4\xb5\x40\x75\x2d\x1d\x91\x47\x9d\xec\xa3\xb3\x58\xeb\xb8\xa3\x71\x68\xa7\xa5\xcf\xca\x2b\xf1\x83\xa9\x78\x17\x63\x80\x7c\x7b\x61\xb4\xd1\x37\x0a\xbe\xbe\xe7\xf8\xf9\xb9\xa4\xee\xf2\x70\xed\xc9\xb9\xf6\x7c\x4d\x77\x59\x9c\x7e\x99\x94\xc8\x4f\x8f\x29\x17\x6a\x99\x97\xdc\x60\x5f\x5e\x9d\xe7\x71\xfa\x61\xdc\xcd\xa6\x75\xd7\xa3\xe4\x34\xbc\x69\xea\x50\xa1\x90\x47\xfc\x59\x3b\xeb\xc0\xdf\x17\x64\x4e\x51\x2f\x4f\x25\xbb\xe6\xb2\xee\x0a\x18\x9d\x3a\xc1\xe6\x9f\x78\x99\xcb\x7d\x83\xbf\xe3\x78\x23\x17\xed\xc8\x36\x4e\xda\xb1\x67\x76\x48\xcf\xf2\x91\x7b\x61\x3f\xb2\xff\xb9\x2d\x7a\x06\x9d\x8d\x7c\x01\x0b\xe2\x4a\x2b\xb2\x8e\x91\x76\x0a\xc9\xab\xfc\x0d\x0b\x98\xa4\xd5\xa6\x15\x29\x14\x30\xfe\x0b\x02\x08\x03\xa7\xb4\x42\x00\x31\x6e\x31\x41\xcf\xb4\x1a\x1b\x8f\x18\xd3\x48\x26\xd0\x89\x36\x42\x33\xb5\x75\x40\x6c\x1f\xb7\x35\x68\x47\x67\x9e\x0c\x47\xb7\x90\xc0\xd2\x15\x5e\x02\x8e\xf9\x6a\x80\x43\x2c\xa0\x8e\xd4\x7b\x14\x38\x5f\x43\x21\xcc\xe4\x50\xed\xea\x56\xc8\x78\x2f\x5b\xbc\xe7\xdb\x58\x83\x7a\x92\x9b\xd4\x36\x2d\xd4\xcb\x62\x48\x5a\x5d\x50\x67\x24\x61\x68\x3c\xf3\x39\xec\x25\x90\xf7\x7a\xc7\x8f\x55\xd9\xba\x59\xc4\x84\xd2\x5e\x57\x9c\x35\x84\x60\x59\x1c\xec\x8a\x22\x76\xc6\xfa\x56\xd9\xec\xb4\x43\xe0\x98\x94\x93\xfd\xcc\xf1\x16\x16\x14\x44\x50\xec\xcc\x4e\x35\x54\x48\xec\xf0\x6d\x62\xa5\xa6\x1e\xf6\xda\x93\xc9\x82\xac\x9b\x82\x73\xe7\xb4\x55\xd4\xab\x5b\x53\xa5\x12\xa9\x7b\x99\x3d\x71\xd2\x49\xa5\x0d\xff\x8e\xd4\x36\xaf\x7e\xa7\x75\xcf\x93\x04\x93\xbf\x48\xa4\xec\xe1\xa0\x9e\xa6\x05\xf9\xe6\x92\x7d\x0d\xd5\x16\xdb\x06\xff\x05\x78\xa5\x6c\xb3\xa4\x28\x83\xa2\x5a\xcb\xd2\x0e\x5e\x19\xfb\x81\x3b\xda\x62\x7b\x80\xd2\xba\x6f\x45\xdd\x02\x82\x55\x81\x5c\xc6\x01\xe4\xfc\x44\x8f\x20\xf4\x86\xf6\x48\x2a\x87\x35\x7f\xf0\xe2\xa9\x54\xcb\x43\x5e\x73\xa6\x52\x48\x4b\x25\xd1\xb4\x56\x18\x76\xbd\x76\x20\x9c\x83\x4c\xc4\xa8\x1d\x96\x5d\x13\x8c\x37\xbc\xc8\xa9\xad\xc6\x07\x45\x82\xdf\x11\x32\x14\xf5\x35\x54\x02\x26\x51\x9e\xf2\x2e\xdf\xea\xfc\xc1\x5e\xbb\x02\xd7\x20\xc9\xb2\x47\x02\x46\x0f\x40\x74\x63\x6e\xeb\x36\x72\xc3\x77\x95\x35\x28\x52\xf9\x18\x37\x91\x8c\x6a\x24\x3b\x76\x52\xf3\xe0\x5e\x2c\xfc\xb0\x81\x9e\x2d\xfd\xcd\x57\x85\x29\xc5\x36\xb2\x8b\x1b\x0c\x74\x35\x00\x21\x8f\xb7\xfb\x5f\x6c\x23\xbd\xb5\x2d\x16\x5c\xdb\x98\x0a\xbc\x9f\xb6\x22\x24\xb6\x96\x79\x64\x9d\x4a\xcd\x43\x7d\x35\xc3\xe7\x6a\x55\x01\x04\x3b\x61\xdd\xe1\x48\xc6\xb9\x3e\xe4\xb5\x82\x0b\xf3\x1c\x83\x6c\x78\x0b\xaf\x8b\x04\x75\x01\x82\xbf\x7d\x0b\x42\xd8\x75\xfa\x67\xe2\x9b\x07\xd5\x42\x34\x4f\xce\x5e\x6d\x1e\xe8\x5f\xb6\x60\x38\xe3\x7a\x05\x6b\xb1\x0d\x5f\x11\x78\xdb\x50\xc0\x24\x3c\xd6\x72\xd3\x11\xf7\x4b\x5b\x12\x6a\x6b\xae\x46\x2f\x3b\x93\x26\x77\xc4\x49\x36\xd2\x56\xa9\xa4\x11\x4e\x6c\xeb\x90\x90\x0f\x71\x35\x04\xa8\x62\x87\x3d\x88\xae\xb3\xc4\x28\x60\x2c\x26\x01\xae\xd0\x7f\x24\x4a\xea\x31\xd8\x20\x4b\x86\xcd\x6a\xd3\x84\x6f\x91\xd7\xca\x55\xea\x28\x2a\x0a\x4a\x8c\xb9\x72\x8c\x9b\xbd\xca\xf0\xc7\x4a\x0d\x3a\x8f\x8a\x29\x7b\x1c\x32\xd4\x25\x98\x60\xf5\x8a\x95\x20\x9d\xad\xdd\x24\xe2\x80\x0a\xbd\xda\x40\xd6\xe1\x9a\xb6\x7a\x38\x7d\x73\x0a\xba\xd9\xaf\x6e\xc5\x11\x8e\xb6\x1d\xf7\x40\xd1\xbc\xba\x44\x19\xb1\xe5\xc1\x91\x50\x12\x02\xf9\x47\xb6\x05\x4f\x11\xbc\x7a\x8a\x74\xa3\x98\x15\xde\x81\x20\x97\xc5\xdf\xca\xf0\x7c\xd8\x10\x5b\x5d\xf3\x8a\xc0\x7e\x24\x9c\x1c\x38\xcd\xee\xdb\xc7\xd1\x24\x59\x2c\xeb\x29\x92\x4e\x0e\xcd\x30\x1f\x49\x57\x0b\x25\x70\x6a\x48\x19\xa2\x71\x4b\xdd\xab\xbf\x22\x3f\x41\x83\xa3\x45\xa5\x1e\x37\x97\xfc\x1b\x5c\x8b\x8c\x3e\x52\xee\x83\x0c\x01\x86\x3c\x0e\xf3\xdb\xf3\x00\x7f\x2c\xf7\x5f\x52\xef\x26\xf4\xe8\xfd\x06\x74\x0c\x86\x12\x84\x0b\xa6\x78\x1b\x4b\x48\xc6\xe0\xe0\x77\xf5\x4a\xd8\xee\x1e\x6f\x04\x69\x6f\x1e\x0e\x7d\x84\xd1\x6d\x38\x7e\x2a\xdc\x46\x10\x0e\x03\xa3\xf9\x97\x1c\x1a\xa1\xcd\x6d\x6e\xc1\x67\x1b\x6e\xd3\x0f\x13\x22\x9e\xdc\xf9\xe9\x91\x05\x5c\xd7\x8a\x2c\xf5\x94\x66\xce\x80\x5c\x5c\x69\xb1\x95\x46\xa1\x42\xd3\xe4\x69\xd9\x9d\x7c\x7b\xe6\x38\x04\x94\x0f\xc1\x04\x99\x38\xe2\xe6\x7e\x8a\xe0\x6b\xec\x7b\xc8\xce\xb3\xb9\x6b\xa3\xdd\xcb\xee\xfa\x62\xfb\x05\x0e\x90\x34\x09\x92\x8e\x5a\xd0\x94\xed\x47\x87\x7b\x19\xfc\xdc\x7c\xb8\xd0\xd3\xe5\x44\x6b\xf2\xba\xe1\x09\x7e\x6b\xee\xa2\x63\x47\xf8\x28\x9e\xb9\x85\x59\x4d\x33\x8c\xea\x9a\xc1\x8b\x6d\xae\x91\x5a\xa6\x54\xbc\xd2\x37\xd4\x3f\x0d\x2a\xc8\x82\xc3\xe4\xe9\x51\x6b\xa5\x92\x0b\xfa\x67\x54\x04\x4f\x38\x78\x17\xa3\x6e\x1c\x33\x6a\x7b\x42\xc3\x93\x91\xc9\x23\x57\x6a\xc9\x73\x64\x9f\xc8\x23\x7c\xab\xc2\xfa\xf3\xe2\xe8\x74\xb5\x71\x16\x47\x2b\x71\x92\x0b\xa7\xb6\x04\x85\xeb\xa9\x2b\xe8\x52\xf3\x47\xba\x86\x26\x6e\x13\x2e\x63\x51\xa0\xd7\xe2\x68\x82\x87\x97\xc0\x65\x4f\x4f\xe2\x09\x3d\xe0\x5a\x93\xf4\x86\x1f\xc2\xee\x26\x43\xda\x51\x6e\xba\x78\xc7\xec\x95\xd5\xe1\x9d\x55\x71\xf0\x7b\xd2\x0a\xc8\x42\xdc\xd5\x05\xd5\xcf\x84\x7c\xaa\xe0\x80\x94\x5a\x45\xc2\x23\xd4\x7f\x40\xe9\x68\x23\x85\xa5\x2d\x81\x13\x49\x79\x7a\xac\x76\x56\x14\x46\xb6\x9c\x04\x32\xcb\x4e\xa8\x8d\x6a\xa3\x68\xec\x06\xcc\xb6\x5f\xa6\x6c\xd4\x0a\x47\x2b\x18\x0d\x55\xbb\x2f\xde\x7a\xb5\x2d\x03\x07\x26\x80\xa7\xe6\xc5\x4e\xa7\x54\xd6\x62\xb2\x79\xf2\xc2\xf0\xd3\x99\xd2\xb7\x04\x24\x41\xe3\xd9\x42\x96\x67\xbb\x9e\x56\xa4\x63\x1e\x29\x22\x3c\x29\x44\x71\x2d\x32\xe8\x6a\x77\x13\x68\x1c\x5a\x15\x94\x46\x8f\xa8\x0f\xec\x6d\xce\xf0\x6a\x8f\x8b\xe9\xd5\x47\xee\x24\x59\x13\xb9\xa7\xb1\xa6\x0b\x4b\x4f\x2b\x2a\xd2\xe2\x96\x9b\x5d\xeb\xa8\x99\xbf\x84\x92\xc4\x10\xbb\xac\x40\x62\x4f\xb5\xa2\x38\x36\x8c\x59\x90\x3e\xdb\x04\x8e\xb6\x59\x91\x1a\x5e\xc8\xe9\x72\x29\x4f\x8f\x9c\xb3\xd7\x5c\x4f\xb6\x23\x14\xbf\xa1\x8a\x5e\x82\xa6\x7c\x2f\x26\xe0\xd6\x9e\xbb\xd5\xb3\x21\xe8\xb8\xd0\x4f\x91\x29\xee\x2c\xd3\x45\xae\x89\x3d\x3d\x94\x71\x29\x76\x30\x4b\x21\xe3\xda\x16\x2d\x4a\x2a\xf9\xaa\xda\x57\xe8\x63\x50\x75\xa4\x6c\x1c\x81\x0d\x48\x23\x68\xd8\x00\x90\x97\x2b\xd2\xff\xd9\x3b\x41\x25\xaf\x0c\x06\x8c\x6c\x0d\x5d\xd6\x67\x3f\xd2\xaf\x01\x9f\xf3\x10\x27\xf0\x15\xbe\x55\x28\x43\x28\xc9\x26\x4c\xf4\x6b\x90\xa2\x2b\x66\xd8\x99\x5c\x92\x67\xbd\x86\x92\xf6\x57\xd5\x89\x1e\xa4\x2f\x24\x07\xe9\x89\x6a\xbb\x04\x11\xc1\x35\xaa\x16\x19\x1b\x33\x58\x83\x38\x78\x23\x50\xca\x2b\x3a\x32\x14\x47\x79\x09\xbd\x4a\x51\xff\x78\x90\xd4\xd7\x51\xb3\xdc\x93\x83\x8d\x04\xa9\x64\x03\x3d\x83\x6a\xff\xa8\xf0\xff\x57\x13\x24\xd4\xbc\x27\x18\xae\xd9\xf3\x1c\xc4\x99\x7c\xf8\x8d\x44\xb4\x9c\x3f\xc8\x86\x98\x3f\x4c\x90\x88\x2c\x4d\x6f\x67\xab\xdd\x93\x21\xbe\x94\xcb\xef\x80\x69\xf7\x8f\x68\xfa\x16\xbc\x96\xbe\xf8\x95\x1e\xf5\xd5\x1e\xa7\xcd\xf8\xb5\xa4\xc7\xaf\x74\x98\x5f\xef\x30\xbf\xde\x61\x7d\xbd\xc3\xfa\x7a\x87\xd5\x3b\xa4\x97\x9e\xf5\xd7\x7b\xec\xaf\xf7\xd8\x5f\x1d\xe2\xeb\x88\xc7\x77\xb9\x12\xdd\xfc\x91\xfb\x32\x34\x41\x17\x49\x7c\xf4\x73\xcc\x77\x7e\x8e\x15\x59\x85\x86\x76\xcd\x35\x84\x89\x9f\x86\xb2\xc1\x7a\x71\xe1\x41\x64\x37\x71\x9b\xac\x48\xdc\xbc\xe5\xc8\x18\x59\x6a\x23\x6d\x7c\x33\x83\xfb\x4b\x7a\xe1\xdc\x4f\xbf\x2d\x67\x49\x5a\xf9\x50\xa2\x37\x7d\x44\x52\xe9\x2f\x4e\x0e\x9d\xdd\x09\x34\xf9\x00\x75\x40\xfe\x34\x5f\xf4\xc9\xe0\x8f\x49\xc4\xa7\xdb\x03\xd4\xa7\x32\x53\x98\xa3\xce\x94\x1d\xb5\x0c\x9d\x25\x0d\x73\x5a\x75\x91\x86\xc9\x1d\xf4\xfd\xec\x01\xf7\x07\xe6\x2f\x12\x24\x2e\x2d\x24\x76\xe0\x92\x47\xdc\x24\x67\xfe\x2a\x25\x81\x58\x96\xf2\x16\x29\xd5\xab\xe4\xab\xe4\xf9\xe1\x01\x02\x81\x92\xa5\xa1\x90\x11\xca\x3a\xed\x91\x49\x5c\x8c\x47\x24\x67\x66\x5c\x35\xd0\x5d\x7b\x64\x84\x70\x04\x38\x38\xab\x2d\x87\x3f\xc6\xb5\x74\xf2\x26\xad\xcf\xda\x79\xb9\xd1\xe8\xcb\x4b\xb8\x33\xd2\x7a\x91\x7f\x93\x9a\xee\x05\xcc\x5f\xca\x36\xda\x5e\x7d\x74\x02\xf6\xa9\x6d\x31\x56\x27\x31\x2f\xe2\x36\xf2\xba\x68\x96\xdd\x51\x29\xc0\xc9\x48\x0a\xd9\x83\x90\x6b\xa3\x7c\xca\x27\xec\x45\x19\x6b\xa4\xda\xeb\x92\x5b\xa4\x90\x6b\x5f\xc6\xab\x4b\xd8\x3b\xdb\xbb\x0f\xe3\x83\x67\xdd\xee\xa2\x17\xf7\x86\x84\x98\xd2\x3b\x49\xd3\xb1\x61\x9a\xc2\xd8\xea\x1a\x2a\x6d\x79\x11\x5b\xb0\x3d\x73\x62\x71\x7f\xe6\xf2\xf4\x98\xe0\x44\x61\xef\xcf\x06\xda\x78\xd6\x73\xe9\x0d\xdd\x5a\x77\xb3\x7f\x67\x13\xf0\x7e\x3d\x33\x04\xf0\x5e\x91\x90\x1b\x75\xed\x6b\xc8\xc6\xbd\x9b\x8c\x23\x2b\x27\xe2\x0e\xbd\x43\xbf\xb4\x5e\xc0\x37\x16\x59\x33\xb1\xb1\xb2\x10\xd7\x1f\x86\x26\xc0\x44\xd5\x4b\x4f\x7b\x94\xe2\x70\x6f\xdb\xbd\xd8\xf8\xe0\xcf\x36\xbd\xd9\x32\xe4\x02\x36\x0c\x64\xe8\x06\x93\xe7\xa9\x8e\xbb\xe7\x40\x75\xed\x8e\xe1\xed\x05\x51\x77\xf9\x24\x76\x7a\xfb\x20\x5e\xfa\x9a\xa7\x41\xfe\xec\x3d\x7a\xe5\xc5\xfc\x6a\x1c\xf6\xeb\x4e\x7e\x59\xf3\x02\x6b\x75\xbc\x84\xa2\x3a\x35\xac\x39\xcd\x3c\x77\xd5\xe5\x85\x93\xf5\xa8\x07\x73\x05\x14\xc2\xb7\x22\x78\x3c\x4a\xda\xf6\x5b\x6a\xdf\xcf\x2d\x26\x76\xc8\xfb\xcf\xa7\x4e\x5a\x7c\x2b\xe4\x47\xee\x6d\x5f\xc7\xa0\x06\xa9\xaf\xb7\x91\xf1\xa4\xe2\x5f\x3e\xb2\xe9\x38\x71\x3a\xb2\xbe\xfb\x8e\x0a\xd4\xee\xdc\xdb\xdc\x32\x0d\x61\x95\x1e\x18\xd0\xf6\xc0\x80\x61\x24\xb3\xc7\x61\xde\x3f\xf9\x80\xc4\x43\x10\xc2\x48\xcc\x6d\x7d\x70\x6f\x30\xe9\x1d\x0e\xbe\x36\x13\x8a\xf7\xea\x07\x5f\xf1\x98\x81\x93\x18\x07\x16\xbe\x4b\xad\x7a\x5a\x1a\xee\xcd\xd3\x8f\xdf\x3e\xfd\xdc\x7b\xf4\xac\x36\x82\x62\x05\x17\x64\xe1\xd4\xbe\x66\xe3\x9f\x45\x09\x6a\x2f\xdb\xfc\xd6\x4d\xa9\x33\x28\xd6\x9d\x67\x5c\x6d\x3e\x4d\x36\x8b\xa7\xf2\x54\x31\x4e\x57\x9b\x93\xf8\x0f\x92\x73\xdf\x18\xca\xd7\x1e\x9e\x40\x4d\x8e\x99\x0e\x0a\xb2\x5b\xaf\xd0\x13\x4b\xa6\xd4\xed\xf8\xd4\xb6\x48\x26\x93\x26\x04\xf9\x76\xd9\xb3\xcd\x19\x5d\x4b\xc8\x17\x3c\xac\xf0\x89\x46\xa4\x23\xe3\x8c\xdd\xbd\x67\xed\x40\xbd\xb6\x6b\xbb\xd6\x0d\x1a\xb8\x8d\xc7\xd1\x2c\x94\x37\xa5\xb4\x25\x8f\x3f\xda\x0a\xbc\xba\x0c\x0e\xd1\xfd\xad\x96\x52\x33\x5c\x81\x91\xe3\x2f\x94\x91\x7b\x30\x68\x33\x29\x3d\x48\x2d\xeb\xcc\xcd\x39\xc9\x1b\xdc\xb5\x5c\x3f\x08\x57\x99\x76\x09\x4d\x21\x6b\x46\x37\x2b\x61\xd0\x9e\x5b\x30\xd3\x1a\x72\x26\xd5\x8a\x04\x98\x9a\xf9\x90\x7d\xbb\xe5\xd7\xbd\x8f\x5f\xa1\xcb\x18\xe6\x4e\x19\x77\xba\x68\xd7\x9f\x9e\x83\x82\xf7\x12\x73\x35\x8d\xe0\x7d\x1b\x8c\xee\x83\xd1\xdd\x15\xba\x2d\x6c\x47\x48\xd5\x05\xf2\x67\x35\x51\xb2\x56\xaa\x85\x38\xc5\x8d\x53\xa2\xa6\x0b\xb2\x06\x0a\xd2\x4c\x76\xb2\x66\x1b\x8c\xa1\xfb\x29\x03\xbb\x26\x74\x14\x8e\xe0\x88\xb6\x46\xae\x53\xfc\xd6\x15\x81\x9e\x9d\xac\xbb\xd0\xf6\x18\xd0\x64\xa2\xa4\x8b\xb0\x75\x61\xd7\xc8\xe8\x85\xeb\x00\x91\xde\x7c\xb3\x75\x8a\x4d\x47\x89\x34\x45\xd7\xe0\x4a\x5d\x87\x2d\x4b\x8c\xd5\x02\x2f\x54\xf2\xb0\x55\xc7\x91\x78\x75\xa8\x24\x79\x04\x88\x42\xcb\x6c\xb2\xa7\x78\x34\x95\x6b\xa9\xfc\xb8\x83\x56\x28\x79\x0e\x4c\x3b\x40\x30\x9b\x8a\xd8\xf1\x81\xa4\x8a\xc7\x4f\x8f\xa9\x57\x62\x8e\xab\x61\x51\xea\xb4\x47\xa0\x62\x4e\xd1\x2f\xf0\xab\x1d\x3e\x56\xeb\xac\x8e\x09\xee\xb3\xf8\xf0\xce\x58\x82\xbd\xf4\x9d\x30\xa5\x94\x17\x0f\x14\xce\x8b\x97\x0b\x96\xb4\x88\x98\x20\xbe\x24\x8f\x30\x5e\x38\x1b\x47\xd0\xf1\x1b\xec\x22\x21\x58\x18\xcd\x42\x6d\x78\x0f\xaf\x69\x22\xeb\x86\x9b\x71\xb8\x79\xf1\x5f\x18\x14\x13\xa5\xb4\xa0\x59\x36\x4e\x6b\xbc\x37\xfa\x09\xde\x71\x8b\x7e\x85\x8b\xf9\xed\x30\xc6\xe2\x43\xb3\x97\x31\xd8\xb4\x70\xed\x6f\x44\xb9\xb2\xdc\x79\x2e\x5c\xe4\x50\xde\x71\x54\x0d\x00\xc5\xf7\x82\x26\x35\xbb\x92\xa2\xe6\x4b\xe1\x75\x2a\xa1\x3c\xc4\x1c\x67\x71\x8e\x6b\x2a\x14\xa9\x29\xe5\xba\x88\x36\xd2\x94\x56\xe9\x48\x7a\xd0\xa9\xa6\x49\xe0\x93\x2f\x13\xb9\x2d\xa7\xf4\xb1\xee\x97\xa0\xd2\x56\x81\x6d\x8c\xec\x47\xf2\x50\x0b\xbc\xfe\x06\x58\x14\x84\x38\x66\x76\xd4\x53\x24\xbb\x5c\x42\xb7\xf5\xee\x6d\x56\xa3\xea\xae\xbd\x82\xbe\x0d\xe5\x8c\x9d\xe5\x7c\xa2\xe9\xc9\x78\xd5\x9a\x17\xce\x48\xb5\xeb\xf9\xbc\x59\x2e\x08\x5e\xaa\x19\x49\xd1\x0d\xba\x97\x84\x3b\x00\x33\xca\xb5\x21\x8b\x0c\xe2\x7d\xb5\xd0\x47\x08\xb2\x52\x9e\xcb\x7b\x97\x5b\xc5\x4d\xd9\x55\x02\x32\xeb\x13\x0f\xa0\xdf\x60\x3e\x41\xfe\x1c\xe2\x61\x80\x3c\x0c\x98\x07\x07\x7a\xa8\xe9\x76\x32\x4e\x28\x86\x03\x18\xc3\x1d\xe4\xc3\x00\x3d\x82\xd8\x67\xa5\xb0\xb3\xf7\xee\xe0\x3f\xc0\x3f\xa0\xbf\x03\x9f\x7b\x21\x00\x7f\xc0\xbe\xa8\xbb\x8f\x66\x71\x80\xa3\x64\xbb\xa7\x53\x67\x35\x90\x4f\x88\x4f\x80\xef\xf0\xbe\x07\x77\xb8\x1d\x98\x7a\x96\x89\x83\xf7\xe2\x82\xe0\x4b\x5f\x06\x7a\x43\x92\x8e\x8c\xf0\x69\xa3\xcc\xc9\x49\xb6\x34\x28\xd3\x16\x4e\xd4\x17\x85\x99\x32\xae\x08\x6e\x97\x4c\xc5\xa4\xda\x41\x86\x65\xf8\xfe\x31\x84\x06\x0f\x48\xb7\xc5\xd8\x33\x64\x40\x29\xba\x84\xe6\xbe\x5d\x17\x8d\xb2\xb6\x8c\xb4\xc6\x6d\x68\x7c\xdd\x6d\x98\x39\x6e\xce\x2e\x07\x66\x14\xda\xf1\xe7\xdd\xa6\x8a\x60\x52\x58\x58\x61\x0b\x86\xa9\xdb\x4d\x9c\xc3\x86\xd8\x26\xb5\x85\xee\x82\x46\xf8\x6f\x8f\xd4\x78\x0b\x4d\xa9\x27\x83\xbd\x4d\xaa\x3b\xc8\x5b\xbf\x48\xd7\x85\x95\xc9\x3a\x2d\x38\xb1\xb0\xbf\x78\x43\x6f\x62\xc0\xd2\x95\x51\xf3\x0d\x07\x61\x27\x64\x05\xb0\x5d\xd4\x87\x77\x88\x4c\x35\x5d\xca\xc6\xf9\x21\x8b\x24\x50\xc5\x19\x03\x58\xaf\xb7\x90\xc1\x2c\x78\xee\x6b\x68\x8f\x29\xd9\x3f\xa8\x5c\x96\xe1\x82\x60\x9f\x43\x71\x16\x58\x3d\xaa\x57\x60\xb3\x93\xb0\x15\x1c\x88\xaa\x30\xcf\x16\x93\x67\xce\x64\x88\xbd\x20\xa2\xb3\x48\x28\x74\x5c\x85\x72\xb2\x73\x63\xb3\xfd\xa3\xc6\xb8\x1a\x27\x82\x25\x61\x61\x38\x89\x70\xc1\x4a\xa9\x4c\x3e\x82\x34\xb9\xb7\x27\xeb\xca\x6a\x63\x84\x87\x92\x57\x56\x92\x4c\xa1\x2c\x8a\x43\x4f\x61\x19\x4b\x04\xad\x6a\x84\x82\x19\xcc\x61\xd9\xdc\x42\xa7\x05\xb1\xcb\xee\xde\x0e\x53\x2c\x0a\xe4\x40\xb9\x9f\xdc\x2a\x8d\x25\x43\x91\xea\x38\x58\x58\x1c\xa5\xbe\x18\xbe\xf0\x3a\xd0\x60\x0d\x0d\x09\x80\x31\x93\xbe\x19\x2b\xc4\xcc\x4f\x8f\x01\x65\x7d\x2f\x22\x42\xc6\x51\x44\xd7\x04\xbb\xd9\x95\xf7\x6d\x8b\xd5\x36\x58\xfa\xd2\xc7\x4a\xad\x5f\x73\x84\x43\xa5\x92\x68\x5d\x60\x78\x69\xba\x38\xed\x6c\x69\xf5\x1c\x0a\x04\xdb\x4e\x99\x15\x24\xd1\xf3\x0a\xa3\xef\x28\x1e\x00\xfd\x76\xa2\x90\x36\x3c\x9c\xab\xed\xee\x14\xee\xaf\x30\x7e\xe3\xc0\x91\x81\x2d\xa9\x96\x9b\xff\x8b\xe1\x16\xbf\xb0\x4d\x4f\xd6\x7b\x0a\x42\xbd\x52\xe5\xbe\xa0\xfa\x8e\x16\x5d\x21\x50\x73\xdc\x8d\xf8\x6e\x4b\xda\x3c\xc1\x84\xdd\xb9\x64\x54\x34\x24\xa4\xd8\x68\xba\x35\xa6\x1e\xaf\x9a\x90\x0d\x27\xbb\x0b\x15\x54\xf0\xc9\xf7\x85\xe3\x20\x2b\x5f\x19\x89\x39\x1a\xea\x79\x7b\x66\x0b\x36\x3e\x1b\x0c\x2d\x92\xf3\x40\x74\x47\x66\x1b\xcf\x49\x1e\x91\xd6\x9b\xa9\xb9\xfd\xde\xf3\xd3\x43\x63\xe4\x2a\x7e\xf7\x43\x47\xd1\x01\xf6\xbc\x15\xee\x87\x04\x2f\x15\xeb\xf0\xe9\x71\xc8\x25\x4b\x53\x6a\x65\x81\x6b\x20\xa7\x42\xf0\x17\x80\x1b\x10\x85\xbc\x2a\x81\xdd\x47\x7e\x00\xdb\x62\x30\x09\xee\x1c\xbc\xfb\x4a\xc1\xd4\xfe\x90\xaf\xf5\x21\x5f\xed\x37\xe5\xe2\xc6\x02\x41\xfd\x00\xa3\xca\x40\xe2\x91\x96\xdc\xc4\x51\x4f\x1c\x53\xb0\xef\x21\x37\x21\x80\xc7\x40\x82\x5d\xc9\x6a\x42\x6b\x4f\x8b\x7b\xdb\xb8\x82\x7e\x50\x7a\xd7\x0c\x96\x5d\xac\x3d\xf5\xa7\xe4\x5b\x21\x4c\xca\x2d\x63\x43\xd8\x69\x06\x10\x2c\x3b\x68\xd8\xbd\x8a\xe0\x11\x01\xbb\x5a\xc2\x3a\x2f\x80\x30\x18\x96\xec\x02\x85\xad\x33\xd6\xc2\xaf\xd3\x70\x15\x6a\x89\x74\xe4\x38\x69\x1b\x3b\x8a\xe4\xb4\x8d\x35\xf4\x25\xb5\x35\x5e\xc6\x7a\x1b\x77\x5c\xdc\xee\xcd\x1e\x6c\x80\xd0\xff\x87\x3c\x90\xa5\xa2\xe6\x5c\x8f\xd8\xcf\x4d\x2f\x21\x23\x79\x7b\x3d\xda\x22\x26\x81\x46\x46\x7e\x08\x1c\x4f\x8f\xb5\x52\x2e\x19\xa9\x8e\x6c\x47\xe6\xa8\xb4\x0c\x08\x0e\x78\x2a\x6a\x85\xa0\x06\x4d\x04\x26\xa4\xe8\xac\x8e\xaf\xc4\xbe\x36\xc0\x95\x91\x86\x29\x47\x8a\x20\xcb\xca\xb6\xb6\xd7\x61\x07\xd9\xb1\xcd\xd0\xcf\x13\xd6\x57\x54\x4f\x00\x63\x5f\x50\xb8\xde\x1d\x11\x53\xb1\x53\xd1\x9a\xc7\xf4\x69\xab\x37\x65\xfa\x4c\xb9\xd7\xfb\xec\x3e\xb2\x67\xeb\xe1\xee\x24\x29\x7a\xdc\x02\x24\x68\xe8\x74\xeb\x43\x5e\xb9\x08\x8d\x40\x93\xfb\x40\x96\x06\x97\x6c\x8d\xf1\xe3\x82\x58\xbc\xa4\xe4\x86\x9c\x20\x1f\x46\x70\x41\x1d\x89\x04\x22\x12\x19\x75\xc7\xe0\x6e\xdb\xd3\x92\xa2\xc0\xb7\x35\xf8\x45\x1b\x81\x1e\xe7\xaa\x12\x3d\x64\x4f\xff\xb4\x79\xf3\x3e\x6f\xc1\xbc\x9d\x12\x8c\x2c\x47\xf1\x10\x22\x32\xd3\x18\x45\x38\x46\xb8\x7f\x87\x0c\xc7\xb7\xe2\x95\x45\x6f\x30\x69\x3b\x44\xa0\x96\xf9\xb8\xa8\xb6\x61\x76\xb5\x79\x3b\xee\x21\x78\x15\xc0\x11\x23\xca\x97\x69\xd7\x38\x03\x84\xfe\x6d\x20\x80\x4e\xe3\xd1\xb1\x82\x98\xce\x9a\xc6\xa3\x24\xe5\xd9\x3c\xd3\xdf\xd4\x3c\x5d\x4f\x97\xc6\x45\x8a\xc7\xea\xd2\x3b\x08\xde\x38\x66\xf7\x2a\x97\x5f\x30\x65\x28\x55\x1c\xe9\xbf\x18\xc7\x3f\x6b\xdf\x67\x13\x97\xa3\xeb\x2e\x14\x07\xa5\x3b\xd3\xbb\x1b\x59\xf5\x6f\x75\x30\x72\x29\x6d\x76\xf8\x94\x48\x2b\xfb\xd6\x74\x53\xb9\x57\x08\xdc\x5c\x23\xf2\x90\x11\xcf\xc5\x42\x1c\x4d\xf6\x14\x9c\xc6\x0d\x6e\xaf\x30\x5c\xe5\x51\xe7\x03\xfe\x8d\xce\xd7\xaf\x6d\x48\x05\x76\xe8\xb8\x8f\x55\xc8\x75\x4d\x82\xac\x5d\xcd\xab\x03\x3b\xb1\xd7\xc1\xb9\x84\x9b\x5e\xc6\x85\x83\xba\x32\xec\x78\x24\xc6\xa9\xb2\x8c\x9a\x60\xf0\x85\xd9\xbc\x94\x49\xf7\x53\x0a\xd1\x25\x89\x4c\x28\xac\xe4\x96\xaa\x42\xee\x13\x98\x08\xd5\x3d\x3d\xb0\x51\xe0\x62\x0a\x27\x66\xf7\x16\x8d\x5e\xdd\xb3\xec\x2c\x1c\xd2\xc9\xcd\x0b\x63\x6c\x11\x06\x09\x85\x99\xe7\x55\x5d\x43\x82\x63\xe2\xb4\x98\xc5\x71\x01\x25\x96\xba\x27\x04\xdc\x68\x3d\x4c\x6d\x15\xc2\xa9\x65\xd2\x06\xfa\x23\x69\x5b\xd0\xc1\xb4\xae\xd0\x2c\xd9\x91\x96\x84\x92\x3b\x61\x37\x80\xb6\xad\xc5\x78\x75\xe3\x57\x64\xb5\x0f\x43\xb6\xe4\xa9\x63\x0b\x69\x70\xbb\x58\x1d\x70\x0c\x1d\x9c\x02\x0c\x88\x1e\x30\xea\x42\x5d\x68\x6b\x24\x35\xa0\x78\x61\x1e\x43\x07\x2c\x12\x26\xa2\xae\x49\x74\x87\x11\x43\x61\x5b\xcf\x35\x0f\xf9\x44\xf3\x06\x9d\x24\x6f\x5e\xc5\x47\xbc\x6f\xe1\x31\xdd\x86\x46\x15\x45\x49\x5d\x3f\xec\x55\x5d\xf7\x2b\x78\x1a\xcd\x0b\xce\xc3\x2f\x55\x86\x16\x8b\x90\xb5\xcd\x38\xc8\xe1\x06\xe8\x5e\x24\xf0\x79\x13\x5d\xdd\xa5\x5d\x28\x25\xf8\xd2\xb2\x12\xac\x9a\xc9\xd5\x5e\xc6\xfb\x31\x53\x5a\x2b\x41\x52\x86\x69\xd5\x3d\x33\xd3\xe0\x5b\xb6\x90\x8b\x75\x04\x43\x93\x02\x37\x50\xec\x2b\x0f\xf5\xac\xcb\x2f\xbc\xb9\x0a\x16\x21\xae\xd0\x23\x0e\x2c\xf0\x96\x3a\x4a\x54\xc7\x43\x64\xc3\x83\xab\x4e\x4d\x3e\xcd\xbb\xf3\x8b\x26\xd7\xe5\xae\x40\x68\x30\xa1\x43\x75\xee\x4c\x58\x1b\x8f\xe6\xe2\x78\x64\xed\x9e\xf9\x09\x5b\x37\x73\xa3\xce\x65\x85\x1c\xc6\xc5\xe0\x62\x48\x90\x5d\x3a\x89\x34\x72\xd6\x45\xd4\x83\x75\xa7\x13\xd7\x63\x16\x38\x71\x83\x47\x72\x09\x0d\x4e\xaf\xd8\xe1\x70\x3c\x0b\x1d\x48\xcb\xe4\x5b\xc3\x1d\x6e\x1a\x14\xe5\x9c\x9e\x1e\x0b\x0c\xd7\x51\x2f\x7c\x09\x67\xc6\xfc\x43\x95\x58\x64\x7f\x5c\x47\xf8\x05\xbb\xdb\x22\xdc\x15\x72\xef\x1e\x36\x60\x72\xa9\x1d\xa9\xd0\xb3\x8e\x5a\x48\x2b\x97\x44\x5d\x48\xa3\x09\x87\x4b\x10\x54\x5d\xd2\xe6\x72\x98\xa8\x2c\x82\xba\xa4\xc5\xb9\x5f\x24\x5b\x84\xde\x0b\xf1\x64\x86\x38\xd5\xe6\x88\x54\xa1\xba\x84\xdc\x8d\xa3\xeb\x63\xa9\xc0\x46\xfb\x56\x2e\x9b\x5f\x71\x59\x20\xb4\x40\xd4\x60\x0c\x14\xa9\x54\xcf\xbd\x80\x50\x58\xf6\xf2\xe3\x5f\xbe\x7f\x0a\xdf\x7e\x77\x0d\x7f\xfd\xdd\x3b\x16\x89\xfb\xcc\x7b\xf9\x1a\x0c\x39\x06\xe9\x5f\x69\x20\xf4\xd6\x48\xfa\xd7\x01\x12\x47\xbf\xf2\x52\x19\x75\xd8\xa8\x7a\xb9\xec\x2e\x76\xba\x3f\x42\xd9\xd3\x5e\x3e\x29\xa2\x47\x8f\xde\x77\x7c\x70\x11\x3a\x78\xfb\x98\xa8\x9f\x47\x11\xd7\x0e\x8e\x2b\x7b\x05\xca\xab\xe7\x20\x93\x59\xab\xf8\xb4\xca\x15\x1f\x6a\xe7\x4e\xcf\x20\x96\xa3\x27\xc8\x97\x62\x91\x07\xe2\x9c\xda\x72\xcf\x17\x57\xde\x5e\xdb\x37\x0c\xc2\xc3\xcb\x21\x3f\x5f\x81\x63\x35\xfb\xbd\xd6\xea\xc7\xae\xd1\xa1\xfc\xec\xf3\x50\x3a\x37\xa7\x1d\xa3\x02\xc7\x5a\x3c\x8f\x0a\x84\x0f\xd5\x32\x82\xf6\x96\x5b\x2b\x24\x02\x19\xef\xc9\xad\xc5\x31\x9a\xa9\x8a\x9d\xc8\x7d\x6f\x7b\xf7\x09\x96\x7e\x0b\x59\x9a\x77\xfc\x9d\x56\x79\x1f\xe0\x6b\xe1\x82\xd2\x6f\x43\x3e\x83\xc0\x21\xde\xb5\x97\x5f\x37\x34\x58\xc6\x27\x51\xef\x71\x0f\xf2\xd5\x43\x5c\xf5\x2d\xaa\x7a\x8f\xe6\x55\xe8\xa6\x99\x3e\x33\xae\x5a\x3a\x53\xc9\xf0\xb3\x36\xce\x06\x2a\x22\x64\xeb\x68\x83\xfd\xd8\x9c\xab\x03\xcf\x3b\x72\xd0\xe9\x38\x37\xfa\x64\xf9\xa0\x92\x32\x96\xaf\x11\x1c\x9d\x0a\x69\x77\x25\xcf\xb0\xbe\xfa\xc9\xdc\xbc\x37\xb0\x88\x78\x01\x8a\xb0\xd1\x75\xdf\x6e\x9d\xb6\xd1\xa9\x3a\xd7\x89\x37\xbc\xdb\xe6\x47\x7e\xa2\x12\xbb\x31\x69\x02\x43\x21\xa1\x06\x61\xe6\xb1\xbb\xe0\x87\xc7\x52\x16\x26\xb6\x63\xdc\x58\x3a\xe3\x12\x5f\x1c\x09\x7d\xd4\x50\x38\xb9\xfe\x95\x18\xf9\xa3\x6e\xee\x6b\xd6\xa1\xf1\x34\x70\xed\x45\x72\x17\xf0\x3b\x1e\xb1\x52\xf8\xe6\x31\x56\xf6\x4c\x23\xde\xa4\xc0\xb4\xde\x90\x5a\x3f\x1f\x46\xe6\xe3\xda\x86\x1a\x0a\xca\xb9\xbc\x8b\x0a\x67\x20\x9a\x70\x3f\xc1\xed\xdd\x47\x20\xc1\x6c\xe2\xe1\x3f\x3d\xbb\x05\xbc\xea\x8a\x28\xb1\x4a\xd0\x3d\xf7\x0d\xfb\x5a\x65\x2d\x88\x2d\x04\x9f\xbd\x1a\x93\x52\xa8\x8c\x8a\x88\x59\x66\xb8\x06\xc4\x99\x92\xd6\x04\xbb\x5c\xae\x54\x78\xd1\x9e\x48\x7b\xb2\x5e\xd5\x04\x3d\x6a\x70\x7e\x83\xd1\xad\x42\x9e\x81\xb9\x3b\x26\xb7\x03\x01\xbc\x26\x2b\x40\xd5\x5d\x7d\xfe\x58\xf8\x02\xd6\xcf\x96\x77\x09\xea\x69\x87\x0b\xca\xad\xa3\x24\x7d\x28\x75\xd1\x5a\x49\xab\xae\x02\x38\x42\x93\xbf\x8a\x1a\x46\x67\xe0\xf5\xaa\x6d\xe4\x53\xd7\xb2\x3a\x0c\xdd\xe2\x07\xa3\x12\x34\xa4\xa9\x7a\x40\x51\x16\x4f\xcb\x1c\xb2\xc0\xab\xc0\x8b\x12\x93\xea\x16\x72\xc2\xe0\x31\x1d\x9b\x79\x29\x9e\x3f\xa6\xe8\x96\x84\x72\xdc\x72\xa1\x9c\x4c\xf0\x83\x89\x98\x12\x2f\x9a\x1a\x69\x6a\x6b\x16\xca\x42\x9e\x1c\xdb\xe8\x78\x4b\x94\xd3\xe6\xb1\x84\x82\xfd\x60\x5f\x4a\x26\x2a\xae\xdd\xa3\xf9\x10\xc8\xd0\x13\x10\x1b\x7c\x9d\x31\xc3\x30\x24\x30\x05\x24\x47\xef\x46\x4d\xc1\x4d\x27\xf0\x85\x90\x8b\xca\x72\x03\x4c\xa4\x25\x73\xa5\xcc\xbc\x96\x4a\xa5\x52\xb7\x3d\x5d\x37\xe3\xee\x9a\x42\x89\x6a\xcb\x50\xf0\xb1\x0d\xc6\x04\x8e\xba\x86\x32\x82\xc7\xb2\x90\xaa\xc7\x68\xc4\x11\x13\x98\xf3\xea\xaa\xc6\x34\x22\x02\xbb\x41\x10\x66\x1a\x13\xf4\x4a\x23\xfc\xd7\x10\x2c\x72\x66\x8d\xd9\x2b\x45\xb7\x48\xb5\x25\xa3\x62\xca\x9e\xb8\xc5\x53\xa2\x0b\xe4\x1d\xbb\xb1\x72\x42\x12\x75\xe8\x96\xa5\xaf\x1c\x8d\xd9\xef\x24\xc9\x78\xf8\xbe\xda\xb5\x2d\xbc\xf1\xc7\x6d\x84\x57\xa1\x0f\x9c\xf5\x65\xe4\xef\x09\x9d\x37\x04\x39\x1a\x61\xae\xd5\xc3\x1e\x91\x26\xfd\x61\x46\xb9\xad\x3e\x47\xa4\x03\x17\x44\xaa\x20\xf7\xda\x4c\x48\xeb\x92\x51\x1a\x42\x55\x1c\x59\xa5\xb7\xd0\x85\xfa\xe8\x0b\x3e\xfb\xab\xc9\xeb\xc8\x9e\x8d\xbe\x47\x00\x5d\xad\xe4\x5f\x2c\x4c\xbd\xd3\x28\xf0\xd9\xf9\xe9\x51\xf2\x04\x81\x6d\x8c\x91\xf3\x25\x6e\x65\x4f\xbf\x8e\x0c\xf6\x86\x0a\x8b\xab\xfe\x57\x1b\x5b\x37\xee\x0c\xe7\x19\xaf\x4d\x4c\x42\xe0\x9e\x49\xa2\x2e\x08\xdd\x5d\x4b\xa2\x22\x84\xf8\x8e\x5e\x37\x48\x78\xb5\xa3\x30\x30\x34\xd3\x8c\x88\x0d\x1e\x4e\x18\x31\xa3\x26\xe5\x1a\xea\x30\x21\x09\x4c\x3d\x61\x78\x82\xf0\xc8\xee\x5c\xd3\x1a\x32\xdb\x79\x08\xc9\xa2\xc5\xd5\x90\x2c\x0e\xc7\xd9\x11\xd8\x85\x7f\x47\x32\xf1\x33\x04\xd8\x55\x65\x95\xd4\xd3\x25\x77\xc4\xc4\xc2\x33\x7b\x66\x14\x5b\x81\x51\x85\x10\xe9\x58\x8a\xcd\x3c\xe2\x8f\x52\x90\x54\x57\x9a\xae\xa5\x90\xff\x9f\x91\xa8\x18\xbf\x33\xbb\x18\xaf\xa1\x51\x77\x8f\x97\xba\x84\x11\x6c\x9a\x97\x91\x72\x4c\x26\x45\x69\xb6\x83\x52\x25\x49\x6d\xe9\x99\x90\x77\xa0\x21\x80\x1b\x39\xcf\x86\xa7\x03\x3b\xf1\x47\x22\xfd\x42\xfb\x7f\x9c\xfb\xd3\xa3\x94\x4e\x15\xe6\x9f\xd0\xf5\xf9\x3c\x78\xb5\x5d\x49\xee\xbe\x39\x83\xc2\xc8\x33\x9f\xd9\x28\x6c\x10\x36\x06\x81\x3f\x54\xaa\x0b\x32\x3d\x78\x1c\x77\xe0\xba\x26\xd7\xc8\x54\xec\xff\xb8\xa0\x44\xfd\x20\xac\xa8\x9a\xdb\xda\x06\x01\x19\xfc\x83\x61\xc7\x07\x50\x70\x08\x05\x07\x1d\x12\x49\xc4\x11\x3f\x5a\xca\x12\x46\x7e\x62\x1d\xf3\x4a\xb7\x79\x9d\x2c\x60\x3e\x26\x1b\x8d\xf1\xea\x45\xea\x85\x49\x23\xa5\xb2\x35\x46\x7c\xb6\x78\x39\xe8\xa2\x08\xfa\x28\x08\x56\xdd\x10\x24\xa5\x6d\xab\xdd\xd0\x70\xb3\x93\x26\x95\x6b\x98\x65\xee\x4f\xf8\xf3\xf2\xa6\xb7\xde\xc8\x36\x50\x46\x5d\x76\xf7\x39\xac\x28\x1f\xdc\xcb\xcc\x8a\x9a\x74\x6e\x34\x44\xcf\xb9\x53\x53\x9c\x97\xee\x28\x04\x2f\x37\xb7\xd8\xdd\x2e\xf7\xe7\x34\xae\xfd\xb5\x70\xeb\xed\x0c\x64\x87\xac\x1b\x8b\x46\x25\x6d\x71\x91\x58\x49\x62\x33\x64\x70\x07\x13\x68\xd6\x4b\x25\xa9\x1d\x59\x02\xd4\x85\x75\xb8\x10\xa0\x8a\x3d\xfe\x85\x1f\x72\x1e\xb5\x4f\xdc\x3b\x6d\xa6\x99\x96\x75\x08\xed\xd0\xc6\x94\xe9\x67\x0c\x36\x66\x5c\x4f\xd7\x60\x62\x3b\x54\x0b\x69\x5e\x82\xd8\x6a\x48\xa9\x53\xd8\x02\x6e\x42\xea\x6a\x46\x66\xce\xf4\xfb\x7b\xdd\x6b\xe9\x99\x92\x2a\x2a\x34\x1b\x3c\x2a\xe8\xca\xac\x0c\x30\x32\x6a\x1b\x31\xba\xaa\xe6\x59\x2c\xd9\x93\xc2\x79\xe1\x6a\xc5\x8e\xb3\x81\xd6\xa9\xdd\xaa\x42\x36\x09\x20\x7a\x16\xd4\xc9\xad\x1e\xf4\x66\xfc\x5b\x37\x46\xb0\x7b\x8c\x56\xf6\x80\x72\x63\xd3\x18\x0e\x73\xc6\xa6\x5c\x6b\xf3\x98\x92\xda\x57\x38\x02\x51\xdd\xcd\xaa\x5e\xc6\xc2\x55\xb2\x46\x12\xa1\x0e\x03\x23\x19\x5a\x9a\x6a\x39\x6e\xa3\x0a\xb5\xd1\x92\x2a\x00\xdf\xf0\xee\xf7\xb2\x52\x28\x00\xaa\xb1\x2e\x88\x5c\x4f\xab\xda\xe8\x47\x18\x3b\xc4\xbe\x59\x54\xdb\x19\x19\x19\x4a\xec\x16\x47\xc0\x2f\x4f\x4d\x14\xfc\xa6\x3c\x5d\x41\xda\x82\x24\xe3\x00\xca\x35\xd4\xea\x2e\x2d\x88\xec\xca\xce\x71\x8a\x0e\xde\xc9\x58\x2e\x24\x81\x31\x58\x78\x34\x6f\xf6\xb2\x0a\x70\x8b\x2b\x85\x5a\x43\x4e\x73\x13\x94\xec\x98\x9e\xce\x07\x69\x48\x93\xae\xa3\xe4\x69\x32\xc5\xd9\x66\xe4\x4a\x08\xfe\x29\x57\x31\xaa\x6f\x07\x67\x23\x0f\x17\x74\x8d\xe9\xd4\x1b\x45\x4f\x51\x5f\x4d\xfe\xd2\xba\x72\xf5\x8a\x31\xf6\x03\xae\xd8\xc0\x90\xd2\x3c\x21\xa5\x20\x78\xff\x1a\x94\xcf\xb4\x66\x7b\x35\xee\x19\x45\x02\x5d\x41\xf1\xaa\xee\xa9\xa3\x47\xcc\x9e\xdd\x83\x08\x7a\xbd\xec\x2a\x71\x47\x0e\xc9\xd4\xe3\x56\x0c\xf9\x5a\x5d\x7b\xa5\xd6\x48\x8a\x52\x6b\x93\x5f\xd0\xe8\x6c\x6e\x84\x93\x58\xb3\x15\x36\xea\x93\x91\x29\x62\x9c\xd5\x35\x51\xf6\x90\x54\xc3\xc9\xd5\xf5\xa1\x9e\x26\xcd\xdd\x9e\x64\xf8\x42\x82\x66\xd9\x7a\x81\xde\x47\x8f\xf4\x6b\x2e\x61\x78\xaa\x01\x69\x5e\xe1\x7c\x4b\x7e\xae\x0b\x22\x94\x86\xea\xa3\xa3\x0e\x3b\xfc\x9e\x1c\xe5\xe0\x7f\xef\x45\xd9\x93\x77\x6e\xa4\x1a\xc5\xed\x19\x8c\x3a\x33\xb5\x44\xdc\x0c\xbb\x2a\xf8\x72\x82\x83\xa5\x09\x31\xf8\xad\xb3\x42\x7a\x21\x8d\x0b\x8a\x78\x18\x8f\x0b\xda\x3a\x90\xcf\x75\x7f\x9e\x13\x83\x75\xca\x2b\x50\x55\xbb\x60\xc1\xd2\xc0\xf9\x22\x58\xb3\x23\x99\x49\xf0\xca\x1c\xc1\x44\xd7\x02\x79\x67\x19\xcc\x20\xce\x46\x4e\x79\xc1\xa4\x79\x68\xc0\xe1\x5a\x63\xa8\x39\xf3\xfa\xb2\x4c\x2d\xec\x06\x6a\x00\x2d\x6f\x6a\x94\x11\xa1\x0d\x3a\x41\x43\xcb\x2a\xc8\x32\x22\x67\x88\x92\x6f\x7e\x01\x47\xb7\xf6\xe9\xe7\xee\xee\xed\x7d\x57\x7f\xf4\x71\xeb\xe9\xb1\x44\xf1\x94\x27\x2f\x3b\xc4\xef\xaf\xec\x6f\x9c\x8c\x81\x8f\x63\xb8\xcc\x2f\xee\x1f\xbc\x77\xac\x1f\x59\x58\xe4\x18\xe9\x76\x88\x74\x9d\x2d\x66\x0e\x45\xdd\x4d\xec\xbd\xdf\x14\x65\x78\xd4\xfb\xae\xd8\xf1\x77\xaa\x6b\xc6\x2e\x23\xb8\xe3\xd0\x34\x3c\x8b\xb7\x6b\x91\x3d\xcc\x72\xe6\xa5\xe5\x37\xf3\xd2\xf2\x5e\x0a\xfc\x53\xa6\xf9\x71\xc3\x99\x83\x7f\x0b\x28\xbb\xda\xf0\x63\xa1\xd2\x90\x20\xf1\x13\xe7\xa9\x9f\x89\x52\xc3\xa9\x1f\x09\x76\x5e\x98\xb3\xec\x4a\x55\xbe\x45\xaa\x1c\x1a\xa5\x43\x34\xe4\x67\x8c\x3a\x7d\xc1\xa8\xd3\x1b\x03\x6a\x9e\xa1\xf3\x74\x66\xfd\x73\x50\x2a\x7f\xe6\xa0\x67\xdc\xaa\x7d\xe8\x16\x19\x93\x8f\x9b\x67\x66\x8b\xf2\x47\xe9\x39\x9a\xdd\x30\x48\x0f\x81\xb0\xf1\x2e\x47\xe8\x5b\xa6\xef\xbd\x04\xed\x97\x0c\xff\xfe\x63\x77\xc3\x7f\x61\x8c\xf5\xf5\x99\xed\xc3\xbf\x07\xc8\xc9\xf0\x3f\xa7\x48\xcb\x70\x4f\x80\x80\xcf\x1e\xdf\x8e\x18\x3b\x76\x77\xb6\x78\xa8\x9e\x32\xdc\x9a\x46\xf5\x94\x11\x69\xf9\xd1\x65\x6f\x46\x35\xf5\x2f\x29\xec\x92\xa7\x0a\xfe\x26\x1f\x6c\x37\xa9\x81\x46\x1d\xc2\x37\x2b\xcb\x9c\x81\xb0\xbd\x08\x42\x1d\xfa\x32\x58\x74\x1b\x7b\x62\xa7\x01\x3e\xf7\xc0\xbc\xd5\x92\xd9\x8e\x65\x66\x9e\x83\xf0\xcd\x02\x34\xea\x20\xe4\x23\x08\xdb\x57\x08\xc2\xe9\x51\xbf\xa8\x2a\x21\xfe\x68\x5c\xbc\x09\xe1\xfe\x2a\x84\x1d\x55\xf8\x80\xa4\x37\x28\xab\x23\xa9\x03\xac\x6f\x3b\x32\xf2\x27\x43\xf8\x6f\x05\x49\x1f\x47\x14\xe2\xe2\x41\x08\xaa\xb8\x50\xd5\xb7\xc8\xc0\xb1\xe8\xe3\x27\x90\x81\x8f\xc5\x63\x39\x90\x02\x3e\x10\x82\xfe\x32\x84\xdb\x11\xc2\xfc\xf5\x41\x38\x39\x81\x1d\xb1\x07\x7a\xa6\xe2\x2c\xfc\x41\xca\x53\x75\x12\xbd\x24\xa4\x03\xb0\x6d\x30\xaf\xae\x37\x3a\x9f\x77\x06\xf1\x0b\xa6\xe5\xa6\xc1\x71\x54\xfc\x7c\x64\xe7\xdc\xfd\x6d\x2f\x91\x29\x50\x3b\x77\xb8\x34\x21\xd6\x27\x70\x47\x78\x83\x47\x2d\x25\xb7\x5f\x20\xc7\x69\x43\x5e\x36\x61\x4a\x08\x86\x30\x01\xf8\xd2\x57\x18\x5c\xa4\x10\xe7\x95\x99\x58\x49\x10\x71\xaf\x9e\x5b\x18\xda\x4c\x8d\xae\x1b\x26\xee\xe4\x4a\x92\x06\xc9\x58\x19\xaa\x3e\x35\xb9\x8e\x57\xeb\xb7\x36\x12\x28\x3a\x6b\x27\x91\x8a\xdc\x65\xf0\xb2\x22\xa9\x4b\xe8\xd4\x2f\x88\x3f\x73\x3c\xcc\x6e\x59\xf1\xa8\xeb\xee\x89\xef\x00\x87\xe1\xa6\x9b\xeb\x16\x24\x8e\x7c\x8e\xee\x30\x55\x3c\x6f\x5c\x01\x82\x9e\x81\x47\x8f\x08\x31\xe1\x7d\x07\xee\x3b\x68\xc3\x02\x8c\xba\x9b\x28\xe7\x73\xe5\x96\x3f\x44\xd6\x67\x0a\xb0\x1b\x5a\xbc\x64\x77\x86\xb9\xb8\xb9\x26\x28\x79\xa1\xd1\x51\xe0\x52\x3d\x0f\x4d\x57\x92\x67\x7b\x32\xdc\x91\xbd\x03\xc2\xb8\xf7\xc0\xa7\xa0\xf6\xeb\xd5\x55\x79\xaf\x6f\xf9\x09\xb0\x39\x92\xf9\x89\xd4\xfb\xe1\x77\xed\x1e\x63\x57\x75\x09\x33\x31\xc7\x35\x70\x6a\x6f\xa6\xc3\xf8\x12\x00\x73\x2e\x08\x9f\x64\x11\x54\xae\xad\x6d\x24\xd3\x78\x13\xa4\x34\x60\x9a\x7a\xa1\x1a\xbb\x17\x87\x41\xe2\x91\xd4\x89\x53\x77\xb6\x0e\xa4\x67\xdc\x59\x82\x22\xa7\xc5\x69\xae\x85\xbd\x68\xe5\x7f\x98\x54\xe1\x29\xe2\xbb\x48\x1d\x16\x29\xa3\xcc\xde\xc6\x5a\x29\xfb\x4f\xc8\x75\xcb\xa8\x14\x51\x91\x88\xcd\x2f\xe6\x93\x30\x5a\x06\x7f\xf1\x0c\xb2\xc7\x14\xca\x1e\x0f\xc9\x4c\x95\xb8\x6d\xdc\xa8\x5e\x38\xa6\xe6\x31\x41\x46\x1c\xaa\xe7\x48\xb4\x05\xbf\x06\xa9\xf9\x32\xca\xc9\xb3\x8b\x56\x9e\xff\x2a\x8f\x34\xd6\xd9\x53\x55\x67\x17\xc1\x74\x4f\xd6\xaa\x7b\x86\x9d\xec\x82\x56\x9e\x72\x56\x3e\x25\xcb\xf5\xe7\x1a\x69\x3d\xa6\x24\x99\xd9\x62\x90\xe0\xc6\xc6\x9f\x3f\x73\x78\xed\xe7\x1b\x5e\x5e\x34\x42\x27\x9f\x97\xdc\x0b\x21\xb5\x0d\xe7\x84\xc8\xda\x90\x12\x52\x68\xda\x9e\x42\x3a\x19\xfe\xac\xd1\xf6\x9f\x6b\xb4\xbd\xb5\x05\x39\x1b\xdb\xe2\xba\x76\x5d\x90\x73\xb1\x3a\xcf\x93\x62\x5c\x4a\xaf\xc4\x8b\x52\xe9\x7d\x44\x97\x8a\xf6\x03\x01\xd8\xcd\x58\x8c\xfc\x77\xa9\x7f\xce\x8c\x6a\xfc\x39\x66\x84\x38\x01\x96\x9b\x65\xad\x37\xea\x75\x2f\xfc\x33\xb2\x61\xd9\x09\x81\x8c\xca\x9e\x83\x60\x8c\x7a\xb9\x9b\x07\xa7\xb6\x48\x42\x50\x5f\x5d\x02\x53\x31\x88\x7c\xc6\xb4\x0e\xa9\xbb\x13\x6a\xd0\xd6\x4a\xb5\x21\xf6\xb5\xf6\x25\xa4\x6a\xe7\xbf\x2c\x41\x19\x3e\x14\x7a\x4d\x5c\x2e\x41\xbb\x18\x11\x46\x41\xe2\xa5\x54\xa1\xae\x6d\x09\x05\x09\x1c\x58\xae\x41\xe4\x2c\x7a\xba\xde\x22\x3e\xf8\x50\x2b\x32\xce\xf4\x03\x23\xf9\x40\xbe\x40\xf4\xd1\x21\xad\xab\xeb\x4d\x76\x87\xa7\x5b\x06\x02\xa6\x17\x93\xc4\x58\xdf\xa0\x08\x75\xa7\x0d\xcf\xd3\x9c\x7d\x50\x04\xad\x4c\x8f\xb0\x4f\xd1\xd0\x54\xfd\x79\xe6\x23\xdc\x96\x30\x0a\x23\x21\xa7\x3b\x70\x61\x81\x41\x20\xb0\xd4\x4b\xd0\xda\x3e\x76\x26\xb9\x31\x69\x2c\x0b\x52\x9e\x8b\x2e\xec\x39\xf5\xe2\x28\xa8\x26\x8b\x67\x50\x17\xf5\x45\x0e\xa9\x96\xcf\x9d\x7e\xfa\x99\xa6\x5f\x6c\xd7\x42\x2f\x1f\x51\xdb\x36\x12\xd7\x38\xd4\xa5\xd2\xdb\x25\xe8\xee\xde\xf6\x25\x0b\xe9\x8a\x20\xd5\x65\xff\xc2\xbc\x60\x41\x6a\x4a\x3c\x08\xb8\x71\x78\x10\x18\xd1\x67\x78\x54\xfa\xde\x86\x6c\x7d\xf0\xb4\x1e\xc6\x3c\x9f\x9e\x81\x2d\xff\x3c\x60\xd3\x38\xb3\x9d\xcb\xee\x9b\xfa\xf1\x30\xd2\x19\xe0\xa2\xb7\x8a\xb8\xaf\x06\xb8\xec\x50\xbd\x29\xa1\xe5\xed\xd0\xfd\x43\xf5\xc9\x2f\x9a\x68\x8a\x07\xcf\xc8\x03\x56\xa4\x28\x9f\x38\xe3\x93\xd0\x25\xfd\xfc\x69\xde\x18\x08\x79\xa3\x02\x2a\xf3\x59\x09\xd4\x9c\x47\x5a\xa4\x6b\xc8\x87\x64\x8f\xf2\x31\xc9\x1e\x9f\x97\xa5\x3c\xcb\xe3\xa8\x2f\xaa\x49\x4f\x26\x78\xa7\xc7\xbb\xcf\x69\x74\xd7\x87\x57\x3c\x9e\x5c\xdb\x0b\x40\x7c\xd4\xd7\x1f\xe5\xc3\xa3\xf4\x5a\xa6\xa4\xe6\x65\x98\xd3\xd4\xbb\xeb\xcb\x7d\xc1\xc9\x5c\x3f\x95\x9c\x1d\xcd\xaa\x75\x94\xcb\x70\x87\x6b\xb7\x10\x4e\xdc\x19\x85\xbb\x3e\xe9\x99\xfb\xda\x3a\x4a\xeb\x35\xa4\x54\xdf\x2a\xdc\xf9\xbc\xf2\xee\x07\x85\x46\x53\x75\x18\x78\x60\x99\xfb\x5f\xc2\x84\x9e\x47\x1c\x72\x52\xf8\x8e\x20\x74\xc5\x3d\x2f\xb9\x2d\x88\xb4\xbe\x06\xed\xf5\x03\x4c\xa5\x8f\x2e\xd6\xcb\x1e\xca\x0d\xd5\x45\x73\x77\x47\xd8\x77\x91\xfc\x16\x07\x19\xc3\x01\xd3\x9d\xf5\x3c\x66\x24\xb8\xad\xd8\xb5\x5d\x05\x18\xa9\xa7\x2e\x34\x7b\x45\xd0\x5b\x81\x87\x5c\x50\x97\x2b\x7a\xd8\x19\x95\xcd\xcb\xdb\xa5\x74\xd5\x9e\x5c\x06\x54\x14\xa6\x73\x1f\x50\x0f\x0b\x4d\xa3\x16\x41\x28\xd7\x90\xcb\xde\x8f\xfb\x72\xb1\x07\xe2\x48\x22\x85\x5d\xb5\x7a\xce\x27\x4f\xb2\x24\xe9\x21\x5f\x5b\x6b\xb7\x40\xef\x34\x92\x2d\xa2\x92\x7c\x26\xb9\xe6\x32\x30\x3f\x97\x15\x23\x1b\x9f\xda\xe6\xc7\x31\x22\xa7\xce\x3e\x34\x6d\x34\x06\xed\x59\x8e\xcb\x5d\x1f\x5e\x31\x70\x04\x92\x49\xa2\xa0\x1b\xea\x8f\xe1\x9a\x3d\x61\x2e\x86\x15\x7c\x5c\xb7\x18\x66\xa0\x47\x8e\x33\x22\x1e\x09\xc4\xad\xcb\x33\x08\xdf\x74\x70\x6f\xe9\x10\xf5\x4b\x94\x6d\xfa\x91\x2a\xc4\x91\x64\xd6\x96\x68\xba\xac\x5f\xe0\x8f\xd6\x33\x19\xc1\x71\xaa\x2f\x79\xec\x24\x37\x7f\xd6\x7c\x4f\xd5\x9e\xd9\x85\x3e\xcc\xb4\xb9\xeb\x5b\xe6\xf7\x6e\x1f\x1c\xa6\xa8\x36\xbe\x68\x1f\x77\xf2\xb1\x7f\xf4\xf6\x4d\xb7\x45\xc9\x95\x8b\x42\xad\xc3\xaa\xd7\x37\xdc\x3a\xf7\x52\xac\xee\x9b\x53\x11\xf1\xf4\x30\x32\xbd\x23\x95\x46\x8f\xdb\x08\x1e\x4c\x71\x43\xb4\x22\x23\x45\x3c\x22\x97\x24\xb6\x75\xb2\x49\x24\xd1\x23\x23\x6b\xd9\x18\x2e\x87\xd1\xd3\x99\xdb\x76\xab\xdb\xd0\x00\x94\x87\xbc\x28\x13\x2f\xb0\x09\x14\x59\x91\x85\xd1\x13\x6c\x25\xde\x82\x87\xe8\x19\xff\xd2\x85\x18\xae\x54\xee\x11\x9e\x3c\xdc\x1d\xf1\x0c\x7d\x7a\x3a\x72\x5b\xbd\x74\x29\x9c\x42\x4a\x23\x41\x15\x49\xa9\x24\xa5\xb9\x62\x87\x1b\x3e\x81\xca\x0e\x9e\x60\x65\xa4\x8f\x46\x2d\xb8\x4e\xdc\x13\xd4\x6b\x88\xa0\x43\xf4\xa2\xcc\xaa\x2f\x48\x52\x03\x85\x38\xa2\x2f\x3d\x61\x86\xfb\x61\xc8\xa9\xdf\x58\xd3\x63\x01\x7a\x4f\x48\x6f\x4c\xc6\x9e\x2e\xdf\x13\x90\x23\xef\x42\xc9\xa4\x51\x3d\xfd\x5b\x82\x57\x08\xd4\x2a\x23\x14\x71\x64\xae\x28\x91\x44\x37\x13\x2e\xe3\x70\x98\xe5\x68\x37\xbd\x6a\x81\x46\x8f\xb7\xdb\x20\x95\xa5\x05\x2e\x2d\x86\xc0\x9e\xd7\x44\xa3\xce\x7c\x36\xee\x21\xa5\x7d\x96\x65\x40\xb8\x9f\x71\xfb\xf2\x66\xd1\x66\x3f\xce\x3d\x9f\xdb\x4e\xfa\x27\x33\x13\xa9\xb2\xd0\x3d\xf9\xf6\x84\x0e\x70\x9c\x32\xd2\x14\xe1\x9c\x6c\x8b\x00\x9a\x45\xc2\x83\x7a\xb7\x2b\xa7\xb2\x32\x4a\x29\x13\x4e\xf2\xb4\xf9\xd9\x6a\xa2\x5f\x2a\xf7\xbd\xb6\xd1\xa7\x30\xba\x0c\xde\x67\x18\x9d\xb6\xfd\x4c\x50\xaf\x1f\xb9\x86\x42\xae\xd4\xf6\x0c\x65\x45\x29\x01\x05\x04\x4a\x23\xae\x8c\xbf\x45\x3d\x85\xd9\x1a\x3a\x22\x23\x3c\x2c\xcf\x73\x9a\xb9\xff\x0f\xea\x32\x7a\xdd\x19\x77\xc2\x71\xbb\x48\x8a\x34\x6b\x85\xfa\x6d\xcf\xaa\x06\xd5\xac\xaf\xc2\xf9\x09\xdf\xd2\xf1\x44\x71\xb7\xa9\x83\xb3\x85\xb3\x0e\x23\xff\x5e\x87\x08\x8e\xfc\x3d\x48\xee\xb7\xf0\xc1\x81\x21\xdc\x57\xea\x7c\x56\x94\xf9\xec\xd6\xce\x0c\x4c\x0a\x86\x84\x83\x67\x63\xce\x77\xa7\xa0\x1e\xa3\xab\x5e\x21\xb7\xcf\xf3\x13\xbf\x40\x6e\xd3\xcd\x94\x32\xd8\xf2\xd7\x03\xed\xde\x8a\xc5\x3a\xaa\xde\xe0\x55\xfa\xf9\xbd\xd5\xf8\x66\x2e\xdf\xbd\xc0\x6b\x98\x44\xdf\x4f\x1f\x96\x44\x5e\x8f\x62\xf3\xf2\x14\x17\x1b\x89\xdd\x85\xdf\x28\x0a\x57\x8c\x4a\x16\x38\x6d\x5e\x2d\x6f\x01\xb5\xc1\x1a\xfc\xcd\x67\xa5\x2e\xfc\x38\x11\x0f\xc0\x73\x07\xda\xbe\x3b\xd0\x0e\x53\xdc\xae\xf9\x0b\x72\x70\x1c\xb9\xc5\x08\xea\x9d\xf7\xce\x1e\x77\x76\x27\xa2\xf0\x8d\x93\xbc\xf7\x24\xc1\xd0\xe9\xe6\x08\x31\x59\xce\xa0\x6f\xcb\x29\x7b\x55\xd8\xaf\x16\x72\xfc\x9c\x9b\xe7\xe1\xb3\xf5\xd2\x7e\x1b\x3a\xae\x5f\x05\x72\xed\x6b\x87\xdc\x5d\xa5\x07\xfd\x00\xe7\xee\xc0\xf4\x11\x6d\x4f\x40\xd1\xbf\x66\x50\xe4\x3c\x94\x1a\x46\xb4\x8f\x46\x38\xdc\xe5\x3c\x64\x7d\x1e\xfa\x86\x93\x79\xee\x55\x50\xbf\xca\x79\x8e\xf1\x5c\xea\xee\x6e\x56\x8f\x26\x78\xd6\x41\x66\x4b\x43\xea\x77\xe3\x64\xea\x48\xa5\xc4\xb1\x6d\x88\xe6\xa7\xa4\x17\xcf\x41\xe5\x76\xf5\x9a\x29\xa7\x0e\xb6\xa2\x64\x94\x65\xb6\x97\x0a\x12\x74\x58\x8f\x63\x4b\x69\x44\x19\xaa\xe8\x29\x01\x20\x64\xce\x24\x7a\xf1\xcc\x0f\x74\xaf\x95\xfa\xb5\x02\xf4\xf3\xe9\x36\xef\xc4\xeb\x3e\x21\xf1\xf4\x49\xb3\x47\xe4\x9a\xaa\x9d\xa0\x7d\x44\xbc\x71\x97\xbf\x05\x88\xa5\x23\xc4\x0e\x44\x59\x23\x53\x7a\x59\x3b\xf3\xcb\x41\x4c\xbf\x66\x88\xd5\xa3\x7b\xae\xbe\xe6\x9e\x7b\x73\x76\x14\x07\xd3\x4b\x15\x41\xca\xab\x8f\x68\x77\x84\x3c\x71\x59\x3d\x81\x60\xfa\x8f\x67\x10\xdf\x8b\xe4\xd3\xe4\xf1\x2f\x7a\xf4\xae\x76\xd4\xbd\xbb\x75\x06\xc1\x7c\x4c\x00\xff\x6b\xc7\xc8\xff\x7b\x41\x30\xdd\xfc\x9f\xe9\x20\xda\xf0\x87\x5c\x18\xbf\x48\x46\x0f\xae\xee\xe9\x13\x2b\xdd\xf4\x1b\x5b\x9b\x28\xb9\xf6\xaf\x45\x44\xbd\xbb\xf7\x02\xbb\x64\x9d\xeb\x45\x44\xae\xb3\x2c\xae\x6b\x6b\xa5\xad\xec\x99\xc1\xa3\xd7\x1f\xdd\x5a\x76\xd5\xca\x16\xfc\x6a\x0b\xfe\x68\xc6\x5e\x77\xc4\x8a\xac\x88\xda\x81\x7b\x04\xc2\x35\xb2\xd7\xab\x42\x89\xbe\xec\x89\xc5\x33\x64\x5b\x41\x69\x48\xef\x10\xd9\xae\x04\xe5\x39\xdd\x97\x0a\xf9\x95\x3c\xaa\x10\x2a\x03\x97\x78\xcb\x28\xd8\xe7\x00\x97\x19\xb6\x27\xf7\x56\x8b\xfd\x40\xa2\x5b\xfd\x9c\x33\x28\xb5\x8f\x86\x52\x5b\x92\xb5\xe1\xb4\x24\xd4\x23\x8c\xba\xf6\xe4\xee\x66\x1e\xb1\x9b\xa0\x23\x41\x5a\x2a\x4f\x0d\x09\x13\x23\xc0\x35\xc0\xe0\xb0\xfc\x1a\x40\x36\x4d\x5b\xb4\x1b\xbb\x9e\xd9\xb6\xae\x1f\x91\xc5\xad\x1f\x2d\x03\xbb\xe5\x04\x5e\x13\xb0\xa0\xe6\x0b\x5c\xba\x6a\xa6\x94\xaf\x9c\x33\xf4\x89\x41\xea\x90\x6a\xea\xf3\x3f\x30\x26\xd5\xb9\x70\xaa\xb7\x36\x61\x34\x7a\x7d\x34\x12\x77\xbd\xb8\x30\xb9\xb8\x1d\xf2\x28\x61\x16\x7a\x1d\x51\x7b\x25\xc3\x4d\x8f\x0b\x82\x92\x3c\x39\x45\x4d\x94\x07\x8c\x10\x70\xe8\x19\x77\xed\xd6\x9a\xcb\xf0\xa4\x73\x86\xb0\xbc\x34\x33\x8d\x65\x4d\x85\x10\x7e\xe4\xc0\x5c\x11\x11\xed\xfd\x58\x37\x9e\xf4\x00\x7f\x7b\x7d\x85\xd0\x29\xe7\x35\x23\x19\x45\x45\x2e\x45\x75\x81\x9f\xa1\x04\xeb\xd1\xb3\x41\x10\xe7\x51\xf2\x25\x8e\xca\x96\x6b\x90\x42\x28\x35\x84\xd6\x48\x94\xb5\x05\x46\x90\x60\x06\x6e\xb1\xa7\xfd\x65\x8f\xba\xf3\x5a\xc5\xc3\x7d\xb6\x8f\x9c\x74\x09\x01\x94\x20\x73\xfe\x0b\xdd\xa3\x20\x4b\x87\xec\xe1\xdc\x37\x28\x6c\xe1\x00\x9e\xb1\x02\xdf\xfc\xe9\xc7\x1f\x36\xfb\xfd\xee\xfd\x9f\x7e\xfa\xfd\x6f\xbf\xf9\xe9\xfa\xe7\xdf\xff\x7f\x01\x00\x00\xff\xff\xad\xd4\x5c\x38\xce\xf5\x00\x00") func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvgBytes() ([]byte, error) { return bindataRead( @@ -518,12 +519,12 @@ func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularSvg() (*asset, return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg", size: 62926, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.svg", size: 62926, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\xfd\x09\x7c\x1b\xd5\xb5\x38\x8e\xcf\x9d\x19\x69\xb4\x59\xd2\x48\x1a\xad\xd6\x6e\x49\x5e\xa5\x58\xb2\xad\x38\x5e\x62\x9c\x7d\x0f\x59\x1d\xd6\x84\x28\x6c\x61\x31\x4b\xc3\x16\x02\xa4\xa1\x40\xda\x04\x43\x21\x94\x42\x4b\x4a\x0b\xa4\xac\x23\x25\x2d\x6d\xbf\xe1\xfb\x5a\x5a\x78\xa2\xad\xba\x86\xb4\xf0\x5e\x69\xd2\x85\x47\xcb\xf2\x5a\xc8\x5b\x9a\xc4\x93\xff\x39\x77\x46\xb6\x6c\x27\xd0\xbe\xf7\xfd\xfc\x3f\x3f\x27\x1a\xcd\x9d\x19\xcd\x9c\x73\xee\xb9\xe7\x9e\x73\xee\x39\x67\x18\xc2\x30\x8c\x08\x1b\x9e\xb1\xcf\x9d\xbb\x6a\xc9\xe5\xab\x5f\xfe\x0b\xc3\x90\x7a\x38\x5a\x3f\x6f\xf6\x9c\xb9\xc4\x00\x67\x18\x32\x1d\xda\x91\x65\x2b\x33\xd9\x4b\x9e\x5a\xb4\x03\xda\x43\xd0\x5e\xbf\xf1\xca\x0d\xc3\x0b\xff\x62\xfc\x22\xb4\xbf\xc5\x30\xec\xb5\x1b\xb7\x5c\x1f\x61\x1a\xb9\xbb\xe0\x66\xad\x70\xde\x70\xf1\xf0\x25\x57\xae\x3c\x90\x79\x0a\xda\x1d\x70\x7e\xd3\x25\x1b\xae\x1b\x86\xe3\x76\x86\xd1\x3f\x8a\xe7\x2f\xb9\xe2\xa6\x8b\x43\xa1\x5c\x14\xda\x5f\x63\x98\x7b\x7a\x2f\xdd\xb4\xa1\xc0\x5e\x34\xa4\x30\xcc\xbd\x47\xe0\x7c\xd7\xa5\x70\xc0\x94\xe5\x6d\x0c\x33\xe2\x85\x76\xc3\xa5\x57\x5e\x7f\xe3\xf7\xbe\x27\xee\x86\x76\x2f\xdc\xef\xd8\x15\x57\x6f\xdc\xd0\x71\xef\x9a\xa5\x0c\xf3\xf9\x69\x08\xc3\x95\x1b\x6e\x1c\x66\x79\xb2\x97\x61\x1e\x78\x07\xe1\xbd\x6a\xc3\x95\x9b\x0e\xbd\xf0\xf0\xfb\x0c\xf3\xa0\x81\x61\xb8\xad\xc3\x57\x5f\x77\xfd\xb7\xe7\x3e\x79\x19\xc3\x7c\x01\x70\x30\xec\x18\xbe\x76\xd3\xb0\xfc\x61\x8b\x8b\x61\xbe\x02\xe7\x99\xf4\x0d\x9b\x2e\xba\x78\xe8\x85\x15\x6f\x43\x1b\xf1\xd5\xc3\x07\xa9\xc3\xfc\xb8\xef\xf1\x9f\xe2\xf7\x4f\x2d\xee\x0f\xd5\x6f\x63\x9a\x9e\xb1\xc2\x07\x21\x03\x60\xa0\x4d\x98\x37\xe1\xc3\xd3\x16\x3c\x8e\xbf\x83\x8c\x30\x3a\x86\xe7\x2c\xec\xcf\xa0\x7d\x8e\xfa\x4d\xbe\xc6\x64\xd9\x6f\xe1\x4f\x74\xcc\xe9\xff\x56\x2f\x5a\xbb\x94\x19\x60\xea\x7e\xc7\x70\xdf\x3d\x05\xb4\xd2\x79\x99\xad\x55\x48\xb4\xbf\x08\x6d\x71\xda\xa7\x5e\x3d\x47\xae\x80\x16\xa1\x6d\x9e\x2c\x87\xef\xe5\x70\x17\x1d\x52\x9b\xa9\x83\x5f\xb4\x30\x7b\x23\xa6\x48\x26\x72\x61\xe4\xd9\x98\x23\x71\x32\x49\x52\xc6\x94\xed\x08\x77\xc4\x78\xc4\x77\xa4\xe9\x48\xf7\x91\x05\x47\xd6\x1d\x59\x7f\xe4\xb2\x23\x37\x1d\xb9\xe7\xc8\x43\x47\x8d\x47\x7d\x47\x9b\x8e\x76\x1f\x9d\x7b\x74\xc1\xd1\x75\x47\x2f\x3b\x7a\xd3\xd1\x7b\x8e\x3e\x78\xf4\xe1\xdf\x31\xa7\x4e\x51\x08\xf0\x8e\xcd\x70\x47\x66\xca\x1d\xc9\x11\xdd\x11\xfb\x91\xc8\x91\x69\x47\x06\x8e\x2c\x87\x3b\x5e\x74\x64\xf8\xc8\xed\x47\x46\x8e\x92\xa3\xf6\xa3\x91\xa3\xd3\x8e\x0e\x1c\x9d\x7f\x74\xf9\xd1\xf5\x47\x87\x8f\xde\x7e\x74\xe4\xe8\x43\xf4\x8e\xe4\xd4\x7f\x9c\xfa\xfd\xa9\x37\x4f\x5d\x7c\x44\xf8\xed\xef\x7f\x7b\xe0\xb7\x97\xbe\xc5\xbd\xe9\x7f\xd3\xfd\x86\xed\x0d\x53\xc4\x17\xf1\x46\x1c\x11\x4b\x44\x1f\x61\xc2\xc7\xc3\xc7\xc2\x1f\x85\xdf\x0f\xff\x5b\xf8\x68\xf8\xc6\xf0\xb5\xe1\x2b\xc2\x17\x87\xd7\x87\x2f\x0c\xaf\x0b\xaf\x0c\x2f\x09\xcf\x0b\x9f\x15\x1e\x08\xbd\x39\x81\x52\xff\x8f\xfe\x88\x7e\xbc\x03\x08\xf6\x2e\x3b\xf9\x02\xb5\x2b\xd4\x3f\xfe\x4c\x5d\xfb\xff\x91\x3f\xfd\xe4\x03\xae\xbf\xfb\xa7\xf7\x32\x8d\xec\x7f\xcb\x4c\xab\xcc\x38\x17\xc9\x8b\x97\x0f\xc9\x0b\xb7\xac\x93\x99\xf8\x4c\xaf\xac\x6f\x19\xea\x5b\x47\x8f\xdd\xba\x2e\x72\x48\x26\xce\xb4\xb7\x4d\x26\xad\x91\x37\x65\x4b\x4b\x9b\xcc\xb6\x2e\x5a\x31\x34\x27\xbe\x2e\xda\x26\x73\xad\x97\x79\x23\xf2\xc0\xf2\xa1\xa8\x3c\xb0\xae\x4d\xe6\x5b\xf1\xa7\xd1\x78\xf4\xe6\xa1\xdf\x04\x2a\xeb\x02\x70\xdd\xd0\x68\xe0\xfd\x75\x81\x78\x54\xd6\xb5\x0c\xc9\x73\xb7\xac\xa3\x27\xd6\xad\x83\xfb\xe9\x5a\xeb\xce\x3b\xa7\x4d\xd6\xb7\x16\x63\xe4\x6e\x78\x7a\xe4\xee\xf3\xce\x0b\xc8\x0c\xdc\x46\x68\x2d\x36\xd0\x43\x03\x63\x87\x0c\xad\x0e\x31\xd2\x9d\x69\x93\x8d\xad\x91\x5b\xf1\x21\x3f\x80\xdb\x44\x64\x2e\xb1\x20\x1e\x91\xf9\xe4\x42\x99\x59\x3e\xb4\x73\xd3\xce\x0d\x11\xdc\x99\x1e\x88\x46\xd7\x05\x76\xd2\xd6\x0a\xb5\x85\x0f\x34\xa9\xd0\xd9\x03\xf6\x28\xdc\xd1\xdc\x1a\xf9\x05\x45\xc7\xd2\x1a\xc9\xc8\x42\xcb\x79\x43\x91\xc8\xbc\xf8\xdc\x0d\x97\x47\x86\x22\x85\x8b\xd4\x5b\xe0\x75\x75\xf8\x64\x78\x74\x64\x67\x64\xde\xce\xb9\x1b\xe2\x3b\x23\x3b\xe3\xf4\x71\x71\xbc\xb9\x3c\x00\x57\x02\x7e\x78\x40\x1e\xd8\x84\x0d\xf8\x8d\x95\x3e\xa9\xef\xb0\x37\x1a\x0d\x44\x0e\xef\x04\x32\xc0\x8f\x16\x00\x34\xab\x35\xd8\xa2\xf4\x32\x5b\x6b\x3c\x72\x58\x7b\x78\x3c\x32\xb4\x68\x65\x20\x2a\x93\x75\x43\x3b\x01\xa1\x05\xf1\x9d\xf1\xc8\xce\x05\x3b\xe3\x1b\xf0\x07\xea\x4f\xf0\xab\x4d\xb6\x63\x37\x38\x00\x6e\x11\x11\xc0\x1d\xc7\x24\x04\x76\xe2\x57\x7c\xc3\xe5\xeb\x6b\x31\xc1\x9f\x3a\x5b\x01\x89\x9d\x77\x21\xd9\x16\x16\xe2\x3b\x05\x39\xb2\x7c\xa8\x37\xf0\x5d\x38\xe3\x6a\xdd\xcf\x0c\x90\x81\xc1\x41\xb2\xe8\x5b\x76\x66\x23\x43\xb7\x78\xf1\xea\x21\xdc\xae\x18\x8a\x5f\x04\xd0\xc7\x07\x03\xf0\x45\xe2\x83\x40\xf9\x81\x15\x43\x25\x90\x1b\xb3\x36\x0e\x96\x48\x84\xc0\x97\x1c\xd9\x28\xfb\x36\xd5\x57\x9f\x25\xb5\xca\x70\x14\xe8\x02\x9b\x36\xe4\x36\x90\xa9\x20\x1d\x6c\x30\xda\x1a\xa1\x71\x29\x17\x81\x41\x26\x30\xe9\x22\x61\x32\xbd\x25\x81\x67\xdf\xcf\x16\xf5\xba\x7f\xed\x2d\x71\x2c\xec\x32\x45\x0e\x0f\xeb\xf0\x70\x49\xd0\x73\x27\x7b\x4b\x04\x8f\xe7\xc4\xa8\x98\xc8\x89\xf1\x46\x32\xa0\xbc\xf3\x97\xbf\x70\x91\x93\x47\x1a\x41\x12\x13\xa6\xc0\x14\xf8\xc5\xfc\x62\xc6\xc3\x34\x30\x32\x93\x91\xeb\x72\x32\xa9\xc8\xe6\x2c\x91\xbd\x19\xd9\x79\x58\xd6\x65\x65\x47\x45\x16\xb2\x45\x1f\x69\x61\xa6\xb5\x3b\x3b\xa3\xa9\xbc\x47\xcc\x89\x79\x8f\x10\x95\xa2\x1e\x21\x25\xc6\x45\x21\x95\x2f\x10\xee\xc5\x5d\x2f\x96\xe1\x43\x38\x65\xb4\xba\x7b\x6c\xd2\x01\x65\x94\x5e\xa6\x89\x11\xfa\x5c\x33\xb3\x90\x29\x99\x18\xa6\x05\x1f\x2e\xd0\x87\xeb\xb2\x25\xc2\x98\x5a\xf6\x0f\x10\xce\xd8\x42\x64\x4b\x46\x36\x1d\x96\xd9\xac\x6c\xac\xc8\x7c\xb6\x64\x34\xe1\x29\xa3\x60\x6c\x29\x99\x8c\xb8\x6b\x62\x8c\x2d\xc5\x3a\x0a\x9d\x8f\x44\xc5\xea\x3f\x32\x42\x5a\xc9\x88\x32\xac\x1c\x1a\xdf\x53\x86\x61\x36\x42\x9c\x75\xfc\xe7\xf8\xe7\x99\x3c\xb3\x85\x91\xb3\x19\xb9\xb1\x52\x6a\xcc\xe2\xad\x1a\xd3\x46\x0a\x47\x94\xc2\x11\xce\xca\xba\x8c\x5c\x9f\x93\xf5\x15\xd9\x9f\x95\xa5\x8c\x6c\xae\x94\x24\x33\x5e\x28\xd9\x11\xb2\xe9\x19\x39\x4f\x21\x8b\x55\x8a\xc1\x70\x16\xbe\xed\xc5\x36\xd2\x22\xdb\xb3\x72\xba\x22\xdb\xb2\xc5\x6e\xd2\x52\x8c\xe5\x45\x87\x2c\x74\xcb\x6d\x62\xc9\x1c\xc9\x76\x77\x77\x23\x15\xf3\xb9\x8e\x7c\x3c\x9f\xeb\xca\x77\xe5\xb2\x1e\xb7\x27\xde\x91\x66\xe3\x31\x2b\x2b\x44\x85\xa8\x5e\x82\x4d\x88\xcf\x65\xfb\xd9\xce\x9c\x5e\xd0\xc7\x63\xa9\x34\x49\x15\x0a\xd7\xe8\xde\x2c\xdc\x95\x58\xf4\xa9\x03\x1f\x0e\xf7\xea\xbf\x91\x5b\xbc\x30\xe4\xed\x9e\x3d\xd3\x49\x6e\x29\x28\x87\xf4\x64\x0f\x6c\x8d\xd3\xba\x67\xe5\xa4\xe0\xc2\xc5\xb9\xe7\xc3\x1b\x36\x3f\x55\xb9\xa1\x61\xd0\x42\x8e\x15\x32\x9d\x85\xa7\xce\xd9\xf5\xd2\x25\x97\xe7\x87\xa6\xf9\x5c\xad\xe7\xf4\x17\xd2\x5d\x85\x85\xd7\x0f\xb6\xd8\xfc\xd3\xd6\x76\x3e\x7b\xf9\xa7\xbe\x9c\x7e\xe6\x46\xca\x67\x65\x32\xc2\x2f\x66\x0f\x02\x7f\x39\x28\x2f\x70\x15\x22\xf3\x99\xa2\x4e\xed\x79\x20\x6a\x99\xdb\x71\x72\x2b\x92\x53\xe5\xcb\x9a\xbf\x76\x68\x9f\xfa\x90\xb4\xf2\x2f\xf3\x67\x31\x12\x13\x66\x64\x2e\x23\x5b\x2b\xd0\x67\x44\x76\x67\x8a\x1e\xb8\x45\xd1\xc8\x89\x8e\xa2\x59\xec\xee\x9e\xd6\xce\xb9\xdc\xb9\x68\xb6\xab\x23\x19\x8f\x09\x69\x12\x8f\xe9\x25\x97\xc7\x4a\xac\xd7\x2c\x63\x3f\xb8\xf1\xe9\xa7\x6f\x4c\xb7\xb6\x7e\xe3\xaa\x2f\xfc\x9a\x1d\x5c\x4d\x3e\x58\x7e\xed\x73\x1f\x3e\x6b\xdd\x70\xc3\xaf\x1e\xf6\x59\xac\x9b\x91\x6d\xe0\x53\xe0\x65\xe0\x1d\x1e\xc6\x81\x09\x66\x61\xa6\x93\x78\xf2\x24\x21\x1a\x75\xd0\xeb\x65\xc0\xe2\xc4\x72\xd2\xaa\x1c\x62\x87\xd8\x21\xe8\xfd\xd6\x02\x1e\x54\x86\xcb\xb4\x75\x6c\xf4\x09\xf6\x5c\xc5\x42\x5a\x47\xf7\xc1\x7d\xb8\x53\x1f\x9d\xfa\x88\x7f\x89\x7f\x09\x46\x97\x1e\xb5\x04\x21\x01\xec\x4d\xe0\x93\xef\xea\xc8\x90\x64\x4c\xa8\x23\x4b\x7e\x7b\xce\x61\xf6\xe2\xc3\x6b\x0e\x6f\xac\xab\x7b\xd8\xd6\x60\xab\x1b\xfe\xed\xd9\xea\x81\xf3\xea\x52\xd6\x87\xeb\xea\xaa\xb4\x00\x98\x64\xc6\xc8\xe4\x98\x92\x1e\xf9\x59\xa8\xc8\x1c\x0c\x23\x53\x46\x36\x1c\x06\x52\x96\x38\x03\x72\x0e\xa7\x03\xc6\x35\x70\xb8\x6b\xd0\x03\xe3\x9a\x29\x71\xc5\x28\x11\x61\x38\x75\x46\x45\x5e\x46\xe0\x4e\x1e\x01\x52\xca\xa3\x6f\x8e\xbe\x59\x28\xb0\x49\xbc\xbf\x95\x31\xc0\x78\x79\x01\x24\x07\x93\x0c\x91\x7c\x3f\xe9\x14\x13\x62\x52\xb0\x12\x8f\xd6\xea\x48\x0a\x3a\x2b\x91\xe0\x98\x9e\x6f\xb8\x7b\xd9\x59\x80\xfc\xc0\xc2\x65\x6b\x1d\x8e\xbb\x97\xcd\x5d\x69\x35\x8d\xda\x4d\x56\x68\x7f\xf6\xaa\x26\xbf\xb4\xbe\x99\xbd\xe0\x91\xd1\xff\xb2\x7b\xfc\xd7\x76\xe5\x9b\x7c\x9e\xb3\xf3\xdc\x35\x26\x33\xf7\x3d\xce\x69\x1a\x5d\x26\x7a\x7d\x38\xb3\x7b\x4e\xbd\xc7\xff\x80\x7f\x98\x71\x32\x01\x66\x1d\x53\xb2\x22\x46\x8e\x8c\xec\xa9\xc8\x01\x95\x31\xea\x33\x32\x39\x2c\x4b\x15\x59\xb2\xa3\x6c\x90\x75\x30\x06\x80\xdd\x7d\x92\xe8\xd8\xcf\xb1\x76\x47\x83\xa7\x5b\xd6\x89\xc0\xf9\x4c\xd1\x61\x85\x21\x60\xec\x96\x3d\xa2\x6c\xef\x96\x03\x8e\xfd\x84\x11\x74\x70\x7e\x5a\xbb\xc3\x0e\x08\x49\x2e\x81\xb8\x5d\x36\xa2\x8f\xa5\x08\xb0\x3b\x6b\x77\x47\xba\xec\xc9\x88\x87\xd4\x03\xab\xd5\x2f\x25\xad\x82\x70\xa5\xc1\x65\x50\x0e\xdd\xb0\xbb\xfc\xe9\x97\x89\xe3\x7b\xdf\x53\x3e\x20\xef\xe3\x39\xe5\x0f\xe5\xdd\x37\x28\x87\xe0\xe4\x95\x82\x40\x5a\x97\xb2\x57\x28\x7f\x79\xf9\x7b\x70\x85\xca\x9f\x05\x66\x88\x7f\x81\x9f\xcd\xf8\x80\x23\x89\xec\xcf\xc8\xcc\x61\xe4\x49\x6b\xa5\x18\x50\x59\xba\xa3\x9f\x0d\x11\x0f\x6c\x58\xc9\x65\xe5\x84\x34\x5f\x98\x7e\xce\x0d\x37\xdc\xd4\x3a\xed\x96\x1b\x3f\x35\xd4\x35\xeb\xa6\x1d\xfb\xfa\xfb\x9f\xda\x71\xd3\x2c\xce\x3e\xb0\x65\x65\x1b\xbf\x60\xf6\x9c\xf9\x7c\xdb\xca\x2d\x03\xdd\x37\xdd\x7e\x5b\x69\xf5\xea\xd2\x6d\xb7\xdf\x04\xb4\x3a\xf5\x2d\x66\x1e\xff\x20\xf4\xbd\x89\xb1\x00\x4b\x45\x9d\x39\x67\x94\x38\x8d\xc4\xc9\xe5\xe7\x93\xdf\xde\xcf\xde\x4f\x7e\xad\x6c\xbf\x4f\xb9\x5d\xd9\x7e\xff\x03\x2c\x17\xa1\xa2\xe8\xcf\xca\x4c\xe2\x54\xde\x27\xff\x04\xdf\x94\x0f\x6b\xef\xe1\x06\x7d\x5a\xae\x03\xf1\x4b\xc5\x10\x0f\x4c\xe4\xc9\x14\xbd\x14\xe4\x09\x77\x77\x7a\x84\xbc\x27\x95\x8f\xa7\x84\xa9\xcf\x99\xf5\x83\x05\xdf\xfd\xfe\xc2\xef\xbd\xbb\x64\xe9\x69\x9e\xc8\x5e\xbf\xfb\x77\x9f\xdb\xf5\xc7\xcf\xfd\xf2\x97\x13\x78\xd7\x09\xe3\xb8\x93\x74\xc6\x92\x7d\xa4\xa3\x2b\xeb\x0e\x12\x97\x3e\x2e\x11\x89\x8c\x24\x66\xca\xff\x2d\xcf\x4c\x90\x91\x7b\x09\x29\x3c\x98\x2b\x6f\x95\xe5\xad\xe5\xdc\x83\x05\xe5\xd4\xbd\xa8\x05\xab\xbf\x5f\x4c\xe7\x25\x33\xcc\x54\x4e\x98\x4d\x02\x20\x03\xe2\x4c\x0a\x34\xee\x0c\x8c\x08\x99\x29\x31\xc8\x41\x7c\xa5\xe8\x8d\x80\xa0\x14\x32\x72\x2c\x27\x1b\x2a\x72\x43\x56\x36\x67\xe4\x64\x4e\xb6\x54\xe4\xc6\xac\x6c\xcb\xc8\xcd\x39\xd9\x5e\x91\x5b\xb3\xb2\x33\x23\xa7\x73\xb2\xab\x22\x4f\xcb\x22\xfe\xa1\x6c\x0e\xc9\x41\xe4\x0e\xda\x8f\x7c\x65\xbf\xc1\x62\x77\x35\x78\xb2\x32\x6f\x47\x11\xb5\xdf\x58\x27\x4a\xd8\xf4\x56\xe4\x7a\xd8\xaa\x5c\x19\xcc\xca\x91\xca\xfe\x86\xc6\xd6\x69\x78\x2a\x62\x2f\x46\xe1\xca\x44\x53\x5b\x3b\x36\xb9\x4a\xb1\x13\x05\x93\xc5\x0c\x82\xc9\x1f\xe8\xee\x96\x6d\x62\xb1\x3e\x88\x02\xaa\x9d\xce\x97\x9d\xf1\xce\x49\x1f\x94\x82\x30\x4a\xa3\xe4\x34\xe7\x78\xf9\xc4\x81\xc2\xd8\x1f\x88\x9b\xd1\x7d\xf4\x73\x70\xfc\x20\xbf\xb8\xf6\x12\x94\xa5\x20\x9c\x4e\x6e\x1d\x3b\xc2\x68\xf2\x4d\x9d\x1b\x6d\x40\xc3\x0c\x33\x93\x19\x64\x4a\x75\x48\xbd\xd6\x1c\xa0\x8d\x24\x0b\x66\xe4\x5e\x4a\x9a\x0e\xe0\x8d\x01\x4a\x0f\x3b\x9d\x1f\xbd\xb0\xb5\x17\x23\x80\x38\x10\xad\xa9\x22\x4f\xcf\x16\xcf\xa2\x7c\x03\xf2\xa1\x0b\x24\xae\x5b\x12\xa1\x4f\xa3\xb1\xa4\x8f\x4c\x6c\x93\x4f\x38\x1f\x04\x2e\x90\x82\x41\x49\x19\xc6\xed\xf8\x3e\x3b\x74\xa6\x33\xd9\x9a\xc3\xec\x95\x35\x8d\xd1\x97\xce\x74\x86\x01\xe9\x39\x19\xf7\x65\xcc\x85\xcc\xd5\xcc\x6d\xa0\x73\x6f\x51\xa9\x50\xec\xbd\x22\x87\x74\x28\x76\x14\xb2\x48\x89\xe2\xe2\xad\x39\xa4\x45\x71\xf6\xf5\xd0\x6e\xcb\x14\xcf\xfb\x1c\xb4\x1b\x2a\xc5\x55\x3b\xb2\x40\x9d\x11\xa4\x4e\xd1\x8e\x4c\x67\x04\xe6\x6b\xcc\x52\x0a\x4d\x03\x49\x35\xb0\x1c\xf6\xbb\x2b\xc5\xf9\x43\xf8\x6d\x2f\xae\x87\x63\xc3\xb7\xc3\xfe\x65\x95\xe2\x8d\x77\x67\xb3\xc5\xfb\x28\xe5\x70\x2c\xf4\x10\x75\x34\xb4\x90\x58\x52\xec\xfc\xf8\x36\xf9\x84\xf3\xff\xdb\xeb\x83\x52\x19\x09\x76\x86\x0d\x19\xf9\xdf\x9d\xcf\x8e\xb5\xc8\x13\xa7\xdb\x3d\xf9\x1f\xff\xdb\x0b\x54\xc3\x8b\xca\x8b\xda\x3e\x5e\xa3\xf1\x78\x2f\xe5\xf1\x0e\x3a\xfc\x17\xe7\xe4\xfa\x8a\x3c\x1b\x7b\x55\x3e\x0f\xfb\x54\x5e\x05\x3d\xba\x7e\x42\x8f\x7a\xce\xd0\xa3\xc5\x0d\xa7\xef\x3d\x97\x1b\x9a\x5d\x70\x38\x09\x4d\xbd\x34\xf9\x3c\xf6\x06\xf2\x3d\x95\x7d\x51\x95\xfa\x1f\xd7\xfe\x64\x6a\xb3\x07\xb1\x31\x3a\x1b\xb7\xa7\xdf\xaf\xa5\xf9\xf8\xaf\xff\x01\x8a\xa2\x0c\x0f\x32\x31\xfe\x43\xbe\x19\x1d\x2a\x30\x39\xa4\x48\x2a\x48\xbe\xca\x65\x0f\x8d\x7e\xe5\x27\xe4\x55\xe5\x3c\xae\x03\xf6\x7e\x8a\xd7\x5d\xce\x5c\xce\xcf\xe5\xe7\x82\x9c\xc6\xeb\xf2\x46\xe2\x31\x12\xc1\x48\x2e\x27\x7e\xe5\xed\x43\xc4\x4f\xfc\x87\x94\xb7\xe9\x06\xbe\xfa\x27\xb6\x0f\xe1\x35\x68\xe2\xd7\xea\x06\x29\xe6\xc5\x09\xda\x01\xa8\x05\xf1\x9c\x1c\xac\xc8\xd1\x6c\xa9\x3e\x88\x6a\x4e\x7d\x12\x34\x9e\x60\x3d\xee\x06\xc3\xa0\x5f\x6b\xfa\x43\x63\x8d\xfe\x90\x04\x81\x15\xca\xca\x89\x8a\x1c\xc9\x96\x12\x49\xbc\x34\x11\x87\x5f\x25\x13\xb8\x9b\xac\x87\x5f\x25\xc6\xb4\x8c\x26\xe8\xe9\x24\x68\x19\x25\xd6\x0d\x22\xbb\x5b\x4e\x88\xb2\xa3\x5b\xf6\x81\xd6\xe1\xb1\xfb\x6b\xb4\x0e\x8f\x03\xb4\x0e\x7b\x77\x31\x08\xda\xc7\x7e\x46\x27\x79\xf1\x5c\x40\x2c\xb9\x7c\xa4\xbb\xfb\x13\x74\x0f\x0e\xe4\x79\x4e\xca\x49\x71\x29\xde\xf9\xb1\x7a\xc8\xdc\x42\x19\x44\xfd\x27\x68\x23\xca\x3a\xbc\x08\xa5\x7b\x95\x76\x5f\xa4\xb4\x0b\x33\xe7\x9f\x4e\xb3\x8a\x4c\xd5\xac\xa2\x9a\x66\xf5\x0d\xd4\xac\xea\x83\x1f\xa3\x5b\x7d\x03\x75\xab\xfa\xd0\x27\x6a\x57\x1c\x4c\x63\x1f\x8f\x19\x6a\x0d\xe4\x03\x0d\xb1\x5d\x37\x29\xaf\x0b\x6e\xb8\xca\x50\x45\xec\x65\x62\x7f\x19\x10\xa3\xba\x22\xe3\xe1\x1f\x06\xfd\x21\x00\xb3\xfd\x1c\x06\x0d\x47\x13\xa0\xd1\x4a\xe7\x25\xa1\x52\x12\xa8\x31\x27\x80\x31\x27\x0b\xf6\xa2\x05\x30\x72\x56\x4a\x16\x27\x1e\xb4\x80\x1d\x85\x26\x53\xd1\x22\x40\x27\x79\xbc\xf5\x71\x00\x9c\x6a\x66\x8e\xbc\x04\xda\xac\x0b\x80\xed\xec\x48\xa6\x3a\xdd\x0e\xd0\xd0\xd8\x58\x9a\x25\xea\x00\x46\x7d\x97\x0e\x60\xcf\x2f\x9e\xba\x64\xeb\x71\x72\xd1\xf1\xad\x97\x3c\xf5\x8b\x73\x1f\x79\xfd\xbd\xd7\x1f\x39\x97\xfc\x26\x28\x15\x70\x74\x14\x70\x82\x7a\x91\x34\xf6\x3f\x99\x2f\xdf\x58\x3c\x7e\xbc\x78\x63\x39\xff\x64\xbf\xf2\xeb\x17\xb7\xc0\x55\x70\x31\xb1\x8c\xcf\x59\x30\xef\x16\x18\x02\x72\xa9\x38\xa6\xc7\x4c\x63\x4a\x3c\xce\x38\x06\x4b\x2e\x47\x64\x7b\x46\xe6\x11\x1f\x44\xc2\x00\x48\x98\xc1\x4c\x56\xd1\xb1\x55\x8a\x22\x95\x36\x79\xb0\xb0\x09\x18\xc7\xd5\x7f\x05\x30\x46\x5a\xcb\xd0\xf5\x65\x82\x06\x09\x39\xa6\x58\xd0\xf2\x06\x45\x61\x39\xd2\xcd\xcf\x04\xf8\x3d\xfc\x1e\x66\x1e\x73\x36\x73\x11\x83\x4c\xb0\xbc\x22\x2f\xca\xc8\x5d\x40\xbd\x15\x94\x7a\xf3\x2b\xf2\x7c\x7b\x71\x09\x3c\x03\x26\xb4\x95\x40\xa7\xf9\x0c\xda\x50\x7d\xc0\xf6\x4b\xc4\xfd\x36\x29\xd7\x8d\xac\xd0\xe0\x28\xfa\x32\x60\x58\x16\x97\x03\xcb\x17\x05\x50\x60\xe4\x45\xe2\x7e\x2e\x9a\x9a\x83\x67\xbb\x1c\xc5\x96\xb3\x90\xe1\x9d\xae\x30\xeb\x0e\x13\xc1\xed\xc9\x7b\xdc\xb0\x9b\xcb\xce\x64\xbb\x66\x12\x4f\x57\x3e\x95\xef\x82\xdd\xce\x8e\x0c\x9b\xcc\x90\x7c\x32\x25\xa4\x92\xb0\x1b\x8f\xd9\x58\xbd\x8d\xa4\xf4\x82\x47\xd0\xc3\xae\x0e\x95\x42\xc9\xa5\x8f\x25\xfd\xfa\x87\x58\xab\x97\x5b\xde\xd6\x7b\xa7\xae\xad\x5d\x97\x6c\x8c\x05\x32\x49\x7d\x3a\xa3\xfb\xcc\xf4\x69\xcb\x39\xaf\x8d\x7c\x41\xa7\xfb\x02\xb1\x7b\xb8\xe5\xad\xbd\x9f\xd1\xb5\x4d\xd3\xab\x57\xe8\xb2\xad\xba\x3b\x7b\xd2\xcb\x39\x5f\x1d\xfb\x90\x9e\x5c\xb2\xad\xb4\x0d\xfe\xb3\xeb\xa2\x4d\x49\x7d\x7b\xab\xee\x33\x3d\xe9\xb3\x39\x3f\x9c\xd2\xe9\x1e\x62\xeb\xfc\xdc\xd9\xad\x7d\x9f\xd1\xb5\xb6\xe3\x8f\xeb\xdb\x92\xfa\x5c\xb3\xee\x33\x33\x32\x67\x73\x3e\xab\x7a\x7b\xab\x8f\x3b\x3b\x33\xe3\x33\xba\x4c\x5a\x9f\x9c\xe6\x1b\xda\xb6\x6d\x68\xdd\xb6\x6d\x20\x0b\x05\xa6\x70\xea\x14\x2f\xeb\x5c\xa0\xf7\x8f\x6b\xa0\x79\xe6\x1e\xa6\x14\xc5\xb1\xd6\x00\xd6\xfe\xb4\x8e\x2c\x4c\x15\xa9\x4c\xa9\x39\xdb\x95\x03\x75\x21\x50\x01\x15\x13\x95\x0a\x6b\x2b\x1c\xcf\x64\xa8\xdd\x0a\xe6\xbd\xff\x30\xce\x3a\x0d\xf6\x62\x02\xc7\x61\x56\x6e\x44\xcd\xb4\x94\x68\xa4\x12\x8a\x01\x86\x6e\xb4\xa3\x3c\x92\xa7\x81\x96\x6a\x2f\xb6\xc3\x5e\x5b\x56\xee\xa8\xc8\x75\xd9\x52\x47\x3b\x5e\xd4\xe1\x84\x8b\x3a\xec\xa8\x67\x82\x50\x44\x87\x00\x75\xa2\xe0\x24\x32\x36\x93\xd4\x4c\x27\x4e\x50\x3b\xd5\x3d\x64\x25\x27\x7c\x50\xdd\x74\x6a\xfb\x05\x9b\x89\x38\x7b\x9a\x48\x6b\x53\x0f\x71\x9a\x6c\x56\xf3\x89\xb7\xcd\xd6\x02\xb7\xa3\xa7\x69\x74\x76\x53\x4f\x81\xca\x18\xe4\x33\x55\xda\xf0\x24\x6b\xb2\x15\x9a\x7a\x7a\x9a\xe0\x77\x59\xb3\xd5\x7a\xf2\x2a\x64\xbe\xa6\xde\xde\x26\xf6\xe0\xe8\x6c\xf6\x20\x58\xc6\x27\x0e\xa8\xbb\x9a\x9f\x89\x21\x3a\x89\xff\x0d\xd8\x20\xad\x4c\xc9\x48\xf5\x75\xe0\x7b\xd0\xcf\x8d\x87\x51\x57\x37\x50\x3d\x1b\xa9\x04\x4c\x5f\xd4\x19\x40\xf0\x10\x3a\x58\x8d\x24\x5e\x75\xba\xb0\x23\xec\x8e\xb2\x72\x08\xff\xb1\xeb\xd8\x1d\xa3\x5b\x47\xf7\xa1\x1c\x61\x87\x90\xdf\x51\x00\xbe\x03\x72\xc2\xca\x88\x4c\x8c\x29\x81\xb1\xd4\x42\x90\xeb\x41\xda\xe9\x2b\x25\x3d\x41\x82\xe9\x0d\x20\x11\x9c\xea\x68\xa2\x3a\xe9\x18\x45\x88\x48\x0a\x56\x33\xf9\x17\x32\x62\x35\x9f\x7c\xde\x6c\x65\x87\x48\xab\x8f\xdf\x66\xb6\x2a\x96\xd1\xf3\x01\x3d\xce\x81\xb8\xa3\x8c\xe5\x19\x9e\x7f\x96\x7f\x16\xc6\xb0\x13\x78\x60\x3b\x83\x36\xb8\xad\x22\xbb\x50\xc8\x96\x3c\x2e\x7c\x8c\x47\x82\x7e\x71\x62\x97\x53\xc3\x10\x20\xa8\x83\x5e\xb3\x17\x5d\x80\xe0\xf8\x45\x3e\xb8\xc8\x63\xc7\xc1\x0d\xe3\x1e\x8d\xc6\xa2\xab\x0e\xe4\x94\x89\xb3\x3a\x61\x64\x15\x45\x0f\x34\x8c\xbc\x0d\x6d\x5d\xa6\xe8\xb2\x41\x4b\x60\xea\xec\x78\xca\x89\xa7\xf4\x44\xb4\x68\x82\xd8\xd1\x10\xe1\x1d\x76\x96\x8f\x34\x38\x34\x01\xec\x44\x09\x21\xf1\x7b\x89\x83\xcc\x26\x8e\xbd\x7b\x95\x0f\x94\x83\xca\x07\xee\x8f\xc8\x9a\x8f\x3e\x52\x9e\x9e\x07\x22\xe3\x9b\xb5\x27\xf6\xee\x65\x2f\x54\x9e\xfe\x08\x4f\x8f\x2a\x40\xd2\x43\xd4\x56\x60\x4f\x3d\xca\x30\x3a\x17\xd0\x14\xe5\x55\x5a\xb3\xb2\x84\x1c\x62\x0c\x16\x95\x2d\x43\x1d\x0f\x36\xea\x78\x20\x46\x64\x61\x94\x63\x9a\xb4\x8a\x93\x1c\x07\xff\x48\x94\x8b\x73\xce\x1c\x17\x2f\x90\x17\x7e\x2e\x3d\xee\xfa\x19\x79\x61\xf4\xed\xa6\x0f\x1b\xdb\x8f\x04\x9e\xe6\x65\x74\xa0\x9c\x58\x4e\xe7\x82\x63\xaa\xdf\x87\xd5\x74\x74\xf5\x99\x0b\x99\x92\x19\x9f\xa9\x3e\x0d\x4c\x10\x92\x1d\x17\x95\x25\x5e\xc0\x47\xf3\x8c\x2a\xfa\xeb\x80\x8e\x26\x2a\x2b\x8b\x02\x0f\x92\x8a\x35\x82\xa4\xaa\x13\x41\xbe\x52\xaf\x18\x7a\x41\xd0\x4f\x09\x10\x51\xdb\x8b\xfc\x59\x79\x0b\xe5\xa7\xf2\x16\xec\x1d\x7d\xe1\x05\xea\xc7\x03\x11\x8a\x7e\xbc\x72\x81\xae\xf3\x10\xb0\xef\x5f\x00\x28\x3c\x4c\x88\xd9\xa8\x69\x90\x4e\x3a\x96\x75\xd0\xb1\x61\xda\xb1\x62\x45\x16\xd5\x89\x14\x94\xc9\x7a\x7b\x51\x82\x3d\x50\x1c\x23\x38\xa5\x8a\xa2\xe3\x40\x1d\xef\xf0\x50\xdd\xa0\x5e\x94\x43\xdd\xb2\xe4\x38\x60\xd1\x39\xdd\x41\xda\xa7\x1e\x27\xcc\xb9\xc4\x60\x64\xfc\xda\x8c\xda\xd1\xcf\x66\x43\x2c\x9d\x8a\x48\xb5\x27\x39\x2a\xec\x39\x72\xe1\xde\xb7\x8e\xbd\xb5\xf7\x42\xf5\xeb\xbc\x0f\xc9\xaa\x0f\x3f\x54\x9e\x5d\xbe\xa7\xbc\xe7\x38\xa9\x39\x01\x5f\x2c\xab\x3c\xfb\x21\x9e\x57\xe8\x70\x05\xa6\x9d\xc8\xb3\x7e\x66\x43\x95\x67\x35\x16\x0d\xd4\xb0\x28\x62\x02\x36\xae\x77\x8c\x2f\xeb\x11\x13\xe0\xcb\x03\xc8\x97\x2e\xc4\xc4\x2b\xca\x52\xb7\x0c\x47\x90\x39\xdd\x14\x13\xa7\x0d\x31\xd1\x0b\x0c\xd5\x83\x4e\xcf\x92\x5c\x00\x06\x72\x5c\x3c\x13\x4f\x2e\x3b\x7e\x7c\xcf\x99\xb9\x52\xb9\x48\xc5\x85\x32\x09\x3b\xe6\x53\x40\x7c\x9a\x34\x69\x02\x3c\x62\xa7\x8a\x3d\x0b\x28\xb9\x32\xd8\x13\x60\x7c\x1b\x41\x95\xe3\x89\x95\xea\x64\x9d\xa2\x33\x1a\xa8\xca\xc2\x9c\x27\x9a\xcf\x71\xd1\x32\x17\xf9\x67\x02\xb2\x6e\xbb\xd9\x5a\x2e\x67\x49\x6b\xb6\xbc\x61\xf4\x71\x1f\xf9\x17\x94\x5c\x4a\x02\x06\x3e\x79\x1b\xa6\xd9\x63\x13\x68\x28\x31\x5e\x66\x6e\xcd\xb8\x47\x1a\xfa\x28\x0d\x01\x06\xcb\x18\xe5\xfc\x40\x39\xd1\x02\x84\xe1\x8d\x26\xce\xed\x1d\x1b\xc6\x94\x50\x6e\xcf\x14\x42\x39\x35\x7d\x24\x02\x23\x5b\x77\x26\x32\x7d\x44\x66\x90\xa6\xc9\x64\x22\x07\xa0\xc7\x9f\x7d\x06\xce\xef\x24\xf7\x95\x81\x73\xab\x3a\x53\x3d\xb3\x92\x41\x37\x33\xf4\xad\x98\x91\x7d\x00\x67\x90\xc2\x09\x70\xdb\xec\x45\x93\xca\xab\x21\x80\xd3\x84\x70\xe9\x78\xa7\xcb\xe3\xc3\x2e\x36\x8a\x45\xc9\x8d\x73\xbe\x88\x3d\x4f\x18\xa3\x4b\xc2\xc3\x3e\x51\xa6\x40\xbb\x42\x2c\x3a\x90\xe3\x2e\x7d\x24\x69\x47\x27\xb3\x10\x15\x05\x98\xd1\xad\xc4\xa3\x29\x49\x7b\x8e\x2b\x5f\x06\x8d\xe8\xee\xab\xee\x27\x23\xf7\x7d\xe9\x55\xd0\x88\xd8\x9f\xbc\xa7\xaa\x45\x5b\x40\x55\x02\x8d\xea\x6c\x3c\x73\xf3\xb9\x8f\x30\xaa\x8e\xc7\x50\x78\xed\x4c\x94\xb9\x99\x29\x89\xd8\x9f\x30\xbe\xdc\x95\x92\x3b\x8c\x63\xdc\xed\x87\x31\x5e\x87\xe3\xae\x54\xa7\xc3\x03\x75\x0c\xba\xc8\x63\xaa\x73\x02\x3a\x5e\x65\x5c\x7f\xa5\x18\x07\x64\xec\xa8\xc6\x88\x8e\x6e\x04\xf8\x45\x41\x67\x36\x81\x6e\x12\x45\xf8\xfd\x8e\xa2\xd1\x80\x68\xb9\xc3\x30\xbd\x44\xa9\x78\x30\xe2\x75\x3a\x74\xa2\xab\x2e\x3b\xc0\x26\x2f\x46\xf3\x49\x74\x1b\x73\x62\x54\x00\x45\xa6\xab\x33\x07\x63\x32\x1e\x4b\x21\x76\x5b\x5e\xfd\xd2\x7d\xca\xf0\xe7\x87\xef\x2a\x1e\x5f\x40\x46\xe8\xf7\x1e\xf5\x30\x3b\x84\x8a\xdf\xcd\x78\x76\xf9\xf1\x22\x4e\x4d\xf8\x4d\x8f\x31\x30\xeb\x15\x34\x9e\x3d\x9d\x1f\x6b\x39\x23\x1b\x32\xb2\x37\x87\x22\xce\x9f\xc5\x45\x89\xfa\x1c\x76\x5a\x30\x8b\xd2\x2e\x92\x43\x31\x13\xcd\x22\xaf\x35\xe4\x50\x77\x4f\x64\xa9\x89\x63\x38\x5c\xb2\xd8\x5d\xa8\x6c\x98\x2b\x25\xab\xc3\x0d\x7b\xa8\x30\x80\xb4\xc3\x99\x0d\xa7\xfb\x04\x18\x1a\xa9\x9a\x8f\x13\x26\xfc\x3e\x12\x95\x12\x9d\xea\x47\xf5\x19\x71\x3b\x4e\x1e\xa9\x3a\x89\x50\x06\x8e\x7f\xd0\xeb\x84\x6e\x79\x75\xfa\x57\xff\x8f\xee\x2b\x8c\x35\x6b\xe4\x35\xea\x43\x20\xaf\x3d\xd8\x77\x11\x55\xc7\x69\x80\x1e\x3b\x0c\xbd\x52\xd2\xf9\xb1\xd3\x74\x28\xa9\xfd\x76\x9c\xea\x64\x2b\x00\x1c\xc0\x83\x56\xd0\x61\x50\x01\x62\x8a\x11\x9c\xd5\x78\xab\xce\x4f\x47\x06\xfa\x94\x7a\xc6\x0d\xe6\x5c\x8d\x37\x09\x94\x1b\x55\x3d\x07\xe5\x63\xcb\x0a\xd2\xba\x62\x0b\x55\x44\x4e\x6e\x05\xcd\x05\xa4\x38\xb5\x5b\x0b\xec\x50\x53\x4f\x79\xc5\x96\x2d\x2b\xca\xa0\xc0\xec\x83\xf3\xec\x1f\xf7\x50\x4d\x5c\xd3\x15\xa8\x1f\x88\x83\xb1\xec\x51\xe7\x35\x5c\x49\x40\x6e\xe2\x2a\x74\x3d\x01\x48\x08\x72\xd7\xd9\x4f\x42\x6c\x3f\xc9\x8b\x56\x92\xe6\xf4\x02\xa0\xdd\x7b\xd7\x8d\x5b\xaf\xbd\xbc\xd0\xd4\x78\xcb\x8e\x91\xbb\xae\x3f\xc7\x85\xf4\x23\x23\xbd\xd3\xea\xa2\x01\xdd\xb2\xb3\xc9\xb1\xb3\xe7\x98\x1a\x1b\x4d\x73\xce\x46\xb2\x70\x9a\x9c\x7a\x08\xb8\xba\x9d\x39\x8b\xb9\x84\x29\x65\x90\x3a\xfd\x39\x39\x59\x91\xbb\x68\x3f\x07\x81\x4c\x83\x9a\x2d\x83\xb3\x58\x0c\x68\xd3\x52\x91\x5b\xec\xc5\x2c\xec\xf5\x54\xe4\x1e\x7b\xd1\x4e\xd5\x86\xe2\x2c\x60\xed\x6c\x0b\xd0\xc8\x62\x0e\xd6\x53\x69\x92\xcc\xc0\xe8\x14\xec\x4e\x17\x87\xdc\x6d\x81\xb9\xce\x86\x72\x4e\x1c\xb3\x62\xfa\x49\x24\x44\xa4\xf1\x76\x9a\x8d\x59\x59\xc9\x29\xaa\x6e\x09\x24\x28\xba\x25\x12\x93\xda\x56\x33\x28\x74\xbb\xfe\x40\xf4\x7f\xd8\x45\x77\x37\x7e\xf5\xad\x77\xde\xfa\xea\xc6\xb2\xc5\xb0\xd7\x60\xa1\x1b\x76\x68\x7c\x9f\x38\x41\x4a\x9a\x49\xeb\x6d\x3f\xbf\xf6\xda\x9f\xdf\xa6\x1c\x52\x5b\xd7\xc3\x0f\xe0\x77\xd7\x8f\xbe\x4e\x7e\x8c\x17\x2a\x1d\xb8\xad\xd9\xd7\xe4\x78\x99\x1f\xe2\xde\x61\x74\xa0\xb3\x31\x62\x54\x27\xea\xa2\x24\x8f\xeb\x23\x1e\xb0\x0a\x52\x60\xe6\xaa\x52\x9f\x95\x77\xed\x9a\x57\xfd\x4f\x46\x40\x66\x97\x95\x67\x6a\x0e\x55\xef\xc5\x0d\xd3\x7b\xd9\x18\x07\x43\xd5\x04\xeb\x61\x94\x6f\xa2\xb6\x08\x82\x77\x4f\xe4\xc1\xc6\x10\x52\x20\x66\xc7\xee\x7d\x70\xce\xd5\x97\xcf\x5a\xa3\xde\xb5\xbb\xf3\xae\x17\xbe\x7e\x67\xd7\x55\x3b\xef\xaf\xf6\xdf\x77\xf8\x8b\xb8\xff\xa2\xf7\x0c\x32\xbd\x74\xdd\x0a\xbd\xc4\x21\xed\xde\xe8\x1b\x72\xaa\x82\x27\x0c\xbd\xe3\x84\xd9\x66\xbf\xdd\xed\x51\xa7\x77\xc2\xa0\x02\x67\x75\xaa\xfc\xec\x23\xd1\x84\x98\x20\x63\xcf\x07\x2b\x49\x02\xc3\xd9\x93\x47\xcb\x88\xa8\xd0\x90\xfb\x29\x2c\x17\x08\xb7\xdc\x20\x9c\xad\xdf\x3d\xa2\x27\xf7\x01\x5c\x27\x8f\x94\xc9\x6b\x00\xd8\xd3\x77\xe6\xaf\xda\x79\x5f\xc5\xf0\xd0\xf7\x5e\xda\x63\x18\x34\x94\x7e\xff\x76\xc9\x30\xe6\x1f\x97\x41\xaa\x88\xc0\xcd\x3e\x80\x33\x4a\x6d\x92\x99\xcc\x2c\xb0\xfd\x16\x31\xcb\x08\x51\x39\xbc\x38\x6d\x36\x18\x23\x8e\x4a\xa9\xa9\x7d\x0e\xca\x0c\x7f\xa6\x94\x6a\x59\xac\x1a\x28\xa5\x44\xdb\x12\x3c\x16\xcb\x14\x59\x3d\x1c\x89\x83\x42\x9e\x05\x34\x8b\xd6\xf9\xd0\x8a\x56\x8a\x1d\x0b\xd0\xdf\xb9\x1c\x8d\x96\xa2\x2e\x84\xbe\xd1\x4a\x91\xc3\x55\xc9\xa0\xea\x1d\xab\x43\xd3\x26\x57\x91\x3b\x61\x6b\x2f\xa6\xcd\x2d\x72\x33\x75\xb9\x0c\x64\x4b\x69\xea\x67\x49\xc7\x8c\x2d\x25\x62\xb6\xe1\x53\x12\xf6\x62\x1e\x7e\x33\x7b\x3e\xec\xf7\x54\x8a\xc9\x85\xf8\x6d\x2f\x2e\x06\x4a\x0e\x66\xe5\x65\x95\x52\x77\xdf\x5c\x94\x65\x67\xc3\x45\xd3\x82\x30\x33\xb9\x24\xaf\xaf\x63\x26\xaa\xbe\xf9\x04\x4c\xe8\x8d\x4d\xd3\x71\xa9\xb3\x18\x0b\x00\x85\x9d\xae\xe9\xd4\x4e\x8d\x8b\x25\x7e\x46\x0f\xfa\x6c\x42\x8e\x01\xa3\xce\xed\xeb\xca\xf7\xf6\x0d\xcc\xa2\xc4\x6f\x8f\x8a\xf1\x4e\x74\xb7\xe4\x3a\xa3\xe8\x4c\x57\x85\x23\x81\x0f\x07\x42\x91\x43\x75\xb0\x13\x54\x43\xea\x91\xc1\x8b\xd4\xa3\x20\x00\xa2\xd8\x54\xaf\xe6\x40\x5c\x12\x14\xa1\xf0\x21\xc7\xd0\xee\x26\x23\x85\x82\x62\xa1\x5a\x16\x1a\xe2\x28\x3c\x5b\x55\x8b\x5c\xf5\xd1\xc3\x7e\x79\x74\x1f\x7e\xe1\x25\x54\xb6\x6a\x32\xb6\x15\x84\x06\xae\x21\x1e\xc4\x2d\xca\x53\xf6\x20\xde\x89\x5e\x54\x28\xc3\x5e\x81\x7b\x07\x99\xb3\x8c\xe2\x78\x18\x2f\x42\x01\xcd\xed\x00\xe1\x3b\x5b\xf5\xe3\x1b\xc7\xfa\x7d\xea\x7c\x32\xac\x5a\x3f\x25\xde\x55\x8f\xbd\x5b\x57\x29\x4a\xc1\x6c\x96\x1e\xa3\x9a\x6b\x03\x5d\x34\x54\x3d\x0c\x28\x5b\x2c\x59\x54\x6b\x51\x1f\x04\x13\xc5\x8c\xb2\x06\xed\x12\x2f\xec\x81\xe5\x1a\x50\x3d\xfe\xf1\x0a\x0a\xe9\xa2\x1d\x17\x33\x04\x7d\x77\x77\x31\x00\xd2\x9a\x2e\x67\xa0\xff\x1f\x4d\x48\x20\x4f\x0a\x28\xe6\xc1\x99\x06\xbe\x25\xf8\xee\xd4\xbe\xb1\x4d\xd1\x2e\x8f\xcd\x22\xe5\x32\xf7\xce\x89\xe5\xb0\xc7\xbd\x73\xd2\x5b\x3e\xf7\xdc\xd3\x7e\x4f\xd0\xf5\x04\x55\xd7\x13\x34\x8f\x16\x4f\xb5\x3c\x54\x66\x60\x88\x53\x5d\xcf\x21\x00\x6b\x30\x7a\x33\xd5\xf5\x44\x27\xce\x1c\x46\xc2\xb8\x3c\xee\x6c\xbe\xab\x23\x95\x8c\x09\x04\x2c\xdc\x37\xd9\x83\x60\xd1\xfd\x3a\x18\x5a\x19\x0a\xe2\x06\xba\xe0\x5f\x4c\x36\xd0\xf5\x2c\xdc\xef\x57\x05\x43\xa1\x20\x6e\xe8\xd8\x27\x60\xfb\xfc\x46\x7b\xae\x0f\xe4\xb7\xfa\x64\x4f\x4e\x7d\xb8\xec\xca\x56\x6d\x3b\xa3\xba\xe2\x47\x9f\x7f\x00\x9e\xef\xf6\x51\x9e\x0b\x90\xa9\x10\x24\x72\xe8\x3d\x25\xa0\x70\x6a\x80\xfc\x4a\x7d\x20\x6c\x58\x73\x01\x8f\x64\xc9\xcb\x08\x92\xd9\x3a\x09\x24\x19\xdb\x70\xb2\xba\xf6\xa8\xd2\xc4\x04\xa3\x5c\xb3\xca\x54\xbd\xd7\x4c\xa7\x12\x53\x45\x36\x4d\x30\xa7\x4d\x0c\x7a\x34\x05\x03\x1d\x35\x02\x36\x08\xaf\xa3\x74\xca\x89\x79\xd0\xdd\x40\xcf\x89\x8a\x85\x17\xb8\x2f\x15\x46\x1d\x05\xf6\x03\x9e\xbc\x70\xd2\x0b\x2c\x58\xa0\x5d\x80\x6b\xf7\x74\xbe\x2c\xc2\xf3\x18\xc0\x40\xec\x48\xc2\x3c\xac\x97\xca\xe4\x65\xf2\x72\x50\x3a\x79\x44\x0a\x92\x83\xca\x1c\x7e\x9b\x2b\x14\x72\xd5\xcc\x7b\xa8\x9f\x7b\x40\xbb\x59\xc7\x94\x12\x08\x23\x58\x48\x26\x6a\x33\x9a\xb8\x6a\x68\x85\x2c\x64\x4b\x9c\x69\x82\x05\xd9\x48\x51\x00\xee\x64\xb3\xc8\xa0\x06\xd5\x37\x22\xa8\xae\x59\x83\x19\xe7\x3f\x5b\x2a\xa6\x7a\xf2\x80\xc1\x50\x8d\x87\xc1\x1d\x95\x9c\xb0\xc7\xa5\x09\x42\x26\x70\xf9\x7e\x82\x7a\x43\x98\xb8\xa9\xca\x50\x06\x75\x00\x58\xee\xe4\x91\xce\x46\x76\x79\xff\x05\xac\xdd\xa4\xf4\x9b\xec\xec\x60\x92\x75\x9a\xc8\x31\x93\x93\x4d\xb2\x66\xd3\xe8\x3e\x13\xf6\x01\x8c\xd9\xd9\xe5\x32\xfb\xc6\xd6\xad\xe4\x1c\x9c\xcb\x4e\xdc\xf1\x05\x93\xd5\x6a\xc2\xcd\x84\xf8\x80\x20\x93\x60\xda\x80\x2f\xae\xa6\xd1\x08\x20\xea\x9a\x32\x72\x1b\xa8\x69\x19\x18\x4c\x04\x03\x3f\x00\x8b\x70\xa5\x14\xa6\xfe\xc9\x70\x06\xb0\x0b\xdb\x8b\x29\x3a\xbd\x17\x73\x80\x4a\x18\xba\x41\xf6\x75\x17\x5b\x52\x80\x52\xb4\x21\x11\xa1\x93\x46\x5b\x13\xb4\xc2\xb1\x38\x5a\x84\x72\x54\x2c\xa6\xdb\x41\xa0\x39\x1d\x07\xcc\x3e\x7f\x66\x9a\xaa\x18\xa9\xd1\x0d\xaa\x8f\x32\xcd\xc3\x84\x6d\x65\x6d\x34\xca\x81\x41\x17\x9a\x4b\x1f\x63\x5d\x6e\x8c\x7e\x88\xa1\xf2\xd7\xd3\xc4\xbd\x83\xca\xd1\x1e\xde\x96\xcb\xaf\x6c\x2e\x37\xad\x98\x91\x36\x5b\xf6\x80\xa6\x54\x18\x29\x8f\x8c\x94\xf5\xfd\x43\xfd\xfd\x43\x04\xa8\x83\x57\xa1\xd2\x64\x08\xcc\xe9\x6c\x81\x86\xe4\xea\x69\x02\x53\x18\xae\x19\x21\x11\xbc\xa8\xff\x02\xaa\xef\x75\xd2\xbe\x7d\x01\x6c\xe2\x18\x7c\x54\xee\xab\xcb\xc9\xa1\x4a\x89\xb5\xa0\x74\x27\x72\x3c\x53\x6c\xd0\xb4\xd0\x4e\xb0\x64\x67\x92\xa8\x07\xba\x41\x8a\x76\x26\x53\x69\x02\x73\x5d\x1c\x0c\x20\x2b\xb1\x11\xe2\xf4\x38\x3b\xc9\x95\x4d\xfd\x0d\xce\xf3\xc8\x5d\x2b\xec\x2d\x9d\xe4\x2b\xb1\x46\x47\x48\xaf\x57\x6e\x3b\x5f\xb9\xc6\x5b\x6f\x69\xb6\xd9\xc8\xe6\x52\xfa\xfa\x41\x77\x57\xeb\x9f\xdf\x6a\x5b\x3b\x38\x48\x9a\x9d\x69\x6b\x1d\xf7\xf6\x49\xc7\xb4\x80\xc5\x2f\x08\xe4\x9f\xc9\x6b\x9f\x53\xbe\x0f\x3c\x87\xfe\x9f\xef\x03\xcf\x45\x40\x4a\xb4\x33\x9b\x98\x52\x04\x21\x8b\x56\xd4\x6f\x42\xfb\xa7\xb9\x22\xb7\x67\x54\x4b\x17\x38\x8c\xf6\x12\x7f\x18\xae\xc1\xc9\x2a\x0a\xd3\x16\x86\xd7\x80\x76\x1d\x39\x2c\x02\xb3\xd2\x5e\x4a\xa4\xa1\x97\xdc\xd0\x31\x4d\x51\xd8\xa9\xef\x96\x9b\x45\x68\xca\xed\xe8\xfc\x07\x04\x3b\x69\x70\x44\x9a\x4b\x75\xea\xd0\x7b\x89\x3d\x11\xe2\xe1\x9b\xc4\x53\x68\x37\x60\x17\x75\xaa\x3b\x71\xd0\x51\x59\xa3\xbb\x21\x4c\x7e\x75\xe3\x77\x3c\xd1\x98\xd9\x02\x84\xee\x68\xd9\xf2\xe4\xb2\xf2\x57\xd6\xdd\x7e\xeb\x05\x8f\x7d\x76\xf1\x15\xfb\x1e\x59\x27\xe4\x1a\xb9\x9e\x7a\x4f\xb0\xce\x26\xcc\x23\xf2\xe7\xf2\xe7\xe7\x1b\x0d\x02\x67\xc9\x9d\xb5\x65\xee\xaa\xfb\x96\x94\x37\xac\x3a\xe7\x8e\xc2\x2d\x4b\x56\x6c\x18\x1b\x97\xdc\xd5\x54\xf7\x8e\x68\x3d\x41\xe8\x32\x2d\x88\x01\x2b\xae\x7a\xa3\x88\xd2\xc2\x11\x10\xd4\xbc\xb3\x0b\xbb\x20\xd5\x19\xf5\x58\x39\x1b\xe1\xf4\x6e\x8f\x54\x5e\x72\x9d\xe1\x39\x53\xe3\x3c\xbd\x51\x47\xbe\xce\x46\x67\xc4\x7c\x3a\xdd\xed\xa6\x69\xf3\xba\x85\x59\x19\xee\xec\xe9\x0d\x4e\xc2\x91\xee\x6e\x43\x3c\x95\xb0\x58\x4e\xfe\x73\x47\xaf\xbe\x9b\x61\x4f\x7d\x43\xf3\x0b\x19\x61\x0c\x6c\x63\x4a\x01\xd5\x5e\x2b\xb1\x3a\x37\x4e\x38\x16\xe0\x7a\x0b\xe5\x7a\x3b\x70\xbd\x09\x38\x22\x49\x05\xa5\xaa\xe1\xa2\xd5\x09\xa3\x05\x74\x80\x20\xf5\x35\x94\xbc\x74\x21\xc7\xeb\xc7\x85\x1c\x2f\x5d\xc8\x09\xc0\xcf\xbc\xea\xdc\x64\xab\xe0\x98\x29\x9a\x40\xb6\x16\x75\xd4\x76\x0b\x07\xd4\x35\x09\x8b\x28\xf3\xd0\x05\x29\x18\xfd\x79\x4f\x5c\xcc\x09\x4e\x31\x17\x85\x06\xf4\x46\x0b\x11\x3d\xc0\x6e\x79\x11\x4c\x52\x4e\x5a\xb4\x68\xd1\xad\xb7\xc2\xe7\xf8\x1e\xf6\xe0\x9e\xac\x5d\x4a\x47\x63\xe5\x82\x32\x5c\x28\xc7\xa2\x19\x97\x08\x6a\xdf\x53\x4f\x9d\x3c\xf2\x14\xb7\x11\xa7\xd9\x60\x4a\x32\xb2\x27\x9f\xcf\x16\x0a\x59\x6e\x05\x6b\x94\x52\x41\x3a\x07\x45\x4f\x7d\x93\xbf\x17\xe4\x1f\xe2\x7b\x0f\x03\x6a\x17\xe0\xcb\x56\xa8\x89\x5a\x8b\xae\x09\xe0\xb6\xa9\xe8\x9a\x0e\xff\xe3\x48\x06\x41\xb7\xd9\xcf\x1a\x8c\x04\x15\x1d\xbb\x17\xad\x21\x10\x65\x54\x2c\xb0\x06\xc0\x9f\x01\x91\x2d\x87\x45\x90\xdd\x7e\x2a\xbb\x67\x12\x40\xd2\x23\x80\xec\xe3\xce\x80\x7a\xf4\x29\x15\xbb\x82\x8a\xba\x2b\x33\x8e\x7a\x5a\xb2\xe7\x6e\x55\x29\xc3\xfd\x74\x0c\xf5\xd1\x2d\x88\x3a\xbb\xb3\x8a\xba\x16\x2f\x50\xbb\x9e\xca\x68\x02\x08\x57\x39\xe9\x34\xf0\x8f\xb6\x83\x12\xbf\x18\x2d\xb1\x13\x07\x70\xcb\x45\x70\x8b\x73\x08\xec\xbf\x43\xf7\xbd\x74\x05\x73\x88\xae\x60\xee\x03\xd5\x05\xa7\x15\xba\xe2\x52\xfe\xd8\xbd\xbf\x07\x56\x71\x52\xdb\xf9\x09\xe7\x27\xc2\x3a\xbe\x5f\x3e\xe3\x72\xeb\x18\x38\xe4\xd8\xd8\xae\x32\x7c\xba\xa3\xa7\x81\x37\xa9\x79\x19\x41\xbf\x68\xcb\xe0\xe2\x40\x30\x83\x81\x18\x7d\x19\xb9\xa3\x82\xb1\x18\x5a\xbc\x45\x1f\x99\xb8\x4e\xec\xec\xfc\xc7\xda\xb5\x98\x14\x6a\xc9\x5e\xae\xed\x8f\xf2\x84\x4e\x50\x97\xbc\x00\x78\xf6\x8a\xb1\x5d\xe5\x9d\xd3\x1d\xfd\x78\xbc\x54\x8c\x54\xec\x3e\x09\xaf\x4f\x5a\x1f\x9f\xba\x5e\x7e\xfa\xde\x3a\xd3\xfe\x38\x52\x64\xe0\x13\x76\x11\x25\xc3\x69\x63\x0b\x30\x7e\x64\x85\x86\xdf\x62\x1a\x5f\x30\x9b\xc6\xd0\x9c\x47\x63\x68\x56\xd1\xf8\x82\x2b\x68\x7c\x41\x21\x8b\x18\x6f\xcd\xe1\x1a\xce\xf5\x20\x26\x6e\x47\x1d\xa1\x64\x8f\x4c\xcb\xd2\x68\x83\x92\xb7\x71\x3a\x5a\x3d\x77\xfc\x8f\x22\x43\x4e\x17\xf9\xf1\xbf\xa3\x65\x75\x91\xf3\xe3\x37\xe8\x6f\x99\x30\x86\x3f\x71\xff\x1f\xa0\xfa\xc9\x91\x7f\xa4\x87\xf4\xa7\x1e\xd1\xfa\x47\x0f\x9a\xaa\x9f\x69\x66\x66\x30\x0b\x61\x66\x44\xab\x3d\x49\xa3\xdd\xd2\x40\xf5\x45\x19\x34\x34\x55\xf3\x9c\xce\x20\xb8\x1c\x0f\x52\x94\xae\x83\xfd\xe3\xa2\x6d\x42\xc0\xc7\xa6\xd7\x9e\x7c\x12\xcd\x1b\x1c\x39\x38\xce\x71\xe4\xc0\x98\x6f\xc5\x7d\xe5\xd0\xf8\xf8\x57\x2c\x55\xa8\x51\x14\x80\x59\x88\x72\x58\xb1\xf0\x8b\x4f\xbc\xfd\xf7\x0a\x3b\x06\x93\x0c\xd0\x46\x91\x6a\xf8\x71\x16\xe0\xeb\x61\x4a\x03\xd4\x9f\xb5\x28\x23\x0f\x1c\x96\x67\x55\x28\xba\xd3\xda\xf3\xff\x4b\xdc\x70\xe9\xd9\xe9\xa1\xe1\x68\xe4\x1f\xc3\x8f\x8b\x14\xa2\x4f\x95\xcb\x7f\xaf\x1c\x3f\xf1\x36\x3a\xd5\xd8\xe4\xad\x8b\x0a\x8b\x34\x1f\x91\xcc\xbd\x43\xbd\x3a\x6d\x34\x72\x11\x86\x18\x5a\x7f\x4e\xaa\x62\x83\xf5\xe5\x82\xb9\xd3\xc8\xd0\x78\x0c\xa6\xc8\xd7\x69\xce\x5f\x74\xb9\x4c\x0c\x33\x03\xcb\xa5\x35\xcc\x7e\x10\x6e\x6d\x0d\x8f\x3a\xc2\xad\xdc\x0e\x30\xd7\x9d\xec\x4e\xda\xde\x02\x5b\x52\x50\x03\x77\xb9\x9a\x71\xee\x01\xca\xae\xd3\x46\x37\x4c\xf7\xd5\xa5\x5c\x1a\x47\x31\xc1\xf7\x1c\xac\xa0\x2b\x44\x5b\xfe\xc1\x88\x8a\xa0\x0f\x20\x12\xbb\x65\x49\x2c\x3a\x1d\x54\x71\x01\xc8\x4a\x76\xa7\x84\x2e\x8a\x80\x28\xbb\xba\xa7\x06\xce\xcd\x24\xba\x14\x71\x8a\x51\x87\xa6\xc9\xfb\x1d\xfc\x90\xd3\xe7\x73\x9e\xd8\xe7\xf0\x17\xfe\x8b\x34\x2f\x24\x89\xf7\x4e\x7a\xaf\x58\x3a\xbc\x74\xe9\x70\x2b\x77\xcc\xe1\xf7\x3b\x4e\x5a\x60\xfb\xfe\x37\x3f\xfd\x28\xe9\x57\x8e\x90\x63\xca\x4f\xf0\xdc\x52\xa0\xdb\x03\xa7\x3e\xe2\xeb\xf9\x97\x18\x17\x68\xe9\x7d\x1a\x06\x41\x15\xf6\x30\x85\x5d\x8d\x01\x41\x67\xac\x41\x5d\xb0\x0a\x48\x40\xba\x3a\x1e\x61\x0d\x22\xac\x02\xe3\xa5\x7a\x86\xb3\x03\xac\xa9\x6c\x88\xb8\xa8\xd6\x9e\xe6\x53\x49\xe4\x25\x6a\x62\xe8\x1f\xb8\xe9\xe7\x37\xdf\xf2\xb3\x9b\x16\x2c\xf8\x3f\xdd\xdd\xa6\xd8\xc6\xf3\xaf\x6b\x99\xf9\xf2\x43\x97\x6f\x7e\xe8\xa1\xc3\x7b\xd8\x3f\x6d\xfd\xd5\x1d\xdb\x5e\xff\xcf\x07\xaf\xfd\xcf\xc1\x41\x63\x6c\xf3\xd5\x7b\x17\x7d\x76\x0f\x3d\xf3\x90\x96\xcd\xa5\xad\xaf\x49\xcc\x82\xf1\xd5\x35\x97\xba\xba\xe6\xae\x59\x5d\x73\xaa\x44\xf5\xa0\x87\x4d\xd4\x40\xc4\x25\x0a\x1d\xae\xec\x15\x5d\x4e\x50\x94\x70\x15\xed\xb4\x6b\x68\x39\x31\x36\x71\xe9\x6c\xc9\x09\x59\x9e\xbc\x62\x66\x54\xbe\x7c\x9c\x5b\x03\x30\x7d\x8a\xe1\xb9\xdf\xea\x6c\x8c\x1b\xf4\x3c\x06\xd0\xe6\xf2\x21\x3d\x6a\xf5\x42\x9a\xcd\x87\x88\x27\x9f\x66\x53\xc9\xae\x99\xc4\x4a\x3e\x35\xfb\xca\xeb\xae\x0b\x49\x0b\x96\xad\x5d\x32\x33\xb1\x74\xdb\x17\x97\x5d\xfb\xfd\xdb\xb7\x59\xcf\x3d\xd7\x2e\xb8\xd3\x26\x1b\x6b\x34\x9e\x97\x27\x7b\x2e\xf8\xd6\x57\xbe\xf4\xca\xfa\x79\xf7\x6e\xb9\xe1\xba\x4f\x7d\x66\xce\xba\x87\x0b\x3d\xbc\xfe\x82\x6f\x6d\x5b\x71\x85\xff\x22\xbd\x7b\x61\xe3\x82\x5d\x1d\xb9\xab\xf6\x8c\xd9\xcb\xaf\xf0\x97\x32\xf5\x4c\x14\xe6\xca\xb5\x4c\xc9\x8f\xd4\xb0\x55\x70\x55\x00\x3b\x2c\x45\x3b\x4c\x5d\x5d\x42\x6a\xb8\x2b\xc5\x46\xa4\x86\x05\xd7\x81\x83\x21\x34\x1d\x65\xb7\x58\x0c\xc7\x90\x20\x06\x5c\x2a\x96\x82\xea\x92\x07\x2f\xee\x8f\xc4\xe2\x09\xcd\x05\x09\xdc\xc6\x7b\x84\x09\x8a\x4e\x5e\x52\x59\x2f\x91\x27\x29\x23\xa0\x98\x21\xef\x3e\x41\xae\x0a\x7f\x47\x79\x0d\x0d\x42\x72\xac\xa9\xa7\xfc\xee\x13\xca\xa1\x27\xde\x25\x07\xbe\x42\x1e\xbd\x56\xd9\x4c\xfe\x76\xcd\x35\xd2\x79\xe8\x68\x7f\xe2\x5d\xbd\xe1\x3b\x60\x24\x5a\xf0\xca\x5b\xcb\x47\x9f\x78\xf7\xdd\xcb\xb3\xe4\xd1\x6b\xe0\x9a\xff\xbe\xe6\x9a\xd5\xf5\xe3\xeb\xb9\x0f\xc2\x58\xaa\x67\xd2\xcc\x7c\x0d\x33\x18\x36\xb1\x8c\x9c\xaa\xc8\x46\x75\x34\xdb\x65\x3d\x60\x99\xa1\x58\xd6\x55\xd0\xa1\xc8\x14\x63\x76\x60\x41\x29\xd8\x00\x2c\x58\x34\xfa\x61\x2c\x25\xba\x8b\xbc\x1e\xbe\x93\x63\x43\xdb\xa3\x17\xe2\xe3\xb8\x74\x56\x51\x21\xfd\x5c\x98\x48\x46\x22\xc5\xac\x3a\x40\x46\xc7\xde\xb9\xfa\xbe\xc9\xc8\x3c\x15\xba\xe4\x92\x0b\x43\x41\x72\xa9\xf2\xb0\xe0\x9d\x3f\x6b\xcd\xac\x6e\x15\xa3\xe5\x91\xa1\x2a\x46\x0f\x77\x02\x42\x24\x9a\xec\x70\x1a\x09\xf9\x39\x99\x4d\xfa\x7f\xcd\x5a\x3d\xb9\x59\x57\x8e\xe3\xb5\x8f\xfa\x01\xe2\x38\xff\x07\x34\xbc\x8c\x6a\x8f\x35\x68\xb8\x8c\x2f\xfb\x53\xff\x19\x5d\xe1\x17\x42\x61\xf4\x5f\x60\x54\x55\x14\xfa\xcb\x08\x88\xee\x77\x83\xcd\xaf\xf6\x57\x31\x12\xad\x11\x5e\x67\xe8\x2d\x23\x9b\x22\x29\xc0\xad\xb5\x6f\xb0\xa4\x7c\x75\x32\x72\x6b\x48\x80\xcd\xdf\xa3\xac\xb8\x5f\xc5\xc9\x53\xac\xa2\x34\xa7\xfc\x75\xc4\x69\x97\xf2\x07\x3c\x7f\xf6\xe7\xd5\xf8\x6c\x35\x2e\xc9\xc3\xcc\x61\x4a\x0e\xc4\xc2\x4d\xad\x47\xb0\x6f\x8c\x6a\xa2\x8e\xeb\xb0\xcc\x65\x11\x37\x03\x4d\xd4\x29\xda\x5d\x30\x08\xf5\x54\xa6\xb9\x31\x26\xa8\xce\x03\xe3\x91\x15\x8b\x8c\x85\x7a\xde\x88\x04\x73\x84\x91\xc4\xe1\xcb\x48\x3a\xe1\xcb\x88\xf1\xcc\x12\x7a\x43\x41\xe0\xa6\xbe\x4f\xbd\xa1\xe5\xef\x2b\x6f\xc0\xb6\xcc\x9e\x4b\x1a\x5f\x55\x8f\xbc\xaa\xfc\x5a\x39\xf4\x6a\x99\x3a\x53\x5f\x1d\xb7\x6f\x77\x00\x8d\x9d\x40\x65\x75\x55\xd0\x9c\xa3\x6e\x3f\x95\xb6\x00\x8f\x34\x16\xcc\xa1\xae\x60\x10\xf8\xa7\x2a\x40\x65\x55\x3d\x39\xa6\x58\xe8\x4e\x56\xd5\x72\x95\x45\xe4\xdf\x4e\x1c\x20\xef\x28\x0b\xab\xb1\x8d\x55\x59\x8f\x92\xbe\x24\xa1\x9f\xbc\xce\x86\x11\x59\x5e\xfa\x14\xb1\x8a\x35\x53\x5d\x92\xaa\x3e\x65\xfc\x49\xda\x83\x68\xf4\xc0\x94\x87\x29\x3e\xed\x81\xde\xb1\x87\x12\xe6\xee\x31\x3d\xc5\xa5\xe5\x73\x60\x2c\x8c\x90\x41\x6f\x17\xc6\xbc\xa8\x77\xbf\x9b\xed\xc0\x7b\xb2\x49\x36\x39\x7e\x97\x1a\x7f\xdc\x62\xe4\x42\xa0\x2e\x4d\x9c\xc1\xab\x28\x5f\x96\x99\x02\xb7\x83\xce\x97\x61\x86\xc9\x4f\x0a\x68\x9b\x1c\xe0\x56\x3e\x7d\xf0\xee\x9e\xd3\x6b\x6f\xda\xb3\x0b\xfc\x62\x7a\x7f\x26\x3f\xee\x8a\x52\x1d\x82\xb5\x3f\xda\x83\x13\x7a\xcd\xef\x90\xce\x8d\x55\x9c\xa9\xaf\x42\x57\x8b\x33\xf0\x8d\x08\x13\x34\x39\xc6\x76\x8c\xfe\x98\x5f\x8c\x08\x63\x86\x0a\x79\x67\x4a\x1f\xd1\xb5\x0c\x90\xec\xb9\x2a\x73\xf2\x59\x14\x1a\xbe\xb1\xdb\x90\x49\xeb\x59\x9d\x78\x0c\xba\x67\x5c\x69\x45\x55\x0b\x9f\x00\x9f\x6f\x8c\x9b\x9c\xe4\x9b\xd8\x49\xf0\x3c\x8c\x32\xe0\xde\xa9\xf2\x1d\x85\xd5\xaa\xf2\x9d\x83\x66\x64\x99\x2b\x1a\xdf\x45\x4f\xf7\xac\xd6\xda\x27\xd1\xe7\x4c\x78\x86\xba\xfe\x08\x3a\x0d\xdf\x48\x75\x1a\x87\xa6\xd3\xa0\x42\x83\xa2\x02\xd9\x79\xb2\x6e\x1e\x25\x13\xcc\x34\x7e\xf1\xe8\x9b\xc7\xc7\xb4\x70\x62\x63\x3b\x80\x46\xdf\x66\x04\xee\x6f\xfc\xd7\x69\x8c\x2e\x86\xde\xa6\xbe\xcd\x2e\xff\x8b\xf2\x18\xd9\xf0\x17\x76\xed\xa8\xfc\x17\xb2\x01\xf6\x10\x37\xfb\xa9\x5f\xf0\x2b\xf8\xeb\xd1\x9a\x49\x18\x49\x9e\x78\x04\x09\x0e\x92\x0d\xca\x63\x7f\x65\x7b\x25\x32\x2a\xbf\x4c\x2f\x1d\x7d\xc5\x4d\xc8\x68\x51\x95\x75\x1c\xc3\xf1\xcf\xf1\xcf\x51\x7f\xee\x20\x8d\x7c\xb0\x56\x30\x65\x0d\xa1\xf6\x4e\x8d\x7c\xf0\x69\x91\x0f\xfb\x31\xf2\x81\xfa\x2f\x24\x0c\x93\xc5\xb8\x87\xa9\x51\x0f\x39\x90\x13\xa8\x54\xc6\xa5\x38\xb7\x97\x38\x41\xce\x3a\xf7\xee\x55\xde\x57\x0e\x2a\xef\xdf\x53\xa6\x7f\x34\xdc\x61\xec\xe0\xde\xbd\xe4\x6c\x7a\x78\x02\x5c\x36\xd0\x21\xc6\xe3\x92\x10\x2e\x7b\x0d\x5c\x75\x2a\x5c\x18\x1b\x54\x37\x01\x2e\x8b\x09\xd7\x33\x18\x98\x62\x78\x98\x35\x8b\x44\xdf\x3d\x19\xbc\x68\x67\x74\x0a\x58\x98\x78\x71\x1a\xa0\xa6\xd2\x2a\x4b\x61\xd2\xf4\x55\xef\x98\x13\x4c\xa5\x90\x40\xe0\x89\x16\x3b\x8a\x51\x1e\xc1\xa8\x93\xa6\x3c\xdc\x93\xf7\xe4\x53\xf9\x94\x90\x12\x3c\x93\x81\x58\xf9\xfa\xae\x5d\xaf\xef\xde\x0d\xdb\x43\xbb\xa6\xc0\xd2\x58\x3d\x03\xdb\x89\x30\x89\x13\x61\x72\xd4\xc0\xe4\x1c\x83\xc9\x3a\x0e\x93\x6d\x0a\x4c\xc0\x59\x42\x6a\x32\x34\x9b\x89\x8b\x3c\xf2\xc2\x7b\x17\x4f\x81\x64\x87\xf2\x2e\x79\xe4\xf9\xf7\x2e\x56\xd7\x53\xc7\xe1\x98\xce\xf4\x32\x57\x50\x48\xba\x2b\x72\x2f\xd5\x05\xa2\x54\xbd\xee\x50\x7b\xaf\x8f\x8e\xb5\x50\x45\x0e\xa9\x6e\x59\x80\xaf\x1f\xe0\x0b\xe1\x7c\x13\xed\x80\xf9\x26\x2d\x1e\x30\xf2\x8d\x33\x7a\x68\x37\xa6\x7a\xb5\x6e\x94\xa3\xa2\xdc\x8c\x91\xca\x25\x8b\x2d\x8d\x8a\x76\x87\x58\xd4\x93\x29\x38\xe4\xb2\xe8\x21\xef\xd7\xcd\xa0\x71\x05\x2e\xbd\x60\xe5\x3d\xb9\x7e\xbe\xb3\x23\xcd\x61\xa6\xa4\x13\xf8\x71\x32\x86\xaf\xdd\xcb\xdb\x04\x3d\xab\x63\x8d\xbc\x95\x77\x72\x4e\xb7\xc1\xa3\xb3\xa5\x82\x5e\x52\xd6\x39\xda\x62\xf5\xf1\xf6\xd9\xed\x81\xec\xd9\x73\x92\x77\x4f\xe5\x57\xd6\xc7\xea\x2d\x26\x41\xc7\xb1\xc4\x65\x77\x5b\xec\x84\xf7\x84\xfb\x92\x9c\xa9\x29\x3b\x94\xcd\x2d\x6e\xf4\xea\xbd\x9d\xeb\x95\x74\x61\x02\x7d\x70\x25\xb7\xa7\xca\xd1\x12\x9d\x90\x1d\x34\x88\xc7\x5d\xc1\x58\x23\x7e\xdc\xb5\x5b\x74\x48\x55\x1e\x76\xa3\x76\x3c\x15\xdd\x7c\x14\x57\x3c\x31\xe0\xfc\x74\x88\xbd\x4f\x46\xd4\x85\xc7\xa9\x80\xdf\x03\x06\x51\xa1\x0c\xe7\x6b\xd7\xe1\xbc\x60\x69\x5e\xc6\x94\x5c\xda\x3a\x5c\x98\x26\x44\x31\x99\x92\xd5\x17\xcd\xd1\x24\xaa\x92\x25\xde\x46\xd7\x01\xa6\xa1\x74\x2e\xe9\xea\x9b\xd0\xbf\xe1\xac\x94\x84\x50\x0a\xfd\x1b\xed\xa8\xb9\x82\x0a\xb1\x3f\x16\x4f\x67\x68\xf7\x39\xa0\x25\x4b\xdd\x45\x06\xc3\x72\x82\xdd\x32\x11\x4b\xa1\xc6\x26\x75\x1d\xaf\x33\xd7\x4f\xf2\x9d\x39\x29\xc4\x7a\x00\x01\x2b\x11\xa4\x78\x67\x9a\xa4\x72\xa0\x8e\xc3\xd1\xae\x7c\xbc\x33\x07\x4d\x38\x08\xa7\x72\xd2\xf7\xc3\x77\x7d\xb6\xdc\xb5\x65\xb3\xe3\x47\x3f\xf2\xbd\xb8\xae\xfc\xb9\xbb\x43\xeb\xbd\x57\x2f\x2a\x3f\xd8\xf1\x5a\xd9\xb7\x69\x61\x79\xd1\x55\xde\x9f\x93\x63\xe5\x5b\x1f\xf4\x97\xcb\xae\xe5\x9f\x9e\x53\xbe\x78\x5f\xf4\x95\x57\x02\x0f\xdd\xba\xe0\x4a\xef\x4f\x7e\x32\xed\xcb\xe5\x85\x97\x7b\x7f\xfc\x23\xcf\x15\xf3\xcb\x2a\xbf\xd6\xc6\xcd\x85\xc7\x63\xbe\x9c\x63\x26\xe0\x58\xdc\x9c\x26\xf9\xd0\xf0\xc3\x98\x29\x1a\xf3\xe5\xf2\x4f\x0c\x8e\xa3\x71\x01\x67\x08\x8e\xab\x89\x7a\x38\x53\xe8\xd7\x82\xbb\xee\xba\xb2\xfa\xff\xcc\xe1\x9b\xff\x52\x73\xd5\x14\x1c\x7c\x53\x70\xf0\x4f\xc5\x21\x30\x01\x07\xef\x24\x1c\x7c\x1f\x83\x03\x60\x40\xce\x04\xfd\xe6\x5d\x6b\x7f\xbc\x5b\x79\xf2\xcc\x11\x7e\xf1\x5d\x6b\x2b\xbb\x95\xa7\xa6\xc0\x1c\xd0\x60\x76\x53\xf6\xe7\xc7\x92\x43\x55\xc9\xee\x53\x61\xa6\xc9\xa1\xd5\x58\x3b\x9b\x8b\xc2\x2c\xba\x35\x98\xad\x81\xd3\xc4\xda\x79\x08\x86\x78\x39\x69\x78\x57\x47\x6a\x0a\xd4\xfd\xec\xf4\xc2\xf5\xcf\x7c\x54\xd9\x30\xfc\xcc\x47\x3d\x53\xe3\xed\xae\x2b\xb0\xf9\xfe\x8f\x46\x3f\xec\xf9\xe8\x99\x61\x6d\x2d\x86\x61\x36\x52\x3f\x85\x9e\xf1\xd3\x98\x3b\x5c\x8e\xd5\xb4\x9b\x22\xab\x03\xc6\x66\xa8\x72\x4c\x23\x99\x31\x79\x78\x74\x1f\x1b\x27\xaf\xd0\x68\xe6\x5f\x4e\xf9\xbd\x16\x67\x52\xfd\xfd\x98\xaf\x0a\x73\xd0\x41\x4b\x52\x7f\x4f\x43\x56\x5b\x95\x1e\x65\x80\x68\xb9\xfc\x3f\x86\x31\xba\x10\xc6\xa8\x1e\xf5\x24\x1d\xf5\x02\x09\x34\x06\x8b\xaf\xe0\x8d\x8a\xbc\xae\x26\xac\x1a\x01\xf9\x31\x79\x99\x1c\x54\x0e\xab\xe9\xcc\xa3\xfb\x30\xa7\x10\xef\x73\x29\x74\xc2\xdb\xd5\xfb\xe8\xab\xf7\x21\xe3\xf7\x81\x69\x42\xd6\x77\x6b\x89\xdb\xa0\x9e\x5c\x4a\x1a\x01\x96\x66\x65\x66\xf5\x3e\x55\x9a\xfc\x33\xd5\xdb\x30\x8b\x1a\x8c\x69\x04\xdd\xca\xe9\xe7\xde\xf3\x6f\x8f\xe2\x55\x17\xca\x5f\xdb\x5e\xde\xf1\xfa\x73\x97\x18\x88\x4d\xc5\x82\x6d\x98\xfd\xa9\x5a\x59\xa3\x87\x5f\x8a\xd5\xf8\x2c\x6b\xa6\x68\xd3\x74\x3c\x0f\x81\x7f\x4e\xf8\x88\x51\xcf\x1d\x24\xb9\x5b\x79\xf3\x8e\x77\x77\x93\xe4\x1d\xca\xf0\x1d\x64\x44\x3b\xc0\x19\xf1\x08\x34\xe1\x7e\x31\x26\xce\xef\xe6\x77\xd3\xfb\x31\x60\xe8\x46\x45\xb0\x75\xd5\xbb\xc4\x48\x0a\x2f\x52\xde\x20\xfb\xee\x20\xa9\xdd\xca\x1b\x77\xc8\x70\x44\x19\xde\xae\xbc\xc1\x76\xe2\xcd\x52\xbb\x94\x37\xb6\x63\x6e\x0d\x8d\xa9\x7c\x98\xea\xd5\x71\x66\x19\xd5\xda\x22\x15\x39\x4e\xfd\xd9\xc1\x4c\x35\xb2\x82\xd4\x3a\x85\x8c\xaa\xd5\xe7\xb3\x63\x74\xa5\xa5\x8e\x8f\xc6\xd5\x28\xd0\x38\xc8\x69\x23\x4e\x57\x41\x11\xe8\xd9\x3d\xd9\x6f\x41\x9c\x21\x82\x6a\x3a\xae\xd7\xa1\x9a\x8e\x62\xbb\x1a\x59\xa9\x7e\x91\x35\x33\xf8\xb8\xab\xcb\x15\xe7\x67\xf0\x5e\xd7\x4f\x25\xef\x34\x90\xde\xbf\x1b\x3f\x0f\x5f\xec\x5c\xe5\x17\xae\x60\xd0\x45\xd2\xb0\x1d\x7d\xa5\xa0\x95\xc3\xa1\x74\x4d\x32\xcd\xcc\x34\xa6\x03\x66\x98\x0e\xa6\x94\x42\x49\xde\x9e\xc3\xc5\x51\x94\xda\x30\x19\xb7\xd3\xca\x0c\x1d\xb4\x32\x43\x1f\xc0\xdf\xd1\x2e\x3a\x0e\x98\x2d\xce\xce\x19\xea\xb2\xbb\x98\x93\xa2\x34\x38\x06\xe0\xea\xea\x48\x66\x08\x66\xd9\xdb\x60\xa8\xc1\x2e\x8e\x2a\x1b\xb1\x12\x97\x44\xd3\x59\x9d\x31\x4c\x02\xa1\xd1\x36\xf9\x10\x46\x81\x8f\xe0\x7c\x72\x35\xe1\xd8\x98\xb9\x2f\x15\x09\xfe\xbb\xdb\xe1\x94\x3e\x88\x06\x53\x7d\xa6\x38\xcb\x5e\x5d\xc0\x58\xf0\x02\x17\x73\x3a\x5e\xff\x17\xd8\xbd\xf7\x87\x3a\x6b\xc4\xc1\x72\x11\xd5\x42\x2c\x10\xb3\xd3\xf0\x6c\x6a\x9a\x38\x52\xe7\xf6\x5a\x46\x1c\xe9\x64\xd1\xe0\x32\x11\x5a\x35\xe0\xd8\xfa\x69\x99\x7f\xc2\x3d\x65\x98\xdb\xf1\x8a\xa5\x69\x6d\x37\xf2\xd1\xa9\x3f\xf3\x2f\xd0\xdc\xa1\xec\x78\x9c\x5f\x0e\xb4\x0d\x0c\x81\x2d\x76\x50\x6e\x92\x3a\xf3\x69\x8c\xf1\xeb\xd7\xe5\x5d\xac\x95\x4f\xb3\x71\xa1\xcb\x9d\xef\x4a\xf4\x63\x10\x41\x2a\x19\x53\xd7\xaa\x79\xe1\xd7\x46\x03\x27\x4d\x4f\x67\x2e\xdb\xf4\xc5\x7b\xde\xb9\xb4\x75\xe1\xa5\xd7\x7c\xfa\xc6\x5b\xce\x5b\x69\xdb\xe8\x48\xcd\xca\x93\xe9\x73\x37\x6c\x3e\xb7\xc9\xcd\x1b\x04\x57\x54\x8c\x7f\xa9\xaf\x4f\xb9\x77\x9d\xfb\xde\xef\x75\xf6\xde\x7e\xd1\xf6\x9e\xde\xd5\xb9\xb6\x50\x77\xe8\x25\xe5\xc7\x3f\x7b\x64\x75\xce\xa8\x77\xda\xf2\xb7\xd5\xad\x1c\xdc\x97\x9c\x79\xe1\xed\xab\xb2\x2e\xa3\x2e\xe8\xcb\x5d\x17\x89\xbc\xf2\x63\x1c\x33\x57\x33\x16\x7e\x36\xff\x6f\xcc\x7c\xe0\x32\x22\x2f\xa0\x1c\x35\xa7\x22\xcf\xb1\x17\x7b\xa1\x2b\x16\xc2\xa7\x77\x0e\xb0\xcf\x8c\x2e\x1a\x7a\xe3\x70\x79\x60\x26\x74\xab\xc0\x86\x08\xc0\x0a\xba\x4c\x88\x20\x3e\x7c\xbe\x8b\x4d\xb9\x3d\xee\x54\x32\x95\x66\xf3\xa0\xe1\x84\x38\x2b\x2f\xe8\x71\x9f\x5c\xad\x33\xce\x9d\x1b\x1e\x9c\x31\xbd\xd1\x16\xb1\xba\x96\xad\x11\x75\x61\xb7\xc9\x68\xe3\x38\x83\xd5\xd7\xe0\xed\x9e\xbd\x79\xd6\x80\x2d\xf9\xc4\xd7\xdc\x52\x6a\x9e\xcd\xb1\x6c\xa5\x2e\x57\xd7\x7c\xc9\xc2\xb4\x8d\xb5\xf0\x06\x42\xcc\x76\xbf\x23\x39\xc3\x23\x58\x3b\x66\x92\x6f\x0f\x86\xa6\xdf\xd6\x26\x99\x12\xfd\x7d\xa1\xc1\xf7\x53\xcb\xf7\x15\xa2\x0b\x5a\x9d\xae\x88\xcd\x63\x30\x13\x5e\xef\xaa\xef\x9b\x75\xd5\xac\x67\xc9\xca\x2b\x5b\x57\x3f\xa6\x63\x85\xe8\x67\xde\x78\xd0\x10\xbe\xf8\xca\xa7\x56\x5a\x7a\x02\x1d\x81\x46\x8f\xcf\xce\x9b\xd2\x4b\xd6\x44\xd2\x57\x61\x9e\xfa\xf7\x99\x5b\xf9\xf7\xf9\x1c\x13\x65\x66\x32\xf3\x98\x59\x0c\x4e\x4f\x4d\x15\x79\x86\x1a\x4e\x3a\x3f\x23\xf7\x1e\x96\xf3\x95\xe2\x02\x20\x42\x1e\x54\xbe\x01\x93\xd1\xe7\x37\x34\x35\x76\xf6\xd3\x38\x2f\xa6\x68\x9c\x21\x3a\x5e\x64\xc4\x86\x74\x67\xff\xe0\x3c\x2a\xf4\x81\x2e\xfa\x6c\x48\x17\x06\xb2\xe8\x63\x69\x5d\x2a\x1f\xd2\x65\x81\x32\x69\x3e\xa5\x26\x1b\x75\x76\xe4\xf5\x1e\xb7\x27\x8f\x81\x09\x7d\x7e\x7d\xfd\xdc\x65\xd7\x6d\xf9\xfc\xc8\xe7\xb7\x5c\xb7\x6c\x6e\xbd\xde\x3f\xf9\xc0\x23\xc2\xac\xb6\x73\x57\xdd\x7c\xfb\x0d\x2b\xd6\xb5\xce\x37\x93\x7c\x70\x46\x77\xa8\x5d\xfe\x6f\x39\x7d\xf1\x9d\xed\x97\x5d\x96\x58\xec\x74\xb1\x43\x8d\xa6\xc6\xb5\xab\xd6\xcf\xcb\x64\xe6\xad\x5f\xb5\xb6\x11\xa3\x41\x27\xb6\x4d\xeb\xfb\x2e\x98\xde\xd2\x98\x3b\xaf\xe7\x52\x2b\x59\x90\x98\x33\xc3\xb7\x70\x1d\xa6\xbc\xaf\x5e\xb0\xf6\xba\xad\xb3\x2e\xf3\xae\x6f\x68\xc0\x61\x0a\xb4\x60\x80\x16\x32\xe3\xa6\x11\x0d\x67\x31\x5f\x61\x4a\xb6\xaa\x25\x3a\x98\xc1\x68\x50\xb9\xcb\xff\x9d\xbe\x7f\xff\xf7\xdf\x30\x52\x8b\x49\xb6\xa5\xad\xb2\xe5\xbb\xba\xa2\x95\xfc\xcd\x2a\xd7\x7d\x57\xb6\xd9\xf7\x9b\x6d\x16\x67\xcb\x7e\x3b\xdd\xfa\xe8\xd6\x4f\xb7\x0d\x74\x9b\xc0\x6d\x09\xce\x62\x29\x99\xb8\x1e\x0c\xb4\x6e\xd9\xd7\x2d\xfb\xbb\xe5\x86\x6e\x39\xd1\x2d\x9b\xbb\x99\x17\xcd\x96\x3a\xbb\xcf\xdf\x90\x48\x6b\x7f\x64\xc0\x04\x87\xac\xb6\x09\x07\xd3\x69\x79\xc0\x4f\x18\x95\xd6\x18\x3e\x9d\x23\x71\x24\x70\xde\x81\x64\xd5\x08\x3c\x93\xd0\xd0\x0f\xb8\x22\x9f\x84\x4e\x60\xb1\x43\xf8\x31\x82\xcf\xef\xeb\x4d\x3c\xa0\xbc\xfa\x40\x62\xc5\x93\xd7\x5e\x96\x32\x3d\xf2\x8b\x17\x13\x9b\xef\xa5\x44\xcd\x78\x42\x33\x6c\x56\xd2\x98\x74\xb7\x65\x62\xd3\x9c\x19\xb2\xa1\x25\x35\xeb\x8e\x74\x9d\xdf\x2f\x24\xce\xd9\xf4\xf9\x71\x72\x8b\xbb\x4f\x2c\xbf\x57\xda\x74\xc9\x4d\xd3\x6d\x8d\xca\xdb\x5d\xbb\x1c\x4f\x5d\xa5\x52\x34\xb3\xb6\x7e\x45\xc0\x3f\xfa\xd4\x7d\xb6\x64\x36\x39\xd3\x3b\xc0\xde\x36\xed\xfe\xae\x7b\x07\x5c\x8d\x8d\x96\x8e\xcd\x17\xa1\x61\xc2\x9d\xfa\x32\x08\x47\x07\xd5\x37\x1c\x18\x8b\x9e\xa4\x6e\x8d\x14\x80\x2c\xa0\x25\x0d\xea\xb3\x24\x06\x48\x67\xfc\xea\x40\x42\x67\x4d\x04\xa4\xd1\x6d\xae\xe9\xae\xd1\x6d\xff\x41\x5e\x22\x2f\x29\x4f\xe1\x82\xcf\xec\xd9\xf3\x22\x7c\x24\xa6\x8b\x9c\x38\x5c\x60\x7f\x39\xda\x56\x40\x41\x86\xd5\x41\xaa\xf1\x5a\x12\x95\xbb\x4d\x30\xaa\x31\x78\x14\xb9\xb9\x39\x23\x27\xa8\x9c\x75\x63\x45\x9c\x92\x9b\x46\x49\xba\xbd\xc6\x96\x52\xc2\x5d\xcd\x51\x2d\xb6\x00\xa7\xbb\x13\x30\xdc\x83\x21\xb4\xc9\x8c\x21\xd8\x75\x27\xa8\x53\xbe\xb3\xa3\x2b\x8f\xde\x07\xea\x8f\x0a\x11\xf4\x15\xa4\x12\x22\xf5\x19\x64\x48\x5c\xd0\x63\x9d\x85\xbc\xa8\xd3\x27\x0b\x6e\x1b\xd9\x3c\xb4\x75\x88\x6c\xb6\xb9\xbd\xa2\xf2\x70\xc1\xef\xbc\xe0\xad\x0b\x9c\xfe\x82\xf2\xb0\xe8\x25\xfa\x26\x57\xbb\x95\xcc\x21\x2b\xfb\x87\x86\xfa\x95\xe7\x94\xff\x63\x6d\x77\x35\xb9\xea\x2c\x7f\x53\xfe\x76\xae\x7b\xc0\x25\x1a\x97\x2e\x35\x8a\xae\x01\xf7\xb9\x44\xf8\x9b\x05\x67\xe3\x6a\xbc\xb7\x71\x52\x15\x86\x3c\xcc\x26\x63\x31\xa7\xcc\x4a\x66\xed\xd8\xea\x7b\x27\xa6\x99\xa9\xb1\x30\x18\x05\x04\x86\x3e\xae\xbc\xd7\x46\xa5\xff\x83\xfb\xaa\x2f\xe4\xc4\x01\x7e\x71\x50\xda\x83\x81\x93\x7b\xa4\x60\xe1\x63\xff\xe8\xda\x13\xfb\x41\xf5\xc2\xa0\x74\x72\x61\x35\x84\x1d\xe6\x9b\xbf\x6b\x4f\xab\x06\xa7\xbb\x91\x7f\x9e\x31\x31\x76\xd0\xa5\xcf\xa2\x7a\x9a\x97\xae\x2c\x3a\x69\xd0\x8d\x81\x96\x97\xe0\xb2\xe3\xc6\x19\xa1\xb9\x08\x6e\x98\xea\xcd\xe2\x7e\xa1\xce\x41\xf3\x28\xec\x60\xa5\x59\xb1\x13\xfb\x08\xd6\x7a\x40\x2f\x29\x70\x19\x98\xfa\x51\x92\xf7\xa8\x6d\x98\x20\x87\xfe\x8a\x93\xde\x63\xa3\xfb\x94\x67\x08\x77\xf3\xae\x6f\x28\xcf\xb0\x4f\xee\xba\xf9\x31\x3c\xf8\xd7\x72\x99\x1d\x7a\x15\x3d\xa8\xaf\xa0\xca\x76\xf3\xee\x03\xa3\x0f\xee\xbe\x45\x3d\x50\xeb\x2f\x73\x80\x2e\xa9\xe6\x00\xdb\xc1\x90\xcc\x4d\xf4\x32\x4d\x5c\x1e\x23\x62\x3c\x96\xac\x46\x8b\x8d\x3e\xab\xfc\xac\x80\xd1\xf4\x18\x10\xa6\xc6\xcf\x23\x37\xf7\x30\x6a\x9c\x15\xed\xff\x04\x70\x73\x1b\xb3\x9e\x29\x85\xf1\xfe\xc6\x4a\xc9\x48\x53\x35\x8c\x18\xc7\x27\x65\x31\x06\xa6\x39\x87\x66\x7d\x0b\x50\x23\x4d\x7d\xa9\x49\x2c\x8a\x81\x85\x38\x38\x7b\xd1\x41\x68\x84\xb0\x07\x53\x1e\x8b\x19\xe0\x72\x0e\x55\x5c\x90\x3c\x0e\xb1\x18\x0a\x03\xb9\x3c\x18\x1c\xa7\xd6\x84\x92\x5c\x20\x40\x40\x51\xef\xd7\xa7\x3a\x30\x79\xc1\x65\xd5\x81\x28\xaf\x96\x63\x02\x1b\x55\x2f\xae\x4e\x75\x26\x7a\x9a\xc2\xa2\x19\x6c\x6c\x68\x7b\x53\x4b\x36\x7d\xe9\xbb\x5f\xda\xb4\x24\xe5\xd5\x63\x79\x26\xd2\xca\x0e\x95\x8f\x5f\x13\x39\xcf\x67\x36\xbb\xea\xe3\x8d\xad\x69\xaf\x68\x38\x5e\x6e\x5e\xb1\xed\xf2\x6b\x96\xe7\x72\xcb\xaf\xb9\x7c\xdb\x0a\xb2\x46\x0d\xe4\xc5\x2c\x3f\xac\x37\xf4\x3b\xe6\x5b\xfc\xa5\xdc\x5b\xa8\x35\x71\x1e\x74\x94\x85\x7e\x4f\xd6\x93\x0d\xbf\x1b\xfd\xbf\xe4\x91\xdf\xa3\xbb\xec\xf7\xec\x2c\xa4\xf5\x5c\xe6\x4d\xfe\xc7\x3c\x53\xcd\x8d\x37\x92\xb9\xec\x6c\x76\xf0\x77\xca\x63\xca\x5e\x2e\x38\xfa\x12\x3b\xeb\xf7\xe8\x84\xa3\xbe\xa1\x53\x33\x98\x82\x6e\x0b\xe8\xf8\x06\x18\x47\x8d\x0c\xea\xd4\x9a\x13\x46\xa0\xaa\x35\x7a\x60\x78\x41\x55\xd1\xd5\x1d\x2b\x4e\x61\x34\x03\xd2\x03\x1a\x14\x7c\xd0\xb1\x2e\xbe\x4a\x5a\x48\xeb\x8f\xc8\x1d\xbf\x3a\x79\x84\x3c\xf0\x2b\x72\x2b\xb6\x5b\xca\xec\x41\x12\x50\xfe\x48\x4b\x11\x61\x5e\xdb\xb0\xf2\x47\x12\x40\x75\x1e\x60\x74\x40\x9f\x3d\x0d\x7d\x96\x05\x68\x4b\x31\xec\x2f\x5f\x4e\x6e\x05\xda\xdb\xe5\xa4\x1a\x1d\x8c\x8b\x2f\x7c\x05\xd9\x04\x65\x13\xa8\x48\x0d\x18\xbd\x88\x21\x8b\xf5\xea\xea\x05\x28\x4b\x45\x4f\x3d\x80\xd4\x46\x7b\x25\x99\x07\xde\x01\x9d\x03\x7d\x9f\xe8\xf9\xe4\xac\x6c\x0b\xa1\x33\x2a\xed\x21\xfa\x1d\xc7\xe9\x15\x2f\x8b\xc6\x92\x29\x87\xce\x66\xf5\x71\xb7\x27\x75\x01\xf1\x02\x1c\x8c\x5d\xaf\xb1\x86\x90\x23\x1c\x6c\x0e\x2a\x87\x60\x93\xa5\x61\x34\x9e\x69\xa3\x77\x45\xda\x74\xdc\x33\x5e\x87\xf3\x71\x51\x82\xe3\x27\x67\xf2\x75\x6e\x3a\x7a\xb3\xea\x36\xe4\x92\x82\xe5\x66\x37\x53\x13\x1b\x8c\x79\x1c\xb6\xda\x08\x38\x1e\xb5\x71\xb9\x2e\x4b\x71\x19\xcb\x48\xc4\xaa\x2b\xa4\x33\xa7\x31\x7d\x54\xc2\x44\xe9\xb2\x96\xf0\x7a\x0c\x93\x57\xb9\x1d\x6a\x42\xab\x7a\x6f\x35\xfe\x17\xef\x6d\x87\xbe\x1a\xbb\xb7\x8d\xc6\x0f\xea\xd4\x7b\x8b\x19\x64\xe4\x1a\xfb\x2c\x47\xa2\x60\x58\x8c\x3f\x23\x4a\xb0\xd4\x92\x72\xa8\xe6\x49\x27\xbd\x98\x5b\x56\x1d\x5a\xe8\x68\x20\x24\x0d\x3c\xb6\x9d\xca\xd4\xa8\x9a\xcd\x46\x2b\x3b\x51\xcf\x1c\xd6\x70\x52\xdd\x72\xbc\x91\x6a\x7c\x24\xa7\x32\x41\x0e\x7e\xf6\xea\xab\xa4\x99\x34\xbf\xfa\xaa\x72\x18\x39\x5c\x0d\x26\xd7\xf8\x17\xfe\x67\xc0\x9e\xdc\x0e\xf7\xac\xa7\xd9\x45\x68\x8f\x9a\x32\xb4\x24\xd4\x78\x38\x19\x5d\xae\x89\xa2\xc4\x89\x4a\xe3\xb7\x80\x6f\x7a\x53\xe5\x57\xaf\xbc\x52\x13\x03\x26\x03\x95\xd5\xfc\x82\x05\x6a\x84\xb9\xec\xaf\x60\x65\x85\x20\x4d\x51\xd2\x51\xee\x71\x55\x68\x5a\x56\xa0\xea\xbb\x0b\x53\x2b\xa8\x14\xa6\xc5\xd4\xc2\x58\x4c\x0d\x33\xb4\x8c\x61\x51\x1b\xde\x93\x43\x7e\x02\x44\x8d\xdc\xf5\x38\x71\xd1\x08\x84\x61\xbc\x2a\x93\x4e\x7a\x9b\x7a\xc2\xcf\xea\x1a\x5c\xec\x5e\x67\x42\xf7\xac\x72\x6f\x41\x0d\xb4\xa7\x5d\x06\x1b\xb2\x9a\xfd\xbd\x3b\xd5\xe6\x19\x6d\xa0\xde\x2c\x3a\xaf\x3f\xa2\xc5\xea\x9a\x41\x56\xe5\xc1\xea\xa1\x69\xd7\x0c\x26\x04\xcb\x7a\x7b\xb1\x19\x60\xcb\xd2\xb4\xe9\x62\xb3\x1e\xfd\x9e\x7e\x4a\x60\x0e\x98\x76\x26\x91\xd2\xbc\xa7\xb3\x97\xeb\xd7\xf5\x90\x84\x98\x88\x3b\xdd\x56\xe0\x67\xf4\xf0\xa7\x58\x5a\xce\x46\x93\x9b\xb1\xe4\xa6\xac\xcf\xc7\x5b\x63\x7e\xf7\x6b\x84\x65\x79\x9d\xc0\x97\xd9\xaf\x8e\x9e\x9f\xcc\xb0\x26\x8b\x4d\xc7\xad\x74\x05\xf9\x3c\xf7\x4e\x50\x42\xe6\xc5\x82\x01\x59\x6f\xb6\xae\xee\x38\x2b\x48\xee\xe8\xea\xe3\xa0\x4f\x9b\x78\x81\xd3\xb1\xe4\xf8\xc9\xe7\xcb\xca\x7b\x16\x33\xa9\x97\xc8\xd9\xca\xef\xb8\x15\xd4\xd7\xff\x3c\x8d\x6b\x61\x99\x85\x40\xff\x8b\x81\xfe\x2d\x30\xcf\x76\x6a\x59\x44\x39\x1a\xd1\x1a\xce\xa1\x4c\xf5\x66\x4b\x4d\x34\xa6\xba\x29\x81\x79\x71\x1d\x19\xb5\xf4\x50\x53\x0e\xb0\x6a\x6d\x57\xd7\xf0\xbb\x7a\x48\xde\x09\x76\x41\x2a\x49\x17\x2c\x04\xbd\x14\x42\x1b\x7a\xcc\x01\x0a\xa8\xa0\x21\xa7\x0b\xa1\xe1\xa9\x8f\x2d\x0c\xb8\x1c\x9f\x9a\x69\xbb\x79\xa5\x43\xef\x70\x5d\xe0\x82\xed\xca\x9b\x6d\x33\xb7\x88\xae\x80\xdf\x61\x08\x15\x2e\x7f\x6c\xd9\xad\x7f\x9d\x31\xc3\xe1\x27\x4f\x59\xa6\xcf\x9d\x6e\x9e\x76\x05\xb9\x40\x0a\x3e\x47\xe6\x2d\xd9\xe6\x8a\x38\xfd\x92\xb3\x81\x38\x6f\x5b\xa2\x7c\xfb\x39\xc0\xbc\x51\xe0\xcc\x41\xc9\xd1\xe4\x72\x09\x4d\xff\xda\xde\xd7\xd7\x4e\x4b\x7d\x4a\xa0\x13\x3d\xca\x3f\x8a\xfa\x16\x2d\x35\x85\xff\x52\xe8\xed\xce\x0b\xe8\xf0\x4e\x79\x04\x8f\xf4\xa7\xa5\x47\xda\x1e\x79\xa4\xed\xc8\xd2\x3f\x1f\x38\xf0\xe7\xea\xfe\x9f\xf6\x93\x97\xe8\xd7\x7e\x7a\xfa\xd1\xd6\xa3\x4b\xff\x74\xe0\xc0\x9f\x96\x1e\x6d\x7d\x54\x9d\xa3\x0b\x5a\x5e\x44\x8c\x49\xc3\xfc\x47\xd7\x95\x1b\x0f\xe3\x9a\x39\x26\xaa\xb8\x1b\x81\xf5\x5c\xd5\xac\x05\xe2\xea\x21\xb8\x22\x06\x96\xb6\x1a\xf8\x32\x16\xef\x62\x63\x41\x47\x11\x67\x92\x9c\x24\x44\x25\x2e\x9e\xc2\xc5\xcb\x42\xdf\x56\xdb\xf1\x74\xe2\x83\x60\x5f\x4a\xf9\x56\x7d\x5f\x2a\x1b\x98\x66\x5d\x7f\x9f\xab\xb0\xa7\x00\x86\xf3\xcb\xc7\x0f\xdf\x8d\x65\x99\x3e\x5a\x54\xe8\x26\x43\xe1\x96\x42\xeb\xd9\x5b\x84\x3d\xad\x67\x37\xd6\xbf\xfa\x03\x7f\x42\xb9\x87\xdc\xf0\xfa\xa1\x17\x8e\xde\xaa\xdc\x53\x60\x98\xda\x18\x13\x15\xce\x61\xa6\x54\x8f\xbd\x9a\xa0\xde\x5e\x26\x87\xc5\x00\x60\xd6\x14\x30\xe5\x19\x8b\x5d\x98\xc6\xd6\xc7\xa1\xbb\x61\xfe\xe4\x69\x4e\x86\x1c\x57\xcb\x9b\xa8\x19\xbb\x58\x2b\x40\x54\xb1\x4c\xc6\x45\x47\xc9\xd0\xd8\x8a\x2e\x70\x35\x5f\xb7\xc9\x21\xb7\xc0\xac\x92\x46\x11\xde\x4c\x3d\x49\x39\x31\x2f\x76\xf4\x10\xe4\x06\x8f\x53\x1b\x80\x63\xe1\x63\x19\x36\x99\x0f\xc3\x10\x4c\x45\x3b\xb9\xb8\x10\x87\x91\xf6\x49\xb8\x17\x50\xa4\x8d\xee\xbb\x95\x8c\x00\x01\x94\x7d\x93\x09\x70\xe8\x75\x40\x9e\xdc\x40\xc7\x25\xcc\x7f\x05\x9d\xc4\xaf\xa6\xb8\x9f\xc5\xdc\xc4\xa0\x2b\xb5\x81\x96\x28\x69\xa2\x11\xda\x2e\x44\xbb\xd4\x4e\xf3\xe4\xdb\x69\xaa\xe7\xe0\x69\x71\x6f\x53\x83\x6b\xdb\x68\x44\x6d\x5b\x2f\x48\x17\x4c\x92\x6b\x03\xe4\x0f\x58\xc4\x80\x6b\x26\x35\x0a\x03\x0d\x80\x72\x1c\x28\x20\xca\xde\xee\xa2\xab\x1d\x28\xe3\xe9\x3d\x8b\x7a\x97\xf3\x22\x25\x02\x0c\xf7\x04\x8c\xe8\x30\xa1\x29\x59\xd1\xea\x8c\x46\x68\xa9\x04\x4f\xd4\x49\xa7\x39\x1a\xc4\x1d\x6d\x66\x31\xfe\xa5\x13\x2c\xdf\x94\xce\x50\x2e\xd4\x5b\xad\xe4\x72\xab\x59\xb4\x5c\x69\x35\xaf\x26\xe9\xd5\x9b\xaf\x5c\xb5\x79\xbb\x10\xb0\x29\xcf\x08\x4f\x82\x0d\x90\xf8\xb4\x3e\x60\xfb\x91\xdd\xe1\xb0\x2b\x79\x62\xe6\x8d\x9c\xc0\xf3\xac\xce\xf4\xf9\x35\xca\x73\xb4\x82\xd7\x22\xb6\x4e\x4c\x98\x8c\x6f\xeb\x2d\xc3\x56\x97\xc3\x7a\xd3\xe2\x91\xa5\xca\x73\xee\xd4\xe3\x81\x75\x64\xa5\xd4\x18\x92\x5c\x41\x42\x58\x4e\xc7\x59\x0c\xd6\xba\x17\x57\xbe\xa7\xc9\xb4\x4d\xc0\x37\x6b\x98\x10\x5d\x43\xb9\x89\x56\x44\x51\x23\x45\x61\xbe\x9e\x8e\xf9\x15\xf2\x8c\x6c\x69\x3a\x15\x07\xd3\xbb\x91\x76\x7d\x74\x2a\xc1\x5c\x04\x5a\x04\x21\xdc\xaa\xe6\x22\x20\xe3\x00\xa1\x5d\x76\x94\x80\x72\xaf\xba\xc0\x92\x0c\x63\x4a\xa1\xa5\x9e\x6f\xa2\xb4\x0b\x36\xd0\x80\x0b\x39\x2c\xca\x4c\x77\x91\x9b\x8e\x99\x23\xa9\x56\x4a\x3b\x16\x84\xa0\x4e\x25\x05\xa6\x00\xeb\x42\x6c\x35\x8a\x29\xc5\xc5\x63\xa9\x1c\xca\xf0\x68\x5e\x4c\x08\x98\xe8\x26\x58\x75\xcd\x04\x95\xcc\x9c\xb8\xe9\x0a\x24\x94\xd9\x7a\x65\x9d\xdd\x6c\x25\x57\x0a\xae\xe8\xb3\x06\xe5\x19\x7b\x40\xbf\x7d\xf3\x2a\xd3\x5b\xb6\x80\xfe\xd3\x24\xb1\x59\xf9\xfa\xda\xfb\x4c\x3a\xa2\x03\x82\x19\x79\x33\x51\x1a\xb8\x3f\x95\xd9\x59\x23\x8b\xc9\x4d\x76\xbb\x54\x77\x8d\x45\xff\x36\x5f\x97\x12\x47\x3f\xac\xfb\x4a\xa3\x44\x56\x16\x9a\x5c\xca\x73\xeb\xc8\x7f\xbe\xbf\xf2\x5b\x66\x9b\xd9\xc8\xe1\x4a\x0b\x51\x2c\x48\x61\x75\xac\x6d\x40\x9d\x55\x67\x05\x8b\xa5\x8b\x99\x01\x16\x4a\x29\x8f\x63\x6d\x3a\x8c\xa9\x9e\x8c\x2c\x1d\x96\xf3\x58\xcf\xac\xd4\x24\x51\x11\x3a\x03\xc8\x93\x83\x03\x76\xd4\x4b\xb1\x9e\x1f\xfa\x5d\x9a\x70\x91\xc5\xd1\xd5\xdd\x5d\xb4\x66\x68\x5c\x17\x83\x19\x3e\x21\xb6\xba\xfe\x9d\x4a\x74\x62\x38\x94\x24\xa6\x92\x7a\x1b\xd1\x63\x11\x94\x7c\xbf\xae\x17\xb3\x03\xba\x70\x50\xb9\x3d\x3a\x51\x88\x62\x0e\xd9\x06\x0a\x3a\x5b\x57\xf7\x78\xa3\xa4\x3c\xb7\x74\x64\xf1\x4d\xb6\x84\x75\xd8\x7d\xee\xca\x17\xdd\x3e\x15\xf2\x6c\x16\x91\x5a\xa7\x18\x0d\xec\x10\xfb\x53\xe5\x41\xbd\x33\xfc\xa4\x40\xd6\x20\x69\x2e\x5f\x75\xd5\xe6\xd5\xca\x2f\x56\x59\x48\xdd\x55\x6e\xf3\x9a\xfb\x1d\x75\x63\x34\x22\x65\x74\xa5\xfd\x10\x09\xa9\xbc\x09\x76\x4b\x59\x5b\xc3\x60\x19\x13\xf7\xbe\xce\x0b\xf3\x76\x07\x70\xcc\x1c\x46\xee\x54\x6b\xc0\x74\xd3\x20\xf5\xce\xac\xdc\x52\x29\xb5\xd0\x14\x9c\x96\xe9\x80\x79\x34\x8b\xc9\xa7\x29\x35\x2a\x7d\x06\x60\xde\x82\xeb\x80\x16\x50\xc9\x8b\xb6\x14\x60\x5e\x47\xd5\x3f\x7d\x18\x4c\xce\x99\x20\x2b\x24\xcc\x35\xe9\x23\x09\xb5\x48\x24\x46\x01\xd8\x08\xe7\x8c\x7a\x44\x9d\x95\x9a\xa4\xc9\x4e\xb1\x17\x66\x95\x54\xd2\x46\x50\x93\x67\xed\xee\xe1\xba\xa4\xed\x26\xb2\x64\x64\x29\x59\xe9\x6a\x7a\xbc\x6e\xf4\x23\x18\x01\xa6\x2f\xbe\x47\xfe\x6b\x9d\xf2\xac\xab\x31\x9b\xe5\x04\xbd\xd7\xfd\xad\xfb\x01\xf5\x05\x61\xf7\x55\x75\xc4\xbc\x3a\x57\x49\xaf\xba\xe2\xaa\x55\x97\xe3\x60\x22\x6b\x84\x27\xeb\xad\x36\x65\x3b\xf4\xba\xf2\xe6\x76\x7d\xbd\xed\x87\x6e\x87\xc3\x4d\xca\x66\xc1\x6e\xe0\xea\x1c\xf7\xb3\xd7\x50\xc4\x59\xd4\xc7\x61\x9c\x3c\xc3\x58\x61\xa6\x99\xa1\xe9\x2b\x76\xaa\xbf\x69\xf1\x65\x34\x7c\x4f\x2d\x1e\x6a\xb7\xa0\x43\xd6\xa1\xd6\xe8\x63\x9c\x34\x23\xbc\x68\x70\x75\x8f\xe5\x84\x6b\xcb\x06\x2c\xa8\xe0\x82\x91\x48\xba\x0b\xf7\xfe\xe6\xe6\xc7\xc7\x96\xca\xde\xdb\x4b\x12\x2c\xa8\x4f\xe4\x7e\xe5\x2a\x76\xf5\xcd\xbf\xd9\x7b\xe1\x5e\xe5\x3d\x6d\x01\xd4\x49\x4c\xaf\xbd\x4c\x92\xa4\xf9\x15\x4d\x5f\x7d\x06\x60\xb2\xc3\xac\x37\x5d\xb3\xcc\x60\x08\xba\x55\x98\xd4\x68\x06\x93\x1a\xca\x50\x74\x61\xed\x25\x07\xc6\x75\x95\x4c\x8c\xd8\xad\x66\xa9\xa3\x4b\x4b\xa4\x10\x61\x55\x49\x0a\x12\xba\xb3\xf3\xd1\x4e\x80\xe8\xa6\xda\x27\x97\xc9\xfd\x08\x92\x72\x48\x05\x88\x02\xac\x02\xf4\x84\xf2\xe6\xcb\xaf\xbd\x32\x85\x46\xfd\x1a\x8d\xc4\x31\xea\xa8\xd1\x77\x8e\xf1\xe8\x3b\x11\x8d\x59\x8b\xad\x9b\x5a\x69\x3a\x09\xa3\xf0\x1c\x45\xb3\x4b\xad\x3a\x3b\x81\x4e\x09\x5a\xb5\x82\x4c\xa5\x13\xcc\xa3\xe5\x2a\x4c\x35\x44\x7a\x02\x2d\x2f\x32\x32\x19\xa6\x25\x1a\x4c\xae\xda\x4e\x53\xe3\x16\x6b\xc0\x92\x26\x80\x65\xd7\xc0\x12\x69\x70\xa0\x05\xe7\x41\xc6\xde\x3d\xb5\x2b\x13\x46\x5a\x8f\xe2\x34\x20\xd2\x2c\xce\xf2\x69\x60\x1c\x46\x4b\x52\xd5\xaf\xf9\x31\x38\xed\xcc\xdd\xcc\x17\x98\x2f\x32\x5b\xb5\xfe\x6c\xae\xc8\xcb\x32\xf2\xe7\x32\x44\x7e\x84\x82\xab\x8a\xd8\x21\xb5\x3a\xc9\xa3\x18\x03\xc6\xa8\x1d\x3b\x24\x0e\x58\xad\x3a\x67\x34\xde\xd0\xbb\x70\xf5\x8d\x3b\xee\xbc\xe7\x01\xf4\x0d\x98\x1c\x03\xa6\xba\x58\x72\x5a\xcf\x39\x97\x6c\x79\xf8\x8b\x54\x08\x2f\x6b\x16\x1d\x2f\xba\xa7\x75\xf5\xce\x9d\xbf\x7a\x2d\x5e\xf3\x39\x71\xc0\x68\x62\x5c\x43\x57\xdc\xb9\x6b\xf7\x03\xd4\xcd\xe9\x9c\xc8\x13\x4e\xbd\x5b\x70\xb9\x85\x2c\xba\x86\x3d\x21\x36\xef\x46\x17\x9c\xcb\x4a\x50\x28\xb1\x79\x18\x8e\xf0\x1f\x2b\x02\xeb\x41\x19\xc4\xd5\xd4\xae\x34\xc1\xfd\x7c\x57\x3e\xc4\x7a\x42\x24\x0c\x4a\x39\x9c\xc9\xf7\x73\xf9\x64\x1e\x97\xca\xf3\x69\x2e\xd5\x95\xc2\x11\x0f\x57\xa6\xf4\x29\x2b\x0c\x52\x2c\x0f\x2b\xc0\x73\xac\x38\xf8\xf3\xee\x2c\x6c\x5c\x6e\x29\xcd\xe5\x73\x94\xa4\x37\x51\xe2\xa9\x24\xfd\x9b\x21\xa0\x8f\x11\x8b\xdb\x6b\xf0\xae\x72\xf7\x77\x07\x0d\x69\xae\xb9\x4d\x4f\x74\x97\x7e\x2a\x14\x8b\x73\xd6\x74\x9d\x75\xae\x68\xec\x8b\xa4\xed\x59\x3b\x4f\xf4\x4d\x3c\x6b\xf0\xf9\x3d\x4e\xa7\x59\x6f\xd7\x37\x06\xf4\x96\x46\xab\xd5\xc9\xf3\x09\x5e\x67\x12\xbc\x6e\xbd\xdd\x10\x76\x78\x8c\xa6\xa6\xf8\x4c\x8b\xd9\x18\xee\xb2\x98\x85\xcc\x0a\x9b\xd3\x61\x6b\xf1\xf7\x1b\x6c\x7d\x36\xa9\x9f\xe3\x9c\x84\x6b\x27\x1c\xe7\xe7\x4c\xa2\xd9\x21\xc4\x8c\xad\xf5\x0d\x8f\x93\x29\xe3\x80\xac\x8b\xde\x50\x6f\x9c\xeb\x33\x3b\x79\x4b\xc8\x90\x09\xf1\x8e\x85\xae\x79\x46\xbd\xd3\x64\xe1\xae\x0b\x36\xf4\x87\x8d\x44\x10\xec\x66\xc2\x9a\xcd\x71\x0f\x9b\x61\xeb\x0c\x9c\x3b\xe9\x08\xfa\x82\xf5\x21\xbb\x9e\x10\xc1\xe4\x4c\x18\x0d\xdc\x02\xc9\xd3\x62\xb2\x36\xbb\x7c\x46\x87\x93\x33\x9a\x3d\x29\x29\x22\xa4\x74\x75\x9c\x8e\x6f\x88\xbb\x2d\x1c\x67\x71\xe8\x4d\x04\xa8\x25\xa4\x6c\x66\x8f\x10\xbb\xe6\x1a\x4b\x83\x60\xb2\x88\xbc\x77\x35\x61\xf5\xbc\xe5\xc2\xea\x3a\x19\xcb\xbf\xc0\xdf\x89\x55\xe2\x7b\x49\x9e\x00\xe9\xbb\x3c\x3a\x4f\x1e\x94\xf4\x14\xd1\xc7\x32\xc4\xc6\x0e\x45\x97\xae\xff\xda\x6e\x65\xf4\xbe\x13\x75\x5f\xbb\x65\xfb\xe8\xb3\xb6\x16\xdb\xd5\xf7\xb6\xd8\xd9\xb5\x9b\x5e\xeb\x3a\x6f\xd3\xce\x77\xb6\xbd\x70\xde\xdc\xcc\xe8\xb3\x76\xfb\x55\x6a\xf1\xf9\xf5\xc0\x9b\xcf\x6a\x71\xe1\xaa\x6f\x6e\x39\x83\xf5\x06\x3a\x2a\x72\x9e\x5a\xc7\xf5\x19\xac\x2b\x05\x86\x3e\x0c\x27\xd0\x2f\xa7\x57\x70\x2a\x4c\x54\xe8\xfa\x4f\xe7\xe1\x62\x7b\xf7\x78\x4d\xcb\x52\x27\xb5\xde\x3a\xd1\x7a\xc3\xca\x88\xb8\x26\xf4\x3f\xc8\xd6\x20\x58\x6c\x8a\x16\x9c\x9a\x68\xd4\x9d\x69\x1f\xac\xd0\x63\x8a\x45\xcd\x9d\x2e\x97\x7f\x30\x6e\xe8\x7d\xfb\x74\xbb\xca\xc3\xe8\x08\x64\x0f\x16\xc6\xeb\x3b\xa0\x0d\x80\x19\x5b\x6a\xbe\x96\xb6\xa4\xaa\x56\x4c\x56\xed\x6a\xa6\xc8\x18\x34\xc3\x1d\x27\x27\x1d\xe8\x27\x82\x58\xe0\xde\x39\xb9\x90\xdb\xa1\x3c\x5e\xe6\x17\x17\x30\xc1\x5b\x39\x84\x05\x60\x98\x5a\xdb\x02\xed\xf4\x04\xb3\x9e\x7a\x70\x08\xcd\x6a\x0d\xe6\x50\x53\xf0\xc6\x30\xbb\x5d\xcd\x00\x4d\x66\x64\xdb\x61\x39\x46\xab\x0e\xda\x62\x48\x40\x50\x4d\x00\x0c\x5a\xc8\x3b\xae\xd6\x24\xc4\xc4\xb0\x38\x4d\x0c\xc3\x2a\x84\x6c\x16\xe7\x5d\xa6\x68\x85\x19\x57\x0e\xab\xee\x41\xa9\xb6\x62\xea\x58\x8a\x07\xf5\xda\x51\xb7\x34\xad\x0c\x5b\xa5\x1d\x69\xed\x69\x2a\x37\xf5\xa0\x9f\x01\x08\x47\xff\xa8\x61\x4c\x46\x9a\x7a\x54\x42\x61\x4a\x27\xcd\x43\x67\x26\xd8\xf5\xb8\x2e\xea\x02\xed\xa8\x1a\x99\xe7\xc8\xe1\x2a\x3b\xae\xaa\xab\xcb\xad\x18\x99\x40\x68\x2c\x12\x7a\x28\xb1\x3e\x0a\x97\xc7\x45\x54\xe1\x8e\xf2\xee\x32\xae\xba\xaa\x5f\xec\x1b\x5a\xab\x8c\x4b\xaa\x65\xfc\xc0\x01\x2e\x42\xbf\x4e\x3e\xac\x9e\x64\xdf\x56\xaf\xd1\x5e\x92\xc0\xef\xe3\xf7\xd1\x78\x97\x30\xd8\xe8\x83\xcc\x62\xe6\x17\x5a\xc5\x76\x5b\x05\x3d\xe5\x0b\x73\xb2\xaf\x22\xcf\xc9\x62\x5a\x70\x37\xad\x4b\xd0\x91\x2d\x35\x52\x9a\x35\x9e\x65\x6c\xa9\x96\xdf\x59\x52\x13\x12\x00\x53\x82\x96\xb8\x1e\x35\xb7\x60\xa5\x8d\xa4\x6a\xea\xf7\x57\xe4\x7e\x3b\x5d\x37\x99\x5f\xd9\x9f\x9f\x3f\xcb\xd0\x22\xb7\x53\x6b\x23\x4f\xeb\xe0\x69\xd1\x0f\x4b\x51\x09\xc6\xba\x02\x26\x2b\x2d\xab\x51\xec\x07\xe9\x5b\x6c\xeb\x05\xfd\x27\x0f\xa6\xc3\x37\x8c\x36\x27\x9f\x51\xa3\x8e\x42\x6a\x4d\x2e\x8b\xa8\xd6\xc6\xd9\xdf\xdc\xd6\xdb\x8f\xbb\x8d\x6a\x10\x8e\x1c\x17\x8b\x99\x1e\x9c\x78\xbc\xe4\x74\x55\x7e\xdc\x5a\xc5\xbb\x78\xac\x8b\xfa\x13\x70\xcf\x03\xb6\x08\x4b\xbd\x66\x6a\x3b\x25\xa8\xcb\x54\x09\x35\x21\x00\x6c\xf4\x33\xd5\x05\xba\x32\x9c\x8e\x44\x3c\xee\x25\xf0\x89\x44\xdc\x9e\x15\x4d\xe1\x9b\x89\x51\x6d\x58\x6d\x60\xe7\xcc\xcf\x91\x50\x24\x1d\x86\x53\x11\x52\x3a\x43\xf9\xa0\xbb\xd4\xf3\x7f\x68\x8d\x46\xd2\x91\xef\x44\xda\x75\xdb\x88\xd5\xea\xc6\x86\xe9\x3e\x77\xb0\x21\x97\x5b\xe1\x8e\xe0\x63\xa8\x7f\xf4\xd7\x4c\x0f\xff\x1d\xe0\x9d\x65\xa0\x5d\x61\xbc\x43\xaa\x82\x56\x1c\x48\x93\x2e\xe8\xb5\x0a\xd6\x8a\xc0\xfa\x0d\x4c\x31\x85\x31\x07\x33\xbb\xe5\x88\x78\xc0\x6c\xf3\x07\xda\x91\x42\x92\xa3\x98\xcd\x51\x23\x42\x0f\xd3\x4d\x2e\x8b\xb3\x52\x57\x9e\xe0\x7a\x6b\x0a\x17\x90\x05\x02\xfc\xa6\xd5\xaf\x17\xb0\xb0\x24\x1c\xd6\x2e\xc1\x02\x3d\x21\x98\x78\x40\xcd\x0c\x13\xfc\x05\x2a\x97\xf1\x18\x48\x58\x12\xf0\x4f\x8b\x6f\x99\x3b\x73\x7a\x74\xa0\x29\xd5\x28\x92\x9d\x71\xaf\x2d\x70\x8e\xcb\x98\x3e\x2b\xae\xdc\x22\xcc\x21\x37\xb9\x9c\x9e\x40\xd2\x66\x6f\x18\xfd\x4d\xc7\x82\xfc\x39\x46\x9d\x6d\x5a\x43\xd2\xeb\x22\xe7\x75\xf4\x6d\xee\xf2\x79\x2e\xdc\x62\x10\xce\x3d\x39\x2a\xcc\x61\x75\xb3\xa6\x8b\xf6\x8b\x97\xcd\x59\xb9\xf9\x9c\xc6\x79\x0a\x43\x0e\xff\xdf\xa5\xdd\x03\xf5\xf6\xf6\xe6\x96\x56\xbc\xeb\x45\x99\xb5\x22\x1b\x8d\x2b\xd7\x0b\xb3\xc8\xa7\xdc\x76\x4f\x43\x0a\xef\x38\x38\x33\xde\x3f\xd0\xd0\x20\xe1\xfd\xf2\x9d\xbc\xf8\xc8\x45\x9b\xce\xfd\xdb\x29\x46\xe8\x25\xa7\x66\x1d\x38\x7f\xed\x67\x1a\xa2\x79\x2f\xdc\x4c\xf5\x2d\x2e\x67\xba\xf8\xef\xf3\x43\x30\xe2\x3a\x99\x3e\x06\xa5\x70\x1b\xf5\xe3\x08\x59\x82\xe4\x03\xad\x41\xad\x26\xd6\xac\x6a\x0d\x58\x2c\xa3\xb9\x1e\x4b\x9f\x0b\x36\x35\x1e\x87\xcb\x01\x51\x75\xaa\x5f\x07\x08\x42\xdd\x51\x98\xa7\x80\x15\x15\xd3\x6c\x0a\x66\x61\x17\x4e\xe3\x6e\x0f\x98\xb6\xfd\x2c\x5a\xae\x31\x1b\xa5\x93\x7e\xf9\x2b\x3b\xee\xbd\xe8\x92\x7b\xef\x78\x39\xbe\x76\xd6\xbc\x57\xd6\x8b\xf6\x96\x6b\xe7\x0e\xce\x9b\xb5\x36\xfe\x74\x5f\xff\x80\xfb\xfc\x0d\x2b\xae\xb1\x0c\xcc\xea\x5f\xdf\xbd\x70\xc6\x96\x6b\x73\xf3\x7b\x37\x72\xf6\x4f\xbf\x72\xc7\x1d\xaf\x7c\x3a\x7d\xce\x15\xf3\xe6\xfe\xd3\xa7\x3d\x9e\x19\x77\xcc\x3d\x6b\xee\xbc\x2b\xce\x49\x07\xd6\x9c\xd5\xef\x3e\xe7\xea\xf3\xae\xb6\xf4\xcf\x1d\xaa\x9f\xb7\x61\xe5\x33\xcf\x2f\xdf\xa8\xe2\xd7\x7d\xea\x43\xfe\x06\xfe\xff\x32\x5e\x98\x7b\x18\xa7\x0b\x00\x81\x3e\x26\xb4\xe8\x7d\x4a\xc0\x0a\xf8\xd0\xcf\x82\x9e\x9e\x00\xa1\x42\x40\xba\xc0\x37\x98\x10\x1d\x34\x7e\x00\x7a\xbc\x7b\x70\xd7\xec\x73\xcf\x1f\x24\x81\xc1\xc1\x5d\x06\xf3\x65\x87\x94\x5b\xfe\xeb\x42\x47\x3a\x98\x1f\x3c\x34\xb8\x4b\xb0\x5c\x76\x88\xdc\x09\xed\x4c\x28\x18\xcf\x0f\xee\x1a\x3c\xff\xc2\x01\xe5\x8f\x83\x64\xc3\x85\x03\xbb\x07\xf1\x27\xdf\x19\xdc\x65\x34\xe0\x6f\xfe\xfb\x42\x47\xdb\xf4\xfc\x20\xe1\xcf\x87\x5f\x99\xe8\xaf\xd6\x8b\xed\xb9\x60\xfc\xf2\x16\x38\x32\x38\xa8\xfc\x71\x40\x95\xeb\x65\xad\x76\x20\x56\x50\x09\x62\x1c\x3c\x5d\x69\xf5\x51\xab\xda\x41\x3d\x32\x7a\xb5\xea\x0b\xf4\x0c\xb4\x1d\x6a\x16\x06\xad\xa0\x41\x45\x4d\x86\x96\x7f\x09\x38\x40\xd9\xd4\xeb\xdc\xea\x6b\x18\xf2\xa2\x1a\xd2\x51\xb5\x8a\xf3\x51\x31\xea\xd0\x32\xf3\xcb\xbd\x17\x3f\xfa\xf4\x17\x0b\x33\xd4\xa5\x95\x02\x1a\xaa\x3f\xe8\x5b\xd3\xd7\xb7\xa6\xc0\x7d\x5b\xca\xa6\x43\xa1\x74\x56\x3a\x39\x0f\x24\xf6\x5f\xd9\x83\x27\xdf\xc0\x13\x7d\x4c\x6d\x2d\x75\xef\x78\x54\x8c\x2f\x83\x85\xc6\x50\x4c\x13\x5c\x3f\x4a\x25\x3b\xf2\x5d\x59\x0f\x71\xbb\x04\x54\x1c\x08\xc8\x68\x92\xf9\xe9\x2f\x40\xa5\x35\xc7\x6d\x36\x6b\xb3\x95\x04\xe8\x57\x83\xf2\xa7\x43\x3f\x23\x5b\x7f\x76\x88\x78\x1a\xa0\x69\xb3\x29\x6f\xdb\xf0\x2b\xae\xfc\x87\x72\xe8\x17\x3f\x65\x38\x92\x62\x1c\x60\x57\x1e\x65\xda\x81\x43\x67\x31\x0f\x31\x98\xc7\xd8\x4c\xf3\x1b\xfb\xb3\xa5\x36\x9e\x7a\x5c\xd0\x93\xd0\x43\x9d\x90\x8e\x4a\xc9\xd1\x83\xc7\x1c\x4e\x74\x39\xcc\xa6\x05\x72\x60\xae\xcb\x56\x70\x82\xcc\xda\x8b\xad\xa4\xa5\xc4\x3b\x66\x60\x28\x20\x18\x9c\xae\x70\x3f\xdd\xb3\x17\x07\x80\x90\x20\x3a\xea\x31\xe7\x3e\x50\x29\xce\xc1\x22\x47\x18\x5d\xc4\x76\xcb\xad\xa2\x6c\xc4\x85\x90\x36\x68\x36\x75\xcb\x3d\xe2\x37\x19\x6b\x20\x35\x83\xae\xf5\xcb\x0e\x8c\x18\x44\x6f\x38\xe8\xb8\x62\x9a\xc4\xd3\x7c\x67\x87\x16\x29\xc8\x7b\xe2\x20\x14\x44\x0f\x66\xe2\xeb\x31\x5e\x10\x93\xde\x9d\xae\x10\x07\x5c\x26\x5a\x89\x93\x16\x7d\x25\xa9\xcf\xea\xd6\x2e\xd4\x3b\xd9\xf4\xe0\xd2\x4c\x74\x68\xfb\xb2\x42\x72\xce\x8a\xde\x16\xee\x31\x43\xd7\xc2\x81\x58\xef\xf2\x7c\x63\xe9\x91\xc2\x17\x56\x37\xfa\xf6\xd9\xc5\x66\x57\xbd\xc0\xf7\x2d\xf8\xf3\xd3\x43\x2b\x48\x71\xc9\x46\x1b\x59\x46\xf4\x56\x5f\xa6\x7b\x28\x7f\xde\x5d\xb3\x84\xa5\xcb\x78\x67\xeb\xcc\xcb\x06\xe7\x2f\xaa\x53\x2a\x56\xc1\xd9\xda\xbb\xa9\xff\xb3\x4f\x9b\x97\x2c\x15\xd7\x36\x6e\x66\x43\xc1\x56\xaf\xa4\x17\xc0\xac\x77\x18\x7a\x46\x5b\x1c\x77\x0e\xcc\xf3\x69\x6b\xc2\x17\x73\x0f\xf0\xcf\x01\x6d\x77\x31\x38\x0b\x81\xdd\x00\x2a\x4a\x88\xae\x26\xd6\xd3\x42\x76\xe6\x4a\xc9\x49\x5f\x08\xe2\xb4\x6a\x34\x15\x0e\xcb\xdd\xb4\x06\x7d\x43\xb6\xe4\xa5\xd5\x0f\xbd\x21\x63\x4b\x49\xa0\xfe\x2f\x81\x51\x33\xca\x6d\xaa\xd7\x02\x29\xe9\xc5\xc2\xb7\xec\xf4\x41\x4a\x31\x9b\xf8\x0d\x73\x38\xd2\xdc\x9e\xc3\x86\xd5\x21\xb7\x02\x6d\x9b\xdb\x71\x72\x43\xe3\x92\x11\x8b\xad\xbd\xea\xc2\x72\x0e\xe9\x05\xb4\xa4\x52\x25\xde\x41\x5f\xa1\x21\x80\xa5\x0f\x94\xce\x49\x71\x37\xec\x0b\xfd\x24\xd7\x85\x63\xda\x83\x75\xd1\x92\x34\x42\x26\xd5\xaf\xc3\x18\x94\xc2\x93\x5e\x97\xc9\xc8\x65\xda\x36\x3c\x79\xc7\x0f\x1f\x9e\xbd\xbc\x21\xb1\xca\xd5\x14\xf5\x84\xfe\xfa\x8a\x41\x92\x9a\x66\xc4\x2f\x92\xa2\x9f\x8b\x2e\xee\xcd\x36\x2d\x4b\x35\x7b\x7e\x91\x4d\xad\xf1\x78\xf3\x7a\xc9\x24\x5a\x44\xe3\x34\x4b\x03\x3b\x54\x68\xcf\xfb\x7b\xd6\x5c\xd0\x38\x54\xba\xa1\x63\x51\x7d\x50\x6a\xed\xae\x5f\xd9\x9c\x2b\x64\xb7\x07\x7b\xba\xcc\x56\x12\x0b\x7d\xde\xe7\xe1\x06\x79\xde\x6f\x31\xdf\xc7\x5b\xf5\x75\x66\xd1\x94\xbf\x77\x1e\xc8\x1c\xb0\xae\xf9\xe7\x35\x5d\x26\x5c\xad\xff\x69\xcd\xc8\x16\x2c\x26\x82\x44\x29\x9a\xc1\x18\x94\x0d\x63\x45\x45\xe3\xa2\x91\xc5\x2d\x4b\xd7\x50\xc0\x5e\xd6\xbe\xe9\x2a\x20\x4d\xa9\xa0\xcb\x21\x27\xb7\x72\x3b\x70\x75\x8f\xd5\x64\x84\x9e\xbe\x43\x01\xab\x5f\x3c\xa9\xd5\x84\xd1\xe7\x40\x48\xab\xbb\x06\x1a\x58\xe9\xaa\x14\x19\x1e\xd8\xbb\x8e\xc6\xc9\x53\xcf\x5c\x29\x48\x57\x47\x83\x1e\x2c\x81\x86\x75\x96\xb0\x17\x59\x5a\x2c\x43\x8d\xab\xc3\x17\x0d\x60\x68\x5d\x9d\x07\x7e\x68\xd2\x5e\xf9\x62\xa2\x19\x85\xc5\x00\x96\x23\xb7\x83\xca\xea\xcb\x66\xf7\x3b\xec\x92\x81\x66\xca\x39\x51\x36\x61\xa5\x8d\x6a\x38\x9e\x6c\x10\x61\x4e\x00\xa3\xd7\x40\x73\x21\xe5\x3a\x51\x16\xb1\x43\x55\x5b\x3c\x4a\x6b\x4e\xe3\x42\x8f\x5a\x08\x89\x13\xd5\xa2\x48\x79\x50\x21\xd9\x57\xcb\xb8\x86\x34\x52\xa0\xd9\x37\x1b\x0b\x1b\xd1\xd9\x5d\x20\x58\xb2\x07\x09\x41\x8b\xbe\xe2\x59\xb5\xc4\xd1\x31\x2c\x50\x54\x2e\x4f\xa0\x89\x95\xe6\x19\xc6\x98\xbd\x6a\xbc\x60\x51\x30\x61\xe5\x21\xea\x93\x04\x5c\x0d\xd4\xef\x02\x92\xd3\x4e\x9d\xbc\xf5\x54\xa4\xba\xa7\x12\x40\x00\x64\x6c\x12\x20\x0b\xfc\x2b\x22\x01\xac\x76\xba\xfe\x15\x8c\xa8\x44\x71\x02\x71\xf6\xfb\x4d\x66\x83\xaa\xe1\x65\xb0\xf0\x56\x2d\x01\x04\x95\x00\xb1\x30\x66\x1b\xf0\x3a\xcc\x36\x28\xd6\xdb\xe1\x9c\x17\xf3\x30\x65\x5f\x0d\x35\x34\xec\xb9\xc9\x54\xa9\xa1\x06\xd2\xa0\x30\x46\x92\x8d\xe3\xd4\x50\x29\xc0\x1e\x1c\xa7\xca\xc9\xad\x98\x92\x43\x79\x70\xb1\xc6\x23\x0e\xe0\x92\xcd\xd5\xfa\xa5\x68\x12\xa0\xfb\x02\x08\x41\x99\xa2\x54\x67\xa5\x65\x0c\x45\x1c\xd8\x9e\x8c\x2c\xa2\x2f\x6a\xbf\xd3\x2e\x1a\xe8\xab\x5d\x04\xfa\xaa\x24\x27\x8d\x23\xc4\x8a\x4c\x66\x8a\x3d\xbe\xa4\x83\x56\xc0\x39\xc0\xb0\x9c\x9e\x56\x89\xb0\x62\xb6\xab\x8e\xa7\xe3\x56\xf3\x67\x50\xc4\x38\x5c\xdc\x10\xd1\xd2\xd2\xb8\x1b\x79\x19\xfa\x4c\xed\xd3\x2a\x83\x83\x86\x0e\x88\x70\xef\x80\x91\x83\x2f\x8a\x28\x33\x1f\x87\x83\x40\xa1\x77\x20\x26\x25\x07\xad\xaf\xed\xc0\xf2\x1e\x98\x2c\x56\xa1\x38\x98\xd1\x77\xb5\xdf\x49\x7b\xa7\x8e\xe2\x29\x50\x1c\x4c\x2a\x0e\x22\x65\x61\x8a\x83\x73\x22\x0e\xee\xc9\x38\x24\x28\xf4\x2a\x83\xa6\x6a\x71\xa0\x25\x88\x0b\x1b\x6b\x71\x28\x50\xe0\xf1\x1f\xe5\x4a\x9c\x22\x29\x5f\x6a\x76\x8d\x09\x38\x13\xb1\x58\xc1\x68\x08\x98\xab\x39\x22\x76\x6d\xa8\x52\xd8\x6d\x87\x4b\x82\xd9\x89\x53\x12\x30\x29\x96\x9d\xa4\x55\x6d\xdd\x26\x23\x6e\x41\xfa\xaa\x70\x9b\x0d\x28\x4e\x39\xbd\x9a\xc5\x52\x25\x38\xad\x0b\x56\xfd\xe4\xa4\xaa\x38\xa1\xf9\x60\xb4\xb4\x2d\x86\x2e\xd6\x10\x9d\x96\xed\x1e\xfb\xfc\xcf\xe0\x35\x03\xbc\x36\x0a\x2f\x08\x18\x10\x3e\x26\x3a\x4f\x98\x1c\x08\xaf\xc9\xfd\x09\xf0\xe6\x24\xae\x06\xe6\x31\x78\xcb\x2a\x90\x5a\x31\xde\x33\x83\x3b\x56\xf3\x51\xcd\x3b\x6f\x1e\xcf\xdd\xad\x9f\x9a\x1a\xed\x19\x4b\x88\x9e\x12\x71\x12\x4b\x4e\xce\x1f\xc3\x84\xc6\xc7\x3f\x78\xff\xab\x98\xc4\x58\x56\x53\x1a\xd5\xcc\x45\x35\x8f\x51\x3d\xf1\xee\x59\xd5\x74\xc7\x9e\xa6\xea\x3a\x5a\x15\x96\x18\x7a\x31\x27\x41\x13\x9f\x0a\x0d\x8a\x0c\x0f\x88\x05\x9a\x6a\xc9\x14\xeb\x9d\xb8\x1b\x3b\x5d\xca\xf8\x64\x08\x9d\x6d\xe4\x83\xc7\x11\x16\xcc\xb4\xfc\xea\xfb\x13\x80\x2c\x93\x25\xca\x7e\x84\xf4\xab\xef\xab\x79\x98\xb5\x90\x2a\x96\xe3\xc7\xc7\xd7\xfd\xfe\xc7\xf0\xc6\xc6\xe1\x8d\xfe\x3d\xf0\x7a\x02\x98\xce\x3b\x06\xd1\x04\x78\x0b\xc7\x8f\xab\xd0\x7e\xf0\xf8\x64\x68\x0b\x80\xc8\x92\xff\xbf\xd3\x36\xca\x21\xac\xd5\x7e\x9e\x08\x2b\x39\x76\x5c\x65\x02\x44\x04\x78\x64\x66\x0d\x69\x87\x01\x56\xca\x93\x3a\x17\xcd\x2f\xf4\x33\xbd\xcc\xd8\x74\x4c\xdd\x3e\x98\x39\xe0\x50\x2b\x1d\x83\x3a\xe0\xa1\x55\x8d\x41\x94\x0a\xd4\x88\xaa\x46\x6f\xc8\xa2\x28\x73\x6a\x8c\x3d\x06\x44\x38\x3b\xc7\x80\xeb\xac\x42\xad\xbe\xea\xad\x5c\x85\x8b\x8c\x20\x3c\x08\x57\x59\x79\x5c\x79\x1c\x5f\x03\x36\x21\x11\x97\xea\x79\x6f\x80\xa0\x3b\xcc\x7f\x99\x89\x62\xc4\x8f\x55\xf5\x0d\xc1\x94\x58\x4f\x57\xa4\x31\x18\xc2\x5d\xaf\x06\x43\x14\x9d\xe8\xf1\xb7\xe1\x48\x05\xc2\x80\x2d\x17\x46\xcb\xb8\x8b\xc9\x75\x81\xe1\xa6\xeb\x72\xe4\xbb\x32\xa0\x89\x81\xae\xc5\x08\xfa\x37\x0c\x1e\x92\x7e\x44\xa7\x33\x1a\x8d\x56\x8b\x99\xb5\x11\xab\xd1\xe0\x51\x7e\x49\xbe\xc8\xb2\x82\xd1\x68\x33\xf1\x07\x95\x8f\x16\xd9\x59\xc1\xa9\x2c\x74\x49\x66\x83\xad\x8e\xbd\xcc\x29\x8a\x84\x27\x2f\x58\x6c\x16\xa3\x5d\xff\x4b\xe5\xe7\x6b\x9c\x63\x63\x99\xd2\xcd\x0b\x7d\x3c\x93\x29\x71\x1a\xdd\x0c\x98\x93\x8d\xa9\x46\x7e\x1a\xd7\x01\x62\xd1\x35\x36\xb4\xcd\xea\x80\x2e\xfa\x39\x2d\x32\x51\xb6\x8b\x72\xbd\x5a\x79\x14\xba\x34\xdf\x19\xc5\x44\x48\xea\xb1\xc2\xa8\x4f\x5a\x3c\x82\xd2\x14\xfb\x37\xd3\xa9\xe6\x22\x93\x63\xd6\xf2\xf9\xe7\x3f\xf1\x2e\xce\x4c\x54\xe8\x00\x31\x6d\xdf\x56\xe9\xf7\x6d\x5e\x60\xd9\x77\xe9\xa2\x80\x4a\xd9\x9a\x9c\x80\x20\xd3\xc0\xac\xd2\xe0\xb4\xd1\x49\xd5\x0f\x80\x25\x6a\x6c\x33\xb3\xea\xc9\x49\xa2\xca\x07\x26\xd9\x37\xbc\xbe\x50\x38\xd2\x80\x5a\x2f\xe8\x07\x71\xcc\x5a\xc6\x6c\x16\x83\x31\x14\x8b\xd3\xa3\x7e\x91\x7a\xdb\xc6\x92\xac\x53\x82\xe6\x75\x53\x13\x7e\xf3\x29\x8c\x57\x4c\xd0\xac\x01\x6d\x34\x2d\xbd\xb9\x9a\x51\xfd\xe8\x96\x85\x85\x27\xde\x25\x7f\x21\x1b\x1e\x24\xc7\x1e\x54\x9e\x56\x59\xe2\xa2\x05\xb7\x3c\x50\x65\xd0\x9b\x97\xbe\xfb\x84\x91\xac\x79\x50\xb1\x3c\xa8\x3c\x36\x25\xb7\xe5\x9c\x6a\x3e\x4e\x80\xbe\xa4\xc3\x59\x9b\xe1\xa2\x66\xe5\x60\x49\x09\xb0\x44\x7d\x63\x1e\xaa\xea\x8b\xd0\x5e\xe4\x8d\x26\xab\xcd\xe1\x54\x33\x19\x3d\x01\x38\x42\xf4\x82\xa5\xce\x2e\x4e\xcd\xb2\xac\xe6\xe8\xb0\x5a\x61\x89\x33\x65\xe9\x78\xae\xdd\x7b\xed\xb5\x7b\xcf\x9c\xa4\xe3\xc0\xd3\xd7\xd6\xc8\x31\xf4\x85\xda\x41\xf7\x4b\x6b\x55\xb8\x45\xad\x82\x03\x7d\xc9\xa3\x44\x93\xf8\x0c\xa0\x2f\xd0\xb7\xd3\x39\xd0\x81\xec\xd6\x7c\x8a\x55\x59\x60\x64\x69\x69\x7f\x98\xe5\xad\x66\xde\x6b\xb6\x9f\xf4\x92\x97\xc8\xcb\x18\xc9\x88\xd5\x32\xb1\xb8\xac\xcd\xa4\xbc\xcf\x45\xb0\x1a\x31\xb2\xc9\xe8\x96\x2c\x73\x9a\xe7\xb7\x4c\x7a\xfe\xdf\xf7\x70\x35\x84\xd0\x38\xe1\xe9\xad\x98\xa4\xae\xcc\x22\x17\x8c\x3f\x9d\x3d\x48\x97\xa7\x8e\x9d\x78\x7b\xc2\xb3\x6f\x83\x67\x63\xdd\xcd\x2a\xee\xea\x0c\xad\x53\x0b\x53\x82\x46\x67\xc9\xe2\xe3\x45\xfa\x78\x11\x1f\x2f\x4d\xc1\x1d\xcc\xd0\x09\x0f\x6f\x67\x57\x7d\x51\x99\xbb\x87\xbd\xb3\xe6\xe1\xdf\x53\x7e\xca\xae\x7a\x44\x99\xfb\xd0\xe8\x8c\xec\xd8\xfb\xbb\x10\x6f\xf4\xd9\x7a\xc7\x30\x97\x2a\xb8\x80\xa8\x53\x6b\x91\xbb\x29\xe6\x6e\xfa\x68\x37\x3e\xda\x3f\x19\x73\x4f\x3e\xc5\x25\x9c\x98\x59\x5a\x0b\xc0\x86\x43\x1b\x86\xd9\x6f\x73\xc7\x1f\x3c\xf4\x20\xf9\x49\x0d\xf9\xff\xf5\xa2\xd7\x37\x9c\x3c\x42\xd8\xff\xf3\xef\x70\x46\xa9\x3b\x1d\x1c\xe9\x33\xc0\xe1\xcc\xfe\x1d\xa0\x38\x3d\x82\x27\xef\x31\xd7\x80\xb2\xf5\xd0\x45\xaf\x73\xf8\xb4\xbf\x91\x8d\x35\xc4\x28\x1c\xda\x70\x88\xbc\x0b\xf0\x3d\xf0\x3e\xfb\xed\x13\x7f\xca\xaa\x32\xcc\x83\xef\xe4\xe0\x5f\x00\x4d\xca\x80\x79\x1e\x3c\xb5\xfd\x8c\x34\xf3\x49\x5f\xc1\x8a\x73\x6a\x52\x3d\xe6\xfc\x18\x89\x87\x7f\x58\x49\x28\x3f\x5c\xc6\xee\x1d\x5d\x4f\x1e\xe3\xec\x27\x5e\x23\x76\xe5\x06\xb2\xb7\xc2\x3d\x3d\x3a\xbd\x2a\x13\x0b\x14\x37\xcc\xc2\x5c\xc2\xe0\xec\xa1\x87\x8e\xd4\xd3\x8e\xc4\x77\x6e\x58\xb3\x25\xbd\x48\x5f\x28\xc1\x43\xcb\x90\xad\xbe\xff\x0f\xe4\x8f\x9e\x8a\x20\x1b\x75\x0f\xd1\x54\x3a\x9b\x5e\x74\x94\x8c\x6e\x8f\xea\x15\x52\x45\x0a\xbe\x87\xc0\x43\x33\xc6\x51\xc7\x8d\x25\x11\xef\xa0\x74\x1c\x38\xbe\x1c\x72\xed\x19\x9d\xbd\x07\x23\xc5\x0a\x85\x3d\xdc\x3b\xae\x10\x15\x82\x27\x9f\xc7\x04\x7d\x65\x38\xc8\x5d\x52\xa6\xfc\xd7\x4f\xeb\xef\x39\x69\x3c\xde\x00\x83\xfa\x21\x40\x68\xa3\x10\xda\xc0\xa8\x28\xe9\x6d\x13\xc0\x0b\x55\x27\x6a\x3d\xad\x54\xcc\x14\xf5\x20\x02\x4b\x66\x8f\x57\x2b\x8c\x3f\x06\x94\x04\xd2\x8f\x82\x94\xc8\x63\x7a\x14\x37\x0e\x98\xf2\xde\x8d\xdb\x94\xcf\x20\x64\x73\x6e\xb9\x91\x6c\xb8\x45\x49\x1c\xad\x85\xf0\x4d\xe5\xfd\x1b\x6f\x03\x00\x8b\x70\x72\xfd\x2d\x4a\x03\xf7\x74\xb9\x3a\x56\xf4\x3a\x2b\x85\xd5\xc3\xc4\xe9\xbb\x12\x1b\x6a\x80\x49\xd4\x54\x56\x50\xa9\x22\xa4\xc8\x18\x4d\x9c\x35\x69\x91\x1a\x18\x97\x3c\xad\x1c\x56\x5e\xd4\x08\x54\x78\xfa\xe9\xdb\xaa\xff\xc7\x41\x51\x3e\xa2\x17\x51\x62\x9d\x78\x9d\x9e\xbc\xfd\xeb\xb8\x65\x6a\x6b\x93\x3a\x28\xed\xae\xa0\x73\x32\xd0\xce\x4a\x69\x67\x45\x93\x46\x6f\x47\x95\xdb\x8f\xe9\xc8\x45\xde\x90\x1d\x23\x9f\x0d\x28\xcc\x8c\x2f\xe4\xd0\x09\xd2\x66\x47\x7e\xc6\xea\x3f\x96\x2c\x75\x02\xfa\xb1\x44\x89\x13\x53\xcb\x61\x36\x2f\x22\x81\xd5\x43\xa6\x89\x74\xc6\x17\x72\x52\x32\xab\x4a\x39\x47\xa3\xda\x55\x3a\x0f\x2b\x16\x8a\x9e\xba\x0c\x5d\xae\xa1\x31\xd8\x11\x80\xd5\x33\x54\x18\xd1\xf2\xc1\xe5\x32\x73\x1a\x9c\xce\x3d\x0d\x4e\xa7\xc3\x66\x02\xfc\xb5\xc0\xcb\x41\x11\xe3\x3c\x8a\x98\x14\x52\x32\x5b\x7c\xe8\x1f\x82\x49\x72\x32\x0a\x5a\x47\xa9\x6b\xfd\x46\x32\x8e\x42\x19\xa8\x7f\x15\xc5\x81\xae\xf6\x2b\x87\x6a\x71\xb8\xaa\x4c\xfb\x46\xc3\x02\xdf\x9e\x5a\xc5\xa1\x4c\xe3\xe1\x8c\x94\x53\x26\xe7\x0e\xa8\x1a\x22\x98\x2b\x6a\xfd\xb6\x13\xcb\x79\x59\xab\x5f\x47\x46\x8e\xd3\xd8\xe1\x64\x81\x56\xad\x18\x75\xd0\x1b\xe2\xda\xd2\xc5\x70\xbf\xe7\x35\x9b\x4a\xad\x8c\x7d\x07\xae\x54\x14\xdd\xfe\x1c\x96\x37\x29\x7a\xea\xe9\xcb\x22\x8b\x66\x5b\x0e\x5f\x17\x59\xb4\xd8\x35\xea\x08\xd5\x12\xba\x66\xea\x4a\x43\x2f\x84\x9b\xce\xc2\x94\x48\x66\x13\x5a\x55\x3a\xd5\x78\x75\x63\x61\x03\x9e\xb3\xd9\xb5\x35\x20\x87\x4b\x12\xd5\x8a\x8d\x6a\xca\x27\xa8\x1c\x45\xe2\x02\xfa\x19\x90\xb0\x6a\xb8\x2d\xfc\xa3\x6e\x07\xfa\xa1\x7a\x11\x36\x7b\x30\xea\x5f\xd5\x2f\x69\x8d\xe8\x11\xad\x68\x34\xdd\x05\x03\xed\x55\xf6\x3b\x74\x45\x0f\xe3\x72\x0f\xbf\x4a\xd7\xf7\x98\xea\x5a\x67\x35\x2f\x7b\x86\x9a\x97\x4d\x53\xaf\x99\xaa\x53\xc5\x63\xc6\xa9\x69\xbf\xd1\xee\x31\x60\xfd\x67\x5c\xab\x31\x52\x8d\xdd\x64\xa6\x8e\xc2\x76\x55\x3c\x8a\xda\x9b\x97\xd5\x8d\x30\x56\xcf\x22\xe1\xc2\x6c\x9d\xf1\x1a\xf2\xea\x9b\x60\x0b\xd9\xac\xf6\x9f\x16\x0c\xa1\x85\x02\xcd\x26\xba\xdf\xe0\x57\xde\xf3\x25\xd8\x83\xb4\x3c\x36\xe6\xc0\x54\xb7\xc3\x3f\x52\xce\xa2\x35\x30\xfe\xa9\x10\xec\x8c\x7a\xf5\x3a\xe5\x3a\x5a\x8f\x6f\x45\xd8\x29\x5e\x2f\xce\x09\x33\xcc\x78\x6d\xe3\xc5\x4c\x0e\x23\x64\xe8\x6a\xa4\x25\x27\xe7\x2a\x25\xd6\x6c\x45\x7b\xb7\x31\x53\xf2\xd6\x27\x30\xd3\x3c\x85\xef\x4a\x18\x0f\x76\x6d\xc4\x60\x57\x7d\x84\x16\x35\x8e\x76\x22\xe4\xf4\xdd\x3e\x12\xd6\xa0\xe5\x3a\x69\x90\x1f\xb0\x0f\x5d\x38\xc5\xa9\x07\xf7\x43\x1c\x6a\xf5\x36\x02\x14\x5e\xe4\x23\xc7\x7c\x8b\xc8\x08\x8d\xe4\xcd\xfa\x7c\xca\xf0\x22\x9f\x62\xf1\x2d\x52\x86\xab\x47\xa6\x5b\x92\x64\xa7\xb2\x25\x69\x99\x3e\x9d\xe8\x8c\x92\x95\xbb\xd1\xed\x23\xec\x74\x38\xac\x6c\x21\x3b\xc7\x0e\x9f\xbc\x1b\x0f\x6b\x6b\x9b\xaa\xed\xe4\x65\xea\xe9\xbb\xfc\xd3\x4c\x96\x29\x79\x35\x4d\xc1\x9d\xa1\x3e\x73\x9a\xea\xe3\x70\xa1\x1b\x28\x93\x51\x0b\x1f\x39\xec\x94\xa5\x7c\xf5\x54\x8b\x13\xa7\x58\x49\xf9\x5c\x02\xeb\x35\x8f\xd9\xf0\x51\x8f\x94\x00\x74\x52\x51\xd2\x99\x90\xd4\x28\x73\xd0\x4e\x0f\xa1\xd1\x34\x52\xbe\x0c\x74\x99\xb5\x05\xe5\x9e\x42\x35\xb9\x01\x13\x30\x53\x97\xd1\x63\xa8\x50\xa9\x57\xab\x06\xcd\xe8\xec\xf2\x45\xca\xe1\xc2\x98\xb9\x3f\x52\xbe\xe8\xa2\x72\x61\x74\xee\x57\xef\xfc\x2a\xf4\x8b\x9d\xb1\xf3\x8f\xf1\x8f\xe1\x3b\x82\x1d\x21\xce\x13\xe2\x72\x33\x49\x17\x26\x7c\x02\x01\xd3\x24\x95\xef\x27\x18\x3e\x6c\x23\x76\x12\xee\xbf\xff\xe2\x4b\x7e\xfe\xd0\x2d\xe1\xf0\x57\x45\xc1\xf9\x5d\x67\x87\x7d\xcb\xee\x93\x9b\xb6\x88\x7a\xeb\x67\xad\x6d\x8e\xc7\xb9\x3f\xb4\xdc\x73\xef\xa1\x8b\x2f\xb9\xbf\x2f\x4a\x1e\x77\xa4\xad\x77\x5b\x79\x71\xcb\xa6\x93\xbb\xb7\x88\xed\xae\x97\x9d\x7a\xf1\xf1\x71\x1f\x83\x5a\x67\x79\x00\x38\x5b\xad\xaf\x84\xef\x71\xcd\xd0\xb8\xbd\xb3\x32\xc5\x41\xfa\x82\x97\x00\xda\x97\x19\x18\x60\x8d\xe2\xfe\x64\x53\x76\x80\x12\x0d\x43\x13\xf2\xa4\xb3\xa3\x9f\xcb\x22\xf3\x4a\x5a\x7e\x14\x8d\x4a\x70\xb9\x67\x92\x7e\xd2\x47\xba\x22\x1e\xc9\x85\x15\xa2\x41\xe3\x4f\xf3\xf1\x98\x95\xb7\x11\xc9\x4a\xae\x64\xdd\xc9\x15\xc3\x2b\x92\x6e\x42\xc8\x95\x56\x09\x85\x8c\x2b\x14\x74\xfd\xd0\x15\xdc\x45\xfa\x77\xd1\x1d\xbd\xbf\xb0\xf5\xcd\x6d\xe7\x3d\xf9\xa9\xc2\xcc\x56\xa3\x31\x7b\xc8\x95\xb3\x92\x4c\x96\xaf\x8b\xf8\x24\x57\xa0\xde\x64\xca\x2a\x3f\xb7\xe6\x5c\x58\x0e\x8f\x7d\x46\xf2\xf1\x51\x3e\x26\xdd\xef\xf5\xde\x2f\xc5\x60\xd7\x27\x95\x0d\xbe\xb3\xda\x9b\xa4\x68\x63\x63\xd4\x6c\x1a\x1b\xbf\x18\x07\xec\x1b\x5b\x7f\x27\x13\x2b\xf7\x46\xa5\x44\x34\x85\x35\x5d\x25\xb5\x8a\x3d\xfd\x88\x1e\xfa\xf6\x8e\x53\xdc\x37\x6f\xa5\xaf\xe3\x50\xab\xce\x97\xf7\x1c\xa7\x6f\xa4\xc6\x3f\x65\xb8\xa0\xf9\x1c\xaa\xcf\x30\xd2\x8a\x36\x0d\xda\x0a\xbb\x2b\x47\xa5\x9d\xe9\x30\xf5\x26\xab\x75\xaa\xd4\x89\x40\x7d\x83\xc8\x58\xe1\xbf\x6a\x89\x9b\xdc\xd8\x5e\x01\x43\x0d\x68\x86\x10\xfd\x2a\x68\x0d\xd5\x1c\xaf\x86\x70\xb0\x07\x55\xae\xa2\x26\x26\xbe\x4b\x4a\xab\xa9\x87\xb5\x14\x30\x6b\x6c\xbe\xe6\x4f\xb0\x8f\xd9\x3d\xad\x35\xfe\x04\x51\xf5\x27\xe0\xfb\xfb\x44\x3b\x7d\x07\x40\x24\xde\xd8\xac\x56\x23\xa0\x6d\x7f\x24\xd9\xd8\xa4\x26\x79\x4e\x2a\xa3\x87\x4b\x6d\x4e\x74\x1e\xe6\xd4\xaa\xfe\xba\x1c\x3a\x14\x41\x9d\xc0\x3a\xf4\xf2\x56\xf6\x20\xe6\x5b\x8e\xce\xde\x2a\xd3\xca\x49\x94\xe1\xb1\x16\x15\xd0\x4d\x7b\xcb\x19\x39\x86\x57\x28\x16\xd8\x62\xb6\xc6\x3e\x55\x88\x51\xef\x77\x41\x75\xe8\xfd\x3f\xc2\xc9\xf7\x8f\xe1\x44\xa7\x0c\x95\x0d\xc8\xc7\xe3\xa4\xbd\x68\xe0\x8c\x18\x95\xa9\xc3\x8f\xbe\xbd\x60\x0c\x23\x7e\x02\x3e\x01\xd0\xd6\x66\x4f\xc1\xa6\x61\x2a\x36\x09\x0d\x9b\xfd\x2e\xa9\x3e\x38\x86\xcb\x7e\x97\xbf\x3e\xf6\x31\xbd\x03\x0c\x0c\xbd\x43\xb4\xef\x33\xf6\x0a\x75\xae\x94\x55\xf3\x6b\x22\x06\x14\x72\x0a\x3f\x15\x15\x13\x60\x77\xc3\x58\x9a\x0a\xbb\x7f\x2a\xec\x81\x71\xd8\x3d\xde\x71\xd8\x25\xb7\x56\xe7\xe2\xb4\xb0\xeb\x44\x67\x1b\x39\x2d\xc4\x9a\x94\x9d\x08\xaa\xf2\xf8\x1e\x3c\xbc\x67\xcf\x54\x9e\xf1\x50\xae\x39\x67\x1c\x52\x17\x5d\x17\x8a\x67\xb1\x44\x63\x82\xbe\xea\x47\x83\xbd\xb1\x06\x76\xd7\x58\xc4\x3f\xe6\x66\x45\x2b\x58\xba\xbc\x81\x54\xdf\xdb\xa0\x61\xa6\xbe\x07\xe8\xb4\xf0\xd3\xb7\x4f\xe3\x3a\x74\x0b\xe1\x71\x5a\x07\x25\xee\x34\xd8\x20\x8d\xb7\x37\x75\x75\x27\xb7\x13\x67\x57\xd3\xf6\xed\xc9\xd3\x0c\x0b\x5c\x07\x59\xb5\x7d\xcd\x9a\xed\xab\xb0\x64\xd6\xe4\xf1\x10\xa7\xf9\xae\x93\x7b\xa1\x79\x6a\x2f\xb4\xd4\x8c\xf1\x68\x43\x6a\xc2\x78\x88\x25\x1b\xff\xde\x31\x1e\xa7\x6b\x3b\xf1\x8f\x1b\xe1\xf7\x15\x70\xf5\xa0\xfc\xb1\x23\x1c\xfd\xdf\x8c\x7e\x02\x2e\x6a\xd6\x53\x8a\x59\x3c\x05\x9b\xc6\xa9\xd8\x34\x69\xd8\xbc\xe8\x92\xfc\xf5\xa1\x70\x2c\x31\x86\xcf\x8b\x2e\xaf\x3f\x10\x8a\x34\x24\x3f\x1e\xa3\x38\xe6\xba\x7a\x3e\x01\x9f\xc2\x26\x1c\xd8\x67\x40\x66\x84\xc6\x7f\x8f\x21\x83\xfa\xf0\x04\x7c\x82\x34\x7e\xad\x85\x79\x64\x1c\x9f\x50\xa6\x18\x6b\x02\xad\x2a\x4c\xd9\x8f\x9a\x0b\xc8\x8d\x49\xca\x84\xa9\xec\xe9\xa4\x59\x08\x13\x08\xb2\x1a\x03\xaa\x69\x82\xfb\x7d\x9e\x7a\x03\xcd\x0b\xf3\xe3\xfb\xc6\x90\x1f\x63\x63\xf5\xde\x31\x9a\xa5\xa9\x22\x37\xd9\x69\x50\x56\x06\x23\xec\xc7\x05\x22\x53\x0c\x60\x52\x18\x68\xd1\x2e\xcc\xd3\x38\x3d\x79\x3c\xd0\xd7\xda\x3a\x1d\x90\x28\x4a\x57\x32\x70\xa9\xe8\xb4\x24\xda\x58\xd8\xf8\xcf\x74\x4c\x96\xa7\xc8\xbf\x32\xed\x6b\x9c\x20\xa9\x90\xa4\x4b\x48\x93\xeb\xce\x04\x31\xb7\x42\xf5\xcd\x05\xa9\x17\xd4\x47\x97\x2c\x35\x3a\x84\x26\xbd\xd6\x11\x31\x1e\xf3\xd0\x51\x53\xca\x05\xfc\x6b\xb2\x3a\x39\xfa\xb2\x3f\x59\x14\xbf\x61\xb4\xf1\x0e\x4f\x80\x32\x83\x3f\x88\x59\x16\x75\x76\xc6\xa5\xbd\x56\x4d\xea\x96\xdd\x8e\xfd\x7a\x8b\x48\xce\x5c\x5e\xa7\x33\x1f\xa5\xb6\x43\xf4\x4c\xce\xbb\xe0\xb8\x92\x77\xe6\xb7\x3b\xd2\x09\x41\x8d\xfd\xe3\xf9\x7d\x1a\xae\x11\xd0\x09\xf6\x56\xb1\x8d\x66\x40\x33\xc0\xc0\xc5\x40\xa6\x46\x00\x25\x26\x21\x1c\x81\xf3\xd9\x52\x84\xa6\xe8\x44\x42\x60\x61\xaa\xaf\xbf\x97\x7d\x59\xcc\x46\xf1\x64\xff\x7f\xac\x9d\x7b\x74\x94\xc5\xfd\xc6\xe7\x59\x36\xf7\x64\x93\xc0\xe6\x42\x02\xb9\x01\x01\x21\x59\xf7\xfb\xee\x7d\x03\x48\x20\x89\x18\x50\xf9\xe1\x4f\x4d\xa8\xc5\x08\x11\x12\x2e\x09\x42\xb8\x55\x6b\xad\x17\x9a\x5a\xb5\x14\xd1\xa2\xe0\xa5\xa2\xad\x52\xa5\x41\xc0\xa2\xb5\xd4\xaa\x6d\xb1\xb5\xda\xaa\xc5\xbb\xa7\xc7\xe3\xe1\xf8\x87\x27\xed\x49\x6d\x4f\x0f\xc7\x93\xed\xcc\xfb\x3e\x4b\x36\x18\x7a\x7a\x7a\xba\x9b\xd9\xef\xbc\xb3\x33\x9f\x99\x77\xf6\xd9\xf7\x9d\x99\xcc\xce\x98\x7d\x4d\x0b\x47\x06\x62\xab\xbc\xf6\x94\x3a\x7b\xb0\xd2\x2c\xd2\x55\x6c\x36\x96\x3d\x9c\x95\x3f\xde\x6d\x57\x48\x4d\x35\x2b\xa4\x82\xfb\x28\x97\x94\x56\x9a\x5e\x67\x51\x4a\xa5\xa4\xce\xa2\x3b\x53\x29\x5a\x13\x76\x83\xc8\xec\xdd\x63\xee\x8e\xe7\xa8\x9a\x89\xe6\xfb\x6d\xda\x44\x9d\xe7\xae\x9a\xfb\x4d\x87\x25\xb9\x53\xbe\x2b\x31\x94\xd8\xe7\x7e\xd1\xdd\x68\xef\xad\xb0\xd1\x9e\xe1\x66\x8f\x2e\x0f\xe4\x99\x99\x2a\x99\xce\xaf\xbc\xab\x53\xba\x59\x66\x21\x5d\xe7\x37\x8f\x19\xce\xe0\x4f\x8d\xf9\xc7\xb4\xd9\x6b\xa5\xa8\xc4\xac\xd7\x7f\xa8\xc2\x34\x55\xc7\xeb\x0e\xca\xa1\x1c\xb3\x9b\x41\x7e\xa5\xf9\xff\x88\xd9\xe8\xf4\xb0\xca\x76\x76\x5d\xce\x2b\x3c\x9c\x93\x5f\xe4\xec\x0c\x38\xce\xbe\x32\xeb\x4b\x9b\xb9\x50\x4f\xa9\xc9\xb0\x67\x61\x14\x79\x4b\x3c\x80\xf3\x1f\x6c\xcf\x75\x97\x7e\x84\x9d\x37\x6d\x3b\x70\x60\x9b\xaf\xae\xee\x68\xcf\x9e\x77\x5c\xf3\x2f\x47\xdc\xee\x71\x63\x70\xc9\x46\xa3\x83\xa7\x86\x9e\xf4\x5c\xb3\xf5\xed\xfb\x26\xe6\x7a\xd6\x0e\xdf\xc3\xed\x20\x53\xce\xcd\x8c\xf9\x57\x28\x7b\x58\xbf\xe2\xa4\x69\xfb\xd9\x0b\x17\x57\xe8\x32\x17\x96\xa5\x39\x03\x56\x76\x39\xb2\x60\x26\x67\x8d\x2e\x86\x33\x79\x42\x97\x22\x13\x0f\xe2\xee\xe5\xdb\x47\x17\xc3\x19\xbc\xb0\xcb\xf1\xe0\xf0\xfa\xb2\x07\x3a\xb7\x3d\xf5\xa5\x92\x98\x7b\x06\x38\x57\x77\xbd\xee\x5f\x28\x2d\xf0\x0c\xdd\xd0\xad\x46\x00\x66\xd1\x50\x04\x4c\xc7\x0c\xcb\x75\xb7\x6c\x78\xe8\x80\xf9\xd3\x89\x8c\x3d\xb1\xb7\xbe\x7e\xaf\x3d\x7a\x70\xf1\xf0\xe1\xe4\xef\x5d\xb7\x6b\x4e\xc4\xbd\x57\xdf\x73\xd4\x04\x6f\x71\x89\xf9\x65\x4a\xc0\x8a\x14\x6a\x60\x21\x17\x79\xb2\xcf\x61\x3a\xcf\xa0\xb8\xc8\xcc\x86\xdb\x1e\x3b\xdf\xdd\xdd\x1a\xad\x33\xb9\xf8\xc2\xad\xdd\x59\x56\xc3\xf5\xed\x65\x77\x2f\xef\xdb\xef\xf2\x64\xb5\x76\xbb\x9e\x0f\xb5\x15\x15\x14\xb7\x76\x57\x0c\xbf\x56\x5f\x0f\xab\xa2\xbb\xb5\xb4\xb2\x6a\xd5\x9c\x65\xb7\xa4\xb7\x5f\xb7\xbf\xcf\x9d\xef\x76\x75\x73\x0d\x55\xd5\xf8\x58\x62\xe8\x8e\xab\xf3\x67\xff\x5d\x55\xea\xde\xb8\x7e\xbc\x9e\x9b\xe5\x4b\xda\x44\x3c\xb1\x2f\xed\xc3\x34\xb3\x7a\x67\xa6\xd3\xb7\x71\xe6\x73\xa5\x95\x26\x6e\xb5\x5f\xe3\xc3\x6f\xa6\x7d\xe8\xcc\xf0\x4a\x79\x3c\x84\x63\x6a\x86\xa1\xa5\xb8\xce\xa4\xdf\x75\x87\x49\x39\x62\xa1\xfb\x0e\x68\xd1\xa9\xde\xa5\xdb\x6f\x96\x76\xd5\x76\xa1\x63\xcd\x7b\x4c\x6f\x4f\x68\x76\x0f\x24\x86\x1c\x56\xe2\x6f\x64\x9a\x71\xba\x12\x27\x4e\xe2\x98\xe3\x46\xe5\x9d\x74\x93\xb5\x5b\xc3\xb8\x25\x23\x69\x54\x19\x2d\x68\xdd\x9a\xb1\x8f\x69\xe0\x1c\xdb\x7e\xf7\x59\xe9\x46\x9d\xd7\x39\x5c\x92\x79\x22\x25\x2c\x34\x12\x96\x38\xaa\x6d\xf5\xd8\x69\x13\x7b\x99\x3e\x19\xb6\x9b\xc7\x9b\xc7\x88\x9f\xe4\xf7\xd3\x7f\x62\x74\x9e\xe6\xf7\xdc\x76\x9e\xcf\x6a\x7f\x81\x99\x63\x7e\x0e\x97\x3c\x4f\x77\xca\x79\x1b\xf7\xaa\x76\x5d\x29\xc7\x35\xac\x87\xe4\x71\xaf\x2e\xef\x4b\x74\x0f\x8d\x51\x2f\xe6\xb3\xf9\x58\xdb\x16\x6d\xe3\x66\xcc\x6f\xa4\x7e\x74\x3f\x76\xf4\x39\x9b\xb5\xc0\x8a\x52\xd2\x66\x32\xfc\x1a\xed\x5c\xda\xa5\x31\x3c\x2d\xc5\x29\xf7\xcb\x4e\x3e\x8e\x04\x13\xef\xa8\x25\x2a\x66\x66\x48\x62\xba\xea\xb4\xe7\x59\x8d\x3c\x47\x1e\xef\xda\xaf\xee\x94\x90\x92\xb3\xb4\xdc\x69\x13\x0b\x1c\x5f\x62\xdf\xe8\xa7\x49\xa9\xaf\x4a\x43\xfa\x3d\xfd\x3d\x56\x33\xf9\x5c\xa5\x1e\xfd\x77\x4f\xf8\xb1\x10\x4b\x70\x2b\x0e\xe0\x35\x0c\xbb\xc2\xae\x3d\xae\x57\x5d\x83\xe3\xea\xc6\x2d\x1e\xf7\xb9\x7b\x63\x5a\x67\xba\x27\xbd\x26\xbd\x29\xfd\xe3\x8c\xc5\x19\x03\x19\x9f\x66\xee\xce\xf2\x67\x75\x64\xed\xce\xce\xce\x6e\xca\xee\xcf\x1e\xcc\xb9\x22\x67\x67\xce\xa9\xdc\xb9\xb9\x03\x79\x93\xf2\xb6\xe4\x1d\xf0\xc4\x3d\x1d\x9e\xdb\x3d\x1f\xe4\xbf\x53\xb0\xb8\xa0\xbf\xe0\x64\xa1\xa7\xb0\xb6\x70\xf7\x78\xef\xf8\x8e\xf1\xef\x4d\x28\x9e\x70\x97\x37\xd7\xbb\xc2\xfb\x5c\x51\x6d\xd1\xae\xe2\x15\xc5\xef\x95\x2c\x2e\xd9\x51\xf2\x69\x69\xb4\xf4\xe6\xd2\xe3\x13\xeb\x26\xee\x99\xf8\x45\x59\x6b\xd9\x0d\x65\xcf\x94\x9d\x2c\xfb\xa4\xdc\x5b\xee\x2f\xbf\xa4\x7c\x47\xf9\x33\xe5\x7f\x2e\xff\x7c\x92\x67\xd2\xb2\x49\x8f\x4e\x1a\x9c\x6c\x4d\x7e\xb1\xa2\xa0\xe2\xf6\x8a\xcf\x2a\x5b\x2a\x1f\xae\x7c\xa1\xf2\xe3\xaa\xf4\xaa\x99\x55\x2d\x55\x3d\x55\x3b\xab\x86\xaa\xd7\x54\xbf\x5c\x33\xbf\xe6\xc4\x94\x1b\xa7\x1c\x9c\xea\x9d\xba\x6b\xea\xa9\x69\xde\x69\xfd\xd3\xf6\x4d\x7b\x7a\xda\x60\xed\xb2\xda\xfe\xda\xe3\xb5\x9f\x4e\xf7\x4c\x5f\x33\xfd\xb5\x19\xd1\x19\x9d\x33\x8e\x9d\x17\x3e\xef\xad\x99\x3d\x33\x3f\x9b\xd5\x35\xeb\xe9\x59\xa7\xeb\x9a\xea\xf6\xd4\x1f\xaf\x3f\xe5\x5b\xe5\xdb\xe5\x3b\x7d\x7e\xdc\x5f\xea\x7f\x46\x6a\xe5\x46\x79\xc3\xca\xb4\x8e\x05\x3a\x02\x3b\x83\x65\xc1\x47\x42\xee\xd0\xaa\xd0\xf1\x70\x71\xf8\xaa\xf0\x91\x48\x76\xa4\x23\xf2\x64\xe4\x8b\xe8\x92\xe8\x91\x58\x69\xac\x2d\x76\x6f\xec\xad\x78\x69\x7c\x79\x7c\x47\xfc\x64\x43\x5d\x43\x5f\xc3\x47\xb3\xe7\xcd\xee\x9a\xfd\xc1\x9c\xa6\x39\x8f\xcf\x2d\x98\xbb\x70\xee\xf3\x73\x07\x2f\xf0\x5f\x70\xff\x3c\xd7\xbc\x8e\x79\x47\x1a\x6b\x1a\xfb\x1b\xff\x3a\xff\xe6\xf9\xff\x5c\xd0\xbf\xe0\x1f\x4d\xb3\x9b\x3a\x9a\x1e\xb4\xaf\x5e\xef\xeb\x36\xa5\xbd\x46\x8c\xbd\x82\x82\x4b\xf7\xc4\xcc\x42\xef\xc9\xeb\x5a\xbe\x7a\x8e\xd7\xb8\x09\x66\x4d\x0a\xb3\xcb\x9a\xdb\xec\x64\xb7\x46\x1f\x39\x7e\xa8\x19\xea\x06\xfa\x5d\xca\xa3\x3f\x65\xc7\x3f\xce\xb4\xbd\xe9\x77\xab\xa8\x1a\xa6\x3f\x4d\x6d\x43\x98\xfe\x74\x15\xc6\x41\xfa\x33\x55\x31\x3e\xa1\x3f\x4b\xfb\x4f\xd3\x9f\xa3\xa6\xba\x0a\xe8\xcf\xd5\xfe\x20\xfd\x13\xb4\xbf\x8d\xfe\x13\xaa\xd8\x95\x2c\xc3\x2b\xca\xef\xda\xb5\x75\xeb\x56\xdf\xea\x75\xdb\x37\x74\x75\xaf\xec\xed\xd9\xe4\x5b\xd9\xbb\x5e\x2d\x50\xbd\x6a\x83\xd6\xea\x46\xd5\xad\x56\xab\x2e\xd5\xa7\x5b\x09\x4f\x68\x67\x29\xbf\x12\x15\xd0\xbe\x15\xfa\xdd\x2a\xd5\xaa\xae\x51\x3d\xda\x2e\xd2\xf1\xb7\x68\xbf\x89\xbf\x56\xf9\x74\x48\xa3\x5a\xa7\x9f\x55\x29\x84\x4d\xf6\xd1\xb5\xda\x5e\xab\xed\x16\xfd\xda\xa9\x63\x5e\xa8\xcf\xbc\x5d\x7f\x07\x17\xaa\x8b\x74\xae\x97\xaa\x4b\xd4\x65\x3a\xde\x42\xcd\x5a\xa7\xbf\x1f\xeb\x74\xea\x1e\x9d\x7e\x93\x5a\xaa\xe3\xaf\x56\x9b\x75\x88\xc9\x45\x74\x4a\xbf\x5d\x96\x06\x75\xb9\xce\xfd\x4a\x9d\xae\x61\x4c\xd6\x97\x49\xf5\x67\xb1\xfe\xd3\x12\x54\x9d\x95\xee\x0a\xfb\x3c\x36\xe9\xf7\x7b\xed\x3a\x48\x2d\xd3\x12\x9b\xe1\x1c\x8d\x84\x76\xe9\x98\x7d\x6a\xa5\x1d\x7f\xcb\x99\x14\x3e\x15\xd1\xaf\x0d\x6a\xbd\xa6\xae\xd5\x4c\x13\x67\x95\x0e\x35\x39\xaf\xd0\x35\xee\x53\x21\xdb\x45\x75\xbd\x5b\xfa\x5a\xf5\xdf\x9d\xe5\xd8\x9f\xd4\xd8\xa1\x5b\xed\xa7\x4f\xa7\x5e\xa7\x3f\xe5\x0d\xba\xdc\xdd\x2c\xf5\x26\x1d\x6a\x7c\xeb\xff\x67\x71\xae\xd4\xa5\x5c\xa1\x4b\x6e\x42\xfb\xce\xd4\xc9\xc5\xac\xd3\x64\xf9\x2c\x5d\x47\xa6\x3e\xa3\x2a\x6e\xd7\x65\x5c\xd7\x45\xf0\x8c\x1e\x83\xc9\x6b\x75\xe2\xa8\xb2\xd4\x58\x8f\xf7\xf5\xf7\xd4\x05\xb3\x02\x6d\x9e\xf2\xc0\x8d\x34\xa4\x23\x03\x99\xba\xe5\x97\x8d\x1c\xe4\x22\x0f\x1e\x7b\x6c\xb7\x10\xe3\xd5\x5f\x30\x01\x5e\x14\xa1\x18\x25\x28\xc5\x44\x94\xa1\x1c\x93\x30\x19\xe6\x17\x07\x55\xa8\x46\x0d\xa6\x60\x2a\xa6\xa1\x16\xd3\x31\x03\xe7\x61\xa6\x59\xae\x06\xf5\xf6\x0a\x60\x7e\x08\x2c\xdd\xb4\x0b\x22\x84\x30\x22\x88\x22\xa6\x1b\x8b\x0d\x98\x8d\x39\xba\x8d\x79\x01\xe6\xa1\x11\xf3\xb1\x40\xb7\xd1\x9b\xd1\x82\x0b\xf5\xf5\xfd\x22\xb4\x62\x11\x16\xe3\x62\x5c\x82\x4b\xf5\xd5\xfe\xff\xb0\x14\x97\xe1\xff\x71\x39\xae\xc0\x95\x68\x43\x3b\x96\xe1\x2b\xb8\x0a\x5f\xc5\x72\x5c\x6d\x56\xe8\xc1\x0a\xac\x44\x27\xae\xc5\x2a\xac\x46\x17\xba\xb1\x06\x6b\xb1\x0e\xeb\xd1\x83\x5e\x6c\xc0\x75\xd8\x88\x4d\xe8\xc3\x66\x6c\xc1\x56\x6c\xc3\x76\x7c\x0d\xd7\xe3\x06\x7c\x1d\x37\xe2\x1b\xb8\x09\xdf\xc4\xcd\xb8\x45\xdf\x53\x6e\xc3\x0e\x7c\x0b\xfd\xf8\x36\x6e\xc7\x77\x70\x07\xee\xc4\x5d\xf8\x2e\x76\xe2\x7b\xd8\x85\xbb\xb1\x1b\xf7\xe0\x5e\x7c\x1f\x7b\x70\x1f\xee\xc7\x5e\xec\xc3\x03\xba\x19\xfc\x10\x1e\xc6\x0f\xf0\x08\xf6\xe3\x51\x3c\x86\x1f\xe2\x47\x78\x1c\x4f\xe8\xbb\xd3\x8f\xf1\x24\x9e\xc2\x41\xfc\x04\x03\x38\x84\xa7\x71\x18\x47\x70\x54\xf7\x44\x7e\x8a\x63\x78\x16\xcf\xe1\x67\x78\x1e\x3f\xc7\x71\xfc\x02\x2f\xe0\x97\x78\x11\x2f\xe1\x65\xfc\x0a\xbf\xc6\x6f\x70\x02\xaf\xe0\xb7\xf8\x1d\x5e\xc5\xef\xf5\x3d\xee\x75\xfc\x01\x7f\xc4\x1b\x78\x13\x6f\xe1\x4f\x38\x89\xb7\xd3\xed\xcb\x92\x64\x6c\xee\xe9\xf6\xfb\xfd\x4d\x8e\x6d\xf4\x1b\x6b\xe9\x00\x5a\xa1\xb5\x68\x03\xb4\x41\xda\x10\x6d\x98\x36\x42\x1b\xa5\x8d\xd1\x36\x3a\xd6\x6a\x71\x6c\xa8\xc5\xdd\xbc\x79\x63\xaf\x7d\x10\x6a\x59\x60\xdb\x30\x33\x8b\x30\x51\xc4\x6f\x47\x6e\x66\x21\x9a\x59\x88\x66\x16\xa2\x99\x99\x37\x33\xf3\x66\x66\xde\xcc\xcc\x9b\x99\x79\xb3\x5f\xfc\xb4\xe4\x08\x39\x42\x8e\x04\x69\xc9\x13\xf2\x84\x3c\x21\x4f\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\xb3\xc8\x0b\x90\x17\x20\x2f\x40\x5e\x80\xbc\x00\x79\x01\xf2\x02\xe4\x05\xc8\x0b\x90\x17\x20\x2f\x48\x5e\x90\xbc\x20\x79\x41\xf2\x82\xe4\x05\xc9\x0b\x92\x17\x24\x2f\x48\x5e\x90\xbc\x10\x79\x21\xf2\x42\xe4\x85\xc8\x0b\x91\x17\x22\x2f\x44\x5e\x88\xbc\x10\x79\x21\xf2\xc2\xe4\x85\xc9\x09\x93\x13\x26\x27\x4c\x4e\x98\x9c\x30\x39\x61\x72\xc2\xe4\x44\xc8\x89\xb0\x5c\x11\xf2\x22\xe4\x45\xc8\x8b\x90\x17\x21\x2f\x42\x5e\x84\xbc\x08\x79\x51\xf2\xa2\xe4\x45\xc9\x8b\x92\x17\x25\x2f\x4a\x5e\x94\xbc\x28\x79\x51\xf2\xa2\xe4\xc5\xc8\x8b\x91\x17\x23\x2f\x46\x5e\x8c\xbc\x18\x79\x31\xf2\x62\x0e\x4f\xa8\x7b\xa1\xee\x85\xba\x17\xe7\xcb\xa7\x6d\x88\x36\x4c\x9b\x4c\x17\xa5\x75\xca\x21\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xff\x42\xfd\x0b\xf5\x2f\xd4\xbf\x50\xf7\x42\xdd\x0b\x75\x2f\xd4\xbd\x50\xf7\x42\xdd\x0b\x75\x2f\xd4\xbd\x50\xf7\x42\xdd\x0b\x75\x2f\xd4\xbd\x50\xf7\x12\x26\x8f\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\xa8\x7f\xa1\xfe\x85\xfa\x17\xea\x5f\x92\xba\x8f\x91\x13\x73\x38\xfa\xee\x71\x0c\x89\xdb\x06\x70\xa7\x5a\x34\x90\xb9\xa4\xed\x10\x70\x57\xfb\xa1\x96\xf4\x59\x6d\xd5\x03\x05\xed\x8b\x06\xbc\x4b\xb5\xe7\xa6\xf6\xc9\x03\xe9\xb3\xae\x6a\x6b\x1f\xf0\xce\x32\xe3\x23\x4b\x4f\xb5\x1d\x54\xea\x5f\x01\x00\x00\xff\xff\xff\xf1\x17\x06\x40\xa1\x00\x00") +var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\xfd\x79\x9c\x1b\xd5\x99\x2f\x0e\x9f\xa7\xaa\xa4\xd2\x2e\x55\x49\xa5\x52\xb7\x5a\x4b\x49\x2d\xa9\xbb\xa5\x96\xba\xab\x5a\x2d\xcb\xbd\xb8\x69\x6f\x78\xc1\x36\x36\xc6\x6d\x56\x1b\xcb\x6c\x66\x31\x4b\xcc\x12\x43\x30\x71\x02\x78\x62\xd3\x90\x60\x42\x20\x13\x67\x01\x3c\x01\xc2\x29\xd9\x0c\x49\x2e\xb9\x37\x21\x81\x51\x66\x52\x93\x65\x4c\x27\x30\x37\xc4\x4e\x26\x0c\x09\x21\x37\x01\xcf\xcd\xc4\x76\x97\xdf\xcf\x39\xa5\x5e\xbc\x10\x26\x77\xde\x3f\x7e\x6d\xb7\x6a\x55\xd5\xf3\x3c\xe7\x9c\xe7\xf9\x3e\xcb\x39\x8d\x00\x21\x24\x00\x42\x1c\x0a\x2c\x5a\x74\xc1\x79\xd7\xae\x7d\xf9\x0f\x08\x41\x1b\x42\xa8\x6d\xf1\x82\x85\x8b\xc0\x81\x38\x84\x60\x0e\x42\x28\xb9\x72\x4d\x49\xbd\xea\xe9\x65\x3b\x11\x82\x31\x84\xd0\x86\x4d\xd7\x6f\xdc\xba\xf4\x0f\xce\xcf\x21\x04\x5f\x47\x88\xb9\x79\xd3\xb6\x5b\x93\xa8\x83\xbd\x0f\x21\xae\x80\x10\x72\x5c\xb9\xf5\xaa\xeb\xd7\x1c\x2c\x3d\x8d\x10\xd7\x87\x10\xb3\xf9\xaa\x8d\xb7\x6c\x45\x08\x05\x10\xb2\x3f\x41\xae\x5f\x75\xdd\x1d\x57\xc6\xe3\x9a\x82\x90\xfd\x2b\x08\x3d\x30\x78\xf5\xe6\x8d\x35\xe6\x8a\x31\x13\xa1\x07\x0f\x23\x84\xfa\xaf\xbe\x7a\xf3\x46\x97\xca\xf9\x11\x1a\x8f\x20\x84\xda\xaf\xbe\xfe\xd6\xdb\xbf\xf3\x1d\x61\x0f\x42\xe3\x83\x08\x31\x47\xaf\xbb\x71\xd3\xc6\xbe\x07\x2f\x5c\x81\xd0\xa7\x7b\x08\x0d\xd7\x6f\xbc\x7d\x2b\xc3\xc1\x3e\x84\x3e\xf3\x36\xa1\xf7\x86\x8d\xd7\x6f\x3e\xf4\xfc\x63\xef\x22\xf4\x88\x03\x21\x76\xfb\xd6\x1b\x6f\xb9\xf5\x1b\x8b\x9e\xba\x06\xa1\xcf\xee\x44\xc8\xb1\x73\xeb\xcd\x9b\xb7\xe2\xf7\xf2\x21\x84\xbe\xe8\x40\x08\x15\x6f\xdb\x7c\xc5\x95\x63\xcf\xaf\x7e\x0b\xa1\x2f\x12\x7e\xed\x08\x51\xe9\xa0\x1f\x0c\x7d\xe9\x87\x64\xfb\x43\x4f\xf8\x3d\x6b\xeb\x2c\xd2\x2b\x3e\x84\x10\xa1\x0c\x21\x06\x01\x02\xf4\x06\x02\x22\x2d\xc4\x20\x84\x58\x6e\x07\x8c\x23\x1b\xe2\x58\x0f\xf3\x23\x84\xd0\x45\xd6\x16\xbe\x82\x54\xe6\xeb\xe4\x2b\x36\x74\xf6\x9f\xb5\xcb\xd6\xad\x40\x23\xc8\xfb\x4b\xc4\x7e\xfb\x64\x00\x21\x5b\x04\x6d\x9f\xa2\xa4\xf9\x93\xa4\x47\x6c\xf3\xb7\xcd\xba\x06\xd7\x21\x96\xee\xb5\x21\x0e\x56\x21\x84\x56\xa1\x11\x64\x23\xd2\x46\x5e\x94\x44\x79\xb4\x2f\xe9\x4a\x96\x92\x97\x27\x9f\x4d\x89\x99\x13\x59\xc8\x39\x73\xfe\xc3\xec\x61\xe7\xe1\x96\xc3\x9d\x87\xab\x87\x97\x1c\x5e\x7f\x78\xc3\xe1\x6b\x0e\xdf\x71\xf8\x81\xc3\x8f\x1e\x71\x1e\x69\x39\xd2\x79\xa4\x7a\x64\xd1\x91\x25\x47\xd6\x1f\xb9\xe6\xc8\x1d\x47\x1e\x38\xf2\xc8\x91\xc7\x7e\x89\x4e\x9e\xa4\x14\x90\x27\x76\xa1\x7d\x49\x74\xc6\x13\xe1\xb0\xed\x70\xe0\x70\xf2\x70\xcf\xe1\x91\xc3\xab\x0e\x6f\x38\x7c\xc5\xe1\xad\x87\xef\x39\x3c\x7e\x04\x8e\x04\x8e\x24\x8f\xf4\x1c\x19\x39\x72\xee\x91\x55\x47\x36\x1c\xd9\x7a\xe4\x9e\x23\xe3\x47\x1e\xa5\x4f\x84\x93\xff\x71\xf2\x57\x27\xdf\x38\x79\xe5\x61\xfe\x17\xbf\xfa\xc5\xc1\x5f\x5c\xfd\x26\xfb\x46\xeb\x1b\xe1\xd7\xfd\xaf\xbb\x92\x2d\xc9\x48\x52\x4c\x7a\x92\xf6\x24\x4a\x1c\x4b\x1c\x4d\xbc\x9f\x78\x37\xf1\xef\x89\x23\x89\xdb\x13\x37\x27\xae\x4b\x5c\x99\xd8\x90\xb8\x3c\xb1\x3e\xb1\x26\x71\x5e\x62\x71\xe2\x9c\xc4\x48\xfc\x8d\x53\x24\xf5\xff\xa7\x1f\xb0\xcf\x34\x00\x30\xcd\x16\x3e\xe5\x06\xab\x29\xac\x1f\xee\x83\x9a\xf6\xff\x23\x3f\xf6\xd3\x4f\x84\xfe\xcb\x5f\x7d\x10\x75\x30\xff\x89\x51\x01\xa3\xe0\x32\xbc\x7c\xd5\x18\x5e\xba\x6d\x3d\x46\xe9\x79\x11\x6c\xcf\x8f\x0d\xad\xa7\xe7\xee\x5a\x9f\x3c\x84\x21\x58\x8c\x74\x63\x28\x24\xdf\xc0\x9e\x7c\x37\x66\x0a\xcb\x56\x8f\x2d\x4c\xaf\x57\xba\x31\x5b\xb8\x26\x92\xc4\x23\xab\xc6\x14\x3c\xb2\xbe\x1b\x73\x05\xf2\x55\x25\xad\xdc\x39\xf6\xf3\xa8\xb1\x3e\xba\x6c\xf5\xd8\xd8\x64\xf4\xdd\xf5\xd1\xb4\x82\x6d\xf9\x31\xbc\x68\xdb\x7a\x7a\x61\xfd\xfa\x48\x37\xb6\x15\xbc\x97\x5c\xd4\x8d\xed\x05\x3d\x05\xf7\xaf\x1a\xc3\xc9\xfb\x2f\xb9\x24\x8a\xd1\xfa\x6e\xcc\x17\xf4\x76\x7a\x6a\x64\xfa\x94\xa3\x20\x0a\xc9\x6a\xa9\x1b\x3b\x0b\xc9\xbb\xc8\x4b\xbe\x17\x35\xd6\x27\x31\x9b\x59\x92\x4e\x62\x2e\xbb\x14\xa3\x55\x63\xbb\x36\xef\xda\x98\x24\x3b\x73\xa2\x8a\xb2\x3e\xba\x8b\x1e\xad\xb6\x8e\xc8\x0b\x5d\x16\x75\x81\x68\x40\x59\xdf\x8d\xdd\x85\xe4\x4f\x28\x3b\x9e\x42\xb2\x84\xf9\xfc\x25\x63\xc9\xe4\xe2\xf4\xa2\x8d\xd7\x26\xc7\x92\xb5\x2b\xac\x47\x90\xfb\xbc\xe4\xcd\xc9\x6a\x29\xb9\x2b\xb9\x78\xd7\xa2\x8d\xe9\x5d\xc9\x5d\x69\xfa\xba\x34\x79\x38\x1e\x99\x13\x55\xd6\x47\xd3\xe4\x04\x1e\xd9\x4c\x0e\xd6\x77\x63\x1f\x7d\xd3\xd0\x44\x44\x51\xa2\xc9\x89\x5d\xcb\x56\x8f\x25\x77\xa5\x97\x24\x31\x5a\xdb\xa4\x4d\xa1\xb7\xf9\x0b\xe9\xe4\x44\xf3\xe5\xe9\xe4\xd8\xb2\x35\x51\x05\xc3\xfa\xb1\x5d\x98\xcb\x2e\x49\xef\x4a\x27\x77\x2d\xd9\x95\xde\x48\xbe\x60\x7d\x85\x6c\xba\x71\x80\x34\x83\x98\xef\xc6\x02\x61\x80\xec\x88\xa7\x31\xb0\x8b\x6c\xd2\x1b\xaf\xdd\x30\x9b\x13\xf2\xd5\x60\x21\xb9\x2b\xb9\xeb\x3e\x22\xb6\xa5\xb5\xf4\x2e\x1e\x27\x57\x8d\x0d\x46\xbf\xbd\xbe\x1b\x87\x0a\x07\xd0\x08\x8c\x8c\x8e\xc2\xb2\xaf\x07\xd0\x26\x44\x3f\xc9\xcd\x6b\xc7\xc8\xe7\xea\xb1\xf4\x15\x49\x8c\xd2\xa3\xd1\x2b\x92\x18\xd2\xa3\xeb\x93\x78\x64\xf5\x58\x1d\x25\xd1\xfc\x4d\xa3\x75\x48\xc2\xfc\x4d\xa3\x38\xb9\x09\xb7\x6c\x6e\x9b\x7a\x97\x54\xc0\x30\x7f\x53\x1a\xa3\xf9\x9b\xd2\xdd\x88\x8e\x2a\x38\x79\x12\xf9\x11\x83\x3a\x10\x82\xab\xd9\x24\x62\x11\x8f\x8a\x3a\xa0\xd2\x60\x9d\xe7\x98\x77\x55\xdd\x6e\xfb\xdf\x83\x75\x96\x61\xde\x55\x91\xce\x92\xd3\x36\x72\xba\xce\xdb\xd9\x13\x83\x75\x20\xe7\x35\x41\x11\x32\x9a\x90\xee\x80\x11\xf3\xed\x3f\xfc\x81\x4d\x9e\x38\xdc\xc1\xfc\x08\x01\xaa\xa1\x1a\xb7\x9c\x5b\x8e\x64\xd4\x8e\x30\x2a\x61\xaf\x86\xc1\xc0\x6e\x15\x70\xa4\x84\x83\x13\xd8\xa6\x62\xd1\xc0\xbc\xaa\xb7\x40\x1e\xf5\xf4\x06\xcb\x4a\xae\x22\x0b\x9a\x50\x91\x79\x45\x52\x64\x3e\x27\xa4\x05\x3e\x57\xa9\x01\xfb\xe2\xee\x17\x1b\x2f\xee\x7e\x11\x58\x73\x72\x6a\xf7\xe8\x69\x27\xcc\x49\x7a\x5b\x53\x8d\xd0\xf7\xba\xd1\x52\x54\x77\x21\x94\x27\x2f\xe7\xe9\xcb\x6d\x6a\x1d\x90\x2b\x7f\x60\x04\x58\x67\x1e\xb0\xa7\x84\x5d\x13\x98\x51\xb1\xd3\xc0\x9c\x5a\x77\xba\xc8\x25\x27\xef\xcc\xd7\x5d\x4e\xb2\xeb\x42\xce\xbc\xee\xa5\xd4\xb5\x80\x22\x4c\xfd\x83\x71\x28\xc0\xb8\xb9\xd5\x3c\x34\xb3\x67\x6e\x85\x71\xca\xb3\x8d\xfb\x14\xf7\x35\x54\x41\xdb\x10\x56\x4b\xb8\xc3\xa8\x77\xa8\xe4\x51\x1d\x45\x27\xa5\x43\xa1\x74\x24\x54\x6c\x2b\xe1\x36\x0d\xdb\x0d\xdc\xaa\x62\xa9\x84\xdd\x46\x5d\x72\x93\x1b\xa5\x00\xa1\x6c\x4e\x09\x57\x28\x65\x29\x43\x8f\x25\x54\x15\xa7\x02\x7a\x37\xe4\x71\x40\xc5\x45\x03\xfb\x55\xbd\x0a\x79\x3d\x55\x11\x44\xcc\x57\x71\xb7\x50\x77\x27\xd5\x6a\xb5\x4a\xa4\x58\xd1\xfa\x2a\xe9\x8a\xd6\x5f\xe9\xd7\x54\x39\x2c\xa7\xfb\x8a\x4c\x3a\xe5\x63\x78\x85\x57\xec\x92\xc2\x2b\x71\x4e\x53\x87\x99\xb2\x66\xe7\xed\xe9\x54\xae\x08\xb9\x5a\xed\x26\xdb\x1b\xb5\xfb\x32\xcb\x3e\x72\xf0\xbd\xad\x83\xf6\x17\xb4\xe5\x4b\xe3\x91\xea\x82\x79\x41\xf8\x68\xcd\x3c\x64\x87\xbd\x35\xf3\x90\xb3\xa7\x3a\x5f\x93\x62\x4b\x97\x6b\x5f\x4b\x6c\xdc\xf2\xb4\x71\x5b\xfb\xa8\x07\x8e\xd6\x4a\xe5\xda\xd3\x17\xed\xfe\xd6\x55\xd7\x56\xc6\x7a\x5a\x42\x85\x8b\x86\x6b\xc5\xfe\xda\xd2\x5b\x47\xf3\xfe\xd6\x9e\x75\xe5\x67\xaf\xfd\xc8\xdf\x16\x9f\xb9\x9d\xf6\xb3\x06\x8c\x73\xcb\x99\x97\x10\x8b\x44\xda\x17\x58\x03\x30\x57\xd2\x6d\x56\xcb\x2b\x82\xd2\x60\x77\x9e\xd8\x4e\xc4\x89\x4e\xb3\xc5\xa8\x17\x21\x38\xf9\x1e\x14\xb8\x97\xb9\x73\x90\x84\x12\x08\xb3\x25\xec\x33\xb0\xd3\x00\x1c\x2e\xe9\x32\xe4\x91\xee\x64\x05\x51\x77\x0b\xd5\x6a\x4f\x2f\x1b\x0a\x6b\x8a\xda\xdf\x97\x4d\xa7\xf8\x22\xa4\x53\x76\x29\x24\xfb\xc0\x77\xd3\x4a\xe6\xf7\xb7\x7f\xf5\xab\xb7\x17\x0b\x85\x17\x6e\xf8\xec\xcf\x98\xd1\xb5\xf0\xfb\x55\x37\x3f\xf7\xde\xb3\xbe\x8d\xb7\xfd\xf4\xb1\x16\x8f\x6f\x0b\xe9\x36\x08\xa1\x1a\x87\xb9\xe5\x88\x43\x3c\x72\x21\x2f\x42\x65\x90\x2b\x90\x11\x9c\x36\x01\xc6\x1b\x0d\x18\x3f\xbe\x0a\x0a\xe6\x21\x66\x8c\x19\x33\x0f\x41\xa1\x46\x4e\x9a\x5b\x1b\xf4\xe8\xe8\xe4\x93\xcc\xc5\xa6\x07\x0a\x93\xfb\x09\x72\x38\xf9\xfe\xc9\xf7\xb9\x6f\x71\xdf\x42\x0c\xb2\x13\x94\xc0\x67\x72\x15\x19\x72\x15\xb9\xd2\xdf\x57\x82\x6c\x8a\xf7\xc2\x79\xbf\xb8\x68\x82\xb9\x72\xe2\xc2\x89\x4d\x5e\xef\x63\xfe\x76\xbf\x77\xeb\x2f\xce\xb7\x4e\x5c\xe2\xcd\xf9\x1e\xf3\x7a\xa7\x64\xc1\x61\x0e\x23\x27\xd2\x50\xdd\x4e\xfa\x33\x6f\x60\x56\x05\xec\x2a\x61\xc7\x04\x66\x8d\x3a\xeb\x20\x3d\x87\xb5\x39\xf3\x75\x07\x4b\x76\x1d\x76\x67\x5e\x77\x53\xe1\x0a\x0a\x08\x8a\xa4\x94\x15\x81\xc3\x84\xb8\x13\x87\xa1\xc0\xe1\xc9\x37\x26\xdf\xa8\xd5\x98\x2c\x79\xbe\x0f\x39\xb8\xe5\xdc\xf3\x28\x89\x50\x36\x0e\x95\x61\x28\x0b\x19\x21\xcb\xfb\x40\x6e\x1e\xf5\x65\x79\x9b\x0f\x24\x21\xcb\xdb\xb9\xf6\xfb\x57\x9e\x33\xc6\x8c\x8d\x2c\x5d\xb9\x4e\x14\xef\x5f\xb9\x68\x8d\xcf\x35\x19\x70\xf9\x46\x96\xae\xfc\x9b\x1b\x3a\x5b\xa5\x0d\x5d\xcc\x65\x8f\x4f\xfe\x29\x20\xb7\xde\xdc\x5f\xe9\x6c\x91\xcf\xaf\xb0\x37\xb9\xdc\xec\x77\xd8\xa0\x6b\x72\xa5\x10\x69\x21\x96\x5d\x3e\xf9\x3b\xee\x7b\xdc\x63\x28\x88\xa2\x68\x3d\xaa\xfb\x08\x47\x62\x09\xcb\x06\x8e\x5a\x1d\xa3\xad\x84\x61\x02\x4b\x06\x96\x02\x44\x37\x60\x9b\xa1\xc7\x20\xaf\xb7\x48\x82\x78\x80\x65\x02\x62\xbb\x5c\xc5\x36\x01\xf3\x55\xa4\x8b\x3e\x41\xc4\xce\x2a\x96\x05\x1c\xa8\xe2\xa8\x78\x00\x10\x6f\x6b\x97\xab\x3d\xbd\x62\x00\x25\x91\x14\xe2\x21\x1c\xf2\x83\x3d\x95\x03\x7b\x3a\xc5\x04\xc2\xc9\xfe\x40\x36\x29\x43\x1b\x8c\x43\xdb\x0a\x28\xf0\xfc\xf5\x8e\x90\xc3\x3c\x74\xdb\x9e\xc6\xc7\x5f\x06\xf1\x3b\xdf\x31\x7f\x0f\xef\x92\x6b\xe6\xbf\x35\xf6\xdc\x66\x1e\x72\x84\x1c\xd7\xf3\x3c\x14\x56\x30\xd7\x99\x7f\x78\xf9\x3b\x20\x7e\xc7\xea\x9f\x35\x34\xc6\x3d\xcf\x2d\x40\x2d\x48\x42\x80\x5b\x4b\x18\x4d\x90\x3e\xe9\x33\xf4\xa8\xd5\xa5\xfb\x86\x99\x38\xc8\xc3\x4c\x9c\x91\x42\x3e\x96\x2f\x72\xb5\x39\x17\xdd\x76\xdb\x1d\x85\x9e\x8f\xde\xfe\x91\xb1\xfe\xf9\x77\xec\xdc\x3f\x3c\xfc\xf4\xce\x3b\xe6\xb3\x81\x91\x6d\x6b\xba\xb9\x25\x0b\x16\x9e\xcb\x75\xaf\xd9\x36\x52\xbd\xe3\x9e\x8f\xd5\xd7\xae\xad\x7f\xec\x9e\x3b\x10\x62\x4e\x7e\x1d\x2d\xe6\x1e\xe1\x30\x72\x21\x0f\x42\xac\x12\xd4\x82\x0a\x04\x9d\x10\x64\x2b\xe7\xc2\x2f\x1e\x66\x1e\x86\x9f\x99\xf7\x3e\x64\xde\x63\xde\xfb\xf0\x67\x18\x36\x49\x55\xd1\x6f\xcd\x79\x10\x34\xdf\x85\xff\x65\xce\xa3\x28\xf6\x94\x67\x84\x51\x04\x61\x6f\x09\x07\xa9\x1a\xe2\x54\xc0\x72\x49\x8f\x50\x92\x4f\x79\x7a\x50\xe6\x2b\x72\xae\x92\xce\xf1\x67\xbe\x67\xfe\xf7\x96\x7c\xfb\xbb\x4b\xbf\xf3\xce\x79\x2b\xce\xf2\x46\xe6\xd6\x3d\xbf\xfc\xd4\xee\x5f\x7f\xea\x5f\xfe\xe5\x94\xbe\x1b\x44\xa8\xb7\x0c\xe5\x54\x76\x08\xfa\xfa\xd5\x70\x0c\x42\xf6\xb4\x04\x12\x8c\x67\xe6\xe1\xff\xc4\xf3\x32\x30\xfe\x20\x40\xed\x11\xad\xb1\x1d\xe3\xed\x0d\xed\x91\x9a\x79\xf2\x41\x82\x82\xad\xef\x2f\xa7\x76\xc9\x8d\xfc\x28\x88\x64\x14\x45\x09\x94\x46\x39\x94\x47\x25\xa4\x21\x8c\xea\x88\xf4\x20\xce\xd0\x23\x49\x55\xc5\x7c\x09\xa7\x34\xec\x30\x70\xbb\x8a\xdd\x25\x9c\xd5\xb0\xc7\xc0\x1d\x2a\xf6\x97\x70\x97\x86\x03\x06\x2e\xa8\x38\x58\xc2\x45\x0d\x87\x0c\xdc\xa3\x12\xfe\xe3\xaa\x46\xc4\x01\xb8\x8f\xb6\x23\x67\x1c\x70\x78\x02\xa1\x76\x59\xc5\x5c\x80\xa8\xa8\x03\x4e\xaf\x20\x91\xc3\x88\x81\xdb\x54\x1c\xb1\x7a\x65\x4c\xc5\x49\xe3\x40\x7b\x47\xa1\x87\x5c\x4a\x06\x74\x05\xf2\x07\x32\x9d\xdd\xbd\xe4\x90\x35\xf4\x32\x51\x4c\x1e\xb7\x20\xea\xad\xd1\x6a\x15\xfb\x05\xbd\x2d\x46\x14\x54\x2f\xb5\x97\xe5\x74\xf9\xb4\x5f\xa2\x05\xcb\x8a\xa0\xc0\x59\xae\x71\xf8\xf8\xc1\xda\xf4\x4f\x83\x19\x9b\xdc\x4f\x7f\x5f\x9a\x39\xc9\x2d\x9f\x7d\x0b\xd1\xa5\x35\x18\x3f\xb1\x7d\xfa\x0c\x6a\xea\x37\xcb\x36\xfa\x51\x02\x95\xd0\x3c\x34\x8a\xea\x5e\x22\xbd\x82\x86\x39\x2a\xb2\x58\x09\x0f\x52\xd1\xf4\xa9\x80\x47\xa8\x3c\x02\xd4\x3e\x46\x54\xec\x0c\xe8\x49\xc8\x13\xa1\x75\x1a\x78\x8e\xaa\x9f\x43\xfb\x4d\x59\xe8\xeb\xd7\x14\x35\x2c\x09\x21\x7b\x5a\x49\x65\x5b\xe0\xd4\x63\xf8\x90\xeb\x31\x09\xc6\xa5\x58\x4c\x32\xb7\x92\xcf\x99\x7d\x66\xec\x83\xae\xa8\xb3\x4e\x33\xd7\xcf\x3a\x98\xfc\xd6\x07\x5d\x41\xc8\x79\x06\xef\x2b\xd1\xe5\xe8\x46\xf4\x31\xf4\x20\xda\x66\x49\x41\x1f\xbc\x4e\x23\x72\xd0\xfb\x6a\x2a\x91\x84\xbe\x7c\xbb\x46\x64\xa1\x2f\xb8\x55\x55\x71\x77\x49\xbf\xe4\x53\x9a\x86\xdb\x0d\xfd\x82\x9d\xaa\x0a\x78\x9c\x48\x47\x0f\x90\x4e\xe7\x34\xf4\x48\x87\x4a\x25\xd4\x03\x79\x7d\x64\x95\xaa\xe2\xaa\xa1\x9f\x3b\x46\xb6\x01\x7d\x03\xe4\xf5\xad\xf7\xa8\x2a\xbe\xc6\xd0\x6f\xbf\x5f\x55\xf5\x87\xa8\xe4\xc8\x58\x18\x00\x6b\x34\xe4\x21\x95\x15\xca\x7f\xf9\x18\x3e\xe4\xfa\x7f\xf7\xfe\x98\xd4\x20\x02\xfb\x80\x0f\x18\xff\xef\x5d\x57\xa7\x8f\xe0\xc9\xb3\xed\x9e\xf8\x8f\xff\xee\x0d\x96\xe3\x45\xf5\xc5\xec\x36\xbe\xb0\xd9\xc7\x07\x69\x1f\xef\xa3\xc3\x7f\xb9\x86\xdb\x0c\xbc\x80\xb4\x2a\xbe\x84\xb4\x29\xbe\x40\x05\xbc\xe1\x94\x16\x95\x3f\xa0\x45\xf5\x8d\x67\x6f\xbd\x50\x78\x00\xd4\xfe\x21\xe8\xcb\xe6\x21\x65\x97\x4e\xbf\x4e\x5a\x83\xf4\x7b\xaa\xfb\x14\x4b\xfa\x7f\xe9\xf8\xc3\xa5\xcd\xbc\x44\x0e\x26\x17\x90\xcf\xb3\xef\xcf\x96\xf9\xcc\xb7\xff\x0a\x89\x12\x1d\x1e\x43\x29\xee\x3d\xae\x0b\xd9\x10\x0a\x3a\x21\x07\xb9\x18\x7c\x99\x55\x0f\x4d\x7e\xf1\x9f\xe1\x55\xf3\x12\xb6\xef\xd0\xe4\x17\x7f\x48\xee\xbb\x16\x5d\xcb\x2d\xe2\x16\x21\x37\xbd\xaf\xe2\x04\xd9\x09\xbc\x13\xae\x85\x56\xf3\xad\x43\xd0\x0a\xad\x87\xcc\xb7\xe8\x87\xf9\x16\x0c\x9f\x7a\x7c\x88\xdc\x43\x5c\xfc\xd9\xd8\x20\x87\x5e\x3c\x05\x1d\xb4\x95\x70\x5a\xc3\x31\x03\x2b\x6a\xbd\x2d\x46\x60\x4e\x5b\xd6\x99\xaf\xc7\xda\xc8\x6e\x2c\xe1\xcc\x4f\xe1\x87\x8e\x59\xf8\x21\x0b\x79\x1c\x57\x71\xc6\xc0\x49\xb5\x9e\xc9\x92\x5b\x33\x69\x67\xbe\x9e\xcd\x90\xdd\x6c\x9b\x33\x8f\x33\xd3\x28\xa3\x13\xf2\x7a\x56\x12\xc4\x3a\x13\x8e\x56\xab\x55\x9c\x11\xb0\x58\xc5\x2d\xe2\x01\x56\x0e\xb4\xce\x42\x1d\xb2\x28\x88\x38\x50\xd5\x63\x3e\x41\x3c\x80\x6c\x52\x84\x5c\x8b\x0a\xf5\x50\x0b\x54\xab\x1f\x82\x3d\xd8\xb2\x56\xd6\x24\x4d\x4a\x4b\xe9\xf2\x5f\xc4\x21\x8b\x6a\x8d\x5a\xad\xf1\x21\x68\xc4\x5c\x4f\x6e\x22\xda\x7d\x4a\x76\x9f\xa3\xb2\x4b\xa0\x4b\xcf\x86\xac\x92\x67\x22\x2b\xa5\x89\xac\x5e\x20\xc8\xaa\x2d\xf6\x17\xb0\xd5\x0b\x04\x5b\xb5\xc5\x3f\x14\x5d\xb1\x4a\x59\xf9\xcb\x9c\x11\xd4\x00\xbf\x6f\x32\xb6\xfb\x0e\xf3\x35\x3e\xcc\x5f\xef\x70\x4c\x31\xf6\x32\x04\x5e\x36\xd7\x37\x28\x56\x44\x32\xf7\x18\x87\x51\x14\xe5\xd1\x42\x44\x1c\x47\x97\x01\xb8\x40\xed\x12\x6f\xd4\x79\xea\xcc\xf1\xac\x33\x8f\xf9\x80\xee\x81\x3c\x0e\x1a\x75\x4f\x90\x9c\xf4\x04\x9c\x79\xe2\x32\xe9\x1e\x5e\x10\x0f\xc8\x91\xb6\x74\xbb\x4c\x1d\xa4\x3e\xb1\x22\xf9\x40\x0a\x85\x93\xfd\xe5\xbe\x6c\xae\x1c\x16\xa5\x90\x8f\x49\x15\x19\xb0\x06\x30\xc1\xbb\x74\x00\xcb\x3f\x79\xfa\xaa\xed\xc7\xe0\x8a\x63\xdb\xaf\x7a\xfa\x27\x17\x3f\xfe\xda\xef\x5e\x7b\xfc\x62\xf8\x79\x4c\xaa\x91\xd1\x51\x23\x06\xea\x45\xe8\x18\x7e\xaa\xd2\xb8\x5d\x3f\x76\x4c\xbf\xbd\x51\x79\x6a\xd8\xfc\xd9\x8b\xdb\x5e\x7b\xfc\xe2\x8b\x1f\x7f\x0d\x3c\x33\x36\x0b\x71\xa8\x86\x80\xc3\x9c\x3e\x8d\x63\x7a\x50\x9d\x23\x16\xc7\xe1\xd1\x34\xc0\x81\x12\xe6\x08\x3f\x84\x09\x07\xe4\xb1\xdb\xc0\x6e\x8b\x1d\xbf\xa1\x0b\x54\xdb\x54\x34\x21\x0d\x82\x36\xfd\xaf\xd6\x68\x40\xa1\x51\x6b\xd4\x1a\x40\x1c\x12\x38\x6a\x7a\x88\xe7\xcd\xe1\xe3\xab\x88\xdc\x5a\x51\x94\xdb\xcb\xed\x45\x8b\xd1\xf9\xe8\x0a\x44\x3a\xc1\x2a\x03\x2f\x2b\xe1\x7e\x03\xf0\x6a\x2a\xbd\x73\x0d\x7c\x6e\x40\x3f\x0f\xf2\xc4\xa0\xad\x81\xbc\x7e\x2e\x22\x3e\xd4\x50\xb5\x8a\xcf\x13\x0e\xf8\x25\xad\x4a\xba\x42\xbb\xa8\xb7\x94\xaa\x55\xa4\xaf\x12\x05\x51\xe7\x63\xd5\x2a\x5e\x26\x1c\x60\x95\xdc\x42\x72\xb5\x5f\xd4\xf3\xe7\x90\x0e\x1f\x0c\x25\x98\x70\x02\xf8\xb0\x5c\x91\xc3\x09\x26\xac\xa9\xf3\x98\xfe\x79\x20\xf7\x57\x72\x95\xfe\x79\x4c\x7f\xb9\xaf\xc4\x64\x4b\x50\xc9\xe6\xf8\x5c\xb6\xc4\x64\xd3\x29\x3f\x63\xf7\x43\xce\xce\xcb\xbc\xdd\xcf\xd8\x6d\x04\x14\x4a\x21\x7b\x2a\xdb\x6a\x7f\x94\xf1\x45\xd8\x55\xdd\x83\x9f\xb0\x75\xf7\xda\xb2\x1d\xa9\x68\x29\x6b\x2f\x96\x6c\x9f\x9c\xd3\xb3\x8a\x8d\xf8\xe1\xb3\x36\xdb\x67\x21\x20\xb3\xab\x0a\x83\x9f\xb4\x75\xf7\xd8\xad\x3b\x6c\x6a\xc1\xf6\x89\x81\xe2\x2a\xb6\xc5\xcb\x3c\x6a\x87\xab\xee\xae\xdf\x7d\x77\xfd\x6e\x66\xbd\xd2\x99\xb5\xf7\x16\x6c\x9f\x1c\x28\x9e\xcf\xb6\x7a\x99\x47\x6d\xb6\x47\x19\x6f\x2b\x7b\x7e\x61\xe8\x93\xb6\x42\x2f\xf9\x72\x5b\x77\xd6\xae\x75\xd9\x3e\x39\xb7\x74\x3e\xdb\xe2\xb3\x1e\xef\x6b\x61\xcf\x2f\xcd\xfd\xa4\xad\x54\xb4\x67\x7b\x5a\xc6\xee\xbe\x7b\x6c\xfd\xdd\x77\x23\x84\x78\x54\x3b\x79\x92\xc3\xb6\x10\x6a\x99\x85\x40\x2b\xe8\x01\x54\x57\xc8\x58\x6b\x37\xea\x1d\x3d\x7d\xaa\xaa\xe2\x5c\xa9\xde\xa5\xf6\x6b\x9a\x86\xa3\x06\x96\x4b\x04\x54\xf8\x0a\xaa\x8a\x4b\x25\xea\xb7\xce\x29\xe1\xd6\x09\x62\x75\xda\x03\x7a\x86\x8c\x43\x15\x77\x10\x64\x5a\xcf\x74\x50\x0d\x85\x9c\x79\xdc\x11\x20\xfa\x08\xf7\x18\xb8\x27\xa0\xf7\x42\x1e\x77\xab\xb8\xcf\xc0\x5e\xb5\xde\xd7\x4b\x6e\xea\x0b\x3a\xf3\xb8\x2f\x40\x70\x26\x8e\x19\x7a\xb5\x19\x44\x21\x46\x64\xda\x92\xcc\x32\x27\x41\x41\x69\x02\x2e\xd2\x95\x82\x9a\x90\x26\x70\x33\xd8\xdc\xaf\xf9\x5d\x10\x1c\xe8\x84\x42\xe7\x00\x04\x5d\x7e\x9f\xfb\xf8\x5b\x6e\x5f\x8d\xdd\x39\xd0\x39\xb9\xa0\x73\xa0\x46\x75\x0c\xe9\x67\x96\xb6\xe1\x40\x75\xf9\x6b\x9d\x03\x03\x9d\x35\xbf\x4b\x75\xfb\x7c\x27\x6e\x20\x9d\xaf\x73\x70\xb0\x93\x79\x69\x72\x01\xf3\x12\x14\x6a\xc7\x0f\x5a\xbb\xcd\x38\x13\x02\x9b\xc4\xfd\x1c\xb9\x50\x01\xd5\x9d\x14\xaf\x6b\x40\xf0\xb9\x73\x82\x60\x75\x07\xc5\xd9\x44\x4a\x1e\xc8\xeb\x36\x87\x20\x62\xa0\x83\xd5\x09\xe9\xa9\xa0\x0b\x33\xce\xec\x6c\x98\x87\xc8\x3f\x66\x3d\xb3\x73\x72\xfb\xe4\x7e\xa2\x47\x98\x31\xd2\xdf\x89\x02\x7c\x9b\xc3\xc8\x87\x04\x94\x42\x75\x0f\x42\x79\x20\xbd\x1e\x26\xb0\xdd\xa8\xdb\x81\x08\xcc\xee\x70\xe6\xf5\xa0\x35\x9a\x28\x26\x9d\x96\x08\x08\x50\xf3\xb9\xe1\x5f\x61\xdc\xe7\x3e\xf1\x35\xb7\x8f\x19\x83\x42\x0b\x77\xb7\xdb\x67\x7a\x26\x2f\x75\xfb\x7c\xac\x48\x78\x27\x3a\x96\x43\x1c\xf7\x2c\xf7\x2c\x72\xa3\x20\x6a\x41\xf7\x22\xe2\x83\xfb\x0d\x1c\x22\x4a\xb6\x2e\x87\xc8\x6b\x64\xc9\x99\x27\x10\x83\x33\xa8\x63\x08\x13\xd8\x6b\x60\x6f\x40\x0f\x41\x7e\xd6\x4d\x2d\xce\x3c\x96\x03\x64\x70\x63\x9e\x3a\x8d\x7a\xc8\x2b\x88\x07\x5c\xac\x2f\xd8\x2e\x57\x75\x41\x16\xc4\x03\x4e\xce\x4f\x7c\x5d\xa4\x87\xfc\x82\x78\x80\x47\xde\x00\xb9\x14\x24\x97\xec\x20\x78\x9a\x8a\x58\x6c\x4f\x72\x62\x80\xe1\x92\xed\x62\x53\x01\x07\x89\x86\x90\xb8\x7d\x20\xc2\x02\x10\xf7\xed\x33\x7f\x6f\xbe\x64\xfe\x3e\xfc\x3e\x5c\xf8\xfe\xfb\xe6\x57\x17\xd7\x1a\xf0\xf7\xb3\x2f\xec\xdb\xc7\x5c\x6e\x7e\xf5\x7d\x72\x79\xd2\x84\x71\xf3\x10\xf5\x15\x98\x93\x4f\x20\x64\x0b\x71\x98\xea\xab\x62\xd3\xcb\xe2\x35\xc2\xb1\xc7\x20\xee\x14\x6b\xd4\x59\x3f\x0d\x3c\x80\x93\x74\x61\xa2\xc7\x9a\xda\x2a\x0d\x1a\xab\xb1\x1a\x28\x6c\x9a\x0d\x6a\x6c\xba\x06\xcf\xff\x58\xfa\x52\xe8\x47\xf0\xfc\xe4\x5b\x9d\xef\x75\xf4\x1e\x8e\x7e\x95\xc3\xe6\x21\x28\x1c\x5f\x45\x6d\xc1\x51\x2b\xee\xc3\x34\x31\xba\xf5\xce\xa5\xa8\xee\x26\xef\xb4\xde\xe6\x34\x30\xa8\x33\xaa\xb2\xce\xf1\xe4\xd5\x1c\xb2\x54\xbf\x17\xf2\xd8\x45\x75\xa5\xce\x73\x82\xa8\x33\xce\x6a\x15\x7b\x05\xdd\xe1\xa1\x51\xb1\x5e\xe2\x56\x09\x8a\xa0\x81\xe5\x7b\xc1\x6f\xcd\x37\x89\xfe\x34\xdf\x84\xdf\x9a\x47\x9e\x7f\x9e\xc6\xf1\x8e\x9a\x1e\xf3\x90\xb9\xb5\x51\xa3\x79\x1e\xe0\x9e\xe7\x9e\x47\x7e\x24\xa3\x38\xda\xd4\x44\x90\x41\x3a\x96\x6d\x06\xe0\x04\x6d\x58\xc1\xc0\x82\x65\x48\xdb\x0c\xdc\x16\xd0\x25\xc8\x13\xe0\x98\x24\x26\x55\x10\xc4\x83\x5e\x4e\x94\x29\x36\x68\x13\x70\xbc\x8a\x25\xf1\xa0\xc7\x16\x0c\xc7\x68\x9b\xca\x41\x41\x7c\x01\x1c\x4e\xd4\xda\xb4\xa8\x7d\xc3\x8c\x1a\x67\xa8\x29\x82\xa9\x96\x64\xa9\xb2\x67\xe1\xf2\x7d\x6f\x1e\x7d\x73\xdf\xe5\xd6\xe6\x92\xf7\xe0\x82\xf7\xde\x33\x9f\x5d\xb5\xb7\xb1\xf7\x18\xcc\xba\x70\xf9\xe5\xfb\x18\xc6\x7c\xf6\x3d\x72\xdd\xa4\xc3\xd5\x3c\x74\x5a\x9f\x6d\x45\x1b\xa7\xfa\x6c\xb3\x8b\x46\x67\x75\x51\xc2\x49\xc4\x20\x0e\x6e\xb3\x5f\xb6\x11\x4e\xbc\x82\x78\x90\xf4\xcb\x10\xe1\x24\x22\x60\xa9\x8a\x05\xf1\x20\xe9\x9c\x61\xca\x49\xd0\x4f\x38\xb1\xf3\x88\xe2\xa0\xb3\x77\x49\x36\x0a\x69\x21\x2d\x7c\x50\x9f\x5c\x79\xec\xd8\xde\x0f\xee\x95\xe6\x15\x16\x2f\xb4\x93\x30\xd3\x31\x05\xc2\x4f\x67\x53\x9b\x78\x0c\xe2\xa6\x06\x4b\x98\x31\x00\x87\x4a\xa4\x25\x90\xee\x71\x0a\x62\x9d\x03\x1f\xc5\x64\x65\x21\xa8\x44\xa7\x74\xa1\x26\x2b\x15\x8d\x55\x1a\x6c\xf2\x1f\xc0\xe7\x3e\x7e\xaf\xdb\xd7\x68\xa8\x50\x50\x1b\x1b\x27\xbf\xd4\x02\xff\x4a\x34\x97\x99\x71\xfb\x7c\xf0\x56\xa3\x01\x47\x4f\x91\xa1\x84\x22\x68\xd1\xac\x71\x4f\x64\xd8\x42\x65\xe8\x31\xb0\x67\x5a\x72\xad\x90\xd7\x05\x8f\x20\xbe\xc0\x39\x5d\x6c\x38\x32\x3d\x8c\xa9\xa0\xc2\xf2\x19\x82\x0a\x36\xf1\x48\xd2\x0e\x82\xed\x83\xc4\xf4\x3e\xcc\x85\xce\xd3\xc5\x04\x07\x9f\x7d\xef\xbd\x67\x9f\x79\xff\x7d\x73\x17\x3c\xd4\x40\x30\x8d\x99\xda\xd0\x1a\x84\x6d\x25\xd2\xb6\x42\x09\xb7\x18\x40\x9c\x7b\x98\x20\x74\xfb\x03\xba\xcb\xea\xab\x71\xc8\xeb\x2e\x42\x97\x8d\x0b\x86\xe4\x16\xd2\xc4\x4e\x41\x97\xc2\xc4\xe6\x0b\xa4\xe5\x01\x39\x43\x12\x39\xdd\x22\x60\x4a\x74\x28\xce\xa8\xc3\x4c\x39\x1d\xb2\x27\xb3\x81\x7e\x4d\x95\x79\x45\xe0\xb3\xe9\x94\x0f\xe4\x26\x48\xda\x7b\xcc\xfc\xdb\x63\xc7\xf4\xfb\x6f\x78\x18\xc6\x1f\xfa\xfc\xab\xdb\x5e\x7b\x9c\xf9\xe7\xdf\x59\xb0\x68\x9b\x7e\x8c\x20\xaa\xf3\xc9\x95\x3b\x2f\x7e\x1c\x59\x18\x0f\x51\x7a\x03\x48\x41\x77\xa2\xba\x40\xda\x33\x51\xc2\x61\xa3\x1e\x4e\x90\x31\x1e\x6e\x75\xe6\xb1\x97\x8c\xbb\xba\xd7\x46\x4e\x78\x91\x33\x0f\x38\x65\x05\x27\x0c\x1c\xb0\x3a\x6e\xab\xa1\xa7\x21\xaf\x07\x08\x8c\x11\xc4\x2a\x21\xf8\x45\xde\xe6\x76\x05\x43\x09\x85\xd0\xdf\x2a\xea\x4e\x07\x61\x2b\x9c\x10\x44\xac\x50\xf5\xe0\x24\xf7\xd9\x44\xcc\x57\xad\x90\x9d\xa6\xca\x15\x41\xa9\x64\xd3\x29\xbb\xc4\x0a\x0a\x1f\xd6\xd4\xfe\xb2\x16\xf2\x31\xe9\x54\x8e\x70\xb7\xed\xd5\xcf\x3f\x64\x6e\xfd\xf4\xd6\xfb\xf4\x63\x4b\x60\x9c\x6e\xf7\x5a\xa7\x99\x31\x02\xfc\xee\x24\x57\x57\x1d\xd3\x89\x69\x22\x5b\x7a\x0e\x21\x17\xb1\x4f\xb4\xcf\x9e\x2d\x8e\xb5\x0a\x61\x47\x09\x47\x34\xa2\xe2\x5a\x55\xec\xa1\x89\x01\xaf\x81\x63\x2a\xd1\x76\x49\x8d\xa8\x19\x45\x25\x7d\xad\x5d\x23\xd8\x3d\xa3\x52\x17\xc7\x31\x51\xf7\x04\x42\x04\x6c\xb8\x8d\xba\x4f\x0c\xab\xaa\x4a\x00\x03\xea\xe9\x25\x96\x8d\x98\xfb\x4c\x59\x93\x72\xb3\x7e\x83\x4a\x59\x19\x02\x45\xca\x94\xad\x5f\x2b\x66\xc4\xee\x3c\x71\x78\x2a\x48\x44\x74\xe0\xcc\x2f\x87\x8f\x1f\x64\x77\xd2\x18\x52\x63\xea\xff\xe4\xfe\xda\xf4\xe1\x2c\x7d\x4d\xf0\xd0\x52\x54\x97\x49\xdb\x25\x2d\x8c\xd3\x5e\xc2\xb6\x09\xdc\x6a\xd4\x6d\xad\xa4\xd1\x6c\x44\x53\xb7\x06\x88\xa9\xc3\x3e\xa3\xee\x8b\x92\x93\xbe\xa0\x33\x4f\x00\x10\xd2\x93\xc4\xaa\x71\x3e\x5b\x2b\x1d\x19\x65\x81\xf8\xce\xd3\x30\x46\x9b\x15\x4d\x52\xca\x4d\x78\x3e\xd0\x59\xdb\xb6\x1a\x0a\xab\xb7\x51\x20\x72\x62\x7b\xe7\x00\xd1\xe2\xd4\x6f\xad\x31\x63\x9d\x03\x8d\xd5\xdb\xb6\xad\x6e\x0c\x74\x4e\xee\xef\x1c\x18\x60\x7e\xbd\x97\x22\xf1\x26\x56\xa0\x71\x20\x16\x49\x48\xb6\xec\x1a\xe0\x30\xed\x4d\xac\x41\xf3\x09\x3d\xbd\x44\xef\x06\x87\x21\xce\x0c\x43\x45\xf0\x41\x91\xb5\xf3\xb5\x5a\x6d\xf0\xbe\xdb\xb7\xdf\x7c\x6d\xad\xb3\xe3\xa3\x3b\xc7\xef\xbb\xf5\xa2\x10\x91\x1f\x8c\x0f\xf6\x78\x95\xa8\x6d\xe5\xf9\x70\xf4\xfc\x85\xae\x8e\x0e\xd7\xc2\xf3\x51\xb3\x72\x80\xb4\xf9\xa3\x48\x41\xbd\xe8\x1c\x74\x15\xaa\x97\x88\x74\x86\x35\x9c\x35\x70\x3f\x6d\xe7\x98\x01\x78\xb4\xe9\xcb\x10\x2b\x96\x82\x3c\xce\x1b\x38\x1f\xd0\x55\xc8\xe3\x01\x03\x0f\x04\xf4\x00\x85\x0d\xfa\x7c\xc8\xeb\x6a\x5e\x10\x0f\x78\xdc\xb1\x36\xaa\x4d\xb2\x25\x41\x3c\xc8\x07\x82\x21\x96\xf4\x6e\x8f\xa0\x3b\xfc\x44\xcf\x09\xd3\x5e\xcc\x30\x24\xe3\x20\xcd\x1c\x17\x99\x94\x8f\x91\x82\x82\x15\x96\x20\x02\xcd\x43\x2a\x9b\x39\xed\xd8\xe7\x56\xdd\xbe\xdd\xff\x06\xf6\x7f\xdb\x4d\x77\x37\x7d\xf9\xcd\xb7\xdf\xfc\xf2\xa6\x86\xc7\xb1\xcf\xe1\xa1\x1f\xcc\xd8\xcc\x3e\x04\xdd\x3e\x9f\x1b\x0a\x1f\xfb\xf1\xcd\x37\xff\xf8\x63\xe6\x21\xeb\xe8\xd6\x37\xbf\xbc\x69\xd3\x97\xdf\xbc\x75\xf2\x35\xf8\x01\xb9\xd1\xec\x23\x9f\xb3\xf6\x9b\x7a\xbc\xc1\x8d\xb1\x6f\x23\x1b\x12\x10\x12\x14\x9b\x60\x53\xa0\x92\xab\xc8\x15\x99\x97\xf9\x1c\x0f\x05\x4b\xeb\x33\x78\xf7\xee\xc5\x53\xff\x61\xbc\xc1\x26\x1b\xe6\x33\xb3\x4e\x4d\x3d\x8b\xdd\x4a\x9f\xe5\x47\x22\xa2\x30\xc1\x37\x41\xf4\x9b\xd0\x4c\x82\x90\xa7\x67\x2a\x61\x29\xc4\xe7\xfa\xcb\x7d\xd3\xcf\x7e\x69\xe1\x8d\xd7\xce\xbf\xd0\x7a\x6a\xb5\x7c\xdf\xf3\x7f\xf7\x89\xfe\x1b\x76\x3d\x3c\xd5\x7e\xdf\xe4\xae\x60\xff\x44\x9f\x19\x43\x83\x34\x6f\x05\x06\xe0\x78\xf3\xd9\xd8\x19\x20\x70\x92\x28\x9e\x04\xe4\xf5\xa0\x53\x10\x0f\x04\xc2\xb2\x65\xde\x01\x11\x00\xe7\x0b\x5a\xfd\xb9\x05\x94\x8c\x90\x81\xe9\xf7\x57\xe4\xb0\x14\xf2\x83\x5c\x21\x9e\x11\x58\xd4\xc0\xc3\x94\x96\xcb\xf8\x8f\xde\xc6\x9f\x6f\xdf\x33\x6e\x87\x87\x60\xbc\x71\xe2\x70\x03\xbe\x5f\xbe\xef\xf9\xaf\x7e\xa2\x72\xc3\xae\x87\x0c\xc7\xa3\xdf\xf9\xd6\x5e\xc7\xa8\xa3\xfe\xab\xb7\xea\x8e\xe9\xf8\x38\x46\x3c\x12\x90\x84\x5a\x50\x0c\x29\xd4\x27\x99\x87\xe6\xa3\xc5\x68\x19\x5a\x09\x60\xf5\x70\xbd\x67\x81\xa6\x61\xd1\xa8\x77\xf6\x2e\x24\x3a\xa3\xb5\x54\xcf\xe5\x97\x5b\x0e\x4a\x3d\xd3\x7d\x1e\x39\x97\x2a\xe9\x8c\x5d\xd3\x70\xda\xc0\x0e\x15\xc7\x4b\xba\xef\x5c\x4d\xc3\x8a\xa1\xf7\x2d\x51\x55\xc0\xab\x88\xd3\xa2\xdb\xe2\xaa\x4a\xfc\x0d\x36\x41\xb6\x56\x74\xcc\x4b\x5c\x1b\xcd\xc0\x65\x15\x6b\x01\xbd\xe8\xce\xe3\x2e\x1a\x72\x19\x51\xeb\x45\x1a\x67\x29\xa6\x9c\xf9\x3a\xb8\xfd\xe4\x2d\x99\x80\x5e\x81\xbc\xbe\xe0\x5c\x55\xc5\x03\x86\x9e\x5d\x4a\xb6\x01\x7d\x39\xe4\xf1\xa8\x8a\x57\x1a\xf5\xea\xd0\x22\xa2\xcb\xce\x87\xbc\xde\x13\x13\xc4\x17\x42\x52\xa4\xa5\x6f\x1e\x81\xbe\x95\x8c\x20\xd6\x3b\x3a\xe7\x54\x89\x1a\x4f\x45\x05\xf1\x40\x30\x34\x87\xfa\xa9\x69\xa1\xce\xcd\x1d\xa8\x56\xab\x38\x2e\x8e\x38\x6d\xe1\x96\xfe\xca\xe0\xd0\xc8\x7c\x2a\xfc\x5e\x45\x48\x97\xd3\x52\xba\xac\x95\x95\xb2\x56\x4e\x5b\xca\x11\x04\x45\x60\xcb\x9a\xc4\x12\x38\x58\x56\x04\x2b\x22\x43\x6e\xb2\xce\x0a\x9a\xa0\x90\x43\xeb\x6e\xb6\xac\x48\x40\x54\x68\x59\x93\xe0\x28\xf1\xbb\x61\xbc\x56\x33\x3d\x14\x65\x11\x47\x9c\x28\xcf\x82\xe5\x91\x5b\x31\x7a\x28\x34\x1a\x93\xfb\xc9\x86\xdc\x42\x75\x6b\x53\xc7\x16\x8e\x1f\xa4\x39\xc4\x97\xc8\x27\xd1\xa7\xcc\x4b\xe4\x49\xf4\xa6\x5a\xc3\xf4\xd4\x6a\xec\xdb\xa4\x73\x36\x88\x3a\xde\x4a\x6e\x22\x0a\x9a\xdd\x59\xab\x4d\x2e\xb0\xe2\xf8\xce\xe9\x76\x3f\xd3\x9e\x6c\xb5\xbc\x9f\x3a\x17\x6a\x23\xad\xeb\x35\x74\x29\xa6\xaa\xf4\x1c\x45\xae\xed\x34\x69\x68\x45\x18\x88\x6e\xf1\xa8\x04\xd6\x12\x3c\x18\xd0\x43\x6e\xa2\x6b\x88\x5f\x12\x71\xe7\x89\xe7\x1a\xb5\x22\xfe\x69\x83\x28\x69\x3d\xe0\x16\x44\x9d\xb7\x57\xab\x7a\x54\x16\x44\x9a\xce\x40\x3d\xbd\x65\xe2\x42\x96\x15\x29\x27\x68\x82\x4c\x2c\x8d\xa0\x09\x52\x59\x93\xca\xcd\x2d\x39\xa6\x6c\x37\xa6\xad\x48\xa3\xc1\xbe\x7d\x7c\x55\xad\xd6\x60\xdf\x3e\x11\x69\x5c\x7c\xf1\x59\xb7\xa7\x60\x3d\xde\xc2\x7a\x7c\x33\xa2\xc5\x51\x94\x47\xc0\x8c\xd3\xb0\xb0\x9e\xc8\x0b\x62\x1d\xd9\xdd\x14\xeb\x09\x41\x62\x39\x9c\x80\x42\x72\x58\xad\xf4\xf7\xe5\xb2\x29\x1e\xfc\x2e\x78\x83\x79\xc9\xf4\x4c\xfe\x2c\x16\x5f\x13\x8f\x91\x0f\xe6\x25\xf8\x57\x97\x7f\x72\x81\xe9\x61\x7f\x75\x41\x2c\x1e\x8f\x91\x0f\x3a\xf6\x01\x21\xdb\xcf\x9b\xef\x6d\x41\xbd\xcd\x37\xcb\x9a\xf5\x72\x1c\x52\xa7\x7c\x3b\xa7\x95\xf1\xa3\xef\x3f\x88\xec\xee\x70\x0b\xed\x73\x51\x38\x93\x82\x8c\xe6\x84\x1c\x00\xf8\xdc\x4d\x42\x7e\x6a\xbd\x30\x76\x41\x8c\x71\xd7\xc8\x19\x15\x5e\x26\x24\xb9\x7d\xa7\x91\x84\xc9\xb1\x0a\x2f\x4f\xe5\x1e\x2d\x99\xb8\xd0\xbc\x29\xaf\xcc\xc2\xbd\x6e\x6a\x4a\x5c\x06\x76\x9d\xe2\x4e\xbb\x90\x20\xd6\x19\xde\x41\x47\x0d\x4f\x0e\x80\xb3\x51\x39\x69\x42\x45\x11\x78\x41\xe1\x15\xa1\xf6\x3c\xfb\xf9\xda\xa4\x58\x63\x7e\xcf\xc1\xf3\x27\x22\x35\xf6\xed\x1a\x6d\x02\x04\xa8\x41\xed\xa5\x8e\x5c\x08\x69\x4e\x10\xfa\xb2\x69\x25\x65\x97\x1a\xf0\x32\xbc\x1c\x93\x4e\x1c\x96\x62\xf0\x92\xb9\x90\xbb\x3b\x14\x8f\x87\x66\xd9\x3d\x82\xcf\x65\x94\x43\xeb\x51\x3d\x43\x68\x6c\x33\x08\x66\x66\x8d\xba\x8b\x9d\x2a\xad\xc0\xbc\x5a\x67\x5d\xa7\x78\x90\x1d\x94\x05\xb7\x81\x19\x95\x74\x50\x87\x15\x1b\xe1\xad\xd0\xac\xc3\x4d\xec\x9f\x3f\x97\xb2\x22\x79\x65\x81\xc2\x78\x21\x5d\x56\xa4\xa0\xac\x54\xd8\x22\x10\xca\x78\xb6\x32\x0c\x04\x37\x24\x20\x4c\x21\x43\xa3\xc6\x8c\xd5\x1a\x8d\x13\x87\xcb\x1d\xcc\xaa\xe1\xcb\x98\x80\xcb\x1c\x76\x05\x98\xd1\x2c\x13\x74\xc1\x51\x57\x90\xc9\x32\x6e\xd7\xe4\x7e\x17\x69\x83\x46\x63\x72\x41\xa3\xc1\xbc\xbe\x7d\x3b\x5c\x44\x6c\xd9\xf1\x1d\x9f\x75\xf9\x7c\x2e\xf2\x71\x4a\x7d\x40\x0c\x65\x50\x37\xea\x45\x37\xd2\x6a\x84\x8c\x81\x3b\x4b\xb8\xdb\xc0\x4a\x09\x07\x0d\xc0\x2a\xe5\x22\x61\xd4\x13\x34\x3e\x99\x28\x39\xf3\x38\x11\xd0\x73\xd4\xbc\xeb\x1a\xe4\xf5\x04\x12\x44\xdc\x52\xd5\xf3\x39\x41\x3c\xa0\xb4\x67\x92\xd4\x68\x74\x77\x0a\xe2\x81\x44\x2a\x4d\x3c\x42\xac\x08\x7a\xb1\xb7\x5a\xc5\x41\xf1\xa0\xbb\xa5\xb5\xd4\x63\x01\x23\xab\xba\xc1\x8a\x51\x16\xb9\x3c\xa4\x7c\x8c\x9f\x56\x39\xa0\xbe\x7e\x35\x1c\xb2\xa7\x98\x50\x58\xed\xef\xcb\xa6\x08\xf8\x1b\xe8\x64\xdf\x26\xe0\x68\x2f\xe7\xd7\x2a\x6b\xba\x1a\x9d\xab\xe7\x16\xdd\x9e\xbd\x9d\x03\x50\x1b\x6f\x8c\x8f\x37\xec\xc3\x63\xc3\xc3\x63\x30\x56\x6b\x90\xbb\x08\x68\x72\x44\x17\x96\xf3\x9d\x03\x03\x52\x68\xa0\xd3\xdc\x4a\xee\x19\x87\x24\xb9\x69\xf8\x32\x8a\xf7\xca\xb4\x6d\x9f\x47\x71\x94\x42\xf1\x66\xef\xf3\x6a\x38\x6e\xd4\x19\x0f\xd1\xee\x80\xd3\x25\xbd\xbd\x89\x42\xcb\xa9\x22\xcc\x03\x45\x0e\xdb\xd3\x92\x52\xce\xe6\x8a\x50\x02\x48\x83\x9d\xf7\x81\x1f\x20\x28\x07\xcb\x70\x7d\xe7\x70\x7b\xf0\x12\xb8\x6f\x75\x20\x5f\x86\x2f\xa6\x3a\xc4\xb8\xdd\x6e\x7e\xec\x52\xf3\xa6\x48\x9b\xa7\xcb\xef\x87\x2d\xf5\xe2\xad\xa3\xe1\xfe\xc2\x6f\xdf\xec\x5e\x37\x3a\x0a\x5d\xc1\xa2\xcf\xcb\xbe\x75\x42\xec\x89\x7a\x5a\x79\x1e\xfe\x01\xbe\xff\x29\xf3\xbb\x88\xa5\xf1\x9f\xef\x72\x18\x25\x51\x27\xea\x45\x9b\x51\x3d\x49\x28\x53\x0c\x6b\x0b\xb4\x7d\xba\x0c\xdc\x5b\xb2\x3c\x5d\xec\xb6\x5a\x89\x9b\xc0\x8a\x41\x8c\x95\x12\xd0\x8b\x90\x27\xde\x44\x26\x39\x21\xe0\x36\xab\x95\x32\x45\x41\xc4\xe1\x2a\xd2\x3b\x15\x41\xc4\x6d\x55\xdc\x25\xe0\x70\x15\xf7\x8a\x38\x40\x46\x4f\x99\x16\x47\x14\xd9\x5c\xd9\xa6\x86\xa5\x10\x69\x89\x38\x27\x85\x7c\x90\xce\x11\xbf\x81\x34\x51\xd9\xda\x49\xd7\x3a\x07\x18\x67\xb8\x3d\x01\x3f\xbd\xfd\x9b\xb2\x92\x72\x7b\x1c\xd1\x85\x7d\xf9\x6d\x4f\xad\x6c\x7c\x71\xfd\x3d\x77\x5d\xf6\x85\xbf\x59\x7e\xdd\xfe\xc7\xd7\xf3\x5a\x07\x3b\xd0\x26\xc7\xbc\x7e\x7e\x31\xe0\x4f\x55\x2e\xad\x74\x38\x78\xd6\xa3\x9d\xb3\x6d\xd1\x05\x0f\x9d\xd7\xd8\x78\xc1\x45\x3b\x6a\x1f\x3d\x6f\xf5\xc6\xe9\x71\xc9\xde\x48\xb1\x77\xb2\xd9\x12\x40\xd3\xb4\xee\x12\xf6\x69\xd8\x43\xc3\x4f\xcd\x72\x04\x42\x6a\x25\xd8\x4f\x9a\x20\x57\x56\x64\x1f\xeb\x07\xd6\x1e\x96\xa5\xc6\x79\xb7\x38\x9e\x73\x75\x2c\xb6\x3b\x6d\xf0\x77\x8c\x32\x37\xd5\x62\xb3\xdd\xe3\xea\x59\x5c\xe5\xe7\x97\xd8\xf3\xe7\xb4\x07\x81\x85\x6a\xd5\x91\xce\x65\x3c\x9e\x13\xff\xd0\x37\x68\xaf\x22\xe6\xe4\x0b\xcd\xb8\x90\x13\x65\xd0\xdd\xa8\x1e\xb5\xfc\xb5\x3a\x63\x0b\x13\x83\xe3\x31\xea\x09\x0f\xed\xf5\x01\x67\x1e\xbb\x54\xc0\x59\xaa\x28\x2d\x84\x4b\xbc\xce\x8c\x41\x30\x40\x8c\xc6\x1a\xea\x11\x9a\xc8\x89\xb4\x3a\xf3\xf5\x58\x84\x26\x72\xa2\xce\x3c\x8e\x58\xb6\xc9\x6f\x90\x31\xa3\xbb\x78\x41\xd4\x6d\xd4\x77\x4b\x44\xad\x9c\x84\x47\xc0\x5c\xb5\xa7\x37\xa7\x09\xe9\x8a\x9c\x16\x34\x3e\x28\x68\x8a\x26\xa4\xfb\x8a\x6c\x1e\x04\x59\x52\xca\x15\x21\x9d\xf2\xb1\xd2\xb2\x65\xcb\xee\xba\x6b\xd9\xb2\xbb\x8e\xed\x65\x5e\xda\xab\x06\xa4\xa2\x92\x6a\xd4\xcc\xad\xb5\x46\x4a\x29\x85\x84\x06\x9b\x7c\xfa\xe9\x13\x87\x9f\x66\x37\x11\x33\x1b\xcb\x49\x4e\xe6\xc4\xd7\xd4\x5a\x4d\x65\x57\x33\x4e\x29\x17\xa3\x36\x48\x39\xf9\xf7\xdc\x83\x9c\x4e\xf9\x7d\x00\xd5\x1d\x84\x5f\xc6\xa0\x2e\xea\x6c\x76\x5d\xce\x3c\xf6\x5b\xec\xba\x26\xfe\x7a\x26\x63\x19\x41\x3c\xc0\x38\x9c\x40\x80\x4e\x20\x42\xbc\x21\x3b\xcf\x52\xb5\xc0\x38\x04\x51\x47\xb6\x6a\x15\x27\x84\x3a\x70\xad\x54\x77\xcf\x03\x49\x29\xcb\x7c\x59\x91\xd8\x0f\x60\x5d\x79\xda\xe2\xae\x66\xb1\x1e\x2a\xcd\xb0\x5e\x94\x02\xda\x5d\x96\x64\xd8\x1f\x4e\xb3\x3e\xb9\x8d\xb0\xce\xec\x9a\x62\xbd\x59\x2f\x30\x3b\x9f\x8a\x9a\x0a\x68\x08\x9a\x66\xe0\xaf\x3d\x8e\x49\xdc\x72\xe2\x89\x1d\x3f\x48\x3e\xd9\x24\xf9\x24\x36\x24\x26\xb1\x6f\xd3\xfd\x08\xcd\x60\x8e\xd1\x0c\xe6\x7e\x29\xa6\x12\xb3\x42\x33\x2e\x8d\xbf\xb8\xf7\x5f\xa1\x55\x38\xed\x38\xf8\x21\xd7\x4f\xa5\x75\x66\xbf\xf1\x81\xe9\xd6\x69\x72\xe0\xe8\xf4\xae\xb9\xf5\x6c\x67\xcf\x42\x6f\xb6\x19\x65\xe4\x0c\xdc\x5d\xc2\xed\x06\x8e\x95\x70\xc8\xc0\x43\x25\xdc\x67\x00\x1e\x29\x35\xeb\x2d\x86\xe0\xd4\x3c\x71\xb0\xfc\xd7\x1d\xcf\xe6\xa4\x36\x5b\xec\x8d\xd9\xed\xd1\x38\xa5\x11\xac\x94\x57\x28\x1e\x67\xae\x9b\xde\x35\xdf\x3e\xdb\xd9\xbf\xcc\x97\xc5\x91\xc5\xdd\x87\xf1\xf5\x61\xf9\xf1\x33\xf3\xe5\x67\x6f\xad\x0f\xda\x9f\x61\x0a\x46\x3e\x64\x97\xb0\xe4\x38\x6b\x6d\xc1\x8d\xe8\x63\x68\x75\x93\xbf\xe5\xb4\xbe\x60\x01\xad\xa1\xb9\x84\xd6\xd0\x5c\x40\xeb\x0b\xae\xa3\xf5\x05\x35\x95\x70\xbc\x5d\xc3\x7d\x06\xbe\x55\x05\x7c\x0f\xc1\x08\xf5\x40\xb2\x47\xa5\xd5\x06\xf5\x48\xc7\x1c\xe2\xf5\xec\xf8\x7f\xaa\x0c\x39\x5b\xe5\xc7\x7f\x4f\x96\x53\x49\xce\xbf\xfc\x01\x85\xd3\xc6\xf0\x87\xee\xff\x15\x52\x3f\x31\xfe\xd7\xb4\x90\xfd\xe4\xe3\xcd\xf6\xb1\x23\x17\x6a\x45\x5d\x68\x2e\x5a\x8a\x92\xd4\x6b\xcf\xd2\x6a\xb7\xa2\x0a\x78\x59\x89\x38\x9a\x96\x7b\x4e\x2d\x08\x5b\xd6\x88\x16\xa5\x79\xb0\xbf\x5e\xb5\x9d\x52\xf0\xb1\xf9\xfb\x4f\x3d\x45\xdc\x1b\x32\x72\xc8\x38\x27\x23\x27\x26\x41\x81\xec\x9b\x87\x66\xc6\xbf\xe9\x99\xa2\x9a\xa8\x02\x38\x5a\x23\x7a\xd8\xf4\x70\xcb\x8f\xbf\xf5\x5f\x55\x76\x74\x92\x01\xf1\x51\xa4\x59\xfd\x71\x3e\x5a\x8a\x64\x54\x1f\xa1\xf1\xac\x65\x25\x3c\x32\x81\xe7\x1b\x94\xdd\x9e\xde\xca\x7f\x93\x37\x10\x34\x21\x28\xd3\x72\x34\xf8\xeb\xf8\x63\x93\x35\xe5\xe9\x46\xe3\xbf\xaa\xc7\x8f\xbf\xc5\x2d\x3f\x7e\x90\xc9\xde\xb5\xac\xb6\xac\x19\x23\xc2\xec\xdb\x34\xaa\xd3\x4d\x2b\x17\x39\x83\x7a\x7f\x41\x0a\xb1\x9d\x86\x1e\x82\xbc\xee\x44\xb4\x1e\x03\xe9\x9c\xb7\x19\xfc\xed\xe9\x3d\xbd\xcc\xcc\x09\x42\x21\xc1\xfc\x3e\x51\x28\x24\x26\xc5\x44\x81\xdd\x09\x05\x08\x32\xbb\xe8\xf1\xb6\x44\xa1\x00\x35\xab\x70\x97\x9d\x35\xce\x65\x94\x20\xfe\x8b\xb7\x19\x91\x9e\x4a\xe5\xd2\x3a\x8a\x53\x62\xcf\x31\x03\xc7\xa6\xd3\x3f\x0a\xb1\xe6\x2d\x82\x88\x85\x2a\x96\x04\x3d\x28\x52\xe0\xe2\x15\xc4\x7a\x20\x28\x55\xab\x55\x1c\x15\x70\xa8\x7a\x66\xe1\xdc\x3c\xb0\xe5\x20\x28\x28\x62\x13\xc9\xb7\x8a\xdc\x58\xb0\xa5\x25\x78\x7c\xbf\xd8\x5a\xfb\x13\x74\x2d\x85\xcc\xef\x4e\x44\xae\x5b\xb1\x75\xc5\x8a\xad\x05\xf6\xa8\xd8\xda\x2a\x9e\xf0\x88\xad\xad\xef\xfe\xfd\xc7\x9f\x80\x61\xf3\x30\x1c\x35\xff\x99\x5c\x5b\x81\x18\xf4\x99\x93\xef\x73\x6d\xdc\xb7\x50\x08\xc5\xd1\x50\x93\x83\x98\x45\x7b\x82\xd2\x6e\xd5\x80\x44\x21\x8f\x1d\x56\xc2\x2a\x2a\x09\xa2\xee\xe5\x08\xad\x31\x42\x2b\x8f\x22\x14\x67\x04\xfb\x86\x41\x53\xe3\x10\xa2\xa8\xbd\xc8\xe5\xb2\xa4\x2f\x51\x17\xc3\xfe\x99\x3b\x7e\x7c\xe7\x47\x7f\x74\xc7\x92\x25\xff\xa3\x5a\x75\xa5\x36\x5d\x7a\x4b\x7e\xde\xcb\x8f\x5e\xbb\xe5\xd1\x47\x27\xf6\x32\xbf\xd9\xfe\xd3\x1d\x77\xbf\xf6\x7f\x1f\xb9\xf9\xff\x8e\x8e\x3a\x53\x5b\x6e\xdc\xb7\xec\x6f\xf6\xd2\x2b\x8f\x36\x67\x73\x35\xf3\x6b\x12\x5a\x32\x93\x5d\x0b\x59\xd9\xb5\xf0\xac\xec\x5a\xd0\x12\xaa\x0c\x79\x3d\x28\x34\x49\xc4\x4e\x41\xb7\x79\x08\xa9\xa1\xa0\x20\x1e\x00\x87\x13\x9d\x35\x87\xa6\x09\xa9\x53\x53\x67\xe7\x1d\xc7\xf8\xf4\x8c\x99\xd3\xfc\xdb\x63\xec\x85\x88\x41\x1f\x41\x1c\xfb\x0b\x9b\x1f\x85\x51\x06\xa1\x60\xdf\x30\x5b\x89\xdb\x09\xaa\xe7\x8b\x4c\x25\x0e\x72\xa5\xc8\xe4\xb2\xfd\xf3\xc0\x07\x1f\x59\x70\xfd\x2d\xb7\xc4\xa5\x25\x2b\xd7\x9d\x37\x2f\xb3\xe2\xee\xcf\xad\xbc\xf9\xbb\xf7\xdc\xed\xbb\xf8\xe2\x00\x1f\x2e\xba\xfc\x8c\xd3\x79\x49\x05\xf6\x5e\xf6\xf5\x2f\x7e\xfe\x95\x0d\x8b\x1f\xdc\x76\xdb\x2d\x1f\xf9\xe4\xc2\xf5\x8f\xd5\x06\x38\xfb\x65\x5f\xbf\x7b\xf5\x75\xad\x57\xd8\xc3\x4b\x3b\x96\xec\xee\xd3\x6e\xd8\x3b\xed\x2f\xbf\xc2\x5d\x8d\xda\x90\x82\xb2\x68\x1d\xaa\xb7\x12\x69\xf8\x0d\xec\xb0\x1a\x2c\x47\x1b\xcc\xca\x2e\x11\x69\x84\x0d\xbd\x83\x48\xc3\x23\x88\x07\xec\xb1\x38\x71\x1d\x71\x58\xd0\x13\x29\x22\x10\x87\x5f\x10\x0f\x48\x31\x2b\xe5\xc1\x09\x07\x92\xa9\x74\xa6\x19\x82\xec\xeb\xd7\x38\x99\x3f\x05\xe8\x54\x24\xab\xeb\x65\x2a\x90\x73\x82\x5c\x29\xc1\x3b\x4f\xc2\x0d\x89\x6f\x9a\xdf\x27\x0e\x21\x1c\xed\x1c\x68\xbc\xf3\xa4\x79\xe8\xc9\x77\xe0\xe0\x17\xe1\x89\x9b\xcd\x2d\xf0\xe7\x9b\x6e\x92\x2e\x81\x71\x28\x3c\xf9\x8e\xdd\xf1\xcd\x81\x4e\xd3\x43\xee\xbc\xab\x71\xe4\xc9\x77\xde\xb9\x56\x85\x27\x6e\x32\xb7\xc0\x7f\xde\x74\xd3\xda\xb6\x99\x7c\xee\x23\xdc\x72\xd4\x86\x8a\xe8\xdc\x26\x67\x01\x03\xa7\x4a\x38\x67\x60\xa7\x35\x9a\x03\xd8\x6e\x00\x2e\x51\x2e\xbd\x86\xde\x43\xf4\x73\x2a\x20\x88\x75\x29\xd6\x5e\xad\x56\x75\x67\xab\x20\xe2\x4c\x55\xe7\xec\x82\x88\xb3\xd3\x43\x5b\xb6\xf3\xe9\x19\x5e\xca\x53\xac\xc0\x30\x9b\x00\xc9\x09\x52\xca\x67\x7b\xe7\x49\xb0\x31\x9f\x58\xfb\xd0\xe9\xcc\x3c\x1d\xbf\xea\xaa\xcb\xe3\x31\xb8\xda\x7c\x8c\x8f\x9c\x3b\xff\xc2\xf9\x55\x8b\xa3\x55\xc9\xb1\x29\x8e\x1e\x2b\x3f\xf9\xce\x3b\xa0\x64\xfb\x82\x4e\x80\x1f\xc3\x02\x18\xfe\x19\xe3\x93\xb5\xf9\xd7\xcf\xf0\xb5\x9f\xc6\x01\xd2\xc4\xfe\x47\x9b\x7c\x39\xad\x16\x6b\x6f\xf2\x32\x93\xf6\xa7\xf1\x33\x9a\xe1\xe7\xe3\x89\x14\x69\x1b\x59\xc0\x4a\x15\xe9\xce\x80\x20\x1e\x08\x27\x52\x69\xab\xbd\xf4\xa4\x32\x4b\x79\x7d\x40\x6b\x39\x99\x1c\xe4\xde\x79\x12\x0a\x43\xa3\x75\xf3\xcb\xa7\x33\x77\x21\x44\x99\xca\x03\xe6\xea\x87\x2d\x9e\x64\x7d\x8a\xa5\x85\x8d\xbf\x23\x3c\xed\x36\xff\x8d\x5c\x3f\xff\xd3\x56\x7d\xb6\x55\x97\x24\xa3\x85\xa8\x2e\x12\x2e\xc2\xd4\x7b\x64\x0c\xec\xb4\x26\xea\x84\x26\x30\xab\x12\xde\x1c\x74\xa2\x8e\x1e\x08\x09\xa2\x6e\xa7\x3a\x2d\x2c\x92\xf1\x28\x57\xab\x98\x11\x74\xe4\xa1\x91\x37\x90\xb4\x72\xda\x09\x69\x49\x2b\x3b\xa1\x9c\x96\x34\x27\x68\xe5\xb4\x04\x85\x46\x03\x0a\x90\xfb\x2e\x8d\x86\x36\xbe\x6b\xbe\x6e\x1e\x6a\x34\x98\x8b\xa1\xe3\x55\xeb\xcc\xab\xe6\xcf\xcc\x43\xaf\x36\x68\x30\xf5\xd5\x19\xff\x76\x27\xb7\x1c\x05\x51\xac\x99\x15\x74\x6b\x34\xec\x67\xc9\xd6\xa1\xd2\xc8\x9f\x55\xcc\x61\x65\x30\x40\x80\x66\x16\xa3\x61\xc1\x93\xa3\xa6\x87\xee\xa8\x16\xca\x35\x97\xc1\xbf\x1f\x3f\x08\x6f\x9b\x4b\xa7\x6a\x1b\xa7\x74\x3d\xd1\xf4\x75\x09\xa1\xbc\xee\xf5\x6b\x1a\x65\x1c\x51\x0d\xe4\x98\x9a\x9e\x54\x3e\xe5\x2d\x33\x6f\x6a\xbe\x88\x56\x0f\x9c\xf1\x32\xb3\xa5\xf9\xc2\xc8\xf4\x4b\x01\xdd\x3f\x8d\x53\x42\xcd\xf9\x1c\x9c\x06\x98\x2f\xe9\x0e\xab\x84\xc7\x7a\xfa\xfd\x4c\x1f\x79\x26\x93\x65\xb2\x33\x4f\x99\x15\x8f\x5b\x4e\x7a\xa1\xe6\x04\x3a\x71\x86\xdc\x45\xfb\x65\x03\xd5\xd8\x9d\xd4\x5e\x26\x10\xaa\x9c\x56\xd0\x76\x7a\x81\x5b\xe3\xec\xc5\xbb\x7b\xcf\x8e\xde\x9a\xef\xae\x71\xcb\xe9\xf3\x51\x65\x26\x14\x65\x05\x04\x67\x7f\x69\x2f\x31\xe8\xb3\xbe\x47\xe4\xdc\x31\xc5\x33\x8d\x55\xd8\x66\xf3\xdc\x2b\x80\xe0\x04\x01\x8e\x32\x7d\x93\x3f\xe0\x96\x13\x86\x27\xdf\x98\x7c\x03\xde\x3e\xa3\x8d\x68\x2e\x23\x10\x6e\xb6\x51\x68\x02\x73\x2a\x51\x1a\x2d\xd3\x8f\x81\xd3\xf2\x59\x65\x72\xee\x28\x1c\x9d\x01\xad\x04\x6a\x91\x37\x98\x2d\xf0\xc2\x8c\xcb\x09\x7f\x4f\x1a\x09\x21\x80\x02\xad\x25\x6a\xf6\x3b\x4a\xab\xcf\xea\x77\x22\x9d\x91\xe5\x36\x9a\xfd\x4e\x39\xdb\xbb\x0a\xb3\xdf\x44\xdf\x73\xca\x3b\xac\xfc\x63\x83\xc3\x5c\x07\xc5\x34\x62\x13\xd3\x10\x40\x43\x54\x05\xe9\xce\xa7\x63\x73\x05\x4e\x71\xd3\xb8\xe5\x93\x6f\x1c\x9b\x46\xe1\xe0\x67\xfa\x10\xa0\x6f\x20\x9e\xfd\x33\xf7\x77\xb4\x46\x17\x2a\x4e\xc8\x7d\x83\x59\xf5\x07\xf3\x0b\xb0\xf1\x0f\xcc\xba\x49\xfc\x07\xd8\x08\x1b\xff\x40\x78\x0b\x9c\xfc\x09\xb7\x9a\xbb\x95\x78\x33\x19\x27\x54\x40\xe6\x25\x80\x00\x6c\x34\xbf\xf0\x47\x66\x50\x82\x49\xfc\x32\xbd\x75\xf2\x95\x30\xc0\xa4\x6e\xe9\x3a\x16\xb1\xdc\x73\xdc\x73\x34\x9e\x3b\x4a\x2b\x1f\x7c\x06\x96\x2c\xaa\x23\x67\x56\x3e\xb4\x34\x2b\x1f\x0e\x70\x4e\x97\x15\xbf\x90\x7c\xc4\x48\xdb\x79\x74\x66\xd5\x83\x26\x69\x14\x54\xa6\xa5\x34\xbb\x0f\x82\xb0\x00\x82\xfb\xf6\x99\xef\x9a\x2f\x99\xef\x3e\xd0\xa0\x3f\xb4\xdc\x61\xfa\xe4\xbe\x7d\x70\x3e\x3d\x7d\x0a\x5d\x7e\xb4\x04\xcd\xd4\x25\x11\xba\x02\xb3\xe8\xf2\x5a\x74\x09\x90\xd7\xbd\xa7\xd0\xe5\x71\x09\xa2\xce\xa3\x6a\x55\xe7\xfc\x82\xa8\x83\xbd\x7a\x3a\x79\x4a\x59\x39\x83\x2c\x66\x6c\x72\xff\x59\x88\x3a\x53\x56\x2a\xa5\xa9\x89\x57\x23\xd3\x41\x30\x4b\x42\x3c\x08\xa2\xee\x09\x10\x35\xca\x11\x32\xbc\xd2\x19\x2f\x97\x2b\x72\x25\x57\xc9\xf1\x39\x5e\x3e\x9d\x88\x35\xaf\xed\xde\xfd\xda\x9e\x3d\xaf\xed\xde\x7d\x68\xf7\x19\xb4\x74\x4c\x5d\xd9\xf3\xda\xee\x53\x69\x12\x4e\xa5\x49\x9c\x45\x53\x70\x9a\x26\xdf\x0c\x4d\xfe\x33\x68\x72\x42\x8e\xcf\x9d\x4e\xcd\x16\x08\xc1\xe3\xcf\xff\xee\xca\x33\x28\xd9\x69\xbe\x03\x8f\x7f\xed\x77\x57\x5a\xf9\xd4\x19\x3a\xe6\xa0\x41\x74\x1d\xa5\xa4\x6a\xe0\x41\x8a\x05\x14\x0a\xaf\xfb\xac\xd6\x1b\xa2\x63\x2d\x6e\xe0\xb8\x15\x96\xe5\x0d\x7d\x18\xf2\x7a\x9c\xd8\x1b\xa5\xaf\x5a\xc5\x45\xe1\xa0\x93\xeb\x98\x3b\x40\x9b\x31\x37\xd8\x6c\x46\xac\x08\xb8\xab\x8a\xa3\x62\xdd\xe3\x2f\x12\xa0\xdd\x27\xe8\x76\x38\x83\x07\x4d\x0d\xab\xfd\x7d\xc3\xb6\xb9\xb4\xae\x20\x64\xe7\x7d\x9c\xac\x0d\x73\xe5\xbe\x22\x9b\x4e\xf9\x98\xa0\x56\x3e\xa3\x2f\x7e\xff\x41\xce\xcf\xdb\x19\x1b\xe3\xe4\x7c\x5c\x90\x0d\x86\x1d\xb2\xcd\x9f\x8b\x45\xa0\x61\x13\xbb\x53\x6d\xe9\xde\x05\xbd\x51\xf5\xfc\x85\xd9\xfb\xcf\xec\xaf\x4c\x0b\x63\xf7\xb8\x78\x1b\xcb\x40\x28\x10\xf6\x04\x80\x93\x13\x43\x59\xd6\xd5\xa9\x8e\xa9\xda\xf2\x8e\x88\x3d\x52\xde\x60\x16\x6b\xa7\xc8\x47\x42\x2d\x68\x60\xaa\x47\x4b\xd4\x20\x8b\xb4\x88\x27\x6c\xe0\x96\xa9\xca\xc2\x66\xde\x49\x9a\xea\xc3\x61\x82\x8e\xcf\x64\xb7\xa2\x94\xd3\x82\x22\x69\x52\xfa\x6c\x8c\xbd\x0b\xe3\x56\xe2\xf1\x4c\xc2\x1f\xa8\x41\xa1\xd6\x80\xf1\xda\xec\x3c\x5c\x04\x95\xd0\x35\xa8\x1e\x6a\xe6\xe1\x12\x74\x42\x14\x2a\xd5\x7d\x2d\x8a\x46\x27\x51\xd5\x3d\xe9\x6e\x9a\x07\xe8\x21\xda\xb9\x6e\x6b\xeb\x54\x55\x15\x07\x8d\x3a\x1f\xcf\xa9\xaa\xaa\xf7\x12\xe4\x1a\x12\xc4\x03\xa9\x74\xb1\x44\x9b\x4f\x0c\x09\x22\x96\xaa\x3a\x4a\x08\x22\x8e\x55\x31\x08\xf5\x78\x47\xa7\x95\xc7\x2b\x6b\xc3\x50\x29\x6b\x52\x9c\x91\x35\x29\xed\x03\x5e\x4a\x97\x8b\x90\xd3\xe2\x20\x97\x35\xa9\xbf\x92\x2e\x6b\x45\xc8\x49\xe9\xb2\x0f\x78\x4d\xfa\x6e\xe2\xbe\xbf\x69\xf4\x6f\xdb\x22\xfe\xd3\x3f\xb5\xbc\xb8\xbe\xf1\xa9\xfb\xe3\x1b\x22\x37\x2e\x6b\x3c\xd2\xf7\xfd\x46\xcb\xe6\xa5\x8d\x65\x37\x44\x7e\x0c\x47\x1b\x77\x3d\xd2\xda\x68\x84\x56\x7d\x7c\x61\xe3\xca\xfd\xca\x2b\xaf\x44\x1f\xbd\x6b\xc9\xf5\x91\x7f\xfe\xe7\x9e\xbf\x6d\x2c\xbd\x36\xf2\x83\x7f\x92\xaf\x3b\xb7\x61\xf5\xd7\xd9\x75\x73\x89\x99\x9a\xaf\xe0\xb4\x0b\x38\x5d\x37\xd7\xd4\x7c\xc4\xf1\x13\xbc\xcd\x9a\xaf\x50\xeb\xa9\xc5\x71\xb4\x2e\xe0\x03\x8a\xe3\x66\x55\x3d\x7c\x50\xe9\xd7\x92\xfb\xee\xbb\x7e\xea\xff\x07\x97\x6f\xfe\xeb\xac\xbb\xce\xe0\xa1\xe5\x0c\x1e\x5a\xcf\xe4\x21\x7a\x0a\x0f\x91\xd3\x78\x68\xf9\x0b\x3c\xc8\x15\x19\x3e\x88\xfa\x2d\xbb\xd7\xfd\x60\x8f\xf9\xd4\x07\x57\xf8\xa5\x77\xaf\x33\xf6\x98\x4f\x9f\x41\x73\xb4\x49\x73\x98\x76\x7f\x6e\x7a\x72\xa8\xa5\xd9\x5b\x2c\x9a\xe9\xe4\xd0\xa9\x5a\x3b\x7f\x88\xd2\x2c\x84\x9b\x34\xfb\xa2\x67\xa9\xb5\x93\x21\x9b\x4e\xd9\x83\xb4\xbc\xab\x2f\x77\x06\xd5\xc3\xcc\x9c\xda\xad\xcf\xbc\x6f\x6c\xdc\xfa\xcc\xfb\x03\x67\xd6\xdb\xdd\x52\x63\x2a\xc3\xef\x4f\xbe\x37\xf0\xfe\x33\x5b\x37\x4e\xcd\x57\xde\x44\xe3\x14\x76\xd4\x4a\x6b\xee\x18\x63\x1a\xdd\xe8\x8c\x4d\x10\x31\xa2\xe0\x98\x56\x32\x33\x63\x74\xee\x5e\x1a\x5e\xa1\xd5\xcc\xff\x72\xc6\xf7\x9b\x75\x26\x53\xdf\x9f\x8e\x55\xb5\x80\x42\x50\x92\xf5\x7d\x5a\xb2\x5a\x30\x07\xcc\x11\x68\xce\xe5\xff\x01\x42\xdc\x52\x0e\x23\x3b\xc1\x49\x36\x1a\x05\xe2\x69\x0d\x16\x67\x90\x07\xe9\x9c\x6d\x56\x59\x35\x21\xe4\x07\xf0\x32\xbc\x64\x4e\x58\xd3\x99\x27\xf7\x4f\xee\x67\xc6\xc8\x73\xae\x46\x88\x7d\x6b\xea\x39\xf6\xa9\xe7\xc0\xcc\x73\x40\x10\xb1\xbd\xda\x9c\xb8\x2d\x28\x70\x35\x74\x40\x01\xba\xcc\x79\x53\xcf\x99\x92\xc9\x3f\x50\xdc\xe6\x45\xa8\x3c\xcc\x56\x08\xe9\x3e\xd6\xbe\xe8\x81\x7f\x7f\x82\xdc\x75\x39\xfe\xca\xbd\x8d\x9d\xaf\x3d\x77\x95\x03\xfc\x16\x17\x4c\xfb\x82\x8f\xcc\xd6\x35\x76\xe4\x45\xc2\x54\x7d\x96\xaf\xa4\xfb\x9b\x18\x4f\x06\x19\xe4\xa0\x0c\xb2\xa0\xc8\x3b\x20\xbb\xc7\x7c\x63\xc7\x3b\x7b\x20\xbb\xc3\xdc\xba\x03\xc6\x9b\x27\x58\x27\x39\x03\xe3\x3b\x10\x83\x52\x28\xcd\xed\xe1\xf6\xd0\xe7\xa1\x0a\xe4\x14\x21\xe7\x04\xeb\x29\x29\xc8\x91\x9b\xcc\xd7\x61\xff\x0e\xc8\xed\x31\x5f\xdf\x81\x21\xb7\xc3\xdc\x7a\xaf\xf9\x3a\x53\x26\x0f\xcb\xed\x36\x5f\xbf\x17\xb1\xcd\x9a\xca\xc7\x28\xae\x4e\xa3\x95\x14\xb5\x25\x0d\x9c\xa6\xf1\xec\x58\x69\xaa\xb2\x02\x66\x07\x85\x9c\x96\xd7\xd7\x12\x10\xc4\x17\x6c\x1e\x2f\xa7\xa4\xad\x2a\xd0\xb4\x20\xea\x4e\x62\xae\x62\x82\xee\xb0\xf4\xf5\xec\xb8\x05\x04\xe3\x40\x60\x7a\x25\xd8\x4f\x61\x3a\x51\xdb\x53\x95\x95\xd6\x06\x2e\x9c\xcb\xa5\x43\xfd\xa1\x34\x37\x97\x8b\x84\x7e\x28\x45\x7a\x1a\x0d\xf8\xe5\xcc\xf5\x8b\x2f\x7e\x9c\x59\x64\xfe\x24\x14\x8b\x85\xa0\x18\x8a\xc5\x26\x5f\xa9\x35\x97\xc3\xa1\x72\xcd\xa2\x2e\xd4\x83\xfa\xd0\x00\xea\x43\xf5\x1c\xd1\xe4\xbd\x1a\xee\x32\x30\xd1\xda\x83\x25\xdc\x4b\x57\x66\xe8\xa3\x2b\x33\x0c\x41\x5e\xef\xeb\x15\xc4\x83\x6e\x4f\xb0\x3c\xd7\x4a\xbb\x0b\x9a\xa4\xd0\xe2\x18\xad\x9c\xee\xef\xcb\x96\xa0\x08\xe9\x94\x1f\xec\x7c\xb6\x44\x47\x95\x1f\x7c\x10\x92\xe8\x74\xd6\x60\xaa\x7f\x1e\xc8\xb4\xda\xa6\x12\x67\xd3\x35\x18\x27\xf6\xe4\x46\x60\x99\x94\x7b\x28\x97\x8c\xfd\x9f\xb0\x18\x94\x7e\xaf\xc4\x72\x43\xae\x34\xc3\xdc\x58\x83\x71\x73\x6b\x8d\x4d\x05\xc5\xd7\xfe\x15\xc6\xcd\x07\xff\xd1\xe6\x4b\x8a\x0c\x9b\xb4\x3c\xc4\x1a\xb8\x83\x8e\x67\x73\x3d\xc2\xb8\x37\x1c\xf1\x8c\x8b\xc5\xac\xee\x08\xb9\x80\xae\x1a\x70\x74\x43\x4f\xe9\x7f\x91\x3d\x73\x2b\xbb\xf3\x15\x4f\xe7\xba\x2a\xe9\x47\x27\x7f\xcb\x3d\x4f\xe7\x0e\xa9\x33\x75\x7e\x5a\x09\xe7\x26\xb0\xdf\xd0\xfb\x68\x6f\x92\xca\x95\x22\x33\x0c\x95\x61\x5b\x25\xc4\xf8\xb8\x22\x93\xe6\xfb\xc3\x95\xfe\xcc\x30\x5b\x19\x86\x5c\x36\x65\xe5\xaa\x39\xfe\x67\x4e\x07\x2b\xcd\x29\x96\xae\xd9\xfc\xb9\x07\xde\xbe\xba\xb0\xf4\xea\x9b\x3e\x7e\xfb\x47\x2f\x59\xe3\xdf\x24\xe6\xe6\x57\x60\xce\xa2\x8d\x5b\x2e\xee\x0c\x73\x0e\x3e\xa4\x08\xe9\xcf\x0f\x0d\x99\x0f\xae\x0f\x3f\xf8\x9d\xf2\xe0\x3d\x57\xdc\x3b\x30\xb8\x56\xeb\x8e\x57\xe3\xdf\x32\x7f\xf0\xa3\xc7\xd7\x6a\x4e\x7b\xd0\x5f\xf9\x98\x77\xcd\xe8\xfe\xec\xbc\xcb\xef\xb9\x40\x0d\x39\x6d\xb1\x16\xed\x96\x64\xf2\x95\x1f\x90\x31\x73\x23\xf2\x70\x0b\xb8\x7f\x47\xe7\xa2\x34\x02\xbc\x84\xf6\xa8\x85\x06\x5e\x18\xd0\x07\x21\xaf\x2f\x85\xbc\x3e\xb8\x50\x10\xf5\xb9\xfd\xb4\xf4\x46\x0c\xc9\x71\x90\xc3\x16\xb1\x71\xe0\x7d\xc0\xfb\xb8\x38\x10\x7e\xb8\x4a\x3f\x93\x0b\xcb\xe1\x5c\x36\x57\x64\x2a\x3e\x4e\x8e\xb3\x3e\x8e\xb7\x93\x7d\xb8\xd1\xe6\x5c\xb4\x28\x31\x3a\x77\x4e\x87\x3f\xe9\x0b\xad\xbc\x50\xb0\x25\xc2\x2e\xa7\x9f\x65\x1d\xbe\x96\xf6\x48\x75\xc1\x96\xf9\x23\xfe\xec\x93\x5f\x09\x4b\xb9\xc5\x7e\x71\xe5\x1a\x9b\xe6\xed\xba\x6a\x69\xd1\xcf\x78\x38\x07\x80\x3b\xd0\x2a\x66\xe7\xca\xbc\xaf\x6f\x1e\x7c\x63\x34\x3e\xe7\x63\xdd\x92\x2b\x33\x3c\x14\x1f\x7d\x37\xb7\x6a\x7f\x4d\x59\x52\x08\x86\x92\x7e\xd9\xe1\x06\xce\x1e\x6a\x1b\x9a\x7f\xc3\xfc\x67\x61\xcd\xf5\x85\xb5\x5f\xb0\x31\xbc\xf2\xc9\xd7\x1f\x71\x24\xae\xbc\xfe\xe9\x35\x9e\x81\x68\x5f\xb4\x43\x6e\x09\x70\xae\xe2\x79\x17\x26\x8b\x37\x20\xc4\x9e\xfc\x2e\xba\x8b\x7b\x97\xd3\x90\x82\xe6\xa1\xc5\x68\x3e\x22\xe6\xa9\xd3\xc0\x73\xad\x72\xd2\x73\x4b\x78\x70\x02\x57\x0c\x7d\x09\xe4\xf5\xca\xa0\x20\x8e\xb8\x9c\x2d\xad\x8e\xce\x8e\xf2\x30\xad\xf3\x42\xba\x73\xae\x20\xbe\x88\x84\xf6\x62\x79\x78\x74\x31\x55\xfa\x6c\x65\xd8\xae\xc6\x6d\x09\xe0\x7d\xf6\x54\xd1\x96\xab\xc4\x6d\xea\x30\x57\x29\x72\x39\x6b\xb2\x51\xb9\xaf\x62\x97\xc3\x72\xa5\x08\x25\x18\x6a\xb5\xb7\x2d\x5a\x79\xcb\xb6\x4f\x8f\x7f\x7a\xdb\x2d\x2b\x17\xb5\xd9\x5b\x4f\x3f\xf1\x38\x3f\xbf\xfb\xe2\x0b\xee\xbc\xe7\xb6\xd5\xeb\x0b\xe7\xba\xa1\x12\x9b\x5b\x8d\xf7\xe2\xff\xc4\xc5\x2b\x3f\xd1\x7b\xcd\x35\x99\xe5\xc1\x10\x33\xd6\xe1\xea\x58\x77\xc1\x86\xc5\xa5\xd2\xe2\x0d\x17\xac\xeb\x70\x75\x9c\x7e\xec\xda\x30\x74\xd9\x9c\x7c\x87\x76\xc9\xc0\xd5\x3e\x58\x92\x59\x38\xb7\x65\xe9\xfa\xed\x18\x6f\x5f\xbb\x64\xdd\x2d\xdb\xe7\x5f\x13\xd9\xd0\xde\x4e\x86\xe9\xc9\xef\x22\xc4\xbd\xcb\x61\x14\xa6\x15\x0d\xe7\xa0\x2f\xa2\xba\x7f\xca\x13\x1d\x2d\xe9\xf3\x21\x8f\xfb\x5b\xbf\x39\xf4\x7f\xfe\xcf\xcf\x91\x94\x77\x61\x7f\xd1\x87\x3d\xdf\xb6\xe9\x3e\xf8\xb3\x0f\x7b\xbf\x8d\xfd\x81\x03\x6e\xbf\x27\x98\x3f\x10\xa0\x9f\x2d\xf4\xb3\x95\x7e\xb6\xd3\xcf\x0c\xf9\xac\x07\xfc\x9e\xe4\xae\xe4\xae\xb4\xdd\x27\x88\x55\xdc\x52\xc5\xad\x55\xdc\x5e\xc5\x99\x2a\x76\x57\xd1\x8b\x6e\x8f\x37\xd0\xd2\xda\x9e\x29\x36\x7f\x60\xc4\xe5\xf6\x78\x7d\xfe\x53\x4e\x16\x8b\x78\xa4\x15\x90\x25\x6b\x4d\x95\x2b\x1a\xa4\x89\x80\x2b\x22\x11\x6b\x53\xc0\xf3\x80\x96\x7e\x54\x86\xed\x95\x6c\xae\x12\x67\x48\x83\x70\xd3\x02\x3f\x77\x68\x30\xf3\x19\xf3\xd5\xcf\x64\x56\x3f\x75\xf3\x35\x39\xd7\xe3\x3f\x79\x31\xb3\xe5\x41\x2a\xd4\x92\x1c\x9f\xeb\xf7\x41\x47\x36\xdc\x5d\x4a\xf5\x04\x4b\xb0\x31\x9f\x9b\xbf\xa3\xe8\x6d\x6d\xe5\x33\x17\x6d\xfe\xf4\x8c\xb8\x85\x3d\xc7\x57\x3d\x28\x6d\xbe\xea\x8e\x39\xfe\x0e\xf3\xad\xfe\xdd\xe2\xd3\x37\x58\x12\x2d\xad\x6b\x5b\x1d\x6d\x9d\x7c\xfa\x21\x7f\x56\xcd\xce\x8b\x8c\x30\x1f\xeb\x79\xb8\xff\xc1\x91\x50\x47\x87\xa7\x6f\xcb\x15\x57\xd2\xf5\x11\xfe\x16\x21\x9b\x48\xf1\x86\x88\x64\x84\xb2\x34\xac\x91\x83\x22\xf0\xc4\x93\x56\xca\x69\x49\x88\x42\x39\x7d\x63\x34\x63\xf3\x65\xa2\xd2\xe4\xdd\xa1\x39\xa1\xc9\xbb\xff\x03\xbe\x05\xdf\x32\x9f\x6e\xd4\x6a\x8d\x05\x0b\x16\x27\xb9\x64\xca\x96\x3c\x3e\x51\x63\xfe\x65\xb2\xbb\x46\x14\xd9\x21\x28\xd4\xa6\xea\xb5\x24\xaa\x77\x3b\xd1\xb9\x08\xc7\xad\xde\xdc\x55\xc2\x19\xaa\x67\xc3\x06\x76\xab\xf5\x30\xad\x92\x0c\x47\x9c\xf9\x7a\x26\x3c\x35\x47\x55\xcf\x43\x5e\x0f\x67\x04\x51\x8f\xc5\x89\x4f\xe6\x8c\x0b\xa2\x1e\xce\xd0\xa0\x7c\xb9\xaf\xbf\x02\x02\x9d\x35\x27\x40\x1c\x62\x10\xb2\xe7\x32\x02\x8d\x19\x94\x20\xcd\xdb\xb3\x43\xd0\x57\x11\x6c\xf6\x6c\x2d\xec\x87\x2d\x63\xdb\xc7\x60\x8b\x3f\x1c\x11\xcc\xc7\x6a\xad\xc1\xcb\xde\xbc\x2c\xd8\x5a\x33\x1f\x13\x22\x60\xef\x0c\xf5\xfa\x60\x21\xac\x19\x1e\x1b\x1b\x36\x9f\x33\xff\x87\xaf\x37\xd4\x19\xf2\x7a\xfe\x6c\xfe\xf9\xe2\xf0\x48\x48\x70\xae\x58\xe1\x14\x42\x23\xe1\x8b\x81\xff\xb3\x87\x58\xe3\xa9\x7a\x6f\xe7\x69\xab\x30\x54\xd0\xc0\x4c\xcd\x29\x5a\x83\xd6\x4d\x67\xdf\xcb\x82\x52\xb6\x6a\xb6\xcb\x69\x89\x08\x33\x9d\xb2\xd3\x32\xca\xe9\xaa\xf4\xbf\x72\xdf\x8a\x85\x1c\x3f\xc8\x2d\x8f\x49\x7b\x6b\xa6\xa7\xb6\x57\x8a\xd5\xfe\xe2\x0f\xcd\x3d\x31\xbf\x9f\xba\x31\x26\x9d\x58\x3a\x55\xc2\x6e\x6e\xfd\xaf\xed\x35\x57\x83\xb3\xdd\xce\x7d\x0d\xb9\x50\x00\xb5\xa0\x73\x28\x4e\x8b\xd0\xcc\x62\x90\x16\xdd\x38\xe8\xf2\x12\xac\x3a\xe3\x9c\x01\x9d\x8b\x10\xae\x56\xb1\x5b\x38\xc0\x7b\x45\x3a\x8f\x22\x20\xea\x76\x1f\x69\xc4\x21\x50\xc0\x8a\x92\x3a\x41\x91\x2b\x39\x05\x2a\xb2\x75\x0c\x2c\x33\xf6\x47\x62\xf4\xbe\x30\xb9\xdf\x7c\x06\xd8\x3b\x77\xbf\x60\x3e\xc3\x3c\xb5\xfb\xce\x2f\x90\x93\x7f\x6c\x34\x98\xb1\x57\xcd\xd7\xcd\x43\xaf\x10\xc8\x76\xe7\x9e\x83\x93\x8f\xec\xf9\xa8\x75\x62\x76\xbc\x4c\x44\xad\xcd\x39\xc0\x81\x12\xf6\x68\xa7\x46\x99\x4e\x4d\x8f\x81\x90\x4e\x65\xa7\xaa\xc5\x26\x9f\x35\x7f\x54\xeb\x1c\x80\x71\x66\x8c\x1e\xee\xef\x1c\x20\xbd\x79\x00\x59\x75\x56\xb4\xfd\x33\xa8\x13\x75\xa3\x0d\xa8\x9e\x20\xcf\x77\x1a\x75\x27\x9d\xaa\xe1\x04\x67\x1e\x4b\x2a\xce\xd2\xc5\x36\x72\x06\xce\xab\x80\x8b\x34\x96\x9a\x55\x31\x4b\x17\xe2\x60\x03\xba\x08\xb4\x42\x58\x36\x70\x41\xd5\x4b\x90\xd7\x59\x02\x71\xdb\xab\x58\x14\xf4\x78\xa2\x5a\xc5\xb2\x88\x5b\xaa\xd6\x9a\x50\x52\x48\x0e\xcb\x61\x4d\x1d\xb6\xe7\xfa\x86\x40\x91\x42\x3e\x5b\xaa\x68\x9b\x5a\x8e\xa9\x06\x05\xbb\xb0\x36\x57\xce\x0c\x74\x26\x04\x37\xcb\x00\x14\xec\x91\xdc\x79\x9b\x3f\xff\xed\xcf\x6f\x3e\x2f\x17\xb1\x43\x81\xe0\x64\x66\xac\x71\xec\xa6\xe4\x25\x2d\x6e\x77\xa8\x2d\xdd\x51\x28\x46\x04\xc7\xb1\x46\xd7\xea\xbb\xaf\xbd\x69\x95\xa6\xad\xba\xe9\xda\xbb\x57\xc3\x85\x56\x21\xaf\x79\x88\x8e\xd9\x93\xbf\x44\x5f\xe7\xae\x66\xdf\x24\xa8\x89\x95\x9d\x50\x81\xf8\xaf\x60\x03\x6c\xfc\xe5\xe4\xff\x84\xc7\x7f\x05\x1b\xcd\x2f\xfc\x8a\x99\x4f\x64\xbd\x08\xbd\xc1\xfd\x80\x43\x53\x73\xe3\x9d\xb0\x88\x59\xc0\x8c\xfe\xd2\xfc\x82\xb9\x8f\x8d\x4d\x7e\x8b\x99\xff\x2b\xf3\x0b\xb0\xd1\x9a\x4f\x37\x17\xd5\x6c\xdb\xd8\xb7\x91\x03\x09\xa8\x03\x11\x4c\xdd\x0c\xc2\xf0\x14\x5a\x07\x09\xb4\xe6\x2d\x88\x6e\xed\xf8\x88\x09\xa3\x33\x20\x65\x45\x00\x59\x11\xd2\xe4\xe0\x55\xc8\x43\xe1\x9f\x60\xc7\x4f\x4f\x1c\x86\xcf\xfc\x14\xee\x22\xc7\xf9\x06\xf3\x12\x44\xcd\x5f\xd3\xa5\x88\xa0\xd0\x30\xb7\x9a\xbf\x86\x28\x81\xf3\x08\x90\x88\x10\xf7\x55\x0e\x23\x15\x2d\x42\xf5\x14\x69\xaf\x16\x0d\x17\x0c\x5c\x08\xe0\xac\x55\x1d\x8c\x4b\x34\x26\x14\xb0\x74\x93\x56\xc2\xed\x13\xc4\xb5\x4f\x04\xf4\x36\x2b\x7b\xd1\x07\x79\x5d\x6e\x13\x44\xdc\x4d\x5b\x25\x5b\xe9\xd7\x94\xca\x30\x81\xa9\xe1\x90\x3d\x0f\xac\x8f\xc9\x03\xb5\xa8\xb4\x85\xe8\x36\x4d\xcc\x2b\xb9\x4d\x49\x65\x73\xa2\xcd\xef\x6b\x61\xef\xc9\xda\xa2\xc2\x65\x64\x30\xf6\x7f\x9f\x71\xc4\xc5\x44\xac\x2b\x66\x1e\x8a\x75\xc5\x54\x5a\x46\x23\xf7\x4c\xde\x97\xec\xb6\xb1\xcf\x44\xc4\xe0\x97\x04\x29\xd6\x15\x3b\x31\x8f\xf3\x86\xe9\xe8\x55\xad\xcf\x78\x48\x8a\x35\xba\xc2\x68\x56\x6d\xf0\x72\xc4\x22\xff\xec\x0a\x38\x8e\xa0\x71\xec\x55\x29\x2f\xd3\x33\x12\x7b\x09\x08\x2d\x6b\xcd\x4e\xaf\x48\x1c\x3e\xbe\xaa\xd1\x9c\xf0\x7a\x94\x4d\x9e\x38\xcc\xee\xb4\x26\xb4\xa2\xe6\x6a\x93\xc8\xf6\x73\xfa\xec\x00\xea\x98\x79\xb6\x9f\xd6\x0f\xda\xac\x67\x0b\x25\xd2\x91\x67\xf9\x67\x1a\x28\x4e\x10\x66\xde\xa1\x00\x14\x38\x6c\x1e\x9a\xf5\xa6\x13\x11\xe6\xa5\xc9\x05\x53\x43\xab\x41\xda\x07\x8a\x08\xb1\xf7\x52\x9d\xaa\x58\xb3\xd9\xe8\xca\x4e\x34\x32\xa7\xbb\xa7\xc2\x72\x9c\x93\x22\x3e\xd0\xac\x4e\xa0\x01\x14\x5f\x7d\x15\xba\xa0\xeb\xd5\x57\xcd\x09\xd2\xc3\xad\x62\xf2\x66\xff\x45\x08\x4a\x1c\x66\xef\x45\x4e\xd4\x46\x67\x17\x11\x7f\xd4\x55\xa2\x4b\x42\xcd\x94\x93\xd1\x74\x8d\x42\x34\x8e\x22\xcd\x3c\x82\x19\xb3\x1e\x6a\xfe\xf4\x95\x57\x66\xd5\x80\x61\xe4\x6f\xce\x2f\x58\x62\x55\x98\xe3\x56\x03\xc7\x69\xb1\x4b\x52\x23\x12\x0f\x10\x5f\x88\x4e\xcb\x8a\x4e\xc5\xee\x12\xd4\x0b\xaa\x27\xe8\x62\x6a\x09\xe4\xcc\xd3\x19\x5a\xce\x84\xd0\x1c\xde\xa7\x97\xfc\x44\xc1\xaa\xdc\x95\x83\x40\x9c\x1e\xad\x9c\x9e\xd2\x49\x27\x22\x9d\x03\x89\x67\x6d\xed\x21\x66\x5f\x30\x63\x7b\xd6\x7c\xb0\x66\x15\xda\xd3\x26\xeb\x1c\x18\x80\xb5\xcc\xaf\xc2\xb9\x6e\x79\xb2\x9d\x46\xb3\xa8\x5d\x7f\xbc\x59\xab\xeb\x46\x9d\xa8\x82\xb2\x88\x4e\xbb\x46\x13\xd8\x6e\x60\x7b\x40\xef\x82\x3c\x56\xe9\xb4\x69\xbd\xcb\x2e\x88\xba\xa7\x95\x0a\x98\x2d\xf7\xf5\xcf\x03\xa9\xc8\xc9\xe5\x41\x76\xd8\x36\x00\x19\x21\x93\x0e\x86\x7d\x90\x4e\xe5\x21\x95\xcd\x31\x74\x39\x9b\xa6\xde\x4c\x65\x37\xab\x2d\x2d\x9c\x2f\xd5\x1a\xfe\x3e\x30\x0c\x67\xe3\xb9\x06\xf3\xe5\xc9\x4b\xb3\x25\xc6\xe5\xf1\xdb\xd8\x35\xa1\x18\x57\x61\xdf\x8e\x49\xa4\xf3\x4a\x31\x66\x4c\x8d\xa8\x5e\xef\x31\x86\x97\xc2\xca\xda\x63\x8c\x87\x73\x71\x3c\x6b\x63\xe0\xd8\x89\xaf\x35\xcc\xdf\x79\xdc\xd0\x26\xc1\xf9\xe6\x2f\xd9\xd5\x34\xd6\xff\x35\x5a\xd7\xc2\xa0\xa5\x08\x71\x57\x72\x18\xe5\x91\x86\xca\xcd\x59\x44\x1a\xad\x68\x4d\x68\x44\xa7\x46\xd4\x7a\x27\xad\xa9\xee\xcc\x38\xf3\x80\xfb\x4a\xd6\xd2\x43\x9d\x9a\x20\xea\x85\x5e\x2b\x87\xdf\x3f\x00\x95\xe0\x30\x54\x72\x59\x9a\xb0\xe0\xed\x52\x9c\xf8\xd0\xd3\x01\xd0\x74\x8a\x3a\x72\xb6\x38\x71\x3c\xed\xa9\xa5\xd1\x90\xf8\x91\x79\xfe\x3b\xd7\x88\x76\x31\x74\x59\x48\xb4\x8b\x6b\xee\xf4\xcf\xdb\x26\x84\xa2\xad\xa2\x23\x5e\xbb\xf6\x0b\x2b\xef\xfa\xe3\xdc\xb9\x62\x2b\x3c\xed\x99\xb3\x68\x8e\xbb\xe7\x3a\xb8\x4c\x8a\x3d\x07\x8b\xcf\xbb\x3b\x94\x0c\xb6\x4a\xc1\x76\x08\x7e\xec\x3c\xf3\x1b\xcf\xc5\xa4\x50\x07\xcf\xba\x63\x92\xd8\x19\x0a\xf1\x9d\xff\xbb\x77\x68\xa8\x97\x2e\xf5\x29\x21\x89\x7b\x82\x7b\x82\xe0\x2d\xba\xd4\x14\xf9\x97\xab\x90\x7f\x7c\x8e\xfc\x93\x79\x59\xfa\xcd\x8a\xc3\xdd\x8f\x3f\xde\x7d\x78\xc5\x6f\x0f\x1e\xfc\xed\xd4\xfe\x6f\x0e\xc0\xb7\xe8\xe6\x00\xbd\xfc\x44\xe1\xc8\x8a\xdf\x1c\x3c\xf8\x9b\x15\x47\x0a\x4f\x58\x36\xba\xd6\x9c\x17\x91\x42\x45\xd4\x8a\x68\x5e\xb9\x63\x02\x87\x69\x5e\x59\x0f\x77\x08\x22\x0e\x4d\xcd\x5a\x80\xd0\x00\x84\x07\x40\xad\x04\x9b\x85\x2f\xd3\xf5\x2e\x7e\xc6\x2e\x05\x85\x79\xa0\x49\xbc\x22\xb1\xe9\x5c\xa3\x01\x85\xda\xd0\x76\xff\xb1\x62\xe6\xf7\xb1\xa1\x9c\xf9\xf5\xb6\xa1\x9c\x1a\xed\xf1\x6d\x78\x28\x54\xdb\x5b\x53\x55\x78\xf9\xd8\xc4\xfd\x0d\x66\x6c\xf2\xfd\x65\xb5\x2a\x8c\x25\xf2\xb5\xc2\xf9\xdb\xf8\xbd\x85\xf3\x3b\xda\x5e\xfd\x5e\x6b\xc6\x7c\x00\x6e\x7b\xed\xd0\xf3\x47\xee\x32\x1f\xa8\xcd\x9e\x1b\xb6\xbc\x49\xe7\x56\x54\x6f\x23\xad\x9a\xa1\xd1\x5e\xa4\xe1\x0e\x83\x58\x4d\xde\xc0\xa0\xe2\x82\xb5\xe6\x45\xa9\x39\x41\x8d\xd8\x4f\x8e\xce\xc9\xc0\x69\x6b\x79\x13\x6b\xc6\x6e\x27\xe4\xb1\x60\x71\x99\x4d\x0b\x62\xdd\xd1\x51\xa8\x56\xa7\xe6\xeb\x76\x8a\x38\x5f\x45\x7a\x91\xa8\xf0\x2e\x1a\x49\xd2\x84\x8a\xd0\x37\x00\xa4\x37\xc8\xc1\xe6\x00\x9c\x2e\x1f\x2b\x31\xd9\x4a\x02\xb4\x72\x4e\x29\xb3\x69\x3e\xdd\xa8\x7d\x28\xef\x35\xa2\xd2\x26\xf7\xdf\x05\xe3\xcb\x6a\x55\x73\xff\xe9\x02\x38\xf4\xda\xf3\x47\xee\x82\xdb\xe8\xb8\x44\x0e\x54\xb3\x49\xdc\x5a\xca\xfb\x39\xe8\x0e\x84\x93\xb4\x1e\x30\x4a\xbd\xbd\x5e\x1a\x51\x01\xb5\xde\x4b\xe7\xc9\xf7\xd2\xa9\x9e\xa3\x67\xe5\xbd\xdb\x2a\xae\xed\xa6\x15\xb5\xdd\x83\xce\x3c\x9d\x24\xd7\x9d\x16\xc4\x83\x1e\x21\x1a\x9a\x47\x9d\xc2\x68\xbb\x20\xe2\x74\x15\x77\x0a\x38\x52\xd5\x43\xbd\x82\x58\x97\x07\xcf\xa1\xd1\xe5\x8a\x40\x85\xd0\x3f\x0f\x32\xfd\x9a\x9a\x00\x3a\x25\x4b\x99\xb2\x68\x40\x97\x4a\x90\x95\x20\x35\x73\xb4\x88\x5b\xe9\x62\x8a\x5c\x2e\x5b\xee\x9b\x07\x39\x9b\xa3\x51\x6b\xf3\xf9\xe0\x5a\x9f\x5b\xf0\x5c\xef\x73\xaf\x85\xe2\xda\x2d\xd7\x5f\xb0\xe5\x5e\x3e\xea\x37\x9f\xe1\x9f\xaa\xd5\x20\xf3\x71\x7b\xd4\xff\x4f\x01\x51\x0c\x98\x15\x70\x73\x4e\x96\xe7\x38\xc6\xe6\xfa\xf4\x85\xe6\x73\x74\x05\xaf\x65\x8c\x57\xc8\xb8\x9c\x6f\xd9\x3d\x5b\x7d\x21\xd1\x77\xc7\xf2\xf1\x15\xe6\x73\xe1\xdc\x97\xa2\xeb\x61\x8d\xd4\x11\x97\x42\x31\x00\x86\xb5\xb1\x1e\x87\xcf\xfb\xe2\x9a\xdf\x35\x75\xda\x66\x0e\x73\x17\xa2\x38\xcd\xa1\xdc\x41\x57\x44\xb1\x2a\x45\x13\x06\x51\x6f\xac\x81\xe7\xaa\xf5\x39\x54\x1d\xcc\xa9\x12\xd9\x0d\x51\x53\x92\x30\xea\x09\xba\x08\x42\xa2\x60\xcd\x45\x20\x1d\x27\x64\xe0\x50\x80\x68\x40\x3c\x68\x25\x58\xb2\x09\x41\x3c\xc8\x7b\xda\xb8\x4e\x2a\xbb\x58\x3b\x2d\xb8\xc0\x09\x01\xa3\xaa\xce\xce\x11\xc4\x3a\xe4\x0a\x54\x76\x4c\x5f\xbf\x66\xb3\x44\xd1\xaf\xa9\xb2\x2d\xce\x4c\x55\x31\xe5\xd8\x74\x2a\xa7\x11\x1d\xae\x54\x84\x0c\x2f\x87\xa5\x10\xef\xb3\x75\x01\x01\x99\x9a\xb0\xf9\x3a\x22\x28\xb7\xef\x7a\x6f\xc0\xed\x83\xeb\xf9\x90\xf2\xac\xc3\x7c\x26\x10\xb5\xdf\xbb\xe5\x02\xd7\x9b\xfe\xa8\xfd\xe3\x90\xd9\x62\xfe\xdd\xba\x87\x5c\x36\xb0\xb1\x3c\xe7\xe4\xdc\x60\xb6\xb3\xbf\x69\x30\xf3\xc7\x97\xc3\x1d\x81\x80\xe4\xbd\xc9\x63\x7f\x8b\xf3\xe6\x84\xc9\xf7\xbc\x5f\xec\x90\x60\x4d\xad\x33\x64\x3e\xb7\x1e\xfe\xef\xbb\x6b\xbe\xee\xf6\xbb\x9d\xac\x8d\xa0\x40\xd3\x43\x24\x6c\x8d\xb5\x8d\x04\xb3\xda\x7c\x28\x8a\xfa\xd1\x5c\xb4\x18\xd5\x2b\x64\xac\xcd\x31\x00\x0f\x94\xb0\x34\x81\x2b\x2a\xee\x34\xea\x9d\x12\x55\xa1\x73\x9d\x79\xac\xa9\xb8\x33\x40\x70\x29\xf6\x19\x34\xee\xd2\x29\x09\xa2\x2e\xf6\x57\xab\xba\xaf\x44\xeb\xba\x50\x4f\x6f\x14\xe2\xcc\x54\xfe\x3b\x97\x29\xf7\x65\x53\x76\x49\xc8\x65\xed\x7e\xb0\xcb\x15\x39\x5c\x19\xb6\x0d\x42\x59\xe8\xeb\x27\x83\x2a\x2c\xdb\x04\x5e\x61\xcb\x8a\xb4\x91\x92\xce\x78\xbd\x5f\xea\x90\xcc\xe7\x56\x8c\x2f\xbf\xc3\x9f\xf1\x6d\x0d\x5f\xbc\xe6\xc5\x70\x8b\x45\xb9\xaa\x12\xa6\xd6\x9b\x4e\x07\x33\xc6\xfc\xd0\x7c\xc4\x1e\x4c\x3c\xc5\xc3\x85\x44\x34\xd7\x5e\x70\xc3\x96\xb5\xe6\x4f\x2e\xf0\x80\xf7\x86\xb0\xfb\xc2\x87\x45\xef\xb4\x8c\xa0\x11\x16\x83\xd2\x3f\x12\x41\x9a\x6f\xd4\xcc\xad\x8d\x66\x0e\x83\x41\x2e\xf6\x5d\x5b\x04\xc5\x50\x1f\x9a\x83\x16\x22\x5c\xb6\xd6\x80\xa9\xd2\x22\xf5\xb2\x8a\xf3\x46\x3d\x4f\xa7\xe0\xe4\xe7\x38\xf3\x58\x51\x71\xde\x9a\xa7\xe2\x37\xf4\xb9\x90\xd7\xf3\x2e\x62\x1a\x13\xd5\xaa\xee\xcf\x09\x22\xf6\x52\xf8\x67\x4f\x40\x1c\xe6\x41\xc8\x2e\x85\xc2\x6a\xff\x10\x64\xac\x45\x22\xd3\x4a\xca\xee\x07\x36\xa8\xc8\x82\xcd\x47\x5d\xd2\x6c\x59\x18\x84\x22\xe4\xb2\x7e\x20\x48\x9e\x09\x84\xb7\x7a\xb3\xfe\x3b\xe0\xbc\xf1\x15\xb0\x26\xd4\xf9\x25\xef\xe4\xfb\x42\xc6\xe5\xfa\xdc\xef\xe0\x4f\xeb\xcd\x67\x43\x1d\xaa\xca\xf2\xf6\x48\xf8\xeb\x0f\x33\x63\xcc\x92\x44\xf8\x06\x2f\xb8\xd7\x6a\x46\xf1\x82\xeb\x6e\xb8\xe0\x5a\x32\x98\xe0\x42\xfe\xa9\x36\x9f\xdf\xbc\x17\xd6\xd4\xcc\x37\xee\xb5\xb7\xf9\xff\x31\x2c\x8a\x61\x68\xb8\xf9\x80\x83\xf5\x8a\x0f\x33\x37\x51\xc6\x19\x82\xc7\x39\xcc\x3d\x83\x7c\x48\x42\x73\x9b\x78\x25\x40\xf1\x5b\xb3\xbe\x8c\x96\xef\x59\x8b\x87\x06\x3c\x82\x68\xcd\x04\xf7\x0b\x3a\x0a\xd2\x19\xe1\xba\x23\x54\x9d\x9e\x13\xde\x4c\x1b\x30\x20\x2b\xbc\x13\x24\xdb\xe5\xfb\x7e\x7e\xe7\x97\xa6\x53\x65\xbf\xdb\x07\x19\x06\x0a\x0c\x3c\x6c\xde\xc0\xac\xbd\xf3\xe7\xfb\x2e\xdf\x67\xfe\xae\x99\x00\x0d\x82\xeb\xfb\x2f\x43\x16\xba\x5e\x69\xe2\xd5\x67\xb8\x67\x50\x00\xc9\x68\x4e\xd3\x33\x0b\x19\x84\x18\x9b\x31\x55\xcd\xe0\xb2\x4a\x19\xf4\x90\x4f\x10\xb1\x58\xc5\x61\xa1\xee\x42\x42\xd5\x9a\xa5\x2e\x13\xc4\x46\x29\x8a\x33\x52\x88\x92\x54\x81\x9c\x52\x51\xca\x97\xef\xfb\xf9\x1d\xb3\xdf\xdc\x80\x87\x09\x49\xe6\x21\x8b\x20\x4a\xb0\x45\xd0\x93\xe6\x1b\x2f\x7f\xff\x95\x33\x64\x34\xdc\x94\x91\x30\x2d\x1d\xab\xfa\x4e\x9c\xa9\xbe\x13\x88\x33\xeb\xf1\x57\xa9\x97\x66\x93\xaa\x55\xec\x14\x75\x77\xc8\x5a\x75\xf6\x14\x39\x65\xe8\xaa\x15\x70\xa6\x9c\x72\x8d\x46\x63\x8a\xa6\x59\x42\x7a\x92\x78\x5e\x30\x7e\x3a\x4d\xe7\x35\x69\x0a\xcd\x6e\x34\xab\x6e\x71\x16\x59\xd2\x29\x64\x05\x9a\x64\x09\xb4\x38\xd0\x43\xec\x20\x0a\x54\xcf\x6c\xca\x8c\x93\xae\x47\x71\x16\x12\xe9\x2c\xce\xc6\x59\x68\xdc\x4a\x3c\x49\x0b\x5f\x73\xd3\x74\x06\xd0\xfd\xe8\xb3\xe8\x73\x68\x7b\xb3\x3d\xbb\x0c\xbc\xb2\x84\x3f\x55\x02\xfc\x38\x25\xd7\x52\xb1\x63\xd6\xea\x24\x4f\x40\x5e\x0f\x21\xab\x61\xc7\x84\x11\x9f\xcf\x16\x54\xd2\xed\x83\x4b\xd7\xde\xbe\xf3\x13\x0f\x7c\xa6\x5d\xae\x62\x97\x38\xe2\xf2\xa6\xb2\x3d\x03\x17\x5d\xb5\xed\xb1\xcf\x51\x25\xbc\xb2\x4b\x10\x5f\x0c\xf7\xf4\x0f\x2e\x3a\x77\xed\x3a\x72\xcf\xa7\x84\x11\xa7\x0b\x85\xc6\xae\xfb\xc4\xee\x3d\x9f\xa1\x61\xce\xe0\xa9\x7d\x22\x68\x0f\xf3\xa1\x30\xaf\xc6\x41\x0e\xcb\x71\xa6\x12\xb6\xcb\x61\x39\xe4\x03\xa2\x94\x98\x4a\x11\x72\x45\xc8\xa5\x7c\x0c\x6f\xcf\x65\xfb\xcb\x45\xc8\xf5\x17\x81\xec\x57\xfa\x2b\x71\x46\x8e\x43\x02\xfa\xfa\x73\xd9\xfe\xca\x30\x5b\xc9\x56\xd4\xb0\xda\x5f\x29\xb2\xb9\xfe\x1c\x19\xf1\xfd\x45\xc8\xd9\x73\x3e\x96\xb7\x67\x79\x1f\xf0\xf6\x30\xef\x23\x83\xbf\x12\x56\x87\xa1\x12\x0a\x4b\x45\xb6\xa2\x51\x91\xde\x41\x85\x67\x89\xf4\xcf\x8e\xa8\x3d\x05\x9e\x70\xc4\x11\xb9\x20\x3c\x5c\x8d\x39\x8a\x6c\x57\xb7\x1d\x6c\x57\x7f\x24\x9e\x4a\xb3\xbe\xa2\xd7\xb7\x48\x70\x0e\x25\x8b\x01\x35\xc0\x81\xbd\x93\x63\x1c\x2d\xad\x72\x30\xe8\xb6\x07\xec\x1d\x51\xbb\xa7\xc3\xe7\x0b\x72\x5c\x86\xb3\xb9\xf8\x48\xd8\x1e\x70\x24\x44\xd9\xe9\xea\x4c\xcf\xf3\xb8\x9d\x89\x7e\x8f\x9b\x2f\xad\xf6\x07\x45\x7f\xbe\x75\xd8\xe1\x1f\xf2\x4b\xc3\x2c\x1b\x04\xb6\x17\x58\xb6\x95\x75\x09\x6e\x91\x4f\x39\x0b\x6d\xed\x5f\x82\x33\xc6\x01\xac\x57\x6e\x6b\x73\x2e\x6a\x71\x07\x39\x4f\xdc\x51\x8a\x73\xe2\xd2\xd0\x62\xa7\x3d\xe8\xf2\xb0\xb7\xc4\xda\x87\x13\x4e\xe0\xf9\x80\x1b\x18\xb7\x3b\x2d\x33\x25\xc6\xeb\x60\xc3\x59\x31\xd6\x12\x6b\x8b\x07\xec\x00\xbc\x2b\x98\x71\x3a\xd8\x25\x92\x9c\x77\xf9\xba\x42\x2d\x4e\x31\xc8\x3a\xdd\x72\x4e\x4a\xf2\x39\x9b\x97\xb5\x71\xed\xe9\xb0\x87\x65\x3d\xa2\xdd\x05\x2c\x6f\xe7\x73\x7e\xb7\xcc\xa7\x6e\xba\xc9\xd3\xce\xbb\x3c\x02\x17\x59\x0b\x8c\x9d\xf3\x5c\x3e\x95\x27\x63\xb8\xe7\xb9\x4f\xa0\x10\x42\x83\x50\x81\x6c\x7f\xa5\x5f\xb6\xc9\x95\x30\x6f\xcf\x81\x3d\x55\x02\x3f\x33\xa6\xac\xd8\xf0\x95\x3d\xe6\xe4\x43\xc7\xbd\x5f\xf9\xe8\xbd\x93\xcf\xfa\xf3\xfe\x1b\x1f\xcc\x07\x98\x75\x9b\xbf\xdf\x7f\xc9\xe6\x5d\x6f\xdf\xfd\xfc\x25\x8b\x4a\x93\xcf\x06\x02\x37\x58\x8b\xcf\x6f\xe0\x30\xf7\x6c\xb3\x2e\xdc\x8a\xcd\xad\x42\xd8\x53\xc2\x7d\x06\xae\x50\xef\xb8\xad\x84\x7b\x0c\xe2\xe8\x4b\x06\xc1\x97\x73\x0c\x62\x0a\x33\x06\xcd\xff\x94\x27\xf4\xde\xea\xcc\x9a\x96\xf5\x32\xf5\xde\xca\xc4\x7b\x0b\x24\x55\x9a\x13\xfa\x7f\x98\xad\x01\x4a\x59\x09\xd2\x05\xa7\x4e\x75\xea\x3e\x68\x9f\x19\x83\xa3\xa6\xc7\x9a\x3b\xdd\x68\x7c\x6f\xc6\xd1\xfb\xc6\xd9\x76\xcd\xc7\x6a\xa6\xa7\xc6\xbc\x54\x9b\x59\xdf\x81\xf8\x00\x4e\x94\x69\xce\xd7\x6a\xa6\x54\xad\x15\x93\x2d\xbf\x1a\xe9\xc8\xd1\x74\xdc\x89\x71\xb2\x29\x20\xf0\x42\x8d\x7d\xfb\xc4\x52\x76\xa7\xf9\xa5\x06\xb7\xbc\x56\xab\x99\x1e\xf3\x50\x03\x8e\x4e\x61\xf6\x5a\x73\x1d\x66\x05\x65\xd0\x06\x1a\xc1\x01\x3a\xab\x35\xa6\x11\xa4\x10\x49\xa9\x2a\xce\x58\x33\x40\xb3\x25\xec\x9f\xc0\x29\xba\xea\xa0\x3f\x45\x04\xe8\x77\x3b\xf3\x18\xd1\x85\xbc\xd3\xd6\x9a\x84\x11\xa3\x1e\x49\xd3\x89\x61\x6d\xce\x3c\x66\x54\x62\x77\x91\xee\x73\x09\x22\x4e\x58\xe1\x41\x69\xf6\x8a\xa9\xd3\x53\x3c\x68\xd4\x8e\x86\xa5\xe9\xca\xb0\x53\xb2\x83\xc2\x40\x67\xa3\x73\x00\x0a\x9d\x03\xa6\xc7\xaa\x9d\xa2\x8e\x31\x8c\x77\x0e\x58\x82\x1a\xe8\x34\xb7\xd2\x79\xe8\xe8\x14\xbf\xde\x8e\xbc\x28\x84\xa2\xd3\x95\x79\xa2\x06\xb8\xad\xa4\xc7\xa6\xd2\xad\x15\x99\x97\x81\xd6\x22\x29\x64\x23\x28\x15\xb6\x92\x53\x84\x1c\xbf\xa3\xb1\xa7\xb1\xc3\xdc\xda\xdc\x30\xaf\x37\x8f\x1a\x3b\x60\x7c\x47\x83\xfc\xee\x69\xec\x60\x93\x74\x73\xe2\x31\xeb\x22\xf3\x96\x75\x4f\xf3\x8f\x24\x70\xfb\xb9\xfd\xb4\xde\x25\x81\x3a\xd1\x28\x5a\x8e\x7e\xd2\x5c\xb1\xdd\x6f\xe0\x78\x09\x2f\xd5\x70\x8b\x81\x17\xaa\xb8\xa3\x84\xab\x74\x5d\x82\x3e\xb5\xde\x41\x65\xd6\x71\x8e\x33\x3f\xb5\xfc\xce\x79\xb3\x4a\x02\x64\x98\x9a\xb8\xae\xb8\xf3\x38\x6b\xe0\xac\xe5\xea\x0f\x1b\x78\x38\x40\xf3\x26\xe7\x1a\x07\x2a\xe7\xce\x77\xe4\x71\x2f\xf5\x36\x2a\x74\x1d\xbc\x66\xf5\xc3\x0a\x02\x82\xa3\x82\x78\xc0\xe5\xa3\xcb\x6a\xe8\xc3\x5d\x82\xa8\x77\x0f\x56\xab\x7a\xa5\x57\x10\x5f\x70\xfa\x83\x5c\xc9\xaa\x3a\x8a\x5b\x6b\x72\x79\x04\x6b\x6d\x9c\x03\x5d\xdd\x83\xc3\x64\xb7\xc3\x2a\xc2\xc1\x69\x41\x2f\x0d\x10\xc3\x13\x81\xb3\xad\xf2\x13\x6e\xae\x78\x97\x4e\xf5\xd3\x78\x02\xd9\x93\xfb\xfa\xe7\x31\x34\x6a\x66\x1d\xe7\x78\x2b\x4d\x95\xb1\x26\x04\xa4\x53\xd9\x0f\x5a\x17\xe8\xfa\x44\x31\x99\x94\xc3\xe7\x25\xe5\x70\x32\x19\x96\x57\x77\x26\xee\x04\xa7\x75\xe0\xf3\x57\x04\xed\x5c\x0d\xe2\xc9\x62\x22\x19\x96\x93\x50\xff\x80\xe5\x83\xee\xb3\xae\xff\x5b\x41\x49\x16\x93\xdf\x4c\xf6\xda\xee\x06\x9f\x2f\x4c\x0e\x5c\x0f\x85\x63\xed\x9a\xb6\x3a\x9c\x24\xaf\xa1\xf1\xd1\x9f\xa1\x01\xee\x9b\x1c\x46\x2b\xd1\x5c\x5a\xef\x90\x33\x88\x17\x27\x19\xb8\xbf\x84\x97\x1a\x80\x57\x95\xf4\xf3\x49\x6f\xce\xd9\x04\x11\xcf\xab\xe2\xa4\x70\xd0\xed\x6f\x8d\xf6\x12\x09\x49\xa2\xae\x6a\xd4\x89\xb0\xcb\x71\xd0\x54\x62\x95\xfa\x2b\x30\x0c\xb9\x6c\x2e\x9b\x4e\xd9\x79\xe0\x65\x68\xae\x5f\xcf\x03\x61\x3b\x97\x6d\xde\xc2\x68\xaa\x1c\x07\x9e\xc0\xcc\x04\x90\x6f\x10\x70\x99\x4e\xf1\x76\x1e\xa2\xad\x3d\xe9\x6d\x8b\xe6\xcd\x51\x46\x3a\x73\x1d\x02\xec\x4a\x47\xfc\xd1\x8b\x42\xce\xe2\x39\x69\xf3\xa3\xfc\x42\xb8\x23\x14\x94\xa3\x59\x7f\xa0\x7d\xf2\xe7\x7d\x4b\x2a\x17\x39\x6d\xfe\x9e\xf6\x6c\x24\x04\x97\xf4\x0d\x6d\xe9\x6f\x91\x2f\xdf\xe6\xe0\x2f\x3e\x31\xc9\x2f\x64\x6c\xf3\xe7\x08\x81\x2b\x57\x2e\x5c\xb3\xe5\xa2\x8e\xc5\x26\x82\x89\xff\xb9\xa2\x3a\xd2\x16\xe8\xed\xca\x17\xc8\x53\xaf\x28\xad\x13\x18\x25\x6d\xde\xca\xcf\x87\x8f\x84\x03\x72\x7b\x8e\x3c\x71\x74\x5e\x7a\x78\xa4\xbd\x5d\x22\xcf\xab\x94\x39\xe1\xf1\x2b\x36\x5f\xfc\xe7\x93\x88\x1f\x84\x93\xf3\x0f\x5e\xba\xee\x93\xed\x4a\x25\xb2\xd8\x44\x56\x6c\x71\x15\xea\xe7\xbe\xcb\x8d\xa1\x28\x2a\xa3\x21\x44\xb4\x70\x37\x8d\xe3\xf0\x2a\x10\xf1\xa1\x89\xe6\x6a\x62\x5d\x16\x6a\xa8\x40\x5e\xef\x6a\x13\xc4\x03\x2c\xef\xb7\xea\x71\x58\x4d\x10\xb1\xcd\x8a\xeb\x68\xaa\x4c\xc3\x51\x21\x62\xd0\xfd\x90\x2b\x32\xb9\x22\x5b\x09\x11\x33\x1e\x96\xfb\xe7\xc1\x30\x43\x3c\xd7\x94\x9f\xca\xc9\xbe\xea\x95\x9d\x0f\x5e\x71\xd5\x83\x3b\x5e\x4e\xaf\x9b\xbf\xf8\x95\x0d\x42\x20\x7f\xf3\xa2\xd1\xc5\xf3\xd7\xa5\xbf\x3a\x34\x3c\x12\xbe\x74\xe3\xea\x9b\x3c\x23\xf3\x87\x37\x54\x97\xce\xdd\x76\xb3\x76\xee\xe0\x26\x36\xf0\xf1\x57\x76\xec\x78\xe5\xe3\xc5\x8b\xae\x5b\xbc\xe8\x7f\x7d\x5c\x96\xe7\xee\x58\x74\xce\xa2\xc5\xd7\x5d\x54\x8c\x5e\x78\xce\x70\xf8\xa2\x1b\x2f\xb9\xd1\x33\xbc\x68\xac\x6d\xf1\xc6\x35\xcf\x7c\x6d\xd5\x26\x8b\xbf\xea\xc9\xf7\xb8\xdb\xb8\xff\x89\x22\x48\x43\x28\x18\x4a\x40\x58\x53\x2b\x40\x17\xbd\xcf\xf1\x32\xe4\x2a\xb9\x6c\x8e\xb7\xd3\x0b\x72\x25\x07\x32\x2f\x87\xe5\xca\x30\x94\xfb\x68\xfd\x00\x0f\xf6\xea\xe8\xee\x05\x17\x5f\x3a\x0a\xd1\xd1\xd1\xdd\x0e\xf7\x35\x87\xcc\x8f\xfe\xe9\x72\xb1\x18\xab\x8c\x1e\x1a\xdd\xcd\x7b\xae\x39\x04\x9f\xf8\xd3\xe5\x62\x29\x1e\x4b\x57\x46\x77\x8f\x5e\x7a\xf9\x88\xf9\xeb\x51\xd8\x78\xf9\xc8\x9e\x51\xf2\x95\x6f\x8e\xee\x76\x3a\xc8\x77\xfe\xf3\x72\xb1\x7b\x4e\x65\x14\xb8\x4b\x47\x77\xf3\x2e\xfa\xad\x0d\x42\xaf\x16\x4b\x5f\x9b\xbf\x74\x74\xf7\xe8\xa8\xf9\xeb\x11\x4b\xaf\x37\x9a\x6b\x07\x0a\x48\x42\x31\xb4\xb0\x99\x69\x6d\xa1\x5e\xb5\x48\x23\x32\x76\x6b\xd5\x17\x34\x41\x8e\x45\x6b\x16\x06\x5d\x41\x83\xaa\x9a\x12\x5d\xfe\x25\x2a\x0a\x62\xdd\x6e\x0b\x5b\x7f\x86\xa1\x22\x58\x25\x1d\x53\x5e\x71\x45\x11\x14\xb1\x39\x33\xbf\x31\x78\xe5\x13\x5f\xfd\x5c\x6d\xae\x95\x5a\xa9\x11\x47\xf5\x7b\x43\x17\x0e\x0d\x5d\x58\x63\xbf\x21\xa9\xc5\x78\xbc\xa8\x4a\x27\x16\x77\x0e\x0c\xfc\x91\x79\xe9\xc4\xeb\xe4\xc2\xd0\x29\x6b\xa9\x47\x66\xaa\x62\x5a\x4a\x7a\xab\xa5\xa6\xa1\x92\x53\x20\x97\xed\xab\xf4\xab\x32\x84\x43\x3c\x01\x0e\x20\xe4\x78\x28\xfd\xf0\x27\x50\x00\x77\xda\xef\xf7\x75\xf9\x20\x4a\x37\xed\xe6\x6f\x0e\xfd\x08\xb6\xff\xe8\x10\xc8\xed\xbe\x2e\x9f\xdf\x6f\xbe\xe5\x27\x9b\xb4\xf9\x1f\xe6\xa1\x9f\xfc\x10\xb1\x90\x43\x22\xe7\xe4\x8e\xa0\x5e\x34\x84\xe6\xa3\x47\x11\xee\xa6\x19\x1d\xce\xc0\xc3\x6a\xbd\x9b\xa3\x11\x97\x82\x33\x4f\x60\x43\x82\x2e\x2b\x23\x0e\x90\x73\x62\xd0\x99\x07\xbc\x80\x2e\x90\x83\x54\xac\x1a\xc4\x40\xaa\x01\xbd\x00\xf9\x3a\x27\xce\x55\x55\xea\x70\x86\x12\xc3\x74\x2f\xa0\x8f\x40\x9e\xa8\x8e\xb6\xe4\x84\x80\xa3\x86\xbe\x10\xf2\xba\x0a\x82\x88\x99\x2a\x2e\x08\xd8\x59\x45\x3a\xd7\x2d\x88\xb8\xb3\x8a\x07\x84\xbf\x47\xbe\x68\x6e\x2e\xcd\xf5\x63\x51\xc4\x52\xb5\xa7\x17\xb4\x38\xc8\x42\x11\xd2\x45\xae\xdc\xd7\xac\x14\xe4\xe4\x74\x11\x72\x82\x1c\xe7\xa4\x90\x9d\x97\xd2\x74\xdd\x81\x60\x28\xce\xca\x61\x59\xf0\x41\x90\x2e\xfa\x0a\xb9\xbf\xb1\xad\x5b\x6a\x0f\x32\xc5\xd1\x15\x25\x65\xec\xde\x95\xb5\xec\xc2\xd5\x83\x79\xf6\x0b\x8e\xfe\xa5\x23\xa9\xc1\x55\x95\x8e\xfa\xe3\xb5\xcf\xae\xed\x68\xd9\x1f\x10\xba\x42\x6d\x3c\x37\xb4\xe4\xb7\x5f\x1d\x5b\x0d\xfa\x79\x9b\xfc\xb0\x12\xec\xbe\x96\x52\x75\xac\x72\xc9\x7d\xf3\xf9\x15\x2b\xb9\x60\x61\xde\x35\xa3\xe7\x2e\xf3\x9a\x86\x8f\x0f\x16\x06\x37\x0f\xff\xcd\x57\xdd\xe7\xad\x10\xd6\x75\x6c\x61\xe2\xb1\x42\x44\xb2\xf3\x0c\x80\xe8\x18\x98\xcc\x8b\x9f\x18\x59\xdc\xd2\xcc\x09\x5f\xc9\x7e\x86\x7b\x0e\xcd\x47\xbb\x11\xb1\x42\x5d\x06\x81\x28\x71\x9a\x4d\x6c\xa3\x0b\xd9\xb9\x8d\x7a\x90\xfe\x41\x90\xa0\xaf\x29\x53\x7e\x02\x57\xe9\x1a\xf4\xed\x6a\x3d\x42\x57\x3f\x8c\xc4\x9d\xf9\x3a\x4f\xe3\x5f\x3c\xb2\x66\x94\xfb\xad\xa8\x05\x91\x64\x84\x17\xc4\x03\xcc\x9c\x51\x2a\x31\xbf\xf0\x82\x3b\x91\xec\xea\xd5\xc8\x81\x4f\xc4\x85\x2a\xd2\xbb\x7a\x89\x71\x23\xce\x25\x12\xf4\xc2\xa0\x95\x58\xd6\x88\xbc\x86\xa1\x42\xb5\x4a\xba\x8f\xfe\x09\x0d\xde\x2e\x85\xe2\x20\x6b\x52\x3a\x6c\xe7\xed\xfc\x30\x68\xfd\x64\x4c\xcb\x3e\x26\x9d\xca\xd2\x0a\x99\xdc\xb0\xad\x32\x0c\xb9\xda\x53\x91\x90\xcb\xc9\x96\xba\x37\x3e\xb5\xe3\x1f\x1f\x5b\xb0\xaa\x3d\x73\x41\xa8\x53\x91\xe3\x7f\x7c\xc5\x21\x49\x9d\x73\xd3\x57\x48\xca\xa7\x94\xe5\x83\x6a\xe7\xca\x5c\x97\xfc\x13\x35\x77\xa1\x1c\xa9\xd8\x25\x97\xe0\x11\x9c\x3d\x9e\x76\x66\xac\xd6\x5b\x69\x1d\xb8\xf0\xb2\x8e\xb1\xfa\x6d\x7d\xcb\xda\x62\x52\xa1\xda\xb6\xa6\x4b\xab\xa9\xf7\xc6\x06\xfa\xdd\x3e\x48\xc5\x3f\xdd\x22\xb3\xa3\x1c\xd7\xea\x71\x3f\xc4\xf9\xec\x5e\xb7\xe0\xaa\x3c\xb8\x18\x31\xc4\xbb\xe6\xbe\xd6\xc4\x32\x89\xa9\xf5\x3f\x7d\x25\xec\x99\xc0\x6e\x83\x08\x45\x77\x7b\x04\x11\x3b\xa6\x17\x15\x4d\x0b\x4e\x86\x7c\x32\x34\x87\xd2\x80\x87\x9b\x5b\x9a\x05\xa4\x53\x2a\x68\x3a\xe4\xc4\x76\x76\x27\x42\x36\xf2\x7c\xaa\x23\xec\xf4\x6f\x28\xc4\x51\x0a\x3d\xd5\x5c\x13\xc6\xae\x61\x97\x61\xed\x3a\x68\x61\x65\xc8\xd0\x11\xa7\xaa\xd8\x4b\xeb\xe4\x69\x64\xae\x1e\xa3\xd9\xd1\x98\xec\xcc\xe3\x56\x15\xa7\x4a\xa4\x15\x19\xba\x58\x86\x55\x57\x87\x39\xba\xd6\x89\xee\x95\x55\x95\xe8\x7c\xfa\x27\x5f\x5c\x74\x46\xa1\x1e\x4d\xaa\x2a\x0e\x18\xba\xbb\x45\x55\x0f\x88\x01\xc9\x41\x67\xca\x05\x89\x6e\xd2\xdb\x67\xca\xf1\xb0\x43\xc0\x36\xe2\xf4\x3a\xe8\x5c\x48\xec\x15\xb0\x40\x1a\xd4\xf2\xc5\x15\xba\xe6\x34\x94\x15\xc9\x5a\x08\x89\x15\xac\x45\x91\x2a\x5a\x39\xcd\xbc\xda\x78\xd5\x9c\x80\xf1\x1a\x9d\x7d\xb3\xa9\xb6\xa9\x01\x85\x5a\x0d\x6a\x35\x4b\x10\x74\xd1\x57\x72\xd5\x5a\xe2\xe8\xa8\xe9\xa9\xd5\x1a\x8d\x53\x64\xe2\xa3\xf3\x0c\x53\x68\x9f\x55\x2f\xa8\xf3\x2e\x4d\x23\xfc\x27\xe8\x4c\x2f\x07\x8d\xbb\x88\x06\x0e\xd0\x20\x6f\x1b\x55\xa9\xe1\x33\x05\xc0\x43\x5e\xf7\x4b\xaa\x4a\xfa\xaf\x40\x04\xe0\x0b\xd0\xfc\x57\x2c\x69\x09\x25\x28\xab\xea\x81\x56\x97\xdb\x61\x21\xbc\x12\x6e\x3d\x55\x00\xbc\x25\x80\x54\x42\x10\x0f\x00\x67\x43\x04\xbf\xb5\x05\x04\x11\x47\xaa\x58\x12\x70\xcb\x2c\x69\x34\xb9\x67\x4f\x97\xca\x2c\x69\x10\x19\xd4\xa6\x45\xb2\x69\x46\x1a\x96\x04\x98\x97\x66\xa4\x72\x62\x7b\x83\xe0\x69\xa6\xe9\x77\x90\x3e\x22\xa2\x30\xda\x32\xb5\x7e\x29\x71\x09\x70\x98\x0a\x82\x76\x8a\xba\xd7\x47\x97\x31\x14\xc8\xc0\x96\x4b\x58\x98\xc0\x01\xe3\x40\x30\x20\x38\xe8\x9f\x76\xe1\xe9\x9f\x4a\x0a\xd2\x3a\xc2\x90\x3b\x8f\xdd\x94\xfb\x08\x81\x53\x8e\xff\x1f\x6f\xdf\x02\xdd\x46\x79\xad\xbb\xb7\x34\x96\x2c\x4b\x96\x34\x7a\x4b\x7e\xe9\x61\xcb\x76\xec\xd8\x1e\x8d\x25\x59\x0e\x49\x08\x24\x29\x4d\x02\xe4\xa6\x14\x12\x4a\x69\x1e\xca\xc3\x90\x87\x49\x42\x48\x9a\x14\x68\x5a\xb8\x29\x2d\xd4\x4d\x49\x4a\x49\x0a\xdc\x84\xf4\xd2\xb4\xa5\x23\x9b\xf0\x6a\x4a\x5b\xda\x4b\xd5\x87\xe9\xa5\x18\xb7\xd0\xc7\xea\xe9\xea\x62\x71\x56\x20\xed\x4a\x73\xce\x3a\x27\x24\xe3\xb3\x66\xcf\x1e\x59\x7e\xa5\x9c\xae\xae\x63\x7b\xf4\x8f\xc6\x33\xdf\xbf\xf7\x9e\x6f\xfe\xf9\x5f\x7b\xff\x76\xd1\xf3\x0c\x98\xcc\x16\x8a\x12\xe1\xac\x16\x3d\x85\x0a\x81\x9e\x5b\xee\xcf\x20\xc5\xcc\x69\x59\x4c\x88\x5a\x4b\x8b\xd9\xad\x71\x39\x5f\x2c\xea\xf7\xd4\x20\x78\x11\x07\x54\x47\xde\xfc\x4e\x5e\x75\xe0\x00\xa9\x70\x19\x1d\xac\x24\xbd\x47\xd3\x64\xd0\x43\xf1\xb5\x3d\x6e\x9b\xee\x2c\x36\x4c\x3a\xd8\x47\x95\xaa\xe1\x21\x2f\xdd\x9d\x6a\xd2\xd3\x4a\x3a\x54\xe9\x3a\x88\x44\x61\xd2\xc1\x3b\x51\x87\xc0\x64\x1d\x9a\x48\x7a\x9d\xa0\xcd\xe5\x3a\x50\x08\xe2\xfc\xba\x72\x1d\xf2\x24\xbc\xf6\x4b\xac\x04\xe0\x67\x95\xdb\x35\x55\xe0\x24\x2d\x56\x00\x2b\x60\x37\x7c\x44\xdc\xfc\xa8\x92\xec\xae\xd1\x41\xab\xdd\xab\xbd\x92\x3c\xc3\x14\x76\x92\xa2\xda\x06\xaa\x6c\xda\xa7\xd3\xd6\xa6\xcb\x6d\xaf\xd4\x8a\x53\xb3\x45\xf7\x62\x31\x0c\x4e\x71\xc1\x8c\x4d\xf6\x1b\xc5\x09\xf9\x83\x51\x68\xdb\x76\xad\x05\x39\x6e\x74\x0a\xdb\x5d\xda\xfe\x31\x79\xed\xa3\x83\x56\x17\xc9\xeb\x1c\xd6\x0a\x9f\x2a\x7a\x4f\x54\x79\x34\x79\xab\x02\x7f\x47\x5e\xd9\x6f\x2e\x93\xb9\x24\x6f\x51\x17\x92\x83\xf1\xce\x2c\x6e\x29\xe6\xa3\xee\x77\x3e\x6b\xdc\x77\xb7\x76\xaa\x6b\x74\xb0\xe4\x10\x3d\x65\xc6\x49\x3c\x39\xd9\x7f\xec\xcc\x09\x6c\x3f\x76\xf6\xbd\xe3\xea\xc8\x89\x33\x45\xdd\xa5\x51\xf7\x5c\xd4\xfd\x18\xf5\x7f\x9c\x59\x60\xb8\x3b\xce\x69\x35\xc6\xd1\x0c\x59\xe2\x30\x6f\x8a\x34\x89\xa9\xd2\x68\x45\x46\xd0\x2d\x7a\xc8\xd5\x12\x0a\xb5\x5e\x6d\x37\x3e\x9d\xcb\xf8\x64\x09\xbd\xb3\xf1\xec\x31\x4d\x96\x33\x27\xd4\x91\xe3\xef\x4d\x10\xb2\x88\xd7\xaa\x43\x9a\xa4\xc7\xdf\xd3\xfd\x30\xcb\x25\x55\x1d\x17\x2e\x8c\x8f\xfb\xfd\xc3\xf2\xc6\xc7\xe5\x8d\x7d\x10\x79\x83\x35\xa8\x19\xd5\x90\x68\x82\xbc\xf9\x0b\x17\x74\x69\xcf\x1e\x9b\x2c\x6d\x5e\x1d\xc2\x6b\xff\xc7\x6d\x1b\x33\x6b\xb2\x1a\xf7\x79\xa2\xac\x78\xfe\x82\x4e\x02\x4d\x91\x63\x67\xdf\x9b\x5f\x66\xda\x7e\xbc\x56\xe7\x64\x85\x8f\xfc\x0b\x23\x70\x05\x94\x5e\xc7\xd4\xed\xa3\x88\xda\xdb\x87\x22\x1d\x3b\x46\x95\x20\x45\x35\x86\x42\xa5\x95\x1a\x51\xc6\xec\x0d\x45\x14\x15\xb3\x3e\xc7\x3e\x6d\xc3\xb4\x37\x5d\x12\x2e\x6d\x48\xad\x2f\xf5\x56\x34\xe4\xc2\x01\x4d\x1e\x4d\xae\xa2\x7a\x4c\x3d\x56\x54\xfb\x8b\x13\x1c\x71\xa9\x9e\xf7\x26\x98\xcc\xa3\xc2\x63\x10\x83\x16\xd0\xea\x23\x5e\x7d\x86\x44\x2d\x8d\x48\x27\xb0\xad\x10\xa8\xd5\x27\x43\x14\xbc\x4e\xd1\xa3\xb8\xb4\x27\x35\x20\xc7\x4c\x56\x4b\x83\xd6\x32\xce\x80\x9c\x69\x4e\x26\x2a\x32\x9e\x6c\xa6\x13\x13\x71\xab\x13\xc1\x6a\x79\xb3\x32\x88\x1d\x47\x2a\x2a\x6c\x36\x9b\xd3\x61\x37\xb9\xd0\x69\xab\x0c\xaa\xaf\xe3\xa3\x26\x93\xd5\x66\x73\x55\x09\xa7\xd5\xbf\x2d\x75\x9b\xac\x5e\x75\x89\xcf\x6f\xaf\x74\x55\x9b\xfa\xbc\xa2\x88\x02\x7e\xc7\xe1\x72\xd8\xdc\x96\xd7\xd5\xd7\x6e\xf4\x96\x9e\x65\xb2\x5b\x08\x1a\x60\x3e\x0c\x9a\xd9\x6e\x95\x6e\xc5\x42\xae\x46\x11\x9a\xd7\xe1\x19\xa6\xa2\x27\xca\xc1\xd9\xe8\x81\x2e\x44\xcc\x3c\x33\x51\x71\x8b\x4a\xad\x1e\x79\x54\x8e\xa5\xb2\xe9\x58\x3c\xa9\x87\x36\x48\x77\x60\xa7\x1e\x3c\x82\x6c\xaa\xdd\xdf\xce\xb4\xee\x8b\x8c\xe7\x9d\xc5\x8f\x7f\xfc\xc4\x19\xed\xcd\x44\x85\xce\xc0\x89\x33\xae\x17\x74\xfb\xbd\x20\x58\x4d\xa6\x33\x34\x28\xa0\x5b\xb6\xcc\x27\xa0\x0e\x1a\xe1\x06\x96\xd3\x45\x2f\xd5\xc8\x30\x2a\x4d\x65\x6d\x33\xbb\xde\x93\x93\xd4\xaa\x7c\x1e\xd1\x73\x2a\x14\xae\x6f\x88\x36\x6a\xb5\x5e\xab\xa8\x24\x72\x50\x08\xb8\x44\xcf\xa9\x4a\x5b\x7d\x3c\x41\x47\x23\x22\xf5\xb6\x95\x9c\xac\x9b\xad\xdc\xeb\xa6\x3b\xfc\x66\x9b\x13\x71\x8b\xbf\x89\xbc\x06\xf8\x69\xba\xee\x93\x86\x47\xf5\xd1\x5d\x4b\xf2\x27\xce\xe0\x5f\x71\xcd\x21\x3c\x7f\x48\x3d\xa9\x53\x62\xed\x87\xf7\x3e\x6c\x10\xf4\x93\xd7\x9d\x39\x61\xc3\x1b\x0f\xa9\x8e\x43\xea\xe3\x53\x7c\x5b\x6e\x36\xfc\x71\x6a\x68\x91\x0e\x6f\xb9\x87\x8b\xee\x95\xe3\x47\x6a\x89\x86\x4b\x3d\x54\xc6\x42\x68\xcf\x09\xb6\x2a\xa7\xcb\xe3\xd5\x3d\x19\x83\x35\xa2\xe7\x39\xb4\x58\x1d\xd5\x6e\x71\xaa\x97\xa5\xe1\xa3\x63\xe2\xc0\x12\x33\x79\xe9\x04\xb7\x3f\xb1\x7d\xfb\x13\x33\x3b\xe9\x78\xb4\x7f\x6f\x2f\x2b\xc7\x14\xb0\x81\x1b\x7c\xd0\xc1\x51\xb8\x45\x8e\xe0\x40\x8b\x3c\xfa\xc9\x89\xaf\x72\x78\xd0\x43\xab\xd3\x79\xc0\xd6\x56\x08\x70\x9f\xa2\x51\x16\xd8\x4c\x14\xda\x5f\x4e\x27\x9c\x76\x21\x64\x77\x5f\x0c\xe1\xf7\xf0\x65\xf5\x4d\xad\x96\x95\xcf\xa3\xd7\xee\x74\x55\xa9\xef\x99\xa3\xaa\x03\xcf\x6b\x34\xb9\xb4\x2b\x05\xd3\xe4\xdf\x36\x29\xff\x0f\x96\xb9\x3e\x85\xd0\x36\x21\xf7\x76\x6c\xc7\x66\xf5\x6a\xbc\x75\x3c\x77\xd3\x69\x1a\x9e\x3a\xff\xfe\xdb\x13\xf2\xbe\x07\x6c\x14\x77\xd3\xd0\x5d\x7f\x43\x57\xe8\x81\x29\xc5\x51\xc5\x91\xd2\xb2\x17\x29\x7b\x51\xcb\xde\x3f\x45\xf7\x66\x6c\x9e\x90\xb9\x64\xba\xe1\x51\x75\xf1\x61\xd3\x7d\x65\x99\xff\x50\xfd\xa5\xe9\x86\x23\xea\xe2\xaf\x5c\xea\x4d\x95\xd6\xef\xd2\xf4\xae\x06\x1f\x84\x4a\x9a\xfb\x87\x95\x90\x9e\x7b\xb8\x53\x09\x90\xe6\x01\xca\x3a\xa0\x65\x1d\x99\xac\x79\x30\xdb\x6c\x6e\xf2\x5a\x9b\xad\xc1\x72\x01\xd6\x8c\xac\xe9\x37\xbd\x60\xbe\x70\x68\xe4\x10\xbe\x5a\x66\xfe\xdf\xad\x7d\x63\xcd\xc5\x3f\xa2\xe9\xbb\x7f\x39\x34\x72\x48\xad\x9e\x4e\x8e\x8e\x19\xe4\xf0\xa6\x3e\x80\x28\xde\xa0\x35\x98\x0d\xda\xcb\x44\xd9\x37\xb2\xf6\x0d\xb3\x96\xdb\x7f\xe2\xba\x32\x63\xe4\x47\xd6\x8c\xe0\x99\x0b\x87\x46\x1e\x7e\xcf\xf4\xc2\xfb\xff\x9a\xd2\xcb\xb0\xe0\xd8\x18\xc5\x24\xac\x80\x4a\x08\xea\xeb\xaa\xa0\x62\x23\xcf\x27\xcb\x70\xa1\xca\x70\xaa\xb7\xa1\x18\xb4\x61\x50\xf8\xaa\xda\xa4\xfe\xec\x7a\xd3\x13\x97\x56\xe3\xe3\x66\xf7\xfb\x3f\x45\xb7\x7a\x17\x3e\x31\x6c\x3e\x79\xa9\xc7\x28\x13\xf3\xa4\x9b\x1f\xc2\x70\x2d\x68\x6f\x0f\xcb\xf0\xa0\x68\xa1\x1b\xe9\xb5\xb5\x29\xce\xd4\xa0\x45\xa4\x05\x25\x04\x5b\x9b\x52\x99\x32\xd6\xff\xf3\x0c\x6b\x85\xa6\x47\x6f\x83\xdb\x75\x57\x3a\x97\x45\xf4\x0c\xda\x02\x41\xbd\x57\x48\x2f\x52\xc4\x98\x28\x07\xc9\x63\x5c\xab\xe3\xc6\x93\x9a\xde\x75\xfe\x0b\x78\x3e\x5f\xac\xf7\x1d\xbe\xb4\xf0\xb0\xbf\xce\xb4\x32\x9f\x3f\x6c\x7e\xc7\x57\x4f\x85\xe0\xc5\xa7\xfd\x75\x1a\xfb\xeb\xcc\x1b\x8b\xc4\xbf\x79\x14\x7f\xcf\x4b\xf3\xf1\xae\x04\xad\x7e\x68\x19\x1e\x74\x91\x84\x2e\xd1\xd6\x36\x68\x71\x4d\x10\xaf\xde\x78\x51\x5b\x28\x52\x31\x14\x2c\x2e\xd1\x33\x68\x0f\x86\x38\x30\x7e\x49\x28\x3f\x36\x5b\x49\xa4\xa6\x6c\x10\x83\x68\x1e\x17\x4c\x7d\x77\xf7\xdd\xea\xfd\x9a\x64\x8b\xf6\xee\xc6\x35\x7b\xd5\xa6\x7f\x29\x97\xf0\x2d\xf5\xbd\xdd\xf7\xa8\xfd\x75\x85\xbd\xbb\x71\xf5\x5e\xb5\xd1\x7c\xb2\x68\x3c\x2b\x96\x0a\x27\xc9\x1a\x84\x04\xad\x95\xd8\x58\x26\x4c\x53\x59\x64\x05\xdd\x2a\xd6\x66\x2c\xd9\xc4\x5b\xe6\x16\xc9\x62\x6c\x3c\xa9\x8e\xaa\xcf\xb1\x81\xf2\x27\x4f\xde\x63\xfc\x8d\x8b\xa2\xfe\x8d\x4e\x22\x63\xbd\xff\x06\xfd\xf3\xde\x6f\x68\x9f\x13\x62\x93\x7a\xc8\x76\x9b\xe9\x9d\x6c\x19\x1e\x74\x92\xed\x9c\x5a\x93\xc6\xe2\xd6\xaa\xdc\x91\x4e\xa5\x66\xb8\x20\x54\xa6\x4a\xe6\x73\x0d\x0f\xba\x60\x7c\x20\x87\x5e\x90\x2e\xb7\xc6\x67\xa5\x6e\x58\x71\xa4\xa8\x13\x30\x62\x11\x3d\x8a\x37\x07\x05\x87\x53\xf4\x14\x34\x03\xeb\x87\xaa\x26\xda\x59\x8c\xf9\x75\x33\xeb\x95\x72\x33\xcd\x6a\xd7\xed\xdc\xaf\x3a\x48\x3d\x7d\x18\xba\x58\x66\x63\x75\xa4\xa8\xf6\xd7\x7d\x93\x0a\x23\x0a\x1f\x5c\x2c\xc2\x34\x3a\x7d\x6c\x1a\x9d\xa6\xd3\x66\x82\xfc\xe5\xc2\x2b\x75\xa2\x52\x9d\x83\x82\xc5\xa9\x91\xc4\x11\xce\xe5\xe8\x25\x39\x59\x05\xbe\x51\xfa\x58\xbf\x0d\xc7\x55\x28\xaa\xa3\xea\x56\xd2\x81\x46\xfb\xd5\x91\x72\x1d\xb6\x16\xe9\xde\xb0\x16\x38\x30\xae\x43\x91\xe6\xc3\xd9\x88\x29\x93\x7d\x07\xf4\x1a\x62\x3a\xc6\x11\xf9\xde\x5f\x2e\x28\x1c\xbf\x0e\x07\x2e\xd0\xdc\xe1\x64\x9e\xa2\x56\x5c\xf2\x10\xa0\x05\x00\x36\x08\x8a\xf0\x34\xb7\xa9\xf4\xc8\xd8\x9f\x06\xa5\xa2\xb3\x10\x88\xc8\xb2\x62\x1a\x2e\x04\x6b\x69\xb1\xc8\x82\xdd\x25\xcb\x4a\xe5\x70\xc1\xe1\x66\xeb\x58\x8d\x10\xba\x76\xea\x4a\x53\x9c\x6e\xed\xcd\xa1\x84\x75\x23\xd9\xab\xb4\x56\x55\x85\xde\x78\x0d\x38\x45\xcf\x90\x60\x76\xb9\x79\x0c\xc8\xe3\xf3\x8b\x7a\xc4\x46\xdd\xe5\x53\xb1\x8a\x05\xf4\xe5\x72\x4a\xa5\x66\x58\x7d\xba\xad\x3f\xa6\x77\x3b\xd0\x46\xf5\x22\xed\xeb\x1c\x4c\x1b\xf5\x4b\x8a\x11\x3d\xc0\x41\xa3\x69\x77\xd6\x2b\xc5\x57\x4c\x2f\xd2\x88\xde\x2b\xea\xa8\x3a\xfa\x0a\x8d\xef\x95\x62\xd9\x1b\x7e\xd9\xbd\xba\x5f\x36\xb9\x5e\x83\xd1\xa9\x12\xb4\x6b\xaf\xa6\x21\x9b\x3b\x58\xd9\xa6\xbd\x99\x2b\x68\x25\x15\xb7\xbb\x50\x65\xa7\x8e\x42\x49\x2f\x1e\x45\x5e\x79\x59\xff\xb0\x96\xe2\x59\x34\xf9\xea\x4d\x0d\x38\x1e\x43\x5e\x5f\x09\x36\x9f\x4a\xf1\x1f\x05\x0c\xa1\x40\x81\xf6\x2a\xda\x6f\x8c\xa8\xef\x86\x9b\x4c\xa7\x29\x3c\xf6\x08\xb6\x97\x3e\xfb\x7f\xae\x2e\xa0\x18\x18\xdf\xcf\xd7\xa5\x63\x21\x4b\x85\xba\x83\xe2\xf1\xad\x68\xf0\x8a\x3b\xc5\x45\x0d\xe5\xb1\x8d\x97\x81\x0c\x3d\x3c\x1a\xe9\x90\x15\x79\x78\xd0\x64\x77\x6a\xed\xdd\x96\xce\xc1\x50\x6d\x93\x2c\x93\x6f\x41\x24\x35\x3e\xd9\xb5\x45\x16\x3d\x05\x4b\x94\x82\x1a\xc7\xd2\x9a\xe4\xb4\xb6\x8f\x3f\x96\x8e\x77\x98\xd3\x34\xc9\x2f\x1d\xf3\xd3\xc0\xa9\xf6\xea\xd1\xf6\xeb\xcd\x5a\xad\xde\x85\x79\x1c\x58\x1a\xc6\xf3\xe1\xa5\x38\x40\x33\x79\x53\xe1\xb0\xda\xbf\x34\xac\x3a\xc2\x4b\xd5\x7e\xe3\x48\x8f\x23\x89\x0f\xa8\xbb\x92\x8e\x9e\x1e\xac\xb0\xf9\x9d\xe6\xdd\x81\x30\x9a\x7a\x7a\x1c\x49\x75\x17\x3e\x50\x3a\x7c\xf1\x80\x76\x98\xc7\x36\xf5\xb6\x53\x08\x6a\x69\x2d\xff\x0e\x48\xc1\x60\x88\x6b\x0a\x81\x4e\xea\x33\x27\x57\x1f\x8f\xcf\xd6\x86\x4a\x67\xa7\x1e\xf8\xc8\xe3\x26\x4a\x85\x6b\xa9\x16\x27\x4e\x69\x25\x65\xe5\x26\x31\xa6\xcf\x25\xa3\x36\x7c\x2c\xe8\x6f\x92\xd3\xb1\xe6\x18\xa6\x9b\xfc\xfa\x2c\xf3\x39\xad\xea\x88\xd6\x68\x1a\x28\xf6\x61\xb3\x7a\x53\x5e\xfd\x5c\xde\x70\x6e\xc0\x81\x22\x36\xf7\xd1\x31\xad\x42\xa5\x9f\xad\x37\x68\x2e\x2d\x2c\xae\x55\x47\xf3\xa5\xe6\xfe\x40\x71\xed\xda\x62\xfe\xd2\xe2\xe3\xf7\x1d\x07\x04\x37\xb8\x85\xc7\x85\xc7\x21\x0a\xe0\xa9\x37\x07\xeb\xcd\xf2\x7c\xcc\x24\x3b\x31\x69\x71\x61\x07\x36\x67\xe7\x61\x27\x76\xa0\x0b\xdd\xd8\x30\xef\xe0\x86\x8d\xaf\x7d\x65\x6f\x43\xc3\x71\xd1\xea\xfd\x81\xb7\xdb\xbd\xeb\xa1\x8b\xeb\x77\x89\x16\xe7\xe7\x9d\xb3\x3d\xc7\xcc\x7f\x6e\xfb\xdc\x17\x47\x36\x6c\x3c\x38\x37\x86\xc7\x3c\x1d\xce\x03\x4e\x41\xdc\xb5\xfe\xe2\x43\xbb\x44\xc9\xf7\xb2\xd7\x22\x1e\x9b\x38\xb7\x5f\x7b\xbf\x75\x72\x7c\x25\xc7\xb0\xd2\xd2\x49\xf3\xf6\x16\x74\x16\xae\xa2\x05\x5e\x6a\xb4\xf6\x65\x67\x2e\xa7\xb4\x88\x43\xc9\xd6\xd4\x95\x64\xb4\xb9\xd8\x9d\xc9\x62\xba\x7b\x9e\x39\xa5\x91\xd7\xcf\xfe\x51\x34\x2b\xc1\x17\x98\x8f\xf3\x70\x2e\x66\xa2\x41\xbf\x2f\xd0\x80\x81\xcc\x5c\xec\x10\x12\x71\xa7\xe0\x42\xbf\x13\xb7\x98\x02\xc9\x15\xfd\x2b\x92\x01\x44\xdc\xe2\xf4\x6b\x85\x8c\xaf\xbe\xce\xf7\x33\x5f\xdd\x83\x38\xef\x41\xda\xb1\x44\xf2\xfb\xde\xba\xfb\x96\xaf\xdf\x99\x9f\xdf\x6e\xb3\xa5\x46\x7c\xb2\x13\x3b\x53\x42\x75\x34\xec\xf7\xd5\xd4\x56\x55\xa5\xd4\xd7\x9c\xb2\x6f\xc4\x5f\x57\x67\xfa\xa6\x3f\x2c\xc4\x84\xb8\xff\x60\x28\x74\xd0\x1f\x17\x62\x42\xd8\x5f\xac\x0c\x2f\x90\x5a\xfd\xb1\x96\x96\x98\xbd\xaa\xf4\xfc\x2e\x03\x33\x84\x4b\xe3\xef\x38\x31\x72\x6f\xcc\xdf\x14\x6b\x4e\x67\x45\x0a\x4f\x6f\x6c\x62\x90\x56\xef\x18\x33\x3f\xfb\x29\x5a\x8e\x43\x8f\x3a\x5f\x3c\x7c\x81\x56\xa4\xd6\x7e\xd4\xfe\x3c\xf7\x39\x18\x79\xd8\x28\xa2\x4d\x23\x8f\xb0\xfb\x64\x2a\xed\xaa\x46\xa9\x37\x59\x8f\x53\xa5\xbf\x08\xf4\x15\x44\x4a\x81\xff\x8c\x10\x37\x72\x69\x2f\x8f\xed\x34\xed\x02\x07\x28\xc9\xf3\x17\xbd\x39\x6e\x4c\xe1\x30\x9d\xd6\x59\x45\x4d\xcc\xb1\xa3\xa5\x98\x7a\x5e\x68\x20\xaf\xb1\x6b\xb8\x3f\xc1\x5d\x6a\xf7\xb4\x97\xf5\x27\x88\x7a\x7f\xc2\x6c\x6c\x2b\x88\x6e\x5a\x03\x20\x9a\x68\x99\xa5\x47\x23\xa0\xef\x91\x68\xb2\xa5\x55\x77\xf2\x9c\x14\x46\x2f\x1b\x13\x63\xde\x98\x48\xe1\xfe\x45\xd9\x9f\xa8\x90\xd3\xb2\x98\x48\x27\xbc\xa2\x2c\xe6\x95\x7d\xa6\xd3\xfb\x14\x65\xdf\xa5\x85\xfb\x14\x8a\x9c\x44\x84\x57\x47\x88\xf0\xbc\xca\x19\x9e\xd7\xce\x50\x1d\xfb\x14\x25\x64\x3a\x7d\xe9\x29\xbd\x10\xa3\xde\xef\xbc\xde\xa1\xf7\x4f\xd2\x29\xfc\xdf\xd3\x89\x5e\x19\x3a\x0d\xf0\xf2\x3a\xf1\x42\x03\x33\x6a\x54\xa4\x0e\x3f\x5a\xbd\xa0\xa4\x91\x30\x41\x9f\x1a\x48\xc0\xc2\x29\xda\x34\x4e\xd5\xa6\x89\xb5\x19\xf2\xf9\x6b\xeb\x4a\xba\x0c\xf9\x22\xb5\xf1\xcb\xdc\x9d\x74\x42\x94\xd3\x31\xe4\x74\xc6\xbb\x42\x9d\x2b\x45\xbd\xf9\x35\x51\x03\x92\x9c\xe4\xa7\xa2\x62\x82\xec\x01\x08\x4f\x23\x7b\x64\xaa\xec\x35\xe3\xb2\x07\x43\xe3\xb2\xfb\x03\x1c\xe7\x62\x5a\xd9\x2b\x44\xef\x6c\x9c\x56\x62\x2e\x65\x27\x8a\xaa\x1e\x3b\xac\x1d\x3e\x7c\x78\x2a\x67\x82\xc4\x9a\x9b\xc7\x25\xf5\xd1\xb8\x50\x22\xa5\x34\x74\x2a\x4d\xb4\xd4\x0f\xcb\xde\x52\x26\xbb\xaf\x34\xe3\xbf\x16\xdb\x94\xd8\xb0\x12\x73\x17\x1a\xd1\x58\xb7\x81\x35\xd3\xd7\x01\x9a\x56\x7e\x5a\x7d\x3a\x95\xd1\x1e\x6f\x41\x7b\xad\x8b\x89\xf8\x34\xda\x68\x36\xde\xdf\x9a\xc9\x25\xf7\xa3\x37\xd3\xba\x7f\x7f\x72\x9a\xc7\xe2\xbc\xea\xc8\xdf\xb0\xff\xc6\x1b\xf7\xdf\x80\xed\x53\x9f\x87\x04\xf9\xbb\x4e\xbe\x0b\xb3\xa6\xde\x85\xb6\xb2\x67\x3c\xd6\xd8\x3c\xe1\x79\x88\x27\x5b\x3e\xe8\x33\x9e\xa0\xb1\x9d\xc4\xe5\x9e\xf0\x2f\xe5\xf3\xeb\x68\x65\x8e\xcb\x3c\xe1\x6a\x3f\x9e\x07\xcb\x04\x5d\x74\xaf\xa7\x66\x58\x36\x45\x9b\x96\xa9\xda\xb4\xb2\x36\xcf\xf9\xfc\x91\xda\xfa\x86\x78\x53\x49\x9f\xe7\x7c\xa1\x48\x4d\x7d\xb4\x31\x79\x79\x8d\x12\xde\xb4\xec\x0f\xfe\x1d\x7d\xf2\xeb\xb5\x07\x7b\x06\x65\x06\x68\xfe\x77\x49\x19\xad\x3e\x3c\x41\x9f\x3a\x9a\xbf\xd6\x06\x47\xc6\xf5\xa9\xef\x2c\xc4\x5b\x65\x59\x69\x20\xfa\x51\x73\x41\x63\x63\x92\x48\xd8\x9c\x9a\xae\x34\xab\xc7\x36\xc5\x97\x62\x02\xea\x6e\x82\x43\xe1\x60\x6d\x25\xf9\x85\x45\x3a\x95\x30\xf1\x31\x5e\x8a\xf7\x3e\x0b\xdb\x94\xd6\x61\xa5\xd5\x4d\x93\xb2\x3a\x95\xd6\xf2\x02\x11\x0a\x35\x0d\xa2\x47\x09\xe6\x14\x9f\xa8\x84\x66\x30\x4f\x30\x1d\x13\x79\x9c\x2e\x2d\xfb\x63\x34\x92\x21\x8b\x89\xe9\x0b\xf5\x75\xf9\x75\x3f\xa1\x67\xb2\x38\xa5\xfc\x2b\xd2\xbd\xd6\x5e\x90\x54\x48\xd2\x10\xd2\xe4\xb8\x33\x75\xb0\xc7\xe8\x9b\xab\xa3\x5e\xd0\x30\x0d\x59\xb2\x1d\xea\x27\x2d\xeb\xa8\x69\x5c\xea\xa1\xa3\xa6\x94\x4f\xf4\x9c\xaa\x72\x7a\xcd\xb4\xd8\x9f\x22\x8a\xa7\x6c\x2e\xc1\x13\xac\x21\x32\x44\xea\x44\xcf\x33\xd6\x6a\x37\xf8\x78\x59\x35\x7f\x4e\x09\x78\x86\x2c\x0e\x11\x67\x0e\xaf\x93\xce\xc6\xa8\xed\x10\x9b\xa9\xf3\xae\x6e\xbc\x92\x37\xf3\xea\x8e\xf4\x42\xd0\xe7\xfe\x09\xc2\x53\xac\x6b\x14\x1a\xe1\x09\x43\xdb\x58\xa7\xe2\x93\x95\x38\x75\x49\x8e\x17\x40\x4d\x93\x14\x8e\x0e\x2b\x35\xa9\xc1\x28\xb9\xe8\x44\xeb\x6d\x6d\xbc\xfc\xbd\x12\x4e\x29\x8d\xc3\x4a\x30\xa5\x34\x96\xcc\x91\xc4\xb6\x42\xd4\x47\x53\xea\xa8\xb3\x52\x89\xd1\x1a\x0a\x8d\x9e\x21\x9b\xcb\x23\x90\x41\xe2\x31\x36\x48\x3d\xaf\xa3\x1c\x0c\x35\x68\xad\x4e\x7f\x99\x51\xca\x67\xd1\x95\x8c\x22\xc6\x82\x54\x21\x92\xfd\x09\x6a\x50\xcd\x60\x9a\xb0\xf6\x7c\x6b\x75\xa2\xfc\xcc\xa6\x79\x54\x6b\xb0\x18\x2b\xe5\x9b\xc6\xce\x8d\x1d\x15\x5e\x16\x16\xd0\xda\x0a\xdb\x69\x86\x1b\xf5\x2e\x2b\xd5\xd1\x51\x51\xa9\xd4\xbd\xbc\x63\x65\xcd\xac\x1a\x6c\x63\x9f\x47\xab\xde\xf9\x13\xc7\xb6\x82\x00\xa2\x67\xd0\x1f\x8c\xe4\x72\xb9\x42\xbd\x56\x55\xf5\x44\x73\xb9\x82\xdd\x2a\x7a\x0a\xae\x86\x5c\x0e\x68\xa1\xd3\x21\xa8\xd2\x57\x5d\xae\x16\x87\xec\x2e\xbf\xbe\x32\xa0\x99\x4a\xe6\x98\x48\x05\x75\x22\x6e\xa5\x59\x18\x7e\x5f\xd0\x89\xa8\x8f\x60\x3b\xef\xb8\xfe\x0f\x38\x70\xef\xee\x93\x27\x77\x77\xb4\xb7\x9f\xda\xfa\xc8\x6f\x4c\x57\x7d\x14\x7b\xa9\xc5\x8d\x67\x97\x6f\xd7\x78\xf0\xed\x73\xdf\x72\xae\xb9\xeb\xd7\x5f\x0d\x3b\x9c\xb7\xab\x87\x78\x39\xc8\x32\xdd\x42\xd0\x00\xf5\x40\xdd\xfa\xf5\xa3\x5a\xdd\x8f\x02\x17\xd7\x8b\x9e\x41\x31\x52\xa1\x77\x58\x91\x1c\x36\x9c\x87\xe9\x49\x62\xe8\x93\x27\x9c\x77\x5c\x5f\x89\x8f\xe1\x97\x6f\xdd\x33\x51\x0c\xbd\xf3\x82\xe4\x78\x4c\xdd\x12\xf9\x5a\x7e\xf7\xb7\xa7\x48\xa2\xbd\x33\x90\xe7\xea\x6e\x01\x37\x40\x36\xe6\xb7\xc6\x9a\xd3\x31\x94\x51\xb6\x69\x1f\x5a\xc3\x0c\x6f\x5d\x8a\x03\xea\xb9\x93\xda\xdf\x88\x3a\xa2\xa5\xc5\x23\xb3\x67\x1f\xa1\xde\x83\x6b\xd5\x21\xc3\xdf\x75\x0f\x80\x90\x15\x8e\x40\x2b\x80\xd7\x17\x08\x5a\xfc\xbe\x80\x9c\xca\x8a\xd6\x58\xb3\xc8\x41\x9e\x48\x87\x66\xd6\x20\xe0\x4f\x26\xe2\x96\x3d\xb9\x4e\xa1\x6f\x49\x4f\xbb\x96\x4b\x47\x66\x49\x9f\x2d\x35\x67\xef\xaa\xc8\x97\x6f\xdd\x79\xdc\xe4\xb4\x2d\xe9\x33\x9d\x4e\xaf\xf4\xbb\x03\x4b\xfa\xea\xd5\x57\x67\xcf\xc6\x54\x7d\xdf\x92\x50\x43\x74\xc3\xdc\x9b\x3f\x63\x59\x75\xc7\xf1\x9d\x82\x4b\x30\xf5\x71\x0c\x55\x58\x70\x62\xec\xdc\x17\x3e\xe1\xba\xe2\xdf\xa0\x41\x50\x34\x91\x7e\xe9\xb0\x75\x18\xe9\x58\xef\xd8\xd1\x8a\xdf\x57\x84\x28\x8a\x3c\xb5\x6d\xf4\xf9\x5c\x15\xa1\xb1\xcf\xd2\x67\xaf\xfa\x7a\xc5\xef\xf5\x19\x5e\x65\x3f\x8f\xe3\xf3\xd0\xa2\xa1\x95\x6d\x79\x63\xdf\xf4\x05\xed\xca\xf1\x14\x07\x01\x70\x31\x00\xbc\xc9\xdb\x71\x00\xd4\x9e\xf3\x6b\xf4\x54\xfb\x1f\x5f\x4f\x13\x9a\x05\x65\xec\x9c\x8e\x35\xf6\x37\xc6\x74\x0a\x0a\x04\xf5\x73\xc6\x9e\xd7\xb7\x09\x79\x1b\x5b\x9d\xa0\xc0\x6d\x7c\x6e\x70\xfc\x1a\x88\x70\x8a\x9c\x0a\x82\x32\x76\x94\xaf\x41\xfd\x3b\xed\x0b\x93\xae\x9b\xa0\xd7\x0c\x9b\x81\x59\x2c\x3b\x96\x1e\x3f\x36\x76\x4a\x50\x20\x36\xfd\xb5\x63\x47\xf8\x7a\xe3\xd8\xc3\xfc\xfd\xce\x69\xce\x37\xf0\x0f\xf0\x7e\x71\x62\x9e\xd8\xce\x79\xbe\x20\x28\xe8\x16\x14\x30\xcf\xb0\x19\x7a\x0a\x65\x7a\x6b\xdb\x2f\x04\x05\x36\x95\x7d\x8f\xb3\x1d\x8c\xef\xdb\x04\x65\xec\x47\xbc\x3d\x3e\x8d\x5d\xb4\x7b\xf3\x27\x41\x81\xc5\x82\x32\xd6\x2b\x28\xe0\x19\xb7\x0f\x76\x4c\xd2\x79\x89\xa0\x80\xbf\xec\xda\x4a\x3e\xbe\x46\x50\xc0\x24\x28\x50\xc1\xc7\x2b\xca\x36\x10\x7e\xac\xe7\xa3\x53\x70\xec\x37\xb0\x1c\x72\x50\x04\xc0\x66\xc8\xd3\x3c\xab\xf1\xdf\xf1\x9f\x37\xa1\x34\xa3\x9c\x7f\x82\x93\xb8\x9c\x27\x44\xb7\xbe\x37\x76\x74\xe2\xaf\x76\xe5\xd8\xb9\xb1\x73\x90\xd7\x9e\x63\x98\xc5\xbf\x1b\xe0\xc9\xcb\xfd\x62\x17\x5e\x83\xcb\xf1\xb3\x78\x12\x5f\x45\xd5\x94\x31\x3d\x62\xfa\x85\xe9\xac\xb9\xdd\xbc\xcc\x7c\x5e\xd8\x5e\x91\xb7\x38\x2d\x71\xcb\x42\xcb\x9f\xac\xcb\xac\x8a\xf5\x9d\xca\x87\x6d\x5d\xb6\xd5\xb6\x87\xab\xaa\xaa\x16\x56\x1d\xa8\x3a\x6b\xbf\xd1\x3e\x60\x7f\xdb\x31\xcf\xa1\x54\xd7\x56\xef\xaa\x3e\xe9\xec\x75\xae\x76\x3e\xe0\xfc\x9d\xeb\x37\xee\x65\xee\x03\xee\x51\xd1\x29\x26\xc5\x87\x3d\x3e\xcf\x6a\xcf\x5b\xde\x80\xf7\x21\x9f\xc3\xb7\xd6\xf7\xa2\x3f\xe9\x3f\x18\x58\x1b\x78\x2b\xb8\x2c\x78\x7f\xf0\x9d\x50\x4f\x68\x7f\xe8\xa5\x70\x7b\xf8\x91\xf0\xc5\xc8\x92\xc8\xbe\xc8\xb3\x91\xd1\xc8\x9f\x6b\x7c\x35\x5d\x35\xd7\xd5\xdc\x5f\xf3\x6c\xcd\x1f\x6b\xce\xd7\x3a\x6b\x6f\xae\x7d\xb2\xf6\x6c\x5d\xaa\xee\xe5\x7a\x77\xfd\x03\xf5\xef\x36\x2c\x6e\x78\xa2\xe1\x07\x0d\x7f\x8a\x5a\xa2\xb3\xa2\x8b\xa3\x5b\xa3\x03\xd1\x73\xb1\xdb\x62\x3f\x8e\x5f\x15\x2f\x26\xee\x4e\x3c\xdd\xe8\x6b\x3c\xd8\xf8\x76\x93\xaf\xe9\x40\xd3\xd1\xa6\xc1\xa6\xb3\xc9\x9b\x93\x07\x92\x2f\x25\xdf\x69\x76\x36\xdf\xd6\xfc\x6a\x4b\x4f\x4b\xbe\xe5\xf9\xd6\x4c\xeb\xc8\xac\xad\xb3\xde\x6d\xdb\xd4\x36\xd8\x76\xa1\x7d\x61\xfb\x23\xb3\x5f\x9a\xfd\x76\xc7\x86\x8e\x83\x1d\x17\x3a\x7b\xbb\x42\x5d\xcf\x4a\x49\xe9\x6e\xe9\x57\xa9\xca\xd4\xf3\xf2\x6a\x79\xa0\x3b\xd2\x7d\x2c\x2d\xa4\x37\xa4\x5f\xca\x04\x32\xb7\x64\x9e\xc9\x56\x65\x57\x67\xbf\x95\xbd\xd8\xb3\xbc\xe7\x99\x5c\x28\xb7\x32\x77\x38\x37\xd2\x1b\xea\xbd\xb5\xf7\xfe\xde\xd1\x39\xed\x73\x76\xce\xf9\xc3\x15\x57\x5e\xb1\xe9\x8a\xdf\xcd\x5d\x38\xf7\xa9\x79\xee\x79\xd7\xcc\x3b\x3d\xef\xec\xfc\xae\xf9\x8f\x5e\x69\xba\x72\xf5\x95\xcf\x2c\x88\x2f\x38\xb0\xe0\xaf\x57\xed\xbf\xea\x3f\xae\x3e\x70\xf5\xbf\x2f\xbc\x62\xe1\xea\x85\x8f\x51\xe9\xf5\x5b\x38\xa2\xc7\x88\xa1\x08\x0a\x26\x08\xd0\xd2\xdf\x46\xb9\xe6\x82\x17\xb9\x8c\xf3\x82\x47\x5f\x65\x4d\xb0\x01\xc0\x6d\xe0\xe1\x7d\x84\x16\xd8\xc7\xfb\x26\x70\xc2\x93\xbc\x6f\xd6\xea\xde\xbc\x2f\x40\x0f\xa8\xbc\x5f\x01\xbb\x31\xc3\xfb\x16\xc8\xe0\xd3\xbc\x5f\x09\x01\xfc\x33\xef\xdb\x20\x80\x17\x78\xdf\x0e\x8d\x26\x37\xef\x3b\xa0\xd1\xd4\xcd\xfb\x5e\x68\x34\xad\xe4\xfd\x22\x04\x4c\x86\x0c\x3f\x85\x2e\xd3\xc1\xbb\xee\xba\xab\x63\xe3\xe6\x3d\xfd\x9b\xfa\xd6\x6d\xdb\xba\xa3\x63\xdd\xb6\x2d\x70\x35\x6c\x83\x7e\xd8\x03\xdb\xa1\x0f\x36\xc2\x26\xd8\x09\x51\xf8\x06\x44\x21\x05\x5d\x20\x81\x0c\x51\x58\x0b\x7b\x20\x0a\x4b\x60\x0d\x6c\x85\x28\x2c\x85\x6d\xb0\x0b\xd6\xd0\xf9\xb7\x43\x07\x44\x61\x01\x6c\x86\xcd\x54\xb7\x30\x10\x76\xd0\xb7\xf5\xb0\x03\xd6\xc3\x76\xd8\x05\xeb\x21\x0f\x1d\xf0\x21\x58\x06\xab\x60\x39\x5c\x03\x1f\x86\xab\xe1\x7a\xb8\x0e\x3e\x02\x51\xb8\x06\xd6\xc0\x66\xd8\x00\x9b\xa1\x0f\xb6\xc2\x46\xd8\x01\x2b\x60\x3d\x6c\x84\x3b\x61\x33\xe5\x22\x41\x07\x74\x91\x2c\x73\xe0\xa3\xb0\x14\x6e\x82\xeb\x60\xce\xb4\x58\x53\x91\x66\x4f\xc2\xfa\xa0\x12\x44\x27\x5d\x77\x23\xe9\xb1\x03\xfa\x60\x1b\xd9\xa0\x5c\xa6\xe5\x84\xa1\x7f\x1b\x3f\xba\x09\xb6\xc1\x4e\x58\x47\xe7\xef\x2a\x5d\xd1\x01\x59\xe8\x82\x39\xb0\x05\xd6\xc0\xed\xb0\x9e\xce\xd9\x00\x1d\x94\xf3\x5a\x48\x41\x07\xa4\x69\xeb\x01\x19\x52\x90\xfb\x07\xb5\x9c\xfe\x4e\x4d\x7f\xf4\x2e\xfa\xed\x80\x8d\xb0\x19\xf6\x40\x3f\x6c\x82\x3e\x96\x7a\x07\x74\xd0\xde\x96\x7f\xda\x39\x37\xc1\x7a\x58\x0b\x1b\xe8\xe8\xce\x92\x4d\xae\x65\x9b\x1a\xf2\xa5\x20\x4b\xf6\xec\x81\x5e\xb2\x65\x2f\xc8\xd0\x5d\xe2\x63\xb7\x51\x56\x8f\x9d\x82\x14\x4c\xf7\xf3\x5b\x00\x34\xa1\x19\xcc\x50\x0d\x4e\x14\xb0\x02\x2d\x68\xc5\x4a\xb4\x61\x15\xda\xd1\x81\xd5\xe8\xa4\xbe\x5d\x11\x3d\xf0\x17\xf4\xa2\x0f\xfd\x18\xc0\x20\x86\x30\x8c\x11\xac\xc1\x5a\xac\xc3\x7a\x6c\xc0\x28\xc6\x30\x8e\x09\x6c\xc4\x26\x4c\x62\x33\xb6\x60\x2b\xce\xc2\x36\x6c\xc7\xd9\x14\x01\xac\x0b\x25\x4c\xa1\x8c\xdd\x98\xc6\x0c\x66\xb1\x07\x73\xd8\x8b\x73\xf0\x0a\x9c\x8b\xf3\x70\x3e\x5e\x89\x0b\xf0\x2a\xbc\x1a\x17\xe2\x22\x5c\x8c\x1f\xc2\x6b\xf0\xc3\xb8\x04\x97\xe2\x32\xbc\x16\xaf\xc3\xeb\x71\x39\xfe\x2f\x5c\x81\x1f\xc1\x1b\xf0\xa3\x78\x23\xde\x84\x2b\x71\x15\xde\x8c\x1f\xc3\x5b\xf0\xe3\x78\x2b\x7e\x02\x57\xe3\x1a\x5c\x8b\xeb\x30\x8f\xeb\x71\x03\x6e\xc4\x4d\xd8\x87\xb7\xe1\xed\xb8\x19\xb7\xe0\x56\xdc\x86\xfd\x78\x07\x6e\xc7\x1d\xb8\x13\xef\xc4\x5d\x78\x17\xee\xc6\x3d\xf8\x49\xdc\x8b\xfb\xf0\x53\x78\x37\xde\x83\xf7\xe2\xa7\x71\x3f\x7e\x06\x3f\x8b\xf7\xe1\xfd\xf8\xbf\xf1\x00\x7e\x0e\x1f\xc0\xcf\xe3\x17\xf0\x41\x7c\x08\xbf\x88\x03\xf8\x25\x3c\x88\x5f\xc6\x87\xf1\x10\x1e\xc6\xaf\xe0\x23\xf8\x55\x7c\x14\x8f\xe0\x51\xfc\x1a\x3e\x86\x8f\xe3\x13\xf8\x7f\xf0\x18\x1e\xc7\x27\xf1\x04\x7e\x1d\xff\x2f\x3e\x85\xdf\xc0\x93\xf8\x4d\xfc\x16\x7e\x1b\x9f\xc6\xef\xa0\x82\x05\x1c\xc4\x21\x7c\x06\x4f\xe1\xb3\xf8\x1c\x3e\x8f\x2f\xe0\x8b\xf8\x5d\x3c\x8d\xdf\xc3\x97\xf0\xfb\xf8\x03\xfc\x21\xbe\x8c\x3f\xc2\x1f\xe3\xff\xc3\x57\xf0\x27\x58\xc4\x9f\xe2\xcf\xf0\xe7\xf8\x0b\x1c\xc6\x57\xf1\x97\xf8\xff\xf1\x35\xfc\x15\xbe\x8e\x23\xf8\x06\x8e\xe2\xaf\x2d\x54\x2c\x49\xd6\x3b\xb7\xf6\x75\x75\x75\x2d\xd4\xd3\x05\x5d\x5a\x9a\xea\xea\x32\x52\x89\xd3\x14\xa7\x32\xa7\xdd\x9c\xa6\x39\xcd\x70\x9a\xe5\xb4\x87\xd3\x1c\xa7\x0b\xf4\x34\xb5\x58\x4f\xd3\x8b\x85\x45\x77\x6e\xdf\x46\x5f\xd2\x8b\xaf\xa6\x34\xc3\x99\x65\xf9\xa2\x6c\x17\x9d\xbc\x88\x85\x58\xc4\x42\x2c\x62\x21\x16\x71\xe6\x8b\x38\xf3\x45\x9c\xf9\x22\xce\x7c\x11\x67\xbe\xa8\x4b\xea\xe2\x94\x71\x24\xc6\x91\x18\x47\xea\xe6\x94\xf1\x24\xc6\x93\x18\x4f\x62\x3c\x89\xf1\x52\x8c\x97\x62\xbc\x14\xe3\xa5\x18\x2f\xc5\x78\x29\xc6\x4b\x31\x5e\x8a\xf1\x52\x8c\x97\x62\x3c\x99\xf1\x64\xc6\x93\x19\x4f\x66\x3c\x99\xf1\x64\xc6\x93\x19\x4f\x66\x3c\x99\xf1\x64\xc6\xeb\x66\xbc\x6e\xc6\xeb\x66\xbc\x6e\xc6\xeb\x66\xbc\x6e\xc6\xeb\x66\xbc\x6e\xc6\xeb\x66\xbc\x6e\xc6\x4b\x33\x5e\x9a\xf1\xd2\x8c\x97\x66\xbc\x34\xe3\xa5\x19\x2f\xcd\x78\x69\xc6\x4b\x33\x5e\x9a\xf1\x32\x8c\x97\x61\x9c\x0c\xe3\x64\x18\x27\xc3\x38\x19\xc6\xc9\x30\x4e\x86\x71\x32\x8c\x93\x65\x9c\x2c\xcb\x95\x65\xbc\x2c\xe3\x65\x19\x2f\xcb\x78\x59\xc6\xcb\x32\x5e\x96\xf1\xb2\x8c\xd7\xc3\x78\x3d\x8c\xd7\xc3\x78\x3d\x8c\xd7\xc3\x78\x3d\x8c\xd7\xc3\x78\x3d\x8c\xd7\xc3\x78\x3d\x8c\x97\x63\xbc\x1c\xe3\xe5\x18\x2f\xc7\x78\x39\xc6\xcb\x31\x5e\x8e\xf1\x72\x3a\x9e\xc4\xbc\x97\x98\xf7\x12\xf3\x5e\xd2\x1f\xbe\x45\x12\xf3\x5f\x62\xfe\x4b\x5d\xc6\x75\x3d\x9c\xea\x72\x48\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xf7\x12\xf3\x5e\x62\xde\x4b\xcc\x7b\x89\x79\x2f\x31\xef\x25\xe6\xbd\xc4\xbc\x97\x98\xf7\x12\xf3\x5e\x62\xde\x4b\xcc\x7b\x89\x79\x2f\x65\x18\x8f\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\xe6\xbf\xc4\xfc\x97\x98\xff\x12\xf3\x5f\x62\xfe\x4b\xcc\x7f\x89\xf9\x2f\x31\xff\x25\x83\xf7\x39\xc6\xc9\xe9\x38\xa9\xae\xae\xe7\x71\xec\x3e\x05\x1f\x84\xa5\x4a\xe5\xf2\x95\x05\xc4\x87\x56\x15\x16\x5b\xda\x56\xc6\x14\xf7\xaa\xa5\x8a\x6f\xc5\xca\x98\x72\xef\xaa\x3a\xc5\xd2\x76\xcb\xca\x55\x8a\xaf\x0d\x00\x70\xc5\xdb\x2b\x9f\x06\xf8\xaf\x00\x00\x00\xff\xff\xff\xf1\x17\x06\x40\xa1\x00\x00") func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtfBytes() ([]byte, error) { return bindataRead( @@ -538,12 +539,12 @@ func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularTtf() (*asset, return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf", size: 41280, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.ttf", size: 41280, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x77\x73\x70\x66\x4f\xb4\x6d\x6c\xdb\x9a\xd8\x13\xdb\xb6\x6d\x67\x92\x4c\x8c\x89\x9d\x4c\x6c\xdb\xb6\x6d\x7f\xb1\x6d\x3b\xf9\x62\xbc\xf9\xdd\xfb\xea\xfd\xf3\xba\x6a\xd5\xee\xb5\x7a\xf7\xde\xeb\xf4\xa9\x53\x75\xda\x5d\x51\x42\x02\x04\x14\xe4\xdf\xd0\xc5\x01\x41\xfd\x2f\xe6\x0b\xfd\x2f\xff\xff\x87\x84\x84\x9a\x3c\x08\x08\xa8\xff\xbf\x29\xc1\x7f\xf8\xa5\x3e\x70\x2b\x29\x26\x2e\xf1\x4f\xcb\xfa\xc7\x89\xfe\x81\x04\x14\x06\x04\x42\x51\x95\x89\xe5\x9f\xd6\xf5\x8f\x8b\xfe\x83\x91\x65\xa9\x6c\xb0\xa9\x9d\xb1\x03\x08\x08\xd8\x3f\x0a\x8a\xff\x2f\x3a\xc9\xdc\xc2\x66\x98\xba\xb9\x90\x80\x80\x80\xff\x57\x0b\xe6\x7f\x40\x0d\x1e\x66\xe1\x60\x69\xf7\x4f\x23\xff\x97\x57\xff\x2f\xcf\x5c\xb5\x89\xa9\xd4\xd2\xd8\xf9\xdf\x5e\x88\xd5\xff\x97\x07\x02\x82\x62\x69\xfb\xc7\xe2\x9f\xb6\x0b\x02\xa2\x80\x00\x02\xf2\x97\x8f\x88\x88\x95\xd4\xca\xdc\xd8\x0c\x04\x44\xe5\xf2\xdf\x3a\xdb\x3f\x70\x80\x99\x68\x7d\x59\xfd\x13\x41\x40\x54\x49\xfe\xaf\x67\x72\x38\x16\x08\x64\x2b\x3b\x17\x8f\x7f\x1a\xdf\xbf\x1e\x18\xff\x7a\x3c\xf6\xf7\xa3\xc6\xd8\xda\x9b\xfe\xcb\x53\x53\xfa\xa7\x55\xfe\x43\x1b\x5b\xac\x86\x82\x9d\xb1\xc7\xbf\xbe\xea\x1f\xff\x3d\xd7\x7f\x00\x83\x00\xcd\xfb\x6d\x6c\x67\x0e\x02\xa2\xf1\xaf\x16\x68\xe0\x3f\x9f\xde\x8b\xb5\xe9\x57\x0e\xf6\xce\x2e\x20\x20\x9a\x79\xff\xb8\xd0\x3f\x7b\xc1\xed\x12\x25\xd6\x0e\x4e\xe6\xff\xf6\xea\xfc\xf3\x07\xc2\xf8\x1f\xea\xee\xe9\x30\xdc\xcd\x4d\xfe\x79\xd6\x45\xf9\xc7\xa1\xfe\x83\x56\xad\xca\xf1\x7f\x07\xf2\xdf\xd9\x4e\xf1\x17\xcc\xfc\x17\x67\x10\xb0\xee\xff\x37\xc2\x32\x7a\xac\x9b\x1a\x99\x19\x19\xed\x82\x9b\xc0\x42\xa1\x18\x99\x18\x41\x0c\xe8\x0a\x4d\x81\x1d\xff\x04\x01\x41\x2c\x03\x45\x04\x01\xf9\x6f\xdd\xc2\xda\x2c\xab\xaf\x6f\xa2\x6f\x60\x6a\xd0\x25\x20\x20\x80\x14\x4e\x84\x95\xd1\x98\xd9\x64\x1d\xf4\x10\xbc\xb8\x2e\x48\xe9\xc6\x41\x10\x0a\x1a\x6a\x5b\x12\x61\x0a\xfa\x0b\x1e\x64\x49\x9a\x79\x11\x24\x04\x37\x3e\x89\x9a\x99\x19\x0c\x04\xde\x18\x76\xf9\x5f\x0d\x40\xbc\xa0\xec\xa0\x11\xca\xc8\x8d\xdd\xba\x54\xc4\xbc\x92\x58\x55\xb8\x3b\x8c\x4e\x45\x90\x7e\xe7\xb0\xf8\x15\x09\x44\x16\x4f\x33\x17\x06\x3c\x61\x44\xe2\x56\x87\xdb\x05\xd9\x30\x00\x79\xf7\x34\xd5\x1a\xca\x39\x96\x30\x2b\x6b\x51\x3c\xf8\x25\xc3\x5f\x54\x9f\x80\xc0\x7b\xf7\xab\x7b\xf3\x13\xe9\x9a\x82\x2c\x8c\x65\x83\xdc\x94\x3f\xbd\xa7\x5a\x4e\xe7\x44\xde\xca\x54\x0a\x14\x73\xac\x75\x0d\x0e\xf6\x6a\xa1\x1a\xe3\x48\x68\xdd\xa9\x55\x7f\xfb\x75\x95\x5d\xbd\x56\x47\x45\x92\xbf\xda\x4a\x1e\x7f\x7d\x31\xc5\xad\xa9\x54\x94\xf0\x02\x83\x88\xb6\x2c\x3f\xe0\x07\xdb\x9c\x08\xb2\x68\x94\x63\x74\xa6\xa4\x4c\x42\xad\x3e\x8d\xe3\x0c\xda\x19\xf4\x9c\x95\xb0\x0f\x66\xb5\x4d\x5e\x3e\x45\xce\x85\x90\x24\x4f\x40\x00\xb2\x30\x21\xa8\x02\x4a\x41\x10\xa8\x44\x9a\x51\x06\x9a\xfc\x7d\xca\x54\x22\xf5\xd9\xb9\x0a\x5f\xec\xcd\x41\x24\x34\xd5\x7a\xf8\xb2\x45\xb1\xb6\x32\x6d\x03\xa3\xb9\x36\x96\x66\xf8\xce\x6b\xb2\xe1\x4b\x7a\x2e\x8e\xf7\x70\xea\xe6\x09\xa3\x7b\x1b\x80\x41\xe0\x40\x55\xe0\x58\x14\xa9\xa5\xe0\x12\xcf\x8f\xee\x60\x9e\x73\xf9\xb0\x6a\x92\x81\xc3\xcc\x30\x9e\xc6\x30\xcf\x8f\xc1\xfd\xce\x18\xc8\xa9\x9a\x1b\x1b\x64\x95\xf2\xdf\x6b\x88\x05\xa1\x06\x7b\xf1\x58\xd7\x57\xee\x54\xd0\x15\x46\xd9\x42\x44\x06\x0f\x18\x5a\x25\xe1\x5e\xc7\x68\x4c\x8f\x1b\xf1\xca\x87\x84\x1d\x5a\x8a\x36\x31\xe3\x0d\x39\x82\xb1\xe6\x74\x8a\x8f\x74\x04\x25\x16\x0a\x10\x43\x5c\xaf\xc5\xcd\xcb\x2f\x92\xca\x84\x22\xc5\x96\xf2\x16\x11\x20\x45\x63\xb5\x09\x2f\x60\xe3\xe5\x6d\x74\x9e\x4e\x67\x95\x9d\x88\xaf\x70\x3f\xb3\x99\x51\x3d\x21\x8f\x1b\xd8\x82\x02\x70\x7c\x2a\x48\x35\x37\x82\x3c\x17\x5d\x5c\x44\x47\x35\x05\x41\xeb\xd8\x5a\x3c\x4e\xb8\xbe\x7f\xc1\x43\x65\xce\x25\xf1\xfe\x02\x39\xe2\xb7\xa7\x41\xc6\x95\xe7\x0d\xd0\x69\x2a\xfd\x9a\xfb\x80\x0b\x7d\xff\x20\x7e\xe0\xc5\x69\x62\x5b\x78\x5c\xe4\x81\x3d\x23\x85\x38\xce\x74\x94\x0d\xba\xc1\x05\x74\x4c\x22\xbf\x05\x2e\xed\x99\x30\x33\x17\xa5\x95\xec\x33\x0a\x96\xa8\x7c\xb5\xb2\x9d\xfc\x9a\xac\x6b\x8e\x9f\xeb\x0a\x62\x45\x7d\x1d\x67\x13\x52\xb5\xb1\x83\xc8\xf8\x5a\x24\x5d\x7a\x70\xc4\x90\x8d\x9b\x2c\xa9\xe7\x48\x4b\x6b\xf8\x22\x47\xef\x0f\x19\x77\x51\x57\x6d\x9e\x7a\x59\xef\xd7\x6f\x68\x3c\x35\x0a\xa2\x05\x04\x40\xaf\x0e\x6a\xfc\x41\x20\x42\x42\xa6\xc4\x98\x6f\x25\x9f\xa0\x47\x44\x7d\x32\xa9\x1c\x82\x41\x4d\x24\x80\xe3\x3e\xda\x1c\xff\x2a\x12\x7a\x95\x42\x1b\xe9\x92\x96\xe1\x3d\x08\x6d\x86\x1a\x89\x5f\xe9\xcb\xe3\x50\x6c\xfc\xe6\xcb\x94\xb7\xb3\x27\x1c\x78\xd1\x26\xe8\x77\xef\xc5\x95\xe5\x79\x19\x0b\x5d\xc7\x41\x35\xe1\x35\xa1\xf1\x87\x15\x13\x91\x50\x7f\x0d\xc5\x9b\xe9\xa6\x87\x3a\x54\x79\x9f\x11\x4a\xf2\x3f\xba\x8b\xf5\xcb\x86\x69\xba\x5e\x15\xe3\x4b\x6d\x76\x45\xfa\xa9\x01\xe3\xe9\xbb\xb1\x79\x3f\x19\xd1\xa9\xd1\x3e\x1d\x29\xe2\x6e\x5f\xf1\xab\x6c\x9e\x06\xf0\x6e\x30\xdd\x33\x0a\x9e\x43\x04\x3f\x28\x6c\xda\x9f\x39\xf3\xfe\x25\x13\xf0\xc6\x47\x5f\xc3\x66\x85\x04\x21\xea\xc9\xe9\xf9\x5d\xd0\x7c\x1e\x5e\xd9\x85\x2d\xd0\x40\xb5\xd0\x5b\xaf\x03\xf2\x3f\x5f\x15\xe8\xf7\x37\x08\xb2\xc7\x7a\x77\x37\xac\x11\xfe\x51\x32\x08\xdf\xce\x94\x54\xa1\x2e\x9e\x74\x61\xbc\x99\x6c\x03\xb9\xec\x3d\xcd\x70\x82\xf9\xf0\x5d\xfc\xee\xa6\xfb\x18\x20\xdb\xdf\x5f\x84\x6b\x00\xb3\x06\x85\x24\xc4\xa9\x09\x36\x54\x84\x1a\x91\x81\x86\x3e\xce\x29\x26\x49\x69\xfd\xf7\xaa\xdd\xd9\x40\x44\xcb\x39\xee\xbc\x48\x2b\x7d\xb7\x96\x4e\x8c\x1d\x69\xe7\x16\xe5\xdd\x6d\xef\x33\x40\x2a\xe5\x0a\x62\xe2\xfa\xfb\xdb\x91\x1c\x40\x01\xf0\xba\xf1\xda\x79\xdf\xe6\x47\x98\x6c\xfa\x89\xf0\x8a\xb0\x32\xe0\x10\xd5\x57\x24\x1b\x3c\x8e\x90\x02\x99\xe3\xc3\xa4\xcb\x82\xf7\x65\x57\x37\x55\x5f\x37\x9e\xc4\xc5\x67\xdb\x37\x68\xde\x3f\x46\x88\x4f\x8f\xce\x97\x83\x5e\x68\x42\x46\x35\xb2\x31\x46\x0f\xbc\x12\xfc\x4e\xb7\xe1\x7e\xb2\xc0\x7f\x47\x0f\x65\x16\x2f\x19\x63\xda\x4b\x65\x66\x59\x98\xa0\x96\x93\xa8\x3f\xc1\x50\x51\xaf\xd2\x2e\x78\x61\x8d\x38\x89\x33\x19\xa3\xbd\xae\x20\x33\x93\x05\x9d\x1f\x97\xbb\xb8\x3b\x2c\x2c\x0f\xa4\x3f\x1e\x0a\xa4\x17\x2b\x2e\xa3\x2f\x1a\x6a\xa3\x2e\x82\x13\x1f\xe0\xef\x3d\x78\x85\xeb\x82\x29\x8d\x59\xe2\x40\x56\xe4\xc9\x8b\x99\x9b\x04\x41\x84\xfa\x9a\x7b\xd7\x49\x17\x97\x5b\x1b\x60\xce\xf6\x70\x0e\xd8\xde\x8c\x63\x40\x1f\x99\x6f\xb7\xc7\xda\x9b\xca\x16\xab\x37\xc7\x98\x24\x0d\x01\xd0\x1e\x57\x0c\x58\x4e\x5a\xc0\xe7\xb0\xc0\x1f\x4f\x37\x0c\x47\x65\x62\x8d\x6c\x6a\x37\xa8\x9e\x82\x91\xd3\x2e\x7f\x8d\x51\x9f\x91\x15\x9e\x5b\x00\x77\x5f\x52\x3a\xd2\xa3\x54\xb2\x10\x3f\xb0\x5f\x2c\xd3\xc0\x1a\x43\x94\x1b\x70\x8b\xab\x75\x7e\x4f\xee\x2b\x36\x17\x03\x30\x62\xa8\x43\x7e\x24\xa8\x23\xe0\x16\x73\x97\xe2\x54\xca\x30\x57\x4a\xe1\x0e\xeb\x30\xc8\x6a\x74\x29\x39\x91\x9a\x2d\xb0\xca\x04\x88\x60\x55\xa6\x88\xc4\xd3\x7b\x77\xc8\x6c\x15\xa9\x3a\x9a\x27\xbb\xa8\x3b\x5a\xc8\x7e\x16\x35\x62\xd0\x85\xff\x16\x3f\xd5\xec\x18\x6e\x68\xa6\xd8\xd8\xd9\x89\x55\xa3\x3f\xf4\x84\xbf\x13\xa9\xa9\x9d\x4d\x9d\x9c\x10\xe0\xde\xce\xb4\x38\xf8\x09\x4d\x27\x16\x52\xa6\x1c\xd8\xca\x9c\x3b\x89\xd4\xf8\x9a\xa5\xcc\x3c\x62\x5a\xce\x26\x8d\x19\x99\x8a\x6b\xc0\xb4\x9d\xa2\xe5\xbd\xf4\x85\xcc\x81\x8c\x97\x3b\xc9\xa0\x8d\xf1\xf4\x3c\x93\x7e\x46\xba\x82\xbd\x14\x24\xd1\x00\xbf\x0d\x58\x78\xb3\x3c\x29\x9a\x2d\xa0\x68\xb7\x24\xc3\xe7\xe4\x37\xe8\xee\x70\x1d\x92\x40\xc2\x66\x7d\xdd\x3f\x28\xbd\xf6\xd8\xfb\x80\x87\xbf\x28\x85\xec\xd2\x2f\x45\xc2\x5e\xf0\x19\x16\xd7\x8c\x71\xe1\x09\x5a\x58\x3e\xca\xed\xb8\xad\xa8\x2d\xc9\xed\x0a\xed\xff\x59\x1e\xa7\xec\x0b\xeb\x05\xf2\x32\x29\xff\x27\xa0\x12\x2d\x64\x26\x09\x61\x7d\x0c\x5c\x99\x6e\x93\x61\xb4\x85\x8c\x1b\x57\x82\x78\x70\xbd\x97\x68\xf5\xfb\x14\x7c\x7e\xb8\x77\x2c\x77\x48\x4a\x2e\x58\xb9\x2d\x6a\xbf\x6c\x20\x0d\x75\x38\x95\x66\xfc\x16\x9d\x82\x95\xaa\x43\x56\xa3\xbe\xd7\x4f\x07\xf9\x04\x78\x54\xb0\xd6\xb3\x6d\xc6\x47\x59\x24\xcd\x67\x91\xd4\xd5\x10\xc4\xc5\xa8\x3b\xdd\xe3\x07\x40\x57\xd4\x4b\xbc\x3e\xf7\xbc\x4e\x60\xfa\x4c\x20\xd4\x16\xdd\x36\x74\x7c\x5d\x20\xe6\x3b\x5a\xf5\x00\x32\x11\xc1\xac\x12\x64\xc6\xd9\xed\xaa\x1f\x62\xee\x12\x12\x1d\x07\x84\xd4\xb3\xca\xe5\x8c\x41\x26\xa0\x00\xa0\x70\x80\x70\x46\x8e\x2e\x90\x67\x2a\xc8\x0d\x17\x6b\x40\xe6\x37\x7d\x71\xbe\xb2\xdf\x35\xb3\xdd\x83\xa6\xb1\x0d\xa5\xe5\x1c\xf3\xec\x2d\xd8\xbe\x61\xef\xa7\x83\xb1\x02\x87\x86\xbb\x86\x46\x5a\x23\x63\x6d\x38\x12\x52\x20\x5e\xe8\x1e\x98\x6f\x9e\xac\xe4\xb8\xe8\x97\x66\x67\xbd\xb9\x9e\xe1\xfc\x37\xb3\xeb\xa2\x27\xab\x57\xc8\x5c\xba\xd9\x4f\x80\x6f\xdf\x06\xb7\x5d\x17\xaf\x89\x3b\xff\x2d\x83\x42\xc8\xbe\x22\x66\x0b\xca\xd1\xa4\xe8\xb1\x19\x11\xf5\x3d\x23\x3c\x6d\x96\x88\x33\x94\xb8\x86\xa9\xf4\x38\x67\x2e\x70\xe6\x9a\xbf\x83\xf2\x89\xa8\x38\x2b\x32\x7f\xe9\x24\xfe\xc2\x2c\xd0\x10\x63\xfe\x81\x0c\xe0\x7d\xa2\x8c\x53\xc1\xf5\xf2\xb9\x04\x9a\xc4\xcb\xef\xdf\xf0\xe2\xa0\x4f\xa5\x5a\xa6\x63\x85\x4a\x87\x4a\x1b\xa7\x1d\x0e\x07\xa7\x61\x10\x88\x2d\x3f\x7b\x26\x06\xf6\x0b\x93\x73\x59\x1c\xea\xda\x1b\xfa\xa2\x91\x08\xda\xcc\xdd\xbb\xfe\x7e\xbe\x9a\x3c\xa9\x76\xd2\x1a\xd1\xc3\x82\xbe\xf4\xfb\x4a\x78\xca\x6b\xca\x0f\xe2\x77\x7e\x5e\x35\xd4\x77\xba\xbd\xef\x11\xf1\x12\x12\x68\xef\xd3\xb7\xa8\x77\xda\x39\xe2\x4b\xa9\x3f\x2a\x10\xec\x03\x61\x3f\x8c\xdd\x3e\xfa\x0e\xf1\xf3\xbf\x63\x96\x9f\xa2\x91\x5b\x0b\xc0\x69\x67\x8d\xd0\x53\xcf\x60\x1b\xb1\x9a\xa6\x3e\x8c\x23\x53\xc7\x1c\x0f\x69\x10\xfe\xd9\x47\x00\xe2\x86\x2c\x55\xe0\x45\x3c\xda\xb1\x59\xed\xd4\x6b\x82\x12\xf0\x90\x9e\xb0\x01\xaa\xda\xb7\x59\x3b\x56\xb0\x7f\xae\x99\xb1\xf9\x0e\xf3\x03\x67\xf7\xa3\x89\xa8\x15\x1e\x25\xa1\x0b\xec\xee\x4f\xf6\x10\x8e\x2c\xaa\x91\xfb\xf2\x91\xcd\x99\x33\x85\xae\xd9\x3c\x42\xd5\x72\x57\x94\x0b\xec\xc0\x30\x65\xad\x34\xbf\x07\x70\x7a\xc2\xd2\x90\xfc\xfa\xc6\x57\xd3\x27\xb7\x2b\xec\x64\x71\x47\xd3\xcd\xa0\x9a\x28\x38\x11\x1b\x1e\xec\x4c\x67\xc4\xa0\xe8\xeb\x75\xf8\x66\x00\x13\xcf\x0f\x2b\x1d\xf8\xd1\xf8\x41\x40\x09\x42\x20\x9d\x64\x24\x61\x8c\x44\xaa\xc8\x53\x51\x4c\x19\x5d\xec\x15\xb6\xc6\x1c\xbf\x17\x9d\xdc\x85\xa4\x20\xf5\x30\x7c\x56\x6a\xe0\x03\x6c\xd6\x5f\xa8\xe9\x3d\xae\x00\xfa\x34\xd6\x76\x9b\xdf\xdc\xde\x1e\xb4\xea\xf1\x66\x3a\x03\xd6\x1b\x2a\x32\x0d\xb9\x2c\xaf\xc1\x7a\xbc\x96\x52\xb4\x3f\x57\xb6\x5d\x4c\xff\x00\x32\xee\xa3\x39\xf5\xe1\x9b\xde\x4e\x33\xa7\xbc\xbf\x04\x70\xbc\xe0\x4d\xc1\x53\x22\x3c\x9d\x72\xa8\xef\xd2\xfe\x86\xd1\xd1\x93\x7c\xfb\x22\x7b\x21\xbf\x16\x77\x7c\xfe\x06\x52\xba\xbe\xf3\x3f\x37\xe8\xc1\x63\x8a\xfb\xa9\x58\xa2\xc5\xbe\x11\xbd\x5a\xbe\x14\x79\xaf\xbe\xe0\x0b\x8c\xcc\x50\xbb\xa1\xf4\xaa\x21\xdc\xf5\x89\x39\x95\x1c\x96\x92\x28\xbe\xb8\xc6\xd2\x63\x1c\xaa\x91\xe6\xa0\x95\x6c\x5b\x3e\xf5\xd2\x7f\x4c\x3f\x63\xf9\x3c\x67\x17\x4f\xc6\x38\x4b\x3e\x4d\x64\xf7\x7e\x0e\xc4\x08\x7a\xef\x9d\x08\xe6\xf6\x75\x12\xa5\x8d\xfe\x49\x88\xa5\x08\x93\xb2\x37\x5c\xc6\x26\x33\x30\xd5\x23\x43\xc3\x95\x9f\x52\xfb\x92\x4c\x4f\x27\x29\x74\x47\x55\xe9\x62\xd2\x5c\xab\xa0\xd6\xa5\x6b\x7f\x8f\x38\x97\x74\xff\xc9\xf5\x7d\xfa\x9c\x3a\xeb\x3a\x3e\xc1\xb5\xe7\x6e\xb6\x9b\x01\x83\x6e\xa9\x22\x47\x95\x18\x80\x9b\xcf\x6c\x0e\xc5\x1d\x5e\x9b\xf2\xc1\x40\x42\x1d\x12\x85\x36\x49\x53\x52\x31\x9f\xa1\x5e\x85\x4b\x91\xae\x6a\xab\x5e\xcc\x50\xc9\xc5\x2a\x23\xa9\xe0\xa8\x9e\x5c\x53\xb5\x3f\x4e\x7d\x96\xb5\x5f\x4d\xbb\xd0\x10\xee\xc7\x95\x29\xea\x84\x52\x9c\x1a\xf3\xc3\x70\xcb\xb2\xa1\xbd\xab\xda\x49\x63\x4f\x9f\xba\xe0\x29\xfd\xaa\x20\xb8\xf3\xab\x62\x1e\xe1\x06\x4f\x33\xb4\x41\x46\xd6\xd5\xd0\x46\x77\x85\x8d\x6f\x69\x9f\x56\x7c\x6f\x42\xcc\xcb\x1d\xf9\xda\x69\x49\x85\x08\x32\x11\x00\x17\x48\xb3\xba\xb8\x53\xcb\x35\xac\xe2\x0c\x03\xa9\x86\xac\xcf\xf4\x70\xf7\x51\x84\x2d\x23\x9c\x56\xac\xec\x94\xe5\xdc\xe5\xe4\xe2\x57\xff\x85\x3c\x04\x58\x35\x78\xe3\x61\xf6\x8d\x33\x9c\xf7\x80\x9d\x50\x41\x51\x18\x6d\x59\x8e\x65\xee\xf0\x5e\x58\x96\xa0\x9a\x65\x1e\x9c\x32\x93\x48\x6b\x20\x2c\x5f\x49\x06\x6f\x8a\x37\xcb\x8f\x62\x91\x92\x5e\x80\xef\xfa\x19\x39\x3f\x28\xbe\x22\x29\xd8\xd5\x29\xc3\xe0\xcf\x85\x52\xdd\x5d\x21\x37\x93\xa2\x50\xe0\x0d\x7e\x9f\x8f\x4c\x5e\xa3\x88\x66\x2c\x57\x58\x6f\xe6\x2f\xb7\x49\x95\xeb\x20\x00\xa1\x47\x12\x22\x92\xd0\x81\xbb\x33\xda\xba\x06\xa4\xe2\x49\xb4\xe3\x9a\x32\xd8\xac\x63\x7d\x1a\xf8\x3b\xcd\x4c\xc2\x4f\x75\xd0\x93\xc5\x1d\xd9\x9e\xd4\x1e\xdf\x0e\xbf\xfc\x4b\x26\x64\x7e\x57\x9c\xbb\x48\xb4\xbc\x35\x4d\x5c\x26\x29\xc5\x16\x40\xca\x20\xe3\x5c\x13\xfc\x79\x2d\x77\xf6\xc8\xd4\xe7\x6b\xd3\xdc\xf4\x96\x42\xaf\x64\x89\x51\xae\xea\x44\xba\x90\x1e\xf0\xba\xde\x90\x24\xb2\x20\xa4\x02\xd0\x01\xdd\xf8\x5c\x9a\x0f\x04\xbe\x9c\xd1\xda\xf9\x9b\x66\xda\x07\x5e\xc1\x57\x14\xdb\xfc\x9e\xb1\x90\x75\x57\x9d\xd8\xd3\xc3\x21\x59\xb7\x3d\x25\xaf\x2f\x4a\xfb\x7e\xf1\x49\xf8\xfe\x7e\x7a\x8b\x53\x13\x0e\xcc\xde\x8d\x8e\xfa\xda\x99\xb6\xbc\xf0\x3a\x9c\x3b\xb0\x23\x7a\xaf\xfd\xbe\x80\xac\x9b\x5e\x3e\x14\x3f\xc0\xa9\x5d\xfa\xe3\x1d\x77\xef\xc1\x94\xfd\x25\xeb\x24\xe3\xac\x9e\x1e\x54\x58\x91\x15\x63\x5a\x51\x15\x8a\xba\xc5\x6c\x2c\x76\x84\x1e\x65\x65\x7d\x70\x27\x39\x73\x11\xb4\x25\xc0\x95\x15\xac\x5f\xc8\xf6\xca\x17\x03\x75\xcf\x9f\xec\xa3\x1c\xfd\x46\xdc\xfa\x3d\xbe\x68\x81\xbc\x3b\xbd\x4a\xe0\x2d\xf8\xe5\xf6\x03\x30\xda\xfb\x49\x43\x1d\xc1\xc2\x37\x34\xf4\x82\xfc\x82\x34\xd2\xc7\x5c\xc7\x55\x24\x45\x2b\x46\xb4\xd7\x00\x3d\xda\xf3\xf4\xe3\xbe\xc1\x93\x67\x05\x5e\x57\x70\xe4\x82\xd1\x8c\xf1\xf0\xe4\xee\x41\x48\xe1\xc0\x15\x92\x35\x1e\x20\xc6\x9c\x08\x2f\xad\xe4\x73\x41\x02\x9b\xb0\x2b\x0c\x64\x78\x83\x22\x1e\x44\x7f\x46\xde\x67\xaf\xd3\x90\x9f\x45\x54\x99\x7a\x40\x6f\x02\x57\x82\xdf\xe7\xa6\x50\x53\x2f\x58\x73\x72\x86\x59\xca\x3a\x26\xb7\xe2\xcb\xb7\xd8\x44\x10\x17\xea\x5d\x06\x86\xb5\x40\x7d\x92\xc2\x82\xd1\x65\xa9\xa3\xa9\x17\x53\xe8\x2a\x90\xdf\xcd\x8b\x11\xf4\x24\xcb\xed\x5a\x34\xe0\xf6\x24\x97\xd9\xe0\x5e\x31\xcf\x4b\xcf\xb2\x4c\x54\x21\x8b\xb9\xf5\x26\xa0\x60\xba\xf7\xa2\x81\x54\x8b\xba\x41\xe2\x37\x21\xad\x21\xea\x84\x55\xf6\x62\x80\x5d\x99\x12\x9b\xc6\x7d\x78\xd4\x48\xd3\x7b\x81\x17\xf5\x7e\xa3\xbb\x20\x23\x1d\xfe\x51\x98\x90\x76\xa4\xc9\xf9\xd6\xe2\x37\x33\xa8\x07\x2b\xf8\x42\x6f\x42\x05\x62\x74\xc1\x14\x7b\x45\xbb\x19\x96\x34\x45\x32\x5b\x12\x28\x36\xfe\x4a\xaf\xd0\x16\x77\x05\x9c\x73\x2f\x56\x65\x88\x12\x17\xea\xf2\x87\x75\xa8\x3b\xbf\xa0\x37\xd3\x21\xa5\xd4\xc7\x8e\x22\x34\x43\xdd\xf7\xc4\xac\xc6\xd8\x2c\x69\x42\x12\xeb\x99\x57\x90\x3e\x91\x39\x76\xc3\x84\x2b\xeb\xc7\xc7\xbf\x42\x0b\xf9\x59\x05\x2e\xf9\x32\x06\x85\x16\x42\xce\x9e\x16\x5c\x24\x28\x31\xc0\x2f\xa6\xa1\xf7\xa5\xa9\x42\x68\x8e\x43\xe1\xfc\xa9\x30\xcf\x84\x46\x5e\xef\x8b\x11\x49\x2c\x37\x43\x37\x8a\x33\xf3\x73\x26\x00\x29\xcd\x48\xef\x24\x09\xe0\xb8\x80\x34\x7a\xe8\x1e\x57\xdb\x3e\x81\x42\x8c\x8e\x2e\xd6\x2e\x90\x37\x5a\x74\x3f\x83\x48\xf1\x7b\x7a\x79\xd5\x8d\x8d\x6b\x8c\xb5\xe5\xff\xbe\xcb\xcd\x6e\x79\x5f\x72\x37\xdc\xf2\xc1\x7b\x75\x95\xa2\xdd\xbf\xa4\xde\x07\x03\xf2\x59\xe3\xfb\x56\x29\xb5\x97\xb8\x1c\x4a\x9d\x65\xc8\xec\xd5\x1b\x03\x53\x67\xec\x03\x2a\x77\x4d\x4c\xf0\x0d\x1b\x8d\xb6\x18\x58\x20\x0e\x55\xca\x6b\x46\xe5\x4c\x27\xf8\x6a\xb8\x28\x75\x19\x25\x31\x34\x25\xf6\x50\x89\xc5\x06\x20\xa4\xb4\xfa\xe5\x96\x67\x1d\x35\x64\xc9\x92\x39\x20\xeb\xea\x60\x71\x46\x9b\x7b\xc9\x70\x7e\xe8\x63\xe2\xbc\xc1\x09\x07\x05\x13\x68\xd8\x59\xfd\x09\x2a\xa8\x03\x3b\xc3\x32\xcb\x78\xd1\xff\x60\xb4\x10\x70\x66\x71\xe6\x08\x92\xab\x2b\xa8\xa0\x9f\xa6\xf6\x11\xea\x4e\x4e\xf2\x84\xaf\x98\x00\xd3\xb4\xa6\xd9\x04\xc7\x6a\x52\x17\x2a\x85\x44\x58\x57\x12\xed\x7b\x92\x1d\xf6\x51\xa0\x59\x89\xad\x9a\x3d\x67\x84\x64\x31\xd2\x4a\xd1\x00\x99\x4c\x85\x50\x32\x4a\x1a\xde\x17\x60\xcc\xc8\x88\xb4\x7c\xdf\x2c\x9e\x4e\x8c\xdb\xe3\xdf\x86\xb9\x88\x44\xe9\xa7\xc2\x36\x23\xb6\x3d\x6e\x60\x5d\xeb\x49\x17\xbb\xa6\x2b\x82\xf3\xa9\x4b\xbf\x01\xd4\x8d\x23\xd0\x90\xab\x8a\xd0\xc2\x66\xde\xa5\x25\xb2\xf3\x48\x4f\x50\x8f\x05\xa2\x72\x20\x96\x61\xc8\x18\x98\xd2\xe3\xb2\x6d\xcf\xf0\x7c\x6c\x46\x5c\xf7\xeb\x22\x6e\xf1\x87\x9a\xe9\x56\xd1\x24\xb2\x95\xb0\x86\xce\xc8\xe7\xb6\x04\x3e\xf0\x8e\xa7\x22\x84\x32\xa1\xa6\x4e\x55\x9f\xe2\x7d\x64\xe5\x7b\x65\x28\x77\x0e\xc4\x5d\xb1\x6c\xf2\xc4\x19\xf4\x43\x5e\x5e\x7e\x4a\x38\x7d\xb5\xdc\x73\xbc\xcc\xe4\xa0\xd9\x29\xe2\x79\x75\x20\xe4\xe2\x4b\xe5\x4e\x41\xee\x25\xf5\x3b\x08\xda\x20\x3b\x51\xb9\x23\xfa\x4c\xcf\x2e\x05\x19\xfe\xbe\x56\xc0\x73\x26\x0c\x9d\x01\x8c\x65\x4d\x41\x12\xac\xcf\xf0\x82\x6d\x8e\xa7\xe3\xe6\xb2\x9a\xcd\x8f\x1c\x36\xf5\xbd\xd9\x6d\x2c\xe7\x36\xd8\xe1\x8f\x89\x04\xd0\xf8\x3e\xa2\xd6\xe2\x74\xe5\x3d\xc7\xda\xe4\x41\x1e\x23\x95\x10\x0c\xb7\x2f\xc3\x2d\x7f\x35\x6d\xd3\xd3\x63\x96\xcb\xb5\xff\xd8\x48\x05\x77\xcd\x2f\x87\xa3\xa5\xa4\xc5\x8c\x61\xe4\xca\x19\x57\xea\xc4\x9c\x7a\xdf\x25\xd5\x73\xd5\xd1\x2f\x86\x98\x1e\xac\x9a\x0f\xcd\xb0\xe6\x9e\x93\xa0\xc0\x00\x47\xd8\x3a\x16\xf9\x53\x24\x07\xce\xb0\xa4\x7e\x1e\x50\x7d\x5d\x35\xaf\xab\x7e\xb9\xe6\x64\x8f\x6c\xb0\x78\x11\x10\xe9\xa9\x5f\x66\x19\xa8\x24\x16\x06\xe2\x5a\xb0\x4b\xa6\x62\x28\x8d\x97\x82\x8e\x5c\x96\xbd\x8e\xd5\x90\x00\x6d\x50\xf6\xdb\xf3\xf1\xaa\x60\x41\x84\x0f\xfc\xaa\xa8\xd2\xc7\xdf\x83\x5e\x21\x0c\x78\xaa\xab\x21\x19\xdf\x69\x9e\xe7\x63\xab\xf0\x2e\x14\x3f\x81\x73\xc8\x2a\xbf\x7e\x4b\x6e\xe3\x88\xb5\x01\x0d\xb5\xbe\xe7\xa5\x5d\x39\xe8\x78\x89\x66\xd6\xf3\xd4\xdf\xef\xf6\xd4\xb7\x4a\xf0\x04\xa2\x35\x22\xf9\x6c\x93\x99\xd1\x0d\xe1\x07\xf5\xf7\x9b\x7d\x95\x44\x5f\x6e\x4d\x0e\xe8\xba\xeb\x35\x3b\x03\x08\x53\xd2\xe4\x54\xe6\xc7\x2f\x87\x90\x33\x64\x49\x13\xba\x45\xe1\xd1\x06\x90\x1b\x38\x77\xd4\x15\x5e\x32\x60\x02\x49\xbe\xea\x4b\xeb\x5a\xa3\xec\x08\x37\x22\x9d\x82\xf5\x63\x3f\x62\xc0\x6e\xed\xe2\xd0\x91\x24\xcc\x4c\xe4\x70\xa3\x8a\x15\x02\xf5\x90\xe7\xa7\xb5\x18\xf0\x61\xd1\xa6\xac\xc0\xfe\xee\xce\x59\xa0\x2f\x49\x5f\x60\x90\x92\xd1\xf0\x54\x1d\x6a\x9a\x2d\x1a\xf3\x3f\x45\x2d\xf5\xd7\x50\xe9\x83\xfa\x66\x2e\xe5\xaf\x8f\x4c\x83\x3c\x72\x71\xee\xc7\xb0\xa4\x58\x7a\x7c\xd1\x7c\xd1\xa4\x0d\x12\xed\x06\x5c\x21\xac\xef\x4e\x57\xec\x8b\x93\xea\xa6\x74\x7b\xe0\x6b\x07\x3a\xde\xed\xc6\xa9\x0e\xa2\x90\xd4\x0d\x96\xb5\xcb\x18\x08\x39\x7c\x14\x80\xe8\x91\x77\x3a\x38\x0d\x76\x49\x16\xd6\x1f\x36\x07\x65\x35\x38\x20\x21\x4f\x55\x25\x50\x0f\xc6\xa4\xbb\x17\x54\x4f\x26\x75\x29\xac\xa2\xe3\x74\xc2\x2b\xfe\xb9\x4d\x8a\x0f\xe7\xd0\x47\xe9\xd4\xd5\xf5\x68\x8d\x3c\xd2\xd5\xd9\xea\x00\x79\xca\x0b\x8e\x7b\xe1\x1f\x92\x3f\x46\x79\xce\xe1\x3f\x7f\x3f\x07\x05\xfa\xec\x84\x99\x5d\x85\x11\x57\x28\x4e\x41\xc7\xdf\x45\x8f\xa0\x7b\x3d\xd5\x59\x96\x2b\x7a\x87\x97\x8e\xaa\x91\x9c\x09\xff\xa2\xab\x23\xe6\x1f\x63\x86\x62\x9a\xc5\x38\x52\xd7\x69\x6d\x08\x26\x30\x41\xc0\x4a\x66\x15\x25\x44\x56\x38\xf7\x20\xb1\x30\x33\x4e\x32\xed\x68\x8a\x48\x24\x80\xf6\x23\x9f\x18\xe6\x56\x8c\x89\xc4\x1e\x6f\x14\x4c\x26\x7a\xfa\x0a\xe6\xe3\x7d\xd2\x78\x87\xb6\xe3\xb7\xe7\xe0\xef\xa7\x3b\x15\xe2\xee\x08\xac\x81\x0c\x63\xef\x45\xae\xbc\x38\x5d\xe7\xc7\xfe\x69\x4e\xb7\xad\xda\x89\x9f\x46\x42\xce\xcb\x48\x3b\xd9\xe5\xdf\x7a\x8c\x2b\xff\xb8\x11\x10\x83\x45\x4b\x27\x0b\x86\x9c\x10\xc1\x1e\x54\xd4\x10\x49\x62\x58\xae\x89\xd0\x4d\x72\x5a\x0a\x11\x5e\x76\x25\xfe\x55\xd4\x13\x70\xaf\xea\x03\xde\xe2\xfb\x70\xd9\xb8\x18\x0b\x4d\x86\xf1\xe9\x91\x4c\x16\xc5\x7a\x4b\xb7\xfa\x3c\x03\x86\xc1\x82\x6e\x31\x3d\xc7\x2e\x85\x9c\x3d\x09\x85\xb3\x0a\x43\xa8\x55\x5f\x11\xbe\x2e\x02\x37\x61\xd6\x58\x49\xde\x8f\x45\x1d\xc3\xd0\x56\x14\x51\xe0\xd5\x9b\xed\x3e\xa9\xc6\x69\x85\x95\xec\xd0\x4b\xd6\xfe\xbc\x81\x40\x64\x18\x1e\x53\x7e\x19\xc0\x9e\x9a\x36\x25\xa7\x64\xa8\xfc\xef\xef\xc7\x36\xad\x58\x16\xb5\x3c\x9a\x5c\x32\x84\x5f\x72\x7a\xfd\x61\x64\x8f\xf3\x29\xab\xd8\x27\xeb\x0b\x54\xfb\xb3\x1f\xfa\x5c\x95\xce\x4d\xdd\x8d\x90\x14\x91\x6a\x37\xc8\x7c\xa9\x54\xa0\xef\x81\x36\xbb\xa6\xaf\x09\xfd\x0f\xc7\x98\x6d\xd5\x5d\xd5\x74\x81\x3c\x22\x7d\x44\x9a\x7f\xf4\x45\xed\x83\x39\xab\x09\x98\x77\x3b\xf1\xeb\x7c\x64\xda\x8b\xb8\xf8\xb9\xe6\x2e\x0c\x4b\x69\xac\xc9\xbe\x23\x19\xa5\x44\x40\xbe\xe7\xec\x9d\x76\x82\x4d\xe0\x5f\x02\x6c\xc5\xa1\xc4\xc9\x58\x82\x35\x57\x93\x1a\xb5\x99\x65\x87\x7c\xb9\x81\x65\x1f\xb8\x70\xc5\x4e\x46\x79\x7f\x49\x3d\xb5\x7a\x4b\x50\x0a\x7b\x28\x49\xb0\x28\x7b\xd6\x32\x27\x3e\x47\xa5\x6c\x7a\x26\xcf\x02\x79\x76\xed\xb4\xc4\xc2\x10\x02\xec\x6a\x07\x86\x6f\x19\xa1\x65\xbb\x56\x1e\xda\x64\xfa\xb3\x09\x0d\x8e\x18\x7e\x02\x92\x5e\x91\xf1\x62\x4a\xa3\xfd\xc4\x56\xa3\x74\x7e\xbe\x80\x50\xb4\x03\xcb\x63\xf6\x29\xaf\x22\x63\xff\x79\x14\xa3\xba\x25\x1a\x6c\x88\x89\xbf\x1c\x24\x08\xf6\x2d\x0e\x02\x7e\x3e\x78\xaa\x22\xaf\x87\x34\xc1\xf7\xa7\x6f\x52\xf0\x53\xb6\x83\x7f\xc7\x1e\x49\xd3\x85\xd7\xa9\x12\xff\x5e\x86\xa1\xfa\x9d\x4b\x73\xf9\x51\xb5\x77\x82\x65\xe9\x2e\xa4\x67\xa4\xab\x23\x74\xa4\x1b\xdb\x0e\x47\xa1\x81\x70\x89\x62\x28\xf8\x6f\x9c\xd1\x6a\xb3\x19\x20\x82\x67\x61\x05\x4f\xf6\x79\x75\x39\x81\x84\xad\xd2\xa7\x90\x13\xd7\xbc\x92\xc5\xf0\x19\x4f\x19\xc0\x22\x43\x8b\x85\x80\x5d\x21\x36\x9e\x0a\xc5\x78\x45\x33\x48\x63\xf3\xa4\x87\x94\x51\xf7\x45\x5c\x93\x34\xd4\x90\x5f\xf1\x14\xf8\x62\xb2\x15\x6c\x30\xb5\x87\x45\x6d\x7f\x26\xa7\x0a\xff\x30\xf1\x7b\xac\x29\xc1\xb2\x03\x55\x87\x65\xab\x48\xbc\x9b\x72\x2d\xbd\xb2\x60\x23\x8c\xcd\xbf\xed\x48\xa3\x76\x26\x54\xc5\x72\xe4\x33\xf6\x7d\xad\x30\x37\x84\x38\x69\x63\x82\x71\xde\x8c\x79\xa8\xb1\xe5\xdc\x05\xe5\x0d\x62\xbc\x4f\x3b\xce\xf2\x0f\x58\xc1\xe1\xd4\x62\x18\x06\xc5\xc5\xae\xf8\x59\xd0\x49\x0c\xea\x6b\xc0\xac\xc5\x90\x97\x29\x86\xfa\x95\xd7\x69\xc6\x41\xaa\xd3\x03\x43\xcf\xa4\x4c\x4b\x34\xe5\x91\x0d\x9a\x7d\x9a\x31\x89\x54\x47\x13\x3e\x27\x82\xb6\x35\x92\x85\x83\x29\x14\x7f\x36\x79\x62\xa4\x30\x62\x4a\x33\xf4\x7b\x72\xd2\xb0\x5d\x77\xeb\x63\x18\xd0\x9a\x1c\x43\x4f\x5e\xf8\xe8\x9c\xea\x96\xa6\x1f\x1b\xb1\xe3\xea\xe1\x36\x1c\x8f\xc6\x28\xff\x22\x1d\xfb\xb3\xee\x1c\xd3\x35\x87\x3f\x87\xd8\x06\xb2\x30\x8d\x25\x42\x30\x8c\x8c\x31\x6d\x38\x4f\xcc\x19\x09\x9a\x21\x49\xdc\x7a\x25\x41\xf4\x27\x3a\x80\xac\xb6\xf9\x58\xc9\x5d\xd1\xac\xfc\xaf\x29\x8f\x5a\x4b\x7b\x57\x99\xad\x56\xa5\x79\xd8\x06\xb4\x6e\x19\xb3\x7f\xd3\x60\x32\x62\xea\x3b\x04\x0e\x5e\x79\x68\x2a\x34\xd6\x07\x29\x5a\x32\xda\x9f\xab\xe2\xd7\xa8\x36\xdd\x98\x6e\x6d\x67\xb4\x7c\x04\x02\xbf\xfc\x15\xd8\xad\xfb\xf5\xfb\xda\x4f\xe2\x0d\xdd\xaa\x1b\x8e\x31\x9b\xc5\x30\x21\x83\x49\x2e\x37\x86\x8c\x98\x05\xb8\x1f\x6e\x30\x12\xc5\xb6\x30\xfb\x79\xb8\x4a\x2a\xd0\xfa\x6d\x8b\x34\x48\x20\x6d\xb0\xc8\x3c\x42\x61\xc2\x90\xe1\x34\xcd\xbb\x15\x23\xbc\x08\xc2\x3c\xac\xb3\xa5\x6c\xcc\xbf\x99\x4f\xf0\xba\xa4\xf3\x36\xad\xce\xb9\xa9\x89\x75\x35\x12\x6a\x92\x75\xcb\xc8\x9c\x6c\xe9\xac\x18\x49\x86\xcb\xb7\x74\xcc\x56\x5a\x91\xd5\x34\x7e\xaf\x35\x34\x80\xc1\x4d\x19\x70\xcd\x7c\x19\x63\x2f\x0d\xb9\xea\x07\xbc\x05\x70\xa5\x4d\x36\xb4\xd4\x18\x93\x83\xb6\xff\xad\x9c\xf7\x00\x8b\x43\x39\xac\xb1\x4c\x0b\x5e\x33\x56\x41\x21\x24\x07\xe0\x42\x0a\x79\xdd\xb6\xd8\xb4\x18\xf8\x1a\xd7\x77\x5f\xbd\xe9\x4a\xd8\x77\xde\xab\x31\xcd\xc7\x46\x21\x29\x34\x4a\x66\x22\x4c\x2a\x52\x86\x29\xe6\xd8\x58\xdb\x34\x4e\xf1\xe3\x8e\x0f\x9c\x39\x9d\xfb\xee\x9e\x13\x1d\x93\x1f\x7b\x97\x64\x09\x9f\x23\x9c\x24\x99\xa9\x9f\x15\x1e\x10\x80\xb1\x44\x9f\xb6\x20\xd4\x98\xfc\xcc\x93\xb7\x54\x3f\x73\x49\x6e\xa8\x63\x57\x52\x87\xd2\xa3\xc0\x56\xc7\x97\x69\x0c\x68\x6e\xcc\x16\xfa\x91\xc9\xbe\x28\x57\x2c\xcd\x02\xde\xa8\xea\xf0\xa7\x8b\xc0\xa9\x15\x71\x99\x87\x6a\x82\xbb\xfe\xf7\x30\x42\x62\x0a\x73\xfc\xc8\xf3\x82\xed\x54\xbf\x0c\x91\xb2\xb3\x2c\x89\xf0\x1c\x43\x7c\x5a\xd3\x4d\x5d\xa0\x48\xeb\xc1\xf3\xd0\xcb\x3b\xa1\xcb\x43\x96\xe4\xb6\xc7\x7b\xb4\xe4\x74\xf9\xaa\x9c\x97\x1c\xc7\xdb\x48\x0d\xf1\x0e\x25\x51\x5c\x82\xc6\xbc\xeb\x81\x22\x53\xef\x47\x29\x67\x05\x74\x73\x37\xdd\x1e\xfc\x6d\x37\xdd\xa8\x01\x85\xe0\x10\xfc\x92\x81\xb7\xfd\xea\xf2\x91\x47\x88\xe1\x4c\x37\x00\x47\xc8\xd2\x74\xa8\x4c\x98\x4d\x4c\x1a\xf4\xe0\x07\x8b\x16\x24\x0d\xb3\x33\x7b\xf9\x0c\x2d\xaf\xdb\x54\xed\x27\x55\x21\x49\x23\xdd\x79\x22\x62\xd8\xaf\xde\x61\xbb\x92\xde\x23\xb3\x4d\x04\x75\x74\x82\x30\xa5\x9e\xbf\x9e\x28\x10\x7e\xfc\xca\x20\xf8\xa2\x52\x01\x69\xd5\xdf\x4f\x01\xed\xa9\x06\x5c\x5e\xd5\x4f\x95\x9f\xaf\x1b\x39\x9f\x6f\xd5\x3e\xa9\x9b\x7f\x14\xed\x3e\x7a\x00\xb9\x80\xcf\xe4\x2f\x8b\x70\xdc\x22\x47\xba\x47\xb4\x30\xe0\x8e\xc4\x4e\x9c\x24\x3a\x1f\x2a\x0e\x21\x72\x15\xc7\xbb\x9e\x80\xb6\xee\x36\x6c\x10\x5c\xd6\x60\xe1\x9d\xb3\xbf\x18\xba\x49\xe0\xe2\x0d\xb2\x46\x02\x44\x68\xa3\x9e\xd0\x64\xb8\xd5\x6c\x9c\x17\x35\xbd\x25\xdc\x8a\x21\x43\x96\xed\x26\xf7\x2f\x72\x77\x70\xbd\xd1\xed\xaa\x38\x4d\x90\x3a\xaa\xdf\x0c\x7a\x4e\x27\x5b\xea\x0b\x9f\x3b\x3e\xc6\xa9\xd6\x43\x6a\x5f\x5b\xba\xe6\xaa\x5b\x82\x35\xfe\x6a\xa8\x01\x99\xe0\x20\x96\x49\xeb\xe4\xac\xe9\x6b\x46\xef\x0c\x16\x29\xe8\x05\x8e\x1e\xd6\xeb\x04\xcc\x12\x9b\x4b\x4e\x5e\x33\x7a\x49\xb8\xfd\x72\xdc\x4b\xed\x62\xac\x4a\x13\x7f\xaf\x8b\x3d\xe8\x53\x68\xea\x25\xb8\xd0\xa0\x43\xf8\xe0\xad\x52\x08\xe0\x8d\x98\x74\x18\x80\x8c\x62\x7e\x27\x70\x6c\x3a\x32\xa1\xcc\x6f\x12\x95\x14\x48\x85\x09\xa4\x00\x5e\x0b\xc9\x05\x4a\x4d\xf5\xfb\xdb\x6b\xda\xe2\xea\x6c\x19\x68\xd7\xf6\xa9\x89\x94\x85\xc5\x99\x84\x98\x74\xde\xc9\xa1\xf3\xa1\x4e\x72\xbd\x62\x30\x6f\xcb\x69\xb0\x55\xa2\xb2\x94\x84\xc8\xdb\x05\x75\x1d\xb0\x24\x82\x71\xda\xc9\xca\xa3\xaf\xfc\x3f\xd4\x93\x0a\xa1\x91\x25\x21\x46\xe6\xf7\x32\x5f\x42\x37\x72\x6a\x3e\xf0\xb0\x5a\xb3\x1b\xeb\xa5\xa6\x65\x8d\x18\x36\x60\x70\x5e\x5d\x0b\xe5\xd9\x78\xd8\x93\x1f\x51\xa0\x8f\x6b\xc1\x5b\x8d\x53\x50\x86\x79\xb5\xcc\x5c\x6c\x36\x1c\x14\xbe\x8a\x6a\x51\x27\x73\x5b\x09\x93\x92\x73\xe9\x35\xb0\x92\x60\x4c\x48\xc1\x64\x61\xe7\x46\x44\x6a\xa2\xe7\xf1\xfd\x91\x4d\x85\x24\x20\x05\x6d\x95\xfa\x80\x80\x36\x72\x6a\x91\x3d\x71\xa4\xc2\x2d\x79\x89\x48\xf1\x25\x89\x66\x7a\xb6\x21\x65\x0f\x37\x6b\xac\xf6\xe3\xc2\xb0\xab\x89\x55\x83\x8f\x3e\xd9\x32\xdb\x25\x73\x5b\x6c\x18\xc4\x28\x52\xa2\x3e\xf7\xa4\xd2\x4b\xd0\x0f\x0a\x4f\xe5\x7a\x30\x5d\xf1\x6b\x3b\xb3\x69\xb8\x88\x03\x80\x07\x2a\x9c\xd5\x35\x16\x4a\x8f\x33\x9b\x60\x4f\xbb\xc0\xb5\xea\x4a\x22\x20\x03\xa8\x7a\xdc\x0d\xe0\xea\x78\xfa\x25\x0d\x67\xde\xf8\x88\xb3\xa4\xa7\x6b\x3d\xab\xf4\xc0\x9c\x67\x5b\x6f\xae\x5c\x2d\xee\x83\x22\x87\x41\x37\x81\xd7\x24\xfb\x51\x07\x99\x62\x93\x78\x7c\x17\xab\xa9\x2c\x95\xaa\x87\x33\x85\x12\xf5\xf9\x59\x4c\x19\xb7\xcc\x96\x15\xf0\xe5\xc7\x46\x1a\xc0\x47\x93\x97\x16\x45\x87\xe8\x2d\x73\x9b\xbe\x22\xe8\x98\x5b\xa0\x5f\x5e\x4b\x96\x0c\xf7\xfc\x34\x87\x59\x37\xdc\xed\x33\x65\xc8\x7d\xd5\x74\xe0\xab\x30\x0b\x84\x90\x5f\x41\x77\x89\xc5\x52\x6c\xe6\x53\xb3\x30\x8a\x50\xd5\x9f\x61\x00\xb1\x61\x96\xa0\x5b\x02\x8a\x21\xd7\x10\x58\x0c\x78\x98\x1b\xb6\xcc\xae\x64\xca\x8c\x40\x80\x61\x5d\x5f\x5c\x82\xd6\x9d\xfa\xe2\xc2\xd5\xc2\x85\xdd\x22\x86\xee\x6a\x62\x51\x9d\x7a\x72\x5c\xbb\x57\x8a\xee\x39\xc0\xec\x9c\x6e\x52\x19\xbd\x7f\xe8\xf4\xda\x83\x1c\xb6\xba\x59\x72\x97\x6e\xe9\xdd\x59\xd8\xb4\x64\x6b\x47\xbe\xcc\xbd\xdf\x84\xbd\xbf\x83\x25\x9d\x64\x8c\xa9\xc1\xa0\x71\x3f\xe6\xa0\x29\x71\xb9\x0a\xf9\xe6\x6f\xa1\x6c\x6b\xd9\xa0\xc6\x9a\x8d\x47\xc2\x24\x2c\xfd\x84\x25\x87\x7c\xde\x33\x63\x78\x2a\x9b\x1b\x02\x6b\xd4\x6b\x9d\x60\xeb\x5e\x91\x49\x45\x93\x55\xaf\x97\x63\x2e\x65\x40\xf0\x64\x83\x44\xcf\x66\x07\xbb\x46\xd9\x16\x3a\x4b\x42\x87\xcf\xeb\x0c\xc8\x41\xc7\x8c\x9c\x71\x32\xa4\x89\x69\x8f\xbc\x7c\xe7\xfb\xf3\x94\x46\xac\x55\x27\x15\x06\x62\xfa\xec\xd2\x4d\xdf\xff\x89\xd3\x27\x74\x29\x3f\xc0\x63\x9b\x44\x7b\x28\x7e\x6f\x22\xc5\xf3\x54\x82\x41\x06\xbd\xd8\xfe\xc1\x61\xcf\x75\x69\xa7\xf5\xac\x24\x98\x2a\xdc\xc9\x1d\x42\x43\x85\x22\x51\x17\x47\xbf\x68\xd1\xe4\xd0\xbc\x08\x27\x3e\x96\xc2\x3d\x09\x01\xdf\x10\x5d\x00\xb2\x39\x6e\x11\x2f\x2c\x9f\x61\x2f\x36\xab\xd7\x48\x49\x57\xe3\x37\xad\x26\xf7\x70\x08\x1a\x94\x8f\x87\x9c\xc8\x4b\xfb\xc7\x28\x52\x16\x3d\x58\x6e\x17\x6e\x10\x02\x18\x0a\x73\xa7\x9c\x9c\x0f\x76\x0e\x52\xb7\x59\xcf\xf9\x60\x77\x19\xb1\xc7\xaa\x9d\x2a\x4e\xd8\xd2\xb6\x1a\x4f\x7e\x51\x1f\x37\x88\x85\x9c\x69\x56\x9d\x52\xdf\x8d\x45\x00\x9e\xd6\xe8\x4c\x8b\xf9\xd4\x5c\xad\x3b\x5e\xde\x96\x42\xd8\xfd\x2a\x8b\x15\x36\x18\x68\x8f\x7e\x0f\x2e\x22\x17\x78\x06\xd5\xd3\x96\x64\xf1\xc3\xbf\xcc\x66\x86\x7a\x2b\xaf\xc4\xdc\x88\x05\x55\xee\x03\x84\x9e\x6c\xc9\x29\xf8\x8d\xea\x07\x6e\x1f\xe3\x3e\x6d\xf1\xe9\xbd\xc1\x04\x28\x2d\x2a\x0e\x14\xc5\xac\xe1\xb9\x1c\xa8\xcc\xdc\xb2\x18\xbc\x3e\x5b\xc7\x86\x31\x13\x5a\x64\xa1\x78\x99\xd8\xb0\x4a\x07\x34\x44\xc6\x68\xf7\x0e\x1e\x8c\x45\x89\x75\x44\x7c\xca\x56\xde\x2b\xf5\x02\x1f\xfd\x2a\xd2\xb2\x74\x23\x01\x8e\x4b\xfe\x9f\xe8\x9f\xcb\x17\x83\x97\x61\x38\xb4\x7e\xe0\x57\x9b\x1b\x65\x04\x57\xfb\xd9\xed\x03\x15\x31\x32\xef\x13\xb8\xd6\x95\x76\xd8\x56\x32\xc3\x73\x13\xa7\x56\xc3\x5c\x5d\xbe\x1e\x1e\xfc\xa0\xe7\xbb\xea\x65\x6c\xe9\x19\xc7\xc7\xbc\xc6\x92\xf7\x48\x4d\x41\x34\x08\x2b\x51\x09\x58\x5d\x56\x2f\x72\x15\x37\x47\x67\xab\x02\xf0\x1c\x8e\x08\x06\x78\xcf\x6b\xce\x32\x6d\x3a\x16\x76\xd4\x5b\x7f\xd1\x66\x92\x74\x5c\x19\xd8\x90\x53\x2e\xe5\xd0\x92\x8d\x71\x8a\xac\x04\xd2\x65\xd0\xb5\x2e\xf6\x8d\x40\xb8\xc3\x13\x51\x62\x2f\xc7\x13\x23\x37\xc2\x74\xf9\x4b\x13\x37\x34\x3a\x78\x1e\x0e\x6d\xea\x39\xdc\x57\xad\xd4\xec\xf9\x44\xbb\xa7\x76\x6c\x2f\x1c\x78\xc6\x4b\x9c\xde\x26\x50\x0d\x0d\x57\x72\xb7\x4f\x0d\x38\x59\x44\x78\xf8\xac\xc3\xb2\xbd\x2e\xd2\xbc\x74\x12\x19\xa8\x61\x0e\x0d\xc7\xe9\x0c\x95\x7a\xa1\xf9\xc2\xbe\x72\x6f\x40\x67\x9a\xfd\x93\x4e\x8d\xa7\xcd\x27\x18\x60\xb4\x9b\x2a\x7c\xd0\x78\x04\x08\xd5\x8b\xa9\x0a\xb5\x3b\xfa\x8c\x5d\x92\x5e\x44\x1d\x10\x19\x35\x94\xb5\x5a\x98\xbb\xa1\x9a\x2e\x52\x44\xc9\x98\xe9\x08\x8b\xc5\xf0\x24\xc6\xa1\xc1\x17\x88\x42\xa2\x8f\x7d\x8b\x45\x83\xf5\x8b\xa1\xb3\xbf\xfd\x8d\x72\x28\x25\x8b\xda\xd5\xb6\xfd\xb7\x65\x09\xfe\x32\x23\xe7\x92\xe7\x88\x74\x82\x86\x51\xd7\xda\x0d\x09\x4b\x9a\x03\x7a\x96\x61\x5e\x87\xd9\x77\x52\x0a\x7f\x56\x22\xc2\x6c\x6d\xb4\x1f\xd5\x1f\x25\xd7\x66\x3b\x2d\x20\x5a\x0a\x3c\xbe\x52\x60\x5f\x6d\xf9\x44\xc4\xd9\x1c\x40\x65\x1c\xc5\x6d\xd1\x4c\x51\x4d\x60\xc3\x59\x62\xac\xcb\x81\x59\x4e\x66\x37\x99\x6f\x9f\x77\xa6\x6a\x70\xd4\x08\x00\x8f\xf7\x81\xb2\x9a\xbf\xab\x66\x64\xaf\x55\x2a\xbc\x5a\x4f\x7f\x08\x5b\xa5\x61\x0d\xf9\x83\x17\x6e\x53\x17\x3c\xba\x40\x40\x34\xef\x9e\x0d\x92\x4a\x1d\x15\x36\x04\x39\xa3\x4d\x9f\x26\x16\x4f\xcc\xd3\xc9\x29\xea\xae\x1f\xe3\x03\xa0\xee\x5d\x39\x78\x7e\x60\x31\xe3\xfc\x6e\x90\xcb\xdc\x61\x9a\x9a\x76\xa0\x52\xb4\x07\xa2\xc4\x3c\x3e\x67\xee\x97\x07\x03\xdc\x2e\x0d\xbd\xa0\xa3\x3f\x11\xde\xe7\x9c\x3b\x0c\xc7\x10\x9c\x8d\xf0\x55\x7f\xcf\x5f\x36\xb3\xd8\xdc\xee\x05\x9a\x82\xd7\xb4\x2a\xd7\xb8\x83\xae\xe8\xfa\xff\x48\x50\x53\xfa\x85\xc7\xa8\x93\xcd\xac\x2b\x04\x0d\xa3\x6c\x28\xba\xa6\x08\xce\xfd\x45\x02\xe5\xf4\xc1\x16\xb7\x00\x61\xf8\x60\x63\x93\xd8\x18\xe1\x5c\x62\x06\xba\xa6\xc3\xa2\xb4\xc1\x30\x5f\x34\x4c\x6e\x5b\x30\x30\x88\x52\x64\xf4\x84\x7d\xd8\x96\x86\xce\x67\xc2\x08\xc7\xcb\x8c\x97\x2d\x96\x14\xb0\x05\x47\x96\x56\x94\xd5\xe4\x71\xb7\x8f\xff\xdb\x7f\x25\x5e\xff\x32\x40\x5f\x3b\x35\x29\x66\x84\x56\xdc\xd5\xb9\x1e\x2d\xd2\xa2\x8b\xac\xcc\x27\x56\xd0\xf7\x12\x30\xda\xee\xec\x90\x8e\x58\x4c\xce\xea\x75\x99\x6e\x5b\x9f\x76\xa4\xd1\x60\x41\x83\x59\x60\xa3\xf4\x58\x68\x7f\xeb\x1e\xf0\x21\xea\x7d\x63\x24\x74\x05\xe6\xbd\x46\xcb\xae\x8c\x3f\xd7\x0c\xb2\xa9\x80\xa8\x3f\x99\xaf\x18\x6b\x06\xe3\x92\xe9\x53\x35\x2e\xa7\x34\xe7\xf8\x3a\x87\x07\xa6\x2c\x31\x0c\x66\x03\xf6\x81\x8b\xb2\x26\x23\x06\xb1\x46\x58\xd4\xe0\x45\x09\x4a\x6e\x0e\x6a\x46\xec\x0e\xb6\x58\x18\x6b\xb3\x8a\xc9\xbe\xd8\x9d\xee\xb8\xb8\x90\x40\xe7\x1e\x24\x81\x7b\x3d\xea\xba\x38\xda\x42\x72\x7e\x99\xcd\xbe\x08\xf4\x0e\x18\xf1\xa0\x2d\x84\x27\x89\x72\x9a\x37\xdf\x5d\xb8\x0e\x23\xf7\x85\xd5\x31\x91\x7c\x3e\xe0\x5d\x09\xbc\x69\x0b\xed\x7b\xda\x70\xd9\x50\xfc\x91\x76\x61\x0d\xe1\xcc\x54\xc6\xd8\x56\x35\x1b\x2e\x7b\x64\xda\xfa\x45\xa4\x35\x2c\xfd\x9e\xa3\xc8\x25\x88\xba\x7c\x77\x35\x01\x3b\x58\xed\xea\x30\xb6\xf7\x56\xd2\xf1\xea\x21\x19\x0b\x6e\xaf\xf2\xcc\x12\xe8\x3b\x97\xdd\xbf\x2b\x44\x1d\xf4\x17\x47\x14\xb7\xb8\x35\xa2\x1d\xc7\xb3\x67\x18\x25\x1d\x87\xea\xe9\x50\x70\xcb\xf7\x07\xe5\xb0\x44\x83\x26\xde\x68\x21\x8b\x31\x4a\x53\x1c\x36\xc8\x8c\x81\xda\x8e\xda\x8e\xc0\xf6\x5c\xec\xa8\xec\xa0\xd4\xe0\x75\xe2\x2d\x9a\xa0\x6b\xd7\xc7\x4b\xa1\x6b\xc1\x95\x63\xd1\x58\x95\xe2\xaa\x58\x92\xdc\x28\x80\xa1\xef\x23\x3e\x99\xc7\x57\xd6\xca\xb7\x9f\x20\x43\xd4\x99\x07\x90\xaf\x2d\xff\x00\xcf\x58\xf0\x0a\x39\x4c\x6f\xd2\xc5\x1e\xf6\x33\x8b\x4e\x58\x6e\x33\x98\x47\x64\x6d\x89\x85\x41\xb6\x11\x71\xe2\xab\xe5\xcc\x0a\xb8\xf9\xd1\x3b\x81\xc0\x6d\x70\x3c\xfa\x1d\x9d\xd2\x4c\x72\x32\xda\x9b\xdf\x6b\x3e\x40\xf0\x35\x74\xa5\x28\x0c\x34\x2d\xcc\xb5\x08\x8e\x22\xbe\x5a\x1e\x1d\x85\xc9\xf8\x15\x77\x66\x64\xc1\x1c\x69\x64\x2e\x56\xc9\x2f\xdd\xb8\x35\x2f\x04\x1c\xc6\x65\x63\x63\x7f\xc8\xaa\x21\xc1\x89\x81\xa6\x91\x39\x30\xca\x35\x68\x92\x97\x7a\xe1\x7a\x4e\x1e\x25\x12\x7d\x80\xb2\x44\x9a\x76\xce\xe2\x66\x3e\xe9\x74\xd0\xe5\xe7\x12\xf8\x56\xd7\x45\xfc\x85\x01\x69\x84\x55\x40\xa0\x61\xf7\x91\x50\x68\xff\xd9\x3d\x80\xf4\x85\x5b\x1e\x4d\xc6\x7e\x7b\x60\xdb\xa7\x69\x31\xd1\x58\x26\x68\xe3\x28\x91\xee\x2a\x95\xae\x5f\x7c\xaa\x70\x41\xf3\x41\xec\x38\x38\xdb\x28\x59\x72\x66\x75\xb8\xb0\x37\xda\x8c\x51\x18\xab\x49\xeb\x57\x4b\x20\xf8\x86\xc5\xb3\xb4\x7a\x88\x18\x19\x19\xe9\x4a\x1c\x3f\xd0\x2d\xdf\xcd\xb3\xc5\xe6\x8c\x5a\x82\xa3\xe3\x47\x54\x61\x12\x04\x3c\x0a\x69\x5e\x98\x9a\xf5\x46\x28\x19\xda\x70\x3d\x61\xea\xd0\xa3\x2c\x49\x0f\x38\x9a\xc7\x34\xde\x89\x75\x71\x15\x1f\xd9\x8c\x67\xbc\xc6\x62\x5e\xe1\xbf\xcc\x76\xf1\x83\xef\x4a\x2c\x48\x69\x9b\x64\x9f\x72\xc6\xa5\xf6\x8a\x10\xe8\x34\x6e\xaf\x0d\x71\xb2\x26\x1a\x86\xd8\x71\x2e\x8b\xa8\x41\xe1\xff\x08\xc2\xc5\xcc\x07\x11\x22\x7f\xa2\x4b\xd0\xba\x6f\x2b\xdf\x07\x8b\x4b\xd6\x27\x82\xd5\xc7\x90\x2f\xd8\xbf\xca\xcd\xe0\xe2\x4c\xc4\x51\x19\xfa\x21\xb1\xd5\x41\x49\xec\xf2\x70\xc1\x1f\xe0\x7f\x72\x6a\xe0\x5e\xf7\xa2\x39\x5f\x1f\x4e\xbe\xcd\x7f\xdc\x6b\xb5\x76\x6c\x3e\xc9\xe1\xee\x18\xb6\xd5\x9f\xf7\x9e\x86\xb8\xbd\xf3\x3e\x62\x49\x4c\x3e\x78\x9e\x79\x58\xf7\xf6\x83\xaf\x15\xe1\xd4\xed\x46\x92\xf8\x1e\xf0\x01\x1f\x85\xdd\xf4\x48\x4a\x18\x14\x07\xe5\x15\x3c\x50\x73\xe4\x9f\xc7\xba\x5c\x04\x59\x95\x41\x4e\x92\x9d\x2d\xa9\x25\x0a\x53\xd9\xf7\x52\x9e\xb3\x77\x06\x69\x43\x8b\x4f\x69\x50\xd1\x5c\xfa\xaa\x86\xf6\xe7\x6f\x06\xce\x88\x57\xed\xe7\x99\xeb\xca\xf7\xe1\x7a\x08\xfc\x77\x7d\xef\x0e\x1a\xef\x49\x14\x1d\x8f\x65\x8f\xc7\x77\x48\xe6\x75\xef\xf7\x2c\xe3\x53\xac\xae\x9f\xe3\x43\x8b\xe6\xf7\x7b\xcf\xe4\xb7\x97\xd9\x10\xc1\x86\xcb\x59\xce\x70\xee\x8e\xf8\xcc\x66\x2c\xcf\x92\x87\xb7\xbc\x09\x56\x8c\xe4\x4a\x97\x8e\x0b\x60\x05\x45\xff\xc1\x4a\x2c\x79\x6e\x90\xf2\x9c\xc4\x24\x7c\xc0\x3f\xbe\x3b\x61\x05\x3c\x02\x4d\x62\x2e\x06\x5f\x74\xf2\x6f\xfd\xdf\xfc\xc6\x62\x49\x4c\x73\xa7\xa1\xa9\x2a\x5f\x20\x4c\x2b\x96\x51\x47\xc4\x5e\xbb\x1f\x27\x17\x2e\xf1\xe9\x1f\x84\x3c\x00\xe6\x80\xc4\xe2\x79\x08\x9b\x2e\x0c\x7a\x7b\x9c\x85\xea\x78\x4f\xfa\x90\x70\x4d\x86\xf3\x1d\xa6\x66\x70\x71\xc8\xe4\x0a\x43\x76\xba\x56\xcb\xd5\xe4\x24\xd3\xf7\xb6\xfc\x06\x41\x69\xf6\x31\x9a\xb7\x75\x64\x22\x7b\xa6\x22\x53\x9c\xbe\xa5\xef\x83\x8d\xe1\x1f\xeb\xc1\x8f\xce\x16\x3d\x9f\x61\xf5\xdc\x4c\xaf\x09\xf0\x61\xd0\x6d\x8f\x63\xce\xd6\xea\x2e\x6a\x8f\x96\xb9\xd6\x32\xbb\xbd\x98\xed\x4d\x8a\xce\xf3\xa7\x7b\xd9\x0f\xcb\x34\x0b\x4a\x38\x9b\x23\x9e\x12\x02\xb1\x5f\x5c\x95\x38\x98\x7d\xa0\xb2\x73\xa0\x0b\x05\xb2\x52\x88\x86\xcd\x8b\xa1\x8b\x75\xc6\x04\x5c\x18\x12\x0b\xca\x77\x7f\x8b\xa5\x10\x60\x4d\x06\x94\xea\x31\xe6\x45\x88\xba\xda\x6a\x29\xb0\x14\x4f\x19\xa5\x76\x39\x0c\xb0\x28\xa9\x79\x20\xa5\x4d\xbb\xc5\x02\x8a\xa6\xfc\x4d\x42\xbb\x1e\xa8\xdb\xc9\xef\xed\x80\x98\x6c\x30\xe3\x7b\x4f\x01\x13\xbc\xb1\x15\xd0\xc4\x3e\x61\x97\xdf\x78\x7f\x6e\x9d\x5c\xd1\x5f\x37\xcc\x53\xa5\x4b\x0b\x0b\x3f\xe7\xdc\xa3\x4a\xec\x83\xe2\xad\x06\xe9\xec\xcb\x3e\x8e\xe7\xdc\xb7\xdb\x99\x65\x89\xba\x10\x6a\x5e\x73\x27\x19\x75\x17\xf8\x88\x66\xba\x91\x8f\x55\x58\x13\x2d\xb0\x4e\xd3\xfa\x9b\xfe\x9a\x27\xa9\xa9\xff\xb4\x69\x5c\x2b\xc6\x01\x9d\x44\x18\x9e\x37\x10\x0f\x23\x53\x8d\x68\xf7\x87\x2c\x56\xa2\xab\x33\x1a\x27\x08\x6e\x4f\x3a\x65\xba\x93\x78\x91\x5b\x2e\x6d\xb1\xc5\xd8\x3f\x68\x3b\xb4\x29\x8b\x33\x66\x14\x21\x67\x8d\x37\x41\x02\x27\x31\x35\xb2\xd7\x77\x7e\x36\x33\x23\x42\xce\xf5\xfb\xd2\xde\x43\x79\x8d\x7a\xf3\xdf\x35\x64\xf6\xba\xba\xf4\x45\x2c\xc4\x64\xb8\xb0\xc1\xe1\x8f\x83\x0e\x96\x62\x5b\xbb\xf8\x89\x7e\xaf\xca\x12\x86\xf0\x9d\xe0\x3a\xd6\xbe\x86\x1d\x7b\xd0\x9c\xfa\x06\xba\xdf\xf6\xc5\x79\xe6\x91\xde\x8c\x6a\xb3\xe4\x88\x8b\xfc\xae\xfa\x8d\x1b\x7d\x0b\xbf\x07\xf3\xc6\xc4\x5c\x49\x0b\x77\x60\x0e\x25\xf6\xfc\xda\x77\xbc\x32\x52\xb9\x88\x66\x87\x62\x40\x85\xc3\xc0\x9a\x49\x46\xd3\x57\x6d\x63\x55\x54\x25\xc0\x82\xdb\xde\x5c\xf4\x97\x61\x33\xbf\xa6\x4b\x72\x50\x9a\x71\x49\x29\x43\xf7\x95\x67\xbf\x49\xf4\x93\x3f\x47\xf0\x35\x52\xc7\xb7\x25\x25\x95\x9c\xd5\x39\xbd\x01\xbf\xfe\x56\xf9\x02\xf5\x12\xbf\x51\xa3\xec\x80\xbf\xc8\x41\x7b\x08\x20\x06\xef\x2a\xc3\xc8\x24\x27\xf2\x23\xd9\x5a\x60\x0a\xb6\x61\x92\x99\x58\xbb\x7e\x68\xb5\xec\x24\x5a\xaa\x4e\x22\x4d\x9a\x40\x60\x8a\x1c\x99\xd8\x62\xca\x32\x65\x16\x1f\x0e\x8c\x13\xc8\x7f\x8e\x58\xed\xad\xe8\x83\xb8\x4d\x77\x69\x5d\x74\x65\x7e\x35\x36\x79\xce\xb4\x14\xc4\xa4\x59\xc6\x0a\x3c\x72\x7c\x7f\xc2\xca\xab\x87\x2e\xab\x12\x87\xac\xe6\x3e\x7f\x5a\xb0\x82\xbf\x95\x02\x9a\x21\x31\x04\x0a\xef\x2a\xaa\xfa\xd3\x66\x78\x3a\x69\x35\xcf\x45\x57\x95\x1c\x55\x44\x8e\xfb\x11\x6c\x29\x6e\x6b\x60\x2f\x39\xe1\xdb\x34\x10\x51\xf8\x68\x8b\x08\xb6\x6f\xfd\xc5\xd5\xf6\xf5\xc4\xae\x0f\x65\x57\x85\x97\x5e\xba\x66\xf1\xa5\xfa\x94\x60\xf3\x32\x9a\x00\x2c\xfa\xfb\x8a\xfa\x7d\x96\x04\xb7\x77\xd7\x94\x7a\x00\x3d\x91\xa6\x42\x50\x59\x4e\xaf\x06\xb2\xb0\xaf\x56\xec\x2d\xbd\xee\x38\xd7\xc8\x33\x09\xbe\x93\xa1\xfc\x36\xd1\x0e\x45\xf2\x18\x19\xb2\xfa\x2b\xa9\x0d\x35\xd2\xc8\xdc\xe1\xf5\x99\x7e\x20\xa8\xa6\x25\xcd\x72\x70\xf7\x57\x3b\x7d\x1c\x6e\xe9\x8f\xae\x6c\x3f\x7a\x61\xbf\x52\x3c\x3e\xa7\x0f\xb4\xd1\xc9\x38\xc3\x70\xf8\x5a\x63\x33\x9e\x22\xee\x88\xf2\xb4\x2e\x39\x94\xf4\xc0\x89\xfe\x98\xee\xe3\x24\xa3\x9f\x3d\x64\xde\xe0\x7d\x12\xf5\x85\x25\x8b\xc2\xa4\x3d\xbc\xa2\x31\x15\x33\xc5\x25\x59\x73\x66\x3f\x3e\x6c\xa4\x66\x03\x03\xe6\x92\x26\xee\x6b\xff\xe1\x83\x1a\x64\xad\x69\x2a\xa8\x08\x71\xf7\x5f\x71\x3e\xa0\xa4\x7a\x85\x42\x42\xdb\x44\x6e\x44\x68\x6b\xb5\xf1\x96\x34\x76\xb5\xf2\x3e\x29\xc1\xd4\x5e\xae\x98\x76\x9f\x3b\xd8\xaa\xac\xbc\x53\x78\x14\x40\xbf\xce\x1f\x26\x16\x2e\xdd\xdb\x28\x53\x38\x58\x76\xc5\x53\xb3\x52\x52\x23\xe1\x55\x5c\x06\x14\x9a\x05\xa6\x8f\x30\xe1\x7a\x7d\x4a\xe9\xc3\x53\x29\xb4\x60\x5b\x3d\x32\x48\xec\x7e\x8d\xf8\x65\x1f\x9f\x9a\x9c\xdb\x9d\xeb\x5e\x46\x08\x56\x22\xc7\x47\xfb\x59\xac\x44\xd3\xf8\x51\xe2\x1b\xc3\x3b\x3a\xfb\x3c\xb2\xfa\x52\xf8\x51\xe8\xb0\xc2\xb2\xd2\xa0\x68\xc7\xed\x92\xac\x95\x09\x3c\x62\xbb\x29\x91\x99\x4e\x44\x3e\xce\xd7\xa7\x7a\x07\x47\x25\xb3\x69\x8f\xfe\x24\xf8\x66\xfb\x66\x03\x9e\xc4\xcc\x4e\x41\x4b\x62\xca\x2e\xa3\xfc\xfa\x5e\x9c\x0a\xf3\xcf\x79\xad\x43\x66\x25\x2e\xfb\x16\x19\x60\xd3\x9e\xf2\x4a\xcb\x00\xc6\x81\x73\x07\xc8\x98\xeb\x45\x38\x7b\x85\x43\x1f\x56\x59\xce\x10\x01\xf9\x81\xfe\x6f\xdb\x84\x98\x6f\xb1\x25\xbc\x8b\xc8\xd7\x6b\xa2\x0a\x25\x61\x54\x7d\x47\x10\x84\x26\x7c\x4c\xb0\x7b\x4e\xec\x7d\xe6\x2b\xbb\x03\x9b\x24\xef\x10\x6d\xb6\x58\x51\x96\xcc\x75\x43\xb7\x75\xbf\x52\xc2\xeb\xfd\x58\x3c\xe6\xbc\x5d\xe0\xb4\xb4\x3c\x1c\x09\xf2\x4a\xe6\x69\x65\x8d\xe7\x81\xea\x7e\x5b\xb0\x25\xca\x52\x24\x0e\x92\x99\xf0\xc3\xd4\xb1\x46\xab\xc5\x34\x9c\xa9\xf0\x4e\xa4\xea\x52\xb0\x34\xc2\x39\x08\x43\x15\x9a\xee\x97\x1e\xae\x27\x0a\x1e\x82\x6d\xa6\x70\xf4\x76\xcd\xac\xb7\x02\xa8\x94\x8e\x64\x72\xd7\x50\x69\x7c\xae\x69\x04\x07\xcc\xdc\xa5\x7d\x10\x59\x14\x45\x94\xa2\x8d\x7f\x3d\xc6\xaf\x2d\x77\xf8\xed\xe1\xc8\x5b\xcb\x6e\xe2\xb6\x66\xba\xbc\x72\xb0\x14\x09\xc3\x4c\x79\x58\xc7\xf4\xc4\x48\xcf\x6a\x69\x83\xd4\xb0\xc3\x55\x80\x1d\x9a\xf8\xdd\xa4\x3c\x2b\x03\xea\x14\x55\xed\xe6\xa0\x3d\xc6\xfe\x4c\x51\x17\xf2\x4d\xd8\xcb\x99\x4d\x6d\x3b\x53\xad\x00\x9c\xbc\xc1\x34\xbc\xc5\x30\xe5\xbf\x11\x32\xd0\x16\xb4\xa9\x76\xd3\x6c\xb4\xeb\xdd\x26\xe3\x52\x25\xbb\x71\x93\x05\x61\xde\xab\xcc\x41\xc7\x98\x1e\xd1\x81\x41\xa9\xce\x83\xde\x3d\x9c\x00\xe3\xe2\x22\xe8\x17\x47\x96\xd0\xda\xcd\x61\x5e\xc8\x1f\x36\x46\x80\xae\xa0\x67\x07\xa2\x5c\x69\x0e\x2e\x55\x52\xc1\x72\x9c\xcd\xad\xfa\x63\x8f\x99\xac\x9c\x92\xcb\x71\xe7\xc4\x56\xc5\x23\x4d\x8e\x3e\x3c\x3b\xac\xfe\xbe\xfa\xa1\x8b\xfb\x35\xbd\xe0\xd4\x1f\xa2\xd2\xd3\xf3\x39\xfa\xb9\x00\x06\xeb\x07\xfc\xcf\x57\xc4\x5f\x1d\x5c\x01\x02\x38\xe3\x84\x65\x8e\x4d\x62\xd8\x66\x9c\xf2\xfb\x77\xea\x3f\x57\xc2\x89\xdd\xaf\x52\x36\x55\xa2\xc3\x7c\xca\x08\x15\xc5\x5b\x51\x86\xc3\xa9\x28\xb3\x88\x91\xeb\x9f\xc7\xca\xb0\x3c\xb2\xe0\x5e\x08\x8d\x50\x30\xe9\x1c\x7a\x7e\x22\x9d\x40\xcb\x3e\x80\x95\x5c\x2e\x1d\x38\xa0\xea\xa0\x0c\x9b\x4d\xc4\x08\xb1\x49\x46\x96\x4d\xb4\x78\x70\x46\x83\xcb\x89\x9e\xe9\x71\xb0\xb5\x16\xfa\x0d\xaa\x32\xc0\xef\x61\xbc\x71\x7a\x2a\x39\x43\x62\x9a\x18\xd2\xe7\x4c\xcf\xee\x39\x0f\xe6\x90\x01\x53\x71\xe4\x26\x61\x81\x74\x62\xf4\x61\x1b\xeb\xcd\x5c\x06\x02\x9c\x72\x70\xaf\x59\x18\x16\xe6\x42\x7d\xc2\x10\x34\x39\x8a\x89\x6a\x48\x8b\x8e\x5c\xeb\x9a\xe1\x27\xce\x75\xf0\xd0\x7b\x6a\x0a\x6f\x06\x87\x2d\x33\x9a\x6f\x2d\xb6\x4e\xdf\xbb\xd0\x01\x27\x8a\xe5\xde\x7b\x4f\xb7\x50\xdf\xc5\x91\x74\xcf\xc0\x1e\x15\xd8\xac\xce\xb2\x86\x17\xb4\x6f\xc5\xf1\xbd\x09\xc4\x67\x48\x3a\xcc\x9b\x88\x99\xe9\xea\xac\x56\xce\xb7\x79\x59\xf9\xe7\x9d\xba\x5b\x93\xef\x58\x5f\xb6\xab\xca\x64\x71\xec\x37\xbf\x17\xf0\xd7\x02\x48\xcc\x68\x43\xfc\x87\x63\xb2\x03\x6e\xc3\x9c\x0e\x58\xad\x99\xcc\x05\x0a\x62\x3c\xdf\x34\x56\x71\xe7\x9e\xae\xfe\xbf\xe3\x8e\x6c\x4c\xbb\x10\xe3\x8e\x88\xda\xc8\x54\x32\x9f\x3a\x1e\x1b\x76\xd8\x2b\x5f\xb9\x5c\x3e\x0f\x9a\x88\x9a\x3f\x55\x1f\xd4\xa9\x0e\x50\xb2\x22\x44\x17\x20\x08\x3e\x12\x1d\x60\xbc\x11\x90\xfc\x41\xb9\x51\x1f\x33\xdd\xaa\xde\xf7\x14\x80\xf5\xe8\x96\x2f\xc3\xee\x55\x95\xd7\x6a\xc4\xb9\x60\xce\x89\x48\x8d\xb1\x0d\x82\x86\x4c\x48\x4b\xe4\x5e\x42\x41\xe9\x58\x61\xcb\x4e\x57\x59\x06\x70\x8d\xa7\x0b\xc6\x6e\x6c\x84\x54\x2b\x0a\x94\x69\xfb\x47\xf9\x67\xfa\xdd\xe5\x34\x4a\xc8\x8d\x0b\x91\x9a\x02\xaf\xc6\xae\x07\xc7\x54\x82\x04\x69\x19\xf6\xee\xe2\xf1\x0c\x08\x7e\x5c\x4f\xfd\x7d\x61\x8a\xbf\xb7\xb5\x2a\x35\x05\xc2\xde\x68\xa2\xe4\xe2\x8e\x37\x8d\xb9\x34\x56\x7e\xcb\x54\x81\xe2\x64\xe6\x4f\xfc\x04\x98\x8d\xec\xef\xd5\x77\xdb\x66\x75\x89\x35\xa6\xfb\x09\x1c\xbd\x7b\xe6\x48\x5f\xbd\xbb\x1a\x62\x2e\xe7\x05\xa5\x14\xf9\xe4\x96\x54\xb9\x95\x83\x9f\xd3\xcf\x57\xf7\xdf\x8a\xa6\x15\x46\x1a\xc5\xe0\x29\x2b\xb2\x28\x31\xc5\x09\x39\xd7\xbd\xd0\x7e\x29\xfd\xe5\x64\x2b\x52\xff\x41\x22\x48\xce\x94\x00\x7e\x4e\x5a\x9d\xf5\xc7\x96\x69\x19\x63\xff\xc6\x1b\x0a\x6a\xaf\x7a\xfd\x06\xc7\xa6\x57\x74\xc4\x0f\x3a\x05\x76\x78\xb5\x16\xfb\x77\x90\xe7\x3d\xee\x3c\x54\x9d\x4b\x19\xab\x4d\xaf\x6a\xe1\x78\xaf\x4a\x37\x62\x65\x59\x7f\x9a\xc4\x2c\x61\x96\xe3\x36\xe1\xf7\x1d\x89\x81\x6b\xca\x3d\xf2\x06\x5d\x6b\xd7\xdb\xe3\x2b\xe5\xfe\x62\x9d\x91\xee\x89\xde\x12\xb5\x4d\xd4\xad\x7c\x7d\x4a\xee\xd1\x58\x52\x56\x47\x0c\x15\xfa\xcb\x43\x9f\x6c\xd4\x04\x67\xe2\xa1\x02\x10\x98\xb9\xb3\x26\x9d\xc0\x59\x99\x69\x4f\x59\xf8\x06\x3a\x1d\x25\x69\x84\xed\xcb\x34\x32\xf4\x9a\xfd\xa1\xf0\xe6\x85\x80\xd3\xa1\x8c\x6a\xab\x7f\xa5\x69\x42\x1e\x82\x5d\x5e\x1b\xdf\xcd\x99\xb8\xa8\x00\x6c\xce\xc4\xe4\x2a\xf8\xbd\x5d\xd3\x33\x72\x7c\x37\xaa\xc2\xbb\xb8\xd2\x62\x6a\x87\x08\x28\xf7\xf6\x3f\x5f\x72\xb4\xe0\x5e\x5a\xd7\xa9\x90\xc9\x7a\x6b\x14\x4d\xd7\xb1\x80\xb4\x76\x81\x4b\x67\xaf\x64\xda\x1d\xb8\x94\xc9\xcc\x8e\x1d\x69\xa6\x9f\xe5\x1a\xb3\x66\x65\xd4\x24\x45\x3d\x5d\x13\x5c\xb3\x17\xe6\x33\x0e\xfc\xc5\x33\x72\xa1\x24\x2f\x59\xaf\x3f\x59\xb5\x28\x30\xb6\x8e\xeb\xbd\xb9\x71\x12\xfd\xc0\xea\xd1\xfb\x3c\x9a\xe0\x87\x27\x75\xb3\x13\x93\x1b\x86\xec\x96\xf3\xc6\x6a\x4f\x7d\x48\x61\xed\x41\xec\x05\x6b\xd6\x96\xaf\xb0\x42\xbe\xd0\x2f\x67\xea\x69\x1c\x72\x66\x3e\x41\x93\x74\xc8\xcf\x8d\x10\x53\xb0\x18\x3a\xdc\x16\xe6\x66\x71\x5a\x9c\x8d\x1b\x0a\xf2\xb5\x4d\x34\xd7\xbd\xf3\xeb\xe1\xd0\xd2\xca\xd8\xfd\x27\x95\xb8\xb5\x13\x42\xdf\xd2\x4a\xe6\x14\x4a\x55\x83\xfb\x80\x5a\x90\x7c\x96\xba\xc2\x3e\x89\xc1\xdf\x94\x46\x4f\x13\x2d\x08\x91\x46\x3b\x38\xe3\x29\x30\xe2\x61\xe0\xa1\xca\x40\xfd\xcf\x0b\xa5\x0a\x8a\xc7\x5c\x81\x56\x49\x4f\x41\x3c\x19\x44\xed\x7d\x7a\x2f\x6b\x54\xe7\xfe\x48\xbd\xa9\x03\x5f\xa0\x66\xdd\x9f\x95\x67\xc4\x18\x2c\xce\xc9\x66\x2b\x2c\x93\x78\x2d\xfe\x92\x52\x95\x85\x21\xe5\xce\x19\x7b\x7c\xd7\xd2\x44\x8a\xc4\x15\x11\xab\x15\xff\x41\xfc\x12\xf3\x2f\xdc\xd6\x45\xc0\x26\x03\xd3\xda\xfa\x0a\xf0\x07\xb1\xcf\x23\xd5\x97\xb6\x0e\x6f\x12\xe1\xcc\xc3\x64\x40\x4b\x00\x4d\x5d\xb1\xc1\x84\xbc\x4a\x4f\xdc\x08\x41\xaf\xb1\x68\xff\x24\xcf\x0b\x1b\x3e\xf6\x9b\x77\x48\xcf\x10\x33\x25\x6a\x51\xc2\x4f\x06\x0d\x00\x7c\x2f\x5b\x26\x97\xb5\x27\x8f\x73\x7f\xbb\x61\xcf\xc1\xd5\x8c\x0b\xc3\xdb\x94\x79\x6e\xf7\xf1\xdb\x82\x26\xf7\x8c\x63\xa9\x05\xf6\xd8\xe3\x1f\x7c\xce\xec\xe5\xeb\x03\xf9\x40\x4e\xda\x91\x5e\x16\xb6\xa2\x6d\xd7\x88\x9b\x9a\x9b\x63\x68\x7b\x1e\xaf\xf7\xbe\xdd\x0c\x3d\xf7\x36\xc1\x8f\xc0\xb7\xc1\xdc\x4b\x83\x44\x56\x7c\xfe\xe9\x81\xe8\x27\xf5\x1f\x5e\x89\xac\x33\x1d\xd6\xae\xcb\x36\x1c\xc1\x60\xed\x74\x3a\x3a\x06\x6f\xa4\xd3\xe9\xb2\xb8\xf8\x82\x61\xdf\xc8\x16\xa0\x0e\xb8\xca\x58\x2a\x31\x19\xba\xea\xc7\x1d\x32\x41\xcc\x18\x91\xbb\xec\x5c\xd8\xab\x96\x12\xc4\xf2\xdd\x8e\x5e\xe6\x5a\xb0\x3e\x78\x75\xc6\x60\x75\x81\x8c\xe8\x94\xe1\xc8\x86\xa7\xa6\xaa\x02\x6b\xa9\x32\x25\xf3\xb6\xa0\x6c\x59\xcc\x27\xbb\x90\x3f\x7e\x27\xca\x22\x1e\xff\x79\x20\xfb\xc1\x5a\xd2\xca\xad\x4b\xb0\x7d\x64\x23\x2e\x3a\x64\xf9\x93\x97\x7b\xfa\x10\xa6\xe9\xed\xfd\xc4\x36\x83\x7f\x32\xdd\xfb\x91\xd8\x5b\xe5\x57\xcf\x42\xb7\x77\x32\xa9\xe5\x0d\x97\x9f\xf2\xfa\xf8\xba\x07\x3a\xa9\x86\xe6\x6c\x76\x16\x29\x7c\xcc\x76\xfa\xa1\xee\x8f\xbd\x33\x4e\x37\xd9\x94\xa1\x5b\x25\x8f\xc3\xee\xc5\x88\xee\xe1\xd3\x01\xc6\xd8\xd6\x61\x9a\xcc\xaa\x60\x4e\xcf\xcc\x30\x0b\x43\x96\x77\x9a\x86\xf3\xfd\x1a\x76\x64\x5c\x2d\xd2\xb7\xf6\x95\x6b\x56\xf1\xe9\xce\x97\x3b\xf5\x96\x80\x92\xed\x12\x0e\xee\xdd\x7d\x86\xb3\x62\x1b\xdd\xf9\x54\xa3\xec\xb7\xe7\x34\xfc\x97\xe7\x17\x02\x74\x73\x0b\x96\x87\xf4\x35\x04\x46\xc5\x2b\x75\xf3\xd0\x14\x85\x0e\x92\x42\x04\x22\x15\xb8\xa5\x79\x11\x12\x11\x50\xb5\x1e\x6d\x2c\x67\x12\xab\x5f\xf6\x93\xc8\x0b\x7c\x4c\x25\x66\x39\xa4\x1d\xb9\x96\x43\xcb\x2e\xbe\x1e\x66\x02\x98\x6f\x42\xd8\xa6\x1c\xb6\xe1\x20\xda\x51\xf5\x4d\xa4\xea\x30\xf8\x0d\x42\xe9\x6c\xb9\xf3\x11\xd1\xf7\xdd\x90\x85\x97\x89\xf0\x69\x69\xcc\x18\x6c\x1c\x33\xba\xbe\xc3\x29\x4c\x31\xbe\x8e\x93\x98\x93\x27\xec\xf8\x41\x89\xc8\x97\x58\x16\xee\xb9\x2d\x6f\x1d\x99\x35\x06\x7f\x64\x56\xc0\xe8\x68\x82\x2d\x1e\xc3\xbc\x92\xbe\x95\xe7\x4f\xb6\xd6\x9d\xfb\x21\xff\x52\x10\x31\x75\xf6\x00\xe6\x5b\x7e\x03\x43\x5f\xd3\xa7\x3e\x10\x2b\x57\x9a\x8d\x39\x4e\x87\x7c\x26\x43\xf3\x59\x4b\xdd\x5b\x8e\x14\x88\x5f\xa2\x82\xe8\xe5\xa6\xb2\x51\xb5\x5c\xe0\x52\xba\x6a\xb5\xdb\xae\x23\xaa\x1b\x99\x6e\xed\xad\xec\x86\xad\xe1\x9a\x8c\xfc\xb1\xe0\x0e\x0a\x71\x11\xa9\x7e\x1a\x9a\x4e\x4c\x67\x50\xf0\x24\xf4\xdb\x2a\x15\x33\xbd\x5c\xe5\x7f\x7f\xcc\x18\xb2\xaa\x94\x8a\x3b\x96\x10\x46\x5c\xf1\x86\x26\x04\x7d\x00\xf2\x57\x7b\x0b\xb9\xf4\xdf\xab\x14\x32\x4b\x9d\x73\x23\x7b\xa0\x4f\xbd\xe2\x7a\x5a\xe7\x9f\x21\x7a\x52\xf7\x6c\x27\xb3\x19\xdc\x47\xa2\x8d\xf2\x80\x74\x01\xbe\x14\xab\xb5\x4d\x4f\x74\x7f\x7d\x87\xd7\x67\xf8\xec\x9b\xd7\xf4\x03\x8c\x6c\xc8\xaa\xbf\x7f\x34\xd2\xff\xbb\xf1\x66\x39\x30\x67\x6b\x58\x40\xc2\x16\xce\xe1\x2d\x94\x3a\x93\xc7\x40\x30\xb6\xc5\x57\xf1\x04\x58\xa2\x65\xbc\x81\x6a\x62\x24\x30\xc3\xd0\x23\xc1\x18\x52\xbd\x04\xe6\xf7\x0f\x75\x9f\x4f\x3e\x53\x6a\x08\xb8\xbd\x42\xd2\x4c\x5e\xe7\xf2\xe7\xae\xba\x60\x53\xfc\x92\x40\x9a\x71\xe0\x91\xd2\x9d\x5f\xc9\xfe\x2b\xff\x60\x36\x36\x32\xbd\x78\x99\xb9\xf0\x64\xa4\x24\x95\xe5\x79\x8d\x3d\x3a\xce\x70\xcd\xd7\xb1\xcf\x78\xb6\xf9\x50\x9b\x7d\x6d\xab\xba\x73\xbe\xb1\xe7\xfb\x81\x16\x5d\x90\xee\x0a\xa0\xcb\x0c\x34\x8d\xdd\xb9\x92\xb3\x48\x64\xfd\x6c\x5c\xc5\x2f\xdd\x5a\x70\x5f\xa1\xb7\xd7\xcd\xac\x76\x5f\x58\x3b\x99\xfb\x82\x31\x84\xdc\x3b\x2d\x79\x0b\xc5\x77\x9e\x4b\x5c\xac\x8e\x07\x8b\x83\x6c\x2a\x12\xf6\x49\x19\xa2\x4c\x88\x35\x5c\x4f\x62\xe6\x42\x93\x9f\x5f\xe5\xb8\x71\xb9\x59\x6d\xf9\x26\x63\x8a\xc3\x5e\x1c\xfd\xb9\xcb\x6a\x39\xfd\x81\xd5\x43\x61\x61\xc5\xed\x59\x36\xf6\xe5\x5d\xd5\x19\x1e\x88\xd0\x19\xb4\x78\xdf\x4c\x4e\xeb\xbe\x61\xac\x61\x7a\x4f\xed\xe4\x2c\x29\x21\xad\xc4\x7d\x31\x18\xc3\x65\x4e\x0c\x48\x78\x7c\x05\x64\x1f\x05\xd7\x6a\x14\xea\x9c\x43\x28\x3c\x53\x18\x75\x84\x0d\x58\x25\xa6\x0f\xd6\x9d\xc9\x2a\x95\x7a\xf7\xb4\xd6\xfa\x6f\x43\x9f\xc7\xc2\xa1\x3f\x62\x16\xa1\x91\x01\x71\xcd\xa4\xf4\x98\x4d\x72\x43\x02\xad\x98\x29\x23\x05\xa8\xd6\x9a\x7c\x2f\x3c\x1b\xc6\xcf\x1e\x22\xcf\xc1\x87\xf3\x4e\xa6\x38\xa7\x1f\x21\xfe\x4d\x0b\x72\x71\x36\xba\xf9\x91\x58\x52\xab\xf0\x0c\x7a\x7d\xb5\x7c\x74\x3e\x25\x25\x63\x5b\xb7\x6c\x5a\x3f\xe5\x3f\x37\xac\x7b\xb4\x0d\xe6\xba\x6c\xd3\xb5\x1f\xa7\xef\xb3\x25\x82\x7b\xd7\x1c\xd8\x6b\x8e\xbc\x32\xa9\x5c\x8d\xa9\xfb\x7e\xa9\xcc\x70\x9b\x6b\xfc\xbc\x38\x9f\x7b\xe6\x4b\x49\xb7\x6e\x67\x4e\x83\x84\x08\x15\x90\xd8\xc6\x6f\x9c\x17\x3c\x6a\x39\x86\xe7\xee\xc8\x35\x44\x4b\x70\x33\xde\x3f\x64\xa4\x51\xfb\x58\xf5\x63\x7b\x1a\xea\x31\xec\x64\x26\x27\xd4\x55\x93\x35\x0e\x03\x1e\xdf\xac\xcf\x7f\x3c\x66\xed\xe1\x7d\xe1\x8e\x0c\xb4\x09\xa5\x0a\xfc\x3d\xb7\xf6\xc5\xd3\x7e\x9c\x2d\xc2\x47\xb7\x63\xea\x37\x1f\x8d\x66\x15\xb1\x41\xf5\xae\x5b\xd4\x1d\xf6\x09\xdc\x92\xbf\xa0\xd6\x33\x2a\xe6\x76\x40\x09\x83\x79\xf2\x14\x62\xa2\x71\xc0\x4d\x7b\x53\x56\x89\x6b\xf6\xd1\x22\x59\xf9\x86\xc4\xee\x0e\x1b\x79\xaa\x50\x44\xbb\xee\x20\x9c\x29\x57\x6c\x88\xbd\x6a\xbb\x26\xe5\x7b\x49\x95\x09\xd1\xff\x66\xf1\x54\x32\x14\x49\xbe\xea\xc8\x7e\x1f\xbd\xde\xf8\xd3\xed\x96\x37\x67\x78\x0c\xa5\xaf\x52\x09\xea\x16\x40\x9a\x9e\x79\x6a\x9e\x81\x43\xf4\xc3\x84\x2f\xa5\xca\x3c\x32\x9a\xbf\xf8\xab\x28\x7c\xed\x31\x0d\xa5\xe4\x68\xe6\x07\x27\x32\xb3\x4e\x0e\x26\xe1\x37\x84\x83\x33\x67\x63\x00\x8d\xe4\xed\x33\x60\xa9\x21\x3d\xe5\x57\xda\xcf\x58\xc5\x09\x13\x24\x39\x49\x24\xc0\x9b\x42\x9e\x44\xc6\x9b\x4a\xe2\x2a\x06\x38\xbe\xa3\x43\x4d\x42\xe6\x2c\x82\x31\xae\x2c\x91\x2c\xee\xae\x13\x92\xba\x5e\x1c\xdf\xef\x7a\x8c\x18\x90\x76\x33\xb9\x98\x05\x4f\x11\x69\x03\x14\x92\xbc\x32\x64\x7c\xd5\x6e\xad\xae\x5d\x57\x1c\xa1\xa4\x95\xf5\x9f\x01\xd1\xbf\x30\x56\x8a\xee\xff\x06\x3c\x85\x5b\x41\xe2\xe3\x3f\x7d\x96\x17\x9f\xf8\x1e\xf1\x1a\x72\xbb\x5b\x4f\xd8\x0f\x3d\xc9\x15\x45\xea\x1b\x72\x3b\x69\x4f\x9e\x81\x56\x2e\x6d\x10\xd8\x5f\xc8\xbc\x8b\x2f\xc4\xcb\x8c\x4e\xd8\x61\x1b\xb4\x90\xa5\xea\x3a\xae\x85\x6c\x68\x24\x34\xeb\x90\x31\x69\xbc\x1a\xf7\xe6\xef\xb0\xec\x1c\x0a\x0e\x76\x07\xe8\xa0\x53\x15\x16\xd2\x7f\xf0\x36\x04\xd8\x7e\x5c\xad\x0a\xc6\x6f\xf5\x8a\xba\xaf\xdd\xac\xae\x49\x5d\xfc\x99\xba\xf8\x40\xfe\x53\xa2\x81\x6f\x4f\xf9\xb0\xca\x7d\x39\x66\xbf\x14\xb6\xc8\xaf\x67\x75\x09\xe9\xf6\x74\x33\x0b\x5b\xba\xb4\x00\x30\x8a\x08\x65\xc8\x3b\xc8\x34\x22\x6a\xfe\x59\xa6\x7a\xa1\x80\x13\x50\xb1\x7c\x1a\xb0\x07\x29\x2f\xbe\xc2\x41\xd0\x16\x3c\x07\x27\x85\xcb\x46\xed\x91\x6f\xaa\xef\x9d\xee\x92\x50\x43\x1c\x97\xe9\xe7\x78\x29\xef\x74\xc3\x34\x86\xd8\xb6\xa3\x6d\x8c\x1c\x47\x09\x44\x6e\xc2\x44\x5d\x6e\xb6\xd3\xf8\x16\xca\x50\xca\x86\xc6\xd9\x62\xb6\x50\xec\x4b\x33\x07\x5d\x77\x42\x18\xa5\x8b\x53\xed\xf0\x7f\x62\xa4\x28\x37\x87\x36\xbd\x0d\xa9\x25\xcb\xcc\xb3\x05\xc3\x2c\xc7\x6c\xc4\xfe\x69\x5e\xaf\x1d\x69\xe0\xdf\xa0\x96\x90\x09\x5a\xf4\x9b\x87\x76\x1c\xec\x16\xe9\x94\xe0\xf4\x5d\x6c\x86\xea\xc4\x88\x17\x56\x5f\xf9\x0c\x66\x6e\x86\x8b\xb1\xd6\x43\x9b\x2d\x45\xae\x1d\x51\x41\xd2\xbf\x93\xc6\xda\x0a\x6d\x66\x68\x7c\xf5\x19\xce\x06\xae\xf3\x47\x7e\x4c\x9c\x27\xca\x76\x03\x5b\xb4\x44\x0e\x87\x9b\xae\x6c\x6b\x80\xd7\xfc\xcd\x13\x1f\xbd\x8c\xc3\xc7\xaa\xdc\xf6\x75\x61\x23\x67\x65\x77\x58\xb7\x4a\xd9\xfc\x9e\x29\x9e\x53\x50\x7d\xcc\xe0\x5a\x1a\xe8\x68\x21\x47\xcd\x6a\x23\x46\xaa\xa7\x38\x99\x9b\x3e\xe9\x6b\xd6\xf4\xa3\x32\x2c\x7c\x31\x9d\x67\xff\x85\x31\xbd\xc1\xd1\xef\x39\x38\x9d\xe6\x9d\xe5\x7b\xbf\xbb\x56\x7d\x66\x0d\xe0\x8e\xdb\xfc\x87\x70\xd0\xd3\x86\x09\x14\x6e\x7b\xbf\xc0\x64\x3c\x35\x0e\xd6\xc1\x73\x38\x9a\x6d\x73\x11\x91\x6d\xdb\xc2\x4f\xc1\xe5\x94\xa5\x12\x2c\x1e\x3c\x18\x69\xf0\x58\xbb\x52\x16\xf6\x0a\xf5\xc6\xb9\x69\x85\x45\xd6\x30\xfe\x2c\xb6\x56\x02\xfb\x12\x3c\xe2\x71\x6b\xb9\xb8\xa0\xda\xee\x0f\x96\x33\x12\x42\xa6\xde\x2a\x22\x11\xa4\x95\x84\x71\xd7\xaf\x90\x6f\xdc\x3a\xaa\xd6\x41\x7b\x8e\x85\x73\xb2\x26\x49\x06\xdc\x75\xb4\x5f\x7c\xd9\x51\xa1\x36\x05\xd4\x8e\x05\xf3\x2f\x8a\x7d\x54\x9f\xca\x40\x6c\xa6\xee\xc5\x38\xf0\x12\x90\xe4\xe6\xb7\xc0\x10\x9d\xd0\x76\xb4\x2a\x13\xcb\x10\x14\x06\x65\x16\xa5\xeb\x3b\x0d\x6b\x6d\x0d\x55\x80\x3b\x76\xbe\x86\x12\xb7\x48\x66\xb9\x78\x5d\x3a\x9e\x86\x55\xfa\x8f\x02\x81\x6e\xaa\xd2\x0f\x36\x54\x06\x67\xcd\x27\xa3\x59\x98\x60\xe3\x2e\xca\xc4\x98\xd7\x0d\x68\x32\x45\x5c\x9d\xee\x4b\x22\xc5\x81\xdb\x24\x4f\x4d\x65\xd9\xa6\x52\x51\x28\x7b\x33\xc4\x77\x5e\xc3\x0a\x5d\x22\x9b\xe2\x6d\xfa\x8e\x9a\x9b\x65\x67\xd7\x6a\x92\x4a\x38\x23\xe0\x6c\x83\x0d\x14\x7c\x20\x66\x61\xe5\x22\x68\x9d\xb9\xf5\x9a\x4b\xf9\x60\xb8\xef\x0c\x09\x05\x33\xb4\x1c\x6f\xa2\x94\xb5\xc1\x34\xb2\xd3\x60\x28\x68\x02\x0a\xba\x63\xec\x0c\xe8\x47\x14\xd1\x17\x86\xec\xc6\xda\xa9\x13\x6b\x0a\x1f\x27\x3e\xcc\x6d\x8c\xd6\xec\x33\x9c\xb1\xf6\x36\xc9\x2d\xe6\x53\x7c\x3d\x6b\x02\xee\xb2\x89\x33\x5e\x9b\xfa\x36\x8a\xe1\xee\x36\x92\xf4\x58\xd7\x2a\x33\xc9\xc5\xcc\xfa\x95\xa4\x96\xf0\xbd\xf8\x0a\x01\xa8\xcf\xfa\x00\x7c\x56\x00\x85\x64\x0c\xbf\xaa\xf2\x4e\xb3\xb6\x74\xa3\x98\x82\x86\xdf\x64\x75\x51\xcf\x97\xa5\x95\x01\xfc\x24\x3d\xd8\x5b\x2e\xf4\xe3\x4d\xb0\x2b\x47\xad\x26\xea\x91\x95\x84\x0d\x79\x18\xcb\x52\x2e\x43\xeb\x42\xd6\xf9\x13\xc4\xf2\x30\xd0\xa2\x69\x59\xf4\x8a\xbb\xaf\xa2\x52\x32\x72\xef\x19\x31\x2e\x10\xfa\x32\x50\x2d\x01\x8a\x1e\xa2\x10\x43\x02\xbf\xe3\x1a\x04\x52\x6d\x36\x8e\x35\x78\xee\x96\x6d\x04\x8b\xfd\xcf\x96\x26\xc0\xc5\xa0\x75\xc2\xce\xc5\x6b\xe6\x71\xe0\xbd\xe2\x22\x8b\xb5\x35\x7c\xbb\x24\x6f\x03\x83\xd1\xe0\x65\xf6\x1e\xff\x8b\xc5\x34\x94\x57\x8a\xa8\x55\x3e\x97\x73\x8b\xe7\x8a\xcc\xa9\x04\xc3\x33\x63\xca\xb0\x03\xb0\xb1\x0f\x2b\x93\xa3\xb1\xdf\xee\x58\xfe\x56\x5d\x0a\xfa\xc0\x11\xd0\x18\x4a\xee\xde\xb9\x42\xd7\xf4\xad\x3b\x33\xab\x14\x8b\xfa\xaa\x0a\x96\x7d\x2a\xfc\x25\xbc\xd8\x6a\x55\x49\xf3\x21\x9b\xdf\xda\x49\x92\x37\xc8\x4b\x01\xdf\xf0\x38\x6a\x6e\xef\x76\xb3\xbd\xf5\x79\xdc\x20\x78\xb5\xf3\x5d\xba\xfe\x44\xfc\x1c\x8f\x7d\x3a\x2a\xe0\xf9\xd6\x5f\xb3\x43\xff\x7e\xf0\xf5\xe9\xa7\xf7\x94\x59\x03\xdd\xcc\xde\x51\xb6\x22\x3e\x94\xc6\x56\xe5\xc7\x56\xb3\xe9\x06\x63\x7a\xac\x55\xb6\x6f\x03\xbe\xfc\xb0\x5c\x81\x15\xee\xee\x6f\x24\x86\x40\x6f\xc7\x70\x57\x9c\x73\xb3\x6f\x26\x2c\x89\x6a\x99\x90\x45\x2e\x46\xc1\x98\x33\xb0\x6b\xee\x68\x55\xf9\x20\xc5\x73\xe7\x6b\x45\x5d\xec\xdb\xf8\x87\x3a\xd9\x2e\xe3\x78\xd5\xa1\xb5\xb5\xad\x12\x26\xf4\x21\x52\x12\x69\x2b\xc6\x2e\x5d\x40\x4f\xef\x92\xea\xe2\x47\xf6\x70\x4d\x62\x2b\x4c\x67\x87\xc2\x6f\x1b\xdf\x57\xc3\x40\x58\x20\x92\x13\xb0\x12\x3a\xf7\x13\x80\x78\x4e\x38\x3c\xb2\x5e\x47\xc1\x93\x95\x99\xee\xc4\x1a\xf3\x2b\xd0\xd3\x2b\x9d\x80\x03\xdc\x5f\x5d\xb5\x2f\xc1\xd2\xd6\xcd\xb8\x7c\x74\xd4\xb8\xcd\xf8\xf3\xd0\x5a\x3e\x14\x6d\x65\x3d\xd3\x0a\xb3\x73\x95\x4e\x68\xb1\x4e\x6e\x44\xdc\x7d\x6d\x71\x39\x84\xd1\xa1\xda\xa0\x75\xab\xda\x65\xa0\x22\x41\x02\x75\x5b\x98\x5f\x9a\xbb\x9e\xe4\x09\x09\xe5\x10\x6a\xad\x50\xb1\xcf\xf3\x4d\x2b\x54\x1e\x8b\x8c\x19\x52\x75\x8e\x0f\x1b\x7b\x9f\x79\x41\x00\xf6\x99\x2c\xa2\xa9\xbe\x9b\x33\x4e\x99\xc4\xbf\xc3\x9d\x05\x14\xa9\x07\x6e\x2c\xb1\xf2\xac\x2b\x18\x58\x6b\x15\xf7\xc2\x8e\xf1\x9c\x98\x66\x83\xeb\x52\xdc\x32\x8f\x45\x71\xc5\x26\xba\x11\x69\x95\xea\x65\x95\xed\x8d\xcc\x00\x24\xe0\x66\xbc\xde\xd2\x71\xb2\xe3\x04\x94\x5d\x11\x41\x9c\x05\x8a\x3b\x6d\xf9\x7f\xf8\x66\xae\x1e\x66\x4b\x47\x0f\x94\x68\x08\x71\x23\x61\xa0\x60\xfa\xf9\x8d\x6f\x80\x27\xc5\x43\x2b\x16\x6c\x1f\x05\x4a\xfd\x05\x59\xe0\x07\x65\xe5\x11\xb1\x92\xd6\x68\x6a\x29\x40\x5d\xa7\x15\x8e\xf1\x3c\x65\x91\x4c\x6c\x2b\x24\xa4\x3f\xee\x3d\xec\xbf\x97\xc7\x95\x4b\x36\x69\x1c\x14\x66\x74\xd1\x12\xdf\x18\x46\xba\xc0\x4b\x30\x68\x3c\xdb\x5f\xca\x6c\x81\x97\x57\x00\x4a\xef\xfd\xac\x03\x45\xcb\x65\xe7\xe0\xf6\xdb\x75\xea\xd4\xff\x15\xa0\xf5\x87\x95\xea\x96\xcf\xa6\xce\xdb\xb1\xfa\x8d\xed\x6a\xb7\x39\xad\x39\x12\x36\xf2\x95\xa1\xd0\xae\x71\xf0\xc2\x4d\xaf\xd3\xcc\x25\xfd\xad\x89\x09\xe8\xb0\x40\x63\x96\xbc\x88\x95\xd2\x45\x2a\xa2\x35\xdd\xb7\x26\x87\xf4\xfe\x50\xb9\xbd\x64\xbe\xde\xde\xc7\x69\x93\xce\x1c\x9d\xaf\x27\xcb\x5b\x60\x95\x5e\x50\x67\xa0\x38\xfa\x06\x67\x2e\xd1\xc2\x97\x1d\x11\x74\xf6\x29\xd5\x49\xda\x91\x64\xc4\x00\x66\x17\x88\x72\x36\xff\x0b\x35\xce\xd1\x7f\xd6\x00\x5b\x46\xc8\x5c\x09\xbe\x8e\xfc\x87\x96\x8a\x95\xcd\xf1\x06\xcd\x95\x48\x35\xdb\x9e\xc8\xdf\x70\xb8\x05\xc3\xfd\x12\xd3\x23\xa9\x8a\xc8\xf9\x18\x48\x52\xab\x59\xa9\x00\x8a\xbe\x50\x66\xdd\x49\x13\x19\xc7\x3b\x2d\xda\x30\x16\x3e\x1d\x14\x74\x30\xac\x0e\x58\x24\x51\x68\x61\x0a\x56\xaa\x1c\x2f\x54\xb4\x89\xf3\xb6\xd5\xeb\x06\x9e\xb1\xe1\x40\xce\xb7\x24\x69\x9f\xf9\x25\xb3\xcd\x1e\xeb\xe6\x23\x44\xcb\xc4\xbb\x46\xf2\x7a\xe9\xcf\xb7\x8e\x4e\x06\x28\x13\x90\xc0\xf4\x3f\x74\xca\xba\xed\x82\x1a\xab\x6b\x85\xb2\x63\xcd\x8c\xa9\x66\xbd\x53\x16\xde\x91\xad\xa5\x43\xf5\xc8\x97\x86\x36\x89\x63\x15\x26\x9d\x9a\x3e\x6f\x18\xf7\x3b\x37\xd5\x6f\x25\x4b\xd6\xec\xce\x38\xd6\xa4\x15\x88\x34\x55\x80\xe6\xe8\xb2\x46\x3c\x02\xa3\xfa\xc7\x9f\xac\x7d\x22\x34\xd8\x0e\x35\xf2\x61\xdc\xec\x71\xca\x45\xa2\x32\xa0\xef\xe9\xc9\x1b\x14\xb4\x22\x96\x20\x7f\x9c\x1c\xfa\x42\x3c\x69\x9e\x1e\x44\x7b\x65\x79\xa1\xb4\x37\x7d\x3e\x3f\x29\x24\x43\x8f\x5d\x7f\x6a\xed\xa1\x5b\xd8\xdc\xdd\xa8\x91\xc5\x9e\x29\x25\xa4\xc9\xe0\x65\x0f\x85\xcb\x2b\xc1\x0d\x86\x0a\x57\x21\x9d\x0e\x4a\x1f\x25\x22\x16\xa0\x0c\xe3\x35\x44\x63\xb8\x2c\xff\xf6\x6b\x93\x57\xc9\x35\xe0\xe8\x38\xd4\xb1\x1c\xa8\x5f\x73\x5f\xaf\x38\xf1\x01\x45\xbc\xb7\xc5\x8a\xe7\x11\x67\xcf\x5c\x05\x5e\xc6\x2e\xbd\x47\xe5\x8c\x99\x82\x69\x47\x16\xb5\x3b\x00\x29\x32\x97\xcb\x04\x75\xed\x7e\x3c\xc9\x7a\x2f\x37\x3f\xb7\x5d\xb9\xe2\xc5\xc3\x75\xcc\xf7\xc4\x06\xab\x19\x42\x77\x16\x17\x8c\x32\x6b\x8d\x0c\x74\x5b\xde\x0e\x76\x6c\xc1\x13\xb0\xa6\x2a\xdf\xeb\x20\xa7\xf9\x66\x14\xe5\xcc\xd0\x66\x2f\x39\x51\x31\xf4\x9f\x65\x21\xa5\x49\x36\x6a\x79\x67\xcc\x37\xcc\x5b\x82\x1c\x67\xe3\x40\x37\x05\xc8\x18\x38\x95\x80\x38\xf3\xaa\x7f\x47\xa1\x32\x73\x5b\x06\x56\xc5\xd5\x2d\x9b\x85\x93\x37\x51\xc6\xa7\x41\xee\x92\x67\x51\xd1\x46\x42\x41\xb3\x4b\x27\xfe\x71\x44\xd1\x48\x56\x9b\x97\x56\x4a\xb4\xd4\xef\x01\x3c\x15\x3d\xe8\x34\xb8\xb8\xe0\x6a\x1f\xd9\xf9\xad\x0a\x3c\x91\x4e\x81\x4c\xa6\xee\x50\xf8\xf1\x8b\xfb\x4c\x6c\xa4\x00\x9c\x02\xe7\x6e\xde\x8f\xf9\xfd\xdf\x06\xc2\x6f\xd0\x78\xeb\x6b\xc6\xd5\x17\x2a\x99\x3a\xcc\x80\x21\x5c\xe9\x63\x3a\x7b\xf5\x16\x61\xaa\x5b\x48\x85\x35\x3d\x3d\x5b\xab\x97\x1f\x3d\x33\x57\x4f\xf1\x11\xea\x0e\xe9\x5c\x9d\xef\x44\x4f\x2c\x11\x5c\x91\x6f\x5c\x53\x89\x54\xb8\xd0\x55\x6c\xac\x2e\x3e\xc3\xe2\x40\x4e\xfe\xde\xa8\x92\x1b\x6b\x80\xa8\x3e\x87\xcb\x58\x47\x33\x91\x4f\x54\x98\x46\x70\xaa\xdc\xf6\x97\xa7\x7c\x1b\x11\x87\x91\x30\x24\xf6\x94\x18\x4b\x56\xf3\xc9\xca\x0a\xbf\x1e\x72\x72\x77\x67\x18\xb9\x96\x52\xee\x18\xff\x39\xc5\x65\xc6\x85\x6f\xf7\x49\x15\xff\x79\xa7\x27\xc8\xa2\x28\x7d\x6d\x97\x54\x42\xd1\x01\x85\xbe\xa1\x0f\x9a\x91\x53\x7f\x05\xa7\x7e\xeb\x94\x11\xdc\x1b\x5b\x5a\x93\x2d\x54\x64\xca\x84\xd2\xbd\xc9\x0d\x05\xe7\xb1\x6b\x32\x43\xd4\x6a\xad\x7a\x79\xa1\xac\x6c\x11\x8a\xb1\xa6\x34\x1c\x5a\x47\x23\xfc\x1c\x9f\x90\x8b\xdd\x41\x36\xdd\x21\x11\x84\x34\x7f\x19\xa8\x18\xe8\x32\x88\xa7\x9a\xcf\xe7\xb0\xa6\x41\x86\x48\xa1\x71\xb6\x84\x49\x36\x8f\xce\x53\xb6\x17\xdf\xbb\x82\x98\xe9\xf2\xf1\x65\xa9\x46\x86\xf0\x00\x3d\x9f\xfb\xf8\xf9\x52\xc7\xb4\x42\x9e\x6a\xa0\x5b\x35\x89\xea\x19\xc4\x85\x55\x31\x94\x2a\x78\x3c\x91\xf8\x64\x64\x94\x42\xa8\x75\x39\x52\x62\xab\xe3\x6c\x53\xd7\x30\x54\x5d\x11\xac\x51\xbb\x4b\x9d\x58\x06\x81\xd5\xa0\x6b\x9c\x23\x50\x91\x70\x22\x38\xfd\xa9\x90\x0b\x29\xbc\x29\xa2\xd1\x89\x00\x87\xb3\x90\xa2\xfc\x6c\xc5\x9b\x50\x01\xdb\x99\xf7\x81\xe2\x78\x72\x4a\xc3\x87\x8f\xb7\x62\xe2\x3e\xea\x3e\x04\x41\xd9\x4d\xd5\x81\x1d\xb5\xd3\xe0\x42\xe1\x9e\xe4\xd8\xff\xe7\x7a\x5f\x0d\xb6\x25\x37\x01\x94\x22\xdb\x36\x4f\x9b\x15\x80\xbd\x75\xd3\x73\xb4\xfb\x14\xbf\xae\xcd\x52\xfb\xb2\xfe\xb0\x29\x40\x75\x66\xe7\xbe\x2f\xb5\x1c\xc5\x60\xfb\xdf\x35\xec\x59\xfe\x02\x3f\xab\xd5\x08\xc0\xd3\x75\x0c\xbf\x4f\xdf\x18\x72\x57\xd3\x7b\xba\x4c\xc8\x7b\x53\xfc\x5b\x61\x46\x2c\xe7\x16\xc7\x27\x70\x85\xca\x6c\x8e\x9d\x3e\x6c\x2d\x10\x59\xdf\xc1\x00\x5a\x38\x7f\x08\xcb\x88\x67\xc0\xef\x12\xc6\x16\xc2\x1c\xa5\xb0\xdc\xc7\x3a\x70\x23\xa4\x47\x24\x2d\x79\x90\x1c\x4c\x86\x3b\x8b\x06\xc1\x39\xc4\x0c\x54\xf4\x28\x84\x2d\xf5\x5c\x76\x2f\x2a\x8c\x4e\x75\x24\x09\x9c\x92\xa6\x25\x0c\x73\x57\x00\x29\xeb\x03\xd2\x10\x6b\xbb\x4b\x80\x06\x80\xe9\x94\x54\xb4\xa2\xb2\x6f\x4d\xfe\x99\x59\x3e\x8e\xf3\x83\x23\x77\xe7\xd0\xf0\x0a\xff\x1a\x39\x7d\x5e\x4f\xb2\x35\x1e\x47\xc0\x59\x9d\x0b\xeb\x84\xc0\xba\xd3\x34\xc7\x8a\xe8\x97\x74\x67\x03\x63\x0e\xce\xc6\x9f\x65\x0c\x98\x09\xa2\xd8\xa5\x53\x96\x16\x76\x5c\x3b\x3b\xa4\xb0\xb0\x13\xf4\xae\x7e\xb2\x17\x1f\x89\x54\x9a\xfd\x14\x40\xca\xd3\x8b\x5c\xe6\x12\xc1\x59\xa3\x76\xc8\x94\x4c\xe9\xe8\xd5\x25\x02\x52\x66\x96\xa8\x82\x75\xda\x01\x5f\xf0\x05\x29\x01\xf6\x21\x7d\xc1\x12\xc3\xd0\x94\x3e\xa0\x1a\x39\x91\xe6\xc1\x3f\x0b\xad\xbb\x63\x8d\x8f\xc9\x08\x78\xdb\x52\x47\x83\x7e\xbc\x15\xd9\xf5\x00\x90\x88\x1d\x1e\xd1\x47\xfd\x45\x18\x93\xf6\x97\xa4\xad\x2a\xb8\x59\xe7\x80\x25\xd3\xf8\x8a\x72\x3a\xd5\x25\x0c\x2c\xff\xb8\x6e\x52\x2a\xdc\xe8\x8e\x7c\x8a\xf2\x77\x3e\xb9\xbb\x0e\x01\xe1\xb6\xff\xda\xd5\xde\x94\x06\x37\x45\x33\x0c\x4d\x50\x36\xeb\x6d\xb5\x63\x6e\xf4\x81\xed\xef\xc2\x10\x90\xe6\xe0\xa4\x05\x5a\xf8\xfa\x49\xc6\xc6\x66\x38\xac\xcc\xb1\xf7\x15\x94\xe5\xb1\x8d\xe9\x8a\xe1\x71\xad\x2f\xed\x2f\x8d\x91\x49\xe6\xa0\x22\x21\xff\x47\x9f\x06\x61\x46\xff\x84\x1c\xb2\x11\xad\x50\xae\x35\xe0\x9c\x39\xfe\x97\x71\x29\x8f\xdb\xb3\xf2\xbb\xa0\x5e\xaf\xcf\x25\x8d\x65\xe9\xc3\x7c\x27\x8f\xfe\x65\x87\xb3\xe1\x19\xef\xe7\x26\xef\xce\xf6\xd3\xe5\xd9\x03\x8b\xa9\x62\xbb\x5e\x2a\x73\x13\xf4\x3e\xd4\x2e\xa0\xf4\xb1\xcb\x01\xc0\xd9\x1a\xd8\xef\x0b\xde\xad\x5e\x2c\x54\x7d\x70\x8c\xf0\x94\x0c\x26\x4a\x5c\x82\x7e\x9a\xba\x50\xd9\x86\x41\x59\xc1\xf6\x95\x28\xa8\x76\x7e\x46\x7c\x63\xad\x3d\xad\x7a\xc1\x10\xbb\x8c\xef\x26\x31\x94\x36\xfb\x5d\xa0\x13\x64\xd4\x48\xb3\xee\xf0\xab\x40\xd9\xbd\xc0\xae\x4e\x04\xb9\x92\xa3\xda\xad\x43\xe5\x35\xd5\x51\xf4\x46\x77\x74\x43\x8d\x58\x48\x92\xc4\x2b\x8f\x6b\x7b\x07\xd4\x0e\xa4\x6a\x75\xfe\xbc\xf9\x31\xae\x62\xf9\xa7\x76\x63\x65\x3a\x9a\xe9\x3c\xa2\xbb\x5e\x16\x42\x5e\x2e\x8c\x49\xbc\xd7\xfb\x2a\xd9\x35\x16\x70\x0f\xae\xb7\x28\x1c\x72\xfb\x5c\xd8\x16\x64\x90\x6d\x1d\xcb\xaa\x94\x2a\x0d\x71\x31\x48\xd4\x4a\xdd\x86\x3a\x2c\x23\x50\x30\x74\xe9\x4a\x07\xd2\x8a\xa5\x90\x0b\x99\xe6\xe7\xba\xeb\x2c\xae\x28\x58\xe0\x2f\x30\xa3\x59\x89\x6d\xc7\x6a\x2a\x52\xac\xd0\x61\x6b\x63\x1c\x37\x52\xb3\xc6\xb6\x6b\x16\x0a\xe8\xaa\x36\x19\x31\x67\x64\x99\x68\x42\xd5\x0b\x0a\xa2\x45\x1b\xc9\xad\xf9\x26\x56\xdb\x68\xb7\x22\x9b\xbc\xee\x79\x01\x7f\x5f\x28\x12\x82\x4f\x49\x44\x53\x96\x75\x81\x3c\x54\x38\x59\x1e\x6b\x42\x1e\xd6\xfe\x9a\xd1\xb6\x32\xec\xa6\x42\x1d\x8b\x1c\xde\x30\x65\xb7\xa8\x0a\x9b\x3d\x8d\x29\x39\x12\x36\x6c\x58\xfe\xa4\x55\xe2\x10\x3a\x23\x14\xf5\xb6\xf6\x86\xc6\x40\x65\xcd\xab\x20\x1f\xf9\x9d\x4a\x23\xa9\xe6\x40\x26\xae\xbe\xe6\xd9\x58\x53\x64\x2b\xaa\xb5\xd6\x26\x1b\x9c\x6e\xcd\x13\x03\x5f\x26\x80\xfb\x5f\xff\x68\x81\x01\x7a\x63\xdf\x12\x77\x5b\x77\x8d\x39\xd5\x1e\xea\x52\x88\x8a\x89\x4d\xfa\x14\xc8\xe7\x85\x1e\x88\xee\x35\x27\xfc\x62\xed\x0d\xe9\xe3\x69\x9d\xf7\xec\x62\x44\x1a\xd0\x3a\xf2\xd3\x90\x0b\x65\x1b\x2a\xb7\x75\xa9\x5f\x25\x5f\x0e\xea\xb8\x6e\x73\x6d\xe3\x81\xe7\x3d\x03\x81\x6b\x25\x0a\xc5\x61\x3a\xf8\x90\xeb\xd0\x8a\x33\xbe\x5a\xa1\x32\xcc\x4f\x98\x75\x5c\x56\xba\xd1\xf3\xcc\x52\x3b\x2a\xcf\x24\xa7\x82\x90\xcc\x84\x39\xac\xbc\xfc\xde\x12\x93\x3c\x70\x36\xfc\xed\xb6\x05\xcb\xf8\x96\x86\x92\xcf\xbb\xcc\xbf\x5b\xac\xa5\xb9\x64\xf4\xe8\xcd\xa1\x1c\xf6\xee\x12\x0f\x5c\x5f\xef\xce\x08\x6f\xf6\xeb\x05\xce\x15\xfb\x18\x70\x6d\x51\x53\x3c\x01\x4d\x9f\x49\x79\x21\xe5\x68\x3a\xc2\x20\xab\xa7\x54\xe7\xf0\x2e\x8e\xe4\x5b\xf3\x64\xef\x29\x03\x95\xc5\xc3\x54\xb5\xb6\xb1\x7a\x92\x53\xeb\x31\x83\xb0\x6e\xd3\x81\x04\xb0\xad\x45\x3f\x1c\x2a\x42\x92\x14\x67\x05\x4e\x39\xae\x3e\x6e\x3a\x0b\x18\xce\x52\xec\x5b\x1f\x71\x5a\x50\xc3\x06\xc3\x78\x53\x3a\x7d\xf2\x97\xf5\x7e\x17\xd7\x42\xda\x8b\x7e\x16\xf6\x9a\x41\xbd\xd8\x83\xdf\xd0\x43\x5f\xc1\x3d\x10\xaa\xa8\x37\xed\x0b\x65\x3c\xf6\x97\xa9\xd7\x6b\x42\x3c\xd9\x1b\xc9\xd0\x4c\x71\xa7\xad\xd5\x36\x85\xbf\x57\x4f\x1b\xa9\x22\xab\x48\x39\xa5\x36\x70\xff\x12\xc3\x31\x6e\x1f\x37\x77\x54\x3f\xa7\x43\x89\x6a\x2d\x61\xf6\xa7\x47\xd9\xe5\xec\xf6\xeb\xf6\x8f\xa6\xd8\xab\xf3\x85\xe5\x38\x85\x1d\x1c\x00\xff\x65\x11\xbc\xcb\xa9\xd4\x1e\x35\x2a\x34\x90\x50\xb2\xdb\xf4\x92\xf2\x87\xb5\x54\xd2\xb2\xb9\x74\x5d\xcc\xc9\x72\xf3\xc6\x96\x67\xc9\x46\x21\x17\x43\xb3\x16\xfb\x38\xc1\xa6\x9b\xa8\x9d\xe6\xcc\xa5\x39\xe6\xb3\xc3\xdd\x78\x4f\xad\xb1\x9f\xbb\x9a\xfd\xec\x39\x61\xc1\x2b\x8c\x03\x08\x79\xd8\xd8\x92\x16\xbc\x10\x13\x0d\xeb\xac\x3d\x78\x79\x56\x70\xd1\x75\xe4\xac\x69\xc7\xd3\x6c\xd7\x33\x11\x27\xfa\xdd\x54\xe5\xa7\xd1\x58\x59\x5a\xd8\x08\xef\x07\xbc\x9c\xe2\x89\x8f\x1e\x59\xa2\x0b\x59\x3b\xa4\xcd\x95\xfd\x2d\xbf\xc7\x14\x33\x15\x85\x3c\xf3\xcb\x2e\xf9\xf6\x19\xee\x8f\xc1\xa6\xcf\x53\x7b\xe9\xe7\xd5\x0f\x09\x1c\x72\x62\xc0\xb6\xdf\x48\xc7\x4c\xb3\x04\xbc\xef\xcb\x4f\x40\x6b\x5b\xe0\xd9\x41\xef\x68\x6d\x18\x6e\xaa\x65\x28\x4e\xd2\xc0\xd6\x62\xec\x0f\x33\xd8\x04\xe4\x26\xa8\xea\x4c\xad\xb0\x12\x76\xa3\xc6\xa8\x18\x0b\x5b\x1f\x46\xae\x66\x6f\x02\x46\x68\x31\x76\x2b\x5f\x42\x12\x18\x57\x49\xe3\x6c\x30\x37\x35\xb9\x46\x1a\xad\x90\xee\xb6\xa8\x77\x33\x66\xbb\x30\xed\x26\x3d\x53\x05\x19\xaa\x83\x88\xd4\xdf\xed\x17\x97\x0f\x37\x1d\xaf\xc3\x2f\x1d\x6b\x0f\x86\xeb\x24\x1d\x3c\x4c\xb9\x9c\x2c\x7e\x4f\x1d\x2f\xe8\xa2\x83\x8d\xde\x96\xb6\x7a\x7f\xd2\xed\x96\x2f\xf7\x10\x3f\x23\x2d\x6c\xdb\xf9\x5a\x8d\x6e\x09\xa6\x81\x6b\xa9\xbf\x7b\x5e\x8b\x67\x4a\x14\xbb\xad\xbe\xba\xfc\xbe\xaa\xe8\x67\xda\xfe\x6c\x4b\x3f\x1c\x1b\xba\xfc\xea\xb0\xbe\x92\x1e\xec\x51\x65\xe2\xff\x54\xd9\xb8\xed\x02\x02\x1e\x38\x6b\x3c\xef\xd3\x31\x4f\xac\x5e\x80\x7e\x8f\xa0\x7e\xec\xdf\x8a\x51\xc4\xcb\x44\x23\x07\x90\x42\x46\x51\xb0\x76\x9e\xb9\x68\x75\xe0\x02\x51\x8d\x46\x45\x54\x42\x65\x28\x71\x8c\xb7\xb0\x94\x62\x4c\x00\x62\x7f\xd4\x1b\xe2\xb5\x9f\x27\x4d\xac\x12\x52\x0b\x63\x63\x48\x89\xc0\xc0\xa0\x73\xa0\x1f\xff\x64\x36\x12\xa6\x04\x52\xcc\x25\x8a\x2d\x36\x01\x79\xeb\x80\x2f\x25\x41\x04\xb6\x84\x5b\x54\x96\xe3\x32\x3d\x10\xf9\x87\xd9\x81\x76\xa3\x5b\xcc\xae\x66\x0f\x7f\xc3\xa0\xed\xc0\xcd\xc7\x8c\xf6\xf5\xf5\x59\x08\xea\x40\x2e\xe8\x4e\xc3\xac\xbd\x1d\x8a\x97\x53\xfe\x4b\x48\xb6\x83\x99\x99\xd8\xe7\x20\xbd\x7c\x8d\xe6\xe3\x76\xc0\xaa\x30\x45\xf0\x9f\x5b\xb6\x79\xbc\x3c\x8d\xe6\x4c\x4f\xb3\x28\x9d\x15\x6c\x1c\xdc\x55\x77\x1b\x75\x9c\xa6\x20\x28\x4c\x76\xdc\xf5\xaf\xe2\x71\xc4\x89\x92\xb9\xdd\x05\xa2\x41\x25\x94\xe6\xa4\x98\x0c\x75\xbd\xf0\x08\xe5\x56\x83\x74\x43\x5c\xbe\x9b\x7e\xaa\x1e\xbd\xac\xfc\x10\x8d\x08\xab\xb2\xaf\xc9\xd9\xf5\xfc\xfc\x66\xf1\x6b\x5d\x15\x0e\x42\xa4\xd2\xc6\xf9\xfa\x57\x92\xfa\xef\x01\x22\xae\x27\xbc\x1c\x9c\x8c\x59\xd9\x2d\xc1\x1c\x4c\xf4\x31\xa3\xc2\x9f\x18\x0b\x10\x07\x92\xe5\x66\xf6\xf9\x4c\x74\xe8\xb9\x9a\x42\xc3\x01\xfe\x51\x94\xe9\xc4\xdf\x08\x6a\x3a\x36\x9b\x67\x2e\x2e\x5c\x52\xe8\x9f\x56\xea\xdf\x1e\xb7\x54\x66\x17\x8a\x48\x68\xed\x98\x6e\xd9\x0a\x40\x06\x2a\xdf\xa1\xa5\x6f\x15\xe4\xaf\xcb\x51\x04\x49\x95\x28\xfc\xcb\x89\x1d\x66\xfe\xbe\xfc\xc6\xf4\x77\xdc\xff\xc3\xc9\x59\x44\xc5\xd9\xb4\xeb\x1a\x82\x05\x77\x0d\x1a\xdc\x09\xde\x78\x08\x12\x82\xbb\x3b\x34\xae\xc1\x5d\x82\x36\x2e\xc1\xa1\xb1\xe0\xd0\x38\x41\x03\x8d\x07\xd7\xc6\xa5\xd1\x04\x09\x4e\xb0\x3e\xdf\xf7\xef\x3d\x39\xe7\xcc\xfe\xf7\x79\x57\xdd\x75\xad\x67\xd5\xa4\x6a\x50\x35\xba\x6a\xad\x4f\xc0\x37\x89\xd0\x15\x4f\x11\x75\x49\x9e\x23\x25\x0a\xb0\xda\x47\xdf\xd6\x13\xda\x1f\xd6\xae\xf8\x9d\xd4\x07\x33\xe8\x00\xc8\x92\x6d\x4d\x87\x0c\xd0\xb4\x9c\x67\xce\xf0\x60\x43\x80\x8f\x94\x00\x47\xcd\xcd\x26\xdb\xf5\xfb\xa7\xe6\xb0\x14\x7a\xb1\xdc\xc6\x83\xde\x2a\xa3\x5c\x90\x6a\x12\x5f\x57\xec\xa9\x7e\xa7\xdc\x50\x42\x78\x8a\x2b\xcc\xe5\x5c\x1f\x7d\xd0\x8d\x2f\xe9\xdb\x02\x0e\xd5\x6f\xfd\xf5\xec\x77\xb1\x9b\xee\x33\x1e\x43\x82\x71\x15\x7f\x83\x1a\x0a\xd9\x47\x7f\x7a\x10\x60\x95\x24\x64\xde\x2b\x4c\x90\x0f\x96\xf8\x26\x8b\x4c\x20\x67\xc5\xe1\xed\x16\xab\x9a\x2b\xfd\xba\x8a\xf6\x06\x25\xd0\x0a\x4b\x36\x71\x11\x9b\xf6\x05\xfb\xbf\x03\xf8\xee\x5b\xb0\xde\xa5\x54\xb9\xcd\xd6\xc2\xb6\xe3\x65\x8d\xfd\x7d\x2f\x94\x9d\x56\x5f\x05\x9a\x5a\xc5\xb4\x1b\x6e\xc7\x90\xbd\x1c\xc7\xdd\x70\x2a\x39\x1c\x03\xd4\x9a\xf2\x29\x68\xc2\x55\x10\x0f\x03\xc7\xed\x93\x64\x5f\xb9\x0f\x25\x4d\x05\x78\x29\x0c\x21\xb0\x7a\x3d\x9a\x88\x0a\xa7\x3f\xeb\x3b\xd3\xd2\x96\xa6\x9d\x2a\x26\xcb\x6d\x71\xb8\x31\x9d\x4f\x69\x9a\x48\xcd\x9b\x2e\x54\x14\xbf\xbd\xb6\xc4\x9c\x42\x64\x92\x31\x8b\x46\x36\x7e\x4a\xe3\xb6\x6c\xf4\x6f\x73\xa0\xfa\xa0\x54\xb2\x59\x52\xa9\x3a\x7f\x4b\x3c\xa9\x5d\x6c\x8a\x91\x22\x18\x84\xcf\x38\x70\x50\x6b\x3d\x38\xe0\x3f\x2c\x39\xaf\xa8\x77\xd1\x3d\x40\x0f\xa6\x9a\x64\x9e\xcd\x5f\x95\xea\x66\x88\x0b\x35\xa0\x69\xcd\x25\x27\xba\xad\x1c\x33\x66\x58\xa9\x5d\x00\x9c\xca\xca\x4b\x59\x63\xc4\xf1\xda\xe7\xd0\x5a\x4e\x8f\xfa\x87\x70\x13\x95\x15\xb8\xbc\x71\x1d\xc3\xf7\xa9\xe7\xb0\xed\x95\xca\x3f\x75\x67\x49\xc9\x7e\x40\x52\xa6\x63\x2b\x48\xdf\x95\x82\x91\x45\x2b\xd5\xe3\x1f\xb6\x24\x04\xcf\xa6\x09\x7e\x60\x11\x72\xfe\x41\x9d\xb1\x6b\x1d\xd2\x30\x34\x61\xdb\x29\x22\xe5\x73\x75\x47\x97\xdd\x5c\x22\xd4\xb8\xba\x46\x9b\x09\x0d\xf5\x1f\x63\x52\x3a\x15\xd8\xb5\x53\x9e\xe5\x95\xcb\xc2\x01\xae\x65\x55\x88\xed\x15\xd9\x6a\x3b\xd9\x86\xf6\xb3\x19\xca\xe5\xd9\x17\x02\x9d\x6c\x97\xc9\x03\xb1\xfa\xc3\x5b\xed\xda\xea\x78\xcd\x37\xba\x3a\x00\x4c\xde\x37\x22\x0d\xbf\x46\x49\x9b\xd7\x3e\xa0\x04\xeb\x61\xc4\x45\xf5\x51\xa4\x7c\x27\x2c\xc4\x5f\xad\xf5\xbd\xc2\x2b\xdd\xe0\x30\xc2\xf2\x9d\xc4\xc8\x41\x59\x12\x42\x24\xd4\xff\x94\x73\x7c\x96\xa6\xa1\x1c\x8a\x9e\x94\x4b\x61\x63\xe6\xa4\x88\x8c\xaf\xda\xd4\x11\xe4\xc9\x35\x0c\xb2\x73\xc0\x41\x3b\xb1\x7d\x4e\x57\x40\x76\x50\x42\xc3\x8d\xa1\x5e\x1b\xdf\x88\x98\x95\xd4\xcb\x22\x54\x78\xf8\xa7\x11\x72\x91\xbd\x49\x3c\x9c\x8d\xc2\x50\xe7\x92\x6b\x6f\x55\xde\x6e\x64\xe5\x67\xe1\x26\x3e\x99\x5e\x51\xf8\xdd\x33\x56\x41\xf1\x03\x7f\x9b\x0c\x54\x4a\x59\x34\x9e\xcb\xe5\x6b\xf1\xfe\xe2\x4e\x24\x3a\x5f\xeb\x14\x0f\x94\x9c\xfb\x81\xd1\x9c\xab\xa5\x04\xb2\xf0\xe5\x74\xd4\x14\xdc\x84\xde\xb4\x12\xec\x9a\x65\x53\x92\xe9\x49\x9b\xa1\x0a\x73\x28\xfd\x9a\x54\x91\x2d\x67\x40\xfc\xe3\x48\x68\xd6\xe8\xe3\x10\x0f\xc7\x5b\xbc\x4a\x20\x48\xd1\x61\xda\x01\xe7\xda\x3e\x31\x45\x54\xd3\x29\x5e\x07\x89\x34\x2d\xf8\x7b\xc4\xbb\xb2\xd9\xb7\x75\xbd\x80\x0a\x3f\x3c\xb1\x2e\x10\xaa\xf1\x2d\x3d\x83\xfd\xbc\xbe\x44\x4d\xab\xa8\x58\x02\x6e\x3c\x47\x26\xa6\xa0\xc7\x8c\x18\x94\xa2\x59\xf1\x27\x39\x17\x26\xd9\x89\x84\x5c\x70\x5a\x58\x4d\xdc\x83\xa9\x8c\x67\x67\x65\x7a\x7b\x4e\xbc\xce\x96\xce\xab\xd7\x61\x09\xda\xaf\x6c\xc2\x43\xe5\x99\xc2\xa0\xf2\x70\xf3\x62\xb2\x44\x36\x5a\xfa\xa9\x5e\xf0\x90\xe3\x9c\x60\x37\x8e\xf0\xa6\x23\x53\x18\x98\x90\x9e\xac\xdf\x11\x65\x33\x6c\x11\xbd\x1c\x48\x9e\x7f\x65\x4d\xf3\x8d\xc8\x1e\x1c\x9d\x24\x29\x92\xc3\x81\xbb\x20\x43\x45\xf2\x9b\x09\x60\x97\x4f\x45\x85\x06\x43\x81\xeb\x00\xda\x48\x95\x3d\xd9\xf0\x79\x66\xfd\x07\x71\x4d\x9a\xaa\x96\xfa\x48\x54\x5f\x79\x99\x23\x31\xb0\x69\x67\x9c\xe2\xad\x0e\x6b\x0c\xc6\x71\xdb\x91\x10\x06\x6b\x3e\x4a\xf0\xcc\xca\xd1\x9d\xbe\x9d\x51\x64\xf6\xb7\xa7\x65\xf0\xb1\x69\xd2\x3a\xb9\x60\xa0\x69\x41\x99\x0a\x89\xde\x4f\x68\x51\xfe\x82\x52\x63\x8a\x2b\x51\xd0\xde\x29\x1d\xf9\x76\xd8\xd2\xfd\x83\x9c\xb2\xf2\xa1\xeb\x9e\x2d\x85\x80\x8b\x8a\x13\x0e\x1e\x95\x18\xfd\x40\x0f\xae\x02\x9e\x14\x5b\xc9\x40\x10\x35\xde\xab\xa8\xcd\xc4\xec\x8c\x8d\x96\xbe\xb6\x37\x6b\x81\x16\x8d\x06\x99\xbb\x16\xf2\x5b\x8b\x52\xf8\x34\x34\xe2\x43\xda\x60\x51\x03\x41\x6a\xb9\xf1\x01\x12\x8c\x69\x39\xea\xa0\x74\x8f\x8f\x1a\x47\x42\xe8\xaa\x42\xbb\x32\xc6\x04\xe4\xd3\x0e\x83\xc5\x1f\xc3\x47\xa4\xc7\x33\x3b\xe4\xb4\x7a\x17\x4e\xa9\xb0\xdd\x59\xac\x1a\xd3\x66\x09\x21\x4b\x8e\x72\x26\x0f\x3a\xe5\x10\x71\xfc\x4c\xb4\x1a\x8c\x2c\x26\x0b\x2d\x67\x71\xa5\xae\xd5\x07\x2e\x60\x10\xc6\x71\x4d\xbf\x8b\x50\xb1\xe8\x7e\x82\x11\xa9\x72\xe2\x76\x0b\xaf\xc1\x69\x66\xba\xe3\xee\x97\xa5\xc8\xd9\xa5\xb6\xec\x4e\x98\x8c\xd7\x6a\x5b\xd7\xcb\xc3\x56\xbf\x13\x9a\x5f\x01\x89\x19\x01\x1f\x7d\x10\x97\x57\x01\xa4\x83\xd0\x0c\x74\x4e\xbc\x3d\xa9\x64\x82\x32\xe1\xed\xc7\x49\x95\x12\x20\xb0\x49\x1c\x69\x7c\xfe\xb7\x72\xb1\xc0\x37\x61\xf9\x4c\x58\x9d\x3b\xf1\xeb\x6f\xb4\xd9\x89\x85\x88\x93\xb1\x1b\x6b\x83\x99\xfb\x3f\x8f\xe7\x92\x11\xf2\x09\xa4\x75\x65\x9a\x35\x26\x0b\xbf\x28\x5a\x89\xcf\xf3\x75\x38\x7d\xa9\xed\x1b\x86\x66\x1d\x21\x83\x33\x20\x00\x66\xee\xbd\x8e\xbd\x86\xcd\x28\x3d\x99\x7d\x15\xb3\xb6\xe3\xed\x36\xf0\xc4\x8f\x19\x9e\xce\x70\xed\x95\x7e\x47\xa7\x60\x00\x99\xbb\x4c\xbd\x63\x41\x32\x64\x50\x5e\x0c\x7e\x7d\xcc\x78\xee\xe0\x9d\x9d\x98\x52\xdd\xc6\xa8\x38\x0c\x0f\x41\x38\xf9\x59\xc3\xff\x28\x20\x68\xfd\xf6\x59\xb8\x0e\xeb\x3e\x08\x22\x6f\xee\xa6\x32\x52\xb5\x9c\x4b\x4b\x50\xae\xbe\xa5\x6f\xba\x46\xf8\xae\x2a\x00\xbe\xb4\x0a\x4f\x11\x5b\x32\xc7\x24\xdb\xab\x84\xc5\x22\x25\x4f\x38\xd3\x9f\x02\xc3\x32\x2f\xcb\xfa\x95\x7f\x63\x47\x4e\xd0\x6b\x9b\x27\x55\xad\x61\x70\x62\xac\x1b\x55\x58\x6b\x60\xd8\xac\x2e\x52\xc8\x55\xc9\x24\x56\x1a\xdd\x46\xbf\x8d\xc7\xaa\xd8\x87\x59\xcb\x7e\x61\x35\xc7\xe0\x31\x8f\x34\x0a\x5c\x30\x2e\x47\x27\xa7\x94\xf7\x23\xa8\x8f\x7f\x80\x3c\xf0\x49\xa1\x3b\xcb\x32\xf0\x2c\x5e\x99\xa1\xbc\xf7\x8d\x45\x70\x10\x0f\x25\xd0\xc5\x1c\xbc\x89\x60\x6e\xcc\x51\x28\x7b\x47\x39\xb0\x5c\xcb\xfc\x21\x43\xe2\xe8\xc2\x77\x57\x05\x6d\x20\x8c\x9b\xfc\xfd\xcf\x8e\xe4\xb1\x9b\xf0\x1d\xe0\xd1\x67\xf2\x07\x7e\x70\x5c\x78\xfd\xd0\xeb\xe1\x65\x15\x7e\xa5\x73\x61\x8a\x09\x60\x33\x14\x68\x5b\x30\x68\x29\x3c\xf6\x6b\x7a\x2c\xcb\x50\x8f\x2f\xaf\x80\xec\x25\xec\x61\xc7\x8a\x9c\xd3\x6f\x41\xde\x6c\xcc\xd1\x73\x75\x05\x5b\xa2\xe4\xa3\xdf\x65\xed\xa4\x83\x40\x57\x82\xb4\x7e\x68\xe7\x92\x76\xd1\xcf\x0c\xd7\x10\x0a\x78\x8e\x4a\xce\xfc\x31\x70\x20\xd7\x99\x4b\x08\x6b\xae\x1b\x8f\x00\xb4\xf9\xb0\xd0\xe6\x48\xdc\x49\xb2\x77\x3d\x21\x37\xc4\xcc\x31\x69\x74\xa8\x49\x31\x27\x2b\x15\x1f\x95\xb2\x60\x1d\x65\x58\xd4\xe2\x8f\x5a\xce\x9e\xe4\xc6\xd2\xb0\xf8\x36\x1d\x9a\x34\x4e\x69\x27\xf1\x80\x57\xaf\xa2\x73\x84\xf4\xae\x60\x6b\xee\xe8\x8e\xdb\xcc\x62\xc5\xd7\x5e\x43\xa6\xd4\xf9\x83\xaa\x4c\xac\x83\xad\xde\x6f\x77\xb1\xe3\x12\x2a\xd4\x1f\x44\xb8\x6d\x39\xba\x57\x7b\x4c\x9a\xfb\x28\xe9\x27\x80\x50\x7a\x6a\x07\x07\xf9\x3a\xf2\xeb\x48\x51\x3d\x6e\x6b\x21\xd0\x18\x75\xd2\xd0\xf1\x2c\xf8\x63\x8f\xcb\xcd\xdb\xdf\x19\xe0\xc0\x8d\x96\x88\x2d\x59\xac\x2b\x52\xe2\x16\x47\x99\x22\xd5\x9f\xf5\x35\xba\x3a\xd2\x1d\xb6\x9a\x17\xb3\xbe\xa3\x45\x63\xc3\x8f\xa3\x3b\x8f\x0b\xac\x82\x5f\x45\x03\x77\x6e\xee\x96\x28\xae\x3b\x6d\xcf\x25\x1c\x59\x9c\xce\xb5\x5d\xee\xaa\xf0\x55\xab\x5c\x00\xad\x7a\xc9\xf3\x72\x74\x73\x3b\x0e\xb5\xee\xb3\xd5\x9e\x90\x72\x54\x83\x92\xf0\xce\x98\xea\x5b\xfa\x96\x43\xff\xe6\xa1\x1d\xaf\xc0\x96\x4f\x0a\xdf\x31\x93\x08\x4a\x2d\x9a\xbb\xe4\x0e\xbe\x08\x89\xd5\x6e\x1a\xec\xca\xe9\x8a\x5d\xee\x07\xf2\xf4\x05\x4d\xc7\x81\xbc\xd6\xfd\x1e\x2e\xd1\x01\xd1\xbd\x1a\xe4\x47\x21\x0e\x3d\xd8\xed\x95\xbe\xee\x60\x7c\xff\x0c\x7b\xc2\x22\xcc\x6b\xb4\x07\x2f\x31\x11\xb1\x94\xe0\x4e\xf5\x46\x16\xec\x09\x2e\x97\x53\xfc\x9a\x6e\xe8\xf8\x63\x5d\xbd\x75\xc8\xe5\x2b\x7f\x42\x01\xca\x46\x63\x16\xe1\x2c\x6f\xa3\x85\xbb\x0e\xb2\x13\x85\x04\x67\xfe\x36\xe6\x9f\xd4\x87\x2f\x05\xe9\x67\x88\xbb\x0d\x13\x65\x06\x41\xf5\x8e\x40\x72\xb2\xaa\x9a\xe6\xb1\x1c\xb8\xaf\x1d\xfe\xcc\x9f\x85\x9d\x52\x37\xd5\x8e\xbb\x44\x77\xb7\x93\x2e\x43\xa8\xa9\x71\x31\xae\x91\xf5\xa7\x99\x23\x67\xc3\xee\x9e\x8f\x6e\xbc\xbb\xa7\xe5\xec\x1d\x91\x94\x62\x3b\x07\x92\x27\xbf\x78\x6b\xae\x7c\x1a\xdb\x85\xd7\x9f\xba\x7e\x25\xaf\x2c\x76\x2d\xfa\xdf\x25\x4f\x8e\x2e\x15\x6d\x45\xf9\x95\x4e\x2f\x99\x8f\x98\x54\x5b\x21\xcd\x82\x6f\xde\xde\x69\x4e\x04\x5f\x2f\x49\x75\x7b\xbb\xf3\x1f\x78\x32\x0c\x31\x4b\x18\x18\xae\xbe\xfe\x31\x1c\xf9\x46\xa4\x79\x6b\x37\x69\xdd\xf7\x8f\xd4\x65\x29\xfa\x25\x62\x6d\xa5\xc1\x55\xe2\x96\xc5\x12\x71\x21\xbd\x93\xe0\x28\x4d\x4b\x7d\x4c\xfc\x63\x67\xec\x85\x06\xec\x67\xf3\x9e\x67\x74\x09\x5d\xa3\x8d\x56\xe2\x51\x17\xef\xfc\x56\xc4\x53\x0d\xe5\x5d\x3c\x86\x08\x2d\xd3\x39\x52\xd0\x5d\xef\x48\xc8\xef\x23\xba\xe6\x5c\x9c\xf4\x8b\x1c\xea\xa7\x66\xb0\x52\x0e\x64\x2a\xb2\xa2\xad\x28\x47\x4f\x8a\xb2\x06\xe6\xa1\xc6\x59\x3d\x92\x4b\x27\x90\xfa\x17\x63\xe1\xcb\xc3\xf3\xfe\x49\x61\x23\xee\x1e\xc3\x94\xf7\x35\xe9\xae\x56\x03\x4b\x60\xf5\x3a\xb1\xf5\xbc\x13\x7f\xe3\x47\x0f\x28\xc7\x44\x39\x4e\x3d\xad\x02\xc5\x47\x46\x9a\x8f\x41\x07\xd1\x8c\xc6\xc2\xf1\xd7\xe1\x44\x12\x27\x39\x4d\xad\x87\x88\xf0\xa7\x77\x5a\x84\x7b\x65\x67\x0c\x46\x9f\x0e\x05\xe3\xcf\x9a\x56\x58\x9d\xcc\x18\x54\xcb\xb6\x3f\xbf\xb6\x31\x7a\x97\x24\xe6\xca\x15\xe7\x17\x53\xc6\xf8\xe3\x22\x13\xe2\xbb\x0c\xcb\x37\xcd\x66\xd7\xe3\x3a\xdb\xdd\xbc\x8d\xae\x22\x90\xb8\xc5\x21\x3b\xaa\xc9\xfb\xb0\xfe\x97\x74\x3c\x14\xda\x82\x28\x8c\x39\x80\x4f\x5a\x69\x48\xa3\xbe\x2e\x20\x91\x65\xa5\x20\xb5\x2d\xfd\xfc\xca\x6f\x67\x55\xd6\xa5\xac\x20\x3e\x27\x8d\x50\xce\x62\x85\xe3\xf1\x66\xf8\xde\x1b\xcc\x94\x12\x42\x52\x26\x87\xfc\xb3\xb4\xc3\xe3\xc7\x82\x6f\xc3\xca\xb7\x10\x3c\x86\xbc\xc0\x67\x21\x1b\xf8\x8d\xe3\xae\x48\x22\x41\x6f\x7d\xaf\xef\x64\x22\x92\x05\xa6\x9a\x6b\x87\x99\xcb\x7e\x61\xe5\xc2\x41\xfc\xec\x36\x18\x32\xae\x92\x2f\xc5\xd9\xd8\x8a\x9c\x2d\xf7\xc1\x0e\x2d\x91\x43\x36\x7e\xc1\x61\xd7\x81\x0d\xb4\xd0\x2f\x8a\xc0\xbc\x49\x79\xe8\x56\x03\xef\x12\xab\xaf\x1b\x3c\x4a\xe3\xc5\x3f\x30\xf4\xc4\x12\xfd\x3e\xaa\xb9\xde\x53\x35\x1f\xb9\xc3\xec\x51\xda\xc8\xf0\x21\x9f\x15\xa2\xb4\x3f\x04\xb7\x7c\x06\x2b\x59\x7b\x15\x8f\xd3\x0c\x7a\xee\x11\xb9\x8d\x2f\x8d\x1d\xa2\x62\x09\xc0\xc3\xa9\x3b\x65\xc4\x4c\x47\xa7\x61\xcf\x23\x5f\xcb\xd5\x7e\xd0\xb7\xb1\x5d\x58\x38\x00\x6a\x0f\x98\x99\x20\x3e\xa3\xfc\xa9\x53\xf7\x32\x6a\x9f\x80\xaa\xec\x87\xf6\x7a\x5d\x0a\x87\x93\xd5\x89\x25\x15\x51\xc5\x9c\xb8\x82\xe8\xe2\xaf\x20\x01\x69\x58\x8c\xab\x52\x1d\x5a\x96\x49\x91\xf3\x0e\x23\xfd\xc7\x7e\x30\x95\xb0\x3e\x42\x3f\x66\x26\xab\x42\x45\x4c\x90\xec\xb8\x9e\x31\xd2\xf3\x07\xc8\x47\x35\x85\xf7\x74\x6c\xdc\x4b\x6e\x2c\x70\x36\x9d\xb0\x87\x2c\x0d\x6a\xfb\x16\x73\x49\x58\x2c\x94\x99\x54\x4c\x58\x8c\xec\xfe\x7a\x81\x0a\x8f\x34\x17\xdf\xee\x5b\x3e\xff\x77\x1f\x99\x79\x82\x7e\x93\xd9\x87\x76\x1a\xd3\x7e\xce\x00\x84\x18\x7f\xc0\x97\x03\x3c\x56\x50\x8b\xd3\x50\x76\xde\x0b\xfd\xf0\xd7\xa9\xc8\xad\x40\x85\xf6\xaa\x96\x29\x98\x88\x75\x59\xc9\x1e\xf6\x01\xa4\x47\x49\xc9\xf5\x1b\x3e\x88\xcb\xb0\x00\x10\x64\x62\x33\x76\x30\x57\xc5\xb8\x60\x74\x64\x54\xc5\x89\xdb\x43\x20\xd5\x89\xa5\xfd\xd6\x90\xdb\x5e\x97\x52\x10\xbe\x18\x93\x88\xeb\x37\x75\x3c\x67\x2d\xe3\xda\xc0\xe4\x48\xf3\xa6\x35\x4d\x5d\x03\xf0\x69\x10\xfb\x5a\x80\xc1\xb2\xd5\xcb\xf8\xbe\xd4\x15\xe3\xa1\x24\x80\xf0\x0c\xcf\x62\xa9\xef\x9b\xf9\x1c\xed\x6c\x69\xc0\xbc\x7d\x27\x26\xfa\xea\xcf\x93\x76\x07\x39\xfc\x2b\x4f\xfc\x1e\x15\x78\xe0\x8d\xd9\x6d\x6b\xe7\x09\xa5\x91\xa9\x30\x77\x0f\xd0\x51\x8d\x74\x25\x5e\x79\x5e\xaa\x59\x59\xd8\x12\x61\x97\xb0\x98\x5d\x35\xec\xda\xa8\xa5\x68\x99\xcc\x42\x2b\xff\x3c\xf6\x73\x35\x4f\xe3\xdc\x2e\xf5\x8f\x55\xeb\x94\x1f\xbe\xff\xa9\x12\x64\xc8\x59\x0f\xa1\xfe\x26\x7a\x46\x21\x5c\x0f\x7b\xc3\x15\xb7\xfa\x1c\x9d\xe8\x04\x79\x95\xf6\x8d\x93\x85\xe3\x79\x5e\x28\xb8\x50\x2e\xd0\xe2\xe9\xf3\xbb\x8c\xe4\x87\x44\xf4\x1b\xac\xd5\x64\x37\xdb\x41\x46\x33\xf6\xa9\x44\xc1\x5b\x61\xb3\x81\x3d\xbe\x0f\xd1\x0a\x8c\x2e\x00\x66\x7d\xee\x66\x3d\x8c\xd5\x2e\x97\x9c\xa6\x3e\x40\x78\xe6\x01\x7b\x90\xde\x80\x5f\x93\xd3\x1b\x96\x2e\x2a\x63\x7b\x6d\xf8\x3f\x17\x7d\xc5\xf4\x6d\x2a\x04\x83\x3b\xab\x42\x29\xe4\x87\x94\xa0\x7b\xbc\x32\xbe\x6b\x0c\x60\xe1\x57\x01\x2a\x5b\xb7\xa8\x0c\x1e\x06\x59\xba\x66\xee\x58\x1e\x2e\xea\xc2\x24\x08\xa5\x9a\x1b\x62\xb0\x61\x22\xce\xbf\xf1\x95\xc9\xb7\xda\x38\xad\xed\x78\x3e\xae\x9f\x0b\xd0\xe1\x14\x84\x3c\xa0\x16\x03\xfd\x45\xe6\x69\xf7\xfc\xa7\x71\xed\x02\x42\xbb\xb6\xe0\xcc\x2a\x3d\x3f\xd1\x12\x56\x90\x0f\x6c\x52\x59\x69\x70\xc2\xea\xc5\xb9\xc9\x99\xd7\xa2\x6b\x27\xdf\x90\xc9\x49\x58\xba\x1f\x3d\x2d\xe1\x22\xb5\xff\x66\x94\x2f\x3a\xf4\x89\x63\x8f\x08\xd6\xf0\xdd\x15\xaa\x68\xcb\x8e\x7c\x54\x56\xc2\x54\x94\xd2\xc2\xf5\x79\x46\x0d\xbf\x64\x56\xd0\xe8\x3b\x92\x57\x8e\xb7\xfc\x4d\x92\x55\x5d\x07\x32\x36\x9f\x36\xf9\x8c\x75\xa5\x86\x83\xbe\x13\xfa\x24\x2c\x7f\x7c\xe5\x57\xb1\xd5\xc6\x3a\x5d\x5d\x7e\xb0\x4f\xb9\xa8\xf0\x79\xaa\x31\x5d\xb8\x87\xc7\x3b\x9e\x17\x86\x17\x86\x20\x05\x88\xf8\xc4\x98\x25\x8f\x48\xfa\xb5\x65\x3f\x2b\x01\x9f\xaa\x56\x94\x65\xc4\x31\x54\x6d\xf7\x6d\xea\x4e\xe0\x94\x38\xa2\xe2\xce\x9c\x2e\x4e\xe2\x2d\x56\xe1\xb9\x5f\x80\xa9\xb1\x0f\xad\xb8\x2f\xc8\xde\x2b\x68\x73\xf6\x34\x24\xfb\x31\xf8\x90\xc6\x97\x46\xe2\xfc\x29\x30\xba\x64\xcf\xd2\x77\xd5\xa3\x2b\x92\xbc\x3d\x3f\xd0\xf9\x90\xac\x71\xe4\xb1\x64\x84\x4d\x4a\xe2\x5d\x3b\xdd\x72\x7b\xc2\xa6\x39\x66\x11\x3c\xb7\xd8\x3f\x90\xd5\xf6\x13\xe3\x35\x32\xaf\xaa\xbd\x39\xd0\x22\xa2\x35\xee\x31\xed\x74\xc5\x30\xc3\x3e\x3b\x57\x83\xfe\xef\xa6\x25\x0f\x68\x82\xf3\xf8\x46\x53\x90\xb3\xff\x77\x9e\x52\xf4\x18\xc1\xb1\x53\x2a\x33\xaf\x4f\x2c\x7a\xa2\xf4\xe4\x88\x35\xde\xa6\x12\x13\xc6\xf7\xec\x1b\x66\x7d\x57\xb3\x9c\x6b\x42\x59\x1e\x9f\x8f\x6c\x36\xdd\x3b\x29\x77\x8f\x9b\x33\x78\xfc\xdd\x91\xae\x14\x91\x43\x75\x0d\x6e\xe2\xcf\x8d\x35\xf1\x02\x5d\x13\x07\x27\xef\xdd\xa6\xde\xf3\x1b\x6e\x6e\x12\xa5\x74\xab\x4e\x92\x29\xeb\x3d\x57\x31\x1e\x0e\xf9\xf8\x9d\xa4\x6b\x85\x25\x5f\xbe\x3b\xa6\xed\x43\xd0\xb2\xa3\xe7\x21\x57\x59\x61\xe5\x2f\xcc\xf3\xc8\xaf\xad\x96\xe8\x29\x07\xbf\x58\xd1\xba\x83\x69\x43\x59\x89\xc5\xef\x14\xca\xe5\x04\xa3\x24\x4d\x99\xeb\x40\x92\xc1\x71\xfc\xc1\x01\x23\x8a\xeb\x22\xae\xe0\x64\xf8\x4c\xe7\x94\xbe\x0f\x4d\xb1\x7a\xd9\x70\xe8\xaf\x83\x92\xb3\xcf\x95\x1b\x50\x15\xf1\xd5\x96\x5f\x84\x3e\x6e\x49\x9f\xc4\x7f\x32\xfc\x52\x5d\x7a\xd0\x71\xc0\x0e\xbf\x45\x4d\x0d\x80\xf7\x19\x81\xf2\x4c\x82\x6b\x62\xab\xd0\x5b\x64\x63\x43\x48\x6e\x68\x26\xa9\x1b\xca\xdd\x21\x18\x82\xf5\x25\x2c\x2c\x52\xca\x9f\xce\xab\x62\x7a\x48\x20\x8e\xce\xe1\x67\xea\xee\x8b\xa7\x85\xf5\xe8\xa1\x11\x95\x7f\x89\xff\xfc\x0d\x2e\x01\x49\xa1\x80\x99\x37\x97\x8a\xbd\x19\xc1\x8f\xfd\x5f\x6d\x8c\xbb\xf4\xf6\x00\x55\x89\xb4\xd1\xab\x12\x47\x12\x13\x0e\xa6\xcf\xb8\x00\x2f\xb6\x08\xb1\xf0\xe0\xa3\xcc\xba\x13\xe4\xda\x76\xea\xbc\x66\xdd\xe2\x82\x74\x36\xa8\x35\x2f\x07\x38\xef\x25\x43\xc0\x93\xa2\x41\xc3\xe5\x4f\xd2\x22\x55\xa0\x10\x83\x42\xcf\x96\xfc\x64\xf1\x1d\x82\x48\x2d\x5c\x3d\x86\xd8\x94\x5f\x50\x98\x9e\x2e\x39\xfd\x05\x1c\x4e\x6c\xa5\x53\x8c\x27\xfd\x70\x1d\x21\xa6\xf0\x84\x1a\x94\x2b\x63\x9c\x27\x80\x96\xb7\x54\x05\x63\xf2\x72\xbe\xf5\x2f\x3f\xd0\xa0\xc9\x0a\xde\xb4\xf8\x7c\x62\xad\x80\x41\x41\xa1\x10\x73\x54\xc4\x4a\x4d\xfa\xcb\xa4\xca\xfe\x60\x59\x0e\x87\x6d\x8f\x24\x84\x83\x83\xe5\xc7\x59\xe4\x77\x41\xd2\xdb\x6d\x1d\x58\xde\xb0\x65\xd6\x33\x1c\xa2\x2c\xd5\x33\x3d\xe4\x61\x29\x12\x5b\xe8\xea\x69\x12\xeb\xcd\x2e\x4e\xa8\x73\xb3\x63\xea\xe7\xb7\x5c\x5f\x25\xc1\xa8\x5d\x0f\xf0\xa6\xd6\xe2\x4d\xc4\x1e\x6a\x86\x95\xbc\x7b\x4f\x77\x53\x0a\xdd\x5c\x42\xea\x6a\x2f\xbc\x48\x6e\x35\x9c\xe5\x68\xe3\x71\x63\x6e\x3d\x14\x3e\xca\x76\x98\x46\x16\xe3\x79\xba\x3e\x9e\xa7\x88\x39\x63\x92\xe0\xf9\x0d\x1e\xa4\xc1\x78\x53\x76\x71\x7b\xdb\xfb\xb2\xe7\xb3\x7b\xec\xb4\xd5\x2b\xe9\x9f\xef\x10\xee\x91\xb2\xb8\xb6\x5c\xbf\xd1\x4b\x65\x0c\x54\x2d\xc4\xf7\x30\x3a\x17\xf3\x27\x11\xfb\x96\x24\x6b\x07\xa5\x4e\x6e\xfb\xc6\x32\x11\x63\xd0\x74\x7a\x5e\x00\xf7\xa0\x5a\x8b\x0b\x5d\xc7\xe9\xeb\x8a\x9d\x8d\x1c\x1f\x99\x72\xbf\x0e\x15\x18\xc6\xec\xb0\xd7\x55\x67\x07\x8e\x91\x38\xaf\x7e\xb3\x9a\xaf\xb7\xbe\xea\xd6\xc7\x12\x8e\x61\x6c\x94\xa3\x29\x3a\xec\x79\xb1\xd0\xee\x28\x17\xfa\x7b\x41\x31\xd4\xb8\xa4\xfb\x82\x1a\x14\x7f\xb8\x3b\x28\x85\xcc\x5f\x2a\x88\xe8\x4a\xc2\xf9\x05\x25\xfe\x83\x39\xfb\xd4\xaa\x06\xbc\x13\x95\xda\x51\x61\x5f\xc2\x33\xd2\xfd\xd2\x44\x27\x44\x9e\xf2\x26\x3d\x03\x53\x7b\x05\xae\xd4\xcc\x47\x46\x60\xe3\x8d\xbe\x30\x8e\x7a\x87\xb6\x07\x24\xae\xc3\xc6\xde\xbd\x1a\x4e\xa1\xb3\xbe\x09\x39\xcf\x9e\x9c\x33\xd3\x5d\x35\x15\x64\xe7\x8c\xa4\xbc\x85\xbf\x4a\x65\x17\xb2\xd4\xa4\xb0\x9f\x35\xab\x9d\x17\x95\xf2\xb7\xa1\x70\x92\x54\xc3\x60\x8a\x9f\xfb\x88\x1e\x1d\x9f\xa4\x5c\xf2\x39\xfe\xf0\x89\xb3\x20\x3d\x93\xfd\xb2\x41\x76\x84\x8a\xfc\x23\x07\x93\xc3\x6b\x07\xcf\xad\x1c\x82\x25\x3d\xfb\xde\xef\x04\x37\x11\xe8\xf6\xa3\x5a\x15\x1f\xfc\xe6\xac\x69\x08\xe1\x9d\x31\x49\xb9\x5a\x66\xdb\xe6\x20\x28\x74\x36\xe6\x99\xbd\xe4\x3e\x7f\x65\xac\x6b\x9f\x65\x1c\xa7\x9f\x40\xcf\x10\x66\x9a\xa0\x1f\x5a\x9b\xbb\xd0\x70\xbf\xfe\x98\x20\x9c\x9a\xdf\xd1\xa3\xd6\x4b\x50\xde\xf6\xe1\x5a\x6e\xaa\x6b\xa6\x23\xcd\x77\xb7\x42\x7c\x0e\xed\xfd\xcf\x67\xf8\xdf\x1e\xb1\x7a\x6e\x30\xf1\x49\x95\xe5\x9b\xc9\x30\x60\x58\x1c\x48\x35\x07\x1d\x39\x23\xfb\x8b\x3b\x76\xfe\xf4\x57\x63\xfb\x38\x35\x65\x0a\xae\x09\x32\x72\xb1\xa8\x4c\x19\xb2\x1a\xcd\x3d\x2e\xa9\x65\x1d\x6a\xdf\xc1\x36\x3f\x87\x4f\x34\xde\x7a\x56\xe9\x3c\x74\x52\x06\x3e\x45\x2b\xc7\x07\xec\xef\xad\x34\x0b\xe8\x2d\x9f\x01\xe3\x4d\xd2\x11\x7a\x15\x0b\x32\x19\xc3\x5c\x9d\x62\x9a\x61\xac\x95\xb2\x5f\xa6\xcf\xfa\x17\x2f\x50\xcb\x30\xb7\x9f\x14\x0a\x2a\xfd\xac\xe6\x82\x28\x71\xc9\x4e\xe9\x96\x7e\x85\xfc\x99\x8d\x7c\x02\x3d\x29\x5d\xaf\x60\x65\xcd\xe3\x88\xfc\x32\xd5\x3b\xc9\xae\xb2\x9a\xab\xee\x2e\xc5\x05\x92\x09\xcf\x2d\x3a\xd2\xa2\x4d\xfe\x25\x86\xfe\x10\x94\x72\x92\x4f\x6b\x34\x0f\x65\x4f\xa8\xae\x7e\x83\x93\x91\x46\x5a\x04\xdc\x4e\xb0\x08\x42\xa5\xf3\xea\x4c\x6e\xb4\x57\x37\x6d\x03\x3d\xd6\xaa\x29\x05\xf2\xd3\x2b\x32\x0b\xc4\x0a\x93\x2c\x5c\x64\xcb\x34\xf3\x31\x35\x9c\xd0\xcb\x81\x2c\xc4\x79\x8c\x5f\xd0\x29\x7b\x8e\x73\x59\x0b\x3b\x58\x36\x16\x6f\xd6\x99\xcd\x1f\x98\xc5\x9b\xa2\x27\xc0\x64\x22\xfe\xa1\x43\xfb\xa3\x18\xea\xa1\x7f\x32\xac\xe1\x8b\x7d\x7e\xf4\x16\x9f\x9d\xb5\xce\xe7\xe9\x30\x56\xc2\xde\x3c\x3c\x41\x71\xbc\x7f\xc7\xe0\x17\x9f\x29\xbe\x21\x8f\x41\x06\xbe\xb3\x9f\xa1\xd6\x23\xc1\x13\xe8\xdf\xab\x8d\xb3\xb0\x1f\x23\x46\x8a\x8a\x0b\xca\x0c\xba\x98\x70\x62\x8d\x28\x06\xf0\xb2\x51\x9b\xeb\xf2\xe2\x85\x94\xfb\x4d\xce\x6b\xd3\xf7\x0b\x45\x1e\x7d\xef\x24\x8f\x0c\xee\x47\x8a\xc4\x06\x1f\x29\x28\x25\x59\xcc\x6b\xa4\x7d\x80\x26\xe4\x63\x02\x73\x1e\xfa\x89\xef\xe9\x7a\xbf\x14\x65\x6e\x6c\x6c\x74\x55\xdd\x59\x54\x75\x36\xe8\x9d\x07\x70\x3f\xa9\x85\x6f\xe1\x3a\xe1\xc1\x2f\x1e\x6c\x6a\x55\xc6\x6c\xb1\xdf\x3e\x81\x2b\x45\xfc\x4b\x44\xcb\xbc\x70\x82\x88\x80\x50\xd3\xb5\xa2\x1d\x5e\x03\xc1\x1e\xec\xf3\xb4\x33\x63\xaf\x70\x80\xb8\xfb\x33\x7b\x3f\x6f\xa1\xff\x3e\x63\x2d\xb4\xfb\xe8\xd5\xad\x4c\x48\xcf\xde\x25\x77\x27\x7d\xed\x4b\x65\x57\x9e\x0d\x94\x9c\xeb\x52\xd1\x68\xea\x8d\xd8\x4d\xf3\xb0\x36\x4f\xe0\xde\xa7\xcd\xb1\x66\x72\x3e\x04\x3e\x4f\x51\x1c\xd1\xff\xfa\x14\x2d\x6c\xdc\x4d\x1e\x10\xda\xea\x12\x7d\x93\xfa\xe8\xfe\x5f\x71\x65\x08\xa3\xaf\x24\xf2\x03\xf8\x1e\xfa\x16\x11\x80\x5a\x5f\x43\xe6\x30\x13\x3c\x74\x96\x14\x36\x24\x7b\x01\xec\x95\xff\x5d\x93\x79\xbf\xf5\x8a\xa5\xee\xc5\x14\xd8\xf3\x13\x89\xe4\x3d\xf2\x15\x72\x9c\x38\xba\xf2\x3f\xbd\xf5\x7e\x70\x7f\x53\x78\x38\x32\x66\xc5\x0f\x98\x8a\x24\x0e\x4e\x2d\xd1\xeb\x5c\x0f\x62\x82\xae\x77\x7c\x7c\xeb\x5f\x76\x87\x64\xa4\xb0\x53\x6e\xc3\x66\xe8\x01\x95\x2f\xc4\x09\xe6\x32\x27\x88\x22\x7a\xe0\x33\x02\x47\x28\x1d\x3f\x76\x88\xc1\xf1\xe5\x3c\xcc\x82\xa4\xcb\xd2\x80\x2c\xb6\x19\xec\x38\x44\x18\x40\x51\x06\x16\x64\xcc\x00\x22\xe7\xbe\xc3\xa8\x8e\x21\x1c\xc0\x68\x36\x9c\xb9\x2e\xbe\xc7\xc6\x88\xce\xf1\x7f\xa5\x34\x41\xc2\x70\x1b\xca\x99\xa2\x37\x58\x7f\x87\x70\xae\x0c\xc9\x86\x91\xb0\xf5\x91\x80\x02\xb2\xff\xd2\x68\xdc\x62\xea\x88\x53\x7a\x83\x7d\xce\x50\x9b\xd0\xc2\x04\x05\xf0\x70\xae\x58\xb1\xd3\xfa\xde\xdf\xe3\x10\xd8\xd1\x5f\x64\x82\x77\x90\xe0\x87\x28\x1b\x81\x14\xf1\x87\xd6\x98\xe4\x1a\xeb\x12\xaf\xe6\x5c\x65\x56\xb1\x3e\x62\x33\x0c\xc4\x68\xe2\x4f\x4e\x9b\xc9\x70\xc5\x97\x65\xa1\x70\x14\xbe\x1e\x54\x91\x99\xc0\x22\xb5\x93\x1f\xc0\xe1\x52\xa4\xbf\xe5\x0b\xeb\x47\xbc\xc1\x41\xc6\xf9\x8a\xc3\x1a\x76\xac\x48\xc3\x36\xfc\xe5\x15\xe1\x36\x4b\xb6\xcd\x7b\x22\x42\x3b\x19\x34\x76\x0b\x62\x34\xfa\x5a\xc4\x67\x0d\x86\x8f\x87\x08\x75\x84\x34\xf2\x3e\x07\xb2\x16\x55\x7d\xd0\xbf\xfb\x65\x31\x13\x31\x20\x18\xcd\x7c\x4f\x5f\x8a\x5c\x8a\x61\x8d\x64\x8d\x0d\xe7\x18\xfe\x9c\x80\xc8\x9e\xc8\x06\xf2\x15\x58\x06\x8c\xd4\x42\x4f\xa0\x4f\x51\xe5\xb1\x42\x51\x89\xc9\xaa\x71\x93\x51\xa7\x84\x5d\xf8\x8f\xe8\xb7\xe4\xd4\xda\xa2\xb8\xa2\xc4\xa2\x15\xee\x1e\x1e\xdf\xdd\xbd\xdd\x7b\xe0\x78\xf0\xc2\x1f\xcf\x09\x23\x49\x76\x28\x0d\x38\x6e\x94\xe7\x1c\x52\x9c\xbd\xa8\xbd\x3c\xbd\xe2\x4f\x22\xa8\x41\xa8\x62\xa8\xf5\x98\x97\x98\xd5\x98\x6a\x84\x44\x84\x9f\x08\x3a\x99\xb9\x58\xd6\x59\x07\x18\xd3\x98\x9a\x94\x75\x54\xbd\xd2\x0c\xd2\x60\xdc\x1e\x74\x17\xc2\x17\xe4\x44\x64\x44\xaa\x44\x8f\x4c\xde\x4c\x76\x1f\x5f\x52\x2f\xd3\xaa\x53\x57\x59\xbc\x55\x7f\xc5\xb5\xc4\xb6\x84\xb7\x14\x79\xe5\x5d\x0b\x1f\x63\xcc\x99\xdb\xdc\xdb\x94\xd8\x7c\x1d\xed\x4e\x17\x4a\x93\x64\x62\xa5\x5f\x66\xbe\x53\xd8\x54\x0d\x09\x7f\x42\xfe\xab\x88\xe5\x8c\x65\x84\xe5\x8a\xe5\x8f\x45\x4c\x22\xc5\x0e\x64\xa7\xd5\xf4\xd4\x12\x2b\x36\xa9\xe8\x56\x93\x97\xb3\x4d\x1b\x17\xd0\x25\x5c\xc4\x5b\x04\x54\xe7\xe9\x6c\x55\xc9\x57\x79\x57\x9e\x6a\x07\x16\x4f\x55\x14\x96\x87\xa8\x41\x65\x19\xe5\xad\x63\xbe\xe5\x1c\x90\xd6\x49\xd4\x89\xac\x52\xae\xe6\xb5\x84\x1e\x77\x1c\x4d\xcc\x6c\x54\x3c\xaa\xf0\xaa\xba\xa5\x6d\xf2\x06\x73\xa2\x60\x46\xba\x44\x3b\x46\x7b\x47\x67\x25\x88\x26\xf8\x50\xb0\x52\xa8\xf3\xa5\xf2\x1b\xda\x8c\x5b\xe5\x02\x3b\xa7\x55\x26\xb8\x86\x9d\x41\x80\x2c\xff\x88\xbf\x54\x57\xd2\x64\xc8\x64\xc6\x5c\xcc\x5c\x8c\x5c\x15\x86\x66\x8d\x69\x90\xf8\x66\xc7\xe6\x4e\x60\x9d\xb5\xa9\x55\xf0\xf4\x70\x3f\x0b\xf4\x20\xa9\x0e\x74\x8a\x25\x8e\x2c\x8e\xdf\x25\xe9\x73\x7e\x82\x7b\x62\x07\xe0\x03\x30\x89\x3a\x7b\xe8\x78\x9e\xb8\x3f\x6d\x2f\xec\x5d\x43\xbf\x43\xff\xe6\x81\x12\x95\x23\x7e\x4a\x20\x69\x0e\xc4\x9e\xfe\x8f\x79\x74\x0d\x29\xef\x7f\xbc\xaf\x48\xaf\xfe\xe1\x57\x48\x64\xff\x51\x27\xfe\xc7\x49\xea\xb7\x5a\xa7\x35\xa9\x36\x20\x43\x91\x4f\x26\x48\x94\x48\xa5\x24\x7a\xb7\xdd\x0f\xc2\xa5\x7f\x3b\x30\xe6\x47\x80\x88\x53\x98\x2d\xd5\x61\xcb\x94\x8d\xab\xd3\x21\x2a\x1a\xb0\xfb\xb3\x3b\x14\xa9\x58\x24\xb3\x05\xad\xf8\x63\x91\x6f\x4a\xc6\x34\xda\x4f\xe1\xe0\xe3\x7b\xfb\x3b\xa8\xb9\x59\x1b\x69\x62\x07\x8d\x6a\x90\x37\x09\x6d\x8a\xd0\x7e\x96\x62\x99\xf3\x2c\xc0\x00\x4a\x74\x46\xb2\xf4\x0e\x84\x11\xc5\x08\x83\x36\x0f\x68\xee\xfd\xa9\xfa\x83\xea\xda\x5a\x3b\x90\x3e\xea\xa8\x8e\xa5\xce\x50\xdc\xc3\x49\xcd\xf8\xa2\xe1\x47\x05\x7a\xe8\x1e\x10\x18\xa4\x8c\x82\x0f\xda\x61\xf5\xbd\x2d\xbe\x93\xec\x66\xa8\xda\x8a\xb1\xb4\x5f\x75\x6d\x37\xf5\xe5\x6a\xd8\xcf\xfb\xba\x3c\xc8\x22\xd1\x32\x3b\x24\x44\x0d\xab\x64\x0c\x0b\x57\x4c\x12\x4c\xfb\x68\x19\x55\x39\xd0\x8e\xee\xe3\x1e\x4e\xb6\x6c\x7a\x29\x3e\x18\xb1\x15\x36\x36\x8e\x6e\x22\x35\x9c\x12\xc1\xeb\xab\x5b\xaf\x5b\x4f\x33\x95\x65\xe3\x7a\x71\x70\xc8\x56\x1c\xeb\x52\x18\x10\x8b\x42\x9d\xae\x5f\xf6\x15\x44\x15\xf3\x21\x38\x4f\x52\x71\x6f\xad\xc3\x52\x3e\x3f\xcd\xca\x4e\x2b\x80\x7d\xfb\x4b\x45\xd6\x8a\x3e\x45\xcd\x8d\xb6\x83\xbf\xdc\xef\x76\xbc\x84\xd4\x5e\x6d\x7f\xfc\xa2\x73\xc9\x9c\x7e\x48\x45\xda\xc2\xd1\x69\x6f\x8d\x37\x3f\x8a\x41\xda\x16\xa5\x57\xb6\x01\xdc\x44\x26\xbd\x1a\xd7\x11\x4b\x2d\x51\xd7\xc3\x33\x2a\x2e\xcf\x20\x93\x71\x64\x7d\xde\x00\x01\xe7\x1e\x09\xad\xba\x58\xd4\x90\x62\xe9\x32\x0d\xd9\x17\x0e\x16\x1f\x6f\x9d\xae\x96\x99\x0c\x85\x67\x1c\x37\xc9\x1e\x96\x50\xe1\xf0\xaf\xe8\xe7\xdc\x3e\x97\xe7\xa4\x8e\x0a\xc4\x74\x4f\xf0\x4f\x73\xf1\x47\x22\xac\x0f\xb0\x13\xc7\x62\xa3\xfe\x3d\x03\x97\x45\xdd\xe5\x0c\x5b\x24\x85\x9d\x95\x30\x8b\xf0\x8d\x8d\xba\xcf\x7d\x57\x4b\xb0\xd7\x57\x2b\x1b\x1b\xaf\xe2\xc3\xd8\x38\x7c\x7c\xff\xf9\x2c\x7d\x7d\x47\xc2\xa5\x07\x8a\xc0\xf7\x93\xb7\x13\x77\x7b\x66\x02\x4e\x40\xe9\xe9\x7e\x21\x27\x31\x6b\xb1\xd2\xe9\x2d\x6c\x31\xf9\x43\x44\xa1\xb4\x38\xcd\x30\x5f\x9b\x40\x9b\x40\xa3\x40\x9c\x07\xd7\x80\x1f\x0b\x84\x0d\xd4\x28\xaa\x0c\x61\x22\xce\x19\xd4\xe2\x9a\xe4\xe7\x5a\xfb\x0b\xda\x37\x28\x24\x35\x48\xcd\x34\xc8\xd1\x35\xc8\x5c\x34\x28\x10\x32\x48\x6f\x35\xc8\xf3\x36\xc8\xba\x31\x28\xc2\x85\xa5\x24\xc2\xb2\x55\x61\x19\xff\xbc\xaf\xb9\x61\x69\x75\x47\x44\x58\x01\x19\x3a\x0b\x82\x2d\xd7\x2b\xb9\x2e\xb0\xaf\xa7\xb0\x42\x1a\x58\xea\xd8\xc9\x20\xc9\x37\x7e\x8b\x2f\x05\x2b\x51\xa6\x2b\x89\x1b\x2b\x91\x92\x2b\xa0\x9e\x95\x98\xe0\x95\xe4\x67\x40\x18\x0a\x20\x36\x12\xf0\xe5\x03\x20\x01\x0a\x88\x60\x04\xc4\x97\x02\xa2\xad\x01\x49\x70\x40\x38\x31\x20\xce\x41\xc5\x0e\x9d\xf5\x33\x96\x00\x20\xd3\x70\x02\x88\x57\xf1\x2e\x6b\x1e\x10\xe9\x9f\x3f\x66\x98\x3f\x19\x34\xb5\x63\x32\x05\x0f\xe2\xd9\x96\xe5\xd9\xb5\xe2\xd9\xd1\xe2\x81\x7b\xd6\x6f\x7f\xaa\xdf\x75\xac\xdf\x31\xaa\x87\x07\xb8\x6e\x2b\xb8\xee\x02\x5d\x77\xf4\x5c\xe1\x3e\x67\xdb\x6a\x67\xbb\xae\x67\x3b\x66\x67\xf0\x10\xda\xed\xf7\xb4\xbb\x96\xb4\x3b\x9a\xb4\x70\x8f\xc2\x6d\xa5\xc2\x5d\x87\xc2\x1d\xc3\x42\xb8\xbf\xd9\xb6\xbc\xd9\xae\xad\xd9\x8e\xae\x99\x35\x72\xc3\x15\xba\xdb\x25\x99\xdb\x15\xde\xf9\x25\xed\xf9\x15\x32\xdd\x25\x21\xdd\x15\x66\xd1\x25\x65\xd1\x15\x9a\xf9\x25\xa9\xf9\x15\xee\xd6\x25\xcd\xd6\x15\x8a\xf4\x25\xb1\xf4\x15\x76\xdf\xe5\x9b\xbe\xab\x91\x7b\x07\x81\xc3\xe9\x9c\x42\xcc\x2b\xe0\xe4\x91\x4f\x97\x76\x8c\xf8\xf7\xc7\x73\x32\xec\x2d\x77\x38\x99\xeb\x34\xf7\xc6\x78\xdd\xc6\xb0\xcb\x46\xaf\xb8\x7f\xc7\xd0\xa8\x7b\x4d\xaa\x47\xa4\xff\x67\xbb\xe4\xde\x4a\x85\x6f\x09\xae\xa7\x96\x89\xe6\x8e\x9d\xa5\x74\xb4\x7e\x71\xe1\x59\x14\xff\x0c\x31\xf8\x12\x41\xdb\x3b\x28\xf8\x74\x7e\xf7\xe0\xbc\x7a\x27\x56\x1f\x2b\xd6\x72\x27\xde\x5b\xab\x7f\xfe\x06\x88\x3e\x8c\xf3\x84\xf4\x16\x2b\x30\xaa\x67\xc0\xcc\xf2\x5f\xfc\xbd\xf2\xff\x17\xe7\x69\xe6\xed\xa7\xc0\xf2\x9e\x39\x33\x87\x86\x16\xfd\xd5\x7f\x91\x23\x30\xb3\x67\xdc\xcc\xb6\xa1\x49\x7f\xa5\xe6\x44\xf7\x3f\xb8\x6a\xe6\x52\xd1\xa6\xbd\x56\x75\xba\xe0\xe3\x28\xde\x5a\xb0\xaa\x66\x5d\x71\x61\x96\xd8\x33\x6c\x66\xdd\xd0\xb8\x0c\x73\x3a\x11\xba\xa5\x0a\xac\xeb\x59\x32\x73\x6a\x68\x5d\x5e\x75\x3a\x6d\xbd\x35\xfa\x0f\x6e\xfd\x5f\x15\x0a\x03\x9d\x95\x3e\x1e\x49\x41\xe9\xb6\x06\xea\xd6\x57\x9f\xcf\x03\xeb\xc4\xbb\x15\xaf\xe9\x9e\x15\x11\xb3\xa1\xff\x7d\x6c\x28\xde\xcd\x06\x7b\xfd\xbf\x51\xd1\x56\x81\x38\x92\x7e\x48\x7e\x29\xfd\x6f\x02\xf1\xfd\x7c\xed\x18\x5f\x1c\x1b\x21\xf9\x82\x3c\x61\x2a\x20\xd3\x81\x8c\x88\x82\x20\x27\x22\x29\x43\x5e\x6b\x18\x34\x22\x23\x27\x19\x36\x2a\xa0\x73\x1a\x30\x40\x08\x0c\x95\x21\x24\x5a\xff\x4c\xc2\x0c\x69\x20\xe8\x9c\x26\x06\x86\x10\x12\xce\x7f\xbd\xb1\x5a\x07\x06\xf5\x48\x48\xff\x27\x00\x00\xff\xff\x5c\xa3\xc1\xce\x18\x5b\x00\x00") +var _webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x64\x93\x63\x6c\x26\x6e\xd0\xee\x9f\xda\xb6\xb1\xb5\xb7\xb6\x6d\xdb\xee\xb6\xdd\xda\x76\xb7\xb6\x6d\xdb\xb6\x6d\xdb\xd6\x53\xe3\xe4\xff\xbe\x27\xe7\xcb\xb9\x93\x5f\xae\xdc\x99\xc9\x64\xe6\x9a\x8c\x9b\x82\xb8\x38\x00\x04\x00\x00\x00\x74\xb0\x01\x28\xff\x69\xbe\xe0\xff\xfe\xff\xff\x27\x2e\xae\x2a\x07\x00\x80\xf8\x03\x00\x00\xfc\xff\xf8\xa3\x36\x70\x27\x21\x2a\x26\x0e\x00\x80\x64\x01\x00\x00\x42\x00\x00\x40\x0c\x02\x0d\x00\x57\x50\x61\x64\x06\x00\x40\xba\x00\x00\x80\x08\x00\x00\x30\xb4\x28\x95\x09\x36\xb1\x35\xb2\x07\x00\x40\x01\x00\x00\x08\x1e\x00\x00\xea\x28\x7d\x07\x93\x61\xe2\xea\x4c\x0c\x00\x80\xfd\x57\x0b\xfa\x7f\xa0\x02\x0b\x33\xb7\xb7\xb0\x05\x00\xc0\xc8\x00\x00\x90\x7a\x00\x00\xd4\x4c\xa5\x89\xb1\xd4\xc2\xc8\xc9\x1e\x00\x00\x5f\xfb\x7f\x79\x00\x00\xb2\x85\x8d\x87\x39\x00\x00\xbe\x07\x00\xc8\xc3\x03\x00\xff\x78\x09\x09\x59\x48\x2c\xcd\x8c\x4c\x01\x00\xe5\x2b\x00\x00\xc0\x0a\x00\x00\xd8\x41\x8d\x35\xbf\x2d\x2d\xcd\x8c\x00\x00\x15\xe2\xff\xdb\x33\x19\x2c\x33\x38\x92\xa5\xad\xb3\x3b\x00\xa0\xc2\x0b\x00\x80\xa0\x03\x00\xa0\x4f\xfd\xfd\x28\x31\x36\x76\x26\x46\x00\x80\xaa\x22\x00\x00\x52\x09\x00\x80\xb4\xb1\xc6\xaa\xcb\xdb\x1a\xb9\xdb\x03\x00\x6a\x9f\xff\xcd\xf5\x1f\xa0\xe0\x20\x79\x7f\x8d\x6c\xcd\x00\x00\x75\x7c\x00\x00\x24\x10\x00\x00\xf3\x5e\xaa\x4d\xbf\xb6\xb7\x73\x72\x06\x00\x34\xf2\x00\x00\x30\x41\x00\x00\x3a\xb8\x5d\xbc\xc4\xca\xde\xd1\xcc\x1e\x00\xd0\xde\x03\x00\x00\x0c\xff\x51\xf7\x40\x8b\xee\x66\x66\x6c\x0e\x00\xe8\x20\x03\x00\x00\xc8\xff\xd0\xac\x55\x3e\xf9\xcf\x90\xff\xbc\x9d\xe2\x2b\x98\xfd\x4f\x67\xe1\x31\x1f\xfe\x57\x61\x18\xdc\x37\x4c\x0c\x4d\x0d\x0d\xf7\xc0\x8c\x61\x20\x91\x0d\x8d\x0d\xc1\x07\x74\x04\xa7\x40\x4f\x7e\x03\x00\x08\x65\x20\x08\x00\xc0\x7f\x71\x73\x2b\xd3\xac\xbe\xbe\x89\xbe\x81\xa9\x41\xe7\x80\x80\x00\x12\x58\x61\x16\x06\x23\x26\xe3\x0d\x90\x23\xb0\xe2\xba\x20\xc5\x5b\x7b\x01\x48\x28\xc8\x1d\x09\xf8\x29\xa8\x6f\x38\xc0\xb2\x14\xd3\x12\x20\x04\x27\x3e\x89\x8a\x89\x09\x14\x00\x67\x04\xb3\x02\x70\xdf\x98\x8e\x17\x90\x19\x34\x44\x1e\xb9\xb5\xdd\x90\x8c\x58\x50\x14\xad\x0a\x77\x83\xd6\xae\x08\xd2\xeb\x1c\x16\xbb\x26\x06\xcf\xe2\x6e\xe6\x44\x87\x23\x88\x48\xdc\xee\x70\xbd\x24\x1d\x9e\x46\xda\x3b\x4b\xb5\x82\x74\x8a\x25\xc8\xca\x5a\x12\x0b\x7e\xcd\xf0\x17\xd1\xc3\xc7\xf7\xde\xfb\xee\xde\xfa\x42\xbc\x21\x27\x0d\x63\xde\x24\x33\xe1\x4b\xef\xa9\x96\xd5\x3e\x95\xb3\x34\x91\x04\xc1\x18\x6b\x5d\x87\x85\xb9\x5e\xac\x46\x3f\x16\xdc\x70\x6c\xd5\xdb\x79\x5b\x63\x53\xab\xd5\x56\x96\xe0\xab\xb6\x94\xc3\xdb\x58\x4a\x71\x6d\x2a\x15\x21\xb8\x44\x27\xa4\x29\xcb\x0f\xf8\xc5\x3a\x2f\x8c\x24\x12\xe5\x10\x9d\x29\x21\x9d\x50\xab\x47\xed\x30\x8b\x7a\x0e\x35\x6f\x29\xe4\x83\x51\x6d\x9d\x97\x4f\x9e\x73\x29\x28\xc1\x1d\x10\x80\x24\x44\x00\x22\x8f\x5c\x10\x04\x22\x9e\x66\x98\x81\x2a\xf7\x90\x32\x95\x48\x75\x7e\xa1\xcc\x1b\x7b\x7b\x18\x09\x45\xb9\x11\xbe\x62\x5e\xac\xa5\x44\xd3\xc0\x60\xa6\x85\xa9\x11\xbe\xfb\x96\x6c\xf0\x9a\x9e\x8b\xed\x3d\x9c\xba\x75\xca\xe0\xd6\x36\x4d\xcf\x7f\xa8\xc2\x7f\x22\x82\xd8\x52\x70\x85\xeb\x47\x7b\xb8\xc0\xb1\x72\x54\x35\x49\xcf\x6e\x6a\x10\x4f\x6d\x90\xe7\x47\xef\x76\x6f\x04\xe4\x50\xc9\x8d\x0d\xb2\x4c\xf9\x6f\x0d\xb1\x00\x2a\xd0\x57\xf7\x0d\x3d\xa5\x4e\x79\x1d\x21\xe4\x6d\x04\x24\xb0\x80\xa1\x35\x62\xae\x0d\xf4\xc6\xf4\xb8\x11\xaf\x7c\x08\x98\xa1\xe5\x68\x63\x53\x9e\x90\x63\x68\x2b\x0e\xc7\xf8\x48\x07\x10\x22\xc1\x00\x51\x84\x8d\x5a\x9c\xbc\xfc\x22\xc9\x4c\x48\x12\x2c\x49\x6f\x61\x7e\x12\x54\x16\xeb\xf0\x02\x56\x1e\x9e\x46\xa7\x99\x74\x16\x99\x89\xf8\x0a\xb7\x73\xeb\x59\x95\x53\xb2\xb8\x81\x6d\xc8\x69\xf6\x2f\x79\xc9\xe6\x46\xc0\x4b\xd1\xe5\x65\x74\x54\x53\x10\x94\xb6\x8d\xf9\xd3\x84\xcb\xc7\x37\x1c\x64\xe6\x7c\x12\xcf\x1f\xc0\x31\x9f\x1d\x35\x12\x8e\x1c\x4f\x80\x76\x53\xe9\xf7\xfc\x27\x6c\xe8\xc7\x27\xd1\x23\x0f\x76\x13\xeb\xe2\xd3\x12\x37\xcc\x39\x09\xf8\x49\xa6\x83\x4c\xd0\x2d\xce\x74\xc7\x24\xd2\x7b\xe0\xf2\xbe\x31\x13\x53\x51\x5a\xc9\x01\x83\x40\x89\xf2\x77\x2b\xeb\xe9\x9f\xc9\xba\xe6\xf8\xf9\xae\x20\x16\x94\xb7\x71\x56\x41\x15\x6b\x5b\xf0\x8c\xef\x25\x92\xe5\x47\x07\x74\x99\xb8\xc9\x92\x7a\xf6\xb4\xb4\x86\x6f\x32\xb4\xfe\x90\x71\x67\x35\x95\xe6\xa9\xd7\x8d\x7e\xbd\x86\xc6\x33\xc3\x20\x9a\xe9\x00\xa8\xb5\x41\x75\x0f\x78\x42\x44\x24\x0a\xf4\x85\x56\xb2\x09\x3a\x04\x94\x67\xe3\xca\x21\x68\x94\x44\x7c\x58\xae\xe3\xad\xf1\xef\x22\xc1\x37\x49\xd4\x91\x2e\x29\x69\x9e\xc3\xd0\x66\xc8\x91\xf8\xd5\xbe\x3c\x76\x85\xc6\x1f\xde\x4c\x39\x5b\x3b\x82\x81\x57\x2d\xfc\x7e\xb7\x5e\x1c\x19\xee\xd7\xb1\xd0\x0d\x6c\x14\x63\x1e\x63\x6a\x7f\x18\x51\x61\x71\xb5\xb7\x50\xdc\xd9\x6e\x3a\xc8\x23\xe5\x8f\x59\xc1\x24\xff\xe3\xfb\x58\xbf\x6c\xe8\xa6\x9b\x35\x51\xde\xd4\x66\x17\xc4\xdf\xea\xd0\x9e\xbe\x9b\x5b\x0f\x93\x11\x9d\xea\xed\x33\x91\xc2\x6e\x76\x15\x7f\xca\x16\xa8\xa7\x3f\xf4\x67\x7a\x46\xc1\x72\x08\xe1\x06\x85\x4c\xfa\x33\x67\x3f\xbe\xa5\x03\xde\x79\xe9\x6a\x58\x2d\x11\xc1\x45\x3c\x39\x3c\x7f\x0a\x9a\x2f\xc2\x2b\xbb\xb0\xf8\x1b\x28\x17\x7b\xeb\xb5\x01\xff\x73\x55\x20\x3f\x3f\x00\x24\xf7\x8d\xee\x6e\x18\x43\xbc\xe3\x64\x00\xef\xee\x94\x64\xa1\x0e\xae\x54\x61\xbc\xa9\x4c\x03\x99\xcc\x03\xf5\x70\x82\xd9\xf0\x7d\xfc\xde\x96\xdb\xd8\x74\xb6\xbf\xbf\x30\xe7\x00\x46\x0d\x32\x71\x88\x63\x13\x4c\xa8\x30\x15\x02\x3d\x35\x5d\x9c\x63\x4c\x92\xe2\xc6\xdf\x35\xdb\xf3\x81\x88\x96\x0b\x9c\x05\xe1\x56\xba\x6e\x4d\xed\x18\x5b\x92\xce\x6d\x8a\xfb\xbb\xde\x97\x69\xc9\x94\x6b\xf0\x89\x9b\x9f\x1f\x07\xb2\x69\xf2\x69\xaf\x5b\xaf\xdd\x8f\x1d\x3e\xf8\xc9\xa6\xdf\xf0\x6f\xf0\xab\x03\xf6\x51\x7d\x45\x32\xc1\xe3\xf0\x29\x10\x39\x3e\x8c\x3a\xcc\xb8\xdf\xb6\x75\x53\xf5\x75\xe3\x49\x9c\xbc\x36\x7d\x83\x66\xfd\x63\x04\x78\x74\x68\xbc\x39\x68\x85\xc6\xa4\x94\x23\x9b\x63\x74\xc0\x6b\x81\x9f\x74\x6b\xae\x67\x73\xbc\x0f\xb4\x50\x26\xb1\x92\x31\xc6\xfd\x54\x26\xe6\xc5\x09\x2a\x59\xf1\xfa\x53\x74\x65\xb5\x2a\xad\x82\x57\x96\x88\xd3\x38\xe3\x31\x9a\x9b\x0a\x52\x53\x19\x90\x85\x71\xd9\xcb\xfb\xa3\xc2\xf2\x40\xba\x93\xa1\x40\x3a\xd1\xe2\x32\xba\xa2\xa1\x36\xaa\x22\x58\xb1\x01\xbe\xde\xc3\x37\xd8\x2e\xe8\xd2\x98\x65\x76\x24\x05\xee\xbc\x98\xf9\x49\x00\x02\xe4\xf7\xfc\x87\x76\xba\x98\xec\xfa\x00\x53\xb6\xbb\x53\xc0\xce\x56\x1c\x3d\xda\xc8\x42\xbb\x1d\xe6\xfe\x54\xb6\x68\xbd\x19\xfa\x24\x49\xc8\x34\xcd\x49\xc5\x80\xc5\xa4\x39\x5c\x0e\x33\xdc\xc9\x4c\xc3\x70\x54\x26\xe6\xc8\x96\x56\x83\xca\x19\x28\x19\xcd\xca\xf7\x18\xd5\x39\x69\xe1\x85\x39\x70\xef\x35\xa5\x23\x3d\x4a\x39\x0b\xe1\x13\xeb\xd5\x22\x0d\xb4\x31\x44\xa9\x01\xa7\xb8\x5a\xfb\xef\xe4\x81\x42\x73\xf1\x34\x7a\x0c\x55\xc8\xaf\x04\x35\x78\x9c\x62\xae\x52\xec\x4a\x69\xa6\x4a\x49\x9c\x61\x6d\x7a\x19\xf5\x2e\x45\x47\x12\xd3\x45\x16\xe9\x00\x61\xcc\xca\x14\xe1\x78\x3a\xef\x0e\xe9\xed\x22\x15\x07\xb3\x64\x67\x35\x07\x73\x99\xaf\xa2\x46\x74\xda\xf0\xbf\x62\x67\x1a\x1d\xc3\x0d\xcd\xe4\x9b\xbb\xbb\xb1\xaa\x74\x47\x9e\x70\xf7\xc2\x35\xb5\x73\xa9\x93\x13\xfc\x5c\x3b\x99\xe6\x87\xbf\xa1\x68\x45\x43\xca\x94\x02\x5b\x99\x72\x27\x11\x1b\xdf\xb2\x94\x98\x46\x4c\xca\x59\xa5\x30\x22\x53\x71\xf4\x19\x77\x52\x34\xbd\x97\xbf\x91\xd8\x91\x70\x73\x27\xe9\xb5\xd0\x9f\x5f\x66\xd3\xcf\x49\x56\xb1\x96\x83\xc4\x1b\xe0\x76\xa6\x17\xdf\x2d\x4e\x8b\xe6\x0a\xc8\xdb\x2d\x48\xf1\x38\xf8\xf4\xbb\x3b\x5c\x86\xc4\x11\xb1\x58\xde\x0e\x0e\x4b\x6f\xdc\xf7\x3f\xe1\xe0\x2e\x4b\x21\xba\xf4\x4a\x11\xb1\x16\x7d\x86\xc5\x34\x62\x9c\xb9\x83\x16\x57\x8e\x73\x3b\xee\x2a\x6a\x4b\x72\xbb\x42\xfb\x7f\x97\xc7\x29\xf9\xc2\x78\x01\x5e\x27\xe5\x3c\x02\x2a\x51\x43\x66\x93\xe0\x37\xc6\xc0\x94\x68\xb7\xe8\x47\x5b\x48\xb9\x70\xc4\x89\x06\x37\x7a\x09\xd7\x7e\xce\xc0\x16\x86\x7b\xc7\x72\x87\x24\x65\x83\x95\xda\xa2\x0e\xca\x06\xd2\x50\x86\x53\xa9\xc7\xef\xd0\xc8\x59\x28\x3b\x64\xd4\xeb\x7b\xfd\xb4\x91\x4e\x81\xc7\x05\xeb\x3d\x3b\xa6\xbc\x14\x45\x52\xbc\xe6\x49\x5d\x0d\x41\x9c\x0c\x3a\x33\x3d\x7e\xd3\x68\x0a\xba\x89\x37\x17\x9e\x37\x09\x8c\x5f\x09\x04\x5a\x22\x3b\x06\x0e\x6f\x8b\x44\xbc\xc7\x6b\xee\x40\x46\x42\xe8\x35\xfc\xcc\x38\xdb\x3d\xb5\x23\x8c\x3d\x02\xc2\x93\x80\x90\x7a\x16\xd9\x9c\x31\x88\x04\xe4\x69\x48\x6c\x20\xac\xa1\x83\x33\xc4\xb9\x32\x52\xc3\xe5\x3a\x90\xe9\x5d\x4f\x8c\xb7\xec\x6f\xcd\x5c\xf7\xa0\x49\x6c\x43\x69\x39\xfb\x02\x5b\x0b\x96\x6f\xd8\xc7\xd9\x60\x2c\xff\x91\xc1\x9e\x81\xa1\xe6\xc8\x58\x1b\xb6\xb8\x24\xc0\x0b\xcd\x1d\xe3\xdd\x93\x85\x0c\x07\xed\xca\xf4\xbc\x37\xd7\x33\x9c\xef\x76\x6e\x43\xe4\x74\xed\x1a\x89\x53\x27\xfb\x79\xfa\xc7\xb7\xc1\x75\xcf\xd9\x6b\xe2\xde\x7f\x5b\xbf\x10\xa2\xaf\x88\xc9\x9c\x62\x34\x29\x7a\x6c\x56\x58\x6d\xdf\x10\x57\x8b\x39\xe2\x1c\x39\xae\x61\x2a\x3d\xce\x89\x13\x8c\xa9\xe6\xdf\xa0\x5c\x22\x0a\xf6\xaa\xf4\x3f\x5a\xf1\x7f\xd0\x8b\xd4\x44\x18\x1e\x10\x01\x3c\xcf\x14\x71\xca\x38\x5e\x3e\x57\x40\xe3\x78\xb9\x83\x5b\x1e\x6c\xb4\xa9\x54\x8b\x74\xcc\x50\xa9\x50\x29\xa3\xb4\xa3\xe1\xe0\x34\x74\x7c\xd1\x95\x17\xcf\xc4\xc0\x7e\x21\x32\x4e\xf3\x23\x1d\x3b\x03\x5f\x54\x62\x01\xeb\xf9\x07\x97\xbf\x2f\xd7\x93\xa7\xd5\x8e\x9a\x23\xba\x98\x50\x57\x7e\xdf\x09\xcf\x79\x4d\xf9\x41\x7c\x4e\x2f\x6b\x06\x7a\x8e\x77\x0f\x3d\xc2\x5e\x82\xfc\xed\x7d\x7a\xe6\xf5\x8e\xbb\xc7\xbc\x29\xf5\xc7\x05\x02\x7d\x00\xb6\xa3\xd8\x9d\xe3\x9f\x10\x3f\xff\x7b\x26\xb9\x29\x6a\xd9\xf5\x00\xec\x76\x96\x08\x5d\xb5\x0c\xd6\x11\xcb\x19\xaa\xa3\x38\x52\x35\x8c\xf1\x90\x06\xa1\xdf\x7d\xf8\x00\x57\x24\xc9\x02\x2f\xa2\xd1\x8e\xad\x6a\xc7\x5e\x63\xe4\x80\xc7\xf4\x84\x4d\x10\x95\xbe\xad\xda\xb1\x82\x83\x0b\x8d\x8c\xad\x0f\xe8\x5f\xd8\x7b\x9f\x4d\x84\xad\x70\xc8\x09\x5d\xa0\xf7\x1e\xd9\x43\xd8\x32\x28\x86\x6e\x2b\xc7\xd6\xe7\x4e\xe4\x3a\xa6\x0b\xf0\x55\x2b\x5d\x51\xce\x30\x03\xc3\x14\xb5\x52\x7c\xee\xc0\x99\x09\x0b\x03\xb2\x9b\x5b\x5f\x0d\x9f\xdc\xae\xb0\xd3\xa5\x5d\x0d\x57\xfd\x6a\xc2\xe0\x44\x2c\x38\xd0\x73\xed\x11\xfd\xa2\xef\xb7\xe1\xdb\x01\x0c\x5c\x3f\xcc\x74\xe0\x67\xe3\x27\x3e\x05\x00\x5f\x2a\xc9\x50\xdc\x08\x91\x44\x81\xbb\xa2\x98\x22\xba\xd8\x2b\x6c\x9d\x29\x7e\x3f\x3a\xb9\x0b\x51\x5e\xf2\x71\xf8\xbc\x54\xdf\x07\xd8\xac\xb7\x58\xd3\x7b\x52\x01\xf4\x69\xac\xed\x36\xbb\xbd\xbb\x3b\x6c\xd5\xe5\xc9\x74\x9a\xde\x68\xa8\xc8\x34\xe0\xb4\xb8\x01\xed\xf1\x5a\x4e\xd1\xfa\x5a\xdd\x71\x36\xf1\x98\xce\x78\x88\xe6\xd0\x83\x6b\x7a\x3f\xcb\x9c\xf2\xfe\xe6\xc7\xf6\x82\x33\x01\x4b\x89\xf0\x74\xcc\xa1\xba\x4f\xfb\x17\x46\x4b\x47\xfc\xe3\x8b\xe4\x85\xf4\x56\xdc\xf1\xf5\x17\x48\xe1\xf2\xc1\xf7\xd2\xa0\x0b\x87\x21\xe6\xa7\x6c\x81\x1a\xfb\x4e\xf8\x66\xf1\x5a\xe4\xbd\xf6\x8a\xc7\x3f\x32\x4b\xe5\x8a\xdc\xab\x0a\x7f\xdf\x27\xea\x58\x72\x54\x4a\xac\xf0\xea\x12\x4b\x87\x7e\xa4\x4a\x92\x83\x5a\xb2\x63\xf1\xdc\x4b\xf7\x39\xf3\x82\xe9\xf3\x92\x5d\x3c\x19\xe3\x24\xf1\x3c\x91\xdd\xfb\x35\x10\x23\xe0\xbd\x7f\x2a\x90\xdb\xd7\x49\x98\x36\xea\x91\x10\x4b\x1e\x26\x69\x67\xb0\x82\x45\xaa\x6f\xa2\x4b\x8a\x8a\x23\x37\xa5\xfa\x2d\x91\x9e\x4e\x5c\xe8\x86\xa2\xdc\xc5\xa8\xb1\x5e\x41\xa5\x43\xdb\xfe\x11\x71\x21\xe1\xf6\x9b\xf3\xe7\xec\x25\x75\xce\x65\x7c\x82\x73\xdf\xcd\x74\x2f\x03\x1a\xcd\x42\x59\x96\x32\x31\x00\x27\x9f\xc9\x0c\x92\x2b\xbc\x36\xe5\x93\x9e\x98\x2a\x24\x0a\x75\x92\xba\xa4\x62\x21\x43\xad\x0a\x87\x3c\x5d\xc5\x46\xad\x98\xbe\x92\x93\x45\x5a\x42\xde\x41\x2d\xb9\xa6\xea\x60\x9c\xea\x3c\xeb\xa0\x9a\x66\xb1\x21\xdc\x8f\x33\x53\xc4\x11\xb9\x38\x35\xe6\x97\xc1\xb6\x45\x43\x7b\x57\xb5\xa3\xfa\xbe\x1e\x55\xc1\x73\xfa\x75\x41\x70\xe7\x77\xc5\x02\xfc\x2d\xae\x46\x68\x83\xb4\x8c\x8b\x81\xb5\xce\x2a\x2b\xef\xf2\x01\x8d\xd8\xfe\x84\xa8\x97\x1b\xd2\x8d\xe3\xb2\x32\x21\x44\xe2\x34\x6c\x20\xf5\xda\xd2\x6e\x2d\xe7\xb0\xb2\x13\x34\x84\x2a\x92\x1e\xe3\xe3\xfd\x67\x11\x96\xb4\x50\x5a\xb1\x92\x63\x96\x53\x97\xa3\xb3\x5f\xfd\x37\xd2\xd0\xf4\x9a\xfe\x3b\x37\x93\x6f\x9c\xc1\x82\x3b\xcc\x84\x32\xb2\xfc\x68\xcb\x4a\x2c\x53\x87\xf7\xe2\x8a\x38\xe5\x1c\xd3\xe0\x94\xa9\x78\x5a\x03\x41\xf9\x6a\x32\x58\x53\xbc\x69\x7e\x14\xb3\xa4\xd4\x22\x5c\xd7\xef\xc8\x85\x41\xb1\x55\x09\x81\xae\x4e\x69\x7a\x7f\x4e\xe4\xea\xee\x0a\xd9\xd9\x14\xf9\x02\x6f\xb0\x87\x7c\x24\xb2\x1a\x05\x54\x23\xd9\xc2\x7a\x53\x7f\xd9\x2d\xca\x5c\x7b\x7e\x70\x5d\xe2\x10\xe1\x84\x0e\x9c\xdd\xd1\xd6\x75\x20\x25\x77\xa2\x2d\xe7\x94\xfe\x56\x1d\xcb\xf3\xc0\xbf\x19\x26\x62\x3e\xca\xc3\x9e\x2c\xae\xc8\xf6\xa4\xf6\xf8\x76\xb8\x95\x3f\xd2\x21\x0b\x7b\x62\x5c\x45\x22\xe5\xad\x69\x62\xd2\x49\x29\x36\xd3\x24\xf4\xd2\x4e\x35\xc1\x5f\x37\xb2\xe7\x4f\x8c\x7d\xbe\xd6\xcd\x4d\xef\x29\x74\x8a\x16\xe8\xe5\x2a\x8e\x24\x8b\xe9\x01\x6f\x1b\x0d\x49\xc2\x8b\x82\xca\xd3\xda\x20\x9b\x5f\xcb\x0b\x81\xc0\xd7\x73\x1a\x5b\x7f\x93\x4c\xbb\xc0\x6b\xb8\x8a\x62\xeb\xbf\xb3\xe6\x32\x6e\x2a\x13\xfb\xba\xd8\xc4\x1b\x36\x67\x64\xf5\x45\x69\x3f\xaf\x3e\x09\x3f\x3f\xcf\xef\x71\xaa\x42\x81\xd9\x7b\xd1\x51\xdf\xbb\x33\x16\x97\x5e\x47\xf3\x87\xb6\x84\x1f\xb5\x3f\x97\x10\x75\x33\x2b\x47\x62\x87\xd8\xb5\xcb\x1e\xde\x71\x0f\xee\x8c\xd9\xdf\x32\x8e\xd2\x4e\x6a\xe9\x41\x85\x15\x59\x31\x26\x15\x55\xa1\x28\xdb\x4c\x46\xa2\xc7\x68\x51\x96\x56\x87\xf7\x12\xb3\x97\x41\xdb\xfc\x9c\x59\xc1\x7a\x85\xac\x6f\xbc\x31\x90\x0f\x7c\xc9\x3e\x4a\xd1\xef\x44\xad\x3f\xe3\x4b\xe6\x48\x7b\x33\x6b\xf8\xde\x02\xdf\xae\xbf\xa6\x47\x7b\xbf\xa8\xa9\x22\x98\x79\x87\x86\x5e\x91\x5e\x11\x47\xfa\x98\xea\x38\x8b\x24\x69\x44\x09\xf7\x1b\xa0\x46\x7b\x9e\x7f\x3d\x34\x78\x72\xaf\xc2\xe9\x08\x8c\x5c\x32\x98\x32\x1c\x9d\xde\x3f\x0a\xca\x1f\xba\x40\xb0\xc4\x4f\x8b\x32\x25\xc2\x49\x29\xfa\x5c\x12\xc3\x24\xec\x09\x01\xe9\xdf\x21\x89\x06\xd1\x5e\x90\x0e\xd8\xea\xd4\xe5\xe6\x10\x94\xa7\x1e\xd1\x9a\xc0\x14\xe1\x0e\xb8\xc8\x55\xd5\x0a\xd6\x1d\x9d\xa0\x97\xb3\x4e\xc8\x2c\x79\xf3\xcd\xb7\xe0\xc5\x04\x7b\x57\x80\x61\x2d\x90\x5f\x24\x30\xa0\xb4\x59\x6a\xa8\x6a\xc5\xe4\x3a\xf2\x64\xf7\x0b\xa2\xf8\x3d\xc9\xb2\x7b\xe6\x0d\x38\x3d\xc9\x65\xd6\x38\xd7\x4c\x0b\x52\x73\xcc\x13\x55\x48\xa2\xae\xbd\x09\xc8\x18\x6e\xbd\xa8\x80\x6a\x11\x57\x08\xbc\x26\xc4\x75\x04\xed\xb0\xca\x5e\x74\xd0\x6b\x13\x22\x93\xb8\x4f\xf7\x1a\x29\x3a\x2f\xb0\xa2\xde\x1f\x34\x67\x24\xc4\x23\x0f\xf9\x09\x29\x07\xea\x9c\x1f\x4d\x3e\x53\xfd\x7a\xd0\x82\x6f\xb4\x26\x14\x20\x7a\x17\x74\xb1\x57\xb4\xab\x41\x49\x53\x24\x93\x05\xbe\x42\xe3\x9f\xf4\x0a\x2d\x31\x97\xe9\x0b\xae\xa5\xaa\x0c\x11\xa2\x42\x1d\xbe\xb0\x0e\x35\xa7\x57\xb4\x66\x5a\xc4\x94\xfa\xd8\x51\xf8\x66\xc8\x87\x9e\x98\xb5\x18\xeb\x65\x0d\x08\x22\x5d\xb3\x0a\x92\x67\x52\x87\x6e\xe8\x70\x25\xbd\xf8\xf8\x37\x28\x41\x3f\xcb\xc0\x65\x5f\x86\xa0\xd0\x42\x88\xb9\xb3\x82\xcb\x04\x45\x7a\xb8\xa5\x34\xb4\xbe\x34\x15\x70\x8d\x71\x48\x6c\x8f\x0a\xb3\x4c\x28\xa4\x8d\xbe\x18\xe1\xc4\x72\x53\x34\xc3\x38\x53\x3f\x27\x7c\x40\x69\x46\x7a\x27\x71\x00\xfb\x25\x84\xe1\x63\xf7\xb8\xea\xce\x29\x24\x42\x74\x74\xb1\x56\x81\x9c\xe1\x92\xdb\x39\x78\x8a\xdf\xf3\xeb\x9b\x4e\x6c\x5c\x63\xac\x0d\xdf\xcf\x7d\x6e\x76\xcb\xc7\xb2\x9b\xc1\xb6\x0f\xee\x9b\x8b\x24\xcd\xc1\x15\xd5\x01\x28\x90\xd7\x0a\xcf\xb7\x4a\xb1\xbd\xc4\xf9\x48\xf2\x3c\x43\x7a\xbf\xde\x08\x98\x3a\x6b\x17\x50\xb9\x67\x6c\x8c\x67\xd0\x68\xb8\x4d\xcf\x0c\x7e\xa4\x5c\x5e\x33\x2a\x6b\x32\xc1\x5b\xc3\x49\xa1\xc3\x20\x81\xae\x21\xbe\x8f\x42\x24\x3a\x00\x2e\xa9\xd9\x2f\xbb\x32\xe7\xa0\x2e\x43\x9a\xcc\x0e\x51\x57\x07\x83\x3d\xda\xdc\x4b\x8a\xfd\x4b\x0f\x03\xfb\x1d\x56\x28\x28\x18\x5f\xdd\xd6\xd2\x23\xa8\xa0\x0e\xf4\x1c\xd3\x34\xe3\x55\xef\x93\xc1\x9c\xdf\x89\xd9\x89\x3d\x48\xb6\xae\xa0\x82\x6e\x86\xca\x47\xb0\x3b\x39\xc9\x13\xae\x62\x02\x54\xc3\x8a\x7a\x0b\x0c\xb3\x49\x4d\xb0\x14\x02\x7e\x43\x51\xa4\xef\x59\x66\xd8\x47\x9e\x7a\x35\xb6\x6a\xee\x82\x01\x82\xd9\x50\x33\x45\x1d\x30\x99\x0a\xae\x68\x98\x34\x7c\xc0\xcf\x90\x91\x11\x69\xf1\xb1\x55\x3c\x93\x18\xb7\xcf\xb7\x03\x7d\x19\x89\xdc\x4f\x89\x65\x4a\x64\x73\xd2\xc0\xb2\xde\x93\x2e\x7a\x43\x5b\x04\xeb\x53\x97\x7e\x3b\x5d\x37\x0e\x4f\x4d\xa6\x22\x4c\x03\x93\x79\x9f\x96\xc8\xc6\x2d\x35\x41\x35\x16\x88\xc2\x8e\x50\x86\x2e\xad\x6f\x42\x87\xc3\xba\x33\xcb\xfd\xb9\x15\x71\xd3\xaf\x83\xb0\xcd\x17\x6a\xaa\x53\x45\x9d\xc8\x5a\xc2\x12\x3a\x2b\x97\xdb\x12\xf8\xc8\x33\x9e\x0a\x1f\xca\x88\x92\x3a\x55\x7d\x86\xfb\x99\x95\xef\x95\xa1\xd4\x39\x10\x77\xcd\xbc\xc5\x1d\xa7\xdf\x0f\x71\x75\xf5\x25\xee\xf8\xdd\xf2\xc0\xfe\x3a\x9b\x83\x6a\xab\x80\xeb\xd5\x01\x9f\x8b\x27\x99\x3b\x05\xb1\x9f\xd4\x6f\x2f\x60\x8d\xe4\x48\xe9\x86\xe0\x33\x33\xb7\x1c\x64\xf0\xf7\x46\x1e\xd7\x89\x20\x74\x76\x7a\x2c\x6b\x0a\x02\x7f\x63\x96\x07\x74\x6b\x3c\x1d\x27\x97\xc5\x74\x61\xe4\xa8\xa9\xef\xdd\x76\x73\x25\xb7\xc1\x16\x6f\x4c\x38\x80\xda\xf7\x09\xa5\x16\xbb\x2b\xef\x25\xd6\x3a\x0f\xe2\x04\xb1\x04\x7f\xb8\x7d\x05\x76\xe5\xbb\x69\x87\x8e\x0e\xa3\x5c\xb6\xfd\xd7\x66\x2a\x98\x4b\x7e\x39\x2c\x0d\x05\x0d\x46\x0c\x03\x67\xce\xb8\x62\x27\xc6\xd4\xc7\x1e\x89\xae\x8b\xb6\x5e\x31\xf8\xcc\x60\xd5\x42\x68\x86\x15\xd7\xbc\x38\x39\x3a\x18\xfc\xf6\x89\xb0\x47\x91\x2c\x18\xfd\xb2\xda\x45\x40\xf5\x4d\xd5\x82\x8e\xda\xd5\xba\xa3\x1d\x92\xfe\xd2\x65\x40\xa4\xa7\x5e\x99\x45\xa0\xa2\x68\x18\xc0\xa5\x60\x8f\x54\xd9\x40\x0a\x37\x05\x0d\xa9\x2c\x7b\x03\xb3\x21\x01\x4a\xbf\xec\xaf\xe7\xd3\x75\xc1\xa2\x30\x2f\xd8\x75\x51\xa5\x8f\xbf\x3b\x9d\x7c\x18\xf0\x4c\x47\x5d\x22\xbe\xd3\x2c\xcf\xc7\x46\xfe\x43\x30\x7e\x02\xfb\x88\x45\x6e\xe3\x8e\xcc\xda\x01\x73\x13\x0a\x72\x63\xdf\x4b\xab\x72\xd0\xe1\x0a\xd5\xb4\xe7\xb9\xbf\xdf\xf5\xb9\x6f\x0d\xff\x19\xa0\x39\x22\xf1\x62\x9d\x99\xd1\x0d\xee\x07\xf9\xef\x87\x6d\x8d\x58\x4f\x76\x5d\x16\xe8\xb2\xe7\x35\x37\x3b\x1d\xa6\xa8\xc1\xa1\xc4\x87\x57\x0e\x2e\x6b\xc0\x9c\x26\x78\x87\xcc\xad\x35\x4d\xa6\xef\xd4\x51\x57\x78\x45\x8f\x01\x24\xfe\xae\x2f\xad\x6b\x8d\xb2\x25\xd8\x8c\x74\x0c\xd6\x8b\xfd\x8c\x01\xbd\xb3\x8d\x43\x43\x14\x37\x35\x96\xc5\x89\x2a\x96\x0f\xd4\x45\x5a\x98\xd1\xa4\xc7\x83\x41\x9d\xb2\x04\xfd\xb7\x37\x6f\x8e\xb6\x2c\x75\x89\x4e\x42\x4a\xcd\x5d\x75\xa4\x61\xba\x64\xc4\xf7\x1c\xb5\xdc\x5f\x43\xa9\x07\xe2\x9b\xb9\x9c\xbf\x31\x32\x03\x78\xe2\xe4\x38\x88\x61\x4e\xb1\x70\xff\xa6\xfe\xa6\x4e\x1b\x24\xdc\x0b\xb8\x86\xdf\xd8\x9b\xa9\x38\x10\x23\xd1\x49\xe9\x76\xc7\xd3\x0a\x74\xb8\xdf\x8b\x53\x19\x44\x26\xae\x1b\x2c\x6b\x97\xd6\x17\xb4\xff\x2c\x00\xe8\x92\x75\xda\x3b\x0e\x76\x49\x14\xd6\x1f\x35\x07\x65\x35\xd8\x23\x22\x4d\x55\x25\x50\x0d\xc6\xa4\xbb\x15\x54\x4f\x26\x75\xc9\xaf\xa1\x61\x77\xc2\x29\x78\xdc\x25\xc5\x87\xb3\xeb\x21\x77\xea\xe8\xb8\xb7\x46\x1e\xeb\x68\x6f\x77\x00\x9e\xf3\x82\xe3\x5e\xf9\x86\xe4\x4e\x90\x5f\x72\xf8\x2e\x3e\x2e\x40\x80\x3e\xbb\x61\xa6\xd7\x61\x44\x15\x0a\x53\x50\xf1\xf7\xd1\x23\x68\x5e\xcf\x75\x16\xe5\x0a\xde\xe1\xa5\xa3\xaa\xc4\xe7\x42\x7f\x68\xeb\x88\xf8\xc6\x98\x20\x19\xe7\xd0\x8f\xd5\xb4\x5b\x1b\x82\xf1\x8d\xe1\x31\x93\x59\x44\x08\x90\xe4\x2f\xdc\x89\xcd\x4d\x8d\x92\x4c\x3a\x9a\x22\x12\xf1\xa1\xfc\xc8\x26\x86\xb9\x14\x62\x22\xb1\xc6\x1b\x05\x92\x09\x9f\xbf\x83\x79\x79\x9e\xd5\x3f\xa0\x6c\xf9\xec\xd8\xf9\xfa\x69\xcf\x04\xb9\x3a\x02\x6b\x20\xc2\xd8\x7a\x91\x2a\x2f\xcf\x36\xf8\xb0\x7e\x9b\xd1\xee\xa8\x74\xe2\xa5\x11\x93\xf1\x30\xd0\x4c\x76\xf9\xb7\x9e\xe0\xc8\x3d\x6d\x06\xc4\x60\xd2\xd0\xca\x80\x22\x25\x44\xb0\x05\x15\x35\x44\x12\x1b\x94\x6b\xc0\x77\x13\x9f\x95\x82\x87\x97\x5d\x8b\x7d\x17\xf5\x04\x3c\xa8\xf8\x80\xb5\xf8\x3e\x5e\x35\x2e\xc5\x42\x91\xa2\x7f\xb9\x27\x93\x46\xb1\xdc\xd1\xae\xbd\xcc\x82\xa2\x33\xa3\x99\xcf\xcc\xb3\x49\x22\x65\x4f\x42\x62\xaf\x41\x13\x68\xd6\x57\x84\x6f\x08\xc3\x4e\x98\x36\x56\x92\xf5\x63\x52\xc5\xd0\xb7\x15\x45\x14\x78\xf5\x66\xbb\x4d\xaa\x72\x58\x62\x26\xdb\xf7\x92\xb6\xbf\x6c\xc2\x13\x1a\x84\xc7\x94\x5f\x05\xb0\xa5\xa6\x4d\xc9\x2a\x1a\x28\x79\x85\xad\xdb\xa4\x15\xcb\xa0\x94\x47\x93\x49\x84\xf0\x49\xcc\x6c\x3c\x8e\xec\x73\x3c\x67\x15\xfb\x64\x7d\x83\x68\x7d\xf5\x43\x5d\xa8\xd0\xba\xaa\xb9\x12\x90\x20\x50\xee\x05\x99\x2d\x97\xf2\xf7\x3d\xd2\x64\xd7\xf4\x35\xa1\x79\xb0\x8f\xd9\x54\xdd\x57\xcd\x14\xc8\x21\xd0\x45\xa4\xf9\x47\x5f\xd6\x3e\x9a\xb1\x18\x83\x7a\xb7\x13\xbd\x2d\x44\xa6\xbd\x8a\x89\x5d\x68\xec\x41\x33\x97\xc6\x1a\x1f\x38\x90\x52\x88\x07\xe4\x7b\xce\xdd\x6b\x25\x58\x07\xfe\xc3\xc7\x52\x18\x4a\x9c\x8c\xc5\x5f\x77\x31\xae\x51\x9d\x5d\xb1\xcf\x97\x1d\x58\xf1\x81\x0d\x57\xe8\x64\x90\xf3\x97\xd0\x55\xad\xb7\x00\x21\xb7\x83\x94\x00\x8d\xb2\x63\x29\x73\xe4\x75\x50\xcc\xa6\x63\xf4\x2c\x90\x63\xd3\x4a\x4b\x2c\x0c\xc1\xc7\xaa\xb6\xa7\xff\x91\x16\x5c\xb1\x6d\xe5\xa6\x49\xa6\x3b\x9f\x50\x67\x8f\xe1\xc3\x27\xee\x15\x1e\x2f\xa6\x30\x3c\x48\x6c\x35\x4c\xe7\xe3\x0d\x08\x45\x3d\xb4\x38\x61\x9b\xf2\x2a\x32\xf2\x5f\x40\x36\xac\x5b\xa6\xc6\x02\x9f\xf8\xc7\x4e\x0c\x6f\xd7\x62\xcf\xef\xe7\x83\xab\x22\xfc\x76\x44\x1d\xfc\x70\xf6\x2e\x09\x37\x65\x33\xf8\x6f\xec\x89\x24\x5d\x68\x83\x32\xf1\xdf\x55\x18\x8a\xdf\x85\x14\xa7\x1f\x65\x7b\x27\x68\x96\xce\x62\x7a\x46\xba\x1a\x7c\x47\xba\x91\xcd\x70\x14\x2a\x80\x53\x04\x5d\xde\x7f\xf3\x9c\x46\x8b\x55\x1f\x01\x2c\x0b\x33\x78\xb2\xcf\xab\xcb\x11\x10\xb6\x46\x97\x42\x46\x54\xf3\x46\x1a\xc3\x6b\x34\xa5\x0f\x83\x04\x25\x1a\x02\x7a\x8d\xd0\x78\x26\x18\xe3\x15\x4d\x2f\x85\xc5\x9d\x1e\x52\x46\xd5\x17\x71\x43\xdc\x50\x43\x76\xcd\x5d\xe0\x8b\xc1\x5a\xb0\xc9\xd8\x1e\x16\xb5\xf3\x95\x9c\x2a\xf4\xcb\xd8\xef\xa9\xa6\x04\xd3\x16\x44\x0d\x86\xb5\x22\xf1\x7e\xca\xa5\xf4\xda\x9c\x95\x20\x36\xff\xae\x23\x8d\xca\x89\x40\x05\xd3\x81\xd7\xc8\xf7\xad\xc2\xcc\x00\xfc\xb4\x8d\x11\xda\x69\x2b\xe6\xb1\xc6\x86\x63\x0f\x84\x27\x88\xe1\x21\xed\x24\xcb\x3f\x60\x15\x9b\x43\x93\x7e\x18\x04\x07\xab\xe2\x77\x41\x27\x11\x88\xaf\x3e\x93\x26\x7d\x5e\xa6\x28\xca\x77\x5e\xa7\x29\x3b\x89\x76\x0f\x34\x1d\xa3\x12\x0d\xe1\x94\x7b\x36\x48\xf6\x59\xc6\x24\x62\x1d\x75\xf8\xbc\x30\xea\xf6\x48\x16\x36\x86\x60\xfc\xf9\xe4\xa9\xa1\xfc\x88\x09\xf5\xd0\xdf\xc9\x49\x83\x76\x9d\xed\xcf\xe1\xe9\xd6\xe4\x18\x3a\xb2\xc2\x27\xa7\x54\xd7\x34\xbd\xd8\x88\x5d\x17\x77\xd7\xe1\x78\x54\x06\xb9\x57\xa9\xd8\xdf\x75\x17\x18\x2e\x39\x7c\x39\x44\xd6\x10\x85\x69\xcc\x11\x02\x61\xa4\x0c\x69\xc3\x79\xa2\x4e\x88\x50\xf4\x49\x62\x56\xab\x09\x22\xbf\xd1\xa6\x49\x6b\x9b\x4f\x14\xdd\x14\x4c\xcb\xff\x99\x70\xab\xb6\xb4\x77\x95\xd9\x68\x56\x9a\x85\x6d\x42\xe9\x94\x31\xf9\x37\x0d\x26\x23\xa4\x7e\x80\x63\xe3\x96\x87\xa6\x42\x61\x7e\x92\xa0\x26\xa3\x7a\x5c\x17\xbf\x45\xb5\xe9\xc4\x74\x6b\x39\xa1\xe6\xc3\xe3\xfb\xe5\xaf\xc2\x6c\x3f\x6c\x3c\xd4\x7e\x11\x6d\xea\x54\xdd\xb2\x8f\x59\x2f\x85\x09\xea\x4f\x72\xba\xd2\x67\xc4\x2c\xc2\xfe\x72\x85\x16\x2f\xb6\x81\x3e\xc8\xc3\x51\x54\x86\xd2\x6b\x5b\xa2\x46\x04\xb4\xc1\x20\x71\x0b\x86\x09\x41\x84\x53\x37\xef\x55\x8c\xf0\xc0\x0b\x71\xb3\xcc\x95\xb2\x32\xfd\x65\x3a\xc5\xed\x92\xca\xdb\xb2\xbc\xe0\xa2\x22\xd2\x51\x4f\xa8\x49\xd6\x29\x23\x75\xb4\xa1\xb5\x64\x20\x1e\x2e\xdf\xd6\x36\x5d\x6d\x45\x52\x55\xff\xbb\xde\xd0\x00\x0a\x3b\xa5\xcf\x39\xfb\x6d\x84\xb5\x3c\xe4\xa2\x17\xf0\x1e\xc0\x99\x36\xd9\xd0\x52\x63\x44\x06\xd2\xfe\xaf\x72\xc1\x1d\x34\x0e\xf9\xa8\xc6\x22\x2d\x78\xdd\x48\x19\x99\x80\x6c\x1a\x07\x42\xd0\xeb\xae\xc5\xba\x45\xdf\xd7\xa8\xbe\xfb\xfa\x5d\x47\xdc\xae\xf3\x41\x95\x71\x21\x36\x0a\x51\xbe\x51\x22\x13\x7e\x52\x81\x22\x4c\x21\xc7\xda\xca\xba\x71\x8a\x0f\x67\x7c\xe0\xdc\xf1\xc2\x77\xef\x82\xf0\x84\xec\xc4\xbb\x24\x4b\xe8\x02\xfe\x34\xc9\x54\xed\xbc\xf0\x10\x1f\x94\x39\xfa\xac\x05\xbe\xc6\xf8\x77\x9e\x9c\x85\xda\xb9\x73\x72\x43\x1d\x9b\xa2\x1a\xa4\x2e\x39\x96\x1a\x9e\x74\x63\x40\x73\x63\xb6\xe0\xaf\x4c\xb6\x25\xd9\x62\x29\x66\xb0\x46\x15\x7b\x8f\x2e\x7c\xc7\x56\x84\x15\x6e\xca\x09\xae\xfa\xbf\xc3\xf0\x89\x29\x4c\xf1\x23\x2f\x8b\x36\x53\xfd\xd2\x84\x4a\x4e\x32\xc4\x42\xf3\xf4\xf1\x69\x4d\xb7\x75\x81\xc2\xad\x87\x2f\x43\xaf\x1f\x04\xce\x8f\x59\x12\x3b\xee\x1f\xd1\x12\x33\xe5\x6b\xb2\x5e\xb2\xec\xef\x23\x35\x44\xbb\x14\x84\x71\x09\xea\x0b\x2e\x87\x0a\x8c\xbd\x9f\xa5\x1c\x15\x50\xcd\xdd\xb4\xfb\x70\x77\xdd\xb4\xa3\xfa\xe4\x02\x43\x70\xcb\xfa\xde\x76\x6b\x2b\xc7\xee\x21\x06\xb3\xdd\xd3\xd8\x82\x16\x26\x43\x65\x42\xac\xa2\x52\x20\x87\xbf\x98\x35\x21\xa8\x99\x9c\xd8\xca\x67\x69\x78\x5c\xa7\x6a\xbf\x28\x0b\x89\x1b\x69\x2f\x12\x11\xc2\xfe\xf4\x0e\xdb\x96\xf4\x1e\x9b\x6e\xc1\xab\xa1\xe1\x87\x29\xf6\xfc\xf3\x44\x06\xf7\xe3\x53\x02\xe0\x89\x48\x06\xa4\x55\xff\x3c\x07\xb4\xa7\xea\x73\x7a\x55\x3f\x57\x7e\xbd\x6d\xe6\x7c\xbd\x57\xfb\xa4\x6e\x79\x28\xd8\x7e\xf6\x4c\xe7\x4e\x7f\x25\x7f\x9b\x87\xe3\x14\x39\xd0\x3e\xa1\x86\x01\x77\xc5\x77\xe3\x24\xd0\x78\x51\xb0\x09\x90\xaa\xd8\x3f\x74\xf9\xb5\x74\x76\x60\x82\x60\xb3\x06\x0b\xef\x9d\xfc\x45\xd1\x8c\x03\x97\x6e\x91\xd4\x13\xc0\x43\x1b\x75\x05\x27\xc3\x2d\xe7\xe2\xbc\xa8\xe8\x2c\x60\x57\x0d\xe8\xb3\x6c\xb6\xb8\xfe\x90\xb9\x81\xe9\x8e\xee\x54\xc5\x69\x00\xea\x28\xff\xd2\xeb\x3a\x9e\x6e\xab\x2d\x7e\xed\xfa\x18\xa5\x5a\x0d\xa9\x7e\x6f\xeb\x98\xa9\x6c\x0b\xd4\xf8\xab\xa2\x04\x64\x82\x01\x2c\x92\x36\xc8\x58\xd2\xd7\x0d\x3f\xe8\xcd\x53\xd0\x0a\x1c\xdc\xad\x36\xf0\x99\xc4\xb7\x96\x1d\xbd\x66\x75\x93\x70\xfa\x65\xb9\x96\xdb\x45\x59\x14\x27\xfe\xdd\x14\xbb\xd3\xa5\x50\xd7\x8b\x73\xa2\x42\x85\xf0\xc2\x59\xa6\xe0\xc3\x19\x32\x6a\xd3\x03\x19\x44\xfd\x4e\x61\x59\xb5\xa5\x43\x99\xde\xc5\x2b\xc9\x11\x0b\x13\x48\xa6\x79\xcc\x25\x16\x29\x34\xd4\x1e\xee\x6e\x68\x8a\xab\xb3\xa5\xa1\x5c\xda\xa7\x26\x52\x16\x97\x66\x13\x62\xd2\x79\x26\x87\x2e\x86\x3a\xc9\x74\x8b\x41\xbd\x2d\x66\x40\xd7\x08\xcb\x52\x12\x22\xef\x16\xd5\xb4\x41\x93\xf0\xc7\x69\x26\x2b\x8f\xbf\xf3\x3d\xa8\x26\xe5\x43\x23\x4b\x42\x0c\xcd\x1e\xa4\xbf\x05\x6f\x65\x55\x7d\xe0\x60\x34\xe7\x36\x37\x4a\x4d\xca\x1a\xd1\xad\x41\x61\xbd\xba\x16\xcb\xb3\x71\xb1\x26\x3f\xa3\x40\x9e\xd6\x83\xb7\x1b\xa7\x20\x0d\xf2\x6a\x99\x38\x59\xad\xd9\xc9\x7d\x15\x54\xa3\x4e\xe7\xb7\x13\x26\x25\xe6\xd3\x6b\x60\x24\x40\x19\x11\x83\x49\xc3\x2e\x0c\x09\x55\x45\x2e\xe2\xfb\x23\x9b\x0a\x89\x01\x05\x6d\x95\x7a\xd3\x01\x6d\x64\x54\xc2\xfb\x62\x88\x85\xdb\x72\xe2\x91\x62\xcb\xe2\xcd\x74\xac\x43\x4a\xee\xae\x56\x98\xed\x27\x85\x61\xd7\x13\x6b\xfa\x9f\x7d\x32\x65\x36\xcb\x66\x36\x58\xd0\x08\x51\x24\x84\x7d\x6e\x49\xa5\x57\x20\x9f\xe4\x9e\x4a\xf5\xa0\x3a\x62\x37\xb6\xa6\x33\xb0\x11\x87\xd3\xee\x28\xb0\x96\x37\x98\xc8\x3d\x4e\xac\x02\x3d\xed\xfc\x37\x2a\xab\x89\xd3\x19\x40\x95\x93\xee\x69\xce\x8e\xe7\x3f\x52\xb0\x66\x8d\x4f\xd8\xcb\xba\x3a\x56\x73\x8a\x8f\x4c\x79\x36\xf5\x66\x4a\xd5\x62\x3e\xc8\xb2\xe8\xb4\x13\xb8\x4d\x32\x9f\x75\x10\x29\xd6\x89\x27\xf7\xb1\x1a\x4a\x92\xa9\xba\xd8\x53\xc8\x51\x5f\x5f\xc5\x14\x71\x2b\xac\x59\x01\xdf\x7e\xac\x24\x01\xbc\xd4\x79\x69\x51\xb4\x08\xde\xd2\x77\xe9\xab\x02\x0e\xb9\x05\x7a\xe5\xb5\xa4\xc9\xb0\x2f\xcf\xf3\x18\x75\xc3\xdd\x3e\x53\x06\x5c\xd7\x4d\x87\xbe\xf2\x73\x40\x70\xb9\x55\x34\xe7\x58\x4c\x85\x66\x5e\x55\x73\xc3\x08\x15\xbd\x59\x7a\x80\x35\x93\x38\xed\x32\x50\x14\xa9\x06\xdf\x7c\xc0\xdd\xcc\xa0\x65\x6e\x35\x53\x7a\x04\x1c\x14\xf3\xe6\xf2\x0a\xa4\xee\xcc\x17\x07\xb6\x16\x36\xec\x0e\x21\x74\x4f\x03\x93\xf2\xcc\x93\xfd\xc6\xad\x52\x64\xdf\x1e\x7a\xf7\x6c\x8b\xd2\xf0\xe3\x53\xbb\xd7\x0e\x70\xd4\xea\x6a\xc1\x55\xba\xad\x7b\x6f\x6e\xdd\x92\xad\x15\xf9\x3a\xff\x71\x1b\xf6\xf1\x01\x9a\x74\x9a\x31\xa6\x0a\x8d\xca\xf5\x94\x83\xaa\xc8\xe9\x22\xe8\x9b\xbf\x8d\xbc\xa3\x69\x8d\x12\x6b\x3a\x1e\x09\x9d\xb0\xfc\x1b\x86\x0c\xe2\x65\xdf\x94\xfe\xb9\x6c\x7e\x08\xb4\x51\xb7\x75\x82\xb5\x7b\x55\x3a\x15\x55\x46\xad\x5e\x96\xa9\x94\x1e\xde\x93\x15\x02\x2d\x9b\x0d\xf4\x06\x79\x47\xf0\x3c\x09\x0d\x2e\xaf\x33\x20\x07\x0d\x23\x72\xd6\xd1\x80\x3a\xa6\x3d\xf2\xea\x83\xd7\xe3\x39\x8d\x48\xb3\x4e\x32\x0c\x60\xf2\xe2\xdc\x4d\xd7\xff\x85\xdd\x27\x78\x25\x37\xc0\x6d\x93\x44\x73\x24\xf6\x60\x2c\xc9\xfd\x5c\x82\x4e\x0a\xb5\xd4\xfe\xc9\x6e\xc7\x79\x65\xab\xf9\xa2\x28\x90\x2a\xd4\xc9\x15\x42\x4d\x89\x2c\x5e\x17\x47\xb7\x64\xde\x64\xdf\xbc\x04\x2b\x36\x96\xc2\x35\x09\x0e\xd7\x10\x5d\x00\xd8\x1a\x37\x8f\x17\x92\xcb\xb0\x13\x9d\xd3\x6d\xa4\xa0\xad\xf1\x9b\x51\x95\x7d\x3c\x02\x09\xca\xc7\x45\x4a\xe4\xa1\xf1\x30\x8c\x94\x41\x0b\x96\xdd\x83\x1d\x04\x07\x86\x42\xdf\x2b\x25\xe7\x83\x5e\x00\xea\xb6\xea\x39\x1e\x6d\xaf\x22\xf6\x59\xb4\x52\xc5\x08\x5a\xda\xd6\xe2\xc9\x2e\xeb\xe3\x06\x31\x91\x32\x4d\xab\x53\xea\xbb\x31\xf1\xc1\xd2\x1a\x9d\x68\x30\x9e\x9b\xab\x75\xc6\xcb\xdb\x52\x08\xba\xdf\x64\x30\xc3\x06\x03\xed\xd0\x1e\xc0\x84\x65\x03\xcf\x21\x7b\xda\x92\xcc\x7f\xf9\x97\x59\xcf\x52\x6d\xe7\x95\x98\x19\x32\xa3\xc8\x7e\x02\xe8\x48\x97\x1d\x83\xdf\x29\x7f\xe1\xf4\x31\x1c\xd0\x14\x9f\x3d\xe8\x4f\x80\xd0\xa0\x60\x43\x92\xcf\x19\x5c\xc8\x82\x48\xcf\xaf\x88\xc2\xe9\xb1\x76\x6c\x1a\x31\xa2\x46\x16\x8a\x95\x89\x0e\x2b\x77\x40\x81\x67\x8c\x76\xef\xe2\x42\x9b\x97\x58\x45\xc4\xa7\x6c\xe7\xbd\x51\x2d\xf2\xd2\xad\x21\xae\x48\x35\xe2\x63\x3b\xe7\x7b\x44\xff\x5e\xb9\x1c\xbc\x0a\xc3\xa6\xf1\x03\xbb\xde\xda\x2c\xc3\xbf\x3e\xc8\x6e\x1f\xa8\x88\x91\xfe\x98\xc0\xb1\xaa\xb4\xc5\xb2\x94\x1e\x9e\x9f\x38\xb3\x1c\xe6\xec\xf2\x75\x77\xe7\x03\xb9\xd8\x53\x2b\x63\x4d\xcf\x38\x39\xe1\x31\x92\x78\x40\x6c\x0a\xa2\x86\x5f\x8d\x4a\xc0\xec\xb2\x7c\x95\xad\xb8\x3d\x3e\x5f\xe3\x87\x63\x77\x80\xd7\xc7\x7d\x59\x77\x92\x6e\xd3\x36\xb7\xa5\xda\xfe\x87\x3a\x9b\xa4\xed\x42\xcf\x8a\x94\x72\x25\x8b\x9a\x6c\x84\x5d\x64\xc9\x9f\x2e\x8d\xa6\x79\x79\x60\x08\xe0\x0a\x4f\x44\x8e\xbd\x1a\x4f\x8c\xdc\x0c\xd3\xe1\x2b\x4d\xdc\x54\xef\xe0\x7e\x3c\xb2\xae\x67\x77\x5b\xb3\x54\xb5\xe3\x15\xe9\x9e\xda\xb5\xb9\xb4\xe7\x1e\x2f\x71\x7c\x9f\x40\x31\x30\x58\xcd\xdd\x39\xd3\xe7\x60\x16\xe6\xe6\xb5\x0a\xcb\xf6\xba\x4c\xf3\xd2\x4e\xa4\xa7\x82\x3e\x32\x18\xa7\x35\x50\xec\x85\xe2\x0d\xfb\xce\xbd\x05\x99\x6d\xf6\x4f\x3a\x33\x9a\x31\x9b\xa0\x87\xd6\x6a\xaa\xf0\x41\xe5\xe6\x27\x50\x2b\xa6\x2c\xd4\xea\xe8\x33\x72\x4e\x7a\x15\xb1\x47\x60\x50\x57\xd2\x6c\x61\xea\x86\x6c\xba\x4c\x11\x21\x65\xa2\x25\x28\x16\xc5\x15\x1f\x87\x02\x5b\x24\x0c\x89\x3e\xf1\x2d\x16\x09\xd6\x2b\x86\xca\xfe\xf1\x37\xcc\xa1\x90\x28\x6a\x57\xdd\xf1\xdf\x91\xc1\xff\xc7\x84\x94\x4b\x96\x23\xdc\x09\x12\x46\x55\x6b\x3b\x24\x24\x61\x36\xdd\xb3\x02\xfd\x36\xcc\xb6\x9b\x52\xf8\xbb\x12\x01\x7a\x7b\xb3\xfd\xb8\xfe\x38\xb9\x36\xdb\x71\x11\xc1\x82\xff\xe9\x8d\x1c\xeb\x7a\xdb\x27\x22\xce\xfa\x10\x32\xe3\x38\x6e\x9b\x7a\x8a\x72\x02\x0b\xd6\x02\x7d\x43\x16\xd4\x62\x32\xbb\xc9\x6c\xe7\xa2\x33\x55\x9d\xbd\x86\x1f\x78\x72\x00\x94\xd1\xf8\x5b\x35\x2b\x73\xa3\x5c\xe1\xd5\x7a\xf6\x4b\xc8\x32\x0d\x73\xc8\x1f\xac\x70\x87\xaa\xe0\xc9\x19\x1c\xbc\x79\xef\x7c\x90\x44\xf2\xb8\xb0\x21\xc8\x09\x75\xe6\x2c\xb1\x78\x62\x81\x56\x56\x41\x67\xe3\x04\x6f\x1a\xf2\xc1\x85\x9d\xfb\x17\x26\x13\xf6\xdf\x06\xd9\xcc\x5d\xc6\xa9\x19\x7b\x4a\x05\x3b\x20\x72\xcc\xd3\x4b\xe6\x41\x79\xf0\xb4\xeb\x95\x81\x17\x54\xf4\x17\xfc\xc7\xbc\x53\x87\xc1\x18\xbc\x93\x21\x9e\xca\xdf\x85\xab\x66\x66\xeb\xbb\xfd\x40\x13\xb0\x9a\x56\xa5\x1a\x37\x90\x55\x1d\xff\x5f\x09\xaa\x8a\x7f\x70\x19\xb4\xb3\x99\x74\x04\xa1\xa0\x95\x0c\x44\xd6\x15\xc0\xb8\xbe\x89\x21\x1d\x3f\x59\xe3\x16\xc1\x0d\x1e\xad\xad\x13\x1b\x23\x9c\x4a\x4c\x41\xd6\xb5\x99\x15\x37\xe9\x17\x8a\x86\xc9\x6c\x0a\x06\x06\x91\x8b\x0c\x9f\xb1\x8e\xda\xd2\xd0\x78\x8d\x19\x60\x79\x98\x70\xb3\x45\x93\x02\xb6\x61\x49\xd3\x8a\xb2\x9a\xdc\xef\x0f\xf0\xfe\xfa\xaf\xc6\xeb\x5d\x05\xe8\x69\xa5\x26\xc5\x8c\xd0\x88\xb9\x38\xd5\xa3\x46\x9a\x77\x91\x96\xf9\xc4\x0a\xf8\x5e\x4d\x8f\xb6\x3b\xd9\xa7\x23\x14\x93\xb1\x78\x5d\xa5\xdb\xd4\xa7\x1d\xab\x37\x98\x53\x63\x14\x58\x2b\x3e\x15\xda\xdd\xb9\x05\x7c\x8a\x78\xdf\x1a\x0a\x5e\x83\x7a\xaf\xd3\xb0\x29\xe1\xcd\x37\x03\xb6\xe4\x11\xf4\x26\xf3\x15\x62\x4d\xa1\x9d\x33\x7d\xaa\xc6\x65\x15\xe7\x1d\xde\xe6\x71\x41\x95\xc4\x87\x41\xad\x41\x3f\x71\x90\xd7\xa5\x45\xc1\xd7\x09\x8a\x1a\xbc\x28\x40\xc8\xcc\x40\x4c\x89\xdc\x40\x97\x0a\x63\xad\xd7\x30\xd8\x96\xba\xd3\x1d\x96\x16\x13\x68\xdd\x82\xc4\x71\x6e\x46\x5d\x96\x46\x5b\x88\x2f\xae\xb2\xd9\x96\x80\xde\x01\x23\xee\x34\x85\x70\xc4\x51\x8e\x0b\x66\x7b\x8b\x37\x61\x64\xbe\x30\xda\xc6\x12\x2f\x87\x3c\xab\x81\xb7\x6d\xa1\x7d\xcf\x9b\xce\x9b\x0a\xbf\xd2\x2e\xad\xc0\x9d\x18\xcb\x18\xda\xaa\xe6\xc2\x65\x8e\x4d\x5a\xbf\x09\x35\x87\xa5\x3e\x72\x14\x38\x05\x50\x56\xee\xaf\x27\x60\x06\xab\x5d\xec\xc7\xf6\xdf\x4b\x3a\xde\xdc\x25\x62\xc1\xec\x94\x5f\x98\x03\x7d\xe7\xb3\xfb\xf7\x04\xa9\x82\xfe\x61\x8b\xe0\x14\xb7\x46\xb4\x63\x7b\xf6\x0c\x23\xa7\x63\x53\x3e\x1f\x09\x6c\xfb\xfe\xa2\x18\x16\x6f\xd0\xc0\x1d\x2d\x64\x36\x42\x6e\x8a\xc3\x02\xcc\xea\xab\xee\xaa\xee\xf2\xef\xcc\xc7\x8e\xca\x0c\x4a\x0e\xde\x24\xde\xa1\x0a\xb8\x74\x7d\xbe\x16\xba\x14\x5c\x3b\x14\x8d\x55\x29\xac\x89\x26\xc9\x8e\x4e\xd3\xf7\x7d\xc6\x27\x73\xfb\xca\x58\xfa\xf6\xe3\x67\x88\x38\x71\x4f\xe7\x6b\xc9\x3d\xc2\x31\x14\xbc\x41\x0c\xd3\x19\x77\xb1\x85\xfd\xce\xa2\x15\x92\xdd\x0a\xe6\x16\x5e\x5f\x66\xa6\x97\x69\x44\x98\xf8\x6e\x39\xb7\x04\x6e\x7d\xf6\x4e\xc0\x73\xe9\x9f\x8c\xfe\x44\xa7\x34\x13\x9f\x8e\xf6\xe6\xf7\x9a\x0d\xe0\x7f\x0f\x5d\x2b\x08\x01\x4d\x0a\x73\xcd\x83\xa3\x88\xae\x57\x46\x47\xa1\x33\xfe\xc4\x9d\x1b\x9a\x33\x45\x1a\x9a\x89\x56\xf2\x49\x35\x6e\x2f\x08\x02\x87\x71\x58\x59\xd9\x1e\xb3\x6a\x88\xb1\x63\xa0\xa8\xa5\x0f\x0d\x73\xf5\x9b\xe4\x24\x5f\x39\x5f\x92\x47\x09\x45\x1e\x21\x2d\x10\x67\x9c\xb2\xb8\x98\x4e\x3b\xed\x75\xf8\x38\xf9\x7f\xd4\x74\x10\xfe\xa0\x43\x18\x62\x16\xe0\xab\xdb\x7e\x26\x14\xda\x7d\x75\x0f\x20\x7e\xe3\x94\x47\x93\xb2\xdd\x1d\xda\xf4\x69\x98\x4f\x34\x96\x09\x58\x3b\x88\xa7\xbb\x48\xa6\xeb\x15\x9f\xc9\x5f\x52\x7f\x12\x39\x0c\xce\x35\x4a\x94\x9c\x5b\x1e\x2d\xee\x8f\x36\xa3\x17\xc6\x6a\xd0\xf8\xd5\xe2\x0b\xbc\x63\x72\x2f\xaf\x1d\x21\x44\x46\x46\xba\x10\xc5\x0f\x74\xcb\x75\x73\x6f\xb3\x3a\xa1\x94\x60\x6b\xfb\x11\x56\x18\x07\x01\x8f\x43\x9a\x17\xa7\xe6\xbc\xe1\x4b\x86\x36\x5d\x4e\x19\x3b\x74\x29\x4a\xd2\x03\x8e\x17\x30\x8c\x76\x63\x9d\x5d\xc4\x46\xb6\xe2\x19\x6e\x30\x99\x56\xf9\xae\xb2\x9d\xfd\xe0\xba\x12\x0b\x52\xda\x26\xd9\xa6\x9c\x70\xa8\xbc\x22\xf8\x3b\x8d\xda\x6b\x43\x1c\xad\x08\x87\xc1\x77\x9d\xca\x22\x6a\x90\xf9\x3e\x83\x70\x30\xf2\x01\x82\x64\xcf\xb4\x09\x9a\x0f\x6d\xe5\x07\xa0\x71\xc9\x7a\x84\x30\x7a\xe8\x72\x05\x07\xd7\xb9\x19\x9c\x1c\x89\xd8\xca\x43\xbf\xc4\xb7\x3b\x28\x88\x9c\x1f\x2f\xf9\x02\xfc\x4f\xcf\xf4\xdd\xea\x5e\x35\x16\xea\xc3\xc9\x76\xf8\x4e\x7a\x2d\xd7\x4f\xcc\x26\xd9\xdd\x1c\xc2\xb6\xfb\xf3\x3e\xd2\x10\x76\x76\x3f\x46\x2c\x88\xc8\x06\x2f\x32\x8f\xea\xde\x7f\xf1\xb6\xc2\x9f\xb9\xde\x4a\x10\x3d\x4c\x7f\xc2\x45\x61\x35\x3d\x91\x10\x04\xc5\x41\x7a\x05\x0f\xd4\x1c\xfb\xe7\xb1\xac\x14\x41\x54\x65\x90\x11\x67\x67\x4b\x68\x8a\x40\x57\xf6\xbd\x96\xe7\xec\x9f\x43\x58\xd3\xe0\x51\xe8\x57\x34\x97\xbe\xa9\xa2\x7a\xfc\xcb\xc0\x1e\xf1\xaa\xfd\x3a\x77\x59\xfd\x39\xda\x08\x81\xfb\xa9\xef\xdd\x45\xe5\x39\x8d\xa2\xe5\xb6\xe8\x71\xff\x09\xc9\xbc\xe9\xfd\x99\x63\x78\x8e\xd5\xf1\x73\x78\x6c\xd1\xf8\xf9\xe8\x99\xfc\xf1\x32\x1d\xc2\xdf\x74\x3e\xcf\x19\xce\xdd\x15\x9b\xdd\x8a\xe5\x5e\x76\xf7\x96\x33\xc6\x8c\x91\x58\xed\xd2\x76\x9e\x5e\x45\xd6\x7b\xb4\x14\x4d\x9e\x1f\xa4\xb8\x20\x36\x0e\x1f\xf0\x8f\xef\x4e\x58\x05\x8b\x40\x15\x9f\x8f\xc1\x13\x99\xfc\x57\xff\x2f\xbf\xb1\x58\x02\xc3\xcc\x71\x68\xaa\xca\x17\x08\xdd\x8a\x69\xd8\x11\xb1\xdf\xee\xc7\xc1\x89\x43\x74\xe6\x01\x9f\x37\x8d\x31\x20\xbe\x74\x11\xc2\xaa\x03\x8d\xd6\x1e\x67\xae\x32\xde\x93\x3e\x24\x54\x93\xe1\x74\x8f\xa1\x11\x5c\x1c\x32\xb9\x4a\x9f\x9d\xae\xd9\x72\x3d\x39\xc9\xf8\xb3\x23\xb7\x89\x5f\x9a\x7d\x82\xea\x6d\x15\x99\xc8\x96\xa9\xc0\x18\xa7\x67\xe1\xfb\x68\x6d\xe0\x61\x35\xf8\xd9\xd9\xa2\xeb\x33\xac\x96\x9b\xe9\x35\x01\x36\x0c\xb2\xe3\x7e\xc2\xd1\x5a\xdd\x45\xe5\xde\x32\xdf\x5a\x66\xbb\x1f\xb3\xb3\x45\xde\x79\xf1\xfc\x20\xf3\x69\x91\x66\x4e\x01\x6b\x7d\xcc\x5d\x82\x2f\xfa\x87\xb3\x12\x1b\xa3\x0f\x44\x66\x1e\x64\xb1\x40\x46\x12\xc1\xa0\x79\x29\x74\xa9\xce\x08\x9f\x13\x5d\x7c\x51\xe9\xfe\x5f\xb1\x24\x3c\x8c\xf1\x80\x62\x3d\xfa\x82\x30\x61\x57\x5b\x2d\x39\xa6\xc2\x19\x83\xe4\x1e\xbb\x3e\x26\x05\x15\x37\x84\x94\x49\xb7\x68\x40\xd1\x94\xbf\x71\x68\xd7\x23\x55\x3b\xd9\x83\x2d\x10\x83\x15\x7a\x7c\xff\x39\x60\x82\x27\xb6\x02\x8a\xc8\x27\xec\xea\x07\xd7\xe3\xce\xd1\x05\xed\x6d\xd3\x2c\x55\xaa\xb4\xb0\xf0\x6b\xde\x2d\xaa\xc4\x2e\x28\xde\x72\x90\xd6\xae\xec\xf3\x64\xde\x6d\xa7\x9d\x49\x86\xb0\x0b\xbe\xe6\x2d\x77\x92\x41\x67\x91\x97\x70\xb6\x1b\xe9\x44\x99\x25\xd1\x1c\xf3\x2c\xad\xbf\xe9\x9f\x59\x92\xaa\xda\x6f\xeb\xc6\xf5\x62\x6c\x90\x49\xf8\xe1\x05\x7d\xb1\x30\x52\x95\x88\x76\x7f\x88\x62\x45\xda\x3a\xc3\x71\xfc\xe0\xf6\xa4\x33\xc6\x7b\xf1\x57\xd9\x95\xd2\x16\x1b\xf4\x83\xc3\xb6\x23\xeb\xb2\x38\x23\x06\x61\x32\x96\x78\x63\x44\x30\x62\x13\x43\x3b\x3d\xa7\x17\x53\x53\x42\xa4\x5c\xbf\x6f\xad\x7d\xe4\xb7\xa8\x77\xff\x3d\x03\x26\xaf\xeb\x2b\x5f\x84\x42\x0c\xfa\x4b\x6b\x6c\xbe\x38\xa8\x60\x49\xd6\xf5\xcb\xdf\x68\x0f\x2a\xcc\x61\xf0\x3f\x09\x2e\x63\xed\xeb\x58\xb1\x87\xcd\xa9\xef\x20\x07\x6d\xdf\x1c\xe7\xee\xe9\xcd\x28\xd6\xcb\x0e\x38\x48\x1f\x2a\x3f\x38\xd1\x77\x70\xfb\xd0\xef\x8c\x4c\x95\x34\xb0\x87\x66\x90\xa2\x2f\x6f\x7d\x27\xab\x23\x95\x4b\xa8\xb6\xc8\xfa\x94\xd8\xf4\x2c\x99\xa4\xd4\x7d\xd5\xd6\x96\x45\x55\xfc\xcc\x38\xed\xcd\x45\xff\xe8\xb7\xf2\x6b\xba\x24\x06\xa5\x18\x96\x15\x33\x74\xde\xb8\x0f\x9a\x44\xbe\xf8\x72\x04\xde\x22\xb5\x7d\x5b\x52\x52\xc9\x58\x9c\xd2\x1b\xf0\xea\xef\x94\x2e\x51\xae\xf0\x1a\xd5\xcb\x0e\xf9\x8a\xec\xb5\x86\xa6\x45\xe1\x5c\xa4\x19\x18\x65\x85\x7f\x25\x5b\xf1\x4f\xc1\x34\x4c\x32\x11\x69\xd5\x0f\xad\x95\x9d\x46\x4b\xd6\x89\xa7\x49\xe1\xf3\x4f\x91\x21\x11\x99\x4f\x59\xa4\xcc\xe1\xc1\x82\x72\x00\xf9\x2e\x10\xaa\xbd\x15\x7c\x10\x76\x68\xaf\xac\x8a\xae\xcd\xae\xc7\x26\x2f\x18\x97\x83\x18\x35\xca\x58\x80\xc7\x0e\x1f\xcf\x98\x79\xf5\x50\x65\x55\x62\x10\xd5\x5c\x17\xcf\x8b\x96\x70\x77\x92\x40\x53\x44\xfa\x40\xa1\x3d\x05\x15\x7f\x9a\x0c\x4f\x47\xcd\xe6\xf9\xe8\xaa\x92\xe3\x8a\xc8\x71\x3f\xfc\x6d\x85\x1d\x75\xac\x65\x47\x3c\xeb\x06\x42\x72\x1f\x2d\x61\x81\xf6\xed\x7f\x38\x5a\xbe\x9e\x58\xf5\xa1\x6c\x2a\x70\x52\xcb\x37\xcc\xbe\x94\x5f\xe2\xac\x5e\x86\x13\xd3\x4b\xfe\xbe\x22\x7e\x5f\x25\xc1\xed\xdd\x35\xa5\xee\x40\x4f\xc4\xa9\x10\x14\xe6\xb3\xeb\x81\x2c\xac\xeb\x55\x3b\x0b\xaf\x7b\x8e\x75\xb2\x4c\xfc\x9f\x64\x48\xbf\x2d\xd4\x23\xe1\x3c\x06\xfa\xac\xfe\x4a\x2a\x03\xf5\x34\x52\x37\x38\x3d\xc6\x5f\xf0\x2a\x69\x49\x73\xec\x5c\xfd\xd5\x8e\x9f\x47\xdb\x7a\xa3\xab\x3b\x4f\x5e\x58\x6f\xe4\x4f\x2f\xe9\x03\x6d\xb4\xd2\x4e\xd0\xec\xbe\x56\x58\x0c\x67\x08\xbb\x22\xdc\xad\xcb\xf6\x25\x3d\xb0\x22\xbf\x66\xfa\x38\x48\xe9\xe6\x8e\x98\x36\x79\x9e\x45\x7c\x61\x48\xa3\x30\x68\x8e\xae\xa9\x4d\x44\x4d\x70\x88\xd7\x9d\xd8\x4e\x8e\x1a\xa9\x58\x41\x81\xb9\x24\x89\x07\x5a\x1e\xbc\x90\x83\x2c\x35\x4d\x05\x15\x21\x6e\xfe\xab\x4e\x87\x14\x94\x6f\x90\x88\xa8\x5b\x48\x8d\xf0\x6d\xad\xd6\xde\x12\x46\x2e\x96\xde\xa7\x25\x18\x5a\x2b\x15\x33\x6e\xf3\x87\xdb\x95\x95\xf7\xf2\x4f\xfc\x68\x37\xf9\xc3\x44\x42\xa5\xfb\x9b\x65\xf2\x87\x2b\x2e\xb8\xaa\x96\x8a\xaa\xc4\x3c\x0a\x2b\xd3\x85\xa6\x81\xe9\x23\x8c\x38\x5e\x5f\x92\x7a\x70\x94\xf2\x2d\x58\x96\x4f\xf4\xe2\x7b\xdf\x23\x7e\xd9\x27\x67\xc6\x17\xb6\x17\x3a\x57\x11\x02\x95\x48\xf1\xd1\x7e\xe6\xab\xd1\xd4\x7e\x14\x78\x46\x70\x0e\x4e\x3e\x4f\x2c\xbe\xe4\x7e\xe4\xda\x2c\x30\x2c\xd4\xc8\x5a\x71\x7b\xc4\xeb\x65\xfc\x4f\x58\xae\x8a\xa4\x26\x13\x91\x4f\x0b\xf5\xa9\xde\xc1\x51\xc9\xac\x5a\xa3\xbf\xf1\x7f\x58\x7f\x58\x81\xa7\x31\x73\x53\x50\x12\x18\x32\x2b\xc8\x7f\x7e\x96\xa6\xc2\xfc\x73\xde\xea\x90\x58\x88\xca\x7e\x84\x07\x58\xb5\xa6\xbc\xd2\x32\x80\x71\x60\x5c\x01\xd2\x66\xba\x11\x4e\x5e\xe1\x50\x47\x55\x16\xb3\x84\x40\x3e\xa0\xff\xfb\x0e\x01\xc6\x7b\x6c\x09\xcf\x12\xd2\xcd\xba\x88\x7c\x49\x18\x65\xdf\x31\x38\x81\x31\x2f\x23\xcc\xbe\x23\x5b\x9f\xd9\xea\xde\xc0\x16\xf1\x07\x78\x9b\x0d\x66\x94\x05\x53\xdd\xd0\x5d\xdd\x9f\x94\xf0\x7a\x3f\x66\xf7\x79\x6f\x67\x58\x4d\x4d\x77\x07\xfc\xbc\x92\x05\x1a\x19\xa3\x05\xa0\x9a\xdf\x36\x4c\x89\x92\x24\xb1\xbd\x44\x26\xdc\x30\x55\xac\xe1\x5a\x31\x35\x47\x2a\x9c\x23\x89\x9a\x24\x0c\xb5\x50\x0e\xfc\x50\x85\x86\xdb\x95\xbb\xcb\xa9\xbc\xbb\x40\x9b\x09\x2c\x9d\x6d\x33\xcb\x1d\x3f\x0a\x85\x03\xa9\xec\x0d\x64\x1a\xaf\x4b\x1a\xfe\x21\x13\x57\x69\x1f\x78\x16\x79\x11\x85\x48\xe3\x3f\xf7\xf1\x1b\x8b\x5d\x3e\x3b\x58\xb2\xd6\xb2\xdb\xb8\xed\xd9\x2e\xaf\x1c\x4c\x05\x82\x30\x13\x6e\x96\x31\x5d\x51\x92\xf3\x5a\x9a\x20\x55\xac\x70\x65\x60\x87\x06\x5e\x37\x09\xf7\xea\x80\x1a\x79\x55\xbb\x19\x48\x8f\x91\x3f\x63\xd4\xa5\x5c\x13\xd6\x4a\x66\x53\xdb\xee\x54\xeb\x34\x76\xde\x60\x1a\xee\x52\x98\xd2\xbf\x08\x69\x28\x73\x9a\x54\xdb\x19\x56\x9a\x8d\x6e\xe3\x71\xc9\x92\xbd\xb8\xc9\x82\x30\xef\x35\xa6\xa0\x13\x0c\xf7\xe8\xc0\xa0\x54\xa7\x41\xef\x1e\x8e\x69\xa3\xe2\x22\xa8\x57\x07\xe6\xd0\xda\xad\x61\x1e\x88\x5f\xd6\x86\xd3\x5d\x41\x2f\xf6\x84\xb9\x52\xec\x9c\x2a\x24\x02\xe5\xd8\x5b\xdb\xf5\x27\xee\xb3\x59\x39\x25\x57\xe3\x4e\x89\xad\x0a\xc7\x1a\xec\x7d\xb8\xb6\x98\xfd\x7d\xf5\x43\x97\x0f\xeb\xba\xc1\xa9\xbf\x44\xa4\x66\x16\x72\xf4\x72\xa7\xe9\xad\x1e\xf1\xbe\xde\x10\xfe\x74\x70\x06\xf0\x63\x8f\x13\x94\x39\x34\x89\x62\x99\x72\xc8\x1d\xdc\xab\xfd\x5e\x0d\x27\x72\xbb\x4e\xd9\x52\x8e\x0e\xf3\x29\x23\x50\x10\x6b\x45\x1e\x0e\xa7\xa4\xc8\x22\x42\xaa\x7f\x19\x2b\xc3\x74\xcf\x82\x7d\x25\x30\x44\xc6\xa0\xb5\xef\xf9\x8d\x78\x0a\x25\xf3\x08\x5a\x72\xb5\x7c\x68\x8f\xa2\x8d\x3c\x6c\x3a\x11\x23\xc8\x2a\x11\x59\x36\xd1\xe2\xce\x11\x0d\x26\x2b\x72\xae\xcb\xce\xda\x5a\xe8\x37\xa8\x42\x0f\xb7\x8f\xfe\xce\xe1\xa9\xe8\x04\x81\x61\x6c\x40\x97\x33\x33\xb7\xef\x34\x98\x43\x0a\x4c\xc5\x96\x9d\x84\x01\xd2\x8a\xd2\x85\x6d\x6e\x34\x73\xea\xf3\x73\xc8\xc2\xbe\x65\xa1\x9b\x9b\x09\xf6\x09\x81\x53\xe7\x28\x24\xaa\x22\x2e\x39\x70\x6e\x68\x84\x9f\x3a\xd5\xc1\x41\xed\xab\xca\xbf\xeb\x1f\xb5\xcc\x6a\xbc\xb7\xd8\x38\xfe\xec\x41\x05\x9c\x2a\x94\x7b\xef\x3f\xdf\x41\xfe\x14\x47\xd2\xbe\x00\x7b\x94\x61\xb2\x3a\xcb\x1a\x5e\x51\x7f\x14\xc6\xf7\x27\x10\x5e\x20\x68\x31\x6e\x23\x66\x67\xaa\xb3\x5a\x39\xde\x17\x64\xe4\x5e\x76\xeb\xee\x8c\x7f\x62\x7d\x59\xaf\x2b\x93\xc5\xb0\xde\xfd\x5e\xc1\xde\x0a\x20\x30\xa2\x0d\xf0\x1e\x4f\x48\x0f\xb9\x0c\x72\x3a\x60\x34\x67\x33\x17\xc9\x89\x70\x7d\xd3\x58\xc4\x9c\x7a\xba\xfa\xff\x8d\x3b\xb0\x32\xee\x81\x8f\x3b\x20\x68\x21\x51\x4a\x7f\x69\xbb\x6f\xda\x62\xad\x7e\xe7\x72\xfa\x3c\x6a\x20\x68\xfc\x56\x79\x54\xa3\x3c\x44\xce\x8a\x10\x59\x04\xc7\xff\x4c\xb4\x87\xf6\x86\x47\xf4\x07\xe1\x42\x79\xca\x74\xad\xfa\xd8\x97\x07\xd6\xa3\x59\xbc\x0e\xbb\x55\x55\xde\xa8\x12\xe5\x82\x3a\x25\x22\x36\xc6\x36\x08\x18\x30\x22\x2e\x93\x79\x09\x06\xa5\x63\x86\xad\x38\x5e\x67\xe9\xc3\x36\x9e\x2d\x1a\xb9\xb2\x12\x50\xae\xca\x53\xa4\x1d\x1c\xe7\x9f\xeb\x75\x97\x53\x2b\x22\x35\x2e\x46\x6a\xf0\xbf\x19\xb9\x1c\x9e\x50\x0a\xe0\xa7\x65\xd8\xb9\x89\xc5\xd3\xc3\xfb\x71\x3e\xf7\xf7\x85\x29\xfc\xdd\xd1\xac\xd4\xe0\x0f\x7b\xa7\x8e\x92\x8d\x3b\xd9\x32\xe2\x54\x5f\xfd\x2b\x5d\x05\x82\x9d\x99\x3f\xf1\x7b\xda\x74\xe4\x60\xbf\xbe\xdb\x26\xab\x4b\xb4\x31\xdd\x8f\xff\xf8\xc3\x33\x47\xea\xfa\xc3\xc5\x00\x63\x25\x2f\x28\xa5\xc8\x27\xb7\xa4\xca\xb5\x1c\xec\x82\x6e\xa1\xba\xff\x4e\x24\xad\x30\xd2\x30\x06\x57\x49\x81\x59\x91\x31\x4e\xd0\xa9\xee\x95\xe6\x5b\xf1\x1f\x07\x6b\x91\xda\x2f\x62\x01\x32\xc6\x04\xb0\x0b\x92\xea\x2c\x0f\x1b\xc6\x15\xf4\x83\x5b\x6f\x48\xc8\xfd\xea\x8d\x5b\x6c\xeb\x5e\x91\x11\x3f\xa8\x14\x98\xe1\xb5\x5a\xac\xbf\x41\x9e\x0f\x38\x0b\x90\x75\xce\x65\x2c\xd6\xbd\x2a\x85\xe3\xbd\xca\xdd\x08\x95\x65\xfd\x69\xe2\x73\x04\x59\x0e\x3b\x04\x3f\xf7\xc4\xfa\x2e\x29\x0f\x48\x9b\xb4\xad\x5d\xef\x4f\x6f\x14\x07\x4b\x75\x86\x3a\xa7\xba\xcb\x54\xd6\x51\x77\x72\xf5\x29\xb9\xc7\x63\x49\x59\x1d\x31\x94\x68\xaf\x8f\x7d\x32\x51\x13\x1c\x89\x47\xf2\x40\x60\xe6\xee\xba\x54\x02\x47\x65\xa6\x1d\x45\xe1\x3b\xc8\x4c\x94\x84\x21\x96\x2f\xe3\xc8\xd0\x5b\xf6\xa7\xfc\xbb\x17\x3c\x76\x87\x12\x8a\x8d\xde\xb5\x86\x31\x59\x08\x56\x79\x6d\x7c\x37\x47\xe2\x92\x3c\xb0\x39\x13\x83\xb3\xe0\xef\x4e\x4d\xcf\xc8\xc9\xfd\xa8\x32\xcf\xd2\x6a\x8b\x89\x2d\xc2\x74\xb9\xb7\xff\xc5\xb2\x83\x39\xd7\xf2\x86\x76\x85\x74\xd6\x7b\xa3\x48\xba\xb6\x39\x84\x95\x33\x6c\x3a\x5b\x25\xe3\xde\xc0\x95\x74\x66\x76\xec\x48\x33\xdd\x1c\xe7\x98\x15\x0b\x83\x06\x09\xca\xd9\xba\xc0\xba\x9d\x10\xaf\x51\xe0\x1f\xee\x91\x4b\x45\x39\x89\x7a\xbd\xc9\xaa\x25\xfe\xb1\x0d\x1c\xef\xad\xcd\xd3\xe8\x47\x16\xf7\xde\x97\xd1\x04\x3f\x5c\xc9\xdb\xdd\x98\xdc\x30\x24\xd7\x9c\x77\x16\x3b\xaa\x23\x72\x2b\x77\x22\x2f\x18\xd3\xb6\x7c\xf9\x55\xb2\xc5\x7e\x59\x13\x4f\xa3\x90\x73\xb3\x09\xea\xa4\x23\x3e\x2e\xf8\x98\x82\xa5\xd0\xe1\xb6\x30\x57\xf3\xb3\xe2\x6c\x9c\x50\xc0\xf7\x0e\xe1\x7c\xf7\xee\x9f\xc7\x23\x0b\x4b\x23\xb7\xdf\x94\x62\x56\x8e\xf0\x7d\xcb\xab\x99\x53\xc8\x55\x0d\x6e\x03\xaa\x41\x72\x59\x6a\xf2\x07\xc4\xfa\xff\x52\x1a\x3d\x8d\x35\xc1\x85\x1b\x6d\x61\x8d\xa6\x40\x89\x86\x81\x47\xca\x03\xf5\xbf\x2f\x15\x2b\xc8\x9f\x72\xf9\x5b\x25\x3c\x05\x70\xa5\x11\xb4\x0e\xe8\xbc\xac\x50\x9c\xfa\x23\x75\xa7\x0e\x7d\x81\x1a\x75\x1e\xab\x2f\x08\x31\x98\x1c\x93\xcd\x96\x98\xc6\xf1\x9a\x7c\x25\xa5\xca\x8b\x43\x4a\x9d\xb3\x76\x78\x2e\xa5\x89\xe4\x89\xab\xc2\x96\xab\xfe\x83\x78\x25\x66\xdf\x38\xad\x4b\xd3\x5b\xf4\x8c\xeb\x1b\xab\xc0\x5f\x44\x3e\x4f\x94\xdf\x5a\xda\x3c\x49\x04\xb3\x8f\x93\x01\x2d\x01\xd4\x75\xc5\xfa\x13\x72\xca\x3d\x71\x23\xf8\xbd\x46\x22\xfd\x93\xdc\xaf\xac\x78\x58\xef\xde\x21\x3d\x43\x4c\x14\x28\x45\x09\xbf\xe9\xd5\xa7\xe1\x7a\x59\x33\x39\xad\x3c\xb9\x9d\xfa\xdb\x0d\x7a\x0e\xaf\x67\x9d\xe9\xdf\xa7\xcc\x72\xbb\x4f\xde\x17\x35\xb8\x66\x1d\x4a\xcd\xb1\xc6\x9e\x3c\xf0\x38\xb2\x57\x6e\x0e\xe5\x02\x39\x68\x46\x7a\x99\x59\x8b\x76\x5c\x22\x6e\x6b\x6e\x4f\xa0\xec\xb8\xbd\x3e\xfa\xf6\x32\x74\xdd\xda\x04\x3e\x03\xdf\x07\x73\xaf\xf4\x13\x59\xf0\xf8\x66\x06\xa2\x9f\xd5\x7e\x79\x25\xb2\xcc\x76\x58\xb9\xac\x58\xb3\x07\x83\xb6\xd3\x6a\x6b\xeb\xbf\x93\xcc\xa4\xcb\xe0\xe0\x09\x84\xfd\x20\x99\x83\xd8\xe3\x28\x61\x2a\xc7\x64\xe8\xa8\x9d\x74\x48\x07\x31\xa1\x47\xee\xb1\x71\x62\xad\x59\x88\x13\xc9\x75\x3b\x78\x99\x69\xc2\xf8\xe0\xd6\x19\x81\xd6\x05\x32\xa0\x51\x84\x23\x19\x9c\x99\xa8\xf0\xaf\xa7\x4a\x97\x2c\xd8\x80\xb0\x66\x31\x9d\xee\x41\xfc\xfa\x9b\x28\x83\x70\xe2\xf1\x48\xfa\x8b\xa5\xa4\x95\x4b\x07\x7f\xe7\xd8\x5a\x4c\x64\xc8\xe2\x37\x0f\xd7\xcc\x11\x74\xd3\xfb\xc7\xa9\x4d\x06\xdf\x64\xba\xf7\x13\x91\xb7\xf2\x9f\x9e\xc5\x6e\xef\x64\x12\x8b\x5b\x4e\x3f\xa5\x8d\xf1\x0d\x77\x34\x12\x75\x8d\xb9\xec\x2c\x12\xb8\x98\x9d\xf4\x23\x9d\x5f\xfb\xe7\x1c\xae\x32\x29\x43\x77\x8a\xee\x47\xdd\x4b\x11\xdd\xc3\x67\x03\x0c\xb1\xad\xc3\xd4\x99\x55\xc1\x1c\x9e\x99\x61\xe6\x06\xcc\x1f\xd4\x0d\x17\x07\x35\x6c\x48\x38\x9a\x24\xef\xed\xab\x37\x2c\x62\x33\x9d\xaf\xf7\x6a\x2d\x01\x25\x3b\x25\xec\x5c\x7b\x07\xf4\xe7\xc5\xd6\x3a\x0b\xa9\x86\xd9\xef\x2f\x69\x78\xaf\x2f\xaf\xf8\x68\x66\xe6\xcc\x8f\xe9\xeb\xf0\x0c\x0a\xd7\x6a\x66\xa1\x29\xf2\x1d\xc4\x85\xf0\x84\xca\xb0\xcb\x0b\xc2\xc4\xc2\x20\xaa\x3d\x5a\x98\x4e\xc4\x96\x7f\xec\x26\x91\x16\x79\x19\x4b\x4c\x73\x48\x3a\x72\x2d\x86\x56\x9c\x7d\xdd\x4d\xf9\x31\xde\x05\xb1\x4c\xd8\x6d\xc2\x01\x5a\x51\xf5\x4d\x24\x6a\xd0\x78\x0d\x82\xe9\xac\xb9\x0b\x11\xd1\x0f\xdd\x10\x85\x57\x89\x70\x69\x69\x4c\xe8\xac\xec\xb3\x3a\xbe\xc3\x29\x8c\x31\xbe\x0e\x93\x18\x93\xa7\x6c\x78\x41\x89\x48\x57\x98\xe6\x6e\xb9\x2d\xef\x1d\x99\x35\xfa\x1e\xd2\xab\xa0\xb4\xd4\xc1\xe6\x4f\x61\x5e\x49\x3f\x4a\x0b\xa7\xdb\x1b\x4e\xfd\x10\xff\xc8\x09\x19\x3b\x7b\xa6\x17\x5a\xfe\x02\x43\xdf\xd2\xa7\x3e\x11\x2a\x57\x9b\x8d\xd8\xcf\x86\x7c\x26\x43\xf3\x59\x4a\xdd\x5a\x8e\xe5\x89\x5e\xa3\x82\xe8\x64\xa7\xb2\x51\x34\x9d\x61\x53\xba\x6a\xb5\xda\x6e\x22\xaa\x1b\x19\xef\xec\x2c\x6d\x87\xad\x60\x9b\x0c\xfd\x31\x61\x0f\x0b\x71\x10\x28\x7f\x1b\x98\x4c\xcc\x64\x90\x73\x27\xf4\xdb\x28\x16\x33\xbe\x5e\xe7\xff\x7c\xce\x1a\xb0\x28\x97\x8a\x39\x94\x10\x44\x5c\xf3\x84\x26\x04\x7d\x4e\xe7\xaf\xf5\x16\x72\xea\x7d\x54\xc9\x67\x96\x3a\xe5\x46\xf6\x40\x9d\x79\xc5\xf5\xb4\x2e\xbc\x80\xf7\xa4\xee\xdb\x4c\x66\xd3\xbb\x8d\x44\x1b\xe6\x01\x69\x03\x7c\xc9\xd7\x6a\x9b\x9e\x69\xff\xf9\x0e\x6f\xcc\xf2\xda\x35\xaf\xeb\x05\x18\x5a\x93\x56\xff\xfc\x6a\xa4\xb3\x1f\xdb\xcf\xb2\x67\xca\x56\x37\x87\x80\x29\x9c\xc7\x5d\x2c\x75\x22\x8b\x01\x67\x68\x8b\xaf\xe2\x0e\xb0\x40\xcd\x78\x07\xd1\x40\x4f\x60\x82\xa6\x43\x84\x36\xa0\x7c\x0d\xcc\xef\x1f\xea\xbe\x98\x7c\xa1\x50\xe7\x77\x7d\x83\xa0\x9e\xbc\xc9\xe5\xcb\x5d\x73\xc6\x22\xff\x23\x8e\x38\x6b\xcf\x2d\xa9\xb3\xb0\x9a\xfd\x4f\xee\xd1\x74\x6c\x64\x66\xe9\x2a\x73\xf1\xd9\x50\x51\x32\xcb\xf3\x06\x6b\x74\x9c\xfe\x86\xb7\xe3\x80\xe1\x7c\xeb\xb1\x36\xfb\xc6\x46\x65\xf7\x62\x73\xdf\xf7\x13\x35\xba\x20\xdd\x65\x9a\x36\x33\xd0\x24\x76\xf7\x5a\xd6\x3c\x91\xe5\xab\x71\x0d\xaf\x74\x7b\xd1\x6d\x95\xce\x4e\x27\xb3\xda\x6d\x71\xfd\x74\xfe\x1b\xda\x00\x62\xff\xac\xe4\x3d\x14\xcf\x69\x3e\x71\xa9\x3a\x1e\x34\x0e\xa2\xa9\x48\xc8\x27\x65\x88\x22\x21\xd6\x60\x23\x89\x89\x13\x55\x6e\x61\x8d\xfd\xd6\xf9\x76\xad\xe5\x87\x94\x31\x0e\x6b\x69\xf4\xf7\x1e\x8b\xc5\xcc\x27\x66\x0f\xb9\xb9\x25\x97\x67\xd9\xd8\xb7\x77\x55\x67\x78\x20\x7c\x67\xd0\xd2\x43\x33\x19\x8d\xdb\xa6\x91\xba\xc9\x03\x95\xa3\x93\x84\xb8\x94\x22\xd7\xe5\x60\x0c\xa7\x19\xd1\x74\xc2\xd3\xdb\x74\xf6\x71\x70\xad\x7a\xa1\xf6\x05\xb8\xfc\x0b\xb9\x61\x47\xd8\x80\x65\x62\xfa\x60\xdd\xb9\x8c\x62\xa9\x77\x4f\x6b\xad\xff\x0e\xd4\x45\x2c\x2c\xda\x13\x46\x11\x2a\x29\x10\xc7\x54\x52\x97\xc9\x38\x37\x24\xd0\x92\x89\x22\x92\x9f\x72\xbd\xc9\xf7\xd2\xb3\x61\xfc\xfc\x31\xf2\x02\x6c\x38\xef\x74\x8a\x63\xe6\x09\x3c\xf2\x02\xac\x20\x17\x7b\xb3\x9b\x0f\x91\x39\xb5\x0a\x57\xbf\xd7\x57\xd3\x47\xfb\x4b\x42\x22\xb6\x75\xdb\xba\xf5\x4b\xee\x6b\xd3\xaa\x47\x4b\x7f\xbe\xcb\x26\x5d\xeb\x69\xe6\x21\x5b\x3c\xb8\x77\xdd\x9e\xad\xe6\xd8\x2b\x93\xd2\xc5\x88\xaa\xef\x8f\xf2\x2c\x97\x99\xfa\xef\xcb\x8b\xf9\x17\xde\x94\x74\xab\x76\xa6\x34\x08\xf0\x50\x7e\xf1\x1d\xbc\xc6\x05\x81\xe3\x96\x13\x38\xae\x8e\x5c\x03\xd4\x04\x57\xa3\x83\x23\x06\x6a\xd5\xcf\x35\x3f\xd6\xe7\xa1\x1e\x83\x4e\x26\x32\x02\x1d\x55\x19\xa3\x30\xe0\xc9\xed\xc6\xc2\xe7\x53\xd6\x3e\xee\x37\xce\xc8\x40\x9b\x60\x2a\xff\xbf\x0b\x2b\x5f\x5c\xad\xa7\xb9\x22\x3c\x34\x5b\xc6\x7e\xb3\xd1\x68\x16\x61\x6b\x14\xef\xba\x25\x9d\x61\x9f\xc0\x6d\xb9\x4b\x2a\x5d\xc3\x62\x2e\x7b\xe4\x30\xe8\x67\x4f\x41\x46\x6a\x7b\x9c\xb4\x77\x25\xe5\xb8\x66\x1f\x4d\xe2\xd5\x1f\x08\xac\xee\xb0\x91\xe7\x0a\x05\xd4\x9b\x0e\x82\xd9\x72\x85\x86\xd8\xeb\xb6\x1b\x12\xde\xd7\x54\xe9\x10\xbd\x1f\x66\x4f\x45\x03\xe1\xe4\xeb\x8e\xec\x8f\xd1\x9b\x4d\x8f\x6e\xd7\xbc\x79\x83\x13\x48\x3d\xe5\x4a\x10\xd7\x00\x92\xf4\xcc\x33\xb3\x0c\x6c\xc2\x5f\xc6\xbc\x29\x55\x66\x91\xd1\x7c\xc5\xdf\x45\xe1\xeb\x4f\x69\xc8\x25\xc7\xb3\xbf\x38\x90\x98\xb4\x73\x30\x08\x7e\xc0\xed\x9d\x38\x1a\x03\xa8\x25\xee\x5e\xa6\x97\x1b\xd2\x53\xfe\xa4\xfd\x8e\x55\x98\x30\x46\x94\x95\x40\x9c\x7e\x97\xcf\x13\xcf\x78\x57\x4e\x5c\x43\x07\xc3\x73\xb0\xaf\x49\xc8\x9c\x83\x37\xc2\x91\x21\x94\xc1\xd9\x73\x44\x54\xd3\x8d\xe3\xfd\x5b\x8f\x1e\x03\x68\x37\x95\x8d\x59\xf4\x14\x96\xd2\x47\x26\xce\x2b\x43\xc2\x53\xe9\xd6\xec\xda\x73\xc1\x16\x4c\x5a\xdd\xf8\x1d\x10\xfd\x07\x7d\xb5\xe8\xe1\x5f\xc0\x73\xb8\x25\x04\x1e\xde\xf3\x57\x79\xf1\xa9\xef\x31\x8f\x01\x97\x9b\xd5\x84\xdd\xd0\xb3\x6c\x51\xa4\x9e\x01\x97\xa3\xd6\xe4\x39\x48\xe5\xf2\x26\xbe\xdd\xa5\xf4\x87\xd8\x62\xbc\xf4\xe8\x84\x2d\x96\x7e\x0b\x69\xaa\x8e\xc3\x7a\xc8\xa6\x7a\x42\xb3\x36\x29\xa3\xfa\x9b\x51\x6f\xfe\x2e\xf3\xee\x91\xc0\x60\x77\x80\x36\x1a\x65\x61\x21\xdd\x27\x4f\x43\x80\xcd\xe7\xf5\x9a\x40\xfc\x76\xaf\x88\xdb\xfa\xed\xda\xba\xe4\xa5\xc7\xd4\xe5\x27\x92\x47\x89\x3a\x9e\x1d\xc5\xe3\x1a\xd7\xd5\x98\xdd\x72\xd8\x12\x9f\xae\xe5\x15\x84\xeb\xf3\xed\x1c\x4c\xe9\xf2\xe2\xb4\x61\x44\x28\x7d\xde\x61\xa6\x21\x61\xf3\xef\x32\x95\x4b\x79\xec\x80\x8a\x95\xb3\x80\x7d\x08\x39\xb1\x55\x76\xfc\xb6\xe0\x79\x58\x49\x1c\x56\x2a\xf7\x7c\x13\x3d\xef\x74\xe7\x84\x1a\xa2\xb8\x4c\x3f\x87\x2b\x39\xc7\x5b\xc6\x31\x84\xb6\x5d\x2d\x23\xa4\x38\x0a\x20\x52\x13\x06\xca\x4a\xb3\xad\xfa\x8f\x60\x86\x62\x36\x14\xf6\x36\x93\xb9\x42\x5f\x9a\x19\xc8\x86\x23\xfc\x28\x6d\x9c\x4a\x87\xff\x33\x03\x79\xb9\x19\x94\xc9\x5d\x48\x2d\x69\x66\x9e\x0d\x28\x46\x39\x46\x23\xd6\x6f\xb3\x7a\xad\x48\x7d\xff\x06\xd5\x84\x4c\x90\xa2\xbf\xdc\x34\xe3\xa0\x77\x88\x67\xf8\x67\x1f\xa2\xb3\x94\xa7\x86\x3c\x30\x7a\x4a\xe7\xd0\xf3\xb3\x9c\x0c\xb5\xee\x5a\xac\x29\xb2\xed\x08\xf2\x12\xfe\x9d\xd4\x56\x96\xa8\xb3\x43\xe3\x6b\x2f\xb0\xd6\xb0\x9d\xbf\xf2\x63\xe2\x3c\x91\x77\x1a\x58\xa3\xc5\x73\xd8\x5d\x75\x64\x5a\x03\xbc\x16\x6e\x9f\x79\xe9\xa4\xed\x3f\xd7\x64\x77\x6e\x0a\x1b\x39\x2a\xbb\xc3\xba\x95\xcb\x16\xf6\x4d\x70\x1d\x83\xea\x63\x06\xd7\xd3\x40\x46\x0b\xd9\x6b\xd6\x1a\xd1\x53\x3d\xc5\x48\x5d\xf5\x48\xde\xb2\x66\x9e\x94\x60\xe0\x8a\x69\x3d\xfb\x2f\x8d\xe8\xf4\x8f\xff\xce\xc3\x6a\x37\xef\xae\x3c\xf8\xdd\xb7\xea\x31\xa9\x03\x77\x5d\x17\x3e\x85\x82\x9e\x37\x8d\x21\x71\xda\xfb\xf9\x27\xe3\xa9\xb0\x31\x0f\x5f\xc2\x51\x6d\x9a\x8b\x08\x6d\xda\x16\x7f\x0b\xac\xa4\x2c\x97\x60\x72\xe3\x42\x4b\x81\xc5\xda\x96\x32\xb3\x55\xa8\x35\xce\xcf\xc8\x2f\xb1\x84\xf1\x65\xb1\xb6\xe2\xdb\x95\xe0\x12\x8d\x5b\xc9\xc6\x05\xd5\x76\x7f\x32\x9f\x13\x13\x30\xf6\x56\x11\x0a\x23\xae\x26\x8c\xbb\x7c\x87\xfc\xe0\xd4\x51\xb6\x0e\xda\xb1\x2f\x5e\x90\x36\x49\xd0\xe3\x6c\xa0\xfe\xe1\xcd\x8e\x0a\xb5\x2e\xa0\x72\x28\x58\x78\x55\xe8\xa3\xfc\x52\x02\x62\x31\x76\x2f\xc5\x81\x95\x00\x92\x9b\xdf\x03\x43\xb4\x43\xdb\x51\xab\x8c\x2d\x42\x90\xe9\x95\x98\x15\x6f\xee\xd5\xad\xb4\xd4\x55\xa6\xdd\xb0\xf2\xd5\x15\xb9\x84\x33\xcb\xc5\xea\xd2\x71\xd5\x2d\xd3\x7f\x15\xf0\x77\x53\x96\x7e\xb2\xa2\xd0\x3b\x69\x3c\x1b\xce\x41\x07\x1b\x75\x51\x24\xc6\xbc\x6d\x42\x91\x2a\xe0\x68\x77\x5f\x11\x2a\x0c\xdc\x25\x79\x6a\x28\xc9\x34\x95\x8a\x40\xda\x99\x22\x7c\xf0\x18\x54\xe8\x10\x5a\x17\xef\xd0\x75\xd4\xdc\xae\x38\xb9\x54\x13\x57\xc2\x1a\x02\xe7\x1a\xac\x21\xe1\x02\x31\x0a\x2b\x97\x40\xea\xcc\xac\xd6\x9d\xcb\x07\xc3\x7d\x67\x89\xc9\x99\xa0\x64\x79\x12\x25\xad\xf4\x67\x90\x1c\x07\x43\x41\x12\x90\xd1\x1c\x62\x67\x41\x3e\xa3\x08\xbf\xd1\x65\x36\xd7\xcf\x1c\x59\x52\x78\x39\xf0\xa0\xef\x62\x34\xe7\x5e\x60\x8d\xb4\x76\x88\xef\x30\x9e\xe3\xeb\x59\x12\x70\x56\x8c\x9d\x70\xdb\xd4\x76\x90\x0d\xf6\x76\x10\xa5\xc6\xba\xd6\x98\x88\x2f\x67\x37\xae\x25\x34\x85\x1e\xc4\x56\xf1\x41\x7c\x36\x06\xe0\xb2\x02\xc8\x25\x62\xf8\x54\x94\x76\x9b\xb5\xa4\x1a\x45\xe5\xd5\xfd\x26\xab\x8b\x7a\xbe\x2d\x2c\xf5\xe1\x26\xe9\x40\xdf\x73\xa1\x9e\x6e\x83\x5d\xd8\x6b\x35\x50\x8e\x2d\xc5\xad\xc9\xc2\x98\x97\x73\xe9\x5b\x17\xb3\x2e\x9e\xc1\x57\x86\x81\xe6\x4d\x2b\x22\xd7\x5c\x7d\x15\x95\x12\x91\xfb\x2f\x08\x71\x81\x50\x57\x81\xaa\x09\x90\x74\xe0\x85\xe8\xe2\x78\x1d\x37\x00\x08\xd5\xb9\x38\x96\xe0\xf9\x3b\xd6\x11\x4c\x36\x8f\x6d\x8d\x69\x67\xfd\xd6\x09\x5b\x67\xaf\xd9\xa7\x81\x8f\x8a\xcb\x2c\x96\xd6\xf0\x9d\x92\xbc\x4d\x74\x06\xfd\xd7\xb9\x07\xbc\x6f\x66\x93\x50\x1e\x49\xc2\x56\xb9\x5c\x8e\x6d\xee\x6b\x52\xc7\x12\x74\xcf\x8c\x29\x83\x8e\xe9\xcd\x03\x18\xe9\x1c\xf5\x83\x76\x87\xf2\xf7\xea\x52\x90\x47\xf6\x80\xc6\x50\x32\xb7\xce\x55\xda\xa6\x1f\x9d\xd9\x39\xc5\x58\x94\x37\x15\xd0\xec\x33\xa1\x6f\xa1\xa5\x56\xcb\x4a\xea\x4f\x99\xfc\xd6\x4e\xe2\xbc\x41\x1e\x72\xb8\x86\xa7\x51\x33\x3b\xd7\xdb\x9d\xed\xaf\x93\x06\x81\xeb\xdd\x9f\xd2\x8d\x67\xa2\x97\x78\xac\xb3\x51\x7e\xcf\xf7\xfe\x9a\x5d\xba\x8f\xc3\xef\x2f\x3f\xdd\xe7\xcc\x1a\xa8\x66\xb6\x8e\xb2\x55\xb1\xa1\x34\xd6\x2a\x3f\xd6\x9a\x2d\x57\x68\x93\x13\xcd\xb2\x03\x6b\xb0\x95\xc7\x95\x0a\xcc\x70\x37\x7f\x43\x51\x78\x3a\x5b\xfa\xfb\xe2\x9c\xdb\x03\x53\x21\x09\x14\x8b\x84\x2c\x32\x51\x72\x86\x9c\x81\x3d\x33\x07\xcb\xca\x47\x49\xee\x7b\x5f\x4b\xaa\x62\xdf\x46\x0f\xaa\x64\xdb\x8c\x93\x35\xfb\xd6\xd6\xb6\x4a\xe8\xd0\xc7\x48\x09\xc4\xed\x18\xdb\x74\x7e\x5d\xdd\x2b\xca\xcb\x5f\xd9\xc3\x35\x89\xad\xd0\x9d\x1d\xf2\x7f\xad\x7d\xdf\x0c\x02\x61\x80\x88\x8e\xc0\x4a\xa8\xdc\xaf\x69\x84\x0b\x82\xe1\x91\x8d\x3a\x72\xee\xac\xcc\x74\x47\x96\x98\x3f\x81\x9e\x5e\xe9\xf8\xec\x60\xfe\x6a\x2a\x7d\x09\x16\x36\xae\x46\xe5\xa3\xa3\x46\x6d\x46\x5f\x47\x56\x72\xa1\xa8\xab\x1b\x99\x96\x18\x9d\x6b\xb4\x82\x4b\x75\xb2\x23\x62\x6e\xeb\x4b\x2b\x21\x0c\xf6\xd5\xfa\xad\xdb\xd5\xce\x03\x15\x09\xe2\x28\x3b\x42\x7c\x52\x5c\xf5\xc4\xcf\x88\xc8\x47\x90\xeb\x85\x0a\x7d\x9e\xef\x9a\xa1\x72\x98\xa4\x4c\x10\x2a\xf3\xbc\x58\x58\x07\x4c\x8b\xfc\x30\x2f\xa4\x11\x4d\xf5\xdd\x1c\x71\x4a\xc4\xfe\x1d\x6e\xcc\x20\x88\x3d\xb0\x63\x89\x95\xe7\x5d\xc1\xc0\x5a\xcb\xb8\x57\x36\xf4\x97\xc4\x34\x6b\x1c\xe7\xe2\x96\x05\x4c\xf2\x6b\x56\x91\xcd\x48\xcb\x54\x2f\xcb\x6c\x6f\x24\x7a\x20\x3e\x17\xc3\xcd\xb6\xb6\xa3\x2d\xc7\x74\xd9\x35\x21\xf8\x79\xa0\x98\xe3\xb6\xff\xa7\x6f\xe6\xda\x51\xb6\x54\xf4\x40\x89\xba\x20\x17\x22\x3a\x32\x86\x9f\xdf\xf8\x26\x58\x52\x3c\x94\x42\xc1\xce\x71\xa0\xe4\x3f\xc0\x22\x1f\x08\x0b\xb7\xb0\xa5\x94\x7a\x53\x4b\x01\xca\x06\x8d\x50\x8c\xe7\x19\xb3\x44\x62\x5b\x21\x01\xdd\x49\xef\x51\xff\x83\x1c\x8e\x6c\xb2\x71\xe3\xa0\x10\x83\xb3\xa6\xd8\xe6\x30\xe2\x25\x6e\x82\x7e\xe3\xf9\xc1\x72\x66\x0b\x9c\x9c\x3c\x50\x6a\xff\x77\x1d\x08\x6a\x2e\x1b\x3b\x97\xdf\x9e\x63\xa7\xde\x9f\x00\x4d\x0f\x16\xca\x3b\x5e\xeb\x3a\x6f\x87\xea\x77\xd6\xeb\xbd\xe6\xb4\xe6\x48\x98\xc8\x37\xfa\x42\xdb\xc6\xc1\x4b\x57\xdd\x4e\x53\xe7\xf4\xf7\x26\x46\xa0\xfd\x22\xb5\x69\xf2\x12\x66\x4a\x17\x89\xb0\xe6\x4c\xdf\xba\x2c\xe2\xc7\x63\xe5\xce\xb2\xd9\x46\x7b\x1f\x87\x75\x3a\x53\x74\xbe\xae\x0c\x4f\x81\x65\x7a\x41\x9d\xbe\xc2\xe8\x3b\xac\x99\x78\x0b\x6f\x76\x44\xd0\xf9\x97\x64\x27\x49\x47\x92\x21\x3d\xa8\x6d\x20\xf2\xf9\xc2\x1f\x94\x38\x07\xff\x39\x7d\x2c\x69\x41\x33\x45\xb8\x3a\xb2\x5f\x9a\xca\x96\xd6\x27\x9b\xd4\xd7\xc2\xd5\xac\xfb\xc2\xff\xc2\x61\x17\x0d\x0e\x4a\x4c\x8e\x25\x2b\x22\x17\x62\x20\x48\x2c\xe7\x24\x03\xc8\xfb\x42\x99\x74\x26\x8d\xa5\x1d\xee\x35\x69\xc2\x98\x79\xb5\x91\xd1\x40\x31\x3b\x60\x10\x45\xa0\x84\xc8\x59\x28\x73\xbc\x50\x50\x27\x2e\xda\xd6\x6e\x1a\xb8\xc7\x86\x03\x39\xde\x93\xa4\x7c\x16\x96\x4d\xb7\x7a\xac\x9a\x8f\x11\x2c\x12\xef\x1b\xc9\xea\xa5\xbe\xde\x3b\x3a\xe9\x21\x8d\x01\x81\xe9\x1e\xb4\x4a\x3a\xed\x02\xea\x6b\xeb\x85\x32\x63\xcd\x0c\xa9\xa6\xbd\x53\xe6\xde\x91\xad\xa5\x43\xf5\x48\x57\x06\xd6\x89\x63\x15\xc6\x9d\x1a\x3e\xef\xe8\x0f\xbb\xb7\xd5\xef\x25\xcb\x56\x6c\x4e\xd8\x56\x24\x15\x08\xd4\x55\xd3\xcd\xd1\x65\x8d\xb8\xf8\x86\xf5\x4f\xbf\x59\xfa\x84\xa9\xb1\xec\x6b\xe4\xc2\xb8\xd8\xe2\x94\x8a\x44\xa4\x41\x3e\xd2\x93\x37\xc9\x69\x84\x2d\x00\x1e\x8e\xf6\x7d\x21\x9e\xd4\xcf\x8f\x22\xbd\x32\x3c\x90\x5a\x5b\x3e\x5f\x5f\xe4\x12\xa1\x27\x2e\xbf\x35\xf7\xd1\xcc\xad\xef\x6f\x55\x49\x63\xcf\x15\x13\xd2\xa4\x71\xb3\x87\xc2\xe5\x14\x61\x07\x43\x85\xaa\x10\xcf\x06\xa5\x8e\x13\x11\x0a\x90\x87\x71\x1b\xa2\xd1\x9d\x57\xfe\xfa\xb5\xc9\x29\xe7\xea\xb3\x77\x1c\x69\x5b\x0c\xd4\xaf\xbb\x6d\x54\x9c\xfa\x80\x20\x3c\xd8\x60\xc6\x73\x8b\xb1\x65\xae\x01\xaf\x62\x97\x3f\xa2\x72\xc6\x4c\x40\xb5\x22\x8b\xda\xed\x81\xe4\x99\x2b\x65\x02\x3a\xb6\xbf\x9e\x65\xbc\x57\x9a\x5f\xda\xae\x5d\x70\xe3\x61\x3b\x16\x7a\x62\x83\x55\x0d\xa0\x3a\x8b\x0b\x46\x99\x34\x47\x06\xba\x2d\xee\x06\x3b\xb6\xe1\xf0\x59\x52\x95\x1e\xb4\x91\xd2\x7c\x33\x8a\x72\x66\x69\xb2\x97\x1d\x29\xe9\xfb\xcf\xb3\x10\xd3\x24\x1a\x35\xbd\x33\x16\x1a\x16\x2c\x00\x27\xd9\xd8\x50\x4d\x01\xd2\xfa\x8e\x25\x00\x27\x1e\xb5\x9f\x28\x14\x26\x2e\x8b\xc0\xaa\xb8\xba\x15\xd3\x70\xb2\x26\x8a\xf8\x34\x88\x3d\xb2\x2c\x4a\x9a\x48\x48\x28\x36\xa9\x44\x0f\x07\x64\xf5\x64\xd5\x05\x29\xc5\x44\x0b\xbd\x9e\xe9\xe7\xa2\x47\xed\x06\x67\x67\x1c\xad\x63\x5b\xbf\x35\xfe\x67\x92\x29\xc0\x64\xea\x2e\xb9\x1f\x9f\x98\xcf\xc4\x66\xca\xb4\x63\xe0\xfc\xed\xc7\x09\x9f\xff\xfb\x40\xf8\x2d\x2a\x4f\x7d\xcd\xb8\xda\x62\x25\x63\x87\x29\x30\x84\x33\x7d\x4c\x7b\xbf\xde\x3c\x4c\x65\x1b\xb1\xb0\xa6\xa7\x67\x7b\xed\xea\xb3\x67\xf6\xfa\x39\x3e\x42\xcd\x3e\x9d\xb3\xf3\x83\xf0\x99\x39\x82\x33\xf2\x9d\x73\x2a\x91\x12\x07\xaa\x8a\x95\xc5\xd9\x67\x58\x0c\xc8\xc1\xd7\x1b\x55\x72\x6b\x35\x2d\xa2\xc7\xee\x3c\xd6\xd1\x4c\xe8\x13\x15\xa6\x1e\x9c\x2a\xbb\xf3\xed\x29\xd7\x46\xc8\x6e\x28\x04\x81\x35\x25\xca\x9c\xd5\x7c\xba\xba\xca\xa7\x8b\x94\xdc\xdd\x19\x46\xa6\xa9\x98\x3b\xc6\x77\x41\x7e\x95\x71\xe9\xdb\x7d\x5a\xc5\x77\xd1\xe9\x09\x58\x12\xa1\xab\xed\x92\x4c\x28\x3a\x24\xd7\x33\xf0\x41\x35\x74\xec\xaf\xe0\xd0\x6b\x9d\x32\x84\x7d\x67\x4d\x6b\xb2\x81\x8c\x4c\x99\x50\x7c\x30\xbe\x25\xe7\x38\x71\x49\xa6\x8f\x5a\xab\x55\x2b\x2f\x94\x91\x29\x42\x36\xd2\x90\x82\x45\xed\x68\x84\x9b\xe7\x15\x74\xb6\x3d\xcc\xa6\x3d\x22\x04\x97\xe2\x2b\x03\x11\x05\x59\x01\x78\xaa\xfa\x7c\x0d\x6b\xe8\x67\x08\x17\x1a\x65\x8b\x1b\x67\x73\x6b\x3f\x67\x7b\xf1\x7e\xc8\x8b\x9a\xac\x9c\x5c\x95\xaa\x67\x08\x0d\xd0\xf1\xba\x8d\x5f\x2c\x77\xcc\xc8\xe7\xa9\x04\xba\x56\x13\xab\x9c\x83\x5f\x5a\x16\x43\xaa\x80\xc5\x13\x8a\x4d\x46\x46\xc9\x87\x5a\x95\x23\x26\xb6\x3a\xcc\x35\x75\x0d\x43\xd6\x15\xc1\x18\xb6\x3b\xd7\x89\x66\xe0\x5b\x0e\xba\xc4\x39\x00\x15\x08\x26\x82\xd3\x9f\x0b\x39\x11\xc3\x9b\x22\x1a\x1d\xf1\xb1\x39\x0a\xc9\xcb\xcf\x57\xbd\x09\xe4\xb1\x9c\x78\x1e\xc9\x4f\x26\xa7\xd4\x7d\x78\x79\x2a\x26\x1e\xa2\x1e\x42\xe0\x95\x5c\x55\xec\xd9\x50\x3a\xf5\x2f\xe5\x1f\x88\x4f\xfc\x7f\x6f\xf4\xd5\x60\x59\x70\xe1\x43\x2a\xb0\xee\x70\xb7\x59\x4e\xb3\xb5\x6e\x79\x8e\x76\x9f\xe1\xd5\xb5\x59\x68\x5d\xd5\x1f\x35\x05\xa8\xcc\xee\x3e\xf4\xa5\x96\x23\xeb\xef\x90\x74\xe4\xbe\xc8\x5d\xe2\x65\xb5\x1a\x4e\x73\x77\x9d\xc0\x1d\xd0\x35\x86\xdc\xd7\xf4\x9e\xad\x10\xf0\xdc\x16\xff\x95\x9f\x15\xcd\xb9\xc3\xf6\x09\x5c\xa5\x34\x9d\x67\xa3\x0b\x5b\x0f\x44\xd2\xb3\xd7\x87\x12\xca\x1f\xc2\x34\xe4\x1e\xf0\xbb\x82\xb6\x01\x37\x43\x2e\x2c\xf7\xb1\x0a\xdc\x0c\xe9\x11\x4e\x4b\x1e\x24\x03\x95\xe6\xca\xa2\x86\x77\x0a\x31\x05\x11\x39\x0e\x61\x4d\xbd\x90\xd9\x8f\x0a\xa3\x55\x19\x49\x02\xa3\xa0\x6e\x09\xc3\xd8\xe3\x47\xcc\xfa\x84\x30\xc0\xdc\xe9\xe2\xa7\x9e\xc6\x70\x4c\x2a\x5a\x55\x3e\xb0\x22\xfb\xca\x2c\x1f\xc7\xfe\xc5\x9e\xbb\x7b\x64\x70\x8d\x77\x83\x94\xbe\xa0\x2b\xd1\x1a\x8f\xcd\xef\xa4\xc6\x89\x79\x8a\x6f\xd5\x69\x92\x63\x49\xf8\x47\xaa\xb3\x81\x21\x07\x7b\xd3\x63\x05\x1d\x7a\x82\x30\x76\xf9\x8c\xb9\x85\x0d\xc7\xd6\x16\x31\x2c\xec\x14\xad\xab\x9f\xf4\xd5\x47\x3c\x95\xfa\x20\x65\x3a\xe5\xf9\x55\x36\x73\x19\xff\xbc\x51\x2b\x64\x4a\xba\x74\xf4\xfa\x0a\x1e\x31\x33\x4b\x44\xde\x2a\xed\x90\x37\xf8\x92\x04\x1f\xeb\x88\xae\x60\x99\x7e\x68\x4a\x6f\xba\x1a\x29\x91\xfa\xd1\x3f\x0b\xb5\xbb\x63\x9d\x97\xd1\x10\x78\xd7\x52\x47\x8d\x76\xb2\x1d\xd9\xf5\x38\x2d\x1e\x3b\x3c\xa2\x87\xf2\x87\x20\x26\xed\x1f\x71\x5b\x55\x70\xb3\xf6\x21\x73\xa6\xd1\x35\xc5\x4c\xaa\x73\x18\x68\xfe\x49\xdd\xa4\x64\xb8\xe1\x3d\xd9\x14\xc5\xdf\x7c\x32\x37\x6d\x7c\x82\x1d\xff\xf5\xeb\xfd\x29\x75\x2e\xf2\x66\x68\xea\xa0\x6c\x96\xbb\x6a\x87\xdc\xe8\x43\x9b\xbf\x85\x21\x80\xe6\xe0\xa4\x45\x1a\xb8\xfa\x49\x86\xc6\x66\x58\xcc\xcc\xb1\x8f\x55\xe4\x95\xb1\xcd\x99\x8a\xe1\x71\xcd\x6f\xad\x6f\xf5\x91\x49\xa6\xa0\x22\x41\xff\x27\x9f\x06\x21\x06\xff\x84\x1c\xd2\x11\xcd\x50\xce\x75\xe0\xbc\x19\xde\xb7\x51\x29\xb7\xeb\x8b\xd2\x87\x80\x6e\xaf\xcf\x15\xb5\x45\xe9\xe3\x42\x27\xb7\xde\x55\x87\x93\xc1\x39\xcf\xd7\x16\xcf\xee\xce\xf3\xd5\xf9\x23\xb3\x89\x42\xbb\x6e\x2a\x53\x13\xd4\x01\xe4\xde\x74\xe9\x53\x97\xfd\x34\x47\x6b\x60\xbf\x2f\x58\xb7\x5a\xb1\x60\xf5\xe1\x09\xfc\x73\x32\xa8\x08\x51\x09\xda\x59\xea\x62\x65\x1b\x3a\x45\x05\xeb\x77\xa2\x80\xea\xc5\x39\xd1\xad\x95\xd6\x8c\xca\x25\x7d\xec\x0a\x9e\xab\xf8\x50\xda\xdc\x4f\x81\x76\x90\x61\x23\xf5\x86\xfd\x9f\x02\x25\xb7\x02\xdb\x3a\x61\xa4\x4a\xf6\x6a\xd7\x0e\xe5\xb7\x54\x07\x91\x5b\x9d\xd1\x4d\x55\x22\x41\x09\x62\xaf\x3c\xce\x9d\x5d\x10\x5b\x40\xd5\xda\xc2\x45\xf3\x53\x5c\xc5\xca\x6f\xad\xc6\xca\x74\x54\x93\x05\x04\x37\xdd\x2c\xf8\xbc\x5c\x68\xe3\x78\xaf\x8f\x35\xd2\x1b\x4c\xe0\x3e\x6c\x6f\x51\x38\xc4\xce\x85\x90\x0d\x60\x90\x75\x03\xd3\xb2\x94\x32\x0d\x61\x29\x48\xc4\x52\xcd\x9a\x2a\x2c\x23\x50\x20\x74\xf9\x5a\x1b\xc2\x92\xb9\x90\x13\x89\xfa\xf7\x86\xcb\x1c\x8e\x08\x68\xe0\x1f\x50\xc3\x39\xf1\x1d\x87\x6a\x4a\x12\xcc\xd0\x61\x2b\x23\x6c\x57\x12\xd3\xc6\xb6\x1b\x66\x72\xa8\xaa\x36\x69\x51\x27\x24\xe9\x68\x02\x95\x4b\x72\xc2\x25\x6b\x89\xed\x85\x26\x16\x9b\x68\xd7\x22\xeb\xbc\xee\x05\x7e\x7f\x5f\x48\x62\xfc\x2f\x09\x04\x13\xe6\x0d\xfe\x3c\x14\x58\x19\x6e\x2b\x02\x6e\x96\xfe\x9a\xd1\xb6\x32\xac\xa6\x42\x6d\xf3\x1c\x9e\x30\x25\xd7\xa8\x0a\xeb\x7d\xf5\x29\x59\x62\x56\x2c\x18\xbe\xa4\x35\xa2\x10\x5a\x43\x64\xb5\xb6\xf6\x86\xc6\x40\x25\x8d\xeb\x20\x1f\xb9\xdd\x4a\x43\xc9\xe6\x40\x46\xce\xbe\xe6\xb9\x58\x13\x24\x4b\xca\xf5\xd6\x26\x6b\xec\x6e\x8d\x53\x7d\x5f\xc6\x69\xb7\x7f\xfe\xd1\xfc\x03\x74\x46\xbe\x25\x6e\x36\x6e\xea\xf3\x2a\x3d\x54\xa5\xe0\x15\x13\x5b\x74\x29\x10\x2f\x8b\x3d\xe0\xdd\xeb\x8e\x78\xc5\x5a\x9b\x52\x27\x33\xda\x1f\xd9\xc5\x08\xd4\x20\x75\x64\x67\x21\x97\x4a\xd6\x94\xae\x1b\x92\x7f\x4a\xbe\xed\xd5\x70\x5c\xe7\xdb\xc6\x03\x2f\x7a\x06\x02\xd7\x4b\xe4\x8b\xc3\xb4\xf1\x20\x36\xa0\x14\x66\x7d\x35\x43\xa5\x99\x9e\x31\xea\x38\x2d\x75\xa2\x17\x98\x24\x77\x95\x5f\x88\xcf\x04\x20\x98\x08\x72\x58\x78\xf8\xbc\xc5\x27\xb9\x61\xad\xf9\xda\x6d\x0a\x56\xf0\x2c\x0c\x24\x5e\xf6\x98\xfe\xb6\x58\x49\x71\x4a\xeb\xd2\x99\x41\xda\xef\xdf\x27\x1e\xba\xbc\xdd\x9f\x13\xdc\x1e\xd4\xf3\x5f\x28\xf4\xd1\xe3\xd8\xa0\xa4\x78\x4e\x37\x7d\x25\xe5\x85\x94\xa3\x6a\x0b\x01\xd6\xce\x28\x2f\xe0\x9c\x1d\xc8\xb6\x17\x48\x3f\x52\x06\x2a\x8b\x87\x29\x6b\x6d\x62\x75\x25\xa6\x36\x62\x06\x61\x5c\x67\x02\xf1\x61\x5a\x8b\x7e\xd9\x57\x84\x24\x29\xcc\xf1\x9f\xb1\x5f\x7f\xde\x76\x16\xd0\x9f\xa7\xd8\xb5\x3e\x61\xb7\xa0\x84\x0d\x86\xf1\xa4\x74\xfa\xe4\xaf\xe8\xfe\x2d\xae\x85\xb0\x13\xf9\x2a\xec\x35\x85\x7c\xb5\x03\xbb\xa5\x83\xba\x86\x7d\x24\x50\x56\x6b\x3a\x10\xcc\x78\xea\x2f\x53\xab\xd7\x00\x7f\xb6\x33\x94\xa6\x9e\xe2\x4a\x5b\xaf\x6d\x0a\xff\xa8\x9e\x31\x54\x41\x52\x96\x74\x4c\x6d\xe0\xfa\x23\x8a\x6d\xd4\x3e\x6e\xe6\xa0\x76\x41\x8b\x1c\xd5\x5a\xc2\xe4\x4f\x87\xbc\xc7\xd1\xed\xd7\xed\x1f\x4d\xbe\x5f\xe7\x0b\xc3\x7e\x06\x33\x38\x00\xf6\xc7\x3c\x78\x8f\x43\xb1\x3d\x6a\x54\x70\x20\xa1\x64\xaf\xe9\x35\xc5\x83\xa5\x54\xc2\xa2\xb9\x74\x43\xd4\xd1\x62\xeb\xd6\x86\x7b\xd9\x5a\x3e\x17\x5d\xa3\x16\xeb\x24\xc1\xba\x9b\xb0\x9d\xfa\xdc\xb9\x39\xe6\xab\xc3\xcd\x68\x5f\xb5\xb1\x9f\xab\x9a\xed\xfc\x25\x61\xd1\x2b\x8c\x1d\x08\x71\xd4\xd8\x92\x16\xbc\x18\x13\x0d\xe3\xa4\x35\x78\x75\x5e\x70\xd9\x75\xec\xa4\x61\xcb\xdd\x6c\xdb\x33\x11\x27\xf2\xd3\x54\xe5\xa7\xde\x58\x59\x5a\xd8\x08\xe7\x07\xbc\x9a\xe2\x8e\x8f\x1e\x59\xa6\x0d\x59\x3f\xa2\xc9\x95\xf9\x2b\xb7\xcf\x18\x33\x15\x85\x34\xfb\xc7\x36\xf9\xee\x05\xd6\x43\x7f\xcb\xe7\xb9\xbd\xf4\xeb\xfa\x97\x38\x36\x19\xd1\xf4\x8e\xdf\x48\xc7\x6c\xb3\x38\x9c\xef\xeb\xef\xe9\xd6\xb6\xc0\xf3\xc3\xde\xd1\xda\x30\x9c\x54\x8b\x50\xec\xa4\x81\xed\xa5\xd8\x5f\xa6\x30\x09\x48\x4d\x90\xd5\x99\x9a\x61\x25\x6c\x86\x8d\x51\x31\xe6\x36\x3e\x0c\x9c\xcd\xde\xf8\x0c\x50\xa2\x6c\x96\xbe\x04\xc4\xd0\x2e\x12\x46\xd9\xa0\xae\xaa\xb2\x8d\xd4\x9a\x21\xdd\x6d\x51\x1f\xa6\x4c\xb6\x61\x5a\x4d\xba\x26\xf2\xd2\x94\x87\x11\xa9\x7f\xdb\x2f\xaf\x1e\x6f\x3b\xde\x86\x5f\x3b\xd6\x1f\x0d\x36\x88\x3b\xb8\x19\x73\x39\x98\xfd\x9e\x3b\x5e\xd1\x44\x06\x1b\xbd\x2d\x6c\x74\x3d\xd2\x6d\x57\xae\xf6\x11\xbe\x22\xcd\x6d\xda\x79\x5b\x0d\xef\xf0\x67\x80\xeb\xa9\x7f\x7b\xde\x8a\x67\x4b\x14\xba\x2d\xbf\xbb\xfc\xbe\xab\xe8\x66\xdb\x3c\x76\xa4\x1e\x4f\x0c\x9c\xff\x74\x58\x5d\x4b\x0d\xf6\xa8\x30\xf2\x7d\x29\x6f\xde\x75\x01\xa7\x1f\x39\x6a\x3c\x1f\xd2\x31\x4e\x2d\x5f\x81\x7e\x4f\x20\x7e\x6c\x3f\x0a\x51\x44\x2b\x84\x23\x87\x10\x82\x86\x51\x30\xb6\x9e\xb9\xa8\x75\x60\xfc\x51\x8d\x86\x45\x94\x82\x65\xc8\x71\x0c\x77\x30\x14\xa2\x8c\xd3\x44\xfe\x28\xb7\x44\xeb\xbf\x4f\x9b\x58\xc4\x25\x17\xc7\xc6\x10\x13\x81\x81\x41\x17\x40\x3f\xbe\xc9\x6c\x44\x0c\x71\xc4\x98\x2b\x64\x1b\x2c\x7c\xb2\xd6\x01\x5f\x0a\xfc\x08\x2c\x71\xd7\xa8\x2c\x87\x15\x3a\x20\xd2\x2f\xd3\x43\xad\x46\xd7\x98\x3d\x8d\x1e\xbe\x86\x41\x9b\x81\xdb\xcf\x59\xad\x9b\x9b\xf3\x10\x94\x81\x5c\x90\xdd\x86\x39\x3b\x5b\x64\x2f\xc7\xfc\xd7\x90\x6c\x7b\x53\x53\xd1\xaf\x41\x3a\xb9\x1a\x8d\xa7\x9d\x80\x35\x21\xf2\x60\x8f\x3b\xd6\x05\xdc\x3c\xf5\xe6\x4c\x4f\xd3\x28\xed\x55\x2c\x6c\x9c\x35\x37\x6b\x35\xec\xa6\x20\x48\x0c\x36\x9c\x8d\xef\xe2\x71\x84\x89\x92\xf9\xbd\x45\xc2\x41\x45\xe4\xe6\xa4\x98\x0c\x35\xdd\xf0\x08\xa5\x56\xfd\x74\x03\x1c\xde\xdb\x7e\xca\x1e\xdd\xac\xfc\x10\xf5\x08\xcb\xb2\xef\xc9\xb9\x8d\xfc\xfc\x66\xb1\x1b\x1d\x65\x76\x02\xc4\xd2\xc6\x85\xfa\x37\xe2\xfa\x9f\x01\x42\xce\x67\xdc\x1c\xec\x8c\x39\x99\x6d\x81\x1c\x0c\xb4\x31\xc3\xc2\xdf\xe8\x8b\xe0\xff\x87\x93\xb7\x08\x8b\x02\xec\xfb\x70\x41\x4a\xba\x53\x52\xba\x91\x1e\x5a\x24\xa5\xbb\x1b\x86\xa1\x43\x62\xe8\x92\xee\x92\x86\xa1\xa4\x61\x68\x24\x85\x21\x04\xe9\x72\x40\x7a\x90\xd0\x01\xa4\x91\x9a\x73\xbd\xef\xf7\x6d\xce\x39\xbb\xef\xfa\x2d\xee\xeb\x5e\x3c\x9b\xe7\xbf\xbf\x11\xaa\x75\x8e\x5e\xe5\x82\xbc\xe4\x65\x26\x0a\x63\x51\x91\x29\x1c\x05\x4c\x28\x02\x43\x73\xb7\x8d\x63\x3f\x3f\x49\x35\xf2\x27\x90\x11\x0a\xfc\x97\xd3\xf1\x8f\x0e\x11\xd9\x17\xca\x80\x12\xed\x6b\x7e\xce\xf0\xd1\x15\x94\x3e\xf1\x33\x72\x82\x40\x55\x3f\xe5\x15\x72\x6a\x5b\x48\xf6\x6b\x79\x7b\xc1\x03\x6d\xa3\x03\x12\x72\x9d\x0a\x5b\xf3\x95\xd0\x91\x15\x38\x52\xa7\x81\x68\xab\x05\x76\x22\x19\xbf\x3a\x78\x12\xf7\xd2\x1f\xcc\x63\x03\xa0\xab\x4e\x0d\x3d\x0a\x40\xab\x6a\x81\x45\xb3\x83\x4d\x11\x21\x4a\x12\x02\x6d\x2f\xc7\x7c\xcf\x2f\xef\xdb\x23\x33\x98\xa5\x0a\x5b\x0f\x06\xeb\xcc\x0b\x93\xb5\xd2\x84\xfa\x12\x4e\x4c\x7a\x95\xc6\x52\xa2\x32\x3c\xe1\x1e\x67\x26\xd8\xa3\x5e\x42\x69\x9f\x97\x09\xe8\xfe\x98\x6c\xe4\xbf\x49\xd8\xf2\x9e\xf7\x19\x13\x4d\xac\xf9\x17\xda\x52\xca\xfd\xed\xbb\x0f\x09\x5e\x45\x4a\xee\x9d\xca\x34\xf5\x68\x45\x60\xba\xc4\x34\x7a\x5e\x22\xd1\x5e\xb9\x96\x8d\xfa\xef\xcb\x38\xff\xe4\x14\x46\x71\xd9\x36\x3e\x72\xab\xa1\xb0\xa0\x37\x80\xc0\x5f\xb6\x9c\xb7\x19\x75\x5e\x0b\x8d\xf0\x9d\x24\x45\x8b\xa0\xc0\x73\x0d\xb7\xf5\x17\x21\x56\xf6\xf1\xdd\x66\x3b\xf1\x54\xcf\xc7\x89\xd7\xbc\xea\x2e\xc7\x00\xed\xb6\x62\x1a\x86\x28\x4d\xd4\xfd\xc8\x71\xf7\x0c\xd5\x27\xfe\x43\x59\x2b\x11\x41\x1a\x33\x28\xbc\xd9\x98\x21\xba\xc6\xed\xef\xc6\xee\x9c\xbc\x9d\x55\xaf\xa6\xe5\x8f\xae\x44\xc2\xf8\xde\xc7\x2c\x3d\xb4\xf6\x2d\x0f\x3a\x9a\x3f\x7e\xdb\x52\x6e\xe1\x0a\xe9\xb8\x65\x13\x9b\xdf\xe5\x09\x3b\x36\x87\x77\x78\x30\x03\x30\x6a\xb9\xec\xe8\xb4\xdc\x3f\xa7\x22\x1b\x57\xda\xe2\xe5\x48\x46\x11\xf3\x2e\x3c\xf4\xfa\xf7\x2e\xc4\xf7\xab\xee\x6b\x3a\x7d\x4c\xf7\xb0\x83\xd9\x36\x85\x27\x9b\x17\x95\x46\x39\xd2\x62\x2d\x58\xfa\x8b\xe9\xa9\x5e\x6b\xc7\xac\x39\xf6\xda\xe7\x00\xb7\xaa\xea\x4a\xce\x78\x69\xa2\xee\x45\xac\x8e\x93\xa3\xe1\x31\xc2\x54\x0d\x15\x3e\x7f\x42\xd7\xa8\x5f\xf4\x8b\xf8\x20\xf5\xea\xf7\xfd\x79\x72\x8a\xef\xd0\x34\x98\xb8\x4a\xb2\xf7\xe4\xe0\x54\x71\xea\xcd\xc4\x87\x1d\x29\x61\x0b\x59\xa2\xef\x38\xc4\xdc\xbf\xd2\xe7\xec\x39\x84\xb7\x8c\x4d\x3b\xf5\x4a\xc8\x05\x5c\xde\x32\xe5\xb7\x57\x88\xb5\xae\xff\x64\xcc\x85\x45\x04\x4d\xb2\xa9\x9f\x88\xec\x39\x6b\x2c\x08\x2a\xe5\x11\x00\x7f\xe6\xd5\x48\xed\x97\x39\x19\xb8\x39\x45\x0c\x73\x99\x29\x15\x81\x4a\x81\x6e\x4e\x3f\xa8\x43\xf0\x86\xa3\x3a\x9d\xbb\x9a\x04\x6d\x36\xfb\x7a\x00\x6c\xfe\xd7\x12\x2d\xbf\xbf\x51\xb6\xff\x7c\x87\x11\x66\x8c\x93\x18\x3b\x44\x93\xf1\x85\xb4\x94\x78\xbd\x31\xf0\x92\xa8\x72\x93\xc7\x1c\x2f\x70\x06\xa7\x00\x63\x55\x0c\x95\xd2\xfc\x5d\xc9\xf5\x49\x9e\x81\x76\x2c\x6e\x46\x29\x83\x8b\x9d\x97\x26\x26\xa9\x6e\xcb\x50\x54\xa0\xd0\x2c\xd4\xd9\x85\x00\x0b\xe9\xf4\x94\xad\x82\xee\xa2\x8e\x45\x18\x4f\xff\x73\x6a\x33\x7a\x41\xd6\x38\x8f\x54\xe5\x9e\x00\x0b\x19\x7e\x9e\xbf\x45\x3e\x9e\x8f\xc1\xd2\xe4\x51\x08\xb2\xaf\xee\x36\xb7\x07\xdb\x7a\x49\xcf\x64\xd7\x94\x7e\xf1\x4d\x50\x51\x7d\x27\xdc\xa5\x00\x93\xd3\x90\x4c\xe2\xf3\xf8\x54\xfe\x6b\x65\x37\x06\x5b\xa8\x73\x56\x00\x46\xcd\x7f\xcf\x6a\xc3\xd7\x51\x01\x5d\xfe\x78\xf2\xcd\x0a\xd2\x86\xdd\xb6\x16\xe6\x99\xe7\x58\x91\xeb\xcb\x98\xa3\x05\x77\xa9\xfc\x94\x56\x93\xaf\x64\x4a\xfe\xf5\x48\x6c\xc1\x5c\x6d\x4c\x80\xe7\x35\x51\x2d\x30\x59\xd5\x65\xce\x85\xe0\x0a\x94\x9a\x21\xa9\xe7\x96\x64\x88\x46\x99\x15\xf6\x25\xfa\x4d\xd5\xc2\xeb\xa6\x41\x40\x0d\x98\x48\xaa\x2f\x19\xd3\xe2\x86\x99\x05\xb4\x64\x22\xd3\xd0\x29\x29\x95\x42\x98\xc4\x93\x8b\x2b\xea\x33\x2f\x05\xa3\x69\x57\xfd\x4e\xcd\x87\x4b\x85\x94\x51\x0a\xcb\x8a\x6c\x48\xbc\xb7\x52\xf0\xed\xad\xcd\xee\x2e\x48\x32\xdc\x36\x7c\xf1\x32\x32\xc5\xe0\x85\x63\x54\x84\x32\x5b\x24\x4c\x19\x61\x53\x4e\x95\xca\xc5\xc8\x3c\x3b\x08\x19\x73\x5d\x14\xed\x27\x10\xdf\x72\x65\x8b\x84\x90\x32\x53\x0d\xbb\x62\x6c\x45\xae\x60\x57\x03\xa9\x8b\x2f\x1d\x18\x3e\x93\x81\x20\x71\x69\xb2\x12\x05\x3c\x84\xcb\x0a\x74\x14\x7f\xd8\x00\xce\xc5\x74\x74\x58\x70\x0c\x84\x21\xa0\x8b\x52\xc3\x97\x8b\x58\x60\x21\x68\x94\xd0\xb2\xad\x6e\x75\x88\x42\xeb\x85\x9f\x0d\x1a\x0b\x97\x41\xce\x09\xd1\xfa\xb8\xee\x68\x22\xbf\x33\x05\x69\x98\xde\x83\x8c\xc0\x82\x12\xd3\xc9\xeb\x79\x55\xf6\x20\x10\x23\x4b\x80\x63\x9b\x3e\xf2\x9c\x85\xa1\x03\x63\x36\x3c\xee\x57\x4a\x87\xc6\x47\x8c\x06\x2b\x42\x99\x92\xee\x5e\xf9\x98\xd7\xe3\x76\xde\xef\x94\x34\x34\x0e\x3d\xf7\x9d\x68\x44\x3c\x34\xdd\x08\x88\xe8\xa4\x98\x47\x06\x08\x55\x88\xe4\xb8\x2a\x46\x42\xe9\x89\x5e\xc4\x6e\xa5\xe6\xe7\x6c\x76\x0c\x75\xbd\xfa\x19\x62\xdb\x6a\x9a\xbb\x67\xab\xbc\xbd\x22\x47\xcc\xc0\x20\x3d\x66\x00\x91\x34\x15\xa5\x57\x9a\x1a\xa1\xc0\x99\x53\xa2\x0f\xcd\xf6\x51\xd3\x3d\x12\xc3\xd6\x12\xdb\x53\xb0\x20\xa1\x9e\x73\x19\x2d\x57\x8b\x9a\x90\x9f\xca\xed\x51\xd2\x1f\x5c\x3e\xa1\xc3\xf7\xe6\xb0\x6f\xcd\x5a\x20\x85\xae\xba\x2a\x59\xde\x1b\x56\x43\xa5\x89\x73\xb1\x1a\x70\xf2\xd8\x6c\xf5\xdd\xa5\xd5\xfb\xd6\xef\xf9\x80\xa1\x38\xc7\x0d\xc3\x1e\x62\xe5\x92\xbf\x52\xcc\x29\x35\x52\x77\x3a\x04\x4d\x4f\x72\xb3\x5d\xf7\x3e\xae\xc6\x2c\xac\x76\xe5\xf7\xc2\x15\xfc\xd6\xbb\xfa\x9e\xef\xb7\x87\xdd\xb0\xc0\x25\x14\xd6\x24\x42\xcc\xa1\x7c\x7e\x25\xd0\x1e\x52\xeb\xe4\x33\xf2\x9d\x19\x75\x4b\x8c\x69\x7f\x30\x2f\x5d\x46\xb0\xc8\x16\x79\x8c\xc5\xd9\xbf\xda\x95\x92\xc0\x94\x1f\xa7\xe2\x3a\xfc\xa9\x9f\xfe\x60\x2d\x4c\x2f\x47\x23\x27\xaf\x1d\x4c\xe7\xef\xfe\x3e\x9c\xc9\x46\x2b\xa7\x50\x36\x55\xe9\x35\x58\x2e\xff\xa6\xe9\x24\x3f\x2b\x36\xe4\x0d\xa4\x07\xb5\x8c\x2d\xb8\x42\x47\xe7\x93\x01\xb8\x85\x77\x86\x20\x5d\xc7\x6f\xcc\x54\xa0\x3a\x76\x03\xd7\x9b\x1d\x20\x12\xcc\x8e\xc8\x66\xb9\xf2\xcb\xbe\x65\x52\x31\x85\x2e\x5e\x64\xde\x72\xa0\x99\xb1\x68\xac\x84\xbd\x3c\x66\x3d\x73\xf1\xcf\x4f\xcd\xa8\xef\x62\x55\x1d\x47\x84\xa3\xdc\xc0\x0e\x88\xbf\x2a\x28\x46\xf0\x2f\x0e\xbe\xc3\xa6\x77\xa2\xe8\x5b\x7b\x99\xac\x74\x1d\x67\xf2\x32\xb4\xeb\xaf\x99\xdb\xae\x50\x81\xeb\x2a\x80\x8f\x9d\xe2\xb3\xe4\x76\xec\xf1\xe9\x20\xcd\xc8\x04\xb4\xf4\x69\x77\xe6\x13\x60\x64\xee\x45\xd5\xb0\xc6\x1f\xfc\x98\x69\x66\x03\x9b\xb4\xba\x9f\x38\xbc\x38\x1b\xe6\x35\x0e\xba\x38\x8e\xeb\x2b\x34\x4a\x75\x0a\xa9\xb5\xe6\x37\x71\xaf\x93\xf0\x6a\x7e\xc1\x1d\x14\x3f\x72\xda\xe0\x08\xd8\xc4\x98\x87\x2c\x5b\x54\x63\x53\xd3\x2a\x83\x49\x9a\x93\xee\xa1\xf7\x42\x72\xd8\xee\x8a\x2c\x02\x2b\x97\xd6\x18\x6f\x03\x13\x50\x3c\xe4\x63\x29\x4c\xf1\x07\xaf\xa2\xd9\x5b\x0b\x54\xaa\xde\xd0\x8e\xfc\x68\x64\x7f\x97\x23\x73\x74\x1e\xb8\xa7\x89\x35\x12\xc9\x4f\xfd\xf6\x7b\x4f\xfa\xe4\x75\xd4\x2e\xf0\xe8\x03\xf5\xbd\x30\x24\x31\xaa\x79\xec\xe5\xf8\x0f\x4d\x61\xf5\x33\x71\x9a\x69\x60\x3b\x0c\xe8\x54\x32\x6a\x27\x3e\xf9\x7b\x6e\x32\xcf\xcc\x58\xa8\xa8\x84\xea\x39\xf2\x7e\xd7\x9e\x9a\x17\xbc\xac\x6c\x3d\xe9\xea\xbb\xbe\x86\x2f\x53\xa1\x06\xbe\x68\x9c\x71\x11\xe9\x4b\x91\x37\x89\xe8\x5d\x35\x28\xfb\x9e\xe3\x19\x4e\x83\x28\xd0\x2c\x58\x3a\x06\x8e\x14\xba\xf3\x89\xe1\x2d\xf6\x13\x91\x24\x6f\xdd\x2f\x77\xb9\x92\xf7\x52\xec\x5f\x4d\x2b\x8d\xb1\xf3\xcc\x98\x1f\xea\xd1\x2c\x2a\xca\x25\xc5\x66\x2c\x3b\xc4\x9a\x95\x75\x04\x61\x56\x73\xa7\x79\x71\xb4\xac\xbc\xce\x86\xa5\x4d\xd1\x3a\xcb\xdc\x13\x35\x6b\x1a\x1e\xa1\xbd\x29\xd9\x5e\x3c\xba\xe5\xb7\xb6\x5d\x0b\x04\xe9\x2a\x54\xba\xbf\xd3\x52\x48\x70\x71\x32\xfe\xe3\x2d\x75\x5c\x41\x87\xf9\x95\x8c\xb0\xab\xc0\xe8\x72\x9f\x4d\xef\x17\x46\x36\x12\x10\xc1\x4c\xef\xe2\xa2\xdc\x44\x7d\x15\x23\x69\xcc\xef\x20\x96\x3c\x49\x9f\x36\x76\xbc\x00\x51\x1b\xf0\xb8\x7e\xfd\x27\x07\x12\xb2\xd9\x11\xbd\xad\x88\x77\x49\x49\xde\xe1\xaa\x50\xa6\xf5\xbd\xb9\xc1\xc8\x50\xbe\xc7\x49\xef\x7c\x21\xf0\x5b\xd9\xe4\xf8\xc3\xb7\xdd\x87\x65\x4e\xd1\x4f\x92\x21\xbb\xd7\xb7\xab\x34\x57\xbd\x4e\x67\x32\xae\x1c\x6e\x67\x06\x1e\xb7\x75\xc4\x5a\x75\x1e\x80\x4e\xe3\xf4\x25\x25\xa6\xc5\x5d\x97\x46\xef\x85\x7a\x5f\x68\x35\xa6\x69\x45\x54\x6f\x7c\xfd\x0d\x73\xc7\x61\x50\xfb\xd8\xae\x5f\x48\xc7\x7b\x95\x2f\xb8\x69\x24\x95\xb6\xed\x7d\x4a\x07\x1f\xc5\xa4\x1a\xb7\x4c\xf7\x94\x8c\xa4\x2e\x7e\x85\x08\x0c\x85\xce\x25\x26\xfb\x6d\x80\xef\x2f\xb0\x01\x71\x83\xba\xd4\x47\xe1\x2e\x03\xf8\xdd\xb5\x81\xde\x10\xe2\xa0\x1c\x10\x69\x19\xee\x15\xd6\xbd\x9f\x94\x84\x54\x46\x58\xaf\x4e\x2b\x07\xfe\x34\x9f\xc7\x09\x71\x43\x3f\x6c\xea\xa1\xa9\xd9\x21\xfc\xe2\x45\x10\xa9\x08\x6d\xab\x05\x87\x78\x9e\xbf\xf9\xf2\x6d\x0f\x15\x52\x25\xc5\x5d\xb8\x8b\xfd\x3b\xfd\xe1\x73\x49\xf6\x29\xea\x76\xd3\x52\x83\x45\x54\xa7\x27\x84\x9a\xaa\xae\xa1\x7d\xb2\x00\x11\xe8\x4c\x3c\xff\x77\x79\xb7\xd2\x4b\xab\xe7\x36\xd5\xdb\x0b\xd9\x67\x06\xb3\xb2\x28\x27\x34\x77\x78\x3f\x7f\xe4\x6e\xd6\x3f\xa0\xe6\x25\xb8\x77\x52\xcd\xdd\x13\x43\x2b\xb5\x7b\x20\x8b\xfc\x2d\xd8\x70\x19\xd0\xda\x2d\xbe\xf1\xd8\xf7\x3b\x7d\x6d\xa5\x6f\x25\xe8\x36\x7d\xe6\xdb\x6a\xd9\x76\x2c\xb8\x72\x6e\xd5\x66\xc2\xb2\xde\x1e\x6d\x01\x72\xfd\xfa\x56\x6f\x3a\xec\x6a\x55\xae\xdf\xdf\x5b\xf8\xc0\x97\x65\x8c\x5d\xc6\xd4\x6c\xfd\xe5\xd7\xf1\x98\x57\x12\xed\xdb\x7b\x69\x1b\x81\x7f\xe5\x2e\x2a\xb1\x2f\x50\x3f\xd7\x5a\x3c\x65\x6e\x38\xec\x50\xe7\xf2\xbb\x29\xae\xf2\x8c\xf4\xc7\xe4\x5f\x77\x27\x9f\x19\x20\x60\xc7\xb7\x02\xdf\x56\xb1\x75\xbb\x18\x65\x1e\x8c\x88\xce\x6e\x24\x7c\xb5\x31\xde\x24\xe1\x48\x30\xb2\x9d\xa1\x85\xde\x0e\x4e\x84\xff\x39\x62\x6a\x2f\x24\xc8\x3e\x2f\xa0\x7f\x6c\x87\xa8\x17\x40\x67\x63\x6a\xba\xca\x0a\x8c\xe5\x68\x1b\xe0\x3e\xda\xbc\xf5\x13\x85\x4c\x22\x99\xff\x70\x96\x3f\xde\x3f\xfd\x42\x96\xb6\x12\xee\xb3\xcc\xfa\x5f\x51\xee\xe9\xb7\x70\x84\xd4\x6f\x90\x3b\x2c\xb9\x09\xb7\xaa\xf9\xc0\x78\xa6\xab\x09\x9a\x19\x55\x68\xd4\x58\x19\xd4\x42\x0f\xe2\x58\x2d\xc4\x93\xae\xa2\xc8\x64\x90\x05\x6d\x9d\x87\xa8\xa8\xc7\x37\xfa\xa4\xfb\x55\xa7\x2c\xe6\xef\x0f\x45\x93\x4e\xdb\xd6\x38\xdd\xac\x59\xb4\xaa\x76\x3e\xbc\x74\x34\x7f\x93\x26\xe5\xc9\x97\x08\x8e\xaf\x62\xfd\x7a\x9e\x0b\x0d\xfc\x01\x2f\xb6\xca\xe7\x36\xe6\x3b\xdd\xdb\xba\x89\xab\x23\x91\xb9\x21\xa0\x3a\x6a\x28\x7a\xb7\xf1\x8f\x72\x2a\x02\xd6\x81\x2a\x8d\x3f\x40\xcc\xd8\xeb\xca\x63\xbe\x2c\xa1\x50\xe4\xa4\xa1\x74\xaa\xfc\xf0\x02\xbc\xbb\xae\xe8\x51\x55\x92\x54\x90\x45\xaa\x64\xbb\xc6\xf3\x70\x3d\x7e\xe7\x0f\x61\xcb\x08\xa7\xa8\x52\x42\xff\x5e\xd9\xe3\xf3\x75\x39\xb0\x65\xed\x73\x38\x11\x4b\x51\xc8\x93\x98\x23\xe2\xda\x75\x4f\x22\x95\x64\xb0\x79\x30\x70\x26\x15\xcd\x16\x57\xdb\xb3\xc7\xda\xe3\x57\x69\xed\xf2\x41\xd2\xc2\x0e\x04\x3a\xa5\x59\x2c\xc7\xdb\xda\x89\x9e\xaf\xf4\xce\x19\x2b\x95\x47\x31\x69\xd9\x65\xcf\x85\x2b\x79\x79\x58\x12\x85\x7b\x9d\x71\xdf\xaf\x0d\xd9\x23\xd7\xd9\x30\x7d\x90\x27\x4a\xba\x67\x19\x48\x20\xfb\x73\xd4\x70\xb5\xaf\x65\x33\x71\x8b\x3b\xa0\xbe\x99\x13\x40\xbd\x20\x46\x0b\x3a\x84\x74\x7c\x80\xa8\x3b\xf8\x95\x4f\x31\x8c\xfa\xee\x93\x79\x4d\xad\x4e\x1e\x62\xe2\x89\x20\xa2\xe8\x7b\x15\xa4\xac\xbe\xcd\xc1\x9f\x26\x3e\x55\x6b\x7f\x65\xee\xe2\x3a\xb7\x75\x01\x34\x1e\xb0\xb3\x41\x03\xbe\x09\x67\xce\xde\x29\x68\xbf\x07\x6a\x71\x1f\x82\x8c\xfb\x54\x0e\x67\xea\x53\x2b\x6a\x62\xcb\x79\x09\x45\xb1\xa5\x5f\x40\x83\xb3\xf0\x58\xd7\xe5\x7a\xf4\xed\xd2\x62\x96\x5c\x26\x86\x8f\xc1\x70\xcd\xc8\x21\x52\x30\x3b\x9b\x7d\xa9\x2a\x6e\xb2\xe2\x94\xb1\x05\xda\xd3\x3b\xa8\x9a\xb6\xca\x5b\x26\x2e\xfe\x55\x2f\x0e\x04\x97\x61\xe4\x7d\x9e\x2e\x3d\xa8\xc3\x46\x16\x9e\x00\x63\xa7\x94\x12\x97\xa2\xba\xbb\x5a\xa6\x23\xa2\x2c\x24\x76\xfe\x5c\x2c\xfc\x25\x40\x61\x89\x64\xd8\x72\xe1\xbe\x9b\xc1\x6a\x98\x37\x18\x25\x25\x1c\xfc\xf1\x80\x88\x33\xb9\xc3\x6d\x2c\xbf\xe8\x99\x79\xfc\xd3\x6c\xcc\x76\x88\x4a\x77\x5d\xc7\x2c\x5c\xc2\xa1\xaa\x62\x1f\xff\x00\x3a\xa0\xae\xee\xf9\x99\x38\x99\xcf\xac\x04\x10\x6a\xe9\x38\x79\xb0\x58\xc7\xba\x6c\x7e\x64\x5e\xc7\x4b\x38\x40\x22\xd7\x8b\x67\xf0\xda\x8c\x1f\x64\x44\x2b\x8a\x58\x89\x4f\x25\x04\xcf\x1e\x2f\x3a\x28\x78\xb6\xb0\xb9\x32\xbc\xea\xcc\xd2\xd1\x05\xbc\x1f\xc5\xbf\x12\x61\xb1\xeb\xf4\xb3\xb8\xab\xf4\xc4\xb9\xaf\x08\x26\x3d\x25\xb2\x5d\x1d\xfa\x6c\xb3\xc8\xb8\x50\x19\xbc\x04\xea\xc5\xc5\x5e\xff\x8e\xec\x76\x51\x22\xbe\xf4\x25\x1e\xd0\x44\x84\x5c\x5b\xdf\x74\xf6\x22\x69\xcd\xad\xc4\xf9\x07\x80\xae\xda\x94\x6b\x49\x1a\x4b\x72\xed\x1a\xe2\x76\x28\xe7\x94\x95\xfc\xba\x71\xcf\x56\x7d\x55\xbb\x74\x0e\x46\xe5\xa7\xc9\xef\xeb\x45\xba\x67\xce\x99\x7f\xed\x3b\x67\xc1\xc4\x41\x27\xea\xd0\x31\x77\x63\x94\xce\xab\xb8\x79\x95\x28\x63\xfc\x4d\x4f\xc2\xfa\x33\x6c\x32\x24\xfa\x3a\xe3\x2b\x37\x5b\xd7\xb3\xa2\x08\x48\xa9\x52\x88\xed\xe3\x87\x37\x39\xe9\xf7\xa9\xd8\xd7\x78\xeb\xe9\x5e\x4e\xa3\xac\xd6\xdc\xb3\xa9\xa2\x37\xe2\xd6\x23\xfb\x42\xef\xe2\x54\x58\x3d\x00\xec\x26\xfc\xed\xc6\x38\xeb\x7d\x1e\x05\x6d\x43\x80\xa8\xdc\x03\xee\x50\xe3\x11\x70\x9b\xdb\x2b\x8e\x3e\x3a\x0b\x90\x01\x02\xc4\xc8\x52\x33\x77\x93\x09\xc5\xe1\xcf\xab\x51\x0f\xff\x2a\x27\xea\x9d\xa4\x41\xec\x19\x0f\x58\xfe\x5d\x82\xc9\xd5\x2f\xa9\x40\x84\x43\x95\xad\x57\x38\x59\x44\x88\xb9\x3c\x93\x8c\x51\xcf\x0f\x35\xdd\xb4\x94\x16\xde\xfc\xc4\x16\x58\x6f\x91\xd5\x75\xbc\x94\x38\xcc\x07\xe8\x71\x0b\x45\x1f\xd1\x8e\x87\xfd\xa6\xf2\x75\x7e\xfa\xdb\xfa\xf3\x1c\xca\xf8\x73\xd9\x9d\x53\x7e\x69\xba\x23\xb2\xa4\x18\xd8\xa6\xb9\xd6\xe2\x86\x37\x48\x70\x5d\xb0\xa4\xcf\xd4\x4d\xbd\xa9\x50\x90\xb2\x7a\xf7\xed\xa4\x82\x8f\x12\xf4\xd9\xbc\x58\x72\xec\x3d\xcf\x3e\x19\xbc\xe5\x8b\x27\x4c\xd5\x89\x1b\xfd\xa8\xaa\x82\xad\x2c\xa3\x83\xef\xc3\xbc\x36\x71\xc5\x82\xa8\xf9\x17\x34\xbf\x02\x7f\xe5\xeb\x34\xfb\xa6\x1e\x74\x7c\x21\x03\xea\x79\x87\x5a\x5d\x17\x13\x37\xec\x19\x78\xf1\xd4\xda\xef\x72\xfb\xcd\x0d\xa6\xa6\xe2\xb0\x80\x6a\x49\xf1\xb3\x4c\x0b\xa6\x28\x1f\x9f\x37\x02\xcf\x2c\xcf\x2c\xa1\x2a\x50\xe9\xe9\x49\x3b\x01\x89\xec\x2b\xbb\x61\x4e\x12\x21\x2d\xfd\x58\xbb\xe8\x63\x98\xf6\xde\xeb\xcc\xdd\x90\x59\x69\x54\xcd\xad\x0d\x53\xa2\xcc\x6b\xbc\xd2\x33\x70\xb0\x95\x45\x00\xa3\x74\x60\x32\xc8\x2f\x74\x6b\xe1\x24\x3c\xff\x21\xec\x90\x21\x90\x41\xe6\xec\x31\x24\xae\x62\xdf\x2e\x70\xdd\xa7\x2f\x86\xba\xbb\x38\xc4\xfd\x90\xaa\x75\xe2\xa1\x62\x82\x4b\x4e\xe6\x4d\x37\xd3\x8f\xee\x94\x2d\x1b\xdc\x32\x44\x61\x79\x50\x08\xa7\xd3\x7b\xd6\x2b\x74\x41\x2d\x90\x0d\xd0\x36\xba\x33\xf1\x21\xeb\x64\xcd\x2c\x07\x94\x5f\xa8\xcb\xfc\x6f\xcb\x4e\x20\x79\x9a\xf7\xf8\x5a\x4f\x94\x77\xf8\x4f\x91\x7a\xdc\x24\xc9\xb1\x5b\x26\xbb\x60\x40\x02\x76\xaa\xfc\xcc\x84\x03\xd1\x96\x3a\x1b\xce\x97\xfc\x6b\x76\x13\x4f\xeb\x82\x2b\x52\x45\x81\x00\x35\x2e\xc7\xfe\xdd\x8c\xdb\x87\xad\x79\x22\xe1\xfe\x18\x4f\x9a\x98\xb1\xa6\x16\x2f\xe9\xa7\xd6\x86\x24\x91\xbe\xe9\x03\xe4\x5b\xaf\xd9\xb7\xc2\x66\x5b\x5b\x64\x19\xfd\x5a\x33\x54\x1a\xc6\x4f\x75\xac\x87\x63\x01\x60\x64\xb6\x7e\x64\xfa\xc5\x9b\x63\xc6\x21\x14\x23\x37\x76\x11\x7a\x9d\x3d\x5e\xf1\xf2\x92\x80\xf2\xcf\xf5\x0a\x63\x8d\xb0\x67\x7b\x46\x6f\x08\x63\x04\x27\xb9\xf4\xad\x4a\xb5\x92\x68\xac\xac\x15\x7b\x53\xb2\x6c\x58\xa2\x70\x58\xf0\x84\xea\x86\x84\x27\x24\x1d\x31\xdf\x3b\x6b\x12\xc0\x50\xae\x53\x35\x1e\xf1\xfb\xa0\xe2\xf4\x43\xed\x26\x4c\x53\x7a\xbd\xe3\x37\x69\x80\x57\xda\x7b\xe9\xef\x2c\xbf\xb5\x56\xef\x0d\x5d\xf0\xa3\x6e\x30\x33\x83\x11\x43\xe6\xc9\x45\x96\x61\x0d\x09\x75\xd8\x1d\x8a\x09\xe1\x14\xd7\x0c\x33\xf4\x2d\xd5\xde\x50\x1c\xd1\xe6\x0a\x0e\x0e\x39\x8d\xf7\x67\x75\xf1\x03\x14\x50\x57\xf7\xa8\x53\x1d\xef\x95\x93\xd2\x66\xec\x88\xe8\xda\x7f\xe4\x7f\xff\x85\x55\x24\xcb\x61\x40\xd8\xb7\x56\xcb\xfd\x59\x21\x0f\xc3\x9f\x1c\x2d\xfa\x8c\xf7\x01\x75\xa9\x8c\x71\xeb\x32\x47\x32\xd3\x2e\x56\x4f\x84\x00\x3f\xae\x68\xa9\xa8\xb0\xa3\xdc\x26\x24\x7a\x63\x37\x7d\x51\xbb\x51\x79\x49\x36\x17\xcc\x41\x90\x07\x52\xf4\x9c\x23\xe2\x4b\xd3\xa2\xeb\xf1\x37\x6d\x85\x2e\x44\x8c\x45\x65\x60\x5b\x79\xa6\xfc\x16\x45\xa6\x1d\xa5\x13\x4f\x6e\x25\x2c\x2a\xce\xcc\x94\x9e\xfd\x0c\x89\x22\xb7\x37\x2c\x27\x92\xbf\xbf\x8a\x96\x52\x79\xc4\x0c\x2d\x54\xb0\x28\x12\xc1\x2a\x5a\xad\x83\xb3\xf9\xb9\xdf\x04\x55\x1f\xe8\x32\xe4\x85\x6d\xd9\x7e\x40\x3a\xa8\xe0\xd0\xd0\xa8\xc4\x1f\x95\x71\xd2\x53\xfe\xb6\xac\x03\x1d\xfc\x50\x22\xe0\xda\xa7\x08\xe7\xe1\xe1\xf8\x7a\x1a\xf3\x45\x94\xf2\x66\xc7\x10\x5e\x34\x6e\x97\xf7\x84\x80\x6a\xc8\x0d\xcc\x8d\xf9\xd8\x49\x24\x94\x7a\xfa\x5a\x26\xf8\x73\x4b\x93\x1a\x5e\xef\x5a\x81\xc1\x3f\x9a\xeb\x64\x58\x0d\x9a\x01\xfe\xf4\xfa\x82\xa9\xf8\x63\xed\xf0\x8a\x37\x6f\x99\xae\x2b\x61\x5b\xab\x68\x7d\xdd\xa5\xe7\xe9\x9d\x66\x0b\x3c\x5d\x02\x5e\xec\x9d\x87\xe2\x47\xf9\x2e\x73\xe8\x52\x02\x8f\x57\xc7\x4b\x34\xf1\xa7\x6c\x32\x02\x7f\x20\xa3\x0c\x38\xaf\xaa\xce\x6f\x6e\x06\x9f\xf7\x03\xf6\x8e\xdd\xb6\x07\x65\x83\x8a\x5d\xa2\x7c\x32\x56\x7e\xfe\x68\xde\x1c\xa4\xb3\x00\x6a\x95\x12\xfb\x98\x9f\x49\x05\x51\x48\x7d\x4e\x53\x74\x86\xd1\xa7\x77\x7d\xe6\x98\x8e\x37\x6d\x3b\x39\x2b\x41\xf8\xd0\xfd\x4c\x8c\xd8\x20\x18\xea\x4b\x58\x88\x99\x9a\x98\xf5\xbe\x8a\x10\x19\xc7\xed\x01\x19\xe9\x70\x03\x27\x29\xdc\xd7\x3f\xdb\x2f\x35\x3b\x5c\xf6\x9b\xe0\x89\xc7\xb3\xb6\x2a\x31\x94\x1d\x0e\x3c\xdb\x1a\xf4\x54\x8b\xfd\x3b\xa7\x19\x6b\x5d\x35\x7a\xc6\x0c\x4d\x3a\xdc\x1b\x95\x43\x17\xae\x14\x45\xf5\xa5\x11\xfc\x86\x91\xff\xc5\x5d\x78\xec\xd4\x06\xde\x4a\xca\xed\x6a\x72\xaf\x12\x99\x1b\x7d\x6c\x63\x12\xa3\xce\x78\x95\x9d\x83\x6b\xb0\x86\x50\x6f\x17\xa2\x22\x71\xf4\xc7\x5e\x9e\xc2\xbc\xc5\xda\x07\x92\x37\xe1\xe3\xef\x5d\x8e\x67\x30\x39\x5c\x87\x9f\xe5\xcf\x2c\x5a\x1b\xad\x5b\x89\x72\xf3\xc6\xd0\xde\x20\x5e\x64\x72\x8b\xd9\xe9\xd1\x80\x16\xac\x1b\x97\x24\xe5\x82\x1c\x69\xdc\x64\xb5\x71\xd8\x92\x16\xd5\xb0\xe3\x92\xd2\x34\x2a\x3e\x24\x1d\x3e\xf2\x96\x64\xe7\x72\x5f\xb4\x28\x4e\xd0\x51\xab\xf1\xb0\xb9\xbc\x74\xf1\xdd\x2e\x20\x59\x35\x06\x0d\x7e\x21\xb9\x8e\xc6\x06\x7d\xd3\xaf\x79\x07\x5e\x74\x60\x20\x45\xf4\xc6\xa7\x15\xea\x5b\xef\xd8\x24\xc3\x60\x0b\xf1\x4f\xdc\x15\x77\xc5\x6b\x93\x7d\xbf\x38\xa6\x08\x86\x49\x8c\xcd\xe0\x56\x29\x26\x11\x8d\x85\xcb\x2d\x77\x1b\x0f\x29\xe2\x99\xc5\x3d\x03\xda\x83\x24\xd5\x5d\xef\xae\x94\x66\xfb\xe6\x7b\xb2\x02\xf7\x6a\xa4\x17\xb1\xde\x7e\x7f\x42\xfc\x1b\x90\x6a\xe6\x87\x90\x23\xeb\xec\x5e\xcd\x44\x02\x23\x13\x93\xb5\x0a\xb0\xd1\x73\xf2\x3f\x7a\xe3\x17\xcf\x7d\xb2\x00\x25\x6a\x6b\xd0\xf0\x4d\x53\x51\x4b\xc5\xe6\x2a\x50\x35\xe8\xed\xf3\xc9\xfd\x30\xa4\x0f\x1c\xed\x02\xbb\xbc\x67\xf0\x37\xb6\xcf\x16\x60\x92\x33\x0d\x28\x5b\x3b\x3e\xe0\x7e\x6b\xaf\x57\xc2\x6c\xf7\x04\x98\x6a\x93\x8f\x36\xae\x59\x56\xc8\x19\xe7\xeb\x95\xd2\x8b\xe4\xac\x55\xfc\x38\x77\x3a\xbc\x72\x8e\x59\x85\xbb\xf3\xa8\x52\x52\x0b\xb6\x5f\x0c\xa5\x25\xa4\x3a\x61\x5a\xfd\x1d\xfe\x77\x21\xe6\x31\xf9\x51\xfd\x6a\x0d\x2f\x6f\x89\x40\xe2\xb7\x95\x31\x32\xbf\xce\x7e\xb1\xbe\xbf\x92\x10\x48\x25\xbe\xb8\xe2\xca\x88\x35\xf3\x8f\x1c\xf6\x55\x54\xce\x4d\x39\xab\xd5\x26\x82\x3b\xa5\xbe\xfe\x15\x41\x4e\x16\x65\x19\x70\x27\xc5\x36\x14\x93\xc9\xaf\x37\xbd\x15\xa4\x63\xd5\x95\xfc\xd0\xa8\xad\x1e\x22\xcc\xac\xca\x2e\x92\x20\x4e\xb1\x7c\x9e\xaf\xd0\x2e\xc4\xd6\x82\x64\x56\x4a\xb6\x95\x16\xb0\x78\xc6\xa6\x1d\x38\x2e\xe4\x2c\xed\xe1\xd8\x5c\xb9\xde\x60\xb7\xb9\x67\x97\x6e\x8b\x9b\x86\x50\x49\x04\x45\x8c\xfd\xfa\x86\xa3\x13\xf1\x37\xc7\x01\xb1\x32\x04\x66\xb6\xfd\xe0\xae\x7f\xb6\xc4\x84\xb3\x16\xf9\xea\xfe\x11\x46\xe0\xff\x27\x9e\xb8\xfc\x54\xf5\x15\x75\x3c\x3a\xf0\x0d\x68\x9e\xde\x98\x82\x48\x64\x78\xbf\x31\xd1\x16\x34\x49\x8e\x16\x9b\x18\x9a\x1b\x7a\x3e\xed\xc6\x19\x5d\x0e\x10\xe4\xa2\xb7\x31\x12\x24\x0a\xaf\x06\xcf\x2c\x19\x30\x0f\x8b\xc5\x1c\x7d\xe9\xa5\x8e\x09\x1b\x46\x8b\xc1\x87\x1c\xa9\xa8\xa7\xd9\x2e\xe9\x66\xbd\x83\xa5\x14\xe3\x02\x0b\xee\x87\xc9\xef\x98\x06\x3f\x96\xe5\x6e\x6e\x6e\xf6\xd5\xdd\xda\xd6\xf5\xb6\x18\x9f\x05\xf3\x3f\x6a\x47\x6d\x13\xba\x11\x21\xce\xef\x1d\x1b\x35\x27\x9d\xf0\x5f\x3f\x42\x6a\x25\x82\x2a\x24\xab\xfc\x08\x42\xc9\x80\x30\xab\x9f\x65\xbb\x82\xa6\xa2\x03\xf8\x67\x59\xa7\x16\x7e\x51\x00\x69\xef\x27\xee\x61\xc1\xd2\xa0\x5f\xac\x8d\xb0\xfe\xa3\x17\x37\x0a\xe1\x03\xfb\x17\xfc\xbd\xcc\x8d\xcf\xb5\x7d\x45\x8e\x30\x6a\xbe\x0b\x55\xf3\xd9\x57\x52\xd7\xed\xe3\x06\x02\x21\xfb\xef\xb7\x26\xdb\xa9\x85\x50\xc4\x02\x65\x89\x64\xff\xdb\x53\xb4\x75\xf4\xb6\xbc\x47\x19\xe8\xc8\x0c\xcd\x98\x60\x07\x7d\x22\x54\x20\x8d\xbb\x94\x29\x0e\x16\xba\x1f\x5a\x41\x01\x1a\x03\xcd\xd8\x23\x2d\x89\xb0\x39\x32\xb8\xd0\x40\x22\xf8\x6b\xff\xfb\x26\xf7\x6e\xfb\x05\x47\xd3\xb3\x15\x70\xe0\x3b\x1a\xc5\x5b\xf4\x4b\xf4\x44\x69\x6c\x0d\xf0\xba\xc3\xc6\x30\x64\xb8\x2d\x2a\x0a\x1d\xb7\xe6\x2b\x5c\x53\x96\x80\xa0\x91\xec\x65\xa1\x0f\x39\x49\xdf\x1b\x21\xa1\x8d\x8f\x7b\x63\x0a\x72\xf8\x19\x37\x91\xf3\xcc\x80\xda\x67\xf2\x14\x1b\x05\x24\xaa\x8c\x19\xf8\x84\x22\x10\xcb\x26\x4e\x18\x63\x71\x7d\x3e\x8b\xb4\xa5\xe8\xb3\x33\xa5\x4a\x68\x87\xb8\x8e\x91\x06\xd3\x54\x41\x44\x59\x73\x80\xe8\x85\x6f\x70\xea\xe3\x49\x47\x70\xda\xcd\xe6\xaf\xca\xef\xf0\x71\xe2\x0a\x82\x5e\xa8\x4f\x53\xb0\xdc\x44\xf0\x66\x18\x8f\x36\xdf\xa2\xdc\x6b\xc3\xf3\xe1\x14\x5c\x43\x14\xc9\xc1\xf9\xff\x18\x74\x6f\x70\x0d\xa5\x69\xfd\x21\x01\xa7\x98\x6d\x58\x91\xa2\x22\x44\x04\x97\x9c\xf8\x59\x43\x6f\xef\x08\x48\x9c\x99\xcf\x73\x21\xbb\x68\x88\x43\x8c\xcd\x10\x9a\xa4\x43\x07\x5c\x6a\xdd\x0d\x99\x17\x8b\x9e\x0a\xeb\x78\x6a\xf8\x2c\x23\xf1\x7a\xc4\x33\x73\xd6\x0a\x7c\x49\x55\x79\x18\x3c\xa5\x2f\x47\x35\x15\xa6\xf1\x28\x9d\x95\x47\x08\xf8\x54\x99\x6f\x84\x22\x87\x51\xaf\x08\xd0\x09\x3e\x11\x70\x46\x1e\xab\x32\x70\x8d\x7f\x7c\x41\xba\xc3\x91\xef\xf8\x96\x8c\xd4\x59\x01\x8b\xdb\x96\x1c\x8b\xb9\x11\xf5\x41\x97\x45\xed\x10\xa5\x83\x92\x47\xff\xc5\x83\xae\x4f\xd7\x1c\xfa\x9f\xff\xb2\x9d\x8f\x1e\x11\x8d\x63\xbf\x63\xae\x44\xaf\xc4\x71\x40\x73\xc0\x47\xf0\x8c\x7f\x48\x41\xe5\x4f\xe7\x03\x85\x4a\xec\x82\x27\x1a\x61\x48\xd8\x63\x6c\x75\x82\x58\x6c\x6a\xba\x56\xe2\x4c\xec\x09\x69\x1f\xf1\x03\xf6\x0d\x35\xbd\x81\x24\xa1\x24\xb9\x64\x8d\xb7\x8f\xcf\x17\x6f\x7f\xef\x01\x04\x11\xa2\xf4\xeb\x53\xca\x44\x9a\x33\x46\x0b\x81\x17\xed\x19\x8f\x1c\xef\x20\xe6\xa0\xc0\xa0\xf4\xa3\x04\x66\x28\xa6\x14\x66\x33\xee\x05\x6e\x3d\xae\x36\x29\x19\xe9\x7b\x92\x5e\x76\x3e\x8e\x0d\xce\x11\xd6\x2c\xb6\x36\x0d\x43\x2d\xbf\x2c\xd3\x2c\x38\xbf\x0f\xd3\xb9\xf8\x39\x35\x19\x15\x99\x16\xd9\x03\x9b\x3f\x9b\xb3\xda\x73\xe6\x45\x56\x7d\xe6\x3a\x87\xbf\xd6\xef\xc4\x8e\x84\x8e\xa8\x8e\x32\xbf\xa2\x2b\xf1\x63\x9c\x45\x1b\xc7\x3b\xc7\x0a\xc7\x4f\xdf\xfa\xb3\xc5\xb2\x64\xd9\x38\x99\x7f\xb0\xdf\xaa\x6c\x69\x85\x47\x3d\xa2\xff\x53\xc5\x73\xc7\x33\xc7\xf3\xc4\x0b\xc2\x23\xa7\x90\xe3\x06\x72\x33\xea\xf9\xea\x4b\x95\x5b\xd6\xf4\x6b\x2b\x2b\x39\x65\x4d\x89\x18\x91\xae\x10\xad\x00\xea\x8b\x0c\xb7\xeb\x94\xeb\xfc\x6b\x4f\x0c\x42\xca\x67\x6b\x4a\xab\xc3\xb5\x61\x8a\xac\xca\x0e\xf1\x9f\x0b\x0e\x28\x9b\x64\x9a\x24\xd6\x69\xd7\x8b\x3a\x22\x8e\x7b\x8e\xa6\xe7\x37\x6b\x1e\x34\x05\xb5\xbc\xb2\xb6\x04\xc3\x78\x31\x70\x63\x3c\xe2\x5c\xe3\xfc\xe3\xf2\x52\x24\x53\x02\x68\x38\x69\x74\x84\x32\x85\xcd\x1c\xa7\xec\x0b\x81\xbd\x73\x9a\xd3\x7c\xe3\xee\xc9\x80\xbc\xa0\xe8\x7f\x74\x97\xf2\x54\xe8\x54\x16\x7c\xec\x7c\xac\x7c\x35\x66\xd6\xad\x59\xd0\xa4\x76\xd7\xf6\x5e\x60\x93\x83\x95\x7d\xd8\xdc\xf8\x30\x07\xec\x20\xad\x29\xf9\x04\x4f\x1a\x5d\x9a\xb8\x4f\x36\xe0\x0c\x49\x88\x74\x06\x08\x01\xd8\x24\xdd\x7d\x0c\x7d\x91\xde\x8f\x3b\xcb\xfb\x57\xb0\x2f\xb0\x7f\x45\xc9\xa9\x1a\xd1\xdf\x65\xd0\xf4\x46\x12\x4e\xfe\xa7\x3c\xfa\x13\xad\xe8\x7f\xba\xaf\x68\x2f\xd0\xd0\xd1\x5e\xa0\x51\xfd\x37\x9d\xf8\xdf\x26\x29\x78\xbd\x49\x7f\x46\x7b\x44\x81\xa6\x98\x4a\x94\x2c\x95\x4e\x5d\xf2\x76\x67\x38\x99\x90\xf9\xf5\xc8\x24\x98\x04\x95\xa8\xb2\x50\x69\xc8\x95\xab\x98\xd8\x64\x48\x56\x36\xe2\xfc\x77\x6f\x2c\x46\xb5\x4c\x61\x1b\x56\xf3\xd7\xb6\xd8\x8a\x8a\xed\xdb\x30\x8d\x4b\x40\xe0\xcd\x9f\xd0\xf6\x76\x03\xb4\xe9\x5d\x2c\xba\x51\xc1\x34\xac\x59\x52\xd0\x02\xcd\x0f\xde\xd3\x60\x53\x18\xd9\x29\xc5\xea\x9b\x64\x9c\x58\x56\x38\xac\x7d\x44\x6f\xff\x6f\xdd\x5f\x4c\xcf\xce\xc6\x91\xec\x6f\xae\x3a\x78\x3a\x2c\xe5\x03\xbc\xf4\xac\xcf\xba\x60\xba\xe4\xfb\xfe\x11\x91\x51\xda\x58\xc4\xa8\x33\xde\xd0\xeb\xf2\x5b\xd9\x7e\x96\xba\xed\x78\x3b\xd0\xba\x67\xb7\x55\x20\x5f\xcb\xaf\xa2\x4f\x3f\x46\x39\x64\x3a\x16\xc6\xc4\xe8\xe1\xb5\xac\x91\x51\xaa\x69\xa2\x59\x6a\x76\xb1\xb5\x23\xdd\xd8\x01\xde\x51\x54\x3f\xac\x2e\xa4\x47\xa3\xb7\x23\x27\xa7\xb0\x2d\xe5\xc6\x33\xa2\x05\x03\x8d\x9a\x8d\x9a\x19\x66\xf3\x1c\x3d\xcf\x0f\x0e\xb9\xca\x13\x3c\x4a\x83\x13\x30\xe8\xb3\x4d\xaa\x3e\x25\xd3\xc5\xbf\x0b\x2b\x92\x55\xdd\xff\xd9\x63\xa7\x5c\x9c\x65\xef\xac\x1f\xcc\xbd\xf3\xb1\x26\x6f\xcd\x84\xa6\xe1\xda\xc0\x25\x48\xe9\x4f\x37\x51\x4a\xe6\xa0\x41\x10\x71\xd9\x99\x6c\xc1\x30\xb4\x26\x6b\xf9\xe8\x64\xb0\xc1\x5f\x18\xc3\x34\x6b\x9b\xd6\x2f\xdf\x14\x61\xa9\x90\x5d\x4f\xe8\x8a\xa7\x9d\x6a\xe4\xe3\x1b\x9b\x58\x64\x9a\xcb\x3a\xb1\xb1\x64\x8a\x42\xf0\x4f\x44\xd4\x9d\xaf\xe8\xca\x71\xf4\x59\x85\xff\x12\x0f\x93\x9e\xea\x9c\xab\x57\x98\x89\x40\xe4\x1c\xb7\x29\x1e\x56\xd0\x11\x08\xaf\x99\x14\xdc\x3c\x55\x17\x64\x7e\x13\x89\xef\x9f\x16\x9e\xe3\x13\x8e\x41\x39\x1c\xe0\xa7\x4e\x26\xc4\xfe\xe7\x06\x1e\x2b\x46\x3f\x72\x9c\xd0\x54\x76\xd7\x22\x6d\xa3\x36\x37\x9b\x3e\x0c\x5d\xae\xc2\x5f\x5e\xae\x6d\x6e\xbe\x48\x8a\xe4\xe2\x09\x08\x0c\x0c\x0c\xb4\x0b\x0c\x9c\x88\x92\x1f\x29\x83\xdc\xcd\xdc\x4c\xdf\xee\x5b\x8b\xb8\x01\xe5\xe7\x86\xc5\xdc\xa4\x1c\xa4\x2a\xe7\xb6\xf1\xa5\x94\x0f\x51\xa5\xf2\xd2\x0c\xe3\x42\x5d\x22\x5d\x22\xad\x22\x89\x3e\x7c\x23\x60\x0e\x28\x57\x72\xab\xa4\x06\x94\x8d\xbc\x60\x54\x9f\x6f\x46\x98\xef\xe7\xbf\xe4\x5f\xa6\xa5\x94\xa6\x99\xb9\xa6\x05\x46\xa6\xb9\x2b\xa6\x25\x62\xa6\xd9\x9d\xa6\x45\xfe\xa6\x79\xd7\xa6\x65\x84\xf0\x8c\x54\x78\xbe\x16\x3c\x67\x06\x5e\xcc\x0f\xcf\x6a\x3a\x22\xc3\x0b\xce\x31\x5c\x16\xed\xb8\x5a\x2b\xf4\x80\x7f\x3a\x81\x97\x32\xc0\x33\x27\x91\xa3\x14\x9f\x85\x6d\x3f\x96\xac\xc5\x5a\xad\xa5\x6e\xae\xc5\xc8\xae\x25\x0f\xac\xc5\x87\xad\xa5\x3f\x01\x22\x31\x00\x09\x31\x80\x8f\xef\x00\x29\x30\x40\x34\x2b\x20\xa9\x12\x10\xe7\x00\x48\x43\x00\xa2\xc8\x01\x89\x2e\x9a\xce\xd8\x9c\x1f\xf0\x44\x00\xb9\x66\xd3\x40\xa2\x9a\x37\x79\x4b\x80\x98\xa0\xe2\x49\xb3\xe2\x99\xd0\xd9\x5d\xcb\x59\x44\xa8\xc0\x8e\xa2\xc0\x9e\xbd\xc0\xae\xbe\x00\xc2\xb7\x79\xe7\x7d\xf3\x9e\x6b\xf3\xae\x79\x33\x22\xd8\x73\x47\xc5\x73\x0f\xe8\xb9\x6b\xec\x89\x08\x38\xdd\xd1\x3e\xdd\xf3\x3c\xdd\xb5\x3e\x45\x84\x33\xee\xbc\x65\xdc\xb3\x63\xdc\xd5\x63\x44\xf8\x94\xee\xa8\x97\xee\xb9\x94\xee\x9a\x95\x22\x82\xac\x77\x94\xad\xf7\x9c\xac\x77\x8d\xac\x1d\xd0\x5b\x2e\xb1\xbd\x2e\xa8\xbc\x2e\x89\xce\x2e\x18\xcf\x2e\xd1\x99\x2e\x48\x99\x2e\x71\xcb\x2e\x68\xcb\x2e\xb1\x6c\x2e\x28\x6d\x2e\x09\xb7\x2f\x18\xb6\x2f\x31\xe4\x2f\xc8\xe5\x2f\xf1\x87\x2e\x5e\x0d\x5d\x4e\xdc\xb9\x88\x1c\xce\x15\x94\xe2\x5e\x02\x67\x8e\x02\xfa\x0c\xe2\xa5\xbf\x3c\x9c\x51\xe1\x6f\x7b\x23\xa8\x3c\xe7\xf8\x37\xa7\x9a\x36\xc7\x3d\x36\x07\xa5\x83\x7a\xc6\xbe\x79\x37\x64\xfa\xc4\x04\x7d\x70\x4e\x1f\xac\x55\xf9\x9c\xe2\x79\x62\x97\x6a\xe3\xda\x5b\xc9\xc4\x08\x4e\x8c\xca\xa3\x01\x27\x46\xc5\x13\xcb\x84\xee\xec\x62\x10\x33\x81\xef\x20\x45\xcd\x6e\x9c\x01\xf6\x9c\xd5\x6e\x82\x37\xf6\x82\x37\xf6\x2d\x50\x13\x38\x2f\x92\xf2\x06\x2f\x24\x76\x60\xc4\xda\xee\x3f\xfa\x67\xed\xff\x3f\xde\x93\xdc\x9b\xf7\x21\xd5\x03\x8b\xd6\x2e\x2d\x1d\x26\xeb\xff\x51\x9e\x90\xdc\x81\x29\x6b\xa7\x96\x36\x93\xb5\x06\xa4\xd1\x7f\x75\xdd\xda\xa3\xa6\xcb\xe0\x67\xdd\xc9\x72\x80\xab\x74\x67\xc9\xba\xb6\x43\xcd\xb9\x75\xea\xc0\xb8\xb5\x43\x4b\xeb\x0f\xb8\x1b\x52\xec\x86\x2e\xa4\x69\x60\xd5\xda\xad\xa5\xf3\xc7\xba\xdb\x49\xe7\x8d\xf9\x7f\x75\xfb\xff\xb5\x08\x78\xf2\x69\xe5\xc3\x91\x1c\x8c\x69\x7b\xa4\x69\x63\xfd\xe9\x2c\xa4\x49\xba\x5f\xf5\x8a\xe9\x49\x15\xb5\x10\xf1\x7f\xc7\xa6\xea\xed\x42\x98\xdf\xff\x17\x35\x5d\x35\xa8\x23\xf9\xfb\xf4\xe7\xca\xff\x0b\x50\x5f\xce\x7e\x1e\x13\x4b\xe3\xa3\x64\x9f\xd1\xa7\xad\x44\x14\x7a\xd0\x51\xb1\x50\xf4\x54\x34\x0d\xe8\x4b\x5d\xd3\x56\x74\xf4\x34\xb3\x56\x15\x6c\x5e\x53\x16\x28\x89\x99\x06\x94\x42\xdf\x94\x05\x1a\x69\xc6\x00\xc5\xe6\xb5\x34\x35\x83\x52\xf0\xa2\xa1\xa1\xa1\xeb\x1f\x98\x36\xa3\xa1\xfd\x3f\x01\x00\x00\xff\xff\x5c\xa3\xc1\xce\x18\x5b\x00\x00") func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoffBytes() ([]byte, error) { return bindataRead( @@ -558,12 +559,12 @@ func webUiStaticVendorBootstrap331FontsGlyphiconsHalflingsRegularWoff() (*asset, return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff", size: 23320, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/fonts/glyphicons-halflings-regular.woff", size: 23320, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331JsBootstrapMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x7d\xfd\x73\xdb\xc8\xb1\xe0\xef\xf9\x2b\x48\xac\x9f\x04\x2c\x41\x8a\xb2\x93\x97\x17\xd0\x10\xcb\x6b\x3b\x75\xbe\xdb\xec\xee\xad\xbd\x2f\x75\xa7\xa7\xa4\x06\xc0\x80\x84\x4c\x11\x5c\x02\x92\xd6\x11\x99\xbf\xfd\xba\xe7\x7b\x06\x03\x52\xd2\xe6\x6d\x5d\xb9\xca\x22\x3e\x66\xa6\xa7\xa7\xbf\xbb\x67\x70\xf6\xf5\xf0\x77\x83\xaf\x07\xdf\xd4\x75\xdb\xb4\x5b\xb2\x19\xdc\xbd\x9a\xbc\x9a\x9c\x0f\xc2\x65\xdb\x6e\x92\xb3\xb3\x05\x6d\x33\xf9\x6c\x92\xd7\x37\x11\xbe\xfd\xb6\xde\x7c\xd9\x56\x8b\x65\x3b\x78\x39\x3d\x3f\x1f\xc3\x7f\xbf\x1f\x7c\xba\xaf\xda\x96\x6e\xe3\xc1\x87\x75\x3e\xc1\x97\xbe\xad\x72\xba\x6e\x68\x31\xb8\x5d\x17\x74\x3b\xf8\xcb\x87\x4f\xbc\xd3\x06\x7b\xad\xda\xe5\x6d\x86\xfd\x9d\xb5\xf7\x59\x73\xa6\x86\x38\xcb\x56\x75\x76\x76\x43\x1a\xe8\xea\xec\xdb\x0f\x6f\xdf\x7f\xf7\xf1\x3d\x0e\x79\xf6\xbb\xaa\x0c\x03\xec\xa9\xac\xd6\xb4\x08\xd2\xb4\xfd\xb2\xa1\x75\x39\xb8\xfe\xdf\xb7\x74\xfb\x25\x6a\x97\xdb\xfa\x7e\xb0\xa6\xf7\x83\xf7\xdb\x6d\xbd\x0d\x03\x35\xa1\xd3\x66\xf0\x3f\xc9\x1d\xf9\x98\x6f\xab\x4d\x3b\xd8\xd2\x9f\x6f\xab\x2d\x6d\x44\xbb\x20\x9a\x8d\xca\xdb\x75\xde\x56\xf5\x3a\x24\xd1\xc3\x1d\xd9\x0e\xb2\x94\x4c\xca\xf5\xe4\xfa\x67\x7c\x61\xd2\x6c\x56\x55\x1b\x06\x83\x20\xba\x9c\x5e\xc9\xab\x09\xb4\x03\x78\x32\xb8\xf5\xfa\xe5\xc9\x49\x76\x79\x7e\xf5\xfa\x4f\xbb\xdd\x79\x9a\xe2\xad\x93\x93\x3f\xe1\x8f\xf3\x2b\x7c\xf2\xf2\xea\xf5\xf9\x73\xa1\x1b\xdc\xd1\x6d\x03\x90\x0d\xce\x27\x7f\x82\x25\xa9\xb7\x83\x25\x20\x9d\x6e\x83\x68\x1f\x8a\x79\xc7\x16\xf8\xc1\x6d\x43\x07\xd0\x6f\x95\xb7\xc1\x4c\x3e\x18\x64\x21\x9f\x18\x49\x8b\x3a\xbf\xbd\xa1\xeb\x76\x92\x6f\x29\x69\xe9\xfb\x15\xc5\xab\x30\x50\xe8\x0f\xa2\x38\x4b\x1f\xfe\x4a\xb3\xcf\x55\xfb\x69\x4b\xd6\x4d\x85\x3d\x24\xc1\xbd\x73\xe7\xfd\xba\x08\xe2\xbf\xd4\xff\x30\xdf\x69\xd5\x6f\x8a\x4f\xbf\x37\x9f\xd5\x56\xd3\x41\xed\xbc\xdb\xf6\x76\xb3\x9f\x95\x80\x2f\x84\x3e\x1f\x54\x30\x95\x08\xd0\x7e\x57\x57\xc5\x60\x3a\x4c\x61\x9d\x9a\xf6\xcb\x8a\x5e\xe6\x57\xd1\x96\xb6\xb7\xdb\xf5\x03\x34\x49\x32\xb8\xde\xcf\xf8\x8d\xe1\xf9\x9e\x2d\x26\xbd\xb9\x5d\xc1\x84\x2d\x28\x52\x85\xb9\x8c\xe3\x27\x4f\x87\xe7\x71\x91\xb6\xcb\xaa\x99\x91\x10\xff\x44\x13\x80\x02\xd0\xd3\x38\x33\x57\x2d\xa3\x07\x68\x34\xdd\x47\x33\x6c\x4f\x53\xf3\xfe\x6e\x47\xc2\x22\x9a\xc0\x62\x2c\x16\x74\x1b\x02\xac\xb7\x9b\x4d\xbd\x6d\x27\x7a\x82\x13\x00\x37\x92\xa0\x0e\x1a\xda\x7e\xaa\x6e\x68\x7d\xdb\x86\x34\xce\xa2\x18\x01\xd8\xc7\x24\x34\x3a\xf5\x75\x92\xc2\xf2\xc6\xbe\x07\x27\x27\x30\x28\xbd\xc3\xe5\x6e\x36\x34\xaf\xc8\x6a\xe2\x4c\x24\x7d\xc8\xaa\x75\xf1\x09\x18\x29\xe9\x03\x2f\x2e\xe8\x8a\x2e\x10\x75\x07\xdf\x5a\x92\x75\xb1\xa2\x89\x89\x51\x31\x2b\x12\x66\x93\x96\x6c\x41\x8c\x44\x93\xaa\xe1\x58\x9d\x67\x13\xde\xe0\xfb\xec\x5a\xfc\xda\x4e\xc8\x66\xb3\xfa\xc2\x9e\xc7\xf0\x3a\x23\xd3\x26\x4a\xf8\x5a\xef\xf7\xd1\xfe\xa9\x34\xaf\x41\xc0\x3e\x27\x94\xe4\x4b\x13\x95\x7c\xc1\xc5\x32\xc7\x34\xcd\x27\x05\x69\x09\xae\xf5\x84\x00\x38\x2d\x70\x38\xdd\xed\x3a\x77\xe1\x4d\x64\xe3\x82\xb7\x8b\xe2\x00\x47\x5e\x2f\xb4\x3c\xca\x4e\x4e\xe8\x65\x76\x35\xc9\xc9\x6a\x15\xe6\x08\x36\x1f\xe9\xf4\x12\x7b\x1a\x17\x55\x73\x53\x35\x4d\x1a\xf0\xee\xae\x4e\x63\x9b\x0e\x01\x5d\x48\x74\x61\x90\xaf\xaa\xfc\x73\x10\xe7\x8c\x0c\x26\xf9\xaa\x6e\x28\x90\x4a\x31\xf9\xcf\xf7\x3f\x7e\xfc\xf0\xfd\x77\x69\xc0\xc4\x74\x10\x17\x93\x4f\x3f\xbe\xf9\xee\xe3\x87\x4f\x70\xf3\xef\xef\x7e\xfa\xf1\x0d\xfe\x48\xcf\xff\x30\x85\x27\x9b\x6d\xdd\xd6\x08\x17\x6f\x6f\x0d\xa4\x30\x95\x03\x32\x16\x93\x82\xb6\x88\x20\x4d\xaf\x01\x6b\x52\x4c\x34\x3e\x26\x5b\x7a\x53\xdf\xd1\x90\xcf\x88\x2a\xdc\x95\x29\x9d\x90\xb6\x85\x26\x6c\x86\x7c\xb1\x01\x7d\xe5\x6e\x17\xea\x67\xcb\x2d\x2d\x03\x7c\xb9\x3c\x39\x29\xa1\xab\xcd\x8a\xe4\x34\x3c\x9b\x7c\x1d\xce\xd3\xaf\x2e\xff\xf6\x5f\xcd\xd5\xd7\x2f\xa2\xb3\x38\x08\x22\xce\x4c\x0b\xe8\xbf\x8c\x66\x80\xce\x0c\xe6\xc1\xc8\xf8\x1d\x2d\xc9\xed\xaa\x05\x72\x5f\x4c\x56\x74\xbd\x68\x97\x30\xc2\x22\x15\xb3\x6b\x50\x2e\x0b\x50\xf1\x0d\x39\x11\x14\xe7\xef\xef\x98\x98\x63\xef\x19\x33\x02\x61\x07\x34\x29\xba\xfd\x81\x0f\x42\x8b\x30\xc2\x6e\xc5\x6c\xdf\xae\x48\xd3\x84\x41\xb5\x0e\xfa\x98\x6c\x01\x14\xdc\x88\xd7\x4a\x52\xd0\x20\x9a\x2f\x7a\xc4\x46\x1e\x79\x05\x51\xe8\x5d\xc3\x28\x81\x95\x81\x25\x17\xc8\x46\x29\xc6\xc0\x9e\xe9\x9f\x69\x16\xeb\x8b\xc9\xdb\x7a\x0d\xc4\x78\x9b\xb7\xf5\x36\x2d\xcc\x07\xeb\x1a\x1e\x95\x40\x4f\xad\x29\xa0\x24\x7f\xea\xde\xa8\x12\x39\x52\x4f\x18\xa4\xa8\xd0\xc6\x38\x62\x4c\x36\x15\x12\x67\x87\xc6\xfe\x1b\xb8\xb4\x30\xb8\xb4\xd0\xfc\x98\xdd\xb6\x6d\xbd\x66\x24\x15\xd4\xd9\x35\x85\x8e\x4d\x26\xcc\x90\x7d\xbb\xaf\x0b\xfe\xcd\xb9\xa0\x29\x91\x83\xdb\x7a\xb1\x58\x51\x68\x9c\xcd\xe9\x84\x5f\x84\x51\x82\x7c\x3c\x01\x91\xfc\xb1\x85\xe5\x02\x30\x15\x23\x6b\x26\x8a\x8b\xe8\x81\x41\xfd\x82\x72\x45\x9a\x22\xf7\x72\x86\xad\x37\xf8\x4e\x03\xeb\x46\x7f\x69\x41\x42\x86\x0f\xfb\x38\x9f\xbc\x7b\xff\xe7\x37\x3f\x7d\xfb\xe9\x23\xb4\xe4\xaf\x55\xcd\xb7\x35\x29\x40\x80\x80\xea\xd9\xcf\xf2\x0e\x77\xeb\x26\xe9\xc3\x8a\xbf\xf9\x09\x3a\x4c\x02\x71\x31\x99\x4c\x02\xec\x58\xaf\x82\x04\xd9\xa3\xdd\x02\x10\x3e\x24\x5b\x81\xf5\x24\xb4\x9c\x02\x9c\x61\xb6\x62\x74\xbe\xb9\x05\xc6\x98\x07\x77\x64\x15\x24\xc1\xb2\xbd\x59\x81\xb6\x93\x68\x07\x76\x1c\xa5\x01\x02\x10\xc4\xeb\xdb\xd5\x2a\x4d\x91\x93\x51\x6f\xc1\xad\x93\x13\x89\x6d\x75\x0b\xc6\xb9\xa4\x57\x40\xc5\xb1\xa1\xdb\x08\x02\xfb\xcb\x17\x73\x95\xd9\x5b\xa2\x43\x90\x9d\x73\x13\x83\x70\x9d\xe0\x4d\x58\x28\x03\x01\x6c\xb5\x42\x17\x85\x28\xf3\x48\x51\x70\x66\x04\x66\x63\x92\x27\x07\xb6\x8b\x12\xfb\x55\x50\x8d\x1d\xf4\x43\x5b\x93\xe5\x73\x29\xef\xde\xb0\x4e\x80\x13\x63\x4e\x84\xd3\xc8\x46\x38\xa7\x98\xd4\x21\x5a\x82\xd0\x64\x36\x96\x95\x9c\x12\xba\x40\xb4\x0c\x38\x69\x36\xa0\x0c\xb8\x55\x29\x84\x9b\x5c\x36\xbb\x0f\x30\x7f\x0b\xb5\x4e\xb3\x60\x0b\xe0\xd7\x80\x0d\x06\xd1\x26\x0c\x10\xa4\x20\x82\xf9\xc9\x1b\xf9\x92\xe6\x9f\x61\xc9\xe1\x9e\xdd\x91\x96\x5a\x04\x00\xbf\x43\xb9\x05\x40\x9f\x27\x99\x18\x62\x22\x6f\xdb\x92\x50\xde\x05\x71\x78\x72\xe2\x0e\x12\x0f\x8f\x8d\x61\x2a\x18\xd0\xfc\x0b\xb8\xb5\xa7\x2b\x90\x0d\x76\x43\xae\x33\xc8\xb6\x22\x63\x10\xfe\x4d\xf3\xb8\xbe\x67\xc4\x9d\x24\x47\xb1\xf3\x1e\x97\xa9\x05\x97\xa9\x1c\xf9\x33\xe3\xb7\x94\xaa\xfc\xca\x12\xab\xb9\xf5\xe4\xb8\x5c\x15\x1d\x16\xc7\x04\xab\xe8\x50\x4b\x56\x8b\x42\xfe\x26\x49\x04\xcd\x05\x35\x52\xae\xa5\x63\x2e\x2d\x2c\xb0\x0f\x34\x5a\xb2\x16\xa4\x23\xa8\xb2\x02\xd8\x57\x6b\x48\x76\x17\x15\x1f\x33\x50\x0a\x25\xfe\x22\x46\xd4\xb6\x9e\xdd\x73\x30\x4b\x00\xba\xf1\x80\x39\xc8\x56\xb7\xdb\xe7\x82\xcf\x6d\x1d\x65\x1a\x3a\x00\xda\x0b\xc7\x00\x08\xe2\xb3\xbf\xb1\x1f\x61\xb5\x8e\xe6\x2f\xce\x26\x2d\xbe\x0f\x3d\x00\xc5\x47\xff\x2d\xe6\x61\x8f\xe2\xc9\xc9\xb6\x86\x4e\x57\x4c\xf5\xf4\xc9\x77\x21\x30\x63\xaf\x6a\x02\xf3\x24\xed\x1a\x8e\xf3\x2c\x29\x27\xcd\xaa\x2a\xa8\xa3\xba\xd4\x80\x1e\xe5\xb5\xbe\xbd\xc9\xc0\x21\x34\x7a\x41\x89\x04\xb3\x4b\x16\x73\x7a\xb9\x00\xe1\x0b\x9d\x56\x60\xd6\x6c\x41\xa2\xa3\x4a\xdb\x10\xe8\x0a\xec\xbc\xfc\x4b\x8e\x7a\xce\xa7\xd6\xf2\x7e\xb5\xf6\x02\x44\x43\x95\x13\xe0\x85\xc6\x2b\x97\x14\xac\x63\xfd\x62\xe0\xa8\x44\x61\xd2\x32\x40\x84\x1e\xc2\x59\xa3\x14\xe6\x42\x59\x40\x2b\x06\xe0\x5c\x2b\x2e\xaa\x96\xde\x34\x29\xaa\x0a\xab\xcf\xc9\x67\xfa\x25\xab\xc9\xb6\x70\xf9\x1f\xc9\x17\x9e\x15\xf5\xfd\x7a\x62\x61\x52\x6a\x21\xf6\xba\x78\x23\x96\x36\xfd\x12\xc4\x1d\xc3\xa9\x39\x04\x83\xf7\xe4\x64\x18\x06\xf5\xba\xad\x6f\xf3\x65\x03\xb4\xdb\x82\x24\x1e\x28\xaf\x5a\xfe\x10\x7e\x75\x47\xe4\x22\x34\x37\x08\x00\xda\x99\xdb\x03\x00\xb1\xb1\x04\x38\xba\xd5\x8a\x92\x3b\x7a\xa0\x15\x5b\x52\xd1\xca\x6f\x4c\xf8\x5c\x85\x7f\x9f\x4e\x2d\x33\x43\xa2\x3f\xf9\x03\x7d\x15\x33\x40\x12\x81\x90\xf8\x7e\x4b\x36\x09\xe8\x35\x89\x6d\xf8\x6d\xeb\x42\x81\xc8\xd4\x64\x40\xd0\x68\xc3\x33\xa6\xaf\x76\x2d\xf0\x0a\xd9\x52\x72\x56\x71\xe6\x25\x82\xfd\xe1\xcf\xe2\x3b\x72\x03\x6c\xfc\xd0\xdc\x57\x2d\x70\x22\x99\xdc\x2f\xab\x1c\x54\x60\x4e\x80\x7d\x5f\xfd\x91\xeb\x6f\x94\x4f\x68\x84\x40\x17\x9f\x67\xfc\xc9\x9f\xf8\x93\x35\xf4\xac\x9e\x14\x5c\x7e\x25\x9c\xbf\xf7\xa4\x2b\xd7\x6c\xa8\x19\xde\x52\x8f\xef\x9a\x81\xf4\x34\x69\x75\x78\x2e\xcd\x36\xc5\x50\xd0\x92\x6c\x3f\x88\xcb\xd0\x7a\x68\x93\xbd\xd1\x66\x68\xf4\xa9\x2c\x11\x49\xf4\x60\x29\xa9\xee\xac\xd5\xc5\x29\x0a\x13\xc4\xdb\x6f\x24\x23\x06\xe6\xd4\x00\xb9\x1f\x80\x65\x3e\xac\x0b\xfa\x8b\xb5\x2a\xa6\xec\x13\x5c\x05\xa3\xc1\xe2\x80\x9f\x04\xc2\x61\x59\xad\x0a\xf8\x0d\x0c\x8d\xcf\x02\xc5\xfd\xf8\x22\x8c\x08\xbd\x85\x64\xb7\x33\x19\x34\xf2\x0e\xfc\xe7\x7a\xfb\xae\xda\x52\x36\xac\x31\x7e\xac\x6d\x52\x5c\x1b\x60\x35\x32\x1f\x9f\x27\x32\xfa\x62\x81\x8d\xb2\x87\xa6\x61\x31\xca\xa3\x7f\x33\xa1\xe0\x46\xd2\xac\x3b\x91\x09\xfd\x39\x74\xc1\x69\xeb\xb4\x1b\xe6\x63\x52\x34\xf7\x8c\xe8\x11\x3c\x8e\x98\xc3\x81\x26\xda\xee\x90\x3a\xff\xa2\x0b\xe0\xf8\x7c\xb7\x9b\x5e\x90\x39\x0f\x64\x24\xa6\xb8\x9b\xbb\xd2\x01\x7c\x46\x7c\x64\xb3\xb8\xa1\x94\x32\x14\xed\x04\x64\x76\x92\x23\xc6\x34\x19\x69\x79\xae\x07\xa0\x21\xb9\xc8\xe7\x01\x92\x0d\x58\xf2\x0c\xcd\xb1\x83\x25\x12\x39\x68\x62\x9d\x3d\x8a\x13\xa6\x92\x24\x1c\xc4\x30\x2a\x1d\x30\x8e\x03\x2d\xce\x51\x70\x72\xd2\x13\x9e\x72\x6c\xb5\x63\x91\xb2\x58\x4b\xb9\x10\x00\x70\x78\x31\x3d\xca\x8a\xf6\x5c\x11\x52\x8f\xdd\x66\x2d\x90\xbb\x68\xb0\x40\x0c\x9f\x2e\xda\x60\xb6\xcf\xe8\x8a\x23\xc9\x71\xdf\xf0\x91\xe3\x63\xf2\x08\xc0\x71\x3a\x44\x47\x4d\x30\xa5\x87\xfd\xa0\x2f\x8a\x86\x87\x85\x98\x78\x99\xf2\x19\xa1\x3f\x15\xac\x68\x89\xb4\xc2\x22\xfb\x41\x5c\x99\x8f\xca\x6a\xdb\xe0\x33\x30\xc8\xe0\xd1\x35\x0f\x92\xa2\x68\x2f\x95\xb7\x82\x57\x96\x64\x42\x75\x21\x02\xb3\xb3\xb2\x1f\xfe\x20\xba\xac\xc0\x4e\xd9\x43\xfb\xd2\x67\xd5\x7b\xb0\x09\x92\x98\xd9\xf0\x9f\xc1\x5f\x9c\x5e\xc5\x2b\x1d\xe2\x61\xf8\xb3\x19\x08\x96\x03\x43\x2e\xc5\x27\xa6\x6b\x92\xcf\x71\x21\x51\x92\x2c\xf7\xcc\xe3\xf2\xd3\x21\x50\xcd\x70\xe5\x8d\x0f\xb1\xb9\xda\xf0\x4c\xe3\x85\xd0\xf6\x82\x21\x3b\xf6\x92\xc2\x53\xe7\xc1\xa3\xfc\x2d\x36\xdf\x1b\x61\x91\x5a\xcd\x95\xb0\x8e\x2e\xbb\xa2\xac\x8c\xae\xa2\xd9\xcd\xc9\xc9\x8d\x76\x8c\xb5\x1f\x84\x5d\xae\x6d\xdc\x3d\x09\x75\xca\xd5\xf1\x71\x77\x9f\xb7\xc6\x56\x08\x9c\x4d\x58\x6c\x05\x12\x88\x78\x5c\xc8\x49\x5d\x96\xa0\xff\xfe\x5a\x15\xed\x32\xa6\xfa\xf1\x12\x1e\x5b\x57\xf4\x78\x5c\xbe\xb4\xd0\x78\x99\xc5\xcb\xab\xc9\x75\x5d\xad\x59\x2a\x27\xf2\x60\x03\x3a\xb5\x5a\xc8\x07\x76\xc3\xf8\xda\xa0\x41\x33\xac\x61\x0c\x7d\xdd\xa5\xa5\x35\xb0\xf9\x14\xfd\x29\x6f\xfc\xcf\x6b\x98\x45\x51\x12\x52\x3f\x2d\x98\xd8\xd0\x37\x1d\x06\x89\xfd\x54\xbd\xc6\xe0\xa8\x58\x1d\xa1\x33\xb8\x70\xb4\xbc\x62\x49\x02\x33\xeb\x4a\x7a\xc6\xf2\xda\xe7\x1b\xab\x67\xc7\xbd\x63\xd5\xad\xf0\x8f\xdd\x24\x8a\xf4\x70\x63\x33\xd6\x4c\x42\x6f\xb4\x99\xf9\xb9\x76\xac\x39\xc2\x88\x94\x2f\xd0\x3c\x52\x81\x66\x47\xe4\x68\xcf\x8e\x8f\xbc\xb0\xdc\xbb\x52\xfa\x74\x54\xfc\x88\x40\x7a\x5a\xc0\x30\xd2\x06\xaf\x17\xb8\x15\x94\x5e\xb8\xd0\xba\x09\x2d\x47\xe1\x72\x97\xf1\x02\x1a\x62\x10\xdc\xe3\x51\xa2\x82\x5f\x7a\x5d\xf1\xfd\xac\x37\x7a\xa0\x50\xae\x1d\xf0\xe0\x52\x03\x74\x05\x7e\xe3\xd3\x5a\xc0\x14\x58\xa3\x98\x84\xf7\x20\x68\xea\x7b\xde\x1c\xe3\x6f\x16\x8f\x11\x19\xc9\xda\xa2\xd2\xd2\xe8\xbb\x3a\x8d\x0e\xe7\x5b\x66\x02\x17\x79\x9c\x4b\x5c\x3e\x2f\xc3\xc3\x7a\x05\xab\x31\xeb\xa1\x89\x5c\x3d\x51\x34\x91\x1f\xa4\x09\x25\xd3\xc2\x22\xda\x1b\x39\x92\xe7\x67\x93\xf2\x7a\xb5\x22\x9b\x86\x76\xc2\x05\x85\x0e\x17\xe4\x87\xc3\x05\xb3\x21\x45\x7a\xe1\x31\x91\x93\x93\xa0\x59\xd6\xf7\xa8\x96\x81\xc6\xe4\x5d\x46\x61\x76\xc2\x4a\x0d\x6c\xe5\xac\x78\xd8\xa0\x27\x6b\xa5\xe2\x01\xc5\x23\xe3\x01\xbe\x30\xb7\x39\x2f\xa9\x06\x85\xf4\x91\xea\x4b\x5a\x08\xe2\x76\x04\x2a\x70\x05\x9c\x02\xe4\x84\xcb\x94\x06\x5f\x9d\x8e\xb2\x49\x55\x8c\x4e\x83\xab\x78\x70\x69\x2c\xaa\xf5\xe8\x54\xf4\xae\xb5\x0e\x4a\xbe\x6e\x70\x80\xbb\x35\xc2\xda\xe6\x17\xca\xe8\xff\x41\xb8\x3c\xdc\x30\x03\xa9\xfa\x66\x5b\x91\x37\xeb\xe2\xad\x40\x9e\x90\xb2\x76\xb4\xdc\x9a\x93\xe3\x8e\xc9\x45\xe2\x90\x89\x6c\xc2\xe3\x13\x77\xaf\x58\xe2\x4e\x7b\xe3\xbc\x07\x74\xba\xc5\x70\x89\x13\x3c\x56\xab\x7c\x75\xba\xb7\xd2\x31\x05\x28\xa6\x75\x63\xf9\x5d\x32\x34\xdd\xa7\x9a\xef\x51\xf1\x1a\x3c\x30\x17\x77\x92\x60\x49\x99\x4d\x68\x8f\x80\x64\x68\x76\xae\x0c\x40\x6b\x41\xa4\xbf\xeb\x19\x0f\xb3\x6a\xc2\x19\x8b\xa5\x81\xcb\xd7\x47\x9a\x0f\xfc\x4a\x58\x48\x17\xe0\x57\x90\x35\x13\x93\xa6\x83\xba\x06\x7f\x43\x60\x01\x69\x9a\x49\xf5\x61\x48\x31\xd8\x25\xfd\x8f\x30\x4b\xa9\x97\x23\x59\x7a\xd1\x02\x37\x12\x10\x95\x86\x5d\x04\xf3\x9c\x58\xed\xfa\x8d\xc6\x12\x8c\xc6\xb2\xc7\x68\xb4\x41\xca\xb9\x08\xa4\x71\xb0\x64\x06\x51\x0c\x3e\x96\x0f\x48\x96\x69\x51\x49\x51\x36\xaa\x5a\xda\x30\x9a\xd9\x60\x58\xe6\x82\x86\xd7\x30\x17\x4c\x4c\x61\x7c\x70\x1a\x99\xc1\x76\xfa\x0b\x60\xb8\x60\xd1\xf6\xa9\xc3\xbb\xfe\xbe\x8b\xe0\x58\x7b\x9b\x3b\xb9\xdd\xbe\x34\xc9\xe6\xf8\x0c\x18\xb0\xdd\x39\xd0\x01\x12\x10\x4e\x22\x08\xbc\x83\x4d\x7b\x6c\x20\xb6\xa2\x6b\x7b\x49\xf7\x8c\x6c\x7c\xa6\xac\x74\x40\x96\x7c\xc1\xb8\x02\xc3\x59\x54\x40\x22\x39\xb9\xa1\xab\xb7\x04\x2c\xfe\xcb\xa0\xc9\xb7\xd0\x5d\x10\x2f\xa4\xc1\x38\x46\x1b\xc3\xe3\xe4\x77\xec\x56\x19\xe8\x59\xca\x98\xdf\x13\xd2\xc4\x38\x7f\x6b\x0c\x30\xa4\xc1\xa1\x02\x8b\x61\x6f\xb3\xeb\xd2\xf2\x2c\xfb\xd9\xf5\x11\xdc\xaa\x79\x63\x29\xdd\xad\x47\xf0\x06\x28\x8d\xa1\x3f\xe1\x6e\xa5\xba\x7a\xa9\xfb\x32\x77\x67\x9a\x63\x72\x51\x3b\x0e\xff\x83\x49\x29\x67\xd1\xfd\xa4\xef\xa7\x66\x46\x50\x3d\xf4\x7c\xee\xf2\x43\x97\x1e\xfb\x99\xe1\xfc\x00\x33\xd0\x0e\x33\x1c\xa6\xe2\xa7\x70\x48\x60\xe4\xdb\x60\xa9\x0a\xda\xa1\xfa\x03\x3e\x1c\x8f\x59\x74\x30\x3e\xed\xab\x8a\x92\x54\x4c\x9f\x41\xc5\x09\x35\xb8\xcb\xa5\xdc\x6e\x8a\x15\x5f\xbb\x3c\x44\xa8\x73\x2e\x55\x13\x6e\x2b\xa1\x61\x63\xf5\xa8\x34\xbf\xcf\x37\x09\x3d\xd6\x43\xc4\x75\x50\xaf\xf2\xe5\xf7\x85\x71\x11\x9c\x8e\x3c\x5d\x70\x93\x85\x9b\x8e\x9d\x24\x78\xae\x03\x3d\x68\x7a\xce\x0e\x9b\x23\x59\x08\xc6\x39\x95\x29\xe9\x08\xa3\x63\xee\x0c\xfb\xda\x7a\xa3\xb0\xc4\xc1\x1e\xb8\x7d\x5e\x3a\xce\xd1\x8b\xb1\x52\x73\x9a\xf4\xe3\x61\xde\x43\xfd\xb9\x5d\xc5\x22\x9b\xcc\xac\x2b\xe5\x3f\x8a\x6b\x5f\x39\x8b\x7a\xf6\x08\xdf\x52\x76\x7b\xb4\xa8\x45\x75\xda\x93\xbe\xb4\x4c\x2c\xed\xfd\x18\xcb\xc5\x35\x42\x8f\x5b\x5a\x74\x5c\xb9\x19\x37\x2f\xd8\x1a\x2e\xd2\xd2\x6b\x97\x2c\xd3\xc5\x5c\x66\x66\x13\xd3\xb8\x96\xbe\x67\xfc\x20\xed\x41\x36\xbd\x68\x96\x4b\xef\x72\xf9\x2c\x47\x0a\x0c\xa1\x57\x29\xb8\x14\x3c\xef\x02\x9e\x13\xf8\xd9\xba\xe2\x0b\xab\x10\xfd\x2e\x9d\x99\x23\xcd\x01\x29\xe0\xe3\x38\x41\x23\xee\xda\x53\x83\xc2\xea\x0d\x5d\xb3\x1a\x05\xea\x2b\xd2\x92\x1a\xa5\xd8\xd6\x1b\x4c\x26\x05\xcc\x63\xe9\x2d\xd4\x2a\xfc\x34\x17\x94\x64\xd5\x74\xa3\x3a\x62\x6c\x9f\x50\xb4\xc6\x03\x1c\xba\xee\x1f\xe7\x14\xaf\xa3\x39\xcb\x3d\xae\x66\x9c\xa7\xf9\xc9\xc9\xd9\x57\x97\x6f\xc6\xff\x97\x8c\xff\x71\x25\x12\xd6\x79\xaf\x0b\x6a\xd7\xbf\x15\xd8\x9a\xc0\xeb\x52\x42\x17\x18\xce\xe0\xd6\xe3\xbc\x48\x32\x95\xac\xd1\x60\x16\x4f\xf3\x52\x0b\xd3\x4b\x55\xb3\x8f\x66\x85\xe5\x45\x6a\xb4\x14\xcc\x8b\x5c\x1c\xaa\x7c\x2c\xba\x95\x8f\xc0\x3f\xaa\x8f\x71\x46\xf2\xcf\x78\x81\x35\x45\x0e\x93\xa9\x71\x80\xc9\x16\x07\x4a\x22\xed\xa5\x32\xbc\x2c\x10\x32\x8b\x8e\x93\xb5\x38\xa0\x45\x3a\x1c\x8c\x06\x11\x65\x65\x50\x13\x59\x29\x15\x0f\x12\x55\x34\xa5\x1c\x83\x5c\x72\xae\x4b\xd2\xac\x7a\x07\xb8\x65\xb8\x00\x5e\x7b\x6c\x96\x18\xfc\xa3\xd2\x28\x7f\x58\x93\xbb\x8c\x6c\xc7\xf0\xc7\xcc\x9f\x84\xa7\xaf\x8b\xea\x6e\x90\x33\x09\x1e\x74\xf1\x79\x76\x01\x9a\xa5\x5a\x37\x74\xdb\xbe\x29\xd1\x93\x16\x73\xb2\x6a\x49\xb3\x48\x18\xdf\x5e\x0e\x65\xb1\x30\xc9\x17\x45\xd7\xfb\xd1\x48\x5f\xc2\xea\x17\x7e\x3b\x4e\x44\xfb\x35\x63\x8b\xda\x8d\x1e\xcd\x10\x80\x80\xe7\xf1\x4c\x4b\xa9\xb8\x4c\xaa\xcc\x75\x13\x86\xbd\xaa\xf0\xde\x5b\xcb\xdc\xc9\x41\x67\xcc\xd4\x3d\x0b\x5f\xfd\xc7\xee\xf7\xd3\xdd\xcb\x3f\xee\x5e\xbd\x8c\x54\xf5\x08\x4f\x33\xc3\x1a\xf4\xa4\xa8\xb3\x6e\x8a\xda\x12\x7b\xbc\x60\xab\x53\xa0\x9a\x4d\x9a\xb6\xde\xfc\x00\xe0\x92\x05\xe1\xdc\x17\x0f\x8b\xa3\xb4\x25\x64\x28\xd6\xb4\xfa\x68\x6b\x08\xd6\xf9\xcb\x3f\x0e\xb5\x94\x66\xd7\x4a\x6a\x4b\x47\xc5\xb8\x85\x1e\x27\x33\x5c\xca\xa8\xb3\x24\xb0\x86\x46\xb1\x2f\x52\x88\xa4\x8f\x60\xb0\xaa\x92\x75\xdd\x86\x00\xeb\x1d\x88\xe3\x6d\x94\xdc\x55\x4d\x05\x90\x0e\x08\xe6\x85\xa8\x34\x86\xc0\xdf\x01\xd6\x05\x2a\xbe\x05\xb6\x1d\x2d\x47\xa7\xf1\x40\xdc\x5b\x55\x4d\x9b\xd5\xbf\xb0\xdb\x0c\xf6\xca\xaa\x6a\xbb\x4e\x2b\x91\x46\x56\x25\x40\xb3\x57\xff\x61\x80\x7d\x7d\x31\x85\xff\xc6\xe3\xf8\xf7\x53\xf3\xee\xeb\x4a\xa5\x55\xe1\x6a\x34\x8a\xff\x79\x0d\xa2\xf7\x3a\x05\x67\xb3\xc2\x8c\xe6\x75\x77\x9a\xe8\x07\x89\x79\x31\xcb\x40\xd2\xd0\xcc\xba\x92\x26\x86\xbc\xb6\xcc\x8f\x85\xf3\xec\xb8\xf9\xa1\xba\x5d\x1e\x33\x3f\x54\xa7\xda\xfc\xe8\x13\x77\x66\xb4\x56\xdd\x1c\x94\xf5\xf6\xc6\x88\xca\x12\xb6\x4b\xc0\x25\xbe\xfd\xf1\x2e\x4b\x8f\xb0\x8c\xdc\x02\x9a\xa3\xed\xc4\xbb\x8f\x69\xe8\x90\xcf\xaf\xed\x46\x53\x9c\xb7\xa7\xa7\x9a\x44\x68\x8f\x1f\xd3\xa5\x76\x0d\xbc\x52\x99\x37\x75\x41\xb0\x3a\x6c\xd1\x57\x1d\x46\x8f\x84\x7b\x4b\x2b\x12\xc4\xbb\x83\x21\x8c\xda\xaf\x85\x57\x01\xcf\xb1\x50\x16\x04\x48\xb2\x60\xb1\x39\x8c\x19\xe3\x5f\x0c\x65\x1f\x28\xf3\x72\xea\xb2\x5e\x64\x75\xf1\x25\xd5\xf4\x3a\xc1\x6b\x27\xdb\x6f\x56\x84\x49\x1d\x24\x12\xcb\xcd\x47\x14\xd6\x46\x14\x96\x47\x45\x40\xa7\xb1\xb4\x9e\xf4\x66\xa5\x6b\x84\xc6\x59\x4b\xdd\xa0\x83\xc8\x88\xb2\x99\x8f\x73\xd0\xa4\x70\x13\xd5\x61\x4d\x8a\xd0\xd3\x3c\xf6\xd4\x14\xf7\x44\x7e\xb0\x0b\xbe\xab\x41\xac\xd2\xfe\xc9\x05\x53\xaf\x58\xc1\xd4\x37\x6f\xde\xfe\xaf\x77\x3f\x7e\xff\xc3\xdf\xfb\xb6\x5f\x98\x35\x55\x12\x47\x4e\xf1\x54\x8c\xab\xd3\x29\xa2\x72\xed\x14\xa7\x5a\x47\x60\x98\x87\xb3\xd1\x58\x56\x45\x1f\xb8\xd4\xc4\xad\x27\xb0\x62\xb4\x99\xd4\x5e\x8c\x88\x68\x57\xc9\x0b\x5a\x73\x0c\x84\x6c\xef\x86\xb1\x24\x3e\xa9\xaa\x63\x67\x40\x21\xdd\xf6\xd8\xe9\x16\x75\x0c\x05\x15\xb0\xba\xe1\x8f\x92\x40\x64\xd2\x1c\x4b\xd8\xdd\x7b\x8c\x2a\x8d\x00\x07\x27\x0d\xae\x1a\xf9\x1b\xb4\xc9\xc9\x46\x25\xde\xb7\xb4\xa9\xfe\xa1\xd3\xf0\x66\x05\x1e\x17\x82\x62\x23\x8e\x31\x69\x77\x87\x0e\xbf\x0d\xe2\xc4\x2a\xc3\x42\x8c\xcb\x42\x41\x76\x43\xae\xad\x47\x38\x78\xf3\xe2\x85\x2f\x64\xc1\x37\x8e\xcc\x8c\x67\xaa\x16\x4b\xee\x74\x31\x9e\x91\x0d\xcc\xbb\xf8\x54\x83\xf3\xf3\x82\x73\xa7\xf1\x90\x91\x41\x24\xd8\xee\x13\xc0\x35\xc5\xc7\x92\x61\x24\xb4\x08\x07\x29\xae\x6f\x9b\xf6\x1b\x09\x7f\x14\xcb\x5b\xef\x2a\xb2\xaa\x17\x98\xe9\x34\xc1\x75\x13\xf4\x85\x2f\xc6\xe6\x06\xd0\xb8\x7f\xc5\x23\x60\xc5\x84\xae\x41\x5b\xe5\xf4\xcf\xac\x8c\x57\x3a\xc2\x16\x11\xae\x0f\x53\x21\x9d\x17\x3d\x52\xa2\x60\x30\x07\x8f\xd8\xb1\x57\x78\xc4\x82\xb4\x52\x75\x18\xff\x69\xb9\xfa\xe4\xb1\x9d\x3a\xec\x69\xc7\x64\xb9\x1f\xee\x33\x27\xbb\xee\xb1\x54\x32\xbd\xa1\x56\x93\xe1\xc0\xbe\xf5\x3b\xd0\x7a\x23\x84\x60\xcc\xf3\x83\xcc\x64\x59\x31\x65\x29\xa6\x58\xad\xfb\x01\xea\xec\xa2\xf2\x12\xc7\x54\x74\xd7\xc3\x9a\x7d\x5b\xaf\xfa\x02\x80\x62\x1b\xd6\x53\x22\xef\x8a\xb7\xff\x82\x23\x1e\x0c\x60\xf6\x50\x80\xdd\x43\xe8\xae\xb4\x49\xfa\xa9\x95\x43\x3f\x8a\x52\x5d\x84\x6f\xde\xee\x2a\x3d\xe2\x68\x3d\x60\xd8\x14\x37\xc9\x72\x03\x5b\x96\x6b\x1a\xe8\x52\x05\xb8\x5a\xca\xf4\xa8\x4d\x69\x4b\x4b\x65\x69\x4f\x8d\x11\x4b\x27\x8a\xad\x68\xcf\xd2\xd8\x52\xfd\x75\x56\x47\xdb\x79\x5d\xd1\xec\x9b\x2a\x7a\x39\x44\x3a\x06\x86\x32\x94\x30\x26\xb6\x62\x72\x86\x43\x4c\xf7\x8e\xe7\xcc\x8f\x93\x7f\xdf\xfc\xe6\x76\x91\x04\x7f\xd9\x03\x3b\x07\x91\x6d\x76\xfd\x69\x03\x9a\x46\x6a\x91\xc4\x68\x8f\x50\xb9\x1d\x78\x24\x06\xa3\x30\x7f\x5a\xd7\xd1\xd3\x1c\x25\xfd\x8a\x8a\x08\xc5\x6a\xb1\xa9\xa5\x5b\x09\xdf\xe1\xf5\x86\x29\x06\xb6\x29\x37\x54\x37\x4d\x2d\x4d\x3c\x54\xa3\x83\x6b\x72\x2a\x1d\xcc\xe2\xb0\x52\x03\x75\x93\x82\x5a\x5b\xd9\xd7\x3a\x30\xe9\xd8\xa0\x68\x76\xda\x43\x64\x9d\xce\x5d\x23\xe8\x88\x14\xe1\x7f\x93\x20\x50\x89\x2d\x3f\x61\xcb\x81\x74\xfa\xd8\x27\xb2\xa8\x4e\x8f\x29\xc8\x9c\xe8\x0e\x47\xbf\x7c\x3a\x38\x1d\xd1\xd1\x69\x30\x60\x11\x1e\x50\x0c\x42\xf3\x5b\x40\x47\x07\xed\x1a\x1f\xf3\x48\xc6\x67\xf2\x21\xbf\xdd\xa2\xad\xc1\xd5\x2c\x68\x04\x70\x2c\xc0\x6d\xcc\xdd\x0d\x10\x12\xa2\xb9\x2b\x64\x26\x7c\x83\x90\xca\xdf\x98\xcf\x0c\xb9\x68\x24\x78\x14\x93\xc6\xa5\xbb\xb4\xae\x95\xe1\x2c\xbc\x6d\x69\xc4\xc3\x4c\x15\x98\xce\x9d\x37\xfd\xf2\x3e\xeb\x15\xea\x87\x0c\xfa\x28\xc9\x42\xb1\x4f\x4d\x65\x4d\x6d\x2a\x78\xa1\x97\xdf\x4b\xaa\x66\x72\x85\x67\xf2\x2d\x8b\xc4\x66\x84\x90\x17\x26\x60\xdd\xc8\xaf\x50\x7c\x47\x30\xb1\x78\x26\x26\x16\x12\x13\x02\x44\x5b\x3a\x19\xf2\xad\xc3\xce\x5d\x1b\x54\x64\xb9\x1c\x33\xd4\xb8\x2b\x2d\x51\x7b\x14\xbb\x45\xbf\xd8\x98\xe4\x88\x14\x51\xbb\x12\x83\x91\x61\x5d\x77\xc8\x98\x9b\xcc\x3c\x89\xec\x1d\x91\x43\x73\xa4\x9e\xc6\xed\xe9\xa2\x2f\xf0\x3b\x01\x86\x85\x3f\xfc\x2d\x47\x6e\x23\xa0\x0f\x1b\x20\x76\x70\xf0\xbf\xa5\x65\x9b\x70\x9a\x43\x59\xfd\xa1\xf9\xfe\x8e\x6e\xcb\x55\x7d\xcf\xb2\xf5\x62\x1b\x80\xed\x65\x83\xb4\x8a\x45\xeb\x1f\xb1\xf7\xa4\xaf\xf5\xb0\xaf\x79\x57\x52\xdb\x4a\xa0\xbf\x80\xa3\x03\xba\x0b\x4b\xb7\x73\xdb\x0d\xec\x74\xdd\x81\x3b\xb5\x62\x13\xcf\xc0\xb6\x37\x32\xc1\xee\xdd\x50\xd2\xdc\x6e\xa9\xa1\xd9\xba\xdb\xab\x7d\x80\x72\x42\x00\xa7\xad\xa1\x1f\xc0\x4c\x37\x7c\x56\x46\x73\x02\x01\x63\x5e\x5a\x0f\xfe\xf0\x34\x3e\x9f\x0a\xa7\xda\xb3\x2c\x87\x9b\xc7\x64\xe4\x81\xdf\xb7\x60\xfd\x38\xed\xef\x3c\x70\x2d\x0e\x17\x25\xdd\x69\xf7\x1d\x2b\x03\x4a\x8d\xe5\x92\x99\x62\xc3\xe8\xb9\x54\x6e\x0a\xf2\xb1\xe8\x3c\xb0\xbc\x7c\xe6\xde\x82\x9a\x9a\xc9\x62\x13\x43\x21\x8c\x89\x58\x49\x76\x65\x6f\xff\xc1\xd6\xc8\x7e\x42\xe4\x62\x8d\x18\xf4\x12\x67\x56\x69\x33\x83\x60\xa6\x7f\xca\xa2\x66\x76\xe1\xab\x68\xe6\x0f\x8e\xc7\x7c\x79\x6f\x47\xf7\xfa\xf2\xee\x7a\x93\xcd\x2a\xea\xe0\xdb\xe8\x2b\x33\xad\x85\x7b\xa8\x06\x51\x79\x50\x27\xfd\xcc\x6a\xce\x0e\x16\x41\xdb\x39\x68\x61\xa8\xf9\x92\xcf\x3c\xd6\x96\x0c\xcf\xbe\x12\xd9\x13\x0a\xee\x23\x35\xea\xa2\xe5\xa6\x57\x8c\x63\x60\xa6\x83\x04\x11\xdf\x22\xee\x78\xb3\xa5\xd8\xea\x64\xc7\x9c\x6c\xf3\xc4\x1f\x45\x12\x2d\x5d\xbb\xd2\xf6\xee\x71\x68\x99\xaf\x08\x58\x11\x78\xc7\x8d\x81\x7f\x46\x39\x36\xb7\x45\x7e\xc3\x1d\xc4\x6d\x5d\xaf\xda\x6a\xd3\x7f\x76\x05\xae\x09\x8b\xde\x82\x50\x45\x52\x9c\x85\x74\xb7\x0b\x0a\x40\xfa\xb6\xfe\x12\x0c\xd3\x0c\x1d\xf7\xc5\x3c\xb4\xf7\x09\xcb\x6e\x61\xb0\x07\x98\x20\x6e\xff\xdd\xed\x42\xfc\xe3\x6c\x1b\x8e\x92\xde\x86\xee\xfe\xe2\xde\x42\x61\x4f\x48\x99\x15\x94\xf0\x8c\x2c\xbc\x6c\x19\x8f\xfc\x82\xae\x59\xb6\x8b\x5f\xb4\x7c\xe3\x04\xbf\x60\x1b\x4c\xf9\xb9\x15\x76\xa0\x59\xc7\x91\xab\x35\x9e\xbc\xa5\x40\xc5\xc1\x1e\x1f\xb3\x75\x03\xb2\x64\x5d\xdd\xb0\xd4\x08\x46\x61\x19\x73\xe0\x68\x09\x74\x0f\x5d\x4b\xac\x27\x18\x0d\xa1\x37\x1b\xb4\x91\x12\xcb\x44\x97\x50\x0c\x78\xea\x41\x5e\x5e\x78\xde\x19\x93\xed\xb6\xbe\x87\x47\x67\xf0\xcc\xfb\x42\xb5\x5e\xd3\xad\x7a\x81\xfd\x7f\xaa\xaa\x7d\xf9\xd6\xdb\x81\xd8\x01\xdf\x56\xed\x8a\xa2\x42\x2d\xe8\x8a\x7c\x49\xa6\x31\x1e\xd0\x81\x60\x62\x8c\x9c\x54\xd0\x0f\x5e\xdc\x55\xf4\x1e\x4d\xc6\xe4\x41\xcd\x24\x40\xd1\xa8\xf4\x70\x32\x75\x76\xc0\x22\x6e\xad\xd4\x80\x3a\xda\x44\x2e\x99\x8c\xd8\xb2\x95\xcd\x3a\xd9\x80\xdc\xa9\x07\x67\x17\x20\x82\xbe\xe7\xd7\xa1\xdc\xbc\xf7\x42\xc2\x66\xbb\x16\xf2\x2e\x66\xba\xbd\x0f\x14\x27\x08\x47\xde\x7d\x1e\xa9\x63\xc2\x6c\xba\x93\xac\x6f\x1c\xe3\xc6\x72\x35\x62\xf3\x68\x39\x1e\xcf\xe4\x56\x0f\x7a\x59\x5e\xa1\x73\x26\x72\xa1\x69\xba\x88\xfa\x62\xc7\xc1\x48\xe1\xc2\xce\x66\x48\x28\x6d\xa7\x9f\x8b\x52\xe1\xf1\xcc\xa4\x17\x11\xdc\x90\xf5\x2d\x08\xaf\x21\x0c\xf4\x20\xf2\xae\x72\xe3\xf9\x62\x6e\xec\x13\x07\xdf\x53\x04\x7f\xd8\x9e\x3c\xf7\x1d\xb6\x2b\x5c\xbe\x03\x0c\x15\x74\x2a\x4e\xc3\xe5\x28\x78\x2a\xcc\x6c\x64\x2b\xce\x6d\x76\x58\x3d\xbd\x43\x06\xa6\x0c\x1f\xed\xbd\x0d\xb8\x29\xfa\x77\xdf\x9e\x02\xf3\x7d\x5d\xfa\x24\x51\xa8\x39\x16\x6d\x4b\x6e\xec\x96\xd5\x2f\x9f\x90\x5b\x5c\x03\x0e\x88\x52\x68\x96\xc6\xa3\xc8\xb5\x8c\xe8\xb4\x12\xa4\xec\xdd\x1d\xdb\x85\xd5\x18\xa6\x93\x84\x10\xea\x32\x43\x1d\xc4\x18\xf9\xe4\xa4\x7b\x8e\x83\x7c\x12\x8a\x5f\xe9\x03\x4b\x16\x89\xab\x18\x1d\x6a\x79\x81\xca\xcc\x33\x49\x7e\x6e\x5b\x07\x6c\x59\xc2\x8b\x29\xc9\xb4\x0b\xab\x65\x51\xc9\xb5\xc0\x1d\xbc\x4c\xbf\x59\x77\x0d\x95\x8d\xf2\x22\xbf\x24\x57\xc3\x14\x77\xb4\x67\xf0\x2b\x2d\xa2\x2e\x5c\x8c\xaa\x3c\x27\x13\x65\x83\x0a\xcc\x2e\xb2\xce\x71\xea\x6c\x8c\x5c\xdb\x61\xf3\x2c\xc1\x93\x42\xac\x28\x45\xa4\x95\x97\x41\x87\x0a\xf8\x1c\xed\x8e\x17\x20\x5c\xe5\x5f\xc7\x28\x60\x95\xad\xe0\xe9\x1a\x6a\x87\xb9\xe6\x49\xc8\x2b\xb9\x50\x0b\xba\x60\xb8\x20\x18\xeb\x6c\x61\x1a\xf7\x85\x3d\x12\x5e\x3c\x99\x28\x66\xdb\x96\xe5\x2e\xc2\x5c\xaa\x45\xdc\x03\xe6\x40\x07\x77\x24\xc7\x08\xda\x70\x6e\xb0\xd4\x8f\x9c\x9a\x54\xaf\xfe\x2d\x8a\xd8\x1f\x1e\x1a\xa4\x87\xc0\xde\x78\xea\x68\xef\x0e\xc4\xee\x83\xd1\x20\x5f\x70\x38\x8a\x71\xf6\x6f\xb1\xa8\xff\x9f\x2e\x0d\xca\xdc\xe3\x6b\x83\x0c\xfb\xc8\xb5\xc1\x0e\xbb\x8b\x23\xa3\xdb\xbe\x8e\xd9\xe2\xe8\x17\xfa\xb7\xe8\x38\xd5\xfb\xd2\x04\xb7\xd0\x2d\x03\x94\x18\x56\xe2\xa9\xf7\x50\x9e\x64\x22\xac\x81\xbe\xec\x7a\x16\x29\x47\x4b\x18\x24\x4d\x27\x20\x38\xa9\xef\xc1\x4c\x79\xd7\xe3\xa5\x77\x82\x32\xa2\xc0\xca\xef\x0e\x0c\x0b\x19\xfd\xd3\x9a\x3f\x2e\xa5\x79\x89\xa1\xa4\x85\x92\x70\x3f\x7d\x78\x17\x1a\x93\xe4\x0e\x34\x6d\xd5\x0c\x71\x4f\x2d\x73\xa0\x2a\x16\x1b\x73\x37\x11\xe8\xa4\x15\x58\xe1\xf9\xb6\xca\x68\x91\x7d\xd1\x2f\xca\x25\x51\x76\x25\x5a\xef\x3a\x56\x29\xd2\xbb\x42\xcb\xcb\xf5\xd0\xd2\xde\xea\x43\x99\xa3\x73\xff\x6d\x1d\x47\x65\x9b\xa6\xbb\x28\x4b\xfc\xed\xc0\x78\x38\xfb\xaf\x66\x4e\x6e\xdb\x7a\x0e\x7f\xcf\xaa\x18\xab\xb0\x98\x27\xb7\x8c\x66\xd7\x20\xb7\x97\xe9\x52\xf9\x8a\x15\x3a\x87\xe0\x74\xa0\x45\x8c\xc8\x51\x07\x44\xb2\xf8\x0e\xdc\x05\xeb\x13\xcf\x0b\x80\x3f\x45\x05\xd6\x15\x98\xa3\x41\xb6\xaa\xc1\x72\xda\x47\xe6\x5e\x6d\x3f\x77\x71\xa7\xc8\x82\x53\x99\xb0\xf3\x52\x27\xb8\xfd\x6f\xf0\x33\x8d\x74\xb1\xa3\x1d\x0c\x17\x27\x03\xc8\x85\xff\xa1\xe6\xb1\x4d\x58\xe2\x55\xda\xd9\x65\x7e\x63\xde\x12\xa1\x38\xa0\xb8\x6b\xce\x2a\x58\xbf\x55\xa7\x3d\x60\x92\x5e\xe8\x6c\xda\x91\x99\xfc\x78\xd3\x85\xa9\x8e\x66\x40\x10\x59\xdd\xb6\xf5\x0d\x90\xc3\xf2\xe4\xe4\xf3\x84\x5f\x8d\x6e\x2e\x36\xe2\xe7\x9c\x2d\x02\x77\x4e\xc4\x3b\xf0\x73\x7c\xf3\x7a\x83\x7f\xe7\xb2\xb9\x3c\xb8\x41\xbc\xc2\x2e\x46\x2b\xe8\x85\x6d\xe2\x53\xa7\x3b\xb0\x3f\xe2\x1d\xfc\x3d\x5e\x41\x3f\xf8\x63\x2e\xda\x27\xcb\xd8\xde\x3c\xbf\xb6\x16\x94\x79\x7d\x3f\xab\xa9\xbc\x25\xab\x9c\x45\x91\x8b\xef\x19\x0e\xc3\x65\xfc\x39\x5e\xc5\x37\x72\x0b\x03\x9e\xea\xfa\x83\x24\xc1\xf0\xe7\x78\xc9\xd7\xc7\x13\x45\xa2\x86\xc0\x9b\xd1\x43\xbb\xb6\x82\x11\xe5\x6c\x1c\x9b\x6d\xb8\xaf\x28\xa4\x27\xe1\x7b\xed\x40\x33\xe1\x59\x30\x07\xc3\xe8\x68\x1e\x74\x42\xe8\x65\x4f\xd4\x7c\xfb\xb4\xa4\xf0\xb6\x73\xd8\x90\x8d\x10\xa7\x1e\x4b\xe7\xa5\x84\xfc\xa2\x69\xe1\x52\x6c\x69\xde\x12\xe1\xcc\x85\x8e\x3c\x16\x3c\xa8\x77\x03\xba\xad\x5a\x8f\x39\xf7\x9e\x4f\x71\x47\x41\xcf\x2b\x8c\x1e\xd8\x3b\xb3\xaa\xf9\x8e\x7c\x17\x2e\x58\x70\x81\x95\x54\xb2\x6b\x2c\x8f\x05\xd1\x30\xe5\x7b\x3f\x36\x29\xfb\x7f\xb4\x88\x33\x46\x35\x29\xff\x33\x5a\xc6\x32\x4c\x87\x62\x55\xd0\x02\x42\x1a\x6b\xdb\x18\x7d\x98\x45\x62\xc6\x56\x0a\x2d\x4e\xfe\x42\x5a\x90\x3e\xf5\x2d\x46\xfe\x70\x84\x88\x8b\x17\xeb\x36\xde\xc1\xc0\xc3\x1e\x8d\xe7\x69\x64\x1e\xf7\xa8\x53\x2b\x55\x17\x67\xd7\x5d\x9c\xcd\x04\x3b\x81\xa9\x78\x3d\xc4\x68\x4b\x68\xce\xae\x1c\x5f\xbb\x72\xe4\x3f\x85\xab\xc9\x83\xe0\xb4\x00\xdb\x02\x04\x5b\x1e\x67\x31\x08\xd2\x68\xc6\x99\x69\x2e\xb0\x91\xf2\xcb\x84\xf7\x96\x32\x86\x65\xfd\xad\xd2\x33\xf8\xb9\xe3\x2c\xab\xb6\x04\x80\x18\x5a\xcd\x5f\x7e\x2d\x18\x92\x8e\xaa\x04\x2f\x90\xc9\xcb\xd1\x75\xbc\x86\x87\x81\x31\x1d\x60\x62\x73\x26\xc1\xac\x10\x33\x53\x65\x1f\x42\x88\xbf\xc1\xd0\x43\x78\x13\xe3\xe4\x2f\xd7\x57\xf1\xaa\x13\x23\xd6\xaf\x59\x61\x1c\x55\x1b\xc8\x82\x17\x42\xe8\xe7\x4a\x84\xb0\x28\xc9\x1f\xa6\x5f\x87\xe7\x63\x72\x96\x45\xa3\xe0\xdf\x02\xf5\x0a\x17\x55\xec\xc5\x6e\x28\x59\x2b\xdc\x9e\x24\x0a\xa7\xfa\x4c\x21\x5d\xb8\x70\x18\xae\xe5\xc5\x3e\x76\xd0\x44\x9c\x78\x22\x45\x30\x46\x43\xe6\xfc\xd0\x52\x00\x12\xcf\xae\xb9\x42\x94\x10\x3b\x07\x87\x1c\x8e\x67\x89\x03\xa4\x03\xbe\x0e\x03\x04\x77\x20\x62\xf3\x47\x0a\x74\x8c\xdd\x16\xdc\x8c\x1e\x5a\x82\x8b\x9d\xeb\x20\x54\x65\x4c\xdd\x3a\x98\x37\x7e\x33\xc2\xbb\x1f\x45\x0b\x39\x91\x68\xeb\xb7\x71\x3a\xc5\x41\x3e\xf3\xd9\x6f\xb2\x2d\xf0\xa8\x64\x9f\x75\x25\x0f\x2c\x0a\xcb\x47\x9f\x84\xfc\x0c\x71\x5a\x3c\xb1\xca\x4a\xfa\xd2\xae\xd4\xe7\x11\x5c\x6b\xe5\x64\x00\xe0\x48\xba\x6e\x16\xca\xbd\x6e\x2c\xb8\xc6\x6c\x1e\x11\xf4\x1c\x4a\xf3\x8c\x98\xb1\xf5\x1a\x30\x57\xad\xc9\x6a\x2c\xde\x8f\xd0\x39\xee\x7f\x1e\x77\xbb\x57\x45\x50\xe2\x8d\x0e\x9b\x68\xcb\xbb\xef\x54\x29\xcd\x1a\x1d\xc7\x5f\xda\x16\x76\x59\x59\x9a\x39\x25\x30\x33\xe1\xa4\xa1\x84\x2e\xd2\xe0\x9b\xef\xdf\xfd\x1f\xe6\x74\x88\x7d\x0e\xec\x0c\x0b\xe8\xed\x1b\x94\xbc\x80\x8c\xb7\x2c\xe7\xf2\x23\xcd\x71\x03\x1b\x3f\xaa\x97\x72\xc3\x02\xf7\x71\x59\xf1\x0f\x1a\x3f\xb0\x07\x09\xe5\x36\xc8\x98\x32\xb1\x16\xf3\xbc\x2b\xdc\xe5\x4c\x37\xc6\x4a\xd7\xcd\x3e\x92\x65\x80\xc5\xdc\xb2\x2a\xf7\x20\x3b\x85\x54\x43\x12\x7f\xe0\x29\xa3\xa4\x98\xf7\x26\xf8\x54\xc5\xe3\x6e\xe7\xcb\x0f\xc2\x03\xe8\x52\x97\x45\x02\xe6\x96\x38\x28\x87\x55\x17\xe1\xb0\x6b\x18\x53\x80\xab\x1f\xf0\x1b\xd0\x2e\xc1\xf9\xeb\x8d\xb3\xe6\xcc\x17\x31\x28\xe8\xee\x9a\xb8\x46\x92\x23\x6c\x75\xad\xb9\x36\x05\x09\x47\x07\x57\x20\x99\x18\x3c\x16\x4a\x85\xe9\x98\x8c\x83\x7a\xf6\x72\x9c\x9f\xbd\xdc\x4b\xf3\xd0\x6c\x37\x2e\x0e\x36\x10\x96\xa0\x77\x24\x78\xa9\x38\x7b\x69\x36\x1f\xe7\xfb\xe4\x51\x2f\xca\x71\xf6\x1d\x34\x78\x55\xa8\x07\x17\x5c\xd2\xd9\xe4\x30\x53\x85\x17\x2a\x86\x2c\xf7\xbb\x50\x41\x41\x3d\x21\x65\x7f\x40\x59\x84\xc2\x31\x13\xbb\xe8\xda\xe5\xce\x40\x38\xf8\x19\x23\xe6\x1d\x82\x23\xf4\x36\x89\x64\xe0\x96\x63\xbb\x1c\x2f\x04\x7d\x81\xab\x25\xed\x08\x79\x6b\x54\xcc\x96\xaf\x17\xcc\x60\x67\x84\x9f\xb2\xdf\xe3\x65\x52\x5d\x2c\xb8\x41\x25\x10\xca\xf7\x45\xca\x17\xd4\xed\x71\xc5\xcb\x2e\xc4\xf6\x19\xb1\x26\x65\xfc\x59\x1a\x60\xe5\x28\x9f\x5d\xbf\x5e\x70\x33\x84\xb3\x5c\xca\xaf\xc6\xd7\xc9\x67\x18\x44\x71\xab\xf9\x6c\x24\xee\x8f\x3f\xcb\x0d\x55\x03\xda\x59\x37\xbf\x1c\x75\x8f\xb7\x96\xe1\x44\x81\x6a\xc5\x20\xf6\x9e\x49\x57\x7c\xee\x76\xa1\xc7\x21\xc6\x18\x09\x3c\x9e\x8b\xbf\xdc\xe5\xcd\x98\x73\x2b\x6e\x75\x99\x0c\x3c\x7c\xab\x68\xbe\xa8\x07\x64\x94\xfe\xf3\x9f\xe1\x39\xfd\xf7\xaf\xb9\x19\x49\x80\x93\x6f\x30\x41\x79\xbf\xac\x40\x78\x2a\x31\x01\xad\x85\x14\xf9\xe6\xcb\x07\xcc\x19\xeb\x33\x50\x9c\xda\xfc\x6a\xd3\x27\x92\x51\xf1\xa5\xea\x17\x7e\xfd\xc3\x4e\x44\x88\x44\x92\x5b\x58\x62\xdb\x5e\x4e\x97\xfc\xa9\xf1\x5b\x08\x71\xa6\xf8\x5d\x93\x88\x27\x9a\x3a\x65\xa7\x18\xb1\xe9\xa4\xff\x75\x5a\xc7\x7e\x5d\x6c\x48\xeb\x7f\xff\xdc\xb7\x57\xe1\xbd\x78\xda\xdb\xca\xbc\x3a\xbc\xd9\x21\x33\x8f\x82\xc0\xaf\x3f\x84\xb8\x61\xf5\x71\x81\xc2\xf8\x37\x8f\x10\x62\x28\x90\xaf\x85\x73\xfa\x40\x2e\x7c\xcf\x1c\xe9\x95\x45\xbd\x71\x47\xac\x8d\x6a\x9e\xcd\xed\x29\xe3\xb4\x42\x8f\x66\xbe\x54\x1a\x40\x18\xec\xb3\x0b\x39\xad\xda\x56\x80\x94\x70\xac\x08\xf3\xed\x9d\x9e\x82\x78\xb0\xb7\x0f\x42\x17\x64\x34\x33\x2f\x64\x6d\x84\xb8\xf4\x55\x47\xc8\x47\xc7\xeb\x23\x64\x9f\xa2\x42\xe2\x37\xcb\xb6\x6f\xea\x0d\x4b\x99\xfd\x8b\xb3\xed\xb2\xdb\x27\x67\xdb\x8d\x86\xff\x9a\x6c\x3b\xcf\x8c\xab\x6e\x79\x66\x9c\x9f\x66\xa3\xd1\xde\xfd\x06\xd5\x0f\xbc\x81\xfe\xe8\x94\x5c\xca\xeb\x06\xb7\xb4\x1f\xfa\x16\x85\x69\xf4\xf4\x11\x88\xde\xee\xf6\x60\x24\xd8\x45\x91\x91\xca\xe0\xc9\xcf\xdc\x70\x73\x17\x53\xdb\xfe\x8c\xbb\x9c\xdd\xa1\x8c\xbb\x9d\x69\x5f\xbe\x72\xda\x0a\x8d\x03\xcf\x97\xaf\x2e\x3c\x7d\xab\x8d\x66\x76\x2a\x7e\x1f\x99\x6c\xfb\xb8\xa9\xab\xd7\x23\xbb\xce\xcd\x62\x9f\x5f\x9f\x95\x7c\xae\x3b\x6d\x24\xfe\x54\xfc\x5b\xbb\xd8\x36\xba\x1e\xeb\x62\x3b\x8d\xf5\xa6\x3d\x7d\x3c\xa9\x8e\x21\xb3\xf3\x4a\x7c\x1d\xbb\x0c\x90\xab\xb1\x78\x48\x58\x0f\x9a\xfb\xfd\x7a\xaf\x53\x3f\x10\x4e\xab\x7f\x82\x6c\x68\x4c\x27\xf4\xbf\xe0\xc9\xac\x3c\xc5\x47\xd3\x87\xf2\x2a\x74\x77\x5d\x84\x83\x0b\xa9\x6c\xac\xcc\x6f\x63\x99\x16\x96\x42\xbd\xdf\xb4\xca\x26\xe2\x85\xb9\xfa\xc5\xcd\x2b\xc2\xcc\x2b\x75\xf3\x5f\x6f\xa8\x78\x0d\x94\x23\x16\x95\xdc\x39\xc8\xac\xab\x3e\x93\x4a\x9d\xcc\x54\x6d\x2c\x95\x26\xd6\x71\x66\x5e\x48\x95\x26\x2e\x7d\x2a\x4d\x3e\x3a\xae\xd2\x64\x9f\xcf\x53\x69\xe6\x99\x3f\xd6\xe9\xff\xdb\x3a\xa7\x4d\xc3\x83\x1a\xa2\x9a\x43\x6c\xca\xe5\x75\x3c\x72\xbe\xdc\xb3\x78\xaf\xaa\x70\xb0\x0e\x87\x65\xba\xf9\x5b\x73\xee\xb9\x26\x6e\x71\x8e\x29\xc2\xb2\xee\x37\x89\xa4\x1a\x4c\x1d\x6c\x8b\x5d\x44\x41\x10\x8d\x82\x01\x9e\x53\x31\x58\x55\x83\x0b\x3c\x11\x80\xbf\xc7\x3c\xdb\x26\xbd\x14\x19\x29\xfe\xbe\xbe\xe6\xe7\xd4\x72\x8b\xaa\xb3\x3d\x98\x47\x32\xd5\x51\x57\xd6\xc4\x58\xe1\x0d\xbf\x83\xb1\x2d\xfe\xab\xd9\x7c\x61\x27\x94\x8a\x70\x67\x09\xfa\x6b\x29\x83\x43\x02\x7f\xa1\x75\x82\x4b\xfe\x6c\xfb\x41\x0f\xe8\xb5\x20\xb0\xd6\xc0\xf9\x60\x87\x09\x22\xd3\xf1\xd9\x01\x1d\x9f\xa3\x8e\xcf\xf9\xd1\x9b\x59\x47\xe9\x66\x46\xd1\x1a\xc7\x70\x72\x3e\xc5\x65\xb3\x84\xc7\x47\x13\x89\x7d\xdc\x64\x21\xd5\xad\x52\xdf\xed\x98\x87\x74\x43\x7e\x31\x6a\x97\xdd\x97\xe2\x23\xb1\x17\x55\x3a\x9f\x59\x41\x66\xb6\x38\xdd\x2c\xb4\x08\x62\x83\xf2\x4f\xa7\x33\xac\xf8\xfc\x2b\x23\xd7\xd0\x0f\x2d\x4a\xb3\x0c\x75\x35\xf7\xd0\x03\xa9\xc3\x1c\x5a\x31\xe2\x3b\xd1\xe3\xe8\xd2\x22\x40\x29\xa7\x4d\x84\x86\x32\xab\xcd\x0c\x73\x8d\x1d\x2e\xd6\x2c\x96\x89\x00\x81\x9d\x8d\xc0\x3e\xb2\x32\xcf\x87\x72\x4a\x79\xcf\xfe\xf6\xd5\xc4\x28\xb0\xc5\x73\x98\xa4\x98\x67\x56\xaa\x3c\x13\xa6\xec\x14\xba\x5e\x5e\xb2\xfd\xff\x11\x8b\x1b\xe4\x31\xbd\x02\x83\x94\x6d\x88\x8a\x26\x4d\xbd\x35\x6a\x0c\x98\xe9\x28\xe5\x18\xe0\x76\x8c\x9e\xf5\xbe\x7b\xc0\x93\xcc\x2b\x00\x4b\xdd\x36\xbc\xf8\x07\x57\x02\x0f\x0e\xe1\x48\x34\xee\x9f\x5f\xb1\xdd\x5d\x99\x75\x2c\x3e\xe3\xc3\xfe\xc0\x41\xef\xd2\xd9\xc7\xa7\x71\x20\x0c\xa3\xc5\x5e\x1d\xf9\xd1\x08\xfb\xf5\x51\x3e\xf6\x0d\x22\x83\x78\x72\xdf\x97\x98\xa0\x8a\xa8\xf3\x79\xc9\x90\x90\x29\xb3\x54\x5d\x84\x49\x30\x43\xcc\x1f\x39\x32\x28\xbb\x48\x65\x5d\xc2\x60\x31\x4c\x43\x92\x96\x97\xa5\x3a\xb6\xe4\x4a\xd6\x52\xb0\xbe\xf1\xdb\x72\x84\x85\x97\x16\xe0\x88\xbc\xa6\x88\x5e\x93\x69\x7b\x84\x26\xf3\x0e\x43\x5e\xf4\x48\x74\x39\x23\xc1\x72\x46\x18\xb2\xbc\x24\xf8\xed\xd9\x8b\x94\xb2\x1f\xe1\x10\xfe\x8e\xce\x81\x1a\xb2\xd7\x29\xff\xd9\x01\x02\x9b\x38\xcb\x27\x9f\x59\xce\x79\x17\xaa\xcc\x06\xc9\x38\xc8\x51\x72\xc5\xe8\xd4\x3e\xc2\xf7\x74\x94\xb1\x93\x7d\xc5\x29\x79\xc6\x6b\xfc\xf4\x5f\xf1\x1c\x3f\x8d\xc9\x34\x1a\x4f\xa0\x03\xb1\xaf\xaa\xc0\x77\x72\xfb\xac\x90\x39\x76\xe3\xa8\x29\x76\xaa\x88\x3e\x41\xc9\xfe\x0a\xd6\xaa\x32\x0e\xbc\xf2\xf4\x68\x9d\x8d\x23\xf1\x60\x2b\x1f\x07\x59\x6c\xfa\xf6\xbe\x5e\x47\x32\x88\x59\xfc\xb4\x6e\xab\x95\x4f\xb3\xc6\xc7\xbe\x00\x60\x99\x36\x0a\x90\x99\x7d\x29\x6d\x18\x75\xc3\x32\x70\x32\xf7\xe1\x71\x13\x47\xf7\xac\x77\x36\xb8\x87\x82\x5b\x98\x31\x8f\x86\xf1\x1c\x15\x8e\x3d\xc9\x93\x52\xfb\xce\x09\xcf\xd4\xe9\x4a\xe2\x54\xbb\x0c\x2b\x25\x7f\xcd\x39\xe1\xcf\x2d\xd4\x27\x19\xff\x0e\xac\x73\xcf\x72\xdd\x1f\x73\x9e\x76\xde\x65\x22\xf3\x28\x95\xa7\x16\xb2\x1f\x2b\xf0\x32\x07\x88\xf1\x60\x3a\x45\xf9\xb7\x2b\x71\xb0\x93\xc9\x27\x11\x1e\x06\x95\x66\x8e\x6e\x42\xa9\x54\xb0\x73\xf5\x9d\x83\xed\x8a\xb4\xe8\x3b\x5a\x5f\x9d\x61\x87\x27\xbd\x4a\xa6\x64\x6c\xeb\xf9\xb0\x87\x3c\xf2\xca\xfe\x00\x46\x82\x9f\x18\x01\xab\x92\x1f\x97\xee\x24\x36\x19\xf2\xdd\x73\x21\x98\xf2\x32\xd3\xa0\xb2\xac\xcd\xf7\x36\x65\x6f\xe3\xdc\xa8\x79\x68\x73\x66\x66\x44\x87\xfe\x94\x28\x3b\xa9\xad\xff\xf8\xda\xa5\x79\x72\xa7\x94\xab\x99\x29\x74\xf0\x50\xc0\x28\xb6\x5f\x58\xc6\x4b\x5d\x21\x64\x2c\xa4\x86\xee\x01\x17\x3a\x31\x32\xc3\x6c\x5a\x5e\x1c\x64\x6e\x23\x55\x32\xe3\x69\xc3\x31\xf1\xbb\x3d\x3b\x6e\x35\x3f\x2c\xf8\xe3\x02\x8c\x6d\x9d\xfb\x2e\xd9\x37\x83\xbd\x52\x4a\x9f\xd5\x6d\x91\x18\x38\x0a\x47\xc4\x1b\x0f\x0a\x78\x8f\x59\x45\xe0\x51\x56\xf4\x9e\xad\x9b\x79\x64\xf8\x33\x7a\xc2\x32\x99\x39\x4b\x33\x58\xd5\x23\x99\x53\x65\x82\x4e\x72\x27\xf2\x80\x07\x78\xf7\xaa\x21\x3c\xd4\xe3\xd1\xca\xe7\xd9\x88\x98\xb2\x03\x5b\xe4\x07\x9a\x17\x20\xc8\xd4\x5a\xa8\x8f\x84\x2c\x53\xda\xfb\x39\xa6\x85\xd2\x96\xdd\x6f\x1a\xef\x76\xc3\xa1\xd1\x1f\xbf\x29\x8f\x74\x9b\xe9\x96\xcb\xde\x8f\x1f\x97\x4f\x4b\xf5\x97\xec\x33\xcf\x9d\xd2\x03\x3b\x64\x4d\xb2\x99\xfc\xa1\x42\xd5\x24\xf3\x86\xa9\xe1\xf6\x23\x42\xd4\xd0\x4f\xff\xc7\x48\x3c\x5b\xd9\xc4\x26\x32\xa9\x3c\xf8\x69\xc3\xd1\x81\x6f\x75\x20\x1c\xbd\x7b\xff\xf8\xf2\x76\xbe\xd6\x71\xb0\xcd\xa6\x62\x8a\x34\xfe\x0d\xbf\xbc\x4c\xca\xb2\xfa\xe5\xd1\x1f\x5e\xe6\x6f\x3f\x25\xd8\x7d\xe8\x53\xcb\x8f\xfc\xae\xf2\x0b\x61\x6b\xba\x11\x23\x91\xcf\xb1\x23\x0a\x0c\x42\x03\xc3\xf6\x47\x15\x71\x6f\xb2\xcc\x0b\x9b\x9f\x64\xd4\x5f\xc5\x7e\x74\xf3\xbf\x56\xed\x92\xa9\xa8\x6f\xeb\x7a\xe3\xdd\x5c\x63\x1c\xac\xc6\xba\x95\x9b\xe5\x6e\xd7\x9b\x6a\xcd\x7f\x6e\xb0\xf4\x49\xd6\x11\x18\x2e\x81\x39\x50\xd8\x63\x51\xfc\xf8\xfe\xe3\xfb\x4f\x69\xc0\xba\x1e\xb0\xff\xb1\x42\x50\xfc\x12\xa5\x07\xd6\x3e\x39\x11\x72\x98\xc6\x1c\x73\x09\xb7\xfc\x3a\xc1\x4b\xe7\x8b\xd3\x4e\x22\xdf\x5c\x11\xd3\xcb\x8b\xdd\x8f\x82\x19\xf5\x1e\x56\x1b\xe9\xb4\xa1\xd6\xc6\x19\x33\xaf\x4b\xd4\x3b\x98\xb8\x92\xae\x53\x7e\x41\x45\x21\xda\xf0\x9c\x6d\xe9\x52\x55\x15\xbe\xb7\x45\x8f\x73\x3a\xd2\xa8\x7e\x9d\x96\x2c\x55\x3f\x3c\x4f\x54\x79\x2d\x19\x17\xe0\x51\x8d\x16\xe6\x4d\x51\xd2\xcd\x0b\x62\xcc\xce\xe3\x2a\x5d\xce\x69\xc2\x7a\x89\xaf\xe1\xf7\x22\xc9\x66\xf6\x80\x27\x27\xf9\x45\x5a\x09\x40\xf9\x3d\xb0\xab\xaa\xd1\xf5\x45\x0a\x43\xe9\xb2\x5e\x37\xe7\x8a\x75\x0a\x26\x0d\x18\x4c\x2b\x5d\x54\x93\x46\x2c\x7f\xd2\x7c\x70\xe0\xd3\x11\x82\x52\x2c\xed\xc4\x99\x7e\x66\x06\xa5\x3d\x4b\xea\x7e\xf2\x5a\x2e\xe9\xac\x0f\x0a\x51\x3b\x41\x3c\x27\x02\x78\xd9\xc6\x9c\xae\xe7\xab\xe2\x7d\x3c\x1b\x9f\xfb\xce\x1c\xe8\xd6\x4a\x69\x1c\xaa\x29\xd8\x61\x16\xcb\xc4\xd6\x47\x70\x1c\x8c\x45\x30\xf1\x89\x84\x80\x5f\x52\xe7\xcb\x8a\xe6\xaa\x8c\xd3\x6a\xfa\x96\xf2\x54\x55\x9e\xe1\x6e\xaa\x32\x85\xe6\x20\x2f\xbb\xa1\x7c\xca\x6a\xaf\x58\xd7\x4e\x0d\xbc\xf7\xf5\x92\x75\x26\x21\x70\x5b\x08\x52\x56\x31\x16\xf6\xdd\xfb\x05\x70\x32\x05\x71\xad\x82\x1f\x82\xbc\x87\xe9\x32\x7a\xe0\x34\xab\x99\xc6\x3d\x97\x84\x55\x19\xb3\x5a\xd1\x40\x95\xe6\x0a\x3a\x1a\x85\xcb\x79\x30\x0e\x46\x78\xd4\x44\x04\xfc\x21\x4d\x77\xdc\x58\xa8\x35\x4c\xff\xa7\x24\xae\xf1\x43\x6c\x87\x4e\x20\xb6\x44\xa8\x38\x45\x86\x0b\x51\xa3\xda\x7e\x2e\x27\x6b\xf2\x53\x18\x25\x5a\xaa\x3e\x92\x3b\x2a\x5d\xc1\x59\x29\xbf\x48\x4c\x35\x0e\x04\x18\x18\x37\x37\x26\xb7\xb7\xca\xfe\xbd\x5c\xc3\x2a\xa0\x16\xe3\x6c\x5c\xa2\x91\x6e\x5a\x3e\xac\x8f\x99\xfe\x29\xad\x1f\xae\x8b\x3c\xf6\x0f\x7f\x70\xdc\x02\xe2\xbd\xf5\xbb\xfa\x07\x9c\x7a\x3e\xaf\xa3\xdf\xfe\xd2\xe7\x8e\x47\xaa\x70\x39\x95\x3f\x76\x3b\xd0\xe7\x42\x16\x8a\x5b\xdf\x30\x2c\x61\x04\x47\xd6\x97\x73\xbc\x39\x2f\x44\x4e\xb3\x4f\x78\xbe\x8c\x6e\x83\x05\x55\xc6\x23\x65\xb9\xa1\x9a\xb2\x42\x0a\xb3\xff\x17\x00\x00\xff\xff\x06\xd2\xba\x43\x11\x8b\x00\x00") +var _webUiStaticVendorBootstrap331JsBootstrapMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\x7d\xfd\x77\xdb\xb8\xb5\xe0\xef\xfd\x2b\x24\xcc\x3c\x1a\x18\x41\xb4\x9c\xb4\xaf\xaf\x54\x68\x9d\x4c\x92\x9e\xcd\xee\x74\x66\x76\x92\x79\x3d\xbb\xaa\xda\x03\x92\xe0\x87\x43\x91\x1a\x92\xb6\x93\x5a\xea\xdf\xbe\x07\x9f\x04\x48\xd0\x72\xd2\x76\xce\xfe\x62\x8b\x24\x00\x5e\x5c\xdc\xef\x7b\x01\x5e\x7e\x33\xff\xcd\xec\x9b\xd9\xb7\x75\xdd\xb5\x5d\x43\x0e\xb3\xbb\xe7\xfe\x73\xff\x6a\x06\xf3\xae\x3b\x04\x97\x97\x19\xed\x22\xf5\xcc\x8f\xeb\x3d\x62\xad\x5f\xd5\x87\x4f\x4d\x91\xe5\xdd\xec\xd9\xea\xea\x6a\xf9\x6c\x75\xf5\xdb\xd9\xfb\xfb\xa2\xeb\x68\x83\x67\x6f\xab\xd8\x67\x8d\xbe\x2b\x62\x5a\xb5\x34\x99\xdd\x56\x09\x6d\x66\x7f\x7a\xfb\x5e\x0c\xda\xb2\x51\x8b\x2e\xbf\x8d\xd8\x78\x97\xdd\x7d\xd4\x5e\xea\x57\x5c\x46\x65\x1d\x5d\xee\x49\xdb\xd1\xe6\xf2\xbb\xb7\xaf\xde\x7c\xff\xee\x0d\x7b\xe5\xe5\x6f\x8a\x14\x02\x36\x52\x5a\x54\x34\x01\x61\xd8\x7d\x3a\xd0\x3a\x9d\xdd\xfc\xef\x5b\xda\x7c\x42\x5d\xde\xd4\xf7\xb3\x8a\xde\xcf\xde\x34\x4d\xdd\x40\xa0\x27\x74\xd1\xce\xfe\x27\xb9\x23\xef\xe2\xa6\x38\x74\xb3\x86\xfe\x72\x5b\x34\xb4\x95\xfd\x00\x5a\x2f\xd2\xdb\x2a\xee\x8a\xba\x82\x04\x3d\xdc\x91\x66\x16\x85\xc4\x4f\x2b\xff\xe6\x17\xd6\xc0\x6f\x0f\x65\xd1\x41\x30\x03\x68\xbb\xda\xa9\x2b\x1f\xa0\x75\x91\xc2\x68\xbb\xda\xbd\x78\xe6\x79\xd1\xf6\x6a\xf7\xe2\x0f\xc7\xe3\x55\x18\xb2\x5b\x9e\xf7\x07\xf6\xe3\x6a\xc7\x9e\x3c\xdb\xbd\xb8\xfa\x52\xe8\x66\x77\xb4\x69\x8b\xba\x9a\x5d\xf9\x7f\xf0\xaf\x66\x75\x33\xcb\x8b\x2c\xa7\x0d\x40\x27\x28\xe7\x8d\x2d\xf0\xc1\x6d\x4b\x67\x6d\xd7\x14\x71\x07\xd6\xea\xc1\x2c\x82\x62\x62\x24\x4c\xea\xf8\x76\x4f\xab\xce\x8f\x1b\x4a\x3a\xfa\xa6\xa4\xec\x0a\x02\x8d\x7e\x80\x70\x14\x3e\xfc\x99\x46\x1f\x8a\xee\x7d\x43\xaa\xb6\x60\x23\x04\xe0\x7e\x70\xe7\x4d\x95\x00\xfc\xa7\xfa\xef\x66\x9b\x4e\xff\xa6\xec\xe9\x0f\xe6\xb3\xda\xea\x3a\xab\x07\x6d\xbb\xc9\x61\x4e\xeb\xb4\x6e\x20\x83\x3e\x9e\x15\xd5\x2c\x42\x45\x0a\xef\xea\x22\x99\xad\xe6\x61\x48\xfc\xb6\xfb\x54\xd2\x6d\xbc\x43\x0d\xed\x6e\x9b\xea\x81\x56\x49\x10\x6d\xe3\xdd\x69\x2d\x6e\xcc\xaf\x4e\x7c\x31\xe9\xfe\xb6\x24\x1d\xb5\xa0\x08\x35\xe6\x22\x81\x9f\x38\x9c\x5f\xe1\x24\xec\xf2\xa2\x5d\x13\xc8\xfe\x21\xbf\xae\x28\x04\x51\x3b\x98\xb9\xee\x89\x1e\xe2\x70\xbe\x3a\xa1\x35\xeb\x4f\x43\xf3\xfe\xf1\x48\x60\x82\xfc\xae\x29\xb2\x8c\x36\x90\xf8\xed\xed\xe1\x50\x37\x9d\xdf\x4f\xd0\xa7\x55\x82\x14\xa8\xb3\x96\x76\xef\x8b\x3d\xad\x6f\x3b\x48\x71\x84\x30\x03\xe0\x84\x09\x34\x06\x75\x0d\x12\x46\x10\x61\xd7\x03\xcf\x83\xc4\xa7\x77\x6c\xb9\xdb\x03\x8d\x0b\x52\xfa\x83\x89\x84\x0f\x51\x51\x25\xef\x3f\x1d\x68\x30\x05\x1e\x4e\x68\x49\x33\x86\xba\x47\x5b\xe5\xa4\x4a\x4a\x1a\x98\x18\x95\xb3\x22\x30\xf2\x3b\xd2\x64\xb4\x43\x7e\xd1\x0a\xac\x6e\x22\x5f\x74\xf8\x21\xba\x91\xbf\x1a\x9f\x1c\x0e\xe5\x27\xfe\x1c\x93\x26\xe3\x64\xda\xa2\x40\xac\xf5\xe9\x84\x4e\x9f\x4b\xf3\x3d\x08\x6c\x4c\x9f\x92\x38\x37\x51\x29\x16\x5c\x2e\x33\xa6\x61\xec\x27\xa4\x23\x6c\xad\x7d\x52\xd2\xa6\x03\x68\x4d\x8f\xc7\xd1\x5d\x4c\x43\xc6\xc6\x89\xe8\x87\x30\x60\x6f\xae\xb2\x5e\x1e\x45\x9e\x47\xb7\xd1\xce\x8f\x49\x59\xc2\x98\x81\x2d\xde\x74\xb1\x65\x23\x2d\x93\xa2\xdd\x17\x6d\x1b\x02\x31\xdc\xee\x02\xdb\x74\x48\x60\xc4\x88\x0e\x82\xb8\x2c\xe2\x0f\x00\xc7\x9c\x0c\xfc\xb8\xac\x5b\x8a\x4e\xeb\xc4\xff\xef\x37\x3f\xbd\x7b\xfb\xc3\xf7\x21\xe0\x62\x1a\xe0\xc4\x7f\xff\xd3\xcb\xef\xdf\xbd\x7d\xff\xf6\x87\xef\xff\xf6\xfa\xe7\x9f\x5e\xb2\x1f\xe1\xd5\xef\x56\x38\xf1\x0f\x4d\xdd\xd5\x0c\x2e\xd1\xdf\x7a\x91\xc6\x54\x0c\xd1\x43\xe6\x27\xb4\x63\x08\xea\xe9\x15\xf0\x2e\x89\xdf\xe3\xc3\x6f\xe8\xbe\xbe\xa3\x50\xcc\x88\x6a\xdc\xa5\x21\xf5\x49\xd7\x35\x10\xf0\x19\x8a\xc5\x06\x68\x9d\x1e\x8f\xb0\x7f\x96\x37\x34\x05\xac\x71\xea\x79\xa9\xdf\xd0\x43\x49\x62\x0a\x2f\xfd\x6f\xe0\x26\xfc\x6a\xfb\xd7\xbf\xb4\xbb\x6f\xbe\x46\x97\x18\x00\x24\x98\x29\x0b\x09\x4c\xd1\x3a\xf2\xbc\xc8\x3f\x34\x9c\x8c\x5f\xd3\x94\xdc\x96\x1d\x44\x38\xf3\x4b\x5a\x65\x5d\x7e\x3c\xc2\x2c\x94\xb3\x6b\x99\x5c\x96\xa0\xb2\x16\x6a\x22\x4c\x9c\xbf\xb9\xe3\x62\x8e\xb7\x33\x66\x84\x70\xe4\x17\xad\x1c\xf6\x47\xf1\x12\x9a\x40\xc4\x86\x95\xb3\x7d\x55\x92\xb6\x85\xa0\xa8\xc0\x14\x93\x65\x7e\x4e\x5a\xd9\x2c\x25\x09\x05\x68\x93\x4d\x88\x8d\x18\x39\x05\x11\x74\xae\x21\x0a\x62\x88\xd0\x49\x4a\x16\x2e\xc5\x38\xd8\xeb\xfe\x67\x18\xe1\xfe\xc2\x7f\x55\x57\x6d\xd7\xdc\xc6\x5d\xdd\x84\x89\xf9\xa0\xaa\x5f\xd5\x55\x5a\x16\x71\x67\x0a\x28\xc5\x9f\xfd\x68\x54\x8b\x1c\xa5\x27\x0c\x52\xd4\x68\xe3\x1c\xb1\x24\x87\x82\x11\xe7\x88\xc6\xfe\x0d\x5c\x9a\x18\x5c\x9a\xf4\xfc\x18\xdd\x76\x5d\x5d\x71\x92\x02\x75\x74\x43\xe3\xce\x62\xc2\x88\xb1\xef\xb8\xb9\xe4\xdf\x58\x08\x9a\x94\x71\x70\x57\x67\x59\x49\x41\x18\x46\x1b\xea\x8b\x0b\x88\x02\xc6\xc7\x7e\x4b\xbb\x77\x1d\xe9\x28\x8c\x7a\x46\xee\x99\x08\x27\xe8\x81\x43\xfd\x35\x15\x8a\x34\x64\xdc\x2b\x18\xb6\x3e\xb0\x36\x6d\x48\x7c\xfa\xb1\xa3\x55\x02\x1f\x4e\x38\xf6\x5f\xbf\xf9\xe3\xcb\x9f\xbf\x7b\xff\x0e\x27\xb2\x59\xd1\x7e\x57\x93\xa4\xa8\xb2\x70\x7e\x75\x5a\xc7\x23\xee\xee\xbb\x84\x0f\xa5\x68\xf9\x9e\x7e\xec\x02\x20\x2f\x7c\xdf\x07\x6c\xe0\x7e\x15\x14\xc8\x0e\xed\x06\x92\xa2\x25\x51\x49\x13\x20\xb5\x9c\x06\x9c\x63\xb6\xe0\x74\x7e\xb8\xed\x00\xda\x80\x3b\x52\x82\x00\xe4\xdd\xbe\x04\x38\x55\x68\x47\xeb\x68\x11\x02\x06\x00\xc0\xd5\x6d\x59\x86\x21\xe3\x64\xa6\xb7\xe8\xc7\xce\xf3\x14\xb6\xf5\x2d\x80\x93\x2d\xdd\x41\x84\xb0\xa1\xdb\x08\x03\xf6\xe3\x27\x73\x95\x79\x2b\x39\xe0\x36\xda\x6d\x4c\x0c\x6e\xa3\x5d\xc0\x6e\x22\x0c\x0c\x04\xf0\xd5\x82\x43\x14\x32\x99\x47\x92\x44\x30\x63\x8c\x84\xe4\x89\x71\x8c\x50\x60\x37\xf5\xbc\x51\xdf\x2b\x9c\x58\x2c\x1f\x2b\x79\xf7\x92\x0f\x82\xd0\x09\x0b\x22\x5c\x21\x1b\xe1\x82\x62\xc2\x01\xd1\x12\x06\x4d\x64\x63\x59\xcb\x29\xa9\x0b\x64\x4f\x20\x48\xb3\x05\xbb\x0b\x61\x55\x4a\xe1\xa6\x96\xcd\x1e\x23\x2d\xaa\x44\xaf\xd3\x1a\x34\x24\x29\x6a\x10\x86\x1c\xa2\x03\x04\x0c\x24\x80\x3c\x0f\xaa\x1b\x71\x4e\xe3\x0f\x34\x61\xf7\xec\x81\x7a\xa9\x45\xe2\xae\xb8\x63\x72\x8b\x84\xf3\xab\x20\x92\xaf\xf0\xd5\x6d\x5b\x12\xaa\xbb\x08\x13\xcf\x1b\xbe\x04\xcf\xcf\xbd\xc3\x54\x30\x39\xa9\x32\x0a\xd0\x89\x96\x2d\x9d\xd9\x1d\x85\xce\x20\x4d\x41\x96\x87\x86\xb6\xed\xd3\xc6\x5e\x93\xe1\x24\x05\x8a\x07\xed\x84\x4c\x4d\x84\x4c\x15\xc8\x5f\x1b\xbf\x95\x54\x15\x57\x96\x58\x8d\xad\x27\xe7\xe5\xaa\x1c\x30\x39\x27\x58\xe5\x80\xbd\x64\xb5\x28\xe4\xaf\x8a\x44\x98\xb9\xa0\xdf\x14\xf7\xd2\x31\x56\x16\xd6\x3a\x31\xd0\x12\x75\x15\x60\xaa\x2c\x09\x13\x43\x43\xf2\xbb\x4c\xf1\x71\x03\x25\xd1\xe2\x0f\x71\xa2\xb6\xf5\xec\x49\x80\x99\xd6\xf1\x6d\xeb\x00\x73\x16\x95\xb7\xcd\x97\x82\x2f\x6c\x1d\x6d\x1a\x0e\x00\xb4\x17\x8e\x03\x00\xf0\xe5\x5f\xf9\x0f\x58\x54\x68\xf3\xf5\xa5\xdf\xb1\xf6\x91\xcf\x28\x1e\xfd\x5b\xcc\xc3\x09\xc5\x13\x93\xa6\xbe\x6d\x69\xc9\x55\xcf\x94\x7c\x97\x02\x13\x3b\x55\x13\xc2\x59\x38\x36\x1c\x37\x51\x90\xfa\x6d\x59\x24\x74\xa0\xba\xf4\x0b\x1d\xca\xab\xba\xdd\x47\xb4\x31\x47\x61\x12\x09\x46\x28\xc8\x36\x74\x9b\xed\x20\x0a\x52\xbf\xa8\x3a\xda\xdc\x91\x92\xa9\xb4\x03\xb9\x6d\x29\x44\x7e\xfc\x29\x66\x7a\xce\xa5\xd6\xe2\x69\xb5\xf6\x75\x51\x25\x45\x4c\xba\xba\x69\x9d\x72\x49\xc3\xba\xec\x1b\x82\x81\x4a\x94\x26\x2d\x07\x44\xea\x21\x36\x6b\x26\x85\x85\x50\x96\xd0\xca\x17\x08\xae\x95\x17\x45\x47\xf7\x6d\xc8\x54\x85\x35\xa6\xff\x81\x7e\x8a\x6a\xd2\x24\x43\xfe\x67\xe4\xfb\x81\x7e\x4a\xea\xfb\xca\xb7\x30\xa9\xb4\x10\x6f\x2e\x5b\x60\x65\xd3\xe7\xf5\x9d\xc0\xa9\xf9\x0a\x0e\xaf\xe7\xcd\x21\xa8\xab\xae\xbe\x8d\xf3\xb6\x23\x4d\x07\x8a\x6a\xa6\xbd\x6a\xf5\x43\xfa\xd5\x23\x91\xcb\xa0\xd9\x33\x00\x98\x9d\xd9\x3c\x02\x10\x7f\x97\x04\xa7\xef\x55\x52\x72\x47\x1f\xe9\xc5\x97\x54\xf6\x72\x1b\x13\x2e\x57\xe1\x3f\x57\x2b\xcb\xcc\x50\xe8\x0f\x7e\x47\x9f\x63\x0e\x48\x20\x11\x82\xef\x1b\x72\x08\xe6\x2b\xac\xb0\x1d\xcc\x57\xb6\x2e\x94\x88\x0c\x4d\x06\x2c\x52\x38\xbf\xe4\xfa\xea\xd8\xd1\x8f\x1d\x69\x28\xb9\x2c\x04\xf3\x12\xc9\xfe\x7e\x47\xb2\xef\xc9\x9e\x22\xf4\xd0\xde\x17\x5d\x9c\x43\xe2\xdf\xe7\x45\x9c\xa3\x87\x98\xb4\x74\xf6\xfc\xf7\x42\x7f\x33\xf9\xc4\x8c\x90\x86\x92\x0f\x6b\xf1\xe4\x0f\xe2\x49\x45\x3f\x76\xfa\x49\x22\xe4\x57\x20\xf8\xfb\x44\xc6\x72\xcd\x86\x9a\xe3\x2d\x74\xf8\xae\xd1\xf1\x08\x4d\x5a\x9d\x5f\x29\xb3\x4d\x33\x54\x5c\x52\xd2\xbc\x95\x97\xd0\x7a\x68\x93\xbd\xd1\x67\x6e\x8c\xa9\x2d\x11\x45\xf4\x2d\xed\xf4\x70\xd6\xea\xb2\x29\x4a\x13\xc4\x39\x2e\x52\x11\x03\x73\x6a\x19\xed\xde\x76\x74\xff\xb6\x4a\xe8\x47\x6b\x55\x4c\xd9\x27\xb9\x8a\xf8\x07\xd2\x30\x3f\x09\xf9\x71\x5e\x94\x49\x43\x2b\x08\x7c\xf6\x0c\x68\xee\x67\x0d\xfd\x82\x8d\x06\xc9\xf1\x68\x32\x28\x72\xbe\xf8\x8f\x75\xf3\xba\x68\x28\x7f\xad\xf1\x7e\xdc\xdb\xa4\x6c\x6d\x40\x18\x92\xcd\xf2\x2a\x50\xd1\x17\x0b\x6c\x26\x7b\x68\x08\x93\x45\x8c\xfe\xc3\x84\x42\x18\x49\xeb\xf1\x44\x7c\xfa\x0b\x1c\x82\xd3\xd5\xe1\x38\xcc\xc7\xa5\x68\xec\x78\xa3\x43\xf0\x0c\xc4\x1c\x7b\x91\xdf\xdb\x1d\x4a\xe7\x5f\x8f\x01\x5c\x5e\x1d\x8f\xab\x6b\xb2\x11\x81\x8c\xc0\x14\x77\x9b\xa1\x74\xa0\x10\xb0\x47\x36\x8b\x1b\x4a\x29\x62\xa2\x9d\xa0\x13\x0a\x62\x86\xb1\x9e\x8c\x7a\x79\xde\xbf\x80\x42\x72\x1d\x6f\x00\x23\x1b\x10\x08\x34\xe3\x01\x96\x08\x1a\xa0\x89\x0f\xf6\x24\x4e\x58\x29\x92\x18\x20\x86\x53\xe9\x8c\x73\x1c\x40\x12\x05\x9e\x37\x11\x9e\x1a\xd8\x6a\xe7\x22\x65\xb8\x97\x72\x70\xbe\x42\x03\x5e\x0c\xcf\xb2\xa2\x3d\x57\x06\xa9\xc3\x6e\xb3\x16\x68\xb8\x68\x14\x0a\x7c\x0e\xd1\xd6\xd0\xbb\x2f\x18\x4a\x20\x69\xe0\xbe\xb1\x47\x03\x1f\x53\x44\x00\xce\xd3\x21\x73\xd4\x24\x53\x3a\xd8\x0f\x46\x98\x32\xc3\xc3\x42\x0c\xce\x43\x31\x23\xe6\x4f\x81\x92\xa6\x8c\x56\x78\x64\x1f\xe0\xc2\x7c\x94\x16\x4d\xcb\x9e\x95\xa4\xed\x00\xbe\x11\x41\x52\x26\xda\x53\xed\xad\xb0\x2b\x4b\x32\x31\x75\x21\x03\xb3\xeb\x74\x1a\x7e\x80\xb6\xc5\x0e\xa2\x53\x91\xc2\xd4\x65\xd5\x3b\xb0\x19\xce\xaf\xb8\x0d\xff\x21\x4c\xb7\xab\x1d\x2e\xfb\x10\x0f\xc7\x9f\xcd\x40\x0f\x0d\x2d\x49\x47\x93\xf7\x5c\xd7\x04\x1f\x70\xa2\x50\x12\xe4\x27\xee\x71\xb9\xe9\xb0\x44\x78\x5e\x3a\xe3\x43\x7c\xae\x36\x3c\x2b\x9c\x49\x6d\x2f\x19\x72\x64\x2f\x69\x3c\x8d\x1e\x3c\xc9\xdf\xe2\xf3\xdd\x4b\x8b\xd4\xea\xae\x85\x35\xda\x8e\x45\x59\x8a\x76\x68\xbd\xf7\xbc\x7d\xef\x18\xf7\x7e\x10\x1b\xb2\xb2\x71\xf7\x59\xa8\xd3\xae\x8e\x8b\xbb\xa7\xbc\x35\xbe\x42\x00\x6d\x60\xda\x83\x14\x21\xcc\x16\xd2\xaf\xd3\xb4\xa5\xdd\x9f\x8b\xa4\xcb\x31\xed\x1f\xe7\x08\xa7\xd6\x15\x3d\x1f\x97\x4f\x2d\x34\x6e\x23\x9c\xef\xfc\x9b\xba\xa8\x78\x2a\x07\x39\xb0\x81\xa9\xdd\x43\x3d\xb0\x3b\xe2\x1b\x83\x06\xcd\xb0\x86\xf1\xea\x9b\x31\x2d\x55\xe8\x84\x57\xcc\x9f\x72\xc6\xff\x9c\x86\x19\x42\x01\xa4\x6e\x5a\x30\xb1\xd1\xdf\x1c\x30\x08\x76\x53\x75\x85\x90\x26\x55\xa9\x33\x84\x70\xb4\xbc\x62\x45\x02\x6b\xeb\x4a\x79\xc6\xea\xda\xe5\x1b\xeb\x67\xe7\xbd\x63\x3d\xac\xf4\x8f\x87\x49\x14\xe5\xe1\x62\x33\xd6\x4c\xa0\x33\xda\xcc\xfd\x5c\x3b\xd6\x8c\x3c\x2f\x71\x06\x9a\x17\x3a\xd0\x3c\x10\x39\xbd\x67\x27\xde\x9c\x59\xee\x5d\xaa\x7c\x3a\x2a\x7f\x20\x9c\xdb\xa1\x6f\x4e\xda\xcb\xae\x06\x68\x9d\x7b\x1e\xcc\x7a\xdd\xc4\x2c\x47\xe9\x72\xa7\x38\x43\x38\xf7\xbc\xd4\xe5\x51\x32\x05\x9f\x3b\x5d\xf1\xd3\x7a\x32\x7a\xa0\x51\xde\x3b\xe0\x60\xdb\x03\xb4\x03\x98\x7e\x5e\x8f\x65\x57\xf3\x4e\x98\xc0\xfb\xa2\x4a\xea\x7b\xd1\xbd\xac\x89\xcd\x63\x44\x45\xb2\x1a\xa6\xb4\x7a\xf4\xed\x2e\xd0\xe3\xf9\x96\xb5\xc4\x45\x8c\x63\x85\xcb\x2f\xcb\xf0\xf0\x51\x71\x12\x46\x13\x34\x11\xeb\x27\x9a\x26\xe2\x47\x69\x42\xcb\x34\x98\xa0\x93\x91\x23\xf9\xf2\x6c\x52\x5c\x97\x25\x39\xb4\x74\x14\x2e\x48\xfa\x70\x41\xfc\x78\xb8\x60\x3d\xa7\x8c\x5e\x44\x4c\xc4\xf3\x40\x9b\xd7\xf7\x4c\x2d\x7b\x1e\x54\x77\x39\x85\xd9\x09\x2b\xfd\x62\x2b\x67\x25\xc2\x06\x13\x59\x2b\x1d\x0f\x48\x9e\x18\x0f\x70\x85\xb9\xcd\x79\x29\x35\x28\xa5\x8f\x52\x5f\xca\x42\x90\xb7\x91\x9f\x16\x65\x47\x1b\x78\xb1\x65\xcb\x14\x82\xaf\x2e\x16\x91\x5f\x24\x8b\x0b\xb0\xc3\xb3\xad\xb1\xa8\xd6\xa3\x0b\x39\x7a\xaf\x75\x98\xe4\x1b\x07\x07\x84\x5b\x23\xad\x6d\x71\xa1\x8d\xfe\x1f\xa5\xcb\x23\x0c\x33\x92\x24\x2f\x9b\x82\xbc\xac\x92\x57\x12\x79\x52\xca\xda\xd1\x72\x6b\x4e\x03\x77\x4c\x2d\x92\x80\x4c\x66\x13\x9e\x9e\xb8\x7b\xce\x13\x77\xbd\x37\x2e\x46\x60\x4e\xb7\x7c\x5d\x30\x08\x1e\xeb\x55\xde\x5d\x9c\xac\x74\x4c\x52\xec\x69\xd5\x5a\x7e\x97\x0a\x4d\x4f\xa9\xe6\x7b\xa6\x78\x0d\x1e\xd8\xc8\x3b\x01\xc8\x29\xb7\x09\xed\x37\x30\x32\x34\x07\xd7\x06\xa0\xb5\x20\xca\xdf\x75\xbc\xaf\xa8\x94\xa4\x8d\xb0\x32\x70\xc5\xfa\x28\xf3\x41\x5c\x49\x0b\xe9\x7a\xe6\x1f\x48\xc5\xc5\xa4\xe9\xa0\x56\x78\xa6\x68\x9d\xd1\x34\x97\xea\x73\x48\x3d\x8f\x6a\xff\x03\x46\x21\x75\x72\x24\x4f\x2f\x5a\xe0\x22\x09\x51\x6a\xd8\x45\x79\x7d\xef\x5b\xfd\xa6\x8d\xc6\x14\xe1\x79\x3a\x61\x34\xda\x20\xc5\x42\x04\x52\x0c\x72\x6e\x10\xe1\xe8\x78\x74\x01\xc9\x33\x2d\x3a\x29\xca\xdf\xaa\x97\x16\xa2\xb5\x0d\x86\x65\x2e\xf4\xf0\x1a\xe6\x82\x89\xa9\x6d\xb6\x83\x2b\x64\x06\xdb\xe9\xc7\x03\xa9\x12\x1e\x6d\x5f\x0d\x78\xd7\x3d\x76\x02\xce\xf5\xb7\xb9\x53\xd8\xed\xb9\x49\x36\xe7\x67\xc0\x81\x1d\xcf\x81\xce\x18\x01\xb1\x49\x00\xe0\x7c\xd9\x6a\xc2\x06\xe2\x2b\x5a\xd9\x4b\x7a\xe2\x64\xe3\x32\x65\x95\x03\x92\x8b\x05\x13\x0a\x8c\xcd\xa2\x08\x89\x1f\x93\x3d\x2d\x5f\x91\x96\xc2\x2d\x68\xe3\xa6\x2e\x4b\x80\x33\x65\x30\x2e\x99\x8d\xe1\x70\xf2\x47\x76\xab\x0a\xf4\xe4\x2a\xe6\xf7\x19\x69\x62\x36\x7f\xeb\x1d\xdb\xd5\x6e\x5b\xec\xd0\xe9\x74\xb2\xd9\x35\xb7\x3c\xcb\x69\x76\x7d\x02\xb7\xf6\xbc\x91\x2b\x77\xeb\x09\xbc\x11\x21\x3c\x77\x27\xdc\xad\x54\xd7\x24\x75\x6f\xe3\xe1\x4c\xe3\x1d\x44\xa8\x77\x1c\xfe\x07\x97\x52\x83\x45\x77\x93\xbe\x9b\x9a\x39\x41\x4d\xd0\xf3\xd5\x90\x1f\xc6\xf4\x38\xcd\x0c\x57\x8f\x30\x03\x1d\x31\xc3\xe3\x54\xfc\x39\x1c\x02\x8c\x7c\x5b\x5e\x24\x09\x1d\x51\xfd\x23\x3e\x9c\x88\x59\x8c\x30\xbe\x9a\xaa\x8a\x52\x54\x4c\xbf\x80\x8a\x03\x6a\x70\xd7\x90\x72\xc7\x29\x56\xd6\x6c\xfb\x18\xa1\x6e\x84\x54\x0d\x84\xad\xc4\x0c\x1b\x6b\x44\xad\xf9\x5d\xbe\x09\x74\x58\x0f\x48\xe8\xa0\x49\xe5\x2b\xee\x4b\xe3\x02\x5c\x2c\x1c\x43\x08\x93\x45\x98\x8e\xa3\x24\x78\xdc\x07\x7a\x98\xe9\xb9\x7e\xdc\x1c\x89\x20\x45\x98\xaa\x94\x34\xf2\x99\xe5\x35\x98\xe1\x54\x5f\x67\x14\x96\x0c\xb0\xb7\x26\x6e\x3a\x8e\x99\x17\x63\xa5\xe6\x7a\xd2\xc7\xf3\x78\x82\xfa\x63\xbb\x8a\x45\x75\x59\x5b\x57\xda\x7f\x94\xd7\xae\x72\x16\xfd\xec\x09\xbe\xa5\x1a\xf6\x6c\x51\x8b\x1e\x74\x22\x7d\x69\x99\x58\xbd\xf7\x63\x2c\x97\xd0\x08\x13\x6e\x69\x32\x72\xe5\xd6\xc2\xbc\xe0\x6b\x98\x85\xa9\xd3\x2e\xc9\xc3\x6c\xa3\x32\xb3\x81\x69\x5c\x2b\xdf\x13\x3f\x28\x7b\x90\x4f\x0f\xad\x63\xe5\x5d\xe6\x5f\xe4\x48\x45\x9e\xf7\x3c\x0c\xc3\x48\xe4\x5d\x8e\x47\x48\x20\xed\x2b\xbe\x30\x81\xa9\xdb\xa5\x33\x73\xa4\x31\x4c\x98\x8f\x33\x08\x1a\x09\xd7\x9e\x1a\x14\x56\x1f\x68\xc5\x6b\x14\xa8\xab\x48\x4b\x69\x94\xa4\xa9\x0f\x49\x7d\x5f\x01\xee\xb1\x4c\x16\x6a\x25\x6e\x9a\x03\x29\x29\xdb\x71\x54\x47\xbe\xdb\x25\x14\xad\xf7\xa1\x13\x1a\xba\x7f\x82\x53\x9c\x8e\xe6\x3a\x76\xb8\x9a\x38\x0e\x63\xcf\xbb\xfc\x6a\xfb\x72\xf9\x7f\xc9\xf2\xef\x3b\x99\xb0\x8e\x27\x5d\x50\xbb\xfe\x2d\x61\xbd\x09\x8c\xb5\x35\x9e\x78\x5e\x22\xad\xc7\x4d\x12\x44\x3a\x59\xd3\x83\x99\x7c\x9e\x97\x9a\x98\x5e\xaa\x9e\x3d\x5a\x27\x96\x17\xd9\xa3\x25\xe1\x5e\x64\xf6\x58\xe5\x63\x32\xae\x7c\xa4\x21\xd0\x63\x2c\x23\x12\x7f\x60\x17\x00\xa7\xe1\x80\xc9\xf4\x7b\x76\x17\x8c\x2b\x26\x4b\x22\xed\xa5\x32\xbc\x2c\x74\x5a\x67\x23\x27\x2b\x7b\x44\x8b\x8c\x38\x98\x19\x44\x94\x97\x41\xf9\xaa\x52\x0a\xcf\x02\x5d\x34\xa5\x1d\x83\x58\x71\xee\x90\xa4\x79\xf5\x0e\x44\x78\x9e\xa1\x87\x27\x67\x89\x3d\x6f\x9e\x1a\xe5\x0f\x15\xb9\x8b\x48\xb3\xac\x88\x95\x3f\x81\x17\x2f\x92\xe2\x6e\x16\x73\x09\x0e\xc6\xf8\xbc\xbc\xbe\x40\x7e\x51\xb5\xb4\xe9\x5e\xa6\xcc\x93\x96\x73\xb2\x6a\x49\x23\x24\x8d\x6f\x27\x87\xf2\x58\x98\xe2\x8b\x64\xec\xfd\xf4\x48\xcf\x11\xc2\x89\xdb\x8e\x93\xd1\xfe\x9e\xb1\x65\xed\xc6\x84\x66\x00\x5d\x73\x2b\xe2\x99\x96\x52\x19\x32\xa9\x36\xd7\x4d\x18\x4e\xba\xc2\xfb\x64\x2d\xf3\x28\x07\x1d\x71\x53\xf7\x12\x3e\xff\xaf\xe3\x6f\x57\xc7\x67\xbf\x3f\x3e\x7f\x86\x74\xf5\x88\x48\x33\x7b\xde\x54\x8a\x3a\x1a\xa7\xa8\x2d\xb1\x27\x0a\xb6\x46\x05\xaa\x91\xdf\x76\xf5\xe1\xc7\xa6\x3e\x90\x8c\x08\xee\xc3\xf3\xe4\x2c\x6d\x49\x19\x9a\x85\x63\x71\xc9\xa9\x33\xf3\xbc\x67\xbf\x9f\xf7\x52\x9a\x5f\x6b\xa9\xad\x1c\x15\xe3\x16\xf3\x38\xb9\xe1\x92\xa2\xd1\x92\xe0\xc4\x2c\xf6\x65\x14\xa2\xe8\x03\xcc\xca\x22\xa8\xea\x0e\xfa\x49\x71\x57\x24\xb4\x41\xc1\x5d\xd1\x16\x51\x49\x67\x04\xe0\x22\xa4\xca\x18\x6a\x6a\xc6\xba\x7b\x5a\xdd\x82\xdd\xc5\x22\x5f\x5c\xe0\x99\xbc\x57\x16\x6d\x17\xd5\x1f\xf9\x6d\x0e\x7b\x61\x55\xb5\xdd\x84\x85\x4c\x23\xeb\x12\xa0\xf5\xf3\xff\x32\xc0\xbe\xb9\x5e\x79\xde\xcd\x72\x89\x7f\xbb\x32\xef\xbe\x28\x74\x5a\xd5\xf3\x6e\x16\x0b\xfc\x8f\x9b\xe3\x11\xde\x84\x2b\x84\x0b\x9f\xfe\x02\x6f\xc6\xd3\x64\x7e\x90\x9c\x17\xb7\x0c\x14\x0d\xad\xad\x2b\x65\x62\xa8\x6b\xcb\xfc\xc8\x06\xcf\xce\x9b\x1f\x7a\xd8\xfc\x9c\xf9\xa1\x07\xed\xcd\x8f\x29\x71\x67\x46\x6b\xf5\xcd\x59\x5a\x37\x7b\x23\x2a\x4b\xf8\x2e\x81\x21\xf1\x9d\xce\x0f\x99\x3a\x84\x25\x1a\x16\xd0\x9c\xed\x27\xdb\x3e\xa5\xe3\x80\x7c\xfe\xd9\x61\x7a\x8a\x73\x8e\xf4\xb9\x26\x11\xb3\xc7\xcf\xe9\x52\xbb\x06\x5e\xab\xcc\x7d\x9d\x90\x12\x30\x36\x9e\xa8\x0e\xa3\x67\xc2\xbd\xa9\x15\x09\x12\xc3\xe1\xd4\xac\xfd\xca\x9c\x0a\x78\x93\x6e\xa3\x1d\x4c\x50\x90\xf1\xd8\x9c\xe7\xa5\xfc\x3f\x4c\x1e\x2d\xf3\x1a\xd4\x65\x7d\x1d\xd5\xc9\xa7\xb0\xa7\x57\x9f\x5d\x0f\xb2\xfd\x66\x45\x98\xd2\x41\x32\xb1\xdc\xbe\x63\xc2\xda\x88\xc2\x8a\xa8\x48\x44\x1a\x9e\xd6\x53\xde\xac\x72\x8d\x98\x71\xd6\xd1\x61\xd0\x41\x66\x44\xf9\xcc\x97\x71\x5d\x75\xb4\xea\x98\x3a\xac\x49\x02\x1d\xdd\xb1\xa3\xa6\x78\x22\xf2\xc3\x86\x10\xbb\x1a\xe4\x2a\x9d\x3e\xbb\x60\xea\x39\x2f\x98\xfa\xf6\xe5\xab\xff\xf5\xfa\xa7\x1f\x7e\xfc\xdb\xd4\xf6\x0b\xb3\xa6\x4a\xe1\x68\x50\x3c\x85\xd9\xea\x8c\x8a\xa8\x86\x76\xca\xa0\x5a\x47\x62\x58\x84\xb3\x99\xb1\xac\x8b\x3e\xd8\x52\x93\x61\x3d\x81\x15\xa3\x8d\x94\xf6\xe2\x44\x44\xc7\x4a\x5e\xd2\xda\xc0\x40\x88\x4e\xc3\x30\x96\xc2\x27\xd5\x75\xec\x1c\x28\x46\xb7\x13\x76\xba\x45\x1d\x73\x49\x05\xbc\x6e\xf8\x9d\x22\x10\x95\x34\x6f\x69\x37\xba\xc7\xa9\xd2\x08\x70\x08\xd2\x10\xaa\x51\xb4\xa0\x6d\x4c\x0e\x3a\xf1\xde\xd0\xb6\xf8\x7b\x9f\x86\x37\x2b\xf0\x84\x10\x94\x1b\x71\x8c\x49\x0f\x77\xe8\x88\xdb\xbb\x0b\xbb\xc8\x8e\x61\x5c\x15\x0a\xf2\x1b\x6a\x6d\x1d\xc2\xc1\x99\x17\x4f\x5c\x21\x0b\xb1\x71\x64\x6d\x3c\xd3\xb5\x58\x6a\xa7\x8b\xf1\x8c\x1c\x0e\xb4\x4a\xde\xd7\x30\x11\x78\x61\xaa\x5c\x3f\xe4\x64\x80\x24\xdb\xbd\xaf\x0f\x70\xc5\x1e\x2b\x86\x51\xd0\x32\x38\x48\x72\x73\xdb\x76\xdf\x2a\xf8\x11\x56\xb7\x5e\x17\xa4\xac\x33\x88\x30\x35\xc1\x1d\x26\xe8\x13\x57\x8c\x6d\x18\x40\x13\xfe\x95\x88\x80\x25\x3e\xad\xd2\xba\x89\xe9\x1f\x79\x19\xaf\x72\x84\x2d\x22\xac\x1e\xa7\x42\xba\x49\x26\xa4\x44\xc2\x61\x06\x4f\xd8\xb1\x97\x38\xc4\x82\xb2\x52\xfb\x30\xfe\xe7\xe5\xea\x83\xa7\x0e\x3a\x60\x4f\x3b\x26\x2b\xfc\x70\x97\x39\x39\x76\x8f\x95\x92\x99\x0c\xb5\x9a\x0c\xe7\x79\x13\x81\xd7\x7e\x23\x84\x64\xcc\xab\x47\x99\xc9\xb2\x62\xd2\x54\x4e\xb1\xa8\xa6\x01\x1a\xed\xa2\x72\x12\xc7\x4a\x0e\x37\xc1\x9a\x53\x5b\xaf\xa6\x02\x80\x72\x1b\xd6\xe7\x44\xde\x35\x6f\xff\x89\xbd\xf1\xd1\x00\xe6\x04\x05\xd8\x23\xc0\xe1\x4a\x9b\xa4\x1f\x5a\x39\xf4\xb3\x28\xed\x8b\xf0\xcd\xdb\x63\xa5\x47\x06\x5a\x6f\xbb\xda\x85\x61\xa8\x8a\x6c\x55\xb9\xa6\x81\x2e\x5d\x80\xdb\x4b\x99\x09\xb5\xa9\x6c\x69\xa5\x2c\xed\xa9\x71\x62\x19\x45\xb1\x35\xed\x59\x1a\x5b\xa9\xbf\xd1\xea\xf4\x76\xde\x58\x34\xbb\xa6\xca\xbc\x1c\xa2\x1c\x03\x43\x19\x2a\x18\x03\x5b\x31\x0d\x5e\xc7\x30\x3d\xf9\xbe\xc1\xfc\x04\xf9\x4f\xcd\x6f\x63\x17\x49\x88\xc6\x0e\xd8\x05\x88\x7c\xb3\xeb\xcf\x87\x84\x74\x4a\x8b\x04\x46\x7f\x06\xd5\x70\x00\x87\xc4\xe0\x14\xe6\x4e\xeb\x0e\xf4\xb4\x40\xc9\xb4\xa2\x22\x52\xb1\x5a\x6c\x6a\xe9\x56\x22\x76\x78\xbd\xe4\x8a\x81\x6f\xca\x85\xfa\xa6\xa9\xa5\x89\x83\x6a\xfa\xe0\x9a\x9a\xca\x08\xb3\xec\xb5\x4a\x03\x8d\x93\x82\xbd\xb6\xb2\xaf\xfb\xc0\xe4\xc0\x06\x65\x66\xa7\xfd\x8a\x68\x34\xf8\xd0\x08\x3a\x23\x45\xc4\xff\x00\x00\x9d\xd8\x72\x13\xb6\x7a\x51\x9f\x3e\x76\x89\x2c\xda\xa7\xc7\x34\x64\x83\xe8\x8e\x40\xbf\x7a\x3a\xbb\x58\xd0\xc5\x05\x98\xf1\x08\xcf\xa1\xa1\x52\xf3\x5b\x40\xa3\x47\xed\x1a\x17\xf3\x28\xc6\xe7\xf2\x21\xbe\x6d\x98\xad\x21\xd4\xac\xe7\x41\xd0\x76\xa4\x2b\xe2\xe1\x06\x08\x05\xd1\x66\x28\x64\x7c\xb1\x41\x48\xe7\x6f\xcc\x67\x86\x5c\x34\x12\x3c\x9a\x49\x71\x3a\x5c\xda\xa1\x95\x31\x58\x78\xdb\xd2\xc0\xf3\x48\x17\x98\x6e\x06\x2d\xdd\xf2\x3e\x9a\x14\xea\x8f\x19\xf4\x28\x88\xa0\xdc\xa7\xa6\xb3\xa6\x36\x15\x7c\xdd\x2f\xbf\x93\x54\xcd\xe4\x8a\xc8\xe4\x5b\x16\x89\xcd\x08\x50\x14\x26\x40\x74\x5a\xff\x13\x8a\xef\x0c\x26\xb2\x2f\xc4\x44\xa6\x30\x21\x41\xb4\xa5\x93\x21\xdf\x46\xec\x3c\xb6\x41\x65\x96\x6b\x60\x86\x1a\x77\x95\x25\x6a\xbf\xc5\xee\x31\x2d\x36\xfc\x98\x21\x45\xd6\xae\xe0\x15\xb2\xaf\x47\x64\x2c\x4c\x66\x91\x44\x76\xbe\x51\x40\x73\xa6\x9e\x66\x38\xd2\xf5\x54\xe0\xd7\x8f\xcb\x82\x56\x32\x69\x3d\x90\xdb\x0c\xd0\x87\x03\x49\x92\xa2\xca\xbe\xa3\x69\x17\x08\x9a\x63\xb2\xfa\x6d\xfb\xc3\x1d\x6d\xd2\xb2\xbe\xe7\xd9\x7a\xb9\x0d\xc0\xf6\xb2\x03\x00\xb0\xec\xfd\x13\x1b\x3d\x98\xea\x3d\x9f\xea\x3e\x96\xd4\xb6\x12\x98\x2e\xe0\x18\x81\x3e\x84\x65\x3c\xb8\xed\x06\x8e\x86\x1e\xc1\x1d\x5a\xb1\x89\x2f\xc0\xb6\x33\x32\xc1\xef\xed\x29\x69\x6f\x1b\x6a\x68\xb6\xf1\xf6\x6a\x17\xa0\x82\x10\x0e\xa4\x69\xe9\xdb\xaa\x83\x86\xcf\xca\x69\x4e\x22\x60\x29\x4a\xeb\xd1\xf1\xb8\xc2\x57\x2b\xe9\x54\x3b\x96\xe5\xf1\xee\x98\x2c\x1c\xf0\xbb\x16\x6c\x1a\xa7\xd3\x83\x83\xa1\xc5\x31\x44\xc9\x78\xda\x53\xc7\xca\x24\xc5\x1d\xcf\x25\x73\xc5\xf6\x3d\xd9\x53\xa5\xdc\x34\xe4\x4b\x39\x38\xb0\xbc\x7c\xee\xde\x42\x22\x24\x25\xf3\x7d\x0c\x85\xb0\x24\x72\x25\xf9\x95\xbd\xfd\x87\xf5\x66\xec\x27\x45\x6e\x5e\x94\x6c\x14\x1c\x59\xa5\xcd\x1c\x82\x75\xff\x53\x15\x35\xf3\x0b\x57\x45\xb3\x78\x70\x3e\xe6\x2b\x46\x3b\xbb\xd7\x57\x0c\x37\x99\x6c\xd6\x51\x07\xd7\x46\xdf\x4e\xef\x46\x1d\x1c\xaa\x41\x74\x1e\x74\x90\x7e\xe6\x35\x67\x8f\x16\x41\xdb\x39\x68\x69\xa8\xb9\x92\xcf\x22\xd6\x16\xcc\x2f\xbf\x92\xd9\x13\x8a\x3c\x8f\x1a\x75\xd1\x6a\xd3\x2b\x5a\x8b\x4c\x07\x01\x48\x6c\x11\x1f\x78\xb3\xa9\xdc\xea\x64\xc7\x9c\x6c\xf3\xc4\x1d\x45\x92\x3d\x87\x76\xa5\xed\xdd\xb3\x57\xab\x7c\x05\xe0\x45\xe0\x23\x37\x06\x9d\xcc\x72\x6c\x61\x8b\xfc\x8a\x3b\x88\xbb\xba\x2e\xbb\xe2\x30\x7d\x76\x05\x5b\x13\x1e\xbd\xa5\x25\x65\xa4\xb8\x86\xf4\x78\x04\x09\x6d\xbb\xa6\xfe\x04\xe6\x61\xc4\x1c\xf7\x6c\x03\xed\x7d\xc2\x6a\x58\x4c\xc3\x87\x13\xc2\x74\x9b\xed\x8e\x47\xc8\xfe\x0d\xb6\x0d\xa3\x60\xb2\xe3\x70\x7f\xf1\x64\xa1\xb0\x23\xa4\xcc\x0b\x4a\x44\x46\xf6\xd3\x81\x5a\xc6\xa3\xb8\xa0\x15\xcf\x76\x89\x8b\x4e\x6c\x9c\x10\x17\x7c\x83\xa9\x38\xb7\xc2\x0e\x34\xf7\x71\xe4\xa2\x2a\x3a\x08\x34\xa8\xec\x65\x4f\x8f\xd9\x0e\x03\xb2\xa4\x2a\xf6\x3c\x35\x12\xcc\x57\x98\x33\x07\x7b\x5b\x00\xba\xfa\x00\xb0\xc2\x7a\x30\xbf\xc2\x1d\xdd\x1f\x98\x8d\x14\x58\x26\xba\x82\x62\x26\x52\x0f\xea\xf2\xda\xd1\x66\x49\x9a\xa6\xbe\x07\xd7\x2f\x2e\x93\xe2\xce\xd9\xa0\xa8\x2a\xda\xe8\x06\xfc\xef\x85\xae\xf6\x15\x5b\x6f\x67\x72\x07\x7c\x57\x74\x25\x65\x0a\x35\xa1\x25\xf9\x14\xac\x70\xde\xed\x4b\x06\x66\x5c\x57\x1d\x29\x2a\xca\x61\xbe\x2b\xe8\x3d\x33\x19\x83\x07\x3d\x13\xc0\x44\xa3\xd6\xc3\xc1\x6a\xb0\x03\x96\xe1\xd6\x4a\x0d\xe8\xa3\x4d\xd4\x92\xa9\x88\x2d\x5f\xd9\x68\x94\x0d\x88\x07\xf5\xe0\xfc\x22\xa3\xdd\x0f\xe2\x1a\xaa\xcd\x7b\x5f\x2b\xd8\x6c\xd7\x42\xdd\xf5\xbc\x41\xf1\x95\x7a\xa0\x39\x41\x3a\xf2\xc3\xe7\x48\x1f\x13\x66\xd3\x9d\x62\x7d\xe3\x18\x37\x9e\xab\x91\x9b\x47\xd3\xe5\x72\xad\xb6\x7a\xd0\x6d\xba\x63\xce\x99\xcc\x85\x86\x61\x86\xa6\x62\xc7\x60\xa1\x71\x61\x67\x33\x14\x94\xb6\xd3\x2f\x44\xa9\xf4\x78\xd6\xca\x8b\x00\x7b\x52\xdd\x92\x12\xcc\xc3\x4c\x80\x90\x87\x7a\xe3\x79\xb6\x31\xf6\x89\x83\x40\x05\x7f\xf8\x9e\xbc\x61\x1b\xbe\x2b\x5c\xb5\xa9\x6f\x3b\x30\xaa\x38\x85\xf9\x02\x7c\x2e\xcc\xfc\xcd\x56\x9c\xdb\x1c\xb0\xf8\xfc\x01\x39\x98\x2a\x7c\x74\x72\x76\x10\xa6\xe8\xdf\x5c\x7b\x0a\xcc\xf6\x7d\xe9\x93\x42\x61\xcf\xb1\xcc\xb6\x14\xc6\x6e\x5a\x7c\x7c\xcf\xb8\x65\x68\xc0\x65\x54\x69\xa2\xd6\xa1\xc8\x7b\x19\x31\xea\x25\x49\xd9\xb9\x3b\x76\x0c\xab\xf1\x9a\x51\x12\x42\xaa\xcb\x88\xe9\x20\xce\xc8\x9e\x37\x3e\xc7\x41\x3d\x81\xf2\x57\xf8\xc0\x93\x45\xf2\x0a\x33\x87\x5a\x5d\x30\x65\xe6\x98\xa4\x38\xb7\x6d\x04\xb6\x2a\xe1\x7d\x38\x19\x7b\x9f\x7b\x58\x2d\x8b\x4a\xad\x85\xe7\x11\xa1\xdf\xac\xbb\x86\xca\x66\xf2\x22\xde\x92\xdd\x3c\x4c\x18\xc8\x5b\xb2\x0b\x13\x34\x86\x8b\x53\x95\xe3\x64\xa2\x68\x56\x54\x6d\x47\xaa\x98\x4d\x9d\xbf\x23\xee\xed\xb0\x4d\x14\x10\x18\xd9\x51\x0a\xd4\x2b\x2f\x83\x0e\x35\xf0\x31\xb3\x3b\xbe\xee\x8a\x83\xfa\x3f\x30\x0a\x78\x65\x2b\x8c\x4d\xb5\xc3\x5d\xf3\x00\x8a\x4a\x2e\xa6\x05\x87\x60\x0c\x41\x30\xd6\xd9\xc2\x34\x44\x08\x3f\x11\x5e\x1c\x23\x84\xf9\xb6\x65\xb5\x8b\x30\x56\x6a\x11\xe1\x11\x74\x38\xd6\x1c\x23\x69\x63\x70\x83\xa7\x7e\xd4\xd4\x94\x7a\x75\x6f\x51\x64\xe3\x85\xa1\xf9\x0a\x36\x9a\x48\x1d\x9d\x86\x2f\xe2\xf7\x11\x0a\x54\x83\x01\x47\x71\xce\xfe\x35\x16\xf5\xff\xd3\xa5\x61\x32\xf7\xfc\xda\x30\x86\x7d\xe2\xda\xb0\x01\xc7\x8b\xa3\xa2\xdb\xae\x81\xf9\xe2\xf4\x0d\xa6\xb7\xe8\x0c\xaa\xf7\x95\x09\x6e\xa1\x5b\x05\x28\x73\xd2\xbe\x12\xa9\x77\xa8\x4e\x32\x91\xd6\xc0\x54\x76\x3d\x42\xda\xd1\x92\x06\x49\x3b\x0a\x08\xfa\xf5\x7d\x45\x9b\xd7\x13\x5e\xfa\x28\x28\x23\x0b\xac\xdc\xee\xc0\x3c\x51\xd1\xbf\x5e\xf3\xe3\x54\x99\x97\x07\xa8\xb7\xbb\x67\xb4\xfb\xf9\xed\x6b\x68\x4c\x52\x38\xd0\xb4\xd3\x33\xc4\xa9\x74\xa0\x0a\x1e\x1b\x1b\x6e\x22\xe8\x93\x56\x09\x6d\xe3\xa6\x88\x68\x12\x7d\xea\x1b\xaa\x25\xd1\x76\x25\xb3\xde\xfb\x58\xa5\x4c\xef\x4a\x2d\xaf\xd6\xa3\x97\xf6\xd6\x18\xda\x1c\xdd\xb8\x6f\xf7\x71\x54\xbe\x69\x7a\x8c\xb2\xc0\xdd\x0f\x17\xe1\xe5\x5f\xda\x0d\xb9\xed\xea\xcd\x5f\xda\xcd\x65\x81\x6f\x42\x59\xe5\x96\xa3\xf5\x8d\xe7\xc1\x3c\xcc\xb5\xaf\x58\x30\xe7\xf0\x78\xe4\x16\x31\x43\x8e\x3e\x20\x92\xc7\x77\xba\xfa\x10\xac\x70\x49\xd3\x2e\x58\xe1\xa4\x68\x0f\xcc\x1c\x05\x51\x59\xc7\x1f\xc0\x09\x99\x7b\xb5\xdd\xdc\xd5\x8d\xcf\x31\xd1\x26\xec\x26\xed\x13\xdc\xee\x16\xe2\x4c\xa3\xbe\xd8\xd1\x0e\x86\xcb\x93\x01\xd4\xc2\xff\x58\x8b\xd8\x26\x44\xb8\x0c\x47\xbb\xcc\xf7\xe6\x2d\x19\x8a\x2b\x52\x78\x23\x58\xa5\x0a\x73\x5c\x87\x13\x60\x92\x49\xe8\x6c\xda\x51\x99\x7c\x7c\x18\xc3\x54\xa3\x75\x1e\x82\xa8\xee\xba\x7a\x0f\xc2\x30\xf7\xbc\x0f\xbe\xb8\x5a\xec\xaf\x0f\xf2\xe7\x86\x2f\x82\x70\x4e\x64\x9b\xae\x3e\x2c\xf7\x2f\x0e\xec\xff\x46\x75\x57\x07\x37\xc8\x26\xfc\x62\x51\x5e\x1f\x7c\xbe\x89\x4f\x9f\xee\xc0\xff\xc9\x36\xec\xf7\xb2\x7c\x71\xe0\x3f\x36\xb2\x7f\x90\x63\x7b\xf3\x7c\x65\x2d\x28\xf7\xfa\x7e\xd1\x53\x79\x45\xca\x98\x47\x91\x93\x1f\x38\x0e\x61\x8e\x3f\xe0\x12\xef\xd5\x16\x86\xc3\xa1\xfc\xf4\xa3\x22\x41\xf8\x0b\xce\xc5\xfa\x38\xa2\x48\xd4\x10\x78\x6b\xfa\xd8\xae\x2d\xb0\xa0\x82\x8d\xb1\xd9\x47\xf8\x8a\x52\x7a\x12\xb1\xd7\x8e\xdc\x51\x48\xcf\x84\xd1\x99\x79\x30\x0a\xa1\xa7\x13\x51\xf3\xe6\xf3\x92\xc2\xcd\xe8\xb0\x21\x1b\x21\x83\x7a\xac\x3e\x2f\x25\xe5\x17\x0d\x93\x21\xc5\xa6\xe6\x2d\x19\xce\xcc\xfa\xc8\x63\x22\x82\x7a\x7b\xd2\x64\x45\xb5\x14\xdc\x7b\xb5\x42\x38\x9f\x6a\xc2\xe9\x81\xb7\x59\x17\xed\xf7\xe4\x7b\x98\xf1\xe0\x02\x2f\xa9\xe4\xd7\x39\xe2\xa2\x61\x25\xf6\x7e\x1c\x42\xfe\x77\x91\xe1\x88\x53\x4d\x28\xfe\x2d\x72\xac\xc2\x74\x4c\xac\x4a\x5a\x60\x90\xe2\xde\x36\x66\x3e\x4c\x16\x98\xb1\x95\xa4\x17\x27\x7f\x22\x5d\xee\x37\xf5\x6d\x95\x40\xc2\xde\x80\x84\x78\xb1\x6e\xb3\x3b\xe8\xc4\x50\x1a\x21\xbc\x42\xe6\x71\x8f\x7d\x6a\xa5\x18\xe3\xec\x66\x8c\xb3\xb5\x64\xa7\xd8\xf3\x6e\xe6\x61\xca\x0d\xed\x7e\x76\xe9\xf2\x66\x28\x47\xfe\x5b\xba\x9a\x22\x08\x4e\x93\xd7\xb4\xec\x08\x8c\x71\x84\x0b\x7c\x83\xd6\x82\x99\x36\x12\x1b\xa1\xb8\x0c\xc4\x68\x21\x67\x58\x3e\x5e\x19\x5e\x76\xf5\xe1\x28\x58\x56\x6f\x09\xc0\xfb\xb0\xdc\x3c\xfb\x46\x32\x24\x5d\x14\x01\xbb\x60\x4c\x9e\x2e\x6e\x70\x15\x96\x1b\x60\x4c\x07\x04\xc0\x9c\x09\x58\x27\x72\x66\xba\xec\x43\x0a\xf1\x97\x4d\x53\xdf\xc3\x3d\x66\x93\xdf\x56\x3b\x5c\x8e\x62\xc4\x7d\x33\x2b\x8c\xa3\x6b\x03\x79\xf0\x42\x0a\xfd\x58\x8b\x10\x1e\x25\xf9\xdd\xea\x1b\x78\xb5\x24\x97\x11\x5a\x80\xff\x00\xba\x89\x10\x55\xbc\xe1\x38\x94\xdc\x2b\xdc\x89\x24\x8a\xa0\xfa\x48\x23\x5d\xba\x70\x6b\xa2\x8a\x7d\xec\xa0\x89\x3c\xf1\x44\x89\xe0\xbc\xdb\x97\x1b\x71\x68\x69\x00\x3a\xfa\xb1\x03\x3b\x86\x12\x62\xe7\xe0\x18\x87\xcf\x8a\x6a\xd6\xd5\x87\x99\x58\x87\x19\x03\x77\x26\x63\xf3\x67\x0a\x74\x8c\xdd\x16\xc2\x8c\x9e\x5b\x82\x8b\x9f\xeb\x20\x55\x25\xa6\xc3\x3a\x98\x97\x6e\x33\xc2\xb9\x1f\xa5\x17\x72\x32\xd1\x36\x6d\xe3\x8c\x8a\x83\x5c\xe6\xb3\xdb\x64\xcb\x10\xce\x9c\xd6\x95\x3a\xb0\x08\xa6\x4f\x3e\x09\xf9\x0b\xc4\x69\xf2\x99\x55\x56\xca\x97\x1e\x4a\x7d\x11\xc1\xb5\x56\x4e\x05\x00\xce\xa4\xeb\xd6\x50\xed\x75\xe3\xc1\x35\x6e\xf3\xc8\xa0\xe7\x5c\x99\x67\xc4\x8c\xad\xd7\x4d\x91\x15\x15\x29\x97\xb2\x3d\x62\xce\xf1\xf4\x73\x3c\x1e\x5e\x17\x41\xc9\x16\x23\x36\xe9\x2d\xef\xa9\x53\xa5\x7a\xd6\x18\x39\xfe\xca\xb6\xb0\xcb\xca\xc2\x68\x50\x02\xb3\x96\x4e\x1a\x93\xd0\x49\x08\xbe\xfd\xe1\xf5\xff\xe1\x4e\x87\xdc\xe7\xc0\xcf\xb0\xc8\x68\xf7\x2d\x93\xbc\x45\x95\xbd\xe2\x39\x97\x9f\x68\xdc\x41\xb4\x16\x47\xf5\x52\x61\x58\x78\x1e\xa4\x56\xfc\x83\xe2\x07\xfe\x20\xa0\xc2\x06\x59\x52\x2e\xd6\xb0\xc8\xbb\x06\x54\x5a\x35\x4b\xca\x04\xdc\x09\xa9\x32\xc0\x64\x63\x59\x95\xa7\x20\x52\x52\x8d\x91\xf8\x83\x48\x19\x05\xc9\x66\x32\xc1\xa7\x2b\x1e\x8f\x47\x57\x7e\xf0\x7d\x7d\x08\x22\xa3\x2c\x12\x9d\x70\xce\x5e\x2a\x60\xed\x8b\x70\xf8\x35\x44\x0a\xdc\xfe\x81\xb8\x01\xd1\x29\x60\xf3\xef\x37\xce\x9a\x33\xcf\x70\x8e\xd3\xf1\x9a\x0c\x8d\xa4\x81\xb0\xed\x6b\xcd\x7b\x53\x90\x08\x74\x08\x05\x12\xc9\x97\x63\xa9\x54\xb8\x8e\x89\x04\xa8\x97\xcf\x96\xf1\xe5\xb3\x93\x32\x0f\xcd\x7e\xcb\xe4\xd1\x0e\xd2\x12\x74\xbe\xe9\xf2\xd9\x32\xb9\x7c\x66\x76\x5f\xc6\xa7\xe0\x49\x0d\xd5\x7b\x4e\x23\x34\x38\x55\xa8\x03\x17\x42\xd2\xd9\xe4\xb0\xd6\x85\x17\x3a\x86\xac\xf6\xbb\x50\x49\x41\x13\x21\x65\x77\x40\x59\x86\xc2\x8f\xc7\x95\xe1\x24\x6a\xbb\x7c\xf0\x22\xf6\xf2\x4b\x4e\xcc\x47\x06\x8e\xd4\xdb\x04\xa9\xc0\xad\xc0\x76\xba\xcc\x24\x7d\xe1\x42\xdb\x11\xea\xd6\x22\x59\xe7\x2f\x32\x6e\xb0\x73\xc2\x0f\xf9\xef\x65\x1e\x14\xd7\x99\x30\xa8\x24\x42\xc5\xbe\x48\xd5\x40\xdf\x5e\x16\xa2\xec\x42\x6e\x9f\x91\x6b\x92\xe2\x0f\xca\x00\x4b\x17\xf1\xfa\xe6\x45\x26\xcc\x10\xc1\x72\xa1\xb8\x5a\xde\x04\x1f\xae\xb3\x9e\x5b\xcd\x67\x0b\x79\x7f\xf9\x41\x6d\xa8\x9a\xd1\xd1\xba\xb9\xe5\xe8\xf0\x78\x6b\x15\x4e\x94\xa8\xd6\x0c\x62\xef\x99\x1c\x8a\xcf\xe3\x11\x3a\x1c\xe2\xd8\xe7\x8f\x37\xf2\xbf\x70\x79\x23\xee\xdc\xca\x5b\x63\x26\xfb\xf9\xed\x6b\xab\x68\x3e\xa9\x67\x64\x11\xfe\xe3\x1f\xf0\x8a\xfe\xe7\x37\xc2\x8c\x24\x55\x52\xef\x21\x42\xeb\xfb\xbc\x28\x69\xbf\xc5\x21\xa3\x4a\x8a\x7c\xfb\xe9\x6d\xc2\x16\x56\x43\x3f\xa8\xcd\x2f\x0e\x53\x22\x99\x29\xbe\x50\xff\x3a\x1e\x87\x47\xdd\xc8\x44\xd2\xb0\xb0\xc4\xb6\xbd\x06\x43\x8a\xa7\xc6\x6f\x29\xc4\xb9\xe2\x1f\x9a\x44\x22\xd1\x34\x2a\x3b\x25\xd1\x78\xeb\xbc\x91\xd6\xb1\x9b\xcb\x0d\x69\xd3\xed\xaf\x5c\x7b\x15\xde\xc8\xa7\x93\xbd\xcc\xab\xc7\x37\x3b\x44\xe6\x51\x10\xeb\xc8\xf3\x60\x1c\x3e\x35\x50\x88\x7f\xf5\x08\x21\xc2\xb1\x5c\x8b\xc1\xe9\x03\xb1\xf4\x3d\x63\x46\xaf\x3c\xea\x0d\xe3\xc1\xca\xc8\x6c\xee\x44\x19\xa7\x15\x7a\x34\xf3\xa5\xca\x00\x2a\x12\x3a\x28\xe4\xb4\x6a\x5b\x7d\xb0\x20\x02\x2b\xd2\x7c\x7b\xdd\x4f\x41\x3e\x38\xd9\x07\xa1\x4b\x32\x5a\x9b\x17\xaa\x36\x42\x5e\xba\xaa\x23\xd4\xa3\xf3\xf5\x11\x6a\x4c\x59\x21\xf1\xab\x65\xdb\x0f\xf5\x81\xa7\xcc\xfe\xc5\xd9\x76\x35\xec\x67\x67\xdb\x8d\x8e\xff\x9a\x6c\xbb\xc8\x8c\xeb\x61\x45\x66\x5c\x9c\x66\xd3\xa3\x7d\xfc\x0d\xaa\x1f\x45\x87\xfe\xa3\x53\x6a\x29\x6f\x5a\x80\x1e\xff\x16\x85\x69\xf4\x4c\x11\x48\xbf\xdd\xed\xc1\x48\xb0\xcb\x22\x23\x9d\xc1\x53\x9f\xb9\x11\xe6\x6e\x00\xc0\x44\xc6\x5d\xcd\xee\xb1\x8c\xbb\x9d\x69\xcf\x9f\x0f\xfa\x4a\x8d\x73\xfd\xe2\x32\x7f\x7e\xed\x18\x5b\x6f\x34\xb3\x53\xf1\x27\x64\xb2\xed\xd3\xa6\xae\x9b\x23\xbb\xce\xcd\x62\x9f\x7f\x3e\x2b\xf9\xa5\xee\xb4\x91\xf8\xd3\xf1\xef\xde\xc5\xb6\xd1\xf5\x54\x17\x7b\xd0\xb9\xdf\xb4\xd7\x1f\x4f\xda\xc7\x90\xf9\x79\x25\xae\x81\x87\x0c\x10\xeb\x77\x89\x90\x70\xff\xd2\xd8\xed\xd7\x3b\x9d\xfa\x99\x74\x5a\xdd\x13\xe4\xaf\x86\xe8\x78\x9c\x6e\xe0\xc8\xac\x7c\x8e\x8f\xd6\x1f\xca\xab\xd1\x3d\x76\x11\x1e\x5d\x48\x6d\x63\x45\x6e\x1b\xcb\xb4\xb0\x34\xea\xdd\xa6\x55\xe4\xcb\x06\x1b\xfd\x4b\x98\x57\x84\x9b\x57\xfa\xe6\xbf\xde\x50\x71\x1a\x28\x67\x2c\x2a\xb5\x73\x90\x5b\x57\x53\x26\x95\x3e\x99\xa9\x38\x58\x2a\x4d\xae\xe3\xda\xbc\x50\x2a\x4d\x5e\xba\x54\x9a\x7a\x74\x5e\xa5\xa9\x31\xbf\x4c\xa5\x99\x67\xfe\x58\xa7\xff\x37\x75\x4c\xdb\x56\x04\x35\x64\x35\x87\xdc\x94\x2b\xea\x78\xd4\x7c\x85\x67\xf1\x46\x57\xe1\x10\x18\xf3\x8f\xac\xc9\x56\x1b\xe1\xb9\x06\xc3\xe2\x1c\x53\x84\x45\xe3\x6f\x12\x29\x35\x18\x0e\xb0\x2d\x77\x11\x01\x80\x16\x60\xe6\x57\xe4\x6e\x56\x16\xb3\xeb\x19\x91\xb5\x9b\xc2\x59\x6f\xc3\xad\xcc\x48\x89\xf6\xfd\xb5\x38\xa7\x56\x58\x54\xa3\xed\xc1\x22\x92\xa9\x8f\xba\xb2\x26\xc6\x0b\x6f\xc4\x1d\x3f\x52\x1d\xda\xc3\x27\x7e\x42\xa9\x0c\x77\xa6\x0d\x6d\x73\x15\x1c\x92\xf8\x83\xd6\x09\x2e\xf1\x17\xdb\x0f\xfd\x0b\x9d\x16\x44\xec\x79\xf1\xe0\x83\x1d\x26\x88\x5c\xc7\x47\x8f\xe8\xf8\x98\xe9\xf8\x58\x1c\xbd\x19\x8d\x94\x6e\x64\x14\xad\x09\x0c\x07\x57\x2b\xb6\x6c\x96\xf0\x78\x67\x22\x71\x8a\x9b\x2c\xa4\x0e\xab\xd4\x8f\x47\xee\x21\xed\xc9\x47\xa3\x76\x79\xd8\x08\x9f\x89\xbd\xe8\xd2\xf9\xc8\x0a\x32\xf3\xc5\x19\x67\xa1\x65\x10\x1b\xe0\x38\x5c\xad\x89\x5f\xb4\x7f\xe6\xe4\x0a\xdd\xd0\x32\x69\x16\x31\x5d\x2d\x3c\x74\xa0\x74\xd8\x80\x56\x8c\xf8\x0e\x7a\x1a\x5d\x5a\x04\xa8\xe4\xb4\x89\x50\xa8\xb2\xda\x5d\xbf\xbf\x8a\xc7\x95\xb8\x58\xb3\x58\x06\xf9\x7b\x32\xda\x08\xec\x22\x2b\xf3\x7c\xa8\x41\x29\xef\xe5\x5f\xbf\xf2\x8d\x02\x5b\x02\xfb\x10\x2e\xb7\x52\xd5\x99\x30\xe9\xa8\xd0\x75\xbb\xe5\xfb\xff\x11\x8f\x1b\xc4\x98\xee\x76\xc7\x23\xdf\x10\x85\xfc\xb6\x6e\x8c\x1a\x03\x6e\x3a\x2a\x39\xb6\x5d\xed\x96\xcc\xb3\x3e\x8d\x0f\x78\x52\x79\x85\xd6\x3f\xdc\xb6\xa2\xf8\x87\xad\x04\x4e\x14\x12\x8d\xfb\x57\x3b\xbe\xbb\x2b\xb2\x8e\xc5\xe7\x7c\x38\x1d\x38\x98\x5c\x3a\xfb\xf8\x34\x01\x84\x61\xb4\xd8\xab\xa3\x3e\x1a\x61\x37\x5f\xc4\x4b\xd7\x4b\x54\x10\x4f\xed\xfb\x92\x13\xd4\x11\x75\x31\x2f\x15\x12\x32\x65\x96\xae\x8b\x30\x09\x66\x1e\xc6\x32\xc0\xd4\xcb\xa0\xe8\x3a\x54\x75\x09\xb3\x6c\x1e\x42\x12\xa6\xdb\x54\x1f\x5b\xb2\x53\xb5\x14\x7c\x6c\xd2\x51\x48\x78\x78\x29\xf3\xbc\xe8\x05\x65\xe8\x35\x99\x76\x42\x68\x72\xef\x10\x8a\xa2\x47\xd2\x97\x33\x92\xe5\x72\x8d\xb2\x79\x98\x6e\xc9\xce\xf3\xa2\xeb\x90\xf2\x1f\x70\x4e\xb7\x64\x71\xb5\x3b\x1e\xa3\x17\xa1\xf8\x39\x02\x82\x75\x19\x2c\x9f\x7a\x66\x39\xe7\x63\xa8\x22\x1b\x24\xe3\x20\x47\xc5\x15\x8b\x0b\xfb\x08\xdf\x8b\x45\xc4\x4f\xf6\x95\xa7\xe4\x19\xcd\xc4\xe9\xbf\xf2\xf9\x05\xe6\xdf\xb6\x42\x32\x81\xde\x42\x50\x16\xc0\x75\x72\xfb\x3a\x51\x39\x76\xe3\xa8\x29\x7e\xaa\x48\x7f\x82\x92\xfd\x15\xac\xb2\x30\x0e\xbc\x72\x8c\x68\x9d\x8d\xa3\xf0\x60\x2b\x9f\x01\xb2\xf8\xf4\xed\x7d\xbd\x03\xc9\x20\x67\xf1\x73\xd5\x15\xa5\x4b\xb3\xe2\x73\x5f\x00\xb0\x4c\x1b\x0d\xc8\xda\xbe\x54\x36\x8c\xbe\x61\x19\x38\xd1\xf0\xe1\x79\x13\xa7\x1f\xb9\xdf\xd9\x30\x3c\x14\xdc\xc2\x8c\x79\x34\x8c\xe3\xa8\x70\x36\x92\x3a\x29\x75\xea\x9c\xf0\x48\x9f\xae\x24\x4f\xb5\x8b\x70\xf4\xcf\x9d\x13\xfe\xa5\x85\xfa\x24\x12\xdf\x81\x1d\xdc\xb3\x5c\xf7\xa7\x9c\xa7\x1d\x8f\x99\xc8\x3c\x4a\xe5\x73\x0b\xd9\xcf\x15\x78\x99\x2f\xc0\x71\x18\xf5\x94\x7f\x5b\xca\x83\x9d\x4c\x3e\x41\x00\xf1\x33\xd4\x6d\xdd\xc4\xa4\x52\xc2\xcf\xd5\x1f\x1c\x6c\x97\x84\xc9\xd4\xd1\xfa\xfa\x0c\x3b\x3c\xd7\x27\xd4\x09\xb6\x75\x7c\xd8\x43\x1d\x79\x65\x7f\x00\x23\x28\x49\xdb\xcd\x88\x3c\x2e\x7d\x90\xd8\xe4\xc8\x1f\x9e\x0b\xc1\x95\x97\x99\x06\x55\x65\x6d\xae\xd6\x94\xb7\x66\x73\xa3\xe6\xa1\xcd\x91\x99\x11\x9d\xbb\x53\xa2\xfc\xa4\xb6\xe9\xe3\x6b\x73\xf3\xe4\x4e\x25\x57\x23\x53\xe8\x00\xa4\x4f\x44\xd7\x0d\x72\x9c\xf7\x15\x42\xc6\x42\xf6\xd0\x3d\xb0\x85\x0e\x8c\xcc\x30\x9f\x96\x13\x07\xd1\xb0\x93\x2e\x99\x71\xf4\x11\x98\xf8\xcd\x89\x1f\xb7\x1a\x3f\x2e\xf8\x71\x82\xa9\x91\xfb\x4e\xf9\x37\x83\x9d\x52\xaa\x3f\xab\xdb\x22\xb1\xd9\xf5\xec\x8c\x78\x13\x41\x01\xe7\x31\xab\x0c\x78\x26\x2b\x26\xcf\xd6\x8d\x1c\x32\xfc\x0b\x46\x5a\x21\x9c\x6f\x78\x9a\xc1\xaa\x1e\x89\x06\x55\x26\xcc\x49\x1e\x45\x1e\x00\x83\x62\x4a\x0d\x79\x5e\xf4\x74\xe5\xf3\xc5\x88\x58\xf1\x03\x5b\xd4\x07\x9a\xb3\x30\xe9\xd7\x42\x7f\x24\x24\x0f\xe9\xe4\xe7\x98\x32\xad\x2d\xc7\xdf\x34\x3e\x1e\xe7\x73\x63\x3c\x71\x53\x1d\xe9\xb6\xee\x7b\xe6\x93\x1f\x3f\x4e\x3f\x2f\xd5\x9f\xf2\xcf\x3c\x8f\x4a\x0f\xec\x90\x35\x89\xd6\xea\x87\x0e\x55\x93\xc8\x19\xa6\x26\xd1\x53\x42\xd4\x24\x7a\xe4\x63\x24\x8e\xad\x6c\x72\x13\x99\x52\x1e\xe2\xb4\x61\xf4\xc8\xb7\x3a\x18\x1c\x93\x7b\xff\xc4\xf2\x8e\xbe\xd6\xf1\x68\x9f\x43\xc1\x15\x29\xfe\x15\xbf\xbc\x4c\xd2\xb4\xf8\xf8\xe4\x0f\x2f\x8b\xd6\x9f\x13\xec\x7e\xec\x53\xcb\x4f\xfc\xae\xf2\xd7\xd2\xd6\x1c\x46\x8c\x64\x3e\xc7\x8e\x28\x70\x08\x0d\x0c\xdb\x1f\x55\xcc\x69\xfc\x41\xe5\x85\xcd\x4f\x32\xf6\x5f\xc5\x7e\x72\xf7\x3f\x17\x5d\xce\x55\xd4\x77\x75\x7d\x70\x6e\xae\x31\x0e\x56\xe3\xc3\xaa\xcd\x72\xb7\xd5\xa1\xa8\xc4\xcf\x43\x51\x55\xba\x8e\xc0\x70\x09\xcc\x17\xc1\x09\x8b\xe2\xa7\x37\xef\xde\xbc\x0f\x01\x1f\x7a\xc6\xff\x2e\xbb\xfa\x20\x7f\xc9\xd2\x03\x6b\x9f\x9c\x0c\x39\xac\xb0\xc0\x5c\x20\x2c\xbf\x51\xf0\x72\xf0\xc5\xe9\x41\x22\xdf\x5c\x11\xd3\xcb\xc3\xc3\x8f\x82\x19\xf5\x1e\x56\x1f\xe5\xb4\x31\xad\xcd\x66\xcc\xbd\x2e\x59\xef\x60\xe2\x4a\xb9\x4e\xf1\x35\x95\x85\x68\xf3\x2b\xbe\xa5\x4b\x57\x55\xb8\x5a\xcb\x11\x37\x74\xd1\xa3\xfa\x45\x98\xf2\x54\xfd\xfc\x2a\xd0\xe5\xb5\x64\x99\x5c\x87\x74\x91\x99\x37\x65\x49\xb7\x28\x88\x31\x07\xc7\x45\x98\x6f\x68\xc0\x47\xc1\x37\x61\xbe\xc9\x82\x68\x6d\xbf\xd0\xf3\xe2\xeb\xb0\x90\x80\x8a\x7b\x89\xe7\x15\x8b\x9b\xeb\x90\x2c\x93\xbe\xac\x77\x98\x73\xcd\x68\xf7\xa3\x49\x03\x06\xd3\x2a\x17\xd5\xa4\x11\xcb\x9f\x34\x1f\x3c\xf2\xe9\x08\x49\x29\x96\x76\x12\x4c\xbf\x36\x83\xd2\x8e\x25\x1d\x7e\xf2\x5a\x2d\xe9\x7a\x0a\x0a\x59\x3b\x41\x1c\x27\x02\x38\xd9\xc6\x9c\xae\xe3\xab\xe2\x53\x3c\x8b\xaf\x5c\x67\x0e\x8c\x6b\xa5\x7a\x1c\xea\x29\xd8\x61\x16\xcb\xc4\xee\x8f\xe0\x78\x34\x16\xc1\xc5\x27\x23\x84\x34\x4c\x64\xf5\x13\x33\x57\x55\x9c\xb6\xa7\x6f\x25\x4f\x75\xe5\x59\xe2\x79\x30\x0d\x69\x98\x20\xec\x08\xe5\x53\x5e\x7b\xc5\x87\x1e\xd4\xc0\x3b\x9b\xa7\x7c\x30\x05\xc1\xb0\x87\x24\x65\x1d\x63\xe1\xdf\xbd\xcf\x70\x84\x29\x4e\xfb\x4d\x21\x92\xbc\xe7\x61\x8e\x1e\x04\xcd\xf6\x4c\x33\x3c\x97\x84\x57\x19\xf3\x5a\x51\xa0\x4b\x73\x25\x1d\x2d\x60\xbe\x01\x4b\xb0\xc8\x03\x00\x10\xbe\xd1\xa6\x7b\xb1\x00\x7e\xaf\x61\xa6\x3f\x25\x71\x83\xf0\xcd\xa3\x27\x10\x5b\x22\x54\x9e\x22\x23\x84\xa8\x51\x6d\xbf\x51\x93\x35\xf9\x09\xa2\xa0\x97\xaa\x4f\xe4\x8e\xa2\xaf\xe0\x2c\xb4\x5f\x24\xa7\x8a\x81\x04\x03\x20\x6b\x72\x27\xab\xec\xdf\xc9\x35\xbc\x02\x2a\x5b\x46\xcb\x94\x19\xe9\xa6\xe5\xc3\xc7\x58\xf7\x3f\x95\xf5\x23\x74\x91\xc3\xfe\x11\x0f\xce\x5b\x40\x62\xb4\x69\x57\xff\x11\xa7\x5e\xcc\xeb\xec\xb7\xbf\xfa\x73\xc7\x91\x2e\x5c\x0e\xd5\x8f\xe3\xf1\xe1\x84\xa5\x2c\x94\xb7\xbe\xe5\x58\xf2\x3c\xa8\x6e\x48\xfa\x1d\x34\x40\x83\x6e\xef\xeb\x83\xd9\xa7\xab\x0f\xe6\x23\x6d\xb9\x31\x35\x65\x85\x14\xd6\xff\x2f\x00\x00\xff\xff\x06\xd2\xba\x43\x11\x8b\x00\x00") func webUiStaticVendorBootstrap331JsBootstrapMinJsBytes() ([]byte, error) { return bindataRead( @@ -578,12 +579,12 @@ func webUiStaticVendorBootstrap331JsBootstrapMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/js/bootstrap.min.js", size: 35601, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/js/bootstrap.min.js", size: 35601, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap331JsNpmJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x90\x31\x4e\xc4\x40\x0c\x45\x7b\x4e\xe1\x6e\xd9\x66\x72\x08\x0a\x24\x5a\x68\xe8\xd6\x9b\x38\xac\xc3\xc4\x1e\x6c\x4f\x80\xdb\x13\x45\x82\x0a\x4b\x96\x5c\xbc\xff\x9f\x2c\x0f\x03\xbc\xdc\xd8\x61\xe6\x4a\xb0\x6f\xec\xa1\x6f\x24\x64\x18\x34\xc1\xc6\x08\x71\x23\xb8\x8c\xba\xae\x2a\x8b\x5f\xe0\xd1\xba\x04\x04\xfa\x7b\x81\x57\xed\x30\xa2\x80\xd1\x47\x67\xa3\xfb\xf3\x1e\xfe\x73\x09\x20\x3c\x1c\xb5\xa7\x67\x20\xd9\xd8\x54\x56\x92\x28\x77\xbf\xf1\x53\x29\xc3\x3e\x8b\x0f\x61\x28\xce\xc1\x2a\x65\xf1\xd3\xf9\x9f\x04\x56\xb2\xc8\xe0\xb5\x47\xe4\xd5\x11\x4d\xbb\x53\x4d\xb9\xd6\x8a\xcd\x29\xe3\x93\x69\x9b\xf4\x33\xf5\xaf\x3a\x61\x2a\x0f\xd5\x1a\xdc\x32\xdc\xb4\xe9\x46\x96\x61\x1f\x6d\x3f\xce\xdb\x77\xaa\xc7\x6b\xfa\xb1\x79\xe6\xaf\x03\xfe\x04\x00\x00\xff\xff\x4d\xe3\x50\xcc\xe4\x01\x00\x00") +var _webUiStaticVendorBootstrap331JsNpmJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\xd0\x31\x4e\xc4\x40\x0c\x85\xe1\x9e\x53\xb8\x5b\xb6\x99\x39\x04\x05\x12\x2d\x34\x74\xeb\x4d\x1c\xd6\x61\x62\x0f\xb6\x27\xc0\xed\x91\x22\x21\x1a\x5c\x7f\x7e\x7f\xe1\x5a\xe1\xe5\xc6\x0e\x0b\x37\x02\x76\xc0\x11\xfa\x46\x42\x86\x41\x33\xec\x8c\x10\x37\x82\xcb\xa4\xdb\xa6\xb2\xfa\x05\x1e\x6d\x48\x40\xa0\xbf\x17\x78\xd5\x01\x13\x0a\x18\x7d\x0c\x36\xba\x3f\x43\xfc\xb5\x04\x10\x1e\x8e\xd9\xd3\x33\x90\xec\x6c\x2a\x1b\x49\x94\xbb\xdf\xf3\x53\x29\xb5\x94\xba\x7a\x0d\x43\x71\x0e\x56\x29\xab\x9f\xce\xff\x5c\x60\x23\x8b\x0c\xaf\x23\x22\x9f\x4e\x68\x3a\x9c\x5a\xea\xda\x1a\x76\xa7\xcc\x67\xd3\x3e\xeb\x67\xda\xdf\x74\xc6\x34\x1e\xaa\x2d\xb8\x67\xdc\xb5\xeb\x4e\x96\xb1\x4f\xa6\xad\x79\xff\x4e\xf3\x78\x4d\x3f\xb6\x2c\xfc\x75\xe0\x4f\x00\x00\x00\xff\xff\x4d\xe3\x50\xcc\xe4\x01\x00\x00") func webUiStaticVendorBootstrap331JsNpmJsBytes() ([]byte, error) { return bindataRead( @@ -598,12 +599,12 @@ func webUiStaticVendorBootstrap331JsNpmJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/js/npm.js", size: 484, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-3.3.1/js/npm.js", size: 484, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x7d\xfb\x77\xdc\x36\xce\xe8\xcf\x9b\xbf\x42\xf1\x4d\x3b\x33\xf5\x3c\x6c\x27\xdb\x6e\x1d\xdb\xfd\xb2\x79\xdc\x7a\x6f\x9d\xe6\xd6\xd9\xdd\xd3\x63\x7b\x73\xe4\x91\x3c\xa3\x44\x23\x4d\x25\x8d\x1d\x7f\x4d\xfe\xf7\x0b\x80\x0f\x91\x12\x28\x69\xfc\x48\xbf\x3d\x77\x75\xda\x58\x43\x91\x00\x08\x82\x20\x08\x82\xe4\xe4\x9b\x6f\x1e\x78\xdf\x78\x97\x61\x96\x47\x69\xe2\x6d\x8f\xb7\xc6\x4f\x30\xe1\xbf\xe2\x68\x1a\x26\x79\x88\xef\xfb\x37\x7d\xb0\xf0\x79\x9a\x16\x79\x91\xf9\xcb\x51\xe0\x17\x61\x11\x2d\xc2\x65\x34\xfd\x10\x66\xe3\xf7\x39\x7e\x9e\x17\xc5\x72\x77\x32\xb9\xba\xba\x1a\x87\xd7\xe1\x34\x4d\xc6\x59\x3a\xb1\xcb\x88\xfc\xb7\x26\xe4\x79\xba\xbc\xce\xa2\xd9\xbc\xf0\x76\xb6\xb6\x77\xbc\xe3\x22\xbc\xf0\x13\xef\x4d\x58\x64\x58\x49\x91\x23\x29\xb2\xe8\x7c\x55\x00\x27\xf2\x5d\x4c\xf1\x46\xde\xb3\x24\xc8\xc2\x2b\xef\x97\xf4\x2a\xce\x65\xd2\xdb\x79\xe4\xcf\x52\x2f\x08\xbd\x67\x59\xb6\x0a\x7c\x99\xbc\x5a\x22\xb5\x81\x77\x91\x66\xde\x5f\x55\x0d\xbc\xcb\xc7\xde\xf9\xb5\xf7\xb7\x34\xf1\x8b\xb9\xc0\x07\xac\x06\x4e\xff\xd7\x4b\x48\xca\x03\x3f\x91\xc8\x7f\x12\xfc\x0e\xbc\x55\x12\x84\x99\x57\xcc\x01\xfa\xd2\x9f\xc2\x1f\xf9\x65\xe8\xfd\x43\x36\xd2\xce\x78\xcb\xeb\x63\x86\x0d\xf9\x69\x63\xf0\x14\x41\x5c\xa7\x2b\x6f\xe1\x5f\x7b\x49\x5a\x78\xab\x3c\x04\x18\x51\xee\x5d\x44\x71\xe8\x85\x1f\xa7\xe1\xb2\xf0\xa2\xc4\x9b\xa6\x8b\x65\x1c\xf9\xc9\x34\xf4\xae\xa2\x62\x4e\x78\x24\x94\x31\xc2\xf8\x55\xc2\x48\xcf\x0b\x1f\xb2\xfb\x50\x60\x09\xbf\x2e\xcc\x8c\x9e\x5f\x48\xa2\x8d\xd6\xf3\x89\xd8\x71\x9a\xcd\x26\x52\x74\xf2\xc9\x4f\x87\xcf\x5f\xbe\x3e\x7e\x39\x02\x82\x65\x81\xbf\x27\x71\x98\xe7\x5e\x16\xfe\xb6\x8a\x32\xa8\x2c\xb0\xc6\x5f\x02\x41\x53\xff\x1c\xc8\x8c\xfd\x2b\x0f\x98\xe7\xcf\xb2\x10\xbe\x15\x29\x12\x7c\x95\x45\x45\x94\xcc\x86\x5e\x9e\x5e\x14\x57\x3e\x35\x96\x17\x44\xb9\x68\x29\x8b\x5f\x8a\x3c\xa8\xb5\x99\x01\x38\x06\x8c\xdf\x78\x76\xec\x1d\x1e\x6f\x78\x7f\x7d\x76\x7c\x78\x3c\x44\x20\xff\x3c\x7c\xfb\xe3\xcf\x7f\x7f\xeb\xfd\xf3\xd9\x2f\xbf\x3c\x7b\xfd\xf6\xf0\xe5\xb1\xf7\xf3\x2f\xde\xf3\x9f\x5f\xbf\x38\x7c\x7b\xf8\xf3\x6b\xf8\xf5\xca\x7b\xf6\xfa\x57\xef\xff\x1c\xbe\x7e\x31\xf4\x42\xe0\x16\xe0\x09\x3f\x2e\x33\xac\x01\x90\x19\x21\x27\xc3\x80\xd8\x76\x1c\x86\x16\x09\x28\x03\xf8\x3b\x5f\x86\xd3\xe8\x22\x9a\x42\xd5\x92\xd9\xca\x9f\x85\xde\x2c\x85\xbe\x96\x40\x8d\xbc\x65\x98\x2d\xa2\x1c\x5b\x34\x07\x02\x03\x04\x13\x47\x8b\xa8\xf0\x49\xfe\xea\xf5\x1a\xdf\xb6\x0b\x4c\x1e\x3c\xe8\x5f\xac\x92\x29\xc2\xf7\xfa\x8f\x06\xde\xef\x0f\x1e\x78\xf0\x4c\x26\xde\x1b\xea\x63\xd0\xea\xef\xc3\x69\x41\x89\x97\x7e\xe6\xe5\x0b\x3f\x2b\xde\xcc\xd3\x24\xf4\xf6\xbd\xfe\x55\x94\x04\xe9\x15\xb4\x70\x14\x26\x82\x48\xef\xe1\xfe\x3e\xd1\x79\x11\x25\x61\x80\x42\x28\x0b\xbe\x80\x8e\xf0\x16\xba\xba\x04\xbb\xef\x95\x68\xc3\x38\x5c\x40\xf9\xa1\x97\x2e\xa9\x9e\x48\x85\x27\x1f\x14\xd8\x71\x14\x40\xfe\x60\x39\x3b\x0c\x36\x37\x9f\x56\x3e\x25\x51\x51\x07\x20\x32\x7d\x7e\xfa\x40\xa3\xc7\x7e\xf8\x36\x45\x22\x2c\xd4\x41\x61\x22\x8b\x2e\xa0\x13\x5d\x2f\x43\x90\xed\xa0\x40\xbe\x7a\x3d\x94\x99\x64\xd6\x33\x73\xe1\x93\x85\xc5\x2a\x4b\xbc\x04\xd4\x00\xc2\x44\x38\x25\x61\x9f\x1f\x54\xb2\x05\x85\x4d\x90\xcd\x8b\xf1\x32\x4b\x8b\x14\xf1\x02\x69\x25\x1a\x50\x7c\x80\x7c\x35\x2d\xd2\x6c\xb7\x52\x62\xf8\xa0\x24\x19\xea\xbf\xdb\x91\x97\x8a\x17\x11\x80\x46\x2e\xf8\x71\x1e\x3e\xb5\xbe\x22\x03\x1e\xf6\x65\xd1\x31\x6a\x59\x44\xea\x7d\xfa\xe4\x99\x69\x48\xcc\x60\x60\x15\x14\xed\x91\xa5\x57\xc4\x92\x97\x59\x96\x66\xfd\xde\xd1\x2a\x2f\xbc\xe9\x3c\x4d\x49\x3f\x78\x71\xe8\xc3\x6f\x94\x1c\xa1\xbe\x7b\x03\x1b\x39\xb5\xa7\xc4\x03\xe4\xc9\x37\x26\xcf\x23\x59\x49\xc8\xf4\x48\x55\x98\x83\xa5\x3b\x98\x06\x56\x26\x81\x1a\x41\x91\xc8\xbd\x1f\xea\xdf\x76\xbd\x5e\x98\xf4\x18\x80\xaa\xf2\x06\x40\x95\xe4\xc8\x4d\xec\xb3\x73\x63\x12\x93\x3b\xca\x0f\x93\xe5\x0a\xeb\x64\xd5\x11\xd2\xfb\xbd\x08\xbf\xb0\xec\x42\xdd\x0d\x1c\x25\x5e\x38\xda\xd3\x06\x37\xf7\xf3\xe7\xb1\x9f\x2b\xa0\xa3\x59\x96\xae\x96\x3d\xb6\x35\x2b\xe0\x6d\x38\xd0\xbd\x83\x7e\x6f\x6c\x00\x19\xf9\x41\x90\x26\x2c\x95\xa0\xfa\x16\x7e\x61\xf0\x41\x24\x30\xb2\x67\x64\x47\xc9\xfd\x13\x3c\x98\x4e\x4d\x75\x62\x35\xea\x99\x82\xfa\x70\xdf\x4b\x56\x71\x3c\xa8\xe2\x6a\x28\xf3\xb4\x56\xdb\x30\xc6\x41\x42\x71\x4b\xb6\xc5\xa0\x02\xd1\xe6\x00\xc0\xf7\xfb\x3d\xf1\xb1\x5a\x6b\x0d\xb2\x09\x80\x60\xa1\x6c\xdb\x56\x70\x75\xf6\xd8\xb0\xfb\xb6\x84\xfe\xe0\xf5\x8e\x8e\x26\x41\x30\xb9\x86\xa7\x87\x22\xdd\x1b\x10\x3b\xcd\x52\x9b\x66\x31\x12\x55\x28\xe6\xcd\xe7\xbb\x8b\x85\x2c\xe2\x6d\x1a\x39\x8e\xd1\x18\x0b\xb0\xcb\xf4\x76\xf3\x5c\xe6\xb0\x29\xfd\x5c\x6f\xfc\x77\x28\x44\x60\x71\xbc\x22\x9c\xfd\x81\x43\x42\xb5\xa8\x0d\x94\x7e\xb2\x93\x25\xbb\xf2\xa5\x4f\x32\xc6\x03\x51\xf5\xa8\x6a\x3d\x95\x89\x20\x7f\xfd\x35\x61\x18\xc7\x61\x32\x2b\xe6\x5c\x56\x49\x39\x5a\xa6\x87\x82\x16\x2a\x20\x9a\x08\x53\x47\xf8\x9b\x6b\x25\x59\x72\xb5\xac\x97\x83\x1e\xd2\x52\x0a\x86\xd2\xa4\x5e\x0e\x53\x9d\x25\x3f\x37\xc8\x89\x22\x7f\x50\xab\x4d\x6f\x16\x5f\x2f\xe7\xc4\x0c\xfd\x36\xc2\xef\xbd\x26\xb9\x13\x95\x1a\x54\x6a\xc8\xc2\x02\xb3\xef\x32\x83\xbf\xa0\x5a\x9a\x20\xaa\x0a\x0f\x6a\xf5\x6f\x84\x8a\xf9\x00\xae\x52\x0e\x11\x41\x20\x8e\x81\x0a\x12\xda\xcd\x66\x40\x93\x8c\x5a\xb2\x43\x23\xdb\x3a\xb2\x23\xe8\x86\x52\x4c\xbb\x41\xaa\xb3\xdd\x0c\x1e\xc8\xc2\x75\x58\x3c\x0f\x7c\x40\x1d\xf8\x59\xad\xfe\x42\x59\xfe\x89\x08\xc8\xc2\x05\x98\x94\x3c\x27\xca\x5c\x36\xb3\x34\x1d\x22\xcb\xe7\xb6\x6e\x7d\x15\x05\xb3\x50\x0c\xc1\xf0\xf7\x6d\x08\x96\x2f\x1a\x42\x16\xba\xa1\x29\x2b\x43\xbb\x91\x87\xb5\x21\x74\x58\x1b\x26\x87\x4c\x4f\xe1\x1f\xb3\xe4\xf6\xce\x8f\xe9\x2a\x13\xea\xc6\x86\x29\x15\x58\x99\x38\x4d\xe3\xd8\x5f\xe6\x60\xcd\xc0\x64\x65\x09\x8c\x7d\x9b\xf6\x7b\xe7\x69\x70\xcd\x0e\x63\x8b\x28\xf9\x47\x14\x5e\x1d\xa5\x81\x39\xa6\x9b\xa9\x60\x28\x71\x83\x04\x89\x02\xe4\xbb\x84\x7c\x0b\xc8\x07\x7a\x15\x72\x6e\x31\x9a\x50\x18\x9f\x75\x6c\x0d\xa6\x28\x3e\x39\x4c\xdc\xa6\x73\x29\xc8\x46\x41\x5e\xb9\x81\x6d\xe9\xc3\xd8\xd4\x5b\xc0\xe4\x76\x9e\xf7\x76\x9d\x5c\x66\x6a\xbd\xcd\x69\x2f\xf1\x9c\x67\xa1\xff\x81\xff\x2c\xf0\x5d\x87\x7e\xb6\x26\xba\x9d\x1b\xa1\x83\xd9\x87\xbf\x8a\x8b\xb5\x30\x6d\xad\x8d\xa9\xb5\x8b\x5c\xd6\x85\xe5\xb2\x8b\xa4\xac\x25\x26\x97\x37\x92\x91\xcb\x3b\x14\x90\xcb\x2f\x28\x1d\x97\x5f\x46\x34\x2e\xef\x52\x2e\x94\xd1\x95\x17\x30\x75\x36\x24\xce\xc2\xc4\xa8\x9b\xab\x30\xfc\x70\x8c\x65\x0c\xf9\x29\xd3\x9a\x04\x08\x73\x11\x36\x56\x82\x34\xf0\x97\x49\xa0\xc8\x30\x70\x81\x18\x6d\x81\x89\xf7\x2d\x98\x77\x95\x4f\xa3\x6a\xfb\x8a\x6a\x85\x05\x7d\xa6\x79\xb0\xa2\x33\x57\x29\x8d\x74\x52\x2e\x7c\x83\x09\x08\x0f\x19\x48\xb4\xe0\x86\xe2\x77\x23\x54\xc8\xe3\x86\x79\x11\xc5\xf1\x8b\xf4\xaa\x6a\x86\xea\x6f\x47\x24\xf2\xce\xcf\x38\xb2\xb8\xbf\x1e\x45\xc9\x0a\x26\x1d\xce\xef\x72\xfc\x61\xbf\x0b\x57\x21\xfb\x29\x9f\xa7\x24\x23\xec\xc7\x77\x7e\x51\xf8\xd3\x39\x72\x45\x38\x07\x5e\x5e\x02\x3f\x2c\x1c\x9f\x0d\x7f\x01\xc2\xb2\xfc\x05\x55\x0d\x60\x0c\xee\x84\x98\x45\x3a\x0f\xc9\x6b\x5a\xb5\xd1\x41\x6c\x2a\x46\x7b\x0a\xfc\xc8\x7e\xa4\xdc\xfd\x81\x92\x28\xdd\x68\xd6\x57\x6e\x06\x1d\xfb\x53\xbe\xd6\x1a\x04\xe8\xbb\xd9\x2c\xcc\xfa\x75\x35\x86\x4a\x12\x66\x28\x58\x87\x5e\xdd\x90\x40\x66\x4b\x72\xde\xe1\xbb\xdd\x67\x3b\x31\xfa\x7f\xc7\xe9\xb9\x1f\xd7\xd9\x8d\x0f\x6a\x69\x56\xb9\x86\xd0\x35\xd2\xe5\x9b\x2c\x5d\xfa\x33\x72\x98\x55\x4b\x8a\x4c\xcb\x2c\x44\xb8\x2f\x84\xb6\xaa\xe6\xf9\xcc\x36\x6d\x10\xe5\xe8\x32\x35\x5b\x97\x6d\x5c\xc7\x04\x74\x09\x34\x41\x0f\x12\x40\x82\x1e\x98\x6b\xd9\x2a\x64\x19\x11\x84\x1d\x24\x4e\xd7\x25\xb9\x53\xa2\xc8\xc9\x71\x07\xfd\x60\x1e\x05\x8d\x44\x4d\x26\xde\xe1\x2c\x49\xb3\xd0\xa3\x86\xc0\x06\x8d\x12\x72\xbd\x2e\xa2\x20\x88\x43\xf4\x7f\xfb\xd2\x91\x05\x9c\xf2\x93\x3c\x42\x40\x35\x5f\x9b\xb2\x30\xb5\xa2\x15\x3d\x4b\xba\x4f\xd4\xd7\xaa\xb9\x89\xbe\xe2\x3e\xb9\xea\x68\x04\x82\x3f\x7b\x1a\x92\x9c\x7b\x40\xe2\xe6\x26\x27\x61\x26\x56\xe0\x86\x0f\x10\x74\xd1\xf0\xb7\x7e\xa4\x5c\x0d\x2e\xdc\xf8\xa0\xf8\x5a\x30\x60\xde\x63\xfe\x1e\x97\x35\x06\x73\xa3\xee\x3c\xc2\x47\xf8\x3e\x5b\xdd\x03\x92\x21\xd8\x1e\x6c\x4f\xbf\xac\x0c\x98\xd6\x28\xba\xae\xb2\xec\xae\x36\x90\x9e\xbb\x51\x1b\xd5\xde\xe2\x52\x1b\x96\x96\x0e\x8b\x26\xe1\xc4\x26\x16\x2e\x1c\x5c\xcc\x00\xb3\xaf\xe7\x72\xa5\xbd\x5b\x25\x00\x6b\x60\xe5\x36\x3c\x40\x2f\xf4\x94\x8d\x6a\xc3\x28\xb1\x87\xb6\x43\x8c\x9f\x1a\x57\x1d\x38\xbc\x4d\x49\xf2\xcc\xfa\x38\xad\x3e\xcf\xdb\x5b\xf4\x71\x7c\xe9\xc7\x7d\x5d\x15\x47\x4e\x51\x9d\x2c\x84\x7a\x1f\xf9\xf9\x87\x37\x69\xde\xa7\xc2\x9d\xbc\x27\x2e\xa3\x02\x35\x8f\x03\xef\x67\xe1\xe9\x63\x24\xc9\x82\xd5\x46\x3a\x43\xb6\x05\xa0\xd5\x89\xf1\xb0\xe2\x01\x13\x03\x75\xa5\x5b\x55\x84\xec\x1f\x7e\xbc\xb2\xd4\x60\x12\x5e\x71\x3e\x10\x82\xef\xf8\x56\x12\x4f\xb2\x86\x8d\x0b\x03\xc7\x3a\x3c\xd2\x05\x19\x0f\x36\xe3\xac\x11\x93\x1f\x49\x4d\xeb\xb4\xa7\x94\x6e\x25\x76\x4b\x98\x67\x84\x24\xf9\xaa\x46\x2c\xb1\x88\xab\xb5\xca\x12\xae\x5e\x07\x72\x40\x64\x6d\x5b\xa7\xba\x7b\x51\x02\xfd\xfb\xdb\xe7\x95\x3e\x3a\x06\x6d\x09\xa9\xaf\x56\x71\xfc\x2b\xcc\x98\xfa\x83\xa1\x57\xfb\x48\x46\x2c\x7e\xd9\x1e\x7a\x5b\xfa\x3f\xa7\x39\xec\xb2\x3b\xf1\x23\xca\x92\x4b\x80\x00\xd9\x0b\xd2\x87\x6e\x4d\xa5\xb5\x83\x52\x44\x6a\xe1\x0c\xc8\xb7\x31\x56\x57\xd4\x8c\x4a\x5d\xa2\x94\xfe\x7c\xd1\x1f\xb8\x05\xb9\x4a\x47\xe0\x12\x62\xf1\x41\x35\x01\xc9\x7f\x9f\x96\x0f\x6c\x6a\x4a\xe7\xbd\xce\xd5\x95\x14\x3d\x19\xea\x42\x0f\xc9\x4f\x94\xc0\xa0\x96\x4c\x51\xaa\x1b\xa5\xad\x9c\x54\x89\xd5\x0d\xa7\xd8\xaa\x35\xcc\xce\xfd\xc3\x84\x6c\x8a\x1d\x33\x28\x68\x4e\xda\x05\x6b\x62\xe9\x1a\x05\x6a\xf8\x46\x87\xc9\x05\xae\x62\x5e\xb7\xce\xa4\x1b\x95\x48\x07\x90\x0e\xc7\xaf\xea\x72\x4e\xee\xf0\x53\x33\xde\x08\x2f\xe7\xac\x77\xde\xfc\x6a\xee\x7b\xd7\x8d\x5f\xc2\x5d\xab\xe9\x65\xb1\xf5\x1a\xbe\xc4\x75\x37\xad\xde\x06\xef\x4b\x34\x39\x30\xe0\xa7\x74\xea\xc7\x77\xa7\x0b\x29\x60\x41\x0d\x57\xef\xea\xad\x5d\x8b\x3e\x60\x06\x85\xa0\x3a\x16\xa8\x04\xa1\xee\x9b\x5d\xeb\x2a\xaf\x74\x77\x18\xd0\x94\x87\xa3\x4c\xd2\x4e\x0d\x33\x57\x1c\x47\xb9\x4a\x77\xab\x4a\x96\x6d\xb1\x4a\x64\xf5\xb7\xf1\xb5\x93\x12\x77\x28\x0b\x55\x8a\x24\x18\x28\xee\x33\xec\xd0\xa8\xb0\x56\x06\x6b\xdb\xb2\x2a\x8e\xb7\xe5\x73\x37\x84\x95\x4d\xb5\x41\x2b\x5a\xdd\x34\x6d\x39\xcb\x16\x6b\x87\x69\x35\xa4\xa3\x25\xc9\x4d\xd3\x36\x5f\x59\xa6\x62\xbe\x88\xd3\x15\xff\x3c\x4f\x63\x20\xb6\x57\x17\xfb\xf4\xe2\x42\x1a\x91\x6d\x9e\x25\xca\xc8\x39\x95\xe4\x07\xce\xe9\x19\x05\xc5\xbc\xab\xd7\xea\x9f\x98\xd9\xe5\xb4\x92\x1f\x6d\x1c\x02\xf3\xb8\x48\x97\xe8\xb1\x2d\x7f\x6c\x9a\x4e\xb3\xca\xd2\x35\xd6\xf9\x91\x08\xa3\xa2\xb5\x34\xf1\xea\x5c\xe0\xd6\x7e\x60\xaa\x89\x1d\x6b\xe5\xd2\x65\x72\x86\x4d\x45\x18\x28\x35\x1d\xd7\x8c\xd9\x8c\xf5\xa2\xe1\x25\x0e\x2f\x0a\xf7\xe0\x22\x91\xeb\xb5\x46\xca\x3e\x12\x40\xc2\x80\x9b\xed\x49\xc6\x61\xbe\x92\x8d\xf4\x6b\xc4\xd4\x07\x23\x14\x76\xb6\xba\x55\xe1\x1d\x4e\x63\x5f\x45\x1f\xc3\x80\x1f\xa5\x4c\x11\xbd\xc0\x6c\xcc\xe2\xb5\xd1\xac\xa3\x7d\xd5\x72\xe3\x7c\x9a\xa5\x60\x2b\xa7\x4b\xce\x9b\x67\x55\xa1\x5a\xe6\x27\x48\xad\x0f\x33\x35\xfa\x55\x21\x55\xe9\x3d\x0b\xea\xa6\xc5\x18\x53\x40\xb9\x6a\xca\x92\x99\x74\xe1\x56\x41\x8f\x1c\x3c\x2f\xe6\x6d\x6d\xd5\xf3\x57\x45\xca\xf0\x8c\x17\x84\x25\x68\xd4\x11\x11\x51\x0b\x22\x71\x0d\xf9\x15\xca\xbb\xe0\x33\x97\xc2\x9b\x50\x3e\x70\x7a\xa6\xa6\x50\xd2\x2d\x2b\xbb\xfa\xad\xae\x4c\x41\x48\x76\x0d\x81\xa9\x67\x40\xbe\xed\x9a\x4c\xac\x67\x21\x6a\x77\xad\x9a\x3b\x7d\x4e\xa6\x4e\x4e\xd2\x22\xba\xb8\x7e\x3e\xf7\x93\xd9\x1a\xce\xd7\x56\xb7\xd8\x94\x00\xbe\x20\x8f\x48\x93\x73\xac\x61\x78\x8b\xcb\x41\x5f\x65\xd5\x76\x40\x7f\xd0\xa9\x72\xc2\x3a\xeb\xe0\xb7\x50\x91\x9f\xc7\x45\x26\xcc\xdb\x7a\xa8\x9e\x9e\x15\x42\x9e\x46\xff\x56\x83\x0f\x4c\x55\x5e\xa0\xa9\xfb\x7d\x38\xd7\x93\x4b\xc6\x9b\x60\xd9\xbe\x71\x17\x64\xb6\x0a\x0d\x35\xc4\xa7\xc9\x4b\xa2\x8a\x76\x45\xf5\xd0\x70\x28\x36\xb8\x02\x8b\xc5\xd2\xf4\x9c\x34\x7a\xf3\x02\xc6\x23\xb2\x58\xb6\xdb\x65\xfc\x23\x8b\x36\xd8\x69\x8d\xe5\xba\x18\xd0\x4c\xb1\x06\x3b\xae\x99\xcc\x26\xbb\xae\xb1\x64\xa3\x9d\xd7\x82\xd3\x61\xc0\xab\xa7\x53\xec\xc3\xbf\x8b\x1f\x4b\xae\x09\xb7\x59\xb0\x30\x48\x3e\x2f\x23\x61\xf5\xb2\x78\xdd\x86\x9d\x17\x8b\x98\x8c\xb9\xde\x5e\x91\x1d\x54\x87\x9a\xab\x39\x6e\xbf\xe8\x4b\x68\x7b\xd5\x45\xf6\x4d\xef\x3b\xae\xd7\x20\x4c\x19\xa3\x84\x60\xe7\xde\x14\x87\xb4\xfd\x0d\x00\xb3\x71\xd0\x83\x52\x01\x17\xee\x1a\xf8\xd7\x39\xc8\xcf\x89\xc4\x86\x0b\x46\x5f\x79\xdf\x9d\x41\xf6\xde\xde\xa4\x98\xd7\x68\x73\xaf\xcf\xc8\x05\x2b\xc4\x22\x16\xbd\x46\x08\x1b\x17\xc4\x7c\xb0\xe2\x14\x65\x48\x65\x03\x93\xc5\xe2\x7a\x1b\x9f\x25\xfb\xaa\x8b\x1a\xe5\x72\x18\xc7\x4e\x5c\x21\xdb\xde\x71\x71\x0e\x23\x5d\x7b\x7b\x18\x3b\xaa\xf8\x46\xa1\x2d\x0d\x9c\x13\xa1\x2f\xc7\xf3\x34\x2b\x4e\xa2\xcd\x4d\xc9\x32\x84\x70\xd0\xbb\x39\xcf\x04\x54\xaf\xe8\xce\xb2\x36\xa7\x02\x72\x05\x23\x67\xcc\x78\x12\xd6\x2d\x53\x67\x26\x11\xe3\x28\x27\x7b\x5e\xbd\xd0\x74\x95\x65\xb8\x30\x2d\xba\xb6\xea\xd6\x15\xa6\x37\xf5\xf2\xb6\xac\x0e\xad\x5c\xcb\xc7\x6b\xe1\x52\x4b\x58\x1f\x98\x8a\x90\xbf\xf0\x57\xc9\x39\x23\x9e\xca\xf0\x23\xe2\xec\x46\x6c\x7f\xe9\xa9\x39\xa2\xdb\xdf\x09\xf3\x44\x87\xdb\x51\x63\x3b\x52\x0c\xbf\x31\x3a\xc9\x1c\xc4\xb5\x5d\x47\x02\xe2\xc4\x54\x48\xbb\xc8\x18\xf8\x2e\x1f\x1e\x20\x70\xd7\x05\x0a\x71\x35\xe9\x8e\xa7\xac\xc5\xf6\xce\x53\xb7\xe1\xcd\xab\x1c\xe8\x39\xea\x83\x8a\x0a\x18\xd8\x56\x7e\x99\xce\xbb\x00\x9a\xba\xe6\x7d\x41\x17\xc1\x6d\x6b\x01\x5f\x5f\x15\xef\x86\xbf\xf5\xb7\x07\x00\xb3\x08\x3f\x16\xd5\x3e\xd9\xa0\xe5\x4e\xe8\x0f\xa9\x38\x0f\x15\x22\x12\x5b\x25\x80\x5c\x38\x59\x78\xa9\x5a\x5e\xf5\x40\xcc\x3b\x94\xaa\x64\x84\xe3\xf4\xce\x5f\x1a\xc6\x6a\x61\x8f\x5f\x43\xf9\x17\x6f\xc4\x3a\xb8\x30\xa8\xae\xc1\xb6\x16\x52\x51\xa1\x5a\xa3\x64\xcc\x85\xea\x37\x29\x56\x15\x94\x65\xae\xbc\xd4\x1b\x40\x43\xc7\x6c\x50\xa9\x7e\x15\x11\xd0\x4b\xf3\x64\x6e\xe4\x86\xe1\x95\x59\x45\xef\x0b\x15\xbd\x6f\x68\x9d\xaf\xbf\x96\x5c\xdb\xdb\x37\xb4\x03\xc5\xeb\x51\xe6\xbd\x32\x6f\x9b\x73\xa5\x51\x20\xb6\x50\x20\xca\x59\xb7\x4b\x7c\xeb\x8e\x72\x4d\xb3\x52\x2b\x9a\xe2\x83\x7d\xad\x03\x4a\x7a\x0f\x54\xbe\x5b\x51\xbb\xd3\x95\xda\x9a\x58\x25\x20\xf3\x4a\x38\xf5\xa4\xa2\x6c\x39\x6e\xe1\x0e\x1f\x5d\xcc\x6c\xf7\x32\xd1\x1c\x6b\xa0\x81\x9f\xec\xb8\x8a\x13\x56\x55\x4a\x23\x73\xda\x86\x27\x67\xf5\x4f\x59\x7a\xc5\x8c\xb7\x71\xfe\xda\xaf\x6e\x18\x93\x36\x0f\x53\x3b\x10\x1b\x4d\x86\x6b\x36\xcb\x8b\x33\xaa\x6d\x5b\xa0\x5d\x93\xb7\x4c\xba\x2a\x59\xeb\x56\x3d\x64\xaf\x2e\x57\xf9\xbc\x9f\x91\x3b\xb3\xfa\xbd\x3e\x75\x94\x35\x65\x2c\x3f\x17\xe1\xc6\x78\xb5\x27\x84\xf0\xd3\x27\x96\x98\xa6\x92\x50\xed\x6b\x21\xdd\xfc\x24\xc9\xa1\x65\x00\x23\x75\x06\xe7\x72\x97\xaa\x0e\x5a\x9e\x5e\x1a\x73\xbe\x44\x63\xd1\xae\x81\xc0\x83\xc6\xaa\xdd\x41\x0d\x5b\x2a\x7a\xb0\x4e\x45\xa1\xe7\x71\x15\x6d\x69\xce\x52\x7c\x51\x0a\x0d\x13\xd3\xe8\xb6\x5d\xb0\xfb\x60\x24\x5f\x72\x9b\x98\x78\x02\x58\x0a\x36\xbd\xbf\x7c\xfb\x64\x0b\x9f\x01\xaa\x66\xdb\x0c\xeb\x44\x85\x56\x5a\xb7\x61\xc4\x81\x65\x38\xdd\x3d\x5e\xe8\x95\xc6\x74\x32\xd0\xd3\x49\xff\x1a\x2d\x00\x0d\xd7\xeb\x89\x39\x52\x5d\x67\x48\x8d\x88\xf3\xc8\x80\xd5\x02\xec\x88\xea\x84\xb3\x7d\xeb\x99\xa8\xd8\xb6\x33\x0e\x17\xcb\x02\xf4\x99\x63\x7a\x85\x8f\x31\x8d\xf9\xd5\x98\x39\xf1\xf3\x15\xc6\x0c\x92\x93\x38\x36\xa0\xd3\x69\x50\x56\xd8\xd3\xab\x5a\x6b\x64\x73\x61\x73\xf7\x07\xd6\x4e\x47\xdb\x3e\x94\x02\xce\x58\x18\x56\x85\x64\x8f\xe7\xa4\x46\x50\x85\x81\xa0\xae\x99\x97\x39\xfe\xf2\xf8\xea\xb6\x82\x89\x1d\xac\xc0\xdb\x19\x2f\x6a\x92\x7c\x3b\xf3\xc5\x24\x09\xc4\xeb\x36\xf6\x89\x45\x50\x67\x0b\xc5\xfc\xc5\xc5\xf3\xc2\xdc\xc7\x15\xc2\xeb\x36\x19\x8d\x79\xe4\x81\x17\x91\xf5\xd5\xaf\x99\x8b\x2e\x6d\xf1\xa8\x2f\xed\xfd\xe8\xac\x4b\x15\xa8\x1a\xe5\x10\xc5\xd9\x83\x7a\x2a\xb8\x67\x11\x53\xf2\xfa\x2e\x49\x69\xb2\x00\x1d\x3e\x23\xe9\x19\x21\x5f\xf6\x61\x22\x7a\x99\x37\xf1\xb6\x61\x6a\xb2\x0d\xfa\xfd\x1b\xf8\xb7\xae\x1b\x30\x13\x9e\xfb\xd2\xda\xc3\xad\x49\x5d\x97\x0e\x8e\xfa\x72\x84\xea\x54\xfd\xfa\x7e\x60\xf7\xf9\xe2\x56\xd3\xca\x62\xde\x75\xb2\x8a\xed\x59\xca\xd5\x81\x53\x5b\xac\x87\xfd\x56\xfd\x55\x49\x95\xb4\xe4\x90\x37\x77\x42\xd0\x8d\xfa\x2b\x91\x30\xaa\xed\x67\xb3\xba\xf1\x68\x5b\xf6\xe3\x6d\x67\x3f\xe6\x5d\x8f\x08\x9c\x84\x20\x22\x4d\x3d\xda\xc6\x8e\x23\xde\xb7\xb7\x68\x07\x3e\x9a\x8b\xe5\xfe\x7b\x4e\xb5\x53\x36\xa9\x9d\xcb\x9c\x35\x55\xc0\xcd\xce\x7e\x30\x4d\x05\x5d\x56\x8e\xf3\x4a\x4a\x79\x57\xa7\x66\xcd\x66\x8d\x35\x75\xfe\x61\x17\x1a\x23\x07\xda\x5c\x9c\xb4\x30\xd2\xe6\xe3\x2c\xe8\x34\x20\xa6\x47\x56\xfb\xdd\xb8\x3c\x4f\xca\x33\xde\x47\x73\xc4\x22\xc0\xd4\xfa\x18\x26\xe2\x82\x17\x70\x19\xba\x22\xb7\x15\xa1\xc1\x2f\x5d\x8b\x90\xa8\xee\x41\x76\x6e\xd2\x10\xed\xca\x6f\x9b\xe4\x46\x8c\xc7\xf8\x07\x59\xef\xd2\xaa\xa5\xbc\xe1\xcc\x8c\x9f\x98\x69\xc0\xef\x05\xe0\xf7\x00\xf8\x09\xfe\x69\x02\xac\x49\xf6\xb4\x79\x3e\x2e\xd2\x63\x0a\x2c\x74\xad\xdc\x55\x08\xd2\x26\x26\x36\x84\x34\x2a\xfd\x80\xc2\x1f\xa6\x43\x6f\x67\xe8\xf5\xb6\x7a\x86\x41\xe9\x86\x29\xf1\x9b\x27\x01\x99\x4f\xdd\xd4\xb5\x09\x99\xf0\xac\xe9\x18\x74\x68\xb7\x1b\xb3\x37\x94\x6b\xb7\x6f\xff\xd3\x6e\xde\x17\x6a\x37\xa6\x5f\x77\x51\x41\x72\x8d\xf5\xde\x95\xd0\x42\xe0\xb9\x0f\x35\xd4\x28\x99\x9c\x54\xfe\xb9\xc3\xb0\xc5\xf3\xfc\x46\xa2\xb8\xae\x18\x72\x22\x28\xd8\x77\x53\x21\x54\xdc\x01\xa0\x8f\xbb\x4c\x91\x1b\x65\xef\xa6\x92\x26\xd7\xe4\xef\x5d\xd2\xe4\xe2\xfd\x7f\x24\xed\x66\x92\x26\xd8\xf7\x6f\x2d\x69\x18\xf1\xd0\x16\x8e\x6e\x86\xea\xd4\x5d\x44\xcc\x06\x4e\x92\x4d\x00\xfc\x5c\xc5\xca\x3a\xfc\x20\x86\x54\xa2\x21\x79\x02\x18\x7c\x3a\x61\x68\xa4\xa3\x6c\xcf\xaa\x52\x69\xc9\xbd\x85\x63\x3c\x8d\xd3\x3c\xcc\x0b\xb0\xe9\x39\x71\x26\x71\xcb\x4d\x93\x4b\x11\xe5\x32\xc9\x18\x59\x87\x6f\x9c\x27\x88\xdd\xf0\x4f\x8b\x61\x61\x16\xa5\xb4\xf9\xf2\xd9\x11\x63\x11\xda\xf4\xb8\x26\xf9\x84\xf5\x60\x9f\x22\x17\x4a\x80\x6f\xaa\x00\xad\xec\x74\x40\xc3\x40\x11\xbc\xcd\x1c\x83\xa1\xa7\xec\x94\xe7\xa1\x00\x2f\xf3\xd3\x9f\xaf\xd8\x62\x6d\xba\x06\x1f\xab\x65\x45\xab\xfa\x24\x5f\xfb\x45\x3a\x9b\xc5\xe1\x1b\xaa\xc4\x99\x9a\xf4\x8a\x3a\x35\x4e\xb5\x24\x5d\xaa\x93\xe1\x4f\xa3\xc7\xea\x2e\xc7\x84\x2f\xd0\x60\x60\x14\xad\x3b\xb4\x54\xe4\x54\x37\x80\xa2\xcf\x37\x01\xd4\x01\x55\xed\x00\x2b\x02\x0c\x1d\xb2\x08\xb3\x7e\x8f\xeb\x08\xfb\x34\x35\xd1\x3c\xc3\x5f\xb7\x00\x26\x4d\x0c\x0d\x4e\xfc\xbe\x05\x40\x39\x92\x68\x80\xe2\xb7\x43\xf1\x4c\x63\x10\x8d\xc6\xf3\x25\x5a\x0f\x40\x68\x3b\xfc\xa0\x75\xcb\xa8\xd0\x23\x99\x3a\x9d\x2a\x1c\x8b\x1f\x83\x52\x8b\xa0\x4a\x1a\x7a\x45\x80\x21\x67\x9c\x6b\x44\x14\x90\x1b\xed\xc5\xc4\xdc\xd5\x83\x1f\xca\xbc\x78\x4c\xa3\xb1\xac\xef\x1a\x9b\xf4\x21\x3c\x54\xea\x64\xeb\x6c\x9c\xa4\x41\x88\xbe\x76\x10\xa9\x9f\xd2\xab\x30\x7b\xee\xe7\xa1\x7b\xb9\x83\x78\x4c\xc7\xe5\x00\xe5\xee\x43\x6c\x78\x54\x34\xb6\x21\xae\x26\xe8\x36\x16\x01\xa4\x05\x93\x7a\xc4\x5a\x89\xda\x7f\x5f\xf5\xe8\xbb\x9e\x86\xc3\x7a\xea\xf4\xa0\x68\x74\xa0\x46\x64\xc6\x95\xd0\x8e\xa4\xa3\xcc\x5c\x06\xd5\x60\xa8\x6e\x15\xa0\xd5\x67\xff\xf2\x55\x32\x35\xe3\x1a\xf0\x00\x27\x19\x6f\xa1\x8e\x30\x80\xc6\xa6\x6c\xdd\xc1\xe6\x45\xb8\xec\x02\xf4\x18\xf2\x75\x83\x5a\x8a\xb7\x25\x11\x22\x6a\x87\xb8\x3b\x50\x58\xe9\xcf\x37\xb5\x48\x23\x27\xbd\xc1\x49\x0f\xfa\x24\x5a\x4c\xa2\x9a\x67\x7d\x4c\x9a\xd9\x49\x68\x3b\x21\xe0\x8e\xc2\xd1\x18\xdc\xe9\x7a\x3a\x48\x14\x3f\xdb\xec\x08\x40\x76\x0d\x5c\x9f\x69\x96\x2e\x43\x97\x90\x7e\x20\x9f\xb7\x5b\x39\x98\x8f\x15\xa0\x27\x40\x68\x7b\xdd\x5a\x1f\x82\xf7\xf0\xa3\xc4\xd2\x81\x3f\x76\xb0\x5f\x6e\x2c\xfc\x88\x55\xde\x16\xb6\x35\x45\xad\x57\xc9\xaf\x3a\xdf\x65\x35\x68\x10\x19\x08\x07\x7c\xfd\x70\xaa\xae\x34\xeb\x15\x3a\x19\xac\xd4\x48\x75\x7b\x23\x99\x3d\x8a\xb6\x55\x6d\x75\x69\x24\x2b\x38\xdd\x11\x0b\xd9\x5e\xa1\xb6\x10\xc9\xae\x10\xd6\x88\x67\xe7\x8a\x77\x0f\x6b\x77\x19\xc9\x37\x2a\xbb\x56\x78\xbb\xdb\x22\xbb\x21\x6e\x33\xcc\xbd\x15\x42\xd7\xee\x65\xee\xbd\x69\xd3\x59\xcd\xb2\x69\x8f\xa8\xa3\xb6\x21\x75\x2d\x6d\xd9\x49\xc9\x15\xc1\x9a\x2a\x0e\x03\x08\x3a\x2b\x38\x11\x0a\xd8\xa2\x20\x3a\x0c\x3f\x37\x8a\x66\x76\x01\xba\x41\x34\x75\x17\xc6\xe0\x9a\x4e\x27\xc6\xa8\xc2\xb2\x42\x5d\x75\x91\x7a\x14\x1f\xb6\x3b\x0e\xdb\xf8\x38\x96\xbb\x5c\x4f\xe7\x51\xc0\xa6\x69\x0d\x04\xad\xb9\xcc\xf3\x0e\x0c\x26\x63\xf8\xd1\x8d\x98\x0c\xec\xba\x09\x93\x3b\x0c\x5e\xea\x71\xac\x9b\xb9\x9e\x1b\xf2\x78\x0d\x04\xed\x3c\xbe\xb7\xf1\xcf\x08\x1a\x1e\xa2\x12\xf8\xcf\xa0\xe3\x7e\xd6\xb5\xe9\x6e\xd1\x12\x47\x7e\x31\xc7\x53\x71\xfb\x18\xc3\x8d\x21\xd2\x0d\x91\xdc\x4e\x3a\xd6\x31\xd6\xd5\x59\x0c\x9d\xf3\xde\xdd\xc8\xda\x30\xfa\xd5\x0b\xba\x16\x99\x4c\xcf\x87\x70\x83\xe5\xbb\x55\x2f\x6b\x32\xcd\x68\xf3\x66\x6d\x95\xbb\xe5\x54\x29\x69\xe7\x0a\x29\x77\x09\x3f\x17\x38\x37\x7c\xc0\x13\xc0\xac\x71\x75\x23\x41\x75\x16\x77\x2f\x5a\x87\x0c\x66\x01\xa4\x1b\x19\xaa\xd7\xb9\xbb\x63\x07\x32\x82\xf0\x5e\x9b\x63\xd4\x9d\x80\xfb\x6c\x8e\x35\xc8\xb8\xcf\xe6\x68\x27\xc3\x74\x1a\xb7\x92\xb0\xb6\x9b\x1e\x9f\xaa\x97\x9d\xde\x47\x0d\x7e\x73\xca\xb0\xc9\x67\x70\x88\x03\xe3\xb1\xad\x56\x14\x6d\x78\x71\xfc\x63\xd3\x92\x8c\xc6\xe1\x5c\x4c\x39\xf0\x82\xe8\x72\x17\xd4\x60\xdf\x5c\xec\x13\x7f\x30\xd0\x89\x5b\xca\x6b\x87\x5a\x87\x05\xa0\xb8\xc3\x7f\xb9\x6a\xb5\x86\xef\xdc\x10\xff\xed\xab\x42\x7e\xf5\x35\x6a\xd2\x21\x0a\xe0\x0f\xab\x8b\x74\xeb\xaf\x51\x9b\x0e\x2b\xcd\x7f\x58\x6d\xa4\xf9\xd3\xb5\x36\x61\x1c\x4e\x49\x63\x77\xd2\x11\xc5\xac\xe2\xf8\xaf\x53\x4a\xee\x5e\x8c\xb5\xb7\xa6\x9f\x33\x6b\xee\xc9\xeb\x92\xb5\x23\xbd\x14\xba\x72\xc5\xbc\xbb\xf2\x52\x48\x55\x59\xa9\xc3\xdc\x93\x02\xcc\x2c\xea\x25\x57\xfd\x54\x25\x65\xea\x26\x25\x7e\xe5\xed\x3c\x71\x98\x3e\x6d\xb3\x8e\x12\x01\xad\x8a\x18\x18\x1a\xa6\x42\x04\x53\xe5\x13\x7f\xf9\x15\x48\x22\xa1\xc5\xfa\xc2\xc7\xa1\x87\x09\xb4\x4b\x2e\xa5\x7d\x36\x2e\x35\xf1\x78\xea\xc7\x31\x35\x68\x27\xf9\x13\xda\xe1\x8f\x95\x40\xa7\x31\x70\xbf\x55\x17\xaa\xe4\x7f\x58\xd5\x95\x9d\x71\x67\x55\x67\xcd\xfa\x20\x7d\x36\x15\xe7\xfc\xdc\xe7\x9a\x66\xed\xd8\x14\x76\x66\xbd\xfd\xfd\x77\x5b\xe6\x94\xcc\xb9\xc5\x56\xd4\x5a\xb6\x83\x54\x1e\x6f\xe5\x22\x68\x40\x67\x1a\x8b\x1c\xdc\x2a\x78\x76\xa9\x54\x94\xe4\xdd\x89\xf8\x7b\x86\x3b\x6a\xe2\x6b\xe2\xdc\xd0\x03\x60\x2b\x34\x1f\xab\x4c\x74\xcd\xe8\x9c\xe7\x70\xe8\x8f\x4d\x53\x3b\x79\xde\x61\x76\xc9\x2f\x3a\x23\xf3\xe9\x3c\xed\xfb\x6b\x24\x13\xdd\x64\x82\x62\x5b\xa8\x1b\x50\x2f\xd2\x38\x4e\xaf\xf0\xf6\xce\x29\x2e\x1e\x5c\xf9\x18\x74\xf5\x21\x4c\xbc\x8b\x2c\x5d\x98\x85\xe4\xcd\xa8\xd3\x38\x5d\x05\xe3\x59\x54\xcc\x57\xe7\x78\xe6\xdc\x04\x6f\x44\x8a\x53\x3f\xc8\x27\x41\x04\xc9\x7e\xfc\xd7\x55\x3e\x9f\xbc\xff\x6d\x15\x66\xd7\xe3\x85\x9f\x7f\x08\x03\x3a\xf2\x87\x49\x1a\x6d\x8f\x1f\xd3\xad\xb9\xf2\xf9\x10\x5e\x23\xb4\x46\x3e\x88\x50\x87\xf8\x42\x36\xf3\xd0\xfb\x00\x6f\xe1\xf8\x6a\x1e\x4d\xe7\x43\x7d\x40\xb7\xb3\x07\xa3\xa8\x7e\x40\x8f\xd9\x5f\xd0\x39\x4b\x6f\x4f\xbe\xe5\xb4\x01\xd4\xf8\xdc\x9f\x7e\xc8\x97\xfe\x34\xc4\xcb\x4c\x61\xce\x11\x87\x20\xcf\x53\x5f\x5c\x44\x1b\x7a\x0b\x71\xce\x75\xfd\xe0\x7c\x59\xbc\x48\xbd\xf3\x10\x1a\x1f\x7a\xec\x74\x85\xb7\x4b\x05\xb5\x5c\x20\x6a\x28\x51\xe9\xaa\xe8\x37\x9b\x39\x22\x73\x7c\xd1\xf5\x64\xf0\x4e\xca\x01\xd8\x4d\x57\xbf\xb6\xf2\xdb\x60\xf1\xcd\xb9\xf9\x8a\x2e\x90\xc5\xcb\x34\xcf\xb3\xf4\x2a\x0f\xb3\xdc\x23\x88\xde\x15\xf4\x2b\x4f\x1e\xdd\xc5\x15\x54\x64\xe2\xb5\xb7\xba\x49\x26\xa2\x39\x6a\xf9\xdb\x8f\xed\x37\xcf\x71\x77\x8a\x89\x0a\xc2\x13\x61\x32\x63\xec\x0b\xd0\xb7\xb3\xe7\xb8\x8e\xf1\x81\xc9\x0b\x5a\x1c\x72\x97\xa7\xbc\x93\xeb\xbf\x1e\x79\x48\x61\x72\xd3\x7a\x71\x14\x25\x6d\x5a\xe1\x8f\x93\xf2\x15\xda\xf9\x8c\x51\xb7\xf8\x89\xe3\xb4\x54\x36\x9d\xce\x22\x47\x18\xb8\x81\x07\xcd\x2d\x20\xae\xe1\x4a\xc1\x76\xb6\x6a\xa2\xc6\x4b\x3c\x23\x3e\x4b\x60\x3c\xcc\x0b\x1c\xde\xc6\x39\x5e\x9f\x2c\x90\xd1\xd6\x8e\x01\xeb\xe3\x16\x2c\x2c\xf3\xc3\xe0\x50\xd2\xc4\x4c\xc6\xf1\x91\x3b\xc9\xfb\x6d\xfc\x1b\xd0\xee\x7f\x24\x60\x0a\xad\x08\x23\x42\xe8\x3c\x4a\x4c\x36\x92\x9d\x99\xb7\xf5\x40\x36\xfd\xe0\x92\x6e\x9e\x26\x02\xf4\x01\x8c\x4b\xbc\x29\x36\xc7\x53\x26\xa7\xae\x82\xa8\x82\xd9\x6f\x16\xe1\x5c\xb4\x79\xdd\x9e\xe4\xe5\x0a\x9f\xf5\x1a\x99\x4a\x68\x11\x86\xff\x1d\x36\xbd\x5b\xc4\x88\xbe\x26\x23\xfc\xd6\x52\xc2\xd2\x59\x4a\x8c\x59\xdc\x6d\xd1\x37\x57\xa0\xb5\x12\x35\xfc\x0d\xa8\x5a\x9b\x73\x0d\x9a\x5a\x44\xa1\xe5\x96\x02\x07\x0d\xfc\xd0\x30\xad\x9d\xbc\xc8\x0e\x0c\x9d\xf4\x68\x4d\x37\xd6\xb5\x99\xa0\x50\xdc\x2f\xf1\xa6\x22\x18\xac\x18\x50\x01\xfe\x94\x6b\xfd\x59\x9f\x92\x6c\xcf\x58\x85\x09\xe7\x2a\xd4\xe6\xa2\x77\x59\x88\xc6\x8a\x1e\xd6\x17\xd4\x0d\xca\x25\x8c\x1e\x0b\x3e\x1a\xee\x46\x14\x96\xac\x32\xcc\x6c\xc7\x02\x84\x20\x47\x33\xbd\x7e\xd5\xad\x4b\x5a\xaa\x48\xf8\x3e\x60\xd3\xcf\x9c\x5e\xad\x1e\xd0\x75\x22\xd8\x11\x4d\x26\x9a\x11\x5c\xcd\x43\x71\x15\x91\x90\x9e\x28\x77\x95\x0b\x33\x3f\x67\x8c\x26\x8d\xbe\xcb\x72\x8a\x1d\x6e\x59\xbf\xda\x83\x58\xd1\x30\xac\x89\xf2\x8d\x46\x57\xf5\x7e\x32\x0c\x76\xb0\x4e\xcf\x8f\x6a\x83\x0d\x1d\x69\x59\x4f\xd6\x08\x8d\x5b\x83\xc4\xaa\x96\xff\xb1\x76\x39\xa6\xb1\xe0\xc5\xd4\x7c\x67\x58\x81\xb4\xe9\x21\xc2\x9b\x1f\x53\x20\x7c\xb7\xda\x7d\xa6\x82\x6e\x2b\xa8\xad\xfd\xac\x18\x38\xd7\x1c\xfb\x27\x0f\x6a\xa8\xfb\xd1\xac\x39\x2c\x28\x82\x2c\xbd\x6e\x3d\x06\xb6\xc3\xc5\x5e\xee\xbc\x4d\xb7\xa1\x99\x7c\x11\xfb\x93\x9b\x6f\x67\x12\x79\x5e\xe8\xdb\x77\x4a\xcf\x61\xf3\x25\xe8\x1d\x0b\x5a\x3b\x25\xf4\x3d\x48\x96\xc4\x55\xf9\x23\x07\x17\x31\x8d\xa5\x22\x80\x4b\x5c\x4f\x27\x7e\xfe\x22\x7e\x65\x43\x03\x0a\x24\x4f\x59\x3b\x81\x2c\xd6\x10\x6c\xf9\x00\x1b\x0f\x4f\xb2\x4a\x97\x61\x56\x5c\x0f\x61\x8a\x3b\xf4\xc0\xbe\xf0\xd0\x7e\x82\xc2\xea\xae\x2f\x87\x5d\x82\xf1\xbd\x14\xb8\xb9\xc8\x7b\xfc\x4a\xb2\x80\xc5\x84\x04\x28\x94\xf2\x36\x09\xe1\xbf\x2c\x43\xc2\x4f\x08\xf8\xd9\x58\x65\xe3\x29\x28\x81\x20\x11\xe4\x84\xdb\xde\x61\xcf\x02\x27\x1e\xa2\x67\x21\xe8\xea\xf3\xc4\xdc\x22\xf6\x85\xca\xb9\xdc\x85\x7a\xd0\x80\x5c\x0f\xa5\x4b\x92\x0a\xc0\x3f\xbc\x93\xd1\x3a\x75\xc7\xa4\x5f\x2c\x43\x35\x54\x80\x94\x4e\x65\xc5\x4f\xba\x64\xa5\x7c\xf0\x5b\x37\x34\x9d\x2a\x57\x6d\xc7\x88\x41\x17\x8f\xba\x94\x16\xdc\x20\x22\x63\x6a\xdd\x8d\x83\x8f\x60\xf7\x49\x59\xf2\xac\xfb\x69\xc1\x26\xba\x7d\x81\x50\x85\x51\xf5\x4a\xfe\x6e\x72\x82\xe5\x2e\x8e\x91\x53\x76\xe9\xef\xb7\xb6\x60\x5e\xb2\xb3\xb5\xc5\x38\x8f\x25\xaf\xd4\x5e\x8c\xec\xd2\xda\x73\x01\x72\xcd\xed\xba\x70\x1d\x18\xad\x0f\x33\x36\x3b\x79\x5e\x3f\x0e\x59\x4c\x25\x0b\x72\x84\x98\xdd\xd2\xec\xac\xe4\x6f\x1c\x0a\x90\x18\x31\xfe\xfb\x67\x66\x72\xa9\x3a\xa7\xc7\x19\x66\xe1\xc7\x70\x4a\xd8\x07\xae\x4d\x57\xcc\x9d\x20\xb4\x15\x2e\xa2\xce\x4c\x9b\xea\x2c\xfd\xe0\xda\x5f\x67\xf4\x72\x41\x88\x4c\x88\xc2\xfc\xaf\xd7\x87\x18\x39\x7c\x12\x9d\xf1\x6d\xf8\x50\x95\xe5\x15\xcb\x14\x64\x21\x4a\x38\x63\x40\xb9\x76\x89\x40\x27\xf8\xc9\xbf\x4e\x83\xcd\x47\x13\x6d\xa4\xae\x42\x86\x19\x26\x38\xed\x29\x96\xfc\x67\x9d\xc4\xa2\x51\x4e\x14\xe9\x67\x6a\xbd\xa1\x69\xd0\x36\x55\xfb\x3b\x3c\xf3\x32\x9f\xbf\x01\x30\x20\x68\xe2\xc4\x22\x02\xe9\x90\x2b\xcb\xae\x31\x65\x2b\xe2\x8e\x0a\xef\x60\xcb\x73\xdb\x27\xcb\xd9\x47\x5b\x73\x97\x96\x27\x4d\xe1\xa3\x33\x9a\xb6\x1e\x74\x98\xb5\xe2\x75\x97\x17\xda\x29\xe7\xcd\xfd\x1c\x0f\x8c\x00\xf9\x2e\xd0\xd6\x7c\xbf\x5a\x2c\xbd\x22\x75\x95\xc4\x62\xb8\xd7\xa2\x7d\x3a\x8e\x55\xe7\xb5\x95\xeb\x2e\x65\x23\xce\xaf\x56\x31\xd4\x2d\xed\x55\xab\x11\xc0\xeb\xad\x26\x22\x3a\xcc\xf7\xea\x92\x63\x8a\x83\x14\x22\xc7\xd9\xbd\x46\x28\x1c\xde\x82\x4f\xcb\xd6\x43\xb9\xbf\x0d\x5e\x72\x75\x6b\xfd\xc2\x88\x1c\xb3\xa9\x34\x43\xed\x83\xb1\x11\xa9\x5a\x57\x4d\x65\x1e\x71\x1c\x88\x2c\x8a\x4a\x98\xf6\xba\x9a\x5f\x19\xc5\x76\x6d\x16\xc2\x05\x89\x26\x0c\xf2\x18\x42\x15\x2d\x59\xf9\x50\xbf\x4f\x9a\xda\xda\x11\x5b\x29\xd7\x42\x4a\x18\x14\xec\x56\x8f\x0f\x16\xe7\x7c\x98\x19\x69\xa8\x66\xb6\x1a\xa8\xcd\xf8\x16\x61\x32\xad\x9e\x5b\x6d\xa8\x36\x73\xcb\x25\x28\x16\x76\xd9\x54\x15\x04\xc6\x07\xfe\x76\x77\x99\x59\x9a\x53\xec\xb6\x69\xbb\x8e\x32\x67\x9b\x73\x51\xe6\x56\x66\x8e\x4b\x81\x4c\x96\x8b\x49\x24\xf4\x72\xb5\x44\x93\x61\x24\x68\x32\x36\x9b\x22\x81\x32\xb5\x69\xd9\xb9\xd1\xec\x51\x70\xc4\x5f\x87\x3d\xd7\xae\xdb\x99\xc3\x6a\xd7\xea\x6c\x2e\xed\x8f\x13\x8f\x28\x96\xc6\x73\xdb\x96\x7e\x69\x57\xe8\xc9\x8a\xf1\x9a\xd3\x89\xa0\x43\xe5\xc5\x86\x57\x5b\xf4\xca\xab\x20\x84\x21\xa1\x4d\x93\x72\x1c\x27\x43\x64\x28\x86\x8d\x21\x3a\x52\xeb\x3d\x48\xfa\x7a\x95\x65\x72\x61\x9b\xfc\x86\x55\xc2\x34\x46\x79\x59\x92\x1a\xd8\xb7\x1c\x03\x7b\x99\x33\x4a\xd8\xa9\x85\x53\x88\x5c\xce\x3d\xce\x66\x71\x4d\x5b\xca\xdd\xe5\x0d\x53\x17\xab\x42\xb9\x38\xa5\xb4\x77\x7a\x9a\x7f\xa3\x4e\x83\x6f\x02\x0b\xb6\xac\xb4\xe3\x5c\xf1\xb5\xb4\xb6\x8c\x47\x04\x10\x48\xc7\x14\x47\xb8\x70\x11\xb3\xdb\x45\x2a\x3d\xbc\xbb\x74\x9e\xed\x2f\xe1\xec\xe5\xc7\x65\xff\xf6\xe4\x69\x12\x1b\xc2\x97\x15\xef\x76\x3b\x73\xd9\x0d\x8b\x9c\xc9\x74\x4d\x8e\x3b\x4f\x88\xd1\x05\x28\xb4\xe8\x85\xd7\x12\x29\xc6\x75\xb6\x50\x75\x7d\x8e\xd2\x78\x17\x1e\xcf\xdf\x6a\xfb\x87\xf9\xd4\x5f\x86\x92\xc9\xe5\x55\xc6\x77\xdc\x7a\x2e\x2c\x6e\xce\xe8\x15\x94\x5d\x43\x73\xdc\x9e\xd7\x9b\x9b\x90\xe7\x16\x9c\x15\x2a\x09\xfe\x95\x2b\x07\xd5\x46\x6b\x77\x93\xbd\x93\xca\x0e\xff\x70\xfe\xa5\xd2\x60\xdb\xe2\x3e\x5b\x33\x2a\x6f\xdf\x64\x72\xd5\xa3\xf6\x2f\xd5\xb5\x8d\x36\x7f\x9f\x46\x49\x5f\x9e\x7c\x86\x9f\x1f\xb1\x8e\xa5\xfa\x74\x09\x07\xdd\x6a\x9a\x63\x70\xe0\xef\xa3\x6f\x1b\x25\x8c\x95\x79\x9b\x20\xb2\xb3\xa3\x1c\x4c\xf3\x24\x88\xc1\x42\x21\x7b\x48\x7a\x16\x69\xd7\x7d\xee\x74\xb9\xa5\x50\x55\xca\xd2\x1b\x5a\xfe\x45\xef\x1b\x48\x78\x84\x5d\xf8\xe3\xb5\xbc\xc3\x1b\x73\x0d\xa5\x7a\x68\xc6\x8f\xae\xb5\x9b\xe0\x37\x0f\x8d\x38\xab\xe2\x57\xd1\x36\x3c\x09\x55\x98\x8b\x74\x05\xe6\x49\x7a\x95\x54\xc1\xe8\x80\x10\x1e\x8e\x9e\x4d\x20\xf9\x64\x46\x7e\xfd\xb5\xa7\x13\xc4\xed\xd9\x0e\xbf\x72\xb5\x46\x63\x19\xc1\x2c\x7c\x8c\xc8\x5e\x7f\x3a\x4d\xb3\x00\xea\x30\x12\x9f\x7a\xc3\xb6\xb0\x29\x7c\x5a\x83\x53\x4c\x19\x79\x44\x0d\x81\x8b\x46\x4c\x18\x93\x95\x51\x6c\x19\xc6\xac\xb2\x79\xe5\x01\x08\xab\xd8\x35\x2e\xd1\x05\x0f\x1f\x97\x3e\x4d\xfe\xf6\x15\x04\xe5\xcd\x8e\x6a\x21\x43\x66\x39\x02\xcf\x94\x9a\xa6\x71\xec\x2f\xf3\x50\xc4\x2d\x47\xc9\xa0\x76\xbd\x81\xd9\x32\x1a\x3b\x9e\x2f\x2a\xdf\x5b\xa6\x78\x9a\x00\x89\x08\x1d\xc0\x18\x71\xa1\x4a\x8b\x98\x27\xf5\xd5\x55\x05\x45\x80\x05\x05\x88\x30\x7f\x8f\x8b\xcc\x4f\xc4\x22\x35\x4c\xf3\x06\xec\xb2\xbe\xf9\x68\x12\x14\x90\x7e\x0f\xdd\xff\x4d\x24\x08\x2e\x1a\x05\xd0\xb5\xdf\x54\xe0\x91\x0c\xae\x32\x36\x85\x0b\xd1\x13\x47\x5e\x52\xd4\x0b\xf6\xd6\x43\xb0\x65\xf5\x1d\x0f\x94\x8a\xaa\x00\x53\x1b\x80\x53\xbe\xca\x05\x64\x63\x11\x7b\x34\xcb\xd2\xd5\x72\xe4\x07\x01\x80\xbd\x53\xbc\xcc\x3a\x6d\xe3\x78\xd2\xe5\x8a\x36\x7b\x81\x01\xfa\x17\x2f\x49\xbd\x8b\x74\xba\xca\x7b\xbb\x15\x7d\x02\x2d\x20\x55\x09\x3f\xae\xca\x7b\xf1\xaa\xe5\x44\x6a\x73\xc9\xf3\x78\x95\x55\xcb\xa1\x88\xc8\x52\xad\xac\xb0\x18\xa0\x02\x93\x71\xf0\x6c\xbc\xad\xae\x23\x3b\x88\x42\x19\x54\x56\x25\x52\x26\x37\xd6\x4e\x95\xa7\xf0\x23\x06\x00\xa5\xbb\x6a\xea\xaa\xed\x3a\x8b\xf6\x1d\x5a\xbc\x43\xd3\xd5\x49\x00\x4d\x2f\xaf\xe1\xfb\xff\xaa\x35\x9a\xaa\xcd\xaf\x24\xd8\x0b\x74\x8d\x0c\x30\xee\xdf\x35\x0c\x06\x57\x47\xe4\x28\x68\x32\xf8\x6b\x3c\xbe\x11\x86\x2e\x9e\xc0\xaa\xe1\x67\xae\x8c\x36\x99\x7f\xfa\xf2\x5f\xa4\xae\x6a\xc4\x42\xd3\x44\xff\x1d\x8e\x2b\x8b\x9a\xea\xe6\xd7\x28\xa8\x54\x83\x16\x23\xdd\xd6\xcf\xc3\x36\x75\xf9\xa8\x1f\x80\x22\x44\x56\x71\xd4\x10\x45\xda\xfa\xea\x4c\x94\xa1\xd6\x3a\x85\x57\x3a\xd6\xa3\x5b\xd7\xb1\x95\x91\x76\x71\xd1\x60\xf7\x96\xf6\x6e\x93\x95\x69\x81\xb0\x4d\xd7\xb6\x62\xa6\x75\x6a\x5b\xa5\x77\x6f\x8e\x6a\x32\x6d\x7b\xf4\xae\x47\x4d\x40\xd3\x32\x6c\x96\x7d\xa8\x45\xd9\x1a\x4a\xf6\xcb\x0c\x71\x4e\xda\x89\xae\x52\xab\x5a\xda\xb4\x93\x1a\xb5\xd4\xe7\x3d\x8f\x62\xee\x16\xe8\xc6\xd9\x7b\x1d\xb7\xfe\x50\x16\x7f\xa9\xa1\xc9\xd4\x08\x5a\xda\x6f\x39\x18\x75\x86\x79\x13\xa5\x79\x83\xe1\x07\xe9\x69\x1b\x70\x6e\x3d\xaa\x58\x3a\xb2\x33\x1e\x47\xa5\xf5\xcd\xee\x6d\x27\x9e\x5a\x9c\x77\xc5\xe6\x88\xe9\xab\x3e\xda\x54\x37\x94\x4c\xe7\xe6\xe6\x22\x98\x93\x48\xe0\x4f\x25\xc4\x87\x5b\xdd\x95\x30\xdb\x96\x76\x15\xfd\x8f\xfa\xb2\x00\xdd\x9c\x31\xa5\x5b\xcd\x65\xd4\x74\x8f\xae\x7a\x92\x37\xd7\x37\x87\xfe\x2a\x3a\xf9\x70\x3e\xf5\xac\x77\x46\x42\x3d\xa3\x5c\x7d\x91\xe8\x9e\x76\x53\x78\x5d\xc2\xef\xc5\xdb\x67\xe9\x44\x78\x34\xbe\xa8\xca\x0f\x36\x81\x16\x03\xa1\xce\x28\x70\xc3\xe4\x8a\xb9\xee\x1f\x42\x8f\x69\xd8\x40\xc2\x38\x5d\x6c\xbd\x15\x08\x87\x83\x98\x89\x07\x6c\xf8\x99\x5d\x40\xaa\x58\x4f\x5f\xa1\x29\x12\xec\xcb\x33\xc1\x0c\x10\xc9\x4c\x57\x43\x24\x6c\x17\x73\x93\x30\xa4\x5b\xc0\x7d\xaf\xbc\x1f\x0f\x6d\x0b\xa1\x24\x38\x0b\x0f\x21\xa1\x05\x17\x7e\x2c\xf0\x8e\x12\x5c\x5e\x62\x58\x3d\x0e\xc4\x6e\x29\xc8\x2a\x2b\x35\x18\x34\x47\x49\x52\x37\xac\xd7\x3a\xa7\xe0\x1e\x10\x5c\x24\xf2\x44\x7c\x39\xab\x04\x87\xab\x81\xb4\xa1\xe9\x35\x3d\xb8\x22\xa6\x0b\xea\xa1\x6c\x57\x48\x56\xd9\x1a\xca\xe8\xda\xa5\xce\x60\xa7\x8b\x23\x94\xeb\xe9\xe6\x9e\x5f\x16\xa0\xde\x7b\x6d\x97\xd5\xf7\x88\x19\x77\xc5\x96\x5f\xe5\x5d\x5f\xe5\xd5\xab\xe5\x27\xed\x41\x93\x00\xff\xf4\x27\x59\x4b\x51\x60\x63\x43\x71\xc5\xc5\x94\xe7\xd0\x2e\x50\x74\x5a\xa4\xd8\x37\xec\xb6\x17\xa5\xe8\x3c\xae\xe5\xec\x30\x28\x3d\xee\xea\xf6\x7c\x12\x7b\x8e\xd3\xf2\xdb\xef\x46\x15\xaa\xe7\x9f\xe0\xdd\x5c\xbb\xde\xc9\xc6\xf1\x2a\x81\xd7\x8d\xa1\xb7\x71\x94\xaa\xb7\xb7\xab\x30\x97\xaf\xff\x0c\x83\x44\xff\x78\x3b\x5f\x65\xe2\xbd\x22\x95\x1b\xaf\xb2\x48\xe6\x39\xf6\xa1\xf7\xaa\x77\x01\xfb\xac\xda\x27\xaf\xc5\xfd\xcd\x12\xbd\xc4\x2d\x11\x4b\xa4\x12\x1d\xfe\x01\xd8\x12\xb0\x84\xc9\x01\x3c\x8a\x12\x01\x4e\x40\x13\xc0\x04\x2c\x01\x4a\x40\x12\x80\x04\x9c\x2a\x98\x85\xbc\x04\xfb\x64\xe3\x6f\x7e\xb2\xf2\x33\xaa\xc2\xab\xf0\x3c\x53\xef\x47\x7e\x36\x25\x38\xcf\x96\x59\x14\x8b\x14\xfa\xf0\xb7\x55\x12\xd6\x79\xf2\xb7\x55\x4c\x5f\x9f\xad\x66\xab\x5c\xd0\x1e\x2e\x8b\x70\x71\x1e\x12\x19\x3f\x43\x9b\xcb\xd7\xd7\xe9\xa5\x4e\x7e\x11\x4e\xc5\x3b\x4b\x9d\xe6\x1b\x90\x28\xc9\x93\x94\x49\xba\x6c\xaa\xc4\x9f\xb8\x4e\x1b\xd0\x24\x09\x92\xa4\x48\x32\x24\x05\x1b\x67\x0e\x95\xae\x24\xaf\xba\xf2\x68\x09\x5b\x00\x83\xfd\xef\xc6\x52\x65\x4f\x2e\xf3\x83\xa2\x2b\x57\x41\x2b\xf6\x80\x0e\xc1\xec\x6f\xfd\x70\xb2\x3d\xfa\xfe\xec\x13\xfc\xbb\x73\x76\xb2\x85\xaf\x8f\xe1\xcf\xf6\xd9\xe0\xf4\xf4\xbc\xf7\x14\x06\xa8\xcf\x65\x75\x8e\x8e\xea\xa8\x44\x34\xe4\x5a\xb8\xb6\x01\xc1\x0e\x8b\xe0\xfa\xba\x8e\x80\xe2\x25\x3b\xc1\x3f\x3d\x0d\x7e\xdf\xf9\xcc\xc3\xe5\x20\xab\xe8\xa0\xee\xd0\x9f\xb0\xd0\xe7\xf3\x3a\x6c\x0a\x46\xe9\xcc\x96\x2d\xc5\x16\xf8\xb3\x03\x7f\x1e\xb3\xdc\x59\x2c\x18\xf6\xcb\x03\x31\xd6\xc2\x04\xcd\xf0\x67\xd1\xd8\x1c\x1a\xdc\xc8\x59\x45\x23\x35\xf9\x5d\xa2\x59\x30\x68\xcc\xb0\xa0\x6e\xb8\x08\xfc\xef\xdb\xc3\xc7\x6c\xcb\xfc\xf8\x63\x05\x87\x0a\xce\xbe\x23\x79\x7d\xf3\xa6\x02\x5f\x07\x4f\x77\x42\xf0\xec\xe8\xd3\x9b\xa3\x4f\xfe\xe2\xd3\x72\xf1\xe9\xd9\xe2\x93\x0f\x3f\xe1\xfd\xa8\xc4\x54\xd3\x06\x30\xf9\x13\x51\x32\x62\x68\xd2\x96\xf4\x07\x77\x98\x09\x16\x11\x8b\xf4\xca\xc5\x83\x29\x27\x94\x5c\x6e\x8a\x3c\xa3\x8b\x17\x08\xb1\xce\x23\x43\x42\xc6\x7a\x9d\x0a\x31\x55\xe2\x65\xec\x35\x67\x2a\x25\x16\x95\x01\xd4\xa7\xde\x60\x60\x42\x4b\x97\x6a\xca\x50\x02\x52\x1b\x06\x5a\xe0\xc0\xb4\x76\xa6\xc9\xd0\xdc\xb4\xe2\x08\x2a\x71\xcc\xe5\x4e\x73\x30\x37\xa6\x1f\x40\xe7\x67\x17\x71\x7a\x45\x5b\xcd\x7f\x83\x11\x97\x6c\xb4\xc9\xe3\x27\x4f\xbe\xdd\xfe\x6e\x6b\x22\x20\x8d\x84\xf1\x35\x02\xd2\x46\x30\x23\x1b\x45\xc9\xe8\xbd\x7f\xe9\xe7\xd3\x2c\x5a\x16\xa3\x2c\x9c\x85\x1f\xab\x76\x33\xae\xfd\xab\x2d\x10\x93\x93\xd3\xd1\xe9\xc9\xe9\xd9\xe9\xe4\xf4\xf7\xd3\xcf\xa7\xfd\xd3\xc1\xe9\x37\xa7\x9b\xa7\x3f\x9c\x8e\x4f\x4f\x4f\xff\x75\xfa\xe8\xf4\xd3\xd9\x64\x06\x2a\xff\xf4\xf4\xd1\xd7\x1b\xca\x84\xab\x54\x49\x05\x7a\x83\x1d\x19\x0f\xbd\xa9\x59\x23\x34\x18\x63\xbc\xd6\x4c\x2f\x03\x2a\x1a\x4a\xcb\xd0\x8c\xaf\x7f\x96\x65\xfe\x35\x94\x18\xe9\x12\x74\x32\x98\xe0\xeb\x94\x36\x16\x7b\xb4\xf4\x9f\xf3\xa4\xe0\x0e\xb2\x70\xb1\xc4\x1d\xe7\x7d\xb5\x80\x35\xf4\x56\x4b\xf1\x17\xa7\xab\xe2\x4d\x99\x8e\x43\x6d\x2c\x0e\xf5\x3d\x14\x18\x4a\x56\x1e\xc2\x33\xd4\x16\x5c\xb5\x5e\xa6\xcf\xcf\xe5\xee\x93\xd5\xaa\xf9\x84\xf7\x82\xe8\x52\x5d\x58\x72\x9e\xa6\x05\x34\x89\xbf\x1c\xd9\x46\xda\x48\xb8\x08\xbd\x00\xba\x2a\x52\x3e\x82\x89\xec\x6a\x03\x5a\xef\x3a\x0e\xf7\x37\xfe\x7b\x44\xc7\x47\xef\x7e\x0f\x8f\xf7\x30\x02\xd1\xce\x0a\x3f\x29\x9e\xd2\xc5\x27\xb5\x29\x41\x6f\x6f\x15\x2b\x7c\xa0\xad\x8a\xd1\x2a\x21\x38\x01\x9f\x1d\x0b\xc4\x11\xdd\x74\xa7\x6a\x4f\x97\xcf\x49\x08\x3a\x2d\x4a\x36\x8c\x7b\xe8\x1c\xa0\x2a\xd5\x2d\x9d\xb9\x2e\xdc\xf8\xe8\xbd\x53\x85\x6c\x4e\x27\xe8\x09\xc0\x76\x56\x62\x12\x47\x0d\x15\x54\x24\xa9\xa3\x8d\xc4\xb1\xfb\xd5\x30\x80\x8d\x83\x3d\x5f\xb7\x55\x91\xe8\x16\x80\xe6\x29\xe6\xbb\xdb\x5b\x5b\x5f\x41\x0e\xf3\x96\x40\x72\x81\x18\xab\xa7\xf0\x59\xdc\xc9\xb7\x37\xf1\x0f\x5a\x48\x6a\xe5\xf9\xfa\x0c\x2f\x25\xaa\x89\xe1\x6f\x8d\x5b\xfd\x75\x17\x72\x75\x89\x6a\x87\x1a\xdc\x6d\xeb\xc0\x97\x55\xcc\x7c\x51\xe0\xac\x64\x73\x8e\x69\xec\x0f\xfa\x62\x1d\xd2\x51\x83\xb5\x1a\xe0\xce\x99\xef\x64\x7c\x47\x16\xfe\xf1\x4c\x6b\x57\x13\x5d\x54\xc4\xcd\xf9\xc0\x0e\x2f\xe5\xb5\xd7\x35\x67\x94\x72\xcc\xf4\xe9\xd0\x69\xc8\x28\x0f\xdd\x11\xa3\x4c\x79\xe8\x8e\x3d\x86\xa2\x51\xa1\xea\x61\x7b\x3d\x70\xcb\x28\x4c\xe3\x0c\xfa\xaa\x1e\x23\xb9\x81\x14\xb4\x01\x4e\x6f\x7b\xd5\x19\x9c\xb8\xb6\xc1\x9a\xf0\xd4\x73\xe0\xed\x13\xbb\xde\xb6\xf1\xc1\xb0\x14\x6d\x84\x25\x3a\x79\x3d\xb6\x0d\xce\x44\x57\x4e\x52\xaa\x59\xaa\xf8\x3a\x60\x13\x37\xc3\xde\x02\xd9\x56\x89\xcd\x98\x31\x47\xf9\x4f\xa1\xbf\xc4\x82\xa6\xa9\xcb\xdd\xa6\xab\xa4\x5f\xde\xd1\xfa\x95\xf7\x44\x6d\x6f\x84\x81\x5f\xa5\xc1\x30\xe0\x89\xcb\x07\x8c\xcb\x94\x21\x2b\x24\x8b\xcc\x76\x20\xba\x7a\x85\x9e\xf1\x02\x1a\xef\x30\xa1\x16\xaa\x52\x22\x03\xde\x1d\x04\x9d\x3c\xde\x1e\x7a\x7d\xdd\x0b\xca\x0a\xc9\x5a\xfc\xe0\xed\x7c\x0f\x63\xc5\xce\x5f\xc0\x12\xc5\xac\x8f\xb7\x2a\x7f\x6b\x69\x67\x27\x84\xef\x8c\x25\x75\x1e\xfa\x81\xd2\x4d\xe6\xc1\xf2\xbd\xbd\x02\x3f\xd5\xfa\x98\xb8\x18\x8e\xe9\x78\x60\xd3\xa9\x71\x37\x0b\x2f\x37\x0e\xbe\x8e\x73\xff\xb7\x55\xfa\x74\x6f\x52\xcc\x9d\x05\xd2\x18\x47\xd0\xfd\x8d\x3f\x6f\xe8\x7b\xde\x68\xb4\xc6\xb1\xb5\xa1\x98\xc8\x8a\x3b\x9c\x00\x4f\xd6\x80\x47\xde\xdf\x66\xa5\x62\x9a\xa8\x9a\xe9\xce\x4b\xb4\x86\xde\x45\x24\x78\x77\xfd\x01\x56\x95\xae\xa0\x53\x64\x7e\x47\x74\x05\x07\x04\x15\xfe\xa1\x5c\x3d\xd3\xd5\x57\xd7\x5e\xfb\x0f\x14\x5a\x56\x0d\xd2\x5d\xf9\xb6\x2e\x04\xf4\x74\xe9\x9a\x1a\x67\xf0\xc7\x08\x47\x89\x30\xc9\xeb\xa6\x9d\xc6\x68\xb6\x64\xa5\xc2\xb2\x3a\x8a\x60\x0b\xd7\x84\xe0\x1b\x89\x35\xe5\xea\xa2\x5c\x28\x8c\xfb\xa5\x5d\xe7\x30\x5b\xe8\x8e\xe8\x27\x15\xf4\x3f\x96\xfc\x72\x7a\xfa\x96\x1b\x49\x70\x9b\x8c\x29\xb1\x64\xa9\x1a\xe1\x10\xd0\x93\xd4\x51\xb0\x1b\x22\xbd\x72\x8b\x18\x5d\x1f\x9b\x6f\xd4\xad\x99\x91\xb8\x57\x56\x5d\x38\x6d\xb8\x49\xc8\xc1\xd3\x8e\x54\x3a\x82\x1c\x68\x17\xea\x6b\x1d\xb1\xba\x4d\xb4\x8e\x5a\x38\x62\xda\x51\x4b\x6b\xca\x81\x3a\x57\x5f\xeb\xa8\xd5\xf5\x92\x0a\xb5\xd9\xa7\x39\x33\xce\x5a\xcf\xea\x6e\xd2\xd5\xec\x8b\xbe\x21\x0a\xac\x6d\x39\xe2\xad\xa5\x16\x41\xad\xea\xc1\x92\x44\x71\xdb\x38\x72\x07\x9b\x79\x24\x5c\x1f\xfb\x1b\xdb\x3b\xe5\x0c\xc4\xd6\xa0\x6b\x8c\x00\x01\x4e\xa9\xe6\x59\x78\xb1\xbf\xf1\xbf\x36\xac\xb9\x95\xd5\x50\xf6\x09\xec\xcc\x2c\x4b\xf0\x8d\x99\x63\x15\xf5\xf1\xc8\xab\xdc\x12\xba\xf4\x33\xbf\x48\xb3\x8d\xa6\xdc\x6b\x92\xa9\xe4\xf9\xb6\x84\xf6\x0d\xe1\xf0\x7e\xf8\xd2\xb5\x50\x5d\x63\xdd\x5a\x70\x42\x51\x15\xa8\x46\xda\x59\xa9\x62\xc6\xe5\x66\xc9\x42\x42\x75\x47\x34\x95\x9f\xbe\xfa\xd5\xeb\x2c\x1a\xbb\x4d\x5c\xb5\x10\xd9\x2a\xaf\x09\xd5\x4d\x1a\xb7\x3b\x1d\xb6\xfe\x2b\x6f\xbb\xed\xd0\x3a\xb7\x97\x33\x2e\xf9\x7c\x55\x14\x20\x33\xb8\x6a\x0c\x52\x47\x3f\x4c\x21\xf4\xe0\xff\xd1\x32\x8b\x16\xb8\x82\x66\x0b\xa4\x79\xc2\x3c\xe2\x15\x85\xf9\xb9\xdc\x1d\xca\x4f\xa7\xce\x62\x5f\x46\xc0\x74\x15\xa5\xc9\xff\x68\xdd\x54\xbd\xb4\xe0\x0e\x48\xfd\x43\xb4\x53\xf5\xd6\x83\x1b\xd4\xe3\x8b\xe9\x27\xc6\x56\x63\x3d\x11\xae\x81\x7c\x6e\xd8\x62\xda\x66\xd1\x07\xa9\xaf\x39\xc0\xdf\x31\x6d\x0b\xcb\x64\xb3\xa9\x3b\x2a\xef\x78\xbf\x77\xfa\x1c\x42\xe8\x22\x3b\xb7\xcc\x3d\x9b\xec\xe3\xf2\xc2\xf0\x7b\x22\x9b\x04\x47\x27\x97\x81\x30\x9f\x07\x32\x70\x6f\xfc\xfe\xff\xe2\xf9\xc0\x83\x07\xff\x2f\x00\x00\xff\xff\x89\xc3\xbd\x0c\xc1\xcf\x00\x00") +var _webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x7d\xfb\x73\xdb\x36\xd6\xe8\xcf\xcd\x5f\x71\xe2\x9b\x9a\x52\xad\xa7\x93\x6d\x1b\xc7\x72\xbe\x6c\xd2\xde\xba\xb7\x6e\x73\x6b\x77\x77\x3a\xb6\xb7\x03\x93\x90\xc4\x86\x22\x58\x12\x94\xa2\xaf\xce\xff\x7e\x07\x2f\x12\x20\x01\x92\xb2\x9d\xf4\xdb\xb9\xab\xf1\x8c\x25\x12\x38\x2f\x1c\x1c\x1c\x1c\x1c\x00\xe3\x2f\xbe\x78\x04\x5f\xc0\x1a\xa7\x59\x48\x62\x98\x8e\x26\xa3\x67\xec\xc1\x7f\x45\xa1\x8f\xe3\x0c\xb3\xef\xb3\xbb\x7e\x58\xe5\x1b\x42\x68\x46\x53\x94\x0c\x03\x44\x31\x0d\x57\x38\x09\xfd\x77\x38\x1d\xfd\x9e\xb1\xd7\x4b\x4a\x93\xa3\xf1\x78\xb3\xd9\x8c\xf0\x16\xfb\x24\x1e\xa5\x64\x6c\xd6\x11\xe5\xef\x4d\xc8\x6b\x92\x6c\xd3\x70\xb1\xa4\x70\x38\x99\x1e\xc2\x39\xc5\x73\x14\xc3\x5b\x4c\x53\xc6\xa4\x28\x11\xd3\x34\xbc\xc9\x69\x48\xe2\xec\x88\x3d\x81\x21\xbc\x8a\x83\x14\x6f\xe0\x67\xb2\x89\x32\xf9\xe8\x62\x19\xa2\x05\x81\x00\xc3\xab\x34\xcd\x03\x24\x1f\xe7\x09\xa3\x36\x80\x39\x49\xe1\xef\x8a\x03\x58\x3f\x85\x9b\x2d\x7c\x4f\x62\x44\x97\x02\x1f\x4e\x33\x12\xc3\x7f\x7d\x43\x62\x94\x05\x28\x96\xc8\x7f\x10\xf2\x0e\x20\x8f\x03\x9c\x02\x5d\x62\x78\x95\x20\x7f\x89\xd5\x9b\x01\xfc\x43\x36\xd2\xe1\x68\x02\x3d\x56\x60\x4f\xbe\xda\xeb\xbf\x60\x20\xb6\x24\x87\x15\xda\x42\x4c\x28\xe4\x19\x06\xba\x0c\x33\x98\x87\x11\x06\xfc\xde\xc7\x09\x85\x30\x06\x9f\xac\x92\x28\x44\xb1\x8f\x61\x13\xd2\x25\xc7\x23\xa1\x8c\x18\x8c\x5f\x25\x0c\x72\x43\x51\x18\x03\x02\x9f\x24\x5b\x20\x73\xbd\x20\x20\x2a\x89\xd6\x5a\x0f\x71\x62\x47\x24\x5d\x8c\xa5\xea\x64\xe3\x1f\x4e\x5f\x7f\xf3\xe3\xf9\x37\xc3\xc3\xd1\x44\x56\xf8\x25\x8e\x70\x96\x41\x8a\xff\xc8\xc3\x14\x07\x4c\x34\x28\x49\xa2\xd0\x47\x37\x11\x86\x08\x6d\x80\xa4\x80\x16\x29\xc6\x01\x50\xc2\x08\xde\xa4\x21\x0d\xe3\xc5\x00\x32\x32\xa7\x1b\xc4\x1b\x0b\x82\x30\x13\x2d\x65\xc8\x4b\x91\x17\x66\x46\x01\x12\x03\x8a\x61\xef\xd5\x39\x9c\x9e\xef\xc1\xdf\x5f\x9d\x9f\x9e\x0f\x18\x90\x7f\x9e\x5e\x7c\xf7\xd3\x2f\x17\xf0\xcf\x57\x3f\xff\xfc\xea\xc7\x8b\xd3\x6f\xce\xe1\xa7\x9f\xe1\xf5\x4f\x3f\xbe\x39\xbd\x38\xfd\xe9\xc7\x73\xf8\xe9\x5b\x78\xf5\xe3\xaf\xf0\x7f\x4e\x7f\x7c\x33\x00\x1c\xd2\x25\x4e\x01\xbf\x4f\x52\xc6\x01\x49\x21\x64\x92\xc4\x01\x17\xdb\x39\xc6\x06\x09\x4c\x07\xd8\xef\x2c\xc1\x7e\x38\x0f\x7d\x88\x50\xbc\xc8\xd1\x02\xc3\x82\xac\x71\x1a\x87\xf1\x02\x12\x9c\xae\xc2\x8c\xb5\x68\x06\x28\x0e\x18\x98\x28\x5c\x85\x14\x71\xfd\xab\xf3\x35\xba\x6f\x17\x18\x3f\x7a\xd4\x9b\xe7\xb1\xcf\xe0\x43\xef\x49\x1f\xfe\x7c\xf4\x08\x00\x60\x3c\x86\xb7\xbc\x8f\x01\xb9\xf9\x1d\xfb\x94\x3f\x5c\xa3\x14\xb2\x15\x4a\xe9\xdb\x25\x89\x31\xcc\xa0\xb7\x09\xe3\x80\x6c\x46\x24\x0d\x71\x2c\x88\x84\xc7\xb3\x19\xa7\x73\x1e\xc6\x38\x60\x4a\x28\x2b\xbe\x41\x14\x5f\x84\x2b\x2c\xc1\xce\xa0\x44\x8b\x23\xbc\xc2\x31\x1d\x00\x49\x38\x9f\x8c\x0a\x90\x1f\xa6\xb0\xa3\x30\x80\x19\x04\xc9\xe2\x34\x38\x38\x78\x51\x79\x15\x87\xb4\x0e\x40\x14\xfa\xf0\xe2\x51\x81\x9e\xf5\xc3\x0b\xc2\x88\x30\x50\x07\x54\x47\x16\xce\xa1\x47\xb7\x09\x26\x73\x08\x28\x93\x2b\x78\x4c\x67\xe2\x85\xa7\x97\x62\x9f\x14\xd3\x3c\x8d\x21\xc6\x1b\xce\x18\x83\x53\x12\xf6\xe1\x51\xa5\x58\x40\x4d\x82\x4c\x59\x8c\x92\x94\x50\xc2\xf0\xc2\x4c\x43\xe3\x93\x38\xa3\x69\xee\x53\x92\x1e\x55\x6a\x0c\x1e\x95\x24\xc7\x21\x3d\xea\x28\x4b\x25\x8b\xd0\x27\x31\x93\x02\x8a\x32\xfc\xc2\x78\xcb\x04\xf0\xb8\x27\xab\x8e\x98\x95\x65\x48\xe1\xf6\x16\xf4\x67\x8c\x98\x7e\xdf\xa8\x28\xda\x23\x25\x1b\x2e\x92\x6f\xd2\x94\xa4\x3d\xef\x2c\xcf\x28\xf8\x4b\x42\xb8\x7d\x80\x08\xa3\x8c\x02\xd3\x1c\x61\xbe\xbd\xbe\x89\x9c\xb7\xa7\xc4\x03\x33\x85\xd1\x52\xe6\x89\x64\x12\x66\xf0\x44\x31\x6c\x83\x55\x74\xb0\x02\x58\xf9\x28\x8c\xb9\x4a\x64\xf0\xb2\xfe\xee\x08\x3c\x1c\x7b\x16\x80\x8a\x79\x0d\xa0\x7a\xe4\x28\xcd\xc5\x67\x96\x66\x8f\x2c\xa5\xc3\xec\x34\x4e\x72\xc6\x93\xc1\xe3\x28\xcc\x7a\x5e\xc8\xde\x58\xc5\xc5\x6c\x37\x89\x85\x2c\x1c\xed\x69\x82\x5b\xa2\xec\x75\x84\x32\x05\x74\xb8\x48\x49\x9e\x78\xd6\xd6\xac\x80\x37\xe1\xcc\xc3\x38\xe8\x79\x23\x0d\xc8\x10\x05\x01\x89\xad\x54\xce\x49\xba\x42\x54\x93\x83\x78\x60\xd1\x3d\xad\x38\xd3\xdc\xcf\x3e\xfb\xec\x33\xf6\x9c\x37\xd5\xa5\xd1\xa8\xd7\x0a\xea\xe3\x19\xc4\x79\x14\xf5\xab\xb8\x1a\xea\xbc\xa8\x71\x8b\x23\x36\x48\x28\x69\xc9\xb6\xe8\x57\x20\x9a\x12\x08\x10\x45\x3d\x4f\xbc\xac\x72\x5d\x80\x6c\x02\x20\x44\x28\xdb\xb6\x15\x5c\x5d\x3c\x26\xec\x9e\xa9\xa1\x2f\xc1\x3b\x3b\x1b\x07\xc1\x78\xbb\xdd\x6e\x3d\xa6\xd2\x5e\x9f\x8b\x53\xaf\x75\xa0\x57\xe3\xaa\xfa\x12\x3c\x58\x2e\x8f\x56\x2b\x59\x05\x0e\xb4\x12\xe7\xcc\x19\x0b\x58\x97\xf1\x8e\xb2\x4c\x96\x30\x29\xfd\x50\x6f\xfc\xdf\x98\x12\x85\x11\xfe\x96\xe3\xec\xf5\x1d\x1a\x5a\xa8\x5a\x5f\xd9\x27\xf3\xb1\x14\x57\x96\x20\xae\x63\x76\x20\x8a\x8f\xaa\xd5\x53\x85\x38\xe4\xfd\x7d\x8e\x61\x14\xe1\x78\x41\x97\xb6\xa2\x92\x72\xe6\x99\x9e\x0a\x5a\x78\x05\xd1\x44\xec\xe9\x90\xfd\xb6\xb5\x92\xac\x99\x27\xf5\x7a\x79\xd2\x56\x2b\x20\x9b\xb8\x5e\x8f\x3d\x75\xd6\xfc\xd0\xa0\x27\x8a\xfc\x7e\x8d\x1b\x6f\x11\x6d\x93\x25\x17\x46\xf1\x6d\xc8\xde\x7b\x4d\x7a\x27\x98\xea\x57\x38\xb4\xc2\xf2\x97\x78\x9d\x92\x78\x98\x27\x8d\x10\x15\xc3\xfd\x1a\xff\x8d\x50\x59\x39\xef\x45\x61\x1c\x42\x0e\x81\x4b\x0c\x05\x81\xb0\x6e\xa6\x00\x9a\x74\xd4\xd0\x1d\x3e\xb2\xed\xa2\x3b\x82\x6e\x44\x2d\x7a\xc2\x9e\x3a\xdb\x4d\x93\x81\xac\x5c\x87\x65\x97\x01\x8a\x70\x1c\xa0\xb4\xc6\xbf\x30\x96\x9f\x71\x02\x52\xbc\x22\x6b\x6c\x97\x44\x59\xca\x14\x56\x41\x87\x28\xf2\xa1\xad\x5b\x6f\xc2\x60\x81\xc5\x10\xbc\xc0\xf4\x02\xaf\x92\x88\x39\x42\x06\xba\x81\xae\x2b\x03\xb3\x91\x07\xb5\x21\x74\x50\x1b\x26\x07\x96\x9e\x62\xff\xe8\x35\xa7\x87\xdf\x91\x3c\x15\xe6\xc6\x84\x29\x0d\x58\xf9\xd0\x27\x51\x84\x92\x0c\xf7\xfb\x23\x94\x24\x38\x0e\x2e\x48\xcf\xbb\x21\xc1\xd6\x3a\x8c\xad\xc2\xf8\x1f\x21\xde\x9c\x91\x40\x1f\xd3\xf5\xa7\xb7\xb7\xd6\x41\x82\xab\xc2\x2a\x8c\xd7\x21\xde\xac\x48\x80\xbd\x3e\x2b\x39\xb1\x58\x42\xe1\x7c\xd6\xb1\x35\xb8\xa2\xec\x93\x6d\x42\xea\x2f\xa5\x22\x6b\x15\xed\xc6\x0d\xc0\x47\x19\x06\x6f\x45\x62\xba\xcc\xbc\x23\xa7\x94\x2d\x5c\x4f\x6d\xd6\x4b\x7c\x6e\x52\x8c\xde\xd9\x5f\x0b\x7c\x5b\x8c\xd2\x1d\xd1\x1d\xde\x09\x5d\x80\xe7\x28\x8f\xe8\x4e\x98\x26\x3b\x63\x6a\xed\x22\xeb\xba\xb2\xac\xbb\x68\xca\x4e\x6a\xb2\xbe\x93\x8e\xac\x1f\x50\x41\xd6\x9f\x50\x3b\xd6\x9f\x46\x35\xd6\x0f\xa9\x17\xca\xe9\xca\x28\x4a\xa9\xa6\x71\x06\x26\x8b\xb9\xd9\x60\xfc\xee\x9c\xd5\xd1\xf4\xa7\x7c\xd6\xa4\x40\xac\x14\xc7\x66\xd5\xa0\x02\xf8\x37\x71\xa0\xc8\xd0\x70\xcd\x66\x30\x81\x97\xf0\x25\x1c\x55\x5f\x0d\xab\xed\x2b\xd8\xc2\x94\xbf\xe6\xf3\x60\x45\x67\xa6\x9e\x34\xd2\xc9\x4b\xb1\x6f\x5e\xdf\x66\x6f\x33\x4c\xbf\x89\x03\x03\x2e\x16\xbf\x1b\xa1\xe2\x38\x70\xc3\x9c\x87\x51\xf4\x86\x6c\xaa\x6e\x68\xf1\xee\x8c\xab\xbc\xf3\x35\x1b\x59\xdc\x6f\xcf\xc2\x38\xa7\xd8\xfd\x5e\x8e\x3f\xd6\xf7\x22\x54\x68\x7d\x95\x2d\x09\xd7\x11\xeb\xcb\xdf\x10\xa5\xc8\x5f\x32\xa9\x88\xe0\xc0\x37\x6b\x1c\x53\x03\xc7\x07\x2d\x5e\xc0\x60\x19\xf1\x82\xaa\x05\xd0\x06\x77\x8e\xd8\x8a\x74\x89\x79\xd4\xb4\xea\xa3\xc3\xcb\xaa\xd3\x4e\x72\x8a\xd3\xef\x78\xe9\x5e\x5f\x69\x54\xd1\x68\xc6\x5b\xdb\x0c\x3a\x42\xbe\x9d\xeb\x02\x04\x4d\xc3\xc5\x02\xa7\xbd\xba\x19\x63\x46\xf2\x08\x3c\xc6\x83\x57\x77\x24\x98\xb0\x25\x39\xbf\xb1\xef\x66\x9f\xed\x24\xe8\xff\x1d\x91\x1b\x14\xd5\xc5\x0d\xd2\x4a\x5b\x8d\x2b\x1e\x65\x94\x24\x6f\x53\x92\xa0\x05\x0f\x98\x55\x6b\x8a\x42\x49\x8a\x19\xdc\x37\xc2\x5a\x55\xcb\x7c\xb0\x36\x6d\x10\x66\xe8\x26\xc2\x7a\xeb\x5a\x1b\xd7\x31\x01\x4d\x52\x92\xf4\x3c\x09\x24\xf0\x06\x40\xd3\x1c\x5b\x05\x11\xe0\x0e\x1a\x57\xf0\x12\x3f\x28\x51\x3c\xc8\xf1\x00\xfd\x60\x19\x06\x8d\x44\x8d\xc7\x70\xba\x88\x49\x8a\x81\x37\x04\x6b\xd0\x30\xe6\xa1\xd7\x55\x18\x04\x11\x06\x32\x07\x24\x03\x59\x40\x53\x14\x67\x21\x03\x54\x8b\xb5\x29\x0f\xb3\x30\xb4\xa2\x67\xc9\xf0\x89\x7a\x5b\x75\x37\xe7\x24\x85\x1e\x0f\xd5\xf1\x11\x08\x42\x38\x2e\x20\xc9\xb9\xc7\x0b\x08\x0f\x0e\x6c\x1a\xa6\x63\x7d\x83\x28\x82\x59\x59\x15\xff\xd1\x0b\x55\xa8\xc1\x85\x1b\xa4\xfa\x1a\x30\xf6\xf7\x0d\x98\xa3\x92\xe3\x30\x5e\xd4\x83\x47\x50\xc4\x3e\x5b\xc3\x03\x52\x20\xac\x3d\xac\x3d\x7d\x5d\x19\x30\x8d\x51\x74\x57\x63\xd9\xdd\x6c\x30\x7a\x1e\xc6\x6c\x54\x7b\x8b\xcb\x6c\x18\x56\x1a\xd3\x26\xe5\x64\x4d\x2c\x42\x38\x14\xb3\x21\xdc\xf3\x5c\xa1\xb4\xdf\xf2\x38\xc3\xb4\x6f\x94\xd6\x22\x40\x6f\x8a\x29\x1b\xe7\xc6\x62\xc4\x1e\x9b\x01\x31\xfb\xd4\xb8\x1a\xc0\xb1\xfb\x94\x5c\x9f\xad\x31\x4e\xa3\xcf\xdb\xfd\x2d\xfe\x72\xb4\x46\x51\xaf\x60\xc5\x51\x52\xb0\x93\xe2\x0c\xd3\x33\x94\xbd\x7b\x4b\xb2\x1e\xaf\xdc\x29\x7a\xe2\x72\x2a\x98\xe5\x71\xe0\xfd\x20\x22\x7d\x16\x4d\x32\x60\xb5\x91\x6e\x21\xdb\x00\xd0\x1a\xc4\x78\x5c\x89\x80\x89\x81\xba\xd2\xad\x2a\x4a\xf6\x0f\x14\xe5\x86\x19\x8c\xf1\xc6\x16\x03\xe1\xf0\x1d\xef\x4a\xe2\xb9\xae\xb1\xc6\x4d\x73\xbc\x8b\x8c\x8a\x8a\x96\x08\xb6\x25\x58\x23\x26\x3f\x92\x9a\xd6\x69\x4f\xa9\xdd\x4a\xed\x12\x94\x72\x2b\x86\x0b\x6e\xad\xc4\x32\x5c\xad\x2c\x4b\xb8\xc5\x3a\x90\x03\xa2\xd5\xb7\x75\x9a\xbb\x37\x25\xd0\x5f\x2e\x5e\x57\xfa\xe8\x68\x81\xe9\x2f\x17\xaf\xbf\xcd\xa3\xe8\x57\x8c\xd2\x5e\x7f\x00\xb5\x97\xdc\x89\x65\x6f\xa6\x03\x98\x14\x7f\x4e\x77\xd8\xe5\x77\xb2\x97\x4c\x97\x5c\x0a\xb4\xc0\xdc\x80\x34\x59\xaa\xc2\x3a\x28\x43\xa4\x16\xce\xf2\x28\x32\x31\x56\x57\xd4\x34\xa6\xd6\x4c\x4b\x7f\x9a\xf7\xfa\x6e\x45\xae\xd2\x11\xb8\x94\x58\xbc\x50\x4d\xc0\xf5\xbf\xc7\x97\x0f\x4c\x6a\xca\xe0\x7d\x51\xaa\x2b\x29\xc5\x64\xa8\x0b\x3d\x5c\x7f\xc2\x38\xa3\x28\xf6\x99\x56\x37\x6a\x5b\x39\xa9\x12\xab\x1b\x4e\xb5\x55\x6b\x98\x9d\xfb\x87\x0e\x59\x57\x3b\xcb\xa0\x00\x86\xb9\x29\x2a\xd6\xd4\xd2\x35\x0a\xd4\xf0\x0d\x4f\xe3\x79\x18\x87\x74\xdb\x3a\x93\x6e\x34\x22\x1d\x40\x3a\x02\xbf\xaa\xcb\x39\xa5\x63\x9f\x9a\xd9\x9d\xf0\x72\xce\xfa\xe0\xcd\xaf\xe6\xbe\x0f\xdd\xf8\x25\xdc\x9d\x9a\x5e\x56\xdb\xad\xe1\x4b\x5c\x0f\xd3\xea\x6d\xf0\x3e\x45\x93\x2f\x30\xfd\x81\xf8\x28\x7a\x38\x5b\xc8\x13\x16\xd4\x70\xf5\x5b\xbd\xb5\x6b\xd9\x07\x96\x41\x21\xa8\x8e\x05\xea\x81\x30\xf7\xcd\xa1\x75\x55\x56\x86\x3b\x34\x68\x2a\xc2\x51\x3e\x2a\x82\x1a\x7a\xa9\x28\x0a\x33\xf5\xdc\x6d\x2a\xad\x62\x8b\xd4\x43\xab\xfd\xd6\xde\x76\x32\xe2\x0e\x63\xa1\x6a\x71\x0d\xfe\xe5\xe2\x75\xcf\x22\x8e\x02\x15\xe3\x4a\x13\x6d\x5b\x51\x25\xf1\xb6\x72\xee\x86\x30\x8a\xa9\x36\x68\x45\x5b\x34\x4d\x5b\xc9\xb2\xc5\xda\x61\x1a\x0d\xe9\x68\x49\x1e\xa6\x69\x9b\xaf\x24\x44\xcc\x17\xd9\x74\x05\xdd\x64\x24\xca\x69\x75\xb9\x91\x15\x23\xf3\xb9\x74\x22\xdb\x22\x4b\xbc\xa0\x2d\xa8\x24\x5f\xd8\x82\x9e\x61\x40\x97\x5d\xa3\x56\xff\x64\x85\x5d\x41\x2b\xf9\xd2\xc4\x21\x30\x8f\x28\x49\x60\xa6\xff\x38\xd0\x83\x66\x95\xa5\x6b\xc6\xf3\x13\x91\x46\xc5\xd7\xd2\xc4\x57\xe7\x02\x77\x11\x07\xe6\x9c\x98\xb9\x56\x2e\x5b\x26\x67\xd8\xbc\x8a\x05\x4a\xcd\xc6\x35\x63\xd6\x73\xbd\xf8\xf0\x12\xe1\x39\x75\x0f\x2e\x12\x79\xb1\xd6\xc8\x8b\x0f\x05\x10\x1c\xd8\x66\x7b\x52\x70\xac\x5c\x29\x46\xfe\x6b\x68\xe1\xa7\x0f\x07\x70\x38\xe9\xc6\xc2\x6f\x6c\x1a\xfb\x6d\xf8\x1e\x07\xf6\x51\x4a\x57\xd1\x39\x2b\x66\x59\xbc\xd6\x9a\x75\x38\x53\x2d\x37\xca\xfc\x94\x44\xd1\x05\x49\x6c\xd1\x3c\x83\x85\x6a\x9d\x1f\xf0\xdc\x12\xde\xab\xd1\xaf\x2a\x29\xa6\x8f\x0d\xa8\x07\x86\x60\x74\x05\xb5\xb1\x29\x6b\xa6\x32\x84\x5b\x05\x3d\x74\xc8\x9c\x2e\xdb\xda\xca\x43\x39\x25\x16\x99\xd9\x15\x21\xc9\xa3\x68\xc8\x89\xa8\x25\x91\xb8\x86\xfc\x0a\xe5\x5d\xf0\xe9\x4b\xe1\x4d\x28\x1f\x39\x23\x53\x7e\x96\x59\xc2\x44\x4a\x57\x8e\x8a\x6f\x75\x63\x4a\x49\x72\xa4\x29\x4c\xbd\x00\x93\xdb\x91\x2e\xc4\x7a\x11\x4e\xed\x91\xc1\xb9\x33\xe6\xa4\xdb\xe4\x98\xd0\x70\xbe\x7d\xbd\x44\xf1\x62\x87\xe0\x6b\x6b\x58\xcc\xe7\x00\xdf\xf0\x88\x48\x53\x70\xac\x61\x78\x8b\xca\x41\x5f\x15\x2d\xfc\x80\x5e\xbf\x13\x73\xc2\x3b\xeb\x10\xb7\x50\x99\x9f\xe7\x34\x15\xee\x6d\x3d\x55\xaf\x98\x15\x9e\xd3\xb4\x31\xbe\xd5\x10\x03\x53\xcc\x0b\x34\xf5\xb8\x8f\x2d\xf4\xe4\xd2\xf1\x26\x58\x66\x6c\xdc\x05\xd9\xca\x42\x03\x87\xd0\x12\x25\x51\x55\x77\xcb\x3e\xfa\xcd\x36\xe7\x51\x1f\xd6\x2e\x74\x95\xe8\x91\x93\xc6\x68\x5e\x60\x89\x88\xac\x92\x76\xbf\xcc\xfe\x91\x55\x1b\xfc\xb4\xc6\x7a\x5d\x1c\x68\x4b\xb5\x06\x3f\xae\x99\xcc\x26\xbf\xae\xb1\x66\xa3\x9f\xd7\x82\xd3\xe1\xc0\xab\x4f\xa7\xdc\x87\x7f\x97\x38\x96\x5c\x13\x6e\xf3\x60\x03\xb2\x79\x5d\x66\xc2\x16\xcb\xe2\x75\x1f\x76\x49\x57\x11\x77\xe6\xbc\x63\x9a\x9e\x54\x87\x9a\xcd\x32\x8c\x30\xf4\x24\xb4\xe3\xea\x22\xfb\x01\x7c\x65\xeb\x35\x0c\xa6\xcc\x51\x62\x60\x97\xe0\xb3\x21\x6d\xb6\x17\x90\xcd\xde\x89\x07\x07\xf6\x74\xd7\x00\x6d\xb3\xb3\x30\xbe\x94\xd8\x0e\x0e\xfa\xf0\x39\x7c\x75\x0d\x07\xe0\x1d\x8f\xe9\xb2\x46\x9b\x7b\x7d\x46\x2e\x58\x95\x9b\x6f\x86\x0c\x36\xd0\x25\x46\x81\xa7\xb2\xa7\x7a\x8c\xca\x06\x21\x8b\xc5\xf5\x36\x39\x4b\xf1\x55\x17\x35\xca\xe5\x30\x9b\x38\x43\x38\x86\xe9\xa1\x4b\x72\x70\x30\x03\xef\x38\x4b\x50\xac\xe4\xc6\x53\x5b\x1a\x24\x27\x52\x5f\xce\x97\x24\xa5\x97\xe1\xc1\x81\x14\x19\x83\x70\xe2\xdd\x5d\x66\x02\x2a\xd0\xee\x22\x6b\x0b\x2a\x30\xa9\x6c\x31\x4a\xf5\x7c\x12\x6b\x58\xa6\x2e\x4c\x4e\x8c\xa3\x9e\xec\x79\xf5\x4a\x7e\x9e\xa6\x38\x56\x81\x36\xd5\xad\x2b\x42\x6f\xea\xe5\x6d\x45\x1d\x56\xb9\x56\xce\x6e\x85\x4b\x2b\x61\xbc\xb0\x30\xc2\xe3\x85\xbf\x4a\xc9\x69\xf9\x54\x5a\x1c\x91\xcd\x6e\xc4\xf6\x17\x4f\xcd\x11\xdd\xf1\x4e\x38\x72\x85\x1d\x0b\x6c\x67\x4a\xe0\x77\x46\x27\x85\xc3\x70\x4d\xeb\x48\x70\x1c\x58\x18\x2a\x42\x64\x16\xf8\xae\x18\x1e\x1c\x39\xe2\x69\x12\x8d\x8d\x93\xee\x78\x4a\x2e\xa6\x87\x2f\xdc\x8e\xb7\xdd\xe4\x78\xfd\xe2\x85\xca\x0a\xe8\x9b\x5e\x7e\xf9\xdc\x1e\x02\x68\xea\x9a\x1f\x0b\xba\x48\x6e\xdb\x09\xf8\xee\xa6\xf8\x08\xff\xd1\x9b\xf6\xbd\xfe\x88\xe2\xf7\xb4\xda\x27\x1b\xac\xdc\x25\xff\xc7\x4d\x1c\x30\x83\xc8\x88\xad\x12\xc0\x43\x38\x29\x5e\xab\x96\x57\x3d\x90\x95\x1d\x48\x53\x32\x64\xe3\xf4\xe1\xd7\x0d\x63\xb5\xf0\xc7\xb7\x30\x83\x37\x6f\xc5\x3a\xb8\x70\xa8\xb6\xd9\x69\x2c\xb4\xa2\x42\x75\x81\xd2\xe2\x2e\x54\xdf\x49\xb5\xaa\xa0\x2c\x4b\x65\xa5\xdd\x08\xd0\xb6\x63\x31\x18\x42\xaf\x8a\xe8\x0d\xda\xf2\x79\xb2\x6d\xe4\xfe\x1c\xbe\xb2\xac\xa2\xf7\x84\x89\x9e\x69\x56\x67\x7f\x5f\x4a\xed\x78\xa6\x59\x07\x9e\xaf\xc7\x0b\x1f\x97\x65\xdb\x82\x2b\x8d\x0a\x31\x61\x0a\x51\xce\xba\x5d\xea\x5b\x0f\x94\x17\x34\x2b\xb3\x52\x50\x7c\x32\x2b\x6c\x40\x49\xef\x89\x2a\x77\x2f\x6a\x0f\xbb\x52\x5b\x53\xab\x18\xbf\x2f\x0c\x6c\x31\xa9\x28\x5b\xce\xb6\x70\xc7\x3e\x45\x35\xbd\xdd\xcb\x87\xfa\x58\x03\x07\xf0\xec\xd0\x55\x9d\x63\x55\xb5\x0a\x64\x4e\xdf\xf0\xf2\xba\xfe\x2a\x25\x1b\xcb\x78\x1b\x65\x3f\xa2\xea\x86\x31\xe9\xf3\x58\xb8\x83\xe3\x92\x0c\xd7\x6c\xd6\xae\xce\xcc\x6c\x9b\x0a\xed\x9a\xbc\xa5\x32\x54\x69\xf5\x6e\xd5\x87\xfb\xab\x49\x9e\x2d\x7b\x29\x0f\x67\x56\xdf\xd7\xa7\x8e\x92\x53\x8b\xe7\xe7\x22\x5c\x1b\xaf\x8e\x85\x12\xde\xde\x5a\x89\x69\xaa\x39\x9b\x89\xaa\xfb\xfb\xf6\x49\x92\xc3\xca\xc0\xb1\xe8\x0c\xce\xe5\x2e\xc5\x0e\xf3\x3c\x81\x44\xb6\x58\xa2\xb6\x68\xd7\x40\xe0\x49\x23\x6b\x0f\xc0\x61\x0b\xa3\x27\xbb\x30\x1a\xe3\x8d\x8d\xd1\x96\xe6\x2c\xd5\x97\x69\xa1\xe6\x62\x6a\xdd\xb6\x0b\x76\xe4\xd3\x70\x6d\xdb\xc4\x64\x27\xc0\x4a\xc1\x01\x7c\xfd\xe5\xb3\x09\xfb\xf4\x99\x69\x36\xdd\xb0\x4e\x54\x14\x46\xeb\x3e\x82\x38\x31\x1c\xa7\x87\xc7\x9b\x92\x8d\x36\x9d\x0c\x8a\xe9\x24\xda\x32\x0f\xa0\x80\x0b\x9e\x98\x23\xd5\x6d\x86\xb4\x88\x6c\x1e\x19\x58\xad\x80\x75\x44\x75\xc2\x99\xde\x7b\x26\x2a\xb6\xed\x8c\xf0\x2a\xa1\xdb\x9e\x6b\x7a\x05\xe6\x34\xe6\x57\x6d\xe6\x64\x9f\xaf\x58\xdc\x20\x39\x89\xb3\x26\x74\x3a\x1d\xca\x8a\x78\xbc\xaa\xb7\xc6\x7d\x2e\xd6\xdc\xbd\xbe\xb1\xd3\xd1\xf4\x0f\xa5\x82\x5b\x3c\x0c\x83\x21\xd9\xe3\x6d\x5a\x23\xa8\x1a\xe1\x3f\xea\xa1\x18\xe5\x3f\x69\xe3\xaf\x1d\x5f\xdd\x57\xd0\xb1\x0f\x61\x7a\x3f\xe7\x45\x4d\x92\xef\xe7\xbe\xe8\x24\x1d\xc0\xf4\x3e\xfe\x89\x41\x50\x67\x0f\x45\xff\x65\xcb\xe7\x9d\x1e\x3a\x53\x78\xdd\x2e\xa3\x36\x8f\x3c\x81\x90\x7b\x5f\xbd\x9a\xbb\xe8\xb2\x16\x4f\x7a\xd2\xdf\x0f\xaf\xbb\xb0\x00\xe6\x10\x65\xf3\x07\x8b\xa9\xe0\xb1\x41\x4c\x29\xeb\x87\x24\xa5\xc9\x03\x74\xc4\x8c\x64\x64\x84\xc7\xb2\x4f\x63\xd1\xcb\x60\x0c\xd3\xc9\x00\xa6\x93\x3e\x7c\x01\xd3\x49\xdd\x36\xb0\x42\xaf\x89\x16\xe9\xeb\x34\xa9\xeb\xd2\xc1\x99\xbd\x1c\x32\x73\xaa\x7e\x3d\xef\x9b\x7d\x9e\xde\x6b\x5a\x49\x97\x5d\x27\xab\xac\x3d\x4b\xbd\x3a\x71\x5a\x8b\xdd\xb0\xdf\xab\xbf\x2a\xad\x92\x9e\x1c\x93\xcd\x83\x10\x74\xa7\xfe\xca\x49\x18\xd6\xf6\xb3\x19\xdd\x78\x38\x95\xfd\x78\xea\xec\xc7\xf6\xd0\x23\x03\xce\x95\x20\xe4\x96\x7a\x38\x65\x1d\x47\x7c\x9f\x4e\xf8\x0e\x7c\xe6\x2e\x96\xfb\xef\x6d\xa6\x9d\x17\x93\xd6\xb9\x2c\x59\x33\x05\xb6\xd9\xd9\x4b\xdd\x55\x28\xea\xca\x71\x5e\x69\xa9\x3d\xd4\x59\x88\xe6\xa0\x26\x9a\xba\xfc\x58\x17\x1a\x31\x09\xb4\x85\x38\xf9\xc2\x48\x5b\x8c\x93\xf2\xd3\x80\x2c\x3d\xb2\xda\xef\x46\xe5\x79\x52\xa0\x7d\x1f\x2e\x19\x16\x01\xa6\xd6\xc7\xd8\xc3\x51\x82\x98\x94\x7b\x7d\xeb\x56\x84\x86\xb8\x74\x2d\x43\xa2\xba\x07\xd9\xb9\x49\x43\xb4\xab\x7d\xdb\xa4\x6d\xc4\x78\xca\xfe\x31\xd1\xbb\xac\x6a\xa9\x6f\x6c\x66\x66\x9f\x98\x15\x80\x7f\x17\x80\x7f\x87\x63\x78\xc6\xfe\x35\x01\x2e\x48\x86\xc2\x3d\x1f\x51\x72\xce\x13\x0b\x5d\x2b\x77\x15\x82\x0a\x17\x93\x35\x84\x74\x2a\x51\xc0\xd3\x1f\xfc\x01\x1c\x0e\xc0\x9b\x78\x9a\x43\xe9\x86\x29\xf1\xeb\x27\x01\xe9\x9f\xba\xab\x6b\x12\x32\xb6\x8b\xa6\x63\xd2\xa1\xd9\x6e\x96\xbd\xa1\xb6\x76\xfb\xf2\x3f\xed\xf6\xa9\xda\xcd\xd2\xaf\xbb\x98\x20\xb9\xc6\xfa\xd1\x8d\xd0\x4a\xe0\xf9\x18\x66\xa8\x51\x33\x6d\x5a\xf9\xb7\x0e\xc3\x96\x5d\xe6\x77\x52\xc5\x5d\xd5\xd0\xa6\x82\x42\x7c\x77\x55\x42\x25\x9d\x83\x19\x3c\xed\x32\x45\x6e\xd4\xbd\xbb\x6a\x9a\x5c\x93\xff\xe8\x9a\x26\x17\xef\xff\xa3\x69\x77\xd3\x34\x21\xbe\x7f\x6b\x4d\xbb\x08\x57\xad\xe9\xe8\x7a\xaa\x4e\x3d\x44\x64\xd9\xc0\xc9\x75\x33\x5c\xe1\xd7\x2a\x57\xd6\x11\x07\xd1\xb4\x92\x39\x92\x97\x01\xa2\x88\x9f\x30\x34\x2c\xb2\x6c\xaf\xab\x5a\x69\xe8\xbd\x81\x63\xe4\x47\x24\xc3\x19\xed\x79\x56\x75\xe6\xea\x96\xe9\x2e\x97\x22\xca\xe5\x92\x59\x74\x9d\xe4\xd6\x48\x90\x75\xc3\x3f\x5f\x0c\xc3\x69\x48\xf8\xe6\xcb\x57\x67\x16\x8f\xd0\xa4\xc7\x35\xc9\xe7\x58\x4f\x66\x3c\x73\xa1\x04\xf8\xb6\x0a\xd0\x28\xce\x0f\x68\xe8\x2b\x82\xa7\x96\x63\x30\x8a\x29\x3b\x2f\xf3\x58\x80\x97\xe5\xf9\xbf\xcf\xad\xd5\xda\x6c\x0d\x54\xed\x8d\x68\x55\xc4\xf5\x6b\x46\xc9\x62\x11\xe1\xb7\x9c\x89\x6b\x35\xe9\x15\x3c\x35\x4e\xb5\x24\x5d\xaa\x93\xb1\x9f\x5a\x8f\x2d\xba\x9c\x25\x7d\x81\x0f\x06\x5a\xd5\x7a\x40\x4b\x65\x4e\x75\x03\x28\xfa\x7c\x13\xc0\x22\xa1\xaa\x1d\x60\x45\x81\xe7\x61\x44\x71\xda\xf3\x6c\x1d\x61\xc6\xa7\x26\x85\xcc\xd8\xaf\x7b\x00\x93\x2e\x46\x01\x4e\xfc\xbe\x07\x40\x39\x92\x14\x00\xc5\x6f\x87\xe1\xf1\xa3\xd0\x7f\xd7\x78\xbe\x44\xeb\x01\x08\x6d\x87\x1f\xb4\x6e\x19\x15\x76\x24\x55\xa7\x53\xe1\x91\xf8\xd1\x2f\xad\x08\x33\x49\x03\xa0\xc1\x00\xe8\xd2\x16\x1a\x11\x15\xe4\x46\x7b\x31\x31\x77\xf5\xe0\xc7\xb2\x6c\x98\x19\xcb\xfa\xae\xb1\xa9\x38\x84\x87\xd7\xba\x9c\x5c\x8f\x62\x12\xe0\x1f\xd1\x0a\x8f\x28\xf9\x81\x6c\x70\xfa\x1a\x65\xd8\xbd\xdc\x01\xc5\x71\x39\x74\xd9\x70\x56\x8e\x1d\x15\x1f\xdb\x18\xae\x26\xe8\x26\x16\x01\xa4\x05\x93\xfa\x88\xb5\x12\xb5\xff\xbe\x1a\xd1\x77\x7d\x1a\x0e\xeb\xa9\xd3\xc3\x54\xa3\x03\x35\xa2\x70\x8c\xdf\xd3\x8e\xa4\x33\x9d\x59\x07\xd5\x64\xa8\x6e\x0c\xf0\xd5\x67\xb4\xfe\x36\xf6\xf5\xbc\x86\x15\x09\x54\xbe\x85\x3a\xc2\xe0\x7a\x24\x8a\x75\x07\x9b\x51\x9c\x74\x01\x7a\x4e\x71\xd2\x0d\x6a\xa9\xde\x86\x46\x88\xac\x1d\x2e\xdd\xbe\xc2\xca\xff\x7d\x51\xcb\x34\x72\xd2\x1b\x5c\x7a\x19\xa6\xcc\x63\x12\x6c\x5e\xf7\xd8\xa3\x85\xf9\x88\xf9\x4e\x0c\x70\x47\xe5\x68\x4c\xee\x74\x7d\x3a\x68\x94\x7d\xb6\xd9\x11\x80\xec\x1a\x09\x8a\x5b\xb4\x4b\xb3\x25\xdc\x3e\xf0\x98\xb7\xdb\x38\xe8\x1f\x23\x41\x4f\x80\x28\xfc\x75\x63\x7d\x28\x8c\x03\xfc\x5e\x62\xe9\x20\x1f\x33\xd9\x2f\xd3\x16\x7e\xc4\x2a\x6f\x8b\xd8\x9a\xb2\xd6\xab\xe4\x57\x83\xef\x92\x0d\x3e\x88\xf4\x45\x00\xbe\x7e\x38\x55\x57\x9a\x8b\x15\x3a\x99\xac\xd4\x48\x75\x7b\x23\xe9\x3d\x8a\x6f\xab\x9a\x74\x69\x24\x23\x39\xdd\x91\x0b\xd9\xce\x50\x5b\x8a\x64\x57\x08\x3b\xe4\xb3\xdb\xaa\x77\x4f\x6b\x77\x39\xc9\x77\xaa\xbb\x53\x7a\xbb\xdb\x23\xbb\x23\x6e\x3d\xcd\xbd\x15\x42\xd7\xee\xa5\xef\xbd\x69\xb3\x59\xcd\xba\x69\x8e\xa8\xc3\xb6\x21\x75\x27\x6b\xd9\xc9\xc8\xd1\x60\x47\x13\x17\xa0\x6d\x77\x03\x27\x52\x01\x5b\x0c\x44\x87\xe1\xe7\x4e\xd9\xcc\x2e\x40\x77\xc8\xa6\xee\x22\x18\x12\x35\xb8\x85\xb6\xca\x92\xa1\xae\xb6\x48\x7d\x94\x1c\xa6\x1d\x87\x6d\x70\x2f\x77\xb9\x3e\x9d\x47\x01\x93\xa6\x1d\x10\xb4\x96\xd2\xcf\x3b\xd0\x84\x1c\xe3\xcd\xdd\x84\x0c\xd3\xc6\x18\x7a\xf5\xa3\x84\xdc\x61\xf0\x52\x1f\xc7\xba\x99\xeb\x73\x47\x19\xef\x80\xa0\x5d\xc6\x1f\x6d\xfc\xd3\x92\x86\x07\xcc\x08\xfc\x67\xd0\x71\x7f\x76\xf5\xe9\xee\xd1\x12\x67\x88\x2e\x47\xab\x30\xee\x1d\x7e\xcd\x9b\xa5\xdf\x90\xc9\xed\xa4\x63\x17\x67\x5d\x9d\xc5\xd0\xb9\xec\xc3\x8d\xac\x0d\xa3\x5f\xbd\xa2\x6b\x91\x49\x8f\x7c\x88\x30\x58\x76\x54\x8d\xb2\xc6\x7e\xca\x37\x6f\xd6\x56\xb9\x5b\x4e\x95\x92\x7e\xae\xd0\x72\x97\xf2\xdb\x12\xe7\x06\x8f\xec\x04\x58\xd6\xb8\xba\x91\xa0\x3a\x8b\xbb\x17\xed\x42\x86\x65\x01\xa4\x1b\x19\xaa\xd7\xb9\xbb\x63\x07\x32\x02\xfc\x51\x9b\x63\xd8\x9d\x80\x8f\xd9\x1c\x3b\x90\xf1\x31\x9b\xa3\x9d\x0c\x3d\x68\xdc\x4a\xc2\xce\x61\x7a\xb0\x44\xd9\xf9\xf7\x61\x43\xdc\x9c\x17\x38\xb0\x17\x70\xa8\x83\x25\x62\x5b\x65\x94\xf9\xf0\xe2\xf8\xc7\xa6\x25\x19\xb0\x67\x38\x69\x21\xf7\x13\x08\xc2\xf5\x51\x4c\x68\x4f\x5f\xec\x13\xff\xfa\x9e\x7d\x29\xaf\x1d\x6a\x1d\x96\xd7\xb7\x1e\xfe\x6b\x63\xab\x35\x7d\xe7\x8e\xf8\xef\xcf\x0a\x8f\xab\xef\xc0\x49\x87\x2c\x80\xbf\x8c\x17\x19\xd6\xdf\x81\x9b\x0e\x2b\xcd\x7f\x19\x37\xd2\xfd\xe9\xca\x0d\x8e\xb0\xcf\x2d\x76\x27\x1b\x41\x17\x95\xc0\x7f\x9d\x52\x1e\xee\x45\x51\x8e\x8d\xe9\xe7\xc2\x98\x7b\xda\x6d\xc9\xce\x99\x5e\x50\x5b\x31\xef\x6e\xbc\xc0\xcc\x65\x56\x36\xcc\x3d\x29\x60\x85\x05\x5f\x72\xd5\x4f\x31\x29\x9f\x1e\xf0\x87\x9f\xc3\xe1\x33\x87\xeb\xd3\x36\xeb\x28\x11\xf0\x55\x11\x0d\x43\xc3\x54\x88\xc3\x54\xe5\xc4\x7f\xfb\x0a\x24\x74\xf0\xbe\xc0\x6d\x87\x39\x68\x97\x5e\x4a\xff\x6c\x54\x5a\xe2\x91\x8f\xa2\x88\x37\x68\x27\xfd\x13\xd6\xe1\xaf\xd5\x40\xa7\x33\xf0\x71\x59\x17\xa6\xe4\x7f\x18\xeb\xca\xcf\x78\x30\xd6\xad\x6e\x7d\x40\x5e\xf9\xe2\x9c\x9f\x8f\xb9\xa6\x59\x3b\x36\xc5\x3a\xb3\x9e\x3e\xff\x6a\xa2\x4f\xc9\x9c\x5b\x6c\x05\xd7\xb2\x1d\xa4\xf1\xb8\x90\x8b\xa0\xe2\x4c\x63\x51\xc2\xb6\x0a\x9e\xae\x95\x89\x92\xb2\xbb\x14\xff\xaf\x47\x28\x49\xa2\x2d\x97\xdc\x00\x50\xba\xc8\x99\xfb\x58\x15\xa2\x6b\x46\xe7\x3c\x87\x03\xba\x4c\xed\xe4\x79\x87\xe9\xda\xbe\xe8\xcc\x84\xcf\xcf\xd3\xfe\x78\x8d\xa4\xa3\x1b\x8f\x99\xda\x52\x75\x03\xea\x9c\x44\x11\xd9\x84\xf1\x02\x7c\x12\x60\xd8\xa0\x0c\x28\x7a\x87\x63\x98\xa7\x64\xa5\x57\x92\x37\xa3\xfa\x11\xc9\x83\xd1\x22\xa4\xcb\xfc\x66\xe4\x93\xd5\x38\x20\x9b\x38\x22\x28\xc8\xc6\x41\xb8\x08\x29\x8a\xfe\x9e\x67\xcb\xf1\xef\x7f\xe4\x38\xdd\x8e\x56\x28\x7b\x87\x03\x7e\xe4\x8f\xe5\xd1\x70\x3a\x7a\xca\x6f\xcd\x95\x9f\x77\x78\xcb\xa0\x35\xca\x41\xa4\x3a\x44\x73\xd9\xcc\x03\x78\x07\x33\xc0\xa3\xcd\x32\xf4\x97\x83\xe2\x80\x6e\x67\x0f\x66\xaa\xfa\x0e\x66\x33\xf8\x1a\x6e\x6f\x81\x7f\x7b\xf6\xa5\xcd\x1a\x8c\xc7\x70\x83\xfc\x77\x59\x82\x7c\x0c\x28\x0e\x20\xc0\x11\xa6\x18\x7c\x24\x2e\xa2\xc5\xb0\x12\xe7\x5c\xd7\x0f\xce\x97\xd5\x29\x81\x1b\x0c\x29\xf6\x51\xe4\xe7\x11\xa2\x38\xa8\x95\xca\x30\x65\x1a\x45\x72\xda\x6b\x76\x73\x44\xe1\x68\xde\xf5\x64\xf0\x4e\xc6\xe1\x1d\xde\xf2\xab\x5f\x5b\xe5\xad\x89\xf8\xee\xd2\xfc\x96\x5f\x20\x4b\x32\x0c\x37\x29\xd9\x64\x38\xcd\x80\x43\x84\x4d\x18\x45\x20\x8f\xee\xb2\x55\x54\x64\x02\x89\xcb\x26\x19\x8b\xe6\xa8\x95\x6f\x3f\xb6\x5f\x3f\xc7\xdd\xa9\x26\x2a\x09\x4f\xa4\xc9\x8c\x58\x5f\x78\xbd\x44\xe9\x6b\x12\xe0\xde\x3b\x4b\xd9\x35\x8a\x60\xa6\x9d\xf2\xce\x43\xff\xf5\xcc\x43\x9e\x26\xe7\x5b\x92\x81\x50\xf6\xae\x70\xad\xd8\x8f\xcb\xf2\xeb\x5b\x92\x5d\x5b\xcc\x2d\x7b\x65\x93\xb4\x34\x36\x9d\xce\x22\x67\x30\x46\x38\x0e\x98\xbb\xb5\x46\x51\xc3\x95\x82\xed\x62\x2d\x88\x1a\x25\x88\x52\x9c\xc6\x23\x8a\x33\xca\x86\xb7\x51\x16\x85\x3e\x16\xc8\xf8\xd6\x8e\xbe\x35\xc6\x2d\x44\x58\x96\x9f\x0c\x34\x9a\x2c\x93\x71\x28\x77\x92\xf7\xda\xe4\xd7\xe7\xbb\xff\x19\x01\xfe\x12\xa5\xc8\xa7\xd8\x79\x94\x98\x6c\x24\xb3\xb0\xdd\xd7\x1b\x8f\x01\x05\x6b\x7e\xf3\x34\x27\xa0\x38\x80\x31\x41\x19\x85\x8c\x22\x1a\xfa\xae\x8a\xcc\x04\x5b\xdf\x19\x84\xdb\xb2\xcd\xeb\xfe\xa4\x5d\xaf\x60\xe7\x46\x06\xe3\xa2\x82\x35\xaa\xee\x3c\x55\x1f\xb7\x8a\x41\x9b\x13\x7e\x6f\x2d\xb1\xd2\x59\x6a\x8c\x5e\xdd\xed\xd1\x37\x33\xd0\xca\x44\x57\x39\x41\x97\xe6\xdc\x81\xa6\x16\x55\x68\xb9\xa5\xc0\x41\x83\x7d\x68\xf0\x6b\x27\x2f\x5a\x07\x86\x4e\x76\xb4\x66\x1b\x2d\x19\x6b\x9c\x42\x71\xbf\xc4\xdb\x8a\x62\x58\xd5\x80\x57\xb0\x9f\x72\x0d\xb5\x53\x92\xcd\x19\xab\x70\xe1\x5c\x95\xda\x42\xf4\x2e\x0f\x51\x5b\xd1\x63\xfc\xee\xef\xf3\xbe\x46\xd3\x70\x65\xcf\x86\xbb\x13\x85\xa5\xa8\xcc\x7b\x00\xac\x97\x30\x71\x72\x0a\xa1\xd7\xaf\xba\x75\x69\x4b\x15\x49\xd3\x39\xf8\x0d\xa7\x57\xab\xcf\x78\x0c\x22\xd9\x91\xb9\x4c\x7c\x46\xb0\x59\x62\x71\x15\x91\xd0\x9e\x30\x73\xd5\xc3\x29\xca\x2c\x4e\x13\xec\xb2\x9c\x62\xa6\x5b\xd6\xaf\xf6\x80\x2e\xa7\x01\x36\x3b\x5d\xd5\xfb\xc9\xce\x88\x79\x37\x53\x10\xd6\x06\x1b\x7e\xa4\x65\xfd\x31\x40\xfd\xd6\x20\xb1\xaa\x85\xde\xd7\x2e\xc7\xd4\x16\xbc\x2c\x9c\x1f\x0e\x2a\x90\x0e\x80\x21\xbc\xfb\x31\x05\x22\x76\x5b\x84\xcf\x54\xd2\x6d\x05\xb5\xb1\x9f\xd5\x83\x83\x96\xdc\x3f\x79\x50\x43\x3d\x8e\x66\xcc\x61\x71\x46\x53\xb2\x6d\x3d\x06\xb6\xc3\xc5\x5e\xee\xb2\x4d\xb7\xa1\xe9\x72\x11\xfb\x93\x9b\x6f\x67\x12\x65\xde\x14\xb7\xef\x94\x91\xc3\xe6\x4b\xd0\x3b\x56\x34\x76\x4a\x14\xf7\x20\x19\x1a\x57\x95\x8f\x1c\x5c\xc4\x34\x96\x57\x19\xa5\x58\x5c\x4f\x27\x7e\xfe\x2c\x7e\xa5\x03\x0d\xca\x0a\x51\xdf\xea\x27\x70\x8f\x15\xd3\x25\x09\x58\xe3\x0d\x20\x49\x49\x82\x53\xba\x1d\x40\xba\x1e\x40\x84\xd9\xd4\x9d\x57\x56\x77\x7d\x39\xfc\x12\xea\x8b\x04\x11\x6f\x95\x79\xf6\x95\x64\x01\xcb\x92\x12\xa0\x50\xca\xdb\x24\x44\xfc\xb2\x4c\x09\xbf\xe4\xc0\xaf\x47\xaa\x98\x9d\x82\x12\x08\x23\x82\x07\xe1\xa6\x87\xd6\xb3\xc0\xb9\x0c\xd7\x0c\x59\xd7\x98\x27\x2b\x2d\x72\x5f\x78\x3d\x57\xb8\xb0\x18\x34\xd2\x35\xcf\xdb\x9b\x1e\xca\x0a\xe9\xda\x11\x64\x34\x4e\xdd\xd1\xe9\x17\xcb\x50\x0d\x0c\x70\xa3\x53\x59\xf1\x93\x21\x59\xa9\x1f\xf6\xad\x1b\x05\x9d\xaa\x54\x6d\xc7\x08\xb4\x79\x4c\xa5\xb6\xf0\x8b\xa1\x45\x4e\xad\xbb\x71\x4a\x71\x5f\x96\x35\xaf\xbb\x9f\x16\xac\xa3\x9b\x09\x84\x2a\x8d\xca\x2b\xe5\x7b\x60\x53\x2c\x77\xf5\x5f\x31\x4a\xcd\xda\xcf\x27\x13\x18\xc2\xe1\x64\x62\x09\x1e\x4b\x59\xa9\xbd\x18\xe9\xda\xd8\x73\x11\xe1\xd8\xb6\xeb\xc2\x75\x60\x74\x71\x98\xb1\xde\xc9\xb3\xfa\x71\xc8\x62\x2a\x49\x79\x20\x44\xef\x96\x7a\x67\xe5\xf1\xc6\x81\x00\x19\xc0\x0c\xfe\xfc\x60\x99\x5c\xaa\xce\x09\x36\xc7\x0c\xbf\xc7\x3e\xc7\xde\x77\x6d\xba\xb2\xdc\x09\xc2\xb7\xc2\x85\xbc\x33\xf3\x4d\x75\x86\x7d\x70\xed\xaf\xd3\x7a\xb9\x20\x44\x3e\x08\x71\xf6\xf7\xed\x69\x1c\xe0\xf7\x97\xe1\xb5\xbd\x0d\x1f\xab\xba\x76\xc3\xe2\x93\x98\x86\xb1\xcd\x19\x50\xa1\x5d\x4e\xa0\x13\xfc\xf8\x5f\x57\xc1\xc1\x93\x71\xe1\xa4\xe6\xd8\x22\x0c\x1d\x5c\x11\x29\x96\xf2\xb7\x06\x89\x45\xa3\x5c\x2a\xd2\xaf\xd5\x7a\x43\xd3\xa0\xad\x9b\xf6\xdf\xe6\x61\x1c\x66\xcb\xb7\x28\xcd\xc2\x78\x21\x4e\x2c\xe2\x20\x1d\x7a\x65\xf8\x35\xba\x6e\x85\xb6\xa3\xc2\x3b\xf8\xf2\xb6\xed\x93\xe5\xec\xa3\xad\xb9\x4b\xcf\x93\x4f\xe1\xc3\x6b\x3e\x6d\x3d\xe9\x30\x6b\x1d\x8f\xe1\x74\x5e\x04\xe5\x60\x89\x32\xc0\x71\x80\x03\xf6\x28\x86\xdf\xf3\x55\x02\x94\xb8\x6a\xb2\x6a\x31\x7e\xdf\x61\x3a\xce\x58\xb7\x5b\x2b\xd7\x5d\xca\x5a\x9e\x5f\x8d\x31\x66\x5b\xda\x59\xab\x11\x60\xb7\x5b\x4d\x44\x74\x98\xef\xd5\x35\x47\x57\x07\xa9\x44\x8e\xb3\x7b\xb5\x54\x38\x8a\x07\x3c\x03\x21\x1b\xc8\xfd\x6d\xd9\x40\xee\x4b\xe3\x4f\xca\xcc\x31\x93\x4a\x3d\xd5\x3e\x18\x69\x99\xaa\x75\xd3\x54\x96\x11\xc7\x81\xc8\xaa\xcc\x08\xf3\xbd\xae\xfa\x5b\x8b\x61\xdb\xea\x95\xa6\xcf\xbf\xb2\xdc\x4e\x5e\xc2\x90\xc7\x10\xaa\x6c\xc9\xca\x8b\xfa\x7d\xd2\xbc\xad\x1d\xb9\x95\x72\x2d\xa4\x84\xa1\xee\x81\xae\xc0\x10\xe7\x7c\xe8\x05\xf9\x50\x6d\xd9\x6a\xa0\x36\xe3\x1b\x84\xc9\x67\xf5\xd2\x6a\x43\xb5\x5e\x5a\x2e\x41\x59\x61\x97\x4d\x55\x41\xa0\xbd\xb0\xdf\xee\x2e\x0b\x4b\x77\xca\xba\x6d\xda\xe4\x51\x96\x6c\x0b\x2e\xca\xd2\xca\xcd\x71\x19\x90\x71\xb2\x1a\x87\xc2\x2e\x57\x6b\x34\x39\x46\x82\x26\x6d\xb3\x29\x23\x50\x3e\x6d\x5a\x76\x6e\x74\x7b\x14\x1c\xf1\xdf\xe1\xcf\xb5\xdb\x76\xcb\x61\xb5\x3b\x75\x36\x97\xf5\x67\x13\x8f\x30\x92\xce\x73\xdb\x96\x7e\xe9\x57\x14\x93\x15\xed\x6b\xc6\x4f\x04\x1d\xa8\x28\xf6\xe5\xb5\x99\x58\x9a\x95\x57\x41\x08\x47\xa2\x70\x4d\xca\x71\x9c\x3b\x22\x03\x31\x6c\x0c\x20\xe1\x96\xce\x7e\x52\xba\xf2\x4c\xe6\xa6\xcb\xaf\x79\x25\x96\xc6\x28\x2f\x4b\x52\x03\xfb\xc4\x31\xb0\x97\x25\xc3\xd8\x3a\xb5\x70\x2a\x91\x2b\xb8\x67\xf3\x59\x5c\xd3\x96\x72\x77\x79\xc3\xd4\xc5\x60\x28\x13\xa7\x94\x7a\x57\x57\xd9\x17\xea\x34\xf8\x26\xb0\x0b\xac\xfc\x38\x57\x7e\x2d\x5f\x5b\x86\x03\x10\x20\x1d\x53\x1c\x11\xc2\x65\x98\xdd\x21\x52\x19\xe1\x3d\xe2\xe7\xd9\xfe\x8c\x17\xdf\xbc\x4f\x7a\xf7\x27\xaf\x20\xb1\x21\x7d\x59\xc9\xee\xa8\xb3\x94\xdd\xb0\x78\x30\x99\x5f\x93\xe3\x2e\x83\xe3\x80\x97\xe0\x51\xf8\x42\x23\xc5\xb8\x6e\xad\x54\x5d\x9f\x03\xeb\x54\xa6\xc1\xb2\x54\xdb\x1f\x67\x3e\x4a\xb0\x14\x72\x79\x95\xf1\x03\xb7\x9e\x0b\x8b\x5b\x32\xc5\x0a\xca\x91\x66\x39\xee\x2f\xeb\x83\x83\x84\xd8\xc3\x86\xdd\x24\x2b\x4c\x52\x46\x53\xb9\x72\x50\x6d\xb4\xf6\x30\xd9\x6f\xd2\xd8\xb1\x7f\xb6\xf8\x52\xe9\xb0\x4d\x6c\xaf\x8d\x19\x95\x3c\xf2\x59\xca\xb5\x1a\x51\xfb\x97\xea\xda\x5a\x9b\xff\x4e\xc2\xb8\x27\x4f\x3e\x63\xaf\x9f\x58\x03\x4b\xf5\xe9\x12\x1b\x74\xab\xcf\x1c\x83\x83\xfd\x3e\xfa\xb6\x51\x42\x5b\x99\x37\x09\xe2\x7e\x76\x98\xc1\x12\xc5\x41\x84\x33\xe1\x0f\xc9\xc8\x22\xdf\x75\x9f\x39\x43\x6e\x24\xee\x79\xbc\x88\x37\x30\xe2\x8b\xf0\x85\x37\x80\x27\xac\x0b\xbf\xdf\xca\x3b\xbc\x59\xa9\x81\x34\x0f\xcd\xf8\x69\xb8\xba\x13\x7e\xfd\xd0\x88\xeb\x2a\x7e\x95\x6d\x63\x27\xa1\x0a\x73\x45\xf2\x0c\x07\x64\x13\x57\xc1\x14\x09\x21\x76\x38\xc5\x6c\x82\x91\xcf\xdd\xc8\xfd\x7d\x28\x1e\x88\xdb\xb3\x9b\x13\x25\x0b\x8e\x46\x32\x83\x59\xc4\x18\x99\x78\x91\xef\x93\x34\x08\x49\x3c\x14\xaf\xbc\x41\x5b\xda\x14\x74\x49\x4e\xd1\x75\xe4\x09\x6f\x88\x19\x3c\xb1\xa5\x31\x19\x05\xc5\x96\x61\x56\x54\x36\xaf\x3c\x00\x21\x8f\x5c\xe3\x12\xbf\xe0\xe1\x7d\x82\xf8\xe4\x6f\xa6\x20\xa8\x68\x76\x58\x4b\x19\xd2\xeb\x71\xf0\x96\x5a\x3e\x89\x22\x94\x64\x58\xe4\x2d\x87\x71\xbf\x76\xbd\x81\xde\x32\x05\xf6\xfd\xfd\x82\x92\x96\x29\x5e\x41\x80\x44\xf4\x06\x51\x04\xb3\xb2\xb6\xc8\x79\x52\x6f\x5d\x2c\x40\xe1\xc1\x68\x50\xf6\xf7\x0d\xa8\x23\x9a\xa2\x58\x2c\x52\x87\xf1\xa2\x6f\x5d\xd6\xd7\x3f\x05\x09\x0a\x48\xcf\x5b\x86\x41\x23\x09\x42\x8a\x5a\x85\x6c\x49\x36\x4d\x15\x9e\xc8\xe4\x2a\x6d\x53\xb8\x50\x3d\x71\xe4\x25\xcf\x7a\x61\xbd\xf5\xd4\x27\x71\x71\xc7\x03\x7f\xca\x4c\x01\x7b\xda\x00\x9c\x97\xab\x5c\x40\x36\x12\xb9\x47\x8b\x94\xe4\xc9\x10\x05\x01\x89\xe1\x41\xf1\x5a\xd6\x69\x1b\xc7\x93\x2e\x57\xb4\x99\x0b\x0c\x24\x76\x0c\xdc\xde\x9c\xf8\x79\xe6\x1d\x55\xec\xc9\x92\x6c\xa4\x29\xb1\x8f\xab\xf2\x5e\xbc\x6a\x3d\xf1\xb4\xb9\xe6\x4d\x94\xa7\xd5\x7a\x4c\x45\x64\xad\x56\x51\x80\x2d\x31\x99\x0d\x9e\x8d\xb7\xd5\x75\x14\x07\xa7\x50\x26\x95\x55\x89\x94\x8f\x1b\xb9\x53\xf5\x79\xfa\x91\x05\x00\x7f\xee\xe2\xd4\xc5\xed\x2e\x8b\xf6\x1d\x5a\xbc\x43\xd3\xd5\x49\x18\x80\xba\x86\xef\xff\xab\xd6\x68\x62\xdb\xbe\x92\x60\x2e\xd0\x35\x0a\x40\xbb\x7f\x57\x73\x18\x5c\x1d\xd1\x46\x41\x93\xc3\x5f\x93\xf1\x9d\x30\x74\x89\x04\x56\x1d\x3f\x7d\x65\xb4\xc9\xfd\x2b\x2e\xff\x65\xd4\x55\x9d\xd8\x14\x67\xe1\x7f\xe3\x51\x65\x51\x53\xdd\xfc\x1a\x06\x15\x36\xf8\x62\xa4\xdb\xfb\x79\xdc\x66\x2e\x9f\xf4\x02\xe2\xf3\x0c\x5f\x1b\x35\x9c\xa2\xc2\xfb\xea\x4c\x94\x66\xd6\x3a\xa5\x57\x3a\xd6\xa3\x5b\xd7\xb1\x95\x93\x36\x9f\x37\xf8\xbd\xa5\xbf\xdb\xe4\x65\x1a\x20\x4c\xd7\xb5\xad\x9a\xee\x9d\x9a\x5e\xe9\xc3\xbb\xa3\x05\x99\xa6\x3f\xfa\xd0\xa3\xe6\x7c\xde\x36\x6c\x96\x7d\xa8\xc5\xd8\x6a\x46\xf6\xd3\x0c\x71\x4e\xda\xc1\xb4\xaa\x86\x35\xed\x64\x46\x0d\xf3\xf9\x91\x47\x31\x77\x0b\x74\x93\xec\x47\x1d\xb7\xfe\x52\x11\x7f\xaa\xa1\x49\xb7\x08\x85\xb6\xdf\x73\x30\xea\x0c\xf3\x2e\x46\xf3\x0e\xc3\x0f\xa3\xa7\x6d\xc0\xb9\xf7\xa8\x62\xd8\xc8\xce\x78\x1c\x4c\x17\x37\xbb\xb7\x9d\x78\x6a\x48\xde\x95\x9b\x23\xa6\xaf\x59\xed\xfe\x65\xf9\xdc\x36\x37\x17\xc9\x9c\x9c\x04\xfb\xa9\x84\xe0\x58\xdd\x95\x30\xdb\x96\x76\x15\xfd\x4f\x7a\xb2\x02\xbf\x39\xc3\xe7\xb7\x9a\xcb\xac\x69\x8f\x5f\xf5\x24\x6f\xae\x6f\x4e\xfd\x55\x74\xda\xd3\xf9\xd4\x67\xb7\x33\x12\x9c\x29\x1c\x12\x5d\xc7\xec\xc9\x2e\xe9\xf7\xe2\xdb\x07\x19\x44\x78\x32\x9a\x57\xf5\x87\x35\x41\xa1\x06\xc2\x9c\xf1\xc4\x0d\x5d\x2a\xfa\xba\x3f\x46\xfe\xb2\x61\x03\x89\x25\xe8\x62\xda\xad\x40\x04\x1c\xc4\x4c\x3c\xb0\xa6\x9f\x99\x15\xa4\x89\x2d\xaf\xd0\x14\x0f\xcc\xcb\x33\xf7\xf7\xe5\x63\x4b\x57\x63\x48\xac\x5d\xcc\x4d\xc2\x80\xdf\x02\x8e\xb4\xfb\xf1\x98\x6f\x21\x8c\x84\xcd\xc3\xa3\x7c\x77\xd0\x93\x11\x7e\x4f\x71\x1c\xf4\xfe\xfc\x30\xb0\x89\x7a\x14\x88\xdd\x52\xd9\x40\x31\xd5\xef\x37\x67\x49\xf2\x6e\x58\xe7\x3a\xe3\xc9\x3d\x5e\x9f\x0b\xf3\x52\xbc\xb9\xae\x24\x87\xab\x81\xb4\xa1\xe9\x0b\x7a\x60\xa6\x89\xa7\x18\xca\x8e\x84\x66\x95\xad\xa1\x9c\xae\x23\xde\x19\xcc\xe7\xe2\x08\xe5\xfa\x73\x7d\xcf\xaf\x15\x60\xb1\xf7\xda\xac\x5b\xdc\x23\xa6\xdd\x15\x5b\xbe\x95\x77\x7d\x95\x57\xaf\x96\xaf\x8a\x08\x9a\x04\xf8\xd9\x67\x92\x4b\x51\x61\x6f\x4f\x49\xc5\x25\x94\xd7\x24\xce\x68\x9a\xfb\x94\xb0\xbe\x61\xb6\xbd\xa8\xc5\xcf\xe3\x4a\x16\xa7\x41\x19\x71\x57\xb7\xe7\x73\xb5\xb7\x49\x5a\xbe\xfb\x53\x63\xa1\x7a\xfe\x49\x80\xb6\xd9\x11\x5c\xee\x9d\xe7\x71\x80\xb6\x7b\x03\xd8\x3b\x23\xea\xdb\x45\x8e\x33\xf9\xf5\x9f\x38\x88\x8b\x1f\x17\xcb\x3c\x15\xdf\x2b\x5a\xb9\xf7\x6d\x1a\xca\x32\xe7\x88\xe6\xa9\xfa\x2e\x60\x5f\x57\xfb\xe4\x56\xdc\xdf\x2c\xd1\x4b\xdc\x12\xb1\x44\x2a\xd1\xb1\x7f\xdf\xa6\xa1\x04\x2c\x61\xda\x00\x9e\x85\xb1\x00\x27\xa0\x09\x60\x02\x96\x00\x25\x20\x09\x40\x02\x4e\x15\xcc\x4a\x5e\x82\x7d\xb9\xf7\x3d\x8a\x73\x94\x72\x16\xbe\xc5\x37\xa9\xfa\x7e\x86\x52\x9f\xc3\x79\x95\xa4\x61\x24\x9e\xf0\x17\xdf\xe7\x31\xae\xcb\xe4\xfb\x3c\xe2\x6f\x5f\xe5\x8b\x3c\x13\xb4\xe3\x84\xe2\xd5\x0d\xe6\x64\xfc\xe4\x53\x22\xbf\xfe\x48\xd6\xc5\xe3\x37\xd8\x17\xdf\xad\xd4\x15\x72\xfb\x1e\xc5\x92\x3c\x49\x99\xa4\xcb\xa4\x4a\xfc\x8b\xea\xb4\xbd\xca\x17\x92\x20\x49\x8a\x24\x43\x52\xb0\x77\xed\x30\xe9\x4a\xf3\xaa\x2b\x8f\x86\xb2\x05\xc1\x11\xfc\xa9\x2d\x55\x7a\x72\x99\xdf\x1b\x40\xb9\x0a\x5a\xf1\x07\x8a\x14\xcc\xde\xe4\xe5\xe5\x74\xf8\xfc\xfa\xf6\x72\x3a\x3c\xbc\xbe\x9c\xb0\xaf\x4f\x2f\x27\xc3\xe9\x75\xff\xea\xea\xc6\x7b\x01\x1f\x98\x83\xa1\x50\x9d\x9d\xd5\x51\x89\x6c\xc8\x9d\x70\x4d\x2f\x27\xc3\x43\x2b\x82\xed\xb6\x8e\x80\xe7\x4b\x76\x82\x7f\x75\x15\xfc\x79\xf8\xc1\x0e\xd7\x06\x59\x65\x07\x75\x87\xfe\xcc\x0a\x7d\xb9\xac\xc3\xe6\xc9\x28\x9d\xc5\x32\x51\x62\x79\x7e\x7d\x7b\x78\x39\x19\x3e\xb5\x4a\x67\xb5\xb2\x88\x5f\x1e\x88\xb1\x13\xa6\xcb\xe9\xf0\x6f\xa2\xb1\x6d\x68\xb2\xac\x8e\x46\x5a\xf2\x87\x44\xb3\xb2\xa0\xd1\xd3\x82\xba\xe1\xe2\xe0\xff\x9c\x0e\x9e\x5a\x5b\xe6\xbb\xef\x2a\x38\x54\x72\xf6\x03\xe9\xeb\xdb\xb7\x15\xf8\x45\xf2\x74\x27\x04\xaf\xce\x6e\xdf\x9e\xdd\xa2\xd5\x6d\xb2\xba\x7d\xb5\xba\x45\x67\xb7\x6f\x57\xb7\xc9\x59\x89\xa9\x66\x0d\xde\xe1\x6d\xa6\xdd\x9b\x5b\x78\xd2\xef\xdc\x69\x26\xac\x8a\x58\xa4\x57\x21\x1e\xf6\xe4\x92\x3f\x2e\x37\x45\x5e\xf3\x8b\x17\x38\xe2\xa2\x8c\x4c\x09\x19\x15\xeb\x54\x0c\x53\x25\x5f\xc6\x5c\x73\xe6\xb5\xc4\xa2\xf2\xd5\xd5\xcd\xad\xd7\xef\xeb\xd0\x48\xa2\xa6\x0c\x25\x20\xb5\x61\xa0\x05\xce\x00\xbc\x45\x41\x46\x21\x4d\x23\x8f\xa0\x92\xc7\x5c\xee\x34\xcf\x28\xf2\xdf\x91\x35\x4e\xe7\x11\xd9\xf0\xad\xe6\x7f\xe4\x38\xe3\x3e\xda\xf8\xe9\xb3\x67\x5f\x4e\xbf\x9a\x8c\x05\xa4\xa1\x70\xbe\x86\x73\x92\x0e\xf3\x0c\x0f\xc3\x78\xf8\x3b\x5a\xa3\xcc\x4f\xc3\x84\x0e\x53\xbc\xc0\xef\xab\x7e\x73\x46\xd3\x62\x0b\xc4\xf8\xf2\x6a\x78\x75\x79\x75\x7d\x35\xbe\xfa\xf3\xea\xc3\x55\xef\xaa\x7f\xf5\xc5\xd5\xc1\xd5\xcb\xab\xd1\xd5\xd5\xd5\xbf\xae\x9e\x5c\xdd\x5e\x8f\x17\x03\xd8\xbb\xba\x7a\xb2\xbf\xa7\x5c\xb8\x0a\x4b\x2a\xd1\x3b\x1b\x40\x34\x00\x5f\xe7\x88\x39\x8c\x11\x1c\x43\x56\x2c\x03\x2a\x1a\x4a\xcf\x50\xcf\xaf\x7f\x95\xa6\x68\xdb\x8b\x60\x58\xd4\xe0\x27\x83\x09\xb9\xfa\x7c\x63\x31\xf0\xa5\xff\xcc\x4e\xca\x02\xd3\x0b\xbc\x4a\x22\x44\x71\x4f\x2d\x60\x0d\x20\x4f\xc4\x7f\x36\x5d\x15\xdf\x94\xeb\x38\x28\x9c\xc5\x41\x71\x0f\x45\x36\xd0\x0f\xe1\x19\x14\x1e\x5c\x95\x2f\x3d\xe6\xe7\x0a\xf7\x49\xb6\x6a\x31\xe1\xe3\x20\x5c\xab\x0b\x4b\x6e\x08\xa1\x19\x4d\x51\x32\x34\x9d\xb4\xa1\x08\x11\x42\x90\x92\x84\x51\x3e\x5c\xe1\x38\xdf\x83\x8c\x6e\x23\x3c\xdb\xfb\xef\x21\x3f\x3e\xfa\xe8\xf9\xf3\xe7\xcf\xe1\x71\xb8\x4a\x48\x4a\x51\x4c\x5f\xf0\x8b\x4f\x6a\x53\x02\xef\x38\x8f\x14\xbe\x28\xcc\xe8\x30\x8f\x39\x9c\xc0\x5e\x9c\x55\x88\x42\x7e\xd3\x9d\xe2\x9e\x5f\x3e\x27\x21\x14\xcf\xc2\x78\x4f\xbb\x87\xce\x01\xaa\xc2\x6e\x19\xcc\x75\xe1\x66\x9f\x62\xef\x14\x95\xcd\xe9\x04\x3d\x0e\xc2\xb5\x93\x89\x71\x14\x36\x30\xa8\x48\x52\x47\x1b\x89\x63\xf7\xab\x69\x00\x7b\x27\xc7\xa8\x68\x2b\x1a\x17\x2d\xb0\x09\x03\xba\x3c\x9a\x4e\x26\x9f\xef\x9d\x18\xb7\x04\xf2\x10\x88\xb6\x7a\xba\x77\x22\xef\xe4\x3b\x1e\xa3\x93\x16\x92\x5a\x65\xbe\xbb\xc0\x4b\x8d\x6a\x12\xf8\x85\x76\xab\x7f\xd1\x85\x5c\x5d\xa2\xda\xa1\xfa\x0f\xdb\x3a\xde\xf1\x38\x8f\x2c\x6f\x14\x38\xe3\xb1\x3e\xc7\xd4\xf6\x07\x7d\xb2\x0e\xe9\xe0\x60\xa7\x06\x78\x70\xe1\x3b\x05\xdf\x51\x84\x7f\xbd\xd0\xda\xcd\x44\x17\x13\x71\x77\x39\x58\x87\x97\xf2\xda\xeb\x5a\x30\x4a\x05\x66\x7a\xfc\xd0\xe9\x5f\x2e\x5e\xcb\x43\x77\xc4\x28\x53\x1e\xba\x63\x8e\xa1\xcc\xa9\x50\x7c\x98\x51\x0f\x12\x60\x36\xd3\xd4\xe8\xab\x46\x8c\xe4\x06\xd2\x23\xf0\xd8\xf4\xd6\xab\xce\xe0\xc4\xb5\x0d\xc6\x84\xa7\x5e\xe2\x9c\xe2\xe4\x08\xa6\xda\x0b\xcd\x53\x34\x11\x96\xe8\xe4\xf5\xd8\x26\x38\x1d\x5d\x39\x49\xa9\x16\xa9\xe2\xeb\x80\x4d\xdc\x0c\x7b\x0f\x64\x93\x12\x9b\x36\x63\x0e\xb3\x1f\x30\x4a\x58\x45\xdd\xd5\xb5\xdd\xa6\xab\xb4\x5f\xde\xd1\xfa\x39\x3c\x53\xdb\x1b\xf7\xf7\x41\x3d\x9b\x4e\x26\xf2\xf2\x01\xed\x32\xe5\xcf\xe1\xd9\x64\x22\x0b\x9b\x89\xe8\xea\xeb\x02\xd3\x37\x68\x9b\x9d\xc6\xbc\x85\xaa\x94\xc8\x84\x77\x07\x41\x97\x4f\xa7\x03\xe8\x15\xbd\xa0\x64\x48\x72\xf1\x12\x0e\x9f\xc3\x11\x1c\x7e\xdd\x1f\x00\x2b\xfa\x74\x52\xf9\x5f\x7b\x76\x7d\xc9\xf1\x5d\x5b\x49\x5d\x62\x14\x28\xdb\xa4\x1f\x2c\xef\x1d\x53\xf6\xaa\xd6\xc7\xc4\xc5\x70\x96\x8e\x47\x97\xc5\xb8\x9b\xe2\xf5\xde\xc9\x7e\x94\xa1\x3f\x72\xf2\xe2\x78\x4c\x97\xce\x0a\x24\x62\x23\xe8\x6c\xef\x6f\x7b\xc5\x3d\x6f\x7c\xb4\x66\x63\x6b\x43\x35\x51\x34\xc6\xef\xe9\xde\xc9\x7e\xda\x80\x47\xde\xdf\x66\x3c\x65\xcf\x04\x6b\x7a\x38\x2f\x2e\x2c\xf4\x11\x43\x72\x43\x82\xed\x09\x63\x95\x5f\x41\xa7\xc8\xfc\x8a\xd3\x15\x9c\x70\xa8\xc7\x63\x51\xca\xd3\x43\x7d\x75\xeb\x35\x7b\xa4\xd0\x5a\xcd\x20\xbf\x2b\xdf\xb4\x85\xde\xb1\xb8\x74\x4d\x8d\x33\xec\xc7\x90\x8d\x12\x38\xce\xea\xae\x5d\x81\x51\x6f\xc9\x0a\xc3\x92\x1d\x45\xb0\x81\x6b\xcc\xe1\x6b\x0f\x6b\xc6\xd5\x45\xb9\x30\x18\x1f\x97\xf6\xa2\x84\xde\x42\x0f\x44\x3f\x37\x41\xff\x63\xc9\x2f\xa7\xa7\x17\xb6\x91\x64\x49\xf2\x54\xd7\x58\xee\xa9\xea\xd7\xbf\xed\x15\x47\xc1\xee\x81\xed\x16\x31\x7e\x7d\x6c\xb6\x57\xf7\x66\x86\xe2\x5e\x59\x75\xe1\xb4\x16\x26\xe1\x01\x9e\x76\xa4\x32\x10\xe4\x40\xbb\x52\x6f\xeb\x88\xd5\x6d\xa2\x75\xd4\x22\x10\xd3\x8e\x5a\x7a\x53\x0e\xd4\x99\x7a\x5b\x47\xad\xae\x97\x54\xa8\xf5\x3e\x6d\x73\xe3\x8c\xf5\xac\xee\x2e\x5d\xcd\xbf\xe8\x69\xaa\x60\xf5\x2d\x87\x76\x6f\xa9\x45\x51\xab\x76\xb0\x24\x51\xdc\x36\xce\xa4\xc3\x9a\x79\x28\x42\x1f\xb3\xbd\xe9\x61\x39\x03\x31\x2d\xe8\x0e\x23\x40\xc0\xa6\x54\xcb\x14\xcf\x67\x7b\xff\x6b\xcf\x98\x5b\x19\x0d\x65\x9e\xc0\x6e\x99\x65\x09\xb9\x59\xe6\x58\xb4\x3e\x1e\x41\xe5\x96\xd0\x04\xa5\x88\x92\x74\xaf\xa9\xf4\x8e\x64\x2a\x7d\xbe\x2f\xa1\x3d\x4d\x39\xe0\xe5\xa7\xe6\x42\x75\x8d\x5d\xb9\xb0\x29\x45\x55\xa1\x1a\x69\xb7\x6a\x95\x65\x5c\x6e\xd6\x2c\x46\x68\xd1\x11\x75\xe3\x57\x5c\xfd\x0a\x9d\x55\xe3\xa8\x49\xaa\x06\x22\xd3\xe4\x35\xa1\xba\x4b\xe3\x76\xa7\xc3\xb4\x7f\xe5\x6d\xb7\x1d\x5a\xe7\xfe\x7a\x66\x7b\x7c\x93\x53\x4a\x62\xbe\x56\x3e\xdb\x13\x3f\x74\x25\x84\x1b\x1a\x0f\x93\x34\x5c\xa1\x74\x5b\x51\x48\xfd\x84\x79\x86\x57\x54\xb6\xcf\xe5\x1e\x50\x7f\x3a\x75\x16\xf3\x32\x02\x4b\x57\x51\x96\xfc\xaf\xb6\x4d\xd5\x4b\x0b\x1e\x80\xd4\xbf\xc4\x3a\x55\x6f\x3d\xb8\x03\x1f\x9f\xcc\x3e\x59\x7c\x35\x6b\x24\xc2\x35\x90\x2f\x35\x5f\xac\xf0\x59\x8a\x83\xd4\x77\x1c\xe0\x1f\x98\xb6\x95\xe1\xb2\x99\xd4\x9d\x95\x77\xbc\x7f\x74\xfa\x1c\x4a\xe8\x22\x3b\x33\xdc\x3d\x93\xec\xf3\xf2\xc2\xf0\x8f\x44\x36\x57\x9c\xe2\x71\x99\x08\xf3\xa1\x2f\x13\xf7\x46\xbf\xff\xdf\x1c\xa7\xdb\xfe\xa3\xff\x17\x00\x00\xff\xff\x89\xc3\xbd\x0c\xc1\xcf\x00\x00") func webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerJsBytes() ([]byte, error) { return bindataRead( @@ -618,12 +619,12 @@ func webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs() (*asset return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js", size: 53185, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js", size: 53185, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x58\xeb\x6e\xdb\x36\x14\xfe\x9f\xa7\x60\x1a\x14\x6d\x8a\x92\x96\x95\xd8\xce\x64\x2c\x18\x86\xed\x29\x86\xfe\xa0\xc4\x63\x8b\x08\x45\x0a\x24\x15\x3b\x15\xf2\xee\x23\x75\x89\x65\xc7\x89\x29\xaf\xed\x12\x20\x8e\x8e\x78\xee\xdf\xb9\xd0\x93\x2f\x97\x17\xe8\x0b\xfa\x8b\x5a\xb0\xbc\x80\x92\x67\x0f\xa0\xd1\x4a\x69\xf4\xa7\x52\xd6\x58\x4d\x4b\xf4\x78\x73\x31\x99\x5c\xa2\x47\xd0\x86\x2b\x89\x12\x74\x43\xa6\xe4\xc6\xb3\xe5\xd6\x96\x26\x99\x4c\xd6\xdc\xe6\x55\x4a\x32\x55\x4c\xfe\x56\x92\x1a\x46\xe5\x24\xed\xf9\x31\xdb\x13\x3e\x71\x8c\x13\xf2\xd6\x5b\xbc\xe1\x6c\x0d\xb6\xb6\xaa\x4c\xa2\xa5\x80\x95\x75\x1f\x8e\x66\xf3\x24\x9e\x45\xe5\x76\x59\x52\xc6\xb8\x5c\x27\xb7\xee\xff\x82\xea\x35\x97\xd8\x9f\x9d\xba\xc7\xef\x98\x4b\x06\xdb\xe4\x37\xff\x73\xc9\x8b\x52\x69\x4b\xa5\x5d\xa6\x4a\x33\x27\x59\x53\xc6\x2b\xe3\x19\x9f\x4f\xa9\x27\x03\x8a\x49\x4d\xdd\x1a\x30\x8f\xa2\x10\xde\x54\x59\xab\x8a\x24\x05\x17\x45\xa8\x33\x25\x2d\x48\x9b\x7c\xfa\xb4\x64\xdc\x94\x82\x3e\x25\x5c\x0a\x2e\x01\xa7\x42\x65\x0f\xbd\x71\x8d\xa7\x8b\x72\x8b\x8c\x12\x9c\x21\x27\x5e\x9a\x92\x6a\x18\x98\xcf\xd7\xf9\x89\x23\x9d\xe6\xdd\x99\xab\x2c\xcb\xf6\x5f\xe2\x4c\x09\xa5\x13\xbd\x4e\xe9\xe7\xe8\xab\xff\x25\xf1\xf5\xb2\x54\x86\x5b\x97\xdb\x84\xa6\x8e\xb1\xb2\xb0\xf4\x31\xc5\x4e\xd0\xb2\x37\x2c\xd8\x6f\xba\xb2\xa0\x47\xb9\x3d\x3f\xed\xf6\xbb\x47\x3a\xc5\xbb\x33\x57\xab\xd5\xea\x2d\x9f\xe6\xbd\x4f\x77\x41\x38\x70\x2c\xff\x43\x22\xbd\xda\xe3\x59\x74\x6f\x42\x53\xd8\x85\x65\x97\xc5\x79\xa8\xc7\xbf\x3e\x85\x5e\xeb\xc9\xfc\xf5\x0e\xcd\xc7\xc0\x12\x11\xa6\x36\x5d\x01\x4f\x6f\x49\x7c\x37\x5b\x7c\x3c\x1d\x85\xb2\x12\xa2\xb3\xbb\x4b\x7f\xa3\x90\x56\x56\x2d\x5f\xdc\x19\x25\xa6\x8d\xe9\xa1\x94\x10\x0f\xee\x2b\x51\x0b\x6e\x2c\x36\xf6\x49\x00\xb6\x4f\x25\x24\x52\x49\xe8\xda\x5f\x12\x9d\x8e\x01\xfd\xc7\xd1\x29\xa6\x99\x0f\xe8\xb7\xba\xef\xa1\x3e\xe2\xa3\xb9\x13\xff\xf9\x08\x75\xaa\xb6\xd8\xe4\xd4\x45\xb7\xb1\x26\x20\x11\x03\x52\xae\x2a\xfd\x75\x14\x47\xc1\xa5\xc3\xc0\x38\x1e\x03\x0e\xc3\xac\x4b\xfe\xcc\x4f\x8c\x95\xc3\x34\xde\x40\x1b\xfb\x28\x6a\x9f\x0d\xff\x0e\xc9\x94\xc4\x50\x8c\x08\x69\x5a\x39\x30\xca\x37\xe3\x7a\x5a\x80\xa5\xa9\x80\x96\xdf\x47\x03\x3b\x94\x15\xd4\xfe\xfe\x61\x1a\x7f\xf8\x86\x88\x01\x57\x20\xd4\x2a\xdd\x59\x7f\x3b\x18\x7d\xd1\x08\x33\x89\x27\xb7\xa4\x7b\xc6\x1f\xeb\xbe\x92\x03\x53\xd6\x07\x72\xc3\x6d\x96\xd7\x16\xb6\x16\x53\xc1\xd7\x32\xc9\x5c\xf1\x82\x0e\xf4\xb2\x2f\xbf\x28\xfa\x38\xc2\x74\xcb\x4e\x67\xdb\x1e\x31\xea\x8c\x79\xef\x74\xd5\x79\x8b\x8a\x06\x26\x4d\x97\x1b\x12\x76\x10\x0a\x91\x45\xb2\x4d\x3d\x40\x96\x5f\x5b\x3a\x61\x71\x74\x20\xbd\x21\xb4\x0d\xfd\x6a\xb1\x58\x04\x49\x67\xf4\xa9\x7e\x57\x5e\xb7\x2f\x85\x6c\x2b\x9d\xbc\x24\x57\x6e\xbd\x0b\x88\x37\x23\x1e\xac\x23\x8e\xb7\x75\x3b\x82\xa1\x2d\xda\x96\xa1\x4e\x69\xf6\xb0\xd6\xaa\x72\x84\x2b\x00\x58\x66\x95\x36\x2e\x54\xa5\xe2\x81\xf0\x63\x44\x89\x10\x1c\x31\x22\x61\x53\x8f\x4c\x84\x55\x3e\x15\x2f\x83\x4a\x83\xa0\xbe\x35\x86\xf3\xfe\xf0\xdd\xe2\xf5\x06\x78\x1b\xdf\xa5\x19\x3d\x7f\x7d\xf0\xe8\x6f\x67\x55\x28\xf8\xdb\xf9\x10\x14\xf3\xf6\xe8\xab\x5c\x77\x26\xf6\xb6\x77\x4f\x7e\x29\x68\x8a\xbd\x9b\x3a\x11\xc2\x53\x3f\xc0\xd0\x9e\x2b\xb3\xeb\x11\x46\xee\x67\xe1\xd8\xa2\xec\xb5\x86\x15\x11\x37\xbe\xd5\x85\x61\xad\x3f\xfc\x1a\xe5\x11\x8a\x06\xed\xa0\xc7\xbb\x54\xbe\xc5\x09\xb5\x01\x16\x62\x0c\x72\xa8\x90\xf5\x51\x24\x0d\x66\xe1\xbb\x0d\xaf\x6b\xd3\xb1\x0b\xf0\x94\xcc\x7c\x8f\xda\xab\xbc\xf3\x7a\x6c\x63\xd7\xf1\xca\x0e\x66\x27\xfd\xfa\xf1\x0b\xd1\xd2\x2a\x76\x8d\x64\x64\x83\x68\xf9\xc6\x20\x63\x9f\xe3\xe7\xc0\x23\xff\x81\xc3\x23\x3f\xd8\x10\xfa\x3d\x7b\x16\xc8\x2d\x5d\x86\x42\xa6\x3c\x29\x35\x3c\x0e\x66\x6a\x3c\x0d\x54\x30\x22\xf8\xf9\xcf\x8e\x3b\x50\xdf\xb3\x93\x15\xd7\x6e\x99\xcf\x72\x2e\x98\x4f\xc6\xe8\x91\x76\x5c\xce\x5b\x65\xc5\x65\x59\x59\xec\x49\x65\xb3\x0b\xa2\x21\x05\xbb\x8d\x52\xc9\xfd\x76\xd1\xf6\x89\x83\x72\xef\xf2\x3a\xdf\xb5\x8d\x69\xd0\x05\xc8\x4f\x2c\xac\x34\xf7\x8b\x19\xfb\x4f\x57\xa9\x7d\x49\xe7\xdf\xa6\x50\x25\x48\x73\x9b\xaa\x64\x73\x9f\x62\x48\x70\xe4\x36\xe3\xc1\xbd\xe1\xe0\x11\x77\xd4\x66\x95\x25\xcd\x5f\xec\x57\x14\x90\xc6\x71\xdb\x54\xb1\xa7\x7b\xab\xef\xdd\x0a\xf9\xb2\xa0\xef\xbe\x7c\x7a\xfe\xa3\x00\xc6\x29\x32\x99\x06\x90\x88\x4a\x86\x3e\x17\x74\x8b\xdb\x80\x2e\xe6\xce\xe4\xeb\xfa\xbc\xaf\xa3\xe2\xbb\x1b\xe7\xef\xf3\xc5\xbf\x01\x00\x00\xff\xff\xaf\xc5\xae\x50\xc3\x13\x00\x00") +var _webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x58\x7b\x6f\xdb\x36\x10\xff\x3f\x9f\x82\x6d\x50\xf4\x81\x52\x96\x9d\xd8\xce\x24\x2c\x18\x86\xed\x53\x0c\xfd\x83\x12\xcf\x16\x11\x99\x47\x90\x27\x5b\xa9\x90\xef\x3e\x50\x8f\xd8\x4e\x9c\x98\xca\xda\x2e\x01\x12\xe8\xc4\x7b\xff\xee\x41\x4d\xbe\xbc\xbb\x60\x5f\xd8\x5f\x82\x80\xd4\x06\x8c\xca\xef\xc0\xb2\x15\x5a\xf6\x27\x22\x39\xb2\xc2\xb0\xed\xd5\xc5\x64\xf2\x8e\x6d\xc1\x3a\x85\x9a\x25\xec\x2a\x9a\x46\x57\x9e\xad\x20\x32\x2e\x99\x4c\xd6\x8a\x8a\x2a\x8b\x72\xdc\x4c\xfe\x46\x2d\x9c\x14\x7a\x92\x0d\xfc\x5c\x1e\x09\x9f\x5c\xb0\x2f\x93\xe8\xa5\xb7\x7c\xa7\xe4\x1a\xa8\x21\x34\x49\x9c\x96\xb0\xa2\x24\x4e\x77\x4a\x52\x91\xcc\xe6\xb1\xa9\x53\x23\xa4\x54\x7a\x9d\x5c\x9b\x3a\xdd\x08\xbb\x56\x9a\xfb\xb3\x53\x53\xa7\xdf\xb9\xd2\x12\xea\xe4\x37\xff\xf3\x4e\x6d\x0c\x5a\x12\x9a\xd2\x0c\xad\x04\xcb\xad\x90\xaa\x72\x9e\xf1\xe1\x9c\xfa\xe8\x80\xe2\x32\xd7\x74\x06\x2c\xe2\x38\x84\x37\x43\x22\xdc\x24\x19\xac\xd0\x42\x93\xa3\x26\xd0\x94\x7c\xfc\x98\x4a\xe5\x4c\x29\xee\x13\xa5\x4b\xa5\x81\x67\x25\xe6\x77\x83\x71\xad\xa7\x4b\x53\x33\x87\xa5\x92\x8c\xac\xd0\xce\x08\x0b\x07\xe6\xab\x75\x71\xe6\x48\xaf\x79\x7f\xe6\x32\xcf\xf3\xe3\x97\x3c\xc7\x12\x6d\x62\xd7\x99\xf8\x14\x7f\xf5\xbf\xd1\xec\x73\x6a\xd0\x29\x52\xa8\x13\x91\x39\x2c\x2b\x82\xd4\xc7\x94\x2f\x4d\x9d\x0e\x86\x05\xfb\x2d\x56\x04\x76\x94\xdb\x8b\xf3\x6e\xbf\x7a\xa4\x57\xbc\x3f\x73\xb9\x5a\xad\x5e\xf2\x69\x31\xf8\x74\x13\x84\x03\x34\xff\x47\x22\xbd\xda\xd3\x59\x24\x34\xa1\x29\xec\xc3\xb2\xcf\xe2\x22\xd4\xe3\x5f\x9f\x42\xaf\xf5\x6c\xfe\x06\x87\x16\x63\x60\xc9\x22\x89\xbb\xbe\x80\xa7\xd7\xd1\xec\x66\xbe\xfc\x70\x3e\x0a\xa6\x2a\xcb\xde\xee\x3e\xfd\xad\x42\x51\x11\xa6\x8f\xee\x8c\x12\xd3\xc5\xf4\xa9\x94\x10\x0f\x6e\xab\xb2\x29\x95\x23\xee\xe8\xbe\x04\x4e\xf7\x06\x12\x8d\x1a\xfa\xf6\x97\xc4\xe7\x63\x20\xfe\x91\x82\x04\x17\xb9\x0f\xe8\xb7\x66\xe8\xa1\x3e\xe2\xa3\xb9\x13\xff\x7f\x0b\x4d\x86\x35\x77\x85\x90\xb8\x6b\xad\x09\x48\xc4\x01\xa9\xc0\xca\x7e\x1d\xc5\xb1\x51\xba\x22\x18\xc7\xe3\x20\x47\x2d\xfb\xe4\xcf\xfd\xc4\x58\xa1\x26\xbe\x83\x2e\xf6\x71\xdc\x3d\x3b\xf5\x1d\x92\x69\x34\x83\xcd\x88\x90\x66\x15\x11\xea\x17\xe3\x7a\x5e\x00\x89\xac\x84\x8e\xdf\x47\x83\xaf\xd0\x6e\x04\xfd\xfe\x7e\x3a\x7b\xff\x8d\x45\x0e\x8c\xb0\x82\xd0\xf6\xd6\x5f\x1f\x8c\xbe\x78\x84\x99\x91\x27\x77\xa4\x5b\xa9\xb6\xcd\x50\xc9\x81\x29\x1b\x02\xb9\x53\x94\x17\x0d\x41\x4d\x5c\x94\x6a\xad\x93\x1c\x34\x81\x0d\xf4\x72\x28\xbf\x38\xfe\x30\xc2\x74\x92\xe7\xb3\x4d\x27\x8c\x7a\xc3\xbc\x67\x24\x9b\xa2\x43\x45\x0b\x93\xb6\xcb\x1d\x12\xf6\x10\x0a\x91\x15\xe5\xbb\xe6\x00\x59\x7e\x6d\xe9\x85\xcd\xe2\x27\xd2\x5b\x42\xd7\xd0\x2f\x97\xcb\x65\x90\x74\x29\xee\x9b\x57\xe5\xf5\xfb\x52\xc8\xb6\xd2\xcb\x4b\x0a\xdc\x42\x40\x45\x92\x8c\x3c\x58\x47\x1c\xef\xea\x76\x04\x43\x57\xb4\x1d\x43\x93\x89\xfc\x6e\x6d\xb1\xd2\x32\xb9\x04\x80\x34\xaf\xac\x43\x9b\x18\x54\x81\xf0\x93\x11\x96\x21\x38\x92\x91\x86\x5d\x33\x32\x11\x84\x3e\x15\x8f\x83\xca\x42\x29\x7c\x6b\x0c\xe7\xfd\xe1\xbb\xc5\xf3\x0d\xf0\x7a\x76\x93\xe5\xe2\xed\xeb\x83\x47\x7f\x37\xab\x42\xc1\xdf\xcd\x87\xa0\x98\x77\x47\x9f\xe5\xba\x37\x71\xb0\xbd\x7f\xf2\x4b\x41\x5b\xec\xfd\xd4\x89\x19\x9f\xfa\x01\xc6\x8e\x5c\x99\x7f\x1e\x61\xe4\x71\x16\x4e\x2d\xca\x5e\x6b\x58\x11\x29\xe7\x5b\x5d\x18\xd6\x86\xc3\xcf\x51\x1e\xb3\xf8\xa0\x1d\x0c\x78\xd7\xe8\x5b\x5c\x89\x3b\x90\x21\xc6\x30\x67\x84\x6e\x4e\x22\xe9\x60\x16\xbe\xda\xf0\xfa\x36\x3d\x33\x35\x9b\x46\x73\xdf\xa3\x8e\x2a\xef\x6d\x3d\xb6\xb5\xeb\x74\x65\x07\xb3\x47\xc3\xfa\xf1\x0b\xd1\xd2\x29\xc6\x52\x8e\x6c\x10\x1d\xdf\x18\x64\x1c\x73\xfc\x1c\x78\x14\x3f\x70\x78\x14\x4f\x36\x84\x61\xcf\x9e\x07\x72\x6b\xa8\x29\x64\xca\x47\xc6\xc2\xf6\x60\xa6\xce\xa6\x81\x0a\x46\x04\xbf\xf8\xd9\x71\x07\xe1\x7b\x76\xb2\x52\xd6\x11\xcf\x0b\x55\x4a\x9f\x8c\xd1\x23\xed\xb4\x9c\x97\xca\x4a\x69\x53\x11\xf7\x24\xd3\xee\x82\xec\x90\xc2\x85\x94\xa8\x8f\xdb\x45\xd7\x27\x9e\x94\x7b\x9f\xd7\xc5\xbe\x6d\x4c\x83\x2e\x40\x7e\x62\x71\xb4\xca\x2f\x66\xf2\x3f\x5d\xa5\x8e\x25\xbd\xfd\x36\xc5\xaa\x32\x6a\x6f\x53\x95\x6e\xef\x53\x92\x95\x8a\x49\xb5\x3d\xb8\x37\x3c\x79\xe4\x3d\xb5\x5d\x65\xa3\xf6\x2f\xf7\x2b\x0a\x68\x07\x92\x51\x86\xf2\xfe\x96\xec\x2d\xc9\xc7\xfd\x3f\xde\x7f\x7c\x7a\xf8\x63\x03\x52\x09\xe6\x72\x0b\xa0\x99\xd0\x92\x7d\xda\x88\x9a\x77\x01\x5d\x2e\x96\xa6\xfe\xdc\xbc\xed\x73\xd4\xec\xe6\xca\xd4\x0f\x0f\x17\xff\x06\x00\x00\xff\xff\xaf\xc5\xae\x50\xc3\x13\x00\x00") func webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCssBytes() ([]byte, error) { return bindataRead( @@ -638,12 +639,12 @@ func webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss() (*a return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css", size: 5059, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css", size: 5059, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x58\x7b\x6f\xdb\x38\x12\xff\x7f\x3f\x05\xa3\x5b\x38\xe2\x2e\xa3\x38\x4d\x71\xed\xca\x55\xdd\x34\x6d\xd1\xdc\x16\xc9\x5e\x93\xbd\x62\x11\xe4\x0f\x4a\xa2\x6c\xa5\xb2\xa4\xd5\x23\xa9\x11\xbb\x9f\xfd\x66\x48\xca\x22\xfd\x68\x2f\xe8\x15\x68\x64\x92\xbf\x19\x0e\xe7\x4d\x1e\xfe\x42\x82\x1f\xf9\xf7\x13\xf9\x85\x84\x45\xd1\xd4\x4d\xc5\xcb\xe3\x83\x66\x5e\x0a\x3e\x15\x3c\xf6\x6e\x6b\x72\x77\xec\x1d\x79\x43\x44\x4c\x9b\xa6\xac\xfd\xc3\xc3\x49\xda\x4c\xdb\xd0\x8b\x8a\xd9\x61\xc8\xeb\xfa\xb6\x08\x6b\x91\x1f\xbe\xee\xe8\x0f\x8e\x0f\xae\x3a\x06\x48\xf6\xc3\x92\x5d\x54\xe9\x24\xcd\x79\x46\xee\xab\xb4\x69\x44\x4e\xc2\x39\x79\x35\x8b\x0b\xc2\xf3\x98\xbc\x4a\x78\xf3\x7f\xd9\xe5\xb4\x28\xe7\xb0\xd1\xb4\x21\x4f\x86\x47\x4f\xc9\x6b\x38\x19\xf9\x97\x3c\x1a\x79\xd5\x1f\x13\x90\x08\xfe\x90\x46\x22\xaf\x45\x4c\xda\x3c\x16\x15\x69\xa6\x82\x9c\x94\x3c\x82\x8f\x5e\x61\xe4\x3f\xa2\xaa\xd3\x22\x27\x4f\xbc\x21\x71\x11\xb0\xaf\x97\xf6\xe9\x08\x59\xcc\x8b\x96\xcc\xf8\x9c\xe4\x45\x43\xda\x5a\x00\x8f\xb4\x26\x49\x9a\x09\x22\xbe\x44\xa2\x6c\x48\x9a\x13\x50\x71\x99\xa5\x3c\x8f\x04\xb9\x07\xa5\xcb\x7d\x34\x17\x0f\x79\xfc\xa5\x79\x14\x61\xc3\x01\xce\x81\xa0\x84\x51\x62\x02\x89\xd4\x4f\x67\x3f\x30\xdf\xfd\xfd\xbd\xc7\xa5\xb0\x5e\x51\x4d\x0e\x33\x05\xab\x0f\x3f\x9c\x9d\xbe\x3d\xbf\x7c\x7b\xf0\x44\x5a\x1b\x09\xfe\xcc\x33\x01\x5a\xa8\xc4\xdf\x6d\x5a\xc1\x61\x41\xef\xbc\x04\x81\x22\x1e\x82\x98\x19\xbf\x27\x45\x45\xf8\xa4\x12\xb0\xd6\x14\x28\x30\x5a\x28\xcd\x27\x8c\xd4\x45\xd2\xdc\xf3\x4a\x20\x9b\x38\x05\xbf\x48\xc3\xb6\xb1\xf4\xd5\x89\x07\xa7\x36\x01\xa0\x31\x9e\x93\xfd\x93\x4b\x72\x76\xb9\x4f\x5e\x9f\x5c\x9e\x5d\x32\x64\xf2\xe9\xec\xea\xfd\xc5\x9f\x57\xe4\xd3\xc9\xc7\x8f\x27\xe7\x57\x67\x6f\x2f\xc9\xc5\x47\x72\x7a\x71\xfe\xe6\xec\xea\xec\xe2\x1c\x46\xef\xc8\xc9\xf9\x5f\xe4\xf7\xb3\xf3\x37\x8c\x08\xd0\x16\xec\x23\xbe\x94\x15\x9e\x00\xc4\x4c\x51\x93\x22\x96\x6a\xbb\x14\xc2\x12\x21\x29\x94\x48\x75\x29\xa2\x34\x49\x23\x38\x5a\x3e\x69\xf9\x44\x90\x49\x71\x27\xaa\x1c\x4e\x44\x4a\x51\xcd\xd2\x1a\x2d\x5a\xa3\xdf\x21\x9b\x2c\x9d\xa5\x0d\x6f\xe4\xd4\xc6\xb9\xbc\x1f\x75\x4a\xf2\xcb\xe1\x4f\x7b\x49\x9b\x47\xb8\x81\xcb\x59\x48\x1f\x1c\xf4\x13\x54\x55\xd4\x38\x23\x07\xb7\x4c\xd2\x5c\xc4\xce\x5e\x80\x11\x0b\x66\x9f\x15\x71\x9b\x89\xc1\x40\x7d\x3d\x38\x7e\x51\x35\xf5\xd8\x1e\x06\xa1\xab\x2d\xea\x3a\xb7\x7f\xb7\xa2\x9a\x3b\x94\xfa\x4e\xb7\x95\x13\x74\xdc\x14\xfb\xc1\x40\x7d\x3d\x3e\x8b\xc7\xea\xa7\x7b\xdd\x11\xde\xb0\x5e\x42\xfa\x50\x89\xa6\xad\x20\x3c\xe1\xf7\x92\xfa\xf0\xf1\x6e\xff\x8d\x30\xba\x74\xd1\xbb\x2d\xac\x75\x96\x3b\x5e\x91\x30\x58\x2d\x87\x2c\xa2\x0f\x48\xe1\xfd\x2c\x32\x31\x13\x79\x13\x70\x37\xa4\x4c\x4e\x15\xa5\xd4\x78\xc0\xe1\x3c\x90\x0c\x62\xf7\x61\xc9\xb8\x97\xe4\x5e\x9f\xb5\x40\x4a\xde\x66\x4d\x0d\x6c\x14\xcd\x8c\x37\xe0\xee\x55\x60\x32\xe8\x26\x17\x0b\x13\xa2\xf0\x35\xe8\x69\x1d\xae\xe6\x34\x5a\x0d\x34\x18\x64\x8c\x9a\x35\xb0\x9c\xeb\xc0\x72\xa0\xc0\xbc\x6d\x8a\x4b\x45\xe0\x40\xc6\xcd\x04\x37\x14\x6e\xb1\xe8\x91\xe3\x1d\xf3\xfe\xde\x50\x31\x9d\x42\xda\xca\x30\x75\xad\xcb\x6c\x2c\x68\x59\x8c\x19\x45\x5b\x09\xf4\x5c\x9b\x4c\xcd\x69\x0a\x35\x50\xe0\xb6\x8c\xf9\xc6\x26\x7a\x52\xc3\xf5\x48\xe1\x21\xb0\xcb\x8c\xcf\xaf\xc0\x52\x36\x8d\xb1\xa0\xe9\x8c\x99\xce\x06\x6d\x15\x89\x75\x1b\xe0\x9c\xe6\x2d\x00\xbe\xc6\x15\xa7\xd4\xea\xcf\xe0\x35\x2d\x78\x8d\x6d\x71\x98\xd3\x1e\xf1\x33\x24\x32\x38\xd8\x55\x61\x73\xe8\x66\xc7\x6b\x94\xdd\x3c\xf5\xf3\x36\xcb\xb4\x80\xd3\xe2\x3e\x0f\xf6\x8e\xd4\x28\x83\x1c\x26\x72\x97\xf6\x6b\xef\xd3\xbc\xb9\xc8\xdf\x15\x51\x5b\x7f\xcf\xd6\x6b\xf0\xf1\xb7\x16\xfd\x6e\x47\x9e\x80\x9e\x2f\xb7\x38\x9f\xb1\xa0\x91\x71\x7c\xd6\x88\x19\xc8\xba\x1c\x85\x5e\x59\x15\x4d\x81\x52\x04\x0f\x11\xc0\x9b\xaa\x8d\x9a\xa2\xf2\x43\xa6\xfc\xd4\x5f\x85\x21\x7d\xc0\xb8\xe4\x41\xaf\x50\x0f\xa2\x3f\x76\x1d\x8f\x03\xe0\x4e\x38\xd4\x03\x5b\x73\xd7\xb9\xe3\x59\x0b\xa3\x51\x9a\xb8\x56\xd4\xea\x65\x8d\x66\x9c\xae\xc7\xc0\x62\xc1\xd5\x26\x61\x60\x3a\x0f\xe4\x87\x91\xcd\x08\x76\x70\xd7\xdd\x04\x32\xc2\x62\x11\x52\x2f\x9a\x42\xb6\x16\x9d\xe6\x8d\xc3\x03\x60\xa9\x53\x92\xf6\xfd\x18\x60\x4b\xa6\x77\xf1\xb7\xa4\x2e\xbe\x04\x2d\x34\x97\xd2\xcd\xac\x75\xd3\x25\x11\x04\x36\x59\x57\x14\x64\x2d\x2b\x29\xd9\x27\x28\x8b\x3a\x55\x60\xf6\x30\x15\x18\x81\xbe\x05\xb8\x1e\xde\x78\x45\x92\xc0\xee\xef\xe5\xea\x92\x8e\xba\x74\x1a\x6c\xc9\xcd\xb6\x87\x44\x55\x91\x65\x8a\x6e\xbc\x73\xc5\x8b\x78\x96\xb9\xd4\xdf\x09\x60\xae\x1d\x1a\x63\xc3\xf0\xdd\xdc\x1a\x44\x73\x53\x98\x14\xca\x5e\xd5\x9c\xa0\x01\x6c\x3f\xa0\x60\xa4\xba\x76\x1f\x9a\xa2\xf4\x23\x0f\xfe\xfe\x1a\x79\x4a\x07\xbf\x86\x2c\x13\x49\x03\xb3\xf8\x59\x52\xe9\xec\x66\x10\x41\x80\xa9\x24\xb7\x64\x68\x3e\x53\xe7\xa6\x69\x95\x00\xca\xc0\x5b\xa2\x73\xc9\xb2\xa2\xf8\xdc\x96\x3d\x39\x54\xd3\xce\x5b\x65\x25\x0b\xb6\x95\xd3\x70\x30\xc0\x70\xdf\x0b\x82\x70\x1c\xfa\x9b\x1e\x09\xfe\xe7\x38\xac\x67\x02\x87\xc8\x27\xcd\xf4\x85\x9d\x74\xd2\xfc\x83\x9c\xa6\xa6\xc0\x52\xbc\xb1\xe1\x96\x92\xbd\x2c\x84\xe8\x45\x10\xa3\x5f\xe6\xae\x71\x58\xee\xa5\xf5\xbb\x6e\x68\x38\x23\x1d\x1b\x03\xe3\x3c\xac\xe3\x21\xa7\xe0\x67\x04\x7d\x90\x14\x95\x6a\x9b\x29\x92\xc1\xc0\x04\x58\x9c\x95\x07\xd3\x51\x04\x89\xab\xba\x4a\x67\xa2\x68\x1b\x05\x50\xca\xfc\x54\x54\x9f\x45\xa5\xd5\x6d\x4e\x05\xe0\xc4\x1d\x3e\x32\x92\x35\x70\xd4\xfb\x58\x76\x50\x67\x96\xc7\x5f\x79\x3c\xf7\xa0\xab\x2c\xa1\x11\xd8\x12\xa3\x51\x57\xab\x65\x9b\xc1\x74\xea\x50\x15\x19\xbb\x84\x50\x9b\x41\x17\x96\x55\x56\x54\x49\x70\xec\x76\xeb\x2f\x87\xe3\x6f\x65\xab\x10\x22\x92\xfa\xdf\x42\xa0\x6f\xd8\x4d\x49\xb7\xc9\x60\x00\x69\xb6\xad\xa7\xee\xb6\x45\xca\x1c\x08\x44\x0c\x65\x73\x31\x85\x15\x9d\xf8\x55\xc5\x85\xa3\xe8\x68\xf0\xad\x59\xaf\xc6\x8e\xdd\x1d\xb2\x4d\x72\xda\x51\x74\x26\xde\xea\x64\x4b\xa6\xf5\x67\x25\x38\x23\x0b\x9b\x39\x96\x77\x69\xe8\x6b\x08\x81\xfb\xa1\xb8\x17\xd5\x29\xaf\x81\x15\x44\x7b\x2c\xbe\x5c\x98\x31\x64\x03\xc0\xda\xca\x26\xd6\x36\xd0\x6a\xbb\x5d\xb2\xbc\xbe\x61\x31\xfe\x11\xf0\x67\x84\x36\xaf\xa7\x69\xd2\xb8\x74\xa4\xa4\x49\x36\xa5\x09\xe9\x28\x79\xac\x18\xe3\xaf\xc9\x16\x10\x1d\xc7\xca\x42\x21\xf5\xc5\xea\x57\xd4\xfd\x5a\xae\x7c\x0d\x4a\x64\xc4\x1b\x37\x66\x18\x10\x46\xf7\xb4\xe9\xc2\x0c\x30\x2c\x61\x13\x36\x85\xbe\xc3\x79\x11\xa7\x77\x2f\x5f\x1c\xe2\x5f\x87\xb2\x34\x30\x42\xf3\x36\xd8\xa5\xcb\x74\x4d\x76\xac\xa8\x51\x90\x6a\x87\x65\x43\xb8\x16\x44\x5d\x1a\x99\x7a\x8d\x52\x89\x37\x6d\x66\x90\x8b\x46\xa8\xda\xd1\xed\xcb\x83\xa3\x11\x8d\x61\x87\xba\x0d\xa1\xb6\x83\x9f\xdc\x52\xd0\xf0\x6a\x7c\x8b\x4d\x71\x62\x8c\x7f\x85\xf1\x44\x4a\x0c\xc3\x22\x9f\x80\xd0\xfa\x07\xd4\x77\xb9\x85\xa0\x6c\xaa\x0b\x80\x1b\x43\x0b\x22\x43\x21\xaa\x04\x14\x51\xb4\xca\x79\x01\xae\x15\x83\xef\x69\xc8\x04\x63\x32\x79\xcc\x29\x57\x27\xfa\xce\x26\x21\xed\x0e\xbb\x64\x2a\x1c\x76\x24\x12\xf0\x2b\xf9\x11\x50\x00\x8c\xa4\x82\xca\x9a\xf1\xd2\x35\x2e\x1a\x89\x22\x9b\x04\xb1\xe5\x68\x09\x35\xc9\x22\x2b\xcc\xec\xae\x07\x38\x40\xc6\x51\x7d\x11\x77\xb4\x7c\x91\xd9\x67\x83\x42\x50\xc3\xb0\x83\x5d\x3c\x06\x03\x08\x66\xc8\x09\xa7\x19\x87\xcc\xdb\x65\x15\xca\xe2\x5d\xf9\x26\x41\x43\xee\x0d\xa9\x4c\x4d\xcb\x8d\x66\x6a\x30\xd8\x13\x92\x67\x92\x56\x35\x84\xd1\x36\xde\xdf\x4c\x78\x2b\x42\xab\xab\xa3\x94\x99\x25\x16\x8f\xa7\xaf\x62\x4b\x66\xa8\x6c\x6b\x37\xe5\xe5\x7c\x26\xa0\xc9\x5b\xb2\xdc\x82\x58\xe9\x66\x7b\x67\x59\x89\x19\xdc\xbd\xd7\xe5\x8f\xc0\xa9\x90\x15\xb8\x7b\xb4\x4a\xf3\x10\x22\xba\x5d\x37\x59\x65\xa9\x43\x31\x85\x03\xd1\x16\x4d\x60\x29\x12\x77\x8f\xea\x75\xb7\x4b\x14\xca\x6a\x2d\xee\x40\xa2\xbe\xf0\xb8\x5b\x8e\x86\xf2\x78\x40\x0c\xb2\xa3\xc7\x6c\x13\x49\xdd\x21\x4c\xa1\x6c\x7b\xc1\x94\x93\xe0\x1d\xc0\xb1\xcb\xbb\x9c\xd3\xc5\x5d\x82\xc2\xac\xad\xd6\x30\x38\x65\x42\x3e\x8b\xb9\x7c\x1b\x59\x83\x75\xd3\x6b\xd0\xb6\xdc\xc4\xb5\xa5\x06\x29\xff\x10\x77\x20\xe2\x65\x5b\xe2\x1b\x83\x88\x25\x55\x0c\xe5\xc7\xa1\xba\xc5\xb0\x4e\xd1\x2d\x6e\x30\xc5\x59\x8b\xad\x52\x21\xd2\x44\x50\xf7\x3e\xaf\x51\xc8\x39\x53\xd6\x59\xd1\xd6\x02\x76\x11\x70\x7e\x54\xb9\x0d\xef\x57\x37\x68\xa0\xc9\xc1\x20\xd8\x41\x23\x57\x35\x0d\xb8\xbd\xc0\x0c\x39\xdf\x6d\x28\x15\x40\xab\x07\x09\xab\x55\xf8\x7e\x33\xd1\x6b\x2a\x49\x3a\x83\x53\x35\x90\x86\xd5\xbf\x57\x16\xec\xc7\x60\xa6\x47\x5b\x43\x93\xaa\x55\x53\xe7\xca\xdf\x31\xd7\xda\xcc\xb6\xb4\x0d\x1c\xdf\xfe\x2c\xbe\xab\xf4\x09\xc1\x60\x6f\x08\xcd\xe1\x49\xa3\x9f\xfb\x5c\xce\x1c\x05\x1c\xc9\x50\xda\x75\xd1\x59\x5d\x92\xf8\x0d\xc0\xa0\x81\x01\xc1\x2c\x31\xba\x5e\x5e\x76\x3c\xf4\xa1\xbe\x4f\xa1\xc3\x71\x39\x7a\xd4\x29\x54\x0e\xfa\x10\x41\xa9\x21\xbf\xf9\xf2\x73\x74\xac\xbe\x4f\x9e\xf9\x2a\x76\x81\xf3\x1b\xf5\x64\x84\x51\x0c\x35\xe7\xf3\x48\x02\x8e\x9f\xfb\xc0\x58\xf7\x25\xbf\x8b\xb9\x2e\xbd\xa3\x4d\x2a\xa6\xbb\x68\x95\x07\x7a\x0e\x4f\x87\x8f\xe3\xa0\x72\xdb\x12\x08\xe0\x96\xf4\x47\x55\x94\x7c\xc2\x95\x87\x2d\x97\x4c\x5b\xc9\xaa\x79\xea\xd4\x60\x1a\xf4\x04\xd8\xe0\x0f\xfc\x7e\x14\xe0\x78\x4d\xf0\x15\x2e\x0d\xf9\x49\x55\xf1\x39\x14\x05\xad\x09\x76\xfd\x74\xc8\x8e\x9f\xb3\xdf\xd8\xd1\x31\x7b\xf2\xec\xc6\xbc\x2d\x2d\x16\x4f\x87\x7b\xc1\x0a\x3a\xd6\xee\x7f\x87\x85\xd7\x37\xba\x7c\x74\x89\xce\xf9\xb6\x5c\x92\xb7\x0a\xd3\xbd\xb2\x21\x37\xae\xe8\xcd\xeb\x18\xdf\x69\x33\xd0\x60\x67\x0b\x65\xbc\x7f\xea\xef\x33\xfd\x7d\xee\x1b\xfa\xee\x2d\x0c\x6a\xdf\x33\x5c\x42\xeb\x5d\xcd\xa8\xd7\x01\xcb\x50\xe0\x0b\xdf\xa0\x50\xdd\xb3\xc6\xeb\xd7\xc5\x35\x8d\x6c\x31\x19\xdb\xb4\xf2\x92\xc9\x70\xde\xc8\x1c\x72\x56\xc4\x5d\xb0\xe8\x61\x77\xf7\xdd\xf5\x14\xa4\x63\x59\xcb\xe0\x38\x98\x9b\x30\x43\xec\x62\x8f\xd7\xe1\xbd\x3e\xa9\xc5\xf8\xb8\xad\x79\xc8\x33\xeb\xdf\xdd\x3b\x89\x4c\xae\x96\x8d\xfe\xb7\x43\x32\x4b\xcb\x6b\x39\x4d\x8a\x82\xdc\xfb\x5c\xbc\xe9\xd0\xbd\x78\x2b\x15\x3c\xa6\x26\x43\xa3\xe7\x45\x6d\x05\x2d\x62\x73\xc5\xab\x89\x68\xb6\xf5\x42\x5a\x02\x99\xd9\x37\x14\x66\x0a\xd0\xe9\x4c\x2b\x71\xb7\xc2\x96\xab\xeb\xbb\xf9\x1a\x3d\xb2\x87\xfd\x2b\x77\xa4\xb2\x67\x1c\x80\x88\xb2\xdd\xed\xee\xbf\x0e\x3e\x8b\xe7\x93\x3e\x07\x46\x83\x81\x03\xa7\x38\x51\x92\xc3\x1d\x40\x85\xa6\x55\x40\x74\x84\x0a\x0e\x31\xb4\xd6\xd5\x08\xdd\x1e\x61\xdf\x2f\x36\x6a\x13\xf6\xa6\x4e\x11\xde\x82\xb1\xac\x1d\xa3\x51\xb2\x58\x6c\xc2\x81\x47\x2e\xee\x49\xa8\x5e\xf4\xb1\xb5\xdd\x26\xae\x1b\x77\x97\xec\xa3\x71\x72\x1d\xdd\x60\x67\x9f\xcd\xdd\x84\xc9\x74\xd4\x3f\x41\xaa\xcb\xac\x7a\x99\x8a\xd9\x11\x5c\x5c\x11\x8d\x97\x47\xba\xf3\x55\x3f\x78\x50\x0f\x14\x3e\x5c\x1d\xe5\xb5\xd7\x7f\xce\xd0\x39\xfc\xfd\x17\x6d\x46\x22\xb4\x72\xd0\x0b\x4c\x62\xf0\x56\x4c\x9b\x07\x88\x71\x48\x55\x64\x22\x70\xb0\xd3\x0a\x8b\x2f\x0e\x5c\x76\xda\xec\xe5\xbe\xe4\x03\xf4\x59\xfa\xf2\x05\x27\xd3\x4a\x24\x81\xf3\x8f\x0e\xab\x82\x0f\xa1\x1c\xfe\x03\x64\x9f\xad\xde\x74\xfc\x23\x66\xbe\xa0\xf9\x43\x66\x3f\xcf\x1b\xaf\x91\x50\x6b\xf2\xa2\x28\x99\x7c\x0a\x41\xa0\x7a\x0d\xf0\xf7\x8e\x36\x4e\x7a\xda\x3f\xcb\x06\xe1\xfa\x62\x5e\xc0\x72\x02\x6a\x6b\x82\xcd\xc7\xb0\x35\x5f\x8b\x74\x9f\xce\x57\x57\x2a\xda\x37\x91\xa6\x6a\xc1\xc8\x07\xbc\x84\xd6\x67\xff\x5a\xfe\x06\x03\xdd\x81\x53\x1b\x7a\x74\x6e\xf6\xd9\x46\xff\xae\xfd\x0a\x3a\xdf\x0d\xaf\x5a\x2c\xc2\x7e\x03\x57\x03\xa4\x5d\xe9\xe8\xa7\xff\x06\x00\x00\xff\xff\xa8\x6a\xdf\xd9\xb0\x1e\x00\x00") +var _webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xac\x58\x5f\x73\xdb\x36\x12\x7f\xcf\xa7\x80\x79\x1d\x19\x48\x61\x4a\x8e\x33\x97\x94\x32\xad\xba\x6e\x3b\xf5\x35\x63\xf7\x62\xf7\x3a\x1d\x8f\x1f\x40\x70\x29\xc1\xa1\x00\x16\x04\x25\x6b\x2c\xf5\xb3\xdf\x80\x00\x25\x52\x7f\xd2\xcb\xf4\xfc\x60\x0a\x8b\xdf\x2e\x16\xfb\x0f\x0b\xf4\x5f\xa3\xf8\xef\xfc\xbd\x42\xaf\x51\xa2\x94\x29\x8d\x66\xc5\xd9\x89\x59\x14\xc0\x26\xc0\xd2\xf0\xa9\x44\xb3\xb3\xf0\x34\x1c\x58\xc4\xc4\x98\xa2\x8c\xfa\xfd\xb1\x30\x93\x2a\x09\xb9\x9a\xf6\x13\x56\x96\x4f\x2a\x29\x41\xf6\xbf\x6b\xf8\x4f\xce\x4e\xee\x1b\x01\x96\xed\x6f\x6b\x76\xab\xc5\x58\x48\x96\xa3\xb9\x16\xc6\x80\x44\xc9\x02\x7d\x3b\x4d\x15\x62\x32\x45\xdf\x66\xcc\xfc\x5f\x56\xb9\x52\xc5\x42\x8b\xf1\xc4\xa0\x37\x83\xd3\xb7\xe8\x3b\x56\x96\xe8\x5f\xf5\xd6\xd0\xb7\x9b\x6d\xbe\x42\xaf\x2d\xf8\x83\xe0\x20\x4b\x48\x51\x25\x53\xd0\xc8\x4c\x00\x5d\x16\x8c\x4f\xa0\x99\xa1\xe8\x3f\xa0\x4b\xa1\x24\x7a\x13\x0e\x10\xb6\x80\x63\x3f\x75\x4c\x86\x56\xc4\x42\x55\x68\xca\x16\x48\x2a\x83\xaa\x12\x90\x99\x88\x12\x65\x22\x07\x04\xcf\x1c\x0a\x83\x84\x44\x5c\x4d\x8b\x5c\x30\xc9\x01\xcd\x85\x99\xd4\xeb\x78\x29\xa1\x95\xf1\xbb\x97\xa1\x12\xc3\x84\x44\x0c\x71\x55\x2c\x90\xca\xda\x40\x54\xdb\xa7\xf1\x5f\xd4\xef\xcf\xe7\xf3\x90\xd5\xca\x86\x4a\x8f\xfb\xb9\x83\x95\xfd\x0f\xd7\x57\x3f\xdc\xdc\xfd\x70\xf2\xa6\xf6\xb6\x65\xf8\x55\xe6\x50\x96\x48\xc3\x1f\x95\xd0\x90\x5a\xbb\xb3\xa2\xc8\x05\x67\x49\x0e\x28\x67\x73\xa4\x34\x62\x63\x0d\x90\x22\xa3\xac\xc2\xd6\x43\x42\x8e\x29\x2a\x55\x66\xe6\x4c\x83\x15\x93\x8a\xd2\x68\x91\x54\xa6\x63\xaf\x46\x3d\x51\x76\x00\x4a\x22\x26\xd1\xf1\xe5\x1d\xba\xbe\x3b\x46\xdf\x5d\xde\x5d\xdf\x51\x2b\xe4\xb7\xeb\xfb\x9f\x6e\x7f\xbd\x47\xbf\x5d\x7e\xfc\x78\x79\x73\x7f\xfd\xc3\x1d\xba\xfd\x88\xae\x6e\x6f\xbe\xbf\xbe\xbf\xbe\xbd\xb9\x43\xb7\x3f\xa2\xcb\x9b\xdf\xd1\xcf\xd7\x37\xdf\x53\x04\xc2\x4c\x40\x23\x78\x2e\xb4\xdd\x81\xd2\x48\x58\x4b\x42\x5a\x9b\xed\x0e\xa0\xa3\x42\xa6\x9c\x4a\x65\x01\x5c\x64\x82\xa3\x9c\xc9\x71\xc5\xc6\x80\xc6\x6a\x06\x5a\x0a\x39\x46\x05\xe8\xa9\x28\xad\x47\x4b\x1b\x77\x56\x4c\x2e\xa6\xc2\x30\x53\x93\x76\xf6\x15\xfe\xdd\xa0\x44\xaf\xfb\xaf\x8e\xb2\x4a\x72\xbb\x00\x66\x34\x21\x2f\x81\x8d\x13\x6b\x2a\x6e\x82\x61\x60\x97\xcc\x84\x84\x34\x38\x8a\x6d\xc6\xaa\x0c\x4d\x55\x5a\xe5\xd0\xeb\xb9\x6f\x08\xcf\x85\xd2\xa6\x1c\x75\x87\x71\x82\xbd\x47\x71\xf0\xf4\x47\x05\x7a\x11\x10\x12\x05\xcd\x52\x41\xdc\x48\x73\xe2\x7b\x3d\xf7\x0d\xd9\x34\x1d\xb9\x9f\xf8\xa1\x61\x7c\xa4\x1b\x0d\xc9\x8b\x06\x53\x69\x89\x12\xcc\xc8\x8a\x44\x09\x66\xe1\xd3\xbf\x2d\x8c\xac\xb0\x8d\xee\x0e\xb6\xb3\x97\x19\xd3\x28\x89\xd7\xd3\x09\xe5\xe4\xc5\x72\x84\x5f\x41\x0e\x53\x90\x26\x66\x38\x21\xb4\x26\xa9\xa2\xb6\x78\xcc\x42\x78\x36\x20\x53\xfc\xb2\xa2\x2c\xcc\x64\xb8\xa9\x5a\x29\x64\xac\xca\x4d\x49\xb9\xe7\x99\x32\xc3\x27\xa0\xe3\xb6\x80\x86\xb8\x5c\xb6\x21\x0e\x5f\x2a\x6d\xb6\xe1\x8e\xe6\xd1\x6e\xe0\xc1\x90\x03\x37\x5b\xe0\x9a\xd6\x80\xeb\x81\x03\xb3\xca\xa8\x3b\xc7\x10\x24\x4a\xe5\xc0\x5a\x06\xef\x88\xd8\x20\x47\x07\xe8\xd1\xd1\xc0\x09\x9d\x88\xf1\x24\xb7\xa5\x6b\x5b\xe7\xd6\x84\xd7\xa5\x45\x71\xbc\x1a\x6c\xe4\x76\xd9\x1c\xcd\x73\xb8\x81\x03\x57\x45\xca\x76\x16\xf1\x44\x0f\xf7\x23\x87\x4f\x45\x59\xe4\x6c\x71\x0f\xcf\x5b\xf6\x69\x4d\x78\xbe\x16\xa5\xf1\x41\xa5\x39\x6c\xfb\xc0\xd2\xbc\x6c\xc8\xd9\x62\x4b\xaa\x25\xb9\xd9\xaf\xa6\x20\xab\x98\xe1\xae\xc7\x41\x56\x3e\x22\xbe\x62\x45\x01\x32\xbd\x57\x5d\x09\x0d\x75\xb4\xc5\xd9\xd0\x49\x24\xab\x3c\xf7\x0a\x4e\xd4\x5c\xc6\x47\xa7\x6e\x94\x8b\xd2\x80\xc4\x64\x33\xf7\x93\x90\xe6\x56\xfe\xa8\x78\x55\xfe\x95\xaf\xb7\xe0\xa3\xcf\x4d\x46\xcd\x8a\x2c\x33\xa0\xef\xf6\x04\x5f\x6b\xc2\x23\xd3\xf4\xda\xc0\x34\x3e\x3a\x5d\x0d\x93\xb0\xd0\xca\x28\xab\x45\xfc\xc2\x95\x2c\x8d\xae\xb8\x51\x3a\x4a\xa8\x8b\xd3\x68\x9d\x86\xe4\xc5\xe6\x25\x8b\x37\x06\x0d\x33\x21\x53\x1c\x84\x8c\x1b\x31\x83\x80\x84\x29\x33\x0c\x07\x33\x96\x57\x10\x90\xa1\xc8\x70\x27\x6b\xfd\xb4\x47\x53\x46\xb6\x73\x60\xb9\x64\x6e\x91\x24\x6e\x07\x0f\x66\x64\xd8\x15\x34\x63\x39\xde\x0e\x13\x9c\x90\xe5\x32\x21\x21\x9f\x30\x39\x86\xc6\xf2\xad\xcd\xe3\x84\xac\x7c\x49\xf2\xb1\x9f\x02\x26\x2b\xea\x57\x89\xf6\x94\x2e\xb6\xa2\x25\x98\xbb\x3a\xcc\x3a\xf3\xed\x90\xb4\xa0\x89\x9a\x6f\x1b\x2a\xa1\xbc\x53\x94\xba\x3b\x28\x54\x29\x1c\x98\xbe\x4c\xc0\x66\x60\xd4\x01\x3c\x0c\x1e\x43\x95\x65\x25\x98\x9f\xea\xd9\x15\x19\x36\xe5\x34\xde\x53\x9b\xbb\x11\xc2\xb5\xca\x73\xc7\x37\x3a\x38\x13\x72\x96\xe7\x98\x44\x07\x01\x14\x77\x53\x63\xd4\x72\x7c\x43\xdb\x82\x78\x69\x0e\x23\x64\x09\xda\x5c\x5a\x07\x74\xe3\x80\x90\x90\x97\x25\x7e\x31\xaa\x88\x78\x68\x54\xf1\x35\x0f\x9d\x0d\xbe\x4e\x68\x0e\x99\x89\x78\x68\x3f\x2b\x52\x07\x7b\x3b\x89\x64\xec\x8b\xdc\x8a\x5a\xf7\xb5\x6d\xde\x76\xad\x53\xc0\x39\x78\x4f\x76\xae\x68\xae\xd4\xa7\xaa\xd8\xb0\x27\xe4\xa5\x89\xd6\xfa\x24\x8b\xf7\x1d\xa7\x49\xaf\x67\xd3\xfd\x28\x8e\x93\x51\x12\xed\x46\x24\x59\x2e\x83\x80\x6e\x84\x84\x39\xc8\xb1\x99\x9c\x77\x8b\x8e\x90\x1f\x6a\x32\x69\x2b\x5c\xab\x37\x6a\x85\x65\x2d\xbe\x3e\x08\x6d\x14\x15\x5a\x3d\x2f\x70\x6b\xb3\x2c\x14\xe5\x8f\xcd\xb0\x15\x8c\x64\xd4\x1a\xb4\xf6\x43\x1b\x19\x35\xa9\xd0\x8a\x43\x59\xd6\xaa\x12\xef\x33\xc7\xd2\xeb\xb5\x01\x1d\xc9\x2e\x82\xc9\x90\xe7\xc0\xf4\xbd\x98\x82\xaa\x8c\x03\x38\x63\xfe\xa6\xf4\x27\xd0\xde\xdc\x6d\x52\x5c\x82\x69\xf0\xbc\x55\xac\xc9\x8a\xfa\x75\x3a\x7e\x70\x7b\xae\xb7\xbf\x8e\x78\x16\x8e\x35\x14\x38\xd9\xd7\x5e\xf0\xe6\xac\xae\xdb\x0c\xea\x4b\x87\x3b\x91\x6d\x97\x90\x78\x37\xf8\x83\x65\x5d\x15\x5d\x11\x1c\xe1\x66\xfe\x62\x30\xfa\x5c\xb5\x4a\x1e\x06\x8f\x24\xfa\x1c\xc2\xc6\x46\xb7\x29\x69\x16\xe9\xf5\x92\xb0\xa8\xca\x09\xde\x37\x49\x68\xc0\xf2\xdc\xa6\x72\x7b\x52\x18\x98\xfa\xc2\xef\x4e\x5c\x9c\x34\xd9\x10\x75\xa8\x61\x69\x3b\x76\x3c\xa0\xbb\xec\xa4\xe1\x68\x5c\xbc\x37\xc8\x56\xd4\xdb\xaf\x53\xe0\x5a\x55\xb8\x5d\x63\x59\x53\x86\xfe\x4c\x42\xa3\x3e\xa8\x39\xe8\x2b\x56\x02\x26\xa1\x90\x29\x3c\xdf\xb6\x73\xa8\x0b\x20\x2b\xea\x7c\xd2\x59\x26\x53\x1a\x37\xc5\xf2\xe1\x91\xa6\xf6\x1f\xc4\x0f\x8f\x43\xeb\xf3\x72\x22\x32\x83\xc9\xd0\x69\x93\xed\x6a\x93\x90\x61\xf6\xa5\x6a\x8c\xfe\xcc\xf6\x80\xc8\x28\x75\x1e\x4a\x48\x04\xeb\x5f\xbc\xf9\xb5\x5a\xc7\x1a\x57\x92\x33\x83\x53\x6a\x13\xa2\xd5\x3d\xed\x86\x30\x4d\x29\xd0\x8c\x8e\xe9\x24\x66\x38\x38\x4f\xc5\xec\xe2\xbc\x6f\xff\x07\x84\x8a\xb8\x95\x9a\x4f\xf1\x21\x5b\x8a\x2d\xdd\xed\x89\xca\x63\xe1\x03\x96\x0e\xe2\x38\xe6\x4d\x19\x99\x84\xc6\x99\x24\x9c\x98\x69\x8e\xc9\xd0\x9a\x76\xf8\x74\x71\x72\x3a\x24\x69\x9c\x84\x65\x95\x94\x46\xe3\x01\x7d\x22\x14\x36\xe3\x27\xdb\x14\x67\xad\xf1\xd7\x9c\xd0\x71\xad\x71\x69\xb4\x92\xe3\x8b\xf3\xbe\xff\x11\x10\xb7\x04\x10\x3a\xf1\x07\x00\x4e\x15\xaf\xea\x54\xe0\x1a\x98\x01\xeb\x95\x1b\x95\x02\x4e\x09\x69\x20\x63\x9b\x93\xd9\x97\xec\x72\xbd\xa3\xbf\x58\x24\x21\xcd\x66\x57\xd4\xa5\xc3\x81\x42\x42\x53\xf7\x81\xf8\xe8\xb4\x55\x54\xac\xb1\xa6\xac\xc0\xad\x8b\x46\xe6\xd8\xc6\x71\xda\x09\xb4\x8c\xb4\xd9\x78\x27\xcd\xba\x5d\x0f\xcd\x6c\xc5\x71\x7d\x11\x0b\xbc\x7e\xbc\xdd\x67\xe3\x31\xb1\x16\x8e\xd3\xad\xc3\xa3\xd7\xc3\x89\xad\x09\x57\x39\x2b\xcb\x75\x55\x21\x34\x3d\x54\x6f\x32\xeb\xc8\xa3\x01\xa9\x4b\xd3\x6a\xa7\x99\xea\xf5\x8e\xa0\x96\x99\x09\x5d\x1a\x4c\xf6\xc9\xfe\x6c\xc1\x5b\x33\x76\xba\x3a\x42\x68\xfb\x88\xb5\xdb\xf3\x57\xb1\x15\x6d\x99\x6c\x6f\x37\x15\x4a\x36\x85\xe5\x92\xad\xa8\xec\x40\x3a\xe5\x66\x7f\x67\xa9\x61\xaa\x66\xb0\xad\x3f\x8f\x93\xd0\x8a\xc2\x64\xc8\xd7\x65\x1e\xf3\xa6\xd1\x6f\x8b\xca\x45\x40\x6c\x09\x27\x94\xef\xb1\x84\x3d\x8a\x60\xf6\x45\xbd\xee\x7e\x8d\x92\xfa\xb4\x86\x19\x26\xc3\xcd\xc1\x83\xf7\x6c\xcd\xea\x13\xe6\xcc\x1a\xd8\x46\xcc\x3e\x95\xdc\x1d\xa2\xad\x54\xd7\x5f\x4a\xe2\x20\xb3\x77\x80\xa0\x7b\xbc\xd7\x34\x7f\xb8\xd7\xa0\x24\xaf\xf4\x16\xc6\x92\xda\x90\x4f\xb0\xa8\xdf\x46\xb6\x60\x0d\x79\x0b\x5a\x15\xbb\xb8\xaa\xf0\x20\x17\x1f\x30\x03\x69\xee\xaa\xa2\xb0\x45\x3f\xad\xb9\x52\x35\x97\x01\xf1\x2d\x46\x67\x17\xcd\xe4\x8e\x50\x4b\xed\x88\x75\x26\xb4\x3c\x3c\x17\xfc\xd3\x16\x47\x4d\x6b\xeb\x3a\x55\x55\x09\x20\x0d\xe8\x80\x5a\x93\x77\xe1\x9b\xd9\x1d\x9e\x1c\x98\x4d\x82\x03\x3c\xf5\xac\xe7\x59\xd1\x14\x6c\x85\x5c\x1c\x76\x94\x4b\xa0\xf5\x83\x44\xa7\x55\xf8\xeb\x66\x62\x63\xa9\x2c\x6b\x1c\x4e\xdc\xa0\x76\xac\xff\xbd\xf6\xe0\x66\x5c\x15\xc1\x17\x7b\xc3\xb3\xba\xd9\xb6\xcd\x5d\xbc\xdb\x5a\xdb\x15\xb6\xa7\x6d\x60\x48\x34\x8d\xb8\x97\xbb\x2e\x9f\xcb\xe5\xd6\x9d\xb0\x04\x73\x69\xfc\x73\x1f\x66\x34\x70\xc0\x61\x9d\x4a\x87\x2e\x3a\xeb\x4b\x12\x7b\x24\x34\x59\x51\xab\x58\x47\x8d\xa6\x97\xaf\x3b\x1e\xf2\x52\xce\x85\xe1\x13\xcc\x6c\x44\x5d\xa9\x14\xc8\x0b\x67\x25\xa0\x6f\xa2\xfa\x73\x7a\xe6\xbe\x6f\xde\x45\x2e\x77\x41\x9a\xef\xdd\x93\x91\xcd\x62\x0d\xec\xd3\xb0\x06\x9c\xbd\x8f\x44\x86\x7d\x5f\xf2\x33\x2c\xfc\xd1\x3b\xdc\xe5\xa2\xbe\x8b\x76\x75\x60\x23\xe1\xed\xe0\xcb\x24\xb8\xda\xb6\x62\x61\x69\x54\xf1\x8b\x56\x05\x1b\x33\x17\x61\xab\x15\xf5\x5e\xea\x9c\x79\x6e\xd7\x55\x51\x47\xc2\xcf\xb0\xf8\xc5\x7e\x3f\x42\x01\xcc\xc4\x7f\xb2\x50\xc8\x4b\xad\xd9\x02\x27\x8d\x25\xe8\xc3\xdb\x01\x3d\x7b\x4f\xbf\xa1\xa7\x67\xf4\xcd\xbb\xc7\xf6\x6d\x69\xb9\x7c\x3b\x38\x8a\xd7\xd0\x91\x0f\xff\x99\x3d\x78\xa3\x56\x97\x6f\x43\xa2\x09\xbe\x3d\x97\xe4\xbd\xca\x34\xaf\x6c\x56\x1a\x73\xfc\xed\xeb\x18\x3b\xe8\xb3\xb7\x83\xa8\xf1\x85\x73\xde\x3f\xfd\xf7\x9d\xff\xbe\x8f\x5a\xf6\xde\x78\x58\x64\xf8\xa8\x15\x12\xde\xee\x66\xf3\x1e\xd7\x75\xd4\x9b\x77\x9f\xe3\x70\xdd\xb3\xc7\xfb\xd7\xc5\x2d\x8b\xec\x71\x19\xdd\xf5\xf2\x8a\xd6\xe9\xbc\x53\x39\x6a\x2a\xa4\x4d\xb2\xf8\x61\x73\xf7\x3d\xf4\x14\xe4\x73\xd9\xeb\x10\x04\xb6\x36\xd9\x0a\x71\x48\xbc\xbd\x0e\x1f\x6d\x8a\x5a\xaa\x66\xa0\xbd\x8c\x7a\xcf\xfe\x77\xf3\x4e\x52\x17\xd7\x8e\x8f\xfe\xb7\x4d\xd2\x8e\x95\xb7\x6a\x5a\xad\x8a\x95\xbe\xa9\xc5\xbb\x01\xbd\x51\x6f\x6d\x82\x2f\x39\x93\x19\x4e\x42\x5e\x69\x0d\xd2\xdc\x33\x3d\x06\xb3\xaf\x17\xf2\x1a\xd4\x95\x7d\xc7\x60\x6d\x05\x1a\x9b\x79\x23\x1e\x36\xd8\x6a\x7d\x7d\x6f\xbf\x46\x0f\xbb\xc3\xcd\x2b\x37\x77\xd5\x33\x8d\x99\x1e\xd7\xed\x6e\x73\xff\x0d\x4a\xa3\x85\x1c\x6f\x6a\x20\xef\xf5\x82\x31\x98\x4b\xa7\x79\x1c\x73\x97\x9a\x9d\x03\xc4\x67\x28\x30\x3e\xc1\x5b\x5d\x0d\xf8\xf6\xc8\xf6\xfd\xb0\x73\x36\xd9\xde\x34\x50\xc9\x13\x70\xd3\x59\x91\x0f\xb3\xe5\x72\x17\x4e\xb3\x58\xc2\x1c\x25\xee\x45\xdf\xb6\xb6\xfb\xd4\xc5\x69\x73\xc9\x3e\x1d\x65\x0f\xfc\xd1\x76\xf6\xf9\x02\x67\xb4\x2e\x47\x9b\x27\x48\x77\x99\x75\x2f\x53\x29\x3d\x25\x24\xb2\x68\x7b\x79\x24\x07\x5f\xf5\xe3\x17\xf7\x40\x11\x3d\x3c\xd2\xfa\xda\x1b\xbd\xa7\x36\x38\xa2\xe3\xf3\x2a\x47\xdc\x7a\x39\xde\x28\x8c\x52\xad\x0a\x5b\x36\x4f\x2c\x26\x40\x5a\xe5\x10\x07\xb6\xd3\x4a\xd4\x73\x70\x71\xde\xaf\xf2\x8b\xe3\x5a\x4e\x74\x7c\x9e\x8b\x8b\x73\x86\x26\x1a\xb2\x38\xf8\x47\x83\x75\xc9\x67\xa1\xec\xe2\xbc\x9f\x8b\x8b\x63\xba\x7e\xd3\x89\x4e\x69\xfb\x05\x2d\x1a\xd0\xee\xf3\x7c\xeb\x35\x32\x62\xa1\x54\xaa\xa0\xf5\x53\x88\x05\xba\xd7\x80\xe8\xe8\x74\x67\xa7\x57\x9b\x67\xd9\x38\xd9\x9e\x94\xea\x4a\xc9\x2c\x17\xdc\xc4\xbb\x8f\x61\x5b\xb1\xc6\x7d\x9f\xce\xd6\x57\x2a\xb2\x69\x22\xdb\xa6\x65\x86\x9d\xb0\x42\x04\xf4\xf8\xa1\xfe\x5d\x68\x35\x13\x29\xb4\xec\x18\x3c\x1e\xd3\x9d\xfe\xdd\xc7\xd5\x30\xd9\x8d\xaa\xe5\x32\xd9\x2c\x80\x3d\xa0\xf6\x2b\x19\xbe\xfa\x6f\x00\x00\x00\xff\xff\xa8\x6a\xdf\xd9\xb0\x1e\x00\x00") func webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJsBytes() ([]byte, error) { return bindataRead( @@ -658,12 +659,32 @@ func webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs() (*asset, err return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js", size: 7856, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js", size: 7856, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorJsHandlebarsJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x7d\x7f\x77\x1b\xb7\x8e\xe8\xff\xfe\x14\x13\x6d\x4e\x25\x35\x63\xd9\x92\xfc\x23\x96\xeb\xdb\xe7\x26\xee\xad\xf7\x26\xb6\x9f\xed\xb4\xaf\x2b\xab\x89\x2c\x8d\xed\x69\xe4\x19\xed\x8c\x94\xd4\x37\xf5\x77\x7f\x00\x48\x82\x3f\x47\x52\x9a\xdc\x7d\xfb\xce\xd9\x9c\x1c\x6b\x86\x43\x82\x20\x08\x82\x20\x08\x82\x1b\xdf\xae\xbd\xc8\xa7\x0f\x45\x7a\x7b\x37\x8b\x1a\x2f\x9a\x51\x67\xb3\xdd\x8e\xae\x1f\xa2\x5f\x93\xbb\xf9\x78\x18\xfd\x63\x38\xfb\xe7\xda\xda\x59\x52\xdc\xa7\x65\x99\xe6\x59\x94\x96\xd1\x5d\x52\x24\x90\xe3\xb6\x18\x66\xb3\x64\x1c\x47\x37\x45\x92\x44\xf9\x4d\x34\xba\x1b\x16\xb7\x49\x1c\xcd\xf2\x68\x98\x3d\x44\xd3\xa4\x28\xa1\x40\x7e\x3d\x1b\xa6\x59\x9a\xdd\x46\xc3\x68\x04\x55\xad\x41\xce\xd9\x1d\x80\x29\xf3\x9b\xd9\xc7\x61\x91\x40\xe6\x71\x34\x2c\xcb\x7c\x94\x0e\x01\x5e\x34\xce\x47\xf3\xfb\x24\x9b\x0d\x67\x58\xdf\x4d\x3a\x49\xca\xa8\x31\xbb\x4b\xa2\xda\x85\x2c\x51\x6b\x52\x25\xe3\x64\x38\x59\x4b\xb3\x08\xbf\xa9\x4f\xd1\xc7\x74\x76\x97\xcf\x67\x51\x91\x94\xb3\x22\x1d\x21\x8c\x38\x4a\xb3\xd1\x64\x3e\x46\x1c\xd4\xe7\x49\x7a\x9f\xca\x1a\xb0\x38\xb5\xbf\x5c\x03\xa0\xf3\x12\x5a\x80\x78\xc6\xd1\x7d\x3e\x4e\x6f\xf0\x37\xa1\x66\x4d\xe7\xd7\x93\xb4\xbc\x8b\xa3\x71\x8a\xa0\xaf\xe7\x33\x48\x2c\x31\x71\x94\x64\x58\x0a\xda\xb1\x91\x17\x51\x99\x4c\x26\x6b\x00\x21\x05\xbc\xa9\xad\x1a\x3b\xca\x83\xa8\x4f\x91\xa0\x33\x49\xa2\x12\x53\x3e\xde\xe5\xf7\x76\x4b\xd2\x72\xed\x66\x5e\x64\x50\x65\x42\x65\xc6\x39\x90\x8c\x6a\xfc\x3d\x19\xcd\x30\x05\xb3\xdf\xe4\x93\x49\xfe\x11\x9b\x36\xca\xb3\x71\x8a\x2d\x2a\x7b\x6b\x6b\x97\xf0\x69\x78\x9d\x7f\x48\xa8\x2d\xa2\x7b\xb3\x7c\x06\xa8\x0a\x14\xb0\x03\xa6\xba\x57\xe5\xa7\xf2\x6e\x38\x99\x44\xd7\x89\x24\x18\xd4\x9b\x66\x6b\x98\xa4\x9a\x53\x60\xf5\xe5\x0c\x3a\x3e\x1d\x4e\xa2\x69\x5e\x50\x7d\x6e\x33\x5b\x50\xff\x4f\x47\xd1\xc5\xe9\x8f\x97\xbf\x1c\x9e\x1f\x45\xc7\x17\xd1\xd9\xf9\xe9\xcf\xc7\x2f\x8f\x5e\x46\xb5\xc3\x0b\x78\xaf\xc5\xd1\x2f\xc7\x97\x3f\x9d\xbe\xb9\x8c\x20\xc7\xf9\xe1\xc9\xe5\xaf\xd1\xe9\x8f\xd1\xe1\xc9\xaf\xd1\x3f\x8e\x4f\x5e\xc6\xd1\xd1\xff\x39\x3b\x3f\xba\xb8\x88\x4e\xcf\xd7\x8e\x5f\x9f\xbd\x3a\x3e\x82\xb4\xe3\x93\x17\xaf\xde\xbc\x3c\x3e\xf9\x7b\xf4\x03\x94\x3b\x39\xbd\x8c\x5e\x1d\xbf\x3e\xbe\x04\xa0\x97\xa7\x11\x56\x28\x41\x1d\x1f\x5d\x20\xb0\xd7\x47\xe7\x2f\x7e\x82\xd7\xc3\x1f\x8e\x5f\x1d\x5f\xfe\x1a\xaf\xfd\x78\x7c\x79\x82\x30\x7f\x3c\x3d\x8f\x0e\xa3\xb3\xc3\xf3\xcb\xe3\x17\x6f\x5e\x1d\x9e\x47\x67\x6f\xce\xcf\x4e\x2f\x8e\xa0\xfa\x97\x00\xf6\xe4\xf8\xe4\xc7\x73\xa8\xe5\xe8\xf5\xd1\xc9\x65\x0b\x6a\x85\xb4\xe8\xe8\x67\x78\x89\x2e\x7e\x3a\x7c\xf5\x0a\xab\x5a\x3b\x7c\x03\xd8\x9f\x23\x7e\xd1\x8b\xd3\xb3\x5f\xcf\x8f\xff\xfe\xd3\x65\xf4\xd3\xe9\xab\x97\x47\x90\xf8\xc3\x11\x60\x76\xf8\xc3\xab\x23\x51\x15\x34\xea\xc5\xab\xc3\xe3\xd7\x71\xf4\xf2\xf0\xf5\xe1\xdf\x8f\xa8\xd4\x29\x40\x39\x5f\xc3\x6c\x02\xbb\xe8\x97\x9f\x8e\x30\x09\xeb\x3b\x84\xff\x2f\x2e\x8f\x4f\x4f\xb0\x19\x2f\x4e\x4f\x2e\xcf\xe1\x35\x86\x56\x9e\x5f\x72\xd1\x5f\x8e\x2f\x8e\xe2\xe8\xf0\xfc\xf8\x02\x09\xf2\xe3\xf9\xe9\xeb\x78\x0d\xc9\x09\x25\x4e\x09\x08\x94\x3b\x39\x12\x50\x90\xd4\x91\xd5\x23\x90\x05\xdf\xdf\x5c\x1c\x31\xc0\xe8\xe5\xd1\xe1\x2b\x80\x05\xdd\x73\x62\x75\x5f\x6b\xed\xdb\x8d\xb5\xb5\x8d\x0d\x18\x33\xd7\x1b\x77\xc0\x3d\x93\xe4\x7a\x58\x94\x1b\xd7\xc3\x32\x69\xfd\x5e\xc2\xa7\x6f\x7f\x2f\xef\xd2\x6c\x16\x25\xff\x99\xcd\x27\x93\xde\xac\x98\x27\x50\x04\x79\xac\xf5\x13\xe7\x8f\x0e\xa2\x4f\x8f\xfb\x6b\x6b\x8d\x9b\x79\x46\xc3\xb2\xa1\xbf\x35\xa3\x4f\x6b\x6b\xfa\xb5\xf5\x33\x50\x11\x11\x3f\x88\x6a\xed\xd6\x66\xab\x18\xb5\x3a\xb5\x7d\x2b\xc7\x5d\x32\xc1\xc1\x13\x49\xa8\xc6\x97\xe9\xb0\x40\xe6\xe4\xfa\x8c\x4f\x45\x72\x0b\x43\x37\x29\x7e\xa2\xc2\x90\x81\x51\xc9\x86\xf7\x30\x38\x6f\x48\x54\x7c\x00\xb8\x09\x62\x14\x45\xe9\x4d\x43\xbf\xc3\xe7\x16\x8c\x13\x28\x26\xd3\xf6\xa3\x47\xc8\x43\xcd\x94\xe8\xf4\x11\xce\x00\x01\x67\xfb\x6b\x15\x95\x9f\x09\xfc\xfc\xda\x41\xa8\x88\x5a\x09\xa2\x6a\x06\x83\x84\xcf\x95\x30\x45\x83\x1a\x75\x81\xc6\x6b\x1c\xd4\xd9\x6d\x3d\xd6\x35\x80\x60\xe6\x16\xc1\x33\xc9\xd7\xb2\x35\x49\xb2\xdb\xd9\x5d\x74\x70\x70\x10\x75\xc4\xe7\x08\xe4\xe6\x0c\x84\x4e\x34\xcf\xc6\xc9\x4d\x9a\x25\xe3\x7d\x48\x7d\x8c\x92\x49\x99\xc8\x0c\xb3\xbb\x22\xff\x18\x65\xc9\xc7\xe8\xa8\x28\xf2\xa2\x51\x7b\x91\xcf\x27\x63\x94\x20\x20\xab\x41\xb4\x4c\x8b\x1c\x70\x98\x3d\x44\xf5\x5a\xf4\x2c\x82\xca\xe0\x6f\xad\x5e\x6b\x12\xa0\xb5\x47\xf8\x5d\xfb\x30\x2c\x40\x7c\x5d\x80\x10\x05\xb1\x75\x10\x9d\x92\x40\x6b\x41\xc1\x59\x3e\x7b\x98\x26\x2d\xf5\x4d\x37\xe0\x12\x92\x91\x1b\xfa\xb9\x10\x7e\x3f\xca\xf4\x41\x6d\x31\x41\xae\x27\xf9\xe8\xfd\x4f\x55\x54\x01\x89\x39\x4b\xfe\x98\xc5\x51\x3e\x25\x39\x26\x68\x80\xd8\xc9\x1e\x86\x2a\xe5\xa7\x96\x4a\xf9\xf3\x4f\x5d\x1e\xf2\x3f\x22\xd7\x18\xd9\xb0\xe3\xd7\x24\x10\x20\x25\xe2\x5c\xdb\x97\xef\x33\xd1\x08\xd5\xba\xd6\x08\x24\xab\xc2\x01\xc9\x42\xbd\x23\x32\x1d\x1c\x58\x4d\x47\xee\x93\x19\x01\x80\x7c\x12\xe5\x91\x59\x9a\xc8\x89\xa2\x38\xe7\x02\x08\x38\x0e\x9d\x6e\xbd\xc9\x64\x01\xdd\xab\x4e\xa1\x9b\xe1\x44\xb4\x52\x27\x46\x38\xaa\x1d\x40\x92\x1c\x21\x68\xdc\x02\xee\xad\xc3\xa2\x18\x3e\x0c\x6a\x0a\x84\xae\x51\x71\xe0\xdf\xa2\x4d\xf5\x91\x6b\xf0\x07\x7b\x2b\x19\x8e\xee\xfc\x4e\xdb\xa7\x72\x16\x8f\x56\xa3\x19\xd1\x98\xb5\x32\x6b\xd2\xe8\xbe\x60\x56\x35\xb0\xf8\x87\x39\x64\x9b\x9e\x70\x19\x15\x09\xa8\x2f\x3f\x16\x30\x5c\x35\x4f\x8b\x44\x8b\x69\x04\x4d\x44\x73\x4d\xe8\x9a\xff\x91\x9d\x28\x93\x62\x1c\x78\x83\x34\x1c\x72\x66\x81\x06\xe1\x59\x09\x02\x3b\x0d\x33\xc8\xe6\x01\x0c\x4f\x7c\x4c\xf2\xdb\x5b\x92\x83\x88\xcb\xcb\xa3\x1f\xde\xfc\xbd\x17\x6d\xe2\x3c\xfb\xe3\x69\x2f\x6a\xc7\x38\x9f\x9e\xf4\xa2\x0e\xcc\xc6\xe7\xe7\xa7\xe7\xbd\xa8\x1b\x47\x93\xe4\x43\x32\xc1\x27\xe4\xb7\xfb\x04\x94\xa9\xf1\xeb\xe1\xb4\x17\x7d\xda\xec\x45\xf5\x71\x72\x3d\xc7\x01\xd6\x86\xe7\x34\xbb\xc9\xe1\xb1\x03\x8f\xa0\x12\x64\xf0\xd8\x85\xc7\x04\x45\x46\xfd\x91\x4a\xc3\x8c\x32\x1a\x66\xa8\x6d\x80\x9a\x52\x14\xe9\x78\x9c\x60\x87\x91\x26\x71\x97\x97\x30\x9d\x64\x1f\xd2\x22\xcf\x50\x56\x41\x76\x40\xb6\xa7\xa9\x48\x78\xc4\xd8\x2a\xcd\x55\x51\xc3\x6b\x5b\x8b\xf2\x45\xdf\x1d\x08\xc4\x35\x93\x21\x59\x05\xfa\xd0\x7c\xbf\x18\xb7\xac\x4f\xe5\x06\xfb\xb2\x18\x56\x82\xf4\x45\x6d\x17\x78\x2f\x9f\x24\xd1\x13\xe0\xf4\x3a\x8b\xcb\x7a\xf4\xcd\x37\xea\x53\x5f\x40\x19\xe8\x5a\x23\xf7\x13\xcb\x00\x4c\x14\xcd\x51\x55\x3d\x6a\x6e\x0d\xf4\x9b\xc9\x8b\x16\x2d\x02\x8d\x81\x1f\x33\x0f\x08\x8b\xc5\x42\x13\x87\xd9\x6a\x62\xd2\x11\x7d\x71\xb5\xdc\x54\xac\x9c\xc2\x27\x60\x31\x25\x1a\x41\x99\x1e\xce\x86\x52\xf6\x45\x0d\x55\x08\x13\x15\xd5\xf0\xd9\xee\x23\x63\xa4\xd9\x25\xc4\xb8\xb5\x05\x21\x74\x87\xee\x30\x96\x72\x75\x31\xc0\xea\xbe\x48\x82\x26\xa0\x7e\x3b\xc2\x12\x24\xb7\x9a\xaa\xf3\x6e\x60\xb2\xc3\x26\xfc\x6e\x88\x60\x21\xbf\xf6\xa3\xf4\xbb\xdf\xe1\xcf\xb3\x67\x66\x57\x63\x83\x64\x43\xa8\x11\x40\x8a\x71\xf2\x07\xaa\x0f\xfb\xb2\x73\xa5\xf4\x81\x24\xfc\xfb\xcc\x10\x41\xfd\x74\x10\xcb\x62\x3d\x41\x81\x47\x97\x31\x6c\x79\xa7\x90\x7b\x9f\x3c\xe0\x18\x52\x92\xcc\x42\x87\xa5\xee\xdd\xb0\x3c\xfd\x98\x9d\xc9\x89\xba\x01\x65\x9a\x66\x4e\xca\x6b\x61\x8e\x50\x0f\x10\xb6\x89\x79\x25\xee\x90\x0f\xb1\xd7\xc8\x6b\xdc\x09\xf8\xb3\x67\xfa\xf5\x31\xc0\xed\x52\xf1\xa2\x8e\xda\x6c\xb2\x90\xd6\x8a\x97\x31\xeb\xac\x69\x09\x07\x3f\xfb\x9e\xd0\x76\x79\x3b\xbd\x59\x8d\xb3\x97\xcc\xd5\x5f\x63\xaa\x7e\xa2\xb2\xc1\xec\x60\x60\xfc\x66\x96\x4e\x60\xd8\x94\x47\xf7\x53\xe8\x1b\x55\xa5\x33\xfd\x3a\xa3\xcb\x9b\x86\x83\x99\xad\xc9\x7f\x29\xa5\xe6\x19\x2c\xbc\xcb\x7f\x85\x1c\xd0\x19\x0d\x5d\xda\x48\xd7\x85\x49\x9b\x5a\xa0\x11\xf4\xb1\x3f\x07\x9a\xba\x71\x14\xd0\x0e\x96\x35\x14\x4d\x02\xcb\x9b\xe9\xd3\x52\x73\xc3\xb2\x1a\x40\x00\xaf\x46\x47\x31\x5b\x69\xa2\xd1\xc8\x07\x09\x66\xbe\xcb\x29\xed\x89\x98\xe1\xa3\xef\x23\x58\x29\x94\xc9\x71\x36\x6b\xf8\xb9\x60\x2a\x06\xc5\x0a\xe6\x72\x47\x53\x30\x66\x04\xa7\x15\x8f\x0d\x67\xd9\xd6\x84\xd4\xfd\xc0\xea\x6f\x94\xdf\x4f\xd3\x49\x52\x6c\x50\xf5\x05\x2e\x04\x37\xbe\x8d\xfe\x3d\x45\x93\xcf\x6d\x92\x25\x05\xd9\x72\xc4\xc7\x08\x56\x83\xd8\xbc\x3b\x73\x31\xa8\xd7\x81\x30\xc4\xf1\xab\xcc\x0b\xda\xc8\xac\x18\x8e\x12\x3d\xd9\x47\xf4\x8e\x2a\x57\x04\x9a\xc3\xc3\x43\x0f\xd5\xee\xb5\xf2\xe1\xfe\x3a\x9f\x94\x6f\xe1\xad\x46\x6a\x45\xad\xd7\x89\x6b\x45\x9e\xcf\x6a\xbd\x6e\x5c\x03\x55\xe8\x16\x66\x88\x5a\x6f\x2b\xae\x1d\x9d\xfe\x58\xeb\x6d\xc7\xb5\x32\xbd\x9f\x4e\x80\x54\xc4\x5e\xb5\xde\x0e\xa4\xcc\x00\x4d\x5a\x0c\xd5\x7a\xbb\xc6\x6b\xad\xf7\x3c\xae\x81\x78\xcc\x38\xf3\x5e\x5c\x1b\x4d\xf2\x32\xf9\x01\x57\x14\xb5\x5e\x7b\x53\x7c\x57\xaf\xed\xb8\x76\x3f\x87\xe2\xa3\x3b\xc8\xdb\x06\x44\xe4\xfa\x0d\x5e\x00\x19\x5c\xc3\x1f\x9d\x5c\xc2\xcb\x16\xbe\xbc\x7e\x2d\x5e\x00\xa5\xd3\xb3\xa3\x93\xb7\x3f\xbc\x3a\x7d\xf1\x0f\x78\x07\x84\xd2\xec\xb5\x06\x03\x18\xbd\x78\x75\x7a\x71\x04\x8f\xcf\x65\xd6\xe3\x13\x5c\x1b\x63\xca\x9e\x4c\x39\x3a\x79\x29\xcb\x77\x36\xb1\xda\xd9\x1d\x3c\xb5\xc5\x47\x78\xea\xc8\x6c\x6f\x4e\x8e\x2e\x5e\x1c\x9e\x1d\xbd\x84\xb4\xae\x4c\x23\x13\xc8\xe1\x2b\x48\xd9\x62\x84\x4f\x60\x56\x85\x84\x6d\x4a\x18\xde\x03\x5d\x3a\x80\x16\xcc\x18\x08\x16\x10\x7a\x79\x78\x79\x08\x4f\xcf\xe5\x77\x78\x04\x44\x2e\x2e\xd1\x60\x02\x74\x07\x0c\x8e\xa1\xa9\x7f\x3f\x3a\x87\x17\x40\xe2\x87\xd3\xd3\x57\x47\x87\x80\x47\xb7\x23\x80\x5c\x24\xb7\x92\xdc\xdd\xae\x95\x02\x09\x80\xc4\x31\xa0\xd7\x85\xba\x8f\xfe\xf7\x9b\xc3\x57\x17\xf0\x0c\x75\x4b\x2c\xdf\x9e\x1c\xbe\x86\x76\x77\x77\x45\x23\x0d\x40\x80\xcb\xc5\xd1\x19\x3c\x00\x26\x4f\x87\xa3\x51\x32\x05\x68\x80\xc9\xd3\x24\x1b\x03\xa1\x80\x57\x66\x68\xe9\xca\x86\x82\x5b\x3a\x3d\xc9\x2f\xf1\x76\x8f\x58\x23\x6e\x6f\xf5\xb8\x8b\xe2\xf6\x76\x8f\xbb\x28\x6e\xef\xf4\xcc\x2e\x8a\xdb\xcf\x7b\xb2\x4b\xe2\xf6\x5e\xcf\xee\x92\xb8\xb3\xd9\x73\xba\x24\xee\x74\x44\x12\x3c\x75\x7b\x6e\x47\xc4\x9d\xad\x9e\xdd\x11\x71\x07\xe0\x13\x85\xe3\x2e\x00\x93\x64\x8d\xbb\xed\x1e\x93\x35\xee\x02\x48\x45\xd6\xb8\x0b\xc8\x02\xcd\xe2\x2e\xe0\x29\x69\x16\x77\x77\x7b\x36\xcd\xe2\x2e\xa0\x8a\x14\x02\x4a\xc0\xb0\x18\xcf\x69\x54\x21\x2d\xfa\x9b\x71\xbf\x1b\x77\x06\x71\x7f\x4b\xfe\xed\x1a\xcf\x6d\xe3\xef\x26\xfc\xdd\xa5\xe7\x5d\xfa\xfa\x9c\x72\xaa\xbf\xed\xe0\x5f\x18\x14\xf8\x79\x8f\xfe\xc2\x80\xa1\x9f\x8e\xf5\xd3\x55\x3f\x5b\xf0\xb3\x43\x90\x81\xeb\xbb\xe2\xa7\x63\xfd\xb4\xf5\x4f\x47\xe4\x84\x1f\x7a\xdb\x5b\xfe\x23\xca\x75\x45\x5b\xe1\x87\xde\x44\x6b\x17\xfd\xc0\x30\xa0\xe2\x6d\x51\x40\x34\xb7\x8b\xad\x1b\x00\x29\x93\x02\xb4\xae\xfb\x43\xa2\xa6\x21\xad\x86\x59\x9e\x3d\xdc\xe7\xf3\xb2\xf1\xf0\x40\x72\xfe\xe1\x01\xd5\x44\xfc\x81\x15\x42\x96\xc3\x03\xfc\x27\x51\x13\x3f\x7d\x1a\xbf\x7d\x4a\xd6\x2f\x94\x80\x4f\x37\x41\xfa\x3d\x7d\xaa\x56\xc5\xeb\x28\xb7\x4b\x98\x9e\x46\x77\x51\x43\x96\xc0\xbc\xa3\x21\x4c\x8e\xb0\xc6\x92\x53\xd2\xd3\xa7\xfd\xa7\x9b\xeb\xed\xc1\x7e\xb4\x76\x0d\x9a\xf1\xfb\x7d\x91\x01\x56\x5e\x24\xca\x9f\xca\xa5\xe3\xc3\x43\xeb\x4c\xc8\xc4\x93\x7c\x9c\x34\xfa\xa0\xa2\x51\xc9\x41\xd3\x29\xd8\x5d\x5c\x50\x54\xd7\xa9\x2c\xbe\xb5\x4a\x71\x20\x67\xd4\xf7\x8a\x6e\xaf\x50\xd4\x2b\xb4\xb3\xbc\x9d\x7e\x4d\xbb\xcb\x0a\xb9\x05\x9e\x1b\x05\xfa\x02\x11\x97\xe0\x7b\x3d\xee\x8a\xd6\x74\x5e\xde\x69\x7c\xb9\x64\x45\x57\xb5\x37\x7d\x74\x68\x62\x09\x11\x1c\xc1\x4b\x0d\x49\xa7\x54\x75\x46\xbb\xfd\x79\x90\x2b\xeb\xf0\x21\x9b\xfc\x25\xb2\xb8\x39\xba\x4b\x73\x04\x78\xe5\x05\xea\x23\xd9\x6c\x41\x87\xb7\x03\x6c\xf2\x22\xbf\xbf\x5f\x52\x2a\xc0\x27\x6a\xaa\xb5\x18\xb3\xbf\x69\x50\xa1\xdf\xf6\x01\x05\x78\xe7\xaf\x01\x7a\xee\xd2\x27\xc0\x19\x7b\x5f\xa9\xb2\x4e\x80\xc5\x56\x02\x14\x0b\x33\xa2\x0b\x2e\xc0\x57\xd2\xb0\x6d\x41\xf3\xca\x85\xa4\x92\x57\xce\xe4\x48\x0f\x02\x70\x95\x9d\x60\x32\x51\xbf\xaf\x20\xc0\xaa\x20\xcf\x46\xc3\x99\x46\x45\x71\xb2\x27\x28\xb7\x03\x00\xda\x0e\x00\x2c\x8e\xfa\xb6\x57\x78\x27\x5c\xb8\xb2\xb2\x5d\x3f\x3f\xe6\x0e\xc2\xb6\x84\x4e\x5f\x92\xeb\x25\x68\xf7\x26\x9f\x57\x15\xfe\xeb\xe2\xa8\xbb\xb9\x5c\xd8\x75\xdb\xcb\x06\x77\x37\xd0\xd5\x62\x31\xbd\x60\x94\x76\x03\x93\x0f\x2c\x6d\x92\xdb\xa4\x58\x54\x2a\x20\x47\x7e\xc8\xf3\x49\x32\xcc\x16\x95\x0a\xc8\x11\x97\xb8\x6e\x91\x80\x10\xf9\x09\x74\xd8\x45\x45\x76\xff\x7a\x3f\xac\x30\xe9\x74\xf7\xbc\x3c\xc6\xdc\xec\xe6\xde\xf2\x7b\x96\x72\x57\x76\x8f\x07\xa0\xbd\x10\x40\xa0\xab\x3c\x08\x9d\x85\x10\x02\xdd\xe6\x41\xe8\x2e\x84\xe0\x8d\x0f\xb7\x78\x48\x41\xd1\x6b\x9f\x05\x5d\xb9\x15\x60\x98\xe3\xf1\xa2\x02\x3b\xaa\xef\x3b\x4b\xfa\xbe\xe3\x61\xb9\xbb\xb0\xef\x1f\xd7\x70\x55\x33\xbc\x9e\xc0\x32\xb9\xff\xa9\xdb\x6b\xc7\x5b\xb0\xfa\xdd\xee\xf5\x3b\xf1\xee\x20\xde\x81\x05\xf0\x2e\x2c\x7c\x9f\xc3\x12\x77\x0f\xd6\xb5\xa0\x05\x80\xce\xda\x81\x35\x2c\xcc\xc9\xa0\x88\xc3\xbc\xdb\x07\x95\x16\x84\x3b\xcc\xa5\xf8\x04\xe4\x83\xf9\x11\x9f\x40\xc1\x85\x39\x07\x9e\xb6\x07\xb8\x78\xc1\x24\x50\xcd\x41\xe8\xe2\x13\xa6\x89\xa2\x3b\x83\xc7\xf8\x53\xbb\xd7\xef\xe2\xaf\x80\xb1\x2b\x1f\x3b\xf1\xce\x00\x6a\x87\x15\xeb\x97\x54\xdf\xde\x1b\xe0\x7a\x4a\x40\x5b\x86\x08\xd5\xba\x8d\xed\x86\x25\xf0\x73\x5c\xfd\x7e\x49\xab\x37\x25\xb4\xa5\xcd\xdf\xc5\x95\x34\xcc\xe2\x90\xd2\x01\x58\x30\x27\xc2\x3a\xba\x23\xde\x21\x6f\x97\x6a\xe9\x40\x7f\xc0\x40\xee\xec\x28\x3c\x9f\x0f\x08\x13\xf1\xc0\x29\x3b\xea\x61\x4f\x3e\x08\x34\x9e\x0b\x34\xc4\x43\x57\x3d\xc8\xe2\x00\x71\x0b\x57\xe2\x5f\xab\xbb\x37\x25\xfb\x2c\x6b\xf8\x16\xae\xf9\xff\xab\x2b\x25\x4a\x11\x90\x2d\x7e\xd2\x69\x3b\xfc\xb4\xa7\x9e\x04\x64\x7a\xea\xf0\x53\x97\x9f\x14\x14\x06\xdd\x65\xd0\x5d\x06\xdd\x65\xd0\x5d\x06\xdd\x65\xd0\x5d\x06\xdd\x65\xd0\x5d\x06\xdd\xd5\xa0\xb7\x18\xf4\x16\x83\xde\x62\xd0\x5b\x0c\x7a\x8b\x41\x6f\x31\xe8\x2d\x06\xbd\xc5\xa0\xb7\x34\xe8\x6d\x06\xbd\xcd\xa0\xb7\x19\xf4\x36\x83\x66\x52\xb7\xb7\x19\xf4\x36\x83\xde\x66\xd0\xdb\x92\xb3\xbb\x9b\x2b\xf0\x33\xe6\x6b\xaf\x98\xaf\xb3\x42\x3e\xd0\xc4\x60\x6d\x0e\x33\x26\xa4\x77\xb7\xa4\x88\x01\xa4\xb8\xb9\xd0\x71\x5f\x34\xbc\xb5\x54\xe9\xac\x3a\xbe\x57\x1c\xd5\x5b\x28\xf3\xba\xdb\x5f\x49\xe6\x6d\xad\x38\x1e\xf6\x54\xef\xef\xa9\xce\xdf\x53\x7d\xbf\xa7\xba\x9e\x81\xee\xa9\x8e\xdf\x53\xfd\xbe\xa7\xba\x7d\x4f\x53\x98\x87\x41\x87\x87\x41\x87\x87\x41\x87\x87\x41\x87\x87\x41\x87\x87\x41\x87\x87\x41\x87\x87\x41\x87\x86\x81\x10\x92\xdd\x1d\xf5\xdc\x21\x02\x02\x69\xb7\x80\x94\x3b\x68\xd3\x03\xbd\xb8\xfb\x5c\x92\x79\x0b\x9b\xba\x87\xe6\x3c\xd0\x44\xf1\x1d\x68\x05\xfa\x26\x3e\x01\xdc\x2e\x11\x66\x0b\x08\x03\xca\xe2\xd6\x26\x30\x4a\x6f\x6b\x47\x76\xcb\x96\xc9\x74\xa2\x9e\xe7\xba\x4e\x82\xcb\x4f\xdd\x4d\x7e\x6a\xf3\x53\x87\x9f\xb6\xf9\x89\xfa\x66\xcb\x84\xb3\xcb\x70\x76\x19\xce\x2e\xc3\xd9\x65\x38\xbb\x0c\x67\x57\xc0\xa1\x27\x84\xb3\xd9\xdb\xda\x23\xfa\x81\x10\xdc\x94\x29\xdb\x6d\x3b\x85\x68\xb1\xdd\x31\x9e\x0d\x5a\x6e\x6f\x19\xcf\xdb\x44\xcb\xed\x9d\xd0\xd0\x13\x78\x6e\x31\x26\x5a\x76\x74\xbf\xda\x60\xea\xae\x30\x98\x84\x78\xd9\x65\x21\xb5\xcb\x42\x6a\x97\x85\xd4\x2e\x0b\xa9\x5d\x16\x52\xbb\x2c\xa4\x76\x59\x48\xed\x1a\x7c\xb4\xcd\x7c\xb4\xdb\xdb\xde\xb5\x39\x68\xfb\xf9\xd7\xe0\x20\x83\x6b\xbb\x9b\xaa\xe7\xf1\x49\xf4\x3c\x3d\xb5\xf9\xa9\xc3\x4f\xdb\xf2\x49\x97\x06\x55\x06\xea\xda\xde\x93\x75\xed\x98\xdf\xda\x0c\xb9\xcd\x90\xdb\x0c\xb9\xcd\x90\xdb\x0c\xb9\x6d\x94\xee\x70\xe9\x0e\x97\xee\x70\xe9\x0e\x97\xee\x70\xe9\x8e\x51\xba\xcb\xa5\xbb\x5c\xba\xcb\xa5\xbb\x5c\xba\xcb\xa5\xbb\x46\xe9\x2d\x2e\xbd\xc5\xa5\xb7\xb8\xf4\x16\x97\x66\x1e\xec\x6e\x19\xa5\x79\x4c\x76\x79\x4c\x76\x79\x4c\x76\x79\x4c\x76\x79\x4c\x76\xb7\x8d\xd2\xcf\x39\xf5\xcb\xc7\x27\xb1\xf7\x4e\xdb\x1e\xa9\xb2\xa7\x0c\x3d\x61\x93\x67\xdc\x4d\x66\xe6\x4d\x66\xe6\x4d\x66\xe6\x4d\x66\xe6\x4d\x66\xe6\x4d\x66\xe6\x4d\x66\x66\x62\x02\x60\xe1\x9d\x6e\xd5\xdc\x42\xc3\x70\x8b\x9f\x74\xda\x0e\x3f\xed\xa9\x27\x59\x65\x9b\xab\x6c\x73\x95\x6d\xae\xb2\x6d\x8c\xc8\x1d\x86\xb8\xc3\x10\x77\x18\xe2\x0e\x43\xdc\x61\x88\x3b\x0c\x71\x87\x21\x1a\x2a\x1a\xcf\x49\x6d\x9e\x94\xda\x3c\x2b\xb5\x79\x5a\xd2\xd2\xa3\xcd\x13\x53\x9b\x67\xa6\x36\x4f\x4d\x6d\x63\x6e\x62\xd2\x77\x98\xf4\x1d\x26\x7d\x87\x49\xdf\x61\xd2\x77\x98\xf4\x1d\x26\x7d\x87\x49\xdf\xd9\xd4\xa0\x99\xc4\x1d\x26\x71\x87\x49\xdc\x61\x12\x77\x98\xc4\x1d\x26\x71\x87\x49\xdc\x61\x12\x77\xda\x5a\x3c\xef\x18\xec\xde\x31\x9f\xf7\x14\x9b\xe2\x93\x60\x53\x7a\x6a\xf3\x53\x87\x9f\xb6\xe5\x93\x66\x7d\x66\xde\xae\x60\x54\xc5\xbe\x92\x9b\xb6\xa5\x28\xdc\x91\xb0\xe1\x69\x47\x09\xc1\x9d\x5d\x25\x04\x77\x9e\x07\xf5\x35\x31\x78\x76\x78\x18\xed\xf0\x30\xda\xe1\x61\xb4\xc3\xc3\x68\x87\x87\xd1\x0e\x0f\x9e\x1d\xdd\xfe\x5d\x83\xcc\xac\xbf\x77\x58\x7f\xef\xb0\xfe\xde\x61\xfd\xbd\xc3\xfa\x7b\x87\xf5\xf7\x0e\xeb\xef\x1d\xd6\xdf\x3b\xa6\x14\x63\x32\x75\x0d\x32\x6d\xb1\x24\xde\x32\xa4\xed\x16\x4b\xd1\x2d\x43\x8a\x6e\xb1\x74\xdc\x32\xe0\x6e\xb1\xd4\xdb\x32\x54\x7a\x5e\xc5\xb5\x79\x19\xd7\xe6\x75\x5c\x9b\x17\x72\x6d\x5e\xc9\xb5\x79\x29\xd7\xe6\xb5\x5c\x9b\x17\x73\xf0\xf4\x38\x88\xd7\xc6\xc9\xcd\x70\x3e\x99\x89\x2d\xa5\xb2\x17\xa1\x0e\x8a\x5f\x21\x9b\xa0\xd5\x73\xea\xa4\x3e\xcd\x4a\xf1\xf6\x2e\xb3\xd4\x1a\x6d\x9e\x93\x43\xae\xb1\x13\xa5\x13\x1b\xe5\xac\x88\x23\xdc\x6e\x6d\x56\xb8\xf1\xa2\xf7\xf1\xfe\x9a\x82\xe4\x02\x69\xa4\xd9\x74\xce\xee\x44\xb8\x57\x55\x26\x93\x1b\x74\x90\x21\xaf\x0b\xb4\x23\xbf\x47\x43\x05\x1a\x8f\x3f\xf0\x1b\xd9\x25\xe3\x68\xc2\x09\x68\x4d\x46\xa3\x85\x2c\xd8\xa2\x97\x38\x12\xfb\x64\xd2\x21\x4c\x6d\x93\x09\x47\x31\xb1\x77\xa6\x9c\xc6\x46\xe8\x29\x98\xaa\xf7\x4b\x72\x4b\x84\x67\xf4\x50\x3c\xfd\x11\x1e\xda\xfb\xb2\x6d\x29\x3a\x37\xff\x91\x14\xad\x32\x99\x1d\x23\xea\xb2\x01\xde\xf7\x87\x07\x85\xcb\xc3\x83\xf1\xf1\xe1\x41\x7c\x57\x1f\xe9\xc5\xfe\xce\xee\x0a\x98\xb0\xbf\xe6\x78\x07\x5a\x55\x4c\x26\xf9\x08\xfd\x68\x6b\xec\x26\x58\x6b\xb2\x07\x54\x20\x27\xf9\x96\x2a\x42\x43\x22\xa5\x79\xf9\x44\x16\x41\x5c\x61\x5d\xa2\xac\x4d\x5d\xb4\x18\x66\xb7\x49\x69\x97\x95\x4e\x22\xe4\x17\xe7\xa5\xb6\x44\x89\x70\x6b\x54\x9b\x89\x5f\x84\x83\xaf\x62\x12\xb7\x39\x66\xbe\x40\x61\x01\x5f\x73\x58\x3e\xbd\xc0\x46\x34\x32\xd3\x0b\x4d\xb4\x4b\xb9\xa8\xdb\xaf\xeb\x51\x27\xfa\x36\xca\xb4\x1b\xd9\x07\x27\xf7\x07\x27\xbb\x91\x75\xe2\x64\x9d\x84\xb3\x3e\xda\x38\x02\x99\x1a\x26\x76\xc2\x85\xfd\x7d\x62\x00\xa6\x57\xc4\x14\x46\x86\x24\xab\x28\xf5\xe7\x9f\x8a\x31\x5d\xb2\x52\x09\x74\x20\xad\x65\xf3\xfb\xeb\xa4\xa8\xd9\x6e\x78\x0e\x4c\xe5\xf1\xd2\xa7\xd4\x01\xc2\x75\x50\xb0\xdc\x0a\x71\x6f\xd8\xf8\xfe\xa8\x87\x2e\xc1\x89\xa3\x69\x21\xba\xe3\x42\xbe\x8b\x2d\xe9\x68\x28\x0f\x4d\x0d\x61\xc4\xe1\x00\xfc\x40\x87\x15\xd0\xd3\x7d\x8a\xfe\xbf\x19\x59\x5a\x2f\x44\xde\xe4\x8f\x69\x32\x9a\x89\x53\x02\x51\xf4\xf1\x2e\x85\xb1\xdd\x30\xfd\xce\x65\x4f\xce\x12\xd5\x85\x7d\x87\xdc\xed\x81\x43\x1a\xe4\x16\x5b\x0e\xf6\x09\xc0\xc0\xa5\x8d\xc0\x53\x31\x58\xb0\x88\x41\x19\xdb\x5d\x52\xd7\x27\x88\x41\xec\x4c\xfe\x54\x48\x54\xd1\x3b\xfc\xc5\x1a\xb7\x0e\x08\x6a\x9f\xcc\x28\x98\x64\xdf\xfa\xfe\x58\x81\x32\x0a\x3e\x89\x24\x0d\x45\xe3\xbd\x2f\xe0\x0d\x42\xdd\x6a\x30\x8f\x82\x65\xe3\x87\xf8\x3f\x11\x9f\x14\x8d\x75\x0a\x88\x67\x17\x7f\xe4\x87\xa4\x28\x2e\x66\x05\x1f\x55\xb0\xe9\xf3\x44\x4b\xdd\x50\xdb\x15\x03\x90\x74\xdf\xf7\x3e\xdf\x80\x04\x68\x4c\xc9\xab\xdb\x68\x61\xd3\xcb\xc7\x6d\xa3\x59\x81\xbd\x75\xfa\x53\xa2\xce\x34\xfa\x9b\x3e\xa0\x12\xfa\xa7\xb0\x10\x62\xb0\x46\x27\x4f\x02\xa0\xf4\x41\x14\xff\xdf\xa3\x97\xca\xf8\xc8\x99\xe4\x2e\xff\x78\x96\x97\x74\xc2\xae\x0a\x17\x4d\xc9\x33\x14\x76\x11\xf9\x19\x45\x28\x3e\xa0\x73\x22\xc4\xaa\xc1\xd3\xdb\xb3\xa8\xdd\x44\x8c\x7a\x57\x19\xa3\xeb\xd7\xd4\xa0\x3c\x57\xd9\x11\xb5\x10\xa7\x3e\xcc\xcc\xed\xfd\x3d\x4f\xb3\x06\x4c\x9a\x35\xca\x16\x47\xb7\xf9\x4c\x9c\xbb\xf1\x28\x29\x99\x0a\xb9\x41\x3c\x36\x05\x39\x7c\x6a\x04\x87\xca\x17\xb5\x30\x7a\x93\x31\x9f\x50\x16\x3d\xb4\xda\xdf\xd7\x92\x6c\x8c\x07\x08\x69\x82\xae\xf5\x6a\x9f\x87\x7e\xa0\x37\xfd\x9e\x74\xe6\xa4\x86\x68\x44\x1c\x7d\x42\xb5\xa3\x67\x92\xfe\x7e\x38\x1b\xdd\xc5\x42\x6c\xf6\x3c\x16\xf2\x90\x88\xa9\xd9\x3d\x67\x6e\x16\x5e\x3e\x11\xcc\xc5\x3d\x31\x7b\x6b\x39\xd9\xe3\xa7\xc7\x4a\x41\x61\x8f\x76\x1e\xb9\x9e\x63\x3a\x8e\x0c\x7b\xa4\xff\x0d\x09\xee\x4c\x20\xee\x69\x2d\xd1\x6d\x52\x53\xbc\x07\x89\x99\x4e\x41\x66\x0b\x38\x25\x4c\xc5\x65\x99\xa2\x82\x36\x9c\x09\xb1\xdd\xa3\x0e\x13\x12\x9c\x38\x4c\x92\x86\x52\x45\x47\x84\xe4\x94\xf2\x5a\x0a\xca\x1d\xe9\xbf\x64\xe1\x69\x68\x31\x1e\x58\xfc\xf7\xc1\xc8\x60\x51\x9b\x1d\xb2\xf5\xbf\x49\x55\xde\x89\x56\x8f\x02\xf5\x4a\x5c\xd1\xe5\xc0\xce\xa2\xc4\xbb\x3a\x51\xa3\xff\x91\x80\xb4\xa7\xd1\x90\x68\x60\x25\xd6\xc6\x06\xd2\x7c\xee\x65\x5d\xd8\x6b\x65\x28\x2f\xab\xca\x01\x0e\x0c\xe6\x5f\xa4\x4a\xba\x2d\x33\xf4\x6d\x3c\xa0\x15\x94\x07\x3a\xcf\xfa\xba\xc3\xd0\x55\x62\x84\xe9\x69\x13\xce\xc7\xc1\xfe\x1e\xec\x00\x7b\xac\xcb\xcd\x51\xf5\x2a\xdd\xe0\x6c\xde\x48\x58\x63\x30\x5d\x21\xfb\xdc\xf9\xe8\xf3\x62\xd7\x41\x1a\x10\xed\xc3\x0a\x26\xec\xbb\xca\x25\x3c\x04\x8b\xbc\xc5\x32\x9f\x6e\xd2\xa2\x9c\xbd\x15\x72\x42\x70\x66\xdf\x55\x39\x1b\x88\x15\x6a\x89\xcd\x41\x4b\x67\x07\x09\x32\x5c\x56\xb2\x3d\x68\x71\xa6\x38\x12\x65\x47\xf9\x64\x7e\x9f\x7d\x46\x65\xa2\x80\xac\x6e\x49\x69\x55\xa1\xc8\xf6\xe8\x0f\x07\xb1\x82\x08\x8f\x02\x41\x14\xb1\xc8\x40\x85\x61\x05\x0c\x29\x2f\x2d\x2b\xab\x11\x12\x79\xa0\xeb\x16\xf1\x06\xaf\x44\x2c\xb7\x4d\x71\x74\x80\x30\x53\xcb\x50\xb5\xe6\xd4\x2b\xd1\x58\x2d\x61\x94\x6e\x4c\x6e\x51\x82\x0b\x14\x5e\x4d\x9f\x12\x52\x4f\x2b\x84\x82\xbf\x58\x85\x54\x47\x58\x16\xb5\x00\x61\x02\x62\x41\x0d\x54\x2e\xb0\x05\x6d\x4a\x8c\x48\xd0\x80\x05\xf2\x7a\x1b\x56\x49\x48\xcc\x6f\x41\x7d\xf2\xc7\x17\x2f\xd4\x3f\x54\x94\x0b\x94\xe1\xb5\xfc\x64\xb5\x32\x8f\x55\xd2\x76\xe1\x10\xdc\x74\x65\xf0\x07\x6b\x95\x4b\xe3\x71\x81\xd0\x57\x9c\xe6\x64\x51\xcb\x16\x53\xff\xf6\x17\x24\x1d\xa8\xbf\x62\xa5\x32\xa8\x9c\x3b\x14\x68\xa7\xc6\x90\x40\xea\xda\x02\x49\x2d\xd4\x60\xcd\xe4\x4e\xa4\x8f\x6b\x5e\x06\x3a\x0a\x18\x38\x67\x21\x8c\x15\xf2\x98\x85\xb2\x5c\x78\x27\x2c\xf8\xc3\xa7\xa3\xd3\x1f\x7b\x6d\xcb\x6a\xb4\x92\xd1\x08\xff\xb1\x5a\xcc\x36\x10\x5f\xe7\x30\xbf\xb6\x82\x00\x97\xac\xcc\xc2\xd6\x29\x87\x3c\xf1\x9a\xb2\xee\x68\xec\x6d\x43\x15\x63\xf3\x96\x92\xe9\xb8\x11\xfc\xee\x3b\x1f\xef\xf3\x82\x4d\x52\x6f\xf1\xd4\x13\x2f\x2a\xf3\x8c\x8e\x21\xe1\x99\x68\xa7\x90\x3b\xf7\x6a\x43\x95\x97\xd1\x9c\xd0\x49\xc1\xa4\xe5\x92\x7e\x85\x97\x7a\xdd\x29\xc5\xc1\x3c\x2e\x94\xed\xac\x7e\x7c\x72\x8c\x3e\xfd\xf5\x81\x8f\x89\xb4\x1a\x19\x53\x4d\x3b\xb6\x26\x83\xcd\x58\xcf\x25\xed\xd8\x14\xf4\x9b\x8f\x81\xf5\xb7\x6d\x0e\x6a\x9a\xf5\x68\xe9\xbd\x19\x6f\xba\xa8\xe4\x37\x37\x25\x1d\xd4\x33\x88\xa0\xf8\x97\xad\x64\xd0\x6f\xa9\xd3\x69\xae\x65\x85\x68\x62\x74\x5c\xdf\xab\x49\x52\xf5\xd9\x01\xe4\xf5\xe9\x01\x3d\x61\x1e\x32\x34\x70\xf3\x92\x45\x0f\x84\xe0\xa8\xae\x72\xbe\xd1\x40\x02\x3a\x22\x93\x8c\xee\x44\xae\xc6\x46\xe3\xfb\xde\x55\x71\x95\x7d\xff\xe7\x55\xd6\x6c\x7d\xbb\x71\xdb\xb4\xa9\x4a\x05\x2a\xc6\x89\xe0\x23\x13\x31\xa7\x6b\xf5\x14\x6f\x9d\x9c\x0c\x8f\x1b\xa7\x94\xe8\xe5\xd0\x89\xcb\xcf\xe9\x6e\x10\xca\x08\xa2\x62\x4c\x19\x6f\x72\x3e\x68\x37\xbd\xfe\x57\x24\x84\xde\x9f\x3b\xbd\x3f\xba\x73\xfb\x5f\x68\x69\x40\x5d\x79\xbe\xb6\x8a\xf8\xe5\x74\x92\xce\x6c\xe2\x13\xe9\x2b\x10\xc5\x8e\x36\x93\x16\x8e\x54\xf1\xd6\xa2\x78\x37\x05\xce\x70\x66\xaa\xc0\x6b\x1d\x7e\xd6\xcd\xb6\x6e\x6c\x98\xb2\x60\x1d\x2d\x42\x59\x78\x88\xb8\xdf\xe8\x98\xff\x64\xfc\x4a\xb6\x4d\x33\x60\x65\x1b\x03\x5c\x6c\x97\xb3\x11\x17\x89\x12\xef\x76\xb0\xbc\x23\x96\x92\x71\x10\x06\x24\x1b\x50\x7c\x2e\xd7\x5f\x1d\x41\x89\x4d\xb6\x32\xd8\xad\x37\x4c\xc5\x9a\xf1\xdc\xae\x0c\xca\x3a\xab\x98\xa1\x3f\x1b\x23\xc3\xd0\xa4\xed\x51\xd7\x36\x73\xd9\xfa\xb3\x0f\x55\x2a\xca\x2e\x5c\x56\x99\xa9\xf3\xbe\x77\x74\x26\x8b\x2a\x64\xae\x53\xfd\xac\xd2\xbe\xaf\xac\x2a\xea\x61\x60\x8c\x67\x5c\xa2\xef\x16\x5d\xb7\x48\x3a\x70\x92\x41\x6c\xca\x94\x9e\x83\x54\x65\x85\xb4\x9a\x31\x32\x3f\x3a\x5d\x1c\x94\x17\xd5\x32\x88\x27\x8b\x82\x74\x78\xfc\xab\x86\xa0\x1a\x24\xce\xf2\xc9\x37\x61\x9b\x13\x07\xce\xd4\x15\xf3\x86\x3d\x95\x5b\xea\x54\x08\x12\x4e\xf3\x06\xa4\xcc\x03\x45\x52\xaa\x61\x0e\x28\x12\x6d\x59\xb3\xc9\x30\xa6\xd0\xfb\xae\xfe\xe1\x8a\x32\xcc\xf3\x59\xc3\x0a\x28\xe2\x0d\x58\x5f\x9c\x36\x10\xae\xb6\xfb\x74\x36\x81\x8b\xea\xad\x56\xab\xde\xab\xd7\x91\x63\xe8\xb3\xac\x67\xbd\xb3\xd9\x6c\x15\xc9\x74\x82\xa7\x68\x37\xae\xb2\x0d\x58\xdb\xd4\x6a\xba\x19\xf3\xe9\x28\xbf\x87\x15\xfc\xb2\xa6\x64\xae\x1e\x63\xcf\x71\x99\x11\xd0\xe5\x3b\xc0\xc8\xe5\x8b\x4c\x4e\xd8\xd6\x74\xc1\x94\xe8\x6c\xae\x1b\x00\x82\x46\x25\xd5\xf4\xcc\x92\xcb\x50\xd1\x33\xab\x6e\x97\x1a\x0b\xdb\x6e\xda\x5a\x17\xf5\xa2\x56\x10\xb9\xd3\x4d\x53\x3f\x29\x2d\xd2\x2b\x9c\x8c\x73\x0d\x28\xa1\x10\x42\x3b\xa8\xb4\xd4\xae\xd7\xfc\xae\x44\xd8\x72\x4c\x58\x3d\xa1\x4c\xbf\x68\x6a\x1b\x3d\xab\xfd\x56\x63\xa4\xb1\xb5\x15\xc8\xea\x2d\x14\x50\x5d\xdd\x1e\x30\xc6\x41\x0b\x56\x00\x55\x3a\xc1\x13\xa3\x87\x9a\x96\x22\x2c\x86\x95\xd5\x6a\xb2\x07\xc6\x56\x35\xc2\x88\x6a\xcb\x84\xe4\x7e\xfa\xda\x4f\xa6\x88\x18\x76\x12\xc8\x21\x3b\x81\x24\xd9\x7e\x08\x41\x1c\xeb\x15\xc2\x47\x4e\xe4\xa6\x5a\xcd\x5f\x43\x3a\xf7\xa3\x3d\x15\xcd\x27\x7a\x16\x7e\x3b\x9a\x17\x45\x92\xcd\xce\x31\xd1\xec\x73\xda\xdb\xa0\x98\x26\x07\x9b\xfb\x29\xb0\x3c\x15\xd3\x21\x41\xec\x68\x20\x16\x15\x1c\xa5\x49\xe8\x90\x94\x42\x30\xfa\xe2\x6f\x3a\x70\x97\xc1\xd4\xbb\x0c\xe4\x9b\x6f\x80\x14\xa2\x35\xb8\x6b\xa5\xd2\xb5\xd4\x87\xa1\x70\x6f\xa7\x34\x43\xd6\x03\x56\x1e\x14\x84\x80\x39\x90\x43\x97\x04\x2d\x85\x4f\xac\x69\xe1\x06\xd6\x99\x4d\x77\xed\x6b\x53\xd9\x66\x38\x42\xc0\xc5\x4c\xa9\x79\xdc\x82\xe5\x9a\xb6\x82\x27\xb5\x6d\x5b\xfd\x78\x66\xab\x1f\x95\xda\xf6\x22\xe5\x42\xdb\xda\x3c\x32\x98\x98\xaf\xa4\x6c\x78\xff\xaa\xb5\x0f\x43\xcb\x58\x5e\xb1\xa3\x8d\x48\x4d\xc0\xd6\xbc\x06\xac\xc0\x06\x3f\x4a\x4a\x5f\x15\xdf\x03\x9d\x37\x9a\x06\x43\x55\xe2\x05\x32\xca\x61\xb5\xc7\x20\x85\xd5\xaa\x4d\x65\xae\x1c\x9f\x2b\xe4\xd1\xec\x11\xee\x4c\xc3\xe6\x6e\xa9\xed\x81\x31\xb5\x5c\xab\x31\x01\x5b\x9a\x8d\xa1\xd5\xc7\x96\x8a\xff\xcc\xb2\x0c\x2c\x34\x4e\x5a\xba\x8b\x63\x6d\xd0\xdf\xab\xd7\x5b\xee\x28\xaf\xa4\xd8\x78\x01\x5d\xa5\xab\x41\x95\x91\x14\xd3\x0d\x4b\xa8\x78\x95\x82\x0a\xa5\xc3\x20\x0e\x18\x2e\xfa\x81\x34\xcd\x68\x21\xe9\xc6\xb3\x8d\x72\x50\x09\xcd\x43\x01\x12\x51\x61\x6c\x42\x33\xe0\xfb\xa0\xfe\xd1\x8a\x59\x7c\x5e\xb8\x20\x56\xa4\x46\xc3\xad\x67\xaf\xad\x9e\x45\x43\x2b\x72\x33\xb7\x61\x09\xab\xbf\x4a\xfe\x48\x81\xae\xce\x06\x6a\xfd\x59\xc3\x11\x19\xcd\x67\xf5\x56\xf4\x26\xc3\x7d\x96\xdb\x2c\xfd\x27\x86\x82\x45\x4e\xbe\xca\xea\xcf\x28\xa7\xbd\x59\x1c\x16\x0f\x72\x9f\xb3\xa6\xb7\xef\x70\x27\xc5\xda\xbc\x54\x15\x3e\x86\xcc\x6c\x20\xcf\x7b\x0b\x3d\x61\x78\xed\x86\x9a\x49\xc3\xb1\x7d\x58\x76\x70\x23\x52\x5a\x05\x5d\x8b\xcf\x20\xa8\xe3\x70\xc1\x08\x5f\x27\xb7\xa9\xa1\xce\xd1\x6b\x83\xb9\xd0\x53\xf5\x1d\xfe\x24\x8b\xae\xce\xad\xd5\x7d\xf2\x53\x9a\x19\x0b\x10\x95\x62\x11\xc4\x44\xd0\x85\x9c\x4f\x1b\x1a\x9e\xa5\x59\x68\xa0\x8e\xc2\xb1\x0c\x72\x19\x1a\x63\x8b\xc7\xdd\x40\xa8\x19\x8c\xc8\xcc\x6b\xd8\x8a\x0d\x5a\x54\x4d\x67\xa0\x09\x07\x04\x75\x2a\x58\xd6\x25\xee\x77\x09\x0b\xd9\xd3\xf6\x63\x13\xce\x72\x22\xcd\x92\x5a\xd1\x41\x38\x24\x47\xfc\xf0\xf0\x36\x7e\x3a\xfc\x90\xa7\x18\x10\xfa\x2d\x86\x57\xc5\x39\x6c\x92\x62\x20\xe4\x32\xfe\xf5\xd7\xb7\x17\x97\x87\xe7\x97\x1c\x94\xe3\xd7\x5f\xe1\xfd\xf2\xe8\x40\x7d\x90\x11\x39\x1a\x95\x20\x38\x44\xc7\xa6\xbb\xea\x0e\xfe\x4b\x6f\x00\xa9\xb7\x6c\x6e\x22\x79\x8e\xc6\x13\xda\x35\xba\xba\xaa\x35\x4d\x82\xd4\xee\xe7\x55\x0e\x2c\x2b\x82\x3d\x60\xb0\xfa\x33\x90\xca\xcc\xab\x56\x56\x22\x0d\xbb\x13\x0a\xc6\x16\x1a\xc9\x5f\xc3\x83\x65\x73\x7b\x6b\x85\xc2\x76\x24\x84\x9e\x51\xd6\x8d\x74\xf2\x15\xe9\xac\x87\xf4\xff\x13\x32\xaf\x54\xe9\x5f\x26\x62\xb7\xb7\x1c\x9d\xc8\xc0\x67\x4b\x9d\x54\x36\xa8\xc2\xb5\x6f\x57\x04\x7e\x91\x2c\x02\x93\x5d\x4d\xe7\xee\xb8\x9d\xb6\xad\xfb\x73\xc7\x8f\xe8\xa2\x4a\x6d\xfa\x71\x5b\x54\xa9\x3d\x3f\x42\x4b\xd5\xa7\x3d\x0d\xb0\x1b\x08\xbd\x52\xf9\x4d\x1d\x76\x37\x5b\x6f\x34\xb1\x0e\x8b\xf5\x7a\x28\x2e\xca\x12\x1a\x77\xcd\x2e\xdf\xfe\x1c\x12\x63\x48\x15\x85\x6d\x27\x10\x4c\x45\x7e\xeb\xba\x14\x6d\x6b\x6a\x77\x3d\x98\x3b\x0b\xbe\x69\x7a\x77\x5d\xa2\x62\xf8\x92\x8d\x6f\xd3\xdb\x0c\xb5\xd6\x8f\x77\xe9\x2c\x29\xa7\xc3\x51\xf2\xed\x46\x45\x04\x93\x50\xfb\x9e\x57\x45\x29\x59\x29\x73\x7b\x29\xa5\xdb\x26\xa5\x3b\xa6\x21\xe8\xaa\xb6\x71\x1b\xd7\x6b\x75\x0d\xbf\xeb\xf2\x5a\x67\x79\x4f\x2e\x80\x5f\x07\xf8\xe4\x9f\x56\x0d\x7f\xf9\x68\x6c\x1b\x03\xc8\x6b\xbe\xd1\xdf\x2e\x2f\x74\xb6\x17\x7c\x33\xfa\xbb\x1d\x88\x4e\x52\xc5\x0b\x18\x8d\x64\x29\x39\x22\x8b\x1e\xfb\xd5\xc0\xf4\x90\xac\x1f\x9f\xfc\x7c\xf8\xea\xf8\x65\x3d\x10\x85\x64\x05\xfe\xea\x86\x06\xa9\xaa\x76\x37\x10\x93\x44\x7e\xdb\xb6\x82\x29\x28\x0d\x42\x59\x7e\xfa\x1b\xbf\x35\xbe\xef\xf5\x7f\xbb\xfa\x63\x73\x73\xf0\xed\xf7\x8d\xef\x0f\x1a\x57\x9f\xae\x3e\x35\x9b\xcd\x8d\xd8\xfc\xf4\xcc\x79\xff\xd4\x89\x1f\x39\xf7\x9f\x4f\x8d\xfc\x57\xe5\xd5\x05\x40\x5a\x5f\xbf\x7a\xbc\x7a\x54\xa9\x98\xeb\x6f\xe6\xcb\xbf\x99\x2f\x57\x1b\xd6\xdb\x6f\xd6\x5b\xf9\x2d\xea\xc6\x57\xd7\x56\xe2\x27\xf3\xed\x1b\xf3\xe5\xc9\xfa\xba\xf5\xaa\xf0\x71\xb1\x51\xcf\x07\x9c\xd8\x82\xe6\xf4\x1f\xa3\x41\x53\xa7\x5c\xb5\x74\xb3\x36\x5a\x03\xfe\x50\x32\x39\x10\xac\x01\xd8\x78\xae\x35\xae\xae\xfa\xb5\xc1\x9f\xfd\xdf\x6a\x83\xe6\xb7\x35\x95\x5c\xc7\xe4\x3a\x26\xd7\x21\xb9\xae\x92\xff\x57\x7f\xb8\xfe\xcf\xc3\xf5\xff\xd0\x84\x46\x13\x24\x61\x74\x55\x6a\x94\x68\x3d\xe8\xa5\xf6\x37\xd7\xf7\x06\xcf\xfc\x64\x01\x12\x3e\xbe\x7d\xba\x2e\xbe\x1f\x40\x06\x6a\x09\x63\xdc\x87\x0e\x1d\x0c\xbe\xbd\xe2\xc6\xb5\x02\xad\xb4\x20\x6d\x68\x1c\x9f\x36\x37\x06\x8a\xa3\xb4\x9e\x8e\xaa\x2a\xea\x6f\xbd\x4f\x35\x62\xb3\x5a\xaf\xbf\x15\x6f\xc7\x3b\xf1\x6e\xfc\x3c\xde\x8b\xf1\xd4\x2d\x1e\xb4\x8d\xdb\xdd\xb8\xbd\x15\xb7\xb7\xe3\xf6\x4e\x8c\x01\xef\x9e\xc7\x6d\x3c\x2b\x1c\x77\x30\xcc\x44\x8c\x47\xd2\xb7\xe2\xce\x76\x8c\x41\xf0\xf0\xbc\x6b\xdc\xd9\xa3\x73\x9d\x35\xba\xb3\xa3\x4c\x3f\x24\x35\x41\x8f\xc7\x98\xd4\x34\xa3\xba\x8a\x5c\x30\x8d\x99\xb9\xba\xe1\x5c\x38\x9f\x9b\xb9\x36\xe9\x2c\x6a\x28\xa7\x74\x54\x30\x73\x43\xdb\x3c\x24\xb1\x27\x1f\x61\xe4\xc9\x01\x29\x8e\xd8\x3c\x36\x1b\xcd\x35\xe9\x38\xa2\xdc\x55\xe4\xe1\x1b\xd6\xe6\xcf\xc4\xc9\x1b\x0a\x08\x2a\x17\xaf\x62\x19\x10\x3d\x9e\x49\x97\x13\x23\x0e\xba\x00\xb6\x2f\x61\x9e\xa9\x53\x3b\xe2\x81\x6b\x47\xc3\xbd\x4a\x42\x1c\xf6\x17\xc6\x3c\x55\x57\x5f\x18\x21\x55\x19\xb0\xce\x6f\x07\x85\x25\x04\x8c\x45\x09\xfa\xb4\xb0\x53\xbd\x07\x48\xb4\xc9\x48\x3e\xbc\xb8\x44\x6d\xcf\x0f\x85\x7b\x66\x78\xd9\x28\x98\x5e\xa4\xf7\x69\x81\xf7\x73\x18\x95\x0f\xcb\x99\x15\xd7\xd6\x09\x2e\x7f\x86\xf9\x7f\x86\xf5\xcc\x2c\x2f\x1a\xcd\x96\x08\xaa\x49\x85\x10\xf4\x42\xda\xe0\xc6\x13\x90\xa6\x61\x86\xca\x5f\xb3\x9b\x08\x6d\x91\xeb\x36\x2f\xdd\x0c\xc3\x67\x13\x4b\x05\x6a\x75\xae\xe8\x90\xeb\x45\xd9\xd9\x1c\xf6\x75\x5f\x7f\xd2\x45\x85\x87\x9c\x7c\x11\x39\xec\x1b\x3e\x28\xbf\x0e\x3f\xec\x10\xc5\x41\x8f\x0b\x8a\xa0\xd8\xc1\xd6\x98\x21\xd6\xcc\xe6\x14\xc3\x8f\x67\x14\x5e\x55\xb8\x43\xc5\xd1\x3c\x4b\xca\xd1\x70\x9a\x8c\x83\xad\xe2\xd0\xb2\x46\xb3\x64\x7e\xf8\xfc\x84\x0b\x1b\x9f\x11\x2c\x71\x63\x79\x27\x77\x6c\x68\xab\x82\xb7\xf8\xe9\x89\xd1\x60\x6b\xa0\x0c\xc4\x0b\x49\x7a\xbf\x4b\xbe\x71\x66\xc3\xc9\x83\xca\x00\x33\x0c\x23\x85\x22\x5e\x10\x35\xcc\xa2\x64\x92\xde\x92\x23\xb9\x88\xd4\x0c\x74\xee\xa9\xbc\xdf\x46\x29\x74\x05\xd4\x8f\x77\x40\x51\x44\xde\xa8\x31\x8c\xf0\x6e\x0e\x78\xc2\x28\xb4\x31\x5d\x26\xf2\x0e\x6b\x7f\x87\x57\x0e\xbd\x6b\xb5\xde\x35\x19\x3b\x05\x99\x2f\x71\x11\xd4\x70\x53\xd3\x71\x2b\x2d\x2f\x08\x7c\x15\x9a\x64\x88\x02\xbd\x62\xf2\x00\x1f\xc2\x78\x86\x5b\x43\xd7\x38\x59\xd9\x80\xcc\xe8\x32\x3f\x49\x70\xb7\x17\x6d\x94\x44\xb5\x64\x06\x10\xf3\x82\x3a\x21\x2a\x45\xc0\x5a\xdd\x43\x69\xc9\xc8\x3a\xd8\xe3\xc6\x8e\x20\xbb\x71\x86\x47\xba\xcd\xa9\x6a\xd3\x9b\xe5\x44\xbf\x9e\xd3\xa5\x4f\x90\x51\x35\x55\x95\x56\xed\x90\x2d\xbc\xbf\x4e\x6f\xe7\xf9\xbc\x14\xf7\x53\x7d\x4c\xc5\x25\x50\x45\x52\xe6\x93\x0f\x74\x09\x14\x80\x98\xc0\xc0\x29\x54\xf9\xe9\xb0\xa4\xdb\xa0\xa0\xcd\xc5\x3c\x9b\xa5\xf7\x49\xab\x6a\x08\x18\xe1\xfd\xcc\x11\x60\x84\x1b\x8e\xdd\x70\xf5\x9a\xf7\xd5\x3f\x1c\xd9\x32\xa0\xb2\xc1\xe3\x06\x8c\x48\x48\x7a\xf5\x6a\x64\x52\x51\xd6\x25\x1c\xf9\xba\xcf\xe8\x22\x4f\xa1\x07\xfb\xcd\x83\xda\x9a\xd3\x57\x75\x4c\xf1\xb4\x1b\x85\x7d\x36\x2e\x0a\xc0\xd4\x56\x5e\x00\xa9\xb3\xe1\x84\xcc\x07\x94\x83\x93\xb4\x2d\x4b\x7b\x31\x1a\x34\x39\xfa\x03\x65\xa9\x02\xaf\x01\x3d\x8b\x6a\xd1\x38\x4f\xca\xac\x3e\x93\x3b\x72\xb4\xf1\x6b\x83\x96\x66\xb0\x2a\x5a\x73\x68\x4f\xb3\x15\x8a\x49\xf0\xc0\x1f\x09\x2f\x96\xa0\x4e\xdb\x0c\x2a\x70\x21\x90\x13\x2a\xd7\xbe\x2f\x97\xe8\x7a\x1d\xb3\x47\x98\x21\x0f\x98\x37\xcd\xfe\x12\xf5\x53\x5f\x89\x47\xe3\xa3\x12\xbb\x91\x11\x13\x5e\x92\x5c\x5a\xe5\x55\x0e\x18\x1e\x4f\x4c\x78\x26\xc1\x69\x5c\x1d\xb3\x04\xd7\x7e\x20\x95\x34\x33\x02\x8e\x56\xcd\xce\x4e\xab\x47\xa2\x84\x3d\xc7\xc8\x63\xc9\xe2\x61\xbf\xaa\x32\x15\x2c\xd0\x1e\x09\x69\x51\x06\x2b\xa2\xa8\xdb\x16\xbf\xa7\x14\x3a\x9d\x7e\x2b\xeb\x10\x21\xe9\xdc\xb1\x16\xae\xe1\xf8\xa5\x09\x9f\x79\x51\x8c\xa5\x52\x3a\x2d\xb4\x6a\x4d\x63\x0a\x19\xa7\xb7\x91\x38\xca\x3d\x06\x3e\xbe\x13\xce\x9e\xf4\x55\xdd\x41\x91\x1e\x6c\xc6\x93\x03\x01\x41\x5f\x90\x31\x71\xb6\xc4\xe5\x4c\x33\x53\x95\xf5\xd3\x01\xbb\x16\xc0\x28\x13\x9f\xd0\x8a\xd6\x6a\xd5\xe8\x22\x0a\xac\xed\xd9\x33\x7d\x03\x85\xba\x6f\xc8\xc8\x49\xc7\x1f\xf5\x3b\x36\xaa\xa6\xe7\xf5\xf2\x62\x94\x8b\x19\x93\xd8\xc2\x06\xf4\x09\x1b\x26\x4c\xff\x08\xa0\xb9\xcf\x4e\xd8\xb6\xbc\x29\x85\x18\x81\xcc\x7e\xf7\xcb\x0f\x82\x6c\xf5\x56\xdd\x1c\x32\x82\x58\x22\x0b\x3e\x1a\x93\x52\x16\x1d\xbf\x34\x26\x43\xe0\xf7\x14\x27\x11\x98\x96\x70\x5a\x91\xb3\xc9\x4c\xde\x1d\x78\x07\x22\x97\x5a\x08\x05\x40\xb6\x2b\x20\x38\x47\xd2\x5c\x49\xb3\x66\xcb\x9c\x65\xc4\x24\xc8\x7d\x6a\x38\xa2\xb5\xf5\x50\x62\xe2\x40\x8a\xec\xd7\x03\xdd\xb3\x46\x23\x5f\x03\x6f\xfd\x3c\x9c\xcc\xd9\x1f\x66\x09\xc7\x3b\xa1\x15\x23\xe7\xda\xb3\x20\x57\x5a\xd1\xcb\x0d\x1a\x66\xe2\x6e\xa5\x4c\x0a\xf8\x60\x7d\x2a\xfc\xa3\x59\x51\x1a\xd6\xaa\x28\xd0\xba\x29\x81\xc6\xa4\x37\x54\x82\xd6\xe1\x31\x57\x14\x14\x32\x7e\xfb\x62\x39\x51\x49\xdd\x25\x84\x35\x62\x6d\x5a\x6d\x15\xc9\xe1\xd1\x2e\x63\xc8\x5b\x52\x97\xb2\x93\xd0\xa5\xa7\x85\x28\x9d\xd0\x29\x75\xae\xa3\x12\x37\x23\x8a\xa7\x89\xdb\x75\xae\xcf\xc7\x59\x88\xa9\x78\xf6\x46\xe5\x98\x17\x3e\xe1\xcf\x42\x94\x44\x3e\x1a\xed\x30\xa8\x6b\x95\x28\x19\x11\xa2\x4d\x94\x46\x22\xb9\x42\xce\xd3\xb7\x9a\xa5\x4c\x50\x12\xe9\x11\xf4\xa4\xea\xab\x5c\x33\xce\xe9\x3a\x17\xbc\x26\x51\x1e\xb5\xce\x0b\xbc\x78\x87\x8c\x4c\xf5\x31\xe8\xed\x45\x4a\xda\x40\x3d\x8e\xea\x78\xd7\x29\x0e\x14\x7c\xc6\xed\x58\x41\x6e\x7c\xbb\x4f\xca\x72\x78\x4b\x1f\x32\x99\x21\xe3\x8f\x74\x0e\x05\x8f\x05\xac\x85\xd4\x0c\x4b\x15\x10\x60\x8c\x6b\x6e\xee\xa7\xf0\x9d\xb6\xa4\x8d\xfb\xf7\xf0\x3e\x2a\xa0\xe6\x08\x16\x7f\xad\xe1\x74\x3a\x79\x90\x9b\xff\x7c\x73\xa0\x98\x0f\xa0\xb1\x6f\x32\x10\xfa\xb3\x79\x36\x24\x2d\x9a\x5a\x07\xea\x64\x91\x90\xda\x99\x00\x8a\x49\x41\xf1\x3e\x40\x83\x7c\x01\xca\xd0\x3d\xaa\xfa\x52\x4d\x6e\xc6\x51\x99\x47\xef\xd0\x8b\x0a\xaf\x0c\xa4\x33\xe2\xf7\xd3\x77\xac\x03\x7d\xcc\x8b\xf7\x28\xc7\xb4\x9b\xd5\xf8\x0f\x9a\x6c\xe8\xe1\x3b\x83\x94\x7a\x92\x19\xff\xa1\x67\x18\x44\xb9\xaf\x33\xf5\xe1\xe3\x00\xef\x51\x84\x4a\xbc\x64\xea\xc5\x35\xfb\x1e\x49\x26\xa0\x7d\xab\x1a\x1f\x49\x41\x1a\x00\x05\x7e\x98\xa7\x93\x71\x84\x57\xca\xe6\x73\xd0\xb8\x87\x65\x3a\x8a\x2e\x86\x37\x89\xbc\xdd\x10\x8b\x99\x50\x8d\x4f\x15\x32\x24\x2c\x27\x6c\xdc\x34\x94\xc0\xad\x89\x91\x7d\x4d\xdd\x9a\xbd\x81\x2b\x00\x72\xe6\x86\xb4\x15\x34\x9c\x22\xc4\xac\xb4\xa8\x8c\x0e\x24\x41\x6b\xdf\xd4\x7a\xf0\x67\x78\x3f\xdd\xaf\x09\x3f\x83\xda\x77\x94\x32\x99\x71\xc2\xdf\x28\xe1\x96\x13\xea\xb5\x3a\x26\xfc\xe7\x3c\xd7\x79\xea\x94\xe7\xdf\xfe\xe8\xec\x72\xd2\x3b\x99\xb4\xb3\xb9\x5f\xb3\x14\xf3\xeb\xe1\xf8\xc5\x9d\xb8\x2f\x66\xa3\xff\xcd\x77\x7f\xab\xd5\xdf\x0d\x36\x48\x26\x92\xfa\xa0\x4e\x2b\x9b\x5f\xb9\xac\x40\x1f\x8b\x5b\x03\xfe\xae\x70\xee\x52\x12\xf9\xfa\xf0\x81\x4e\x76\xcb\x16\x06\x05\x09\xdd\xcd\xc4\x04\x11\x05\x8f\xfe\x98\xc2\x42\xa9\xb4\xee\x80\x70\x26\x05\x1a\x2a\xe3\x1c\xb9\x5a\xd2\x54\x77\x20\x46\xcf\x49\xb3\x51\x02\xbd\x93\x3c\xd4\xf1\x36\xe4\x49\x91\x0c\xc7\x0f\x51\x09\x59\x58\x1d\x8a\x24\x44\xf3\x10\x78\x90\x1f\x02\xfb\xf6\x81\x1e\x17\xdf\xf9\xca\x46\x86\x6e\x04\xc1\xe0\x14\xe9\x6d\x13\x00\xac\xc3\x45\x3c\x1a\x8a\xdb\x13\xd5\x2b\xad\x59\x52\xce\x14\x25\x50\x0b\xb3\xf0\xd1\xea\x97\x8d\xa6\xda\x42\x51\x3d\x1f\x1b\xfd\xa8\x5d\x27\xc4\xc2\x40\xdc\x91\x65\x90\xfd\x03\x4e\x0a\x1a\x53\x72\x4d\xa4\x34\x54\x6b\xc4\xc3\x13\xba\x54\x2c\xe0\xdd\x60\x78\x8c\xeb\xbb\x2c\x2b\xaf\x26\x15\x3e\x51\xb2\xbe\xd0\x65\x97\x5c\xa3\xa9\x70\xad\x58\xb1\x97\xc7\xf2\x77\x7a\x34\xd7\x33\xcb\x6d\x95\xea\x61\xd1\x55\xbd\x06\x2b\xbd\x90\xd9\x23\xef\xb2\x4b\x23\xd3\xbf\x0f\x3f\x0c\x2f\x68\xe6\xaa\xce\x6e\x88\x14\x95\x29\x8e\xfc\x82\x82\x22\x80\xbf\xb8\xcc\x7a\x9e\x8d\xa5\x11\x44\x5d\xa2\x25\xcc\x11\xe3\xb4\x14\x56\x0a\x3c\xbf\x29\xcd\x1b\x93\x3c\x7f\x3f\x9f\x46\x37\x30\xaf\xd0\xd5\xb3\x74\xc7\xb8\x00\xc6\xb6\x62\x32\x5d\xa8\x5b\xd8\xa2\x4b\x90\x80\xa4\x38\x27\x23\x9c\x09\x8b\x07\x9a\x5d\x78\xd1\x8a\xa4\x1a\xce\xd2\xeb\x74\x92\xce\x1e\x62\xdc\x74\x1a\xdd\x09\x78\x45\xf2\x9f\xf3\x14\x86\xb9\xd0\xbf\x95\x49\x41\xd5\x52\x62\x35\xb4\x16\x16\x93\x5f\x82\x1d\x4f\xe7\x32\xaf\x1f\x22\xff\x0a\xda\x78\x4d\xea\xfd\xa8\xce\x27\xe8\x00\x9e\x8f\x92\x04\xef\x40\x47\x8e\xa5\xeb\xc8\x93\x12\x23\x33\x40\x7b\x04\xd3\x7e\x84\x4f\x90\xeb\x43\x3a\x16\x57\x81\xfb\x30\x5b\x38\x24\x14\x4d\xad\x19\x4b\x30\x93\xe2\x82\x1e\x67\x92\x83\x08\x09\x5b\x96\xc9\x3d\x85\x12\x77\x26\x01\xfc\x47\x07\x93\xa6\x23\x50\x9b\xd8\x22\x28\x5f\x63\x99\x1e\xd3\xec\x27\x96\x84\x53\x69\xd4\xa4\x5f\x5e\xce\x99\x9e\xd2\x71\x34\x39\x90\x00\x16\x2c\x0e\x23\x09\x3b\x3a\x50\x95\x9b\xcb\x43\x75\x59\x24\x7e\x68\xa9\x8c\xe8\x5c\xf6\xf2\xe8\xc5\xab\xc3\xf3\x23\xc7\xb5\x0c\xd0\x93\x81\x61\xe4\x77\xb2\xac\xc8\xe2\xb4\xa6\x78\x16\xd5\x0e\x8c\x34\x31\xac\x17\xfa\xa1\xb1\x55\xd4\x8e\x7a\xc3\x2d\xfd\xfd\x00\x14\x95\xdf\xbf\x93\x00\x41\x71\xd2\xad\xfd\xdd\x77\x0c\x27\x68\xdc\x56\xca\xde\xff\x7d\x10\x70\x70\x14\xae\x74\x32\x3b\x4a\x1d\x21\x35\x03\x67\xca\x15\xc8\xda\x55\xad\x46\xe7\x41\xe0\x95\x85\x2b\x9e\x2a\x88\xd1\x3f\x25\x13\x81\x63\xae\xdc\xc8\x3f\x8f\x3e\x7a\x25\x2f\x8e\x87\xf7\x96\x9b\xca\x63\x88\xd4\x76\xe7\xa0\x6d\x8b\xb1\x50\x66\x85\xa8\xd6\x0c\x1c\xf3\xe0\xa9\x44\x5d\xb8\x07\x10\x45\x7e\x44\xd6\x9e\x00\x6e\xe7\xe9\x18\x6f\xac\x5d\x33\x59\xdc\xe0\x62\xb6\x77\x59\x17\xed\xe1\x3f\xa1\xcc\xdf\x81\xea\x56\x90\xd3\xab\xee\x45\xbd\x58\xa7\x89\x7e\x02\x32\xa8\x07\x9f\x1f\xad\xef\xda\xf9\x4c\x3e\x31\x6b\xc2\xb8\xbe\xbc\x4b\x80\x59\x46\x77\x22\xf8\x1a\x49\x2f\x54\x70\x87\xb7\x28\xba\xe4\xad\xfd\x39\xfc\x29\x78\x50\xd2\x03\xac\xf3\x41\xb3\x36\x46\xdd\xfb\x2c\xff\x98\xfd\x24\xef\x39\x3f\xb0\x2a\x6e\x99\xdf\x42\x98\xb5\x9c\xc2\x9a\x3b\x9c\x3b\xc2\x7b\x34\xff\x68\xb7\xd1\xd0\x8d\xd9\x5e\x1e\xba\x20\xd6\x4b\x4d\x6f\xfc\x34\x79\x89\xa4\x97\x4e\x77\x2e\x7a\xa9\x78\x4f\xa2\x48\x54\xcc\xb0\x6f\xcc\xe4\x66\x93\x4c\x7e\xe7\x31\x47\x43\x19\x24\x71\x55\xc6\x05\x24\xe2\x5b\xd6\xfd\xc4\xe5\x2c\x6a\xda\x22\x15\xcf\x39\x9c\x2a\x36\xd0\x0c\xd6\xcc\x60\x58\x78\x57\x5e\xd3\x92\x05\xbf\xd0\x12\x74\x20\x32\xd9\x80\x24\x78\x9f\xc9\x6d\x89\x6d\xed\x79\xc9\x1c\x2d\x73\x0f\x8d\x9f\x1d\xee\x51\x82\xbe\x3f\x30\xa5\xb7\x29\xbc\x35\x94\x85\xf2\x9b\xb3\x59\x9b\x6e\x24\xc5\xcd\xde\xe8\xf3\x37\xd9\x66\x7e\x77\xee\xbb\xf5\xcd\x59\x62\xd9\xdf\x66\x3c\x8d\x91\xdb\xc2\x61\x1b\x1d\x78\x49\xad\x12\x56\xab\x5a\x2f\x19\xc6\xd1\x75\x40\x23\x1b\x46\xeb\xd1\x35\xd7\xae\x0f\xb9\x86\x8e\x11\x9a\x92\xe7\x6c\xb5\xbe\x11\x93\xbb\x5c\x4b\x2a\xab\x02\xc9\x81\x46\x53\x3d\x6a\xd1\x65\xb2\x2c\x93\x04\xc1\xa0\xf0\x53\x4d\xc4\xe7\x67\xcf\x62\xcb\xb2\xa8\x8e\x31\x96\x89\x34\xc1\xa9\xcc\x46\x0a\xe8\xf9\x02\x1b\x23\xd1\x2e\xae\x64\x64\x1f\xab\xc0\x01\x22\xf2\x57\x31\x87\x84\x66\x92\x7c\x11\x93\x28\x0b\xb2\x5f\xcc\x9d\xee\x1b\x22\xeb\x77\x14\x07\x8e\x14\xb0\x34\x33\x6d\xb8\x6c\xc5\x25\xac\x87\xe3\xf1\x4b\xcc\x2f\x4b\xad\x47\xed\xe6\x7e\xe5\xf0\xc5\x96\xd9\xfd\x49\x32\xd0\xe8\x46\x7a\x77\xee\x0e\xd7\x1b\x1d\xf4\x95\x77\x3e\x4c\x0f\x7c\xb5\xdf\xa1\xf2\xa8\x4e\x35\xb2\xe8\xcd\x66\x91\xc5\xde\xfa\x10\x82\xcf\xe3\x22\x13\xb2\xc9\x40\x67\x41\x19\x64\x2d\xcf\xa2\x86\xb3\x7b\x6e\x23\x11\x82\xc6\xdb\xdc\x2e\x34\xf3\x9e\x64\x2a\x37\x01\x4d\x12\x77\x90\x24\x29\x78\x13\xa9\x69\x35\x87\xaf\x4d\xae\x89\xa9\xa8\xe6\x39\x7f\xcb\x29\xca\x05\xe3\x6f\x60\x85\x96\xb2\x1a\xbc\xb0\xa7\xfb\xe0\x45\xfa\x02\x2c\x69\x1a\x87\x89\x40\x68\xfb\x38\x5f\x4b\xd3\xbc\xb9\xdf\xaa\x76\x47\x61\x9d\x90\xc0\x50\x26\xc5\xdc\x2c\xaf\x16\x01\x68\xcc\x87\x65\x40\xf2\x47\x32\x9a\x93\x4a\xff\xce\x9f\x62\xdf\xd9\x08\x0a\x31\xdc\xa8\xa3\x26\x25\x7b\xa1\xce\x8d\x77\x8f\xee\x87\x33\xbb\x04\x0a\x64\xc6\xbd\xa8\x7a\x55\x06\xc2\x91\x6c\xac\x75\x97\xc8\x0e\x35\x79\xf3\x78\xb5\xfe\xfa\x1f\x12\xab\x0c\x4c\xb8\x1f\x42\xb4\x5e\xf3\xe7\x65\x28\x32\x9d\x26\xd9\xb8\xee\xe8\x04\xb8\x4d\x68\x48\x2b\x3b\x60\x8f\xd8\x66\x13\xfb\x86\xf8\x45\x6c\x22\xc6\x94\x16\xe3\xf2\x72\x3f\x58\x93\x89\x7d\x58\xd4\x13\x9c\x85\xd2\x1d\x73\xa8\xdd\x4a\x6b\xe2\xc7\x88\xb2\xf2\x03\x45\x5b\xb3\x96\x75\x96\x8e\x26\x96\x37\xc2\xed\x24\xa8\xca\x69\x6c\x2f\x74\xd6\x3a\x35\xcc\xdd\x2c\x10\x89\x28\x1e\x16\x2f\xed\x04\x57\x0b\x8f\xa7\x0f\x43\x3b\xbe\x61\x45\x4f\x02\x87\xdd\x66\x97\x39\x11\x4c\x90\xd6\x0c\x61\xf5\x68\x6b\x70\x62\x9a\xed\x79\xae\x10\xfe\xd6\xa8\xf2\x6d\x60\xd7\x86\x96\xe7\xe2\x10\x9c\xe5\xcd\x53\xda\x72\x83\x14\x0b\x3b\x5e\x16\x5c\xf8\xf8\xa5\x97\x65\xf1\x90\x37\xc9\x8e\x1b\x10\x34\xcb\x6e\x2e\x63\x5e\x18\x2f\xf9\x7b\x85\x26\x91\x89\xdb\x42\xab\xf0\x66\x40\x15\xad\x62\x79\xb9\x05\xdf\x73\x2e\x55\xcf\x66\xce\x12\xcf\x86\x22\xb7\xfa\xeb\xb1\x2a\xdf\x62\x7f\x39\x13\xb8\x12\x41\x3d\xdf\x87\xc2\xb5\x8b\xa8\x65\xa0\xc9\xb4\xfb\x5f\x6b\x7a\xfc\xfc\xf9\xcb\xea\xb4\x2f\x9a\x6b\xff\xb2\xd0\x0f\x29\x1d\xda\x9b\x44\x39\xad\xe1\xbe\xb3\x1a\xe3\x59\x7e\x44\xa9\x1e\x6a\x76\xe7\x89\x4c\xe3\x65\xd3\x51\x98\x6f\xdc\x41\xe8\xe1\x1f\xe8\xeb\xc0\xf4\x65\xf5\x3e\xa9\xdf\x96\x9f\x8c\xdc\x9f\x4e\xc7\xc2\x53\x80\x9c\xea\x42\xdc\x78\x9b\xcc\x5e\x88\x81\x86\xd3\xc8\x58\xe8\xbd\xcd\x6a\x41\x5c\x3d\x41\xad\x34\x3d\x55\x0f\xc6\x43\x45\x86\xba\x40\xde\x19\x08\x36\xa3\x7d\x05\x12\x59\x8c\x0e\x0d\x67\xf6\xac\xe3\x5e\x7c\xdd\xe3\x00\x4c\xc5\xdd\xfb\x00\x67\x2b\x22\xab\x23\xcf\x01\xa1\xe6\x17\xfc\x64\x6a\x0f\xb4\x90\x4c\x6f\x52\x60\xc7\xe3\x97\x64\x45\x10\xce\x13\x0e\xa7\xab\xa5\x84\xd1\x4f\x41\x86\xab\xea\xd4\x60\x66\xec\x2a\x95\x7b\x89\xd8\x94\x4a\xd0\x99\xdc\x55\x79\x05\xac\x3b\x1e\x7a\x2a\x80\x35\x8a\xff\x42\x4f\xd9\x3e\x9f\x25\xac\x8c\xa6\x3f\xce\x27\x13\x05\x51\xcc\xc0\x8b\xa0\x99\x8b\x1a\x39\x0e\x8c\x8e\xf7\x07\x84\x37\xd5\xfb\x96\x97\x4a\x81\x20\x98\xf7\x1f\xba\x40\x5d\x59\x9e\x25\x37\x58\xdc\x6c\x0b\x44\x84\x63\x56\x75\x9a\x4d\x1e\xec\x8a\x9c\x80\xc9\xbf\xe6\xf3\xa8\x9c\x26\x23\xc1\x29\x6e\xd1\x98\x9c\x2c\x61\xfa\x25\x5b\x7e\x34\xcf\x28\x83\xda\xa1\x40\x9b\x67\x08\x93\x85\xed\x5a\xad\x49\x56\xf7\x1f\xbf\xec\x85\xbc\x5d\x96\xb2\xf0\xe7\x48\x25\xb6\xb0\x39\x02\x4e\x77\xe7\x13\xd3\xa1\x67\x45\x96\x5f\x48\x0f\xb1\xc1\x73\x9a\x59\x68\xa9\x9a\xfd\x61\xa3\x15\xd4\x36\x2a\xa8\x8e\x84\x08\xeb\xa8\x81\xfa\xcc\x6a\xd2\x2a\x2d\x0e\x25\x93\x41\xf3\xf1\x70\x36\xf4\x54\x0f\xc1\xd7\xf8\x29\xb2\x23\x52\x05\x2a\x45\xb7\x25\xa8\x18\x33\xb7\x58\x6e\xa9\xca\x84\x1f\xd1\x82\xed\xe5\x0a\x65\xb8\x1e\xab\x5d\xd5\xa0\x9e\x23\xdd\x81\x7a\x95\xce\x43\x01\xc0\xaf\xd2\x59\x52\x90\xfa\x26\xf3\xb6\x4c\x67\x20\x0d\x5b\x7a\xf4\xf4\xc2\xce\x3f\x0b\x01\x63\x46\x72\xff\xf1\x74\x3e\xf2\xb8\xb1\x77\xa9\xd4\x47\x90\xe7\x3f\x1d\xbd\x3a\x3b\x3a\xbf\xa0\x57\x01\xb9\x17\xf6\x35\xb3\x8d\x9d\x62\xbf\xe2\x13\x17\xc9\xc8\x23\x19\xb7\x60\xd0\xee\x2f\x7c\xdd\xc5\x6e\x2f\xbb\xbf\xc4\x18\x67\xfd\xd1\x41\x6f\x9c\x80\x82\x57\xb8\x75\xc6\x91\xb3\x27\xbd\xa8\x6a\xde\xbf\x12\x83\x5d\xe1\x42\x10\x7a\x72\x2b\xd0\xad\x56\x0d\x6e\x93\x19\x69\xe0\x1a\xbb\xe0\x8d\xb4\x3c\x19\x9e\xc8\x74\xe1\x0f\xe9\x08\xb9\xa3\x5f\x4e\x2f\x6b\x86\x8d\x8c\x0d\x6e\x6a\xd7\x5a\x45\xcd\xb0\xb7\xfa\x0d\xfb\x6a\x9f\x7e\x7c\x99\x6d\x7d\x8d\xdc\xc8\x6c\x9e\x81\x96\x28\x62\x0b\x29\x7b\xe0\xb9\x5a\xf4\x52\x25\x9d\xdd\xec\x23\x6b\x4a\x92\xa9\xfb\x56\xce\x23\xe5\x40\x6f\xe4\xb4\x7d\xf3\xf7\x03\xea\x3f\x41\xb6\x57\x00\x32\x97\xf4\xd3\xd7\xee\xf5\x1f\x93\x68\x34\xcc\x94\xe3\xca\x83\xb2\x70\xd0\xdc\x21\xb2\xa5\xb3\x07\xb4\x8b\x98\x7a\x92\x46\x0b\xd5\x66\x85\xb9\x17\x9d\x6d\x85\x49\x57\x6d\x9c\xae\x32\xe3\x46\x91\x71\x40\xc1\x09\x4f\xac\xe7\xd3\x10\x2c\x77\x4a\x8d\x6c\xca\x3a\xc1\x5b\x3c\xb3\xac\x68\x33\x37\x92\xbd\x4d\xe4\x0a\xc6\x73\x00\x36\x29\x64\xe6\x67\xb2\xbb\x45\x74\x16\xb9\xc2\xda\x77\x97\xe8\xa8\x48\xd3\xe4\x6b\xaf\xd2\x2d\x23\x04\x71\x8c\x58\x9a\x9b\xb3\xb4\xbd\xf3\x4d\x37\xe2\x34\xd2\xf5\x75\xdb\x2e\x22\x4c\xb7\xa2\xa4\x67\xe9\x5e\xd1\x00\x22\x16\xf6\xc3\xfb\x96\x33\xdc\xc5\x3f\x7b\xe2\x37\x33\xee\x1b\xf9\x0c\x83\xc6\x22\x65\xc0\x28\x8e\x5b\x06\x9b\x16\x8c\x25\x86\x18\x51\xd6\x33\xc5\x88\xe4\xd5\x8c\x31\x7d\x9d\x79\xe0\xed\x3f\x3f\x06\xa5\x04\x29\xb0\xb6\xf2\xba\x54\x50\xb0\x0a\xcc\x43\x48\xa4\x58\xb3\xb6\x66\x0d\xc5\x10\xfb\xa1\x75\xae\x1b\x34\x5b\x2c\xb5\x21\xd1\xc9\xb2\xba\x9d\xc5\x36\x25\xba\x7b\x18\x26\xa6\xc6\x94\x88\x50\xc4\x0e\xb4\xdc\xf9\x0f\x11\x06\x98\x34\xc9\x40\x32\xa1\xf3\x19\xc6\x57\xd2\x04\xf4\x57\x00\x5f\xb2\xb2\xf8\x8b\x64\xfd\x17\xad\x86\xff\xdb\xf4\xd6\x9a\xe9\xef\x28\xb5\x20\xd3\x9b\xca\xd2\x1f\xa8\xa2\x0f\xd2\xf5\x99\x7e\xf7\xb9\xbc\xef\x5b\x15\xf0\x03\x02\xa6\x38\x7b\xf3\xc3\xab\xe3\x17\xd1\xe1\xd9\x71\x2f\xc2\xc5\x0d\x4e\x48\x78\x87\x47\x91\x8e\x69\x22\x82\x96\xdd\x27\xb3\xbb\x7c\x5c\x0a\xef\xa9\x72\x7e\x4d\x93\x2e\xfa\x2e\x48\x27\x24\x05\x6a\x38\x01\x74\xb3\xe1\x2c\xfd\x90\xa8\x4d\xd0\x31\xaa\xe1\xd0\xdf\xb8\x9e\xa6\x29\x49\x7a\x69\xa1\xb7\xd3\xf5\xfc\xe6\x46\xdc\x27\x52\x26\xf7\xc3\x6c\x96\x8e\x84\xbf\x03\xe6\x7b\x45\xd9\x6c\x79\x0b\xba\x56\x2c\x75\x20\x92\x14\x96\x63\xdf\xc6\x6f\xe2\x7c\xf7\xd3\x0d\xe1\x68\x48\x1a\x5e\x60\x37\x57\xc0\x41\x17\x94\xbe\x5a\x8e\xe1\xcb\xa0\x16\x58\x1d\x06\x48\x98\x96\x20\xb1\xd2\xb1\xfe\xf2\xf3\xb0\x48\xd1\xa7\x19\xed\x96\x2b\x54\xda\x52\x95\xda\xea\x4c\x54\xe1\xe9\x67\x60\x5b\x37\xd1\xad\x1b\xf8\xda\xfa\x1f\xd9\xb9\x2e\xf3\x1f\x88\xb6\x0b\xd6\x08\xbc\xfa\x4d\xb2\x0f\x69\x91\x67\xb4\xe7\xae\xb6\xd3\x43\xde\x9d\xea\x97\xee\xff\xa1\x5e\x03\x3c\xf6\x5d\xb2\xf9\xe5\x44\x2f\x63\xa0\xb9\xca\xa2\x56\x0b\xf0\x60\x62\x0a\x34\xfe\x67\xe2\xb5\x21\xe8\x21\xd1\x42\x6f\xe2\x64\x2c\xbd\x59\x6b\xae\x53\x10\x52\x8c\x22\x45\xf4\xa2\x9a\x76\x59\x94\x9e\xc6\xc0\xb3\x47\x27\x2f\x8d\x21\x50\xe5\x3a\x64\x10\x89\xdd\x87\xf8\x9c\x22\x2c\x0f\x4a\xe1\x19\xea\xe8\xf5\x46\x29\x3c\xd5\xa9\xdf\xf6\x03\x2b\x43\xed\x3d\x84\x93\xea\x27\x1d\x69\xd9\x70\xb4\x9c\xe4\xb7\x0d\xfb\x15\x97\x5c\x2f\x8f\x7e\x78\xf3\xf7\xd8\xab\xb2\x65\xf8\xf2\xa9\xe0\xb1\xc2\x69\xca\xac\x5d\xea\x89\x5e\xe1\xcc\xdd\x53\x48\xcb\x17\xb8\xf9\x0f\x79\x9f\x3c\x31\x4e\x4d\xf2\x77\xe5\x05\xc9\x67\x2a\xa9\x19\x5a\xcb\x11\xb2\x97\x56\x51\xda\x38\x04\xfd\x3c\x2c\x13\xbc\xda\x54\xcf\xdc\x36\x7e\xd3\x22\x19\x8a\x16\xd8\xe9\x74\xca\xe1\x62\x92\x5b\xd7\x0b\xe8\x2f\x3f\x0b\x2f\x71\xc7\x91\x4b\x39\x91\x92\x0f\x54\xa4\x9c\xb9\xa2\x47\xa7\x21\xd4\xfb\x7c\xd3\x82\x63\xb5\x95\x9f\x5f\x48\x4f\x88\x20\x6b\xd8\x66\x12\xed\x46\x63\x12\xd8\x71\x9b\xb4\x2b\x49\x8d\x73\x74\xc2\x92\xe1\xbb\x49\x8a\x8c\x68\xc4\x10\x4f\x4b\x1c\x26\x45\x26\x47\xb9\x5c\xd9\x69\x92\x14\x2f\xc3\x47\x72\xa0\xdd\x13\x79\xde\xa9\x10\x04\x76\x61\xf1\x33\xb0\x0e\x92\x18\x7e\x8e\x2b\xb8\x00\x8a\x5e\x00\xb6\x98\x25\x3f\xca\xf1\x29\x75\xd3\x06\x8f\x43\x47\x06\xc0\xb7\x53\xd7\x04\xb0\xd0\xa7\x75\x41\x47\x79\x24\xc5\x80\xce\xcc\x66\xca\x4d\xb1\x2a\x87\x42\x09\xb0\xef\x99\x27\x8b\x47\x96\x03\x18\xf3\x80\x2e\x6f\x17\x57\xa3\xa2\xba\x3d\xd2\x07\xd7\x32\xb0\x3e\x31\x07\x72\x68\xc1\x48\x82\x52\x55\xcb\x09\xfb\x56\xbe\x51\x3e\x4d\x89\x50\x72\x05\x46\x3b\xc9\xf2\x09\xcf\x4b\xc8\x59\x4a\x80\xc2\x19\x4f\x7e\xdc\x37\x7c\x4a\x83\x93\x8f\xde\xb4\x14\x3e\x3d\xb2\x1a\xf9\x80\x3e\xa3\x72\x8b\xb0\xd4\x3b\xa0\x15\x55\xaa\xaf\xfb\xb5\xfd\x45\x17\x5c\x48\x33\x5d\xb0\x2e\x69\xa7\xa3\x1f\x21\x8f\x2d\x58\xec\xd9\x2a\x8a\x54\xeb\x82\x9c\xb1\x1e\x50\x00\x75\xa7\x2c\x9b\x85\xb5\xd3\x72\x2c\xf5\xa6\x48\x4c\xa8\xa2\x4b\x9d\x39\xb3\xd1\x5c\x01\xa1\x5a\xcd\x47\x08\x17\x09\x05\xca\x3d\xb4\x40\x60\x3c\x5f\x16\xe6\x58\x84\xce\xfe\xa3\xda\x47\x6b\x07\x78\x18\x4e\x26\xf9\xc7\xa8\x7c\x9f\x4e\xa7\x74\xba\xe9\x2e\xd1\x70\xf4\x92\x51\x0d\x1c\x5a\x58\xa4\x78\x94\x6b\x0e\xf3\xc8\x75\x02\xca\x64\x96\xe7\x53\x93\xe7\xb1\xca\x17\x3c\x91\x38\x72\x3d\x9f\x17\xc4\x9d\xb9\xba\xaa\x83\x8d\x40\x21\x61\xd0\x33\xa3\x9b\xb8\xd3\x33\x5d\x1c\x92\x8f\x04\x2f\xd9\xb3\x06\x4e\x64\xa3\xa1\x0c\xf5\xcf\x13\x06\x99\xa3\xac\xe5\x82\x28\xae\x43\x6b\x6f\xfa\x1b\xb3\x84\x70\xbf\x3d\xe0\x3a\x38\x81\xee\x4e\xc4\xee\x93\x50\xf4\xc5\x9d\xa1\x2e\xf9\xbb\xbc\xd8\x29\xba\x87\x8e\xbe\x87\x5e\x2e\xc4\xc4\x19\xdd\x0f\x89\xf0\xe5\xaa\x63\x5c\x4e\xb7\x8e\x9f\x3a\x7b\xcc\x0a\xa0\x69\x66\x4d\xe8\x2d\x59\x28\xe0\x6f\xb1\xb0\x81\xe8\x09\x00\x3f\x02\x26\xbc\x1e\xd4\x15\xb7\x3a\x80\xfb\xf4\xbb\xc8\xb1\x96\x07\x2e\xc3\x5f\x48\xeb\x1a\xb6\x85\xc7\x06\x7f\x91\x61\xc9\x50\x4b\xec\x34\x5d\x0d\x54\x13\xfb\x75\x52\xdc\xa2\xbf\xb6\x98\xde\x57\xa1\xac\xdb\x74\x98\x44\xaf\x32\xaf\xb5\x4a\x01\x92\xc7\xc1\x21\x07\x22\x81\xbf\x5f\x20\x16\x8c\xaa\xe5\xa0\x96\x13\x90\x90\x11\xfb\x01\x7e\xf2\xb7\xf7\x94\x66\xf7\x7d\xd4\xaf\x09\xdf\x0d\xe4\x44\x94\x7c\xb5\x41\x04\x0a\x92\xa5\x37\x47\x46\x16\x29\xd9\xf1\x51\x49\x5c\x5d\xb2\xca\x51\xc8\x57\x53\x57\xf4\x0e\x35\x8f\x1d\x08\x24\xb8\x8f\x2b\xc0\xd9\xfb\x35\x06\x71\x7d\x81\x60\x83\x37\xc9\xaa\x4e\x1b\x44\xe2\x80\x82\xbb\xbe\x51\x52\xc7\x52\x68\xd8\x68\x21\xeb\x76\x65\x30\x92\x43\x49\xa7\x0b\x25\xd6\xea\x7c\x4a\xa9\xce\x57\xde\x92\x76\x0e\xd3\x8f\xb8\xc5\xa3\xde\xa8\x3b\xa7\x26\xea\xb1\xf8\x00\x0d\x41\x0c\xeb\x36\xd3\x5b\xb8\x63\xb6\x47\xe3\x8e\x83\x55\x97\x15\x0e\x9e\xc6\x32\xc2\xa1\x84\x9d\x31\xbc\xb8\x83\xf1\xd5\xd7\xbe\x84\x03\x99\xa6\x3e\x9d\x66\x91\xbc\x45\xf1\x3a\xb9\xc1\xab\x5d\x64\x34\x24\x8e\x4f\xc2\xa6\x25\xd2\x39\xfd\x62\xc3\x9b\x19\x2e\x18\x25\x42\xc2\x30\x92\xdf\x04\xce\x47\x39\x15\x5f\xc2\x6c\x37\x9d\x17\xd3\xbc\xa4\xfc\x64\x27\x93\x93\x56\x4a\x86\x8e\xd9\xf0\x3d\x4e\x57\x04\x48\xe4\x48\xc8\xb0\xa1\x00\xbc\xfb\xf4\xe9\xdf\x6e\xf2\xfc\xf1\xb1\xd5\x6a\x7d\xfa\xb4\x41\x8f\xef\x62\xcb\x9e\xcf\xd8\xbc\x83\xaf\xef\xac\x98\x41\xca\x1a\x47\x71\x1e\x84\xf7\x23\x2d\x3e\xf0\x58\x44\xa4\x0f\x80\x61\x61\x3c\x3a\x92\x14\x93\x07\x55\x94\xf6\x88\x71\xee\x0d\x9d\x01\xc3\x3c\x9a\xda\x41\x5d\x31\x24\x90\x5b\x3e\x2c\x64\x4f\x39\xda\x03\x5f\xeb\xfb\x41\xe1\xc2\xd2\xc4\x5e\x84\x91\x2d\x51\x5a\xf7\x36\x8d\xb1\x62\x2f\xd4\x88\x22\xb4\x06\xd3\x0e\xfa\x32\x12\x76\x60\xd4\xe2\xad\x58\x18\x83\x2a\x8e\x00\xa2\xca\xe6\x71\x68\x2d\x40\x24\xda\xca\xf3\x0e\x23\xa9\x2b\xb4\x9b\x7a\x8a\x68\x7a\xe6\xd4\x7e\xc0\x65\xf3\x2b\xb1\x34\x9f\xa3\xfc\x20\xec\xe3\xaa\x30\xea\x47\x02\xff\x03\xe6\x27\x52\xd3\xe8\xa8\xa4\x8e\xe3\x74\x03\xec\xf5\x50\x31\x3e\xe8\x73\x96\x1b\xb0\x7a\x51\x89\x72\x06\xe6\xe9\xc0\xe0\x0c\x16\x37\xcb\x6a\xc4\x03\xf4\xf8\xff\x84\xe9\x68\x61\x23\xd8\x46\xcd\x8a\x22\x0a\x3a\xb0\x1f\xf3\xd1\x62\x5e\xf3\x55\x55\x39\x55\xd1\x6c\xae\xef\x74\x67\xca\x11\x7f\xc1\xea\x83\xe2\x3a\xc9\xba\x71\xe5\x71\x10\x1a\xcb\x4b\xd8\x14\x96\x26\xae\xe1\x8b\x18\xd4\xf4\x73\x5c\xce\x9a\x20\xbc\x2a\x65\xaa\xfe\xa6\xb2\x1c\x12\xf0\x52\xca\xab\x42\x1f\x4f\x45\x19\x27\x3d\x2a\xdf\xa9\x13\x6e\xaa\x81\x42\x2f\x11\xdc\x62\x22\xb7\xd4\x75\xd3\x24\xa9\xd8\xcd\xb2\x2c\x9d\x0d\xdf\x14\xa8\xe0\x34\x2b\x09\xb3\x9c\x22\x72\xf8\x7d\x1e\x61\x5e\xe4\x09\xa0\x5a\x46\xef\xa8\x34\x91\x60\x18\xc9\x60\x0c\x68\xf7\x1e\x4a\xc2\x81\xb8\x0f\x52\xc7\x85\x77\x7c\xc3\xa0\x70\x36\x2a\xe6\xb3\xbb\x87\x18\xa3\xfb\x6c\xaa\x88\x6d\x23\xaa\x51\xae\xce\x86\xaa\x37\x74\x5d\x09\x4f\x35\xa7\x78\xd2\xf0\x63\x8a\x92\x07\x2b\x4e\xf0\xc4\xbc\xca\x8f\xa1\xdf\xcc\xec\xe2\xa5\xd2\xc4\x40\x4b\x17\x35\x5a\xa6\xde\x68\x09\x0d\x84\x06\x2f\x79\x88\xd3\xe5\xda\x5d\x27\xb0\x7b\x01\x0f\x17\xa7\x97\x29\x2b\xb1\xbc\x66\xf8\xcf\xb0\x65\xfb\x38\xc9\x1d\xe0\xaa\xfa\x6a\xf5\x7a\xcd\xab\xce\x57\x69\x2c\x97\xd4\x7f\x11\x57\x09\xe8\xcc\x09\xba\x73\x0d\x3e\xf2\x46\x97\x44\x69\x89\xd9\x2b\x32\xae\xeb\x10\x76\xb2\x46\x33\x8e\xe0\xa5\x40\x13\x88\x3e\x0c\x1c\x94\xdb\x6e\xd8\x0b\x94\xda\xa2\x33\x9c\x0f\x75\x73\xf5\x2c\x2b\xfe\xe6\x9b\x28\x60\x82\xb4\xdd\xb3\xcd\x0e\x64\x9c\xa8\x4f\x9e\x05\x36\x00\xcc\x33\xd3\xd6\xbd\xd1\x02\x27\x58\xd8\x4b\x63\x9b\xb7\x30\x58\x49\xcc\xd4\xdc\x56\x35\x18\x0d\x3d\x04\x84\xe6\x00\x7f\x09\xdd\x90\xfc\xd1\xc6\x91\xaf\x25\x95\x3d\x95\x41\xe6\x30\x2c\x2a\x07\x34\x33\x3a\xf5\x5d\x24\x33\x5b\x3d\xc5\x97\x77\x46\xa9\x77\xfa\x5c\xb2\xc8\x23\x79\x4d\x03\xd3\x8d\x59\xe8\x75\xe4\x19\x78\x30\xf6\x86\xe7\xad\x10\x30\x03\xc9\x63\x8c\x55\x83\xcf\x71\x0b\xfc\x32\x82\x4a\x49\x2c\x61\x09\x37\x98\x38\x30\x1a\x71\x7f\xb2\x8c\xe6\x53\x47\xb5\xc7\xfc\xef\x94\x12\xaf\xa4\xba\x32\xa1\xe1\x90\x25\x33\x5a\xc9\xda\x3b\x2a\xfc\x92\x9e\xe2\xfa\x70\xfa\xe2\xb4\x68\xb1\xdf\x9a\xbc\x4d\x05\xf8\x8e\x57\x8c\x62\xf3\xb4\x21\x0e\x62\xd4\x4d\xcd\xe3\x85\xda\xb1\x12\xdb\xa8\xf5\x91\xf2\xc0\x0c\xf0\xa8\xe1\xa1\xf9\x35\x69\x1a\xa2\xe6\x19\x51\xc5\xe7\x43\x97\x82\x21\x62\x19\x68\x56\x2b\x9b\x4c\x24\xb9\xa3\xbe\x80\x36\x01\x4a\x04\x7d\xae\xbf\x8a\x98\xe7\x98\xaa\x5e\x5e\x63\xf2\xa7\x11\xa9\x15\x00\x8c\xbd\x8a\x08\xc4\x95\xeb\xc6\x6b\x56\xfd\xc5\xe2\xd1\x5e\x0d\x0b\xd3\x2e\x42\xa0\x5c\xc1\xc6\xad\xae\xb6\xab\x7c\x97\xc2\xad\xa0\x5e\x53\x09\xb5\xfa\x5f\x5c\xd2\xa9\xc5\x9a\x8c\x6e\xe1\xa9\xc7\x07\xda\x1b\x82\x2a\xfd\xde\xcd\x22\x4d\x31\x62\x1d\xd0\x8c\x7a\xe6\xf7\x45\xcb\x39\x31\xec\xbe\x4a\xbf\x52\x96\x6a\xe9\x71\x2e\x3b\xce\x60\xf8\x25\xeb\x7e\xc4\x4d\xdb\x2d\x50\xf0\x68\x59\x23\x79\xc3\x10\x1d\x8b\x25\xc6\xe7\xf6\x84\x4d\x7d\x0e\x09\x15\xec\x18\x74\xe6\xf3\x7b\x44\xf6\x81\x2b\xa0\x64\x0e\x5f\x1a\x2d\xef\x25\x74\x90\xfe\x32\xa9\x84\x56\xca\x7e\x3a\x0e\xf6\x0f\xca\xa3\x70\x07\x10\xe5\xd3\xb1\x27\xe3\x11\x9a\xd1\x01\x88\xde\x22\x1f\xfc\x45\x42\x5b\xb8\x7e\xe3\x01\x22\xf1\x5c\x25\x9b\x0d\xc7\xba\x2f\xa3\x84\x50\xff\xe3\x15\xe4\xf4\xa5\x6d\x18\x1b\x27\x78\xd0\x51\xf8\xf8\xe0\xa1\x07\xdc\x3a\x90\x6b\x89\x7b\x8a\x04\xa4\x42\x26\x89\x20\xd1\xc2\x59\x28\xbc\x60\x1c\x1a\x21\xb2\x87\x93\x1c\x3e\xd1\x20\x48\x67\x3c\x57\x0a\x7f\xc3\x62\x48\xa1\x52\x66\x77\xc3\x4c\x4a\x2e\x5a\xb9\xc0\x2a\xe8\xfe\x3e\x19\xa7\x14\x78\x50\xcf\x0b\x06\x89\x3c\x57\x18\xd7\x89\xe8\x2f\xcc\x13\x7e\x49\x52\x41\xa5\x1b\xa3\xb9\x38\x11\xa2\xcc\x08\xa2\x56\x17\xcf\xfe\x19\x27\x03\x8e\xe5\xa5\x5f\xe5\x66\xe6\x61\xec\x96\xb2\x78\x47\x39\xa3\x2d\x9e\x29\x1b\xf5\x4f\x8f\xf5\x66\xf5\xd9\x9c\x2a\x2f\x54\x6b\xcb\xac\x51\x47\x4b\x17\x4a\x68\x3c\x4e\x26\x21\x86\x70\xb2\xf9\xf9\xcb\x58\xd9\x5a\x0a\x48\x4a\x54\x0e\xf0\xa1\xcc\x8e\x91\xae\x69\xe5\x82\x1a\x9c\x28\xf4\xce\x51\x35\x1c\x8e\x5a\x76\xf6\xc2\xeb\x14\x7f\x9d\xa2\x02\xe1\x85\xc7\xf6\x97\x51\x21\x81\xd5\x49\x75\xab\x33\xfa\x2e\x17\x6b\x15\xcd\x34\x5d\x9f\x20\x73\xa5\xf4\xa2\x8f\xe1\x26\xc8\xa6\x7f\x59\x4b\x2a\xd5\x22\xa9\x31\x0e\x79\xfa\xb4\x14\x43\x25\xa8\x70\xd7\x14\x5b\x09\xcd\xfd\xc0\xe1\x94\xa4\x5a\xc4\xab\x1a\x0a\x18\x47\x5b\xc8\x64\x34\xa1\x7b\x8f\xf3\x02\xa3\xc1\x7d\x90\xbe\x7d\xb8\xe4\xb9\xcb\x27\x63\xad\xb6\x6b\x11\x23\x9b\x59\x1d\x75\x30\xcc\x10\x66\x4c\x31\x97\x72\xd2\x4d\xf5\xcb\x28\xa7\x02\x10\x61\x38\x93\x45\x43\x40\x85\x0e\xa9\xe4\x09\x49\x4c\xdc\x01\x61\xfa\x0d\x15\xf5\xd6\x31\xd6\xbf\x88\x3d\x83\xab\x1b\x98\xc0\x61\x2c\xcd\xc8\xb4\x25\x6d\x51\xf2\x3e\x80\x75\x3c\x41\x2f\x34\x4c\x05\x44\xd7\xa8\xa9\xe9\xc7\xcc\x21\xfc\x2d\xaf\x45\xaa\xed\x89\xd0\x43\x2a\xc4\xa7\x3b\xf2\x64\x23\x8d\x55\x3b\x81\xfd\x5c\xd1\x4a\x35\x56\x0b\x31\xf3\xbc\xde\x5f\xdf\x07\x90\x06\xde\x56\x6b\xe9\xca\x41\x6a\x26\xea\xaa\x0a\xa8\x7d\x44\xec\xee\x76\x34\x86\x17\xce\x6f\x84\xe2\x2f\x32\xd7\x4b\x3d\xdd\x8a\x1b\x54\x00\xf1\xd2\xc8\xc0\xee\x91\x7a\xcd\x6a\x17\xb7\x17\x15\x81\x65\x99\xb7\x82\x51\x68\x52\x9c\x72\xb1\x5f\x11\x47\xef\xac\xf0\x63\xb4\xbc\x41\x4b\x77\x32\x16\x40\x4c\x8a\xba\x67\x2f\x2e\xd2\x7f\x26\xf2\x14\xe4\xe2\x15\xca\x5d\xd5\x9e\xc2\x5d\xf5\x76\xc2\x9d\x75\x9b\x88\x61\xb3\x37\x4f\xc4\x8a\x24\x0f\x9b\xa0\xc7\x61\xa3\x6e\x04\xb3\x84\xf9\x50\x54\xa0\x02\x1d\x84\x85\x6b\xcd\x8c\x7f\xf9\xbd\x19\x0d\x93\xb7\x03\x98\x61\xef\x74\xba\x74\xe3\xa7\xdd\x05\xb2\x93\xf5\xa2\xbb\xe0\x5e\x82\x5b\xd8\xca\x65\x40\x09\xed\x2c\x78\x67\x6e\xff\x1b\x31\xbc\x23\xfc\xe1\x85\x0e\xe4\x92\xfb\x91\xcd\x89\xe2\x74\x2e\x30\x6f\xf2\x07\xf4\x12\x33\x7d\x89\x82\xcb\x65\x4d\x58\xda\x4c\xae\x71\x75\x26\x39\x58\xc6\x00\xb5\x38\xd5\xa0\xc7\x2a\xec\xea\x73\xda\xca\x7c\xa5\xb9\xc4\xe0\x24\x5a\xfc\xf2\x4e\x51\x98\x25\xaa\x3b\x93\x4f\xff\xff\x17\x76\xa5\x11\xc7\xf5\xf3\xfa\xd1\xd6\x62\x26\xe9\xfb\x04\xf7\xe0\xc5\xbe\x3b\x4f\xd3\x3a\x4a\xaa\x38\x97\xfd\x31\x91\x61\x97\xb1\xdf\x23\x8a\xdc\x6a\xcc\x62\x00\x97\xd6\x16\xe9\xcc\x00\xc0\x37\x01\xe1\xed\x36\xd0\xbe\xd9\x5d\xc5\x9a\x48\x61\x99\xdc\xe3\x75\x46\x74\x77\x3b\x2d\x93\x68\xa5\xa2\x63\x3c\x2a\xdf\x71\x53\xbe\xe2\x89\x0b\xf4\x86\xc3\x0b\x84\x45\x90\x58\xbc\x4f\x47\x3a\xd4\x45\xef\xcc\xb3\x74\xef\x4c\xb7\x81\x77\xee\x29\x3b\x60\xd2\xc9\xf0\xb6\x74\x5b\x66\x72\x28\x77\xf2\x62\x13\xc1\x5f\xb6\xf2\xf8\x0b\x28\x53\xf1\x5f\xcc\xf0\x9b\xcc\xe8\x5e\xf6\x13\xc3\x4b\xdd\x97\xc6\xe6\xf2\x59\x0a\xf7\x3a\x1b\x15\xe4\x94\xf5\x39\x62\xf9\xc4\xc3\x22\xcb\xb3\xea\x2a\x3f\xc3\xcc\x6a\x12\x02\x77\x5b\x94\x93\x39\x6f\xbf\xf0\x26\x9a\x89\xad\xb9\x29\x51\x47\x15\xc8\x40\x1a\x77\xcb\xb0\x6e\x0d\xed\x19\xbc\x1f\xf8\xb3\x45\xbd\x42\x24\xe0\x9d\xa7\x8f\xf5\xea\x6d\xbb\xba\xdc\x22\x0b\x55\x42\x69\x4c\x1a\x48\xdb\x0f\x66\x93\xcb\xdf\xc0\x27\xdf\x96\xe7\x65\xf2\xac\x79\x5e\x0e\x03\x7f\x5f\xaa\x49\x97\xe2\xe5\x32\x6d\xe4\x9b\x3d\x38\x97\x2f\xb8\xa4\xbf\xdb\xca\x93\xd0\x54\x29\x61\x43\x5d\x91\x52\xbb\x86\x0c\x4d\x1a\xfe\x74\x4c\xe9\x2a\x3d\x4c\x23\x82\x6f\x1a\x89\xe8\x9a\x15\x30\xab\xf9\x95\xa3\xdd\xf6\x9d\xf0\x58\x5b\xb9\xf5\xe9\xe1\x24\x53\xea\xb0\xa6\xa8\xd9\x47\x92\x6a\xb1\xbb\x0f\x56\xe1\x22\xb8\x20\xea\x87\x1d\x38\xc1\xf5\xf9\x43\xbf\xc2\x8a\x7d\x3b\x57\x60\x95\xc9\xe4\x26\x52\x77\xfe\x54\xcc\x9c\x35\xcc\xd4\xb2\xe8\xb4\xc8\x13\x28\xe4\x46\x60\x44\xfa\x5a\xd9\x6e\x2c\x26\xcf\x45\xf3\xa3\x9b\xc3\xd2\xe4\xd5\x92\x17\x39\x82\x6e\x92\x53\xaa\xbd\x82\x41\x38\x95\xa0\xbf\xc0\xc7\xfe\xfb\xe4\x61\xa0\xce\x06\xbe\xab\x52\xea\x11\x0a\xa9\x36\x21\x45\xde\x6c\xa3\xc1\x46\x00\xd8\xe6\xa2\x0f\xe6\x2d\x40\xa6\x3b\xc0\xe7\x5a\x91\xdc\x40\x59\xbe\x6b\x41\xb4\xe4\x83\xb5\xc3\xcf\x56\x28\x71\x82\x0e\xf0\x16\x07\xe8\x94\xff\x3c\xd6\x44\xce\xc0\x61\x57\x59\x79\x71\xa2\xe7\x12\x54\x25\x2e\x29\x3f\x9f\xd7\x73\x6b\x13\x44\x32\xab\x0b\x44\xac\xa0\x77\x1d\xa1\xdd\x3f\x85\x68\xc7\x99\x55\x27\x91\x96\x1c\x57\xb3\x7b\xcb\x08\x76\x6d\x3a\x4d\xa8\xe4\x58\x64\x88\x19\x8d\x2a\x6f\x5e\x55\x60\xa1\xe7\xee\x48\x1e\x1c\xe3\xe8\xb1\x66\xf4\xbf\x91\xbe\x32\x20\x10\x01\x77\xdf\x89\xb1\xe7\x79\x53\xf3\xd9\x8a\x48\x0d\x12\xdc\xdb\x40\x6b\x0d\x9a\x89\x73\x65\xfa\x11\x62\x0a\x4a\xdf\x4c\xd2\xd1\x4c\x9e\x47\x4d\x4a\xb4\xfe\x39\xae\xde\xf2\x28\x7f\x36\x4e\xfe\xd0\x11\x50\x9d\x4a\x65\x63\xed\x06\xb6\x54\x19\xfa\x75\x3f\xca\x73\x76\x75\x09\x03\x27\x31\x27\x5f\xb0\xaa\x3e\x65\x1a\xd0\xd9\x14\x79\x04\x55\xc5\x04\x96\x3d\xc4\xa7\x11\xcd\xf2\x55\xe6\x5f\xd7\x0e\x52\x69\x68\x59\x45\xa8\xf2\xc0\x16\x26\x99\x03\xdf\x24\xc3\x81\x15\x50\xd0\xe2\x59\x0f\xdf\xe3\x9e\x99\x31\x74\xf4\xca\x0e\x37\x6c\xc6\x94\xe2\x90\xec\x82\xba\x86\xd3\xb7\x1b\xf6\x98\x66\x38\xd1\xee\x33\x9e\xe8\x8c\x0e\x8b\x8d\x0e\x5a\xe6\xbc\xae\x9c\x11\x16\x07\x11\x52\x61\x8c\x65\xac\x93\x70\xe8\x62\x0a\x56\x8d\xca\x9b\x85\x9b\xe9\xdd\xbe\x69\x46\x60\xe1\x58\x15\x95\xd9\x51\xbc\x18\x01\x8e\x43\x11\x8e\x55\xe5\xe5\xb2\x4b\x48\x44\x87\x29\x13\x22\xcd\x89\x56\xb5\x95\x4e\xb2\xae\x1d\xcd\x2e\x56\xde\xa5\x37\xb3\x46\xc0\x2f\xd7\xac\xee\x17\xd0\x81\x44\x98\x8a\xcf\xa8\xd7\xe2\x72\xa5\xdc\x87\x62\xef\x38\x1c\x0e\x0b\xca\x73\xb5\x14\xf0\x17\xd9\xa6\x5c\x57\x6a\x8e\x16\xe4\x41\x31\x6e\x00\xac\xd4\xb9\x38\x54\x0e\x9f\x2e\xaa\x08\x70\xe6\x7c\x0f\x87\xcb\xb1\x8f\x28\x69\x64\x17\xec\x00\x99\x0b\x34\x73\x97\x72\x96\xb8\x97\x67\x9a\x67\x61\x25\x68\x90\xd1\x6a\x6d\x47\x05\xb8\x1e\xd9\x99\x98\xb8\x1f\xae\xb2\xb2\x2e\x19\xa3\x5e\x2f\x85\xd2\x6c\x54\x2c\xf3\x27\x2c\xa5\xfe\xaf\xba\x04\x41\x3a\x33\x79\x45\x1b\xa8\xa4\x8b\x37\x25\xee\x3b\x8c\xa4\x37\xca\x4d\x07\x55\x69\x09\x5a\x80\xbf\xd6\x14\xac\xe8\xde\x88\xe1\x41\xa4\xca\x8b\x75\x99\x38\x31\xa2\x50\x92\xb9\x71\x1e\x93\x13\xd7\x7d\x3e\x4e\x6f\x52\xa9\xde\x2b\xbf\x18\xe9\x0f\x23\x86\xbb\xda\xa6\x40\x4b\x7d\x91\xcf\x6f\xef\x2c\xc4\x0d\xf5\x6b\xe3\x37\x2a\xb0\xa1\xae\x62\xc2\x2a\x4d\xa6\x2b\x2b\x57\xa3\x8a\x93\xbe\xa0\x2f\xaa\xc9\xcc\x35\x99\xdb\x6a\xef\xd3\xe9\x0b\xa3\xe3\x6c\x5a\x9b\x87\xd6\xab\x58\x25\xc0\xba\xe6\xa8\x50\x17\x9d\xf3\x31\x77\x1d\x7f\x40\xc2\xab\xde\x23\xe5\xb3\xe7\xcf\x9e\x69\x17\xd4\x86\xfd\x29\xfa\x9b\x91\x97\xce\x15\x72\x64\x4a\xf7\x83\x10\xe2\xf4\xae\x4f\xad\x29\x38\x4d\xef\x66\xac\xaa\x9c\xce\xa0\x93\x1c\x58\xe9\xfa\x29\x99\x31\x40\xab\x7c\xea\xa8\xed\x94\xd5\xb8\x6a\x4c\x8e\xff\xc0\xc4\x81\x39\xed\x03\xe1\xe1\xad\x15\x46\x7a\x7d\xdd\x9b\x0d\xb4\x00\x71\x65\xd7\xec\xaf\xb6\xa9\xef\xb7\x52\xce\x80\xeb\x51\x7b\xf0\xaf\x6b\xeb\xd2\x16\x99\x5b\xc2\xf6\xa6\xb2\x17\xeb\xa2\x5e\xab\x8b\xf8\x19\x0c\x9d\xef\xef\xd9\xb8\xba\xda\xb8\x85\xb5\xf9\x15\xfc\xab\x37\x03\xdf\x6b\xf2\x73\x2d\xf8\xf5\x2a\x93\x9f\xb3\xf0\xe7\x42\x7e\x2e\xc4\x59\xb3\x5a\xdd\xe6\x34\xc3\x84\xb7\xaa\xd1\x3b\x70\x5d\x92\x77\x4a\xc3\x00\xe0\x1c\xa7\xa3\xd3\x73\xc6\xd6\xc8\xe7\x59\x01\x6d\xaa\xba\xa6\x86\x9e\xba\xb3\x8a\xd3\x45\xe8\x3d\xa3\x3e\xfd\x49\xdb\xd1\x7a\xc6\xb9\x13\x75\x80\x58\x62\x6d\x28\x2d\xba\x64\x60\xab\xa5\x67\x9e\xbe\xf4\xfd\x05\x88\x88\x0b\x60\x2b\xf6\xf2\x56\x95\x38\x5f\x48\x7a\xcb\x2d\x5a\x9c\x3a\x4a\x7d\x7b\x27\xdd\x51\x86\x16\x67\x79\xb5\x3b\x5e\x58\xa7\x77\xca\xf3\xe8\x06\x03\x46\xa5\x99\xee\xeb\x70\x2c\x34\xab\xab\x1c\x27\x73\x15\xe0\x04\xef\x04\x63\x04\xc4\x2b\xae\xbf\xd5\x33\x15\xf6\xf7\x15\xb8\xcf\x94\xe5\x40\x2f\xec\x7b\x01\xef\x6b\x43\x76\xd9\x17\x59\xf8\xf6\x02\xe7\xde\x8c\x80\xd5\x02\xcf\xb9\xa0\x5d\x1e\x5b\x4e\xfe\x01\x37\x19\x91\x51\x81\xc6\xa3\x54\x49\x4a\xa6\x7d\x24\x23\xe4\x92\xfb\xe5\x74\x34\xbe\xd4\x50\x54\x88\x04\x20\xe8\x18\xb7\x97\x46\x77\x09\xcc\x98\x14\x66\xd8\x0c\x9c\x77\x93\x35\xdf\x19\xd2\x48\x21\xf8\xe7\x9f\x7e\x34\x2d\x79\x4e\x38\x70\x1d\xc8\xe7\xd8\xc4\x6c\x32\x04\x56\x6a\x56\x58\x38\xaa\x31\x80\xc9\x67\x56\xa8\x3b\x66\x59\x85\x76\x97\xcb\x72\xd4\xeb\xfe\x7d\x0b\x76\xde\x9b\xac\x67\x2c\x20\x16\x85\x87\xc5\x3b\x64\xbf\x63\x1e\x0e\x9f\x3b\x5e\x64\x8c\x9a\x06\xee\x43\x33\x17\x7c\x2b\x59\xbd\x22\x31\x12\x8c\x93\x07\x16\x47\xeb\x6c\x6a\xfc\x2c\xcb\x59\x7d\x8a\x7e\x19\x2a\x36\x1d\x55\x7d\x3d\x8a\x97\xc5\xb5\x4b\xc9\x23\x56\x62\x83\x5a\x65\x37\x50\xab\x44\x59\xd1\xc0\x55\x0b\xb2\xdd\xae\xc7\x4f\x01\x13\x9d\x4b\x5e\xd7\x80\x6c\xc3\xc4\xaf\xbd\x0a\x33\xb2\x65\x6a\xfe\x24\xae\xff\x13\x65\x2d\x8c\x1f\x3d\x8d\xd6\x33\x17\x4b\x11\xbc\x66\x46\x72\x2b\x92\x32\x29\x3e\x24\xe3\x5f\xf2\x62\x8c\xe2\xae\x41\x79\x6a\xd7\x45\x32\x7c\x2f\xb4\x06\x5c\x58\x41\x4e\xb5\x2f\x5f\x83\xd9\x05\x52\x6f\xf0\x02\x7e\x8a\x0c\x2a\xfc\x2d\x40\x14\x99\x39\x66\xa3\x3b\x92\x21\xe5\xc7\x14\x1f\x29\xbe\xa4\xf1\x5d\xde\x8b\xa4\xef\xbf\x44\x5a\xd1\x2e\x83\xce\x34\x4e\x6e\x86\xb8\x97\x40\x77\x4d\x16\xf9\x47\xf3\xcb\x24\x99\x91\x53\xe7\xac\x78\x30\x92\x73\x53\x3f\x12\x7b\x3b\xfa\xeb\x10\x63\x2c\x0c\x47\xe2\xba\x67\x74\x02\x8a\xca\xbb\xbc\x98\xe9\x0c\xd7\xe2\x32\x70\xdc\xbe\xcd\x0b\x72\x13\x4a\x8a\x1b\x8a\x45\x38\x83\x35\xce\xc8\xc8\xf8\x00\x95\x03\xaf\xd1\x59\x39\x72\x09\x2d\xe7\x18\xf1\x53\x37\x0f\xef\xf2\x25\x02\x45\x32\xe8\x5c\xf9\x90\x8d\xa0\x0d\x19\x0c\x63\x93\x4c\x14\xae\xee\x66\x92\xd3\x5d\xf9\xa3\xf7\xc3\xdb\x44\x34\xb5\xb4\x48\x55\xce\xa2\xdb\x9c\x2c\x86\xe9\x07\xba\x9b\xaf\x18\x66\x65\x8a\x37\x7e\x1b\x14\xb9\x9e\xe3\xd9\xf8\x88\x4e\x96\x89\xd9\x13\x83\xea\x25\x23\x72\x23\xcc\x27\x80\x86\xd9\x01\xe3\x7c\x4e\xd7\x5d\xdf\x53\x53\xa7\xf0\x92\x8e\x22\x20\x6a\xf4\x90\x26\x93\x31\xde\x6d\xdc\xa4\xe3\xa4\x33\xba\xfe\x90\x99\x45\x99\xfa\x14\xb3\x04\xe2\xd0\x9d\x1f\x5d\x1c\x9d\xff\x7c\xf4\xf2\xed\x2f\xa7\xe7\x2f\x2f\x30\x9c\x95\xe0\x35\xff\x02\x2e\xcd\x76\x95\x46\x2b\xab\xbe\xbe\x55\xa6\x9f\x0e\x4c\xbb\xc3\x63\x45\x64\xc1\x85\x61\xf1\xa2\x8a\x4b\xfe\xd1\x0e\xb2\xb4\x69\xd2\xf4\xf1\xcd\x37\xd1\xc6\x6f\xfd\xe1\xfa\x3f\x0f\xd7\xff\xe3\xed\xd3\x01\xc6\xfa\xe3\x97\xaa\x98\x7f\xde\x8d\xba\x8f\x6b\x46\x32\xc7\x9d\x95\xf7\xb5\x07\x2e\xbd\x8d\xa3\x85\x97\xdc\x36\xed\x2b\xd6\xa7\x45\x22\x09\x19\x79\x77\x79\x3b\x56\x78\xdf\x27\xf8\x49\xc0\x27\x58\x87\x65\x0e\xdd\x43\x2e\x42\xd1\x63\x44\x4a\x52\xde\xf4\xb1\x4f\x60\x61\x23\xbf\x44\xa9\x45\xb1\x1d\xa5\x96\xa7\x03\xf1\x35\xb9\x53\x2b\xa3\xd0\xc9\x49\x5f\x3a\xa6\xa3\x34\x50\x4d\x51\x78\x56\x84\x36\x7f\x94\xdc\x3c\xa4\xbb\xf7\x4c\x42\xc1\x9f\xc4\xf4\x53\xa6\xeb\xb9\xad\x58\x79\x4e\xa3\x5f\xf8\x37\xe2\x0d\x4b\x2b\xdc\x9a\x5e\xd0\xdb\x25\xfd\x5e\x33\x60\x54\x84\x6e\x7b\xb4\xfb\xf5\x7f\x3a\x35\xd0\xa9\x2a\xbc\x27\xa6\xf1\xec\xa2\xe8\xaa\x60\xac\xd6\xfb\x5f\xa9\xff\xe5\xc6\x61\x02\x92\x19\xa4\xf7\xc5\x34\x19\xf9\x70\x3e\x9b\x1b\xe2\x08\x96\x7d\x09\xcc\x31\xe8\x42\x84\x34\x90\x55\x49\x66\x33\x40\xab\x8a\x1b\x26\x06\xba\x27\xd0\x23\x40\x7e\x40\xb7\xa2\x3c\x83\x39\x9d\x43\xa4\x02\xe9\x6e\xd2\xa2\xa4\x8b\x23\xa4\x47\xd0\x08\x83\x6d\xd1\x76\xb0\xf0\x07\x98\x82\x76\x41\x5e\xc7\x4e\xb0\x95\x06\x7b\x13\x38\xdb\x7c\xd4\xbf\xaa\x06\x2d\x13\xb9\xce\x03\xdd\x5b\x01\xe1\xa8\xb2\x99\x26\x4a\xaf\x26\x29\x3c\xe1\x7f\xe8\xc6\x71\xe9\xf8\x8b\xf7\x8c\x1b\x64\xfa\xf9\xb5\x8c\x3d\xab\xc8\x64\x2c\x23\x2d\xca\xe9\x00\xb5\xff\x8e\xa3\x61\x38\x1e\x47\x1f\xe1\x5b\xc1\x3d\x8d\xe8\x0c\xa1\x63\x8a\x48\xdf\x67\xeb\x5f\xc1\xef\xde\xd6\xef\x9d\x4a\x8e\xf5\x5a\xd1\x74\x97\xb0\x50\xb6\x7d\x04\x62\x7b\xf1\x68\x45\xb4\xf4\xef\x63\x4d\x63\x58\x32\x8a\x9b\x1c\xdc\x4d\x6e\xb5\xe1\x51\xe0\x19\x63\x36\x63\xe8\x9d\x3f\x63\x93\x14\x77\x6e\x1c\x08\x21\x26\x04\x54\xd5\xa6\x0d\x57\x6a\xac\x08\xf8\x1e\x7b\xbb\xe6\x20\x54\x3b\x8b\x07\xe4\x93\xbf\x7c\xac\x6e\x87\x2d\x00\x2c\x24\xad\xa5\xcd\xb2\xaa\x95\xca\xee\x50\x9b\x77\x8c\xdc\x6e\x73\xbf\xab\x72\xb8\xdc\x74\xf3\x72\x24\x3a\x15\x7f\x74\xd5\x81\xb6\x50\xca\x1a\x80\x4c\xee\x16\xc3\x8a\x39\xd8\xd4\x33\xfc\x71\xa6\x02\x28\xea\x04\xe5\x49\x13\x5b\x52\x5a\x8d\x63\x1a\x96\x64\xff\xf1\xe9\xc3\xad\x51\xec\x11\x47\x4f\xad\x23\xd8\x24\xb2\x8b\x5b\x6c\xcc\x21\x1a\x82\x74\xcc\xe8\x8a\xab\x2f\x3a\xcd\xaf\x47\x2f\x9b\x60\x37\x76\x4c\xad\xbe\x47\x17\x15\x9b\x11\x7f\xd9\x32\x46\x41\x44\x1d\x52\x84\xc6\xa5\x3b\x28\xff\x05\xe8\x7b\x30\x2c\x8c\x3d\x1c\x05\x57\x9a\x96\x6d\xb6\xf8\x63\xe8\x49\xcc\x52\xe5\xd3\x25\x19\x42\x59\x3b\xb9\x5e\xe6\x1c\xcd\x31\x66\x9b\x6d\xe3\xdc\x27\x95\xbd\xe7\x97\xeb\x39\x10\xc4\xf1\x49\x1e\x2b\xfa\x56\x41\xda\x52\xe6\x39\xd3\xdc\x37\x59\xac\xf6\x5c\x0a\x2b\x25\x81\x30\xbd\xca\xa0\x2d\x18\x2c\x12\x1d\xae\xaf\x13\x61\x85\xe5\x05\xb6\x16\x67\xec\x8c\xc7\xcb\x52\x15\x96\xcd\x5b\x0d\xc8\xbc\x7e\xff\x3a\x40\x61\xf6\xf4\x15\xae\xaf\xdd\x1e\x9e\x8d\xc9\xa7\x19\x66\xcc\x8c\x4e\x33\x66\x7c\x6a\x86\xf4\x04\x3c\x4b\xe9\x34\xfa\x93\x36\x5a\x50\xaf\xf0\x06\xb1\x8f\xb3\x66\x8e\x4f\x46\xcf\x3d\x31\xbb\xe9\x31\x60\xd2\x30\xc0\x56\xd2\x8a\x94\x1b\x47\x5b\x56\x62\xce\x93\xf9\xea\x03\x6a\x0b\xff\x37\x00\x00\xff\xff\x53\x97\xf3\xcb\x67\x00\x01\x00") +var _webUiStaticVendorFuzzyJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x74\x56\xdf\x6f\xa3\x48\x12\x7e\xcf\x5f\x51\xe3\x87\x95\x91\x19\x3b\x99\xdd\xd9\x19\xc5\x87\x4e\xc4\xc6\x31\x3a\x1b\x2c\x20\x9b\x8b\xa2\x3c\xb4\xa1\x30\x3d\x8b\xbb\x51\x77\x93\xc4\x6b\xf3\xbf\x9f\xba\xc1\x3f\x72\xbb\xf3\x02\x74\x55\x7d\x5f\x55\x7d\x55\x6d\x79\x34\x82\x09\xaf\x76\x82\x6e\x0a\x05\xfd\xd4\x82\x2f\xd7\x37\x5f\x60\x49\x94\x82\x27\x2e\xfe\xbc\x1a\x8d\xae\x46\x23\x58\xa1\xd8\x52\x29\x29\x67\x40\x25\x14\x28\x70\xbd\x83\x8d\x20\x4c\x61\x66\x43\x2e\x10\x81\xe7\x90\x16\x44\x6c\xd0\x06\xc5\x81\xb0\x1d\x54\x28\x24\x67\x1a\xce\xd7\x8a\x50\x46\xd9\x06\x08\xa4\xbc\xda\xe9\x60\x55\x50\x09\x92\xe7\xea\x8d\x08\x04\xc2\x32\x20\x52\xf2\x94\x12\x85\x19\x64\x3c\xad\xb7\xc8\x14\x51\xb4\x65\xc8\x69\x89\x12\xfa\xaa\x40\xe8\xc5\x1d\xa8\x67\x99\x54\x19\x92\x12\x28\x03\xed\x3b\xba\xe0\x8d\xaa\x82\xd7\x4a\x43\x05\x4a\x25\x68\xaa\x99\x6c\xa0\x2c\x2d\xeb\x4c\x57\xd2\x45\x40\x49\xb7\xb4\xcd\x63\x18\x8c\x10\x52\xf3\xd6\x12\x6d\x8d\xd7\x05\xdb\xb0\xe5\x19\xcd\xf5\x1b\x4d\x8b\x55\xbd\x2e\xa9\x2c\x6c\xc8\xa8\x66\x5f\xd7\x0a\x6d\x90\xda\x98\x22\x93\x68\xeb\x86\x46\x5c\x80\xc4\xb2\xec\x48\x28\xca\xb6\xef\x73\x99\x26\x4c\xe7\xaa\xb4\xbe\xaa\x53\xcc\x64\x7f\x2b\xf8\x56\xc7\x6a\xf0\xa9\x2b\x2a\x21\xaf\x05\xa3\xb2\x40\x03\xcb\x38\x48\x6e\xf2\xfe\xc0\x54\x69\x8b\x66\xcf\x79\x59\xf2\x37\xca\x36\x6d\x62\x96\x51\xdd\x9d\xbc\xed\x66\x99\x14\x08\x64\xcd\x5f\xd1\x74\xd6\x0e\x9e\x71\x45\xd3\x76\x0a\x66\x2e\xd5\x79\xde\x9d\x4b\x16\xa4\x2c\x61\x6d\xea\x69\x45\xc4\x4c\xab\xae\xad\xc7\xe6\x84\xae\x44\x2a\xc2\x14\x25\x25\x54\x5c\x98\xbc\xff\xdf\xf4\xf0\x58\xc7\xdc\x83\x38\x9c\x25\x8f\x6e\xe4\x81\x1f\xc3\x2a\x0a\xff\xf0\xa7\xde\x14\x7a\x6e\x0c\x7e\xdc\xb3\xe1\xd1\x4f\xe6\xe1\x43\x02\x8f\x6e\x14\xb9\x41\xf2\x04\xe1\x0c\xdc\xe0\x09\xfe\xe3\x07\x53\x33\x1a\xef\xbf\xab\xc8\x8b\x63\x08\x23\xf0\x97\xab\x85\xef\x4d\x6d\xf0\x83\xc9\xe2\x61\xea\x07\xf7\x70\xf7\x90\x40\x10\x26\xb0\xf0\x97\x7e\xe2\x4d\x21\x09\x4d\xce\x8e\xcd\xf7\x62\x4d\x11\xce\x60\xe9\x45\x93\xb9\x1b\x24\xee\x9d\xbf\xf0\x93\x27\x1b\x66\x7e\x12\x68\xda\x59\x18\x81\x0b\x2b\x37\x4a\xfc\xc9\xc3\xc2\x8d\x60\xf5\x10\xad\xc2\xd8\x03\x37\x98\x6a\x6c\x10\x06\x7e\x30\x8b\xfc\xe0\xde\x5b\x7a\x41\x32\x04\x3f\x80\x20\x04\xef\x0f\x2f\x48\x20\x9e\xbb\x8b\x85\x49\xe8\x3e\x24\xf3\x30\x32\x55\x4e\xc2\xd5\x53\xe4\xdf\xcf\x13\x0d\x9f\x87\x8b\xa9\x17\xc5\x70\xe7\xc1\xc2\x77\xef\x16\x5e\x9b\x30\x78\x82\xc9\xc2\xf5\x97\x36\x4c\xdd\xa5\x7b\xef\x19\x60\x98\xcc\xbd\xc8\x84\xb5\x35\x6a\xfc\xe3\xdc\x33\x56\x3f\x00\x37\x00\x77\x92\xf8\x61\xa0\xfb\x99\x84\x41\x12\xb9\x93\xc4\x86\x24\x8c\x92\x13\xfa\xd1\x8f\x3d\x1b\xdc\xc8\x8f\xfd\xe0\x5e\xe3\x67\x51\xb8\xb4\x41\x0b\x1c\xce\x8c\x84\x81\x86\x06\x5e\x4b\xa4\xc5\xff\x38\xa3\x30\x32\xe7\x87\x58\x7f\x1a\xed\x4c\xfa\xa9\xe7\x2e\xfc\xe0\x3e\xd6\xf8\xcb\xf8\xe3\x9c\x0b\xa5\x2a\x79\x3b\x1a\x6d\xa8\x2a\xea\xf5\x30\xe5\xdb\xd1\x96\x28\xb5\xe3\xe2\xcf\x51\x5e\xff\xf5\xd7\x6e\xb4\x2e\xf9\x7a\xf4\xeb\xef\x37\xbf\x5e\x7f\xff\x9d\x90\xdf\xae\xd3\x9b\xef\xd7\x29\xf9\xf6\xe5\x0b\x41\x92\xff\xf6\x3d\xc5\xfc\xeb\xb7\xaf\x59\xfa\xf5\x1b\xae\xbf\x66\x2d\xe6\xf3\x96\xb2\xe1\x0f\x79\x75\xd5\xcf\x6b\x66\xee\x76\xdf\xda\xbf\x12\x01\x82\x73\xe5\xe8\x1d\x1e\xeb\x93\x89\x75\xf6\xcd\x98\xe6\x7d\xb5\xab\x90\xe7\x80\xef\x7a\x31\xe5\x27\xc7\xe9\xd5\x2c\xc3\x9c\x32\xcc\x7a\xd6\x7e\xcb\xb3\xba\xc4\x61\xe7\x75\x0c\xb0\xc1\x52\xe2\x5e\x33\x0e\x5b\xa2\xd6\x6a\x9e\x43\x49\xb7\x55\x89\x33\x5a\x2a\x14\xce\xa9\x88\x8a\x28\x85\x82\xd9\x44\x08\xb2\xb3\xf6\x02\x55\x2d\x18\x98\xd3\x30\x37\xb1\xe7\x82\xa5\x12\xa7\x88\x96\x53\xa1\x54\x27\x0a\xed\x6e\xac\x66\x7c\x76\xfd\x3d\xcd\xdf\x29\xb6\x44\xa5\xc5\x07\xff\x27\xc7\x61\x75\x59\x1e\x89\x4c\xc0\x3f\x32\xd9\xbc\x52\xd2\xda\xeb\xa7\xa3\x1f\x87\xc3\xbe\x31\x2a\x76\x31\x7e\xf6\xee\x5c\xdb\x02\x65\x5d\x2a\xe7\xf9\xc5\x2e\x91\x39\x52\x89\x61\x89\x6c\xa3\x0a\x5b\x71\x45\xca\x38\xe5\x02\x9d\x6b\x3b\xad\x85\x38\x7e\x57\x02\x0d\xdf\xb0\x12\x78\x38\xf4\x7a\x76\xc5\xa5\xea\x2c\x5c\x2a\x63\x4a\xf9\xb6\x22\x02\x63\x25\x28\xdb\xb4\xbe\x94\x48\x8c\x91\x49\xaa\xe8\x2b\xfe\xf2\x8b\x54\xe2\x70\xd0\xe9\x14\x5f\xf0\x37\x14\x13\x22\xb1\x6f\xd9\x69\x31\xee\xca\xfb\x47\x54\xe7\x3b\x1c\xba\x8f\x8f\xe8\x71\xce\x45\x5f\x77\x48\x75\x6b\x63\x9a\xbd\xff\xab\x44\xa6\xdf\x83\x81\xb5\x4f\x0b\xdd\xde\x33\xcd\xde\x5f\xf4\xfe\x7c\x28\xd1\x58\x1d\xc7\xe9\x68\x9f\xcf\x12\xbd\x18\x60\x25\x70\x90\x16\x03\xdd\xdf\xf8\xec\x1b\x38\x37\xe3\x93\x32\x03\xe7\x66\x70\x3a\xb4\xab\x76\xa1\x5a\x73\x96\x73\xe0\x9c\xec\xe3\x56\xfd\xe7\xf6\xd5\x29\xff\xe2\xa4\x45\x43\xf3\xfe\xc5\x98\x4e\x85\x75\x21\xd6\xfe\x62\x3a\x1f\xb5\x3e\x85\xfe\xdb\x67\x39\x65\x54\xed\x6e\xcf\xb1\xe3\x76\xb7\xf6\x02\x59\x86\x02\xb3\xdb\x2e\xf1\x0f\x4e\x59\xbf\xd7\xb3\x6c\xa9\xa3\x2e\x00\x4d\xd3\x6d\xe3\xe5\xca\xe5\x3f\xbf\x24\xdd\xce\xd1\xbc\xff\x89\x08\x71\x38\x10\x71\xdc\x27\xc7\x71\xae\x8f\xbb\xfd\xfc\xd2\x9c\x2f\x70\x87\xd6\x17\x58\x9a\x16\x7a\x97\xf7\xac\xf9\xb8\xbe\x67\xc7\x50\x60\x56\xa7\x78\xbe\x7e\x95\xc0\x57\x1b\x4b\xd4\xff\x33\x6c\x9a\xbd\xeb\x72\xda\xdf\x10\xa9\x84\xd3\x39\xf4\xe0\xcd\x5e\xe1\xbb\x12\x24\x55\xd6\x5e\x3b\x2f\x2d\xfd\x2e\xd2\x6a\xcc\xcf\x4f\x27\x94\xf3\x93\xdb\xd8\xf6\xab\x59\x8f\x91\x9f\xcc\xed\xb4\xf6\xba\x9c\x67\xfd\x38\x4d\x75\xdf\xb6\x77\x7b\x8c\x1c\x1e\x3f\x3a\xd5\x4f\x76\x73\xb4\x29\xcb\xf0\xfd\x56\x37\xc2\x05\xdd\x50\x46\xca\xdb\xae\xb4\xd3\x50\x34\x7d\x63\x3f\xbf\x58\x43\xc9\x85\x3a\x4b\x41\xec\x75\xdb\x79\xb7\x1a\xce\xba\xe5\xfc\x4c\xda\xf7\xc5\xfa\x5b\x1d\x55\x77\x3c\x09\x3c\x34\xe9\x3f\xaf\xdb\x77\x63\x35\x8d\xd5\xb7\xc6\x57\xff\x0b\x00\x00\xff\xff\x7a\x87\x58\x86\x5f\x0a\x00\x00") + +func webUiStaticVendorFuzzyJsBytes() ([]byte, error) { + return bindataRead( + _webUiStaticVendorFuzzyJs, + "web/ui/static/vendor/fuzzy.js", + ) +} + +func webUiStaticVendorFuzzyJs() (*asset, error) { + bytes, err := webUiStaticVendorFuzzyJsBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "web/ui/static/vendor/fuzzy.js", size: 2655, mode: os.FileMode(420), modTime: time.Unix(1476349925, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _webUiStaticVendorJsHandlebarsJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\x6d\x77\xdb\x36\xd3\x30\xf8\x5d\xbf\x02\xe1\x9d\x13\x49\x31\x2d\x89\x94\x5f\x62\xaa\x6a\xd6\x8d\xdd\xc6\xf7\x95\xd8\x5e\xdb\x69\xb7\x8f\xac\x26\xb4\x04\x59\x6c\x28\x52\x17\x49\xd9\x51\x1d\xfd\xf7\x3d\x18\xbc\x83\xa0\xa4\xb4\xb9\x9e\x7d\xf6\x9c\x3b\x1f\x62\x0a\x18\x0c\x80\xc1\x60\x30\x18\x0c\x06\xed\x97\xb5\x37\xe9\x7c\x99\x45\xf7\xd3\x02\x35\xde\x34\x91\xdf\xf1\x3c\x74\xb7\x44\xbf\xe3\xe9\x62\x1c\xa2\x7f\x85\xc5\x5f\xb5\xda\x25\xce\x66\x51\x9e\x47\x69\x82\xa2\x1c\x4d\x71\x86\xef\x96\xe8\x3e\x0b\x93\x02\x8f\x5d\x34\xc9\x30\x46\xe9\x04\x8d\xa6\x61\x76\x8f\x5d\x54\xa4\x28\x4c\x96\x68\x8e\xb3\x3c\x4d\x50\x7a\x57\x84\x51\x12\x25\xf7\x28\x44\xa3\x74\xbe\xac\xa5\x13\x54\x4c\xa3\x1c\xe5\xe9\xa4\x78\x0c\x33\x8c\xc2\x64\x8c\xc2\x3c\x4f\x47\x51\x58\xe0\x31\x1a\xa7\xa3\xc5\x0c\x27\x45\x58\x90\xfa\x26\x51\x8c\x73\xd4\x28\xa6\x18\x39\xd7\xac\x84\xd3\x84\x4a\xc6\x38\x8c\x6b\x51\x82\x48\x1e\xcf\x42\x8f\x51\x31\x4d\x17\x05\xca\x70\x5e\x64\xd1\x88\xe0\x70\x51\x94\x8c\xe2\xc5\x98\xb4\x81\x67\xc7\xd1\x2c\x62\x35\x90\xe2\xd0\xff\xbc\x56\xa4\x68\x91\x63\x17\xda\xe9\xa2\x59\x3a\x8e\x26\xe4\x2f\x86\x6e\xcd\x17\x77\x71\x94\x4f\x5d\x34\x8e\x08\xea\xbb\x45\x81\x5d\x94\x93\xc4\x11\x4e\x48\xa9\x30\x19\xb7\xd3\x0c\xe5\x38\x8e\x6b\xa3\x74\x1e\xe1\x1c\x41\x5f\x65\xeb\x00\x86\x34\x7d\x4e\x08\x5a\x30\x12\xe5\x24\xe5\x71\x9a\xce\xf4\x9e\x44\x79\x6d\xb2\xc8\x92\x28\x9f\x62\x28\x33\x4e\x51\x9e\x42\x8d\x7f\xe2\x51\x41\x52\x08\xf8\x24\x8d\xe3\xf4\x91\x74\x6d\x94\x26\xe3\x88\xf4\x28\x0f\x6a\xb5\x9b\x29\x46\xe1\x5d\xfa\x80\xa1\x2f\x74\x78\x93\xb4\x88\x46\x94\xdc\x30\x00\x73\x39\xaa\x2c\x2b\x9f\x86\x71\x8c\xee\x30\x23\x18\x1e\xa3\x28\xa9\x91\x24\xde\x9d\x8c\x54\x9f\x17\x61\x52\x44\x61\x8c\xe6\x69\x06\xf5\x99\xdd\x6c\xd5\x6a\x37\x6f\x4f\xd1\xf5\xc5\xcf\x37\xbf\x1d\x5f\x9d\xa2\xb3\x6b\x74\x79\x75\xf1\xeb\xd9\xc9\xe9\x09\x72\x8e\xaf\xd1\xd9\xb5\xe3\xa2\xdf\xce\x6e\xde\x5e\x7c\xb8\x41\xbf\x1d\x5f\x5d\x1d\x9f\xdf\xfc\x8e\x2e\x7e\x46\xc7\xe7\xbf\xa3\x7f\x9d\x9d\x9f\xb8\xe8\xf4\xff\xb9\xbc\x3a\xbd\xbe\x46\x17\x57\xb5\xb3\xf7\x97\xef\xce\x4e\x4f\x5c\x74\x76\xfe\xe6\xdd\x87\x93\xb3\xf3\x5f\xd0\x4f\x1f\x6e\xd0\xf9\xc5\x0d\x7a\x77\xf6\xfe\xec\xe6\xf4\x04\xdd\x5c\x20\x52\x21\x43\x75\x76\x7a\x4d\x90\xbd\x3f\xbd\x7a\xf3\xf6\xf8\xfc\xe6\xf8\xa7\xb3\x77\x67\x37\xbf\xbb\xb5\x9f\xcf\x6e\xce\x09\xce\x9f\x2f\xae\xd0\x31\xba\x3c\xbe\xba\x39\x7b\xf3\xe1\xdd\xf1\x15\xba\xfc\x70\x75\x79\x71\x7d\x8a\x8e\xcf\x4f\xd0\xf9\xc5\xf9\xd9\xf9\xcf\x57\x67\xe7\xbf\x9c\xbe\x3f\x3d\xbf\x69\xa1\xb3\x73\x74\x7e\x81\x4e\x7f\x3d\x3d\xbf\x41\xd7\x6f\x8f\xdf\xbd\x23\x55\xd5\x8e\x3f\xdc\xbc\xbd\xb8\x22\xed\x43\x6f\x2e\x2e\x7f\xbf\x3a\xfb\xe5\xed\x0d\x7a\x7b\xf1\xee\xe4\xf4\xea\x1a\xfd\x74\x8a\xde\x9d\x1d\xff\xf4\xee\x94\x56\x75\xfe\x3b\x7a\xf3\xee\xf8\xec\xbd\x8b\x4e\x8e\xdf\x1f\xff\x72\x0a\xa5\x2e\x6e\xde\x9e\x5e\xd5\x08\x18\x6d\x1d\xfa\xed\xed\x29\x49\x22\xf5\x1d\x9f\xa3\xe3\x37\x37\x67\x17\xe7\xa4\x1b\x6f\x2e\xce\x6f\xae\x8e\xdf\xdc\xb8\xe8\xe6\xe2\xea\x46\x14\xfd\xed\xec\xfa\xd4\x45\xc7\x57\x67\xd7\x84\x20\x3f\x5f\x5d\xbc\x77\x6b\x84\x9c\x17\x3f\x13\x90\xb3\x73\x52\xee\xfc\x94\x62\x21\xa4\x46\xda\x88\x5c\x5c\xc1\xef\x0f\xd7\xa7\x02\x21\x3a\x39\x3d\x7e\x77\x76\xfe\xcb\x35\x3a\x3b\xd7\x86\xaf\x55\x7b\xd9\xae\xd5\xda\x6d\x14\x47\x77\xed\x69\x98\x8c\x63\x7c\x17\x66\x79\xfb\x2e\xcc\x71\xeb\xcf\xbc\x56\x6b\xbf\xfc\x33\x9f\x46\x49\x81\xf0\xbf\x93\x45\x1c\x07\x45\xb6\xc0\x2f\xdb\x35\xc2\x63\xad\xb7\x02\x1e\xf5\xd1\xd3\xaa\x57\xab\x35\x26\x8b\x04\xa6\x65\x43\xe6\x35\xd1\x53\xad\x26\x7f\xb6\x7e\x3d\xbd\xba\x26\x0d\xef\x23\xc7\x6b\x75\x5a\xd9\xa8\xe5\x3b\x3d\x0d\x62\x8a\x63\x32\x79\x10\xc3\xaa\xe4\xcc\xc3\x8c\x30\xa7\xa8\x4f\xc9\xca\xf0\x7d\x94\x17\x38\x7b\x0b\x85\x51\x1f\x89\xa6\x24\xe1\x0c\xbb\x68\x02\xa2\xe2\x01\x67\x39\x26\x2d\x42\x28\x9a\x34\xe4\x6f\x34\x49\x5a\x49\x5a\xa0\x3e\x87\xe9\xa1\x55\x0d\xc1\x54\xe2\xcd\x19\x10\x3c\x43\x82\x38\xe9\xd5\x2a\x2a\xbf\xa4\xed\x2b\xd7\x9e\x17\x19\xad\x15\x30\xf2\x6e\x08\x94\x79\x91\x55\xe2\xa4\x1d\x6a\xd4\x69\x33\xde\x93\x49\x9d\xdc\xd7\x5d\x59\x43\x98\xdd\x8b\x1e\x85\xd9\x3d\xc8\xd7\xbc\x15\xe3\xe4\xbe\x98\xa2\x7e\xbf\x8f\x7c\x9a\x8d\x50\x86\x8b\x45\x96\xa0\x45\x32\xc6\x93\x28\xc1\xe3\x5e\x0d\xa1\x15\xc2\x71\x8e\x19\x40\x31\xcd\xd2\x47\x94\xe0\x47\x74\x9a\x65\x69\xd6\x70\xde\xa4\x8b\x78\x4c\x24\x08\x9a\x44\xc9\x18\xcd\xb3\x74\x8e\xb3\x62\x89\xea\x0e\xda\x41\x61\x76\x8f\x76\x90\x53\x77\x9a\x80\xa8\xb6\x6a\xf6\x6a\xb5\x87\x30\x43\x45\x7a\x5d\x64\x44\x6c\xf5\xd1\x05\x08\xb4\xd6\x3c\x4b\x8b\xb4\x58\xce\x71\x8b\xe7\xc9\x0e\xdc\x2c\xe7\x98\x70\xc3\x20\xa5\xc2\xef\x67\x96\x3e\x74\xd6\x13\xe4\x2e\x4e\x47\x9f\xdf\x56\x51\x65\x94\x26\x05\xfe\x52\xb8\x28\x9d\x83\x1c\xa3\x34\x20\xad\x63\x23\x8c\xfa\x3c\xab\xc5\x53\xbe\x7e\x95\xe5\x9b\xe8\x69\x45\xb8\x46\x01\x23\x03\x5f\x63\x48\x32\x4c\x98\xc5\x71\x7a\xec\x77\x41\x3b\xc1\x7b\xd7\x1a\x85\x71\xcc\xdb\x40\xc8\x02\xa3\x43\x81\xfa\x7d\xad\xeb\x84\xfb\x18\x20\xea\xf3\x2f\x5a\x9e\x30\x4b\x93\x70\x22\x2d\x2e\xa0\xfa\x7d\x44\xe6\xa1\x31\xac\x93\x84\x15\x90\xa3\x6a\x14\x9a\x84\x31\xed\xa5\x4c\x44\x64\x56\x1b\x88\x18\x39\x6c\xd8\x44\x0f\xc4\x68\x1d\x67\x59\xb8\x1c\x3a\x1c\x85\xac\x91\x73\xe0\x8f\xa8\xc3\x33\x45\x0d\xe5\xc9\xde\xc2\xe1\x68\x5a\x1e\xb4\x1e\x94\xd3\x78\xb4\xba\x99\x08\xe6\xac\x06\x2c\x49\x23\xc7\x42\xb0\xaa\xd2\x8a\x7f\xa9\x53\xb6\x59\x12\x2e\xa3\x0c\x87\x05\xfe\x39\x0b\x67\x58\xf2\x34\x4d\xd4\x98\x86\xd2\x84\x76\x57\xc5\x2e\xf9\x9f\xb0\x13\x00\x71\xc6\x49\xef\xfe\x44\x7d\x98\x72\x6a\x81\x06\xb4\xb3\x12\x05\x19\x34\x02\xc0\xba\x97\xde\xfd\x59\x12\x1f\x71\x7a\x7f\x0f\x72\x90\xb4\xe5\xe4\xf4\xa7\x0f\xbf\x04\xa8\x43\xd6\xd9\x9f\x2f\x02\xe4\xb9\x64\x3d\x3d\x0f\x90\xef\xa2\xd3\xab\xab\x8b\xab\x00\x75\x5d\x14\xe3\x07\x1c\x93\x2f\xc2\x6f\x33\x5c\x4c\xd3\xf1\xfb\x70\x1e\xa0\xa7\x4e\x80\xea\x63\x7c\xb7\x20\x13\xcc\x0b\x50\x3d\x4a\x26\x69\xdd\x45\x7e\x80\xea\x8f\x61\x96\xd4\x5d\xd4\x0d\x50\x1d\x13\x91\x51\x5f\x41\xe9\x76\x1b\x8d\xc2\x84\x68\x1b\xe9\x03\xce\xb2\x68\x3c\xc6\x64\xc0\x40\x93\x98\xa6\x79\x81\x70\xf2\x10\x65\x69\x42\x64\x55\x0d\xa1\x38\xbd\x0f\x24\x15\xa1\x1d\x2e\xe9\x95\xe4\x2a\xd4\x28\xf5\xad\x05\x70\xe8\x87\x3e\x6d\xb8\x64\x32\x42\x56\xda\x7c\xd4\x47\xe5\x62\xa2\x67\x03\x28\x37\xec\xb1\x62\xa4\x12\x42\x5f\xa2\xed\xa6\x49\x9e\xc6\x18\x3d\xeb\xf7\x51\x5d\x88\xcb\x3a\x7a\xf1\x82\x67\x0d\x28\x96\xa1\xac\x15\x99\x59\x42\x06\x90\x44\xda\x1d\x5e\xd5\x4a\x72\xab\x65\xdc\x54\x5e\xd4\x68\x61\xe9\x4c\x9c\xde\xab\x30\x3d\xb4\x61\x15\x21\xd3\x6c\x3b\x31\x69\x88\x3e\xb7\x5a\x6e\x72\x56\x8e\x50\x9f\xb0\x18\x17\x8d\x2e\x1a\x87\x45\xc8\x64\x1f\x6a\xf0\x42\x24\x91\x53\x8d\x7c\xeb\x63\xa4\xcc\x34\xbd\x04\x9d\xb7\xba\x20\x7c\xf1\x02\xc9\x01\x13\x52\xae\x4e\x27\x58\xbd\x2c\x92\x50\x94\x10\xfd\x76\x44\x4a\x80\xdc\x6a\xf2\xc1\x9b\xa4\x59\x83\x74\xe1\x4f\x45\x04\x53\xf9\xd5\x43\xd1\x0f\x7f\xf6\x50\xb4\xb3\xa3\x0e\x35\xe9\x10\xeb\x08\x74\xa2\x15\x25\x63\xfc\x85\xa8\x0f\x3d\x36\xb8\x4c\xfa\xa0\x3e\xfc\xbf\xa3\x88\xa0\x41\x34\x74\x59\xb1\x80\x52\x60\x65\x32\x86\x2e\xef\x78\xe3\x3e\xe3\x25\x99\x43\x5c\x92\x69\xcd\x11\x52\x77\x1a\xe6\x17\x8f\xc9\x25\x5b\xa8\x1b\x9f\xf1\xb2\xa9\x42\x02\xac\xd6\x72\x82\xb5\x4f\x70\xab\x2d\xaf\x6c\xfb\x67\xbc\x24\xad\x97\x8d\x97\x6d\x07\xe4\x3b\x3b\xf2\xe7\xca\xc2\xed\x4c\xf1\x82\x81\xea\x34\x85\x90\x96\x8a\x97\xb2\xea\xd4\xa4\x84\xcb\x70\xd1\x2b\x09\x6d\x93\xb7\xa3\xc9\x76\x9c\xbd\x61\xad\xfe\x1e\x4b\xf5\x33\x0e\xf6\xf5\xab\xca\xdd\x1f\x8a\x28\xce\x5b\x51\x7e\x3a\x9b\x17\x4b\x51\xa5\xb1\xfc\x1a\xb3\xab\xb4\x0c\x5b\x81\xb5\xc5\x7f\x23\xa5\x16\x49\x8c\xf3\xfc\x3f\x21\x07\x24\xa0\xa2\x4b\x2b\xe9\xb2\x30\x68\x53\x6b\x34\x82\x01\x19\xcf\xa1\xa4\xae\x8b\x2c\xda\xc1\xa6\x8e\x3e\x46\xc5\x16\xe2\xae\x4c\x4b\xc9\x0d\x9b\x6a\x88\xd3\x2d\xd5\x4e\xba\x5a\x49\xa2\xc1\xcc\x7f\xf1\x42\xfb\xcd\x96\xb4\x67\x74\x85\x47\xaf\xd1\x3c\xcc\x72\x7c\x96\x14\x8d\x32\x94\x8b\xbc\x4e\x13\x05\xc8\x33\x34\x05\x65\x45\x30\x7a\xb1\x6a\x18\xdb\xb6\x66\xb3\x57\xeb\x59\x76\x7f\xa3\x74\x36\x8f\x62\x9c\xb5\xa1\xfa\x8c\x6c\x04\xdb\x2f\xd1\x7f\x47\x79\x9a\xa0\x7b\x9c\xe0\x0c\x6c\x39\x34\x13\xbd\x6c\x83\xce\x3f\x55\x37\x83\x72\x1f\xd8\x7c\x82\x5c\x06\xdb\x47\x4f\x45\x16\x8e\xb0\x5c\xec\x11\xfc\x26\x2a\x17\x5a\xb9\xb5\xe5\x32\x20\x6a\x77\x2d\x5f\xce\xee\xd2\x38\xff\x18\xa0\x27\x07\xd4\x0a\x27\xf0\x5d\x27\x4b\xd3\xc2\x09\xba\xae\x33\xcf\xd2\xfb\x2c\x9c\x39\xc1\x9e\xeb\x9c\x5e\xfc\xec\x04\xfb\xae\x93\x47\xb3\x79\x8c\xcf\x28\x7b\x39\xc1\x81\xeb\xe4\x45\x58\x60\xd8\x0c\x39\xc1\xa1\xf2\xd3\x09\x5e\xb9\x4e\x3a\xc7\x89\x00\x3e\x72\x9d\x51\x9c\xe6\xf8\x27\xb2\xa3\x70\x02\xaf\x43\xf3\xf9\x4f\xcf\x75\x66\x8b\xbc\x08\x47\x53\xec\x04\x9e\xef\x3a\x6c\xff\xe6\x04\x5e\xd7\x75\xc8\x1e\xfe\xf4\xfc\xc6\x09\xbc\x3d\xf2\xe3\xfd\x7b\xfa\x63\xdf\x75\x2e\x2e\x4f\xcf\x3f\xfe\xf4\xee\xe2\xcd\xbf\x9c\xc0\x3b\x70\x9d\x28\x79\x2f\xd1\x1c\xba\xce\x9b\x77\x17\xd7\xa7\x4e\xe0\xbd\x62\xa0\x67\xe7\x64\x6f\x4c\x52\x8e\x58\xca\xe9\xf9\x09\x2b\xef\x77\x48\xb5\xc5\xd4\x09\x7c\x8f\x66\x3a\x81\xef\x33\xb0\x0f\xe7\xa7\xd7\x6f\x8e\x2f\x4f\x4f\x9c\xc0\xef\xb2\x34\x30\x81\x1c\xbf\x73\x02\x7f\x4f\x34\xf8\x3c\x9c\x61\x27\xf0\xf7\x21\x21\x9c\xe5\x4e\xe0\x1f\xb8\xce\x34\xcc\x09\xda\x43\xd7\x39\x39\xbe\x39\x76\x02\xff\x15\xcb\x77\x02\xff\xc8\x75\xae\x6f\xae\xce\xce\x7f\x71\x82\x6e\xc7\x75\xce\xce\x6f\x4e\x7f\x39\xbd\x72\x82\xae\xe7\x3a\x3f\x5d\x5c\xbc\x3b\x3d\x3e\x77\x82\xae\x4f\x91\x5c\xe3\x7b\x46\xee\x6e\x57\x4b\x71\x82\xee\x9e\xeb\x9c\x9d\x38\x41\x77\xdf\x75\x4e\xff\xef\x0f\xc7\xef\xae\x9d\xa0\x7b\xe0\x3a\xac\x95\x1f\xcf\x8f\xdf\x9f\x3a\x41\xf7\x90\x76\x52\x41\xf4\xca\x75\xae\x4f\x2f\x9d\xa0\x7b\xe4\x3a\xcf\xc3\xd1\x08\xcf\x0b\x27\xe8\xb8\xce\x73\x9c\x8c\x9d\xc0\x5b\xb9\xb5\x02\x67\xb3\x28\x09\x29\xb7\xf8\x01\xe3\x17\x77\x3f\x00\xd6\x70\xbd\xbd\x40\x0c\x91\xeb\xed\x07\x62\x88\x5c\xef\x20\x50\x87\xc8\xf5\x5e\x05\x6c\x48\x5c\xef\x28\xd0\x87\xc4\xf5\x3b\x81\x31\x24\xae\xef\xd3\x24\xc7\xf5\xbb\x81\x39\x10\xae\xbf\x17\xe8\x03\xe1\xfa\xaf\x02\x4a\x61\xb7\xdb\x09\x38\x59\xdd\xae\x17\x08\xb2\xba\x5d\x3f\x10\x64\x75\xbb\xfb\x01\xa1\x99\xdb\x3d\x08\x38\xcd\xdc\xee\x61\xa0\xd3\xcc\xed\x1e\x05\x40\xa1\x95\x5b\x9b\x67\xe9\x78\x01\xb3\x8a\xd0\x62\xd0\x71\x07\x5d\xd7\x1f\xba\x83\x3d\xf6\x7f\x57\xf9\xf6\x94\xff\x3b\x43\x77\x70\x08\xdf\x87\x90\xfb\x0a\x20\xf9\xff\x9e\xf5\x7f\xcf\x83\xec\x23\xf8\xdf\xeb\xd0\x3f\xbe\xf6\xa7\xcb\xff\xec\x0d\xdd\xc1\x01\x60\xf6\x0e\x69\xda\x21\xff\xc5\xfe\x78\xf2\x8f\x4f\x21\xfd\x03\xfa\xeb\x68\xf3\x1f\x5a\xae\x4b\xfb\xda\xed\xd2\x5f\xb4\xb7\xeb\xfe\xf8\xfb\xb4\xb8\x47\x0b\xd0\xee\x76\x49\xef\x86\x6e\x6d\x8e\xb3\x49\x9a\xcd\x8e\x81\x9a\x8a\xb4\x0a\x93\x34\x59\xce\xd2\x45\xde\x58\x2e\x41\xce\x2f\x97\x44\x4d\x24\x7f\xa2\x04\x27\xa9\xbb\x5c\xba\xcb\x25\x88\x1a\xf7\xf9\x73\xf7\xe3\x73\xb0\x7e\x11\x09\xf8\xbc\x83\xfa\xe8\xf9\x73\xbe\x2b\xde\x25\x72\x3b\x7f\x8c\x8a\xd1\x14\x35\x58\x09\x02\x3b\x0a\x73\x4c\xf6\x58\x6c\x49\x7a\xfe\x7c\xf0\xbc\xb3\xeb\x0d\x7b\xa8\x76\x97\xe1\xf0\x73\x8f\x02\xf8\x01\x35\x24\x3d\x67\x5b\xc7\xe5\xb2\x75\x49\x65\xe2\x79\x3a\xc6\x8d\xc1\xd0\xa5\x25\x87\x4d\xa3\x60\x77\x7d\x41\x5a\x9d\x5f\x59\x7c\x6f\x9b\xe2\xde\xd0\x45\x83\x52\xd1\xfd\x2d\x8a\x96\x0a\x1d\x6c\xee\x67\xb9\xa6\xc3\x4d\x85\xcc\x02\xaf\x94\x02\x03\xda\x10\x93\xe0\x47\x81\x18\x8a\xd6\x7c\x91\x4f\x65\x7b\x45\xc9\x8a\xa1\xf2\x3a\xe5\xe6\xc0\xc2\x62\x23\x38\x41\xcf\x34\x24\x99\x52\x35\x18\x9e\xf7\x6d\x98\x2b\xeb\x28\x63\x56\xf9\x8b\x82\x98\x10\xdd\x8d\x10\x16\x5e\x79\x43\xf4\x91\xa4\x58\x33\xe0\x9e\x85\x4d\xde\xa4\xb3\xd9\x86\x52\x16\x3e\xe1\x4b\xad\xc6\x98\x83\x8e\x42\x85\x81\x57\x46\x64\xe1\x9d\xbf\x87\xe8\x95\x49\x1f\x0b\x67\x1c\x7d\xa7\xca\x7c\x0b\x8b\x6d\x85\xc8\xa5\x66\x44\x13\x9d\x85\xaf\x98\x61\x5b\xc3\x56\x2a\x67\x93\x4a\xa5\x72\x2a\x47\x96\x30\x74\x03\x23\x41\x65\xa2\xc1\x80\x63\x18\xb6\x46\x69\x32\x0a\x0b\xd9\x14\xce\xc9\x25\x41\xb9\x6f\x41\xe0\x19\x08\x48\x71\xa2\x6f\x97\x0a\x1f\xd8\x0b\x57\x56\x76\x58\x86\x27\xd0\x56\xdc\x9a\xd0\x19\x30\x72\x9d\x84\x45\xa8\xf2\x79\x55\xe1\xbf\x2f\x8e\xba\x9d\xcd\xc2\xae\xeb\x6d\x9a\xdc\x5d\xcb\x50\xd3\xcd\xf4\x9a\x59\xda\xb5\x2c\x3e\x67\x49\x81\xef\x71\xb6\xae\x94\x45\x8e\xfc\x94\xa6\x31\x0e\x93\x75\xa5\x2c\x72\xc4\x24\xae\x59\xc4\x22\x44\xde\x86\xf9\x74\x5d\x91\xc3\xbf\x3f\x0e\x5b\x2c\x3a\xdd\xa3\x12\x8c\xb2\x36\x9b\xd0\x7b\xe5\x91\x05\xe8\xca\xe1\x29\x21\xf0\xd6\x22\xb0\x0c\x55\x09\x83\xbf\x16\x83\x65\xd8\x4a\x18\xba\x6b\x31\x94\xe6\x87\x59\xdc\xa6\xa0\xc8\xbd\xcf\x9a\xa1\xdc\xb3\x30\xcc\xd9\x78\x5d\x81\x03\x3e\xf6\xfe\x86\xb1\xf7\x4b\xad\x3c\x5c\x3b\xf6\xab\x1a\xd9\xd5\x84\x77\x31\x0e\xd0\xe0\xa9\x1b\x78\xee\x5e\xe0\xbb\xfb\xc1\xc0\x77\x0f\x87\xee\x41\xd0\x75\x0f\x83\x3d\xf7\x55\x70\xe0\x1e\x05\x87\xae\xe7\x05\xaf\x5c\xcf\x0f\x8e\x5c\xaf\x4b\x76\xae\xde\x5e\x30\xf0\x5c\xcf\x1b\x92\xcd\x0e\xf9\xf2\x87\x64\xa7\x43\xbe\xba\x43\xb2\xb1\x19\x78\xee\xfe\x90\x6c\x5e\x48\xd2\xde\x90\x6c\x5e\xc8\x17\x49\xa3\x45\x0f\x86\x2b\xf7\xc9\x0b\x06\x5d\xf2\x97\xe2\x38\x64\x9f\xbe\x7b\x30\x74\x0f\xc9\x8e\xf5\x9f\x54\xef\x1d\x0d\xc9\x7e\x8a\x62\xdb\xd4\x10\xa8\x75\x9f\xf4\xdb\xef\xb8\xaf\xc8\xee\xf7\x9f\xf4\xba\xc3\xb0\x6d\xec\xfe\x21\xd9\x49\x7b\xaf\x48\x8a\xef\x0f\x5d\xdf\x23\xfb\x68\x9f\xfe\xde\x1f\x92\xbd\x19\xf9\x3a\x1c\xba\xdd\x57\x81\x7f\xc0\xdb\xf9\x6a\x08\x2d\xa1\x1f\x22\xe5\x80\x7f\x1c\xb1\x0f\xda\x8c\x57\xb4\x19\xf4\xa3\xcb\x3f\x58\xf1\x95\xfb\xb4\x47\x76\xe2\xdf\x6b\xb8\x3b\x8c\x7d\x36\x75\x7c\x8f\xec\xf9\xff\x77\x57\x0a\x94\x02\x24\x7b\xe2\x4b\xa6\x1d\x88\xaf\x23\xfe\x45\x31\xc3\x97\x2f\xbe\xba\xe2\x8b\x63\x11\xa8\xbb\x02\x75\x57\xa0\xee\x0a\xd4\x5d\x81\xba\x2b\x50\x77\x05\xea\xae\x40\xdd\x15\xa8\xbb\x12\xf5\x9e\x40\xbd\x27\x50\xef\x09\xd4\x7b\x02\xf5\x9e\x40\xbd\x27\x50\xef\x09\xd4\x7b\x02\xf5\x9e\x44\xbd\x2f\x50\xef\x0b\xd4\xfb\x02\xf5\xbe\x40\x2d\x48\xed\xed\x0b\xd4\xfb\x02\xf5\xbe\x40\xbd\xcf\x38\xbb\xdb\xd9\x82\x9f\x09\x9c\xb7\x25\x9c\xbf\x05\x9c\xbf\x1f\x74\xbb\x6e\xf7\x90\xa4\x77\xf7\x98\x88\xf1\x5d\x4f\x74\xd7\x1f\xfe\xb3\xe9\x2d\xa5\x8a\xbf\xed\xfc\xde\x72\x56\xef\x11\x99\xd7\xdd\xff\x4e\x32\x6f\x6f\xcb\xf9\x70\xc4\x47\xff\x88\x0f\xfe\x11\x1f\xfb\x23\x3e\xf4\x02\xe9\x11\x1f\xf8\x23\x3e\xee\x47\x7c\xd8\x8f\x24\x85\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\xc5\x34\xf0\x61\x1a\x50\x21\xd9\x3d\xe0\xdf\x3e\x10\xd0\xf7\x82\x3d\xcf\xf5\x0f\x82\xee\xa1\xeb\x1f\x06\xdd\x57\x8c\xcc\x7b\xa4\xab\x47\x41\xf7\xc8\xed\x76\xe0\xb7\x3f\x74\xbb\x1e\x7c\x75\x87\x6e\x17\x08\xb3\xb7\x37\x74\xbb\xdd\x60\xaf\xe3\x76\xf7\x82\xbd\x03\x36\x2c\x7b\x2a\xd3\xd1\x7a\x5e\xc9\x3a\x01\xaf\xf8\xea\x76\xc4\x97\x27\xbe\x7c\xf1\xb5\x2f\xbe\x60\x6c\xf6\x54\x3c\x87\x02\xcf\xa1\xc0\x73\x28\xf0\x1c\x0a\x3c\x87\x02\xcf\x21\xc5\x03\x5f\x04\x4f\x27\xd8\x3b\x02\xfa\x79\xee\x7e\x87\xa5\xec\x7b\x7a\x0a\xd0\x62\xdf\x57\xbe\x15\x5a\xee\xef\x29\xdf\xfb\x40\xcb\xfd\x03\xdb\xd4\xa3\xed\xdc\x13\x2d\x91\xb2\xa3\xfb\xdd\x26\x53\x77\x8b\xc9\x44\xc5\xcb\xa1\x10\x52\x87\x42\x48\x1d\x0a\x21\x75\x28\x84\xd4\xa1\x10\x52\x87\x42\x48\x1d\x0a\x21\x75\xa8\xf0\xd1\xbe\xe0\xa3\xc3\x60\xff\x50\xe7\xa0\xfd\x57\xdf\x83\x83\x14\xae\xed\x76\xf8\xc8\x93\x2f\x3a\xf2\xf0\xe5\x89\x2f\x5f\x7c\xed\xb3\x2f\x59\xfa\x60\x48\xea\xda\x3f\x62\x75\x1d\xa8\x79\x9e\xc0\xec\x09\xcc\x9e\xc0\xec\x09\xcc\x9e\xc0\xec\x29\xa5\x7d\x51\xda\x17\xa5\x7d\x51\xda\x17\xa5\x7d\x51\xda\x57\x4a\x77\x45\xe9\xae\x28\xdd\x15\xa5\xbb\xa2\x74\x57\x94\xee\x2a\xa5\xf7\x44\xe9\x3d\x51\x7a\x4f\x94\xde\x13\xa5\x05\x0f\x76\xf7\x94\xd2\x62\x4e\x76\xc5\x9c\xec\x8a\x39\xd9\x15\x73\xb2\x2b\xe6\x64\x77\x5f\x29\xfd\x4a\xa4\xfe\xf3\xf9\x09\xec\x7d\xe0\xe9\x33\x95\x8d\x94\xa2\x27\x74\xc4\x8a\xdb\x11\xcc\xdc\x11\xcc\xdc\x11\xcc\xdc\x11\xcc\xdc\x11\xcc\xdc\x11\xcc\xdc\x11\xcc\x0c\x4c\xe0\x7b\xc1\x41\xb7\x6a\x6d\x81\x69\xb8\x27\xbe\x64\xda\x81\xf8\x3a\xe2\x5f\xac\x4a\x4f\x54\xe9\x89\x2a\x3d\x51\xa5\xa7\xcc\xc8\x03\x81\xf1\x40\x60\x3c\x10\x18\x0f\x04\xc6\x03\x81\xf1\x40\x60\x3c\x10\x18\x15\x15\x4d\xac\x49\x9e\x58\x94\x3c\xb1\x2a\x79\x62\x59\x92\xd2\xc3\x13\x0b\x93\x27\x56\x26\x4f\x2c\x4d\x9e\xb2\x36\x09\xd2\xfb\x82\xf4\xbe\x20\xbd\x2f\x48\xef\x0b\xd2\xfb\x82\xf4\xbe\x20\xbd\x2f\x48\xef\x77\x24\x6a\x41\x62\x5f\x90\xd8\x17\x24\xf6\x05\x89\x7d\x41\x62\x5f\x90\xd8\x17\x24\xf6\x05\x89\x7d\x4f\x8a\xe7\x03\x85\xdd\x7d\xf5\xfb\x88\xb3\x29\xf9\xa2\x6c\x0a\x5f\x9e\xf8\xf2\xc5\xd7\x3e\xfb\x92\xac\x2f\x98\xb7\x4b\x19\x95\xb3\x2f\xe3\xa6\x7d\x26\x0a\x0f\x18\x6e\xcf\x3d\x38\xe0\x42\xf0\xe0\x90\x0b\xc1\x83\x57\x56\x7d\x8d\x4e\x9e\x03\x31\x8d\x0e\xc4\x34\x3a\x10\xd3\xe8\x40\x4c\xa3\x03\x31\x8d\x0e\xc4\xe4\x39\x90\xfd\x3f\x54\xc8\x2c\xf4\x77\x5f\xe8\xef\xbe\xd0\xdf\x7d\xa1\xbf\xfb\x42\x7f\xf7\x85\xfe\xee\x0b\xfd\xdd\x17\xfa\xbb\xaf\x4a\x31\x41\xa6\xae\x42\xa6\x3d\x21\x89\xf7\x14\x69\xbb\x27\xa4\xe8\x9e\x22\x45\xf7\x84\x74\xdc\x53\xf0\xee\x09\xa9\xb7\xa7\xa8\xf4\x62\x17\xe7\x89\x6d\x9c\x27\xf6\x71\x9e\xd8\xc8\x79\x62\x27\xe7\x89\xad\x9c\x27\xf6\x72\x9e\xd8\xcc\x79\xaf\x86\xab\xa1\x5b\x1b\xe3\x49\xb8\x88\x0b\x7a\xa4\x94\x07\x88\xe8\xa0\xa0\x00\xbb\x3e\xa5\xd5\x2b\x18\x24\xba\x2a\xb9\xfb\x87\x82\xa5\x6a\x70\x78\x0e\x0e\xb9\xca\x49\x94\x4c\x6c\xe4\x45\xe6\xa2\x69\x98\x4f\x9b\x15\x6e\xbc\x79\x91\x35\x7b\x35\x8e\xc9\x44\xd2\x88\x92\xf9\x42\xb8\x13\x3d\x84\x70\xcb\x61\x82\xfa\x88\x7a\x5d\xe4\x45\x38\xfa\x8c\xfa\x08\x8c\xc7\x0f\xe2\x17\xd8\x25\x5d\x14\x8b\x84\xa1\x8b\xc0\x68\xc1\x0a\xb6\xe0\x87\x8b\xe8\x39\x19\x73\x08\xe3\xc7\x64\xd4\x51\x8c\x9e\x9d\x71\xa7\xb1\x51\xfa\x80\x99\xd3\x70\xc7\x45\x37\xe0\x96\x88\xfa\xe0\xa1\x78\xf1\x33\xea\x53\x3f\x07\xe6\x40\x1d\xe3\x2f\x38\x6b\xe5\xb8\x38\x23\x4d\x67\x1d\x28\xe5\x2f\x97\xbc\x2d\xcb\xa5\x92\xb9\x5c\xd2\x7c\x9e\x09\x3f\xf4\x7c\xe1\xae\x40\x12\x7a\x35\xc3\x3b\x50\xab\x22\x8e\xd3\x11\xea\xf7\x91\x23\xdc\x04\x9d\xa6\xf0\x80\xb2\x40\x82\x6f\x29\x27\xf4\x72\x49\xd3\x4a\x70\x14\x84\x12\x97\x5a\x97\x00\xb4\x29\x8b\x66\x61\x72\x8f\x73\xbd\x2c\x73\x12\x01\xbf\xb8\x52\x6a\x8b\x96\xb0\xf7\x86\xf7\x19\xf8\x85\x3a\xf8\x72\x26\x31\xbb\xa3\xc2\x59\x0a\x53\xfc\x92\xc3\xd2\xf9\x35\xe9\x44\x23\x51\xbd\xd0\x68\xbf\xb8\x8b\xba\xfe\x73\x17\xf9\xe8\x25\x4a\xa4\x1b\xd9\x83\x01\xfd\x60\x80\x2b\xa0\xb1\x01\x1a\xdb\x41\x57\x7a\x1b\x63\xfc\xa5\xa1\xb6\x8e\xba\xb0\x7f\xc6\x0a\x62\xf8\x49\x5a\x8a\xe3\x09\x23\x2b\x2d\xf5\xf5\x2b\x67\x4c\x93\xac\x50\xe2\x19\xa1\x64\xb2\x98\xdd\xe1\xcc\xd1\xdd\xf0\x0c\x9c\xdc\xe3\x65\x00\xa9\x43\x82\xd7\x68\x82\xe6\x56\xb8\xc8\x12\x35\x7f\x25\xa7\x2e\xe0\x71\xd1\x3c\xa3\xc3\x71\xcd\x7e\xd3\x23\x69\x14\xb2\x4b\x53\xa1\x8b\x32\x32\x01\x1f\xe0\xb2\xc2\xd3\xca\x45\x73\x17\xc5\x38\x01\x4b\xeb\x35\x85\xc5\x5f\xe6\x78\x54\xd0\x5b\x02\x08\x3d\x4e\xa3\x18\xa3\x86\xea\x77\xce\x46\xb2\xc0\x7c\x08\x07\x06\xb9\xbd\xa1\x41\x1a\xc2\x2d\xba\x1c\x1c\x00\x82\xa1\x49\x1b\xda\x4e\xce\x60\xd6\x22\x0a\x65\x74\x77\x49\x59\x1f\x25\x06\xb0\x33\xf8\x53\x11\xa2\xd2\xd1\x11\x39\xda\xbc\x35\x50\x40\xff\x18\x20\x65\x92\x9e\x96\xbf\xaa\x68\x32\x11\x7c\xac\x91\x30\x15\x95\xdf\x03\x8a\x6f\x68\x1b\x56\x85\x79\x38\x2e\xbd\x7d\xa4\xfd\xcf\x68\x16\xa7\xb1\x4c\x19\x74\x4a\x44\x24\xfc\x80\xb3\xec\xba\xc8\xc4\x55\x05\x9d\x3e\xcf\xa4\xd4\xb5\xf5\x9d\x33\x00\x48\xf7\x5e\x29\x7b\x92\x66\xa8\x31\x07\xaf\x6e\xa5\x87\xcd\x12\x9c\x36\xfa\xd2\x5b\x67\x30\x07\xea\xcc\xd1\x8f\xf2\x82\x8a\xed\x1f\x6f\x05\x15\x83\x0e\xdc\x3c\xb1\xa0\x92\x17\x51\xca\xff\x56\xa5\x54\xd1\x1e\xb6\x92\x4c\xd3\xc7\xcb\x34\x87\x1b\x76\x55\x6d\x91\x94\xbc\x24\xc2\x0e\x81\x9f\x11\x22\xe2\x23\x4a\x30\x22\xad\x6a\x88\xe5\x6d\x07\x79\x4d\xd2\xa2\xe0\x36\x11\xcd\x2d\xd7\xd4\x00\x98\xdb\xe4\x14\x7a\x48\x96\x3e\x02\x2c\xfa\xfb\x67\x1a\x25\x0d\xc7\x45\x0e\x80\xb9\xe8\x3e\x2d\xe8\xbd\x9b\x12\x25\x19\x53\x11\x6e\xa0\x9f\x4d\x4a\x8e\x32\x35\xac\x53\xe5\x1f\xf5\x10\x7d\x48\x04\x9f\x00\x88\x9c\x5a\xde\x6b\x07\x27\x63\x94\x4e\x10\x2c\xd0\x4e\xe0\x7c\x5b\xf3\x2d\xa3\x59\x1e\x49\x63\x4d\x6a\xd0\x4e\xb8\xe8\x89\xa8\x1d\x81\x4a\xfa\x59\x58\x8c\xa6\x2e\x15\x9b\x41\x89\x85\x4a\x8d\x70\xa1\xdb\x81\xb1\x36\x53\x2f\x1f\x14\xa7\xa3\x80\xae\xde\x52\x4e\x06\xe2\x6b\x55\x29\x28\xf4\xd9\x2e\x66\x6e\xc9\x31\x9d\xcc\x0c\x7d\xa6\xff\x48\x08\x6e\x2c\x20\xe6\x6d\x2d\x3a\x6c\x4c\x53\x9c\x2d\xe2\x22\x9a\xc7\x98\xe1\xc9\xd1\x3c\xcd\xf3\x88\x28\x68\x61\x41\xc5\x76\x00\x03\x46\x25\x38\x70\x18\x23\x0d\xa4\xd2\x81\xb0\xc9\x29\xee\xb5\x64\x95\x3b\xcc\x7f\x49\x6b\xa7\xa2\xc5\x94\xd0\x22\xb9\xc0\x03\x80\x46\x6d\xe1\x90\x2d\xff\xc5\x55\xb0\xb1\x54\x8f\x2c\xf5\xb2\xb6\x7a\x43\x13\x84\x8b\x77\x7e\xa3\x46\xfe\x03\x01\xa9\x2f\xa3\x36\xd1\x20\x94\x58\xbd\x35\x38\xb9\x2f\x73\xaf\xd0\x85\x4b\xbd\xb4\xc1\x0a\x55\xd9\xc2\x81\x56\xf8\x75\xaa\xa4\xd9\x33\x45\xdf\xfe\x11\x75\xec\x42\x5b\xc2\xec\xee\x1a\x0c\x5d\x25\x46\x04\x3d\x75\xc2\x95\xdb\xa0\xe7\x5b\x07\x40\x9f\xeb\xec\x70\x94\xff\x64\x6e\x70\x3a\x6f\x60\xa1\x31\xa8\xae\x90\x03\x31\xf8\xc3\x81\x67\xac\x63\xa0\x01\xc1\x39\x2c\x65\xc2\x81\xa9\x5c\xc6\x38\xb1\x16\xf9\x48\xca\x3c\x4d\xa2\x2c\x2f\x3e\x52\x39\x41\x39\x73\x60\xaa\x9c\x0d\xd2\x2a\xa2\x25\x36\x87\x2d\x09\xee\xa2\x38\xdc\x54\xd2\x1b\xb6\x04\x90\x8b\x68\xd9\x51\x1a\x2f\x66\xc9\x37\x54\x46\x0b\xb0\xea\x36\x94\xe6\x15\x52\xb0\x55\x79\x3a\xd0\x1d\x84\x7d\x16\x50\xa2\xd0\x4d\x06\x51\x18\xb6\x68\x21\xc0\xc2\xb6\xb2\xba\x41\x14\xc6\x1b\x0e\xd7\xf1\x86\xd8\x89\x68\x6e\x9b\xf4\xea\x00\xb4\x8c\x6f\x43\xf9\x9e\x53\xee\x44\x5d\xbe\x85\xe1\xba\x31\xb8\x45\x51\x2e\xe0\xed\x6a\x96\x29\xc1\xf4\xb4\x8c\x2a\xf8\xeb\x55\x48\x7e\x85\x65\x5d\x0f\x08\xce\x18\x5b\x75\x0f\xbe\xc1\xa6\xb4\xc9\xe3\x68\x84\x1b\x1d\x17\xed\x7a\xe8\x25\x70\xfc\x4b\xe4\x5b\x16\x4a\xb1\x51\x7f\xa8\x28\x67\x29\x23\xf6\xf2\xf1\x76\x65\x56\x55\xd2\x76\xed\x14\xec\x98\x32\xf8\x41\xdb\xe5\xc2\x7c\x5c\x23\xf4\x39\xa7\x19\x20\x7c\xdb\xa2\xea\xdf\xe5\x0d\x89\x3f\x1c\xda\x33\x4a\x0c\xa6\xd4\xc8\x51\x1b\x35\xda\x04\x52\x57\x17\x48\x7c\xa3\x96\x2d\xb0\xb9\x90\xae\x6a\x25\x00\xb8\x0a\x68\xb9\x67\x41\x8d\x15\xec\x9a\x05\xb7\x5c\x94\x6e\x58\x88\x8c\xa7\xd3\x8b\x9f\x03\x4f\xb3\x1a\x6d\x65\x34\x42\xaa\x5a\x2c\x6c\x20\x65\x9d\x43\xcd\x6d\x59\x11\x6e\xd8\x99\xd9\xad\x53\x06\x79\xdc\x1a\xb7\xee\xc8\xd6\xeb\x86\x2a\xd1\x9a\x8f\x90\x0c\xd7\x8d\xe6\x0b\x65\x25\xa5\x99\xb3\x34\x13\x26\xa9\x8f\x31\xce\x85\xc9\x64\x9c\x26\x70\x0d\x29\x8c\x73\x6c\x14\x32\xd7\x5e\x69\xa8\x2a\x01\xaa\x0b\x3a\x28\x98\xb0\x5d\x92\x3f\x51\x1f\xd5\xeb\x46\x29\x11\xcc\xe3\x9a\xdb\xce\xea\x67\xe7\x67\x37\x67\xc7\xef\xea\xc3\x72\x4b\x98\xd5\x48\x59\x6a\x3c\x57\x5b\x0c\x3a\xae\x5c\x4b\x3c\x57\x15\xf4\x9d\x95\x65\xff\xad\x9b\x83\x9a\x6a\x3d\x52\x7a\x77\xdc\x8e\xd9\x94\x74\x32\xc9\xe1\xa2\x9e\x42\x04\xce\xbf\xc2\x4a\xb6\x72\x6b\x91\x31\x68\xa6\x65\x05\x68\xa2\x0c\xdc\xa0\x54\x13\xa3\xea\x4e\x1f\x8d\xa6\x65\x7a\xe0\xe4\x5e\xbd\x64\xa8\xb4\xad\x94\x4c\x47\xc0\x86\x87\x0f\x95\x91\x07\x13\x29\x4a\xc0\xae\x36\x9a\x52\xa8\x46\xbb\xf1\x3a\xb8\xcd\x6e\x93\xd7\x5f\x6f\x93\x66\xeb\x65\xfb\xbe\xa9\x53\x15\x0a\x54\xcc\x13\xca\x47\x6a\xc3\x8c\xa1\x95\x4b\xbc\x76\x73\xd2\x3e\x6f\x8c\x52\x74\x94\x6d\x37\x2e\xbf\x65\xb8\x07\xde\x90\xa0\xa8\x98\x53\xca\x2f\xb6\x1e\x78\xcd\xd2\xf8\x73\x12\xae\xdc\xda\xc2\x18\xfd\xd1\xd4\x1c\x7f\xaa\xa5\x8d\xa6\xfc\x7e\x6d\x15\xf1\xf3\x79\x1c\x15\x3a\xf1\x81\xf4\x15\x0d\x25\x03\xad\x26\xad\x9d\xa9\xf4\x57\x0b\xe2\xdd\x64\x64\x85\x53\x53\x69\xbb\x76\x63\x9c\xec\xaa\x7d\x6d\xb7\x55\x59\xb0\xdb\x27\x1d\xb1\x4f\x11\x33\x0f\xae\xf9\xc7\xe3\x77\xac\x6f\x92\x01\x2b\xfb\x68\xe1\x62\xbd\x9c\xde\x70\x9a\xc8\xda\xed\x59\xcb\x1b\x62\x09\x8f\xad\x38\xf0\x58\xc5\x52\xe6\x72\x99\x6b\x08\x4a\xd2\x65\x0d\x40\xef\xbd\x62\x2a\x96\x8c\x67\x0e\xa5\x55\xd6\x69\xc5\x14\xfd\x59\x99\x19\x8a\x26\xad\xcf\x3a\x4f\x85\xd2\xf5\xe7\x32\x56\xa6\x28\x9b\x78\x85\xca\x0c\x83\xf7\xda\xd0\x99\x34\xaa\x80\xb9\x8e\x8f\x33\x4f\x7b\x5d\x59\x15\x0a\x50\xa7\x89\x76\x44\x89\x81\x59\x74\x57\x23\xe9\xd0\x48\x1e\x74\x78\x4a\x60\x34\xaa\xb2\x42\xd8\xcd\x28\xc0\x2b\x63\x88\xad\xf2\xa2\x5a\x06\x89\xc5\x22\x03\x1d\x9e\xfc\xcf\xa7\x20\x9f\x24\xc6\xf6\xa9\x6c\xc2\x56\x17\x0e\xb2\x52\x57\xac\x1b\xfa\x52\xae\xa9\x53\x36\x4c\x64\x99\x57\x30\x25\x25\x54\x20\xa5\x1a\xea\x84\x02\xd1\x96\x34\x9b\x02\xc7\x3c\xcc\x4b\xfa\x87\x29\xca\x08\xcc\x37\x4d\x2b\xb4\x5b\x9e\xb0\x65\x71\xda\x20\x78\xa5\xdd\xc7\xef\xa0\xd7\xa8\xde\x6a\xb5\xea\x41\xbd\x4e\x38\x06\xb2\x59\x3d\xbb\x7e\xa7\xd9\xca\xf0\x3c\x0e\x47\xb8\xd1\xbe\x4d\xda\xf7\x2e\x72\x1c\xd9\x8d\xc5\x7c\x94\xce\xa2\xe4\x7e\x53\x57\x12\x53\x8f\xd1\xd7\xb8\x44\x09\xe8\xf2\x03\xf2\x3b\x26\x5f\x24\x6c\xc1\xd6\x96\x0b\x41\x09\xbf\xb3\xab\x20\xb0\x1a\x95\x78\xd7\x13\x4d\x2e\xfb\x9d\xe6\x8e\x56\xb7\x49\x8d\xb5\x7d\x57\x6d\xad\xeb\x46\x51\x2a\x88\x62\xd0\x55\x53\x3f\x28\x2d\xcc\x2b\x1c\x8c\x73\x8d\x79\x86\x79\x83\x76\x90\xd7\x64\x96\xda\x5d\xa7\x3c\x94\x04\x37\x9b\x13\xda\x48\x70\xd3\xaf\x83\x76\xd0\x68\xc7\xf9\xc3\x11\x8d\x26\xbd\xad\x68\xac\x3c\x42\x49\x13\x6c\x8e\x80\x32\x0f\x5a\xa7\x17\x3f\x57\xe9\x04\xcf\x94\x11\x6a\x6a\x8a\x30\x9d\x56\x5a\xaf\xc1\x1e\xe8\x6a\xd5\x50\x23\xaa\x2e\x13\xf0\x6c\xfe\xbe\x9c\x0c\x11\x31\xf4\xa4\x51\x1a\xeb\x09\x20\xc9\x7a\xb6\x06\x92\xb9\x5e\x21\x7c\xd8\x42\xae\xaa\xd5\xc8\x5c\x2b\xd5\xcc\x95\xbe\x14\x2d\x62\xb9\x0a\x7f\x1c\x2d\xb2\x0c\x27\xc5\x15\x49\x54\xc7\x1c\xce\x36\x20\xa6\x49\xbf\xd3\x8b\xd0\x0f\xb4\x98\x0c\x09\xa2\x47\x03\xd1\xa8\x60\x28\x4d\x54\x87\x84\x14\xc0\x31\xa0\xff\x47\x43\x73\x1b\x0c\xa3\x2b\x90\xbc\x78\x81\x1a\xcf\x68\x6f\xbe\x7e\x95\xc8\xa5\xd4\x47\x3f\xd2\xb1\x90\x29\x4d\x9b\xf5\x40\x28\x0f\x1c\x83\xc5\x1c\x28\x42\x97\x58\x2d\x85\xcf\xb4\x65\x61\x12\xe3\x2f\x4d\x73\xef\x8b\xd6\xd8\xb8\xa1\x01\x66\xcb\xb8\x9a\x27\x7a\xb0\x59\xd3\x46\xba\xb6\xad\xab\x1f\x3b\xba\xfa\x51\xa9\x6d\xaf\x53\x2e\xa4\xad\xad\x44\x06\xb5\xe5\x5b\x29\x1b\xa5\x7f\xd5\xda\x87\xa2\x65\x6c\xae\xd8\xd0\x46\x98\x26\xa0\x6b\x5e\x43\xa1\xc0\x5a\x33\x19\xa5\x6f\xb3\xd7\xb7\xc9\xeb\x76\x53\x61\xa8\xca\x76\xa1\x1d\x93\xd5\x56\x56\x0a\xf3\x5d\x1b\x07\xae\x9c\x9f\x5b\xc0\x48\xf6\xb0\x0f\xa6\x62\x73\xd7\xd4\x76\xcb\x9c\xda\xac\xd5\xa0\x2a\xcd\x46\xd1\xea\x5d\x4d\xc5\xdf\xd1\x2c\x03\x6b\x8d\x93\x9a\xee\x62\x58\x1b\xd0\x16\xfb\x2d\x73\x96\x57\x52\x6c\xbc\x86\xae\xcc\xd5\xa0\xca\x48\x5a\x80\xa7\x8f\xb0\x84\xd2\x9f\x4c\x50\x11\xe9\x30\x74\x2d\x86\x8b\x81\x25\x4d\x32\x9a\x4d\xba\x89\xd5\x86\x3b\xa8\xd8\xd6\x21\x0b\x89\xa0\x30\xe9\x42\xd3\xe2\xfb\xc0\xff\xc1\x8e\x99\x66\xaf\xdd\x10\x73\x52\xf7\xfb\x44\x59\xd8\x7a\x15\xb5\xed\xc8\x55\x68\xc5\x12\x56\x7f\x87\xbf\x44\xa3\x30\x36\x0e\x50\xeb\x3b\x0d\x43\x64\x34\x77\xea\x2d\xf4\x21\xc9\xf0\x28\xbd\x4f\xa2\xbf\xf0\x18\x01\x27\xdf\x26\xf5\x1d\x80\xd4\x0f\x8b\xed\xe2\x81\x9d\x73\x3a\xf2\xf8\x2e\x59\xc4\xfa\xe1\x25\xaf\x70\x65\x33\xb3\xc5\xf8\x4b\xb0\xd6\x13\x46\xec\xdd\x88\x66\xd2\x68\x5a\x9d\x5d\x32\x33\x52\x5a\x05\x5d\xb3\x6f\x20\xa8\xe1\x70\x21\x1a\x7c\x87\xef\x23\x45\x9d\x83\x9f\x0d\xc1\x85\x25\x55\xdf\xe0\x4f\xb0\xe8\x4a\x68\xa9\xee\x83\x9f\x52\xa1\x6c\x40\x78\x8a\x46\x10\xb5\x81\x26\xe6\x74\xde\x90\xf8\x34\xcd\x42\x22\x35\x14\x8e\x4d\x98\x73\xdb\x1c\x5b\x3f\xef\x86\x54\xcd\x10\x0d\x29\x4a\x1d\xdb\xb2\x43\xeb\xaa\xf1\x87\x92\x70\x8b\x7c\x6a\x54\xb0\x69\x48\xcc\x7c\x86\x8b\xb0\xa7\xee\xc7\x46\x9d\xe5\x68\x9a\x26\xb5\x94\x08\x79\x5a\x48\x0e\x77\xb9\xfc\xe8\x3e\x0f\x1f\xd2\x68\x1c\x25\xf7\x1f\x93\x70\x86\xc9\x1a\x16\x47\x39\xc1\xe7\xfe\xfe\xfb\xc7\xeb\x9b\xe3\xab\x1b\x11\x94\xe3\xf7\xdf\xaf\x6f\x8e\x6f\x4e\xfb\x3c\x83\x45\xe4\x68\x54\xa2\x10\x21\x3a\x3a\xe6\xae\xdb\xfa\x2f\x9a\x34\x96\xcb\x8f\xc2\xdc\x04\xf2\x7c\xd7\x6b\xd2\x53\xa3\xdb\x5b\xa7\xa9\x12\xc4\x99\x2d\xaa\x1c\x58\xb6\x44\xdb\x17\x68\x65\x36\xea\x23\x15\x96\xef\xac\x68\x1a\x19\xce\x5d\xaf\xe9\x6a\xcd\xc0\x7f\xaf\x1d\x42\x36\x7b\x7b\x5b\x14\xd6\x23\x21\x04\x4a\x59\x33\xd2\xc9\x77\xa4\xb3\x9c\xd2\xff\x9f\x90\x79\xab\x4a\xff\x36\x11\xbb\xc1\xe6\xe6\x20\xa5\x3d\x7b\xfc\xa6\xb2\x42\x15\x51\xfb\x7e\x45\xe0\x17\xc6\x22\xf3\x30\x73\x24\xb4\x6f\x0e\xda\xbe\x1c\xcf\x83\x72\x44\x17\x5e\xaa\x53\x8e\xdb\xc2\x4b\x1d\x95\x23\xb4\x54\x65\x1d\x49\x84\x5d\x4b\xe8\x95\xca\x3c\x7e\xd9\x5d\xed\xbd\xd2\xc5\xfa\x28\x9d\xd5\x6d\x71\x51\x36\xd0\xb8\xab\x0e\xf9\xfe\xb7\x90\xd8\xeb\xca\xd6\xfa\x96\x60\x2a\x2c\xaf\x6b\x52\xd4\x93\xd4\xee\x96\x70\x1e\xac\xc9\x93\xf4\xee\x9a\x44\xf5\x5e\x05\xa8\xfd\x32\xba\x4f\x88\xd6\xfa\x38\x8d\x0a\x9c\xcf\xc3\x11\x7e\xd9\xae\x88\x60\x62\xeb\xdf\xab\xaa\x28\x25\x5b\x01\x7b\x1b\x29\xed\xa9\x94\xf6\x55\x43\xd0\xad\xd3\xbe\x77\xeb\x4e\x5d\xe2\xef\x9a\xbc\xe6\x6f\x1e\xc9\x35\xf8\xeb\xed\x7b\x17\xfc\xd3\xaa\xf1\x6f\x9e\x8d\x9e\x32\x81\x4a\xdd\x57\xc6\xdb\xe4\x05\x7f\x7f\x4d\x9e\x32\xde\x9e\x25\x3a\x49\x15\x2f\xf8\xaf\xb6\x20\x07\xd2\xe8\xd1\xab\x46\x26\xa7\x64\xfd\xec\xfc\xd7\xe3\x77\x67\x27\x75\x4b\x14\x92\x2d\xf8\xab\x6b\x9b\xa4\xbc\xda\x43\x4b\x4c\x12\x96\xb7\xaf\x05\x53\xe0\x1a\x04\xb7\xfc\x0c\xda\x7f\x34\x5e\x07\x83\x3f\x6e\xbf\x74\x3a\xc3\x97\xaf\x1b\xaf\xfb\x8d\xdb\xa7\xdb\xa7\x66\xb3\xd9\x76\xd5\xac\x1d\xe3\xf7\x93\xef\xae\x04\xf4\xd7\xe7\x0a\xfc\x6d\x7e\x7b\x3d\x7c\xf9\x7a\x77\xf7\x76\x75\xbb\xe2\xa9\x04\xea\x47\xf5\xc7\x7f\xa9\x3f\x6e\xdb\xda\xaf\x3f\xb4\x5f\xf9\x4b\xa2\x1b\xdf\xde\x69\x89\x4f\xea\xaf\x17\xea\x8f\x67\xbb\xbb\xda\x4f\xde\x1e\xb3\x35\xfc\xbb\x2f\x12\x5b\x8d\xd7\xfd\xc1\x0a\x0d\x9b\x32\xe5\xb6\x25\xbb\xd5\x6e\x0d\x45\x46\x2e\xc8\x41\xd0\x2a\x88\x95\x6f\xa7\x71\x7b\x3b\x70\x86\x5f\x07\x7f\x38\xc3\xe6\x4b\x87\x27\xd7\x49\x72\x9d\x24\xd7\x87\xcd\x97\x75\x9e\xfc\x7f\x0d\xc2\xdd\xbf\x8e\x77\xff\x97\x24\x74\x91\x2d\x30\xb4\xe8\x36\x97\x4d\x82\xfd\x60\x29\x75\xd0\xd9\x3d\x1a\xee\x94\x93\x29\xca\xce\xee\xd1\xc7\xe7\xbb\x34\xbf\xbf\xba\xcd\xa1\x27\xa2\xc5\x83\xc1\x1f\xb7\xc3\xe1\xcb\x5b\xd1\xb9\x96\xa5\x97\x1a\xa6\xb6\x6c\xe3\xf3\x66\x7b\xc8\x39\x4a\xea\xe9\x44\x55\x25\xfa\x5b\xf0\xe4\x00\x9b\x39\xc1\x60\xcf\xdd\x77\x0f\xdc\x43\xf7\x95\x7b\xe4\x7a\x1d\xd7\xf3\x5c\xcf\x77\xbd\xae\xeb\xed\xb9\xde\xbe\xeb\x1d\xb8\xde\xa1\xeb\xbd\x72\xbd\x23\xd7\xef\xb8\xbe\xe7\xfa\xbe\xeb\x77\x5d\x7f\xcf\xf5\xf7\x5d\xff\xc0\xf5\x0f\x5d\xff\x95\xeb\x1f\xc1\xbd\x4e\x07\xde\xec\xc8\xa3\x07\xec\x50\x7a\xac\x5c\x50\xd3\x94\xea\x2a\xa0\x46\xe9\x4c\x85\xea\xda\xa1\xc8\x7a\xae\x42\x75\xe0\x2e\xaa\x0d\x92\x39\x2a\xa8\xd0\x1d\xd7\x2b\x35\x92\x8c\xe4\x6a\xd5\xab\xb1\x09\x49\xaf\xd8\xac\x9a\x8d\x66\x8d\x39\x8e\x70\x77\x15\x76\xf9\x46\x68\xf3\x97\xf4\xe6\x0d\x04\x04\x65\x9b\x57\xba\x0d\x40\xab\x4b\xe6\x72\xa2\xc4\x41\xa7\xc8\x7a\x0c\xe7\x25\xbf\xb5\x43\x3f\x44\xed\x09\x7e\x14\x49\xa4\x0d\xbd\xb5\x31\x4f\xf9\xd3\x17\x4a\x48\x55\x81\x58\xc2\xeb\x41\x61\xa1\x01\x6a\xd8\xee\xbc\x90\x4e\xf5\x25\x44\xb4\x4f\x4a\xf2\xf1\xf5\x4d\xcf\x1a\x0a\xf7\x52\xf1\xb2\xe1\x38\x4b\x91\xde\xe7\x59\x94\x14\x6a\xe5\x61\x5e\x68\x71\x6d\x8d\xe0\xf2\x97\x04\xfe\xd7\x28\x8f\x8a\x34\x6b\x34\x5b\x34\xa8\x26\x14\x22\xa8\xd7\xd2\x26\xcc\x0b\x42\x9a\x86\x1a\x2a\xbf\xa6\x77\xf1\xf8\xfa\x86\xbf\xce\x61\xa6\xab\x61\xf8\x74\x62\xf1\x40\xad\xc6\x13\x1d\x6c\xbf\xc8\x06\x5b\x84\x7d\xed\xc9\x2c\x59\x94\x7a\xc8\xb1\x1f\x14\x42\x7f\xe1\x03\xe0\x65\xf8\x61\x83\x28\x46\xf3\x44\x41\x1a\x14\xdb\xda\x1b\x35\xc4\x9a\xda\x9d\x2c\x7c\xbc\x84\xf0\xaa\xd4\x1d\xca\x45\x8b\x04\xe7\xa3\x70\x8e\xc7\xd6\x5e\x89\xd0\xb2\x4a\xb7\x18\x3c\xea\xa3\x67\xa2\xb0\x92\x4d\xd0\x02\x37\xe6\x53\x76\x62\x03\x47\x15\xe2\x88\x1f\xbe\x44\x33\x84\x35\x90\x05\xe2\x0d\x67\xb9\x3c\xef\x62\xbf\x04\xb0\xe2\xe4\x01\x65\xda\x6d\x14\x22\xde\x44\x14\xe5\x28\x4c\x10\x8e\xa3\x7b\x70\x24\xa7\x91\x9a\x51\x34\x09\x38\xec\x4b\x14\x15\x39\x69\x49\x94\x23\x1a\x91\x17\x35\x42\x94\x47\xc9\x7d\x8c\x49\xdd\x85\x0b\x8f\x89\x7c\x22\xb5\x7f\x42\x69\x86\x3e\xb5\x5a\x9f\x9a\xa2\x75\x1c\xb3\x78\xc4\x85\x52\xc3\x4c\x8d\xc6\xad\x28\xbf\x06\xf4\x55\xcd\x04\x43\x54\x54\xe0\x78\x89\xc2\x8a\x76\xda\x7b\x03\xcf\x38\x69\x60\xd3\x30\x47\x61\x81\x62\x1c\xe6\x05\x4a\x13\x4c\x69\x88\x0b\x9c\x91\x0e\xc0\x58\xe4\x34\x60\xad\x1c\xa1\x28\x17\x8d\x35\x5a\xff\xe2\x05\x6a\x50\xb2\x2b\x77\x78\x98\xdb\x1c\xaf\x36\x9a\x6c\x26\xfa\xdd\x02\x1e\x7d\x42\xa1\xe8\x2a\x2f\xcd\xfb\xc1\x7a\x38\xbb\x8b\xee\x17\xe9\x22\xa7\xef\x53\x3d\x46\xf4\x11\xa8\x0c\xe7\x69\xfc\x00\x8f\x40\xa1\x10\xc5\x61\x81\x33\x5e\x7e\x1e\xe6\xf0\x1a\x54\x58\xa0\x6c\x91\x14\xd1\x0c\xb7\xaa\xa6\x80\x12\xde\x4f\x9d\x01\x4a\xb8\x61\xd7\x0c\x57\x2f\x79\x9f\xff\x23\x33\x9b\x05\x54\x56\x78\x5c\xc1\x81\xa8\xa4\xe7\x3f\x15\x20\x1e\x65\x9d\xe1\x61\x3f\x7b\xa2\xb9\x84\xa7\x1e\x70\x16\x4d\x96\xfc\x68\x4e\x3e\xd5\x31\xc7\x89\x8b\x20\xec\xb3\xf2\x50\x00\x49\x6d\xa5\x59\x74\x1f\x25\x61\x0c\xe6\x03\x80\x10\x49\xd2\x96\x25\xbd\x18\x15\x9a\x9c\x7e\x21\xb2\x94\xa3\x97\x88\x76\x90\x83\xc6\x29\xce\x93\x7a\xc1\x4e\xe4\xe0\xe0\x57\x47\xcd\xcc\x60\x55\xb4\x16\xa1\x3d\xd5\x5e\x70\x26\x71\x11\x13\x8e\x42\x82\x1a\x7d\x53\xa8\x20\x0a\xb5\xa2\x31\x87\xea\x95\xe5\x12\x3c\xaf\xa3\x8e\x88\x60\xc8\xbe\xe0\x4d\x75\xbc\x68\xfd\x30\x56\xf4\x53\xc9\xe4\x62\x57\x8d\x09\xcf\x48\xce\xac\xf2\x1c\xe2\xc5\x0b\xf4\x4c\xc5\xa7\x12\x1c\xe6\xd5\x99\x90\xe0\xd2\x0f\xa4\x92\x66\x4a\xc0\xd1\xaa\xd5\xd9\xe8\xf5\x88\x96\xd0\xd7\x18\x76\x2d\x99\x7e\xf4\xaa\x2a\xe3\xc1\x02\xf5\x99\x10\x65\xb9\xb5\x22\x88\xba\xad\xf1\x7b\x04\xa1\xd3\xe1\x6f\x65\x1d\x34\x24\x9d\x39\xd7\xec\x35\x9c\x9d\xa8\xf8\x05\x2f\xd2\xb9\x94\x33\xa7\x85\x96\xd3\x54\x96\x90\x71\x74\xcf\xae\x72\x8f\xf1\x1c\x6e\xd0\x76\x58\x2e\x7f\x83\x22\xea\x77\xdc\xb8\x4f\x31\xc8\x07\x32\x62\xe3\x48\x9c\xad\x34\x05\xaf\x6c\x10\x0d\x85\x6b\x41\x34\x69\xd0\xac\x7e\x1f\x39\xad\x96\x03\x0f\x51\x90\xda\x76\x76\xe4\x0b\x14\xfc\xbd\x21\x05\x12\xae\x3f\xca\xdf\xa4\x53\x8e\x5c\xd7\xf3\xeb\x51\x4a\x57\x4c\x60\x0b\x1d\xd1\x13\xe9\x18\x35\xfd\x13\x04\xcd\x9e\x70\xc2\xd6\xe5\x4d\x4e\xc5\xc8\x38\xba\x2f\x0f\x3f\xcb\xa0\x64\xab\xb7\xea\xea\x94\xa1\xc4\xa2\x20\xe4\x53\x59\x94\x12\x74\x76\xa2\x2c\x86\xd1\x84\x88\xe5\x34\x89\x97\xb0\xac\xb0\xd5\xa4\x60\x6f\x07\x4e\xc3\x82\xf6\x30\xca\x89\x6c\xe7\x48\xc8\x1a\x09\x6b\x25\xac\x9a\x2d\x75\x95\xa1\x8b\xa0\x18\x53\xc5\x11\xcd\x93\x53\x49\x10\xe7\xc5\x0b\x3e\xae\x7d\x39\xb2\x4a\x27\xdf\xa7\x63\xfc\x6b\x18\x2f\x84\x3f\xcc\x06\x8e\x37\x42\x2b\x9a\xcf\x9e\x59\xb9\x52\x8b\x5e\xae\xd0\x30\xa1\x6f\x2b\x25\x4c\xc0\x5b\xeb\xe3\xe1\x1f\xd5\x8a\x22\xbb\x56\x05\x81\xd6\x55\x09\x34\x06\xbd\xa1\x12\xb5\x0c\x8f\xb9\xa5\xa0\x60\xf1\xdb\xd7\xcb\x89\x4a\xea\x6e\x20\xac\x12\x6b\x53\xeb\x2b\x4d\xb6\xcf\x76\x16\x43\x5e\x93\xba\x00\x0e\x42\x17\xbe\xd6\x36\xe9\x1c\x6e\xa9\x8b\x3a\x2a\xdb\xa6\x44\xf1\x54\xdb\x76\x97\xca\xfb\x71\x5a\xc3\x78\x3c\x7b\xa5\x72\x02\x8b\xfa\x88\xfc\x59\xdb\x24\x0a\x07\xb3\x3d\x5b\x50\x05\xb9\x42\xcc\x8b\x08\xd1\x6a\x93\x46\x34\xb9\x42\xce\x43\x9e\xa3\x29\x13\x90\x04\x7a\x04\x7c\xf1\xfa\x2a\xf7\x8c\x0b\x78\xce\xe5\xcf\x9c\x1e\x26\xc1\x69\xef\x65\x96\xce\xc1\xc8\x54\x1f\xe3\x7c\x94\x45\xa0\x0d\xd4\x5d\x54\x9f\x44\x31\x26\x13\x85\x7c\xc7\x51\x82\x29\xb9\xc9\xaf\x19\xce\xf3\xf0\x1e\x32\x12\x06\x90\x88\x4c\xb8\x87\x52\x1f\xea\x3b\x3e\xa1\x66\x68\xaa\x00\x45\xa3\x3c\x73\x33\x9b\xa3\x3e\xbd\x63\xa1\xbc\xbf\x37\x4a\x93\xbc\xc8\x16\xa3\x22\xcd\x5a\xe1\x7c\x1e\x2f\xd9\xe1\xbf\x78\x39\x90\xae\x07\xed\x36\xfa\x90\x4c\xd2\xac\x58\x24\x21\x68\xd1\xd0\xbb\x1c\x85\x19\x06\xb5\x13\x27\x8b\x19\xce\x20\xde\x47\x94\xa0\x37\xd3\x2c\x9d\x11\x55\x9f\xa9\xc9\x4d\x17\xe5\x29\xfa\x34\x49\x33\x78\x32\x10\xee\x88\xcf\xe6\x9f\x84\x0e\xf4\x98\x66\x9f\x89\x1c\x93\x6e\x56\xe3\x2f\xb0\xd8\xc0\xc7\x0f\x0a\x29\xe5\x22\x33\xfe\x22\x57\x18\xd2\xe4\x81\x04\x1a\x44\xe3\x2f\xc3\x21\x11\x5a\xb3\x79\x29\xb9\xc7\x5f\xd9\xb2\x11\x50\x7f\x55\x4d\x5c\x49\x21\x34\x68\xb7\xd1\x4f\x8b\x28\x1e\xa3\x74\x51\xa0\x74\x91\xa1\xbb\x30\x8f\x46\xe8\x3a\x9c\x60\xf6\xba\x21\x29\xa6\x62\x55\xb2\x2a\x64\x88\x5d\x4e\xe8\x6d\x93\x58\x2c\xaf\x26\x1a\xcf\xd4\xd5\xf4\x03\x5c\x8a\x50\x00\x37\x98\xad\xa0\x61\x14\x01\x66\x85\x4d\x25\x7b\x1e\x0e\x21\xe7\x85\x13\x20\xe7\x45\x38\x9b\xf7\x1c\xea\x67\xe0\xfc\x00\x29\x71\x21\x12\x7e\x84\x84\x7b\x91\x50\x77\xea\x24\xe1\xdf\x8b\x54\xc2\xd4\x01\xe6\xbf\xbe\xf8\x87\x22\xe9\x13\x4b\x3a\xe8\xf4\x1c\x4d\x31\xbf\x0b\xc7\x6f\xa6\xf4\xbd\x98\xf6\xe0\xc5\x0f\x3f\x3a\xf5\x4f\xc3\x36\xc8\x44\x50\x1f\xf8\x6d\x65\x35\x57\x94\xa5\xcd\x27\xc5\xb5\x09\x3f\xcd\x8c\xb7\x94\x28\xdc\x60\x34\xcd\xe0\x66\x37\xeb\xa1\x55\x90\xc0\xdb\x4c\x82\x20\xb4\xe0\xe9\x97\x79\x86\xe1\x15\xdd\xa0\x6a\x51\x80\xa9\x32\x4e\x09\x57\x33\x9a\xca\x01\xcc\x5d\xb2\xf5\x1d\x61\x54\x4c\xf1\xb2\x9e\x61\x14\xc6\x19\x0e\xc7\x4b\x94\x87\x13\x2c\xd4\x21\xc4\x30\xaa\x97\xc0\xad\xfc\x60\x39\xb7\xb7\x8c\x38\xcd\x17\x4f\x36\x0a\xec\x4a\x10\x0c\x91\xc2\xbc\x6d\x2c\x88\x65\xb8\x88\x95\xa2\xb8\x3d\xe3\xa3\xd2\x2a\x70\x5e\x70\x4a\x10\x2d\x4c\x6b\x8f\x54\xbf\xf4\x66\xf2\x23\x14\x3e\xf2\xae\x32\x8e\xd2\x75\x82\x6e\x0c\xe8\x1b\x59\x0a\xd9\x1f\xc8\xa2\x20\x5b\x0a\xae\x89\x90\x46\xd4\x1a\xfa\xf1\x0c\x1e\x15\xb3\x78\x37\x28\x1e\xe3\xf2\x2d\xcb\xca\xa7\x49\xa9\x4f\x14\xab\xcf\xf6\xd8\xa5\xa8\x51\x55\xb8\xb6\xac\xb8\x04\xa3\xf9\x3b\xad\xd4\xfd\xcc\x66\x5b\x25\xff\x58\xf7\x54\xaf\xc2\x4a\x6f\x18\x78\xf9\xb1\x4b\x05\xe8\xbf\xc3\x87\xf0\x1a\x56\xae\x6a\x70\x45\xa4\x70\x20\x17\x95\x0b\x52\x8a\xb4\xdb\xec\x31\xeb\x45\x32\x66\x46\x10\xfe\x88\x16\x35\x47\x8c\xa3\x9c\x5a\x29\xc2\x42\x98\x37\xe2\x34\xfd\xbc\x98\xa3\x49\x96\xce\xe0\xe9\x59\x78\x63\x9c\x22\x13\xb6\x62\x30\x5d\xf0\x57\xd8\xd0\xcd\x34\xca\x41\x71\xc6\x23\xb2\x12\x66\x4b\x58\x5d\xc4\xa6\x95\x90\x2a\x2c\xa2\xbb\x28\x8e\x8a\xa5\x8b\x1e\xa7\xd1\x68\x4a\xf1\x65\xf8\xdf\x8b\x28\xc3\x39\xd5\xbf\xb9\x49\x81\xd7\x92\x93\x6a\x60\x2f\x4c\x17\x3f\x4c\x06\x1e\xee\x65\xde\x2d\x51\xf9\x09\x5a\xb7\xc6\xf4\x7e\xa2\xce\xe3\x84\x2c\x7f\x23\x8c\xc7\x28\xcc\x09\xc7\xc2\x73\xe4\x38\x5f\xc4\x10\xed\x83\x32\xed\x63\x98\x13\xa8\x87\x68\x4c\x9f\x02\x2f\xe3\x6c\x91\x29\xc1\x69\xaa\xad\x58\x94\x99\x38\x17\x04\x02\x88\x4d\x22\x42\xd8\x3c\xc7\x33\x08\x25\x6e\x2c\x02\x7c\x9b\x96\xce\x47\xe9\x58\x7a\x44\xb3\x9f\x2e\x4b\x77\x61\xf5\xa3\x5b\xc2\x39\x33\x6a\xc2\x5f\xb1\x9d\x53\x3d\xa5\x5d\x14\xf7\x19\x82\x35\x9b\x43\xc4\x70\xc3\x5b\x68\x00\xac\x6e\x0f\xf9\x63\x91\x24\xa3\xc5\x01\xfb\x7d\x54\x3f\x39\x7d\xf3\xee\xf8\xea\xd4\x70\x2d\x4b\x17\x05\x0b\x0c\xc3\xf2\xc1\xb2\xc2\x8a\xc3\x9e\x62\x07\x39\x7d\x25\x8d\x4e\xeb\xb5\x7e\x68\xc2\x2a\xaa\x47\xbd\x11\x3d\xfd\xb3\xdf\xe9\xa1\x3f\x7f\x60\x08\xc3\xec\x5e\xf6\xf6\xcf\xb2\x63\x38\x60\x13\x7d\x05\xf0\xc1\x9f\x43\x8b\x83\x23\x75\xa5\x63\xe0\x44\xea\x50\xa9\x69\xb9\x53\xce\x51\x3a\xb7\x8e\x03\xf7\x41\xb2\x70\x26\x84\xab\x73\x9b\x38\x2e\x72\x6e\x6f\x13\x1a\x38\xe6\xd6\x8c\xfc\xb3\x2a\x37\x2f\x17\x9b\xe3\x70\xa6\xb9\xa9\xac\x6c\xa4\xd6\x07\x67\x07\x39\x48\xb4\x82\x9b\x15\x90\xd3\xb4\x5c\xf3\x10\x4b\x09\x7f\x70\x6f\x51\x30\x78\xd2\x58\x7d\x01\xb8\x5f\x44\xe3\x00\x75\xd8\x2f\xc6\xe2\x0a\x17\x0b\x7b\x97\xf6\xd0\x1e\x12\xca\xfc\x34\x8a\xc7\x19\x38\xbd\xca\x51\x94\x9b\x75\x58\xe8\xe3\x28\x2f\x02\x34\x18\xae\xb4\x7c\xe9\x7c\xc6\xbe\x04\x6b\xb6\xdb\xe8\x66\x8a\x73\x8c\x46\x53\x1a\x7c\x0d\xa4\x17\x51\x70\xc3\x7b\x22\xba\xd8\xab\xfd\x69\x31\xc5\x99\x98\x94\xf0\x91\x26\x44\xb3\x56\x66\xdd\xe7\x24\x7d\x4c\xde\xb2\x77\xce\xfb\x5a\xc5\x2d\x35\xcf\xd6\xb2\x96\x51\x58\x72\x87\xf1\x46\x78\x00\xeb\x8f\x74\x1b\xb5\xbd\x98\x5d\x82\x81\x07\x62\x4b\xa9\xd1\xa4\x9c\xc6\x1e\x91\x2c\xa5\xc3\x9b\x8b\xa5\xd4\x38\xe5\x95\x71\x66\xe8\x29\x2b\xb9\xda\x25\x95\xdf\xc5\x9c\x83\xa9\x1c\x25\xa8\x0a\x70\x0d\x89\xc4\x2b\xeb\xe5\xc4\xcd\x2c\xaa\xda\x22\x39\xcf\x19\x9c\x4a\x0f\xd0\x14\xd6\x4c\xd2\x31\x2e\x3d\x79\x0d\x5b\x16\x92\x03\x5b\xd0\x21\x05\xd2\x11\x31\xf4\x65\x26\xd7\x25\xb6\x76\xe6\xc5\x20\x5a\xea\x19\x9a\xf8\x36\xb8\x87\x0b\xfa\xc1\x50\x95\xde\xaa\xf0\x96\x58\xd6\xca\x6f\x01\xa6\x1d\xba\x81\x14\x57\x47\x63\x20\xf2\x58\x9f\xc5\x6f\xe3\xbd\xdb\xb2\x39\x8b\x6e\xfb\x3d\xd1\x4e\x65\xe6\xb6\xc8\xb4\x95\x91\xe1\x44\x52\x2b\x4f\xb3\x42\xea\x25\xa1\x8b\xee\x2c\x1a\x59\x88\x76\xd1\x9d\xa8\x5d\x5e\x72\xb5\x5d\x23\x54\x25\xcf\xe5\x76\x63\x43\x17\x77\xb6\x97\xe4\x56\x05\x90\x03\x8d\x26\xff\x94\xa2\x4b\x65\x59\x41\x12\x82\x86\x08\x3f\xde\x45\xf2\xbd\xb3\xe3\x6a\x96\x45\x7e\x8d\x31\xc7\xcc\x04\xc7\x81\x95\x94\xaf\x5f\x59\x6b\x94\x44\xbd\x38\x97\x91\x03\x52\xc5\x10\x5e\xfb\x25\xf0\x55\xcc\xc1\xb0\xa9\x24\x5f\xc7\x24\xdc\x82\x5c\x2e\x66\x2e\xf7\x0d\x0a\xfa\x03\xc4\x81\x03\x05\x2c\x4a\x54\x1b\xae\xb0\xe2\x42\xab\xc3\xf1\xf8\x84\xc0\xb3\x52\xbb\xc8\x6b\xf6\x2a\xa7\x2f\xe9\x99\x3e\x9e\x20\x03\x95\x61\x84\xdf\xc6\xdb\xe1\xf2\xa0\x03\x72\xc5\xc9\x87\xea\x81\xcf\xcf\x3b\x38\x0c\x1f\x54\x05\x44\x1e\x36\x53\x10\xfd\xe8\x83\x0a\xbe\x12\x17\xa9\x98\x55\x06\xba\xb4\xca\x20\x6d\x7b\x86\x1a\xc6\xe9\xb9\xde\x08\x1b\x36\x71\xcc\x6d\x62\x53\xdf\x49\x86\x72\x71\x98\xe7\xd1\x64\xc9\x0f\xbd\xc5\x21\x52\x53\xeb\x8e\x78\x36\xd9\xa1\x4b\x91\x53\x72\xfe\x66\x4b\x94\x89\xa6\x7c\x80\x65\xdb\xca\x4a\xf4\xd4\x9e\x5e\x46\x4f\xd3\xd7\xb4\x12\x96\xf1\x24\x7d\xa4\xda\x3e\x59\xaf\x99\x69\x5e\x3d\x6f\xe5\xa7\xa3\x2e\x7a\xc4\x28\xc1\xa0\x98\xab\xe5\xf9\x26\x00\x45\x05\xd9\x06\xe0\x2f\x78\xb4\x00\x95\xfe\x53\x79\x89\xfd\xa4\x37\x90\x8a\xe1\x46\x9d\x68\x52\x6c\x14\xea\xa2\xf3\xe6\xd5\x7d\x3b\xb0\x49\x20\x0b\xf0\xdb\x30\x9f\xd6\xab\x00\xa0\x8d\x60\x63\xad\x9b\x44\x36\xa8\x29\x0e\x8f\xb7\x1b\xaf\xff\x21\x31\x07\x10\x84\xfb\xc9\x46\xeb\x5a\x79\x5d\x6e\xd4\xc3\xf9\x1c\x27\xe3\xba\xa1\x13\x4c\xc3\x7c\xaa\x48\x2b\x3d\x60\x0f\x3d\x66\xa3\xe7\x86\x24\x87\x1e\x22\xba\x90\xe6\x92\xed\x65\xcf\x5a\x93\xda\x7a\xbb\xa8\x07\x3c\x6b\xa5\x3b\x81\xe0\xa7\x95\xda\xc2\xff\x10\xc6\x88\x65\x40\xb4\x35\x6d\x5b\xa7\xe9\x68\x74\x7b\x43\xdd\x4e\xac\xaa\x9c\x6c\xed\xb5\x04\xad\x43\xc7\xcc\xc3\x02\x9a\x48\xc4\xc3\xfa\xad\x1d\xe5\x6a\xea\xf1\xf4\x10\xea\xf1\x0d\x2b\x46\x32\xcf\xa3\xfb\xe4\x26\x05\x82\x51\xd2\xaa\x21\xac\x56\xba\x06\x47\x97\xd9\xa0\xe4\x0a\x51\x3e\x1a\xe5\xbe\x0d\xc2\xb5\xa1\x55\x72\x71\xb0\xae\xf2\xea\x2d\x6d\x76\x40\x4a\x0a\x1b\x5e\x16\xa2\xf0\xd9\x49\x09\x64\xfd\x94\x57\xc9\x5e\x77\x51\x1d\x56\xd9\xce\x26\xe6\x8d\x92\x87\xf4\x33\x6f\x26\x90\x49\xf4\x05\x76\xe1\x4d\x8b\x2a\x5a\xc5\xf2\xec\x08\x3e\x30\x1e\x55\x4f\x0a\x63\x8b\xa7\x63\x61\x47\xfd\x75\x97\x97\x6f\x09\x7f\x39\x15\x39\x17\x41\x41\xd9\x87\xc2\xb4\x8b\xf0\x6d\xa0\xca\xb4\xbd\xef\xb5\x3c\x7e\xfb\xfa\xa5\x0d\xda\x3f\x5a\x6b\xff\xb6\xd0\xb7\x29\x1d\xd2\x9b\x84\x3b\xad\xbd\x78\x81\x9e\xf1\x39\x9e\xa4\xa7\x90\x5a\x6a\x9a\x3e\x78\x14\x68\xbc\x69\x39\xb2\xf3\x8d\x39\x09\x4b\xed\xb7\x8c\xb5\x65\xf9\xd2\x46\x1f\xd4\x6f\xcd\x4f\x86\x9d\x4f\x47\x63\xea\x29\x00\x4e\x75\x36\x6e\xbc\xc7\xc5\x1b\x3a\xd1\xc8\x32\x32\xa6\x7a\x6f\xb3\x5a\x10\x57\x2f\x50\x5b\x2d\x4f\xd5\x93\xf1\x98\x93\xa1\x4e\x1b\x6f\x4c\x04\x9d\xd1\xbe\x03\x89\x34\x46\x8f\xc6\x2d\xc1\x9e\xf5\x93\xe3\x9b\xe3\x7a\x89\x03\x48\x6a\x23\x1a\xdb\x38\x9b\x13\x99\x5f\x79\xb6\x08\xb5\x72\xc1\x27\x55\x7b\x80\x8d\x64\x34\x89\xf0\x18\x9d\x9d\x80\x15\x81\x3a\x4f\x18\x9c\xce\xb7\x12\xca\x38\x59\x19\xae\x6a\x50\xad\xc0\x64\xa8\x38\xf4\x06\xb1\xc9\x94\xa0\x4b\x76\xaa\xf2\x2e\x9c\xdd\x8d\xc3\x92\x0a\xa0\xcd\xe2\xbf\x31\x52\xba\xcf\x67\x8e\x8b\xc5\xfc\xe7\x45\x1c\x73\x8c\x74\x05\x5e\x87\x4d\xdd\xd4\xb0\x79\xa0\x0c\x7c\x79\x42\x94\x96\xfa\xb2\xe5\xa5\x52\x20\x50\xe6\xfd\x97\x2c\x50\xe7\x96\x67\xc6\x0d\x1a\x37\xeb\x02\x91\xe0\x51\xab\xba\x48\xe2\xa5\x5e\x91\x11\x30\xf9\xf7\x74\x81\xf2\x39\x1e\x51\x4e\x31\x8b\xba\xe0\x64\xb9\xc8\x31\xd8\xf2\xd1\x22\x01\x00\x7e\x42\xe1\xa0\x1d\x6b\x4b\xd6\xf6\x6b\xbb\x2e\x69\xc3\x7f\x76\x12\xd8\xbc\x5d\x36\xb2\xf0\xb7\x48\x25\x61\x61\x33\x04\x9c\x1c\xce\x67\xaa\x43\xcf\x96\x2c\xbf\x96\x1e\xf4\x80\xe7\x22\xd1\x9a\xc5\x6b\x2e\x4f\x1b\xa9\xa0\x7a\x44\x41\x35\x24\x84\x5d\x47\xb5\xd4\xa7\x56\x13\x55\x69\x71\x44\x32\x29\x34\x1f\x87\x45\x58\x52\x3d\x28\x5f\x93\x2c\x23\x22\x95\xa5\xd2\x93\xb0\x08\xeb\x2e\x22\xc0\x2d\x21\xb7\x78\x65\xd4\x8f\x68\xcd\xf1\x72\x85\x32\x5c\x77\xf9\xa9\xaa\x55\xcf\x61\xee\x40\x41\xa5\xf3\x90\x05\xf1\xbb\xa8\xc0\x19\xa8\x6f\x0c\xb6\xa5\x3a\x03\x49\xdc\xcc\xa3\x27\xb0\x3b\xff\xac\x45\x4c\x00\xc1\xfd\xa7\xa4\xf3\x81\xc7\x8d\x7e\x4a\xc5\x33\xdb\x6d\xf4\xf6\xf4\xdd\xe5\xe9\xd5\x35\xfc\xa4\x98\x03\xbb\xaf\x99\x6e\xec\xa4\xe7\x15\x4f\xa2\x48\x02\x1e\xc9\x61\x76\x9f\x07\x68\x30\xa4\xbe\xee\xf4\xb4\x57\xb8\xbf\xb8\xc8\x6b\xa2\x95\xd1\xbc\x31\x1e\xc5\x61\x66\xd6\xe9\x22\xe3\x4c\x7a\x5d\xd5\xe2\xfc\x8a\x4e\x76\xde\x16\xc0\x10\xb0\xa3\x40\xb3\x5a\x3e\xb9\x55\x66\x84\x89\xab\x9c\x82\x37\xa2\xfc\x3c\x3c\x67\xe9\xd4\x1f\xd2\x10\x72\xa7\xbf\x5d\xdc\x38\x8a\x8d\x4c\x18\xdc\xf8\xa9\x35\x8f\x9a\xa1\x1f\xf5\x2b\xf6\xd5\x01\xfc\x29\xcb\x6c\x2d\xb7\x14\x99\xad\x64\xa0\x05\x8a\xe8\x42\x4a\x9f\x78\xa6\x16\xbd\x51\x49\x17\x6e\xf6\x48\x5b\x92\x58\x6a\x4f\x83\x3c\xe5\x0e\xf4\x0a\xa4\xee\x9b\xdf\xb3\xa8\xff\x80\x59\xdf\x01\x30\x28\xe6\xa7\x2f\xdd\xeb\x1f\x31\x1a\x85\x09\x77\x5c\x59\x72\x0b\x07\xac\x1d\x14\x2c\x2a\x96\x28\x49\x1f\x55\x3d\x49\x36\x8b\xa8\xcd\xbc\xe5\xa5\xe8\x6c\x5b\x2c\xba\xfc\xe0\x74\x9b\x15\x17\x21\xe5\x82\x82\x11\x9e\x58\xae\xa7\x36\x5c\xe6\x92\x8a\x74\xca\x1a\xc1\x5b\x4a\x66\x59\xda\x67\xd1\x49\xe1\x6d\xc2\x76\x30\x25\x07\x60\x95\x42\x2a\xbc\x20\xbb\x59\x44\x82\xb0\x1d\x56\xcf\xdc\xa2\x13\x45\x1a\x16\x5f\x7d\x97\xae\x19\x21\x80\x63\xe8\xd6\x5c\x5d\xa5\xf5\x93\x6f\x78\x11\xa7\x11\xed\xee\xea\x76\x11\x6a\xba\xa5\x25\x4b\x96\xee\x2d\x0d\x20\x74\x63\x1f\xce\x5a\xc6\x74\x57\x26\x96\x58\xf8\x55\x40\xfd\xe8\xb6\x66\x14\xb1\x2a\x03\x4a\x71\xf4\xf5\x2b\xea\x68\x38\x36\x18\x62\x68\xd9\x92\x29\x86\x26\x6f\x67\x8c\x19\x48\xe0\x61\xe9\xfc\x79\x65\x95\x12\xa0\xc0\xea\xca\xeb\x46\x41\x21\x54\x60\x31\x85\x68\x8a\xb6\x6a\x4b\xd6\xe0\x0c\xd1\xb3\xed\x73\xcd\xa0\xd9\x74\xab\x1d\xe6\x53\x03\x64\x7b\x3b\x8b\x6e\x4a\x34\xcf\x30\xd4\x96\x2a\x4b\x22\xc1\x42\x4f\xa0\xd9\xc9\xbf\x8d\x30\xe8\x71\x8a\x13\xf4\x88\xeb\x19\x46\xe3\x34\xc1\x92\x80\xe5\x1d\xc0\x3f\xd9\x59\xfc\x4d\xb2\xfe\x87\x76\xc3\xff\xc7\x8c\x96\xe6\xef\xc8\xb4\x20\xd5\x9b\x4a\xd3\x1f\xa0\xa2\x07\xe6\xfa\x0c\x7f\xa5\x9f\x62\xd9\xb7\xca\xe2\x07\xd4\x6e\xa3\xcb\x0f\x3f\xbd\x3b\x7b\x83\x8e\x2f\xcf\x02\x44\x36\x37\x64\x41\x4a\x1f\x70\x96\x45\x63\x58\x88\x72\x8c\x66\xb8\x98\xa6\xe3\x9c\x7a\x4f\xe5\x8b\x3b\x58\x74\x51\x91\x72\x27\x24\x8e\x2a\x8c\x0b\x9c\x25\x61\x11\x3d\x60\x7e\x08\x3a\x26\x6a\xf8\x2c\x87\xfd\x34\x2c\x49\xcc\x4b\x2b\x4c\xc6\xe8\x6e\x31\x99\xd0\xf7\x44\x72\x3c\x0b\x93\x22\x1a\x51\x7f\x07\x02\xf7\x0e\xc0\x74\x79\x8b\x93\xc2\x65\x3a\x10\x48\x0a\xcd\xb1\xaf\xfd\x07\xbd\xdf\xfd\xbc\x4d\x1d\x0d\x41\xc3\xb3\x9c\xe6\x52\x3c\x68\x07\x39\x03\xbe\x1d\x23\x3f\x86\x8e\x65\x77\x68\x21\x61\x94\xff\x1a\xc6\xd1\x58\xe6\xfc\x1a\x66\x51\x78\x47\x1d\xb5\xb7\xa8\xb4\xc5\x2b\x35\x8f\xb3\xed\x9e\x7e\x4a\x6b\xeb\x6a\x73\xeb\x4a\x7b\x75\xfd\x0f\xec\x5c\x37\xe9\x4f\x40\xdb\x35\x7b\x04\xb1\xfb\xc5\xc9\x43\x94\xa5\x09\x9c\xb9\xf3\xe3\x74\x9b\x77\x27\xff\x0b\xef\xff\xc0\xa8\xed\x20\xa7\x67\x92\xad\x5c\x8e\x8e\x32\xda\xe9\x57\x17\xd5\x7a\x10\x25\x51\x11\x85\x71\xf4\x17\x2e\xf5\xc1\xea\x21\xd1\xfa\xf7\x22\x2d\xf0\x98\x79\xb3\x3a\xa6\x53\x10\xa1\x18\x44\x8a\x08\x90\x23\x5d\x16\x99\xa7\x71\xbb\x8d\x4e\xcf\x4f\x94\x29\x50\xe5\x3a\xa4\x10\x49\xb8\x0f\x89\x7b\x8a\x2e\x0a\x73\xea\x19\x6a\xe8\xf5\x4a\x29\xd4\x47\xca\xaf\xf5\xde\x43\x64\x51\x7d\x92\x91\x96\x15\x47\xcb\x38\xbd\x6f\xe8\x3f\xc9\x96\xeb\xe4\xf4\xa7\x0f\xbf\xb8\xa5\x2a\x5b\x8a\x2f\x1f\x0f\x1e\x4b\x9d\xa6\xd4\xda\x99\x9e\x58\x2a\x9c\x98\x67\x0a\x51\xfe\x66\x1a\xc5\x70\xc1\xf8\x99\x72\x6b\x12\x99\x17\x2b\xc5\x9d\x4a\xe8\x86\xd4\x72\xa8\xec\x85\x5d\x94\x34\x0e\x85\x71\x14\xe6\x38\x0f\xd0\x93\x5c\xb9\xf5\xf6\xcd\x33\x1c\xd2\x1e\xe8\xe9\x70\xcb\xe1\x3a\x4e\xb5\xe7\x05\x64\xce\xaf\xd4\x4b\xdc\x70\xe4\xe2\x4e\xa4\xe0\x03\x85\xb8\x33\x17\x5a\x19\x1d\x81\xd1\x17\x2f\x2d\x18\x56\x5b\x96\xfd\x86\x79\x42\x58\x59\x43\x37\x93\x48\x37\x1a\x95\xc0\x86\xdb\xa4\x5e\x49\xa4\xdc\xa3\xa3\x96\x8c\xb2\x9b\x24\x05\xfc\x21\xe6\x5f\x1b\x1c\x26\x29\x90\xa1\x5c\x6e\xed\x34\x09\x8a\x97\xe2\x23\x39\x94\xee\x89\x62\xdd\xa9\x10\x04\x7a\x61\xfa\x67\xa8\x5d\x24\x51\xfc\x1c\xb7\x70\x01\xa4\xa3\x90\xe1\xb0\xc0\x3f\xb3\xf9\xc9\x74\xd3\x86\x98\x87\x86\x0c\xc0\x5f\x8a\x0b\xd3\x04\xb0\xd6\xa7\x75\xcd\x40\x95\x48\x8a\x76\x94\x57\x2b\xb9\x9b\x62\x15\x04\x6f\x12\x0e\x55\xcb\x05\x05\x37\x2f\xae\x8a\xbb\xf9\xa4\xbc\xe9\xf7\x45\x67\x45\x75\x7f\x98\x0f\xae\x66\x60\x7d\xa6\x4e\x64\xdb\x86\x11\x04\xa5\x08\xde\xc8\x13\x7a\x1a\xdc\x28\x9d\x47\x40\x28\xb6\x03\x83\x93\x64\xf6\xf5\xf5\xab\xb0\x71\x52\x54\x64\xc5\x63\x99\x3d\xc5\xa7\xd4\xba\xf8\xc8\x43\x4b\xea\xd3\xc3\xaa\x61\x1f\x3b\xc8\xe1\x47\x84\xb9\x3c\x01\xad\xa8\x92\xe7\xf6\x9c\xde\xba\x07\x2e\x98\x99\xce\x5a\x17\xb3\xd3\xc1\x1f\x2a\x8f\x35\x5c\xc2\xb3\x95\x16\xa9\xd6\x05\x05\x60\xdd\xa2\x00\xca\x41\xd9\xb4\x0a\x4b\xa7\x65\x97\xe9\x4d\x88\x2e\xa8\x74\x48\x8d\x35\xb3\xd1\xdc\xa2\x41\x8e\x53\x6e\x10\xd9\x24\x64\x44\xee\x15\x53\x0c\xf1\x83\x85\x30\x27\x45\xe0\xee\x3f\x51\xfb\x60\xef\x50\xa4\x28\x8c\xe3\xf4\x11\xe5\x9f\xa3\xf9\x1c\x6e\x37\x4d\xb1\xc4\x23\xb7\x8c\x7c\xe2\xc0\xc6\x22\x2a\xd0\x63\xba\x88\xc7\xe8\x0e\xa3\x10\x25\x69\x3a\x57\x79\x9e\x54\xf9\x46\x2c\x24\x86\x5c\x4f\x17\x19\x70\x67\xca\x9f\xea\x10\x46\x20\x9b\x30\x08\xd4\xe8\x26\xe6\xf2\x0c\x0f\x87\xa4\x23\xca\x4b\xfa\xaa\x41\x16\xb2\x51\xc8\x42\xfd\x8b\x05\x03\xcc\x51\xda\x76\x81\x16\x97\xa1\xb5\x3b\xe5\x83\x59\x68\xf0\xc0\x1b\x8a\x3a\x44\x02\xbc\x9d\x48\x86\x8f\x61\x91\x0f\x77\xda\x86\xe4\x17\xf6\xb0\x13\x9a\x45\x49\x34\x8b\xfe\xc2\x19\x5d\x38\xd1\x2c\x04\xc2\xe7\xdb\xce\x71\xb6\xdc\x1a\x7e\xea\xc2\x63\x96\x22\x8d\x12\x6d\x41\x6f\xb1\x42\x16\x7f\x8b\xb5\x1d\xac\xbb\xa8\x8e\x76\x18\xce\x1d\x54\xef\xd7\x39\xb7\x1a\x88\x07\xf0\x77\x9d\x63\xad\x98\xb8\x02\xff\x5a\x5a\x3b\xa4\x2f\x62\x6e\x88\x1c\x16\x96\x8c\x68\x89\x7e\xd3\xd4\x40\x25\xb1\xdf\xe3\xec\x1e\x23\xee\xe8\xb8\x0d\x65\xcd\xae\xf7\x51\xfd\x36\x29\xf5\x96\x2b\x40\xec\x3a\xf8\x6d\x02\x0f\x33\x90\xbf\xff\x40\x2c\x28\x55\xb3\x49\xcd\x16\x20\x2a\x23\x7a\x16\x7e\x2a\x1f\xef\x71\xcd\xee\x35\x1a\x38\xd4\x77\x83\x70\x22\x91\x7c\xce\x10\x05\x68\xa0\xe9\xcd\x48\x01\x61\x92\x9d\x7c\x72\x89\x2b\x4b\x56\x39\x0a\x95\xd5\xd4\x2d\xbd\x43\xd5\x6b\x07\xb4\x11\x62\x8c\x2b\xd0\xe9\xe7\x35\x0a\x71\xcb\x02\x41\x47\xaf\x92\x95\xdf\x36\x40\xf4\x82\x82\xb9\xbf\xe1\x52\x47\x53\x68\x84\xd1\x82\xd5\x6d\xca\x60\x42\x0e\x2e\x9d\xae\xb9\x58\xab\x8b\x5b\x4a\x75\xf1\xe4\x2d\x68\xe7\x5f\xbf\x22\xfa\x8a\x47\xbd\x51\x37\x6e\x4d\xd4\x5d\x9a\xd1\x44\x4f\xa4\x85\x75\x9d\xe9\xb5\xb6\x13\xb0\x95\xf2\xc6\xc1\xb6\xdb\x0a\xa3\x9d\xca\x36\xc2\xa0\x84\x0e\x68\xdf\xdc\xb5\xdb\x68\x20\x7d\x09\x87\x2c\x8d\x67\x5d\x24\x88\xbd\xa2\x78\x87\x27\x69\x86\x03\x16\x0d\x49\xc4\x27\x11\xa6\x25\xd0\x39\xcb\xc5\xc2\x49\x41\x36\x8c\xac\x41\xd4\x30\x92\x4e\x2c\xf7\xa3\x8c\x8a\x6f\xa6\x18\xcd\x17\xd9\x3c\xcd\x01\x1e\xec\x64\x6c\xd1\x8a\xc0\xd0\x51\x84\x9f\xc9\x72\x05\x88\x28\x04\x06\xc3\x06\x47\xf0\xe9\xe9\xe9\xbf\x26\x69\xba\x5a\xb5\x5a\xad\xa7\xa7\x36\x7c\x7e\x72\x35\x7b\xbe\x68\xcd\xa7\x49\x9a\x7e\xd2\x62\x06\x71\x6b\x1c\xc4\x79\xa0\xde\x8f\xb0\xf9\x78\x8c\x8a\xa9\x72\x01\x8c\x14\x9e\x67\xe9\x1c\x67\xf1\x92\x17\x85\x33\x62\xb2\xf6\xda\xee\x80\x21\xee\xbc\xfc\x2b\x3d\x32\xb2\xe8\x8a\x36\x81\xdc\x2a\xe3\x22\xec\xc9\x66\xbb\x25\xb7\xde\xb3\x0a\x17\x21\x4d\xf4\x4d\x18\xd8\x12\x99\x75\xaf\xa3\xcc\x15\x7d\xa3\x06\x14\x81\x3d\x98\x74\xd0\x67\x91\xb0\x2d\xb3\x36\x9f\xd3\x18\x54\x2e\xea\xb8\x88\x83\x95\x38\xd4\xb1\x10\x09\x8e\xf2\x4a\x97\x91\xf8\x13\xda\x4d\x47\x75\xfc\x37\x39\xd9\xe2\xb2\xf9\x9d\x58\x5a\xdc\xa3\x7c\xa0\xf6\x71\x5e\x98\xe8\x47\xb4\xfd\x7d\xc1\x4f\xa0\xa6\xc1\x55\x49\x19\xc7\x69\x82\xc2\x64\x59\x31\x3f\x20\x3b\x49\x15\x5c\x01\xca\x89\x9c\x09\x73\xdb\xe4\xb4\x16\x57\xcb\xca\x86\x5b\xe8\xf1\xff\x13\xa6\x83\x8d\x0d\x65\x1b\xbe\x2a\xd2\x28\xe8\xa3\xcf\xf2\x82\xf4\x7a\x5e\x2b\xab\xaa\x6c\xa9\x82\xd5\x5c\xbe\xe9\x2e\x28\x07\xfc\x85\x9e\x68\x5c\x27\x56\x37\xd9\x79\xf4\x6d\x73\x79\x03\x9b\xf6\xd0\xca\x34\x7c\x01\x83\xaa\x7e\x8e\x9b\x59\xb3\xd5\x6a\x55\xca\x54\x99\xc7\x41\x8e\x01\x79\xce\xe4\x55\x26\xaf\xa7\x12\x19\xc7\x3c\x2a\x3f\xf1\x1b\x6e\xbc\x83\x54\x2f\xa1\xdc\xa2\x36\x6e\xa3\xeb\xa6\x4a\x52\x7a\x9a\xa5\x59\x3a\x1b\x65\x53\x20\xc7\xd3\xac\x24\xcc\x66\x8a\xb0\xe9\xf7\x6d\x84\x79\x93\xe2\x6c\x84\x73\xf4\x09\x4a\x03\x09\x42\xc4\x82\x31\x84\xc9\x98\x75\x3c\x27\xe2\xde\x4a\x1d\x13\xdf\xd9\x44\xa0\x22\xab\x51\xb6\x28\xa6\x4b\x17\xa5\x19\xe1\x3f\x1a\xb1\x6d\x04\x35\xb2\xdd\x59\xc8\x47\x43\xd6\x85\xc5\x52\x73\x51\x4c\x71\xf6\x18\x11\xc9\x43\x2a\xc6\xb3\x79\xb1\xe4\xf0\x51\xae\x83\xd3\x1f\x95\x26\x06\xd8\xba\x88\xb0\x80\xa5\xd9\x62\x9b\x08\x0d\xb1\xe5\x01\x4e\x67\x7b\x77\x99\x20\xdc\x0b\xc4\x74\x31\x46\x19\x40\x81\xe5\x25\xc3\x7f\x83\x2d\xbb\xdc\x26\x76\x02\x5c\x55\x9f\x53\xaf\x3b\xa5\xea\xca\x2a\x8d\xe6\x92\xfa\x1f\xe2\x2a\x8a\x5d\x70\x82\x1c\x5c\x85\x8f\x4a\xb3\x8b\x35\x69\x83\xd9\x4b\x7d\xae\x83\xda\xc9\x1a\x4d\x17\xe1\x2f\x45\x16\x92\xed\x94\x63\xb3\xf3\x0a\xb9\x6d\x86\xbd\x20\x52\x9b\x0e\x86\x91\x51\x57\x77\xcf\xac\xe2\x17\x2f\x90\xc5\x04\xa9\xbb\x67\xab\x03\x28\xda\x04\x63\xb2\x63\x39\x00\x50\xef\x4c\x6b\xef\x46\xd3\x36\x85\x05\x37\xb6\xd9\xdd\x2c\x37\x89\x19\xc7\xec\x55\x43\x34\x43\x4e\x01\xaa\x39\xa0\x1d\xda\x5c\x9b\xfc\x91\xc6\x91\xef\x25\x95\x4b\x2a\x03\x83\x50\x2c\x2a\x7d\x58\x19\x8d\xfa\xae\x71\xa1\xab\xa7\xe4\xc7\x27\xa5\xd4\x27\x79\x2f\x99\xc2\x30\x5e\x93\xc8\x64\x67\xd6\x7a\x1d\x95\x0c\x3c\xcf\xfa\x2c\xf8\x59\x69\x8a\xea\x66\x20\x76\x8d\xb1\x6a\xf2\x19\x6e\x81\xff\x8c\xa0\x4c\x12\x33\x5c\xd4\x0d\xc6\xb5\xcc\xc6\x77\x69\xfa\x39\x47\x8b\xb9\xa1\xda\x13\xf8\x4f\x5c\x89\xe7\x52\x9d\x9b\xd0\xc8\x94\x05\x33\x5a\x2e\xb4\x77\xa2\xf0\x33\x7a\xd2\xe7\xc3\x21\xc7\xe8\xd1\x7a\xbf\x35\xf6\x9a\xca\xe8\xb3\xdc\x31\xd2\xc3\xd3\x06\xbd\x88\x51\x57\x35\x8f\x37\xfc\xc4\x8a\x1e\xa3\xd6\x47\xdc\x03\xd3\xc2\xa3\x8a\x87\xe6\xf7\xa4\xa9\x8d\x9a\x97\x40\x95\x32\x1f\x9a\x14\xb4\x11\x4b\x69\x66\xb5\xb2\x29\x88\xc4\x4e\xd4\xd7\xd0\xc6\x42\x09\xab\xcf\xf5\x77\x11\xf3\x22\xa6\x6a\x09\x56\x59\xfc\x61\x46\x4a\x05\x20\x44\x31\x34\xc0\xad\xdc\x37\xde\x09\xd5\x9f\x6e\x1e\xf5\xdd\x30\x35\xed\x12\x0c\x00\x65\xed\xdc\xf6\x6a\x3b\x87\xbb\xa1\x6e\x05\x75\x87\x27\x38\xf5\xbf\xb9\xa5\xe3\x9b\x35\x16\xdd\xa2\xa4\x1e\xf7\xa5\x37\x04\x54\xfa\xda\x04\x61\xa6\x18\xba\x0f\x68\xa2\x40\xcd\x5f\xb7\x9d\xa3\xd3\xee\xbb\x8c\x2b\x80\x54\x4b\x8f\x2b\x36\x70\x0a\xc3\x6f\xd8\xf7\x93\xb6\x49\xbb\x05\x11\x3c\x52\xd6\x30\xde\x50\x44\xc7\x7a\x89\xf1\xad\x23\xa1\x53\x5f\x84\x84\xb2\x0e\x4c\x48\xf4\xa9\xd2\x88\xb0\x31\x30\x05\x14\x83\x28\x4b\xa3\xcd\xa3\x74\x12\x16\x5b\xcc\xc0\x75\x43\x34\x0e\x8b\x70\x10\x8d\xad\xe3\x43\xe4\x91\x7d\x00\x80\xf2\xd1\xb8\x24\xe3\x09\x36\x65\x00\x48\xf3\xd6\xf9\xe0\xaf\x13\xda\xd4\xf5\x3b\x1a\xbb\x88\x7e\x57\xc9\x66\xc5\xb1\xee\x9f\x51\x82\xaa\xff\xee\x16\x72\xfa\x46\x37\x8c\x8d\x71\x1e\xdd\x27\xd4\xc7\x07\x2d\x72\x88\xb6\xc1\xf6\x12\x33\x88\x04\xc4\x43\x26\xd1\x20\xd1\xd4\x59\xc8\xbe\x61\x0c\x95\x10\xd9\x61\x9c\x26\xf7\x74\x12\x44\x85\x58\x2b\xa9\xbf\x61\x16\x42\xa8\x94\x62\x1a\x26\x4c\x72\xc1\xce\xa5\x40\xd1\x6c\x86\xc7\x11\x04\x1e\x94\xeb\x82\x42\xa2\x92\x2b\x8c\xe9\x44\xf4\x37\xd6\x89\x72\x49\x50\x41\x99\x1b\xa3\xba\x39\xa1\xa2\x4c\x09\xa2\x56\xa7\xdf\xe5\x3b\x4e\x0a\x1e\xcd\x4b\xbf\xca\xcd\xac\xd4\x62\xb3\x94\xc6\x3b\xdc\x19\x6d\xfd\x4a\xd9\xa8\x3f\xad\xea\xcd\xea\xbb\x39\x55\x5e\xa8\xda\x91\x59\xa3\x3e\x0d\xf3\x29\x91\xd0\x79\xdd\x45\x0c\x63\x95\x0e\x27\x7b\xfd\xcf\x58\x59\xdb\x0a\x30\x4a\x54\x4e\xf0\x90\x81\xa3\x07\x9c\xc1\xce\x85\x68\x70\xb4\xd0\x27\x43\xd5\x30\x38\x6a\xd3\xdd\x8b\xd2\xa0\x94\xf7\x29\x3c\x10\x9e\x7d\x6e\xff\x33\x2a\xe0\x2f\xf3\xac\xba\xd7\x09\xe4\xb3\xcd\x5a\x45\x37\x55\xd7\xa7\x2f\x73\xf3\x06\x88\x94\x5e\x90\x69\xef\x02\xeb\xfa\x3f\xeb\x49\xa5\x5a\xc4\x34\xc6\x50\x2c\x9f\x9a\x62\xc8\x05\x15\xce\x42\x38\x50\x99\x67\xf8\x41\x84\x53\x62\x6a\x91\xd8\xd5\x40\xc0\x38\x38\x42\x06\xa3\x09\xbc\x7b\x9c\x66\x61\xb6\x24\x3b\x64\xf0\xed\x23\x5b\x9e\x69\x1a\x8f\xa5\xda\x2e\x45\x0c\xeb\x66\x75\xd4\x41\x3b\x43\xa8\x31\xc5\x4c\xca\x31\x37\xd5\x7f\x46\x39\x1e\x80\xe8\x7e\x11\x8d\xd7\x4d\x01\x1e\x3a\xa4\x92\x27\x18\x31\x8b\xf0\xb3\xdc\xb7\x84\x9c\x7a\xbb\x45\x34\xc3\x34\xf6\x0c\xd9\xdd\x8c\xd2\xe4\x01\x67\x05\x98\xb6\x98\x2d\x8a\xbd\x07\xb0\x1b\x8e\x46\x98\x6a\x98\x1c\x89\xac\x51\x52\xb3\x1c\x33\x07\xda\xaf\x79\x2d\x42\x6d\xcf\xa8\x1e\x52\x21\x3e\xcd\x99\xc7\x3a\xa9\xec\xda\x01\xed\xb7\x8a\x56\xa8\xb1\x5a\x88\xa9\xf7\xf5\xfe\xfe\x39\x00\x33\xf0\xb6\x5a\x1b\x77\x0e\x4c\x33\xe1\x4f\x55\x24\x0f\xe9\x08\xd8\xdd\x1c\xe8\x74\x9e\xa3\x74\x42\x15\x7f\x0a\x5c\xcf\xe5\x72\x4b\x5f\x50\x49\x3f\xb3\x85\x99\x1d\x21\x88\x91\x16\x7b\x56\xbd\xb8\xbe\xa9\xb0\x6c\xcb\x4a\x3b\x18\xde\x4c\x88\x53\x4e\xcf\x2b\x5c\xf4\x49\x0b\x3f\x06\xdb\x9b\x51\x18\xc7\x78\x4c\x91\xa8\x14\x35\xef\x5e\x5c\x47\x7f\x61\x76\x0b\x72\xfd\x0e\x65\x5a\x75\xa6\x30\xad\x3e\x4e\x98\x6a\xaf\x89\x28\x36\x7b\xf5\x46\x2c\x4d\x2a\xb5\xc6\xea\x71\xd8\xa8\x2b\xc1\x2c\xeb\x2e\xab\x80\x07\x3a\xb0\x0b\x57\x47\x8d\x7f\xf9\x5a\x8d\x86\x29\x8e\x03\x04\xc3\x4e\x65\x3a\x73\xe3\x87\xd3\x05\xb0\x93\x05\x68\x6a\x3d\x4b\x30\x0b\x6b\x50\x0a\x16\xdb\xc9\x42\xe9\xce\xed\xff\x41\x0c\x6f\x08\xff\x28\xa7\x17\x72\xc1\xfd\x48\xe7\x44\x7a\x3b\xb7\x48\x11\xfe\x12\xe5\x85\x60\xfa\x9c\x08\x2e\x93\x35\x27\x61\x1c\xdf\x91\xdd\x19\xe3\x60\x16\x03\x54\xe3\x54\x85\x1e\xdb\xb0\x6b\x99\xd3\xb6\xe6\x2b\xc9\x25\x0a\x27\xc1\xe6\x57\x9c\x14\xd9\x59\xa2\x7a\x30\xc5\xed\xff\xff\x8d\x43\xa9\xc4\x71\xfd\xb6\x71\xd4\xb5\x98\x38\xfa\x8c\xd1\xa7\xa7\x27\x7a\xee\x2e\x96\x69\x19\x25\x95\xde\xcb\x7e\xc4\x2c\xec\x32\x19\x77\x04\x91\x5b\x95\x55\xec\x71\x8a\x61\x6f\x11\x15\x0a\x02\xf1\x12\x50\x9a\xc1\x1e\xa5\x98\x56\xec\x89\x78\x2b\xf1\x2c\x2a\x72\x04\x6f\xb7\xc3\x36\x09\x76\x2a\x32\xc6\x23\xf7\x1d\x57\xe5\xeb\x28\x4c\xc0\x1b\xee\x21\x85\x80\xae\x77\x4b\x78\x4f\x87\x39\xd4\xa1\x4f\xea\x5d\xba\x4f\xaa\xdb\xc0\x27\xf3\x96\xdd\x27\x34\x89\xc3\xfb\xdc\xec\x99\xca\xa1\x62\x90\xd7\x9b\x08\xfe\xb6\x95\xa7\xbc\x81\x52\x15\xff\xf5\x0c\xdf\x11\x8c\x5e\x02\x3f\x57\xbc\xd4\xcb\xd2\x58\xdd\x3e\x33\xe1\x5e\x17\x46\x05\xb6\x64\x7d\x8b\x58\x3e\x2f\xb5\x22\x49\x93\xea\x2a\xbf\xc1\xcc\xaa\x12\x22\xc1\x5f\x0a\xee\x64\x2e\x8e\x5f\xc4\x21\x9a\xda\x5a\xf5\x50\xa2\x4e\x54\x20\xa5\xd1\x4d\xf4\x04\x6e\x3f\x12\xdb\x0e\xaa\xa3\x7e\x79\xb5\xa8\x57\x88\x84\x7a\xb3\x87\x56\xf5\xea\x63\xbb\x3a\x3b\x22\xb3\x55\x02\x69\x82\x34\x3b\xa8\xde\xb3\x82\xb1\xed\xaf\x25\xab\x6c\xcb\x2b\x01\x95\xac\x79\x25\x08\xa5\xfd\x65\xa9\xc6\x5c\x8a\x37\xcb\xb4\x51\xd9\xec\x21\xa0\xca\x82\x8b\xf9\xbb\x6d\xbd\x08\xcd\xb9\x12\x16\xca\x8a\xb8\xda\x15\x0a\x6c\xcc\xf0\x27\x63\x4a\x57\xe9\x61\xb2\x21\xe4\x97\x6c\x04\xba\x13\x0a\x98\xd6\xfd\xca\xd9\xae\xfb\x4e\x94\x58\x9b\xbb\xf5\xc9\xe9\xc4\x52\xea\x4d\x17\x39\xfa\x95\x24\xc7\x35\xcf\xc1\x2a\x5c\x04\xd7\x44\xfd\xd0\x03\x27\x98\x3e\x7f\x61\x11\x5a\x1c\x1a\xad\x02\x2b\xc7\xf1\x04\xf1\x37\x7f\x2a\x56\x4e\x87\x00\xb5\x34\x3a\xad\xf3\x04\xb2\xb9\x11\x28\x91\xbe\xb6\xb6\x1b\xd3\xc5\x73\xdd\xfa\x68\x42\x68\x9a\x3c\xdf\xf2\x12\x8e\x80\x97\xe4\xb8\x6a\xcf\x71\x40\x9b\x72\xf4\x89\x64\x0e\x3e\xe3\xe5\x90\xdf\x0d\xfc\x54\xa5\xd4\x13\x2c\xa0\xda\xd8\x14\x79\xb5\x8f\x0a\x1b\x7d\xc6\x4b\x9d\x8b\x1e\xd4\x57\x80\x54\x77\x80\x6f\xb5\x22\x99\x81\xb2\xca\xae\x05\x68\x43\x86\x76\xc2\x2f\xac\x50\xf4\x06\xdd\x67\xbc\xa4\x17\xe8\xb8\xff\x3c\xa9\x09\x9c\x81\xed\xae\xb2\xec\xe1\xc4\x92\x4b\x50\x95\xb8\x04\x78\x71\x5f\xcf\xac\x8d\x12\x49\xad\xce\x12\xb1\x02\x7e\xcb\x08\xed\xe5\x5b\x88\x7a\x9c\x59\x7e\x13\x69\xc3\x75\x35\x7d\xb4\x94\x60\xd7\xaa\xd3\x04\x4f\x76\x29\x80\x2b\x9a\x51\xe5\xcd\xcb\x0b\xac\xf5\xdc\x1d\xb1\x8b\x63\x22\x7a\xac\x1a\xfd\x6f\x24\x9f\x0c\xb0\x44\xc0\xed\x19\x31\xf6\x4a\xde\xd4\xe2\x6e\x05\xe2\x93\x24\x0e\x47\x78\x9a\xc6\x63\x9c\xd1\x2b\xaa\x60\xfa\xa1\x62\x6a\x94\x26\x93\x38\x1a\x15\xec\x3e\x2a\xce\x0b\x3c\x36\x5d\xbd\xd9\x55\xfe\x64\x8c\xbf\xc8\x08\xa8\x46\xa5\xac\xb3\x7a\x07\x5b\xbc\x0c\xfc\x35\x33\xd9\x3d\xbb\x3a\xc3\x41\x16\x31\x03\xce\x5a\xd5\x00\x80\x86\xf4\x85\x21\x7a\x05\x95\xc7\x04\x66\x23\x24\x6e\x23\xaa\xe5\xab\xcc\xbf\xa6\x1d\xa4\xd2\xd0\xb2\x8d\x50\x15\x13\x9b\x9a\x64\xfa\x65\x93\x8c\x08\xac\x40\x04\x6d\x92\xa6\xf3\xb2\xc7\xbd\x60\x46\xdb\xd5\x2b\x3d\xdc\xb0\x1a\x53\x4a\x84\x64\xa7\xd4\x55\x9c\xbe\xcd\xb0\xc7\xb0\xc2\xd1\x7e\x5f\x8a\x85\x4e\x19\x30\x57\x19\xa0\x4d\xce\xeb\xdc\x19\x61\x7d\x10\x21\x1e\xc6\x98\xc5\x3a\xb1\x87\x2e\x86\x60\xd5\x44\x79\xd3\xda\xa6\x7a\xb7\x77\xd4\x08\x2c\x22\x56\x45\x25\x38\x11\x2f\x4a\x80\x63\x5b\x84\x63\x5e\x79\xbe\xe9\x11\x12\x3a\x60\xdc\x84\x08\x6b\xa2\x56\x6d\xa5\x93\xac\x69\x47\xd3\x8b\xe5\xd3\x68\x52\x34\x2c\x7e\xb9\x6a\x75\xbf\x45\xc5\x94\x86\xa9\xf8\x86\x7a\x35\x2e\xe7\xca\xbd\x2d\xf6\x8e\xc1\xe1\x8b\x1c\x5f\xf1\xad\x40\x79\x93\xad\xca\x75\xae\xe6\x48\x41\x6e\x15\xe3\x0a\xc2\x4a\x9d\x4b\x84\xca\x11\xb7\x8b\x2a\x02\x9c\x19\xf9\xf6\x70\x39\xfa\x15\x25\xd9\xd8\x35\x27\x40\xea\x06\x4d\x3d\xa5\x2c\xb0\xf9\x78\xa6\x7a\x17\x96\xa1\xc6\x8f\x3c\x2c\x01\x2d\xd0\x34\xae\x3e\x92\xc4\x9e\xbd\xca\xca\xba\x58\x8c\x7a\xb9\x15\x8a\x92\x51\xb6\xc9\x9f\x30\x67\xfa\x3f\x1f\x12\x82\xd2\x58\xc9\x2b\xfa\x00\x25\xcd\x76\x43\x62\xcf\x60\x24\x79\x50\xae\x3a\xa8\x32\x4b\xd0\x9a\xf6\x4b\x4d\x41\x8b\xee\x4d\x5a\xd8\x47\xbc\x3c\xdd\x97\xd1\x1b\x23\xbc\x49\x0c\x9a\xac\x63\x6c\xe1\x9a\xa5\xe3\x68\x12\x31\xf5\x9e\xfb\xc5\x30\x7f\x18\x3a\xdd\xf9\x31\x45\x0b\xdd\x4c\xb3\x74\x71\x3f\xd5\x1a\xae\xa8\x5f\xed\x3f\xa0\x40\x9b\x3f\xc5\x44\xaa\x34\x82\xf4\x57\xec\x46\x0d\x41\xf2\x77\xc6\xa2\x9a\xcc\xa2\x26\xf5\x58\xed\x73\x34\x7f\xa3\x0c\x9c\x4e\x6b\xf5\xd2\x7a\x15\xab\x58\x58\x57\x9d\x15\xfc\xa1\x73\x71\xcd\x5d\xc6\x1f\x60\xf8\xaa\xcf\x48\xc5\xdd\xf3\x9d\x1d\xe9\x82\xda\xd0\xb3\xd0\x8f\xe6\xbd\x42\x11\x99\xd2\xcc\xa0\x42\x1c\x7e\xcb\x5b\x6b\x1c\x4f\xb3\xf4\x32\x56\x15\xa4\x31\xe9\x18\x07\x56\xba\x7e\x32\x66\xb4\xd0\x2a\x9d\x1b\x6a\x3b\x80\x2a\x4f\x8d\xb1\xf9\x6f\x59\x38\x08\xa4\x7e\x21\xdc\x7e\xb4\x22\x1a\xbd\xbb\x5b\x5a\x0d\xa4\x00\x31\x65\x57\xf1\x77\xfb\x34\x28\xf7\x92\xad\x80\xbb\xc8\x1b\xfe\xe7\xfa\xba\xb1\x47\xea\x91\xb0\x7e\xa8\x5c\x8a\x75\x51\x77\xea\x34\x7e\x86\xc0\x2e\xde\xef\x69\xdf\xde\xb6\xef\x5d\x54\xbf\xbd\xbd\xbd\xad\x37\x2d\xf9\x0e\xcb\x76\xac\xb9\xb7\x09\xcb\x4e\xec\xd9\x19\xcb\xce\xe8\x5d\x33\xa7\xae\x73\x9a\x62\xc2\xdb\xd6\xe8\x6d\x79\x2e\xa9\x74\x4b\x43\x41\x60\x5c\xa7\x83\xdb\x73\xca\xd1\xc8\xb7\x59\x01\x75\xaa\x9a\xa6\x86\x80\xbf\x59\x25\xd2\x69\xe8\x3d\xa5\x3e\x99\x25\xed\x68\x81\x72\xef\x84\x5f\x20\x66\xad\x56\x94\x16\x59\xd2\x72\xd4\x12\xa8\xb7\x2f\xcb\xfe\x02\x40\xc4\x35\xb8\x39\x7b\x59\x82\x3e\x61\x4e\x6f\x76\x44\x4b\x96\x8e\x5c\xbe\xde\x09\x6f\x94\xcd\xc3\x3c\x67\x4f\xbb\x67\x59\xb8\x94\x27\xe5\x29\x9a\x44\x71\x8c\xa2\x44\x8e\xb5\x3d\x16\x9a\x36\x54\x86\x93\x39\x0f\x70\x32\x18\xba\xb2\x01\xf4\x27\xd9\x7f\xe7\xea\x73\x61\xe5\x73\x05\x31\x66\xdc\x72\x20\x37\xf6\x81\xc5\xfb\x5a\x91\x5d\xfa\x43\x16\x65\x7b\x81\xf1\x6e\x86\xc5\x6a\xd1\x6e\xa3\xe3\x87\x34\x1a\x93\x9e\x83\x7f\xc0\x24\x01\x32\x72\xd4\xd1\x04\x25\x38\x02\xd3\x3e\x21\x63\x8e\xf9\xb3\x72\x70\x35\x3e\x97\x58\x78\x88\x84\x22\x45\xe3\x14\x85\x68\x34\xc5\xa3\xcf\x34\xcc\xb0\x1a\x38\x6f\x92\x34\x3f\x29\xd2\x88\x37\xf0\xeb\xd7\x72\x34\x2d\x76\x4f\xd8\xf2\x1c\xc8\xb7\xd8\xc4\x74\x32\x58\x76\x6a\x5a\x58\x38\xa8\xd1\xd2\x92\x6f\xac\x50\x0e\xcc\xa6\x0a\xf5\x21\x67\xe5\x60\xd4\xcb\xef\x2d\xe8\xb0\x93\x24\x50\x36\x10\xeb\xc2\xc3\x76\xc8\x36\x4e\xf0\xb0\xfd\xde\xf1\x3a\x63\x94\xed\x3d\x34\x75\xc3\xb7\x95\xd5\x0b\xd1\x99\xa0\xdc\x3c\xd0\x38\x5a\x82\xf1\xf9\xb3\x09\xb2\xfa\x16\xfd\xa6\xa6\xe8\x74\xe4\xf5\x05\x10\x2f\x4b\xd4\xce\x24\x0f\xdd\x89\x0d\x9d\xca\x61\x80\x5e\xd1\xb2\xb4\x83\xdb\x16\x14\x76\xbb\x40\x7c\x59\x4c\x74\x26\x79\x4d\x03\xb2\x8e\x93\xe4\x06\x15\x66\x64\xcd\xd4\xfc\x44\x9f\xff\xa3\x65\xb5\x16\xaf\x4a\x1a\x6d\xc9\x5c\xcc\x44\xb0\x16\xc9\x2d\xc3\x39\xce\x1e\xf0\xf8\xb7\x34\x1b\x13\x71\xd7\x00\x18\xe7\x2e\xc3\xe1\x67\xaa\x35\x90\x8d\xd5\x43\x98\xf1\x73\x79\x07\x8d\xc2\x1c\xa3\x49\x94\x84\x31\x44\x06\xa5\xfe\x16\x69\x34\x56\x21\x8a\xd1\x14\x64\x48\xfe\x18\x91\x4f\x88\x2f\xa9\xe4\xb3\x77\x91\xe4\xfb\x97\x05\x8d\x00\x08\xd6\x02\x06\x34\xc6\x93\x70\x11\x17\xf4\xad\xc9\x2c\x7d\x54\x73\x62\x5c\x80\x53\x67\x91\x2d\x95\xe4\x54\xd5\x8f\xe8\xd9\x8e\xcc\x0d\xef\xf2\x22\x0b\x47\xf4\xb9\x67\x14\x25\x05\xca\xa7\x69\x56\x48\x80\x3b\xfa\x18\x38\xc2\x5f\xe6\x69\x06\x6e\x42\x38\x9b\x40\x2c\xc2\x22\x2c\xa2\x91\x02\xb8\x2c\x30\xc2\x5f\x0a\xb8\x2b\x07\x2e\xa1\xf9\x62\x8e\x55\x02\x4d\x89\x22\x40\x08\x84\x58\xd0\xb9\x7c\x99\x8c\xa6\x59\x9a\x44\x7f\x61\x95\x4c\x10\xae\x6e\x12\xa7\xf0\x56\xfe\xe8\x73\x78\x8f\x69\x57\x73\x8d\x54\x79\x81\xee\x53\xb0\x18\x46\x0f\xf0\x36\x5f\x16\x26\x79\x84\x93\x42\xa5\xc8\xdd\xe2\xfe\x1e\x67\x08\x6e\x96\xd1\xd5\x73\x9e\xa5\x05\x1e\x81\x1b\x61\x1a\x87\x85\x36\x00\xe3\x74\x01\xcf\x5d\xcf\xa0\xab\xf3\xc5\x5d\x1c\x8d\x50\x8c\x0b\xb4\x8c\x70\x3c\x76\x6a\x08\x35\xe1\x3a\x69\x01\xcf\x1f\x0a\x66\xe1\xa6\x3e\xce\x2c\x96\x38\x74\x57\xa7\xd7\xa7\x57\xbf\x9e\x9e\x7c\xfc\xed\xe2\xea\xe4\x1a\xf5\x79\xc0\xb0\xf2\x03\x5c\x92\xed\x2a\x8d\x56\x5a\x7d\x03\xad\xcc\x20\x1a\xaa\x76\x87\x55\x45\x64\xc1\xb5\x61\xf1\xaa\x1e\xf9\x8f\x26\x8d\x67\x1b\xbb\xc6\x4c\x1f\x2f\x5e\xa0\xf6\x1f\x83\x70\xf7\xaf\xe3\xdd\xff\xf5\xf1\xf9\x70\xd0\xd9\x3d\x12\x3f\xaa\x62\xfe\x95\x5e\xd4\x5d\xd5\x90\xe5\x11\x5d\xf6\x5e\xbb\xe5\xd1\x5b\x17\xad\x7d\xe4\xb6\xa9\x3f\xb1\x3e\xcf\x30\x23\x64\xf9\x2d\x6f\xc3\x0a\x5f\xf6\x09\x7e\x66\xf1\x09\x96\x61\x99\x6d\xef\x90\xd3\x50\xf4\xb3\x45\x5e\x80\xf2\x26\xaf\x7d\x16\xa9\x0a\xcf\x9a\xd4\x82\xd8\x8e\x4c\xcb\x93\x81\xf8\x9a\x62\x50\x2b\xa3\xd0\xb1\x45\x9f\x39\xa6\x13\x69\xc0\xbb\xc2\xdb\x59\x11\xda\x7c\xc5\xb8\x39\x84\xb7\xf7\x54\x42\x85\x59\x8e\x55\x3f\x65\x78\x9e\x5b\x8b\x95\x67\x74\xfa\x4d\xf9\x45\xbc\x30\xd7\xc2\xad\xc9\x0d\xbd\x5e\xb2\x3c\x6a\x0a\x8e\x8a\xd0\x6d\x2b\x7d\x5c\xff\x67\x50\x2d\x83\xca\xc3\x7b\x92\x34\xb1\xba\x70\xba\x72\x1c\xdb\x8d\xfe\x77\x1a\x7f\x76\x70\x88\x67\xf3\x38\x2c\xf0\xf5\x1c\x8f\xca\x78\xbe\x99\x1b\x5c\xb4\x48\xc6\x78\x12\x25\x78\xec\x02\x0d\x58\x55\x8c\xd9\x14\xd4\xbc\xe2\x86\xda\x02\x39\x12\xed\x36\xba\x61\x19\x28\xca\x51\x9a\xc4\x4b\x19\x22\x35\x4d\xd0\x24\xca\x72\x78\x38\x82\x79\x04\x8d\xa6\x78\x4c\x8f\x83\xa9\x3f\xc0\x3c\x8d\x12\xf0\x3a\x36\x82\xad\x34\x84\x37\x81\x71\xcc\x07\xe3\xcb\x6b\x90\x32\x51\xd4\xd9\x97\xa3\x65\x11\x8e\x1c\x4c\x35\x51\x96\x6a\x62\xc2\x73\xd5\xab\xd9\x5e\x1c\x67\x8e\xbf\xad\x3f\x73\x75\x32\xfd\xfa\x9e\xc5\x9e\xe5\x64\x52\xb6\x91\x1a\xe5\x64\x80\xda\xff\x26\xb3\x21\x1c\x8f\xd1\x63\x58\xb0\xcb\xcd\x94\x03\x93\x22\x8c\x12\xd8\xff\xf3\xde\x95\x9f\xe0\x37\x5f\xeb\x2f\xdd\x4a\x76\xe5\x5e\x51\x75\x97\xd0\x9a\xac\xfb\x08\xb8\xfa\xe6\x51\x8b\x68\x59\x7e\x8f\x35\x72\xd1\x24\xa1\x2f\x39\x98\x87\xdc\xfc\xc0\x23\x0b\xe7\x8a\x19\x43\x9e\xfc\x29\x87\xa4\xd1\xa4\x61\x62\xb0\x31\xe1\xaf\xef\xc5\xa1\x8d\xa8\x54\xd9\x11\x88\x77\xec\xf5\x9a\xad\x58\x75\x90\x12\x92\xa7\xf2\xf6\xb1\xba\x1f\xba\x00\xd0\x1a\xa9\x6d\x6d\x36\x55\xcd\x55\x76\x83\xda\xe2\xc4\xc8\x1c\x36\x33\x9f\x97\x23\xdb\x4d\x13\x56\x44\xa2\xe3\xf1\x47\xb7\x9d\x68\x6b\xa5\xac\xaa\x86\x28\xdc\x4d\xa7\x95\xe0\x60\x55\xcf\x28\xcf\x33\x1e\x40\x51\x26\x70\x4f\x1a\x57\x93\xd2\x7c\x1e\xc3\xb4\x04\xfb\x4f\x99\x3e\xa2\x37\x9c\x3d\x5c\xf4\x5c\xbb\x82\x0d\x22\x3b\xbb\x27\x9d\x39\xce\xb2\x70\x29\x63\x46\x57\x3c\x7d\xe1\x37\xbf\x1f\xbd\x74\x82\x4d\xf4\x98\x5a\x83\x12\x5d\x78\x6c\x46\xf2\x57\x58\xc6\x20\x88\xa8\x41\x0a\xdb\xbc\x34\x27\xe5\x7f\xa0\xf9\x25\x1c\x5a\x8b\x4b\x6d\xa4\x5c\xa9\x5a\xb6\x85\xc5\xdf\xe9\x51\x90\x2a\x9f\x2e\xc6\x10\xdc\xda\x29\xea\x15\x9c\x23\x39\x46\xed\xb3\x6e\x9c\x7b\xe2\xe0\x41\xb9\x5c\x60\x60\xa0\xd7\x27\xc5\x5c\x91\xaf\x0a\xc2\x91\xb2\x58\x33\xd5\x73\x93\xf5\x6a\xcf\x0d\xb5\x52\x02\x0a\xd5\xab\x0c\x8d\x20\x58\x64\x92\x16\xe8\x0e\x53\x2b\xac\xd8\x60\x4b\x71\x26\x9c\xf1\xc4\xb6\x94\x87\x65\x2b\xed\x06\x18\x6c\x79\x7c\x0d\xa4\xa8\xf1\xac\xac\x70\x7d\xef\xfe\x88\xd5\x18\x7c\x9a\xb3\x45\x92\xc0\x6d\xc6\x44\xdc\x9a\x01\x3d\x61\x96\x8e\xb1\xd1\xe9\x27\x69\xb4\x80\x51\x11\x07\xc4\xe5\x36\x4b\xe6\x78\x52\x46\xee\x99\x3a\x4c\x2b\x8b\x49\x43\x41\x5b\x49\x2b\x50\x6e\x0c\x6d\x99\x8b\xb9\x92\xcc\xe7\x19\x44\x5b\xf8\x7f\x03\x00\x00\xff\xff\x53\x97\xf3\xcb\x67\x00\x01\x00") func webUiStaticVendorJsHandlebarsJsBytes() ([]byte, error) { return bindataRead( @@ -678,12 +699,12 @@ func webUiStaticVendorJsHandlebarsJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/js/handlebars.js", size: 65639, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/js/handlebars.js", size: 65639, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorJsJqueryHotkeysJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\x7f\x6f\xdb\x46\x12\xfd\x5b\xfa\x14\x13\x5e\x2e\x91\x6c\x99\x12\x25\x27\xfe\x15\xe7\x2e\x71\x80\x4b\xae\x69\x9c\x36\x46\x80\xc2\x71\xd3\x15\xb9\x14\x69\x53\x24\xb1\xbb\x8c\xaa\xc6\xee\x67\xef\xbc\x21\x29\x59\x8e\x53\xa0\x80\x01\xbd\x25\x77\xde\xbc\xd9\x99\x9d\xa1\x87\x5b\x5d\xda\xa2\xcb\x9f\x2a\x6d\x96\xf4\xba\x70\x57\x7a\x69\xe9\x7d\x56\xcd\xd2\x1c\x2f\x4e\x8a\x72\x69\xd2\x59\xe2\x68\x3c\x0a\x46\x03\xfa\x7f\x91\xe4\xf4\xb3\xb6\xe9\x0c\x6f\x5f\x55\x2a\xa3\x2c\x0d\x75\x6e\x75\x44\x55\x1e\x69\x43\x2e\xd1\xf4\xe3\x9b\x33\x2a\x0c\xfd\xef\xfd\x5b\xfa\xa8\x8d\x4d\x8b\x9c\xc6\xed\x3e\xeb\xb3\x25\x8c\x5f\x2a\x31\x2a\xf9\x25\x6c\x4a\xf1\x49\xd3\x25\x9d\xfd\x51\xb1\x96\x97\xca\xd0\x2f\x45\x98\xa8\xe5\x21\x76\x27\xce\x95\x87\xc3\xe1\x2c\x75\x49\x35\xf5\xc3\x62\x3e\x74\xd8\x36\x5d\x0e\x93\x5a\x74\xc3\x7a\xca\x6a\xd3\x9c\x65\xa5\x91\x56\xcc\x26\xc6\x2f\xd3\x3c\x5f\xd2\x47\x7a\x31\x68\x79\x16\x8b\x85\x5f\x94\x3a\xbf\xb4\xc2\x65\x43\x93\x96\xce\x0e\xf5\x17\x9d\xf3\x0f\xf3\x4d\x0b\x65\xa2\xcf\x36\x29\x8c\x0b\x2b\x7e\xd4\xdd\x1a\x76\xbb\xbd\xb8\xca\x43\xc7\xe1\xf4\xea\x03\xeb\x7f\xed\x76\xba\x9d\x1a\xfb\x8d\x0e\x3a\x26\x7e\xda\xf9\x52\xc7\x7d\x48\xde\xc8\xdf\xf7\x06\x5d\x7e\x64\x4b\x1d\xa6\x2a\xfb\x81\x37\x1d\xca\x9e\xce\x3e\xbf\x9e\xaa\xf0\xca\x96\x2a\xd4\xde\x80\x0e\x78\xed\xd4\x94\x51\x30\x61\x68\xb4\xab\x4c\x8e\xd5\x53\x5e\xd9\x24\x8d\x1d\x16\x7b\xbc\x08\x9d\xc9\x80\xc1\xa0\x32\x79\x0c\xe3\x52\x55\x96\x89\xc0\x3d\x1e\x61\x9b\x2a\x6d\x56\x84\x57\xfc\x7e\x0c\x33\x6d\x43\x86\x93\x31\xe8\x1a\x9f\x93\x89\xd8\xcd\x74\x55\x62\xb5\xdb\xac\xa2\x62\x01\xcf\x93\x27\xb0\xca\x23\x40\x88\x48\x8a\x79\xc3\x3f\x01\x5f\xa6\x45\xd2\x04\x32\x6a\x7b\xa8\x90\x82\xe1\xc5\x2e\x24\x34\x44\xbb\x20\x4a\x39\xff\x46\xde\x80\x2b\xd2\x08\x01\x5c\x07\x58\x8e\x70\x00\x20\x0d\x00\xc0\x38\x06\x00\xe1\x04\xf1\x8d\xc0\xb6\x2b\x28\x60\xf4\x44\x10\x22\x79\x2a\x08\x61\xec\xd5\xd2\x82\x11\xa2\xd8\x97\xc7\x70\x7b\x20\x08\x3e\xb6\x04\xc1\xc9\xb6\x20\x90\xef\x00\x05\x20\xf7\x05\x05\xc4\x70\xd8\x28\x0b\x02\x78\x88\x03\x79\x03\x17\xf1\x58\x20\x1c\xc4\x22\x2b\x80\x87\x58\x74\x49\x9a\x62\x11\x26\x49\x8a\x45\x99\xe4\x28\xde\x13\x08\x7f\xf1\x7e\xcb\x2d\x29\x8a\x45\xdd\x38\x10\x37\x23\xc1\xb5\x4b\xf1\x39\x16\x9f\x81\x38\xdd\x85\xd3\xbc\x9a\x37\x09\x0d\xe4\x48\xb9\x72\x8b\x4c\x4a\xe1\x20\x68\x74\x8f\xc7\xd8\x38\xd7\x4e\x79\xec\xe6\x66\x80\x1a\xed\x48\xf5\xbc\xab\xe6\x6d\xe9\x79\xbf\x79\xbc\xe9\x4f\xde\xce\xe7\xcd\xe8\x01\xd0\x18\xe8\xbf\x40\x13\xa0\x7f\x01\xed\x02\x3d\x04\x7a\x02\xf4\x6f\xa0\xa7\x40\xbf\x02\xed\x01\x3d\x6a\x02\xe2\x23\x6f\xce\x98\x8f\x9c\x51\x0f\x68\x04\xd4\x07\xda\x01\xfa\x0c\x74\xec\x35\x19\xf0\x8e\x80\xf8\x8f\xe1\x63\xfc\x7e\xf2\x00\x07\x80\xcf\x5a\x56\x1f\xab\xe7\xbc\x42\x78\x0c\xff\x23\xf0\xd3\x27\xe0\x6b\x09\xb1\xdb\xb9\x39\xe2\x1b\xd6\xde\x4e\xe2\x7b\xf8\x5a\xe5\x51\xa6\x4d\x8f\x12\x01\xa7\xd3\x4b\xea\x4b\xe4\xc3\x21\x9d\xe6\xd9\x92\x42\x65\x34\x2d\x12\x9d\x93\xa2\xb2\xb0\x36\x9d\x66\x9a\xd2\xbc\xac\x1c\x9b\x58\x9a\x6a\x7e\x23\x37\x36\x4e\x75\xc4\x76\x69\x4c\x3d\x72\xcb\x52\x17\xf1\x9a\xd3\x8f\x94\x53\xf4\xe0\xf8\x98\x13\xe1\x4c\x9a\xcf\xbc\xc6\x4b\xa7\xbe\xbb\x47\xb5\x3a\x24\xe0\x0b\xf7\xb3\x82\x6f\x46\x23\x8c\xdb\xc4\x9a\xa5\x46\x46\x8a\xb7\xe9\x21\x9b\x2e\x7c\x57\xbc\x2d\x16\xda\x9c\x70\xcf\xec\xf5\x7d\x5b\x66\xa9\xeb\x79\x7c\xae\x62\xe2\xf4\xef\xee\x45\x18\xea\xd2\xb1\x82\x37\x08\xe1\x8c\x75\x82\xe5\xdc\xc3\x3b\x1c\x69\xa9\xac\x5d\x14\x06\x17\x19\x35\x34\xd5\x06\x48\xcf\x55\x8a\xe2\xf1\x2a\x69\x27\x9e\x51\xf9\x0c\x4d\xc1\x63\xa7\xf2\x3b\x2f\x72\x97\x00\x2c\xb4\x46\xd1\x79\x2e\x9d\xaf\x36\xdc\xc5\x3b\x5c\x99\x4a\x78\xac\x56\x26\x14\xbb\xb0\xc8\x0a\xe3\x5d\x1c\x49\x11\x7e\x13\x31\x4b\x5c\xb5\x54\x92\xe6\xdb\x9e\x1f\xa7\xe9\x55\x91\x3f\x76\x14\xa7\x06\x79\x21\x04\xb2\xa3\xda\x28\xeb\x4c\x59\x9e\x1c\xca\xd1\x42\x53\x94\x46\xd8\x1c\xf1\xe6\xd0\x71\x76\xa7\x69\x1e\x91\x2b\xc0\x54\x27\x2e\x49\xad\xe4\x49\x9c\xf8\x4e\x99\x99\x76\xf4\xe8\x11\xf5\x86\x20\xe6\x5a\x50\xd7\x56\x67\x6c\x3c\x4c\x7d\xa7\xad\xeb\x6d\xec\xf4\xf3\x22\xd2\xef\xd4\x5c\xb3\xbc\xeb\x6b\xb0\xb6\x5d\x3f\xcd\x5f\x18\xa3\x96\xbd\x8d\xdd\x28\x93\x01\x7d\x27\x2d\x7d\x7a\x4e\x3b\x01\x13\x35\x91\xde\x2a\x15\xa9\x95\x4e\x13\x3e\xcf\x89\xd2\x68\x6b\xc9\x68\xfc\x62\x30\x11\x8f\x43\xa3\x42\xc7\xb3\x65\x40\x79\xe1\xa8\x19\x29\x24\x03\xb0\x53\x17\x59\xfb\x6c\x15\x2b\x3b\xad\x4b\xf4\xaa\x61\xf4\x10\xf8\xe6\xd4\xf2\x6f\x0d\xa7\xf3\xc6\x70\x91\xa4\x61\x42\x17\x52\x62\x9d\x95\x67\xe6\xfd\x20\xa5\xee\xc7\xa6\x98\x9f\xf0\xe3\x13\x3e\x9b\xde\x86\x4d\x7f\xb3\x5e\x6b\x06\x76\x33\xa0\x79\x11\x71\x3e\x58\x0b\xd7\xc6\xea\xd6\xf1\xc4\x94\xfb\x2b\x61\x87\x89\x0e\xaf\x88\x87\x32\xa7\x50\xa1\x30\x2c\xf5\x78\xc2\x5d\x63\xe2\x5d\x4b\x17\xdb\x56\xf9\x92\xf3\x99\xcf\xfa\xab\xf4\xd6\xce\x79\x1b\xeb\x47\x70\xed\x19\x48\xd8\x98\x8f\xab\xc3\xae\x05\x6c\xd7\x8f\xb7\xbd\xe6\xd4\xef\x10\xc1\xd7\x7d\x4c\x32\x75\xef\xa1\xc2\xf3\x15\xd7\x3a\x83\x67\xa7\xaf\x4e\x0f\xe9\x9d\xd6\x28\x45\x9a\xab\x2b\x4d\xb6\xe2\x6a\x96\x62\xe4\xcb\x78\xc5\x09\xe5\xf8\x52\xeb\xd8\x29\x17\xad\xe2\x5e\xce\xf9\x2e\x33\xe5\xe2\xc2\xcc\xed\x1d\x55\xe8\xe8\x8d\xaa\x07\x7f\xaf\x53\x7a\xff\x3d\x3a\xf1\xfc\x7b\x31\xcb\xd1\xde\x47\x56\x7f\x77\xdc\xc3\x56\x27\xe3\x1b\xba\xd6\xb8\x35\x68\xd3\x7c\xde\x24\x7f\x7b\xb5\xe3\x82\x33\xef\x4c\xa5\xeb\xdc\xdf\x90\xce\xac\xfe\xae\xd1\xba\x00\xd7\x66\xf7\xef\xbc\x5b\xd9\xed\xe4\x3b\xdf\xe0\xd8\x74\x8e\x74\xf1\x94\xe3\xa9\xc0\x9f\xa0\x9c\x21\x6e\xd4\x33\x6d\x38\x71\x3c\x0a\xbc\x0f\x12\xe8\xae\x87\x6f\xda\x66\xf1\x50\x16\x97\x95\x75\x30\x13\x06\x09\xbe\xa9\xef\xe3\xf5\xf1\xac\xce\xe1\x96\xd2\x7f\xaa\xb0\xd3\x16\x56\x7d\xcc\x5c\x1c\xec\x0a\x77\x3d\xe5\x2d\xfc\x55\x8e\xcb\x2e\x4c\x99\xce\x67\x2e\x39\xe2\xe7\xcf\x28\xe3\x9f\xed\xed\x95\x7b\x91\xb7\x96\x80\xed\xe7\x29\x9c\xac\xf4\xd5\x7d\xe8\xf6\x90\xf2\x55\x59\x66\xcb\xba\x7b\x0e\x88\x7b\x5b\x35\x97\x36\xd4\xdf\x90\xd4\xc1\xf4\x15\x69\x4d\x5c\x5a\x85\x49\xef\x5c\xfa\x4d\xf3\xf5\x07\x28\xdf\x87\xb7\x7a\xd0\xc5\x60\xdd\xfb\x6b\x0d\xad\x79\x5d\x8f\x75\x91\x9c\xd7\xb7\x05\x67\xf1\x95\x54\x14\x1d\xde\x1a\xee\x24\x7e\x59\x4c\xf7\xa6\xdf\x6b\xff\x87\xe9\x1f\xfd\x15\x00\x00\xff\xff\x95\x25\x4a\xb2\xd3\x0c\x00\x00") +var _webUiStaticVendorJsJqueryHotkeysJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x94\x57\x6d\x73\xdb\xb8\x11\xfe\x4c\xfe\x8a\x0d\x9a\xe6\xa4\x98\x26\x45\xc9\x49\x6c\xfa\x74\x6d\x5e\x66\x7a\xd7\x5c\xe3\x6b\x2f\x73\x33\x1d\x27\xbd\x42\xe4\x92\x44\x44\x01\x1c\x00\x8c\xca\xc6\xe9\x6f\xef\xec\x92\x94\xad\x9c\xd3\x99\x7e\xd2\x03\x12\xfb\xec\xb3\x2f\x58\x50\xc9\xe3\x10\x1e\xc3\x87\xbf\x76\x68\x7b\xf8\xde\xf8\x2d\xf6\x0e\x7e\x6a\xba\x4a\x69\x7a\xf1\xd2\xb4\xbd\x55\x55\xed\x61\xb9\x48\x17\x11\xfc\xd9\xd4\x1a\xfe\x86\x4e\x55\xf4\xf6\x55\x27\x1b\x68\x54\x8e\xda\x61\x01\x9d\x2e\xd0\x82\xaf\x11\xfe\xf2\xc3\x5b\x30\x16\xfe\xf4\xd3\x8f\xf0\x0b\x5a\xa7\x8c\x86\xe5\xb4\xcf\xc5\x21\xb0\xcf\x17\x92\x8d\x5a\xa3\xd9\xa6\x65\x9f\xb0\xe9\xe1\xed\xbf\x3b\xdb\xc3\x0b\x69\xe1\xef\x26\xaf\x65\x9f\xd1\xee\xda\xfb\x36\x4b\x92\x4a\xf9\xba\xdb\xc4\xb9\xd9\x25\x9e\xb6\x6d\xfa\xa4\x1e\x44\x8f\xac\x57\x56\x55\x4a\xcb\x06\x54\x81\x12\x36\x83\xf1\x0b\xa5\x75\x0f\xbf\xc0\xf3\x68\xe2\xd9\xef\xf7\xb1\x69\x51\x7f\x70\xcc\xe5\x72\xab\x5a\xef\x12\xfc\x88\xda\xbb\x64\x8b\xfd\xc6\x48\x5b\xfc\xea\x6a\x63\x7d\xde\x79\x97\x84\x8f\x93\x30\x9c\x95\x9d\xce\xbd\x32\x7a\x36\x24\x6c\xfe\x29\x0c\xc2\x60\xc0\xf1\xa8\x03\xd6\xf0\x29\x0c\x82\x8f\x43\xdc\x19\x88\x45\x7c\x2e\xa2\x30\x0c\x02\xd7\x62\xae\x64\xf3\x1a\x7b\x97\xf1\x9e\xe0\x3c\x03\xb1\x91\xf9\xd6\xb5\x32\x47\x11\xc1\x45\x06\xc2\xcb\x8d\x88\x20\x5d\x65\x20\x2c\xfa\xce\x6a\x5a\x3d\xcd\x40\xb8\x5a\x95\x9e\x16\xcf\x32\x10\xb9\xb7\x0d\x61\x62\x90\x0d\x3f\x26\xe3\x56\x76\x0e\x45\x44\xdc\xcb\x05\x6d\x93\xad\x6b\x4c\xbe\x15\x11\x2c\xc9\x0c\x5d\x2e\x22\x58\x2d\x89\x6e\xf4\xb9\x5a\xb1\x5d\x85\x5d\x4b\xab\xb3\x71\x55\x98\x3d\x79\x5e\x3d\x21\x2b\x5d\x10\x24\x11\xb5\xd9\x8d\xfc\x2b\xe2\x6b\x90\x25\xad\x48\xc6\x60\x4f\x2a\xb8\x61\x44\x04\x67\x24\x61\x24\x3a\x23\x22\xa5\x1d\x5a\x7e\x43\x5c\x05\x52\x08\xc4\x75\x41\xcb\x05\x25\x80\x48\x53\x02\xc4\xb8\x24\x40\x84\x2b\x8a\x6f\x41\x6c\x67\x8c\xd2\x0c\xc4\x13\x46\x14\xc9\x53\x46\x14\xc6\xb3\x41\x5a\xba\xa0\x28\xce\xf9\x31\xb9\xbd\x60\x44\x3e\x1e\x33\x22\x27\x27\x8c\x88\xfc\x94\x50\x4a\xe4\x31\xa3\x14\x32\x10\xc9\xa8\x2c\x4d\xc9\x43\x99\xf2\x1b\x72\x51\x2e\x19\x92\x83\x92\x65\xa5\xe4\xa1\x64\x5d\x5c\xa6\x92\x85\x71\x91\x4a\x56\xc6\x35\x2a\x9f\x31\x24\x7f\xe5\xf9\xc4\xcd\x25\x2a\x59\xdd\x32\x65\x37\x0b\xc6\x83\x4b\xf6\xb9\x64\x9f\x29\x3b\x3d\x23\xa7\xba\xdb\x8d\x05\x4d\x39\xa5\x2e\xb7\xa6\xe1\x56\xb8\x48\x47\xdd\xcb\x25\x6d\xdc\xa1\x97\x22\x0c\x82\xcf\x11\xf5\x68\xc0\xdd\xf3\xa6\xdb\x4d\xad\x27\xfe\x29\x32\x10\xff\x11\x11\xe5\x3b\x03\xf1\x80\xd0\x92\xd0\x1f\x09\xad\x08\xfd\x8e\xd0\x19\xa1\x87\x84\x9e\x10\xfa\x3d\xa1\xa7\x84\xfe\x41\xe8\x19\xa1\x47\x63\x40\xe2\x5c\x8c\x39\x16\x17\x84\x66\x84\x16\x84\xe6\x84\x4e\x09\xfd\x4a\x68\x2d\xc6\x0a\x88\x4b\x42\x19\x10\xfc\x86\x7e\xdf\x09\x82\x11\xc1\x6f\x27\xd6\x98\x56\xdf\x89\x08\x28\xbc\x0c\xc4\x1f\x18\xbe\x7b\x47\xf8\x86\x43\x0c\x83\xcf\x97\x61\x18\x4c\xa7\x13\xb6\xd8\x7f\x2f\x75\xd1\xa0\x9d\x41\xcd\xe0\x6a\xf3\x01\xe6\x1c\x79\x92\xc0\x95\x6e\x7a\xc8\xa5\x45\xd8\xd7\xa8\x41\x42\x6b\x9c\x53\x9b\x06\x41\xe9\xb6\xf3\x50\x4b\x07\x1b\x44\x0d\x7c\x62\x4b\x85\x45\x18\x04\xaa\x84\x19\xf8\xbe\x45\x53\xde\x72\xc6\x85\xf4\x12\x1e\xac\xd7\x20\x9c\xb7\x4a\x57\x62\xf4\x12\x0c\x67\xf7\x72\x50\x47\x05\xf8\x28\x2d\x18\xab\xaa\x51\x18\xac\xef\xb0\x0c\xc8\x72\xf3\x8e\x33\xe4\xd8\x45\xec\xcd\x8f\x66\x8f\xf6\xa5\x74\x38\x9b\xc7\xae\x6d\x94\x9f\x09\x10\x73\x36\xf1\xf8\x2f\xff\x3c\xcf\xb1\xf5\x4a\x57\x3f\x50\x08\x6f\xfb\x16\x89\xe5\x5a\xd0\x3b\x4a\x69\x2b\x9d\xdb\x1b\x4b\x07\x99\x7a\x68\x83\x96\x10\xee\xa4\xa2\xe6\x11\x1d\x8f\x13\x61\xa5\xae\x68\x28\x88\x42\x7a\xfe\xdd\x19\xed\x6b\x02\x7b\x44\x6a\x3a\xe1\xd5\xee\xb0\xe1\x4b\x7c\xda\x98\x5c\x32\x8f\x43\x69\x73\xb6\xcb\x4d\x63\xac\x78\x7f\xc9\x4d\xf8\x9b\x88\x61\x0d\x87\x91\x0a\x3c\x7c\xa7\xfc\x25\x09\xbc\x32\xfa\x1b\x0f\xa5\xb2\x54\x17\xa0\x40\x4e\xe5\x14\xe5\x50\x29\x07\xbe\x96\x1e\xf6\x08\x85\x2a\x68\x73\xa1\x2c\xe6\xbe\xe9\x61\xa3\x74\x01\xde\x10\xd3\x50\xb8\x5a\x39\xae\x13\x3b\x89\xbd\xb4\x15\x7a\x78\xf4\x08\x66\x09\x11\x4b\x8b\xf2\xc6\x61\x83\xb9\x4f\x54\xec\xd1\xf9\xd9\xd1\xce\x58\x9b\x02\xdf\xc8\x1d\xc2\x1c\x6e\x6e\x88\x75\x9a\xfa\x4a\x3f\xb7\x56\xf6\xb3\xa3\xdd\xd4\x26\x11\x7c\xa5\x2c\x73\xf8\x0e\x4e\x53\x98\x4f\x91\xde\x69\x15\xee\x95\x60\x0c\xff\x35\xf6\xad\x45\xe7\xc0\x22\xfd\xd2\xc5\x04\x79\x2d\xad\xcc\x3d\x5a\x17\x81\x36\x1e\xc6\x2b\x05\xf8\x02\x0c\x86\x26\x9b\x9e\x1d\x62\xed\x5b\x1c\x5a\x74\x3b\x32\x0a\x0a\xfc\xf8\xd6\x8a\xef\x5c\x4e\xd7\xa3\xe1\xbe\x56\x79\x0d\xef\xb9\xc5\x82\x83\x67\x58\xc3\xcf\xdc\xea\x71\x69\xcd\xee\x65\x2d\xed\x4b\x53\xe0\xec\xc8\x66\x7e\xdc\xaf\x03\xc3\x16\xfb\x08\x76\xa6\x50\x25\xac\x81\x8e\xf9\xe1\xd4\xad\xe1\x13\x9f\x5f\x0e\x3b\xaf\x31\xdf\x42\x6e\x76\x1b\xa5\x25\x35\x86\x83\x99\x6c\xfc\x0d\xdd\x78\x37\x3c\xc5\x4e\xa4\xee\x7d\xad\x74\x35\x3f\x94\x77\x70\x2e\x1b\xff\x1a\x7b\x0a\x6e\xca\x01\x87\x4d\xf7\xe3\x21\xd9\x83\x80\x93\xe1\xf1\x89\x18\xb3\xfe\x05\x11\xf9\xba\x8f\x89\x6f\xdd\x7b\xa8\xe8\xf9\x81\xeb\xb6\x82\x6f\xaf\x5e\x5d\x65\xf0\x06\x91\x5a\x11\x76\x72\x8b\xe0\x3a\x8b\x43\x33\xee\x8d\xdd\x3a\xc8\x8d\x76\xca\x79\xd4\xd4\xb4\x32\xb7\xc6\x39\x68\x1b\xe9\x4b\x63\x77\xee\x0b\x55\x34\xd1\x47\x55\x0f\xfe\xb7\x4e\x9e\xfd\xf7\xe8\xa4\xe7\x5f\x8b\x99\x53\x7b\x1f\xd9\xf0\xdd\x71\x0f\xdb\x50\x8c\xdf\xd0\x4d\xc6\x93\xc1\x54\xe6\xeb\xb1\xf8\x27\x87\x1d\xef\x61\x0d\xde\x76\x38\xd4\xfe\x33\x60\xe3\xf0\xab\x46\xb7\x0d\x78\x6b\x76\xff\xce\x2f\x3b\x7b\xba\xf9\xae\x8f\x38\x8e\x9d\x53\xb9\xc4\x43\x01\xb9\xd4\xb0\x41\xf0\x56\x55\x15\x5a\x2c\x40\x3a\x10\x3f\x73\xa0\x67\x82\xbe\x69\xc7\xc5\x43\x5e\x7c\xe8\x9c\x27\x33\x66\xe0\xe0\xc7\xfe\x5e\xdf\xa6\xe7\x90\x87\x3b\x4a\xff\x5f\x85\xc1\xd4\x58\x43\x9a\x4b\x63\x61\x06\x74\xd6\x15\xac\x61\x11\x01\x1d\x76\x66\x6a\x50\x57\xbe\xbe\x04\x05\xdf\x42\x73\x09\xea\xe4\xe4\xe0\x9e\xe5\xdd\x4a\xa0\xed\xd7\x8a\x9c\x1c\xf4\x0d\x73\xe8\xee\x25\x15\xcb\xb6\x6d\xfa\x61\x7a\x46\x20\x6d\xd5\xed\x78\x0c\xcd\x8f\x24\x05\x74\xfb\xb2\xb4\x31\x2e\x94\x79\x3d\xbb\xe6\x79\x33\x7e\xfd\x11\xe4\xef\xc3\x3b\x33\xe8\x7d\x74\x3b\xfb\x07\x0d\x93\xf9\xd0\x8f\x43\x93\x5c\x0f\xa7\x85\x72\xf1\x09\x64\x51\x64\x77\x2e\x77\x60\xbf\xf3\xcb\x30\xfc\x3c\x9f\x4d\xff\x61\xe6\x97\xff\x0d\x00\x00\xff\xff\x95\x25\x4a\xb2\xd3\x0c\x00\x00") func webUiStaticVendorJsJqueryHotkeysJsBytes() ([]byte, error) { return bindataRead( @@ -698,12 +719,12 @@ func webUiStaticVendorJsJqueryHotkeysJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.hotkeys.js", size: 3283, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.hotkeys.js", size: 3283, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorJsJqueryMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\xfd\x69\x77\x1b\xc7\xb5\x2f\x0e\xbf\xbf\x6b\x9d\xef\x40\x74\x74\xe0\x6e\xa1\x08\x02\xf2\x70\x4f\x1a\x6a\xf6\xb2\x25\x3b\xb6\xe3\x29\x91\x1c\xdb\x01\x61\xaf\x9e\x00\x34\x89\x89\x00\x28\x8a\x26\x90\xcf\xfe\xec\xdf\xae\xb1\x07\x48\xce\x39\xf7\x59\xff\xbb\xae\x13\x11\x3d\x54\xd7\xb8\x6b\x4f\xb5\x87\x8b\xa7\x9d\xb3\xeb\xbf\xdd\x15\xdb\x87\xb3\x37\xc3\xfe\x70\xd8\x7f\x76\x76\x38\xf3\xb3\xe0\xec\xd9\x60\xf0\xb1\xa0\xbf\xc3\x8f\xf4\xfb\x2f\xd6\x77\xab\x3c\xd9\x97\xeb\x95\x38\xfb\x6a\x95\xf5\xa9\xe0\xf5\x2d\xde\xf4\xd7\xdb\xd9\xc5\xa2\xcc\x8a\xd5\xae\x38\x7b\x7a\xf1\x1f\xff\xab\x33\xbd\x5b\x65\x28\xe8\x27\x22\x0d\x1e\xbd\x75\x7a\x5d\x64\x7b\x2f\x8a\xf6\x0f\x9b\x62\x3d\x3d\x5b\xae\xf3\xbb\x45\xd1\xed\x9e\x78\xd1\x2f\xde\x6e\xd6\xdb\xfd\x2e\xae\xde\x46\x49\x3f\x5f\x67\x77\xcb\x62\xb5\x8f\x53\xaa\xb9\x33\x08\x42\xdb\x50\xf0\x58\x4e\xfd\x8e\x2d\x12\xec\xe7\xdb\xf5\xfd\xd9\xaa\xb8\x3f\xfb\x7c\xbb\x5d\x6f\x7d\x4f\x0d\x63\x5b\xdc\xde\x95\xdb\x62\x77\x96\x9c\xdd\x97\xab\x9c\xca\xdc\x97\xfb\x39\xdd\xe9\x2f\xbd\x60\xb4\x2d\xf6\x77\xdb\xd5\x19\xb5\x12\x1c\x43\xfe\xeb\x7b\x34\xf8\x62\x5a\xae\x8a\xdc\xeb\xe8\xee\xca\xef\x63\xf9\x13\xee\xe7\xe5\x4e\x54\x47\xfe\x26\xd9\x9e\x65\xd1\x78\x22\xf2\x28\xeb\xef\x30\x45\xa2\xa0\xab\x6c\xbd\xca\x92\xbd\x98\xd2\xe5\xe6\x6e\x37\x17\x33\xba\xa0\x3a\x8a\xb7\xdf\x4f\xc5\x3c\x7a\x3c\x8a\x32\x9a\xf7\xf7\xeb\x57\xfb\x6d\xb9\x9a\x89\x6b\xba\x99\x27\xbb\xef\xef\x57\x3f\x6c\xd7\x9b\x62\xbb\x7f\x10\x37\x28\xb4\x88\x3c\xb9\x62\x9e\x58\x46\xd5\x76\x55\xff\x31\xf8\x65\x7f\xba\xa2\xca\xcb\x3d\xbf\x39\x8a\x55\x74\xf1\xeb\xf8\x6a\x77\x75\xf7\xc5\xe7\x5f\x7c\x71\xf5\xf6\xd3\xc1\xa4\x77\xa8\xdd\x3f\xb9\x98\x89\x35\x15\x3b\x5f\xee\xce\x2f\xc4\x26\xba\x38\xf7\xc7\x57\x79\x72\xfe\xfb\x24\xb8\x98\x95\xe2\xb6\xbd\xb1\x94\x7a\xfc\xe3\x86\xfa\xf7\x22\xd9\x15\x7e\x70\x1c\xa1\xe5\x68\xd9\xdf\x6c\xd7\xfb\x35\x26\x2c\x7a\x94\xe0\x12\x2e\x04\x4d\xc0\x6e\xbf\xbd\xcb\xf6\xeb\x6d\xb8\x14\xbb\x62\x51\xf0\xa5\xe7\x89\x45\xb1\x9a\xed\xe7\xe1\x40\xec\xd7\x9f\x6e\xb7\xc9\x83\x5d\x61\xd3\x50\xde\xcf\x92\xc5\xc2\xc7\x74\xd3\x78\x66\xc5\xbe\x02\x05\x7a\xe8\x77\x8b\x45\x27\x4a\xe2\xc1\x65\x12\xa3\xe4\x38\xe9\xe1\xa7\x2f\xeb\x9f\x84\xf2\xd9\x24\xac\x56\x86\xd5\x78\xb5\x4f\xb2\x9b\x4a\x95\x58\xc5\x94\x46\xb2\x2c\xb6\xb3\x82\x8b\xf6\x9d\x01\xf8\x81\x48\x2c\xc4\xd0\x70\x8b\x37\xdf\x33\x58\x47\x0c\x10\x29\xca\xee\x8b\xb7\xf2\x56\xdf\x88\xf4\x28\x8a\x24\x9b\x87\xad\x53\xb9\xec\xe3\x1d\xb7\x24\xe4\xaa\x2d\x93\x4d\xdb\x28\xb9\x4a\xd3\x69\x9f\xba\x98\x6c\xfc\x2a\x1c\xa6\x22\x33\xc5\x13\x39\x58\x7a\x84\x4a\x03\xaa\x97\x61\xb2\x65\x8e\x6b\x15\xe7\xfd\x64\xb3\x59\x3c\xa8\x1e\x6d\x67\xbc\x4f\x76\xa8\x60\x5a\x6e\x77\xfb\x53\x15\x14\xb7\xfe\x80\xca\x2c\x92\x77\x16\x39\x1f\x52\x99\xe2\xb6\x65\xca\x9d\x15\x13\x59\xd4\x4b\x7a\x3e\x96\x33\x0d\x07\x66\xbe\x6b\xfd\xcc\x2e\xa3\x41\xb7\x9b\x5e\x66\xf1\x98\x17\x38\x9b\x4c\xc2\xf1\x04\xd5\xaf\xf2\x93\xa3\x34\x0b\x76\x38\x34\xd6\x16\x60\xa4\xe0\x22\x9c\x8a\x1d\xa1\xa1\x90\x36\x32\xfd\x88\xdd\x86\xa7\x8e\xee\xf8\x82\x96\x88\xf0\xd4\x9e\xda\x89\x78\xc7\xa9\x6b\xa7\x4d\x0c\x89\x16\x93\xe6\x3e\x17\x85\x98\xd2\xa6\x37\x13\x39\x1e\x4c\x0e\x07\xda\xd1\xf3\x68\x48\x5b\xdf\x3c\xd6\x43\xbf\x8e\x3a\xc3\xd1\x14\x28\x2c\x5d\xaf\x17\x45\xb2\xb2\x08\x73\xd6\xed\xfa\xd7\xd1\xac\x52\xd9\x5c\x55\xd6\xeb\x05\xa2\x81\x61\x67\x87\xc3\xb2\x5f\xee\xbe\xd0\xfd\x9a\x05\x87\x83\x3f\x23\x74\x12\x50\xeb\x51\x54\x52\x7d\x33\x09\xb8\xf3\xf3\xf3\x60\x54\x5e\xce\x47\xa8\x88\x70\xab\xdc\x51\x7e\x51\x69\x29\x08\xd0\xaf\xfc\xac\x5c\x9d\x15\x41\x12\xcd\xc6\xf9\x84\x56\xaa\xc0\xcf\xac\x13\x45\x19\xba\xd7\xed\xe2\x07\xad\xfe\xb0\x48\xca\x95\x9c\x6b\x22\x31\xd4\x30\x76\x55\xb9\xe3\x8d\x4e\x0f\x82\x20\xf6\x53\xfa\x3f\x0d\x97\x70\x63\xd2\xed\xda\x97\x49\x10\x27\x58\xc9\xd0\x3c\x77\xeb\xe2\xb7\x34\x64\x34\x1f\xe9\x75\xf0\xaf\x69\x92\xa9\xd2\xf0\xcd\xba\xcc\xcf\x06\xaa\x37\x5c\x84\x9e\x6a\x00\x9a\xd9\x85\xf3\x1f\x89\xd0\x24\x84\xca\x43\x45\x2a\xbc\x9e\xbf\xe8\x7d\x9b\xec\xe7\xfd\x2d\x1e\x2f\xfd\x20\xe8\x6f\x8b\xcd\x22\xc9\x0a\xff\xe2\xea\x25\x61\x49\xcf\x0b\x44\xb9\xfb\x7b\x91\xe4\x0f\x61\x67\x20\x0a\x10\x9a\x0a\x1c\xd7\x89\x50\x02\x0c\xbc\x5e\x6f\x5c\x60\x24\x74\x6f\xd6\xa3\x65\x93\x7b\xfa\x11\x2d\x22\x0d\x0e\xeb\xc8\xd5\xa8\xa9\x09\xf9\xaf\x9e\xa8\xc3\xa1\xa5\x82\x04\x6f\x1a\x5f\xff\x24\xa9\xd6\x69\xdc\xd9\xed\x26\x11\xd1\x5c\x49\xdd\xf0\xc5\x77\xb4\xec\xdb\x32\x6b\xf9\xa4\xe3\xae\x14\x7d\x77\xbe\x49\xb6\xbb\xe2\x8b\xc5\x3a\xc1\xe2\xf4\x86\xb4\x2d\x51\xc1\xe7\xcb\xcd\xfe\x41\xae\x59\x73\xb7\x33\x84\xa7\x80\xa4\x24\x50\xb5\x0e\xd5\x2a\x75\xf8\x6b\x67\xc5\x5b\xbe\x66\xea\x7f\x38\x68\x80\xef\x38\xa3\x3d\x1c\x92\xfe\x6a\x9d\x17\xaf\xe9\x56\x82\xbf\x1c\x3b\xbd\xb2\x2d\xed\xb7\x0f\xe0\x20\x12\x77\xfb\x77\xbb\x9d\x6b\x89\x32\x13\xe1\x39\xcf\xbd\xc0\x79\xe3\x7e\x60\x89\x9d\xf0\xa8\xc3\xfa\xe6\xfb\xa9\x67\x5b\x3a\x12\xe9\x27\xe4\x6e\xb0\x32\x3d\xa1\x76\x6f\xfa\xeb\xfb\xd5\x37\x84\x28\x83\xc6\x34\x9c\x99\x3e\xa4\x81\x3b\x49\x1a\x84\x25\x7c\xd3\xf2\xa6\x87\x83\x53\xf4\x28\xd0\xf4\xa9\xf5\xa5\x95\x8d\x93\x9e\xe7\x85\x0d\x0c\x81\x49\x74\x40\x4e\x3f\x8d\xe7\xe3\x52\x55\x1e\x4c\xec\x3c\x87\xfa\x3d\xed\xbe\xc5\x3a\x4d\x16\x9f\xbf\x49\x16\xb6\x51\xa2\x69\x29\xf6\x2b\x71\x32\x4b\xba\xa1\x0d\x98\xd0\x6e\x2b\xb2\x57\xd9\xb6\xdc\xec\x1d\x68\xa5\x82\xf4\x86\xbe\x75\x06\x10\xf8\x18\x45\x96\x2c\x8b\x05\x78\x8a\xb6\xa1\x24\x66\x43\xae\x85\x47\xec\x8a\x67\x77\xe8\x46\xdc\xf2\x66\xcb\x8b\xef\xa8\x86\x76\x42\x2b\xe1\x02\xef\x09\x68\xcd\x35\x31\x32\xdf\xac\xef\x35\x23\x83\x89\xad\x3e\x69\x21\xdd\x20\xb2\x80\x43\x42\xed\xd1\x00\xc8\x4b\xe3\xee\x59\x84\x4d\x0f\xe8\xcc\x98\x43\x9d\x05\x8f\x58\xc2\xd1\xf4\xb2\x18\x15\x12\xb1\xe6\x54\xbf\x24\xaf\xc9\xb8\x20\xf4\x19\x10\xb7\x18\x11\x0e\x0c\xd2\x6d\x91\xdc\x1c\x8b\x05\x71\xd5\xf8\xa6\x90\xcb\xfe\x07\xbf\x38\xdd\x96\x9c\x60\x7c\x58\x08\xfc\xfc\xb1\xf6\xde\xfd\x95\x86\x45\x02\x03\x2c\xf5\xbb\xa0\x8e\x60\xce\x07\xe4\xd9\x95\x5a\x01\x8f\x82\xc7\xb9\x29\x6a\x3c\x9f\xc3\x44\x13\x70\x8f\x27\xa3\x3a\x86\xf2\xb7\xbe\xa1\x01\x41\xac\x59\xb4\x4c\x78\x3b\xe6\x9d\x5d\xf8\x05\xb7\x97\x10\x01\x91\x23\xc9\x88\x69\x0b\x44\x46\x78\x65\xd5\x6c\xd3\xac\x26\xd6\x2d\x55\xeb\xa6\x09\x86\xe6\xa1\x12\x2a\xc5\xdb\x11\xb3\x63\x98\x94\x8c\x38\xce\x2c\x66\xa2\xb1\x4c\xde\xfa\x03\x91\xf7\xb2\x20\xcc\xc2\xc1\x28\xbf\xcc\x46\x99\x5c\x85\x0c\x33\x4b\xfb\x22\x25\x06\x85\x26\xd1\x6c\xf4\xec\x28\x2f\xce\x87\x34\x1b\x18\x49\xeb\x4c\xf4\x4c\x73\x39\xc1\x5a\x61\x60\x6d\x74\x3f\x2f\x17\x34\xf8\xcb\x3c\xa0\x05\xea\xf5\x26\x51\x3a\xce\xe9\x87\x81\x0f\xe4\x2f\x90\x05\x0c\x3d\xa4\xd7\x93\x5a\x51\xb3\x2f\x64\x95\x11\xad\x35\x6d\x6c\x5a\xa8\xc6\xfc\x60\xe4\x1a\xe2\x49\xc0\x99\x52\x57\x66\x16\xec\xe7\x51\x27\x1b\xcd\x2e\xa7\xa3\x29\x8d\x38\x8f\x3a\x24\x43\x8d\xa7\x54\x8a\xa0\x86\x1a\x9e\x77\xbb\x05\x73\x6d\xfc\xd4\x20\xb2\xa2\xce\xe7\xba\xfb\xaa\xd1\x00\xf6\x15\x71\x4b\x63\x1e\xdf\x9c\xd1\xa6\xd3\xa2\x6e\x10\x9b\x43\x42\x4b\xde\xed\x96\xb2\xd1\x3c\x18\x19\x20\x9f\x4a\x20\x7f\xef\x07\xba\x8b\x6a\xdf\xd1\x88\x4b\x08\x1f\x77\x65\x1e\x0e\x05\x61\xfd\xb7\xad\x50\x0b\x46\x4f\x7d\xda\x80\x48\x5a\x7f\x9f\x10\xc5\x38\x9d\x88\x34\x4a\x44\x12\xd1\xe4\x54\x58\x33\xe2\x6a\xfc\x2c\x52\x02\x8a\x61\xba\xc4\xb3\x80\x66\xbc\xc9\xcb\x26\xaa\x67\xa9\xe4\x62\x85\x96\x32\xfd\x7a\x05\x01\xd8\xf6\xa2\x8f\xae\xd3\x74\x3a\x3f\x20\x8d\xf8\xed\xf5\x44\xa1\xb9\x26\x20\xd0\xfb\x26\xe7\xdc\x03\x47\xf3\x32\xd9\xd3\x8a\xed\xee\x36\x90\xce\xc3\x9b\x23\xba\xcf\x72\x8b\xf7\x99\x64\x53\xcf\x88\x61\x48\x8b\xed\x99\x94\x63\xcf\xf4\xc0\xce\x78\xc3\xf1\xe7\x67\x7f\x2f\x66\x9f\xbf\xdd\x9c\xc9\x3d\x2c\x79\x24\x8f\x39\xea\xbd\xef\x9d\x11\x73\x55\x9d\xd3\xf9\xd8\x1b\x4b\xba\x73\xe6\xf5\xd2\x9e\x37\xf1\x26\x0d\xdc\x4c\x7b\x52\xb7\xb3\xb5\x92\x44\x62\x77\xa8\x61\x0b\x46\x2d\xfc\x55\x56\xe3\x0f\xe2\xce\x30\x1c\x62\x8b\x1a\x06\x82\x76\x6d\xdc\x19\x84\x96\xa9\xa2\x4f\x14\xf1\xf5\x56\x3c\xde\xca\x12\xa7\x97\x10\x48\xce\x87\x0c\x66\x47\x74\x66\x17\x35\x98\x17\x2b\x13\x88\xb9\x28\xc5\xb5\xb8\x11\x0b\xb1\x14\x2b\xb1\x16\x44\xc5\xc4\x56\xec\xc4\x5e\xdc\x45\xde\xae\xfc\xfd\xf7\x45\xe1\xf5\x86\x4f\xf5\xfc\x8b\x37\x8e\x56\x44\xdc\xd3\x1e\x79\x4b\xff\x1e\xa2\x79\x4a\x62\xe9\xef\xf2\xe7\x53\xf9\xf3\x59\xbb\xd8\x9e\xa0\xef\x04\x8a\x8b\xa8\x33\x08\x04\x2d\xf8\x8b\x68\xf8\xfc\xf9\x87\x43\xf1\x92\x84\x82\xba\xde\xe1\x73\x6c\xf5\x2f\xa2\xcf\xfb\x9b\xf5\x46\xfc\x05\xbf\x50\x5f\x7c\xa9\x2f\xbe\xa2\x0b\xa9\xe5\xf8\xba\xd6\x98\xc6\x16\x19\xf5\x2e\xb7\x18\xcb\xc1\x89\x89\xc4\x85\xa9\xc1\x85\x23\x8b\x0b\xff\x1a\x79\xd9\xbc\xc8\x6e\x8a\xfc\x20\x75\x05\x74\x91\xec\x1e\x56\xd9\x21\xb9\xdb\xaf\xa7\x34\xfc\x1d\x5f\x11\x39\x79\x38\x40\xc2\xde\xae\x17\xbb\x43\x5e\x4c\x8b\xed\x21\x2f\x77\x49\xba\xa0\x0f\xe6\x65\x9e\x17\xab\x43\xb9\x23\x1c\x73\x58\x10\x0f\x7e\x58\xde\x2d\xf6\xe5\x66\x51\x1c\x68\x74\xab\x03\x91\xb1\x7c\xbd\x5a\x3c\x1c\x94\x82\x88\xda\xca\xe8\x45\xee\x89\x6f\x22\x6f\x7c\x75\xf5\xf6\xd9\xe0\xea\x6a\x7f\x75\xb5\xbd\xba\x5a\x5d\x5d\x4d\x27\x9e\xf8\x36\xf2\xfc\x38\xbc\xa2\xff\xfa\x07\x2a\x70\x7f\x3e\x39\x8c\x7f\xa5\x82\x83\xc1\x39\xfd\x4d\x06\x93\xa0\xe7\x89\xef\xa2\x6f\x0d\xa1\xf3\xee\x3d\xe1\xdd\xff\x89\xe0\xfa\xfb\xc8\xbb\xba\x1a\x7b\xbd\x6f\x7a\xde\x53\xdf\xeb\x7d\xdb\xf3\x02\xaa\x4a\xdd\x8f\x9f\xfe\xfa\xe4\xd0\xf9\xd7\x24\x8e\x02\xf5\x24\x0e\x3f\xf0\x6d\x53\xbf\xe2\xf7\x83\x49\xf0\x34\xf8\xe0\x70\xe5\xd5\x5f\x5c\x79\x78\x73\xe5\x1d\xa8\xde\xef\xa8\xde\xe0\xa0\x6a\xb9\xba\xa2\x3e\xff\x10\x11\xf9\x35\x0d\x5e\x5d\xf9\xbe\xff\xef\x57\x1d\x1c\xea\x6f\xfc\x80\x26\x60\x32\x39\x78\xbd\xef\xa9\xe6\xa7\xc1\xa1\x4f\xe5\xae\xd0\xb4\xf8\x5b\x04\x60\x95\x1b\xdd\xa7\x7e\xd0\x9c\x78\x33\x9a\x82\xbf\xbb\xcf\xbd\x5f\xb9\x8f\x3d\xae\xf8\x57\x55\xe9\x24\xd0\xad\x50\x8d\xf2\xfd\x13\xf5\xf1\xab\x96\x8f\x9f\x0a\xf9\x43\xaf\x5f\xb7\xbd\xf6\xc7\x97\xbd\x7f\xa1\x8b\x74\x13\x98\xa2\x3f\x56\x8a\x46\xba\x28\x75\x60\xf2\x01\x8d\xf7\x69\xec\xce\x1e\xb7\xfd\x0f\xf7\x8b\x1f\x02\xf1\x53\xbd\x31\x9a\xf5\x27\x54\xee\xe7\xe8\xf1\xab\x97\x61\xe5\xdd\x9f\xd4\xd4\xd3\xdb\x17\xdf\x7c\xfa\xea\x55\xf5\x2d\x0d\xd4\xbe\x7f\xfd\xe9\x5f\xaa\x6f\xf1\xaa\x06\x49\xd4\x7f\x59\xf8\xd3\xd7\xaf\xff\x1e\xd6\x7a\xf1\x7d\x20\x7e\x78\xf5\xf9\x8f\x2f\xbf\xaf\xbf\xa0\x2e\xbf\xf8\xf2\xab\x6f\x6a\x5d\x0b\x7d\x06\x7e\xd6\xe7\x1c\xa0\xb1\x39\xac\xf6\x73\xfc\x3b\xc7\x4d\x70\xee\x67\xc4\x3c\xe4\x87\xf5\xf4\x1c\xc8\x4d\x01\x8f\x9a\xad\xe2\x0d\xed\x9f\x75\x9e\xd3\xea\x8d\x7b\xb4\x0b\x02\xff\xea\x2a\x7f\x1a\xac\x0e\x16\x7e\xd5\x0b\x75\x4f\xaf\x7b\x04\x1c\x66\x6a\x19\x50\xbc\x92\x46\x02\x0d\x47\x6d\xdc\xd8\x17\x7f\xa5\x71\x3e\x51\x45\x56\x45\x91\xef\x5e\x48\x3d\x5a\x7d\x6c\xa8\x4e\x2e\x73\x68\x7b\x55\xdc\x1e\x66\x34\x26\x39\x22\x3b\xc0\xea\x18\xe8\x86\x76\x6d\x1e\xc4\xdc\x75\xa7\x63\x7e\x1c\x8d\x7f\xa5\xbe\x3f\x51\x5d\x3c\x8a\x5f\xa2\x0b\xf4\xaa\x5c\x6d\xee\xf6\x0a\x21\x1d\xd0\x99\x84\x50\xc8\x21\xbd\xdb\xef\xd7\xab\xe0\xc9\x45\x29\xfe\x49\xe5\xe6\x57\x39\x2e\x9f\x40\xeb\xfa\xeb\xe3\xa4\x77\xf5\x78\xb5\x7b\x7a\x35\x5e\x25\xfb\xf2\x4d\x71\x76\x75\x7f\x21\x7e\x93\xb5\xfd\xc9\x1f\x03\x83\xd0\xb4\xf8\x57\xf7\xf4\x97\x60\x41\x3d\xa0\xba\x44\x92\x46\x17\x63\x1a\xd6\x85\x48\xe9\x8a\xf6\xe6\xd5\xc5\x4c\x64\x69\x05\xf2\x78\x1f\xd2\x36\xcc\x93\xf3\xe9\xe4\x71\x28\x3e\x39\xf2\x28\xe2\x83\x1c\x22\xed\x49\x1e\x01\x40\x38\x4f\xa3\x56\x2e\x2b\xf2\x06\x6f\x89\xb2\x9e\x7f\xf2\xf1\xc7\x1f\x7e\xa2\x79\x1e\x70\x6c\xc4\x1c\x64\x50\xbc\x5d\xe6\xb1\xa4\xe6\xfd\xe9\x76\xbd\x7c\x31\x4f\xb6\x2f\x88\x2e\xfa\x79\x8f\xbf\x08\xc2\xd6\x97\x97\x97\xc3\xc1\xe1\xe3\x8f\x9f\xfd\xf9\x13\x31\x1c\x3c\xfb\xb0\x9b\x1f\x3e\xfe\xe4\xc3\x67\xd0\x0c\x16\xa9\xcb\xc9\x2c\xa1\x35\x86\x1c\xfe\xa5\xe2\x65\x3e\x8f\xbe\x92\xcc\xcb\x9b\x3e\x43\xdf\x77\x54\xdd\x2e\x10\xd5\xbb\xcf\xc7\xee\xbd\x56\xf0\x1a\x7a\xad\xc4\xed\x29\x11\xa1\x2f\xa3\x47\xae\x37\xfc\x5c\x95\x8a\xab\x44\xea\x2f\x5a\xa8\x12\xaa\xd9\x94\x58\xa5\x56\x16\x3c\x71\x38\x70\xc5\x76\x13\xfd\xb2\x7c\x74\x30\x32\x1c\x74\x46\x04\xec\x78\x34\x3c\xc9\x2c\xe5\x09\x27\x72\x2f\xeb\x9a\x12\xc5\x97\xf4\x7e\xcd\x74\xfe\x5e\xbc\x05\x3f\xeb\xa7\x71\x0a\x8d\x40\xb1\x7d\xa9\x88\xfb\xe1\x90\x86\x6f\x02\x5a\x8a\x15\xc9\xd3\xd4\x33\x62\x1a\x89\xe5\x58\x51\x0f\x72\x48\x46\xe2\x86\x38\x21\x3d\x66\x23\xfe\x74\x1c\xa1\x1e\xda\x91\x21\x7d\x7f\xd3\xed\xfe\x59\xfe\x0c\xf9\x56\x13\x5c\x16\x76\x3a\xc4\xdf\x6c\x58\xe0\x19\xaa\xb2\xc4\xa3\xfe\xc6\x22\x3b\x24\x2c\x10\xea\xeb\x68\x3a\x1e\x4e\xb8\xcc\x9f\x23\x7c\x8f\xab\x39\xb5\x3e\x2b\xf6\x9f\x2f\x0a\xf4\xf5\xb3\x87\xaf\x72\xff\x3a\x10\x9d\x39\x35\x3b\xef\x6f\x68\x63\xac\xf6\x58\x9e\x4a\x5b\xf3\x7e\x09\x11\xf2\xda\x3c\x94\xcc\xf6\x9c\xc0\xd3\x88\xb0\xb5\x49\xa0\xee\xa0\xa5\xca\xb3\x66\xbb\x41\xb7\xbb\x27\x01\x6d\x4e\xbf\xef\x6b\x03\x7d\x9f\x8e\x9f\x4d\xf4\x7b\x0d\x79\xb9\x70\xc7\xb3\xfb\xec\xe1\x75\x32\x83\x6a\x00\x93\x20\xb8\xf7\x3c\x0f\x1f\x4e\xa8\x8d\xac\x5a\xf2\x05\xe1\x96\x1d\xca\xbe\xb7\x4e\x53\x12\x7d\xa6\x0e\x41\x4e\xeb\xdf\xee\x20\xd6\x76\x6e\x69\xe6\x6e\xfb\xfb\x62\xc7\x92\x2d\xcf\xf1\x2e\xda\x46\x77\xc4\xe3\xa5\xc4\xe3\xa9\xc5\x49\x04\x98\xd3\x1b\x7b\x92\x06\xa9\xee\x84\x1e\x23\x78\x5c\x47\x33\xc8\x4c\xfe\x56\x2e\xd6\xa7\x7b\x02\x12\x42\x57\x44\x4d\xca\x9c\xf8\x84\x98\x1a\x30\x04\x26\x4d\x05\x21\x94\x27\x5d\x2f\x08\xd3\xfe\xae\x5e\x58\xd0\xbe\xdb\x11\x57\x44\x93\xfb\x81\xd7\xdb\xf5\xbc\x0f\x26\x67\x9e\x58\x44\xeb\xaa\x28\xba\x38\x3f\x0f\xd6\xe3\xc5\x24\xda\xf5\xb6\xa9\x8f\xab\x60\x74\x1f\x25\xa9\x1e\x17\xc1\x5a\x4a\x4b\xec\xc0\x07\x41\x39\x8d\x6e\xdd\xbf\x5e\x97\x2b\x9f\xb0\x55\x80\x49\x79\x1b\x00\x29\x34\x66\xf3\xbe\xcf\xc7\x49\xaf\xd4\xe9\xd1\xa7\xb4\x61\xdf\xf2\x3c\xca\x1d\xff\x10\x3c\x1e\xa7\xe5\x8a\xf6\x31\x7d\x4b\xf5\xd2\xd0\x96\xeb\x37\x45\x6d\xd4\xb4\x37\x55\xc5\xa5\x6f\x95\x49\x7f\x17\xde\x93\x21\xa8\x11\x6f\x54\xbb\x7b\xc1\x48\x4b\x45\x3e\xe4\x4e\xf3\x38\xf5\x33\xec\x67\x23\x89\x31\x8c\x65\x3d\x48\x30\x97\x10\xbf\x88\x79\xfd\x86\xe7\xa5\xdb\xcd\xa9\xb7\x24\xf7\xa4\xe3\xa4\xbf\x9b\x97\xd3\xbd\x1f\x90\xf8\x37\xe6\xb2\x93\xa8\xd0\x7d\x49\x6d\x93\x65\xea\xaa\xbb\xc6\x77\x13\xe2\xd3\x49\x28\x37\xef\xaf\x53\x2b\xe5\xac\xfa\x19\x91\xa0\x7d\xa1\x40\xcc\xf7\xf2\xf2\x8d\x17\x8c\xec\xec\x75\x3a\x09\x74\x6a\x4d\x0d\xa4\x9e\x28\x77\x31\x48\x6e\x71\xee\xd4\xf4\xbd\x00\xa6\x95\xe8\x07\x52\xb2\x83\xd9\x6e\xd2\x2a\x86\x54\x52\xdc\xc1\x0b\x9a\x3a\x8a\x82\x00\x23\xef\x27\xb4\x14\x5f\x26\xab\x7c\x51\x8c\xb3\x71\x31\x21\xe4\x69\x6b\x5b\x54\x6a\x4b\x01\xea\x39\x14\xf8\x75\x61\x6c\x18\x45\x0e\xe2\xa3\x9d\xf3\x2f\x02\xd7\xf5\xdd\x36\x2b\xbe\xc2\x81\xea\xe1\xf0\x82\x58\x97\x7f\x25\xf5\x67\xd8\xc1\x79\x05\x1b\x69\xed\x48\x16\x65\xfd\x15\x11\xf3\x57\x65\xba\x20\x14\xca\xea\x1a\x47\x2e\x39\x1f\x1a\x1d\x49\x3c\x0c\x09\xb7\x9b\x1e\x2f\xdd\x85\x72\xf5\x9a\x6a\x08\x27\xb6\xa5\x96\x42\x99\x9b\x60\x79\x12\xf3\xce\xe7\xa5\x34\x52\x67\x7e\x57\xff\xa3\xfa\x7d\xa7\x01\x92\x54\x25\x97\xc2\x77\xc1\x89\xf6\xd6\x6e\x7b\x04\x85\x6e\x93\x1a\x4c\xa3\x5e\x2a\xdc\x57\x24\xc7\xca\xfe\x14\xd0\x81\x42\x4b\x92\x69\x4a\x49\x20\x33\x8b\xa6\x55\x30\x98\x11\x18\xd0\xca\x13\x22\x9d\x4d\x26\xb4\x76\x80\x82\xa8\xe3\xe7\xf8\xc1\x35\x91\x5f\xfc\xcf\x74\x69\x53\xd9\x0b\x84\xf5\x5a\xce\xe4\x93\x56\xbc\x4d\xf0\x73\xcc\xa2\x19\xc1\x86\x54\x57\xe0\xfc\x7c\x8a\xfb\x72\xf7\xf3\xb7\xdf\x34\x25\x72\xd6\x2d\x26\x75\x0a\x9c\x04\x46\xd6\x56\x2d\x98\x73\xdf\xd8\xfb\xf2\xf5\xb7\xdf\x54\xf1\x6f\xd8\x81\x1e\x8f\x5b\x2d\xf6\xba\x96\x16\xe9\xbf\x80\x62\x2b\x6e\xb6\x16\xbe\x31\xa7\x54\x92\xee\x83\xde\xce\x1c\x60\x9f\xd5\xbb\x13\xfb\xab\x08\x67\xf7\x8d\x17\xb4\x05\xe9\x59\x31\x4d\x48\xe4\xfd\x47\x59\xdc\x0b\xfa\xba\xa0\x4a\x01\x2c\x1b\x1a\x6a\xd1\x4f\xf2\xfc\x73\x62\x98\xf7\xdf\x94\xbb\x7d\x41\xfd\x88\x9b\x8f\x60\x03\xb1\x58\x27\x84\xfe\x8b\x54\x74\x86\x41\x58\x60\x0b\x13\x76\xe3\x52\xd0\xe9\x39\xb7\xbe\xb7\x5e\xd9\xe2\x84\x97\x37\x51\x07\x6a\x54\x82\x88\x44\xa3\xe0\x5d\x74\xed\x00\x8f\xab\xd5\xcf\x34\x69\x8c\x88\xe5\x16\x9d\xa4\x46\xaf\xcc\x6b\x42\xe0\xa8\xb1\x6d\xc9\x4f\xd6\x4d\xf4\xa3\x58\xe5\x12\x91\xcd\x14\xc6\x7c\xb1\x5e\x4a\x8c\x49\x74\x50\x35\xd7\xa4\xfd\x90\x17\x15\x00\x37\x5b\x35\xc4\x3c\x7a\x22\xc9\xdb\xec\x14\x5b\x20\xbf\x04\xaf\x72\xa2\x8b\xeb\x4a\x17\x09\xe8\x88\xcc\xde\x89\x4e\xad\x42\xd4\x45\x4c\x42\xcb\x53\xff\xae\xde\x4d\x34\x16\xfb\x79\x9f\xf6\x4a\xde\xff\xea\x65\x4d\x39\x43\x28\xae\x6d\x27\xd5\x39\x3a\xe6\x0c\x35\xb2\xa9\x31\x5d\xf6\x34\x2a\x03\x43\x64\xc9\x46\x3c\xce\x70\x04\x7f\x3c\x0a\xb4\xbe\xd8\x17\xdb\x6a\xfb\x56\x41\xa7\x69\x6f\x46\x44\x37\x35\xd5\xb5\xae\x60\x93\x79\x01\x86\x3e\x1e\x83\xd0\x57\xf4\xd5\x0c\xf5\xff\x40\xb3\x72\xc8\x27\x71\x8d\xe9\x89\xa4\x99\xcd\x67\xb2\x87\x95\xf9\x79\x93\x2c\xee\x0a\xd5\x67\xa1\xfa\x4a\x02\x7f\xd4\x0e\xc9\x71\x9b\xe2\xee\x7d\x2b\xe6\x7c\x7e\x92\x95\x0d\x99\xdd\xa4\xf7\x0d\x46\x2a\x31\x0a\xe0\x56\xb5\x76\x0e\x3d\xa0\x3c\xe9\x3a\x59\x39\x88\x2a\xed\x18\x3e\xdf\x78\xd4\xb4\x75\xca\xa7\x0d\x01\xa8\x76\xe6\x20\x32\xc5\x96\x67\x66\x96\x72\xcd\x09\x4d\x8f\x7a\x7e\x58\x61\x52\x9f\x21\xb3\xab\xba\xdd\x56\xed\xe6\xa6\x3e\x78\xcb\x73\xdb\x21\x8a\x2d\x86\x73\x8b\x3f\x92\x01\xb7\x5b\xb8\x3e\x31\x90\x2d\xfc\xda\xae\x6d\x6e\xd7\x15\x21\x4b\x90\x83\xc8\x7b\x9e\x9c\x49\x1e\xf9\x8e\x78\xe4\xcb\xe7\x17\xc9\xe5\x73\xa9\x30\xb0\x8f\xcf\xaf\xa6\x93\x0f\xce\x96\x3b\xe2\xbf\xd6\xf7\x59\xb2\xa1\x7e\x17\xd1\x07\x54\x78\xbd\x61\xa2\xa7\x35\x9e\xfc\xec\x42\x3e\xa4\x0b\xf9\xf8\xd2\x13\x49\x73\xf5\xbc\x71\xb5\xba\x5f\xe9\xdb\x89\xc1\x5d\xdd\xee\xad\x9c\x6e\x0f\x8a\xc6\x49\x64\x75\x8c\xd0\xf9\x5d\xb1\x42\xa9\xb5\x52\xdd\x13\x5b\xd5\xe1\xa0\xab\xb2\xda\xcc\x38\x64\xe8\x3e\x48\xa5\xcd\xa9\xba\xca\xfc\x5f\x91\x1c\x7e\x5b\x6d\xf4\xae\xfd\xbb\x50\xe9\x81\x5b\xbe\xb1\xaf\x5a\xbf\x4c\xfe\xc4\xcd\xf5\x9e\xb6\x7c\xda\xff\x53\xbf\x07\xed\x0a\x53\x93\xda\xea\x4a\x3c\x31\xab\x73\xd6\x92\x9b\x0a\x46\x75\xe1\x08\x3b\x91\xe4\x16\xa9\x6c\xe6\xae\xb8\xc0\x91\x06\xb5\xe2\x2b\xd0\x30\xe1\xbd\x3c\x35\x4d\x78\x1f\xe5\x6d\x6b\xc7\x5f\x4a\x7d\x97\x51\x17\x9f\x9a\xb4\x62\xc5\x2a\xf0\xb6\x49\xd3\xaf\x84\x17\x6a\x4d\xf9\x89\x5a\x9e\x8a\xf0\x2d\xbd\xd2\x5f\x8a\xfe\xd3\x10\xf3\x15\x60\xcf\x2c\x21\x50\x14\x3b\x5d\x5e\xef\x9f\x1d\x49\x72\xea\xd5\xe1\xb0\xee\xdf\x17\xe9\x4d\xb9\xff\xb6\x5a\x16\x2f\x96\xeb\xdf\x5b\x9e\xae\xdb\x4a\xee\x6a\x0f\xb1\x21\x6b\x2b\x96\xf5\x69\x24\xd9\x9a\x36\x21\x80\x95\xcb\x47\x3b\x63\xc6\xc1\x22\x91\xb0\xf7\xe3\x5d\x07\xbb\x83\xc7\xb6\x55\x63\xeb\x44\x9e\xf8\x01\xb0\x70\x1b\xdd\x9a\x89\x77\x54\x6d\xb7\x4a\x3e\x3d\x80\x5b\xd8\x92\xd4\xdc\x52\x66\xeb\x96\x49\xf5\x8c\xac\xfb\xd9\x7a\x09\xea\xa8\xd9\xbc\x1f\xd6\xbb\x12\x1d\x0f\xc4\x1e\xfa\x1c\xa7\xd8\x6a\x9f\x94\xab\x5d\x10\xb7\xe9\x9f\xfe\x5c\x91\x82\xe2\xa4\xce\xee\x85\x90\x96\xd2\xaa\x00\x37\x72\x0e\x7c\x72\x62\x1c\xfc\x4e\x2e\x15\x42\xb9\x63\x1c\xd3\xf1\x33\xd3\x74\x6c\x2f\x49\x56\x0a\x93\x53\x5d\x27\x21\xec\x93\xee\xc9\xb7\xf4\x69\x53\x8b\xc6\xc7\xea\x92\x26\xa4\x51\x45\x01\x80\x37\xce\x91\x78\x67\x30\x32\x32\xaa\xf8\x2c\x4a\xe3\x46\x3d\x89\x7b\x68\x84\x43\x2c\x31\x18\x49\x5d\x66\xe7\x64\x9f\xce\x3b\xe9\xa9\x57\x86\x00\xc5\x39\x31\x13\x51\x9b\x0c\x40\x0d\xd6\xf5\x52\x87\x43\x1a\xc4\xa7\xa7\x20\x0d\xc2\xa1\x18\x76\x31\xeb\xd2\x7a\xf0\x65\x01\x3e\xb9\xc8\xb1\x42\xa7\x3e\xe2\x86\xf2\x18\xe3\x9b\xc1\x82\xa9\xd2\x20\x3d\x7c\x03\x2d\xd7\x1b\x91\x04\xf1\xf9\x30\x4c\x65\xa9\xf4\x54\x29\xea\xde\x30\xbc\x89\xbf\xf6\x6f\xe8\x83\x73\xfc\x50\x9f\x06\xe1\x47\xdd\x1c\x5f\x0f\xdb\x16\xe8\xd4\xc4\x66\xc6\xec\xc0\x2e\x1b\xf3\x01\xce\xed\x3c\x1a\x27\x13\x1c\xce\xa7\x13\xa9\x55\xa4\x91\x4f\x03\x07\x00\x67\xa6\xd3\xd4\xaf\x02\x37\xd3\xb6\x0e\xe2\x63\xf0\x49\xe6\x5b\xa5\x16\x18\x65\x51\x32\xb2\xf2\xba\x03\x3f\xf3\xfe\xdd\x4a\x2a\x56\x32\x94\x4a\xdb\x4b\x95\x6e\x29\x59\x62\x0e\xc3\xc0\x28\x2a\x61\x13\x91\xf7\x7a\x16\x0e\xa8\x49\xbc\x13\xfc\x26\x54\xc5\xde\xa0\xcb\xa5\xbe\x1e\x86\xc4\x44\xcc\x82\x70\x45\x7f\x53\x8d\xf1\xda\x8f\x5b\x59\xff\x0b\xcd\x89\xfc\x03\x03\x27\xfb\x89\xc1\x9f\x8d\xc5\x68\x83\x43\xad\x0b\x4e\x58\x17\x6c\x18\xd9\x1f\x85\x17\x7d\xf0\x64\x08\x82\x2f\x68\x93\x37\x90\x33\x2d\xc5\xe6\x70\xd8\x76\xbb\x5b\x89\x6b\xd2\x80\xc8\x01\xe8\x8a\xba\x0b\x58\xdb\x26\xb7\xd0\xce\xb1\x3c\x83\xc6\xe4\x70\x68\x41\xae\x00\xce\xdc\x28\x68\x59\x6f\x6c\x1f\x18\xdc\x62\x94\x2d\x4a\xfb\x54\x04\x8f\x47\x3b\x27\xa9\x58\xc9\x09\x21\xb8\xd1\x54\xea\x72\xc0\x73\xa3\x71\x50\xeb\x7c\xbe\x67\x5e\xb4\xd1\x3b\x55\x03\xa1\xb3\x56\xc5\xbb\x3f\x66\x60\x27\xe2\xeb\xaa\xa9\x6a\xc6\x06\x30\x7b\x21\xce\xf3\xa5\x9c\x25\xb7\xa4\xa8\x95\x0c\xe2\x82\xf5\xfe\x9d\x8d\xe6\x3a\xab\xd6\x7b\xd4\xec\x34\x9e\x86\xae\x6c\x8c\x75\x8a\x6b\xb2\x0e\xed\x09\xd8\x8c\x34\x45\x8c\x14\x74\x70\xda\xdf\x6d\x8a\xac\x9c\x96\x45\x1e\x4f\xa5\x8c\x11\xb2\x92\x0e\xe3\x67\xdb\xd4\xe8\x5d\xb6\xa9\xde\xab\x07\x9a\xe9\xb7\x67\x5c\x52\x9c\xdd\xad\xb6\x45\xb6\x9e\xad\xca\xdf\x8b\xfc\xac\x78\xbb\xd9\x16\xbb\x1d\x2c\x54\xcf\xbc\x5e\x22\xa7\xf4\x6e\x55\x12\x9b\xf0\x0a\xea\x94\xa6\x52\xc3\x11\x11\x78\x1b\x13\x06\x21\xd8\x21\xd9\x2c\xdb\xbf\xbc\x83\xc9\x34\x71\x53\x3b\x71\x13\x29\x8c\xf8\x6a\x0f\xde\x03\xe2\x13\x1b\x10\xf8\x03\x30\x21\x78\xe1\x7f\x16\x88\x85\x16\x20\x48\x60\x1b\x4f\x21\x40\x30\x8d\x18\x4f\xa1\x34\xc2\x12\x31\xd9\x9e\x06\x81\xa3\x5e\x4c\x94\x61\x36\x6b\x93\x04\x61\x38\x35\xdf\x37\xac\xb7\x84\x59\x53\x01\xcd\x0c\xcd\xe4\x6b\x18\xe7\xb7\xd8\x64\x44\x9e\xc7\xa8\x6e\xea\x90\x5a\x8c\x64\x2a\xcf\x47\x80\x96\x0e\x87\x3f\xcb\x9f\x21\xdf\x4a\x51\xba\x61\x7a\xd6\xc7\xe1\x20\x1f\x58\xae\xf6\x06\x09\xba\x0f\xd9\x8c\x2c\xa1\x66\xf8\x70\x92\x59\xc5\x51\x32\xc2\x03\x57\x13\x99\xf5\x22\xb6\xdd\xd5\x67\x23\x1f\xca\xa6\x3f\x72\xf1\xa3\xec\xe9\x3f\xb0\xf4\xb2\x9c\x9d\x37\x3e\x97\xe2\x3a\xac\x98\x9b\x91\x74\x25\xf5\x53\x12\x37\xec\xa2\x47\x47\x5b\x1d\x7e\x3c\x10\x92\xed\xfd\x61\x57\xdc\xe5\xeb\xb0\x4c\x05\x23\x93\xf0\x67\x61\x41\x1d\x86\xd7\x10\xd0\xf0\xbb\x2d\x16\x7c\xb0\x19\x3e\x7a\x97\x5e\xf8\x98\x97\xdb\xd0\xb3\x68\xd7\x53\xde\x02\x30\xe7\xf5\xce\x5a\xde\xd3\xe3\x9e\x79\xbc\x2d\xde\x94\xeb\xbb\x9d\x1a\x7d\xe5\xdb\x7f\x9d\x2a\x74\x3c\x0a\x7a\xf4\x05\x0b\xfc\xe1\x23\x9f\x8a\xb7\x29\x10\xc6\xc3\x49\x84\x3f\x35\xe1\x5f\x24\xe3\x0f\x27\x44\xf2\xe9\x2f\xa1\x82\xf1\x47\xfc\xf7\x63\x18\xbb\x3a\xc6\x8a\xaa\x28\x44\x14\x86\xc1\x67\x80\x41\xfe\xd0\xc3\xce\xa0\x0b\xd6\xfb\x0b\x03\xc8\xe2\x23\xda\x2d\xf2\xc0\xfd\x9d\x7d\xa9\xe0\x0b\xe1\xad\xf6\x73\xd9\x00\xbd\xd2\x35\x7d\x18\xc4\xaa\x77\x7a\x43\xd3\xed\x60\x82\x8e\x7f\x34\x89\x7a\x3e\x7e\x62\x74\x19\x97\x9f\x50\xb1\x61\x10\x3e\x7b\xea\x7b\x38\x09\x97\x95\x7d\xc8\xa6\xbb\x79\xae\xef\x02\x7c\xfb\xb1\xfc\xf6\x7f\x4f\xa8\xfb\xff\xd5\x28\x10\xe2\xa7\xdb\xad\xb7\x78\xd4\xd6\x05\x6d\x3b\xa7\x83\xe6\x69\x33\xd3\xec\x68\x50\xfb\xb9\xcf\x73\xa0\x8e\x7e\x50\x47\x8c\x8d\x18\xf2\x80\x62\x94\x8c\xaa\x53\x1e\x66\xdd\xee\x3f\x64\x71\xe8\xa8\x09\x86\x67\x7e\x06\xa7\x2f\x79\x63\x3c\xa6\x7c\x12\x32\x8d\x9a\xf9\x3c\x0d\xce\xf5\x35\x5b\x1b\x53\x43\x11\xfe\x98\x39\xe4\x65\xa6\xc6\x32\xe7\x89\xbb\x5a\x1f\x12\xb7\x0a\x80\x96\x20\x04\x2b\x8c\xf7\x6b\x8d\xda\x35\xfa\x52\xf7\x11\x37\x8c\xe7\x3a\x15\xa5\xca\xbf\x6d\x8b\x4c\xbd\x93\xb6\x23\xcd\x7e\x3d\x8c\x13\x3e\x48\x32\x5a\x69\x76\xb1\x70\x6d\x04\xfc\x5f\x8d\xfd\x0b\x15\x95\x86\x01\xb0\x6c\xc0\xa4\xe2\xe0\xbb\xa5\x5f\xea\xb4\xae\x05\xad\x65\x56\xf9\xe2\xdc\xd0\xda\xbd\x57\x55\x56\x57\x93\x29\x8d\xae\x17\xf0\x5e\x3b\xd2\x86\xa9\xed\x5d\xe1\xba\x31\x99\xc7\xfa\xb0\x21\x52\xf4\xdd\xcf\x1d\x57\x2c\x69\x6f\x5c\xc4\x90\xe6\x30\x6f\x61\x1a\xfb\x45\x0f\x48\xdd\x93\x0f\x62\x70\x96\x59\xa8\xdf\xc7\xd0\x87\xd3\xed\xaf\xea\x96\xc0\x0f\x76\x7d\x85\x81\xb3\x2c\x08\xbd\xa7\xf6\xa5\xfb\xe2\x92\xb8\x41\xef\x89\xfb\x4e\x82\x93\x85\x45\xd9\xd4\xbf\x54\x11\x18\x37\xf6\x0a\x03\x45\x7f\x03\x3a\x0c\x18\x6f\xd4\x2b\x3d\xb8\x7d\x3d\x1c\x0a\x03\xa7\xba\xe6\xde\x90\xeb\xee\x79\xe7\x5e\x08\x9d\x3c\x41\x57\x13\xdd\x68\xb7\x23\x65\x73\x10\x31\x76\x61\x3e\xcd\x82\xbd\x98\x45\x1e\xcc\x62\xdc\xe7\xe7\x1f\xc1\x2d\xc8\x53\x46\x3f\xdc\x13\x3d\xbd\x20\x78\xb9\x9a\xa2\xb8\xc5\x23\xa4\xe3\xca\x07\x0e\xc0\xa3\x27\xa5\xec\x47\xc5\xce\x31\x9a\x76\x20\x0d\x78\x0e\xc5\xf3\x5a\xa8\xc0\x6d\x55\xd0\xd8\xc2\x96\xf8\xd4\xd1\x97\xd8\x45\x9d\xb2\xdb\xed\xcc\x41\xb5\x6f\x99\x38\x4f\x35\x27\xb1\x09\x1e\x17\x46\x3a\x58\x44\x8b\xf1\x66\x02\xd9\x73\x1e\x2f\x4e\x6f\xbd\x2d\x9b\x82\x2e\xea\x2c\x6d\x67\x38\x5a\x47\x1b\x9a\xa5\xd5\x82\x0d\x42\x13\x6a\x72\xdd\xed\x56\x46\x72\x34\x5b\x9f\x1a\x59\x47\xe3\x59\x7c\xeb\x10\xfb\xf0\xb6\x8f\x99\xe7\xeb\x89\x98\x75\xbb\xbb\xe0\xf1\x26\xba\x1d\xdf\x11\x22\xf4\xf1\xc3\xfe\x59\xd7\xd1\x0d\x71\xc7\x6c\xec\xb1\x8a\xae\x81\xd8\xa2\xe8\xbe\xdb\xbd\x26\x0a\x21\x96\x95\x07\xcf\x26\x62\x01\x36\xf6\xd6\x31\x8c\x19\xaf\x26\x66\xb4\xbd\x1e\xbd\x5c\xd0\xff\x69\xd4\xd4\xc2\x32\x5a\x45\x83\x00\xea\x95\xcd\x7a\xe3\xb3\x91\x47\x75\xa0\xdd\x6e\xaf\xb7\xa4\xe2\x2c\x11\x3e\xa2\x17\xd1\xf8\x9e\x96\x6d\x39\x19\x49\x9f\x01\xc3\x93\xec\xd8\x1f\xcd\x4f\x65\xd7\x53\xd5\xf5\x00\x5c\x3d\x3a\x26\xbb\x18\xa0\xb7\xc3\xc9\xc8\x61\x50\xfe\x48\x9f\xfe\xcd\xc5\x51\x9d\xe6\x2e\xf9\x0b\xd9\xa1\x85\xd3\x21\x0c\x61\x49\x94\x4c\x8e\xaa\xea\xc6\xb0\x3c\x8f\x0a\x9a\x53\x56\x94\x2c\xff\x13\x16\x24\x03\x12\x0a\x2e\x72\xf8\x31\x1d\x5b\x28\x9f\x63\xf0\x0d\x6e\x94\xb9\xa5\x1d\x2f\x56\x0e\x85\x9f\x64\x48\xe8\x41\x4d\x7c\x70\xe8\x38\xe1\x4c\x75\x34\x49\xdc\xb6\xac\x40\x72\xda\xc6\xf2\x9c\xba\x1e\xb3\x04\x50\x68\xf9\x68\x08\xfb\xf0\x71\x22\x12\x41\x48\x2d\x9d\x08\xb7\xad\x9a\xe5\xae\x9f\xd4\xe5\x11\xf7\xd8\x36\x71\xcd\xec\x59\x50\x39\x71\x58\x9b\x47\x5f\x83\x48\x8c\x67\xcc\x73\xe4\x38\xac\xcd\xf0\xc3\x4f\x8e\x41\x1b\x59\x43\x75\x84\xad\xf0\xb6\x00\x7b\x26\xe7\x26\x7c\x5c\xad\xf7\x61\xd9\xa6\x6a\xc5\xa1\xb1\x74\x99\x9e\x37\x2d\x32\xec\x01\x01\xa6\xa3\x3a\x06\x60\x16\x63\x55\x35\x8b\x72\x2d\x68\x17\x62\x3c\x01\x1a\xab\xd9\x20\xc0\xbf\x91\x84\xa9\x19\xbc\x18\x99\x53\x98\x63\x38\x29\x7e\xa6\x41\x75\x30\xb0\xcd\xb6\xf4\x90\x59\x0a\x91\x43\x66\x45\xf5\xec\x31\xc0\x0f\xf9\x96\xe4\x19\x86\x58\x9c\xec\xd0\x1a\xd4\xc7\xd8\x72\x7e\xef\x6a\x06\x52\x47\xf8\xc5\xe1\x9d\x92\x7d\x4f\xd4\x92\x34\x38\x11\xd1\xac\xd8\x4f\x5d\x51\x03\x3a\x22\x3e\x9f\x80\xd4\x43\xf4\x04\x92\xa3\xa1\x39\x09\x68\x0e\xda\x5d\x24\xab\xd9\x89\x36\x7f\x52\x1c\x1c\x53\xea\x53\x00\xcc\xdf\x33\xf8\x8a\x66\x1f\x6b\x48\xba\x61\xca\x30\xca\xd7\x67\x6c\x75\x81\xc3\x1b\xae\xa9\x6e\xae\xf4\x76\xb9\x08\xf1\x02\x1d\xa8\xbf\x93\xcf\x8d\x15\x39\xf1\x79\xd5\xe6\x60\xcc\x91\x48\x93\x7d\xcb\x42\x26\x20\x9f\x5a\x7a\xac\xab\x24\xeb\x46\x26\x81\x55\x49\xd2\x54\xed\x93\x6d\xc5\x05\xdd\xb5\x11\x5c\x67\x89\x54\x90\xda\x6b\xec\xcb\x79\xe5\x2c\x50\x52\xda\xa1\xf4\x33\x2b\x73\x12\xa2\xd6\xeb\x56\x97\x76\xe8\xcd\xd6\xc4\x9a\xc2\xdc\xfd\xd4\xfb\x55\x3f\xc9\x20\x80\x29\x3d\x30\x2c\xc9\xb8\xc9\x2f\xd8\x46\xfe\x60\xaf\x7d\x70\x7c\x9d\x0e\xf0\x02\x2b\x7e\x93\xfe\x7c\x5b\x90\x34\xf9\x2f\x7a\x90\xa4\x6c\x27\xc3\x6e\xd3\x7c\x22\xd0\xce\xae\xea\xf3\x02\x76\x03\x23\x41\x52\xdd\xbe\xbf\x30\x89\x70\xea\xac\xa6\x95\xb7\xfe\x83\x76\x32\x29\xfa\x4f\x7c\xa7\x72\x0c\x20\xa9\x65\xa3\xbd\x38\xd4\x2b\x7d\x5e\x75\x14\xfa\xaa\xbd\x6f\xae\xc9\x93\x7b\x67\x2a\xe0\xe9\x10\xb6\x42\x35\x88\x02\xee\xac\x95\x2a\xff\x90\x1c\xcf\x5e\xa6\x1a\x98\x9e\x7f\xd2\xe6\xec\x2a\xfb\xd0\xe6\x68\x6b\xa8\x4b\x9f\x5b\x67\x5f\xde\x79\x91\xe4\xc5\xb6\x6d\x6c\xff\x54\x9b\xd5\xcc\x29\x3c\x7f\x31\x81\x6d\x85\x7f\x69\x29\x2c\xed\x84\xfe\x87\xcb\xe4\x58\x1b\x69\x70\x73\x1e\xa5\x47\xc1\x96\xdc\x4d\x97\xde\x7a\x55\xa7\xda\xa4\x16\x50\x83\xad\x9f\xc0\x5e\x72\xff\x50\x7c\xd4\xf0\x03\x33\xb2\x01\x04\x0d\xfd\x4d\x5d\x55\xa7\x83\x1a\xac\x1d\xfc\xa7\x27\x89\xd0\x3c\xa3\xc7\xda\x6b\x47\x23\x39\x4e\xcf\x87\x28\x53\xdc\xd6\x4b\x58\x09\x66\x0c\x1f\xc1\xac\x97\x86\x19\x97\x24\xe9\xbc\x59\x9b\xe3\x31\x33\x4a\xd9\x4d\x26\x7a\x16\x24\xf5\x73\xf2\x84\xbe\x27\x69\xfd\x5d\x9f\x0f\xdf\xf3\xf9\xa2\x31\x94\x8a\x7b\x5f\x64\xfa\x3a\x3a\x3f\x07\x03\x34\xd2\xd5\xe4\x95\x6a\x66\x7f\xb8\x9a\x5e\x2f\x7f\x9e\xb6\xd7\xc2\x66\x22\x1a\xc0\x49\x46\x89\x1c\x70\xbf\x35\xbe\xcf\x8f\xdb\x24\x2f\xd7\x70\xb8\xe7\xcd\x9f\xae\xdf\xe2\x9a\x44\xf6\x02\xbf\x1b\x12\x24\xef\xd7\xdb\x1c\xd7\xe5\x32\x99\xe1\xe1\x31\xb0\x5c\x59\x3a\x89\x96\xa9\xef\xb8\x52\x3f\xee\xee\xd2\x65\x09\xd5\x92\xd8\x16\xc4\x41\x35\xcb\xaf\x64\x79\x6d\x86\x76\x0b\x2b\xd0\xe3\x6d\xea\x84\x36\xd1\x56\x26\x3b\xdb\xe3\x0a\x3b\xc6\x42\xf8\x6d\x4a\x6c\xc9\x0c\xe0\x76\x53\x40\xad\x1a\x9d\xf0\x18\xb4\x6e\x60\xd1\xef\x5a\xa2\x87\x8b\x78\x60\x8c\xcd\x06\xe1\x8d\xd1\x93\x8e\x88\xb3\x61\x3f\x48\x12\x10\xf2\xbe\x51\x7f\x69\x2e\x27\x78\xf4\x3b\x24\x38\xfa\x45\xf4\x4a\x9a\x71\xcf\x03\xd6\xa0\x14\x6c\x4b\x3d\x57\xd5\x14\x50\x91\x28\x51\xf5\x70\x98\x07\x42\x79\x3e\x4e\xa9\x5e\xf8\xc9\x22\x24\x03\x55\xf1\xda\x54\x01\x6b\x3d\x92\x8d\x95\x0d\xab\x98\xca\xe2\x8f\x52\xe9\x9c\x49\xd7\x73\xae\xd4\x61\xe0\xce\xf8\x7c\xdd\x36\x6a\x84\x63\xb9\x16\x33\xf8\xc8\xe9\x89\x0c\x3a\xd4\xdc\xcf\xc4\x56\x9a\x16\x0f\x87\x6b\xba\x25\xcc\x4e\x2f\x70\xe5\x17\x78\xf6\xfe\x5e\xcc\x84\x3a\x00\x21\xfe\xf3\x44\xeb\x38\xa2\xca\x94\xfb\xb3\x99\xe3\xb9\x7a\x1f\xce\x63\xab\xfb\x0a\xc2\xdf\x69\xb1\xca\xc0\xcc\xfe\xd1\x71\x37\x4c\x35\x09\x90\x28\x92\xc0\xd3\x75\x14\xf0\xbc\x51\x76\x99\x8e\x52\xb8\xa7\xf6\xd8\xef\x53\xaa\xe8\xad\xc9\x8b\xa9\x69\x97\x56\xbd\x32\x52\x22\x9f\x5b\x44\x0e\x22\x4c\xe7\xa8\x4b\x21\x9f\x10\xc3\xfe\xd6\x9e\x56\xa5\x92\xf2\xc4\x15\x69\x7b\x6a\xb5\xe7\xec\xf1\xab\xc4\xbb\xd4\x39\xf6\x35\xa7\x33\x89\xfa\xa2\x26\xb0\xcf\x64\x4f\x18\x2a\x21\x37\x4d\x19\x20\x67\xcd\x8a\x5b\x6a\x26\x9a\xaa\xea\x30\x67\xba\x55\xd5\xf4\xe9\x4e\x41\x62\x2f\xa3\x9a\x30\x29\x08\x6c\xf9\x2c\xae\xdb\x9d\x1b\x99\x77\x0e\x35\xaa\xa3\x07\x87\x0c\x1c\xcd\xa1\x7e\x44\x15\x10\x51\xae\x05\x3f\x6b\xf6\xc5\x31\x79\xdd\x57\xec\x4b\xad\x98\x55\x99\x0b\xa3\x74\x6a\xb1\x69\xe6\x20\x14\xe3\x62\xa2\x0a\xb6\x90\xf6\x10\xca\x48\xdb\xe2\x5d\xda\x82\x29\x69\xa5\xb5\x8b\xf7\xa8\xb8\xcc\x47\x39\x81\x8c\x94\x0e\x38\xbc\x8a\xa3\xbd\x37\xf5\xbc\x49\x5d\x25\x8f\xae\x0b\x62\x10\xe1\x85\x39\x55\x59\x5a\x50\xbc\x8e\xa4\x7f\x73\x6a\xa2\xbb\xb0\x1f\xb2\x14\x83\x80\x2b\x32\x7f\xca\xf5\xe0\x7e\xa6\xcf\x56\xc4\x35\x9b\x13\x48\xef\x09\x27\x7c\x8a\xe9\xc2\xbd\xd3\x05\x47\x5c\xca\x69\xc7\x42\x58\xa3\xba\xf2\x88\xca\xd0\xac\xc0\xf8\xb4\x53\xc8\x67\x05\x9e\xa1\x7c\x50\x31\x24\x56\x38\xb0\xa2\x27\x8a\x58\xf1\x41\x7f\x60\xdf\xaa\xc6\xb2\xc1\x09\x08\x4d\x22\xbc\x6f\x9f\x7a\x62\x6e\x6d\x22\x68\x3c\xe1\x9c\x25\xbf\xdb\x08\xae\x2f\x9d\x29\x3c\x77\x37\x21\xcd\xd4\x46\x2c\x49\x66\x46\xf5\x62\x1b\x65\x31\x81\x9a\x3f\x8d\x93\x70\x4d\xd2\x7a\x10\x8f\x27\xe1\x2c\xbc\x65\x8b\x70\xe2\xce\x7d\x78\xdf\x72\x49\x5a\xf6\xeb\x88\x3e\xde\x8a\x15\xdd\xf8\xd7\x02\x13\x8b\x17\x37\xd1\x75\x15\x10\x6e\x20\x58\x2e\x08\x47\xdd\xf0\x8c\x6e\xc7\x2b\xba\x82\x6c\x79\xab\xae\x16\x01\xbb\x35\xc8\xe3\x22\xf0\xde\xf2\x02\x0d\xb0\x23\xcf\xb6\xb5\xbe\xad\xac\xef\x5a\xae\xc1\x2d\xdd\x51\x45\xa3\x82\x39\x1d\x69\xc1\x76\x0d\x9f\xf4\xf7\x7c\xee\x5f\x47\x45\xfc\x35\xcd\xef\x22\x08\x97\x78\x44\x12\x1f\x9c\x7c\xc6\xd7\xe8\xe1\x0c\x3f\xe8\x9e\xdc\xa1\x5b\x1e\x30\x9f\xd2\x6f\xf5\x71\xda\x5a\xe8\xfa\x83\x70\x4b\x4b\x19\xab\x1e\xcc\x68\xa2\xca\x20\xd4\xee\x19\x74\x5b\x31\xdd\x7e\x5b\x45\x8e\x82\x09\x9d\x1b\x26\x23\xef\xeb\xc3\xa3\x31\xeb\xeb\x81\xbb\x01\xba\x33\xe8\x50\xcc\x2b\xd0\x42\x82\x65\x58\x0d\x0c\x68\xa6\x76\x27\xc4\x62\xe6\x2a\xe7\x38\x2c\x10\x8b\x13\x85\xbe\x46\x08\x07\x96\x77\x55\x41\x82\x2f\x57\x21\x62\xf7\x79\x07\x41\x96\x70\xf4\xdd\x81\x23\x11\x01\x0b\x4e\x1f\x02\x0b\x69\x37\xaa\x78\xb8\x50\x17\x36\x1a\x98\x54\x09\x14\xc7\xc9\x68\x7a\x59\x8e\x4a\x15\xfd\xa1\x3a\xd6\x52\x8d\x35\xa0\x0e\x50\x57\x09\x07\x2d\x89\xe0\x06\x52\x3d\xf6\xa8\xca\x4b\xa2\xe8\x94\x56\xd3\x2c\xcf\x32\xf1\x54\x11\x39\xfa\x94\x36\x96\x9c\xe9\x22\xea\xf5\xca\x4a\xf4\x0f\xb7\xdd\x42\xb7\x5b\xd1\x7c\xd1\x6e\x2c\x2f\x09\x22\x64\x37\xf8\x12\x74\xcd\xe8\x89\xcb\xf3\x61\xa0\x23\x0b\x28\x3a\x4b\x6b\xc2\x87\x45\xe5\xf9\x33\x59\x65\x4c\x5b\x31\xf4\xbc\xa3\x13\x2e\x49\x3b\xd4\xd0\xb2\x5f\x96\xdd\xee\x5b\x5b\x65\x09\x44\x23\xa8\x93\xf2\xa9\x51\x3d\x9b\xa7\x4c\x56\x83\xe3\x52\xf3\xae\x9a\x42\x73\x0f\x2d\x80\x3d\x54\x1d\x46\x8c\x1a\xc5\x71\x3e\xb9\xc4\x59\x6e\x1d\xc5\x88\x1b\xf9\x0d\x14\xd1\x50\x43\x0f\x08\x5f\x78\x03\x8f\x76\x14\x21\x0c\xda\x54\x3b\xec\xac\x3d\x91\x8f\x3b\xa0\x1a\xb6\x55\xd5\xe6\xba\x30\x6f\xa5\xcf\xc5\x9b\xe8\xbe\x17\x49\x81\x63\x4f\x80\x59\x89\x18\x75\x38\xf4\x87\xe2\x6d\x74\xa7\xf7\x24\xd6\xe5\x46\x06\xed\x92\xa6\x06\xb3\x60\x74\x4b\x57\x6f\xbb\x5d\x15\x60\x6b\x11\xdd\x8d\x6f\x27\xf4\x94\xd6\x8c\xf1\x42\xb7\xbb\x08\x1e\x97\xc6\xd1\x70\x4d\x53\xbd\xc4\x59\x2e\x34\xc9\x3e\x36\xde\x1c\xfe\x61\x72\x7a\x08\x23\x48\x36\x06\x6d\xdc\x47\x6f\x82\x63\xc6\xea\xcf\x08\x1a\xe9\x05\x1c\xae\xce\xcf\xc5\x14\xb6\x1f\xaa\x38\x63\xa2\x4d\x2f\xba\x15\x54\x10\x1d\xd9\x54\xdb\x4a\x65\x5b\x6b\x1f\xce\x89\x68\xca\x9e\x80\x6f\x2e\x07\xca\x86\xeb\x96\x50\xcc\x96\x3a\x7d\x38\xec\xf8\xaf\x8f\x9f\xe8\x0b\x69\x16\x51\xd2\x7e\xd8\x01\x91\xec\x82\xa3\xc6\x0e\x25\x1c\xc8\xa8\x8b\x40\xca\x3b\xb3\x3a\xd4\x3b\x13\xdb\x04\x80\x57\x31\x31\xa0\x7a\xcc\x11\xbe\x1c\x1b\x11\xb2\x3d\x61\xf0\xa3\x21\x87\xac\x0f\x0c\xc2\xa9\x2e\x37\x8f\x66\xd2\xbc\x8a\xfa\xd8\xca\x6b\x2b\x1b\x05\x0e\x5f\xf2\xa9\xc3\x69\x77\x68\x80\xf2\xec\x6c\xc6\x0e\x7f\x16\x9e\xb4\x39\x11\x0d\x98\x18\x2f\xa2\x3b\xe3\x8c\x28\xcc\x14\xca\x48\x63\x85\x10\x16\xfa\x6a\x44\xd5\x52\x7b\x0f\xa0\x70\xa0\x7b\x53\x73\xd0\x1e\x25\x8e\x81\x73\x69\x8f\xe0\xab\x6e\xb9\x4c\x47\xd1\x55\x27\x26\x44\xd4\x16\x9c\x09\xee\x51\xeb\x08\xb3\x49\x1d\x8e\x56\xa6\x19\xd0\x16\x69\x43\x55\xf0\xb9\x01\x58\x2c\xed\xa3\xc7\x6b\x78\x1d\xad\xc1\x43\xad\x9d\x13\x52\xa2\xf4\x7a\x0d\x9e\x11\xbf\xf9\xd5\x4b\xec\x6e\xff\x86\x0f\x18\x02\x25\x5e\x1b\xa7\x02\xe9\x93\xe2\x3a\x60\x6d\xb0\x43\x0c\x9a\xb9\xe6\x93\x6d\x46\x33\x6c\xf4\x17\x59\x27\x04\xff\x46\xe3\x2c\x57\x4c\x50\x6a\x4c\x18\x25\x11\xed\xa6\x37\xa2\x63\x8c\xd0\x8a\xd1\x8a\x8f\x7e\x2b\xda\x39\x61\x51\xc6\xb5\x16\x04\x24\x63\xad\xc7\x79\x2c\xa3\x9f\xfb\xae\xd3\xb8\x76\x3f\x24\x31\xaa\x46\xba\x4b\x5a\x57\xf4\x13\xa3\x2d\xa1\x50\x37\x03\x59\x44\x37\x15\x74\x09\x5e\x77\x19\xc9\xc1\xc0\xaf\x91\x1d\x65\x97\xef\x1c\x93\xf6\x7b\xbc\xd6\xe4\xad\xdd\xff\x51\x79\x7b\x5e\x6b\x82\x5b\x8a\x21\x06\x39\x35\x46\xa6\x84\x10\xe1\x5b\x9b\xd4\xfd\x4b\x01\x2d\xa2\xd0\x27\x32\x0a\xbe\xfc\x15\x89\x73\x04\x4c\xeb\x80\xb8\x3c\x36\x40\x42\xfc\xa6\x77\x7b\x60\x52\x2d\x47\xe1\x9a\xe5\x10\xfa\x52\xde\x7c\x5e\xa0\x8d\x72\x94\x79\x2b\xbb\x5e\xdc\x89\xa6\x69\x4f\xd4\xe9\x10\xbc\x42\xe1\x5a\xb1\x78\x3c\xe1\xf2\x32\x7c\x87\x01\x69\xbb\x57\x63\x8b\xa9\xb6\x61\xdc\xab\x06\xf8\x50\x6c\x46\x1f\xfc\x49\x9a\xdf\x7b\xc2\xfb\x93\x54\x14\x59\x1d\x5d\x4d\x43\x84\xf2\x90\x54\x0f\x87\x9b\x54\xea\x8b\x0e\xac\x1b\x9d\x17\xe5\x6c\xbe\x3f\xdc\x97\xf9\x7e\xee\x89\x13\x67\xd3\x59\x2c\x0d\xba\xc2\xba\xe5\x96\xf0\xcc\x11\x6a\x55\xdf\x44\x14\xe3\x99\xf4\x62\xb2\xb6\x5f\x0d\x9b\xe6\xd6\xa1\xb1\x62\xec\x82\x5d\x00\x9c\xc1\x54\x0d\xcc\x79\x27\x78\x1c\xa8\xd0\x7b\xcf\xb8\x65\x51\x33\x70\xf5\xe5\xa9\x71\x12\xc3\x2d\x15\x73\x9d\xd3\x8a\x39\x3b\x17\xda\xf5\x8c\x0d\x93\x4e\x2d\x9c\x8a\x10\x56\xeb\x96\x35\x4b\x57\x3d\xfb\x6b\xa3\x4f\x32\x56\x57\x63\x05\xa0\xba\x81\xa6\x36\xae\xcd\x38\x0c\x7b\x4f\xd9\xd0\xe5\x8e\x0d\x5d\xee\xda\xd0\x05\x62\x96\x1e\x61\x16\xb8\xe4\x3d\x1f\xed\x38\x6e\xe4\x66\x1b\xed\xac\xf5\x94\x7a\x34\x26\xee\x47\xc6\xa1\xdc\x6c\x8d\x36\x68\xa9\x68\x19\x95\xb7\x44\x8d\x9e\x72\x68\xd8\x9d\xb6\x43\xe3\x08\x50\x3f\x7f\xfb\x0d\x6d\x02\x7a\xc8\x97\xf4\xc8\x98\x40\xee\xcc\x25\x5b\x27\xee\x75\x23\x8c\x74\x2a\x38\x8e\xd8\x95\x8b\x5f\x9f\x73\x28\x09\x04\x9c\xb8\x88\x2f\xfd\x38\x7c\x7e\x75\x71\x35\xbc\x3c\x20\xa0\xc4\x1b\x7a\xdd\x1f\xff\x1a\xfe\xe9\x6a\x7c\xd5\x17\x93\xa7\x4f\x2e\xac\x22\xe3\x5e\xcf\x2b\xa1\xa1\x4a\x44\xaa\xd4\x9c\xab\x2c\xfb\x08\x0a\x56\x31\x18\x01\xc3\xac\xcf\xfe\x75\xb8\x38\x01\x83\x0c\x98\x55\x1c\x99\x0c\xa5\x0d\x6b\xd0\x96\x7a\xaa\x6c\xbc\xfd\xb8\x19\x40\x8b\x3b\xf8\xc6\xd8\xad\x9a\x2a\x25\xb3\xac\x43\xb4\x21\xc6\xa8\x7d\x62\x98\x88\x77\xb5\x4c\x83\x5e\xa9\x68\x96\x44\x89\x2e\xa3\x81\xec\xc5\x51\x57\x74\x22\x78\x06\x0e\x01\x9d\xa3\x1d\xa2\xc4\x5e\xb8\x5a\x13\xc2\x82\xad\x0d\x3c\x61\xa4\x86\x43\xe3\x71\xb6\xa0\xb0\x62\x84\x84\xab\xba\xb5\x2e\x9b\xb4\xc4\x24\xf7\x87\x24\x98\x56\x8b\x50\xe3\x6a\x10\x69\xdb\x20\xaa\x9e\xd2\x1c\xed\xd7\x89\x4c\xeb\x3f\xb2\xcd\x5e\x9b\xf1\x16\x9f\xbd\x72\x0c\x31\xe8\x35\x15\x7d\x74\x16\xc0\xda\xf4\xe8\x29\xaf\x87\x21\x86\x13\x94\x9a\x72\x47\x83\xce\xfa\x56\x62\x2d\x0b\xa5\x05\x63\xe8\xb2\x1e\x06\x08\x84\xc6\x61\x98\xad\x6a\x46\x29\x06\xdd\x8f\xe4\x14\x00\xb2\x50\xde\xd1\x85\x44\xb5\x4e\x14\x97\xc3\x58\xef\x39\x98\xee\x64\x4c\x89\x34\xfb\xc5\x85\xf5\x5d\x5c\xb9\xeb\xb1\x1d\x5f\x98\x20\x38\xa0\x32\x03\x6b\x99\xdd\x5a\x6b\xf7\x2a\x34\x32\x73\x59\x9d\x61\xc0\x91\x27\x5b\x4f\x59\xde\xf9\xe1\x20\xe0\xd0\xac\x6d\x07\x3f\x1d\x55\xb2\x69\x87\x45\xc2\x9a\xe1\x68\x30\xf5\xa1\xe9\x85\xf6\x02\x3d\x4a\x63\xe6\xb7\xe2\xc1\x8d\x16\xf6\xbb\x0c\x3c\x43\xe8\xc1\x7f\x3e\xbe\xba\xbf\xfa\x69\xd2\xbb\x0c\xc6\xbf\x5e\x4e\x9e\x1e\x54\x30\x9a\xa7\x1c\x7b\xe6\xd3\xc8\xc4\x10\x6f\xe7\xa2\x65\xec\x55\x17\x18\x5a\xf7\xab\x54\x73\x64\x44\xb8\x24\x21\xca\xe6\xc9\xf6\xd3\x3d\x31\x9c\xc4\x65\x5e\x56\x1e\x69\x81\x8d\x64\x4d\x3e\x3b\x95\xdc\x68\xf4\x61\x3c\x96\xf2\x2e\x1f\xbc\x4f\xc2\xdf\x75\x5c\x12\x01\xad\x55\x27\x23\x5e\xb3\xdb\xd5\xdc\x62\x27\xc5\xd9\xb0\x8c\x38\x1e\x43\x3f\xf4\x36\x50\xa0\x13\x84\x8d\x30\xcf\xa9\x79\xc7\x8a\x1f\x1d\xdf\x84\x58\xcd\x33\x82\xcd\x7d\xb2\xca\x38\x3a\x7d\x8c\x1d\x1e\xa6\xc2\x0d\x05\x4e\x37\x1c\xec\x16\x34\x99\xbf\x14\xa9\xb6\x48\xe2\x6d\xdd\x12\xc6\xe5\x81\x17\x5a\xdc\x29\xe3\x46\xb4\xd6\x8c\x69\x9c\xca\xd0\xca\x32\x54\x64\x50\x41\xc3\x2a\xb4\x75\x10\xab\x0b\x29\x85\xc8\x51\xb1\x19\x5c\x26\xf8\xc9\xc8\x59\x91\x23\x87\xf1\x7c\xa8\xfb\xed\x66\x88\x7d\x22\x72\xf6\xc0\xb4\x3c\xe0\x23\xeb\x0a\x4a\x04\xfe\xc9\x9c\xe0\x28\x6f\xcd\x24\x39\x81\xb9\xa3\x21\xef\x5a\x48\x11\xc6\x69\xd3\x8d\x74\x1e\x3d\x88\xca\xf6\x8a\x12\xbe\x3f\x56\xac\x1e\x79\xa6\xfc\xca\x67\xba\x52\x59\xbc\xda\x58\x10\xd6\x03\x25\xb6\x99\x1c\xbe\xed\x23\xa4\xdb\x43\xac\x7e\x79\x67\xf8\x4b\xa2\xfe\xc6\xe4\x3e\x31\xbd\x22\x6c\x5d\xeb\xa5\xb9\x14\x95\x6e\x25\xfa\x0a\xd1\x0e\x4d\xc4\x52\x3f\x51\xa8\xeb\x38\xfa\xd4\x39\x15\xc2\xbe\x21\xe1\x7f\xe9\x3f\xc8\x0d\xf8\x99\xdc\x71\x72\xa6\x77\x07\x18\xb7\xd1\xed\x8f\xab\x7d\xb9\x38\xb0\x73\xe9\x85\x78\x11\x3d\xb2\xcd\x16\x95\xe0\x03\x2e\x69\xb5\xb1\xc3\x35\xce\x90\xf9\x80\x8b\x3e\xc3\x19\xd5\xc8\x06\xae\x86\x31\x74\x3b\x4d\x62\x01\x17\x9c\x90\xd6\x52\xcb\xe8\x3f\x85\x1b\x32\xc3\x04\x10\xce\xa4\x43\x58\xe1\x3a\x84\x2d\xfd\x22\xa0\xc9\xe6\xf0\xdc\xc3\xa8\xfa\xa5\x12\x79\x0b\x44\xf8\x28\xd0\x86\x39\xca\x10\x3b\x79\xd8\x1d\x9e\x3a\x95\x1c\x4f\x5a\x4e\xc6\xeb\xc1\x3d\x92\x0e\x9f\x1f\x67\x2a\x56\xa8\xa3\xf8\xe6\x60\x93\x0e\x31\x83\xa5\x4d\x1b\x2d\x5b\xea\x95\xe1\x0c\x0c\x8a\x96\xb9\x50\x7a\x9a\x4c\xe5\xad\x64\x4a\xc6\xd6\xa4\xb1\xba\x64\x8a\xa4\xa5\xc5\x7a\x57\xb8\x51\xee\xab\xc3\x55\x2e\x53\x6e\x3c\x7b\x9c\xac\x89\x59\x64\x50\x37\xf1\xd3\x0d\xfa\x0a\x74\x2e\x52\x1b\x96\x9e\xe1\x2e\x1c\x98\x43\x01\x46\x10\x72\xa7\xe4\x93\x11\xf4\xd5\x98\xb0\x51\xdd\xd9\x09\x61\x85\x8c\xbd\xc1\x10\xea\xde\x59\x3c\x93\xb6\x2f\xca\xcc\xb4\xee\x8f\x7d\x82\x17\xe1\xa0\xb9\x34\x2c\x73\x8c\x5c\x39\x32\xab\x51\xb6\xa9\x3d\x3f\x31\x74\x18\xda\x19\x36\x41\xa0\xa6\x5b\x6d\x31\xe2\x96\xc0\xbd\x96\x1b\x53\x38\x41\x80\xca\x31\x0e\xd0\x5c\x9a\xc6\xf3\xd0\x1c\x87\x6a\xc5\x43\x55\x9a\xc8\xa3\xbc\x70\xa3\x12\xa8\xb5\x27\x49\xc8\x0f\x38\x03\x00\x5c\x5c\x35\xbd\x44\x58\x17\x91\xe4\x79\x7b\xcc\xe8\x46\xce\x05\x35\xb6\x4a\x7e\x08\x42\xb3\x24\xfa\xf2\xf2\x05\x1c\x70\x95\xaa\xfb\xac\x9e\x57\xc2\xad\x90\xde\xfb\x3a\x42\x72\x2d\x2d\x41\x58\xbb\xd7\x30\x0b\xad\xa8\x1b\xee\xf4\xa5\xec\x66\xbe\x86\x5d\x98\xdd\xf1\xc4\x1f\x0c\x3b\xee\xbe\x72\x0e\xdc\x55\xc0\xd6\xc7\x16\x7b\x13\x6d\xe6\xd1\x74\x20\x4d\x95\x93\x97\x4b\xe4\x94\x9f\x91\xc2\x6c\x6d\xa3\x5c\xe2\x0c\x13\x0e\xb7\xce\x01\x66\x60\xbe\x60\x1c\x78\xca\xde\xbb\xed\x53\x58\x14\x4a\x8c\xd8\xd2\x16\x66\xa2\x62\x7e\x1b\x1c\x25\xd6\x3c\x55\xb6\x6e\x66\xac\xea\x26\xa0\x78\xe7\x50\x5a\x9a\x78\xdf\x27\x27\x5a\xfa\x63\xe3\x77\xdb\xe3\x09\x40\x6d\x7f\x70\xea\xea\x86\xd4\xf8\x5c\x21\xe9\x13\xeb\xa5\xde\xc2\xf7\xd0\x4e\x3c\x52\x4b\x04\x8e\x0e\x01\x12\x95\x30\x14\xeb\x9d\xf5\xb8\xaa\x07\x7c\xa4\x49\x5b\xeb\x47\x5a\xa1\x80\xbe\x97\xd3\x2d\x87\x7a\x89\x15\xf1\x5d\xed\x1d\x8f\x3d\xfd\x48\x86\xec\x35\xdc\x6d\xa8\xb7\x23\x61\xd9\xc4\x8d\x17\x08\xe7\x8e\xca\xb6\x06\x1d\x81\x39\xb0\x79\xea\x1c\xfd\x38\x09\x55\x52\x2b\x6c\x78\x3c\xe5\x15\x3b\xf9\x8f\x03\x3e\xdf\xcc\x98\x97\x6a\xe0\xb0\x9c\x0f\x3a\x8d\x18\xca\x67\xab\x2e\x5b\x03\x65\xb7\xff\x82\xed\x85\xb9\x9c\xc2\x28\x28\xf5\x99\xd5\xd4\x41\x8b\x4b\xac\xcc\x9b\x62\xcb\x66\x4a\xaa\x06\x47\xe2\x09\x34\xa3\xff\x79\x74\x71\xf5\xaa\x77\x31\x13\x5f\x44\x8f\x8e\x81\xc2\x5f\xec\xbe\xfe\x02\x23\x7e\x34\xaa\x73\x85\x07\x12\x89\xf1\xfd\xcf\x59\xfb\x2a\xaa\xf6\xc1\x1c\xac\x1c\xd4\x4e\xa4\x84\x37\x5e\x90\x7c\x9f\x52\xab\xd5\x68\xc6\x24\xf1\x36\xf1\xf7\x17\x3c\x30\x34\x1e\x5a\x8e\xe5\x28\x94\x87\x65\x25\xf8\x31\x68\x62\x09\xc7\xed\x35\x71\xdc\x7c\xfc\x72\x6d\xeb\x5f\x48\x82\x0a\xa3\x8a\x65\xb1\x5c\x6f\x1f\xba\xdd\x05\x11\x56\x98\xfe\xe0\x94\x10\xe1\xc1\x41\x64\xe7\x26\xe2\x14\xbd\x1a\x21\xd4\xb8\x0a\x0a\x0e\xf3\xfe\xf1\x54\x9f\x9c\x2d\x40\x48\x16\xe0\xbd\xd9\x7e\x91\x3d\x0f\xf7\xeb\xcd\xf7\xab\x2f\x92\xc5\x8e\x58\x60\x98\xbc\x28\xfa\xc6\x09\x49\xa8\x22\xbf\x8c\x4b\x23\xbd\x5f\xfb\xa5\x56\x37\x93\x70\x19\xa3\xeb\xe1\x8d\x36\x73\x64\x2b\xb2\x9b\xe8\xb1\x42\x44\x64\xa0\x44\xcd\x98\xe9\x6e\x8e\x4c\xb2\xac\x33\x8e\x35\xaf\x96\x22\xad\x65\xf0\x91\x1f\xa9\xd8\xd5\x04\x89\x95\xa8\xd5\x39\xed\x0c\x09\x33\xdd\xee\x0d\x4c\x3c\x39\xbb\xca\x5c\x93\xe9\x90\xed\x4c\x75\xc7\x2d\x9b\x01\xff\x0d\x38\x9a\x10\x03\xe3\x84\x07\x17\x70\x36\x31\xc6\x2f\x9c\x33\x25\xca\xc5\x35\x18\x40\x97\xd2\xc3\xd9\x0f\x01\xe1\x5a\xd2\xea\xcc\xc1\x40\x48\x80\x32\x51\xcb\x5b\x6c\xcd\xb5\xb9\x2d\x86\xa5\x29\x79\x26\xe6\x38\x29\x21\x9e\x24\x98\x1b\x07\x4e\x28\xc0\x11\xa2\xba\xb8\x44\x8f\x0b\x9c\x60\xf1\xd5\xf4\xfc\x1c\x8a\x53\xd9\x9b\x3a\x07\x68\x38\x0a\x57\x99\x33\x67\x6e\xa7\xe3\xab\xc0\x94\xfa\x80\xa0\x6e\xc9\x69\x47\xa2\x9d\x58\x65\x1b\x6a\x75\x5b\x0b\x96\x51\x16\x49\x46\xba\x5a\xb8\x25\xef\x50\x67\x7e\x14\x8b\xb5\xcb\x0c\xd8\x38\x6b\xba\x0e\x62\xc5\x1d\x68\x52\x55\xe2\xa3\xd6\x0a\x4b\xb6\x59\x2c\x7e\x2a\xf7\x95\xb4\x14\x36\xc2\x1f\x8d\x17\x86\x18\x25\x1b\x4c\x65\xbc\xbb\xd9\x75\x40\x99\x1f\xc7\xda\x0c\x99\x60\x85\x04\xd8\xb8\x34\xa0\xc3\xeb\xae\x9a\x47\x13\x2d\x7d\xbe\xe9\xeb\xb6\xeb\xf9\xa1\x9c\xef\xda\x7a\xdd\xc9\x8f\x06\x03\xdd\xb8\x79\x78\x5e\x22\x72\xf7\xb6\xd5\x3c\x78\x3c\xf6\xb6\xc5\x6e\xbd\x78\x03\xa5\x76\xbe\x5e\xd1\x8f\x83\x8c\x10\x74\x2c\x2b\xce\x24\x7a\x80\xca\x5b\x95\xcd\xbd\x89\xc0\x87\x1c\x23\x53\x78\xd3\x84\xd0\xf7\x7b\xbe\xbb\x66\x4b\x5f\xfe\x6e\xb5\xde\x97\xd3\x07\x0f\x44\x74\x3d\x83\x1b\x74\xed\x5b\xfd\xd9\x04\x93\xea\x21\xda\x0b\x53\xd8\x3c\x7a\xdc\xed\x93\x7d\xdb\x94\x65\x84\xfe\x16\xf7\xc9\xc3\xae\xe5\x5d\xd1\xc7\xb0\x9c\x0d\xd9\x47\x77\xfd\xc6\xac\xee\xe7\x2e\xc1\xd5\x61\x29\x4d\x31\x8b\xda\xf5\x6c\x3a\x61\xfa\xda\xd1\x8c\x3a\x6c\x9c\x45\x55\xe9\x1a\xc2\x0e\x7c\x39\x89\xa3\x2c\xc6\x88\xfd\x3a\xf1\x1b\xcd\xce\x10\x8c\xae\x35\x47\xd8\x48\xe5\x6b\xb2\xf5\x41\x40\x5e\x96\x84\x63\x63\x73\xe9\x07\x72\xd0\x59\x5f\x2d\x98\x1a\x34\xee\xb1\x10\xe0\xd1\xe5\xd4\xb3\x28\x83\xe5\x20\x48\xa5\xce\x0c\x26\x3d\x0f\x90\xe7\x4d\xb8\x5d\xc6\x85\x99\xad\x55\xe6\xe4\x9b\xc9\xdc\x1f\xa6\x4b\x08\x2a\x28\x12\x19\xbf\x32\xb0\x85\xc1\x4e\xf1\xe5\xbb\xf2\xc9\x19\x20\x85\xbe\x3b\x24\x00\x26\xf4\x60\xe9\x28\x09\xc4\x25\x5b\x83\x62\x71\x44\x73\x8e\x13\x3b\xc7\x88\x3a\x4b\x04\x0f\x31\x64\x47\xb9\x9c\xd6\x68\x06\x31\x00\x94\x86\x2f\xdc\x59\xce\x22\xc2\x19\xe9\x78\xf8\x6b\x32\xa1\xef\x34\x62\xa0\x27\xcf\xf8\x1e\x88\x81\x84\x70\x9e\x90\x49\x4b\x72\x88\xa2\x75\xaa\x8a\x38\x0f\xdb\x77\x6c\xb5\x3c\xf5\x4b\xef\x70\x0e\x57\xa6\x67\x0c\x87\xaf\xec\xfa\x09\x5d\x7f\x21\x0a\x3e\x37\xbc\x9f\x17\x6d\xf6\xe2\x30\x86\x6c\x64\xa2\xe0\x64\x88\x46\x1e\x66\xd5\x03\x71\x74\xa7\xe1\xa5\x08\x41\xe4\xd9\xd5\x3e\x4e\x42\x07\xb2\x61\xd7\x79\x82\x03\x36\x8f\x0b\xb0\x30\xc4\xf5\x28\x09\x9e\xae\xea\x89\xd6\x48\x52\x6d\x74\x31\x2c\xd8\x63\xa4\x8c\x67\x0a\xee\x18\xcf\xa1\x81\xf0\xfc\x7c\x7a\x38\xcc\x34\xc4\x9a\xe7\x04\x12\x7c\x5c\xcf\xe7\xee\x97\x43\x16\xd2\x4b\xb6\xff\x95\x54\xa8\x80\x27\x5f\xe5\xf6\xa6\x72\x6b\x54\xdd\xd0\x32\xd4\xe6\x02\x8f\xec\x74\xb8\x77\x7a\x07\xa1\x0f\x37\x48\x7b\x26\x37\xd0\xac\xb9\x81\x50\x02\x96\x62\x3c\x00\x13\xef\xae\x3e\x12\xd4\x21\x66\xce\xe6\x50\xac\xe5\x97\x9c\xd6\x51\x6a\xd4\xa2\x56\xce\x9d\x5f\xd5\xbb\x95\x68\xc8\xb2\x48\xde\xe4\x4d\x1b\x0a\xfe\xe4\xa7\xa4\xdc\x87\xc4\x67\xad\x17\xb9\x7c\x51\x61\x2c\x63\x55\x31\x4a\xf5\x7a\xa1\xba\xf3\x3b\x88\x22\xbe\x6d\x14\x57\xe1\x6b\x3a\x83\xb8\x73\x7e\xee\x7c\x19\x72\xa2\x32\xae\x5e\xe6\x0b\x7d\xe8\xa7\x6b\xba\x56\x9d\xdf\x15\xfb\xd7\xe5\xb2\x58\xdf\xed\x7d\xf5\x11\x8e\xfb\xd4\x07\x1c\x77\xb7\x83\x4a\xbb\xdd\x4a\xa5\x97\x03\xa2\xaa\x5f\x56\x66\xef\x41\x8c\xe1\x5a\xc8\x53\x45\xdc\xd6\x6c\x56\xa8\x60\x09\x50\x34\x42\x1d\x58\x7b\xea\x7b\x5c\x9b\x07\x95\x01\xbd\x5c\x4f\xa7\xe6\x09\x84\x7c\x57\xca\xff\x8a\x76\xf5\x43\x33\x5a\xa7\xff\xa0\x02\xf4\xd6\x22\x76\xbe\xfc\xfe\x5b\xe5\xf9\xf5\xcd\x3a\xc9\x11\xe8\xeb\x6b\x9c\x0c\x88\xa4\xbd\xb8\x8c\xd7\xc9\x45\x82\x90\xea\xcc\x8b\x4a\x40\x4f\xee\x13\x13\xb5\x6c\x9e\xac\x66\x44\x7c\xbf\x46\x55\xb5\x52\xaa\x92\xc0\xb1\xce\xfa\x9a\x7a\xed\x37\xbb\x7d\x38\xc8\x16\x81\x8c\xf0\x5c\x7b\x87\xc0\x14\x00\x71\x1c\xf1\xe2\x41\xce\xf4\x2b\xb4\x0a\x29\xe8\x2b\x28\x56\xd4\xf2\xb3\x5d\x58\x05\xe0\x22\xd7\x11\x0b\x2b\xfc\x25\xf8\xfe\x2f\xa3\x0a\xb2\x38\x5d\x7f\x1b\x04\x68\xdf\xd6\x66\xf7\x83\xe6\xa3\x77\xcd\x78\xb3\xac\x33\xdd\xd2\xdc\xef\xa1\x1e\x42\xf5\xc4\x8c\xd7\x4a\xe9\x19\x97\x01\x9a\x22\x95\xce\x2e\x8b\xf4\x89\x3a\x0b\xd0\xc6\x27\xec\xa1\x1e\x2e\x4c\x85\xe4\x21\xb1\xf7\xc8\xa2\x42\xbe\x7e\x95\x6d\xd7\x8b\x05\x0c\xb4\xf4\x0a\x16\x52\x7e\x71\x37\x10\xb7\x61\x0a\xd3\x68\x8a\xe9\xde\xd3\xd1\xa5\x2d\x4a\x70\xe6\xb4\x10\x1f\xd3\x86\xad\xac\xe0\xf1\xe8\x1b\xb9\xe2\x4b\x83\x36\xd2\xe0\xc8\x63\xf9\xab\x1b\x77\x53\x7c\xc3\xc7\x81\xdf\xe0\x48\x64\xe9\xdf\x68\x9f\x5d\x93\x3a\x0f\x76\x7b\xb4\x41\xbf\x11\x37\xc4\xf2\x2f\xe8\x93\xcf\x40\x17\xbf\xc3\xa9\xf8\x37\xc9\x03\xb5\x0f\x39\x6e\xd9\x60\x5e\xa4\xd1\xf2\x28\xab\x9c\x8e\xb8\x61\x5f\x81\x22\x3c\xb6\x45\x92\x0e\x7b\xfb\x07\x44\xaa\xf1\x53\xfa\xa0\xcd\x32\x45\xe4\x27\x5f\xc8\x6f\xfb\xd9\x6e\xc7\x41\x67\xbc\x8d\xb2\x71\x09\x93\x94\x90\xc7\xdd\xbe\x18\xa5\xeb\x2d\x7c\xb9\x06\x23\x36\x33\xa1\x5f\x69\x75\x42\x17\x24\x9c\xd2\x5f\xcc\x71\x78\xfe\x67\xfa\x6f\xf3\x16\x61\x2f\xdc\xe8\x82\x79\x50\x0b\x36\x28\x4c\x5c\x50\xd9\xee\xef\xeb\xf5\x92\x26\xe8\xaf\xe8\x7c\xbd\x2b\xc4\x52\x20\x7d\x4e\x28\x67\x6e\xb4\x24\x12\x58\xae\xa8\x41\xd3\xa1\x0d\x81\x2f\x34\xfa\xc3\xcd\x5b\xd5\x39\x5c\xa1\xca\x70\xe8\x9d\x9e\xf2\x24\xfa\x90\x4f\xbd\x09\xa7\x11\x20\xfc\x84\x0f\xc1\x35\xf8\x99\xd3\xa7\x68\x08\x23\xbb\x4a\x84\xf1\x9c\x0d\x7c\x1a\x7c\x66\xfb\xc4\x8e\x54\x7a\xd2\x28\x22\x99\x89\x03\xc0\x7e\x2e\x33\x79\x06\x8f\xb5\x07\x50\x09\x00\x6c\x55\x98\xd8\x84\xb5\x2b\x0a\x62\xd3\x96\xd2\xc3\xe3\x51\x31\x8a\x0c\xb3\x49\x96\x15\x9b\xfd\xcb\x64\x9f\xb4\xc4\x92\x85\xd2\x0a\xaf\xc6\x8e\x0b\x9d\x8c\xe9\x50\x0b\x1a\x85\x54\xb6\xce\x11\x8b\x89\x28\x3e\x94\x39\x4a\x71\x3e\x93\x21\xf1\x14\x1f\x61\x2a\x8a\xd3\x1a\x2f\xc3\x44\xbe\xe5\xbd\xf2\xad\x3a\xcf\x7d\x94\x87\xb9\x4f\xaf\x8e\x87\xab\xb1\xbe\x9e\xe0\x24\xf7\xbb\xe8\xc2\x1f\x7f\x7a\xfe\x4f\xe4\x71\xb6\x14\xe5\x7b\xc7\xdc\xc3\x1e\x05\xd5\x43\xad\x9b\x0c\x21\x39\x0d\xf1\xdc\xeb\xd9\x80\x63\xdf\x09\xef\x1c\xc6\xbd\x35\x47\x40\x3e\xeb\xad\x75\x3b\x0f\x9a\xe7\xd7\x99\x42\x24\x91\xb7\xdf\xde\x31\x46\xce\x38\xc1\xd6\x14\x7a\x18\x75\x3b\x0c\x3d\x2c\x82\xbc\xe3\xb0\x31\xbd\xac\xe7\xc9\xdb\x5e\x16\x7e\xab\xc3\xc4\xc4\xea\x30\xf6\xeb\x57\xdf\x7f\xc7\x8a\x0f\x27\xd8\xd8\xb2\x8f\x9e\xab\xb1\x4a\xfb\x76\x2d\xb1\x1f\x9b\x0e\x15\x3f\xf8\x6d\x79\x49\x61\xf5\xc7\x13\xc0\x81\xbe\x71\x3a\xd6\xaf\x64\x35\x95\xc2\x12\x3b\x24\xae\xd1\x07\x2e\x66\xbd\x40\xfe\xe3\x7f\x99\x33\x23\xd3\xd0\xdf\x6c\x3e\x10\x3e\x69\xb2\x20\x06\x05\xbf\xf6\x66\x27\xfe\x96\x4d\x7d\x00\x95\xec\xcb\x61\x52\x7d\x5c\x13\x6f\xba\x94\x39\x06\xc2\x84\x58\xc9\x32\x86\x2b\x47\x88\x3f\xdd\x2e\xdb\x6d\xdc\x20\xf2\xc2\x0d\x3b\x5b\xc0\x87\xea\x66\xc2\x13\x11\x1c\x0e\xe6\x1c\x34\x6f\x39\x7c\x32\x56\x97\x37\xc4\xdd\xe8\x6a\x23\xe5\xdc\x6e\x53\xc5\x85\x73\x62\x67\xa9\x4e\x2a\x84\x1f\x2a\xf7\x78\x0c\x1f\xe5\xe8\x43\xec\x88\xf5\x06\x2e\x3b\x8d\x2c\xa3\x69\x6b\x96\x51\xce\x10\x5a\xc4\x5c\x93\xcd\xe3\x4b\x77\x88\x06\x68\xba\x5e\x7d\xc5\x8f\x38\x88\xcf\x8c\x7d\x2e\x04\xfc\x39\x66\xfc\xd4\x5c\xb0\xdf\xd0\x2c\x92\x37\x81\xb0\x03\xe7\x8c\xc0\x98\x3e\x95\x63\x94\x90\xc0\x24\x6a\x83\xd2\x34\xe6\x58\x01\xe9\x44\x48\x44\x33\x65\x83\xcf\xc6\xb7\x01\x32\x14\xcf\xc4\xd4\x71\x2a\xfa\x7b\xc5\x9a\xaa\x65\x79\x73\xe5\x0a\x61\x96\x94\x84\x43\x67\x49\xe7\x10\x76\xc6\x66\xf5\x27\xa1\xb9\x64\x1f\x2c\xf8\xed\xb0\xad\x82\x54\x40\xc7\x78\x10\xe2\x8f\x1c\x2b\x24\x7d\x9d\x9a\x37\x0d\x62\x18\xcf\x2a\xeb\x7d\xa9\xdb\x86\x31\x83\x19\x01\xf5\x9e\x01\x3d\xa7\x72\x34\xd4\x90\xf3\x33\xbb\xe3\x13\xd2\x22\x82\x0a\xe0\x75\xea\x64\xea\x0b\x5c\xa7\x25\x27\xc9\x83\x0a\xc7\x3d\x4e\x91\xe0\x81\x71\x42\xdc\xf9\x01\xe1\x44\x1b\x5b\xc7\xb8\x4b\x1d\x7d\xf8\x2b\xaa\x2f\xcd\x48\xc4\x0f\x72\xac\xec\x95\xc4\xf3\x83\x14\x83\x3c\x91\x88\x35\x49\x82\x40\x58\xc3\xde\x24\xd2\x74\x68\xc9\x55\x92\x7e\xa7\x3e\x9e\x9e\x48\xa6\xf6\x3e\x1e\xad\x44\x22\x67\xfc\x11\xa6\x3b\xa8\x37\x7c\xf4\xa0\xd1\x28\xf6\x67\x1e\x8e\xdd\xbd\x62\x99\x16\xb9\xba\xd6\x59\x08\x43\x42\xc4\x84\x86\xc3\x97\xcf\xfe\xf7\x8b\x97\x9f\x7d\xf2\xf9\xf9\xa7\x9f\x7f\xf2\xf2\x7c\x38\xcc\xa6\xe7\x7f\xfe\xe4\xb3\xff\x3a\xff\xe8\xa3\x8f\x3e\xfe\xf8\xc3\x8f\x3f\x1a\xd0\x7f\x1e\x2b\x29\xb9\xe6\x56\x6b\xb7\xc4\xb5\x05\xe3\xbe\x8c\xdd\x75\xc7\x9e\xb6\x77\xa2\xd3\x41\x9c\x99\x1f\xd8\x01\x3c\xaf\xd6\x59\x91\x7f\xff\xa6\x31\x9e\xd2\xd7\xbe\xac\x97\x35\x25\xff\xae\x82\x25\xfe\xf6\x07\xaa\x13\x2c\x78\xfd\xf6\x87\xaa\xe4\xb2\xf5\x03\xfb\x46\x1b\xc6\x9a\x88\x77\x83\x3e\xe9\x9d\x61\xa3\x4d\x1d\xcb\xd8\x91\x4b\xa4\xa4\xa4\xe7\x1c\xa4\xa8\x73\x16\x46\xf4\x53\x69\x6f\x37\x75\x8e\xb5\x09\xe6\x7e\x93\xef\xf8\x2c\x71\x57\xe4\x20\x4d\x3b\x08\x59\x44\x7f\x66\x4d\x1b\xff\xd9\x38\x93\x8e\x6b\xb8\xe8\x23\xe4\xb2\x18\xb0\xd5\x9e\x89\x3d\x26\xa9\xa1\x3c\xfd\x71\xf7\x4a\xae\x14\xaa\x1f\xd3\xce\xf8\x5e\xfa\xd3\xc1\x67\x31\x80\x40\xd9\xda\x07\x9e\x25\xad\xae\x51\x17\xcd\xdc\xcc\xf2\x6c\x98\xd5\x4a\x0e\x6f\xa4\x46\x2c\x75\x39\x08\x5d\xd2\xa2\xd9\x78\xff\x87\x9c\x72\x39\x9c\xc6\xe8\x2e\x4c\x0b\x55\x2f\x93\xc0\x09\x94\xde\xb6\xde\xb5\x84\xfe\x8d\x26\xec\x47\xb6\x87\x12\x1e\x34\x30\xdc\xde\x15\x77\xc5\x89\x0c\xbc\x46\x8f\x0f\xe7\x01\xa6\x1a\x6f\x11\x2a\x8b\x3f\x81\x8e\x55\x4f\x27\x07\xad\xc1\x69\x45\x27\x97\x39\x3c\x75\x56\xf9\xb8\x52\xa6\x62\xb5\x83\xec\xf0\x26\xf4\x3c\xb1\xe7\xec\x73\x60\x06\x9b\x17\xcd\x7e\x05\x8f\x9c\x76\x0b\x9d\x50\xb2\xd6\xb2\xcf\xa5\x64\xfb\xd6\xc8\x84\x55\x5b\xc6\x2f\x19\x3d\xe0\x62\x5f\xae\xd7\x37\x3b\x13\x60\xa7\xb2\x10\x85\xad\xe7\x38\x82\x6d\xb5\x56\x36\x43\x38\x66\xc0\xb6\x15\xe6\x04\x9b\xf0\xa2\xf4\xd1\x91\x48\x19\xc9\xe8\x90\xb6\xee\xb7\x54\x54\xe2\xbd\x29\x9f\x6e\x89\x42\x1b\xe6\xce\xd8\xe5\xb2\x83\x53\x14\x6c\x30\x3e\x00\x61\x2d\x1f\xf4\xa0\x4e\x5f\xdb\x73\x31\xab\xf9\xe7\x12\x9e\xd5\x34\xeb\x59\xce\x98\x41\x30\x77\xe2\x51\x9e\xaf\x9c\x56\xb8\xd7\xd5\x9d\xf4\xb1\x03\x35\xd4\xb2\x5e\x70\x40\x4d\xf5\x55\x26\x73\xc4\xd4\xf1\x4b\xdb\xd2\xc9\xce\x3f\xd3\xa7\xb8\x0d\x73\x1b\x96\xe9\x90\x89\x17\xb3\x2a\xb0\xff\x45\x7d\x23\x3d\xcf\x62\xbd\xe0\x1a\x45\x99\x3c\x02\x1c\xa7\x0d\x4f\xc3\xd6\x8d\x50\x05\x17\xb3\xe5\x46\x55\xd0\x50\x3b\x44\xa8\x85\x45\x92\x1b\x67\x39\xd9\x20\x6f\xc0\x5a\x41\x0d\x2f\x76\x4b\xb5\x00\xec\xfb\xb6\x66\x4b\x25\x20\xab\xdb\xbf\xbd\xb3\x1e\x05\xa8\x72\x1b\xc0\xc5\xb6\x4d\x73\xee\x7a\x59\x0d\x45\x51\x55\xc0\x48\x04\x0f\xf3\x27\xc7\x22\x6a\xee\x6e\x88\xf3\xf3\x1c\xd1\xee\x5c\xa5\xda\x54\x20\x59\x34\xed\x8d\xd3\x0b\x27\x17\x82\x7d\x82\xd4\x26\x75\x12\x0d\x19\x34\x80\x68\x55\x22\xa9\xc0\x70\x20\x45\x7b\x86\x53\xe0\xf2\x5e\x4f\xa8\x3b\x06\x4d\xc7\xe3\x79\x4e\xdd\x2f\x5c\x3d\x85\x52\x8c\xbe\x42\x82\xc6\xf3\x49\x0c\x09\x2c\x7f\x7a\xd5\x3f\x04\x57\x79\x8f\x6e\xc6\xc5\xe7\x13\x7e\x41\xb7\x87\xe0\x42\x25\xa2\x12\xaf\xa3\xb1\xf7\x7a\xbd\xf1\x84\xf7\x77\xc8\xf7\xf4\xfb\xd9\x7a\xbf\x5f\x2f\xe9\xe2\x1b\xa8\x51\x26\xe2\xc7\x53\xf9\x7a\x09\xff\xc0\x16\x04\x67\x5f\x04\x21\x4b\x88\xf0\x32\xb0\x3d\x0b\xf0\x88\x89\xd4\x71\x0c\xd6\x6a\x31\x8e\xd9\x5e\xe3\x1f\x91\x64\x44\x77\xbb\x9a\xd6\x5c\x9f\xc4\x2b\x77\xff\x36\xbf\x71\x82\x40\xb6\xee\x35\xa4\xc9\x1e\x4a\x07\x8f\x05\xe4\x6b\xc8\x4b\x73\x70\x89\x59\xa0\x9b\xe1\xda\xe7\x22\x23\xbe\x4b\xe0\xbc\x9e\x5a\x30\x21\xe3\x2a\xcc\x38\x2a\xa8\x66\xc1\xce\xe1\x71\x3b\xe3\xe4\xc4\xd7\x6c\xb9\xe6\x5b\xe7\x02\x9d\x85\x2c\x08\xfd\xeb\x28\x15\xcd\xa4\x96\x3a\x1a\x80\xfc\x82\x43\x42\x67\x9c\xb3\x40\x59\xd7\x1a\x0f\xf8\x94\xe3\x7f\x21\x32\x40\x9c\x87\xfa\x10\x00\x4f\xe6\x42\xbf\x0a\x2c\x0c\x14\x71\x12\x5e\xc7\xba\x1f\x41\x58\xc6\x29\x47\x1a\xc5\xa9\xc0\xf4\x28\x7e\x92\x82\xb8\x0e\x4e\x72\xe0\x70\x25\xc8\x08\x6a\xcf\xfa\x4f\x2b\x34\x54\x62\x09\x71\x52\xbb\x94\x99\x17\x7a\x4d\xbf\xd8\x26\x33\x2e\xa1\x9c\x2c\x1c\x1f\xa1\xb3\xb3\xe7\x8b\x72\x75\x73\x71\xf9\x9c\x1d\xb9\x2e\x9f\x5f\xa8\x5f\xed\x16\x75\x91\x7c\x70\x99\x70\x5e\x12\x6e\xf8\x8c\xed\x56\x3f\xd0\x5d\xff\x00\xde\x45\x37\x04\x00\x09\x54\x3f\x3f\xcd\x4b\xe2\xc0\x36\x24\xf3\x2b\x9d\x8e\xe3\x4a\x64\x84\x97\x9b\xfe\x1e\xfa\xb2\xa8\x73\x22\x31\x8c\xb7\x97\xea\x34\x0d\x55\x37\xfd\xf9\x7e\xb9\x78\x55\x6c\xcb\x64\x81\x98\x28\x9d\x93\x1f\x62\x20\xf5\xef\x3e\x7e\xb1\xa0\x7d\x10\x79\xcf\xc3\x55\xf2\x86\x46\xc7\x3f\x40\x93\x8d\xc9\xa3\x17\xf4\x71\x86\xe2\xec\xed\x43\x00\xd5\x5f\x13\x47\xc9\x13\x25\x64\xdc\x20\x95\x66\x9a\x06\xee\x09\x13\x59\x0a\x10\x99\xd5\x52\xbc\x50\xeb\xfa\x81\x2c\x63\x4a\x8b\xca\xf4\x3f\xd7\x69\x61\x2f\xdf\xd2\xcc\xeb\x6b\x4c\xe9\x6a\xcd\x3d\xd7\xdf\xb3\xcb\x4c\xa5\x6f\x26\x20\x64\xc5\x77\xaa\xd6\x13\x48\x64\x4d\x97\x30\xb5\x88\x0c\x76\x1f\x9c\xe9\x61\x7c\xa0\x2e\x3e\x38\xe3\xa4\x22\x1f\xec\xd5\xe2\xf2\x63\x39\x8d\xf5\x3e\x9c\xea\x91\x1e\xab\x19\x06\x2b\xa2\x31\x51\x69\x35\x23\x98\x9f\xd6\x35\xd5\x19\x71\xc5\x37\x9e\xab\xd8\xab\x57\x32\x84\x85\x51\xa3\x23\xf4\x95\x1f\x04\xe2\xbf\xa5\xe5\x4b\x5d\x2d\x5f\xde\xae\xe5\x3b\xfa\x0d\x6d\x23\xe3\xc3\x53\x1a\xc7\x96\xe0\x41\x52\x41\xcf\xa1\x88\x10\x61\xad\x5c\x71\x20\xa1\x0c\x81\x41\xbd\x5e\x2a\xfc\x9b\x31\xb1\x31\x9f\xdd\xa5\xb4\xff\x76\xde\x24\xca\xa4\x4a\x09\xa2\x6e\xd5\x67\x2f\x13\x1e\x10\x40\xad\x78\xee\x08\x41\x10\x46\x94\x20\xc8\xc6\x4b\xc1\x28\xd7\x4a\x4a\xa6\x45\x3f\xbf\x23\x41\x31\x67\x26\x46\x06\xe3\x9b\xe2\xe1\x82\x53\x14\x53\xc9\xe5\xfa\x6e\x57\x1c\x36\xeb\x72\x45\x1b\xe2\xa0\x2c\x8d\x69\xb8\x77\xc1\x81\xa7\xfe\x82\x13\x18\x53\x41\x35\x32\x99\x72\x9d\xff\xd2\x1e\x4a\x17\x77\x5b\xa8\x17\x39\x93\xf1\xf8\xd7\xfe\xe4\x29\xa7\x56\xee\xfb\x7d\x24\x79\x76\x3d\xcb\x92\xd4\x8d\x82\x6c\x1e\xa7\xce\x63\x27\xa3\x62\x86\xc7\x4e\xea\xcf\x87\x6a\x70\x3b\x7b\xd0\xc0\x42\x3c\x43\xcf\xe3\x6c\xb1\x4e\x93\x05\x84\xf8\xba\x01\x6f\x25\x02\x6e\x25\xd3\xbe\xc9\xb3\x6f\x05\x05\xc6\xa4\x5b\xe4\x92\x99\x9b\x73\xbb\x32\xca\x08\xf9\x96\xfa\x09\xf1\x34\xa5\x71\x12\xe0\x3c\x6b\x77\x65\x0e\xfb\x1a\xbe\x88\xb4\x82\x2c\x10\x44\xbd\xb6\xb2\x7b\x3b\x49\xcb\xf4\x9d\x8c\x66\x83\x80\x1d\xb2\xca\x80\x35\x6d\xfa\xae\xed\x74\x55\x31\x3c\x88\x4c\xfa\x57\x75\x52\xae\xce\xcd\xe4\x71\x22\x87\xa6\x93\xb8\x4c\x7b\x41\xea\x12\x60\x0f\xd8\x4b\x50\x5a\x69\xdc\xf4\xa9\xe7\x4b\xe7\xe4\xff\x28\xe4\xa3\x88\xd3\x49\xb0\xa4\x45\xf8\xd2\xb1\x07\xf4\x3c\xd8\x2b\xa4\xcd\x20\x9a\x26\x41\x30\x62\x67\x4a\xcb\xc1\x75\x74\xcb\x59\x82\xc5\x26\xe2\xf4\xba\xb2\x32\xa5\x2d\xea\x6b\x27\xe2\x40\xac\x39\x12\x82\xee\x22\x7b\x5e\x26\x8b\xf1\x7a\x02\x2b\x53\xaa\x04\xaa\x40\xde\xab\x33\xda\x80\xa0\x2e\xe1\x75\x3f\x25\xd1\x9b\xf5\xd1\x87\xc3\x5a\x9c\xfc\x76\x61\x75\x84\x8f\x1c\x05\x6a\x2d\xd6\x34\x45\x5c\xc7\xad\xd4\x97\xe4\x42\x2d\x64\x48\x54\x9f\x96\x2a\x94\x0b\x27\xf4\x92\x86\x45\x35\xd3\x38\x9b\xc5\x9f\xf0\xb6\x94\xfa\xe7\x82\xf0\x13\xa1\x56\xa6\x90\xe1\x46\x39\x48\xf7\x61\xe2\x5b\xd2\x3a\xaf\xa2\x19\xf5\x0e\x6b\x2c\xaf\x38\x9c\x8d\x19\xdd\x8b\xf5\x1d\x81\xef\x40\x5c\x03\x17\xdc\x6d\x10\xe7\x85\x2f\xac\x23\xe5\x46\xdc\xc0\x95\xb2\x33\xa4\x1a\x9a\x67\x89\x71\xcb\xf1\xe2\x9a\xa0\x1b\x21\xa1\x93\x2a\x52\x6e\x9c\x1e\x7a\x3d\x2a\x09\x83\xd2\x6b\xd4\x81\x25\xc1\xaf\x6e\x79\x11\x88\x85\x86\x79\x0d\xe3\xd5\x07\x91\x9c\x39\xe8\x00\xe3\x95\xb6\xda\xab\x0d\x8d\x18\xea\x01\x62\xce\xac\x74\xe0\x09\xa1\x57\x4e\xee\x58\x4c\x08\x61\xfa\x91\x3a\x6d\x69\x5a\x17\xfe\xe1\x1d\xac\x74\x6c\x6c\x32\x5b\xdb\xcf\x34\xb4\x1b\xbb\x17\x21\xcb\x9f\x80\xf3\xeb\x3a\x9c\x5f\xcb\xe0\x4e\x73\x0b\xea\xd7\x0e\xa8\xcf\x15\xa8\xcf\xdf\x05\xea\x08\x38\x7d\x1a\xd2\xf3\x78\x51\x85\xf4\x45\x15\xd2\x57\xd1\x0d\x97\xe6\x70\x4e\x73\xce\x3a\x50\x8b\xeb\x7e\x75\xd5\x0f\xbc\x9e\x06\x3b\xba\x23\x1c\xdc\x7f\x7a\x05\x49\x04\x0a\x13\x1f\x57\x88\xf4\x4e\x2c\xfd\x34\x5a\x55\x87\x07\x4b\xca\x59\xb4\x22\xf9\x4a\x20\x03\x38\xe2\x80\xcc\xfa\x7a\xc3\x1c\x0e\x2c\x1b\x61\x89\xf9\xb9\x84\x81\x39\x02\x6b\xeb\x34\x79\x06\xec\x03\xb6\x33\x94\xe5\x1c\xdf\x2a\xef\xe9\x53\x4f\x9e\x33\x74\xec\x73\xde\x0a\x1a\x5c\xa6\x30\xf2\x74\xbf\xa9\xc1\xcf\xf9\x39\x41\xa1\x84\x89\x6e\x57\x5f\x19\x65\x06\x62\xb8\x51\x7f\x56\x56\x0d\xb8\xa0\xae\x25\xdb\x9c\x64\x1f\x14\xd7\xd7\xfa\x83\x8d\x30\x38\x57\x6d\xa9\xa5\x6b\x0f\x81\x78\x09\xb6\x84\x56\xa1\x60\x01\x94\xd8\x02\xea\xbf\x06\xfd\xbe\x09\xf4\x92\xca\xcf\xf1\x65\x0f\xc0\xc1\xb0\x0a\x80\xae\xab\xb9\x6f\x58\x57\x28\x6b\xd4\x4d\x34\x94\x1a\x9e\x04\x51\x8f\x73\x11\x28\xdc\x5e\x8d\xc8\xd6\xd8\x08\x6a\x1b\x44\x63\x9a\xe4\x07\x40\xa3\x12\x7a\x74\xe0\x81\x20\x96\x59\x7e\xc3\x54\xdc\x3a\xef\xcc\xca\x71\x01\x73\xe7\x00\x70\x38\x66\xbd\xfd\x3c\x5a\x44\x9c\x6b\xfe\x41\x7c\x58\x49\x1a\xd6\xed\xfe\x57\xed\xbe\xa3\xb2\x98\x6d\x7a\x0d\xf2\x84\xc1\x6f\xac\xf6\x94\xaa\xbf\x44\x68\x6d\xff\x36\xda\x38\x4d\x52\xef\x6f\x8d\xae\xeb\x56\xed\x20\x68\xcc\x9c\x4f\x43\x2f\x78\x3e\x40\xe2\x73\x42\x5f\x1b\x9c\x4b\x38\xca\x71\xf8\xa3\xd0\xe6\x58\xf6\xe5\x6a\x6e\x44\xf3\xf8\x09\x8e\xa2\xe0\x9d\x77\xaf\x65\xd7\xa2\x22\x7e\x16\x7e\x28\x9c\x29\x88\x6e\x2d\x06\x77\x9f\xd3\x4a\x45\xce\x6d\xdc\xba\x0d\x6f\xdf\xbb\x0d\x43\x99\xff\x09\x1a\x0e\x62\xee\xb5\xd9\x2f\xad\x11\xc7\x13\x46\xf0\x19\x75\x89\xe3\x28\x6d\xc9\x91\xf1\xb9\x4b\x45\x85\x29\x70\xe2\x28\x6e\x1a\xa8\x65\x23\x51\x0b\x5c\xf8\x6e\xf4\xfc\xc3\xa6\x58\x5d\x9a\x2c\xea\x99\xdc\x01\x32\xe8\x08\x36\x7f\x07\x0c\xb9\xe4\x3b\x59\x63\x5e\xee\xa4\x6b\x05\x0e\x68\x1e\xa5\x31\xdb\x4d\x05\x55\x1d\x0e\x1b\xa1\x56\xbc\xec\x6d\xb0\xab\x11\x64\xd1\x71\x40\x1b\x91\x8c\x5d\x7d\xb2\x36\x69\xf8\x17\xd1\x7c\x84\x08\xec\xc4\x04\xd7\xfc\x64\x1f\x08\x56\x54\xb9\x85\x9b\xba\xf8\x70\x58\xa8\xaa\x64\xbf\x10\xe3\xe6\xb8\x32\x21\x8b\xa8\xf1\xf5\x78\x85\x98\x45\xd4\x7b\x2c\x30\x42\xa0\x27\x33\x0e\xbe\xfc\x6a\xbf\x26\xe1\x29\x27\x58\x52\x19\xaf\x57\x97\xc3\xb8\x0c\x6f\x0c\xaa\xc5\x50\xa6\x91\xaf\xc9\xc6\xdc\x6e\x44\xf6\x7b\x19\xcb\xcf\x26\x96\xb0\x50\x09\xb9\x85\x09\x46\xe4\x49\x05\x4f\xeb\x1c\xd6\x73\x53\x58\xc5\xce\xa1\x6b\xb2\x6f\xf0\xa5\x73\x04\xc8\x39\x4a\x0c\x0c\x54\xbe\x36\x4f\xa5\x77\x42\xca\x0e\x60\x70\x7d\x91\x33\xe1\x07\x4a\xd8\xe7\x71\x6c\x18\x6d\xf3\x70\xd5\xfb\x1f\x64\x69\x0c\x16\x3a\xf1\x1b\xea\xaf\x7c\x01\x18\xd0\xd7\xaa\x3d\x15\x63\x9f\x5a\x95\xd2\x44\xad\x93\xd8\xb4\x34\x92\x9c\x40\xaa\x09\x10\x84\x14\x30\xc2\x05\x90\x1a\x5d\x48\x75\x8c\x68\xb2\xa5\x1b\x29\x90\x51\x1d\xbe\xb6\x10\xda\xf2\xa1\x7c\xbd\xa0\xda\x08\xa6\xc2\x85\x39\x15\xd1\x33\x72\x64\xdb\x7a\x66\x66\xab\x36\x82\x66\x0f\x4c\xcb\xb7\xbe\xe3\x5e\x52\x71\x2e\x69\x1a\xa1\x5e\xdb\x05\x97\x1e\xf6\xd5\x35\x97\xec\xb4\x24\xbd\xcd\x6d\x66\xde\x3e\x1e\x65\xa8\x49\x76\x59\x4e\xec\x06\x91\x7b\x98\x2b\xa6\x55\xa0\x45\x7c\xa9\xfa\x8e\x85\x70\x6e\x65\xb7\x94\x22\x56\x6e\xc9\xc7\xb9\x69\x4e\xb1\x5b\x3b\xb7\x94\xb8\x06\xa7\x6e\xe0\x7e\x4a\x6c\x41\xaa\xe0\x3e\x39\x05\xf7\x8f\x49\x3f\xbb\xdb\x62\xf3\xa8\x8e\x4d\xa5\x1c\x30\xb3\xf5\x90\xe0\x61\x9a\x1b\xcf\x9c\x0a\xbf\x5a\x2e\x8b\xbc\x44\x36\xa8\xb6\x9a\x7d\x2a\xe3\xe2\x48\xb8\x66\xb9\xf7\x8a\x45\x76\x58\x05\x8e\xba\xaf\x9a\x22\xe2\x18\x15\x98\x36\x1c\xd6\x17\xf2\xc0\x37\x8b\x7c\xbf\x3e\xdd\x85\xe1\x4a\x26\xd2\x13\x4d\x7e\x0e\x55\xb1\xea\x73\xa0\x80\x5a\x0d\xac\x74\x4e\xfb\x39\x26\x87\xde\x56\x99\xf6\xfb\x61\x03\xe3\xea\xd6\x12\xd2\x17\xc8\x19\x27\xfc\xad\x4c\xf8\x31\xda\x2e\xbb\xbd\x5e\x37\x78\xdc\xb8\xf7\x95\x75\x14\x89\x85\x59\x3d\xa7\xa7\x4f\x3d\x75\xb4\xce\xb4\xca\xfa\xb0\x0e\x56\xd2\x02\x26\xc4\xdd\x6e\xe9\x7a\x6f\xd3\xbc\xcb\x60\xda\xb0\x9b\x64\xed\x4a\x47\xcb\x80\x5a\xc9\xd9\x89\x64\x50\x06\x12\x58\x5d\x4f\x3e\x76\x93\x55\x81\x57\x2b\x55\x96\x26\x5c\x3b\x5b\x1f\xb5\x55\xac\x02\x0c\x72\xe8\xb4\xc1\x68\xae\x5c\xac\x10\x03\x65\x3a\x61\x53\x6f\x37\x9c\x86\x30\x07\x24\x85\x3c\x50\xc5\x0f\x58\x06\x47\x84\x8a\x97\x44\xcb\xb8\x47\xca\x33\xb9\x04\x6b\xa0\x42\x9e\xa8\x57\x2a\x45\x60\x69\x52\x04\xc2\xe6\x1d\x15\x16\x26\x96\x74\x61\x58\x40\x15\xb9\xf4\x11\x60\x10\x96\x76\xfa\x8b\xa3\x59\xc9\xf9\xf3\xb4\xbd\x38\x37\x66\xbe\x48\xd5\x59\xee\x1c\x26\x69\x33\xf8\xb3\xbc\x6d\x58\x1b\x3b\xdc\x87\x89\xa5\xeb\xfa\xb7\xa9\x89\x83\xa1\x87\x3e\xf6\xa0\x6a\xf8\xf0\x61\x5c\x4c\x46\x33\xa2\x9a\xf5\x87\xd1\x2c\xfa\xa7\x16\x2c\xe5\xf1\x2d\xab\x69\xe4\xb1\xdc\x2f\xd5\x37\x37\xc5\x83\x7c\x0e\x95\x42\x1e\xb1\xe1\xf6\x66\xa7\x3d\x89\xe9\x52\x5b\x7d\xa8\x37\x41\x68\x5f\xc1\x15\xc2\xe1\x96\xa6\xc0\x2a\x79\x55\x3e\x48\xf9\xfc\x84\x43\xae\x24\x58\xba\x29\xfd\x31\x27\xb3\x96\x65\xd1\x97\x84\x41\x76\xdb\x4c\xa9\x69\x40\xc9\xc5\x87\x52\x2f\xc1\x6f\x5d\x48\x33\x5f\x98\x97\x95\xd0\x6e\xfd\x65\xb1\x4f\xfe\x5a\x3c\x44\x08\xe7\xaf\xae\xc5\x4c\xf9\x51\xc6\x33\xe3\x09\x2d\xa6\x24\xe5\xf2\x29\xd4\x66\x17\x7a\xc9\x62\x4f\xe5\xce\x52\xa9\x3b\x3b\xcb\x10\xbe\x63\x01\x70\x3e\xcb\xf6\xdb\x05\x5e\x55\x70\xe0\x19\x6f\xfe\x1f\x48\x6e\xc4\x81\x24\xb7\x71\xc6\x71\xdf\x8a\x5c\x15\x60\x56\x14\x8f\x65\x1f\xcf\xf6\xe5\xb2\x78\xb5\x4f\x96\x9b\xb3\x37\xc4\x90\x20\x90\x71\x36\xf7\x1c\x63\x18\xa1\x57\x11\x7a\x28\xbb\x34\xaa\x7b\x08\x72\x72\x86\x3f\x2f\x68\x90\x67\xf4\x1a\xff\x70\x5d\xab\xa2\x16\x7a\xc6\x39\x03\xd2\x66\xbd\xdc\x30\xcf\x22\x5f\xe9\xb8\xbe\x7d\x5d\x79\x6c\x2f\x09\x88\x55\x2b\xc8\xdd\x76\x14\x0e\x28\xe9\x7e\x49\x2c\x72\x26\x7f\x68\xda\x16\x25\x4d\xcb\xcf\xea\xf7\x97\xb3\xe9\x76\xbd\x54\x4b\x7a\x26\x8d\x39\x7f\x56\xbf\xbf\x9c\x11\x9a\x2c\x7e\xe6\xbf\xbf\x9c\xed\xb2\x6d\x51\xac\x7e\x56\xbf\xbf\x9c\xed\xd7\xea\xab\xf7\x0f\xcf\xb5\x00\x49\x15\x56\xa3\xdd\x92\xf6\x9d\xb6\x47\xb5\x39\xe0\xa6\x75\xf0\x4c\xe8\x8d\xb9\xd7\x6c\x8f\x61\x60\xaa\xce\x59\x72\x60\xa3\x9a\x0d\x34\x23\x2d\x1c\x4d\x08\x55\xa7\xad\xac\x87\xa8\x19\x24\x12\xb1\x99\x33\x4e\xe7\x94\x44\xec\x3e\x18\x04\xe7\xb2\x94\xfc\xc6\x29\xe5\x3e\xe0\xac\x96\x3c\x4d\xa6\xf6\x5f\x2a\xb5\xbf\x5e\x6f\x2a\x95\xf3\x7d\xad\x6e\x5b\xc6\xb9\x47\x40\x99\x4e\xd2\xaf\xc0\x2d\xb3\x6d\x7e\xed\x21\x61\x15\xbb\x15\x39\x32\x9a\xce\x19\x3d\x43\xe7\x18\x90\xb4\x69\xa0\x4c\x30\x69\xc0\x6b\xd8\x45\x92\xde\x67\xf4\xf7\xc3\xf0\x23\xfa\xfb\x2c\x1c\x48\x60\x52\xd4\x39\x7c\x84\x1d\x3a\x52\xfb\x48\xf1\x81\x93\x35\xca\x74\x25\x8f\x0d\x21\xd6\x98\xee\x80\x30\xa7\xe0\x52\x25\xfe\x43\xf1\xc0\x51\xfa\xda\xa7\x44\x97\x3b\x43\x57\xe9\x2b\x2a\x0a\x13\x4f\xe9\xa6\xbd\xa3\x80\x42\xba\xb5\x49\xa7\xce\xa8\xd2\x2c\xbe\x50\x01\x68\x70\xc9\x4d\xb9\x96\x20\x8d\x76\xd6\x77\x7b\x0f\x87\xe5\x44\x16\xdf\xd5\x92\xe3\xc8\x2e\x79\x4b\x75\xbc\x47\x82\xab\x39\x6a\xa2\x9e\x70\xc3\x32\xb4\xa6\x8c\xf5\x81\x7a\x75\x40\x1c\x79\xf6\x51\xe9\x90\x66\xe0\xdf\xe7\x3b\xaf\x96\x59\x78\x89\x07\x4d\x42\x5a\x10\xd5\x2e\xee\x56\x72\x99\x5c\xae\xa5\xea\xb1\x65\xe3\xe3\x48\xee\x05\x3a\x43\xf0\x5d\xe5\x2a\x59\xe8\x93\x9d\xda\x93\xbe\x6c\x9d\x0f\xa9\xcc\x77\x30\xaf\x13\xbb\x72\x79\xb7\xa8\xb8\x41\x2a\x55\x9e\x75\xb2\x57\x9a\x5a\x87\x0a\xc1\x68\x84\xb5\x15\x89\x28\x77\xaf\x54\x0d\x9c\xd2\xa1\xd2\x2a\xe1\xd7\x63\x30\xca\xe3\x9a\x18\xe1\x17\x3a\xbb\x72\x53\xfd\xad\x14\x1f\x70\x56\x3b\x21\x2d\x65\x0d\x7e\x10\xf8\xd2\xd5\x0f\x45\xad\xce\x36\x71\xfd\xf4\xb9\xd5\xc7\x06\x73\xd9\xe6\x7a\xc3\x46\x75\xf5\x44\xdc\xd6\xf3\x5b\x1e\x22\x8d\x2a\xbe\x36\x08\x5a\xa4\x2c\x20\x64\x26\xea\xbf\x72\x1e\xab\x5c\x4b\x61\x55\xc7\x1c\x88\xfa\x1c\x03\x4e\x0e\xe1\x64\x6c\x93\x4a\xc4\x2b\x59\x38\xf6\xd9\xcf\x6f\x6f\xa3\x34\x55\x56\x41\xc7\x68\x62\x51\x54\xf1\x39\xfc\xa0\x39\xbf\x91\x09\x05\x69\x1e\x39\xc8\xa6\xf9\x52\xce\x96\x85\x2c\xb0\xec\x71\x92\x86\x69\xaa\x38\x18\xd9\x26\xdc\xc3\x0d\x18\xc9\x70\x0d\x2a\x3c\x82\x21\xd5\x91\x1c\x82\xbe\x85\xc6\x6f\x45\x32\xac\x14\x0f\xa4\x31\x8f\x65\xe1\xa0\x8a\x0e\x2a\x3a\x24\x69\x1a\xa9\xee\x9c\x10\x4f\x8f\xcd\x31\x52\xe7\x44\x9b\xf8\x25\x9f\xbf\x43\x8a\x42\x81\x2a\xe8\x35\xfd\x7b\x9b\xb3\x3f\x3a\x39\xd5\x29\x3b\x5a\xd4\xc5\x9b\xb8\x29\xef\x84\xd5\x49\x06\x18\x8a\x9a\x00\xf4\xef\xf4\xa4\x39\x32\xdb\x97\x5a\xb5\x3a\xec\x42\x45\xd4\xc2\xd9\x3b\xf3\x6c\x92\x8c\x44\x6c\x6b\x8a\x52\x6d\x73\xf7\xef\x74\xec\x1d\x73\xaf\x7a\x28\x7b\xd3\x56\xee\x5d\xef\x94\x83\x7e\x73\x24\x8c\x38\x64\x88\x1d\x66\xb8\xb0\x30\xdb\xd0\xe3\x6b\xc2\x00\x5b\x4f\xf2\x61\x8b\x22\x79\x53\xe8\xc7\x44\x1e\x84\x3a\x89\x55\xc5\xd5\x9d\xfc\x40\xdd\xa8\x4f\xf4\x2b\xa6\x46\xf5\xb8\x26\x35\x4d\xc5\x24\x7a\xac\x10\xb2\x54\x68\xb5\x17\x5d\x4a\x61\xa7\xe1\xb8\x9b\xd9\x50\x90\x35\x3e\x82\x4d\xd6\x8d\xf0\xae\xb8\x32\xce\xf4\x5f\x48\x5b\x1e\xd7\x08\x49\x67\x93\x50\x66\x16\x53\x23\xc5\x13\xd7\x65\xb4\x0d\xed\xfe\xe3\xda\x34\x03\xd6\x9d\xf0\x84\x14\x37\x7d\x79\xe4\xae\x8e\xc6\x91\x2b\xb2\x3a\x52\xf5\x3e\x7a\xe4\x03\xb4\x3f\x42\x94\x89\x2a\x2e\xbd\x00\x6e\x26\x8c\x8a\x74\x7d\xb0\xfc\x92\x05\x98\x06\xf7\x7f\x93\x15\x83\x5d\xe7\x6c\xe8\xfa\x81\x27\xda\x02\x27\x29\xd2\x9b\x45\x4e\x73\xa9\x61\x00\x24\xfe\xb1\x8f\x55\x3e\x2c\x28\xe1\xd1\x1b\x9d\x24\x3e\x73\x8c\x96\x33\xe1\x55\x46\xce\x56\xc7\x6e\x5f\x4d\x81\xf6\x8e\x25\xfa\xf1\x6f\xa9\xde\x57\x6c\x35\x79\xa2\x76\x19\x8d\x12\xb6\x7d\xa7\xf8\x84\x7a\x85\xf6\x60\xa3\xfe\x46\x85\xaa\x71\xf2\xac\xb1\x46\x49\xe9\xde\xed\x31\xb6\xe6\x15\x7c\x4f\x0f\xa0\xf6\xa1\x48\x54\x90\x4c\x7d\xa2\xf3\x3f\x58\x5e\x75\x62\x23\xcb\x98\x29\x0b\x24\x8c\x49\x63\x8e\xd3\x30\x26\xdf\x9f\x86\xb1\x9f\xa5\x7c\xce\xdd\x37\xf9\xd4\x62\xdf\x6f\x67\xfb\x0e\x07\x8f\xad\x75\x2a\x0f\xeb\xcb\x2b\x3b\xba\x51\x19\x3d\x65\x07\xfa\xbf\x69\xb7\x50\x77\x61\x3c\x65\xa0\x23\x83\x6a\x56\xf9\x34\xfd\xbd\xcc\xdb\x2c\x3b\xf8\xdb\xf5\xdd\x6e\xaf\x6a\xca\x19\xdd\x5a\x15\x6e\x63\x13\xb4\x35\xd8\xac\xa5\xbe\xc2\xad\x0d\x0d\x6d\x33\x76\xe5\x75\xfd\x4a\xc9\xc9\xbd\x71\xb8\xdf\x66\xbf\x24\x57\xcb\xa6\x21\x54\x41\x7b\x07\xab\x9b\x72\xa4\x56\xc7\x26\x0e\x0e\x9c\x7d\x46\xbb\xb1\xb2\xfa\x8d\x7d\x66\x0a\xb4\xb7\xd5\xa9\xc1\x2c\x34\xa1\x0e\x13\x2b\x6f\x5f\xeb\x13\x99\x77\x4f\x40\x03\xf4\x9d\x1d\xdb\xe8\xa7\xd9\xb1\x27\x90\xb9\x33\x01\x0e\xbf\x27\x3d\xd9\xde\xd5\x45\x05\x9b\x1c\xf2\x4d\x0a\x29\x16\x8a\xcd\xc3\xd8\xa1\x06\xef\xc6\xe8\x46\x8a\x79\xe7\x1e\x6e\xdd\xa3\x6a\x6a\x08\x1c\x5a\xf7\x97\xdc\xba\x4a\x0e\x34\x7b\x57\x53\x60\x29\x89\x1a\x31\x51\x4a\x89\xae\x34\xd7\x66\x2d\xee\xce\x61\x63\xa9\x52\x61\xd0\x7c\xf5\xe8\x81\x57\x6a\x54\xa7\xc0\xe9\xa4\x05\x5f\x48\xf6\x5e\xf2\x2c\x55\x35\x85\xa2\xbb\x7a\xb9\x73\x18\x8b\x17\xc8\x86\xd3\x30\xf4\x48\xa4\x43\x8e\x70\x8a\x0a\x38\xfb\x0d\x82\xde\xf0\x04\xae\xfc\xb7\x9a\x3d\x1f\x8e\xe0\x93\x64\x2b\x2f\x10\x43\xbd\x55\x8c\x71\xba\xe2\x9c\x68\xa3\x12\x8e\x63\x50\x35\xd2\xaf\x64\x96\x6c\xd8\x77\x54\xcd\x8c\x6d\x10\xe1\xa6\xab\x22\x27\xa3\xcb\x0e\x07\x98\x00\x2b\x13\x70\x36\xd0\x9b\x4a\x13\x3b\x39\xca\x15\xe7\x3f\xc8\x44\x02\x0d\x75\xd1\x08\x8e\xab\x0e\x58\xa5\x26\x09\x61\x64\xfc\x3c\x42\x04\x51\x53\x63\xa8\x5e\xc0\x9c\xa1\xc5\x3b\x30\x67\xeb\x30\x5d\x56\xdd\x3a\x1d\x82\x5a\x96\x4f\x75\xa8\xda\xd4\xc4\x14\xe8\xe4\x95\xb0\xc9\x4e\xe8\xee\x42\x05\xde\xca\x5b\xa3\x6c\xf8\x32\x48\x44\x02\x9b\x89\xd6\x4d\x86\x44\x8a\x6c\x9b\xa3\xed\x35\xfc\x59\xcd\x2e\x4d\xf1\xac\x4d\xa7\x80\x1a\x7e\x85\xed\x51\xc6\xbe\x41\x47\xb1\x5e\xb5\x89\xf1\xae\xa6\xc6\x59\x49\x80\x1e\x75\xb2\x5d\xa0\x15\x05\x96\x97\x39\xee\xaa\x34\x82\x27\x06\x91\xe8\xc9\xc9\x5d\x5e\x13\x61\x35\x6b\xe7\x6b\x72\x36\x72\xe7\x54\x3e\x37\x2c\x66\xcf\xeb\x7b\x3d\xe7\x55\x68\x5f\x09\x7b\x4c\x41\x97\xfa\x00\x49\xc8\xc3\x92\x76\xe0\xe3\x63\x0f\x17\xac\xa8\xdd\x82\xc6\x85\x7c\x4a\x55\x98\x52\x1c\x71\x1a\x49\x03\x93\x53\xde\xae\x15\x20\xe1\x58\x33\x7c\x28\x45\x8f\xd3\xf7\xac\x90\x8b\x1b\x13\xb3\x44\x0d\x5d\x54\x23\x76\xe9\xa9\xfa\xb4\xf2\x04\xcb\xc4\x07\x31\x4e\x75\x2a\x4e\x49\xab\x43\x8d\x72\x84\xb1\xf9\x17\xda\x2a\x64\xac\xa0\x31\xbf\x1b\xcf\x24\x4f\x2d\x79\x2a\x8c\x47\xe9\x81\x0d\xdd\x93\x77\x1a\xba\x67\x55\xcb\x5c\x95\x8b\x48\x9f\xe8\x04\xb5\xd7\xc8\x72\xc2\x99\xe4\x6d\x10\x61\x56\x3f\xa5\x91\x97\xa4\xe9\xf6\x90\x6c\xf7\x65\xb6\x28\x0e\xc9\xae\x24\x92\x9d\xdc\x11\xc5\x3b\xa4\x79\x79\x20\x49\xf4\x4d\xb2\x3b\xb0\x3b\x31\xfe\x2c\x08\xd3\x1d\xa0\x57\x29\x17\xbb\xc3\xb4\x9c\x65\x09\xa7\x1d\xc6\xe5\xdd\xb6\x38\x4c\xd7\x6b\x98\xd0\xca\x94\xbc\x87\xf9\x8c\x44\xb3\xcd\x61\x99\x6c\x6f\x0e\xcb\x02\x2f\x56\xc9\x9b\x03\x51\x1b\x18\xe6\x6a\xaf\x9e\xc3\xae\xe0\xa9\x38\xec\xee\x96\x54\xf2\xe1\x00\x25\xc5\xe1\x0d\x75\x63\x4d\x8c\x45\x1a\x5d\x9c\x5d\xff\x0d\xd1\x6d\xaf\xf2\x5e\xe4\xf9\x31\xe3\xa1\x03\xdd\x04\xde\xc5\x4c\xcc\xd2\xc8\x35\x40\x79\x4e\xef\xbd\x5e\x91\xf6\xbc\x60\x7c\x75\xb5\xbb\xb8\x9c\x78\x24\x72\xd0\x64\xce\xa9\x9e\x5f\xaf\x76\xbd\x0b\x51\xd2\x15\x15\xeb\xc0\x18\xf8\x90\xc2\xda\x77\x71\x60\xd7\xd6\xc3\x7c\x7b\x28\x97\xb3\x83\x34\x1b\x86\xb5\x3d\xfa\x9c\x1c\x88\x05\x49\x96\x81\x8f\x90\xf0\xe1\xa4\x27\x23\xc4\x07\x57\x17\x97\x17\xb3\x52\x5c\x73\x65\xea\xcd\x85\xb8\xc1\x2d\x1b\xf8\x5f\x94\x62\x81\x9b\x43\xf7\x4f\xf1\xd5\x7d\x6f\x74\x21\x96\xb2\xdd\x70\x97\x6d\xcb\xcd\xfe\xc0\xd1\x1f\xb8\x95\x80\xca\xae\xe8\xa5\x62\x5a\x11\x8f\x3e\x0e\xc7\xbf\x46\x93\x43\x44\xd7\xda\xd8\xbc\x8f\x62\x6b\x8c\xe2\xc9\xe1\xea\x82\x4a\x5c\x27\x6f\x92\x43\x91\x2d\x93\x40\xd6\x48\xaf\x37\x78\x8d\x28\x02\x54\xa0\xff\x94\xfa\x73\x2b\x47\xfd\xf4\x79\x07\x06\xc9\xe3\x17\x2f\x3f\x7d\xfd\xe9\xd5\xf8\x70\x7e\x1e\x1c\xf0\x60\x72\x35\xc1\xf5\x25\x95\x78\x42\x73\xb9\x4d\xa3\x47\x99\x44\x3a\x1c\x0f\x85\xf7\x5c\xe2\x86\x33\x22\xf6\xfb\x72\x43\xf2\xd2\x07\xfa\xea\x03\xa4\x91\x79\x7e\x21\xdf\x5f\x7a\x13\x41\xb8\x88\x08\x9a\xfc\x6a\x5a\x16\x8b\x9c\xc8\xbc\x2c\x63\xef\x26\x02\x33\x2e\xcb\x2c\x93\x8d\x7c\xcd\x17\x13\xc1\x53\x2c\x5f\x49\x9c\x23\xdf\xea\x6b\x24\x46\x20\x80\x92\x05\xa4\x03\x07\xbf\x57\x97\xf4\x7a\x1b\x8e\x9f\x99\x77\x72\x05\x54\x11\xbe\x74\x8a\xd2\x72\xb7\x94\x35\x05\xe9\x35\xc3\xac\xfc\xda\xdc\xb9\x6d\x51\x3f\x3e\x6c\x7c\xbf\xdf\xaa\xf6\xb6\x97\x2d\x8d\x1a\x7d\x75\xcd\xdb\x23\x1e\x0f\x84\x87\xec\x34\x13\x1e\xdb\xcf\xcf\xf3\xf2\x8d\xac\x87\x2f\x26\x47\xb1\x4b\x23\xc2\x10\x0f\x84\x0a\xd3\x68\x97\x56\x9c\x1f\xda\x2d\xf3\x69\x7f\xa7\x7d\x5a\x45\xee\x77\x24\xaf\x69\x45\x69\x71\x95\x63\x0a\x2e\xb0\x4b\x71\xa1\xc7\xc7\xd7\x72\x23\xf3\x7b\xcc\x36\x7f\x31\xe7\xdb\xdc\xa2\xab\xbb\xb4\x76\x54\x15\x21\xfc\xa8\xa6\x0f\xad\x9e\x2b\x88\xb8\x12\xb7\xbf\x52\x79\x2b\x83\xd0\x54\xc0\x71\xac\x75\xc0\xed\x4f\x71\xa6\xc5\x1f\xd7\x1f\x9b\x0f\x95\x9e\x40\x26\x2d\x63\x9e\x27\xe2\xd8\x8e\x6e\xcc\x5b\x62\xe7\x47\x2a\xb9\x1c\xb1\x25\x4c\xa8\x90\x10\x10\xe1\x45\x1c\x59\x19\x3c\x5a\x3c\xd5\x07\xe9\x26\x7e\xee\x54\xd0\x90\x99\x7f\xd3\x88\xd3\x7a\x3b\x12\xc7\x05\xd9\xdd\x89\xd5\x9b\x22\x04\x87\x0a\xbc\x9b\x4c\x04\x67\x63\x33\x73\xf7\x86\x51\xfd\x4f\x3a\xcd\xb8\x96\x71\x8d\xd6\xb7\xe1\x4c\x13\xd4\xb3\x8b\x9e\x08\x10\xcc\x70\xe6\x05\x95\xbe\x34\x43\x54\xbb\xfe\x4a\xf4\xcd\x96\x03\x0a\xbf\xd3\x47\x89\xa8\x1a\x44\xa1\x8a\xef\x4f\x95\x5d\xae\x83\xa0\xfa\x10\xa7\xd1\xa6\xeb\x6f\xab\x59\x65\x59\x9b\xe5\xcb\xf5\x88\x54\xa0\x75\xce\xda\x90\x68\x4b\xcd\xa0\xe7\x5d\x78\x3d\xa5\x48\x4f\xaa\x29\x0e\x35\xa9\xdc\xa4\x2a\xf9\x85\x9c\x46\x13\x9b\x3b\xd6\xea\xb2\xf1\x70\x12\xea\x93\x86\x46\xfa\x73\xb7\xd6\xdf\xd3\x96\x60\xf5\x1a\x5e\x08\x90\xe0\xb6\xce\xd1\xe6\x1d\x4d\x91\xb4\xd9\xfe\xfc\x4d\xb2\x20\xa1\x33\xb5\xce\xbe\x9c\xa0\xd6\x7d\xeb\xc6\x00\xfb\x54\x35\xd4\x48\xf5\x8b\x75\xb3\x56\xdb\xd5\x63\x60\x6b\xc1\x2d\x66\x91\x95\x7c\xa7\x1c\xf1\x4f\x59\x72\x8f\x64\x5c\x5d\x1d\xe1\x41\x1b\xd5\xce\xac\x9b\xc5\xc8\xa4\xd2\x98\xf3\x26\x91\xe1\xf8\xe7\xf0\xa3\xa9\xe5\xd9\xad\xca\xf9\x99\x40\x19\xcc\xc0\x51\xc6\x0e\xe1\x8c\xb8\xd5\x18\x24\x8f\x47\xa1\xe2\x8a\x04\x4e\xd4\x8f\xcf\xea\x78\x62\xd4\x18\xb6\x4a\x87\x92\x9e\x48\x9e\x25\x3a\x55\xcf\xa8\x6e\xd7\x35\x71\x85\xaf\xa5\x99\x0e\x29\xed\xe4\x18\x5f\xa1\xad\xdb\xab\x06\xcd\x1c\x61\x46\x1b\x34\x8f\xd2\x06\x5c\x98\x8a\x83\xa3\x27\xc9\xa9\x27\x83\x00\xa5\x9c\xa0\x4a\x1a\xfe\xc0\x4a\xc7\x47\xd2\xc3\xa0\xaf\x72\x61\x70\xa6\xa9\x07\x3c\x09\x42\xc7\x23\x34\x8b\x2b\x39\xe5\xd8\xc6\xd1\xf8\xda\x41\x23\xa5\xaf\x83\x8a\x1b\x1f\x58\x7f\xe3\xcc\xc6\x0a\x19\xea\xde\xd2\x75\x68\x94\xe6\x92\xd6\xe1\xcd\x29\x8f\x1e\x48\xdd\xaa\xec\x78\x15\xcd\xa0\x43\x35\x2c\x93\x1a\x07\x3f\xd7\x79\x8f\x33\x7e\xf1\x70\xf9\x8a\xdb\x7b\xa3\x0e\x35\xf9\x97\x47\xba\x51\x8c\x3c\x8d\xd4\xd4\x2b\xb1\x33\x57\xbc\xd3\x97\x49\xfd\x65\xe8\x3b\x9d\x24\x14\xae\xbd\xb2\xf8\x5e\x8e\xce\x75\xf7\x8b\xaa\x99\xd3\x82\x4a\xb4\x92\x45\x53\x1a\x73\x02\xca\x48\xb3\xf0\xe8\x9d\x9e\xc0\x1c\x1d\xc8\x59\x00\x19\x38\x41\xa6\x1f\xe3\x94\x14\x9d\x99\xca\x14\xe8\x3d\xf7\x7a\x6e\x54\xab\x4b\x42\x9e\x38\x00\xa8\xb8\xe9\x85\xfe\xbe\xba\x38\xd6\xbf\x72\x9f\x56\xa2\x7b\x11\xc5\x74\xb1\x31\xf4\x7b\x7e\x1d\xda\xeb\x3e\x92\x32\x37\x89\x9b\x1e\x64\x58\x7d\x50\xeb\x7d\xa0\x76\xfa\x1d\x92\x82\x12\xb6\x00\xe5\x0e\xd8\xd0\x51\xe1\x36\x20\x80\x19\xe1\xb6\x5e\x6f\x16\xe4\x9c\x5a\xfe\x33\x4e\xd4\xc9\x0f\x61\x5b\xcb\x99\x33\xb8\x96\x79\x34\xe7\x34\xd3\x09\xa4\xf8\x9c\x2f\xa7\xad\x75\xcd\x08\x85\x7c\x6a\x6b\x61\x31\x9f\xf1\xde\xd4\xa0\x68\xd9\x23\xa1\xb7\x19\xa2\xc2\xd9\x04\xa8\xbf\x83\xd6\x76\xca\x6e\x97\xf9\x0c\x53\x06\xcd\xce\xa3\x42\xa6\x13\x9e\x1e\x45\x7a\x47\xb3\xa6\xa5\xa1\x16\x89\x5c\xe3\x72\x03\x07\xe2\x1a\xee\x01\xd6\x97\x7b\x0d\xae\x2a\x85\xa1\x3d\x71\x0b\xb7\x18\xc7\xe5\x2d\x67\x9c\x45\x76\x57\xc2\xf9\xb7\x44\xbb\x0f\x07\x36\x00\x09\x5a\xbd\xbd\xa7\x41\xa0\x09\xfd\x46\x4c\x9d\xb4\xdb\xd3\x49\x38\xb5\x31\x13\x17\x0a\x7e\xa8\xf8\x23\x4f\xe2\xba\xea\xbf\xda\xce\xc2\x11\xdc\xfa\xd7\x8a\xc0\x4d\xa5\x4f\x0e\x78\xc4\x80\x93\x89\x56\x70\xe4\x82\xf8\xb3\x71\x49\x54\x9a\xd8\x34\xcd\x64\x8a\xb9\x03\x84\x88\xf0\xde\x9b\x9a\x58\x65\x65\x4a\xcc\xe5\x93\x21\xf1\xa6\x4f\x9e\x11\x0c\xf7\x16\x88\xc2\x5b\x44\x08\x06\xef\x44\x2d\x82\xb5\xba\xf1\x76\x65\xde\xaa\xc5\x07\xba\xdb\x9d\x9b\xc1\x75\xbb\x1b\xc9\x38\xe9\x01\x21\xa6\x1e\x6f\x8b\xb9\x19\x06\xd2\xa7\x32\x52\x67\x1e\x81\xd6\x28\x52\x7c\x0b\x01\x71\x89\xc4\x86\xba\xb2\xd8\xf0\xf8\xf4\x06\xfd\xaf\xbc\x1c\x84\xf3\x70\xee\x72\x32\x85\x0c\x91\x63\xd9\xbd\x66\x14\x26\x87\x2d\xba\x8e\xdc\xa2\xc4\x0b\x0a\xcd\xb3\x10\xc2\xbd\x6e\xd6\x82\xaa\xdd\x9d\x7b\x8d\x88\x9b\x7a\xdd\xe7\x6e\x62\x05\x31\x67\x72\xa0\x62\x5f\x46\x9e\x8e\xbd\xe0\x76\x36\x98\x57\x2a\xab\xbc\x1a\xcd\x91\x9a\x56\xcf\xba\xf4\xb3\x39\x35\xab\x04\x4e\x88\xec\xbf\xae\xd6\xd6\x70\xcb\xe6\x30\x65\x48\x90\x77\x87\xa4\xef\xc6\xb5\xfe\x4d\x1a\x30\xcc\x2b\xdf\xa7\x68\x33\xbe\x55\xf9\x94\x39\x78\xcc\xf9\x90\xc1\x5c\x47\x8d\x9f\x22\x20\x3d\x2b\xe3\x1c\x5c\x3a\xad\xe1\x52\x8d\x61\xaa\xe0\x3d\x0d\x9c\x6d\x3e\xe3\xdd\x3d\x87\x99\x3d\x88\xb7\x6d\x7e\x3e\x2e\x38\xc5\xb2\x5e\x63\x7d\x22\xe4\x05\x26\xf5\xd1\xd4\x9a\xac\x4a\x1c\xb0\x96\x81\x3a\x56\x2d\xa1\x97\xf4\xde\xb7\x49\x15\x06\x4c\x07\x74\xf4\xb8\xeb\x48\x45\x97\x12\x8b\xba\x23\x35\x61\x88\x9a\xce\xda\xca\x0d\x08\x82\x10\x70\xac\x04\xcc\x13\xf3\x7c\x15\x1f\x01\x99\x01\x37\x47\xda\x5c\x0e\xda\x74\x8d\x60\x1d\xcc\xe2\x68\x3e\x2c\x30\xba\x33\xf3\x64\x45\x00\x18\xd7\xf4\x59\x50\x01\x87\x55\xee\x05\x43\x99\x19\xee\x05\x35\xdb\xa3\x46\xdc\x89\x45\x6c\x02\x8d\x95\x13\x2d\x4c\xe5\x75\x2e\x87\x65\xa9\xc6\x53\xbf\x0c\x42\x7c\x26\x27\xd6\x4c\x78\x8b\xba\x7a\x7f\x22\xdd\xcc\x3f\xa4\x0e\xae\xe5\x8d\xb5\x6c\x89\x65\xa6\x4f\x2e\xa9\x4c\x57\x38\xbc\x88\xaf\x63\x76\xfa\x3a\xa0\x8c\xcd\x57\xd4\x70\x88\xa9\x6f\x83\x84\xf3\x0c\xca\x94\x78\xf5\x48\x35\xc8\x39\xc4\x15\x9f\xb0\x7f\xeb\xe7\xeb\xe5\xb7\xc9\xaa\xdc\xb4\x26\x69\x30\x5c\xba\x39\x60\x51\xb1\x2a\x5b\x9e\xfd\xb9\xfe\x48\xcb\x28\x24\xb3\x29\x3b\xf8\x51\x5a\x0b\xa0\x70\x3c\xca\xec\x35\xff\x17\x75\x90\xb6\x75\xb1\xdd\x7f\xc6\x87\x89\xd8\x49\x95\x6c\x35\xe8\xae\x3c\x67\xfc\x6f\xf6\xb6\x71\x00\x5e\x7b\x50\x6f\xde\x28\x60\x93\xe9\xfe\xa4\x0d\xe3\xff\x3f\x1a\xad\x24\x64\x3b\x06\xad\x8e\xb8\x55\x61\x31\x89\x97\xd6\x10\xdb\xc2\x37\x54\x23\x56\x8c\xcc\x8d\xda\x21\x95\x8c\x5c\x56\xe1\xdb\x6c\x30\x3f\x42\xa2\x19\x47\x83\xad\xca\x0f\x90\x11\x0d\xf6\xcd\x6a\xd8\x17\x9c\x33\xe1\x56\x7c\xea\xf2\x4c\x6e\x1d\x15\x4a\x91\x05\x55\x55\x7d\x33\xff\x87\x1e\x5f\xc2\x1e\x36\x6a\x14\xd2\xb4\x08\xfe\x76\x1c\x9f\xfd\xb1\x9e\xae\xae\x36\x8c\x84\xa3\x68\xeb\x2c\x5c\x2e\x38\x25\x95\xde\x54\x5e\x8d\x12\xa5\xb0\xda\xd5\x34\x2b\x9e\x14\x2a\x3c\xa9\x31\x51\x65\x74\x5a\xc4\x41\x2d\x35\x4b\x53\x36\x70\xe2\x07\xe9\x34\x63\x9d\x61\x98\xa8\x00\x3a\x88\x5c\x95\x84\x52\xed\xcf\x61\x21\xdb\x4e\x64\xb9\x52\x37\x56\xdc\x51\x40\x74\xf8\x83\x18\x51\xee\x38\x85\xda\xd8\x35\x31\x23\xc2\x94\xbb\x11\xa0\x6a\xb1\xfd\x9c\xc3\xb0\x4a\x3e\x4d\xc3\xdc\x19\xae\x6e\x9a\x22\xc1\xb5\xab\x0b\x6b\x49\x56\x4b\x60\x96\xda\x64\x7b\x9d\x9a\x26\xb2\xdb\x9d\x55\xdf\xbe\x83\xdf\x43\x09\x62\x3b\x0d\x8b\x9a\xbc\x8b\x45\x05\x11\x4c\xd8\x78\xaa\x95\x03\x65\xb7\x38\xf6\xd2\xc9\x2f\xb3\x51\x86\xfd\x21\x27\x29\x93\x93\x54\xd7\x94\xf8\x35\x20\x4b\x19\xc8\x2a\x51\x60\x80\xcd\xa2\x81\x13\xf9\xf6\x98\xaa\x9d\x5f\xa3\x38\xc9\x3b\xa9\x87\xea\x70\x35\xa7\x4c\x23\xcd\x88\x73\xf0\xf3\x5e\x8c\x94\x62\x26\xea\x56\x0d\xb5\xf1\x30\xfe\x50\x79\x25\x54\x0f\x94\xa8\xa0\x51\xa2\x32\x24\x94\xfd\x64\x2f\x33\x8d\xd5\x9d\xe0\x6b\x8a\x97\xe0\xa0\x68\x30\x81\x3d\x19\xcb\xcc\xb8\x6d\xb3\x91\xa1\xee\x7d\x6d\xeb\xc0\x25\x4d\x9e\xb2\x22\x9b\x98\x8a\xb2\x2e\x72\x2b\x5c\x11\x24\x2f\x2a\xb1\xcc\x56\xd2\x6a\x6e\x1d\x2d\xce\x87\x24\x64\x71\x70\xa8\xdb\x6a\x5e\x95\x0d\x0b\x99\xb7\x87\xc3\x02\xe9\xbf\x1a\x47\xca\x1b\xf6\xc4\xb5\xc1\x79\xba\xdd\x95\x02\xbf\x4d\x10\x9c\x3e\xce\x33\x06\xc3\xc4\xb6\xdc\x22\x51\xd4\x2d\xdb\x04\x0f\x26\xd1\xc6\xf1\x4c\xcb\x70\xdc\x49\xe0\xcf\x69\xc4\x72\x67\xd1\x78\x5f\xa3\x5f\x0b\x0e\x78\xb2\xec\x57\x24\x4d\x85\xdf\x1b\xbc\x09\xc1\xa0\xca\xb2\x89\xf8\x28\x8e\x6c\x22\x3d\xcb\x5a\x84\x0a\x04\x53\x91\x9c\x30\x60\x7f\xa6\x12\xad\xd1\xfa\x97\x0e\xc7\xfc\x36\x65\x27\x5a\x8d\x1d\x16\x97\xd7\xa3\x6b\x76\x32\xa3\x19\x27\x0a\xb2\xd6\x41\x37\x19\x2f\xc1\xdb\x9e\x2d\x0f\xa6\x40\x9c\x52\x42\x99\x49\xdd\xb5\x25\x09\x1c\x59\x48\xcf\x02\xbc\xf4\x73\x71\xcd\xc3\x9d\x2a\x31\x7f\x36\x9e\x99\xdc\xc3\xf5\x41\xca\x3e\xce\xc4\x43\x0a\x9f\xd1\xc1\x68\x6a\xfa\x33\x43\x55\x9a\x7f\xcf\x5d\xfe\xbd\x63\xad\x26\x2a\x6a\xd1\x0a\x39\x43\xca\x2b\x8c\x05\x4e\x53\x30\xb3\x28\xa8\xc8\x8f\xdb\x05\x7b\x19\xab\x6b\xf9\x12\x7c\xb1\xad\xc5\x47\x53\x44\xac\x61\x12\xe2\x48\x5e\xb8\x35\xc8\x40\x46\xa3\xd0\xb8\xe7\x96\xf1\x24\x3c\x87\x23\xe9\x51\x5e\xa1\x1a\xd2\xe8\x8b\x4d\x65\x24\x82\x78\xbd\x0e\x3d\x79\xe5\x69\x5e\x0d\x8f\xd4\xa5\x27\x5c\xee\x21\x54\x66\x58\xfa\xe9\xa7\xcc\xb6\x78\xcc\xbd\x78\x1a\x97\x20\x39\xa2\xe7\xe0\x95\x16\x9b\xd5\x5a\x2e\xbe\xa4\x99\x44\x95\xd3\xa6\x72\x28\xb7\x79\x64\x17\x6b\x34\xbf\x8c\xa4\x06\x97\x78\x0d\x82\xba\xb9\x83\x0c\x24\x80\xb0\x55\x8a\x3f\x83\x32\x97\x48\xb8\x0f\x07\x6d\xb5\xa9\x11\x55\x8b\x13\x76\x56\xb8\x82\xd6\xcc\x7a\x2f\x52\xf1\x32\xad\x24\xd5\xfb\x3c\xf5\x5d\xc5\x1b\xf5\xac\x71\xf0\x1c\x68\x8c\xfb\x7a\x4d\x2f\x59\xfa\x67\xeb\x59\x6a\x53\x19\x3d\xbc\x58\x2f\x49\x34\x2d\xf2\x57\x2a\xb5\x40\x7e\xfa\xad\x5f\xb0\x22\x81\xe4\x18\x1d\xb1\x5f\x46\x00\xc4\x63\x27\x08\xe0\xc8\x66\x93\x62\x04\x88\xf0\x56\x56\x3b\xfd\x85\x73\x92\xf0\x40\x9b\xf6\x25\x32\xe3\x98\x83\x71\x4e\x12\xf6\xb9\x54\x60\xab\x40\x83\xd2\x7b\x16\x6f\x5e\xa4\x11\xfd\x23\x62\xea\x7b\xcf\x65\x62\xc6\x33\xfe\x2b\xf3\x04\x44\x1f\x0c\x3e\x38\xe3\xec\x00\x7c\x25\x93\x17\xe0\xf2\x82\x68\x9d\x33\x0d\x69\xdd\xfd\x8a\x83\x0e\xbd\x40\x7e\xed\x6a\x42\xc7\xc3\xa1\xf2\x50\x6f\xc6\xc0\xa6\x31\x4f\xfb\xf7\x5b\xa2\xd1\xbe\x8a\x1a\xc6\x6a\x21\xdb\xfd\x17\xa9\x99\x80\x40\xf0\x30\x19\xf1\x1c\x1b\x91\xf8\x46\x37\xfd\xdd\x9c\x50\xf0\xcd\x4f\xdb\x64\xc3\x59\x0c\x76\x51\xd5\x59\x49\xa5\x80\xb2\xee\x9d\x09\x12\x6d\x18\x1f\x4f\x9b\x89\xfe\xdf\xc9\x23\x11\xff\x3f\x96\x46\xe2\xfc\xbe\x48\x6f\xca\xfd\x79\xba\x7e\x7b\xbe\x2b\x7f\x47\xc2\x08\xb5\x74\x78\x34\x3a\x5f\xae\x7f\x3f\xf5\xee\xc4\x63\x0d\xe6\x29\xd6\xe4\xdf\xce\x4b\xf1\x87\x8e\x8c\xd5\x20\x24\xdc\x7a\x1f\x63\x4a\x92\xe8\xc3\x4e\x2d\x6d\x45\x33\x45\x85\x8d\xfd\x7a\xd4\xa1\xd7\xfe\x02\x8b\x03\xd9\xc9\x0b\xf1\x65\xd5\x38\xe3\x57\xdf\xeb\xbd\xea\x79\x81\x1f\x77\x36\x6f\x83\x71\x72\xfe\xfb\x7f\x4e\x7a\x4f\x94\x81\xc6\x57\xa9\xf8\x3a\x15\x7f\xc5\xe7\x3e\xad\xd1\x61\x8b\xf5\x3a\xa4\x1c\x14\xf4\x80\xe5\x42\x20\x35\xc6\x0a\x15\x74\x10\xfb\x5f\xa5\x95\x9c\x37\x26\x58\x42\xf5\x9c\xd2\x09\xa0\x41\xc2\x03\xbb\x2b\xbd\xab\x48\xbd\x19\xc2\x71\x32\xd0\x66\xb3\x07\xfa\xd5\x91\xfa\xdf\x08\xc0\x59\x55\x44\x25\x72\xa2\xed\x4e\x21\x84\xf2\x95\x52\xcb\x67\x31\x23\xe1\x1f\x94\x79\x32\x9f\x77\xd0\x78\x0e\x07\x64\xb9\x0a\x75\x56\x44\x18\xdf\x01\x19\xcd\x58\x68\x3c\x7d\xb2\xc1\x71\xd6\x96\xb2\x39\x99\x84\x99\x16\x43\x45\x2b\x22\x5a\xfb\x17\x75\x9d\xca\xc0\xdd\x73\xb9\xf4\x9c\x3c\x74\x59\xae\x64\x92\x92\x29\x6e\x92\xb7\xf2\xc6\x3e\x77\x9e\xea\xef\xa2\x19\xfa\xaf\xea\xd0\xcf\x72\xf7\x9b\x42\x38\x5f\x21\xf0\xb2\x11\x73\x66\xf1\x2c\x9c\xf5\x3c\xef\x18\x84\x8d\xb4\x3c\x3a\x54\x83\xa6\x0a\xee\x4a\xbb\x27\xca\x6e\xb1\xff\xf9\x2a\x38\xd3\x2d\x45\x43\x44\x31\x41\x20\x13\x64\x23\xa3\x59\x9d\x73\xc0\x19\x77\x36\x3b\x7f\xad\x4f\x27\xe0\x55\xba\x8c\xdc\xad\xa4\xcb\x15\x35\x48\x33\xca\x5e\xac\xfc\x12\xf9\x13\xe4\x65\x54\x1d\x00\x3f\x83\x32\x99\xdf\x79\x53\x5a\xe3\x57\x24\x9f\x71\x94\xeb\xd8\x1b\x16\x4b\x2f\xc4\x74\xcf\xfb\x9b\xf2\x6d\xc1\xce\xb7\x3d\x0f\x1b\x56\x7d\x90\xbb\x35\xb7\xce\x34\xb1\x44\xc9\xdd\x7e\xed\xb9\x46\x68\xdf\x54\xac\x0b\x1e\x09\x0e\xeb\x22\x4f\x16\x25\xbe\xc9\x33\xd3\x21\x1a\x62\xac\xdd\xb8\x01\xa5\x7e\x64\xbe\x01\x5f\x9b\x2c\xe0\x51\x1a\x9c\x30\xd0\x3c\x36\x68\x50\x25\x15\x2e\x9f\x40\x9d\xa2\x00\xff\xc7\x63\xbc\xe2\xd4\xb2\x9d\x68\x25\x8a\x62\xc1\xf0\x55\x11\x1e\x84\x45\x34\x08\x7f\xba\x58\x27\xfb\x10\xd3\x3d\x5a\x93\x98\x5c\xee\x1f\xc2\xfe\xc7\x88\x2b\xaa\xee\x22\x6f\x40\xf7\x9c\x5f\x5e\x3d\x81\x77\xc5\x6e\xf7\x05\xbe\x8b\x3a\x9d\xcc\xdc\x08\x4d\x4c\x10\x21\x1c\x66\x39\x84\xb5\x17\xe5\x26\xf2\x1c\x6a\xe0\x35\x42\x83\xb6\x7f\xc2\x81\x4d\x11\xc9\x9a\x65\x27\x06\xac\x6a\x3d\x2c\x56\xb7\x7d\x4b\x1f\xd2\xfb\x57\x4c\x87\x22\x99\x62\xc6\x3e\x00\x3b\xcd\x4f\xbe\x5d\xff\xfe\x59\xe3\xe1\x4f\x4c\xfa\xcc\x73\x1b\xe0\xfe\x46\x10\x64\x2d\x4a\xac\xca\x97\x65\x9e\x17\xab\xef\x99\xaa\xb4\x65\xff\x34\x5b\xae\xf4\x39\xd6\x84\x69\xfa\xef\xaa\x82\x93\xdf\x4c\xe5\x37\xd3\xa3\xe0\x9d\xf1\x83\xe6\x09\x4e\x95\x2f\x64\xf9\x02\x92\xbe\xac\xfa\x5b\x26\x5b\x1c\x8f\xfa\xe4\x57\x73\xf9\xd5\xbc\x62\xc3\x59\x56\x00\xb8\xfc\x7f\x32\x95\xd6\x1f\xe1\x74\x64\x8b\xad\x8c\x8e\xf3\xaa\xfd\x69\x1b\x9b\x73\x8e\x8e\x0e\xff\x73\xa4\x7e\xd4\x80\xc0\xde\x34\x99\x9e\x8f\xf0\xb4\x3e\x07\x1e\x4e\x07\x39\x7b\x35\x67\x2f\x6c\xd0\x6e\x8e\xb8\xed\x0d\xff\x13\x24\xd5\x3f\x4d\xda\x65\xa8\x1d\xe4\x0f\x98\x46\x1e\x35\x04\x70\x7f\x77\x71\xd9\x27\x2e\x4b\x5f\x4a\xca\x58\x46\x7f\x88\x19\x13\x65\x6d\xa6\xff\x2f\xe2\x31\x07\x9e\xe9\xdd\xd2\x6e\x96\xa8\xac\x32\x90\x03\xcf\x40\x8b\x7a\x32\x64\x0a\x15\x75\x38\xe1\x07\x23\x3b\xbf\x6d\xfe\x4a\x77\xba\x9d\x06\x64\x34\x30\xcb\x79\x96\x41\x3d\xee\xb3\x36\xc6\xdc\xd2\xbf\x1c\x14\x20\xe7\x8b\xbd\xbc\x52\x56\x99\xca\x70\xb4\x3c\x89\xeb\xf7\x39\xc2\x43\x42\xdc\xaa\xcd\xf8\x3b\x66\xc4\xcc\x1d\xcb\x89\xb0\x89\x80\xce\x87\x55\x44\x8c\xe4\xbe\xe4\x4d\x87\xd3\x4f\xdf\xa9\x59\x7d\x04\x44\x5d\x42\x65\x5a\x7b\xfa\xce\xba\xda\x52\xc5\x1d\x65\x7e\xb6\xdd\x7d\xb2\x69\x84\xb4\x57\x71\x06\x38\xbe\x92\x32\x05\x63\xc7\x90\x34\x98\x8d\xa7\x13\xcd\x0e\xe1\x18\xd1\x5e\x72\x1c\xa3\x11\x52\x6e\x48\xe2\x9d\xa8\xe4\x20\xee\xd7\x4e\x69\x54\x64\x24\x6e\x95\x8d\x8d\x38\xf9\x64\xb1\x99\x27\x57\xfe\xf8\xd7\x60\xf2\xf4\x0a\xf6\xcb\xdf\xd1\x43\x45\x05\xaf\x76\x4f\x61\xde\x2c\x5f\x06\x17\xe2\x7b\xe6\xfc\x31\xf0\x03\x2f\x14\x09\x09\xe7\xd9\xb8\x48\x26\x41\x1f\x96\xd5\x3f\x9c\x10\x25\xfa\x4f\x03\x2d\x41\xfc\xad\x5e\x04\x69\x07\x82\x48\x95\x54\x85\xfe\x9e\x46\x8f\x06\x4d\x78\x16\x4f\xbc\x29\x77\x65\x5a\x2e\x40\xbe\xbd\x39\xd3\x28\x4f\xe8\x95\xf5\x78\x5b\x78\x47\xf1\x8a\x3e\x26\x3e\x67\x5f\x6c\x5f\x61\x10\xb4\xfc\x80\x75\xb0\x68\x3f\x49\xd4\xea\x7d\xc4\x69\x8e\x5e\xa7\xd1\xd8\x93\xd4\x90\x9a\xfd\x9e\xfe\x11\xbd\xa4\xbf\xcb\x9d\x37\xb1\x54\xe3\x47\x6b\x0f\xa8\xd2\xab\x69\xd9\x45\xa5\x56\x91\xd1\x6b\x3e\xdd\xfb\x03\x20\x9f\x1f\x09\x75\x28\x9d\x7a\x4f\x47\x64\x1a\x82\x42\xa4\x84\xe4\x5e\xb7\xe4\x9e\x62\x06\xea\x35\x12\x4f\xf5\x32\x51\x6f\x41\x1b\xe3\x58\x9d\xc8\x3f\x9a\x76\x90\x6c\x81\xc8\xfa\xa6\x01\xf3\xcd\xaa\x89\xf9\xe5\x8c\x0d\x7d\x70\x28\x3e\x9b\x68\x52\x84\xf3\x6f\x04\xac\x73\x34\x7e\xeb\x45\x6e\x14\x32\x32\x28\x96\x0b\xe6\x02\x39\xc5\xe8\x0b\xe2\x1f\x8c\x8e\x45\x46\x03\xaf\x6d\x91\x40\x30\x83\x51\x7b\xd1\xed\xfe\xc8\xa1\xf9\xde\xd5\xaa\xf8\x22\xf5\x73\xeb\x1f\x17\x20\xa9\x6b\x11\xe1\x3b\xe1\x13\x01\x76\xdb\xed\x14\x4e\xbc\xdc\x5a\x2d\x45\x9c\x29\x2d\x53\xee\xa8\x98\xa0\x48\x94\xda\xdb\xc1\xe9\x29\x49\x9d\x56\x1a\x03\xf0\x5a\x9e\xb6\xcc\x40\x1a\xab\x69\xf2\x42\x59\x97\x55\xd4\x39\x76\xac\x3f\xa5\xd5\x88\x19\x3f\xa8\xd3\x99\xd4\x5a\x5e\xc5\xdf\x26\x7b\x16\xc4\xfc\x81\xc8\x09\xed\x9c\x23\xd3\xd8\x20\x08\x7a\x7e\x2e\x23\xf7\x12\x9a\x0e\xc2\xd4\xd6\xf9\x73\xea\xfa\xa5\x69\xc8\x98\x46\x19\x47\xac\x8c\x3d\x89\x0e\x91\x05\x4c\x12\x13\x2f\x88\x3f\x0a\x3d\x46\xfa\x52\x60\x19\x72\xc6\xea\xc1\xe8\x23\x0e\x90\x16\x3d\x0b\x14\x2a\x55\x46\x8a\xfe\xac\x67\x12\x78\x64\xbd\xd7\x1c\x7f\x77\x00\x5f\x79\x91\xc7\xbe\xa9\x54\x97\x3d\xb7\xc9\x3e\x14\xfa\xf5\x2a\xdf\xe8\xba\x3b\xcd\xf2\xaa\xa3\x5c\x1c\x69\xbd\xd1\x41\xf5\x19\x81\x84\xd3\x8b\xb6\x9a\xed\xc3\x4e\xa3\xd7\xef\xac\x59\x4f\xfc\xcc\xce\xe8\x2f\xb5\x55\x42\xc9\xc8\x9d\xb1\xc4\x55\xb9\x84\x49\x95\x8a\x4c\x23\x2d\xa8\x3a\x5c\x3a\xc1\x91\xe5\xa3\x2a\x29\x51\x4c\x11\x0f\x27\x14\x53\x96\xdf\x06\x97\x48\x32\xae\x58\x60\x46\x3e\x45\xf4\xb5\xec\xd4\x94\x76\xc5\xe0\xd2\x79\xcb\xec\x91\x46\xf3\xae\xd4\x5b\x98\x23\x98\x62\x94\x83\x5b\xf7\x9d\xfe\x68\x4e\x1d\x69\x12\x0b\x3e\x22\xb6\x15\x14\x91\xc3\x02\x20\x5a\xb2\xc9\x3d\x59\xf4\x34\xb0\x41\x77\xd1\x06\x5a\x38\x70\x0a\x58\xd8\x75\xad\x40\x77\x3b\x15\xc5\x4b\x4b\x5f\x55\xe9\xd5\x60\x58\x2d\xc6\xf2\x58\x3d\x55\xd8\xe8\x89\x55\x2e\x4d\x6f\xe8\x85\x88\xb2\x70\x14\x54\xef\x77\x77\xcb\x94\x68\xfd\x63\x46\x24\x62\xb9\xe2\x50\x84\x9c\xdc\xa0\x5c\x2c\xbe\x57\x6d\xe1\x76\x51\xbc\xfd\xcb\x76\x7d\xaf\xaf\x5f\xb1\x12\x55\x66\x41\x30\x74\x81\xee\x90\x1c\xf6\x4b\x73\xb7\xb6\x15\x48\x8e\x82\x2f\x88\x5a\xae\x76\xb8\x24\x78\x58\xdf\xf3\xd5\xef\x5f\x21\x18\x20\x5f\x41\xa3\x87\x88\x52\xd4\xb5\x1f\x38\x62\xd9\xa3\x14\x3e\xbd\xd0\x0a\x94\xb1\xa7\xaf\x68\xe6\x78\xda\xe5\x0d\xe2\x87\x3c\x2c\xda\x9c\x17\xa5\x17\xe2\x87\x35\xd3\xd2\xff\xaa\xdd\x27\x5a\xf2\x75\xac\x2a\xeb\xb9\x11\x4b\xa3\x59\x61\xca\xc3\x50\xc8\x1d\x1d\xcf\x27\x1c\x41\xc0\xb9\x8f\x7e\xc4\x51\xd7\x3c\x90\x56\xed\x7a\x11\x09\x44\x58\xaf\xa5\x6f\xe7\x13\xab\xbe\x30\x1a\x07\xc0\x3b\x2d\xb1\x57\xf2\xa5\x89\xd5\x44\x90\x3a\xe3\x53\x0c\x98\x1d\xc0\x64\x2d\x2e\xc2\x92\x2a\xe4\xd3\x2d\x93\x6b\xd5\x49\x6c\xc9\x29\x2c\x8b\xe8\x6f\x0a\x4d\x66\x81\xf4\x46\xf4\x0b\x58\x4c\x0e\x83\xa7\x05\xa1\xc4\x9e\x03\xad\x7a\x57\x41\x97\x46\x62\xc0\x8a\xa1\xc3\x93\x29\x39\x3a\x7c\x3a\xa0\xf0\x94\x7e\xd5\xe1\xe8\x61\xfc\x99\x04\x25\x39\x0f\x59\x2f\x62\x3c\xdb\x94\xd0\x81\xe1\x25\x31\x1a\xb0\xee\xd5\xc4\x7a\xb6\x12\x3a\x02\x67\xf8\x18\x56\x44\xe3\x9f\x17\x5b\x04\x6c\x10\x1d\x1f\x73\xb2\xab\xcd\x09\x50\x74\xc6\x61\xc8\xf7\xec\x95\x9c\x83\x60\x71\x64\x31\xfe\x5e\xa7\x86\xbd\xc6\x01\x39\x03\xd5\xa9\x00\x55\xad\xab\x6d\x1c\x2e\xde\xbf\xce\x0a\x2a\xfe\xc8\x6a\x57\xd7\x16\x09\x46\xf5\x92\x0e\x70\x58\x6a\xa1\x41\xa6\x1f\x55\x78\x0b\xf6\xd3\x44\x18\xb7\xcb\x64\xa1\xd6\x95\xb9\x9d\x57\x29\x17\x7a\x95\x32\xe6\xf1\x94\xc9\x79\x16\xfb\x15\x24\x34\x55\x4e\xa7\x03\x69\x3e\x4d\x2b\x45\xb3\x9a\x21\xb0\x24\x1c\xc8\x43\xf6\xe0\xb1\x27\x83\x63\x4f\x0a\xd1\xc4\xcc\x49\x9c\x3d\x69\x9c\xe0\x39\xc3\x8b\xea\xb8\xc8\x75\x17\xce\xe2\xef\x15\x36\x6d\xa6\xb0\x22\x50\x94\xf1\xa0\x1c\x5a\x10\x4b\xf6\x9e\xca\xfd\x3d\x15\x4d\xf5\xc4\x2f\x7a\x2e\x8e\x41\x68\xae\x4d\xa8\x81\x5d\x4b\x3f\x64\xf4\xb1\xbc\xdb\x65\x9a\xa2\x17\x94\xd9\x08\x7a\x1f\x2b\x74\x9c\x8b\xff\x06\xa9\x41\x74\xb1\x20\x1c\x04\x2a\x60\x8d\xc2\x76\x1a\x38\x78\x7a\x8c\x7e\xac\x05\x5f\xab\xae\x7c\xa7\xe6\x07\x4c\x54\x55\x49\x1a\xd7\x74\xa6\x2a\x9a\xa2\x82\x34\x75\x1b\xf0\xe1\x6f\xdc\x1f\x0c\x9f\x3a\xeb\x2d\xc5\x83\xfe\x93\x21\x91\x12\x2f\x4c\x19\xe5\x7b\x5e\x63\x86\x0c\xbd\xd0\xd0\x9b\xd7\xf4\xb4\x1c\x22\xc0\xc2\x4b\x1a\xc4\x1e\x8b\x3b\xbe\xd1\xfb\xf5\x86\x83\xc1\x53\x78\xa2\xa2\x01\x42\x19\xac\x40\x94\x5d\x23\x30\x34\x57\x9e\x37\xca\x54\x16\x70\xe1\xa7\x97\xd1\x50\xe9\xd3\xa0\x4c\xf6\x94\xc5\x39\xdc\x40\xac\x11\xf7\xb7\xf2\x18\x1b\x0a\xa4\x9a\x2d\x27\xe7\x15\x6f\xf8\x3c\xc9\x96\x34\x1b\x9d\x72\x8a\x82\x4e\x6e\x67\xc9\xd7\x9d\x89\xbe\xb5\x76\xd6\x95\xe6\x68\x31\xa7\x08\x64\xdb\x2b\x54\xa6\x41\xb3\x8a\xae\x1a\xe0\x9b\x94\xd8\x80\x16\x65\x9a\x68\x5d\xdd\xd4\x02\xf4\xa3\x91\xb4\x64\x12\xf5\x73\x2d\x70\x7d\x9d\x8a\x71\xa2\xf9\x3a\x99\x28\xce\x26\xa8\xb4\xc7\xf5\x4a\x3c\xa7\x59\xd6\x62\x39\x5d\x2a\x51\x5d\xb1\x64\xcd\x93\x76\xb3\x4f\x93\x1e\x76\xaa\x34\x0f\x0e\x5d\x43\x12\x63\x49\xcc\xe7\xee\x8f\x47\xa0\xfd\x46\xf6\xee\x38\x73\xc2\x7a\x86\x88\x0b\xfb\x91\x72\xa5\x2a\xa8\xe6\xd7\xe3\x7c\x82\xea\xa7\xf4\x7b\x38\xd0\xdf\xf3\x67\xfc\x3b\x70\xc4\xe5\xa3\xf8\x8b\x63\x58\xe5\xd7\x7a\x06\xfc\x1d\xfd\x94\x06\x75\x63\xdc\x3a\xc2\x3e\x6d\x7b\x56\x3b\x03\xc1\x40\xc0\x92\x73\x3a\x66\x9b\x1a\x59\x0e\x37\x57\x0c\xa6\x93\xcc\xb8\x50\xa2\xcd\x74\x9c\x92\x14\x32\x31\x5b\x1e\x77\x92\xd4\xea\xa1\x4c\x8f\x15\xb3\x5f\x4e\xe3\xee\x9c\x41\x09\xb6\xdf\xd0\x44\xf4\x08\x23\xba\x86\xdd\xd5\x25\x87\x5e\x9b\x13\x3b\xd5\xc4\x70\xff\x50\xd6\xaa\x6c\xa9\x44\x32\x7a\x9b\x2a\x58\x95\x81\xe3\xfe\x7a\x36\x5b\xb4\xe5\x70\x24\x54\xb5\x86\xc5\x95\x9b\x55\x56\xe5\x95\x45\xc3\xbe\xb2\x4e\x46\x03\xfa\xba\x1e\x31\xe0\x47\xd9\x48\xbc\x94\xbf\xfa\x3b\x7d\x2b\x3f\xe5\xa4\x9c\x56\xda\xff\x67\x45\x94\xd2\x3a\xe5\xe2\x9e\x5e\xd8\x70\x7a\x44\xf2\xcb\xbd\x53\xee\x3f\xfe\x17\xb1\xba\xaf\xef\x8b\x62\x15\xfd\x33\x15\x6e\xc9\x88\xd8\xd2\x15\x01\xe3\x1d\xa7\xea\xa1\x97\xf8\xb2\x25\x9a\x08\xb1\xcc\xd2\x0c\x56\xe6\x36\x52\x41\x75\x88\x3a\x47\x99\x8e\xae\xb0\x83\xa6\x1f\xcc\xc7\xee\x9e\xf1\xb7\x8c\xeb\x20\x0d\x2c\xa3\x54\x47\x76\x4b\xb6\x7b\x6d\x44\x7c\x2f\x2f\x32\x8e\x13\x2a\x2b\x59\xe5\x51\x2e\x2f\xef\xa8\x1f\x1c\x35\xd5\x65\x7c\xb2\x49\x0c\xe1\x15\x6c\x0f\xb1\x1a\x77\xdb\xa6\x41\x9d\x1c\xdb\x46\xc2\xbd\xe9\xa4\x0d\xb2\x0c\x0a\x80\x80\xad\xfc\x57\x59\x91\xbb\xdf\xd8\x98\xfe\xe6\xfd\x51\x6c\xef\x56\xcd\x20\x40\x44\xee\xdf\xd3\x98\x7c\xb2\xa6\xc1\x47\xee\x5c\xf4\xf3\xbb\x2d\xc7\xb5\x83\xc5\x3e\xcf\xda\xd8\x99\xc1\x89\xb6\x1f\xae\x97\x7e\x9a\x88\x81\x18\xb6\xbf\x0b\x42\x6d\x74\x4c\x93\xea\xeb\xa9\x3c\xb7\x53\x1e\x10\x01\xb1\x77\xd5\x4a\x76\xfb\x62\xa3\x0c\x1b\xdd\x47\xd6\xc0\x4b\x46\x80\xd7\xf5\x6b\x0b\x35\x3e\x77\xa0\x99\xe4\xbf\xef\x9c\x49\xf3\x5e\x48\xfb\x28\xd1\x00\x55\x07\x1e\xdd\x77\xc2\xad\x2f\x7a\x34\xde\xef\x35\x52\xaf\x16\xa4\x1e\xd1\x18\xbd\x1e\x27\x72\x49\x60\xdf\x88\x7b\xad\x4f\x51\x36\x28\xce\x33\x5d\x32\xd6\x22\x87\x9f\xa8\xd4\x5e\xfc\x1c\x94\x12\xd1\x31\xe5\x99\x27\xd8\xea\x38\x25\xc6\x24\xac\x36\x53\x27\xff\x6c\x89\xf5\x96\xa7\xd3\xd4\xdf\x78\x82\xcc\x97\xd5\xde\xf9\x2d\xdd\x73\xd8\x61\xf5\x5d\x95\xeb\x55\x0f\x03\x8b\x29\x2b\xdd\x87\x10\x76\xdf\x4b\x78\x5b\xd5\x7b\xcd\x12\xda\xfd\xd1\x2c\x8c\x5a\x3f\x13\x39\x39\x6a\x79\x8c\x03\x63\x8e\xc2\x54\x8b\x64\xc7\x3d\x76\xe5\x3d\x7e\x50\xb1\x41\x6f\x6b\x5c\x47\x78\x64\x1c\xf2\x08\xda\x9d\x6c\x5b\xb3\xbb\xd3\x0c\x03\xbb\xb4\xbc\xeb\x7f\x7c\xce\x6a\xa9\x6c\x4d\x4b\xf7\x94\x2f\x7f\xf8\x2a\xb8\x78\xc6\x35\x4f\xdf\x46\x0d\xa0\x13\x66\x25\xa0\xce\x06\x08\x3d\x49\xc5\x6f\x44\x4b\x32\x99\xa3\x4f\x62\xfe\x03\x90\xf2\x01\xa8\x18\xa9\xf9\xd2\xac\xa6\x1b\x8e\x43\xa5\x1e\x3e\x04\x5a\x95\x2c\x0d\x52\xac\x3e\x39\xa3\xfa\x6c\x8a\x5c\xaa\x24\xcf\xa2\x71\x99\x4d\x44\x91\x45\x8f\xde\x53\x2f\x1c\x9f\x8a\x06\xa3\xfd\x54\x80\xb8\x6d\x62\x6c\x89\x2f\x89\xb2\x66\x5a\x31\xa7\x2c\x02\xc6\x1f\x4e\x6a\xf8\x32\xb1\xf8\x92\x68\x75\xed\x95\xd4\xd3\x75\x58\xd0\xe9\x41\x03\xaa\x2b\x94\xe0\x9f\x29\xf8\x09\x60\x20\x38\x24\xa9\xfc\x19\xd3\x7a\xe2\xdd\x67\xd4\x10\x3e\x83\xef\x1d\x61\x68\xdc\x52\x77\x0a\xce\xec\x31\x8b\x7a\xf0\x30\x1d\xe5\xeb\x33\xf6\x53\xf4\x70\x88\x3d\xbb\x88\xe6\x42\xc3\xa5\xae\x57\xcc\x7a\x53\x6d\xd5\x3f\x87\xe0\x3d\xd7\x63\xbb\x40\x67\xe0\xdb\x30\xef\x76\xcf\xcf\x4b\x9b\xce\x9d\xed\x26\x32\x45\x44\x7a\xb3\xc3\x01\x6d\x21\xab\xa8\x24\x16\x48\x35\x4c\x04\x04\x82\x77\x3c\xeb\x55\x04\xf0\xb0\x87\xbf\x30\x58\x9b\x38\x36\x87\xd3\xcc\x52\x7c\x02\xe5\xd7\xe5\x12\x61\x43\x5d\x0a\xfd\x44\x87\x14\x22\xb6\xe9\x49\x1a\xa9\x58\xb7\x56\x0d\x37\xcb\xaa\x19\x9a\x1f\xd5\xd9\x28\xc1\x29\xdc\x36\x38\xbb\xa5\x54\x5f\x12\x3b\x57\x8c\x8a\x5e\xf4\xec\x3c\x0d\xb2\xe8\x35\x3c\x06\xf3\xb1\xd6\x34\xf6\x90\xc6\x61\x6c\x75\x86\x74\x9b\x18\xc9\x98\x4d\x5a\xb5\x34\x90\xab\xa3\x30\x78\xd0\xda\x6e\xcc\x33\xcd\x9e\x39\x5e\x6b\x91\x5f\x64\x2c\x1b\x8f\x27\x81\x4e\x5b\x40\x4f\x08\xe2\x26\x80\x18\x28\x54\x75\x96\x87\xd1\x4c\x25\x9e\xa0\x05\xc6\x04\x4e\x27\x12\xfb\x67\x60\xad\x8c\x8e\xce\x69\xb0\xcc\x4e\x38\x4a\x2b\x07\x59\x65\xb5\x4d\x2c\xe2\xc6\x48\x3e\xb7\x15\x4d\xd0\x8f\x60\x0f\x9d\x4c\x91\xc8\xd4\x8d\xad\xe6\x05\x24\xc6\xf0\x76\xe1\x04\x48\xf5\x84\xef\x9c\xb6\x5e\x19\xd4\xcc\x69\xdd\xf9\x25\x62\x89\xd9\x1b\xf6\xd3\x9b\x3b\xa9\xd8\x85\x7b\xe3\x1a\x23\xda\x6f\x0e\x87\x12\x9c\x96\xb0\x4f\x7a\x3d\xb1\xea\x27\x8b\xfb\xe4\x61\xe7\x02\x44\xdb\x33\xfb\xd1\xf9\xb9\xb0\x79\xec\xb9\xab\xc6\xbe\x7e\x5e\xcd\x0d\xcf\xc1\x18\xeb\x8e\x2f\xbe\xd6\x0a\xe0\x5c\x8c\xf6\x8e\x54\x0d\xf0\x21\x19\x4b\x64\x88\x5c\x3b\x5d\x10\x89\x1f\x6f\xcc\xb5\xb0\x97\x3f\x3b\xd7\xbf\x4c\xa4\x83\x62\x4d\x21\x20\x16\x91\xc9\x78\x7d\x1d\x3b\x93\xef\x1e\xb1\x1c\x0e\xb0\x6b\xb5\xc7\x1d\xe1\xb5\x50\x02\x15\x3e\x5b\xe8\x93\x08\x57\x6c\x97\x0a\xc4\x80\x15\xb8\xb2\x28\x9b\x7e\x7e\x87\xc4\x24\xdf\x24\x0f\xb4\xab\x38\x01\x3b\xd7\x41\x1b\xbb\x5a\x7f\xbc\x51\x72\x6b\xb8\xb1\xa7\x35\x15\x09\x8e\x9d\x90\xf4\xd0\x38\xf5\x99\x99\x0a\x73\xca\xd6\xb4\x3b\x85\xe2\xb8\x6d\xbd\x9c\xaf\x6d\xad\xb0\xa5\x70\xa6\xd2\x7d\x33\x74\xdf\xfc\xe2\xbe\x79\x36\x39\x06\x4e\xd0\x08\xf6\x74\x47\xcc\x90\x7c\x42\x54\x44\x22\xd3\x42\x3a\x6f\xea\x14\xba\x78\xc5\x58\xd3\x93\xe4\x05\xb3\x08\x1d\x00\xe1\xbf\xdb\x18\x63\x29\xa0\x70\xe5\x7d\xc0\xdf\xc9\x6b\x9a\x32\x24\x20\xdb\x3a\x31\xbe\xb7\x30\xc0\x86\x4e\xbb\x5c\xdd\x15\xa3\x5b\x04\xa1\x5d\x23\x64\xf9\xb6\xdb\xdd\xb2\x90\x68\x25\xa6\x5c\x65\xdb\xbb\x8e\xac\x67\x4f\x3d\x9d\xde\x3a\x08\x9c\x35\xf6\x1d\x20\xa9\xc3\x82\x4c\x3d\xa7\xd7\xe9\x5a\xfa\xa8\x3f\x6e\x63\xbd\x10\x34\x0f\x5b\xce\x44\xb7\xed\xcb\x27\x41\xd8\xb6\xcd\x05\x32\xac\x40\xfd\xa6\x8b\x45\x9d\xdb\x40\xdc\xc6\xb0\x48\xd7\x82\xd0\xaa\x9f\xc3\xe2\xdc\x8d\xb1\x86\xb7\x5a\x2e\x12\xcd\xf7\x92\x11\x6c\xa4\x01\x34\xa8\x45\xa7\x1b\x3e\x5b\x07\xae\x44\xb9\x86\x6a\xef\xe8\xac\xe4\x3a\x98\x45\x84\x54\x6f\x63\xcc\x65\x38\x20\x09\x68\x45\x08\x17\x6f\x68\x0d\x7c\x3c\x84\x46\x94\x79\xe9\x5b\x8e\x65\x02\xc2\xa3\x9f\xa8\x5f\xe7\x38\x86\xf0\x8b\xde\xda\xb8\x03\x3d\xa8\x44\x39\xb9\xce\x5a\x92\x18\xd9\x60\x2b\x89\xc4\xcb\xae\xe6\x34\x63\x0e\x40\x42\x13\x52\xc9\x08\x2b\x83\x4f\xe5\x79\x0b\xe7\x8d\x95\x2f\x23\x28\x0a\x68\x0b\xa9\xe4\xf0\x1c\xda\x7e\xaa\xd3\x31\xa2\x40\x4d\xa1\x9a\x4b\x0d\xaa\x54\x65\xb0\x12\x15\xa4\x7e\xa6\x5c\x9f\xa1\xea\x34\xdf\xe6\x13\xdb\xcd\x69\x20\x7b\x8b\x54\x17\x3a\xbb\x0d\x89\xf7\x74\x55\x28\x08\x44\x87\xa3\xc2\x8e\xfb\xa6\x49\x46\x98\x2e\xe5\x99\x76\x00\x02\x05\x78\x59\x4c\x8b\xed\x16\x49\x05\x5a\x36\xb3\xea\x49\xc9\x5c\xc5\x91\xb3\x72\x56\xac\xcd\x8b\x40\x27\x44\x1e\x69\xda\x98\x46\x4f\x08\xbb\x82\xf8\x93\x0c\xe7\x1c\x65\x5e\xcb\x75\x03\x1b\xd0\xbb\x36\xb2\xd5\xb9\x64\xbb\x2e\xec\x13\xf0\x1c\xd3\x68\x78\x9e\xf3\x81\x76\x19\x5d\xf7\xf7\xe0\xd0\xac\xfb\x9d\xd2\x74\xe8\xe7\xe3\xd9\x04\x06\x9c\xbe\x8d\x5d\x31\xa7\x0d\xb5\x2f\xa7\x0f\x70\xde\xa0\x19\x18\x5f\xd3\x7a\x63\x15\x86\x97\xb0\x3e\x8b\xb3\xd0\x87\x83\xff\x6e\xbd\x78\x53\x98\x22\x13\x0e\xde\x7b\x24\xb4\x3e\x07\x23\xbb\x2c\x09\x0a\x64\x96\xa5\x44\x25\xec\x71\x43\xe9\x50\xa7\x49\x98\x73\x9e\x75\x06\xe2\x51\x39\xa3\x7f\xce\x6c\x36\x72\x3e\x20\x41\x9e\x0e\x6b\xac\x2c\x86\xcb\x62\x17\xa6\xe6\xe1\xf7\x52\x20\x0c\x33\x61\xa6\x26\x34\x93\xa7\xe7\x23\xcc\xcc\xd4\x08\x39\xe2\x10\xb1\xb3\x2c\xef\x5a\x49\xb9\xa9\x4f\x2c\x95\x42\x82\xc6\x76\x0d\xb9\x73\xc7\x9a\x06\x79\xd9\xaf\x74\x94\x79\x18\xf5\x42\x4a\x08\x66\x1e\xcd\xcc\xab\x68\x5b\xc4\x13\x71\x80\xfb\xd0\xb5\xe4\x96\xfc\x34\x7c\x24\xd3\xb8\xb6\x54\x21\xe3\xc2\xa2\x12\x3b\x54\x26\xe4\xea\x0c\x8c\x23\xa1\x59\xc6\x4c\x2e\xe3\xd0\x89\x12\xd5\x5c\x26\x41\x98\x24\xc4\x63\xa0\xd5\xca\x53\xa1\xbd\x83\x6e\x08\x62\x78\xc5\xb8\x2d\xda\xfb\x37\xad\xe3\x0e\xaa\x5c\x59\x9e\x19\xb6\xec\x9a\xb8\x67\xfd\x8d\xe5\xce\x46\xc6\xc3\x14\xfe\x55\x37\x62\x9e\x21\xb3\x5d\xc5\x57\x4e\x37\xc3\x2a\x01\xe4\x46\xb6\xb7\x3a\xa5\x2b\x7f\x42\x72\x11\xcc\x8d\xb7\xbe\x01\x9f\x52\x68\x58\x4b\x56\xe5\x92\x38\x02\xe6\x72\x42\x55\x03\xdf\x1c\x39\xf3\xb1\x8e\xc6\xa8\xdb\xd2\xf7\x81\xc4\xd5\xea\x29\xae\xf5\xa0\xb3\xf5\x72\x83\x3d\x1c\xf4\xa7\x49\xb9\xd0\x25\x70\x6d\xf6\xbb\x7a\x26\xef\x10\x39\xe3\x53\xea\x04\x03\x9c\x8d\x1f\x75\x83\x54\x27\x58\xa8\x46\x78\xcd\xca\x14\x24\x88\x61\x84\xd4\x82\x91\xe4\x84\x43\x38\x95\x5a\xcd\xeb\xa8\xee\x26\x95\xd4\x23\x5b\xc9\x50\x5e\x24\xbc\x31\x62\xcb\xd8\xc1\x74\xac\xee\x89\x11\x94\xe9\x56\x53\xe9\x96\xdf\x9a\x9d\x29\x8d\xf3\xcc\x14\x24\xd9\x3f\x57\xb1\x12\x12\xa5\x13\x27\x20\x28\xf2\x76\xdb\x73\x24\xdf\x68\x46\x53\x8d\xdd\x8d\x4f\x15\x3e\xea\x19\x0d\x61\x8f\x82\xe0\x53\xf2\x4c\xca\x99\x03\x92\xcc\xed\xf6\x4d\x84\xdc\x56\xa1\x2c\x9a\xaa\xec\x94\x5f\xd8\x3d\x44\xcf\x8f\xc6\xfa\xc3\x6c\xf6\x88\x01\x65\x3d\x9d\xc6\x83\x50\x1f\x56\x9a\x5e\xd9\x62\xb1\xbd\x0c\xed\x25\x28\x85\x14\xc0\x31\xdc\x5d\xec\x5c\x8f\x6d\x29\x24\x69\x35\xcf\x6d\x64\x1a\x15\x65\x38\xd7\x82\x82\xba\xe0\xf3\x37\xe9\x02\x28\xef\xa5\xb4\x40\xd2\xd3\x22\x47\xc2\x4a\x35\x2d\xc2\x5e\x46\x95\xf8\xad\xce\x98\xf9\x9b\x00\x27\x2d\xf4\x6b\x55\x61\xa8\x8c\xab\x86\x8d\x4f\x5e\x48\x56\x9f\x85\x1d\xf5\x1c\xce\xaf\xc7\xaa\x86\x7d\x9a\x10\x7f\xbf\x7e\x4f\xbc\x5f\xe5\xf8\xff\x63\xc0\x1c\xb5\xb1\x2b\x10\x03\xcd\x0c\x81\xc3\x00\x01\x64\xc0\x27\xcc\xaf\x4f\xfe\xd3\xa3\x90\xe7\x70\x47\xa1\xde\xbd\x23\x41\x50\x95\xe7\x4b\x02\x0e\x0c\xc7\x93\x2b\x93\x21\x83\x0f\xa8\x73\x53\x11\x11\x69\x1e\x61\x15\xca\x60\x06\xe2\x17\x36\x64\x9d\x0c\x2d\x3e\x2d\x57\xe5\x6e\xce\x87\x4a\x29\xa7\xf1\xf0\x39\x82\xb7\x3e\x72\xef\xcb\xf7\xd1\x0c\xf9\x74\xa7\x76\xd1\x86\xb1\xd5\x8f\xcf\x94\xb2\x5c\xce\xad\x2a\x24\x66\x41\x1d\xb3\x57\xf6\x45\xd3\x43\x5e\x66\x19\x19\x99\x44\x0a\xb8\x13\x88\x89\xa0\x7b\xd3\xf4\x6c\x37\x51\x84\x81\x1d\x74\x24\x61\x9c\x19\x76\x64\x30\x61\xa7\x5b\x09\x02\x11\xbf\xf5\xc4\x78\x72\x22\xb8\xb0\xec\x04\x5b\xe5\x28\x65\x1e\xd5\xd3\xf3\xac\x2c\xeb\xf1\xdc\x33\x96\xdd\x39\x21\xf9\x18\xc8\x24\x51\x9a\x8d\x91\x21\x17\x7f\xb9\xf3\x04\x8b\xfe\x4c\x46\x7f\xd0\xa9\xb3\x65\x10\x98\x66\xc1\x2c\xd3\xe6\x35\xf6\x23\x49\xd6\xa6\x06\x9b\x9d\x9f\x8f\x82\x29\x3e\x01\x5a\xef\xc8\xc0\x1e\xd2\x62\x87\xfb\xca\xaf\xb8\xb7\xb0\xe0\x20\x8e\x8e\x1f\x00\xc2\xe4\xb2\x22\xb3\x2e\x0c\xa2\xa7\x3a\xf1\x78\x21\x10\xa4\x01\x01\x6d\x3a\x59\xd0\xd8\x1d\x09\x87\x39\x90\xab\xdf\xaa\xd7\xeb\xe8\x24\xa2\x91\x9a\xda\x77\xcd\x2b\x27\x03\x71\xe6\x0b\xfc\xd9\x58\xcf\xae\x07\x65\x94\xbd\x95\x93\x3d\xa9\xce\x76\x1e\xe7\x96\x03\x60\xfe\x55\x43\x26\xad\x98\x96\xe0\x55\x84\x06\x2c\xb1\xcc\x2c\xc7\x73\x2b\x7f\x1d\x1f\x70\xf8\xc3\xa6\x76\x62\x53\x39\xb1\xa9\x9c\x58\x15\x31\x05\xf3\x99\x4e\x0c\xbc\x27\x6c\x6d\x98\xba\xf3\xc9\x1e\xd7\x7a\x2e\x53\x9e\x4b\xa9\x3c\x1a\x10\x17\x90\x72\x9c\x8c\x9c\x3d\x87\xf0\x57\x75\xb6\x72\xe3\xe0\x28\x0d\xf4\x7a\x50\xc7\xa0\x62\x79\xa0\x04\x4f\x21\x45\x4b\x21\x85\xce\xba\xfd\x81\x64\x9a\xd8\x8f\x38\x9d\x8c\xd4\xaf\x4b\x94\x2a\xc7\x4f\x52\xe3\x4e\x0b\xd7\x72\x26\x96\x9d\xc8\x5e\xc0\xcb\xab\xd1\xd9\x2c\x43\x04\x06\xa4\xc1\xe3\x8a\x5d\x1f\xea\xdd\x82\xfa\xf7\x12\x61\xf7\xa9\x90\x12\x8d\x05\x3f\xfc\x71\xc3\x8f\xb8\xff\xea\xd1\x6b\x79\x5a\x87\xc7\x6a\x98\x34\xad\x84\x7f\xbf\x5a\x59\xc3\x2e\x59\xc7\x91\x9f\x7f\x7f\xb7\x77\x5e\x70\x4d\xf2\x85\xaa\xc8\xbe\x53\xd5\x1d\xdf\xef\x6a\xdd\x44\xee\x7a\x94\xa9\x46\xd5\x3c\x3c\x09\x8d\xb0\x8b\x55\x0c\x57\x76\x53\x47\xbe\x88\x2b\x62\xc0\x36\x53\x0a\x45\xab\x87\x1c\x65\x26\xf1\x2a\x73\xaa\x49\x04\x69\x4b\x24\x50\x7c\xe0\x4a\x6e\xdd\x54\x83\x55\x76\x7e\x4e\x80\x35\x4a\x8d\x4e\x4a\x29\xc0\x39\x69\xb5\xd5\x74\x3a\xfc\x5f\x2d\x6d\x83\xec\x88\xe6\x56\xd0\x8e\x3e\xcd\x48\x90\x59\x3e\xb4\x25\x50\xa5\xaa\x88\x13\x2b\xbd\x49\x16\xd1\xf0\x43\x61\x4b\xbb\x23\xfd\x8d\x90\x86\xff\x5b\x1a\xed\x8a\xfd\x57\xaa\xb0\x6f\xa6\xa4\x5a\x49\xa0\x6b\x45\xaf\xdd\x3a\xd8\x04\xca\x7c\xfd\x1b\x89\x3f\xbf\xc9\x90\x2c\xba\x3c\x73\x10\x11\x41\xd3\xfa\x3e\xfc\x64\x40\x02\x5c\xb2\xdb\x87\xcf\xe8\xc2\x9c\x2a\x7d\x34\x18\x28\xca\x4d\xfb\x27\x79\x68\xcf\xec\x96\x30\xd3\x53\xe1\x56\xa0\x49\x4f\x38\x04\x4c\xaa\xa8\x82\x43\x28\x1c\x13\x1b\x87\x5c\x39\xca\x66\x28\x58\x47\x59\xfb\x78\x74\x19\x15\x38\xa9\x09\x1c\xf2\x6c\x76\xf4\x0e\xff\x36\x6a\xc9\xb1\xe0\xc8\x16\xc9\x6e\x07\x3d\x0e\x6d\xfb\xfd\xff\x47\xfe\x6f\x8d\xae\xea\x80\x3c\x42\xb9\x09\x9c\x76\x6c\x51\xf1\x42\x11\xd7\xe4\x64\x3b\x2a\x38\x1d\xda\x6a\xf8\x36\xb1\xff\x0f\x5c\x48\x6e\xf0\xf1\x2b\x67\x6a\xe8\x9d\x4c\xc1\x62\x66\x08\xfa\x44\x76\x77\xbb\xa0\xaf\x2e\x74\x48\x8a\x59\x65\x3a\xb9\x00\xba\x73\xd3\xc7\x0c\x7d\xc7\xa6\x63\xe5\xef\xc4\xbd\x7b\x17\x89\x34\x35\xaf\x7e\x80\x52\xd2\x62\x0f\x93\xf6\xfd\x8a\xf3\xf1\x72\x38\x54\xb6\x6e\xb2\xb1\x4f\x0b\x13\xfb\x94\x5e\x14\xb4\xec\x98\xea\x4e\xa7\x31\x23\x32\x25\x93\x2e\x21\x32\x93\x70\x1a\x84\x8c\xab\x7c\x69\x1e\x14\xe6\x25\x4d\x5f\xa3\x26\x1d\xd4\x2f\xa9\x81\x0c\xf7\xce\xe3\xe3\x4f\xa8\x76\xa9\x90\xf4\xe6\x4b\x6a\x43\x93\xe5\xf0\xbd\x0c\xf3\x4a\x13\xda\xa8\x8b\x83\x26\x0b\x95\x06\x07\xf5\xf1\xd5\x3f\x74\xf9\xc8\x84\x8b\xd5\x5e\xe0\x8b\x2c\xba\xb8\xda\x5e\xcc\x46\x15\x86\x9a\x8a\xb4\x1d\xc7\x73\x14\x71\x9d\x44\x81\xed\x51\xeb\xc1\x78\x4c\xe4\xd0\x9a\x34\xd4\xc6\x6a\xa8\xbd\x5a\x8c\x1a\x81\xd0\x58\xbb\x96\xc3\x74\xcc\x89\x03\xa3\x6d\x36\x80\x7d\x10\xb6\x5a\x1d\x51\x14\x31\x8d\xcc\x6b\x4a\x47\xf4\xbc\x87\x17\x56\x6b\xa7\xac\xa4\xa5\xf0\x5e\xb4\x05\xc1\xd3\xf1\xa6\xe8\xb3\x84\x3d\x9d\x03\xa6\x0e\xd4\xa2\x63\x80\xa0\xb2\xe8\xd7\x1f\xb7\x87\x46\x9e\xf0\x89\xb6\x32\xf8\x4c\x1d\x23\xd8\xd4\x9c\xd9\x8b\x42\xe8\xa5\xd5\xa9\xb5\xe5\xfa\x16\x81\x8a\x70\x63\xb4\x27\x95\xce\x14\x2d\x3d\x29\xde\xd9\x8d\x59\xb3\x1b\x1c\xd5\x19\x76\x18\xb6\x13\x01\x94\x63\x19\xed\x0f\xb9\x6b\x5a\xed\xa8\xb4\xc1\xd9\x22\xe3\x70\x56\x2a\x23\x0d\xe6\x2d\xd3\xd1\x08\x1d\x50\x32\x66\xdf\x2c\xa0\xb6\x9b\x16\xd4\xe3\x8b\xab\xce\xb8\x16\x07\x1d\xb6\x08\x50\x36\x76\x2a\x48\x21\x87\xb2\x16\x72\x27\x37\x6b\x36\xea\x48\xc1\xd1\xdf\xb4\xf1\x05\xeb\x1c\xf4\xee\x67\xab\x6d\xb6\x17\xe3\x07\xe7\x4a\x2b\x9f\xa8\xd8\x38\x83\xcb\x02\x12\x5b\x8c\x0e\x84\x9c\xf3\x7e\x4a\x80\x35\x0c\x35\x77\x2b\xca\x88\x8a\xc4\xc4\x72\xc7\x05\x1c\x37\x2f\xcb\x51\x29\xf5\x49\x99\x0c\x31\xd9\xf1\x3b\x99\x69\xac\xdb\x2d\xe5\x41\x83\x5f\xc1\x1c\xb1\xc5\x2a\xa1\x0a\xb7\x9e\xd5\x36\xbf\x7e\x4f\xeb\x03\x93\x44\x27\x5c\x9c\x7e\x53\x89\xc2\xe6\x96\x80\x0d\xbd\x4c\x32\x00\x4f\x98\x47\x69\xf2\x4d\xbb\x4f\xee\x24\x92\x32\x8d\xab\x91\xca\x2c\x9f\x9a\xf3\xe0\xd9\x49\x6b\x4b\x95\x29\x5e\xcf\xe8\x94\xb7\xd5\x4d\xa1\x6d\xd4\xdc\x93\x4f\x79\x00\x3d\x93\x7e\x4e\x38\xfb\x9c\xb1\x2e\x5d\x05\x2d\xb5\xd0\xab\x2a\x63\x70\xcc\xd1\xaf\xcb\x68\xc0\x56\xd0\xb9\x0d\x53\x9d\xe1\x14\x46\x9a\x43\x23\x8e\xba\x32\x95\x90\xd6\xfa\x52\x01\xee\x14\xee\x0c\xdd\x40\x31\xb5\x25\x8f\xce\x87\x70\x29\x3e\x56\x18\x77\x89\x37\x85\x4d\x1a\x36\x11\x15\xf5\x45\x65\xcb\x4f\xea\xd6\x19\x95\xa8\xff\xd6\x5e\x2f\x36\x51\xbb\x9d\x58\xad\x7c\xcc\x22\x17\x20\xc5\x40\x4d\x74\x0e\x4b\xba\xd8\xd2\xa0\xda\x22\xfb\xe9\x9f\x44\x5c\xa7\x28\x46\x8c\x94\xbc\xa1\x46\xfc\x81\x0a\x10\xb4\xcc\xc4\x2a\x13\xeb\x4c\x06\x5c\xdd\xf2\xce\x93\xc9\x73\xc4\x46\xd9\x67\xa8\x6e\x1f\xf4\xc4\x05\x4f\x2e\x4a\x71\x9b\x45\x0d\xe2\x2e\xb6\x78\xc8\xb4\xab\x4a\x48\x50\xe9\x3b\x8d\x1f\x97\xdc\xee\x69\x0b\x43\x6b\x22\x7b\x32\x30\x5a\x33\x4b\x90\xfd\xc8\x91\x8d\x2b\x58\xa9\xd1\xaf\xea\x09\x89\x3d\x32\x1e\x59\xaf\x8b\xa9\x74\xb6\xa0\x9f\x67\x6c\x9b\xa1\xfb\xe0\x64\xd4\xb0\xdc\x0e\x02\xb8\x2e\x59\x07\xad\x0d\x2a\x39\x06\x28\x87\xfc\xaa\x04\x2e\x87\xf5\x42\x2d\x54\x34\xe0\x84\x57\xc3\xd8\xde\xfb\x6a\x8d\x96\x9c\x18\x1a\x22\xa0\x0e\x63\x11\xaf\xb2\x70\x59\x31\xb8\xcf\xe2\xdc\xe2\xfa\x5c\x1b\x62\xc1\xeb\x22\x57\x26\xfa\x29\xbb\x5c\x30\x29\x74\x71\x6e\x1a\x18\x92\x2a\x2b\x0b\x8b\xc0\xa0\x23\xae\x74\xf7\xff\x63\xee\x5b\x9b\xdb\x36\xb2\xb4\xbf\xbf\x55\xef\x7f\x90\x30\x5e\x15\x61\xb6\x48\xca\xf1\x87\x59\x68\x60\xac\xe3\xd8\x63\x67\xe2\xd8\x13\x3b\x1b\x7b\x28\xae\x0b\x00\x41\x8a\x12\x45\xca\xbc\xe8\x12\x93\xff\x7d\xcf\x73\x4e\x5f\x41\x50\xd9\x99\xda\x0f\x5b\x2e\x8b\x40\xa3\xd1\xe8\x7b\x9f\xfb\x63\x0b\xf5\x9d\x39\x86\xd6\x71\x41\x17\x5c\x23\x4a\xa8\xf5\x6d\x10\x37\xa5\xc5\x45\xf4\xc6\x87\x6b\xb3\x67\x98\x77\xd1\x4b\x0a\x08\xbd\xb8\x13\x5a\x2f\x25\x1a\xda\xd1\x51\xa8\xe2\xd7\xd8\x4a\x65\x3a\x92\x58\xc5\xe8\x4b\x8c\xc2\xab\xc9\x1d\xcb\x91\x4b\xb5\xa7\x2b\xcb\x38\x5b\x94\x47\x47\x5f\x21\xd0\xbd\x2e\x6d\x1a\x6b\xf2\x10\x7f\xb2\xef\xeb\x06\x23\xcd\xd1\x1c\x47\xed\x32\x1e\xa4\x26\xd3\x95\xe9\x4a\x3e\x16\xd5\x2e\xa8\xc5\x57\x3a\x3c\x13\x16\x24\x9a\xe1\x4d\x04\x3c\xbc\x61\x27\x91\x60\xde\x8e\x7e\xa3\xfe\xb7\xc8\x9b\x75\x30\x13\x43\x5b\x3a\x53\x78\x5e\xeb\xd6\x26\xb3\x91\x4a\x2c\xd8\xc4\xb0\x65\xc8\x49\xc8\x9b\xb6\xb2\x1f\xce\xca\xdd\xad\x0d\x0b\xc4\x92\x21\x2c\x50\xac\x8d\x23\x0d\x6f\x63\x07\x86\xdf\x3e\xfc\x5a\xa2\xee\xe1\x90\xd0\xab\x7f\xd0\xbf\x25\x80\xae\x01\xab\x6b\xf6\xea\xdd\x51\x5c\xce\xd7\x8b\xb2\xd2\xb3\xa3\x7b\x76\xdb\xee\x8e\xe3\x46\x91\xcb\xbc\xd4\xfe\x2c\x76\xf2\x9f\x72\x52\xba\x53\x7d\xc0\xcc\xf8\x5d\xe0\xfc\x6c\xac\xa8\x1e\x72\x3b\x29\x51\x49\x21\x95\x95\x47\x96\xfa\x9d\xac\xb6\xbe\x13\x89\x8b\xcd\xb9\x47\x38\x83\xf6\xf5\x73\x69\xd6\xe1\xde\xce\x29\xe2\x41\x63\xe9\x18\x44\xd3\x9a\x96\xb7\x99\xe8\xa1\x7e\x68\x70\x1b\xe7\x15\x57\xa4\x15\x42\x3c\xa4\xc0\xac\xc7\x60\x96\x7a\xfd\xa3\x14\x7c\x58\x3e\xba\x67\x0a\x69\x25\x4b\xb0\x59\x72\x84\x94\x32\xf6\xfa\x34\x9c\x34\xfc\x9c\xe9\xb7\x06\x40\x1b\x37\xb5\x4a\x8e\x10\x29\x2d\x2c\x40\xfb\x1b\x2a\x52\xdc\x89\x8a\xdd\x03\x92\xa6\x67\xe1\x0e\xde\x79\xd9\x99\x0c\x69\x2c\x19\x80\x0f\xbf\xe5\x7c\xbe\x18\x2e\x9b\xf5\x44\xa7\xf5\x31\x6a\x35\xb6\xaa\x88\x63\xeb\x3c\xcc\x95\xc9\xf4\x6f\x62\x24\x27\x96\xfa\x11\x5c\xe5\x26\x27\x1b\xb3\xa6\x1b\x4a\xb7\xd5\x60\x5b\x61\xe8\x36\x47\x13\xa6\x27\xe5\x23\xbe\x53\x91\x8c\xd3\x56\xf9\xd3\x41\x7b\x6c\x56\xc3\x09\x0b\x22\x9a\x87\xcc\x0e\xb0\x38\xa5\x20\x1a\xaf\x0c\xb5\xa3\x9b\xc4\x0c\x43\x19\x0b\x8c\x5d\x57\x2b\xff\x38\xdb\xf9\x8a\x9d\x7c\xda\xb7\x73\xf7\x00\x11\x9b\x60\x77\x84\xf4\xb0\x4d\xc5\x46\x80\x50\x9b\xe3\x22\x54\xd8\x61\x06\xdc\x5e\xe8\x8b\x2c\x8c\xbd\x4f\x13\xa1\xdb\xfc\x06\xcd\x2d\x62\x0d\x35\x11\xb5\xd4\x94\x92\x20\xd1\x09\x9d\xb4\x31\x50\x29\x1b\x19\xd2\x8d\xa8\x13\x99\x78\x5a\xe9\xfc\xf9\x06\x19\x90\x14\xd2\x4b\xd8\x17\xff\x80\x5e\x12\x63\xe3\x87\xe9\xa5\xf7\x61\x31\x81\x6c\xcd\x6c\xbd\x2c\x54\x6b\x56\x01\x80\xe8\x66\x36\x3f\x1f\x68\x91\xa5\xf2\xc2\x46\x51\xaa\x26\xc1\x0b\x78\x24\xd6\x28\x2b\x5d\x3c\x5c\x5e\xe7\x70\x0a\x46\xf0\xd6\x57\x74\xa5\x44\x34\x06\x37\x61\x2b\x22\xdb\xaa\x9d\xf6\xd6\x0c\x1e\x9b\x29\xb1\xb1\x50\x62\x63\xa1\xc4\xc6\x86\x12\x1b\xa5\x27\x12\x70\xed\x30\xa0\xb1\xd8\x06\xaa\xf0\x5a\x8e\xdd\xbf\x60\xaf\x30\xe7\x5b\x00\xeb\x01\xcf\x19\xa6\x72\xd4\x4e\xe5\x53\x3b\x22\x37\x72\xd4\xce\x90\xf6\x66\xb8\x68\x26\x95\xa3\xb9\x2a\x47\x73\x21\xbb\xa3\xb9\x24\xb3\x34\xda\x1c\xfe\x79\x21\x6e\xc3\xff\x33\xae\x98\xb2\xb3\xab\x69\xe4\x19\x48\xb0\xc7\xdc\x1b\x46\x4e\x3a\xe9\xc5\xc9\xb2\x34\x70\x42\xd6\xa2\x6c\xb3\x59\xed\x26\x32\x7a\xe9\xa2\x82\x66\xf9\xf8\x64\xab\xdd\xff\x42\x19\x9b\x05\x24\xee\x8b\x58\x4d\x45\xcb\x45\xd9\xb0\xb8\xfd\x5e\x7c\x60\xdd\x8d\xc3\x35\xfd\xd4\xf9\x1c\x5a\xa9\x1c\xaf\x64\xcf\x10\xde\x70\x72\x7b\x7a\x27\xf7\xb8\x5c\xdf\x98\xb7\xa8\x71\xf7\x21\xc4\x93\x7f\x17\x66\x14\x02\x38\x54\xe5\xe8\x01\x82\x50\xad\xca\x87\xef\x66\xd3\x7b\x84\x07\xc9\xef\x7e\xe2\x35\x87\x69\x5d\x4d\xa7\x3a\xc8\x88\xbe\x7b\xaf\x8d\x8c\xe9\x95\xf9\x2d\x3d\x9a\x21\x7d\x3e\xd5\x57\xeb\x65\xf5\x36\xbf\xa6\x0b\x0e\x46\xfa\xbd\x38\xcf\x2b\xe3\x3c\xff\x52\x6f\xc5\x75\xce\xd3\xcc\x5d\x11\x41\x05\xb2\x1d\x96\x9d\x71\x4f\x6a\x21\xa5\xed\x45\x7a\xc1\x8a\x36\x23\xba\x98\x73\xb5\x64\xe7\x5a\xd3\x4e\xd4\x3f\x5b\x9d\x2d\xce\x66\x67\xa3\x41\x5d\x00\x48\x2d\x78\x81\x65\xba\x4f\x0a\xe8\xe1\x75\xf8\xc1\xa4\x2f\x76\xdd\xee\xa0\x95\x35\xe6\x90\x9e\x40\xf0\x81\xc0\xd0\x98\x53\x5a\xd6\x67\xaa\xd1\xf2\x45\x81\xda\xd1\xc9\x6e\x23\x46\x4c\x76\x11\x8b\x3e\x8f\x55\xc7\x51\x6c\xf9\x04\x18\x8f\x9c\x4e\x9e\x9d\x1b\x48\x10\x8d\x03\x7b\x3e\x20\x46\xeb\x24\xf5\xe3\xfb\xb3\x09\xb0\x2d\x37\x83\xb9\x4a\xdb\x4b\x80\x5f\xa5\x0b\x51\xbc\x26\x22\x1f\x8e\x84\xf8\x03\xe3\x3d\x03\x93\x02\xa3\xc1\x11\xb3\x1e\xce\x2d\x1c\xfe\x98\xfc\xf6\x5f\x7a\xb0\x9d\x68\xa7\x72\x77\x3a\x36\x2e\xa3\x43\x98\xdf\xda\x0f\xc9\xde\xe6\xd7\x85\x36\xb9\x30\x6e\xbe\x0e\x2b\xf4\x2f\x8d\x11\x3b\x2c\xd7\x0e\x0f\x38\x95\xfd\x6f\x8e\x9c\x57\xbf\xff\xd3\x83\xb7\x67\xec\xe4\xb6\x69\x04\x21\x94\x82\xa9\x8b\x29\xc9\x3e\x51\x7a\x44\x19\x40\x45\xc6\x14\xce\xad\xff\xdc\xb0\x8a\x0e\xb4\x3e\xac\x9e\xcf\x8a\x1e\x9a\xd3\x7d\x1e\x92\x85\x1f\xa0\x1d\xa0\x6f\x62\xf7\xe1\x16\x52\xec\x87\x9d\x0f\xd3\x34\x63\x15\x9a\x72\xf9\xe2\x7a\x33\xb8\x5e\x2d\x5b\xa1\x90\x3e\x1c\x5c\xb0\x98\x45\xbc\x4d\x42\x7b\x51\xbf\x7e\x66\xc2\x8a\x25\x98\x2e\x9f\x05\x30\xc1\x04\xd0\x80\xc9\x70\xce\xc5\xe8\x00\x1f\x70\x29\x9f\x27\x16\xad\x0a\x1a\x43\x5c\x49\xe5\x9a\x5b\x88\x59\x6c\x0b\x81\x03\xfe\x16\x68\xcf\x05\xc4\x2e\xac\xaf\x0b\x2b\x24\xb6\x36\x5f\xbe\xd8\x47\x5f\xbe\x44\xf5\x99\x5b\xbb\x4f\xc3\x5b\x22\xae\x84\x4d\x66\x1d\xc4\xfe\x52\xc5\xf7\x9d\x21\x2a\x74\x9b\x9a\x45\xd8\x29\x26\x5a\xce\x13\x6d\x17\x8e\xc2\x18\x52\x7a\x48\x33\xb0\x95\xf3\xfd\x1e\xe8\x6d\x93\xfc\xf0\x9a\xb0\x73\x9e\xe5\x92\xc6\xb6\xb7\x77\x6a\x8c\x7c\xbd\xe3\x31\x2a\xa6\xeb\xc5\xc1\x88\x18\xb2\xa5\xfc\x85\x89\x32\x7e\xe7\xeb\xd5\xc1\x74\x9e\x0f\x0f\x16\xd5\x92\x28\x89\x03\x11\xd3\x1e\xac\x67\x9c\x58\x4e\x27\xe5\xe5\xc1\xb0\x98\xca\xc5\xd5\x9c\x8e\x44\xa0\xfe\xcb\xd5\xfa\x5a\x7e\x31\xa4\x72\x05\x67\x00\x7d\x45\xe5\xf2\x05\x98\x16\x9d\x46\xe3\x49\x19\xcb\xf3\x7c\x36\xa6\x0f\x09\x10\xf2\x72\x5d\x5c\x4d\x56\x07\x97\xd5\x3d\x97\x4b\xbf\xd7\xb0\x90\xc4\x05\x15\x5f\x2d\x16\x73\x5a\x4c\x38\x70\xef\x56\xb4\x09\xae\x23\xcf\x3c\xb1\xc9\xf8\x20\xb4\xcb\x70\xbc\xf2\x0e\x05\xde\x93\xd5\xc6\xaa\x68\x8d\x57\x51\xea\xc5\x65\x20\xc6\x8b\x78\x07\xad\xe9\x1c\x0d\x7c\x00\x06\xdd\xb5\x18\x42\x63\xd7\x68\x98\x02\x01\x19\x03\x34\xe1\x3e\x76\xde\xd4\x47\xd4\x65\xc2\xa3\xab\xf5\x6c\xe7\x95\xda\x0b\x40\xec\xd7\x6f\x30\x32\x85\x40\xd8\xff\x31\xa2\xbe\xb5\xbf\xa0\x6f\xec\x79\xcb\xbe\x73\xd2\x70\x0c\x65\xde\xe7\xa3\xc7\x8c\x37\x6c\x12\xa8\x68\x20\x09\x3f\x8e\x44\xcc\xc0\x44\xcc\x4d\x69\x0c\x35\xd4\x2d\x14\x99\x59\x57\xdd\xd1\x6f\x4b\xc5\x9b\xd6\x59\x7f\xf3\x8d\x7e\xb6\x9b\x41\xbc\x89\x18\xa7\x3b\x3a\x3b\x03\xb9\x33\xd8\x9c\x9d\xf5\x71\xdd\x2d\x46\xb3\xc5\x0a\xb7\xeb\xfe\xd9\x30\x3f\x1e\x3d\x3f\x7e\x35\xf8\xf6\x74\x1b\x3f\x8e\xce\x96\x8f\x93\x6c\x03\x80\xee\xcd\x28\xa7\x0d\x84\xcd\xb6\x36\xc7\x59\x2b\x3b\xec\x9d\x0d\xe3\xb3\x61\x1b\xa8\xdc\x1d\xfa\xdd\xc4\x28\xbb\x7a\x39\x80\x93\x62\xc6\x09\x4c\x4c\x31\x59\xfe\xe3\x87\x77\x3f\x07\x31\xaf\xc1\xc3\x74\x90\x0a\xf2\x1b\xbf\x92\xcf\x46\x6a\xf7\xd2\x5a\xe0\x33\x2d\x82\x87\x60\x7e\x55\x86\x5e\x90\x67\xce\x6b\xcf\x20\x90\x56\x76\x35\xdf\x95\x61\x60\x01\xf6\x2f\x77\xd2\x02\xf6\x79\xa3\xe5\xad\x7a\xec\x2e\x91\xb3\xca\x0f\x6c\x11\x11\x27\x87\xa3\xe3\xc3\x4a\xf1\xae\x14\x67\xf6\x2c\x88\xf4\xcb\x08\x2d\xc1\x96\x28\xbc\x8c\x5a\xd1\x9b\xd9\x0d\xb1\x0b\xc3\x03\xd4\x3c\x39\x80\x4c\x0a\x82\x01\x6e\x02\xb1\x60\xe9\x8e\x9d\xb8\x12\x9c\xc2\xc2\x51\x1c\xd6\x3e\xb0\x88\x3d\x7d\x06\xe3\xcd\xe4\x9d\x1f\xde\xbd\x7d\x8f\xb2\x16\x19\xd5\x17\x9e\xa1\x36\x81\xe3\xd4\x49\xbc\x90\xc5\xfc\xea\x03\x97\x05\x59\x01\x56\x75\xf7\xee\x0a\x90\xbe\x68\x15\xde\x79\x4e\x55\xb8\xa9\x3e\x69\xab\xcc\xe8\xed\x84\xf6\xa3\xe5\x7c\xb4\xea\x80\x49\x7c\xf7\x16\x92\x85\x4e\xbe\xbc\x9f\x95\x69\xc4\xc3\x8d\x63\x1b\x5b\x15\x3d\x86\x08\xc7\x21\xd4\x94\xc6\x84\xc7\x97\xbb\xd4\x82\x61\xd3\x68\x94\x7b\x4c\x27\xb8\xb6\x0b\xee\x38\xcf\x71\x6d\xa7\x2b\xe9\xb3\xd2\x93\xaa\x14\xb7\xd9\xfb\x52\xfd\x5e\xaa\xe7\x34\xb5\xff\xd4\x79\xfc\xa8\xab\xbe\xc7\x24\xef\x67\x47\x83\xf8\x4b\xda\xff\xaf\xa3\xc1\xe3\xae\x7a\xc1\x92\x85\xce\xe3\x2c\x4e\xfa\x07\x67\xab\x01\xe2\x35\xf2\x6c\x7f\x1c\x9f\x2d\xb2\x47\xdd\xf1\x95\xfa\xc1\x08\x1f\x0a\xda\x47\x37\xf9\xf5\x35\xfe\x1f\x2f\x57\xf3\x45\x3e\xae\x36\x9d\xf6\x31\x6f\x48\x4b\xf8\x5f\x8c\xe8\xbc\xdd\xd0\x96\xb9\xb9\x9d\x0c\xa9\x29\x71\x42\x1f\x7d\xa9\x5f\xff\xeb\xcb\x8f\x9b\xd7\x2f\x9f\xff\x00\x6f\xdd\x57\x48\x3b\xeb\x9e\x75\xbb\xea\xaf\xfc\xb8\x7f\x76\x4b\x05\x0d\xda\x09\x96\x05\x1e\xf0\xca\x3b\xeb\x66\x7f\x1a\x3c\xfe\x0f\x5a\x2b\x72\x9d\x50\xad\xe8\x41\xd2\xa2\xf5\x12\x6f\xe8\x5f\x57\xbd\x2e\xe1\xcb\xf8\x86\xff\xfe\x48\xe3\xf0\xb8\x1b\x19\x97\x4a\xc0\x87\xf3\x6c\xf8\xbd\x4c\xa7\xf3\x92\xcd\x96\x99\x55\xd5\xe3\xf2\x37\xda\x53\x7e\x6f\x30\x7b\xc9\x69\x5c\x7f\x2f\x39\x27\xa4\x81\x94\x45\xdf\x6d\xef\xcb\xf4\xaf\xda\x7b\x8c\x92\x02\x76\x4a\x08\x0e\xeb\x3f\xf3\x53\xe9\xf1\xb0\xa1\xa1\xd1\xee\xf4\xb5\xe6\xad\x5c\x63\xe3\x24\xca\x8a\x8b\xf0\x23\x35\xf2\xb6\x46\x63\x97\xb1\xa1\x3f\x8d\x16\x23\x6a\x8b\xad\x8b\x8d\x32\x89\xc5\x30\xb4\xa1\x25\x19\x61\x5d\x89\xd7\x51\xce\xae\x69\x70\x48\x35\x06\xf0\x25\xd6\x41\xed\x19\xeb\x79\x4b\xdf\x41\xea\x6d\x59\x37\x66\xe6\x30\x2a\x20\x62\xde\x94\xae\x3f\xc6\xd0\xbb\xe2\xf9\xc4\xee\x3e\x08\x1e\xc5\x46\x9d\x4c\x13\xe4\x1c\x5b\xaa\x1f\x48\x09\xf4\x2b\x17\xe9\xb9\x36\x82\xde\x67\x20\x7c\xb1\xd9\x8c\x36\x9b\xaa\x7f\x31\xc8\x46\xd9\x61\x6b\x92\x5e\x18\x81\x5f\x02\x20\x0e\xa2\xa1\x40\xce\x2c\x6d\xd3\x2e\x62\x35\xc6\x1f\xb8\xed\xc4\x6a\x62\xd5\xd6\x7e\x66\x38\x66\x21\x68\x24\x3b\x23\x1c\x1d\x8d\x79\x3a\xb9\x76\xff\x5c\x77\x0c\x83\xf2\xed\x22\xbf\xfb\x50\xad\x56\x54\xb7\x65\x67\x34\xcd\x57\xda\x49\x07\xe1\x6e\x7d\x5f\x44\x67\xcd\x41\x1d\x4b\x83\xdf\xaa\xe8\x97\xf6\x52\xc1\x25\xf9\x46\xdb\x27\x7a\xbd\x60\x5c\x72\xb7\x61\xf8\x0e\x43\xa0\x0f\x7c\x88\xf3\x77\xcd\x5e\xbf\x88\x68\x24\xf2\x81\x25\x07\x6f\xb3\x8d\xd3\x94\x31\x35\x49\xc7\x9f\x8d\x27\x1d\xe9\x1a\x4f\x23\x58\xe9\xe8\x80\x57\x93\x2b\x0d\x63\xc7\x36\x1f\xbf\x54\xcb\x6b\x6a\x54\xf5\xba\xca\x87\x44\x5a\x44\x1a\x95\xe7\xf8\xa3\x40\xbb\x8b\xe5\x09\x87\xcd\x14\x38\x72\x60\x97\x33\xf8\x30\xfe\xda\xe8\x82\xdf\x26\x76\x34\xc6\xf1\x69\x41\x2b\xf0\x72\x4b\x39\x51\x17\x7a\xab\x8c\x47\x5c\x2d\x71\x61\xb4\x85\x95\xa2\xde\x9a\x68\xd8\x7a\x6a\x1b\x51\x40\x44\xdf\x2c\xfb\x63\x0e\x5e\x84\x07\x03\xf6\x88\xd3\x25\x42\x32\x34\x04\xb7\xc4\x9e\x9d\x43\x33\xd0\xa3\xac\x35\x3a\x94\x86\x1f\x1d\xb9\x8a\x20\x52\x18\x40\x3d\x8d\xb0\xd8\x76\xef\xfb\xfa\x24\xf7\x80\xb1\x68\xba\x5f\xfa\x5d\xab\x57\x97\x40\x4f\xf7\x4f\x06\xae\x2b\xfc\x0a\xc7\x17\xfd\x71\x5d\x1e\x13\x36\x88\x36\x93\xf4\xd2\x0c\x8a\x81\x52\x8d\x99\x10\x58\xe8\x11\x78\x35\xa9\xa6\xc3\xa5\x80\x85\x96\xfd\x86\x74\x9a\x44\x31\x83\x2d\x0f\x41\x37\xa0\x8a\xaf\xd8\x9b\x81\x05\x9b\x7e\x02\xa8\x24\xdb\x04\x86\x27\x1e\x29\xef\xf3\x8c\x90\xcc\x73\x65\x84\x81\xb1\xe0\xc7\x94\x86\x6e\x14\xf3\x94\x91\x60\xa1\xa6\x17\xfd\x09\x0f\xc6\x08\xce\x61\xb4\x7a\xf8\x52\x1d\x8e\x1d\x3a\xea\x05\xcf\x09\x88\x44\x1d\xf9\x7c\x4e\x5d\xa5\xc3\xbe\xb9\x22\xce\x31\x9e\xb6\x14\xbe\xa3\x99\x33\x66\x6f\x92\x0c\xd9\xaa\x41\x82\x3f\xb0\x51\xef\x71\x2c\x38\xe4\x51\x97\x76\x44\x51\x6a\xec\x4d\xaf\x31\xe7\x8c\x25\x5a\x42\xde\x8f\x56\xe7\x8b\xf9\xed\x32\x1a\xc4\x45\x3a\x86\x5a\x84\x1b\x86\x23\x43\xee\xf5\x41\x31\xb5\xb8\x09\xcb\x15\x08\xd3\xe0\x3c\x56\xfc\x93\x8c\xb3\x69\x12\xfd\x3c\x3f\x90\x21\xc4\x61\x78\x30\x22\xf2\x02\x93\x92\x9a\xb2\x9a\xa3\x17\xb6\xdb\x6d\x58\xce\x72\x5d\x96\xc4\x5f\x44\x0a\x5d\x9f\x14\x3e\xf8\x79\xce\xa4\x47\xd2\x53\x00\x0c\x7e\x3b\x1f\xb2\x82\x26\xa1\xc9\x56\xad\x72\x78\x08\x2a\x7f\xb3\x49\xbe\xad\x17\xd3\x84\x8e\x7a\x56\x0a\x47\x74\xd2\x46\x6a\xb2\xfc\x89\xce\xbc\x69\xf2\x83\x96\xe1\xde\x97\xe8\x0b\x25\xe8\x5a\x08\x37\x79\xbd\x98\xe3\xe3\x0c\xb0\x8b\x2d\x05\x74\x0c\x2e\xf4\x8e\xf1\x91\x8b\x82\x85\xf8\x44\x8e\xce\xee\xdd\xf1\xed\xed\xed\x31\x0c\x1b\x8f\xe9\x73\x2c\x17\xac\x86\xa7\x60\xa1\x16\x08\x61\xf5\xeb\xc7\x57\xc7\x7f\x8e\x94\x60\xe6\x22\x76\xe5\xe3\x28\xf9\x91\xaa\x04\x4c\x59\x21\xae\x88\xc2\x9c\xcc\x22\xc1\x54\x94\x14\x5c\x46\xea\x0e\xf7\xc1\x97\xae\xa6\xea\xc0\xd2\x63\xea\x62\xc9\xa1\x9c\xbd\x0c\x48\xd1\x39\x2e\xf2\x9b\x5c\xc3\x9f\x6d\x4d\xdd\xe9\xeb\x28\x13\x6f\x77\xe5\x73\xfc\xa5\xae\x94\xc4\x6f\x77\x21\x0b\xf3\x97\x8b\xbc\x12\x99\x44\xa2\xa5\x22\x5d\x77\x93\x04\x2d\x8e\xa9\x8c\x49\x03\xf5\x2a\xdf\xd5\x0b\x17\xed\xe6\x8a\x45\x89\x90\x96\x42\x58\x1e\x70\x4b\xd1\xbd\x72\x8b\x52\xc0\xe0\x5b\x72\x5f\xa7\xa3\xbd\x89\x23\x83\xe9\x28\x75\xc7\x88\x8c\xb2\x19\xa1\x3b\x84\x19\xdd\xda\x79\xb0\xde\xa3\xff\x29\x32\x3a\xa9\xf8\xb0\x0a\xcf\x27\x48\x58\x92\x9f\x11\x52\xc4\x4f\x85\xc9\x0b\x97\xf8\xde\xba\xc8\x11\x25\xf3\x1a\x87\x0d\x25\x7e\x5c\xe4\x33\x6a\xf6\x62\x85\xc4\x37\x3a\xb1\xf6\xd9\x5d\x27\x38\xd9\x6c\x7c\xc7\x1d\x98\x63\xeb\xc0\x2e\x9e\xc4\x91\x43\x54\x5c\xba\x63\x74\x7d\xad\xdd\x65\x81\xe2\xac\x9b\xbc\xd9\x5c\xaa\x99\xbb\xa5\xa2\xa7\x1e\xca\xea\xb4\x73\xf1\x75\x5d\x2d\xee\x11\xb7\x6b\xca\xac\x06\xc0\x95\xd5\x3c\xf0\x54\x56\xd7\x74\xfb\x22\x9f\x4e\x11\x73\x13\x0e\x5d\xb3\xb2\x3a\xb8\xaa\xae\xe6\x0b\x44\x61\xf8\x8a\x4d\x8f\x16\xe7\x7a\xf9\x82\x8a\x65\x80\xca\x05\xb6\xf8\x25\xfe\xac\x88\x26\x5b\xa7\x51\x99\xd3\x2b\xb0\xa9\x53\x37\xe9\x37\x48\xf7\xef\x3f\xf0\x72\xee\xa9\x9d\xd3\xb1\x21\x16\x12\xed\x3d\x4f\x20\x6b\x91\xa3\xec\x22\xfe\x86\x23\xc4\x4a\xaa\x5e\x94\x06\x4d\x9d\x4e\x88\x62\x17\x6b\x93\xa8\x82\x27\x83\x6d\x41\x5b\x5f\x5e\x7b\xb2\x0d\x6c\xba\x0a\xb1\x3c\x2c\xb6\xa8\xd3\xf3\xe9\x34\xac\x56\x13\x2e\x07\x57\x2a\x1b\x69\x05\xf3\x12\x2d\xa1\xce\x5c\xae\x76\x1a\xe2\xab\x96\x83\x2a\xd8\xe8\x5a\xb0\x9a\x4b\x21\x32\x4a\x05\xe5\x33\x57\x88\x6a\x83\xb3\x48\xa4\x95\x90\x5b\x2c\x26\xc3\xea\xad\x26\x2c\x1a\x4d\xb4\xd8\xd8\xd1\x90\x1e\x69\x6e\xde\x75\x83\xd3\xdc\xb7\xec\x91\xff\xe4\xd9\x2a\xb6\x01\x05\xf2\xf8\x2b\x24\x31\x7d\xfc\x55\xd0\xa4\x09\x55\x71\x70\x63\x7c\x58\xf3\xfe\x8d\x1e\xf3\x41\x0d\x35\x97\x38\x9e\x45\xa3\x02\x69\xb3\x59\x9b\x9c\x38\xfd\x3a\x9c\x11\xf6\x8b\xf0\x56\x37\xed\xdc\xa2\x3e\x73\xeb\x12\x7e\x13\x3b\xe7\xc6\x6b\x88\x1a\x15\x7d\x56\x0e\x80\xf4\x46\xfc\x6e\x6f\x84\xa3\xa3\x5b\x38\xd9\xe2\x1c\x5b\x4c\xd3\x16\x64\xdb\x7c\xb9\xd9\xfc\x5e\x22\xa8\xa5\x93\xbd\x3d\x67\x8b\x21\x7b\xfb\xaa\x54\xbc\xcd\xb7\xa3\x6e\x97\xcd\xb8\x59\x85\x53\x74\xae\xaa\xd5\xf9\x7c\x08\xfa\x4d\xf4\x3c\x97\x36\x45\xb2\x50\x4e\x4b\xbf\x18\x51\x81\x4b\x62\x36\x21\xde\xcf\x89\x44\xd1\x40\x5b\x80\xd1\xc2\x24\x06\x79\xf9\xc3\xfc\x8a\x36\x7a\xe6\x6a\x0c\xbb\xc4\xf5\xaf\x71\x4c\x2a\xc8\x9e\xc2\xe2\x15\x60\x58\x4c\x07\x70\x33\x88\x49\xa6\xd9\x2e\x77\x4f\x84\xc8\xe1\x40\x4a\xd1\xf9\x6a\x75\x9d\xb0\x30\x16\x11\x85\xa2\x3f\xf7\xa2\x24\x7a\xfa\xf4\x3b\xa2\x3e\x11\x22\xe3\x7e\x27\xdb\xfd\x4e\x3e\xfe\x3a\x1a\x78\x74\x74\xd9\xf1\x4e\x42\x27\x06\xb7\xcc\x85\xc9\xa7\x7b\x24\xe5\xdd\x39\x37\x1d\x84\x4e\x86\x7d\x15\x26\x08\xbc\x60\xd4\x5b\xec\x97\xea\x92\xc8\xc5\x9b\x58\xc9\x4a\x37\x41\x13\x4f\xcf\x0d\xfa\x3c\xbe\x2a\x27\xb1\x3a\x97\x48\xb0\x00\x9b\xc7\x89\xdf\x6e\x33\xa5\xcf\x78\xf1\x46\xf6\x17\xf1\x8e\x08\xe7\x1c\x37\xa8\xf2\x13\xa2\x06\x40\x13\x9b\x2f\x35\x3d\x9e\x1e\xbe\xd4\x27\xbf\x64\x85\x17\x07\x8f\x42\x90\x8b\x57\x99\x6e\x9f\x7e\xde\x4e\x5b\xb7\xd6\x4d\x31\x8b\x8e\xa8\xcf\xb2\x28\x6e\xeb\xe6\x6a\x85\xbe\xdc\xf1\x10\x02\x69\x3f\xd5\x4e\x82\x32\x63\xbf\x77\xaf\x3b\xc1\xd2\xf7\x34\x55\x1f\x9d\x7c\x49\xa3\xf6\x0d\x44\xce\x49\xd5\x6e\xfc\x4c\x64\x73\xb0\x5b\xc3\xc8\x90\x3e\x0c\x0c\xec\xd3\x42\xec\x5a\x79\xd3\xa9\x6f\x54\xad\xe8\xcd\xe8\xd8\xe4\x39\xfe\x30\xa1\xad\x3a\x52\x3b\x6f\xb2\x28\x9a\x08\xa9\x87\x0a\xf9\x99\x56\x24\x02\x97\x95\xe7\x91\xcb\x4d\xb5\x6a\xb9\x89\xe3\xfa\x11\x77\x1e\xe1\xc4\x4e\x93\x58\x6f\x5e\x5a\xdc\xfc\xa5\x80\x7d\x52\x41\x29\xb1\x6a\x7a\xe1\x39\x13\x58\x91\xbf\x66\x99\x8f\xb9\xec\x68\xd2\xab\x1f\x3e\x19\x64\x7b\x9f\xb4\x35\x05\x1f\x26\x67\x91\x22\x6a\xf5\xc7\xb2\x1d\x9d\x1e\x7c\x4d\x7b\x9d\x1e\x07\xd0\x8d\x13\x57\x0c\xfb\xe7\x3b\x8e\x96\x3a\x42\x8e\x95\xb8\xa1\xbe\xf0\x93\xd1\x8f\x99\xa1\x05\x5b\xd4\x11\x28\xd5\x0f\x44\xe9\x4a\x64\x79\x7b\x2b\x5a\xa1\xa9\xba\x51\x97\x71\x2a\x9d\x28\x6b\xc8\x2e\x22\xbd\xd7\xc6\xa7\x74\x12\xf3\x65\x64\x2b\xf2\x4d\x6f\xa7\xc9\x89\x26\xca\x4f\x94\x75\xb8\x3f\xd9\xc6\x37\xf4\x7d\x62\xc9\x74\x25\x26\xe9\x5b\x10\x31\x7a\xa5\xd2\xce\xde\x71\x47\x79\x7a\x82\x65\x39\xab\x2d\x40\x86\x84\xed\x53\xcd\x06\x98\x9a\x4c\x2f\xa3\xd7\x57\xe2\x0b\xf6\xac\xc7\xac\x4b\x73\xb4\x32\x53\xeb\x48\x67\x46\x94\x4c\xfb\x66\x2c\x52\xaa\x15\x62\xb9\x51\xff\x11\xf5\xbf\x50\x77\x86\xf7\xb8\x15\x3a\x81\x8f\xb4\x98\xd9\x95\x83\xdb\xd3\xbb\xd6\xf1\x89\x42\x68\x3e\x3e\xc8\xf8\x0e\xbc\x87\xa5\xcf\x22\x2f\x2c\xe9\x5d\xc8\xba\x5e\xa8\x85\x5a\xaa\xb5\xba\x55\x77\x69\x71\x0a\x3b\x18\x50\x51\xab\xf4\x09\x02\xcb\x04\xbe\x6d\x63\xb0\x81\xda\x8c\x67\xc4\x81\x72\x88\xe0\xf1\x3b\x29\x7f\xd6\xcb\x9e\x12\xd5\x73\x41\x57\xe9\x93\x1e\xb5\xff\xbb\x5e\xef\x19\x1d\x56\xdf\xf5\x9e\x42\x46\xcf\x66\xa2\xeb\xf4\x1d\xc2\x68\xdc\x70\x74\xef\x75\xfa\x1e\x37\x6b\xba\xbd\x88\xd5\x45\xd6\xaa\xad\xf0\x5b\x3a\xf9\x1a\x24\x0c\x3f\xd1\xe2\xb5\x6b\x9a\xb6\xc0\xdb\xa6\xcd\x20\xbd\xa5\x07\xcd\xef\x63\xed\xda\xd7\xf4\x42\xa6\xec\xb4\x3d\x4b\x45\xa9\x69\x10\x4c\xe2\xa4\x90\xbd\x32\xbb\x43\x30\x2e\x83\x4b\x90\xe8\xf6\x48\xea\xea\xca\x54\x24\x69\xdd\xa5\x6b\xa6\x1c\x2a\x22\x12\xd7\xb2\x3f\x2e\xe9\x82\x27\x1f\x75\xcb\xe1\x12\x22\xb4\x65\x7a\xa7\x70\x84\x1f\xde\x41\x73\x48\x65\x68\xbe\x91\xba\x8a\xdd\xaa\x7b\x38\x8c\x0c\x05\x42\xbd\x66\x2e\xd9\x68\x0c\xba\x9a\x3b\x9c\xf9\xd4\x5b\xf3\x20\xa4\xc9\x54\xf5\x69\x9a\xa8\x9b\x41\x9c\xcc\xfd\xa0\x26\x53\x4c\xd1\x3b\xb5\x1c\xb8\x42\x41\x2d\xb5\x10\xc3\xc9\x0c\x67\x30\xb9\x2f\x32\x99\xde\x9a\x17\x4d\xf8\xee\xa5\xd4\x11\xb3\x9d\xbe\xbc\x48\x50\xdc\x35\x87\x48\xf3\x3e\x42\x69\x40\xba\xae\xad\x93\x17\x7a\xc9\xd9\xb5\x72\x7c\x6c\x0e\x37\x96\x59\x37\x1d\x6d\x73\xf6\x31\xb1\xd1\x85\x99\x6a\x65\xc5\xc0\x5e\x6b\xd3\xb1\xb1\x1d\x55\x11\xf3\x52\x31\xbf\xf3\x81\x19\xc1\x7d\xbe\x15\xf2\x8e\xee\x83\xc2\xa1\x66\x07\x96\x3b\xb0\xc6\x52\x00\x5b\x6b\xb0\x47\xac\x6b\xf4\x02\x5f\xeb\x9a\x2c\x96\x0f\x54\x44\xc0\x80\x0f\xbc\x2a\x2d\xf7\x23\xfc\x4d\x8b\x79\xb9\x5c\x18\xf6\x42\x99\xed\x37\xa9\x44\x14\x50\x2a\xb3\x95\x0d\x8d\xa1\x9c\x01\xca\x6e\xf2\xe3\x68\x28\x53\x84\x00\xb6\x5c\xd3\x56\xc3\xe6\x9f\x58\x41\x00\x6d\x1d\x5a\x0a\x02\x7e\x32\xae\x85\xc8\xb8\x5d\xe4\xd7\x00\xb5\xf6\x3f\xfa\xaf\xda\x76\xe8\xb2\x42\xbb\x0e\x63\xc8\xa1\xdd\x03\xad\x01\x5b\x6b\x0f\x12\x7b\x0c\xd4\xf7\x5e\xec\x20\xaf\x4f\x4d\xb6\xd0\x56\xcb\x87\xee\xb6\x85\xab\x82\x9d\xf8\xea\xee\xba\xac\xf8\xd6\x2c\x58\xee\xa1\xbb\x1b\x27\x01\x97\xe2\xfc\x05\xf2\x20\xdd\xa1\xf5\x18\x58\x3d\x1d\xa1\x38\x60\x27\xd0\x01\x6f\x66\xb3\xea\x0f\x7c\x52\xf6\x9a\x52\xd4\xfa\x92\x8b\xda\xe9\xcd\x7a\xe4\xe5\xc2\x9a\x47\x30\xde\x94\x16\x90\xc0\x45\xdd\xe8\x4e\x4b\x37\x32\x71\x62\x10\xec\x5a\x12\x18\x02\x4f\x1a\xed\x0b\x83\x2a\x9e\xee\x1f\xff\x72\x77\xfc\x8b\xd0\x43\x33\x4e\xe4\x53\xeb\x59\xf8\xb1\xb0\x67\x64\x74\x11\x6d\x65\xc7\x6d\xc7\x1a\x9e\x8b\x9d\x84\x20\x30\x02\xbf\xdb\x98\x14\x59\x38\x76\x6d\xb7\x61\xd1\xfa\xe9\xbb\x12\xbd\xc5\xd8\xa2\x5e\x2f\x74\xbc\x97\xa5\x89\x7d\xd7\x68\x92\xe8\x81\x36\xfc\x25\xed\x41\xb6\xea\x83\xf8\x50\x12\xed\xf6\x2e\x50\x7e\x80\x88\xd9\x8a\xbd\x28\x8d\x06\x39\xc3\xc2\xaf\x38\x8c\xa8\x06\xc8\x88\x6d\xbd\x8a\x0c\x69\x36\xad\x1a\xea\x78\xd8\xd8\x18\x8c\x29\x4b\x5d\xfe\x5e\xa6\xdd\x7f\x7b\xd2\xeb\x8e\xd5\x2f\x50\x7f\xf7\xcf\x06\x8f\xba\xea\x03\xbb\xf4\x66\x67\x33\x4a\xfe\xa8\x75\x76\x62\x10\x61\x0c\x92\x27\x57\x50\xf8\xd1\x21\x54\xad\x58\xd3\xc7\xa6\xc9\xbf\x3e\x68\xca\x7c\x59\xdd\x8f\xab\x59\xdc\x9d\x38\x82\xe4\x3f\xeb\xc2\xf4\x9d\x40\xf5\x7a\x2f\x0e\x3c\xf4\xa1\x44\xdd\x6c\x7e\x31\x06\xa9\x71\x46\x33\x14\xa8\x05\x28\xad\x1d\xf5\x23\x22\x65\xeb\x92\xa7\x2a\x2b\x40\xb7\xb6\xa3\x41\xa4\x2a\x31\x2f\x88\xad\xe8\x9a\x0a\x33\x2f\x1c\x32\x02\x03\xbd\x83\x6f\x0f\x79\xab\xaf\x45\x72\x29\x62\xfb\x99\x8a\x8b\x03\xe6\x9a\x94\xa8\xb9\xc1\xb4\xd1\xfd\x08\x21\x24\xaa\xda\xa3\xda\xe2\x29\xe2\xac\x68\x19\x57\xd8\x02\x56\x3f\x74\x1a\xf4\x8d\x9b\xe8\x20\x15\x31\xeb\xaf\xbf\xbc\xc1\xb1\x4a\xd3\x66\x86\xc6\xb7\x23\x62\x92\x1a\x9e\x14\x31\xcb\x1c\xac\x06\xa7\xd0\x16\xcc\xbe\x88\x0f\xec\x65\xa0\xa8\xf2\xd9\x57\x2f\x58\x21\x9c\xcc\x72\x2d\x50\xd3\x71\xa7\xde\x43\x7e\x6b\x43\x14\x99\x61\xca\x7d\x8b\x53\x59\x84\xec\x0a\xa1\x9c\x4f\xb2\xed\x78\x2f\x70\x22\xf5\x68\xa9\x38\x40\x22\x06\xd7\xc5\xb0\xba\x98\x4f\x66\x2d\x62\x07\x9d\x54\xe3\xef\x74\xc6\xb7\xa3\xfa\xc9\x44\xdb\xfb\x84\xed\x8d\x1b\x76\x0c\xc3\xa2\x4b\x60\x75\x93\x51\xda\x85\x75\x14\x26\xed\xdb\x72\x1a\x8f\x0a\xed\x9c\x27\x5b\x4d\xa5\x55\xf5\xce\xa6\x02\x56\x7c\xce\xa1\x55\x5b\xc8\xd1\x2e\xa3\xa3\x48\x35\x9e\x3c\x3c\xf7\x82\x2d\x74\xc6\x46\x65\x87\x66\x07\x9b\x2c\x5b\x51\xe2\x3c\x79\x8f\x8e\x7e\xd5\xcb\x20\xf0\x20\x07\x4e\xf5\x47\xbb\x3e\xac\x91\x9a\xf6\xc5\xdc\x1c\xfe\x66\x1e\xc5\x8c\xbd\xe9\xb5\xcd\x8f\x2b\xe3\x7b\xcb\x87\x71\xdb\x4b\x11\x29\xba\x19\x52\xc6\x99\x38\xc5\x97\x0d\x4e\xf1\xdf\xd0\x06\x3a\x4d\x78\x26\x88\x57\x49\x6e\x47\xf4\x03\x8d\x28\x8c\x0c\x98\xf4\x4a\x1a\xb2\x96\xcd\x59\x99\x82\xd3\x9b\x75\x30\x87\xef\xce\x17\xa9\xd5\xaa\xe6\x9d\xc0\x6e\x23\xdb\x19\xde\x43\xee\x19\xad\x20\x39\x3a\xa2\xed\x8b\xca\xdd\x80\xe4\xdb\x80\x53\xdd\x60\x23\x13\x39\xc7\x46\x3b\x2a\x63\xa7\xf3\xba\x7c\x25\xec\xfc\x3f\x4a\xc4\x73\x79\x44\x7f\xb7\xc9\x3f\x4a\xde\x59\x7f\x83\x91\xdd\x27\xb6\x46\xf8\x5c\xd6\x55\xc2\x54\x4b\xea\xd4\x1c\x66\xf9\xb4\x70\x5e\x8a\x20\x28\xb8\x85\x38\x5a\xac\xdd\x22\x7f\x55\x19\x6b\xbe\x1c\x4b\xe7\x53\x19\x7f\x2a\xfb\xf9\x40\x2f\x73\x46\xcb\x60\x41\xcc\x7c\xb1\x4c\x0f\x0f\x3f\x03\xf6\xf0\x96\x0e\xbb\x17\x8b\x8a\xf6\xfc\x15\x4d\xf4\x25\xdc\x0b\x3e\x97\xa8\xd1\x25\xd7\x88\xb3\xa9\xcf\xa5\xd9\x0b\x2c\xe3\xd8\xaa\xd1\x79\x87\xb9\x2f\xa2\x83\xb8\x10\x5f\x09\xc3\xfa\x7f\x03\xcb\xea\xc1\xaa\x78\x4a\x52\x1a\x0a\x6e\x33\x82\x8f\xb7\x7f\x2b\xd9\xf3\x92\xc1\xf9\x5b\xe2\x27\xaf\x72\x16\x48\xe5\xc2\x4c\xe3\x8e\x56\x26\x4f\x03\x98\xe8\x2f\x97\xb7\xf3\xc5\x10\xfe\x90\x54\x88\x28\x69\x9c\x0e\x31\x48\x04\x3f\xe7\x25\xd0\xed\xa9\x53\x5b\x1f\x1d\x8d\x3a\x75\x89\x73\x53\x5a\xcb\xbd\x82\x6f\x06\xed\x2e\xfb\xd1\xa7\x63\x2d\xd7\xa8\x86\xc7\xa0\x25\x22\x86\xfa\x6a\x4a\x4f\xa3\x4f\x6f\x7f\x7a\xbd\x5a\x5d\xeb\x07\x3a\x76\x61\x25\x1a\x6c\xe7\x2d\xc2\xc2\xa7\xd1\xae\xc4\x84\xce\x2a\x40\x7a\xc2\x52\x6b\x24\xf2\x80\x3c\x90\x34\x89\xa6\x56\x42\x82\x71\x84\x2b\xd7\xf5\x1a\xbf\x8d\x75\x29\x0c\xd2\x06\x2e\x64\xb3\x01\xfb\x3a\xf2\x58\x77\x56\xe8\x6a\x49\x1e\xcd\xa5\x31\xed\xc1\x96\xd3\xef\xcc\x67\x9c\x91\xf9\x5a\x31\x8f\x64\x63\xb9\xf9\x35\x95\xfe\xf4\x30\x2c\x08\xf5\x37\xf2\x18\x56\xd5\xb3\x3e\xfc\x9c\xf2\x08\xe7\xb9\x1b\x06\x62\xd4\xf1\xd5\x69\x54\xbd\x0b\x8e\xc8\x90\x86\xe9\x22\x11\x99\xd8\x72\x90\xa6\x05\x22\x97\x34\x31\xd3\x28\xda\x9e\xd3\x96\x96\x9b\x45\xcc\xd6\x00\x6e\xc0\xb2\x93\x27\x4f\xbe\x4b\x39\x4c\x7d\xeb\x3c\x25\x2e\x3f\x4e\xce\x53\xf9\x50\xf6\xa4\xd7\x4b\x9e\xf6\x9e\x6e\x2f\x10\x81\x4d\x94\x4e\xa3\x4e\xa3\x92\x84\x8f\x0a\x3d\x37\xb3\x7a\x17\x66\x7e\xa4\xa0\x38\x69\xec\x36\xee\xda\xb4\x48\x0a\x84\x5c\xaa\xe9\x12\x88\x10\x20\x36\xc5\x5f\xc3\xdb\x10\x4d\xa6\xd4\x0e\x55\x1e\x90\x4c\xde\x09\x27\x96\xef\x4e\x65\x5f\x7c\xd4\xf8\xe2\x43\x96\x6c\xaf\x3f\x7e\x7c\x1f\xc5\x7e\x61\x81\x0e\xce\x2a\x74\x85\x85\xd4\x9a\x5b\xa7\x76\x55\x07\x81\x66\x76\x4f\x7a\x55\x5e\x35\xa6\xdf\x1d\xbb\x27\x81\x02\x57\x7f\x0d\x86\x60\x28\x73\x83\x6c\xb1\x24\x76\x6b\x0a\x57\xd6\x9c\xea\x22\x9a\x58\xab\x2b\x2d\x6b\x7f\x89\x53\x0d\xe1\xb1\xb6\xee\x08\xb1\x8a\xce\x96\x65\x91\x03\x76\xc7\x90\x52\xb9\x08\xba\xd9\xf1\x59\x44\xde\x87\x27\xb5\x6d\x82\x9f\x89\xd3\x0c\x33\xdf\xb9\xfe\x6c\x2a\x66\x46\xf5\xad\xb6\xf1\x7b\x6c\xdf\xe1\x95\xe9\xe2\xea\xdd\xb3\x14\x15\x6c\x4d\x84\x0b\x0e\xa4\xb4\xd9\xdc\xd7\xad\x08\x9b\x37\x65\x96\x53\x34\x04\xa3\x32\x12\x10\x62\x8c\xc5\x8e\x91\x41\xd4\x25\xf5\x85\xe8\xf5\xd9\x2f\xca\xe8\xf8\x6b\xcf\x38\x8e\xd5\x02\x8a\x40\x6c\xe3\x05\xad\x01\x1c\x5d\x69\xd1\xb4\x18\x42\x4b\x68\xd0\xdf\x87\x85\xb7\x9e\x36\x9b\x2e\xde\x25\x4a\xc5\x88\x6c\x75\x68\xa7\x22\xd8\xb7\xb8\x36\x0f\x7d\x46\x8c\x8f\xf7\x3b\x6e\xf9\xb8\xda\x70\x33\x90\x17\xa8\x36\x55\x0b\x31\xc7\xac\x49\x06\xd6\x7e\x19\x4a\x11\x68\x14\x3c\x96\x7f\xdf\x92\xd6\xb5\xdb\x59\xd9\x18\xc7\x2f\x25\x38\x02\xaa\x7a\xb7\x95\xc6\x67\x59\x2b\x4b\x8f\x36\x8f\xe2\xcd\x59\x76\x96\x75\x4f\x83\x45\x07\x99\xd6\x75\x12\x95\x5a\x4f\x2d\x66\x07\xd7\x46\x6d\xbd\x8b\xae\xf4\xa5\x94\xd0\x6e\x2c\x61\xe3\x60\xe0\xf3\x76\xf4\x45\x34\x29\x3e\x69\x09\x3d\x2c\xc6\xb8\x71\x01\xe0\x1b\x6c\x99\x70\x1d\x05\xc1\xd1\xea\x40\x91\x45\x87\x33\xd9\xc8\x90\x43\x33\x52\x34\x0b\xe2\x2c\xa2\xbf\x8c\x4d\x1a\x6e\xfc\x85\xd6\x9a\x1c\xb6\x02\xad\x88\xb8\xed\x58\x7f\x99\x3f\xb4\x37\x01\xf9\xeb\x3e\xc8\x4a\x28\xa2\x77\xf0\xeb\x88\x70\x78\x25\x49\x33\xc0\x03\x85\xba\x0d\xf8\xea\x74\x82\xce\xac\xf1\x63\xe1\x43\x78\xe1\x07\x09\x2d\x88\x48\x82\x14\x75\x9e\x15\xb0\x65\xc4\x1f\x4b\xb6\xe6\x43\x68\xbb\x60\xf3\x9c\xd4\x7a\xab\xa8\xe9\xd8\x4c\xaf\x19\x05\x98\xce\x2e\x2c\x1e\x16\x98\x67\x14\xa6\xd7\xab\x58\x8f\x0c\xd2\x5d\xbe\x65\xec\xac\x82\xe1\xa5\x71\x9b\x2f\x0f\x66\xf3\xd5\x01\xa6\x11\x4b\xce\xc7\xd4\x05\x5b\x15\x76\x49\x2a\x02\x54\x8e\x48\x5f\x41\x43\x5e\x05\x25\x8f\x9d\xb1\xfd\x56\x0d\x1b\xe2\xbc\xcb\x0b\xcc\x12\x73\xf3\xc2\xce\x2d\x6b\x9d\xf5\x45\xc7\x54\x86\x95\xd9\x58\xa2\x9a\xd8\xbe\x47\x7c\xfc\x51\x6b\xcc\x92\xba\x71\x3a\x72\x00\x2f\x76\x9f\xf2\x91\x01\xd9\x46\x86\x03\xe4\xd5\x85\xc4\x4c\xb8\x36\xd8\x89\xe7\x81\x9d\x78\xa3\x13\x94\x36\xc4\xc5\xde\xce\x66\x2a\xf7\x62\x8e\x0b\xa1\x3e\xd4\xd8\x0c\x9c\x87\xc0\xcd\xfd\x81\xc3\xdc\xee\x17\xb5\x6d\x15\xc8\xdb\xf1\x20\x61\x60\x80\x62\x4d\x7b\xc5\xab\x45\x3e\xe6\x27\xb4\xfc\x98\xdd\x95\xb8\xa5\xc2\xe3\x53\x27\x50\x6f\xe8\x8d\x89\x41\xfe\xaf\xaa\xc5\xb8\x6a\xf5\x11\x27\xcf\x93\x55\x69\xd9\x4d\x31\xe4\xe0\x9f\x6c\x67\x7e\x6a\xaf\x9a\xfa\xa0\x29\x8e\x6e\x31\xb4\x61\x9b\x86\xcd\xe1\x3f\x4f\x7d\x37\x6a\x7e\x06\x33\x52\xcf\xa1\xcd\x2d\xb3\x67\x29\xbb\x25\x1a\x8b\x81\x5c\x9b\x3e\x9e\x2b\x13\x9a\x9b\xe3\x01\x9a\xe4\x1e\xe3\xc3\xd6\x85\x1f\xba\xc3\xb5\x74\x3c\x29\x1a\xc2\x68\x0b\xca\x6b\xf4\xfe\xdd\x87\x8f\x98\xc2\xd6\x69\xc6\x70\x2f\x81\xdc\x7b\xe4\xc9\xbc\xc5\xba\x4c\xdb\xd6\xc5\x35\x48\x0a\x3a\x6c\x2b\x37\xb5\xa9\x58\xe4\x6e\x0d\x33\x3a\x5f\xff\x32\x9c\xdc\x3c\x8b\xac\x24\xd7\x9b\x6a\xe0\x9e\xd9\xb5\x1a\x5e\x7a\x10\x5b\x5a\x93\x0e\xa0\xcd\x87\x0c\xf5\x58\xc4\x23\x25\x22\x2a\x7b\xc6\x99\x20\x65\xe1\x85\x0f\x58\x0b\x6d\xd3\x62\x75\x0f\x4e\xcf\xaf\x9c\x62\x44\xd5\xb4\x2a\xbe\x7e\x26\xd0\xdc\x28\xa7\xa6\xdc\x75\xb6\xae\xbb\x23\x35\xb9\xe0\x34\x89\x41\x75\x84\xd4\x61\xb3\xda\x61\x4c\xfb\x5d\xcb\xc6\x41\xf5\x05\xd5\x36\x72\x00\x76\x60\x41\x80\xd0\x03\xa7\x0d\xbf\x10\xf7\xc2\xd0\x2e\x3b\x44\x8c\xa5\x66\x87\xc3\xe0\x7b\x93\xe5\x6f\xd4\xf9\xf3\x5b\x08\x00\xf3\xe4\xdf\x83\x10\x3e\x99\x8b\x33\x32\xa9\x6e\xc1\x11\xc8\xb1\x2f\x6f\x24\x87\x27\x44\xd6\x8a\x98\x96\x23\x49\x88\x3c\xf6\xa1\x20\x02\x9e\x49\x9a\x81\x8e\x9f\x2f\x59\x52\xc6\x70\x3d\x08\xc5\xa5\x66\x30\xde\x8a\x40\x80\x4c\x4a\xd6\x1f\x32\x11\x28\xb2\x5c\x93\x3b\x8d\x16\xd5\x34\x07\xfd\x0d\x3b\xd7\x74\xaa\x6b\xd1\x92\x20\xdf\xba\x68\x56\x81\xa9\x89\x4b\x98\x56\x23\x10\x66\x17\x29\x1d\x8a\xc5\x72\x3e\x5d\xaf\x58\x64\x7c\x89\x48\xa6\x93\x3b\xda\xcd\x71\xc3\xf1\x9c\x4d\x6c\x30\x89\x76\xa1\xfa\x23\x35\x19\xc4\xcf\x8e\x4f\xa0\x60\x1d\xd2\xe7\x4c\x3d\x98\x0f\xa7\xa3\x13\x9c\x5c\x0a\x09\xe3\x68\x05\x68\xfc\x10\x2b\x19\x10\x1a\x01\x7c\xf2\x04\x49\x3b\xeb\x96\x05\x8b\x85\x81\x26\x28\x79\x69\xeb\x60\x7b\x1d\x8e\xc6\x0c\xad\xe0\xfc\x5a\xee\x8e\xcf\xf1\xb7\x3d\x76\x59\xf0\x6d\xce\x83\x0b\x7d\x4f\xb9\xf0\x83\x43\x2f\x82\x4b\xe0\x98\x83\x0e\xd2\xf9\xcb\x37\xe6\x53\xb3\x38\x99\x72\x17\xcd\x24\x92\x88\x27\x11\x9c\xd7\x47\x34\x7e\x28\xd6\xa4\xa3\xec\xd9\x79\xac\x09\x07\x94\x17\x8e\x94\xda\xb1\x33\xc6\x44\x9f\x2e\x4c\x40\x34\x89\x12\xf8\x0d\x21\x4c\x7b\x0a\x2d\x48\x7a\x5b\x17\xef\x52\x23\xc0\x85\x4a\x2c\x16\x84\xb8\xe8\x8c\xa3\xfa\xfc\x07\xfe\x2e\x91\x48\x44\xff\x2f\x59\xf4\x9d\xb5\x8c\x48\x1b\x9c\xea\xf7\xc0\x09\xa7\x2e\x79\x31\x9d\x50\xde\x5f\x68\xaf\x24\xda\xe2\x6f\xbc\x13\xef\x79\x0e\x63\xab\x32\x1d\x32\x40\x0c\x57\x94\x67\x41\x9b\xc3\xfd\x8d\xab\xcf\xd2\x30\x8e\x47\x6c\x90\x05\xe3\x63\x90\x69\x5c\x00\xdd\xf1\x0c\xe0\xa6\xc9\xb4\x31\x6f\x7e\xaa\xbf\x09\xf0\x41\xef\x55\xdc\xe2\xdd\x6d\x9c\x0c\xb7\xca\xcc\xc3\x9a\x5f\x6f\xa0\xf9\xe3\x55\x58\xef\xcc\xa1\x0d\x1e\xaa\xfd\x3f\xec\x02\x90\xd5\x32\xf4\x57\x66\x56\x48\xc0\xb2\xa6\x5e\x48\x5a\x5a\xe2\x2a\x83\xfa\x5e\xeb\x94\x54\xe1\xa7\xf2\x11\xec\x82\x19\x61\x0c\xe5\x24\x61\x20\x65\x0b\xd9\xcd\x7d\xca\xdd\x68\xd6\x2c\xe7\x14\x50\x62\xea\x33\x41\x25\xe6\xd0\xd9\xa5\x74\x5a\x43\x3e\x74\x90\xcb\xa8\x07\x47\xd6\x0c\x97\x7d\x6c\x1b\x28\x78\x74\x1f\x71\x1e\x1c\x9a\xc1\xd0\xeb\x46\x8a\xaf\x67\x45\xd1\x91\x66\x3f\x94\xdf\xde\x7f\x4a\xdc\xbd\xd3\x5b\x9b\x4d\x39\x34\xaa\x52\x56\x0b\xf8\x61\x9f\xa4\x9b\xd8\x86\xce\x6c\x88\x0d\x7b\x27\xeb\x4e\xfd\x32\xad\xf0\x1c\x85\x6f\xc3\x18\xe3\x76\x5a\xc1\xea\xde\xce\xb8\x48\xd9\x99\x2a\xe9\x7a\x0e\xef\xa0\x40\x8b\x54\xbb\xfb\xd9\x30\x93\xf1\xe9\x4e\x58\xf0\xe1\x03\xc0\xca\x43\x23\x51\x1b\xa5\x7c\x12\x9d\xd6\x37\x8f\x2a\x1b\x65\x6c\x65\x3a\xca\x10\x37\x3e\x19\xed\x3d\xd3\x00\x57\x05\x47\x2a\x26\x61\x5b\x94\xdd\x2e\xb6\x56\x49\x44\xc7\x28\xf6\x96\x10\xcd\xd4\x4a\x95\x59\x95\x78\xe9\x1f\xc1\xde\xc5\x5c\x04\x50\x9b\x38\x1e\x7b\x7d\x6f\xe3\xfd\xb5\x1e\x53\x1e\x14\x04\x1f\x26\x0f\x23\xd9\x33\xb6\xf7\x35\x2d\xac\xe9\x7b\x3d\x52\xaa\xd1\x79\xb9\x04\xc9\x26\xb8\xfc\xb1\x7a\x5d\xd8\x80\x6d\x1c\x99\xd2\x1d\x35\x54\x64\x1b\x28\x96\x89\x8b\xbd\x14\x7b\xe3\x2a\x9a\xd2\xc4\x82\xed\xf3\x22\x48\x74\x40\xa8\xdd\x48\xee\xf2\x92\xc5\xfe\xe6\xd8\xd8\x51\x3b\x37\xe2\xa2\x04\x78\xe9\x49\x34\x5f\xaf\x38\xd9\x7b\x9f\x79\x57\x1e\xf2\xa1\x3f\xe4\x6e\x58\xeb\x5d\x08\x16\xc0\x73\xf8\xb7\xb4\x33\x23\x70\x94\xec\x4e\x04\x17\x92\xcd\x46\x30\x4d\x32\x03\x14\x99\xe8\x15\xed\xc8\xe3\xfa\x6c\x0a\x54\x9e\xbb\x14\x0d\x14\x81\xfb\x27\x4f\x24\x1b\x2a\x35\x6e\xc0\x64\x4f\xe1\xc8\x1e\xe6\x68\xeb\x07\x88\x05\xcf\x2a\x3a\xd0\x87\x33\xe7\x48\x93\x08\xef\xab\x2a\xb8\x33\x19\x64\x41\x9a\x0c\xe1\x9d\xfb\x78\x6c\x46\x93\xdd\x7f\x65\x71\xa3\x61\x63\x98\xdb\x0b\x6c\x9b\x84\x11\x01\x2c\x48\xa1\x46\xd9\x30\x31\x82\x65\x3b\x39\x8d\x1f\x3b\x5c\xfc\x1b\x78\x58\x2f\x40\x81\x3e\xe0\xf3\xd9\xf0\x43\x35\x1d\x09\xdf\x43\x73\xe0\x7b\x30\x92\x91\x79\xd3\x43\xb6\xa9\x88\x34\xa7\xd3\x56\x7e\x3b\xf9\xd5\xd0\x5c\xb7\x22\x51\x64\x02\x17\x44\x35\xe8\x0b\xf5\x51\x5e\x81\x28\xbd\xf8\x3b\x72\xaa\x11\xae\x1f\x9d\x7a\xe1\xed\x5e\xcc\x67\x23\xe2\x64\x56\x69\x13\x9d\xdb\x79\x84\xcd\x8e\xa9\xbf\x47\xe9\x68\x28\xf0\x24\xba\x2c\xfb\x44\xdf\x56\xf4\xf8\x6a\xab\x0c\x7b\x93\xca\xe9\x6d\x1f\xa3\x84\x2b\xe4\x88\x4f\xff\xff\xff\xfb\xef\x00\x00\x00\xff\xff\x01\x13\xbf\x27\xbf\x76\x01\x00") +var _webUiStaticVendorJsJqueryMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\xbd\x7b\x93\xdb\x36\xb6\x20\xfe\xff\x56\xed\x77\x68\x71\x7c\x69\xc2\x82\xd4\x92\x93\xcc\xde\xa1\x8c\x66\x39\x76\x32\xc9\xe4\x39\x63\xcf\x24\x73\x29\x3a\x05\x90\xe0\xa3\x45\x89\x6a\x8a\xea\x47\x44\xce\x67\xff\x15\x0e\x00\x12\xa4\x28\x27\xb3\x77\x7f\x55\x5b\x5b\x2e\xb7\x48\x10\x6f\x1c\x1c\x9c\x73\x70\x1e\xd7\x2f\x26\x57\xb7\x7f\x3d\xf2\xf2\xe9\xea\x7e\x39\x5f\x2e\xe7\x2f\xaf\xea\x2b\x27\x44\x57\x2f\x17\x8b\xcf\xf0\xd5\xcb\xc5\xf2\x53\xfd\xfd\xcb\xe2\xb8\x8b\x68\x95\x15\x3b\x7c\xf5\xf5\x2e\x9c\x5f\xd5\x57\xb7\x77\xe2\xcb\xbc\x28\x93\xeb\x3c\x0b\xf9\xee\xc0\xaf\x5e\x5c\xff\xcf\xff\x31\x89\x8f\xbb\x50\x64\x74\x28\x66\xe8\x64\x15\xec\x96\x87\x95\x45\x48\xf5\xb4\xe7\x45\x7c\xb5\x2d\xa2\x63\xce\x6d\xfb\xc2\x87\x39\x7f\xdc\x17\x65\x75\xf0\xfa\xaf\x84\xce\xa3\x22\x3c\x6e\xf9\xae\xf2\x98\x43\xf1\x64\x81\xdc\xae\x21\x74\xca\x62\x67\xd2\x65\x41\x55\x5a\x16\x0f\x57\x3b\xfe\x70\xf5\x45\x59\x16\xa5\x63\xa9\x61\x94\xfc\xee\x98\x95\xfc\x70\x45\xaf\x1e\xb2\x5d\x54\x3c\x5c\x3d\x64\x55\x7a\x45\xaf\x74\x49\x0b\xad\x4a\x5e\x1d\xcb\xdd\x15\x73\x28\x6a\x5c\xf8\xeb\x58\xc7\x5d\xc4\xe3\x6c\xc7\x23\x6b\xa2\xbb\x2b\xcb\x7b\xf2\xc7\xad\xd2\xec\x80\xfb\x23\xbf\xa7\xe5\x55\x48\xfc\x00\x47\x24\x9c\x1f\xc4\x14\x61\x4e\xc2\x79\x58\xec\x42\x5a\xe1\x98\x84\xf3\xfd\xf1\x90\xe2\x84\x84\xf3\x6c\x17\xf1\xc7\x1f\x62\x9c\x92\x53\x83\x33\x92\xce\xab\xe2\x5d\x55\x66\xbb\x04\xdf\x92\x74\x9e\xd2\xc3\x0f\x0f\xbb\x1f\xcb\x62\xcf\xcb\xea\x09\x6f\x44\xa6\x9c\x58\x72\xc5\x2c\xbc\x25\xfd\x76\x55\xff\xc5\xe0\xb7\xf3\x78\x37\xcf\x76\x59\x05\x5f\x1a\xbc\x23\xd7\x1f\xfc\xf5\x61\x7d\xfc\xf2\x8b\x2f\xbf\x5c\x3f\xbe\x5e\x04\xd3\x7a\xf0\xfe\xec\x3a\xc1\x05\xb9\xfe\x30\xdb\x1e\x66\xd7\x78\x4f\xae\x67\x8e\xbf\x8e\xe8\xec\xd7\x00\x5d\x27\x19\xbe\x1b\x6f\x8c\xcd\xab\xe2\xef\xfb\x3d\x2f\xdf\xd0\x03\x77\x50\xb3\x12\x2d\x93\xed\x7c\x5f\x16\x55\x21\x26\x8c\x9c\x24\xb8\xb8\x39\x0e\x8b\xdd\xa1\x2a\x8f\x61\x55\x94\xee\x16\x1f\x78\xce\xe1\xd1\xb2\x70\xce\x77\x49\x95\xba\x0b\x5c\x15\xaf\xcb\x92\x3e\x75\x2b\xdc\x36\x14\xcd\x43\x9a\xe7\x8e\x98\x6e\xd4\xe0\x84\x57\x3d\x28\xd0\x43\x3f\xe6\xf9\x84\x50\x6f\x71\x43\x3d\x91\xd3\xa7\x53\xf1\x33\x97\xf5\x07\xae\x4c\x0b\xdc\x7e\x65\x62\x35\xde\x55\x34\xdc\xf4\xaa\x14\xab\xc8\xc8\x76\xbe\xe5\x65\xc2\x21\xeb\xdc\x18\x80\x83\x30\xed\x20\x66\xbe\x2f\xf9\xfd\x0f\x00\xd6\x04\x00\x82\x89\xbc\x15\x7f\x94\xaf\xfa\x05\xb3\x06\x73\x1a\xa6\xee\xe8\x54\x6e\xe7\xe2\x1b\xb4\x84\xe5\xaa\x6d\xe9\x7e\x6c\x94\x50\x65\xdb\x69\x67\x3b\xdf\xd2\xbd\xd3\x87\x43\x86\xc3\x36\x3b\x95\x83\x65\x38\x14\x95\x22\xd4\x60\x80\xc9\x91\x39\x1e\x54\x1c\xcd\xe9\x7e\x9f\x3f\xa9\x1e\x95\x09\xec\x93\x83\xa8\x20\xce\xca\x43\x75\xa9\x02\x7e\xe7\x2c\x50\x83\x73\xfa\xd1\x2c\xb3\x25\x6a\x30\xbf\x1b\x99\x72\x63\xc5\x70\x48\xa6\x74\xea\x88\xe5\x64\xee\xa2\x9d\xef\x41\x3f\xc3\x1b\xb2\xb0\x6d\x76\x13\x7a\x3e\x2c\x70\x18\x04\xae\x1f\x88\xea\x77\xd1\xc5\x51\xb6\x0b\x56\xd7\x67\x6b\x2b\xc0\x48\xc1\x85\x1b\xe3\x43\x51\x56\x6e\x38\x17\x3f\xf8\xb0\x87\xa9\x0b\xe7\xf2\xa1\xc1\xdb\x39\x7f\xac\xf8\x2e\x22\xb0\xe3\xd4\xb3\xd1\xa6\x18\x12\xc5\x62\xee\x23\xcc\x71\x8c\x13\xd2\x4e\xa4\xbf\x08\xea\xfa\xd4\xe0\x94\x2c\x71\xd6\x25\xeb\xa1\xdf\x92\xc9\x72\x15\x0b\x14\xc6\x8a\x22\xe7\x74\xd7\x21\xcc\xc4\xb6\x9d\x5b\x92\xf4\x2a\x4b\x55\x65\xd3\x29\xc2\x67\x18\x36\xa9\xeb\xed\x3c\x3b\x7c\xa9\xfb\x95\xa0\xba\x76\x12\x72\x6a\x10\x4e\x09\x21\x99\x6d\x3b\x89\x04\xdc\x74\x36\x43\xab\xec\x26\x5d\x89\x8a\xb2\xd8\x91\x3b\xca\xe1\xbd\x96\x10\x12\xfd\x8a\xae\xb2\xdd\x15\x47\x94\x24\x7e\x14\xe0\x90\x70\xf1\x93\x4c\x08\x09\x45\xf7\x6c\x5b\xfc\x88\x56\x7f\xcc\x69\xb6\x93\x73\xed\x84\xa2\x61\xb1\xab\xb2\x03\x6c\x74\x27\x44\x08\x79\x0e\xf3\x1c\x46\x26\x4b\x1c\x13\x6a\xdb\xdd\x47\x8a\x3c\x2a\x56\xd2\x6d\xd3\xcd\xba\xe0\xeb\xa9\xc1\xa2\x79\xa2\xd7\xc1\xb9\xc5\x31\x0e\x11\x72\xef\x8b\x2c\xba\x5a\xa8\xde\x40\x96\x10\xb5\x00\x94\x74\x0b\xe7\x9c\xf8\xe3\x9e\xee\xa2\xc2\x55\x47\x85\x35\x75\xf2\xe9\x77\xb4\x4a\xe7\xa5\x48\xde\x3a\x08\xcd\x4b\xbe\xcf\x69\xc8\x9d\xeb\xf5\xdb\xeb\x04\x5b\x16\xc2\xd9\xe1\x6f\x9c\x46\x4f\xee\x64\x81\xb9\x38\x68\x7a\x70\x3c\x3c\x84\xa8\xc0\xc0\x45\xb1\x37\x81\xb1\xc1\xdd\x7a\x8c\x6c\x72\x4b\x27\x59\x84\x90\xed\x5c\xac\x23\x54\xa3\xa6\xc6\x85\xbf\x7a\xa2\xea\x7a\xa4\x02\x2a\xbe\x9c\x95\xfe\x49\x9e\x5a\x97\x71\xa7\x6d\x53\x42\xe8\x5c\x9e\x6e\xa2\xc4\xf7\xc7\x2d\x2f\xb3\x70\xa4\xc8\xc4\x5c\x29\xdb\xa6\xb3\x3d\x2d\x0f\xfc\xcb\xbc\xa0\x62\x71\xa6\xcb\x1b\xb2\x10\x15\x7c\xb1\xdd\x57\x4f\x72\xcd\xce\x77\x3b\x40\x38\x13\x90\x44\x91\xaa\x75\xa9\x56\x69\x02\xa5\x8d\x15\x1f\x29\x0d\xa7\x7f\x5d\x6b\x80\x9f\x18\xa3\xad\x6b\x3a\xdf\x15\x11\x7f\xff\xb4\xe7\x12\xfc\xe5\xd8\x1d\x8a\xba\x96\xaa\xf2\x49\x50\x10\xd4\xdc\xfe\xb6\x3d\xb9\x95\x28\x93\x62\xcb\x48\xb7\x90\xf1\xc5\x2c\xd0\x1d\x76\xd8\xca\x0e\x3f\xea\x97\x1f\x62\xab\x6b\xa9\x09\x69\x15\xa6\x4e\x8b\x95\x27\xcb\x26\x8b\x9d\xcd\xbc\x78\xd8\x7d\x4b\x0f\x15\x3a\x9b\x86\xab\xb6\x0f\x0c\x99\x93\xa4\x41\x58\xc2\x37\x21\x84\xd5\xb5\x91\xb5\xc1\xa2\xe9\x4b\xeb\x4b\x08\xf5\xe8\xd4\xb2\xdc\x33\x0c\x21\x26\xd1\x00\x39\x9d\xea\xa5\x7e\xa6\x2a\x47\x41\x37\xcf\xae\xfe\xde\xe0\x24\x2f\x18\xcd\xbf\xb8\xa7\x79\xd7\x28\x43\x27\x26\xf6\x6b\x55\x66\x5b\x87\x21\xdb\x76\xe8\x9c\x3f\xf2\xf0\x5d\x58\x66\xfb\xca\x80\x56\x86\x4e\x74\xce\xef\x69\x6e\x0c\x00\x39\x62\x14\x21\xdd\xf2\x5c\xd0\x14\x63\x43\xa1\xed\x86\x2c\xb0\xb5\x3d\xcc\xac\x6e\x87\xee\xf1\x1d\x6c\xb6\x88\x7f\x4f\xb7\x7c\xfc\xa0\x95\x70\x21\xbe\xdb\x76\xf7\x3c\xaf\x8a\x6f\x8b\x07\x4d\xc8\x88\x89\xed\xa7\x8c\x1c\xdd\xe2\x90\x15\x70\x18\x61\x4e\x16\x02\x79\x69\xdc\x9d\x10\xb1\xe9\x05\x74\x86\x40\xa1\x26\xe8\x24\x96\x70\x15\xdf\xf0\x15\x97\x88\x35\x22\x4c\x1d\xaf\xd4\xe7\x01\x0e\x11\x8e\x08\x21\x93\x25\x62\x25\xa7\x9b\x86\xe7\x07\x7e\x25\xca\x70\xb9\xec\xbf\xb3\xc4\xe5\xb6\xe4\x04\x8b\x82\x1c\x8b\x9f\xdf\xd7\xde\xc7\x4b\x69\x58\xa4\x0d\x16\x4b\xfd\x31\xa8\xb3\x2c\xd7\x11\x90\xd7\xad\xd4\x4e\xe0\x51\x41\xe3\x6c\xf8\x80\xe6\x33\x88\x68\x56\xd7\x7e\xb0\x1a\x62\x28\xa7\x74\xda\x33\x00\x79\x9a\x44\x0b\xb1\x75\x00\xda\xd9\x84\x5f\x41\xed\x51\xe4\xc6\x72\x24\x21\xa6\x08\xe1\xb0\xc1\xd9\xee\xbc\xcd\x76\x35\xc5\xba\x31\xb5\x6e\xfa\xc0\xd0\x34\x14\xc5\xa1\xdc\x8e\x62\x76\x5a\x22\x25\xf4\x16\x37\xa1\x07\x87\xc6\x96\x3e\x3a\x0b\x1c\x4d\x43\xe4\x86\xee\x62\x15\xdd\x84\xab\x50\xae\x42\x28\x66\x96\xd9\x36\xf3\xc3\x80\x10\xd2\x6e\xf4\xb0\x91\x0f\xb3\x65\x83\x61\x24\xa3\x33\x31\x6d\x9b\x8b\xc8\x02\xf3\x16\xd6\x56\x0f\x69\x96\x73\x27\xbc\x89\x10\xf5\xf9\x74\x1a\x10\xe6\x47\xd3\x69\x00\xc0\x27\x8e\x3f\x24\x33\xb4\xe7\x21\xf3\xa3\x60\x90\xb5\xdd\x17\xb2\x4a\xc2\xb1\xd8\xd8\x25\xdf\x9f\xcd\x8f\x18\xb9\x86\x78\x3f\xc0\x31\x59\x08\x22\x44\xf7\x2c\x25\x93\x70\x95\xdc\xc4\xab\x78\x3a\x45\x11\x99\x30\x87\xfa\x71\x80\x63\x84\xa3\x09\x21\xa9\x6d\x73\xa0\xda\x20\xb5\x45\x64\x7c\x48\xe7\x9a\xfb\xea\xac\x01\xb1\xaf\x70\x46\x7c\x18\x5f\x0a\x68\xd3\x68\x51\x37\x28\x36\x87\x84\x96\xc8\xb6\x33\xd9\x68\x84\x56\x2d\x90\xc7\x12\xc8\x7f\xb3\x80\xee\xa2\xda\x77\x7e\x80\x33\xc1\x7c\x1c\xb3\xc8\x5d\xe2\x7d\x59\x3c\x8e\x42\xad\x20\xf4\x54\xd1\x33\x88\x64\xb6\xed\xc4\x84\xfa\x2c\xc0\x8c\x50\x4c\x49\x8c\x70\x8f\x34\xa3\xc8\x73\x42\xa2\x18\x94\x96\xe8\xc2\x2f\x11\xe6\xe4\x9c\x96\xa5\xaa\x67\x4c\x52\xb1\x58\x73\x99\xce\xb0\x02\x24\xc8\x76\x3e\x17\x5d\x27\xd4\xfc\x11\x47\xa3\xf8\x9d\x4e\x31\xd7\x54\x93\x40\xa0\x0f\xe7\x94\xf3\x54\x50\x34\x6f\x69\xc5\x1b\x7c\x38\xee\x05\x77\xee\x6e\x1a\xd1\x7d\xe0\x5b\xac\xcf\x25\x99\x7a\xf5\xfd\x71\xcb\x78\x79\x25\xf9\xd8\x2b\x3d\xb0\x2b\xd8\x70\x50\xfc\xea\x6f\x3c\xf9\xe2\x71\x7f\x25\xf7\xb0\xa4\x91\x2c\xa0\xa8\x2b\xc7\xba\xb2\xd0\x80\x9d\x4e\x7d\xcb\x97\xe7\xce\x95\x35\x65\x53\x2b\xb0\x82\x33\xdc\x8c\x56\xba\xcc\x55\xd9\x71\x12\xb4\xdb\xa1\x2d\x59\xb0\x1a\xa1\xaf\xc2\x01\x7d\xe0\x4d\x96\xee\x52\x6c\xd1\x96\x80\xb0\x6d\xe6\x4d\x16\x6e\x47\x54\x85\x75\xad\x0e\x5f\x6b\x07\xe3\xed\x2d\x31\xbb\x11\x0c\xc9\x6c\x09\x60\xd6\x88\xce\x1c\xc8\x19\xf1\xd2\xf1\x04\x38\xc5\x19\xbe\xc5\x1b\x9c\xe3\x2d\xde\xe1\x02\xef\xf1\x1d\x2e\xf1\x01\x57\xf8\x48\xac\x43\xf6\xeb\xaf\x39\xb7\xa6\xcb\x17\x7a\xfe\xf1\xbd\x21\x15\xc1\x0f\x64\x81\x1f\xc9\x02\x3f\x91\x94\x39\x08\xff\x2a\x7f\x5e\xcb\x9f\xcf\xc7\xd9\x76\x2a\xfa\x6e\xdb\x4e\x4e\x26\x0b\x84\x17\x0d\x7e\x43\x96\xaf\x5e\x7d\xb2\xc4\x6f\xc9\xa9\x19\xca\x1d\xbe\x10\x5b\xfd\x4b\xf2\xc5\x7c\x5f\xec\xf1\x9f\xc5\xef\xf1\x90\xe2\xaf\xf4\xc3\xd7\xe4\x0b\x25\xe5\xf8\xcb\xa0\x31\x8d\x2d\x42\xb2\xc0\x51\x87\xb1\x0c\x9c\x48\x25\x2e\x64\x2d\x2e\x5c\x75\xb8\xf0\x1b\x62\x85\x29\x0f\x37\x3c\xaa\xa5\xac\x80\x47\x35\x3d\x3c\xed\xc2\x9a\x1e\xab\x22\x2e\xc2\xe3\x01\x9e\xf6\x39\x7d\xaa\x05\x87\x5d\x16\xf9\xa1\x8e\x78\xcc\xcb\x3a\xca\x0e\x94\xe5\x3c\xaa\xd3\x2c\x8a\xf8\xae\xce\x0e\x5b\xba\xaf\xf3\xa2\xd8\xd7\xdb\x63\x5e\x65\xfb\x9c\xd7\xc5\x9e\xef\xea\x92\xd3\xa8\xd8\xe5\x4f\xb5\x12\x10\x45\xf5\x21\x2c\xf6\x3c\xb2\xf0\xb7\xc4\xf2\xd7\xeb\xc7\x97\x8b\xf5\xba\x5a\xaf\xcb\xf5\x7a\xb7\x5e\xc7\x81\x85\xbf\x23\x96\xe3\xb9\xeb\xf5\x7a\x3d\xaf\xfd\xf5\xfa\x61\x16\xd4\xfe\x87\xf5\xfa\x71\xb1\x98\xad\xd7\x8f\x74\x11\xa0\xa9\x85\xbf\x27\xdf\xb5\x07\x9d\xf5\x60\x61\xeb\xe1\x0f\x16\xc2\x3f\x10\x6b\xbd\xf6\xad\xe9\xb7\x53\xeb\x85\x63\x4d\xbf\x9b\x5a\xc8\xf1\x5c\xf5\xee\xbf\xf8\xf0\xac\x9e\xfc\x2b\xf0\x08\x52\x29\x9e\xfb\xdc\xe9\x9a\xfa\x20\x7e\x9f\x07\xe8\x05\x7a\x5e\xaf\xad\xe1\x87\xb5\x25\xbe\xac\xad\xda\xb1\xa6\xdf\x4f\x2d\x84\x6a\x55\xcb\x7a\x1d\x58\xf8\x47\x62\xb9\x5d\x83\xeb\xb5\xe3\x38\xff\x7e\xd5\xa8\x1e\x7e\x71\x90\xbf\x5e\x07\x41\x6d\x4d\x7f\x98\x5a\xe8\x05\xaa\xe7\x2f\xd0\x7a\x2d\x9a\xc6\x7f\x25\x02\x58\xe5\x46\x77\xbe\x9d\x5a\x53\x0b\x5b\x89\x85\xf0\xdf\xcc\x74\xeb\x03\xf4\x71\x0a\x15\x7f\x50\x95\x06\x48\xb7\x82\x5e\xc8\x31\x4c\x9f\xa9\xc2\xef\x46\x0a\xbf\xc0\xf2\xc7\x42\xf8\xfd\xd8\x67\xc7\xbf\x99\xfe\x4b\x74\xf1\xdb\xa9\x85\xda\xac\x7f\xef\x65\x25\x3a\xeb\x87\xf5\x3a\x78\xbe\xb6\x82\x17\x9e\x39\x7b\xd0\xf6\x3f\xcc\x12\x3f\x22\xfc\xd3\xb0\xb1\xef\xa7\xd6\x33\x0b\xe1\x9f\xc9\xe9\xeb\xb7\x6e\xef\xdb\x1f\xd4\xd4\x5b\x08\xbf\xf9\xf6\xf5\xbb\x77\xfd\xaf\xeb\xf5\xbc\xfb\xfe\xfe\xf5\x9f\xfb\x5f\xc5\xa7\x01\x24\xbd\xb0\x90\xcc\xfc\xfa\xfd\xfb\xbf\xb9\x83\x5e\xfc\x80\xf0\x8f\xef\xbe\xf8\xfb\xdb\x1f\x86\x1f\x7e\x44\xf8\xcd\x57\x5f\x7f\x3b\xe8\x9a\xeb\x00\xf0\x83\x3c\xa7\xce\xe9\xa1\xaa\x77\x55\x2a\xfe\xcf\xc4\x0b\x9a\x39\x61\x9a\xe5\x51\x5d\xc4\x33\x81\xdc\x14\xf0\xa8\xd9\xe2\xf7\x7c\x57\x17\x51\x54\x3b\x8e\x3f\x9d\x05\x35\x72\xd6\xeb\xe8\x05\xda\xd5\x1d\xfc\xaa\x0f\xea\x7d\xbd\x8e\xa6\xa8\x46\xed\xd4\x02\xa0\x58\x99\x85\x30\x2b\x8a\x7c\x30\x6e\xb1\x2f\xbe\x99\x5a\xe8\x99\xca\xb2\xe3\x3c\x3a\xbc\x91\x72\xb4\xe1\xd8\x44\x75\x72\x99\xdd\xae\x57\xfc\xae\x4e\xaa\x3a\x97\x23\xea\x06\xd8\x1f\x83\xe3\xb9\xb3\xf5\x3a\x42\x1e\x74\xdd\xe8\x98\xe3\x11\xff\xc3\x2c\xa8\x9f\xa9\x2e\x36\xf8\x9f\xe4\x5a\xf4\x2a\xdb\xed\x8f\x95\x42\x48\xb5\xe8\x0c\x2d\x39\xad\xd9\xb1\xaa\x8a\x1d\x7a\x76\x9d\xe1\xff\x22\xd7\x1f\xd2\x75\x24\x1e\x9f\x91\xeb\x0f\xfe\x87\x53\x30\x5d\x9f\xd6\x87\x17\x6b\x7f\x47\xab\xec\x9e\x5f\xad\x1f\xae\xf1\x2f\xb2\xb6\x3f\x38\xbe\xc0\x20\x53\x54\x3b\xeb\x87\x29\xaa\xd7\x73\x9d\x80\x9e\x5d\x63\xca\xc8\xb5\x3f\xfd\x57\x70\x8d\x19\x23\xd7\xcf\xeb\xf5\xfa\x3a\xc1\x21\xeb\x41\x1e\xec\x43\x7f\xbd\x8e\xe8\x2c\x0e\x4e\x4b\xfc\xc7\x06\x46\xe1\xd5\x72\x88\xa8\x9e\xc3\x08\x04\x08\x47\x8c\x8c\x52\x59\xc4\x5a\x3c\x5a\x53\x36\xfb\xe3\x67\x9f\x7d\xf2\x47\x4d\xf3\x08\x8a\x2d\xaa\xeb\xd0\x63\xee\xe2\x26\xf2\xe4\x69\x3e\x8f\xcb\x62\xfb\x26\xa5\xe5\x9b\x22\xe2\x4e\x34\x85\x12\xc8\x1d\xfd\x78\x73\xb3\x5c\xd4\x9f\x7d\xf6\xf2\x4f\x7f\xc4\xcb\xc5\xcb\x4f\xec\xa8\xfe\xec\x8f\x9f\xbc\x5c\x08\x32\x84\x99\x94\xcc\xd6\x41\x0d\xf0\xe1\x5f\x29\x5a\xe6\x0b\xf2\xb5\x24\x5e\xee\xe7\x00\x7d\xdf\x17\x11\x3f\x20\xdc\x7f\xfb\xc2\x37\xdf\xb5\x80\xb7\x3d\xaf\x15\xbb\x1d\x33\x74\xfa\x8a\x9c\xa0\x5e\xf7\x0b\x95\xcb\xeb\x1f\x52\x7f\xd6\x4c\x15\x56\xcd\x32\x84\x9a\x51\x12\x9c\x1a\x14\xb8\x22\xbb\xa9\x1f\x76\x74\x34\x5a\xb5\x14\x74\x38\x5b\x36\x4d\xd3\xd2\x24\x09\x83\x09\x8f\x30\x97\x75\xc5\x38\x55\xe7\x7d\x01\xe7\xfc\x03\x7e\x14\xf4\xac\xc3\x3c\x36\x2f\x1e\x76\xbc\x7c\xab\x0e\xf7\xba\x66\xee\x3d\x9a\x10\xb2\xb3\x6d\xc1\x4a\x63\x26\x48\x8e\x1d\x8e\xc4\xda\xf8\x01\xde\x10\xd6\x8e\xb9\x65\x7f\x26\x06\x53\x3f\xa1\x75\xbd\x9c\x10\xb2\xb1\xed\x3f\xc9\x9f\x25\xbc\xea\x03\x17\x98\x9d\x09\xb7\xed\x3d\x30\x3c\x4b\x95\xd7\x89\xc9\x2f\xc0\xb2\x0b\x0e\x4b\x1c\xd4\xb7\x24\xf6\x97\x01\xe4\xf9\x13\x11\xe5\xc5\x53\x4a\xd8\x3c\xe1\xd5\x17\x39\x17\x7d\xfd\xfc\xe9\xeb\xc8\xb9\x45\x78\x92\xd6\xf5\x24\x9d\xef\x69\xc9\x77\x95\x58\x9e\x5e\x5b\xe9\x3c\x13\x2c\xe4\x6d\x9b\x28\x89\xed\x14\xe1\xa8\x65\x61\x07\x93\x60\xdb\xd0\x52\x2f\xed\xbc\x5d\x64\xdb\x95\xc3\x70\x8a\x6c\xfb\xb7\xda\x10\x7d\x8f\xfd\x97\x81\xfe\xae\x21\x2f\xc2\xe6\x78\x0e\x9f\x3f\xbd\xa7\xc9\xf7\x74\x2b\xc8\x46\x84\xa1\xf7\x30\x0f\x9f\x04\xc8\xb6\xc3\x7e\xce\x37\x39\x3d\x1c\x44\xde\xdf\xac\xb3\xcd\x29\xfa\x8c\xa3\x46\xf0\x69\xf3\xbb\x83\x60\x6b\x27\x77\x75\x3d\xb9\x9b\x57\xfc\x00\x9c\x2d\xcc\xf1\x81\x94\xe4\x88\x1f\x08\xc3\x8f\x44\x2d\x0e\xc5\x82\x38\xdd\x74\x37\x69\x82\xab\xbb\x20\xc7\x40\xa7\x82\x24\x82\x67\x72\x4a\xb9\x58\xaf\xab\xaa\xcc\xd8\xb1\xe2\x8e\x95\x45\x16\x42\xde\x81\x94\xed\x01\xc3\x18\xb6\xd6\xeb\x67\xb6\x85\x5c\x36\x3f\x0c\x33\xe3\x03\xc2\x07\x62\xf9\x59\x44\x9e\x5b\xd3\xc3\xd4\x7a\x1e\x5c\x59\x38\x27\x45\x9f\x15\xcd\x67\x33\x54\xf8\x79\x40\x0e\xd3\x92\x39\xe2\x09\xad\x1e\x08\x65\x7a\x5c\xb6\xbd\x67\x0e\x33\xe1\xa3\xae\xc5\xe8\x8a\xf9\x6d\x91\xed\x1c\x0b\x5b\x48\x4c\xca\x23\x12\x48\xe1\x6c\x36\x1f\xe6\x70\x9d\xf4\x4e\xdd\x1e\xbd\xce\x73\xe7\x11\xe6\x51\xee\xf8\x27\x74\x6a\xe2\x6c\x47\xf3\xfc\xe9\x54\xd6\x35\x9b\x97\x7c\x5b\xdc\xf3\xc1\xa8\x9b\x46\xf1\xdc\x57\x99\xd3\x09\x93\xfe\x86\xad\x67\x4b\x71\x1a\xc1\x46\xed\x76\xaf\x20\xa4\xa5\x20\x5f\xf0\x9d\x6d\x32\x73\x42\xb1\x9f\x5b\x4e\x0c\x60\x2c\x9c\x0a\x0e\xe6\x46\xb0\x5f\x61\xca\xbf\x85\x79\xb1\xed\x88\xe7\xbc\xe2\x57\xcc\xa7\xf3\x43\x9a\xc5\x95\x83\x02\xcc\x7c\xc8\x1b\x10\xae\xfb\xc2\xba\x26\x33\x66\x8a\xbb\xfc\x63\x40\x26\x0b\x4c\xbb\xef\xb7\xac\xe3\x72\x76\xf3\xb0\xe4\xb4\xe2\x0a\xc4\x1c\x2b\xca\xee\x2d\xb4\xea\x66\x6f\x32\xa1\x0e\x43\x23\x12\x48\x3d\x51\xe6\x62\xd8\xb6\xf9\xa6\xa6\xef\x8d\xc0\xb4\x12\xfd\x08\x2e\xd9\xc0\x6c\x1b\xd6\xc7\x90\x8a\x8b\xab\x2d\x74\x2e\xa3\xe0\xb3\x19\x8a\xe6\xb4\xaa\xca\xaf\xe8\x2e\xca\xb9\x1f\xfa\x3c\x08\x88\x31\xec\xbc\x57\x1b\x13\xa0\x1e\x91\xd0\xb6\x87\xcc\xd8\x92\x10\x03\xf1\xd9\xb6\xf3\x2f\x36\x3f\x14\xc7\x32\xe4\x5f\xef\x22\xfe\x58\xd7\x6f\xd0\xcc\xf9\x17\x1d\xa6\x89\x1d\x1c\xf5\xb0\x91\x96\x8e\x84\x24\x9c\xef\xf8\x63\xf5\x2e\x63\x79\xb6\x4b\x40\x5c\x63\xf0\x25\xb3\x65\x2b\x23\xf1\x96\xee\x6c\xd9\xf5\x78\x6b\x2e\x94\x29\xd7\x54\x43\xb8\xb0\x2d\x35\x17\x0a\xd4\x04\xf0\x93\x62\xde\xe1\xbe\x94\x10\x6a\xcc\xef\xee\xbf\x55\xbf\x63\x34\x50\xd7\x96\xa4\x52\xe0\x0d\x5d\x68\xaf\x30\xdb\xcb\x98\x63\x36\xa9\xc1\x94\x4c\x19\x36\x3f\x85\x38\x92\xfd\xe1\x38\x26\xd4\xf1\x03\x1c\xea\x93\x92\x21\x9c\x90\xb8\x0f\x06\xc9\x6c\x86\x42\x9f\x93\xd8\x4f\x82\xc0\xb6\x1d\x01\x05\x64\xe2\x44\xe2\x47\x3c\x23\xd4\x88\x7f\x6d\x97\xf6\xbd\xbd\x60\xdb\x63\x77\xf2\x74\x14\x6f\xdb\x36\x6d\x42\x92\xb0\xb9\x12\x57\x90\x53\x83\x63\xf1\x9e\x1d\x7e\xfe\xee\xdb\x73\x8e\x1c\x64\x8b\x74\x78\x02\x53\xd4\xf2\xda\xaa\x85\xf6\xde\xd7\xb3\xbe\x7a\xff\xdd\xb7\x7d\xfc\xeb\x4e\x96\x0d\xde\x42\xab\xbc\xd2\xb5\x8c\x70\xff\x1c\x27\x84\x7a\xe7\xad\xb9\xf7\xed\x2d\x95\x3c\xf7\xc5\x79\x9b\x18\xc0\x9e\x0c\xbb\xe3\x39\x3b\x92\xe0\x82\x9c\x7d\xc0\x5c\xa4\xf1\x98\x1e\xf3\xea\x1f\x19\x7f\xc0\xdc\xb6\xf9\x84\x10\x01\x2c\x7b\xdb\x76\xf8\x9c\x46\xd1\x17\xf7\x7c\x57\x7d\x9b\x1d\x2a\xbe\xe3\xa5\x77\x9e\xe4\x58\xc7\x5d\x5e\xd0\xc8\xc2\x9c\xe1\xc9\x12\xb9\x5c\x6c\x61\x1a\xa6\x90\xcb\xb6\x7b\xaf\x8e\x55\xec\xba\xec\x08\xe1\x3d\x99\xc4\x4e\x82\x70\x08\xfb\x1e\x50\xf0\x81\xdc\x1a\xc0\x63\x4a\xf5\x43\x7d\x34\x12\x2b\xb3\xf0\x84\x0e\xce\xab\xf6\xb3\x85\x1a\x51\xe3\xd8\x92\x5f\xac\x9b\xee\xf7\x7c\x17\x49\x44\x96\x28\x8c\xf9\xa6\xd8\x4a\x8c\x69\x21\xa4\x9a\x3b\x3f\xfb\x05\xbf\xa8\x00\xf8\xbc\xd5\xf6\x30\x27\xcf\xe4\xf1\x96\x5c\x22\x0b\x64\x49\x41\xab\x5c\xe8\x62\xd1\xeb\x22\x45\x82\x86\x39\xe2\xc9\xa0\x42\x51\x57\x5d\x8f\xa5\x3a\xc7\x61\x37\x45\x63\x9e\x13\xcd\xe3\x6c\x17\xcd\xbf\x7e\x3b\x10\xce\x64\xf1\xa8\x76\xcb\x90\xa2\x03\xca\x50\x23\x9b\x01\xd1\xd5\xdd\x46\x85\x82\x20\xea\x8e\x0d\xcf\x0f\x03\xd7\x0f\x9a\x06\x8b\xd6\xf3\x8a\x97\xfd\xf6\x3b\x01\x9d\x3e\x7b\x43\x86\x23\xd6\x56\x37\xba\x82\xe7\xc4\x8b\xc0\xd0\x4d\x83\x5c\x47\x9d\xaf\xed\x50\xff\x0f\x34\x2b\x87\x7c\x11\xd7\xb4\x3d\x91\x67\xe6\x79\x9a\xec\x61\x6f\x7e\xee\x69\x7e\xe4\xaa\xcf\x58\xf5\xf5\xfd\xeb\x3f\x93\x71\x48\xf6\xc6\x04\x77\xbf\xb5\x62\x46\xf1\x8b\xa4\xac\x0b\xe4\xa6\xc7\xce\x09\x29\xda\x0a\x80\x47\xc5\xda\x11\xf1\x03\x75\xd3\x75\xb1\x72\x71\xa8\x5a\x2f\x2c\xb8\xdf\x38\xe9\xb3\x35\x86\xdb\x06\x24\x4e\xed\xd0\x40\x64\x8a\x2c\x0f\xdb\x59\x8a\x34\x25\x14\x37\x7a\x7e\x40\x60\x32\x9c\xa1\x76\x57\xd9\xf6\xa8\x74\x73\x3f\x1c\x7c\x47\x73\x77\x43\xc4\xa5\x18\xce\x9d\xf8\x23\x09\xf0\x6e\x0b\x0f\x27\x46\xf0\x16\xce\x60\xd7\x9e\x6f\xd7\xdd\x8e\x97\xe2\x38\x20\xd6\x2b\x7a\x25\x69\xe4\xe3\xd4\x7a\x7e\xf3\xea\x9a\xde\xbc\x92\x02\x83\x2e\x79\xb6\x8e\x83\xe7\x57\xdb\x03\xcd\xf3\xe2\x21\xa4\xfb\xea\x58\x72\xf2\xfc\xf9\xcd\xab\x62\x0f\x87\x9e\x96\x78\x42\xda\xb5\x4c\xbc\x79\x75\x2d\x93\x6f\x2c\x4c\xcf\x57\xcf\xf2\xfb\xd5\x7d\x20\xcf\x9f\x07\x2d\xee\xb2\xed\x3b\x39\xdd\x96\xff\xe2\xc3\xb3\x80\x74\x32\xc6\xe7\xf5\xda\x5a\x83\x40\x69\xb4\x52\xdd\x93\xae\xaa\xba\xd6\x55\x75\xd2\x4c\xcf\x05\xe8\xae\xa5\xd0\xe6\x52\x5d\x59\xf4\x2f\x22\x87\x3f\x56\xdb\xbf\xc8\x85\x72\xae\x92\x03\x8f\x94\xe9\x3e\x8d\x96\xa4\x7f\x80\xe6\xa6\x2f\x46\x8a\xce\xff\x30\x9f\xfa\xd3\x7f\x05\x70\x9a\x0c\x56\x57\xe2\x89\x64\x48\x59\x4b\x6a\x0a\xad\x86\xcc\x91\xd8\x89\x16\xb6\xa4\xb0\x19\xba\x62\x02\x07\x43\x83\xec\x3b\x71\x86\x61\xeb\xed\xa5\x69\x12\xdf\x49\x34\xb6\x76\x50\x52\xca\xbb\x5a\x71\xf1\xa5\x49\xe3\x3b\x10\x81\x8f\x4d\x9a\xfe\x84\x2d\x57\x4b\xca\x2f\xd4\xf2\x02\xbb\x8f\x16\xc2\xba\x24\x9e\xbf\x70\xc5\x7c\x21\xb1\x67\xb6\x82\xa1\xe0\x07\x9d\x5f\xef\x9f\x03\x29\xf4\xa7\xba\x2e\xe6\x0f\x9c\x6d\xb2\xea\xbb\x7e\x5e\xf1\x61\x5b\xfc\x3a\x92\x5a\x8c\xe5\x3c\x0c\x12\xc5\x86\x1c\xac\x58\x38\x8f\xb2\x43\x58\xec\x76\x00\xac\x90\x9f\x1c\x5a\x35\x0e\x60\x89\x70\xf7\xee\x1f\x26\x62\x77\xc0\xd8\x4a\x35\xb6\x09\xb1\xf0\x8f\x02\x16\xee\xc8\x5d\x3b\xf1\x86\xa8\xed\x4e\xf1\xa7\xb5\xa0\x16\x4a\x52\x8e\xe5\x29\xcd\x3c\x4c\xcf\x48\x31\x0f\x8b\xad\x38\x1d\x35\x99\xf7\x63\x71\xc8\x44\xc7\x11\xae\x08\xab\x6b\x23\xdb\xae\xa2\xd9\xee\x80\xbc\x31\xf9\xd3\x9f\x7a\x5c\x90\x47\x87\xe4\x9e\x2b\xb8\x25\xd6\x67\xe0\x56\xc6\x85\x4f\x54\xd7\x13\x67\x12\x49\x81\x50\x64\x28\xc7\x4c\x9c\xb0\x6d\xda\xeb\x1e\x9d\x08\xb9\xf4\x52\xd7\x6d\x7b\xf9\x47\xfb\xe2\x57\x27\x42\xe7\x52\x34\xb8\x56\x97\x67\x02\x23\x3d\x01\x80\xf8\x62\x5c\x89\x4f\x16\xab\x96\x47\xc5\x9f\x13\xe6\x9d\xd5\x43\xcd\x4b\xa3\x5c\x30\xc7\x8b\x95\x94\x65\x4e\x2e\xf6\x69\x36\x61\x97\x3e\xb5\x07\x90\x17\xb9\x4e\x44\xc6\x78\x00\x42\xc8\x50\x2e\x55\xd7\x0c\x79\x97\xa7\x80\x21\x77\x89\x97\xb6\x98\x75\xa9\x3d\xf8\x96\x0b\x3a\x99\x47\x62\x85\x2e\x15\x82\x86\x22\x4f\x8c\x2f\xa9\xeb\x41\x3f\x08\x21\xf7\xb6\x5d\x39\xf7\x98\x22\x6f\xb6\x74\x99\xcc\xc5\x2e\xe5\x62\xc8\x5b\xba\x1b\xef\x2f\xce\x06\x53\x34\x13\x3f\x0c\xb9\x0b\xf7\x53\x3b\x12\xa5\x97\x63\x0b\x74\x69\x62\xc3\x56\xed\xa0\x5b\x36\xa0\x03\x8c\xd7\x94\xf8\x34\xc0\x19\xf1\x59\x20\xa5\x8a\x75\x3d\x89\x91\x01\x80\x49\xdb\x69\x6f\xe9\x72\xf1\x12\x8f\x75\x50\x14\x16\x74\x52\x5b\x56\x89\x05\x56\x21\xa1\xab\x8e\x5f\x37\xe0\x27\x9d\x1f\x77\x52\xb0\x12\x8a\x5c\x6c\x3c\x57\x66\xe6\x92\x39\x52\x3f\x0a\x08\x21\x99\x1f\x05\x28\x9a\x4e\x3b\x38\xc8\x19\x7c\xc3\xf0\xc5\x55\xd9\xee\x45\x97\x33\xfd\xbc\x74\x17\x0d\x4e\x90\xbb\x6b\x70\xc2\x34\xc6\x1b\xbf\x6e\x05\xf9\xef\xee\x98\xe7\xf2\x0f\x43\x66\x91\x16\x7f\x9e\x2d\xc6\x18\x1c\x6a\x59\x30\x05\x59\x70\x4b\xc8\xfe\x1d\x5b\xe4\xf9\xb3\xa5\x38\xf0\xf1\xc4\x99\x9c\x21\xe7\xba\x9e\xec\xeb\xba\xb4\xed\x52\xe2\x1a\x86\xea\xfa\x4e\x9c\x2b\xea\x0d\x81\xb4\x4d\x6e\xa1\x83\xa1\x79\x96\xc5\x4e\x54\xd7\x23\xc8\x55\x00\x67\xd4\x0a\x68\x41\x6e\xdc\x25\xb4\xb8\xa5\x15\xb6\x28\xe9\x13\x47\xa7\xa6\x9b\x13\x86\x77\x72\x42\x7c\x1a\xe8\x53\xea\x66\x01\x73\xa3\x71\xd0\xe8\x7c\xfe\xc6\xbc\x68\xa5\xf7\x84\x01\xd3\x39\xa8\xe2\xe3\x85\x01\xd8\x39\xe9\x89\xa9\x06\xca\x06\x01\x8e\x09\xb7\xed\xb7\x72\x96\xcc\x9c\x78\x90\x13\x79\x1c\xe4\xfe\x93\xbd\xa6\x3a\xfb\xda\x7b\x13\x42\x62\x2f\x76\x4d\xde\x58\xac\x93\x37\xe0\x75\x18\x72\x9d\x98\x8c\xb0\x18\x4c\x9c\x83\xf1\xfc\xb0\xe7\x61\x16\x67\x3c\xf2\x62\xc9\x63\xb8\x20\xa4\x13\xe3\x07\xdd\x54\xf2\x31\xdd\x54\xeb\xdd\xd3\xae\xa2\x8f\x57\x90\x13\x5f\x1d\x77\x25\x0f\x8b\x64\x97\xfd\xca\xa3\x2b\xfe\xb8\x2f\xf9\xe1\x90\x15\x3b\xf7\xca\x9a\x52\x39\xa5\xc7\x5d\x76\x77\xe4\xef\x8a\x72\x4c\xa8\x61\xb0\x08\xb0\x8d\x73\x32\x09\xe7\x11\xaf\x78\x58\xbd\x3d\xee\xf3\x2c\xa4\x15\x3f\xe0\x0d\x51\x18\xf1\x5d\x25\x68\x0f\xc1\x3e\x81\x02\x81\xb3\x10\x44\x88\xf8\xe0\x7c\x8e\x70\xae\x19\x08\x46\xa8\x1f\x0b\x06\x02\xce\x08\x3f\x0e\x6c\xdb\x11\x4b\x04\xc7\x76\x8c\x90\x21\x5e\xa4\x4a\x31\x1b\xa4\x49\x78\x89\x34\xb0\x6d\x40\x6e\x89\x69\x83\x39\x49\x80\x39\x78\xcf\x1f\xc7\x06\x10\x12\xcb\x02\x54\x17\x1b\x47\xad\x18\x49\x2c\xef\x47\x04\x5a\xaa\xeb\x3f\xc9\x9f\x25\xbc\x4a\x56\xfa\x4c\xf5\x6c\x5e\xf1\xc7\x0a\x2e\x2c\x77\x55\x8b\x04\xcd\x44\x50\x23\xa3\x84\xce\xe1\x72\x12\x48\xc5\x15\x5d\x89\x04\x53\x12\x19\x4e\x09\xe8\xee\xea\xbb\x91\x4f\x64\xd3\x9f\x9a\xf8\x51\xf6\xf4\x1f\x62\xe9\x65\xbe\x6e\xde\xe0\x5e\x0a\xea\xe8\xd8\xdc\xb0\xc1\x91\x94\x4f\x49\xdc\x70\x20\x27\x43\x5a\xed\x7e\xb6\xc0\x92\xec\xfd\xf1\xc0\x8f\x51\xe1\x66\x0c\x03\x32\x71\x7f\xc6\x1d\xa8\xbb\xa7\x06\x0b\x06\x4d\xfc\x96\x3c\x87\x8b\x4d\xf7\x64\xdd\x58\xee\x29\xca\x4a\xd7\xea\xd0\xae\xa5\xac\x05\x26\x8b\x06\x5b\x57\x23\xdf\x1b\x6c\x4d\xdb\xe4\x92\xdf\x67\xc5\xf1\xa0\x46\xdf\x2b\xfb\xaf\x4b\x99\x9a\x06\xef\x4b\xfe\x25\x30\xfc\xee\x09\x6e\xc5\xc7\x04\x08\xfe\x32\x20\xe2\xcf\x80\xf9\xc7\xd4\xff\x24\x20\x8e\xf8\x5b\xd7\xd4\xff\x14\xfe\x7e\x16\xd4\xb5\xa9\xac\xa8\xb2\x0a\x16\x05\x60\xf0\xa5\x80\x41\x28\x68\x89\x9d\xe1\x7f\x12\x80\xdc\x1f\xb7\x80\x8c\x3f\x45\x8d\xba\x70\xff\x68\x5f\x7a\xf8\x02\x5b\xbb\x2a\x95\x0d\x2c\x83\xb6\xa6\x4f\x90\xa7\x7a\xa7\x37\xb4\x43\xfd\x45\x20\x3a\xfe\x69\x40\xa6\x8e\xf8\xf1\x44\x97\xc5\xe3\x1f\x83\xba\x5e\x22\xf7\xe5\x0b\xc7\xe2\xf7\x7c\x27\x2b\xfb\x04\x54\x77\xa3\x48\xbf\x21\x51\xf6\x33\x59\xf6\x7f\x05\x53\xea\xff\xe7\x59\x06\x57\xfc\xd8\xf6\xb0\xc5\x46\x6b\x17\x8c\xed\x9c\x89\x68\xde\xb6\xc5\xec\x68\x50\xfb\x79\x0e\x73\xa0\xae\x7e\x44\x1d\x9e\xd8\x88\x2e\x0c\xc8\x13\x39\x49\x7f\xca\xdd\xd0\xb6\xff\x21\xb3\x87\x82\xeb\x66\x24\x71\x42\x3c\x59\x20\xf9\xd2\x5a\x4c\x39\x16\xb2\x5a\x31\xf3\x8c\xa1\x99\x7e\x06\x6d\x63\x7f\x21\xea\x5d\x74\x73\x08\xcb\xfc\x32\xd0\xf6\x58\x90\x62\xae\xd6\x27\x08\x35\x02\xa0\x25\x08\xbd\x7f\xfd\xe7\x11\xbb\x94\xa1\xd4\x68\x5c\xa2\x2f\x65\x1f\xde\x99\xf2\xdc\xa4\x27\x54\xf9\xb7\x75\x91\x9b\x46\xe9\x8e\x9c\xf7\xeb\xc9\xa7\x70\x91\xd4\x4a\xa5\xc1\xc4\xc2\xd4\x11\x70\x3e\xb4\xfa\x2f\x74\x6a\x49\xc5\x80\xfa\x19\xb2\xc4\xa4\x3e\x39\x14\x8f\xf4\x4b\xdd\xd6\x8d\xa0\xb5\xb0\x13\xbe\x18\x2f\x75\xfd\xdb\xa2\xb2\xa1\x98\x4c\x49\x74\x2d\x04\x7b\xad\x41\x0d\x1e\xec\x5d\x6c\x9a\x31\xb5\xc9\xfa\xb2\x81\xa8\xf3\xdd\x89\x0c\x53\x2c\xa9\x6f\xcc\x3d\xc1\xcd\x89\x79\x73\x99\xe7\xf0\xa9\x40\xea\x96\x4c\xf0\x04\x65\x19\xba\xfa\xbb\xc7\x27\xf0\xfa\x41\xbd\x86\xb6\xbd\x20\x84\xf0\x16\xce\x42\xe4\x5a\x2f\xba\x8f\xe6\x87\x9b\xd9\xd2\xb5\x9e\x99\xdf\x24\x38\x75\xb0\x28\x9b\xfa\x97\xca\xe2\x08\x5c\xc1\x5b\x28\xfa\xab\x40\x87\x08\xf0\xc6\xb0\xd2\xda\xec\x6b\x5d\xf3\x16\x4e\x75\xcd\xd3\x25\xd4\x3d\xb5\x66\x96\x3b\x59\x22\x81\x20\xcf\xd1\x8d\x36\x3b\x52\x3a\x07\x04\xb0\x0b\xd0\x69\x1d\xd8\xe3\x84\x58\x39\x3d\x54\x66\xfa\xec\x53\x84\x53\x62\x29\xa5\x1f\xe8\x89\x9e\x5e\x71\xe0\x45\x6a\x8a\xbc\x11\x8b\x90\x89\xc9\x1f\x18\x00\x2f\x7a\x92\xc9\x7e\xf4\xf4\x1c\x49\x3c\x11\xdc\x80\x65\x9c\x78\xd6\xc8\x29\x70\xd7\x67\x34\x4a\x92\x0a\x1e\x6a\x7c\xb7\xe0\x03\x99\x64\xb6\x3d\x49\xc5\xa9\x7d\x07\x87\x73\xac\x29\x89\x3d\x3a\xe5\x2d\x77\x90\x93\xdc\xdf\x07\x82\xf7\x4c\xbd\xfc\xf2\xd6\x2b\x41\x15\x34\x1f\x92\xb4\x93\xe5\xaa\x20\x7b\x62\x15\xbb\x1c\x14\x42\xa9\x6d\x4f\x0a\xdb\xee\x8d\xa4\x69\xb7\x7e\x16\x3b\x05\xf1\x13\xef\xce\x38\xec\xdd\xbb\xb9\x98\x79\x78\x0e\x70\x62\xdb\x07\x74\xda\x90\x3b\xff\x18\xd4\xb5\x23\x7e\xc0\x3e\xeb\x96\x6c\x7c\x1a\x80\xb2\xc7\x8e\xdc\x0a\xc4\x46\xc8\x83\x6d\xdf\xfa\xcb\x00\x6f\x7b\x09\x2f\x03\x9c\x0b\x32\xf6\xce\x50\x8c\xf1\x77\x41\x3b\xda\xe9\x74\x67\xdb\xb9\x6d\x8b\x51\xd7\xb5\xb3\x25\x3b\xb2\x40\x75\x5d\xcc\xf7\xc5\xde\x01\x25\x8f\xfe\x40\x6d\x7b\x3a\xdd\xda\x76\x0e\x1c\xe1\x49\xf4\x82\xf8\x0f\x78\x87\xb7\xc1\x4a\xda\x0c\xb4\x34\xc9\x01\xec\xd1\x1c\x26\xbb\xce\x54\xd7\x91\xa0\xea\x45\xc7\x64\x17\x91\xe8\xed\x32\x58\x19\x04\xca\xef\xe9\xd3\xbf\xb9\x38\xaa\xd3\xd0\x25\x27\x97\x1d\xca\x8d\x0e\x89\x21\x6c\x03\x84\xe5\xa8\xfa\x66\x0c\xdb\x19\xe1\x78\x2b\x05\x25\xdb\xff\x88\x08\x21\x0b\xdb\xde\x5e\x47\x37\x64\xd1\x34\x23\x27\x9f\xa1\xf0\x2d\xa8\x51\xa0\x96\x0e\xb0\x58\xd1\xfc\xc0\x2b\x49\x90\x1c\x7c\x3a\x60\x1f\x8c\x73\xdc\x3a\xee\xd4\xd5\x24\x8f\xae\x64\x05\x92\xd2\x6e\x35\xcf\xfd\x63\xe0\x01\x07\xc0\x35\x7f\xb4\xf4\x9c\x90\xf8\x14\x53\x6c\x59\x98\x05\xd8\x6c\x6b\xa0\xb9\xeb\xd0\x21\x3f\x62\x5e\xdb\x52\x53\xcd\x1e\x18\x95\x0b\x97\xb5\x11\xf9\x8b\x38\x24\xfc\x04\x68\x8e\x28\x20\x13\x27\x14\x3f\x90\xd2\xa0\xb1\x63\x4d\x54\xb7\xc0\xa1\xf8\xca\x05\x79\x26\xe7\xc6\x3d\xed\x8a\xca\xcd\xc6\x44\xad\x7e\x80\x95\xc9\x74\x7a\xae\x91\xd1\x5d\x10\x88\xe9\xe8\x8f\x41\x60\x96\x56\xab\x2a\x21\x91\x66\xb4\x39\xf6\x03\x81\xc6\x06\x3a\x08\xe9\x6c\x86\x9c\x98\x24\x7e\x1a\x48\x4a\x21\x15\xc3\x61\xe2\x27\x46\xfd\xc1\x60\x8e\xe3\xee\x3c\x04\x92\x02\x47\x82\x67\x15\xd5\x83\xc5\x00\x24\xc2\xeb\x24\x94\x10\xdb\x34\x08\xa7\xf4\x30\x1c\xe3\xc8\xfd\xbd\x29\x19\x60\x06\xf3\xdb\x20\xac\x79\xdf\x0b\xb5\xd0\x33\x4a\x04\x9f\x57\xec\x30\x93\xd5\xa8\x6b\x26\xef\x27\x04\xd7\x53\xd7\xc0\x39\xb6\x67\x0e\x15\x67\x8e\x68\x37\xa7\xbb\xe4\x42\x9b\x3f\x29\x0a\x0e\x4e\xea\x4b\x00\x0c\xe5\x01\x7c\xf1\x79\x1f\x07\x48\xfa\x4c\x95\x61\x15\x15\x57\xa0\x75\xb1\xf7\xd8\x1c\x6a\x1a\xaa\x2b\x3d\x6e\x73\x57\x7c\x10\x1d\x18\x7e\x93\xe9\xad\x16\x39\x09\x07\xcd\x85\x02\x43\x4b\x95\xfd\x8e\x84\xa4\xe2\xf8\xd4\xdc\xe3\x50\x24\x39\x54\x32\x41\x9d\x48\xb2\x41\xb8\xa2\x65\xcf\x04\xdd\xd4\x11\x2c\x42\x2a\x05\xa4\xdd\xb3\xd8\x97\x69\xef\x2e\x50\x9e\xb4\x4b\x69\x67\x96\x45\x0d\x2e\x8b\x62\xd4\xa4\x9d\x12\x42\x8a\x06\x83\xba\xfb\xa5\xef\xbb\x39\x0d\x05\x03\xa6\xe4\xc0\xb6\xed\x4c\xa0\xc9\x2f\x41\x47\xbe\xee\x9e\x1d\x41\xf1\x4d\x26\x02\x2f\x80\xe0\x97\xce\xd3\x92\xc7\x75\xfd\x2f\x3a\xaf\x28\x03\x3d\x19\x30\x9b\x86\x1b\x81\x71\x72\x55\xdf\x17\x80\x19\x58\x83\xf5\xeb\x6f\x67\x5e\x34\x58\xdd\xd5\x8c\xd2\xd6\xbf\x53\x4f\x86\x89\xfe\xd3\xb9\x36\x0c\xa8\x2d\x79\x35\x66\x7c\xd2\xf7\x55\x0d\xd6\x4f\xe3\x7d\x33\x55\x9e\xcc\xb7\xb6\x02\x98\x0e\xdc\x55\xa8\x06\xc1\xb7\xfb\xea\xa9\x57\xe5\xef\xe2\xe3\xc1\xca\x54\x03\xd3\xab\x3f\x8e\x19\xbb\xca\x3e\x8c\x19\xda\xb6\xa7\xcb\x1c\x5a\x07\x5b\xde\x94\xd3\x88\x97\x63\x63\xfb\x2f\xb5\x59\xdb\x39\x45\x0d\x86\x09\x1c\xcb\xfc\xcf\x91\xcc\x52\x4f\xe8\xbf\xb9\x4c\x86\xb6\x91\x06\x37\x23\x89\x35\x18\x34\xb9\xcf\x4d\x7a\x87\x55\x5d\x6a\xd3\xb6\x2d\x51\x43\x57\xbf\x6d\x3b\x92\xfa\x77\x18\x19\x32\x1a\x40\xc8\x22\xc1\x68\xe8\x32\x43\x51\x9d\x76\x6a\x50\x18\xf8\x4f\x4f\x92\xbf\x08\x00\x3d\x0e\x3e\x1b\x12\x49\x9f\xcd\x96\x22\x0f\xbf\x1b\xe6\xe8\x38\x18\x7f\x71\x13\x7a\xe1\x94\xb9\x21\xe4\xbc\xe7\xbb\xf3\xda\x0c\x8b\x99\x15\x03\x33\x19\xf2\x12\xd1\xe1\x3d\x39\x6d\x10\x2e\xa2\xe8\x63\xc5\x97\xbf\x51\x3c\x3f\x1b\x4a\xcf\xbc\x8f\xb4\x7d\x5d\xcd\x66\x82\x00\x5a\xe9\x6a\xa2\x5e\x35\xc9\xef\xae\x66\x3a\x8d\x5e\xb1\xf1\x5a\x40\x4d\x44\x03\xf8\xae\x4a\x89\x01\xee\x77\xad\xed\xf3\xa9\xa4\x51\x56\xb8\x93\x85\x44\x23\xac\x78\x14\xcf\x71\x96\x73\xf1\xbb\xa7\x87\xc3\x43\x51\x46\xe2\x39\xdb\xd2\x44\x24\x36\xa8\xa3\xca\x58\x40\xb6\xcc\x31\x4c\xa9\x4f\x87\x23\xdb\x66\x95\xc8\x5f\xf2\x03\xaf\xce\xf3\xef\x64\x7e\xad\x86\x76\xc7\x1c\x74\x6a\xee\x98\xe1\xda\x44\x6b\x99\x1c\xba\x1e\xf7\xc8\x31\x60\xc2\xef\x18\x4e\x04\xab\x5a\x15\x1b\xbe\xcb\x7e\xe5\xe4\x82\xc5\x60\x67\x06\x46\x7e\xd5\x1c\x7d\x16\x3b\xad\xa6\x36\xf3\x16\xee\xa6\x95\x93\xae\x52\x42\xc1\x0e\x12\xdf\x8a\xc6\xb5\xf8\x4b\x53\x39\xe8\xe4\x4c\xc2\xba\x76\x38\x79\x27\xd5\xb8\x53\x04\x12\x14\x0e\xba\xd4\xa9\xaa\x86\xfb\x8b\x40\xb3\xaa\x75\x9d\x22\xac\x2c\x1f\x63\xe2\x07\x48\x1c\x9a\x93\x25\x76\x38\x79\xdf\x56\x61\xdb\x4e\x48\xb8\xd6\x61\xc5\xb1\xcc\x7e\x92\x42\xe7\x50\x9a\x9e\x43\xa5\x06\x01\x77\x05\xf7\xeb\x5d\xa3\x2d\x73\x2c\xd7\x22\xb9\xca\x76\x57\x7a\x22\xd1\xc4\xe1\xe4\x67\x3f\x09\xda\x16\xeb\xfa\xd6\x4f\x02\xdb\x16\x1f\xc4\x93\xc3\x45\xda\x6f\xf7\x22\xc1\xea\x02\xc4\xe5\x97\x5a\xcf\x62\x67\x12\x2a\xf3\xe7\x76\x8e\x53\xf5\xdd\x4d\xbd\x4e\xf6\x85\xdc\x5f\x1d\x8a\x33\xd4\xce\x7e\x63\x98\x1b\x32\x7d\x04\x48\x14\xb9\xc0\x3d\x43\x01\xcb\x5a\x85\x37\x6c\xc5\xa6\x53\x14\x4d\xc1\xee\x53\x8a\xe8\x3b\x95\x97\xb6\xa6\x03\xeb\x5b\x65\xb0\x79\x94\x95\x98\x93\xd0\xb6\x4d\x71\xa9\xe0\x4f\x70\x4c\x1e\xbb\xdb\x2a\x26\x4f\x1e\xaf\xc7\x6d\xc7\x9d\xf4\x1c\x2c\x7e\x15\x7b\xc7\x8c\x6b\xdf\xf6\x76\x86\xaa\x12\x03\x86\x3d\x91\x3d\x01\xa8\x14\x7c\x53\x0c\x00\x99\x9c\x57\x3c\x52\xb3\x6d\x53\x55\x47\x7b\xa7\xdb\x17\x4d\x5f\xee\x94\xe0\xd8\x33\x32\x60\x26\xb1\x93\xca\x5b\x3a\xdb\x4e\x5b\x9e\x37\xf5\x97\x81\x29\x07\x17\x3c\x30\x49\xfd\x97\xd0\x4f\xb8\xa7\xbb\xc5\x90\x76\xde\x17\x43\xe5\xb5\xea\xe9\x97\x76\x6c\x56\x6f\x2e\x5a\xa1\xd3\x88\x4e\x33\x38\xa1\xf0\x79\xa0\x32\x8e\x1c\xed\x2e\x15\x47\x48\xdb\xe2\x91\x8d\x60\x4a\xcc\x5b\x8b\xf2\x15\xbf\x89\x56\xd1\x74\x8a\x24\x77\x00\xee\x55\x0c\xe9\x7d\x5b\xcf\x3d\x33\x85\x3c\xba\x2e\xc1\x06\xf9\x01\x4e\xc9\x02\x67\x1d\x28\xde\x12\x69\xdf\xcc\x5a\xef\x2e\x60\x87\x2c\xd9\x20\x81\x2b\x42\x27\x86\x7a\xc4\x7b\xa2\xef\x56\xf0\x2d\xa8\x13\x48\xeb\x09\xc3\x7d\x4a\xdb\x85\x07\xa3\x0b\x06\xbb\x14\xd9\xf6\x44\x30\x6b\xb6\xed\x44\xe4\x81\x39\x11\x42\x98\xdb\xf6\x84\xcb\x34\x2e\xd2\x44\x7e\xd4\x53\x24\x56\x38\xb0\x27\x27\x22\x20\xf8\xf0\x03\xd0\x6f\x55\x63\xd9\x93\xb8\xae\x8f\xcc\x61\x75\x6d\xbd\xb0\x70\xda\xe9\x44\xf8\x69\xe0\xa6\xc0\xf9\xdd\x91\x09\xad\xeb\x49\x6c\xdb\xcc\xdb\xbb\xf7\xcc\xd9\xe3\x2d\xa6\x50\x3d\x2e\x49\xe8\xf1\xba\x76\x62\x8f\xba\x45\x5d\x47\xc8\xf3\x03\x37\x71\xef\x40\x23\xdc\xb6\x43\xe7\x0e\x97\x32\x67\x84\x4e\xb7\xe4\x9e\x39\x25\xde\x21\x1c\x39\xb7\x58\x4c\xac\xf8\xb0\x21\xb7\x7d\x40\xd8\x08\xc6\x32\x27\xb7\xfe\x06\x66\xb4\xf4\x77\xfe\x26\x10\xbc\xe5\x9d\x7a\xca\x11\x98\x35\xc8\xeb\x22\x41\x7b\xcb\x07\xd1\x00\x18\xf2\x94\xa3\xf5\x95\xb2\xbe\x5b\xb9\x06\x77\xfe\x46\x54\xb4\xe2\x40\xe9\x48\x0d\xb6\x5b\x9c\xa1\xe6\x37\x8a\x3b\xb7\x84\x7b\x7f\x71\x62\x9c\x23\x77\x2b\x92\x6e\x66\x4b\xdb\x76\x62\xff\x56\xf4\x30\x11\x3f\xa2\x7b\x72\x87\x96\x30\x60\xb8\xa5\x2f\xf5\x75\x5a\x81\x75\xfd\xc8\x2d\x11\xe6\x9e\xea\x41\x82\x4b\x9c\x21\x57\x9b\x67\x24\xb8\xec\xa9\x6e\x3f\xf6\x91\x23\x86\x83\xce\x74\x93\x11\xcd\xf5\xe5\x91\x0f\xf2\x7a\x81\xbb\x05\xe8\x26\x75\x6d\x7c\x12\x67\x21\xce\x40\x6b\x60\x81\x37\xe4\x70\x81\x2d\x06\xaa\x32\xc5\x93\x05\xc2\xf9\x85\x4c\x7f\x71\x18\x96\xfc\xae\xca\xb8\x25\xbe\x29\x10\xe9\xf6\xf9\x24\x11\xb0\x5b\xd7\xe1\x84\x90\x5b\x71\xe4\x38\x8c\x84\xa8\x83\xb4\x8d\xca\xee\xe6\xea\xa1\xf3\x06\x26\x45\x02\xbc\x09\x56\xf1\x4d\xb6\xca\x94\xf7\x87\xfe\x58\x33\x35\x56\xb4\x25\xfe\x81\x39\x15\x73\xb6\x08\x87\x48\x8a\xc7\x4e\x2a\xbf\x3c\x14\x8d\xdc\x6a\x9a\xe5\x5d\xa6\x48\x55\x87\x1c\xc2\xa1\x7f\x0c\xe4\x4c\x73\x32\x9d\x66\x3d\xef\x1f\x66\xbb\x5c\xb7\xdb\x93\x7c\x3d\x30\x27\xbb\x59\xda\xb6\xec\x06\x3c\x8a\x73\xad\x95\x13\x67\xb3\x25\xd2\x9e\x05\xd4\x39\x6b\x5d\xc9\xcb\xa2\x6c\xf6\x52\x56\xe9\x59\x2f\x2c\xd7\xb2\x1a\xc3\x5d\x92\x36\xa8\x09\x31\xbf\xc9\x6c\xfb\xb1\xab\x32\x13\x88\x06\xc7\x37\x5c\xa6\xb6\xa2\xe7\x36\x15\x8e\x55\xd4\x6c\x35\xed\xaa\x4f\x68\xe8\x61\x07\x60\x4f\x7d\x83\x91\x56\x8c\x62\x18\x9f\xdc\x2c\x70\x4c\x86\x28\x06\x6f\x64\x99\x1c\x6f\x41\x0c\xbd\xc0\x77\xc4\x5a\x58\xb8\x24\xb1\x6d\xfb\x01\x3e\x88\x9d\x55\x91\x5b\x7c\x14\xa8\x06\x74\x55\xb5\xba\xae\x23\x50\xce\x06\xe1\x7b\xf2\x30\x25\x92\xe1\xa8\xbc\xa5\xdb\xf3\x18\x55\xd7\xf3\x25\x7e\x24\x47\xbd\x27\xc5\xba\x6c\xa4\xd3\x2e\xa9\x6a\x90\xa0\xd5\xdd\x84\x90\x47\xdb\x56\x0e\xb6\x72\x72\xf4\xef\x02\xb4\xba\x9b\x4e\x25\x5e\xb0\xed\x1c\x9d\xb6\xad\xa1\x61\x41\xa8\xbf\x9d\x4e\xe1\xc8\x2c\x1c\xb1\xf1\x52\x84\x4e\x8a\x5e\xcb\x91\x92\xc8\x8a\x36\x1e\xc8\x3d\x6a\x42\x10\x7f\x92\x49\x21\xaa\xb1\xed\xfd\x6c\x86\x63\xdb\x2e\x75\x76\xc0\x44\xfb\x29\xb9\xc3\xa1\x6d\x8b\x8e\xec\xfb\x6d\x31\xd9\x56\xe1\x94\xf8\x00\x4d\x75\x37\xe0\xfb\x9b\x85\xd2\xe1\xba\x9b\xcd\x50\xe9\xdf\x05\x75\x7d\x80\xbf\x8e\xf8\x21\x5f\x4a\xb5\x88\x0c\xa1\xd5\x41\x20\x92\x03\x6a\x34\x76\xc8\xf0\x01\xe1\x8d\x6d\x0b\xa4\x7c\x68\x57\xc7\xb6\xf7\xad\x6f\x13\x01\x78\x3d\x15\x03\x27\xeb\xae\xf0\xe5\xd8\xf0\x2d\xa9\x10\x2e\x9b\xf6\x38\x04\x79\x20\x72\x63\x9d\x2f\x25\x89\x54\xaf\xca\xf2\x71\x5a\x5b\xe9\x28\x80\xfb\x92\xd7\x06\xa5\x3d\x89\xd1\x49\xde\x9d\x25\x60\xf0\xd7\xc1\x93\x56\x27\x9a\xcd\x50\x4c\x1e\x99\xc3\xfc\x30\x40\x38\xf6\x8f\x81\xd7\x6a\x21\xb8\x5c\x3f\xad\x62\xf2\xda\xa1\xf8\x49\x9c\x70\xe2\xdc\x8b\xdb\x8b\x76\x42\x0d\x05\xe7\xac\xbb\x82\xef\x9b\xe5\xc2\x39\x2a\xba\x6a\xf8\x84\x20\x63\xce\x99\x6c\x9b\xe2\x82\x88\xd9\x4c\x1c\x4a\x76\x6d\x33\xe2\x6c\x91\x3a\x54\x1c\xee\x0d\x04\x89\xa5\x6d\xf4\x60\x0d\x6f\x49\x21\x68\xa8\xc2\xb8\x21\x45\x58\x9f\x67\x37\x2f\x6d\xdb\xfa\xfa\xad\xd8\xdd\xce\x06\x2e\x18\x90\x62\xaf\x5b\xa3\x02\x69\x93\x62\x1a\x60\xed\xc5\x0e\x69\xd1\xcc\x2d\xdc\x6c\x03\x9a\x01\xa5\x3f\xd2\x19\x21\x38\x1b\x8d\xb3\x4c\x36\x41\x89\x31\x19\x12\xfd\x45\xfe\x22\xc0\x93\x56\x09\x8d\xaf\x76\x70\xf5\xdb\x93\xce\xe1\x0e\x65\xdc\x6a\x46\x40\x12\xd6\x7a\x9c\x4d\x46\x7e\x9e\x9b\x46\xe3\xda\xfc\xd0\x5b\xb8\x83\xa3\x3b\x9b\xcd\xa0\x9f\x62\xb4\x59\x80\x8d\x81\xe4\x64\xd3\x43\x97\x82\xd6\xdd\x12\x39\x18\x3f\x87\x93\x35\x26\xdb\x8f\x8e\x49\xdb\x3d\xde\xea\xe3\x6d\xdc\xfe\x51\x59\x7b\xde\xea\x03\x37\xc3\x4b\x31\xc8\xb8\x55\x32\x2d\x19\xd8\xd6\xd2\xa1\x7d\xa9\x80\x16\xcc\xf5\x8d\x8c\x82\x2f\x67\x57\xd7\xa9\x43\x71\x81\x90\x13\x83\x02\x12\xe6\xf8\x37\x2c\x30\x11\xe6\x0d\x36\xd5\x72\xc8\x51\x5b\xf3\x59\x48\x2b\xe5\x28\xf5\x56\x30\xbd\x38\xe2\x73\xd5\x1e\x32\x99\xe4\x78\xeb\x20\xdc\xd7\x78\xbc\x60\xf2\xb2\xfc\x88\x02\xe9\xb8\x55\xe3\x88\xaa\x76\x4b\xb8\xf7\x15\xf0\xd3\x92\xc7\xe4\xf9\x1f\xa4\xfa\xbd\x85\xad\x3f\x48\x41\x51\x27\xa3\x1b\x48\x88\x44\x7e\xc1\xa9\xd6\xf5\x86\x49\x79\x51\x0d\xb2\xd1\x94\x67\x49\x5a\xd5\x0f\x59\x54\xa5\x16\xbe\x70\x37\x1d\x7a\x52\xa1\xcb\x1d\x6a\x6e\x61\xab\xbd\x42\xed\xcb\x9b\xbc\xa5\xfb\x52\x5a\x31\x75\xba\x5f\x67\x3a\xcd\xa3\x43\x03\xc1\xd8\x35\x98\x00\x18\x83\xe9\x2b\x98\xc3\x4e\xb0\xc0\x51\xa1\xf5\x1b\xe3\x96\x59\xdb\x81\xab\x92\x97\xc6\x59\xd7\x4a\x30\x37\xb9\x2c\x98\xeb\xe6\x42\x9b\x9e\x81\x62\xd2\xa5\x85\x53\x1e\xc2\x06\xdd\xea\xd4\xd2\x55\xcf\xbe\x39\xeb\x93\xf4\xd5\x75\xb6\x02\x3e\x0b\x40\x52\xeb\x0d\x66\xdc\x75\xa2\x8b\x3a\x74\x91\xa1\x43\x17\x99\x3a\x74\x08\x27\xac\x71\x28\x5a\x6d\x61\xcf\x93\x03\xf8\x8d\xdc\x97\xe4\xd0\x69\x4f\xa9\x24\xdf\x72\x2d\xe9\x87\x72\x5f\xb6\xd2\xa0\xad\x3a\xcb\xc8\xc1\x38\xd4\xf0\x16\xee\x66\xc8\x41\xeb\xa1\x81\x07\xa8\x9f\xbf\xfb\xf6\x6d\x11\x92\x83\x7c\xc4\xdb\x4e\x05\xf2\xd0\x3e\x82\x76\x62\xa5\x1b\x01\xa4\xd3\xc3\x71\xf8\x48\xae\x3f\xbc\x02\x57\x12\xeb\xc3\x8b\xf5\xb5\x77\xe3\x78\xee\xab\xf5\xf5\x7a\x79\x53\xa3\x67\xd7\xf8\x9e\x5c\x7f\x98\xfb\x1f\xdc\x3f\xac\xfd\xf5\x1c\x07\x2f\x9e\x5d\x77\x82\x8c\x07\x3d\xaf\x59\xec\xf4\x3c\x52\xb1\xf6\x5e\x65\x3b\x4f\x4a\xbe\xef\x29\x8c\x08\x82\x59\xdf\xfd\x6b\x77\x71\x38\xc2\xa0\x52\x19\x36\x70\x0c\xb1\x33\x6d\xd0\x91\x7a\xfa\x64\x7c\x57\xf8\xdc\x81\x16\x74\xf0\xbe\xd5\x5b\x6d\xab\x94\xc4\xb2\x76\xd1\xc6\x88\x99\xd2\x12\x11\x1f\x6b\x79\x3b\x57\x5e\xe1\x80\x58\xb8\x21\x0b\xd9\x8b\x46\x57\x74\xc1\x79\x06\xf3\x17\x81\x71\xb5\xe3\x50\x62\xb9\xbb\xa2\x72\x40\xd7\x06\x59\x08\x4b\x09\x87\xc6\xe3\xa0\x41\xd1\xb1\x11\x12\xae\x86\xda\xba\xa0\xd2\xe2\xf9\x51\xe0\xfa\x81\xdb\xcf\xe2\x50\xac\x06\xc1\xc6\x06\xd1\xb7\x94\x06\x6f\xbf\x86\x67\x5a\xe7\x04\x3a\x7b\x63\xca\x5b\x70\xf7\x0a\x3e\xc4\x38\x89\xf4\xf9\x68\x2c\x40\xa7\xd3\xa3\xa7\x7c\xe8\x86\xd8\xa1\x48\x4f\xb9\x21\x41\x07\x79\x2b\x59\xac\xb8\x92\x82\x01\x74\x75\x16\x06\x3e\x0b\x30\xb8\x61\xee\x44\x33\x4a\x30\x68\x16\x92\x53\x20\x20\x4b\xe4\x37\x64\x21\x64\xd0\x09\x7e\xb3\xf4\xf4\x9e\x73\x42\xe4\x86\x70\x12\x69\xf2\x0b\x32\xeb\x37\xaf\xf7\x36\x05\x3d\x3e\x97\xe2\xb0\x55\x03\x1b\x99\xdd\x41\x6b\x0f\xca\x35\x32\x50\x59\x93\x25\x02\xcf\x93\xa3\xb7\x2c\x1f\x2d\xb8\x40\xe0\x9a\x75\xec\xe2\x67\xa2\x72\x9e\xeb\x61\xd9\x76\x47\xd1\x88\xa9\x77\xdb\x5e\x68\x2b\xd0\x46\x2a\x33\x3f\xe2\x27\xd3\x5b\xd8\xaf\xd2\xf1\xcc\xfa\xf0\xc2\x79\xe5\xaf\x1f\xd6\x3f\x05\xd3\x1b\xe4\x7f\xb8\x09\x5e\xd4\xca\x19\xcd\x0b\xf0\x3d\xf3\x9a\xb4\x3e\xc4\xc7\xa9\x68\xe9\x7b\xd5\x04\x86\xd1\xfd\x2a\xc5\x1c\x21\xb1\x5e\xc9\x83\x28\x4c\x69\xf9\xba\x72\x16\xc8\xb6\xad\x9b\x5e\x92\x66\xd8\x66\x4b\x04\x77\xa7\x92\x1a\x25\x9f\x78\xbe\xe4\x77\xe1\xe2\x3d\x70\x7f\xd5\x7e\x49\xf0\x24\xac\xeb\x49\xe8\x2f\x03\xdb\xd6\xd4\xe2\x84\xd5\x35\x9b\x4b\x8f\xe3\x9e\xc3\xea\xfa\x11\x29\xd0\x41\xee\x99\x9b\x67\xd6\x7e\x03\xc1\x8f\xf6\x6f\xc2\x08\xbb\xca\x76\x87\x8a\xee\x42\xf0\x4e\xef\x89\x1d\xee\x32\x6c\xba\x02\xc7\xdb\x39\x38\xbb\x15\x67\x32\x94\xc4\x4c\x6b\x24\xc1\xb6\x1e\x71\xe3\xf2\x04\x0b\x8d\x8f\x4a\xb9\x51\xb4\x76\xee\xd3\x98\x49\xd7\xca\xd2\x55\x24\xea\xa1\x61\xe5\xda\x1a\x79\xea\x41\x72\x21\x72\x54\xa0\x06\x17\x62\x48\x31\x9d\x64\x37\xe0\xc6\xf3\x69\x68\xb7\x1b\xfa\x2f\x03\x84\x23\xb0\xc0\xec\x68\xc0\x13\xc8\x0a\xb2\x48\xa0\x3d\xc3\x39\xca\x63\x3b\x49\x86\x63\x6e\xb2\x84\x5d\x2b\xb8\x88\xd6\x68\xd3\xf4\x74\x4e\x9e\x70\x6f\x7b\x11\x0a\xef\x4d\x4f\xeb\x11\x66\xca\xe9\x15\xd3\x95\xca\xec\xfd\xc6\x90\x3b\x74\x94\x38\xa6\x72\xf8\x38\x2f\x39\x8d\x9e\x3c\xf5\x0b\x3b\xc3\xd9\x22\xb7\x73\x80\x49\xdb\x5e\xd9\xb6\x33\xe8\x65\xfb\x88\x7b\xdd\xa2\xfa\x09\x09\x28\xd0\x1e\x4b\x1d\xaa\x50\x57\xb3\x7a\x6d\xdc\x0a\x89\x7d\x83\x1f\xc9\xd6\x79\x92\x1b\xf0\x73\xb9\xe3\xe4\x4c\x1f\xea\x7d\xc9\xef\x1d\xcf\xfd\xfb\xae\xca\xf2\x1a\x8c\x4b\xaf\xf1\x1b\x72\x02\x9d\xad\x92\xef\xe0\x82\x4b\x6a\x6d\x1c\xc4\xf3\x8e\x3f\xc2\x25\x95\x28\xe6\x4e\x16\xcd\xaa\x73\x5c\x1d\x65\xe5\xb8\xdb\x4c\xc9\xe0\x0a\x4a\x48\x4b\xa9\xa5\xf7\x1f\x6e\xba\xcc\x68\x1d\x08\x87\xd2\x20\x8c\x9b\x06\x61\x5b\x87\xa3\x79\x76\x00\xf7\xdc\x4b\xd2\x2f\xa9\x58\x5e\x8e\x30\x27\x5c\xb4\xd1\x5e\x65\xe0\x83\xbc\xec\x76\x2f\xdd\x4a\xfa\xc1\xc8\xcd\xf8\xd0\xb9\x07\x9d\xc0\xfd\x71\xa8\x7c\x85\x1a\x82\x6f\x70\x36\x69\x1c\x66\x29\x3d\x8c\x9e\x65\x5b\xbd\x32\x10\x81\x41\x9d\x65\x26\x94\x5e\x3e\xa6\xa2\xd1\x63\x4a\xfa\xd6\xf4\x59\x60\x1e\x53\x0d\x0e\xf3\xe2\xc0\x4d\x2f\xf7\xfd\xe1\x2a\x93\x29\xd3\x9f\x7d\x2c\x96\x26\x21\x2d\xea\xae\xeb\xf3\xf3\x55\xa0\x73\xcc\x3a\xb7\xf4\x00\x77\xee\xa2\xbd\x14\x00\x04\x21\x77\x4a\x14\xac\x42\xdb\x0e\xc5\x84\xad\x86\xc6\x4e\xb1\xd3\xd9\x5a\xbf\x5a\x2e\x6d\xdb\x49\xbc\x44\xea\xbe\x28\x35\xd3\xa1\x3d\xf6\x05\x5a\x04\x9c\xe6\xa2\x53\xdc\x5e\x23\xf7\xae\xcc\x06\x27\x5b\xdc\xdd\x9f\xb4\xe7\x70\x8c\xdc\x18\x54\x10\x22\xfe\x38\xaa\x8b\xe1\x8d\x38\xee\xed\xa8\x31\x85\x13\xb0\x38\xe5\x00\x07\x68\x2a\x4d\xe3\x79\x2a\xf0\xb3\x5a\x71\x57\xe5\xb6\x6d\xf5\x60\x7a\x25\x50\x6b\x5f\x1e\x2a\x07\x41\x04\x80\xd7\x79\xee\xe8\xf3\xd2\x9d\x2d\x1b\x4c\xa3\x68\xdc\x67\xf4\x59\xcc\x05\x35\xb6\x5e\x7c\x88\x84\x57\x0e\xc2\xb0\x7c\x08\x1c\xae\xd2\x28\xfa\x7c\x18\x57\xc2\xac\x90\x46\x91\xa3\x3d\x24\x0f\xc2\x12\xb8\x83\x77\x0d\xb3\x14\xa1\xc6\x74\x77\xfa\x56\x76\x33\x2a\xae\xa8\xb9\xe3\xa9\x6d\x2f\x27\xe6\xbe\x32\x2e\xdc\x95\xc3\xd6\xd3\x88\xbe\x89\x56\xf3\x38\x37\x20\x65\xca\xc8\xcb\x3c\xe4\x94\x9d\x91\xc2\x6c\x63\xa3\xdc\xce\xa3\xac\x74\x28\x36\x2f\x30\x51\x5b\x02\x70\xe0\x25\x7d\xef\xb1\xa2\x38\x14\x24\xd6\x50\x6f\x44\x15\x10\x33\xd1\x53\xbf\x45\x8d\xc4\x9a\x97\xf2\x0e\xd5\x8c\x55\xdd\xaf\xf3\xfc\xa3\x43\x19\x69\xe2\xb7\x8a\x5c\x68\xe9\xf7\x8d\xdf\x6c\x0f\x26\x40\xd4\xf6\x3b\xa7\x6e\xa8\x48\x2d\x8a\x2b\x24\x7d\x61\xbd\xd4\x57\xc7\x31\x81\xa0\xae\x4f\x0d\x32\x64\x08\x82\xa3\xc2\xed\x89\xf5\xd1\x7a\x4c\xd1\x83\x28\xa4\x8f\xb6\xd1\x42\x5a\xa0\x20\xfa\x9e\xc5\x25\xb8\x7a\xf1\xd4\xe1\xbb\xab\x0c\x8b\x3d\x9d\x24\x5d\xf6\xb6\xd4\xad\xab\xb7\xa3\x1f\x60\x6a\xfa\x0b\x6c\x9a\x81\x53\x61\x71\x8e\xf8\x34\xe8\x48\x5b\xe3\xea\xc7\x08\xa8\xc2\x3a\x66\xc3\x82\x29\xef\xe9\xc9\x7f\x86\xe0\x7e\x33\x04\x5a\xea\x0c\x87\x45\x70\xd1\xd9\xb2\xa1\x70\xb7\x6a\x92\x35\x37\x02\x27\xbf\x01\x7d\x61\xc8\xa7\x30\x8a\xc8\xf5\x79\x27\xa9\x73\x38\xe1\xf3\x92\xdf\xf3\x12\xd4\x94\x54\x0d\x06\xc7\x83\x34\xa1\xff\x05\xb9\x5e\xbf\x9b\x5e\x27\xf8\x4b\x72\x32\x14\x14\xfe\xdc\xed\xeb\x2f\xc5\x88\x4f\xad\xe8\x5c\xe1\x01\x2a\x31\xbe\xf3\x05\x48\x5f\x71\x5f\x3f\x18\x9c\x95\x8b\xd3\x0e\xb3\x66\x3b\x7f\x43\xf3\x9c\xd1\x70\xd3\xf7\x66\x4c\xc9\x08\xfe\xfe\x12\x06\x26\x1a\x77\x3b\x8a\xa5\xc1\xca\xc2\xb2\xe7\xfc\x58\x9c\x89\x19\x99\xd0\x79\xb1\x0b\x39\x5c\xbf\xdc\x76\xf5\xe7\xf2\x40\x0d\x09\x9d\x6f\xf9\xb6\x28\x9f\x6c\x3b\xc7\x11\x99\x2c\x70\x4c\x92\xba\x5e\xe0\x04\x0e\xd9\xb4\xf5\x38\x45\x26\x8b\x55\x6a\xdb\x5c\x39\x05\xcf\x62\x27\xf5\x63\x7d\x73\x96\x8b\x83\x24\x17\xb4\x37\xe8\x2f\x82\xe5\x61\x55\xec\x7f\xd8\x7d\x49\xf3\x03\x47\xa7\x90\x4c\x96\xea\x7c\x83\x80\x24\xa9\x6d\x3b\x99\x97\xb5\xdc\xfb\xad\x93\x69\x71\x33\x72\x43\x4f\x74\xdd\xdd\x68\x35\x47\xd0\x22\xdb\x90\x53\xef\x10\x91\x8e\x12\x35\x61\xa6\xbb\xb9\x6a\x83\x65\x5d\x81\xaf\x79\xb5\x14\x6c\x10\xc1\x47\x16\x52\xbe\xab\x43\xb4\xea\x79\xad\x8e\x3c\xaa\x60\xc6\xb6\x37\xf3\x94\x1e\x20\xba\x4a\xaa\x8f\x69\x17\xf4\x4c\x75\xc7\x3b\x32\x83\x44\xb6\x1d\x3b\x21\x6a\x50\x63\xb8\x07\xc7\xcc\xeb\x26\xd1\x85\x98\x29\x24\xc2\xb7\x82\x00\x34\x4f\xfa\x06\x4b\x87\x70\x23\x61\x75\x52\x41\x40\x48\x80\x6a\xbd\x96\x8f\xe8\x9a\x6b\x75\x5b\x31\x2c\x7d\x92\x87\x38\xc5\x11\x12\x34\x09\x4a\x5b\x03\x4e\xbc\x44\x82\xa9\x72\xf8\x8d\xe8\x31\x9f\xcd\x70\x0c\x4f\xf1\x6c\x86\x1a\xb9\x0d\x1a\x3c\xa4\x00\x5b\x8a\xc2\x14\xe6\xa4\x40\xed\x4c\x1c\xe5\x98\x52\x5f\x10\x0c\x35\x39\xbb\x91\x68\x23\x56\xd9\x86\x5a\xdd\xd1\x8c\x19\x09\x89\x24\xa4\xfb\x99\x47\xe2\x0e\x4d\xd2\x06\xe7\x85\x49\x0c\x74\x7e\xd6\x74\x1d\x61\x5d\x1b\xd0\xa4\xaa\x14\x85\x46\x2b\xcc\x40\x67\x91\xff\x94\x55\xbd\xb0\x14\x9d\x87\xbf\xb4\xae\x23\xdb\x9e\x64\xa0\x30\x15\xc2\xee\x06\xd3\x01\xa5\x7e\xec\x69\x35\x64\xe4\x86\x01\x66\x5e\xd6\x82\x0e\xac\xbb\x6a\x5e\x34\x31\xd2\xe7\xcd\x5c\xb7\x3d\x8c\x0f\x65\x94\x1b\xeb\xf5\x24\x6a\x5a\x0c\xb4\x31\xe3\xf0\xbc\xe5\x31\x2f\xcb\x51\xf5\x60\xdf\xb7\x4a\x7e\x28\xf2\x7b\x6e\x61\x2b\x2a\x76\xdc\xc2\x06\x32\x72\x2c\x81\x38\xae\x24\x7a\xb0\x10\xd6\x79\x23\x2b\xc0\xa2\x20\xf8\xc8\xc4\x56\x4c\xb3\xfc\xb7\xca\xdd\x82\xa6\x2f\x94\xdb\x15\x55\x16\x3f\x59\xe2\x10\x2d\x92\x92\x1f\x0e\x83\xb2\xba\x58\x20\x26\xd5\xda\xf3\x5d\x04\x27\x6c\x44\x4e\x87\x8a\x56\x63\x53\x16\x36\x98\xe6\x0f\xf4\xe9\x30\xf2\x8d\xcf\xc5\xb0\x8c\x0d\x39\x17\xdd\x75\xce\x66\xb5\x4a\xcd\x03\x57\xbb\xa5\x6c\xb3\x75\xa8\x5d\xcf\xa6\xe1\xa6\x6f\x1c\xcd\xa8\xcb\xc6\x84\xf4\xb9\x6b\xc1\xec\xd8\x36\x50\x94\xdc\x8f\xfd\x65\x10\x38\x67\xcd\x26\xb6\x9d\x8c\xc7\x08\x5b\xa9\x78\x4d\x5d\x7d\x82\x41\xde\x66\x07\x2e\xce\x73\xf5\xe8\x20\x39\xe8\x70\xae\x16\x4c\x0d\x5a\xbc\x8b\x85\x10\x34\xba\x9c\x7a\x60\x65\xc4\x72\x20\x37\xf4\x63\x7f\x11\x4c\x2d\x01\x79\x56\x00\xed\x02\x2e\x0c\xbb\x5a\x65\x4c\xbe\x44\xc6\xfe\x68\xbb\xd4\x08\xac\x41\xa5\xff\x4a\xd4\x65\x16\xe4\x14\x3c\x7e\x2c\x9e\x5c\x0b\xa4\x14\x47\xc8\x8d\x9a\x06\x73\xe3\x1c\x8d\xe6\xfb\x0c\xb4\x41\xc5\xe2\xe0\xf3\x39\xa6\xdd\x1c\xc7\xfe\xcb\x00\xa7\xe0\x43\x76\x15\xc9\x69\x25\x89\x60\x03\xc4\x49\x03\x0f\xe6\x2c\x87\x24\x6d\x30\xf3\x97\x1f\x68\xe0\xbf\x0c\x34\x62\xc0\xcc\x7f\x09\xef\x02\x31\x20\xcc\x61\x42\x82\x91\xe0\x10\x7c\x74\xaa\xb8\x17\xb9\xe3\x3b\xb6\x9f\x9f\x24\xed\x0e\x07\x77\x65\x7a\xc6\x38\xc2\x14\x4c\x3f\x69\x9e\x3b\x1c\x73\xb8\x37\x7c\x48\xf9\x98\xbe\xf8\x02\x9f\x87\xb2\x40\x10\x0c\xb1\xe5\x87\x41\xf4\x50\xd7\x1f\x81\x17\xee\x8a\x43\x1e\x4c\xed\x3d\xea\x1a\x90\x8d\xc4\x4c\x8e\x53\xc0\x6d\x32\x17\x24\x0c\x0d\x88\xe2\xe0\x69\x70\x16\x68\xed\x66\xe9\x9d\x75\xd1\xe5\x60\x31\x92\x79\x89\x82\x3b\xc0\x73\xa2\x01\x77\x36\x8b\xeb\x3a\xd1\x10\xdb\xa6\x37\x8d\xd4\xdd\x85\x7b\xf7\x9b\x25\x30\xe9\x19\xe8\xff\xca\x53\x88\x23\x7c\xdb\x7f\xdd\xf4\x5e\x5b\x51\x77\xe8\xb3\x60\x30\x17\x22\xa9\x9b\x0e\xf3\x4d\xef\x20\xd1\x87\x0d\x0e\x91\xda\x40\xc9\xf9\x06\x12\x39\x6e\x71\x86\x60\x00\xad\xbf\xbb\xe1\x48\x44\x1d\x38\x31\x36\x87\x22\x2d\xbf\x82\xb0\x8e\x52\xa2\x46\x46\x29\x77\xf8\x34\xec\x16\xd5\x90\xd5\x21\xf9\x36\x6e\xda\x12\x43\x91\x9f\x68\x56\xb9\x4b\x9c\x16\x79\x24\x3f\xf4\x08\x4b\x4f\x55\x2c\x72\x4d\xa7\xae\x7a\x73\x26\x0b\xd4\xc8\xe2\xc3\x50\xa0\x54\x5e\xfd\x4d\x66\x33\xa3\xa4\x0b\x81\xca\xa0\x7a\x19\x2f\xf4\x69\xce\x8a\xe8\x49\x0b\x38\x0f\xbc\x7a\x9f\x6d\x79\x71\xac\x1c\x55\x08\xad\xda\x02\xe0\x77\x77\x22\x2a\xb5\xed\x5e\xa5\x37\x8b\xba\x76\xbe\xea\xcd\xde\x13\xf6\xb7\x81\x12\x51\x55\x65\x96\x24\x5c\x39\x4b\x28\x6d\xdb\xd9\x3a\x4f\x68\x90\xea\x58\x50\x9b\x85\x30\x7c\x2c\xe2\xb8\x4d\x11\x4c\xbe\xc9\xe5\x7f\xed\xa0\xd3\xd3\xb9\xb7\x4e\xe7\x49\x39\xe8\x1d\x78\xec\x7c\xfb\xc3\x77\xca\xf2\xeb\xdb\x82\x46\x3c\xb2\xf0\x5f\xf0\x64\x89\x30\x1d\xcf\x2e\xfd\x75\x42\x16\xe4\x3a\x4f\xf3\x88\xf7\x1c\x7a\x42\x9f\xe0\x50\x0b\x53\xba\x4b\xb8\x85\xff\x22\xaa\x1a\xe4\x52\x95\x20\x43\x3b\xeb\x2f\x0e\x3a\x39\xe7\xdd\xae\x6b\xd9\xa2\x40\x46\x22\x5d\x5b\x87\x84\xc5\x76\x9f\xf3\x0a\xae\xcb\x9f\xe4\x4c\xbf\x13\xad\x0a\x2e\xe8\x6b\x47\x4c\xac\x5c\x7e\xd0\x0b\xeb\x01\x1c\x31\x0d\xb1\xc4\x0a\x7f\x25\xe8\xfe\xaf\x48\x0f\x59\x5c\xae\x7f\x0c\x02\xb4\x6d\xeb\x79\xf7\xd1\x79\xd2\xc7\x66\xfc\x3c\xaf\x31\xdd\x52\xdd\xef\x69\xe8\x42\xf5\xc2\x8c\x0f\x72\xe9\x19\x97\x0e\x9a\x88\x0a\x67\x17\x12\x7d\xa3\x0e\x0c\x74\x6b\x13\xf6\x34\x74\x17\xa6\x5c\xf2\x44\xe8\xd4\x00\xab\x10\x15\xef\xc2\xb2\xc8\x73\xdb\xee\x98\x13\x2e\xf9\x17\x73\x03\x41\x1b\x6d\x66\xc7\xca\x79\x5c\x59\xda\xbb\x74\x87\x12\x8c\x39\xe5\xf8\xb3\x05\x6a\x7a\x2b\xd8\x34\x4e\xcb\x57\x7c\xd5\xa2\x0d\x86\x1a\x18\xcb\x37\xa6\xdf\x4d\xfc\x2d\x5c\x07\x7e\x7b\x95\xed\xae\xb6\xce\x46\xdb\xec\xb6\xa1\xf3\x88\xb5\x10\x5c\xcd\xb7\x78\x33\xcf\x76\x79\xb6\xe3\x9f\x8b\x73\xf1\x7b\xce\xa3\xc3\xb7\xf4\xa9\x38\x56\x82\x8f\xdb\x9e\x11\x2f\x52\x69\x79\x15\xf6\x6e\x47\x4c\xb7\xaf\x02\x45\x58\xa0\x8b\x24\x0d\xf6\xaa\xa7\x9c\x83\x22\xd2\xd3\xa8\x66\x0a\x8e\x2e\x7e\x90\x65\xe7\xe1\xe1\x00\x4e\x67\xac\xbd\xd2\x71\x71\x29\x3b\x14\xf9\xb1\xe2\x2b\x56\x94\x11\x2f\xdd\xc5\x0a\xd4\x4c\xdc\xc5\x4a\x6a\x9d\xb8\x8b\x55\x55\xec\xdd\xc5\x4a\xcc\xb1\x3b\xfb\xd3\x9f\xfe\xf4\xa7\xfd\xa3\x85\xc3\x9e\x77\xc1\x08\x0d\x9c\x0d\xe2\xd6\x2f\xa8\x6c\xf7\xd7\xa2\xd8\x4e\x08\xf9\x46\x74\x7e\xd8\x95\x28\x3b\xec\x73\xfa\xe4\xca\x99\x5b\x6d\x69\x99\x64\x3b\x77\xd1\x75\x68\x4f\x23\x41\xd7\xba\xcb\xfd\xa3\xea\x9c\x78\x12\x55\xba\x4b\xeb\xf2\x94\x53\xf2\x09\xdc\x7a\x17\x71\x7c\xe0\xd5\x4f\xa2\xa0\xa0\x1a\x9c\xd0\xe8\x13\x59\x22\x84\xc3\x9e\x87\xf1\x08\x14\x7c\xce\xe8\xcc\xf1\x89\x5d\xa9\xf0\xa4\x84\x6c\xe6\xd2\x01\xec\x17\x32\x92\x27\x3a\x0d\x12\xc8\x64\x01\x5b\x43\xb9\x89\xa5\x20\x5d\x51\x10\xcb\x46\x72\x2f\x9b\x46\x11\x8a\x00\xb3\x34\x0c\xf9\xbe\x7a\x4b\x2b\x3a\xe2\x4b\x76\x3b\xdf\x15\xe2\x93\x6f\x98\xd0\x49\x9f\x0e\x03\xa7\x51\x21\x99\x9a\x01\x29\x5b\x8f\xe2\x4b\x19\xa3\xf4\x4f\xe2\xc7\x9b\x2c\x5d\xb8\xc2\x54\x27\xce\xa8\xbf\x8c\xd6\xf3\x2d\xec\x95\xef\xd4\x7d\xee\x49\x5e\xe6\xbe\x58\x37\xf5\xda\xd7\xcf\x01\x7a\x76\x8d\xbf\x27\xd7\x8e\xff\x7a\xf6\x5f\x01\xba\x4e\xba\x13\xe5\x07\x43\xdd\xa3\xbb\x0a\x1a\xba\x5a\x6f\x23\x84\x44\xb4\xa2\x33\x6b\xda\x39\x1c\xfb\x1e\x5b\xb3\x67\xcb\xe1\x30\xe1\x22\x75\xa8\xcc\x13\xa1\xf3\xfb\xeb\x50\x21\x12\x62\x55\xe5\x11\x30\x72\x08\x01\xb6\x62\x9a\x1f\xf4\xeb\xd2\xb5\xc4\x22\xc8\x37\x70\x1b\x33\x0d\xa7\x96\x7c\x9d\x86\xee\x77\xda\x4d\x8c\xa7\x2e\x63\xff\xf2\xee\x87\xef\x41\xf0\x61\x38\x1b\xdb\xce\x45\xcf\xd5\x58\xa5\x7e\xbb\xe6\xd8\x9b\x73\x83\x8a\x1f\x47\xe3\x92\x66\xb1\xe3\xc0\x04\x80\xa3\xef\xba\x06\x6c\x68\x44\x35\x95\xcc\x12\x18\x24\x16\xa2\x0f\x90\xad\xb3\x02\xf9\x9f\xff\xa3\xbd\x33\x6a\x1b\xfa\x6b\x17\x0f\x04\x6e\x9a\x3a\x10\x73\x28\x6a\xad\xd9\x71\x2a\x55\x7d\x04\x54\x82\x2d\x47\x1b\xea\xe3\x96\x64\xde\x56\xc6\x18\x70\x29\xde\x90\xcc\xa3\x7e\x1a\xb8\xe2\x8f\x6d\x83\xde\xc6\xc6\xb6\x6f\xfd\x0d\x18\x5b\xd4\xb5\x78\x82\x89\x40\x75\xdd\xde\x83\x46\x23\x97\x4f\xad\xd6\xe5\xa6\xae\x1d\x5d\x2d\x51\xc6\xed\x5d\xa8\x38\x37\x45\x58\xd4\x59\xd7\x8e\xf8\x21\x99\x77\x6a\xdc\x93\x1c\xbd\x2b\x76\x44\xb1\x6f\x10\x76\xce\xa2\x8c\xb2\xd1\x28\xa3\x10\x21\x94\x7b\x50\x53\x17\xc7\xd7\xdf\x04\x98\x21\xb7\xed\x7a\xff\x13\x24\x81\x13\x9f\x04\x6c\x2e\x30\xaf\x6b\x27\x81\xd4\xf6\x01\xec\x86\x12\x22\x5f\x10\xee\x06\x0e\x11\x81\xc5\xf4\xa9\x18\xa3\x0e\x43\x01\x19\x83\x52\xe6\x81\xaf\x00\x16\x60\x89\x68\x62\x50\xf8\x3c\x2b\x8b\x90\x1b\x93\x04\xc7\x86\x51\xd1\xdf\x7a\xda\x54\x23\xcb\x1b\x29\x53\x88\x76\x49\x13\x12\x1b\x4b\x9a\x0a\x66\xc7\x6f\x57\x3f\x70\xdb\x47\xb0\xc1\xf2\x53\xa5\xab\x20\x05\xd0\x9e\x48\x70\xc5\x1f\x39\x56\xc1\xe9\xeb\xd0\xbc\x0c\x79\x8c\x30\xad\xbd\x2f\x65\xdb\x0c\x1b\x23\x40\xc8\x05\x40\x8f\x3c\x46\x7c\x16\xb8\x10\x9f\xd9\x1c\x1f\x96\x1a\x11\x57\x91\x27\x3e\x33\x23\x52\x1f\x32\x8d\x96\x8c\x20\x0f\xca\x1d\xb7\xcf\x7c\x1e\xc8\x48\x94\xde\xe4\x47\x27\x42\xee\xd9\xd6\x69\xcd\xa5\x1a\x27\xac\x6b\xed\xc8\xbb\x1d\x09\xfe\x51\x8e\x15\xac\x92\x60\x7e\x72\x4e\x77\x30\x91\x3e\x05\xd5\x19\x77\x80\xbd\xeb\x3a\x99\x90\x44\xc5\x2f\xf6\x8c\xfa\x60\x7a\x88\x0c\xed\xdd\x34\x1d\x47\x22\x67\xfc\xd4\x60\x89\xc7\xdd\x93\x45\xf7\x82\x4c\xbc\xb2\xdc\xc9\x02\x5b\x7c\xcb\x78\xa4\x9e\x75\x14\x42\xd7\x0a\xf3\x43\x16\xb9\x6f\x5f\xfe\xaf\x37\x6f\x3f\xff\xe3\x17\xb3\xd7\x5f\xfc\xf1\xed\x6c\xb9\x0c\xe3\xd9\x9f\xfe\xf8\xf9\x7f\xce\x3e\xfd\xf4\xd3\xcf\x3e\xfb\xe4\xb3\x4f\x17\x8b\xc5\xc2\x02\x21\x25\xd4\x3c\xaa\xed\x46\x4d\x5d\x30\xe8\x8b\x6f\xae\xbb\xd8\xd3\xdd\x1b\x9e\x4c\xa8\x6d\x4f\x7e\x04\x03\xf0\xa8\x5f\x67\x8f\xff\xfd\xab\xc6\x78\x4a\x5e\xfb\x76\x98\xb7\xcd\xf9\x37\xe5\x2c\xf1\x97\xdf\x51\x1d\x06\xc6\xeb\x97\xdf\x55\x25\xe4\x1d\x5e\xd8\x9f\xb5\xd1\x6a\x13\xc1\x6e\xd0\x37\xbd\x89\xd8\x68\xb1\xa1\x19\xbb\x32\x0f\x29\xc9\xe9\x19\x17\x29\xea\x9e\x05\x10\x7d\x2c\xf5\xed\x62\xe3\x5a\x7b\xb2\x9d\xff\x22\xbf\xc1\x5d\xe2\x81\x47\xe2\x68\x3a\x08\x26\xeb\x14\xb6\x46\x65\x86\x8e\x7f\xe2\x87\xd2\x70\x4d\x3c\xcc\x77\x74\xcb\xf1\x02\xb4\xf6\x5a\xdf\x63\xf2\x34\x94\xb7\x3f\xe6\x5e\x89\x94\x40\xf5\x33\x84\xf0\x0f\xd2\x9e\xce\x8f\x04\xf4\xae\x2e\xf4\x01\x66\x49\x8b\x6b\xd4\xc3\x79\x6c\x66\x79\x37\x0c\x62\x25\x83\x36\x52\x23\x96\xb2\x1c\xd4\x20\x77\x44\xb2\xf1\xdb\x05\x21\xe4\xb2\x1b\x7b\xa2\xbb\x14\xeb\x59\xc4\x14\x19\x8e\xd2\xc7\xd6\x7b\x10\xd0\xff\xac\x89\xae\x50\xd7\x43\x09\x0f\x1a\x18\xee\x8e\xfc\xc8\x2f\x44\xe0\x6d\xe5\xf8\x0e\x23\x60\xe6\x17\x3f\x5a\x68\x6a\x41\x11\x0b\x8b\x49\xff\x45\x9f\xeb\x48\xd0\xe7\xe0\xd6\xd8\x8c\x2a\xef\xf5\xf2\xf4\xb4\x76\x42\x84\xdc\xd6\xf5\x3c\xc2\x10\x48\xab\x1b\x6c\xc4\xcf\xfb\x85\x4e\x10\x76\x4b\x74\x42\xf1\x5a\xdb\x39\xe4\x92\xed\x77\x4a\x26\x20\xda\x6a\xed\x92\x45\x0f\x20\xdb\x57\x45\xb1\x39\xb4\x0e\x76\x7a\x0b\xc1\xbb\x7a\x9a\x95\x95\xed\x5a\x61\xb3\x60\x8e\x01\xb0\xbb\x0a\xa3\xd9\x0c\xac\x28\x1d\xd1\x11\xa2\x94\x64\xb4\x4b\x5b\xb3\x2c\xc2\x0a\xef\xc5\x70\xbb\x85\xb9\x56\xcc\x4d\xc0\xe4\x72\x12\xd9\x36\x6c\x30\xb8\x00\x01\x29\x9f\x23\xf6\x75\xd7\xd7\xf1\x58\xcc\x6a\xfe\x21\x87\xd5\x49\x9a\xf5\x2c\x87\x40\x20\xb4\x6f\xf8\x24\xef\x57\x2e\x0b\xdc\x87\xe2\xce\xed\xdc\x40\x2d\xa2\x65\xbd\xe0\x02\x6a\xfa\x9f\x42\x19\x23\x66\x88\x5f\xc6\x96\x4e\x76\xfe\xe5\x20\x20\xef\xc4\x50\xa4\x74\x64\x24\x5e\x31\xab\x58\xec\x7f\x3c\xdc\x48\xaf\x42\x4f\x2f\xb8\x46\x51\x6d\x1c\x01\xf0\xd3\x26\x52\xdd\xd1\x8d\xd0\x07\x97\x76\xcb\xad\xfa\xa0\xa1\x76\x08\x56\x0b\x4b\x6d\xdb\x5c\x4e\x50\xc8\x5b\x80\x54\x50\xc3\x4b\xb7\xa5\x46\x00\xf6\xb7\xb6\xe6\x48\x25\xe2\x58\x2d\xff\xfa\xd1\x7a\x14\xa0\xca\x6d\x80\xfd\x60\x54\x72\x6e\x5a\x59\x2d\x31\xef\x0b\x60\x24\x82\xc7\x49\x4f\x23\x2a\x35\x37\xc4\x6c\x16\xd5\x35\xef\x09\xd5\x62\xec\xc7\x81\xd8\x1b\x97\x17\x4e\x2e\x04\xd8\x04\xa9\x4d\x6a\x04\x1a\x6a\xd1\x40\xec\x27\x01\xa6\x3d\x18\x46\x92\xb5\x07\x38\x15\xb8\x7c\x3a\xc5\xea\x0d\x40\xd3\xb0\x78\x4e\x1d\x84\xb9\x29\xa7\x50\x82\xd1\x77\xe4\xda\x9f\xce\x02\x4f\x70\x60\xd1\x8b\xf5\xbc\x46\xeb\x68\xea\x78\xae\xcf\xbf\x08\xe0\xc3\x3a\x9a\xd6\xe8\x5a\x05\xa2\xc2\xef\x89\x6f\xbd\x2f\xf6\x16\xb6\xfe\x26\xf8\x7b\x0b\x5b\x9f\x17\x55\x55\x6c\x2d\x6c\x7d\xcb\xe3\xca\x0a\xf0\xdf\x2f\xc5\xeb\x65\x75\x4d\xb1\xb5\x2b\x76\xc0\x1d\x6d\x05\x0b\x2f\x1d\xdb\x03\x03\x6f\x21\x60\x4b\x5a\x85\xb5\x81\x8f\x63\xd0\xd7\xf8\x07\x91\x84\xe8\xe1\x30\x90\x9a\xeb\x9b\x78\x65\xee\x3f\x66\x37\x4e\x48\x08\xda\xbd\xed\xd1\xd4\x5d\x4a\xa3\x13\x17\xfc\xb5\xe0\x97\x52\x41\x25\x86\x48\x37\x03\xb5\xa7\x38\xf4\x53\x41\xa9\x41\x0b\xad\xcb\xb8\x1e\x31\x2e\x2a\xe8\x47\xc1\x8e\x90\xa0\xe2\x21\x38\xf1\x2d\x68\xae\x39\x9d\x71\x81\x8e\x42\x86\x5c\xe7\x96\x30\x7c\x1e\xd4\x52\x7b\x03\x90\x25\xc0\x25\x74\x08\x31\x0b\x94\x76\x6d\x6b\x01\xcf\xc0\xff\x17\x0e\x71\xe2\x45\xae\xbe\x04\x10\x29\x29\xd6\x9f\x50\x07\x03\xdc\xa3\xee\xad\xa7\xfb\x81\xdc\xcc\x63\xe0\x69\x14\x87\xc8\x8d\x1b\xfc\x93\x64\xc4\xb5\x73\x92\x1a\xdc\x95\xa0\x67\xd7\x59\x77\xd7\x7f\x59\xa0\xa1\x02\x4b\xe0\x8b\xd2\xa5\xb0\xfd\xa0\xd7\xf4\xcb\x92\x26\x90\x43\x19\x59\x18\x36\x42\x57\x57\xaf\xf2\x6c\xb7\xb9\xbe\x79\x05\x86\x5c\x37\xaf\xae\xd5\xaf\x36\x8b\xba\xa6\xcf\x6f\x28\xc4\x25\x81\x86\xaf\x40\x6f\xf5\xb9\xee\xfa\xf3\xeb\x1b\x0b\x6f\xe6\x39\xa7\x51\xb6\x4b\x7e\x4a\xb3\x8a\x1f\xf6\x34\xe4\x4a\xa6\x63\x98\x12\xb5\xcc\xcb\x66\x5e\xb1\x22\x7a\x22\x93\x0b\x81\x61\xac\x4a\x8a\xd3\x34\x54\x6d\xe6\x69\xb5\xcd\xdf\xf1\x32\xa3\x79\xf6\x2b\x27\x93\x8b\x05\xc5\x40\x86\xe5\x3e\x7b\x93\x17\x3b\x4e\xac\x57\xee\x8e\xde\xdf\xbc\xba\x86\x1f\x81\x26\xcf\x26\x6f\x47\xef\x2d\x34\x0f\x45\x76\xb0\xf6\x99\x2c\xd0\xbc\x38\x56\x72\xa2\xb0\xf4\x1b\xa4\xc2\x4c\xb3\xe2\xd1\xc2\xad\x67\x29\x01\x91\xe1\x20\xc4\x0b\xde\xb4\x09\x32\x4f\x9b\x1b\xf7\xa6\xff\x95\x0e\x0b\x7b\xf3\xf8\xea\xba\x7d\x16\x53\xba\x2b\xa0\xe7\xba\x3c\x98\xcc\xf4\xfa\xd6\x3a\x84\xec\xd9\x4e\x0d\x7a\x22\x38\xb2\x73\x93\x30\xb5\x88\x00\x76\xcf\xaf\xf4\x30\x9e\xab\x87\xe7\x57\x10\x54\xe4\x79\xa5\x16\x17\x92\xe5\x34\x0e\xfb\x70\xa9\x47\x7a\xac\xed\x30\x40\x10\x2d\x26\x8a\xf5\x23\x82\x39\x6c\x28\xa9\x0e\xf3\x2c\xdc\x58\xa6\x60\x6f\x58\xc9\xb2\x11\x83\x1a\x76\x24\x0b\x37\x0e\x42\xf8\x7f\x4b\xca\xc7\x4c\x29\x5f\x34\x2e\xe5\x6b\x9c\x33\x69\x23\xe0\xc3\x4b\x12\xc7\x11\xe7\x41\x52\x40\x0f\xae\x88\x8a\xf0\x78\xc8\x76\xe0\x48\x28\x24\x56\xb1\xb3\xa6\x0c\x3b\x1b\x9f\x4d\xad\xcf\x8f\x8c\xe5\xfc\x60\x05\x24\x94\x22\x25\xc1\xea\xf6\x6d\xf6\x42\x6c\x09\x04\x30\xc8\x1e\x19\x4c\x90\x60\x46\x14\x23\x08\xca\x4b\x68\x15\x69\x21\x25\x9c\x45\x3f\x7f\x24\x40\x31\x44\x26\xfe\x27\xb9\xfe\xb0\xe1\x4f\xd7\x10\xa2\xd8\xf1\xdc\x6d\x71\x3c\xf0\x7a\x5f\x64\xbb\x8a\x97\xb5\xd2\x34\xde\xf2\xdd\x11\xd5\x30\xf5\xd7\x10\xc0\xd8\xf1\x5c\x35\x32\x19\x72\x1d\xfe\x16\xc7\x8a\xe5\xc7\x12\x3d\x53\x91\x8c\xfd\x0f\xf3\xe0\x05\x84\x56\x9e\x3b\xf3\x29\xaa\x91\x69\x59\x46\x99\xe9\x05\xb9\x4d\x66\x46\xb2\x11\x51\x31\x14\xc9\x46\xe8\xcf\xa7\xbe\x73\xbb\xee\xa2\x01\x98\x78\x80\x9e\x53\x92\x17\x8c\xe6\x82\x89\x1f\x2a\xf0\xf6\x3c\xe0\xf6\x22\xed\xb7\x71\xf6\x3b\x46\x01\x30\x69\x89\x4e\xe1\x3c\x6d\xef\xed\x32\x12\xe2\x90\x64\x3a\x05\x73\x92\xb5\x46\x02\x10\x67\xed\x98\x45\x75\xed\xc8\x07\xa2\x05\x64\x08\x3b\x09\x29\x65\xf7\x0e\xf2\x2c\xd3\x6f\xd2\x9b\xcd\x86\x94\xaa\x4a\x04\x92\x36\xfd\x36\x76\xbb\xaa\x08\x9e\x2d\x21\xe4\x1b\x75\x53\xae\xee\xcd\xe4\x75\x22\xb8\xa6\x93\xb8\x4c\x5b\x41\xea\x1c\x82\x3c\x00\x2b\x41\xa9\xa5\xb1\x99\xf3\x9c\x6f\x8d\x9b\xff\x06\xcb\x24\x02\xe1\x24\x80\xd3\xb2\x90\xa9\x0f\x68\x59\x01\x4e\x87\x32\x9e\x14\x0c\xe1\x55\x80\x60\xe6\xa7\x81\xd4\x1c\x2c\xc8\x1d\x44\x09\xc6\x7b\x02\xe1\x75\x65\x65\x4a\x5a\x34\xd7\x46\xc4\x08\x17\xe0\x09\x41\x77\x11\x2c\x2f\x69\xee\x17\x41\x5d\x9f\x1a\x5c\x10\x87\x7b\xb7\xb0\x57\x13\x5a\xc1\xe9\xe2\xde\xce\x59\xb6\x8b\x40\x1e\x5d\xd7\x05\xbe\x58\x36\xef\x64\x84\x27\xf0\x02\x55\xe0\xa2\xcc\x12\xa8\xe3\x4e\xca\x4b\x22\xac\x16\xd2\x0d\xb1\x58\x2a\x57\x2e\x1c\xd6\x4b\xea\xf2\x7e\xa4\x71\x50\x8b\xbf\x60\x6d\x29\xe5\xcf\x1c\x61\x81\x5a\xe1\x84\x74\xf7\xca\x40\x7a\x6e\xa1\x06\x67\x08\x3b\x3b\x92\xf8\x85\x98\x1f\xf5\x04\xee\x6c\xda\xd1\xbd\x29\x8e\xbb\x8a\x2c\xf0\xad\xc0\x05\xc7\xbd\x6d\xab\x87\xce\x90\x72\x8f\x37\x68\x22\x76\x7b\x5d\x3b\xe7\x77\x89\xde\xc8\xf5\x62\x81\x37\x10\xa6\x91\xf6\x91\xf2\xd9\xed\xa1\x35\x2d\xf0\x06\x21\x84\x6f\x45\x1d\x62\x49\xc4\xaf\x6e\x39\x47\x38\xd7\x30\xaf\x61\xbc\x9f\x40\xe4\xcc\x21\x84\xb9\xb7\xd3\x5a\x7b\x83\xa1\x4d\xa7\x78\x81\x73\xe4\xee\xb4\xe3\x09\xac\x57\x4e\xee\x58\x31\x21\x93\x05\x5a\xa9\xdb\x96\x73\xed\xc2\xdf\xbd\x83\x95\x8c\x0d\x54\x66\x07\xfb\xd9\xb6\x61\x7f\xa9\xbd\x28\x78\xf9\x0b\x70\x7e\x3b\x84\xf3\x5b\xe9\xdc\x29\xed\x40\xfd\xd6\x00\xf5\x54\x81\x7a\xfa\x31\x50\x47\xa7\xfc\x23\x90\x1e\x79\x79\x1f\xd2\xf3\x3e\xa4\xef\xc8\x06\x72\x83\x3b\xa7\x14\xa2\x0e\x0c\xfc\xba\xaf\xd7\x73\x64\x4d\x35\xd8\xad\xd7\x73\xc7\x73\xe7\x2f\xd6\x82\x13\xb1\xd0\xd4\x72\xc4\xd3\x33\x64\x21\x9c\x91\x98\xec\xfa\xc3\x8b\x67\x33\x94\x90\x9d\x1f\x07\x78\xc2\xa5\x1f\x90\x64\xae\x37\x4c\x5d\x03\x6f\x24\x96\x18\xd2\x25\x0c\xa4\xb6\x3d\x49\x75\x98\xbc\x16\xec\x11\xe8\x19\xca\x7c\x86\x6d\x95\xf5\xe2\x85\x25\xef\x19\x26\x5d\x3a\x6c\x05\x0d\x2e\x31\x5e\x22\x6c\x96\x19\xc0\xcf\x6c\x86\x73\x25\x49\xb2\x6d\xfd\xd4\x0a\x33\x10\x5a\x65\xb6\x3d\xd9\x75\x62\xc0\x7c\x5e\x71\x5a\x46\xc5\xc3\x4e\x64\xd7\xcf\xba\xc0\x1e\xb7\x38\x57\x6d\xa9\xad\xa9\x0f\xe1\x50\x5c\x74\x39\xb4\x08\x45\x2c\x80\x62\x5b\xc4\xe9\x5f\x88\xf3\x7b\x83\xf4\x92\xca\xe2\xa2\xe4\x54\x00\x07\xc0\xaa\x00\xe8\xa1\x98\x7b\x03\xb2\x42\x59\xa3\x6e\xe2\x4c\xa8\x61\x49\x10\xb5\x20\x16\x81\xc2\xed\x7d\x8f\x6c\x67\x1b\x41\x6d\x03\xe2\x47\x75\xfd\x24\xa0\x51\x31\x3d\xda\xf1\x00\xf2\x64\x94\x5f\x97\xe1\x3b\xe3\x5b\xbb\x72\x90\xa1\x7d\x33\x00\xd8\xf5\x41\x6e\x9f\x92\x9c\x40\xac\xf9\x27\xfc\x49\x2f\x68\x98\x6d\xff\xe7\xe0\x7d\xa2\xa2\x98\xed\xa7\x67\xc7\x93\x18\xfc\xbe\x93\x9e\xce\x2d\x74\x43\x16\xb6\xed\xdc\x91\xbd\xd1\x24\xde\x93\xbb\x56\xd6\x75\xa7\x76\x10\xc2\x09\x31\x8a\xba\x16\x7a\xb5\xb0\x6d\x40\x5f\x7b\xcc\x08\x33\x84\xe3\x1e\x73\xc5\xe6\xd8\xce\xe5\x6a\xee\xf1\xf9\xf5\x93\x6d\x4b\xda\xf9\xf0\x5e\x76\x8d\x70\xef\xa5\xfb\x09\x36\xa6\x80\xdc\x75\x18\xdc\x4c\xff\xa5\x14\x84\x72\xfb\xea\x8d\x6e\xc3\xbb\xdf\xdc\x86\xae\x8c\xff\x34\x2f\xf9\xe1\x98\x57\x5a\xed\x97\xcd\xa5\x3f\xe1\xba\x76\xf4\x23\x89\x04\xcf\xa7\x58\x6f\xb8\x77\xe9\x89\x30\xb1\xcf\x02\x84\x37\x67\xa8\x65\x2f\x51\x0b\xaf\xeb\xc9\x46\xcf\x7f\x5d\xb7\x8f\x6d\x14\xf5\x50\xee\x00\xe9\x74\x44\x6c\xfe\x89\x20\xc8\x25\xdd\x09\x12\xf3\xec\x20\x4d\x2b\x9c\x08\x49\x05\xfc\x4c\xd1\xdf\x1a\x55\xd5\xf5\x1e\xab\x15\xcf\xa6\x7b\xb1\xab\x53\xd2\x0b\xfa\xbf\x4a\x57\x83\x94\xa2\x0d\xc3\x9f\x93\x74\x95\x13\x42\x9c\x68\x68\x27\xfb\x84\x6c\x5b\xe5\xcb\xcd\xd0\xc5\x75\x9d\xab\xaa\x64\xbf\xea\x9a\xa2\x66\xd7\xba\x2c\x72\x52\x52\xf8\xbb\xe9\x34\x40\xb6\x3d\x11\x0b\xfc\x63\x59\xec\x69\x02\xce\x97\xdf\x55\xc5\x7e\xcf\x23\x07\x21\x15\xf1\x7a\x77\xb3\xf4\x32\x77\xd3\xa2\x5a\x31\x94\x98\x38\xfa\xd8\x48\xbb\x8d\x08\x76\x2f\xbe\x2c\x16\x74\x07\x4b\x8a\x2d\xb9\x85\x2d\x84\xe5\x4d\x05\x4c\x6b\x8a\x43\x84\x63\x92\xd8\x76\xea\x27\x81\xf1\x45\x94\x34\xae\x00\x21\x46\x49\x0b\x03\xbd\xd2\x6d\xaa\xb4\x4e\x60\x60\x00\xc6\x77\xd5\x5b\x39\x13\x0e\x52\xcc\x3e\x8c\x63\x0f\x68\x1b\x86\xab\xbe\xff\x28\x73\x8b\xc1\xda\xb6\x33\xd9\xcc\x7f\x51\x53\x28\x60\x40\x3f\xab\xf6\x94\x8f\x7d\x1c\x4a\x53\x08\x34\xe8\xa4\xd8\xb4\x89\x6d\x47\xfe\x3e\x38\x07\x88\x9c\x44\x62\x84\xb9\x40\x6a\x7e\xa2\x6e\xd5\xf0\x39\x59\xba\x97\x0c\x99\xbf\x0f\x1c\xad\x21\x54\xc2\xa5\xfc\x30\xa3\xda\x08\x6d\x85\x79\x7b\x2b\xa2\x67\xa4\x01\xdd\x7a\x20\x66\xfb\x3a\x82\xed\x1e\x88\xb3\x47\xc7\x30\x2f\xe9\x19\x97\x9c\x2b\xa1\xde\x76\x0b\x2e\x2d\xec\xfb\x6b\x2e\xc9\x69\x79\xf4\x9e\x6f\xb3\xf6\xeb\xa9\x91\xae\x26\xc1\x64\x99\x76\x1b\x44\xee\x61\xa8\x78\xb2\x11\x8b\xf8\x56\xf5\x5d\x2c\x84\xf1\x2a\xbb\xa5\x04\xb1\x72\x4b\x9e\xd2\xb6\x39\x45\x6e\x1d\xcc\x5c\xf8\x56\x50\xea\x2d\xdc\xc7\x24\xf5\x99\x82\x7b\x7a\x09\xee\x4f\x74\x1e\x1e\x4b\xb1\x79\x54\xc7\x62\xc9\x07\x24\x5d\x3d\x9c\xc4\x6d\x73\x7e\x62\x54\xf8\xf5\x76\xcb\xa3\x8c\x56\x7c\xb4\x66\x67\x42\x7b\x38\xb2\xae\xfb\xef\x8a\x44\x36\x48\x05\xf0\xba\xaf\x9a\xfa\x81\xdd\x12\x2e\xa6\x8d\x56\x94\x70\x79\xe1\x1b\x12\xc7\x19\x4e\x37\x6f\xa9\x92\x40\x5a\xa2\xc9\xe2\x75\xcd\x75\x9f\x91\x02\x6a\x35\xb0\xcc\xb8\xed\x07\x9f\x1c\x7a\x5b\x85\xda\xee\x07\x14\x8c\xfb\x5b\x0b\x4b\x5b\x20\x63\x9c\x0e\xea\xac\x5f\x36\xf3\x7d\x71\xa8\xf4\xba\xd9\x76\xff\xbd\xb7\x8e\x98\x76\x30\xab\xe7\xf4\xf2\xad\xa7\xf6\xd6\xc9\xfa\xa4\x0f\xc8\x60\xe5\x59\x00\x07\xb1\x6d\x67\xa6\xf5\xf6\x84\xce\xa5\x33\xed\xba\xb6\xa4\x74\x65\xa2\x79\x40\x2d\xe4\x9c\x10\xe9\x94\x81\x64\x3d\x4b\x3e\x30\x93\x55\x8e\x57\x7b\x55\x66\xad\xbb\x76\xd0\x3e\x1a\xab\x58\x39\x18\x04\xd7\x69\x8b\x55\xaa\x4c\xac\x22\xc2\x04\x0d\x19\x92\xa8\xe7\x4e\x03\xb7\x17\x24\x5c\x5e\xa8\x8a\x1f\x41\x32\x18\x2c\x94\xb7\x75\x42\x69\xb8\xab\x2c\x93\x33\x41\x1a\x28\x97\x27\xea\x93\x0a\x11\x98\xb5\x21\x02\x11\x96\x15\xf2\xd6\x97\x34\x6f\x49\x40\xe5\xb9\xf4\x24\xc0\xc0\xcd\xba\xe9\xe7\x4d\xbb\x92\xe9\x2b\x36\x9e\x1d\x1a\x6b\x4b\x30\x75\x97\x9b\xa2\x06\xe1\xa4\xc1\x71\xf6\x78\xa6\x6d\x6c\x50\x1f\xad\x2f\x5d\xd3\xbe\x4d\x4d\x1c\x8e\x09\xd5\xd7\x1e\x71\xf6\x08\x97\x0f\x3e\x0f\x56\x49\x5d\x3b\xc3\x44\x92\x90\xff\xd2\x8c\xa5\xbc\xbe\x05\x31\x8d\xbc\x96\xfb\x67\xff\xcb\x86\x3f\xc9\xf4\x53\x83\x70\x44\x40\x71\x7b\x7f\xd0\x96\xc4\xc5\xfe\xa0\xb5\x3e\xd4\x17\xe4\x76\x9f\x30\x25\x26\xb5\x14\x0b\xac\x12\xf5\xf9\x03\x06\xf7\x27\xe0\x72\x85\x8a\xa5\x8b\xfd\xb0\x35\xf6\xa7\x1d\xc9\xa2\x1f\x49\x3c\x3f\x94\xa1\x12\xd3\x88\x93\x1c\x7f\x22\xe5\x12\xf0\xd5\x84\xb4\xb6\x44\xfb\xb1\xe7\xda\x6d\xbe\xe5\x15\xfd\x86\x3f\x91\xc9\xa4\x7d\xc6\x89\xb2\xa3\xf4\x92\xd6\x12\x1a\xc7\xc8\xa5\x70\x0b\xb5\x3f\xb8\x16\xcd\xab\x6f\xf8\xd3\x15\x93\xb2\xb3\xab\x90\xee\x42\x9e\x0b\x70\xbe\x0a\xab\x32\x17\x9f\x7a\x38\xf0\x0a\x36\xff\x8f\x29\x3d\xf0\x2b\xd5\xc6\x15\xf8\x7d\xe3\x91\xca\x00\xa4\xa8\x48\x96\x7d\xbc\xaa\xb2\x2d\x7f\x57\xd1\xed\xfe\xea\x3e\xe3\x0f\x57\x0f\x69\x16\xa6\x96\xa1\x0c\x83\xf5\x2a\xba\xa7\x06\x77\x4b\xa3\xba\x17\xa6\x62\xcb\xa7\xb4\x7c\x53\x44\xfc\x6a\xc3\x9f\xc4\x7f\xf1\x3c\xa8\x62\xe0\x7a\xc6\xb8\x03\xd2\x6a\xbd\xd0\x30\xcc\x22\x3c\x69\xbf\xbe\x73\x5d\xb9\xd7\x3d\xba\x6c\xae\x5a\x41\x98\x36\x0d\x36\x40\x49\xf7\x4b\x62\x91\x2b\xf9\x73\xb8\x0a\xf3\x8c\xef\xaa\x9f\xd5\xef\x3f\xaf\xe2\xb2\xd8\xaa\x25\xbd\x92\xca\x9c\x3f\xab\xdf\x7f\x5e\xed\x69\xc2\x7f\x86\xbf\xff\xbc\x3a\x84\x25\xe7\xbb\x9f\xd5\xef\x3f\xaf\xaa\x42\x95\xfa\xed\xe1\x99\x1a\x20\x4c\x61\x35\x9c\x10\x36\x37\xda\x5e\x0d\xe6\x00\x9a\xd6\xce\x33\xd9\x5c\xf5\x1a\xf4\x31\x5a\x98\x1a\x52\x96\xe0\xd8\x68\xa0\x03\x0d\x48\x8b\x15\xd1\x13\x56\x75\x76\x95\x4d\x1d\x0e\x21\xbd\x40\xcd\xf9\x5b\x1e\x57\x8a\x23\x36\x13\x16\x68\x26\x73\xc9\x32\x46\x2e\x33\x01\xa2\x5a\xc2\x34\xb5\xb5\xff\xb3\x57\xfb\xfb\x62\xdf\xab\x1c\xde\x07\x75\x77\x79\x8c\xf7\x05\x42\x78\x42\xe7\x3d\xb8\x05\xb2\xcd\x19\x24\x92\xc4\xd8\x8a\xe0\x19\x4d\xc7\x8c\x4e\x44\xe7\x00\x90\xb4\x6a\xa0\x0c\x30\xd9\x82\xd7\xd2\x8e\xbd\xa5\xfb\xd2\x8e\xbd\x4f\xdc\x4f\xed\xd8\x7b\xe9\x2e\x24\x30\xa9\xd3\xd9\x3d\xe5\x05\x8d\xdc\x93\x66\x1f\x20\x58\xa3\x0c\x57\x72\x3a\x63\x62\x5b\xd5\x1d\x71\x30\x33\x41\xa5\x4a\xfc\x27\xb2\x23\x43\xe8\xdb\xa5\x3a\x08\x4f\x96\xa6\xd0\x17\xf7\x04\x26\x96\x92\x4d\x5b\x0d\x66\xf9\xb1\x1c\x6d\xd2\xa8\x93\xf4\x9a\x15\x25\x94\x03\x1a\xf1\x08\x4d\x99\x9a\x20\x67\xed\x14\xc7\xca\x6a\x30\x1c\x8b\x1f\x6b\xc9\x30\x64\x97\xb4\xa5\xba\xde\xb3\xed\xee\xaa\x89\x10\x79\x1e\x48\xd7\x9a\xd2\xd7\x87\xa8\x57\x3b\xc4\x91\x77\x1f\xbd\x0e\x69\x02\xfe\xb7\x6c\xe7\xd5\x32\x63\x8b\x5a\xa8\x69\x30\xe3\x71\x51\xf2\xe3\x4e\x2e\x93\x49\xb5\xf4\x2d\xb6\x3a\xff\x38\x92\x7a\xb1\x6d\x0a\x74\x57\xb6\xa3\xb9\xbe\xd9\x19\xa4\xcc\x65\xeb\x70\x49\xd5\x96\x43\x8d\x00\x8e\x6c\x7b\xcc\x7b\x66\x90\x4a\x94\xd7\x19\xd9\x2b\x49\xad\x71\x0a\xe1\x10\x4b\xb9\x2d\xc5\xd9\xe1\x9d\xaa\x01\x42\x3a\xf4\x5a\x75\x4f\x4d\x83\x56\x91\x37\x60\x23\x1c\xae\xa3\x2b\x9f\x8b\xbf\x95\xe0\x83\x23\xcc\x2f\x70\x4b\xe1\x19\x3d\x28\xf0\xa5\x29\x1f\x22\xa3\xc6\x36\xde\xf0\xf6\x79\xd4\xc6\x46\xcc\xe5\x98\xe9\x0d\x28\xd5\x0d\x03\x71\x77\x96\xdf\xf2\x12\x69\xd5\xb3\xb5\xb1\x6d\x47\x6b\x40\xc8\x48\xd4\xdf\x40\x1c\xab\x48\x73\x61\x7d\xc3\x1c\xc1\xea\x83\x0f\x38\x39\x84\x8b\xbe\x4d\x7a\x1e\xaf\x64\x66\xcf\x01\x3b\xbf\xaa\xf3\xd2\xd4\x5b\x05\xed\xa3\x09\x58\x51\x45\xe7\x40\xc2\xf9\xfc\x92\xd6\x15\x64\x9b\x64\x20\x9b\xf3\x8f\x72\xb6\x3a\xc8\x12\x24\xbb\x47\x99\xcb\x98\xa2\x60\x64\x9b\x98\x49\xe1\x3c\x80\x91\x74\xd7\xa0\xdc\x23\xb4\x47\x35\x91\x43\xd0\xaf\x75\x2d\xf6\xc9\x83\x23\xd9\x03\xa9\xcc\xd3\x91\x70\x64\xb2\x40\xa8\x27\x43\x92\xaa\x91\xea\xcd\x70\xf1\x74\x3a\x1f\xa3\xcb\x18\x1e\x63\xbf\x64\xfa\x47\xb8\x28\x91\xa1\x0f\x7a\xe7\xf6\xbd\xe7\xb3\xbf\xba\x38\xd5\x0c\x0c\x2d\x86\xec\x8d\x77\xce\xef\xb8\xfd\x49\x16\x60\x88\x07\x0c\xd0\xbf\xd3\x93\xf3\x91\x75\x7d\x19\x54\xab\xdd\x2e\xf4\x58\x2d\x4c\xe7\x92\x66\x93\xc7\x08\x01\x5d\x53\x91\x6b\x6c\xee\xfe\x9d\x8e\x7d\x64\xee\x55\x0f\x65\x6f\xc6\xf2\x7d\xec\x9b\x32\xd0\x3f\x1f\x09\x20\x0e\xe9\x62\x07\x08\x2e\xb1\x30\xa5\x6b\xc1\x73\x71\xcf\x4b\x4b\xd2\x61\x39\xa7\xf7\x5c\x27\x1f\x2b\x0b\xab\x9b\x58\x95\x5d\xbd\xc9\x02\xea\x45\x15\xd1\x9f\xe0\x34\x1a\xfa\x35\x19\x48\x2a\x02\x72\xea\x1d\x64\x0c\x6b\xb1\x97\xcb\x14\xb3\x73\x66\xb8\x1b\x76\xae\x20\x07\x74\x04\xa8\xac\xb7\xcc\xbb\xa2\xca\x20\xd2\x3f\x97\xba\x3c\xa6\x12\x92\x8e\x26\xa1\xd4\x2c\xe2\x96\x8b\xc7\x61\x27\x6d\x18\xb7\x1f\xd7\xaa\x19\x0c\xe1\xb0\x69\x1a\x84\x37\x73\x79\xe5\xae\xae\xc6\xeb\x7a\x28\x24\x50\xdf\xc9\x09\x2e\xd0\x7e\xcf\xa1\x1c\x17\xe5\xd6\x42\xde\x64\x29\x0f\x58\x5d\x1f\x8d\x14\x32\x91\xec\xef\xfc\x17\x59\xb1\x20\xd7\x21\x1a\xba\x4e\xb0\xf0\x98\xe3\x24\x75\xf4\x86\xc4\x68\x8e\xb5\x04\x80\xc4\x3f\x5d\xb2\x8a\x87\x85\x3c\x36\x17\xbd\xd1\x41\xe2\x43\x43\x69\x39\xc4\x56\x6f\xe4\xa0\x75\x6c\xf6\xb5\xcd\x30\xde\x31\xaa\x93\x7f\x61\x7a\x5f\x81\xd6\xe4\x85\xda\xa5\x37\x4a\xd4\xe0\x8b\x74\xc2\xb0\xc2\xee\x62\x63\xf8\x45\xb9\xaa\x31\xe2\xac\x81\x44\x49\xc9\xde\xbb\x6b\x6c\x4d\x2b\x38\x96\x1e\xc0\xa0\x20\xa6\xca\x49\xa6\xbe\xd1\xf9\x6f\x2c\xaf\xba\xb1\x91\x79\xda\x29\x43\x12\xc6\xa4\x32\xc7\x65\x18\x93\xdf\x2f\xc3\xd8\xcf\x92\x3f\x87\xee\xb7\xf1\xd4\x3c\xc7\x19\x27\xfb\xea\xda\x02\x6d\x9d\x5e\xe2\x70\x79\x65\x47\xf7\x2a\xa2\xa7\xec\xc0\xfc\x17\x6d\x16\x6a\x2e\x8c\xa5\x14\x74\xa4\x53\xcd\x3e\x9d\xa6\xcb\xcb\xb8\xcd\xb2\x83\xbf\xdc\x1e\x0f\x95\xaa\x29\x02\x74\xdb\x89\x70\xcf\x36\xc1\x58\x83\xe7\xb5\x0c\x57\x78\xb4\xa1\x65\xd7\x4c\xb7\xf2\xba\x7e\x25\xe4\x84\xde\x18\xd4\xef\x79\xbf\x24\x55\x0b\xaa\x21\xb4\xba\x30\x23\xfd\x4d\xb9\x52\xab\xd3\x05\x0e\x46\xc6\x3e\x63\xd8\xea\xad\xfe\xd9\x3e\x6b\x33\x8c\xb7\x35\x19\xc0\x6c\x5d\x8b\x99\x68\x89\x58\xf9\xfa\x5e\xdf\xc8\x7c\x7c\x02\xce\x40\xdf\xd8\xb1\x67\xfd\x6c\x77\xec\x05\x64\x6e\x4c\x80\x41\xef\x49\x4b\xb6\x8f\x75\x51\xc1\x26\xb8\x7c\x93\x4c\x4a\x07\xc5\x6d\xa2\x67\x9c\x06\x1f\xc7\xe8\x2d\x17\xf3\xd1\x3d\x3c\xba\x47\xd5\xd4\x20\x3c\x19\xdd\x5f\x72\xeb\x2a\x3e\xb0\xdd\xbb\xfa\x04\x96\x9c\x68\xcb\x26\x4a\x2e\xd1\xe4\xe6\xc6\xb4\xc5\xcd\x39\x3c\x5b\x2a\x86\x5b\x34\xdf\xbf\x7a\x80\x95\x5a\x0d\x4f\x60\x16\x8c\xe0\x0b\x49\xde\x4b\x9a\xa5\x2f\xa6\x50\xe7\xae\x5e\xee\x08\x33\xb4\xe2\x75\x1d\x9d\x2b\x7a\x50\x69\x90\x83\x8d\xac\xd8\xe1\x75\xbd\x40\xd3\xe5\x05\x5c\xf9\x6f\x35\x3b\x5b\xae\xb8\x67\x56\xce\x91\x0b\xc1\x64\xce\xd9\x18\xa3\x2b\xc6\x8d\xb6\xa8\x04\xfc\x18\xf4\x95\xf4\x7b\x91\x25\xcf\xf4\x3b\xfa\x6a\xc6\x9d\x13\xe1\x73\x53\x45\x08\x46\x17\xd6\x35\xc3\x4c\xab\x80\x83\x82\x5e\x2c\x55\xec\xe4\x28\x77\x10\xff\x20\xc4\xd4\x8f\x03\xcc\xcf\x9c\xe3\xaa\x0b\x56\x29\x49\x22\x24\xf2\x9c\x88\x30\x1c\x92\xb6\x46\x57\x7d\xb0\xed\x11\x57\xe4\x22\x77\x88\xc3\x36\xaf\x7a\x35\x3a\x84\xb0\x0c\x94\x8a\x22\xc2\x58\xeb\x53\x60\x12\xf5\xdc\x26\x1b\xae\xbb\xb9\x72\xbc\x15\x8d\x7a\xd9\x70\xa4\x93\x08\x8a\xf0\x05\xb7\x3b\x0d\x8e\xa4\x6e\x8e\xd6\xd7\x70\x92\x81\x5e\x9a\xa2\x59\xcf\x8d\x02\x06\xf8\x95\xe2\x08\x87\x60\x1b\xd4\xe0\x62\x37\xc6\xc6\x9b\x92\x1a\x63\x25\x05\xe8\x15\x71\x3c\xce\xd0\x62\x2e\x96\x17\x28\xee\x3e\x37\x22\x52\x5a\x44\xa2\x27\x27\x32\x69\x4d\xbc\x75\x86\xf7\x6b\x72\x36\x22\xe3\x56\x3e\x6a\x49\xcc\xa9\x35\xb7\xa6\xc6\x27\xb7\xfb\x84\xbb\x6b\x0a\x1c\xb5\x17\x48\xb8\xd2\x1e\xac\x47\x80\x0f\xae\x3d\x4c\xb0\x8a\x63\x87\x63\x86\xa9\xcf\x07\x0e\x97\x15\x45\xcc\x88\x54\x30\xb9\x64\xed\xda\x03\x12\xf0\x35\x03\x97\x52\x21\x61\xec\x37\x56\xc8\xc4\x8d\xb4\x5d\xa2\x33\x59\xd4\x99\xef\xd2\x4b\xf5\x69\xe1\x89\x58\x26\xb8\x88\x31\xaa\x53\x7e\x4a\x46\x0d\x6a\x94\x21\x4c\x17\x7f\x61\xac\x42\xc0\x0a\x1a\xf3\x9b\xfe\x4c\x22\xd6\x1d\x4f\xbc\xb5\x28\xad\x41\xd1\x9d\x7e\x54\xd1\x3d\xec\x6b\xe6\xaa\x58\x44\xfa\x46\x07\x0d\x3e\x3b\x4c\x45\x92\xef\x9c\x08\x83\xf8\x89\x11\x8b\x32\x56\xd6\xb4\xac\xb2\x30\xe7\x35\x3d\x64\x11\xaf\xe9\x31\xca\x8a\x9a\x45\x59\x1d\xd2\xdd\x3d\x3d\xd4\x60\x4e\x2c\xfe\xe4\xd9\xa1\xaa\x23\x5e\xd1\x2c\x3f\xd4\x71\x96\x84\x14\xc2\x0e\x8b\xc7\x63\xc9\xeb\xb8\x28\x2a\x5e\xd6\x32\x24\x6f\x9d\x26\x65\x71\xdc\xd7\x5b\x5a\x6e\xea\x2d\x17\x1f\x76\xf4\xbe\x2e\x8e\xd5\xfe\x58\xd5\xda\xaa\xa7\x3e\x70\x98\x8a\xfa\x70\xdc\x6e\x69\xf9\x54\x57\xd9\x96\xd7\xf7\x59\xc4\x0b\x0b\xc7\x8c\x5c\x5f\xdd\xfe\xf5\xc8\xcb\xa7\x75\x34\x25\x96\xe3\x01\x1e\xaa\xd7\xd1\x14\x59\xd7\x09\x4e\x18\x31\x15\x50\x5e\x39\x9e\x6b\x4d\x39\x9b\x5a\xc8\x5f\xaf\x0f\xd7\x37\x81\x85\xad\xcc\x42\x38\x65\xe4\xfa\xc3\xfa\x30\xbd\xc6\x19\x23\xd7\xaf\x1c\x6f\x42\x4b\x4e\x6b\x56\xd6\x61\x91\xd7\x60\xda\x5a\xa7\x65\x9d\x6d\x93\x5a\xaa\x0d\xe7\xd9\x0e\xfa\x4c\xeb\x3d\x2d\xe9\x16\x39\x8e\xbf\x7e\x70\x83\xa9\xf4\x10\x8f\xd6\xd7\x37\xd7\x49\x86\x6f\xa1\x32\xf5\xe5\x1a\x6f\xc4\x2b\x28\xf8\x5f\x67\x38\x17\x2f\xb5\xfd\x07\x6f\xfd\x30\x5d\x5d\xe3\xad\x6c\xd7\x3d\x84\x65\xb6\xaf\x6a\xf0\xfe\x00\xad\xa0\xeb\x0c\xef\x18\xb9\x56\x44\xeb\xfa\xf0\xc2\xf1\x5c\xff\x03\x09\x6a\xb2\x3e\xbc\xd0\xca\xe6\x73\x91\xad\x10\xa3\x78\x56\xaf\xaf\x1d\xcf\xbd\xa5\xf7\xb4\xe6\xe1\x96\x22\x59\xe3\x75\x86\xf7\xe2\x73\x55\x1e\xf9\xfa\xda\x99\xbf\x40\xd7\xf8\x4e\x8e\xfa\xc5\xab\x89\xe3\xb9\x6b\xff\xcd\xdb\xd7\xef\x5f\xaf\xfd\x7a\x36\x43\xb5\x48\x08\xd6\x81\x78\xbe\x59\x1f\x5e\x3c\xbb\x4e\x70\xc9\xc8\x49\x06\x91\x76\xfd\x25\xb6\x5e\x49\xdc\x70\xb5\x3d\xe6\x55\xb6\xcf\x39\x79\xae\x9f\x9e\xdf\x58\xd8\x7a\x75\x2d\xbf\xdf\x58\x01\xce\x79\xc2\x77\x91\x2c\x15\x67\x3c\x8f\x0e\xbc\x92\x79\xba\xb7\x00\x8b\x19\x97\x79\xb6\x74\x2f\x3f\xc3\x43\x80\x61\x8a\xe5\x27\x89\x73\xe4\x57\xfd\x1c\xe0\x4a\x00\x94\xcc\x20\x0d\x38\xe0\xbb\x7a\x0c\x70\x55\xba\xfe\xcb\xf6\x9b\x5c\x01\x95\x05\x1e\x8d\xac\x61\x91\x8f\xe4\x6d\x33\x86\x45\x0e\x30\x2b\x4b\xb7\x6f\x66\x5b\x91\xeb\x7f\x72\x56\xbe\x2a\x55\x7b\xe5\xcd\x48\xa3\xad\xbc\x7a\x60\xed\xe1\xf9\x0b\x6c\x59\xd8\xb2\x02\x18\xdb\xcf\xaf\xa2\xec\x5e\xd6\x03\x0f\x41\x83\x0f\x8c\x44\xcc\x79\x42\xb8\x62\xe4\xc0\x7a\xc6\x0f\xe3\x9a\xf9\x68\x55\xb2\x79\xb1\xaf\xa0\xdf\x44\x3e\x67\xc5\x0e\x97\x4c\x19\xa6\x88\x07\xb1\x4b\xc5\x83\x1e\x1f\x3c\xcb\x8d\x0c\xdf\xc5\x6c\x43\x89\x14\x5e\xa3\x0e\x5d\x1d\xd9\xe0\xaa\x8a\x2c\x70\xdc\x9e\x0f\xa3\x96\x2b\x13\x42\xbe\xf1\xc6\x3f\xa9\xb8\x95\xc8\x6d\x2b\x00\x3f\xd6\xda\xe1\xf6\xeb\x3c\x57\x85\x87\xc9\x6d\x41\x25\x27\x90\x41\xcb\x80\xe6\x21\xe0\xdb\xd1\xf4\x79\x5b\xd7\x74\xa5\x82\xcb\x45\x24\x84\x83\x8a\x4f\xa7\x68\xc2\x7a\x42\x08\x41\xa3\x79\xb1\xbe\x48\x6f\xfd\xe7\xc6\xf8\xc8\x24\xfd\xa6\x11\x67\x67\xed\x58\xd7\x20\x77\x35\x7c\xf5\x32\xe4\xb5\x8e\x77\x69\x80\x21\x1a\x5b\x3b\x77\xf7\x80\xea\x7f\xd2\x61\xc6\x35\x8f\xdb\x4a\x7d\xcf\x8c\x69\xd0\x30\xba\xe8\x05\x07\xc1\x00\x67\x16\xea\xf5\xe5\xdc\x45\xb5\x69\xaf\x84\xad\xaa\x04\x87\xc2\x1f\xb5\x51\xf2\x17\x81\x60\x85\x7a\xb6\x3f\x7d\x72\x79\x08\x82\xaa\x20\x72\xe9\x30\xf4\x65\x77\x5b\xfe\xb4\xe7\xc4\x91\xeb\x41\x94\xa3\x75\x88\xda\x40\xb5\xa6\x26\x9a\x5a\xd7\xd6\x54\x09\xd2\x69\x3f\xc4\xa1\x3e\x2a\xf7\x4c\x05\xbf\x90\xd3\xd8\xfa\xe6\xf6\xb4\xb8\xcc\x5f\x06\xae\xbe\x69\x38\x0b\x7f\x6e\xd6\xfa\x2b\x1b\x71\x56\xaf\xe1\x25\x24\xd4\x8f\x02\x04\xde\xe6\x0d\x49\x91\xd4\xd9\xfe\xe2\x9e\xe6\x16\x96\x60\xa4\x58\x52\x3f\x0a\x7a\x5f\x4d\x1f\x60\xaf\x55\x43\x67\xa1\x7e\xc5\xba\x75\x5a\xdb\xfd\x6b\xe0\x4e\x83\x1b\x27\xa4\xe3\x7c\x63\xf0\xf8\xa7\x34\xb9\x57\xd2\xaf\xae\xf6\xf0\xa0\x95\x6a\x93\xce\xcc\x62\xd5\x86\xd2\x48\x61\x93\x48\x77\xfc\xa9\x1f\x06\xc3\x38\xbb\x7d\x3e\x3f\xc4\x22\x8f\x98\x81\x46\xfa\x0e\x81\x88\xb8\x7d\x1f\x24\xa7\x06\x2b\xbf\x22\xc8\xf0\xfa\xf1\xf9\x10\x4f\xac\xce\x86\xad\xc2\xa1\xb0\x0b\xc1\xb3\xf0\xa4\x6f\x19\x65\xdb\xa6\x8a\x2b\x3a\x75\x2c\x9a\x8a\x65\x1e\x89\xf1\x71\xad\xdd\xde\x57\x68\x06\x0f\x33\x5a\xa1\x79\xc5\xce\xe0\xa2\xad\x18\x35\x96\x3c\x4e\x2d\xe9\x04\x88\x41\x80\x2a\xa9\xf8\xc3\x1f\x2b\xcf\x79\x64\x0e\x43\x73\x15\x0b\x03\x22\x4d\x3d\x89\x14\xe4\x1a\x16\xa1\xa1\xd7\x8b\x29\x07\x3a\x8e\xad\xad\x1d\xa1\xdd\x33\xea\x99\xf1\x09\xd2\xbf\x35\x66\x03\x81\x4c\x55\x66\x5b\xd3\xa0\x51\xaa\x4b\x76\x06\x6f\x46\x7e\xd1\x03\x29\x5b\x95\x1d\xef\xa3\x19\xd1\xa1\x01\x96\x61\xad\x81\x9f\x69\xbc\x07\x11\xbf\x60\xb8\xf0\x04\xed\xdd\xab\x4b\x4d\xf8\x85\x91\xee\x15\x21\x4f\x42\xaf\xad\x57\x62\x67\xa8\xf8\xa0\x1f\xe9\xf0\xa3\xeb\x18\x9d\xac\x6b\x4b\x5b\x65\xc1\xbb\x1c\x9d\x69\xee\x47\xfa\x91\xd3\x50\xcf\x5b\x49\x7e\xce\x8d\x19\x0e\x65\xa4\x5a\x38\xf9\xa8\x25\x30\x78\x07\x32\x16\x40\x3a\x4e\x90\xe1\xc7\x20\x24\xc5\x24\x51\x91\x02\xad\x57\xd6\xd4\xf4\x6a\x75\x63\x21\x2f\x16\x13\x67\x9a\xe9\xb9\x4e\xd5\x5f\x9c\xce\xbe\xb2\x62\x3d\xef\x5e\x31\xa9\x4c\x6c\x8c\x10\x9e\x38\x43\x68\x1f\xda\x48\xca\xd8\x24\x66\x78\x90\x65\x3f\x61\xd0\x7b\xa4\x76\xfa\x91\x39\x80\x2d\xc4\xc9\x8d\x40\xd1\x51\xe1\x36\x81\x00\x92\x00\xad\xa6\xd3\x04\x45\x10\x5a\xfe\x73\x08\xd4\x09\x89\x59\xec\x30\x88\x9c\x01\xb5\xa4\x24\x85\x30\xd3\x54\x70\xf1\x11\x3c\xc6\xa3\x75\x25\xd3\x29\x7a\xdd\xd5\x02\x6c\x3e\xe0\xbd\xb8\x45\xd1\xb2\x47\x58\x6f\x33\x84\x23\x23\x00\xea\xaf\xe2\xac\x9d\x64\xb6\x0d\x74\x46\x9b\x47\x34\x9b\x12\x2e\xc3\x09\xc7\x0d\x66\xc7\x2c\x8f\x34\x37\x34\xc2\x91\x6b\x5c\xde\xc2\x01\xbe\xc5\x39\xde\x75\xb6\xdc\x85\xa0\xaa\x18\xc2\x7b\x41\x2d\xdc\x89\x71\xdc\xdc\x41\xc4\xd9\x2c\x86\x60\xe0\x77\x01\x8e\xeb\x1a\x14\x40\xd0\xa8\xb5\x77\x8c\x90\x3e\xe8\xf7\x38\x36\xc2\x6e\xc7\x81\x1b\x77\x3e\x13\x73\x05\x3f\x31\x42\x27\x98\xc4\xa2\x6f\xbf\x3a\x4e\xc2\xe1\x8c\x38\xb7\xea\x80\x8b\xa5\x4d\x8e\xa0\x11\x11\x04\x13\xed\xe1\xc8\x9c\x94\xcc\xcf\x82\xba\x2e\x59\xab\xd5\x8c\x53\x03\x08\x73\x7f\x19\x4c\xe3\xd6\x57\x59\xc6\xb0\xf5\xea\xd9\xf2\xe6\xd5\xf5\xb3\x97\x37\x16\x9a\xe6\xfe\xcb\x00\x73\x92\x0b\xfe\xb5\xf3\x5a\x94\x92\xb4\xb3\x76\x05\xda\x6a\xc4\x06\xda\xb6\xd3\x76\x70\xb6\xbd\x97\x84\x93\x1e\xd0\x7b\xfe\x08\xa8\xcf\x49\xdb\x61\xf8\x8b\x00\x01\x52\x07\x1a\x01\x9d\x62\xa2\xe8\x96\x09\x21\x59\x5d\x6f\xda\xca\xbc\x96\xc6\x9f\x10\xe8\x7f\xef\xe3\xc2\x4d\xdd\xd4\xa4\x64\xb8\x74\x91\xd3\x91\x7b\xe7\x5e\x98\x0c\xb2\xe8\x96\x98\x59\x7d\x1e\x60\x4d\xb3\xd8\xf6\xe4\xf6\xbc\x16\x51\xb5\xb9\x73\x6f\x51\xd3\xad\x7b\x6a\x06\x56\xc0\x29\x1c\x07\xca\xf7\x25\xb1\xb4\xef\x05\xb3\xb3\x28\xed\x55\xd6\xfb\xb4\x4a\x49\xd1\xcd\xba\xb4\xb3\xb9\x34\xab\x31\x42\xab\xd4\xb6\x8b\x7e\x6d\x67\x66\xd9\xe0\xa6\xac\xe4\x7b\xe7\xc8\x9c\x7d\x7b\xf5\x86\xef\x19\x02\x98\x57\xb6\x4f\x64\xef\xdf\xa9\x78\xca\xe0\x3c\x66\xb6\x04\x30\xd7\x5e\xe3\x63\x1c\xc9\x48\xf8\x26\x2e\x8d\x07\xb8\x54\x63\x98\x3e\x78\xc7\xc8\xd8\xe6\x09\xec\xee\x14\x61\xe9\x28\xa1\x6b\x3e\xf5\x39\x84\x58\xd6\x6b\xac\x6f\x84\x2c\xd4\x86\x3e\x8a\x3b\x95\x55\x89\x03\x0a\xe9\xa8\x63\x37\xe2\x7a\x49\xef\xfd\x2e\xa8\xc2\x02\xce\x01\xed\x3d\xee\x96\x28\xef\x52\x38\x1f\x1a\x52\xe3\xdd\x50\xbf\xbd\xe3\x1b\xa8\x9f\x06\x08\x7c\x25\x88\x79\x02\x9a\xaf\x67\x23\x20\x23\xe0\x46\x7e\xa6\x9c\x36\xdd\xfa\x71\x20\x8d\x4a\x34\x1d\x86\x5a\xd9\x59\x9b\xb2\xf3\x79\xe0\x0d\xe4\x59\x11\xe6\xc8\xed\x53\x2f\x62\x28\x49\x4b\xbd\x88\x9a\xbb\xab\x46\xf1\x86\x73\xaf\x75\x34\x96\x05\x9a\x99\x8a\x86\x54\x0e\xf0\x52\x67\xa9\x4e\x86\x5c\x51\x4c\x4e\x6c\x3b\xe1\x23\xe2\xea\xea\x42\xb8\x99\x7f\x48\x19\xdc\xc8\x97\x4e\xb3\xc5\x93\x91\x3e\x21\xa7\x52\x5d\x01\xf7\x22\x8e\xf6\xd9\xe9\x68\x87\x32\x5d\xbc\xa2\x33\x83\x98\xe1\x36\xa0\x10\x67\x50\x86\xc4\x1b\x7a\xaa\x41\x0d\x96\x15\x5f\xd0\x7f\x9b\x47\xc5\xf6\x3b\xba\xcb\xf6\xa3\x41\x1a\x5a\x2a\xbd\xbd\x60\x51\xbe\x2a\x47\xd2\xfe\x34\x4c\xd2\x3c\xca\x03\xd3\x7a\xf0\x2b\x36\x70\xa0\xd0\x34\x32\x7a\xcd\xff\x45\x1d\xcc\x76\x07\x5e\x56\x9f\xc3\x65\xa2\xd8\x49\xbd\x68\x35\xa2\xbb\xf2\x9e\xf1\x7f\xb3\xb7\x67\x17\xe0\x83\x84\x61\xf3\xad\x00\x96\xc6\xd5\x45\x1d\xc6\xff\x3f\x1a\xed\x05\x64\x6b\xd0\xa8\x21\x6e\x9f\x59\xa4\xde\xb6\x53\xc4\xee\xe0\x1b\x73\x93\x8d\x8c\x5a\xb1\x03\x93\x84\x5c\xd8\xa3\xdb\x3a\x67\x7e\x47\x06\xbe\xb8\xc2\x01\xff\x20\x78\xc4\x16\xfb\x86\x03\xec\x2b\x28\xe7\x5f\x19\x14\x35\x69\x26\xb3\x8e\xde\x49\x11\xa2\xbe\xa8\xfe\x3c\xfe\x87\x1e\x1f\x05\x0b\x1b\x35\x0a\xa9\x5a\xe4\xb3\x00\x81\x7f\xf6\xd3\x30\x5c\xdd\x60\x18\x14\xbc\x68\xeb\x28\x5c\x26\x38\xd1\x5e\x6f\x7a\x9f\x56\x54\x09\xac\x0e\x03\xc9\x8a\x25\x99\x0a\x4b\x4a\x4c\x54\x1e\x1d\x16\x71\x31\x08\xcd\x72\xce\x1b\x18\xfe\x83\x74\x98\xb1\xc9\xd2\xa5\xca\x81\x0e\x21\xcc\xa3\xae\x14\xfb\x83\x5b\xc8\xb1\x1b\x59\xa8\xd4\xf4\x15\xd7\x60\xc1\x3a\xfc\x4e\x8c\x28\x77\x9c\x42\x6d\x60\x9a\x18\x92\x85\xd2\x2e\x32\x82\xcc\x1a\xbe\xfd\x8c\xcb\xb0\x5e\x3c\xcd\x96\xb8\x6b\xa9\xba\x98\x61\xab\x2f\x0b\x1b\x09\x56\x5b\xd7\x5b\xd6\x05\xdb\x9b\x0c\x24\x91\xb6\x9d\xf4\xbf\x7e\x84\xde\x13\x39\x4a\xe6\xb7\x24\x2a\xfd\x18\x89\x2a\x0e\x41\x0a\xca\x53\xa3\x14\x28\x98\xc5\x81\x95\x4e\x74\x13\xae\x42\xb1\x3f\xe4\x24\x85\x72\x92\x86\x92\x12\x67\x00\x64\x0c\x80\xac\xe7\x05\x46\x60\x33\xb2\x30\x3c\xdf\x36\x4c\xed\xfc\xc1\x89\x43\x3f\x7a\x7a\xa8\x0e\xf7\x63\xca\x9c\x85\x19\x31\x2e\x7e\x7e\x13\x23\x31\x31\x13\x43\xad\x86\xc1\x78\x00\x7f\xa8\xb8\x12\xaa\x07\x8a\x55\xd0\x28\x51\x29\x12\xca\x7e\x82\x95\x99\xc6\xea\x86\xf3\x35\x45\x4b\x80\x53\xb4\x8a\x0e\xf4\x96\xcc\xfe\xb6\x66\xdb\xa0\x64\xa8\x7b\x3f\xd8\x3a\x94\x70\x75\xcb\xea\x07\x3a\x6e\x55\x88\xa3\x8e\xb9\x22\x0b\x9c\xf7\x7c\x99\xed\xa4\xd6\x5c\x41\xf2\xd9\x12\xef\x09\x38\x87\xba\xeb\xc7\x55\xd9\x03\x93\x79\x57\xd7\xf9\xcd\x72\x24\x66\xd8\x1e\x2c\x71\x3b\xe7\x3c\xb6\xbd\x53\xe0\xb7\x47\xe8\xf2\x75\x5e\xab\x30\xbc\x9b\xf3\x3b\x27\x44\xab\x3b\xd0\x09\x5e\x04\x64\x6f\x58\xa6\x85\x38\x02\xf0\x87\x30\x62\x91\xb1\x68\xb0\xaf\x45\xbf\x72\x70\x78\xb2\x9d\xf7\x38\x4d\x85\xdf\xcf\x68\x13\x3c\x51\x71\x59\xc1\x3f\x8a\xc1\x9b\x48\xcb\xb2\x11\xa6\xc2\xc9\x48\x28\x29\x61\x01\xfb\x89\x0a\xb4\x76\x64\x4e\x66\x50\xcc\x8f\x0c\x8c\x68\x35\x76\xc8\x6f\x6e\x57\xb7\x60\x64\x96\xe1\xdb\x09\x21\x85\x76\xba\x09\x78\x29\xc2\x93\x05\x68\x1e\xc4\x02\x71\x4a\x0e\x25\x91\xb2\xeb\xee\x48\x00\xcf\x42\x7a\x16\xfc\xdb\x00\x47\xf8\x16\x86\x1b\x2b\x36\x3f\xf1\x93\x36\xf6\xf0\x70\x90\xb2\x8f\x09\x7e\x62\x48\xac\xf8\x2a\x6e\xfb\x93\x88\xaa\x34\xfd\x1e\x99\xf4\xfb\xa4\xd3\x9a\xe8\x89\x45\x7b\xc7\x59\x8a\xc1\x2e\x3e\x9a\x1f\xca\xd0\xdb\xce\x7f\xe1\xf7\x34\xff\x7b\x99\x83\x95\xb1\x7a\x96\x1f\x05\x5d\xdc\xd5\xe2\x88\xa6\xf8\x63\x55\xd7\x91\xc9\x79\x89\xd7\x16\x19\x48\x6f\x14\x1a\xf7\xdc\x01\x9e\x44\x68\x95\x11\x69\x51\xde\x3b\x35\xa4\xd2\x17\xa8\xca\x48\x04\xf1\xbe\x70\x2d\xf9\x64\x69\x5a\x4d\x24\xa9\x47\x0b\x9b\xd4\x83\xab\xd4\xb0\x74\xea\x6b\x20\x5b\x2c\xa0\x5e\x2c\x8d\x4b\x5e\xe7\xb9\x6b\x19\x78\x65\x44\x67\x75\x10\x8b\x8f\x9e\x07\x51\x85\xb0\xa9\xe0\xca\x2d\x25\xdd\x62\xad\xd2\x1b\x22\x25\xb8\x21\x89\x08\x21\xa9\x81\x0c\x24\x80\x80\x56\x8a\x93\xf8\x51\x80\x7c\x16\x38\x21\xc2\xda\xde\x9a\xe3\x50\x06\xec\xec\x51\x05\xa3\x91\xf5\xde\x30\xfc\x96\xf5\x82\xea\x7d\xc1\x1c\x53\xf0\x46\xb6\xc3\x7b\x69\x87\x21\x8d\x71\xdf\x17\x4e\x28\x03\x8e\x80\xf6\x6c\xc2\xb5\xd2\xc3\x9b\x62\xbb\x3f\x56\x3c\x7a\xa7\x42\x0b\x44\x97\xbf\x3a\x1c\x04\x09\x5e\x34\xd7\x1e\xfb\xa5\x07\x40\x91\x6c\x38\x01\x5c\x75\xd1\xa4\x00\x01\x3a\x08\x1b\x37\x31\x5f\x1a\x37\x09\x4f\x38\x24\x6f\x99\x4f\xbb\x0b\x7c\x08\x12\xf6\x85\x14\x60\x2b\x47\x83\xd2\x7a\x56\x7c\x79\xc3\x88\xf3\x46\xb0\x7f\x8e\xf5\x4a\x06\x66\xbc\x82\xbf\x32\x4e\x00\x79\xbe\x78\x7e\x05\xd1\x01\xe0\x49\x06\x2f\x10\x8f\xd7\x37\x96\x39\x0d\x6c\x68\x7e\x05\x4e\x87\xde\x30\x81\x5a\x7a\x01\x1d\xeb\xba\x97\xa8\x37\x23\xea\xc2\x98\xb3\xf9\x43\x99\x55\xdc\x51\x5e\xc3\x40\x2c\xd4\x75\xff\x0d\x6b\x27\x00\x61\x18\x26\x20\x9e\xe6\xcc\x13\xdf\x6a\x33\x3f\xa4\x65\xb6\xdb\xfc\x54\xd2\x3d\x44\x31\x38\x90\xbe\xb1\x92\x0a\x01\xd5\x99\x77\x52\x32\x59\x76\x36\x9e\x5d\x24\xfa\x7f\x27\x8e\x84\xf7\xff\x58\x18\x89\xd9\x03\x67\x9b\xac\x9a\xb1\xe2\x71\x76\xc8\x7e\xcd\x76\x89\xab\x96\x4e\x24\xad\x66\xdb\xe2\xd7\x4b\xdf\x2e\x24\x6b\x30\x67\x62\x4d\xfe\xed\xb8\x14\xbf\xeb\xca\x58\x0d\x42\xc2\xad\xf5\x99\x98\x12\x4a\x3e\x99\x0c\xc2\x56\x9c\x87\xa8\xe8\x7c\xbf\x36\xda\xf5\xda\x9f\x19\xb9\xfe\x20\x3b\x79\x8d\xbf\xea\x2b\x67\x7c\x70\xac\xe9\xbb\xa9\x85\x1c\x6f\xb2\x7f\x44\x3e\x9d\xfd\xfa\x1f\xc1\xf4\x99\x52\xd0\xf8\x9a\xe1\xbf\x30\xfc\x8d\x28\xee\x54\xc5\xbe\x2e\xc5\x7a\xd5\x0c\x9c\x82\xd6\x62\xb9\xd0\xb3\xeb\x15\x60\x85\x1e\x3a\xf0\x9c\xaf\x59\x2f\xe6\x4d\xeb\x2c\xa1\x7f\x4f\x69\x38\xd0\x98\x17\x7b\x30\x57\xfa\x58\x96\x61\x33\x0e\xc3\xd2\xd1\xe6\x79\x0f\xf4\xa7\x06\xff\xe5\xdc\x01\x67\x5f\x10\x45\xe5\x44\x77\x3b\x25\xac\xeb\xaf\x95\x58\x3e\xf4\x00\x09\xff\xa8\xd4\x93\xe1\xbe\xc3\x61\xa8\xae\x43\x9f\x05\xae\x8e\x8a\x68\xdb\x8e\x25\x90\x51\x02\x4c\xe3\xe5\x9b\x0d\xf0\xb3\xb6\x95\xcd\xc9\x20\xcc\xf8\x2b\x75\x3e\x27\xc8\xb6\xff\xac\x9e\x99\x74\xdc\x9d\xca\xa5\x87\xe0\xa1\xdb\x6c\x27\x83\x94\xc4\xe2\x85\x3e\xca\x97\x2e\xdd\x48\xd5\xe5\x48\x22\xfa\xaf\xea\xd0\x69\x91\x59\x86\x63\xa3\x54\x8c\x50\x67\x10\x9f\x78\x89\x9b\x4c\x2d\xab\x41\xee\x59\x58\x1e\xed\xaa\x41\x9f\x0a\xe6\x4a\x9b\x37\xca\x66\xb6\xff\xfe\x2a\x18\xd3\x2d\x59\xc3\xc4\xb6\x53\xdb\x4e\x21\x1a\x99\x93\x90\x14\x1c\xce\x98\xb3\x39\xf9\x66\x38\x9d\x02\x5e\xa5\xc9\xc8\x71\x27\x4d\xae\x9e\x72\x8e\x63\x02\x56\xac\xf0\x31\xb6\x6d\x47\x3e\x92\xfe\x00\x20\x0d\x61\x59\x07\xb1\xe2\x62\x57\xbd\xcb\x7e\x05\x57\xb7\xcc\xb3\x96\x7c\x6b\xb9\x62\xba\xd3\xf9\x3e\x7b\xe4\x60\x7c\x3b\xb5\xc4\x86\x55\x05\x22\xb3\xe6\xd1\x99\xae\x6b\x8b\x1e\xab\xc2\x32\x95\xd0\xbe\xed\x69\x17\x9c\x12\x7e\x66\x79\x15\x12\xea\xb4\x71\x66\x26\x24\x44\xad\xb6\x1b\x34\xa0\xc4\x8f\x95\x8a\xfd\xed\xb6\x51\xc0\x09\x43\x17\x14\x34\x9b\xb3\x33\xa8\x17\x0a\x17\x6e\xa0\x2e\x9d\x00\xff\xc7\x7d\xbc\x46\xe4\x92\xd7\x55\xaa\x4e\x2c\x12\xd9\xb6\x3a\x78\xd0\x29\xec\x10\x7e\x9c\x17\xb4\x72\xc5\x74\xaf\x8a\x3d\x0d\xb3\xea\xc9\x9d\x7f\x66\xe1\xcd\x5c\xbd\x11\x6b\x31\xff\x0c\xae\x37\x75\x0a\xde\x88\xd2\x5f\x8a\x72\x64\x32\x09\xdb\x17\xac\x0f\x13\x46\xc3\x4d\x52\x16\xc7\x5d\xf4\x26\xcf\xf6\xc4\x32\x4e\x03\xeb\xcc\x35\xe8\x78\x11\x70\x6c\x9a\x73\x5a\x02\xef\x04\x80\xd5\xaf\x07\xd8\xea\xb1\xb2\x78\x33\x67\xc5\xe3\x3b\x38\x87\x88\x0c\x31\xd3\x25\x08\x72\x1a\x52\xbe\x2b\x7e\xfd\xfc\x2c\xf1\x27\x38\xfa\xda\xf4\xce\xc1\xfd\x06\x9f\x4a\x9e\x67\x62\x55\xbe\xca\xa2\x88\xef\x7e\x80\x53\x65\x2c\xfa\x67\xbb\xe5\x32\x07\x7c\x4d\xb4\x4d\xff\x4d\x55\x70\xb1\x4c\x2c\xcb\xc4\x0d\x86\x9d\xf1\xa3\xa6\x09\x2e\xe5\xe7\x32\x3f\x17\x9c\xbe\xac\xfa\x3b\x38\xb6\xc0\x1f\xf5\xc5\x52\xa9\x2c\x95\xf6\x74\x38\xb3\x1e\x00\x67\xff\x4f\x86\xd2\xfa\x3d\x94\x8e\x6c\x71\x94\xd0\x31\x3e\x8d\xa7\x8e\x91\x39\x33\xd1\xd1\xe5\x7f\xac\xd4\x8f\x1a\x90\x20\x6f\xce\x89\x9e\x4f\x45\xea\x70\x0e\x2c\xcc\x49\x0c\xd1\xab\x21\x7a\xe1\xd9\xd9\x0d\x1e\xb7\xad\xe5\x7f\x88\x23\xd5\xb9\x7c\xb4\x4b\x57\x3b\x55\xb1\xc7\x31\xb1\x3e\xdd\xc3\xee\xf9\x78\x76\xd9\x27\xc8\xdb\x20\x75\x32\x66\xe4\x77\x11\x63\x38\x1b\xcc\xf4\xff\x45\x34\xe6\xc2\x6a\x7b\xb7\xed\x36\x0b\xc9\xfa\x04\xe4\xc2\x6a\xa1\x45\xa5\x2c\xe1\x84\x22\x13\x08\xf8\x01\xc8\xce\x19\x9b\xbf\xcc\x9c\x6e\xa3\x01\xe9\x0d\xac\xa3\x3c\x33\x34\xf4\xfb\xac\x95\x31\xcb\x9b\x57\x55\x24\x4e\x80\x08\x1e\x2a\xf9\xa4\xb4\x32\x95\xe2\x68\x76\x11\xd7\x57\x91\x85\x70\x26\xd8\xad\xc1\x8c\x7f\x64\x46\xda\xb9\x03\x3e\x11\x27\x44\x9c\xb5\x50\x87\x24\x9d\xbf\x82\x4d\x87\x13\xdb\x76\x8c\x9a\x55\x21\x81\xa8\x33\x7f\x79\x96\xfa\xd1\xba\xc6\x42\xc5\x35\x32\x3e\xdb\xe1\x81\xee\xcf\x5c\xda\x2b\x3f\x03\xe0\x5f\x49\xa9\x82\x81\x61\x08\x43\x89\x1f\x07\x9a\x1c\xf2\xe3\x00\x77\x8f\xe0\xc7\x68\xc5\x49\xa8\x0e\x6f\xaa\x82\x83\x98\xa5\x8d\xdc\xa2\xa2\x96\xe3\x56\xd1\xd8\x18\xb9\xa6\xf9\x3e\xa5\x6b\xc7\xff\x80\x82\x17\x6b\x74\x9d\xe1\xef\x19\xb9\x56\xa7\xe0\xfa\xf0\x82\xac\x0f\x2f\xe4\x47\x74\x8d\x7f\x00\xca\x5f\x0c\xbc\x86\x85\x72\xbc\xc9\x2c\xf4\x39\x0d\xd0\x7c\x8a\xae\xf1\x8f\x17\x58\x89\xf9\x0b\xa4\x39\x88\xbf\x0e\xb3\xf8\xd3\x59\x80\x88\xca\xa9\x32\xfd\x8d\x91\x53\x8b\x26\xac\x0e\x4f\xdc\x67\x87\x8c\x65\xb9\x38\xbe\xad\x14\xce\x28\x0b\xeb\x95\xb5\x60\x5b\x58\x0d\x7e\xc7\xc8\x29\xe7\x55\xc5\xcb\x77\x62\x10\xbb\xc4\x15\xb0\x2e\x48\xb4\x9f\x24\x6a\xb5\x3e\x85\x30\x47\xef\x19\xf1\x2d\x79\x1a\x5a\xd8\xfa\xc1\xc2\xd6\x77\xc5\xaf\x16\xb6\xb6\x07\x2b\xe8\x4e\x8d\xbf\x77\xfa\x80\x2a\xbc\x9a\xe6\x5d\x54\x68\x15\xe9\xbd\xe6\x75\xe5\x2c\x04\xf2\xf9\xfb\x7e\xaf\x65\xea\x53\xed\x91\x69\x29\x4e\x08\x86\x39\x79\x3f\x12\x7b\x0a\x08\xa8\xf7\xcc\xe7\xc1\x34\xc4\xc3\x16\xb4\x32\x4e\x27\x13\xf9\xc7\xb9\x1e\x24\x68\x20\x82\xbc\x69\x01\x74\xb3\x6a\x22\xbd\x49\x40\xd1\x27\x22\xd4\x4f\x02\x7d\x14\xd9\x36\x04\x96\x30\x0c\xa7\xac\x22\x8f\x5a\x81\x8c\x74\x8a\x65\x82\x39\x66\x1e\x94\xa8\xeb\x4e\xc6\x22\xbd\x81\x0f\xb6\xc8\xff\xc7\xdc\xd7\x37\xb9\x6d\xa3\x79\xfe\xbf\x55\xfb\x1d\x5a\x58\x1f\x8b\xb0\xd0\x6a\xc9\xf1\x5e\xed\x51\x03\xf3\x32\x79\x99\x64\xc6\x4e\x32\x63\x67\xe2\x0c\x9b\xeb\x02\x41\x50\x62\xb7\x24\xca\xa4\xd4\xdd\x4e\x53\xdf\xfd\x0a\xcf\x03\x80\x20\xc5\x76\x76\xa7\xae\xea\xee\x8f\x6e\x91\x20\x08\xe2\x1d\xcf\xeb\xef\xa1\x0c\x08\x8c\xc1\x83\x20\xf8\x19\xa0\xf9\x3e\xf7\x55\xf6\x6d\x16\xe6\x9d\x7f\x1c\xa5\x34\x0a\x15\xd7\xef\xb1\x50\x06\x81\xff\xdd\x89\xf2\xf0\x72\x07\xa5\xa8\x58\x1a\x29\x53\xee\x89\x98\x28\xc5\xe5\xb0\x02\x00\xb0\x27\xba\x24\xf3\xbe\x72\xd6\x00\x32\x92\x3a\xd2\x03\x59\x6c\xba\x89\x44\x58\x56\x27\xa8\xf3\xec\x58\x7f\xc9\xfa\x88\x19\x3f\x19\xed\x4c\xd6\x59\x5e\xc5\x6f\xc4\x01\x18\xb1\x70\xce\xf2\x64\x91\x5e\x86\x12\x90\x73\xa6\x61\x8e\xc8\xbd\xfb\x07\x42\xa3\xac\x2b\xf3\x7d\xe6\xfb\xa5\xd9\x99\x51\x70\x09\x88\x95\x31\xc1\xed\x90\x44\x96\xb4\x24\x34\x7e\x19\x11\xd8\xf4\x91\x61\x59\x40\xc4\xea\xf9\xf2\x25\x00\xa4\xf1\x17\xd4\x6c\xa5\xc6\x48\x31\x5c\x4d\x5d\x00\x0f\x39\x7d\x07\xf8\xbb\x73\xa6\x28\x65\x79\x1c\xba\x42\x6d\xde\xcb\x2e\xd8\x87\xd9\x7e\x49\xef\x1d\x5b\xf6\xe4\x3c\xbf\xa9\x28\x64\x9f\x12\xe0\x43\x89\x79\x8d\x46\x7e\x2d\xc6\x4a\xee\x12\x27\x67\xb5\xfe\x6c\xc9\xb6\xe3\x57\x5d\x8f\xfe\x3a\x18\x25\x9d\x93\xfb\x3d\x26\x7c\x91\x4b\x24\xfa\xa7\x48\xc1\x2d\xa3\xea\x51\xe9\x41\x40\x3a\x3a\xaa\x17\x12\xc5\x65\x21\x6c\xb2\x60\x05\xf0\x6f\xf3\x57\x5c\xb5\xad\x21\x81\x61\xf3\x51\xfc\xcf\x58\xa9\x82\xb2\x70\xfe\xca\x7b\x0a\xe4\x91\xdd\xe6\x7d\xae\x57\x39\x15\x8c\x5a\xe6\x9a\x5a\x0f\xbd\xfa\x58\x4a\x3d\xa4\x6d\xab\x40\x45\xdc\x15\xa0\xb8\x47\x02\x28\xda\xb6\x2e\xf6\xa4\x9a\xda\xc9\xd6\xb6\xe1\x6a\x6c\x6a\xb1\x9c\x15\x14\x98\x5d\xdf\x0a\xb4\x69\x0c\x8a\x97\xe5\xbe\xfa\xdc\xab\xdb\x61\x2d\x1b\x0b\x6d\x25\x26\xb3\x93\x13\x9b\x58\x9a\x64\x41\x22\x79\x3a\x9d\x4e\x4c\x36\xcd\x0f\xc7\x6d\xa6\xea\xe8\x51\x56\x9b\xe3\x76\x07\x50\x84\x10\xdc\xa0\xdc\x6c\x7e\x34\xdf\xd2\xb7\x1b\xf5\xf0\xa7\xba\xba\xb7\xd7\x6f\x41\x88\x8a\x51\x10\xdc\xb9\x30\x99\xb3\x4d\xb9\x53\xdf\xb9\xbb\xaa\x2b\x00\x29\x0a\xb8\xd8\xaf\xc5\xae\xd1\x97\xf7\x65\x5e\xdd\xc3\xd5\x6f\xdf\xef\x72\xf5\x00\x57\x55\xb5\x05\x44\x29\xd9\x00\xc2\x48\x13\x3d\x22\xf3\x49\xa2\x8e\xa1\x8c\x89\xbd\x22\x11\x81\x6e\xc7\x9b\x13\x83\x9b\x11\x53\x49\xf4\x42\xfc\x62\x60\x5a\xfa\x1f\x83\x7b\x61\x39\x5f\xcf\xaa\x72\x18\x1b\xb1\x74\x92\x15\x38\x79\x60\x16\x42\x45\x93\x75\x0a\x08\x02\xde\x3d\xff\x39\x0b\x4b\xb6\xa6\x68\xd5\x6e\x07\x31\xc9\x52\x90\x6b\xd9\xdb\x75\xda\x89\x2f\x9c\xc4\x41\xcf\xf7\x95\x3a\x90\x12\x2e\x1d\x56\x53\xa8\xf8\x0a\xb4\x18\x42\xcf\xf5\x9c\xd2\x58\x45\x65\x92\x01\x76\xb3\x73\x50\x91\x5e\x60\x4b\x08\x61\xa9\xf8\x5f\xcd\x36\x29\x29\x7a\x23\x86\x2a\x59\xa4\xd3\x05\x7d\xae\x92\x17\xe9\xd4\x9b\xad\x76\x55\x65\x94\x6a\x36\x60\x07\xb3\x83\x60\x48\x8e\x09\x68\x07\xcc\x3e\x65\x1f\x4d\x00\x3d\x0c\x5e\xc3\xa9\x84\xfd\x20\xa7\x1c\xf6\xd9\x73\x0e\x5d\xef\xf0\x78\x18\xcd\x41\xf6\xea\xb0\x9e\x3b\x0e\x9d\xd0\xb6\x0d\x75\xb3\x38\x29\x77\x6b\x55\x97\x7a\x5d\x4c\x42\xdd\x27\xcd\xa0\x4f\xf4\x16\x2d\x01\x86\xfc\x00\x5e\xc9\xb9\x3e\xb0\x00\x59\x0c\xde\xb7\xa1\x61\x6f\xe8\xa3\x99\xef\x4f\x01\x54\x8d\x8e\xb6\x73\xb8\xf8\xfd\x71\x36\xb3\xe2\xbf\x32\xda\xfd\xb1\x0d\x8b\x6e\x48\xe7\x4c\xfa\xc2\x2c\x0c\x3f\x6a\xf6\xad\x9c\x82\x9a\xa6\xde\x8a\x8d\x19\x57\xa0\x76\xde\x66\x90\xe9\x6d\x06\x3b\x0f\x31\x26\xe7\x32\x0e\x7b\x9b\x50\x61\x9c\x4e\xe7\x68\x3e\xfd\xc3\x71\xab\xea\x52\x86\x8a\xc6\xaa\x6d\xe7\x11\x78\xf0\x74\x9a\xc1\x84\x20\x13\x4d\x98\xd9\xb3\xd3\x33\x0d\x9e\xd7\x3c\x3e\xdc\x8b\x7c\x77\x61\x19\xff\x68\x76\xd3\xf3\x10\x56\x34\x08\x10\x0f\xca\x3b\x0b\x62\x24\xef\x43\xc1\xfe\x96\xb1\x73\xf1\xc4\xaf\xb6\x2f\x4e\x34\x72\xd7\x0e\x6a\xa0\x19\xa9\x07\xa2\x8f\xe5\x41\x00\x67\x8a\x1d\x50\x20\x23\x24\xcb\x63\xb3\x1d\xe7\xec\x9f\x38\x6a\x14\x65\x8a\x46\x73\x6a\x00\x6b\xcc\x6e\x67\x27\x07\x74\x8f\x93\x8f\x8d\xec\xd7\xa6\x2a\x3f\x98\xfe\xd1\x44\x54\x5f\x48\x1a\x0f\x64\xa6\x06\x4d\xd1\xcc\x34\x73\x4b\x41\xf9\x1b\xcf\xe6\x8b\xe7\xde\x78\x23\x7b\x30\x7b\xb6\xa0\x53\x42\xa2\x0c\xb6\x7c\x42\xce\x7a\xc8\x9d\x17\x76\xf6\xe6\x03\x39\x2d\x40\x04\x74\xf3\x25\xa3\x31\x01\x76\x27\x74\x72\xbf\xe9\x62\x3e\x7f\x9e\x69\xd6\x23\x22\x84\x15\x28\x40\xc4\xaa\xb5\xad\x74\x57\x84\x2c\xa5\x89\x02\xce\xc2\xec\x15\x5f\x18\x79\x5a\x46\x35\x81\x88\x16\xe7\x75\xb9\x0d\x3b\x23\xee\x37\xa8\xc6\x0e\x02\x39\xb4\xe5\x84\xb8\xe2\x67\x3e\x4f\xf8\x25\x4b\x46\x67\x10\xa2\x60\x92\x77\xbd\x14\xda\xca\xf0\x37\x9d\x9d\x75\xef\x73\x8a\x46\xc5\x94\x5c\x90\xa9\x32\x91\x06\xdd\x28\xfa\x62\x80\xd7\x59\x78\x3b\x1b\x11\xa6\xb1\xd1\xd1\xcd\xba\x09\xfd\xe8\x38\x2d\x0c\xa2\x7e\x69\x19\xae\x3f\x67\x2c\x11\x96\xae\xc3\x40\x71\x5d\x80\xca\x4e\x5d\x6f\xd8\x73\x42\x98\x65\xcb\x09\x61\x86\x55\x37\x24\xd9\xb9\xa6\xdd\xad\x53\x31\xd5\x2b\x15\xcd\x83\x23\xdf\x90\xc4\x59\x12\x83\xde\xfd\xf1\xa4\xb7\xfd\xb3\xe8\xdd\xb1\xf4\x60\x3d\xa3\x44\xa6\xcb\x97\xc6\x95\x4a\x25\x62\xfa\x2e\xc9\x53\x5d\x7c\x91\xe4\x69\xdb\x16\x49\x7e\xf9\x02\x7e\xe7\x1e\xbb\x7c\x62\x7f\xf2\x0c\xab\xc2\x41\xcd\xf4\xfe\xcd\x7f\xc9\xe8\xd0\x18\x77\xb8\x61\x3f\x6d\x7b\x36\xd0\x81\xe8\x86\x68\x92\x1c\xc2\x31\x77\xa1\x91\xb1\xb9\xb9\x21\x30\xbd\x60\xc6\xca\xb0\x36\x45\x92\x25\xab\x34\x75\x4b\x5e\xdf\xe1\x51\x6b\x9b\x52\x9c\x7a\x66\xbf\x10\xc6\xdd\xd3\x41\x31\xb0\xdf\xb0\x87\xe8\x89\xe9\xa4\xf3\x40\xad\xf4\xc4\x9a\x75\x75\x3f\x22\x80\xfd\xbb\xb1\x56\x05\x4b\xa5\x75\x99\x8f\x89\x82\x4d\x1e\x7a\x62\x87\x6a\xb5\xda\x8c\xc5\x70\x24\x59\x55\x6d\x94\xd8\xf9\x51\x65\x4d\x5c\x59\xfd\xe1\xd0\x58\x27\xeb\x0f\xd8\xeb\x21\x62\xc0\xcf\xf8\x91\x78\x8b\xbf\xf6\x3d\x7b\x8b\xaf\x42\x50\xce\x8e\xdb\xff\x47\x8f\x95\xb2\x32\x65\x75\x7f\xf1\x8f\xac\x83\xd3\x9b\x95\xbb\xf2\xe0\xe5\xfb\xd7\x7f\x39\x6d\x67\xef\xee\x95\xda\xf1\x7f\x64\xcc\xcf\xc9\x1f\x65\xb5\x6b\x0e\xf5\x11\x42\xf5\xfc\x23\x63\xfa\xcd\x11\x34\x11\x56\x18\x33\x58\x8c\x6d\x64\x40\x75\xea\x6a\xcf\xa5\x45\x57\x68\xca\xdd\x4a\xf3\x04\xa4\xb9\x87\xfd\x1b\x71\x1d\xd0\xc0\x92\x67\x16\xd9\x4d\xd4\x07\x6b\x44\x7c\x8f\x17\x12\x70\x42\xb1\x90\x5d\xce\x73\xbc\x3c\xee\xca\x03\xa0\xa6\xfa\x84\x8f\x4c\x63\xcd\xbc\x6a\xb2\xe7\xc4\xe4\xb1\x3e\x37\xa8\xc3\xb6\xed\x71\xde\xbb\x4a\x76\x20\xcb\xfa\x04\x58\xa9\x03\x7a\xac\x1a\x2b\x72\xff\x9d\x0e\xd3\xdf\x3d\x3f\xb1\xfa\xb8\x3b\x07\x01\x62\xf2\xf7\x3e\x86\x29\x55\xc3\x33\xee\xf7\xc5\x2c\x3f\xd6\x80\x6b\x17\x6f\x4d\xaf\x25\x5e\x0f\xa6\xd6\x7e\x78\x98\xfb\xb9\x60\x73\xb6\x18\x7f\x46\x23\x6b\x74\x5c\xdd\xf3\xd0\x76\xe5\x65\xd7\xe5\xf4\x79\x36\xed\xee\xfa\x85\x34\x07\xb5\x37\x86\x8d\x7e\x52\x67\xe0\x85\x08\xf0\xb6\x7c\x6b\xa1\x06\x7a\x07\x75\x88\xe1\xff\x67\x7b\xd2\x3d\x67\x68\x1f\xc5\xce\xa6\xaa\x37\x1f\xfd\x67\xcc\x2f\x8f\x3f\x3a\xef\xf7\xc1\x51\x6f\x06\x64\x88\x68\xac\x6b\x9d\x08\x1c\x92\xb6\xc5\x7b\x2b\x4f\x31\x36\x28\x5e\x9a\xcd\x19\x5b\x96\x23\x14\x26\xb4\x17\xa4\xeb\x93\x92\x65\x41\x80\x3a\x4f\x4d\x56\xc7\x59\x34\xa7\x51\xff\x33\xc3\xe3\x1f\x2c\xb1\x1e\xa0\x3b\x5d\xf9\x67\x29\xa1\xb0\xc5\x38\x69\xcf\x48\xf5\x3c\x72\xd8\xbc\xd7\xa7\x7a\x4d\x22\xed\x76\xca\x5e\xf5\x35\x13\x76\x3f\x15\xb0\xac\x86\xb5\x06\x0e\xed\xfe\xe4\x06\xc6\x8c\x9f\x43\x4e\xe6\x23\xc9\xaf\x55\x81\xc8\x80\x03\x24\x3b\xa8\xb1\xcf\xef\x41\x42\xcf\x06\x7d\xec\xe3\x16\xe1\x11\xf6\x90\x47\x7d\x76\x8b\x7a\x34\xba\xfb\x89\xc1\xee\x32\xf2\x6c\xf6\xef\x97\x20\x96\x92\x55\x13\x8a\xe7\x70\xf9\xd3\xf7\xf4\xea\x05\x94\x5c\x3c\xf0\xb3\x49\xc7\xdc\x48\xf0\x47\x94\x35\x3f\xcb\xd8\x87\x8c\x09\x89\x31\xfa\x70\xe7\x6f\xf5\xa6\xdc\xea\xad\x98\x3e\xbb\x62\x99\x1c\xc8\x86\xe3\xc8\x88\x87\x5b\x6a\x45\xc9\x68\x90\xd2\xc9\x93\xa5\xe4\x57\x5d\x88\xdc\x67\x57\x2c\x97\x3c\x29\x65\xca\x94\xe4\x8f\xe4\x39\x89\x92\xa7\xd0\x60\xac\x9f\x8a\xde\xb8\xbb\xc0\xd8\xb8\x5f\x2a\x9e\x49\x2b\x98\x33\x16\x01\xc9\x17\xe9\x60\xbf\x14\xdd\x7e\xc9\x56\x7c\xf0\x08\xe5\x74\x13\x60\x74\xa6\x39\x0d\x02\x5b\x20\x4e\x7f\x69\xe6\x0f\xa5\x6c\xcd\x17\xac\xe4\x2f\xe0\xac\x5f\x05\xc1\x2a\xf9\x22\xd5\xaf\xd1\xc7\x42\xef\xd0\xfa\x96\x29\xbd\xf3\x83\x88\x77\x9a\xb7\xed\x62\x99\x57\x17\xe0\xa7\x48\x66\xff\x4e\xd8\xea\x8a\xaf\x99\x9d\x97\xb6\x5c\xb6\x9a\x16\xd6\xaa\x7f\xad\x19\xef\xb5\x6d\xdb\x95\xae\xcc\x62\x02\x4a\xd2\xcb\xcb\xb2\x0b\xe7\x0e\x76\x13\xd2\x1c\x22\xd3\x55\xdb\xea\x6f\xcd\x99\x34\x87\x05\x93\x70\x80\x68\xc6\x3b\x5e\x4d\x7b\x0c\x78\x34\xd5\xff\x29\x93\xa7\xd4\xb3\x39\x2c\x64\x77\xe2\x37\xea\xf0\xae\xdc\xaa\xea\x78\xf0\x4f\xe8\x67\x16\x52\xe8\x44\xd9\xb3\x8c\x1b\xac\xdb\x4e\x0c\xb7\x92\xfd\x08\xcd\x8f\x46\x37\x2a\x4e\xe0\xb6\x01\xd1\x2d\x51\x7c\xb9\x7c\xf9\x4a\x2d\xd5\x94\xbf\xb8\xcc\xa8\xe4\xef\x12\x95\xb2\x3c\xb1\x92\xc6\xa9\x4c\x79\x9e\x74\x32\x43\x99\x72\xe1\x38\x63\x30\x69\xb5\xdc\x40\x6e\x54\x61\x82\x32\x4f\xe6\xbe\x96\x96\x3c\xf3\xbc\xd6\x78\xa8\x24\xf0\xc6\x49\x4a\x6d\xd8\x02\x25\x13\xf2\x9c\xa4\x7a\xc6\xcc\xd9\x8a\xdb\x28\x0f\xcb\x95\x09\x3c\x51\x16\xa1\xee\xc0\x22\xc5\xdd\x5f\x6a\xd2\xca\xc9\xe8\xbc\x0f\x96\xf2\x09\x47\x69\xe3\x20\x6b\xac\xb6\x1f\x4f\x6c\xef\x38\x9f\x8f\x3d\x49\xd0\xcf\x9a\x3c\xf4\x22\x45\x32\x52\x3c\xe8\xa5\x46\xe8\x52\x62\x64\x6c\x08\x80\x34\x0c\xf8\x0e\x61\xeb\x8d\x41\xcd\x7a\x76\xdc\xc1\xc3\x3c\x08\xc2\xee\x06\xfc\xf4\xd6\x5e\x28\x76\xe6\xdf\xf8\xc6\x88\xdd\x3b\x6d\x5b\x6a\x4a\x8b\x75\x29\xd3\x29\xdb\xcd\xc4\xe6\x5e\x7c\x6a\xfc\x09\x31\x96\xd6\xbd\x74\x79\xc9\xba\x38\xf6\x50\x55\x67\x5f\xbf\xee\xc7\x86\x07\x30\xc6\xa1\xe3\x4b\x68\xa5\x02\xe5\xee\x22\x6b\x5b\x23\x1a\x00\x25\x19\x70\x64\xd5\x9d\xaa\x8b\x4d\x75\xcf\x93\xbd\xbb\x66\xdd\xe5\x7b\xef\xfa\xd7\x14\x1d\x14\x07\x02\x01\xb6\xe1\x2e\xe2\xf5\x4d\xec\x75\xbe\xaf\x62\x69\xdb\x6f\xb3\xb0\xf3\x52\xa7\xd1\x0d\x33\x0c\x95\x7e\x6d\x63\x35\x11\x3e\xdb\x8e\x02\x44\x0a\x02\x5c\xcc\x0a\xa6\x9f\x3f\x28\x95\x37\xaf\xc5\xa7\xea\x78\x80\x00\xec\x50\xc6\x84\xf3\x7e\xf9\xf1\xde\xf0\xad\xd1\xbe\xd3\xd6\xf4\x38\x38\x70\x42\xb2\x4d\x83\xd0\x67\xae\x2b\x9c\x96\xed\xdc\xee\x34\xa4\x6d\x3b\x36\x5e\xde\xdb\x5d\xa9\xc9\x3c\xf5\xbb\xd2\x7f\xb2\xf0\x9f\xfc\xea\x3f\x79\x91\x9e\xa8\x07\x1a\x01\x9e\xee\x8a\x03\x7a\x87\x30\x9b\xa9\x42\xe7\x4d\x1b\x42\x57\x3f\x82\x5d\x93\xe0\xf1\xa2\x7b\x51\x31\xc5\x39\x0f\x3f\xc6\xba\x2d\x8a\x44\x04\xd7\x01\xbc\x87\xd7\x13\xae\xb7\xd7\x49\xed\x61\x7c\xd7\x49\x9e\x52\x59\xed\x0e\xe5\xee\xa8\x96\x1f\xf9\x64\x7e\xaa\x92\x3c\xe5\x75\x10\xd4\xc0\x24\x76\x1c\x53\x6e\xa2\xed\xdd\xf0\xce\xb3\x67\x18\x4e\xaf\xa2\xd4\x1b\xe3\xd0\x9b\x24\xc3\xb9\x80\xa1\xe7\xec\x38\xdd\xa0\x8f\xfa\x63\x1d\xdb\x81\x28\x77\x17\x35\x44\xa2\xab\x67\x98\x42\xa3\xb1\x65\xce\x1e\x4f\xe0\x63\x10\xda\x6c\x7c\xf2\x91\xb2\x8f\xf1\x36\x14\x8e\x11\xda\xcd\xf2\x6a\xa7\x7a\x18\x6b\xfa\xa9\xe5\x8b\xd8\xf9\x73\x24\x04\xcf\xc2\x00\xba\xad\xc5\x86\x1b\xbe\xa8\xa8\xcf\x51\x56\x49\x96\xd2\x93\x37\x92\x15\x5d\xf1\xb5\x0c\x3f\xc6\xba\x2f\xa3\x39\xcb\xd9\x8e\x32\x78\x52\xb7\x6d\xa8\x13\xf9\xca\xd0\xd2\x1f\x01\xcb\x44\x1f\x3c\x36\xc5\xfc\x7a\xea\x98\xbc\x6d\xed\xd2\xd6\x77\xfa\x3c\xe8\xa1\x9c\xdc\xc8\x91\x20\x46\x1d\xd8\x8a\xc0\x7d\xd9\x97\x9c\x4a\xa0\x00\x70\x36\x89\x44\xa6\xac\xe3\xc1\x0b\xd4\xb7\x40\xdc\x58\x7c\xc8\x8b\x64\xae\x0f\x3f\x13\x1c\x1e\xa0\xed\x0b\x1b\x8e\x51\x67\x18\x08\x54\x73\x94\xa0\xa2\x28\x03\x84\xa8\xfa\xa8\x5f\x19\xd7\xe7\xb0\xa0\xdd\xbb\x79\xda\x55\xb3\xa0\x58\xdb\xb6\x0d\x5d\x74\x1b\x96\xe9\x2b\x65\x66\xa0\xae\x30\x57\x5d\xbb\x6f\xcf\x8f\x11\x38\x97\x72\x69\x1d\x80\xf4\x09\xf0\xb5\x2a\x54\x5d\xab\x3c\xa4\x23\x8b\xd9\xd4\xa4\x04\xaa\xe2\x04\x51\x39\x7b\xd6\xe6\x8a\xda\x80\xc8\x4b\x7b\x36\x66\xfc\x59\xd6\xb6\xfa\xf0\x67\x92\x7b\xaa\xcc\x1b\x1c\x37\x4d\x06\x4c\x6f\x1c\x6f\x75\x89\x64\xd7\x55\x97\xa2\x69\x8e\x82\x2f\x2e\x73\x50\x68\x97\xfc\x66\x76\xd0\x14\x5a\xe7\x7e\x67\x24\x1d\x36\x3d\x59\xa5\xb3\xfa\xb8\x0b\x3b\xec\x8a\xf5\x6c\x57\x1d\xca\xe2\xd3\x2f\xe5\x61\x1d\x0a\x96\xdc\xb0\x82\xe9\x51\x58\xbc\x2a\x82\xa0\x8c\x65\x14\xae\x67\xb5\x6a\xaa\xcd\x9d\x72\x59\x52\x00\xef\x3d\xb1\x1b\xbe\xd6\x84\xec\xb6\x6c\x94\x89\xb2\x24\x4c\xc0\x1e\x1f\x4a\x27\xa3\xac\xda\x1f\xbc\xb4\xc9\x9c\x3d\x1a\x67\xf4\x6f\x80\xcc\x8e\x1e\x4f\x27\x26\xa9\x0b\x04\x61\x2c\x86\x4b\xd5\x44\x99\x4b\xfc\x11\x19\xc2\x48\x32\xd7\x35\x91\xeb\x3c\xdb\x1f\x91\x74\x5d\xc3\xb0\xc5\x51\x92\x32\x8f\x76\xed\x85\xdc\xb4\x1a\x4b\x23\x90\x08\x05\xbb\xd1\x7c\x67\x03\x92\x06\xbc\x9c\xf5\x2a\x0a\x34\x8c\x79\x80\x1c\x82\xeb\x47\xd7\xf3\x06\x6d\x8b\xe5\x08\x70\x1f\xf9\x96\xdc\x48\x4f\xcf\x59\xce\xb3\x78\x30\x54\x11\xec\x85\xaa\x87\x1d\x8a\x01\xb9\x26\x73\xe7\x48\xe8\x86\x51\xe2\x30\x2e\x3c\x94\xa8\xf3\x61\x62\x59\x4a\x23\x9d\xac\xb7\xd5\x5e\x2a\xb3\xde\x41\xb7\xfc\x06\x23\x46\xc1\xb7\x6e\x64\x78\x3b\xda\x6e\xda\xa7\xca\x72\xe9\xc8\xb2\x1b\x26\x98\x7d\xa7\xa3\xce\x96\xce\xc3\x74\x2b\xf6\xe1\x2d\x5b\x4b\x76\x43\x59\xcf\x57\xce\x7e\x06\x44\x02\x41\xe0\xdf\xda\x90\xae\xf0\x4a\xf1\x00\x11\x1e\xea\xd0\x4d\x9f\x92\xd9\xb9\x26\x76\xe5\x36\xba\x61\x40\xe5\x44\xa6\x04\xb8\x39\x41\xe4\x63\x8b\xc6\x68\xbf\x65\xef\x29\xee\xd5\x26\x55\x5f\xdb\x46\xcb\x6a\xbb\xd7\x6b\x98\xce\x0a\x51\x6e\x6c\x0e\x7d\xed\xd6\xbb\x49\xc3\x3b\x7a\xda\xce\xbe\xdc\x95\x5b\x98\x70\x1d\x7e\xd4\xad\x64\x8f\x30\x50\x67\xf0\x9a\xbd\x2e\x10\x54\x73\xf8\x82\x09\x8e\x94\x70\x24\x34\x81\xea\x24\xaf\xcb\xa1\x9b\x94\x18\x22\x5b\x21\x94\x17\x53\x12\x36\x36\x09\x0e\xa6\x89\xb9\x9f\x1d\x77\x18\x6e\x35\x43\xb7\xfc\xd1\xe8\x4c\x59\x9c\x4b\x97\x51\xd0\x28\x37\x58\x09\xc2\xc8\xc4\x9b\xbd\x52\xf9\xb8\xed\x39\x17\x41\x70\x8e\xa6\x1a\xfb\x0b\x5f\xd0\xe8\xd1\xf6\x68\x24\xdb\x76\x22\x83\x20\x43\x9d\x94\xd7\x07\x41\x20\xba\xe5\x2b\x18\x2e\xab\x08\xb3\x66\x26\x3a\xe5\xb7\xdd\x1a\x0a\x82\xec\xe4\xac\x3f\xdc\x62\xe7\x30\x51\xaa\xa2\x88\xe7\x91\x55\x56\xba\x5a\x75\xd9\xe2\xee\x32\xea\x2e\xf5\x49\x81\x0c\xb8\x6e\x6e\x13\x7b\xd7\x49\x97\x2b\x8d\xbc\xf4\x0e\x99\xc6\xa0\x0c\xe7\x96\x51\x30\x17\xa0\x7f\x43\x17\x40\xbc\x47\x6e\x21\x9f\x55\x9b\x9c\xe7\x6e\xa2\xb1\xee\x92\xf7\xf0\x5b\xbd\x36\xc3\x3b\x34\x08\xe0\xb7\x13\x85\xe9\xc2\xa0\xe8\x20\xd8\xce\x72\x85\xa4\x3e\x30\x3b\x26\x9d\x9e\xf4\x1e\xd4\x93\xb0\x17\x22\x57\xef\xaa\xdf\xc1\xfb\x35\x8e\xff\x3f\x53\xa0\xa8\x9d\x5d\x01\x9b\x5b\x62\x48\x53\x18\xfa\x00\x84\x89\xaf\x42\x67\xa6\x90\x9d\x18\xea\xe1\x4e\xcc\x3c\xfb\x4c\x80\xa0\x3e\xcd\x27\x28\x00\xc3\x41\xe7\x62\x30\x64\x4d\x07\x0c\xa9\x29\x7e\x2b\xb1\x85\xfd\x59\xc6\x0a\xba\x0c\x55\x07\x59\x87\xd0\xe2\x45\xb9\x2b\x9b\x35\x28\x95\x32\x08\xe3\x11\x02\x82\xb7\x55\xb9\xcf\xf0\x39\x5f\x31\xd5\xb6\x45\x37\x68\x8b\xb8\x93\x8f\xaf\x8c\xb0\x1c\xfb\xd6\x64\x62\x2b\x3a\xdc\xd9\x7b\xeb\x62\x0c\xa2\x5d\x67\x5f\xba\x40\x0a\xfa\x8e\x65\xa1\x74\xb5\x39\xf7\x6c\x77\x28\xc2\x7a\x77\xb0\x48\xc2\x59\x10\x88\x09\x82\x09\x7b\xd5\x12\x6d\xab\xe7\x16\x4b\xd2\x27\xc0\x85\xb1\x12\x60\x95\x63\x84\x79\x41\x20\xa6\xa4\xe3\x65\x09\xf4\x3d\xec\xb2\x8d\x07\xc9\x07\x93\x0c\x0f\xa5\x55\xa2\xd2\x20\xd0\xff\xa1\xf2\x41\x90\x87\x2b\x44\x7f\xb0\xa1\xb3\x11\x04\xe6\x3c\xa3\x94\xd6\xbc\xa6\x7b\x09\x8f\xb5\xc2\xed\x66\x97\x97\x4b\x5a\xe8\x57\xf4\xb6\x3e\x41\x60\x0f\xb4\xd8\x81\xba\xc2\x23\xa8\xed\x84\x73\x4d\xd1\x41\x82\x9e\x61\x38\xac\x92\xb2\x8c\x4f\x16\xac\xb0\x81\xc7\x15\x5b\x50\xba\x0c\x33\xbd\xe3\xd0\xb3\xd5\x21\x00\xe6\x00\x47\x7f\x54\xae\x37\xb1\x41\x44\xb9\xe9\xda\xcf\xf5\x2b\x04\x03\xf1\xfa\x4b\xd3\x67\x89\xed\x5d\x92\x32\xe5\xdd\x62\x67\xa7\xfd\xde\xce\xe3\xbc\xa3\x00\x80\x7e\xb5\x33\x73\x32\x77\x1c\xbc\x41\x68\xd0\x43\x8c\x91\xe5\xa0\x6f\xf1\xd7\xf3\x01\x9f\xe8\x49\xd2\x75\x6c\x86\x1d\x9b\x61\xc7\x1a\xc4\x14\xdd\x9f\x59\xea\xe6\xbb\x00\x6b\xc3\xcc\xef\x4f\xf0\xb8\xb6\x7d\x99\x41\x5f\xa2\xf0\x68\xbe\x5c\xbd\xca\x00\x27\x23\x07\xcf\x21\xfd\xdf\x54\xb6\x77\xe3\xed\x51\x76\xd2\xdb\x46\x9d\x68\xcf\xf2\xc0\x30\x9e\x0c\x59\x4b\x86\x4c\xe7\xd0\xfe\x00\x89\x26\xf0\x23\xce\xd2\xa5\xf9\xf5\x0f\xa5\x9e\xfa\x09\x25\xee\x6d\x3b\xa6\x13\x93\x4f\x44\x2f\x80\xe1\xb5\xdb\xd9\x4a\x86\x19\xf4\x24\x16\xec\xfb\x50\x37\x9b\x32\x57\x5f\x57\xf7\xbb\x68\x25\x0d\x3b\x4c\x19\x24\xfe\xbc\x87\x24\xa8\xbf\x49\x7a\x87\xda\x3a\x9d\x6c\x9a\x49\x99\xde\x7f\xbf\xdf\x75\x86\x5d\x58\xc6\x09\xd2\x7f\x3c\x1e\xbc\x07\x50\x12\x3e\x30\x05\x75\xcf\x4c\x71\xa7\xdf\x77\xb5\x3e\xdf\xdc\x6d\x2b\x33\xbb\x55\x43\xf3\x70\x36\xf2\x24\xb5\x04\x97\xbc\x1d\x6e\xbe\x82\x65\xdd\xb4\x95\x46\xa0\xd8\xc9\x21\x97\xd2\x05\x5e\x05\x4a\x55\x70\xcd\x6d\x31\x11\xd2\xb6\xd5\x57\xb8\x74\x33\x3b\xad\xe4\xe5\x25\x5b\xd0\x65\xe6\x64\x52\x46\x00\x0e\x41\xab\x3b\x49\xa7\x47\xff\x0d\xc2\x36\x60\x45\x2c\xb5\xa2\xbf\x63\xb5\x19\xa2\x3e\x84\x34\xea\x72\xe8\x22\x4d\x41\x10\x58\xe9\x4e\x6c\xf8\xe2\x0b\xd6\xe5\xf6\x5b\xfa\x21\x6b\xdb\xf0\x43\xc6\x1b\x75\xf8\xde\x64\x0e\x5d\x97\xf4\x0b\xa1\xb6\x54\x5d\x6b\xbf\x0c\x30\x81\x72\x6f\x7f\xc8\x28\xfb\x80\x90\x2c\x36\x3f\x50\x10\xfc\xb1\xd9\x54\xf7\xd1\xff\x9c\xcf\x59\x21\x9a\x43\xf4\x62\x3e\xef\x30\x95\x5f\xce\xe7\xe6\xe4\xce\xd5\x46\x7c\x1a\x8f\xec\x26\x80\xe8\xe9\x51\x2b\x22\x6d\x5b\x01\x10\x30\x99\x39\x15\xbc\x83\xc2\x33\xb1\xf1\x8e\x2b\x4f\xd8\x9c\x31\x41\x97\x72\xbc\x3d\x36\x8f\x01\x4e\x3a\x9f\x1c\xa8\x9b\x5d\x7e\xc6\xbf\xad\x51\x07\xcf\x82\x43\x6e\x44\xd3\xfc\x20\xb6\x7a\xf5\x1f\xfe\x1f\xf9\xbf\x9d\x55\xd5\x02\xf2\x30\xe3\x26\xf0\xb4\x63\x8b\xc1\x0b\xa5\x94\x89\x27\xbf\x63\xc0\xe9\xf4\xb7\xce\x7c\x9b\xc0\xff\x67\xff\x40\xd8\xad\x7e\xf9\xad\xd7\x35\x9c\x1c\x30\x04\x8b\xeb\x21\x76\x8b\x6f\xf3\xab\x43\xb5\xbf\xb2\x90\x14\xab\x5e\x77\x42\x06\x5d\x9d\xdb\x99\xee\xa1\x1f\xc0\x74\xac\xfc\x4d\xe5\x9c\x5c\x09\x34\x35\xef\xbf\xa0\x73\xa1\xc5\x9e\xee\xb4\x1f\x77\x10\x8f\x17\xe0\x50\xc1\xba\xa9\xc3\x3e\x55\x0e\xfb\x94\xdd\xce\xd4\x4e\x42\x57\x4f\x26\x67\x3d\x82\x21\x99\x6c\x0e\x26\x5d\xc0\x69\x7d\x90\x41\x91\x5f\xbb\x04\xe5\x1e\x32\x71\x3e\x0a\x16\xd4\x4f\x0c\xa6\x0c\xd4\x8e\x80\xfa\xf3\x76\x06\x99\xd0\x9b\x4f\x0c\x9a\x86\xf9\xf4\xfb\x08\xf3\x4a\x0e\xe4\xac\x2c\x00\x4d\x66\x26\x0c\x8e\x2e\x0f\xae\xfe\x6e\xf3\x73\x07\x17\x6b\xbd\xc0\x37\x92\x5f\x5d\xd7\x57\xab\x65\x8f\xa0\xbe\x13\x9b\x31\x75\x3c\xa0\x88\xdb\x20\x0a\x60\x8f\x3a\x04\xe3\x71\xc8\xa1\x03\x6e\x68\x8c\xd4\x30\x6b\x55\x2d\xcf\x80\xd0\x40\xba\x96\xc7\xa2\x87\x03\x63\x6d\x36\xf4\xee\x43\x69\x24\x8c\x8a\x42\xc5\x8a\x83\xb9\xfd\x80\x3b\x52\xb1\x9a\xea\x07\x9d\xd4\xce\x58\x49\x23\xf3\xae\xc6\x40\xf0\x2c\xde\x14\x21\x91\x00\x4f\x67\x0a\xa7\xc3\x9d\xd8\x78\x06\x08\x26\x8a\xfe\x30\x79\x1c\x1a\x39\x05\x8d\xb6\x31\xf8\xcc\x3c\x23\xd8\xcc\xe9\xec\x99\x62\x76\x68\x6d\x68\x6d\x1c\x5f\x45\x0d\xc2\x8d\x93\x9e\xf4\x2a\xa3\x46\x6a\xa2\x3e\x5b\x8d\xd5\x79\x35\x00\xd5\x79\xa5\x0e\x61\x57\x09\x1a\xcb\x28\x94\x5c\x99\x55\x33\x6a\x47\x65\x0d\xce\x36\x12\xe0\xac\x4c\x44\x1a\xdd\x6f\xd2\xa2\x11\x7a\x53\xc9\x99\x7d\x03\x83\x3a\x6e\x5a\x30\xc4\x17\x37\x95\xf1\x2d\x0e\x26\x60\x11\x60\x6c\xec\x0c\x48\x21\x40\x59\x33\x5c\xc9\xe7\x25\x3b\x71\x24\x03\xf4\x37\x6b\x7c\x01\x32\x07\xbb\xfa\xc1\x6a\x1b\xec\xc5\x20\xe1\xd2\x48\xe5\x85\xc1\xc6\x99\xbf\x52\x9a\x63\x8b\x75\x05\x22\x88\x79\x5f\xc4\x6a\xba\x88\x2c\x75\xcb\x4a\x3e\x7f\xa5\xe2\x75\x54\xc4\x2a\x9a\x2f\xd7\xaf\xca\x65\x89\xf2\x24\x89\x10\x93\x93\x70\x22\xdd\xc7\x82\xa0\x44\x45\x43\xd8\xdb\x39\xe2\x6e\x57\x89\x0c\xdc\xba\x1c\x2c\x7e\xfb\x9c\x50\xda\xb6\x3d\xb8\x38\xfb\xa4\x87\xc2\xe6\xe7\x60\xc4\x06\x19\x20\x14\x55\x1e\x19\xdf\x86\xd2\xac\x24\x56\x74\xae\x46\x26\xb2\x7c\xe6\xf4\xc1\xab\x27\xad\x2d\x4d\xa4\x78\xdb\xa3\x05\x2c\xab\x5b\x65\x6d\xd4\x7c\xcd\x27\x2a\xa0\x57\xe8\xe7\x94\x73\x95\xac\x40\x96\x6e\x40\x4b\xbb\xd9\x6b\x0a\x83\xe9\x98\xeb\x7a\xbd\xe2\x73\xb0\x82\xce\x3b\x98\x6a\xc9\x27\x16\x2f\x6c\x4d\xf5\x03\x30\x95\x40\x6b\x7d\x14\x80\x7b\x99\x27\x0b\x1f\x28\x66\x30\xe4\xfc\x72\x41\x99\x3a\x9d\x7a\x84\x3b\xee\x9b\xac\x0b\x1a\x96\xb2\x9e\xf8\xa2\xb7\xe4\xd3\xa1\x75\x46\x0f\xf5\xbf\xb3\xd7\x8b\x1d\x6a\xb7\x87\xd5\x0a\x6a\x16\x1c\x80\x4c\x37\xd4\xa1\x73\x74\x47\x17\x58\x1a\xf4\xbf\x08\x7e\xfa\x4f\x6e\x5c\x4f\x9d\x18\x31\xa9\x76\x24\xb2\x1b\x3f\x35\x00\x41\x5b\xc9\x76\x92\x55\x12\x01\x57\x6b\x58\x79\x18\x3c\x87\xed\x8d\x7d\x86\xa9\x76\x6b\x3b\x8e\x3e\xbb\x2a\xd9\x47\xc9\xcf\x0e\x77\x56\xeb\x44\x38\xbb\xfa\x07\x89\x2e\xf4\xb3\xc6\x8f\x5b\xf8\xee\xd3\x16\x86\x9d\x89\xec\x93\xc0\x68\xe7\x51\x82\xba\x97\x3c\xde\xb8\xb7\x2b\x9d\xd5\xab\xaf\x21\xe9\x54\xc6\xcb\xce\xeb\xa2\x40\x67\x8b\x22\x08\x5e\x80\x6d\x86\xad\x83\x17\x51\xa3\xa3\x76\x38\xff\x4b\xbc\x05\x19\xb4\x35\xa8\x04\x0c\x50\x80\xfc\xea\x01\x97\x87\x19\xcf\x06\x50\xd1\x7a\x9e\xc0\x68\x38\xdb\xfb\xd0\x8c\xd1\x16\x02\x43\x6b\x16\xd0\xc2\x58\xc4\x3b\x19\x6d\x7b\x06\xf7\x32\xce\xbb\xbd\x3e\xb7\x86\x58\x5c\x9f\xa8\xc6\x44\x3f\x03\x97\x0b\x38\x0a\xfd\x3d\x37\xa3\xee\x48\xc5\xc2\x22\x45\xdd\x76\x04\x85\x36\xae\x50\xdf\x99\x23\x77\x8e\x0b\xa6\xe0\x01\x51\x92\x31\x39\xd5\xc4\x8d\x74\x71\x11\xbd\xf1\x81\xda\x3c\x31\xcc\xe7\xd1\x4b\xb2\x20\xc8\xb0\x13\xc2\x6f\x10\x0d\x2d\x08\xfa\x2a\x7e\x13\x5b\x49\xf2\x02\xb1\x8a\x75\x5f\xea\x51\xf8\xb6\x7c\x00\x39\xb2\x64\x4f\x74\xa5\xa4\x71\x2d\x83\xe0\xa3\x6c\xdb\xc9\x5e\xba\x34\xd0\xe4\x4d\x16\x91\x48\x7c\xdd\x20\x31\x1c\xcd\x25\x99\x4a\x9a\x72\x9b\x69\x6b\xbb\x12\x8e\x45\x76\x1e\xd4\xe2\xa3\x8c\x65\x04\x82\x44\x3b\xbc\x11\x06\x0f\x1f\xd9\x49\x10\xcc\xbb\xa3\xdf\x82\xa0\x8b\xbc\x39\x0c\x66\x62\x69\xcb\xce\x14\x1e\xd6\xba\xb3\xc9\x1c\xa5\x12\x33\x30\x31\x0c\x2d\x39\x29\x29\xcb\x4e\xb8\x1f\xee\xe4\xf9\xd6\xa6\x17\x88\x23\x43\x40\xa0\x38\x18\x47\x49\xa3\xd1\x0e\xec\x7f\x7b\xf2\x51\xea\xba\xf7\x87\x44\xd2\xdf\xeb\x5f\x99\x6a\x72\x5b\x76\x51\x8a\xcf\x47\xb1\xa9\x8e\xb5\x54\x66\x76\x5c\x5d\xdf\x4f\xaf\x56\x74\x54\xe4\x52\x49\xe3\xcf\xe2\x26\xff\x12\x92\xf8\x59\xf5\x33\xda\x8f\x94\xde\xf9\xd9\x38\x51\x7d\xdb\x86\x05\x96\xc8\xb0\x10\xe5\xe4\x91\xd2\xbc\x13\x0f\xd6\x77\x84\xb8\xd8\x90\xbb\xd0\x67\xd0\x53\xfd\x2c\xed\x3a\x7c\xb2\x73\x32\x9a\x8e\x96\xae\x07\xd1\xb6\x26\xf4\x36\x13\x33\xd4\x9f\x1b\xdc\xd1\x79\x05\x15\x09\xfb\x21\x1e\x78\x46\xa3\xad\x1e\x4c\x69\xd6\xbf\x2e\x45\x7f\x18\x3f\xfa\xc4\x14\x32\x4a\x96\xde\x66\x09\x08\x29\x92\x7a\x7d\xda\x9f\x34\xf0\x1c\xe8\xb7\x91\x80\x36\xdd\xd4\x92\x80\x10\x89\x2d\xcc\x34\xed\x6f\xa9\x48\x74\x27\xca\xce\x0f\x48\x49\xe3\xac\x3b\x78\x2b\x39\x2b\x73\x5e\x49\x08\xc0\xa7\x7f\x65\x55\xd5\x79\x33\xae\x27\x5a\x0e\xc7\x28\x1c\x6d\x55\x46\xa9\x73\x1e\x86\xca\xc4\xe6\x37\xb2\x92\x13\x47\xfd\x60\x5c\xe5\x31\x27\x1b\xbb\xa6\x47\x4a\x77\xd5\x00\x5b\xe1\xbd\x92\x65\x51\x02\x3d\x89\x1f\xf1\x9d\x8a\x70\x9c\x4e\xcc\x9f\x0e\xc6\x63\x53\xe5\x25\x08\x22\xc6\x87\xcc\x0d\x30\x3a\xa5\xc4\x93\x45\x84\x43\xdd\xd1\x4d\x68\x86\xc1\xac\x05\xc6\xb9\xab\x95\x7f\x9c\x9d\x7d\xc5\x4d\x3e\xe3\xdb\x79\x7e\x80\xa0\x4d\x70\x77\x84\xcc\xf5\x36\x45\xad\x00\x61\x30\xc7\x51\xa8\x70\xc6\x0c\x74\x7b\xa1\x2f\xb2\xb0\xf6\x3e\x63\x84\xee\xf8\x1b\x3c\xd3\xac\xa1\x21\xa2\x1a\x43\x29\x61\x24\x3a\xa4\x93\x5a\x1b\x2a\xa5\xc5\x21\x6d\x51\x9d\x08\xc4\xd3\xc1\xe4\x17\xad\xce\xa0\x93\xfa\xf4\x92\xde\x17\x7f\x87\x5e\x42\x63\xe3\xcf\xd3\x4b\x3f\xf5\x8b\xe9\xc9\xd6\xec\xd6\x0b\x42\xb5\x71\x15\x80\x26\xba\x81\xcd\x17\xa9\x11\x59\x32\x0f\x36\x2a\x11\xa9\x21\xc1\x33\xfa\x78\x1a\x52\x56\xa6\xf8\xe8\x91\x14\x55\x4d\x22\xb2\x3e\x6c\x37\xdf\x56\xb5\x26\xaa\x37\xa2\x69\x48\xe4\x89\xc8\x4e\xec\xac\xbd\x03\x83\xc7\x71\x4a\x6c\x85\x94\xd8\x0a\x29\xb1\x95\xa5\xc4\x0a\xbe\x40\xc0\xb5\x49\x8f\xc6\x02\x1b\xa8\xcc\x6b\xb9\xde\xfd\x33\xf0\x0a\xeb\x7c\x0b\xb2\xd4\x92\x50\x40\xed\xa8\x8e\xda\x51\x3e\xb5\x83\x72\xa3\x8e\xda\xc9\x23\x01\x2e\x9a\x91\xea\x68\x2e\xd5\xd1\x5c\x3a\x7b\x47\x73\x61\x66\x6c\xb4\x3d\xfc\x45\x86\x6e\xc3\xff\x35\xae\xf8\x20\x32\x70\x35\x25\x9e\x81\x04\x78\xcc\x7d\x0f\x91\x93\x16\x73\x1a\x35\xd2\x86\x13\x72\x16\x65\x6d\x7b\x38\x4f\x84\xe8\xa5\xb5\x2a\xe2\x79\x74\xb9\x38\x19\xf7\xbf\xbe\x8c\xcd\x05\x24\x4e\x50\xac\xc6\x48\x53\xcb\x91\xc5\xed\xf7\xe2\x67\xd6\xdd\xaa\xbf\xa6\x5f\x76\x3e\x87\x4e\x2a\x07\x2b\xd9\x33\x84\xb7\x9c\xdc\x13\xbd\x23\x3c\x2e\xd7\x37\xe6\xcd\x06\xdc\x7d\x3f\xc4\x93\x7f\xd7\xcf\x88\x04\x70\x5f\x95\x63\x06\x88\x30\x52\x2b\x91\xff\xb8\xdb\x7c\x22\x8c\x6c\xc5\xc3\x6b\x58\x73\x7a\x5a\xab\xcd\xc6\x80\x8c\x98\xbb\x9f\x8c\x91\x31\x23\x75\x75\xff\x76\x2f\x76\x3a\xbd\xda\x98\xab\x63\xa3\xde\x88\x3d\x61\x04\xc0\x48\xff\x88\xce\xf3\xcc\x3a\xcf\x7f\x63\xb6\xe2\x21\xe7\x69\xe7\x2e\x8a\xa0\x7a\xb2\x1d\x90\x9d\x41\x4f\x1a\x21\xa5\xeb\xc5\x6f\xcb\x07\x27\xda\x24\x6a\x27\x2b\xa8\x16\xee\x5c\x47\xc9\xaf\x92\xeb\xc3\x75\x7d\xbd\xbb\x2e\xd2\xa1\x00\x50\xe4\xf9\x57\x7a\x99\x3e\x25\x05\xf4\xe2\x75\xf8\x60\xd2\x37\xe7\x6e\x77\x22\x08\x84\x35\x87\xf4\x04\x82\x9f\x01\x86\xd6\x73\xca\xc8\xfa\x6c\x35\x42\x5f\x14\x68\x1c\x9d\xdc\x36\x62\xc5\x64\x37\x14\xf5\x79\xa0\x3a\x26\xd4\xf1\x09\x6d\x9b\xa4\xcb\xf2\xd5\xda\x86\x04\x31\x71\x60\xd7\x29\xcb\xf9\x82\xfb\xf8\xfe\x60\x02\xec\xca\x8d\x43\x72\x41\xa6\x5e\xc2\x94\x5c\x78\x10\xc5\x47\xc9\xc0\x91\x50\xff\xa3\x8f\x85\x0b\x93\xa2\x78\x96\x14\xc0\x7a\x74\x6e\xe1\x17\x64\x8a\x6f\xff\x61\x1e\x04\x61\x3e\xe5\x78\xb7\x5c\x59\x97\xd1\x9c\x32\xef\x43\xb8\xb7\xf9\x75\xe1\xab\x01\x6e\xbe\x81\x15\xfa\xa7\xc6\x08\x1c\x96\x07\x87\x47\xdb\xfe\xdf\x1d\x39\xaf\x7e\xff\x5f\x0f\xde\x13\x63\x87\xb7\x63\x23\xf8\x8a\xcf\x69\xce\x73\x57\x92\x7b\xc2\xcc\x88\x42\x00\x15\x1c\xd3\x88\x90\xff\xe6\xb0\xa2\x0e\x74\x38\xac\x9e\xcf\x8a\x19\x9a\xe5\x53\x1e\x92\x99\x0f\xd0\xce\x65\x9c\xa1\xdd\x47\xb7\x90\xa8\x0f\x3b\xdf\x4f\x33\x8c\x55\xdf\x94\xcb\x17\xd7\xdb\xc1\xf5\x6a\x19\xf6\x85\xf4\xfd\xc1\xd5\x2c\x66\x46\x4f\x51\xdf\x5e\xd4\xaf\x9f\x9d\xb0\x68\x09\x66\xca\x07\x01\x4c\x6f\x02\x98\x80\xc9\xbc\x48\x72\x3d\x3a\x6a\xb6\x16\x0d\x7e\x3e\xa3\xb1\xea\x35\x26\xa3\x91\xea\x9a\x9b\xa1\x59\x6c\x28\x39\xe7\x7f\xe9\x69\xcf\x31\x88\x5d\xbf\xbe\x1d\xac\x10\xda\xda\x7c\xf8\xe0\x1e\x7d\xf8\x40\x86\x33\x77\x70\xcf\xfb\xb7\x6d\x2b\x90\x4d\x06\x1d\xc4\xd3\xa5\xa2\xef\x3b\x84\xa8\x30\x6d\x1a\x17\x61\x73\x3d\xd1\x04\x4c\xb4\xf3\x70\x14\xd6\x90\xd2\x8b\x34\x93\xc8\xb4\xe7\xf7\x70\x41\xa6\x36\xf9\xf3\x6b\xc2\xcd\x79\x90\x4b\x5a\xdb\xde\xf9\xd2\x1a\xf9\x7a\xc7\x23\xc9\x36\xc7\xfa\xa2\xa8\xe4\xb1\xc1\xff\xe5\x0e\x7f\xab\xe3\xe1\x62\x53\x89\xfc\xa2\x56\x4d\xf9\x9b\xba\x40\x31\xed\xc5\x71\x07\x89\x72\x53\xca\xdb\x8b\x3c\xdb\xe0\xc5\xb6\x3a\x36\x2a\xaf\xee\x77\x78\x75\xdc\xe3\xaf\x1e\x52\xbc\xaa\xee\x54\x6d\xae\x8e\x07\xbc\xd0\x4c\x8b\x49\xdb\x28\x71\xa7\x2e\xe4\x5a\xec\x56\xea\xc2\x04\x42\x6e\x8e\xd9\xb6\x3c\x5c\xdc\xaa\x4f\x50\xee\xad\xfa\xb4\xaf\x55\xd3\xe8\x8b\xe3\xfe\x42\xd5\x75\x55\x5f\xc0\x81\xfb\x70\xd8\xaa\xdd\x91\x78\xe6\x89\x63\xc6\x07\x7d\xbb\x8c\x8e\x57\x3e\xa3\xc0\xe7\xb8\xda\x40\x15\x6d\xe2\x55\x48\xb3\xb8\x6c\x88\xf1\x8c\x9e\x45\x6b\x5a\xeb\x06\x7e\x26\x0c\x7a\xd7\xe2\x50\xd0\x59\xd7\xe8\x30\x6b\x5b\x41\x4f\x4c\xd3\x84\x4f\xb1\xf3\x07\x17\xea\x1e\xea\x03\x8c\x1b\x3b\xee\xce\x5e\x19\xbc\x50\x14\xee\x0d\x88\x4c\x81\x21\xec\x7f\x3f\xa2\xbe\xb3\xbf\x60\xc7\xdd\x13\x6f\xb9\x77\x16\x23\xc7\x50\xec\x7d\x9e\x3c\x87\x78\xc3\x36\x21\x63\xfa\x68\x78\xfe\x9c\xa0\x98\x01\x88\x98\x3b\x69\x0d\x35\xd8\xbd\xe4\x57\xd7\xf1\x15\x7b\x90\xfc\x2a\x64\xb4\x0d\xaf\x93\xf6\x91\xb6\xe1\xa9\x4d\x69\x4b\x20\x4e\x37\xb9\xbe\xd6\xe4\x4e\xda\x5e\x5f\x27\xfa\xfa\x2a\x2b\x76\xf5\x41\xdf\x1e\x93\xeb\x5c\x5c\x16\x5f\x5e\x7e\x9b\x3e\xbe\x3c\xd1\xe7\xe4\xba\x79\x1e\xc5\xed\xa1\x3e\xaa\xb6\x10\x9b\x46\x81\xd9\x56\x7b\x19\x87\xf1\x64\x7e\x9d\xd3\xeb\x7c\x1a\xc6\xd1\xf5\xec\x3a\x9f\xb6\x54\x97\xad\xbe\x49\x93\xe9\x65\x1a\x43\x02\x10\x53\x40\x96\xff\xf9\xed\x8f\x3f\xf4\x30\xaf\x35\x0f\x33\xd3\xa9\x9a\xfc\xd6\xbf\x98\xcf\x21\xb5\x7b\x69\xa1\xe6\x33\x5d\x04\x0f\x8c\xf9\xa5\x2c\xbd\x80\xcf\x3a\xaf\x3d\x1b\x81\x54\xb9\xd5\xfc\x20\xfb\xc0\x02\xe0\x5f\xde\x49\x0b\xc0\xe7\x8d\xcf\x29\x9b\x83\xbb\x84\x00\x95\x9f\x66\x8b\xf2\x29\x9f\x14\x97\x13\xc5\x60\x57\xa2\xb1\x3b\x0b\x88\x79\x99\x4c\x15\x05\x4b\x14\x58\x46\x21\xf9\x7e\x77\x27\x36\x65\x7e\xa1\x6b\x1e\x5d\x90\x69\x06\x06\x24\xd0\x84\xf7\x6f\x5e\xf3\x33\x3b\x71\x86\x71\x0a\xb3\x8e\xe2\x70\xf6\x81\x19\xf5\xf4\x19\x10\x6f\x46\xcc\xbe\xfe\xf1\xcd\x4f\xba\xac\x3a\x0e\x73\xf0\x0c\x75\x09\x80\x53\x87\x78\x21\x75\xb5\x7d\x0b\x65\x85\x19\x83\x48\xa5\x57\x0f\xdb\x0d\xa1\x54\xb7\x4a\xbf\xf3\xa5\x3c\x94\x77\xea\xbd\xb1\xca\x24\x6f\x4a\x59\x57\x4d\x55\x1c\x66\x9a\x49\xfc\xf1\x0d\xd1\xd4\x97\x68\x3e\xed\x24\x27\x30\xdc\xfa\xd8\xd6\x5b\xd5\xfb\x37\xaf\xc3\x8c\xd2\x2e\x42\x8d\xb4\x26\x3c\xbe\xdc\x65\x00\x86\x1d\x04\x13\xf9\x84\xe9\x04\xd4\xb6\x86\x8e\xf3\x1c\xd7\xce\xba\xf2\xfd\x9b\xd7\xd8\x93\x4c\xa2\xdb\xec\x27\xc9\x7e\x93\xec\x4b\xc9\xaf\xfe\x6d\xf6\xfc\xd9\x15\xfb\xa3\x9e\xe4\x49\x1c\xa4\xf4\x03\x4f\xfe\x33\x48\x9f\x5f\xb1\xaf\x40\xb2\x30\x7b\x1e\xd3\x28\xb9\xb8\x3e\xa4\xcf\xc3\xe4\x3f\x61\xb6\x3f\xa7\xd7\x75\xfc\xec\x6a\xb5\x65\x5f\x5b\xe1\x43\x56\x1d\x0f\xad\xd8\xef\xf5\xdf\x65\x73\xa8\x6a\xb1\x52\xed\x6c\x7a\x09\x1b\x52\x53\x56\xbb\xb6\x28\x37\xaa\xad\x55\xd3\xde\x97\xf9\x4a\x1d\x68\xf4\xec\x8a\x7d\x63\x5e\xff\xd3\x37\xef\xda\xef\xbe\xf9\xf2\x6b\xfa\xec\x8a\x7d\xab\xd3\xae\xaf\xae\xaf\xae\xd8\x9f\xe0\x71\x72\x7d\x3f\x9b\x5e\xa6\xd3\x48\x2f\x0b\xfd\x00\x56\xde\xf5\x55\xfc\x6f\xe9\xf3\xff\xdd\xd2\x10\xaf\xa3\xf4\xb9\x7e\x1e\x85\xd7\xf9\x94\xb6\xb4\xa5\x57\xec\x3b\xc9\x1f\x4f\xec\x7b\xf8\xff\x67\xc9\xc9\xf3\x2b\x62\x5d\x2a\xc9\x73\x13\x7d\xe8\x37\xc9\x37\x95\x04\xb3\x65\x60\x55\xcd\xb8\xfc\x45\x52\xfd\xe8\xcc\xe0\x42\x10\xca\x7e\x93\x90\x93\x13\xc2\x7e\x93\xdc\xdc\x9d\x3e\x49\xfe\x27\xe3\x3d\xf6\x9b\xec\xb3\x53\x48\x70\x38\xff\x99\xd7\xd2\xe3\x61\xfb\x86\x46\xe7\xd3\xd7\x99\xb7\x42\x8d\xad\x93\x28\x28\x2e\xfa\x1f\x19\x90\xb7\x03\x1a\x5b\x52\x4b\x7f\x5a\x2d\x06\x99\xa2\xad\x8b\x43\x99\xd4\x8b\x21\x77\xd0\x92\x10\x61\x9d\xa1\xd7\x91\x00\xd7\xb4\x24\xa5\xce\x00\x5e\xea\x75\x30\x78\x06\x7a\x5e\xe9\x3b\x48\xbd\x91\x43\x63\x66\x80\x51\xd1\x44\xcc\xf7\xb2\xeb\x8f\x55\xb8\xc6\xe7\xa5\xdb\x7d\x92\x75\x8a\x46\x9d\x40\x13\x08\xc0\x96\x4a\x7a\x52\x02\xf3\xca\x0d\x5f\x1b\x23\xe8\xa7\x0c\x84\x6f\xda\xb6\x68\x5b\x95\xdc\xa4\x71\x11\x4f\xc2\x92\xdf\x58\x81\x5f\x14\x66\x10\xba\x5a\x93\x33\x8d\x6b\xda\x0d\x65\x2b\xfd\x6f\xb2\xa0\x27\xca\x4a\xa7\xb6\xf6\x33\x27\xf3\x94\xb6\xed\x44\x81\x33\x42\x10\xac\x60\x3a\x75\xed\xfe\x61\xe8\x18\xc6\xb7\x33\x71\x23\x1e\xde\xaa\xc3\xa1\xdc\xad\x9a\x59\xb1\x11\x07\xe3\xa4\xd3\xb6\x06\x95\xd5\xf8\x22\x76\xd6\x1c\x49\x9e\x06\x41\x18\xaa\x24\x4f\x63\x11\x61\x5c\x92\xc7\x13\xa5\xba\xd7\x33\x88\x4b\xde\x6d\x18\xbe\xc3\x90\xa6\x0f\xfc\x10\xe7\x3f\x8e\x7b\xfd\x72\x61\x45\xb5\x0d\x80\xb7\xb9\xc6\x19\xca\x98\x3c\x27\x06\x7f\x96\x96\x33\xec\x1a\x4f\x23\xa8\x0c\x3a\xe0\xb6\xdc\x9a\x30\x76\x60\xf3\xf1\x37\xd5\xec\xab\x5d\xa3\xbe\x53\x22\x57\x75\x48\x4c\x54\x9e\xcb\x77\x18\xda\x1d\x2d\x4f\x00\x36\x13\xc3\x91\x97\x45\xb8\x86\xe0\xc3\xfa\xbf\x43\x17\x7c\x2c\xdd\x68\xac\xe8\x32\xab\x95\xb8\x3d\x95\x05\x20\xe8\x96\xbb\x0b\x49\x0b\xa8\x16\xba\x30\xba\xc2\x24\xaa\xb7\x4a\x13\xb6\x5e\x56\xbb\x3b\x55\x1f\x54\xdd\x24\x2b\x00\x2f\xd2\x0f\x52\xf0\x88\x33\x25\xe6\x6d\x1b\xe6\x9a\x5b\x02\xcf\xce\xdc\x0e\x74\x11\x87\xc5\x04\x1b\x1e\x04\x5d\x45\x0a\xca\x64\x52\x74\xf8\x43\xae\x7b\x7f\x1a\x4e\x72\x2f\x30\xd6\xe3\x89\xdd\xfa\x5d\x6b\x56\x17\x86\x9e\x4e\x16\x69\xd7\x15\x7e\x85\xe9\x4d\xb2\x1a\xca\x63\xfa\x0d\x4a\x97\x05\xbf\xb5\x83\x62\x43\xa9\x52\x20\x04\x6a\x33\x02\xdf\x96\x6a\x93\x37\x18\x2c\x54\x26\x23\xe9\x29\xcf\x28\x04\x5b\xce\x35\xdd\xa0\xab\xf8\x2d\x78\x33\x80\x60\xd3\x4f\xd0\x54\x92\x6b\x02\x84\x27\x2e\x98\xf7\x79\x88\x90\x0c\x73\xa5\xd0\x03\xe3\x82\x1f\x93\xe7\x10\xdb\x17\xcd\x53\x0a\x8c\x85\xca\x6f\x92\x12\x06\xa3\x48\xdb\xf6\x26\x21\xcf\xe1\x92\x4d\x56\x5d\x74\xd4\x1b\x98\x13\x5c\xf9\xe4\xf3\x3a\x59\xa4\x06\xf6\xad\x2b\x62\xad\xc7\xd3\x95\x02\x77\x94\x3e\xae\xc0\x9b\x24\xd6\xd9\x54\x1a\xe9\x7f\x13\x9d\x00\x58\x70\x3a\x0f\xbb\x75\x23\xaa\x4b\xa5\xde\xf4\x5a\x41\x4e\x8a\x68\x09\x22\x21\x87\x75\x5d\xdd\x37\x24\xa5\x19\x5f\x85\x99\x31\xe0\xd7\x47\x06\xde\x9b\x83\x62\xe3\xe2\x26\x34\x07\x4d\x98\xf6\xce\x63\x06\x3f\xd1\x2a\xde\x44\xe4\x87\xea\x02\x87\xb0\x01\x10\x83\xba\xda\xea\x49\x39\x25\x17\x87\x4a\xf7\xc2\xe9\x74\xea\x97\xd3\x1c\xa5\x54\x4d\x43\x98\xee\xfa\x28\xf3\x83\x9f\x0b\x20\x3d\xa2\x39\xdb\x88\xe6\xf0\xa6\xca\x41\x41\x13\x3d\x9e\x98\x3a\x88\x95\xfe\xf5\x37\x9b\xe8\xf1\x58\x6f\xa2\xdf\x24\xc4\xb1\x89\xc8\x9f\xbe\x79\x47\x58\xd9\xbc\xae\xa4\xd8\x44\x5f\x1b\x19\xee\x27\xa9\xfb\x82\x61\x74\xad\x68\x32\x67\xfb\xba\xd2\x1f\x87\x00\xbb\x7a\x4b\xd1\x74\x8c\xbe\x30\x3b\xc6\x3b\x28\x4a\xec\xf7\x9b\x12\x8f\xce\xab\x87\xcb\xfb\xfb\xfb\xcb\xa2\xaa\xb7\x97\xc7\x7a\x03\x72\x41\x95\x2f\x35\x0b\x55\x37\xea\xc0\x7f\x7e\xf7\xed\xe5\x7f\x10\x86\x31\x73\x9b\x08\x00\x34\xfe\x2c\x19\xc4\x94\x45\xe2\x6a\xbf\x11\xe5\x8e\x60\x4c\x45\x4c\xd1\x97\x84\x3d\xe8\xfb\xde\x97\xb6\x1b\x76\xe1\xe8\x31\x76\xd3\x00\x94\xb3\x97\x41\xa7\x98\x1c\x37\xe2\x4e\x98\xf0\x67\x27\x5b\xf7\x26\x7a\xd4\x65\xea\xb7\xaf\xf0\x73\xf0\xa5\x2b\x2c\x09\xde\xbe\x3a\xb1\xfe\x72\xc1\x57\x88\x4d\x7c\xff\xe6\x35\x31\x75\xb7\x49\xef\xd4\xc3\xc1\x56\xc6\xa6\x69\xea\x15\xbf\x6b\x16\xae\x6e\x37\x54\x8c\x44\x48\x5a\x22\x61\x79\x01\x2d\xd5\xdd\x8b\xb7\xba\x14\xcd\xe0\x3b\x72\xdf\xa4\xeb\xf6\x46\x1d\x19\x7c\x62\xde\x31\x82\xa3\x6c\x47\xe8\xe1\x10\x4d\xe6\x27\x37\x0f\x8e\x4f\xe8\x7f\xb2\xf8\x07\x19\xc2\x61\xd5\x3f\x9f\x28\xcb\x68\xf4\x83\x0c\xfb\xa9\x4c\xf3\x85\x3a\xe1\x27\xe7\x22\xf7\x5a\x86\xdf\xe9\xc3\xe6\x46\x3c\xbc\xab\xc5\xae\xd9\x57\xf5\x41\x27\x7e\x6f\x12\x07\x9f\x3d\x77\x82\xc3\xcd\xc6\x77\xdc\xe1\x19\x9c\x88\x3d\x9f\x6a\x03\x51\x71\xdb\x1d\xa3\xc7\xbd\x71\x97\xdd\xf0\xdb\x99\x69\x72\xdb\xde\xb2\x5d\x77\x1b\x04\xe1\xc6\x8b\xb2\xba\x99\xdd\x7c\x3c\xaa\xfa\x13\x8d\xb7\xe1\x06\x58\x8d\x3b\xb5\x3b\xb0\xaa\xe7\xa9\xcc\xf6\x7c\x3b\xfb\x4a\x6c\x36\x99\x90\xb7\x4d\x48\xaa\x9d\x54\x17\x5b\xb5\xad\xea\x4f\x84\xb2\x8f\x7a\xd3\x3b\x88\xc3\xb1\xf9\xaa\xca\x15\x04\xa8\xac\xf5\x16\xdf\xe8\x7f\x07\x3e\x67\x47\x4e\xa4\xd8\x49\xb5\x51\x39\x61\x77\xfc\xb1\x56\x22\xff\xf4\x16\x96\xf3\x9c\x9d\x9d\x8e\x23\x58\x48\x65\x11\xbe\xe0\x9c\x1f\xf0\x28\xbb\xa1\x8f\xfa\x08\x71\x92\xaa\xaf\xa4\x8d\xa6\x4e\x6f\x92\xec\x3c\xd6\x26\xcf\x92\x17\xe9\x29\xe3\x37\x89\x18\x3c\x39\xf5\x6c\xba\x32\xb4\x3c\xcc\x4e\xba\x4e\x5f\x6e\x36\xfd\x6a\x8d\xc5\xe5\x80\x4a\xc5\x85\x51\x30\x37\xba\x25\x1f\x8f\xaa\x39\x9c\x35\xc4\x57\x2d\xf7\xaa\xe0\xd0\xb5\xda\x36\x14\xbc\x49\x64\xca\x31\xca\xa7\x60\x75\x22\xe0\x2c\x42\x69\x65\x75\xa7\xea\xba\xcc\xd5\x1b\x43\x58\x8c\x9a\x68\x81\xb1\xa3\x25\x3d\xb8\xb0\xef\x76\x83\x33\xde\xb7\xe0\x91\xff\xe2\xd5\x81\x3a\x40\x01\x41\x3f\x26\x59\xca\x13\xfd\x9f\x89\x24\x4b\x91\xaa\xb8\xb8\xb3\x3e\xac\x22\xb9\x33\x63\x9e\x0e\xa2\xe6\x8a\x4c\x4f\xf6\x11\x05\x52\xdb\x1e\x6d\x4e\x7d\xfa\xcd\x20\x63\x98\x51\xf6\x10\xce\x99\x6d\xe7\x49\xd7\xa7\x72\x2e\xe1\x77\xb4\x73\x6e\xdc\xcf\x44\x9e\xb3\xbb\x99\x39\x00\xf8\x1d\xfa\xdd\xde\x21\x47\xc7\xef\xc0\xc9\x56\x9f\x63\xf5\x86\x87\xa1\x68\x5b\xb8\x6c\xdb\xdf\x24\x9d\xfa\xf1\x0e\xbf\x04\x8b\x21\x77\xfb\xad\x64\xb0\xcd\x4f\xc9\xd5\x15\x98\x71\x83\x0a\x27\x9b\x6d\xd5\x61\x5d\xe5\x9a\x7e\x43\x3d\xcf\xad\x4b\xc1\x2c\xec\xb6\xa3\x5f\xac\xa8\xa0\x4b\x02\x36\x81\x3e\xcd\x89\x10\x92\x1a\x0b\xb0\xdb\x99\x66\x90\x9b\xaf\xab\xad\x28\x77\xc0\xd5\x58\x76\x09\xea\x3f\xe0\x98\x58\x2f\x3b\x9f\x84\x13\xd9\xb6\x12\xe9\x00\x68\x46\x10\xc8\xe4\x85\xb9\x7b\x81\x44\x0e\x00\x29\x91\xf5\xe1\xb0\x8f\x40\x18\x9b\x2c\xd2\x98\xfc\xc7\x9c\x44\xe4\xe5\xcb\x2f\x08\xa5\x9c\x73\x7d\xd2\x0d\xb2\x7d\x3a\xcb\x07\x5f\xd7\x0d\x0c\x82\xdb\x99\x77\x12\x76\x62\x70\xc7\x5c\xd8\x7c\xa6\x47\x38\xec\xce\xc2\x76\x90\xee\xe4\x5a\xe4\x10\x6e\x40\x6c\x28\x65\x6f\xf4\x7e\xc9\x6e\x59\xc6\xee\x28\xc3\x95\x6e\x41\x13\x97\x6b\x1b\x7d\x5e\x7f\x15\x4f\x62\xb6\x46\x24\xd8\xed\x0c\x4f\xfc\xe9\x14\x28\x7d\x88\x17\x6f\x65\x7f\x04\x76\xc4\x83\xa8\x0f\xdd\xa0\xe2\x4f\x3f\x6a\x00\xbb\x05\x01\x37\x9e\x81\x7c\xf2\x8d\x39\xf9\x31\x2b\x65\xfa\xa5\x63\xbd\xe9\xe5\x82\x55\x66\xda\x67\x9e\x4f\x79\x78\xef\xdc\x14\x63\x12\x90\x88\xc4\x84\x4e\x4d\x73\x8d\x42\x1f\xef\x60\x08\x85\x5c\xa3\xab\x28\x74\x91\x9e\xb1\x7f\xec\x5e\xef\x04\x4b\x7f\x94\x8c\x3c\x5b\x7c\xe0\x64\x7a\x27\xa7\x53\x1a\xa9\xe9\xe8\x67\x88\xcb\x01\x6e\x0d\x85\x25\x7d\x20\x30\xb0\x4f\x0b\x81\x6b\xe5\xdd\x6c\xb8\x51\x85\xe4\xfb\xe2\xd2\xe6\xb9\x7c\x5b\xee\xa4\x22\xec\xec\x4d\x10\x45\x1f\xc4\xea\x73\x85\xfc\x50\xed\xd4\xe5\x1b\x3d\xcd\x49\x97\x9b\x52\x16\x76\x13\xa7\xeb\x47\x7d\xe7\x11\x4e\xe0\x34\xa9\xd7\x9b\x97\x46\xc7\xbf\xd4\x63\x9f\x58\xaf\x14\xca\xc6\x5e\xf8\x12\x08\x2c\xe2\xaf\x59\xe0\x63\x6e\x67\x86\xf4\x4a\xfa\x4f\xd2\xf8\xc9\x27\x53\x43\xc1\xf7\x93\x63\xc2\x2e\xc8\xf4\xcf\x72\x4a\x96\x17\x1f\xf9\x7c\x36\x07\x00\x5d\x1a\x75\xc5\x80\x7f\x7e\xc7\xd1\xde\xce\xd6\x78\xac\xd0\x91\xfa\xe6\xcc\x3d\x06\x86\x56\xb3\x45\x33\x0c\xa5\xfa\x56\xed\x72\x44\x96\x77\xb7\xa8\x15\xda\xb0\x3b\x76\x4b\x39\x76\x22\xae\x21\xb7\x88\xcc\x5e\x4b\x97\x47\x4e\xe0\x92\xb8\x8a\x3c\x9a\xed\x34\x5a\x18\xa2\x7c\xc1\x9c\xc3\xfd\xe2\x44\xef\x92\x3c\x0d\x6f\x6d\x25\x4a\xfe\x46\x13\x31\x66\xa5\xd2\xc7\xbb\x59\x77\x94\xf3\x85\x5e\x96\xbb\xc1\x02\x84\x90\xb0\xc9\x1d\xbb\x4d\xf5\xd4\x04\x7a\x59\xf7\xfa\x01\x7d\xc1\x5e\xcd\x81\x75\x19\x47\x2b\xb3\xb5\x26\x26\x33\xa1\x27\xe6\xde\xa4\x28\xa5\x3a\xf0\x05\x2b\x67\x8d\xa6\xfe\x6b\xf6\x60\x79\x8f\x7b\xa4\x13\xe0\x48\xa3\xc0\xae\x5c\xdc\x2f\x1f\xc2\xcb\x05\xbb\xa7\x27\x34\x5d\x87\x3b\xcd\x7b\x38\xfa\x8c\x78\xb0\xa4\x0f\x7d\xd6\xf5\x86\xd5\xac\x61\x47\x76\xcf\x1e\x78\xb6\x7c\x31\xe1\x5c\x53\x51\x07\xfe\x82\xad\x82\xa0\xe7\xdb\xb6\xd2\x6c\xa0\x31\xe3\x29\x00\x28\x87\xb0\x5e\x27\x89\x57\xf3\xf8\x65\x34\x67\x37\x5c\xbc\xe2\x2f\xe6\xf3\x20\xf8\x62\x3e\x7f\x25\xda\xf6\x8b\xf9\x4b\xce\xb9\x00\x33\xd1\x23\xff\x51\x86\xb7\xec\x0e\xd0\xbd\x8f\xfc\x27\x7d\x73\x64\x77\xec\x86\xb2\x9b\x38\x1c\xac\xf0\x7b\x7e\x37\x26\x61\x78\x2d\x9a\x83\x5b\xd3\x84\xb2\xfb\xb1\xcd\x80\xdf\x53\xf6\xc4\xfb\x7a\xed\xba\xd7\xcc\x42\xe6\xf7\x94\xb2\x17\x58\xd1\xb6\x25\xdf\x7d\xf3\xe5\xd7\xfa\xa4\xc0\xbd\x32\x7e\xe0\x64\x57\xd9\xb8\x04\x91\x69\x0f\xa6\x1e\xb6\xb6\x22\x51\xf8\xc0\x8f\x40\x39\x28\x56\xf3\x23\xee\x8f\x0d\x3f\xe2\x21\xce\x6e\xf8\xa4\xa1\x34\x0a\x1b\xfe\xc0\xf4\x11\x3e\x79\xa0\x41\x10\x3e\x70\x62\xf8\xc6\xf9\x2b\x88\xf3\xcd\xe7\xfa\x30\xb2\x14\x08\x17\xee\x12\x8c\xc6\xc2\xac\x6d\x1f\xf4\x99\xcf\x6e\xe2\xaa\x07\x69\xb2\x61\x49\xcd\x1e\xd8\x5d\x4a\xa3\xca\x07\x35\xd9\xe8\x29\xfa\xc0\x9a\xb4\x2b\x54\x53\x4b\xe1\x47\x4d\xdc\x9a\xe1\xec\x4d\xee\x9b\x18\xa7\xb7\xe1\x45\x23\xb8\xfb\x06\xeb\xa8\x67\x3b\xbb\x89\xeb\x48\x17\xb7\x07\x88\x34\xef\x23\x29\xd5\x25\x85\x83\x75\xf2\x95\x59\x72\x6e\xad\x5c\x5e\xda\xc3\x0d\x64\xd6\x63\x47\x5b\x05\x3e\x26\x0e\x5d\x18\xa8\x56\x50\x0c\x3c\x69\x6d\xba\xb2\xb6\xa3\x8c\x00\x2f\x45\xe1\x9d\xb7\xc0\x08\x3e\xe5\x5b\x81\xef\x98\x3e\xc8\xba\xa8\xd9\x3d\xcb\x9d\x95\x3a\x10\x46\xf6\x55\x33\x62\x8f\x38\xd4\xe8\xf5\x7c\xad\x07\xb2\x58\x38\x50\x55\xdb\xe6\x2c\xe7\x92\x49\xc7\xfd\x20\x7f\x13\x02\x2f\x27\x90\x61\xcf\x98\xdd\x7e\x23\x85\xa2\x00\xc9\xec\x56\x96\x5b\x43\x39\x1b\x28\x7b\xcc\x8f\x63\xa4\x4c\x14\x02\xb8\x72\x6d\x5b\x2d\x9b\xbf\x70\x82\x80\x05\xb3\x52\x10\xcd\x4f\xd2\x01\x44\xc6\x7d\x2d\xf6\x5f\x6e\xfa\x5e\x7d\xff\xac\x6d\x87\x29\xab\x6f\xd7\x61\x0d\x39\x8c\x7b\xa0\x33\x60\x7b\x2a\x12\x3b\x9d\xa9\x8f\xe1\x9c\x76\x21\xaf\x97\x36\x5b\xdf\x56\xcb\x0f\xdd\xed\x0a\x67\x19\x38\xf1\x0d\xdd\x75\x41\xf1\x6d\x58\x30\xe1\x45\x77\xb7\x4e\x02\x5d\x4a\xe7\x2f\x20\x7a\xe9\x5d\xb4\x1e\x1b\x56\xcf\x20\x14\xf7\xd8\x09\xdd\x01\xdf\xef\x76\xea\x77\x7c\x52\x9e\x34\xa5\x18\xf4\x25\x14\x75\xd6\x9b\x43\xe4\xe5\xcc\x99\x47\x40\xbc\x29\x23\x20\x09\xe9\xd2\x22\x79\xc5\xb2\x1b\x19\x1a\xd9\x08\x76\x21\x02\x43\xe8\x27\xa3\xf6\x85\xbd\x2a\x2e\x9f\x1e\x7f\x79\x3e\xfe\x59\xdf\x43\x93\x46\xf8\xa9\xe3\xae\xff\xb1\x7e\xcf\xe0\xe8\x86\x74\xc4\x6d\xc7\x19\x9e\xa3\x9d\x04\x46\x60\x6c\xdb\xce\xa4\xc8\x85\x63\x37\x76\x1b\x2e\x5a\x3f\x3d\x19\xf4\x16\x6b\x8b\xba\xaf\x0d\xde\x4b\x63\xb1\xef\x46\x4d\x12\xbd\xa0\x0d\x7f\xe0\xf3\x20\xe8\x07\xf1\xf9\x03\x9f\xb7\xed\xa4\x03\xca\xef\x45\xc4\x0c\xa9\x87\xd2\x68\x23\x67\xb8\xf0\x2b\x5d\x8c\xa8\x91\x90\x11\xa7\x61\x15\x21\xa4\xd9\x46\x8d\xd4\x71\x32\xda\x18\x3d\xa6\x20\x75\xf9\xab\xe4\x57\xff\xe3\xc5\xfc\x6a\xc5\xfe\x26\xf9\xd5\x75\x72\x9d\x3e\xbb\x62\x6f\xc1\xa5\x37\xbe\xde\x5d\xad\xd8\x3b\xa3\xb3\x43\x83\x08\x6b\x90\x5c\x6e\xc5\x0a\xd4\x7b\xea\x00\x9a\x3e\x30\x4d\xfe\xf9\xb3\xa6\xcc\xb7\xea\xd3\x4a\xed\xe8\x55\xd9\x11\x24\x7f\x1f\x0a\xd3\xcf\x80\xea\xcd\x5e\xdc\xf3\xd0\x57\xf4\x51\xb6\xed\xdf\xac\x41\x2a\x8d\xf3\x50\x30\x45\x23\x5d\xda\x94\x24\x64\x1a\x9e\x49\x9e\x54\x9c\x69\xba\x75\x4a\x52\xc2\x14\x9a\x17\x50\x27\xba\x96\x6d\x6b\x5f\x98\x40\x04\x86\x4f\x7b\x30\xbb\xcf\x61\xab\x1f\x20\xb9\x64\xd4\x7d\x46\x41\x71\x59\xa2\x52\x2c\xd1\x70\x83\x7c\xd4\xfd\x88\x27\x29\x53\x83\x47\x83\xc5\x93\xd1\x38\x0b\xad\x2b\x6c\x16\x13\xa2\x4f\x83\xc4\xba\x89\xa6\x1c\xc5\xac\x3f\xff\xed\x7b\x7d\xac\x56\x3b\xbd\x06\x04\x9d\x12\x4e\xa6\x23\x4f\x32\x0a\x32\x07\xa7\xc1\xc9\x8c\x05\xb3\x2f\xe2\xd3\xec\x65\x4f\x51\xe5\xb3\xaf\x1e\x58\xa1\xa0\x6d\x2b\x8c\x40\xcd\xe0\x4e\xfd\xb4\x11\xe5\xce\x41\x14\xd9\x61\x12\xbe\xc5\x29\x2e\x42\x70\x85\x60\x9d\x4f\xb2\xeb\x78\x0f\x38\xf1\xef\x32\x94\x0c\x00\x12\xf5\xe0\x76\x18\x56\x37\x55\xb9\x0b\x49\xe0\x49\x35\xfe\x2a\x19\x99\x92\xe1\xc9\xd4\xa8\xba\x04\x7b\xe3\x91\x1d\xc3\xb2\xe8\x08\xac\x6e\x33\x62\xbb\xf4\x3a\xea\x27\x3d\xb5\xe5\x8c\x1e\x15\xc6\x39\x0f\xb7\x1a\x65\x54\xf5\x9d\x4d\x85\x88\x7d\x87\x56\x63\x21\x77\xa2\x16\x45\x6a\xf4\xe4\x81\xb9\xd7\xdb\x42\x77\x60\x54\x36\xb1\x3b\x58\xd9\x84\x24\xea\x3c\x79\x83\xe0\x67\xb3\x0c\x7a\x1e\xe4\x34\x08\x26\xef\xdc\xfa\x70\x46\x6a\xc6\x17\xb3\x9d\xfc\x62\x1f\x51\x88\xbd\xe9\xb5\xcd\xc7\x95\xf1\xbd\xe5\xfb\xb8\xed\x12\x45\x8a\xdd\x0c\x91\x34\x46\xa7\x78\x39\xe2\x14\xff\xa8\xdb\x10\x65\x38\x13\xd0\xab\x44\xb8\x11\x7d\x2b\x19\xb9\xae\xaf\x77\x40\x7a\x45\x23\x59\xe5\x78\x56\xa0\xe0\xcc\x66\xdd\x9b\xc3\x0f\xeb\x9a\x3b\xad\xaa\x98\xf5\xec\x36\xe2\xb3\xe1\x9d\x40\xcf\x18\x05\x49\x10\x5c\xfd\x67\xb8\x52\x87\x56\x93\x7c\xad\xe6\x54\x5b\xbd\x91\xa1\x9c\xa3\x35\x8e\xca\x7a\xa7\xf3\xba\xfc\x80\xec\xfc\x3f\x64\x48\xdb\xf6\x99\x0c\xe9\x29\xfa\x87\x84\x9d\xf5\x17\xc9\xe7\xec\x3d\x58\x23\xfc\x2a\x87\x2a\xe1\x87\x75\x1d\xd2\xa5\x98\x89\xc3\x41\xc8\xf5\x37\x28\x08\xea\xdd\x86\xa4\xda\xa1\xb5\x1b\xf1\x57\x95\xb5\xe6\x13\x7a\xe9\xbc\x97\xf4\xbd\x4c\x44\x6a\x96\x39\x44\xcb\x00\x41\x4c\x55\x37\x7c\x32\xf9\x55\x06\x01\xb9\x2f\x0f\xeb\xaf\x6a\x95\xab\xdd\xa1\x14\x9b\x86\x94\xbb\x8b\x5f\xa5\xae\xd1\x2d\xd4\x08\xb2\xb1\x5f\xa5\xdd\x0b\x1c\xe3\x18\x0e\xe8\xbc\x89\xf0\x45\x74\x6d\x8b\x5f\xe9\xc3\xfa\x3f\x6a\x96\xd5\x0b\xab\xe2\x29\x49\xb9\xc0\x36\xb3\x15\x9f\x4e\x7f\x91\xe0\x79\x09\xc1\xf9\x43\xf4\x93\x67\x02\x04\x52\x02\x99\x69\x7d\xd7\xa8\x1a\xa6\x81\x98\xed\x45\xd3\xdc\x57\x75\x4e\x19\x14\x82\x4a\x9a\x4e\x87\xd8\x4b\xd4\xfc\x9c\x97\x90\xa8\x74\xd9\xa9\xad\x83\xa0\x98\x0d\x25\xce\x63\x69\x61\xf7\x8a\xfe\x66\xaf\xdd\x32\x21\xef\x2f\x8d\x5c\x43\xe5\x97\x9a\x96\x20\x10\xea\x6b\x2c\x9d\x93\xf7\x6f\x5e\x7f\x77\x38\xec\xcd\x03\x83\x5d\xa8\x50\x83\xdd\x79\x8b\x80\xf0\xa9\x38\x97\x98\x28\xa6\x1f\x81\xa5\x56\x81\xf2\x00\xd1\x93\x34\xa1\xa6\x16\x21\xc1\x00\xe1\xaa\xeb\x7a\x13\xbf\x0d\x74\x29\x10\xa4\x4d\x73\x21\x6d\xab\xd9\xd7\xc2\x63\xdd\x41\xa1\x6b\x24\x79\xef\x65\xb2\x4a\x59\xe6\x38\xfd\x59\xb5\x83\x8c\xc0\xd7\xa2\x79\x24\x18\xcb\x55\x7b\xa6\xe8\xcb\x49\xbf\x20\x5d\x7f\x2b\x8f\x01\x55\x3d\xe8\xc3\xd7\xbc\x30\x9c\xe7\x39\x0c\x44\x31\xf3\xd5\x69\x41\x10\xde\x00\x22\x03\xef\xa7\xa3\x44\xa4\x74\xe5\xe8\x34\x23\x10\xb9\xa5\x8f\x25\x27\xe4\xb4\x6e\xdb\x89\xb0\x8b\x18\xac\x01\xba\x01\x8b\x17\x2f\x5e\x7c\xc1\x01\xa6\x3e\x5c\xf3\x17\xf3\x97\x34\x5a\x73\xfc\x50\xfc\x62\x3e\x8f\x5e\xce\x5f\x9e\x6e\x82\x20\x0f\x51\xe9\x54\xcc\x46\x95\x24\x70\x54\x98\xb9\x19\x0f\xbb\x30\xf6\x91\x82\x68\x34\xda\x6d\xd0\xb5\x3c\x8b\xb2\x90\x9e\xe9\x12\xe8\x63\x16\x04\x99\xbf\x86\x4f\xfd\x68\x32\xd2\x38\x54\x79\x81\x64\xc4\xac\x3f\xb1\x7c\x77\x2a\xf7\xe2\xb3\xd1\x17\x3f\x67\xc9\xf6\xdd\xbb\x77\x3f\x11\xea\x17\xd6\xd3\xc1\x39\x85\x2e\xb2\x90\x46\x73\xdb\xa9\x5d\xd9\x45\x4f\x33\xfb\x44\xba\x92\xdb\xd1\xf4\x87\xcb\xee\x49\x4f\x81\x6b\xbe\x76\x15\xc6\x91\x2e\xb3\xd5\xd9\x28\x26\x5e\x0d\x14\xae\xa0\x39\x35\x45\x8c\xb1\x56\x5b\x23\x6b\xff\x46\x9f\x6a\x82\x32\x71\xea\x8e\x10\xa7\xe8\x0c\x1d\x8b\xdc\x63\x77\x2c\x29\x25\x50\xd0\x0d\x8e\xcf\x28\xf2\x9e\x2c\x06\xdb\x04\x3c\x43\xa7\x19\x60\xbe\x85\xf9\x2c\x47\x33\xa3\xe1\x56\x3b\xfa\x3d\xb0\xef\xf0\xca\xec\x70\xf5\x3e\x81\x14\x55\xb3\x35\x44\x5f\x00\x90\x52\xdb\x7e\x1a\x5a\x11\x8e\x6f\xca\x20\xa7\x18\x01\xa3\xb2\x12\x10\x96\x19\x3b\x46\x08\xa2\x8e\xa9\x5f\xa1\x5e\x1f\xfc\xa2\xac\x8e\x7f\xf0\x0c\x70\xac\x6a\xc9\x71\x1b\xcf\x66\x15\x1c\x5d\x3c\x1b\x5b\x0c\x7d\x4b\x68\x4d\x7f\x4f\x32\x6f\x3d\xb5\xed\x95\x7e\x57\xe5\xad\x15\xd9\x1a\x68\xa7\xac\xb7\x6f\x41\x6d\x3e\xf7\x19\x34\x3e\x7e\xda\x71\xcb\x8f\xab\x9d\xe9\xdd\x13\x5e\x90\x6d\xab\xc2\x17\xf3\x39\x73\x26\x19\x7a\xed\xcb\xbe\x14\x21\x63\xd2\x63\xf9\x9f\x5a\xd2\xa6\x76\x67\x2b\x5b\x8f\xe3\x07\xa9\x39\x02\x91\xf3\xab\x90\xd3\xeb\x38\x8c\x79\xd0\x3e\xa3\xed\x75\x7c\x1d\x5f\x2d\x7b\x8b\xee\xa6\xa9\x76\xfb\x88\x48\xa3\xa7\x46\xb3\x83\xbd\x55\x5b\x9f\x47\x57\xfa\x20\x11\xda\x0d\x24\x6c\x00\x06\x5e\x4d\xc9\x07\xd4\xa4\xf8\xa4\x65\x22\xc0\xe8\x4e\x8c\x2e\x00\xfd\x0d\xb0\x4c\xd8\x93\x1e\x38\xda\x30\x50\x64\x36\x83\x4c\x0e\x19\x32\xb7\x23\x75\xac\x37\x34\x26\xc7\x7a\x03\xb1\x49\xfb\x1b\x7f\x66\xb4\x26\x93\xb0\xa7\x15\x41\xb7\x1d\xe7\x2f\xf3\xbb\xf6\x26\x9a\xfc\xed\x3e\x08\x4a\xa8\x20\x20\xfa\xb7\x23\xc2\xd7\x6d\x4b\xb0\x19\x9a\x07\xea\xeb\x36\x42\x65\xab\x6f\x3b\x73\xc0\x8f\xf5\x1f\xd2\x78\x90\x10\xd2\x68\x90\xc2\xd6\x71\x96\xac\x53\xae\xff\x39\xb2\x55\xe4\x8c\x3c\x5b\x90\xa9\x72\xd9\x6d\x6f\x65\x03\x1d\x9b\xed\x35\xab\x00\x33\xd9\x91\xc5\xd3\x0b\xcc\x33\x0a\x33\xeb\x15\xad\x47\x52\x7e\xce\xb7\xac\x3a\xab\x60\x35\x25\x17\xf7\xa2\xb9\xd8\x55\x87\x0b\x3d\x8d\x40\x72\xbe\x4a\xe6\xe9\x89\xf5\xbb\x84\xa3\x00\x15\x10\xe9\x55\xca\xf4\x3f\xbf\xe4\x55\x67\x6c\x7f\x62\xf9\x08\xce\x3b\xbe\x00\x2c\x31\x34\xaf\xdf\xb9\x72\xd0\x59\x1f\x0c\xa6\xb2\xa2\x94\xad\x10\xd5\xc4\xf5\x7d\x41\x83\xa0\x08\x57\x20\xa9\x5b\xf1\xa2\x0b\xf0\xe2\xf6\x29\x3f\x32\x20\xd8\xc8\x00\x40\xde\x50\x48\x0c\x84\xeb\x88\x9d\xb8\xe8\xd9\x89\x8f\x3a\x41\x19\x43\x5c\xbd\xb7\x83\x99\xca\x27\x34\xc7\xe5\x47\x54\x63\x43\xe0\xbc\x89\x0c\x82\x24\xed\x62\x6e\x27\xd9\x60\x5b\xcd\x93\x45\x4a\xd3\x08\x02\x03\x64\xc7\x72\x93\x7f\x5b\x8b\x15\x3c\x49\x04\xb2\xbb\x88\x5b\x8a\x3c\x7e\x10\x6c\x43\x65\x3d\xdf\x20\xc8\xff\x56\xd5\x2b\x15\x26\x29\xcb\x7d\x59\x95\x91\xdd\x64\x39\x80\x7f\x82\x9d\xf9\xd2\x5d\x8d\xf5\xc1\x18\x8e\x6e\x96\x3b\xd8\xa6\x7c\x1c\xfe\x73\xe9\xbb\x51\xc3\xb3\x35\x17\xbe\x43\x5b\xb7\xcc\x5e\x71\x70\x4b\xb4\x16\x03\xc2\x98\x3e\xae\x99\x85\xe6\x06\x3c\x40\x9b\x3c\x87\xf8\xb0\x43\xe1\x87\xe9\x70\x23\x1d\x8f\xb2\x11\x18\x6d\x8c\xf2\x4a\x7e\xfa\xf1\xed\x3b\x3d\x85\x9d\xd3\x8c\xe5\x5e\x7a\x72\xef\xc2\x93\x79\xa3\x75\x99\xb1\xad\xa3\x83\x90\x14\x82\x3e\xaa\x6e\x6a\xb3\xd5\x4c\xe7\x0e\xf3\x78\x1b\x92\x3f\xe4\xe5\xdd\x2b\xe2\x24\xb9\xde\x54\xd3\xdc\x33\xb8\x56\x87\x39\x8a\x2d\x9d\x49\x47\x28\x83\xa0\xcf\x50\xaf\x50\x3c\x22\x99\x6a\x5b\xcf\x38\x53\x93\xb2\x2c\x63\x22\xd5\x34\x01\xca\x85\x9d\xee\xa1\xd3\xf3\xb3\x4e\x31\xc2\x06\x5a\x15\x5f\x3f\xd3\xd3\xdc\xb0\x4e\x4d\x79\xee\x6c\x3d\x74\x47\x1a\x73\xc1\x19\x13\x83\x1a\x84\xd4\x7c\x5c\xed\xb0\xaa\xd5\x3e\x74\x38\xa8\xbe\xa0\xda\x21\x07\xe8\x1d\x18\x23\x40\x98\x81\x33\x86\x5f\x39\x17\x8e\x76\x39\x23\x62\x1c\x35\x9b\xe7\xbd\xef\x95\xcd\x2f\xe5\x2e\xaf\xee\x43\x41\x63\x11\xfd\xaf\x1e\x84\x4f\xdc\xe1\x8c\x94\xea\x5e\x73\x04\x78\xec\xe3\x1b\xd1\x64\x71\xda\x1a\x31\x2d\x20\x49\xa0\x3c\xf6\x73\x20\x02\x9e\x49\x9a\x0d\x1d\x5f\x35\x20\x29\x83\x70\x3d\x5b\xbd\x1b\xec\xf8\xe3\x69\x49\x34\x01\x52\x4a\xd0\x1f\x02\x11\x88\xb2\x5c\x9b\x9b\x93\x5a\x6d\x84\xa6\xbf\x09\x65\x6b\xbe\x31\xb5\x08\x11\xe4\xdb\x14\x0d\x2a\x30\x56\x76\x09\x1b\x55\x68\xc2\xec\x86\x87\x44\x64\x4d\xb5\x39\x1e\x40\x64\x7c\xdb\xb6\xa4\x28\x1f\x54\x0e\x37\x80\xe7\x6c\xb1\xc1\x10\xed\x82\x25\x05\x2b\x53\xfa\xea\x72\xc1\x6e\xe2\x30\xe7\x1b\x57\x0f\xe0\xc3\xf3\xd9\x41\x73\x72\x3c\x9f\xe9\x0f\xd0\x28\x5c\xf5\x63\x25\xb7\xed\xbc\x1f\xc3\xbd\xd4\x49\x67\xeb\x16\x04\x8b\x99\x0d\x4d\x20\x61\x69\x1b\xb0\xbd\x19\xa0\x31\x87\x3b\xfd\x8b\x77\x97\x6b\xfd\x7f\xba\xea\xb2\xe8\x6f\x43\x1e\x7d\x61\xee\x2f\xd7\xf0\xa3\x0f\x3d\x72\x6c\xf4\xc6\x55\xee\x2e\xb2\x38\x9b\xc1\x8d\xfd\xd4\x8e\x46\x1b\xe8\xa2\x1d\x22\x89\x78\x12\xc1\x6a\x38\xa2\xf4\x73\x58\x93\x1d\x65\x0f\xce\x63\x63\x71\x40\x61\xe1\x60\xa9\x33\x37\x63\x2c\xfa\x74\x66\x01\xd1\x10\x25\xf0\xf1\x50\xed\xa3\x39\xd3\x2d\x88\xe6\xa7\x0e\xef\xd2\x44\x80\xeb\x2b\xb1\x40\x10\xd2\xa1\x33\x16\xc3\xf9\xcf\xb6\x40\x22\x89\x72\xd7\x80\xe8\x3b\x0e\xad\x48\x5b\x73\xaa\x7f\xac\x8e\xbb\xbc\xdc\xad\xbe\xda\x94\x6a\x77\xf8\x9b\x92\x87\x09\xe7\x7f\x81\x9d\xf8\x89\xe7\x21\xa5\x4c\xf2\x1c\x02\xc4\x40\x45\x61\x16\x4c\x01\xee\x6f\xa5\x7e\xc5\x86\x01\x1e\xb1\x8d\x2c\x48\x2f\x35\x99\x06\x05\xbc\xab\xf6\x30\x03\xa0\x69\x38\x6d\xec\x9b\xef\x87\x6f\xbe\xd6\x73\xaa\x7b\x55\xdf\xea\x77\x4f\x34\xca\x4f\xcc\xce\xc3\x81\x5f\x6f\x4f\xf3\x07\xab\x70\xd8\x99\xb9\x03\x0f\x35\xfe\x1f\x6e\x01\xe0\x6a\xc9\xfd\x95\x19\x67\x08\x58\x36\xd6\x0b\x51\x68\x24\xae\x38\xa8\x3f\x19\x9d\x12\xcb\xfc\x54\x38\x82\x3b\x30\x23\x3d\x86\x78\x92\x40\x20\x65\x17\xb2\x1b\xfa\x14\xba\xd1\xae\x59\xc8\x89\x41\x89\xdf\x55\x7b\x8c\x4a\x0c\xd0\xd9\x12\x3b\x6d\x24\x9f\xee\xa0\x2e\xa3\x19\x1c\x5c\x33\x50\xf6\xa5\x6b\x20\xc6\xa3\x7b\xa7\xcf\x83\x89\x1d\x0c\xb3\x6e\xb0\xf8\x61\x56\x5d\x34\x31\xec\x07\xf3\xdb\xfb\xdf\x12\x77\x9f\xf5\x56\xdb\xca\xdc\xaa\x4a\x41\x2d\xe0\xc3\x3e\x61\x37\x81\x0d\x9d\xdd\x10\x47\xf6\x4e\xd0\x9d\xfa\x65\x3a\xe1\xb9\x2e\xfc\xd4\xc7\x18\x77\xd3\x2a\x22\xde\x8c\x23\xcc\xcd\x54\x4c\x37\x73\xf8\x2c\x0a\x34\x4a\xb5\xaf\x7e\xb5\xcc\x24\x5d\x9e\xc1\x82\xe7\x9f\x09\xac\x9c\x5b\x89\x5a\xc1\xe1\x24\x5a\x0e\x37\x0f\x15\x17\x31\x58\x99\x16\x71\x91\x64\x69\x54\x3c\x79\xa6\x25\x79\x1a\x09\xfd\x0f\x30\xb1\x8a\xb8\x70\x8b\x2d\x94\xf1\x36\x2c\xa8\xb7\x84\x42\x1a\x29\x26\x63\x15\x79\xe9\xef\x34\x7b\x47\xa1\x08\xae\x20\xb8\x72\x7e\x06\xe5\x03\xfb\xeb\x10\x53\x5e\x53\x10\x70\x98\x7c\x3e\x92\x3d\xc4\xf6\xde\x97\x0f\x6a\xf3\x93\x19\x29\x36\xea\xbc\x2c\x35\xc9\x86\x71\xf9\x29\xfb\x2e\x73\x80\x6d\x80\x4c\xd9\x1d\x35\x49\x96\x4e\xc9\xfe\x81\x44\x1d\xf6\x12\xf5\xc6\x15\x35\xa5\x91\x0b\xb6\x0f\x8b\x20\x32\x80\x50\xe7\x48\xee\xf8\x92\x8b\xfd\x0d\xd8\xd8\x64\x2a\xac\xb8\x28\xca\x18\x21\x11\xa9\x8e\x07\x48\xf6\xde\x07\xde\x15\x86\x3c\xf7\x87\xbc\x1b\xd6\x61\x17\x6a\x16\xc0\x73\xf8\x77\xb4\x33\x44\xe0\x90\xe0\x4e\xc4\xf9\x64\xde\xb6\x18\xd3\x24\xb6\x81\x22\x23\xb3\xa2\x3b\xf2\x78\x38\x9b\x7a\x2a\xcf\x73\x8a\x26\xd3\xac\xe6\x93\x93\x87\xe0\x86\x4a\xa6\x22\x05\xb2\x27\xeb\xc8\x1e\xe0\x68\x87\x07\x88\x0b\x9e\x95\xcd\xb2\x2a\xff\x04\x9c\x63\xb5\xd9\xe8\xf7\x99\xea\xdd\xd9\x0c\xb8\x20\x6d\x86\xfe\x5d\xf7\x71\x6a\x47\x13\xdc\x7f\x71\x71\xeb\x86\xad\x68\x64\xc3\xb6\x21\x8c\xc8\x8a\x9e\x58\xc6\x8a\x38\x8f\xac\x60\xd9\x4d\x4e\xeb\xc7\xde\x94\xbf\xa9\x11\x1e\xd6\x03\x28\x30\x07\xbc\xd8\xe5\x6f\xd5\xa6\x40\xbe\x47\xe4\xf9\x1f\x35\x23\x49\xec\x9b\x5e\x64\x1b\x55\x94\x3b\x15\x04\xf8\x3b\x13\xdb\xdc\x5e\x87\x04\x15\x99\x84\x25\x3d\x80\x1c\x3b\x0c\xe6\x28\x57\x9a\x28\xbd\xf9\xab\xce\xc9\x0a\x7d\xfd\x6c\xe9\xc1\xdb\x7d\x55\xed\x8a\x4d\x29\x0f\x7c\x8c\xce\x9d\x3d\xd3\x9b\x1d\x50\x7f\xcf\x78\x91\x63\x78\x12\x53\x96\x7b\x62\x6e\x55\x4e\xd9\xf6\xc4\x2c\x7b\xc3\xf1\xf4\x76\x8f\x75\x09\x5b\x9d\x83\x2e\xff\xf5\x5f\xfe\x4f\x00\x00\x00\xff\xff\x01\x13\xbf\x27\xbf\x76\x01\x00") func webUiStaticVendorJsJqueryMinJsBytes() ([]byte, error) { return bindataRead( @@ -718,12 +739,12 @@ func webUiStaticVendorJsJqueryMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.min.js", size: 95935, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.min.js", size: 95935, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorJsJquerySelectionJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x1b\x6b\x6f\xdb\xd6\xf5\xbb\x7f\xc5\xad\x11\x40\x94\xc7\x4a\x5e\x3f\x3a\x75\x51\xc5\xa6\x6b\xa2\xb2\xe4\x49\x72\xb3\x60\x1b\x0a\x5a\xba\x92\x98\x4a\xa4\x40\x52\x71\x8d\xd4\x40\x65\xaf\x5d\x5b\x37\x08\xb0\x61\x09\xd6\x0d\x43\xb7\xb5\xd9\x33\x29\x86\x3d\x30\x74\x4b\xfa\x63\x18\x39\xe9\xbf\xd8\x39\x97\x97\xef\x4b\x4a\x76\x62\xaf\x28\x46\x04\x96\x48\xde\xf3\x7e\xde\x73\x95\xf2\xd2\x0b\x0b\x64\x89\x5c\xff\xde\x98\x5a\xfb\x25\x9b\x0e\x68\xdb\xd1\x4d\x83\xbc\xc8\x1f\x91\xed\xc1\xb8\xa7\x1b\xb0\x06\x97\xad\x99\xa3\x7d\x4b\xef\xf5\x1d\x22\xb5\x8b\xe4\xa5\xe5\xef\x2e\xbf\x08\x7f\x5e\x22\xea\xd5\x4a\xb3\xf2\xba\x4a\x5e\x37\xaf\xeb\x44\x7a\x75\xa8\x75\xb4\x91\x76\x5d\x2b\x96\x10\xa8\xef\x38\xa3\x95\x72\x79\x77\x60\xf6\x4a\xfe\x9b\x92\x41\x9d\x32\xbe\xdc\x31\x3a\xd4\x22\xad\x3e\x25\x5b\x6a\x8b\x54\xf5\x36\x35\x6c\xca\xa9\x6d\x53\x6b\xa8\xdb\x36\xb2\xa3\xdb\xa4\x4f\x2d\xba\xbb\x4f\x7a\x96\x66\x38\xb4\x23\x93\xae\x45\x29\x31\xbb\xa4\xdd\xd7\xac\x1e\x95\x89\x63\x12\xcd\xd8\x27\x23\x6a\xd9\x00\x60\xee\x3a\x9a\x6e\xe8\x46\x0f\x11\x69\xa4\x0d\x8c\xe3\x62\xa7\x0f\x98\x6c\xb3\xeb\xec\x69\x16\x85\xf5\x1d\xa2\xd9\xb6\xd9\xd6\x35\x40\x49\x3a\x66\x7b\x3c\xa4\x86\xa3\x31\x0d\x74\xf5\x01\xb5\x89\xe4\xf4\x91\x1d\xb2\xd8\xe4\x40\x8b\x45\x46\xaa\x43\xb5\x01\xd1\x0d\x40\x48\x89\xff\x8a\xec\xe9\x4e\xdf\x1c\x3b\xc4\xa2\xb6\x63\xe9\x4c\x91\x32\x2c\x6a\x0f\xc6\x1d\xce\x89\xbf\x62\xa0\x0f\x75\x4e\x07\x31\x30\x9d\xda\x88\x77\x6c\x83\x28\xc8\xad\x4c\x86\x66\x47\xef\xe2\x27\x65\xf2\x8d\xc6\xbb\x03\xdd\xee\xcb\x88\xa6\xa3\x23\x81\xdd\xb1\x03\xcf\x6d\x7c\xce\xd4\x26\xa3\x40\x65\xd3\x22\x60\xc6\x01\x22\xd1\x41\x00\x26\x74\xc8\x23\x5b\x03\x84\x10\xcb\x08\xf5\xeb\x70\x8d\x31\xea\x7b\x7d\x73\x18\x17\x09\xd4\xd5\x1d\x5b\x06\x10\xa6\x1d\x26\xb7\x09\xea\x63\x44\xaf\x83\xa7\x70\x44\x08\xd1\x35\x07\x03\x73\x0f\xc4\x04\xc2\x46\x47\x47\xd1\xec\x15\x6e\x48\x34\xaf\xb6\x6b\xde\xa0\x4c\x32\xcf\x81\x0c\xd3\x01\xae\x3d\x6e\xd0\x28\xa3\xd0\xd8\xfc\x95\xdd\xd7\x40\x8c\x5d\xa6\x7e\x4f\x89\xc0\x02\xa8\x5c\x8b\x08\x67\x21\x27\xb6\x03\x2e\xa1\x83\x3d\x46\xa6\xc5\xe8\x26\x85\x2e\xf9\x7c\x6c\x2a\xa4\x59\xdf\x68\x5d\xad\x34\x14\xa2\x36\xc9\x76\xa3\xfe\x86\xba\xae\xac\x93\xc5\x4a\x13\xee\x17\x65\x72\x55\x6d\x6d\xd6\x77\x5a\x04\x56\x34\x2a\xb5\xd6\x35\x52\xdf\x20\x95\xda\x35\xf2\xba\x5a\x5b\x67\x9a\x57\xbe\xbf\xdd\x50\x9a\x4d\x52\x6f\x10\x75\x6b\xbb\xaa\x2a\xeb\x32\x51\x6b\x6b\xd5\x9d\x75\xb5\xf6\x1a\xb9\x02\xa0\xb5\x3a\xf8\xb1\x0a\xde\x0c\x78\x5b\x75\x46\x93\x63\x53\x15\x80\xdb\x40\x2c\x5b\x4a\x63\x6d\x13\x9e\x54\xae\xa8\x55\xb5\x75\x4d\x26\x1b\x6a\xab\x86\x68\x37\x00\x6f\x85\x6c\x57\x1a\x2d\x75\x6d\xa7\x5a\x69\x90\xed\x9d\xc6\x76\xbd\xa9\x00\x13\xeb\x08\x58\xab\xd7\xd4\xda\x46\x03\x68\x29\x5b\x4a\xad\x55\x02\xda\xf0\x8c\x28\x6f\xc0\x0d\x69\x6e\x56\xaa\x55\x46\xb0\xb2\x03\x62\x34\x18\x97\x6b\xf5\xed\x6b\x0d\xf5\xb5\xcd\x16\xd9\xac\x57\xd7\x15\x78\x78\x45\x41\x4c\x55\xb5\x72\xa5\xaa\x78\x04\x41\xc0\xb5\x6a\x45\xdd\x92\xc9\x7a\x65\xab\xf2\x9a\xc2\x00\xeb\x80\xa8\xc1\x96\x71\x1e\xaf\x6e\x2a\xec\x11\x90\xac\xc0\xbf\xb5\x96\x5a\xaf\x21\x26\x50\xd1\x5a\xbd\xd6\x6a\xc0\x13\x19\x24\x6e\xb4\x02\xe8\xab\x6a\x53\x91\x49\xa5\xa1\x36\x51\x39\x1b\x8d\x3a\x50\x40\xed\x02\x44\x9d\xe1\x01\xb8\x9a\x12\x20\x42\xe5\xc7\x6d\x04\xab\xf0\x7e\xa7\xa9\x84\x1c\xad\x2b\x95\x2a\xa0\x6b\x22\x7c\x74\x31\x1a\xb9\xbc\x20\x75\xc7\x06\x0b\x3c\xe9\x92\x0c\xd1\x06\xf1\x07\x51\x5d\x24\x37\x17\x08\x5c\xe5\xa5\x25\xf6\x09\xb4\x9e\xde\x9b\x3c\xf9\xfb\xa7\xee\xe4\xc1\xc9\x9d\x9f\x4c\xef\xdf\x9d\x7e\x70\xf7\xeb\xc9\xbf\x4e\x3e\xfa\xf5\x93\x8f\xfe\x79\xf2\xde\xb1\x7b\xf8\xd3\xe9\xed\x3b\xd3\x47\x77\xdd\x09\xfc\x7b\xe4\x4e\x7e\xc1\xe1\x7c\xf0\x57\x47\x9a\xa5\x0d\xe1\xeb\x4d\x65\x40\x31\x67\x1c\xc0\x77\xea\x7d\x25\xfe\x35\xfd\xe2\xd1\xd3\xbf\xfe\xc6\xa3\x14\x00\x5a\xd4\x81\x78\x02\xc0\x3a\x8b\x20\x84\x23\xde\xb3\xf4\x92\x26\x04\xb9\xd1\x8b\x2c\x29\x39\xf4\x6d\x0f\xbf\xc7\xad\x3b\xf9\xb9\x7b\xf8\xb1\x3b\xb9\xe7\x4e\x7e\xec\x1e\x1e\x07\xb2\xa4\x51\xa9\x90\x34\x7b\xd4\x3a\x08\x51\x41\xd4\x58\x4e\x88\xea\xeb\x3b\xc7\xd3\xdf\x1f\x3f\x7e\x78\xeb\xc9\xc3\x07\xf3\x80\x53\x08\xdc\x08\x27\x4f\xfe\x71\xf8\xf8\xcb\xf7\x63\xe0\x65\xf6\x79\x43\xb3\xc8\x9b\x3d\xea\xac\x41\x1c\x3a\xaa\xd1\x35\xc9\x2a\x09\x6c\xc4\x35\x56\xf4\xcc\xe3\x2f\x87\xf4\x09\x8b\xc2\x67\x78\xa1\xe0\x2b\xa4\x50\x90\x63\x4f\x99\x0c\x2b\x64\x39\xfe\x14\x58\x83\x67\xc1\xa3\x83\xcb\x0b\xc1\x77\xbd\x4b\xa4\x17\x38\xd5\xd2\x0d\x6d\x30\xa6\xc5\x04\xa1\xf2\x12\x99\xbe\xfb\x99\x3b\x01\xad\xfe\x09\xb5\xfa\xee\xc4\x3d\x3c\x64\x6e\x70\xdb\x9d\x7c\xf1\xe4\x8f\x5f\x06\x4a\xf6\x25\xf4\x2f\xae\x2c\xe0\xfe\x72\x48\x3b\x24\xed\x40\x31\x8d\x93\x42\x66\xc0\x45\x4b\xa0\x9d\xa6\x5f\x78\x93\xec\x70\x96\x54\x85\x3c\xfe\xf7\xe7\xd3\xcf\xee\x24\x89\x7a\x84\x6d\x6e\xcd\x55\xdf\x07\xc3\x4a\xde\xc4\x17\x97\x85\x30\x68\x42\x01\x84\x62\x74\xc4\xeb\x99\xf3\x85\x00\x4c\x7d\x25\x1b\x8b\x8f\x14\xb0\x20\xfb\x98\x8b\x71\x1c\x07\x00\x66\x53\x26\x32\x04\x64\x48\x2c\x43\xde\x2e\x64\x76\x90\x59\x20\xac\x4f\xbd\x0b\xc5\xda\x96\x8a\x11\xdb\xfa\x17\x73\x21\xcd\xe8\x51\xe0\x35\x46\xab\xd4\xb6\x28\x14\xfa\x06\xbe\x93\x8a\x72\x0a\x90\xc9\x89\x2f\x5f\xe2\x90\xbb\x66\x67\x9f\x03\xb5\x40\xf6\x5c\x40\x67\x38\xaa\x52\xa3\xe7\xf4\x05\x1c\x45\x94\xc7\xf0\xb3\x1b\xc1\xba\xb4\x8b\xc4\xd9\x2a\x0d\xa1\x86\xb6\x4c\x9e\x72\x90\xa5\x20\x82\xd2\x16\x8b\x80\xd9\xd4\x01\xa3\x6e\x9b\xba\xe1\x48\x05\xe6\x10\x2d\x93\x7d\x14\x64\x6f\x89\x00\xfc\x80\xb4\x35\xa7\xdd\x27\x52\x2a\x42\x52\xaa\xf2\x4d\x92\xd2\xd4\xf3\x67\x4a\xac\xdb\xa4\xf3\x7b\x9e\x39\x60\xe6\x80\x4e\x96\x13\x44\xa5\xf3\x87\x79\xf1\x10\x22\xfc\x4e\xc4\x5a\x42\xc0\x83\x85\xd9\xda\x02\x67\x76\x27\x90\x40\x6e\xb9\x87\x1f\xba\x87\x90\x4c\x8e\xa3\x5e\x1d\x11\x28\x99\x3e\xfc\xb4\x25\x28\x5a\x7f\x86\xca\x02\x35\x09\x70\xb9\x87\xf7\xdd\xa3\xdf\xb9\x47\x7f\x71\x8f\x8e\xdc\xa3\x0f\x4e\x7e\x76\xeb\xf1\xc3\x5f\x05\xe9\xdb\xd9\x1f\xd1\xa0\xd0\xa4\xb3\x32\x4b\xc9\x75\x68\xbc\xbc\x46\x34\x9a\x72\x03\xa2\x71\xc2\x0f\x12\xf4\xbc\x7c\x9f\x55\x2d\x19\x6c\x14\xcd\x19\xab\x26\x07\x9e\x55\x39\x93\xcb\xce\x50\xf2\x66\xa3\x98\x59\xf6\x22\x4a\xc6\x0b\x72\xfb\xb6\x69\xaf\xa4\x4b\x5e\xc2\x4d\xd0\x20\x90\x42\xc0\x08\xb1\x62\x99\x11\xdf\x9c\xc1\x9b\xbc\xfe\x01\xa0\x9f\x7d\x59\xed\xc3\x7b\xf8\x72\x10\xa9\x43\xf2\xc2\x99\x6d\xfb\xf4\x0f\xf7\xa7\x0f\x3e\x39\x5f\xdb\x06\xc0\x11\xdb\x3a\x26\x4b\x23\xc1\x32\x9f\x0f\x81\xdf\x0b\x6c\x18\x60\x8c\xd8\x90\x63\x0c\xfc\x60\x86\x1b\xe4\xa1\xf0\xfd\x20\xd7\x0d\x22\x28\x22\xad\x5c\x1b\x8d\x1b\x31\x66\x42\x16\xf7\xe8\xb7\xee\xd1\x7f\xdc\xa3\x0f\xc9\xe2\x5b\x94\x8e\x16\xc9\x3b\x64\x91\x31\xcc\xbe\x01\xdd\x45\x82\xc6\x82\xd6\x64\xf2\x09\x6b\xfe\x8e\x85\x8e\x67\x67\x38\x9e\xec\x8b\x20\x7b\x8c\x24\x1d\xd1\xe3\x6e\x95\x6d\xca\x4a\x6f\xb2\xbb\x2d\xb3\x43\x25\x6f\x71\xa2\x68\x61\x39\xe7\x00\xab\xa4\xc0\xb8\x2c\x88\xca\x45\x54\x6b\xab\x71\x33\x64\xb6\x09\x21\x5e\x80\xca\xc5\xea\xa7\xff\x08\x95\x64\x9e\x8e\xf7\x87\xc9\x16\x22\x86\x54\x58\x83\x91\xa1\x8c\x32\x97\x55\x1e\xa3\x6d\x48\x4e\x85\x14\xc2\xfa\x9d\xa1\xa1\xdd\xd0\x7b\x9a\x63\x5a\xa5\xb1\x4d\xad\x4a\x0f\x71\x38\x66\xd5\xdc\xa3\xd6\x9a\x66\x03\x7c\x49\x37\x3a\xf4\xed\x7a\x57\x5a\x1c\xda\x3a\x5d\x2c\x92\x57\x56\xc9\x72\x16\x47\x22\x9d\x25\x9a\x39\xdc\x4c\x5b\xd2\xb2\x1c\x5f\x57\x2c\x59\x74\x34\xd0\xa0\xcf\x2b\xff\xd0\x2a\xf7\x64\xe8\xc3\x8b\x99\x95\x34\x49\x29\xde\x65\x66\xd1\xc1\x8e\xf1\xb4\x54\x04\xdd\x00\x5e\x5e\xd1\x6e\x9b\x83\x81\x36\x02\x1d\x39\xd6\x58\xd4\x4a\x84\x2b\xb1\xa9\x62\x8d\x87\x54\xc0\x59\x92\xd6\x76\xa8\x55\x48\x6a\x60\x16\x02\x68\x65\xc4\xe0\x28\xfe\x8b\x29\x64\x39\xd8\xbc\x76\x55\xd4\x3c\x45\x82\x23\x6c\xda\xc3\xad\x43\xae\x37\x66\x02\x48\x31\xd6\xe2\x06\x11\x35\x60\x71\x86\xf2\x7a\xc4\xfc\xce\x27\x8e\x6d\x66\x7d\x9a\xbe\xff\x1e\x64\x3d\x2f\xdb\x06\x3b\xb0\x8b\x6e\x3c\x52\xfb\xf1\x50\x94\x04\x67\x59\xbd\x40\x8b\x6d\x63\x67\x35\x03\x1c\xb9\xb8\x13\xe0\x9b\x87\x39\x34\x97\x55\x58\x40\x6d\xfe\xf8\x60\x5e\xb5\x9d\xa1\x7c\x9d\x5a\x85\xcf\x54\xee\xc2\x4a\x15\x51\x6f\x6e\x81\xf3\x3e\xdf\x79\x87\xd3\xbd\x9c\x5d\xd8\xba\x1a\x84\x9d\xc8\xc3\x7d\x54\xac\x42\xe5\x96\x1c\x7b\x4f\x67\x81\x22\xe4\xc8\x43\x05\x91\x5d\x40\x4e\x0a\x2b\x19\x2f\xbd\xf2\x9a\xf5\x16\x59\x48\xbf\xc3\x6b\x17\x8a\xce\x5b\x82\x94\xd3\xa1\x5d\x6d\x3c\x70\xc4\x40\x81\x68\x8c\xa5\x5c\xd9\xb8\x1d\x19\xc4\x5c\x7e\x99\x8e\x62\x6c\x34\x27\xb7\x4e\x6e\xff\xd2\x9d\x7c\x70\x11\x5d\x66\xc4\x0b\x83\x89\x1a\xbf\x62\xac\xa4\x46\x6a\x39\x88\x2e\xa6\xad\xe3\x25\x52\xd8\xd7\x81\x24\x19\x4d\xdd\xac\xdd\x45\x7a\xa4\x61\x5a\x7a\x2f\x59\xb6\xd3\xab\x46\x26\x4e\xea\x2e\x85\xb9\xc9\x6e\x5b\x50\x77\x5b\xe6\x48\x34\x26\xf1\xbb\xa1\xbc\x6d\x8b\xbf\xf3\x8e\xec\xb9\x0f\x2e\x8b\xdb\x37\xc6\x13\xa0\x43\x56\xa3\x1d\x85\x8f\xa5\xc8\xd1\xc0\x47\x74\x09\xdf\x1c\x25\x8b\xb0\x50\x08\x90\x2f\xd9\x1e\x62\x5b\xec\xf5\xd6\xa1\xe6\xad\x68\x3f\x3d\x57\x08\x44\x9d\x3f\x19\x0e\x93\x07\xd3\x0f\x6f\xc1\x26\xff\xe4\xe3\xaf\xa6\xef\x7d\x7e\x41\xfb\xae\x9c\x88\xf0\xf8\xf8\xa6\x05\x82\x6e\x40\x47\xec\x5c\xa1\x5d\xd3\xfa\x96\x45\x43\xdc\xfb\xe3\x5b\xfa\x73\x8f\x0c\x61\x83\xfa\x8d\x8a\x8d\x47\x1f\xff\x3f\x36\xe6\x8a\x8d\x4a\x17\x76\x22\xdf\xae\xd0\x48\xcd\xb7\x4e\xeb\xfe\x98\xf8\xff\xe7\x65\x81\x7d\x0b\xc7\xbb\xe9\x1f\x5f\xe0\xd0\xed\xab\x87\xd3\x8f\x3e\xf5\x8d\x7a\xa9\x04\x0c\x03\x77\x52\xe6\x84\xd6\x3d\xbc\xe7\x1e\x82\x23\xfd\x8d\xf5\xf7\xf7\x82\xbd\x52\xd6\x09\x61\xb0\x75\x3a\x4d\xeb\x3f\x84\xf6\x3a\x2a\x35\x27\x11\x3a\x2d\xea\x95\xb9\x6a\xdf\x19\x0e\xf2\x7c\x35\x6f\x47\x90\x31\xce\xe2\xca\x89\x38\x34\xb2\x23\x72\x60\xbe\xcf\x02\x0f\x90\xd8\x1a\x6c\xf2\x0b\xc8\x5a\xa1\x18\x9f\x9e\xb0\xe9\x92\xf7\x22\x61\xf6\xec\x29\xd0\x3c\x07\x76\xfe\x5a\xce\x48\xde\x3c\xa6\x5c\x46\x76\x99\x43\x66\xae\xe1\xaa\x4a\x52\x96\x50\x1a\x4f\x7b\x59\x47\x2d\x7c\x62\x30\x93\x3c\x9a\x2b\x73\x0d\xaa\x14\xd4\x0f\xea\x4c\x73\xc0\x9d\x3c\x63\xa0\xe1\xeb\x01\xa0\x11\x8e\x0d\x16\x2a\xb9\xea\x60\xe2\xf2\xe8\x8f\x43\x49\xcb\x19\x32\xce\x25\x67\x14\x2f\x9e\xec\xc5\x4e\x02\xb3\xf1\x06\x60\x6c\x6e\xc2\x66\x44\xc8\x95\x66\xb4\xfb\xa6\x55\x03\xd7\x92\x49\x78\x5f\xef\x76\x6d\x9a\x35\x29\x4a\x61\xc3\x81\x11\xc2\xb2\x21\x64\x88\x8a\xdd\xce\xc4\x94\x31\xf9\x62\x04\x3c\x67\xb9\x24\x15\x5e\xee\xe8\x37\x5e\x79\xb9\x8c\x7f\xc1\xf1\xb5\xd1\x08\x13\x08\x1f\x8e\x0d\x4c\x83\xae\x99\x06\xe4\x14\xc7\x96\x8a\xc5\x12\x3a\x40\xa6\x13\xe5\x0d\xa2\x66\x1e\xe6\xe2\xf5\xfc\x63\x21\xe7\x5c\x37\x31\x1f\x11\xf0\xfd\x6c\xe1\x30\x07\x07\x08\xdf\xca\xe6\xe2\xdc\xa7\x6a\xa2\xed\x79\xa1\x90\xaa\x40\xc5\xb0\x04\xe5\xd6\x9e\xae\x91\x2e\x3f\x59\xf9\x58\x26\xe6\xc8\xb1\x93\x8c\xe3\x33\x2c\xc8\xf8\x01\xc9\xf8\x66\xb2\x72\xfb\xe3\x11\x51\x46\xf7\x38\x5c\x4a\xab\x32\xc2\xb5\x54\xf0\xce\xd9\x0a\x45\xd1\xb2\x53\x1f\x5a\x06\xa0\x22\x6c\x73\x9d\x43\x8a\x96\x9f\xf1\x3c\x72\x3e\x54\x73\x9d\x4b\x06\xa8\xd2\x3f\xab\xf0\x86\x48\x5c\x8b\xe2\x91\x90\x3f\x95\x8c\x1f\x1b\x97\x3c\x18\x09\x3b\xa0\x1f\x2c\xff\x28\x23\x87\x64\xcd\xa0\x66\x1b\xd6\x6b\xaa\x0a\xdc\xaf\x4e\x63\xde\xcc\x73\xcb\x00\x54\xa8\x64\xd1\xa9\x1f\xd2\x0e\xad\x35\xb7\xbd\x32\x51\x05\xd6\x7a\x46\x7b\xd9\x73\xd8\x8b\xb5\xa6\x54\x6b\xf7\xc3\x9f\xc6\xe5\x25\xe1\xa4\x79\xed\xd0\xbc\xdc\x06\x19\x59\xed\xb9\x5b\x9e\x8f\xba\xf2\x4c\x7f\xba\x49\x62\x00\x97\x6f\xac\x48\x43\xca\x8c\x75\xfa\x09\xe1\x3c\x58\xcf\x71\x27\x18\x90\xcf\x72\x1b\x5f\xb3\xe7\xe9\x37\xfe\x59\x5e\xe8\x38\x25\x6f\xdf\x19\x4a\x7f\x61\x9e\xe4\xed\x87\x4f\xe3\x48\xde\x0c\x2e\xfe\xdb\x3f\x3e\x79\x88\x38\x9b\x3f\x85\x38\x2f\x4f\xcb\x9c\x2e\xcc\x83\xec\x22\x1c\x2c\x87\x7c\x72\xaf\xc8\x75\x15\x52\xdd\x65\xa3\x3b\x46\x4d\xc3\x49\xc5\xb3\x38\x34\x37\xf0\xf3\xf4\x67\xec\x59\x43\x41\x70\xa3\xe8\x31\x2c\xfc\x25\x42\xf4\x4a\x06\x42\x74\x50\x79\x86\x68\xc0\x6b\xae\xed\x8d\x98\x2e\x1b\x02\x9d\x95\x6c\x66\x78\x3e\xe7\xf8\x84\x16\x42\xdc\xb9\x9d\x7a\x86\x11\x80\xe6\xf7\x4f\x39\x33\x87\x60\x79\x4e\x8f\x24\x70\xb4\xdc\xc3\xb4\xec\xce\x89\xfd\x86\x73\xae\xd6\x29\xfa\x48\xdc\xe1\x23\x1a\x51\x8f\x7f\x50\x94\xbc\x09\x13\xfb\x41\x7c\xc7\xdc\xf3\x3f\x4b\xfe\x7f\x78\x81\x45\xff\x0d\x00\x00\xff\xff\xb4\x9f\x14\xbc\x08\x34\x00\x00") +var _webUiStaticVendorJsJquerySelectionJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5b\x7d\x6f\xdb\xc6\x19\xff\xdf\x9f\xe2\xa9\x11\x40\x94\xcb\x48\x6e\xfe\x74\xaa\xa2\x8c\x4d\xc7\x44\x65\xd2\x93\xe8\x66\xc1\x36\x14\xb4\x78\x92\x98\x52\x3c\x81\x77\x8a\x63\x24\x06\x2a\xb9\xed\xda\x3a\x41\x81\x0e\x4b\xb0\x6e\x18\xba\xb5\xcd\x5e\xba\x26\x18\xf6\x82\xa1\x5b\xd2\x0f\xc3\x28\x49\xbf\xc5\x70\xc7\x77\x8a\xa4\xe5\x24\xf6\x8a\x62\xfc\x23\xb4\xc8\x7b\xde\x9f\xbb\xe7\x77\xcf\x31\xf5\xa5\x97\x16\x60\x09\xae\xfc\x68\x84\xdc\xbd\x1a\x41\x36\xea\x50\x0b\x3b\x70\x36\x78\x04\x5b\xf6\xa8\x67\x39\x0b\xb0\xc4\x86\xad\xe2\xe1\x9e\x6b\xf5\xfa\x14\x84\x4e\x15\xce\x2d\xbf\xb2\x7c\xf6\xdc\xf2\x2b\xe7\x40\xb9\x24\xb5\xa5\x37\x14\x78\x03\x5f\xb1\x40\x78\x7d\x60\x98\xc6\xd0\xb8\x62\x54\x6b\x8c\xa8\x4f\xe9\x70\xa5\x5e\xdf\xb1\x71\xaf\x16\xbe\xa9\x39\x88\xd6\xd9\xcb\x6d\xc7\x44\x2e\xe8\x7d\x04\x9b\x8a\x0e\x4d\xab\x83\x1c\x82\x02\x69\x5b\xc8\x1d\x58\x84\x30\x75\x2c\x02\x7d\xe4\xa2\x9d\x3d\xe8\xb9\x86\x43\x91\x29\x42\xd7\x45\x08\x70\x17\x3a\x7d\xc3\xed\x21\x11\x28\x06\xc3\xd9\x83\x21\x72\x09\x76\x00\xef\x50\xc3\x72\x2c\xa7\xc7\x18\x19\xd0\xc1\xc3\x3d\x36\x98\xf6\x2d\x02\x04\x77\xe9\xae\xe1\x22\x30\x1c\x13\x0c\x42\x70\xc7\x32\x28\x32\xc1\xc4\x9d\xd1\x00\x39\xd4\xe0\x1e\xe8\x5a\x36\x22\x20\xd0\x3e\x53\x07\x16\xdb\x01\xd1\x62\x95\x8b\x32\x91\x61\x83\xe5\x00\xed\x23\x08\x5f\xc1\xae\x45\xfb\x78\x44\xc1\x45\x84\xba\x16\x77\xa4\x08\x96\xd3\xb1\x47\x66\xa0\x49\x38\xc2\xb6\x06\x56\x20\x87\x71\xe0\x3e\x25\x8c\xef\x88\x20\x91\x6b\x2b\xc2\x00\x9b\x56\x97\xdd\x11\xb7\x6f\x38\xda\xb1\x2d\xd2\x17\x19\x1b\xd3\x62\x02\x76\x46\x14\x89\x40\xd8\x73\xee\x36\x91\x19\x54\xc7\x2e\x10\x64\xdb\x8c\x89\x85\x88\x6f\x74\xac\x23\x1f\x03\x14\x33\x2e\x43\xe6\x5f\x1a\x78\x8c\x4b\xdf\xed\xe3\x41\xda\x24\x8b\x40\x77\xe4\x3a\x16\xe9\x23\x93\xdb\x8d\x81\x60\x2e\xf4\x0a\xea\xd0\x80\x11\xa3\xe8\x62\xdb\xc6\xbb\x96\xd3\x83\x0e\x76\x4c\x8b\x99\x46\x56\x82\x40\xb2\xf0\x1a\x3b\xf8\x2a\xe2\x96\xf9\x09\xe4\x60\x6a\x75\xfc\x10\xf0\xa0\x0c\xe3\x60\x07\xaf\x48\xdf\xb0\x6d\xd8\xe1\xee\xf7\x9d\x88\x4c\xe6\x72\x23\x61\x9c\xcb\x34\x21\xd4\x70\xa8\x65\xd8\x30\xc4\x2e\x97\x9b\x35\xba\x16\xea\xb1\x21\x43\x5b\x5b\xd7\x2f\x49\x2d\x19\x94\x36\x6c\xb5\xb4\x37\x95\x35\x79\x0d\x16\xa5\x36\x28\xed\x45\x11\x2e\x29\xfa\x86\xb6\xad\xc3\x25\xa9\xd5\x92\x54\xfd\x32\x68\xeb\x20\xa9\x97\xe1\x0d\x45\x5d\xe3\x9e\x97\x7f\xbc\xd5\x92\xdb\x6d\xd0\x5a\xa0\x6c\x6e\x35\x15\x79\x4d\x04\x45\x5d\x6d\x6e\xaf\x29\xea\x45\xb8\xb0\xad\x83\xaa\xe9\xd0\x54\x36\x15\x5d\x5e\x03\x5d\xe3\x32\x03\x6e\x8a\xdc\x06\x6d\x9d\x71\xd9\x94\x5b\xab\x1b\x92\xaa\x4b\x17\x94\xa6\xa2\x5f\x16\x61\x5d\xd1\x55\xc6\x76\x5d\x6b\x81\x04\x5b\x52\x4b\x57\x56\xb7\x9b\x52\x0b\xb6\xb6\x5b\x5b\x5a\x5b\x06\x49\x5d\x63\x84\xaa\xa6\x2a\xea\x7a\x4b\x51\x2f\xca\x9b\xb2\xaa\xd7\x40\x51\x41\xd5\x40\x7e\x53\x56\x75\x68\x6f\x48\xcd\x26\x17\x28\x6d\xeb\x1b\x5a\x8b\x6b\xb9\xaa\x6d\x5d\x6e\x29\x17\x37\x74\xd8\xd0\x9a\x6b\x72\xab\x0d\x17\x64\xc6\xa9\xa9\x48\x17\x9a\xb2\x2f\x50\xbd\x0c\xab\x4d\x49\xd9\x14\x61\x4d\xda\x94\x2e\xca\x9c\x50\xd3\x37\xe4\x16\x1f\x16\xe8\x78\x69\x43\xe6\x8f\x14\x15\x24\x15\xa4\x55\x5d\xd1\x54\xc6\x49\x5b\x87\x55\x4d\xd5\x5b\xd2\xaa\x2e\x82\xae\xb5\xf4\x88\xfa\x92\xd2\x96\x45\x90\x5a\x4a\x9b\x39\x67\xbd\xa5\x6d\x8a\xc0\xbc\xab\xad\x73\xff\xa9\x8c\x4e\x95\x23\x46\xcc\xf9\xe9\x18\x69\x2d\xfe\x7b\xbb\x2d\xc7\x1a\xad\xc9\x52\x53\x51\x2f\xb6\x19\x7d\x72\x30\x0b\x72\x7d\x41\xe8\x8e\x1c\x3e\xf1\x84\x33\x22\xec\x5a\x8e\xc8\x66\x75\x15\xae\x2f\x00\x00\xd4\x97\x96\xf8\x1d\x96\xe0\xe9\xdd\xf1\x93\xbf\x7f\xe6\x8d\xef\x3d\xbe\xfd\xf3\xe9\xd7\x77\xa6\x1f\xdc\xf9\x6e\xfc\xaf\xc7\x1f\xfd\xf6\xc9\x47\xff\x7c\xfc\xde\xa1\x37\xf9\x64\xfa\xf1\xed\xe9\xc3\x3b\xde\xf8\x8e\x37\x7e\xe8\x8d\x7f\x15\xd0\x85\xe4\xaf\x0f\x0d\xd7\x18\x00\xc0\x75\xd9\x46\x6c\xcd\xd8\x07\x00\xe4\xff\x09\xe1\x35\xbd\xff\xf0\xe9\x5f\x7f\xe7\x4b\x8a\x08\x5d\x44\x47\xae\x03\x70\x5d\xe3\x33\x88\xd1\x81\xff\x6c\x76\x48\x9b\xba\x96\xd3\x4b\x0c\xa9\x51\x74\xcd\xe7\xef\x6b\xeb\x8d\x7f\xe9\x4d\x6e\x7a\xe3\xbb\xde\xf8\x5d\x6f\x72\x18\xd9\x32\xcb\x4a\x71\x28\xea\x21\x77\x3f\x66\x45\xa8\xe1\xd2\x98\xd5\x77\xb7\x0f\xa7\x7f\x38\x7c\xf4\xe0\xd6\x93\x07\xf7\xe6\x21\x47\x8e\x09\x09\x4d\x9e\xfc\x63\xf2\xe8\x9b\xf7\x53\xe4\x75\x7e\xbf\x6a\xb8\xf0\x56\x0f\xd1\x55\xc3\x45\x54\x71\xba\x18\x1a\x10\xc5\x28\xf0\x58\xd5\x0f\x4f\x38\xdc\x45\x04\x1a\x10\x3f\x63\x17\x33\x7c\x05\x2a\x15\x31\xf5\x94\xdb\xb0\x02\xcb\xe9\xa7\xc8\x31\x57\x60\x39\x7a\xb4\x7f\x7e\x21\xfa\xdb\xea\x82\xf0\x52\x20\xb5\x76\xd5\xb0\x47\xa8\x9a\x11\x54\x5f\x82\xe9\x3b\x5f\x78\xe3\x9b\xde\xf8\xcf\xcc\xab\xef\x8c\xbd\xc9\x84\xa7\xc1\xc7\xde\xf8\xfe\x93\x3f\x7d\x13\x39\x39\xb4\x30\xbc\x02\x67\xb9\x88\x9c\x8f\x65\xc7\xa2\xa9\xbb\x97\x11\xc5\x94\xd9\xb5\x9c\x5a\x0f\xd1\x76\x58\x78\xb3\xea\x04\x2a\x29\x32\x3c\xfa\xf7\x97\xd3\x2f\x6e\x67\x85\xfa\x82\x49\x10\xcd\x46\x98\x83\x71\x25\x6f\xb3\x17\xe7\x73\x69\x58\x08\x73\x28\x64\xc7\xcc\x1f\xcf\x93\x2f\x26\xe0\xee\xab\x11\x56\x7c\x84\x48\x05\x31\xe4\x5c\x4d\xf3\xd8\x07\x64\x13\xc4\x4d\x36\x71\x27\x16\x56\x60\x6f\x17\xbb\xcc\xe6\x1c\x63\x43\xe9\x5d\xdc\x19\x11\xa1\x9a\x88\x6d\x78\xf1\x14\x32\x9c\x1e\x82\x06\xa4\x64\xd5\x3a\x2e\x32\x28\x6a\xb1\x77\x42\x55\x9c\x21\xe4\x76\xb2\x97\xe7\x02\xca\x1d\x6c\xee\x05\x44\x3a\xba\x46\x4b\x09\xe9\x60\xd8\x44\x4e\x8f\xf6\x73\x34\x4a\x38\x8f\xf3\xe7\x3f\x72\xc6\xcd\xa6\x48\x5a\xad\xda\x00\x5f\x45\x3a\x0e\x96\x1c\xa6\x52\x34\x83\x66\x23\x96\x20\x23\x88\xca\x8e\xb9\x85\x2d\x87\x0a\x15\x9e\x10\x3a\xe6\xb7\x8a\xe8\x0f\xc9\x21\xdf\x87\x8e\x41\x3b\x7d\x10\x66\x66\xc8\x8c\xab\xc2\x90\xcc\x78\xea\xc5\x2b\x95\xef\xdb\x6c\xf2\xfb\x99\x69\xf3\x70\xc0\xd9\x50\x20\x73\x7a\xf0\xb0\x6c\x3e\xc4\x0c\x5f\x4e\x44\x2b\x97\x70\x7f\xe1\x68\x6f\xd5\x97\xc0\x1b\x4f\xbc\xf1\x2d\x6f\xf2\xa1\x37\x19\x7b\x93\xc3\x64\x56\x27\x0c\xca\x2e\x1f\xe1\xb2\x95\x53\xb4\xbe\x9a\xde\x67\x35\xc9\x9b\x1c\x7a\x93\xaf\xbd\x83\xcf\xbd\x83\xbf\x78\x07\x07\xde\xc1\x07\x8f\x7f\x71\xeb\xd1\x83\xdf\x44\xcb\x37\xdd\x1b\xa2\xa8\xd0\xcc\xae\xca\x7c\x49\xd6\x86\xc8\xf5\x81\x68\x72\xc9\x8d\x84\xa6\x05\xdf\xcb\xc8\xf3\xd7\xfb\xa2\x6a\x09\x71\xc5\x84\xe7\xa9\x9a\x30\x5f\xe5\xcc\x0e\x7b\x86\x92\x77\x34\x8b\x23\xcb\x5e\xc2\xc9\xec\xea\x21\xba\x85\xc9\xca\x6c\xc9\xcb\xa4\x09\x0b\x08\x1d\x0c\xa1\x91\x2e\x96\x05\xf3\x3b\x50\xf0\x7a\x50\xff\xe8\x60\x18\xae\xbe\xbc\xf6\xb1\xdf\xc8\x31\xf7\x13\x75\x48\x5c\x78\xe6\xd8\x3e\xfd\xe3\xd7\xd3\x7b\x9f\x9e\x6c\x6c\x23\xe2\x44\x6c\x29\xe6\xcb\x48\x34\x2c\xd4\x23\x27\xef\x73\x62\x18\x71\x4c\xc4\x30\xe0\x18\xe5\xc1\x11\x69\x50\xc6\x22\xcc\x83\xd2\x34\x48\xb0\x48\x40\xb9\x0e\x0b\x6e\x22\x98\x19\x5b\xbc\x83\xdf\x7b\x07\xff\xf1\x0e\x3e\x84\xc5\xb7\x11\x1a\x2e\xc2\x0d\x58\xe4\x0a\xf3\xbf\x90\x63\x2e\x02\x0b\xd6\xf8\x5d\x6f\xfc\x29\x07\x7f\x87\xb9\x89\x47\x0a\x12\x4f\x0c\x4d\x10\x7d\x45\xb2\x89\xe8\x6b\xd7\xe0\x9b\xb2\xda\x5b\xfc\xd7\x26\x36\x91\xe0\x0f\xce\x14\x2d\x56\xce\x03\x82\x06\x54\xb8\x96\x95\xbc\x72\x91\xf4\x5a\x23\x1d\x86\x42\x98\x10\xf3\x45\x8e\x59\xca\x35\x5c\xfe\x13\x52\xb2\xeb\x74\x1a\x1f\x66\x21\x44\x8a\x69\x6e\x0d\x66\x0a\x15\x94\xb9\xa2\xf2\x98\x84\x21\x25\x15\x32\x97\x36\x44\x86\x8e\x71\xd5\xea\x19\x14\xbb\xb5\x11\x41\xae\xd4\x63\x3c\x28\x6e\xe2\x5d\xe4\xae\x1a\x04\x09\xd5\x9a\xe5\x98\xe8\x9a\xd6\x15\x16\x07\xc4\x42\x8b\x55\x78\xad\x01\xcb\x45\x1a\xe5\xf9\x2c\x03\xe6\xd8\x66\xda\x15\x96\xc5\xf4\xb8\x6a\xcd\x45\x43\xdb\xe8\x20\xa1\xfe\x53\xb7\xde\x13\xa1\x52\xa9\x16\x56\xd2\xac\xa4\x34\xca\x2c\x92\xc3\x10\xe3\x71\xa5\xe4\xa0\x01\x08\xf1\x45\xad\x83\x6d\xdb\x18\x12\x24\x50\x77\x94\x07\x25\xe2\x91\x0c\x54\x71\xe0\x21\x54\x3a\x7d\xc3\x35\x3a\x14\xb9\x95\xac\x07\x8e\x62\x20\x3b\x66\x3e\x39\x33\xff\xec\x0c\xb3\x12\x6e\x3e\x5c\xcd\x03\x4f\x89\xc9\x11\x83\xf6\x78\xeb\x50\x9a\x8d\x85\x04\x42\x4a\xb5\x74\x40\xf2\x00\x58\x5a\xa1\x32\x8c\x58\x8e\x7c\xd2\xdc\x8e\xac\x4f\xd3\xf7\xdf\xf3\xc6\xf7\xfc\xd5\x36\xda\x81\x9d\x36\xf0\x98\xd9\x8f\xc7\xa6\x64\x34\x2b\xc2\x02\x3a\xdf\xc6\x1e\x05\x06\x02\xe6\xf9\x48\x20\xd8\x3c\xcc\xe1\xb9\xa2\xc2\xe2\x4d\x3e\x09\xdb\x07\xf3\xba\xed\x19\xca\xd7\xb1\x5d\xf8\x5c\xe5\x2e\xae\x54\x09\xf7\x96\x16\x38\xff\x7e\xe3\x46\x20\xf7\x7c\x71\x61\xeb\x1a\x36\xc9\xcd\xf0\x90\x15\xaf\x50\xa5\x25\x87\xec\x5a\x7c\xa2\xe4\x6a\xe4\xb3\x22\x08\x2a\x4c\x93\xca\x4a\xc1\x4b\xbf\xbc\x16\xbd\x65\x2a\xcc\xbe\x63\xd7\x8e\x8b\x8c\xb7\x73\x96\x1c\x13\x75\x8d\x91\x4d\xf3\x89\x22\xd3\xb8\x4a\xa5\xb6\x05\x71\xe4\x14\x73\xe5\xe5\xec\x2c\x66\x40\x73\x7c\xeb\xf1\xc7\xbf\xf6\xc6\x1f\x9c\x06\xca\x4c\x64\x61\xd4\x51\x0b\xae\x94\x2a\x33\x2d\xb5\x12\x46\xa7\x03\xeb\x82\x12\x99\x8b\xeb\xd0\x35\x5a\x00\xea\x8e\xda\x5d\xcc\xb6\x34\xb0\x6b\xf5\xb2\x65\x7b\x76\xd4\x10\x13\x68\xc0\x99\x78\x6d\x22\x1d\x17\xdb\xb6\x8e\x87\x79\x6d\x92\x10\x0d\x95\x6d\x5b\xc2\x9d\x77\x62\xcf\xbd\x7f\x3e\x1f\xbe\x71\x9d\xa0\xc1\x55\x4d\x22\x8a\x90\x4b\x35\x60\x03\x2f\xa7\x86\x04\x9b\xa3\x6c\x11\xce\x35\x62\x88\x49\x16\x1e\x32\x58\xec\x63\xeb\xd8\xf3\x6e\x12\x4f\xcf\x35\x05\x92\xc9\x9f\x9d\x0e\xe3\x7b\xd3\x0f\x6f\x79\xe3\xaf\x1e\xdf\xfc\x76\xfa\xde\x97\xa7\xb4\xef\x2a\x99\x11\xbe\x1e\xdf\xb7\x89\x60\x39\x04\xb9\xf4\x02\xea\x62\xf7\x07\x36\x1b\xd2\xd9\x9f\xde\xd2\x9f\xf8\xcc\xc8\x05\xa8\xdf\xab\xb9\xf1\xf0\xe6\xff\xe7\xc6\x5c\x73\x43\xea\x52\xe4\xfe\xb0\xa6\xc6\x4c\x7f\xeb\xb8\xe9\xcf\x16\xfe\xff\x79\x59\xe0\x7f\xc5\xed\xdd\xd9\x8f\x2f\xbc\xc9\x27\x4f\xbf\x7d\x30\xfd\xe8\xb3\x30\xa8\x67\x6a\xe8\x1a\x45\x8e\x29\x14\x76\x68\xbd\xc9\x5d\x6f\xf2\xb9\x77\xf0\x37\x8e\xef\xef\x46\x7b\xa5\xa2\x13\xc2\x68\xeb\x74\x1c\xe8\x3f\xc0\x26\x4a\x5a\x1d\x88\x88\x93\x96\xf9\x95\xa7\x6a\x9f\x0e\xec\xb2\x5c\x2d\xdb\x11\x14\xb4\xb3\x02\xe7\x24\x12\x9a\xa9\x93\x97\xc0\xc1\x3e\x0b\x1a\x20\xf0\x31\x0c\xe4\x57\x98\x6a\x95\x6a\xba\x7b\xc2\xbb\x4b\xfe\x8b\x4c\xd8\x8b\xbb\x40\xf3\x1c\xd8\x85\x63\x03\x45\xca\xfa\x31\xf5\x3a\x53\x97\x27\x64\xe1\x98\xc0\x55\x59\xc9\x02\xb3\xc6\xf7\x5e\xd1\x51\x4b\xd0\x31\x38\x52\x3c\x0b\x57\xe1\x18\xe6\x52\x82\x6c\x68\xe4\x68\x10\x24\x79\x41\x43\x23\xf4\x03\x41\x36\xa3\xe3\x8d\x05\xa9\xd4\x1d\x90\x98\xfd\x69\x2a\x61\xb9\xc0\xc6\xb9\xec\x4c\xf2\x35\x71\x27\x7d\x12\x58\xcc\x17\x12\x5d\x19\xea\xf7\x88\x98\x56\x86\xd3\xe9\x63\x57\xc5\x26\x12\x21\xfe\xad\x75\xbb\x04\x15\x75\x8a\x66\xb8\xc9\x8e\xc9\x79\xf1\x26\x64\xcc\x8a\xff\x3c\x92\x53\x41\xe7\x0b\xe2\x64\x39\x23\x54\x5e\x35\xad\xab\xaf\xbd\x5a\x67\xff\x56\xaa\x35\x63\x38\x64\x0b\x48\xd0\x1c\xb3\xb1\x83\x56\xb1\x43\x91\x43\x89\x50\xad\xd6\x58\x02\x14\x26\x51\x59\x23\xea\xc8\xc3\x5c\x38\x91\xb9\x50\x72\xae\x9b\xe9\x8f\xe4\xe8\xfd\x7c\xd3\x61\x0e\x0d\x18\xbd\x5e\xac\xc5\x89\x77\xd5\xf2\xb6\xe7\x95\xca\x4c\x05\xaa\xc6\x25\xa8\xb4\xf6\x74\x9d\xd9\xf2\x53\xb4\x1e\x8b\x80\x87\x94\x64\x15\x67\xcf\x58\x41\x66\xb7\x1b\x37\xe0\x7a\xb6\x72\x87\xed\x91\xbc\x15\x1d\xb2\xc5\x2e\xbc\x12\x5a\x0b\x15\xff\x9c\xad\x52\xcd\x1b\x76\xec\x43\xcb\x88\x34\x8f\xdb\x5c\xe7\x90\x79\xc3\x9f\xf1\x3c\x72\x3e\x56\x73\x9d\x4b\x46\xac\x66\x3f\xab\xf0\x9b\x48\x81\x17\xf3\x5b\x42\x61\x57\x32\x7d\x6c\x5c\xf3\x69\x04\x86\x80\x7e\xb2\xfc\xb3\x82\x35\xa4\xa8\x07\x75\x74\x60\x7d\x50\x55\x09\xf2\xea\x38\xe1\x2d\x3c\xb7\x8c\x48\x73\x9d\x9c\x77\xea\xc7\x64\xc7\xd1\x9a\x3b\x5e\x85\xac\xa2\x68\x3d\x67\xbc\xc8\x1c\xf1\xe2\xd0\x14\x19\x9d\x7e\xfc\x69\x5c\xd9\x22\x9c\x0d\x2f\x89\xc3\x1b\xc4\xa0\x60\x55\x7b\xe1\x91\x0f\x5a\x5d\x65\xa1\x3f\x5e\x27\x31\xa2\x2b\x0f\x56\x02\x90\xf2\x60\x1d\xbf\x43\x38\x0f\xd7\x13\xdc\x09\x46\xe2\x8b\xd2\x26\xf4\xec\x49\xe6\x4d\x78\x96\x17\x27\x4e\xcd\xdf\x77\xc6\xd6\x9f\x5a\x26\xf9\xfb\xe1\xe3\x24\x92\xdf\x83\x4b\x7f\xfb\x17\x74\x1e\x12\xc9\x16\x76\x21\x4e\x2a\xd3\x0a\xbb\x0b\xf3\x30\x3b\x8d\x04\x2b\x11\x9f\xdd\x2b\x06\xbe\x8a\xa5\xee\xf0\xd6\x1d\x97\x66\x74\x29\x72\x9f\x27\xa1\x83\x00\xbf\xc8\x7c\x66\x98\x35\x36\x84\x6d\x14\x7d\x85\x73\xbf\x44\x48\x5e\xd9\x89\x90\x6c\x54\x3e\xc3\x6c\x80\x79\xb7\x37\xf9\x72\x79\x13\xe8\x59\xc5\x16\x4e\xcf\x17\x3c\x3f\x7b\x88\xe6\x23\xb7\x63\xf7\x30\x22\xd2\x72\xfc\x54\xd2\x73\x88\x86\x97\x60\xa4\x9c\x44\x2b\x3d\x4c\x2b\x46\x4e\xfc\x1b\xce\xb9\xa0\x53\xf2\x51\x3e\xc2\x67\x6c\xf2\x30\xfe\x7e\x55\xf0\x3b\x4c\xfc\x83\x78\x13\xef\x86\xf7\x5a\xf8\x1f\x5e\xaa\xe7\x17\xfe\x1b\x00\x00\xff\xff\xb4\x9f\x14\xbc\x08\x34\x00\x00") func webUiStaticVendorJsJquerySelectionJsBytes() ([]byte, error) { return bindataRead( @@ -738,12 +759,12 @@ func webUiStaticVendorJsJquerySelectionJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.selection.js", size: 13320, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/js/jquery.selection.js", size: 13320, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorRickshawRickshawMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x58\xfd\x6e\xab\x36\x14\x7f\x15\xd4\xab\x49\xab\x54\x23\xa0\x4d\x75\x07\xda\x1f\x7b\x8e\x6d\xaa\x9c\x60\x12\xab\x0e\x46\xc6\x6d\x92\xa2\xbd\xfb\x8e\x3f\x00\x83\x0d\xe4\x56\x51\xab\xc4\x3e\x1c\xff\xce\xef\x7c\xe2\x58\xd0\xc3\x7b\x7b\xc2\x97\xb7\xa3\xc0\xcd\x29\x8a\x4b\x22\x31\x65\x5d\xc3\x69\x2d\x89\x40\xe4\x93\xd4\xb2\xcd\x6b\x5e\x93\xa2\xe1\x2d\x95\x94\xd7\x39\xde\xb7\x9c\x7d\x48\x52\x48\xde\xe4\x49\xf1\x85\x68\x5d\x92\x6b\x9e\x15\x7b\x7c\x78\x3f\x0a\xfe\x51\x97\xb9\x38\xee\xf1\xef\xc9\x93\xfa\xc4\xe9\x63\xb1\xe7\x52\xf2\x33\x08\x5f\x68\x29\x4f\x79\xda\x5c\x0b\x29\x70\x6d\x15\xf2\x06\x1f\xa8\xbc\x45\x71\xb6\x6b\x23\x46\x6b\x82\x45\x81\xce\xfc\x0b\x6d\xc9\xf0\x4d\x89\x0b\xd9\xbf\x53\xb9\x21\xf6\xdf\x02\x0d\x31\xad\xf1\x41\xd2\x4f\xd2\xd9\x87\xf2\x64\x49\x34\x8a\xa9\x24\xe7\x78\x26\x9e\x2e\x8b\x5f\xdf\x18\xde\x13\xd6\x55\xbc\x96\xa8\xc2\x67\xca\x6e\xf9\x5f\x82\x62\xf6\xd4\x02\x54\xd4\x12\x41\x2b\xa0\x4d\x94\xe0\x05\x81\x4b\xfa\xd1\xe6\xcf\xc0\x5a\x83\xcb\x92\xd6\xc7\xfc\x15\xbe\xf7\xa7\xc4\x3b\x2b\xa8\x78\x8d\xc0\x37\xb4\x8c\x7e\x90\x44\x7d\x0a\xad\xbe\xa5\x5f\x24\x4f\x33\xf5\xb8\xe7\x43\xc7\x67\x3f\xaa\xaa\x2a\x2e\x27\x30\x04\xb5\xa0\x9a\x80\xdb\x2f\x00\x7a\xd3\x86\x98\x91\x4a\x76\xea\xdf\x1a\x3f\xbd\xb0\xa0\xc7\x93\xec\xf4\xff\x2d\x3a\x3b\x1f\xae\x13\x6c\x8b\xdc\x80\x67\xc9\x79\x6e\xf9\x2a\xcf\x83\x7b\x97\x42\xf8\xe5\xb1\x38\x70\xc6\x85\xe1\xc8\x63\x7b\x26\x7a\xc6\xe2\x48\x6b\xa4\x19\x49\x01\x8a\xfd\x6d\x6c\x76\x16\x54\xfe\x20\xf5\xfb\x57\x48\xd7\x71\x76\x17\xe3\x5a\xf2\x17\xe8\xf6\xa2\x77\x89\x8d\x9f\x8f\xeb\x8a\x72\x5c\x41\xf1\x08\x78\xaf\xa4\x6d\xc3\xf0\x2d\xdf\x33\x7e\x78\xb7\xb5\x20\x29\x4e\xc4\xa0\x03\x8a\xa1\xe8\xd4\x32\x7f\x78\xe8\x29\xde\x0d\x14\xeb\x0c\x6e\xb0\x80\xfd\x3b\xb8\xb1\x08\x14\xc1\x8a\x5f\xbd\x84\x40\xd9\x84\x79\xf5\xbb\x8f\x22\x85\x00\x19\x17\x4f\x2d\xed\x25\x94\x0a\x64\x11\xdf\x43\xf9\x0c\x81\x59\x5b\x83\xa0\x0f\x58\x43\x60\x30\x6e\x42\x28\xb9\xec\x8c\xd0\x0b\x28\xb7\xdc\xbe\x8c\xe7\x1a\x2e\x9e\x67\x40\x9e\x63\x97\x0d\x93\x53\xbb\x70\xc1\xe0\x57\x04\xe7\x96\xfc\x92\x27\x51\x12\x41\x6e\x4d\xc2\xff\xf5\xd1\x48\xd0\x2f\x95\x8a\xd6\xa3\x08\x96\x4c\x45\x5f\xd8\x9b\x57\x21\x0b\xc4\xd8\x91\x8d\xc8\x5a\x79\x63\x24\xd7\x11\x31\x04\x93\x6e\x4e\xa3\x02\x74\x60\xb4\xc9\x6d\x2d\x50\xca\x57\xa9\xea\x63\x7e\x12\x99\xf3\x27\xc6\x48\x16\x84\x61\x25\xef\xe9\x6c\x3f\x8f\x53\x1d\x05\xff\x24\xa2\x62\xc0\xd2\x89\x96\x25\xa9\x7d\x14\xd7\x37\x09\x2b\x81\x2c\x31\x6d\x75\xd6\x32\x13\x37\x4e\x74\xe9\x01\xf4\x92\x4c\x6b\x4f\xf6\x58\x04\x3a\xf7\xd2\xd1\x51\x2c\xa9\x64\x24\x80\xe0\x3b\xb5\x13\xba\x90\x5f\xc6\x26\x41\xf7\xac\xfd\xa8\xad\x02\xfc\x0e\x2a\x5c\xd7\x5c\x62\x05\x01\x70\x9d\x89\x6a\xca\x9d\x0d\xdc\x74\xf4\xbd\x4e\x25\xaf\xc1\x39\x41\x9c\x26\x6e\xc0\x06\x5c\x15\x38\x27\x8a\xc7\xc5\x00\x11\x16\x85\xea\xb6\xc6\x0d\xaf\xf3\x44\x52\xfc\x98\x0c\x0a\xe6\x8f\x1b\x97\x5e\x6e\x67\xbb\x40\x21\x75\x40\x6a\x22\x36\xe2\x03\x8d\xd8\xa6\x21\x92\x05\xbb\xd3\xf3\xe3\x24\x6f\x36\x8f\xbf\x2b\x3f\x26\x4f\x41\x9d\x3e\x92\x6e\x79\x14\x9c\xa4\xed\x1d\xc6\x6d\x1f\xf6\x4d\x8c\xf6\xb1\x98\x57\x55\x7b\x10\x84\xd4\xdd\x02\x33\x1b\x61\x13\xc5\xb6\x92\x75\xf3\x2a\x66\x47\x86\x24\x49\xc6\x2c\xf9\x63\x18\x53\x4c\xc1\x5d\x2d\xa6\x4e\xf1\x77\xc6\x9c\x79\x84\x8f\x43\x91\x3f\xef\x8d\xe3\x62\xf4\xd3\xfc\x69\x86\x53\xf5\xc5\x04\x70\x9a\x0e\x01\x94\xbe\xaa\x0c\x9a\x38\xe8\xf0\x21\x5a\xb0\xc1\x56\x95\x6f\x90\x92\xef\x49\xc5\x05\xe9\x86\xde\xfe\x4f\xb6\xdb\x67\x0f\x0b\x9e\x37\x68\x9c\x51\x4b\x92\xab\x1c\x19\x42\x2a\xff\x53\x8f\xa4\xfb\x61\x59\x9f\x3f\xdd\xfd\x40\x7e\x52\x75\xbc\x5b\x4d\x63\xf0\x92\xa5\xe9\x9b\x81\x63\x0f\xe9\xdd\xb8\x4b\x7e\xd9\xa0\x31\x06\x97\x92\xe0\x2e\x3b\x17\xd4\x14\x41\x64\x36\xad\x6e\x6f\xf8\x4a\xdb\xa7\x40\x8f\x51\xeb\x6f\xe5\x73\x57\x51\xc6\x16\xaa\xcd\x4d\x37\xa2\x56\x75\x22\xe8\x47\x0a\x54\x48\x91\x96\x01\x4d\x46\xac\x6b\xa5\xe0\xef\x64\x5a\x57\x60\xec\x30\xcb\xce\xcc\x00\x4a\x1a\x82\x60\x62\x84\x04\xd2\x03\x87\x00\xa3\x10\x29\x8f\xa4\xbd\xaf\x4d\xde\xe0\x0b\xd4\x4f\x7d\x6a\x08\x97\xda\x1d\x61\xf5\x24\xa1\xb4\x08\x20\xcc\x66\x00\x55\x9c\xdb\x85\x12\x83\x5a\x21\x80\xed\x34\x0a\xbc\x31\xba\x28\xfe\x2e\xb1\xc4\xe8\x86\x3e\x31\xfb\x20\x7f\x3e\x24\x0f\xff\x76\x01\x25\x41\x2f\x69\x25\x0d\x96\xa7\x35\x4b\xd4\xfe\xe8\xaf\xde\x8e\x75\xdf\x2d\xe9\x1c\xbc\x16\x56\x0a\x72\xb7\x65\xa5\x2a\xef\x57\x95\x2a\x81\xce\x99\x3d\xbc\x17\xdd\xbb\xc7\xa0\xf8\x08\x53\x9a\x9d\x85\xfc\x23\x2d\x20\x23\xa4\x0f\xd5\x96\xe8\xa2\xee\xd4\x77\xb7\x4e\x0d\x55\x2a\x31\x75\x2a\xdb\xed\x9e\xfa\x3f\xe8\x80\x4f\x6a\x0b\x6d\xec\xaf\x6c\x27\xeb\x9b\x5b\x9a\x93\xa5\x4d\xb4\xbd\xbb\xa2\x7b\x91\x5d\x5a\x43\x61\x69\xc9\x26\xc1\xbd\x9c\xc3\xb1\xd3\x43\xe7\xbd\x60\xce\xf1\x50\x8a\x3d\x76\xa7\x3b\xc1\x8d\x64\x69\x79\x59\x4f\xe2\x2f\xa3\xb5\xf5\xa0\x26\x87\x33\x46\x8e\x50\xa7\xfc\xdb\xa0\x79\x5c\xbb\xb7\x10\xce\xb4\xf1\x92\xa8\xcf\xd0\xba\x69\xad\x4a\x29\x32\xc5\xbb\x9f\x01\xd4\xf3\x91\xff\x96\x97\x6d\x0c\xcd\x06\xd9\xac\x45\xa5\x89\x27\x11\xc5\xed\x05\xcb\xc3\xc9\xbe\x7c\xea\x61\xbc\x1f\xe2\x93\xe1\xd4\x85\x4b\x93\xcc\xe7\x22\x8a\xf5\xf8\x7b\x60\x04\x8b\x1c\xe6\xc1\x53\xa1\x6d\xea\x55\xbe\x24\xbf\xf5\x96\xf5\x17\x2b\xbb\xc9\xb0\xe8\x6a\x19\xb0\x05\x09\x9a\x5c\xcf\xf8\x63\x7c\x16\x56\xab\x6f\xef\xcc\xa3\xea\x25\xcd\x7f\xf5\x99\x9e\xe5\x38\x92\xd6\x27\x68\x48\xd2\x7f\x37\x70\xee\x38\xac\xa3\x7b\x51\xfd\xf0\xc5\xbe\xcb\x43\xb9\x71\xa9\xa8\xb9\x38\x43\xa0\xf4\x6e\x9e\xd6\xa2\x59\xe1\xeb\xd1\xab\xa9\x61\x18\x6e\x86\x2a\xfa\xba\x28\xd9\x4d\x38\x8a\xb3\xe9\xfd\x5a\xe2\x5e\x46\x66\xb3\x99\xd1\x15\x7c\x59\xf4\x50\x0c\x6c\xe1\x3d\x23\xe5\x88\xe6\xc5\x17\xfd\x60\x1d\xa3\xad\x34\xd7\x00\x48\xde\x1a\xd3\x9b\x8a\xc1\x0d\x23\x09\x76\x49\xe7\xcc\xd2\x0c\x6b\xb5\x32\xda\x0d\xcf\x45\x76\x0c\x2f\xce\x60\xad\x89\xe4\x9f\xca\xbc\xd5\x1b\xba\x41\x8f\x37\x2d\xe6\x7e\xa9\x4c\x42\x43\x7d\x50\x99\x7d\xad\x59\xd5\x96\x85\x94\xfd\x1f\x00\x00\xff\xff\x87\x26\x23\x42\xd6\x17\x00\x00") +var _webUiStaticVendorRickshawRickshawMinCss = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x58\xfb\x6e\xfb\x26\x14\x7e\x15\xab\x3f\x4d\x5a\xa4\x62\x61\x27\xa9\x3a\x5b\xfb\x63\xcf\xb1\x4d\x11\xb1\x49\x8c\x42\xc0\x02\xda\x24\xb5\xf6\xee\x13\x17\xdb\xd8\xc6\x76\x5a\x45\x8d\x1a\x38\x1c\x3e\xbe\x73\x85\x58\x90\xe2\x22\x2b\x74\x3b\x9c\x05\xaa\xab\x28\x2e\xb1\x42\x84\x36\x35\x27\x4c\x61\x01\xf0\x27\x66\x4a\x66\x8c\x33\x9c\xd7\x5c\x12\x45\x38\xcb\xd0\x51\x72\xfa\xa1\x70\xae\x78\x9d\xc1\xfc\x0b\x10\x56\xe2\x7b\x96\xe6\x47\x54\x5c\xce\x82\x7f\xb0\x32\x13\xe7\x23\xfa\x1d\xbe\xea\x4f\x9c\x6c\xf2\x23\x57\x8a\x5f\x33\x98\xdf\x48\xa9\xaa\x2c\xa9\xef\xb9\x12\x88\x39\x85\xbc\x46\x05\x51\x8f\x28\x4e\xf7\x32\xa2\x84\x61\x24\x72\x70\xe5\x5f\x60\x4d\x86\xaf\x4a\xdc\xf0\xf1\x42\xd4\x8a\xd8\x7f\x33\x34\xc4\x84\xa1\x42\x91\x4f\xdc\xb8\x45\x19\x9c\x13\x8d\x62\xa2\xf0\x35\x1e\x89\x27\xf3\xe2\xf7\x03\x45\x47\x4c\x9b\x13\x67\x0a\x9c\xd0\x95\xd0\x47\xf6\x97\x20\x88\xbe\x4a\xc4\x24\x90\x58\x90\x53\x7e\xe4\xa2\xc4\x02\x08\x54\x92\x0f\x99\x6d\xeb\x7b\x5e\xa3\xb2\x24\xec\x9c\xbd\xd5\xf7\xbc\xdd\x25\xde\x3b\x41\xcd\x6b\x24\x39\x25\x65\xf4\x0b\x43\xfd\xc9\x8d\x7a\x49\xbe\x70\x96\xa4\x7a\xf9\xc4\x86\x9e\xcd\x7e\x9d\x4e\xa7\xfc\x56\x11\x85\x81\xac\x51\x81\x33\xc6\x6f\x02\xd5\xab\x67\x88\x29\x3e\xa9\x46\x7f\x2d\xf1\xd3\x0a\x0b\x72\xae\x54\x63\xbe\xd7\xe8\x6c\xa6\x70\x3d\x67\x9b\xe5\x26\x4e\xf7\xf8\x3a\x3e\xf9\x22\xcf\x9d\x79\xe7\x5c\x78\xb7\xc9\x0b\x4e\xb9\xb0\x1c\x4d\xd8\x1e\x89\x5e\x91\x38\x13\x06\x0c\x23\x09\xbe\xb6\xbf\xed\x99\xbd\x01\x1d\x3f\x40\xff\xfe\x0e\xe9\xc6\xcf\x9e\x62\xdc\x48\x7e\x83\xee\x89\xf7\xce\xb1\xf1\xbe\x59\x56\x94\xa1\x93\xc2\x22\x60\xbd\x92\xc8\x9a\xa2\x47\x76\xa4\xbc\xb8\xb8\x5c\x00\xf3\x0a\x5b\x74\x79\xc1\x99\xc2\x4c\x65\x2f\x2f\x2d\xc5\xfb\x8e\x62\x13\xc1\x35\x12\x98\xa9\x27\xb8\x71\x08\x34\xc1\x9a\x5f\x33\x04\xf6\xf5\x7d\xc0\xbc\xfe\xdd\x7a\x91\x46\x00\xac\x89\x87\x27\x6d\x25\xb4\x0a\xe0\x10\x3f\x43\xf9\x08\x81\x1d\x5b\x82\x60\x36\x58\x42\x60\x31\xae\x42\x28\xb9\x6a\xac\xd0\xae\xbe\xb7\xdc\xee\xfa\x7d\x2d\x17\xdb\x11\x90\x6d\xec\xb3\x61\x63\x6a\x1f\x4e\x18\xfc\x0e\x64\x85\x4a\x7e\xcb\x60\x04\xa3\xb4\xbe\x0f\xdc\xff\x6d\x63\x25\xc8\x97\x0e\x45\x67\x51\x70\xe4\x77\x9b\xd1\x67\xe6\xc6\x59\xc8\x01\xb1\xe7\x48\x7b\x64\x52\x3d\x28\xce\x8c\x47\x74\xce\x64\x8a\x53\xaf\x00\x14\x94\xd4\x99\xcb\x05\x5a\xf9\x22\x55\xad\xcf\x0f\x3c\x73\xbc\xa2\xf7\x64\x81\x29\xd2\xf2\x13\x9d\xf2\xf3\x3c\xd4\x91\xf3\x4f\x2c\x4e\x94\xdf\xb2\x8a\x94\x25\x66\x53\x14\xf7\x83\x22\xc5\x25\x10\x25\xb6\xac\x8e\x4a\x26\xf4\xfd\xc4\xa4\x9e\x92\x2b\x85\x87\xb9\x27\xdd\xe4\x81\xca\x3d\xb7\x75\x14\x2b\xa2\x28\x0e\x20\xf8\x49\xee\x8c\xf7\x81\x34\x36\x70\xba\xad\xb1\xa3\x39\x55\x52\xfb\x66\x41\x8c\x71\x85\x34\x84\x83\x22\x57\xac\x8b\x72\xe3\x1c\x37\xe9\x6d\x6f\x42\x69\x52\xe0\x3c\x27\x4e\xa0\xef\xb0\x01\x53\x05\xf6\x89\xe2\x7e\x30\x40\x84\x43\xa1\xab\xad\x35\xc3\xdb\x38\x90\x34\x3f\x36\x82\x82\xf1\xe3\xfb\xe5\x24\xb6\xd3\x7d\x20\x91\x7a\x20\x0d\x11\x2b\xfe\x01\x7a\x6c\x43\x17\x49\x83\xd5\x69\xbb\x19\xc4\xcd\xea\xf6\x4f\xc5\xc7\x60\x95\x40\xec\x8c\x9b\xf9\x56\x70\x10\xb6\x4f\x1c\x6e\x7d\xb3\x1f\x62\x74\xcb\x62\x7e\x3a\xc9\x42\x60\xcc\x9a\x19\x66\x56\xdc\x26\x8a\x5d\x26\x6b\xc6\x59\xcc\xb5\x0c\x10\xc2\x3e\x4a\xfe\xe8\xda\x14\x9b\x70\x17\x93\xa9\x97\xfc\xbd\x36\x67\xec\xe1\x7d\x53\x34\xed\xf7\xfa\x76\x31\x7a\xb7\x7f\x86\xe1\x44\xff\x63\x1d\x38\x49\x3a\x07\x4a\xde\x74\x04\x0d\x0c\x54\x7c\x08\xc9\x45\xe6\xb2\xca\x0f\x48\xc9\x8e\xf8\xc4\x05\x6e\xba\xda\xfe\x4f\xba\x3f\xa6\x2f\x33\x96\xb7\x68\xbc\x56\x4b\xe1\xbb\xea\x19\x02\x3a\xfe\x93\x09\x49\xcf\xc3\x72\x36\x7f\x7d\x7a\x41\x56\xe9\x3c\xde\x2c\x86\xf1\xfb\xa6\xa5\xe9\x87\x8e\xe3\x36\x69\xcd\xb8\x87\xdf\x3e\x50\xef\x83\x73\x41\xf0\xd4\x39\x67\xd4\xe4\x41\x64\x2e\xac\x1e\x07\x74\x27\xf2\x35\x50\x63\xf4\xf8\xa1\xdc\x36\x27\x42\xe9\x4c\xb6\x79\x98\x42\x24\x75\x25\x2a\x2e\xe6\x36\x16\x52\x64\x64\x0e\xe5\xd6\x8a\x35\x52\x09\x7e\xc1\xc3\xbc\xf2\xb6\xc9\xed\xb0\xd7\x33\xc8\x0a\xd5\x18\x08\xcc\x4a\x2c\x4c\xc3\x21\x88\xac\x01\x2e\xcf\x58\x3e\x57\x26\x1f\x87\xb3\x20\xa5\xdd\x35\x84\x4b\xcf\xf6\xb0\x5a\x92\x40\x92\x07\x10\xa6\x23\x80\xda\xcf\xdd\x40\x89\x64\x85\x84\x40\x8f\x2c\x89\x02\x37\x46\x1f\xc5\xdf\x25\x52\x08\x3c\xc0\x27\xa2\x1f\xf8\xcf\x17\xf8\xf2\x6f\x13\x50\x12\xb4\x92\x51\x52\x23\x55\x2d\x9d\x44\xcf\xf7\xf6\x6a\xcf\xb1\x6c\xbb\x39\x9d\x9d\xd5\xc2\x4a\xcf\x02\x3d\xe6\x95\xea\xb8\x5f\x54\xaa\x05\x1a\xaf\xf7\x98\x5c\x74\x9f\x6e\x83\xe2\x33\xe5\x37\xd7\x0b\x4d\xb7\x74\x80\xac\x90\xd9\xd4\x9c\xc4\x24\x75\x2f\xbf\xfb\x79\xaa\xcb\x52\xd0\xe6\xa9\x74\xbf\x7f\x6d\xff\xe2\x64\xf3\xaa\xa7\xc0\xca\xfc\xc2\x34\x5c\x9e\x5c\xd3\x0c\xe7\x26\xc1\xfa\xec\x82\xee\x59\x76\x09\xfb\xc4\x42\xe2\x55\x82\x5b\x39\x8f\x63\xaf\x86\x8e\x6b\xc1\x98\xe3\x2e\x15\x4f\xd8\x1d\xce\x04\x27\xe0\xdc\xf0\xbc\x1e\x38\x1d\x06\x4b\xe3\x41\x4d\x1e\x67\x14\x9f\x31\x2b\xa7\xaf\x41\x63\xbf\xf6\x5f\x21\xbc\x6e\x63\x07\xf5\xa7\x2b\xdd\x84\xe9\x54\x0a\x6c\xf2\x6e\x7b\x00\xbd\x3e\x9a\xde\xf2\xd2\x95\xa6\xd9\x22\x1b\x95\xa8\x04\x4e\x24\xa2\x58\xde\x90\x2a\x2a\x77\xf9\x34\xcd\x78\xdb\xc4\xc3\x6e\xd7\x99\x47\x93\x74\xca\x45\x14\x9b\xf6\xb7\xa0\x18\x89\xec\xc8\x55\x95\x9b\x33\xb5\x2a\x77\xf0\xb7\xf6\x64\xed\xc3\xca\x7e\xd0\x2c\xfa\x5a\x3a\x6c\x41\x82\x06\xcf\x33\xd3\x36\x3e\x0d\xab\x35\xaf\x77\x76\xa9\xbe\xa4\x4d\xaf\x3e\xc3\xbd\x3c\x43\x12\x56\x61\x41\xd4\xf4\x6e\xe0\xbd\x71\x38\x43\xb7\xa2\x66\xf1\xcd\xdd\xe5\x21\x1c\x50\xc1\xb8\xb8\x22\xda\x99\x79\x98\x8b\x46\x89\xaf\x45\xaf\xbb\x86\xae\xb9\xe9\xb2\xe8\xdb\xac\x64\x33\xe0\x28\x4e\x87\xef\x6b\xd0\x7f\x8c\x4c\x47\x3d\xa3\x2f\xb8\x9b\xb5\x50\x5c\x12\x89\x8e\x14\x97\x3d\x9a\xdd\x54\xf4\x83\x36\x94\x48\x65\x9f\x01\x80\x7a\xd4\xb6\x36\xe5\x9d\x19\x7a\x12\xdc\x90\x89\x99\xb9\x1e\xd6\x69\xa5\xa4\xe9\xd6\x45\xae\x0d\xcf\xaf\x84\xb9\x4a\xfd\xae\x8f\xb7\xf8\x42\xd7\xe9\x99\x74\x8b\xd9\x34\x55\xc2\x50\x53\x1f\x54\xe6\xae\x35\x8b\xda\xd2\x90\xb2\xff\x03\x00\x00\xff\xff\x87\x26\x23\x42\xd6\x17\x00\x00") func webUiStaticVendorRickshawRickshawMinCssBytes() ([]byte, error) { return bindataRead( @@ -758,12 +779,12 @@ func webUiStaticVendorRickshawRickshawMinCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/rickshaw.min.css", size: 6102, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/rickshaw.min.css", size: 6102, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorRickshawRickshawMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\x79\x77\xdb\xb8\x92\x28\xfe\xff\xfb\x14\x0e\xa7\x9f\x87\x8c\x68\x45\x92\x77\x29\xec\x9c\x6c\xdd\x9d\x7b\xb3\xfd\x62\xf7\xdc\xe4\xb8\x75\x7d\x28\x89\xb2\x99\xc8\xa2\x46\x8b\x2d\x5d\x89\xdf\xfd\x87\xaa\xc2\x4e\x50\x92\x9d\xf4\x9b\x7e\xf3\xa6\x73\xda\x22\xb6\x42\x01\x28\x14\x0a\x85\x42\xc1\xef\xcf\x86\xdd\x69\x9a\x0d\xfd\x71\x96\x4d\xc3\x7e\xdc\x9d\x66\xe3\x45\xb0\x4c\xfb\xfe\x74\x31\x4a\xb2\xfe\x4e\x2f\xe9\xa7\xc3\x24\x8a\x22\x4f\x64\xf5\x76\x77\x29\xb2\x1a\xdf\xf4\x82\x25\x7d\xfb\x17\x5e\x6f\xdf\x6b\x87\x12\x5e\x6f\x3f\x58\x8e\x93\xe9\x6c\x3c\xdc\x01\xd0\xd5\x4f\x69\xf7\xdb\xe4\x3a\xbe\x8b\x78\x1d\x90\x21\x0f\xf2\x64\x30\x49\x76\x54\x6d\xc9\x7c\x94\x8d\xa7\x13\xa8\x2e\xeb\x7c\x4d\xba\x53\x2f\x58\xde\x64\xbd\xd9\x20\xa9\x8a\x24\x51\x7e\x9c\xfc\xe7\x2c\x1d\x27\x3e\xd4\x1b\x10\xa0\x65\x79\x4d\x79\xe0\x4f\xaf\xd3\x89\x89\xdf\x6d\x3c\xde\x91\xb9\x97\xc3\xf8\x26\x99\x8c\xe2\x6e\xd2\x94\x99\x64\x54\xc8\xb0\xa1\xfc\xa3\x18\x90\x90\x09\xd5\xc9\x68\x90\x4e\x7d\xaf\xea\x05\x2d\x9e\x9c\x0c\xa7\x91\x80\xda\xea\x67\x63\x1f\xe2\xd3\xa8\x1e\x0e\x92\xe1\xd5\xf4\x3a\x42\x08\x55\x0a\xb4\xd2\xa7\xe2\xa3\x52\xa1\x0a\xba\xb3\x31\x80\xf8\xc8\x72\x51\xd6\x8b\xb4\xdd\x22\xb0\x17\x5a\x5a\x3b\x72\xc4\xad\x56\xcb\x9c\xe7\x75\x25\xe7\x7c\x40\x28\x29\x0f\xbf\x25\x8b\x89\x6a\xac\x6c\x22\x44\x47\x17\x6d\x89\x3b\x0b\xef\xa4\xc3\x1d\x48\x87\xa4\xea\x68\x36\xb9\xf6\xd9\x57\xd0\xe2\xf0\x20\x36\x0f\x93\xf9\x34\x19\xf6\x14\xbc\x5e\x32\x99\xa6\xc3\x18\xbe\xc3\x49\x36\x1b\x77\x93\x60\x29\x40\x8e\xc6\xd9\x28\x19\x4f\x11\xae\x48\xd3\xf2\x5f\x88\xf4\x76\x44\xa9\x2a\x42\xb4\x41\xcb\x9d\x87\xdd\x41\x36\x4c\xac\x96\xf0\x7c\x7f\x3b\xfb\xf0\xbe\xca\x1a\x3c\x49\x7c\xfc\x9c\x4c\xc7\xe9\xf0\x2a\xed\x2f\x30\x17\x23\x8c\x96\x9a\x03\x57\x83\xac\x13\x0f\x5e\x66\xc3\x29\x6b\x0b\xf5\xc5\xe5\x34\x3b\xc3\x12\xd1\x07\xa4\xc7\x2a\x43\x64\x9a\x01\xb5\x56\x45\x4a\xf8\xfe\xf7\xb7\x6f\x2f\xcf\xbf\x7c\x7c\x1d\x79\xef\x67\x83\x81\x17\xfe\xfe\xfe\xd5\xeb\x5f\xde\xbc\x7f\xfd\x8a\xc7\xfe\x3e\xa4\x49\xd2\xf3\xc2\x17\x1f\x3e\xbc\x7d\xfd\xfc\x3d\x4f\x78\x91\x65\x83\x24\x1e\x7a\x0c\xc4\xbb\x17\xaf\x3f\x49\x20\x37\x9d\x64\xec\x85\x67\xe7\x9f\xde\xbc\xff\x95\x47\x52\x5d\x5e\xf8\xe1\xc5\xdf\x5e\xbf\x3c\xe7\x91\x84\x93\x17\xfe\xf2\xfb\xfb\x97\xe7\x6f\x3e\xbc\xbf\x7c\xf9\xf6\xf9\xd9\x59\xe4\x5d\xd0\xe4\xd9\xf9\x85\xb7\xac\xed\xb5\x44\x23\x77\xd2\xc9\x2f\x5a\x3f\xb1\x5c\xb2\xab\x64\x5b\xab\xdd\x78\x30\x10\xa9\x6c\x2e\x9a\xe0\x73\x09\x8a\x46\xfc\xbe\x03\xcd\x66\x3b\x7d\x55\xaf\xe3\xc9\x87\xbb\xe1\x47\x9e\xc5\x17\x79\x83\x60\x3b\x52\x68\x39\x48\x41\xe2\x06\x34\x29\x1b\xc8\xaa\x3c\x67\x43\x26\xc2\x8f\xa2\x48\xeb\xc6\x60\x39\xbd\x1e\x67\x77\x3b\xc3\xe4\x6e\x07\x72\xbd\x1e\x8f\xb3\x71\x0e\xc8\x8f\x93\xc9\x6c\x30\x35\xe6\x82\xde\x1e\x0d\x3a\x7d\x96\x37\x68\xc9\x41\xd1\xdc\x91\xf1\xb9\xa0\x66\x9e\xac\xd0\x27\x74\x83\xe5\xe4\x2e\x9d\x76\xaf\xe1\xab\x1b\x33\x4e\x39\x64\xf4\xd5\xe4\x65\x24\xd9\xb5\x30\xe9\x36\x4b\x7b\x3b\x35\x91\x68\x92\x20\xb6\x06\x88\x36\xe2\x7c\x36\x6b\x71\xc0\x10\x26\xd8\x5e\x87\x13\xa3\x00\xa1\x93\x2a\x56\xe1\x0d\x89\x30\x15\x02\x92\x68\x29\x9d\xe6\x96\x4c\xd7\xe8\x57\xb4\x53\xeb\xf6\x5c\xa3\x48\x39\x41\x6c\x92\x14\xe8\x62\x2c\xac\x0a\x33\x39\x95\xb0\x4d\x93\x41\xda\x4d\xa2\xe7\xe3\x71\xbc\xd0\x66\x26\xc6\x2a\x8a\x8f\xc7\x57\xb3\x1b\xc6\xf0\xde\x03\xd3\xf6\xfb\x43\x9a\xd9\xc8\xc2\xa3\xfe\x50\xce\x63\x3f\xa8\xde\xc4\xd0\x27\x4f\xfe\x79\xf1\xc7\xe4\x0f\xbf\xfd\x58\x40\xb8\xf8\x27\x0b\xfc\xe1\xfb\x17\xff\x0c\xda\x8f\x83\x3f\x82\x27\xc1\x45\xbd\x5d\x1d\x27\xa3\x01\x5b\x01\xfc\x27\x7f\xb0\x7f\xd5\xc7\xcf\x2e\xfe\x18\xff\x31\x6c\xaf\x58\xe8\xb1\xff\xac\x59\x5d\x51\x38\x78\xfc\xec\x8f\xc7\x7f\x3c\x79\x72\x15\x7a\x5e\xa0\x95\x99\x54\x78\x14\x5f\x40\x42\x4f\xb2\x53\xc4\x8c\x2f\x10\x51\x54\xdf\xdd\x7d\x84\x31\x17\xb5\xf6\xb3\x8b\x76\x13\xbf\x55\xe7\xdd\x8d\xe3\x11\x6b\x53\x08\xbf\x8c\xa8\x38\xd7\xba\xbc\x49\xa6\xd7\x59\x8f\x35\x4f\x00\x95\x4c\x8e\x72\xc4\xd1\x6c\xd4\x8b\xa7\x6c\xdd\xee\xa4\x6c\x0a\x8b\x02\x21\x2c\x92\x41\x3b\x14\x5d\x36\x91\x48\x71\xf8\x55\xf6\x77\xb0\xa0\xb5\x34\x66\xf4\x2b\xf1\xe0\xe0\x62\x18\x0a\x28\x3e\xe1\xf5\x40\xf8\x2d\x35\x05\xbf\x79\xbb\xc4\x62\x08\x39\xc5\x5a\x78\x77\x9d\x0e\x12\x9f\x02\x7b\x7b\x01\x66\xbf\xd0\x00\x54\x28\xa9\x8d\x85\x2e\x78\x40\xe0\x87\xf9\x14\x3a\x37\xc9\xf8\xca\xc4\x06\xbf\x23\x24\x0d\xe2\x6f\x94\x58\x93\x2d\x2c\xb6\x40\x81\xc3\x4e\x62\xbd\xdc\x15\x6b\x03\x9b\xf3\xb2\x8f\x38\xfe\x4f\x1b\xbb\xbb\x3a\x29\xcb\x74\x36\x70\x41\x20\x08\x9a\x75\x5c\xcb\x1a\x22\xac\xcc\xc4\x8c\x97\x0c\x1b\x41\xe9\xf8\x89\x16\x5e\x4d\x1c\xa3\x25\xa0\xf3\xe1\xe2\x68\xe3\x88\x41\xe9\xe4\x66\x34\x5d\x88\x65\x20\xd2\x40\xe7\x88\xdb\xcb\x41\x3c\x99\x44\x56\x8d\x6f\xce\x2e\x5f\x7d\x78\x7f\xfe\x9a\xcd\xfa\xcb\x17\xbf\xff\xfa\xeb\x17\x3d\x83\x64\x8f\x8c\x2f\x2e\xc5\x84\x6a\xd6\x73\xec\xa8\x11\x4c\x5c\x11\xe9\x89\x9e\xe8\xc7\x4c\x62\x13\x7c\x61\x3a\x9e\x25\xb9\x1f\xa8\x39\x3b\x99\x75\xba\x80\x05\xe0\x24\x23\xbb\xe3\x04\x46\x48\x0a\x62\x20\xe6\x00\x47\x0c\x39\x43\x4d\x13\xe0\xd5\x34\xfd\x79\xcb\xb5\xae\x61\x98\x68\x6b\x9f\x2a\x82\xc3\x23\x84\x26\x19\x5b\x9d\x5c\xa7\xfd\xa9\x8e\xd2\x37\x8e\x0f\x0c\x61\x35\x1d\xa6\xd3\x34\x1e\xa4\xff\x4a\x8c\x19\x21\x6b\xcb\xf9\xda\x88\x85\x42\xec\xd0\xea\x3b\x1c\x12\x86\x09\x46\x56\x27\x33\x56\x15\x36\x92\xcb\x6a\x32\x9e\x9a\x8e\x8d\x01\xac\x29\x95\xad\x05\x3c\x41\x71\x3a\x5e\x50\x45\x70\x10\x2a\x03\x2c\x6a\xa2\x5c\x6b\x3a\x5e\x2c\x79\x09\x55\x09\x17\xe7\x20\x10\xe4\x5d\x64\x80\x6c\x45\x60\x33\x5b\x4a\xae\x35\x29\xb9\xaa\xde\x71\x89\xaf\x54\x77\xdc\xeb\xf1\x86\xea\x7d\x9c\xb6\x71\x00\x1e\x59\xf8\x69\xfd\x18\x94\x27\x45\x06\xbd\xda\x6d\xac\x32\xea\x66\x2b\xcf\x0c\x84\xfd\x08\xd3\xa4\x5c\x0a\x01\x45\x3e\x1a\x66\x42\x4c\xc1\xa9\x34\xec\x32\x01\x82\x95\xc5\x81\x55\xa3\xb2\xbb\x6b\x45\xa8\x2a\x75\x82\x43\x41\x83\xc3\x83\x26\x16\xe6\x09\xce\x01\x2e\xf1\x88\x59\xf0\xa8\x5c\x9c\x0c\xb4\x5e\xc6\xa1\xd1\xa6\x4e\x4b\x41\xba\x8d\x07\xb3\xe4\x43\xdf\x01\x88\xa7\x14\xe1\xf0\x04\x2f\x78\xc0\xd8\x2e\x75\xe1\x27\x32\x06\x36\x44\xb8\x45\xe9\x0c\x58\x24\xef\x5a\x60\x8c\x72\xe6\x61\xf6\x60\x77\xd7\x5c\x96\x29\x96\xcd\x45\xc6\x2b\x7e\xc2\x3e\xf7\xa8\x52\xce\x26\x31\xbd\x45\x55\xd1\x9a\x27\xe0\xdd\x48\x69\x41\x63\x48\x62\x55\xe0\x08\x5c\xdc\xb4\x4b\xe6\x69\xae\xa4\xb1\x90\xaa\x0a\xa8\x16\xd1\x8f\x11\xf2\x7e\xce\x4e\x79\x9c\x95\x53\xee\x11\xf4\xac\x72\x7b\xc0\xf3\xe6\x48\x4d\x72\x98\x34\xb9\x16\x81\xe4\xda\x02\xc1\xbf\x97\xc4\xef\x9a\xf4\x13\x72\xda\x6d\x2e\x15\x1d\x37\xd5\x67\x9e\x03\xff\x64\x7d\x6e\x6c\x62\xc4\xae\x39\x58\x3a\xa3\xab\xc4\xe9\xf1\x2f\xed\xa0\xcd\x6c\x7a\x32\xdb\x41\x8b\x5d\x6d\xd0\x12\x5f\x55\xb9\x11\xf6\x3d\x19\xf7\x32\xbb\x19\xc5\xbc\xf0\xdb\x74\xc2\xf6\xf0\xad\xd2\x34\x7d\x11\xd1\x94\x0e\x59\x17\xc7\xe7\x91\x21\xf1\x31\x41\xc8\xf7\xba\x12\x2a\x93\xc0\x45\xbe\x2a\x75\xd1\xeb\x41\x02\x21\xdf\x8b\xbd\x80\xc9\xdc\x8a\x44\x6e\xd3\xe4\x2e\x58\x7a\x33\x26\x26\x83\x8c\xca\xb6\x4c\xb8\xce\x49\x58\x20\xb1\x47\x1a\xe8\x10\x87\x89\x62\xe5\x88\x79\x61\xc2\xe0\xbf\x9c\x8e\x3f\x42\x4c\x84\x40\xab\xbf\x9d\xbf\x7b\xcb\xab\x5d\xad\x30\x86\x87\x82\x0b\x09\xa3\x0d\xda\x03\x56\x8e\x4f\xd5\x90\xa1\x70\x3e\x4e\x6f\x22\xa2\x0f\x2d\x5f\x95\x45\xdc\xac\x56\x45\x32\x46\xd2\x91\xb2\xe3\x3f\x99\xf0\xb8\x62\xff\xff\x44\x12\x64\xce\xc8\x79\xfc\x86\xf5\xd2\x9c\x11\x2b\x8a\xc2\x3a\xc8\x94\x12\x34\xa8\xe9\x34\xb9\xa1\xa9\xc5\xa7\x3f\x31\x3e\x3e\xd9\x81\x35\xd0\xd4\xa7\x79\x0f\xab\x26\x6c\x76\x20\x0f\x71\x44\x36\xe5\xd9\x82\x4e\x50\x38\x7e\xa9\xd8\xc8\xec\xd5\xf3\xf0\xd5\x87\x77\xaf\xe7\x6a\x5c\x91\x5f\x32\x22\x99\xc4\x57\x09\x5f\x3c\x81\x68\x70\x27\xd2\xc2\x60\x37\xeb\x25\x11\x96\xea\x26\x23\x94\xb7\x21\xad\x4d\x89\xbc\x64\xc4\x7f\xd9\x5e\xff\x3a\xe9\x7e\x3b\xcf\xbe\x25\xc3\xe7\xc3\xde\xaf\xc9\x14\x5b\xae\xaa\x93\x83\x18\x4e\x21\x0f\x51\x15\x7c\x81\x10\xe2\xe9\x7b\x3d\xac\xd1\xf7\xce\xbe\xbc\x3f\x7f\xfe\xf9\xf2\xf5\xa7\x4f\x4c\x06\x7f\xce\xda\x32\x64\xf3\x91\x6d\xa5\x32\xd6\x3f\x83\x41\x72\x15\x0f\x76\x68\x5f\xb3\x73\x17\x4f\x76\x26\xa3\xa4\x9b\xf6\x53\x46\x8d\x41\xce\x20\x33\x39\xfe\x49\x75\xca\x58\x0c\xd5\x11\x38\xe0\xbf\x79\xff\x1f\xcf\xdf\xbe\x79\x75\xf9\xf2\xb7\xe7\x9f\x9e\xbf\x3c\x67\x1b\x26\xaa\x8a\x46\x7f\x07\x44\xb3\x38\x1d\x4e\x18\xab\x92\x55\x77\xaf\xe3\x71\xdc\x9d\x02\x0b\xcc\x95\x78\xcb\x87\x98\x44\x44\xbb\x99\x79\xe8\x98\x52\x40\xaf\x34\xd2\x40\x58\x37\x49\xef\x25\x97\x2b\x38\x05\x12\x28\xc8\x55\x45\x78\xc0\x89\x83\x50\x08\x1f\x66\x99\x67\x66\x90\x6f\x5b\x70\x1f\x13\x34\x2f\xda\xa1\xa0\x25\x21\x55\x94\x90\x13\x31\x41\x58\x8e\x78\x46\x90\x0c\x88\x35\x5e\x92\x00\xfe\x52\x60\xa2\xb3\x06\x13\x47\x22\x58\xb5\x6f\xcb\xf3\x50\x9f\xca\x6c\x72\xca\xce\xd0\xa6\x02\x93\xa6\x54\x36\x46\x38\xac\x7f\xa3\xe2\x54\x83\x91\x93\xa5\x71\xb5\x08\xf2\x16\x0e\xa5\x0e\x0a\x75\x04\x5a\x44\xcb\xac\xbf\x0a\xb3\x43\x01\x4f\x8d\x89\xcc\x5a\xbc\x5a\x81\xd8\x9a\xdb\xa5\x04\x2d\x68\x93\x87\x68\x18\x7f\x2a\x8c\x7e\x85\x64\xe3\x9c\x04\xb4\xb6\x51\x11\xc6\x39\xd9\x5c\xb4\x2b\x60\xcb\xc5\x1a\xd8\x8c\x9e\x37\xc2\x8d\x00\xae\x3e\x8c\x14\xdd\x72\x8e\x20\x8c\x8c\x8d\xc2\x38\xb9\xc9\x6e\x93\x35\x58\x20\x63\xc2\x39\xbd\x11\x19\x14\xe9\x21\xf2\x91\x86\x15\x10\x26\xe3\x92\x18\x1f\xd6\xef\x81\xd9\x34\xbb\xba\x1a\xac\xc3\xec\xbe\xfd\xc3\x7a\x9b\x03\xa1\xb5\x95\x73\x71\x68\xbf\x88\x77\x20\xc1\x45\x89\x92\x45\xe0\x6b\x96\x0e\x7d\x6f\x87\x31\x86\x16\xa9\x9d\xd8\xba\x52\xa5\x05\x52\xa8\x9d\xb8\x1a\x59\x5f\xdb\x5e\x25\x93\x6e\xb4\xbc\x4a\xa6\x4d\x6b\x02\x84\xc9\x90\x2d\xa0\xe3\xb8\x33\x48\x9a\xb0\x07\x83\x0d\x6e\x3f\xbd\x9a\xa9\x98\x1c\x77\x0d\xce\x8a\x7c\x7d\x3d\x34\x66\xe0\x28\x2c\x54\x2f\xf7\x16\x73\x64\xc9\xc9\xbc\x4a\xda\x24\xe8\xb0\x46\xfd\xe0\xe8\xa4\xb1\xdf\x38\x6c\x04\xcb\x42\xc1\xaa\x42\x31\xc2\x3d\x63\xeb\x47\x20\x93\xcb\x93\x07\x82\xa6\x2f\x99\x97\x97\x04\x9a\xba\xe8\xf2\x92\xd8\x8f\x80\x5d\x48\xf6\x4b\x2a\xa3\x74\x3c\x7a\xb8\x63\xd4\x98\xdd\xc1\x70\x2b\x19\xe7\xd3\x9b\x97\x7f\x3f\xfb\xed\xf9\x3f\x2e\xdf\x7f\xb8\x7c\xf9\xe1\xdd\xc7\xe7\xe7\x05\x69\xa7\x98\x65\xb5\x2a\x2d\x6d\x6a\xc7\x82\x25\x30\xb2\x52\xb1\x2b\x5f\x2b\xc0\xfd\xca\xe4\xeb\x6b\x5d\x6a\xc3\x08\x45\x92\x4a\xbd\x33\x49\x06\x7d\xe4\xc6\x2d\x6b\x57\x6c\x67\x86\xbd\x1f\xea\x7a\x12\x2e\x1e\xe1\x3a\x69\x55\xc9\x98\x6f\xd2\x63\x2b\xe1\xce\x38\xe9\x27\x6c\x9b\xda\x4d\x76\xa6\x19\x2c\x8c\xbc\x10\x4e\x41\x1d\x4a\x75\xc8\x44\x07\x50\x95\xb2\xae\xab\xbb\x41\xf2\x9c\xb8\x78\xf3\xce\xd9\xe9\xcc\xa6\x3b\xc3\x6c\x0a\x90\x41\x7e\x53\xe0\xb1\x11\x3c\x14\xe9\x15\x51\xca\x24\x19\xc3\x8e\x0f\x13\xe8\x9b\xe2\x69\x78\xa3\x65\x4e\x41\xce\x6b\xd8\xda\xda\x89\x19\x2e\xb0\x8b\xe7\x72\x0e\xcd\x2d\x47\x12\xc3\x2c\x46\x55\xf3\x32\x65\x92\xf7\x78\x94\x0d\x50\x9d\xdd\xf4\xba\xf1\xb8\x97\x0e\xe3\x81\x17\x66\xfd\xfe\x84\x4d\x60\xef\x5f\xc9\x38\xf3\xc2\x9b\x74\xd8\x94\xa3\x1d\xde\xc4\x73\x2d\x34\x1a\x27\x0c\xbb\xdb\xa4\x89\xd3\x25\x9c\x9f\xb1\x65\x3e\xd1\xd2\x17\x76\xc4\x64\xca\x90\x11\xb3\x1d\xd9\xe5\x20\x8b\x7b\x9f\x12\x96\x61\x9c\x8c\x27\x7e\x60\xe1\x4f\x63\x4a\x91\x28\xb1\xb0\xe6\x9e\x61\x7f\xf8\x5a\xdf\x04\x7a\xa7\x55\x99\x3c\x93\xde\x26\x0e\xb6\x06\x24\x24\x32\xf5\xd3\x01\x6b\xbd\x92\xdb\x27\x22\xd7\x23\xd6\x45\xe9\x04\x78\x40\x2f\x0f\x72\x01\x78\x7a\xc6\x28\xcd\x5f\xde\xa5\xbd\xe9\x75\x13\x6b\xc6\xcf\xf0\x3a\x49\xaf\xae\xa7\x14\x43\xdf\x79\x60\x8c\x6d\x55\x4e\x52\x64\xd2\xde\x98\xd3\xcc\xe5\x15\xa7\x7c\x6a\x5a\x3a\x89\x7a\xfb\xac\x9e\x01\x93\xda\x7d\xbd\x7c\x00\x9b\x49\x50\xef\x78\x93\xdb\xab\x26\xfb\xdf\x63\x31\xd3\xe9\xd8\xf7\x10\x01\x2f\xe4\x64\xc1\xbe\x45\x02\xe1\xc1\x53\x28\xc0\xab\x61\x0d\xeb\xb2\x25\x61\xfc\x29\x1e\x5e\xc1\xc2\xe4\x1a\x02\x97\xae\x0d\x66\x2e\x48\xe6\x26\xc1\x57\x45\x19\x9a\x73\x90\x69\xb5\x7a\x54\x92\xc7\x3e\xb0\x80\xdc\x41\x00\x62\x48\x3a\xc4\xdd\xf6\x78\x67\x1c\x95\x94\xbd\x80\xcc\xb8\xcb\x7f\x34\x66\x35\x8c\xd5\xd6\xd6\x0c\xb1\x15\x0f\x0a\x28\xa8\x38\xe0\xe3\xe4\x8a\xf5\x3e\x6b\x34\x87\xe6\x03\xbb\x1a\xfb\x4b\x1c\x80\x26\x64\xc9\xf1\x70\xce\x41\x63\xaa\x2f\x38\x9d\x61\x43\xe9\x0c\x20\x9d\xe0\xaf\x48\x81\x1d\x23\x7d\xb2\x8e\x62\x54\xce\x38\x0a\xf0\x4e\xd1\x20\x82\x17\x08\x56\x06\x81\xb3\xf4\x6a\x18\x33\x8a\x4b\xca\x15\x34\x5c\x91\xa0\x88\x1c\xb8\x8e\xa8\x65\x22\x18\x0b\xaa\x91\x9b\x3b\x5e\xc5\x82\x8b\xfa\xd7\x11\x5b\xc5\xa7\x93\x97\xd9\x8c\x71\x16\x41\xfa\xd9\xf8\x75\xcc\xd6\x47\x9d\xf6\xa1\x5d\xbe\x81\x3a\x21\x25\xb6\x19\xa2\x56\xc1\xe3\x54\xed\x74\x60\x82\xd5\xc3\x36\x05\xa6\x4f\x3c\x8d\xad\x62\x6c\xf0\x59\xfe\x1d\x48\x81\x9c\xd6\xf1\xe8\x04\x37\x38\x76\xbf\x12\x1c\x0b\x10\xc4\xb9\x9a\x6e\x43\xa4\xc2\x00\x96\x3e\xf9\x26\xe1\xe7\x1a\x8d\xc0\x3c\xa2\xe8\x8b\x5a\xbb\x3a\x47\xe2\x5b\x68\x31\x0b\x6d\xed\x64\x02\x9f\x38\x8c\x92\x2b\xe2\x42\xc5\xed\xee\xb2\x00\x6a\x86\x05\xa2\x73\x86\x57\x6f\x67\xb1\xa3\x14\x57\x3b\xac\x08\x0d\xc3\xce\xe4\x3a\x9b\x0d\xd8\xaa\x00\xc7\x6b\x50\x9e\x7a\x3c\x89\x7b\x90\xc7\xab\x88\x3a\x2b\x1e\x02\x91\x11\x8b\xbc\xd8\x92\x68\x9f\xb4\x7d\x84\x75\x83\xb5\xe3\x29\xff\xae\xb3\xef\xd5\x4a\x0b\x3c\xd5\x1a\x2b\x13\x0c\x68\x7b\x76\x36\x57\xb7\xd3\x92\xc9\x96\x49\x86\xfe\x24\x1b\x4f\xd9\xf2\x96\x0d\x77\xe6\x3b\xa8\x54\x9a\xec\x30\xb2\xe2\x94\x8d\xfc\x02\x29\x02\xd7\x7c\x26\x01\x85\x7c\x77\x43\x5c\x88\x01\x7b\x95\xdd\xb0\xed\x87\xad\xf8\x87\x94\x48\x67\xe5\x37\xba\xf6\x6d\xa2\x18\x39\xc2\xc8\xc9\x0e\x82\xad\x4f\xc0\x3b\xd9\x8f\x8f\x2d\x32\xca\xf4\x64\x99\x1e\xb6\x8b\x4d\x75\x2a\x14\xcf\xb1\x50\x3c\xdf\x50\xa8\xa7\xf7\x10\x94\xa6\x94\x0b\x56\x1d\xac\x85\xed\xdc\xc1\x59\x0b\xcd\xa2\xc6\x72\xa1\x9c\xf3\x43\x8a\x14\x0b\xde\x3c\x22\xae\x4f\x2b\xe8\x6a\x05\x8b\x01\x7c\x55\x07\x6c\xd9\x8c\xc7\x7e\x10\xb0\x35\x71\xb4\xf0\x03\x51\x8e\x7e\xd8\x40\x55\xc7\xc8\xcc\x2f\x6a\xda\x4a\xd0\xe6\x50\x17\x1c\xea\xe2\x9e\x50\x17\x12\xaa\xb6\x86\x84\x35\x01\x76\xce\xba\xeb\x8a\xc9\x5f\xb3\x5e\x12\x15\x40\x0a\x50\x17\x02\x43\xd6\xef\x7b\xda\x77\x28\xbf\xeb\x46\x7c\x7b\x7d\x4b\xee\x53\xe5\x42\xab\x72\xa1\x55\xb9\xd0\xaa\x5c\xb8\xaa\xa4\x86\xb6\x05\xa1\xd2\x58\xd9\xa3\x89\x22\x4c\xd2\x7b\xa5\x68\x15\x22\x20\xe8\xbb\x97\xd9\x96\x39\xf0\xf4\x21\xa2\x2d\x09\xae\xc8\x9c\xbb\x3c\x09\x8e\xce\xe9\xcb\x0f\xa4\x60\x42\xa5\x75\xca\x6a\x99\x28\x6d\x9c\x61\x24\x2c\xe1\x81\xb4\x7b\x06\xf0\xa9\x56\x9e\x6e\x4b\x52\x3d\x73\x1b\x79\x89\x67\x64\x2c\x56\x30\x01\xfa\x21\x13\x26\x2e\x3e\x46\x5c\x61\x4d\x21\x5c\xe8\x45\x40\x6c\xb5\xcb\x96\x2e\xb5\x2e\xf3\x2c\x48\x1a\xc1\x52\x81\x06\x59\x93\x75\x18\xb6\x5c\xc4\x3e\x93\x0b\x33\xda\xf3\x20\x0f\x08\x9a\xf0\xd7\x21\x49\xb2\xce\x29\xa9\x37\xc4\xad\xbf\xa3\x76\xb5\xca\xe3\x20\x20\x5b\xc5\xbc\x28\xc5\xa8\x94\x60\xa9\xbe\x8b\x95\x80\xc9\x1b\x9b\xc3\x3a\x68\x9f\x45\xc0\xf0\xe7\x42\xcc\x94\x23\x5d\xbd\xce\xb2\x6f\x9c\xa9\x17\x20\xb1\x25\x1b\x6c\xed\xb0\x0f\xf0\xbb\xda\x97\xb2\xc5\xa0\x1f\x5e\x40\x02\x23\x7b\x1a\x15\x8d\xc0\x71\x28\x4c\xf2\x9d\x0d\x31\x9d\x8f\xcb\xa5\x14\x98\x20\x12\xa4\x66\x9f\x80\x0c\xe2\x45\x36\x9b\xc2\x5c\xa5\x2f\x42\x94\x25\xf2\x20\xed\x31\xb0\x7a\xfe\x1d\xb4\xf4\x99\x45\xd9\x68\x60\x72\x3d\x41\xfb\x66\x0c\x8d\xe3\x58\x82\xa2\x96\xb7\x6c\x08\xb7\x1d\x85\x5a\x84\x7f\xa2\x48\xee\x65\x9e\xd5\x9a\x10\x95\xc3\x70\x38\x87\x22\xee\xb3\x79\x51\x3a\x16\x7a\x9b\x36\x0e\x49\x1a\xd5\x5a\xf7\x9c\x07\x62\x13\xc3\x0f\xc1\x85\xf0\x87\xd5\xea\x9d\x78\x91\x56\x2a\x6d\x83\x9a\x8a\x1d\x2d\x74\x81\x5a\x94\xd8\x3b\x14\xc6\xbf\xc0\x2e\x49\x92\xd6\xb0\x6f\xdd\x43\x2e\xd5\xb2\x45\xda\xb7\x90\x62\xe4\x01\x62\xdf\xd7\x52\x77\x77\x8d\xd4\x47\x7a\x49\x29\xd8\x50\x53\x84\xc4\xd2\x8d\x87\x20\x52\x5e\xc7\xb7\xc9\x4e\x2f\xed\xf7\x13\xd4\x98\x0b\x21\x4d\x0a\x70\x20\xd4\x68\xc0\x98\x9c\x76\x3b\x41\x39\x47\xab\xae\xe2\xb5\x18\xd4\xc4\x96\xfd\x81\x4f\x0e\xfc\xc0\xb3\x84\x21\x8b\x68\x22\x9c\xa3\xa0\xe5\x46\xea\x61\x1f\xa2\xa3\xc9\xfe\x48\xa7\x4a\x41\xf7\xa4\x13\xa8\xce\xdf\xa5\x43\x26\xa2\x1a\x31\xf1\x9c\x1f\xbf\x4c\xde\x0c\x49\x34\x01\x76\xd8\x72\x94\xdc\xdd\xed\x31\x09\xd0\x8e\x0d\x54\x41\x52\x88\x15\x4a\xc6\x73\x2c\xf9\x73\xa1\x5e\xbb\xa4\x38\xbf\x11\xd1\x86\x3d\x06\xb5\x31\x1b\xfe\x4e\xeb\x99\x63\xf1\x73\x2e\x96\xa4\xdd\x17\x79\x24\x94\x97\x42\x7b\x50\x0a\xa8\xa8\x1f\x71\xc3\xb2\xf7\x8e\x0a\xe0\x58\xee\x7d\x69\x78\xc6\x72\xff\x6c\x85\xd1\x50\xd6\x8a\xbb\x90\xac\x0a\x77\xb6\x91\x08\xe6\x96\xf6\xc3\x56\x6d\x69\xa9\x91\xf6\x8d\x55\x08\x7d\x15\x8a\x4d\xab\x95\xa6\x91\x90\x4b\x28\x29\x31\xc8\xde\x48\x52\x27\x1a\x15\x18\x9a\x21\xc7\x72\x67\xf6\xdb\xc5\xb7\x76\xf4\x0d\xf4\x01\x00\xea\x19\x9a\x48\x7d\x6b\x37\xbf\x89\xb3\xbb\x67\x78\xf4\xc0\x62\x0c\xa8\x2c\x42\x2c\xfd\x8e\xba\x09\x70\x79\xcd\x50\xa5\x89\x81\x00\xc6\xda\x4d\x93\xd9\xe3\x08\x05\xd8\x74\xbe\x06\x44\xa4\x0a\xc4\x6f\x52\x32\x88\x91\xc4\x78\x11\xe2\xf3\x46\x04\xb9\x3d\x86\x31\x4a\xab\x15\xaf\x46\xaa\x84\xa4\x42\x41\xe4\x0b\x35\x65\x95\x83\xc2\xb6\x11\xed\x68\x70\x34\xbd\x93\x83\xf2\x42\xa9\xe7\xe4\xdb\xc3\xb1\x6e\x32\x1f\x2c\x0d\xdc\x23\x87\xb6\xc3\x4d\xdb\xe6\x22\xca\x0f\x12\xe4\xfa\xaf\x13\x6f\x5b\x30\xd1\x2e\xec\x66\x87\xff\x3e\xdd\x61\x0b\x62\x4f\x76\x2d\x63\x88\xe3\xdc\x44\xa2\x08\x22\x57\xe8\xa3\x4d\x9a\x66\x85\x6f\xf6\xbd\xa5\x0a\xcc\x4d\x95\x9c\x3d\x43\x10\x16\xfc\x11\x73\x82\xd7\x41\x9c\xe9\x91\xb6\x7c\x0b\x61\x7e\xc1\x96\x2c\xce\xb7\xae\x92\x29\x68\xaf\x67\x6c\x67\x7b\x06\xf1\x86\x22\x2e\xc4\x4d\x3e\xd2\x10\x8f\xf9\x07\xcc\xb4\x08\x0d\xbe\xdf\x0c\x99\x28\x03\x45\x00\x86\xd0\x71\xfd\x07\xec\x8b\x85\x9e\x2e\x08\xeb\x35\xa3\xf4\x6f\x38\x37\x37\x17\xe7\xda\x3c\x2c\x9f\xab\x8d\x51\xa4\x4f\x76\x1d\xa1\xd5\xea\xa0\xc6\x85\x05\x2a\x1a\x69\xac\x40\x66\xfd\x8d\x07\x1b\x87\x35\xa9\x81\xe4\x54\x7f\x0b\xe7\x49\xf7\xd7\x30\xe6\xb6\x5e\x9e\x8f\xd7\x7a\x03\x8e\x5f\xd2\x39\xa8\xaa\x26\xd5\x97\xd9\x20\x1b\xeb\x07\x01\x66\x8a\x2e\x55\xd0\xf8\x77\xaf\x13\xb0\xaa\x15\xcc\x95\x87\xab\x70\x6a\xce\x96\x94\x9b\xfa\x41\x74\xe1\xfd\x5b\xd2\xed\x1c\x9f\x1e\x79\xa1\xf7\x6f\xbd\xee\x49\xff\xb8\x06\x5f\x9d\x46\x7c\x40\x5f\xa7\x8d\x93\xe3\xc3\x18\xbe\x8e\xeb\x47\xdd\x83\x53\xcc\xd7\x48\x7a\x27\x0d\xcc\xd7\x49\x0e\x8e\x4e\xe0\x2b\xae\xf7\x6a\x87\x3d\xf8\x4a\x8e\xbb\x9d\x84\xe0\x9d\xc4\x71\x0f\xbf\xe2\x93\x93\x93\x2e\x96\x38\xed\x75\x1b\xbd\x7d\xf8\x3a\x3a\x38\x4d\x3a\x08\x6f\xff\xe4\x38\x8e\xf7\x3d\xb0\xe1\x65\x3b\xc2\x89\xdc\x0e\xda\xf8\x36\x6a\xb5\x1a\x60\x7c\x78\xbc\x5f\x3b\xea\x43\xc9\xc3\xfa\x41\xf7\xf8\x88\xa0\x1d\x1d\x9e\x20\xdc\xe3\xfd\x93\xfd\xd3\x03\x8c\xeb\x9c\x76\x8f\x11\xa7\x93\x83\xce\xd1\xd1\x21\x62\x72\xdc\x8d\x0f\xa9\x8d\xfd\xe4\xf8\x00\xcb\x26\x8d\xfe\x61\x03\x5b\xd1\xef\xf7\x8f\x1b\x14\xd7\xed\xf5\x6a\x98\xaf\x77\xd0\xa9\xd7\x11\x4a\x2f\x39\x39\xe1\x71\xc9\x01\xff\xea\x9e\xd6\x0f\xeb\x08\xf9\x34\x66\xe8\x61\xdc\x71\xa7\x76\xd0\xc0\x96\x1d\x9e\xd4\x18\x32\xd8\xc6\x7a\xed\xa4\xd1\xf1\xda\xa5\x2d\xab\x43\xcb\x1a\xfd\xc6\xc1\x3e\xb6\x6c\xbf\xdb\xe8\x1e\x22\xdc\x83\x78\xff\x98\xfa\xf8\xf0\xe8\xb0\x41\xa3\x72\xd4\x39\xea\x1c\x77\xb1\xae\xc6\xe9\xe1\x31\x96\x38\x39\x62\x9d\x9d\xd0\x58\x74\xba\x87\xf8\xd5\x39\xe9\x9d\x1e\x62\x5f\xf4\xf6\x93\xda\x01\xc6\x75\xbb\x71\xaf\x11\xd3\xd7\xc9\x41\x1d\x47\xa5\x5b\x3f\x6c\x50\x1b\xe3\xde\xfe\x49\xa3\x8e\xf0\xe2\x7a\xad\x4e\xb5\x9d\xd4\x8f\xeb\xc7\x88\xc1\x7e\x3d\xa9\x23\x94\xfd\x5e\xfd\xa4\x8e\x58\xed\x37\x6a\xac\x42\xbb\x65\xa8\xd2\x4f\xbb\xa7\xd0\xaa\x83\xc6\x7e\xef\xa0\x4f\x6d\x39\x3a\x39\xaa\xd1\x88\x9c\xf4\xa9\x67\xe2\x46\xe7\x78\x1f\xdb\xd2\xeb\x75\x3b\x87\x38\x86\xdd\xc3\x78\xbf\x81\x25\x8e\x7b\x6c\x58\x71\x44\x4e\x8f\xf6\x3b\x0d\xea\xdf\x6e\xe3\x88\x46\xe9\xe0\xb4\xde\xdb\x47\xcc\x58\xcf\x1d\x1e\xc4\xe5\x34\x74\x3d\x9d\x8e\x98\xfc\x3d\x9d\xb1\xe9\x70\x58\xdb\x6f\xb2\x11\x66\x74\x00\xa3\xc4\xfe\x36\x81\xa6\xf7\xfb\xf5\x03\x08\xd5\x9a\x40\x1b\xfb\x47\x75\x86\xc9\x41\x1d\x42\x6c\x75\xee\x26\xac\xc7\x0e\x6a\xa7\x10\x6a\xb0\x4a\xbb\x10\x02\x28\xfd\x83\xc3\xe3\xe4\x04\x42\x27\x90\x56\x67\xdd\xd8\x80\x50\x1d\xa0\x9c\x36\x7a\x71\x02\xa1\x43\xcc\x79\xdc\x4d\x3a\x10\x3a\x68\xc2\x8c\x68\xc4\xa7\x7d\x08\x61\x7d\x8d\xa3\xfd\x2e\x6b\xd1\x3e\x96\x3b\xea\xc7\xb5\xc6\x01\x84\x00\xb3\x93\xe3\xee\x3e\xa3\x1c\x16\x3a\x86\x72\xb5\xde\xc9\x41\x17\x42\x00\xa5\x71\xd2\x39\x3c\x64\xa1\x06\x42\xa9\xc7\x07\xfd\xe3\x03\x08\x1d\x41\xda\x31\x23\xbd\x3e\x84\x00\xe6\x61\x23\xee\x75\x4f\x21\x04\x30\x8f\xbb\xa7\xc7\x94\x06\x6d\x88\x0f\x3b\x27\x9d\x1e\x84\x00\x66\xb7\xce\x48\xbf\xee\x59\x3c\xa3\x0b\x1c\xe6\xee\x3a\x49\x06\x30\xa2\x9d\xc3\xce\x51\x8c\xa3\x77\x72\x78\x72\x7c\x8c\x34\x74\x7c\x72\xd8\x3f\xd8\xa7\x91\x3a\x64\x9d\x82\xe3\x73\xc4\x88\x9e\xe6\xe2\x61\xe7\x34\x26\x8a\xdd\xef\xd6\xf6\x89\xfe\x3a\x87\xf5\xfd\x35\x63\xd6\xcd\x32\xac\xed\x30\x39\xed\x71\x6a\x90\x65\x15\xe4\xe3\x4e\x77\xbf\x43\x3c\xe8\xf4\xe4\x84\xd3\x78\x9d\xf5\x28\x71\x9e\x83\xe3\x83\x53\xa2\xa9\xda\x69\xbf\x73\x68\xd3\xe9\xcd\x6c\x98\x0e\xa1\x92\x5a\xad\xdb\xa5\xe9\x5b\xab\x1d\x1d\x75\xf6\x89\x1d\x9c\xf0\x29\xdd\xef\x8b\xd4\xfd\xfd\x5a\xed\x14\x9b\x7e\x7a\x2a\xbe\xba\xdd\x7e\x5f\xe4\x13\x4c\x80\xcd\x7c\xf6\x8f\xe0\x9d\xf4\x05\xe4\x83\x13\x62\x48\x9d\xfd\xc3\x98\xe2\x3a\xfb\x22\xf5\xa8\xc3\x6a\xee\x60\xd9\x7e\x67\x5f\xa4\x0a\x78\x9d\x04\xfe\x11\x64\xc0\x8b\xbe\xba\xa7\xfd\x3e\xc7\x8f\xd7\xc6\xf6\x65\x47\xf4\x15\xc7\x90\x13\x99\x59\x02\xad\x13\x2d\xa2\xd4\x23\xf6\x9f\xc0\xb9\xd3\xa7\x7c\xb5\x1a\xb4\x93\x5a\x74\x74\x24\x5a\x09\xed\xf4\xda\xdb\x2e\x52\x6c\xe3\xd2\xcb\x6e\x60\xb7\xe6\x5c\xa9\x54\xb2\x66\xda\x91\xde\xc0\xf2\x9e\x8c\xd9\x46\x99\x1b\x01\xf7\x68\x4f\xad\xa7\x44\x7a\x60\xb5\xaa\x73\x15\xca\x64\x4a\x20\x51\x14\x88\xd8\x44\xc0\x78\xc8\xfb\x22\x9e\x24\xd1\xbb\x78\x7a\x5d\xed\x0f\xb2\x6c\xec\xe3\xa1\x16\x03\x9b\x04\x20\x42\x9c\xa7\x60\x77\xf2\xa4\x9e\xec\x73\xaa\xe3\x75\x6a\xdb\x47\x54\x7b\xa0\x40\xac\xd5\x80\x00\x29\xc2\x0f\x1e\xd7\x6b\xb5\x4a\xfd\xb0\x62\xa1\xa1\x59\xcd\x88\xd3\x02\xbe\x09\x47\x5b\x10\xd8\x16\x33\x81\xaf\xde\x72\x2b\xa2\x84\x9e\x42\xaf\x79\x9c\xc2\x91\x93\x55\x79\x83\xda\x7a\x1b\x69\xf8\x3d\x69\x1c\x56\x78\x05\x95\xca\x4e\xc5\xc7\x12\xdd\x6c\x42\x16\x38\x8f\x79\xd2\xe3\x7a\xfd\xc9\xe9\x51\x2d\xa8\x34\x58\x13\x0e\xed\x5c\x4f\x8e\x31\xe1\xb8\x10\x5f\xa7\x84\xba\xd0\x46\xe0\x7e\x70\x39\x6f\x12\x6c\x7d\x7c\x2a\x62\x00\xc2\x45\xf3\xb6\x62\xb6\x02\xb4\x41\x2d\x7b\xe0\xb4\x26\x3c\xae\x9e\x1c\xca\xbd\x25\x98\xe7\xb8\x86\x65\x7d\xd7\x09\x45\x0e\x5d\x1a\x00\x69\x9e\xa3\x53\x31\xa8\x28\xdf\x96\xa8\x81\x58\x9c\xe4\x0c\x09\x45\x6d\x8e\x61\x85\x71\x93\x0d\xa7\xd7\x13\xc6\x62\xfe\x06\x57\x0b\xbd\x5f\x60\x0d\xf0\xde\xc5\x63\xb0\x6f\x1c\x8d\xf1\x7b\xc1\xfe\xfe\x6d\x36\xc4\xbf\x03\x88\x9f\x5d\x81\x49\x62\x32\x62\x7f\x3f\xc0\x8d\x42\xef\x7d\x76\xcb\xfe\xbe\x4a\xba\x82\x7f\x31\xb6\x05\x57\xe1\xf0\x9a\x6c\xd3\xeb\x25\x6c\x51\x67\xcc\x61\x92\xb0\xad\x40\x6f\xd2\x3c\x39\x62\xeb\xca\xe3\xfd\xa3\xc3\x6a\xe3\x90\xd1\x68\xc8\x3a\xea\x26\x06\xfb\x97\xa6\x43\x05\x2d\xc5\xeb\x1e\xcc\x8b\xdf\xcf\x5f\xfe\xc2\xa4\xf8\x2f\x78\x6a\xf0\x84\x95\x65\x32\x35\x03\x91\xe7\x21\xaf\x6b\x91\x00\xee\xae\x9a\xd6\x57\x53\x84\xae\x60\x62\x1f\x15\x80\xd6\xaa\x1b\x40\xa2\x66\x94\xfa\xf7\x42\x80\x7f\x07\x41\x3f\x68\x2b\xe0\x77\x49\xf2\xcd\x86\x7d\xbc\x05\x60\xca\x01\x0c\x03\x34\xf3\x12\x5c\x0f\x86\xcb\x80\xb6\x5d\xbb\x11\x90\x06\xe7\x68\xe7\x3a\x9b\x69\x3d\xb9\xcf\xd8\xf1\xe3\xa3\xad\xf1\x42\xfe\xa5\xe3\x55\x84\xf6\x70\x58\xf5\x43\x38\x32\x64\x9b\x3c\x05\xf0\xa8\xc6\x38\xc5\xc3\x21\x16\xc1\x6d\xd7\x6b\xef\xb0\xdc\xc4\x37\x91\x23\x28\x0a\xda\x26\xcc\x04\xb4\x33\xca\xef\x07\x15\x6f\xe2\x29\x88\x05\x70\xdf\x05\x8d\x4d\xc6\xb4\x00\xf1\xc9\xa6\x59\xa8\x1a\x3c\x18\xf0\xe2\x08\xf9\x46\x07\xdd\x65\xdb\x52\x27\xec\xef\x01\xae\x71\x14\xc5\xca\x20\x84\x06\xc8\xc6\x41\x15\x72\x9d\xc2\x69\x16\xc4\xca\x7c\xa2\x20\xa8\x11\xd2\x29\x1d\x6e\x07\x92\x13\x53\x55\x6a\x66\x45\x2e\x64\xf7\xab\xc0\xa4\x79\x2e\xdf\xfb\xdf\x9d\x9d\xff\xcd\xb8\x2f\x90\x93\x5e\xdc\x64\xbd\x7a\x5b\xa7\x19\x0c\x8e\x75\x8b\xd4\xff\xa3\x57\x69\xb2\xff\x83\x26\xde\x17\x15\x6a\xc4\x24\x1d\x98\x82\x48\x48\xad\xe1\x07\x81\x49\x88\xb2\x43\x08\x4c\x0f\x54\x25\xb2\x4d\x51\xc4\x99\x16\x2e\x45\x74\xb3\x0b\x67\x38\xc0\x78\x8c\x52\x05\x96\x8c\x20\xb2\xca\xf0\x81\x75\x2b\x29\xb0\xc0\x50\x8b\xe5\x9c\x0b\x65\x12\xa8\x8b\xca\xe3\x82\x25\xef\x2b\xb2\xef\x16\xe0\x12\x39\xa1\xd1\xb1\x3d\x80\x89\x8a\x70\x01\x24\xa5\x45\xf5\x3a\xf8\x71\x80\xcf\x1a\x41\x83\x3f\x95\x3a\xa9\xb3\x30\xa1\x12\xd5\x85\xf2\x59\x36\x00\x32\x85\x98\x8a\x28\xe6\x56\x77\xe0\xba\xf0\x9d\xbd\x51\xfb\x8e\xc6\x57\xea\x2d\x27\xc6\x04\x53\xb4\x86\x24\x1a\x36\xea\x88\xda\x13\x6c\x00\x9f\x10\xc1\x63\x3d\x74\x2f\xd9\xa0\xfa\x36\xeb\xc6\x83\x52\x09\x81\x92\xff\x7b\xc9\x09\x7f\xa2\x90\xf0\x67\x4a\x08\x7f\x4d\xf1\xe0\x7f\x64\x83\x7b\xcb\x06\x3f\x50\x30\xf8\x81\x52\xc1\x8f\x17\x09\xfe\x3c\x79\xe0\xff\x15\x61\xe0\xcf\x97\x04\x60\xce\x73\x37\x16\x2c\xf5\x97\x19\x5a\xac\xca\x35\x10\x81\x55\xf4\xb5\x65\xaf\x1e\xd0\xa2\x88\x5b\xfc\x0c\xce\x5b\x7a\x2a\x3f\xf8\x40\xa0\x38\x38\xc1\x31\x46\xc9\x4c\x3a\x73\xc6\x8a\x89\x61\xc6\xfe\xc6\x38\x80\x1d\x87\xb5\x29\x8c\x15\x23\x32\xe1\x21\xc7\x34\xb3\x09\x51\x45\xcf\x27\xb9\xb6\x99\x55\x31\x73\xe9\x0e\x41\x14\x32\xb4\x30\xb6\x38\xb1\x9d\x74\x25\x13\x84\x48\xe0\x10\xad\x04\xb2\x66\x7d\x5b\x0b\x19\x6b\xc5\xab\xef\x94\xad\x24\xfa\x9a\x6c\xb5\xbe\x5b\xb6\x92\xb2\x0a\xbd\x62\x4b\x59\xdf\xdd\x15\x4a\xd8\x32\x9b\x60\x83\xfe\xf3\xc4\x2e\xee\x96\xc9\x25\x72\x51\x12\xe7\x0c\x7f\x7f\xf7\xe2\x5c\xcd\x6b\x7e\x1d\x2b\xee\x4c\x2e\x17\xa4\x4d\x63\x9f\x2c\x16\x4d\x03\x20\xf2\xe7\xa8\x9e\xd4\x1b\x92\x7f\x2c\x9e\x40\xb0\xe2\x9d\x7b\xf2\x86\x92\xcc\x76\x6a\xe4\x3a\xad\x78\x2f\x1c\x99\x8e\x8c\x4c\x47\x15\xef\x9d\x23\xd3\xbe\x91\x69\xbf\xe2\xfd\xdd\xca\xf4\xb4\xbe\xbb\xbb\x00\xc3\x6c\x91\x8d\xb1\x35\xd6\xdc\xa4\xe7\x37\x02\x33\x67\x14\x45\x32\x9b\xe7\x71\x3f\x6c\xbc\x90\xde\xb7\xee\xce\x02\x15\x59\xbd\xd6\x38\xf8\xfb\xbb\x5f\xcf\x3f\xde\xab\xd7\x6a\xf3\x83\x9a\xf6\x9f\xd6\x20\x2b\xa5\xe2\x7d\x2c\xf6\x40\xed\xf4\xf4\xb0\x5e\x3f\x6a\x1c\x1f\x1f\x1b\x1d\xa6\xc7\x3b\x07\xa1\x76\xbc\x7f\x7c\x50\x3f\x69\x1c\x18\xa5\x44\x64\xc5\xfb\xd5\x51\xe4\xe0\xe4\xd0\xaa\x05\x63\x9c\x43\x53\xb3\x20\x03\xcc\x3f\x7f\x70\xdc\xd7\xf8\x07\xd9\xb8\xfa\x31\x1e\xc0\x3d\x36\xf3\x0e\xbf\x96\xe0\xba\x15\x86\x47\x37\x91\x71\x01\xcd\x3c\x38\x6e\x99\x16\x01\x6b\xce\x8e\x23\x84\x25\x12\x2f\xc8\x6e\x04\x03\x6d\x6e\x4e\x43\xa1\xd5\xca\xc8\xa8\x9d\x1e\x71\xbd\xee\x6c\x38\x64\x6b\x32\x5d\x16\xe7\xa7\xeb\x57\xc9\x30\x19\xc7\xd3\x6c\x2c\x62\x85\xb5\x8e\xba\x83\x05\x36\x07\xd9\x88\xdb\xa8\xe1\x16\x0a\xe1\x93\xe9\x9b\x86\xa6\xb4\x47\x27\x45\x7c\xf8\x35\xe4\xe8\x73\xd7\x61\x60\x2a\x98\x3e\xd5\x0a\xd3\x6d\x68\x5e\x98\x2e\xd2\x2a\x68\xe8\x2d\x05\x00\x49\x0c\xc1\x64\x53\xc3\xea\xb7\xc9\xc0\xca\x1f\x1a\xc1\x4a\x9d\x01\x80\x7a\xbf\x46\xf5\xd6\xd7\xa7\xe5\x8d\x6a\x7d\xb5\xd1\x90\x55\xfa\xf5\x27\xe5\xe5\x1e\xa3\xeb\xbc\x32\xf4\x5d\x1d\xd3\x36\x8e\xda\x22\xfa\xe1\x06\x29\xd9\x14\x0c\xc8\x4a\xfa\x54\x58\xee\x18\xf6\x06\xe0\x7d\xd0\x10\x0d\x79\xcd\x2c\xbe\xcd\xcd\x86\x74\x5c\xf4\xd1\xaf\x54\x44\x0e\xad\x65\x48\x95\x7e\xb0\x5a\xc9\x63\x34\x69\x39\x61\xe6\xb1\xfc\x55\x58\xd7\x63\xb4\x8a\x85\xc7\xa7\x96\x9c\x10\xd2\x4c\xcf\xa2\xbb\xc8\xee\x84\xc7\x0d\xb8\x42\x4c\x2d\x5e\x3f\xee\x0e\x70\x26\x25\xd4\xda\x81\x5f\x3d\x0c\x4a\xe8\xbd\x50\x71\xd4\x20\x16\xf1\x43\xea\x76\x64\x00\xba\x2c\xc3\xa7\x52\xc9\xf5\xc1\x27\xcb\x3f\xc0\x43\x4a\x71\x18\xda\xc4\xb5\xe8\x92\xda\xf3\xaf\xf1\xbc\x70\x81\x15\x63\xd5\x75\x36\x72\xca\xc4\x7d\x4a\x2d\x95\x89\x4c\xd3\x65\xdf\x07\xa7\x3f\xbf\x7f\x7a\x4b\x66\x3b\x3c\x20\x2c\x1b\xf1\xb4\x08\x13\xe8\x5b\xf3\xb5\xa1\xed\x0b\x34\x43\xc8\x9b\x11\x63\x9d\x89\x28\x22\xc2\x86\xe3\x0f\x99\x1b\x3d\x0d\x88\xac\x18\x70\xe5\x93\xfc\x54\x9c\x62\xfd\xe7\x0c\x9c\x52\x04\x79\xc8\x3f\x9b\x5a\x99\xaf\xff\xdf\x2c\x19\x2f\xaa\x31\xeb\x0d\x7f\x39\x1b\x0f\x9a\x7a\x0b\x41\x88\x8d\xe1\x4a\x6d\xd3\xfb\x3a\xc9\x86\x6c\x93\x37\xeb\x76\x93\xc9\x84\x32\xf1\x40\x15\x1d\xdd\xa0\xa9\x5f\x98\x00\x4e\x94\x8a\x9f\x5a\x5a\xce\xea\xa7\x64\xad\x76\xf0\xd6\x94\xc1\x3d\x91\xec\xca\xf7\x30\x75\x07\xae\x3a\x82\x65\x2f\x47\x01\xec\x79\x75\x94\x02\xa3\x2f\x38\x68\x89\x97\x71\x4c\x07\x57\x59\xa7\xb3\x09\x37\xaa\xd7\xc6\x87\x0e\xf1\x54\x67\x55\x75\x0b\xe8\x4b\xee\x33\x80\xcc\x7c\x09\x0e\x26\x37\xed\xfc\xc2\x4c\x0f\x0d\xf7\x22\xf5\xb9\x5a\x19\xab\x1d\x92\x9b\x2f\x0b\xeb\x85\xac\x9b\x26\x6a\xf8\x45\xbb\x38\x32\x36\x15\xca\x7b\x22\x92\x02\x5b\x9a\x21\xb7\x7e\x25\x59\x5e\xb5\xe6\x67\x93\x82\x00\xa1\xc8\x1a\xa3\x6e\x05\xed\xef\x09\xdc\xbb\x63\xac\x14\x0c\xba\x61\x8e\x21\x48\x99\x16\x18\x97\xd0\xc4\x95\x6d\x70\x12\xcb\x86\x32\xc6\x6b\x66\x5e\xc9\x41\x73\x4f\xb5\x03\x2a\xe9\x51\x25\x3d\x55\x09\x4f\xe1\x55\x68\x17\xdc\x0a\x15\x48\x9b\x7a\x00\x14\x89\x72\xba\x9b\x2a\xf4\x06\xe7\x21\xd3\xf0\x42\x0f\x4b\x85\x08\xd2\x6b\xb7\x34\x6f\x57\x05\x24\x47\xc8\xd9\x7b\x17\xa3\x76\x30\x61\x7f\x22\xf8\x82\xcb\x1d\x70\xaa\x2b\x75\x4b\x48\x0c\xf9\x06\x47\x48\x9c\xeb\x80\x11\x7b\x6c\x8a\x50\x66\x8a\x4b\x86\xb2\x29\x8c\x86\x18\x3f\x8d\xab\xcc\x4c\x60\x82\x0d\x0e\xdc\xba\x6a\xea\x37\xd6\xf3\x96\x43\xe3\x8b\x04\x24\x78\x86\x00\x50\x15\xe5\x4b\x6f\x45\xc7\x84\x27\x43\xf0\x52\xe4\xf5\x94\x0d\x83\xa5\xc3\x40\x5f\x83\xc3\x69\xc8\xc8\x1c\x73\xc3\xd9\xf8\xa0\x4f\x97\x18\x21\xdc\x8e\xac\x30\x13\x01\x3b\xd9\x9c\x4d\x36\x30\xab\xb7\xd2\xaa\x98\xc2\x8f\xfd\x39\xe4\xa6\x56\x43\x53\xd4\x62\x5f\xbe\xd2\x18\x8e\x69\xd8\x2c\x2b\x70\x98\x35\x13\xba\xe4\x13\x4e\xb4\xd8\xc6\x96\x8c\x40\x92\xfe\x94\x12\x68\x4e\xcf\xa9\x28\x10\x25\x24\x3d\xad\xad\x56\xf0\xfb\xb3\x9e\x85\xdf\x6a\x03\x05\x10\xb9\x8f\x94\x55\xc8\x5b\xe5\x4b\x2d\xce\x35\x20\x70\x25\x87\xad\x57\xc9\x90\xf5\x7e\xb1\x78\x95\x8c\x55\x7b\x29\x63\x20\xf1\x22\xf2\x86\x19\x1b\xa6\x5c\xcb\x47\x7d\x59\x68\x35\x8b\x46\x84\xd8\x2f\xe1\x28\x3c\x58\xd9\x11\x6b\xd0\x91\x53\x03\xef\x0c\xbb\x9a\xa6\x19\xd9\x46\xc5\xf4\xa8\xcc\x93\x57\x2f\xbd\x65\x8d\x2d\xb9\xb6\xaf\xe0\x78\x41\x19\x4d\xd3\x45\xfd\x97\xd7\xe9\xa0\xe7\x0b\x64\x24\x3c\x06\xe5\xf5\x2d\xfb\x00\x90\x20\x8c\x80\x7b\x31\x46\x2d\x9e\x72\x13\x9e\x90\xf3\x0f\xb3\x72\xf2\x14\xc3\xea\xc7\x9b\x68\xe6\x60\x58\xe3\xb6\x2e\xeb\x0f\x1c\x0f\xbb\x1a\x58\x79\xf1\x86\x47\x90\x97\x12\x0a\x12\x31\xfc\xa9\x78\xa3\xb9\xb7\x05\x41\x75\x06\x19\x58\xda\x6f\xd9\x02\x7d\xc0\x01\x73\xe1\x49\x03\x08\x44\x52\x85\x23\xc3\xc3\x48\x81\xf3\x04\x2d\x43\x3a\x64\x03\x0a\xee\x3d\x10\x38\x4f\x77\xb5\xd2\x49\x21\xd6\x88\x6e\x40\x6a\xc3\xbc\xd5\xf8\x27\xe7\x9d\x1a\x63\x70\xa1\x61\xc1\x43\xc6\x82\x5d\x34\x64\x2b\xa8\x4d\x06\x1b\x70\xdb\x34\x8b\x35\xe4\x30\xdb\x66\xec\x0a\x84\x89\x17\xe1\x25\x7e\x26\xff\xc4\x6b\x45\x67\x53\xf0\x66\x0f\xb4\xd6\x72\xa4\xbe\x1e\xf6\x48\xc7\x03\xb7\xc5\x0d\xae\x2a\x60\x86\x65\x8c\xb4\x65\x30\x52\x55\xd7\xcf\xc5\x2a\x74\xee\x2a\xab\x45\x94\x9c\xc8\x12\x42\x4c\x42\xbe\x07\x42\x6c\xb7\x95\x3b\xda\x47\x57\x12\x8a\xb5\xef\xb9\x2a\x2e\x8e\x97\x36\x5b\x5d\x05\x68\xf6\x96\x94\xba\x73\x55\x8d\xf8\x94\x14\x53\xc4\xc1\x1d\x55\x19\x5c\xbe\x9c\xce\x1d\xb9\x0b\xb3\xc2\xc5\x76\xf2\xc0\xbc\x79\x47\x5d\x2a\xee\x9c\xf9\xda\x32\x8e\x3d\xce\x7d\x34\xe3\x65\x9c\x6d\x44\xaf\x79\x5a\x34\xa5\xb3\x92\xb6\x70\x6b\xb4\x41\x00\x13\x4e\x7c\xa6\x50\xc3\x39\xcc\x41\xe5\x3f\xc8\x8c\x5b\xad\x3c\xc6\x4a\xd3\x21\xbf\xae\xd4\x07\x9d\x1d\xe0\xf0\x3b\x1c\x7e\xf1\xfc\x14\x92\x36\xa5\x2a\x9a\xab\xd0\xac\xad\x86\x71\xec\xcf\x65\xb2\x11\x88\xb7\xe3\x94\xf5\x94\x04\x6e\x59\x02\xcc\x44\x15\x74\x5a\x8f\x07\x5e\xf8\xd9\xb2\x5d\x23\x08\x1a\x97\x9e\x11\xb8\x91\x28\xa3\x3e\xd2\x9f\x47\x94\xa2\x6e\xf1\xb3\x69\xd0\xe2\x27\x75\xf6\xc2\x30\xc3\x85\x4d\xb3\x90\xd5\x01\x3d\x99\x49\x05\xfd\xcf\x51\x23\x58\xe2\x89\x20\xfc\x59\xad\x66\xb9\x92\xbd\x29\x46\x61\x7c\xa1\x3e\x95\xb2\x29\x57\x23\xf2\x01\xef\x31\x17\xdc\x59\x6f\x6c\x23\x56\x5f\x1c\x26\xae\x3b\x72\xf4\x31\x2f\x87\x06\xaf\x91\x3a\x7e\xf0\x1d\xfd\x13\x98\xe7\x11\xd4\xa7\xa4\xa3\x3a\x67\x28\x47\xaa\x23\x21\x25\xe3\x2d\xd0\x9e\x21\x20\x7d\x62\x57\x69\x12\x89\x5c\xba\xdf\xc8\xb6\x15\xbb\x04\x6b\xd7\xa0\xd2\xe9\x62\x4b\xaf\x47\x96\x30\x0e\x0b\x9f\x34\x5a\xbc\x4a\x2e\x78\xa3\x2f\x91\xa6\xcc\x8c\x80\x9a\xf0\x27\x97\xfe\x29\x79\x81\x52\x1f\x0d\xa6\x74\x56\xbc\x7e\xcd\x44\x81\x2a\xb9\xa6\x7e\x9f\xf5\x12\xce\x4e\xf8\x9a\x1c\x58\xde\x9b\xb0\x27\xf4\x8e\xb1\xc7\x9a\x8d\x84\x68\x40\xa1\xa6\x8c\x5f\xc7\xd6\x98\x7a\x46\x6e\x7d\x83\x52\x71\x5d\xd3\xe4\xdd\x4f\x48\xd1\x38\x9e\xb3\x46\x62\xc2\x25\x22\xcd\xfc\x12\x9a\x54\x2a\xf2\x20\x40\x93\xbd\x04\x9c\x6b\x4c\x07\x9b\x04\x16\xcc\x63\x57\x88\x91\x32\x51\xc9\x4f\x19\xce\xae\xaa\x3c\xdf\x97\x66\xed\xa2\x1d\x78\x12\xa8\x49\xd5\x9a\xac\x80\xb0\x36\x4a\x14\x52\xec\xc2\x7c\x92\x4c\x90\xfa\x44\x5a\xbe\xe5\x12\x21\xf4\x2b\xf7\x59\x22\x3e\x97\xac\x0f\x9f\xd7\x2f\x0e\x10\xea\x24\xe3\xe9\xf5\x27\xd8\x72\x56\xeb\xf6\x65\x3b\xe7\x4d\x61\xf7\x62\x92\x8d\x53\xd6\x48\xda\x71\x92\xb2\x4f\x45\xb0\x55\x63\x9a\x8d\xf8\x9a\x31\x62\xcc\x68\x30\xf9\x98\x8c\x71\x02\x63\x56\x23\x6a\xb5\x3a\x3e\x94\x07\x19\x48\x1e\x01\x69\xee\x00\x56\x17\x72\x4c\xb4\x95\xc9\xc8\x89\x93\x9b\x67\x57\xe1\xc8\x4a\x57\x9c\x15\xaf\x7a\xca\x54\x08\xad\x56\x07\xf7\x5f\x0a\x2d\x9f\x7e\x26\xaf\x70\x78\xe1\xbb\x14\x9e\x5c\xe4\xc5\x69\x79\x1b\x54\xf7\x4b\x67\x38\x6f\x33\x2a\x28\x75\xde\xe6\xba\x41\xb9\xe9\xd6\x25\xce\x21\x2f\xb4\x5c\xc8\xed\xcc\x2f\x63\x46\x40\x97\xf0\x36\x95\xc1\xbb\x22\x81\x1c\x63\xee\xc0\xdf\xf5\x34\xce\x2e\x46\xd9\x24\x45\x3a\xf0\xc6\x09\xb8\x01\x64\xfb\x39\xe3\x76\xed\x96\x0e\xef\x34\x9f\xa3\xd0\x17\xda\xd4\x61\xc1\xfc\xbe\x33\x49\x47\x60\xe3\xf5\xde\x47\x7a\xab\x04\xf7\x74\x8c\x9d\xd1\x78\xc5\xfd\xad\x61\x7c\xc0\xe0\x3c\xf6\xeb\x15\x39\x31\xb9\x73\x29\x0c\xeb\xb7\x73\xb4\xec\x32\xef\x93\x46\xe0\x1a\x12\xe4\xe0\x7b\x75\xca\x47\x72\x6b\xd9\x42\x27\x0e\x79\xf8\xbd\x6a\x94\xb5\xf5\x1b\xce\xfc\x3e\x2f\x75\xfd\x1d\x4f\x2d\x94\x08\xcc\x01\x8f\x67\xd3\x8c\xfc\x33\x52\x5b\x80\xb6\x90\xba\x6f\xaf\xaa\xf0\xed\x07\xdc\x11\x8d\x2e\xce\x04\x9c\x87\xf8\x36\x83\x61\x92\xf9\x9c\xcf\xd1\x5f\xc8\xc8\x49\xce\x4f\x0a\x6b\x27\x0c\x73\x79\x80\x31\xcf\x03\x79\x82\xa5\x71\x0b\x09\x8a\xc2\x85\x74\x8d\x1f\x44\x36\x23\x5a\xad\xec\xe1\xd0\xba\xe5\x49\x91\xdd\xdd\x6f\x20\x57\x2b\x7e\x33\x8b\xad\xe4\x13\x58\xbc\x24\xfa\x3a\xb3\x8d\x90\xb7\x12\x67\x5f\x90\xfc\x10\x69\x24\xc6\xc5\x3d\xc2\x8b\xa2\x5a\x12\x20\x2b\x0b\x9f\x70\x3a\xe6\x7b\x15\x4e\x1c\xa1\x57\xe1\x70\x2a\x5e\xc0\x8f\xdc\x37\x94\xd8\xa9\xb1\x8c\x02\x39\x93\x0d\xde\x22\x19\x00\x0f\x7b\x3e\x18\xf8\xde\x63\x7c\x43\x08\xb7\x5a\xfc\xde\xf9\x2d\x09\xa3\x92\x9f\x29\x6e\xc6\x39\xd3\x05\x17\x24\x90\x19\x85\x0e\xee\xdc\x56\x4e\x85\x45\x51\x89\x2f\x2b\x20\x3e\x03\xfe\x36\x8d\x18\x6f\x6d\xa8\x27\x01\xad\x00\xb3\x0e\x93\x2e\xd2\x1e\x18\x94\xc9\x25\xc1\x37\x96\x0b\x3e\x17\xaf\xc6\x69\x0f\x39\x89\x6b\x3c\x3a\xd9\x74\x9a\xdd\x78\xcf\xea\x4d\xb0\x5a\x73\x74\xbf\xc1\xc9\xd6\x37\x9e\xb5\x1d\xea\x42\x3e\xfc\x40\xfc\x05\xae\xac\x73\xb4\x81\x80\xe7\x11\x18\xc8\xc4\x90\x2d\x85\x5f\x6c\x25\xc7\x32\x2a\x78\xce\xf0\x49\x3b\x33\x18\x70\xd0\x22\xef\xcd\xf7\x50\x66\x12\x43\xc1\xe0\xbc\x24\xdd\x94\x14\x73\x39\x23\xe0\xbe\x08\x0a\x1d\x90\x3b\x58\xa9\xe9\xf3\x5d\x2e\x85\x4b\x87\xaf\x05\xc3\x49\xf0\x66\x6f\x0b\xa5\x8e\x16\x1e\xe2\x2a\x41\x9d\x4d\x01\x47\x33\x74\x84\xf7\xf7\xdb\x90\xeb\x8e\x17\xfc\x72\xcf\x0b\x36\x63\x09\xcc\xd5\x61\x6b\xaf\x0c\x07\xb5\x87\x79\x53\xd0\xe4\xc9\x2f\x25\x72\xe6\x97\x07\x9e\x4a\x3f\x48\x96\x1c\xe3\x78\xfc\x77\x95\x26\x65\x01\x5a\xca\xa2\xf2\xa5\x4d\x59\x90\x2c\xf8\xc0\x1a\xb2\xfc\x7d\xc5\xd2\x87\x08\x9c\x25\xc2\xe3\x02\x85\xc7\xbf\xa8\xe4\x58\xa6\x1f\xdb\x4a\x8e\x0c\x39\x26\x36\x35\x6f\x27\x42\x7e\x3f\x37\x2b\x93\x38\x7f\x84\x1b\x99\x72\xde\xf6\x20\xaf\x32\xdb\xb9\x95\xb1\x99\xdb\x63\x93\x90\xb7\x66\x6e\x25\xcb\xec\xc3\xdc\xce\x00\x83\x35\xf1\x30\x64\x70\x3d\xa7\x85\xae\x5b\x42\x03\xf1\xdb\x33\x27\x20\xa7\x78\x26\xbb\x59\x72\x39\x58\xbc\x00\xb9\x35\xcb\x65\x72\x6a\x73\xa9\x50\x7e\x2d\x92\x8b\x65\xd6\x88\xe5\x0f\x10\x73\xa9\xa2\x52\x39\x17\x85\x7c\xbe\xd4\x8f\xe3\x3b\x58\x28\xf4\xd2\x0b\x21\x2d\x40\xe2\xaf\x4c\x48\x41\xd1\x66\x4b\x11\x22\x94\x20\x55\x3f\x69\x5e\x32\x4b\xf7\x17\x94\x67\xfb\x8d\x85\xc5\x8d\x1f\xb6\x83\x58\x4b\x14\x5b\x91\x95\xb1\x0d\x30\x65\x70\x45\xd0\x20\x88\x4b\x99\xfc\x4f\x15\xc8\x17\x24\x90\xff\x15\xa4\x71\xf1\xbc\x10\x83\xc3\x89\x02\x48\x49\x63\xcf\x40\x53\xcb\x8d\x32\x3b\xc9\x14\x45\x91\x1d\x3b\xf6\x7e\x12\xfb\x02\x25\xf6\xbf\x8c\xb8\xbe\x28\x15\xd7\xff\x17\x1a\x05\x6d\x2f\xfb\x55\xd1\xdf\x73\xaf\x4c\x04\xe4\xc9\x25\x92\xa0\xb3\x48\xe8\x94\x0f\xe9\xf5\xbc\xc2\x06\x80\x1b\x4b\xb3\x3a\xec\x97\x42\xd4\x93\x55\x64\x60\xe7\x11\x26\x3b\xfc\x85\xf5\xc9\x0e\x96\xf2\x84\x43\x55\x04\xa1\xa0\xb5\xac\x2a\x60\x00\x8a\x35\xa4\x3c\x01\xb9\xa5\x92\x2f\x30\x4e\x16\xcb\x09\x75\x2e\x55\xbb\x78\x14\x6f\x9b\xc6\xaa\xf4\x73\x1c\x72\x40\x6d\x9e\x54\x21\x1f\x7c\x55\x38\xec\x29\x78\xfc\xae\x2e\x68\xf9\x87\x67\x3b\xe1\x84\x41\x1c\x48\x73\xf7\xaf\x10\xe4\x1e\xab\x83\x50\x9c\x0d\x3b\xd2\xda\x1a\x94\x77\xf1\x68\x8d\x5b\xec\x5a\x58\x97\xae\xae\x79\xad\x9c\xef\xf7\xbe\xbe\x16\x58\x48\x40\xbe\xde\x10\x38\x41\x0a\x4b\x92\x18\xd0\xb6\x00\x33\x9b\x90\xc0\x5c\x8a\x84\xa8\x97\xa3\xa1\x6a\x0e\x34\x10\x4c\x76\xc2\x21\xd7\xba\xd8\xe9\x9f\x1c\x7c\x51\xab\x4a\x03\x01\x94\x4a\xf0\xd3\x14\xc9\x70\xc4\x48\xeb\x35\x04\x4e\x0e\x24\xc8\x19\x19\x91\x34\xa1\x66\x59\x82\xa5\x00\x02\x49\xf9\x96\x73\xf1\x45\x72\x1d\xdf\xa6\xd9\x58\x38\x80\xfd\x8d\x71\xae\x01\x89\x5d\xf6\xbc\x2c\xcd\x7a\x0f\xbd\xfe\x20\xb9\x62\xa3\x23\x9e\x39\x86\xef\x56\xf1\x0c\x01\x6d\x14\xcf\xe2\x7e\x12\xf1\x07\x78\xc9\x8c\xe7\x2d\x18\x9e\x80\x64\x4a\x87\xb2\xdc\x75\x30\x99\xa1\x93\x15\xa8\x1e\xa5\xed\x6c\xc8\x3c\x11\x63\xf5\x6b\x8d\x9a\x31\xf7\xa7\xab\x8e\x9e\x2b\x64\xa9\x63\x16\x05\x1e\xf4\xe0\x1f\x5b\x7b\xfc\xea\x49\xa0\x3f\xb1\x26\xcd\xfd\x64\x2f\xa0\xe5\x94\x76\xae\x3a\x08\x96\x83\x6a\xb9\x65\xd5\x4d\x36\x9b\x24\xa0\xaf\x30\xad\xab\x60\x9b\x25\x5b\x2b\x04\x7d\xbc\xc3\xa2\x75\xc2\x80\x0e\x86\xa8\x03\x91\x8a\x1d\x27\x7b\x68\x29\x03\xf0\x06\x8c\xfd\xc8\x80\x76\xf2\x64\xbb\xa2\xde\xdd\xf5\xc9\x2e\x81\x86\x57\x24\x3f\x73\x45\x8a\x32\x28\xee\x19\x2f\x86\x90\x31\xbd\x56\x0d\x2f\xc9\x1f\x5e\xd4\xab\x08\x5a\x18\x60\x4b\xe7\x15\xbc\xe9\x23\x4a\x4a\x28\xba\x45\x6f\x11\x20\x37\x52\xd6\xf2\x87\x75\xb0\x39\x69\x15\xb3\xe2\xc1\x19\xaf\x93\x9f\xd0\xe6\x92\xc8\x2e\xf4\xf6\x91\xab\xdb\x35\x69\xab\x95\x1e\x45\x17\x19\x0a\x31\x91\x41\x89\x7e\x21\x1d\x54\x5b\x1a\x96\xd2\x8a\x83\xdb\xa8\xb5\x36\xd3\xcd\x6c\x5a\x20\x9b\x47\x9b\xe9\x06\x27\xcf\x43\x48\x67\x77\x17\xdb\x60\x3d\x8f\xe3\x19\x23\xe7\x19\x64\xe0\x18\xb0\x51\x36\xf2\x03\xc7\xe8\xf0\x81\x2c\xd2\x42\x58\x0b\x05\xa1\xf4\x12\xb0\x09\xdf\x29\xe6\x01\xb1\x74\xcd\x70\xb1\x39\x58\x18\x9c\x35\xd9\xf3\xf5\x03\x93\x4b\xd9\x9b\xfa\x8f\xb3\xba\x0d\x9d\xc9\xb7\xfd\x45\x5e\xc1\x92\x40\x66\x7a\x08\x9b\xfe\x30\xee\x99\x77\x2f\xd7\x64\xfb\x91\xec\xd9\x56\x39\x54\xe9\xf2\x84\x4b\x82\xb2\x1c\xef\x52\xc6\x9d\x78\x6a\x96\xf4\xf2\x12\x90\xd5\x59\xba\x3d\xd4\xdf\xdf\x14\x00\xb3\xf2\x5e\x4e\x9f\x7e\xe1\xb2\x87\x6f\x4e\x82\xc9\x94\x49\xc7\xd9\x78\x8a\x4f\x03\x2c\xf9\xb3\x93\x30\xff\x9a\x1e\x49\xc3\x4c\xdc\xcd\x06\xc9\x18\x9c\xa7\xb1\xa8\x0c\x57\x0e\x2f\x24\xf2\x50\x4b\x73\x02\xa3\x1a\xce\x52\x63\x1e\x5c\xb4\x5b\xa5\x75\x42\x13\x7c\x6f\x90\x16\x44\x71\x7a\xad\x91\xde\x94\x85\xa9\x0d\x5f\xe6\xfd\x05\xc3\x03\x9c\x9e\x9c\x07\x9a\x55\x4c\x71\xb2\xc9\x8b\x79\xe9\xcf\x60\x33\xb3\xb7\xc7\xa9\x53\xcf\x04\x2f\xda\x5a\x0e\xdc\x5c\x93\x82\xd5\x54\xda\x32\xce\x00\xcf\x70\xcb\x81\x3d\x6f\x5c\x15\x71\x2a\xc7\x00\xe5\xeb\x52\x55\x95\x5e\x87\x54\x24\x72\xdd\x8c\x23\x8d\x2b\x44\xb8\xaa\xe7\x7a\x4b\xeb\x07\x7b\xfe\x9c\xa3\x1d\xf1\xe6\x79\x76\x6e\xbd\x95\xf9\xfd\x13\x4d\x88\x17\xcf\x87\xdd\x6b\xfd\x9a\x1d\xb1\x66\xb2\xaa\xc4\x94\x35\x6f\x3e\xb7\x28\x8b\x66\xba\xe2\xed\xfe\x5b\xbd\x56\xab\x1d\xb4\x3c\x91\x66\x5b\xbf\x72\xff\xdc\xb4\xa6\x29\xdb\x61\x46\x0e\xd3\x17\x09\x23\xac\xc4\xa7\x82\xa1\x91\xa1\x9f\x8e\x27\x53\xb4\x5d\x91\x95\x66\x43\xb4\x1d\x8f\xac\x55\x4a\x67\xb9\xf2\xf5\x07\x83\x49\x27\x43\xfe\x42\x87\x51\x43\xd1\xb4\x52\x94\xf6\x94\x17\x70\x8d\xc0\xee\xf5\x82\x1e\x9f\x15\x4f\xa3\xba\x98\x5d\x0e\x34\xcb\x31\xc2\x9e\xd3\xd0\x71\x4d\x16\xed\x1a\x18\xf7\x9b\xd9\x49\x06\x91\x01\x90\x91\x3c\x1f\xbd\xc9\x8b\xc5\x79\x7c\x85\x0f\xb3\x7a\x8c\x50\xd9\x78\x80\x5c\x83\x45\x9c\xfd\xaa\xc9\xc3\x6c\x7b\xff\x61\x7a\x9d\x8c\x61\xbd\x9f\x44\xae\xde\xa6\x8b\x45\x8e\xdc\xea\x29\x3d\x7e\x3d\xb7\x20\x28\xd8\x0f\xe0\x0f\xa2\x42\x1e\xc6\x3b\x5a\xe6\x30\x83\x08\x21\x98\xd3\x52\x5e\xc7\x1e\x14\x89\x80\x86\xd1\xd9\x0e\x7c\x10\xa2\xc3\x08\xfc\x5b\x8e\xc6\xd5\x6e\xf4\xbf\x8f\x8a\xb6\x12\x8c\x6c\x1a\x2e\x36\x6e\x69\xb7\xcc\xd7\xe5\xb9\x72\xa2\x11\xe7\x0c\xdb\x61\x31\x28\xb6\x73\xbb\xa9\x52\xc2\xca\x0b\x82\x0d\x0c\xef\x4f\x11\xf1\x77\x6d\xd5\xff\xe9\x91\xf9\x26\xeb\x4f\xbe\x29\x01\xe9\x2b\x29\xdb\x90\xae\x49\xf5\xe1\x71\x99\xf1\xd4\xb5\x7a\xce\x52\x7c\x30\x9a\xa6\x8c\x37\xcc\x04\xcd\xeb\x22\xef\x2d\xaa\x20\xf1\x07\xde\x64\x82\xdf\x57\xf4\x88\x03\x3f\x58\x99\x66\x23\x17\xec\x09\x39\xc7\x80\x67\x7b\xb4\xa5\x47\xd4\x38\x1b\x16\xea\x64\xb0\x1a\x87\x35\x1c\x9f\xfb\x09\x7b\xc4\xb9\x49\xc6\x23\x25\x34\x8b\x14\x0b\x47\xc1\x16\xd4\xe4\x5a\x8e\xfb\x88\x92\x9e\x2c\xeb\x9a\xb2\x25\x1e\x98\x19\x17\x99\xb2\xe1\x60\xb1\x93\x0d\x13\xf1\x8e\x0c\xaa\x8a\x73\x35\xf5\x48\x0b\xd5\x12\xc4\xa4\x57\xa0\x65\x42\x11\x38\x97\xc6\x4f\x7a\x6b\xcc\x77\xc2\x78\xec\xac\xd8\x48\xb3\xcc\x76\x92\xef\x6f\xb0\x47\x7e\x95\x30\x89\x6c\x50\x5c\x87\xb5\xc4\xfb\x1f\x19\x6f\x75\xad\x70\xfe\x8b\x30\xf3\xa4\x24\x15\x76\x5a\x05\x49\x53\xd0\x39\x1a\x81\x9a\x9e\x10\x79\xcf\x2d\x2c\x90\x0b\x17\x48\xed\x34\x36\xa2\xb7\x1b\x9f\x2d\x9a\x86\x63\x0b\xc3\xfe\xd6\x38\x19\xbd\xc7\x8d\x21\xf4\x0d\xe5\xf5\xa8\x7b\xe5\x19\x57\x0a\x54\x80\x3c\x77\x0b\x1b\x55\x9a\x15\xf1\x84\x36\x35\xb4\xc7\x94\xa3\x2d\xf6\xad\x13\x75\xc1\xf7\xec\x3a\xbb\x13\x17\xb8\xe1\x5b\xc4\xff\x96\xf6\xe4\x1d\x70\xf8\x16\xf1\xf4\xf4\x87\x48\xf9\xa4\x3d\x20\xd7\x37\xfb\xb1\xaf\xba\xd1\x4c\xce\x5d\xbe\xb8\xf8\xe3\x68\xf3\x70\x21\x53\x7b\x9f\xd5\xe7\x97\x50\x77\x9d\x26\x77\x88\x15\xaf\xb9\x3b\xec\x4c\x46\x2d\xaf\xa2\xb2\xe6\xc5\x9d\x00\x63\x4d\x51\xc2\xf1\x90\x7d\x43\x77\xbd\x0c\x03\x40\xd5\x6f\x74\xe1\x37\xa9\x32\xa6\xc8\x04\x01\x7c\xc9\x19\x06\x47\xf8\xcc\xfa\xa7\x3f\x8a\xa7\xd7\xab\xc9\xed\xd5\x6a\xcc\x44\xea\x55\x37\x1d\x77\x19\x8b\xfd\xe9\x89\xe1\x58\xc1\x26\x67\xa2\x11\x80\xff\x39\x4a\xf8\x13\x66\x9f\x57\xab\x04\xde\x3b\x4b\xc6\x9f\x55\xf2\x17\x99\xfc\x45\x26\x7f\xc1\xe4\xaf\x51\x4d\x7b\x0b\x4b\x98\x9a\x83\xde\x34\x99\x4c\x3f\x42\x64\xab\xc8\xc0\x36\xbd\x49\x67\xbf\xf3\xc7\x0b\x6b\x0f\x7e\x7d\xad\x54\xda\xf2\x0a\x34\x67\x69\x7a\x4b\x49\xc9\xfa\x39\x12\xe6\xe9\xe9\x90\x71\x82\x29\x31\xfa\xcf\x81\x96\x05\xb5\x04\xa4\xb1\x5d\xf3\x26\xa3\x78\x52\x14\xaf\xfb\x57\xe9\x35\xc0\x3d\x54\x27\x55\xe7\xfa\x0b\x8c\x3d\xe3\x39\x52\xae\x16\x86\xbb\x0f\xf3\x94\x0d\x54\x42\x2a\x2c\x72\x12\x0e\x3e\xb6\x7c\x1b\x07\x1e\xf1\x39\xa0\xab\x5a\x76\xc9\xc8\x80\x1f\xd8\xe9\x7b\x7b\x2d\xd1\x6f\x5a\x4d\x70\x4d\xcc\xce\xb9\x5a\x59\xb8\xea\xbb\x42\x3b\x33\x93\xf5\x8c\xbc\x2d\xda\x74\x62\xa7\xa4\xed\xd5\x8a\x7f\x81\xb7\x0a\x94\xc1\x00\x75\x9e\x58\x9d\x3f\xe5\xb7\x33\x3e\xef\xee\xca\x6c\xd5\xf9\xcf\xa2\x9d\x4b\x0b\x59\xf0\x5b\xc4\xd3\xf6\x24\x8c\xe0\x69\x49\x1a\xc2\x0a\x9e\xa5\x4d\xf6\xc5\xe5\x3f\x59\x37\xa6\xc9\xda\x19\xca\x95\x0a\xdf\x08\xec\xed\xe5\x22\x1b\xd6\xfc\xb4\x16\x28\x2c\xb8\xcb\x76\xbc\x17\x82\x80\x64\x52\x5b\xe8\x95\xa7\xca\xd5\xfb\xe4\x3f\x19\x51\xe1\xd7\x28\xbb\xf3\x25\x96\xe2\xe2\x02\x82\x61\x18\xee\x71\xba\x0b\x1b\x41\xa5\x2c\xf7\x82\xe7\x5e\x54\xf8\x6f\x8d\x17\xfb\x02\xc5\x88\x94\xb4\xd5\x86\xcf\x24\x7d\xbd\xb1\x16\x24\x2c\xb1\x28\x94\x58\xd8\x25\x16\x66\x09\x9c\xc8\xd1\x52\x31\x3d\x3c\x57\x6e\x2a\xb8\xb2\x55\x1a\x37\xa4\x3c\x0a\x92\xf1\x94\xe4\x33\x3d\x20\x66\x22\x6f\x64\xd0\x14\x1f\xc2\x87\x04\x67\xbc\x74\x89\x06\xff\x86\xa2\xcf\x9b\xe2\x23\xcc\x40\x71\xd5\xfc\x1a\xa2\x97\x45\x8d\xff\x92\x31\x8c\xce\x7d\x56\x2b\x51\xe8\xa9\x1e\x5d\x15\xb1\xf0\xf2\xbf\x8a\xa6\x57\xf6\x72\x62\x66\xa4\x3c\xc1\xef\x40\x7b\xa9\xcb\x00\x2f\x78\x8e\x01\x9b\x3f\xde\x8e\x2b\xa4\xce\x8c\x8c\x4c\xbc\x17\x31\x83\xd5\xd9\x66\x46\x2b\xd1\xb4\x64\xd2\xf6\xee\x5e\xa9\x29\xb6\x20\x47\x31\x17\xe8\x1e\x8d\xbe\x9a\x1b\x8f\x85\xf9\xfc\xc5\xc2\x26\xfd\x84\xb4\xfc\x8b\x10\x2a\x98\x3f\x37\x89\xa2\x29\xf4\x85\x42\x5f\x42\x9b\x68\xac\x30\x3f\xf5\xfb\xdc\xe4\xbf\x20\x88\x5f\xb3\xa5\xbc\x69\x0b\x82\x42\xc6\xa0\x57\xf7\x8c\x66\x59\x3b\xa4\x74\x28\xaf\x8a\xab\x5d\x88\x2e\x31\x14\x5f\x15\xa3\x04\xf4\x4b\x3a\x61\xf2\x45\x69\xe5\x38\x7c\x25\x75\x8b\x9d\xd3\xba\xea\x51\x90\x71\x55\x0f\x09\x58\xbd\x6d\x7a\x53\x2e\x77\xea\x4b\x2c\x99\x1d\xe2\xb7\x36\x61\x39\xc9\xda\x0a\x8d\x91\xf2\x0e\xcc\xc9\x52\xf9\xf7\x94\x2f\x4e\x72\x5a\x14\x92\xa4\xbe\x8e\xda\x94\x39\x72\x92\xa4\x91\xf3\x8b\x33\xe7\x97\xef\x25\x5e\x1d\xd3\x39\x27\x61\xe4\x89\x6f\x51\x55\xb2\x5e\xa8\xa5\x4c\xba\x4c\x3b\xbf\x44\x7d\x89\x27\x92\x14\x2e\x6b\xe7\x9b\x2e\xe2\x52\x49\xfe\xb8\x29\xdb\x1e\x6e\xc0\x01\x77\x90\x1a\x06\x10\xf6\xf4\x33\x2c\x6a\xa1\xf6\xbe\x28\x1b\xb0\x59\x3c\xf8\x12\x6d\x64\xa6\xc6\x28\x06\x4d\x23\x48\xf5\xaa\xe6\x99\xb2\xaf\x90\x73\x8d\xde\x0d\x79\xc5\xf6\x7c\xb6\x19\x3e\x95\xe2\x2d\x53\x16\x66\xba\xd5\x95\x89\x5a\xad\x62\x62\xaa\x31\x22\x57\x07\xa3\x82\x9b\x73\xd0\x4d\xdb\x16\x96\xc3\xd8\xb2\x64\x53\x0f\xe3\x14\x5a\x26\x96\x5a\x62\x07\x57\x13\x3a\x28\x36\x0e\xee\x4a\x11\x63\x65\xb5\xd9\x43\xf3\x8a\x49\x18\x72\x80\x4d\x85\x29\xb2\x07\x89\x5f\x31\x8d\x2e\xc1\x0f\xd2\x2b\xdc\x5e\x33\x19\x9a\x08\x0b\xf5\xfb\xed\x96\x4a\x70\xdc\x03\x1d\x80\x4f\x08\x1b\x2e\x99\x7a\xc9\xe7\x70\x91\xdb\x48\x3f\x2c\xcf\x01\x1c\x79\xc9\xa2\x5d\x18\xa3\xa3\xee\x5b\x7c\xa8\x98\xcc\x59\x54\x7d\xd2\x41\x8b\x2a\x03\x5e\x14\xef\x85\x90\x60\x94\x84\x53\xab\x88\x2c\x99\x42\x89\x37\x82\x31\x74\x5f\x14\xad\x42\x3f\x9b\x28\x3f\x10\x61\x8e\x97\x03\x63\xd1\xbd\x79\x5e\x60\xf9\x7c\x2f\xea\x62\xfa\x94\x24\xde\x7f\x0c\xed\x36\x69\x8b\x80\x6a\x1c\xb9\x67\xc2\x13\xa6\x4f\x6c\x53\x17\x95\x98\xe3\x82\x66\xf8\x05\x6c\x27\xd2\xe1\xd5\xcb\x41\xca\x73\xf3\x31\x47\x97\x61\x5c\xaa\x45\xd0\x9f\xc8\xb8\x75\x43\x9f\x90\x31\x10\xab\x93\xb5\xbf\x0c\x3c\xc8\x42\x90\x87\x1b\xb8\x2e\x95\x4b\x1b\x8c\xc5\x1e\xfc\x59\xa1\x4f\x11\xac\xbb\x01\xa3\x4a\xa4\xf2\xec\xd9\x79\x24\x08\xf4\x0e\xa4\xa5\x42\x58\x02\xb0\xe2\xf7\x64\x09\xed\xf6\x3b\x66\x65\xbd\xad\xab\x1a\x0a\x0b\xbe\xa5\xc4\x70\x1f\xa9\x03\x55\x98\x67\xea\x25\xc2\x02\x57\x9a\x26\x86\x4e\x5f\x9c\xdc\x6f\x38\xe2\xd2\x01\x18\xe5\x8d\x92\x0f\x38\xfc\x87\x2b\xe2\xe8\x92\xf2\x1c\xd5\x07\xbb\xbb\x8f\xec\x28\xc6\xf2\x6e\xa0\x47\x5f\x71\x2e\xfb\x91\x1b\xc7\xfb\xc5\x8a\x83\x5d\xa4\xba\x57\x1f\x5e\xfe\xfe\xee\xf5\xfb\xf3\xcb\x8f\x1f\xce\xde\x9c\xbf\xf9\xf0\xfe\xf2\xe5\x87\xf7\xe7\xcf\xdf\xbc\x3f\x0b\x78\x4b\xae\xb9\x9c\x55\xec\x88\x2d\xad\x8f\xfe\x76\xf6\xe1\xfd\xc7\xa2\x5a\x0f\xa3\xb7\xb4\xfc\xfb\x1a\xcf\xc3\xe5\x77\x7a\xf5\x1b\x7d\xaf\x5b\xbf\xed\x5a\xfb\x16\x55\xc7\xc5\xe6\x52\x7c\x99\x02\x53\x2e\x7a\x4d\x75\x2f\x82\x94\xd0\x5e\xb8\xe1\x3e\x4c\xf9\xed\x0c\xb7\xb2\x73\x18\xb3\x49\x15\x0f\xc8\x6a\x00\x13\xf5\x98\x75\x72\x3a\x26\x49\x4c\x85\x52\x90\xa5\x96\xae\xea\xb3\x81\x75\xa1\xc3\xbc\x27\x2f\xca\x07\xfa\xc5\x52\x7f\xe3\x04\xcb\x03\x97\xc1\xbb\x79\xb4\x7a\xc7\x6a\x48\x54\x0d\xfa\xe1\xe5\x52\xc5\xea\x2e\x17\x9c\x79\xf9\x71\x00\x9e\x4f\x71\xad\x98\xee\x44\xd1\xd0\x87\x81\x2d\x60\xf1\x0c\x72\x67\x42\x77\x48\x1f\x15\x3a\x5f\x3c\xa0\x16\x49\xb3\x2b\xfe\x3e\x63\xbe\xee\x84\x80\x1f\x3c\xc0\x69\x98\x4f\xde\x26\x79\xc8\xd6\x7a\xf2\xd3\xbb\x75\x8e\x9c\xc0\x28\xa1\xa5\x9c\xda\x90\xd0\x85\xde\x9a\x5a\x8e\xe7\xfb\x97\x66\xce\x4a\xe4\x49\xfb\x3c\x34\xf0\x10\x52\x97\x24\x90\xa5\xba\x1a\x84\x27\xda\x94\x94\xf4\x0a\x39\x43\x34\x30\xa3\x5b\x36\x77\xa0\x0a\xdd\x20\x26\x52\x26\x1d\x69\x8a\xf1\x44\x0a\x17\x09\xe3\xee\xb7\x2b\x54\xd1\x39\xc4\xc2\x82\xa3\x34\x2a\xaa\x1f\xdc\x96\x21\x41\xa7\xb5\xfc\xa8\x56\xef\x39\xda\x8b\x0c\xac\xad\x88\xa6\xd9\x28\xd6\x3a\xa0\xdd\x87\x22\x3e\x23\x11\xfd\x60\xe9\x27\x91\xca\xdd\xa5\x80\x9a\xbd\xe5\x87\x79\x9a\xbb\x21\xcb\x1d\x1e\xb4\x08\x9d\x70\x45\xc2\xf7\x58\x13\x42\xa6\xae\x46\x9d\x0e\x4e\xae\x93\xc1\x2d\x13\x13\xc4\xfb\xc6\x3c\xa8\x1d\x77\x5d\x12\x62\x66\xb2\x75\x2e\xc4\xc8\x58\x00\xbc\x16\x16\x51\xf2\x91\x7a\x2d\xc6\x65\x32\x45\xf0\xb5\xb9\x47\x4a\x1c\x5e\x2d\x9f\x57\x10\xd8\x92\x27\x93\xe3\xa8\x41\xea\x34\xa7\xd2\x12\x1f\x76\xbc\xe4\x3c\x9e\x31\xb8\xf1\x56\x87\x50\x13\x40\x41\xbe\xd1\x2e\x1d\x2c\x75\x66\x40\x09\x41\xeb\x21\xf2\x46\x1e\x62\x69\x9b\x4b\xba\x10\x2e\x3f\x59\x90\x07\xc4\x9a\xe5\x39\x21\x03\xeb\xeb\x2b\xdd\xf0\x5c\xb1\xdf\x9f\x74\x04\x7f\x92\xe7\x48\xd4\xc8\xb1\xbf\x44\x5d\x3b\xda\x95\x86\x37\xe9\xb0\x29\x7d\xff\x84\x37\xf1\xbc\x29\x9d\x07\x91\xfe\x70\xd2\xbc\x50\xe9\x32\xad\x1d\x22\x2c\xd7\xf1\x2f\x3c\xe6\x90\xd2\xf6\x74\xc2\x72\x3e\x8d\x54\xa8\x26\x1d\xdb\x88\xbb\x1a\x68\x88\x34\x7f\xc7\x1a\xa5\xe7\xb2\x93\xe3\x79\xa4\x83\x6c\x99\x47\xeb\x1b\xba\x06\xd4\xd4\xa2\x01\x91\x89\xcc\xd2\x81\x86\x38\x79\xcf\x55\xb9\xba\x51\xae\x5e\x2c\x07\xf8\xc9\x72\xb8\x46\x98\xe4\xb4\xd5\x93\xff\x08\x33\x2c\x60\x64\xc7\xc4\xf3\x40\xb8\x86\x55\x23\x0b\x87\x28\xba\xfb\x35\xed\x2a\x0c\xdd\x51\x2b\x1c\x9f\x7d\x37\x2d\x52\x6f\x44\x45\xea\xf2\xb2\x11\x6e\xdb\x42\x8f\xb2\x78\x9b\x06\x68\x1d\x08\x46\x9e\x5e\xa8\x9c\x58\xad\xcf\x1b\xcf\x3d\x45\xa1\x38\xf0\xc5\xf1\x25\xed\xdc\x52\xd2\x80\x72\x7c\x95\x17\xf3\xb3\x71\x35\xf3\xd7\xdb\xca\xf7\x58\xbe\x45\xd3\xf9\x14\x62\xac\x20\x1b\x9e\x99\x13\x46\x51\x80\x83\xff\x70\x5f\xe4\x22\xcb\xfd\x19\x6d\xf5\x23\x93\x67\xd2\xe4\x6e\x2d\xc3\x15\x99\xee\xcf\x78\xe5\xc5\x53\xd1\x03\x64\x05\xb1\xb9\x2a\xe9\x5b\x79\x9c\xf4\x13\x26\x45\x76\x93\x9d\x69\xb6\x13\x0f\x05\x25\x7a\xea\x4e\x2b\x8e\x05\xdb\x65\xa9\xc0\xe4\xfb\xab\xa1\xdb\xce\xe0\xd4\x79\xb8\x13\x83\x03\xfd\x9d\xac\x4f\x91\x13\x53\x89\xe6\x10\xe8\xb7\xbc\xf9\x4c\xd0\xb4\x05\xe6\xd9\x85\xfa\x6e\x37\xb5\xe6\x50\xfe\x1e\xd9\xd4\x4c\xa2\x25\xbf\x19\x7d\x7c\x18\xd2\xa5\x69\x78\x57\xed\x6a\x9c\x32\x91\x84\x34\x6b\x4d\xc9\x64\xc2\xfe\x98\x51\xc1\x79\x36\x3a\xbf\x66\x7d\x31\x84\x5d\xd5\x3e\xc5\xfd\x16\x0f\x7b\x83\x44\x45\xc3\xfb\x5b\x10\x4f\x00\xe0\xa5\x7f\xf8\xe7\x51\xe4\x07\x46\x46\xe9\x74\xd1\xac\xc3\x32\x90\xde\xcc\x6e\x7e\x81\x58\xbc\xe7\xdb\xac\xf1\x8b\xda\x9f\xe0\xc2\x5d\xb3\xda\xc8\xf5\x8b\xbd\x18\xa9\xdf\xee\xc5\x08\x7e\x18\x26\x1a\xa4\x27\x99\x4d\xad\xea\xad\x8a\xf8\x4d\x10\x33\x87\x42\x3a\x60\xdc\x62\xfc\x0d\x76\x26\xda\xe5\x10\x82\xd7\xcd\x86\xfd\xf4\x6a\x36\x76\x2c\xdc\x25\xeb\xf9\x88\xe8\x03\x23\x24\xa5\xdd\x29\xff\x37\xf8\xf9\xcb\x38\xbb\xf9\x95\x18\x20\xa8\x24\x64\xbe\x6b\xed\x46\x2e\x7d\x17\x73\x3a\xa0\xf0\x6e\xb1\x4a\xe8\x8a\x13\x60\x44\xe8\x97\x9d\x37\xa7\x20\x5f\xc8\x86\xfa\x9a\xa3\x22\x79\xc9\xdd\x10\x3a\x54\x8b\x8c\x3b\xdc\x56\x65\x7a\xac\xec\x73\xba\x3a\xa9\x35\xd5\xbc\xbf\x6d\x81\xd0\xef\xbd\x6e\x24\x82\xd6\x16\xcd\xf8\x4e\x1e\x19\x6a\x1d\x58\x0a\xa2\x48\x31\x05\x30\xdd\x22\x10\x6d\xbf\x4f\xa9\x91\xf6\xad\xde\x93\x71\x00\xdf\x66\xe1\x27\x7d\xa6\xc6\xa8\xd1\x6b\xb8\xd1\x8b\x0e\x2b\x0f\xb3\x45\x17\xdf\xda\xd1\xb7\x9d\x74\x88\x17\x22\x9f\xc1\x1f\x16\xd3\xc4\x18\x2d\xd7\x33\xb3\x44\xd3\xa8\x83\x45\x68\x27\xb4\xfc\xf6\x3d\x87\xb8\x5a\x89\x4b\xf7\x3c\x42\xdd\x8b\x33\x69\xdd\x40\x8a\x93\xa1\x8b\xf4\xd4\xee\xc4\x39\x2b\x78\xf9\x6b\xfb\x32\xf9\x3a\xc2\x33\x26\xb8\x7e\x0d\xdd\x00\x96\x1b\x6c\xc0\xe1\x8a\x9f\x52\xb8\xa9\xbc\x06\xc5\x00\xfc\x44\x43\x49\xd8\x74\xe8\x75\x15\xd8\xf3\xe3\x06\x0a\x41\x5a\x87\xe8\x5d\x54\x2c\x6b\xb1\x71\x56\x9c\xd7\x6f\x3b\xd6\x30\x7c\x6a\x08\x77\x1a\x6a\x33\x79\x7b\xc5\x55\x33\xb7\x57\xbc\x4b\x28\x4f\x65\x8b\x1a\x79\x39\xf2\x4b\x41\xb2\xe4\x16\xa5\x44\xbd\xb4\x4c\x4a\x2f\x0e\x02\x10\x8a\xa3\x41\x21\x97\x70\xe9\x20\xf1\xa4\x7c\xb9\x70\xd5\xbb\x59\xe5\x24\x20\x6a\x1e\x51\xf4\x55\xdb\xb8\x9b\x0d\x15\x4b\x45\x1f\x6e\x86\x2e\x49\x82\xbb\x1c\x09\xb1\x09\x45\x54\xff\x02\xa4\x3f\xf1\x8e\xd0\x26\xd2\xda\x48\x01\x3a\x94\x7f\x3c\x9c\x12\x28\xcb\x6c\x0c\xaa\x7b\x5c\xb0\xa3\x8b\x5a\x58\x80\x4d\xea\x32\xdc\x81\xd2\x0a\xa5\x48\x1c\x95\xfe\x21\x5e\x80\xd1\x8e\xca\x9f\x83\x43\x14\xc9\x83\xf0\x9e\x6e\xcf\x5f\xe6\x21\x65\xe7\x38\x91\x2c\xcf\xe7\x05\xee\x74\xcc\x79\xa1\x4c\x65\xa5\x29\xbb\xba\x13\xcd\xb6\xf8\x1c\x98\xbc\xe3\x88\x6a\x19\xbb\x52\x89\x4e\x28\x35\x26\xd8\x3c\xf3\xf8\x70\x8d\x8a\x2a\x30\x27\x04\x17\xa7\x74\x74\xb1\x8b\x84\x0a\x86\x23\xc5\x8f\x71\x05\x6e\x4d\xf1\x91\x07\xda\x96\xc8\xf1\xe8\x8a\x44\x97\xdb\xb7\x4b\xe6\x42\xaf\x5b\x21\x5b\x6b\xf1\x3a\x5c\x1a\x04\xfd\xaa\xa8\xb8\xbd\xa7\x1c\xd8\xa8\x92\x0e\xf1\x80\x58\x31\xbf\xb9\xa7\x2d\xd6\x2d\xa7\x14\xb0\x87\xa0\xd7\x13\x17\x21\x63\x2f\xd4\x26\x8a\x79\x21\x42\x75\xd0\x4b\xba\xd9\x95\x8c\xb7\x99\x87\x6c\xb0\xd6\xcf\xc3\xcb\xae\x00\x27\x66\xa4\xc6\x78\x03\xe5\x64\x83\x1e\xcb\xba\xb9\x61\xcd\x71\xf8\xda\x58\xd3\x62\x60\x33\xe1\x8e\x23\x9f\x3e\x75\x21\x53\xe0\xb5\xcc\xf6\x55\x13\xb8\xa1\xe6\x2b\x4f\x4b\x48\x79\x52\xc9\xea\x6d\xdb\x2e\xd2\xbe\x0a\x3e\xb8\x77\x97\x74\xbe\xa5\x8c\x95\x58\x0e\x38\xb4\x06\xaa\xbc\x37\xd9\xbf\xb6\xcc\x38\xd9\x2a\xdf\xda\x3c\x78\x7b\x4e\xb1\x93\xa0\xd0\x1d\x73\xf0\x47\x2d\x3d\x93\xe0\xd8\xdc\xc4\x13\xd6\x47\xbf\x5a\xba\x84\x89\xf0\x32\x4d\x5b\xe9\x4d\x86\xa3\x2e\xde\x26\xcc\x45\xb5\x0a\x0c\x9d\x02\xf7\x8b\x4d\x3c\xf2\x1f\xb8\x9d\x8f\x2e\xf4\xcc\xba\x82\xc5\x19\x1f\xcf\xdb\x45\x46\x0b\xfa\x02\x03\x28\xaa\x94\x94\xee\xe7\x59\xad\x59\x30\x4c\x3d\xd3\x8d\x4c\xec\xc2\x81\x5a\xaa\xad\x7a\x9e\xd6\x02\x67\xf5\x35\x07\x56\x75\x1b\xab\xba\x89\x55\xa1\xff\x9a\x1b\x51\xe3\xfa\x13\x57\x5d\x7b\x4e\x74\x75\xd6\x52\xd8\x4c\x0a\xa9\xce\x42\xda\xd9\xf0\xd5\xaa\x16\x54\xd6\x42\xcb\xa5\xf0\x60\x4f\x41\x72\x74\xb6\xdd\x14\xb4\x26\x9e\xe1\x53\xca\x58\xd6\x49\x12\xb1\xc4\x99\xc2\xc2\x6d\xe6\x12\xca\x01\x2f\xf4\xe2\xce\x24\x1b\xc0\xd3\xdf\x6a\x9a\x65\x23\x2f\xac\x99\x6e\x93\x5e\xa5\x37\x37\xda\xc6\x96\xc7\x62\x9b\xad\xb8\x5f\x69\xeb\x3c\xb1\xa2\x89\xaf\xd9\xb1\xef\xd2\x5e\x6f\xa0\x43\xb8\x82\x73\xee\xf1\x3b\x38\xe3\xe6\xda\x7e\x70\x81\x61\xe0\xb0\x56\x47\x88\x22\x9b\x62\xe0\x60\x30\x5f\xed\x51\x39\x5b\x66\x12\xea\x12\x7b\x90\xa0\x8c\x74\xc1\xd3\x4f\x07\xf0\xc8\xff\xdd\x75\x8a\x3d\xa4\x22\xf7\x32\xd2\x4d\xb0\xc4\x5a\xf5\xd8\x4c\x1a\xcf\x06\xf0\xb0\x16\xa8\x9c\xb3\x5e\x4f\x1f\x71\x81\x0a\x8d\x2d\x99\xf6\xb1\xea\xc0\x36\x0e\x7e\xe1\xd0\xec\x9d\x8b\xdb\x17\x56\x85\x4d\x4b\x82\x04\x77\x2d\x72\xea\xf3\x4b\xa6\xde\x5a\xa9\x24\x25\x19\x85\xf7\xca\x4b\xff\x6b\xc7\x44\x5b\x3e\x10\xe2\x9a\x37\xe1\xa6\x46\x05\xf7\x68\xd5\x6f\xb2\xb6\x74\xe8\x64\x02\x5b\xec\x04\x8a\x6c\x7b\x63\xa1\x60\xdb\x8e\xfb\xed\xfb\x7b\x43\xf5\xb2\x72\x87\x4f\x34\xd6\xf3\x42\x48\x53\x13\x03\x81\xde\x7b\x5a\x60\xad\x0f\x9a\x14\x93\xe9\x38\xfb\x96\x14\xa6\x05\x45\xef\x71\x0e\xe4\xd5\x91\xe1\x18\x49\xb0\x76\x82\x2f\x2f\xf0\xef\x08\x4b\x90\x35\xcd\x0a\x7d\xc2\xf5\x6b\xae\x59\x57\xc8\xcb\x75\x85\x5b\x4e\x44\x6a\xfc\x56\xd3\xd0\x1c\x38\x46\xa4\x35\xcf\x18\xe7\x87\xd2\x9f\x1a\xe1\xff\xb0\xe8\xfe\xba\x48\x4c\x2e\x54\x74\x0a\xd1\xd1\x76\x12\xdc\x66\xda\xbe\xe7\xf4\x7b\x58\xb3\xef\x35\x83\x1e\xd8\x90\x7b\xcc\x1c\xb1\x58\xd9\x93\x87\xeb\x7f\xcb\x27\x0f\xcf\x60\x4f\x1f\x1e\xbd\xdd\xf4\xd1\x1b\xa2\x2b\x9c\x35\x32\x15\xd5\x38\x08\xf5\xa2\x7a\x10\x56\x8f\xda\x0e\x33\x10\x98\x08\x70\x3e\x5f\x60\xcd\x24\xf6\x3d\xa8\x53\x1f\x0b\xa8\x48\x25\x05\x68\x3a\xdd\x3e\xae\xee\x9b\xa4\xbd\x21\xf7\x71\x50\x5c\x44\xca\x30\xdd\x66\x62\xf9\xf5\x8a\x40\xf6\x4f\xc1\xd6\xb4\xd9\x13\x23\x5e\x42\x60\x5c\xec\xb1\xe9\x0b\x4c\x18\x29\xc9\x49\x62\xd2\xcc\xf1\xf2\x1a\x33\xd9\x64\xa6\x8a\x17\x28\x0d\x8a\x7a\xae\x57\x00\xd6\xcd\x18\x21\xf9\xb1\xbe\x9e\xe0\xd3\xa0\xc9\xdd\xde\x38\x99\xa4\xff\xd2\xa4\x42\x5b\xe8\xd1\xb9\xa9\x8e\x2a\x27\x55\x0d\x45\xc2\x65\x2e\xf0\x30\x29\xcf\xe9\x33\xd5\xe8\x73\xcd\x6a\x78\x53\x97\x61\xa6\x92\x3e\xd3\x00\xfc\x35\x3a\xcd\x40\x96\xf7\x9a\x8e\xe4\x9a\x6e\xdb\x86\xd1\x6e\xee\x57\x49\xa4\x24\x85\xdb\x34\x7a\x83\xb1\x9b\xba\x9c\x72\x95\xf4\xb9\x0e\xa2\xac\xd3\xed\x5e\x44\x23\xdc\xad\x3a\xd0\xac\x9a\xf7\xa0\x51\xa5\x31\xa0\x52\x1e\xab\x39\x7b\xd4\xb9\x6d\x94\x0e\x47\x4b\xa8\xf7\x87\x0d\x43\x61\xdf\x53\x26\xce\x95\x68\xad\x48\x5f\x31\x8e\xaf\xa2\x25\xdd\x1e\x6e\xc2\x10\x84\xe4\x5f\x81\x7f\x66\x23\xfa\x82\xa9\xd9\x44\x1b\xdd\x10\xe9\x4d\x7d\x83\x93\x41\xbc\xe2\x6f\xd9\xeb\x08\x5c\x76\xb2\xe1\x3b\x61\x28\x0d\x77\x2b\x67\x37\x42\x4b\x0b\x55\x57\xa1\x0a\x52\xba\x5e\x82\xef\x1e\xb4\x23\xff\x0c\x47\x27\xd8\x24\x9f\xa1\x4e\x56\x38\x90\x39\x30\x6e\x5a\x9e\x8f\xe3\xdb\x04\x3c\x0c\x48\x38\x7b\xfc\x0b\xde\xff\xc3\xab\x47\xd0\xb9\xcf\xfb\xac\x93\x5e\x41\x2b\xb1\x16\x8c\x23\x97\x34\xaf\x30\x37\xde\xd9\xad\x71\xdd\x8e\xbd\x2d\x8f\xd6\x6e\xda\xd1\x0c\x07\x80\x60\x37\x04\xcb\x92\xe2\x56\x95\x40\x37\xce\x78\x32\xd7\x40\x80\x64\xd0\x6e\xe2\x0f\x9a\x12\x49\x8f\x85\xa4\x8a\xdd\x2d\x6c\x37\x9e\x6b\xf8\x5d\x17\xe1\xd5\xdb\xea\x22\x70\x21\xa9\x08\xaf\xa0\x6a\x26\xf3\x4a\x9d\xba\xa9\xd1\x05\x58\x7b\x05\x6c\xa1\xe7\x0a\x05\x9f\x46\x0e\x25\xcb\xa6\x1e\x29\x56\x56\xd4\xad\x6c\xec\x86\x62\x6f\x3a\x81\x14\xb2\x3d\x8d\x6a\x0e\x70\x7b\x45\x78\xad\x22\xe2\x35\x07\xc4\x7a\xfb\xe7\xa8\xd8\xcd\xc5\x56\x17\x6a\x10\x24\x65\x6c\xb9\x8b\xed\x2c\xe4\xc9\x73\xfd\x70\xa3\x20\x16\x92\x9e\x7f\xb9\x59\xaf\xa9\xf9\xc4\xf4\x4d\x17\x99\xef\x67\x37\x9d\x64\xac\x6b\x3e\x0b\x48\x48\xcd\x67\xd1\x8e\x2a\xe0\x27\x8c\xa0\xbf\x53\x13\xf9\x42\x43\xa6\x38\x28\x41\xb8\x26\x19\xfd\xba\x7e\x9f\x35\x9b\x85\x0d\x6c\xcc\xed\x28\x56\x0b\x1d\x58\x16\x87\x3d\x02\x92\x29\x82\x30\x6d\xf4\x8a\x23\x17\xb9\xe8\xa2\x58\xad\x06\xa6\x68\x26\x56\xac\xd5\x61\x93\x58\x84\x69\x59\x26\xe6\x41\x6e\xb3\x76\x56\x00\x96\x1c\x9c\x63\xb4\x92\x44\x82\x6f\xf3\x70\x4b\x71\xe6\xed\x99\xbd\x8b\x49\x72\x86\xac\xb1\x0e\xce\xc1\x83\x96\xac\xd2\xf4\xeb\xf3\xac\x24\xde\x0f\x9a\x32\x85\x0c\x38\xe9\x7e\x2a\xdd\x2d\x56\x4b\xa6\x38\x94\x0b\xaa\x8c\x28\xd4\x9d\x9f\x0d\x67\xad\xa1\xb6\xea\x05\xeb\xa1\xcd\x46\x5b\xc2\x9a\x8d\xca\x21\x4d\xb3\x59\xf7\xfa\x87\xe1\x85\xd0\xc0\x5d\xd1\x0f\x42\xac\x0b\x0b\xc9\x60\x7b\x68\x4e\x0a\x7b\x2b\x77\x07\x0e\x31\x02\xaf\x04\xa3\xbd\x92\x41\x93\x4e\x40\x9f\x94\xc0\xec\x80\x34\xa6\x93\xf0\xed\x40\xbd\xd3\x24\xc7\xb5\x58\xd9\xa0\x95\xd8\xb0\x4d\x55\xb3\x91\x05\xfc\x7b\xa9\x93\x1e\xea\xf8\x4e\xb2\x5c\x0f\x64\x6b\x8a\xdc\x02\xcc\x16\xa4\xb8\x05\x94\xed\xa8\x90\x03\xa2\xe3\x67\x17\x0b\x6a\xa9\xa1\xe5\xbc\x42\x8d\xad\x19\x91\x0a\xef\x57\xd2\xca\x92\x70\x73\xed\xd5\x65\xbf\x03\x09\xc8\xb9\x60\xd2\xbd\xf6\x22\xaa\x0e\xc8\xda\xc1\x96\x43\xd2\x08\xbf\x04\x94\xbd\x33\x2b\x87\xa5\x53\x7e\x09\xb0\x62\x03\x71\x18\x70\x15\xf8\xee\x16\x96\x80\x7a\x58\x13\x4b\x80\x19\x6d\x64\x5b\x2e\xc7\x9a\x65\x5f\x16\xc0\x95\x6b\x39\xb9\x4b\xc1\xfb\x12\x5f\x01\x17\xa3\x04\x84\x88\x49\xa2\xd7\xd3\x54\x11\xb8\x7b\x6d\xe2\xb9\x3f\x04\xe1\x72\x5c\x44\x45\xbb\xd7\x40\xa2\xbd\x73\x9c\x03\x74\xf7\x1f\xb3\x90\xb7\x2c\xe1\x99\x07\xa3\x84\x97\x1a\x15\x78\x2a\xa1\x09\xab\x15\x95\x06\x9e\x18\xe1\x28\x54\xe4\xb8\x50\x49\x6d\xb1\x84\x47\x91\xb6\xa0\x07\x4b\xaa\xd8\x59\x42\xb8\x58\xe4\xd7\x68\x30\xe5\x11\xf7\x3e\x86\x01\xb6\xff\xc6\x6e\x53\xc6\xbe\x2d\x6e\xa1\xd7\x14\x17\x72\xa9\xbd\x94\x6d\x5b\x27\xf4\x9f\xb8\x31\x8b\xc3\x20\x5c\xd8\xe6\xfc\xc8\x07\xc1\xa6\xc9\x70\x22\x1f\x03\xe3\x01\x6e\x19\xca\x43\x4e\x8b\xd0\x9c\x9b\xe4\x7c\x64\x7b\xad\x5f\xe2\xee\x34\x1b\x2f\xf4\x8d\xba\x48\x3e\x43\x0d\xaf\x33\x83\xb0\x66\xd4\x63\xa9\xdf\x96\xbc\xe2\x66\xf5\x24\x24\x15\x31\x9d\x85\x37\x42\xdd\xd1\x7a\x38\x8a\x7b\x70\x4b\xbb\xb9\x84\xfd\x7c\xb5\x56\xe7\x7b\xf8\x5a\x48\x8f\x04\x62\x14\xee\xf0\x6b\x39\x07\xc3\xf7\xf7\xa0\x4a\xe1\xdb\xfb\x9c\x8b\xd5\x0a\x09\x10\xd4\xc5\x6b\x51\xd2\x03\x17\x3a\x47\x32\x1e\x42\xd2\x12\x8b\xf1\x10\xcb\x0d\x2b\x50\x46\xad\xbc\x61\x7d\xc7\x06\x67\xc1\xa3\x98\x44\xba\x67\x44\x2d\x8a\xb9\x16\x66\x2e\xad\xbe\x72\x3f\x62\x65\xf7\x21\x7b\xb4\xe3\x04\x9f\x27\xb6\xcb\x93\x45\xc4\xa2\x2b\xec\xff\x1a\x48\xf6\x8b\xa7\x80\x49\x80\xe8\xa0\xa7\xcb\xc5\xcf\x80\x47\x80\xc8\x2c\xf8\x05\x4d\xc3\xb3\xa2\xf6\xfc\x16\xf7\x97\x0c\x5e\xc2\x9e\x42\xb3\x03\x6c\xbb\x16\xab\x65\xb2\x1c\x30\x83\x93\x2c\xbc\x30\x83\x7d\x53\x9a\x87\x21\x00\x30\xf7\x22\x1f\xf2\xed\x61\x25\x64\x5d\xca\x69\x01\xb9\x73\x0b\x12\x2b\xe5\x79\x90\x4c\x5a\xd8\x46\x6d\xe0\x6e\xe0\xca\x49\xe4\xc1\xb3\x4d\xde\x33\x48\x6c\x9a\x89\xf0\x62\x28\x76\x83\x1e\x0d\xd7\x4e\x34\xf3\x0d\x48\x6f\x9a\xe9\x2d\xd3\x13\xaf\x5e\xcb\x6a\x05\xd5\x3c\x65\x3b\xa7\x05\x35\x0a\x8a\xef\x2d\x8a\x08\x13\x3d\xe7\x16\x24\xb3\x6e\x00\x82\xad\x2e\x03\xc2\x26\x09\x67\x65\xcb\x79\xf3\x02\xcd\x69\xd0\x76\x26\x5c\x34\x2f\x20\x7b\x08\x05\xdb\xa5\x7e\x7a\xcc\x47\xd8\x4a\x2f\x1e\xf1\xeb\x97\xf4\x02\x0c\x7e\xaf\x56\xfa\xe5\x5f\xba\x90\x94\xf2\x1c\xec\x43\x24\xdf\xc2\x73\x17\x69\xe9\xf3\x49\xd2\xd5\x5b\x74\x3f\x5f\xc6\x65\x77\x8d\x69\x9e\xe6\xea\x20\x09\x2e\xf9\x4f\x22\x0b\x03\x3c\xe0\xe2\x27\x56\xa8\xce\x45\xe6\xe0\x32\x66\x69\xf2\x5c\x52\x25\x8b\x61\x6e\xb8\x22\x4f\x44\x48\x77\x6c\xf3\x4d\x5f\xb3\x2d\x22\x3e\x25\xf8\x0f\x7c\x97\x23\xc6\x4f\xcf\xee\x8d\x9a\x3c\x75\x2b\x45\xce\xe0\xda\x0c\xbd\x5c\xf8\x41\x2e\xbd\x70\xcd\x19\x90\xe3\x36\xb4\xe5\xa1\x3d\xc6\x97\xf3\x78\x7f\xc3\x6b\x85\xe4\x22\x59\x6f\xbc\xf0\xf9\x83\xa1\x48\xeb\x05\x9e\x9d\x2c\x64\x50\x2d\x4e\x1e\xc7\x45\xf5\xe0\x8b\x59\x98\x21\x87\x7a\x06\xf7\x95\x6f\x58\x06\xb8\x83\x20\xf6\xf5\x4c\xbf\xf5\xdc\xa4\x1b\xc1\x2d\x35\x0c\x91\x86\xa1\x33\xab\xd6\x40\xeb\xa9\x28\x3a\xd2\x87\xbf\xc1\x9a\x5c\x62\x54\x78\x27\x6c\xcc\xb9\xa7\x9f\xce\x68\xab\x64\xd0\xda\x70\xc5\x5c\x03\xbc\xf1\xa6\xb9\x03\x14\x77\x9e\x26\x08\xb5\x00\x97\x27\x6c\x82\xbc\xe6\xf6\x86\xc9\x6a\xd6\xdc\xb5\x60\x94\xe9\xb8\x6d\x91\x2c\xb4\x5b\x6f\xd6\x23\x1d\x90\x48\xd2\xd0\x05\xfb\x6c\x47\xf2\x4b\x5f\xc3\xf5\x08\x55\x15\xc6\xb6\x94\xd7\x17\xdd\x17\x8e\x95\x8b\x31\xf8\xac\xf3\x15\x0f\x75\x96\x6b\xd1\xc7\xdc\xe5\x37\x46\x30\x19\xee\x8b\xd0\x2d\x11\x0a\xe8\x4f\x13\x3e\xd3\x13\x9a\x7a\x91\x47\xb6\x55\xa1\x91\xcb\x46\x41\x5d\x28\x51\xcf\x6f\x51\x4b\x64\x05\xee\x6a\x55\x9d\xee\x0a\x9b\x56\xaf\x16\x72\x69\x69\x4e\xcc\xe4\xb5\x02\x7c\x1c\x54\x93\x05\xd5\x8c\xd6\x48\x1f\xf9\x8f\x0a\x3f\x32\xd6\x47\x7b\xa2\x44\xda\x77\x8e\xf0\xcf\xb9\xd8\x29\x61\x73\x39\x94\x76\x15\xf4\xed\x80\x29\x24\x68\xfe\x7b\x5f\x39\xbf\x0a\x4e\x29\xca\x85\x7d\x4c\xde\xce\xfd\x8b\x28\x12\x2e\xd1\x53\x24\x79\xa8\x70\xc8\xd9\xf4\x34\x96\x5c\x0c\x6d\xa3\x7e\xfe\x72\x56\x10\x2e\x0d\x71\x5b\x49\xcd\x42\x9a\xa6\xd7\x2d\x37\xec\x04\x4a\x45\x85\x3e\xe5\x15\x4f\x49\x02\xb2\x6c\xe1\x9a\x1b\x52\x2b\xc7\x50\xba\x74\xac\xc2\x95\xea\xea\xa2\x3c\xcf\x02\xa4\x5c\xc8\xa3\xeb\xee\x35\xa9\x49\x45\xc3\xb8\x8a\xa1\xf3\xf5\x71\x0c\x5a\x1c\xb3\xaa\x7c\x00\xd4\x8a\x70\x55\xcf\xaa\xe5\x9b\x43\xe5\x8f\x89\x17\xbb\x2f\x3d\x9c\x41\x9f\xaf\x21\x08\x4c\x7f\x18\x45\xe0\x70\x7e\x17\x49\x20\x15\x20\x3d\x18\x5b\x2a\x41\x29\xb4\xab\xfa\x51\x34\x11\xb3\x46\x6d\x4b\x13\xb5\x0d\x44\x51\xc3\x5c\xf5\x0d\xb9\x2a\x22\xe7\xff\xc5\xf4\xf3\x22\x5e\xa3\x3b\x80\xd4\x87\xd1\x4e\x87\x81\x5d\x43\x39\x28\xa0\x8b\x0b\xd2\xe5\xf4\x73\x15\x8f\xf0\x8d\xe7\x6a\xed\xd0\x26\x1a\xa1\x9e\x94\x17\x52\x85\xfe\x41\x74\x11\x8f\xcf\x9d\x9e\x9e\x8c\x97\x2d\x4d\x11\x82\xc6\x8f\x2a\xe6\xfa\x0f\x0a\x88\x55\x9f\x42\x2d\xf3\x85\x49\x5b\x31\x60\x34\x94\x5c\x24\x88\x66\xf1\x73\x79\xf0\xbb\x35\x9c\xbe\x01\x12\xb9\x8d\xb9\x68\x79\x69\x47\xfb\x6e\x25\x82\x72\xb3\x2d\x1c\x96\x82\x17\x45\x7c\x3b\x71\x0e\x07\xd7\x11\x1d\x39\xfa\x36\x38\xb6\xc3\xb9\x62\xbd\x31\xeb\x29\x87\x2f\x54\x2c\x0f\xd9\x80\xd9\x6b\xa5\x2e\xfd\x6e\x89\xae\x14\xeb\x62\xf1\xf6\xb0\x80\xab\xef\x84\xe7\x0a\x8f\x75\x28\x3e\xf6\xeb\x7b\x7a\x97\x4b\x9c\x05\xcc\xbf\xf2\xf6\xd3\x6c\xb7\x08\xf9\x96\x97\x77\x74\x7e\xc1\xb3\x7f\xfe\x80\x5e\xe4\x85\x43\x42\xcc\x41\x3b\x92\x97\xd9\x6c\x38\xbd\xe7\x5e\x56\xbb\xa5\x47\x05\x5f\x18\x08\xf1\xd9\xf4\x4c\x20\xf6\xa4\x50\x5f\x53\x24\xa9\xeb\x58\xf8\xe6\xb1\xce\x8e\xe8\x32\x10\xdb\x6b\xcc\xa3\x8b\x7a\x58\x63\xff\x18\x67\x7a\x5a\x7b\xb6\x57\x6f\xd6\x65\x80\x33\x4c\x6d\xcc\x95\xcb\x72\xb6\xfc\x06\x8f\x1b\xcd\x9a\x90\x95\x3d\x82\xe6\x7b\x15\xfa\xe0\x4f\x18\x87\x5e\x80\x0f\x29\x7f\xc7\x96\x72\xe3\x98\xd0\x38\x0c\xcb\x36\xd0\x62\xe7\xac\x53\x78\x61\x2c\xdc\x1c\xda\xbd\xd1\x36\x8c\xe7\xe6\x9a\x5b\x42\xf7\xaa\x55\x51\x14\x92\x8b\x52\x8b\x35\xa5\x68\x19\xab\x58\x5d\xed\xab\xf1\x09\x72\xcb\x72\xcf\x24\x13\xdb\x02\xab\xbc\xa2\xd2\x81\xcd\xd7\x3e\x3b\xdd\x7a\x0e\x7e\x3a\xaa\xa3\x71\x36\xcd\x60\x7b\x24\x06\x95\x5e\x6b\x1e\xf2\x2d\xbc\xaa\x97\x09\xd6\x43\xe7\x5e\xd9\x7e\x1e\x52\x28\x08\x38\x89\x07\xaa\xe3\x2a\x91\xd9\x46\xb5\xfd\xb7\xb9\x90\x4b\xc3\x9b\xf2\x34\x9c\x1d\x13\x78\x60\xd5\x7c\xf4\xc9\x7c\x08\x40\xbe\xf4\x24\x8a\x45\x9a\xef\x7d\xe5\xbf\xbf\x65\x42\xbd\x10\xc1\x76\x54\x96\x00\xaa\xc5\xb2\xb4\x4a\x25\x77\x72\xeb\x65\x17\x67\x74\x2d\x94\x43\xd5\xac\xdb\x9b\x65\x13\xa6\x63\x9f\x49\x3e\xa0\x0a\xfc\x1a\x41\x3f\xb5\x31\x6a\x83\xc9\x8e\x1b\x8b\x42\x56\x0d\xab\x34\xd7\x3c\x94\xda\x00\xee\x2b\xda\x3c\x67\x92\xca\x1a\xd9\x06\x92\x1f\x26\xdc\x80\xa4\xf9\x43\xb6\x4a\xf6\x09\x83\x21\x26\xff\x77\x13\x8c\xef\x21\x13\xff\xaf\x1f\x2d\x14\x6f\x3a\x60\xfa\x2f\xd8\x77\x7e\x6f\x1f\xfd\xf0\x2e\xfa\xeb\xca\x52\x37\xc9\xf4\x3a\xeb\x99\x82\x8b\x47\x6b\xa9\xd7\xf4\xe8\x89\x45\xef\x4f\x55\xfa\x6f\x14\x0b\x0c\x85\xfa\x05\x21\xdc\xa6\x85\xfe\x8a\x89\x2f\x57\x8c\x0f\x21\x0c\x97\xae\x7d\xb3\xc6\x9f\x67\x41\xb5\x28\xdc\x3d\x25\xc6\x66\x1f\x03\xdc\xab\x02\x5b\x6b\x6f\x55\x81\xda\xa0\x1f\xad\xca\x1f\x4a\xbd\x3c\x3c\x51\x54\xaa\x99\xdf\x52\x2b\xaf\x9d\x2e\xa2\x7a\x9a\x57\x58\xa2\xbb\x16\x06\x10\x55\xea\x3c\xe3\x02\x9d\x21\x41\x14\xba\x75\x13\x40\xea\x2a\xf3\xe2\x2b\x6a\xf9\xed\x8b\x4b\x86\xce\x7b\xb5\x2a\x7b\x47\x9d\xf0\x08\xbd\xce\x00\x35\x3b\x7e\xb5\xde\x38\x0c\xdc\x97\x05\x0b\xea\x7c\xb7\xc7\xd8\xf2\xd3\x01\x3e\xdc\x85\x22\xf7\x56\x4b\x9e\x75\xf1\xcd\x84\x8f\x83\xcc\xf1\xfc\xbd\x2b\xd7\x03\x55\x52\x04\x60\x04\xd5\xfc\x58\x5d\x65\x51\x4b\x55\x62\x31\x00\x5f\xb6\xcd\x00\xfb\x00\x15\x00\x7a\xf0\x69\x1e\xc0\xc2\xbd\x51\xe9\x60\xaa\x0f\xfe\x0b\x79\x2f\x3d\x21\x81\xda\x0e\xd2\xa9\x53\x60\x2d\x53\xfe\xbe\x6d\xd8\xff\xb9\x3d\x16\x3d\xf5\x26\x27\x62\x77\xf3\x36\x4b\xee\x59\xba\x1b\x37\x57\x2a\xef\xd8\x95\x95\xc5\xa6\x0c\xc7\x67\xbd\xea\xb8\xc9\xfb\x34\x2f\x39\x6e\x23\xc6\xbd\xe1\x0c\xec\x4f\xda\x2e\x49\x4f\x4c\xf7\x9b\xef\xef\xd8\xc4\x4b\xd7\xcc\x74\x4c\x7f\xd8\x1c\xbf\x41\xd0\xf7\x9d\x41\x7f\xfe\xc1\x85\xe3\x08\x72\x93\x1a\x91\x7b\x95\x83\xc8\x2d\xf5\x85\x6b\x8c\x83\xa8\x88\xf4\x98\x0e\x3e\xb8\x47\xdc\x63\xfa\x25\x05\xa4\x43\x08\x2c\xea\x53\x24\xdc\xb5\x84\x5f\xd7\xd5\x06\x16\xaf\xbd\x27\x88\xe1\x7b\x3e\xff\xbc\x51\x7a\xda\xf8\x10\x21\x19\xf2\xa1\x93\x56\xa8\x5e\x78\x67\xda\xdd\x35\xc3\xfc\xf6\x04\x5b\x8e\x85\xc3\x59\x47\x2a\x89\x61\xfc\x35\x64\x43\xeb\x4a\x09\xbc\x0b\xc9\x83\x13\x07\x98\x6b\xa6\x57\x6c\x49\x86\x9b\x40\x22\x9b\xd1\x38\x9d\xef\xcc\xe1\xa2\x92\x78\x78\x0e\xcc\x7c\xa0\x60\x3c\xdf\xa6\x60\x5d\x16\x5c\xdc\xa7\xc6\x85\x56\xe3\xe2\x3e\x35\x2e\x78\x8d\x5b\x59\xf3\x70\x3a\xda\x6a\x67\x24\x6e\x82\x23\x15\x32\x82\xd7\x57\x9c\x87\xac\x0c\xf4\x64\x8a\x82\x79\x21\x1d\xf8\xd3\x10\xb7\x09\x17\x36\x01\xbc\xeb\xe9\x74\xd4\x7c\xf2\xe4\xee\xee\xae\x7a\xb7\x5f\xcd\xc6\x57\x4f\x1a\xb5\x5a\xed\x09\xb8\x89\x91\x6b\x9d\xdb\x91\xd8\xfb\x33\x7f\x38\x21\x71\x5c\x2e\x81\x20\x90\xd6\xda\x86\x17\xb2\x5b\xf1\xd6\xb8\x74\x70\x46\xb9\x2f\x45\xb8\x88\x1d\x79\x26\xa2\xf9\xce\x17\x6b\x79\xc0\x71\x61\x1d\x56\x87\x8a\x6c\x55\x9c\xc6\x30\x42\xd5\xd5\xed\x96\x72\x9d\xea\x30\xd4\xb3\x99\x1a\x2f\xdf\x0b\x70\x7f\xc7\x2b\x51\xc6\x98\xc2\xd9\xdb\xda\x7e\x8e\x96\x05\x57\x69\xc2\xa3\xda\x45\x3b\x64\x5d\xd3\x54\x12\xf1\x2d\x2e\x1d\x6b\xc1\x09\x92\xc0\x39\x67\x4a\xf8\x3a\x1f\x63\x5c\xed\x03\x9a\x41\x90\x36\x4a\x07\x59\x66\xb7\x21\x4b\x47\x06\x02\x68\x7a\xc1\x79\x1e\x77\xd5\x06\x7c\x4e\xed\x78\x29\x0d\xb7\x17\xa8\x84\x31\xf8\xe1\x04\x1c\xb7\x6d\xe4\x97\x5c\xe4\x5a\xcf\x31\x39\xc9\x0b\xb6\x69\x92\x7d\x5e\xb4\x52\x33\x79\xa9\x51\x7a\x47\x17\x89\x38\x57\xb5\x38\xa0\x50\x77\xd2\x45\x79\x7c\x3e\x09\x98\x04\x7d\x51\x41\xe1\x50\x5e\x33\x55\x95\x04\xd4\x1d\xb0\x2d\x8b\x4f\xb9\x89\x5b\x6e\x12\xf3\xc4\x4d\x0c\x9e\x8b\x7a\xd3\x06\xa8\x3f\x4c\x8b\xf9\xdb\xe8\xe6\x9c\x8f\xbf\x35\x20\x45\x5f\x90\xfa\x72\xb8\x99\xb3\x3c\xb2\x68\x8f\xbf\xe2\x8d\x4f\x4b\xd3\xf3\x58\x1e\x94\x15\x8f\x79\x2b\x67\xd2\x94\x1d\xde\xe9\xe3\x9e\xa4\xff\x1d\x85\x90\x7f\x97\x49\xf8\xca\xbc\xfe\x82\xca\x26\x95\x85\x7b\x75\x36\x62\xef\xbd\x48\xff\x10\xa2\x33\x0e\xa0\xa2\x82\x35\xf5\x8e\x78\xb7\xc2\xa2\x2e\xf1\xfc\xa5\xf1\xba\x05\x32\x03\xca\xc8\xbe\xf2\x35\x04\x03\xcf\xa1\x13\x7d\x88\x86\xaf\x56\x3c\x06\x3e\x80\xde\xf2\xed\x5f\x03\x32\xac\x5d\x36\x6c\x39\x45\x96\x87\x1b\xc5\xfc\x09\x9b\xcd\x82\x7c\xf9\xe0\xcd\xe6\xbe\x69\xf3\xfe\x3f\x06\x36\x7f\x6d\x45\xe7\x43\x36\xdb\x7f\x1d\xbd\xe6\xc3\x94\x97\xad\xff\x4a\x25\xe2\x9f\xa1\xaa\x98\xff\x3f\xa0\xa7\xb8\xbf\xb6\x01\x9f\x7f\x96\x6f\x3e\x5b\xaa\x07\xe8\xae\x3d\x54\x39\xd8\xda\x56\xb7\x92\x42\xb8\x48\x2b\x24\x5b\xba\xd4\x12\x20\x9b\xb4\xa4\xe6\x73\x3e\xf7\x51\x80\x9c\xdd\x64\xd9\xf4\xda\x75\xdf\x4a\xa4\xfc\xd0\xfb\x56\xe5\xaf\x56\xc4\x57\x57\xe3\xe4\x0a\x19\x27\x79\x24\xa8\x9b\x2f\x1b\xb9\x14\x09\xd5\xeb\x2c\xfb\x46\xab\x2d\x49\xc6\x42\xab\x2a\x1a\x45\x8f\x87\x8b\xf7\x0d\x9b\x87\xb5\xb0\x4f\x86\xb6\xf2\xd8\x3e\xb1\x9e\xef\x73\xbf\x85\xa4\x5c\xa0\x18\xef\xcb\x08\xcd\xba\xf0\xbe\xb2\xb4\x1e\x34\xc2\xab\xa6\x85\x57\x8d\xe0\x29\xa3\x3a\x3e\x61\x54\xaf\xd5\xca\xdf\x27\x22\x8f\x06\xc9\x94\x7c\x1e\x88\x77\x7d\xe8\x49\x1d\xb2\xd8\xc5\x14\xed\x1c\x01\x82\xc4\x00\xe0\xeb\x69\x9d\x8b\x8b\x1e\x06\x77\x98\x1c\x0c\x8f\x88\xd0\x9b\x4a\x3b\x5e\x05\x63\x73\x77\xdf\x63\x9a\xde\xe5\xd2\x53\x40\xa8\xf5\x9c\x6d\x54\x20\xba\xa3\x00\x2e\xaa\x07\x82\x75\xb0\x8c\x64\x0e\xc4\xf3\x70\xb1\x9d\xed\x96\x7a\x6b\x2e\x77\xbd\x92\x46\x0b\xaa\xdc\x99\x4c\x81\xd2\xf4\x92\x9f\xca\x2d\xd4\x33\x54\xe8\xf6\xea\x73\x54\x0b\xd9\xcf\x17\x6e\x8d\x84\xf6\x66\x91\x96\x7d\x32\x22\xa7\x31\xa1\xb3\x05\x8c\xed\x42\xb2\x73\xcb\x0a\xc0\x2b\x11\xe3\x61\x4f\x28\x0f\x37\x54\x82\xca\x20\x7a\x61\x44\xb3\x49\xe9\x6a\x01\xa7\xde\x79\x13\x80\x85\x0b\xf8\xf9\xc2\x46\xd9\xec\x24\xca\xe4\x2a\x6e\xf9\x22\xe3\x7d\x6d\x96\xde\x96\x1f\x64\x6c\x7b\xc3\x9a\xe6\xe0\x07\x3c\xe5\x3b\x1f\xe3\xc4\xde\x47\x50\x51\x9a\xc1\x56\x7e\x28\x9d\x18\xf1\x17\x39\xed\x57\xc2\x28\x37\x5e\xea\x15\xf7\xbc\x75\xbe\x8f\xa4\x41\x93\x85\xde\xea\xe4\xba\xb1\xcd\x1c\x90\x3a\x50\x6f\x29\xc5\x94\xb4\x10\x97\x90\xd0\xc9\xf7\xa0\x46\x26\xf2\x0e\x92\xe9\x34\x09\xe9\x71\x25\xc6\x07\xf9\x47\xc4\x7f\x95\x1a\x95\xe7\x34\x9d\xb4\xa3\xcf\xbf\xea\x47\x4a\xf2\x79\x16\xce\xf7\xa6\xe9\x4d\xf2\x22\x9e\x30\x21\x8b\xee\x5d\x70\x88\x2a\x3e\x8a\x3c\x69\x98\xef\x3d\x43\xb3\xa5\xfe\x20\x63\x1b\x44\x1f\xea\x60\xe3\x9f\x04\xf0\xb6\xef\x79\x0a\x7e\x7a\x9f\xd4\x93\xfd\xa0\x69\xc3\x20\xb3\x38\x16\x50\x36\x91\xc5\xca\x64\x9a\x51\x1f\x83\xd7\x74\xe5\xe2\x8f\x1d\x50\xbd\xca\x04\x54\x0b\xd0\xb3\x67\xac\xf7\x76\x77\x79\x6d\x28\x19\xca\x2b\x24\xbb\xbb\xb4\x70\xa7\x13\xfc\xe5\x1b\xf9\xa5\x9b\x57\xe0\x1b\xe2\xb4\xfa\xb0\xdd\xc7\x1b\x16\xa2\x28\xf5\x38\x03\x8f\x6e\x5a\x45\xd4\x85\x16\x7c\xd7\x1b\x68\xc5\xec\x51\xc1\x49\x05\xd8\x40\xee\xb5\x21\xaf\x97\xd3\x73\xe0\xf8\x4a\x90\xfa\xe4\xf6\xb5\x7c\x24\x29\xce\x97\x15\xf0\xa7\xd4\xb1\xb9\xf2\x6b\xb5\xa2\xf7\x7e\x64\x04\x67\x1b\xe0\x62\x86\x5f\x3d\xa2\x08\x1e\x60\x43\x8a\xd7\xb5\xfd\x00\x5e\xeb\xc6\x8b\x27\xb5\x76\xd5\xdd\x3b\xb0\xed\xe3\x0f\x97\xf7\x74\x96\x03\xf1\xd5\x39\x63\x3a\x35\x5c\x59\x40\xd7\xbc\x53\x82\x82\xab\xb8\x41\x9f\x7b\xbe\x0c\x8a\x11\x06\x3f\xd9\x1c\x38\x75\x07\x94\xa3\xd7\xde\xc5\x7a\x31\xe0\x6f\x53\x6a\x01\xf9\x78\x29\xc6\x41\xf6\x17\x0b\x38\x3b\xd2\xfa\x8f\x8f\x27\xf0\x36\x6b\x22\xce\x85\xa1\x1a\x5c\x9f\xb7\xfa\xc9\x32\x12\xa3\xed\x40\xa1\xaf\xb0\x82\xa5\x7c\x8f\x55\xab\x9f\xaa\x36\x89\x8c\xa4\x0e\xf8\xa3\xa9\x82\xe8\x6a\x9d\x9b\x44\x8b\xbd\x38\x5f\xad\x7c\xc4\xf7\xb1\xa3\x03\xeb\x41\xc5\xe8\x65\xd6\x9d\x64\x6f\x27\xfa\x02\x6c\xe8\xd4\xc9\x57\x28\x5a\x5b\xbc\x5b\xbe\xc3\x49\x84\xc8\x47\xd0\x8a\x19\xe2\xe3\xfd\xcc\x11\x07\x77\xc9\x55\x5f\x34\xad\xee\x32\xad\x07\x35\x62\x25\xdb\x41\x3e\xda\x60\x25\x48\x13\x0c\x4b\xe9\x78\xa5\x6d\x7e\x13\x49\x6b\xbd\x36\x55\x6f\xc5\x8d\x23\x9d\x0f\xa5\xb7\xc0\xcd\x64\x31\xe8\x1e\xed\x06\x93\x56\x82\xd8\x67\x1e\xf6\x66\x37\x23\x7b\x3d\xc2\x49\xb8\x14\xb9\x4c\x92\x0e\xf5\xea\x9a\x05\x04\xb0\x3f\x40\x91\x9c\xaf\x1d\x71\xdc\x7b\x25\x77\x40\x2e\x60\x36\x08\x37\x27\x15\xa3\x08\x91\x7e\xe4\x68\xe2\x8b\xd4\x08\x51\xd1\x49\xc9\x6c\xe6\x20\x4b\x26\x34\x7e\x2c\xf0\x09\x46\xcc\x80\xa8\x52\x36\x5e\x50\x53\x22\xa3\xca\x2a\x1c\x64\x71\xcf\x21\xd6\x61\x71\x83\x6f\x3b\x86\xa2\x90\x29\xd7\x4b\x42\x5f\xda\xc3\x61\x24\xca\xdc\x88\x26\xe7\xf1\x84\xf2\x3a\x4e\xff\x43\xf9\x09\x5f\x27\xf2\x82\x48\x50\xfd\x57\x32\xce\x7e\x81\x2b\xb3\x85\x0d\xb7\x9d\x13\x36\x7c\x42\xa3\x5c\x0b\xf2\x02\xa4\xbe\x03\x0a\xdd\x8f\x45\x2a\x99\x4b\xf5\xc2\x7a\x75\xba\xa6\x00\x21\x6d\x23\x17\x81\xd3\xa7\xc2\xa1\x20\xec\xc8\x07\x0b\x1f\x7d\x3d\x62\x67\x96\x9e\xa9\x09\xd9\x94\x31\xb6\xb9\xf4\x1f\x58\x28\xbe\x46\x21\x00\x53\x37\x28\x85\x8f\x86\xc1\x70\x66\xe7\x26\x65\xf2\xcf\xf0\x08\xb2\xad\x56\x94\xf9\x51\x04\x1e\x91\x84\x50\x9e\x86\xb5\x10\x78\x24\x23\x69\xe8\x27\x92\xec\xe0\xb6\x73\xbe\x8d\x7c\x57\xfd\x25\x9d\x33\x11\x78\x36\x46\x71\xbe\x28\xed\x99\xe9\x9b\xa4\x5b\x2a\xf3\xbd\x52\xa0\x12\x38\xdc\xc2\x95\x43\xf6\xd0\x95\xfe\x06\xc6\x42\xfb\x0f\xb2\x76\x3a\x66\x1f\x3a\x28\x2f\xc8\x8b\x75\x31\xda\x80\x55\xf3\x63\x96\x82\xdd\xf7\xf7\x55\x66\xc0\xf2\xc4\x1a\xff\x97\x94\x6f\x9d\xc2\xa8\xab\xff\x25\x27\xd9\x6e\xa5\x34\x5f\x0d\x91\xba\x50\x2b\x97\xf1\x1e\xca\x1b\x29\x9a\x58\xb9\xd4\x0d\x64\x03\x5e\xcd\x51\xba\x46\x7d\x6d\x0e\xa6\x73\x88\xff\x0f\xca\xd8\x2d\x1b\xf5\x8a\xd0\xe3\xe8\xb8\xb3\xc8\xdc\x94\x1b\xf9\x1b\x2b\x06\xda\x7b\x36\xac\xa0\x28\x1c\xb5\xac\xbb\xe8\x06\x80\x47\x06\xd5\x70\x91\x59\x83\xf7\xb4\x58\x44\x97\x62\xb6\xc0\x08\xee\x45\xfc\xcc\xfe\xdf\xdb\x2b\x12\x41\x59\xcb\xb7\x94\x0c\x67\x43\xba\x09\xc7\x18\x9f\xef\xa7\x7b\x75\x47\xe3\x9d\x92\x61\x2d\x4c\x9b\xa9\x66\x06\xe5\x10\x92\xb9\x95\x8f\x90\x95\x35\x8b\x12\x16\xdc\x7a\x04\xe5\x72\x6b\xf7\xb9\x76\x43\x9c\x96\x24\x1b\xe2\xcf\xae\x7e\x27\x0d\xc0\x38\x1b\x91\x85\x10\x20\x2e\x42\x85\x03\xd4\x8d\x9d\x27\xb5\x39\x70\x2b\xa8\xd0\xa2\x3d\x46\x7e\x9b\x84\x64\xa3\xb5\xda\x1d\x0e\xc1\xce\x58\xcc\xff\x1f\x00\x00\xff\xff\xca\xe3\xbc\x8b\x22\x2a\x01\x00") +var _webUiStaticVendorRickshawRickshawMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\xbd\x7b\x73\xdb\xb8\x92\x28\xfe\xff\xfd\x14\x0a\xcf\x5c\x2f\x11\xd1\x0c\x25\x3f\x23\x85\x49\x65\x92\x79\xe4\x9c\xbc\x7e\x89\x67\x77\x52\x1a\x1d\x17\x45\x42\x36\x63\x8a\xd4\x92\x94\x2d\x1d\x89\xdf\xfd\x57\xe8\x06\x40\x80\x0f\x49\x76\x32\x77\xe7\xee\xdd\x99\xaa\x58\x04\x1a\x8d\x06\xd0\x68\x34\x1a\x8d\x86\x39\x5d\xc4\x7e\x1e\x26\xb1\x99\x26\x49\x6e\x4d\x3d\x3f\x4f\xd2\x15\x59\x87\x53\x33\x5f\xcd\x69\x32\xed\x04\x74\x1a\xc6\xd4\x75\x5d\x43\x80\x1a\x07\x07\x98\x68\x7b\xb3\x80\xac\xf1\xb7\x39\x32\x82\x23\x63\x6c\x49\x7c\xc1\x11\x59\xa7\x34\x5f\xa4\x71\x87\xa1\xb6\x3f\x85\xfe\x4d\x76\xed\xdd\xb9\xbc\x0e\x06\x50\x90\x82\x46\x19\xed\x94\xb5\xd1\xe5\x3c\x49\xf3\x8c\x55\x97\x4c\xbe\x52\x3f\x37\xc8\x7a\x96\x04\x8b\x88\xda\x22\x4b\x94\x4f\xe9\x7f\x2e\xc2\x94\x9a\xac\x5e\x82\x88\xd6\xed\x35\x15\xc4\xcc\xaf\xc3\x4c\xa7\xef\xd6\x4b\x3b\x12\x7a\x1d\x7b\x33\x9a\xcd\x3d\x9f\x0e\x24\x90\x4c\xb2\x92\xc9\x57\x84\x9f\x7b\x8c\x08\x99\x61\x67\xf3\x28\xcc\x4d\xc3\x36\xc8\x90\x67\xd3\x38\x77\x05\xd6\xe1\x34\x49\x4d\x96\x1e\xba\x3d\x2b\xa2\xf1\x55\x7e\xed\x02\x06\x1b\x3f\x86\xe1\x33\xf1\xa3\xdb\xc5\x0a\xfc\x45\xca\x50\x7c\xf4\xd2\x1c\x41\x47\xe1\x78\x88\x68\x47\x4a\xde\xd8\x6d\x48\xdb\x6c\xd6\x05\x87\x6d\xca\x2e\xf8\x80\x60\x56\x61\xdd\xd0\x55\x56\x36\x56\x36\x91\x25\xbb\xa3\xb1\xa4\xfd\x86\xae\x3a\x61\xdc\x61\xf9\x2c\xcb\x9e\x2f\xb2\x6b\xf3\x86\xae\xc8\x90\xe3\x63\xa9\x85\x45\x97\x39\x8d\x83\x12\x5f\x40\xb3\x3c\x8c\x3d\xf6\xdb\xca\x92\x45\xea\x53\xb2\x16\x28\xe7\x69\x32\xa7\x69\x0e\x78\x45\x9e\x02\x3f\x12\xf9\x63\x17\x73\xcb\x04\xd1\x06\x05\xba\xb0\xfc\x28\x89\x69\xa5\x25\x1c\xee\xef\x9f\x3f\xbc\xb7\xe7\x5e\x9a\x51\x13\x7e\x66\x79\x1a\xc6\x57\xe1\x74\x05\x50\xa4\x28\x86\xe5\x1c\xb8\x8a\x92\x89\x17\xbd\x4a\xe2\x9c\x2e\x73\xec\x8b\xcb\x3c\xf9\x0c\x25\xdc\x0f\xc0\x8f\xf6\x3c\x4d\xf2\x84\x71\xab\x2d\x72\xac\xf7\xbf\xbd\x7d\x7b\x79\xf1\xe5\xe3\x4f\xae\xf1\x7e\x11\x45\x86\xf5\xdb\xfb\xd7\x3f\xfd\xfc\xe6\xfd\x4f\xaf\x79\xea\x6f\x31\x4e\x92\xc0\xb0\x7e\xfc\xf0\xe1\xed\x4f\x2f\xdf\xf3\x8c\x1f\x93\x24\xa2\x5e\x6c\x58\xef\x7f\x7b\xf7\xe3\x4f\x9f\x24\x92\xd9\x84\xa6\x86\xf5\xf9\xe2\xd3\x9b\xf7\xbf\xf0\x44\xac\xcb\xb0\x3e\xfc\xf8\xf7\x9f\x5e\x5d\xf0\x44\xa4\xc9\xb0\x7e\xfe\xed\xfd\xab\x8b\x37\x1f\xde\x5f\xbe\x7a\xfb\xf2\xf3\x67\xd7\x18\xe1\xe4\xe9\xfc\xcc\x5b\x36\x36\x86\xa2\x91\x9d\x30\xfb\x59\xe9\x27\xea\xe7\xb2\xab\x64\x5b\x6d\xdf\x8b\x22\x91\xeb\xba\xae\x8e\xbe\x90\xa8\x70\xc4\xef\x3b\xd0\xe1\xd4\xc4\x5f\xf6\xb5\x97\x7d\xb8\x8b\x3f\x72\x10\x53\xc0\x12\xb2\x1f\x2b\x0c\x1b\x58\x41\xd2\xc6\x78\x52\x36\x30\x9c\x9a\x17\xab\x39\x15\xdf\x8f\x5c\x57\xe9\x46\xb2\xce\xaf\xd3\xe4\xae\x13\xd3\xbb\x0e\x83\xfa\x29\x4d\x93\xb4\x60\xc4\xa7\x34\x5b\x44\xb9\x36\x17\xd4\xf6\x28\xd8\xf1\x67\x7b\x83\xd6\x1c\x15\xce\x1d\x99\x5e\x08\x6e\xe6\xd9\x25\xf9\x48\x2e\x59\x67\x77\x61\xee\x5f\xb3\x5f\xbe\x97\xd1\x4e\xbc\x88\xa2\x01\x2f\x23\xd9\x6e\x08\x59\xb7\x49\x18\x74\x1c\x91\xa9\xb3\x20\xb4\x86\x31\xad\xcb\xe5\x6c\x32\xe4\x88\xd9\x37\xe2\x36\x26\x9c\x19\x05\x0a\x95\x55\xa1\x0a\x23\x46\xc6\x2c\x09\x90\x4c\x8b\xf9\x38\xb7\x64\xbe\xc2\xbf\xa2\x9d\x4a\xb7\x17\x0a\x47\xca\x09\x52\x65\x49\x41\x2e\xa4\xb2\x55\x61\x21\xa7\x12\xb4\x29\x8b\x42\x9f\xba\x2f\xd3\xd4\x5b\x29\x33\x13\x52\x4b\x8e\xf7\xd2\xab\xc5\x8c\xc6\xf9\x7b\x26\xb4\xcd\x69\x8c\x33\x1b\x44\xb8\x3b\x8d\xe5\x3c\x36\x89\x3d\xf3\x58\x9f\x3c\xf9\xe7\xe8\x8f\xec\x0f\x73\xfc\x58\x60\x18\xfd\xd3\x1c\x3f\xfe\xc3\x34\x47\xff\x24\xe3\xc7\xe4\x0f\xf2\x84\x8c\x7a\x63\x3b\xa5\xf3\xc8\xf3\xa9\xf9\xe4\x8f\x27\x7f\x3c\xb1\x1f\xbf\x18\xfd\x91\xfe\x11\x8f\x37\x7f\x3c\xf9\xe3\xb1\xf9\x62\x60\x6f\xf0\x9b\x3c\x7e\xf1\xc7\xe3\x3f\x9e\x3c\xb9\xb2\x0c\x83\x28\x65\xb2\x2e\x4f\xe2\x0b\x88\x65\x48\x71\x0a\x94\xf1\x05\xc2\x75\x7b\x07\x07\x8f\x20\x65\xe4\x8c\x5f\x8c\xc6\x03\xf8\x5d\x76\xde\x5d\xea\xcd\xcd\x69\x6c\xb1\xbf\x73\x9a\x72\xa9\x75\x39\xa3\xf9\x75\x12\xb8\xd3\x58\x20\x95\x42\x0e\x21\x3c\x77\x31\x0f\xbc\x9c\x9a\xa3\x49\x18\x07\xa6\x28\x60\xb1\x45\x92\x8c\x2d\xd1\x65\x99\x24\x8a\xe3\xb7\xbd\xf9\x3c\x5a\xe1\x5a\xea\x91\xa2\xa4\x83\xa3\xf3\xd8\x50\xb0\xe2\x19\xaf\x87\x7d\xbf\xc5\xa6\xc0\x6f\xde\x2e\xb1\x18\x32\x48\xb1\x16\xde\x5d\x87\x11\x35\xf1\xe3\xf0\x90\x00\xf8\x48\x41\xd0\xc5\xac\x31\x14\x1a\xf1\x0f\x41\x1f\xc0\x95\xe4\xcc\x68\x7a\xa5\x53\x03\xbf\x5d\x60\x0d\x94\x6f\x98\xe9\xc8\x16\xd6\x5b\x50\xa2\x83\x4e\x9a\xc6\x96\x2f\xd6\x86\x70\x6a\xca\x3e\xe2\xf4\x3f\xeb\x1f\x1c\xa8\xac\x2c\xf3\x47\xce\x98\x10\xc1\xd0\xd7\x61\x36\xac\x0c\x11\x54\xa6\x53\xc6\x4b\x5a\x7d\xd2\x3a\x7e\xa2\x85\x57\x59\xc3\x68\x09\xec\x7c\xb8\x38\xd9\x30\x62\xac\x34\x9d\xcd\xf3\x95\x58\x06\x5c\x05\x75\x01\xb4\xbd\x8a\xbc\x2c\x73\x2b\x35\xbe\xf9\x7c\xf9\xfa\xc3\xfb\x8b\x9f\xde\xff\xf6\xee\xf2\xc7\xdf\x7e\xf9\xe5\x8b\x0a\x20\xc5\x63\x27\x8c\xd7\x62\x42\x0d\x7a\x05\x74\xd4\x9c\x4d\x5c\x91\x68\x88\x9e\x98\x7a\x51\x46\x85\x5c\xc8\xd3\x05\x2d\x4c\x52\xce\xd9\x6c\x31\xf1\x19\x15\x8c\x26\x99\xe8\xa7\x94\x8d\x90\x54\xc4\x98\x9a\xc3\x24\xa2\xc5\x05\x6a\x48\x99\xac\xc6\xe9\xcf\x5b\xae\x74\x4d\x38\x35\x95\xb5\xaf\x2c\x02\xc3\x23\x94\x26\x99\x6a\x67\xd7\xe1\x34\x57\x49\xba\xe1\xf4\xb0\x21\xb4\xc3\x38\xcc\x43\x2f\x0a\xff\x45\xb5\x19\x21\x6b\x2b\xf8\xda\x08\x85\x2c\xe8\x50\xfb\x1d\x0c\x49\x46\x86\x90\x68\x67\x8b\x39\x4d\xa1\x91\x5c\x57\x93\xe9\xd8\x74\x68\x0c\xa3\x1a\x73\xc9\x5a\x64\x94\x92\x8e\x17\x2c\x13\x38\x8a\x12\x80\x2d\x6a\xa2\xdc\x30\x4f\x57\x6b\x5e\xa2\xac\x84\xab\x73\xec\x83\x14\x3e\x08\x40\x4a\xd6\x45\x51\x6a\xae\x8e\xd4\x5c\xcb\xde\x69\x52\x5f\xb1\x6e\x2f\x08\x78\x43\xd5\x3e\x0e\xc7\x30\x00\x8f\x2a\xf4\x29\xfd\x48\xda\xb3\x5c\x8d\x5f\xab\x6d\xb4\xfd\x24\xce\xf2\x74\xc1\x94\x7d\x17\xf2\xa4\x5e\xca\x3e\x4a\xf6\x51\x28\x13\x6a\x0a\x4c\xa5\xd8\xa7\x19\x2b\x0b\x03\x5b\x8e\xca\xc1\x41\x25\xa1\xac\x52\x65\x38\x50\x34\x38\x3e\xd6\xc4\xda\x3c\x81\x39\xc0\x35\x1e\x31\x0b\x1e\xb5\xab\x93\x44\xe9\x65\x18\x1a\x65\xea\x0c\x4b\x4c\xb7\x5e\xb4\xa0\x1f\xa6\x0d\x88\x78\x4e\x1d\x0f\xcf\x30\xc8\x03\xc6\x76\xad\x2a\x3f\xae\x36\xb0\x16\xe0\xad\x6b\x67\x4c\x44\xf2\xae\x65\x82\x51\xce\x3c\x00\x27\x07\x07\xfa\xb2\x8c\xa9\x23\x67\xec\xba\xc6\x0f\xd0\xe7\x06\x56\xca\xc5\x24\xe4\x0f\xb1\x2a\x5c\xf3\x04\xbe\x99\xd4\x16\x14\x81\x24\x56\x05\x4e\xc0\x68\x36\x6e\x99\xa7\x45\xa9\x8d\x59\x58\x15\xc1\x5a\x44\x3f\xba\x20\xfb\xb9\x38\xe5\x69\x15\x48\xb9\x47\x50\x41\xe5\xf6\x80\xc3\x16\xc0\x4d\x72\x98\x14\xbd\x16\x90\x14\xca\x02\xc1\x7f\xaf\x51\xde\x0d\xf0\x8f\xc5\x79\x77\xb0\x2e\xf9\x78\x50\xfe\x2c\x0a\x26\x3f\xc3\xa9\xbe\x89\x11\xbb\x66\xb2\x6e\x4c\xb6\x51\xd2\xc3\xbf\xb8\x83\xd6\xc1\xd4\xec\x82\x98\x62\x57\x4b\x86\xe2\x97\x2d\x37\xc2\xa6\x21\xd3\x5e\x25\xb3\xb9\xc7\x0b\xbf\x0d\xb3\xdc\x50\xe0\xab\x79\xea\x22\xa2\x18\x1d\x12\x1f\xc6\xe7\x91\xa6\xf1\x1d\x1c\x3c\x32\x0d\x5f\x62\x0d\x63\x09\x67\x63\x17\xfd\x14\x51\xf6\x65\x1a\x9e\x41\x08\x59\x97\x2c\x72\x1b\xd2\x3b\xb2\x36\x16\x19\xed\x30\x1d\xd5\xcf\x0d\x58\xe7\x24\x2e\xa6\xb1\xbb\x0a\x6a\x0b\x86\x09\x53\xe5\x88\x19\x16\x8d\xe8\xec\x55\x9e\x7e\x64\x29\x2e\x20\xb5\x7f\xbd\x78\xf7\x96\x57\xbb\xd9\x40\x0a\xff\x22\x23\x89\x63\x6c\x25\x93\xaf\xaf\xf2\x94\x4f\x55\x2b\xcb\xd3\x8b\x34\x9c\xb9\xc8\x1f\x0a\x9c\x9d\xa7\xe1\x6c\xb3\xa9\xb3\x31\xb0\x8e\xd4\x1d\xff\xf9\x47\xd6\xdd\xfc\x91\x75\x7f\x40\x0d\xb2\xb0\xbc\x34\x7d\x13\x07\x74\xf9\x61\x8a\xaa\xb0\x8a\x32\xc4\x0c\x05\x6b\x98\xd3\x19\x4e\x2d\x3e\xfd\x51\xf0\xf1\xc9\xce\x44\x03\x4e\x7d\x9c\xf7\x6c\xd5\x64\x9b\x1d\x06\x83\x12\x71\x14\x8e\x5d\xd7\x45\x2c\x9c\xbe\x50\x6c\x64\x0e\x7b\x85\xf5\xfa\xc3\xbb\x9f\x96\xe5\xb8\x82\xbc\x9c\xd1\x2c\xf3\xae\x28\x5f\x3c\x19\xd3\xc0\x4e\x64\x08\x9f\x7e\x12\x50\x17\x4a\xf9\x74\x0e\xfa\x36\xcb\x1b\x63\x26\x2f\xe9\xf2\xbf\x85\xe5\x5f\x53\xff\xe6\x22\xb9\xa1\xf1\xcb\x38\xf8\x85\xe6\xd0\xf2\xb2\x3a\x39\x88\x56\xce\x60\x90\xab\xd8\x2f\xa6\x84\x18\xea\x5e\x0f\x6a\x34\x8d\xcf\x5f\xde\x5f\xbc\xfc\xfd\xf2\xa7\x4f\x9f\x0c\xcb\x78\x19\x77\xc2\xf8\xd6\x8b\xc2\xa0\x93\xa4\x9d\x30\x8a\xe8\x95\x17\x75\x70\x5f\xd3\xb9\xf3\xb2\x4e\x36\xa7\x7e\x38\x0d\x69\x60\x90\x22\x9c\x32\x3d\xfe\x89\x9d\xd3\x2c\xc7\x3a\x48\x03\xfe\x37\xef\xff\xfd\xe5\xdb\x37\xaf\x2f\x5f\xfd\xfa\xf2\xd3\xcb\x57\x17\x3f\x7d\xe2\x55\xe1\xe8\x77\x98\x6a\xe6\x85\x71\xd6\xf1\xca\xaa\xfd\x6b\x2f\xf5\xfc\x9c\x89\xc0\xa2\x54\x6f\xf9\x10\xa3\x8a\x58\x6d\x66\x61\x35\x4c\x29\xc6\xaf\x38\xd2\x8c\xb1\x66\x34\x78\xc5\xf5\x0a\xce\x81\x88\x8a\x41\xd9\x80\x8f\x49\x62\x62\x09\xe5\x43\x2f\xf3\x42\xff\xe4\xdb\x16\xd8\xc7\x90\xc1\x68\x6c\x09\x5e\x12\x5a\x45\x0b\x3b\xa1\x10\x64\xcb\x11\x07\x64\x9a\x01\x8a\xc6\x4b\x54\xc0\x5f\x09\x4a\x54\xd1\xa0\xd3\x88\x0c\x5b\xee\xdb\x8a\xc2\x52\xa7\x72\x9e\xb8\xb2\x33\x94\xa9\xe0\x8e\xc6\x25\xd8\x2f\x34\xcf\x69\xea\xd6\xa7\x1a\x1b\x39\x59\x1a\x56\x0b\x52\x0c\x61\x28\x55\x54\x60\x23\x50\x12\x86\x7a\xfd\x36\x9b\x1d\x25\xf2\x50\x9b\xc8\xa3\x70\xbc\xd9\x30\xb5\xb5\xa8\x96\x12\xbc\xa0\x4c\x1e\xe4\x61\xf8\xd3\x75\x0d\x43\x68\x36\x8d\x93\x00\xd7\x36\x2c\xf2\xc8\x75\x0f\x7b\xb5\x0a\xbc\x20\xd8\x82\x3b\x9c\x9a\x3b\xf1\xba\x0c\xaf\x3a\x8c\x98\x3c\x6c\x1c\x41\x36\x32\x55\x12\x52\x3a\x4b\x6e\xe9\x16\x2a\x40\x30\xc1\x9c\xde\x49\x0c\xa8\xf4\x2c\xf1\x91\x42\x15\x63\x4c\x9f\x62\xba\xd5\xbb\x07\x65\x79\x72\x75\x15\x6d\xa3\xec\xbe\xfd\xe3\x05\x01\x47\x82\x6b\x2b\x97\xe2\xac\xfd\x22\xbd\x81\x08\xae\x4a\xb4\x2c\x02\x5f\x93\x30\x36\x8d\x8e\x41\x8a\x21\x9a\x9d\x5e\xe5\xa9\x8d\x0b\xa4\x30\x3b\x71\x33\xb2\xba\xb6\xbd\xa6\x99\xef\xae\xaf\x68\x3e\xa8\x4c\x00\x8b\xc6\x8b\x19\x4d\xbd\x49\x44\x07\x6c\x0f\xc6\x36\xb8\xd3\xf0\x6a\x51\xa6\x14\xb0\x6b\x68\xac\xc8\x54\xd7\x43\x6d\x06\xce\xad\x5a\xf5\x72\x6f\xb1\x04\x91\x4c\x97\x36\x5a\x93\x58\x87\xf5\x7b\xc7\xa7\xe7\xfd\xa3\xfe\x49\x9f\xac\x6b\x05\xed\x92\x44\x17\xf6\x8c\xc3\xef\x41\x4c\x21\x4f\x1e\x10\x9b\xba\x64\x5e\x5e\x22\x6a\xec\xa2\xcb\x4b\x14\x3f\x02\x77\x2d\xdb\x6c\xa9\x0c\xf3\xe1\xe8\xe1\x2e\x8c\x83\xe4\x8e\x0d\x77\xa9\xe3\x7c\x7a\xf3\xea\x1f\x9f\x7f\x7d\xf9\x1f\x97\xef\x3f\x5c\xbe\xfa\xf0\xee\xe3\xcb\x8b\x9a\xb6\x53\x07\xd9\x6c\x5a\x4b\xeb\xd6\x31\xb2\x66\x82\xac\x55\xed\x2a\xb6\x2a\x70\xbf\xa4\xde\xfc\x5a\xd5\xda\x20\xa1\x64\xc9\xd2\xbc\x93\xd1\x68\x0a\xd2\x78\x58\xd9\x15\x57\x81\xd9\xde\x0f\x6c\x3d\x94\xab\x47\xb0\x4e\x56\xaa\xec\xc4\x94\x06\x59\xc7\xeb\xa4\x74\x4a\x53\x1a\xfb\xb4\x93\x27\x6c\x61\xe4\x85\x60\x0a\xaa\x58\xec\x38\x09\xe8\xc5\x6a\x4e\x1f\xb9\x6e\xaf\x19\x25\x87\x84\xc5\x9b\x77\x4e\x67\xb2\xc8\x3b\x71\x92\x33\xcc\x4c\x7f\x2b\xd1\x43\x23\xf8\x97\xab\x56\x84\x39\x19\x4d\xd9\x8e\x0f\x32\xf0\x37\xa6\xe3\xf0\xba\xeb\x02\x3f\xb9\xac\xf1\xa2\x68\xe2\xf9\x37\xb0\x8b\xe7\x7a\x0e\xce\xad\x86\xac\x80\x4e\x3d\x30\x35\xaf\xc3\x38\xa7\xe9\x3c\x89\xc0\x9c\x3d\x30\x7c\x2f\x0d\xc2\xd8\x8b\x0c\x2b\x99\x4e\x33\x9a\x0f\x8c\x7f\xd1\x34\x31\xac\x59\x18\x0f\xe4\x68\x5b\x33\x6f\xa9\x7c\xcd\x53\x9a\xd1\xf4\x96\x0e\x60\xba\x58\xcb\xcf\xbe\x17\x51\x25\x7f\x55\x4d\xc8\x72\xcf\xbf\x11\xb3\x1d\xc4\x65\x94\x78\xc1\x27\x1a\x07\x34\xa5\x69\x66\x92\x0a\xfd\x38\xa6\x98\x08\x1a\x8b\x97\xd3\xcf\xd0\x1f\xa6\xd2\x37\x44\xed\x34\xdb\xf3\xf3\xf0\x96\x36\x88\x35\xc6\x42\x02\x68\x1a\x46\x39\x4d\x4b\xbd\x3d\x13\x50\x8f\x32\x3b\x08\x33\x26\x03\x82\x82\x14\x02\x71\xfe\x39\xfc\x17\x35\xd7\x77\x61\x90\x5f\x0f\xa0\x66\xf8\x69\x5d\xd3\xf0\xea\x3a\xc7\x14\xfc\x5d\x10\x6d\x6c\x6d\x39\x49\x41\x48\x1b\x29\xe7\x99\xcb\x2b\xce\xf9\xd8\xb4\x30\x73\x83\x23\x3b\xa3\x11\xf5\x51\x15\x90\xdc\xcb\x36\x93\x34\x0e\x4c\x23\xbb\xbd\x1a\x64\xb7\x57\x06\xb1\xbd\x3c\x4f\x4d\x03\x08\x30\x2c\xce\x16\x41\x7e\x2d\x32\x90\x0e\x9e\x83\x1f\xbc\x9a\x20\xcc\xfc\xe4\x96\xa6\x9f\xbc\xf8\x8a\x2d\x4c\x4d\x43\xd0\x64\x6b\x63\x33\x97\x69\xe6\x3a\xc3\xdb\xa2\x0c\xce\x39\x06\xb4\xd9\x3c\x6a\x81\xa9\x1e\x58\x30\x68\x42\x98\x1a\x12\xc6\xb0\xdb\x4e\x3b\xa9\xdb\x52\x76\xc4\x80\x61\x97\xff\x28\xdd\x6c\x1e\xa5\xe5\xd6\x56\xff\xb2\x53\x28\x50\x62\x85\x01\x4f\xe9\x55\x98\xe5\x34\x15\xd8\x4c\x26\xae\x52\x73\x0d\x03\x30\x60\x20\x05\x1c\xce\x35\xf0\x58\xd9\x17\x9c\xcf\xa0\xa1\x78\x06\x10\x66\xf0\x57\xe4\xb0\x1d\x23\xfe\xec\x84\x71\x96\x7b\xb1\x0f\xb2\x53\x34\x08\xf1\x11\x21\xca\xd8\xc7\xe7\xf0\x2a\xf6\xf2\x45\x4a\xdb\x0d\x34\xdc\x90\x50\x32\x39\x93\x3a\xa2\x96\x4c\x08\x16\x30\x23\x0f\x3a\x46\xb7\x82\x17\xec\xaf\xf3\x24\x8c\xf3\xec\x55\xb2\x88\xf3\xa1\x60\xfd\x24\xfd\xc9\xf3\xaf\x35\xde\x67\xed\x32\x35\xd2\x91\x28\xb1\xcd\x10\xb5\x0a\x19\x57\xd6\x8e\x07\x26\x50\x3d\xdb\xa6\xb0\xe9\xe3\xe5\x5e\xa5\xd8\xb5\xc7\xe0\x3b\x2c\x87\x41\x56\x8e\x47\x33\xd8\xe0\x54\xfb\x15\xf1\x54\x10\xb1\xb4\xa6\xa6\x57\x31\x62\x61\x86\x16\x7f\xf2\x4d\xc2\x73\x07\x47\x60\xe9\x62\xf2\xc8\x19\xdb\x4b\x60\xbe\x95\x92\xb2\x52\xd6\xce\xe5\x23\x57\x1c\x46\xc9\x15\x71\x55\xa6\x1d\x1c\xac\x1e\xb9\x60\x19\x16\x84\x2e\x3b\x5e\x1c\x74\x56\x9d\xd2\x70\xd5\x49\xa6\x7c\x18\x3a\xd9\x75\xb2\x88\x82\xce\x84\x76\xb0\x3c\xf6\x38\xf5\x02\x06\x63\x74\x45\x9d\x5d\x03\x90\xc8\x84\x55\x51\x6f\x89\x7b\x84\xd6\x3e\xa4\xba\x3f\xb6\x97\xcf\xf8\xef\xde\xd8\x5e\x6e\x36\xca\xc7\x33\xa5\xb1\x32\x43\xc3\x76\x58\x05\x6b\xea\x76\x5c\x32\xf3\x84\x91\x9f\x25\x69\x4e\x83\x4e\x12\x77\x96\x1d\x30\x2a\x65\x9d\x69\x22\x38\x1b\xe4\x05\x70\x04\xac\xf9\x45\x51\x58\x7c\x77\x83\x52\xc8\xcb\xbd\xd7\xc9\xcc\x0b\xe3\xaa\xe1\x9f\xe5\xb8\xaa\x28\x9f\xa9\xd6\xb7\xac\x14\xe4\x80\xa3\x40\x3f\x88\x59\x18\x33\xd9\x39\x0b\x63\x13\x5a\xa4\x95\x09\x64\x99\x00\xda\x55\x10\x5e\xc8\x5b\x42\x21\x6f\xb9\xa3\x50\xa0\xf6\x10\x2b\x8d\x39\xa3\x59\x18\xb3\xb5\x70\x5c\x34\x48\xd6\x5a\xb3\xb0\xb1\x5c\x29\xe7\xf2\x10\x13\xc5\x82\xb7\x74\x51\xea\xe3\x0a\xba\xd9\xb0\xc5\x80\xfd\xb2\xa3\x30\xa6\x5e\x6a\x12\x62\xfb\xc9\x7c\x65\x12\x51\x0e\xff\xd8\x4b\x62\xa7\x20\xcc\x47\x8e\xb2\x12\x8c\x39\xd6\x15\xc7\xba\xba\x27\xd6\x95\xc4\xaa\xac\x21\x96\x23\xd0\x2e\xed\x99\x77\x15\x87\xf9\x22\xa0\x6e\x0d\xa5\x40\x35\x12\x14\x8e\x9c\xf1\xa1\xf2\xdb\x92\xbf\x7b\x5a\xfa\x78\x7b\x4b\xee\x53\xe5\x4a\xa9\x72\xa5\x54\xb9\x52\xaa\x5c\x35\x55\x89\x0d\x1d\x0b\x46\xc5\xb1\xaa\x8e\x26\xa8\x30\x34\x78\x5d\xf2\x2a\x4b\x60\x9f\x66\xf3\x32\x3b\xd4\x07\x1e\x7f\x88\xe4\x8a\x06\x57\x17\xce\x3e\xcf\x22\x6b\xf1\xcb\x24\x52\x31\xc1\xd2\x2a\x67\x0d\x75\x92\x76\xce\x30\x54\x96\xe0\x40\xba\x79\x06\xf0\xa9\xd6\x9e\x5f\xd5\xa4\x02\x7d\x1b\x79\x09\x67\x64\x66\x40\x84\x10\xc0\x3f\xe8\xc2\xc4\xd5\x47\x97\x1b\xac\xf1\x0b\x16\x7a\xf1\x21\xb6\xda\x6d\x4b\x57\xb9\x2e\x73\x10\x60\x0d\xb2\x2e\x51\x33\x5d\xb3\x20\x05\xb4\x5c\xa4\xbe\x90\x0b\x33\xf8\xf3\x80\x0c\x20\x03\xf6\x6f\x83\x26\x69\x92\xb6\x7a\x2d\xd8\xfa\x37\xd4\x5e\xae\xf2\x30\x08\x20\x56\x01\x16\xb4\x98\x32\x87\xac\xcb\xdf\xf5\x4a\x02\xb2\x0e\xec\x95\xab\xa2\x36\x03\x7b\xc5\x86\xbf\x10\x6a\xa6\x1c\x69\xfb\x3a\x49\x6e\xb8\x50\xaf\x61\xa2\x71\x9e\xae\xc8\x1a\xfa\x00\x7e\xdb\x53\xa9\x5b\x44\x53\x6b\xc4\x32\xc6\x84\x0b\x54\x85\xc1\x61\x28\x74\xf6\x5d\xc4\x90\xcf\xc7\xe5\x52\x2a\x4c\x2c\x91\x69\xcd\x26\x22\x89\xbc\x55\xb2\xc8\xd9\x5c\xc5\x5f\x48\xa8\x49\x86\xfc\x13\xf7\x18\x50\x3d\xff\x4d\x86\xea\xcc\x42\x30\x1c\x98\x42\xcd\x50\x7e\x6f\x36\x01\xa7\xb1\x85\x44\x05\xb6\x6d\x08\xf7\x1d\x05\xc7\x85\x7f\x5c\x57\xee\x65\x5e\x38\x03\x96\x54\xb0\xe1\x68\x1c\x0a\x6f\x9a\xd3\xb4\x75\x2c\xd4\x36\xed\x1c\x92\xd0\x75\x86\xf7\x9c\x07\x62\x13\xc3\x0f\xc1\x85\xf2\x07\xd5\xaa\x9d\x38\x0a\xbb\xdd\xb1\xc6\x4d\xf5\x8e\x16\xb6\x40\x25\x49\xec\x1d\x6a\xe3\x5f\x13\x97\xa8\x49\x2b\xd4\x0f\xef\xa1\x97\x2a\x60\xae\xf2\x5b\x68\x31\xf2\x00\x71\x6a\x2a\xb9\x07\x07\x5a\xee\x23\xb5\xa4\x54\x6c\xb0\x29\x42\x63\xf1\xbd\x98\xa9\x94\xd7\xde\x2d\xed\x04\xe1\x74\x4a\xc1\x62\x2e\x94\x34\xa9\xc0\x31\xa5\x46\x41\xd6\x35\x3a\xb7\x19\xe8\x39\x4a\x75\x5d\x63\xd8\xc9\x28\xad\xea\xfe\x4c\x4e\x46\x26\x31\x2a\xca\x50\x85\x69\x5c\x98\xa3\x83\xd1\xd8\x02\xee\x19\x8c\x84\x82\x81\x62\xd4\x55\xb9\x52\xf0\x3d\xda\x04\xec\xe5\xbb\x30\xde\x6c\xf4\x14\x6f\xc9\x8f\x5f\xb2\x37\x31\xaa\x26\x4c\x1c\x0e\x1b\x4a\x1e\x1c\x04\xf6\xf2\x59\x35\x95\x94\x05\xd1\x20\x56\x2b\xe9\x2d\xa1\xe4\xf3\x5a\xbd\xd5\x92\xe2\xfc\x46\x24\x6b\xfe\x18\xd8\xc6\x24\xfe\x0d\xd7\xb3\x86\xc5\xaf\x71\xb1\x44\xeb\xbe\x80\x91\x58\x5e\x09\xeb\x41\x2b\xa2\xba\x7d\xa4\x19\x57\x75\xef\x58\x22\x4c\xe5\xde\x17\x87\x27\x95\xfb\xe7\xca\x37\x38\xca\x56\xd2\x46\x52\x54\xc1\xce\xd6\x15\x9f\x45\xc5\xfa\x51\x35\x6d\x29\xb9\xae\xf2\x1b\xaa\x10\xf6\x2a\x50\x9b\x36\x1b\xc5\x22\x21\x97\x50\x34\x62\xa0\xbf\x91\xe4\x4e\x70\x2a\xd0\x2c\x43\x0d\xcb\x9d\xde\x6f\xa3\x9b\xb1\x7b\xd3\x09\xc1\xdd\x2d\x7b\x01\x2e\x52\x37\xe3\xc1\x8d\x38\xbb\x7b\x01\x47\x0f\x37\xe3\x81\x86\x75\x74\x33\x16\x4b\x7f\x43\xdd\x88\xb8\xbd\x66\x56\xa5\x4e\x81\x40\x16\x4e\x4d\x9c\xcc\x06\x27\x88\x40\xd3\xf9\x1a\xe0\xa2\x29\x10\x7e\xa3\x91\x41\x8c\x24\xa4\x8b\x2f\x3e\x6f\xc4\x27\xf7\xc7\xd0\x46\x69\xb3\xe1\xd5\x48\x93\x90\x34\x28\x08\x38\x4b\x31\x56\x35\x70\xd8\x3e\xaa\x1d\x0e\x8e\x62\x77\x6a\xe0\x3c\x4b\xda\x39\xf9\xf6\x30\x55\x5d\xe6\xc9\x5a\xa3\xdd\x6d\xb0\x76\x34\xf3\xb6\xbe\x88\xf2\x83\x04\xb9\xfe\xab\xcc\x3b\x16\x42\xd4\x67\xbb\xd9\xf8\xdf\xf2\xce\x34\x8c\x03\xd9\xb5\x1d\xa3\x9b\x16\x3a\x11\x75\x14\x45\x49\x3e\xf8\xa4\x29\x5e\xf8\x7a\xdf\x57\x4c\x81\x85\x6e\x92\xab\xce\x10\xc0\xc5\xfe\x11\x73\x82\xd7\x81\x92\xe9\x91\xb2\x7c\x0b\x65\x7e\x15\x51\x97\xcb\xad\x2b\x9a\xbf\x4a\x66\xf3\x45\x4e\x83\xcf\x2c\x5d\x33\xc4\x59\xb0\xc9\x07\x1e\xe2\x29\xff\xc1\x66\x9a\x0b\x0e\xdf\x6f\xe2\xdc\x04\x54\x0c\x87\xb0\x71\xfd\x3b\xdb\x17\x0b\x3b\x1d\xb1\x7a\x8e\x56\xfa\x57\x98\x9b\xbb\x8b\x73\x6b\x1e\x94\x2f\xca\x8d\x91\xab\x4e\x76\x95\xa0\xcd\xe6\xd8\xe1\xca\x02\x16\x75\x15\x51\x20\x41\x7f\xe5\x9f\xfd\x13\x47\x5a\x20\x39\xd7\xdf\x86\xd9\x43\x2c\x8c\x45\xd5\x2e\xcf\xc7\x6b\xbb\x03\xc7\xcf\xe1\x32\x5f\xa4\x34\xb3\x5f\x25\x51\x92\xaa\x07\x01\x7a\x8e\xaa\x55\xe0\xf8\xfb\xd7\x74\x46\x33\x69\x09\xe7\xdf\x76\x36\xa7\x7e\x9e\x2e\x66\xbd\x63\x77\x64\xfc\x8d\xfa\x93\xb3\xa7\xa7\x86\x65\xfc\x2d\xf0\xcf\xa7\x67\x0e\xfb\x35\xe9\x7b\xc7\xf8\xeb\x69\xff\xfc\xec\xc4\x63\xbf\xce\x7a\xa7\xfe\xf1\x53\x80\xeb\xd3\xe0\xbc\x0f\x70\x13\x7a\x7c\x7a\xce\x7e\x79\xbd\xc0\x39\x09\xd8\x2f\x7a\xe6\x4f\x28\xe2\x3b\xf7\xbc\x00\x7e\x79\xe7\xe7\xe7\x3e\x94\x78\x1a\xf8\xfd\xe0\x88\xfd\x3a\x3d\x7e\x4a\x27\x80\xef\xe8\xfc\xcc\xf3\x8e\x8c\xb1\x9d\xd2\x5b\x9a\x66\x72\x3b\x58\xa5\xb7\xef\x38\x0e\xa3\xf8\xe4\xec\xc8\x39\x9d\xb2\x92\x27\xbd\x63\xff\xec\x14\xb1\x9d\x9e\x9c\x03\xde\xb3\xa3\xf3\xa3\xa7\xc7\x90\x36\x79\xea\x9f\x01\x4d\xe7\xc7\x93\xd3\xd3\x13\xa0\xe4\xcc\xf7\x4e\xb0\x8d\x53\x7a\x76\x0c\x65\x69\x7f\x7a\xd2\x87\x56\x4c\xa7\xd3\xb3\x3e\xa6\xf9\x41\xe0\x00\x5c\x70\x3c\xe9\xf5\x00\x4b\x40\xcf\xcf\x79\x1a\x3d\xe6\xbf\xfc\xa7\xbd\x93\x1e\x60\x7e\xea\x39\x0e\xa6\x9d\x4d\x9c\xe3\x3e\xb4\xec\xe4\xdc\x39\x3f\xc2\x36\xf6\x9c\xf3\xfe\xc4\x18\xb7\xb6\xac\xc7\x5a\xd6\x9f\xf6\x8f\x8f\xa0\x65\x47\x7e\xdf\x3f\x01\xbc\xc7\xde\xd1\x19\xf6\xf1\xc9\xe9\x49\x1f\x47\xe5\x74\x72\x3a\x39\xf3\xa1\xae\xfe\xd3\x93\x33\x28\x71\x7e\xea\x05\xa7\x14\xc7\x62\xe2\x9f\xc0\xaf\xc9\x79\xf0\xf4\x04\xfa\x22\x38\xa2\xce\x31\xa4\xf9\xbe\x17\xf4\x3d\xfc\x75\x7e\xdc\x83\x51\xf1\x7b\x27\x7d\x6c\xa3\x17\x1c\x9d\xf7\x7b\x80\xcf\xeb\x39\x3d\xac\xed\xbc\x77\xd6\x3b\x03\x0a\x8e\x7a\xb4\x07\x58\x8e\x82\xde\x79\x0f\xa8\x3a\xea\x3b\x5e\xaf\xd6\x32\x30\xe9\x87\xfe\x53\xd6\xaa\xe3\xfe\x51\x70\x3c\xc5\xb6\x9c\x9e\x9f\x3a\x38\x22\xe7\x53\xec\x19\xaf\x3f\x39\x3b\x82\xb6\x04\x81\x3f\x39\x81\x31\xf4\x4f\xbc\xa3\x3e\x94\x38\x0b\x4e\xce\x8f\x60\x44\x9e\x9e\x1e\x4d\xfa\xd8\xbf\x7e\xff\x14\x47\xe9\xf8\x69\x2f\x38\x02\xca\xfa\xd3\xfe\xc9\xb1\xd7\xce\x43\xd7\x79\x3e\xff\x9c\x7b\xf9\x22\x73\xd7\x27\xce\xd1\xc0\xf8\x1b\xf5\x4e\x1c\x36\x4a\x27\x4e\x7f\xc0\x78\xfa\x68\xda\x3b\x66\x5f\xce\x80\xf1\xc6\xd1\x69\xef\xc8\xb0\x8e\x7b\xec\x8b\x4e\x3d\x9f\x7a\x86\x75\xec\x3c\x65\x5f\xfd\xa7\xbd\xc0\x67\x5f\x0c\xcb\xf4\xf8\xe4\x8c\x9e\xb3\xaf\x73\x96\xd7\xeb\xf7\x82\x3e\xfb\xea\x31\x2c\x4f\xfb\x81\x47\xd9\xd7\x09\x40\x9e\xf9\x74\xc2\xbe\x8e\x07\x6c\x46\xf4\xbd\xa7\x53\xf6\x05\xf5\xf5\x4f\x8f\xfc\x53\xc3\x3a\x82\x72\xa7\x53\xcf\xe9\x1f\xb3\x2f\x46\xd9\xf9\x99\x7f\xd4\x9f\xb0\xaf\x33\x56\xce\x09\xce\x8f\x7d\xf6\xc5\xb0\xf4\xcf\x27\x27\x27\xbe\x61\xf5\x01\x4b\xcf\x3b\x9e\x9e\x1d\xb3\xaf\x53\x96\x77\x76\x7e\xc4\x6a\xe8\x03\xce\x93\xbe\x17\xf8\x4f\xd9\x17\xc3\x79\xe6\x3f\x3d\xc3\x3c\xd6\x06\xef\x64\x72\x3e\x09\xd8\x17\xc3\xe9\xf7\xfc\x20\xe8\x19\x15\x99\xe1\x33\x09\x73\x77\x4d\x69\xc4\x46\x74\x72\x32\x39\xf5\x60\xf4\xce\x4f\xce\xcf\xce\x80\x87\xce\xce\x4f\xa6\xc7\x47\x38\x52\x27\x27\x67\xc0\x25\xc7\xa7\xe7\xfd\x09\xce\xc5\x93\xc9\x53\x0f\x39\xf6\xc8\x77\x8e\x90\xff\x26\x27\xbd\xa3\x2d\x63\xe6\x27\x09\xd4\x76\x42\x9f\x06\x9c\x1b\x64\xd9\x12\xf3\xd9\xc4\x3f\x9a\xa0\x0c\x7a\x7a\x7e\xce\x79\xbc\x37\xe9\x9f\xa2\xe4\x39\x3e\x3b\x7e\x8a\x3c\xe5\x3c\x9d\x4e\x4e\xaa\x7c\x3a\x5b\xc4\x61\xcc\x2a\x71\x1c\xdf\xc7\xe9\xeb\x38\xa7\xa7\x93\x23\x14\x07\xe7\x7c\x4a\x4f\xa7\x22\xf7\xe8\xc8\x71\x9e\x42\xd3\x9f\x3e\x15\xbf\x7c\x7f\x3a\x15\x70\x42\x08\x9c\x3b\xec\x7f\xc4\x77\x3e\x15\x98\x8f\xcf\x51\x20\x4d\x8e\x4e\x3c\x4c\x9b\x1c\x89\xdc\xd3\x89\xe3\x9c\x4e\xa0\xec\x74\x72\x24\x72\x05\xbe\x09\x65\xff\x23\x66\x46\x17\xfe\xf2\x9f\x4e\xa7\x9c\x3e\x5e\xdb\x74\x4a\x4f\xf1\x97\xe7\x31\x48\x10\x66\x94\xb5\x4e\xb4\x08\x73\x4f\x4f\x4f\x4f\x05\xcd\x93\x29\xc2\x39\x0e\x6b\x27\xb6\xe8\xf4\x54\xb4\x92\xb5\xd3\x18\xef\xbb\x48\x7d\xf2\xe2\x20\x99\xb1\xdd\x5a\xe3\x4a\x55\x66\x2b\xae\x1d\xe1\x8c\x2d\xef\x34\xbd\xf5\x22\xee\x04\x1c\xe0\x9e\x5a\xcd\x71\xd5\x8f\xcd\xa6\xc7\x4d\x28\x59\x8e\x28\x41\x15\x70\xfb\x8e\x03\xe9\x0c\xf6\x47\x2f\xa3\xee\x3b\x2f\xbf\xb6\xa7\x51\x92\xa4\x26\x1c\x6a\xbd\xf6\x72\x4a\x98\x0a\x71\x11\xce\xa8\x49\x9e\xf4\xe8\x11\xe7\x3a\x5e\xa7\xb2\x7d\x04\xb3\x07\x28\xc4\x4a\x0d\x80\x10\x13\x4c\xf2\xb8\xe7\x38\xdd\xde\x49\xb7\x42\x86\xe2\x35\x23\x4e\x0b\xf8\x26\x1c\x7c\x41\xd8\xb6\x98\xa6\x6e\x6f\xd8\x6c\x88\x12\x76\x0a\xb5\xe6\x34\xf4\x62\xbf\x5a\x79\x1f\xdb\x7a\xeb\x2a\xf4\x3d\xe9\x9f\x74\x79\x05\xdd\x6e\xa7\x6b\x42\x09\x3f\xc9\xd0\x03\xe7\x31\xcf\x7a\xdc\xeb\x3d\x79\x7a\xea\x90\x6e\x9f\x3c\xee\x9d\x54\xa1\x9e\x9c\x41\xc6\x59\x2d\xbd\x87\x19\x3d\x61\x8d\x80\xfd\xe0\x7a\x39\x40\xdc\xea\xf8\x74\xc5\x00\x58\xab\xc1\x6d\x57\x6f\x45\x41\x0a\x32\xac\x0e\x9c\xd2\x84\xc7\xf6\xf9\x89\xdc\x5b\xce\x92\x5b\xda\x34\x2c\xdb\xbb\x4e\x18\x72\xf0\xd2\x00\xd3\xe6\x39\x39\x5d\x8d\x8b\x8a\x7d\x99\x9a\x31\x4b\x23\x3b\xb3\x8c\xba\x35\x47\xf3\xc2\x98\x25\x71\x7e\x9d\xb9\x23\xe3\xef\x5e\x6c\x58\xc6\xcf\x6c\x0d\x30\xde\x79\xa9\x61\x19\x2f\xe7\x29\xfc\x5e\x19\x96\xf1\xf7\x45\x0c\xff\x46\x2c\x7d\x71\x65\x58\xc6\x67\x3a\x37\x2c\xe3\x83\x9f\x1b\x96\xf1\x3e\xb9\x35\x2c\xe3\x35\xf5\x85\xfc\x5a\xc4\x61\x9e\xb9\x23\xb8\x26\x3b\x30\x02\xea\x7b\x01\x35\xac\x8c\xfa\x49\x1c\x64\x83\xf3\xd3\x63\xc7\x79\x7c\x74\x7a\x62\xf7\x4f\x1e\xf7\x1c\x6b\x9a\xa4\x33\x2f\xcf\x69\x3a\x68\x30\x41\x4b\xf5\x3a\x60\xf3\xe2\xb7\x8b\x57\x3f\x2f\xa2\xe8\x0b\x9c\x1a\x3c\xe9\x39\x4c\xa7\x7e\xdc\x73\x8a\xc2\xe2\x75\xad\x28\xa3\xbd\xa9\xa6\xed\xd5\xd4\xb1\x97\x38\xa1\x8f\x6a\x48\x1d\x7b\x07\x4a\xb0\x8c\x62\xff\x8e\x04\xfa\x77\xec\xd3\x24\xe3\x12\xf9\x1d\xa5\x37\x55\xdc\x67\x7b\x20\x46\x08\x26\x30\xcc\x40\xa1\x35\x60\xc3\xa5\x61\xdb\xaf\xdd\x80\x48\xc1\x73\xda\xb9\x4e\x16\x4a\x4f\x1e\x9d\x3a\xce\xe3\xd3\xbd\xe9\x02\xf9\xa5\xd2\x55\xc7\xf6\x70\x5c\xbd\x93\xce\x2c\x8c\x17\xb9\xc2\x52\xa7\xce\xe3\xde\x3e\xc3\xd1\x82\xb1\x8e\x6e\xbf\x5e\x7b\x07\xe5\x32\x53\x27\x0e\xb1\x94\xd8\x76\x51\x26\xb0\x7d\x46\x78\x93\x74\x8d\xcc\x28\x31\xd6\xd0\x7d\x13\xb6\x80\xfa\x61\x0d\xe3\x93\x5d\xb3\xb0\x6c\x70\x14\xf1\xe2\x80\x79\xa6\xa2\xf6\x69\x9c\x37\xe2\xfe\x16\xe4\x8a\x44\x29\x45\x19\xfb\x02\x07\x64\xed\xa0\x0a\xa4\x4e\xed\x34\x8b\xa5\x4a\x38\x51\xd0\x75\xd9\x2f\x3c\xdc\x26\x52\x12\x63\x55\xe5\xcc\x72\x9b\x88\x3d\xb2\x99\x90\xe6\x50\xa6\xf1\xbf\x27\x9d\xff\x4d\x0d\xc2\xd8\x49\x2d\xae\x8b\x5e\xb5\xad\x79\xc2\x06\xa7\x72\x8b\xd4\xfc\x23\xe8\x0e\xfe\x08\xba\x64\x00\xf7\x45\x85\x19\x91\x86\x91\xae\x88\x58\xd8\x1a\x7e\x10\x48\x2d\xd0\x1d\x2c\x26\xf4\x86\xe1\xd4\x94\x6d\x72\x5d\x2e\xb4\x60\x29\xc2\x9b\x5d\x30\xc3\x19\x8e\xc7\xa0\x55\x40\x49\x97\x25\xda\xbf\x5d\xbc\x62\xeb\x16\xad\x89\x40\x4b\x49\xe5\x92\x0b\x74\x12\x56\x17\x96\x87\x05\x4b\xde\x57\x0c\x67\x74\xc8\x68\x71\x1b\xb1\xe1\xb1\x3d\x43\xe3\xd6\xf1\x32\x94\x98\xe7\xf6\x7a\x64\x8d\x3f\x1d\xc4\xc6\xfe\xe9\xf6\xd0\x9c\x05\x19\x5d\xb7\x27\x8c\xcf\xb2\x01\x0c\xc8\x82\x5c\x20\xb1\xa8\x74\x07\xac\x0b\xdf\xd8\x1b\xce\x37\x34\xbe\xdb\x1b\x36\x52\x8c\x38\x45\x6b\x50\xa3\xa1\x61\x04\xa4\x3d\x81\x06\xf0\x09\x41\x1e\xab\x5f\xf7\xd2\x0d\xec\xb7\x89\xef\x45\xad\x1a\x02\x66\xff\xf7\xd2\x13\xfe\x44\x25\xe1\xcf\xd4\x10\xfe\x9a\xea\xc1\xff\xe8\x06\xf7\xd6\x0d\xbe\xa3\x62\xf0\x1d\xb5\x82\xef\xaf\x12\xfc\x79\xfa\xc0\xff\x2b\xca\xc0\x9f\xaf\x09\xb0\x39\xcf\xc3\x58\x50\x2f\xfd\x79\x01\x1e\xab\x72\x0d\x04\x64\x5d\x75\x6d\x39\xec\x11\x5c\x14\x61\x8b\x9f\x2c\xe2\x80\x06\x25\xbc\x43\x86\x3c\xcd\xce\x2a\xa3\xa4\x67\x7d\x6e\x4c\x15\x13\x43\x4f\xfd\x35\x59\xa4\xd5\x34\xa8\xad\xa4\xb8\x14\x44\x3a\x3e\x90\x98\x3a\x98\x50\x55\x54\x38\x29\xb5\x75\xd0\x52\x98\xcb\x70\x08\xa2\x90\x66\x85\xa9\xaa\x13\xfb\x69\x57\x32\x43\xa8\x04\x0d\xaa\x95\x20\x56\xaf\x6f\x6f\x25\x63\xab\x7a\xf5\x8d\xba\x95\x24\x5f\xd1\xad\xb6\x77\xcb\x5e\x5a\x56\xad\x57\xaa\x5a\xd6\x37\x77\x45\xa9\x6c\xe9\x4d\xa8\xa2\xfe\xf3\xd4\x2e\x1e\x96\xa9\x49\xe5\xc2\x2c\x2e\x19\xfe\xf1\xee\xc7\x8b\x72\x5e\xf3\xeb\x58\xde\x24\xbb\x5c\xa1\x35\xcd\x9b\x64\xe6\x0a\x06\x10\x12\x9f\xbb\x3d\xda\xeb\x4b\xf9\xb1\x7a\xc2\x3e\xbb\xc6\x85\x21\x6f\x28\x49\xb0\xa7\x1a\xd4\xd3\xae\xf1\x63\x03\xd0\xa9\x06\x74\xda\x35\xde\x35\x00\x1d\x69\x40\x47\x5d\xe3\x1f\x15\xa0\x67\xbd\x83\x83\xd5\x73\xa7\x04\xb3\xf3\xe4\xe7\x70\x49\x03\xb3\x4f\x74\x48\xd7\x75\x25\x98\x61\xf0\x38\x6c\xbc\x90\xda\xb7\xcd\x9d\xf5\xa3\x97\xd1\x9e\xd3\x3f\xfe\xc7\xbb\x5f\x2e\x3e\xde\xab\xd7\x9c\xe5\xb1\xa3\xfc\xa7\x34\xa8\x92\xd3\x35\x3e\xd6\x7b\xc0\x79\xfa\xf4\xa4\xd7\x3b\xed\x9f\x9d\x9d\x69\x1d\xa6\xa6\x37\x0e\x82\x73\x76\x74\x76\xdc\x3b\xef\x1f\x6b\xa5\x44\x62\xd7\xf8\xa5\xa1\xc8\xf1\xf9\x49\xa5\x16\x48\x69\x1c\x1a\xa7\x82\x99\xe1\xfc\xf3\x07\xa7\xf9\x1a\x7f\x94\xa4\xf6\x47\x2f\xa2\x79\x4e\xf5\x3b\xfc\x4a\x46\xd3\xad\x30\x38\xba\x71\xb5\x0b\x68\xfa\xc1\xf1\x50\xf7\x08\xd8\x72\x76\xec\x02\x2e\x91\x39\x42\xbf\x11\xf8\x18\x73\x77\x1a\xfc\xda\x6c\x34\x40\xe5\xf4\x88\xdb\x75\x17\x71\x1c\xc6\x57\x78\x59\x9c\x9f\xae\x5f\xd1\x98\xa6\x5e\x9e\xa4\x22\x55\x78\xeb\x94\x77\xb0\x68\xf0\x39\x4f\xe6\xdc\x47\x0d\xb6\x50\x80\x1f\x5d\xdf\x14\x32\xa5\x3f\x3a\x1a\xe2\xad\xaf\x16\x27\x9f\x87\x0e\x0b\x19\xf6\x67\x4a\x61\xbc\x0d\xcd\x0b\xe3\x45\xda\x12\x1b\x44\x4b\x61\x88\x24\x85\x6e\x70\xa4\x52\xf5\x6b\x16\x55\xe0\x2d\xed\xb3\xdb\x1b\x13\xa8\xf7\xab\xdb\x1b\x7e\x7d\xd6\xde\xa8\xe1\xd7\x2a\x19\xb2\x4a\xb3\xf7\xa4\xbd\xdc\x63\x08\x9d\xd7\x46\x7e\x53\xc7\x8c\xb5\xa3\x36\x17\xff\x70\x87\x94\x24\xf7\xf2\xd6\x3e\x15\x9e\x3b\x9a\xbf\xc1\x0d\x5d\xe9\xaa\x21\xaf\xf9\x86\xae\xc6\xdc\x6d\x48\xa5\x45\x1d\xfd\x6e\x57\x40\x28\x2d\x03\xae\x34\xc9\x66\x23\x8f\xd1\xa4\xe7\x84\x0e\x53\x89\x57\x51\xb9\x1e\xa3\x54\x2c\x22\x3e\x0d\xe5\x84\x90\x6e\x7a\x15\xbe\x73\xab\x9d\xf0\xb8\x7f\xd8\x23\x6b\x6c\xf1\xf6\x71\x6f\x40\xa7\x73\x82\x33\x26\xa6\x7d\x42\x5a\xf8\xbd\x56\xb1\xdb\x47\x11\xf1\x5d\xea\x6e\x00\x60\x7c\xd9\x46\x4f\xb7\x5b\xa8\x83\x8f\x9e\x7f\x8c\x0e\xa9\xc5\xc1\xd7\x2e\xa9\x85\x97\xd4\x5e\x7e\xf5\x96\xb5\x0b\xac\x90\x5a\x5e\x67\xc3\xa0\x4c\x3c\xa6\xd4\xba\x74\x91\x19\x34\xf9\xf7\x05\x5e\xee\xfd\xf6\xe9\x2d\xba\xed\xf0\x0f\xe1\xd9\x08\xa7\x45\x90\x81\xbf\x95\x58\x1b\xca\xbe\x40\x71\x84\x9c\xcd\x23\x9a\x53\x51\x44\x7c\x6b\x81\x3f\x24\x34\x44\x1a\x10\xa0\xf0\xd1\x04\x27\xe5\xa9\x38\xc5\xfa\xcf\x05\xcd\xd8\x8e\xc7\xe2\x3f\x07\x4a\x99\xaf\xff\xdf\x82\xa6\x2b\xdb\xfb\xea\x2d\xcd\xf5\x22\x8d\x06\x6a\x0b\x99\x12\xeb\x5d\xac\xe6\x74\x60\x7c\xcd\x92\xd8\xb0\xb2\x85\xef\xd3\x2c\x43\x20\xfe\x61\x43\xa0\x1b\x70\xf5\xb3\x28\xa3\x09\x73\xe1\xa7\x92\x57\x90\x82\x67\x2b\xb5\xfb\x49\x9c\x25\x11\xb5\xa3\xe4\xca\x34\x20\xb7\x13\x25\x5e\x10\xc6\x57\x1d\x4e\xc2\xa0\x63\x74\x55\x92\x88\xd6\x17\x1c\xb5\xa4\x4b\x3b\xa6\xb3\x32\xf0\xb8\xe0\x4e\xf5\xca\xf8\xe0\x21\x5e\xd9\x59\xb6\xea\x01\x7d\xc9\x63\x06\xa0\x9b\x2f\xe2\x81\xec\x41\x15\x5e\xb8\xe9\x81\xe3\x9e\x5b\xfe\xdc\x6c\xb4\xd5\x0e\xd8\xcd\x94\x85\xd5\x42\x95\x9b\x26\xe5\xf0\x8b\x76\x71\x62\xaa\x5c\x28\xef\x89\x48\x0e\x1c\x2a\x8e\xdc\xea\x95\x64\x79\xd5\x9a\x9f\x4d\x0a\x06\x64\x45\xb6\x38\x75\x97\xd8\xfe\x41\x57\x6e\x66\xdf\xd0\xd5\x66\x83\x77\xc5\x00\xa5\xcc\x23\xda\x25\x34\x71\x65\xfb\x86\xae\x3a\x49\xda\xf1\xe0\x9a\x99\xd1\x72\xd0\x1c\x94\xed\x60\x95\x04\x58\x49\x50\x56\xc2\x73\x78\x15\xca\x05\xb7\x5a\x05\xd2\xa7\x9e\x21\x72\x45\x39\x35\x4c\x15\x44\x83\x33\x40\x68\x18\x96\x01\xa5\x2c\x40\x69\x8c\x87\x4a\xb4\xab\x1a\x91\x73\x90\xec\xc1\x68\x3e\x26\xd9\x68\x3e\x76\xd9\xaf\x82\x14\x70\x88\x2c\x6d\x4b\xc0\x0c\xc5\x8e\x40\x48\x5c\xea\xc4\x31\x88\xd8\x06\x79\xc4\x73\x9a\x74\xa8\x2a\x87\xe1\x10\xc3\x4f\xed\x2a\x73\xe6\xae\xd9\x06\x27\x0a\x63\x3a\x50\x6f\xac\x17\xc3\x06\x8b\x2f\x30\x90\x90\x19\x02\x81\x2d\xca\xb7\xde\x8a\xf6\x90\xce\x30\x89\x2f\x05\xac\x51\xfa\x30\x54\x6c\x18\x10\x6b\x30\xce\x2d\x1a\x07\x00\x4d\xd6\x60\x89\x03\xb7\x04\xf6\x3d\x76\x2b\xdf\x9b\xcd\x7a\x92\x2c\x69\x06\x6e\xf5\x95\x3c\x1b\x72\xf8\xb1\x3f\xc7\x3c\x50\x6a\x18\x88\x5a\xaa\x97\xaf\x14\x81\xa3\x3b\x36\xcb\x0a\x1a\xdc\x9a\x91\x5c\x8c\x09\x27\x5a\x5c\xa5\x16\x9d\x40\xe8\x34\xc7\x0c\x9c\xd3\x4b\x2c\xca\x98\x92\x65\x3d\x73\x36\x1b\xf6\xf7\xb9\x0a\xc2\x6f\xb5\x91\x51\x6f\x8c\xe1\x23\x65\x15\xf2\x56\xf9\x5a\x49\x6b\x1a\x90\x64\x3a\xcd\xfc\x94\xd2\xd8\x20\xc3\x7a\x71\x1b\x9d\x55\x83\x30\x9b\x47\xde\xca\x35\xe2\x24\xa6\x46\xa1\xc0\x61\x5f\xd6\x5a\x3d\x49\xf0\xb2\xd4\x24\xe1\x34\x8a\x08\x56\xd5\x84\x2d\xe4\xc8\xa9\x01\x77\x86\x9b\x9a\xa6\x38\xd9\xba\xf5\x7c\xb7\x2d\x92\x57\x10\xde\x1a\x64\xd8\x72\x6d\xbf\xc4\x63\x90\x36\x9e\xc6\x8b\xfa\xaf\xae\xc3\x28\x30\x05\x31\x12\x9f\x17\x04\x3f\xdd\xd2\x38\x67\x28\x99\x32\x62\x1a\x7e\x14\xfa\x37\x46\x19\x26\x9c\x62\xf0\x0f\xbd\x72\x8c\x14\x63\x1a\x78\x13\x4d\x1f\x8c\xca\xb8\x6d\x03\xfd\x8e\xe3\x51\xad\x86\xad\xbc\x70\xc3\x83\x14\xad\x8c\x02\x4c\xcc\xfe\xe9\x1a\xf3\xa5\xb1\x07\x43\x4d\xa2\xc4\xbf\x31\xf6\x6d\x81\x3a\xe0\x8c\x72\x11\x49\x83\x31\x88\xe4\x8a\x06\x80\x87\xb1\x02\x97\x09\x0a\x40\x18\xc7\x34\xfd\xf5\xe2\xdd\x5b\x40\xce\xf3\x9b\x5a\xd9\xc8\x21\x95\x11\xdd\x41\xd4\x8e\x79\xab\xc8\x4f\x2e\x3b\x15\xc1\xd0\x44\x46\x05\x1f\x08\x16\xe8\xa2\x38\x20\xeb\x2a\x1b\xec\xa0\x6d\xd7\x2c\x56\x88\x03\xb0\xdd\xd4\xd5\x18\x13\x2e\xc2\x4b\xfa\x74\xf9\x09\xd7\x8a\x3e\xe7\x5e\x8a\xbc\x36\x6c\xc8\xfd\x29\x0e\xd0\xc6\x33\x0b\x63\x53\x93\xaa\x02\xa7\xd5\x26\x48\x87\x9a\x20\x2d\xeb\x7a\x5e\xaf\x42\x95\xae\xb2\x5a\x20\xa9\x91\x58\x24\xc8\x5b\xde\x87\x20\x67\x4c\x8a\x86\xf6\xe1\x95\x84\x7a\xed\x87\x4d\x15\xd7\xc7\x4b\x99\xad\x4d\x05\x70\xf6\xb6\x94\xba\x6b\xaa\x1a\xe8\x69\x29\x56\x32\x07\x0f\x54\xa5\x49\xf9\x76\x3e\x6f\x80\xae\xcd\x8a\x26\xb1\x53\x10\xfd\xe6\x1d\x76\xa9\xb8\x73\x66\x2a\xcb\x38\xf4\x38\x8f\xd1\x0c\x97\x71\xf6\x51\xbd\x96\x61\xdd\x95\xae\x92\xb5\x47\x58\xa3\x1d\x0a\x98\x08\xe2\x93\xb3\x1a\x2e\xd8\x1c\x2c\xe3\x07\xe9\x69\x9b\x8d\x31\x8f\xbc\x30\xe6\xd7\x95\xa6\xe1\x92\x06\x8c\x86\xdf\xe2\x50\xc2\xe3\x97\xf4\x29\x2d\x93\xb9\x09\xad\xb2\xd5\xd0\x8e\xfd\xb9\x4e\x36\x67\xea\x6d\x1a\x7a\x39\x95\xc8\x2b\x9e\x00\x0b\x51\x05\x9e\xd6\xc3\x81\x17\xfc\x1c\x56\x43\x23\x08\x1e\x97\x91\x11\xb8\x93\xe8\x15\xe5\x87\x41\x2e\xe6\x94\xb7\xf8\x47\xce\x78\xc8\x4f\xea\xaa\x0b\xc3\x02\x16\x36\xc5\x43\x56\x45\xf4\x64\x21\x0d\xf4\xcf\xdd\x3e\x59\xc3\x89\x20\xfb\x67\xb3\x59\x14\xa5\xee\x8d\x29\x25\xc5\xa3\xf2\x67\x69\x6c\x2a\xca\x11\xf9\x00\xf7\x98\x6b\xe1\xac\x77\xb6\x11\xaa\xaf\x0f\x13\xb7\x1d\x35\xf4\x31\x2f\x07\x0e\xaf\x6e\x79\xfc\x60\x36\xf4\x0f\xd1\xcf\x23\xb0\x4f\xd1\x46\x75\x11\xfa\x37\x6e\xd9\x91\x2c\x27\xe1\x2d\x50\x9e\x21\x40\x7b\xa2\x5f\x5a\x12\x91\x5d\xfc\x1b\xf4\x6d\x85\x2e\x81\xda\x15\xac\x78\xba\x38\x54\xeb\x91\x25\xb4\xc3\xc2\x27\xfd\x21\xaf\x92\x2b\xde\x10\x4b\x64\x20\x81\x01\xd1\x80\xfd\x53\xc8\xf8\x94\xbc\x40\x6b\x8c\x06\x5d\x3b\xab\x5f\xbf\x26\x6b\x6a\x63\x68\xea\xf7\x49\x40\xb9\x38\xe1\x6b\x32\xa9\x44\x6f\x82\x9e\x50\x3b\xa6\x3a\xd6\x26\x91\x0d\xa8\xd5\x94\xf0\xeb\xd8\x8a\x50\x4f\x30\xac\x2f\x69\x55\xd7\x15\x4b\xde\xfd\x94\x14\x45\xe2\x35\xd6\x88\x42\xb8\x45\xa5\x59\x5e\xb2\x26\xb5\xaa\x3c\x80\x50\x17\x2f\x84\x4b\x8d\x3c\xda\xa5\xb0\x00\x4c\xb5\x42\x48\x94\x99\xa5\xfe\x94\xc0\xec\xb2\xe5\xf9\xbe\x74\x6b\x17\xed\x80\x93\x40\x45\xab\x56\x74\x05\xc0\xb5\x53\xa3\x90\x6a\x17\xc0\x49\x36\x01\xee\x13\x79\xc5\x9e\x4b\x84\xb0\xaf\xdc\x67\x89\xf8\xbd\x65\x7d\xf8\x7d\xfb\xe2\xc0\xbe\x26\x34\xcd\xaf\x3f\xb1\x2d\xa7\xdd\xdb\x15\x04\x6f\xcb\x62\x92\xa4\x21\x8d\xf9\x8e\x13\x8d\x7d\x65\xc2\x66\x63\xe4\xc9\x9c\xaf\x19\xf3\x70\x49\xa3\xec\x23\x4d\x61\x02\x03\xa8\x96\xb4\xd9\x9c\x9d\xc8\x83\x0c\x60\x0f\x82\x96\x3b\x86\xcb\x67\x10\x99\xb2\x32\x69\x90\x30\xb9\x39\x78\xf9\xed\x56\xf2\x4b\xc9\x0a\x57\x3d\x65\x2e\xfb\xda\x6c\x8e\xef\xbf\x14\x56\x62\xfa\xe9\xb2\xa2\x21\x0a\xdf\xa5\x88\xe4\x22\x2f\x4e\xcb\xdb\xa0\x6a\x5c\x3a\x2d\x78\x9b\x56\x41\x6b\xf0\xb6\xa6\x1b\x94\xbb\x6e\x5d\xc2\x1c\x32\xac\x4a\x08\xb9\xce\xf2\xd2\x5b\x86\xd9\x65\x70\x54\xd9\x99\xba\x82\xb8\x91\x33\x66\xf2\x5d\xcd\xe3\xe2\x62\x9e\x64\x21\xf0\x81\x91\xd2\xc8\x83\xfd\xdc\x43\x02\xde\x29\x31\x47\x59\x5f\x28\x53\xe7\x36\xcc\x8a\xfb\xce\x24\x95\x80\x9d\xd7\x7b\x1f\xa9\xad\x12\xd2\xb3\x61\xec\xb4\xc6\x97\xd2\xbf\x32\x8c\x0f\x18\x9c\xc7\x66\xaf\x2b\x27\x26\x0f\x2e\x05\xdf\xea\xed\x1c\x05\x5c\xc2\x3e\xe9\x93\xa6\x21\x01\x09\x7e\xd8\x43\x38\xd4\x5b\xdb\x16\x3a\x71\xc8\xc3\xef\x55\x83\xae\xad\xde\x70\xe6\xf7\x79\xb1\xeb\xef\x78\x6e\xad\x04\xd1\x07\xdc\x5b\xe4\x09\xc6\x67\xc4\xb6\x30\xde\x02\xee\xbe\xbd\xb2\xd9\x6f\x93\xf0\x40\x34\xaa\x3a\x43\xb8\x0c\x31\xab\x02\x86\x0c\x59\x19\x98\x8f\x3f\xa3\x93\x93\x9c\x9f\xf8\xad\x9c\x30\x2c\xe5\x01\xc6\xb2\x20\xf2\x04\x4b\x91\x16\x12\x15\x7e\xd7\xf2\x15\x79\xe0\x56\x05\xd1\x66\x53\x1d\x0e\xa5\x5b\x9e\xd4\xc5\xdd\xfd\x06\x72\xb3\xe1\x37\xb3\x52\x2f\xce\xd8\xe2\x25\xc9\x57\x85\xad\x0b\xb2\x15\x25\xfb\x0a\xf5\x07\x57\x61\x31\xae\xee\x21\x5d\x98\x34\x94\x08\x5d\x03\x7e\x46\x6c\xf2\x18\x5d\xce\x1c\x96\xd1\xe5\x78\xba\x06\xe1\x47\xee\x3b\x4a\x74\x1c\x62\x14\x82\x38\x5d\x0c\xde\x02\x1b\x30\x19\xf6\x32\x8a\x4c\xe3\x31\xbc\x21\x04\x5b\x2d\x7e\xef\xfc\x16\x95\x51\x29\xcf\x4a\x69\xc6\x25\xd3\x88\x2b\x12\x20\x8c\xac\x06\xe9\x3c\x2e\x83\x0a\x8b\xa2\x92\x5e\xc3\x92\x3f\x09\x7f\x9b\x46\x8c\xb7\x32\xd4\x19\xc1\x15\x60\x31\x09\xc2\xdb\x30\xa0\xa6\x43\xe4\x92\x60\x6a\xcb\x05\x9f\x8b\x57\x69\x18\x80\x24\x69\x1a\x8f\x49\x92\xe7\xc9\xcc\x78\xd1\x1b\x1c\xf6\xc8\xe3\x86\xee\xd7\x24\xd9\xf6\xc6\x1b\xcb\x4b\x56\x17\xc8\xe1\x07\xd2\x2f\x68\x25\x44\x1d\x88\x9c\x2e\x73\x83\xd8\x54\xd3\x2d\x45\x5c\xec\x52\x8f\xcd\x68\xfe\x32\xcf\xd3\x70\xb2\x60\x03\x1e\x78\xb9\x77\xb8\x3c\x04\x9d\x49\x0c\x05\x5d\xe6\xaf\xd0\x36\x25\xd5\x5c\x2e\x08\x78\x2c\x82\x5a\x07\x14\x0d\xa2\x54\x8f\xf9\x2e\x97\xc2\x75\x43\xac\x05\x2d\x48\xf0\xee\x68\x0b\xad\x81\x16\x1e\x12\x2a\xa1\x3c\x9b\x62\x12\x4d\xb3\x11\xde\x3f\x6e\x43\xa1\x06\x5e\x30\xdb\x23\x2f\x54\x05\x0b\xd1\x57\x87\xbd\xa3\x32\x1c\x3b\x0f\x8b\xa6\xa0\xe8\x93\x5f\x5a\xf4\xcc\x2f\x0f\x3c\x95\x7e\x90\x2e\x99\xc2\x78\xfc\x77\xd5\x26\x65\x01\x5c\xca\xdc\xf6\xa5\xad\xf4\x20\x59\xf1\x81\xd5\x74\xf9\xfb\xaa\xa5\x0f\x51\x38\x5b\x94\xc7\x15\x28\x8f\x7f\x51\xcd\xb1\xcd\x3e\xb6\x97\x1e\x69\x71\x4a\xaa\xdc\xbc\x9f\x0a\xf9\xed\xd2\xac\x4d\xe3\xfc\x1e\x61\x64\xda\x65\xdb\x83\xa2\xca\xec\x17\x56\xa6\x2a\xdc\x1e\xeb\x8c\xbc\xb7\x70\x6b\x59\x66\x1f\x16\x76\x86\x09\x58\x9d\x0e\x4d\x07\x57\x21\x2b\xe4\x36\x6b\x68\x4c\xfd\x36\xf4\x09\xc8\x39\x3e\x4f\xe6\x15\xbd\xbc\xb0\x90\xdd\x06\xed\x3a\x39\xb6\xb9\x55\x29\xbf\x16\xd9\xf5\x32\x5b\xd4\xf2\x07\xa8\xb9\x58\x51\xab\x9e\x0b\x4a\x3e\x5f\xea\x53\xef\x8e\x2d\x14\x6a\xe9\x95\xd0\x16\x58\xe6\x2f\x69\x18\x80\x6a\xb3\xa7\x0a\x61\x49\x94\x65\x3f\x29\x51\x32\x5b\xf7\x17\x08\xb3\xff\xc6\xa2\x22\x8d\x1f\xb6\x83\xd8\xca\x14\x7b\xb1\x95\xb6\x0d\xd0\x75\xf0\x92\xa1\x99\x22\x2e\x75\xf2\x3f\x55\x21\x5f\xa1\x42\xfe\x57\xd0\xc6\xc5\xf3\x42\xcb\x30\xe3\x4c\xc1\x58\x49\x11\xcf\x8c\xa7\xd6\x3b\x75\x76\xd4\x29\xea\x2a\x3b\x74\xec\xfd\x34\xf6\x15\x68\xec\x7f\x19\x75\x7d\xd5\xaa\xae\xff\x2f\x70\x0a\xda\x5f\xf7\xb3\x21\xde\x73\xd0\xa6\x02\xf2\xec\x16\x4d\xb0\xb1\x88\xd5\xa8\x1f\xe2\xeb\x79\xb5\x0d\x00\x77\x96\xf6\x22\x5a\x7d\x29\xa4\x7c\xb2\x0a\x1d\xec\x0c\xa4\xa4\xc3\x5f\x58\xcf\x3a\x50\xca\x10\x01\x55\x01\x45\x89\x6d\x58\xa9\x82\x0d\x40\xbd\x86\x90\x67\x80\xb4\x2c\xf5\x0b\x48\x93\xc5\x0a\x24\x9d\x6b\xd5\x4d\x32\x8a\xb7\x4d\x11\x55\xea\x39\x0e\x06\xa0\xd6\x4f\xaa\x40\x0e\xbe\xae\x1d\xf6\xd4\x22\x7e\xdb\x2b\x5c\xfe\x97\x39\x9e\x30\x88\x03\x69\x1e\xfe\x95\x7d\xf2\x88\xd5\xc4\x12\x67\xc3\x0d\x79\x63\x05\xcb\x3b\x6f\xbe\x25\x2c\xb6\x63\xf5\x64\xa8\x6b\x5e\x2b\x97\xfb\xc1\xd7\x9f\x04\x15\x12\x91\xa9\x36\x64\xe4\x8c\x89\xd5\x92\xd5\x1b\x73\x1a\xbc\xe0\xeb\x22\x43\x85\xb9\x95\x08\x51\x2f\x27\xa3\xac\x99\x28\x28\x68\x00\xfc\xa0\x76\x71\x63\x7c\xf2\x99\x37\x37\xcb\x4a\x89\x40\x8a\x25\xf8\x69\x8a\x14\x38\x62\xa4\xd5\x1a\x48\xa3\x04\x12\xec\x0c\x82\x48\xba\x50\xa7\x61\x40\xd6\x02\x09\xcb\x2a\xf6\x9c\x8b\x3f\xd2\x6b\xef\x36\x4c\x52\x11\x00\xf6\xd7\xf0\xea\x3a\x42\xb5\xab\x3a\x2f\x5b\x41\xef\x61\xd7\x8f\xe8\x15\x8d\x03\xf1\xcc\x31\xfb\x3d\xac\x9f\x21\x80\x8f\xe2\x67\x6f\x4a\x5d\xfe\x00\x2f\xba\xf1\xbc\x0d\x63\x0a\xaf\x18\xe0\xa1\x2c\x0f\x1d\x8c\x6e\xe8\xe8\x05\xaa\x26\x29\x3b\x1b\x74\x4f\x84\x54\xf5\x5a\xa3\xe2\xcc\xfd\xe9\x6a\xa2\x42\x59\xc1\x91\x9d\x5e\x4d\x4c\xe3\x6f\xc1\x39\xfb\xdf\x20\xc4\xb4\xcf\x89\xfa\xc4\x9a\x74\xf7\x93\xbd\x00\x9e\x53\xca\xb9\x6a\x44\xd6\x91\xdd\xee\x59\x35\x4b\x16\x19\x4d\x6e\x69\xaa\x7b\x57\xb1\x6d\x96\x6c\xad\x50\xf4\xe1\x0e\x8b\xd2\x09\x11\x1e\x0c\x61\x07\x02\x17\x37\x9c\xec\x81\xa7\x0c\xc3\x17\xb9\xae\x2b\x3f\x94\x93\xa7\x6a\x28\xea\x83\x03\x13\xfd\x12\x70\x78\x45\xf6\x8b\xa6\x44\x51\x06\xd4\x3d\xed\xc5\x10\x74\xa6\x57\xaa\xe1\x25\xf9\xc3\x8b\x6a\x15\x64\x08\x1f\x49\x1a\x5e\x85\xb1\x17\x89\x92\x12\x8b\xea\xd1\x5b\x47\xc8\x9d\x94\x15\x78\xab\x47\xd8\x4e\xb0\x0e\x0a\x07\x67\xbc\x4e\x7e\x42\x5b\x48\x26\x1b\xa9\xed\xc3\x50\xb7\x5b\xf2\x36\x1b\x35\x09\x2f\x32\xd4\x52\x5c\x8d\x13\xcd\x5a\x3e\x29\xb4\x23\x40\xe9\xc5\xc1\x7d\xd4\x86\xbb\xf9\x66\x91\xd7\xd8\xe6\xd1\x6e\xbe\x81\xc9\xf3\x10\xd6\x39\x38\x80\x36\x54\x9e\xc7\x31\xb4\x91\x33\x34\x36\x68\x18\xb0\x79\x32\x37\x49\xc3\xe8\xf0\x81\xac\xf3\x82\xe5\x58\x82\x51\x02\x1a\xd1\x9c\x76\xea\x30\x4c\x2d\xdd\x32\x5c\x64\x5d\x1f\x9c\x2d\xe0\xc5\xf6\x81\x29\xa4\xee\x8d\xfd\xc7\x45\xdd\x8e\xce\xe4\xdb\xfe\xba\xac\x30\x23\x88\x92\xff\x10\x31\xfd\x21\x0d\xf4\xbb\x97\x5b\xc0\xbe\xa7\x78\xae\x9a\x1c\x6c\xbc\x3c\xd1\xa4\x41\x55\x02\xef\x22\x60\xc7\xcb\xf5\x92\x46\xd1\x82\xd2\x5e\x84\xfb\x63\xfd\xed\x4d\x0d\xb1\xbd\x08\x8d\x02\x7f\x9a\xb5\xcb\x1e\xa6\x3e\x09\xb2\x9c\xd8\x59\x92\xe6\xf0\x34\xc0\x9a\x3f\x3b\xc9\xe6\xdf\xc0\x40\x6d\xd8\xb0\xf2\x24\xa2\xa9\x17\xfb\x74\x60\x40\x6c\x75\x26\xb7\x91\x3d\xca\xa5\x99\xb2\x51\xb5\x16\xa1\x36\x0f\x46\xe3\x61\x6b\x9d\xac\x09\xa6\x11\x85\x35\x55\x1c\x5f\x6b\xc4\x37\x65\xd9\xd4\x66\xbf\xf4\xfb\x0b\x5a\x04\x38\x35\xbb\x20\x8a\x57\x4c\x7d\xb2\xc9\x8b\x79\xe1\x73\xd7\x19\x86\x87\x87\x9c\x3b\x55\xa0\x51\x38\x76\x2b\x01\xdc\x9a\x26\x45\x41\xda\x5b\xc6\x05\xe0\x67\xd8\x72\x40\xcf\x6b\x57\x45\x1a\x8d\x63\x8c\xe4\xeb\x56\x53\x95\x5a\x87\x34\x24\x72\xdb\x4c\x43\x1e\x37\x88\x70\x53\xcf\xf5\x9e\xde\x0f\xd5\xf9\x73\x01\x7e\xc4\xbb\xe7\xd9\x45\xe5\xad\xcc\x6f\x9f\x68\x42\xbd\x78\x19\xfb\xd7\xea\x35\x3b\x14\xcd\xfc\x9d\x76\x96\xb3\xe5\xcd\xe7\x21\x82\x28\xae\x2b\xc6\xc1\xdf\x7a\x8e\xe3\x1c\x0f\x0d\x91\x57\xf5\x7e\xe5\xf1\xb9\x71\x4d\x2b\x7d\x87\x33\x9a\xe6\x3f\xd2\x69\x92\x52\x13\x0b\x5a\x1a\xc0\x34\x4c\xb3\x1c\x7c\x57\x64\xa5\x49\x0c\xbe\xe3\x6e\x65\x95\x52\x45\xae\x7c\xfd\x41\x13\xd2\x34\xe6\x2f\x74\x68\x35\xd4\x5d\x2b\x45\x69\xa3\x8c\x02\xae\x30\xd8\xbd\x5e\xd0\xe3\xb3\xe2\x99\xdb\x13\xb3\xab\x81\xcc\x76\x8a\xa0\xe7\x14\x72\x9a\x26\x8b\x72\x0d\x8c\xc7\xcd\x9c\xd0\xc8\xd5\x10\x5e\xd1\x9c\x8f\x5e\xf6\xe3\xea\xc2\xbb\x82\x87\x59\x8d\x6c\xee\xc5\x06\xe8\x35\x50\xa4\xb1\x5f\x15\x7d\xf8\x65\x14\x7d\xc8\xaf\x69\xca\xd6\xfb\xcc\x6d\xea\x6d\xbc\x58\xd4\x00\x5d\x3e\xa5\xc7\xaf\xe7\xd6\x14\x85\xea\x03\xf8\x91\x5b\x83\x19\x85\xf0\x7a\x8c\x52\x31\x53\x21\x84\x70\x5a\xcb\xeb\xd8\x51\x9d\x09\x70\x18\x1b\xdb\x01\x0f\x42\x4c\x52\xea\xdd\x14\xe0\x5c\xdd\x4c\xfe\xb7\x71\xd1\x5e\x8a\x51\x95\x87\xeb\x8d\x5b\x57\x5b\x66\xaa\xfa\x5c\x3b\xd3\x88\x73\x86\xfd\xa8\x88\xea\xed\xdc\x6f\xaa\xb4\x88\xf2\x9a\x62\xc3\x86\xf7\x07\x17\xe5\xbb\xb2\xea\xff\xf0\x48\x7f\x93\xf5\x07\x53\xd7\x80\xd4\x95\x94\xac\xb7\xe5\x9a\xeb\x2c\xf7\xd2\xbc\x69\xf5\x5c\x84\xf0\x60\x34\x4e\x19\x23\x4e\x04\xcf\xab\x2a\xef\x2d\xde\x97\xb8\x85\x83\x8b\x14\xfe\xbe\xc6\x47\x1c\xf8\xc1\x4a\x9e\xcc\x9b\x70\x67\x18\x1c\x23\x59\xe4\xea\xd2\x23\x6a\x5c\xc4\xb5\x3a\x49\x61\xf5\x4f\x1c\x18\x9f\xfb\x29\x7b\x28\xb9\x51\xc7\x43\x23\xb4\x17\x04\x62\xe1\xa8\xf9\x82\xea\x52\xab\xe1\x3e\xa2\xe4\xa7\x8a\x77\x4d\xdb\x12\xcf\x84\x19\x57\x99\x92\x38\x5a\x75\x92\x98\x8a\x77\x64\xc0\x54\x5c\x94\x53\x0f\xad\x50\x43\xc1\x4c\x6a\x05\x0a\x10\xa8\xc0\x85\x74\x7e\x52\x5b\xa3\xbf\x13\xc6\x53\x17\xf5\x46\xea\x65\xf6\xd3\x7c\x7f\x65\x7b\xe4\xd7\x34\xf7\xc2\xa8\xbe\x0e\x2b\x99\xf7\x3f\x32\xde\xeb\x5a\xe1\xf2\x67\xe1\xe6\x89\x59\xe5\x77\xa3\x57\x90\x74\x05\x5d\x82\x13\xa8\x1e\x09\x91\xf7\xdc\xaa\x82\x72\xd5\x84\x52\x39\x8d\x75\xf1\xed\xc6\x17\xab\x81\x16\xd8\x42\xf3\xbf\xd5\x4e\x46\xef\x71\x63\x08\x62\x43\x19\x01\x76\xaf\x3c\xe3\x0a\x19\x17\x80\xcc\xdd\xc3\x47\x15\x67\x85\x97\xe1\xa6\x06\xf7\x98\x72\xb4\xc5\xbe\x35\x2b\x2f\xf8\x7e\xbe\x4e\xee\xc4\x05\x6e\xf6\x5b\xa4\xff\x1a\x06\xf2\x0e\x38\xfb\x2d\xd2\xf1\xe9\x0f\x91\xf3\x49\x79\x40\x6e\xaa\xf7\xe3\xb4\xec\x46\x3d\xbb\x68\x8a\xc5\xc5\x1f\x47\x5b\x5a\x2b\x99\x1b\xfc\x5e\xfe\xfc\x62\xa9\xa1\xd3\xe4\x0e\xb1\x6b\x0c\x0e\xe2\x49\x36\x1f\x1a\xdd\x12\xb4\xa8\xef\x04\xc8\x9a\xba\x94\xd3\x21\xfb\x06\xef\x7a\x69\x0e\x80\x65\xbf\xe1\x85\x5f\x6a\xe7\x5e\x7a\x45\xf1\x25\x67\x36\x38\x22\x66\xd6\x3f\xcd\xb9\x97\x5f\x6f\xb2\xdb\xab\x4d\x4a\xfd\x7c\xe3\x87\xa9\x1f\x51\xf2\xc3\x13\x2d\xb0\x42\x95\x9d\x91\x47\x18\xfe\xdf\x5d\xca\x9f\x30\xfb\x7d\xb3\xa1\x76\xe4\xad\x68\xfa\x7b\x99\xfd\x45\x66\x7f\x91\xd9\x5f\x20\xfb\xab\xeb\x28\x6f\x61\x09\x57\xf3\x98\x7a\x29\xcd\xf2\x8f\x2c\x71\x58\x17\x60\xbb\xde\xa4\xab\xbe\xf3\xc7\x0b\x2b\x0f\x7e\x7d\xed\x76\xc7\xf2\x0a\x34\x17\x69\x6a\x4b\xd1\xc8\xfa\xbb\x2b\xdc\xd3\xc3\xf8\x96\xa6\x39\x0a\xfa\xdf\x89\x02\x02\x56\x02\xb4\xd8\x6e\x79\x93\x51\x3c\x29\x0a\xd7\xfd\x6d\x7c\x0d\xf0\x10\xcc\x49\xf6\x52\x7d\x81\x51\x7f\x8e\x94\x9b\x85\xe7\xf3\x34\x59\x86\x33\x2f\xa7\x68\xc2\xc2\x20\xe1\xc9\x22\x0e\xcc\x2a\x0d\x3c\xe1\x77\x82\x57\xb5\xaa\x25\x5d\x0d\x3f\xa9\xe6\x1f\x1e\x0e\x45\xbf\x29\x35\xcd\xc2\xb8\x86\x69\xb3\xa9\xd0\xaa\xee\x0a\xab\xc0\xc3\xf0\x99\x06\x3b\xc4\x4d\x27\x3e\x08\x38\xde\x6c\xf8\xaf\x6e\x6f\x4c\x40\x07\x63\xa4\xf3\x4c\x7b\xf9\x8c\xdf\xce\xf8\xfd\xe0\x40\x82\xd9\xcb\xe7\xa2\x9d\xeb\x0a\xb1\xde\x24\x13\x7d\x70\x28\x71\x90\x67\x2d\x79\x80\x8b\xbc\x08\x07\x61\xb7\xc7\xf5\x3f\x59\x37\xe4\xc9\xda\xc9\x3a\xec\x76\xf9\x46\xe0\xf0\xb0\x10\x60\x50\xf3\x33\x87\x94\x54\xf0\x90\xed\x70\x2f\x04\x10\xc9\xac\xb1\xb0\x2b\xe7\x65\xa8\xf7\xec\x3f\xd3\x1c\x2f\xe8\xcc\x93\x3b\x53\x52\x29\x2e\x2e\x00\x1a\x7b\x49\x0e\x39\xdf\x59\x7d\xd2\x6d\x83\x5e\x71\xe8\x55\x97\xff\x75\x78\xb1\x2f\xac\x18\xb2\x92\xb2\xda\xf0\x99\xa4\xae\x37\x95\x05\x09\x9f\x04\xae\x95\x58\x55\x4b\xac\xf4\x12\x30\x91\xdd\x75\x29\xf4\xe0\x5c\x79\x50\xe2\x95\xad\x52\xa4\x21\xc2\x94\x98\xb4\xa7\x24\x5f\xa8\x1f\x62\x26\xf2\x46\x92\x81\xf8\x21\x62\x48\x70\xc1\x8b\x97\x68\xe0\x5f\x4b\xf4\xf9\x40\xfc\xb0\x92\x34\xa0\xe9\xe0\xab\x05\x51\x16\x15\xf9\x8b\xce\x30\xaa\xf4\xd9\x6c\x44\xa1\x67\x6a\xb2\x2d\x52\xc9\x5a\x4d\xc6\x57\xf6\x0a\x14\x66\x68\x3c\x81\xdf\x44\x79\xa9\x4b\x43\x2f\x64\x8e\x86\x9b\x3f\xde\x0e\x2b\xa4\x2a\x8c\x34\x20\xde\x8b\x00\x50\xe9\x6c\x1d\xb0\x92\xa9\x7b\x32\x29\x7b\x77\xa3\xd5\x15\x5b\xb0\xa3\x98\x0b\x78\x8f\x46\x5d\xcd\xb5\xc7\xc2\x4c\xfe\x62\xe1\x00\xff\x58\xb8\xfc\x8b\x2f\x30\x30\xff\x3e\x40\x8e\xc6\xaf\x2f\xf8\xf5\xc5\xaa\x32\x4d\xe5\x9b\x9f\xfa\xfd\x3e\xe0\x7f\x99\x22\x7e\x1d\x06\x74\x50\x55\x04\x85\x8e\x81\xaf\xee\x69\xcd\xaa\xec\x90\xc2\x58\x5e\x15\x2f\x77\x21\xaa\xc6\x50\x7f\x55\x0c\x33\x20\x2e\x69\x76\x9d\xdc\xb5\x56\x0e\xc3\xd7\x52\xb7\xd8\x39\x6d\xab\x1e\x14\x99\xa6\xea\x59\x06\x54\x5f\x75\xbd\x69\xd7\x3b\xd5\x25\x16\xdd\x0e\xe1\xb7\x32\x61\x39\xcb\x56\x0d\x1a\xf3\x32\x3a\x30\x67\xcb\x32\xbe\xa7\x7c\x71\x92\xf3\xa2\xd0\x24\xd5\x75\xb4\xca\x99\xf3\x46\x96\xd4\x20\xbf\x34\x42\x7e\xf9\x56\xe6\x55\x29\x5d\x72\x16\x06\x99\xf8\x16\x4c\x25\xdb\x95\x5a\x04\x52\x75\xda\xe5\x25\xd8\x4b\x0c\x91\x55\xd2\xb2\x75\xbe\xa9\x2a\x2e\x96\xe4\x8f\x9b\xe6\x74\xb6\x83\x06\xd8\x41\x2a\x14\xb0\x6f\x43\x3d\xc3\xc2\x16\x2a\xef\x8b\x7a\x7e\xbe\xf0\xa2\x2f\xee\x4e\x61\xaa\x8d\x22\x19\x68\x9f\x58\x6f\xd9\x3c\x5d\xf7\x15\x7a\xae\xd6\xbb\x16\xaf\xb8\x3a\x9f\xab\x02\x1f\x4b\xf1\x96\x95\x1e\x66\xaa\xd7\x95\x4e\x9a\xd3\xd5\x29\x55\x04\x51\x53\x07\x83\x81\x9b\x4b\xd0\x5d\xdb\x96\x20\xd1\xb7\x2c\x49\x6e\x40\x5a\x49\x96\x4e\xa5\x92\x39\x81\xd5\x04\x0f\x8a\xb5\x83\xbb\x56\xc2\x82\x24\x57\x66\x0f\xce\x2b\xb2\x2e\x07\x58\x37\x98\x82\x78\x90\xf4\xd5\xf3\xf0\x12\x7c\x14\x5e\xc1\xf6\x3a\x73\x47\xc8\x58\x60\xdf\x1f\x0f\xcb\x8c\x86\x7b\xa0\x11\x59\x0b\xb6\x2e\xf1\xa2\xab\x97\x7c\x0e\x17\xa4\x8d\x8c\xc3\xf2\x92\xa1\xc3\x28\x59\xb8\x0b\xf3\xbd\xc8\x7f\x0b\x0f\x15\xa3\x3b\x4b\x59\x9f\x0c\xd0\x52\x96\x79\xee\x90\xf5\xbd\x08\x12\x82\x12\x69\x1a\xd6\x89\x45\x57\x28\xf1\x46\x30\x7c\xdd\x97\xc4\x4a\xa1\xe7\x3a\xc9\x0f\x24\x98\xd3\xd5\x40\xb1\xe8\xde\xa2\xa8\x89\x7c\xbe\x17\x6d\x12\xfa\x98\x25\xde\x7f\xb4\xaa\x6d\x52\x16\x81\xb2\x71\x18\x9e\x09\x4e\x98\x3e\x51\x5f\xdf\xc5\xab\x7e\x58\x57\x34\xff\x91\x6d\x27\xc2\xf8\xea\x55\x14\x72\x68\x3e\xe6\x10\x32\x8c\x6b\xb5\x80\xfa\x13\x3a\xb7\xee\xe8\x13\x74\x06\xf2\x73\x97\x46\xad\xe8\x99\x2e\xc4\x60\xb8\x83\xeb\xba\x0c\x69\x03\xa9\xd0\x83\xcf\x4b\xf2\x31\x81\xac\x81\xa2\xae\x5b\xc2\x1c\x56\x61\x24\x0a\x88\x0e\xa4\xe4\xb2\x6f\x89\xa0\x92\x7e\x28\x4b\x28\xb7\xdf\x01\xb4\xb0\x34\x53\x43\x6d\xc1\xaf\x18\x31\x9a\x8f\xd4\x19\x57\xe8\x67\xea\x2d\xca\x02\x37\x9a\x52\xcd\xa6\x2f\x4e\xee\x77\x1c\x71\xa9\x08\xb4\xf2\x5a\xc9\x07\x1c\xfe\x53\x1b\x5c\xdc\x69\x70\x01\xe6\x83\x83\x83\x47\xd5\x24\xdb\x4f\x66\xac\x47\x5f\x73\x29\xfb\x91\x3b\xc7\x9b\xf5\x8a\xc9\x01\x70\xdd\xeb\x0f\xaf\x7e\x7b\xf7\xd3\xfb\x8b\xcb\x8f\x1f\x3e\xbf\xb9\x78\xf3\xe1\xfd\xe5\xab\x0f\xef\x2f\x5e\xbe\x79\xff\x99\xf0\x96\x5c\x73\x3d\xab\xde\x11\x7b\x7a\x1f\xfd\xfd\xf3\x87\xf7\x1f\xeb\x66\x3d\x48\xde\xd3\xf3\xef\xab\xb7\xb4\xd6\xdf\x18\xd5\x6f\xfe\xad\x61\xfd\xf6\x6b\xed\x5b\x30\x1d\xd7\x9b\x8b\xe9\x6d\x06\x4c\xb9\xe8\x0d\xca\x7b\x11\x68\x84\x36\xac\x1d\xf7\x61\xda\x6f\x67\x34\x1b\x3b\x63\x2f\x5f\xa4\x5e\x84\x5e\x03\x90\xa9\xa6\x6c\xd3\xd3\x21\x4b\x52\x2a\x8c\x82\x61\xd6\xbe\xaa\x2f\xa2\xca\x85\x0e\xfd\x9e\xbc\x28\x4f\xd4\x8b\xa5\xe6\xce\x09\x56\x90\x26\x87\x77\xfd\x68\xf5\xee\x3a\x14\x57\x1f\x58\x0d\xea\xe1\xe5\xba\x4c\x55\x43\x2e\x34\xc2\xf2\xe3\x00\x38\x9f\xe2\x56\x31\x35\x88\xa2\x66\x0f\x9b\x79\xf3\x86\x33\xc8\x4e\x86\x77\x48\x1f\xd5\x3a\x5f\x3c\xa0\xe6\x4a\xb7\x2b\xfe\x3e\x63\xb1\xed\x84\x80\x1f\x3c\xbc\x0d\x63\x6a\x62\xb4\x49\xfe\x55\xb5\x7a\xf2\xd3\xbb\x6d\x81\x9c\xa2\x50\x1c\x02\x2b\x4a\x17\x44\x6b\x1a\x36\x3c\xdf\xbf\xd6\x21\xbb\xae\x21\xfd\xf3\xc0\xc1\x43\x68\x5d\x92\x41\xd6\xe5\xd5\x20\x38\xd1\xc6\x2c\x1a\xd4\x20\x2d\x70\x30\xc3\x5b\x36\x77\x5e\xee\x5f\xef\x50\x13\x11\x48\x25\x1a\x53\x0c\x91\xc3\x55\x42\xcf\xbf\xb9\x02\x13\x5d\x83\x5a\x58\x0b\x94\x86\x45\xd5\x83\xdb\x36\x22\xf0\xb4\x96\x1f\xd5\xaa\x3d\x87\x7b\x91\xa8\xb2\x15\x51\x2c\x1b\xf5\x5a\x23\xdc\x7d\x94\xcc\xa7\x65\x42\x1c\x2c\xf5\x24\xb2\x0c\x77\x29\xb0\x26\x6f\xf9\x61\x9e\x12\x6e\xa8\x12\x0e\x8f\xb5\x08\x82\x70\xb9\x22\xf6\xd8\x80\x7d\xe9\xb6\x9a\xf2\x74\x30\xbb\xa6\xd1\x6d\x18\x5f\x89\xf7\x8d\xf9\xa7\x72\xdc\x75\x89\x84\xe9\xd9\x95\x73\x21\x93\xc8\xcb\x04\xd7\xc2\x23\x4a\x3e\x52\xaf\xa4\x34\xb9\x4c\x21\x7e\x65\xee\xa1\x11\x87\x57\xcb\xe7\x15\xfb\xd8\x53\x26\x63\xe0\xa8\x28\x6c\x74\xa7\x52\x32\x1f\x76\xbc\xd4\x78\x3c\xa3\x49\xe3\xbd\x0e\xa1\x32\x46\x82\x7c\xa3\x5d\x06\x58\x9a\x2c\x18\x27\x90\xe1\x43\xf4\x8d\xc2\x82\xd2\x55\x29\xd9\x44\x70\xfb\xc9\x82\x3c\x20\x56\x3c\xcf\x91\x18\xb6\xbe\xbe\x56\x1d\xcf\x4b\xf1\xfb\x83\x4a\xe0\x0f\xf2\x1c\x09\x1b\x99\x9a\x6b\xb0\xb5\x83\x5f\xa9\x35\x0b\xe3\x81\x8c\xfd\x63\xcd\xbc\xe5\x40\x06\x0f\x42\xfb\x61\x36\x18\x95\xf9\x32\x6f\x6c\x01\xae\xa6\xe3\xdf\x70\x6a\x2e\x42\xdc\x9e\x66\xa3\xde\xf8\x99\x5b\x7e\x39\x32\xb0\x8d\xb8\xab\x01\x8e\x48\xcb\x77\x61\xac\x41\x55\xb3\xbd\xa5\xab\xa2\x1c\xea\x47\xeb\x3b\xba\x26\x9c\x9a\xb2\x01\xae\x4e\xcc\xba\x81\x0c\x71\xf2\x5e\x94\xe5\x7a\x5a\xb9\x5e\xbd\x1c\xa3\x4f\x96\x83\x35\x42\x67\xa7\xbd\x9e\xfc\x07\x9c\x56\x8d\xa2\x6a\x8a\xb7\x24\x22\x34\x6c\x39\xb2\x23\x67\xac\x85\x5f\x53\xae\xc2\xe0\x1d\xb5\xda\xf1\xd9\x37\xf3\x22\xf6\x86\x5b\xe7\x2e\x23\x99\xc3\xb6\xcd\x32\x10\xc4\xd8\x35\x40\xdb\x50\xcc\xc2\xd8\xb0\xca\x20\x56\xdb\x61\xbd\xa5\x51\x72\x28\x0c\x7c\x7d\x7c\xd1\x3a\xb7\x96\x3c\x50\x06\xbe\x2a\xea\xf0\xde\xb2\x02\xdf\x1b\x97\xb1\xc7\x8a\x3d\x9a\xce\xa7\x10\x29\xac\x24\xfe\xac\x4f\x98\x92\x03\x1a\xe4\x0f\x8f\x45\x2e\x40\xee\x2f\x68\xed\x8f\x29\xbd\x0d\xe9\xdd\x56\x81\x2b\x80\xee\x2f\x78\xe5\xc5\x53\xd1\x03\xe8\x05\xb1\xbb\x2a\x19\x5b\x39\xa5\x53\x9a\xd2\xd8\xa7\x9d\x3c\xe9\x78\xb1\xe0\x44\xa3\xbc\xd3\x0a\x63\x71\x70\xa0\x7c\x64\xdf\x5e\x0d\xde\x76\x4e\x52\xf6\xdb\x4b\x53\x6f\xd5\x49\xa6\x98\x98\xe9\x46\xb4\x06\x85\x7e\xcf\x9b\xcf\x88\x4d\x59\x60\x5e\x8c\xca\xdf\xe3\x81\xd2\x1c\x1e\x21\x19\x7d\x6a\x32\x77\xcd\x6f\x46\x9f\x9d\x58\x78\x69\xfa\xd8\x71\xac\xab\x34\x9c\xcf\xb9\x65\x6d\x20\x85\x8c\x35\x4d\xbd\x19\xbd\x48\xe6\x17\xd7\xa1\x7f\x13\xb3\x5d\xd5\x11\xa6\xfd\xea\xc5\x41\x44\xcb\xe4\x9e\x83\xe9\x88\xc0\xf8\x5b\x70\xcc\xfe\x37\x30\xf1\xc3\xdc\xf3\xc3\x7c\x35\xe8\xb1\x65\x20\x9c\x2d\x66\x3f\xb3\x54\xb8\xe7\x3b\x70\xf8\x45\xed\x4f\x5e\x1e\x26\x03\xbb\x5f\xa8\x17\x7b\x21\x51\xbd\xdd\x0b\x09\xfc\x30\x4c\x34\x48\xcd\xd2\x9b\x6a\xab\xad\x72\xf9\x4d\x10\x1d\xa2\x24\x9a\xd8\x81\x97\xde\xb0\x9d\x89\x72\x39\x44\x3c\xd1\x10\x4f\xc3\xab\x45\xda\xb0\x70\xb7\xac\xe7\x73\xe4\x0f\x48\x90\x9c\x76\x57\xc6\xbf\x81\x9f\x3f\xa7\xc9\xec\x17\x14\x80\xe9\x82\x96\x70\xd7\xca\x8d\x5c\xfc\x5d\x87\x6c\xc0\xc2\xbb\xa5\x52\x42\x35\x9c\x30\x41\x04\x71\xd9\x79\x73\x6a\xfa\x85\x6c\xa8\xa9\x04\x2a\x92\x97\xdc\x35\xa5\xa3\x6c\x91\x76\x87\xbb\x52\x99\x9a\x2a\xfb\x1c\xaf\x4e\x2a\x4d\xd5\xef\x6f\x57\x50\xa8\xf7\x5e\x77\x32\xc1\x70\x8f\x66\x7c\xa3\x8c\xb4\x94\x0e\x6c\x45\x51\xe7\x98\x1a\x1a\xbf\x8e\x44\xd9\xef\x63\xae\xab\xfc\x2e\xdf\x93\x69\x40\xbe\xcf\xc2\x8f\xf6\x4c\x45\x50\x43\xd4\x70\xad\x17\x1b\xbc\x3c\xf4\x16\x8d\x6e\xc6\xee\x4d\x27\x8c\xe1\x42\xe4\x0b\xf6\xcf\xe8\x66\x3c\x80\x14\x05\xea\x85\x5e\x62\xa0\xd5\x31\xba\x19\x2b\x27\xb4\xfc\xf6\x3d\xc7\xb8\xd9\x88\x4b\xf7\x3c\xa1\xbc\x17\xa7\xf3\xba\x46\x14\x67\xc3\x26\xd6\x2b\x77\x27\x8d\xb3\x82\x97\xbf\xae\x5e\x26\xdf\xc6\x78\xda\x04\x57\xaf\xa1\x6b\xc8\x0a\x4d\x0c\x34\x84\xe2\xc7\x1c\xee\x2a\xaf\x60\xd1\x10\x3f\x51\x48\x12\x3e\x1d\x6a\x5d\x35\xf1\xfc\xb8\x0f\x4a\x90\xd2\x21\x6a\x17\xd5\xcb\x56\xc4\xf8\xe3\xfe\x90\xd7\x5f\x0d\xac\xa1\xc5\xd4\x10\xe1\x34\xca\xcd\xe4\xed\x15\x37\xcd\xdc\x5e\xf1\x2e\x41\x98\xee\x1e\x35\xf2\x72\x18\x97\x02\x75\xc9\x3d\x4a\x89\x7a\x71\x99\x94\x51\x1c\x04\x22\x50\x47\x49\x0d\x4a\x84\x74\x90\x74\x22\x5c\x21\x42\xf5\xee\x36\x39\x09\x8c\x4a\x44\x14\x75\xd5\xd6\xee\x66\xb3\x8a\xa5\xa1\x0f\x36\x43\x97\xa8\xc1\x5d\xce\x85\xda\x04\x2a\xaa\x39\x62\xda\x9f\x78\x47\x68\x17\x6b\xed\xe4\x00\x15\xcb\x7f\x3c\x9c\x13\x10\x64\x91\xa6\x34\xce\x61\xc1\x76\x47\x8e\x55\xc3\x8d\xe6\x32\xd8\x81\xe2\x0a\x55\xb2\x38\x18\xfd\x2d\xb8\x00\xa3\x1c\x95\xbf\x4c\xaf\xb2\x52\x13\x84\x7b\xba\x81\xb9\x2e\x2c\x04\xe7\x34\xa1\x2e\xcf\xe7\x05\xec\x74\xf4\x79\x51\xba\xca\x4a\x57\xf6\xf2\x4e\x34\x4d\xf9\x81\x43\x79\xc7\x11\xcc\x32\xd5\x4a\x25\x39\x96\xb4\x98\x40\xf3\xf4\xe3\xc3\x2d\x26\x2a\xa2\x4f\x08\xae\x4e\xa9\xe4\x42\x17\x09\x13\x0c\x27\x8a\x1f\xe3\x0a\xda\x06\xe2\x47\x41\x94\x2d\x51\xc3\xa3\x2b\x92\x5c\xee\xdf\x2e\x85\x0b\xbe\x6e\x05\x62\x6d\xc8\xeb\x68\xb2\x20\xa8\x57\x45\xc5\xed\xbd\x32\x80\x4d\x59\xb2\x41\x3d\x40\x51\xcc\x6f\xee\x29\x8b\xf5\xb0\x51\x0b\x38\x04\xd4\xdb\x99\x0b\x89\xa9\x2e\xd4\x3a\x89\x45\x2d\xa1\xec\xa0\x57\x78\xb3\x8b\xa6\xfb\xcc\xc3\x20\xbc\xdd\x3e\x0f\x2f\x7d\x81\x4e\xcc\x48\x45\xf0\x92\x32\xc8\x06\x3e\x96\x35\x9b\x79\x71\xd0\x10\x6b\x63\x4b\x8b\x99\x98\xb1\x3a\x0d\x70\xea\xd4\x65\x40\xc4\x18\xea\xed\xb3\x69\x9c\x83\x52\x2a\x62\x4b\x00\xe7\x49\x23\xab\xb1\x6f\xbb\xd0\xfa\x2a\xe4\xe0\xe1\x1d\x9d\xdc\x84\xf9\x61\x35\x00\x87\xd2\xc0\x12\x76\x96\xfc\x6b\x4f\xc0\x6c\x2f\xb8\xad\x30\x70\x7b\xae\x14\x27\xa4\xd6\x1d\xcb\x30\x37\xcb\xc8\x24\xf8\x8e\xa8\x97\xe5\x34\xfd\xa5\x62\x4b\xc8\x44\x94\x69\xdc\x4a\xef\x72\x1c\x6d\x92\x6d\xc2\x5d\x54\xa9\x40\xb3\x29\xf0\xb8\xd8\x28\x23\xff\x03\xb6\xf3\xee\x48\x05\x56\x0d\x2c\x8d\xe9\xde\x72\x5c\x17\xb4\x23\x67\xec\x6a\x48\xc1\xa4\x54\xda\x7e\x5e\x38\x83\x9a\x63\xea\x67\xd5\xc9\xa4\x5a\x98\x94\x4b\x75\xa5\x9e\x67\x0e\x69\xac\xde\x69\xa0\xaa\x57\xa5\xaa\xa7\x53\x55\xeb\xbf\xc1\x4e\xd2\xb8\xfd\xa4\xa9\xae\xc3\x46\x72\x55\xd1\x52\xdb\x4c\x0a\xad\xae\x42\x74\x63\xc3\x37\x1b\x87\x74\xb7\x62\x2b\xa4\xf2\x50\x9d\x82\x18\xe8\x6c\xbf\x29\x58\x99\x78\x5a\x4c\x29\x6d\x59\x47\x4d\xa4\xa2\xce\xd4\x16\x6e\x1d\x4a\x18\x07\x0c\xcb\xf0\x26\x59\x12\x2d\x72\x5a\x66\xe6\xc9\xdc\xb0\x1c\x3d\x6c\xd2\xeb\x70\x36\x53\x36\xb6\x3c\x15\xda\x5c\x49\xfb\x05\xb7\xce\x59\x25\x19\xe5\x5a\x35\xf5\x5d\x18\x04\x91\x8a\xe1\x2a\x64\xbc\xfe\x2e\x59\x64\x94\x5b\xfb\x49\x61\xe9\x34\x6c\xb5\x11\x82\xca\x56\x0a\xf0\x39\xe3\xf6\x00\xcb\x55\x75\x26\x61\x2e\xa9\x0e\x12\x2b\x23\x43\xf0\x4c\xc3\x28\x32\x2c\xe3\xee\x3a\x84\x1e\x2a\x13\x0f\x13\xb4\x4d\x18\x96\xe1\xd8\x67\x7a\x56\xba\x88\xa8\x61\x19\xf4\x96\xc6\x49\x10\xa8\x23\x2e\x48\xc1\xb1\x45\xd7\x3e\x2f\xbf\x76\x0d\x63\xc8\xfe\x76\x5d\xa3\xf3\xae\x49\xda\xd7\x56\x85\x5d\x4b\x82\x44\x77\x2d\x20\xd5\xf9\x25\x73\x6f\x2b\xb9\xa8\x25\x69\x85\x0f\xdb\x4b\xff\xab\xa3\x93\x2d\x1f\x08\x69\x9a\x37\xd6\xae\x46\x91\x7b\xb4\xea\x57\x59\x5b\x18\x37\x0a\x81\x3d\x76\x02\x75\xb1\xbd\xb3\x10\xd9\xb7\xe3\x7e\xfd\xf6\xde\x28\x7b\xb9\x0c\x87\x8f\x3c\x16\x18\x16\xcb\x2b\x27\x06\x20\xbd\xf7\xb4\x80\x5a\x1f\x34\x29\xb2\x3c\x4d\x6e\x68\x6d\x5a\x60\xf2\x21\x97\x40\x46\x0f\x04\x8e\x96\xc5\xd6\xce\xaf\x49\xc8\xc4\x0e\x2c\x41\x95\x69\x56\xeb\x13\x6e\x5f\x6b\x9a\x75\x35\x58\x6e\x2b\xdc\x73\x22\x62\xe3\xf7\x9a\x86\xfa\xc0\x75\x8d\x8e\x63\x68\xe3\xfc\x50\xfe\x2b\x47\xf8\xdf\x2b\x7c\x7f\x5d\x67\xa6\x26\x52\x54\x0e\x51\xc9\x6e\x64\xb8\xdd\xbc\x7d\xcf\xe9\xf7\xb0\x66\xdf\x6b\x06\x3d\xb0\x21\xf7\x98\x39\x62\xb1\xaa\x4e\x1e\x6e\xff\x6d\x9f\x3c\x1c\xa0\x3a\x7d\x78\xf2\x7e\xd3\x47\x6d\x88\x6a\x70\x56\xd8\x54\x54\xd3\xc0\xa8\x23\xfb\xd8\xb2\x4f\xc7\x0d\x6e\x20\x6c\x22\xc4\x57\x64\x5d\x13\xcd\xa8\xf6\x3d\xa8\x53\x1f\x0b\xac\xc0\x25\x35\x6c\x2a\xdf\x3e\xb6\x8f\x74\xd6\xde\x01\x7d\x46\xea\x8b\x48\x1b\xa5\xfb\x4c\x2c\xb3\xd7\x15\xc4\xfe\x29\xd4\xea\x3e\x7b\x62\xc4\x5b\x18\x8c\xab\x3d\x55\xfe\x8a\xe8\x34\xc7\xac\x46\x16\x93\x6e\x8e\x97\xd7\x00\x54\x65\xb3\xb2\x78\x8d\xd3\x58\x51\xa3\xe9\x15\x80\x6d\x33\x46\x68\x7e\xfe\x22\xcd\xe0\x69\x50\x7a\x77\x98\xd2\x2c\xfc\x97\xa2\x15\x56\x95\x1e\x55\x9a\xaa\xa4\x72\x56\x55\x48\x44\x5a\x96\x82\x0e\x9d\xf3\x1a\x63\xa6\x6a\x7d\xae\x78\x0d\xef\xea\x32\x00\x6a\xe9\x33\x05\xc1\x5f\xa3\xd3\x34\x62\x79\xaf\xa9\x44\x6e\xe9\xb6\x7d\x04\xed\xee\x7e\x95\x4c\x8a\x5a\x78\x95\x47\x67\x90\xba\xab\xcb\x11\xaa\xa5\xcf\x55\x14\x6d\x9d\x5e\xed\x45\x70\xc2\xdd\xab\x03\xf5\xaa\x79\x0f\x6a\x55\x6a\x03\x2a\xf5\x31\xa7\xb1\x47\x1b\xb7\x8d\x32\xe0\x68\x0b\xf7\x7e\xb7\x61\xa8\xed\x7b\xda\xd4\xb9\x16\xab\x15\xda\x2b\x52\xef\xca\x5d\xe3\xed\xe1\x01\x1b\x02\x0b\xe3\x2b\xf0\x9f\xc9\x1c\x7f\xb1\xa9\x39\x00\x1f\x5d\x0b\xf8\xad\xfc\x1d\x06\xf8\xbb\xfa\x52\xae\xa0\xa5\x93\xc4\xef\x84\xa3\xb4\x19\x78\xf9\x62\x26\xac\xb4\xac\x6a\x9b\x55\x81\x46\xd7\xcb\x2b\x9a\xa3\x1f\xf9\xef\x3f\xa7\xc9\x0c\x9a\x64\x06\x47\x36\x7a\xe1\x30\x60\xa2\xdd\xb4\xbc\x48\xbd\x5b\x1a\xd1\xc0\x95\x78\x0e\xf9\x2f\x2f\x45\x87\x0f\xe8\xdc\x97\xd3\x9c\xa6\xaf\x59\x2b\xa1\x16\x48\xc3\x90\x34\xaf\x01\x1a\xee\xec\x3a\xdc\xb6\x53\xdd\x96\xbb\x5b\x37\xed\xe0\x86\xc3\x90\x40\x37\x90\x75\x4b\xf1\x4a\x95\x8c\x6f\x1a\xd3\xd1\x5d\x03\x10\xa2\x43\xbb\x4e\xff\xc8\x19\x97\xcf\x29\xd6\xb2\xba\xd5\x6e\xb1\x1c\x52\x28\xf4\x5d\xd7\xf1\xf5\xc6\xe5\x45\xe0\x5a\x56\x1d\x5f\xcd\xd4\x8c\xee\x95\x2a\x77\x63\xa3\x6b\xb8\x0e\x6b\xd4\xb2\x9e\xab\x15\x7c\xe6\x36\x18\x59\x76\xf5\x48\xbd\xb2\xba\x6d\x65\x67\x37\xd4\x7b\xb3\x11\x49\x0d\xec\x99\xeb\x34\xa0\x3b\xac\xe3\x1b\xd6\x09\x77\x1a\x30\xf6\xc6\xcf\xdd\x7a\x37\xd7\x5b\x5d\xab\x41\xb0\x94\xb6\xe5\xae\xb7\xb3\x06\x53\x14\xea\xe1\x46\x4d\x2d\x44\x3b\xff\x7a\xb7\x5d\x53\x89\x89\x69\xea\x21\x32\xdf\x2f\x66\x13\x9a\xaa\x96\xcf\x1a\x11\xd2\xf2\x59\xf7\xa3\x22\xfc\x84\x31\x0e\x92\xbb\x72\x22\x8f\x14\x62\xea\x83\x42\xac\x2d\xd9\x10\xd7\xf5\xdb\xbc\xd9\x2a\xd4\xb0\x8d\x79\x35\xa9\x37\x26\x78\x60\x59\x1f\x76\x97\xb1\x4c\x1d\x85\xee\xa3\x57\x1f\x39\xb7\x89\x2f\xea\xd5\x2a\x68\xea\x6e\x62\xf5\x5a\x1b\x7c\x12\xeb\x38\x2b\x9e\x89\x05\x29\xaa\xa2\x3d\x48\xee\xd8\x92\x03\x73\x0c\x57\x12\x57\xc8\x6d\xfe\x3d\x2c\x25\xf3\xfe\xc2\xbe\x49\x48\x72\x81\xac\x88\x0e\x2e\xc1\xc9\x50\x56\xa9\xc7\xf5\x79\xd1\x92\x6e\x92\x81\xcc\x41\x07\x4e\xbc\x9f\x8a\x77\x8b\xcb\x25\x53\x1c\xca\x11\x3b\x89\x95\x3b\x3f\x3b\xce\x5a\x2d\x65\xd5\x23\xdb\xb1\x2d\xe6\x7b\xe2\x5a\xcc\xdb\x31\xe5\xc9\xc2\xbf\xfe\x6e\x74\x01\x36\x1a\x07\xdf\x8b\x30\x9f\x2d\x24\xd1\xfe\xd8\x1a\x39\xec\xad\xdc\x1d\x34\xa8\x11\x70\x25\x18\xfc\x95\x34\x9e\x6c\x44\xf4\xa9\x54\x98\x1b\x30\xa5\x78\x12\xbe\x1f\xaa\x77\x8a\xe6\xb8\x95\xaa\x2a\xea\x52\x6d\xd8\xa7\xaa\xc5\xbc\x82\xfc\x5b\xb9\x13\x1f\xea\xf8\x46\xb6\xdc\x8e\x64\x6f\x8e\xdc\x03\xcd\x1e\xac\xb8\x07\x96\xfd\xb8\x90\x23\xc2\xe3\xe7\x26\x11\x34\x2c\x87\x96\xcb\x8a\x72\x6c\xf5\x84\x50\x44\xbf\x92\x5e\x96\x48\x5b\xd3\x5e\x5d\xf6\x3b\x63\x01\x39\x17\x74\xbe\x57\x5e\x44\x55\x11\x55\x76\xb0\xed\x98\x14\xc6\x6f\x41\x55\xdd\x99\xb5\xe3\x52\x39\xbf\x05\x59\xbd\x81\x30\x0c\xb0\x0a\x7c\x73\x0b\x5b\x50\x3d\xac\x89\x2d\xc8\xb4\x36\x16\x56\xd3\x9a\x55\xbd\x2c\x00\x2b\xd7\x3a\xbb\x0b\x73\xff\xda\xe4\x2b\xe0\x6a\x4e\x99\x12\x91\x51\xb5\x9e\x41\x99\x00\xbb\xd7\x01\x9c\xfb\xb3\xcf\xb7\x61\x96\xbb\x58\xd4\xbf\x66\x2c\x1a\x5c\xc0\x1c\xc0\xbb\xff\x00\x82\xd1\xb2\x44\x64\x1e\x48\x12\x51\x6a\xca\x8f\x67\x12\x9b\xf0\x5a\x29\xf3\xba\x5d\x74\x76\x13\x10\xa3\x32\x6b\x2c\x96\x70\xd7\x55\x16\x74\xb2\xc6\x8a\x1b\x4b\x88\x10\x8b\xfc\x1a\x0d\xe4\x3c\xe2\xd1\xc7\xe0\xc3\xf6\xb1\xdb\x4a\x67\xdf\x21\xf7\xd0\x1b\x88\x0b\xb9\xd8\x5e\x04\xdb\x37\x08\xfd\x27\xee\xcc\xd2\xe0\x10\x2e\x7c\x73\xbe\xe7\x83\x60\x39\x8d\x33\xf9\x18\x18\xff\xe0\x9e\xa1\xfc\xab\xd1\x23\xb4\xe0\x2e\x39\x1f\xbd\xfc\xfa\x67\xcf\xcf\x93\x74\xa5\x6e\xd4\x45\xf6\x67\xb0\xf0\x36\x02\x08\x6f\x46\x35\x15\xfb\x6d\xcd\x2b\x1e\xd8\xe7\x16\x9a\x88\xf1\x2c\xbc\x6f\xa9\x81\xd6\xad\xb9\x17\x04\x61\x7c\x35\x58\xb3\xfd\xbc\xed\xf4\xf8\x1e\xde\xb1\xf0\x91\x40\x48\x82\x1d\xbe\x53\x70\x34\x7c\x7f\x3f\x0d\xa3\x88\x6f\xef\x0b\xae\x56\x97\x44\x30\x45\x5d\xbc\x16\x25\x23\x70\x41\x70\x24\xed\x21\x24\x25\xb3\x9e\xce\x52\xb9\x63\x05\xe8\xa8\xdd\x37\xf1\x94\x0d\xce\x8a\x27\x79\x4b\xf7\x50\x4b\x5a\xd5\xa1\x56\x3a\x94\x52\x5f\x7b\x1c\xb1\xb6\xfb\x90\x01\xee\x38\xed\x55\x3d\xe4\xc9\xca\x0d\xec\x55\x37\xb0\x57\x0e\xd3\xec\x57\xcf\x18\x25\x04\xc8\x81\x48\x97\xab\xe7\x8c\x0e\x02\xc4\xac\xf8\x05\x4d\x2d\xb2\xa2\xf2\xfc\x16\x8f\x97\xec\x8c\xed\xe5\x33\xd6\x6c\x02\x6d\x57\x52\x15\xa0\x4a\x00\xe6\xb1\xbd\x7c\x0e\x17\x66\xa0\x6f\x5a\x61\x0a\x32\x64\x38\x0f\x5d\x93\xc1\x1d\x42\x25\xe8\x5d\xca\x79\x01\xa4\xf3\x90\x65\x76\xdb\x61\x80\x4d\x86\xd0\x46\x65\xe0\x66\x61\xec\xba\xae\xe1\x2d\xf2\xc4\x78\xc1\x32\x07\x7a\xe6\x66\xe3\x0c\xa1\x1b\xd4\x64\x6f\xa9\xb9\x6f\xb0\xfc\x81\x9e\x3f\xd4\x23\xf1\xaa\xb5\x6c\x36\xac\x9a\x67\x0e\x59\xaf\xb0\x51\xac\xf8\xe1\xaa\x4e\x30\xf2\x73\x51\xc1\xa4\xd7\xcd\x90\x40\xab\xdb\x90\xe4\xc9\x9c\x8b\xb2\xf5\x72\x30\x02\x77\x1a\xf0\x9d\xb1\x56\x83\x11\x03\xb7\x58\xc1\x71\x6b\x9c\x1e\xfd\x11\xb6\xd6\x8b\x47\xfc\xfa\x25\xbe\x00\x03\xbf\x37\x1b\xf5\xf2\x2f\x5e\x48\x0a\x39\xc4\x6d\x28\xb3\x6f\xc3\x6c\xb8\xe5\xf9\x24\x19\xea\xcd\xbd\x5f\x2c\xe3\xb6\xbb\xc6\x38\x4f\x8b\xf2\x20\xe9\x7d\x12\xd0\xcc\xad\x50\x00\x07\x5c\xfc\xc4\x0a\xcc\xb9\x20\x1c\x9a\x9c\x59\x06\x1c\x4a\x9a\x64\xe1\x9b\x3b\xae\xc8\x13\x11\xb4\x1d\x57\xe5\xa6\xa9\xf8\x16\xa1\x9c\x12\xf2\x87\xfd\x6e\x27\x8c\x9f\x9e\xdd\x9b\x34\x79\xea\xd6\x4a\x9c\x26\xb5\x4d\x82\x26\xb1\xd0\x75\x86\xad\x17\xae\xb9\x00\x6a\xb8\x0d\x5d\x89\xd0\xee\xc1\xcb\x79\xbc\xbf\x47\xce\x98\x87\x48\x56\x1b\x2f\x62\xfe\xc0\x97\xab\xf4\x02\x07\x47\x0f\x19\x30\x8b\x63\xc4\x71\x51\xfd\x30\xec\x76\x85\x1b\xb2\xa5\x02\x34\x5f\xf9\x66\xcb\x00\x0f\x10\x14\x46\xd1\x0b\xf5\xd6\xf3\x00\x6f\x04\x0f\xcb\x61\x70\x15\x0a\x1b\x41\x95\x06\x56\x9e\x8a\xc2\x23\x7d\xf6\x2f\xd9\x02\x25\x46\x85\x77\xc2\x4e\xc8\x43\xf5\x74\x46\x59\x25\xc9\x70\xc7\x15\x73\x05\xf1\xce\x9b\xe6\x0d\xa8\x78\xf0\x34\xc1\xa8\x35\xbc\x3c\x63\x17\xe6\x2d\xb7\x37\x74\x51\xb3\xe5\xae\x85\x49\x9a\x6e\x5b\xd0\x95\x72\xeb\xad\xf2\x48\x07\xcb\x44\x6d\x68\x74\x43\x57\x63\x57\xfe\x52\xd7\x70\x35\xa1\xac\x0a\x52\x87\x65\xd4\x17\x35\x16\x4e\x05\xca\x75\x8d\x64\xf2\x15\x0e\x75\xd6\x5b\xc9\x07\xe8\xf6\x1b\x23\x90\x3d\xba\x19\xbb\x78\x4b\x04\x3f\xd4\xa7\x09\x5f\xa8\x19\x03\xb5\xc8\xa3\xaa\x57\xa1\x06\x55\x25\xa1\xbc\x50\x52\x3e\xbf\x85\x2d\x91\x15\x34\x57\x5b\xd6\xd9\x5c\xe1\xa0\xd2\xab\x35\x28\x25\xaf\x91\x32\x79\xad\x00\x1e\x07\x55\x74\xc1\x72\x46\x2b\xac\x0f\xf2\xa7\xfc\x7e\xa4\xad\x8f\xd5\x89\xe2\x2a\xbf\x0b\xc0\x7f\xc1\xd5\x4e\x89\x9b\xeb\xa1\xb8\xab\xc0\xdf\x0d\x38\x85\x06\xcd\xff\xde\x57\xcf\xb7\xdf\x86\x71\xc3\xab\x0a\x5a\xf6\x7e\xe1\x5f\x44\x11\x6b\x0d\x91\x22\x31\x42\x45\x83\x9e\x8d\x4f\x63\xc9\xc5\xb0\xea\xd4\xcf\x5f\xce\x22\xd6\x5a\x53\xb7\x4b\xad\x59\x68\xd3\xf8\xba\xe5\x8e\x9d\x40\xab\xaa\x30\x45\x58\xf1\x94\x24\x23\xd6\x24\xf6\x52\xd3\x5a\x39\x85\x32\xa4\xa3\xbd\x24\x05\xb1\x57\xed\x30\x2b\xa6\xe5\x32\x18\xd5\x76\xaf\x68\x4d\x65\x32\x1b\x57\x31\x74\xa6\x3a\x8e\x64\xc8\x29\xb3\xe5\x03\xa0\x95\x84\xa6\xea\x03\x7b\xc5\x37\x87\x65\x3c\x26\x5e\xec\xbe\xfc\xf0\x99\xf5\xf9\x16\x86\x80\xfc\x87\x71\x04\x0c\xe7\x37\xb1\x04\x70\x01\xf0\x83\xb6\xa5\x12\x9c\x82\xbb\xaa\xef\xc5\x13\x5e\x4a\xbd\x7d\x79\xc2\xd9\xc1\x14\x0e\x40\xf5\x76\x40\x75\x05\xe4\xff\xc5\xfc\xf3\xa3\xb7\xc5\x76\xc0\x72\x1f\xc6\x3b\x13\x2f\xdd\xc6\x39\xa0\xa0\x8b\x0b\xd2\xed\xfc\x73\xe5\xcd\xe1\x8d\x67\xdb\x39\xa9\x32\x8d\x30\x4f\xca\x0b\xa9\xc2\xfe\x20\xba\x88\xa7\x17\x8d\x91\x9e\xb4\x97\x2d\x75\x15\x02\xc7\x0f\x2b\xe6\xf6\x0f\xfc\x10\xab\x3e\x7e\x0d\xf5\x17\x26\xab\x86\x01\xad\xa1\x18\x22\x41\x34\x8b\x9f\xcb\xd3\xff\x5c\xd0\x38\x7f\xc3\x58\xe4\xd6\xe3\xaa\xe5\x65\x35\xd9\x6c\x36\x22\x94\x61\xb6\x45\xc0\x52\x32\xe4\x6f\x27\x2e\x47\xbd\x71\xd7\xc5\x23\x47\xb3\x8a\xce\x9e\x79\x57\x71\x98\x2f\x82\x32\xe0\x0b\x16\x2b\xac\x89\x97\x56\xd7\x4a\x55\xfb\xdd\x93\x5c\xa9\xd6\x79\xe2\xed\x61\x81\x57\xdd\x09\x2f\x4b\x3a\xb6\x91\xf8\xd8\xec\x1d\xaa\x5d\x2e\x69\x16\x38\xff\xca\xdb\x4f\xbd\xdd\xe2\xcb\xac\x44\x79\x87\xe0\x17\x1c\xfc\xf7\x0f\x10\x45\x5e\x04\x24\x04\x08\xdc\x91\xbc\x4a\x16\x71\x7e\xcf\xbd\xac\x72\x4b\x0f\x0b\xfe\xa8\x11\xc4\x67\xd3\x0b\x41\xd8\x93\x5a\x7d\x03\x91\x55\x79\xf3\x58\x15\x47\x78\x19\x28\x4f\xc3\xa5\x3b\xea\x59\x8e\xe5\x58\x81\xbd\x7a\xe6\xbc\x38\xec\x0d\x7a\xf2\x83\x0b\x4c\x65\xcc\xcb\x90\xe5\xf6\x8a\x90\xc7\xfd\x81\x23\x74\x65\x03\xb1\x99\x46\x17\x7f\xf0\x27\x8c\x2d\x83\xc0\x43\xca\xdf\xb0\xa5\xdc\x39\x26\x38\x0e\x71\xdb\x06\x5a\xec\x9c\x55\x0e\xaf\x8d\x45\xb3\x84\x6e\xde\x68\x6b\xce\x73\x4b\x25\x2c\x61\xf3\xaa\xd5\x2d\x39\xa4\x10\xa5\x56\x5b\x4a\xe1\x32\xd6\xad\x74\xb5\x59\x8e\x0f\x29\x2a\x9e\x7b\x3a\x9b\x54\x3d\xb0\xda\x2b\x6a\x1d\xd8\x62\xeb\xb3\xd3\xc3\x97\x69\xea\xad\xec\x79\x9a\xe4\x09\xdb\x1e\x89\x41\xc5\xd7\x9a\x63\xbe\x85\x2f\xeb\x8d\xc9\x3a\x6e\xdc\x2b\x57\x9f\x87\x14\x06\x02\xce\xe2\xa4\xec\xb8\xae\xab\xb7\xb1\xdc\xfe\x57\xa5\x50\x93\x85\x37\xe4\x79\x30\x3b\x32\x77\x5d\x0c\xf5\x47\x9f\xf4\x87\x00\xe4\x4b\x4f\xa2\x98\xab\xc4\xde\x2f\xe3\xf7\x0f\x75\xac\x23\xf1\x39\x76\xdb\x32\x36\x1b\xa7\xb5\x50\xb7\x5b\x34\x4a\xeb\xb5\x0f\x33\xda\xb1\xe4\x50\x0d\x7a\xd5\xcd\xb2\x8e\xb3\x61\x9f\x89\x31\xa0\x6a\xf2\x1a\x50\x3f\xab\x52\x34\x26\xeb\x36\x2a\x6a\xa0\x0a\x55\x61\xa1\x44\x28\xad\x22\xb8\xaf\x6a\xf3\x32\xa5\xde\x16\xdd\x86\x65\x3f\x4c\xb9\x61\x9a\xe6\x77\xd9\x2a\x55\x4f\x18\x34\x35\xf9\xbf\x9b\x62\x7c\x0f\x9d\xf8\x7f\x7d\x6f\xa5\x78\xd7\x01\xd3\x7f\xc1\xbe\xf3\x5b\xfb\xe8\xbb\x77\xd1\x5f\x57\x97\x9a\xd1\xfc\x3a\x09\x74\xc5\xc5\xc0\xb5\xd4\x18\x18\xf8\xc4\xa2\xf1\xa7\x1a\xfd\x77\xaa\x05\x9a\x41\x7d\x84\x04\x8f\x71\xa1\xbf\x32\x2c\xe3\xca\x20\x43\xc0\xd1\x64\x6b\xdf\x6d\xf1\xe7\x20\x60\x16\x35\x2c\x94\x3f\xf5\x63\x80\x7b\x55\x50\xb5\xda\x57\xaa\x00\x6b\xd0\xf7\x36\xe5\xc7\xd2\x2e\xdf\xed\x6e\xb1\xcc\xef\x69\x95\x57\x4e\x17\xc1\x3c\xcd\x2b\x6c\xb1\x5d\x0b\x07\x08\x1b\x3b\x4f\xbb\x40\xa7\x69\x10\xb5\x6e\xdd\x85\x10\xbb\x4a\xbf\xf8\x0a\x56\xfe\xea\xc5\x25\xcd\xe6\xbd\xd9\xb4\xbd\xa3\x8e\x74\x58\xc6\x24\x02\xcb\x8e\x69\xf7\xfa\x27\xa4\xf9\xb2\x60\xcd\x9c\xdf\x1c\x31\xb6\xfd\x74\x80\x0f\x77\xad\xc8\xbd\xcd\x92\x9f\x7d\x78\x33\xe1\x63\x94\x34\x3c\x7f\xdf\x04\xf5\x40\x93\x14\x22\x98\xb3\x6a\xbe\xaf\xad\xb2\x6e\xa5\x6a\xf1\x18\x60\xbf\xaa\x3e\x03\xb6\xd3\x2b\xac\x20\x81\x08\x3e\x83\x63\xb6\x70\xef\x34\x3a\xe8\xe6\x83\xff\x42\xd9\x8b\x4f\x48\x80\xb5\x03\x6d\xea\xf8\xb1\x55\x28\x7f\xdb\x36\xec\xff\xdc\x1e\x0b\x9f\x7a\x93\x13\xd1\xdf\xbd\xcd\x92\x7b\x16\x7f\xe7\xe6\xaa\x84\x4d\x9b\x40\x8d\xd4\x08\xe3\x4e\xf0\x22\xb0\xd3\x01\xef\xd3\xa2\xe5\xb8\x0d\x05\xf7\x8e\x33\xb0\x3f\x69\xbb\x24\x23\x31\xdd\x6f\xbe\xbf\x5b\x44\x79\xb8\x65\xa6\x43\xfe\xc3\xe6\xf8\x0c\x50\xdf\x77\x06\xfd\xf9\x07\x17\x0d\x47\x90\xbb\xcc\x88\x3c\xaa\x1c\x4b\xdc\xd3\x5e\xb8\xc5\x39\x08\x8b\xc8\x88\xe9\x57\x69\xb2\x98\xf3\x88\xe9\x97\xf8\x21\x03\x42\x40\x51\x13\x13\xc9\x10\xff\x36\x5d\x6d\x48\x16\x73\xe5\x3d\x41\xf8\xbe\xe7\xf3\xcf\x3b\xb5\xa7\x9d\x0f\x11\xa2\x23\x1f\x04\x69\x65\xd5\x8b\xe8\x4c\x07\x07\xfa\x37\xbf\x3d\x41\xd6\x32\xe0\x6c\x43\x2e\xaa\x61\xfc\x35\x64\xcd\xea\x8a\x19\xbc\x0b\x31\x82\x13\x47\x58\x28\xae\x57\xc1\x11\xdc\x04\x12\x60\x5a\xe3\x54\xb9\xb3\x1c\x39\xe3\x42\x3c\x3c\xf7\xce\x5b\x42\x41\x6f\xb9\x4f\xc1\x9e\x2c\xb8\xba\x4f\x8d\x2b\xa5\xc6\xd5\x7d\x6a\x5c\xf1\x1a\xf7\xf2\xe6\xe1\x7c\xb4\xd7\xce\x48\xdc\x04\x07\x2e\x5c\x17\x43\x2d\x6a\xff\x03\x56\x06\x7c\x32\xa5\xc4\x39\x92\x01\xfc\x71\x88\xc7\x48\x4b\x9c\xb9\xc6\x75\x9e\xcf\x07\x4f\x9e\xdc\xdd\xdd\xd9\x77\x47\x76\x92\x5e\x3d\xe9\x3b\x8e\xf3\x24\xbb\xbd\x32\xe4\x5a\xd7\x1c\x48\xec\xfd\x67\x33\xce\x50\x1d\x97\x4b\x20\x53\x48\x9d\xb1\x16\x85\xec\x56\xbc\x35\x2e\x03\x9c\x21\xf4\xa5\xf8\xae\x53\x87\x91\x89\x70\xbe\xf3\xc5\x5a\x1e\x70\x8c\x2a\x87\xd5\x56\xc9\xb6\x65\x9a\x22\x30\xac\xb2\xab\xc7\xc3\x32\x74\x6a\x83\xa3\x5e\x55\xa8\xf1\xf2\x01\x81\xfd\x1d\xaf\xa4\x74\xc6\x14\xc1\xde\xb6\xf6\xb3\xbb\xae\x85\x4a\x13\x11\xd5\x46\x63\xeb\x36\xcc\x06\xa5\x46\x7c\x0b\x4b\xc7\x56\x74\x82\x25\x60\xce\xe9\x1a\xbe\x2a\xc7\x46\xe3\xe1\x07\x70\x83\x40\x6b\x94\x8a\xb2\xcd\x6f\x43\x96\x76\x35\x02\xc0\xf5\x82\xcb\x3c\x1e\xaa\x8d\xc9\xb9\x72\xc7\x8b\x79\xb0\xbd\x00\x23\x8c\x26\x0f\x33\xb2\xde\x43\x5e\x72\x95\x6b\xbb\xc4\xe4\x2c\x2f\xc4\xa6\xce\xf6\x45\xdd\x4b\x4d\x97\xa5\x5a\xe9\x8e\xaa\x12\x71\xa9\x5a\x91\x80\xc2\xdc\x89\x17\xe5\xe1\xf9\x24\x26\x24\xf0\x17\x16\x14\x01\xe5\x15\x57\x55\xc9\x40\x7e\x94\xc4\xd4\x44\x68\x94\x96\xbb\xd4\x3c\x71\x13\x83\x43\x61\x6f\x56\x11\xaa\x0f\xd3\x02\xfc\x18\xc2\x9c\xf3\xf1\xaf\x0c\x48\x3d\x16\xa4\xba\x1c\xee\x96\x2c\x8f\x2a\xbc\xc7\x5f\xf1\x86\xa7\xa5\xf1\x79\x2c\x83\x95\x15\x8f\x79\x97\xc1\xa4\x11\xbc\x33\x4d\xb8\xac\xeb\xfc\x1b\x28\x21\xff\x26\xb3\xe0\x95\x79\xf5\x05\x95\x5d\x26\x8b\xe6\xd5\x59\x4b\xbd\xf7\x22\xfd\x5d\x98\x4e\x3b\x80\x72\x6b\xde\xd4\x1d\xf1\x6e\x45\x85\xbb\xc4\xf3\x97\xda\xeb\x16\x20\x0c\x10\xf0\x36\xcc\x8a\x2d\x0c\x43\xd6\x9c\x77\x5d\xd1\xf0\xcd\x86\xa7\xb0\x1f\x8c\xdf\x8a\xfd\x5f\x03\xd2\xbc\x5d\x76\x6c\x39\x05\xc8\xc3\x9d\x62\xfe\x84\xcd\x66\x4d\xbf\x7c\xf0\x66\xf3\x48\xf7\x79\xff\x1f\x07\x9b\xbf\xb6\xa1\xf3\x21\x9b\xed\xbf\x8e\x5d\xf3\x61\xc6\xcb\xe1\x7f\xa5\x11\xf1\xcf\x30\x55\x2c\xff\x1f\xb0\x53\xdc\xdf\xda\x00\xcf\x3f\xcb\x37\x9f\x2b\xa6\x07\xd6\x5d\x87\x60\x72\xa8\x5a\x5b\x9b\x8d\x14\x22\x44\x5a\x2d\xbb\x62\x4b\x6d\x41\xb2\xcb\x4a\xaa\x3f\xe7\x73\x1f\x03\xc8\xe7\x59\x92\xe4\xd7\x4d\xf7\xad\x44\xce\x77\xbd\x6f\xd5\xfe\x6a\x85\x77\x75\x95\xd2\x2b\x10\x9c\x18\x91\xa0\xa7\xbf\x6c\xd4\x64\x48\xb0\xaf\x93\xe4\x06\x57\x5b\xd4\x8c\x85\x55\x55\x34\x0a\x1f\x0f\x17\xef\x1b\x0e\x4e\x1c\x6b\x8a\x8e\xb6\xf2\xd8\x9e\x56\x9e\xef\x6b\x7e\x0b\xa9\x0c\x81\xa2\xbd\x2f\x23\x2c\xeb\x22\xfa\xca\xba\xf2\xa0\x11\x5c\x35\xad\xbd\x6a\x34\x0b\xe3\x41\x0f\x9e\x30\xea\x39\x4e\xfb\xfb\x44\x18\xd1\x80\xe6\x18\xf3\x40\xbc\xeb\x83\x4f\xea\xa0\xc7\x2e\xe4\x28\xe7\x08\xec\x13\x05\x00\xfb\xf5\xac\xc7\xd5\x45\x03\x3e\x3b\xc9\x22\xef\x24\xd3\x0e\xbe\xa9\xd4\x31\xba\x90\x5a\x34\xf7\x3d\xe4\xa9\x5d\x2e\x23\x05\x58\x4a\xcf\x55\x9d\x0a\x44\x77\xd4\xd0\xb9\x3d\x22\x44\x87\x97\x7b\xe8\x0e\xc4\x61\xb8\xda\x3e\x1a\x0f\x83\x2d\x97\xbb\x5e\x4b\xa7\x85\xb2\xdc\x67\x99\xc3\x4a\xe3\x4b\x7e\x25\xb4\x30\xcf\x60\xa1\xdb\xab\xdf\x5d\xc7\xf2\x6e\xaf\xbe\x70\x6f\x24\xf0\x37\x73\x15\xf0\x6c\x8e\x41\x63\xac\xc6\x16\x90\x21\x14\x68\xdc\xb2\x32\xe4\x5d\x37\xb0\x97\x4f\x10\x86\x3b\x2a\xb1\xca\x58\xf2\x4a\x4b\x2e\xc8\xb0\xa9\x05\x9c\x7b\x97\x03\x86\xcc\x5a\xb1\x3f\x5f\x0a\x52\xe8\x9d\x84\x40\x4d\xc5\x2b\xb1\xc8\x78\x5f\xeb\xa5\xf7\x95\x07\x89\x7f\x43\xf3\x30\x69\x90\x07\x3c\xe7\x1b\x1f\xe3\x84\xde\x07\x54\x6e\x98\xb0\xad\x7c\x2c\x83\x18\xf1\x17\x39\xab\xaf\x84\x21\x34\x5c\xea\x15\xf7\xbc\x55\xb9\x0f\xac\x81\x93\x05\xdf\xea\xe4\xb6\xb1\xdd\x12\x10\x3b\x50\x6d\x29\xa6\xb4\xb4\x10\x96\x10\xab\x51\xee\xb1\x1a\xad\xb9\x17\xd1\x3c\xa7\x16\x3e\xae\x94\x91\x35\xff\xe1\xf2\xbf\xa5\x19\x95\x43\xea\x41\xda\x21\xe6\x9f\xfd\x11\xb3\x4c\x0e\xc2\xe5\x5e\x1e\xce\xe8\x8f\x5e\x46\x5d\x7e\xef\x82\x63\x2c\xd3\x5d\xd7\x90\x8e\xf9\xc6\x0b\x70\x5b\x9a\x46\x49\x92\x9a\x26\xab\xe3\xb5\x97\x53\x62\x5f\xd1\xfc\x22\x9c\x51\x93\x3c\xe9\xd1\x23\x32\xa8\xe2\x40\xb7\xb8\x70\x46\x4b\x9f\xc8\x7a\x65\x32\x4f\xab\xaf\x47\x8f\x06\x4d\x50\xfc\xb1\x03\xac\xb7\x74\x01\x55\x3e\xf0\xd9\x33\x2f\xf7\x0e\x0e\x78\x6d\xa0\x19\xca\x2b\x24\x07\x07\xb8\x70\x87\x19\xfc\xe5\x1b\xf9\x75\xb3\xac\x80\x37\xc4\x71\xf5\xf1\x82\xe0\x4d\x4e\x67\x98\x54\x3e\xce\xc0\x93\x07\x95\x22\xe5\x85\x16\x78\xd7\x9b\xf1\x8a\xde\xa3\x42\x92\x0a\xb4\x44\xee\xb5\x19\xac\x51\xe0\x73\xe0\xf0\x4a\x50\xf9\x93\xfb\xd7\xf2\x91\xc4\x34\x53\x56\xc0\x9f\x52\x87\xe6\xca\x5f\x9b\x0d\xbe\xf7\x23\x13\xb8\xd8\x70\x5d\xd7\xe1\x57\x8f\x30\x81\x7f\x5c\xd1\x1c\xae\x6b\x9b\xe4\xb9\xc3\x6f\xcd\x38\x63\xbb\xb9\x77\xd8\xb6\x8f\x3f\x5c\x1e\xa8\x22\x87\xa5\xdb\x4b\x6b\x35\x70\x60\x65\xa1\x51\x46\x3b\x2d\x24\x34\x15\xd7\xf8\xf3\xd0\x94\x9f\x62\x84\x37\x1b\x87\x70\xe4\xd8\x1d\xac\x1c\xbe\xf6\x2e\xd6\x8b\x88\xbf\x4d\xa9\x7c\xc8\xc7\x4b\x21\x8d\x81\xff\xb8\x7a\xef\xcd\xa8\xd2\x7f\x7c\x3c\x99\x6c\xab\x4c\xc4\xa5\x70\x54\x0b\xa8\xb8\xb0\x2a\xfb\xa9\xe2\x24\x86\xdb\x81\x5a\x5f\x41\x05\x6b\xf9\x1e\xab\x52\x3f\x56\xad\x33\x19\x6a\x1d\xec\x1f\xc5\x14\x84\x57\xeb\x9a\x59\xb4\xde\x8b\xcb\xcd\xc6\x04\x7a\x1f\x37\x74\x60\x8f\x74\xb5\x5e\xb6\x56\x03\xf4\xb7\x13\x7d\x31\xde\x6c\x9c\xf2\xe4\xcb\x12\xad\xad\xdf\x2d\xef\x70\x16\x41\xf6\x11\xbc\xa2\x7f\xf1\xf1\x7e\xd1\x90\x36\x70\x0a\xab\xec\x8b\x41\xa5\xbb\x74\xef\x41\x85\x59\xd1\x77\x90\x8f\xf6\x28\x1c\xf3\x09\x06\xa5\x54\xba\xc2\x31\xbf\x89\xa4\xb4\x5e\x99\xaa\xb7\xe2\xc6\x91\x2a\x87\xc2\x5b\x26\xcd\x64\x31\xd6\x3d\xca\x0d\x26\xa5\x04\x8a\xcf\xc2\x0a\x16\xb3\x79\x75\x3d\x82\x49\xb8\x16\x50\x3a\x4b\x5b\x6a\x75\x83\x1a\x01\xd0\x1f\xd9\x60\x34\x2e\xb6\x8e\x38\xec\xbd\xe8\x1d\x63\x17\x77\x8d\x37\x27\x4b\x41\x61\x01\xff\xc8\xd1\x84\x17\xa9\x01\x63\xc9\x27\x2d\xb3\x99\xa3\x6c\x99\xd0\xf0\x63\x05\x4f\x30\x02\x00\x90\x8a\x60\xbc\xa0\x62\x44\x06\x93\x95\x15\x25\x5e\xd0\xa0\xd6\x41\x71\x4d\x6e\x37\x0c\x45\x0d\xa8\x50\x4b\xb2\xbe\xac\x0e\x87\x96\x29\xa1\x81\x4c\x2e\xe3\x91\xe4\x6d\x92\xfe\xbb\xca\x13\xbe\x4e\x14\x35\x95\xc0\xfe\x17\x4d\x93\x9f\xc3\x28\x72\x6b\x1b\xee\x2a\x24\xdb\xf0\x09\x8b\xb2\x43\x8a\x1a\xa6\x69\x03\x16\xbc\x1f\x0b\x5c\xb2\x94\xe6\x85\xed\xe6\x74\xc5\x00\x82\xd6\x46\xae\x02\x87\xcf\x44\x40\x41\xb6\x23\x8f\x56\x26\xc4\x7a\x84\xce\x6c\x3d\x53\x13\xba\x29\x21\xeb\xa5\x8c\x1f\x58\x2b\xbe\xc5\x20\xc0\xa6\x2e\x69\xc5\x0f\x8e\xc1\x05\x21\x2d\x2a\x3e\xc6\x67\x78\xc4\xc0\x36\x1b\x04\x7e\xe4\x2e\xc9\x3a\x10\x4a\x79\x68\x39\x16\x93\x91\xd6\x6a\xc0\xfa\x09\x35\xbb\xb0\xdb\x2d\x8a\x7d\xf4\x3b\xfb\xe7\x70\x49\x83\xd7\x8b\x14\xd4\xf9\xba\xb6\xa7\xe7\xef\xd2\x6e\xb1\xcc\xb7\x6a\x81\xa5\xc2\xd1\xac\x5c\x35\xe8\x1e\xaa\xd1\x5f\xa3\x58\x58\xff\x99\xae\x1d\xa6\x34\xd3\x74\x38\x83\x14\xf5\xba\x66\xde\x92\xad\x9a\x1f\x93\x30\xce\xb3\x6f\xac\x4c\xc3\x65\x88\x35\xfe\x2f\xa9\xdf\x36\x2a\xa3\x4d\xfd\x2f\x25\xc9\x7e\x2b\xa5\xfe\x6a\x88\xb4\x85\x56\xa0\xb4\xf7\x50\xde\x48\xd5\xa4\x02\x55\xde\x40\xd6\xf0\x39\x0d\xa5\x1d\xec\x6b\x7d\x30\x1b\x87\xf8\xff\xa0\x8e\x3d\xac\x92\xde\x15\x76\x1c\x95\xf6\xae\xdb\x2b\x74\xbd\x91\xbf\xb1\xa2\x91\x7d\x58\xc5\x45\xea\xca\xd1\xb0\x72\x17\x5d\x43\xf0\x48\xe3\x1a\xae\x32\x2b\xf8\x9e\xd5\x8b\xa8\x5a\xcc\x1e\x14\x1d\xf6\x86\xe1\xf3\xde\x30\x3c\x3c\xac\x33\x41\x5b\xcb\xf7\xd4\x0c\x17\x31\xde\x84\x5b\x2f\x07\xa6\x19\x1e\xf6\x1a\x1a\xdf\xa8\x19\x3a\x56\x38\x08\x15\x37\xa8\x06\x25\x99\x7b\xf9\x08\x5d\x59\xf1\x28\xb1\x96\xfb\x8f\xa0\x5c\x6e\xab\x7d\xae\xdc\x10\xc7\x25\xa9\x8a\xf1\x79\x53\xbf\xa3\x05\x20\x4d\xe6\xe8\x21\xc4\x08\x17\x5f\xb5\x03\xd4\x9d\x9d\x27\xad\x39\x3d\x52\xd4\x5b\x74\xe8\xf6\x76\x2a\xc9\x5a\x6b\x95\x3b\x1c\x42\x9c\x15\x64\xf8\xff\x07\x00\x00\xff\xff\xca\xe3\xbc\x8b\x22\x2a\x01\x00") func webUiStaticVendorRickshawRickshawMinJsBytes() ([]byte, error) { return bindataRead( @@ -778,12 +799,12 @@ func webUiStaticVendorRickshawRickshawMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/rickshaw.min.js", size: 76322, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/rickshaw.min.js", size: 76322, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorRickshawVendorD3LayoutMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x7c\x79\x93\xe3\xb6\x11\xef\x57\xf1\x4e\xa5\xa6\x08\x11\xd2\x48\xeb\x72\xd5\x8b\x34\xd8\x29\xc7\x71\x12\x27\xf1\xe6\x70\x6e\x95\xca\xc5\x03\xbc\x44\x91\x1a\x4a\x9a\x95\x76\x86\xdf\xfd\xfd\x1a\x20\x08\x50\xa3\x5d\x6b\xdf\x9f\xaf\x5c\x1e\x81\x20\xba\xd1\x68\x34\xfa\x42\x73\xbd\xe4\x50\x45\xfb\xbc\xae\x3c\xf6\x6c\x9a\x5f\x05\x5e\xc0\x9e\x9f\x82\xe6\xab\x50\x04\x93\x5d\x7d\x68\x22\xc9\x63\x34\xf7\x41\x93\xca\x3d\x97\x22\xf2\x42\x1e\x33\x9e\x88\x65\xb8\x5a\x7c\xc8\xf2\x52\x7a\xe1\x1b\x21\x24\x0b\x45\x38\xd9\x06\x8d\xac\xf6\x3c\x99\x6c\x0f\xbb\xcc\x0b\xd9\x82\x30\xa5\x22\x99\x94\xb2\x4a\xf7\x59\x37\x3e\x56\xe3\x93\xc9\x6e\x5b\xe6\x91\xf4\x52\x3e\x25\x8c\xb1\x88\x3b\xf8\x45\x23\xf7\x87\xa6\xfa\x2a\x69\x7b\xb2\x42\x4b\xd6\x72\xc5\x23\x10\xd4\x0d\xd5\x18\xa3\x37\xa2\x3a\x94\x25\x0b\xf5\xc4\x01\xe3\x81\x88\x30\x2c\x3a\xc3\x68\xdf\x87\x16\x77\xe4\x05\x3c\x62\xcf\x79\xe2\x05\x42\x88\x88\x75\x63\x03\x45\x7c\x2c\x68\x6a\xac\x3b\xf4\x22\x5a\x35\x68\xac\xb7\x1e\xe3\xa9\x90\x5d\x2b\x53\x53\x77\x84\x24\xc0\x90\xb2\x4c\x24\x97\x86\x1a\x2a\x32\x3b\x77\x4a\xeb\x0a\x26\x49\x7e\x94\xf1\x8b\x78\x6b\x5f\x64\xea\x05\x18\x95\xdc\xde\x7a\xdd\x80\x5b\x31\x63\x76\x44\x8e\x6d\x2b\x80\x3e\xe9\x5f\x82\xca\x44\x11\x63\x07\x15\xb4\xb7\x93\xed\xd1\x17\xf1\xd7\x13\xf9\x04\x56\x4c\xe2\x23\xed\xcf\xc9\xed\x39\x71\x39\x69\xe4\xee\xb0\x91\x9e\x33\xc1\x1a\x7c\x09\x89\x33\x9a\x0f\x53\xa0\x9f\x2e\x82\x49\x94\x91\x28\xa0\x09\x86\xbd\x09\xb0\xb3\x41\xa2\x87\x24\xd8\x95\xaa\x8e\xe5\x8e\xdb\x1d\x07\x77\xc6\x33\x9e\x77\xdc\xf1\xfd\xec\x3e\x05\xa7\x45\xb2\xcc\x56\x04\x9f\x0b\xbd\x6f\x51\x5d\xed\xf3\xea\x20\x17\x6b\x2f\x57\x73\x72\x33\x8f\x2f\xf2\xae\xc5\x63\xdb\x1e\xa1\x71\xe4\x72\xd8\x71\x6a\x5b\xda\x43\xf0\x3a\xaf\xf6\xc4\x55\x22\xed\xe5\xc5\xf4\x4c\xc0\x84\x1f\x83\x7d\x36\x69\x82\x2a\xae\x37\x1e\x1b\x4f\xbe\xe1\xe6\xdd\xe9\xf5\x3b\x2d\xbc\x85\x08\x47\xd1\xd2\x0c\xcb\xab\x58\x1e\x57\x0b\x4b\x5c\xf7\xe2\x3b\xcd\x93\x82\x68\x2c\x46\xfd\x84\x44\xa1\x7d\x3c\xb5\x80\x3b\x8a\xf8\xce\x80\xd3\x22\x4f\x42\xf6\xcf\x96\xf5\x25\xed\x7e\x27\x2d\x6f\xa7\xb6\x7f\xe3\xf4\xcf\x6c\x77\xed\x74\x07\x93\xa3\x7d\xb1\x1d\xbc\x38\xd9\x17\x8f\x66\x6f\xd1\x3b\x15\x21\x28\x39\x89\xc8\xbe\xde\xdb\xe3\x36\xc3\x31\x9a\x92\x0a\x58\x4e\x57\xcb\xd9\x8a\x4b\x4e\xfb\xdc\x9d\xe7\xa4\x6e\xbc\x45\x78\x9f\x2c\x7c\x3f\x64\x9e\xc4\xa0\x90\x06\xb1\x77\x31\xa4\x36\x02\xde\x18\x07\xdd\x88\xbd\x83\xff\x30\xa0\xab\x91\xf1\x01\x7a\xe0\x89\x4f\x1d\xe9\x7b\x22\x0a\xed\x20\x3f\x04\x5e\xfb\xf6\xc3\xe0\xed\x11\x4f\x6a\xfb\x22\x99\x97\x9e\x6a\x95\x75\xea\x85\x1d\x99\xec\x4e\x75\xfd\xf9\xfd\x5b\x7f\xc6\x9c\x29\x8e\x1a\x09\xad\x33\x22\x31\x8d\x85\x4f\xab\x84\x9c\x7b\x01\x66\x1b\xc7\xec\x2e\x24\x45\xb7\xea\xc5\x37\xba\x17\x21\x4b\x96\xd1\x4a\xc8\x51\xe4\xc7\x17\x14\xd5\xc9\xae\x6c\x89\x03\xb6\xc9\x2b\x52\x1f\xd4\x0a\x30\x1d\x73\x96\xf0\x71\xb8\x40\x28\xdb\x66\x4f\x67\xb2\x91\x21\xc4\x8c\x5e\xaa\x2e\x7d\x14\xf2\x32\x86\x1e\x3b\x7b\x6d\xba\x69\x48\x99\x57\xeb\x9d\xf8\x2d\x5a\x4f\x41\x79\x90\x67\x23\x55\x1f\x0d\x53\xe7\x53\xf4\x8a\xdf\xce\xff\xbd\x78\x33\xe5\x9e\x19\x10\x30\xbc\x6a\x79\x60\xa9\xfd\x76\xb0\x63\x66\x66\xfb\xfe\x37\x83\xf7\x6a\x3e\xfb\xf2\xbb\xc1\x52\x3b\x72\xc6\xaf\x86\xfd\xd6\xc1\x41\x1c\x93\x38\x13\x20\x69\x13\x6c\xad\xa9\xea\x47\x78\x96\x8a\x97\x97\xe5\x8a\x0d\x87\xf5\xb3\x3d\x6b\x1b\x36\x0f\xb8\xb6\x60\xf3\xb0\x6d\x59\xeb\x4a\xc1\xef\xce\xf6\x41\x13\x17\x9e\x13\xf7\x7b\x57\x58\x82\xc9\xcf\xdb\x20\x5a\xff\x5c\xc9\xe3\x7e\xe1\x3e\x40\xe4\xc3\xee\x71\xdb\xc8\x27\x11\xf4\x8f\xea\x2d\x6c\x92\xfb\xd6\x31\x42\x7f\xd0\xe8\x3f\x8b\xcb\x8e\xfe\xc1\x25\x26\x9c\x1c\xc1\xcb\x23\xc4\x37\x9c\x9c\xd0\x82\x36\x07\x81\x8d\x1f\x4e\x1a\x23\xa0\x72\x24\xc7\xd1\x28\x1a\xc7\xa3\xf8\xdd\x64\x3a\x75\x54\xc7\x1f\x89\xa3\x43\xbd\x13\x6a\x55\xa8\x44\x57\xa1\x6e\x30\x17\xb4\x80\xee\x25\x31\x86\x2a\xa5\xde\x88\x8c\xb6\x33\xf6\xa4\xc6\xc6\x64\x2d\x9d\xb1\x27\x35\x56\xb2\x56\xeb\x93\x1f\xaa\x24\xaf\xf2\xfd\x09\x08\xc7\x7d\x3b\xb6\xdd\xd2\xe9\xb6\x9a\x86\xa7\x3c\xe3\x39\x2f\xf8\x1a\xec\x86\xd6\xf9\x3e\x88\x32\xef\x4f\x64\x5b\xd5\x89\x4d\x27\x47\x31\x4e\x31\x4d\x0a\x3d\x36\xe5\xa5\x97\x32\x32\x2f\xc9\xbb\x19\x7b\xce\x04\x1d\x66\x9e\x61\x08\xf4\x3b\x7e\xf5\x88\xac\x1b\xf1\x96\xec\x51\xb0\x7c\xbb\xe2\x7f\xf1\xd4\x24\x0c\x2f\xf1\xe7\xf7\x78\xc2\x4f\xea\xee\x40\x8e\xde\x9c\x67\x64\xf3\x53\x57\x02\x48\x0d\xd2\xea\x36\xe2\xeb\xc5\x06\xda\x70\xe3\xfb\xec\xb9\x43\x07\xdc\x9b\x95\xb6\x25\x15\x26\xae\xa1\x50\xb7\x62\xa6\x40\x0a\x10\xe4\x60\x29\x60\xed\xb3\x45\x21\x0a\xa7\x93\xd7\x40\x05\x3a\x7f\xf0\x0a\x50\xc3\x9e\x2b\x80\x86\x8d\x0c\xd6\x64\xea\x2a\x01\x87\x80\x10\xad\x85\x4b\xe6\x62\x0d\x44\xc5\xa0\x43\xac\x9d\x47\xbe\x35\x38\xd7\x0a\xe7\xf6\xbe\x86\xb6\xae\x48\x03\x16\x62\xcd\x3a\xfc\x40\x3e\x7d\xf0\x3a\x2e\x64\x58\x3a\x71\x85\xcd\xab\x77\xe8\xfd\x03\x7a\x0b\xea\x2d\xf8\x66\x3c\x66\x73\x74\x14\xc4\x96\xb4\xeb\x68\x5b\xb5\xd9\x8f\xc2\x0b\xfd\x88\xdd\xbd\xe5\x8d\xf0\x62\x5f\x52\x6b\x07\xc7\xc1\xb2\x6b\x6a\xd9\x45\x1d\x7b\xc5\xac\x05\x2c\xe7\x58\x3c\x72\x58\xcc\xb1\x68\x00\xd1\x0b\xd3\x0e\x7d\x8d\xaf\x1e\x77\x8f\xcd\xde\xc3\xc0\x11\xd9\x75\x8c\xc4\xef\x09\xa7\xba\x3f\xc5\x46\x46\xfe\xcc\xf8\xce\x4a\xfb\x9f\xb4\xbb\xe5\x9c\xb1\xe0\x13\x27\xec\xcf\x34\x32\x96\xa5\xdc\xcb\xaf\x5c\x00\x7e\xd6\x47\x70\x16\xea\x47\xd7\x7b\x36\xea\x69\x11\xde\xde\x1a\x53\xf4\x00\xa3\x64\x48\xfb\x91\x14\x72\x23\xfe\x08\x65\xc5\xe6\xd4\xb2\x0b\xeb\xb4\x90\xa3\xa5\xde\x6b\x83\x8d\xd3\xa5\xf0\x4b\x17\x3f\xce\xa3\x08\xe1\xcf\x8d\x48\x0b\x28\x4b\xae\x1f\x4e\x84\x7f\x24\x62\x12\x74\x69\x7c\x34\xec\x32\x39\xa4\x03\x87\xdc\xf7\x13\xf8\x65\xef\x3d\xb9\x4c\x56\xdd\x2c\xad\x9d\xfa\x2f\x43\x3f\x90\x54\x4b\x44\x27\xba\x57\x3c\x89\x51\x3c\x34\x11\x59\x7e\xf9\xf2\x92\x30\x3d\x3e\xc5\x3b\x3d\x3e\x73\xd6\x07\x7d\xe4\x27\xa3\x84\xe1\x78\xf4\x9b\x0b\xc2\x7a\x5d\x32\xe3\x1e\x54\x95\x9f\x8d\xb2\x71\x3a\x4a\xd9\x9d\xf7\x76\x14\x8f\x32\xc6\x18\x24\x54\x0d\x0a\xa2\x7a\x47\xa7\x74\x2d\xf2\x91\x17\xdf\x09\x08\x5f\xd9\xe1\x07\x78\xc1\x46\xf1\x22\x02\x57\x48\x53\xad\x31\x57\x39\x4a\xa0\x79\x4f\x82\xb4\xd1\x7a\x94\x8c\xcb\x91\x6c\x65\xb9\x93\x5f\x99\x41\xb1\x79\x6d\x97\xfd\x57\xd7\xd7\xf2\x8d\x05\xe7\xaf\x2d\x91\xf2\xac\x9c\xad\xfa\xdb\x25\xe7\xc6\x82\x0d\xbd\x1a\x78\x6b\x70\x7b\xee\x8c\x9e\xb3\x58\xfe\x7e\x51\x94\x8c\x09\x75\x24\xea\xef\x5e\x08\x15\x08\x09\xb2\xb0\x3f\x5d\x82\xe5\x91\x03\x4d\xce\x99\xf1\x8e\x1e\x7e\x02\x86\x68\x3c\x1b\xe2\xf8\xc7\x99\x59\xd4\x81\x94\xe8\x83\xbc\x87\xd9\xdc\x09\x57\xfe\x79\x2d\xb5\x44\x2b\x84\xfd\xe7\x7d\x23\xe5\x64\x9f\x41\xd5\xc4\x16\xcb\xbf\xbe\x8c\x6e\x4d\xf5\x27\xb1\xfd\x7b\x68\xb1\x7b\xaa\x20\xa4\x11\x09\x29\xa2\xc3\x0e\x53\x27\xda\xca\xb7\x1d\xcf\x9c\x43\x81\xa8\xd6\x8b\xc5\xbf\xbd\x48\x1d\x0c\x9c\x57\xf6\x6e\x4a\xf1\x98\x88\xad\xaa\xb1\x13\xfe\xe7\x8c\x65\xc7\x71\xe8\x3a\xe3\xff\x3d\xf3\x82\xd4\xe1\xb1\xaf\xff\x77\x06\x1d\xcb\xed\x3e\x03\x06\xf5\x6b\x87\xfd\x4a\x0f\x1b\x44\xaf\x97\x94\x02\x9d\x79\x90\x9a\xf7\x67\xbd\x5b\x65\x82\xe3\x4f\x31\xd7\xeb\xc8\x2c\x67\x89\x90\x08\xcc\x78\xe4\x61\x10\x69\xf3\xa4\x0d\x15\xf6\x96\x26\x51\x81\x9a\xa5\xe3\x67\xbb\x57\x53\x13\x22\xd8\x3d\x83\x03\x6a\x2c\x77\xd2\x4d\x31\x1e\xcb\x77\x62\x8a\x39\xe2\xa5\x5c\xe9\x2d\xa3\x40\xb4\x91\x65\xbe\xf1\xe1\xeb\x24\x93\x4d\x1d\x53\x03\xaa\x2c\x99\xec\xb2\x3c\xd9\xfb\x5e\x44\x6d\x44\x47\x55\xea\x2a\xc3\x30\xe8\xc3\x17\xd1\xed\x3e\xa7\xf4\x83\x6a\x75\x61\x7b\x74\x07\x55\x5b\x1d\x36\xa1\x6c\xc0\x67\xdd\x60\x3a\x72\xab\x28\x72\x8b\x95\x03\x4d\xed\xb1\x6a\xeb\x09\xe1\xa1\x85\x3d\x4d\xd4\x56\x34\x39\x91\x4b\x18\x9a\xa9\xfb\x8d\xd2\xd2\x17\x54\x91\xdc\xed\xeb\xe6\xf5\x41\x39\x1f\x31\x77\xd1\x45\x56\x59\x3c\x1f\xe7\xa4\x4d\x4f\x73\xd2\xdc\x31\x3d\x20\x54\x8f\xe9\x31\x3e\x39\xea\x38\x8c\x87\x72\x7d\x44\x68\xf4\xf5\x4a\xb1\xff\xe4\x87\x3a\x7e\x21\xd0\x31\x45\x4c\x63\xf5\x8e\xfc\xa8\xf8\x34\xa6\x97\xf8\xf3\x76\xd5\xbb\x85\xf7\x24\xcd\xe0\xb1\x84\x65\x46\x48\xcf\x78\xa2\x7a\xb0\xe4\x04\x3d\x09\xf5\x80\xaa\x08\x34\xc5\x44\x91\x24\x72\x92\xb6\x85\x32\x2c\x83\x53\x7d\xd8\x8b\xe7\x96\xf7\x0f\x93\xf0\x50\xc5\xa5\x14\x4e\x5a\xc9\xc4\x47\x8e\x5b\xae\xc9\x5e\x12\xc1\xe3\x99\x32\x22\x67\xa6\x28\xc6\xa9\x8b\xba\x3c\x0d\x14\x53\xbc\x62\x4e\x04\xe9\x4e\x17\x65\x75\x13\x8b\x4b\x49\x2c\xca\x7a\xd0\x3c\x01\xd1\x57\xd0\x64\xa5\x0a\x88\x68\xb7\x61\x09\xf9\x86\xba\x2a\x5e\xf3\x2d\x7f\xe4\xcd\xa2\xcb\x29\x51\x1f\xe4\xf8\xd1\x55\x01\x8f\x20\xe6\xb9\x46\x6f\xe3\xf6\x36\xe8\xad\x21\x42\xcb\xc7\xd5\xb2\x59\x2d\x0a\x4d\x6d\x0d\xc4\xba\xe5\xcc\xc5\x78\xe5\x8b\xba\x4d\x6f\x6f\x4b\x15\xce\x5d\x36\x04\xa9\x57\x2c\x83\x15\x2f\x10\x3e\x23\x38\xe1\xd9\xed\xed\xa6\x77\x13\x86\x00\xc1\x2b\x2c\x56\x14\x31\x31\xc5\xdf\x40\xa4\x7e\x23\xc2\x05\x6c\x95\x80\xf9\x54\xb6\xf1\xaf\x3f\x8c\x93\x11\xdc\x30\x2c\xfd\xe2\x42\xb7\xa2\x7e\xbd\x50\xc5\xc9\x9d\x28\xb1\x58\xbe\x17\x9b\xe5\x8e\xd6\xcc\x0f\x58\x3d\x5a\xfb\x15\x7f\x02\xd0\x07\x01\x76\x1c\x46\x70\x45\x96\x3b\xff\x66\x7c\xe3\xef\x57\xe2\x59\x25\x4b\xe6\x3b\xbe\x3b\x84\xba\xb9\xe7\x3b\x04\x61\xfb\x6f\xab\xb4\x94\xf3\x27\x2e\xab\x58\x37\x3f\x70\xe5\xed\xcc\x0f\x6d\xdb\x6d\xbc\x85\xb5\x00\x5b\x0b\x50\x77\x00\x5e\x3d\xde\x62\x35\x58\x23\xa6\x4f\xda\xd7\x0b\x6a\xc4\xe3\xa5\xd5\xc0\xe6\x2f\x1f\x15\x9d\x58\x09\xcc\xfe\xb2\x51\x0f\x8f\xab\x85\x77\xd4\x9e\xd7\xcb\xcb\xa9\x73\xc1\xc8\x76\x29\x9a\xba\x37\xf7\xdd\x8b\x07\x13\x59\x9e\x4c\x64\x79\x6c\xe7\xa6\xef\x68\xfa\xc8\x31\x68\xf3\xdb\xdb\xf5\x30\xb1\x86\x20\xeb\x33\xd2\x90\x7b\x9e\xc9\xbd\xea\xb9\x7c\x93\x7f\xed\x68\xc2\xd9\xf4\xc2\xe1\x88\xf0\x7c\x04\xed\x7d\x7f\x06\x94\x4f\xa7\xcc\xdb\x54\x47\x52\x8b\x5e\x7b\x6d\x82\x7d\x93\x1f\xed\x31\x4a\xac\x66\x6b\xd2\xc3\x06\x0a\x6c\xd7\xfb\xae\x12\x6e\xbc\x48\xc0\x92\x5e\xb9\x87\x22\xd2\xd6\x24\x60\xf3\xb8\xa5\x74\x5a\x10\xc7\x79\x95\x5a\x7c\xf1\x67\xf0\x25\xa4\x79\x1d\x0c\x09\x61\x20\xbe\xfc\xbe\xa9\x0f\xdb\xdd\x75\x48\xd2\x33\x24\xa9\x41\xf2\xd3\x21\x4c\xcf\xf0\x44\x9f\xc1\x93\x91\xbe\xef\xb1\x64\x06\xcb\x77\xa4\x65\xae\x44\x91\x13\x0a\xb5\xd9\x84\x22\x6f\x55\xea\x66\x08\x6e\xed\xff\xcb\x0b\x65\x6f\x43\x1a\x74\x4e\x66\x3f\x28\xd2\x83\x22\x4a\xc5\x38\x9a\x0f\xaa\x21\x92\x17\x35\x9f\x9b\xa6\xb1\x5a\xd7\xec\xbe\x4a\x72\x87\x3a\x1d\x89\x18\x31\xb0\x2e\x7a\xa4\x3d\xf9\x8c\x9a\x3a\x87\x90\x8b\xd9\x9d\x75\xd8\xe1\x85\x93\x37\xae\x62\x66\x4f\x8e\x23\x36\xca\xef\xf7\x1a\xbc\x10\x61\x9f\x84\x1d\x39\x82\xb5\x45\x10\x97\x8e\x0a\x92\x09\xc4\x71\x19\x5a\x6f\xa6\xad\x9d\xff\xf6\x36\xdf\xfd\x8e\xc2\x7c\x49\x71\x65\x8f\xc9\x49\xa7\x2a\x74\x17\xf0\xb4\x9d\xeb\xf5\xc6\xcc\xdb\xba\x69\x28\xa3\xf9\x9f\x8c\x88\xc6\xe2\x83\x69\x82\x05\x7d\x22\xa1\xe4\x1b\xbe\x55\xa1\x68\x42\x21\xe9\x7d\xbc\x80\xc3\xc7\x9e\x53\xf1\x81\x7c\x3d\x0a\xf0\xbb\xdb\x8f\x1c\xcd\xee\xf6\x63\x23\x72\x78\x6d\x19\x18\xb5\x45\xeb\x84\x96\x0a\x79\x0a\xb1\x19\x6d\xfc\xed\x68\xcb\x0a\x51\x8d\x4e\x80\x1f\x79\x5e\xe1\x84\x3b\x05\x63\xe3\x23\xba\xd9\x1d\xe2\xe3\x11\x82\xe4\x2d\xfd\x21\x5c\x80\xf4\x4a\x91\x4d\x3e\xc8\x3c\xcd\xf6\x77\x5e\xde\xb5\x7c\xd3\x05\x03\x42\x33\x89\xed\xa8\xa4\x14\x86\xaf\x01\x66\xe3\x92\x51\x26\xc3\xa7\x7e\x62\x6a\x89\x89\x77\xec\x79\x23\x22\xd8\x78\xa8\x87\x2d\x1a\xb3\x95\xb2\xe1\x50\x80\x34\x80\x59\xaf\x36\x60\xa9\x78\xa2\x55\xa6\x84\xd0\xdb\x8c\xf1\xcb\x80\x3f\x25\x84\xde\x16\x8f\x27\xa6\xd1\x36\xec\x79\xed\xa9\x64\x62\x2a\xeb\xcd\xe4\xf1\x10\xc4\xe4\xca\x78\x4f\xb0\x2a\xfc\x23\x3b\x77\x97\x03\xe6\x69\xcc\xac\xbb\xd1\x78\x81\x7a\xca\x77\xf9\xde\xfb\xd6\x4b\x29\xe7\x76\x3e\xbc\xa7\x43\x0d\xc7\x59\x46\x38\x96\x62\xc7\x55\x1e\x07\x8d\x13\x9b\x53\xdf\x58\x78\xd4\x3b\x56\x7f\x05\x51\xcb\x46\x35\x8d\xd1\x2f\x4e\xea\x05\x01\x9c\xe8\x05\xb3\xb7\x3d\xfb\x3c\x5a\x7b\xcf\xfb\xd3\x56\xce\x6f\xa8\x7d\xc3\x83\x72\x9b\x05\x73\x32\x19\x5e\x35\x12\x93\x5f\xff\x9a\xdd\x4f\xa6\xd3\x6f\xdc\x5c\x25\x14\x71\x0a\xa1\x08\x29\x8f\x15\x38\x3a\x94\xd8\x10\xe7\xbb\x6d\xb0\x87\x55\xd6\xe8\x28\x2d\xb6\x9c\xf1\x19\x2c\x2e\xf9\x13\xc0\x07\xce\x97\xb0\xac\x1b\xb2\xa3\x5f\x4f\xf9\x4e\x4c\x66\xb0\x9a\x93\xff\xc3\x0f\x30\x94\xf0\x30\x3e\xd0\x1f\x38\x79\xfc\xa3\x3d\x29\x75\xe5\xa8\x17\x1e\x3b\x21\x42\xd7\x41\xa7\xff\x33\xb9\xdb\xd7\x8a\xe8\x89\x52\xfa\x6c\xfe\xd4\xf6\x99\xe1\xab\xc0\x3e\x68\xb0\x0f\x4a\xf7\xe5\x1f\xe5\x75\x50\x91\x86\x8a\xcc\x64\xbf\xcd\x61\xb5\xab\xe8\x4a\xe8\x2d\xb1\x55\x8d\xc4\x51\x54\x21\xd6\x7c\x4b\x98\x62\x83\x65\x88\xb4\x9b\xe3\x27\x88\x21\xc1\x5f\x37\xc7\xe3\xeb\x39\x1e\x69\x8e\xa4\xc9\x15\xf0\x75\x58\x6a\xbd\xce\xba\xed\x2f\xa7\xae\x83\x6b\x04\x09\x60\x9d\x20\x52\x12\x37\x06\xe2\xe6\x21\x9c\xfb\x0a\x5f\xa3\x2d\x40\xf0\x94\xef\x4f\xd7\x21\xdc\x69\x42\x76\x04\xb8\xcf\xe4\x3e\xb8\x0e\x6c\xaf\xc1\xf6\x6a\x77\xc9\xaf\xba\x68\x41\xd6\xda\xa5\xd4\x41\x54\xe9\xa9\x53\x00\x47\x3d\xb1\x01\x5d\xda\x1f\x61\x79\x9f\x50\x22\xf1\x4d\xbe\x7b\x1f\xbc\x27\x43\x8c\xc8\x0e\xee\x27\x33\x57\xa8\xa9\x91\xf1\xc1\xdd\xda\x28\x72\x2f\xba\x94\x4d\x7a\x93\x53\x16\x76\xb9\x52\xfa\x38\x86\x3e\x46\x10\x00\x7d\x1c\xb3\x1c\xfe\xff\xb0\x3f\x51\xfd\x9d\x92\xff\x80\xd7\x8b\x7c\xd9\x7b\x4b\xfa\x7e\xae\x0b\x1e\x3a\xad\x0d\x05\xba\xec\xfd\xa7\xe1\x00\x0d\xc5\x8c\x41\xf9\x2a\x87\xdb\xac\xd3\xd4\x64\x2f\xad\x09\x49\xac\x09\x49\x95\x86\x85\x7d\x20\xfd\x4a\x86\x44\x91\x86\x18\x78\x11\x2a\x92\x43\x06\xcd\xff\x44\x7e\xbc\x9e\x0b\x3c\x2f\x3a\x55\x8e\x31\x47\x3a\xfd\x27\xb3\x20\x0d\xa5\x2f\xcf\x0a\xac\x25\x84\x83\xad\x25\xa5\xe8\x48\x83\xc0\xe8\xc8\xf5\x06\x51\x59\xdf\xf9\xb4\x34\xcd\x15\xb3\x10\x7a\x85\x67\x10\x5d\x27\x41\xe8\x26\x20\x8e\x98\x48\x6c\x27\x51\x50\x96\xde\x3e\xcb\x77\x30\x86\xd8\xe5\x13\xf5\x3e\x9e\xf7\xfa\xbe\x99\xaa\x5b\x84\xea\xe9\x98\xa9\x7b\x5e\x31\x40\xaf\x9f\x6b\xa1\x28\xa0\xac\x15\x25\x47\xb1\xf6\x6e\x8e\x37\x3c\x25\x8b\xd6\xbd\x3a\xe9\x57\x27\x7a\x75\xba\xe1\x99\xf3\x6a\xdb\x81\x41\xdf\x13\x0a\xdb\xdf\xc1\x40\xdd\x13\xfc\xe2\x23\x31\x13\x12\xd4\xb1\xa1\x71\x8f\x18\x3b\xa7\xec\x23\xad\xd1\x6f\x9c\x45\x2a\x4a\x43\xb6\x50\xc9\xc0\x8b\xc3\x9b\x85\x93\xca\xeb\xae\xc8\xb9\x69\x5f\x70\xd9\x2a\xd2\xf8\x50\x37\xfb\x7c\x23\x1b\xef\x37\x9d\xee\x46\xdc\xbf\xbd\x38\x78\xaa\xdf\xc7\x4d\x90\xba\xef\x61\x3a\x21\xef\x40\x13\xca\x0c\x9a\xa1\x6e\xd4\x08\x8f\x91\x45\xb8\xa1\xa6\x3a\xc0\x37\xfc\x3b\xdb\x73\xc3\x0b\xfb\x80\x50\xe9\x86\x92\xfb\x9c\x56\xa9\x7a\x37\xf5\x61\x27\xeb\x27\xd9\x68\xef\x91\x36\xc2\xe9\x37\x4e\x25\x6d\x82\x66\x4f\xac\xee\xff\x54\x32\x05\x6e\xd3\xc2\x3a\x9f\x5b\x4c\x9c\x0f\xb5\xe6\x59\x3a\x4a\x9d\x1e\x5b\x13\x30\xcc\x53\xab\x04\x75\x97\xdd\x1a\x91\x3a\x8f\x8f\x70\xe0\x29\x3f\x21\xa4\xba\x91\xc1\xf6\x66\x7d\xfd\x40\x9f\x45\x86\x0a\x52\x7e\xdb\x82\xf2\x1c\x3a\x00\xa3\x8b\x74\x1d\x07\x4e\x7b\x8d\x94\xde\x67\x2c\xf2\xa8\xc0\x20\xa5\x4c\x76\x01\x37\x4d\x0d\x19\x11\x45\x94\x59\x2a\x1c\x67\x31\xbe\x9c\x6e\xd4\xa5\x0d\x94\x6c\x4c\x6c\xb2\xd1\x64\xd8\x48\x15\x0e\xf4\x9f\x73\x2f\x06\x53\xed\x85\x50\x81\xf6\x1e\x62\xe6\x3b\xba\x4e\x7a\xca\x05\xd7\xeb\x09\x1c\x21\xa4\xee\x3e\xc5\xe1\xa5\xa4\x5f\xa6\x5c\x65\x72\x28\x85\x73\x17\xab\x2e\xec\x65\xda\x39\x23\x76\x2f\xb2\x5c\x36\x41\x13\x65\x27\x8a\x24\xb4\x27\xd2\xe7\x76\xce\x2c\x78\xf0\x19\xcb\x80\xf5\x83\x3d\x73\xc4\x22\x1f\x41\x63\xc0\xdc\x58\x63\x9b\x5f\x8e\x34\x12\xba\xde\xd2\xab\x21\x0f\x79\x78\xfb\x6a\x93\x12\x7e\xb7\xd0\x44\x25\xcd\x5a\x4a\xe0\xfb\xe6\xb0\x46\x03\x7b\x18\x4d\x82\xed\xb6\x3c\x69\x96\xf4\x34\xc2\xaf\xa0\x2c\xbf\x67\x60\xe4\x00\x46\x7e\x02\x46\x32\x84\x28\x77\x58\x04\x0e\x29\x5d\x13\x38\xe9\x9f\xd4\xec\xe8\x22\xd4\x45\x43\x7d\x66\x06\xe6\x59\x54\x0f\x97\x23\x72\x68\x82\x31\xcc\xc8\xaa\x9d\x5f\xcc\xbc\x84\xd8\xa2\x00\x7e\xac\xce\xb9\x2c\xf4\xe5\x56\xf9\x89\x9b\xeb\xe7\x38\xd8\x07\x73\x05\xa0\xc5\x37\x16\x84\xda\xcd\x75\x14\x36\xd7\x51\xd0\x5d\xce\xba\x6d\x7b\x09\x39\xe3\xb5\x4b\xe6\x66\x59\x82\xd0\x55\x1f\xf9\xbf\x57\x96\x80\xa2\x5a\x95\xa1\x95\xa2\xcf\x03\xf5\x95\x0b\x5d\xb9\xc0\x55\x0e\x44\x40\x59\x5a\xba\x24\xe0\x89\xae\x56\xb8\x5a\xb8\x12\x25\x5c\xc9\xc4\x2e\xf1\x3a\xd8\x48\xc3\x46\x04\x6b\x38\x72\x1d\xa4\xd4\x90\x12\x90\x6d\x77\xf9\xfa\xdc\x3a\x5a\x0c\x94\x44\xeb\x8b\x82\x9d\x7a\x74\x09\xdc\x05\xa4\xd9\x27\x05\xfb\xab\x4e\xb0\x53\x23\xd8\x6b\x18\xa4\x4f\xee\xcc\x79\x15\x83\x7d\xb5\x94\x06\x0f\x75\x62\x9d\xce\xd3\x4a\xe5\xef\x4a\x0a\xb0\x75\x27\x5d\xd8\x2e\x0a\x12\xe6\xad\x6c\x36\x07\xc4\xce\x08\x64\x69\x6a\xa7\x67\x8d\x9e\x4e\x02\x23\x17\x8e\x57\x20\xb0\xf3\x62\x6a\x51\x40\xa5\x98\x27\x9d\x05\x25\xeb\xf7\x08\xdd\xf7\x78\x5f\xc3\xfa\x3d\xc2\x06\x19\x68\x1a\x4b\xd9\xbf\x46\x6c\xe8\x67\xad\x1f\xa9\xce\x47\x01\xd1\x75\xf6\xf6\xbe\x02\xd0\x96\x39\x30\x5b\x0d\xe3\x8b\xf5\x72\x3b\x9e\x75\x10\x00\xde\x1a\xe0\xb6\x2f\x87\xd3\xd2\xfa\x97\xb0\x90\xd1\x1e\xd2\xda\x2c\x6f\x62\x99\x04\x87\x72\x7f\x43\x79\xd9\xdd\xe4\xa3\x6c\x6a\xc4\xf1\x8f\x90\xe0\x1a\xce\xd8\xd6\x1e\x05\x25\xbd\x57\x46\x37\x24\xbe\xa9\x12\xdf\x74\x52\x37\xb1\x6c\xae\x95\xdf\x4e\xf5\x04\x03\xd5\x13\xcc\x1b\x75\xe4\x95\x64\x03\x61\x92\xec\xe4\x95\x27\x22\xfa\x14\xc6\x5d\x87\x31\x6a\x55\x45\xc3\xd5\x82\x9e\x2a\x41\xa7\x98\xf9\x2a\x90\x44\x83\x24\x8a\xee\xc3\x95\x44\xc7\x1a\x28\x06\x90\x3e\x50\x8d\x78\xbe\xc9\xab\x5d\x1e\xcb\x31\x90\xdc\xcc\x5d\x2c\xc6\xa8\x76\x02\xa6\xd2\x4f\x42\x9f\x81\x3d\x53\xd7\x11\xd4\x3c\xd0\x1d\x53\xaf\x98\x43\xf6\x99\x94\xa8\x04\x67\xc6\x92\xdc\x73\x2a\x3b\x98\xf2\x1c\xff\xab\xc4\xfe\xda\x38\xd3\x64\xb6\xa3\xfb\x10\x52\x18\xb1\x58\x90\x26\xe6\xd9\x7d\xfe\xe0\x65\x3e\x9c\x81\x78\xc5\xbb\x24\x7d\xcc\xd8\xdc\xcb\xbb\xbe\x75\xdf\x67\x24\x6a\x0d\xc7\x0e\x3e\xd2\x0e\x5e\xde\x24\xaa\xab\x28\xa0\xe4\x4d\xcb\xbb\xce\xf9\x05\x4e\xf5\xf4\x9b\xd5\x32\x8b\xa2\xe5\xbd\x20\x5f\x07\xda\xb6\x7c\x27\x9e\x77\x79\x99\xd5\x07\xb9\xdf\xcb\xcf\x32\x55\x95\xbe\xd8\x2c\xd7\x92\x2e\x7e\xa6\x26\xc3\x65\xd8\x92\x82\x2d\xe9\x7d\x04\xb6\xa4\xd0\x71\x3a\xdb\x45\x1c\x5c\x24\xe0\x55\xe2\xfb\x0c\xfc\x09\x96\xc9\x0a\xfe\x12\xce\xe4\x22\x7b\x27\xd5\xd5\x68\xc6\x78\xac\x99\x03\xa2\xce\xf1\xe4\x18\x2c\x3c\x39\x8e\xf1\xcb\xee\xde\x1a\xde\xe5\x2d\xff\x90\xa7\x64\xb3\x7e\x91\x6a\x90\x1b\xf5\x49\x39\x4b\x34\xd5\xf7\xa8\xc4\x1c\xe5\x52\xb0\x80\x1a\x43\xc5\x46\x54\x5d\xcd\x48\x0a\x45\x93\xaa\x44\x9d\xb3\x96\xbc\x5b\x0b\x65\xef\xf2\xc1\x5a\xcc\x88\x82\xea\x7d\x10\xaf\xa1\x77\xba\x1a\xe3\x97\xb4\xd1\x74\xd5\x43\x29\x54\x24\x54\x6b\xaa\xfb\x33\xe0\x63\xdd\xa4\xb1\xd0\x55\x54\x81\x00\xb5\x9a\xa9\x68\x2d\x63\x6b\x9f\x86\x66\x76\x68\xe6\x0c\x2d\x17\xb0\xd9\xeb\x91\x45\xd5\xd6\xc4\xb0\xcd\x58\xe4\x0f\xc5\x5d\x3e\x2a\xe7\x53\xbe\xb9\xaf\x54\xcd\xcd\xc6\xe5\xae\x5e\x19\x0d\x1e\x8b\xfe\xf2\xbc\x6e\xb9\x3c\x6e\x11\x3a\x7f\x89\x2c\xcc\xee\x42\x93\xec\x34\x82\xa0\xb3\x9c\x91\x5d\x31\xf1\x9d\xe6\x95\x60\x83\x84\x20\xa4\xc4\x3c\xc4\xef\x89\x62\x1e\x3c\xe0\x94\x75\xc3\xfa\x21\xf6\xfd\x9d\x48\x6d\xcc\x74\x79\x88\x88\xdb\xf3\x79\x33\xbc\xc1\x63\xaf\xf7\x39\x29\xf6\x0b\xeb\x1a\xcf\x2e\x48\x77\xef\x75\x87\xf7\x38\xe1\x14\x9a\xf5\x98\xe2\xd6\x35\xed\xf0\x05\xf7\x75\xda\x04\x9b\x8b\xe6\x7d\xe0\x85\x2f\x29\x92\x97\x4a\x19\x85\x2a\x54\xa2\x8a\x94\xc8\x71\xcd\x11\xfb\x93\xcb\x1a\x3b\x5d\xb9\xee\x5c\xab\xe4\x27\xa7\xe4\x6d\x47\xe4\xa6\xb7\xaf\xe8\xaf\x44\xf0\x30\x9b\xcf\xee\x4a\x5e\x3b\x19\xcf\x0d\x5b\x43\x35\x25\x2b\xa5\xb9\x28\xf2\x29\x96\x89\x0f\x01\xf2\xd6\x13\xd5\x46\x74\xbe\xa6\xfa\xb4\xc5\x59\xa6\xb4\x64\xb5\x20\xe6\xf1\xfa\x1d\x7c\xc5\xe9\xea\xf6\xb6\xbe\x47\x63\x86\x06\x15\x7f\x51\xa5\x69\x98\xef\x60\x3d\xe1\x0f\xd4\x7c\xc6\x37\x6c\x4c\xb6\x96\xf2\xb9\x95\xd1\x72\x54\xdc\x63\x15\x9d\x89\x25\xde\x20\xd2\x30\x7e\x62\x24\xa8\x12\xef\x83\x8d\x20\xce\x7c\xc3\xeb\x42\x08\xa9\x95\xda\xb5\xa6\xd0\xc9\xcc\x51\x9d\xbd\x32\x7e\x12\xab\xa9\x76\xd7\xda\x25\xc7\x98\x76\xa9\x8f\x87\x0b\xfe\xc0\xd1\xa3\xec\x57\x3b\x7f\x35\x5f\x4c\xf3\x25\x8d\x7c\x3c\xc8\x2a\xba\x32\x03\x07\xbe\xbd\x09\x09\x18\xce\x84\x74\xa3\xa5\x3e\x20\xfb\x84\xec\x25\xdc\x71\x2e\x7b\xb7\x2e\xa1\xe2\xb9\xb5\xf8\xfe\x21\x99\xeb\xe0\x00\x3e\xeb\x5a\x87\xc8\x02\xe3\xf5\xfe\xad\xd5\xe5\x4b\x81\x1d\xb7\x82\xd6\x85\xa5\x25\x49\x22\xb4\xa6\x58\xdb\x52\x61\x48\x18\x5d\xf2\x6e\x45\xe6\x5b\x49\x2a\x21\x81\xb1\x80\xd7\xb8\x2c\x57\x70\xfb\x72\xa5\xe5\x75\xbd\xc2\x9a\x57\xc6\x1a\xd2\x6d\x6a\xac\x37\x7f\x11\xdc\xde\x56\xda\x2e\x83\x5b\x54\x36\xb3\xee\xa4\xa2\x66\x5d\x05\x95\xd3\xe7\x47\xee\x8a\x5e\x5e\xa6\xd6\xae\xb6\x4e\xe0\xd8\x97\x2f\x9c\x95\x8c\x4c\x4d\xfd\x58\xde\x27\x1b\xbb\x05\xea\x5a\x15\x1c\xc4\xd0\x59\x0c\x55\xac\x48\x58\x72\x2f\xa6\xa2\x95\xc2\xa1\xc7\xa5\xe4\x7b\xf8\x55\xc1\x84\xb8\x8a\x59\x5d\x92\x22\xf5\x61\x85\x26\x5c\x42\x12\xce\x3e\xca\x30\x1f\x9b\xf4\xa7\x01\x64\x4f\xc9\x43\x0f\xbb\x93\xf3\x1d\x0e\xce\xb7\x38\x33\xbf\xb1\xde\xe8\x30\x28\xba\xd6\x17\xed\xb7\xec\xea\x83\x66\x9c\xce\x2f\x38\x9f\x91\x06\x53\x9e\x25\xfc\x93\x4f\x01\xd2\xe6\x4c\x55\xce\xaa\xf3\xf2\xbe\x17\x6f\x66\x83\xe4\xcf\x27\xa2\xa6\xc8\x1b\xd6\x26\xf6\xea\x32\xd2\x5f\x0b\x49\x65\x71\xa1\xe5\x60\xec\x55\x05\xee\x8f\x5e\x62\x3e\x0f\x0a\x75\x46\x35\x54\x19\x55\x73\xed\x48\x09\x95\xb7\xa3\x64\xd2\xdc\xa5\x5c\xff\x66\xfd\xd6\xbd\xa7\x02\xa5\xbb\xb7\x3c\xc3\xff\x39\x6d\xdd\x67\xf2\x22\x5a\x78\x7f\xf7\x2a\x3f\x12\x7d\x61\x7e\x24\xea\xf2\x23\xd1\x59\x7e\x24\x2a\x0f\xbb\xbd\x1b\x4b\x38\x4c\x89\xbd\x61\x22\xac\x67\x8a\xca\x46\xa5\x70\x42\x69\xe1\xda\x99\xe5\xeb\xc5\xaf\xe8\xe0\x9c\x19\xc3\x41\xe5\x1a\x44\x36\xb2\x22\x04\x66\xfe\xcd\x53\x9f\xca\x9c\xc4\x5f\xd1\x80\x63\x4b\x7d\xd9\x03\xdc\x20\xaa\x52\xca\x18\x1c\x8d\x40\x31\x3b\x13\x81\xc9\x4b\x94\xe2\xef\xb0\xec\x30\x56\x3f\xd1\x4f\x25\x4a\x2a\x53\xf3\xe0\x74\x51\x55\x41\x2d\x36\x54\x4f\xe4\x6d\x10\x43\x5a\xc7\xee\x9c\x2e\x9a\x45\x95\x86\x57\xf0\x8b\x6a\xfc\x1d\xa9\x9c\x38\x4d\xe5\xcd\xe8\xf2\xf8\x4e\xdd\x20\x52\x86\x1c\xee\x7a\xf2\xcb\xbb\xa3\x4a\xcb\xb4\x34\xeb\x36\x36\xeb\x1f\xe6\x6a\xad\x37\xf2\x93\x9d\x84\xae\x0a\x86\xa9\xc7\x5f\xda\xb6\x58\x6d\x5b\xfc\x05\x9b\x1d\x69\xa8\x88\x36\x3b\x3e\xdb\x6c\xba\xfc\xfc\xdc\x4e\xf7\xcf\x99\x7b\x8b\x32\x50\x72\x5d\x35\x98\x51\x75\xc9\xb9\xaa\xa3\xfa\xbc\x98\xd8\x99\xc3\x22\xa4\xe4\x0d\xbb\xae\xc0\xe6\x3e\x61\x25\xde\x6f\x20\x37\xd8\x34\x55\x01\x5b\x50\x83\xaf\xc9\x75\x29\x17\x54\x96\xd7\xe5\x3b\x26\xdf\x8c\xbc\xb4\xab\x3d\xeb\x4a\xda\xca\xc1\x23\x5b\x44\x88\x1f\xbb\x07\xb8\x3d\x83\xa1\xa1\x5a\x01\x4c\xe3\xa6\x8e\x85\xe9\xc5\x5e\xcf\x7b\x80\xca\x51\xb8\x9f\x45\x32\xf8\x68\xad\xab\x62\x3a\x1a\x46\xf4\x43\x17\xd7\x17\x6a\xaa\xca\xb1\x45\xe8\xf7\x38\x40\xe3\xa0\x7e\x2c\xf7\x22\x8a\xef\x42\xb7\x8c\xb9\x20\x5a\x48\x47\x11\xda\x5e\x53\x71\x15\x0c\x8b\x88\x8e\x48\x67\x0a\x7b\x02\xd4\x2e\x60\xed\xfd\x1c\x30\x40\x89\xf3\xa4\xca\xee\xfb\x27\xf2\x04\xed\xd3\xa6\xa3\x27\x15\xff\xa2\x73\x26\xc5\x3f\xa9\xf0\x2c\xbd\xbd\x95\x2c\x43\x3b\x23\x9d\xf8\x2f\xa8\x40\x9e\x9c\x55\x07\x82\x9c\x8d\x38\xdb\xb6\xf5\x58\x0e\x3a\xc6\x39\x38\x9b\x92\x0e\xd9\xa8\x7a\xd4\x30\xf0\xc2\x50\xe5\x8c\xe8\xae\x18\x47\x99\x43\x05\x6c\x38\xc2\x10\x34\x11\xab\xb8\x64\xe2\x8d\xbb\xa2\xd2\x1f\x90\x5d\xf8\xee\x0a\x17\xa0\xf7\x0d\x51\x49\x82\x3a\xa8\xb2\x85\x64\x3a\xe3\x10\xee\x8c\x0b\x2c\x12\xa3\x69\x69\x94\xc1\x1f\x8e\x96\x3c\x73\x47\xe7\xe3\x92\xea\x15\xfb\x0c\x50\xdc\x7e\x56\x45\x9e\x29\xc6\xee\x3b\x19\x75\x16\x9f\xfb\xa2\xca\x80\x6b\xde\x50\x70\x55\xc7\xf8\xab\x8b\x3b\xd1\x50\x95\x9d\xf8\xd5\xce\xe1\x3c\x7c\xe8\x0a\x45\xbb\xa2\x50\x7f\x36\x9f\xb6\x94\x56\xa0\x7d\xca\x31\xd3\x38\x3d\x3b\x25\x44\xdc\x5a\xfc\x1b\xaf\xfe\x4b\xd9\x38\x6a\xfc\x87\x34\x28\x35\xfe\xc7\x94\xdb\x45\x3a\x74\xad\x94\x26\x74\x68\xa9\x74\x68\x89\x23\xa9\x2a\x31\x36\xda\x93\x7b\x79\x99\xfd\x3f\x28\xd4\xee\xa6\xe4\x6e\xab\xd4\xa9\xf3\xf5\x01\x51\xf8\xff\xa1\x76\x45\x28\x76\x51\xc1\xe6\xaf\xbe\xd5\x0b\x9c\xaa\x1e\xe7\x03\xbd\x98\x25\x42\x7d\x89\x18\xad\xba\x45\x8f\xbc\xf0\x7e\xfa\x30\x9d\xd3\x55\xf6\x04\x27\x3c\x10\xfa\x32\x31\x81\x3b\x98\xdc\x0b\x7a\x95\x0c\xd4\xc4\x85\x4a\x76\x7d\x21\xd4\xdf\x06\x75\x74\x48\xf5\x6d\x1f\xb9\xda\x74\x53\xb4\x53\x5f\x33\x33\x15\x74\xf7\x9f\x30\xc1\xad\xb6\x9f\x48\x45\x54\xd1\x8b\x3f\x27\xb8\xd8\x8b\xdc\xa3\x6f\x12\xe2\xe3\x88\x3a\xcc\x55\x16\x39\xe4\x8a\x44\x73\xa5\xe5\xd5\xf6\x2e\xec\xdd\x94\x75\x49\x19\x3a\x17\x35\x55\xec\x77\xc3\xe9\x88\xd3\x2f\x47\x34\x58\x82\xaf\x15\x63\xf7\x82\x32\x7d\xfd\x37\xca\x6b\x78\x07\x7a\xec\xd8\x7c\x98\xac\x21\x36\x34\x1c\x8a\xf1\xcd\x8c\x7d\x82\x54\x63\xa0\x84\x21\xcd\x59\x1f\x5b\x98\xb7\x14\x97\x18\x54\xd3\x0b\x40\x90\xba\xbe\xa4\xb5\x70\xf5\xf2\xfa\xcb\x19\x6e\x79\x4d\xd6\x92\x2e\x80\xbd\xf8\x12\x2f\xd3\x21\x2f\xfb\x4f\xb2\x59\xaa\xd9\x98\x98\x21\xa4\xf5\x14\x37\x92\xc9\x47\x73\x2b\x84\xe5\x90\x92\xfb\xf8\x40\x88\xe7\x84\x98\x96\xd6\x5b\x6b\x6e\x2e\x92\x84\x99\x85\x2d\xec\x0a\xd7\xee\x0a\xcb\x61\xc1\xb6\x9a\x28\xd6\x79\x2f\x2b\x28\xea\x8a\x33\xb7\x9f\xd6\xda\x1b\xcd\x5c\x97\x48\x50\x06\x76\x99\xae\x14\x38\xb3\x5f\x4c\xc7\xf7\x89\x76\x23\xc0\x98\x2e\x79\x67\x3f\x4e\x88\x46\x54\x91\x38\x42\xb0\x11\x3d\xf4\x5e\x75\x38\x92\xa3\xec\x2e\xe2\x54\x21\x3f\x4a\xe8\xb3\x9a\xb9\xa1\x62\xf0\xa5\xb1\x4e\xdb\x0e\xbe\x1b\x0a\xec\x67\xdd\xf1\xe4\xc8\x29\x4e\x3b\xc1\x28\x46\x0f\x30\xf4\x8a\xb0\xbb\x88\x9c\xce\xb5\x32\xdd\x02\x6f\xe3\xa3\x22\x5e\xbe\xbc\x14\xef\x62\x92\xa6\x42\x14\x0f\xd4\x70\xee\x6c\xe9\xdb\xa3\xb5\x4a\xdc\x71\x4a\x83\x64\x2a\x05\x92\x53\x7e\xe4\x24\x0a\x9e\xc1\xb8\xa8\x4c\x09\xe6\x58\xeb\x39\x0a\xcc\x81\xf8\xf8\x23\x25\x2f\xe8\x1d\x45\xab\x47\x9f\x26\x1b\x67\x10\xbc\x93\x4f\x1f\x62\x53\xc1\xbb\x28\x94\x8b\xe2\x52\x70\x34\x14\x1c\xaf\xa2\xe0\x48\x75\x7a\x8a\x82\xd3\x65\x0a\x66\x8a\x4e\xa2\xe0\xe4\xab\x39\x73\x4e\xc4\x68\x0a\x8e\xe3\xc1\x7d\x73\x5f\xff\x0e\xf3\xf9\xf2\x12\xe8\xda\x1a\xf2\xf5\x6c\xc6\x85\xe2\x23\xa9\x5c\x76\x49\x93\x2b\x33\x20\x69\x72\xa5\xfd\x61\x8e\x03\x13\xbd\x91\x3b\x91\x7b\x4b\xa9\xde\x1f\x47\x34\xe8\x4e\x1a\xc1\xf7\xd2\x87\xf5\xbc\x60\x34\x86\xa4\x23\x55\xd2\xf1\x0b\xb7\xc7\xba\x46\xa7\x3e\x54\xb1\x2d\x6a\xd3\xe5\xb0\x52\x84\x11\x44\x15\x6b\x25\xd5\x46\x6e\xe5\xcc\xf9\x08\xef\x1b\x9b\x54\xaa\xbe\xd0\x10\x54\xca\x10\x54\xaf\x8b\x86\xdd\x6f\x52\x43\xcf\xfd\x88\x87\xfc\x83\x8a\xd3\x97\xb1\xca\x2e\xda\x68\x5e\xff\x4b\x02\x0f\x61\x84\xe1\xf3\x30\xa6\x7c\x9e\xbd\x65\x36\x79\xa1\x25\xa4\x9e\xfe\x5b\xcd\x23\xe6\xfe\x03\x10\xce\x67\x39\xb1\xce\x13\xa9\x7f\xdc\xe0\x8c\x68\x53\xd6\x14\x2b\x8f\x20\xe9\x77\x8d\xaa\xa2\x03\xd6\x13\x30\xc7\x69\x34\x39\x29\xf4\x0e\x6b\xbe\xe8\x1f\x88\xe8\xc9\xf1\x02\xb1\x0c\xb8\xfa\x6f\x45\x01\x66\xc4\x2b\x62\x87\xda\x84\xab\x8d\xf0\x83\xdd\xb8\x79\x97\xc8\x03\x5f\xc3\x37\x5d\x56\x8f\x10\xee\xa8\x58\xf1\x4b\x2e\x87\xf4\xbe\x57\xea\x8e\x08\xf4\x90\x57\x70\x1d\x74\xa6\x77\x95\x52\xbb\xd8\x26\xf0\xb1\x65\x1e\x5b\xfc\xdf\x00\x00\x00\xff\xff\xb0\xcd\x9c\x95\x6a\x44\x00\x00") +var _webUiStaticVendorRickshawVendorD3LayoutMinJs = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x7c\xfb\x8f\xe3\xb8\x91\xf0\xbf\xb2\xdd\x38\x18\xa4\x55\x92\xed\x5e\x04\xf8\x62\xbb\xa6\x91\x6c\x36\x8f\xbb\x64\x93\xcb\x5e\x92\xbb\x13\x84\x05\x5f\x7a\x59\x96\xdc\xb2\xba\xc7\x9e\x6e\xfd\xef\x1f\x8a\xd4\xcb\x1e\xcf\x6c\xef\xf7\xe3\x87\x01\xc6\x14\x59\x55\x2c\x92\xc5\x7a\x91\x6c\x16\x3f\x97\xaa\xc9\xaa\x92\xf1\xd7\xbe\xf8\x8d\x60\x82\xbf\xbe\x88\xfa\x1b\x89\x22\x38\x56\xcf\xb5\x32\xa0\x51\x04\x8d\xa8\x13\xd3\x80\x41\xc5\x24\x68\x0e\x31\x86\x32\xda\x7c\x4c\xb3\xc2\x30\x79\x87\x68\xb8\x44\x19\x1c\x44\x6d\xca\x06\xe2\xe0\xf0\x7c\x4c\x99\xe4\x1b\xa2\x94\x60\x1c\x14\xa6\x4c\x9a\xb4\x83\xd7\x16\x3e\x0e\x8e\x87\x22\x53\x86\x25\xb0\x24\x8a\x1a\x75\x87\xbf\xa9\x4d\xf3\x5c\x97\xdf\xc4\xed\xc0\x96\x1c\xd9\x0a\x23\x50\x28\x7a\x50\x47\x51\xdd\x61\xf9\x5c\x14\x5c\xba\x8e\x05\x07\x81\x0a\x14\xaa\x2b\x8a\x63\xbb\x1c\x69\x2b\x26\x40\xf1\xd7\x2c\x66\x02\x11\x15\xef\x60\x85\x65\x5e\x23\x75\x0d\x06\x25\x53\x34\x6a\x1d\x1c\xaa\x03\xe3\x90\xa0\xe9\x4a\xa9\xed\xba\x63\x24\x46\xc4\x84\xa7\x18\xdf\x02\xed\xb9\x48\xc7\xbe\x13\x1a\x97\x08\xe2\xec\x64\xf4\x1b\x3e\x8c\x0d\xa9\x6d\xb8\x43\x8c\x67\x33\xd6\x01\xcc\x70\xc5\x47\x88\x8c\xf1\xd7\x9c\x71\x88\x87\x46\x30\x18\x5b\x66\x46\xa0\x9c\xd6\x36\x38\x9c\x3c\xd4\xdf\x06\xe6\xc5\x94\x4d\xa0\x4f\xb4\x3e\xe7\x69\xcd\x19\x4c\x50\x9b\xe3\xf3\xde\xb0\x49\x07\x3b\x26\x40\xd2\xcc\xb8\x79\x58\x82\xc1\xe5\x46\x04\x2a\x25\x51\xc0\xe5\x26\x8b\xd9\x9d\x08\x0a\x23\x62\x07\x12\xa3\x08\xca\x4a\x9b\x23\x8c\x2b\x0e\x29\xfa\x2b\xc8\xba\xd9\xf1\xbc\x74\x9b\xf0\xd7\x0c\xe3\x30\x8d\x08\x3f\x43\xb7\x6e\xaa\x2a\x9b\xac\x7c\x36\x9b\x1d\xcb\x6c\x9f\xd0\xf7\xe3\x61\xd6\x95\x40\x8f\xe5\x79\x16\xa8\x13\x98\xcb\x8a\x73\xdb\xd2\x1a\x06\x87\x2a\x2b\x1b\x9a\x55\x62\xed\xed\xad\xaf\x09\x4e\x1e\xfe\x45\x34\x69\x50\x8b\x52\x57\x7b\xc6\xfd\xe0\x57\xd0\xb7\x9d\x3f\x6f\x73\xc2\x9b\xa3\x9c\xab\xb0\x07\xcb\x4a\x6d\x4e\xd1\x66\x64\xae\x6b\xf8\xce\xcd\x49\x4e\x3c\xe6\xf3\xa1\x43\xe2\x70\xfc\x3c\xb7\x22\x50\x27\xd4\x8b\x1e\x9d\x06\x79\x46\x33\x7c\x8f\x53\x5f\xd0\xea\x77\xd2\xf2\xb0\x1c\xeb\xf7\x93\xfa\xd5\x58\x5d\x4d\xaa\x45\x70\x1a\x1b\x0e\x17\x0d\xe7\xb1\xe1\xa9\x5f\x5b\x11\x9c\x97\x28\x41\x04\x67\x54\x63\x73\x33\x6e\xb7\x15\x28\x5c\x92\x0a\x08\x97\x51\xb8\x8a\xc0\x00\xad\x73\xb7\x9f\xe3\xaa\x66\x1b\xb9\x8d\x37\x9e\x27\x39\x33\x28\x42\x49\x40\xfc\x83\x9e\xcd\x98\x42\x09\x1a\xcd\x20\xf6\x13\xfa\xcf\x17\x7c\xd5\x46\x3f\x2b\xc3\x5e\x60\x39\x91\xbe\x17\xe2\x70\x04\xf2\x64\xb8\x8a\xc6\xd6\x8f\x17\xad\x27\x26\xc0\x2e\x9f\x32\x59\xc1\x6c\xa9\xa8\x12\x26\x3b\x36\xf9\xc2\x56\xfd\xf9\x87\x07\x6f\xc5\x27\x5d\x9c\x1c\x11\x1a\xa7\x22\x31\xd5\xe8\xd1\x28\xc1\x20\x13\xe1\x2a\xf2\x35\x5f\x48\x52\x74\xd1\x20\xbe\x6a\x8b\x92\xc7\xa1\x8a\xd0\xcc\x95\xa7\x6f\x28\xaa\xf3\x38\xb2\x50\x7f\x1b\xec\xb3\x92\xd4\x07\x95\xc4\x89\x09\x3e\x19\xc2\xa7\xcb\x01\x06\xc7\xaa\x6e\x68\x4f\xd6\x46\x66\xa5\xa6\x46\x5b\xe5\xb6\x42\x56\xe8\xda\x94\x57\xcd\x7d\x35\x81\x14\x59\xb9\x3b\xe2\xef\x40\x04\x2f\xa2\x78\x36\x57\x90\xb6\x8e\xc0\xec\xfe\xc4\x41\xf1\x8f\xfd\x7f\x8f\x77\x4b\x60\x3d\x80\xe0\x4c\xf2\x16\xc4\xc8\xed\x6f\x2e\x56\xac\xef\x79\x6c\xff\xed\x45\xbb\xed\x6f\x6c\xfc\xee\x62\xa8\x1d\x3b\xfe\x67\x60\xbf\x9b\xd0\xa0\x19\x33\x75\x62\x98\x08\xf6\xe2\x30\x9a\xaa\x01\x82\x8d\x5c\xbc\xbd\x85\x11\xbf\x04\x1b\x7a\x7b\x75\x36\x6c\x2d\xc0\x59\xb0\xb5\x6c\x5b\xde\x4e\xa5\xe0\xf7\x57\xeb\xe0\x98\x93\xd7\xcc\xfd\x61\x2a\x2c\x22\xf8\xe9\x20\xd4\xee\xa7\xd2\x9c\x9a\xcd\xf4\x03\x25\xc8\xee\xf3\x50\x9b\x17\x14\xc3\xa7\x6d\x55\xa0\xa6\xad\x13\x23\xf4\x47\x47\xfe\xab\xb4\x46\xe8\x3f\x4d\x99\x91\xc1\xc9\x17\xc1\x09\x34\xca\xe0\xec\x8b\xe0\x0c\x06\x45\x50\x7b\x32\xa8\x7b\x01\x35\x73\xe3\xab\xb9\xf2\xf5\x5c\x7f\x08\x96\xcb\x89\xea\xf8\x77\x9a\xd1\x4b\xbd\x23\x9d\x2a\xb4\xa2\x6b\x49\xd7\x20\x39\xa8\xae\x96\xc4\x38\x38\x79\x54\xab\xc8\x68\x4f\x60\xcf\x16\x56\x93\xb5\x9c\xc0\x9e\x2d\xac\xe1\xad\xd3\x27\x7f\x2a\xe3\xac\xcc\x9a\x33\x28\xf4\x87\xb2\x1e\xab\xcd\xa4\x7a\xd4\x34\x90\x40\x0a\x19\xe4\xb0\xdb\x88\x20\xae\xea\xef\x85\x4a\xd9\x7f\x90\x6d\xb5\x3b\x36\x09\x4e\xe8\x27\x41\x0d\x49\x70\xc6\x25\x14\x2c\xe1\x64\x5e\xe2\x0f\x2b\xfe\x9a\x22\x6d\x66\x48\x83\x13\xa6\x41\x0d\x69\x07\x91\x76\x10\x0f\x64\x8f\x44\xf8\x10\xc1\x5f\x99\xed\x84\x43\xc1\x32\x0e\x7f\x60\x09\x95\x93\xe9\x0a\x64\xf0\x07\x96\x41\x4a\x36\x3f\x99\x4a\x00\xa9\x41\x1a\xdd\x1e\xbf\xdd\xec\xb7\xf1\x66\xef\x79\xfc\xb5\x23\x87\x22\xdc\x47\xce\x96\x94\xb8\x84\x0a\x57\x70\xc0\x95\x45\xc9\x31\x9d\x52\xc9\xef\x10\xd3\x4d\x8e\xf9\xa4\x12\x2a\xcf\xe3\x59\xcc\xfe\xc4\x72\xc8\x38\x7f\x2d\x71\xb5\x91\xb5\x11\x3b\x32\x75\x25\xe2\x8a\x13\xa1\x1d\x4e\xd9\xdc\xec\xee\x70\x20\xe2\x2a\x70\x37\xf9\x84\x43\x4f\x73\x67\x69\x1e\xb6\xd5\x6c\xc6\x4a\xd2\x80\x39\xee\x78\x47\xbf\x44\x5c\x3e\xb2\x6e\x16\x52\xcc\xec\xac\xf0\x75\xf9\x61\xf9\xc8\xfe\xc8\x12\xc8\xa9\x36\x87\xbd\xef\xf3\x35\xfb\x23\xcb\x69\x5a\x92\xae\xa2\x6d\xed\x62\x3f\x21\x93\x9e\xe2\x8b\x07\xa8\x91\x69\xcf\x50\xe9\x88\xcb\xc9\x74\x2d\xc7\xe9\xa2\x8a\xc6\x4e\xd6\xa6\x09\x4e\x3e\x3e\x41\x13\x9c\x7d\xac\xe1\x38\x0a\xd3\x11\x9a\xa0\xf6\xec\xe7\xf1\xa9\x6e\x58\x13\x9c\xe6\x64\xd7\x9b\xe0\x3c\x6f\x82\x33\xe7\xed\xb0\x8b\x7b\x19\xf9\x33\x87\xe3\x28\xed\xff\xe1\xdc\xad\xc9\x1e\x13\x5f\xd8\x61\x7f\x26\x48\x6d\x0a\xd3\x98\x6f\xa6\x08\x70\x55\x47\x78\x23\xd6\x5f\xa6\xde\x73\xaf\x9e\x36\x72\x36\xeb\x4d\xd1\x23\x93\x03\x6b\x7f\x21\x85\x5c\xe3\xbf\x33\xc9\xf9\x9a\x4a\xe3\xc0\x3a\x2d\x34\xd1\x52\x3f\x38\x83\x0d\xda\xd1\x37\x53\xfa\x22\x38\xa1\xf4\x50\xcf\x49\x0b\x58\x4b\xee\x3e\xce\x44\x7f\x8e\x9a\x04\xdd\xf4\x3e\x9a\xbf\xb2\x0e\xe9\x85\x43\xee\x79\xf1\x36\xe1\x3f\x30\x13\xc6\x51\xd7\x4b\x3b\x76\xfd\xd7\x4b\x3f\x90\x54\x8b\xa2\x1d\x3d\x28\x9e\xb8\x57\x3c\xd4\x11\x59\x7e\xf3\xf6\x16\x73\x07\x9f\xa0\xec\xe0\xd3\xc9\xf8\xcc\xdc\x78\xf1\x3c\xe6\x90\x8d\x8b\xeb\xaf\x60\xd0\x25\x2b\x60\x7a\xae\xbd\x74\x9e\xfa\xc9\x3c\xe1\x0b\xf6\x30\xd7\xf3\x94\x73\x0e\xb9\x43\x10\xaa\x3a\xd2\x2e\xdd\x61\x36\x67\x7a\x81\x29\x87\xa2\xa3\x9f\x95\x2c\xe7\x73\xbd\x51\xc1\x09\x49\x53\xed\xe6\xc6\x2b\xe6\x31\xa8\xe0\x8c\xa4\x8d\x76\xf3\xd8\x2f\xe6\xa6\x35\xc5\xd1\x7c\xd3\x03\xe9\xbe\x79\x1c\xf6\xdf\xa6\xbe\x96\xd7\x5b\x70\xf8\xdc\x12\x59\xcf\x6a\xb2\x54\xff\x79\xcb\xb9\x19\xd1\x2e\xbd\x9a\xe0\xd4\xc2\x92\x2f\x7a\x3d\x37\x52\xf9\xfb\x4d\x51\xea\x4d\xe8\x44\xa2\xfe\xce\x64\xb8\x8c\xf8\x7a\x22\xbc\x3f\xde\xc2\x05\x35\xc1\x26\xe7\xac\xf7\x8e\x1e\x7f\x64\x32\x54\xfe\xea\x92\xc6\x7f\x5d\x99\x45\x17\x48\xe1\x10\xe4\x3d\xae\xd6\x93\x70\xe5\x1f\xef\xe5\x96\x78\x5d\x8b\xe0\xa7\xa6\x36\x26\x68\xd2\xda\x08\x3d\x52\xf9\xe7\x2f\xe3\xdb\x71\xfd\x45\x6a\xff\xba\xb4\xd8\x03\x57\x59\xcc\x14\x09\x29\xaa\x9e\x52\x27\xda\xd6\xb7\xf5\x57\x93\x4d\x61\xb8\x64\x1a\xff\xc5\x94\xdd\x18\x1c\x04\xff\xb0\xa4\x78\x0c\xf5\xa8\x6a\xc6\x0e\xff\xfb\x6a\xca\x4e\xbe\x9c\x3a\xe3\xff\x73\xe5\x05\xd9\xcd\x33\x36\xff\xef\x15\xb6\x36\x87\x26\xf5\xa5\xfb\x1d\xc1\xfe\xcd\x81\x5d\x44\xaf\xb7\x94\x02\xed\xf9\xd9\x8c\x65\xc3\x5e\xef\x46\x19\x43\x62\x63\xae\xcf\x23\xb3\x8c\xc7\x68\xc2\x34\x02\xc5\x62\x48\x48\x9b\xc7\xad\xb4\xd4\x5b\xea\xc4\x06\x6a\x23\x1f\x3f\x8d\x6b\xb5\xec\x43\x84\x71\xcd\x0c\xea\xde\x72\xc7\x5d\x17\xbe\x6f\x3e\xe0\x92\xc7\xa8\x43\x13\xb9\x25\xa3\x40\xb4\x36\x45\xb6\xf7\x50\x42\x1c\xec\x2b\x4d\x05\xe9\x61\x1c\x1c\xd3\x2c\x6e\x3c\xa6\xa8\xac\x52\x51\x26\x53\x65\x28\xc5\x10\xbe\x60\xb7\xfa\x20\x51\xba\x52\x17\xb6\xab\x05\x93\x41\xf9\xbc\x97\xa6\xf6\x45\x57\xe0\x2e\x72\x2b\x29\x72\xd3\xd6\x81\xa6\xb2\x6f\xcb\xae\x43\x54\x20\x07\x9e\xa8\x6c\x79\x9a\x44\x2e\x52\xf6\x5d\x0f\x0b\xe5\xa4\x4f\x94\xca\x1c\x9b\xaa\xfe\x7c\xa3\x5c\x43\xac\xa7\xe4\xd4\xa8\x2c\x5e\x4f\x6b\xd2\xa6\xe7\x35\x69\x6e\x4d\x1f\xfa\x04\x9a\x3e\xf5\x79\xa2\x8e\xa5\xbe\x94\xeb\x93\x27\xc3\x6f\x23\x3b\xfd\x67\x4f\xba\xf8\x85\x50\x7d\x8a\x98\x7c\xdb\x46\x7e\x94\x3e\xfb\xd4\xe8\xcb\xf0\x21\x1a\xdc\xc2\x2d\x49\xb3\xf2\xd0\x2c\x1e\x28\xba\xe7\x10\xdb\x1a\xed\x61\xbc\x78\x80\x98\x6a\x5e\x4f\x6b\x05\xe7\xb5\x26\x8e\x0c\xb1\x13\xb7\xad\xfe\x36\x28\xc4\xb9\x7a\x6e\xf0\xb5\x85\xe1\x23\x90\xcf\xa5\x2e\x0c\x4e\xd2\x4a\x7d\x7c\x34\x71\xcb\x1d\xdb\x21\x31\xec\xaf\xac\x11\xb9\x32\x45\x7a\x6b\xb8\xea\xf2\x34\x4c\x86\x3a\xe2\x93\x08\x72\xda\x9d\x4a\xab\x5a\xe3\xad\x24\x56\xce\x5c\x3f\x82\xf8\xcb\xa9\xb3\xc2\x06\x44\xb4\xda\xcc\x70\xd8\x53\x55\x09\x15\x1c\xe0\x09\xea\x4d\x97\x53\xa2\x3a\x5c\xc2\xd3\x54\x05\x3c\x6d\x0d\x7f\xad\x70\x09\xf5\xb4\xb6\xde\x1a\x5e\x79\xa8\xc3\xa7\x28\xac\xa3\x4d\xee\xb8\xad\x38\xec\x5d\x69\xd2\x17\x87\xd2\xc3\xaa\x4d\x66\xb3\xc2\x86\x73\xb7\x0d\x41\xc2\xf2\x50\x44\x90\x87\x32\xe2\x2d\x87\x74\x36\xdb\x0f\x6e\xc2\x25\x82\xf8\x8c\xca\x28\x8a\x29\xd3\x14\x7f\x8b\x08\xec\xaf\x22\x5a\x2d\x87\x12\xd9\xc3\xdc\xda\xc6\xbf\xfd\xc9\x8f\xe7\x86\x2f\x4a\xa8\x6e\x0e\xf4\x80\xd5\xe7\x03\xb5\x33\x79\xc4\x22\x7c\x8a\xa0\xc1\x7d\x78\xa4\x31\xc3\x33\x6a\x2a\x35\x11\xbc\x60\x05\x1f\xb1\xf2\xf0\x79\x5e\x6e\x44\x78\xf4\xee\xfd\x7b\xaf\x89\xf0\xd5\x26\x4b\xd6\x47\x38\x3e\x4b\x57\x6c\xe0\xd8\x88\xba\xf9\x4d\x99\x14\x66\xfd\x02\xa6\xd4\xae\xf8\x11\xac\xb7\xb3\x7e\x6e\xdb\x6e\xe1\x47\xdc\x11\xe1\x30\x22\x54\x1d\x02\xab\xfc\x03\x5f\x94\x2d\x87\xca\xc3\xb8\xfd\x7c\x40\x35\x3e\xdd\x1a\xcd\x09\x45\xf8\x64\xf9\xac\x23\x38\xa3\x08\x6b\xfb\xf1\x14\x6d\xd8\xc9\x79\x5e\x6f\x6f\xe7\xce\x05\x23\xdb\x65\x79\xea\x5a\xb6\x5d\xc3\x63\x1f\x59\x9e\xfb\xc8\xf2\xd4\xae\xfb\xba\x53\x5f\x47\x8e\x41\x9b\xcd\x66\xbb\xcb\xc4\x1a\x7f\x95\x5f\x91\x86\x8c\xb1\x3e\xf7\xea\xfa\xf2\xfa\xfc\x6b\xc7\xd3\xe2\x01\x98\xbc\x84\x90\xd7\x10\xb4\xf6\xc3\x1e\xb0\x3e\x9d\x35\x6f\x4b\x17\x49\x6d\x06\xed\xb5\x17\x4d\x9d\x9d\xc6\x6d\x14\x8f\x9a\xad\x4e\x9e\xf7\xa6\x6c\x8e\x83\xef\x6a\x90\x69\x8c\xf9\x6c\x36\x28\x77\x89\xca\x59\x13\xc1\xd7\xba\x05\x72\x13\xb4\xce\xca\x64\xa4\xa7\xbf\x42\x2f\x26\xcd\x3b\xa1\x10\x13\x05\x9a\x97\x3f\xd4\xd5\xf3\xe1\xf8\x3e\x22\xc9\x15\x91\xa4\x27\xf2\xe3\xb3\x4c\xae\xe8\xa8\xaf\xd0\x49\x49\xdf\x0f\x54\xd2\x9e\xca\x77\xa4\x65\xde\x49\x22\x23\x12\x76\xb1\x89\x44\xd6\xda\xd4\xcd\x25\xfa\x68\xff\xdf\xde\x72\xc6\x41\x12\xd0\x35\x9b\x03\x90\x72\x40\xaa\x05\x31\xd5\x7c\x71\x55\x2b\x73\x53\xf3\x4d\xd3\x34\xa3\xd6\xed\x57\xdf\x26\xb9\xa5\x4b\x47\xde\x21\x8a\xd1\x45\x57\xce\x93\x4f\xa9\xe8\x72\x08\x19\xae\x16\xa3\xc3\x9e\xcc\x13\xf2\xc6\x6d\xcc\xcc\x8c\xaf\xf8\x3c\xdb\x36\x0e\x3d\x47\x39\x24\x61\xe7\x13\xc1\x3a\x9c\x7c\x4c\xe6\x39\xc9\xc4\xd9\xc7\x74\x9e\xc3\xdd\xb2\x1d\xfb\x9f\xcd\xb2\xe3\xef\x29\xcc\x37\x14\x57\x0e\x94\x26\xe9\x54\x4b\xee\x06\x9d\xb6\x73\xbd\xee\xfa\x7e\xdb\x69\x1a\xaa\xd7\xfc\x2f\xbd\x88\x6a\xfc\xd8\x17\x0d\xc4\x43\x22\xa1\x80\x3d\x1c\x6c\x28\x1a\x53\x48\xba\xd5\x1b\xcf\x8b\xf9\x6b\x82\x1f\xc9\xd7\xa3\x00\xbf\x3b\xfd\xc8\x30\xe9\x4f\x3f\xf6\x98\x05\x27\x3f\x0d\x4e\x70\xc0\x2c\x38\xfb\xa9\x0b\x79\x72\xdc\xcf\xf7\xde\x61\x7e\xe0\x39\x96\xf3\x73\x18\x47\x73\xc6\xf2\x49\xb8\x93\x73\xee\x9f\xc2\x38\xe2\x8b\x1c\xf6\x73\xcc\xe1\x40\xff\x11\x2d\xdc\xcf\x59\x81\x69\xf0\xd1\x64\x49\xda\x2c\x58\xd6\x95\xbc\xbe\x8a\x73\xa0\x9e\xf0\x30\x2f\x20\x0d\x4e\x9e\x43\x58\xf9\x05\x87\x34\x38\x7b\x54\x4f\x93\x5a\x60\x39\x3f\xf2\xd7\x3d\xaa\x70\x19\x2d\x1e\xe0\x80\x2a\x5c\x45\xd6\x86\xfb\x2b\xe2\xb1\xe0\xa3\x57\x2b\x78\x82\x2f\x34\xca\x84\x08\xb2\xbd\x9f\x04\x27\x3e\x2f\x20\x21\x82\xec\xe0\x27\xc1\x99\x3b\xb2\x35\x7f\xdd\x31\x9b\x4c\x4c\x4c\xb5\x0f\x9e\x9e\x85\x26\x57\x86\xbd\x70\x28\xe1\x13\xbf\x76\x97\x05\x67\x8e\x32\xef\x4e\x34\xde\x4c\xf0\x92\x1d\xb3\x86\xfd\x86\x25\x9c\xb7\x9f\x81\x0f\x7c\x58\xf0\x47\x96\x04\x27\x4c\x82\xc3\xc9\xe6\x71\x92\xe0\x70\xe6\x6b\xaa\xf3\x91\x51\xad\x6f\xff\x47\xe2\x96\xcf\x2b\x82\x71\x0d\x67\xdb\x40\x08\x67\x6a\xe0\xe3\x69\x4f\x93\xa9\x1d\x7b\x6d\xce\x07\xb3\xbe\xa7\xf2\x3d\x88\xe2\x90\x8a\x35\x99\x0c\x56\xce\x31\xf8\xf5\xaf\xf9\x36\x58\x2e\x7f\x35\xcd\x55\x4a\xfe\x9a\xb0\x18\x25\x27\x47\x6a\xa2\x43\x69\x1a\x74\x76\x3c\x88\x46\xa5\xcc\x91\xe3\xe4\x36\xac\x60\x15\x81\x26\x7f\x02\x83\x5f\xc3\x01\x0b\x78\xc2\x3d\xd9\xd1\x6f\x97\x70\xc4\x60\x05\x0d\x06\xff\x07\x9e\xe1\x85\x3c\x8c\x8f\xf4\xdf\x09\xce\xf0\x69\xdc\x29\x55\x39\x51\x2f\xa0\x27\x21\x42\x57\x41\xbb\xff\x2b\xb9\xdb\xcf\x15\xd1\x0b\x4a\xd2\x40\x2f\xed\x90\x19\x7e\x17\xda\x47\x87\xf6\xd1\xea\xbe\xec\x93\x79\x1f\x96\x72\x58\xaa\xef\xec\x77\xd9\xb1\x21\x5f\xf7\x7d\xd8\x07\x9a\x56\x0b\x59\xd5\xcc\x86\x58\xeb\x03\x51\xd2\x3d\x95\x4b\xa2\x5d\x1f\x3f\x36\xb5\xc5\x7f\x5f\x1f\x4f\x9f\xf7\xf1\x44\x7d\xc4\x75\x66\x91\xdf\x47\xa5\x72\xe3\xac\xda\xe1\x70\xea\x7d\x78\x35\x92\x00\x56\xf1\x37\x12\xf1\xbe\xc7\xb8\x7f\x94\x6b\xcf\xd2\xab\x9d\x05\x10\x2f\x59\x73\x7e\x1f\xc1\xa3\x63\xe4\x48\x88\x4d\x6a\x1a\xf1\x3e\xb4\xc6\xa1\x35\x76\x75\xc9\xaf\xba\x69\x41\x76\xce\xa5\x74\x41\x54\xc1\xec\x2e\xf0\x57\xf6\x38\xb3\x4f\xc5\x0e\x5b\xd8\x6c\x63\x9e\xc5\xec\x2e\x3b\xfe\x20\x7e\x20\x43\x1c\x1a\x72\x3f\x79\x7f\x84\x9a\xf4\x32\x7e\x71\xb6\x36\x57\xd3\x83\x2e\x6b\x93\xee\x32\xfe\x9a\x61\x18\x59\x7d\xac\x71\xb9\xd1\x5b\xb3\xf1\x3c\xcd\xb3\x50\x47\x97\xf5\xb1\xad\xef\x94\xfc\xc7\x50\x47\x9b\x2c\x1c\xbc\x25\x77\x3e\xd7\x05\x0f\x9d\xd6\xe6\x40\x00\x9d\x77\x74\x09\xe0\xb0\x78\x6f\x50\xbe\xc9\x42\x19\xb9\x34\x35\xd9\xcb\xd1\x84\xc4\xa3\x09\x49\xac\x86\x85\xd4\xea\x57\x32\x24\x96\x35\x89\xcb\x8d\xb4\x2c\x4b\xce\x72\x7c\x21\x3f\xde\xf5\x85\x12\xf2\x4e\x95\xe3\x72\x73\xa2\xdd\x7f\xee\x07\xe4\xb0\xdc\xe1\x59\x8e\x1f\x43\x19\x41\x27\x29\x79\xc7\x1a\xe2\xbd\x8b\x5c\xef\x67\x33\x36\x54\xbe\x84\x7d\x31\xe2\x23\x86\x1b\xe1\x15\x46\x57\x49\x18\xae\x18\x71\x38\x85\x32\xc2\x43\xa0\x44\x51\xb0\x26\xcd\x8e\x90\x83\xe4\x70\xa6\xda\xa7\xeb\x5a\xcf\xeb\xbb\xea\x06\x61\x6b\xba\xc9\x74\x35\x9f\x4d\x80\x1b\x3f\x38\xa1\xc8\x83\x13\xb7\x9c\x9c\x70\xc7\xee\x4f\xf7\x90\x90\x45\xeb\x9a\xce\xae\xe9\x4c\x4d\xe7\x7b\x48\x27\x4d\x87\x0e\xed\x70\x42\x22\x31\xd6\x77\x38\x87\x33\x12\xfe\xe6\x13\x4d\x66\x16\xb3\x6e\x1a\xea\xe9\x16\xe3\xd7\x9c\x7d\xa2\x31\x7a\xf5\x64\x90\x96\x53\xc9\x37\x36\x19\x78\x13\xbc\xde\x4c\x52\x79\xdd\x11\x39\xf4\xe5\x1b\x2e\x5b\x49\x1a\x5f\x7f\x1b\x34\xd9\xde\xd4\xec\xb7\x9d\xee\x3e\x36\xd5\xe1\x26\xf0\xd2\xb5\xeb\x5a\x24\xd3\x76\xfd\xf6\xc6\x34\x69\x2d\x69\x52\xf1\x92\x55\xb5\x85\x60\x9c\x2c\xc2\x3d\x15\xed\x06\xbe\x87\xef\xc6\x9a\x7b\xc8\xc7\x0f\x53\xea\x7b\xc8\x38\x07\x1a\xa5\xad\xdd\x57\xcf\x47\x53\xbd\x98\xda\x79\x8f\xb4\x10\x93\xfa\xde\xa9\xa4\x45\x70\xd3\xa3\xed\xf9\x9f\x4d\xa6\x18\x88\x37\xa3\xf3\x79\x10\x75\x93\x5d\x6a\xcd\xab\x74\x94\xdd\x3d\xe3\x9d\x80\xcb\x3c\xb5\x4d\x50\x77\xd9\xad\x39\xa9\x73\x7d\x42\x4d\x3f\x67\x34\xf6\x44\x66\x36\x63\xe9\x70\x7f\x60\xc8\x22\xfb\x2b\xe7\xb7\x6d\x34\x76\xc9\xf1\x47\xbd\xe8\x4a\xeb\xe5\xa0\x91\x92\x6d\xca\x15\xcb\x30\x0e\x93\x08\x24\xe4\x98\x39\x90\x39\x71\x04\xd2\xc3\x7c\xe2\x2c\xea\xdb\xe9\x46\x77\xb5\x41\xce\x66\xe4\x04\x5c\xf2\xe1\x54\xe1\x85\xfe\x9b\x9c\x8b\x29\xd0\x4c\x86\x26\x1a\xcf\x21\x56\xde\x44\xd7\x19\x66\x5d\x70\x37\x1e\x31\x11\x42\xaa\x1e\x52\x1c\x2c\x21\xfd\xb2\x04\x9b\xc9\x91\xe4\xc4\x69\x5b\xc5\x39\x24\x9d\x33\x32\xae\x45\x9a\x99\x5a\xd4\x2a\x3d\x53\x24\xe1\x3c\x91\x21\xb7\x73\x65\xc1\xc5\x57\x2c\x83\x44\x01\x86\xaf\x65\x0b\x9f\x98\x01\xc1\xa7\xb1\xc6\x21\xbb\x1d\x69\xc4\x2c\x81\xd4\x8d\x86\x3c\xe4\xcb\xd3\xd7\x31\x29\xe1\x75\x03\x8d\x6d\xd2\xac\xe5\x90\xa3\xd7\x6f\x56\x75\x61\x0f\x55\x20\x0e\x87\xe2\xec\xa6\x64\xe0\x91\xaf\x15\x87\x1d\xb2\x1e\xc7\x5c\xe0\x98\x2f\xe0\x18\xee\x2b\xbe\xd0\xdf\x06\xc7\xe7\x3d\xcb\xf8\x34\xfd\x93\xf4\x2b\xba\x91\xee\xd2\xd0\x90\x99\x91\x88\x58\x3e\xde\x8e\xc8\x43\x19\xf9\x59\x28\xa2\x76\x7d\x33\xf3\x22\x59\x12\x8a\x08\x12\x97\x73\xd9\xb8\xc3\xad\xe2\x0b\x27\xd7\xaf\x5a\x34\x62\x6d\x11\x9c\xf8\x6a\x24\xd2\xd3\x5c\x47\x3e\xe6\x3a\x72\x0f\xf5\x7c\xd7\xb6\x83\x84\x5c\xcd\xf5\x94\xcd\x7d\x58\x84\x32\x8a\x86\xc8\xff\x07\x6b\x09\x28\xaa\xb5\x19\x5a\x83\x43\x1e\x68\xb8\xb9\xd0\x5d\x17\x78\x97\x03\x21\x50\x42\xcc\xd7\xa2\x85\xd8\xdd\x56\x78\xb7\x70\xc5\x56\xb8\xe2\x60\x1c\xe2\xfb\x70\x95\xc3\x55\x84\xdb\xcf\xc8\xfb\x30\x8d\xc3\x34\x2d\xc4\x6d\x77\xf8\xfa\xda\x4e\xb4\xd8\xb1\x11\x6a\x77\x53\xb0\x13\x96\x42\xd6\x07\xa4\xe9\x17\x05\xfb\x9b\x4e\xb0\x93\x5e\xb0\x77\x98\x7f\x79\x65\xae\x6f\x31\x8c\x4d\xa1\xe9\xe9\x50\x25\xc4\xd3\xaf\xc8\xe6\xef\x0a\x0a\xb0\x5d\xe5\x0e\x32\xbe\xc9\x49\x98\x0f\xa6\xde\x3f\x37\x86\xe5\x50\x50\xd7\x93\x9a\x1d\x14\xbd\x04\xaa\x29\x1e\x94\x98\xf7\x5e\x4c\x85\x79\xb8\x8c\xfa\x2f\x97\x05\x25\xeb\xf7\x84\xcb\xcd\xd3\xb6\xda\x78\xde\x13\x7f\xd5\x3d\x36\xc1\x86\x4f\x11\xd4\xb8\xa7\x9f\x9d\xfb\x0c\x57\x11\xb7\x48\x07\x5c\x6d\x0e\xdb\x72\xe3\x79\x07\x3e\xc1\x39\x38\x1c\x0f\x77\xe1\xc1\x5f\x75\x18\xb0\x73\xf5\x84\xdc\x0e\xd7\xe1\x9c\xb4\xfe\x55\xe6\x46\x35\x20\xb1\x0e\xef\xb5\x89\xc5\x73\xd1\xdc\x47\xa0\xf0\x18\x7c\x32\x75\x05\x1a\x9f\xc0\x60\x05\x31\x1e\xc6\xad\x60\xa5\xf7\x9d\xd1\x0d\x89\x6f\x62\xc5\x37\x09\xaa\x5a\x9b\xfa\xbd\xf2\xdb\xa9\x1e\x71\xa1\x7a\xc4\xba\xb6\x5b\xde\x4a\x76\x12\x54\x71\x7c\x34\xef\xdc\x11\xea\x4b\x14\x8f\x1d\x45\xd5\xda\x1b\x0d\xef\x16\xf4\xc4\x0a\x3a\xc5\xcc\xef\x42\x89\x1d\x4a\x6c\xf9\x7e\x7e\x27\xd3\xda\x21\xe9\x16\x12\xb7\xa1\x6a\x7c\xbd\xcf\xca\x63\xa6\x8d\x5f\x3d\x37\xf7\xeb\x29\x95\xde\xa8\x76\x02\x66\xd3\x4f\xe8\xf6\x40\xc3\xed\x71\x04\x15\x9f\x39\x24\xa3\x62\x96\xfc\x2b\x29\x51\x13\x8a\xc8\x37\xe4\x9e\x73\x48\x71\x09\x19\x2e\x5d\x62\x7f\xd7\x3b\xd3\x64\xb6\xd5\x56\x6e\x3c\x4f\x71\x8d\xa4\x89\x21\xdd\x66\x8f\x2c\xf5\x30\x0e\x75\x04\x5d\x92\x5e\x73\xbe\x66\x59\x57\xb7\x1b\xea\x7a\x89\xda\x05\xb5\x79\x31\xf5\xd1\x30\x1e\xa8\xaa\x54\xa2\x61\x39\x6f\xa1\xab\x5c\xdf\x98\xa9\x81\xff\x7e\xb4\x7c\x24\xd1\xc2\x20\xc8\xef\x43\x6d\x5b\x38\xe2\xeb\x31\x2b\xd2\xea\xd9\x34\x8d\xf9\xea\xa4\xda\xab\x2f\x63\x96\x2b\x8c\xc0\xe0\xb2\xcf\x70\xf5\xd3\x92\xe0\x72\x93\x6c\xd5\xc6\xf3\x12\xfe\xda\x65\xbb\x68\x06\x37\xf1\x56\x6e\x62\xcf\xe3\xa9\x87\x22\x8c\xa3\x30\xa1\x3d\xb9\x49\x3f\x18\x7b\x34\x9a\x72\xd0\x6e\x72\x52\xde\x5e\xd3\xc9\xc2\x24\x42\x66\x7c\x1d\x26\x11\x5f\x3c\xf4\x73\x97\xb5\xf0\x31\x4b\xc8\x66\xfd\x2c\xd7\xa0\x87\xc3\xd7\x29\xd3\x90\xc3\xce\x26\xe6\x4a\xa8\x68\x00\x55\xb8\x8c\x70\x8f\x65\x77\x67\x24\xc1\xd5\x26\xb1\x89\xba\xc9\x58\xb2\x6e\x2c\x9e\x17\xf3\xec\x62\x2c\x3d\x44\x8e\x4b\x28\x50\x51\xed\x32\xf2\x55\x98\x90\x36\x5a\x46\x03\x96\x25\x45\x42\xb5\x43\x36\xa2\xfb\xae\x48\xb0\xab\xc8\xde\x40\x28\xf8\x26\xb5\xd1\x5a\xca\x77\x1e\x81\xa6\x23\x68\x3a\x01\x2d\x36\xb9\x87\xbb\xf9\x48\xaa\xad\x68\xc2\xf6\x3e\x66\x8f\xf9\x22\x9b\x17\xeb\x25\xec\xb7\xa5\xbd\x73\xb3\x9f\xce\xae\x1b\x19\x01\xfb\x38\x1c\x9e\x57\x2d\x98\xd3\x41\x94\xfa\x97\xc8\xc2\x6a\x21\xfb\x64\x67\x2f\x08\x2e\xcb\xa9\xc6\x11\xd3\xbc\x53\xbf\x66\x2b\x37\xc6\xf3\x78\x42\x93\x67\x22\xe2\x7a\x65\x43\xaa\x84\x77\x60\x03\xc8\xd8\xbe\xc0\x64\x8c\x99\x6e\x83\xa0\x6e\xaf\xfb\x4d\xc3\x38\xc2\xe5\x78\x0d\x1a\x48\xb1\xdf\x18\x97\xbf\xba\x21\xdd\x83\xd7\x2d\xb7\x8a\x6b\x0a\xcd\x06\x4a\xba\x9d\x9a\xf6\x34\x3b\x36\x55\x52\x8b\xfd\x4d\xf3\x7e\xe1\x85\x87\x14\xc9\x1b\xab\x8c\xa4\x0d\x95\x38\x64\xbd\xd5\xb4\x3e\x65\x0a\x31\xb9\xac\x7a\x52\x95\xb9\xca\x9d\x4d\x7e\x42\x81\x69\xcf\xe4\x7e\xb0\xaf\xfe\x0a\x4a\x14\x8f\xab\xf5\x6a\x51\x40\x35\xc9\x78\xee\xf9\x0e\x13\x9a\x04\xd2\x5c\x14\xf9\xe4\x61\xec\xad\x22\x9f\xed\x02\x5b\x8e\x38\xec\x82\x33\xcd\xd8\x65\xa6\xb4\xe0\x15\xd2\xe4\x41\xf5\x01\xb3\x70\x19\xcd\x66\xd5\x16\xb3\x70\x15\xcd\x66\x8c\x28\x52\xa0\x98\x1d\x8d\x6a\x58\x0e\x15\xac\x60\xcf\x7d\xb2\xb5\xc1\xd9\xc3\xb2\xd7\x72\x86\xc8\x8f\x5e\x64\x67\x74\xef\x96\x20\x7b\x3f\x51\xe1\x19\x34\x7e\x1c\x23\x88\x2b\xdf\xf0\x7d\x21\x84\x71\x4a\xed\xbd\xa6\x70\x92\x99\x13\x9c\x48\x28\x22\x21\xb3\xf2\xf8\x5e\xbb\x34\x31\xa6\x5d\xea\xe3\xf1\x86\x3f\x70\x62\x92\x22\x9b\xf5\x67\xfd\x69\xea\x2f\xae\xcd\xd3\xb3\x29\xd5\x3b\x33\x70\x02\xef\xee\x24\x21\x8b\x16\xcc\x34\x5a\x1a\x02\xb2\x2f\xc8\x5e\x0c\x13\xe7\x72\x70\xeb\x62\x48\xc9\x89\xfb\xfe\x31\x5e\xbb\xe0\x20\x6e\x37\x3b\x17\x22\x63\x0a\x99\x5b\xbf\x9d\x3d\x7c\xc9\x67\x33\x36\x0a\x5a\x17\x96\x16\x24\x89\x7b\x28\x71\x37\x5e\x15\x0e\x23\x7b\xc8\x7b\xc0\xd4\x1b\x25\xa9\xd8\xee\xb9\x46\xc3\xf2\xb0\x88\xe0\x40\x4e\x61\xff\xe6\x02\x77\x50\xf6\xd6\x10\x2a\x0f\xb5\x5b\xfc\x8d\x98\xcd\x4a\x67\x97\x05\x07\x45\xe2\xd6\x49\x45\xc5\xbb\x1b\x54\x93\x3a\x4f\x4d\x47\xf4\xf6\xb6\x1c\xed\x6a\x3b\x09\x1c\x87\xeb\x0b\x57\x57\x46\x96\xfd\xfd\xb1\x6c\x48\x36\x76\x03\x74\x77\x55\x20\x47\x39\x19\x4c\xba\xcd\xb8\xf1\x30\x66\x3a\x4c\x23\xc8\x27\xfc\x4c\x39\xf9\xfe\x51\xac\x45\x40\xb3\x0a\xf2\x82\x25\x65\x1f\x56\x38\xc6\x0d\x07\x73\xf5\x28\xa3\x7f\x6c\x32\xec\x06\x26\x28\x2a\xe7\x20\xbb\x9d\xf3\x1d\x48\xfc\x0d\x28\xfc\xed\xe8\x8d\x5e\x06\x45\xef\xf5\x45\x87\x25\x7b\xf7\x46\xeb\x9d\xce\x5f\xb0\x3f\x95\x43\xb3\x9e\x65\x6d\xbe\x88\x48\x8b\xb3\xb4\x39\xab\xce\xcb\xfb\x1e\xef\x56\x17\xc9\x9f\x2f\x44\x4d\x8a\x5d\xde\x4d\x1c\xd4\xa5\x72\xaf\x85\x8c\xb5\xb8\xc1\x89\x8c\xbd\xbd\x81\xfb\x17\x16\xf7\xcf\x83\xa4\xcb\xa8\x4a\x9b\x51\xed\x8f\x1d\xf7\xe2\xc4\x1e\xe6\x71\x50\x2f\x12\x70\xbf\xe9\xb0\x74\x3f\xb0\x18\x92\xc5\x03\xa4\x8b\x07\x92\x61\xf3\xb5\xbc\x88\x13\xde\xdf\x7f\x96\x1f\x51\xbf\x30\x3f\xa2\xba\xfc\x88\xba\xca\x8f\xa8\xe2\xf9\xd8\x4c\x63\x89\xc9\xa4\x68\x76\x99\x08\x1b\x26\xc5\x66\xa3\x12\x8c\xed\xc0\x9d\x33\x0b\xbb\xcd\xbf\xd1\xc6\xb9\x32\x86\x17\x37\xd7\xd4\x6c\xa6\x46\x11\x0a\x4e\xf8\x9f\xcc\x3e\x95\x39\xe3\xdf\x98\x22\xc7\x96\xea\xd2\xc7\xcc\x43\xc9\x04\xa4\x7c\xbd\xb4\x8d\xe4\xf0\x89\x3e\x2f\x51\xe0\xdf\x59\xc2\x61\x8f\x3f\xd2\x4f\x89\x45\x70\xf2\x25\x2b\x60\xcf\x17\x0f\x50\xe1\x3e\x38\x79\x92\xed\xa1\x98\x38\x76\xd7\x7c\x51\x2f\xf6\x6a\x78\xc9\x17\xac\xf2\x4b\x3e\xb7\x39\x71\xea\x8a\xad\x7c\x11\x9c\x17\xf6\x04\x51\x91\xeb\xc3\x21\xfe\xf9\xd5\xb1\x57\xcb\x9c\x34\xbb\x32\x48\xfc\xaf\xfe\x68\x6d\x30\xf2\xc1\xd1\x1c\x44\x2d\x2e\x53\x8f\x3f\xb7\x6c\xda\x2e\x9b\xfe\x05\x8b\xad\x1c\x96\xa2\xc5\xd6\x57\x8b\xdd\xd4\xe6\x76\x36\xac\x5b\xe9\xe1\x3b\x9d\x9e\xa2\x5c\x28\xb9\xee\x36\x58\xaf\xea\xe2\x6b\x55\x17\x53\x4c\x44\xd3\x99\xc1\x0e\x13\xf2\x86\xa7\xae\xc0\x7e\x1b\xf3\x02\x75\xb8\x8f\x20\x65\x05\xd8\x1b\xb0\x39\x15\x60\x47\xae\x4b\xb1\xf9\x89\x89\xfe\xb2\x79\xf0\xab\x39\x4b\xba\xbb\x67\xdd\x95\xb6\xe2\xe2\x93\x6f\xd4\x23\xeb\x3f\x50\x5d\x82\x4a\x3b\x02\x30\xc1\xbe\xd2\xd8\xd7\xfa\x25\x5f\x0f\x08\xe5\x44\xe1\x7e\x95\xc8\xc5\xa3\xb5\xee\x16\xd3\xa9\x9f\x88\x01\x74\xf3\xfe\x8b\x9a\xf6\xe6\xd8\x46\x7a\x03\x8d\x7d\xa5\x2f\xee\x8f\x65\x4c\x51\x7c\x27\xa7\xd7\x98\x73\xe2\x85\x74\x14\x91\x1d\x34\x15\xd8\x60\x18\x15\x6d\x91\xce\x14\x0e\x0c\xd8\x55\x40\x33\xf6\x01\x39\xc6\x93\x2f\x7b\xed\x7e\xf8\x22\x4f\x70\xfc\xda\x77\xfc\x24\xf8\x4f\xda\x67\x06\xff\xc1\x68\xcb\xcf\x66\x86\xa7\xf8\x0f\x96\x92\x4e\xfc\x27\x8b\x39\xc4\x57\xb7\x03\x51\xc0\x1e\xaf\x96\x6d\xe7\x9b\x8b\x0a\x3f\xf3\x24\x4b\x48\x87\xec\xed\x7d\x54\x29\x98\x94\x36\x67\xa4\x39\x08\xd8\x73\xc8\x3c\xdc\x43\xee\xe1\x9e\xc3\xce\xbb\x60\x33\xf3\x2e\x46\x54\x78\x17\x6c\xe7\xde\x74\x84\x9b\x64\x36\xbb\x23\x2e\x49\x50\x2f\x6e\xd9\x62\x02\x13\x38\x0f\x77\x7e\xce\xc1\xcc\x66\x77\x34\xb4\xd9\x8c\xa5\x97\xd0\x06\xd2\x29\x74\xe6\x17\xa0\x49\x25\x0d\xfe\xfb\x57\x55\xe4\x95\x62\xec\xde\xc9\xd8\xbd\xf8\x3a\x5c\xaa\x14\xe0\xe6\x86\x82\xab\x4a\xaf\x97\xe0\x2e\x77\xae\x97\x60\x6f\x76\xae\x97\xe0\x9c\xc3\xb5\x7c\xec\x2e\x8a\x76\x97\x42\xbd\xd5\x7a\xd9\xb6\x1c\x52\x5a\xa7\x8c\x25\xe0\x27\x57\xbb\x84\x98\xdb\xe1\xbf\x58\x02\xff\xc3\xa1\xb0\x85\xff\x26\x0d\x4a\x85\xff\xe5\xd6\xed\x22\x1d\xba\xb3\x4a\x13\x2a\x52\xa9\x1e\xa9\xd4\x1d\xb7\x37\x31\xf6\xce\x93\x7b\x7b\x5b\xfd\x3f\x28\xd4\xee\xa4\x64\x71\xb0\xea\x74\xf2\xfa\x80\x38\xfc\xff\x50\xbb\xee\xc5\xe1\xa6\x82\xcd\x3e\x7b\xab\x27\x26\xb7\x7a\x26\x0f\xf4\x34\x8f\xd1\xbe\x44\x54\x51\x37\xe8\x39\x93\xdb\xe5\xe3\x72\x2d\x49\x9b\x89\xda\x08\x74\x87\x89\x31\x7f\x7b\x8b\xb7\x48\x4d\xf1\x85\x9a\xb8\x71\x93\xdd\x1d\x08\x0d\xa7\x41\x1d\x1f\xc6\xbe\xed\x23\x57\x3b\x46\x19\x1c\xed\x6b\x66\x6e\x83\xee\xe1\x09\xd3\x0e\xca\xf1\x89\x94\x0a\xf4\x09\x54\xa0\xcf\x1c\xaa\x4d\xc6\x62\x2a\x9f\xe6\x54\xd1\x1f\x65\x91\x43\x6e\x59\xec\x8f\xb4\x58\x35\x9e\x85\x7d\x58\xf2\x2e\x29\x43\xfb\xa2\xf2\x57\x51\x0f\x4e\x5b\x9c\x7e\x81\xed\xb0\x60\x1a\x4a\xce\xb7\x98\x3e\xb2\x78\x78\xa3\xbc\xe3\x6b\xe6\x60\xfd\xfe\x61\xb2\xc3\xd8\x13\x38\x28\xb8\x5b\xf1\x2f\xb0\xda\x1b\x28\xec\x59\x9b\x8c\x8f\x6f\xfa\x56\x8a\x4b\x7a\x52\xcb\x1b\x48\x1c\xc6\x97\x2f\xf9\x54\x2f\xef\x7e\xf9\x84\x8f\x73\x4d\xd6\x32\x8c\x36\x19\xd3\xb7\xe6\x32\xb9\x9c\xcb\xe1\x49\x36\x4f\xdc\x34\xc6\x3d\x08\x69\x3d\x3b\x1b\x71\xf0\xa9\x3f\x15\x62\x7b\xda\xa5\xc1\xa7\x47\x22\xbc\x26\xc2\x34\xb4\xc1\x5a\x43\x7f\x90\x84\x7d\x2f\x7c\x33\x8e\x70\x37\x1d\x61\x71\x79\x61\xdb\x76\xa4\x5d\xde\x6b\x14\x14\x7b\xc4\x99\x8d\x4f\x6b\xc7\x13\xcd\xcc\x5d\x91\x60\x1a\x45\x98\x44\x16\x9d\x8f\x2f\xa6\xf5\x36\x76\x6e\x04\x07\xdd\x25\xef\xc6\xc7\x09\x6a\x8e\x0a\xe4\x1c\x25\xa8\xc7\xc1\xab\x96\x73\x33\x4f\x17\x0a\xd4\x82\xc9\x79\x3c\x4f\x39\x5f\xf7\x5c\x5c\xbc\x34\x76\x69\xdb\x8b\x77\x43\x62\x7c\xd6\xad\x83\x13\x50\x9c\x76\x86\x1c\xd5\xa3\x64\x6e\x5c\x0b\x45\x4e\xe7\xce\x9a\x6e\x44\x1d\xe8\x93\x65\xde\xbc\xbd\xe5\x1f\x34\x49\x53\x8e\xf9\x23\x15\x26\x67\xb6\xf1\x36\xe1\x3b\x9b\xb8\x83\x1d\xf9\xaf\x36\x05\x92\xc1\x2e\xd0\x67\xcc\x21\xf5\xd0\x65\x4a\x1e\x25\xdb\xb9\x3e\x72\xbe\x5e\x6e\x76\xc1\x27\xbc\x5b\xda\x2c\x0a\x45\xab\x27\x8f\x3a\xf3\x53\xd0\xc1\xd9\xc3\x1c\xa8\x0f\x1f\x73\xeb\xa2\x4c\x39\x38\xf5\x1c\x9c\xde\xc5\xc1\x09\x73\xb2\x98\x8e\x97\x5b\x1c\xac\x2c\x9f\xc4\xc1\xd9\xb3\x7d\x66\x40\xcc\x38\x0e\x4e\xfe\xc5\x79\xf3\x70\xff\x5d\x63\xf2\xf6\x26\xdc\xdd\x1a\xf2\xf5\xc6\x8c\x0b\xc5\x47\xc6\xba\xec\x86\x3a\xb7\x66\xc0\x50\xe7\x56\xfb\x27\xb3\x99\xe8\xa3\x37\x72\x27\x32\x16\x1a\xdb\x7e\x9a\x13\xd0\xc2\xf4\x82\xcf\x92\xc7\xdd\x3a\xe7\x04\x43\xd2\x91\x58\xe9\xf8\x99\xd3\x63\x77\x47\xa7\x7a\x2e\xf5\x78\xa9\xcd\x5d\x87\x35\x28\x15\xc4\x34\x56\x52\x6d\xe4\x56\xae\x26\x8f\xf0\x7e\x35\x26\x95\xca\x5f\x68\x08\x4a\x6b\x08\xca\xcf\x2f\x0d\x4f\xdf\xa4\x4a\x36\x7d\xc4\x43\xfe\x41\x09\x12\xba\x77\x31\x63\x34\xef\xfe\x92\xc0\xa3\x54\x4c\xf2\xb5\xd4\x4c\xc2\xe4\x94\xb9\xcf\x0b\x85\x0a\xec\xbf\x68\xad\xf8\xf4\x0f\x40\x4c\x9e\xe5\x68\x97\x27\xb2\x7f\xdc\xe0\x8a\xe9\xfe\x5a\x93\xb6\x1e\x41\x3c\xac\x1a\xd2\xd6\xe4\x03\x03\x6b\x16\x0f\x39\x29\x8e\x57\x77\xbe\x62\x9c\xb0\xc3\x04\x86\x02\xec\xbf\x88\x02\x4c\x05\x25\x4d\x87\x5d\x84\x77\x1b\xe1\xc7\x71\xe1\xd6\x5d\x22\xaf\xe4\x6b\x79\xd7\x65\xf5\x88\xe0\xb1\xc9\xd4\xee\x97\x1c\x0e\xb9\x75\x2f\xed\x19\x51\x19\x58\xaf\xe0\x7d\xd8\xa9\x5b\xd5\x94\xcc\x7b\x49\xf3\xd8\x72\xc6\x37\xff\x37\x00\x00\xff\xff\xb0\xcd\x9c\x95\x6a\x44\x00\x00") func webUiStaticVendorRickshawVendorD3LayoutMinJsBytes() ([]byte, error) { return bindataRead( @@ -798,12 +819,12 @@ func webUiStaticVendorRickshawVendorD3LayoutMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/vendor/d3.layout.min.js", size: 17514, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/vendor/d3.layout.min.js", size: 17514, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _webUiStaticVendorRickshawVendorD3V3Js = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xcc\xbd\x6b\x77\xdb\xb6\xd2\x28\xfc\xfd\xfc\x8a\x58\xa7\xf5\x22\x45\x52\x37\x27\x69\x4b\x99\xd2\x4a\xd3\xb4\xdd\xdd\x71\xd2\xd6\xe9\x55\x51\xbd\x68\x0a\x92\xd8\xd0\xa4\x42\x82\xb6\xd5\x58\xe7\xb7\xbf\x33\x03\x80\x00\x29\xca\x71\xbb\xf7\xf3\xac\x77\xb5\xb1\x48\xe2\x36\x18\x00\x83\x99\xc1\xcc\x60\x71\x12\x2c\xcb\x34\xe2\x71\x96\x5a\xf6\x07\xf5\xf8\x28\xb5\x52\xfb\x43\xce\x78\x99\xc3\x73\x99\x24\x47\x41\x7a\x7c\x7c\x14\x17\xaf\xc2\x57\x90\xb2\xab\xf2\x71\x33\x5f\x2f\x61\xe9\x8a\xaf\x75\x2a\xc3\xd4\x65\x96\x5b\xd7\x61\xfe\x88\x07\xc3\x71\xda\xe5\x9f\x0e\xc7\x36\xef\x06\xc3\xc1\x58\x16\xe3\x3a\x7f\x6e\xa5\x2e\xb7\x3f\xf0\x7c\x5b\x95\x62\x8f\x62\xc8\x62\xbf\xbe\xfc\x93\x45\xbc\xb7\x60\xcb\x38\x65\xdf\xe7\xd9\x86\xe5\x7c\x6b\xa5\xbd\x4d\x9e\xf1\x8c\x6f\x37\xcc\x65\xee\x87\xeb\x30\x29\x99\xcf\x67\x6c\xee\xb2\xb4\xbc\x62\x79\x78\x99\x30\xff\x68\xb8\xb3\x77\x51\xc8\xa3\xb5\x95\xdb\x1f\x8c\x22\x01\xdf\xe9\xa6\x4b\xe8\xbd\x7e\x8b\x6b\x6f\x19\x82\xe5\xb2\xaa\xa3\x06\xc2\x10\xc4\x3c\x60\xbd\x70\xb3\x49\xb6\x16\x77\xc3\x7c\x05\x0d\xa7\xbc\xb0\x55\xf7\xf2\x20\x08\xf8\x34\xf5\x73\xa3\xb1\x50\xf4\x33\x5e\x5a\x1c\xbb\x97\xda\x0a\x15\x63\x1e\xf0\x5e\xb4\x0e\xf3\x67\xdc\x1a\xd8\x3d\x9e\xfd\xb4\x81\x9e\x3e\x0f\x0b\x66\xd9\x0e\xef\x15\xe5\x65\xc1\xf3\x38\x5d\x59\x43\x7b\x5c\x61\x28\x18\xb8\x79\xf0\x55\x26\xb1\x3f\xce\x27\x6c\xec\x38\x4c\xc0\x56\x42\x02\xe0\xc3\xe1\x63\x68\xac\xac\x35\x56\x1a\x00\x45\xb5\xfe\x26\xb5\xb7\x82\x06\x51\x0f\xb8\x31\xa2\xd0\x2e\x73\xcb\xc0\x1b\xba\x71\x90\xab\xf6\x1d\xa7\x3c\x8d\xc7\xb6\xc5\x83\x7c\x56\xce\x7b\x59\x6a\x1f\x1f\x73\x85\xa0\x75\x5c\xb4\xe0\x28\xdd\x89\x8e\xcc\xe6\x50\x63\xca\x6e\x1e\x95\xd5\xe4\x80\xf2\x7a\x82\x72\xb7\x14\xdd\x8a\xdd\x0c\x1a\x5c\x31\x6e\xf1\xaa\x92\xaa\x5a\x09\xc8\xe9\x68\x9a\x1d\x1f\x67\x50\x81\x6f\xc1\x83\x85\x4f\x01\xce\x65\x97\xc1\x80\x15\x49\x1c\x31\x6b\x00\x80\xb3\x5e\x9c\x2e\xd8\xed\xeb\xa5\x95\xd9\x76\x2f\xca\x52\x98\x2b\x96\xca\x10\x3b\x43\xdb\x76\xf3\x5e\xce\xae\xb2\x6b\x06\xad\xd9\x6e\x79\x7c\xcc\x7a\x9b\xb2\x80\xe9\xd4\x2b\x10\x02\xf7\x03\x34\x51\xee\x20\x09\x56\x86\x6b\x4c\xe7\x25\xe0\xea\x2a\xeb\xb1\x6b\x80\x0a\xa6\x1d\xfd\x7e\xc5\x96\x61\x99\x00\x16\x75\xb6\xb5\x81\x52\x98\x17\x81\x2a\x32\x4e\x61\x32\x14\x59\x99\x47\xec\x05\xbd\xdb\x3c\x48\x5b\x56\xcd\xaa\xbe\xca\x10\x7f\xd8\x47\x9c\x15\x4d\x9c\xe0\xc4\x38\xcd\xa1\xa2\x59\x95\x02\xb3\x63\x1e\x14\x06\x1e\x01\xe5\x4b\x8d\x72\xe6\xe6\xfb\xf3\xbe\x14\x6b\x94\x46\x22\x28\x4d\x18\x35\xf0\x65\x8f\x43\x1b\x0c\xe0\x71\xd5\xb7\xa0\x74\xf9\x0c\xbe\xc3\xda\x9b\xcb\x09\x81\xd5\xef\x60\x4d\x87\x49\xb2\xad\x70\x15\xc4\xbb\x5d\x0d\x91\x1b\x83\xca\xbc\xc4\xd5\xf8\x63\x06\xc8\xd6\xe9\x0b\x9d\xde\x51\x1f\x3b\xb0\xec\xa0\xa1\x6c\xf9\x28\x85\xd5\x67\x2c\x59\x59\xcf\xb7\xb4\xaa\x61\x3e\xda\xc6\x3a\xb8\xfe\x07\x15\x7d\xdd\x56\xd1\x95\x58\xe1\x06\x25\x04\x94\x41\x1e\x39\x91\x9e\x71\x58\xc6\x97\x25\x67\x35\x62\x9a\x1f\xc8\xf4\xea\x1c\x28\x5d\xb1\x09\x23\xe6\x02\x8d\xcd\xa2\x30\xb1\xeb\x84\x8b\x0a\xc1\x5c\x34\xaa\x85\xd6\xeb\xe4\x6c\x2f\xcf\x7e\xad\xb5\x32\x99\xa4\x6e\x40\x26\x0f\x2c\x5e\x5c\x4b\x41\xc0\xa6\x07\xfa\xe5\xb7\x41\xc5\x6c\x93\x0a\xfe\x27\x2d\xb4\x20\x65\xbf\xc5\x96\x3e\x02\x04\x8a\xea\xe0\x64\x4d\x8b\xde\xfb\x32\x4c\xe2\x25\xec\x26\x30\xa7\xa8\x41\x20\xd7\x22\xf3\x34\xf7\x99\xdf\x32\x11\x74\x86\xd0\xcf\x7c\xf5\x1c\x03\x11\xa8\x3a\xb7\xad\x6d\x8c\x00\xce\x95\x65\x43\x17\x36\x09\xc0\x62\xf5\xdf\x16\x4e\x7f\xe5\x76\x1e\x75\x0c\x74\x9c\x99\x25\x60\x0d\xff\xc8\x56\x2f\x6e\x37\x56\xc7\x9a\xfa\x7f\xdc\xbd\x85\x12\x76\xc7\x01\x80\x73\xf6\xbe\xcc\x08\xc1\x0e\x26\x61\xc2\xdd\x27\x76\xc7\xed\xac\xcc\xca\x6e\x5b\xe6\x9f\xde\x30\xbc\x21\x11\x82\x72\x6c\xa7\xb0\xfc\x05\xda\x79\x63\x22\x9a\xb9\x81\x92\x1c\x1a\xa2\xbd\x7a\x60\x3d\x03\x99\x55\x3d\x2e\x36\x49\xcc\x45\x7f\xed\xde\x55\xb8\xb1\x2e\xed\xb1\xd8\x97\xd2\x6a\xbf\x3a\xb4\xdc\x38\xa2\x5f\x03\x75\x89\xf8\x11\x24\x0e\x51\x35\x6e\x12\x25\xa2\x54\xb8\xcb\x01\x45\x8f\x92\xb0\x28\x5e\xc6\x05\x57\x9b\x5d\x3e\x2d\x7b\xe1\x02\xe9\x84\x5f\x2a\x62\x9e\x2a\x50\x18\xee\x24\x7a\x96\x76\xa8\x74\xc7\xbe\xbb\xeb\x74\xc6\xf9\xd4\xe2\x3d\x78\xe7\xff\xc2\x4d\x02\x88\x2a\xef\x71\x56\x70\x20\x81\x77\x77\xac\x3e\xbb\x65\x39\x77\x6b\x95\x0e\x0c\xad\x93\xda\xb6\xed\x1f\xce\x53\xcd\x06\x4e\x13\xc1\x36\xc9\xc7\x85\xe2\x38\xf6\x69\x43\xc1\xb7\x09\x93\x5d\xd0\x8c\x50\x2b\x41\xa0\x9c\xd0\xbc\xce\x46\x95\xd6\xe9\x82\xe0\x60\xee\x5f\x81\xf9\xf4\xbe\xa6\xfd\x83\xad\xe5\xe6\x6a\x93\x4b\x2b\x6f\x5f\x50\xb5\xc5\x73\xd3\x32\x7b\x17\x2c\x61\x9c\x3d\xc2\xb6\x66\xe9\x7c\x9f\x68\xc2\xc7\x80\xd7\xb1\xf0\x30\xe2\x52\xaf\xd8\x57\x75\xb1\x26\xe0\x07\x28\x41\x09\x9c\x5d\xd5\xea\xf9\x47\xf7\x0f\x6b\x9f\xea\xd8\x92\x7e\xec\x6f\x2d\xb7\x59\x2f\xca\x59\xc8\xd9\x8b\x84\x21\xd4\x6d\x1b\x41\xcb\x8e\xd4\x52\x8c\x86\x28\x0d\xaf\x18\x95\xfe\xe9\xc7\x7f\x21\xaf\xa2\xe1\x7e\xa1\xe1\xfe\x70\x71\xb1\x08\x79\x78\x71\xe1\xa7\x46\x86\x77\x06\x71\xda\x6f\xf0\x75\x26\xb0\x5b\xab\xf3\x99\x51\xa4\xc9\x87\xdc\xdd\x09\x3c\x84\x45\xc4\xd2\x05\x30\xb4\xb6\x6b\x30\x79\x9a\xd3\xe6\xc0\x6b\x4d\xe1\x53\x4f\x01\xe5\xb2\xea\xd1\xf6\x8f\xb8\x77\xc4\x8c\x16\x5f\xc9\x69\x53\x63\x8c\x53\x93\x2f\x66\x8e\x63\xab\xe4\x12\x78\x3f\x24\x5b\xc0\x4a\x0e\xdc\x30\x88\x55\xbe\x70\x92\x8d\x33\xc8\x07\x84\x24\x9e\x65\x73\xe4\x5e\xad\xd2\xcd\x00\x2a\xcd\xae\x56\x4d\xbe\x69\x72\x26\xff\xaa\x73\x26\xef\x2b\xa2\xe5\xb2\x3d\x8a\x95\xbb\x00\x83\x48\xce\x00\x82\x74\x16\xcf\x7b\xe5\x06\x7a\xc7\xdc\x28\x08\x15\x3c\x08\x6f\x7c\x14\x30\x60\x61\x59\x10\x03\x7f\x38\x00\x1e\x74\x12\x00\x6a\x80\xc5\x2e\x81\x3f\x1d\x1f\x59\x59\x10\xce\x38\x82\xea\x38\xfc\x34\x1a\x57\x90\x66\x06\x76\xfe\x92\x2b\x02\xb8\x4a\x9c\x0c\x17\x17\x3c\x0f\xd3\x22\xc6\xb4\x8b\x8b\x71\x8a\x65\xd3\x5e\x08\x79\xaf\x0d\xa2\xfb\xbc\x95\x10\x09\x2a\x4c\x2b\x25\x9b\x8f\x09\x12\xbd\x43\x13\x1f\x88\xb4\x97\xa5\x8c\x04\x3a\x20\x99\x9f\xd8\xae\xb9\xcc\x00\xab\xfb\x2b\xb5\x0c\x12\x18\xfb\xb3\xcc\xd2\x6b\x14\xfa\xd1\x83\x49\x9e\x50\xf5\x36\x31\x59\x48\xc5\xf7\x5a\x10\x75\x02\x7b\x59\xf6\x3e\x09\x18\xa0\xa7\x77\x61\xd2\x02\x45\xe6\xa0\x23\x81\xb9\xb3\xfe\x71\x71\x01\xa3\x30\xfb\xa3\x37\x6f\xd9\x5b\x3f\xe9\x68\x11\x2b\x27\x21\x14\x61\x40\x91\x0d\x24\x8f\x2b\x12\x27\x99\xad\x20\x27\x08\x72\x40\xc5\x21\x34\xf0\xd9\x70\xee\x12\x7c\x75\x4c\xe4\xf3\x1d\xc9\x3e\x59\xd0\x41\x60\x60\xd3\xc0\x89\x50\x49\x24\x9d\x5e\xc7\x76\x93\xe0\x2b\x98\x94\x03\xc0\x32\x6e\xac\x5a\x06\x84\x59\x6b\x8b\x2d\xac\x08\x7e\xcf\x48\x1a\xd2\xdb\x62\x41\xd9\x0b\x28\xfc\xa7\xed\x86\x53\xa2\x53\x3e\x9f\x46\x7e\xac\xf1\xf2\x95\x58\x2f\x7b\x1b\xa9\xda\x14\x2a\x5e\xbe\x62\xcc\x19\x30\xf0\x83\xb9\x9a\x40\x62\x1d\x8e\x51\x14\x48\x4d\x22\xcb\x5b\x58\x7a\x10\x7f\x75\xc3\x7f\x8a\x86\xc5\x22\x15\x50\xec\x2d\x8e\xd4\x9c\x66\xb4\x8e\x73\x96\xc0\xd2\x58\xbc\x21\xb1\x62\x9c\x43\x07\x49\xb6\xbe\xbb\xfb\xfc\x18\xa6\x49\x76\xb5\x09\x73\xf6\x55\x16\xd1\xdc\xf9\x3e\x13\x33\x1b\x25\x36\xdc\xa8\xc5\x2c\xaa\x13\xa8\x97\xd5\x82\xe8\xf4\x16\x79\xb8\x2a\xca\x0d\x08\x69\x45\xe1\x75\x9c\x47\x8e\xf3\x6b\x06\x4b\xad\xc3\xb3\x32\x5a\xe3\x70\xe2\xc8\xb0\xa0\x53\xc0\xd8\x45\xbc\x00\xd1\x86\xe3\x97\x3c\xe8\x50\x49\xf5\x5e\x06\xb0\xc1\xc7\xd1\x3b\x7c\x8e\x11\x7f\x22\xbf\x75\x91\xd9\x3d\x22\x6d\x4b\xfa\x65\xf2\x37\x87\x5f\x20\x3f\x97\x99\xd8\x3d\x61\xe8\xb3\xd9\xcf\xb0\xa2\xd4\xea\xc5\x97\xa0\x93\x66\x29\xeb\x18\xf4\xb1\xb1\x31\xc6\x58\x53\x49\xac\xab\xbd\xa3\x97\x54\xbc\xb8\xa2\x7c\xe8\xe2\x02\x95\xb9\x4c\x5d\x8f\x65\xbb\x50\x7e\xe7\x1e\x01\x41\x81\x7d\xfb\x4d\x7c\xc5\xb2\x12\x44\x5f\x77\x50\xe3\x45\xbe\x95\x4a\x19\xd4\x4b\xa4\x2b\xc0\x3f\xa2\x84\x15\x44\x7e\x9a\x1f\x61\x72\x88\x19\x09\x0b\xad\x97\xdd\xc0\xcc\x3f\xff\xf9\x1b\xb9\x0b\xdd\xdd\xa5\xa8\x84\x60\x72\x6f\x82\x84\xef\xb3\x38\xe5\x5a\x87\x52\xff\x6e\xd9\x98\x7b\x30\xf9\x04\x65\xf7\x0b\xc0\x50\x94\x67\x49\xf2\xeb\xdd\x5d\xf5\xfc\x1b\x2c\x3f\x66\x20\xb9\x73\x99\x2d\xb6\x1d\x1b\x67\x22\x6c\x2a\x56\xa7\xb8\x06\x96\x58\x60\xd6\xfa\xb0\x91\x13\xc2\xef\x84\x97\x45\x96\x00\x2f\xd6\x71\x79\xb6\xf1\x07\x6e\xc2\x96\x1c\x7e\xae\x60\x5a\xc5\x29\x3c\x6c\x80\xc2\xc0\xf2\x82\xa7\xcb\x2c\x5f\x30\xe0\x57\x68\x00\x76\x6e\x27\xbe\xda\x64\x39\x0f\x53\xde\xa9\x38\x47\xe8\x30\xfc\x8f\x6b\xef\x1c\xc0\x67\xe9\xf3\x37\x67\x00\xf8\x27\x59\x70\x04\x0c\xde\xf2\xee\xae\xec\x01\x39\x52\x3c\x93\x55\x31\x43\x9f\x64\x53\x2b\xef\xdd\x02\xfe\x36\xe1\x8a\xfd\xea\xe6\xbd\xad\x7c\xfe\xcd\xf6\x65\x0a\x4c\x24\xc0\x9a\x4a\x13\x6f\xbf\xd9\x30\xe5\x88\xfc\xe4\xf1\xed\x1b\xa4\xdf\x40\xa2\x40\xd6\x6c\x00\x00\xf4\xe3\x9a\xe5\xa8\x34\xb2\xdd\x19\xd4\x86\x75\xcc\x77\x42\x5c\xa7\xbc\x5f\x66\x25\x6d\xbb\xcf\xa9\xd6\x1f\x11\x7b\x6a\x05\xce\xaa\x96\x3d\xdc\x12\x97\xdc\x4b\xe5\x87\x97\xf0\xe2\x56\x90\x40\x2a\xe0\xaf\x4a\x7c\x93\x6d\x0c\xa6\xec\x6b\x53\x96\x99\x0c\xa6\x43\x7f\x30\x49\xa7\x1e\xfc\xe8\x3c\xdf\xd7\xf2\x0c\xa7\x03\xdf\x1b\x42\xa6\x2f\x33\xff\x2c\xe4\x6b\xd8\x89\xb2\xa2\xc6\xd7\xbe\x6e\xe4\xff\x2e\x13\x05\xbc\xef\x54\x89\x22\x4e\x6b\x25\x7e\xd4\x25\x2c\x20\x86\x94\x89\xdd\xa2\x32\xc1\xf6\x86\xfd\xd4\xee\x8f\x74\xde\xdf\x0e\xe7\x75\x9a\x79\xff\x75\x20\xef\xa8\x4b\x35\xdb\x7d\x2b\x85\x6d\x59\xe7\xff\xc9\xc8\x2f\xb3\x13\xa8\xfd\x91\x6d\x77\x0d\x66\xe1\xf7\x9a\xde\xed\xe7\x86\xd6\x11\x77\xae\x5f\xf7\x58\x78\xf5\x45\xb0\xfc\xeb\x40\xec\x86\xbd\x22\xe0\xe2\x21\x09\x8c\xdd\xfc\x93\x96\xdd\xdc\x44\xea\xc9\xd3\xc1\x34\xf5\x02\xf8\xc1\xf1\xc2\x1d\xc4\xc1\x17\xdb\x7d\x8a\xc3\x17\x3b\x56\xe6\xc5\x00\x71\x1f\xd2\x87\x9f\xe3\xa7\xcc\x1f\x3d\x36\x93\x2c\x78\xf5\x00\x59\x90\x21\x36\x77\x78\xdd\x08\xf5\x3e\xc7\xe9\x67\x8d\x9e\x3c\xe9\x62\xfb\xf6\x4e\xaa\xf4\x2a\xfe\x2a\x50\x8a\x66\x98\x14\x56\xfa\x29\xc1\x70\x0a\xa0\x39\x08\x19\xaa\xc8\x44\x3a\xc7\xf4\xc1\x84\xc3\x5f\x0e\x13\x62\xe8\xe3\x06\x3f\x98\x30\x78\x67\xf4\xce\x80\xb8\xf6\x9e\x4c\x80\xc9\x67\x5d\x6b\xe8\x70\x10\xc7\x1c\xee\xb1\x2e\x07\xe2\x3c\xea\x32\x2f\x73\x33\xe0\xed\x70\xb4\x46\xc8\x54\xa1\x06\x00\xfe\x78\xf8\x66\xa0\xf8\xcb\x96\x81\xf8\x65\x6f\x20\x7e\x69\x1f\x88\xa8\x75\x20\xbe\x6b\x54\xa9\xfa\x4b\x9b\x36\x80\xa2\xfa\x47\x44\x16\xde\xbf\x01\xaa\x4c\x98\xa3\x45\xd1\x0d\x7e\xc8\x6c\xe8\x84\x9e\x49\xf0\x66\x80\xf2\x4d\x0b\xc0\xff\xde\x03\xf8\xdf\x35\x80\x13\x05\x70\xa8\x00\xbe\x34\x01\xfe\x41\x65\x16\xc4\x1a\x51\xf6\xd4\xee\x0f\x87\x4f\x61\xcb\xcb\x1d\xde\x7f\x32\x40\x55\x6a\xee\xb1\xfe\x68\x50\x69\xf6\x81\x2f\x42\x41\xb9\x5b\x84\xa8\x40\xe0\x56\x6e\x77\x97\x21\x64\x83\x47\x98\x2b\xeb\x10\xb1\x9f\x73\xeb\xa4\x07\xb3\xe6\xf1\x93\xc7\xa3\x6e\xe9\x0d\x7b\x4f\x4e\x3e\x1b\x9e\x7c\x0e\x33\xc3\xeb\x3d\xfe\xe2\xf3\x27\x27\xc3\xc7\xdd\x18\xa8\x1e\xb7\xbc\xde\x17\x4f\xbf\x18\x3d\x7d\xda\x05\x9e\xb7\xf7\xf9\x67\x4f\x07\xc3\xc1\xe7\xdd\xdc\xe9\x0d\x1e\x0f\x9f\x3c\x79\x2a\x33\xf5\x06\xf0\xfc\xf8\xe4\x31\x54\xd5\x1b\x0d\x1e\x0f\x46\x4f\xbe\x80\x3c\x43\xf8\xfc\xd9\x68\xf4\x64\x04\xb9\x0c\x0c\xc0\x26\xd3\x40\x14\x90\xaa\x2f\x2d\x41\x4c\x80\xce\x8f\x00\xeb\x1c\xe6\x7b\x28\x31\xfd\x1e\x1a\xe0\x5d\xee\xb0\x2e\x43\x5d\xaf\xff\xa5\x35\xe8\x0f\x5c\xfc\x57\x3b\x12\xa9\x9d\x89\x4c\x00\x8c\xa7\x9f\x7f\x71\x32\x38\x79\x3c\x4d\xbb\xf0\x1f\x4c\x68\xef\x71\x7f\xf4\x85\xdd\xff\xac\xf7\xd9\xe7\x9f\x0d\x4e\x3e\x33\xce\x4b\x1a\x45\x07\x83\xcf\x3f\x7f\xf2\x74\x4a\xad\x6f\x32\x94\x8a\x87\xfd\x13\xdb\x57\x05\xbb\xa9\x83\x35\x19\xb2\x30\x3f\xbc\xd2\x00\x35\x83\x93\xc1\xe3\x49\x90\x4e\x87\xa3\xde\x17\x40\xab\x7c\x44\xcb\x93\x6e\xad\xf6\x51\xef\xb1\xed\xe1\x67\x13\x4f\xa5\x59\x2d\x8c\x59\x3a\x99\xc0\xc0\x43\xa5\xc7\xf0\xf4\xb9\x78\x30\xb5\x0a\x66\x76\x2a\xeb\x74\x3a\x86\x62\x71\x0f\xeb\x30\x3d\x43\xbe\x37\x3f\xab\x4f\x52\x27\xaa\x26\xe8\xaa\x75\x82\x46\x66\xa3\xc3\xa7\x40\x93\x3a\x83\x8e\x43\x7d\xbb\x0a\x6f\x2d\x1c\x22\xd8\xaf\xce\xe5\xe9\xc9\x53\x5b\x6c\x19\x57\xb0\x78\x00\xfc\x66\xa2\x71\x14\xc2\x6b\x13\x1f\x05\x36\x29\x2f\x0e\x40\x46\x1b\x20\x8b\x92\x07\x7d\x6b\x16\x7a\x7f\x81\x10\xf1\xd6\xb2\x7a\x5d\xfb\xad\xdd\x8f\x61\x3f\x60\x11\xd2\xb6\xe2\x26\x46\x51\x01\x56\xc9\x6c\x34\x97\xea\xb0\x8e\x0b\x5c\x7d\x0e\x12\x81\xfd\x21\x0a\x0b\xd6\x59\x17\x49\xc7\x97\xa0\x33\x0b\xd8\xd8\x82\x7d\x9d\x64\xd0\xff\x12\xf9\x29\xb7\xf6\x01\x0a\xf5\x87\x83\x41\xfd\xe3\x48\x7c\xb4\xc7\x54\x5d\xbe\xba\xac\xaa\xe3\xd6\x4a\x55\xb3\x92\xc5\xc5\x03\x14\x51\xdc\x88\x15\x07\x8b\x50\x8a\x0f\xf6\x14\xd6\x66\x2f\x77\xe3\xde\x0a\xfe\x5d\x02\x33\x52\x9d\xfe\x75\xfe\x6f\x07\xd8\xed\x54\x1f\x4f\x01\x71\x7a\x4c\x5f\x84\xa0\x3a\x05\x29\xb4\x4a\x1d\x02\xf7\xe9\x04\x24\xd5\xaa\x4f\x23\x90\x43\x1c\xe0\x46\x23\xfd\xe9\xc4\x76\x23\x27\x88\x60\x46\x1b\xf5\xe0\x51\x4d\x4d\xce\x19\xba\x90\x2f\xac\x7d\x3a\x71\x9f\xd8\x54\x91\xfe\xf4\xc4\xfd\xcc\x46\x66\x9a\x10\xf3\x2f\x58\xda\x99\x0b\x23\x09\xe5\xaa\x0f\x21\x7d\x88\xf4\x87\x08\x3f\x80\x58\x09\x59\x01\x2c\x73\xc6\x17\xfb\xc3\x1e\x54\x13\x26\xed\x07\x38\x67\xb8\xf8\x61\xf4\x83\x2d\x57\x93\x4d\x14\x45\x6e\xde\x8b\xa1\x3d\x2b\x73\x62\xe0\x1f\xaa\x73\xaa\x29\xcc\x06\xd8\x95\xa2\x69\xd8\xa7\x24\x1f\x7e\x47\x1e\xee\x9f\x28\xe6\x04\x01\xf0\x86\xb0\x49\xd9\xfd\xd0\xb1\x18\x6c\x6e\x4f\xfd\x81\xed\x73\xfa\xcc\x70\x6f\x0d\x9d\x11\xd2\x10\x8e\x4f\x8f\xdd\xbc\x1b\xc0\xe6\x08\x3c\x63\x80\x74\xa8\x0c\x22\x14\x14\x87\x50\xf9\xc0\xcf\x6d\xf7\x67\xd2\x31\x44\x46\xcf\x96\x55\xcf\xd2\x60\x8d\x23\x0e\xbb\xe9\x1a\x8f\xd1\x60\xeb\x84\x5f\x26\x38\x5b\x60\xc7\x39\xcc\xe5\xc7\xc3\xd1\x63\x20\xa7\x40\x67\x7a\x27\x4f\x3e\x7b\xf2\xd9\xd3\x21\x50\xbf\x1e\x6c\xfd\x8f\x4f\x3e\x7b\x02\x44\xb0\x5f\x84\xb0\x63\x8a\xbc\xa3\xe1\xe8\xe9\x67\xa3\x2f\x30\xef\x67\xc3\x27\xc3\x27\xa3\x11\xe6\x1d\x7c\x36\x1a\x8a\xac\x4b\xc8\x1a\x8b\xac\x83\xe1\x17\x27\x27\x27\x94\x75\x38\xfc\x62\xf8\x05\xe5\xfc\xe2\x09\x92\xa7\x21\x66\x5d\x87\x95\x38\xf8\x8d\x05\x7b\x0c\xee\x0b\x4f\x5d\xd8\x62\xba\x56\xee\x95\xb6\x3b\xc2\xa7\xd2\xab\xd1\xf2\x35\x37\x99\x2c\x31\x26\xa7\x01\x6c\x0e\xb0\xb3\x4c\xd3\x3e\x91\x3c\xbf\x22\x75\xb0\x7f\x11\x91\xeb\x13\x09\x74\x91\xea\x19\xe7\x69\x5c\x0b\x9f\xc6\x32\xab\x64\xeb\xce\xa7\xb5\x85\xa0\xe6\x2d\x30\x7e\x53\x93\xe6\xf6\x80\xb6\x02\xc7\x61\x1e\x63\xf1\x7f\x70\xbc\x64\x6a\xe1\x16\xb5\xfd\xc1\x38\xb6\xe2\x6d\xea\x39\x18\x65\xe3\xf0\x6e\x04\x30\x37\xd5\x70\xb0\xa8\xf7\xc1\x60\x24\x58\x33\xd4\x95\x90\x14\x79\xc5\xa9\xa6\x14\x35\xfb\xc6\x01\x97\x9c\x47\xd8\xc2\x9e\x2a\x07\x59\xb4\x08\x24\xaf\x90\x97\x05\x92\xc8\x23\x90\x40\x23\x10\x82\x8a\x4d\x96\x16\xec\x0d\xbb\x05\x61\x90\x4f\x02\x18\xc7\xe3\xe3\x93\x01\x70\x70\x77\x77\x30\xf6\x28\xcc\x8b\x83\xc5\x34\x90\x12\x7b\x8c\x73\xb7\x3a\xbb\x57\x3b\x50\x8f\xe5\x79\x96\xab\x1c\x30\xcd\xaf\xb3\x78\xf1\x68\xb0\xcb\x7a\x30\x50\x0b\xf5\x1d\xb6\x24\x96\x14\xac\x99\x3d\x92\xec\x66\xf0\x61\x07\x6b\x16\xa4\xc7\x45\x5c\x6c\xa8\x85\xce\x25\x03\x69\x8a\x15\x20\x3c\x02\x85\xde\xe4\xd9\x0a\xb5\x01\xf0\x88\xb5\xc2\x0f\x55\xd3\xc1\x75\x0d\x45\x23\xd2\x24\xfd\x7a\xf6\xf2\x5b\xce\x37\x3f\xb2\xf7\x25\x2b\xb8\x9b\x10\xca\xe4\x34\x39\x02\x41\xf5\xd7\xaf\xb2\xab\x30\x4e\x65\xfa\xdd\x5d\x07\x76\x83\xf5\xf3\x9c\x2d\x60\x10\xe2\x30\x29\x3a\x31\xec\x5c\x77\x77\x47\xfd\x3f\xac\x35\xd4\x63\x15\xf6\xd4\xb7\xa7\x6f\xfb\x6f\xfb\x7d\x71\xcc\x90\xda\x77\x77\x96\x6c\xab\x56\x97\xed\x76\xb2\x94\x00\xc3\x2a\xa6\x51\x4f\xbc\x05\xf8\x40\x80\x06\xa5\x8f\xcf\x20\x53\x2f\xb6\x38\x12\x4c\x48\xea\xa6\xb5\x07\x0e\x09\xa4\x9e\x63\xea\xe4\xe4\xf8\xb8\x44\x6d\x00\x16\x52\x7d\x0f\xf6\xb5\x31\xfb\x3a\xa1\x94\x14\x40\x59\x4f\x15\x32\x10\xbd\xa7\x05\xe2\xbb\x1d\x6c\x2b\x6b\x68\x95\xe5\x46\xe5\x86\x16\x2a\x45\xde\xb2\xd3\xc1\xfd\xf8\x65\x76\xa3\x6c\x1f\xdc\x96\xc3\xfd\x10\xb5\xf5\x96\xd2\xce\x4b\xa5\x1a\x7d\x0c\xe9\x2c\x00\x6a\x71\x63\x1b\xdb\xbb\x8a\xaf\xd8\x1b\x34\xf8\x30\xbb\x73\x40\x33\x0d\xb4\x37\x10\x75\xc2\x72\x84\x5f\x3f\x15\xf5\xc0\x3a\x86\x9a\xaa\x29\xfc\xe0\xda\x90\xaf\x86\xd2\x89\x59\xba\xad\x24\xc3\x7c\x3b\x77\xd6\x81\x7d\x18\x67\x5f\x56\xf0\xce\xbc\x07\xf3\xf1\x45\x08\x53\xd3\x2c\x10\x63\xef\xf6\xe9\x44\xdc\xc3\x89\x2b\xd5\x70\xb1\x0b\x99\x94\x2d\x43\x5d\xa5\x0a\x8b\x18\x08\x31\x65\xae\x9d\xf2\xa3\x69\x05\x2c\xd5\x07\x93\x09\xd4\xbf\x01\x57\x83\x5b\x16\x91\x09\x98\x37\x1b\x86\x35\xa5\xa4\x50\x92\xe3\x02\x53\x3e\x8c\x22\xb6\xe1\x38\x4d\x43\x98\xcb\x61\x4f\xbc\xe3\xf8\xb8\xdd\x7e\xb7\x83\x25\x0b\xc6\xe5\xb4\xfe\x96\xa6\x46\xa5\xa3\x2f\x50\xf1\x1a\xda\xfb\x39\xac\xc2\x0d\x67\xc5\x5c\xab\xe4\x89\x4b\x21\x32\x93\x5d\xc3\xfc\x8f\x17\xec\x4c\x8e\x7a\xdb\x37\xdc\xef\x44\x91\x04\xba\x11\xd5\xc7\x35\x51\x69\xe5\xf1\x31\xa9\xcd\xe4\xca\x07\x0c\xd1\x9b\x20\x07\xe6\x90\x94\x34\x0d\x91\xe2\x00\x1f\xd0\xd3\x64\x44\x2f\x05\xea\x24\xec\x0a\xea\x3c\x8d\xa6\x16\x50\xae\x18\xe7\x45\x78\x99\xe5\xbc\x65\x48\x23\x91\x62\x51\x36\x52\x4f\x5f\xc6\x50\x07\x70\xa0\xb8\xf8\x3b\x0a\xc9\xf9\x34\xf6\x63\xe2\xdf\xb6\x28\x63\x19\x3b\xd9\xb6\xc6\x14\x9b\xbc\x5a\xfd\xb4\x25\xb5\xf4\x21\x97\xd0\x23\xfa\xc6\xee\x72\xc6\x2b\x45\xe9\x25\x02\xc3\x83\x0b\xf8\xf1\x60\xdd\x4f\x46\x8f\xa7\x56\x5c\x7c\x1d\xa7\x31\x67\x42\x5c\x8d\x12\x16\xe6\x4a\x95\x78\x06\x7b\xfe\x59\x18\x18\xca\xc5\x33\xe0\xdd\x81\xe5\xda\x02\xff\x0c\x4c\x0b\xfc\x0c\xdd\xcb\x10\xbe\x9a\x50\xdf\xd6\x99\xaf\x7d\x23\x96\xd1\x24\x57\x82\xf1\x09\x3d\xb2\xe0\x2b\x20\x61\xbd\x14\x76\x76\xa8\xfc\x36\x24\xbc\x5f\x86\xd1\x3b\x58\x54\xf0\xc6\xa1\xf1\x00\x24\x7f\xe3\x2c\x59\x77\x49\x97\x24\x75\xff\x6d\x18\x5c\x87\xe3\xdb\x70\x6c\xa7\x93\x40\x96\x85\x16\xe0\x69\x99\x94\xc5\x3a\x30\x2a\x07\x26\x4c\x66\xa0\x46\x31\x29\x85\xad\xad\xe5\x94\xe8\x82\x37\x4c\x7c\xae\x43\xd8\x5e\x87\xfd\xc1\x18\x8d\x7a\x44\xcd\x53\x8e\x14\x87\x6a\x08\x38\xfd\xf8\xd7\xa1\x7a\xb2\x38\xb5\x73\x2a\x0e\x81\xc4\x0b\x0e\x84\x95\xc2\x96\x49\x59\xaa\x95\x70\x05\x9c\xb2\x6b\x08\x46\x37\xdc\x54\xb6\x57\x1c\xd0\x70\xe0\x9e\x08\xd1\x2f\xbc\x2c\xac\xcf\x81\x9d\x54\x35\x7c\x28\xa0\x83\xcc\xe7\x93\xcf\xa7\x2d\x74\x2a\xed\x33\xe3\xc8\xd1\xf8\xde\x65\x3b\xb7\xd8\x5e\x5d\x66\x49\xed\xe0\xf0\x9c\xd7\xc8\x3b\xf7\xac\x54\x70\x49\x11\x8b\x13\x21\x6a\x27\x19\x5a\x30\xf5\xe9\xf9\xe5\xab\x21\x4c\x0c\x53\x79\xf6\xa2\xc6\xf3\xd4\x24\xc9\x77\xbc\xa6\x30\x7b\xd6\x98\x37\xac\x57\x04\xa9\xc3\x51\x43\xe1\xa5\xa4\x9d\x28\xc7\xac\x07\x68\xf6\x62\x07\x38\xec\xd2\x68\xe4\x95\x84\x12\xc4\x9c\xaf\xc2\xde\x3a\x2c\x5e\xdf\xa4\x86\x95\x21\x92\x3c\x1b\x93\x66\xe2\x79\xde\xb0\xaf\x79\xd3\x14\x17\x84\x49\x5c\xc5\x19\x32\x9a\x5a\xbc\x97\xc4\x29\x3b\xc7\xb3\x02\xcb\x56\x66\x72\x40\x3e\x67\xe5\xdc\xe5\x30\x28\xa8\xf4\xce\x41\x54\x23\xd1\xd0\x45\x79\xd1\x1e\x8b\x32\x2f\x60\xd5\x1b\xcd\xbd\xaf\x0d\x29\x99\x67\xa4\xe6\x69\x21\x56\x96\x6c\x57\x59\xaa\xdb\x22\xab\x2f\x04\x13\x0f\x3c\xb9\x3b\xc4\x9a\x65\xa6\x46\xe5\x7f\xf1\x86\x1d\x28\xe1\x05\x55\x4e\x30\xdf\x78\xf7\x87\xac\x3f\x72\xbe\xcc\xfa\x8f\x95\x9a\xdf\xcb\x95\xe8\x83\xba\x29\x8e\xec\x51\xa5\x97\xe2\x28\x6e\xc5\xdd\x10\x18\xa3\xb2\x9b\x39\x51\xb7\xca\x07\xb3\xb7\x08\xe4\x3b\xe6\x04\xb9\xe3\x65\x48\x16\x1a\x86\xf6\xa5\x70\x13\x9b\x64\x22\x40\x68\x06\xf8\x0c\x77\xf2\x14\xcf\x25\x89\x6c\xfc\x6d\x28\xb0\xa6\x49\x27\x08\x72\xf6\x87\xea\x33\x9e\xcf\x00\x99\xc8\x6c\x80\x1a\xaa\xa8\x1a\x0f\x03\x58\x44\xa1\xad\xfb\x62\x2b\xf1\x0e\x41\x09\x81\x67\x80\x2a\x24\xde\x4d\xb2\x2c\xa8\xa5\x31\xb9\x9f\x1b\x92\x42\x8a\x23\x07\xf8\xa0\xb1\x0b\x8c\x8e\x2a\xbd\x7a\xde\x35\xb1\x94\x77\x4d\x2c\x19\x78\x30\xb4\xe8\x5f\xd5\xd7\x0e\xb6\xd0\xc5\xf3\x37\x07\x1b\xe9\xe2\x91\x22\x3c\x8d\xf0\x69\x64\x94\xfa\xb3\x56\x6a\x26\xf3\x8e\xe6\x9e\xcc\x0b\xf0\xc9\xa7\x01\x7e\x1b\x88\x54\x57\x3e\x0d\xf1\xdb\x50\xa4\x1a\x95\xbe\x54\x0b\x04\x9b\x0f\x30\xd1\xc5\x6c\xf8\x28\xeb\xc3\x47\x13\x8c\x6f\x9b\x60\x60\xf5\xae\xa8\x5b\x02\x60\x1e\x18\x18\x98\xd4\xca\x36\x2a\x94\x56\x3d\x4e\xab\x1e\xa7\xb4\x38\x30\xa5\x1f\x88\x4a\xc5\xef\x08\x7f\x8d\x23\x06\x83\x76\xcc\x8c\x89\x95\x0a\xa0\x51\x2b\xf2\xda\xa2\xba\x0c\x50\x5e\xd7\xb1\x5e\xd1\x48\xcc\xef\x61\xcf\xed\xd3\x6f\xb2\xe3\x63\xe3\xfb\x10\xbf\x0f\xe9\xbb\x71\xf8\xc0\x8d\xa5\x33\x36\xa8\x2f\x4d\x00\x52\xe1\x8e\x7f\x03\x81\x5b\xcf\x0a\x90\xc5\x59\xd7\xd0\xe9\xba\xc6\x0c\x31\x16\xe8\x6f\x15\xb1\x71\x9c\xaf\x43\xf7\x75\xe8\xc0\x36\xe0\xbd\x0e\xed\x3e\xbc\xfd\x88\x6f\xdc\xfb\x51\xbc\xfd\x86\x6f\xcc\xfb\x8d\xde\x8c\xf3\x8b\xbd\x25\x5e\x9a\x70\xc6\x1a\xce\x92\xe0\x84\x05\x1e\xd7\xc0\x0c\xd5\xbb\x04\x34\xd2\xab\xa7\xc4\xf3\x6a\x03\xd5\x7a\x30\x81\x15\x66\xdd\xc8\xcb\xbb\xb0\xf2\x12\x07\xde\xf2\x6e\xe6\xf1\x6e\x24\xdf\x78\x37\xf4\x58\x17\xd6\x2a\xb0\x5f\x1c\x88\x05\xeb\x86\x4e\x0e\xa9\xe3\xef\xa1\x13\x89\xfb\x2f\xfc\xdb\xb5\xb8\x43\x0b\xda\x76\x7f\x12\xef\xcc\xa1\xa5\x6c\xbb\xbf\x8b\xf7\xdc\x01\xd9\x35\x82\xf7\xdf\xb8\x94\x7f\x35\xcd\x18\x7f\xb9\x47\x2f\xc8\xfe\xa2\xac\x7a\x6e\x10\xb2\x58\x8c\x10\x34\xa6\x7b\x5e\xa2\x92\x24\xeb\x9a\x7d\xcd\x75\xcf\x63\xdb\xfd\x52\x53\x1e\xdd\xbe\x71\x0e\x84\x78\xaf\xf2\xfc\x68\x4c\xd4\xdf\x0f\x12\xdd\xf6\x99\x03\x23\xc2\x1a\x23\xc2\x0e\x8d\x08\xb7\x89\xfc\x46\x1e\x12\xe2\x02\x46\x2e\x83\x31\x88\xdc\x25\xe0\x3f\xf4\x80\x2c\xbb\x6b\x63\xc5\x25\x30\x18\x45\xb7\x70\x96\xdd\xa5\xed\xae\x70\x88\x9c\x12\x06\x22\x86\x02\x9b\x00\x04\x01\xef\x7b\x6b\x65\xf7\xd7\xee\xc2\x1c\xe3\xb5\xbb\xb2\xc7\x3f\xc3\x00\x6c\xba\x89\xfb\x2b\xfd\x16\xee\x27\xf4\xbb\x74\x71\xf8\x16\x34\x7c\x0b\x39\x3c\x6a\xf8\xe0\xbd\x74\x40\x86\x50\xc3\x07\xef\xb0\x31\xc7\x6a\xf8\x84\x75\x4c\x83\xe4\xef\x0f\x21\x91\x7c\x18\x26\x18\x9a\xd0\x1c\x80\xac\xc2\x5e\x64\x50\x7e\x31\xaa\x79\x60\x6c\x45\x19\xaa\xb0\x8c\xad\x28\x6b\xec\x06\x06\x2c\x58\xff\xc1\x7d\xc1\x4c\xfc\x89\xbb\xe6\x38\x1b\x87\x7a\xbc\x62\xef\x8f\x8c\xb3\xd0\x5f\x2b\x6d\x4a\x65\xe1\x8e\xc6\xf0\x19\xfc\x41\xfd\x49\xda\x2e\x08\x2e\xad\x23\x0b\xc5\x55\xad\x80\x3a\x05\x9e\xd8\xb0\x75\x21\x66\x02\x7e\x38\xd5\xf2\x9a\x93\x8d\x24\x4c\xf8\x1a\x23\xa2\xf8\x52\x60\xc9\x81\xa3\x0f\x81\x59\x08\xed\x52\xb2\x23\x16\x56\x12\xce\x6d\xda\xdb\x90\xc4\x55\x47\x3b\x9a\x2f\x51\xda\x17\x81\xea\x0f\x54\xd0\x67\x2e\xfd\x16\x3e\x0c\x04\x5f\xb3\x9c\xc4\x0a\xf7\x3a\x2e\x40\x50\x58\xf8\x47\x43\x17\xf8\xf9\x7c\xeb\x1f\x0d\xdc\xa2\x24\xd7\x0e\x78\xdc\xc1\x3c\x6d\x16\x27\xfb\x2c\xaa\x20\x6a\x29\x3d\xd4\xa5\x87\xbb\x31\x88\x79\x98\x13\x88\x45\x2c\xec\xf3\x23\x94\xc6\xe8\x09\xe5\x53\x55\x77\x5e\xd5\x9d\xcf\xef\x07\x6e\xd8\x0e\x5c\x4b\x05\x6d\xc0\x0d\x4c\xe0\xdc\x7b\x81\xdb\x91\xdc\x58\xa0\xac\x07\xab\xf5\x13\x3c\x1e\xc3\xbf\x38\x13\xe5\xd8\x6a\xf1\x41\x9c\x3c\x30\x00\xa7\xf2\xf8\x48\xe4\xa8\x65\x30\x54\x3d\x6a\x3d\x88\x82\xa3\xa8\x1a\xd9\xc2\x5d\xba\xb0\x46\x83\x18\x86\x71\x3c\x16\x55\x15\xc1\x6a\x5c\xf4\x24\xd4\x63\xb4\x6b\x82\x4f\x85\x10\x25\x40\x50\x5c\x49\xc3\xd9\xf1\x12\x3e\x8a\xee\xba\xf5\x69\xb3\xc8\x70\x02\x56\x55\x40\x36\xea\x60\xf5\x8e\xfd\x17\xc0\xd8\x22\xa3\xc4\x86\x6d\xce\xb7\xf0\x74\x59\x99\xdd\x39\x8e\x9e\x76\xeb\x60\xa9\xa6\xdd\x9a\xa6\x1d\x69\xf2\x00\x6a\x91\xc1\x15\x80\xca\x97\x21\xac\x99\xb1\x02\x9e\x74\x7e\xf5\x06\x3f\x50\x1f\x72\x76\x2d\x3b\x62\xcc\xf8\xaa\x75\xcf\x0b\x27\x00\xcf\x61\x08\x76\x7b\x10\xe8\x1a\x5d\xaf\x02\x01\x3f\xee\x0a\x85\x0c\x57\x63\x6f\x77\xb3\x8e\x13\x66\x1d\x55\x08\xb3\xc7\xc6\x1a\x32\x8d\xa3\x3e\xe1\x72\x71\xeb\x95\x6d\xba\xdc\xc0\x12\x0e\x50\xd1\x8f\x8b\x1b\x46\x3d\x3f\xe5\x08\x35\x89\x8d\xb8\x58\x61\x4a\x32\x82\x02\xad\xe1\x02\x36\x36\x92\x06\x3a\xc9\x68\xee\x4b\x43\x91\xbb\xe7\xe7\x81\xdb\xa3\x3e\xb8\xb3\x0c\xe1\xaa\xa4\x97\x71\x4a\x6e\x3e\xc4\xf9\xd2\x81\x16\x6a\x4c\x04\x06\x1b\x87\x79\xa6\xc4\x52\x0a\x8b\x2f\x89\x3d\x8b\x55\xd4\xa5\xee\x90\xb4\x95\x04\x34\x74\xaf\xcd\x99\x57\xf7\x53\x52\x99\x32\x99\xa9\x21\xcd\x14\xa2\xdd\x85\x58\x69\x33\x78\xa9\x0c\x94\x24\x14\xb7\xf7\x40\x81\x0e\x3c\xb7\x66\xdb\xb0\xef\xcd\xe6\x75\xcf\x9d\xc2\x5a\x08\x23\x20\x97\x7e\xf1\x80\xed\x56\x43\x32\x56\x12\xff\x6d\x0f\x35\x23\x29\xda\x5c\x05\x67\xbd\xcb\x72\xb9\x64\xb9\x85\xfc\x03\x53\x53\x10\x46\x1c\xc0\xcc\x36\xf0\x75\x23\xc0\x5d\x60\x7b\x44\x9b\x84\x65\xfb\xf0\x18\xb9\x02\x32\x3a\x12\xf6\x47\x86\xe0\x07\x53\x30\x43\xbb\x7e\xb2\x16\x6d\x08\x9a\x19\x0a\x7f\x6a\x5c\x2c\x9c\x3a\x99\x98\xd9\xa5\x49\xd2\xe3\x7d\x92\x9e\x4f\x86\xc7\xc7\xa3\x63\x5e\x79\x3c\x31\x01\xa0\xe1\x25\xb5\x8e\x97\xd0\x08\xec\xd8\x2b\x95\x63\x19\x27\x1c\xfa\xf6\x0b\x32\xad\xb4\x29\xac\xdc\x8d\xbb\x70\xaf\x03\x22\x6b\x57\x41\x29\xac\x93\x0c\x59\xd7\x76\xb7\x8a\xb6\x66\x6e\x05\x3a\x10\x55\x09\x90\x9f\xb8\xa6\x40\x6b\x1e\x92\xa8\xe1\x2f\xdc\xad\xee\x74\xb0\x94\x6f\xb8\x15\x23\xe1\x83\xad\x74\x83\x7f\xe2\x86\x60\xbc\x73\xb5\x0c\xdc\x56\x6b\x56\xab\x35\x32\x6a\x4d\xa0\xd6\xab\xac\x77\xc5\xf2\x15\x03\x8e\x48\x0c\x73\xf0\x6f\x6e\x5d\xb9\x1b\x7b\xbc\x52\x6a\x36\xd8\xd7\x57\xee\x37\x20\x99\xc0\xfa\x8a\x6d\x3f\x25\x43\x3c\x73\x3e\x31\xa9\x39\xc4\x3f\x43\xc8\xe2\x1a\xa3\x60\x6b\x78\xc5\xa8\xac\x82\x0d\x4d\x87\x9d\x5b\x6c\x80\xba\x30\x13\xe4\x66\xd7\xdc\x87\xb7\xd3\x68\x66\xb7\x73\xcf\x82\xef\xb0\xd0\x2d\x0c\xd9\x59\x35\x3f\xb6\x06\xd1\xf8\xa5\xcd\xef\x73\x32\x34\x0c\x5c\xb8\x71\x14\x34\x53\x16\x8d\x1f\xf4\xe0\x1a\xa0\x73\x31\x73\x52\xc8\x47\x23\x82\xf3\xa0\xa1\x9f\x94\xcb\x17\x5e\x30\x8b\x9a\x16\x91\x2b\xd6\x91\x59\x99\xb4\xf9\xaf\x9c\xd9\x70\xd8\x95\xdb\xdf\xce\xcd\xd9\x9f\x50\x7d\xbd\x71\x05\x3c\x7a\x29\x52\x33\xbc\x3e\xc9\xb9\x9e\xe4\x26\x99\xfe\xa6\x26\x26\x5a\x64\x9b\x4b\xb0\xe3\xca\x42\x63\x25\x14\x0b\xbf\xcb\xbc\x6f\x32\x1f\xfe\xe2\x9b\xed\x59\x64\x32\x69\xe6\xe2\xb5\x5c\xbc\x4e\x7e\xfe\x5d\xd3\xf3\x54\xdc\x1c\x5a\x12\x07\x33\x43\x65\xe0\x7a\xa6\x5e\x05\x72\xc5\xb0\x43\x64\xb0\x9d\xbd\x0c\x51\xb3\xcd\x1a\x5c\x1e\xb0\x0f\xaa\xd7\xe3\x48\xb2\x0e\xd4\x06\x08\x61\xb0\xe7\x81\x8c\x90\x18\x34\xa9\xa8\x36\xec\x65\x90\xd0\x76\x08\x3b\x23\xfc\xac\xe0\x07\xc4\x6e\xa1\x40\x81\xe5\x55\xc1\xb3\xb2\x95\x74\x80\x00\xc1\xdb\x75\x30\x44\xae\xe3\x1a\xd8\x0a\xb4\x1a\xbd\x46\xbd\x6d\x0a\x75\x5d\x0b\x2a\x76\x25\x7a\xb6\xa5\x9e\xa9\xfa\xce\x74\x7d\x5b\x9c\x88\x55\x7d\xf0\x76\x19\x5c\x79\x6b\xf7\x22\xa8\x24\xf0\x4b\x7b\xf2\x65\xe6\xde\x80\xb8\x71\x86\x10\xef\x2b\x92\x6e\x34\x77\x7f\x09\xd0\x75\x6f\x9d\x1b\xcd\xff\x5f\x22\xf5\x8a\x9d\xe0\x62\x7a\xe9\x58\x97\xc0\x05\x4c\x47\xbe\x37\xb2\xbb\x5f\x66\xfe\xa5\x7b\xf1\xc7\x7a\x12\xb0\x3f\xae\xe0\x8f\xc0\xd1\x79\xf0\x27\xb7\x9e\x73\x0b\xc4\x23\xd2\xfe\xd8\xe3\xaf\xb9\x75\x2e\x08\xc0\x0b\x4c\x2b\xdd\x73\xfa\xf6\x42\x7c\x7b\x17\x58\x17\x7f\x50\xad\xde\xd0\x1f\xda\xdd\xd7\xd6\x0b\xd2\x5d\x58\xf9\xe4\xdd\xdd\x1d\x1a\x30\xbf\x03\x9c\x9c\x03\x06\xee\xee\xce\x71\xf8\x51\x89\x9e\x01\x34\xa2\xd0\xd0\x07\xae\x7e\x87\x9c\xfe\x35\xf0\x47\x97\x39\x0b\xdf\x8d\xd7\xc1\x15\xe2\x1b\xb0\x7c\x0b\x0c\x46\xba\x53\x66\x1c\x30\x89\x26\xf1\xdd\x1d\xfe\x3d\x3e\x1e\x4c\x5e\x86\xf6\x1f\xc3\x63\x43\x23\xf1\x03\x37\x9c\x11\xc8\x5c\x40\x19\x0d\xc0\xdf\x7b\x57\x68\x5a\xa3\x25\x3c\x18\xee\x2d\xd3\xd8\xcd\x44\xd5\x61\x10\xa3\x11\x55\xe6\x7b\x30\x24\x91\x1e\xa3\xd8\x03\x6e\xa1\x7a\x8b\x20\x15\xd5\x25\x53\x2b\x55\xdb\x2f\xea\xea\x72\x27\xb3\xfb\x23\x28\x8f\xb6\x9d\xdf\xa1\x27\x85\x4c\x2d\xf1\x94\x37\x35\x48\x56\x1d\x22\x95\x2d\x14\xd9\xc4\x0b\x9d\x0c\xe3\x21\x81\x5f\x1e\x05\x41\x78\x7c\x1c\x4d\x82\x2f\xd1\x98\xb8\x82\x82\x79\xa5\xd0\xe5\xc0\x13\x48\xc8\xdf\x64\x52\xe5\x22\xe0\x0d\x65\x5a\xec\x05\x21\xa5\xa1\x6b\x32\x9d\x94\x61\x67\xff\x11\x68\x74\x64\x51\xf5\x38\x00\x08\x03\x92\x3e\x43\x4d\xd3\xf6\xb0\x2e\x2a\x05\xf6\x0a\x47\x09\xe4\x08\xe4\x22\x5a\xcc\x04\x46\x1e\x37\xa9\x53\xca\x34\x57\x27\x9d\x5d\x94\x9a\x96\x34\x04\x9e\xf6\x66\xa9\xba\x9c\xd9\x13\x18\x91\x6a\xd9\x58\x96\xa1\x42\x00\xd1\x5c\xaf\x41\x90\x21\x4d\xcd\xad\x57\x3d\xe7\x90\xaf\x34\x95\xc1\xb6\xa9\x94\xb0\xfb\x56\xd9\x8d\xbb\x20\xfe\xfb\x16\x77\xf2\x9a\x49\x2d\x6f\xc2\x4b\x62\xaf\x38\x87\xb5\x81\x8f\xed\x7e\x97\xb9\xb9\x44\x1c\xce\x2c\x54\xbd\xc8\xd7\x81\xf9\x52\x4f\x82\xb7\x41\xed\xcd\xab\x95\x33\xdf\xbc\x46\xaa\x57\x2f\x2b\xda\x14\x62\x08\x40\xd6\xa2\x14\x04\xdc\x29\xc9\x9d\xbe\x9e\xe2\x57\xb1\x7e\x81\x94\x8c\xb1\x0f\x71\x7f\xa4\x2b\x8c\x0f\xf6\x01\x53\xa4\xb8\xa1\x78\x69\x24\x90\x8d\xcd\x81\xb1\x86\x5f\xfe\x9e\xd2\x52\xa8\x86\x4c\xad\xf3\xc4\x30\xca\x65\x8a\x18\x00\x67\xe2\x02\xab\xe5\x16\xf7\x92\x80\x04\x45\x4a\x10\x88\x5b\xd6\x3e\x08\x97\xa2\xa6\x15\x72\x59\xf0\x06\xac\x30\x70\x0e\xf8\x19\x68\x7f\x36\x5d\x4c\x07\x7e\x49\xaf\xfe\x62\x0a\x0f\x8e\x35\x98\x2c\x25\x89\xb0\xf1\x2b\x99\xd1\x1d\xe1\xd9\x16\xb6\xb2\x00\x0a\x58\x5f\x43\x0b\x58\xbf\x11\xa4\xae\x82\x1c\xd6\xdf\xc6\x76\x85\x2a\x63\x65\xdf\xdd\xc1\xc3\x06\x1e\x90\x68\x6e\x48\x35\xfd\x4d\xe6\x6e\x48\x31\x0d\x0f\x08\x05\x7e\xa5\x2f\x48\xe5\xa9\x22\xbb\x80\x2d\x70\x81\x94\xc7\x6c\x03\xeb\xde\xa0\x16\x47\x2d\xcf\x15\x6d\x72\x54\xd0\xd7\x2d\xef\xa7\x9a\x6b\x1f\xd7\xe9\xaa\x9a\x24\x40\x72\xa0\x4f\xd9\x1f\x0b\x81\x9d\xab\xf1\xf5\x31\x90\xe7\x23\xeb\x4a\x34\x85\xc7\xe4\x68\xdd\x81\xe0\x64\x4d\x70\x54\x3b\x57\x52\xb6\xb8\x52\xb2\x85\x4e\x18\xca\x84\xe1\x7c\x0f\x0c\xdf\x7a\x48\xb6\x03\x94\xaa\xd9\x24\xb0\x3d\x47\x8b\xbb\x3b\xe8\x0a\x61\x7d\x03\x30\xab\xac\x1a\xb9\xd0\xf1\x0d\x90\xfb\x05\xb0\x1e\xd7\xad\xc4\x2c\x52\x83\xaa\xe8\x99\x60\x64\x0f\x91\xb3\xe2\xce\x4a\x80\x62\xdb\xa7\xa7\x43\x93\xac\xe5\xf5\x13\x3e\xda\x81\x81\x7e\x3e\x27\xbd\x49\x16\xcc\x86\xee\x00\xf9\x9f\x10\x37\x62\x54\xa5\x01\x48\x5f\x21\xed\x0d\x51\x07\x1a\x22\xb4\x45\x10\x79\x49\x37\xa1\x19\x57\x48\x25\x07\x4e\xbd\x74\x2c\x58\x9c\xb8\x1b\xf5\x0b\xe0\x71\xbc\xb8\x9b\xc0\xc3\x0a\x6b\x42\x15\x23\x4c\xed\x6f\xf1\x69\x89\xdc\xcd\xb7\x58\xe7\xda\x1e\xbf\xc4\xd9\xb7\x10\x1b\xfd\x75\xb0\x02\xe1\xe6\x2b\xfc\x72\x8d\x02\x0d\x3c\x5d\xe3\xd3\x59\x70\xd5\xbd\xf2\xb6\x5d\x8b\x92\x36\xe8\x1f\x40\x8d\xc3\x22\x38\x93\xba\xba\x5b\x43\x01\x7b\x86\xfc\xcd\xb7\x58\xd6\xf2\xae\xbc\x5b\xbb\xbf\xa5\xec\xd0\xd2\x25\xce\xbf\xcb\xe0\x7b\x8e\x3c\xcc\x11\x53\x9e\xcd\x97\xd4\xfa\x05\xb0\x3f\xc4\x46\x9d\x8b\xc3\x99\x17\x82\x4f\x7c\x47\xe7\x33\xe3\x9b\xc9\x39\x3a\xd1\x04\x37\x90\xeb\x1c\xb2\x5c\x08\x90\x9f\x05\xe7\xde\x8d\xfb\x4a\x6f\xd2\xcf\xe4\xb6\xec\xbe\x09\x5e\x11\x23\xf1\x8c\x40\x7d\x75\x7c\xfc\x62\xf2\x8e\x6a\x78\x01\x35\xbf\x83\x6a\x2f\x6c\xf7\xcd\xf4\xd5\xf4\x85\xf3\x6e\x32\xf8\xe3\x12\xda\x38\xd5\x34\xf1\x12\x69\xe2\x0d\x6d\xef\x2f\xfc\x77\xb6\xff\xe2\x34\xc0\x1c\xc7\xc7\x94\x2f\x78\xe7\x3f\x03\x76\xed\x0f\xeb\x06\x3f\x0f\xe8\x33\x50\xcb\xe0\x5c\x22\xe3\x7d\xd5\x7b\x47\xf4\x5e\x79\x57\x72\xeb\x3d\x62\x60\x76\xe9\x02\x0a\xde\xdb\xf3\x5d\x2d\x7a\x8b\x31\x2b\xb2\x69\xea\x7f\x09\x2c\x37\x32\x36\xb2\xb4\x97\x4f\xf8\xb4\xbc\x0b\x86\x3e\x27\x83\x01\x78\x1c\x01\xdb\x9c\x4f\x18\x7e\x7d\xec\x33\xf5\xf5\x73\x98\x4e\xbb\xc6\x21\x48\x4a\x07\x20\x93\x81\x3a\xd9\x24\xf6\x00\xe9\x3d\xcc\xae\x37\xb8\x6f\x3d\xed\x92\x52\x59\xc0\xf9\xa5\x50\xfc\x47\xb0\xa6\x67\xb0\xc5\xa4\x73\x7f\x86\x9b\x47\x0a\x7f\x4c\xf2\x9d\xb3\x56\xfb\x39\xd2\xff\x36\x37\xe6\x9c\x4e\xea\x08\xa1\x25\x30\x47\x03\xff\xc4\xaf\xa7\xb1\x2a\x6d\xe4\x0f\xcd\x34\x3c\x99\xaa\xd2\x86\x3e\xd0\x61\xf8\x3d\xf1\x47\xa6\x6f\xa4\xb9\x6f\x64\x8a\x70\xa8\x03\xe9\x5a\x40\x88\x86\x0a\x67\x88\x2c\x11\x62\x7e\x58\x75\x9e\x1d\xa1\x39\x0a\xf3\x72\x7f\x10\x50\xe0\x06\x75\x9e\xe8\x0f\xe9\xbd\xda\x2e\xfd\x91\x7c\x97\x67\x67\x7e\x75\x1a\x69\xea\x8c\xb4\x7b\x2c\xe9\x2e\x3d\x34\x64\xc6\xc3\x27\x2c\x85\xba\x0b\x18\x00\xc0\xf1\x70\xde\xc2\xca\xd4\xcf\xe8\x88\x97\x9b\xa6\xa7\x41\x49\x33\xae\xa4\x19\x07\xab\x9e\xe3\x97\x21\x7d\xc1\xa9\x99\xfb\x25\x0c\x8b\x68\x06\x46\x17\x76\x15\x78\x2f\x09\xc3\xae\x57\x7d\xe0\xa2\xed\x50\x67\x00\x70\x72\xd7\xc3\x0f\x53\x2b\xc2\x9a\x86\xc8\x37\xa2\xa7\x24\x16\x76\xf0\x53\x37\x73\x11\x6c\x6a\x4e\x7c\x00\x9a\x12\x41\x2a\x39\x76\x52\xb6\x00\x5f\x21\x1f\x65\x11\x2f\x90\x07\x76\x09\x54\x20\x37\x55\x73\x91\x31\x6d\x92\x7a\x00\x98\x01\x50\xd7\xad\x94\xe0\xb4\xc0\x38\x18\xb3\x49\x89\x56\x07\x95\x3c\x87\x1c\xe1\x10\xd0\xb9\x45\x03\x04\xed\x70\x2c\x29\x25\x88\x86\x19\xea\x8e\xec\x18\x5e\xb3\xb9\x9b\x08\x0c\x4d\xb1\x17\xb8\x5a\x0a\x2b\x71\xd1\xc8\x12\xe1\x77\x1c\xee\xc7\x22\x5d\x27\x9c\x42\x82\xe7\xa1\x51\x64\xac\xc6\x67\x00\xd3\x83\x37\x94\x73\xda\x11\xc0\xaa\xe6\x00\xb0\x91\x4c\xcd\x1c\x90\x9a\x99\xf1\xbd\x9a\x51\x35\x35\x5d\x8c\xa3\xe1\x26\x62\xb2\xe0\x86\xba\x14\xb6\xf9\x82\x83\x8c\x69\x97\x2d\xc9\x10\xcb\x06\x10\xac\x25\xbc\x90\xc5\xf7\xdd\x5d\x86\x65\x01\xd6\x3f\xa2\xc9\xc0\xfe\xb0\xc8\x1e\x25\x8a\x25\x43\x71\xf5\xee\xee\x04\x7f\x80\xa0\x30\xb7\x98\x0c\xa7\xb9\xcf\xed\xb1\xd0\xe4\x42\x8d\x56\xe1\x44\xce\x63\xfb\xd3\xc7\x58\xe9\x52\xf2\x6c\xaa\x3c\xed\x36\x61\x1d\xd0\xb5\x98\xd1\xea\x0c\x65\x82\x66\xf5\x6c\x42\x76\x66\xe4\xd0\x9d\x4f\x02\x83\x43\x5b\x89\x05\xb7\xa6\x1f\xb4\x62\x13\x15\xd7\x4d\x4f\x36\xb0\x67\xbe\x97\xea\xaa\x6b\x77\x7b\x7c\xbc\x15\x4a\x8c\x33\xd4\xa6\x00\xa1\x3e\x1a\x00\xc5\x06\xc6\x0d\x08\x3f\x09\x10\xda\x96\x18\x83\x13\xa1\x38\x6e\xdd\xba\xb0\xa1\x5c\x00\x8d\x3f\x3e\x7e\xd3\x13\x1a\x12\xd8\xa1\xaf\x44\x3d\x6f\x2a\x5d\x25\x70\x37\xaa\xa1\x95\xfb\x02\xe1\x69\xd1\xb7\x5e\xcb\xa3\x4b\x6d\x0c\xef\x7d\x27\xdd\x67\xd0\x74\x1e\x9e\x53\xb4\xb8\x3f\x9c\xcc\x6d\xa5\x9f\x15\xfd\xc6\x51\x84\x5e\x9d\x99\x0a\x5c\xf7\x9d\x7d\x1b\xa4\xb0\x17\x72\xf7\x22\x60\xd8\xc9\xa1\xcb\xc8\x8e\xcf\xe4\x67\x4c\x7c\x69\xce\x1d\xf2\xbd\xb0\xcd\x24\x4a\x91\x3b\xc7\xec\xc6\x3d\x27\xe5\x0a\x36\x33\x0e\x89\x1a\x4f\xad\x17\x68\x82\xdb\x5a\xb5\xd6\x60\xea\x6f\x65\xa5\x58\x75\xd9\xdd\x9d\x81\x24\xf7\x19\xc0\x69\xfb\xf7\x03\x2a\x32\xed\x60\x33\xc7\x9d\x1c\x86\x8e\xd1\x6e\x74\xe5\x6e\xdd\x33\x17\x06\xca\x85\x8d\xde\x3d\x77\x5f\xb8\xef\xdc\x67\xb0\x73\x47\xb0\x53\x93\xaa\xee\xbd\x52\xa0\xae\x0c\x05\xea\xa6\x62\xc4\x16\x07\x15\xa8\xb0\x85\x01\xdb\x32\x43\xfd\x0b\xfc\x81\xd6\x07\x87\x94\xa2\x51\xf0\x0a\x72\x56\x4a\xcf\x2b\x31\x4e\x3c\x48\x70\x54\x72\x62\x01\x9f\x01\x45\x05\xf4\x5d\x29\xf5\x91\x05\x18\x28\xc9\x2a\xb0\xa9\x9d\xdc\xc7\xc2\xb2\xa6\xa1\x24\x8b\x49\x83\xaf\x86\x25\xf2\x2b\x2a\x57\x63\x20\x18\x4b\x91\x6a\xea\x2c\x51\xaf\xbc\x0d\xce\x04\x53\xb9\x53\xe4\xe6\xbd\xc9\x21\x30\x45\x6c\x4c\xf1\x8d\x36\x47\xc5\x49\x0d\x60\x3d\x4a\xef\x87\xb4\x4f\x01\xd3\x38\xd2\x04\x74\xf1\x99\xd0\xc1\x80\xe4\x16\x87\x18\x4a\x82\xf6\x11\xa2\x4c\x41\x6e\x57\x87\x4e\xf9\x29\x7e\x31\x32\x9e\x32\xda\x5e\x88\x9c\x61\xc6\xfd\xa3\xdf\x98\xed\x05\x3b\x31\xcf\x62\x80\x51\xa6\x77\xb7\x76\x42\x51\x69\x5e\x85\x2a\x1d\x55\x97\xea\xc9\x62\xf2\xb1\x66\xdd\x6b\xd4\xa7\xb2\x8a\x6a\x91\xf5\xad\x3e\xe8\x06\x6c\xd3\x84\x30\x63\xda\x38\x07\x37\x97\x2f\xb3\xfe\x09\x6c\x2c\x97\x4c\x70\xdf\xb9\x38\x0a\xaa\x4e\x86\x37\x61\x1e\x26\x09\xa0\xe4\x41\x16\xd2\xb9\x25\x6c\xa7\x40\x48\xee\x0f\x3f\x1f\x48\x13\x2a\xf9\x66\xfb\x33\xf8\x0b\x54\xbf\x8f\xa2\x22\x3d\x32\x7c\x9c\xef\x5c\x23\x5c\x4c\xb8\x8f\xc2\xa6\xc9\x23\xf1\xd6\xb1\x37\xea\x96\xa6\xdd\x95\xdd\x57\x81\xe6\x66\xa6\xf9\x44\x37\x00\xc9\x21\xf3\x6a\x16\x16\xc2\x7d\xda\x30\xf7\xa0\xae\x5b\xb9\x53\xab\x6e\x04\xf2\xcf\xd0\xc9\xbb\x16\xfa\x32\xe6\x95\x53\x90\x68\x5d\xb7\xf6\x68\x7f\x8c\x0c\x80\x33\x4f\xa9\xaf\x6b\x36\x4b\x80\xe3\x7e\xe9\xbe\xb6\xa0\x1b\x00\x62\x4a\x5e\x88\xd0\x9d\xd2\xee\x63\x6b\x36\xe2\xc4\xf4\x87\x63\x2d\x16\x25\xff\x0e\x9d\xa0\xec\x02\x37\xdc\xe5\xd2\xac\x8e\x9b\xf6\x15\xe3\x3c\x6a\x5a\x57\x90\x5e\xaf\xfa\x8c\xca\xfc\x3c\x88\x61\x8c\xca\x20\xdb\xb9\x79\xf4\x20\x2b\xb9\x44\x0e\xc7\x0f\x21\xf9\x14\xff\x10\x06\x18\x69\x6b\xc2\x51\xa4\xe7\x11\xbd\x44\x13\x9c\xb9\x69\x14\x00\x05\xe4\x13\x86\x29\x0c\x5f\x0c\x5e\xa1\xad\x3f\xf2\x00\xbd\x73\xd6\x71\x53\xb7\x03\xff\x71\xb4\xd2\x68\xea\x44\xf6\x73\xd9\xae\x32\xce\x60\xbb\xe6\xa4\x51\xb9\x5f\xea\xdc\xa6\xfc\x69\x7f\xa8\x4c\x4c\x76\x35\xbf\x17\x55\xee\xf7\x8e\x72\x30\x59\x32\xeb\x71\x8f\x3c\xc3\x66\xc8\xb5\x4a\x02\x9d\xba\xad\xfa\x15\x55\x2b\xd7\xd2\x73\x7e\x90\x68\x6b\x43\x93\xf2\x10\xb5\xd6\x59\x72\x57\x43\x2c\x54\x37\x3f\x86\x8b\xb8\x2c\xda\xac\x78\x09\x68\x34\x27\xc2\xa3\x92\xa2\x4c\x6a\xad\x02\x7d\xcb\xaa\x03\x69\x71\xe0\x95\xf5\x88\x5b\xe8\x74\x74\xc4\x19\x3a\x70\xd9\x69\x22\x6c\xd8\x9d\x51\xdd\xca\xff\xe9\x6a\xe0\x76\x9c\xd4\xe9\x84\xf4\x57\x3c\x3f\x1a\x3c\x1a\xba\xc3\x47\x98\x02\x4b\xf5\x70\x22\xa5\xfd\x65\x58\x02\xaf\xe5\xe0\xa1\x31\x5c\x4a\x46\x70\xdc\x75\x9c\xdf\x8c\xb6\x57\x7b\xf3\x47\x69\x1a\x83\xd4\xe3\xc2\x77\xb9\xb6\x5c\x61\x65\x39\x71\x37\xb6\xc7\x68\xba\x94\xa1\xe5\x19\x06\x01\x20\xc3\xa5\x0c\xed\xce\x50\x7f\x49\x66\x4b\x99\x0b\xad\xe3\xda\x60\x81\xb6\x36\x1b\xc7\x7b\x4b\x49\x78\x58\xe8\xa5\x44\xa5\x72\x5c\x4b\xe6\x62\xd9\x50\x48\x0f\x95\x6b\x6d\xcc\xcf\x45\xdb\x0a\xd0\x46\xb8\x71\x00\x72\x49\xad\x07\x40\x20\x6a\x3d\xc8\x6b\x3d\x28\x1d\xae\x7b\x90\x55\x64\xe1\x67\x9d\x97\x4c\xb9\x64\x4e\x32\xe7\x3a\xe9\x52\x5f\x25\xe5\xa8\x99\x66\xb5\xf4\x97\x48\xc7\x5e\x7f\x15\xf5\x40\xc7\x9c\x87\x91\x8f\xeb\xa6\xa2\x53\x1e\x09\x62\x44\x8d\x37\xc2\x26\xc1\x4d\x7b\x61\x1e\x91\xdc\x9d\xb9\x03\xf7\x97\xcc\xd4\x93\xb6\xe5\x57\x2b\x22\x37\x97\xb6\xcc\x87\x30\xc9\x7c\xf5\x15\xae\x97\xa8\x21\x3d\x63\x89\x28\xc9\x0a\xf6\x3d\xe0\xdd\xb2\x65\x30\x1f\x58\xf7\x7a\xc5\xf3\xfb\x57\x3c\xd3\x2b\xbe\x7c\xc0\x8a\x8f\x3f\xbe\xe2\x4b\xd7\xa0\x26\x1f\x59\xf1\x19\x8c\x8c\x5e\xed\x51\xdb\xb2\xbd\xda\x1b\x80\x5a\x00\x09\xe2\x2e\x34\x9b\x72\x8f\x39\x05\x22\xf1\x8c\x8e\x9c\xce\xab\x03\x76\xde\x6e\xda\x91\x59\x95\x25\x5c\x86\xea\xbd\x19\xbc\xce\xc9\x0b\x98\x12\xc6\xcc\x42\x76\x78\x2b\x19\xe2\x33\xa1\xdb\xbb\x0d\x50\xde\x02\x4e\x36\x07\xd9\x20\xc3\x2f\x17\xf0\x03\x5f\x6e\xe0\x67\x34\x47\xe6\x51\x03\x08\xe5\x1b\xb1\x28\x15\x50\xb9\xdb\x6a\x75\x8f\x26\x29\xd0\x83\x0a\xf6\x04\x9e\x14\xc6\x0b\xd3\x28\x45\x6c\x23\x20\x64\xc2\x9c\xc7\x0d\x6d\x15\x9c\xb9\x9b\xe0\xd6\x5d\x04\x97\xee\x75\x70\x01\xac\xea\x8d\x46\x80\x29\x0d\x03\x1a\x6b\xdd\x42\xc3\x89\x25\x9a\x4e\xb8\x57\x02\x76\xdd\x60\xe8\x86\x72\xb2\x91\x69\x97\xb0\xb0\x70\x1b\x62\x82\x36\x58\xd3\x13\xb0\xac\x26\x5b\x78\x70\xb2\x35\xfd\x07\x64\xbb\xd2\x0a\xe2\xd0\xfc\xab\x3b\x14\xd4\xca\x94\x7a\x3b\x38\xaf\xaf\x4c\xf4\x65\x0a\xc5\xf1\x83\x5b\xeb\x89\x18\xfb\x6d\x50\x00\x71\x3e\x0b\x96\x5e\x0c\xa3\xbb\xed\x6e\x9d\x33\x71\xc6\x7b\x3b\x79\xdc\xcd\x8f\x8f\xaf\x3d\x4f\x64\xbc\x0c\x42\x67\x05\xc3\x1d\x39\x1b\x18\xed\xc4\x59\x40\xef\x35\x25\xbc\xec\x5e\x3a\x17\xdd\x0b\xe7\xa6\x7b\x63\x83\x4c\xa5\xa3\xc5\xdc\xf4\x83\x73\x94\x92\x2b\x81\xa0\x7a\xb8\x41\x45\x2d\x9d\x50\x66\xce\x1a\x08\xa5\x6f\xb0\x62\x17\x28\x30\x3f\x83\xa9\xf8\xce\x7d\x61\x83\x14\xf6\x0c\xa7\xda\x1b\xf8\x81\xa9\xf6\x3e\x78\x05\x10\xff\x15\xbc\x01\x88\x9f\x07\x67\xdd\xf7\xde\xb6\xfb\xd7\xd8\x7a\xde\x7d\xde\xbf\x9d\xe4\x77\x77\x55\x03\xd6\xb6\xfb\x1e\x7a\xf3\x97\xdd\xbf\xf5\x80\x4b\x98\xf4\x4e\x40\x56\x9a\x84\xdd\x95\x13\x75\x37\x4e\xd2\xc5\x63\x10\xab\x8e\xa2\x57\xee\x1b\x90\xfb\x2e\x01\x66\xf7\x02\xff\xdc\x10\xa2\x50\x52\xa7\x19\x0d\xc9\x68\xe8\x21\x73\xd1\x14\x68\x22\x55\x5a\xe4\xe4\x01\xd0\x27\xe3\xa0\xee\x64\x80\x1a\x4c\xe4\x5d\x9f\xea\x28\xc0\x9b\x9c\x45\x71\x11\x9b\xf1\x97\xef\x73\x74\x8c\x03\xdc\x18\xba\x42\x21\x34\x7c\x0a\xd3\xd5\xd7\x03\x90\xd7\x03\x23\x6f\x89\xa2\xc8\xb0\x91\x39\x0b\xaf\x4c\x66\xea\xcc\x90\x36\x80\xf4\xd4\x2d\x41\x94\xe0\x63\xcd\x38\xc6\xe5\x60\xf0\x07\xa5\x95\x43\xd1\xc3\x44\xbc\x37\x6c\x2e\x10\x87\xf5\x15\xff\xdd\xd8\xac\x94\x99\x89\x38\x6e\x43\x7f\x11\x86\x28\x41\x96\xda\x70\x4c\x33\xf8\x97\x47\x97\x06\x68\x86\x4f\xb6\x6d\x92\x8c\xcb\xbd\x33\x3a\xc3\xcf\x35\x14\xee\x0d\xd0\x14\x09\x3c\x38\x00\xc2\x4b\x62\xed\xc0\x60\x0b\x2f\x8c\xf5\xbc\x71\x60\xa7\x4b\x2b\xa1\x4d\x1c\x41\x46\x68\x94\x6d\x89\x52\xf0\x08\x3b\xe2\xf1\xb1\xa8\x0d\xb0\x24\x9c\x27\xc2\x46\xd0\xcc\x30\x00\xd1\x33\x0b\x5e\x80\x28\x8f\x64\x03\x86\x5f\x99\x31\xc5\x16\xcc\x96\x0a\x57\x51\xb0\x12\x6e\x22\xa8\x19\xdc\x08\x4f\x8c\xb5\x5b\x5a\x0d\xc2\x6e\xc4\x9d\x2b\x7a\xd7\x61\x12\x2f\xc4\x79\xa1\xf0\x0e\xe5\x2a\xc6\x8f\x5e\xed\xb5\xc1\xad\xbb\x00\x0b\xa5\x74\x2b\x3a\x6c\xa0\xa9\xc3\x27\x03\x20\xaa\x8f\x41\x58\xdc\x04\x23\x78\x5e\x80\x54\x7a\x0d\xff\xae\xe0\xdf\x16\xfe\xc1\x1e\x03\xd4\xe2\x97\x10\x76\x81\x05\xaa\x88\x48\xa7\x70\x63\xfa\x66\xc3\xf4\x96\x13\xaf\x65\x6e\xd7\xbb\x80\x8e\x4a\x17\xcc\xba\xc5\xb3\x1f\x0b\x63\xd0\xa2\x22\xac\x4a\x1e\xb8\xc5\x4e\xc4\xc4\xda\x3c\x4b\x57\xc9\x03\x9d\x82\x6f\x2b\x17\x63\x0b\xa0\x73\x7f\x09\x6d\x9f\x31\x0b\x9e\x81\xeb\xa2\x89\x50\xe2\x21\xde\x85\xaa\xf9\xc5\x2d\x67\xe6\x64\xbd\xaf\xea\x1b\x52\x8c\xa5\x53\x3c\x5f\x90\x07\x79\xa9\x38\xc8\xa3\x69\xa0\x1c\x77\x70\x9a\xf8\x80\x1c\x6a\xe8\x06\x1b\x22\xaf\xbf\x87\xb5\xb1\x0e\x30\xf4\x1d\x96\x5c\x63\x49\x8a\x23\x89\xa1\xf9\x1e\x56\x7a\x05\xa5\xe9\xdc\x30\x70\x84\xb3\x14\x56\x34\x03\x1a\x35\xa7\xfe\x42\xde\x9a\x6f\xf8\x3d\x35\x2d\x48\x71\xf0\xe9\xc9\x53\x24\x5f\x30\x03\xb0\x3a\xf5\x26\x6a\x5d\xe0\xf4\xbf\xa6\xb9\x0f\x75\xe7\x19\x7f\x30\x94\x57\xb5\xba\xb7\xb5\xba\xcf\x2a\xab\xcb\xc9\x68\x8a\xee\x43\x32\xc1\x1f\xc8\x66\xaf\xb0\xd9\x2d\x05\x0e\x12\x6d\x6b\xe7\x5d\x54\x5f\x75\x2a\xd2\xda\xb1\xdd\x7d\x22\x82\x8e\x83\xad\x21\x6b\x5d\xa5\xba\x09\xe2\x4a\xdd\xc3\xb0\x49\x33\x72\xb0\x41\x3d\x15\xed\x33\x42\xbb\x3f\x94\xec\x19\xc4\xfa\x86\xd5\x1d\xb9\x5c\xd3\x6f\xeb\xbc\x91\x38\xf9\x32\x9b\xa6\xde\x2f\x74\xb6\x3f\x49\xa7\xa9\x03\x8f\xf5\x12\x2f\x58\x33\xfc\xcf\x94\xdf\xdd\xb1\x29\x10\xa3\x67\x24\x7b\xbe\x12\x1c\xbb\xed\x3f\x13\x51\xc4\x31\x51\x7e\xf3\xcf\x0d\x79\xe8\x1d\x3b\x10\xf4\x42\x3b\x9b\xa2\x30\x38\xe3\x08\x13\x57\x30\xf1\x29\x47\x98\xd0\x92\xd0\x8c\x55\x6b\x60\xed\x5d\x1d\x63\x12\xe3\xf0\xd5\xc3\x60\x29\x86\xcf\xe8\xc7\xb5\x4e\x75\x8f\x48\x69\x8f\xc1\x4c\xe7\x1c\x7a\x4f\x6a\xce\x3a\x45\x90\x74\x73\x27\xec\x96\x2d\x4a\xa0\xa8\x1b\x7b\x05\x48\x61\x61\x37\xf7\x92\x6e\x89\xee\x6b\x45\x37\x06\x8e\x21\xab\x2b\xa8\xe4\xb1\x65\x59\x53\x57\xc5\x35\xa0\x32\xb3\xd1\x07\xe9\xa5\xfe\xb3\x2e\xc5\x1e\x40\xd9\xde\x25\xe0\x76\xa8\x4b\x4e\xa1\xba\x94\x7b\xd0\xff\x86\x46\xeb\x4d\x3b\x7e\xd3\x9a\x13\x56\x4b\x5c\xf0\x52\x70\x50\xa2\x60\x04\x02\x2d\x1f\x4b\xf7\x7e\x0c\xc4\xf3\x1e\xd5\xad\x25\x22\x87\x9e\x62\xdb\xb5\xb2\xc9\x60\x1a\x4f\x4a\xbf\x9c\xc4\xc8\x83\x95\x28\x04\xff\x42\x56\x4b\x65\x90\x3a\xf8\x8c\xbe\xbd\xc0\xb4\xa1\x77\x9a\x3a\x4c\x83\x2d\x2d\x28\xc7\x58\xb4\x98\xc4\x7e\x3c\x29\xc6\x85\x17\x44\x76\xa8\xac\xae\x13\x3c\xb8\x9f\x31\xd7\x33\xdc\x40\x0b\xbb\x7a\x45\xd8\x0b\x7b\x6e\x93\x59\x76\x42\x62\x93\xe1\xef\x5b\xeb\x39\x19\x3b\x8c\xe9\x4c\x0c\xa6\xf7\xd7\x46\xcc\x9e\xef\x2d\xcf\x74\xd2\xb1\xf0\x75\x84\x56\xa6\x5e\xee\xe7\xb6\x33\x12\x4d\x7d\xff\x2f\xef\x9b\xcc\xfe\xd4\xaa\x5e\x4d\xe7\x5f\x56\x37\xb0\x40\xba\x85\x51\x43\xf0\x2b\x94\x82\x84\xca\x2a\xb6\x95\xe7\x92\x9f\x72\x0a\xf5\xae\xd7\x64\x9d\x78\xd4\x3c\x68\xff\x87\x1b\xe4\x6e\x5a\x6f\xf0\xab\x1a\x1b\x25\xaf\xae\x30\x9c\x67\xeb\xc9\xe2\x0a\x0b\xc3\x0d\xb6\x69\xa6\x56\x5b\x14\x71\x6d\xd2\x67\xa6\xc1\x9c\xe9\x15\x9d\xa3\x59\x4a\x59\x73\xdf\x4b\x82\xb2\xe6\xbe\x57\x98\x6e\x87\x0c\x36\x09\xd3\xed\x90\x21\x0f\x24\x47\x8f\xa4\x18\xcd\x67\xff\x64\xe5\x1e\xb7\x9d\xb2\x9b\x75\x7f\xa2\x68\x51\x68\x98\x1f\x0c\xfb\x55\xd9\x35\x1a\xb2\xac\xa7\x4d\x3e\x99\x07\xa6\xf6\x7b\x6d\x77\x57\x2e\xd3\x9f\xd6\x50\x11\x7c\xc9\xd1\x7f\xd3\xe1\xdd\x02\x1d\x4b\xba\x09\x3c\x2d\xc9\x0f\x31\x86\xa7\xb0\x65\x65\xa3\x65\x64\x15\x3c\x4f\x7c\xca\x8c\x48\x7a\x39\x2c\x78\x54\x5f\xdb\xb4\x45\xee\xdb\x00\xcd\x52\x2c\xcc\x29\x55\x0d\xfd\x06\xa3\xf5\x40\x4d\x11\x0b\xd6\xee\xc6\x70\x36\xde\xd3\x8d\x55\x6e\x74\xda\x5b\x53\x79\x4e\x9a\xfe\x9c\x86\x49\x87\x8c\xab\xe8\xf1\xca\x7b\x92\x3c\x06\xed\x71\x16\x39\x07\x3c\x5a\x43\x73\x58\x42\xe8\x49\xe8\xc0\xb7\x1c\x68\x1d\x83\x11\x88\x6c\x3c\xbf\x47\xfc\xe4\xf4\xe6\x0a\x25\x21\x59\x7d\x1a\x5e\xa9\xe1\x9e\xe6\x8c\x0e\x89\x41\x6a\xa6\xfd\xd8\x70\x30\x15\x1d\x30\x48\x3c\x50\xab\xaa\x74\xba\xc3\xe7\x16\x85\x5a\x95\xc3\x48\x8e\x8c\x15\xf1\xf5\xfe\x3e\x66\x2c\x48\x73\x7e\x97\xa6\x5b\x3b\xd2\x40\x18\xc3\xb2\xf2\x6f\x8f\xeb\x67\x2b\x6e\x6c\xce\xd8\xf9\xee\x9e\x1d\xa6\xde\x98\xf0\xfc\x96\x07\x1c\xa8\x68\xc4\x05\x13\xd7\x3c\x8c\x6b\x63\xd8\x76\x56\xd2\x05\x24\x77\x2b\x73\x5e\x5a\x74\xc0\x2a\x75\xe3\x7e\xde\xd8\x54\xbe\xff\xf8\x26\x5e\x53\x0b\x70\x1b\xed\x92\x51\x2f\x30\xf0\x33\xb1\xac\x30\x9a\x46\x49\x1d\xb6\x5b\x0e\x93\xe2\x6e\xda\x38\x4b\xc2\x2f\xed\x9b\x75\x0b\x61\xa3\x0c\x68\x8c\x8b\x56\xf1\x0e\x46\x8c\xdd\x21\xe2\xe9\x4e\x29\x83\x60\x08\x51\x1b\x03\x69\xe4\x7d\xd3\xfc\xb6\x5f\x7d\x47\x08\xfb\x18\xe1\x14\xb1\x97\x77\x0d\xc8\x91\x33\xb0\xfb\x95\x8d\x46\x3c\x6d\x39\x41\xac\x9f\x4e\xc1\x14\xfc\x1a\x23\x78\xee\x0f\xd7\xa1\x73\xab\xd8\x55\xf4\x0a\xfb\x52\x35\x9e\xf5\x73\x77\xd8\x8f\x6d\x44\x2a\x8e\x8b\xed\xff\x68\x8c\xcd\xeb\x7b\xc7\x26\xd6\xa7\x64\x06\xba\x4b\x44\x77\x6c\xa2\xbb\x3c\x88\xee\x7d\x2c\x02\xf5\xac\x61\xcf\xe2\x1e\xf1\x4d\x79\xbf\x74\xd2\x3d\x23\x23\x32\x1e\x9f\xde\x30\xff\x7e\x84\xc5\xf7\x1d\xe7\xc5\xde\xd7\x18\x21\x75\x1f\x93\x84\x0e\x23\x9a\x40\x93\x09\xaf\x06\xb6\x3e\x43\x38\xc6\x14\x36\xb8\xed\xdf\x98\x69\xf3\x4f\x0a\x0c\xf2\x39\x23\x69\x0f\xe9\xb8\x96\xde\xe8\x2a\x2c\x2d\x6e\x6a\x96\xb0\x21\x19\xaa\xb3\x9f\xbc\xba\xc2\xa9\xe5\x42\x2f\x61\xfd\x35\x35\x2b\xa4\xf3\x7d\x10\x74\x7d\xa0\x54\xac\x4d\x68\x54\x15\x97\xff\x51\xc5\x07\x04\x66\x69\x45\xd6\x56\x35\x9e\x6b\x61\xb5\xca\xe9\x52\x5a\x9d\x4b\x77\x86\x2f\xb3\x2e\x3a\xea\xc1\x8e\x8d\x11\xc9\xad\xd9\x0c\x0d\xb3\xd0\xd6\x0b\x0d\x91\xc2\xb9\x4b\xef\x8e\x78\x77\xc2\x39\x32\x6e\x64\x6b\xc2\x45\x1c\x4b\x04\xad\x3a\x1b\xab\xc3\x27\xe0\x36\xc2\x32\x1c\x12\x20\xba\xfb\xec\xed\xac\x1a\x7f\x6b\xe8\xc0\x4c\xb2\x86\x1e\xa3\xf3\xe7\xe6\x46\x85\x33\x43\x05\x18\x11\x33\xdf\x9c\x1e\x3f\xdd\xa7\xda\xc7\x1b\xa0\x12\x7d\x76\x1a\x5b\xc8\xa2\xe2\x9d\x03\x3b\xc5\xf4\x46\xc0\xb8\xcc\xd0\xa6\x16\xfe\x2c\x31\x10\xcd\xba\xf2\x2c\x42\x67\x35\x64\x4d\x81\xdd\xd8\x20\x05\x1f\x3b\xce\xf2\x74\x8d\xae\xaa\xd5\x85\x0e\xe8\x87\x34\x5b\x42\x49\x7b\x5a\x48\xf3\x1e\x67\x65\x26\xa3\xb1\xad\xb3\x69\x7c\x99\xdb\x7e\x61\x44\x0a\xb5\x6c\x6a\x5e\xdf\x7b\x50\xa5\x61\x92\x72\x64\x9a\x26\xd5\x41\x25\x39\x7b\xcb\xfb\xe6\x7e\x47\xaf\x93\x9f\x71\x1d\xfc\x8c\x47\x80\xbf\xe2\x09\x60\xdc\x7b\xc7\xb6\xc0\x17\xf4\x3e\xd3\x32\xe0\xed\xc3\x74\x06\x18\xc3\x0d\x63\x4c\xa3\xae\x61\xfb\xb0\x22\xb9\x28\x92\x63\x11\x71\xb9\xe1\xe2\x61\x05\x4b\x51\xb0\xdc\x91\x52\x80\xb3\x7c\x93\x3d\x5c\x05\x93\x05\xad\xe1\x27\x61\x63\xf1\xad\x38\x58\x45\x32\x18\xec\xdd\xdd\xaf\xc0\x7f\x23\x3a\xa0\xa5\x8c\x54\x3d\x2c\x7d\xb8\x46\x38\x14\x20\x86\x35\x6d\xc2\xef\x35\x06\xbb\x66\xef\xf9\x73\x3d\x69\x68\x24\xfd\x5a\x67\xcb\xc5\x58\xbe\x34\x2f\xbc\xfa\xc4\xcc\xf1\xab\xb8\xc2\xe3\x77\xe3\x84\xf8\x4b\xb6\x6f\x24\x99\x9a\x46\x92\x03\x32\xfc\x22\x8b\x2e\x3c\xf5\x47\xab\x2e\xf4\xaf\xe6\xa7\x8c\xbc\xc2\x69\x15\x7c\xdb\x71\xc9\xe6\x0b\xa3\x58\x60\x54\x05\x94\xd6\x70\xd1\x75\x7e\x16\x05\xb4\x1c\x8d\xee\x84\x46\xa9\x9c\x62\xcd\x94\xd5\x24\x34\x3c\x29\xff\x1b\x70\xfd\x8c\x70\x49\x88\x86\x90\x4f\xb5\xa8\x6d\x72\xf6\x1b\xfe\xee\xbf\x86\x90\x0a\x15\xfb\x78\x68\x6b\xf8\x1b\x56\xd7\xf6\xaa\x88\x8e\x8f\xa7\x34\x6c\xbe\x88\xf2\x93\xe3\x4d\x47\x74\x05\xe3\xd0\x35\x02\x5c\xb8\x5c\xdc\x11\x6a\x7a\x49\x1e\xa8\xef\xa4\xaa\x6f\x40\xf5\x59\xd2\x8b\x54\xc4\xfd\x49\xa9\xaa\x19\x6c\xa5\xaa\xf2\xd1\xbc\x8a\x98\x98\xba\x14\x36\x09\xb2\xd5\x5a\xfa\xe1\x81\x2d\xa5\x2d\x50\xa6\xf2\x6e\x53\xdc\x62\x54\xb9\x21\x7a\x52\x88\xe7\xa3\x8a\x70\x92\x9f\x44\xe3\x9b\x33\xb2\xcd\x99\x5d\xdd\xb0\xd1\xcc\x87\xf7\x91\x74\x64\x6c\x00\xba\xdd\x68\x88\x31\x44\xb8\xb0\x9a\x46\x73\xf5\xe1\x58\x98\x40\x5a\xb9\x13\x74\x7e\xe8\x38\x64\xa4\xec\x8d\xba\x78\x58\xda\x3f\xb1\xc9\xd4\xc2\x22\xf3\x6a\xfc\x36\xac\xbe\x61\x36\xf9\x40\xc6\xc4\xa9\x30\xbe\x1e\xa1\x4a\x52\xf9\xcf\xe2\x89\x02\x45\x83\xc2\x86\x23\x48\x76\x1c\x17\x9b\x79\x0e\x55\x92\x7d\x33\x36\x22\x9b\x20\x13\x67\x6c\xa0\x6a\x12\xf7\x54\x9d\x4e\x20\x84\x55\x7a\xad\x79\xad\x72\x09\x46\xe3\xe4\xb4\x72\x65\x4d\xa0\x3d\x68\xd3\x96\xcd\x23\x30\xc9\x9c\x20\x38\xff\x9b\x2d\xa0\xbf\x25\x53\xb6\xc4\x58\xd9\xd8\x44\x97\x33\xea\x86\x4d\x74\xd1\x37\x8d\xae\x42\xd5\x56\x60\x6d\x4a\x47\x61\x18\x26\xc9\xc9\x50\xdd\x54\x05\x03\x37\x43\xbc\xc2\x36\xce\x85\x15\x19\x0d\x61\x26\x10\x8d\x51\x12\x23\x1d\xe2\xcd\x71\x42\xbc\xe3\x09\x25\xc9\x98\x6c\x37\x30\x44\x0b\x7a\x8f\xd1\x16\x5a\x76\xad\x8c\x2c\xd6\x05\xc9\xc1\xb7\xe1\x5c\xe8\x85\xf4\xba\x34\x60\x61\xb9\x0c\x37\xa1\xa7\xf3\xfe\x64\xe3\x00\x41\x1b\x79\xc8\xc5\x44\xcb\xc5\x44\x9b\x95\x78\xc5\x91\xa0\x08\x43\xa2\x08\x08\xfb\x0c\xc0\x84\xff\x88\x7e\xa0\xc1\x7e\x49\xe4\x24\x76\xd1\xc2\x0a\xfb\x1f\xa1\x37\x25\x7e\x12\x2f\xa1\x2d\x46\xb8\x5a\xad\xcc\x43\x82\x82\x84\x27\x60\x22\x5e\x1e\x9f\x63\xb4\x14\xe1\x94\xad\x82\xa8\x08\x0a\x1b\x56\x9f\x43\xf5\x19\x0d\x71\xc3\xdc\x8a\x48\x07\x58\xb1\x91\x32\xd0\x42\xa4\x8d\xbd\x50\x2b\xd3\x42\xad\xf2\x3d\xf4\x3c\xae\xa3\xc7\x88\xcc\x21\xee\xaf\xc5\x60\x20\x1a\x55\x71\x20\x06\x72\x26\xa3\x75\x9c\xd0\x2d\xae\x18\xa6\x43\xc6\x81\x21\xe7\x41\xd5\x0b\xf2\xf1\xa3\x2a\x65\xc0\x05\x81\x93\x58\x4c\x2b\x85\x2d\xdb\xf5\xbc\x9c\x6a\x2b\x8d\xda\x54\xcf\x1b\xf5\x36\xf0\xc4\x15\x42\x18\xb9\xb1\x6a\x2e\x7f\xbf\xeb\x65\x5e\xdb\x21\x28\xf2\x48\xb3\x73\xa5\xf3\x58\xd9\xb7\xcd\x44\x07\x1f\xe3\xcc\x04\x90\x3e\x2d\xe7\xaa\x4d\x26\xc7\x46\xbe\xa8\x2e\xf2\x60\xd6\x3e\xfe\x55\xf7\xe2\x5a\x5d\x8d\x9e\xb0\xf6\x11\x67\xaa\x83\xbc\x36\xe2\xbc\xa5\x83\x71\x5e\x33\xa2\xaa\x76\x19\x22\x92\x95\x9b\x84\x88\xfe\xae\x0e\xd3\xb2\x40\x1d\xa7\x85\x74\x7b\x1c\x2e\x35\x0c\xf2\x4e\xcf\xb0\xd0\x32\x60\x89\xe9\x7a\xcd\xa4\x9a\xae\x09\xae\x94\xa4\xcf\x68\x4f\x0e\x78\x57\x70\x10\xb8\xd2\x31\xe0\x55\x89\x4a\x22\x9c\xa6\x94\x32\xac\x52\x30\xf0\x56\xa4\xc7\x07\xc7\xc2\x30\x8f\xc9\x1f\x1e\x19\x10\x9e\x4e\xf0\xe9\xc4\x74\xad\xa9\x1c\xe9\xe4\x32\x03\x2a\x8d\xf8\xdf\x44\x78\xee\x2a\x07\x03\x5e\x58\xf5\xb2\x30\x53\x16\x66\xca\xb5\x99\x72\x8d\x29\xa6\xd1\x4c\x0d\x50\xc3\x7b\xa3\x6f\x78\x7b\x18\xc6\x33\xf9\x61\xa6\x84\xe2\x5c\xce\xe6\x7b\xdb\x1b\x61\x15\xda\x41\xad\x99\xe2\x4f\x72\xa0\x11\x18\x77\x1f\x38\x5d\x4c\x21\x4a\x09\x74\xc3\x21\x77\x46\x1d\x8a\x9f\xb2\x65\x6e\xfe\x7f\x0c\x2b\x9c\xfd\x49\x4f\xe3\x4f\xd1\xb8\x08\x3c\x18\x78\xcf\xa4\xc7\x34\xda\x44\x91\x39\x36\x46\xc4\x18\xfe\x60\x5b\x6e\xdd\xd0\x7c\x8a\x01\x9a\x82\x8c\xd2\x82\x81\x0f\xf2\x02\x7e\xe8\xa3\x3e\x45\x7c\xec\x73\x52\xad\x32\x27\xef\x42\xab\x93\x2f\x28\xc4\xf2\x49\x97\xf7\x0d\xb3\x44\xbc\xd6\x0b\x6a\x29\xbb\xcc\x95\x35\x95\xdd\xdc\x16\x2b\x2a\x0c\x24\x30\x01\x40\x53\xa2\x1f\x72\xe5\x5a\x01\x0b\xcb\x19\xda\x73\x81\xf3\xca\xfb\x62\xe0\x86\x9e\xf8\x0a\x03\xf2\x14\xef\xc8\xc1\xca\xbb\xf8\xc7\xae\x28\xc9\xac\xbc\xbb\x1b\x50\xab\x5d\x7c\x32\x22\xc6\x18\xa6\x9d\x79\x4b\x40\x90\x16\xc6\xa8\x10\x17\xfe\x54\xe5\xd6\x79\x8b\x9f\xba\xb2\x11\xa8\xb8\x48\x18\xe3\x14\x47\x5c\x38\x66\x91\x0f\x15\x6d\x3e\x1c\x57\x21\x7d\x8c\xf4\x47\x36\x47\x75\xba\xf0\xf5\xa4\x8f\x56\xe1\x65\xb0\xa0\x42\x2f\xb6\x3d\x2b\xa2\xe7\x04\x9e\x27\x86\x11\xfe\x2a\x6f\xb8\x22\x31\xe5\xa8\x06\x99\x8d\x00\x8f\xc2\x2d\x89\x9e\xbb\x86\xef\xb7\x61\xbe\xd9\xec\x8f\x9a\xac\x4c\x80\x4e\x93\xbe\x04\xa8\x73\x4d\x38\x86\x08\x30\x56\x0c\x00\xd3\x02\xa1\xe0\x7c\xf8\x90\x80\x40\x6d\x85\x5d\x00\x3a\xb1\xbd\xa5\xbc\xf3\xa0\x6f\x2d\xbb\x99\x17\x76\x2b\xa5\xc8\xac\x74\xd6\x5d\xe0\xee\xe0\x6f\x61\xac\xf1\x45\xde\x12\x9c\x54\x4f\x5a\xe5\x34\x77\x24\x16\x22\xc2\x77\x77\xc7\x2b\x5e\xc1\xb0\xbf\xac\x51\xc9\x0f\x49\x5c\x70\x3f\xad\x9f\xb7\x18\x4b\xfc\x03\x5d\x5d\xe8\x73\xf7\xd6\x17\x61\x3d\x88\x9f\xdf\xed\x6c\x11\xde\xac\xdd\xe0\xa3\xb7\x05\x36\x6e\x8b\x11\x32\xe0\x71\x82\x8f\xf8\x74\x0b\x1f\x6f\xc5\xc7\xdb\x09\x3e\xe2\xf5\x61\xb6\x7b\x99\x71\x9e\x5d\x9d\xc7\x5c\xc4\xaa\xde\xc1\xea\x11\x40\xc1\x12\xc5\xfb\xca\xd0\x2c\x4d\x04\x4d\x8a\x57\x6b\xfd\x86\x31\xaa\x6b\x87\x0c\x3d\x99\x39\xc8\xe5\xcd\x73\xdf\x86\xc9\xf2\xc5\x62\x25\x43\xe5\x74\x92\x0e\x5d\xfc\x2e\x2b\xb9\x3f\x97\xac\xaa\x87\x97\xb3\xa9\x12\x46\xe1\x5e\x12\x54\x79\x30\x37\x40\xdb\x2b\x53\xb1\x71\x99\x09\x2a\x3f\x86\xe1\xaf\x35\xe6\xb7\xa2\x9a\x61\x0a\xac\xa9\x78\xc1\x00\xe1\xa8\x80\x04\xcc\x13\x58\x89\xc4\x80\xc0\xd0\x0e\x3a\x5f\x30\xd3\xc6\x2f\x15\x37\xfa\xd1\xa5\x4f\x3d\xba\x5b\x11\x84\x2c\x80\x04\x83\xa8\xc2\x3b\x1a\xa1\x03\x50\x74\x4b\x9c\xbf\x7f\x56\x54\x81\x3c\x5e\x64\x78\x41\x63\x2f\x97\x3e\x71\xfc\xc8\xe8\x3f\x0a\xc0\xf4\xfc\x7a\x49\x37\x2f\xea\xad\x18\xe5\x95\x1d\x5e\x83\x59\xab\x1b\xa6\x66\x0d\x14\x78\x87\x27\xec\xa3\xf4\x15\xa7\xca\x5a\x63\x4f\xf7\x72\x01\x70\x7b\x62\x22\x12\x7f\x64\x2b\x48\x69\xcd\x22\x34\x7e\xd4\xd6\x94\xf5\xcc\x09\x46\xdf\x7a\x39\x15\x85\xc5\x83\xa8\x9e\x4b\x48\xfe\xf3\xfa\xb6\x91\xaa\x12\x16\x08\xd0\xae\x0f\x97\x71\x81\xf1\x02\xdb\xb4\xc8\x1f\x44\x19\xff\x03\x0c\x2d\x8c\x2b\x8c\x10\xdb\xd0\x4b\x6d\x9c\xf1\x22\xe7\x5b\x0f\xd6\x0b\x9e\x9b\xf4\xb6\xf0\xb4\x45\xf6\x7c\x32\x98\xe6\x3e\x05\x6a\x46\xff\xdf\xd2\xf7\x0c\x47\x14\xdc\xc8\x6e\xbb\xb9\x03\x59\xbb\xa5\xd3\x7b\xd2\xad\x0e\xe6\xdc\x78\x82\x77\xce\xf4\x50\xfc\x80\x5e\x04\x65\x3f\x47\xfd\x65\x3f\xc8\x6d\x54\x79\x5f\xd2\xe7\x10\x95\xe3\xe2\x33\x86\x47\xc5\xa9\xc6\xf1\xea\xc1\x03\xdd\x10\x08\x20\x38\xf1\x41\x04\x7e\xb8\xbb\x3b\xca\xf1\x92\x4e\xd1\x45\x98\x04\x38\x8b\xe4\xb3\x6d\xe0\xb4\xba\xae\x3b\xec\xe6\xbd\x4b\x0f\x40\x80\xdf\x70\x6c\x3a\x74\x95\xf6\xe9\x10\x04\x86\xc1\x5e\x31\xda\x56\x02\xbc\x7d\x92\xca\xc2\x6a\xee\x42\x79\x54\xc1\x47\x81\x25\xde\x42\x4f\xa4\x86\xf8\x15\x28\x72\x05\x03\xd0\x65\x0d\xd0\x38\x01\x6a\x55\xf4\xb6\x77\x77\xf0\x10\x04\xf0\x74\x7c\x9c\x00\xad\x2a\x80\x40\x59\x31\x06\x1e\x0d\x98\x8d\x6a\x34\x8e\xbc\x89\x2d\xc3\x0a\x84\x93\x20\xab\xaa\xe8\xdd\x56\x47\xd9\xc7\xc7\x40\x41\x82\x20\x88\x69\x1e\x00\x22\xf0\x4b\xae\xbf\x88\x8b\x02\x3e\xdc\xfa\x21\x50\xd2\x68\x27\xa7\xde\xeb\xe5\xfd\xc8\x35\x40\xc7\x79\x70\x3b\xc1\x26\xf1\x6a\x74\xd5\x9c\x98\x76\x0a\x49\xc4\xf0\x1e\x95\xaa\xe5\x7a\x22\xf9\xd1\x92\xf7\x76\x2f\x54\x67\xaa\x38\xb5\x72\x98\x5a\x19\x4d\x37\xbc\x60\xd2\xb8\x0f\x0b\x2b\x02\xd4\x9e\x0e\xee\xee\xc4\x13\xc6\x31\x8a\x02\x0c\x0c\x14\xe0\x90\x65\xbe\x85\x01\xa8\x6e\x1d\xa8\x05\xc7\x60\x02\x58\x77\xa9\x00\xfa\x04\x06\x47\xe8\xdc\x87\x17\x45\x04\x43\x60\x41\x8e\xaa\xd0\x54\xd0\x8a\x57\xf5\x0b\x10\x3e\x8e\xa8\x36\x2b\x83\xcd\x10\xbd\x1c\x4e\x93\x6e\x8c\x0c\xcc\xa8\x9b\xf5\x13\x07\x93\x70\x7c\xeb\x15\x0b\xd5\xbc\x14\xec\xa1\x59\x0f\xa7\x12\x80\x02\xfb\x2d\x76\xa9\x20\xfd\xb5\xe8\xd0\x2a\x28\xb0\x8b\xd0\xca\xb2\xbb\x9c\xac\xbb\x6b\x67\xd5\x5d\x49\x51\xde\xc4\xe1\x34\xf2\x8f\x22\x58\x8c\xe9\xe2\xfb\x7a\x54\x94\x54\x30\x01\x30\x26\x1b\x60\x49\x02\xa4\x6a\xf0\x04\x4b\x1e\x56\x3b\x5e\x29\x0d\xec\xbc\xab\x0e\xb3\x0f\x8c\xe6\xad\x87\xb0\x21\x4d\xdc\xc2\xd3\xb6\x76\x00\x55\x79\x78\xc0\x6a\xc5\x90\x6d\xb1\xde\x04\x5b\x88\xbd\xe0\xf4\xc5\x0e\x41\x34\x1e\xaf\x84\xc1\x45\xb8\x75\x98\xbe\xe5\x98\xe2\x4a\xc6\xb4\x3d\x21\xa9\x50\xfa\x86\x6c\x92\x8f\x73\xc7\x51\x07\x22\x25\x5e\x74\x4c\x11\x2c\x64\x35\x93\x50\xfc\xa2\x36\x4b\xd4\x1b\xc8\x2f\xe8\x97\x78\x0b\xc9\xa2\xe1\xde\xad\x2d\x22\x58\xed\x4a\xba\x08\x2d\x62\x56\xee\xd2\xdd\x79\x7b\x7b\x41\x5d\x02\x90\x20\x19\xb1\x12\x73\xf4\x17\x63\xc0\xff\x1d\x05\x29\xf2\xfc\xf6\x98\xa9\x2a\x31\x1c\x01\x8c\xc7\xd5\x86\x6f\x5b\xe2\x8a\x0c\x68\x65\xd1\x06\x2c\xaa\xda\xb9\x18\x1f\x93\x2e\x6b\xfe\xbb\x10\x50\xc3\x28\x2a\xa2\x14\x11\xa4\x6a\xc1\x30\x92\x33\xc6\x06\x01\xda\xb9\x57\xf5\xa0\x73\xd2\xcc\x96\x2a\x45\xc5\x80\xdc\xcf\x61\xf3\xae\x50\x85\x8c\x93\x40\x22\x0c\x2e\x40\x98\x87\x11\x3f\x8b\xdb\x42\xa5\xc8\xee\x48\x31\x18\x2d\xed\x7b\xc8\xeb\x58\x34\xf7\xab\xad\x07\x21\x37\xb2\x55\x83\x7e\xc0\xfc\x1e\x2d\x82\x9b\x45\x28\x4a\x6c\xdc\x23\xd4\x5a\x18\xb9\x06\x0f\x4b\x50\xb6\x80\x75\x7a\x46\x91\x0d\xab\xa4\x33\xa0\x91\x19\xd2\xc8\x33\xa4\x91\x59\x8f\x3c\xb8\x6f\xe1\x13\x4c\x81\x50\xf2\x0f\xc4\x5d\x60\xbc\x93\x48\x31\x0d\x18\x6c\x79\xad\x5e\xc4\xf6\x8a\x9f\x30\x64\xa4\xd8\x19\xad\x35\xda\x29\x2f\xf7\x79\xb1\x2b\xc5\x88\x89\xb9\x6f\x85\x22\x4e\x4b\xd9\xab\x76\x23\xf9\x89\xc0\x84\xd9\x86\xf5\xc6\x3a\xf7\xc2\x2d\x2b\xcb\x12\x6b\x01\x8d\xd8\x28\xe6\x2d\x0f\x34\x95\x7f\xa4\x29\x72\x50\x5e\x60\x28\x54\x99\x67\xd9\xd2\xc0\x3e\x7e\x95\x13\x71\x85\x47\x19\xef\x0d\xef\xa6\xd7\x33\x00\x4f\xb5\x24\x06\xb1\x13\x35\xe4\x15\xd5\x4b\x24\x30\xa9\xf9\x1e\x4c\x5e\x35\x70\x1b\x61\x7c\x26\xb5\x3a\x01\x40\x45\xc4\xac\x50\x6c\x24\x21\x51\x38\x0c\x62\x63\xa4\x45\x22\x2d\xaa\xd2\x72\x8d\x4f\x7c\x88\xd4\x97\x08\xa3\xe0\xc0\xb0\xb8\x6b\xe0\xe9\x57\x38\x05\xac\x4d\xb0\x06\xb0\x56\x78\x36\x88\x69\x88\xc7\xda\xe0\xae\x0e\x0c\xee\xd6\xc0\x77\x82\xf8\x36\xe0\x81\xd4\x68\xb6\x9d\x23\x24\xf5\x51\x48\xea\x03\x9e\x18\x03\x9e\x34\xc7\x63\x4d\xd1\xa1\x1a\x83\x58\x7c\x64\x10\xd7\xf2\x24\x34\xac\xb0\x5e\x31\xc6\xf6\x38\x34\x59\xe1\x71\x68\x8c\x92\xad\xf0\x6b\xc8\x58\x57\x75\xf1\xf9\xd6\x70\x95\xa8\xa7\x6c\x0d\x3f\x89\xbc\xa2\x01\x1f\x12\x16\x2e\x31\xe2\x74\x9a\x2d\x58\x81\x7b\x80\xf4\x35\x45\xe6\x50\x8a\x04\x5b\xc9\x23\x6a\x6f\x86\x5c\xc7\x1c\x47\x83\x23\x24\xe9\xf2\xd2\x38\xfa\xa0\xce\xcc\x91\x25\x64\x0e\xd9\x4a\x11\x77\xe8\xc4\x36\x45\x90\xa4\xb6\xc6\x11\x39\xc2\x53\x5d\x11\x09\x99\x50\x9a\xe2\x25\x45\xe4\xf8\x2e\x13\x50\x51\x43\xd5\x52\xc2\x48\x27\x8c\xb0\x44\x08\x89\x58\xe9\xec\x44\x27\x9c\xcc\x49\x0f\x40\x61\xd7\x0d\x87\x8a\x5c\xc5\x97\x40\x43\xc1\x15\x9a\xe3\xbb\x5c\x3d\x73\x7d\x30\x42\xd7\x52\xf5\x56\xa4\xab\xbc\x44\xd7\xc8\x9e\x70\xef\xe4\xbd\x15\xb0\xc1\x78\xad\xce\xa5\xe6\x81\xf7\x39\xf8\xce\xff\xed\x38\x11\x17\x5c\xa5\xb8\xcd\x0f\x3d\x29\xf1\x2a\xe8\xfa\xd7\xdc\xc9\x5a\xbe\x96\x4e\x88\x5f\x4d\xa3\x6c\x53\x84\x46\x79\x95\xb8\xfd\x9d\x50\xf4\xe2\x15\x57\xa9\x4d\x3f\x7c\x8a\xea\x8b\xe0\x45\x2e\xef\x69\x81\x3f\xb6\x5f\xe2\x27\x7c\xd7\xd9\xb9\xc8\x9e\x02\x0d\xa6\x54\xca\xd8\xd6\x9d\xaa\x44\x6e\x53\x46\xac\xde\xb0\x91\x35\xe3\x40\xdf\xe4\x8d\x8b\x7a\x82\x14\xcd\xfc\xab\xda\x0c\x83\x6d\x87\x77\x4d\xb7\x98\xf3\x7a\xef\x5c\xa9\xc3\x11\x1c\xa1\xb6\x10\x10\x5a\x7d\x07\x4f\xa8\x38\xfd\x3d\x8b\x7a\x49\x58\xf0\x7f\xa1\xc2\x20\xa0\x60\x94\x63\x16\xc0\x47\xba\x3a\x95\xa3\x2e\x2f\xb7\xd1\xb2\x06\x92\x91\xc5\x96\xb1\x59\xf5\x8d\x9f\x78\x95\xa8\x4c\x27\x97\x0c\xca\xf0\x21\xf6\xd5\xa1\x3f\xcc\x7c\xd4\x6a\xec\xd0\x0c\x40\x9c\x25\x90\x2b\x4a\x18\x98\x0d\x0b\xbd\xd9\xa9\x3e\x7d\x6b\x6b\x88\x6e\xa1\xc1\x0b\x8e\x0b\x1d\xd9\xa2\x82\x34\xc5\xe8\x73\xf1\x84\x34\xd6\x36\xd9\x92\x14\x14\x18\xbe\x77\x1b\x90\xd6\x47\x3a\x4e\xc7\x76\x15\x8f\x26\x99\xc1\x2b\xea\x07\xb1\x6d\x7a\xf1\x30\xe2\x0f\x94\x00\x48\x25\x1b\x03\x1f\x31\xc0\x12\xde\xae\x0c\xec\xb9\x8c\xdc\x53\xcc\xca\x39\x64\xf6\x44\x34\x93\xbd\xd2\x8e\xaa\xb8\x5e\xcd\xe8\x40\x35\xc1\xa8\x8a\x8a\xd2\x80\x8b\x1e\xe6\x58\x65\xa3\xa5\xf9\xe1\x66\x9c\xe1\x3d\xf0\x16\x9a\xe1\x1b\xa2\x7d\x96\xe7\xe6\x9e\xa7\xae\x67\xbc\x0d\x60\xee\x19\x17\x6d\x0a\xc5\xbe\xf1\x81\xd8\x06\x1a\xa8\x31\xe2\xd9\xce\x28\xaa\x3a\x9e\xdf\xd4\xe1\x9e\x6a\x18\xfd\x87\xc1\x4b\xb0\xa8\xd5\x80\x42\x4e\x65\x30\xa2\x6a\x1e\xcc\xa7\x34\xa2\x83\x39\x8a\x09\xfb\xb2\x7e\x66\x89\xeb\x8d\xed\x16\xce\x8c\xef\xf6\x58\x4a\x9c\xe4\x6a\xae\x24\x33\x39\x57\x6c\x09\xa8\xb1\x32\xb5\xbd\x8a\xb1\xd0\x5e\xb4\x1c\x1b\x02\xed\xd3\xe6\x1f\x59\x5e\xe8\x80\xf6\x39\xc8\x5d\xc7\xc7\x47\x30\x53\x9b\x79\xa0\x49\x19\x15\x47\x9f\x2f\x18\x7e\x15\x0d\x62\x45\x2a\xf7\xd9\xdc\xb8\xcf\x8a\x08\xa9\x7c\x0c\x8d\x7b\x71\xd5\x37\x95\x28\x4f\xb2\x30\xce\xff\x84\xe1\x25\x54\xb6\x3c\xa4\xac\x11\xb8\x6a\x64\x45\x96\x3a\xb9\x03\xe1\xc3\xf8\x8c\xf9\x0f\x92\x39\xa3\x99\x8f\xd1\xba\x67\x79\xab\xeb\x88\x96\x12\x26\x81\xb8\x54\x3e\xc0\x5b\xe4\x31\xc5\x28\xfc\xea\x23\x85\x87\x5e\x4a\x47\x38\x46\x91\x37\xf7\x17\xc1\x6d\xb5\xf7\x64\xc2\xa7\xa9\x35\xc2\x2b\x63\x47\x50\xc3\xc8\xc3\xc7\x9a\x17\x40\x8d\x13\xe8\x1a\x1e\x93\x7f\x35\x52\xcc\xb4\xe7\xea\xfc\x12\xa3\xdb\xd4\x64\xfa\x14\x7a\xa7\x35\x00\x52\x4f\xdc\x45\x0b\x65\xde\xad\x8c\x1d\x1f\x13\x64\xe9\x94\xf9\x27\x5d\xba\x74\xd8\x61\x5e\xef\xb3\x27\x06\xeb\xf2\xd5\x47\xd0\x51\x19\x7b\xa2\x0e\xd0\xe8\xce\x9f\x66\xb9\xa1\xb6\xbb\x4c\xbb\xdf\x99\xee\xfb\x2f\xf3\xa6\x35\x2c\xd6\x35\x72\x87\x03\x84\x67\x68\x9e\x25\x7c\xdb\x52\x23\x89\xc9\x30\x22\x5d\xf3\xf4\xec\x6b\x73\x86\x8f\x0f\xd8\x2f\x9d\x8e\xe8\x8e\xc1\xde\xe3\x27\xfb\xb7\x8f\x4e\x01\x47\xfd\x5f\x32\xc3\x04\x7f\xd8\x47\xf3\xd1\x94\x8e\xc9\x39\x5e\x28\x56\x61\x42\x87\xde\x19\x3a\x69\xd7\xe8\x81\x07\x5d\xc8\x0d\xdb\x3e\x0b\x58\x14\xbb\xfb\x4b\xd6\xaf\x4d\x9d\xef\x6b\x63\x0b\x1b\x3e\xb4\xd1\xfb\x6c\x30\x7c\xf2\xb9\xd1\x86\xb1\x6d\x77\x79\x17\x6f\x37\x1e\xda\x5d\xb4\x5d\x35\x2a\x7a\x5d\xc3\x4e\x7f\x04\xa3\x08\xe3\xfa\x59\xef\xc9\xd3\xd1\x13\xba\x97\x7e\xd4\xf8\x06\xe8\x85\xa6\x9e\xd0\x57\x9b\xae\x75\x7e\xe2\x8f\xe4\x7b\x3d\xd7\xa8\x37\x32\xb2\x7d\x71\x02\x19\x6b\xa9\x4f\x6b\xc9\x9f\xe3\xe5\xd1\x86\x65\xab\xc9\xd2\xad\xa3\xa4\x62\xe9\xf0\xd9\x60\xe9\xc8\xea\xa0\x17\x89\xe3\x67\x62\xe9\xd6\x92\xa5\x8b\x24\x4b\x97\x68\x96\x2e\x2e\x5e\x85\xaf\xac\x8c\x62\x69\x13\x6b\x21\x3e\xe4\xf6\x14\xb2\xd3\xbd\x9b\xf4\x1e\xdb\xa8\xb2\x23\x01\x9f\xde\x19\xa6\xaf\x7d\x66\xfb\xf1\x64\xf8\xf9\x60\x0a\x7b\xe4\xc9\xd3\x81\xef\xc1\x33\xc6\xd4\xb6\x62\x07\xdf\xed\xb6\x7d\xe0\x3b\xc1\x22\xba\xc4\x12\xba\x82\x05\xc4\x7d\xc1\x30\xc5\xad\x75\xb4\x30\x3a\x5a\xb4\x74\xb4\x68\xe9\x68\xf1\xf7\x3a\x5a\xfc\x8f\x74\xf4\x93\x8f\x76\xf4\x5f\x66\x47\x93\x50\x33\xe9\xf8\x6c\x74\x34\xa1\x8e\x86\x06\x93\x9e\xc8\x8e\x86\x0f\x61\xd2\x1f\xfd\xf0\x51\x48\x7e\xda\xe7\x69\xdb\x18\x5a\x83\x77\x27\xde\xd6\x5c\x36\xbf\x1b\xa7\x68\x33\x84\x16\x60\xc5\xa3\xb4\x19\xce\xc5\xb4\xb7\x40\x8b\x8f\x5f\x73\xe1\x1d\xf1\xb3\x88\x21\x82\x96\xa4\xb9\xf5\x09\x9a\x58\x70\x8c\x29\x6d\xdf\xdd\x0d\xc6\xa8\xe7\xe9\xe2\xc9\x1a\x45\x08\xa3\x23\x7a\xa4\x2f\xf8\x8c\xc7\xc9\xf8\x4e\x0f\x39\xfd\x2d\xf1\x2f\x60\x0d\x3d\xe4\xa5\xd7\xaa\x95\x4f\x0d\xdb\x5e\x32\xb4\xa2\xb3\x47\x33\x30\x81\xa7\xa3\x6e\x90\xe7\x0d\x95\xd7\x96\xd6\x00\x33\x03\x98\x97\x73\x91\x20\xec\xba\x67\xb9\x1b\xab\x0f\xef\xd8\x4d\x10\x4f\x6b\x2e\x3c\x31\x56\xe4\x1b\x47\xa5\x3f\x7f\xd4\xf4\xc0\x30\xdb\xcc\x9b\x0e\x46\x48\x8e\xa9\x06\xf3\x3c\x08\x43\x3f\xcd\x6a\x57\xf9\xd5\x1c\x2d\x3f\xc9\x9b\x1e\xa3\x14\x2d\x93\x75\x8d\x6b\x08\x99\xbc\xd8\xd0\x30\xf8\x3c\xc8\xc6\xc0\x4c\x24\x9c\x00\xd7\x70\x65\x51\x70\xd7\xda\x17\xf2\x6e\x8c\x0d\xbb\xf8\x28\xc8\x8c\xb7\x04\xd2\xc4\x90\xa0\x97\x96\x7a\x5c\xa2\xbe\x1e\xd0\xe7\xae\xe1\x1b\x3d\xac\xf0\x0b\x59\xd9\x6f\xf0\x13\x3e\x55\x5b\x0d\xc0\x7d\x44\x01\x3e\xef\xee\xd0\x6c\x0c\x9f\x81\x7b\xb5\x24\x77\xd4\xa9\x1a\xb3\x3a\x22\x1e\x1e\x1a\x57\x88\x07\xbb\x83\xca\x0f\x25\xe9\x0c\x41\xc4\x01\xde\x99\x82\x9f\x44\x74\x10\xed\xc2\xd7\x13\xf5\x15\x6d\xf4\x44\x34\x37\xdb\x17\xad\x51\x3b\x2d\xcd\x38\x91\x83\x55\xfb\x2a\x09\x5a\x49\x8e\x82\x62\x6a\x25\x5e\x41\x04\xa2\x20\x82\xe0\x17\x5e\x82\xaf\x18\xa9\x5b\x52\x08\x0d\x8c\x2c\x9b\x0b\xd6\xdc\xe9\x08\xcc\x58\x06\xe4\xde\x48\x40\x96\xb8\x05\xc1\x54\x1c\x1f\x1f\x2a\xe4\x14\x04\x90\xbb\x3c\x0a\xd6\xd3\xc3\x6d\x20\xa6\x7f\x6d\x6b\x02\xa3\x8d\x03\x4f\xbe\xde\x6f\x41\x16\x71\xd6\xa2\x81\x15\x8d\xc5\x86\xb0\xb3\xa2\xb1\xd8\xd0\x58\xb0\x60\xaf\x20\x0e\xe1\xc7\x46\x84\x79\x8f\x05\x00\x14\x20\x7c\x53\x8d\x09\x53\x80\x61\x1b\x22\x64\x36\x62\xc0\x1a\xaa\xb6\x87\xa2\x61\xbb\x05\x60\xd1\xae\xb3\x11\x00\xb3\x4a\x31\xef\xb6\xea\xab\x61\x82\x93\x11\x48\x2c\xec\x60\x80\x85\x29\x67\xb1\x10\x31\x78\x4d\xc4\xc8\xdb\x44\x8c\x5f\x1a\x14\x33\xc0\x0b\x7b\x31\x2c\xc1\x74\x28\xbc\x61\xfc\x41\x0b\x05\x25\x57\xc3\xae\x79\xcf\xdd\x77\xff\xa8\x9e\x47\x86\x61\x4a\x25\x56\x0c\x5d\x59\x7d\x8d\x1b\xfe\xa6\x61\x29\xa4\x5c\x39\xc9\x60\x48\xb8\x6d\xc2\xa2\xff\x41\x52\x64\x58\xf9\x7c\x3e\xe6\x18\x9d\x18\xcd\x74\x38\xc6\x28\x04\x7e\x4e\x0d\x1c\xd7\xfa\xf0\x58\x9f\x7b\x30\x91\xbd\x3a\xac\x88\xdd\x01\xd6\x85\xaa\x74\x51\x5c\x8b\x16\xda\x18\xb9\x01\xd6\x8c\xcc\x2e\x54\x7e\xe1\x77\xcc\xf0\xce\x67\xa1\x90\xc0\x8b\x50\x58\x4b\x8d\x3a\xdd\xa0\x83\x3f\x68\x13\x62\x72\x5d\xaa\xce\x38\x2b\xe0\x59\x40\xed\x43\xc7\xff\x2d\xb7\x24\x79\x61\x13\x1e\x02\xcb\x27\xe1\x93\x32\x2e\xf1\x20\x04\x45\xe9\xb2\x2d\x97\xf6\x58\xd1\x06\xcc\xa5\x38\xa4\x5f\xc6\xb7\x6c\x71\x17\x98\x77\x37\x98\x29\xc7\x81\xf7\x99\x61\x5c\x5a\x2f\xf4\x18\x83\xcc\xdf\xe2\xc9\x16\x3e\x6c\x83\x9a\x3e\x33\x6f\x54\x63\xf0\x88\x65\x59\xf7\x12\xa6\x3b\x4b\xc4\xc5\x88\xd1\x1a\xc7\x1a\xbe\x1c\xa1\xf8\x19\x2e\x6b\xd1\x8d\x53\xa1\xa4\x44\xe3\x67\xb5\x66\x22\xb1\x3a\xa2\xd3\x70\x6c\xc7\x41\x86\x96\xc2\x62\x54\x90\xed\x29\x31\x46\xb0\x0c\x28\x26\x2a\x76\x80\x8a\x8b\x27\xb4\x24\x56\xcf\x5d\x78\xb8\x05\x8e\xa3\xf6\x41\x04\x6a\x57\x97\x00\x7d\x10\xe0\x20\xc3\x2e\xbe\xf4\x6e\xa5\x17\x29\x50\xdd\x45\x76\x65\xd9\x5e\xef\x89\x8a\xb9\xdf\xdb\xee\xa7\x09\x3e\x09\xef\x45\x65\x33\x95\x8d\x74\x5d\xf3\xb1\x06\x4e\x26\x3c\x17\x48\x48\x10\xc6\xa4\x5b\x35\x88\x10\xea\xd7\xed\x0e\xca\xdd\x06\x79\x5f\x15\xc7\x4e\x6e\x83\xb2\x7a\x37\x0c\x23\xcb\xda\xea\xd5\xd1\x2b\x70\x14\x3a\x68\xc8\x03\xf4\x2f\x5a\xc7\xc9\x02\x26\x2d\x3c\x5e\x87\x49\xc9\xf0\x3e\x7a\x81\x6f\xe0\xb2\x28\x8c\xda\xbb\x22\x48\x4a\x73\x4f\xce\xca\x9a\x32\x5b\xd5\x60\xd8\x25\xd6\x33\x50\xbd\x86\x31\x61\x1d\x2c\x2e\xd2\xbd\xbd\x7c\x89\x59\x4b\x15\xb0\xb6\x69\xb3\x54\x11\x2f\x0d\xc8\xdd\xdd\x0c\x28\x65\xbb\x2b\xf9\x07\x41\x5f\x30\x9a\x05\x51\x17\x1f\xc8\x1d\xd2\x70\xc3\x74\xb0\x3c\xa4\xc4\x5f\x96\x87\x94\xf8\xeb\x52\x1f\xcf\x6e\x07\xe2\x68\xd6\x0c\x4a\xb9\x6a\x74\x45\x3a\xc7\x2b\x05\x8b\x61\x78\x56\xd6\x09\x8f\x37\x94\x17\x80\x6a\x9b\xed\xd9\xbc\x66\x1e\x39\x68\x31\x06\x5f\x94\x0d\xeb\xc7\x60\x68\x5c\x37\x28\x8d\xfb\xab\xcb\xa1\xa4\xb6\x85\x02\xb8\x92\xf5\xab\x3d\x29\xd1\xb7\x20\x60\x14\x1f\xb0\xa5\xfe\xeb\x3a\x22\x72\xb6\x28\x81\xb0\x5e\x95\xee\xc0\x3c\x0c\xa9\x0f\x33\xb0\xe4\x35\xa6\x72\x5b\x4f\x3e\xc3\x57\xa1\x3d\xa8\xdd\x28\x5f\x29\xa1\xd4\xc5\xf2\x23\xa7\xa6\x2d\x38\x2b\x1b\xca\x34\x71\x91\xba\x23\x2d\xdb\x85\xd5\x5f\x6e\xf7\x39\x19\x7f\xd2\x15\xea\x01\x07\x9a\x81\xaa\xa5\x12\xcf\xdd\x5b\xac\x20\x6f\x8d\xee\xcd\x70\xe2\x09\x6f\x7e\x7c\x0a\x71\xeb\x35\x7a\x71\xd9\xe8\xa4\xdc\x00\x82\x6a\x6f\x9a\x0e\xcd\x30\xfd\x17\xa5\x61\xcc\x57\xcd\x57\x83\x83\x56\xdd\x9d\x52\x74\xfd\xb4\x77\xc1\x73\xc6\x7a\x7c\x9d\xb3\x70\x61\x28\xf9\x4b\xd3\x1d\x74\xbf\x22\x46\x3a\x0f\x75\xc8\x6d\x4f\xd9\x8c\x7b\xc3\xc3\xd5\x9d\x97\x75\x83\x85\xaa\x3a\xe9\x65\x52\xea\xaa\x1a\xe6\xd4\x92\x45\x41\xfb\x75\x98\x2f\x50\x0f\x9b\xa1\x14\x62\xcb\x80\xf2\xb0\xc1\xe5\xda\x58\xdf\xd0\x80\x36\xb1\x46\x26\x12\x86\xee\xb2\x49\x21\xc8\x18\xca\x50\xfc\x35\xcb\x2f\xd8\x86\xaf\x3d\x2e\x7e\x0d\x1d\x5f\xd9\xe2\x7a\xac\x4d\x3a\x6b\x1d\x2d\x49\xf6\x2e\xf7\x3a\x2a\x0e\x41\x88\x49\xac\x36\x9d\x0c\x37\x9d\x12\x37\x1d\x46\x71\xe7\x51\xd2\x18\x73\xaa\x7b\x87\x4d\x34\x3c\x42\xdf\xec\x2d\xc7\x81\x5a\x8e\x15\x08\xae\xc1\xb1\x78\x5e\x4c\xb7\x98\x0a\x9e\x4f\x0c\x9a\x4b\x91\xdc\x92\xf8\x0a\x84\x24\x78\xbe\xca\x16\xf8\x00\x7b\x87\x3c\x78\x76\xd0\x17\x88\xe3\x16\x90\xd6\x8e\x24\xdf\x6b\xca\x14\xa4\xaa\x2a\xc8\x48\x4f\x32\xe0\x08\x03\x5e\xae\x97\x96\x57\x97\x2c\x07\x3c\x8b\x07\x5b\x6c\x4f\x29\x6e\x4f\x18\x49\x51\x3c\x7b\xf4\x2c\x1a\x0c\xda\x61\x32\xf4\x99\x65\x53\xe0\x93\xf3\x0f\x0f\x5e\x0b\x9e\xe5\xfb\x8b\xa5\x99\xc3\x37\xaa\x7b\xde\x1c\x74\xb1\x6d\xf0\xe6\xb6\xf1\x55\x63\x36\x5f\x6c\xc2\xe8\xdd\x05\x9a\x87\x8c\xcd\x97\x00\x2f\xc7\x10\xaf\x74\x99\x6a\x5a\xbd\x8a\x9b\x56\x5d\x66\xa6\x1a\xfc\xdb\x9f\xb2\xfe\x7b\x2b\x33\x34\x9f\x35\x70\x94\x5d\x5f\x5e\xd9\xf5\xe1\x24\xc8\x1d\x34\xbe\x94\x5a\xe4\x2f\xbe\xf8\x02\xe3\x41\x4f\xa4\x55\x90\xa1\x18\x2d\xad\xbd\x30\x74\x85\xa9\xb7\xc7\xaa\x73\x3c\xef\x5e\xea\xc0\xfc\xf0\xd5\xc1\xaf\x4b\x5b\x5d\x10\x2e\xf2\x6e\x29\xef\x9a\xc2\x5a\xea\xbc\x5b\xca\xbb\xa2\xab\xea\x2c\x93\x14\xd8\x74\xab\x93\x26\x03\xcd\x53\x42\x61\x7c\x12\x0c\xfb\x03\xf2\x20\x86\x9f\x35\xbd\xac\xe8\x85\x08\x49\x75\xf9\xf5\xd7\x74\xe1\x3a\xe9\x38\xf2\xde\x6d\xe0\xe5\x78\xce\xdb\xc3\x88\x6f\x14\x23\x22\x41\xa7\x4b\xa4\x39\x64\x09\x0e\x19\x4a\xb4\x7f\x93\xe9\x78\x2f\xfd\x64\x24\x56\x27\x5a\x63\x8f\xe6\xee\x8f\xa5\xbc\xd7\xdb\xa5\x9b\x49\xbf\xc2\xd7\x18\x2d\x0d\x8c\xf1\x88\xf1\x33\x5d\xd5\x55\x06\xb9\x31\x6e\xc0\x5c\x9e\x8c\x93\x49\x36\xce\xd0\x30\x4a\xd5\x04\xf5\x66\xf2\x7e\xd9\x0d\x5e\x32\x05\xbb\x27\x5e\x7e\x28\x8c\x04\x4a\x73\x42\x85\x20\x5b\x94\xe3\x30\x08\xcd\x3a\x17\xe8\xbd\xb6\xb4\x5e\xe2\xe5\x14\x78\xfe\xbe\x81\xb2\xc2\x60\x4a\x98\xe0\x6d\x08\xfa\x28\x30\x21\x1c\x47\x78\xb9\x9d\xf1\xe1\xf8\xf8\x08\x2a\x40\x9f\xa1\x71\x14\x44\x46\x82\x8b\x37\x08\x8e\x37\x53\xeb\x7a\xb2\xb8\xbb\x5b\x04\xc1\x35\x59\xe8\x9e\x02\x16\xa7\x7f\x52\x07\x82\xd0\xf6\xf1\x29\x88\x5c\x0a\x80\xee\x81\x80\xaa\xb0\x82\x3e\x14\x88\x26\x11\x74\xf4\x0a\xef\xbe\x58\xa2\xa7\xda\x36\xb0\xd6\xce\x8a\x3c\xcf\x81\xf2\x20\x7c\x78\xf1\xa4\xc2\x8c\xc0\x88\x1b\xc3\x0c\x0b\xae\xe0\x67\xeb\x05\x5b\x75\xb7\x23\x4e\x9c\x33\xf8\xa6\x42\xa8\x53\x8c\xf4\xde\x2d\xb0\xd2\xb7\x0e\xe4\x84\xdf\xad\x8d\xc4\x24\x0f\xce\x5c\x3d\x07\xbe\xaf\x45\x4b\xfe\x5a\xca\x0c\xc6\x82\x4a\x0f\x2c\xa7\xef\x29\xeb\x82\x25\x8c\xb3\x47\x69\x0d\xed\xf5\x6f\x74\x85\xb3\x56\x9b\x97\x7b\x06\xfd\x35\xea\x0f\xcb\x24\x00\x92\x96\x77\x85\x50\x03\xcc\x9b\x78\xd9\xa2\x15\x73\x37\xc0\x60\xb5\x5a\xb4\xa4\x4b\x7a\x4b\xed\xc7\x17\xe3\x86\x00\x2d\x94\xb4\xf9\x51\x23\x86\x62\xbc\x21\xf4\xe0\x6a\x67\xca\xa2\x93\x68\x41\xac\x68\x01\x02\x22\x2e\x30\xba\xd3\x76\x1b\x5c\xe6\x87\x99\x27\x42\x59\x8f\xb3\x2e\x3a\xbb\x00\x50\xf2\x5a\xfc\xde\x13\x20\xfe\x5e\x46\x01\xe4\xe9\x86\x2c\x3d\x10\x86\x20\x3e\xea\x52\x3c\xe8\xd0\xf6\x20\x33\x4c\x91\x2e\x14\xc1\x4b\xfc\x44\xa9\x31\xeb\x91\x40\xe7\x44\xd0\x48\xd2\x8d\x61\xa8\x48\xae\x73\x30\x54\x59\xd2\x2d\xc5\x21\xaf\xca\x94\xab\x64\x43\x2d\x6e\xb2\x84\x43\x47\xf1\x4a\x6d\xaa\x67\x2c\x67\xc6\x4b\x68\x65\x26\xdb\x3d\x0c\x1c\x64\x13\x80\xcb\xec\x2b\xee\xd5\x50\x12\x3f\x98\xb5\x82\x9c\x42\xe5\x6a\x4c\xab\xdf\xff\x26\x47\xf5\x3b\xb2\x3a\xc8\x54\xd5\x6a\xf9\xd9\xe8\x0a\x99\x01\x4a\xfb\x3f\x77\x81\x2f\x8b\x5b\x77\x81\xaf\x0b\xf3\x0a\xde\x5f\x1b\xbb\xd5\xad\x83\x2e\x5e\xc2\x5a\xd4\xe1\x82\x89\xc5\xa2\xe4\xad\xe2\x51\x1a\xf2\xee\x8b\x2d\xb9\xac\x78\xe8\x19\x36\xae\x8e\x3b\x91\x87\x81\x89\x5b\xc2\x32\x2e\xf1\x8e\x4a\x71\x0a\x80\x12\x2f\x39\xa3\xc2\x17\x80\x8a\x01\x4c\x39\x42\x54\x22\x38\xb1\x79\x65\x79\xf9\x20\x57\x93\x47\x6c\xc2\xa7\x74\x89\xaf\x3f\x63\xb5\xa0\x80\x5f\x36\x86\x12\x59\x06\x11\x24\x63\x5a\x7b\xb3\x6c\x1f\xdb\x92\x62\x90\xc9\xce\xff\xb2\xb7\x4e\x45\x00\x4c\xd2\x0f\x93\x66\xc3\xb8\x45\xf1\x9e\x43\x85\x98\x22\xe2\x98\x34\xe6\xbb\xb2\xae\x48\x1e\x18\x1e\x90\xb0\xa0\x63\xe1\x7f\x89\x7e\x81\x65\xd5\xd1\x78\x42\xb7\x8a\x06\x68\x87\x44\x0a\x16\x57\x7b\xeb\xa2\x76\x01\x4a\xc0\xfa\x5c\x26\x19\xee\x46\xf8\x5e\xe2\x3b\x09\x30\x78\xb5\xa8\xa1\xe6\xaa\x21\x66\xfa\x81\x8a\xf8\x87\x8e\x59\x45\x85\xbc\x9f\xda\xdd\x74\xe7\x62\x75\x07\xb3\x52\x5b\x32\xe7\xce\x7f\x13\x19\x2a\xac\x3d\x4c\x92\xd6\x9c\x1c\xe0\x06\xf7\x9f\xf7\xcb\xfb\xc7\xd1\x05\xee\x34\x25\xc3\x30\xba\x16\x59\xf8\xf1\xdb\xb0\x42\xaf\xd1\xb8\x8e\xae\x90\xe5\xfb\x5f\xc5\x55\xe5\x41\x58\x85\x17\xc0\x11\xcc\x3c\x8a\x5c\x9a\x19\xfe\x68\x38\x92\xf4\x99\xd3\xe7\xbd\xc1\xac\x16\x05\xd0\x12\x69\x5a\x88\x1d\x1a\x02\xbf\x0d\x00\xaa\x11\x42\xeb\x00\xb4\x13\xb0\xea\x7a\xc5\x1f\x8c\xde\x6b\xfd\x93\x55\x0b\xf7\xd6\xde\xf9\xc9\x68\xfa\xef\xd2\xff\x05\x1d\x0a\xf2\xe9\x77\xb9\xff\x4b\x25\x21\x66\xe2\xae\x79\x97\xbc\x26\x43\xba\x32\x2d\x85\x97\x17\x78\x3c\x67\x28\x5d\x1a\x56\x25\x3b\x69\x9e\x5b\x41\xbc\x1f\x64\x48\x07\xdf\x20\x73\xf2\xb8\xb7\xc8\xae\xc2\xd8\x08\xcf\xc1\xef\x09\xcf\x91\xc2\x18\xa0\xaa\xe3\x95\x60\xdb\x45\x28\xd8\x14\x6b\xa1\xd5\xf5\xb0\x18\x1f\x18\xd2\x8c\x0a\xf2\xaa\xe0\x8f\x78\x90\xd6\x56\x3a\x56\xda\x0b\xdb\x8c\x58\x62\xfd\x94\x13\xe8\x51\x12\x5e\x6d\x1e\x1e\x34\x85\x1a\xcd\x77\x64\xd3\xf9\x37\xa3\x9f\x30\x55\x1c\xbd\x55\x7a\x3c\x8e\xde\x15\x6d\x18\xcb\x45\x14\x62\x95\xe7\xeb\x2c\xbf\x0a\x9b\xa1\x53\x95\x02\x38\x96\x5b\x35\x66\x4e\x61\x5a\xb7\xd5\xc7\x65\x54\x63\x8c\x9c\x8c\xfd\xcd\x36\x46\x8c\x18\x7d\xa8\xa9\xe7\xdf\xae\x1e\x64\x39\x8d\xef\x53\xca\x11\x6a\x3b\xf2\x97\x86\x00\x5e\x0c\xd4\xa0\xc2\x0e\x31\x6c\xfa\x3f\xf3\x7a\x8d\x44\xe8\x80\xe0\x30\xf1\x19\xaf\xa9\x36\xef\x51\x90\x99\x85\x61\x14\xa7\x6d\x6d\x38\x50\xa7\xb9\xb4\x03\x10\x73\x3e\x14\xbe\x84\x2a\x58\x1c\xda\x3a\x0c\xa5\x36\x5f\x90\x27\x23\x54\x19\xaf\x94\x33\x50\x13\x12\x69\xde\xcf\xab\xb8\xa7\xbd\xe1\x93\x49\x10\x4f\xcb\x2e\x34\xe3\xf7\x4e\xd4\xcb\x13\x1f\xed\x0f\x84\xba\xb6\x8b\x11\x28\xe8\x0e\x26\x4d\xd3\xf0\xb5\x5f\xda\xdd\x92\xce\x41\x03\xa3\x61\x7c\xa7\x14\xf4\x72\xc2\xe4\xd1\x1c\x88\xb3\x21\x00\xe6\xfb\x18\x46\x6c\xca\x98\x51\x57\x99\x2b\x71\x60\xfa\xc8\xc7\x75\x26\xcd\x6b\xeb\xa8\x81\x50\xdd\x5f\xa7\x37\xd0\xf7\x26\x42\x53\x4b\x9a\x5f\x16\x3a\x8c\xe5\x6c\x93\x84\x40\x1b\x9f\x85\xae\xc9\xcd\xc0\xa4\xa8\x09\x4d\x46\x90\xcb\x5a\xca\xdd\x5d\xa7\xd7\x41\xce\x6e\xd4\xb5\x3a\x9f\xa2\xab\x4a\x81\xf6\x91\x73\x7d\xde\x63\xfb\x1d\x17\xb2\xe4\x4e\x67\x59\xf3\x87\x8f\x5b\x69\x9f\xd6\x94\xb2\x69\xd5\xa7\xc1\x24\x9d\x0e\xfc\xd4\xf6\xbd\xea\x53\x4a\x77\x53\x62\xd0\x49\x1d\x76\xce\xbc\x3c\xc7\x24\x70\xb2\x26\x65\x17\x24\x6b\x11\xaf\x5e\xcd\xd3\xdd\x58\x41\x29\x45\xb1\xab\x6e\xbf\xca\xf6\x08\x22\x37\xb6\xf1\xea\x56\x2b\x2c\xe1\x66\x7f\x8b\x34\x32\xf2\xd3\x9d\xc0\x76\x97\xca\x72\x96\x95\xd7\xc9\xa5\x50\x13\x97\x18\x4e\x8f\xe8\x10\x6c\x35\x61\x61\xac\x7b\x76\x2f\xd1\x74\x98\xae\x39\x37\x6b\xe2\x58\x53\x9d\x82\x28\xc6\x0a\x96\xa7\xca\xea\x0a\xf4\xf9\x7f\x45\x46\x44\x0b\x59\x1d\xb7\x5d\x05\x2a\x70\x16\x19\xd6\xd7\x20\x71\xca\xff\x04\xd6\x6c\x5e\xdd\x4e\x94\x0a\x2f\x6a\xe9\x8d\x6c\xcc\xe2\x92\xcc\x5f\x0b\x63\x85\x81\x74\x69\xa3\xaa\x80\x7f\x3a\x9c\x8e\x7c\xba\x28\x2d\x2e\xbe\x46\x9f\x13\x66\x15\x5e\x62\xd3\x09\x15\x13\x7a\xab\x71\x31\x49\x30\x32\x4b\x25\x04\xad\x51\x1e\x9e\xac\xc7\x6b\xf8\x26\x03\x39\xc4\x56\x62\x77\xd7\xf6\xd8\x78\x95\x77\x29\x92\x38\x69\x7c\xc5\x9a\x4e\x8b\xb1\x51\xd9\x12\x76\xf4\xf5\x64\x30\x5e\x83\xb0\xda\xa8\x8e\x8c\x56\x41\x16\xcd\x66\xc9\xfc\x34\x24\x20\xe8\x5b\x51\x1d\x06\x41\x52\x01\x7c\xc4\x24\x1a\x17\x50\x7c\x9c\xe1\x39\x3d\x31\x25\x74\x40\x5d\x1d\x81\x49\x0c\x36\x37\x00\x75\x16\x77\xd4\x1c\x60\x75\x2e\xf7\x3e\x1a\xef\x1b\x95\x4d\x79\xf0\x3e\xf2\x75\xf8\xad\x23\x15\x7e\x4b\x50\x54\x4d\x08\xd4\x45\x88\x79\xc5\x72\x81\x58\xd4\x1b\xba\x69\x5f\x0e\x28\xb0\x4e\xb2\x3d\xb4\x83\xc6\x5d\x11\x3d\x1f\x47\x5a\x17\x8e\xf1\x0c\x41\xe4\xd4\x1f\x69\x40\xef\x63\x7e\xd3\x7e\x6c\x45\xc4\x00\x3b\x30\xc3\x81\x15\x9b\xa2\xae\xc8\x47\x9b\x1a\x40\xc2\x81\x1d\x0b\xa9\x06\xa5\x21\x5f\x27\x37\x2e\xd8\xab\x32\xb7\xb6\x8c\x2b\x3a\xa9\xa9\x6d\xcb\xca\x16\x4c\x56\x18\x8b\x68\xba\xf0\x3b\xec\x1b\xe7\x08\x7f\x63\xbd\xe7\x7f\x8f\x15\xaa\x56\x39\x3b\xb4\xca\x73\x62\x17\xf2\xe6\x5a\x4a\x4d\x76\x81\x91\x2f\x5b\x7e\x78\xb6\x68\x76\x01\xb2\x12\x6f\x91\x37\x16\xbb\x19\xd2\x58\x2d\x68\x51\x31\x65\x66\xb7\x9b\x2c\xad\x85\x36\xcc\xee\x8d\x11\x87\x98\x0c\x32\x03\x97\x9a\xec\x30\xb3\x6b\x1c\x2b\x3f\x30\xbe\x59\x7d\x7c\xc5\xe8\xe6\xb5\xd1\x0d\xe3\x8f\xd9\xd3\xf2\xa9\xa6\xf0\x1e\x51\xfc\x43\x76\xa1\x51\xbc\xa7\x7a\xd7\xb4\x34\x9b\x59\x56\x4c\xd1\xe9\x98\x0d\xdb\x9c\x60\x7a\xf0\x2c\xbc\xc7\xd1\x53\xa7\xc0\x04\x57\x86\x34\x61\xb6\x8d\x77\xb8\x7c\xaa\x56\x7b\xed\xfa\x0b\x93\x7b\xdb\x3f\x56\x3b\x70\x52\xf8\x88\x3b\x0c\xc4\x25\x5b\xdf\x65\x51\x09\xb6\x7b\xd3\x2d\xbf\x9f\x36\xa4\xe3\x54\xda\x54\xb3\x9b\x47\xa5\xe9\x8d\x27\x82\x8b\xe4\x8d\x60\x4f\x71\x6f\x1d\x16\x16\x06\x3b\x09\xe7\xd0\x73\xd1\xd5\x4c\x75\x35\x33\x6e\x36\x99\x01\x2e\xe6\x55\x98\x4b\xde\x0b\xd1\x1b\xf2\xef\xb0\xf4\x74\x23\x14\xea\x4c\x83\x0f\xdc\x57\x7c\x65\xe8\x57\x19\x29\x4e\x6b\x56\x55\x4a\x5e\x58\xc6\x8a\x20\x5f\xa2\x56\x63\x5a\xd4\x23\x48\xcd\x13\x85\xe7\x48\x44\x78\x8e\x22\xb0\x12\xbc\xbf\x44\xeb\x9c\x6a\x11\xdf\x9c\xd8\xb8\x5b\x2e\xd7\x61\x98\x46\x53\x2b\x72\x12\xbc\x99\x27\x72\x8a\x2e\xea\x29\x30\x38\x65\x1d\x6e\x01\x5b\x13\xfa\x0a\xf4\x2f\xc3\x74\x51\x87\xdc\x8d\xee\x81\x7d\xcf\x0c\xf8\xf4\x84\x1c\x8b\x63\x75\x54\x4f\x97\x48\x57\x91\x47\x12\x6f\x80\x51\x31\xe1\xa3\x97\xcc\x31\x90\xc7\xd2\x2b\xa0\x97\x55\xd7\x62\x67\x64\x04\xf8\xc1\xbe\x15\xce\xba\x1b\xa1\x6a\x3d\x39\x3e\xce\x0c\x69\x39\x0c\xd6\x5d\x6b\xe8\xa1\xa2\x5a\xf7\x8d\x80\x3f\xd8\x35\x92\x00\xfe\x77\xfb\x67\xf0\x0c\xed\x5d\xc5\x23\x03\x48\xf0\x8c\xef\xb0\x51\xd7\x11\x60\x98\x62\xae\xfa\xc0\xdc\xb7\x21\xc3\xc8\x23\xf1\x52\x43\x8c\xee\xfa\xbd\x03\xdf\x42\xe9\xc2\x2a\x43\x33\x80\xac\xb6\x7e\x85\x7d\xaa\x17\x0a\xb3\x2e\x76\x88\x62\x46\x4a\x72\x54\x64\xa1\x16\xbb\x29\xd9\x27\x70\x4a\x61\x31\x10\x56\xb0\x62\xe5\x23\x4d\x28\xd5\xd1\x73\x3c\x46\xa7\x06\x60\x56\x90\x43\x78\x5f\x86\x29\x8f\xe9\x5a\x4d\xd6\x8f\xdb\xce\xd9\x4d\x5b\x6f\x61\xf1\x2b\x8c\xaf\xae\xb3\x78\xf1\x68\xe0\xf3\x99\x56\x8d\x94\xae\x8a\x8f\x5c\x8e\x1b\x5b\xcf\xc3\xf5\x08\xcb\x38\x01\x49\xb3\x85\x64\x1e\xc9\xd6\x6d\x15\x00\x06\x1a\x0e\x8b\x88\xa5\x8b\x38\x5d\xe1\x6d\x55\x42\xe7\x90\xff\x5d\x9d\x03\x93\x3a\x87\xbc\x42\x46\xd1\x32\x10\xe5\xce\x55\x4c\x43\x73\x44\x35\xf9\x17\x37\xe2\x2e\xd8\xed\x6b\xe4\x5a\xdd\xc1\x84\x4d\x67\x78\x47\x1d\xfc\x43\x3d\x25\x06\xcc\x20\xcc\x8b\x78\x36\xec\x54\xe9\xef\xf1\x33\x7e\x34\xf4\x9c\xf3\x7b\xb6\xd1\xa4\x9a\x14\xa6\x50\x5f\xdc\xcf\x17\xb1\x59\x9b\x45\x5c\x66\x8a\xd3\x71\x97\xec\xe9\xec\x5a\x5c\xdf\xd2\xbc\x4d\x46\x29\x9f\x65\x38\xeb\xac\xfa\x80\x06\x0f\x6a\x2f\x3b\x3c\xf6\xf7\x49\x32\x30\xab\x48\xd8\x47\x89\x66\xa6\xab\x9d\x0b\xfd\x8a\xb8\xee\xe1\xef\x0d\xae\xa9\x9c\x39\x34\x76\xa6\x5d\x21\xab\xc6\x0e\x8d\x86\x03\xe4\x34\x60\xe0\x7c\xde\x8f\x1d\xbc\xfb\xc5\xe5\xce\xb0\x1f\xdf\x37\x2e\x85\xd6\xdd\xd4\xd4\x2d\xcb\xfb\xf8\x10\x36\xc1\x28\xd4\x33\x53\xc1\xc8\xec\xb9\x2f\x96\xd7\xee\x20\x53\xf0\x91\x65\x84\x1b\x6b\xfa\x37\x77\x6b\x5a\x0c\xb4\x14\xd8\xdf\x9d\xe9\x33\x11\x5b\xd1\x45\xe3\x9d\xf9\x3d\xe4\x6c\x59\xcd\x5c\xc3\x6e\x29\xde\x3f\x52\x16\xd9\x9d\x74\x57\x59\x5f\x48\x7e\x1d\xcf\xb8\x25\x2a\x78\xb3\x6f\xf7\xcf\x2e\xc1\xa4\xe2\xc8\x12\x66\xf8\x03\xb4\x75\xfc\xef\x68\xeb\xf8\xa1\x3e\x53\xff\x6a\x81\x8b\x57\x71\xed\x88\x22\x4e\x53\x96\x8b\x6b\x35\x0d\x23\xac\x7a\x9e\xac\xe4\xfb\x79\x16\xf5\x3c\x18\xe1\x81\xd3\xd5\x61\x86\x95\x54\x3d\x0b\x10\xcb\x46\x86\xab\xb8\x25\x48\x5d\x20\x0e\x23\x34\xe3\x58\xe2\xae\xc1\xe9\x5c\xc2\x15\x1a\x0d\xd4\x0c\xa0\xb9\xfc\xb7\x11\xf9\x0e\x04\x46\x98\x7c\xbc\xba\x13\xf5\x65\x46\x2c\xfd\x56\x0b\x9c\x6d\x73\xe0\xcd\x25\x82\x57\x64\x2e\x74\xc4\xf0\xd0\x4a\xad\x2b\x1b\x2d\x08\x0a\x37\x81\xe7\x6b\x43\xd7\x8f\x5f\xe9\xae\xe4\x4a\x96\x17\xc1\x27\x90\x2b\xbe\xc6\x3f\xf2\x52\x7a\xe8\xd4\x99\xf6\x36\xbc\x95\x41\xc5\x2f\xf1\xb7\xb4\xf1\xfa\x7f\xe0\xfe\xf3\xe9\xfe\x00\xae\x76\x3e\xc5\x1d\x77\x6f\x02\x32\x75\x6d\xc9\xb2\xa1\x2c\x14\x34\x70\x7b\x7a\x36\xb6\x33\x23\xd2\xf8\x1a\x10\xb5\x85\xf6\xed\x29\x40\x2d\xa2\xe0\xad\x02\xe7\xd6\xcc\x81\x51\x09\x36\x81\x73\xd9\xf8\x36\xa7\x0b\x19\x45\x34\xf3\x8b\x66\x7e\xe7\x66\x2f\xb7\xed\x5f\xeb\x70\xe6\x80\x40\xdd\xfb\x0a\xfd\x3a\x03\xa6\x2f\xd4\xfa\x58\x1c\x8e\x69\xfe\x3b\x5a\xe0\x21\x37\xf1\x33\x3a\xd4\xfc\xcc\x81\x6b\xfa\x15\x1d\x19\x42\x8a\xe6\x9d\x04\x21\x70\x70\x18\xf4\x74\xf9\xcf\xc2\x9c\x9b\x51\xcb\x6f\x07\x0f\x27\xec\x2a\x38\xfa\xed\xf0\xe1\x8a\x7e\xd5\xce\x03\x03\xaa\x97\x41\x2c\x0a\xc5\x54\xe8\x81\xc0\x99\xd1\xd4\xb7\x0f\x04\xce\x6c\xe7\x6f\x85\x6e\xcf\x44\xc1\xec\x1f\x85\x6e\x8f\xda\x43\xb7\x87\x18\xba\x3d\x6c\x0b\xdd\x0e\x83\xad\x96\xdd\xdd\x1d\x8e\x7b\x28\xee\x2b\x5e\x4c\x61\x89\xfa\x38\x09\x00\x96\xe8\x6f\x07\x77\x5f\x8a\x4e\x2c\x6b\x34\xf2\x2c\x6e\x1c\xe3\xd6\x49\xdf\xad\x91\x3c\x93\xf6\x12\xa6\x49\x64\xab\x16\x41\x1f\xcd\xb7\xdf\x89\xd7\xa4\x6c\x72\x3a\xcf\xea\xb4\xad\x46\xd6\xcc\x9b\xdf\x2e\x62\x4d\x10\x9e\x3e\x36\x2c\x25\xf5\xf7\x4e\x14\xe7\x51\xc2\x8c\x60\xf2\xe7\x71\x9b\x5f\x53\xda\xff\xb2\x0a\xa8\xdb\x39\xc3\x7b\xca\xb9\xd3\x79\x46\x7f\xc5\xb3\x79\xbd\xf9\xe1\x24\x5e\x0f\x5c\xff\xa2\x7e\x28\xf1\x32\x83\xd7\x9f\x22\x54\xe4\xc4\x0b\xb4\x17\x36\x8c\x1f\xe3\x7d\x53\x95\x78\xa1\x96\x37\x30\xe1\x6e\xcb\xd4\x61\xc6\x5d\x50\x14\x11\x18\xad\x69\x2e\xc8\x35\x28\xc6\xaf\x17\x17\xe8\xc3\xcf\x6f\x18\x4b\x49\xe7\xc0\x5d\x8c\x4d\x4c\x44\x0c\xad\xbc\x2f\x2e\x16\x21\x0f\x2f\x2e\xa8\xa8\x6d\xef\x30\xa8\x69\x4e\x37\x56\x19\x93\xe8\x63\x35\xb2\xba\x1d\xf5\xb3\xda\x2c\x12\xb1\xf4\xe8\x24\xb9\x53\xbf\x2e\x51\x78\xb7\xb1\x5b\xfe\x3c\x4b\x89\xe5\x49\x4d\x2f\xed\x06\x32\x70\x67\xac\x43\x41\xa6\xf9\xf5\x4f\xc1\x87\x10\x4a\x5f\x33\x7f\xe0\x46\x20\x45\x72\x8a\x37\x99\x05\x78\x56\x4c\x11\xaf\x32\x15\x03\x0b\x75\x7c\x57\x6c\x2c\x92\x40\xf4\xc4\xce\xf8\xa4\xca\x71\x31\xc1\x0f\x5d\x16\x16\xcc\xcf\x7b\xf8\x83\x06\x46\xe1\xd6\xa7\xa8\x38\xe1\xd6\x5d\x94\x79\x88\xcd\xe1\x07\xf9\xb8\x73\x1d\x07\x4f\x04\xa1\x49\x34\x16\xc6\x2a\x0c\x61\xaa\x7e\x1a\x93\x1b\xe7\xa9\x02\x5a\x10\x58\x12\x0b\x43\xce\xc9\xf7\x00\x68\x7e\x8f\x61\x44\x2b\x94\x9c\xe9\x41\xb0\x19\x6a\xd8\x0a\x3c\x86\xcc\xe4\x10\x28\xc3\x2a\xcd\x91\x21\xca\x2c\x8c\x64\x69\x64\xb7\x8f\x8f\x37\xf2\xf4\x1d\x06\xcb\x8d\xac\xfc\xee\x6e\x68\x4f\x87\xbe\x75\xcb\xad\x08\xb6\xb2\x10\x36\x2e\xe2\x7e\x6b\xd1\x7f\xa5\x1a\x4c\x41\x76\x84\xb7\xac\x28\x79\xc8\x08\x42\x55\x06\x79\x7f\x85\x01\x97\x70\x4f\x8f\x82\x8d\xe2\x61\xa2\xc9\x60\x6c\x6f\x66\x9e\x17\xcd\x15\x30\x3a\xa2\x73\x89\xde\xf9\xd6\x5e\x4f\x81\x5b\xaa\xf5\x33\x41\x61\x42\x32\xe6\x5a\x06\xaf\x16\xb7\xe7\x49\xc4\x4f\xa5\x19\x18\x8e\xa8\xaf\x4d\xc2\x6a\xf3\xc3\x1d\xee\x64\x50\x78\x3d\xf1\x97\x41\x26\x46\x19\x3d\xff\xc4\x08\xaf\xf0\x49\x0e\x2d\xb0\x08\xb3\xca\x2c\x24\x9f\xa0\x37\x9b\x95\x7b\x6b\x9b\x10\x57\xd6\x10\xb7\x73\x07\xf0\x66\x86\x0d\x50\x47\xae\xbd\x90\xf3\x5c\x3a\xec\xe1\xf1\x40\xa7\xc5\x3a\xaa\xe6\xce\xc7\x29\x2a\x85\x3b\xb0\x3b\xa6\xc1\xd4\xfb\x7f\x58\x1f\x51\x25\xaa\xb1\x5e\xdf\x5f\xb1\x5a\x85\x17\xa4\xc7\xfc\x0a\x33\x37\xb7\x8a\xc9\x70\x8a\xdf\x7b\x3f\xbd\x79\xde\x4e\xc1\xb5\x8a\xa6\x1e\x4a\xf7\xf9\x01\xd1\x58\x1a\x3c\x89\x83\x2e\xd4\x8d\xeb\x63\xd4\xdc\xe3\x13\xee\xb1\x29\xac\x3c\x53\x16\x36\x6e\x04\x45\x36\xc4\x42\x58\xbf\x8b\x2c\x86\xe1\x03\x30\x1e\x09\xab\x9d\x51\x9a\x17\x88\xa2\xf9\x8a\xc8\xec\x80\xe4\xcc\x6a\xa6\x39\x48\x88\xd1\x34\x52\x9a\xdb\xd1\x01\x38\x45\x41\xc7\x09\x3f\x19\xd2\x21\xd5\x38\x9f\x64\x63\x9b\x59\x99\xfd\x69\x0c\xbb\xaf\xf4\xea\x52\xa8\x72\x30\x94\x3b\xaa\x71\x87\xb6\x8e\xb3\x22\x8a\xdc\x97\xb5\xd2\x56\x69\xfd\xbb\xc2\x14\xcf\xb7\x1f\xbe\x8b\x82\xbf\x62\x69\xa0\x8d\xe5\xff\x8a\xb5\x6c\x8f\xb7\x0d\xe3\xd5\xfa\x44\x73\x81\x65\x81\x75\x42\x05\xb0\x8d\xdd\x2e\x15\x2a\x05\x72\xdf\x21\xfd\x1a\x45\x2d\xc4\xa3\xa4\xa0\x84\x87\x6c\xb9\x04\x7a\x1d\xc4\xae\xb4\xbf\x0a\x32\xa9\xcd\x4d\x7b\x25\x87\x3a\x62\xc3\xb9\x30\x92\x55\x45\x6e\x24\xab\x82\x64\x0a\xb1\x4f\xd5\xc1\x0b\xae\x74\x55\x25\xbc\x62\xfc\x27\x59\x6d\x68\x62\xf9\xab\xf6\xa3\x85\x87\x75\x16\xb6\x47\xe8\x2c\x30\x42\x17\xfb\x9d\x35\xec\xb2\xdb\x44\x1a\xd3\x5b\x41\x9d\x91\x92\x66\x7e\x40\x2a\x79\x36\xb6\x4f\x3e\xa3\x20\x90\xe8\x3b\xf5\x3c\x5b\xb0\x67\x18\xdb\x0b\x5d\x01\xe4\xc8\x19\xf1\x83\x30\xa8\xbd\x2d\xdd\xcc\x80\xd5\x5c\x24\xb3\x5c\x16\x84\x42\x50\x9b\x8d\x6e\x9f\x56\xe3\x9b\xed\x02\x87\x79\x9d\x60\x78\x18\x4a\x8c\xf1\xa0\x84\x36\xc3\x72\xda\xa1\x43\x8f\x7c\xda\x79\x04\x1c\xdc\xa0\xe3\xd3\xe1\xb1\x22\xcf\xc8\xe6\x3b\x7a\x9a\x1c\x84\x27\xd3\xf6\x00\xf5\x00\xf8\x5a\x20\xa0\x18\x3c\x35\x69\x5b\x06\xa3\xdd\xfa\xc3\x2f\x06\x03\xf7\x0a\x36\xca\x85\x3f\x74\xbf\x85\xdf\x33\xf8\x77\x0e\xff\x5e\xc2\xbf\xdf\xab\xc8\xcc\x2f\xe5\x51\x17\x90\x22\x32\x52\xd5\x77\x95\xd4\x22\xb4\x76\x36\x9d\x58\xd8\x4a\xb2\xde\xb7\x20\xf5\x7f\xfb\xe9\x70\xe4\x0c\x47\x5d\xd6\xdb\xd8\x32\xea\xab\xf4\x9d\xec\xfd\x7e\x7c\xfc\x1d\xda\x3c\xff\x15\x8b\xd3\x13\xab\x9c\xfe\x15\xfb\xdf\x55\x9a\xf4\xce\x9f\x54\xd5\x94\x8e\x48\xbe\x86\x42\xbf\x31\xbc\xed\xa0\xb7\x45\xef\xcd\xde\x9f\xb6\xdf\xb9\x51\x6d\x75\x7e\xa1\xa7\xbb\xbb\xce\x4f\xf4\x80\x41\x12\x5a\x4a\x61\xc4\xa2\x96\xcf\xb2\x34\x46\xc8\xbd\x71\x9e\xda\x9f\x7e\xe6\x7c\x06\xf0\xfe\xe2\x89\x03\xaa\xaf\xc2\xad\x65\x3b\x4f\xe0\xb3\x8f\xe9\x98\xf4\x53\x2d\x09\x4b\xc0\xce\xb4\x5f\x33\xeb\x5d\xa1\xe2\x58\x36\xfa\x6d\x56\xe6\x05\x62\xc5\x31\x2d\x59\x7a\xbf\xf7\x87\x83\x01\x46\x78\x3c\x73\xe0\xe5\x53\x78\x81\xe7\x73\xf8\xf7\xd2\x76\x4b\xe8\xfb\x85\x90\x4b\x78\x76\x4e\x43\xde\xa2\xe1\x48\x6b\x9c\xfb\x4b\xd3\xf4\x43\xed\xca\x46\x1c\xaf\x4a\x02\xd7\xb6\xfc\xb0\x3b\x87\x63\xda\xde\x61\x5b\x4b\xe4\x70\x8a\xcb\x13\x4a\xe1\x50\x52\xad\x0b\xc7\xb1\x5d\x5a\x2e\xa5\x08\x86\x25\x93\x55\x52\x1c\x5c\x25\xb3\x0c\xc3\x94\x2d\x92\x69\x2d\xc9\xcf\xe6\xee\x11\x50\x4e\x9a\xff\x22\xa2\xaa\x7d\x3a\xa8\xda\xda\xa9\xf8\x55\x25\xce\x0c\xa3\x45\x0c\x57\xaa\x73\xed\xeb\xc7\xbf\xad\xb1\x98\x40\x37\x7e\x64\xab\x17\xb7\x1b\xab\xf3\x87\x35\xf5\x3b\x8e\x70\x15\x24\x0b\xab\xf7\x65\xc6\x81\x80\x88\xa5\x72\xd7\xa1\x3d\xd0\xed\xc4\xa6\xd9\xcc\xd7\x71\xc3\x15\x99\xf8\x40\xe9\x4f\x66\xe8\x63\xd8\x29\x3a\x1f\x13\xcf\x8b\x2a\x37\x18\x9c\x97\xd9\x0d\xcb\x9f\x87\x74\xae\xc1\x74\x3c\x04\xc3\x68\xbd\x61\x5e\x84\x56\x37\x1d\x0f\x16\x3d\xde\xf2\x63\xe5\x53\x0f\xb8\x4e\x8c\x79\x61\x3a\x01\xa9\xde\x3a\x16\x9b\xc4\x53\x04\xe6\x59\x9e\xc3\x94\x63\x5e\x0c\x64\x41\xf4\x04\xef\x88\x05\xaa\x61\x98\xb9\x57\x0d\x45\x89\x19\x95\x4d\x92\x56\xf8\x28\xa2\xb2\x19\x54\x84\xe9\x43\xc7\x1c\x8f\xd0\x6f\x82\x24\x21\xe9\x13\x43\xdb\xd7\x3b\x07\xbd\x73\x72\xed\x8b\x68\xfb\x30\x28\x55\xd3\x3f\x56\x4d\x67\x6d\x4d\x67\x0f\x6a\x3a\xfc\x47\x4d\xff\x56\x35\xbd\x6d\x6b\x7a\xdb\xd6\x34\xd4\x37\xdc\x6b\x9e\x9a\xb8\xaf\xa5\x7f\xfd\x83\x96\x1a\xad\xfc\xf4\xf1\x56\x7e\xfa\xcf\x5b\xf9\xe5\xe3\xad\xfc\x5e\xb5\xb2\x6e\x6b\x65\xfd\x80\x56\xae\x82\xd5\x3f\x1a\xb0\x9f\xab\xa6\x8b\xb6\xa6\x8b\x07\x35\xbd\xfc\x47\x4d\xff\x1a\x37\x9c\xd2\x88\x64\x5e\x27\xbd\xa8\xa2\xb2\xca\x40\xa2\x2a\xf3\xc9\xa1\x32\xb7\x87\xcb\x7c\x79\xa8\xcc\xaf\x87\xcb\xfc\xf2\xcf\xe6\xf1\xe3\x06\x6a\xb6\x1f\x1f\xfb\xef\xfe\x59\x4b\xa3\xbd\x96\xfe\x1d\x5b\x8e\xb8\xb3\xe9\x9e\xd6\xbe\x69\xe0\xa2\xff\xc7\xcc\xf1\xe6\x6f\x17\x1f\x1e\xef\x3e\xe9\x83\xe8\x5f\x00\xaf\x16\x34\xdb\x7a\x62\xdb\xd8\xc4\xef\x81\xc3\xe9\xad\x56\xe3\xbf\x6b\x84\xdf\xb1\xd2\xc9\xd3\xcf\xa7\xc8\xcb\xf8\x23\x76\x62\x5e\xf5\xf6\xdf\xe9\xe7\x95\xb8\xe7\x63\x78\x5f\x27\xd3\xec\xbf\xd2\xd4\xe2\xe3\x83\xc7\xff\x59\x4b\x27\x8d\x96\xfe\xfc\x78\x4b\xec\xbf\xd3\xa7\x6f\x3f\xde\x52\xfe\xdf\x69\xe9\xec\xe3\x2d\x95\xff\x9d\x96\xce\x3f\xde\x52\xfc\xdf\x19\xa7\x97\x1f\x6f\x29\xcb\xea\xfc\xc5\x99\x20\x8d\xcd\x9a\x83\x91\xdd\xa0\x94\xe3\x9a\x7a\x2e\xc7\x5b\x5a\x30\xd0\x45\x90\xd7\xe8\x52\x98\x99\xae\x55\x50\xf3\x9b\xf8\x8a\xfd\x95\xa5\xec\x35\xc9\x7d\x16\x69\x6f\x27\x03\xc1\xd2\x38\x1d\x60\x97\xfe\xdf\xff\x33\xef\xda\xee\x53\x84\xa1\xc0\xf8\xf2\xe9\xd3\x2a\x6c\x01\x73\xbe\x47\x3b\x34\x90\x7f\xdc\x91\x8d\xcf\xa5\x7c\x36\xf4\x4f\x55\xf7\x36\x6d\x88\xdc\x3c\x64\x7f\xaf\x61\xaf\x86\xbc\x24\xdb\x3f\x03\xad\xcb\xa4\x5c\x6a\x0f\xb4\x44\x75\x41\xb6\x0b\xbc\x45\xf8\x16\x92\xd5\x9f\xa6\x10\xbd\x27\x80\xb5\x34\xc0\x44\x1e\xb3\x14\x7a\xac\xb5\x08\xbc\xa6\x38\xc0\xaa\x47\x53\x08\x28\xb2\x9a\xfa\x9e\x67\xff\x3a\x7f\xad\x76\x1c\xe3\x60\x3c\xfb\x88\x29\xa7\x69\xf3\x5d\x5a\xc6\xf5\xee\xa9\xb8\xfd\x4b\xdc\x1c\xd8\x67\x22\x14\x97\x3c\x40\xbf\x4c\xdc\x52\x5f\x2c\x15\x04\x97\x55\x24\xd6\x19\xef\x6d\x41\x36\x22\xe3\xfb\x43\x86\x79\x69\xff\x64\xf8\xe4\xe4\x29\x7b\xba\x43\x46\x7a\x36\x9a\xcf\xfd\x78\xca\x67\x65\xff\x32\x99\x61\x78\xdc\x53\xfc\x9d\xf7\x41\x32\x82\x89\x1a\xcf\xfd\xd9\x8b\x44\x18\xf3\x8b\xcc\x95\x84\x70\x8f\x85\xe9\x3a\xfb\xef\x98\x98\x72\x32\xb8\xac\x5e\x85\xad\xe1\x3a\x6b\xb3\x05\x3d\x64\x7e\x70\xa4\x82\xf8\x1d\x1f\x1f\x29\x5f\x38\xe6\x02\x80\x0e\xce\x5d\x28\xa5\x7c\x1c\x85\xe2\xbb\xb2\x24\x45\x5d\xf6\x27\x25\xaa\x5a\x42\x75\xcb\xf5\xb4\x44\x9d\xd2\x00\xa4\x62\xe1\xbd\x6f\x9c\x29\x1d\x1f\x97\x64\xc4\x5b\xe9\x9b\x48\x07\x1f\x0a\x73\x0f\xba\x39\xb3\x42\x81\xf5\x1d\x05\xce\x99\x0c\xdb\x1c\xd4\x48\xa9\xc5\xd0\x50\x41\xf9\xa7\x61\xe0\x59\x1e\x00\xbc\xdc\x1b\x1a\x52\xcf\xbe\xc3\x9a\x51\x54\xf8\xab\x55\x25\x1d\xee\x98\x45\x77\xbe\x34\x90\x6d\x9a\xe7\x6a\x0f\x49\xb4\x76\xaf\x10\x81\x32\xa7\xc6\x00\x3b\x80\x01\x4a\x4a\x6d\x5f\x21\xf9\xf8\x78\xf6\x81\x1e\xc8\x16\x41\x3b\xfb\x11\x62\x62\x81\x98\x98\x10\x53\x8d\x0a\x7e\xa4\x81\xc1\xc3\x29\x18\x9b\xe1\x04\x03\x7b\xf0\x83\x66\xc2\xda\x56\xe3\x1e\x93\x15\x5c\x81\x1f\xb1\xc8\x5d\x67\x0d\x01\x97\xb4\x88\x66\x8e\x55\x76\xc0\x66\x57\x07\x44\xa9\xdd\xbc\x47\x21\x79\x8f\xf0\x5a\x32\x0c\x97\x45\x17\x1b\x7a\x9e\x0e\xc7\x8b\x44\xb2\x1e\x27\x77\x63\x36\xf0\xdd\xf9\xeb\x57\x8a\x52\x81\x54\x5d\x6c\xb2\xb4\x60\x6f\xd8\xad\x49\x2b\xae\x8d\xdd\xe2\x36\x93\xb7\x00\xfc\x28\x3c\x3d\x35\x49\x2c\x58\x02\xf4\xe2\x15\xc8\xf9\x16\x64\xba\xcc\x16\x5b\xbc\x84\x56\x64\xa6\x83\xa0\x5b\x5e\x86\xc9\xd7\x79\xb8\xba\xa2\x3b\xd6\x1b\xad\x91\xf7\x7a\x16\x7c\xc0\x03\x51\x3c\x84\xe9\x9c\xf4\x4e\x7a\x4f\x3b\xbb\x31\x29\xa9\xd3\xec\xe6\xee\xce\x52\x8f\xfb\xa8\x77\x14\x2a\x77\x42\x2d\xb5\x45\xcd\xa0\x70\x1a\x70\xcf\xb2\xb6\x93\xd3\xad\xb4\x2a\x40\x6b\x92\xdb\x2c\x58\x64\x11\x11\x06\xf7\x32\xc3\x3e\xaa\xd7\x17\x09\xa3\xaf\x17\x59\x70\x13\xa7\x8b\xec\x66\x8c\x74\xfe\x2c\xb3\x2e\x33\xe1\x51\x8c\xfd\x2d\xf0\x46\x55\x8a\xb0\xf4\x06\x26\xe8\x2e\x0a\x79\xb4\xb6\x6e\x32\xfb\x43\xa3\x65\x33\x28\x9a\xd4\xda\xb0\x40\xeb\x01\x60\xf4\xb8\xe7\x8d\x6d\xba\xb6\x04\x2f\x53\xad\x36\xd4\xdd\x0e\x5b\xad\x50\x2f\x81\xb2\x3a\x8b\xf8\xba\x63\xf7\x0a\xbe\x4d\x18\x6a\x2f\xbe\xcf\xb3\x0d\x50\xc1\xad\xd5\xc9\x36\x61\x14\xf3\x6d\x07\xb5\x61\x1d\x5b\x42\x74\x2e\x4f\xc9\x5e\x64\xc1\x45\xd6\x93\x95\xf4\x36\x79\xc6\x33\x5c\x58\xee\xbb\x2c\x78\x91\x61\x3d\xcf\x38\xec\x2d\x97\x25\x67\xee\xb3\xbd\x4f\xaf\xce\xdd\x57\x54\xfe\xf9\xf9\xf9\x39\x36\xfc\x15\x8b\x92\x50\x1c\xa9\x18\x75\xbd\xc9\x82\x57\x99\x09\xd3\xb8\x51\x4f\x83\x14\xbc\x33\x6d\x3c\xe0\x8b\x83\x60\xbb\x7b\x6d\xd7\x4a\xe1\xfe\xf5\xac\x51\x0e\x98\x04\x2a\x59\x6f\x7c\xaf\xd8\x9b\xfd\xe6\x70\xb9\xee\x4c\x23\xc8\x76\x17\x01\x3e\x49\xe9\xe6\x3b\x22\x17\xa9\x08\x47\x3d\xe8\x0f\x76\x78\x3c\x08\x33\xe1\xde\xb2\x58\x08\xca\x62\x15\xf8\x37\x48\x8d\xb2\x57\xe6\x7e\x55\x8f\xda\xdf\xb0\x1f\x92\xb7\x3e\xed\x19\xb0\x0b\xa2\x4c\xd6\x45\x18\x5d\x5c\x6a\xb5\x19\x99\x19\xc1\x86\x84\x96\x71\x36\x5e\xdb\x2a\x0e\xb5\xc6\x3a\xf7\xd8\x96\x79\x73\x9d\x37\x17\x5e\xd2\xc2\xdd\xe7\x50\xcd\xd5\xb9\x25\x59\x32\x95\xf6\x43\x5b\x69\x2d\x57\xb5\xa8\xe9\xac\x08\x39\xf0\xff\x1f\xb4\xe4\x13\xf6\xbf\x8c\x16\xa3\xc5\x1a\x5a\x58\xc3\x94\x30\x6d\x5c\xf3\x20\x02\x5a\x3c\x18\x37\xf1\x69\x56\xeb\x01\x46\x15\x8b\x6b\xd8\x29\x1b\x90\x53\x80\x0c\x03\x3f\x94\xdb\xd2\xa3\xe8\xe6\x14\xba\x00\xd8\x49\xbb\x8e\xac\xfd\xa6\x8c\x6e\xc7\x73\x0c\xaf\x72\x10\x5d\xf5\x46\x5b\xca\x1d\x02\x40\x59\x9e\xb8\xe5\x9c\xd0\x57\x94\x57\xed\xb8\xab\xc5\x10\x10\xd1\xb0\x0e\xe1\xae\x82\xa9\x1c\xdb\x92\xed\xc3\x18\x65\x31\x7a\x81\x60\x80\x06\x66\x1e\x1d\x36\xf3\xed\xc1\x5e\x95\xa9\x54\xe2\x34\xfb\x59\x98\x36\x4c\x25\xe5\xd9\x97\xd6\xfb\x63\xf4\xe8\x0c\xc7\x3b\x0c\x06\x1f\x03\x36\x43\x20\x52\xc4\x1d\x3a\xe8\x8b\x70\xd2\x56\xee\xc5\x76\x1f\x0f\xb6\x6a\xf0\x56\x59\xa5\x4d\x09\x27\xa7\x7e\xb4\x25\xd9\x2b\xa6\xd8\xd0\x69\xac\x8e\xf3\x5d\xc3\x16\xbe\x95\xe7\xb3\x0c\x3f\x92\x2e\x70\x8c\x80\x79\xf3\x14\x05\x65\x4b\xc0\x65\xee\x51\x5c\x3b\xe6\xe9\x90\x6e\x53\x0c\x98\x62\x61\x98\x06\xaf\x24\xb3\x30\xc2\xd2\x22\xde\xc3\xd3\x01\x7e\x9f\x22\x11\x71\xe9\x4b\xc6\x6c\x11\xf0\x40\x1a\xc9\xa7\xfa\xd2\xfc\xa9\x69\xcc\xcf\xdb\x0c\xe4\x7b\x4f\x6c\xb3\xb7\x42\x58\xca\xf2\x16\x4e\xe3\x43\xfd\x02\x4c\x69\x14\x2a\xd6\x5e\xab\x63\x47\xde\xea\xf2\xf1\x98\x66\xb3\xbe\xc1\xa1\xc4\x0b\x37\xa4\x05\x4d\xee\x94\x93\xc9\x64\x88\x01\xbe\xd4\x58\xd1\xb4\x3a\x65\xd3\x3c\x88\x9d\xa1\x5f\x06\xb1\x3e\x6c\x69\xde\xd7\xf9\x3f\x09\x11\x3b\x6d\xc2\x34\x05\x58\x7c\x82\x4a\x43\xb4\xdb\x11\xd3\xf6\x3e\x0b\x0c\x54\xb6\x8a\x93\xc0\xde\x55\x59\x5e\x02\x5e\x83\xf7\xe8\x45\xb6\xe4\x7a\x0c\x74\x15\x3f\x62\x37\x31\x03\xf5\x97\xd6\xfd\xba\x5c\x2e\x13\xd6\xce\x94\xd1\x35\xea\xfa\xa8\x15\xc9\xcf\xe0\xae\x16\xfc\xb3\x9b\x7b\x9e\x2b\xaf\x75\xa7\x48\x21\x74\x57\x46\x4a\x17\x60\x68\x8b\x5c\x6c\x08\xb8\x8e\xab\x7d\x26\x47\x33\xf0\x5c\x07\x7f\x34\xce\x81\x60\x05\x22\xff\x97\x8b\x8b\x36\xf0\x4e\x8d\x79\x9d\x1e\x6c\xc2\x38\x2f\x0e\x41\x4f\x21\xe8\x0c\xc9\x40\x5f\xc7\x5d\xb5\x30\x98\xe4\xc0\x72\xa0\xf9\xf0\x84\xc9\x88\x89\x33\x4e\x71\x50\xd2\x99\xe3\x18\xcd\xc5\xd4\xdc\x5f\xf1\xc6\xe4\xb4\xe9\x6a\xc1\x72\x9f\xb8\xc8\xf3\x3c\x79\x91\x90\x70\x61\xa6\x28\x97\x32\xd0\x62\x55\xc0\x25\xcb\x90\x5a\x87\x1d\x27\xc5\x23\x7b\xe3\x64\x53\x6c\x5d\x78\xaf\xb4\x91\xb3\xb4\x15\x09\xcd\x60\x16\x69\x10\xe0\x05\x32\xd6\x91\x44\xe6\x31\x9b\xac\x68\xb5\xdb\x14\xbd\xd2\x81\x03\x90\xfb\x87\x6f\xef\xd8\xb6\x8e\x57\x15\x24\x58\x47\xf0\x15\xb7\x41\x71\xe5\xc2\x68\x48\xc7\x50\x9e\x02\xd6\xfd\xad\x1a\x52\xf3\x66\x28\x51\x09\x74\x28\x8f\x0f\xd5\xf2\x7f\xda\xab\xf9\x00\x90\xfb\xcc\xa5\xf6\x7d\xac\x73\xd7\xa8\x94\x42\xac\xb6\x61\x82\x10\xab\x39\x76\x10\x5b\x53\x10\x13\x24\x66\x66\x73\x85\x99\xa6\xc7\x03\xf0\xcf\xc2\x74\xec\x00\xa1\x18\xee\xd3\x09\x71\x5f\x07\xec\x75\x01\xc6\x92\x18\xf6\xf1\xaa\x47\xf2\x78\xe9\xe7\x36\x5f\xe7\xd9\x0d\xc9\xc1\x2f\xf2\x1c\x7a\xd8\x89\xd3\x25\x39\xac\x3f\x12\xfe\x8d\xd2\xc8\x40\x85\xb9\x61\x5a\x09\x99\xdb\xe2\xc2\x77\x8a\xf5\x85\xf1\xb3\xb8\x0c\xa2\x95\xb9\x30\xcd\xc5\x8e\x87\xe6\xc3\x4e\xde\xc5\x5d\x6a\x82\x21\x42\x05\xce\xca\x7e\x66\xee\x75\x46\xa6\xd3\x46\xa6\xda\x6a\x80\x1d\xa3\x65\x68\x84\x9b\x28\xc2\x00\xe3\x22\x6e\xa0\xcb\x96\x8f\x4a\xbb\xc5\x7e\x8f\x14\x6e\xf2\x98\x99\x4c\x2b\x35\x10\xb5\x81\x95\xce\xb2\x8d\x09\x82\xf7\xe8\x7f\x58\x87\x45\xdb\xbd\xc6\x7f\x65\x4e\x4a\xd7\x8f\x81\x38\xb3\x73\x31\x06\x6e\x4b\x26\x4c\x9c\x61\x4e\xe0\x81\x0a\xd6\xbc\x05\x78\x2f\x13\xde\x35\x9d\xb3\xab\xec\x9a\xb5\xde\xa4\x1c\x60\x26\xb7\x6a\xf5\xf8\x58\x5a\xe6\x51\x05\xd8\x04\x2e\xa9\xfd\xab\x35\xb5\xc9\x1d\x99\xa7\xed\xe1\x88\x8c\xe0\x64\xe8\xef\x1d\x5a\x75\x89\xa9\xfd\x4f\x6a\x12\xb1\x7b\xe5\x72\x15\x75\xc9\x15\xf6\x9f\x55\x46\x4b\x8e\xcb\x25\xc7\x76\xb2\x6a\x59\xa4\xfd\xaa\x52\x85\x25\xbb\x66\x7d\x31\xb0\x61\x21\x3c\x07\x76\x38\x35\x84\x51\x53\xe5\x2d\x2f\x9a\x98\xf1\x39\x88\xa6\x62\x25\xfc\x95\x05\x9d\xb7\xb7\x83\x41\xc7\x7d\x9e\xc1\x10\xd4\xab\xc3\xad\x31\x65\x45\x4d\x6b\xa5\x4f\xb3\xa0\x13\x21\xba\x99\xc2\x5c\x8d\x26\x55\xa8\x05\xbb\xd2\xa7\x4b\xb3\x52\x8c\x7e\xea\xb3\x69\x28\x98\x1e\x66\xfb\x61\x45\xc1\xaa\xcb\x48\x91\x46\x6f\x82\x50\x6d\x62\x0b\x0c\xd7\xed\x38\xe8\x1f\x22\x96\x83\xe3\xac\x4e\x37\x63\xdb\x5a\x07\xd7\x74\x6c\x91\x04\x0b\xab\x08\xc2\xd9\x6a\x6e\xdb\xf6\x74\x2d\xf0\x58\xa0\x83\x05\xce\xf5\xc4\x9d\x15\xc6\x54\x9f\x42\x56\x3c\x81\x58\x06\x75\xcb\xd7\x42\x2d\x0c\x34\x75\x86\x8e\x60\xb4\x14\xc8\xfa\x61\xb7\x9f\x93\x36\x50\x99\x0d\x86\xe7\x5a\x0f\xa8\xed\x1a\x66\xef\x62\x1d\x52\x50\x8c\x7d\x84\xa4\xf2\x2c\x82\xae\xa7\x08\x67\x0c\xfa\x57\xed\xf1\x6d\x6b\x1b\xf8\xa7\xdc\x98\x20\xa9\x9a\xb8\x68\x4c\x8a\xf3\x6f\x87\xf6\x3f\xf9\x3d\x97\xed\x63\xf8\x34\xf4\x0b\xe0\xf8\x17\x3b\x27\x5c\x00\x91\x37\x8b\xb1\x97\xd2\xd6\x4d\x4f\xd5\xb8\x4e\x92\x6a\x71\x59\xe9\x8a\x93\x01\xc5\x33\xda\xdb\x56\x6a\x66\x94\x96\xa0\x6c\xc0\xfc\x60\x74\x39\x2a\x00\xcd\xb7\x6d\x18\x59\x15\xfa\x3e\xc6\x5c\xd8\x91\x7f\x37\xb7\x4d\xc5\x75\xcf\x32\xed\x72\x08\x94\xbf\x2a\xf0\xf3\xfe\x3e\xa9\xe4\x5a\x95\x2d\xcf\x92\xa4\x6c\x8d\x37\x95\xcb\x2c\x42\x84\x63\xfc\x00\x35\x8e\x89\x1a\xdb\x9a\xd9\x1a\xd4\xf8\x3a\x19\x1b\x1b\x76\xba\xc5\x62\x6f\x17\xce\x61\xfa\x3f\x8c\xc8\x42\xe9\xfb\x89\x6c\x80\xb7\x7e\xfe\x67\x24\xf4\x1f\x93\xbe\x3d\x22\xfa\x3f\x43\x9d\x90\x2a\x11\xe3\xcd\xd6\xe1\x75\x9c\xd1\xf5\x99\x55\xf4\xab\x43\xbc\xaf\x8b\x3c\xc2\x3e\x17\x89\x17\xef\x91\xc8\x39\x63\x06\x7b\x97\xcf\xe7\x81\x38\xd5\xaa\xdd\xa4\x99\x0a\x79\xe1\x2b\x58\x12\x9d\x1b\x76\xf9\x2e\xc6\xb0\xf7\x57\x05\xfe\xc9\xfe\x82\xbf\x67\xf4\x37\x83\x7f\xaf\x3b\x73\xa4\x8a\x8b\xb8\xd8\xa0\x0e\xb4\x46\x19\x2b\x66\x15\x67\x4d\xe2\xca\xd0\xec\x2d\x80\x51\x68\xf6\x74\xa6\xc1\xe2\x00\x56\x61\x9c\xec\x01\x86\x13\x83\x95\xca\x5a\x55\x79\xe8\xf4\x21\x7d\x3c\x3b\x3d\xbc\xa8\x38\xe8\x74\xc6\x82\xf6\x0c\xa4\x95\xa9\x71\xda\x89\x67\x12\x69\xed\x13\xde\x71\x81\x61\xb8\x0f\x48\xb6\x18\xc1\x46\x4c\x9c\x1e\xb9\x26\xf8\xe6\x1b\x00\x81\x4d\x8d\x5a\x95\x40\xd5\x35\x93\x9c\x16\x4d\xaa\xe7\x03\xce\x2e\x58\x0d\xaf\x6f\xd2\x4a\xb5\x8c\x71\x83\x6b\x35\x53\x64\x6c\x73\x3e\xee\x04\x33\x7b\x4d\x8e\x1f\x18\x64\x5b\x9b\xeb\xb5\xad\xea\xb4\x8a\xaa\xf5\x67\xe6\x76\xde\xbe\xfd\xe4\xb8\x63\x8b\xe1\xfd\x33\x0b\xfa\xb3\xb7\x6f\xdf\xfe\xf1\xf6\x93\xb7\xdd\xb7\xce\xdb\xe9\xdb\xbb\xb7\xb3\xb7\xf3\xb7\xd6\x5b\xfb\x6d\xef\xed\x87\xb7\xbb\x79\x7f\xe5\xbe\xcc\x60\xd6\xf5\x2e\x2e\x08\xfb\x17\x17\xd3\x3a\xe2\x53\x9d\x12\xd4\x2e\x7d\xac\x4d\x49\x71\x73\x6b\xaa\x2e\x32\xdc\xb9\xdf\x66\x07\x94\xbf\xbd\xf7\x25\xcb\xb7\xe7\x74\xd2\x81\xa8\x02\x7a\xf9\xf5\xc3\xf2\x3e\x93\x47\x0d\xdf\x67\xc1\x65\x36\x0b\xad\x4b\xe8\xec\x15\x4e\x49\x56\xa8\x2c\x1d\x7b\xee\xbe\x3e\x50\xdb\xf7\xea\xb4\x02\x5d\x69\xc7\x2d\xee\x42\xe7\xf1\x5f\x7f\x25\xa8\x2c\x3c\x04\xbb\xc8\x20\xe2\x9d\xe1\xbd\x36\xc2\x10\xf8\x10\xf4\x22\x77\xaf\x4c\x63\xe8\xc5\x39\xee\x59\x46\x79\xe8\x06\xc0\x29\xb3\x34\x3a\x61\x0b\xe2\x8c\x2f\xb1\xb9\x0e\xaa\x9a\x7f\xca\xc4\xe8\xfe\x48\xc2\x7e\x95\x53\x2f\x1f\x24\x6f\x3f\xaa\x94\x7d\x1a\xaf\xae\x41\xc6\x6c\x29\xf0\x15\xa9\x71\x65\xba\x50\x83\xd1\xb4\xad\x16\x6f\x76\x4a\xc6\xb0\x92\x1e\xa2\xf7\xa6\xab\x82\x93\xe3\xd9\x0d\x69\x12\x71\x3e\x67\x73\xdb\xf8\x5c\xd5\x89\x11\xe2\xe5\xbd\xde\xb2\xc2\xe8\x34\x01\xd6\xa6\x04\x11\x35\x9a\xdb\x53\x4b\x49\x84\x81\xa4\x93\x20\x4d\x6b\x1f\x94\x08\x15\x66\x2e\x0c\x4b\x47\x7d\x42\xd3\x64\x0a\xea\x5a\x65\x0a\x74\x7e\x0c\x9d\x60\xdc\x88\xab\x14\x24\x18\x30\x6c\xe7\x56\x38\x81\xa9\xd4\x8e\x16\x81\x92\x6b\x13\x25\x52\x4b\x5e\x47\x09\xa9\x9d\x35\xd2\xa8\xfb\x65\x65\x47\x9f\x35\x22\xdc\x40\xd7\x32\x0c\x6e\x83\x34\x4a\x61\xf1\x8c\x0e\x3a\xb1\xbb\x14\x55\x5d\x75\x37\x44\xad\x75\x03\xbf\x5a\x54\xde\xa0\x8b\x12\x8d\xfd\x6f\xb0\x68\x8b\xeb\x95\xdf\x59\x73\xbe\xf1\xfb\xfd\x9b\x9b\x9b\xde\xcd\x49\x2f\xcb\x57\xfd\xd1\x60\x30\xe8\x43\x5a\xc7\xbd\x5d\xf3\xab\xa4\x2d\xcb\xf0\x8b\x2f\xbe\xe8\x53\x2a\x64\xc2\xdb\x4c\x0e\x67\xc2\x54\xc8\xd4\x5e\xcf\xaf\x67\x2f\x31\xdb\xe7\xfd\x34\xbc\x62\xb0\x3f\x44\x8c\xb2\xa6\xc5\x41\xb8\x28\xb5\xdf\xd9\x11\xa3\x0d\xac\xe7\x26\x67\xcb\xf8\xd6\xff\x2d\x73\xdf\x97\x61\x12\x2f\xb7\x7e\x0b\x4b\xa2\xa9\xbe\x4f\xb7\x44\xe9\x08\xc6\x82\xf0\xb3\x06\x95\xe7\x4d\xc2\x8f\x27\xea\xb6\xfb\x5b\xd6\x24\xc5\xcc\x9e\x7e\x20\xb0\x01\x00\x54\x44\x25\x19\x8c\x88\x9f\xee\xe0\x7f\x9a\x2d\xe8\x4b\xd4\x58\xdd\x6d\x72\xfb\x88\x3e\x77\x44\x63\xc6\x21\x7b\x15\xe0\x1e\xe7\x0e\x1e\x6e\xea\xc3\x5e\xba\x40\x30\x2d\x7a\xb2\xd7\xc8\x13\x02\x83\x85\xcd\x4f\x19\x32\xfc\xc6\x89\x1d\xfa\x37\x20\x8c\x2a\x03\xc8\x16\xb5\x1c\x74\xf4\x8d\xb6\x07\x52\xfa\xc5\xc6\x18\x72\x33\x57\xe8\x56\x81\xa2\x4f\x7d\x73\x31\x19\x1f\x99\x4f\x92\x24\xe8\x71\x94\x84\x45\xc1\x9a\xac\xc7\x7f\xd8\x69\x58\x57\x14\x2c\x17\xb2\x5e\x59\x36\xdd\x39\xc5\xad\xfe\x1f\x77\x6f\x0b\xa7\xbf\xb2\x95\x49\x07\x9d\x47\xe1\x1e\x8b\x96\x3f\x04\xc7\xcb\xb8\xe0\xc6\xe9\x53\x3e\xc6\x10\xf2\x47\x18\xd8\x20\xe5\x61\x9c\x02\xff\x80\xa7\x4a\x72\x3b\x3f\x1a\xea\xc0\x7a\x58\x43\x0d\x45\x1d\xaa\xaf\x63\x9b\xf5\x9c\x89\xe2\xd2\xd6\x52\x57\x23\x91\x75\x34\x68\xc7\xea\xed\x03\xb1\x7a\x6b\x60\x95\xce\x97\xf7\x8e\x50\x85\x74\xb4\xc7\x2d\x01\x6c\x27\x93\xbc\x86\xdd\x23\x03\xbb\x23\x3a\xa0\xe1\xe8\x31\x6a\x5e\xb2\xae\x1b\xbe\x90\xaa\x0f\xba\x05\xd9\x04\x11\xd9\x17\xa8\x58\x7e\xba\xc8\x10\x45\xcf\xb3\xab\x0d\x20\x68\x41\x07\xd1\x96\x39\x66\x44\x3f\x31\x8b\x5a\x2d\x24\x79\x20\x65\x64\xd0\xf6\x7e\x7f\x2f\x64\xb7\x44\x8f\x37\x6d\xe7\xc6\x7f\x73\x22\x99\x4d\x08\xa0\x50\x53\xd9\x3a\x28\x37\x0f\x1c\x94\x1b\x63\x50\xd0\x9c\xe2\x41\x0e\xe1\xba\x78\xab\x7f\x7a\x43\xb8\x38\xe8\xce\x3d\xde\x77\xea\x15\x3c\xe3\xb4\xd3\xf1\x81\xb5\x52\x46\x3b\x46\x7d\x7b\x25\x00\xf1\xfe\x7d\xe9\xe9\x4e\x70\xad\x12\x5f\x66\x1a\xf5\x19\x49\xfe\xff\x7e\x9f\x29\xa0\xc8\xb7\x6f\xce\x5e\x3e\xb0\xc7\x3a\x7f\x5b\x7f\x8d\xda\x1a\xbd\xad\x52\x04\xf1\xde\x6c\x58\x7b\xb4\xe6\x34\x38\xa7\xa3\x2a\xba\x18\x94\x18\x02\x6b\x9f\xcb\xa2\x54\x51\xc7\x73\x34\x53\xb1\x0e\x74\x11\x15\x13\xd8\x1c\xd0\xa3\x7a\x04\x6b\xd3\x6c\x41\x36\x08\xcc\x16\x7f\x50\xbb\xa2\xb2\x2f\x19\x4c\x76\x76\xa8\x61\x97\xdf\x0f\x90\x90\x9b\x5b\xf8\x47\x3d\xb6\x7b\x72\x31\x25\x19\x3c\x5c\x8a\xc2\xab\xa8\x48\x20\x81\xa4\x1a\xd9\x00\xb2\x2c\x87\x4d\xfa\xb4\x71\xa4\xf4\xb5\xaa\x0e\x85\x97\x95\x9f\x95\x79\xfd\x4a\x88\x61\x53\x56\xc6\x89\xc5\x12\x63\x90\xd4\x5e\x17\xc6\x6b\x48\xe2\x98\x94\x0c\xaf\xdd\x2b\xe9\x9a\xb4\x95\xbf\x67\xea\xdc\x20\x17\xf7\x13\xe5\xc8\xc3\x5e\xab\x13\x6f\x19\xd8\x3e\xd6\x7c\x17\x72\xdd\x14\x87\xf0\xda\x9e\x2e\xf0\x60\x2a\xf6\xaf\x48\x5b\x76\x8d\x37\x84\x9c\x09\xae\xed\xda\xae\x57\xb9\x34\xaa\xc4\x60\x24\x0c\x2b\xcd\xc9\xbb\xf1\x8a\xb4\x76\xd7\x68\xaf\xbf\xa2\xea\x8c\xc6\x82\xcc\xf6\xb7\xb2\xb1\xbb\x3b\x6b\x83\xe9\x2f\x30\xd0\xa1\xbb\x95\x4d\x66\x08\x8d\x40\xfb\x5e\xa3\xd0\x0f\x01\xe9\x99\xf4\x9f\x5c\x88\x73\x34\x78\xd1\x66\x02\x55\xee\x35\xde\xca\x24\xa3\xf8\x13\x78\x31\x3a\x02\x6a\x48\x5c\x01\x9d\xed\x57\x50\x08\x53\x81\xa5\xbc\xc8\x5f\x7e\xc6\xa2\x32\x25\x94\x29\x55\xb3\xbb\x4d\xaf\xdc\x2c\x30\xca\xc7\xca\xdd\x98\x7c\xeb\xca\x7c\x59\x98\x2f\xa9\xf1\xe2\x46\x02\xb9\x1b\x1b\x35\x00\xf8\xb4\xb2\xdd\xff\x8f\xbd\x37\xdd\x6e\x1b\x57\x16\x46\x7f\xdf\xef\x29\x3a\x3a\xdd\xde\xa4\x04\xc9\x94\x64\xc9\x36\x15\x58\x2b\x49\xa7\xd3\x93\xd3\x83\xd3\xe9\x41\x5b\xdb\x8b\xa2\x28\x89\x1d\x8a\x54\x38\xd8\x52\x62\x9f\x67\xbf\x55\x05\x80\x04\x29\xca\x71\xfa\x9c\x6f\xad\xfb\xe3\xee\xde\xb1\x40\x0c\x85\xa9\x50\x28\x00\x35\x24\x22\x34\x17\x42\x6d\x84\x41\xfb\x27\x93\x5a\x23\x94\xd4\xfd\x50\x47\x94\xfc\x7c\x62\x4d\x73\xb3\xb2\xea\x54\x03\x33\x15\xcb\x87\x7c\x34\xc4\xcf\x8b\xa1\xd1\x6e\x26\xc4\x21\xe6\x8d\x81\x07\x9f\x80\x6f\xe8\x37\x11\xbf\xd8\x86\x3a\x02\x59\x88\x0b\x38\xa8\x23\x9d\x1f\x90\x98\xe4\xf9\xd1\xb9\x4f\x31\x04\x05\x1a\xa2\xb5\xcb\xb2\x0c\x41\xb5\x7c\xde\xae\x00\xaf\x25\xbd\xb8\x66\x7d\xbb\x78\x97\xe2\x6d\xfd\x3a\xd9\xcb\x04\xd2\xd4\xe2\x2d\x89\x70\x7c\x62\x2b\xd8\xe4\x82\x71\xf9\x31\x0c\xc5\x47\x0f\xa5\x09\x02\x21\xa4\x02\x0e\x1d\x40\x71\x85\xd6\x18\x0b\x16\xf6\x30\xde\xa1\xa7\x0a\xcd\x73\x29\x4a\x68\xe8\x73\x1f\x5d\xf8\x23\x1f\xfd\x13\x65\x87\x8f\xa5\x82\x07\x25\x0f\xb1\x35\xc7\x52\xa1\xfc\x59\xd2\xf8\x44\xb5\x4c\x94\xd7\x10\x67\x35\x6d\xaa\x8a\xe3\x19\xde\xdd\xe4\xc6\x22\xf2\x53\x59\x26\xfa\x1b\xc5\xf3\xf2\x84\x94\x5e\x73\xd3\xca\x19\x32\xc4\xb7\x32\xfd\x52\x4f\x5e\x0a\x91\x3b\xa6\xfc\x0d\x1a\x11\x34\x9b\x8e\xda\xed\x8c\xdc\x9f\xa1\x64\x8e\x10\xa5\x32\xfc\xa3\x23\x1f\xad\x4e\x74\xd0\xd3\xcf\x95\x3f\x83\x93\xda\x12\x2d\xc5\x6a\x78\x55\xda\x46\x3c\xa4\x64\xbe\x76\x9a\x14\xd7\xb0\xc8\x9e\x46\x15\xd7\x0b\x21\x7f\x76\x60\x3f\xaf\x78\x61\x2c\xf7\x88\x6e\xf9\xe4\x7b\x8b\xb8\xa6\x0f\x4b\x95\x89\x01\x32\xc4\x60\xe1\x06\x54\x87\x7f\xaf\x45\x9d\x65\xd9\x0a\xbc\x87\x52\x42\x10\xc5\x6c\x90\x41\x66\x79\x6e\x71\xea\x8e\xf4\x78\xca\xd6\x1a\x9f\xdf\x97\xc9\xbe\xa1\x9d\x30\x71\x29\x2b\x36\x65\xd1\xae\xf5\x26\xad\x91\x4c\x7e\xa2\x31\x1a\x94\x0f\x83\xf5\x73\x6d\x55\xa6\x3a\xbd\x08\x47\xa1\x66\x27\xdc\xcb\x67\x5a\x48\x4b\xe5\x38\x88\xe2\x1f\xa8\xde\x2b\x25\x40\x90\xe8\x92\xc5\x05\x33\x7f\x45\xd5\x54\x53\xc4\xcc\xf9\x1f\xf6\xcc\xa9\x87\x85\xfb\xcb\xda\x9d\x1e\x30\x8f\xae\xb4\xe9\x1e\xe1\x3b\x7c\x13\x19\x95\xae\x91\x04\x59\x79\xc3\xf6\x23\xb5\x1b\xa6\xef\x22\xf6\x5d\xce\x62\xe5\xcc\x16\xc6\x89\xf1\x53\x03\x89\x31\x34\x52\x72\xc4\xf0\x9b\xe6\x4a\xce\x19\x7e\x53\x27\x64\x67\xe8\x7b\xff\xde\xaa\x62\x0f\xae\x62\xb7\xa0\x8c\x85\x74\xe5\xf2\x31\x46\x73\x04\x34\xce\xb0\x98\xe5\x06\xa5\x0c\x09\xd4\x10\x8b\xac\x8e\x44\x04\x08\x3e\xd1\xbd\x5a\x05\x68\xa2\xdd\x40\x3f\x87\x81\x76\x73\x15\xc3\x17\x2f\xae\xaf\xf4\xcd\x4d\x63\x31\x02\x32\x4d\xa0\xdd\x5a\x69\x9b\xcd\x81\x4b\x2b\x54\x9d\xf8\xee\x61\xd6\xf2\x80\xac\xc0\x7b\xc1\xa9\x99\x05\x67\x5a\x16\xd7\x95\x47\xa0\xdc\x00\x4c\x2d\x26\xe3\x79\x8e\xff\xe4\xde\xdd\xb5\x5a\x7f\xb9\xca\xcf\xfc\xaf\xf0\xfd\x91\x2c\x01\x29\x59\x72\xd4\x75\x42\x93\x40\x2f\x62\x69\x0e\xc8\x2a\x0c\x01\xf5\x06\xd6\xbd\x92\x48\x29\x4f\x13\x89\x22\xaa\x07\xbf\x90\x6c\xc2\x15\xa4\x59\x12\x6e\x26\xef\x0e\x9d\xea\xdd\x21\x6a\x69\xb8\x48\x05\x5f\xa3\xed\x08\x17\x9d\x44\x98\xac\x78\xb1\x91\x63\xf3\xd2\x27\x13\x19\x92\x3d\x07\x04\x8e\xb3\x4d\xdd\xa6\x58\x2c\x93\x0f\xe6\x7d\x81\xf7\x75\x62\x24\xfb\xc7\xd4\xf1\xb7\xf8\xbc\xb2\x05\x9e\xae\x10\xa3\x29\xa1\xd6\x2c\x62\xc0\x2b\xe0\x0b\x74\x01\xba\xf6\x02\x12\xa9\x55\x0d\xfc\x6f\x72\xf8\xe6\x27\xe0\xd3\x8a\xfe\x4d\xbb\x15\x36\x66\xc0\xcf\xe1\xc6\x14\xfe\x2f\x5f\x3e\x3c\xe9\x1e\xb8\x7c\x78\xf1\xa8\xcb\x07\xc9\xd0\xa8\x53\x3d\xf0\x0d\xc0\x01\xb4\x42\xe1\x22\xfe\x7a\xe4\x01\xfc\xfd\xb3\xfb\x8b\xfc\x82\x81\xfa\xf9\x17\xf5\x13\x85\x10\x3f\xae\xa3\x2c\xf1\x88\x42\xd9\x0d\x0a\x03\xdf\x1c\x37\x18\x05\x03\xcf\xb9\xf1\x54\x74\x96\x36\xee\xcd\xd1\x5f\x51\xcd\xeb\xb3\xf9\xb1\x41\x6d\xc0\x0e\x6d\xa3\xa3\xa3\xbf\xd4\x01\x8a\x0c\xfc\x52\x8d\x6f\x23\x8e\xaf\x0e\xe2\x36\x87\x35\x00\x60\x2c\xee\xec\x1b\x26\xfb\x03\x5d\x03\x62\x7b\xb0\x9e\xba\x6d\xed\x5b\x68\xfd\xca\x50\x8d\xff\x32\xe2\xc7\xbf\x7b\xb3\x1f\xfc\x54\xea\xfa\x5e\x03\x79\x74\x6e\xfc\xa5\x83\x2e\x40\x11\xf2\xb3\x25\x74\xc8\x44\x61\x77\x82\x9b\x46\x19\xbe\x11\x7c\x16\x0d\x58\xe1\x05\x80\x28\x07\xd4\x6e\x7c\x89\xfe\x46\xf6\x3c\x40\x8b\x0d\xe9\x5b\x82\x97\x6b\x4b\x74\xfc\x39\x80\xf3\x17\xbe\x87\x42\xc2\xc5\x07\xf3\xe0\xc4\x3d\x11\x12\xc0\xea\xc9\xb2\x33\x8f\x9d\xe5\x01\x79\x09\x79\x62\x87\x68\x31\x01\xf3\xe8\x36\xa4\xfc\x0d\xe0\x74\x29\x9a\xda\x27\x2c\x78\x89\x78\x47\x77\xe2\x63\xe8\x52\x67\xc2\x06\x96\xf0\xb9\x3a\x7f\x23\xfa\x85\x5a\x23\x45\xf3\xee\x4b\xc7\xcf\x92\xb7\x1b\x39\x0e\x30\x21\x87\x0d\x3a\xa3\xe9\xd3\xa2\xdf\xb0\x02\xef\xf1\x9d\x47\xd3\xc7\x2d\xec\x88\x54\x75\x8b\xb4\x5e\x47\xc5\x61\xda\x48\xd8\xd2\x94\xbe\xaa\xdb\x73\x61\xca\x8f\x14\x05\xe7\xf0\x67\x74\x73\xc7\xbd\xbb\x18\x0f\xb5\x6c\x61\x7c\xc4\x35\x66\x37\xc4\x18\x6c\xc9\x1e\x73\xcb\xc5\x12\x3b\x1b\x4b\x40\xb8\x3b\x45\xff\x74\x1e\xfa\xa7\x8b\x75\x4b\x55\x0e\xd4\xb7\xc6\xb1\xf4\x5a\xe8\x1b\x67\x23\x2f\xee\xf0\x65\x51\x8f\x60\x3b\xe3\xe6\xe8\x28\x1f\x46\xe1\xe8\x1b\x3a\xb9\x32\xcb\xb5\xc3\x2e\xde\x90\x6e\x00\x5c\xa0\xbc\xb4\x5f\x24\x3c\xd0\xf7\xb4\x05\xec\x88\xd1\xc2\x08\xf4\xbb\x88\x15\xaf\x80\xc6\xa3\xbc\x41\x27\x78\xba\xe4\x59\x8e\x45\xdf\x44\x25\xed\x46\x6b\x09\x1d\x97\x03\x74\x03\x5c\xd0\x5a\x23\x5a\xd7\x02\x37\x54\x7f\xa2\x52\x67\x1c\xe8\x09\xff\xd1\x80\x93\x17\x1a\x8c\xf4\x25\x2b\x57\x6a\x8b\xcb\x27\x6e\x67\x2b\x06\xdc\xed\xec\x68\xb4\xa7\xa6\x0d\xd1\x16\x43\xbb\xee\x7a\x77\x09\xf5\xb0\xc3\xd2\x3f\xc7\x12\x4d\x09\x8a\x59\xd0\xd2\x59\x3e\x34\x4a\xbb\x0e\x05\x2c\x0d\x97\xa9\x15\xcf\x04\x7e\x23\xbd\x68\xc8\x70\xb6\x69\xa0\x78\x1d\xf9\x63\x60\x02\xcf\x65\xb2\xc0\x45\x04\x56\x70\xa4\x51\xec\x2f\x1f\xab\x6f\xe9\x73\xf2\x32\xe1\x6b\xa2\x02\x28\x3d\xc3\x90\x80\x49\xfa\xf2\x3c\x12\x17\x2b\x3f\x7f\xc7\x7e\x8f\x78\xaf\xf9\x3c\x62\xdf\x47\xfc\x79\x74\xdc\x63\xaf\x22\x74\xa6\x32\x64\x3f\x44\xfc\x55\xd4\x7c\x15\xb1\x5f\x28\xa1\x7b\x66\xb1\xd0\xe1\xf0\x73\x0c\x99\x53\x69\x8a\xfe\xea\x97\x5f\xdf\xf4\x60\x77\xe7\x3d\x16\x3b\xfc\x04\x29\x91\x66\xd6\xf3\xaf\x28\xaa\x6a\x01\xe8\x2b\x30\xbf\x1b\x6c\x92\x17\xcf\xb5\x22\x36\x7f\xc2\xb9\x1e\x4d\x0f\x1e\x1b\x9e\xd3\x5c\x99\x4d\xc3\x6b\x7e\x67\xa4\x4e\x33\x6d\xcd\xcd\xf6\xaf\x90\xa8\xc6\x65\x12\xb7\xa2\x66\xc0\x32\xf8\x9b\x30\xbf\xe9\x1d\xff\xa9\xb2\x29\xb5\x56\xc8\x11\x52\x8e\x90\x72\x50\x9b\xbd\xed\x86\xb2\x49\xd3\xef\x31\x97\x6a\xb9\xa1\xf4\xf1\x8e\xfe\x71\x23\x61\x59\xd3\x21\xcb\x9a\xc8\x41\x62\x64\xc0\xa3\x76\x8c\x56\x44\xdb\x19\xe0\x78\xd0\x0c\x5a\x49\x33\x51\x57\x54\x64\x06\x93\x6e\xa8\x0c\xb7\xe9\xb6\xfd\xa6\xdf\x8a\x9d\xe6\x82\x5c\x85\x42\xd3\xb0\x23\x80\xec\x2a\xad\x9d\xa7\xb9\x32\x6d\xce\x73\xc7\x51\x05\xbc\x65\x73\xd9\xea\x9a\x6d\x5a\x03\x35\xc9\x9b\xe6\x06\x93\x37\x26\x2c\x8f\x9b\xf6\x1c\x1d\xd2\xae\xef\xee\xf2\x8c\xee\xb1\x6f\x9a\xc7\xa9\xee\xa9\x43\xb2\x5d\x30\xc3\xfd\xe6\x8e\x79\x65\x42\xfd\xa1\x34\x5d\x25\x42\x4d\x96\x2c\x21\xf2\x19\x13\xa4\x23\x72\x60\xb9\x61\xfe\x06\x5b\x51\xc4\x6b\xb6\x11\x04\x7b\x3e\x0b\xdc\xc0\x77\xdf\xc9\xd4\x39\xc5\xbe\x47\xa7\x42\xba\x50\x58\x6e\x0a\x95\x1c\x55\xb6\xaf\x3a\x5b\xf3\xf8\xaa\xf3\x8e\x09\xd7\xf3\x57\x9d\x1d\x7d\x4e\xef\xcb\xe8\x22\xcb\x60\x91\x26\x24\xb7\xae\xd0\x8e\x2a\x14\x90\x1f\xbb\x32\x2d\x36\x3f\x42\x74\xe1\x3f\xe8\x1d\x4e\x68\x7e\x9b\xf8\x0e\xe7\x35\x34\x2b\xea\xda\x80\xa0\x29\x47\x1d\x75\x06\xa0\x5b\x82\x2e\x13\x22\x00\xf0\x96\x20\xcd\x65\x87\xfc\x68\x05\x70\x76\x74\x34\x53\xda\xb5\x5b\xe5\x9e\xf3\x80\xb6\xb6\x11\xe6\x7d\xbd\x17\x79\xb6\x52\xb1\x1a\x58\xf1\xdb\xa3\xa3\x5b\x05\xe8\xfa\x31\x80\x76\x3a\xa0\xeb\x1c\x90\x66\xe3\x80\x26\x4e\xd1\x33\x9c\x91\x9c\x9e\x69\xfb\x03\xe4\xf1\xf1\x41\x47\xcf\xd7\x60\x09\x9c\x07\x3c\x1b\x27\x25\xb7\x86\x68\x4f\x70\xc4\x69\xa0\x4b\x96\x2e\xab\x95\xc8\x3d\x22\xcf\x11\x54\x77\xfd\x04\x05\x94\x0c\x45\x1c\xd1\x70\x1b\xac\x00\x07\xdf\xe0\xb5\x09\x87\x32\x02\xb3\xae\x23\xb2\xf8\xb6\xb1\xf3\x9d\xeb\x8d\xdc\xb3\x96\x46\x52\xb7\x67\x05\x68\xa5\xd3\x97\x77\x83\x62\x8b\xf2\xf9\x0b\xdc\x93\x62\x7d\x1f\x08\xf6\xf6\xa4\x84\xa3\x2b\xee\xbd\x9d\xe6\x35\x60\x8a\xa8\xd6\xc3\x9d\x2c\xd5\x5b\x8e\x2b\x1e\xb7\x9b\x0f\xf2\x36\x08\x28\x57\xa9\x1f\x49\xb5\xef\x62\xef\xd7\x58\x8e\x4d\x4e\xe6\x97\x1c\x87\xbb\x4e\xf6\x11\x97\x5f\xc1\x7b\x20\x0f\x0a\x9b\xb5\x71\x33\xd1\x63\xa7\x1c\x17\x96\x10\x47\x2b\x0f\x63\x7e\x27\x73\x80\x4b\x62\x15\xf7\x1b\xbe\x94\xe0\xbb\x21\x0d\x89\x52\x15\x64\xb2\x4e\x08\x35\xe0\xf6\x2d\x0c\x2c\x88\x43\x9e\x52\x8d\x8a\x74\xb1\xa7\x81\x65\x5d\xb8\xed\x4b\xd1\x6d\x20\xa0\xc2\x83\xca\xcd\x24\xd0\xa1\x8e\x62\x20\x84\xd0\x75\x74\x10\x19\x90\x2f\x76\x74\x76\x82\xb7\xbb\x97\xdc\xcd\x0d\x9d\x45\xb9\x82\x51\x09\xda\x0a\x7e\x60\x2d\x2f\x79\x80\xab\x75\x85\x51\x1b\x08\x77\x31\x0c\x5c\xd4\x9a\x23\x11\x05\x4a\x79\x5f\x5e\xb5\xa5\x43\x2c\xdd\x17\x94\xa6\x04\xad\x1d\x22\xc1\x57\x43\x12\x5c\xb8\x78\xb8\x94\xbb\x3b\xbe\x0f\xa3\xcc\x86\x8b\x1b\xc6\xcd\x44\xe7\x87\xa7\xd4\xed\xd4\x24\xe7\xe5\xa3\x10\x9d\xfc\x73\xff\x9e\x6e\x69\xa8\xd5\x09\x37\x12\xf2\xe3\x4e\xd6\x20\xcc\x66\xd2\xa2\x6f\xb2\x0e\xd1\xc5\x6f\x44\xc0\xa3\xa3\x82\xc8\x27\xc7\x6b\x13\x3d\x26\x11\xa5\x24\x97\x13\xe8\x71\x9c\x08\x25\xa9\xd6\xc3\x17\x2a\xdf\x4f\xe8\xba\xaa\xe5\xab\x74\x32\x09\xed\xab\x74\x60\x67\x9b\x4b\x1c\x4e\xe2\x4d\x04\xa9\x13\x23\x9c\x0f\xca\x4a\xe8\x9f\x14\x4b\x42\x8c\x45\xe9\xde\xfc\xd3\x58\x14\x17\x58\xa4\xe4\x40\xa5\xcc\xe5\x3e\x32\x15\x22\x34\x84\xd0\xea\x16\x8b\x74\xbe\x00\xb9\xee\xaf\x71\xcd\x6d\x0b\x7e\x75\x26\x57\xfd\xad\xbe\x13\xe1\xd6\xc2\x5e\x22\x2a\xaa\xd7\x80\x25\xcc\x3f\xad\xf9\xb9\x58\xf3\x1b\x7d\xcd\xdf\x90\x04\x25\x34\x74\x77\xa8\x1b\xe5\x23\x03\xdb\xf2\x82\x37\xa3\x3d\x0d\x78\xd3\x1d\x9b\xf1\x9c\x4b\x2b\x22\xaf\xf7\x29\xc7\x96\xf9\xb2\xe9\x2b\x34\xc7\x5f\xa4\x8b\xdd\xf2\x59\xd1\xb9\xf7\x48\x5b\x5e\xea\xa4\x64\x43\x3e\x62\x80\x9c\x54\x67\x49\x50\x10\xea\x5b\xf5\xfa\x75\x37\x76\xe1\x40\x1b\xa3\xad\x19\x38\xcc\x1a\x3b\xd3\x36\x3e\x14\x17\x3b\x08\x2c\xc4\x67\x24\x9e\x08\x7b\x34\x98\x47\xdb\xf0\x77\x02\x3d\x5c\x12\xa3\x1b\x58\xb4\x0e\xa5\x93\x53\xe0\x2b\x72\xa2\x47\xa0\xe0\x78\x72\x67\xdc\xf0\x94\x54\xfc\xa4\xc3\x4f\x74\x69\xd6\x63\x1d\xcb\xea\x35\x33\x38\x76\x98\x6a\x4d\x7b\xec\x06\xb1\x4d\x37\xc1\xb0\xc1\x7e\x50\x75\x45\xdc\xfc\xc1\xbe\x49\x6d\xa7\xa2\x05\x48\xb1\x50\x91\x31\x28\x58\x23\xac\x4f\xb9\x19\xed\x8d\xb0\xb3\xe5\xa6\xe5\x53\x9e\xac\xfc\x05\xca\x56\x8f\x0b\xd7\x8e\x81\x09\x67\x69\x4d\x45\x32\x30\x49\x28\x28\x13\xf7\xe2\xd8\x7a\x31\x30\xf2\x3d\x91\xed\xd8\x25\xdb\xb2\x19\xbb\x66\xb7\xec\x8a\x7f\xdc\xda\x80\x53\xf0\xef\x9d\xdd\xbd\x87\x79\x9c\x9c\x0f\x2d\x18\x42\x20\x46\xef\xb8\xef\xb0\x67\x5c\x3b\xe0\x8a\xfd\xf5\x35\x2f\xce\x04\x32\xea\x0d\x57\x47\x03\x19\xf1\x9e\xeb\x07\x60\x11\xf7\x42\x9c\x41\x8a\xcd\x9c\xc9\x0d\x3b\xdf\x7a\xb5\x63\x83\x90\x11\x2d\xef\x23\xf5\x2f\xbb\xb5\x43\x9e\xf2\xab\xd1\x4f\xee\xb8\x40\x5b\x1a\x78\xed\x5a\x10\xf8\x13\x21\x04\xa0\xb7\x50\x83\x7d\x25\xee\x71\xae\xaf\x51\xec\x39\x45\xc3\xe3\xe5\x81\x22\x67\xcf\xa6\x30\xc7\x6d\x50\x07\xec\x3d\x18\x02\x01\x5f\x8a\xe3\xf1\x4b\xa4\xf5\x19\xf7\xc8\x37\x7b\x0c\x7f\x89\x6e\x57\xce\x1c\xc6\xc4\xc8\x34\x9e\xd2\xcf\x59\x25\xe6\x11\x5b\xc9\x30\x3d\xc5\xf4\x54\xa4\xa7\x98\x9e\x52\x3a\xfc\xad\x71\x92\x9e\xaa\x0b\x31\xbc\x23\xc1\x67\xa1\xe3\x18\x9d\xc8\x97\x3b\xc7\x09\x0d\xb2\x36\xda\x03\x69\xba\xd0\x49\x60\xf3\x91\x3b\x75\xa1\xaf\xee\xbd\x58\x00\xf7\x6a\xc0\x14\xe5\x28\x75\x95\x10\x0c\xd6\x6c\x15\x2e\x8d\x53\x81\x83\xf4\xa8\x11\x76\x72\xbe\xec\x71\xc7\x42\x6a\x9d\x70\x8f\xbf\xc3\x5f\x18\xc8\x77\xc8\xdf\xdd\x33\xe2\xfe\x4c\x8d\xbb\x03\xe0\xc4\xfe\x7d\x06\xe0\x2b\xf2\xdb\x0f\xa5\x01\x68\x2b\xcd\x61\x12\x7c\x09\xed\xb0\x2f\xa3\x7d\x98\xef\x72\x51\x10\xdf\xb1\x27\xa2\xd5\xd4\x66\xe4\xda\x6d\x82\xe9\x56\xde\x37\x1f\x02\xb7\x46\xaf\xcd\x7b\x60\xd6\xd4\xb4\xd2\x13\xc9\x43\x40\x5e\xd6\x02\x79\x89\x40\xb6\x8f\x83\x30\x83\x93\xf9\x96\xa7\xca\x80\x4d\x95\x6c\x00\xb4\x19\x42\xdb\x3d\x0e\xda\x2d\x40\xbb\x7e\x10\xda\x6d\xf9\x0a\xe0\x85\x7e\x05\x90\x39\xcc\x77\xf0\xca\xa3\x7b\x0c\xfd\x89\x1c\x0e\x69\xb7\x2b\xcf\x0b\x1a\x74\xc3\x39\x36\x32\x67\xff\x2a\xbc\x9d\x53\x50\xd8\xd5\x53\xe7\xcf\xa6\x51\x8e\xb8\x8c\xe6\xde\xb8\xdb\xb3\xec\x2e\x60\x68\x43\x80\x33\x6d\x80\x4c\x74\xed\x93\xe0\x8b\x6b\x3c\xca\xfa\x35\x82\xbc\x97\xf7\x25\x0a\xd8\x27\xdb\x95\x3a\x7e\x70\x4f\x1a\x0a\x97\x58\xee\x67\x7f\xeb\x05\x57\x2e\x2a\xbd\x00\x65\xfc\x4b\x53\x22\x78\xc0\x42\x30\x2d\xc0\x78\x39\x33\xd0\xc2\x2c\x0d\xe2\x2a\x09\xf6\xee\xc8\x65\xe6\x3a\x7b\x00\xe3\x92\xb2\xe2\x1f\xe3\xb7\x46\xd8\x59\x21\xb6\xa1\x94\xa6\x69\x07\xa9\xd1\x68\xb4\x42\x96\xa4\xec\xad\x69\xbf\x35\x20\xd8\x4a\x19\x30\x4b\x62\x6e\x1c\x87\xff\xa1\x3d\xa6\xa1\xb0\xc2\x5f\x23\xc7\xe9\xcc\x48\xcf\xda\xab\xd3\x81\x07\x12\x9e\x6f\x74\x9d\xd3\x3d\x15\xd1\x71\x08\x53\xc2\xde\x0a\xca\xb2\x92\x22\x46\xe2\x27\x38\xc6\xed\x1e\xa0\xcf\x9d\xf8\xdd\xff\x1e\xec\xb0\x29\xa0\x0b\xd8\x30\x96\x35\xc3\xfc\x65\x6d\x7b\xc4\x43\xc8\xca\xfd\x1f\x0c\xf8\xef\xe3\xe7\x72\xc0\x5d\x31\xe0\xa5\xd4\x1f\xc6\x64\x1d\x29\x80\x24\x07\xfe\xcd\x20\x39\x35\x8c\x90\x2f\xe8\x2f\xae\x18\x98\x79\x20\xb3\x1d\xb4\x01\xbf\xa4\x1c\xa6\x9e\xfb\x79\x75\xbe\x5c\x87\xff\xbe\x37\x5f\xee\xc3\xf3\xf5\xbc\xd4\x77\xb7\xb8\x9a\x40\x83\xd6\x62\x20\x5a\x81\xd3\xdc\x93\x87\xa4\xd1\x46\x11\x45\xf7\xa1\x19\xab\x87\x4e\xbe\xf4\x04\xec\xf6\xa7\x60\xd7\xcf\xd8\xf7\x15\xb8\x72\xc6\xc4\x5a\xa1\x79\x0b\x9c\xd9\x3f\x9f\xb7\x1f\xc6\xaf\x2a\x13\x53\x9e\xd5\xef\x65\x2a\xce\xea\xca\xb4\x1f\x98\x30\xfb\x55\x75\x92\x02\xbc\xbd\x64\x89\xc3\x3b\xe7\x03\xeb\xe4\x94\x2d\xe0\x9b\xad\xe0\x4f\xc7\x3a\x3b\x3b\xeb\xb3\xa5\xc3\x7f\xd8\x9b\xc4\xe5\xc3\x93\xf8\xca\xf8\xbc\x69\x13\x39\x1c\xf1\x33\x83\x01\x5b\x3e\x34\x89\xaf\x8c\xcf\x99\xb6\x3a\xd8\xf5\x93\xf8\x8b\x98\xc4\x60\xaf\x84\x18\xc9\x7f\x3e\x7d\x4e\x3a\x8e\xc8\xee\x58\x31\x0d\x8a\xd2\x45\x29\xfb\xd2\xb4\x21\xf5\xbf\xff\x3b\x64\xff\xfd\xdf\x29\xfc\x53\x13\xb3\x71\xb8\x93\xee\x8d\xfc\xe6\xc0\xc8\x3f\x82\x16\x49\xfb\x90\x82\x88\x2b\x29\x94\xa5\x94\xa0\xe9\xcc\x80\x7f\xec\x17\x22\x10\x77\x77\xde\xdd\x5d\x3c\x36\x60\x6f\xcf\x2e\x84\x27\xf2\x8c\x14\x4a\x32\x69\x19\x08\xbe\x62\xfc\x8a\x49\x85\x0c\xbe\xa0\x13\xf9\xac\xf7\x06\x03\xe8\x89\x91\x1e\xe3\xb9\xaa\x1a\xeb\xd5\xc6\xc6\xc7\xe4\xb2\x12\xc7\x22\x63\xf0\x1f\x8c\xfb\xe6\x7f\x4a\x7c\x69\x5c\x0d\x49\x72\x63\x93\x15\x1f\x4b\xfd\x63\x66\x8a\xca\x4a\x9b\x59\x21\xfb\x25\xf8\x7b\x18\x32\x39\x60\x39\x5e\x40\x91\xc3\x9b\x65\xe3\xbf\x1a\x2d\x57\x15\x35\xf3\xe0\xb2\x08\xce\xe4\x44\xcf\x9d\xfc\x49\xd6\x41\xbb\x71\x33\xd4\xef\xee\x0e\x4e\xcf\x7b\x7d\x58\x7f\x68\x0b\xe6\x7d\x06\xfb\xbc\x9f\x42\xec\xf0\xe4\xe4\xa4\x7f\x3a\x60\xce\xfb\xcc\xb1\x87\x83\x41\x5f\x04\xd7\x0e\x34\xc2\xb3\xcf\xfa\x67\x67\x83\xe1\x09\x73\x3e\x64\xb1\x00\x71\xd2\x85\xcc\x33\xcf\x5f\x62\xd9\x6e\xf7\xbc\x07\xe7\xaf\x99\x9f\xbc\xc7\x1a\x86\xa7\xa7\x56\xef\xe4\x84\xcd\x02\xc7\x7d\x07\xec\x11\xfc\x86\x70\x76\x9f\x3b\xc1\x3a\x0a\xe7\x94\xde\xb3\x4e\xa0\x38\xb6\x07\x67\x09\x03\x37\x7e\x14\x78\xa9\x7d\x6e\x0d\x06\x3d\xab\xc7\x66\x31\x1c\xdd\xec\xae\x75\xd6\x3b\xe9\xf5\x01\x54\x16\x07\xbb\xdb\x28\x82\xd2\x27\x83\xf3\x61\xaf\xdf\x05\x9a\x09\xbc\x07\x81\x18\xf6\x86\xc3\x41\xef\x8c\x11\xff\x1e\x7b\xc0\x84\x50\x83\xfb\x83\x1e\x44\x45\x2e\x9d\x53\xec\x6e\xff\xf4\xec\xfc\xe4\x14\xdd\x2d\xc5\x4e\x80\x8d\x38\x39\xe9\x9d\xf6\xf0\x33\x84\x13\xe8\xad\x17\x0b\x58\x83\xf3\xee\xf9\x59\x97\xa2\x13\x3f\x78\x47\xad\x1d\x00\x34\xe6\xc6\xfe\x3a\x89\xa0\x4d\x50\xae\x8f\xd4\xc7\xdd\x39\xa1\x1c\x2a\xc4\x26\x31\xba\xfd\x73\xfa\xa0\xb4\xfe\xe0\xb4\xd7\xa7\xcf\x65\x14\xcc\xbd\x30\xc6\xe6\xf7\xac\xf3\xde\xb9\xcc\xb5\x8c\x9d\x9d\xdd\x85\xff\x9d\x5b\xdd\x53\x19\x83\xee\x9d\x7a\x83\x21\xc0\x97\xdf\x95\x1c\xef\x56\xce\x3b\x1f\xc0\x9c\xf4\xfb\xbd\x81\x00\xb3\xc6\xb7\xb0\xd4\xb1\xcf\xbb\xd6\xf9\xf0\x44\xd4\x18\x05\xfe\x8d\x27\xa0\x0d\x06\xe7\xa7\xe7\xe7\x22\x6b\x24\x8c\x4a\x62\xef\x4f\x61\x9c\x65\x9c\xbb\xf2\xa1\x65\x96\x75\x62\x59\xdd\x1e\xc5\xc5\xde\x9c\xc0\x01\xe5\xa6\xef\x84\xe6\x0e\x66\xbe\x6f\x9d\x9d\x74\x45\xb9\xc4\x73\x44\x05\x80\x0c\xe7\x30\x6a\x22\x12\x07\x9b\x86\xe2\xe4\xb4\x7f\xd2\x3f\x39\x2d\x62\xa9\xb7\x38\x72\x27\xe7\x03\x3d\xd6\x2b\xc7\x02\x8e\xbf\xcf\x22\x1f\x26\x71\xd0\x3b\x3f\x11\x71\x0a\x39\x86\xe7\xe7\x03\x1c\x3b\xcf\xdb\x6c\x50\x4d\x0a\xfa\xd1\x1d\x9e\x63\x25\x10\x93\xbc\xdb\x89\x8a\xcf\xbb\x83\x2e\x9b\xfb\x6b\xaa\x70\x78\x0e\x38\x34\x1c\x88\x6f\x4f\xfb\x8e\xe6\x4b\x39\xe7\x3d\xcb\xea\x43\x0f\xd8\xc2\x07\xd6\x3d\xf6\x01\x67\xbb\x38\x40\xdd\x93\x21\x03\xcc\x00\x6c\x51\x6b\x04\x30\xe1\x1c\x06\x0d\xc5\xf7\x92\x54\x4e\x55\x6f\xd8\x3f\x3b\xe9\xc1\xa9\xd2\x5d\x25\x70\x76\xc2\x16\x75\xcf\x01\x25\x96\xa8\x11\x33\x8b\xe2\x08\x11\x06\x70\x0d\xd6\xc7\x72\x15\x25\xa9\x82\xd5\xef\x0e\x21\x2b\x43\xcc\xc0\x42\xf0\x01\x90\x35\x3c\x39\xe9\xf7\xce\xbb\x18\x85\x9d\x80\x1a\xba\x38\x15\xa2\xce\x7e\xef\x74\x78\x26\xc2\x3b\x2f\x00\xdc\x85\xf6\x9e\x58\x7d\x58\x39\x8c\xba\xa8\x72\xaf\xa2\xd0\xdb\xcd\xbd\x5b\xb9\x60\xa1\x05\xab\x28\x55\xe3\xd6\x3f\x3b\x3d\xb1\x18\x1c\x54\x7c\x27\xc4\xd9\xee\xf6\x4f\x06\x67\x83\xde\x09\x45\x2d\x23\x1a\xc5\x7e\x1f\x72\xdc\x44\xf1\x8e\xfa\x0e\x0d\x84\xa3\x8e\x40\xbf\xc1\xe9\x19\x34\xd9\x62\x81\x03\xa7\x80\xb9\x17\x43\x4c\xb7\xdf\x43\xcc\x50\x31\x30\xb2\xc9\x8a\xca\xf5\xfb\x30\xdc\x81\x73\x1b\x8a\xd6\x9f\x01\x2e\x9f\x9f\x0e\x59\xe0\x01\x46\x01\xe6\x2d\x16\x88\x58\x38\xb6\x40\x63\x58\x80\x5b\x90\x58\x4a\xb0\x96\x00\xc5\x4f\x44\x94\x5c\xb5\x83\xd3\x21\x5a\xdf\x95\x71\xb8\xc8\xba\x30\xb8\x80\xe1\xe7\x22\x2a\x1f\x40\x35\x30\x40\xd7\xce\x7a\xd8\x2c\x4a\xa5\xf5\x06\x8b\xb9\xd7\x87\x85\x29\xa3\x04\x06\x9f\x9f\xc1\xa2\xcb\xa3\xaa\xb9\xd4\xa0\x0d\xce\x4e\x86\xb2\x8d\x6a\x45\x40\x24\x4c\x47\x4f\x46\xaa\x25\xd1\xeb\x9e\xf4\xce\xce\x65\xb5\x0a\x31\x21\xc2\xea\x9f\xc8\x5a\x8a\x25\x71\x7a\xd6\x07\xca\xdb\x2f\x45\x7b\xd5\xe8\x14\x4e\x63\x72\x58\xa0\x11\xb0\xb4\x44\x7c\xde\x4d\x98\x9e\xee\x19\x46\xae\x91\x86\xf5\xce\x2c\x0a\x4a\x7c\x01\x54\xc2\xa9\x0c\x80\x94\x87\x34\x24\x83\x21\x10\x42\x45\x36\x72\x94\x05\x62\x1f\x41\x97\x90\x76\x0e\xad\x33\x86\x56\xc8\xb2\xb5\xb6\x0b\x00\xd2\x9c\xf6\x7b\x3d\x99\x20\x97\xce\x40\x7e\x2a\x2a\xd2\xeb\x75\x11\xb3\x65\xec\x26\x8b\x37\x81\x07\x0b\x17\x68\x34\xec\x39\x22\x32\x1f\xa5\xfe\xf9\xe9\x19\xe0\x82\x8a\xce\x49\xc7\x99\x75\x76\x7a\x0a\xa3\x27\xe3\x37\xb8\x11\x8a\x12\xc3\x93\x2e\x60\x84\x88\x2f\x08\xc5\x09\xe0\x66\xdf\x52\xf9\x05\xb1\x10\x38\x0d\x8c\x67\xf7\x14\xea\xf5\xe7\x61\x81\x58\x30\x00\xb0\xb4\x20\x32\x4c\xd1\xfc\xe8\x1a\x77\xb0\x5e\xf7\x6c\x00\x00\xfc\x24\xdd\xc5\x51\xa2\x36\x31\x2c\x1a\xb9\xae\x93\xf8\xa1\x8c\xe9\x9d\xb3\xd0\xb9\x71\xfe\x8e\x72\x9a\x30\x3c\x1b\x02\xde\x42\x24\x20\x0d\x6c\x42\x80\x80\xa8\xfb\x0d\x29\x40\x8a\x07\x03\x8c\x40\x37\x7f\xb8\x26\xfb\x80\xf5\xf4\x35\x8f\x9d\x99\x7d\x6a\x9d\x9c\x9d\x02\x31\x2b\x48\x32\x90\x36\x58\xf0\xe2\x9b\x9a\x0f\x34\xe1\xbc\x0f\x1b\xa9\x1a\xdb\x93\x3e\x2c\x00\x98\xfa\x8d\x13\x78\x1a\xa9\x18\x0c\x07\xa7\xd0\x55\x11\x4d\xc3\x04\xe4\xb4\x07\xcb\x49\x44\x15\xe3\x04\xb8\xd3\x3b\x87\xb9\xa0\x68\x6d\x98\x4e\xfa\x67\x40\x6a\xfa\x10\xbd\x71\x76\x0e\xf4\x6c\x23\x16\xae\x75\x7a\xca\x36\x78\x7f\xb6\xc9\x16\x0b\xea\x2b\xfc\x07\xd9\xbc\x38\x43\x7a\x31\x3c\x03\xb2\xcf\xd4\xda\x18\x76\x2d\xc0\xa1\x4d\x90\xad\x71\x8f\xee\x9d\x0c\xfb\x50\x38\xba\x9d\x4b\x22\x0b\x75\xc3\x1e\x01\x2b\x51\xa2\x04\x62\xd9\x29\xac\x64\xd9\x51\x40\x1a\x68\x2e\x0c\xfd\x4e\xee\xfc\x3d\xd8\x3d\x07\xb0\xa9\xc4\xd1\xce\x11\x98\x0f\x2b\x6a\x88\x1b\x42\xe2\xcc\xe7\x81\x27\xb2\xc1\x3c\x02\xde\x9f\xb2\x7c\x35\x02\x99\x83\x85\x0b\xdf\xe1\x5c\x41\x1a\x5a\x7d\x28\x79\xc2\x0a\xb4\xb3\x06\x10\x75\x8a\x11\xc9\x0a\x16\x10\x75\x16\xda\x0b\xa7\x15\xdf\x0b\x43\x58\x11\x90\x61\x78\x0a\x88\x09\x1c\xc0\x0d\x12\x37\x20\xf2\x3d\xa4\x0f\xa5\x95\x0c\x3c\x48\x81\xb2\xc3\xf3\x53\xcb\x1a\xca\x18\xb1\xac\xfb\x30\x7b\x30\x79\xda\x8a\x56\x31\xa1\x5c\xb2\x83\x73\x98\xb5\x12\x7a\x0f\x4e\x2c\xa8\x35\x5f\xec\x27\x43\x60\x17\x60\x5c\x52\x24\x74\x7d\x5c\x16\xf8\xe1\x01\x25\x84\x2e\x9d\x0f\x89\x63\x4c\x61\x30\x81\xda\x00\x36\x01\x93\x92\x46\x6b\x27\x8d\x88\xbe\x9f\xc2\xee\xcd\xb4\x35\xd2\x1b\x00\x8a\x0f\x99\xdc\x4a\x01\x69\x60\xd3\x3d\x1b\xb2\xdb\x95\xe7\xa4\xc4\xc3\xf5\xb1\x47\xc5\x56\x77\x0a\x9b\x88\xf8\x4c\xd6\xd1\x3b\xc5\xe6\x01\xaa\x6b\x34\x67\x88\xd7\xee\xe2\x5b\x21\x1e\xcc\xbd\x75\x7a\x72\x6f\x8e\xe6\x4e\x9d\x51\x99\xd4\xfc\x08\x09\xc2\x62\x54\x26\xcc\x9b\x93\x82\x3d\x65\x89\x62\xbe\x21\xb3\x76\xdb\x55\xcc\x6f\x52\x63\x9e\x52\xda\x3c\xb9\x79\x50\xaf\x09\x3d\xe3\xd5\x1a\xef\xf2\xb9\x87\xe2\x5e\x64\xcf\x41\x3c\xa2\x0a\xd8\x74\xd0\xf2\x35\xbf\x65\xb1\x6e\x81\xf9\x01\xdd\x8b\x28\x37\xf1\x2c\x0d\x4c\xa0\xae\xb3\x39\x8e\x6d\x74\xc9\x47\x1e\x87\x09\x96\xa1\x7b\x26\x88\x75\x9b\x30\x9f\x32\x4c\x9d\x1d\xb0\x94\x5d\x29\x9f\x96\xca\xa3\x65\x33\x5d\x08\x41\x37\xd9\x80\xdc\xbf\x23\x5d\x31\x85\x55\x31\x04\xa5\xa0\x22\x64\x1e\xa1\x23\xff\x6a\xfc\xab\x55\x98\xaf\x38\xfe\x77\xe3\x78\xc9\xfe\xd5\x68\xfc\xcb\x6c\x41\x8a\xad\x54\x6f\x34\x2f\x56\xff\x9a\x60\x89\x56\xe3\xdf\xe1\xb4\x81\x4f\x43\x61\xc5\x7e\x53\xb9\xdd\x35\x46\x44\xe2\x4a\x96\x5f\xa3\xdb\x04\x52\xb5\x8c\xc2\x9e\x51\xae\x27\x8b\x93\x87\xee\x14\x95\xaf\x36\x68\xcb\x37\x2a\x73\x63\xde\x60\x0d\x99\xef\xa3\xf2\xad\x55\x2b\xa2\x49\x46\xc2\x85\x40\xad\x50\xf7\x6e\x35\xec\x2f\xe6\x13\x72\x89\x3b\x6d\xdc\x2b\x2f\x5c\x0c\xbd\x70\xdd\xe3\x0b\x0f\x4f\xc7\xe5\x36\xe5\x06\x87\xc8\x1b\x23\x4c\xb8\x9d\xe1\x33\x81\xd6\x8d\xc3\x38\x4b\x3d\x4a\x2e\xb8\xab\x3a\x15\x91\x2b\x33\xf5\x95\xf1\x27\x5d\xa6\xbc\x2e\x24\x24\x03\x7c\x52\x75\x00\x08\x0b\x47\xb7\xbe\x38\xf2\x5a\x2d\x94\xb3\xaf\xcd\xeb\x99\x54\x61\xff\xe4\x49\x35\x01\x9f\xdc\xc4\xcb\x79\xab\xe5\xdd\x27\xdc\x6b\xf5\x94\x87\xc3\x6a\x3e\x35\x4f\xdd\x3e\x49\x87\x18\x19\x9a\x03\xea\x5a\x7b\x75\xb5\x7a\xe6\xd1\x51\xab\x95\x98\x36\x25\xc6\x64\x52\xf3\x89\x85\xe2\xe0\x25\x03\x00\xe8\x2b\x31\x47\xb4\x86\x40\xb4\x7f\x09\xcd\xf9\x91\x7b\x91\x8c\x72\x4f\x0e\x3a\xf4\x04\x7d\xb8\x39\x5c\xd8\xb0\x25\xf0\x26\x02\x1f\x29\x99\x05\xd1\x38\xf3\x40\xdb\x12\x54\xd3\x81\xa6\xb1\xc2\x36\xac\x70\x14\xc8\x03\x13\x75\xd8\xfd\x30\xf3\x8a\xb7\x3c\xad\xb5\x2c\x69\x3b\xb9\x14\x7b\x29\xa5\x70\x2a\x2f\x4c\x78\x90\x55\x2b\xf8\x83\x56\xad\x98\x5b\xe8\x58\x0a\x49\x17\x6b\x84\xea\x4c\x86\x69\x42\x95\x28\x6d\x9f\x3b\xa4\x27\x03\x48\x10\xe9\x1f\x1d\xc5\x22\x6d\x95\xfb\x58\xa4\x12\x23\xe3\x49\x7a\x77\x67\xa0\x30\xcc\x8a\x2d\xd0\xe5\x1c\xf4\x45\x7a\xee\x5c\xe5\x4d\x73\x10\xff\x16\x15\x3b\xff\x42\xcd\x5b\x18\x47\xf4\x13\x69\x98\x1d\xc5\x16\xcc\x7c\xe5\x89\x22\xb4\xf4\x52\x53\x73\x71\xe9\x0b\xad\xb0\x9c\x98\xd4\x09\xca\x94\x8c\x2e\x85\x66\x4c\xba\x90\xa9\x79\x77\x27\x35\xc1\x62\x32\x4b\x25\xe8\xfc\x24\xab\xd0\xa3\xa9\x34\xd2\x68\xa4\x7b\x82\xd0\x6a\x2d\x1c\xf2\xc3\xe1\x40\x27\xc2\xa9\x79\x5f\xd0\x36\x53\xad\xda\x7f\xe3\xa3\x0b\xd3\xbb\x55\x6f\xa6\x07\x21\x47\x95\x42\x74\x29\xe7\xc2\x86\x23\xf6\x1d\x24\x01\xac\x81\x6a\xdb\xc7\x10\xd9\xa0\xed\x28\xd5\x52\xff\x1f\x95\x9a\x3a\xb3\x76\xe2\x6d\xd0\x6e\xbc\x37\x6f\x0b\x3b\x57\xd2\xd6\xe3\x8d\x03\x9c\x35\xdb\x39\xec\xd2\x61\x5b\x87\xcd\x1c\x7e\x8d\xf6\x72\xae\x23\xa4\x55\xef\x21\x5f\xfa\x2c\xf4\xd7\x24\x28\xf8\x4d\xec\xac\xbd\x86\x39\xbd\xbb\xd3\x1b\xac\x49\x0f\x84\xac\x7b\x6a\x92\xb5\x0e\xf2\xdc\xfc\x58\x35\x02\xa5\x27\x00\xcb\xb0\x2f\x0d\x4a\x17\x82\x44\x8a\x94\x7a\xad\x14\x31\x18\xc5\x17\x66\x78\x71\x13\x0a\x07\xd3\x19\x43\x85\x36\xe1\x66\x73\xb4\x76\xc6\x6b\x87\x34\xdc\xb8\x6f\xdf\x38\xdc\x87\xae\xc1\x9f\x9d\x03\xc8\x79\xe9\xf0\x92\x34\xc4\x25\xca\x06\xe3\xa5\xef\xcc\x31\x2e\x49\xcb\x5f\x35\xbb\xb3\xc0\xc3\xa1\x7e\xb5\x35\x43\xfb\x78\xd7\xf0\x47\xdc\x5c\x5d\x3b\xbc\xd1\x69\xb0\x5b\xf8\x81\xf1\xbf\x82\xd5\xd4\x67\xfd\x29\x7b\x09\xdf\x5f\x36\xd8\x3b\xf8\x6e\xec\xf0\x05\x1e\xfe\x39\xf0\x6f\x01\xff\x36\xf0\x2f\x84\x7f\xff\xde\xce\x06\x28\xf3\x0b\xff\xe0\xff\xef\xd0\x76\x16\xfc\x7b\x05\xff\xde\xc0\xbf\x9f\xe1\xdf\x4b\xf8\xf7\x17\xfc\xfb\xb3\x31\x25\x14\xb8\x4d\xc9\xce\xa0\xc0\x96\x9f\xc9\x00\x4a\xad\xb5\xab\xfc\x0e\x13\x55\x22\xad\x0b\x52\x8c\x6c\xf2\x36\xda\x34\x24\x1d\x49\xbc\xcd\x45\xff\xb3\x50\xe6\x2a\x15\x86\x0d\x50\x8a\xa2\xab\xbb\xd3\xec\xc2\xd6\xd5\x6b\xe5\x02\x14\x61\x2e\x3e\xd1\x45\x17\x9b\x85\xf4\x64\x1b\x0e\xe2\xc5\x45\xe6\x09\xeb\x37\x35\x20\x50\x39\xf7\xc6\x40\x94\x6d\xdc\x08\x8f\xfb\x78\xbd\x09\x83\x32\x39\x6b\x79\xc7\x7d\xa1\x0d\x20\x1c\xe1\xd6\x6e\x7d\xa9\x10\xc2\x90\x4d\x6d\x1a\x69\x71\xdf\xd9\xb5\xa8\xd1\xc7\xa9\xad\x67\x11\x13\x57\x25\x2b\xb9\x38\xf1\x33\x47\xb8\x36\x0a\x85\x83\xfc\x2e\x20\x6f\xe3\x8b\x06\x79\xc9\xef\x61\xf8\x02\x1d\x48\xa6\x93\x3e\x86\xd1\x7b\x64\x3a\x39\x11\x41\x14\xfa\x1d\xa0\xd0\x6f\x2b\x9d\x0c\x85\xd4\xef\x29\x4a\xfd\xa6\x93\x33\x14\x5a\x4b\x27\xe7\x53\xa0\x99\x5d\xb6\xe2\x90\x79\x09\x7b\xe2\x28\xb9\xf5\xd1\xed\x43\x00\xc3\x1d\xf0\x56\x50\x36\xdd\xc6\x8c\x08\xc0\x5a\xe8\xae\x16\xcd\x13\x71\xf2\x5b\x4b\x6e\x72\xb9\xc7\xd1\x5d\x53\x0c\x51\x0d\xe6\x42\x8c\xd3\xd6\x8d\x73\xc3\x27\x8c\xe2\x09\x0e\x62\x62\x02\xfa\x27\x1e\x20\x92\xed\xe2\x1e\x92\xf0\xc6\xb2\x31\x12\x3b\x24\x25\x7c\xd5\xb0\xa1\x49\x70\xd4\x84\x46\x7d\xd5\xc0\xf4\x45\x29\x7d\xb3\x97\x1e\x97\xd2\x67\x00\x18\x7f\x23\xf9\xbb\x95\xbf\x7f\x34\xec\xc6\x7f\x61\x8b\x7d\x62\x5b\xa1\xb9\xad\xa4\xea\x07\x8b\x32\xba\xb2\xc0\xbc\x61\x2f\xb1\x85\x01\xa0\xa5\x06\x3f\xc1\xfa\x49\x4b\x0e\x2a\xbe\x97\x20\xc7\x00\x10\xe0\x7f\x59\xc0\x7f\x09\x4b\x13\x32\x3c\xe1\xc9\xdd\x5d\x00\x4b\x97\xfa\xa9\xfc\x06\xe3\xf0\x36\x50\xe5\x29\x19\x07\x05\x46\x76\x35\x7c\xec\xb2\x00\xb8\x5d\x83\x7c\x03\x03\x04\x18\x03\xf8\x35\x69\x56\xb4\x17\x94\x22\xbf\x85\xf9\x71\x78\xf9\x6b\x87\x14\xf1\x13\xd8\x1f\x5e\xa6\xe2\x35\x82\x47\x47\x47\xee\x9e\x04\x48\x48\xbb\xd6\xf2\xe8\x28\xfc\xaa\x2b\x37\xaa\x46\x43\xb2\x44\xb0\xf6\xee\xee\x68\x77\x3f\x3a\xb2\x2e\xba\xc7\xe1\x18\x56\x5f\x3b\x64\x8d\x76\xc3\xb4\xc9\x74\xad\x75\xb1\x10\xe8\x39\xe7\x95\x95\x0d\x4b\x21\x40\xf9\xbe\xb9\x90\x91\x40\xac\x5d\xe1\xc7\x6e\x3d\x8b\x02\x21\xfb\x08\x8b\x7a\x01\x39\x12\x91\x95\x28\x38\x6e\xe4\xca\xa7\x97\xb2\x76\xb7\x86\x76\xdc\x8c\x43\xbb\x6c\xeb\xe8\x06\xc5\xbd\x30\x01\x46\xfc\xda\x69\xe9\x89\x37\xc8\x45\x3d\xc1\xde\xc2\x48\xad\xf9\x1b\xc7\x58\x4b\xda\x7b\xc9\x7d\x49\xa9\x5b\x6b\x15\xd8\xa9\x80\xb1\x19\x5b\x76\x6e\x93\x9c\x6d\xb9\x73\x71\xa9\xf9\x5a\xbd\xe4\x4e\xfb\x32\xf7\xb6\xea\x99\x36\x0c\x93\x52\x58\x54\xf5\x6c\x5b\x6b\x7c\xaf\x6a\xa1\x43\x6d\xbe\x6e\xed\x98\xd1\x78\x2a\xdc\x3a\xa7\xc0\xbc\x6f\x6d\x58\xa3\xf4\xb5\x05\xf6\x37\xb4\x1b\xff\x91\x5f\xa5\x8e\x5d\x5e\x5c\xf0\xae\xd9\xa2\x02\x5a\xc2\xa5\x69\xa7\xd8\xc4\xd0\xde\xb6\xe0\x08\xd4\x5a\x49\xcb\xe7\xcf\x1c\x7e\x6c\x8c\x6d\x63\xf2\x9f\x8f\xa8\x99\x39\x79\x7a\xc1\xff\x33\x45\xf3\x0b\x93\xd6\xbf\xdb\x5f\x50\xd4\x97\xff\x85\x3f\x16\xfc\xfb\xf7\xbc\x05\x7f\x19\x86\x3a\xed\xb1\xf8\x9a\x38\xed\x0f\x5f\x41\x86\x63\x9f\xbd\x2e\xde\x31\x66\xb5\x76\x27\x0b\x77\x95\x3d\x7c\x4c\xad\xcb\x23\xd2\x3b\x8b\x38\x5a\xbf\x90\x1c\x21\x51\xb6\xe8\x13\x00\xcf\xd0\x99\xce\x27\xf2\x74\x87\x90\xe9\x8f\x4f\x67\x82\x8f\xdf\x36\x1b\xb5\xa0\xef\xd9\xb2\xde\x62\x31\x16\x02\x64\x75\xfd\x44\xb0\x42\xc0\x95\x1c\xce\x08\x87\xb0\x28\x44\xe9\x49\x27\xa0\xac\x8b\xc3\x59\xbf\xf1\xb7\xde\x9c\x32\xc5\xb5\x99\x0e\x6c\x61\x79\xc9\x03\x4b\x1b\x33\x36\x8d\x6e\x0b\xb7\xb6\x81\x49\x45\xc8\x8c\xe6\x1b\x87\xcf\x53\x5c\x8c\x57\x8e\x58\x8b\xef\x1d\x7e\x95\x6b\x8e\xbe\x71\xea\x15\x8a\x75\x47\x42\x13\xa5\x91\x7d\x85\xae\xc0\x46\xe9\x85\x85\xef\x82\xd6\xc8\xf4\xf6\x1d\x8d\xa7\x6d\x9e\x01\x86\x67\x28\x42\x88\xf9\x63\x6e\xc4\xb0\x2a\xbe\x7a\xef\x14\x4e\x87\xe0\xbc\x81\xbe\x98\x50\xca\x9f\x16\xcb\xad\x23\x1c\xe4\x2c\x3d\xe2\xd9\xdf\xe9\x8f\xa2\x1f\x13\x1b\x36\x43\xf8\x57\x35\x8b\xfa\x8c\xc6\x85\x0c\xfd\xb0\x0f\x40\x46\xe1\xfb\x83\xa3\x64\x29\xc4\x8f\x32\x29\x23\x4c\x35\xc0\xb2\x83\x0c\xa9\xb0\xcd\x90\x50\x18\x8d\xa8\x96\x0c\x56\x4b\xc5\xbc\x44\xbc\x98\x02\x85\x93\xa6\x52\x7f\x5a\xd8\x07\x84\x65\x12\xb9\xce\x3e\x38\xc4\xa9\xbf\x4b\x47\xa2\x23\x78\xa8\xf5\x9c\xaa\x1a\x10\x10\xca\x17\xce\x9e\xe1\xcb\x0e\xf6\xd4\x1c\xbf\x70\x26\x22\x38\xa5\xcc\xf6\xeb\x54\x1a\x65\x44\xf8\x2f\x1c\xfe\xf1\x1b\xcf\x49\xf1\xdd\xaf\x0c\x13\xb3\x61\x8d\x6b\x2f\x8d\x77\xa4\xc1\x2c\xf3\xbd\x88\x02\xa9\xa6\x7e\xc8\x3c\x25\xfa\x67\x13\x79\x13\x86\xa6\x51\x74\xa5\x7b\x69\x35\x15\xa0\xa3\xbe\x7d\xa9\x82\x7b\xf6\x35\xb4\xe6\x6a\xb3\xf2\xf6\x1a\x93\x76\x12\x8a\x36\xc8\x20\xa5\x1f\x56\x8d\x81\xa3\xb9\x33\x17\x36\xfb\xb9\x1f\x02\xdf\x8b\x66\x5f\x37\x98\x8b\x84\xbc\x49\xa7\x85\xa1\x1e\x12\x14\xbe\xcc\x82\xd4\xaf\x83\xa0\x37\x5e\x87\x74\xa0\xfd\xa1\x30\xef\x72\xb0\x9e\x1f\xfd\xd0\x13\x94\xa1\x52\xcf\x9b\xd4\xa8\x34\x95\x8c\x18\x53\xbb\x0e\x16\xfa\xcc\xc6\xbd\x11\x83\x2b\x41\xff\x1c\x05\xbb\xe5\xde\x64\xbd\xdf\x6b\x47\x31\x3a\x75\xf9\x3f\xb3\x09\xef\x55\x13\x00\xea\x2b\x39\xc7\x8f\x42\x1c\x89\x10\xfe\x27\x51\x87\x30\x46\xad\x0a\x07\x16\x45\xdd\x21\xf0\x6f\x34\x3b\x52\x5a\x39\x50\xe3\xb7\xb0\xac\xff\x76\xa4\xc9\x56\x87\xfd\xa8\x96\x18\x24\x00\x5d\xa8\xa0\x9f\xf9\xf1\x6f\xa7\xc5\x4f\x9a\xcf\xa3\x7b\x46\x73\x6d\xbb\xf4\xd0\x72\x85\x12\xba\x32\xfc\x32\x9c\x43\x68\x23\xc6\x4d\x24\x68\xe5\x7f\x74\x3a\x44\x0e\xe0\x04\xf4\x2d\xd0\x47\x55\x96\x7f\x48\xef\x55\x19\x04\xb0\x27\x42\xdc\x6b\xfe\xe8\x8c\xb0\x72\x74\xd5\x8e\x0d\x80\xbd\x3b\x2c\x83\x90\x1f\x50\x1c\x83\xd4\x3c\xee\x16\xa3\x32\x43\x5a\x9f\x1c\xd2\x41\xc3\x91\x97\x96\x96\xb6\x7c\x92\xf0\x10\x38\x25\x38\x71\xb3\x05\x89\x6d\x2c\x38\x5a\xe9\xb8\x00\x0e\xcd\x58\xf2\xb4\xa4\x6e\xa6\x9d\x44\x5f\xa4\xc6\x24\x6d\xfe\x12\x31\x0f\xfe\x08\xfb\x3c\x52\xef\x30\xe3\x7f\xa7\xc6\x1a\xcd\x33\xf9\x7c\x92\xe1\xca\x68\x67\xb8\x48\x50\x38\x12\x93\x7c\x74\xd2\xf9\x4d\x0a\x07\x74\xf8\xfe\x19\x7f\x85\xe8\x17\x4f\xdb\x1b\xe0\x7a\xdd\x0b\x6b\xdc\xb5\x61\xfe\xe7\xa4\x96\xd2\x0c\x9d\x66\xa0\xb4\xf6\xd0\x99\x82\x6b\x5e\x74\xcf\xc8\x7d\xd0\xcd\x7f\x8c\xf9\x45\xd0\x04\x66\x28\x68\xa6\x17\x73\x53\x54\xbf\x23\x35\x16\x28\x36\xda\xc9\x3e\xec\xcc\x5c\xf5\x65\xce\x8d\x79\xab\x3f\xb4\xcc\xaf\xe0\x4f\x1b\x55\x31\x0f\x01\x69\x2b\x28\x8b\x8b\x1d\x0d\x8a\x82\xb2\x20\x69\x96\x05\xf7\xe0\x54\x24\x2b\xf0\xa0\x07\xe3\xcd\x45\x3a\x76\x0c\x5c\x4d\x17\xf8\xb3\x42\xae\x79\x05\xe3\x67\x3b\x30\x6c\x2b\x2d\x32\xc1\xc8\xd5\x05\x30\xe1\x46\x42\x03\x9e\x88\x01\x5f\xc9\x02\xc0\x77\x5d\x6c\x1e\x0f\x4a\xb2\xb6\x34\x37\xa3\x35\x8f\x51\x69\xa3\xac\xb6\x34\x93\xf8\x91\xea\x57\xd7\xe6\xc7\x2d\x5a\x65\x49\xd8\x16\xfa\xc9\x57\x4c\x65\x0a\xd1\xc2\x57\x49\x9b\x20\xcb\xaf\x6a\xd7\xf9\xd5\x5d\x7b\x33\xda\xb5\xb8\xe6\xe0\x02\xe7\x64\x1c\xb7\x8c\x18\x66\x0f\x86\xd6\x6e\xe3\x20\xdb\xb1\x68\x1c\x6a\x5e\xdf\x70\x6f\xa4\x30\x95\x00\x32\xe9\x5a\xa2\xa4\x4c\xa4\xe3\xb8\x51\xd2\xbf\x33\x3f\x66\xc6\x1c\x99\xf0\x02\xf3\x0d\x29\x12\x84\x2d\xd8\x99\x17\xaf\x22\x1a\x91\x36\x0c\x15\x34\x06\xd8\x85\x72\x07\xab\xdd\x72\x4a\x1c\x12\x70\x19\xa1\xf9\xd4\x02\xb6\x19\x5b\x9f\x96\x94\xf2\x74\x6e\x4b\x29\x32\xea\x3a\x79\xa5\x33\x38\xa4\x3d\xa5\xc3\xf2\x58\x04\xd1\xb0\x9b\x88\xb0\xc3\xa7\x29\x99\x33\xc6\x8f\xa7\xe2\xca\x5d\x3a\x29\x60\x1b\x06\x7d\x2b\x74\x21\xf8\x47\x41\x70\x42\x8d\xe0\x78\x39\xc1\x89\x0f\x12\x1c\x35\x89\x19\x4c\x67\x41\x2b\x7c\xf9\x85\xc4\x22\xc2\x43\x0c\xa3\x89\x28\x40\xe0\xde\x5a\x4f\x8f\x8a\x8c\x62\xbc\x0b\x2c\xd1\x2b\xf0\xb4\x0a\x62\x66\x5d\xfc\xe8\x8c\xb5\x89\x80\xa3\x7e\x1b\x16\xc9\x39\x4c\x89\xbd\x83\x59\x1a\x63\xd8\x6e\xbf\x8a\xe4\xc2\x6a\x43\x4a\x79\xae\x80\x8e\xd5\x9c\x1a\x97\x7c\x05\x80\x80\xa8\xf1\xee\x31\x94\x40\xc3\x73\x7b\x04\x7e\xa6\x44\xd6\x2e\x35\x3b\x1b\x44\xed\xc8\x4a\x92\x5b\x98\x3e\x51\xc6\xdd\x2f\x85\xe3\x21\x34\xfd\x94\x4a\x83\x6b\x1e\x47\x8b\x6f\x2c\x10\x9e\x57\x33\x38\xd1\x62\x10\xd5\x25\xe0\xf4\xe2\x18\x44\xcc\x48\x61\xec\x42\x7e\x20\x91\xc3\xe5\x88\xbf\xa4\x82\x86\x2a\x06\x5e\x9e\xb2\x9f\xcd\x9a\x92\xe6\x1a\x0c\x88\x72\xe1\x82\x34\x24\x37\x73\xcc\x3c\x58\xc4\x6d\xe8\x25\xaa\xbc\xe9\xfe\x53\x91\x65\xf6\xd1\xdb\x66\x7a\xc1\xe3\x11\x14\x62\xa2\xbd\x3e\xb6\xd7\x40\xab\x19\x44\x6f\x05\xec\x0b\x3c\x25\xc2\x21\x9c\x09\x35\x39\xa0\xf1\xd4\x00\x75\xa5\x7c\xc9\xb7\x42\x4b\x49\x78\xb9\x81\xd3\xbe\x08\x2c\xc6\x93\x89\x05\x55\x5b\x28\xcd\x9e\x87\xa6\xf6\x64\x02\xc8\x0a\x31\x80\xae\xd3\xe9\xfd\xbd\x61\xaa\xc1\x47\xf5\x81\x38\xf2\xcb\x06\x20\xbf\x71\xf8\xcf\x0e\xff\xc9\xe1\xbf\x3a\xfc\x4f\x87\x7f\xe7\xf0\xdf\x1c\xfe\x97\xc3\xdf\x3a\xfc\x0f\x87\x7f\x59\xb7\x39\x3f\x77\xd4\xe4\xbd\x75\xe0\x8c\xf0\x87\x03\x1d\xfe\xd2\xc1\x2b\xa6\x66\xda\xf2\x9a\x5e\x2b\x6e\xe6\x6f\x4a\x3f\x44\xe4\x32\x2f\x05\xc0\x90\xf5\x37\xcc\xfa\x97\xc3\x00\xa5\x7e\x76\x28\xfa\x27\x8c\xfe\x15\xa3\xff\x74\xcc\x32\x08\x86\x65\xcd\x71\xde\x33\x7b\x22\x88\x48\xea\x84\x3d\x74\x45\x61\x02\xd1\x67\x3f\x19\xf1\x71\xa1\x39\x08\x67\x0f\x88\x9c\x0a\xbe\xe1\x1b\x87\xfd\x0c\x19\x1c\x06\xe0\xff\x74\x18\x34\x00\xaa\x87\xca\xa1\xd1\xd0\x64\x68\xf0\xf3\x82\x97\x70\x25\xe3\xf0\x6b\xaa\x2d\xe4\xef\xd2\x7c\x25\xff\x96\x1e\x5c\xca\xcf\xf5\xdd\xfe\xaf\x83\x0c\x43\x29\xdb\x77\x29\x70\xd2\xbf\x3b\xfc\x79\x6a\xbc\x4d\xd9\x2f\x29\x4b\x3d\x36\x69\x3f\x8f\x58\x1b\x0d\x12\x00\x56\x7e\xef\xf0\xae\x77\xae\x98\x04\x37\xf0\x37\x55\x55\x12\xc9\x82\x30\xdd\xfe\xd3\x47\x31\x45\x75\xc7\x60\xf2\x5b\x88\x2e\xa5\x60\xfa\x9f\x74\x71\xa4\xd1\xf7\x38\xcb\xa3\x00\x61\xe1\x90\x4b\x75\x14\xc5\x9d\x07\x4d\x2e\xa0\x1d\x4e\xde\xc2\x73\xa1\x70\x86\x2c\x82\x88\xd5\x18\xec\x4e\x85\xfa\x92\x08\xe2\x4a\x2b\x37\x01\xcd\x0f\x90\x6e\x63\x64\x02\xc6\x42\x3f\x00\x63\xa1\x27\x88\xb1\xc5\xa3\xb0\x68\x90\x31\x11\x66\x2a\x72\x0d\x33\xe4\xde\x0d\x35\x36\x51\xe8\xbb\x2f\xd1\x68\xf4\xb3\x12\x83\x59\xb8\x18\xf1\x0c\x07\x7d\xa5\x74\x62\xe7\x96\x3b\x9e\xc2\x66\x27\x98\x79\x71\x52\xaf\x90\xb1\x0f\x17\xce\xab\x70\x2e\x45\xaf\xca\xd0\x08\x86\x66\x13\x85\x2e\x8e\x31\x69\x77\x86\xac\x7f\xd6\x39\x15\x26\xf5\x1c\x60\x9f\x83\xc4\x98\xf4\xce\x3b\x03\x76\x32\xe8\x0c\x20\x5a\xdc\x72\x75\xad\x53\x4b\x5c\xe3\x16\xb5\xff\x96\x38\x87\xad\x0f\x08\x8b\x67\x74\x6a\x89\x48\x11\x3f\x7f\x04\x12\xd4\xc0\x03\xfe\x0c\x38\x33\x7c\x93\x8a\x65\x10\x9f\x7c\x64\xf0\xbe\x6c\xd7\xbe\x54\x2d\xb9\x06\xff\x54\x37\x51\xc8\xa7\xd4\xcf\x1e\x1b\x9c\x51\x7f\xb4\x6e\x0e\x06\x6c\x38\x40\x22\xfa\x08\x70\xa7\x65\x70\x7d\xd6\x3d\xef\x9c\x97\xc1\x9d\xb1\xee\xd9\x14\x95\xcd\xe4\xae\x5a\x7e\xee\x4d\x39\xa0\x89\xa7\xe1\x47\xb8\xe7\xc0\x3d\xbf\x11\xf7\xe5\xa8\xe3\x85\xb8\x5f\xa8\x8d\x49\xc3\xdb\xc8\x1b\x08\xb5\xe2\x14\xd0\x50\x58\x60\x10\x8a\xc5\xca\xe5\x9e\x91\x5d\xf0\x4e\xb7\x77\x74\xd4\xe9\xf5\x4f\x90\x82\xc5\x17\xbc\xdd\x39\xe9\x0d\x8e\x8e\xda\x9d\x5e\xf7\xe4\x22\x1e\x47\x36\xe5\x19\x0e\x2b\x99\x20\x15\x33\x75\xbb\x03\xc8\xe4\xd8\xbe\xa9\xfc\xc8\x87\xa4\xc2\xb6\x77\x39\xa0\x35\x59\x12\x58\x6c\x74\xa4\x7d\xc5\xdc\x29\xbe\x64\x03\xf7\x47\x28\xc3\x23\xb8\xe2\xda\x50\x9e\x5b\xff\x88\xb5\x8f\x7b\xb6\x7f\x80\x2a\x0e\xef\x50\x2e\x0f\xc6\xda\x91\xbe\x20\x8b\xa5\x62\x1a\x13\x08\x25\xf5\xaf\xb8\xc4\x20\xe6\x94\x74\xaf\xb4\xe0\x57\x3c\x2d\x1c\x17\xe1\xfb\x83\x64\x37\xad\x30\x46\xd4\xdf\x52\x44\xfc\x48\xd6\x29\x2d\x73\x4e\x5e\xf9\x33\x2e\x7d\xde\xdf\xe3\x1c\x6e\xd4\xd5\xe0\x23\xad\xd3\x14\x05\x50\x97\x32\x2a\x7f\x3a\xe5\xcf\x90\x58\x8d\x3c\xc6\xfc\x4c\xcd\x44\x85\xf8\x54\x8f\x08\x76\xfa\x83\x26\xd5\x93\xa7\x68\x8a\x94\x46\x69\x75\x10\x9f\x23\x57\xce\x61\x7d\xcb\x5a\x2b\xb3\xca\x20\xa3\x0e\x4e\x28\xa1\x68\x8b\x31\xe1\x42\x97\x70\xc1\x49\x9b\x30\xbf\x16\x2c\xad\xd1\xd4\xd4\x36\x3c\xa0\xfd\x09\x2c\xbc\xc1\x00\xce\x96\x0b\x58\x5c\xfd\xb3\x66\x00\x3b\x41\xd2\x52\x71\x2d\x19\x87\x84\x56\xac\x11\xd7\x14\xc8\x0e\xeb\x26\xd2\xc0\x22\x9c\xbe\x75\x2a\xcb\x58\x5d\x28\x53\x53\x51\x0f\x80\xb6\x5e\x45\x98\xa7\xdb\xa3\x20\xd6\x46\xab\xba\x19\xb4\x45\x02\xac\x76\x0a\xd7\xd5\x99\xc1\x5a\x2d\xd7\xd9\xb3\x54\x3b\x11\x60\x4d\x9d\x04\x5a\xd5\x39\x1c\x6a\x95\x02\x0d\x79\x54\xa5\x61\x8e\x24\x72\x9b\xa1\x81\x7f\xe5\xb0\x1f\x1c\xf6\x8b\xc3\x42\x97\xa5\x2e\xf3\x5c\x16\xe7\x94\xf5\x73\x2f\x48\x7e\x40\x3e\x30\x76\x35\x16\xc6\xf5\x0e\xad\xa7\x52\x36\xf9\x41\x07\x0e\x57\x5d\x7f\xb0\x57\x8e\x76\x26\xfd\xc1\x39\xee\xe1\xcd\x62\x96\xb7\x2e\xf0\x1e\xd3\x3c\x57\xaf\xdf\xbd\x67\x7e\x5e\x7e\xa5\x97\x5f\x16\xe7\xb1\x8d\x77\xb0\x83\xbe\xde\xe8\xf9\xc1\xbe\xf9\xaa\x0f\x50\x45\xa9\xc8\x32\xff\xc6\xae\x6e\xbc\xe2\x86\x87\xb0\x01\xdf\xbf\x6a\x2e\xbf\xf6\x18\xb6\xc2\xaf\x93\x77\xfb\xc5\x0e\xd7\x42\x7e\xd8\x88\x85\x74\x87\xa7\x8c\x4c\xe7\x8b\x07\x69\xd2\xce\xd3\x2f\xce\xf7\xf6\x86\x54\xdd\x6e\x53\x75\xf9\x5e\x90\xd6\xef\x05\x5a\xce\x4f\xd1\x7f\x2d\xeb\x27\xa9\x7d\x25\xef\xa7\xe8\x7b\xa9\xbd\x8f\xa2\xe3\xfb\x25\x24\xcd\x56\x5c\xd7\x06\x50\xee\x30\xc3\xa5\x89\x16\xd4\x18\xb0\x76\xc8\x90\x30\x0e\xdc\xaf\xce\xdc\xcf\x12\xa3\xe5\x1c\x30\x36\xcf\xa2\xa3\xa3\x48\xf0\xb9\xc0\x9b\x45\x1c\x58\x32\xd3\xdc\x3b\x44\xa1\x71\x73\x1f\x6f\x1d\xb3\xa0\x74\x81\xa2\x59\xf8\x8b\x04\xa3\x17\xe6\x2e\xfb\x32\x69\x37\xfe\xa4\x33\xd0\x2c\xf7\x1e\xb8\x57\x7d\x55\x77\x74\xcb\x8c\xd8\x85\x8a\x5f\x39\x4a\x9d\x7c\xef\x3c\x28\x4b\x7f\xd6\x81\x10\x7a\x88\x50\xbf\x74\xc6\x93\xb7\xce\xf1\x97\x78\xbe\x82\xbf\x53\xfb\x2f\x88\xf8\xce\x39\xfe\x0b\x4f\x5e\xf0\x77\x6a\xff\x09\x11\x3f\x39\xc7\x7f\xe2\x99\x0c\xfe\xc2\x91\x4e\x1d\xee\xb0\x3d\xd5\xbb\x50\xcd\x03\x9e\xcb\x3d\x97\xb7\x8d\x5f\x1c\x1e\xba\xe2\x56\x61\xbf\x0d\x19\xb6\x61\x32\x21\x82\x07\xf4\x93\x48\xde\x74\x2a\xf6\xeb\xe8\xef\xaa\xef\xa8\x07\x44\x4c\xe1\x90\x2f\x84\x4a\x15\xb7\x76\x77\x77\x89\x4f\x95\xf6\x1c\x0e\x6a\x86\x10\x32\x0d\xc9\xe5\xca\x63\xfd\x65\x18\xbe\x54\xee\x47\x8f\x6c\x26\x3d\x1d\x27\x9e\x8d\x3f\x64\x4d\x93\xd5\x18\xfd\xde\xc3\x37\xc7\x14\x95\xc7\xd4\xa3\x22\xe1\x71\x7c\x81\xc3\x6b\x70\x3a\x1d\xa7\xb6\x51\xc1\x6a\x60\x0f\x5a\x82\x0d\x71\xca\x43\x67\x54\x8f\x2e\xd0\x18\x35\x08\xd2\x4a\x6f\xbe\xce\x8a\xf1\xde\x7a\xfb\x91\x97\x59\x8a\x46\x3d\xf9\xcc\xcb\x4f\x71\xde\xfb\xcc\x07\x9e\x07\x8e\xf6\xcb\x2c\x70\xea\x4c\xb8\x6f\x3d\xe3\x36\x3f\xc6\xdd\x7a\x8a\xf5\xbf\xcd\xe1\xd3\x49\xa3\x3a\xc5\xfa\x95\x78\x81\x4d\xe8\xc7\x13\x6f\xac\x7f\x89\x18\xb2\x21\xf0\x0b\x63\x8b\x11\x3c\x74\x44\x0c\x05\x72\x71\x43\xfe\xd2\xa3\x43\x03\xde\x45\x63\xa1\x50\x14\x62\xea\xa1\xf4\xa2\x37\xc6\x37\x25\x88\xb2\x2d\xb4\xa2\x5c\x3d\x96\x94\xaa\x56\xc7\x81\x47\xb5\x00\xff\x7f\x55\xd3\x59\xd7\x8f\xdd\xc0\x3b\x68\x63\x54\xbc\x4e\xd4\xcc\x38\x7a\x64\xad\xa5\x5a\x76\x0c\x27\x78\xe8\x26\xd9\x68\xc2\x66\xb5\x55\x27\x2d\x75\x80\x29\x49\x22\x0a\xe9\x6b\x26\xee\xa5\x58\xed\x79\x2d\x53\x86\x8c\xc5\xfd\x31\xe0\x94\xea\x60\x28\x3b\x88\x6f\xd4\xd2\x88\x9a\x7c\xd1\x6a\x30\xed\xe1\xca\x9e\x64\xd3\xfb\xe2\x20\x2b\x8d\x55\x66\x7c\xf8\xcf\x8c\x44\xc6\xc2\x48\x24\xad\x1f\xc0\x33\x7d\xf8\xe2\x07\x8a\x79\xfc\x8d\x67\x18\x29\x6f\xc5\x26\x0e\x47\x46\x73\x85\x86\xfe\x0f\x9c\x04\x3e\x09\x8b\x1e\x63\x80\xc6\x08\x80\x04\x2b\xcb\xdb\x64\x9c\x6b\xb7\x04\x73\x5f\xe8\x19\xd7\xc9\xc2\xe1\x41\x36\x2d\x8c\x6a\x61\xcb\xb8\x9a\x32\x9f\x4b\xa4\x62\xd2\xe8\x65\xe2\x63\xbb\x98\x34\x61\xe9\x46\xf8\x10\x00\xc7\xec\x3c\x2d\xcb\x6d\x0a\x61\x5a\x86\x8c\x7a\x9e\xe6\xe3\xbd\x70\x9e\x56\x88\xec\x6b\x97\x71\xc5\x05\x1c\xf4\x70\xd1\x8c\xcc\xa6\xd7\x82\x50\xd0\x4c\xda\x6e\x73\xd1\x74\xe0\x1b\xaa\x6b\x26\xad\x80\xbe\xf2\xfe\x2d\xd1\x36\xa3\x9b\x3d\x80\xc8\x92\x4d\x12\x38\x52\x79\x80\x2d\xe3\x0a\x6e\xa2\x87\xec\xe4\x0a\xc3\x82\x85\xe1\x23\xff\xf8\xc6\x6c\xde\xc0\x76\x7a\x23\x0c\x09\xae\x4c\x25\x04\x5b\x93\x39\x38\x5e\x9b\xcd\x35\x73\xd9\x5a\x64\x5e\x9a\x0f\xe5\x8e\x8f\x37\x66\x13\x3d\xdf\x6e\x1e\x32\xab\x9b\xf3\xbe\xe1\x57\x37\xf8\x1e\xf2\x7f\xa4\x45\xc3\xe4\x41\xd8\xce\xf1\xdc\x6c\xce\x81\x03\x98\x3f\x12\xf6\x1a\x61\x4b\xd0\x0b\xd3\xac\xf2\x11\xd0\xa7\xdc\xfb\x32\xdb\x70\xd4\x29\xe5\x1b\x76\xc3\x51\xed\x8b\xf7\x51\xad\x84\xf7\x74\x4e\x03\xb9\xb6\xba\x1b\xb3\xf4\xa0\xcd\x46\x39\x71\x87\xe6\x2c\xbc\x17\x66\x7d\xa2\x2c\x45\xd8\xfb\xa0\x1f\x24\x0e\x2b\x40\x46\x35\x5a\x4b\x3c\x0c\x25\xa8\x61\x8d\x0e\xae\x57\x80\xc2\x9a\xa4\x49\x1e\xbf\x34\x82\xba\x78\x73\x4a\xa7\x7a\xef\xf1\xc6\x7a\x50\x70\xf9\xef\x28\x96\xa7\x38\xb4\x21\xed\x87\xda\xa7\x1d\x96\x22\xa8\x8f\x5a\x81\xc7\xda\xb4\xa5\xb3\xb2\xb0\xd4\x4a\xc7\x65\x0c\x06\x32\x96\x6c\xb4\x8a\x58\xb4\xe1\x2a\x2f\xd9\x7d\x58\xfa\x19\xde\xa2\xc3\x7a\xbe\x70\x29\x2a\xc0\x97\x5a\x94\xec\x34\x75\x72\x65\xec\x4c\xbc\x76\xf5\x19\x1e\xa6\x33\x26\xf9\x24\xad\xd1\x8f\x25\xa9\x79\x1b\xbd\xa2\x8d\x4e\xd1\xc6\xa8\x68\x63\x4c\xcf\xb1\x70\x22\x44\x71\x7a\x94\x53\x05\x7a\x74\x11\x51\x94\x03\x45\x90\x56\xd5\xb6\x31\x66\x0e\x5d\x0d\x47\xa2\x8d\x49\xea\x6d\x3e\x67\x8e\xae\x20\x7f\x3e\x43\xf2\x43\xcd\x0f\x7d\x16\xb3\x73\xf5\x58\xd0\xc6\x8d\xbc\xc7\x58\x8b\xee\x91\x29\xa9\x1b\xb6\x2e\x06\xf1\xf1\xa0\x36\x12\xd4\x5c\x03\xb5\x61\xf3\xe9\x3f\xb8\x67\xda\x01\x08\xa0\xdc\x1f\x3c\xc3\x81\xe5\x7d\x4e\x0f\x7a\x2f\x3c\x34\xf8\xcf\x76\x28\x63\x09\x09\x01\xac\x79\x4c\x58\x62\x82\x0f\x84\x60\x47\xfb\xcf\xae\x82\xa1\xc6\x64\x42\x6f\xee\xed\x73\x4b\x5c\x46\xe0\xc7\xb9\x25\xaf\x1f\x74\xdc\x56\x19\xcf\x28\x51\x64\x3c\xa3\x42\x53\x9d\xce\x7b\x4e\xfa\x2c\x76\x1f\x47\xe6\x0f\x51\x8b\x49\x7a\x77\x77\x80\x7b\x61\x1e\x2a\x3b\xd4\x26\x95\x38\x88\xaf\x3d\x58\x1c\x7f\x6b\x1a\x26\xfb\x3b\x6c\xf5\x1d\x40\xe5\x30\xfe\x51\xed\xe2\xfa\x2e\xca\x62\xbd\x0a\xef\xc1\x15\x85\xe6\x33\x6b\x38\x37\x6f\x8c\xbc\x96\xed\xe5\x2c\x8c\xb4\xfd\xfa\x28\xcc\x00\x8a\x00\x2b\xae\xf6\x04\x40\x50\xd3\x9c\x09\xa9\x41\xb9\x07\x96\x98\x6d\xdd\xe3\xe5\x93\x1c\x2a\xcd\x26\x5d\xbd\xdc\xfb\x8f\x82\x8d\xd6\x59\xe8\x2a\x17\x9c\x03\x13\x55\xd4\x9d\xae\x22\xb7\xe6\x08\xea\xb8\x70\xee\x76\xc5\xc5\x57\xe4\xc2\xe7\xde\xd3\x9e\x7e\xe5\xf5\xad\xf7\xd8\x4b\x25\xd7\xe5\xdf\x78\x07\xb7\x59\xe2\x79\x7a\xc7\x46\x17\x05\x6f\xef\x59\x4d\xb6\x9e\xd0\x1a\x40\xf5\x65\x23\xc4\x7b\x2e\x73\x94\x1f\xa4\x3e\xf8\xeb\x2c\x5d\x39\xc1\x43\xaf\x57\x70\xec\x71\x5d\x75\xec\x71\x5d\x71\xa3\xba\xd7\x26\xf9\x94\x4e\x35\x21\x97\xa6\xf9\xc5\x38\x3a\x4a\x8f\x73\x5e\x0e\x2f\x7c\xe6\x69\x7d\x13\x7c\x81\xe9\x75\xde\x40\xa0\x11\x41\xde\x88\xc0\x2d\xbf\xbd\xbd\x88\x42\x92\xee\xae\xb3\xaf\x12\x79\xc6\xcf\xf9\xa1\xed\x67\x6f\xef\xd1\xee\x81\x3a\xa1\xe8\x4f\x79\xd1\x9f\x3c\xea\x78\x72\x68\x32\xba\xc7\x80\x85\x39\x43\x5a\xf4\x6f\x19\x46\x6b\xac\xaa\xbe\x4f\x49\xde\xa7\xc4\x65\xbf\x7a\xfb\xaf\x49\x05\xea\x4e\x42\xa6\x66\x12\x2a\x30\x0a\xab\xea\xa6\xd9\xfe\x3e\x9a\x16\xcf\x91\x6b\x2f\x76\xe9\x70\xbb\x5f\xe3\x9f\x9e\xf1\x6b\xde\xa3\x5f\x45\x8f\x16\xe5\x1e\x15\x1d\x52\xdd\x81\x59\x2b\xba\x13\xc5\xe9\x2a\x02\xa6\x79\xb3\x3a\xd4\xa5\x45\xde\xa5\x85\xc0\x95\xd5\xe1\x21\x23\xac\x7d\x10\x69\xb1\xab\xa1\x8e\xb2\xb0\xf9\xc6\xde\xc3\x2d\x58\xe5\x2d\x58\xb9\xec\xbb\x87\x07\x55\x3b\x42\xfc\x8a\xd7\x20\xf9\x29\x03\x6d\x83\xff\x64\x68\x68\x7b\xfc\x27\x6a\xf7\x6a\xe3\x4c\xb7\xaa\xc4\xc8\x5d\x3e\x38\xe2\xdf\xe5\x23\xfe\x9d\x3a\x3c\xaf\xc9\x20\x2e\x74\xe6\x66\x59\x84\x3a\xf5\x0c\xe8\x17\xbf\x79\xa8\x02\x2d\xe8\xca\xd2\xcd\x85\xe0\x31\xb7\x13\xdb\x7f\x78\xac\x21\x82\x6d\x37\x88\x12\x6f\xde\xb0\xbf\xf4\x50\x79\x7c\x63\x3f\x87\x24\x0c\xb4\x67\xe4\x6b\xac\x61\xff\xae\x22\x9c\x05\x8c\x62\xc3\xfe\xde\x63\x33\x98\xde\xc4\xf6\x62\xd6\xa0\x50\x3b\xda\x78\x61\xc3\x8e\xf3\x6f\x05\x33\x8b\xd9\x2c\x0b\xe7\x81\x67\xfb\x31\x73\x1d\xda\x11\x03\xfb\x17\x00\xa8\x3e\x64\xd1\x57\x7a\x94\x2a\xfd\x03\x76\x3c\x8c\xd2\x28\xf4\xec\x45\x0c\xb3\xb9\x74\x0f\xa8\x85\xa7\x9d\x77\xde\x8e\x43\xb0\x23\xca\xf2\x63\x09\xe4\xcb\x63\xa5\x9f\x2c\x1d\xbf\x6c\xc8\x75\x44\xef\xb8\xcf\xba\xf0\x0f\xd9\x17\x57\x18\x56\xec\x53\x24\x44\xdc\xc8\x88\xa1\xcc\x35\x9c\xca\x0b\xf1\x75\x67\x95\x55\x7c\xfd\x68\xc7\x36\xa1\x74\x12\xe6\x2a\xe4\xf2\x5d\x69\x32\x15\x12\x27\xf5\x47\x17\x3c\xb7\x90\x61\xdc\x1b\xfc\x45\xc7\x95\x85\x0c\xfb\x8e\xaf\xdb\x5d\x21\x83\xb4\xc5\x3f\x33\x4e\x22\x89\x73\xce\xf9\x5f\xc0\x90\xa2\x57\x93\xb7\x9e\x99\xf2\xb0\xf0\x32\xe8\x93\xbf\x32\x74\x02\x76\xe1\xa3\x5b\x26\x53\xba\xa2\x9a\xb4\xe6\x9a\xcb\x28\x3c\x6e\xfb\x53\xb4\x94\xdb\xba\xd1\xa3\x21\x46\x3a\x6e\xf2\x79\x37\x07\x01\x67\x75\x1f\xd9\xe0\xa7\xe9\x64\x36\x25\x0d\x2d\x19\x01\x5b\xb1\x88\x01\x42\x8d\x31\x96\xcc\x62\x91\x04\xd2\x8c\xfb\x0a\x96\x95\xc3\x42\x1f\x77\x33\x48\x44\x75\x2d\x82\xd1\x96\x20\xc8\x7b\x03\xc1\x68\x4b\x18\xca\x4f\xe7\x47\xba\x5c\xb0\xb5\x05\xe7\xa2\xdf\x10\xf2\x22\x6e\xfb\xf7\xd2\xb1\xa0\x14\xbe\xaa\xdd\xbb\xe5\xfd\x44\x3b\x15\xbf\xf7\xc8\x43\xa2\x48\x96\xf8\x44\x9f\x10\x64\x46\x1a\x01\xa2\x9a\x2d\xc3\xce\xef\x64\x83\x71\x4a\x23\xc8\xe0\xab\x0c\x4b\x2e\xbe\xa8\xac\xf0\x81\x0c\x2d\x5f\x95\x5a\xee\x8a\x18\xad\x77\xa8\x97\x16\x95\xf2\x24\x22\x46\x1f\x81\xa6\xd3\x72\x9b\xee\x85\x72\x56\x61\x7e\x2c\xaa\x45\x0f\xa0\x4a\xc9\xf8\xfe\x72\xb2\x28\xa2\xef\x97\x5a\x7b\xa0\xf9\x3e\xda\x58\x27\xbd\xe2\xad\x18\xbf\x19\xca\xc8\xa2\xc7\x45\x6b\xd4\xa3\x4e\x45\xe6\x25\xd4\x2c\x00\x5c\xb4\xbb\x30\x1b\x32\x67\x11\x0d\x45\x5a\x2d\x31\xb0\x1b\xbe\x55\x62\x6e\xbb\x8b\x88\x8a\xe3\x23\xaa\x96\xf9\xa9\x25\xb5\xc9\x47\x4f\x56\x50\xeb\x64\xd3\xee\x01\xc2\xc2\x0f\xf4\xa9\xc8\x85\x1e\x89\xcc\x76\x7b\x33\x82\x94\x56\x6b\xca\x8b\x14\x62\x72\xaf\x95\x8b\x57\x9f\x6f\xd0\x71\x38\xfa\x47\x6c\xb7\x7d\xf3\x5a\xde\xc4\x4d\xb6\xd0\xc9\xc2\xd6\xef\xb5\xb8\x10\x80\x75\x00\xac\xf1\xdb\x9c\x2b\xde\x77\x77\x89\x77\xdf\x46\xaa\x9b\x7c\x7d\xe8\xae\xdb\xe3\xa4\xc3\xe0\xdd\x03\x1d\xd9\x3d\xae\x48\x2c\x8a\x00\x5f\x9b\xe6\x1c\x60\xfe\x88\x53\x07\xe2\x47\xf4\x00\xb6\x76\x73\xa7\x7d\x6b\x97\x57\x4a\x69\xef\x61\xb8\x92\xdd\xca\x3b\x49\xc9\x1c\xfe\x9e\xe7\x46\xe5\x7a\xd2\x6b\x93\xed\x65\x4b\x79\x72\x0c\xe9\xf4\x2a\xfd\x39\xb2\x4c\x38\xc8\x68\xc6\xea\x1a\xae\x19\x17\x8f\xda\x9d\x41\x13\x18\x6a\xa8\xb7\xf6\x95\xa5\x38\x92\x90\xfc\xbc\x5e\xb5\xc4\x33\xe9\xd9\x75\x92\x41\x13\x68\x4e\xab\xa3\x76\x77\x87\x2a\x77\xb0\x8d\x0f\x85\xa5\x3b\x87\x04\x6e\x4c\x53\xc9\xe0\x8b\x63\x35\xc1\x88\xa7\xa4\x17\x0a\x0d\x44\x61\xac\x36\xca\x69\x35\xe9\xb0\xe9\xb7\xc4\x25\x22\x89\x6e\x99\x4d\x38\x64\x53\x44\x77\x4a\x52\x5b\x10\x21\x3b\x33\xf1\x9b\x21\x8b\x9a\xe1\x54\xf4\x28\xf0\x37\xf5\xaa\x43\x4c\x7f\xa5\x9a\xc7\x64\xbd\x59\xf8\xab\xd3\x7a\xd8\x86\x04\xa1\xa3\x23\x94\x6d\x26\x01\x76\x51\xfa\xb1\xfb\x28\x9c\xd5\x87\xf2\x72\xc6\xcc\xef\xd8\x49\xa4\x92\xb2\x93\x0b\x82\x74\x62\x14\x86\xf7\xdb\x8e\xd9\x26\xb9\x33\x72\xf1\xeb\xa1\x3b\x7b\xd4\x6c\xf5\xa6\x6c\x19\x1b\x11\xec\x13\x28\x0f\xba\x44\x29\xa9\x84\xa4\x44\xa5\x5b\xbc\x0d\xc9\x4d\x51\x5c\xee\x2a\x2f\x32\x4d\x3b\xcf\x89\x1e\x4f\xf7\x73\xfa\x3c\x1a\x39\x79\x12\x5d\xbf\xa2\x4b\xc4\xfc\xb5\xa0\x40\x60\xf4\xfd\x97\x85\xce\xae\x46\xda\xa7\x62\x18\x23\x67\x89\xa6\xf7\x26\xa9\x5d\xa9\xc5\x78\x13\xeb\xa6\x38\x50\x0a\x6a\x82\x4a\x54\x4b\xf8\xea\x04\x62\xe9\x4f\x55\x43\xf2\x84\x58\x26\xa0\xc2\x7f\x8d\xc9\x80\x14\xfd\x75\x49\xdb\x1d\xe4\x00\x99\x67\x42\xca\x0c\xc5\x4e\x47\xf5\x36\x06\xd4\x95\xb9\xb6\x83\x90\x18\x95\x4f\x27\xb9\x76\x24\xaa\xfa\x8c\xed\xa3\xe2\x75\x36\x9f\xca\x6e\xee\x77\x56\xaa\x98\x4d\x32\x38\x1c\x3a\x53\xfc\xd3\x42\xaf\x55\x38\x40\xc5\x10\xdf\x44\x31\xf0\x36\xfe\x03\xec\x84\x40\x4c\xe5\x70\xfb\xf0\xa8\xbb\x92\x87\x08\x24\x0f\x91\xe8\xee\xb9\xbb\xde\x10\xb9\x06\x57\x72\x0d\x41\x0d\xd7\x90\x6a\x1e\x96\xd1\xef\x00\x50\x8d\x44\xd2\x7a\xdc\xa4\xf8\xa4\xe5\x6a\x6c\x02\x4a\xf6\x45\x53\x14\xd5\x6b\x05\x7a\x34\xc4\x90\x87\xd3\x1b\xf4\x92\x55\x4b\x31\xc4\xfa\x1a\x75\xc9\xb4\x06\xe1\xe1\x0c\xe8\xfc\x98\x16\x8d\xb7\x21\xeb\x9f\x14\x08\x90\x66\xcb\xa0\x8a\x83\x6e\xc9\x72\xe4\x33\x6b\x0c\x04\xda\x6e\x2f\x18\x99\xf8\x68\x03\xa0\x26\x4a\x91\x7a\x63\x0f\xa2\x17\xc8\xe0\xc8\xd8\x08\x40\xc5\x94\x7d\x8b\xd9\x7d\x99\xe0\x34\xd1\x67\x31\x66\xdf\x42\xf6\x28\x8f\xcd\x94\x9e\xc8\x24\x66\x3e\x6e\xdb\x30\x85\xd1\x74\x84\x3a\x6e\xb5\x98\x0b\xbc\x9c\xc9\xb4\xd4\x78\x2f\xf5\x1e\xdf\x2e\x9c\xaa\x2d\x99\x5c\xc5\x05\x97\xba\xb8\x27\xa5\x90\x70\x6a\x75\xc8\x6a\x45\x15\x83\x63\x81\xc1\x19\x56\x42\x62\x91\xe2\xda\x5d\x4d\xbe\xf9\x00\x52\xfb\x93\x10\x56\x00\x6c\x05\xf7\x9a\x21\xa3\xbd\x9b\xf9\xa2\x00\x1a\x10\x91\x65\xa2\x49\x0a\x24\x6b\xaa\xdd\xcf\xef\xdf\xe3\x84\x04\x19\xfb\x5e\xc7\xaf\x7b\x85\x79\x16\xcd\xfb\x77\x6e\xa4\x47\x92\xa7\x09\xcc\x57\x1b\xa5\xc1\xe1\x17\x7f\xd4\x5f\x88\x23\x55\xa0\x27\x46\x7c\xd1\x33\x15\x39\x20\x9a\x59\x12\x3a\x85\x71\xcf\x04\x37\x96\x09\x16\xcc\x17\x7c\x17\xfa\x59\x21\x47\x34\x16\x3a\xa2\x21\x7f\x34\x9b\x42\xa4\x67\xd5\x0e\xd0\xbf\xd7\xb2\x4d\xa6\x73\xf2\xe8\xb9\xf9\xf4\x55\x24\xfd\xd3\xf3\xe4\xc2\x1d\xb7\x17\xf6\x62\xa4\xb5\xf4\x86\xda\x76\x33\x2d\xf4\x80\x5e\x45\x17\x1b\x51\x62\xcd\x83\x0b\xa7\x5c\x62\x2d\xba\xb6\x86\x3e\x49\x4f\xef\x02\xb4\x11\xc0\x8e\xd0\x34\xa0\x7a\xf3\x82\xda\xd2\x34\xe0\x30\x65\x8e\x17\x88\xbd\x3b\xae\xb5\x07\x58\x29\x4d\x33\x05\x5a\x37\x56\xb0\xad\x8b\xf9\xf8\xc6\x6e\xdf\x60\x6b\x6c\x63\x87\x8a\xaf\xc6\x8d\xb0\x35\x51\xd7\x60\x94\x0c\x34\x61\x7b\x40\x4a\xa0\x2f\xfd\x8c\x76\x4b\xc3\x41\x97\xea\xa3\x6a\x22\xc6\x2a\x3d\x0d\x08\xe6\x0c\x58\x99\x2f\x93\x92\xd2\xff\xdf\x60\xcf\x6a\x65\xd1\xc3\x87\x65\x02\xb3\xa3\xa3\x89\xd4\xab\xe8\x4d\x89\xba\x09\x61\x88\xd0\x94\x3d\xcb\xa7\xce\xe3\xad\x50\xbe\x27\xc4\x32\x48\x8b\xb9\x15\xca\xa7\x85\x48\x06\x61\x9f\xca\xaa\x1c\x9f\x31\x21\x01\x72\xf1\x56\xc0\x26\xbe\xfc\x1b\x4f\x0b\x55\x0a\x7c\x50\xaf\xb8\x3f\x78\xc8\xcd\xbb\x2e\xaa\x17\x42\x27\xc4\x03\x74\x08\x08\x01\x5d\xc2\xce\x20\x38\x38\xff\xbf\x4b\x6a\x98\x3b\x21\x92\xff\xd0\x8e\x23\x2d\x14\x1d\xda\x76\x3e\x73\xc3\xf1\x09\xb1\xe4\x81\x15\xf8\xfc\xca\x86\xa3\x1d\x57\x83\xea\x71\x55\x63\x36\xb4\x4d\x27\x97\x45\x4b\x2b\x64\x9b\x5c\x1e\x95\x69\xf5\x28\x42\xc2\x1b\x4f\x51\xe0\x49\x84\x80\x26\xc4\x53\x08\xa2\x6a\x81\xb4\x92\xf4\x51\x5c\x84\xdb\xc2\x1b\x2e\x5d\x5f\xdb\xc8\x80\xdc\x93\x65\x22\x07\x07\x33\x8d\x7d\xe2\x0f\x92\x2a\x72\x79\xe5\xf3\x7a\xe9\x8e\xbe\x60\xb4\xf0\xe2\xb3\x60\x46\x33\x6d\x80\x5c\x1c\x20\x31\xd2\x91\x1c\x69\xe9\x2a\x3b\xac\xf8\xc9\x36\x32\xe0\x36\x60\xf0\x7c\x6d\x94\x70\x7d\x02\x0b\x02\x27\xe6\x56\xa4\x47\x43\xcc\xd4\xec\xa0\xc7\x6a\xae\x24\xc7\xf7\xdb\x94\x1d\x7a\x1d\xfd\xe2\xe0\x1e\x15\x12\xcc\x7b\xf2\x7a\xa2\x6e\x9f\x76\x2e\xff\x18\xd8\x8d\xb8\xc1\x62\xbb\x11\x34\xee\xf3\xeb\x94\xf7\x99\x33\x4f\x63\xcf\xab\x58\x22\x42\x4e\x41\xe3\x85\xfc\x12\x67\xe4\x1b\x25\xcd\x11\xe8\x07\xad\x60\x3f\x79\xed\xbc\x86\x31\x3a\x3a\x92\xc1\xd8\x34\xe5\x75\x8c\x23\xcd\x79\xe0\x80\x6d\x09\x4b\x77\x6a\x25\x3f\xe1\xae\xa9\x93\x79\xb7\xed\x99\xad\xfc\x2b\x69\xc7\xe6\xd3\x8e\xd5\x35\x83\xbd\x3a\x8b\x85\xbf\xe0\x52\xa6\x69\x84\x9e\x45\xd0\x1f\x48\xa8\x08\x23\x4a\x98\x60\xd1\x05\x73\x59\x92\x17\x65\xfb\xd0\xa4\x7e\x25\x94\xf7\xc8\xa3\x48\xac\xe4\xa4\x78\x2a\x92\x6a\x8a\xe4\x03\xa2\xa7\xd1\xfd\x92\xf2\xb8\x06\xe7\x38\x23\x6b\x39\xb8\x30\x31\x18\xb5\x5c\x7c\x56\xf3\x2e\x78\x00\xdb\x5f\x7c\xc1\x13\xf4\x7f\xb9\x7a\xfa\xb4\x6b\xb6\x70\x63\xc2\x81\x42\xed\x16\xd4\x76\x47\x5f\xce\xc9\x64\x89\x8b\xa2\xf8\xe0\x97\x31\x9c\xd2\xd8\x62\x9c\xf1\xc0\x76\x10\xca\x38\xe2\x89\xed\x02\x20\x7f\xaf\x0d\x87\x54\x0f\x11\x83\x1d\x34\x44\xb2\x21\x55\xb9\x7c\x1e\x52\x73\xce\x53\xd4\xe0\x64\xa8\x5f\xba\xe3\x59\x6e\x62\x6d\xcd\x77\xbc\x6d\xcc\xf9\x8d\x90\x9e\x5b\x20\xe9\x41\x9b\x67\xe8\x8e\x56\xb1\xb9\x11\xed\x5e\x4b\xa0\x23\x9b\x8b\x25\x2c\x87\xa5\x09\xd3\x0c\x4d\x66\x49\x67\xfb\x74\x0e\xfb\xdf\x9c\x43\x08\x46\xa2\xb3\x7b\x4a\xce\xf8\xe0\x73\x87\x9f\xdb\x8b\x35\xd9\x39\x51\xa9\xa4\x2f\xb8\x13\xa9\x0b\xb1\xf6\x29\x69\xa5\xc2\x3b\xb3\x20\x63\x7a\x7d\x34\xe6\x33\xde\xba\x34\x64\xcd\x4b\x93\x5d\xf3\xd6\x96\xbc\xe2\x8e\xe6\x17\x33\x6a\xc4\xcc\x64\x37\x17\xd7\xd4\x80\x6b\x93\xcd\x64\xe5\x10\x7b\x2d\x2b\xbe\xce\xab\x9d\xe5\x95\x5e\x8b\xc1\xbc\xe5\xeb\xf6\x9c\x5d\xf1\x5d\xfb\x66\x74\x7b\x71\x35\xde\xf1\x9b\xd6\xad\xbd\xe6\xf3\xd6\x15\xad\xb2\x97\x34\x3f\x38\xa2\x2f\xd1\x6a\x5a\x99\x0c\x19\x2f\x59\xc8\xa0\x71\xf0\x07\x1a\xcb\x5a\x68\xca\x06\x7e\xe5\xb4\xc0\x5a\x7d\xd9\xb9\xf1\x13\xbf\xbc\x33\x6e\xf1\x04\xf7\x52\xcb\xb4\x44\xba\x23\x7d\xfd\xc8\x3b\x1f\x00\xf7\x74\x33\x32\xa9\x02\xec\xf6\x02\xff\xac\xf0\x8f\x2a\x36\x6a\xb7\x97\x0a\xc1\x15\x33\x48\x2d\x2c\x3c\x37\xf1\x15\x0f\x79\x22\x16\xcc\xcb\x7b\xa1\x9f\xe8\x20\x13\xe1\x16\x97\x3b\xa8\x7a\x58\xdd\xa5\x51\x38\x70\x1d\x43\xae\x5d\xcc\xd0\x78\x5f\x44\xf6\x02\x91\xf7\xc0\x47\x43\xb2\x58\xe6\x93\x6d\x4d\xc3\x7f\x2c\x8f\x01\x27\x2d\xd8\x57\x50\x82\xd0\x7f\x2c\x8f\xe1\x8a\x22\x28\xc7\xbd\x27\x89\xf1\x50\x39\xc9\x4a\x8c\x53\xee\xf1\x98\x0b\x86\x02\x0f\x3e\x39\x23\xe1\x15\x8c\x44\x5c\x30\x12\x59\xce\x48\x98\x58\xad\x72\xbd\x44\xa5\x27\x13\xe8\x38\xf0\x0e\xb0\x0e\x51\xe6\xc0\x7f\x3c\xc7\x70\xb0\x35\xc2\x51\x60\x2b\xd4\xaa\xae\xa9\x37\x6e\xc3\xa6\xd5\xf6\xb0\x4e\x71\x0d\xa6\xbd\xa8\xfe\xba\x9c\xf1\x59\x5c\x89\xfc\x69\x86\x22\x95\xfc\xba\x1a\xff\x3a\x5b\xcf\xbc\x98\xdf\x56\xe3\xa5\x43\x83\xab\x58\xd8\x3c\x72\xf9\xf1\xa4\xdd\x9a\x8e\x8d\xb1\xfd\xef\x79\xeb\xdf\x9d\xf1\xbf\xe7\xcd\x3b\xfa\x69\x99\x10\x37\xf1\x5e\x4e\x29\x9d\xcc\x01\x1d\x2f\x2b\xbe\x8e\xf9\xcb\x0a\xf8\x28\x4e\xf8\xa4\x46\x54\x2d\x7f\x6c\x56\x48\x58\xb8\xf4\x87\xd3\xe3\xdc\xc9\xed\x15\x1e\xff\xc7\xf8\xaf\xbb\x78\x39\xfb\xb7\x71\xb7\x4a\x82\x7f\x1b\xa6\x7c\x76\x48\xcd\xf1\x2c\xb6\xaf\x62\x3b\xd5\x5d\x6f\xfc\x85\x91\x8d\x88\x86\x40\x80\xaa\x58\x58\x34\xc7\xef\x62\xfb\x3a\xb6\x6f\x63\x53\x08\xbb\x4f\x2b\xc3\x41\xf9\xf8\x3b\x31\x1a\xdb\xba\x07\xad\x39\x70\x8c\xb3\xbd\x67\x9f\xad\x78\x25\xb6\xbf\x8e\x19\x6e\xbe\x35\x06\x62\xde\x03\xaf\xec\x66\x33\xdf\xad\x49\xfb\x00\x69\x68\xcd\x7a\x3f\xe5\xef\x18\x75\x30\x37\x35\x29\x3f\x22\x3c\x92\xf9\xac\x49\xfc\x16\x8b\xa1\x71\x2c\xa8\xee\x9b\x98\x91\xe5\xc0\x9f\xe1\x37\x82\x9c\x75\xf9\x7f\x8a\xf1\xac\x72\x5d\x74\xab\xe1\x87\x0d\x14\x6e\x8e\xb2\xd4\x7e\x1d\x33\xf8\x6c\x43\xb0\x61\xbf\x81\x30\x04\xda\x98\x5c\x83\xfe\x6f\x62\xe3\x75\x4c\xce\xd9\xee\xc9\x7c\x9f\xe7\x54\x1c\xfd\xab\xab\x2e\x5f\x19\xed\x6a\x37\xc8\x42\x1d\xde\x57\x94\x6d\x76\xa1\x4c\x0e\x12\x9c\x6a\x4a\xda\xea\x9a\x36\x36\xaf\x50\x15\x9a\xb9\x64\xbf\xcc\x03\x7c\x81\x79\x88\xf9\xb5\xf8\x8e\xe1\x1b\xba\xf0\x2c\x36\x62\xc3\x93\xc2\x18\x44\x0a\x05\x52\x14\x3e\xb0\xe8\x62\x51\x30\x71\xf9\xfa\x65\x5d\x32\x99\x54\x41\x8f\x6f\xdd\x80\xff\x5a\x5d\x42\xdf\x26\x01\xff\xb3\x1a\xf9\xa3\x33\xe3\xdf\x55\x23\x7f\x25\x03\x80\xbf\x51\x74\xbd\x12\x88\x18\x9f\x2d\xb0\x94\x28\x20\xe3\xbd\x0c\x3c\x6c\xcd\xeb\x2b\x7c\xe4\x0c\x13\x94\xc5\x58\xf8\x5b\x7c\x9d\x64\x68\x1b\x4e\xad\x9e\x83\xe0\x72\x36\x20\x24\x85\x3e\x2f\x7d\x96\xc2\x28\xce\xb2\xd4\x33\x1a\x79\x89\x06\x0b\x95\x87\xcb\xb4\x80\xd3\x99\xc1\xdc\xbd\x75\x02\x7c\x99\x4f\xa2\xc0\x9f\x93\xfe\x56\x7e\xa5\x89\xee\x69\x60\x58\xc7\x1e\xe0\x0b\x80\xdc\xda\xb7\xf8\xca\x4b\x1a\x8d\x7f\xc5\x8f\xf2\x2f\xd6\x28\x94\xa2\x1a\x2d\x61\x62\x49\x45\xb4\x1a\xa6\xd4\x12\x95\x29\xe2\x0b\xa2\x93\x77\xde\xed\x1f\x2a\x16\x3f\x30\x8e\xd4\x9c\x54\x1c\x7e\x40\x64\x43\xb0\xc8\xb7\xc0\x22\x3b\x76\x97\xcd\x6c\x8b\xb9\xf0\x6f\x0e\x61\x0f\x7e\x17\xb6\x75\x5f\x21\x5e\x6f\xf2\x11\x7c\x1e\x0b\x1f\x4e\x3b\xc0\x74\xf9\x1e\x2c\x3e\x3a\xe2\xcd\xb5\x86\x2a\xd4\xde\x7d\x23\x33\x85\x37\xd0\x2c\xd6\x8f\x14\x74\x19\x2d\xdf\x0f\x5f\xc5\x78\x49\x3b\x35\x0b\xe1\x8c\x7b\xbd\x3a\x77\x15\xc5\xf3\x87\x45\xba\x59\x90\x4b\x6b\x42\x4b\xe7\x58\xe5\x4d\x71\x65\xe5\xe3\xc3\xa7\x7c\x01\x92\xa6\xbb\xe0\x4f\xc8\xd1\x14\x22\xdd\x8c\xaf\x9e\xfa\xf2\x86\x3d\x80\xc8\xa5\x88\x5c\x62\x64\xd0\xe2\x19\xbe\xb6\x2d\xa7\xa3\xb9\x68\x6c\x00\xc0\x44\x48\x83\x6f\xb2\xb0\xc5\x03\x7a\x18\x03\x2e\xe1\xe6\x81\xab\xb1\xc8\x98\x4f\x42\x60\x5f\x26\x29\xdd\xd8\x3a\x47\x47\xeb\x03\x8f\xce\xe1\x1e\x14\x4d\x3e\x0a\x0e\x63\xe9\x14\x01\xd1\xaf\x87\xb0\xd0\xdb\x33\x37\x7e\x8f\xda\x49\xd3\x37\x8f\x43\x34\xbf\xb8\xdf\xbf\x05\x30\xd6\x7a\xff\xa4\xad\x98\x1b\xe8\x23\x70\xcf\xeb\xc9\x0e\xbb\x0a\xfc\x73\x86\xa1\x4b\x7c\x15\x0e\x80\xd1\x84\x51\xd8\x36\xc3\xd1\x66\xb2\x6b\x01\xa9\x6a\x5d\x4e\xf9\x47\xf1\x42\xba\x63\x40\x92\x44\xf0\x92\x91\xe3\xcf\x67\xf4\x9e\x3a\x63\x5e\x38\x17\xc1\x6b\x61\x2e\xcc\xde\xde\xdf\xc7\x00\x54\x2b\x59\x64\x5f\x14\xd9\x03\x99\xdd\x08\xda\x0b\x13\xa5\x57\xa0\xee\x84\x06\x56\xef\x8b\xe0\x8f\x57\x95\x7e\xdc\xf2\xcd\x64\x45\x2d\x84\x3e\x5c\xc1\xc7\x92\x3e\x56\xd3\x91\x71\xdb\x21\xb0\x77\x77\x57\x22\x00\x27\x39\x79\x8d\x2e\x53\x9e\xca\x84\xb1\x3a\x8c\x5f\xa9\x93\xf8\xed\xbd\xad\xe2\x6e\x55\xdc\x15\x0c\xb7\x7b\x74\xb4\xa7\xa0\xe4\x3d\x30\xf3\xae\x61\x28\x91\x37\x51\x55\x4b\xc9\xaa\xc9\x26\x91\xaf\xe6\x72\x8e\xb4\x9a\x03\xe7\xb9\x46\x5a\x19\xb1\x3e\x29\xac\xc0\x06\x92\x1c\x3d\x56\x07\x07\xd8\xda\x10\x46\x24\x2b\xec\xdb\xc5\xf2\x7c\x49\xd2\x6f\x41\x67\x03\x0c\x75\x89\x7c\x3d\x04\x0f\xcd\x31\xe9\x10\x12\x84\x80\xe3\xf2\x2a\x8e\xb2\x4d\xad\x1e\xd3\x3e\x90\xa8\x02\x24\x52\x40\xae\xb2\xd9\xf2\x33\xe0\x38\x04\x47\x41\x71\x14\x94\x17\x48\x53\x1e\x09\x02\x39\x70\x8f\x26\x1b\x41\xb8\x08\xc2\xad\x14\x2f\xac\xe0\xdf\xdd\xa1\x33\x74\x0f\x33\x55\x9b\x99\x67\x8a\x45\x26\xe0\x4e\x02\x9d\xce\x01\x52\xbb\x87\x24\xfe\xeb\x4c\xef\xab\xab\x0c\x34\x10\x23\x0e\xf4\x68\x44\x5d\x19\x48\x00\xba\xb9\x6d\xe3\x95\x44\x84\xc1\x1d\x04\x77\x68\x9e\x5c\x33\x0a\xe2\x37\xfd\x56\xd4\x8c\xe8\x50\x37\xbf\x30\x80\xc1\x36\x9b\x8e\xba\xcc\x20\x5f\xd8\x80\x7a\x4d\xa7\xe9\x14\x62\xa1\x9b\x6d\x9b\xfb\x4d\x74\xb9\xb7\xd9\xb5\x79\x04\xa1\x27\xd6\x7d\x51\xff\xd1\x91\x9f\x7c\xe3\x87\x3e\x6c\x59\x8e\x59\x40\xa2\xb4\x17\x05\xb8\x1a\x38\xf7\xf7\xea\x25\x40\xd6\x5b\xd2\x59\xa0\x77\xb6\xcd\xb6\xf0\xd3\xbd\xa5\x92\xc5\x37\x74\x8d\x54\x06\xd7\xb8\x39\x57\xb5\x02\x61\x6d\x10\x4b\x37\xf7\x93\x8d\x93\xe6\x2e\x8a\xd1\x3c\xb6\xef\xa2\x15\x66\xf2\x94\x8c\xcf\x31\x5d\xd6\xc5\x3b\xfc\xce\x39\x5b\xf0\x2b\x17\xa8\xe7\x4b\x17\xa9\x25\xfa\x2f\xe1\x1d\xb4\xe7\xd5\x39\x83\x7d\x05\xad\xf6\x68\x2f\x91\x4e\x07\xc1\xe8\xf3\x06\x03\x62\xc4\x4d\x00\x73\x8e\x17\x3c\xd6\x40\xdd\xca\xb9\x1d\xa8\xc9\x90\xd2\xbc\x58\x29\x73\x82\xcd\xca\xb1\x63\x6e\x01\xf1\x7e\x62\x8d\xd4\x5b\x96\x43\xbb\xd9\x3c\x37\xa6\x74\xa3\x16\xe6\x35\x57\x46\x58\xe5\x66\x66\x8d\xae\xa5\x6f\x75\x38\xab\xe2\xf5\xe1\x02\x6d\x22\x10\x09\x81\xe6\x3b\x92\x7c\x00\x69\x5f\x75\xb6\xed\x05\x8c\xdb\x16\x42\x3b\x08\xed\x98\x31\xe7\x97\xcd\xcb\xd6\xb6\xb9\x35\xe9\xf6\x20\x6e\xfa\x00\xa0\x69\x60\x7c\x8e\x23\x73\xd3\x6c\x67\xb8\xbf\x1c\xcf\xd9\x65\x93\xcf\xd9\x16\xff\x20\x30\x28\x6c\xc0\x11\xb6\x73\xeb\xa1\xf7\x9a\x63\x63\x25\x43\x2d\x15\x65\xe2\x15\x03\xcc\xee\xb6\xb9\x63\x50\x73\x4b\x14\xe8\xb6\xe9\xee\x63\x87\x3b\xca\x8e\x50\x0f\x22\xe3\xe6\x06\xdb\x70\x49\x8e\xfb\x81\x0c\x6e\xc9\x6b\x3f\x04\x88\x6f\xd8\x99\xa6\xbc\x0c\xf0\x9e\xce\x46\xd0\xd1\x1b\xec\xa8\x83\x20\x8d\xcb\x36\xfc\x9a\x4d\x9c\x7f\x00\x69\x6c\xe1\x73\x07\x9f\x08\x77\x49\xa5\xb2\xcc\x48\x79\xf5\x46\xd0\xb8\x81\xd5\x87\x6f\x8c\xf9\xcb\x38\xc0\x35\x04\x60\x54\x21\xd9\x7a\xf3\xbb\xbb\x54\xdc\x59\x18\x68\xee\xc5\x94\xc3\x5d\xe4\xce\x5b\x41\xb9\x81\xce\x74\xb6\x30\xdc\x9b\x2d\x36\x04\x03\xe8\x6f\xdd\xc1\x61\x32\x30\xb6\x4d\x7f\x39\xb6\x15\xfd\xfa\x3b\x38\x2e\x18\xb5\xa3\x04\x2c\xb0\xc3\x04\x73\xe4\x12\x32\x29\x1c\x11\xf8\x29\x91\x04\xef\x3c\x1d\x71\x5d\xf6\x38\xba\x75\x03\x74\xcb\x31\xed\x1b\x2c\xb6\x7f\x19\x7f\xb0\xd8\x5a\x14\x5b\x63\xb1\xc7\x1f\xf0\x03\x51\x2a\x50\x95\x7d\xbd\xaf\xa2\xf5\x40\xe9\x45\x9d\x0c\x76\x38\x0e\xed\x16\x41\x5d\x20\xd4\x5c\x24\xbd\x5c\x81\xac\x0f\xf8\xeb\x83\x82\xd1\xfb\xf5\xad\x1e\xae\x6f\x85\xf5\x2d\x62\x9f\x32\x3c\x76\xd3\x13\x45\x13\x2c\x2a\x48\xd8\xe3\x0a\x2e\x1f\x6e\xca\x12\xe1\x2d\x63\xe7\xc6\x4f\x1f\x79\x61\xb4\x91\x2d\xd9\x60\xc9\x74\xe5\xa5\xb5\x5a\xd0\xfb\xe5\xe6\xb2\xdc\x1c\xcb\x11\xce\x3d\xf2\x6a\x07\xcb\xc5\x63\xd8\xaa\x2f\x2c\x94\x7c\xb7\x43\x7a\x13\x74\x3b\x44\x65\x15\x2a\x4b\x92\xab\x08\x5e\x28\x5c\xeb\x90\xc9\x7d\x43\x50\x50\xa0\x17\x0e\xbd\xa5\x39\xa2\xe4\x41\xdb\x8f\x71\x71\xb8\xc8\x94\xe7\xff\x08\x09\x85\x93\xdb\x1a\xc3\x57\xc4\xa7\x0e\xf9\x1c\x91\x17\xf6\x68\x76\x2c\x42\x8e\x39\xf7\x2d\x91\x95\x14\xf6\x80\x93\x9f\x47\x6b\xc3\x6c\xc6\x65\x8e\x0e\x21\xb8\xa2\x42\x57\x5a\xfd\x1d\x6d\xa4\x99\x35\x17\x9f\x73\xe4\xb9\x02\xe3\xe7\x32\x5e\xaa\x99\xae\xd1\x18\x81\x3b\xc9\x99\xbe\x92\x50\x8a\xa4\xcc\x26\xc3\x0c\x92\xc9\x2b\x67\x10\xa5\x4c\xb5\x33\x7e\xe1\x02\xbd\xc9\xf7\x36\xbc\xf2\xdf\x14\xfb\xc2\x3c\xdf\x17\xd8\x8e\x88\x28\xbb\x24\x12\x9a\xef\x12\x1b\xb9\x4b\x00\x9e\x0a\x22\x27\x24\xfc\x3c\x96\x48\x6a\x0d\x79\x54\xde\xb9\xcc\x9b\x88\x1d\xa5\x11\xd2\xa5\x59\x81\x9c\x89\x6c\x1a\x1a\x2b\x54\x3a\x1c\x37\x13\x15\x9c\x9a\x75\x25\x44\x0f\xa9\x84\xd4\xcf\xc0\x12\x22\x08\x25\x5a\x2d\x55\x5c\x36\x87\x62\xe4\xb0\x88\x98\xbd\xae\x88\x9e\x30\x31\xbd\x78\x8d\x4e\xd0\xb7\x3c\x34\x1a\xdb\x06\x6e\x1a\x79\xd2\x4e\x24\xed\x30\x69\xd7\x60\x97\x5a\xd2\x46\x16\x03\xe2\x4c\x37\xf1\x79\xbc\x2c\xb3\x11\xb7\xf5\xe4\x03\x07\xa7\xbf\x66\xad\x2e\xcc\xea\xc0\xe1\x86\xc9\x61\x1f\x2c\x1e\xc4\x68\x20\x3d\xed\x72\x7f\x2f\xfb\x02\xab\xf0\x0f\x54\xb1\xda\xab\xc2\xa7\x2a\x56\x8f\xad\x82\xb2\xd3\xc3\x69\x74\xa0\x8a\xa5\x59\x1d\xdf\x88\xaa\x58\x6a\x55\xdc\xd4\x55\x51\xca\xbe\x2c\x98\xa2\x9c\x1d\xcb\x59\xb3\x3a\xcd\x19\x41\x68\x8c\x4e\xd7\x14\xeb\x3e\xda\x3c\x90\xcb\xa2\x4c\xf3\xd8\xa9\xf3\xd3\x0e\x9c\x37\xb4\x07\x68\xca\xcc\x5b\x01\xb5\x8c\x62\xca\x68\x98\x52\x15\x1a\xa5\xd5\x3b\x11\xfa\x61\x82\x58\xa2\x2f\x82\xdf\x6e\xb0\x30\x2b\x12\x54\x9c\x96\x17\xf8\xb4\x3c\x16\xa5\xdc\xf6\x09\x20\xdd\xb8\x60\x76\x72\x4e\x1f\xdd\xa0\x13\x11\x51\xc0\x93\xa0\x45\x42\x96\x57\x19\x43\x3c\x0d\x2b\x8a\x66\x47\xfe\xfc\x0b\x8b\xe4\x0e\x0a\x07\xfd\x78\xa8\xd3\x1c\xf4\x5f\xb9\xbc\x67\xb1\x97\x2e\xca\x4d\xe7\xc7\x85\x95\xef\xc5\x4e\xec\xae\x76\x07\x08\x65\x2a\x9e\x2f\x05\x13\x9e\xc9\xfa\x18\xc4\x12\x36\xa3\x7b\xfc\x0d\x6c\x97\x91\x7a\x84\x46\x52\x44\x6e\x12\x5c\xf5\xfe\x51\x90\x59\x12\x29\x47\x0a\xbb\xa2\x73\x81\x1f\xcc\x61\xb3\x45\x44\x5a\x72\x64\x8d\xa3\x16\xb2\x45\x0b\x14\x53\x84\xb3\x9f\xe1\x4e\x16\x53\xb6\xc1\xb7\xc8\x04\x8d\x98\xe1\x8b\x45\x9a\x3f\x71\x99\x6c\x09\x07\x7a\x71\x9e\x1d\xc5\x47\x47\x2b\x71\x62\x46\x5b\xbb\xa8\xf2\x28\x12\xf8\x52\x09\xba\x68\x71\xea\xe1\x59\xf4\xe1\xee\xce\xd2\xae\x8b\xf4\xb3\x82\x26\xc4\x97\xb7\x95\xa4\xce\x70\x0d\xa3\x87\x0d\x9e\xe5\x3d\xcc\x65\xed\x94\x38\x66\x4c\x5d\x71\x71\xef\x88\x5a\xb0\xb5\x64\x28\x55\x19\x28\x8f\x4c\xe4\xb1\xa3\x68\x07\x56\xa5\xb7\x03\xd3\x43\xd9\x5a\xb4\x0d\xac\x1b\xb1\xcd\xef\xfc\x8b\x83\x03\x4e\x91\x85\x76\x64\xbd\x7b\x21\xb0\xe4\xa2\x8a\x6a\x84\x7b\x9a\x93\x6f\x4e\xe2\x46\xe1\xf1\xe2\x28\x1e\x6d\xa1\x5e\x31\x4b\x8f\x2a\x99\x89\x92\x68\xea\x50\xb6\xff\x91\x37\x07\x54\xcc\xc7\x62\xb1\x77\xb0\x20\x4e\x0a\x7a\xd9\x52\x3e\x8c\x24\x02\x03\x6e\xa4\x7e\x99\xc3\xaa\x20\xb0\x3c\xe0\xe6\x07\x5a\xd9\x27\x81\xbf\xb8\x7b\xa1\xa4\x8e\xc4\xe4\x66\x06\x5f\xf3\x2d\x8f\xf1\x67\xc7\x33\x26\x66\xcb\x2f\xb0\x59\xbe\xfc\xd1\x7d\x09\x30\xf2\x62\xd7\x96\xd8\x35\x8e\x8f\x65\xc8\x46\xa1\xe6\xe0\x69\x34\x32\x81\xf1\x07\xa6\x21\x00\x92\x07\xd8\xe1\x88\x54\x94\xec\x83\x09\x6b\xa1\xa9\xea\x7d\x71\x4a\x4f\x47\xb9\x58\xa0\x9c\x27\x5e\x0d\xf7\x50\x0e\xa7\x99\x8e\x13\x3e\x0a\x25\xc7\x85\x77\x12\xe8\x80\xe1\x4d\x7c\xed\x3a\xb4\xdb\x8a\x75\x54\x22\xa7\x82\xd4\x19\x1e\x6b\xd4\xd9\xd3\xdc\x06\x86\x06\x09\xa0\x59\x2c\x37\xdb\x7a\x9c\x52\x14\x5a\xe1\x91\xd8\x56\x43\x49\x0c\xb4\x7f\x49\xa7\x60\x0d\xfd\x1e\x7d\x04\x28\x90\xc8\xcf\xa0\x91\xb1\x59\x9a\x6c\xff\xd0\xd5\x46\xde\x19\xbf\x2c\xf5\x81\x10\x64\x65\xad\x54\xf4\x13\x1d\x2a\xc6\x42\xe8\xb1\x55\x67\x8b\xe8\x01\x2b\x1e\x28\xc7\x6a\xd4\x95\xc9\xc6\x07\x54\x54\xed\xcc\x6c\x3b\xe6\x31\xaa\x41\x65\x6b\xb4\xf5\x1d\x68\x37\xca\x6a\x3a\x47\xe2\x61\x01\x25\x91\x04\x21\x43\x79\x9c\x77\xee\xb8\xfe\xee\x77\x92\x4e\xdb\x11\xf0\xa0\xf7\xf5\x9e\x30\x00\x2e\x5e\xe9\xfa\xe2\x6e\x58\x68\xf6\x69\xf4\x22\xa8\x15\x40\xa6\x3b\x83\x51\x02\x05\xf9\x47\x14\x8e\xb1\x09\x86\x40\xe5\x94\x63\x6d\xfa\x4d\xab\x53\xdc\xb4\x3a\x40\xdf\xf0\xe2\x05\xc8\xb4\xd0\x04\xe6\xe2\x75\x14\x0e\xc5\xef\x5c\x69\xaa\xf7\xf7\xa8\xb8\xfb\xa9\x2c\xef\x87\x94\x75\xd1\xa0\xb2\xb2\x04\x52\x26\x5f\x0f\x29\xe3\x7a\xc2\x0e\x89\x27\xb4\xd9\x55\x93\x3f\xdf\x86\x89\xea\xe1\xe3\x55\x80\xa5\x92\xaf\xd8\x6c\xdf\xb9\xfc\xe3\xbd\xb6\xcf\x42\x53\xca\xd7\x3b\x1a\xee\x6a\xf2\x30\xce\x41\xec\xfd\xa2\x8a\xbd\x09\x0f\x0e\x89\xb6\x56\x9d\xcd\x15\x77\xfe\x13\x5f\x41\xc1\x48\x16\xe9\x5f\x42\x1a\x76\xc1\x3d\x15\x99\x40\xbb\x46\x84\xaf\x1b\x2f\x5e\xe3\x43\x57\xc0\x16\x58\xb1\x16\x03\x5b\xba\xc0\x31\xa5\x2a\x16\xeb\xa5\xd9\x0d\x34\x52\x1e\x29\xd6\x74\xa4\xd0\x2f\x9e\x96\xa4\x75\x25\x64\x53\xe8\x96\x45\x15\xc5\x8c\xf8\x82\xb0\xe1\x73\x12\x90\x11\x9f\xf4\xaa\xbf\x02\xee\xe5\xe6\x02\x8f\x66\x2b\x53\xcb\xbf\x12\xf9\x81\x29\x98\xac\xda\x5d\x99\x1b\x0a\xae\x54\xc1\xb2\xf4\x67\xca\xe7\x28\x7d\xb1\xcc\x00\x43\x37\xb8\x5f\xae\x90\x90\x26\x19\xec\xf0\x8b\xac\x82\xac\xc9\xe7\x63\x6b\x14\xcf\x75\xd7\x75\x0f\xa3\xeb\x01\xcb\x51\xcf\xc4\xc3\x2b\x3e\xdc\x43\x33\x15\x46\x47\x8b\x45\xf2\x58\xb5\xf4\xf8\x10\xe8\xd7\x05\xe8\x4d\x96\x23\xfc\xf6\xb1\x86\x33\x08\xd3\xfd\x7b\x92\x02\x7b\x54\x91\x48\x14\x89\xa4\x31\x92\x7f\xb8\xa2\x9e\x95\x5e\xd4\x13\x7f\xee\x89\x67\xf4\x5a\x31\xfe\x42\xec\x2a\x93\x42\xa2\xf3\xcc\xcc\xe5\xd6\x6f\xb2\x92\x30\x7a\xfc\x90\x14\x7a\x86\x12\xe5\x19\xc9\x8a\x33\xa1\x4c\x81\x3e\xc9\x26\x78\xc3\x2b\x0f\xed\x78\xea\x8d\x2f\x52\xd4\x62\x32\x81\x65\x43\xdd\x25\xf7\xc2\x19\x1b\x40\x1a\xf1\xc4\x84\x0f\x1f\xc8\xb4\x7a\x28\xe3\xe3\xca\xb8\x24\x8f\x53\xd8\x96\x68\xa6\x53\xa4\xd9\x15\xb4\xf9\x25\x23\xeb\x04\x04\x6a\x84\xe9\x73\x10\xf7\xac\x31\xf7\x16\x4e\x16\xc0\x00\x2d\x33\x68\xfa\xeb\x62\xf4\x12\x3f\x58\x45\x99\x97\xa6\x5e\xfd\xd8\xd1\x90\xe5\xea\x52\x61\xb1\x68\x19\x1d\xfb\xc4\x20\x4c\x8a\x5b\x01\x5f\x9e\xdd\xa4\x72\x91\x45\x3c\x4b\x06\x03\x92\xb6\x5a\x66\x8c\x5a\x5c\xf4\xb8\x48\xca\x5b\x17\x0e\xf1\xce\x31\xd9\x69\x15\xfe\x3f\xef\xab\x70\xf0\x8a\x82\x1b\x4e\x3b\xa2\x1b\xe3\x9e\x1a\x20\xf7\x9e\xdd\xfa\xcb\x65\x70\xb0\xd5\xba\xee\xaa\xae\x5d\x12\x0a\xab\xef\x0b\x15\xb3\x54\x8d\x5f\xa2\x01\x7a\x97\xe3\x13\xa7\x07\x64\x65\x55\xed\x47\x46\x32\xbf\x62\x62\xb3\x52\x3f\x54\x0e\x9f\x34\xc9\x16\x42\x41\xa2\xbd\x20\x8d\x36\xf4\xe4\xa4\x4a\x7d\x94\x97\x3a\x30\x72\x46\x51\xbc\x2d\x82\x6d\x21\x20\x75\x6c\xf4\x9a\x8e\x99\x5b\xdd\x47\x1d\xb1\x50\x08\xf7\x8a\xac\xb1\x96\xd5\x19\xf9\x2d\x1e\x35\x0b\x50\xf7\x4b\x1c\x2c\xb7\xcd\xb3\xb1\x7f\x9c\x35\x1d\xdb\x92\xa6\x69\xe0\x04\x56\x8c\xac\xea\x19\x66\x6e\xf3\x5c\xd6\x7d\x49\xf2\x30\x4e\x38\xff\x7c\x3c\xe8\x1e\x67\x24\x60\xfd\x4f\x90\x80\x9c\x1d\xab\x85\xa3\xb2\x14\xe9\xc7\x3c\xd6\xa5\xb0\xeb\xb2\x48\xed\x51\xbd\x5e\x07\xc7\xc1\x2a\xa8\x3c\xfb\xe0\xc5\x91\xbd\xc9\x84\xec\x4c\xce\xa2\x26\x29\xea\xd7\xaf\x0f\xde\x0a\xfa\xc5\x71\x95\x70\x09\x11\x3e\x90\x54\xc3\x63\x4a\xaf\x4e\x67\x98\x03\x46\x26\xbc\x32\x2d\x4a\x46\xfa\xe2\xac\x1b\x14\x78\xb7\x28\x9c\x18\x6c\x78\x3a\xee\xda\xdd\xe3\x15\xf1\xee\x4b\x54\xa9\x73\x49\xac\x7c\x0a\x2b\x03\x0e\x20\x8b\x89\xdf\x82\xe9\x37\xa2\x0e\x85\xa7\xb8\x60\x76\xe2\x2c\xb0\xbc\xb0\x4c\xa1\x86\x2a\x39\xff\x15\x3e\x24\x04\x28\x7f\xee\x5c\x70\xdc\x2c\x8f\x8e\x9c\xa7\x10\x40\xad\x67\x03\xe1\xe2\x7d\x86\x9f\x78\x2e\x90\x38\xe8\x54\x97\x2d\x49\xa1\x2f\xc2\xc7\x8e\x8d\x5a\x88\x61\xe9\xb0\xe0\xca\x6d\xf2\x09\x2e\x0d\xc9\xd1\xc5\x7c\x8b\x5b\xe5\xae\xba\x41\x7e\x3e\x5f\x46\x64\xeb\xb1\x9b\xd8\x26\x95\x86\x9b\x69\x97\x9a\x01\xe9\x7f\xec\x06\xb2\x77\x83\xa8\xbb\xb8\x2e\x34\x96\x32\x21\xbe\x66\xe7\x15\x91\xa9\x96\x05\xb9\xae\x0d\xdd\xdd\x63\xb7\xff\x27\x4f\x72\x06\x40\x3f\xb2\x94\x65\xc7\x6b\xd0\x4d\x7d\x47\x9a\xcf\x70\xfd\x04\x88\xab\xf0\x1a\xa1\xd0\xc2\x21\xef\x96\xf1\xfe\xe5\x8a\x0f\x13\x8b\x74\x2f\x16\x06\xa0\x93\x92\xd0\x46\x00\xd1\x2b\x98\x70\xe0\xdf\x1c\x44\x56\x17\x03\xc8\xca\x01\xda\x8c\xde\xa0\x7f\x6f\x61\x81\x81\x64\xb0\x13\x51\x1b\xca\x47\x05\xfe\xba\x15\x94\x3e\x81\x4e\xc1\xc8\xca\x0f\x38\xf6\x96\xb2\x7a\xd4\x03\x96\x75\xd6\xd1\x9c\xab\x4c\xed\x25\x0c\xa8\x2a\x20\x85\x6c\x53\xf2\x55\xf0\x10\x90\xb2\x23\x77\x21\xc8\xb2\x55\x03\xa1\xb2\xa6\xa3\xea\x71\x59\x1d\x95\x63\xed\xa8\x2c\x46\x14\x86\x51\x9e\xd6\xd3\x56\x0e\x07\xda\x09\x43\x94\xa1\x10\x11\x3a\x2a\xc9\x84\x4b\xad\xbc\x66\xf2\x79\x83\x1c\xb8\x70\x9e\xa2\x9f\xb9\xf1\x2e\x28\x44\x05\x60\x52\x71\x10\xf7\x53\x79\x2b\x84\x25\x31\xbf\xa8\x04\xe6\x25\xd2\xbe\xf0\x75\xb5\xf8\x5a\x71\x57\x6b\x8e\xc3\x6f\x33\x14\x3e\xf7\xf9\x35\x5a\xb6\x45\xd1\x1e\x98\x40\x17\xbf\xd0\x06\x0f\xa6\xe2\xa5\x90\x2c\x81\x4f\x57\x09\x5a\xe7\x08\xc9\x34\x76\x69\x74\x16\x6d\xbf\x14\xd1\x0e\x5a\x68\xba\x0a\x60\x66\xf4\xb4\xf2\x3e\x33\x3e\x40\x55\x74\xff\xc4\xc8\x8c\x3d\x8a\x29\xb1\x04\xfe\x00\x8e\xb4\x4a\x6d\x84\x14\xbd\x3b\xab\x96\xde\x66\x2c\x12\xe9\x5d\x38\x3a\x7a\x42\xcd\x44\xea\x23\xe3\xd3\x55\xec\x39\x73\xee\x30\x2d\x63\x8b\x2f\xda\x09\xdd\xd8\x3d\xa1\xde\xd1\x73\x4f\x29\xbb\xcf\x5c\x3d\x7b\xd0\x46\xd5\xf1\x30\x17\x9c\x8b\xef\xc5\xa1\x29\xd5\x68\x2f\xae\x29\x3c\x1a\xe1\x2e\xfc\x3a\xc3\xe3\x49\x45\x1c\x8a\xe0\xf1\x8f\x6a\xe4\xec\x90\x89\xe1\xb1\xd1\xea\xd1\x1c\x45\xdb\x56\x48\x9d\x20\x90\xac\xfc\x05\x3a\x48\x14\x54\xc4\x46\x05\x4d\xd1\x18\x11\xd1\xea\xda\x16\x9e\x7b\x23\xbc\x8e\x44\x57\x54\xed\xa4\xb2\x54\x84\xea\xc5\x15\xb6\xe2\x5d\x86\x47\x17\x0a\xbe\xcc\xd0\xb8\x03\x05\x9f\x41\x70\x03\xbb\xc2\xb6\xed\x01\x65\x5e\xa1\xec\xce\x1c\xdf\xd8\x61\xa2\x80\x71\xc1\xcf\x1b\xbe\x14\x17\x53\x77\x77\x5d\x45\x76\xa9\x5b\x59\x89\x94\xc1\xe2\x68\x8a\xa5\x2f\x94\x3b\xc4\x5d\x16\xea\xcb\xb3\xb9\x17\x78\x29\xca\xb5\x53\xdb\xee\xed\x4a\x31\x60\x36\xa0\xfa\x0d\x70\x21\x73\xf8\xdb\xac\xc2\x38\xbe\xa9\x85\x02\xb8\x22\x37\x88\xda\xfb\x1f\xc1\x4e\x93\xd5\x5a\xb1\x45\x88\x30\x6c\x25\x33\x3c\x71\x09\x09\x89\x0c\x1d\x1e\xe7\x3b\x89\x74\x2d\xee\x3f\xd6\x1a\x5b\xe9\x98\x5f\xba\x5c\x7a\x78\x4f\xc8\x0d\x05\x4b\x52\x2f\x64\xc3\x69\x6b\xc1\x47\xf1\xab\xcf\x04\xf5\x44\x07\x15\x0b\x1f\xe2\x78\x71\x15\x2a\x53\x0b\xf9\x2d\xe5\xc1\xd3\x7f\x58\x5c\xc4\x79\x55\x44\x76\x84\x0a\xa8\x2b\xb4\x44\x03\xa1\x25\x9a\x70\x25\xd7\x9e\x4b\x58\xd8\x07\x4e\x7a\xfb\x0f\x1c\xe9\x3d\xd2\x48\x21\x67\x80\x2e\xb0\x5e\x23\x09\x28\xe3\x44\xcc\x5b\x89\xba\x81\xc6\x1b\x01\xca\xf2\x2d\xba\xb9\x30\xa5\x36\x51\xdc\x34\x90\x7b\xc9\x2f\x1b\x81\x81\xed\xc4\xc7\x2e\x13\xbf\x81\x89\x5c\x7b\x1d\x60\x58\xf1\x3a\xbc\xba\x2c\x6d\xcc\xa2\x16\xf8\x4f\x98\xc1\x85\x65\x10\xc0\x3f\xc1\x2f\x1d\xae\x53\x5e\x49\xe2\xb9\xfe\x01\xa4\x7c\x81\xfd\x20\xde\xbe\x74\x43\xf9\x79\x48\x54\x18\x74\x8b\x2b\x46\xa2\x1f\x66\x11\xc4\xbc\x79\xe8\x50\x7a\x6f\xba\xbc\xb1\x67\xb7\x8a\x2b\x84\x3d\x59\xb9\x4f\x19\x8a\x94\x1c\x92\x2f\xdc\xd4\x95\x24\x5f\x83\x0c\x2d\x4b\x7d\x12\xfd\x70\x3b\xab\x22\xa0\xcb\x1d\x81\x79\x16\x4e\xa8\xbb\xaf\x33\xaf\x6f\xbe\x68\x0d\xad\x78\xd0\x07\x14\xfb\x2e\x13\xfe\x30\x76\xfc\x4f\x0c\xc1\xf9\x17\x63\xa3\x31\x6c\x27\x1e\x19\x69\x47\xea\x4a\x68\x18\xf1\xb0\xb8\xac\xfc\x8d\xf6\xba\x05\xff\x8b\x7e\x57\xf8\xa6\xda\x16\x37\x4d\x80\x06\xc8\x45\x23\x81\x5c\xb0\x44\x3b\x1c\x52\xe3\xf6\x68\xa2\x20\x6e\x2e\xca\xf6\xe4\x84\x0d\xf6\x18\x12\x63\x33\x89\xb0\x1d\xa0\x87\x40\x8a\x8d\x25\xfc\xd5\x8a\x75\xdb\x58\x72\x0c\xe1\x63\xf8\xb5\xbb\xa6\x04\x80\xaa\x95\xff\x3f\x29\xfc\x0c\x52\x88\x1b\x08\x1c\xa7\x0e\xa2\xa3\xee\x0e\x95\x09\xbe\x8d\x2e\x6e\x72\x99\x8c\x0c\x59\xda\x98\x8c\xc8\x03\xcb\x26\x87\xb5\x69\x58\x17\x29\xfa\x11\x47\x17\x33\x64\x8c\x46\xa9\x58\xde\xdd\x59\x17\x3c\x86\xa4\x92\x4c\x86\xa7\x1e\x84\xbc\x12\xf3\xe8\xa3\x5d\x78\xc9\x39\x96\x9e\x7a\x16\xf8\xca\x9a\x08\xbd\x3e\x3f\x37\x9f\xb2\x41\x7d\x3f\xd8\xb3\x1b\x14\x81\x6a\x32\xcb\x71\x00\xc7\x37\xbb\x31\xd7\xbf\x77\xb6\xc8\xd0\x2e\x62\xbb\x47\x9e\xd8\x61\x45\x3a\x15\xca\x9d\x4e\xe3\x17\xc3\x78\x21\x31\x16\x02\x37\x80\x51\x4d\x8c\x3a\x96\x6f\x6b\xf8\x2e\x4a\xfd\xb4\x46\x86\x0b\x4c\x83\x6c\x34\x7a\x8f\x96\x97\x4b\x11\x5f\x4d\xdc\x36\x5e\x9a\x8a\x9c\xc8\xa5\xe1\x2f\x6b\x24\xef\x33\x27\xf6\x17\xbb\xc6\x13\x68\xca\xdd\x1d\x5e\xc8\xc0\xf2\x9a\x9b\xe6\x53\xbe\x19\x1b\xab\xce\x26\xda\x50\xe7\x1c\x58\xb1\xa2\x6c\x1b\x16\x21\xc5\x0a\x08\xc8\x81\x00\x57\xc8\xd0\xd7\x99\x14\xf4\x2b\xb7\x9b\x29\xec\xe0\xaa\x95\x62\xac\xcc\x91\x4a\xc0\x23\x80\x82\x62\xd5\xe4\x47\xff\x0d\xea\xa5\xa2\xc4\x95\xe7\xaf\xa0\x71\xe5\x31\x0f\xce\x46\x71\x69\xee\x50\x43\x7c\x41\x4e\x80\xe0\xc4\xa4\xa6\x2c\xbf\xba\xc2\x7b\x77\x3c\x6a\x37\x23\x1c\x55\x25\x1c\xcd\x5c\x35\xaa\x3e\x0a\xe0\x61\x97\x81\xfd\x16\x03\xea\xab\x54\xe4\x86\x69\x1c\x04\xde\xfb\x9d\x0f\xd4\x1b\x17\x9a\xfc\x61\x8c\x30\x6d\x84\xc9\x22\xf6\x44\xb9\x03\xc7\x92\xb2\x83\xaa\x02\x38\x6b\xe7\x1d\xf4\xf4\x0e\xc6\x7b\x8b\x80\x87\x72\xd8\x85\xe5\xaf\x63\x4b\x49\x2a\x85\x15\x49\x25\x5a\x13\xd1\x94\x72\x23\x3f\xed\x93\x55\x60\x5f\x38\x69\xcd\xc4\x1b\x62\x71\xc8\x8f\x9b\xf8\xce\xd9\x04\xf2\x11\x8f\xf3\x7d\x35\x6d\x66\xcd\xcd\x31\x9c\xf6\x8f\x21\xe8\x37\x37\x40\xb5\xa1\xc2\xa2\x75\x99\x52\xa3\x95\xef\xe3\xe2\x9a\x23\x2a\xae\x8a\x1c\x58\x52\x80\x05\xf0\x77\x87\x26\x88\xc6\x70\x8a\xa2\xf6\x1c\xa7\x40\xee\xe9\xd1\x15\xb6\x40\x18\x23\xd1\x43\x23\xbe\xbb\x4b\x2e\x3c\xc4\x19\x72\x5b\x4a\x21\xba\xd5\x88\x46\xa6\xd4\xaa\xcf\x90\x5b\x81\xbf\x3b\x1e\xc0\xdf\xf9\x0e\x4e\xb7\x30\x05\x19\x5e\x93\xe4\xa8\xe7\xe1\xa6\x00\x31\x6d\x87\x25\x50\x65\x26\xaa\x4c\xa0\x4a\x73\x94\x75\x3e\x90\x0b\x3e\x48\x6e\x71\x2d\xa3\x87\x17\x20\x09\xc3\x2a\x01\xbf\x85\x89\x8b\x52\x9b\xb6\x79\x9b\xb6\x9f\x68\xd3\x16\xe0\x04\xd4\xa6\x9d\xde\xa6\x5d\x8b\x80\x07\x07\xda\xd4\xa5\xee\x60\x9b\xf2\x8c\xd8\x3c\xd1\xa6\x2d\xb6\xa9\x18\x77\xdf\xc8\x25\x12\xa2\xbb\x3b\x87\x64\x1d\x88\x2d\xcc\xe5\x06\xa0\x45\x16\x69\x84\xe2\xdf\xf9\x56\x48\x70\xf9\xd8\xa2\x80\x8c\x45\x1f\x1d\x39\xea\x7d\x1d\x51\x39\x34\xc8\x62\x01\xae\x00\xcc\x74\xec\xab\x15\x60\x44\xc0\x8a\xa4\x26\xe6\x59\xd1\x05\x12\xb0\x4c\x59\xae\xf1\x5a\xff\xe0\x2b\xad\xdd\x93\x6f\x7d\x4d\x06\x9a\x24\xe6\x17\xfc\x6d\x06\x54\x13\x7a\xbb\xe4\x05\xe9\x41\x61\xe8\x01\xba\xd5\x2f\xc4\x84\x07\x05\x6a\x7e\x8e\x56\x68\x20\x74\x5b\x71\xb7\xa9\x55\x31\xd0\xa8\x7e\xaa\xbd\xb0\x23\xa3\xe3\x03\x2a\xcb\x97\xff\xe2\xd5\x5b\x30\x69\xe3\xb7\xc8\xb2\xd8\x7f\xc0\xdf\x7d\x51\x34\x6f\x3c\xf1\x18\xfd\x37\xb5\x75\xdf\xbd\x9e\xb6\x4f\x52\x49\xe0\x6a\x1e\xb2\xdd\x91\x10\xc7\x13\x17\x4a\xc6\x72\x4f\x4e\xd0\x8f\xc9\xdb\xac\xc4\xd6\xe3\xee\x2a\xe5\x3a\x4d\x60\xed\x8b\x36\xc1\xe6\x66\x84\xe8\xbd\x8f\xfe\x43\xd9\x2a\xdb\x63\x3e\x8e\x06\x4d\xc7\xa3\xd5\x13\xc6\xc5\x14\xda\xf2\xca\x0f\x55\x86\x9f\xc8\xfb\x3f\x52\xd5\x45\x11\xcb\x47\x4a\x90\xae\xc4\x25\x09\x62\x80\x4f\xc2\xb0\xd0\x1e\xe4\x6a\x1e\x2b\x7f\x4a\x93\xba\xc1\x62\x70\x2e\x7f\xb4\x18\x6c\xd8\x6a\x34\xb0\xe0\x92\x78\x0f\x9f\x49\x7f\x08\x42\x30\x93\x7f\x0c\xc9\x96\x6e\xe5\xe1\x5c\xa0\x44\x15\x9a\x9a\x94\x9e\xb4\xac\x0e\x5b\x5d\x97\x82\x21\x6e\x4e\x1a\xf7\x92\x73\x2a\xa3\x79\x04\x70\xa4\x79\x57\x25\x0a\x4a\x2a\x6b\xfb\x71\x40\x88\xa5\x2b\xd7\x5b\xd8\xc2\x3c\xe3\x49\x76\x77\x97\x5d\x74\x0b\x2c\x6c\xa5\x4d\xaf\x59\xac\x8d\xb6\x04\x11\x44\x4b\x23\x33\x8f\x33\xf4\xbb\x04\xe1\xd7\x95\xfe\xe4\x52\xa3\xaa\xcb\x1d\xd1\x63\x29\x9c\xb0\x8e\x34\xd1\x84\x51\x55\x17\xa4\x6c\xc4\x09\x0d\xf0\x42\x1c\x56\xe4\xc7\xb7\x7e\xf8\x2d\x2c\x98\xba\x67\x28\x9d\x8f\xcb\xb5\xf5\xf0\xda\xd8\x1a\x85\x17\xde\xc8\x6b\xb5\xcc\x54\xfa\x23\x53\xfd\xcf\x45\xae\x8e\xc3\x7b\xa1\xa4\x27\x7c\xf0\x7d\x14\x2f\x7d\x6f\x5c\xfe\x71\x11\x44\x51\x8c\x5a\xb3\xe8\x9b\x01\x7e\xe9\x2d\x9d\x72\x75\x84\x9a\x70\x8d\xf0\xde\x2f\x99\x81\x46\x51\xd1\x5d\x2f\xfe\x7d\x19\x23\x7f\x52\x80\xc7\xb1\xab\x29\xe5\xfb\x46\x05\x34\x70\x39\xd0\x4c\x07\x28\x38\x01\x82\x79\xb7\x80\x47\x61\x48\xd4\xac\xa9\x14\xa6\x7b\x4f\xef\x69\x64\x9a\x39\x35\x1a\x1d\xcb\x6b\x98\xec\x43\xde\xee\xfd\x61\x6a\x17\x8e\x26\xda\xa8\xd8\x49\xdd\x3a\x94\x8d\x80\x50\x3e\xad\xdb\x9b\xe8\xb6\xce\x90\x73\x4d\xeb\x59\x57\x8c\x80\xde\x77\x44\xa2\x9a\xe2\x3a\x74\xe8\x36\xcc\x79\x14\xa2\x3d\x9e\xce\x40\x2f\x2c\xac\xc4\xd7\x99\xa0\x76\x7d\x03\x58\xe2\x8f\x40\x8e\xe8\x4e\xbf\xc1\x1c\x7b\x32\x99\xa2\x24\x41\x51\xda\x75\x52\x6f\x19\xc5\xbb\xae\xf5\x50\x03\x64\x1d\xe8\xd4\x94\x1e\x35\x5f\xb8\x75\x30\x7a\x9f\x05\xe3\xeb\x03\x30\x66\x9f\x03\xe4\xef\x03\x40\xea\x14\xda\x0f\x02\xf9\xd1\x95\x78\xf3\x02\xf8\xcf\x9e\x35\xec\xf5\x86\x30\x43\xc3\xd3\x93\x13\xf8\x60\xbd\xf3\xde\xc9\xe0\xec\x8c\x75\x4f\xac\xfe\xc9\x69\xef\x8c\x9d\x9f\xf6\xe0\x7b\xc0\xce\xbb\xe7\xa7\xdd\x3e\xe0\xdd\xc9\xb9\x75\xda\xef\x5b\xec\xac\x3f\x18\x9c\x76\x21\xa2\xd7\x1f\x9e\x77\xcf\x86\xac\x3b\x18\x0c\xbb\xa7\x83\x29\xbd\x50\xf9\xc0\xeb\x7e\xad\x57\xd0\x3d\x19\x9c\x9c\x9c\x68\x35\x41\x60\x70\x3e\x3c\xed\x15\x55\x5a\x16\x80\x39\xd7\xea\xc6\x2c\xd6\xe9\x49\x2f\x6f\x44\xb7\x77\x3e\x18\x9c\x0d\xbb\x45\x6b\x7a\x10\xdd\x45\xb0\xaa\x59\xdd\x61\xaf\x7f\xd2\x3d\x3f\x29\xda\xd7\xb7\xce\x7b\x67\xd6\xa9\xd6\x50\x68\xc7\xd9\xe0\xec\x5c\xb5\x18\x6a\x3e\xe9\x5a\x50\x45\xd1\xf4\xbf\xa1\xe9\x7d\xac\xfc\xf4\x94\x0d\xfa\xe7\x90\xed\x9c\x9d\x5a\x27\xd6\x29\xfc\x76\xad\xde\xf0\xa4\x07\x70\x86\x83\xee\xb9\x75\x7e\xca\xce\x7b\xdd\xe1\x00\x6a\xec\x76\xcf\xbb\x83\x6e\x17\xe0\x41\xd5\xc3\x61\x7f\x08\x29\x56\xef\xfc\xbc\x0f\x55\x9f\xf4\x86\x67\x16\xd6\x08\x0d\x80\x06\x63\x00\xca\xf6\x7b\xec\x6c\x38\x1c\x76\x87\x90\x02\x85\x86\xd0\x09\xec\xfd\xc9\xf9\xf0\xa4\x8f\x59\x4e\x4f\xfb\x30\x40\xd0\xf8\xd3\xe1\x19\x44\x58\x67\xfd\x93\x7e\xef\x04\xe1\xf7\xce\x06\x08\x0e\x06\xee\x7c\x38\x38\x29\x1a\xfe\x23\x36\xbc\x77\x72\x02\x63\x01\x0d\xc6\x01\xb0\xb0\x7b\xd6\x70\xd8\xc3\x76\x59\x90\x86\xc3\x06\x85\x07\xd6\x00\x40\x62\xe5\xa7\xc3\x13\x0c\xf4\x06\xbd\xc1\x39\x06\xfa\x27\x30\x11\xac\xdf\x1b\xf4\xad\xd3\x21\x3b\x1d\x0e\x7a\x27\xa7\x08\x65\x68\x9d\x5a\x16\x94\xe9\x77\x2d\x00\x70\x02\x29\xe7\xd0\x0e\x24\x45\xfd\x73\x80\xda\x13\x23\x8c\x2d\xee\x9e\xf4\x61\x84\xce\xbb\x38\x44\x7d\x18\x45\x76\x7e\x36\x3c\x83\x1a\x71\x20\xfa\x27\x67\x30\xa8\xdd\x93\xde\xe9\xa9\x75\xd6\xcd\x5b\x5e\x50\x17\x60\xcb\xc2\xd4\xaf\xd5\xc7\x0e\x68\x8d\x4f\x4a\xe4\x44\x64\xff\x50\x97\x3d\xf1\x0d\xab\x8e\x02\xe1\x9d\x7e\xb2\x8a\x82\x79\x9d\xca\x37\x54\xd1\x19\x4c\xf7\x0b\xf9\x73\xa0\x46\x25\xa5\x95\xbc\xcc\xca\x37\xf4\xec\x37\x4b\x60\xaf\x0f\xfb\xc0\x10\xdb\x62\x7a\xc0\xc5\x04\x5e\x03\xd4\xa7\xa0\x74\x64\x6d\x4a\xeb\x5b\x17\xad\xf7\x1d\x4e\x74\xb9\x11\x91\xb8\x83\x4b\xde\x57\xd0\x5c\xac\x0b\x47\xd1\x36\xc9\x00\x3e\x8f\x2e\xdc\x71\xc3\x6a\xd8\x8d\x6e\x43\xb9\x83\x42\xd3\xec\x51\xee\x0e\x0a\x2d\xb3\x47\x78\xfb\x95\xa7\x39\x64\x14\x5a\xa5\x39\xc5\x5b\xed\x05\xff\xc6\x1d\x87\xe3\xc6\xa5\xc5\x1a\x2d\xbf\xd5\x78\x46\x7f\x45\xf8\x0b\xeb\x0b\xc0\x95\x2f\x30\xa5\x7d\x38\x09\xbe\xa8\x70\x48\x39\x42\xca\x11\xca\x1c\x96\x28\x7c\x38\x09\xbe\xfe\x82\x8e\xfc\x8f\x6a\x07\x00\xd8\x01\x08\x37\x13\x91\xa3\xb9\xd8\xcb\xdf\x68\x05\xf0\xd5\xfd\x02\x53\x57\x32\xd7\xb2\xd5\xf8\x11\x9a\x20\xbf\x43\xfc\xae\x34\x53\x94\xc2\xdf\x50\xc2\x0e\x11\x36\x35\xf9\x9f\xd5\x67\x31\xab\x81\x00\xe4\xbd\xdf\xd2\x07\x66\x67\xe3\x03\x9b\x37\xf7\x81\xaf\xbb\xf1\x8b\xab\x3c\x3f\x0c\xbd\xb8\xea\x48\xf0\xe1\x3b\x62\x61\x45\x2d\x97\x24\xcb\xd2\x7d\x00\x0f\x5f\x06\xe6\xcf\xd8\xff\x50\x04\xb2\xfc\xde\xfe\xb9\x62\x90\xe5\x47\xf4\x7d\xeb\xcc\x6a\x25\x1a\x07\x96\x62\xeb\xc0\x42\xc4\xab\x5f\x1f\xce\x40\x07\x4a\x1d\x72\x10\x73\xdc\x83\xa5\x28\xe7\x63\xa2\xb9\x59\x6b\x86\x4c\x73\xc1\x46\xa6\x97\xa5\x98\xd9\xb7\x2e\x6f\x7f\x1f\xb1\x6f\x5c\xfe\x7b\xd4\x7e\x15\x8d\x34\x07\x06\x74\xdb\x5f\x66\x83\x44\x67\x7e\xf3\x8c\xb5\x26\x36\xad\x5e\x05\x50\x6f\x3a\x7f\x38\xdb\xe6\x7e\xf1\x50\x87\x3a\x8f\xde\xa1\xb4\xc0\xef\x9e\x92\xdc\xe2\xdf\x7b\xec\xfb\xe2\xeb\x77\xaf\xa0\x6d\xb5\x0e\x4c\x76\x3e\x39\x50\xd0\x73\x1d\x6c\x25\xe4\x7d\x54\x2b\x75\xa4\x85\x18\x4b\x4b\xb5\x2a\x28\x09\x51\x5d\x2d\xb9\x7b\xb0\x8f\x3a\x1e\x42\x84\x06\x73\x67\xe9\x58\x06\xdf\x1a\x40\x08\x87\x79\xdf\x1e\x32\xe0\x11\x16\x3a\x2a\xa9\x32\xf5\x1b\x92\x1d\x3b\xf5\x1d\xd1\xb7\xec\x3c\x2e\x7c\xb7\xb3\xb1\x5a\xb1\xe1\x76\x62\x06\xc1\x2e\xde\xec\x75\xdb\xf0\xc7\x32\x5b\x86\x47\x66\x71\xc7\x99\x9e\x4a\x01\x0b\xf0\xba\x88\x0c\x20\x10\x60\x24\xc0\x91\x61\x8c\x04\x38\x01\xc1\xc9\x8a\xd8\xbc\xbc\x49\x84\xa3\xa4\x69\xa2\xdf\xa6\xf1\x92\x94\x2f\xea\x70\xa8\xef\x0c\xbf\x23\xee\xea\xdf\xb8\xcd\xa0\x18\x70\x39\x4a\x76\xf2\x63\x6c\xc3\xf1\xd7\xb2\xe1\xc8\xd7\xb5\x13\xb6\xb1\xec\x89\xdf\xd4\x37\x1a\xf9\x25\x36\x9a\x29\xdb\x74\x4b\x19\x92\x52\x06\xf2\xf4\xa4\x5d\x73\x54\x8c\x4f\x5b\x1c\xb7\x56\x0b\xcd\x25\x3b\x5d\x0a\x77\x2b\xf7\x99\x85\x08\xf2\x3e\x7d\xfe\x02\x46\xfc\xe2\x79\x64\x4a\x62\x9b\xd6\x5e\x36\xca\xc2\xbf\xc0\x8e\x81\x65\xc4\xdb\xbf\x8f\x3e\xa7\x22\xfe\xb7\x87\xce\x17\x7d\xd8\x72\x81\x02\x07\x25\x0a\x5c\x7d\xa0\x7b\xd8\x8b\x6b\x4e\xbd\x9c\x3a\xcf\x52\x0f\x8b\xc5\xe6\x65\xfd\xcf\xf5\x1f\x15\x15\x65\xa3\x7f\x42\xb3\xdd\xa2\xbc\xfb\xf9\x34\x3b\x28\x4a\x07\xf7\xda\x7a\x03\x22\xb2\x8c\x2a\xa7\xbe\xd2\x92\xd3\x75\x6a\xb4\x57\x43\x92\xad\xf5\xaa\x51\x0e\x37\xfc\xce\xae\x15\x75\x76\x48\xc9\x81\x5f\xf6\xd9\xc7\xad\xed\x03\xc1\xd9\xe1\x60\x7f\xc4\x2b\x73\x19\x2e\x4c\xf5\xba\x80\xee\xc8\xa9\x02\xe6\xd3\x92\x45\x5b\xfa\x8d\x17\x18\xe8\x42\xe0\x0b\x0c\xf4\x54\xa0\x3f\x95\xdb\xf1\xd7\xe8\xfe\xee\x6f\xbc\x35\xdf\x6a\x78\xf0\x39\x5e\xc2\xaa\x9b\xf0\xe7\xcc\x65\x75\xff\xad\x73\x8e\xfc\x48\x15\x84\xbd\x99\x38\x48\xd9\x2b\xf9\x0c\x93\xa5\xd0\x79\x32\x4b\x5e\xd4\x5f\x8c\xc5\x67\x3a\x6c\xf6\x8c\x99\x8f\x8f\xd7\xa6\x26\xdc\x86\xd5\x25\xbb\xf5\x2c\x3a\x8c\x1e\xf9\x9a\x35\x7e\x96\xf2\xe6\x25\x9c\x88\x4d\xf3\xee\xee\xca\x37\x0d\xaf\x1a\x2d\xe7\xf1\x16\x3b\x70\xad\x4d\x21\x79\x9b\xf8\x47\x13\xf8\xf8\x57\xd1\xca\xf4\x09\x96\xe0\xe7\x42\x76\x5a\x5a\x89\xbb\x02\x5a\x13\x47\x49\xb2\x2f\x38\xab\x59\xbd\x08\x8f\x07\xc5\x0b\x35\xe2\x6f\xbb\xdf\x4c\x89\xf0\xb5\xe1\xe7\x5b\xf1\xf3\x56\x45\xc3\xb7\xfc\x14\x1f\x14\xf9\x96\x22\xf3\x24\x95\xb1\xad\x27\x89\xe2\xb0\xa9\x30\x98\xff\x75\x54\x27\xcd\x5b\x6a\x94\xd1\x6b\x7e\x87\xbe\xbc\x3d\x9e\x42\x20\x6f\x9e\x25\xdb\x05\xdc\xb4\x87\xfc\x72\x03\x89\x33\xa3\x4a\x60\x7d\xb5\x55\x1c\xd6\x43\x77\xf8\x35\x62\xd8\x7a\x35\x95\x9e\x17\xfd\xfe\x91\x40\xca\x8f\x2f\xd4\x87\xac\x25\xff\xc0\x6a\x1a\xca\x5c\x71\x7b\x1e\xdd\x86\x35\x82\xfe\xa5\x6e\xfd\xe9\x8a\x2e\xfd\xe9\x6a\x35\x63\x07\x3c\xbd\x4e\x4f\xaf\x07\xbf\xca\x15\x65\x9b\x7f\x5c\x4d\x5b\xaf\xa7\x54\x8d\xa8\x45\x08\x22\x17\xeb\xe6\x0d\x60\x73\xc2\x61\x69\xbc\xf3\x76\x89\x21\x44\x1f\x7e\x72\xd9\xaf\x2e\xfb\xd3\xd5\x6a\xec\x9b\xec\x3b\xf9\x8d\xfe\xc2\xfa\x16\x39\x35\xfe\x8d\x04\x93\xff\x72\xb9\x35\xfa\x4d\x70\x04\xfc\x57\xa1\xcb\x03\x49\x1d\x6f\xbd\x81\x13\x33\x44\x50\x00\x63\xf0\x3d\x1f\x23\xf0\x17\xbf\x69\x41\xc0\x37\xfe\xe6\x06\xf4\xfc\x47\x53\x84\x9f\xe0\xb8\xa9\x95\x31\x4c\x3b\xb4\x7f\x8b\x4a\x31\xf7\x65\xb0\x9a\xbf\x98\xdf\x5c\x6a\x01\xf0\x78\x6e\x59\x23\x55\x17\x3c\x27\x6d\x68\x7f\xce\x50\x97\x7d\x14\xf2\xb9\x6e\x7a\x5a\xbe\x7d\x6a\x3e\x4f\xd4\xf3\xe7\x47\x5f\x6a\x21\x43\xa9\x22\xbf\x2b\x1c\x9b\x44\x53\xd2\xd8\x04\x86\xc9\x2d\x8a\x05\x4f\x93\x91\x09\x44\xd7\x9d\x04\xe4\x11\x2a\x7f\x19\x8a\x59\xdc\xb9\xbe\x46\x55\xb8\xeb\x6b\x16\xb0\xc8\x34\xc7\x46\x43\x45\x34\x7c\xe0\x6a\x30\x77\x9e\x85\x17\xb9\x4d\xf6\xda\x37\x3c\x28\x93\x11\x88\x62\x0c\xae\xaf\x51\x5c\x81\xa5\x85\x3a\x88\x0c\x0a\xf7\xee\x72\xb0\x5f\xfa\xe8\x39\x14\xc6\x2f\x1f\xa4\x67\x15\x7f\x5e\x15\x95\x87\x7c\xac\x1c\x31\x56\x37\xfa\x58\xed\xfb\x87\x51\xae\x60\x54\x8e\x24\x77\xfb\x22\x75\xb3\xb5\x8c\x0b\x14\x2d\xc7\x97\x75\x9e\x4c\x16\x53\x18\x5e\xbe\xd7\xa3\x68\xca\xea\xc7\x6c\x81\xea\x5f\x4e\xdd\x7c\x90\x85\xde\x4d\x2e\xa1\xab\xcc\xf3\xe2\xdb\xf4\x64\x89\xb3\x00\xe3\x97\xb1\x25\xb0\xec\x7e\x3e\x5a\x99\x3e\x3e\x0e\x8b\xc4\xf8\x08\x67\x10\x07\x91\x08\x86\xa3\xc6\xf5\x7f\x48\x4f\x38\xef\xd0\xb2\x66\xde\x24\xe1\x15\x48\x1f\xa5\xe8\xc2\x1f\xa1\x83\x29\xe5\x67\xbd\xdc\x05\xe1\xce\x88\x24\xee\x49\x1b\x26\xef\x8b\xf2\xae\x82\x12\xc8\x13\x67\x4a\x3e\x6e\xf6\xc7\x06\xdf\xe6\xd3\x5c\xff\xa5\xe8\x58\xc6\xe4\x5c\x8a\xee\xa5\xb7\x5e\x49\xf5\x5a\x33\xf9\x2a\xb2\x8d\x0e\x2c\xd0\xa7\xbd\x31\xe5\xc0\xe5\x6e\x98\xd5\x29\xf3\xa6\x02\x32\x6d\xca\xb0\xd1\xbd\x96\x7b\xaf\x14\x2a\xd4\xf7\xc9\xf4\x60\xd9\xd8\x5b\x47\x37\x1e\xda\xa8\x2c\x08\x26\xee\xf8\x07\x0b\x24\x5e\x2a\x44\x81\x44\xdf\x9c\x34\x8d\x2b\x5d\xd3\x8e\x17\x50\x33\x99\xaa\xa4\x4a\x0a\x3b\x9b\xba\x49\xf1\xf8\x40\xa6\xd7\x57\x86\xd3\x49\x36\x8e\xb0\xe9\x13\xc1\xe0\x9b\xa5\xf3\x44\x71\x6c\x91\xc6\x84\x3d\xdb\x08\x5b\xbc\xd1\xa8\x3e\xe9\xa5\xca\x69\xd5\x52\x37\xf5\x59\x5c\xbb\x79\x68\x27\x8d\x5e\x06\x23\xd4\xe2\x37\x4b\xb2\x71\xc2\x7e\x66\xa9\x20\x4b\xc9\x98\x2b\xfe\xa7\x3d\xea\xef\xb7\x27\xfe\x9c\xf6\xd4\xf4\xf6\x9f\xb5\x6f\x1f\x90\x68\xef\xff\xa1\x06\xa3\xc8\xe8\x1e\x8e\x49\x5d\x9f\x2f\x80\x18\x86\xa6\x70\x92\x05\xd0\xf0\xd1\x1b\x55\x8f\xf3\x37\x3e\x48\x10\xc2\x03\x5c\x33\x93\x8a\x1d\x7d\x1e\xdb\x2f\x63\x21\x51\x10\x26\x78\xa3\x1c\xf8\x8b\x9d\xe6\x5c\xf5\x9d\x2f\x10\xb3\x81\x60\x3b\x70\x5c\x44\x8f\x00\xa2\x6d\x63\xdf\xce\x0a\x3c\x7a\x53\xb3\x4e\x4a\x67\x55\x4f\x13\x18\xd2\x78\x4d\xa1\xd0\x53\x9e\xdf\x4c\x13\x8f\x39\x3a\x7a\x78\x4a\x81\xc0\x0b\xfb\xbc\xa5\xa3\xee\xe3\x2b\x83\x31\xcf\xe4\x98\x67\x72\xf2\x1e\x5d\xf9\x7e\x59\xd5\x18\x71\x8f\x70\x68\x50\x85\x71\x58\x1c\x30\xa3\x18\x57\x09\x01\x50\xcf\x93\x1b\x4f\xba\x0b\xaa\x1e\x0f\xb4\x31\xcd\xd7\x1e\xe5\x93\x2b\xf0\xe7\x38\xda\x78\x71\x8a\x95\xe9\x0b\x2e\xad\x20\x78\x8a\x08\x9e\xd6\x21\x38\x92\xec\x6b\xb4\xb1\x96\xbe\x88\xd6\x1b\xe8\xe3\xfc\x0a\xc1\x17\xd4\xc9\xc4\x34\x55\xcd\x5b\x21\x4c\x99\x77\x2c\x03\x74\x4f\x49\xf5\xe3\x65\x8c\x84\xd4\x2c\xb9\xda\xd0\x5a\x9b\x14\x30\xf0\x94\x82\xdc\xbe\x27\x96\xa5\xd8\x09\xf6\xe4\x00\x00\xf9\xfb\x17\xc2\xcd\xa2\x32\xad\x5d\x6c\x26\xe6\xc7\xde\x05\xd9\x17\x81\x0e\x49\xfb\x6e\xda\x82\xa0\x1a\x71\xf5\x91\x4f\x8e\xf2\x9a\xf0\xa0\xc4\x7d\x15\xd5\x45\x13\x05\xae\x67\xda\x5c\xec\xa3\x78\x65\x42\xe2\xfa\xe3\x38\xf2\x08\x9f\x3f\xa6\xba\x2d\x92\x47\x8d\xa2\x2f\x47\xf1\xfe\xd0\x86\xd4\x27\xde\x0a\x86\x88\xe9\x08\x58\xf4\x36\x96\x3b\x9e\xb7\xad\xb5\x52\x92\x8f\x0f\x66\x68\xc0\x6a\x7a\xe6\x8b\x02\x02\xf5\x6a\x2e\x46\xa9\x1a\x0f\x65\xeb\xd0\x46\xa2\xc6\x89\xee\xa1\x5d\x38\xa2\xbc\xe5\x7d\xab\xe3\x46\x59\x98\x3e\xed\x11\xaf\x40\xe9\x42\xc7\xe7\x35\xec\xa8\xb4\xa9\x8b\x8a\x5f\xa0\xf8\xa1\x70\xb7\x27\xf7\xb5\x03\x56\xba\x3f\xb5\x61\x77\x1f\xda\xb0\xd3\x29\x81\xb5\x8d\x83\xdc\x8c\x34\x0f\x5e\x27\xe5\x01\xec\xa8\x18\x3b\xfd\xe4\xec\x1d\xa8\x02\x2d\xaa\x89\x7e\xa0\x7f\x95\x3a\xcf\x7a\x95\x8e\x48\xd8\xb5\xc6\xe7\x8a\x0a\x85\x01\x96\xba\x4a\x45\x35\xad\x50\x19\xc3\x29\x38\x6a\x2a\x73\x6f\x0b\xc3\x70\x9f\x6a\xbb\x00\x53\x34\x3e\xab\xca\x4f\xff\x5f\x6b\xbf\xaa\x29\x97\x9f\xc4\x3b\xf0\xfa\xce\x88\xde\xe8\x19\xcd\x4f\x77\x4c\xc1\xcf\xfb\x86\x38\xfd\x20\x4f\x78\x60\xaf\x16\x7b\x12\x1c\x2f\x33\xfe\x93\x3b\xfa\x09\x78\xd6\x3d\xc4\x48\x45\x3f\x7f\x45\x6b\xab\x7b\x6c\x9c\xea\x16\x0a\xcc\x95\xe7\xc8\x84\x43\x2b\x8f\x19\x80\xcc\x84\x7a\x5f\x15\x6e\x7e\xb9\x5d\xc3\x1d\x8e\x60\x1b\x23\xeb\xab\x77\x77\x2a\x54\x6f\x65\x95\xcc\xab\x9a\x64\x09\x4b\xb0\x91\x25\x62\x4a\xc4\xa3\xe6\x10\x5b\x72\x44\xba\x77\xb6\x6c\xb5\xfe\x72\x75\xa5\x76\xfd\x00\xa0\x38\xf9\x8f\x4a\x3f\xb6\x74\x00\x10\x88\x84\x5e\x8b\x50\x7b\x3c\xc9\x1d\x2c\x8e\x92\x8b\x60\x14\xe0\x01\x00\x5d\x82\x8a\x33\x65\xcc\x85\x23\x09\x69\x87\xde\xd8\x9b\x67\x3c\x15\xc6\x02\x87\x5b\x30\x46\x6a\xce\xd5\x39\xd2\xc7\x4b\x31\xe5\x16\xcd\xd3\xcf\x0b\x91\xf2\x64\x41\x6f\x3f\x5b\x3f\x39\x74\x19\x87\xaa\x0d\x5e\xc9\xe6\x4b\x6e\xf2\x9c\x2e\x0f\xe9\x9c\x59\x72\x1b\x0a\x6d\x44\xfb\x93\xe9\xf5\xf5\xdd\x1d\xfa\xec\x2d\xc7\xe1\xfd\x6e\xb4\x41\xc1\xcf\x95\x14\x59\x74\xc7\x0b\xb2\xbf\x98\xa8\x5f\x49\x8b\x16\x64\x79\x53\xc9\x53\x99\x36\x9a\xc2\xcd\x4f\x1a\x94\xf3\x1b\x92\xa1\x2a\x7d\xe8\x65\xe7\xa9\x9d\xc2\x69\x31\x28\x0e\xc3\x46\x83\xb2\x36\x84\x6b\x28\xd2\x94\x43\x17\xd5\x1d\x0f\xed\xcf\x1b\x68\x94\x30\x81\x6d\xc9\x68\x2c\x01\x6b\x64\xc5\x90\x97\x78\xd3\x86\x1b\x38\x49\xa2\x6c\xf6\x9a\x72\x7f\x6e\x44\xc0\x47\xf9\xe9\xae\xc1\x5e\x45\xa6\x30\xf9\xae\x5d\x65\x00\xe0\xad\x9f\x1a\x66\x6d\x6e\x75\x0e\x42\xdb\xf0\x95\x62\xfb\xf9\xbb\x26\xdb\xf1\xe7\x99\x01\xed\xbd\xac\x74\x28\x6f\x26\x75\x89\x9c\x9e\x6e\xb9\x71\x99\xf7\x09\x06\x04\xad\xfe\x36\x60\x51\xac\xf6\x3a\xa3\x0a\x97\xaf\x5c\x8c\x4b\xd8\xc7\xe7\x79\x49\x7c\xc0\x84\x2c\x45\x04\x6d\xa5\xe2\xde\x69\xc6\xe7\x0a\x07\x54\x3e\xb4\x11\x5c\x89\xba\x85\x31\x56\x51\xa2\x30\xed\xd7\xc6\xd2\x64\x57\x1a\x00\x91\xc4\x5e\x6a\x00\x64\x55\xc9\xad\x8f\x4b\x1a\xc8\x81\x0b\x7b\x4d\x63\x16\xa5\x69\xb4\x6e\xd8\x21\x7f\xe3\xb3\x99\xec\xd3\xae\xd7\xc0\xe7\x82\x2b\xf5\xd9\x60\x39\xc1\xcc\x98\x65\xb6\x60\x82\xae\x65\xda\x16\xb2\x5a\x66\xb9\xdc\x4b\x95\xa6\x27\xd5\xc0\xb8\x95\x69\xf3\x1d\x22\xc9\x69\xd7\x5b\x17\xd8\x80\xad\x6d\x3b\x21\xbe\x37\x42\xe2\xda\x9f\xcf\x03\xec\xfe\x56\x15\x69\xd0\x63\xc4\x8e\x1e\x23\x84\xac\xc0\x5b\xeb\x5b\x8c\xc0\x47\x89\xb7\x10\x61\x8e\x66\xb0\xd2\xdf\x8d\xa8\x97\x69\xb4\xa9\xe9\x62\xbb\xdc\xc7\xb6\x51\x6d\xe1\x03\xdd\x6c\x1f\xee\x67\x1d\x9c\x52\x57\xad\xff\x41\x47\xdb\x7b\x3d\x6d\x97\xbb\x1a\x78\x8b\x14\xfb\xfa\xbe\xe8\xeb\xb6\xd2\xd7\xed\xa7\xfb\x0a\xd9\xb5\xce\x5a\xa5\xbe\xd6\x94\x2d\x3a\x6f\x55\xa7\xb5\xdf\x3b\xdc\x5b\x61\xad\xbb\xd2\xd5\xb6\x90\xfe\x10\x3d\xfe\xd6\x7a\xab\xba\xfa\xed\x5e\x57\x63\x34\x26\x5a\xd3\xd7\x72\x57\x1f\x44\xdd\x07\xba\x59\x2d\xf7\x0f\xfb\x28\xb6\xce\xbd\x5e\x1e\xee\xa4\x4f\x27\xfd\x85\x90\x59\x7c\xee\x84\x73\xb1\x4b\xbc\xe3\x5a\x94\x81\xef\x77\xcf\xea\x98\xf4\x05\x84\x5b\xef\xee\x47\x73\xf5\x1e\xfd\x0c\x9d\x5c\xe4\x61\xc1\x1b\xe4\x89\x89\x96\x08\x04\xf1\xa6\x08\xcb\x93\x98\x54\xe4\xac\x88\xb6\xc6\xfc\x2d\xb2\x30\x43\xd8\xbd\x87\xb0\x75\xf7\xf1\xd6\xb3\x4b\x2a\xb2\xba\x17\xcf\x50\x0a\x14\x3f\xf2\xcd\xa7\xd0\x9f\x8b\x62\xbf\xe4\x1b\xeb\x13\x4f\x75\x78\xd4\xfb\xc3\x1d\xa7\xad\x46\xc3\x86\x76\x29\xa1\x19\xda\x00\xeb\x4c\x90\xd6\x3c\x39\x17\x5e\x72\xd4\xb3\x33\x96\x7e\x5b\xb1\x3c\xf5\xf0\xf3\x6f\x9a\x3f\xfd\x16\x7b\xe8\xe7\x5b\xad\xc2\xb2\x7b\x4a\x7f\x0f\xcb\xc6\x7b\x28\xf2\xd3\x4a\x91\x95\xca\xb3\x08\xb7\xee\x4a\x02\x88\x84\x49\xde\xd4\x41\x7e\x40\x88\xa8\x55\x28\xd8\x92\xb4\xc9\xe7\x95\xf7\x65\x79\x5f\x75\xea\xe7\xcf\xd1\xa5\x8d\x64\xe9\x28\x1f\x92\x6c\x36\xf7\x6f\xfc\x79\xad\xe5\xd9\x4a\x71\x38\x19\xe6\xaf\x86\x6f\x5d\xae\xb6\x38\xf6\x87\xcb\x3f\xc2\x46\x60\x77\x19\x11\x0e\x74\xa2\x43\x29\x10\x40\xa2\x69\x77\xef\xd5\xe3\xd0\x2c\x06\x2e\xef\xb0\x8d\x43\xbf\x96\x8d\xf3\xab\x4c\x9c\xa2\x07\xe4\x33\xc1\x8b\xdb\xc4\x57\x23\xab\x00\x6b\xac\xa0\x16\xed\x5b\x6f\xf6\xce\x4f\xdb\xa9\xb3\x69\xaf\xa0\x5d\x01\xb6\xad\xed\x46\x01\x51\x8f\x78\x39\x73\x0c\x8b\xd1\x7f\x66\x43\x33\x41\x8b\xaf\x71\xa2\x9d\x44\xc4\x30\x3e\x8d\x32\x77\x25\xec\xe1\xe6\x09\x0c\x6d\x31\xea\x3c\x0e\x7a\xce\x5a\x92\x7a\x89\xce\xe7\x8c\xa2\x3d\x26\x27\x46\x97\x63\x55\x26\xa7\x54\x5a\x76\x00\x4d\xeb\xcf\xfc\x80\x98\xab\xc6\x0a\xf6\x2f\x2f\x2c\x12\xdd\x2c\x4e\xa8\x23\xf4\x52\xbb\x72\xfc\xb8\x81\x3a\x85\x7a\x8b\x84\x27\x3c\xbd\x35\x8f\x6b\x4b\x5e\xae\x5a\x15\xf2\x82\x92\xa7\x72\x2a\xbd\x8f\x3d\x7c\x6c\x53\x75\xdd\xb0\x79\x6a\x8e\x1c\xc9\x5a\x16\x5c\xa4\xb3\xd7\x80\x65\xb5\xf6\x7d\xca\xdb\x10\xb0\x51\xc2\xf1\x7e\xaf\x4d\x35\x84\xfa\x4b\x17\xad\x47\x1e\xe8\xe3\xb6\xae\xc8\xf1\xc4\xbb\x9d\x7e\x29\xfd\xc5\x85\xe6\xb8\xdd\x17\xfa\xbd\xda\xce\x54\x53\xe8\x3f\x93\x30\x99\x1e\x2e\x74\xeb\xcf\x81\x99\x65\x43\xf5\xbd\x22\x0b\xdd\x14\xf1\xd0\xfc\x92\x85\x67\x4a\xc6\x43\x22\x9c\x99\x1a\x28\xf2\x82\x2f\x9d\x86\x39\x6e\x84\x11\xf0\xaa\x54\x8f\xd4\x26\x87\xb3\x4b\x99\x2d\x46\xb5\xb6\x4a\x54\x64\x8e\x5c\xd2\xf4\x7b\x2e\x34\xce\x8b\xa1\x48\x08\x29\x4a\xed\x45\xbb\x4a\x6d\x8a\x67\x1e\xb0\xf2\x26\x0b\x54\xd1\xa0\x28\xba\x2b\x17\x55\x5d\xd3\xca\xc6\x54\x36\x35\x16\xa5\x07\x01\xe9\xa5\xa4\x16\x71\x04\x28\xcd\xd5\x58\x0d\x26\xe8\x7e\xc0\x92\x49\xeb\xd8\x2b\x26\x4d\x30\x71\x2b\x88\xfc\x4f\xa2\x47\x9a\x8d\xfb\x92\x06\x9b\xd6\x00\x7d\x89\x94\x87\x84\x85\x35\x0b\x89\x75\xc2\x0b\xc4\x25\xd6\x49\x2e\x4a\x38\xb5\x37\x72\xa5\x1b\xf3\x87\xea\x83\x71\x5c\x3d\x50\x9f\x27\xeb\xbb\x2d\xd7\xa7\x86\x7b\x85\x15\xae\xca\x15\x66\x3a\x4d\xc5\x8f\x7e\x8f\x17\x2e\x60\xde\x79\xbb\x17\xd1\x1c\xb5\xbc\x5e\xdf\xdd\x19\x97\x42\x7d\xed\x3d\x1a\x77\x23\x7b\x5a\x10\x04\x88\x1c\xe1\xb2\xd7\xbc\x67\xb2\x85\xa1\x9b\x2a\x5a\x1e\x04\x07\x91\xaf\xd1\xe6\x0e\x32\x5d\x05\xa4\x96\x82\x64\x55\x00\xdd\xe8\xa2\x3d\x44\x74\xd1\xd7\x2a\x99\x09\xd8\xe2\x85\x1f\x81\xd9\x92\x6d\x02\x02\xb3\x25\xdb\x98\xd8\xe4\xbc\x6a\x27\x48\x7f\xf0\x76\x63\xe3\x92\xfa\x31\x31\x70\xdc\x5b\x09\x59\x91\xeb\x31\x03\x07\xa5\xb5\x12\x5f\x50\x12\xdb\x05\xcd\x6a\x11\xe4\xa7\x97\x38\x62\xa2\x85\xd0\x40\x8c\xec\x62\x24\x64\x9e\x9a\xb6\x18\x13\x93\xbd\x3b\x3a\x5a\x03\xbb\xe6\xc2\xe6\x80\x77\xbb\xc6\x15\xb5\x0f\xf8\xd3\x67\x22\x21\x80\xe3\x2e\x5e\x7e\x14\x09\xa8\x7f\x9c\xe2\xe7\xad\x72\xe7\x20\xf7\x0a\xd4\xef\xb3\x5f\x8f\x05\xf5\xb4\x25\x35\x6b\xdc\xeb\x03\xb2\x56\x57\xde\xf2\xa1\x00\xd8\xbe\xe7\x64\x5c\x22\x37\x50\xe1\xe0\x48\x2e\xf8\x7b\xbc\xaa\x5a\x72\x6f\xbc\xb2\x13\xb4\x9e\x83\xf3\xb5\xd4\xb4\x64\x71\x16\xdc\x36\x5f\xb0\xa0\xcd\x6f\x5a\x0b\x64\x28\x0d\x6f\x3c\xb7\x37\x66\xa1\x02\xed\xb2\x42\xa3\x9d\x09\x9f\x72\xc2\xab\xf6\xeb\x71\xc6\x0d\xb4\x62\x62\xb6\x6e\x6c\xe3\x12\x40\x2d\x78\x7d\xa9\x5e\xf3\x12\x6d\xed\xc5\x26\xac\xf1\xf8\x62\x81\x4c\x0d\x1a\x50\x5b\x00\x57\x03\x7f\x18\xb6\xe8\x09\x8f\xef\xee\xb0\x7d\x4f\x78\x06\x4c\xe8\x58\xe8\x4a\xda\xbe\xc0\x39\xb2\x4d\x18\x33\x4c\xe7\x19\x6a\xc8\xdb\xc2\xc4\x7b\x31\x24\x3b\xc4\x11\x03\xcf\x1b\x9f\xd8\xec\xeb\x68\xc9\xe3\x28\x28\x2b\xd8\x0a\x60\x65\xe0\xc0\xb1\xb7\xbb\x88\x6c\x1f\x0a\xe6\x00\xe7\x50\xf1\x00\xe2\x7d\x21\x4f\xca\x36\xfb\x09\xc4\x38\xd4\x97\xa1\x24\xbc\xbb\xdf\x4b\x81\x55\xa5\xf3\x20\xa5\x84\x4a\x25\xec\x8d\x51\xc5\x37\x3c\xf9\xc9\x23\x86\xf0\x8b\x44\x97\x95\xd7\x1a\x0b\x95\xaf\x21\xe5\x5d\xe3\x96\x3b\x9d\x68\x61\xcc\x74\xc5\x90\x2b\xad\xc0\x0c\xaf\x3b\xae\x71\x67\xcf\xd6\x50\xdf\x3b\xfe\xe4\xf8\x3f\x46\x78\x97\x98\x8a\xfa\xbe\x84\xa5\xe0\xc2\xa9\x09\xe3\xbd\xbb\xdb\x52\x7c\x00\xeb\xff\xba\x43\x9b\xbb\x07\x9b\xb1\x22\x80\xec\x0d\xff\x11\x60\xbd\x2f\x51\x80\x0f\x5a\xa5\xd7\x51\xed\x68\x64\x35\x43\xb1\x24\x63\xfd\x79\xb7\x84\x85\xab\xf9\x1b\x1a\xe0\x64\xfc\xa1\x7e\x26\x6e\xea\xa7\x61\x67\xda\x07\xa6\xfb\xa6\x76\xae\x77\x88\xa1\x84\x98\x71\xb6\x41\x5e\x47\xc3\xc7\x66\xc3\xd4\x93\xd8\x6b\x53\x12\x22\xa0\xb7\x18\x52\x24\x88\x3e\xbb\xd3\xdc\xdd\xf6\x4b\x41\x07\x5e\xf0\xd6\xf1\x6d\x31\x94\xec\x6b\xf8\xfe\x4f\x98\x7f\x8f\xb6\x7c\x02\x04\xaf\xfd\x42\x02\x03\x72\xd7\xfe\x5a\x40\x9a\x2a\x8a\xf7\x22\xaf\xe3\xeb\xa9\x38\xa0\x56\x08\x28\x39\x94\x7a\xaf\xac\x47\x98\xa3\xc3\xab\x8d\xd6\xcd\x63\x97\xdb\xe3\x56\xd7\x75\x25\xc2\xac\xe2\xb2\x38\xe1\xdf\xc3\xf1\x59\x7a\x2c\x13\xbe\xca\x96\x40\x2d\xf5\x0c\x4c\x51\xda\x62\x05\x98\xf2\xc4\x8c\xd6\x2d\xf1\x27\xe1\x13\xe0\xf3\xc9\x6b\x39\xfd\x6e\xd0\x62\xc2\x1c\xff\xdc\xf0\xe7\xae\x46\x40\x43\x79\x49\xaf\x33\x1f\x07\x2e\x97\xc5\xaa\xa9\x6a\x54\xa5\xfc\xe3\x16\x68\xf3\xce\x5e\x31\xdf\xf6\xd9\xdf\x78\xd2\xf2\xf6\xee\x9c\xd3\x51\xe5\xc6\x39\x65\x3f\xb9\xe3\xea\x31\x47\x97\x38\x93\xaf\x7d\xa5\x53\x88\xd6\x22\x54\xf1\xf2\x49\x32\xf9\x6f\x96\x90\x89\x8a\x15\x99\xa8\x08\x6b\x07\x14\x98\x54\xf9\x46\x49\xd1\xf6\x3e\x3c\x71\x30\x7e\x87\x86\x53\x52\xf4\xf9\x12\x63\x78\x85\xbe\x04\x8a\xd7\x53\x2e\xf5\xdf\xf3\x62\x99\xf9\x11\xdf\x0a\xb6\x1c\x05\x0d\xc8\x0f\xc6\x8e\xc7\x18\x0c\xeb\xb6\xc4\x62\x27\xbc\xbf\x37\xb5\xc7\xcc\xba\xce\xa5\xd4\xb9\x14\x3a\xf7\x09\x50\x95\x74\x49\x0d\xd1\x34\x53\x3d\x66\xfd\x13\x70\xf4\x18\xfa\x68\x8b\xd2\x2e\x39\xd5\x07\x24\x7b\xe2\x3e\x7d\xda\xbd\x7b\x12\x4c\xf3\xeb\x8c\x47\x1a\x98\x0e\x6a\x21\x04\xa4\x81\x14\x38\xeb\xcd\x23\xdb\x01\xb4\x18\x0d\x0f\x3c\x79\x92\x22\xb9\x98\x53\x00\x98\x1e\xdb\x1d\x53\xa4\x1d\x90\x87\x3b\x08\x09\x51\x7b\xcc\x3e\xd9\xb0\xf9\x14\x33\xd8\x01\x30\x11\xc2\xe6\x51\xb8\xe7\x61\x3d\xd5\x8c\x04\xa0\xe1\xcd\x43\xcf\xc0\xd4\x06\x7a\x39\xb2\xd0\x47\x14\xd6\x4e\xa7\x0b\x8f\x7b\x22\x26\x26\x5e\xd8\xe7\x13\x00\x35\x65\x2e\x10\xcf\x1b\x2f\x4e\x29\x87\x8b\x02\xcf\x31\xfc\xe0\x63\x11\xf0\xc5\xc4\x9c\xa0\x28\xbc\xe0\x3b\x98\xe1\x3d\x21\xc2\x7a\x77\x17\x3f\x21\x0e\x54\xd8\x36\x21\x48\xf2\x10\x93\x89\x8a\x1d\x51\xb1\x4b\x31\x64\x71\xce\x21\xee\x0a\x4f\xf4\x13\x68\x3f\x5a\xb4\xce\x2b\xce\x78\x60\x90\x78\x7f\x80\x0e\xee\x58\x46\x1a\x8f\x0b\x8e\x86\x62\x51\xe3\x11\x2b\xce\x9e\x10\x09\xbf\xbb\x73\x9e\x10\xbf\x8b\x15\xaf\x04\x24\x93\x46\x92\x7a\xed\xe3\x45\x9c\x2f\xba\xe9\xd3\xb0\xc3\x77\x22\xbe\x89\x61\x2e\xf7\x56\x7e\xc8\x4e\xab\xaf\xfa\xbe\xcb\xee\x45\xc8\x85\x45\xa2\x87\x91\xa8\x21\xa3\x96\xc1\x37\xf1\xe1\xe5\x6e\x29\x98\xa2\x77\xea\xab\xbe\x93\x26\xb9\xbd\x01\x74\x80\xe1\xcc\xc8\xb7\xbd\x33\x45\xb4\xa0\xd1\x45\xbc\x11\xbd\x15\x08\x59\x6f\xbc\x20\xe7\xc0\x80\x5f\xaf\x12\x63\x45\x48\xc8\xfb\x89\xcc\xb8\x0f\xe2\xc9\x13\x68\x03\x8e\x18\xa7\x01\xbb\xbb\x7b\xf2\x04\x6a\x5e\x51\x04\xf6\x4f\x77\x0d\x14\x02\x1a\x6a\xae\x81\xbe\x74\xf9\xc7\xd0\x6e\x84\x49\x5b\x2e\x6c\x86\xbe\x25\x6f\xf3\xaf\xa4\x94\x76\x5b\x4a\x0b\xe1\x33\xbc\x4d\xbc\x22\x02\xca\x86\x5e\xa2\x95\xf6\x2a\x39\x92\xdb\x72\x8e\x7b\xf6\xdc\xe5\x93\x49\x23\xc4\xbb\x15\xbc\xb8\x86\x7f\xb7\xb8\xa5\xd2\x1f\x8a\xa1\x3f\xb7\x0d\x18\x5b\xca\x21\x42\x21\xe5\x45\xdd\xe4\x29\xfb\x9d\x84\xf4\xd1\x15\x1c\xba\xea\xfc\xde\xe5\x5f\xc3\x29\x98\xbd\x02\xb8\x8d\xab\x2c\x9c\xe3\xae\xdb\xb8\x8c\x64\xe0\x4d\xe6\x25\x22\xf4\xbb\x37\x0f\x55\xf8\xcd\x0a\xb6\x59\x11\xfc\x26\xf6\x45\xe0\x0a\x78\xba\x18\x83\xd3\xd1\x07\x5f\x93\x62\xfe\x08\x8c\x21\xd6\x50\x67\x62\x91\x36\x2e\x94\xab\xf9\xed\xcd\x8b\xaf\x85\xab\x6f\x46\xd9\x77\x9f\xce\xbd\x93\x99\xbf\x81\xe9\xfe\x13\xbd\xe1\x7f\xa2\x84\xca\x27\x8b\x7d\x1b\x41\x17\x3e\x55\x86\x32\xc9\x02\x97\x7e\x10\xa0\x69\x68\x18\x99\x4f\x96\xd3\xf3\xe6\xc5\xc3\x0c\xd8\xad\x4f\x97\xa4\x6c\xaa\x50\x14\xa6\xab\x4f\x16\xc1\x4c\xb2\xc0\xd5\xe3\xda\x77\x55\x6a\xda\x1b\x40\x85\x07\x4b\x60\x06\x2d\xef\x07\xe0\xdf\x7e\x22\xf7\x0a\x35\xa5\xac\x7b\xe1\x0c\xe5\xa7\xc5\x61\x90\x32\x03\x82\x4c\xf6\x91\xe3\x07\x14\xe7\x56\x18\xa1\x69\xab\x76\xae\x35\xe6\x48\x96\xdc\x1d\x28\xb8\x7b\xb0\x5c\x1d\xca\xe4\x85\x55\xe2\x83\x10\xf6\xb0\x27\x2f\x4e\x29\x0f\x96\x3d\x84\x48\x39\x08\x3d\xc3\x27\x20\xed\xe1\x94\x06\x84\xd2\x1e\x2e\x5f\x45\xaf\xa2\x34\xa6\x3c\x58\xb6\x06\xd3\xf2\xd2\x57\x8f\x68\x7b\x15\xe9\x44\x61\x8c\x3d\x58\x4c\x50\xe0\x1f\x04\xc1\x2a\x28\x0c\xfb\xc5\xe5\x8d\xaf\x9c\x2f\xbe\x9a\x7d\xf1\x95\xf7\xc5\x57\x7f\x7c\xf1\xd5\x9f\x40\x5a\x03\x88\x5b\x1f\x7f\x35\x3f\xc6\xaf\x14\xbf\xbe\xb5\xbf\xba\xb4\xbf\xba\x02\x8a\x1d\xfc\xaf\x91\x3a\x16\x4b\x58\x02\x90\x80\x22\x20\x88\xb2\xa2\x98\x28\x03\xd9\x33\xcc\xfe\xbd\x13\x66\x4e\x4c\x10\x3d\xe0\x05\x45\xf0\x12\x0d\x84\xc1\xef\xb3\x4d\xec\x07\xf4\x8d\xb1\xdf\x67\x44\xd4\xbf\xcf\x02\xfc\x7a\x96\x2d\xb3\x04\x0f\x29\x57\xde\x26\xf5\xc8\xa8\x15\x6b\xfc\xe4\xa6\x91\x08\xbd\x86\x23\xa6\x8c\xfc\xda\x73\x45\x10\xb6\x44\x59\xa5\xa8\x4e\xd4\x24\xea\xd1\x6b\x11\x95\x88\x3a\x44\x05\x02\xb4\x00\x2b\x20\x02\x65\xff\xdd\xed\xec\x70\x57\x7e\xe1\x1b\x35\xd7\xe5\x21\x87\x74\x18\x17\x88\xa2\x6b\x48\x81\x60\x68\xe4\x82\xf6\xe3\xb2\x2c\x16\x65\xc8\x89\x32\xc9\xd8\x17\x24\xba\x85\xaa\xda\x75\x35\x94\xb3\x01\x57\x2d\x5b\x94\x70\x19\x10\xef\xaf\x79\x74\x27\x4b\xdd\x3c\x09\xc2\x45\x32\xb4\xb3\xda\x0d\x69\xa7\xd5\xbb\xfd\xe2\x7b\xd7\xe8\x79\x7d\xa6\xf9\xbc\x7b\xa8\xb5\x8c\xbe\x25\x1d\x16\x1f\x62\x37\x83\x33\x5c\x6d\xb7\x29\x55\xcb\xf7\x60\x77\x45\x96\x76\x57\x74\x16\x9a\x9d\xc8\x61\x2e\xf5\x25\xef\x29\x26\x54\x3b\xfa\xd3\xe2\xcf\x12\x2f\x95\xf7\x55\x8e\x8c\x26\x1d\xac\x99\x55\x32\xc2\x76\xda\x1e\x7a\x27\x4d\xd1\xd4\x32\xe9\x87\x16\xa5\x75\xb1\xa6\x79\x7c\x36\x3c\xf1\xd0\x2a\xd2\x2b\xb7\xc6\x83\x16\x8d\x01\x0f\x3b\x69\xf4\x63\x74\xeb\xc5\x2f\x1c\x74\xc2\x02\x47\xdd\xd3\xb6\x32\x52\xff\x3b\x3e\xba\xd4\x63\x98\xa1\x61\x98\x59\x37\x90\x6d\xf5\xb1\xa3\x41\xfd\xea\xf4\x10\xe2\xed\xcd\xc0\x69\x53\xeb\x39\x9a\xd5\xdf\xb3\xe0\xeb\x69\xa3\x95\x57\x52\x37\x6c\xfa\x98\xe3\x4b\xbf\xe1\x89\xa6\x1c\x9f\x42\xfb\x50\xd9\x80\x84\xf2\xb0\x9b\x2d\x64\xca\xb8\x97\xcf\x95\x8c\xa1\xa9\xf4\x4a\xb3\x88\x29\x02\x22\x14\xf8\xbf\xd1\xb2\x7b\x81\x5e\x70\x94\x7f\x87\xd0\x12\x22\x8f\x2a\x26\x29\xa2\x0a\xbc\xa2\x04\x85\x75\x32\xb1\x84\x78\x98\x41\x62\x5e\x9e\x43\x7c\x63\xaa\xb0\x08\xc6\xff\xf6\x69\xda\xa3\x80\x7f\xeb\x1b\x1e\x30\xee\x4e\xc0\xbf\x11\x21\x97\xe2\x62\x08\x05\x14\x87\xa1\x84\xe2\x32\x08\x2d\x28\x0e\x43\x2b\x8a\xf3\x21\xb4\xa4\x38\x0c\x6d\x02\x7e\xfc\x9f\xaf\x8e\xd9\x3c\xe0\x1f\x1b\xed\x86\xdd\x68\xb0\x6b\xbb\xf1\x45\x83\x59\x76\xc3\x02\x36\xfa\x06\xe2\x9d\x3a\x23\x6d\x71\x30\x29\x50\x08\x4e\x02\xcf\xea\x32\x79\x95\x4c\xb3\xba\x4c\xbe\xcc\x24\xe9\x02\x64\x7b\x5e\x97\x2d\xdb\xcb\xe6\xda\x7f\xfb\xc6\x2f\xae\xc9\xe6\xf5\x7e\xeb\x7e\xf6\x75\xcc\x65\x29\xeb\x01\xb6\x7a\x9f\x91\xf7\xdb\x87\xf3\x4a\xae\x57\x66\xfe\xee\x51\x99\xbf\xea\xf6\xee\xee\xba\x3d\x59\xe6\xef\x83\x65\xba\xad\x0a\x0e\x42\x89\x3e\x94\xf8\xf1\xe1\x5a\xca\x0c\xb5\x2c\xb3\xfe\x44\x19\x31\xa0\xad\xae\x6c\xd4\xe5\xa7\xaa\x90\x9c\xb7\xcc\xbe\xa9\x9b\x2c\xbd\xcb\x17\xbc\xdb\x1b\x37\x7e\xbe\x04\xe4\x7a\x76\x09\x28\x75\xf5\x30\xfc\x2b\xad\xf5\x08\xff\xb7\x83\xd9\x2b\x8b\x45\x0c\x12\x16\xb9\x3d\xd8\x24\x79\x1c\xfa\xfd\x21\x98\xeb\xa8\x0e\xe6\x16\x91\x2d\x84\x15\xf3\x07\x06\x52\x08\xec\x1e\xee\xc7\xff\xcb\xd8\xd5\xf7\xb4\xcd\x03\xf1\xaf\xc2\x13\x3d\xa9\x08\x4d\x69\xd2\x97\xf4\xa1\xa8\x7a\x04\xd2\xb4\x31\xc1\xd0\x06\x63\xbc\x4d\x15\x83\x68\x18\xd2\xba\x5a\x33\xe8\xfe\xe0\xbb\xef\x77\xe7\xd8\x8e\xfb\x92\x56\x2a\xa9\x1d\xfb\x5c\x5f\xfc\x3b\xdf\xf9\x88\xcf\x56\xed\xf9\x71\x14\x15\xad\x5c\x6d\x4e\x93\x76\x40\xd3\x01\xcd\x75\xff\x4e\x86\x9e\xef\x2d\xae\x13\x70\x93\x82\x1d\xb2\x88\x9e\x0a\x88\xe0\x17\x01\x11\xbb\x16\x10\xa0\x0b\x01\xf1\xb8\x14\x10\x8d\xb1\x04\xe6\x71\xf9\xd0\x4f\x25\x40\x8a\xcb\x53\x3f\x97\x00\x92\x90\x40\xc6\x67\x81\xf1\xfe\x25\x31\x8a\x52\x62\x64\x7e\x4b\x3c\xef\x23\x81\x27\x78\x25\xf0\x94\xbe\x0a\xf0\xfd\xaf\x00\xcf\x87\x02\xfc\x7e\x14\x60\xe0\x9b\x40\x8f\xde\x0b\xee\xd1\xbd\x7c\x0b\xff\xd0\x0c\x72\x3b\xdd\xb9\x7d\xa8\x37\xc3\x93\xcc\x6c\x6c\xbf\xa3\x03\x30\x26\xa3\x3e\xf4\xf1\xfe\x93\xe0\xf9\x2f\x93\x3c\x87\xcd\x32\xa4\xb6\x3d\xff\xaa\xe1\x8f\x1a\xfe\xc3\xb9\xb6\x38\x77\xfd\xe3\x6b\x8f\x2b\x8b\xa9\x9c\x33\x5e\xa1\x07\x8f\xce\x4e\xcf\x78\xb3\x4c\xad\x56\x27\xdb\x83\x45\xd5\x6b\x45\x51\xd4\x88\x62\x7c\xce\xa3\xa8\xcf\x9f\x5d\xdc\x42\x43\xff\x4f\x65\x7f\x96\x85\x53\x49\x3b\x2d\x96\xee\xa1\x30\xad\x58\xb5\xae\x62\x7c\xe7\x81\x0a\x5d\x0e\xab\x04\xe4\xb9\x54\xbf\x3b\x98\x65\x26\x4d\x33\xb3\x92\xb3\x55\x36\x9e\xb2\x8e\xe2\xb4\x5d\x56\x98\xe3\x26\x6e\xb8\x4a\xd3\xa8\x5a\x5e\x3d\x8e\xed\x3a\xb2\x3e\x47\xbb\xa0\x6c\xcb\xc0\xb6\x2b\xd5\xc0\x76\x4d\xa9\x23\x4e\x5a\x6d\xa3\x17\x4c\x5a\x21\xa9\x62\x47\x21\x8d\x58\xc4\xab\x19\x23\x7b\xc7\x61\x0c\x37\x36\x65\x6c\x8e\xb6\x92\x31\xbb\xd0\x0f\x6c\xd7\x98\x31\x95\x9c\xef\xb5\x61\xac\x28\x76\x18\x7b\xc4\x8c\xb4\xc2\x98\x5d\x66\xa3\x35\x13\x73\xfe\x57\xc1\x75\x3b\x49\xbb\x3b\xdb\x0e\xdf\x74\xab\x91\x93\x15\xb5\x21\xf7\xdc\xc6\xa6\xec\x6b\xcf\x4a\xa0\xbb\xcf\xac\x53\xc2\xe5\xca\xb0\xcd\x45\xee\x68\xd2\xfc\xbe\xe9\x4a\x84\xc5\x61\xe5\x32\x44\xa9\x0a\x47\x6b\x54\x59\xe4\xda\xe3\x12\x98\x6e\xa8\x81\xe3\x45\xb3\xdb\x3f\x3b\x6c\x5c\x68\x18\x50\x6f\x93\x53\xfc\x67\x2c\x33\xba\x29\x85\x53\xc4\xa5\x8d\xc9\x11\x20\xc2\x77\x37\xdc\xc3\x5f\xfc\x1f\x2e\xf4\x5c\x29\xb8\x22\xae\xad\x98\xd2\x9d\x76\x0b\x57\xb6\xb2\xc3\xb8\xd7\xa2\x82\x24\xea\x70\x79\x77\xaf\x95\x26\x61\xaf\xd7\x4b\xf0\xd5\x8e\xbb\xa0\x4d\xbe\x87\x43\xfc\xce\x8d\x91\x09\x8e\xfb\x6a\x73\x5d\x27\x17\xbb\xd9\x76\xa4\xb2\x0a\x74\x9a\xb2\xc8\x75\xdd\x32\x37\xab\x29\x69\xdc\x34\x1d\xa7\xdb\xa5\x74\x52\xae\xd3\x52\x19\x32\x3b\x63\x9b\x2c\xee\x92\x2d\x69\x7e\x9e\x1e\xa5\x9b\x29\x1a\x25\x1b\x38\xa4\x7f\x5a\xbe\x12\xc7\xd0\x67\x98\x8c\xbd\x20\xbc\xc8\x51\xcc\xb9\x43\x2f\x58\x3b\xaa\xba\xee\x8f\x2d\xff\x61\x79\xf5\xf8\x9f\x41\xc9\xa8\x32\x04\x77\x2b\x09\xac\x8e\xae\xd5\x56\x10\x1f\x6d\xf9\x93\x0a\x62\x2d\x2f\xa6\x3a\x54\x4b\x15\x2f\x66\x76\x29\x08\xc8\xf1\xb1\xba\xba\x9d\x65\x8b\xea\x50\x59\x95\xad\x3b\xee\x4d\x3c\xef\xb3\x6c\xf0\x53\x6e\xbf\x66\xc1\xfe\x30\x53\x1e\x02\x3d\x1a\x84\x25\xf7\x0d\x63\xfb\x1a\xb4\x5c\x12\x91\x77\x98\xa1\xb1\xc2\xd9\xfe\x0e\x16\x00\x4b\x8b\x63\x5d\xd8\x00\x59\xf6\x60\xcf\xfa\x38\xac\x53\x01\xab\xe8\x47\x49\xa1\x98\x9f\xb3\xc1\x70\xee\xdc\x5f\xc3\xc6\x0d\x9f\xd1\x08\x61\xe4\xb7\x82\xe8\x68\x92\x03\x02\x8c\xd2\xde\x1a\x30\x9c\xab\x02\x4c\xc9\xf7\xaa\xab\xaf\xc7\x8c\xf5\x74\x6b\x9a\x35\xb0\xd1\xce\x6e\x8b\x9c\xc5\x26\xd6\x80\xa7\xe4\xc9\x36\x14\xd5\xf8\x71\x3c\xd1\x05\x4d\x35\x84\x1c\xaf\x72\x41\x51\x8d\xa2\x45\x3f\x39\x80\xf4\x89\x81\x74\x60\x37\xe7\x3f\xbb\x78\xe2\x41\xd3\x98\xe2\xb9\x75\x43\x5c\x3d\x67\x68\xbb\x08\xb6\x42\x7b\x67\x5f\xf2\xa5\x7a\x83\xde\x44\x98\xc8\xf1\x34\x3d\x47\xa5\x37\x7e\xf3\xe0\x69\x2a\xe7\xf7\xcc\x6b\xf8\x51\xa0\x06\x8f\xdc\x95\xe2\x9e\x37\xa2\x35\xa9\xae\x17\x4e\xa4\x3e\xc9\xe5\x31\x1f\x65\x55\xb4\xd4\x95\x26\x55\xf2\xc2\x17\x43\x34\x03\xcd\xba\xee\x5d\x9e\x1c\x73\xef\xde\xb0\xd0\xff\x1b\x00\x00\xff\xff\xdc\x75\x3e\x08\x4e\x35\x02\x00") +var _webUiStaticVendorRickshawVendorD3V3Js = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xbc\xfd\x7b\x93\xdb\x36\xd2\x28\x0e\xff\xff\x7e\x0a\x8f\x4e\x56\x05\x90\x4d\x8a\xd4\x78\xec\x84\x1a\x48\x15\x27\x4e\xb2\x79\x32\xce\xc5\xce\x65\x57\xab\x4c\x71\x28\x48\xc2\x9a\x02\x14\x10\x9c\x91\x76\xa4\xef\xfe\x16\x00\x5e\x40\x49\xe3\x38\xfb\x9c\xf3\x2b\x97\x47\xc4\xbd\x71\x6b\x74\x37\xba\x1b\xf3\x4b\xb2\x28\x79\xa6\x98\xe0\x08\x3f\xd6\x9f\xcf\x38\xe2\xf8\x51\x52\x55\x4a\xfe\x8c\x97\x79\x7e\x41\x78\xbf\x7f\xc1\x8a\x37\xe9\x1b\xc4\xf1\xa1\xc9\xa7\xdc\x7c\x61\x4e\xf9\x52\xad\xda\x54\xaa\x53\x17\x42\xa2\xfb\x54\x3e\x53\x24\x1e\x71\x4f\xfd\x2d\x1e\x61\xe5\x91\x38\x1a\x55\xc5\x54\x9b\x5f\x22\x0e\x0a\x3f\x2a\xb9\x6b\x4a\xd1\x67\x8c\x3f\x53\xf8\xfb\xbb\x7f\xd3\x4c\x85\x73\xba\x60\x9c\xfe\x20\xc5\x86\x4a\xb5\x43\x3c\xdc\x48\xa1\x84\xda\x6d\x28\x50\x78\xbc\x4f\xf3\x92\x26\x6a\x4a\x67\x40\x79\xb9\xa6\x32\xbd\xcb\x69\x72\x11\x1f\xf0\x21\x4b\x55\xb6\x42\x12\x3f\x3a\x45\x88\x3a\xb4\x4d\x97\x08\x3f\xb6\x21\xd6\x09\x09\x0d\x16\xd0\xa6\xa3\xce\x80\x69\x10\x25\xa1\x61\xba\xd9\xe4\x3b\xa4\x20\x95\xcb\x72\x4d\xb9\x2a\x70\xdd\x3d\x49\x08\x51\x13\x9e\x48\xa7\xb1\xd4\xf6\x93\x2d\x90\xd2\xdd\xe3\xb8\x1e\x8a\x91\x22\x2a\xcc\x56\xa9\xfc\x5c\xa1\x08\x87\x4a\xfc\xbc\xd9\x50\xf9\x45\x5a\x50\x84\x7d\x15\x16\xe5\x5d\xa1\x24\xe3\x4b\x14\xe3\x51\x33\x42\x24\x02\x49\xbe\x14\xd5\xe8\x8f\xe4\x98\x8e\x7c\x9f\x5a\xd8\x4a\xf2\xa5\x98\xd2\x99\xaf\x46\x6c\x81\xca\x4e\x63\xa5\x03\x50\xd6\xe9\x6f\xde\x09\x15\x66\x12\xdb\x09\x77\x66\x14\x24\xa1\x50\x92\x20\x06\x46\x64\xdd\xbe\xef\x97\xd7\x6c\x84\x91\x22\x72\x5a\xce\x42\xc1\x71\xbf\xaf\xea\x01\x5a\xb1\xe2\xcc\x18\xf1\x83\xed\xc8\x74\x06\x92\x70\xfa\xf0\xac\x6c\x16\x47\x28\x78\xbb\x40\x15\x94\xb6\x5b\x0c\x04\x91\xe1\x92\x2a\xa4\x9a\x4a\x9a\x6a\x2b\x40\xae\x87\x13\xd1\xef\x8b\x50\xf0\x04\x89\x7e\x1f\xe9\x2f\xa2\xd7\x32\x50\x42\xc3\x22\x67\x19\x45\x11\x30\x42\x43\xc6\xe7\x74\xfb\xfd\x02\x09\x8c\xc3\x4c\xf0\x2c\x55\xa8\xce\xc0\xfc\x18\x63\x90\xa1\xa4\x6b\x71\x4f\x91\xc2\x18\xca\x7e\x9f\x86\x9b\xb2\x58\x21\x19\x16\x1a\x02\x78\x14\x3c\x29\x0f\x18\x03\xc7\x07\x70\x96\xf3\x02\xe1\xc7\xb5\x08\xe9\x3d\xe5\x2a\xdc\x48\xf3\xfb\x25\x5d\xa4\x65\xae\x90\xb3\x87\x56\xce\x90\x72\x50\xa4\x2e\x32\xe2\x44\x85\x85\x28\x65\x46\x5f\x9b\x30\x56\x84\x9f\xd9\x35\xcb\xee\x2e\xd3\xe3\xa7\xfb\xa8\x57\xc5\xf1\x98\xe8\x85\x71\x2d\x47\x58\x4d\x9b\x94\x29\x9d\xcd\x48\xe1\x8c\xa3\x0a\xc5\xa2\x1d\x72\x0a\xf2\x74\xdd\x97\x76\x8f\x9a\x99\x20\xa5\x0b\x63\x0b\x7c\x19\xaa\x54\x2e\xa9\x22\x1c\xea\x38\x52\x82\x9a\x96\xa1\xde\x7b\xb3\x6a\x41\xe8\xea\x0f\x0b\xc6\xd3\x3c\xdf\x35\x63\x45\xd8\xe1\xd0\x19\xc8\x8d\x83\x65\xbe\xd3\xbb\xf1\x27\x81\x81\xb7\xe9\xf3\x36\xbd\x57\x47\xf6\x08\xd1\x0d\x89\xc5\x33\x3e\xe1\x89\xb3\x65\xab\x7a\xbe\x31\xbb\x7a\xc5\x0a\xec\xec\x83\xfb\xff\xa2\xa2\xaf\xce\x55\xb4\xb6\x3b\xdc\xc1\x84\xf8\x51\xe7\xa9\x16\xd2\xe7\x4a\x49\x76\x57\x2a\xda\x41\xa6\xf2\x89\x4c\x6f\xde\x22\x1e\x16\x9b\x34\xa3\xc0\xc3\x5c\x64\x69\x8e\xbb\x88\xcb\x14\x2a\xa8\x72\xaa\x05\x85\xbb\xe8\xec\x24\xcf\x69\xad\x9d\x32\xa2\xc2\x6e\x94\x3c\xb5\x79\xf5\x5e\x22\x84\x4e\x9e\xe8\x57\x72\x0e\x2a\x8a\x5d\x2c\xf8\xbf\x69\xe1\xcc\xa0\x9c\xb6\x78\xa6\x8f\x14\x1f\x6a\xac\xa3\x17\x2b\x2f\xc2\x3f\xca\x34\x67\x8b\x1d\xe2\x18\x6c\x83\x6a\x52\x65\x9e\xc8\x84\x26\x67\x16\x42\x9b\x21\x4d\x44\x52\x7f\xb3\xa4\x6c\x3b\xb7\xeb\x1c\x8c\x4a\xb2\x35\xc2\xa1\xa4\x9b\x3c\xcd\x28\x1a\xfc\xab\xf0\x07\x4b\xe8\x3d\xeb\x39\xc3\x71\xe3\x96\xa0\x0f\xcf\x7e\xa2\xcb\xd7\xdb\x0d\xea\xa1\x49\xf2\xfb\xfe\x5f\xff\x2a\x7c\xdc\xf3\xd7\x22\x94\xf4\x8f\x52\x98\x01\xf6\x75\x92\x4e\xd8\x7f\x82\x7b\xd0\x5b\xba\x95\x6d\xcf\xac\xbf\xf6\xc0\x08\x62\x83\x08\xca\x11\xe6\x53\x3a\xb3\xc3\xae\x8e\x16\xa2\x9b\x1b\xe4\x93\x53\x74\x52\x8f\xc4\x07\x4e\x9a\x1e\x17\x9b\x9c\x29\xdb\x5f\x1c\xae\xd3\x0d\xba\xc3\x23\x7b\x2e\xf1\xe6\xbc\x7a\x6a\xbb\x29\x3d\xfc\x2d\x50\x77\x7a\x7c\x2c\x8a\xd3\x43\x35\x3a\x46\x4a\x06\x53\xe9\x53\x8e\xd0\x30\xcb\xd3\xa2\xf8\x8e\x15\xaa\x3e\xec\xe4\xa4\x0c\xd3\xb9\xc6\x13\x49\x59\x23\x73\x5e\x83\x42\xf5\x49\xd2\xae\xd2\x9e\x29\xdd\xc3\xfb\x7d\xaf\x37\x92\x13\xa4\xc2\x3c\x2d\xd4\xdf\xf5\x21\x41\x22\x50\xa1\xa2\x85\x42\x25\xde\xef\x69\x77\x75\x57\xe5\x60\x87\x4a\xbf\xf7\xac\xe7\x73\x8c\x71\xf2\x74\x9e\x66\x35\x28\xb3\x10\xb0\x8b\x3e\x6e\x6b\x8a\xe3\x14\x37\x14\x6a\x97\xd3\xaa\x0b\x2d\x21\x74\x16\x21\x98\x9c\x05\x55\x6d\x36\x53\x69\x17\x2f\x58\x0a\xe6\xc3\x3b\x50\x4e\x3e\xd4\x74\xf2\x64\x6b\xd2\xdd\x6d\xd5\xd6\x92\xe7\x37\x54\x67\xf3\x3c\x9c\x59\xbd\x73\x9a\x53\x45\x9f\xe9\xb6\xa6\x7c\x76\x8a\x34\xa7\x7c\x46\x54\x77\x14\x3e\x0e\xb9\x74\x2b\x4e\xea\xba\xe8\x31\xe0\x4f\x60\x82\x32\x91\x6d\xab\x6f\xff\xf4\xfc\x40\xa7\x58\x07\x57\xf8\xe3\xf4\x68\xd9\x8a\x30\x93\x34\x55\xf4\x75\x4e\x35\xd4\xe7\x0e\x82\x33\x27\xd2\x99\x62\x66\x8a\x78\xba\xa6\xa6\xf4\xcf\x3f\xfd\x5d\xd3\x2a\x2d\xdc\xaf\x5b\xb8\x1f\x6f\x6f\xe7\xa9\x4a\x6f\x6f\x13\xee\x64\x78\xef\x20\xa7\xd3\x06\xbf\x17\x76\x74\x3b\x75\x7e\xee\x14\x39\xa6\x43\xf6\x7b\x3b\x0e\x69\x91\x51\x3e\x67\x7c\x89\xc1\x21\xf2\x5a\x4a\x5b\xf5\xfb\x74\xc2\x91\x0a\x6b\xa0\x80\x36\x9f\x38\xb9\x50\xc1\x05\x75\x5a\x7c\x53\x2d\x9b\x0e\x61\xcc\x5d\xba\x98\xfa\x3e\xae\x93\x4b\x60\x44\xa3\x2d\x10\x24\x82\x94\xb0\x3a\x5f\x3a\x16\x23\xe1\xfb\x18\x95\x84\x4d\xc5\x4c\x53\xaf\xa8\x04\x01\xd4\x21\x57\x9b\x26\xdf\x1d\x53\x26\x7f\xef\x52\x26\x7f\x34\x48\x0b\xe8\x09\xc6\x92\x50\x02\xb3\xc9\x02\x52\xc2\xa7\x6c\x16\x96\x9b\x79\xaa\x28\x64\x24\xad\xe1\xd1\xf0\xb2\x0b\x42\xfb\x7d\x44\x09\x03\x45\x22\x0c\xe5\x98\xa8\x7e\x1f\x29\x52\xfa\x31\x1e\x5d\x20\x41\xd2\xa9\xd2\xa0\xfa\xbe\xba\xce\x46\x0d\xa4\xc2\x19\x9d\xff\x54\x3b\x82\x13\xb3\x18\x6e\x6f\x95\x4c\x79\xc1\x74\xda\xed\xed\x88\xeb\xb2\x3c\x4c\x33\xc5\xee\x1d\xa4\xfb\xc5\x59\x44\x64\xb1\xb0\xd9\x29\x62\x36\x32\x90\xb4\x27\xb4\xa1\x03\x35\xee\xa5\x9c\x1a\x86\x0e\x54\xf8\x09\x06\x77\x9b\x89\x19\x3e\xdd\xa9\x25\xc9\x91\x82\x1b\x81\xda\x3d\x8a\x47\x32\xcc\xd2\x3c\x37\xd5\x63\x43\x64\x69\x2c\x7e\xd2\x82\xad\x93\x94\x50\x86\x9f\x10\x8a\xa1\x0c\x6f\x5d\x5c\x50\xa3\x39\x05\x94\xb8\x27\xeb\xef\xb7\xb7\x82\xa3\xe9\xef\xe1\xec\xcc\xd9\xfa\x49\xaf\x65\xb1\xa4\x61\x42\x35\x0c\x9a\x65\x23\x32\x5c\x1b\x76\x92\xe2\x1a\x72\x03\x81\x9c\x8d\x9e\x1c\x06\x35\x8d\x67\x60\xe0\xeb\x8e\x84\x9c\x1d\x0c\xef\x23\x48\x4f\x03\xd3\xf3\xb9\x5e\x08\x0d\x47\xd2\x0b\x7b\x18\x72\xf2\xe5\x28\x1d\x47\xfd\x3e\xd2\x07\x6b\xcb\x03\x46\x90\x62\x7b\x84\x15\xe4\x9f\xc2\x70\x43\xed\xb1\x58\x98\xec\x05\xe4\xe4\xdf\x18\xd2\x89\xc1\x53\x89\x9a\x64\x09\x6b\xc7\xe5\x4b\xbb\x5f\x4e\x0e\xd2\xfa\x50\x68\x68\xf9\x86\x30\xa7\xa0\xa6\xd1\xac\x5e\x40\x76\x1f\x8e\x34\x2b\xc0\x5d\x24\xab\xce\x90\xf4\xf2\xe0\x2c\xc5\x7f\xdb\x86\xed\x26\xb5\x50\x9c\x6c\x0e\xee\x2e\x33\xb3\x8f\x25\xcd\x53\x45\xe7\xef\x0c\x5b\x31\x92\xfd\x3e\x32\xbc\xf5\x7e\xff\x69\x5f\x86\x99\x58\x6f\x52\x49\xbf\x14\x99\x59\x3b\x3f\x08\xbb\xb2\x35\xc7\xa6\x0f\x6a\xbb\x8a\xba\x08\xea\xbb\x66\x43\xf4\xc2\xb9\x4c\x97\x45\xb9\xd9\x48\x5a\x14\x41\xcf\x7f\xe6\xfb\xbf\x09\x50\xa4\xa7\x44\x99\xad\xf4\x74\xea\x99\xa1\xa4\x57\xd0\x9c\x66\xaa\x50\xa9\x54\x3a\x46\x92\x9e\x29\x59\x87\x4b\xd2\xcb\x72\x96\xbd\xd7\xdf\x4c\x8f\x9f\xcd\x8f\x6e\x05\x0e\x0d\x6a\x5b\x98\x5f\x5a\xfd\x4a\x58\x60\x10\xe4\x4e\xd8\xd3\x13\x52\x22\xa6\xbf\x88\x59\xb3\x7b\x75\x80\xf4\xb8\xe0\xb4\xe7\xe0\xc7\xa3\x83\x91\xe9\x9a\x4a\x43\xba\xe2\x83\x09\x70\x1b\x00\x5b\x3e\x05\xbd\x41\xab\x5c\xae\xac\x07\x61\xa0\x08\x1f\xe0\x22\xc2\x50\x50\xf5\x8e\xad\xa9\x28\x15\xa2\x10\x75\x68\x91\x6f\x2a\xa1\x4c\x98\xad\x52\xbe\xa4\xf3\x77\x7a\x48\x68\x61\xd0\xcf\x71\xe4\x34\x9a\xd9\x15\x49\x09\x0f\xc5\x03\xa7\xf2\xed\x2f\x5f\x57\xa7\xd0\x7e\xcf\x47\x6c\x81\x68\x75\x36\xbd\xfd\xe5\xeb\x1f\x04\xe3\xaa\x95\xa1\x74\xe3\x11\xd6\xb9\xa3\xf1\x27\x9a\x77\xbf\x15\x61\x91\x49\x91\xe7\xbf\xed\xf7\xcd\xf7\x3f\x30\x7e\xa4\xce\x20\xf7\xee\xc4\x7c\xd7\xc3\x7a\x25\x52\x3e\x47\xbd\xe2\x7e\xd9\xc3\x76\x64\xd1\xe3\xa6\x5a\x10\x49\x2f\xbd\x2b\x44\x5e\x2a\xda\x03\x25\x36\x49\x04\x39\x5d\xa8\x24\x82\x75\x2a\x97\x8c\x27\x11\x6c\xd2\xb9\x3e\x91\x92\x08\xee\x84\x9c\x53\x99\xd8\x09\x38\x40\x8f\xad\x37\x42\xaa\x94\xab\x5e\x43\x39\x4e\xa3\xd9\x34\x9a\xe9\xbd\xf7\x36\x93\x94\xf2\x2f\xde\xdd\x20\x3c\xfa\x44\x90\x0b\x54\x86\x8b\xfd\xbe\x0c\x29\x86\x9a\x66\x42\x0d\x31\xf4\x89\x98\x20\x19\x6e\x89\x0a\x37\xe9\x92\xfe\x06\x32\xdc\x55\xdf\xff\xc0\x49\x95\x92\xe5\x8c\x72\x55\xa7\xd9\xd0\x3f\x30\x48\x8b\x7e\x24\xdb\xbe\xd3\xf8\x7b\x21\xe4\x1a\xf1\x23\x00\x42\xc6\xef\xa9\x2c\x28\xc2\x18\xa6\x32\xdc\xea\x3a\x66\x07\xcb\xae\x9b\xbc\xaf\x44\x69\x8e\xdd\x2f\x4c\xad\x3f\xe9\xd1\xab\x77\xe0\xb4\x69\x39\xd0\x47\xe2\x42\x05\xbc\x8a\xf8\x8e\x2e\x34\x2e\xaf\x20\x09\x58\xa8\xc4\xa6\x49\x7c\x27\x36\x0e\x51\xf6\x95\xcb\xcb\x8c\xa3\x49\x9c\x44\x63\x3e\x09\xe2\x24\x6a\xf3\xfc\xd0\xc9\x13\x4f\xa2\x24\x88\xc7\x7c\xf2\x4a\x24\x37\xa9\x5a\x85\x69\x26\x8a\x0e\x5d\xfb\xfd\x51\xfe\x6f\x85\x2d\x10\x7c\x5b\x97\x28\x18\xef\x94\xf8\xa9\x2d\x81\x10\x27\x26\x13\xdd\x6e\x34\xc9\x15\xc4\x03\x8e\x07\xc3\x36\xef\x3f\x9e\xce\xeb\x1f\xe7\xfd\xfb\x13\x79\x87\x9e\xa9\x19\x0f\x10\xf7\x63\x07\x8e\x9f\x9d\xfc\x55\x76\x03\xea\x60\x88\xb1\xe7\x10\x0b\xff\xec\xc8\xdd\x7e\x39\x92\x3a\xea\x93\xeb\xb7\x13\x12\xbe\x8e\xb1\x24\xff\x8a\xd8\xd3\x30\x2c\x88\xb2\x1f\x39\x71\x4e\xf3\x4f\xce\x9c\xe6\xee\xa0\x5e\xbe\x88\x26\x3c\x20\x97\x2f\x22\x3d\x5f\xfa\x04\xf1\x75\x00\xc3\x0b\x3d\x7d\xcc\x47\x22\x60\xd8\xe3\x83\x17\x51\x12\x7f\xaa\xa3\x44\x32\x7c\xee\x26\xa1\xe1\xf3\x28\xe0\x58\x67\x60\xee\x09\xdf\x36\x62\x7a\x2f\xf5\xf2\x43\xc3\xab\x2b\x4f\xb7\x8f\x0f\x95\x48\xaf\xa1\xaf\x48\x2d\x68\x9e\x44\x09\xe2\x7f\x33\x30\x5c\x47\x13\xee\x6b\xc8\x38\xa8\x2a\x5d\xe9\xf4\x68\xac\x26\x51\xa2\xc6\xf1\x24\x4e\xf4\x01\x1f\x8d\xe9\x24\x4a\xa8\x09\x53\x10\x24\xbc\x1a\x13\x3a\xa1\x1e\x8a\x7d\x85\x13\xea\xab\x80\x7a\x0a\x18\x19\x7a\x34\x10\x20\x14\x2a\xf5\x6c\x0d\x35\x51\x85\xb8\xf9\x13\xe8\x90\x33\xc4\xaf\xce\x4c\xc4\xaf\x27\x13\xf1\xeb\xf9\x89\xc8\xce\x4e\xc4\xb7\x47\x55\xd6\xfd\x35\x87\x76\x84\xa1\xee\x9f\x41\xb2\x11\x86\xaf\x11\x05\x33\x72\x66\x53\x78\xe4\x47\x81\x3d\x05\xed\x4a\xc2\x9e\xcb\xbe\x7f\x7d\x06\xe0\xff\x39\x01\xf8\x7f\x3a\x00\xe7\x35\xc0\x69\x0d\xf0\x9d\x0b\xf0\x8f\x75\x66\x8b\xac\xf5\x90\xbd\xc0\x83\x38\x7e\x01\x25\x91\xbe\x1a\x5c\x45\x11\x30\x22\x03\x3a\x18\x46\x8d\x64\xbf\x24\x4a\x33\xca\x5e\x91\x82\xd4\x9f\x12\x7b\x8b\x14\x98\xfe\x64\xd8\x5b\xa5\x7a\xf4\xa5\x42\x97\xe1\xf0\x79\xf4\xfc\xea\xf9\xd0\x2b\x83\x38\xbc\xba\x7c\x19\x5f\x7e\x7a\xe5\xc9\x20\x7c\xfe\xd9\xa7\x57\x97\xf1\x73\x8f\x61\x90\x0a\x05\xe1\x67\x2f\x3e\x1b\xbe\x78\xe1\x95\x7e\x1c\x7e\xfa\xf2\x45\x14\x47\x9f\x7a\xd2\x0f\xa3\xe7\xf1\xd5\xd5\x8b\x2a\x53\x18\x5d\x5d\xbd\x78\x7e\xf9\xdc\x2b\x83\x70\x18\x3d\x8f\x86\x57\x9f\x79\xd2\x8f\xc3\xe8\xea\xe5\x70\x78\x35\xf4\x98\x3b\xb1\x5c\x1d\x0f\xd4\x38\x9a\xbc\x42\x16\x99\xa8\x94\x0f\x11\x05\x85\x3d\x9e\x56\x23\xfd\x87\x54\x48\x79\xca\xa7\x1e\xc5\xc0\x71\xf2\x0a\x45\x83\x08\xf4\xff\xce\x95\x48\xe7\x4e\x64\x1c\x0e\xa3\x17\x9f\x7e\x76\x19\x5d\x3e\x9f\x70\x8f\x7b\x9a\x03\x0c\x9e\x0f\x86\x9f\xe1\xc1\xcb\xf0\xe5\xa7\x2f\xa3\xcb\x97\xce\x7d\xc9\x51\xd1\x28\xfa\xf4\xd3\xab\x17\x13\xd3\xfa\x46\x68\xae\x38\x1e\x5c\xe2\xa4\x2e\xe8\x71\x5f\xd7\xe4\xf0\xc2\xea\xe9\x9d\x86\xc2\x28\xba\x8c\x9e\x8f\x09\x9f\xc4\xc3\xf0\xb3\xa1\xc7\x13\x3d\x2c\x57\x5e\xa7\xf6\x61\xf8\x1c\x07\x3a\xda\x1d\xa7\xd2\xad\x56\x28\xc4\xc7\xe3\xf8\x05\x0c\xaf\xae\xfa\x7c\x3c\xfe\xd4\x7e\xb8\x52\x05\x37\xbb\x29\xeb\xf7\x7a\x8e\x60\xf1\x64\xd4\xe9\xc3\xb3\x54\x9d\xac\xcf\x26\xaa\x92\x89\xd6\x0b\x74\x79\x76\x81\x66\x6e\xa3\xf1\x8b\x31\x9f\xf4\xa2\x9e\x6f\xfa\xb6\x4e\xb7\x48\x4f\x51\xa8\xc4\xdb\xea\xf6\xe4\x05\xb6\x47\xc6\x9a\x71\x3d\x38\xc7\x89\xce\x55\x88\xea\x2c\x7c\xcd\xb0\x55\xfc\x62\x04\x19\x89\x34\x89\x22\xc9\x00\x4d\xd3\xe0\x3f\x33\x1f\xff\x0b\xa1\xd0\xc3\xff\xc2\x03\x16\xd2\x2d\xcd\x34\x6e\x2b\x1e\x98\x66\x15\x4a\x22\xa7\xc3\x59\x25\x0e\xeb\x41\x0f\x83\x9c\xc6\x33\xfc\x98\xa5\x05\xed\xad\x8a\xbc\x97\x54\xa0\x53\xb4\x49\x65\x41\xbf\xca\x45\xaa\x50\xa9\xe9\x29\xe8\x44\xc4\x33\x3c\x88\xa3\xa8\x1b\x39\xb4\x91\x78\x64\xaa\x93\xcb\xbb\xa6\x3a\x85\x96\x75\x35\xcb\xaa\xb8\xfd\x18\xce\x70\x4d\x8d\x20\x46\xe6\x69\xc5\x3e\xe0\x89\x42\x2c\x94\xc0\xc2\x25\xb0\xf0\x0e\x27\xa8\xb9\xfd\xeb\xfd\x9f\x1e\x21\x84\xb7\xd7\x53\xfd\x3e\x7a\x6e\x62\x2c\xa3\x3a\x41\xa2\x4d\x8d\x31\x08\x9f\x18\xae\xb6\x8e\x1a\x62\x48\x7d\x92\x42\xd6\x46\x5d\x62\xc8\x7c\x92\xe1\xe4\xa5\x53\x4f\xbf\x6f\x2a\x72\xee\xba\xe0\x12\x9b\x8a\xda\xa8\x4b\xb8\xc2\xa6\xa2\x36\xea\x0a\x5e\x62\x4d\x4c\x9b\x81\xf9\x3b\x57\x48\x40\xfc\x42\x97\x6b\x22\x52\x13\x91\xb5\x11\x99\x8e\xc0\xa0\xb3\xa6\x90\xb9\x2b\xbe\x38\x9d\x76\xd2\x2c\x18\x3e\x20\x7a\xcd\x28\xfb\x43\xcd\x8f\x6e\xb9\x59\x6c\xb6\xa8\xa6\xe6\x03\x06\x19\x41\xc2\x67\x78\x30\x6c\xee\xa9\x26\xa8\xd4\xa7\x52\x36\x49\x07\x26\x29\x49\x07\x68\x18\xe8\xf3\x53\xb3\x39\x84\x88\x09\x52\x01\xc5\x83\xd4\x47\x74\xac\x26\x2f\x92\x08\x27\xca\x44\x53\x7d\xb6\xa6\xfe\x50\xe3\x10\xa5\xbf\x9e\x83\xf4\xc8\x8b\x48\xd3\x8c\x44\xe3\xa1\x92\x64\x9a\x51\x8c\xc7\xd9\x24\x4a\x24\x86\x5f\x8c\x8c\x21\x73\x7a\xb6\x68\x7a\xc6\xc9\x4a\xcf\x38\x28\xfd\xab\x30\x50\xfd\x4b\x2d\x65\x2b\x09\x55\x08\x85\xcf\xe3\xe1\xf3\xab\x17\xcf\x3d\xee\x87\x97\x57\x2f\xaf\x5e\xbe\x88\x3d\xe5\x87\xf1\xa7\xd1\xf3\xcb\x97\x57\x1e\xc5\x83\x22\xc5\x50\xda\xbc\xc3\x78\xf8\xe2\xe5\xf0\x33\x9d\xf7\x65\x7c\x15\x5f\x0d\x87\x3a\x6f\xf4\x72\x18\xdb\xac\x8b\x14\x03\xb3\x59\xa3\xf8\xb3\xcb\xcb\x4b\x93\x35\x8e\x3f\x8b\x3f\x33\x39\x3f\xbb\xd2\xe8\x29\xd6\x59\x57\x69\xc3\x0e\x7e\x8d\xe2\xf8\x85\x3e\x17\x5e\xc0\x55\x14\x79\x48\x06\x25\x86\xa1\xfe\x2a\x83\x0e\x2e\x5f\x29\x97\xc8\xb2\x73\x72\x4d\xc2\x48\x9f\x2c\x13\x3e\x30\x28\x2f\x69\x50\x1d\xe2\xbe\x41\x72\x03\x83\x02\x41\x63\x3d\xe7\x3e\x4d\xb5\xcc\xa7\xb3\xcd\x1a\xde\xba\xf7\xb7\xce\x46\xa8\xd7\x6d\x10\xe3\x89\x8b\x73\xc3\xab\x2b\x4f\xe1\xc4\xbd\xc6\x52\xff\xc5\xf5\x92\x2b\x85\x9b\x77\xce\x07\xe7\xda\x4a\x9d\x13\xcf\x29\x70\x2f\xef\x86\x84\x9c\x5c\x07\xf6\xfb\x67\xc0\xa0\x86\xb1\xa6\x40\x89\xe5\x22\xd7\xca\xd4\xc4\x41\x76\x2e\xb8\xaa\x75\xa4\x5b\x38\x11\xe5\x68\x12\x2d\x0b\x0b\x95\xaa\xb2\xd0\x28\xf2\x42\xf5\xfb\x59\x28\x69\xb1\x11\xbc\xa0\xef\xe8\x56\xed\xf7\x6a\x4c\x86\x51\xd4\xef\x5f\x46\xd1\x58\xed\xf7\x97\x91\xc6\x25\xd5\xe5\x3f\x27\x15\xc7\xce\xf4\xda\x6d\xee\xee\xeb\x13\x28\xa4\x52\x0a\x59\xe7\x90\x18\xee\x05\x9b\x3f\x8b\x0e\x22\xcc\x45\x3a\xaf\xe3\x39\x3e\xd0\xbc\xa0\xc7\xd9\xb3\x8a\xdc\x24\x8f\x07\x10\x9a\x7b\x9c\xb3\x62\x63\x5a\xe8\xdd\xd1\x85\x90\xb4\xa0\x7c\xde\x83\xde\x46\x8a\xa5\xa4\x45\xd1\x83\x9e\xae\xb5\x07\x3d\x53\x4d\x4f\xef\xeb\xc7\x83\x46\x3e\x9a\x1e\xbf\xf9\xee\x1b\xa5\x36\x3f\xd1\x3f\x4a\x5a\x28\xc8\xcd\x90\x55\xcb\xe4\xe2\x56\x84\xbf\x7d\x29\xd6\x29\xe3\x55\xfa\x7e\xdf\x7b\x60\x6a\xf5\x85\xa4\x73\xca\x15\x4b\xf3\xa2\xc7\xf8\xb3\x6c\xbf\xbf\x18\xfc\x8e\x56\x4a\x6d\x50\x81\x27\x09\x9e\xfc\x6b\xf0\xaf\xc1\xc0\x5e\x33\x70\xbc\xdf\xa3\xaa\xad\x4e\x5d\x18\x7a\x82\x1b\xc0\x74\x15\x93\x2c\xb4\x21\xa2\x3f\x0c\xa0\xa4\x4c\xf4\xb7\xa4\xe9\x7c\xa7\x67\x82\x5a\x4e\xdd\xd5\xf6\xd0\x53\x92\xce\x77\x6f\x75\xea\xf8\xb2\xdf\x2f\x11\x3e\x80\x2e\x54\xf7\x9d\x9c\x4a\x63\x4e\x65\x42\xdc\x08\x80\x44\x58\x17\x72\x06\xfa\x44\x0a\xa4\x0e\x07\x60\xe1\x8a\xa6\x73\x2a\x9d\xca\x1d\x29\x14\xd7\xb4\x65\xaf\xa7\xcf\xe3\xef\xc4\x43\xad\xfb\x00\x67\x2e\xf7\xd3\x29\x9f\xd9\xe3\x89\x10\x55\x4b\xf1\x4d\x64\x6a\xee\x02\xfc\x5e\x0f\x18\xd6\xed\xad\xd9\x9a\xbe\xdb\x6d\x68\xa7\x3b\x4f\x48\xa6\x27\x48\x11\x5b\x27\x9f\xe8\xdf\x84\xdb\x7a\x12\xa5\x6b\x6a\x96\xf0\x47\xd7\xa6\xe9\x6a\x86\x93\xdc\x2d\x7d\xae\x24\xd5\xf9\x0e\x30\xed\x2d\xa9\xd2\xab\x4f\x14\xaa\x37\x0b\x17\x42\xbe\x4e\xb3\x15\x72\x0b\x30\xdd\xbb\x53\x3c\xc1\x42\xbd\x70\x2b\x31\x1c\x83\x29\x9f\xd5\xba\x0c\x5d\x91\x2a\x3e\x1c\x30\xd8\xcc\x9d\x5b\x7e\x28\xcd\xed\xd9\x47\xa3\x09\xd9\xef\x6b\xaa\x46\x1f\x59\x06\x4d\x64\xa1\xd8\x50\x5d\x13\x37\x02\xa5\x6a\x5e\xf6\xfb\x5e\x9a\x65\x74\xa3\xf4\x32\x4d\xf7\x7b\x94\x86\x36\xac\xe7\x07\xbc\x81\xd7\xd3\x25\x0b\xaa\xaa\x65\xfd\x8d\x59\x1a\x8d\x8c\xbe\x78\xa6\x8b\xe1\xd3\x1c\xa8\x80\x74\x5a\xcc\x5a\x91\xbc\xa1\x52\x0c\x9a\x11\xf7\x54\x4a\x36\xa7\x37\xd5\xac\x9f\x8b\xd3\xe7\x9d\x2d\x92\xf7\xfb\x28\xeb\xce\x6b\x5e\xa7\x95\xfd\xbe\x11\x9b\x55\x3b\x1f\x4a\x23\xb4\xab\xd0\x81\x3b\x25\xa5\x59\x86\x1a\xe3\x60\x10\x61\x8b\x46\xda\xad\x60\x3a\xc9\xe7\xa8\xbe\x4f\x33\x4b\x4b\x62\x3d\xe5\x2c\x4c\xef\x84\x54\x67\xa6\x34\xb3\x29\xc8\x64\x33\xe2\xe9\x3b\xc6\xe7\x88\x81\xd0\x9b\xbf\x57\x0f\xb2\x9c\xb0\x84\x19\xfa\x6d\xa7\x79\x2c\xe7\x24\xdb\x75\x88\x62\x97\x56\xeb\xde\xb6\x70\xd4\x5e\x72\x59\x39\x62\xe2\x9c\x2e\x37\xaa\x11\x94\xde\x69\x60\x14\xb9\x55\x08\x07\x7c\xa4\xc6\xc3\xe7\x13\xc4\x8a\xaf\x18\x67\x8a\x5a\x76\x35\xcb\x69\x2a\x6b\x51\xe2\x4d\x8a\xe1\x26\x25\x8e\x70\xf1\x46\x81\xc2\x18\x76\x29\xd1\x44\xcb\x2e\x25\x31\xdc\xa5\xe8\x46\xb9\x50\x6f\xbb\xc4\xd7\xa9\x12\xcb\x70\x2c\x6b\xc6\xf8\xd2\x7c\x52\xf2\x65\xaa\x68\xc8\xc5\x03\xc2\x18\xb6\xa9\x19\xf7\xbb\x34\x7b\x4f\xb8\x0e\x29\xb6\xa6\x84\xfa\xce\x49\x7c\xd7\x76\xa9\x2d\x69\xc4\xfd\xdb\x94\xdc\xa7\xa3\x6d\x3a\xc2\x7c\x4c\xaa\xb2\xfd\x3e\xda\xa6\xe1\x22\x2f\x8b\x15\x71\x2a\x47\x3c\xa8\x32\x98\x46\x75\x12\xa7\x5b\x75\xe6\x96\xe8\x56\x1d\xa9\xf8\xdc\xa7\x40\x49\x3c\x88\x46\x6a\x84\x95\xad\x79\xa2\x34\xc6\x31\x35\x10\x65\x7e\x92\xfb\xb4\xfe\x42\xca\xb4\x73\x6d\x2f\x81\x6c\x40\x4f\x04\xe2\x44\x61\x93\xa5\xd9\x09\xeb\x94\x70\x70\x18\xa3\x07\xe5\x0a\xdb\x1b\x0a\x28\x8e\xe0\xd2\xb2\x7e\xe9\x5d\x81\x3e\x0d\x14\xae\x6b\x78\x2c\xb2\x34\xa7\x89\x1a\x7f\x3a\x39\x83\xa7\xf8\x80\x3a\x57\x8e\x4e\xbc\x47\x0f\x50\xec\xd6\x77\x22\xef\x5c\x1c\xbe\x55\x1d\xf4\xae\x02\xc4\x2d\x95\x94\x51\x96\x5b\x56\x3b\x17\x4b\xc4\xf1\xc0\x7c\x7f\xf7\x26\x8e\x70\xe2\x0a\xcf\x5e\x77\x68\x9e\x0e\x27\xf9\x5e\x75\x04\x66\x9f\x1f\xad\x1b\x1a\x16\x84\xfb\x0a\x4a\x22\x03\x6e\xa4\x13\xe5\x88\x86\x8a\xf0\x80\xf9\x48\x05\xa5\xd3\xc8\x9b\x0a\x4a\xde\xef\x7f\x99\x86\xab\xb4\xf8\xfe\x81\x3b\x5a\x86\x1a\xe5\x61\x9d\x34\xb5\xdf\xb3\x23\xfd\x9a\x77\xc7\xec\x82\x55\x89\x6b\x28\x43\x6a\x96\x96\x0a\x73\xc6\xe9\x5b\x95\xea\x2d\x5d\xab\xc9\x49\xc2\xa7\xe5\x0c\x54\xb8\x31\x42\x6f\x39\x8d\x66\x86\x35\x04\xcd\x2f\xe2\x91\x2d\xf3\x9a\xcf\x5d\x85\xb1\x3f\x3a\x53\x6a\xd4\x33\xb8\x7b\x5b\xa8\x2b\xcb\x77\x4b\xc1\xdb\xb6\x8c\xd6\x97\x06\x73\x4a\x67\xa0\x20\xd6\x35\x57\x99\x8e\x2a\xff\x8f\x3a\xd2\x03\x35\xe3\xe2\x91\x1f\x05\x28\xa2\xbc\x1f\xc5\x60\xe8\xbf\x12\x83\xe7\xb5\x98\x3f\x90\x35\xeb\x93\x89\x42\xe3\xd5\xb4\x95\x70\x2a\xcd\x6e\x31\x2f\x85\x9c\x94\x9e\xf0\x33\xaf\xc9\x47\x31\x14\xa4\x0a\xeb\x9c\x14\x8f\xbe\x4b\x8d\x86\x86\x23\x7d\x29\x20\xc7\x86\x27\x82\x92\x08\x60\x24\x3d\x54\xb7\x78\x60\x38\xb2\xd1\x37\xa9\x1d\xb5\x16\x75\x0a\x48\xf1\x63\x13\xcd\x41\x12\xa4\x88\xc0\xde\x8f\x02\xca\x16\xc8\x94\x20\x4a\x52\xdc\xf6\x05\xd7\xec\x9d\x06\x25\xc5\x07\xf8\x26\xad\xc7\xdd\x45\xcb\x16\x5b\x3a\x8b\xfb\x0b\x87\x53\xe0\x7a\xe6\x28\xe1\x66\xee\x88\xd3\xd1\x5a\xae\x2e\x3d\x77\x94\xa4\xe7\x8e\x92\x33\x0e\x8e\x14\xfd\xcb\xee\xde\xd1\x2d\x78\x6a\x1a\xcd\x7c\xdd\x88\xa7\xa6\xb1\xfe\x1a\xea\xaf\xa1\x53\xea\xdf\x9d\x52\xd3\x2a\xef\x70\x16\x54\x79\xe3\x19\x54\x5f\x91\x8e\x8b\x6c\x2a\x54\x5f\xb1\x8e\x8b\x6d\xaa\x53\xe9\x77\xf5\x06\xd1\xcd\x13\x9d\x08\x3a\x9b\xfe\xac\xea\xd3\x9f\x2e\x18\xdf\x1c\x83\xa1\xab\x07\x5b\x77\x05\x80\x7b\x61\xe0\x8c\x64\x2b\x6c\x33\x85\x78\xd3\x63\xde\xf4\x98\x9b\xcd\xa1\x53\x06\xc4\x56\x6a\x7f\x87\xfa\xd7\xb9\x62\x70\x70\xc7\xd4\x59\x58\xdc\x02\x1d\xcd\x30\x7c\x8f\x4c\x5d\x0e\x28\xdf\x77\x47\xbd\xc1\x91\x3a\x7f\xa0\x7b\x8e\xaf\xbf\x16\xfd\xbe\x13\x1f\xeb\xf8\xd8\xc4\x3b\x97\x0f\xca\xd9\x3a\x23\x07\xfb\x9a\x05\x60\x44\xb8\xa3\x7f\x28\x44\xdb\x55\xc1\x31\x50\xcf\x91\xe9\x82\xb3\x42\x9c\x0d\xfa\x8f\x06\xd9\xf8\xfe\x57\x29\x7c\x9f\xfa\x04\xf1\xe0\xfb\x14\x0f\xbe\x4a\xe1\x27\x1d\x52\xc1\x4f\x36\xf4\x0f\x1d\xa2\xc1\x3f\x4c\xc8\xb9\xbf\x38\xd9\xe2\xa5\x0b\x27\x6b\xe1\x2c\x0d\x9c\x20\x08\xeb\x80\x99\xd6\xe1\x0a\xd0\xac\xdd\x3d\x25\x86\x9c\x38\x43\xdd\x4e\x26\xca\x09\xf5\xb2\x40\x7a\x29\xf6\x72\x1f\xe5\x44\x7a\x22\x50\x5e\x56\x85\x94\x97\x06\xd4\x13\xd8\xcb\x31\x28\x4f\xf8\xd4\x4b\x7d\xe9\x65\x78\xf4\x43\xea\x93\x1c\xfe\xae\xff\x7a\x48\xf9\x66\x43\x63\xf8\xd9\x86\xa9\x6f\xb6\x32\x86\x7f\xda\xb0\xf4\x91\x24\x19\xc6\xf0\x0f\x55\xf1\xbf\x2d\xce\x18\xbd\x3a\xc1\x17\x46\xff\xa2\x6c\x7a\xee\x20\x32\x66\x67\x48\x11\xd1\xf6\xbc\xc4\x40\xeb\x70\xd5\x57\xd9\xf6\x9c\x61\x78\xd5\x62\x9e\xb6\x7d\xe7\x1e\x48\x8f\x7b\x93\xe7\x27\x67\xa1\xfe\xf3\x49\xa4\x7b\x7e\xe5\x80\x20\xf4\x68\x46\xe8\x53\x33\xa2\xb0\x41\xbf\x59\xa0\x11\x71\x41\x98\x27\x02\xe9\x65\xb0\x20\xd2\x4b\x83\xd2\x13\xb0\x72\x76\x5c\xee\xe5\x7e\xe1\x15\xfe\xc2\x5b\x60\x58\xea\x29\xf2\x4b\x2f\xf5\x99\x97\xc1\x86\xac\xfa\xfd\xe0\x07\xb4\xc4\x83\x15\xcc\xdd\x39\x5e\xc1\x12\x8f\x7e\x49\x7d\xb2\xf1\x72\xf8\xcd\xfc\x16\xf0\x89\xf9\x5d\x80\x9e\xbe\xb9\x99\xbe\x79\x35\x3d\xf5\xf4\xcd\x3d\x54\xfa\xa8\x6c\xa6\x6f\xee\x21\xe6\x23\x56\x4f\x9f\xd5\x8e\x39\x42\xf9\xa7\x53\x68\x50\xbe\x22\x02\x28\x49\xdd\x09\x10\xcd\xe8\x65\x0e\xe6\xb7\xb3\x2a\x89\x73\x14\x09\x0c\xa5\x7b\x14\x89\xa3\xd3\xc0\x81\x45\xd7\xff\xe4\xb9\xe0\x26\xfe\xac\xc0\x9d\x67\xe7\x52\x4f\x35\xe4\xfd\x85\x73\x17\xfa\x5b\x23\x4d\x69\x34\xdc\xc9\x74\x06\x82\x4c\x67\x23\xb6\x40\xfc\x3c\x23\xb8\x40\x17\x48\xb3\xab\xad\x00\xea\x9a\x44\xd8\xd1\x75\x31\xc4\x04\xe1\x53\x65\x6a\xf9\x5e\x19\x1d\x49\xfc\x58\x76\x08\x91\x9a\x2e\x4d\x49\x34\x52\xe3\x74\xe4\xfb\x29\x2e\x2b\x72\x04\xe9\x4a\xd2\x19\x36\x67\x9b\x46\x71\xcd\xd5\x4e\x4b\x97\xd4\xd2\x17\x3b\xd4\x8f\xa6\x60\x42\xc1\xfc\x16\x09\x07\xa1\x56\x54\x1a\xb6\x02\xee\x59\xc1\x14\x9d\x27\x17\x31\x50\xae\xe4\x2e\xb9\x88\xa0\x28\x8d\x69\x47\x72\x11\x1d\x20\x3f\x29\x6e\xf4\xb3\x4c\x05\xd9\x99\xd2\x71\x5b\x3a\x3e\x8c\xb2\xd0\xe4\x24\x39\x30\xab\x9f\x9f\x69\x6e\xcc\x7c\x69\xfe\xb4\xae\x5b\x36\x75\xcb\xd9\x87\x81\x8b\xcf\x03\x77\xa6\x82\x73\xc0\x45\x2e\x70\xf0\x41\xe0\x0e\x86\x6f\x2c\x34\xaf\xa7\x30\x7c\xa2\x34\x2e\xf9\x44\x99\x95\x58\xcd\x6d\xcb\x3e\xd8\x9b\x07\x0a\x39\x69\x2c\x3e\xf2\x6a\xd6\xc4\x34\x9d\x85\xa6\x75\x92\x91\x8b\xac\x99\xd9\x02\x16\xb0\x82\x25\x61\xd3\x68\x36\x1a\xd9\xaa\x0a\xb2\x1c\x15\x61\x05\xf5\x08\xb3\x05\x42\x05\x29\x2c\x2b\x41\x08\x59\x56\x8a\xb3\xa3\x05\x29\xec\x5a\x28\xa0\xbb\x6c\xe6\x42\x2f\xc0\xa6\x0a\x52\xd8\x0e\x36\x61\xdd\x7f\x0b\x0c\xb6\x19\xab\xd1\xc0\xee\x7a\x4b\xaf\x17\x8d\xda\x9d\xef\xb7\xcb\x6e\x45\x16\xf5\xb2\x5b\x99\x65\x67\x24\x79\x12\x55\xb0\x80\x05\xb4\x0a\xc4\x50\xe2\x51\x0d\xbc\x91\xf9\x75\x1b\x7c\x34\x7d\x90\xf4\xbe\xea\x88\xb3\xe2\x9b\xd6\x83\x20\x1d\x93\x68\xf4\x34\x04\x87\x13\x08\xda\x1a\x21\x68\x40\xd0\x91\x87\xa2\x1e\x0c\x68\x47\xef\xf0\xb0\x62\x39\x45\x17\xcd\x80\xe1\x91\xb3\x87\x5c\xe5\xa8\x4f\x54\xb5\xb9\xdb\x9d\xed\x9a\xdc\x50\x90\x24\x82\xd2\x6c\xee\x91\xef\xcb\x6b\xa5\xa1\x36\x6c\xa3\xde\xac\x72\x06\xd4\x40\x41\x4a\x28\x09\x1d\x39\x49\x51\x9b\xe4\x34\xf7\xca\x11\xe4\x9e\xd8\x79\xe8\xe3\xb1\xbd\xb8\x43\x0e\x73\x55\x9a\xc0\x88\x1b\x33\x1f\x43\xf9\x9a\x0b\xad\x7e\x9f\x55\x23\x78\x74\x99\xe7\x72\x2c\xa5\xd5\xf8\xaa\x46\x0f\xd1\x06\xbb\x74\x0d\x92\x76\x15\x02\x4d\xe1\xde\x5d\x79\x5d\x3b\xa5\x3a\x93\xa8\x32\x1d\x71\x33\x85\x6d\x77\x6e\x77\xda\x94\x83\x6a\x14\x94\x2a\x28\xb6\x1f\x80\x62\x81\xf0\xe3\xd6\x6d\x1b\xe6\x64\x3a\xeb\x5a\xee\x14\x68\x6e\x95\x80\xc0\xfc\xc6\x33\x0c\xdb\x16\x92\x51\xcd\xf1\x6f\xc3\x2c\xa7\x29\x47\x9a\x84\xb8\x09\xef\xca\xc5\x82\x4a\xa4\xe9\x07\x5a\x2f\x41\xb6\x40\xf3\x70\x23\x36\x08\xc3\xc6\x82\x3b\xd7\xed\x19\xdc\x64\x35\xdb\xe3\xbe\xa6\x0a\x8c\xd2\x91\xd5\x3f\x72\x18\xbf\x20\x06\x41\x82\xd8\x6a\x8b\x1e\x31\x9a\x42\x33\x7f\xf5\xbc\x20\xbd\x74\x84\x5d\xd9\xa5\x8b\xd2\xd9\x29\x4a\x97\xe3\xb8\xdf\x1f\xf6\x55\x63\xf1\x44\x2d\x80\x8e\x95\xd4\x8a\x2d\x14\xc2\x18\xc3\xb2\xce\xb1\x60\xb9\xa2\x12\xfd\xaa\x89\x56\x73\x28\x2c\x61\x03\x73\xb8\x27\x06\xad\xad\x49\x69\xb5\x93\x1c\x5e\x17\xc3\xae\xc6\xad\x02\x1a\xd0\x93\x0c\x2a\x80\x92\x1c\x5c\x86\xd6\xbd\x24\xa9\xa7\xbf\x80\x5d\xdb\x69\xb2\xa8\x42\xfa\x28\xd6\x88\x6f\x3a\x83\x8d\xfe\xc3\x8e\x18\xe3\x03\xb4\x3c\xf0\xb9\x5a\x45\xa7\xd6\xcc\xa9\x35\x87\x25\x59\x8b\x70\x4d\xe5\x92\xa2\x65\x35\xcd\xe4\x7f\x14\x5a\xc3\x06\x8f\x96\xb5\x98\xed\x37\x85\x96\xf0\xb5\x02\x0e\x14\x18\x4e\xb8\x51\xc4\x73\xd7\x13\xad\x24\x87\xfa\x4f\x0c\xcc\x20\xfc\x7a\x16\x70\x0b\xaf\x9d\x95\x25\xd9\x98\xe5\x70\x80\x62\xb3\xa2\x92\xba\x20\x1f\x77\x0d\x3e\xbe\x9d\xa3\x66\x0e\x07\xb8\x21\xdf\xea\x42\x5b\xa2\xd0\x4d\xb3\x3e\x76\x0e\xd2\xf8\xf5\x9c\xdd\xe7\x38\x76\x14\x5c\x94\x73\x15\x34\xad\x35\x1a\x1f\xdb\xc9\x75\x40\x57\x76\xe5\x70\x32\x9d\x99\x19\xd1\xeb\xe0\x48\x3e\x59\x6d\x5f\x05\x54\x67\xa9\x97\x45\x06\x76\x1f\xb9\x95\x55\x3a\xff\x8d\x31\x9b\x9e\xf6\xda\xec\xef\x00\x92\xfe\x5b\x30\xde\x6d\xbc\x06\xbe\xdf\xaf\x00\x51\xdd\x45\xae\xda\x45\xee\xa2\xe9\xaf\x3b\x6c\x22\x32\xba\xb9\x06\x76\xbd\xb3\xae\xa3\x89\x61\x0b\xbf\x15\xc1\xd7\x22\xf9\x56\x18\x9e\x1a\x07\xc8\xa8\x4c\xba\xb9\x54\x27\x97\xea\xa2\x9f\xff\xe9\xc8\x79\x1a\x6a\x2e\x9e\x41\x49\xa6\x8e\xc8\x00\x02\x57\xae\x12\xcd\x80\x91\x08\x04\x89\x46\xdf\xa5\xa1\xa4\x05\x3d\xa2\xf2\x20\x23\x75\xaf\x47\x59\x45\x3a\x98\x36\x72\xa2\xa6\xe9\x0c\x0a\x92\x3b\x38\xa9\x68\x0e\xec\x05\xc9\xcd\x71\x48\x16\xfa\x67\x49\x16\x9a\xed\xb6\x02\x14\xd8\xb4\x14\xf3\x12\xd7\xdc\x81\x06\x68\x89\xe1\x9e\xc4\x9a\xea\xb8\x27\x84\x14\xfd\x3e\xba\x27\x11\x06\x4e\xf2\xe9\xbd\xc5\x62\x6b\xdb\xb3\x9d\xe9\x59\x5d\xdf\x4d\x5b\xdf\x4e\x2f\xc4\xa6\xbe\x1d\x86\x3b\xb2\x0e\x56\x70\x4b\x1a\x0e\xfc\x0e\x8f\x5f\x09\x78\x20\x1b\xef\x46\x43\x7c\x2a\x48\x7a\x68\xa9\xfb\x3b\x0c\x73\x6f\xeb\x3f\xb4\xf4\xff\x9d\xc6\x5e\xcc\x27\xb7\x93\x3b\x1f\xdd\x8d\x49\x34\x19\x26\xc1\x10\x7b\xaf\x44\x72\x07\xb7\xbf\xaf\xc6\x84\xfe\xbe\x1e\x93\xea\xe4\x7b\x4b\xfe\xad\xd0\x17\x0a\x2d\x30\x18\xe9\x0f\x1e\x7d\xa5\xd0\x5b\x8b\x00\x5e\xeb\xb4\x12\xde\x9a\xb8\xd7\x36\xee\x3d\x41\xb7\xbf\x9b\x5a\x83\x38\x89\xb1\xf7\x3d\x7a\x6d\x64\x17\x48\x8e\xdf\xef\xf7\x92\x10\xf2\xbe\xdf\x47\x6f\xa7\xd1\x6c\xbf\x7f\xab\xa7\x1f\xf7\xfb\x48\xf8\xa4\x2a\x14\x27\x41\x8c\x0f\x9a\xd2\xbf\xf7\x7d\x7c\x27\x69\xfa\x7e\xb4\x22\x6b\x3d\xde\x30\x27\x5b\x58\x10\x7e\xa8\xd5\x38\x82\xaf\xc5\x98\xed\xf7\xfa\x6f\xbf\x1f\x8d\xbf\x4b\xf1\xef\x71\xdf\x91\x48\xfc\xa8\x1c\x63\x04\xa3\x2e\x50\x2b\x0d\x44\x83\xe8\x83\x3b\x94\x77\x70\x89\x22\xf1\xc9\x36\x65\x20\x6c\xd5\x29\x61\xe3\x68\xf2\x4a\x24\xc1\x2b\x51\x73\xa1\x7a\x8e\x58\x40\xf1\xa8\x09\x65\xc1\x2b\x81\xaf\xbf\x16\x13\xc4\xeb\xe3\x17\x24\x41\xd2\x17\x78\x30\x1c\x47\x46\xb7\xf3\x5b\x81\xa1\x4e\x2d\x41\xea\x40\x8b\xb2\xba\x10\xd5\xd9\x52\x9b\xcd\x06\xcc\xcd\xb0\x22\x11\x4e\xca\x0b\x42\xd2\x7e\x3f\x1b\x93\x57\xa2\xdf\x47\x0d\x14\x34\x28\xad\x2c\x07\xd1\x80\x94\xde\xd7\xa2\x12\xb9\x58\x78\xd3\x2a\x8d\x05\x24\x35\x69\x92\x70\x6a\x6e\xca\x74\x67\xff\x2b\xd0\xcc\x95\x45\xd3\x63\xc2\x40\x33\xc3\x50\x92\xb4\xc5\x69\x27\xa3\x6e\x2b\xa5\xc4\xcc\xd5\x01\x0c\x15\x71\x46\x4d\x60\x18\x28\x17\x3b\x71\xda\x52\x75\x95\xb1\x4b\x2d\xa6\x35\x12\x82\xa0\xb5\x66\x69\xba\x2c\xf0\xf8\x6b\x31\x69\xb6\x0d\x42\x8e\x08\xc1\x43\x8e\x54\x48\x62\xec\x4a\x6e\x83\xe6\x5b\x62\x0f\x95\xae\x30\x18\xbb\x42\x09\x3c\x40\xa5\xc7\x3c\x81\x71\x82\x94\x2f\x3b\x2a\xb5\xea\x18\x5e\xc3\xf6\xda\x7b\x58\x5c\x12\xea\x7d\x2b\x40\x56\x03\xa7\x57\x56\x89\x9b\x60\xe4\x06\xba\x49\xaf\x04\x44\x9d\x50\xd0\x29\xe7\x86\x82\xa3\xd4\xa0\x5b\xd6\xb6\x69\xd9\x10\xb6\x40\x67\x84\x82\xe3\xaf\x45\xcd\xb9\x9b\xd8\x6b\x1d\x6b\xf7\xaf\xf7\x4a\x8c\x74\x1f\xd8\x60\xd8\x56\xc8\x9e\xec\x83\x4e\xa9\xd8\x8d\x9a\x96\xd6\x08\xf2\xe8\x70\xa0\xf4\xc8\x2e\xff\x44\x68\x69\x45\x43\xae\xd4\x79\xcc\x8e\x7c\x33\x98\x93\x05\x18\x64\x90\x43\xf1\x41\x14\x90\x6b\x96\x32\x86\xe2\xcc\xde\x5f\xc0\xca\xd6\xb4\xd4\x54\xd6\x02\x56\x33\x98\x13\x65\xa2\xe1\x9e\x88\xc9\x7c\x12\x25\xa5\x09\x26\xf3\x49\x89\x16\x3e\x8a\xc6\x8b\x0a\x45\x60\x1d\x6b\xd4\xe8\x2e\x68\xbf\x8f\x74\x2b\x73\xdc\xef\x77\xf7\xd0\xfc\x82\x90\xac\xdf\x47\x4b\x22\x11\x85\x0d\x06\x2b\xca\x58\xe2\xfd\xfe\x7b\x85\x36\xb0\x34\x48\x73\x63\x44\xd3\x5f\x0b\xd8\x18\xc1\xf4\xd7\xc2\x40\xa1\x63\x4d\x8c\xc6\xf2\xa6\x22\x5c\x90\x08\xe6\x1a\xf3\xb8\x6d\xe8\xba\x37\x40\xdb\xed\xb9\x34\x87\x9c\x29\x98\xb4\x2d\x9f\xa6\xba\x7b\x5f\xef\xd3\x65\xb3\x48\xd2\x7e\x9f\xf6\xfb\xe2\xf7\xb9\x1d\x9d\xf5\xe8\xbe\xcf\xf6\xfb\x0b\xb4\xb6\x4d\xc1\x45\x84\xf1\x7e\x8f\x34\x38\xe2\x18\x9c\xba\x9d\x75\xc5\x5b\xac\x6b\xde\xa2\x4d\x88\xab\x84\x78\x76\x02\x46\x82\x3e\x26\xdb\x13\x98\xea\xb8\x49\x8c\x0f\x17\xf3\xfd\x9e\xf6\xfb\x66\xd4\x37\x78\xbf\xaf\xb3\xb6\x83\x0b\x94\x6c\x20\x23\x73\x60\xe4\xfe\x2c\x32\xcb\xea\x49\xad\xf1\x99\x25\x64\x9f\x42\x67\xc5\x1e\xe5\xfd\x7e\x86\xaf\xaf\x63\x17\xad\xc9\xee\x0d\x9f\x39\x81\xa1\xd4\xbf\x0a\x83\x20\xd3\x18\x22\x4d\xff\xa4\xfa\x20\x96\x7a\x4f\x65\xe4\x4b\x8d\x7b\x53\x0c\x39\x49\x35\xb4\x05\xc9\x82\xdc\xcb\xcd\x8a\x2b\x2a\x21\x87\x5e\x7a\x7c\x64\x49\x1c\xe6\x65\x83\x02\x56\x24\x60\x5e\x3e\x28\x60\xa9\x6b\x12\xba\xfc\x86\x7c\xa3\xbf\x16\x9a\xba\xf9\x46\xd7\xb9\xc2\xa3\xef\xf4\xea\x9b\xdb\x83\xfe\x9e\x2c\x61\xad\x5b\xdb\xc0\xbd\x66\x68\xbe\x54\xe8\x5e\x7f\xdd\x90\xb5\xb7\x0e\x76\x1e\x32\x49\x1b\x1c\xc4\xc6\xb0\xe5\x02\x45\xe3\x9b\x4a\x56\xb7\x75\x04\xb0\x37\x9a\xbe\xf9\x46\x97\x45\xc1\x3a\xd8\xe2\xc1\xce\x64\xff\x4e\xa1\x3b\xbd\xfe\xee\xc8\x0f\x4a\xd3\x30\x17\xb4\xb6\x6c\xbe\x33\xad\xdf\xc2\x83\x25\xa3\xde\xda\xcb\x99\xd7\x96\x4e\x7c\x6f\xee\x67\x46\x0f\xe3\xb7\xfd\x3e\xba\x25\x0f\xf0\x40\xde\xc2\x5b\x72\x6b\x41\xfe\x9c\xbc\x0d\x1e\xe0\x4d\x7b\x48\x7f\x5e\x1d\xcb\xf0\x8e\xbc\x31\x84\xc4\xe7\x06\xd4\x37\xfd\xfe\xeb\xf1\x7b\x53\xc3\x6b\x78\x4d\xde\xc3\x7b\x72\x8b\xe1\xdd\xe4\xcd\xe4\xb5\xff\x7e\x1c\xfd\x7e\x37\x8d\x67\xd7\x2d\x4e\xbc\xd3\x38\xf1\xc1\x1c\xef\xaf\x93\xf7\x38\x79\x7d\x4d\x74\x8e\x7e\xdf\xe4\x23\xef\x93\xcf\xc7\xaf\xc4\xef\xe8\x41\x47\x47\x26\x3a\x9a\x5d\x93\xb7\xd5\x60\xfc\xd1\xf4\xde\xb7\xbd\xaf\xad\x2b\x15\xfa\x43\x8f\xc0\xf4\x0e\x7e\x50\xe8\x0f\x3c\x3b\x74\xbc\xb7\x38\xab\x42\x4c\x78\xf2\x4a\x04\x5c\x13\x36\x55\xe9\x40\x8e\xd5\xa4\xdc\x93\x38\x51\x46\x61\xa0\xdc\x93\x21\x86\x40\x8e\xa9\x8e\x7d\x9e\xd0\x3a\xf6\x53\x0c\xe5\xe1\xe8\x12\x84\x9b\x0b\x90\x71\x54\xdf\x6c\x1a\xf2\x40\xe3\x7b\xc8\xc8\x3b\x7d\x6e\xbd\xf0\x8c\x50\xd9\xc2\xf9\xca\x0a\xfe\x33\x10\x93\x69\x04\x01\x9f\x25\x53\x7d\x78\xf0\xe0\x55\xc7\xea\x51\xd2\xb3\xfa\x73\x46\xfe\x7b\x7c\x30\x4b\x73\x53\x67\x06\xb4\x1c\x47\x93\x28\xb9\x4c\xba\x69\xb4\x49\x1b\x26\xb1\x9b\x16\xcf\x02\xd5\xa4\xc5\x49\x94\xe8\xdf\xcb\x64\xe8\xda\x46\xba\xe7\x86\xa8\x11\x47\x7d\x21\xdd\x71\x08\x71\x24\xc2\x89\x35\x49\xa4\x47\x3e\x6e\x3a\x4f\x2f\x08\x91\x13\x1a\xc8\x24\x22\xc6\x71\x43\x7d\x9f\x98\xc4\x26\xdc\x1c\x97\xc9\xb0\x0a\x57\x77\x67\x49\x73\x1b\xe9\xca\x8c\x5a\xf3\x58\x23\xbb\x0c\xca\xa9\xd9\xdc\x4c\x97\x2a\xf5\xfa\xce\xc8\x34\x82\x78\x76\x86\x94\xe9\xde\xd1\x19\x5a\x6e\xc2\xaf\x49\x69\x56\x5c\x69\x56\x1c\xed\xf7\x95\x8e\x89\x4d\x8c\x5e\x9a\x32\x29\x29\xe2\xb6\x19\x01\x19\xee\xf7\x4b\x6a\xb4\xa7\x03\x0a\x41\x13\xa1\x6c\xdb\x69\x9b\x21\x9e\x05\x12\x02\x1d\x31\x41\x99\xae\x29\xd6\x74\xe3\x34\x9a\x99\xf6\x7c\x1d\xe5\x09\xd0\x60\x9b\xe6\x6c\x44\x8a\x21\x9b\x46\x33\x63\xd8\x69\xb2\x11\x1d\xf4\x84\x91\xca\x54\x81\x14\xeb\x53\x22\xb9\x88\x0f\xc7\xa2\xb9\xcc\x59\x36\x79\xd7\x01\x4c\x04\x94\xec\x2a\x0e\xae\x65\x18\xa3\x11\x1d\x97\x23\xdf\x2f\x1b\x7e\x4e\x53\x84\x31\xa4\x64\x37\x2d\x67\x8e\xc1\x71\x85\x29\x47\xd9\x58\x8c\x7c\x5f\x60\x46\xd2\xa9\x98\x41\x6e\x47\x68\xa2\x7b\xa1\x77\x4b\x81\x72\x60\xc0\xb1\x86\xdf\xf7\x55\xc2\x6c\x7a\x9b\x70\x1d\xf5\xfb\x41\xa0\x20\x27\xac\x9e\x9f\xe8\x82\xb8\xd7\xb3\x45\xd7\x10\x00\x35\x6b\x00\x7b\x88\xd6\x2b\x07\x07\x46\x34\x57\xc7\x37\x2b\xaa\x23\xa6\x63\x7a\x36\x20\xb7\x8b\x45\x1f\xa8\x0b\xab\x9b\x6f\x29\x48\x66\x4e\xd9\xd2\x28\x62\xe1\x0b\x42\xd0\x82\x94\xc8\x68\x7c\xef\xf7\x42\x97\xc5\xd7\xd1\xef\xd9\x38\xc2\x8f\x73\xf1\x2c\xaf\x49\x32\xcd\xae\xee\xf7\x97\xfa\x67\xc2\x13\x0a\xc5\x38\x9e\xc8\x44\xe1\x91\x95\xe4\xa2\x82\xa0\xc2\xcf\xfc\xe7\xf8\x6f\xcf\x75\xa5\x8b\x8a\x66\xab\xcb\x9b\xd3\x26\xed\x02\xba\xb2\x2b\xba\xbe\x43\x19\x13\xde\xef\xd3\xb1\xd1\x33\x33\x06\xdd\x72\x4c\x58\xc7\xaf\x8f\xde\x70\x2b\xf3\xd3\xef\x67\x55\xc5\x5d\xd5\x93\x0d\xc2\x8f\x7f\x54\xe2\xaa\x7b\xd8\xf5\xfb\x3b\x2b\xc4\xb8\x21\xd3\x19\x86\xf7\xe4\x22\x82\xd7\x9a\x70\x7b\x20\x6f\x0d\x03\xd1\xea\x12\x23\xfc\xb8\xd6\xec\x38\xda\xc2\x1d\x86\xdb\x7e\xff\x75\xbf\xff\x2e\xb4\x12\x12\x84\x61\x6d\xeb\x79\xd7\xc8\x2a\x31\x86\xba\xa1\x25\xbc\xd6\xf0\x9c\x91\xb7\xde\x57\x57\x97\xad\x32\x7c\xf0\x6d\x65\x3e\xb3\x66\x1c\x7d\x9b\x02\xc7\x9a\x0f\x7a\x32\x59\xe1\x5a\x3e\x6b\xfb\xad\x67\x71\xd7\xef\xdf\xb8\x02\x5c\x78\x8f\xb7\x84\xc3\x1d\x51\x70\x4b\xa8\xee\x64\x0c\xd4\xe8\xf1\xb9\xf4\x8c\x3b\x5e\x2d\xe5\x4e\xfb\xfd\xd7\xd8\x4d\x32\x29\xd5\xc9\x31\x7d\x80\xb7\x46\xb8\xa2\x9b\x19\xa5\x06\x1b\x4f\xd0\xeb\xfd\xfe\x89\xaa\x5b\x09\x66\x1b\x57\x36\x82\x55\xa0\xfb\xbd\x33\x48\xf0\x39\xb9\x88\x71\xf2\x61\x40\x6d\xa6\xc3\x03\xe1\xfa\x24\x87\xd7\x84\x9a\xd3\x68\x0d\x3b\xb8\x81\x2d\xdc\xc1\x2d\x3c\xc0\x5b\x78\x0d\xef\xe1\x73\x78\x43\x32\x78\x67\x45\x75\x7f\xd4\x02\xd4\xa5\x23\x40\xdd\x34\x84\xd8\xfc\x49\x01\x6a\x46\xde\xc1\x9a\x4c\x67\xb0\xd3\x7f\x3e\x27\x17\xd1\x53\x42\xd1\x8c\xbc\x81\x75\x2b\xf4\x5c\xdb\x79\x52\x24\xd7\xb3\x22\x0d\x09\xf8\x79\xbf\xaf\xa0\x24\xeb\x5a\x7c\x84\xe8\x7e\x5f\x1a\xad\xc0\x63\xe9\xe4\xe9\x28\x2c\x3a\x12\x4a\xa3\x31\xe9\xd0\xd5\x65\xbf\xff\x9b\x42\x6b\x60\xa0\x60\x61\x53\x5d\x99\x25\x86\x35\xd9\x91\x1b\x4b\x54\x1e\x6a\x74\xf3\x87\x4b\x21\xd0\x1a\xd9\xb8\xec\x9b\x39\x1c\x6b\x4a\x2a\x1a\x13\x5e\x59\x3f\xf0\x81\x71\x98\xa6\x34\x4e\x60\x0b\x24\xc7\xe6\x62\xa0\xa2\x16\xe3\x91\x0e\xeb\x73\xc4\x60\x26\x22\x71\x73\xe9\x24\xaf\x75\x8c\x93\xf1\x9a\x9a\xe3\xc5\xa0\x33\x9d\xf1\xf4\xea\x97\xd1\x13\x67\x27\xee\x5d\x0c\x25\xd6\xb3\x0d\x74\x6e\x28\x1a\xc9\xab\x15\xa5\xf7\xfb\xaa\xf9\x42\xb4\xfa\x3c\xef\xc3\x8b\x92\x3a\xab\xad\x56\x93\xbe\x4d\x44\xdb\x00\x76\x55\x08\x05\x6d\x95\x73\xf4\xe1\xf2\x4a\x0c\x2e\x41\x92\x3b\x6a\xa9\x6f\x69\xaf\x82\x9a\x9b\xe1\x4d\x2a\xd3\x3c\xa7\x79\xf1\x51\x1a\xd2\x12\x59\xdd\x29\xef\x95\x18\xc4\x9f\x46\x95\x0a\x55\x15\xc2\xc9\x34\xfe\x34\xf2\x90\x1a\x68\x56\xd1\x7c\x52\xfd\x39\x3b\x80\xe3\x2e\x26\x3d\x1d\xc2\x63\x95\x47\x43\x5b\xb3\x60\xe8\x95\xae\xde\x15\x1e\xd4\x8e\xe6\xa6\xae\xfa\x84\x47\x4a\x0c\x22\xe8\x68\x58\x58\xf3\x69\x47\xdd\xc3\x74\x1d\x49\xbf\x53\xdd\x10\x18\x89\x7d\xe9\xa1\xa1\x57\x06\xb2\x31\x0a\xb2\xad\xb7\xad\x3d\x3b\x9d\x23\x07\x60\x11\xd4\xe2\xeb\x8e\xce\x12\x50\x3c\x28\xe1\x7b\x84\x58\x80\xb8\xc7\x8d\x15\xa2\x57\x7a\x25\x1e\xe8\xd6\xb0\x1e\x13\xd7\x1e\x8e\x9e\xd1\x28\xf9\x9f\xd4\x27\xa5\xc7\x03\xe9\xa9\x4a\xad\x4e\xb9\xfa\x15\x23\x99\x1d\x6b\x57\x18\xb9\x5e\x13\xcd\x41\x11\x49\x18\x50\x52\x12\x71\x00\x99\x7d\x94\x96\x5c\x5e\x4d\xc7\x8f\xa9\xb1\x29\xfe\x31\x25\x1c\x03\x1f\x2b\xcd\xd2\xab\xcc\x04\xb2\xb1\x5e\xb9\x3c\x23\x0a\x83\x1a\x53\x9d\x42\x75\xc0\xa1\x15\xce\xf5\xa7\xba\x40\xef\xdd\xf4\x80\x43\x0f\x7a\xa0\x80\x75\x9d\x53\x9e\xcf\x85\xa1\x56\xce\xa0\x87\xe3\x45\x53\xe7\xfe\xae\xcd\xdd\x75\x36\xd4\xa8\x98\x74\x5d\x98\xd4\xe5\xfe\xd9\xab\x0d\x4c\x16\x14\x3d\x0f\x8d\x65\xd8\x54\x53\xad\x15\x82\xe6\x70\x56\xbe\x52\xd7\xaa\x5a\xee\x59\x3e\x89\xb4\x5b\x45\x93\xf2\x29\x6c\xdd\x66\x91\xd0\x42\x6c\x45\x37\x3f\xa5\x73\x56\x16\xe7\xb4\x78\x0d\xd0\x1c\x43\x7a\x00\x49\x8b\x32\xef\xb4\xca\x16\x48\x34\x17\xd2\xf6\xc2\x4b\x84\x86\x5a\xe8\xf5\x5a\x8f\x33\xe6\xc2\xe5\xd0\x22\x61\x47\xef\xcc\xd4\x5d\xdb\x3f\xad\x23\xe8\xf9\xdc\xef\xa5\xe6\xaf\xfd\x7e\x16\x3d\x8b\x21\x7e\xa6\x53\x82\xa1\xf7\x74\xa2\x49\xfb\x8f\xa3\x09\xbc\xaa\x26\xef\xfb\xd4\x27\xdc\x28\xc1\x29\xf0\xfd\x7f\x38\x6d\x2f\x4f\xd6\x4f\x2d\x69\x24\x3c\x50\xd6\x76\xb9\xb3\x5d\x4b\xaf\xf4\x99\xc7\xf0\xe8\xef\xa9\x4f\x84\x87\x94\xcf\xf5\xfe\xfe\xd9\x86\xa8\x91\x5f\x1a\xb5\x25\x01\x2b\xaa\x71\x18\x50\xd2\x6a\x9b\x8d\xd8\xc9\x56\xb2\x16\x16\xed\x56\x32\xa5\xa4\xde\x4b\xee\x66\xd9\x18\x97\x1e\x75\xae\x95\xb3\x3e\xe7\xe7\x76\x40\xab\x84\xcb\x88\x0a\xca\x4e\x0f\xa8\x47\x3b\x3d\x90\x9d\x1e\x94\xbe\x6a\x7b\x20\x1a\xb4\xf0\x4b\x9b\xd7\xa8\x72\x55\x39\x8d\x3a\xd7\xa5\x67\xfa\x5a\x61\x8e\x8e\x6a\xd6\x99\xfe\x1a\xd4\x71\xd2\xdf\x1a\x7b\xe0\x03\xb0\x8f\x43\x1f\xf7\xc7\x82\xce\xea\x4a\x70\x2d\xee\xe9\x3b\xab\x93\x00\x3c\x4c\x65\x66\xf8\x6e\x01\x11\xfc\x2a\x5c\x39\xe9\xb9\xfc\xf5\x8e\x90\xee\xd6\xae\xf2\x69\x98\xaa\x7c\xdd\x1d\xde\x6e\x51\x87\x7b\xd6\x25\xb2\x5c\x14\xf4\x87\x54\xad\x10\xae\x9c\xf9\x3c\x0f\xaf\xda\x1d\xaf\x3e\xbc\xe3\x69\xbb\xe3\xcb\x8f\xd8\xf1\xec\xcf\x77\x7c\x09\x0e\x36\xf9\x93\x1d\x2f\x08\x77\x76\x7b\x76\x6e\xdb\xae\x4f\x26\xa0\xe3\x40\xc2\x50\x17\x2d\x99\xf2\x01\x75\x0a\x3d\x88\x37\xe6\xca\xe9\x6d\x73\xc1\xae\xce\xab\x76\x08\xd4\x68\xc2\x09\xf2\x85\x42\x53\x09\xe5\xcc\x58\x01\x9b\x84\x11\x45\x9a\x1c\xde\x55\x04\xf1\x8d\x95\xed\x6d\x89\xe6\xb7\x60\x47\x24\xdc\x11\xa1\x63\x6e\x89\xd0\x31\x0f\x44\x4c\x87\x33\x4d\x3c\xb6\x00\xde\xc0\xf6\xc8\x17\x65\x0d\x94\x84\xb3\x5a\xf7\x19\xc2\x8f\x25\xc2\x0d\xec\x39\xbc\x6d\x46\xbc\x70\x95\x52\xec\x31\x82\x16\x7a\xcd\xeb\x03\x6d\x49\x6e\x60\x43\xb6\x30\x27\x77\x70\x4f\x6e\x61\x4d\x1e\xda\x01\x70\xb9\x61\xfc\xd8\xed\xd6\x12\x36\xb0\x80\x39\xdc\xc3\xda\xc2\xde\x36\x98\x42\x5a\x2d\x36\xa3\xda\x65\x35\x2c\xe0\x88\x4d\x68\x15\xd6\xda\x05\x58\x36\x8b\x2d\x7d\x72\xb1\x1d\xdb\x0f\x54\xed\x56\x5a\x10\x4f\xad\xbf\xae\x41\x41\xa7\x4c\xd9\x1e\x07\x6f\xbb\x3b\x93\x81\xb0\xac\x3b\x54\x4a\x6a\x75\x4f\xec\xdc\xef\x48\x11\x28\xb8\x21\x8b\x80\xc1\x96\xec\xbc\x9d\x7f\x63\xef\x78\xb7\xe3\xe7\x9e\xec\xf7\xef\x83\xc0\x66\xbc\x23\xa9\xbf\x84\x5b\x92\xf9\x1b\x78\x20\xb9\x3f\x87\xb7\x0e\x26\xbc\xf3\xee\xfc\x5b\xef\xd6\x7f\xf0\x1e\x30\xbc\x26\xad\xb7\x98\x87\x01\x79\xab\xb9\xe4\x86\x21\x68\x3e\x1e\x70\x10\xdb\x1b\x4a\xe1\xaf\xf0\xa0\xb2\x1d\xb6\xa4\xd8\xad\x66\x98\x3f\x27\x1c\xbd\x87\xd7\x18\xde\x90\xcf\xf5\x52\x7b\x47\x3e\xd7\x4b\xed\x0f\xf2\x26\x50\xf0\x1f\xf2\x2e\x60\xf0\x05\xb9\xf1\xfe\x08\x76\xde\x7f\x46\xe8\x0b\xef\x8b\xc1\x76\x2c\xf7\xfb\xa6\x01\xb4\xf3\xfe\xf0\x6f\xbc\xff\xe0\xc1\x36\x08\xaf\xf0\x38\xbc\xdc\xef\xcb\x71\xea\x2d\xfd\xcc\xdb\xf8\xb9\x37\xd7\x7c\x53\x77\x88\xde\xc0\x3b\x78\x0f\x77\x03\xf2\x16\x6e\xf5\x9f\x07\x33\x50\x9a\x53\x37\x2b\xfa\x0d\xbc\xc3\x40\x51\x95\xcb\x2c\x81\xe3\x41\xad\x34\x72\x24\x09\xaf\x5c\x83\x88\xcb\xc8\xfb\xd1\xa8\xbd\xc6\x2f\x5a\x2f\xc0\x1b\x49\x33\x56\x30\xd7\xff\xf2\x87\x0c\x1d\x19\xd1\x07\x83\x67\x05\x42\xf1\x0b\x50\x95\x8b\x05\x33\x01\xb2\xeb\x18\x79\x67\x30\x4a\xe5\x36\x52\xd2\x74\xed\x12\x53\x37\x0e\xb7\xb1\xa6\xa8\xab\x09\x52\x33\x3e\x68\xaa\x3c\x9e\x02\xf5\x78\xaa\xb9\x95\xa7\xbc\x87\x59\x7f\x6f\xba\x39\x62\x2f\xeb\x1b\xfa\xfb\xe8\xb0\xaa\xd5\x4c\xec\x75\x9b\xf7\xa3\x00\xaa\x87\x44\x93\xd4\x8e\x61\x9a\x43\xbf\x3c\xbb\x73\x40\x73\x6c\xb2\xb1\x8b\x32\xee\x4e\xee\xe8\x1c\x3b\xd7\xd4\x9a\x37\xfc\x28\xac\x51\x84\x9e\x00\x6b\x25\xb1\xf2\x33\xc8\xad\x15\xc6\x6a\x76\x74\x61\xd7\x96\xae\x99\x36\x7b\x05\x99\xe1\xc1\x0a\x90\x2d\x85\x07\x2b\x0c\xbc\xdf\xb7\xb5\xf1\xd4\xd6\xcf\xd3\x23\xa7\x99\x29\x61\x14\x09\xf2\x9a\x22\x83\x36\x30\xb0\x5a\x8d\x89\xa1\x39\xdc\x37\x63\x95\x91\xa5\x35\x13\x59\x41\x4e\x36\xd6\x12\x63\x05\x25\x3a\x42\xec\x8e\xdf\xb9\x22\xbc\x4f\x73\x36\xb7\xf7\x85\xd6\x3a\x54\xd5\x3e\x7e\xda\xdd\xde\x99\xdc\xae\x09\xb0\x15\x4a\x9f\x1d\x0e\x0c\x2b\x12\x5f\x45\xb0\x24\xcf\x3f\x8d\x60\x43\x86\x57\x11\xcc\x49\x04\xf7\x24\x82\x35\x89\x60\x47\x22\xb8\x21\x11\x6c\xc9\xaf\x29\xdc\x91\xb9\x82\x5b\xab\xfd\xf3\xe0\xda\x66\x3f\x53\xf5\xc2\x3b\xb3\xb6\xbb\x5d\xc0\x50\x90\x5b\x8a\xb6\x48\xc0\x02\xdd\xe9\x45\x84\x31\x34\xc9\x11\x14\x07\xeb\x13\x6b\xf3\x39\x5f\xe6\x1f\x69\x14\xbc\x6d\x4c\x8c\xd1\x2d\xe1\xf0\x6b\x8a\x13\x4a\x11\xba\x25\x3e\xc7\x66\x21\x94\x08\xe3\xe4\xb6\xae\xf9\xf5\x56\x51\x77\xb1\x7e\xa8\xea\x07\x23\x18\xe3\x13\x49\xcd\xc2\xb0\x86\x3a\xe6\x22\xcf\x2c\x83\xda\x70\x47\x2f\x93\x64\xae\x6c\x43\x0f\xba\x21\x63\xf5\xf7\x71\x6d\xac\x88\xcf\x41\xea\x92\x2b\x5d\xd2\xf8\x91\xcc\x53\xf5\x91\xa5\x97\xc4\x37\x37\x55\x1b\xe2\x5b\x63\x29\x5d\xd1\x74\x09\x9b\x99\xe9\x2f\xe5\xaa\x63\x1b\xfe\x81\x9a\xe6\x46\x70\xf0\xb7\xcb\x17\x1a\x7d\xc1\xbd\x11\x1c\xd4\x21\x5b\xeb\x5c\x2f\xff\x7b\xb3\xf6\x41\x85\x52\xa8\x8f\x86\x72\xdd\xa9\x7b\xd7\xa9\xfb\xa6\xd1\xba\x1c\x0f\x27\x7c\x3a\xac\x13\x92\xa8\x6a\x76\xad\x9b\xdd\x19\xc7\x41\xb6\xed\xd6\x78\x57\xc1\x02\x7a\x0d\x6a\xed\x61\x38\x45\x22\x8c\xf0\xf3\x2e\x6b\xa1\x16\xdd\x10\xd6\x88\x7b\xa8\x6e\xd2\xf5\x1c\xec\x60\xcf\x1a\xf7\x39\xae\xdd\x3f\x16\xed\x39\xc8\xfa\x81\x76\x0d\xb9\xc0\xb5\xdb\x7a\x7b\x94\x38\x7e\x25\x26\x3c\xf8\xd5\xdc\xed\x8f\xf9\x84\xfb\xbf\x8a\xa4\x5b\xe2\x35\x3d\x76\xff\x33\x51\xfb\x3d\x9d\x30\x8a\x3e\x37\xbc\xe7\x1b\x4b\xb1\xe3\xe4\x73\xeb\x45\x5c\x27\x56\x71\xc9\x5b\x87\x1f\x7a\x4f\x9f\x70\x7a\xd1\x1a\x9b\x6a\x66\x70\xaa\x34\x4c\xaa\x86\x49\x4d\x94\x86\x49\x01\x9d\xb9\xbe\x6a\x9d\x51\x7b\xdf\x1d\xb1\x6a\xc4\xdf\x53\x14\x70\xec\x8e\xcb\x9b\x3f\x97\x3a\x75\x2d\x22\x2b\x7d\x0c\xea\x1a\xe7\x98\x70\xde\x31\xd6\x29\x48\xee\x49\x3f\xf5\xca\x33\x42\xa0\xcc\x63\x41\xe1\x09\x48\x3d\x19\xe4\x5e\x89\xe1\x7b\x54\x78\xcc\xcf\x3c\xd1\x15\x50\x55\xd7\x96\x65\x47\x5c\xc5\x3a\x40\x09\xb7\xd1\x8f\x92\x4b\xfd\xef\xba\xc4\x82\xcc\x13\xe7\xbb\xe4\xe7\xb6\x4b\x7e\x51\x77\x49\x06\xa9\x57\x1e\x49\xb4\xde\x9d\x1f\x5f\xde\x31\xc2\x3a\xe3\x17\xbc\xb4\x14\x94\x2d\x98\x11\xe1\xa9\x51\x65\xde\x3f\x41\x25\xf9\x83\x22\x0a\xa5\x1e\x1c\xf3\xc5\x30\x20\x31\x8e\x26\x6c\x5c\x26\xe5\x98\x69\x1a\xac\xd4\x4c\xf0\xaf\x46\x6b\xa9\x24\xdc\xd7\xdf\xc0\x08\x0f\xc2\x2b\x2f\x6b\xf5\x2a\x73\x28\x48\x39\xd2\x45\x8b\x31\x4b\xd8\xb8\x18\x15\x01\xc9\x70\x5a\x6b\x5d\xe7\xe4\x07\x85\xa6\x14\x02\xc7\x0c\xb4\xc0\x4d\x50\xc3\x5e\xe0\x19\x36\x6a\xd9\xb9\x61\x9b\x1c\x7b\xdf\x4e\xcf\x8d\xb2\xc3\xc8\xdc\x89\x11\x0e\x5f\x39\x3e\x7b\x7e\x40\x81\x6b\xa4\x83\x74\x70\x38\xbb\x8e\x26\x81\x4c\x24\xf6\x87\xb6\xa9\x1f\xfe\x1e\x7c\x2d\xf0\xdf\x50\x13\x74\x8d\x7f\x69\x57\xc1\x42\xe3\xad\x94\x2f\x4d\x6c\xf0\xb5\x00\xda\x6a\xc5\x9e\xa5\xb9\xaa\x28\x69\x5c\xbd\xb7\x7b\xb2\x8b\x3c\x3a\x16\xb4\xff\x8f\x1b\x54\xc0\xbb\x0d\x7e\xd9\x21\xa3\xaa\xa7\x2b\x1c\xe3\xd9\x6e\xb2\x7d\xc2\xc2\x31\x83\x3d\x56\x53\xeb\x6c\x0a\xd6\x59\xf4\xc2\x55\x98\x73\xad\xa2\x25\x86\x8c\x94\x1d\xf3\xbd\x9c\x94\x1d\xf3\xbd\xc2\x35\x3b\xa4\x18\x16\xae\xd9\x21\xd5\x34\x50\x35\x7b\x86\x8b\x69\xe9\xec\x9f\x91\x0c\x14\xf6\x4b\x4f\x78\x3f\x1b\x6f\x51\x58\xb3\x9f\xf1\xa0\x29\xbb\xc2\xb0\x21\xab\xc9\x31\x9d\xac\x88\x2b\xfd\x5e\x61\x6f\x09\xb4\x8d\x5a\x05\x5c\xc7\x48\x42\xbd\xcc\x57\x5e\x01\x25\xa1\x5e\xee\x2b\x6f\x61\xec\x10\x99\xaf\xbc\xf4\xcc\xce\x2e\x41\xb6\xce\xf3\x6c\x94\x70\x3c\xe9\x49\x4f\xfa\xa5\x57\x62\x6c\x8e\xc8\x53\x1d\xa0\x29\xd7\x85\x95\x49\xad\xa7\x7e\x13\xce\x59\xa1\x52\x9e\x51\xb2\x82\x8d\x63\x6c\x7c\x22\x1b\x6b\xcc\xe8\x5a\x6b\xcd\xda\x72\xd2\xb5\xe7\x74\x54\x3a\x2a\xbf\x8a\x81\x6a\xac\x27\x8d\xc5\x20\x1e\x89\xcc\x7f\xc2\xa2\x35\x75\xa7\x25\xc5\xd8\x4b\x7d\x94\x12\xe9\xb1\x80\x7a\xc2\xcb\xb0\x97\x62\xd0\xe3\x23\x4d\x08\xac\x90\xd0\x68\x7d\x3a\x56\xa9\xe9\x89\xe4\xcc\x5c\x12\x2b\x52\x9a\xf3\xd8\x31\x30\xb5\x1d\x70\x50\x3c\xc3\xd0\x94\xe6\x07\xfd\x7d\x46\xa0\xd6\xe4\x70\x92\x33\x67\x47\x7c\x75\x7a\x8e\x39\x1b\xd2\x5d\xdf\xa5\x6b\xd6\xae\x71\x20\x92\x5e\xd9\xd8\xb7\xb3\xee\xdd\x0a\x30\x77\xc5\xce\x0e\x1f\x38\x61\xba\x8d\x59\xcb\xef\xea\x82\x03\x4a\xa2\xb9\x47\x77\x6b\x95\x47\x73\x78\xee\xae\xc4\x63\x20\xbd\x46\x9d\xd7\x6c\xba\x7e\x9f\x7a\x6c\x20\x8f\x0e\x95\x1f\xfe\xfc\x10\xef\x88\x05\x14\x0e\xbe\xb5\x9a\xcb\x51\x22\xec\xb6\xda\x88\x07\x54\x9a\x0e\xe3\x33\x97\x49\xcc\xe3\x47\x77\x49\x3a\xe6\xfc\x61\x7d\x06\xb1\x99\x0c\x2a\xe5\xe8\x95\x18\x3c\xf7\xf9\x60\x88\x0f\x7a\xe0\xcd\x9b\x52\x0e\xc2\xb0\xac\x76\x2e\x96\x48\x0e\x5c\xf5\xdb\x41\x13\xaf\x21\x1c\x94\x9a\x7d\x01\x41\xa4\xe7\x40\xae\x29\x03\x3c\x68\x74\x34\xd8\xe4\xcc\x0d\x62\xf7\x76\x0a\x24\xf9\x0a\xb1\x5a\xb7\xd7\x9d\xae\xa7\xee\xad\x18\xd4\xf8\x4a\xf7\xa5\x69\x5c\x0c\x24\xc4\x03\x86\xf5\xa0\xea\x79\xc1\xc9\x4f\xce\xdc\x7c\xff\xc1\xb9\x61\xed\x2d\x99\x33\xdc\xa5\x1e\x6e\xe6\x0e\x77\xf9\xe4\x70\x9f\x8e\x22\x92\x41\x67\xf4\x90\x0a\x0c\xdd\x24\x07\xa5\xcf\x4f\x94\x8c\x8c\xf2\xf8\xe4\x81\x26\x1f\x1e\x30\xf6\xa1\xeb\x3c\x16\x7c\x85\xca\x73\x23\x69\x86\xc3\xf1\x26\x70\x4c\x84\x37\x13\xdb\x5d\x21\x6a\x30\xc4\xae\x33\x83\x7f\x50\x57\xe7\xdf\x08\x30\x8c\xcd\x99\xe1\xf6\x34\x1e\x6f\xb9\x37\xf3\x14\x56\xcb\x6e\xb6\x24\xe1\x11\x67\x58\xdf\xfd\xc8\xe6\x09\xa7\x33\x0f\x7a\x59\xed\xaf\x89\x5b\xa1\xb9\xdf\xc7\x09\x4d\xf8\x01\xe8\x39\xa6\xb1\xae\xb8\xfc\x5f\x55\xfc\x04\xc3\x5c\x69\x91\x9d\xab\x9a\x2d\x90\xd0\xd5\xd6\x46\x97\x95\xd6\x79\x65\xce\xf0\x4a\x78\x12\x99\x13\x1b\xe1\x11\x43\xd3\x69\xa6\x29\xaf\x14\xb2\x69\x3c\x0b\xd2\x19\x98\xb0\x6f\xc3\x7e\x3a\xd3\x84\x9b\xd1\x35\x51\xd6\x8f\xa5\x06\xad\x7d\x8d\x01\x4e\xe1\x76\xdc\x32\x3c\xc5\x40\x78\xa7\xe4\xed\xb4\x99\x7f\x14\xfb\x14\x0f\x50\x1c\x50\x73\xff\x7c\x7c\x50\xe9\x95\x51\x3b\x18\xb1\x2b\xdf\x5d\x1e\x3f\x7f\x48\xb4\x2f\x10\x7e\xcc\xdb\xbb\x53\x86\x34\x89\x0a\x29\xc6\x87\x9a\xe8\xcd\x20\x27\xd3\x19\x14\xfa\xcf\x82\x04\x31\xac\x1a\xcb\x22\x58\x92\x8d\x26\x4d\x61\xa3\x7f\x25\x1e\xf9\xfe\xe2\x7a\x35\xc2\x65\xfb\xa0\x03\x64\x44\x4d\x17\x33\x58\xe0\x49\x51\xa9\xf7\xf8\x4b\x37\x19\x16\x18\xfc\xcd\x51\xcc\x0c\x27\x85\xe3\x29\x14\x61\xd3\x7c\xfb\xee\x41\x93\xa6\x93\x6a\x43\xa6\x49\xde\x5c\x54\x1a\x63\xef\xea\xbd\xb9\x7f\x52\x90\xe4\x17\xbd\x0f\x7e\x51\xc0\xc8\x6f\x14\xf4\x12\x79\x4f\x77\x90\x92\xf0\x65\xcb\x03\x6e\x3f\x4e\x66\x40\x89\x9e\xbf\x84\x1e\x40\x85\xbb\x8f\x2b\x22\x6d\x11\xa9\x8b\xd8\xc7\x0d\xe7\x1f\x57\xb0\xb4\x05\xcb\x83\x11\x0a\x28\x2a\x37\xe2\xe3\x45\x30\x82\x9c\x75\x3f\xc9\x08\x4f\x10\x23\xcb\xac\x72\x06\xbb\xdf\xff\x46\xb1\x19\x0e\x85\x13\x61\x44\x3d\x94\x7f\xbc\x44\x38\xb5\x20\xa6\x1d\x69\xc2\x3f\x3b\x04\x76\x47\xdf\xf3\x97\x6e\x52\xec\x24\xfd\xd6\x25\xcb\xed\x5c\x7e\xe7\x3e\x78\xf5\x89\x9b\xe3\x37\xfb\x84\xc7\x3f\x9d\x1b\xe2\x57\xf4\x54\x49\x92\xbb\x4a\x92\x91\x51\xfc\x32\x1a\x5d\x3d\xe8\x19\xad\xae\xd9\xc8\xf7\xd5\x35\x35\x56\xe1\x66\x17\x7c\xd3\x03\xa3\xf3\xe5\x23\xeb\x55\x41\x73\x6b\x7a\xd3\xf5\x7e\xb1\x05\x5a\x3e\x7a\x1c\xf7\xfb\x4e\x29\x69\x7c\xcd\x94\xcd\x22\x74\x2c\x29\xff\x6f\xc0\xf5\x8b\x86\xab\x82\x28\x9e\x41\xd3\x62\xab\x93\x73\xda\xf0\xb7\xff\xd7\x06\xa4\x19\x8a\xd3\x71\x38\xd7\xf0\xd7\xb4\x2b\xed\xad\x3d\x3a\x3e\x9f\x98\x69\x4b\xac\x97\x1f\x89\x78\xf5\x04\x63\x0c\x8e\x83\x0b\x50\xf6\x8d\x50\xd7\x4a\xf2\x89\xfa\x2e\x9b\xfa\x22\x53\x1f\xaa\xac\x48\xad\xdf\x1f\x6e\xaa\x9a\xf2\x69\x53\xf9\x70\xd6\x78\x4c\xe4\x60\xdc\x26\xcd\x70\xb7\xa5\x1f\x3f\xb2\x25\x7e\x06\x4a\x5e\xbd\x6d\xaa\x8f\x98\xba\x5c\xbc\xdf\xd7\x75\x5c\x34\x88\xd3\xd8\x49\x1c\xc5\xf9\x43\xec\xae\xec\xe6\x85\x8d\xe3\x7c\x20\x49\xaf\x57\xf9\x06\x30\xaf\x1b\xc5\x33\x10\xd6\x20\x20\x25\x02\x32\x12\x8f\xac\x0a\x24\x92\x3e\xe9\xfd\xd8\xf3\x8d\x92\x72\x30\xf4\xc4\x34\x9a\x0d\x2e\xb1\x51\xb5\x40\x46\xbd\x5a\xc7\xc5\x4d\x9c\xce\x56\x7d\x18\x65\x62\x6e\x95\xaf\x87\x18\x5a\xfb\x59\xfc\x98\x5a\x6f\x50\xba\xe1\x6c\x06\x99\xef\x83\x6e\xe6\x8b\x9e\x6f\xf5\x9b\x75\x23\x55\x13\x46\xc5\x59\x37\xd0\x34\xa9\xcf\xd4\x36\xdd\x80\x90\x36\xe9\x9d\xe6\x5b\x91\x0b\x19\x8e\xf2\xeb\xc6\x94\x35\xf7\x7d\xdd\x26\xae\x9a\xd7\xc0\xe4\x33\x03\xc1\xdb\xbf\xd8\xc2\x41\x0f\x52\xad\x4b\xac\x2b\x1b\xb9\xc3\xe5\x0f\xbd\xf4\x78\xb8\x4c\x5c\x3b\x5c\x45\x5d\x5b\xa1\x6b\xab\x65\x14\x8e\x62\x92\x3c\x7a\xa9\x0a\xa4\x3e\x42\x4b\x82\xe2\x40\x59\x2d\x32\x33\x85\xc2\x0e\x74\x4a\x62\xe3\xec\xba\x79\xc3\x33\xbd\xce\x46\x58\x73\x92\xcc\xe8\x6e\xf0\x69\x3a\x03\x59\x1d\xa1\xa5\x87\x84\xd1\x58\xb7\x28\x47\x87\xe2\x99\x95\x0b\xb5\xfb\xd2\x81\x85\xca\xca\xdd\x44\xbb\x9c\x4f\x17\x9b\x22\xf1\x59\xf4\x20\xed\x42\x93\x76\xa1\x4d\x4b\xd0\xff\x90\xd5\x39\xd7\x18\x41\xc3\x3e\x65\xa0\xff\x19\xfc\x01\x99\xce\xa4\xd1\x09\x83\xde\x77\x3d\xd0\xfd\xcf\x40\x60\x13\x65\x03\x29\xb6\x33\xdc\xec\x56\x1a\x68\x84\xa2\x11\x0f\xa1\xd6\x5f\x9e\x9a\x81\xa8\x8d\xb2\x6b\x27\x2a\x16\xc3\xa6\x4d\x74\x5a\x47\xc7\x3a\x5a\xa2\xcc\xc8\x00\x1b\x32\xb2\x72\xb4\x90\xb5\xca\x5e\x52\x87\x4e\xb1\x95\x3c\x19\x9e\xe7\xdd\xe1\x71\x3c\x73\xd8\xf7\x6b\x83\x18\xda\xd7\x0d\x81\x11\x3b\x91\xb5\xb7\x8e\x4b\xf3\x8a\xeb\x54\xce\x6a\x3f\x30\xc6\x78\xb0\xee\x85\xb1\xf1\x33\x55\x56\x0e\x17\xec\x98\x30\xbb\xac\xea\xd1\xc2\x10\x04\xd2\xd4\x56\x3a\xb5\xd5\x3d\x3f\xaa\xf7\x68\x9c\x54\x3d\x20\xd4\x98\xb1\xb6\x54\xfe\x69\xd7\x4b\xd9\x39\x21\x8c\xe7\x91\xe3\xce\x95\xfe\xf3\x5a\xbf\x6d\x6a\x3b\xf8\x5c\xaf\x4c\x3e\x95\x7f\x2b\x67\x75\x9b\xb4\x9a\x9b\x2a\x50\x77\x51\x91\xe9\xf9\xf9\x6f\xba\xc7\x3a\x75\x1d\xf5\x84\x9e\x9f\x71\x5a\x77\x50\x75\x66\x5c\x9d\xe9\x20\x93\x1d\x25\xaa\xe6\x94\x31\x48\xb2\x31\x93\xb0\xde\xdf\xeb\xcb\x34\x41\xea\xeb\xb4\xd4\xbc\x1e\xa7\xb7\x1a\xd3\xbb\x53\x7f\xc7\xb3\x40\x40\x6e\x9f\xd7\xcc\x9b\xe5\x9a\xeb\x9d\x92\x0f\xa8\x39\x93\x89\xf2\x2c\x05\xa1\x77\xba\x87\x98\x5f\x7a\xa9\x7d\x0c\xc0\xa4\xc4\x4d\x8a\xf0\x4b\x2f\x6b\xe7\x47\x76\x5e\xb6\x11\xf2\xe3\x3d\x03\xfa\x7c\x7a\xa9\xbf\x2e\x5d\xd3\x9a\xc6\x90\xae\xda\x66\xbd\x2f\xcc\xf8\x6f\x32\x50\xcd\x64\x6c\x32\xa0\x4d\x60\xee\xa6\xcc\xdd\x94\x7b\x37\xe5\x5e\xa7\xb8\x4a\x33\x1d\x40\x1d\xeb\x8d\x81\x63\xed\xe1\x28\xcf\xc8\xa7\x89\x12\xe3\xe7\x72\x3a\x3b\x39\xde\xcc\xa8\x66\xd2\x48\xcd\x6a\xfa\x44\x4e\xd5\x8c\x20\xe1\x23\x61\x52\x0c\xa6\xe4\x53\xe5\x1b\x73\xc6\xd6\x15\xbf\xc9\x26\x40\xfe\xff\x1c\x2d\x9c\xd3\x45\x6f\xe6\xdf\x78\xe3\x32\xe0\x41\xaa\x77\x41\xe6\xae\x97\x0a\x23\x2b\xdd\x98\x41\xc6\x7c\x9a\xea\xb6\xa0\xab\x68\x3e\x11\xd3\x74\x46\x84\x49\x23\x51\x82\xa8\xfe\x9e\x0d\x14\xc8\x2a\x72\xa0\x8c\x68\x95\xfa\xd2\x93\x50\x8e\x3f\x33\x2e\x96\x2f\x3d\x35\x70\xd4\x12\x31\x98\x5a\x4a\x8f\x42\x55\x53\xe9\x49\x6c\x77\x54\x4a\x2a\x60\x48\x36\xc2\x25\x41\x15\x9b\xb8\x66\x1c\x65\x90\xfa\x31\x9e\xd9\x31\x6f\xac\x2f\x22\x48\x03\x1b\x8b\x07\xe8\x85\x87\x62\x5f\x57\xee\xe9\x3f\xb8\xc1\x24\xd3\x72\xbf\x8f\x4c\xab\x9e\xfe\x72\x3c\xc6\x38\xaa\x9d\xf2\x8c\x43\x90\x33\x84\x51\x61\x1f\xfc\x69\xca\xad\xe4\x19\x3b\xf5\x5a\x47\xa0\x7d\x47\x46\x4e\xb9\x9e\x71\x6b\x98\x65\x6c\xa8\xcc\xe1\xa3\xf4\x2e\x34\x91\x59\x1b\x49\x67\x90\xdb\xc8\xc2\x46\xa2\x22\x10\xd8\x43\x69\xc0\x70\x80\x32\xf3\x9d\x07\x0c\x8f\x1d\x25\xfc\xa5\x3c\x32\x45\xa2\x8d\x5d\xb7\xe7\x3a\x78\xb4\x66\x49\xe6\xdb\x73\x6c\xbf\x1d\xf5\xcd\xe3\xfe\xd4\x8b\x95\x5a\xd0\xcd\xa2\x2f\x21\x35\xab\xb6\x42\x1c\xb1\x06\x58\x57\x0c\x85\x21\xa0\x02\xe3\x9c\x4f\x7f\xe4\xb0\x22\x28\xf5\x50\x16\xe4\x38\x58\x54\x6f\x1e\x0c\xd0\xc2\x13\x41\xea\x35\x42\x91\x69\xe9\xaf\x3c\x01\x99\xbf\xf2\x0a\x67\x8f\xcf\xe5\x19\xe7\xa4\xed\xa2\xad\x8d\xe6\x2e\xec\x46\xa4\xc6\x03\x85\x6a\x68\x05\x47\xff\xb2\x83\x25\x1f\x73\x56\xa8\x84\x77\xef\x5b\x9c\x2d\xfe\x68\x9e\x2e\x4c\x14\x6c\x13\xeb\xd6\xc3\xd0\xf3\x87\x03\xb6\xee\xcd\xce\x2b\x7c\x84\xbb\x6b\x15\xee\x26\x41\x9c\xf0\x70\x37\xd6\x9f\xfa\x6b\x7b\xad\xc2\xad\x8d\xdc\x8e\xf5\x67\x9c\x44\x07\x0c\x77\x42\x29\xb1\x7e\xcb\x94\xf5\x55\x7d\x00\x59\x01\x35\x9d\x99\xb7\xdc\x5e\xf3\xb9\x75\xe8\x26\xd9\x72\xd5\x86\x18\x67\x1d\x25\x37\x19\x56\x99\x89\xac\x5e\x9e\xfb\x26\xcd\x17\xaf\xe7\xcb\xca\x55\x4e\x2f\xef\x99\x87\xdf\xab\x4a\x3e\x9c\xab\xaa\x2a\x94\xa4\x2d\xe1\x14\x0e\x73\xd2\xe4\xd1\xb9\x59\xa1\xc2\x92\xdb\x83\xcb\x4d\xa8\xf3\xe3\x03\x74\x1b\x4b\xce\x0e\x35\xd5\x29\x1c\x0a\x36\xa7\x89\x82\x7b\x2a\x15\xdd\xda\xce\xe6\xd5\x08\xd8\x11\x3a\x00\xe3\x05\x75\x75\xfc\xaa\x17\xfd\xcc\xa3\x4f\xa1\x79\x5b\x11\x78\x28\xc3\x9c\x28\xfd\x6b\x94\xd0\xe9\xc2\xbe\x12\x97\x9c\xde\x15\x35\x20\x8f\xe6\xe2\x99\x22\x2a\x94\x95\x4d\x9c\xba\x70\xfa\xaf\x19\x60\xf3\xfd\xfd\xc2\xbc\xbc\xd8\x1e\xc5\x9a\x5f\x39\xc0\x9c\xe6\x9d\xba\x79\x98\x77\x40\xe1\x61\x0e\x3c\xd4\x7d\xac\x6c\xc5\x4d\x65\x67\x7d\x4f\x87\xd2\x02\x7c\x3e\x31\xb7\x89\x3f\xd1\x25\x13\xfc\x6c\x16\x2b\xf1\x33\x6d\x4d\x68\xe8\x2e\x30\x13\x17\x4a\x53\x74\xca\x43\x3d\xd4\xb3\x0a\x92\xff\x7d\x7d\xbb\xac\xae\x72\x76\x38\x40\x49\x1e\xef\x58\x41\xb3\xe3\x69\xaa\xf6\x9d\x2d\x93\x3c\xe6\x09\x07\x99\xa8\x03\xd0\x8d\x09\x74\xe6\x59\x12\x15\x6e\x03\x1e\x6e\xa1\x24\x2a\xdc\x05\x3c\xdc\x69\xf2\x7c\x1c\x4d\x64\x62\x1c\x35\x97\xe3\x68\x52\x26\x81\x63\x88\xa2\x0f\xb2\xad\x27\x7d\x1e\xee\xbc\xd2\x0f\xaf\xbc\xe6\x62\x0e\xd8\x58\x4c\x10\x0d\x35\xfb\x41\xc3\x3b\x52\x0e\x24\xd0\x30\x1b\x10\x89\x13\xa4\x23\x74\x74\x4a\xe4\xa0\xb4\xd1\x25\x06\xaa\x97\x9a\xa2\xf2\xc9\x6e\xd8\x01\x30\x70\xea\x0f\xeb\xf8\x61\xbf\xbf\x90\xfb\x7d\x3d\x2c\xa1\x24\x7a\x15\x55\xdf\xd8\x19\xd3\xe6\xb9\xee\xd4\x93\xe1\x5d\x40\xc3\x3b\x4f\x86\xe9\xc8\x35\xe8\x2a\xf1\x75\x4c\x83\x38\x3a\x29\x66\x8e\x15\x82\x68\x98\x99\xb2\x32\xcc\x3c\x1a\xde\xe1\x41\x09\x19\x41\x36\x94\x06\x36\x35\xd5\xb1\x39\x69\xe1\x81\xc2\x01\x68\x94\x87\xbb\xeb\x22\xdc\xed\xf7\x79\xb8\x23\xa4\x08\x77\xfd\x7e\x1e\x6e\xaf\x8b\x70\x3b\x41\x8c\x70\x10\x84\xe2\x04\x31\xa2\x34\x6d\x82\x2b\xb7\x02\xe9\x98\x88\xa6\x8a\x70\xdb\x5c\x65\xf7\xfb\xbd\xbc\x47\x08\x61\x66\x1d\xec\xf7\x17\x3a\x46\xb6\x31\xf6\xa1\x80\xc7\x6d\x92\xc2\x2e\xc9\x0e\xd5\xd2\xfb\x7e\xf1\xe1\xc1\x75\x40\xd7\xeb\x60\x3b\xd6\x4d\xb2\x05\x2a\xeb\xe6\xec\xb2\xab\x07\xc9\x10\xbc\x17\x65\xdd\x72\x37\xd1\xd8\xd1\x1a\xeb\xed\x30\xad\xef\x54\xf5\xd2\x92\xe1\x4e\x9f\x67\xe1\x36\x90\xe1\xd6\x7d\x0f\x4b\x57\x44\xc3\xbb\xeb\x68\xbf\xb7\x5f\x63\x12\x4d\x32\x92\x12\x36\x26\x7a\xca\x44\x82\x32\x5d\xce\x57\xe1\x4e\xcf\xc1\x98\x86\x19\x98\x02\xfd\x3e\xca\xc8\x45\x86\x21\xdb\xef\x51\x4a\x62\x8c\xe1\xa2\x71\x4d\x25\xc3\x6d\xd0\xf4\x2b\x0f\xb7\xa3\xcc\xd4\x86\x84\x27\x02\xe6\x31\x7c\x9d\x7b\x4c\x13\x30\x43\x4f\x0c\x72\x5f\x27\xe9\xf9\xed\x56\x6c\x45\xf3\x15\x63\x4f\xc3\x2c\xd0\x4b\x49\x85\x5b\x58\x98\x2e\x15\x46\x7e\x6d\x3b\xb4\x24\x85\xee\xe2\x28\x23\x0b\x6f\x31\x5e\x79\x2b\x7f\xe9\x2d\x2b\x56\xde\x1d\xc3\x49\x96\x5c\x64\x07\xa0\x7c\xfe\x43\xd7\x2b\x0a\xb7\x44\x00\x0f\xe9\x66\x4a\x67\x44\x63\x35\xba\xd1\x5b\x9e\xce\x66\xfd\xbe\xd2\xe4\x3c\xd4\x97\xd9\x4f\xcc\xe6\x36\xd0\xb0\x69\x9c\xb8\x0b\x54\xb8\xeb\x5c\x40\x35\x16\x1e\xd2\x93\x58\x63\xf8\xf6\x10\x3c\x83\xec\x2d\xa5\x6f\x4f\x08\x83\xe3\x77\x85\x4a\xf5\x26\xdc\xf9\xb4\x7d\xe5\xd8\xf8\x95\x64\xe6\x78\xd2\xa8\xa2\x96\x37\x88\xb1\x1c\x49\xdf\xaf\x2f\x44\xca\xa9\x9c\x59\x0f\x16\x55\x35\xe3\xd4\xfe\xee\xf7\x75\xbd\xa4\x8a\xe9\xf7\xf5\xe2\x4b\xab\x86\xc3\x2d\xb6\x1e\xac\x0e\xa5\x79\x08\x2d\xa3\x48\x82\x79\x3b\xef\xe4\x2c\xe8\x72\x00\x15\x48\x8e\xaf\x44\x39\x56\xfd\x3e\x9d\xaa\xd9\x05\xe1\x9a\xe6\xc7\x23\x5a\x57\xa9\x20\xc6\x07\xa0\xeb\x8d\xda\x9d\xf1\x2b\x12\x99\x9d\x65\x0e\x60\x5b\xd5\x01\x38\xdd\x2a\xf3\x58\xf3\x5f\x85\xc0\x34\xac\x59\x45\xcd\x45\x10\x5e\x6f\x18\x6a\xf8\x0c\xf7\x61\x92\x03\xac\xbb\x4e\xe7\x2a\x35\x5b\x53\xe9\x34\x6a\xbc\xe3\x6d\x13\xde\x0c\x95\x26\x9c\xec\x20\x1e\x0e\x40\xb7\x4a\xa6\x99\xba\x61\xe7\x5c\xa5\x54\xdd\xa9\xd8\xe0\xc3\x61\x24\x43\x4d\xeb\x20\xb3\xf6\x9b\xa3\x47\x43\xee\x64\x6b\x26\xfd\x09\xf5\x7b\xd8\xc1\xcd\x71\x11\xe3\x25\x96\x85\x66\x68\x11\xde\xef\x91\x20\xcc\xf0\x16\x18\xc3\x8d\xf1\x6c\xd8\x24\xdd\x84\xbb\x6b\xa1\x71\xe4\x8d\xc6\x91\x22\x34\x16\xdc\xdb\x6b\xa1\x97\x40\x5a\xd1\x0f\x86\xba\x40\x37\x18\xb2\x9a\x68\x40\x29\x86\x55\x1d\xb0\xc7\xab\x8e\x5a\x93\x32\xb4\x27\x23\x5a\xc1\x0d\xd6\xc4\xf1\x31\x2d\xb6\xae\x09\x31\xbb\xf6\x51\x6a\xfd\xb4\x94\x61\x73\x1a\x55\x51\x06\xcc\x39\xcd\x75\xbd\xac\xcd\x3d\x87\xb2\xd1\x2c\x41\x73\xb8\xc1\x58\xb3\x79\x8b\x27\x9a\x92\x7f\xd2\x94\x31\x50\x9e\xf7\xfb\x4d\x03\x8b\x33\x0d\x9c\x8e\x6f\x6d\x44\xdc\x8c\x63\xe5\xef\x2d\x25\x2c\x6c\x57\x00\xc2\x50\x53\x93\xba\x13\x9d\xc1\x2b\x9a\x40\x66\x47\xb2\xa5\x7b\x74\xf2\xf2\x68\x6c\x33\x0c\xf7\xa4\xde\x9d\x50\x86\x35\x12\x43\xa9\x3d\x48\x52\x83\xe1\xe0\x1e\xbb\x69\x99\x4d\xcb\x9a\x34\xd9\x8e\xa7\xfe\xc8\xea\x98\x0c\xc3\x8e\xf4\xf2\x1e\xac\xc2\xdd\x78\xa9\x97\x00\xda\x90\x15\xac\xc8\x12\x96\x64\xa3\xd3\xf4\x38\x76\x26\x77\xf9\xc4\xe4\xee\x9c\xf1\xce\xf5\x78\x3b\xf0\xac\x61\x97\x4d\x77\x33\x0d\x49\x77\x16\xf2\xee\x84\xe7\xce\x84\xe7\xc7\xf3\xb1\x32\xde\xa1\x8e\x26\xb1\xf8\x93\x49\x5c\x55\x37\xa1\x69\x33\xea\x0d\x61\x8c\x47\xa9\x4b\x0a\x8f\x52\x67\x96\x70\x3d\xbe\x0e\x8f\xb5\xee\xb2\xcf\x5b\xc7\x54\xa2\x9b\xb2\x73\xec\x24\x64\x83\x03\x1e\x73\x9a\x2e\x92\x8b\x08\xb8\x98\xd3\x42\x9f\x01\x95\xad\xa9\x26\x0e\x2b\x96\x60\x57\xd1\x88\xad\x35\x83\x6c\x7d\x8e\x03\xb3\xee\xc4\xab\x47\xe3\x4c\x44\x7d\x67\xae\x49\x42\xea\x1b\x5d\x29\x43\x1d\xfa\x0c\x1b\x0f\x92\xa6\xad\x51\x66\x0c\xe1\x4d\x5d\x99\x61\x32\x41\x1a\xb9\x9b\xb9\x0f\x6f\x12\xe2\x19\x08\x53\xad\x49\x18\xb6\x09\x43\x5d\x22\x05\x01\xba\xd2\xe9\x65\x9b\x70\x39\x33\x72\x00\xe3\x76\xdd\x31\xa8\x90\xb5\x7f\x89\xb5\x08\xe5\xf2\xce\xbe\x5f\x58\x7d\xab\xf6\x62\xc4\x3c\x4b\x15\x2e\x8d\xac\xf2\x0e\x34\xc1\x62\xcd\x3b\x55\xb8\x0c\x24\xa4\x44\x85\x77\x2d\x0d\x7c\x4a\xc1\xf7\xfe\x4f\xcf\xcf\x94\xa5\x2a\xed\x6b\x7e\xd4\x67\x1e\xc7\xf8\x28\x56\xfa\xe2\x4c\x6c\xe9\xa7\x3a\xd6\x55\xca\x76\x59\x68\xcd\xaf\x1a\x6a\xff\x60\x05\xbd\xcf\x18\x7f\xc6\xb1\xf9\x51\x13\xa9\x69\x85\xd7\xb2\x7a\xa7\x65\x4a\x67\x38\x29\x75\x94\x0e\xb7\xd9\x95\xcd\xce\xf7\x7b\x64\x52\x4d\xc6\x73\xdd\x69\x4a\x48\x6c\x32\xea\xea\x1d\x1d\x59\xd7\x0f\xf4\x83\x3c\x7a\xa8\x87\x70\xe2\xf3\x56\x3d\xdd\x51\xd8\xf6\x95\xe7\x9a\xc5\xbc\xed\xf6\x0e\x2a\x19\x8e\xa5\x08\x5b\x0d\x01\x2b\xd5\xf7\x49\xaf\x07\xca\xfc\xbd\xc9\xc2\x3c\x2d\xd4\xdf\xf9\x9c\x6e\x89\x71\x46\x39\xa2\xe4\x26\xb3\x4f\xa7\x2a\x3c\xf2\x7d\x89\x69\x68\xe4\x09\x9a\xc4\xae\x7c\xb3\xb6\x2f\x7e\xa6\xa0\x49\x40\x93\x6e\x4c\x32\x4c\x86\x47\x96\xd4\x97\xfe\xb0\x4d\xe8\x34\x9a\x1d\x30\x54\x85\xad\x29\x4a\x4a\xdc\x86\xad\xdc\xec\xba\xbd\x7d\x3b\xd7\x90\x79\x85\x26\x02\x46\x8a\xd6\xb3\x45\x03\x29\xc7\xb8\xdf\x67\x63\x23\xb1\xc6\x46\x97\xa4\x30\x8e\xe1\xc3\x2d\x31\x52\x9f\xca\x70\x9a\xe1\xc6\x1f\x4d\x3e\x15\x21\xf3\xe3\x99\x11\x31\x9b\x40\x10\xcf\x7c\x22\xc2\x2d\xe4\x35\x19\x23\x42\x06\xb1\xf1\xae\xe0\xc7\x23\x56\x79\xee\x29\xa6\xe5\x2c\x64\x41\x60\xbd\x99\x9c\x94\xf6\xeb\x8a\xbb\xd5\x0c\x9f\xa8\x86\x0c\x1b\xaf\x28\x47\x70\x99\x8f\x99\xae\xf2\xa8\xa5\xd9\xd3\xcd\xf8\xf1\x07\xe0\x2d\x5a\x82\x2f\xc6\xc0\x82\x00\x64\x10\xd4\xcf\x33\x6e\xc9\x83\x74\x5f\xbd\xa5\xc7\xaf\xde\x1a\xb2\xc1\x4c\xd4\x48\x8f\x33\x16\xc6\xab\xfa\x06\xd5\x0f\xa0\xd5\xf0\x4c\x5a\x18\x93\x8f\x83\xd7\xc0\x52\xef\x06\xcd\xe4\x34\x0a\x23\x75\xcd\xd1\x6c\x62\x66\x34\x9a\x69\x36\xe1\x94\xd7\x17\xd5\xf3\xc6\xf8\x0c\x65\xa6\x0e\x27\x24\xa5\x5e\xe4\xf5\x5a\xc9\xa7\xd5\x5a\xc1\x15\xa0\xce\xce\x6c\xf5\x55\x9c\x8d\xf6\xfa\xcc\xb5\xe1\x5a\x38\xea\x1f\x42\x16\xad\x43\x7b\x39\x26\x51\xbf\x7f\x81\xe8\x49\x9e\xa9\x9c\x55\x5e\x71\xda\xfb\x05\xc7\xae\xe2\x08\x59\x19\x91\xfb\x74\xe6\xbc\x67\x65\x10\x69\xf5\x99\x3a\xef\xe2\xd6\x71\x75\x62\x75\x93\x45\xa2\x51\x3a\xa6\x23\xdf\xa7\xb8\xba\xa4\xec\x20\xb8\x66\x66\x6d\x96\x2e\xba\x1b\x09\x37\x5a\xe7\x7f\x12\xcd\x39\xcd\xfc\x19\xae\xfb\x5c\x9e\x35\x1d\x69\xb9\x84\x31\xb1\x8f\xca\x93\x78\x12\x27\x3a\xc5\x29\xfc\xe6\x4f\x0a\xc7\x01\x37\x57\x38\x4e\x91\x77\x1f\x2e\xa2\x8f\xd5\xf0\x6a\xac\x26\x1c\x0d\x3d\x85\x93\x61\xc0\xd1\x30\xd0\x9f\x1d\x2b\x80\x0e\x25\xe0\x39\x16\x93\xff\x39\x4a\x71\xd3\xbe\xa8\xef\x2f\xa3\x71\xcb\xa2\x58\xdf\x58\x63\x12\xb7\x12\x80\x4a\x4e\xec\x71\xa0\x44\x79\x8d\xb2\xe3\x73\x03\x19\x9f\xd0\xe4\xd2\x33\x8f\x0e\xfb\x34\x08\x5f\x5e\x39\xa4\xcb\x97\x7f\x32\x1c\x8d\xb2\xa7\xd2\x9c\x9e\xa3\x69\xef\x96\x8b\x5b\xbd\x4b\xee\x7d\xeb\x9a\xef\x7f\x27\x8f\xb5\x61\x75\x5d\x43\x88\x23\x0d\x4f\xec\xde\x25\x7c\x73\xa6\x46\xc3\x26\xc7\x01\xf7\xdc\xdb\xb3\xaf\xdc\x15\x3e\x7a\x42\x7f\xe9\x7a\x68\xde\x18\x0c\x9f\x5f\x9d\xbe\x3e\x3a\xa1\x44\x0d\x7e\x15\x8e\x0a\x7e\x3c\xe0\x38\x41\xdc\x5c\x93\xab\xc1\x73\xc7\xac\xab\x75\xbd\x13\xfb\xdc\x73\x7a\x10\xc4\x91\x27\x1d\xdd\x3e\x24\x03\x8a\xbd\x5f\xc5\xa0\xb3\x74\x7e\xe8\xcc\xed\x7e\xaf\xdb\x08\x5f\x46\xf1\xd5\xa7\x4e\x1b\xce\xb1\xed\x29\x0f\x21\xee\xc7\xd8\x53\x41\x67\xbc\xbf\xef\x8c\xce\x60\x18\xbe\xd4\xf3\xfa\x32\xbc\x7a\x31\xbc\x32\xef\xd2\x0f\x8f\xe2\x10\x0f\x48\x1c\x5e\x99\x58\x6c\x9e\x75\xbe\x4a\x86\x55\xb8\x9b\x6b\x18\x0e\x9d\x6c\x9f\x5d\xbe\xbc\x4a\x3a\xa9\x2f\x3a\xc9\x9f\x3e\xbf\x7c\x79\xe5\x68\xb6\xba\x24\xdd\x2a\xcb\x1b\x92\x4e\x7f\x3b\x24\x9d\xd1\x3a\x08\x33\x7b\xfd\x6c\x48\xba\x55\x45\xd2\x65\x15\x49\x97\xb7\x24\x1d\x2b\xde\xa4\x6f\x90\x30\xbe\xb4\x0d\x69\x61\x23\x24\x9e\xa8\x30\x33\xef\x6e\x9a\x30\xc3\x13\xc4\x2c\x83\x6f\xc2\x54\xa7\xaf\x12\x8a\x13\x36\x8e\x3f\x8d\x26\x2c\x20\x97\x2f\xa2\x24\x88\x3f\x8d\xc6\x4c\x73\x12\xbe\x0e\xe3\x73\xe7\xc0\xb7\x96\x44\x04\x43\x12\x82\x25\x01\xf5\xb9\xe0\xa8\xe2\x76\x3a\x5a\x38\x1d\x2d\xce\x74\xb4\x38\xd3\xd1\xe2\xaf\x75\xb4\xf8\x7f\xd2\xd1\x4f\xfe\xb4\xa3\x7f\x77\x3b\x9a\xa7\x2d\x91\xae\xbf\x9d\x8e\xe6\xa6\xa3\xa9\x43\xa4\xe7\x55\x47\xd3\x8f\x21\xd2\x9f\xfd\xf8\xa7\x90\xfc\x7c\x4a\xd3\x9e\x23\x68\x1d\xda\xdd\xd0\xb6\xee\xb6\xf9\xa7\x73\x8b\x36\xd5\xd0\xf2\xf0\x6e\x06\x54\x7f\x67\xc0\xc3\xf9\x0c\x24\xf9\x4d\x5a\xeb\x88\x5f\xac\x0f\x11\x60\x3a\xe6\x13\x89\x28\x28\x08\x4a\x8c\xf7\xfb\x68\xa4\xa6\xd1\xcc\xa3\xd3\x78\x66\x3c\x84\x99\x2b\x7a\x8d\x5f\xf4\x37\x09\x62\xe3\xdc\xd9\x7c\x48\xf3\xb7\xd4\x7f\x31\x18\x0b\xf9\xca\x6a\x15\xc9\x89\xa3\xdb\x6b\x14\xad\xcc\xdd\xa3\xeb\x98\x20\x68\xbd\x6e\x18\xcb\x1b\x53\xbe\xd5\xb4\x9e\xf2\x90\x02\x0f\x17\x33\x9b\x60\xf5\xba\xa7\x12\x58\x1d\xf1\x9e\x3e\x10\x36\xe9\x98\xf0\x30\x5d\x51\xe2\x5c\x95\xfe\xf2\xa7\xaa\x07\x8e\xda\xa6\x3c\xf7\xaa\x9f\xa9\xc1\xbd\x0f\xea\xf7\xd1\xd1\x53\x7e\x1d\x43\xcb\x4f\xe4\xb1\xc5\xa8\xf1\x96\x49\x3d\xe7\x19\x42\x5a\x3d\x6c\xe8\x28\x7c\x3e\x49\xc6\xac\x85\x1d\x93\x85\x90\x6b\xeb\xdc\xb5\x13\x63\xac\x1b\x99\xa3\x17\x9f\x11\xe1\x84\x72\xc2\xaa\x29\x81\x82\x88\xfa\x73\x41\x98\x19\x3e\x58\x11\x61\x3f\x96\x3a\xc6\x68\xd9\x6f\x74\x94\xfe\x6a\x8e\x9a\x69\x34\xbb\x30\x0e\x3e\xf7\xfb\x74\x1a\x9b\xef\x78\x36\x41\x15\x75\xd4\x6b\x1a\x43\x3d\xeb\x0f\xaf\x07\xf5\x07\xee\x61\x28\x1b\x4e\x27\x86\x6d\xf2\x20\xad\xab\xc9\xcc\x5c\x44\xc3\x23\x4b\x2e\xeb\xd8\x78\x66\x58\x6f\x7c\xc0\x38\xb1\xad\x99\x76\xce\x34\xe3\x67\xbe\xae\x3a\xa9\x93\x7a\x18\xf2\x0b\x52\x4c\x50\x1e\x14\x06\x41\x14\x06\x21\x24\x45\x90\xeb\x60\xbf\x8f\xf2\x0a\x43\xb4\xc0\x54\x65\xa5\x25\xcd\xfd\x9e\x1d\x19\xe4\x40\x1e\x0c\x2d\x64\x39\x14\x06\xa6\xa2\xdf\x7f\xaa\x90\x5f\x18\x80\x60\x71\x41\x56\x93\xa7\xdb\xd0\x23\xfd\xdb\xb9\x26\x16\xb0\xc2\x07\x9c\xac\x4e\x5b\xa8\x8a\xf8\x2b\xdb\xc0\xd2\xcc\xc5\xc6\x8c\xce\xd2\xcc\xc5\xc6\xcc\x05\x25\x27\x05\xf5\x14\xfe\xd9\x8c\xd0\xe0\xb9\x05\x60\x69\x5d\x63\xd7\x73\x42\x6b\xc0\x74\x1b\xd6\x65\xb6\x1e\x01\x14\xd7\x6d\xc7\xb6\x61\x7c\x06\x60\xdb\xae\xbf\xb1\x00\xd3\x46\x30\x0f\x67\xe5\xd5\xc0\xac\x12\x08\xb3\x7a\x30\x48\x91\x72\xca\x2c\x8b\xa1\x3a\x2c\x86\x3c\xc7\x62\xfc\x7a\x84\x31\x89\x0a\x10\x27\x3e\xc7\x93\xd8\x5a\xc3\x24\xd1\x19\x0c\x6a\x4c\x0d\x3d\xf7\x9d\xbb\x6f\xff\xab\x7a\x9e\x39\x8a\x29\x0d\x5b\x11\x43\x55\x7d\x87\x1a\xfe\xfa\x48\x53\xa8\x36\xe5\x34\x0a\x43\xd6\x6c\x13\x24\xf9\xb1\xc2\xc8\x25\x99\xaa\xd9\x48\x5d\x10\x22\x47\xd8\xbc\xc1\x92\x4a\xca\x55\x3d\x71\xaa\x95\x87\xb3\xf6\xde\x83\xda\xec\xcd\x65\x05\x83\x48\xd7\x45\x09\xad\x8a\xb7\xac\x45\xab\x8c\x7c\x04\xd6\xd4\xa8\x5d\xd4\xf9\xad\xdd\x31\x1d\xe1\xfa\xc9\x1b\x0c\x9c\xd0\x33\x35\xb6\xe9\x0e\x1e\xfc\xb1\x55\x21\x36\xa6\x4b\xcd\x1d\x67\x03\x3c\x25\xa6\x7d\x90\xfa\xd7\x1c\x49\xd5\x83\x4d\xc0\x48\xb5\x9e\xc0\xda\xa4\x8c\x4a\x42\x08\xd3\xac\x74\x79\x2e\x57\x6b\xb1\xd2\x2a\x30\x97\xf6\x92\x7e\xc1\xb6\x74\xbe\x27\xee\xdb\x0d\x6e\x4a\x9f\x04\x2f\x1d\xe5\xd2\x6e\xa1\xe7\xc0\xc3\xcd\x96\xf0\x70\xab\x3f\x76\xa4\x23\xcf\x94\x47\xd5\x38\x34\x62\x59\x76\xad\x84\xcd\x9b\x25\xf6\x61\xc4\x6c\xa5\xe7\x9a\x44\x70\xa1\xd9\xcf\x74\xd1\xf1\x6e\xcc\xad\x90\x12\xd2\xe6\xad\x3c\xc8\xec\xee\xc8\xae\xd3\x11\x66\x44\x4c\xb3\x59\xf5\xd8\xbb\x26\x7b\xca\x12\x31\xa8\x1c\x8a\xd9\x8a\x7d\xc2\xaa\x2f\x90\xed\xb7\xc7\xc2\x6c\x0b\x65\x37\xc2\x3a\x6a\xaf\x1f\x01\x7a\xb4\xe0\x68\x82\xdd\xc6\x84\xdb\xca\x8a\x54\xa6\x7c\x2e\xd6\x08\x07\xe1\x55\xed\x73\x3f\xdc\x9d\xa6\x59\x3a\x29\x27\xca\xa3\xd3\x3a\x9b\x91\x75\xcd\x46\x2d\x70\x55\xc2\x17\x76\x10\x72\x0d\x63\xee\x35\x0d\x6a\x08\xdb\xe0\xee\xc0\xc3\x6c\x4b\xe4\xa0\x2e\xae\x3b\xb9\x23\x65\x13\x76\x14\x23\xcb\xce\xee\x6d\xbd\x57\xe8\x59\xe8\x15\x42\xaa\x1e\xf4\xb2\x15\xcb\xe7\x92\xf2\x1e\xf4\xee\xd3\xbc\xa4\x3d\x3d\x6a\x66\xbc\x09\xb7\x4f\x0b\xbc\x2f\x48\x5e\xba\x67\xb2\x28\x3b\xc2\xec\xba\x06\x47\x2f\xb1\x9b\xc1\xd4\xeb\x28\x13\x76\xc1\x52\x36\x3d\x38\xc9\x97\xbb\xb5\x34\x0e\x6b\x8f\x75\x96\x1a\xe4\xd5\x02\xb2\xdf\x4f\x67\xf8\x09\x53\xf2\x47\x8b\x5f\x12\x0e\x16\xbb\x24\xea\x70\xd0\x38\xdc\x51\x1d\x2c\x9f\x12\xe2\x2f\xca\xa7\x84\xf8\xab\xb2\xbd\x9e\xdd\x45\xf6\x6a\xd6\x75\x4a\xb9\x3c\xea\x4a\x65\x1c\x5f\x0b\x58\x1c\xc5\xb3\xb2\x8b\x78\x82\xb8\x7a\x00\xb4\xd5\xd9\x9e\xce\x3a\xea\x91\xd1\x19\x65\xf0\x79\x79\xa4\xfd\x48\x62\xe7\xb9\xc1\x4a\xb9\xbf\x79\x1c\xaa\x92\xb6\x18\x07\xae\x46\xfb\x15\x8f\xcb\x7e\x1f\x49\x42\x8d\x7f\xc0\x33\xf5\xdf\x77\x07\x42\xd2\x79\x99\x51\xb4\x2e\x21\x72\x2f\x43\xba\xd3\xcc\xfd\x2e\x51\xb9\xeb\x26\xdf\xe8\xa0\x95\x1e\x74\x5e\x94\x6f\x84\x50\xf5\xc3\xf2\x43\xbf\x23\x2d\xb8\x29\x8f\x84\x69\xf6\x21\x75\xbf\xd2\x6c\xb7\x5a\x7f\x12\x0f\x94\x51\xfe\x34\x4f\xa8\x13\x35\xc2\x6c\x4a\x8d\xf2\xa5\x2f\xcf\x68\x41\x6e\x9d\xee\x4d\xf5\xc2\xb3\xd6\xfc\xfa\x2b\xdd\x1a\x27\xb2\xed\x4d\xc6\x51\x27\xab\x03\x80\x34\x67\xd3\x24\x76\xdd\xf4\xdf\x96\x8e\x32\x5f\xb3\x5e\x1d\x0a\xba\xee\xee\xc4\x78\xd7\xe7\xe1\xad\x92\x94\x86\x6a\x25\x69\x3a\x77\x84\xfc\xa5\x6b\x0e\x7a\x5a\x11\x35\x32\x8f\xfa\x92\x1b\x4f\xe8\x54\x05\xf1\xd3\xd5\xbd\x2d\xbb\x0a\x0b\x4d\x75\x95\x95\x49\xd9\x56\x75\xa4\x4e\x5d\x91\x28\xe5\x08\x2b\x24\xc9\xdb\x12\xd1\xa9\xe6\x42\x70\xe5\x50\x1e\x71\x22\x5b\x65\x7d\x47\x02\x7a\x3c\x6a\x46\x45\xc2\x91\x5d\x1e\x63\x08\xa3\x0c\xe5\x08\xfe\x8e\xcb\xcf\xe9\x46\xad\x02\x65\x7f\x1d\x19\x5f\x79\xc6\xf4\xb8\x55\xe9\xec\x74\xb4\x34\xbc\x77\x79\xd2\x51\x7b\x09\x62\x88\xc4\xe6\xd0\x11\xfa\xd0\x29\xf5\xa1\x43\x8d\xdf\x79\xcd\x69\x8c\x94\xa9\xfb\xa0\x9b\x38\xb2\x08\x7d\x77\xb2\x1d\xa3\x7a\x3b\x36\x20\x80\x43\xb1\x04\x01\x33\xaf\x98\x5a\x9a\xcf\x4e\x1a\x18\x4f\x6e\x39\x5b\xfb\x44\x7f\xaf\xc5\x5c\x7f\x50\x9f\x54\x17\xcf\x3e\x92\xfa\x3b\x5b\x69\xcc\xe2\xb4\xfd\x47\x8b\x99\x08\xaf\xab\x22\xca\x7e\x55\x0e\x47\xe8\x00\xa9\x90\x97\xeb\x3b\x2a\x03\x5e\x7d\x60\x7b\x3c\x71\x7d\x3c\x49\xa8\x2b\x0e\xcc\xb7\x6d\x90\x9c\x87\xc9\x91\x67\x96\xc7\x0c\x5f\xb5\xfe\x52\x9e\xd1\x42\x09\x79\xba\x59\x8e\x73\x24\x4e\x75\x5f\x1c\x4f\xba\x3d\x36\xd4\xf1\xb1\xf1\xe5\xd1\x6a\xbe\xdd\xa4\xd9\xfb\x5b\x4e\xb7\x6a\xe4\x06\x88\x02\x55\x05\xcd\x63\xaa\xbc\x09\xda\x97\x56\x81\xba\xa9\x0e\xfd\xf6\xef\xaa\xfe\x0f\x56\xe6\x48\x3e\x3b\xe0\xd4\x7a\x7d\xb2\xd1\xeb\xd3\x8b\x40\xfa\x2a\xac\x11\x51\xf8\xd9\x67\x9f\x79\xa5\x57\x8e\x2b\xad\x20\x47\x30\x5a\x9e\xba\xa1\x2b\x5c\xb9\xbd\xae\x5a\x42\x81\x61\xd1\x3a\xe6\xe7\xe1\xd6\xd7\xb1\x0b\x5c\x3f\x10\x6e\xf3\xee\x4c\xde\x95\x71\x6b\xd9\xe6\xdd\x99\xbc\x4b\xf3\x54\x1d\x72\x51\x01\x36\xaf\x3a\xb5\x68\xe0\xf8\x96\xd0\x2a\x9f\x90\x78\x10\x19\x0b\xe2\x41\x04\x2b\x13\x58\x9a\x80\x41\x24\xcd\xe3\xd7\x5f\x99\x07\xd7\x8d\x8c\x43\x86\x5b\x12\xc8\x50\x82\x0c\x77\x24\x02\xe3\x23\x22\x1f\xc7\x16\xe7\x18\x4d\xf0\x70\x4b\xca\x50\x42\x59\xa5\x97\x3a\x7d\x68\x77\x27\x23\x74\x3a\x9c\xc1\x4f\x65\xf5\xae\x37\x98\x97\x49\xbf\xd4\x41\x86\x41\xba\xf3\xc1\x74\xb4\x79\xaa\xab\x24\xd2\x99\x37\x10\xe4\x72\x94\x8f\xc5\x48\xf8\x3e\x7e\xac\x6b\x22\x74\x2a\xaa\xf7\x65\x37\x24\x82\x39\x89\xcd\xe3\x87\x56\x49\xa0\x74\x17\x54\x7a\x41\x48\x39\x4a\x49\xea\xd6\x39\xf7\x7d\xcc\x16\xe8\xbb\x12\xa5\xe6\xfe\x7d\x43\xe2\x91\x55\x98\xb2\x2a\x78\x1b\x03\x7d\x46\x5c\x08\x47\xd9\x05\x69\x6a\xd1\x11\xfd\xfe\xc5\x77\x25\xca\x80\xe1\x51\x46\x32\x27\x01\xee\x7d\x1f\x8f\x36\x13\x74\x3f\x9e\xef\xf7\x73\x42\xee\x8d\x86\xee\xb5\x0c\xe5\xe4\xdf\xa6\x03\x24\xc5\x89\xfe\x22\x19\x18\x07\xe8\x01\x4e\x50\x3d\x2a\x25\x61\x66\x98\xac\xd3\xd1\x35\x41\x85\xbf\xc0\x83\x21\xec\x08\x5a\xf9\x4b\x63\x79\x4e\x22\xd3\x53\x41\xa2\x66\x64\xec\x88\x00\x0b\xb7\x01\x59\x03\x0b\x77\x01\xd9\xd5\x6f\x3b\xea\x85\x73\x03\x2c\xac\x5d\xa8\x1b\x1f\xe9\xe1\xd6\x63\xe1\xd6\x67\xe1\xce\x63\xe1\x0e\x6b\x64\x22\xc9\x0d\xb4\x6b\xe0\x87\x8e\xb7\xe4\xaf\x2a\x9e\xc1\xd9\x50\xfc\x89\xed\xf4\x83\xc9\x3a\xa7\x39\x55\xf4\x19\xef\x0c\x7b\x37\xce\x3c\xe1\xdc\x8a\xcd\xcb\x13\x85\xfe\x0e\xf6\xe7\xe1\x96\x28\x9f\x48\xcf\x32\x35\x3b\x42\x6d\x60\x07\x3c\x94\x1e\x91\xe0\xbc\xb7\x42\xcc\x23\xbd\x65\x6b\xc7\xc7\xf4\x81\xf0\x7d\x89\x4a\x73\xf8\x99\x46\x1c\xc1\xf8\x11\xd3\xa3\x77\x3b\xad\x35\x3a\x0d\x2e\x60\x35\x2e\xd0\x80\xd8\x07\x8c\xf6\xad\xde\x86\xaa\xf2\xa7\xa4\x72\x65\x3d\x12\x1e\x11\xa0\x81\xaa\x9e\xc5\x0f\xaf\x7c\x24\x03\x61\x1c\xc8\x9b\x17\xb2\xda\x89\x70\x18\xf1\xa1\x67\xfc\x41\xa7\x38\x40\x32\x20\x29\xf6\x64\x20\x3c\x81\xab\x52\x23\x1a\x1a\x86\xce\xcf\xbc\xd2\xcf\x3d\x06\x34\x34\x7c\x9d\x9f\x79\x2c\xc8\xbd\xd2\x5e\xf2\xd6\x99\x64\x9d\xec\x88\xc5\x5d\x92\x30\xf6\x6b\x5a\xe9\x9c\xe8\x59\x97\x73\xfd\x25\x9c\x25\x26\xcf\x5b\x18\xf8\x9a\x4c\x80\x08\x0f\x6a\xea\xd5\x11\x12\x7f\x34\x69\xf5\x73\x69\xad\xea\x12\x67\x59\xfd\xf3\x2f\x52\x54\xff\xd4\xa4\x8e\x26\xaa\x3a\xb5\xfc\xe2\x74\xc5\xa8\x01\x56\xfa\x7f\x30\xd7\x81\xf9\x16\xe6\x3a\x38\x77\x9f\xe0\xfd\xed\xe8\xb4\xda\xfa\x6a\x7a\x39\xb3\xda\xa2\xbe\xb2\x44\xac\x2e\x6a\xac\x55\x02\x93\xa6\x69\xf7\xf9\xce\x98\xac\x04\x6a\x3a\x6c\xae\x52\x23\x43\xb6\x53\x9f\x94\x83\xa1\xe6\xac\x31\xd8\x5b\x00\xcd\xf1\x1a\x63\xd4\x08\xc3\xe3\x36\xa1\xb0\x4b\xa4\x86\xa8\xd4\xe0\x30\xf7\xc9\xf2\xf2\xa3\x4c\x4d\x9e\xd1\xb1\x9a\x98\x47\x7c\x93\x29\xed\x38\x05\x7c\x75\x34\x95\x9a\x64\xb0\x4e\x32\x26\x9d\x10\xc2\x89\x6e\xab\x62\x83\x5c\x72\xfe\xd7\x93\x7d\x6a\x1d\x60\x1a\xf9\xb0\x91\x6c\x38\xaf\x28\x7e\xe0\x52\x81\x19\x8f\x38\x2e\x8e\xf9\xb6\xec\x0a\x92\x23\xc7\x02\x32\x88\x8d\x61\x99\xb4\x76\x81\x65\xd3\x51\x36\x36\xaf\x8a\x12\x09\xd2\x0a\x58\xa0\xb5\xd6\xa5\x18\x74\x09\xa2\xc2\x45\x2e\xf4\x69\xa4\xc3\xa5\x0e\x1b\x06\x46\x60\x97\x63\xfe\xba\x33\x30\x93\x47\x53\x24\x79\xea\x9a\xd5\x56\xa8\x06\x1c\x7b\xfc\x00\xba\xba\x27\xb3\x9a\xb6\xaa\x9c\x87\xe4\x5d\xe6\x88\xb0\x4e\x46\xd2\x48\xcd\x8d\x01\x5c\xf4\xe1\xfb\xfe\xea\xfd\x71\x3e\x4d\x67\xd7\xdc\xbe\x90\xa2\x89\x47\x6b\xc7\x8f\x43\x49\xef\xa9\x2c\xa8\x79\x42\x56\x9d\xc6\xda\xa7\xca\x49\xda\xb8\x17\xd0\x33\x28\x02\xe3\xb9\x54\x38\xf6\x68\x7a\x26\x4d\xb4\x32\xd1\x27\x93\xd9\x6c\x8a\xb5\xa8\x55\x0b\x75\x87\x62\x48\x35\x80\xf5\x0c\x4d\xe9\xcc\x28\x4f\xa1\xae\x5c\xf1\x47\xa7\xf7\xad\xfc\x09\x75\xdc\xbd\x9d\xef\xfc\x78\x38\xf9\x9f\x32\xf9\xb5\x84\x8c\xc8\xc9\xb7\x32\xf9\x55\xb6\x6f\x22\xd8\x4a\x8d\xd5\x64\x6a\x9e\x4c\xe3\x90\xc1\x6b\x89\xc1\x61\x1e\xd9\x91\x56\xc9\xa1\x52\xcf\x6d\xdf\x67\x3f\x71\x32\xd4\x3a\xdf\x30\xea\xe4\x2c\x9c\x8b\x75\xca\x1c\xf7\x1c\xea\x03\xee\x39\x38\x51\x46\xd4\xf1\xc6\x92\xed\xd6\x15\x2c\xd7\xb5\x98\xdd\xf5\x71\x3e\x3e\x14\xe1\xb6\xa0\x6a\x0a\xfe\x24\x4a\x7e\xd6\x89\x09\xab\xa5\x17\xd8\xf5\x58\x82\x7e\x96\x06\xf4\x2c\x4f\xd7\x9b\x8f\x77\x9a\x62\x1a\x95\x07\xa3\xd3\xf9\x17\xbd\x9f\xd0\xba\x38\xd5\xc5\x15\xcb\xde\x17\xe7\x46\x4c\x5a\x2f\xc4\x75\x9e\xaf\x84\x5c\xa7\xc7\xae\x53\x6b\x01\x30\xab\x8e\x6a\x9d\x99\xb3\x8c\x9e\xab\x4f\x55\x5e\x8d\x4b\x64\xfb\x2b\x36\x3b\x72\xaa\x33\xe4\xac\xbf\x43\xd7\xc9\x32\x67\x1f\x12\xca\x99\xa1\xed\x55\xbf\x66\x0a\x7a\xd0\x73\x86\xa6\x07\x3d\x33\xc2\xae\xfd\xb3\xea\xd6\x68\x10\xdd\xd7\x25\xa2\x36\x7a\x3a\x9c\xb9\x08\xb6\x8a\x7d\xb4\x8a\x51\xca\x1c\x6b\x71\x54\xdf\xe6\x9a\x13\xc0\x10\xe7\xb1\xb5\x25\xac\x9d\xc5\x6d\xc4\x03\x8a\x2b\x69\xbe\x45\x4f\x8e\xab\x32\xd5\x08\x67\xe2\x48\xef\x6f\xa2\x06\xb2\xf1\x7b\x1a\xc6\x57\x63\xc2\x26\xa5\x47\xe2\x28\x09\x2f\xeb\xc0\x55\x12\xbe\xd4\xdf\x9a\xdc\xf1\xc8\x10\x83\x79\x83\xa9\xc5\x69\x3a\x38\x28\xb1\x57\x9a\x7b\x50\xe2\x34\xac\xc3\x26\xc5\x0f\xaf\x4c\xf2\x70\x46\x4a\xd7\x19\x9c\x3c\x1d\x61\x3d\x9a\x95\xcf\xa8\xb5\x80\x6a\x0c\x5c\x1b\x79\xd6\x25\xd2\x82\x73\x1d\x75\x06\xb4\xed\xaf\x1f\x46\xed\xbb\x89\x6b\xa1\x09\xdc\x75\xaa\x10\x9d\xd0\x50\xd2\x4d\x9e\x66\x14\x7d\x9e\x82\x4b\xcd\x00\xed\x32\x4d\x8e\x93\xcb\x4e\xca\x7e\xdf\x0b\x7b\x9a\xb2\x1b\x7a\xa8\xf7\xb7\x1e\x21\xa4\xc0\x18\x8a\x59\x7b\xdf\x83\x93\x1e\x84\x3d\x5f\xfa\xbd\x45\xc7\x1e\x9e\x9d\xc5\x7d\xad\xa4\x94\x4e\x9a\x3e\x45\x63\x3e\x89\x12\x8e\x93\xa0\x89\xe2\xe6\x6d\xca\x80\xbb\x6e\xe7\xdc\xc7\x73\x5c\x04\x57\xd5\x54\xeb\x05\x55\xb5\xd8\x60\xd0\xb1\x74\x77\x76\x10\x37\x5e\xec\x9a\xd7\xaf\xc4\x09\x42\x54\xce\x31\xde\xbc\x6a\xa5\x4b\x80\xf8\x4b\xa8\x91\x1a\x3b\xdd\x31\x89\x80\x57\xe5\x10\x92\x5d\x74\x69\xc5\xc4\x25\xc6\x20\x0c\x1e\x12\xe1\x5d\x5a\x38\xfb\x9e\x7e\x10\x69\xfa\xb4\xad\x59\xba\x35\x29\x5d\x53\x17\x83\xd4\x84\xd5\xb7\x65\x93\x15\xec\xf0\x25\xff\xc9\x1c\x8f\x16\x55\x75\x0a\x43\x0d\x2a\xc3\x20\x74\x7d\x47\x28\xae\xb6\x3f\xf9\xa4\x44\xb2\x79\x9d\x88\x5b\x2b\xea\xca\x1a\xd9\x59\xc5\xa5\x51\x7f\x2d\x9c\x1d\x56\xa2\x0c\x63\x58\x10\xf5\xb7\x78\x32\x4c\xcc\x43\x69\xac\xf8\x8a\x71\xa6\x28\x2a\x82\x1c\x9b\x1b\x2a\x6a\xe5\x56\xa3\x62\x9c\x8f\x72\xdf\x6f\x98\xa0\x95\xe6\x87\xc7\xab\xd1\xca\xf7\x71\xe5\xc8\x81\xa1\x1c\x7b\x2b\x3c\x72\x82\xd5\x5b\x8a\x86\x9d\x74\x62\x75\x4d\xd7\xc5\xc8\xa9\x6c\x11\xc4\xa3\xd5\x38\x1a\xad\x82\xe0\xb8\x3a\xa3\xb4\x4a\xa2\x91\x98\xe6\xb3\xeb\xd4\x00\x61\xe2\x8a\xe6\x32\x68\x24\xa6\x45\x10\xcf\xc6\xd9\xa8\x08\x02\x3c\x12\x44\x54\x44\x89\xb9\xa0\x6e\xae\xc0\xaa\x11\x3c\x3e\x00\xea\xbb\xb8\x8b\xe3\x09\xae\xef\xe5\xfe\xc8\x46\xa7\x4a\x65\x13\x45\xfe\xc8\x92\xd6\xfd\xd6\x45\xed\x7e\xcb\x62\xd4\x16\x11\xd4\x0f\x21\xca\x86\xe4\x4a\xb7\x28\x8c\x81\x0f\xaa\x09\x45\xb8\x6e\x0f\x32\x42\xf5\xa9\x18\xd3\x20\x1e\xb6\xb2\x70\x9c\x20\x49\x02\x27\xd2\x4c\xe8\x87\x88\x5f\x3e\x60\x28\x33\x04\xb0\x2f\x31\xbe\x26\xe9\x44\x21\x8e\x93\x5e\xef\xa0\x07\xe1\x89\x13\x4b\x63\x0d\x93\xa6\xe9\xba\xea\xe0\xe2\x0c\x09\xe8\x6c\xe3\x06\x4f\xb6\xd8\xf6\xcc\xce\xb6\x44\x56\xca\xac\x37\xdd\x94\xa1\x78\xe0\xdc\x23\xfc\x85\xfd\x2e\xff\x1a\x29\xd4\xec\x72\xfa\xd4\x2e\x97\x86\x5c\x90\xc7\x7b\x89\xbb\xe4\x02\x35\xb6\x6c\xf2\xe9\xd5\xd2\x92\x0b\x14\x2c\x6d\x21\x8f\x36\xbb\xeb\xd2\xb8\xde\xd0\xb6\x62\x93\x99\x6e\x37\x82\x77\x5c\x1b\x8a\x0f\xfa\x88\xd3\x23\x49\x84\x33\x96\x2d\xda\xa1\x6e\xd7\x94\xae\xfc\x89\xf9\x15\xdd\xf9\xb5\xb3\x2b\x3b\xb3\x9b\xb2\x3f\xd3\xa7\x55\x93\x16\xc3\x07\x06\xe3\x3f\xa5\x17\x9a\xb1\x13\xd1\x7b\x8b\x4b\xc5\x14\x21\x66\xbc\xd3\x51\xbc\xdf\x57\x44\x0f\x21\x44\x85\xaa\xdf\x67\x61\xa1\x13\xa0\x72\x69\x42\x31\xc6\x41\x8c\xff\x56\xef\xf6\xce\xf3\x17\x2e\xf5\x76\x7a\xad\xf6\xc4\x4d\xe1\x33\xe5\x53\x8f\x1f\x70\xfb\x96\x45\x6b\x46\x7d\xbc\xdc\xe4\x87\x71\x03\x1f\xf1\x4a\xa7\x9a\x3e\x3c\x2b\x5d\x6b\x3c\xeb\x5c\x44\x1e\x39\x7b\x62\xe1\x2a\x2d\x90\x20\x72\x9a\xce\xf0\x7e\x6f\xbb\x2a\xea\xae\x0a\xe7\x65\x93\xa9\x0a\xd5\xac\x71\x73\xa9\xc2\x14\x1f\x80\xfe\x15\x92\xde\xbc\x08\x45\x22\x50\xe4\x51\x25\x35\x5d\x99\x26\x4d\x46\xe3\xa7\x55\x34\x95\x1a\x2b\xac\xe2\xc8\x79\xf1\x59\x65\x5a\x46\x2a\x72\x31\xb3\xee\x39\x72\xeb\x9e\xa3\x20\x28\x0f\x32\x3c\x68\x65\x4e\x1d\x8f\x6f\x3e\x73\xde\x96\x93\xad\x1b\xa6\xe1\x04\x65\x7e\x8e\x07\xc3\x24\xf3\x0b\x8f\x0d\x86\x50\xe0\x63\xb8\x2d\x6c\xc7\xd0\x37\xa0\xbf\x4a\xf9\xbc\x0b\x39\x64\x1f\x80\xfd\x44\x0d\xf8\xfa\xd2\x18\x16\xb3\xfa\xaa\xde\x3c\x22\xdd\x78\x1e\xc9\x83\x68\x06\x0b\x1d\x19\xe4\x33\x58\x11\xb4\x08\x0a\x3c\x68\x3a\x10\x30\x7f\xe8\x38\xf8\xd1\x7d\x2b\xfc\x95\x97\xc1\x0a\x43\xde\xef\x0b\x87\x5b\x4e\xc9\xca\x43\x71\xc0\xb0\xdb\x37\x03\xfc\x93\x5d\x33\x1c\xc0\xff\xb7\xfd\x73\x68\x86\xf3\x5d\xc5\xb0\x24\x8b\xa0\x08\x9c\x78\xec\xad\xba\x03\xe0\xa8\x62\x2e\x07\x43\x7c\x76\x30\x9c\x3c\xd5\xb8\x74\x06\xa6\xed\xfa\x07\x27\xfe\x0c\xa6\x4b\x9b\x0c\xc7\x0e\x64\x5b\xed\xd7\x12\xa9\x30\xb5\x6a\x5d\xf4\x29\x8c\x99\xd5\x9c\x63\x8d\x16\x3a\xbe\x9b\xf2\x53\x04\x57\x0b\x2c\x22\xab\x05\x6b\x77\xbe\xc6\x09\x65\x7d\xf5\xcc\x46\xb8\x34\x9e\xd0\x34\x85\xf0\x47\x99\x72\xc5\xcc\xb3\x9a\x74\xc0\xce\xdd\xb3\xbb\xba\xde\x56\xe3\xd7\x2a\x5f\xdd\x0b\x36\x7f\x16\x25\x6a\xda\x8a\x46\x4a\xa8\xfd\x23\x97\xa3\xa3\xa3\xe7\xe3\xe5\x08\x0b\x96\x2b\x2a\xcf\xa0\xcc\x8b\xaa\x75\x5c\x3b\x80\x59\x8b\x30\x2d\x32\xca\xe7\x8c\x2f\x31\xd0\x4a\xe6\x20\xff\xaa\xcc\x81\x56\x32\x07\xd9\x0c\x46\x71\x66\x22\xca\x03\xd4\x44\xc3\xf1\x8c\xb6\xe8\xdf\xbe\x88\x3b\xa7\xdb\xef\x35\xd5\x0a\xd1\x98\x4e\xa6\xd1\x20\x82\x68\x10\xcd\x92\x29\x1d\x47\x13\x3b\xf2\xd6\x9f\x0d\xbd\xae\xe5\xf7\x3a\x5a\x47\x3a\x72\xce\xd9\x07\x8e\xd1\xbc\x59\x14\x2e\x53\x5f\x7c\x98\x2e\xa2\xd3\x73\x1a\x71\xc2\x65\xa7\x99\x67\xf4\xe9\x70\xc7\xaf\x6f\xe9\xbe\x26\x53\x0b\x9f\x2b\x77\xd6\xa2\x89\x08\x62\x90\xf5\x59\xf6\xf4\xdc\x7f\x88\x93\xe1\xc4\x37\xcc\xbe\xe6\x68\xa6\x6d\xb5\x33\x2b\x5f\xb1\xcf\x3d\xfc\xb5\xc9\x75\x85\x33\x4f\xcd\x9d\xab\x57\x48\x9b\xb9\x53\x1a\x0b\x68\x4a\x23\x1a\x44\x89\x1a\x30\x9f\xc3\x54\x81\xf2\xe3\x01\xfb\xd0\xbc\x14\xad\xec\xa6\x23\x6e\x59\x7c\x88\x0e\xa1\x63\x42\x27\xee\x2e\xe2\x40\xf1\x2c\xb1\xdb\xeb\xf0\x24\x51\xf0\x27\xdb\x48\x1f\xac\xfc\x2f\x9e\xd6\x66\x33\x98\xad\x40\xff\xea\x4a\x9f\x5a\xdf\x8a\xc0\xa7\x54\xaf\xdc\x27\xd1\xd9\xa2\x59\xb9\x8e\xde\x12\x7b\xea\x65\x33\x9f\x1f\x1a\xed\x8b\x8a\x5e\x57\xa0\xea\xa1\x50\xc7\x7d\xfb\xf0\xea\xb2\x44\xaa\x9e\x59\x33\x32\xea\x23\xa4\x75\xea\xaf\x48\xeb\xd4\x53\x7d\x36\xfd\xeb\x38\x2e\x5e\xb2\xce\x15\x05\xe3\x9c\x4a\xfb\xac\xa6\xa3\x84\xd5\xcd\x23\x4a\x75\x9a\x67\xde\xcd\x53\xa8\x54\x2a\xf3\x74\x98\xa3\x25\xd5\xcd\x42\xf9\xfc\x28\xc3\x9a\x9d\x71\x52\x47\xec\x65\x44\x4b\x38\x96\xfa\xd4\x50\xe6\x5e\x02\xac\x44\x03\xa4\x71\x30\xe6\x7f\x93\x19\xdb\x01\xe2\xb8\xc9\x97\xd8\x5c\x8d\x10\xc7\x97\xfe\x59\x0d\x9c\xdd\xf1\xc4\xbb\x5b\x24\x43\xf8\x71\xde\x7a\x0c\x4f\x11\x47\x6b\x0c\x0b\x0c\x05\xe4\x88\xa3\x7b\x47\xd6\xaf\x63\xcd\x5b\xc9\x0d\x2f\x6f\x9d\x4f\x68\xaa\xf8\x5e\xff\xa9\x1e\xa5\x0f\x62\xb8\x69\xad\x0d\xb7\x95\x53\xf1\x3b\xfd\x5b\x62\xb8\x25\x94\x10\x22\x27\xa7\x13\xb8\x3c\x24\xc6\xef\x38\x3c\x10\xa3\xea\x7a\x26\xcb\xc6\x64\x31\x4e\x03\x77\xd7\x37\x23\x2c\x1c\x4f\xe3\x2b\xa2\xa6\xbb\x19\xec\xf0\x04\xdd\x57\x5e\xf0\x96\xc4\xdf\xba\x39\x60\x87\x61\x43\xfc\xbb\xa3\xb8\x99\x79\x90\xd1\x7a\x33\xbf\x3d\xce\xef\x3f\x9c\xe4\xc6\xc9\x7d\xeb\xce\x3c\x43\xb8\xed\x7d\x33\xfc\x6d\x06\x9d\x3e\xaf\xf7\xc7\xfc\x69\x9f\xe6\xff\xa4\x50\x1a\x6a\xe2\x17\x0a\x82\xfc\xa2\x20\x25\xbf\x51\xc8\x48\x6a\xbc\x79\xe7\x24\x85\x82\xf4\xbe\xeb\xc1\xe2\xbf\x73\x73\xee\x7a\x2d\xdf\x46\x7f\xdd\x39\xfa\x36\xfe\xeb\xde\xd1\x3f\xd2\xa1\x7a\x49\x98\x2d\xc4\x4c\xa1\x8f\x04\xce\xf5\xa6\xbe\xfb\x48\xe0\xdc\x76\xfe\x92\xeb\x76\x61\x0b\x8a\xff\xca\x75\x7b\x76\xde\x75\x7b\x4a\x78\x82\xd2\x73\xae\xdb\x73\x92\xd6\xdb\x6e\xbf\xd7\xf3\x9e\xda\xf7\x8a\xe7\x93\xde\x4d\x2f\xd1\x8b\x40\xe1\x24\xfb\xcb\xce\xdd\x17\xb6\x13\x8b\x0e\x8e\xbc\x61\x47\xd7\xb8\x5d\xd4\xb7\x75\x92\xa7\x95\xbe\x84\xab\x12\x79\x56\x8a\xd0\x5e\xcd\x9f\x7f\x13\xef\x18\xb3\x1d\x3d\x0a\x52\xe1\xb6\x0e\x5a\x73\x5f\x7e\xbb\x65\x2d\x42\x78\xf1\xdc\xd1\x94\x6c\xe3\x7b\x19\x93\x59\x4e\x1d\x67\xf2\x6f\xd9\x39\xbb\x26\x3e\x78\xd5\x38\xd4\xed\xdd\x44\xd0\xf3\x95\xdf\xfb\xdc\xfc\xb5\xdf\xee\xf3\xe6\x4f\x27\xa9\xae\xe3\xfa\xd7\xdd\x4b\x89\xef\x04\xe2\xf0\x73\x86\x81\x87\x6c\x4e\x94\x7b\x57\xfc\x9e\x9d\xaa\xaa\xb0\x79\xbd\xbd\xdf\x20\x0e\x67\x96\x0e\x75\xde\x82\x32\x1e\x81\x1f\x79\x78\x7b\x6b\x4c\x83\x98\x8e\xbd\xbd\x9d\x96\xb3\x50\x3d\x50\xca\x8d\xcc\x41\x81\x44\xd4\x22\x31\x0e\x3a\xeb\x3c\x55\xe9\xed\xad\x29\x8a\xf1\x21\xd1\xd8\xc1\xbc\x58\xe5\x2c\xa2\x3f\xab\x91\x76\xf5\xa8\x3f\x67\xa7\xbe\xf4\xcc\x4d\x72\xaf\xfb\x5c\xa2\xb5\x6e\xa3\x5b\xf5\x85\xe0\x86\xe4\xe1\xae\x95\xf6\xd1\x60\xe8\x93\xb1\x0b\x85\x51\xcd\xef\x46\x91\xc7\x34\x53\xec\x9e\x26\x11\x64\xa2\xe4\xca\xf8\x9b\x14\x84\x4d\xa9\xf5\x78\x25\x6a\x1f\x58\x32\x54\x6c\x4d\x47\x36\x89\x3c\x9a\xce\x24\x46\x94\x03\x3a\x21\x49\x81\xa6\x05\x4d\x64\xa8\x7f\x60\x4e\xf3\x74\x97\x18\xaf\x38\xe9\x0e\xe6\xa5\x4c\x75\x73\x3a\xa2\xfa\x3c\x80\xef\xb3\xd0\x34\x09\x6b\x61\xea\x76\x98\xa9\xee\x6d\x8c\x74\xee\x53\x2d\xb4\x63\x3a\xc9\x11\x4e\x50\x1d\x26\x14\x44\x48\xef\x29\x57\x9a\x73\x36\x1f\x96\xcc\xa8\xa7\xad\x00\x85\x41\x54\x53\x50\x2b\x56\xb5\x14\x99\x1e\x32\x24\x89\x74\xb3\xe3\x7e\x7f\x53\xdd\xbe\xe3\x03\x86\x0c\xc9\xfd\x3e\xc6\x93\x38\x41\x5b\x85\x32\x58\x41\x8a\xc1\x52\xbf\x1d\xef\xbf\x95\x18\xac\x86\xec\x82\x90\xc6\xaf\x5c\xee\x38\xa1\x2a\x89\x1c\x2c\x21\x25\x0b\x7d\xa6\x67\x64\x53\xd3\x30\xd9\x38\x1a\xe1\xcd\x34\x08\xb2\x59\x0d\x4c\xeb\xd1\xb9\x1c\x93\x78\x82\x4e\x7a\x4a\xf9\xbc\xd3\xcf\x5c\x33\x13\x15\x61\xde\xf2\xe0\xcd\xe6\x0e\x82\x6a\xe0\x27\x95\x1a\x98\x9e\xd1\xa4\x55\x09\xeb\xac\x0f\x88\x0f\x95\x53\xf8\x76\xe1\x2f\x88\xb0\xb3\xbc\x22\xa2\x9a\xe1\xa5\xfe\xaa\xa6\x16\x36\x9a\x85\xaf\x89\xd4\x31\x59\x4d\x4a\x24\x83\x15\x36\x03\x57\x76\x06\xee\x00\x11\xa4\x1d\xb7\x01\xf5\x95\x6b\x98\x2a\x25\x2b\x83\xbd\x85\x90\xeb\xde\x19\xed\xa8\x8e\x39\x9f\x32\x5e\x29\x20\xc2\x3d\x57\x61\xea\x8f\xff\xb2\x3e\x83\x95\x4c\x8d\xdd\xfa\xfe\xc3\xea\x5d\x78\x6b\xe4\x98\x5f\xea\xcc\xc7\x47\xc5\x38\x9e\xe8\xf8\xf0\xe7\x77\x5f\x9c\xc7\xe0\xad\x88\xa6\xeb\x4a\xf7\x8b\x27\x58\xe3\x4a\xe1\xe9\xff\xcf\xdc\x9f\x37\x37\x6e\x2b\x8d\xe2\xf0\xdf\xef\xef\x53\x64\xf8\x24\x3a\x80\xd8\x92\x49\xc9\x92\x6d\x6a\x20\x55\x96\xc9\x64\x73\x92\x13\x27\x39\xc9\x70\x74\x5c\x10\x05\x49\xcc\x50\x84\x42\x82\xb2\x34\x96\xce\x67\x7f\x0b\x0b\x37\x2d\x1e\x27\xcf\xb9\xb7\x6e\x95\xcb\x22\x41\xa0\x01\x34\x80\x46\xa3\xd1\x8b\xbe\xe8\x0a\x11\x83\xf2\x1a\x35\x69\x89\xa1\x68\xb1\x11\xf3\x92\xea\x59\xb8\x12\x11\x54\xb2\x21\x48\xb6\xf5\x9b\x00\xb1\x96\x8b\x31\xb8\xb8\x7a\xae\x09\x75\x38\xb2\x22\x7b\x4c\x4c\x66\x3b\xc6\xca\x2e\xa8\x7a\x33\x19\x43\x02\x61\xae\x6e\x97\x69\xd7\xd0\xbe\xa2\x14\xe1\xd0\x55\x97\x54\x83\x64\xc8\x07\x98\x21\x8e\x3f\x09\x77\x3b\xe3\xa1\xbc\x40\x95\xcd\x31\x06\x81\xb8\xec\x41\x71\xdf\xa5\x8b\x3c\x95\xb5\x90\x56\x95\xf2\xf7\x1c\x53\x22\xd9\x3e\x7e\x13\x90\xf7\xa1\x51\xd0\x96\xe5\xdf\x87\xe5\xd9\xfe\x9e\xc4\xc0\x51\xa2\x4f\x3f\xb3\x30\xa6\x51\xa4\x0a\xc8\x3a\xf6\xfb\x58\x8b\x14\x94\xf9\x8e\x92\xaf\x29\xaf\x85\x01\x0b\x23\x92\x41\xdc\xe6\xb3\x59\xca\x04\x09\xc1\xe8\x5f\x11\x6e\xa4\xb9\x71\x3b\x13\x01\xf9\x22\xac\x18\x17\x06\x06\x54\x00\x81\x01\xf5\x45\xa8\x02\x1f\x6a\x70\x5f\x84\x6a\xa5\xe7\x20\xbf\x08\x51\x28\x5f\x35\x58\x5a\xc5\xf2\x17\xa7\xaf\x16\x9e\xd7\x59\x01\x31\x4a\x80\xe1\xf6\xfd\x71\x67\x2b\x7a\xd9\xa7\x8e\x34\x55\x6b\x85\xfc\x8e\x54\x49\xe6\x1d\x25\x92\x67\x03\xdc\xbd\x52\x4e\x20\x83\x05\x4d\x3e\xe7\x53\xf6\xa9\x40\x54\x99\xe1\x9b\x91\xab\xf8\x0f\x0a\x80\x62\x6c\xcc\xcc\x50\x46\xa6\x91\x9f\x98\x82\x9f\x0a\x64\xdb\x14\x8f\xb1\x32\x9b\xa9\xa5\x61\x40\x21\x59\x47\x7e\x62\x3e\x86\x48\x18\x77\x37\xd9\xc8\x52\x97\x1e\xc9\xc8\xfa\xc8\xf2\x2c\xc7\xf2\xd4\xe5\x71\x4e\x9e\x25\x9b\x6f\x97\xd3\xe4\x6c\x7b\x78\xa9\x0f\x50\x77\x80\x5f\x31\x42\xa4\x49\x5a\xd7\x65\x31\xce\x68\xb7\x9e\x7b\xe3\x38\xb0\xf4\x1c\x98\x7a\x2e\x7c\xe5\x39\x70\xeb\x39\x70\xe7\x39\xf0\x9d\xe7\xc0\x9b\xc2\x33\xf3\x77\xe6\xaa\x0b\x1c\x65\x1d\x97\x94\xb1\x4a\x6a\x1e\x5a\xad\x95\x15\x6a\x5d\x49\xd6\xfe\x8a\xb0\xf6\x57\x9f\xb8\x1d\xdb\xed\x34\x59\x7b\x85\x8d\xd7\x57\x63\x3b\xd9\x7e\xd3\x68\x7c\x13\xbc\x20\xe4\x7d\xa8\x6f\x4f\x50\x36\x7a\x1f\x7a\xdf\x14\x92\x74\xeb\x0f\x05\x6a\xa4\xae\x48\xbe\xcc\xa2\xe8\x77\x46\x25\xcb\xb2\x05\x07\x58\xfb\x0f\xec\x59\x0f\x79\x5d\xd6\xbf\xd4\xd3\x6e\x67\xfd\xa2\x1e\xf0\x08\x9d\x2a\xe5\x62\x38\x95\x6c\x4a\x8f\x10\x6b\x3f\xd8\x7d\xfc\xc9\x95\x7d\xd5\x64\xed\x7f\xb5\xf4\x05\xd5\x17\x74\x8b\xb0\xdd\xc3\x9f\x5c\x79\xf2\xbb\xfc\xf4\x4b\xed\x93\x2c\x81\xb1\x77\x0c\x99\xb5\x97\xc0\xda\x53\x53\xe9\x57\x3c\x4b\x52\x89\x15\xbb\xaa\xc9\xd2\x7e\x73\xe1\x3a\x0e\x06\xd6\xbe\xb5\x59\xfb\xcd\x27\xae\x23\x3b\x77\x07\xac\xfd\x1d\x86\x6c\x14\xb6\xef\xf5\xb9\x44\xf0\x3b\x35\xe4\x27\x24\x1c\x71\x8d\x73\xff\xae\xaa\xfa\x91\xef\xca\x15\x3f\x5e\xc5\x09\xbc\xd4\xe5\x1f\x04\x43\x3a\x50\xdb\x7b\x32\x24\x91\x19\x4e\x1d\x3c\x21\xd3\x06\x25\xc5\xba\xb0\x6d\x0c\x6a\xb9\x64\xda\x19\x96\xf9\x9c\x7f\x0a\xc9\x32\xf2\xf9\x47\x61\xfc\xd1\x34\x1a\xd5\x3e\x79\x7c\x0c\x2f\xc2\xdd\x4e\xcd\x7f\xed\x51\x15\xbf\x74\x8a\xba\xf6\xb9\xff\xaa\x4c\xce\x8c\x4a\x8d\x89\x6d\xe3\x32\xd7\xb1\x7c\xfc\xab\x1a\x8b\xc9\x1e\x3e\xfa\x89\xcd\x5f\x6d\x56\xc8\xfa\x37\x1a\x79\x96\xad\x4d\x05\x95\x86\xd5\x9f\x19\x17\x0c\x9b\xa5\xb2\xb3\xd4\x1e\x08\x56\x58\x55\x9b\xf9\x32\x3c\x30\x45\x56\x7c\xa0\xb1\x27\xab\xc8\x63\xd8\xcb\x64\x80\x85\xe2\x79\x63\x9f\x8d\xdb\x82\x7f\xc7\x1f\x58\xf2\x39\x55\xf7\x1a\xac\xf4\x87\x50\x51\x5a\x3f\x50\x2f\x72\x86\xf1\xc8\x6a\x59\x9e\x8a\xf2\x83\x92\x51\x2b\xf6\x94\xcf\x8b\xaa\x11\x50\xde\x5b\x1b\xb1\x61\x38\x92\x8d\xf9\x34\x49\xe8\x16\xb1\x56\x68\xbb\xa6\x27\x02\xdb\x99\x97\x55\xfa\xf0\x43\x51\x51\x10\x55\xbd\xb2\x19\xd2\x1a\x44\xc6\x2b\x5b\x85\x8a\xb0\xf2\xd2\x31\x19\xa1\xb8\xfd\x40\xa2\x48\x9d\x3e\x13\xdf\x39\xe8\x1c\x06\x66\x27\xa5\x2d\x22\xf6\x5a\x6e\x45\xcf\xbd\xa8\x9a\x9f\xaa\x9a\x3f\xab\x6a\xfa\xb7\xaa\xfe\xbd\xa8\x7a\x7b\xaa\xea\xed\xa9\xaa\x81\xd9\xee\x51\xf5\xaa\x8a\xa7\x6a\xfa\xfa\x6f\xd4\x74\x50\xcb\x2f\x1f\xae\xe5\x97\xff\x7d\x2d\xff\xfa\x70\x2d\x6f\x8a\x5a\x16\xa7\x6a\x59\x3c\xa3\x96\x25\x99\xff\xad\x01\xfb\xb5\xa8\x3a\x3d\x55\x75\xfa\xac\xaa\x67\x7f\xab\xea\xdf\xc2\x03\xa3\x34\x45\x32\xd7\x51\x3b\x28\xa8\x6c\xae\x20\x51\x94\xf9\xf8\x5c\x99\xcd\xf9\x32\x9f\x9d\x2b\xf3\xdb\xf9\x32\xff\xfa\x7b\xf3\xf8\xf2\x00\x35\xdb\x0f\x8f\xfd\x37\x7f\xaf\xa6\xce\x51\x4d\xdf\x86\xc8\xd6\x31\x9b\x9e\xa8\xed\xf5\x01\x2e\x2e\xfe\xed\xdb\xad\xf1\xdb\xe9\xe3\xe5\xfe\xe3\x8b\xb6\x60\xa9\x40\x4a\x93\xbc\x56\x57\x0f\x63\x59\xc5\x1b\x62\x0b\xf5\x56\x83\xf8\x6d\x8d\xf0\xdb\x28\x1e\xf6\xaf\x47\x92\x97\xf1\x3a\xac\x5b\x0d\xf5\xf6\xdf\xe9\xe7\x52\xc7\xf9\x70\x9f\xea\x64\xcc\xff\x2b\x55\x4d\x3f\x3c\x78\xe2\xef\xd5\xd4\x3d\xa8\xe9\x8f\x0f\xd7\xc4\xfe\x3b\x7d\xfa\xea\xc3\x35\x25\xff\x9d\x9a\x6e\x3f\x5c\x53\xf6\xdf\xa9\xe9\xee\xc3\x35\x85\xff\x9d\x71\xfa\xee\xc3\x35\x71\x5e\xe7\x2f\x6e\x35\x69\x3c\x84\x4c\x3a\xf8\x80\x52\x0e\x6a\xe2\xb9\x64\xd4\x72\x3d\x14\xb7\x57\x24\xa9\xd1\x25\xca\xab\xa6\x55\x73\x26\x7e\x0e\x97\xec\x3d\x8f\xd9\x0f\xea\xdc\x87\x94\xf4\x76\xe8\x68\x96\xc6\xb6\x20\x21\xff\xf9\x4f\x35\xd6\xf6\x85\xf2\x30\x44\x2a\x29\x9f\xf4\x0b\xb7\x05\xcc\xfe\x31\x44\x09\x58\x8e\x05\x1d\x2c\x9f\x33\xf3\x5c\x91\x3f\x15\xdd\x5b\x9d\x42\xe4\xea\x39\xfb\x7b\x0d\x7b\x35\xe4\x45\xfc\xf8\x0e\xb4\x7e\x26\x15\x46\x7a\x50\x9e\xa8\xee\x95\xee\x82\x38\x71\xf8\xd6\x27\xab\x3f\xaa\x87\xe8\xa3\x03\xd8\x89\x0a\x98\xce\x53\x2d\xd5\x68\x88\x53\x07\xde\xea\x71\x80\x15\x8f\xd5\x43\x40\xca\x6b\xe2\x7b\xc1\xbf\xbe\xfb\x21\xdf\x71\x2a\x17\xe3\xfc\x03\xaa\x9c\x55\x9d\xef\xac\x1a\xde\x3d\xd6\xd1\xbf\x74\xe4\xc0\x0b\xa6\x5d\x71\x99\x0b\xf4\x49\x04\x59\x19\x58\x8a\x90\x49\xe1\x89\xd5\x17\xed\x2d\xa3\x89\x52\xbe\x3f\xa7\x98\x17\x5f\x74\xdd\x5e\xb7\xcf\xfa\x7b\xc9\x48\xfb\x9d\xf1\xd8\x0b\x47\xc2\xcf\x2e\x26\x91\x1f\xb6\xdc\xf1\x4b\xf9\x3b\xbe\xc8\x46\x61\xcb\xf5\xc2\xb1\xe7\xbf\x8a\xb4\x32\xbf\xce\x5c\x9c\x10\x9e\xd0\x30\x5d\xf0\xff\x8e\x8a\xa9\x50\x0a\x97\xc5\xab\xd6\x35\x5c\xf0\x53\xba\xa0\xe7\xd4\x0f\x5e\xe4\x4e\xfc\x1a\x8d\x17\xb9\x2d\x1c\x83\x05\x47\xb6\x9c\xbb\x20\x72\xc5\x60\xad\xdb\x41\x0a\x4d\x52\x0c\x9c\x7c\x9c\xa1\x10\x1b\xbf\x04\x84\xc4\xa3\x0c\x71\x70\x1d\xec\x59\xda\x7a\xbf\x72\xa7\xd4\x68\x64\x4a\x89\xb7\x90\x37\x29\x19\x3c\xd5\xea\x1e\x2a\x72\x66\x81\x02\xf4\x8d\x72\x9c\x33\x74\x4f\x19\xa8\x29\xa1\x16\x43\x92\x02\x18\xfb\x34\x8c\x07\x58\x90\x05\x47\xa2\xe5\x56\x4e\x3d\xc7\x06\x6b\x95\xa2\xda\x5e\xad\x28\x69\x0b\xbb\x5a\x74\xef\x19\x05\xd9\x43\xf5\xdc\xd2\x42\xf2\xe3\x0c\x95\x88\x90\x67\xce\x12\x03\xec\x0c\x06\xd4\xa7\x18\x7b\x39\x92\x1b\x0d\xff\x51\x3d\x28\x5d\x84\xd2\xd8\x4f\x21\x26\xd4\x88\x09\x15\x62\x8a\x51\x91\x89\x6a\x60\x7c\x77\x2c\xc7\xc6\x1d\x8a\x91\xeb\x89\xb3\x6a\xc2\xa5\xae\xc6\x13\x2a\x2b\x72\x05\x7e\x40\x23\x77\xc1\x0f\x0e\xb8\x4a\x8a\x58\xcd\x31\xe7\x67\x74\x76\x4b\x87\x28\xb5\xc8\x7b\xca\x25\xef\x8b\xc4\x77\xc7\x48\x60\x1d\xd8\xb0\xd5\x2a\xdd\xf1\x4a\x22\x59\xf7\x93\xbb\xaa\x56\xf0\xcd\xdd\x0f\xdf\xe7\x94\xaa\x9d\xb0\x74\xc5\xe3\x94\xfd\xcc\x36\x55\x5a\xb1\xae\xec\x16\x1b\x6e\xa2\x00\xfc\xa4\x2d\x3d\x4b\x92\x98\xb2\x88\x05\xe2\x7b\x3e\x65\x68\xc3\xdb\x13\x3e\xdd\x62\x10\x26\xb3\xba\x08\xda\x88\x8c\x46\x5f\x26\x74\xbe\x54\x31\xd6\x0f\x6a\x53\xd6\xeb\x9c\x3c\xae\x59\x92\x86\x3c\xf6\xac\x6e\xbb\xdb\xee\x5b\xfb\x81\x12\x52\xc7\xfc\x61\xb7\x43\xf9\xe3\x31\xea\xed\x1c\x95\x7b\x2d\x96\xda\x72\xe2\x8f\xb5\xd1\x00\xdc\xf2\x53\x37\xa7\x5b\xa3\x55\x10\xe3\x3d\x6c\x38\x99\xf2\x40\x11\x06\x98\x70\xd9\xc7\xfc\xf5\x55\xc4\x54\xea\x3d\x27\x0f\x61\x3c\xe5\x0f\x03\x49\xe7\x6f\x39\x9a\x70\x6d\x51\x2c\xfb\x9b\x62\xb9\x11\xc5\x7c\xca\x7e\xde\xae\xd8\x3e\xa0\x22\x58\xa0\x07\x8e\x1f\x0f\x6a\xae\x3a\x45\x33\x52\x1b\x46\x4a\x39\x80\xc0\x03\xd1\x6a\x0d\xb0\x0a\x5b\x12\xfb\xe5\x3c\x66\xfb\xbd\xac\xb5\x40\xbd\x69\x14\xb2\xa6\xe1\xda\xc2\xed\x54\x6c\x23\xd6\x4e\x99\xf8\x31\xe1\x2b\x96\x88\x2d\xb2\xf8\x8a\x06\xa1\xd8\x5a\xe0\x80\x65\x61\xd3\xa2\x3b\x73\x4b\xf6\x8a\x93\x7b\xde\x36\x40\xda\xab\x84\x0b\x2e\x17\x16\xbc\xe3\xe4\x15\x97\x70\x3e\x15\x22\x09\x27\x99\x60\xf0\xe9\x51\xd2\xf7\x77\xf0\xbd\x2a\xff\xf9\xdd\xdd\x9d\xac\xf8\x0b\x16\x44\x54\x5f\xa9\x54\x60\xfd\xcc\xc9\xf7\xbc\xda\xa6\xc1\x01\x9c\x03\x52\xf0\xae\xaa\xe3\x11\x83\xb0\x65\xb3\xe1\xa8\xee\x5a\x29\xb9\x7f\x7d\x7a\x50\x0e\x98\x2e\x59\xaf\xfc\xa8\xd8\xcf\xc7\xd5\xc9\xe5\xba\xaf\x2a\x41\x9e\x36\x11\x10\xc3\x58\x45\xbe\x53\xe4\x22\xd6\xee\xa8\x9d\x0b\x67\x0f\x4b\xde\x9e\xb2\xa7\xcb\xca\x42\x2d\xd7\x93\x20\xe4\x7f\x12\x57\xca\x2e\xab\xfb\x55\xdd\x6b\xff\x81\xfe\x90\x89\xfa\x74\xa4\xc0\xae\x89\xb2\xd2\x2e\x6a\x34\x5e\x20\x23\xd5\x66\x4a\xcd\x08\x37\x1a\x6c\x48\x18\x1e\x60\x46\xf4\xa5\xd6\xa0\xcc\x3d\xc0\x26\x6f\x52\xe6\x4d\xb4\x95\xb4\x36\xf7\x39\x07\xb9\xb8\xb7\x54\x9a\x4c\x19\x7e\x6e\x2d\x27\xcb\x15\x35\x96\x74\x56\xbb\x1c\xf8\x7f\x07\x2d\xc9\x90\xfd\x5f\x46\x4b\xa5\xc6\x1a\x5a\xd8\x81\x2a\xe1\x61\x98\x07\xed\xd0\xe2\xd9\xb8\x09\x5f\xf2\x5a\x0f\x32\x12\xfb\x61\x0d\x3b\xd9\x41\xcb\x95\x83\x8c\x0a\x7e\x54\x6e\x54\x8e\x22\x24\xca\x75\x41\x46\x12\x5c\x47\xd6\x71\x55\x95\x6e\x87\x63\x08\x9f\x40\x57\xbd\xd2\x13\xe5\xce\x35\x20\xd7\x3c\x81\x6c\xac\xd0\x97\x66\xcb\xd3\xb8\xab\xf9\x10\xd0\xde\xb0\xce\xe1\xae\x68\x53\x36\xc0\x86\xed\x23\xb6\x42\xc4\x6e\x87\x12\x5b\x76\xa0\xbc\x3a\x3c\xcc\x77\xd4\xf6\xa2\x4c\x21\x12\x57\xb3\x9f\xd1\xf8\x40\x55\xd2\xdc\x7d\x95\x72\xff\x90\x38\xc0\xe5\x78\x53\xe2\x7c\xa8\xb1\x5c\x36\x22\x96\xb8\xf3\xb9\x1a\xb0\xd0\x26\x28\x69\x85\xf8\xc2\xb6\x69\xbd\xbd\x45\x56\xa3\x53\x22\x94\x51\x3f\x70\x7c\x5c\x2c\x67\x43\x47\x61\x7e\x9d\x0f\x15\x5d\xf8\x93\x3c\x1f\xaa\xd8\x91\x34\x85\x2d\xd9\x98\xea\x2d\x8a\x3c\x5b\xda\xb1\x9f\xb4\x94\x5f\x3b\xd6\x2a\x5d\xba\x8d\x32\x3b\x6c\xa2\xd8\x4f\xc6\xad\x4c\xa9\x85\x29\x2c\x4d\xc3\x23\x3c\x9d\xe1\xf7\x95\x27\x22\x61\x6c\xc9\x18\xd6\x0e\x0f\x8c\x92\x7c\x5c\x06\xcd\x1f\x55\x95\xf9\xc5\x29\x05\xf9\x76\x0f\x57\x7b\xab\x0f\x4b\x3c\x39\xc1\x69\x3c\xd6\x03\x60\x1a\xa5\x50\xbd\xf6\x4e\x1a\x76\x24\x27\x4d\x3e\x2e\xd5\x6c\x2e\x23\x38\x64\xc3\x64\x90\x6b\xd0\x24\x76\x36\x1c\x0e\xdd\x41\x5c\x8e\x95\x9a\x56\x2f\xd9\x28\x21\xa1\xed\x7a\x19\x09\xcb\xcb\x96\xc3\x78\x9d\xff\x27\x5b\xc4\x5e\x1e\xb6\x69\x94\x91\xd0\x53\xad\x2a\x5b\xb4\xdf\x2b\xa6\xed\x4f\x4e\x2a\xa8\x3c\x79\x9c\xdc\xe3\x41\x91\xe5\x3b\x36\x13\xe4\x4f\xae\x42\x3b\x95\x63\x50\x82\xf8\x49\x76\x53\x66\x50\xfd\x55\xeb\x7e\x91\xcd\x66\x11\x3b\xcd\x94\xa9\x30\xea\xe5\x55\xab\x24\x3f\xce\xae\xe6\xfc\xb3\x99\xb4\x5a\x60\xc2\xba\x2b\x4f\x21\x2a\x56\x46\xac\x02\x60\x94\x1a\xb9\xb2\xa2\x15\x4b\x96\xc7\x4c\x4e\xc9\xc0\x8b\xd2\xf9\x63\xe5\x1e\x08\x0f\x98\xe4\xff\x12\x1d\x68\x43\xf8\x6c\x3c\xae\xd3\x83\x15\x0d\x93\xf4\x5c\xeb\x95\x0b\xba\xca\xc9\xa0\x0c\xc7\x5d\xd4\xe0\x0c\x93\x91\xe3\x25\x78\x90\x0c\x99\xf1\x98\xe8\x0b\xe5\x07\x25\xf6\x6d\xbb\x52\x5d\xa8\xaa\x7b\x1f\xae\xaa\x9c\xb6\x0a\x2d\x98\x1d\x13\x17\x73\x9f\x67\x02\x09\x69\x13\x66\xe5\xe5\xd2\x38\x5a\x2c\x0a\x80\xd2\x0c\xa9\x75\xd8\xb6\xe3\x97\xac\xb4\x1b\x2e\xb6\xae\xc4\x8f\xc7\x95\x9c\x19\xce\x49\x28\xf7\xc3\x71\xd9\x04\x3f\x1c\xfb\xf1\x01\x92\x94\x7a\xcc\x8a\xa7\x27\xf5\x36\x75\xaf\x4a\xc7\x01\x92\xfb\x5f\xf2\xf6\x3b\xb6\xad\xe3\x35\x77\x12\x5c\x7a\xf0\xd5\xd1\xa0\x44\x6e\xc2\x58\x39\x1d\x2f\xb9\x76\x58\xf7\x97\x20\xc4\xd5\xc8\x50\x1a\x08\x8b\x45\x12\x9e\x83\xf2\xff\x9d\x06\xf3\xf8\x8e\x6d\x3d\x06\xaa\x7e\x4f\xc2\xdc\x1f\x00\x55\x2e\x56\x4f\x61\x42\x21\xb6\xe4\xd8\xdb\x01\x8f\x03\x2a\x0c\x66\xfc\x71\x8e\x99\x43\x8b\x07\x10\xa0\x55\xc7\xce\x10\x0a\xf7\x98\x4e\xe8\x78\x1d\x31\xc4\xc4\xc1\x18\xdc\x0b\x87\x10\xa2\x2c\x5e\x2e\x12\x2c\x16\x09\x7f\x50\xe7\xe0\x57\x49\xc2\x13\x64\x85\xf1\x4c\x19\xac\x7f\xa4\xed\x1b\x8d\x92\x41\xee\xe6\x86\x95\x42\xc8\x04\xeb\x80\xef\xca\xd7\x57\x93\x70\x10\xc6\x89\x16\x07\x67\x98\xe8\x1d\x0f\x65\x24\xb6\x93\xa6\xdc\xa5\x86\x62\x80\x8d\x9b\x9a\xec\x82\x57\xf7\xba\x4a\xa6\x97\x07\x99\x6a\xab\x61\x49\x57\x27\x86\x46\x9b\x89\xca\x36\x7c\x14\xc6\x3a\x02\x1d\x9f\x7d\x94\xe1\x13\xfa\x7b\x4a\xe0\x66\xae\x99\x95\x6a\x65\xd9\x88\xda\xc0\x1a\x63\xd9\x83\x09\x92\xa0\x0c\x1e\x17\x34\x3d\x15\xd7\xf8\x3d\xb7\x63\x15\x7e\x6c\x11\xa6\x7b\x98\xb3\x93\xf1\x96\xe5\x47\x5f\xe6\x1c\xef\x21\x65\x87\x51\x80\x8f\x32\x11\x59\x27\x5b\xf2\x35\x3b\x19\x49\x99\xc8\x4c\x50\xd4\xda\x68\x18\xcd\x3c\x05\x40\x56\x21\x97\xd4\x71\x68\xcd\x52\xe5\x4e\xa9\xa7\x1d\xe1\x48\x29\xc1\x19\xd7\xdf\x7b\x0c\xf1\x5e\x4f\xed\xbf\x03\x49\xfb\xee\x35\xcb\x55\xc3\x32\x2b\xec\x7f\x07\x4c\x2d\x39\x61\x96\x1c\xdb\x1b\xd0\xa6\xc8\xe9\x50\xa5\x39\x96\x70\x4d\xfb\xc2\xc1\x84\x90\xcf\x79\xa3\x11\x57\x0e\xa3\x55\x91\xb7\x09\x34\xe1\x8b\x31\xde\x1b\xb9\xc6\x7b\x4e\xac\xb7\x1b\xc7\xb1\xe0\x73\x4e\xde\xf3\x3a\x38\xb9\x35\xc6\x2c\xad\x49\xad\xca\xdb\x2c\x24\x80\x42\xa0\xd6\x6e\x30\x2c\x5c\x2d\xe0\x42\x9e\x6e\xd4\x4a\x43\xa0\xd8\x63\x23\xaa\x99\x1e\x86\x3d\x5a\x50\xb0\x22\x18\xa9\xa4\xd1\x2b\x42\xf3\x4d\x6c\x4a\xb8\x1f\xd8\xf6\x18\xd6\x66\x39\xd8\xf6\xfc\xe5\x6a\x80\xd1\x82\xac\xd5\xb5\x45\x44\xa6\x28\x25\xd4\x9f\x8f\x31\xc6\xa3\x85\xc6\x63\x8a\xbd\xb5\x9a\xeb\x11\xf8\x69\x65\xaa\x8f\x50\x4a\x04\xc2\x30\x23\x75\xcd\xd7\x34\x5f\x18\x48\x40\x02\x01\xc6\x7b\xec\xa1\x94\x3c\xee\x8f\x73\xaa\x0d\xd4\x64\xdb\x63\x58\x97\x03\x8a\xa1\xa2\xf6\xae\xd7\xa1\x72\x8a\x71\x8c\x90\xd8\xdc\x45\xa8\xf0\x14\xd4\x67\xb6\x5d\x86\x8e\x3d\xb5\xb6\x33\xfc\x98\x54\x26\x48\x9c\x4f\x5c\x81\x32\xb5\xd8\xf7\x18\xb2\x51\xf2\x44\xb0\xfd\x0c\xc5\xca\x2e\x40\xc8\xff\xb2\x73\xda\x04\x50\xf2\x66\xa1\xec\xa5\xd1\x75\x2b\xa7\x6a\x58\x27\x49\x35\xbf\xac\x2a\xc4\x89\xa3\xfc\x19\x1d\x6d\x2b\x35\x35\x4a\xa4\x29\x1b\x30\x70\xb0\x29\xf0\x8e\x9d\x34\xe9\xe0\x85\xeb\xfb\x50\xe6\x92\x1d\xf9\xf6\x70\xdb\xcc\xb9\x6e\x9f\x97\x26\x87\x24\x2e\x0b\xfc\x7a\xbc\x4f\xe6\xe7\xda\x3c\x5b\xc2\xa3\x28\x3b\xe9\x6f\x2a\x31\x59\xf4\x11\x8e\x89\x33\xd4\x38\x54\xd4\x18\x97\xcc\x96\x53\xe3\xeb\x8c\x6f\x6c\xd1\xa6\xd3\xe9\xd1\x2e\x9c\xa0\xf0\x99\x44\x96\x4e\xa7\x4f\x13\x59\xf2\xc2\x91\x74\xe1\x7f\x43\x42\xff\x36\xe9\x3b\x22\xa2\xff\x67\xa8\x93\xa4\x4a\x8a\xf1\x66\x0b\xba\x0e\xb9\x0a\x9f\x59\x78\xbf\x3a\xc7\xfb\x82\xe4\x11\x8e\xb9\xc8\x81\x6d\x27\xea\xc8\xe9\xb3\x0a\x7b\x97\x8c\xc7\x44\xdf\x6a\xd5\x22\x69\xc6\xfa\xbc\xf0\x05\x27\xbe\xf5\xc0\x26\xef\x42\x61\x81\xb5\x4c\xe5\x3f\xfe\xde\x02\xeb\x56\xfd\xe7\x16\x58\x3f\x58\x63\x49\x15\xa7\x61\xba\xa2\x22\x58\xd4\x28\x63\xc1\xac\xca\x59\x13\x81\x71\xcd\x7e\xa2\x61\xca\x35\x7b\xec\x97\xcd\x12\xe3\x31\x49\x2b\x37\x7b\xf1\x1e\xa2\x0a\x2b\xc5\x4f\x8a\xf2\x48\x5c\xd8\x78\x5a\x6d\x4b\x72\xc2\x96\x35\xd0\xb4\xc7\x31\x5a\xa6\x95\xdb\x4e\xdb\xc5\x10\xd7\x92\x1c\x90\xe7\xd5\x22\x54\xdc\x29\x0f\x36\x7a\xe2\xb4\x95\x69\x82\x57\x7d\x03\xa1\xb4\x3c\x3b\x27\x85\x40\x45\x98\x49\xa1\x16\x4d\x5c\xce\x07\x39\xbb\x16\x34\xfd\xe1\x21\x2e\x44\xcb\x31\x6e\x34\x6a\x90\x95\x67\xec\xea\x7c\xdc\x6b\x66\x76\xad\x0c\x3f\xb2\x28\x82\x52\x5d\xef\xd4\xaa\x8e\x0b\xaf\x5a\x7f\x70\xb0\xde\xbe\xfd\xb8\x61\x61\x3d\xbc\x7f\x70\x72\xe1\xbf\x7d\xfb\xf6\xdf\x6f\x3f\x7e\xdb\x7c\x6b\xbf\x1d\xbd\xdd\xbd\xf5\xdf\x8e\xdf\xa2\xb7\xf8\x6d\xfb\xed\xe3\xdb\xfd\xf8\x62\x0e\xdf\x71\xf2\xb8\x6f\xdf\xdf\x2b\xec\xdf\xdf\x8f\xea\x88\x8f\xcb\x2f\xa4\x16\xf4\xb1\x36\x25\x75\xe4\xd6\x38\x0f\x64\xb8\x87\xaf\xf8\x19\xe1\x6f\xfb\xcf\x8c\x25\xdb\x3b\x75\xd3\x21\x51\x85\xf7\xf0\xe5\xf3\xf2\x7e\x6a\xae\x1a\x7e\xe4\x64\xc2\x7d\x8a\x26\x1c\xac\xa5\x9c\x92\x2c\xcd\xb3\x58\x78\x0c\x3f\x9c\x81\xf6\x63\x7e\x5b\x01\x02\xef\x07\x27\xcc\x85\xee\xc2\xf7\xef\x23\xd6\x68\xa0\x73\x6d\xd7\x19\xb4\xbf\x33\x67\xbc\xdb\x69\x45\xe0\x73\xad\xd7\xb9\xdb\x59\x1c\xfe\x99\xb1\x3b\xb9\x67\x55\xca\xe3\xbd\x6c\xa7\xc9\x72\xd0\x09\xac\x89\xb3\x7c\xa9\x99\xac\x15\x90\x7f\xe1\x7a\x74\x7f\x52\x87\xfd\x22\x67\xb9\x7c\x24\x79\xfb\x29\xff\x72\x4c\xe3\xf3\x30\xc8\x32\x5b\x4c\xa6\x72\x15\x16\x4e\x5a\xb4\x18\x4c\x4d\xdb\x62\xf1\xf2\x97\x4a\x19\xd6\xd0\x43\xe2\x8f\x31\xe4\xce\xc9\xbf\xe7\x53\xa6\x24\x89\x72\x3e\xf3\x31\xae\x24\x17\x30\x03\x09\x33\xaa\xba\x7d\x09\x5e\x46\x03\x8c\x32\x92\xf8\xc1\x18\x8f\x50\x7e\x22\x24\x86\x4e\x66\x90\x95\x36\x28\x01\x70\x8c\x81\x35\x1a\x56\x9e\x64\x85\xf1\x47\xca\xa9\x6b\x91\x89\x94\xf9\x31\xf6\x44\x25\x22\x6e\x2e\x20\x59\xa1\x10\xef\xa1\xc0\xc9\xa7\x51\x74\x1a\x2d\x1a\x25\xeb\x2a\x4a\x8c\x94\xbc\x8e\x12\x25\x76\x2e\x91\xa6\xba\x9f\x15\x7a\xf4\xfc\xc0\xc3\x0d\x62\x84\xfb\x54\x2b\xbb\xe7\x58\xbc\x55\x17\x9d\xb2\xbb\xca\xab\x7a\xde\x5d\x0a\x19\xc6\x07\xf8\x2d\x8f\xca\x2b\x94\x98\x95\xfd\x3b\x27\x8f\xe9\x7a\xee\x59\x0b\x21\x56\xde\xc5\xc5\xc3\xc3\x43\xfb\xa1\xdb\xe6\xc9\xfc\xa2\xe3\x38\xce\x45\xba\x9e\x5b\xb0\x59\x88\x65\x74\x2a\x8b\x7b\x73\x73\x73\xa1\xbe\x5a\xb0\x89\xc2\xf8\xdd\xf9\x4c\xf2\xab\x05\x9b\xd3\x70\x7e\xbb\xfd\x4e\x66\xbb\xbe\x88\xe9\x92\xa5\x2b\x1a\x30\x95\x35\x4e\xcf\xb6\x4b\x7d\xbd\xb0\xf6\x8a\xd1\x4e\xc9\xe3\x2a\x61\xb3\x70\xe3\xfd\xce\xe1\xcf\x8c\x46\xe1\x6c\xeb\x9d\x60\x49\x4a\xaa\xef\xa9\x28\x51\xa5\x07\x63\x4d\xf8\xd9\x01\x95\x17\x87\x84\x5f\xd8\x2e\xc6\xf0\x3b\x3f\x24\xc5\x0c\x8f\x1e\x55\xb3\xbd\xdf\xb9\xcf\xc6\x10\xf1\x80\x46\x5e\xbc\xf7\xe2\xbd\x9a\x2d\x54\x88\xe4\xd8\x2b\xda\xf1\xbe\xa1\x92\x2d\x5d\x59\xe5\x92\xbd\x70\x70\x2f\xe7\x4e\xcc\xa7\x95\xcb\x5e\x15\x40\x30\x4e\xdb\xa6\xd7\x2a\x5c\x52\x5b\x55\x3f\x62\x92\xe1\xaf\xdc\xd8\xa1\xb8\xad\xda\x98\x67\xc0\x5e\x3d\x87\xba\xfa\xe6\x09\x12\xe6\xf4\x2b\x2b\x63\x92\x9b\x59\x22\x01\xb1\x3c\xfa\xd4\x37\x97\x2a\xe3\x63\xf2\x19\x92\xf4\x13\x6f\x07\x11\x4d\x53\x76\xc8\x7a\xfc\x2f\x3b\x0d\x09\x51\xce\x72\x45\x12\x2e\x11\x56\x31\xa7\x04\xba\xf8\xf7\xee\x6d\x6a\x5f\xcc\x71\xae\xd2\xa1\xee\xa3\xe4\x1e\x2b\x08\xd3\xed\xf8\x2e\x4c\x45\xe5\xf6\x29\x19\xe0\x70\x86\x5e\x88\x76\xc0\x63\x41\xc3\x38\x45\xea\x56\xc9\x6c\xe7\x2f\xdc\xd2\xb1\x9e\x84\x50\x43\x91\xa5\xe0\x59\xb8\x0a\xe7\x56\x17\x37\xba\x96\x25\x18\x83\xac\x17\xce\x69\xac\x6e\x9e\x89\xd5\x4d\x05\xab\xea\x7e\xf9\xe8\x0a\x55\x9f\x8e\x8e\xb8\xa5\x70\x86\xba\xc3\xa4\x86\xdd\x17\x15\xec\x76\xd4\x05\x8d\x20\x96\x85\xab\x41\xd6\xcb\x8a\xef\x8d\xe8\x43\x45\x41\xae\x36\x51\xb2\x2f\xc3\x24\xe7\x7e\xee\xb9\x44\xd1\xe7\x7c\xb9\xca\x04\x9b\xaa\x8b\x68\x54\x1d\x33\x45\x3f\x65\x96\x7c\xb5\xa8\x93\x87\xa4\x8c\x8c\x58\xd6\x71\x7f\xef\x4d\xb7\x74\x8f\x57\xa7\xee\x8d\xff\xe2\x44\xaa\x56\xa1\x1b\xe5\xc7\x5a\x18\x78\x34\x28\x0f\xcf\x1c\x94\x87\xca\xa0\x08\xb6\x39\xed\x70\xf8\x50\xc1\xa9\x2c\x7e\xd2\x3e\xfd\xe0\x70\x71\xd6\x9c\x7b\x70\x6c\xd4\xab\x79\xc6\x91\x65\x79\x62\xef\xe5\x4a\x3b\x15\x78\x47\x25\x2c\x6b\xef\x3d\xf5\x3d\xde\x6b\xae\xd5\xe0\xab\xfa\x4d\xf5\x59\x92\xfc\xff\xfb\x7d\x56\x0e\x45\xbe\xfa\xf9\xf6\xbb\x67\xf6\xb8\xcc\x7f\xaa\xbf\x15\x68\x07\xbd\x2d\xbe\x68\xe2\xbd\x5a\xb1\xd3\xde\x9a\x63\x72\xa7\xae\xaa\x54\x60\x50\xc5\x10\xa0\x63\x2e\x4b\x7d\xd5\x30\x3e\x5f\x84\xd1\x14\x9d\xe9\x22\xde\xeb\xe9\x14\xc6\x69\xdd\x83\x75\x55\x6d\xc1\x54\x48\xa6\xca\xe1\xcb\x87\xeb\xd5\xc0\x3e\x63\x33\x9e\xb0\x73\x15\x83\x78\xba\x41\xfa\xdc\x7c\x82\x7f\x2c\xc7\xf6\xe8\x5c\xac\x3e\x55\x78\xb8\x58\x1e\x5e\x35\x20\x8d\x04\x75\xaa\x31\x15\x48\x96\xe5\xbc\x4a\x5f\xa9\x1c\x69\x6c\xad\x8a\x4b\xe1\x59\x61\x67\x55\x0d\xbf\x42\x61\x86\x61\x5e\xb9\xb1\x98\x61\x58\xd5\x5f\xa7\x95\x57\xaa\x8e\x63\xe6\x64\xb8\x86\xa5\x31\x4d\xda\x9a\xdf\xdb\xfc\xde\x20\xd1\xf1\x89\x12\xc9\xc3\xae\xf3\x1b\x6f\xe3\xd8\x3e\x2c\xf9\x2e\xc9\x75\x2b\x3f\x84\x6b\x3c\x9a\xfa\xc9\x98\x84\xde\x52\x49\xcb\xd6\x10\x62\xb8\xd5\x5c\xdb\x1a\xd7\x41\xce\x2a\x20\x19\x70\xc2\x24\xd0\x44\x59\x37\x2e\x95\xd4\x6e\x8d\xf1\x08\xcd\x15\xb8\x4a\x65\x84\x63\x6f\x6b\x2a\xdb\xed\xd0\x4a\x7e\x7f\x85\x24\x9b\xbb\x35\x55\x72\xd9\x1a\x8d\xf6\xa3\x4a\xe9\x00\xeb\x96\xde\x1a\xfb\xc9\xa9\xbe\x47\x4b\xc6\x15\x35\x81\x22\xf7\x62\x80\x0b\x2f\xfe\xaa\x79\xe1\x08\x55\x5b\x02\xba\x75\xd8\x2b\x5a\xa1\x55\x05\x66\x26\x90\xbf\x49\x96\x45\xcd\x17\x6a\xbe\x14\xd5\xee\x57\xed\x6c\x35\xa5\x82\x91\x39\xac\xaa\x7c\xeb\xbc\xfa\x32\xad\xbe\xc4\x95\x17\x08\x34\x72\x57\x18\x22\xfd\x34\xc7\x90\xea\xa7\xa9\x56\x6a\x53\x33\xe8\xf8\x64\x72\xd2\x09\xa5\xea\x7e\x5c\x9d\x28\xc5\xf9\xc4\x19\x17\x6e\x65\xf3\x53\x0d\x0a\x49\x62\x2e\xf2\x63\x9f\x8f\x49\x89\x9a\x8a\x64\x42\x1f\x62\x7e\x46\xf2\xe0\x13\x91\x95\xfa\x4d\xf5\xaf\x6c\xc3\x29\x02\x59\xaa\x0b\xd0\x01\x66\xe5\x01\x09\x0c\xcf\x9f\x40\x52\x41\x41\x39\x0d\x39\x3e\xd4\x21\x38\x2c\x5f\xb4\x2b\x6a\xb3\x58\xb0\xe4\x94\x8f\xbe\x3d\x44\x6d\xb6\x09\x4f\xe9\x5e\xa6\x7b\x88\xf2\xc5\x5b\x53\xe1\xf8\xc0\x56\xb0\x2a\x14\xe3\x8a\x63\x18\xc4\x86\xfa\x9e\xf8\xa6\x09\x84\xd6\x0a\x38\x77\x00\x95\x2b\xf4\x84\xb3\x60\xed\x0f\xe3\x1d\x8a\x71\x35\x72\xa9\x03\xbc\x36\xf6\x7c\x18\x0e\x42\xdb\xc6\x8f\xd9\xf9\x63\xa9\xe6\x41\x55\x84\xd8\x13\xc7\x52\x6d\xfc\x59\xb3\xf8\xa4\xb6\x8d\x51\x42\x98\x3e\xab\x55\x86\xaa\x3c\x9e\xe1\x46\x43\x14\xce\x22\x8a\x53\x59\xa6\xfb\xcb\x93\x69\x7d\x40\x6a\xb7\xb9\xe2\xe0\x0c\x19\xbf\x14\xe5\x19\x52\x9e\x3d\x8d\x50\x48\x85\x63\x2a\xee\xa0\xe5\x04\xcd\xc6\x83\x56\x2b\x53\xe1\xcf\x10\x53\xef\x4a\x85\xa4\xd1\x08\x5f\x10\xc2\xda\x31\xdb\x88\xbb\x70\x12\x85\xf1\xbc\xd1\x08\xab\xf3\xaa\xb6\x8d\x30\x49\xc9\xc2\xca\x69\x52\x8b\x61\x25\x7b\xca\x0f\x42\x2f\xc4\xe4\xd3\x33\xfb\xf9\x41\x14\xc6\x7a\x8f\x94\x94\xcf\xdc\xb7\x68\x31\x7d\x5c\xab\x4c\x23\x08\x69\x64\xc9\x0d\xe8\xd4\xfc\xfb\x5e\xd7\x59\xd7\xad\xc0\x8f\xa5\x12\x44\x39\x1a\xca\x21\xb3\x39\xb7\xd0\x53\x47\x7a\x79\xca\xae\x34\xbe\x90\x97\x99\xbe\xf9\xce\x98\x68\xa1\xac\xde\x94\x75\xbb\x96\x2b\x71\x42\x33\xf9\x45\x85\xd1\x50\xf9\xe4\xe3\xe9\xb1\x76\x0e\x86\x5a\x0c\xe3\x41\x5c\xf1\x13\xce\x8a\x91\xd6\xda\x52\xc5\x1c\xcc\x86\xc9\x20\x91\x93\x5a\xcf\x79\x49\x74\x95\xc7\x05\x5c\xdc\xa2\x56\x4c\x53\xf4\xc8\x85\xef\x8f\xdc\xa9\xc7\x65\xf8\xcb\x93\x3b\xbd\x6d\xc7\x4a\xa4\xad\xe4\x08\x5f\x73\xb9\x0c\x6b\x62\x24\x4d\x56\x7e\x86\xe3\xc4\x8a\x84\xe9\x6b\x0e\x5f\x17\x2c\x56\xc1\x6c\xc9\x34\x8d\xbf\x1c\x91\x32\x45\x61\xca\x60\x4c\xbe\xab\xb1\x32\x63\x26\xdf\x55\x27\x4c\x67\xd4\xfb\xb1\xdc\xea\xc0\x1f\xdc\x81\xdf\x82\xfa\x2c\x54\x22\x97\xc7\x84\xa0\x4c\xe3\x99\x8e\xb1\xd9\xa0\x72\x47\x02\x27\x88\x45\x76\x8a\x44\x44\x12\x7c\x5a\x8d\x6a\x15\xbd\x4c\xd5\xa6\x91\xf9\x51\x45\x72\x95\xf8\xd1\x98\x94\xe2\xab\xea\xe6\x56\x61\x31\x22\xe5\x9a\xa0\x22\xb5\xaa\x6c\x36\x67\x84\x56\x1c\xef\x25\x42\x9e\x62\x2d\xcf\xe8\x0a\xfc\xa9\x39\x35\x5c\x72\xa6\x75\x75\x5d\x73\x04\x2a\x1c\xc0\x9c\x9c\xc9\xf2\x3c\x47\x7e\x08\x76\x3b\xdb\x7e\x13\xe4\x71\xe6\x7f\x0a\x76\xbb\x47\xe5\x09\x28\xd7\x25\x47\x58\xbb\x04\xfa\x3c\x31\xee\x80\x9c\xd2\x11\x50\xa7\xe7\xec\x73\x8d\x94\xfa\x30\x29\x55\xc4\xfc\xc2\x2f\x56\x3e\xe1\x4a\xd2\x6c\x08\x37\x18\xd9\x21\x3d\x94\x1d\x0a\x42\xfd\x40\x52\xc1\xef\x43\xa4\x82\xcf\x40\x86\xa1\xbc\xb1\x31\xb8\x79\x15\x2a\x17\x19\x86\x3d\x17\x2c\x49\xb2\xd5\xa9\x4d\xb1\x5c\x26\xef\xf1\xbe\x9c\xf7\xa7\xd4\x48\x8e\x8f\xa9\xa3\xaf\x38\x8a\x61\xc3\xb1\x57\xaa\xd1\xd4\xa6\xd6\x84\xc3\x0a\xa9\x1b\xe8\x12\xf4\x49\x01\xa4\xa4\x56\x27\xe0\x7f\x59\xc0\xc7\x1f\x80\xaf\x56\xf4\x2f\x15\xa9\x30\x9a\x70\x3c\x90\x1b\x53\xfc\x5f\x16\x3e\xbc\x70\xcf\x08\x1f\x3e\x7f\x96\xf0\xc1\x30\x34\xf9\xa9\xde\xba\xbf\xe7\xb1\x65\xc7\x3a\x44\xfc\xfd\x80\x91\x17\xee\xf1\xd9\xfd\xf3\x42\xc0\xa0\xfa\xf9\x46\xf5\x73\x49\x57\xe8\x71\xc9\xb3\x94\x29\x0a\xe5\x59\xea\x99\xaf\x59\x62\x81\x7a\x8c\x18\x5d\xb3\x3c\x39\x13\xd6\x1e\x0f\xde\xf0\x13\xb7\xcf\xf8\xd1\x52\x6d\x90\x1d\xda\xf0\x46\xe3\x4d\x7e\x80\x52\x0e\x7e\x55\x8d\xbf\x72\x42\xd1\xc4\x48\x73\xc0\xca\x52\x96\x68\x99\xbd\x85\xe1\x37\x4e\x1c\x49\x46\x55\x3d\xa7\xb6\xb5\xaf\x50\x0c\x0b\x94\x37\xfe\x63\x4e\x2e\xfe\xc5\x26\xdf\x86\xc2\xd8\xfa\xde\xf3\x76\x4c\xd7\xe1\x9c\x0a\x9e\xb4\x25\xe4\x4f\xe7\x2c\x16\x78\xd4\x72\x3d\x05\x57\xf0\x2c\x58\xb0\x43\xf3\x9f\xa7\x69\xc0\x02\xe1\xbc\x1c\x06\x31\xba\xe5\x48\x1c\x47\x80\xd6\x1b\xd2\x57\x0a\x5e\xe9\xf2\x3d\x9c\xb2\x58\x84\xb3\x90\x25\x44\x54\x5e\x80\xed\xb1\xe7\x6b\x0d\xe0\xfc\xca\xb2\x3d\x4d\xe8\xfc\x8c\xbe\x84\x39\xb1\xf3\x18\xe9\x01\x98\xf2\x87\x58\xe5\xb7\x80\x63\x95\xac\xda\xa7\x3d\x78\xe9\x74\x5a\x0d\xe2\x83\xaa\x5a\x67\xda\x07\x96\x8e\xb9\x3a\xfd\x59\xf7\xcb\x77\xc6\x95\xe6\xed\x6b\xc7\xcf\x5a\xb4\x1b\x83\x07\x14\xe3\xf3\x0e\x9d\x3f\x8a\xab\xfd\x26\x44\xec\xb1\xef\xd4\x5c\xeb\x17\x7e\x44\x0e\x6d\x8b\x2a\xbd\xe6\xe5\x61\x1a\xa5\x30\xc7\x26\x56\x75\x6b\xaa\x5d\xf9\x29\x43\xc1\xa9\xef\x8e\x07\xeb\x1d\x61\xbb\x44\x1e\x6a\x61\x86\x1e\xe5\x1a\xf3\x2c\x8d\x83\x8d\xf2\xc7\x6c\x07\xb2\xc4\xd6\x93\x25\xec\xc0\x77\xc7\x30\xdd\x78\x0c\xa6\x5b\x2f\xa9\x7a\xaa\xa2\x08\x3f\x2e\x25\x2e\x99\x6d\xb5\x2d\x7b\x65\x04\x77\x3c\x46\x49\x35\x01\xb6\x68\xdd\x68\x14\x68\xd4\x81\xbe\x09\x21\x0b\x5c\xaf\x9d\xc5\x53\xcb\x84\x01\x08\x20\xd2\xec\x51\x4a\xa2\xea\x9e\x36\x23\x59\x9b\xcf\x50\x54\x95\x45\x2c\xc8\x01\x68\x79\x94\x47\xea\x04\xaf\x84\x3c\xf3\x91\xee\x9b\xae\xa4\x65\xd9\x73\x98\xe6\x08\x5a\x13\x07\x96\x15\xa2\x75\xaf\xe7\x46\xde\x1f\x5e\xeb\x0c\xc5\xb0\x25\xdf\x21\x3c\x08\x47\x28\x20\xa1\x61\xe5\x6a\x6d\x09\x88\x1f\xb4\x37\x1a\xe1\x41\x7b\xab\xb0\x3d\xc6\x5e\x40\x7c\x07\x9c\x71\xbd\xbb\x6a\xea\xc9\x0e\x9b\xf8\x1c\x73\x14\x83\x19\x85\xca\x77\x28\x50\x93\x5b\xd7\x01\x27\x09\x0a\x20\x5f\xf1\xa0\xe7\xb7\xa4\x17\x96\x79\xce\x56\x16\x06\x4a\x54\x3c\x06\xd0\xf3\xdc\x7c\xd6\x73\x51\x02\x2b\x39\x52\x9e\x84\xf3\xe7\xda\x5b\x86\x44\x45\x99\x08\x2b\xaa\x02\x28\x86\x0c\x24\x01\x33\xf4\xe5\x33\xae\x05\x2b\x3f\x7e\x0d\xff\xe2\xa4\xd3\xfc\x8c\xc3\x37\x9c\x7c\xc6\x2f\x3a\xf0\x9a\x13\x97\xb5\xfa\xf0\x2d\x27\xaf\x79\xf3\x35\x87\x7f\xaa\x0f\xee\xb5\x03\x31\x25\xee\xb5\x73\xf1\x19\x07\x61\x5c\xd1\xdf\xfd\xf3\xa7\x9f\x3b\xc0\x28\xe9\x40\x42\xc9\xa5\xa4\x44\x15\xb7\x9e\x6f\x38\x3f\xb4\x02\xa8\xae\xc0\x42\x36\xd8\x54\x51\x3c\x97\x39\xb1\xf9\x1d\x4d\x95\xeb\xc1\x0b\xc4\x68\x73\x81\x9b\x88\x35\xbf\x46\x82\x36\x85\x3d\xc5\xad\x9f\xd0\xb4\xd8\x39\xfc\xc4\xe6\xcd\x08\x32\x9b\x37\x53\x08\x9b\xec\xe2\xf7\x3c\x5b\x6e\xd6\xea\x27\x76\xac\x72\xc4\x2a\x87\x6a\x33\xdb\xac\x54\x36\xe3\xfa\x3d\x21\xc6\x2c\x37\x36\x31\xde\xfd\xce\x58\x32\x23\x32\x91\x2a\xcf\x9a\x92\x83\x94\x89\x11\xe1\xad\x04\x52\x42\x5b\x19\xcc\x48\xd4\x8c\xec\xb4\x99\xe6\x22\x2a\xe5\x06\x53\x49\xa8\x50\xd0\x0c\x5a\x61\x33\xb4\x13\xda\x9c\xa9\x50\xa1\x61\x53\x75\x04\x56\xc5\xb7\x56\xf1\x2d\x30\xdf\xa6\xa4\x08\x1c\x55\xc2\x9b\x37\xe7\xb6\x8b\x5b\x6a\x0d\x9c\xf8\xbc\x6a\xae\xe4\xe7\x15\x86\x25\x59\xb7\xa6\xb0\x25\x68\xb9\xdb\x15\x19\x83\x8b\x10\xe3\x0b\x51\x8d\xd4\x61\xd8\x2e\xe2\xb2\x6e\x73\x0b\xac\x4e\xa8\xdf\xd7\x86\xab\x46\xa8\x95\x27\x4b\x1e\xa3\x4f\x41\x93\x0e\x4e\x6d\x4b\xe5\xb7\x60\xa1\x12\xbe\x87\x95\x26\xd8\xd3\x49\x14\x44\x61\xf0\xce\x7c\x9d\xaa\xd4\x3f\x21\xad\x91\xed\xd2\x15\xaa\x0a\x54\xd9\xba\x6b\x6f\xf0\xc5\x5d\xfb\x1d\xe8\xd0\xf3\x77\xed\xad\x7a\x1d\xef\xeb\xd3\xc5\x94\x91\x45\x9a\x77\xed\x77\xf6\x5d\x7b\xa3\x62\x5c\x9a\x97\xed\xf8\x20\x0a\xc0\x5d\xfb\x5d\x19\x3f\xe8\x9d\x1c\xd0\x42\x9a\xf8\x4e\x8e\x6b\x8c\x0f\xcc\xb5\x05\x7e\x14\x84\x21\x81\xe1\xae\xbd\xb1\x35\x5d\x56\x13\xe1\xae\xbd\xb5\x35\x69\xae\x07\xe4\x0f\x11\x7e\x9c\x34\x1a\x93\xdc\xba\x76\x93\x87\xe7\x3c\x63\xad\x8d\xe2\xa2\xaf\x7b\x9d\x67\x63\x0c\xab\x31\x86\x87\x46\xe3\x21\x07\x74\xff\x1c\x40\xdb\x2a\xa0\xfb\x02\x50\xcd\x4f\x1f\x7e\x8c\x73\x7a\x26\x47\xa4\xa0\x67\x95\xfd\x21\xc6\x8f\x21\xc2\x50\xcb\x67\x41\x1a\xd0\x88\x79\x72\x50\x0a\x6f\x88\x9e\x2f\x31\xae\x10\x5d\xf3\x74\x79\x58\x89\xd9\x23\x8a\x1c\xd1\xe1\xae\x9f\x12\x17\x32\x94\x13\x47\x94\xa8\x60\x17\x14\x85\xd5\x98\x7b\xb2\x8c\x9e\x59\xf7\x5c\x79\x7c\x5b\x79\xc5\xce\xf5\xb3\xd9\xb3\xe6\x28\x3d\xb5\x67\x45\x18\x02\x09\x4c\x2f\x6f\xb5\x45\x85\xe4\x73\xb9\x27\x25\xd5\x7d\x20\x3a\xda\x93\x52\xe2\xc0\xec\x78\xa7\xf9\x1e\x62\x53\x2d\x93\x3b\x99\xa8\xb6\x5c\xae\x78\xb9\xdd\xbc\x37\xd2\x20\x0c\xbc\xd6\x8f\xf4\xb0\xef\x7a\xef\xaf\xb0\x1c\xab\x82\xcc\xcf\x89\x44\xf7\x29\xdd\x47\xb9\xfc\x4a\xde\x43\xf2\xa0\xeb\x46\x03\xad\xfd\x6a\xea\x98\x08\x15\xbe\xb5\xe6\xa9\x91\xa1\xaa\x51\xec\x19\x2e\x09\x0e\xc2\x6f\x84\x46\x83\x6f\xad\x2c\x24\x6a\x55\x28\x97\x75\x5a\xa9\x41\x6e\xdf\xda\xc1\x82\x3e\xe4\xe5\xa6\x51\xbc\xaa\xf6\xd4\x73\x9c\x61\xd0\xba\xd5\xdd\x8e\x08\xd7\x11\x54\xd6\x7e\x54\x85\x3a\x48\x50\x47\xae\x61\x0c\x99\x8a\x3f\x06\x33\x24\xa7\xc3\x14\xef\x6f\x49\x50\x38\x3a\xe3\x85\x81\x51\x0d\xda\x82\x70\xb9\x96\xe7\x24\x92\xab\x75\x21\x93\x56\x24\x92\x4b\x75\x21\xb9\xa8\x25\x91\x44\x74\xd5\x5c\xed\xeb\xab\xb6\x76\x88\x55\xf2\x82\xda\x90\x40\x40\x1c\x49\xf0\x73\x94\x44\xc3\x40\x1e\x2e\xcd\xee\x8e\xc3\x99\xd2\xd9\x08\xe4\x86\xb1\xf6\xab\xfc\xf0\x58\x75\x5b\x60\x15\xbc\x7c\x10\x13\x06\x82\x84\x7b\x25\xa5\x51\xad\x4e\x09\x4a\x55\x1c\x77\xe5\x0d\x02\x37\x53\x5b\xbd\x2b\xef\x10\xae\x7c\x97\x13\xb0\xd1\x28\x89\x7c\x7a\xb1\xc4\x83\x98\x68\x4a\xa9\x42\x4e\xe0\x8b\x8e\x26\x94\xca\xb4\x1e\x5f\x74\xc6\x20\x88\xaf\xc4\x55\x76\x98\x7f\x57\x2e\xa1\xc3\xfc\x7b\x82\x66\xcd\xb9\x44\xa7\xe2\x4d\x34\xa9\xd3\x18\x2e\x90\xb2\xd0\xf6\x27\xe5\x92\xd0\xb8\xa8\xc9\xcd\x3f\x3c\x8b\x92\x72\x16\xe5\x7a\xa0\x46\xe7\xf2\x78\x32\x95\x2a\x34\x6a\x42\xe7\x52\x2c\x65\xf3\x15\x23\xbc\xbf\x97\x6b\x6e\x53\xf2\xab\x13\xb3\xea\x1f\xaa\x3b\x91\xdc\x5a\xe0\x95\x9c\x8a\xf9\x6d\xc0\x1c\x56\x7a\xcd\x4f\xf5\x9a\x5f\x55\xd7\xfc\x5a\x69\x50\x12\x07\xb6\xe7\xba\x51\x3f\x32\xc0\x86\x94\xbc\x99\xda\xd3\x5a\x96\xbd\x85\x09\x29\xb8\xb4\x32\xf1\xfe\x98\x72\x6c\x20\x34\x4d\x5f\x60\x78\xa8\x7c\xd7\xbb\xe5\xa7\x65\xe7\xfe\x94\xb4\xe5\x55\x95\x94\xac\x54\x8c\x18\xe0\x47\xa3\xa4\x29\x88\xea\xdb\xa1\xf8\x75\x3b\x0a\x22\x46\x93\x9f\xc3\xa5\x3c\xcc\xa2\x2d\xf6\xd0\xfb\x52\xb0\x23\x81\xc5\x58\x32\xc8\xa9\xf6\x47\x23\xf3\x54\x36\xfc\xad\x9e\x1e\x81\x52\xa3\xeb\x39\x6a\x1d\x9a\x20\xa7\xcb\xdd\xae\x20\x7a\x0a\xd4\x60\xbd\xdb\xa1\x35\x11\xca\xc4\xcf\x04\xfc\x5c\xf1\x07\xd4\x81\xb6\xe3\x74\x9a\x19\x45\x18\xe7\x6b\x9a\xc1\x5a\xce\xb6\xaa\x0b\x86\x95\xec\x87\xaa\xae\x12\x1e\xe2\xc9\xbe\x19\x6b\xa7\xb2\x05\x92\x62\x21\x56\xc4\x6e\x97\x1c\x8f\xac\x2f\x0f\x33\xda\x19\x70\x15\x97\xb5\xda\xb4\x62\xc8\xd3\x45\x38\x13\xdf\xb2\xed\xa8\x0c\xed\x18\xe1\x96\xeb\x55\x4c\x24\x23\xac\x94\x82\x32\x2d\x17\x97\xad\xd7\x88\x31\xf7\x89\xb0\x85\x5b\xd8\xc0\x04\xee\xe1\x01\xee\xc8\xe3\xc6\x73\x60\xeb\x39\xf0\xce\x73\xf7\xf0\x8a\xf8\x37\x7d\x07\x7a\x8e\x33\x86\x77\x24\xa4\xf0\x29\xa9\x1c\x70\xf5\xfe\xfa\x3d\x29\xcf\x04\x26\xe9\x67\x92\x1f\x0d\x4c\xc2\x9f\xa4\x7a\x00\xd6\x69\x9f\xeb\x33\x48\xb9\x99\x83\xd9\xb0\x8b\xad\xb7\x72\x6c\xd0\x3a\xa2\xf5\x7d\xe4\xf4\xcd\xee\x49\x94\x0b\x72\x37\xf8\x21\x18\x95\xd3\x56\x21\xbe\x22\x16\x44\xd8\x28\x01\x54\x5b\x58\x81\x7d\xa7\xe5\x38\xf7\xf7\xc1\x82\x26\xe2\xfe\x7e\xb7\xab\x23\x8a\xeb\xf0\x48\xca\x1d\x37\x52\x1d\xf0\x8e\x60\xe8\x09\xf8\x4a\x1f\x8f\x5f\x49\x5a\x9f\x11\xa6\x62\xb3\x27\x17\x1d\x4d\xb7\x0f\xce\x1c\xc8\x47\x59\x85\xa7\x0c\x0b\x56\x09\x98\x62\x2b\x41\x7e\x17\xf2\xbb\xd0\xdf\x85\xfc\x2e\xd4\x77\xd1\x7e\x77\x22\x48\xba\xc8\x05\x62\x5c\x32\x87\x01\x61\x17\x89\xdf\x19\x0f\xea\x9d\x23\x6a\x1a\x64\xad\x44\xf2\xa7\x01\x6c\xbd\xb0\x95\x48\xee\x34\x80\x77\x5e\xb0\xd7\x0b\x60\x9f\x23\x2c\xa7\x1c\xb5\xae\xaa\x09\x86\x3d\x74\x08\x57\xe1\xa9\x9c\x83\xea\x52\x23\x6e\x17\x7c\xd9\xf3\x8e\x85\xaa\x75\x3a\x3c\xfe\x56\xfe\xba\x63\x78\x27\xf9\xbb\x3d\x28\xee\x0f\x57\xb8\x3b\x88\xdb\x8a\xfd\xfb\x0b\x80\xef\x54\xdc\xfe\xbb\xf6\x16\xde\x79\xb6\x28\x60\x2a\xf8\x06\xda\xf9\x58\x46\xc7\x30\xdf\x15\xaa\x20\x21\xf5\x7c\xdd\x6a\xd5\x66\xc9\xb5\x7b\x0a\x66\x70\x70\xbf\xf9\x14\xb8\x25\x11\x8d\xc6\x11\x98\xa5\x6a\x5a\xed\x8a\xe4\x29\x20\xaf\x4e\x02\x79\x25\x81\x6c\x9e\x07\x61\x42\x04\x6c\x88\xc8\x1d\xd8\x1c\x92\x8d\x18\x7b\x13\x09\x6d\xfb\x3c\x68\x0f\x44\xc0\xfd\x93\xd0\x1e\xea\x22\x80\xcf\xab\x22\x80\x8c\x42\x48\x89\xef\x80\x7b\xe1\x8c\x81\x53\x62\xf1\xf8\x61\xc1\x58\x64\x29\x09\xe7\x08\x65\xf4\x58\x14\xde\x2a\x28\xe8\x94\x45\x82\xfe\xde\x44\xf5\x84\x5b\x3e\x65\x23\xb7\xe3\x78\x2e\xde\x83\xa5\xc1\x61\xcf\xe2\xb1\xa2\x6b\x1f\x04\x5f\x8a\xf1\x54\xd6\x2f\x24\xc8\xbd\x91\x97\xe4\xc0\x3e\xd8\x2e\x41\xc3\x68\xaf\x2c\x14\x6e\x65\xb9\x1f\xc3\x0d\x8b\xee\x82\x84\x47\x91\x85\x07\x6f\x2a\x46\x04\x4f\x78\x08\x56\x0b\x30\x99\x4f\x10\xb6\x2d\x4b\x21\x71\x91\x46\x47\x32\x72\x93\xf9\x94\x3f\x80\x51\xcd\x58\xf1\xb7\xd1\xaf\x28\x6e\x2f\xe4\x6c\x83\xb8\x1d\x61\x2f\x12\xc8\xb2\xec\x18\x52\x01\xbf\x62\xef\x57\x64\xc7\x60\x0b\xb0\x99\x19\x1b\x4a\xc9\x6f\x95\xcb\xb4\x98\x3d\x7c\xf4\x66\x40\x69\x7b\xa2\xec\xac\xd9\x29\x1b\xf8\x8f\xe2\x32\xe8\x78\xfb\xea\xc8\x44\x74\x14\x7b\x2e\x86\x5f\x35\x65\x59\x18\x15\x23\xfd\x13\x5d\xc8\xed\x9e\xd2\xf6\x94\x26\xef\xfe\x7b\xb0\xe3\xa6\x86\xae\x61\x27\xf3\xc9\x09\x34\x7f\x7c\xb2\x3d\xfa\x22\x64\x11\xfc\x2f\x10\xfe\xaf\xd1\x67\x06\xe1\x81\x46\x78\xed\xeb\xb7\x23\xe5\x1d\x29\x82\xb8\x4d\x21\x6e\x4f\xb0\x17\x0b\x84\x62\x32\x53\xff\xe5\x8a\x99\x4f\x24\x99\x6d\x27\x10\xb7\xe7\x2a\x07\xae\xe6\xfe\xec\x70\xbc\x02\x4a\xfe\x75\x34\x5e\xc1\xd3\xe3\xf5\x59\xad\xef\x41\x29\x9a\x70\x1d\xc7\x20\xc2\x8e\x68\xf3\x48\x1f\x52\x61\x1b\xe3\x3d\x04\x4f\x8d\xd8\x69\xe8\x2a\x96\x9e\x86\xdd\xfa\x10\xec\xd3\x23\xf6\xcd\x01\x5c\x33\x62\x7a\xad\xa8\x71\x8b\xe8\xe4\xef\x8f\xdb\xb7\xa3\xd7\x07\x03\x53\x1f\xd5\x6f\xcc\x57\x39\xaa\x0b\xec\x3d\x31\x60\xde\xeb\xc3\x41\x8a\x28\x71\xaf\x21\xa5\xa4\x7d\xd3\x73\x2e\xaf\x60\x46\x89\x0b\x0b\x4a\xdc\xb6\x73\x7d\x7d\xdd\x85\x39\x25\xdf\x1e\x0d\xe2\xfc\xe9\x41\x7c\x8d\xfe\xda\xb0\xe9\x1c\x54\xff\x4c\xf0\x1e\xe6\x4f\x0d\xe2\x6b\xf4\x57\x86\xed\x14\xec\xd3\x83\xf8\x4f\x3d\x88\xd1\x51\x09\x8d\xc9\xbf\x3f\x7c\x54\x8c\xb8\xf2\x3b\x56\x0e\x43\x4e\xe9\xb8\x80\x8f\xb1\xc7\x05\xfa\xcf\x7f\x62\xf8\xcf\x7f\x04\xfc\xe7\x3f\xf9\xc0\xac\x28\xa1\xe2\x08\xf3\xab\x33\x98\x7f\x06\x2d\x32\xfe\x21\x35\x11\xcf\xb5\x50\xe6\x46\x83\xa6\x3d\x81\x8c\x74\x4b\x15\x88\xdd\x8e\xed\x76\xc9\x08\x89\x46\x23\x1b\xea\x48\xe4\x99\x32\x28\xc9\x8c\x67\xa0\x0c\x43\x22\xdf\x12\x65\x42\x96\x61\xe0\xa2\x1c\xf5\x4e\xaf\x07\xff\xf9\x0f\x12\x17\xf2\x5c\x75\x98\xca\x4e\xa6\x26\x17\x2a\x64\xa5\xc4\x45\x06\x19\x64\x78\x0f\xab\xff\x2d\xf1\x55\x78\x45\x86\xe4\x26\x18\xca\x97\x79\xf5\x65\x82\x75\x65\xb5\xcd\xac\xd4\xfd\xd2\xfc\x7d\x3b\x01\x83\xb0\x62\x5e\xac\xe8\x13\x9b\xa5\xf5\x3f\x96\x1d\xe4\x45\x71\xf1\x38\x2f\x1f\x27\x66\xa0\xa7\xb4\xb8\x92\xa5\x51\x18\xb0\x49\x94\x31\xcf\xed\x5d\xdd\x74\xba\xd7\x5d\xa0\xb1\x08\xff\xcc\xd8\xc3\x22\x14\xcc\x73\xfb\x97\x97\x97\xdd\xab\x1e\xd0\x3f\x33\xea\xf5\x7b\xbd\xae\x7e\x5c\xd2\x24\x8c\x99\x77\xdd\xbd\xbe\xee\xf5\x2f\x81\xbe\xcf\x12\x0d\xe2\xd2\xbd\xea\xc1\x84\x85\x73\x59\xd6\x75\x6f\x3a\x7d\x07\x26\x61\xfa\xa7\xac\xa1\x7f\x75\xe5\x74\x2e\x2f\x61\x12\xd1\xe0\x9d\xe7\xc8\xdf\x38\x58\xb0\x29\x8d\x96\x3c\x9e\xaa\xef\x1d\xe7\xb2\x07\xaa\x3d\x72\x94\xe4\xc3\x3a\xe4\x11\x13\xde\x8d\xd3\xeb\x75\x9c\x0e\x4c\x12\xfe\x10\x7b\xae\x73\xdd\xb9\xec\x74\x2f\x61\x92\x25\xd1\xf6\x81\xf3\xa9\xe7\x5e\xf6\x6e\xfa\x9d\xae\x0b\x01\x9d\x32\xa1\x40\xf4\x3b\xfd\x7e\xaf\x73\x0d\x8a\x7f\x4f\x58\x96\xea\x06\x77\x7b\x1d\x08\x16\x3c\x50\xe7\x14\xcf\xed\x5e\x5d\xdf\x5c\x5e\x39\x10\xf0\x84\x46\xb2\x11\x97\x97\x9d\xab\x8e\x7c\x8d\x67\x11\x7f\x60\x89\x86\xd5\xbb\x71\x6f\xae\x5d\x95\x9c\x86\xd1\x3b\xd5\xda\x5e\xf7\xfa\x1a\x82\x24\x5c\xa6\x3c\xf6\xdc\xcb\xcb\x4e\x57\x52\x9f\x60\x4b\x63\x83\x2a\x39\x9b\x34\x76\xbb\x37\xea\x45\x7d\xeb\xf6\xae\x3a\x5d\xf5\x3a\xe7\xd1\x94\xc5\x89\x6c\x7e\xc7\xb9\xe9\xdc\x98\x5c\xf3\x84\x6e\x3d\xd7\x75\xdd\x1b\xc7\xbd\x32\x29\x8c\xc5\x5e\xa7\xd7\x77\x9c\xfc\xfd\x20\xc7\xbb\x05\x7d\x17\x7a\x6e\xe7\xb2\xdb\xed\xf4\x34\x98\x25\x9d\xb3\x58\x50\xef\xc6\x75\x6e\xfa\x97\xba\x46\x1e\x85\x6b\xa6\xa1\xf5\x7a\x37\x57\x37\x37\x3a\x2b\xd7\x4e\x25\x65\xef\xaf\x7a\x1d\xc7\xa4\x05\x8b\x70\xea\xb9\x8e\x73\xe9\x38\x6e\x47\xa5\x25\x6c\xaa\xc0\xf5\x9c\x4b\xf5\x9e\xaa\xb1\xf3\xdc\x5e\xd7\xb9\xbe\x74\x75\xb9\x94\x51\x5d\xc1\xcd\xa5\x7b\x73\xe3\xea\x0a\xd4\x01\x49\xa1\xe2\xf2\xaa\x7b\xd9\xbd\xbc\x2a\x53\x55\x6f\x25\xe6\x2e\x6f\x7a\xd5\x54\x56\x4f\x15\x59\xf2\x67\xc6\xc3\x94\x79\xbd\xce\xcd\xa5\x4e\xcb\x27\x47\xff\xe6\xa6\x27\x71\xc7\xd8\x6a\x15\xc6\x6a\x70\xdc\xfe\x8d\xac\x84\xb1\x55\xfa\x6e\xab\x2b\xbe\x71\x7b\x2e\x4c\xc3\xa5\xaa\xb0\x7f\xe3\x5c\x77\xfa\x3d\xfd\xce\x2a\xef\x7c\x3a\x37\x63\xde\x71\x9c\xae\x7b\x73\x03\xb3\x30\x61\x93\x24\x0c\xde\x79\xae\x44\x90\x7b\xd9\x87\x59\x24\x67\x4b\xbe\x46\xae\xae\x7a\x37\x1d\x07\x66\x3c\x61\xa9\x30\x43\xd5\xe9\x77\xaf\x2f\x3b\x30\xcb\x82\x45\x1a\x52\xd5\x22\xf7\xa6\xdb\x83\x39\x0d\xe3\x74\xc2\x13\x2e\x27\xcc\xd5\xe5\x65\xdf\x81\xf9\x82\xa7\x22\x87\xd5\x75\xfb\xfd\x2b\x17\xe4\xcc\x90\x85\xfa\xfd\xab\x8e\x03\x95\x79\x72\xd9\xed\xdc\xb8\x32\x49\x76\xe2\xfa\xb2\xe3\xca\xa1\xd0\x75\x76\x3b\x57\xfd\x6b\xfd\xbc\x65\x51\xc4\x1f\x3c\xd7\xbd\x74\xba\x4e\xaf\x07\xaa\x8b\x79\xee\x05\x8f\xd9\x76\xca\x1e\xcc\x82\xed\x3b\xb0\xe0\x22\xc7\x5b\xf7\xfa\xea\xd2\x81\x30\x9e\x86\x34\x96\xa3\xed\x76\x2f\x7b\xd7\xbd\xce\xa5\x4a\x9a\x73\x85\xc5\x6e\xd7\x81\x70\xcd\x93\xad\xea\xfb\x55\xc7\x71\xc0\x4c\xbf\xde\xd5\xf5\x55\xbf\xef\x40\x44\xd7\x2c\x9e\xb2\xc4\x73\x7b\x6e\xb7\x23\x67\x46\x9e\x32\x89\xb2\x74\xa1\xca\x75\xbb\xfd\x1e\x44\xf4\x21\xd6\xad\xbf\x76\x6f\x9c\x9b\xab\x3e\x44\x6c\xc9\xe3\x60\x11\xce\x66\x72\x62\x49\xdc\x5e\x5f\xf7\x20\x92\x5b\x90\x5e\x4a\x6e\xf7\xa6\xdb\xe9\x5d\xea\x24\xb3\x6a\x7b\x57\x7d\xb7\xd7\xed\x9b\x34\xb9\xc8\xdc\xcb\xab\xcb\x5e\xef\xe6\x46\x27\x15\x08\xcc\x11\xd3\xbf\xbc\xbc\xee\xc8\x66\xa9\xaf\x6a\xbd\x75\xaf\xaf\x3b\xdd\x4e\x37\x4f\xd2\x33\xf8\xe6\xba\xd3\xeb\x17\x49\x87\xb9\x72\xa4\xf5\xae\x2f\xfb\xa6\x8d\xf9\x8a\xe8\x5f\xf5\x3a\x57\xfd\x8e\x49\xcc\x97\x44\xc7\xbd\xec\x5c\xdf\x98\x6a\xf3\x89\x79\x7d\xe3\x38\xdd\x4b\x53\x4b\xb9\x24\xae\xae\xbb\xdd\xab\x5e\xb7\x96\xcc\x0e\x93\x05\x63\x91\x41\x4b\xef\x5a\x2e\x2d\x9d\x5e\x74\xf3\xea\xea\xca\xbd\x96\x89\x4b\x49\xc3\x3a\xd7\x8e\x7a\x34\xf3\xa5\xdb\xb9\x91\x43\x19\x85\x31\x8b\x15\x4a\x7a\xfd\x2b\x07\x72\xb2\x51\x4c\xd9\x25\x4d\x38\x8f\x15\xed\xec\x3b\xd7\xb0\x64\xd3\x30\x5b\x56\x76\x81\xfe\x55\xf7\xaa\xdb\xe9\x98\x0f\x66\xe9\xf4\xcc\x6b\x4e\x45\x3a\x1d\x57\xce\x6c\x93\xba\xca\x92\x55\xc4\xbc\x9b\x7e\xbf\xd3\xbf\xee\x9a\xc4\x02\x4b\xdd\x9b\xab\x6b\xe7\x26\xcf\x5b\x92\x8e\x6b\xe7\xfa\xea\xea\xc6\xc9\xd3\x57\x72\x23\xd4\x25\xfa\x97\x6e\xef\xd2\xa4\x97\x84\xe2\xf2\xea\xaa\xd3\x75\xf2\xfc\x9a\x58\xe8\x39\xed\x5c\x5e\xb9\x57\x5d\x58\x86\xd3\xb8\x9c\x58\xfd\xcb\xcb\x1b\xb7\x03\xcb\x30\x16\x41\xc2\xe8\x52\xee\x60\x1d\xf7\xba\xe7\xc0\x32\x4c\xc5\x36\xe1\x69\xbe\x89\xc9\xa2\x3c\x08\x68\x1a\xc6\x26\xa5\x73\x03\x31\x5d\xd3\x3f\x78\x41\x13\xfa\xd7\xfd\xeb\x9e\x4c\xdc\x7a\x6e\xe7\x1a\x78\x34\x8d\x68\x20\xbf\xf4\x2f\xbb\xbd\x9e\x4c\x08\xd7\x4c\xad\xc9\xee\x55\x5f\xbf\x4d\x13\x3a\xf1\xae\x9c\xcb\xeb\xab\xee\x0d\x94\x24\xb9\xd7\x95\xd4\x45\xbf\xab\xe6\xf7\xaf\x3a\x37\xdd\xcb\x4b\xc8\x71\x7b\xd9\x75\x7b\x72\xe8\x57\x34\x62\x15\x52\xd1\xeb\xf7\xae\xdc\xae\xa3\x93\x15\x9a\x5c\xc7\xe9\xf4\xae\xaf\x75\x52\x89\x27\xd7\xed\x75\x6e\x6e\xfa\x7d\x95\x5c\x41\xd3\x65\xf7\xda\xed\x38\x5d\x58\xd1\x15\xdd\xd2\x87\x45\xb8\xd2\x0b\xd7\xb9\xba\x82\x15\xa3\xc1\x62\x95\xcd\x66\xaa\xaf\x57\xfd\xab\x2e\xac\x58\x92\x49\x7a\xd1\xbf\xbe\xb9\x71\x21\x5f\x1b\x7d\xd7\xe9\xf6\x60\x15\x65\x4b\xb9\x47\x77\x2e\xfb\xdd\x2b\x58\xf1\x87\xa9\x21\xb2\xae\x2b\x77\x56\xd7\x01\x33\x25\xe4\x2c\xbb\xea\xf6\xc1\x74\xd4\x75\xfb\xd7\x0e\x24\x3c\xdd\x9a\x9d\xbf\xd3\xed\x5d\xf5\xdc\x1b\x48\xf8\x96\xea\x99\x7f\xd9\xb9\xee\xcb\x0d\x21\xa5\xd3\x69\xc4\x74\xb6\x1b\xb7\x73\xe5\x5e\x5f\x41\xb1\x1a\x2f\xdd\xfe\xf5\x75\x07\x52\x1a\x4f\x73\x48\x7d\xa7\xdb\xb9\xee\x5f\x42\x39\xed\x9c\x9e\xd3\xed\x5c\xc9\x84\x74\xc1\x22\xc5\x0c\x5c\x5d\xf6\xbb\xd7\x90\x86\x2c\x8e\xa9\xe7\x3a\x3d\xa7\x7f\x75\x73\x05\x69\x18\xad\x25\x71\xeb\xf4\xbb\x1d\x49\x1f\x6a\x2b\xb9\xeb\x42\x39\x65\xfb\x37\x57\x8e\xd3\x37\x29\x7a\x59\x77\xaf\x3a\x37\x97\x97\x50\x59\xd1\x79\x4a\x6c\x96\x6c\xef\xa6\xeb\x40\x6d\x7a\xf7\x2e\x9d\x2b\x28\x17\xfb\x65\xbf\xe3\xdc\x5c\x3b\x20\x24\xa1\xeb\xca\x65\x21\x5f\x18\x8d\xbc\x6e\xe7\xfa\xa6\xaf\x38\x46\x11\x31\xcf\xbd\xec\x38\x97\xd7\xd7\xd7\x20\xf8\x92\x0a\xae\xe8\xfb\x95\x73\xd3\x83\xca\x1a\xe9\xf4\xdc\xeb\x5e\x1f\xcc\x56\xea\xf6\xfa\x5d\xd7\xb9\xee\xc3\xc3\x82\x51\xa1\x78\xb8\xae\xec\x51\xb9\xd5\x5d\x75\xdc\x9e\x7e\x4d\x97\xfc\x5d\xce\xe6\x5d\xf7\xa0\x42\x73\xfa\x37\x7d\xc7\xbc\xe7\x13\xcf\xbd\xec\x39\x57\x97\x7b\x3c\x98\xd2\x53\x4e\x65\x04\x7e\x9c\x52\xe3\x31\x2a\xd3\xee\xcd\x95\x81\xbd\xca\xc2\x13\xb2\x52\x6e\xed\x36\x8b\x84\xac\x05\x9a\x0a\xf5\x6d\x9a\xae\x9f\xb4\x6b\x82\x10\x3f\x9e\x74\xde\x15\x12\x06\x4c\xdf\x20\x9a\x4b\x54\x0d\x5b\x1d\xb4\xc2\x4a\xdc\xb2\xa4\xea\x81\xf9\x09\xdb\x0b\x5e\xb8\x78\x36\x0e\x26\x10\x23\x31\x1e\x25\x5e\x26\x8f\xc3\x1e\xdb\x83\x82\x85\xaa\x91\x09\x92\xaa\x4f\x98\x0f\x39\xa6\xce\xce\x78\xca\x3e\x28\x2f\x6a\xe5\x21\xae\x3a\xc3\xe6\xd5\xa0\xf5\x8a\xfb\xa7\x26\x14\x53\x7c\xa8\x86\x90\x1b\xa8\x68\x9d\xc7\x18\x8f\xfe\x61\xfd\xc3\x2e\xdd\x57\x5c\xbc\xb5\x2e\xe6\xf0\x0f\xcb\xfa\x07\xb6\xff\x61\xfd\xc3\xcb\x4d\x6f\x2a\x51\xac\xfe\xe1\xcb\x12\xb6\xf5\x36\x1e\x5b\x18\xa2\x7a\x90\x3a\xa7\xa2\xc1\x78\x18\x5e\x20\x77\x22\x92\x1c\x64\xf9\x89\x3f\xa4\x28\xae\x04\x89\x34\xfe\x8c\x0a\x3b\x59\x39\x78\xac\xe5\x16\xb1\xda\xd8\xc3\x47\x5f\xe6\x99\xad\xa9\x05\x96\xc9\xf7\x98\xc7\xd6\x3a\xa9\xa2\xa9\x9c\x84\x6b\x85\x5a\x6d\xee\x6d\x5b\xde\x47\x53\x5f\x85\xc4\x1d\x5b\xfb\x3c\x0a\x17\x58\xd8\xb6\xf6\x16\x1e\x24\x44\x8c\xea\x6d\x2a\x1c\x0e\xa9\x68\x8c\x0c\xef\xbd\x6c\x8f\xf7\x50\xe9\xc6\xf9\x39\xab\x7a\x94\x0e\x49\x90\x77\x8a\xab\x50\x66\xf9\x5b\x46\x5e\xb8\x90\x47\x5d\x48\x95\x0e\xf0\xe5\x61\x00\x40\x81\x6b\xde\x17\x07\xcc\xb6\x5f\x06\xca\x90\xfa\x38\x2f\xc3\xaa\xc2\xee\xe5\x8b\xc3\x0f\xb6\x8b\xcd\xcd\xb9\x6d\xb3\x7d\x4a\x98\xdd\xc9\x23\x1c\x1e\xe6\xcb\xc7\xc9\xed\x2a\xed\x10\x94\x91\x17\x0e\xb8\xce\x51\x5d\x76\x07\x37\x1a\xb6\x9d\x62\x4f\x7d\x4c\x94\x4b\xcd\x17\x0e\x86\x03\x07\x00\xc0\x70\x39\xd1\x2c\x3d\xd1\xfe\xa1\x2d\xe7\x07\xc1\x30\x1d\x14\x91\x1c\xaa\xd0\x53\xdb\xc6\x40\x89\xf6\x61\xab\xc0\x63\x09\x7c\x90\xeb\x2c\xe8\xc6\xe1\x33\x6d\x4b\x71\xa3\x81\x6c\x3b\x85\xd2\x37\xac\x0e\x14\x48\x22\x1c\xf0\x58\x84\x71\xc6\xca\xbb\xbc\x4a\x6b\x21\x6d\xd1\x42\x8b\xbd\xf6\xa5\x0c\x2a\xaf\x5d\x78\x28\xaf\x56\x8f\x7b\xe5\xd5\x0a\x82\xd2\xc6\x52\x6b\xba\x38\x03\x94\x10\x86\x30\x7e\x41\x08\x1f\x94\x03\xb8\x50\x0e\x90\x5e\x10\x12\x36\x1a\x89\xfe\xb6\x28\x62\x2c\xaa\x12\x03\xf4\x42\xec\x76\x68\x41\x04\x5a\xc0\xcc\xb6\x31\xc6\x8d\x86\x89\xdc\xb9\x28\x9a\x46\xe5\xfc\x9b\x1d\xf8\xf9\xd7\x66\xde\xda\x39\x62\x98\x1a\xc7\xec\xbe\x53\x18\xea\x7f\x94\x17\x51\x4b\x4f\xe0\x4a\x88\xcb\x50\x5b\x85\x15\xc4\xe4\x94\xa2\x4c\xcd\xe9\x52\x8c\x13\x65\x0b\x29\xf0\x6e\x67\x2c\xc1\x12\xe5\x96\x4a\xd3\x79\x3f\x3b\xa0\x47\x63\xe3\xa4\x11\x89\x23\x45\xe8\x7c\x2d\x9c\x8b\xc3\x41\x91\xf0\xe3\x31\xde\x97\xb4\x0d\xe7\xab\xf6\x6d\x6c\xe1\x12\x13\x07\x4b\xb1\xa2\x5d\x2c\x21\xf3\x83\x42\x4a\x28\x17\xa4\x6b\xa2\xf7\x1d\x49\x02\xc0\x12\x6c\x23\x2e\x82\x74\x6d\xa9\xed\x48\x54\xbe\xfe\xff\xf2\xaf\x82\x4e\x5a\x29\x5b\xd1\x84\x0a\x36\x6d\x69\x3f\x57\xc6\xd7\xe3\x9a\xc2\x92\xc2\x96\xc2\x2d\x85\x0d\x85\x09\x25\xf7\xdc\xa7\xe8\x9e\x4b\x5a\xf5\x67\xc6\x52\xf1\x69\x1c\x2e\x95\xa2\xe0\x97\x09\x5d\x32\x0b\x8f\x77\xbb\x6a\x83\x2b\xda\x03\x31\xb8\x57\x58\x79\xeb\x50\x91\x9b\x9f\x6b\x46\x90\xdb\x09\x38\x18\xba\xc6\xa1\x74\xa9\x48\x94\x93\x52\x66\x0b\x39\x83\x03\x1a\x45\x13\x1a\xbc\xf3\x62\x1d\x60\x3a\x83\x98\x6d\x84\x0e\xb3\x39\x58\xd2\xd1\x92\x2a\x0b\x37\x12\x7a\x6b\x4a\x42\x58\xca\x7f\x5b\xba\xdb\xa1\x5b\x4a\x6a\xda\x10\xb7\x14\xc3\x96\x12\x17\x26\x14\xdd\x2a\x2b\xff\xbc\xd9\xed\x99\x3c\x1c\x56\x45\x5b\x13\x81\x30\xdc\x0b\x64\x24\x57\xf7\x94\x58\x6d\x0b\x1e\x28\x91\xf8\xbf\xa3\xc4\xef\x42\x77\x0c\xaf\x28\xb1\x3e\xb6\xe0\x1d\x25\xbe\xb5\xb5\xc0\x7a\x6f\x81\x45\x2d\xb0\x66\x16\x58\x2b\x0b\xac\xd8\x02\xeb\xed\x66\xd2\xb3\xc0\x5a\x5a\x60\x59\x60\xbd\xb3\xc0\xba\xb5\xc0\x7a\x6d\x81\xf5\xb3\x05\xd6\x8f\x16\x58\xaf\x2c\xb0\xde\x58\x60\xfd\x6e\x8d\xd5\x14\x78\x10\xca\xcf\xa0\x9e\x2d\x3f\x2a\x07\x28\x27\xbd\x5d\x15\x32\xcc\xb8\xd1\x40\xce\x50\x19\x46\x36\x49\xcb\xc5\x20\x94\x8d\xe4\x92\xeb\xf8\xb3\x28\x86\x3b\xa1\x1d\x1b\x60\x60\xc4\xad\x86\xd3\x74\x59\xcb\xed\xd8\x85\x02\x45\x5c\xa8\x4f\xb8\x8e\xcc\x5b\xc8\x9f\x5b\x9d\xcb\x8a\x20\xf3\x12\xba\xcd\x0a\x10\xe4\x0c\x09\x1b\x31\xdb\xf5\xe4\x46\x78\xd1\xc5\xb2\xa2\x77\xd4\xbf\xb6\xd9\x45\x57\x5b\x03\xe8\x40\xb8\x27\xb7\x3e\xa1\x95\x30\x4c\x53\x9b\x48\x94\xf2\x4e\xd7\x51\x8d\xbe\x10\x5e\x35\x8b\x1e\xb8\x43\xb2\x52\xa8\x13\x7f\x4a\x75\x68\xa3\x58\x07\xc8\x77\xc7\xbb\x9d\xf5\x91\xa5\xa2\xe4\x77\xe4\xf3\xd0\x82\x8c\x08\xbf\x2b\x9f\x2d\x08\x89\xf0\x2f\xf5\x23\x27\xc2\xef\x8d\x81\x12\x5b\xf8\x7d\xad\xf5\x7b\x35\x86\x88\x08\xff\x7a\x0c\x29\x11\xfe\xcd\x18\x66\xc4\x85\x05\xb1\x2c\x98\x93\x17\xee\x20\x7d\x08\x45\xb0\x40\x51\xa3\x81\x22\x62\x47\x75\xd7\x6d\x80\xf8\x6e\x67\x39\x16\x21\x84\x35\x1a\x16\x51\x71\x6b\x55\x98\x5c\xc2\x88\xe5\xc8\x16\x59\xc4\x82\xa0\xd1\x40\xb4\x55\x75\xce\x8d\xa8\xc4\xe2\xa5\x44\x62\x8a\x1f\x03\x9a\x32\x2b\xb6\xbc\x40\xee\x21\x29\xb1\xe6\xd6\x40\xef\x90\xea\xc3\x27\x96\x37\x23\xae\xe3\xc8\x46\x7d\x62\xc9\xef\xb3\xda\xf7\xd5\xd1\xf7\xa4\xf6\x7d\x62\x79\xea\x97\x9b\xdf\x8d\xf9\xfd\xcd\xf2\xac\xff\x91\x2d\x0e\x15\xdb\x6a\x39\x96\x9d\x1e\xc6\xc1\x52\x19\x03\x53\x60\x6a\x79\x73\xd9\xc2\x88\x38\x55\xf8\xa9\xac\x5f\x59\xc9\x59\x89\xb5\x37\x20\x47\x21\xb1\x2c\xcf\xfa\xb8\x84\xff\x8a\x62\xb0\x12\xeb\x05\x49\x77\xbb\x68\xb7\x43\xaa\x9f\x79\xdc\x60\x89\x5e\x6b\x6e\x11\x92\x8e\xa2\x72\x46\xba\x95\xf9\xe8\x42\x84\xb1\x87\x54\x6c\xe0\x74\xb7\xb3\x66\xf2\x17\xab\x51\xa9\xdc\xa0\x94\xf9\x1d\x99\x5f\xa2\x97\x7c\x4f\x95\x21\x7e\x8a\x77\xbb\x57\x42\xdf\x46\x10\xde\x68\x04\x47\x1a\x20\xb1\xda\xb5\xe6\x8d\x46\xfc\x89\x6b\x36\x2a\xcb\x32\x2c\x91\x33\x8c\x77\x3b\xb5\xbb\x37\x1a\xce\xd0\xbd\x88\x47\x28\x26\xad\x18\xac\x96\x85\x3d\xe5\xba\xd6\x19\xce\xf4\xf4\x9c\x92\x83\x95\x8d\x62\x88\xf0\x20\x26\x53\xad\x23\x21\x67\xed\x42\xbe\x6c\x97\x13\x1e\x69\xdd\xc7\xb8\x49\x66\x83\x98\xa4\x3a\xab\xa2\xe0\x72\x23\xcf\x63\x7a\xe5\xde\xee\x96\xc4\x19\xae\x47\xb1\x57\xf7\x75\xb4\xc6\xb0\x55\x1f\x2c\xcb\xbb\xa7\x76\xf5\xe3\x5a\x72\x51\x2f\x64\x6f\x1b\x0d\xb4\x24\x3f\x53\xb4\x34\xb4\xf7\x96\x84\x86\x52\xdb\xcb\xfc\x61\x9b\x3f\xa0\xd5\xc8\xf1\x0a\x9f\xe4\xb0\x21\x74\x78\x5b\x89\xb5\x7a\x4b\x68\xeb\xb6\x88\xb6\xca\xb0\x67\x59\x85\x7b\xaa\xbc\x9e\x8d\xbd\xc4\x18\x84\x4d\x42\x88\xc9\xd2\xde\x02\xb2\x5e\xea\xb0\xce\xc2\x8e\xed\x8d\x67\x0d\xf5\xdb\xc6\x16\x76\xec\x59\xff\x36\x6f\xb5\x8e\xdd\x0e\x87\xc4\xc5\xb6\x2a\x50\xf9\x70\x8b\x3d\x21\x9b\x18\x7b\x1b\x3b\xc6\xd8\x5e\x18\xcf\xe7\x9f\x52\x72\x81\x46\x1e\xf2\xff\xfd\x38\xc6\x23\xe4\xbf\x1c\x92\x7f\x8f\xb1\x7c\xb2\xdf\xb6\x3e\x52\x49\x1f\xff\x8f\xfc\x71\xf0\x08\xbd\x9d\xda\x78\x84\x40\x3e\xb5\x5b\x23\xfd\xe6\xd3\xd6\xfb\x4f\xc6\x78\x74\x11\xc2\xf7\xe5\x3d\xc6\xe4\xa4\xdf\xc9\x32\x5c\x65\x07\xef\x21\x38\x95\x47\x7f\x6f\xcf\x12\xbe\xfc\xdc\x70\x84\x8a\xb2\xf1\x0f\x00\xbc\xc6\x7b\xd8\x7c\x20\x8f\xdb\xc7\x7b\xf8\xed\xc3\x99\xda\x82\xff\xb2\x5a\xe5\x0b\x7a\x0f\xf3\xd3\x1e\x8b\x65\xa1\x1f\x13\x16\x84\xa9\x66\x85\xf6\xc0\xce\x67\x7c\xb5\x59\xf1\x98\xc5\x22\xa4\x91\xca\x3a\x3b\x9f\xf5\xcb\x70\xc3\xa6\x2a\x53\x72\x32\xd3\x99\x2d\xac\x28\x79\x66\x69\xcb\x8c\x4d\xe4\xda\x72\x6b\xeb\x61\x55\x44\xb9\xd1\xfc\x99\x92\xa9\x90\x8b\xf1\x8e\xea\xb5\xf8\x27\x25\x77\x85\xe5\xe8\xcf\xf4\xc3\x81\x84\xfc\xdc\x22\xfb\x8e\xfa\xce\x78\x20\x86\x4e\xa3\x91\x0d\x9d\x01\x66\xc7\x81\xc6\x45\x8b\x64\x20\xec\x0c\x63\x9d\x3f\x21\x28\xb1\x5d\xfc\xc9\x9f\xb4\x0c\x3a\xd4\x4e\xd8\x9a\xc9\xe3\xb3\x59\x2c\x0f\x54\x07\xc8\x99\x33\xc5\xb3\xbf\xab\x5e\x8a\x3e\xa6\x9e\x03\xc2\x73\x8e\xdc\xa2\x7e\xaa\xf0\xa2\x1c\xfd\xc0\x7b\x8a\xe1\x53\x81\xde\xd3\x5c\x97\x42\xff\xe4\x2e\x65\xb4\xab\x06\x61\x93\xf7\xb4\x2d\xb4\x6f\x86\x54\x3d\xef\x21\x61\x35\x87\xd5\xc6\x30\x2f\xd5\x37\xa6\x82\x38\xc6\x55\xea\x0f\x33\xef\x8c\xb2\x4c\x6a\xd6\xd9\x7b\xaa\x38\xf5\x77\x62\xa0\x3b\x22\x0f\xb5\x8c\x1e\x9a\x01\xc5\x8d\xc6\xe7\xf4\xc8\xf1\x65\x5b\xf6\x14\x8f\x3e\xa7\xbe\x7e\x1c\xab\xcc\xde\xf7\xc2\x38\x65\x94\xf0\x3f\xa7\xe4\xf1\x4b\x46\x45\x96\x1c\x4e\x42\x99\x4d\xd6\xb8\x64\x22\xd9\x2a\x0b\x66\x93\xef\x73\x1e\x19\x33\xf5\x73\xee\x29\x49\xdc\x9e\xe9\xbc\x29\x24\x44\x79\xf6\x67\x07\x5e\x53\xbf\x17\xca\xc9\x49\xad\x82\x3d\x7c\x41\xc9\xe3\xdd\x6a\xc1\x8e\x1a\x23\xda\xa9\x4a\x46\xca\x21\x65\x18\x1f\x3a\x03\x8f\xe5\x49\x90\xf3\x64\x1a\xc6\x54\xb0\x14\x44\x7b\x25\x73\x29\x25\x6f\x65\xd3\x02\xb1\xdf\x19\xe3\x3d\xdc\x66\x91\x08\x4f\x41\xa8\x36\xbe\x0a\xe9\x4c\xfb\x63\xed\xde\xe5\x6c\x3d\xdf\x85\x31\xd3\x94\xe1\xa0\x9e\x9f\x05\x3a\x68\xaa\x72\x62\xac\xda\x75\xb6\xd0\x5f\x6c\xdc\xcf\x1a\xb9\x06\xf4\x8f\x3c\xda\xce\x8f\x06\xeb\xcf\xa3\x76\x94\xd8\x39\x95\xff\x2f\x36\xe1\xcf\xbc\x09\x78\x0f\xaf\xcd\x18\x3f\x6b\xe2\x98\x09\x11\x7e\x70\xea\xa8\x19\x93\xaf\x0a\x9a\x30\x7a\xea\x10\xf8\x07\x25\x0e\xd4\x56\x0e\x8a\xe1\x2b\x8a\xe1\x0f\x6a\x5c\xb6\x52\xf8\x2e\x5f\x62\xf0\x15\x25\x8f\xe9\xc1\xf4\xc3\x8f\x7f\x50\x9b\x5c\x36\x3f\xe3\x7b\x50\x63\xed\x05\xea\xa2\xe5\x4e\xd0\x24\x7f\x7e\x15\x4f\xbd\x00\x56\x1a\x6f\xfa\x43\xa5\xfc\x77\xb4\xad\xc8\x01\xc2\xf0\x15\x6d\x17\x65\xc9\x7b\xb1\xcf\xcb\x48\x00\x47\x2a\xc4\x9d\xe6\x77\x74\x20\x2b\x77\x86\xf1\x48\x36\xc0\x8e\xbd\xb8\x0e\xc2\xbc\xbc\x8a\xa7\xf2\x51\x35\x8f\x04\x25\x56\x26\x92\xd6\xa7\xe7\x6c\xd0\x24\xe6\x8d\xa7\xa5\x0d\xf1\x53\x12\xc3\x82\xc4\x63\x0c\x33\xa5\xb6\x31\x23\x02\x83\x18\xce\x1b\x0d\x34\x27\xa2\x66\x6e\x56\x39\x89\x7e\x2e\x90\x2f\x9a\xff\xe4\xc0\x9a\xff\xe4\xda\x3f\x8f\xb1\x3b\xcc\xc8\x1f\x02\x2d\x21\xc1\x10\x12\x3f\x93\x2b\xa3\x95\xc9\x45\xe2\x8c\x81\xcb\x4f\x21\x64\x78\xf0\xa5\x40\x1c\x03\x27\x3f\xca\x5f\xad\xfa\x45\x44\x6b\x05\x11\x09\x86\xce\xc8\xf5\x5a\xae\x72\xd5\xee\x8c\x9b\x31\x6d\x46\xb9\xd5\x1e\x9d\xa4\x28\xc0\x43\xf7\x5a\x85\x0f\x5a\xff\x1b\x4d\x87\x51\x73\xd5\x68\x44\x4d\x31\x9c\x62\x5d\xfd\x56\x99\xb1\x34\x63\x3a\xd8\x9a\x3e\x6c\x71\x61\xfa\x32\x25\x68\x6a\x77\xfb\x0e\xfe\xa4\xdb\x77\x5a\xee\xb5\x03\xe7\x80\xb4\x72\x28\xb3\xe1\x56\x21\x25\x87\x32\x53\xda\x2c\x33\xc2\x30\x30\x53\x01\xc3\x83\xf5\x68\x35\x14\x23\x8a\xe4\x6a\x1a\xca\x9f\x85\xe4\x9a\x17\x44\x60\x8f\x22\x01\x8b\x4a\x62\x2a\x13\x17\x43\x92\x8e\x50\xaa\x10\x9e\x6a\x84\x2f\x4c\x01\xec\x89\xe1\xea\xf9\xa0\x0c\x6b\xab\xc6\x66\xb0\x24\x09\xac\x88\xa8\x9b\x2d\x4d\xcc\xfc\x10\x55\xd1\x35\x7e\xdc\xf8\xce\x98\xa4\xb0\xf1\xdd\x31\x59\x40\x9e\x29\x86\xe5\x81\x35\x41\x56\x88\x6a\x97\x85\xe8\xae\xb5\x1a\x6c\x6d\x52\x09\x70\x21\xc7\x64\x94\xd8\x28\x19\x3a\xa3\x6e\xdf\xf1\x5a\x12\xc9\x5e\xa2\x1b\x37\x25\x31\xac\x09\x1b\xe4\x33\x55\x01\x04\x13\x5a\xa2\x66\x4c\x54\x9d\xe3\xa8\x66\x7f\x87\x1f\x33\x34\x95\x4c\x78\x39\xf3\x91\x51\x09\x92\x2d\xd8\xe2\xe1\x6b\xae\x30\xd2\x42\x0b\xe2\x5e\x3b\x18\x43\xbd\x83\x87\xdd\xa2\x35\x0e\x49\xb4\x48\x8c\x5f\x3a\x23\x21\x67\x87\x27\x6a\x46\x79\x55\x6e\x2b\x37\x64\xac\xda\xe4\xd5\xce\xe0\xbe\x33\x7e\xa9\x0e\xcb\x23\xfd\x18\x37\x1a\xb1\x4e\xf0\xe2\x97\x42\xb9\x33\x96\x2f\x2f\xb5\xc8\xdd\x04\x29\x80\x15\x4c\xa1\x62\x0b\x41\x1e\x35\xc1\x89\x2b\x04\x87\x15\x04\x27\x39\x4b\x70\xf2\x41\xcc\x60\x52\xa1\x15\xa1\x79\x93\xc4\x82\xcb\x43\x0c\xa8\x81\x28\x41\xc8\xbd\xf5\x34\x3d\x2a\x33\x6a\x7c\x97\xb3\xa4\x5a\x01\xab\x54\x90\x80\x33\xfc\x8e\x8e\x2a\x03\x01\x33\xd2\x42\x73\x72\xe3\x60\xec\x6d\x87\xaf\xf9\x48\x3e\x7b\xad\xd7\xdc\x2c\xac\xd6\x8d\x73\x30\x56\xfb\xfd\xa9\x53\xe3\x9c\x2c\x48\x0b\xa5\x64\x46\xdc\x0b\x07\x2b\xc7\x73\x47\x04\x7e\x92\xab\xac\xdd\x56\xfc\x6c\x28\x6a\xa7\xbc\x24\x05\xa5\xeb\x93\xdc\xb9\xfb\xad\x0e\x3c\xe4\x67\x92\x0d\xd5\x0e\xd7\x18\xb9\x95\xbb\x4c\xa4\x23\xaf\x66\x78\xb7\x93\x8f\xae\x7c\x1c\x21\x8a\x14\x31\x53\x06\x63\x43\xf3\x22\x89\x9c\x5c\x8e\xf2\x57\x99\xa0\x61\xa0\xa6\xf0\xe9\x6c\xce\x58\x59\xae\x61\xec\xe5\x21\x5c\x24\x0d\x29\xdc\x1c\x03\x83\x15\x69\xb9\x17\x0e\x88\xe2\xfc\xa8\xe2\xa7\x4a\x96\x39\xf4\x85\x6c\x2a\x49\x06\x19\x61\xa0\xdb\x1b\xca\xf6\x22\x4e\xa8\x6a\x02\x68\xd8\x43\x79\x4a\x5c\x11\x0e\xda\x4c\x0e\x16\x44\x35\x20\x17\x29\xdf\x92\x8d\xb6\x52\xd2\x51\x6e\xd2\xdd\x4e\x3f\xcc\x46\xbe\xef\x5c\x38\xe0\x5c\x38\x63\x28\x9e\xc6\x9e\xef\xa7\x30\x1b\x83\xbf\x80\xf9\x78\xbc\xdf\x23\x9c\x23\x3f\x60\xb1\x48\x78\x58\x77\x00\xf9\x25\x25\x3f\x52\xf2\x03\x25\x3f\x51\xf2\x3b\x25\x5f\x53\xf2\x0b\x25\x6f\x28\xf9\x95\x92\xdf\x28\xf9\xf8\xd4\xe6\xfc\x19\xcd\x07\xef\x57\x0a\x8c\xfc\x46\x21\x21\x1f\x53\xc8\x88\x68\x0a\x9b\x35\x99\x9d\x34\x8b\x3b\xa5\x6f\xb9\x0a\x99\x27\xc8\xd7\x32\xeb\x2f\x32\xeb\x1b\x0a\xaf\xf9\xf0\x47\xaa\x92\x7f\x90\xc9\x3f\xc9\xe4\xdf\x29\xae\x83\x00\x59\x16\x8f\x8a\x9e\x79\xbe\x26\x22\x82\xc6\x1d\xc4\x40\xe0\x66\x4c\xe1\x07\x94\x5c\x94\x96\x83\x19\x96\x89\x63\xcd\x37\x7c\x49\xe1\x47\x0a\x3f\x50\xf8\x89\xc2\xef\x14\xbe\xa6\xf0\x0b\x85\x37\x14\x7e\xa5\xf0\x1b\x85\x8f\x29\x7c\x56\xf2\x12\x81\x61\x1c\x7e\x12\x95\x85\xfc\xb5\x28\x56\xf2\x2f\xe2\xec\x52\xfe\xac\xba\xdb\xbf\x39\xcb\x30\xd4\xb2\x7d\x2d\xf6\x7b\xf8\x17\x25\x9f\x09\xf4\xab\x80\x7f\x0a\x10\x0c\xfc\xd6\x67\x1c\x5a\x9f\xf1\x8b\xce\x18\xc3\x37\x94\xb8\xec\x26\x67\x12\x82\x28\x5c\x1d\x9a\x92\x18\x16\x04\xaa\xfe\x9f\x1e\xf5\x10\x9d\x3a\x06\xab\xb8\x85\xed\x35\x8d\xc2\x29\x79\xe1\x4a\x4c\x87\x28\xc6\x50\x24\x39\x90\xed\x41\x47\x80\x2c\x8b\xd3\x27\x5d\x2e\x24\x0c\xc5\xc4\x96\xe7\x42\x1d\x0c\x59\x3f\xca\x59\x2d\x1f\xdd\xb1\x36\x5f\xd2\x8f\x72\xa5\xd5\x9b\x00\x99\xbe\x15\x06\x8e\x3d\xdf\x8f\x41\x8c\xc1\x67\x90\xc8\x19\x5b\x5e\x0a\xeb\x06\x21\x5f\xbb\xa9\x28\x2c\xcc\x24\xf7\x8e\x72\xdc\xf0\x38\x0c\x5e\xfd\x99\xd1\xe8\xd3\x1a\x83\x59\x86\x18\x61\x88\x32\xbc\xc7\xed\x84\x3e\x10\xca\xf2\xd9\x4c\xa3\x09\x4b\xd2\xd3\x06\x19\xc7\x70\x11\x6e\x27\x5c\x50\xc1\x90\x7f\xd3\x07\x67\x8c\x8d\x2d\x0e\xf2\x5b\xed\x3e\x74\xaf\xdb\x57\xda\xa5\x1e\x8d\x22\x16\xa5\xc8\xef\xdc\xb4\x7b\x70\xd9\x6b\xf7\xc6\xd8\x48\xb9\x5c\xe7\xca\xd1\x62\xdc\xb2\xf6\x5f\x52\x7a\xde\xfb\x80\xf6\x78\xa6\x4e\x2d\x5c\x19\xe2\x17\x97\x40\x9a\x1a\x30\x14\x02\xc7\x20\x76\x3b\x94\x98\x47\xbc\xdb\x65\xe6\x71\x5f\xf7\x6b\x5f\xab\x56\x85\x06\xff\x50\x37\xdd\xde\x65\xbd\x9f\x1d\xe8\x5d\xab\xfe\x54\xba\xd9\xeb\x41\xbf\x27\x89\xe8\x33\xc0\x5d\xd5\xc1\x75\xc1\xbd\x69\xdf\xd4\xc1\x5d\x83\x7b\x3d\xc6\x10\xe4\xbb\x6a\xfd\xba\x57\x10\x3f\x06\x56\x99\x1f\xf1\x51\x00\xf7\x42\x22\x1e\x1a\xac\x63\x60\x24\x2c\xcd\xc6\x8c\xe3\x6d\xc9\x1b\x68\xb3\x62\x01\x19\xd1\x1e\x18\xb4\x61\x71\x1e\x72\x0f\x65\x43\xd2\x76\x3b\x8d\x46\xbb\xd3\xbd\x94\x14\x2c\x19\x92\x56\xfb\xb2\xd3\x6b\x34\x5a\xed\x8e\x7b\x39\x4c\x46\xdc\x53\x79\xfa\xfd\x83\x4c\x1d\xf7\x52\x66\x72\xdd\xde\x30\x19\x51\x2f\xc4\x79\x1c\xf9\x58\x99\xb0\x1d\x09\x07\x2a\x4d\x36\x04\x56\x36\x9a\x57\xde\x12\x42\xcb\x37\xd3\xc0\x63\x0c\x65\xf2\x08\x9e\x73\x6d\x19\x06\x56\x7d\x49\x2a\x2f\x7b\x38\x3e\x40\x95\x87\x77\x60\xe5\x63\x52\x39\xd2\x97\x64\xb1\x56\xac\xc2\x04\x02\xab\xbd\x25\x35\x06\xb1\xa0\xa4\x47\xa5\x35\xbf\xc2\x2a\xcf\x49\xf9\xbc\x3f\x4b\x76\xc5\x01\x63\xa4\xfa\x5b\x4b\x48\x9e\xc9\x3a\x89\x3a\xe7\xc4\xea\xaf\x49\xed\x75\xbf\x97\x63\xb8\xca\x45\x83\xcf\xf4\x4e\x53\x16\x40\x02\x03\xaf\xbf\xd2\xfa\x6b\xac\x58\x8d\x22\x05\xff\x45\xcb\xc4\x7c\xe2\xab\x7a\xf4\x63\xbb\xdb\x6b\xaa\x7a\x8a\x2f\x15\x43\x4a\x54\x5b\x1d\x8a\xcf\x31\x2b\xe7\xbc\xbd\xe5\x49\x2f\xb3\xb9\x43\xc6\x2a\x38\x6d\x84\x52\x59\x8c\x29\xd1\xb6\x84\x33\xa2\xac\x09\x0b\xb1\x60\x6d\x8d\x0a\x5c\xd9\xf0\x90\xef\xa7\xad\xf6\x65\xaf\xd7\x8c\x60\xd6\x6a\x77\xba\xd7\xcd\x68\x0c\x7e\x6a\xe7\x69\xb6\x49\x93\x84\x56\xaf\x91\x00\xeb\xc9\x0e\x09\xe1\x15\xb0\x12\x4e\xd7\xb9\x32\x65\x1c\xb7\x19\x8d\x4f\x54\xd4\xe9\x35\x23\xfb\x35\x97\x79\xdc\x8e\x7a\x94\xb5\xa9\x55\xdd\x8c\x5a\xfa\x43\xa7\xab\x9f\x4f\xd5\x99\x11\x7a\x50\x67\xc7\xc9\xdb\x29\x01\x9e\xa8\x53\x81\xce\xeb\xec\xf7\x2b\x95\xba\x6e\xef\x59\x95\xc6\xc5\x24\x31\xdb\x8c\x42\xfc\x6b\x0a\xdf\x52\xf8\x27\x85\x38\x00\x11\x00\x0b\x20\x29\x28\xeb\x5f\x15\x90\x7c\x2b\xf9\xc0\x24\xa8\xb0\x30\x01\x3b\xb7\x9e\x6a\xd9\xcc\x8b\x3a\x70\x04\xb9\xf8\x03\x5e\xd3\xca\x99\xf4\x5b\x7a\xd1\xc1\xfb\x3d\x64\x45\xeb\x22\xf6\x9c\xe6\x05\xd5\xfa\x83\x3d\x84\x45\xf9\x45\xb5\xfc\xbc\x3c\x8f\xad\xd8\xd9\x0e\x86\xd5\x46\x4f\xcf\xf6\x2d\xcc\xfb\xb0\x60\x50\x2b\x32\x2f\xde\x65\x57\x57\xac\x94\xf0\xa8\xd9\x30\xe3\xc9\x29\xd7\xc2\x47\x0c\x5b\x19\xd7\x89\x3d\x7c\xb4\x95\x6b\xa1\x38\x6c\x24\x5a\xbb\x83\xe5\x4e\xa6\x2b\x81\xfc\xf7\xb0\x65\x55\xc1\xf9\xd1\xde\x20\x72\xe9\xb6\xaa\xae\xd8\x0b\xc4\xe9\xbd\xa0\x92\xf3\x43\xf4\xbf\x92\xf5\x83\xd4\xfe\x20\xef\x87\xe8\x7b\xad\xbd\xcf\xa2\xe3\xc7\x25\x0c\xcd\xce\xb9\xae\x15\x15\x8b\xf3\x0c\x57\x45\xb5\xe0\x84\x03\x6b\xaa\x1c\x09\x4b\xc4\xfd\x44\xa7\x61\x96\x22\x9b\x9e\x71\x36\x0f\xbc\xd1\xe0\x9a\xcf\xdd\xed\x10\x27\x19\x0a\x31\x3e\x3a\x44\x71\x8c\x21\x6c\x27\x2c\xcd\xa2\x9a\x00\xa5\xe2\xe1\x8f\x6b\x46\x2f\x2e\x42\xf6\x65\xc6\x6f\xfc\x65\xbb\x57\xf1\xdc\x7b\x46\xae\xfa\xfa\xd4\xd1\x2d\x43\x49\x80\x31\xbc\xa6\xb9\x39\xf9\xd1\x79\xd0\x94\xfe\x4b\x07\xc2\x0c\x85\x12\xea\xc7\x74\xe4\xff\x4a\x2f\x3e\x96\xe7\xab\x8b\x8f\xe9\xd8\x7b\x43\x47\xfe\xd7\xf4\xe2\x8d\x3c\x79\x5d\xbc\xa1\x63\xef\x77\x3a\xf2\x7f\xa0\x17\xbf\xcb\x33\xd9\xc5\xef\x74\xec\x15\x87\x3b\xd9\x9e\x43\x59\x68\x25\x02\x5e\x40\x58\x40\x5a\xe8\x9f\x94\xc4\x81\x96\x2a\x1c\xb7\x21\x93\x6d\xf0\x7d\x45\xf0\xc6\xe0\x2b\x92\x37\x1e\xeb\xfd\x9a\xff\x71\x18\x3b\xea\x09\x15\x53\x94\x19\xa5\xd2\x9c\x5b\xdb\xed\x6e\x19\x8a\xb1\x37\x15\x20\x90\x56\x32\x8d\x55\xc8\x95\xe7\xc6\xcb\x40\xa1\x31\xee\x47\x89\x82\xcb\x1e\x3e\x4a\x99\x27\x7f\x94\x37\x4d\x38\xe1\xf4\xfb\x68\xbe\x51\xac\x2b\x4f\x54\x8f\xca\x0f\xcf\xe3\x0b\x28\x39\x31\xa7\xc5\x48\x78\xe8\x60\x56\x0b\x0c\xb6\x66\x43\x68\x1d\x75\xe8\xf0\xe8\x82\x30\xce\x91\x60\xbc\xf4\x16\xeb\xac\xc4\xf7\x86\x1d\x27\xde\x66\x82\x0a\x9e\x90\x09\x2b\x4e\x71\xec\xcf\x2c\x4c\x58\x20\x68\x3c\xcf\x22\x7a\xca\x85\xfb\x86\xa1\x87\xe2\x18\xf7\xc0\x72\xd6\xff\xa1\x80\xaf\x4e\x1a\x87\x43\x5c\x15\x89\x97\xb3\x89\xc4\x4a\xfd\xae\xf9\x4f\x0e\x92\x0d\x69\xfe\x53\x9e\x98\x64\x02\x89\xa9\x4e\x51\x0f\x85\xba\x21\x79\xc5\xd4\xa1\xe1\x93\x6e\xdf\x91\x85\x62\x5d\x08\xf2\x8b\xd2\x61\x67\x14\xfb\x1d\x99\xe4\x39\x18\xc4\xd1\xb1\xa4\x56\x75\x7e\x1c\x78\x56\x0b\xe4\xdf\xdd\x89\xce\x06\x61\x12\x44\xec\xac\x8f\x51\x7d\x3b\x71\x62\xc4\x93\x51\x72\x9a\x6a\x79\x09\x08\xd9\x4d\xe5\xa3\x49\x36\xab\x95\x77\xd2\xc9\x0f\x30\x35\x4d\x44\xad\x7d\x0d\x5a\x2e\x05\x27\xcf\x6b\x59\xee\xc8\x58\xcb\x8f\x31\xc4\x79\x07\x63\xd3\xc1\xfd\x1e\x83\x71\xa2\x66\x6e\xb4\x2c\xa8\x5c\x5c\x79\x7e\x36\xde\x97\x07\x59\xe3\xac\x32\x23\xfd\xbf\xe7\x24\x32\xd1\x4e\x22\xd5\xfa\xa1\xf1\xbc\x8a\xbe\xe4\x89\x62\x8c\xfc\xcc\x10\x12\xc4\x4e\xb0\x44\x47\xa6\xc6\x2a\xc6\x9e\x38\x73\x12\xf8\x20\x2c\x75\x19\x83\x32\x03\x50\xc1\xca\x8a\x36\xa1\x9b\x8a\x94\x60\x1a\x6a\x3b\xe3\x53\xba\x70\xf2\x20\x2b\x4a\xa7\x5a\xb2\x65\x24\x1f\xb2\x90\x98\x49\x05\xc6\xe9\x65\x1a\xca\x76\x81\x71\x61\x19\xf0\x54\xbe\x05\xe5\xb7\xac\xf0\x29\x24\xbf\x65\x92\x51\x2f\xbe\x85\x18\x66\xe5\xb7\x52\x65\xbf\x22\x8c\x2b\x05\x70\x88\x91\x59\x93\xe3\x26\xb3\x11\x23\x51\x33\x6d\x05\xcd\x59\x93\xe2\x26\xc3\x10\x34\x53\x3b\x52\x6f\x45\xff\xe6\x09\x15\x61\x90\x3d\x31\x91\x0d\x9b\xa4\xe7\xc8\xc1\x05\x6c\x7d\xae\xc8\x4d\xf4\x9c\x9f\x5c\xed\x58\xb0\x74\x7c\x14\x5e\xac\x71\x73\x0d\x19\xac\xb5\x23\xc1\x05\xce\x95\x60\x4f\x64\x8e\x2e\x96\xb8\xb9\x84\x00\x96\x3a\xf3\x1c\x3f\x95\x3b\xb9\x58\xe1\xe6\x0a\x18\xac\x9e\x72\xab\x5b\xf0\xbe\xf1\x27\x6b\x3c\x7c\xcd\xff\x3f\xe3\xd1\x30\x7d\x12\x36\xbd\x98\xe2\xe6\x14\x38\x4c\x9f\x09\x7b\x29\x61\x1b\xd0\x33\x8c\x0f\xf9\x08\x08\xa0\x88\xbe\x0c\x2b\xe2\x3a\x30\x25\x2b\x58\x93\x1b\x07\x96\xa4\xdb\x77\x60\x4b\x3a\x55\x4e\x43\x72\x6d\xa7\x24\x66\xe2\xac\xcf\x46\x33\x70\xe7\xc6\x2c\xde\x6b\xb7\x3e\x3c\x13\x12\xf6\x31\xe8\x27\x89\xc3\x02\x85\x05\xb6\xe6\xf2\x30\x94\x46\x61\xc0\x90\x8b\x61\x81\x32\x5c\xd1\x34\x29\xd2\xe7\x28\x3a\x95\x8e\xc7\xea\x54\xcf\x9e\xef\xac\x27\x6e\x2f\xe9\x1f\x3c\x31\xa7\x38\x81\xdb\xcb\x30\xae\xbc\x7a\x71\x2d\x41\xf5\xb1\x52\xe0\xb9\x3e\x6d\xd5\x59\x59\x7b\x6a\x55\xc7\x65\xf9\x18\x99\x54\xe5\xa3\x55\xa7\xba\x63\x08\x8d\x90\x3d\x84\x90\x64\x90\x11\x81\x21\x1a\x06\x2a\x29\x82\x88\x04\x10\x10\x75\xec\x2f\xe5\x0a\x5b\x8c\x3d\xdf\x0f\x41\x1e\xa6\x33\x30\x7c\x52\xa5\xd1\xcf\x25\xa9\x45\x1b\x59\xd9\x46\x5a\xb6\x91\x97\x6d\x4c\xd4\x75\xac\x20\x09\x24\xca\x26\x48\x60\xa0\x43\xae\x92\x28\x50\x22\x69\xd5\xc9\x36\x26\x40\x95\x68\x98\xeb\x36\xa6\x82\xad\xfe\xca\x18\xdd\x09\xb6\x2a\x46\xc8\xbc\xe4\xe3\xa3\x5e\xcb\xd1\xb9\x7b\x2e\x68\xb4\x36\x72\x8c\xa5\xee\x9e\x72\x25\xb5\x86\x65\x89\xc4\xe7\x83\x5a\x19\x50\xd3\x0a\xa8\x15\x4c\xc7\x7f\x43\xce\xb4\x25\xb6\x80\x94\xbc\x67\x88\x02\x87\x1b\x75\xa1\xf7\x39\x43\x09\x30\xd8\x62\x58\xc8\x0f\x11\x04\xea\xc3\x5c\x7e\x08\x21\x93\x1f\x62\xec\x6d\x0f\x66\x28\xf2\x7d\x75\xe7\xde\xba\x71\xb4\x30\x42\xbe\xdc\x38\x46\xfc\x50\x9d\xdb\x79\xc6\x6b\xf5\x51\x67\xbc\x56\x85\xc6\x55\x3a\xcf\xa8\xf8\x34\x09\x9e\x47\xe6\xcf\x51\x0b\x5f\xec\x76\x67\xb8\x17\x60\xbb\x5d\x76\xfa\x53\x8d\x83\xf8\x82\x41\x46\xfe\xa8\x58\x98\x1c\xef\xb0\x87\xf7\x00\x79\x0e\xf4\xb7\x6a\xd7\xe2\x3b\x9e\x25\xd5\x2a\xd8\x93\x2b\x8a\x81\x38\xc5\xb9\xb1\x91\xe4\xb5\x3c\x56\xb0\x30\xc6\xf7\xeb\xb3\x66\x46\x46\x04\xb0\xd3\x27\x00\x05\x55\x14\x4c\xc8\x89\x29\xf7\xc4\x12\xf3\x9c\x3d\xc4\xc5\x30\x57\x7c\xd2\x9d\xd6\x7b\xff\x4e\xb3\xd1\x55\x16\xfa\x90\x0b\x2e\x80\xe9\x2a\x4e\x9d\xae\x78\x70\xe2\x08\x4a\x03\x0c\x3c\xd0\x82\x2f\x1e\x00\x0d\x8e\xae\xf6\xaa\x22\xaf\xaf\xd8\x73\x85\x4a\x41\x40\xbe\x64\x67\xb7\x59\xc5\xf3\x74\x2e\x90\x6b\xc7\x72\xa8\x4f\x64\xeb\x68\xab\x01\x2a\x39\xa9\xf8\xa2\x83\xf7\x78\x50\x1c\xa4\xde\x87\xcb\x4c\x2c\x68\xf4\xd4\xed\xd5\x86\xa1\x20\xc8\x8f\x3d\x41\xa0\x25\xaa\x47\x6d\x32\x57\xe9\xaa\x26\xc9\xa5\x55\xe2\x62\x34\x1a\xe2\xa2\xe0\xe5\x04\xde\xc3\x54\x9c\x6e\x42\xa8\x67\xfa\xa9\x68\x20\x1b\x86\xa2\xa2\x11\x51\x50\xbf\x7b\xfb\x9c\xc7\x4a\xbb\xfb\x94\x7f\x15\xce\xd0\x8f\xc5\xa1\xed\x47\x76\x74\x69\xf7\x44\x9d\x9c\xa1\x1f\x8a\xa2\x3f\x30\xd5\xf1\xf4\xdc\x60\xb8\x17\xf1\x1e\x0a\x86\xb4\xec\xdf\x3c\xe6\x4b\x59\xd5\xe9\x3e\xa5\x45\x9f\xd2\x00\x7e\x62\xc7\xb7\x49\xe5\xd4\xf5\x63\xc8\x47\x52\xd0\x18\x95\x5e\xd5\x31\x6e\x7d\xc3\xc7\xe5\x75\xe4\x92\x25\x81\x3a\xdc\x1e\xd7\xf8\x3b\x43\x3f\x15\x3d\xfa\x49\xf7\x68\x56\xef\x51\xd9\xa1\xbc\x3b\x69\x58\xe9\x0e\x4f\xc4\x82\xcf\x13\xba\x5a\x9c\xeb\xd2\xac\xe8\xd2\x4c\xcf\x95\xc5\x79\x94\xa9\x59\xfb\xe4\xa4\x95\x5d\x8d\xab\x53\x36\x15\x2c\x61\x4f\xb7\x60\x51\xb4\x60\x11\xc0\xd7\x4f\x23\xb5\x72\x84\xf8\x09\xc5\x46\x49\x48\xce\x5f\x81\x31\xfc\x80\x2a\xd3\xf6\xe2\x77\x14\x4b\x3e\xad\xc0\xb3\x92\xaa\x2a\x46\xee\xf6\x49\x8c\x7f\x5d\x60\xfc\xeb\xfc\xf0\xbc\x54\x0e\x71\x79\x3b\x5d\xcf\xcb\xa7\xf6\x69\x06\xf4\xa3\x5f\x18\x9a\xe6\x8a\xb8\xf3\xa0\x50\x82\x97\xb9\x69\xe2\xfd\xc6\xc0\xd2\x8f\xad\x20\xe2\x29\x9b\x5a\xde\xc7\x0c\x24\x8b\xe2\x7d\xc6\xc0\x92\x0f\xad\x89\x8a\x35\x66\x79\xff\xca\x13\xe8\x4c\xb0\xc4\xf2\xbe\x61\x30\xa1\x69\x98\x7a\x2c\x01\x4b\x3d\xb5\xf8\x8a\xc5\x96\x97\x14\xef\x39\xcc\x2c\x81\x49\x16\x4f\x23\xe6\x85\x09\x04\x54\xed\x88\x91\xf7\x4f\x06\x56\xfe\x62\x8a\xbe\xae\x26\xe5\xa5\xbf\x95\x1d\x8f\xb9\xe0\x31\xf3\x66\xc9\x1e\x0f\xe6\xc1\x19\xb3\x70\xd1\x7e\xc7\xb6\x24\x06\xd1\xd6\x65\xc9\x85\x01\xf2\xf1\x45\x6e\x9f\x6c\x02\xbf\xac\x54\xe8\x88\xce\x45\x17\xdc\x8b\xae\x3c\x95\x4f\x03\xed\x58\xb1\xab\x12\x9d\x31\xac\x4d\x42\xdf\xe4\xea\x8f\x8d\x40\x7c\xd9\x5e\x64\x07\xb1\x7e\x2a\xc7\x36\x6d\x74\x12\x17\x26\xe4\xe6\x5e\xc9\x1f\x6b\x8d\x93\xd3\x47\x17\x79\x6e\x51\x8e\x71\xd7\xf2\x37\xc1\xb0\x2c\x75\xd8\xb7\x64\xd9\x72\xb5\x0e\xd2\x46\xfe\x9b\x10\xa5\x92\x38\x25\x84\xbc\x61\x8d\x46\x42\x08\xf9\x95\x61\x41\xe2\x32\xca\x60\xa8\xe2\x95\xf9\xe3\xc1\x72\x18\x0e\x6c\x3b\xc4\x26\x14\x95\x6f\x4f\x2b\x21\xa3\xe4\x71\x3b\x1c\x43\x88\xc1\x5e\x57\x93\x21\xc4\x26\x70\x53\x48\xdc\x02\x04\x12\x7e\x28\xd9\xe0\x97\xc2\x9f\x8c\x95\x85\x96\x49\x20\xc4\xa4\x34\x1a\x2a\xc5\x31\x59\x1c\xa5\x81\x34\x21\x61\x0e\xcb\x29\x60\x85\x2f\x08\x99\x34\x1a\x28\x20\x06\x46\xcb\x80\x50\xd1\x1b\x14\x8c\x96\x81\x91\xc7\xe9\x7c\x54\xc2\x05\xaf\xb2\xe0\x02\xa0\x18\x54\x14\x71\x2f\xdc\x9b\xc0\x82\x46\xf9\xea\xe4\xde\x6d\xe4\x13\x2d\xa1\x7f\xf7\x92\x87\xbc\xf5\x9d\xb1\x7e\x85\x85\x7e\x51\x00\x61\xa6\x9c\xab\xbb\x83\xad\x69\xb0\x1c\x52\x4e\x6e\xfd\x30\xcf\x30\x27\xfa\x4d\x95\xd5\x31\x90\x89\xf0\x17\xb5\x96\x07\x3a\xa5\xd2\xbb\x88\x08\x9f\xd7\xf2\xa4\x3a\xa5\x8a\x81\x26\xb5\x83\x66\x30\xcc\x83\x55\xe0\xc7\xb2\x5a\xd2\x72\x07\xb9\x91\xf1\xfe\xd6\x9f\x95\xc9\xfb\x79\xa5\x3d\x30\x23\x21\x2c\x08\x57\x76\xc5\x1b\x8d\xbf\x09\x06\x1d\x71\xd1\x19\x74\x54\xa7\x38\xbe\xf5\xb9\x01\x30\x6c\xb9\x8d\x46\x9e\xb3\x4c\xc6\x10\xda\xb6\x46\xec\x8a\x6c\x72\x35\xb7\xed\x90\xab\xe2\xe1\x0c\xbd\xa8\x64\x7e\xe9\x18\x6b\xf2\xc1\x8b\x45\x82\x36\xfe\xaa\xd5\x19\x83\xfc\x71\xc7\x50\xe6\x02\x81\x07\xb8\xd5\x5a\x0d\x36\xfe\xca\xb6\xc7\xa4\xfc\xa2\x98\xdc\xfb\x3c\xc4\x6b\x48\x56\x2d\x77\x10\x0e\x89\x33\x68\xb5\x42\x7c\x6f\x24\x71\xfe\xc6\x0f\xc7\xa5\xaf\xdf\x7b\x2d\x10\x20\x6f\x24\x6b\xfc\x6b\xc1\x15\x1f\x87\xbb\x44\x31\xf6\x90\xa8\xba\x7c\x7d\x4a\xd6\xcd\x88\xb2\x61\x60\x7b\x10\x55\xbf\xae\x4f\x15\x49\x74\x91\x64\xaf\xae\xa4\x72\x3a\x61\x38\xb1\x53\x20\xbe\xe3\x28\x86\x65\x50\x04\xed\x5b\x06\xe4\xa0\x54\xe5\x3e\x4c\xae\xe4\xe0\xe0\x9e\xa4\xe6\x0e\xff\x28\x72\x63\x1e\x7a\x92\xb5\x94\xef\x65\x27\x8f\xe4\x18\xab\xd3\xab\x89\xe7\x08\x99\x0e\x90\xd1\x4c\x72\x31\x5c\x33\x29\x2f\xb5\xdb\xbd\x66\xb6\x87\x65\x70\xfa\x96\xa5\x3c\x92\x28\xfd\xf9\x6a\xd5\x66\x9e\x99\xc8\xae\x7e\xd6\x72\xf5\x98\x1e\x62\x6d\xb7\x43\x31\x69\xb9\x17\xa8\xaf\x3d\xdd\x51\xa5\x70\x83\x71\xae\x83\xaf\x8f\xd5\x0a\x46\x32\x56\x76\xa1\xce\xb8\x49\xe5\x5a\xa1\xf2\x49\x1d\x36\x43\x5b\x0b\x11\x95\xea\x16\x6e\x32\xe0\x2a\xc1\x1d\x2b\xad\x2d\xdc\xcc\xe7\x84\x1f\x36\x63\xe0\xcd\x78\xac\x7b\x14\x85\xab\x0f\xc5\x22\x04\x4a\xa6\x89\xf2\xde\xac\xe3\xd5\x55\x7a\xd8\x9a\x26\xc6\x9d\xb9\x36\xb6\xf1\x23\xd9\x45\x13\xc7\xee\x51\x07\xab\x8f\x8d\x70\x06\x17\x32\x76\xa5\x52\xa9\xb2\xab\x10\x04\xc2\x47\xa5\xe3\xfd\x16\xc5\x2d\xa5\x77\xa6\x42\xfc\xb2\x97\xc9\x00\x73\x22\x7c\x36\x86\x79\x82\x38\xa4\x4a\x1f\x74\x9e\xa0\x50\x3d\xee\x76\x26\x2c\xde\x4a\xe9\x4d\xa9\xb4\x22\x54\x1e\xc7\xd8\x2b\x72\x36\x1a\xa7\x72\x86\x84\x0f\x68\xf1\x49\x89\x5f\x21\x25\x59\x71\x5b\x50\x4e\xe0\x29\x8b\x68\x16\xd3\xed\x09\x6d\x9f\x03\xc7\x18\x05\x4b\x34\xde\x63\x65\x76\x95\x2f\xc6\x75\x52\x75\xc5\xc1\xf0\xa3\xf0\x59\x3b\x61\xf3\x90\xc7\xed\x48\x2f\xfd\x71\xde\x90\xe2\x43\x62\x3e\xe0\x3d\x86\x13\x2e\x03\x04\x24\xb9\x01\x80\x0e\xfa\x4c\x32\xad\x65\x96\xc9\xe9\x7b\xda\xc7\x40\x2e\x32\xaf\xec\x20\x4a\x8d\x2a\x54\x27\xb9\x16\xd7\x55\xfd\x85\xed\xe3\x20\xea\x6c\x31\x94\x6e\x11\x77\xd6\x98\x98\xf9\x19\x08\x9f\x8e\xe5\x3f\xdb\x1d\xab\x3e\xb1\x12\xc5\x6b\x9e\xf0\x98\x87\x4f\xb0\x13\x7a\x62\xe6\x01\xb7\xcf\x63\x3d\x30\x3c\x44\x64\x78\x88\xb4\x1a\x9e\xdb\x65\x7d\xc9\x35\x04\x86\x6b\x88\x4e\x70\x0d\xa2\x12\x61\x39\xc5\x6a\xab\x48\x0d\xad\x97\x9b\x14\xf1\xed\xa0\xc2\x26\x84\x24\xf6\xf9\x18\x38\x06\x3b\xaa\x26\x03\xc7\x2a\xc2\xe9\x3a\x41\x02\x4e\x52\x0c\xbd\xbe\x06\xae\x72\xad\xa1\xe6\xe1\x64\x48\x9c\x91\x5a\x34\x6c\xa5\xbc\x7f\xaa\x87\x48\xd2\x6c\xf3\x98\xa7\x25\x18\x4c\x39\x15\x33\x6b\x24\xda\x5b\xaf\x35\x03\xe5\xe2\xa3\x15\xb7\x27\xcd\x10\x38\x61\x23\xd6\xde\x7a\x33\xc9\xe0\x98\x54\x8e\x3d\xb9\xda\x46\xa2\xbd\x91\xd9\x43\xf3\x81\x36\x13\xc8\x54\xf6\x8d\x37\x03\x5e\xa4\x66\xb9\x9d\x88\x9f\x40\x28\xb7\x6d\x3f\x03\x3e\x1e\x50\x3f\x3e\x3d\x73\x03\x88\x30\x54\xbe\x26\x47\x5f\xf7\x18\x28\xa1\x87\xbe\x64\x0a\x13\x17\xb9\xd4\xb5\x9c\x54\x3d\xe9\xa0\x56\xe7\xbc\x56\x1c\xce\xe0\x44\xcf\xe0\x4c\x56\xa2\xd4\x22\xb5\xd8\x3d\x1f\x7c\xfc\xc4\xa4\x0e\xfd\x78\xdc\x0a\x7d\x31\xde\x57\x1c\x19\x1d\x49\xe6\xcb\x02\x2f\xc4\x6e\x67\xca\x70\x5f\xb4\xdc\xf1\xb8\x22\x9f\x3f\x96\xe3\xc4\x0a\xb2\xec\xfb\x29\x7e\x9d\x95\xee\x59\x2a\xd1\xbf\x0b\x27\x3d\x86\x3c\xf9\xad\x19\xb4\x66\x63\x90\xbf\xf2\x27\xff\xdf\x9a\x69\x53\xa0\x17\x28\x19\x76\x70\x4e\x0e\x14\xcd\xac\x29\x9d\x02\xd5\xc4\x21\x50\xc4\x01\x22\x12\x6a\xbe\x2b\x94\x6f\x0b\x1d\x8f\x66\xae\xe3\xd1\xac\x4a\x95\x9e\x45\x2b\xc2\x30\x25\xf3\x96\x72\x9d\x53\x24\x4f\xf1\xcb\xd7\xdc\xc4\xa7\x27\xe9\x30\x18\xb5\x66\xde\x6c\x50\x69\xe9\x5a\xb5\x6d\x3d\x2e\xed\x80\x5e\xf3\xe1\x4a\x97\x58\x92\x68\x48\xeb\x25\x96\xba\x6b\x4b\x98\xe5\x91\xde\x35\x68\x14\xb5\x28\x6e\xa2\x79\x2b\xc5\x43\xd5\x96\x26\x4a\x5b\x01\x1e\xcd\xe4\xec\xdd\x92\x4a\x7b\x5a\xab\x41\xc5\x32\xe5\xe5\x6b\x3e\xca\x61\x3b\xc3\xe9\x68\xed\xb5\xd6\xb2\x35\x1e\xda\x0e\x9d\x46\x03\xad\xb5\xaf\x89\x53\x0d\xc6\xfb\xfd\x1e\x43\xa6\x22\x1a\x57\x97\x7e\xa6\x76\x4b\x44\x7d\x6e\x0e\x05\xd5\x8f\x32\x35\xb7\xd3\xf0\x79\x41\xf3\x69\x9d\x2f\x33\x9a\xd2\xff\x6f\xb0\x67\x27\x75\xd1\xe3\xa7\x75\x02\xb3\x46\xc3\x37\x76\x15\x9d\xb1\xa2\x6e\x5a\x19\x22\xc6\xa6\x67\xc5\xd0\x31\x62\xc7\xe6\x3e\x21\x31\x8f\x6a\x31\xdb\xb1\xb9\x5a\xe0\xe6\xd1\x1d\x0f\xb2\x43\x8e\x0f\xf9\x4a\x81\x5c\xdf\x15\x80\x1f\x9a\xff\xc9\xb8\x34\xa5\x10\xb2\x07\xf5\xf0\x07\x4f\x85\x79\xaf\xaa\xea\xc5\x8d\x86\x51\x43\x8f\xc7\xd8\xcb\x1a\x0d\xd9\x19\x09\x2e\x0a\xe3\x77\xe9\x09\xe6\x4e\xab\xe4\x3f\xb5\xe3\x18\x0f\x45\xe7\xb6\x9d\xbf\xb8\xe1\x84\x6a\x62\x99\x03\xab\x1f\x1e\x6e\x38\x95\xe3\x6a\x74\x78\x5c\xad\x30\x1b\x95\x4d\xa7\xd0\x45\x13\x07\x64\x5b\x85\x3c\xaa\xd3\xea\x01\x97\x84\x37\x19\xef\x76\xc8\x3c\x11\xee\x27\x63\x9f\x8d\xc9\x0b\x07\x8c\x97\xa4\x47\x2d\x08\xf7\x74\x34\x5c\x25\xbe\xf6\x24\x03\xb2\x57\x9e\x89\xa8\x44\xa6\x48\x42\xc5\x1f\xa4\x87\x93\x8b\xd5\xcf\xeb\x35\x19\x7d\xc9\x68\xa1\xb8\x12\x8f\x1d\xb2\x0a\x82\x02\x89\x20\x8d\x69\x6e\x30\x6d\x42\x65\xc7\x07\x71\xb2\x51\xe6\x53\x89\xbc\xb0\x82\x25\xb9\x3e\xe9\x58\x9e\x98\x6d\x5e\x4d\x06\x8a\xc7\xb8\x3d\xa5\x82\x92\x5c\x73\xfc\xb8\x4d\xd9\xb9\xdb\xd1\x8f\xce\xee\x51\xb1\x82\xb9\x57\x51\x4f\x72\xe9\xd3\x36\x20\x8f\x91\x67\x25\x16\x24\x9e\x15\x59\xfb\x42\x9c\xf2\x67\x46\xa7\x22\x61\xec\xc0\x13\x91\xe4\x14\x2a\xbc\x50\x58\xe3\x8c\x42\x54\xb3\x1c\x01\xaa\x57\x70\x98\x7e\x4f\xbf\x47\x0c\x37\x1a\xe6\x31\xc1\xd8\x88\x63\xa8\x71\xe7\x21\x11\xb6\x51\xb3\x74\x9b\xaf\xe4\x17\x24\xc0\x55\x32\x1f\xb4\x18\xb6\x8b\xb7\xb4\x95\xe0\x97\x6d\xc7\xc5\xd1\x51\x9d\xe5\xc2\x9f\x11\xa3\xd3\x34\x88\xdb\x1b\x09\x3b\x7f\xd7\x2a\x70\xb2\xe8\x0c\x02\x48\x8b\xa2\x70\x0c\xcd\xd8\x57\xb6\x37\x84\xa9\x88\x22\x49\xae\x27\x45\x84\xfe\x74\xa2\x48\x81\x90\xea\x37\x25\x5f\xca\x23\xae\xb5\x7b\x4d\x94\xd9\x54\x2e\x4c\xf9\xc8\xed\x00\xc3\x8c\xb0\x21\x89\x60\x41\x92\x21\x49\x61\x4e\xd0\xe2\xe5\x4b\x17\xdb\x72\x63\x92\x88\x22\x2f\x5c\x88\x49\xac\x62\x39\xa7\xfe\x5c\x2e\x8a\xf2\x85\xdc\x26\x08\x63\x98\x8d\x32\x12\x79\x54\x42\x19\x71\x92\x7a\x01\x49\x21\x3c\x6a\xc3\x39\xd3\x43\x39\x83\x29\x86\x8d\xfc\x0d\x70\x39\x0e\x02\x4f\x89\x80\x35\x61\xb0\x24\x09\x6c\x49\x56\xb8\x58\x5b\x92\x2d\x69\xa1\x29\x59\x6b\xed\xb9\x99\x24\x3d\x0b\xf9\x6f\x55\xb2\xb9\x5c\xed\x5e\x73\xe2\x0c\x56\xc3\xf9\xc0\xb6\xe7\x38\x25\xb1\x3f\x1f\x43\xda\xde\xbc\x9c\x36\x1a\x68\x4a\xd2\xf6\x06\x43\xda\xde\xbe\x54\xc1\xf8\x48\xda\xde\xca\xd7\xcd\x70\xa9\xfc\x9c\xe4\x5f\x95\xbd\xe0\x56\x7f\x9d\xe9\xb5\xaf\x3e\x2d\xf2\xe7\x2d\x2e\xc9\x58\xb5\x3e\x85\xf3\x09\xb1\x6f\x91\xa9\x79\x8e\xe1\x9e\xd8\x1b\x15\x15\x77\x30\x1d\x4e\x54\x23\x26\x18\xd6\xc3\x7b\xd5\x80\x7b\x0c\x13\x53\xf9\x04\xc3\xbd\xa9\xf8\xbe\xa8\x76\x52\x54\x7a\xaf\x91\xf9\x40\x96\xad\x29\xdc\x91\x6d\x6b\x3d\x78\x18\xde\x8d\xb6\x64\x6d\x3f\x78\x4b\x32\xb5\xef\xd4\x2a\x7b\xa5\xc6\x47\x62\xf4\x55\x9b\x4e\xeb\x87\xf6\x10\xbd\x82\x18\xec\x5b\x14\x83\x6c\x2c\xd8\x1b\x14\xcb\x16\x9a\x61\xc1\x7b\x78\xd5\x5e\x87\x69\x58\xdf\x19\x37\xf2\x04\xf7\xaa\x92\x69\x2e\xe9\x8e\x89\xf5\x63\x64\x3e\xb6\x3d\x7f\xb9\x1a\x60\x55\x81\xec\xf6\x4c\xfe\x5b\xc8\x7f\x79\xb1\x41\xab\x35\xcf\x27\x78\xce\x0c\xaa\x16\x96\x91\x9b\xc8\x82\xc4\x24\xd5\x0b\xe6\xd5\x5e\xdb\x27\x52\xc9\x44\x04\xa5\x70\x07\xf1\x23\xcf\x64\x78\x84\x28\x59\x26\x10\x90\x6d\x02\x5d\x42\x08\x57\xfe\x02\x25\xef\x21\x80\x11\xe5\xb1\x2c\x54\xbe\x35\x51\xf8\x5c\x1e\x83\x92\x18\x42\xa5\x41\x18\x3e\x97\xc7\x08\x74\x91\x40\x16\x39\xd4\xc4\x78\xaa\x9c\x61\x25\x46\x82\x30\x92\x10\xcd\x50\xc8\x83\x4f\xc1\x48\xb0\x92\x91\x48\x4a\x46\x22\x2b\x18\x09\x2c\xab\xcd\x43\x2f\xa9\xd2\xbe\x2f\x80\x8d\xc1\x4f\x20\x1b\x8f\x65\x7b\x9e\xcd\x31\x9c\x6d\x8d\x0e\x14\x68\xc7\x95\xaa\x4f\xd4\x9b\xb4\x04\x64\x2d\x26\xeb\xd4\x62\xb0\xca\x8d\xea\x4f\xf3\x09\x99\x24\x07\x89\x3f\x4c\xfe\x60\x81\x20\xf7\x87\xe9\xdf\x67\xcb\x09\x4b\xc8\xc3\x61\xba\x09\x68\x70\x97\x68\x9f\x47\x01\xb9\xf0\x5b\xf6\x78\x84\x46\xde\xdb\xa9\xfd\xb6\x3d\x7a\x3b\x6d\xee\xd4\x8f\x8d\xd1\xc8\xf3\xd9\xab\xb1\xfa\xae\xdc\x01\x5d\xcc\x0f\x62\x1d\x93\x57\x07\xe0\x79\x92\x12\xff\x84\xaa\x5a\x71\xd9\x9c\x4f\xc2\x32\xa4\x3f\x61\xa3\x29\x2d\xfc\x15\x5e\xfc\x1b\xfd\xcf\x2e\x99\x4f\xde\xa2\xdd\x22\x8d\xde\x22\x6c\xae\x1d\x04\x1e\x4d\x12\xef\x2e\xf1\x44\x35\xf4\xc6\x1b\x99\x68\x71\x85\x02\x0d\xea\xc0\xc3\x22\x1e\xbd\x4b\xbc\xfb\xc4\x7b\x48\xb0\x56\x76\x1f\x1f\xa0\x43\xe5\x23\xef\x34\x36\x36\xa7\x2e\xb4\xa6\x62\x0f\x93\xa3\x6b\x9f\x8d\xbe\x25\xf6\xbe\x48\x40\x6e\xbe\x27\x1c\xc4\xfc\x99\xec\x21\xc8\x26\x61\x70\xe2\xdb\xfb\x64\x0f\x69\x18\x9f\xf8\xf2\x47\xb2\x07\xb6\x59\x9d\xf8\xf2\x9d\x84\xa7\x74\x3e\x4f\x7c\xfc\x4a\x16\x8b\x68\x2a\xc2\xc0\xfb\x32\x01\xe5\x39\xf0\xc7\x04\x26\x3c\x8b\x83\x53\xf9\x7f\x48\xe4\x59\xe5\xbe\xec\x96\x15\xc6\x96\x37\x15\xc0\x33\xe1\x7d\x9f\x80\x15\xc6\x2d\x9e\x09\xcb\xfb\x39\x01\x8b\x67\xa2\x25\x3f\x9f\x98\xfe\x3f\x27\xe8\xfb\x44\x05\x67\xdb\x2b\xf7\x7d\x8c\x1e\x04\xfa\xcf\x45\x5d\x61\xee\xb4\xab\x65\x29\x0f\x75\x43\xe2\x8c\xea\x3e\xbb\x04\xf6\x62\x49\x70\x0e\xbf\x08\xdb\xc5\x9e\x6c\x5e\x69\x2a\x34\x09\x94\xff\x32\x86\x77\xbb\x4d\x00\x09\xb9\xd7\xef\x09\xde\xed\xa6\x02\x3e\x4d\x50\x82\x98\x51\xc6\x50\xa4\x50\x4f\x8a\x32\x06\x96\x12\x2c\x6a\x26\xae\x58\xbf\xe0\x2a\x97\x49\x07\xd3\xe3\xab\x20\x22\x3f\x1d\x2e\xa1\xaf\xd2\x88\xfc\x7e\x98\xf8\x1d\x9d\x90\xaf\x0f\x13\x7f\x52\x0e\x00\x7f\x51\xc9\xa7\x8d\x40\x34\x7e\x36\xbc\x1d\x24\x8c\x0a\xf6\x2a\x62\xb2\x35\xdf\xdf\xa1\x25\x6f\xc7\x69\x7b\xa5\xdc\xa5\xb5\xd3\xf5\x1c\xac\x79\x11\xe3\x10\x9d\x05\x57\xb0\x01\xb1\x32\xe8\x63\xe2\x53\x21\x92\x70\x92\x09\x86\xac\xa2\x84\x05\x71\x1e\xe1\x52\x94\x70\xda\x13\x9a\xb2\x5f\x69\xd4\x0e\x78\x9c\xf2\x28\x9c\x2a\xfb\xad\x42\xa4\xc9\x1e\x3e\x7a\x93\x20\x36\x62\xed\x25\x15\x49\xb8\xf1\x1e\x02\xbc\xc7\xca\xa2\xf1\x4d\xf2\xac\xf8\x62\x56\x69\x14\x65\xd9\xda\xc5\x52\x9e\x60\x5b\xd8\x58\x89\x9a\x2f\xfa\xcd\xb6\x70\xfa\x8e\x3d\xfc\x96\xa7\xca\x17\x99\xa6\xcc\x9c\xf2\x34\xf9\x62\x5b\xd8\xd2\x2c\xf2\x43\x40\x1e\xa9\xe7\xc2\xc4\x73\x20\xf0\x1c\x98\x7a\x2e\x30\xcf\x81\x99\xe7\xec\x0f\x88\xd7\xcf\x05\x06\x3f\x4b\x74\x0c\xa7\x2d\xcf\x84\xb9\x0f\xd6\x2f\x6d\x7d\xe7\x7a\x82\x2a\x9c\x94\x7d\x4b\x66\x8a\x11\x65\xfd\x5f\x39\x52\x28\x61\xb4\xb9\x3f\x7c\x9d\x20\x79\xf4\xc1\xa5\x72\xc6\xbe\x5a\x5d\xb0\xe0\xc9\xf4\x69\x95\x6e\x88\x0a\x6d\xcd\xc7\x3d\x4c\x65\x95\xeb\x52\x64\x15\x62\x58\xe6\x37\x40\xc6\x75\x97\x3f\x86\x98\x38\xb0\xd0\x92\xf1\xc5\xcb\xd0\x48\xd8\x23\xe2\x28\x3e\x44\x71\x1e\xe1\x00\x47\x36\xc9\xfc\xc5\xd8\x9f\x8f\x07\x53\xdd\xd8\x08\xc3\x52\x3f\x55\xe0\x63\x88\x6d\x12\xa9\x8b\x31\xde\x68\xac\x9f\x10\x8d\x71\x34\xf5\xe3\x31\x4c\x7d\xa1\x24\xb6\xb4\xd1\x58\x9e\xb9\x74\x8e\x8f\xa0\x54\xf4\xa3\x50\xe6\x8b\xb1\x04\xa4\x7e\x99\x84\xb5\xc7\x10\x13\xf4\x2f\xde\x4a\x9b\x21\xbe\x88\x21\x3a\xd5\xbf\x19\x89\x6a\xfd\x33\xbe\x62\xd6\xfe\x62\x0c\xb7\x64\xe9\x6f\x65\x57\x61\x43\x32\xf9\x74\x3b\x86\x09\x89\xe0\x9e\x44\x36\xd9\x34\xe3\xc1\xca\xdf\xda\x56\xcb\xb2\x6f\xc7\xe4\x51\xdf\x90\x6e\x21\xcd\x26\xfa\xf1\x16\x54\xe0\xcf\x4f\xd5\x7d\xea\x04\x58\x3c\xd5\x8f\xf7\xda\x5d\x98\xb7\xd9\xef\x13\x7f\x5b\x2d\x59\x66\x9f\x95\xd9\x23\x93\x1d\x45\xad\x19\xbe\x88\xf7\x10\xd9\x24\x55\x88\xad\xf6\x45\xf3\xc7\x8b\x83\x7e\x3c\x90\x95\xbf\x50\x2d\x9c\x8f\xe1\x8e\xac\xfc\xb9\x7a\x59\x8c\x07\xe8\xa1\xad\xc0\xee\x76\x77\xfa\x01\x37\x1a\x46\x8c\x6e\xbe\xbc\x34\x1f\x46\xf9\x61\xfc\x2e\x3f\x89\x3f\xec\xbd\x3c\xed\x21\x4f\xbb\xdb\xe3\x7d\xd0\x68\x1c\x19\x28\xb1\x27\x46\x3e\x40\x28\x57\x79\xd3\x55\xd9\xb9\xae\x9a\x69\x92\x8a\xd5\x5c\xcf\x21\x0e\x73\xc8\x71\x3e\xa1\xad\x2c\x67\x7d\x5a\x7a\x81\x8d\x0c\x39\x7a\xae\x0d\x0e\xca\x48\x8c\x1b\x8d\xac\xf4\x6f\x97\x98\xf3\xa5\xd2\x7e\x8b\xda\x2b\x3a\x9d\xd6\xc8\xd7\x53\xf0\x52\x12\xd7\x20\xa4\x12\x82\xc4\xcb\xeb\x84\x67\xab\x93\x76\x4c\xc7\x40\xf8\x01\x10\x9e\x03\xb9\xcb\x26\xf3\xbf\x00\x87\x2a\x38\x39\x14\x9a\x43\xf9\x5c\xd2\x94\x67\x82\x90\x1c\x38\x53\x83\x2d\x41\x04\x12\x44\x70\x50\xbc\xf4\x82\xbf\xdb\xc5\x48\x5d\xc4\x44\xed\xc3\x66\x16\x99\x12\x9d\x29\xd9\x43\x54\xa5\x73\x33\x9e\x04\xe7\x34\xfe\x4f\xb9\xde\xcf\x45\x19\xe1\x0c\x19\x03\xf7\x17\x84\x14\x0e\x12\x44\x3b\xd8\xb4\xe2\xf6\x06\xb8\x7c\xdc\xb6\xe2\xf6\x16\x28\x71\x2b\x4e\x41\xc2\x66\x68\xf3\x26\x57\x87\xba\xe9\x10\x65\x2d\x86\x9b\x34\x17\x66\xa8\x58\xd8\xc9\x9c\x35\x69\x93\x96\x6a\xa1\xab\x4d\x8b\x84\xcd\x00\xe2\xf6\x6a\xdb\x22\xbc\x19\xc0\x0b\x67\x5f\xd6\xdf\x68\x84\xe9\x97\x61\x1c\x0a\x86\x28\x2e\x21\xa9\x6f\x9f\x97\xe0\x4e\xc0\xd9\xef\xf3\x9b\x00\x53\x6f\xcd\x66\x41\xdd\xb3\xad\x36\x65\x9c\xee\x8d\x2a\x59\xbe\x6f\x41\x39\x2a\xcb\x96\x72\x73\x3e\xb4\x0a\x7c\xdc\x83\x62\xe9\xa6\x61\xba\xa2\xa2\x08\x51\x6c\x81\x25\xc2\xe0\x9d\x05\x96\x8a\x94\x0c\x11\xf1\x5d\x70\xc7\x90\x92\xf6\x0d\xcc\xc8\x5d\x00\x0b\xf2\x2a\x90\xd4\xb2\xeb\xc0\x8a\xb4\x5d\x98\x92\xf6\x35\xac\x95\xd7\x9e\xca\x4d\x24\x6d\x4b\x30\xd5\x71\x0b\x67\x08\x25\x4d\xd2\xbe\xb9\xc1\x2f\xdb\x8e\xd3\xcb\xa5\x72\x41\x9b\xc5\x53\x64\xb4\x79\x65\xa5\x40\xa3\xd5\x82\x7a\x09\x71\xf6\x18\x5e\x38\x83\xfc\x2e\x8b\xaa\xdd\x6c\x5a\x38\x53\x5a\xe7\x0b\xf3\x9e\xe4\x4e\x58\xcd\x66\xe6\x0c\xee\x4d\x6c\x75\x4a\x96\x3e\x1b\xc3\x8c\x50\x43\x42\x60\x41\xa8\x21\x1f\x70\x4b\x16\xed\x4d\x6b\xd6\xde\xc0\x86\x2c\xda\xdb\xd6\xac\xbd\x05\x34\x25\xb7\xcd\x5b\x7b\xd3\xdc\x60\x25\x3d\x48\x9a\xa1\xcf\xc6\x4d\x24\xd3\x8b\x39\x32\xc5\xb8\x95\xc9\xfd\xe5\x62\x0a\xb7\x4d\x32\x85\x8d\xfc\x27\x81\x91\xdb\x26\xda\x92\x59\xfb\x81\x85\xf3\x85\xb8\x40\x0b\xf3\x64\xe7\x49\x18\x83\xac\x8a\x6c\x9a\x5b\x98\xb5\x37\xb6\x2e\xe0\xb6\x94\xec\x63\x2b\x77\x94\xad\x9a\x7a\x68\x4b\x92\xe6\x4a\xb6\xe1\x56\x05\xee\xbf\xe8\xc0\x46\x45\xed\xbf\xe8\x68\xbe\x61\x8b\xb1\x11\x06\xb0\x97\x93\x01\xa6\x64\x2d\x3b\x4a\x25\x48\x74\xdb\xa2\xed\x0d\x6e\xca\xf1\xdf\xda\x04\x6d\x5a\xb4\xbd\xc5\x4d\x25\x81\x9b\xab\x52\x59\x86\x04\x39\x94\x08\xa2\x35\x86\x04\x38\x2e\x6f\xc6\x27\x03\x8c\x34\x60\xdc\x9e\x85\x1b\x36\xdd\xed\x84\x96\x59\xa0\x58\xce\x65\x83\xee\x32\x77\xd1\x0a\x95\x7b\x84\x68\x7b\x43\x68\x7b\xb5\x91\x0d\x91\x0f\x5b\xec\xc9\xb4\x16\x41\x32\xb5\xa5\xfe\x13\xd9\x56\xdc\x4c\x65\x1e\xfd\x61\xab\x3e\xc8\x02\x5b\xf9\x01\x0f\x02\x35\x99\xf2\x39\xa2\xe7\xa7\x99\x24\x7b\xbc\x07\xaa\xc5\x65\xcf\xa3\x5b\x6b\x12\x03\xc5\xde\x5a\x16\x3b\x16\xc6\x9f\x2d\xb6\xd4\xc5\x96\xb2\xd8\xf3\x0f\xf8\x91\x2e\x15\xe5\x95\x7d\x71\x6c\xa2\xf5\x44\xe9\xd9\x29\x1d\xec\x78\x14\x7b\xb6\x82\x3a\x93\x50\x0b\x95\xf4\x7a\x05\xa6\xbe\x3b\x91\x9c\x55\x8c\x3e\xae\x6f\xf1\x74\x7d\x0b\x59\xdf\x2c\x09\x55\x86\xe7\x6e\x7a\xba\x68\x2a\x8b\x6a\x12\xf6\xbc\x82\xf3\xa7\x9b\x32\x97\xf0\xe6\x09\x5d\x87\xe2\x99\x02\xa3\x95\x69\xc9\x4a\x96\x14\x0b\x26\x4e\x5a\x41\x1f\x97\x9b\x9a\x72\x53\x59\x4e\xcd\xb9\x67\x8a\x76\x64\xb9\x64\x94\x90\x78\xe8\x8c\x62\xcf\xf1\x62\x75\x27\x18\xb4\x15\x95\xcd\xa7\xb2\x21\xb9\x39\xc1\x8b\x75\x68\x1d\xe5\x72\x1f\x69\x0a\x8a\xb1\xac\x3d\x51\xd3\x4e\xb9\x0e\x38\xb3\x13\x42\x52\x1e\x2e\xb2\x3c\xf2\x3f\x97\x84\x82\x16\xbe\xc6\x06\xb6\xcd\x5f\x52\x15\x73\xc4\x08\xec\x33\x12\xfa\x5c\x72\xcc\x45\x6c\x89\xac\x66\xb0\x97\xd0\x78\xca\x97\x08\x37\x93\x3a\x47\x27\x21\x04\xba\xc2\xc0\x78\xfd\x1d\xac\x8c\x9b\xb5\xc0\x4f\xc6\xf9\xb9\x42\xa6\x4f\x4d\xba\x31\x33\x5d\xfa\xc9\x78\x10\xf8\x05\xd3\x57\x53\x4a\x31\x94\x19\x83\xcc\x60\x98\xbc\x7a\x06\x5d\x0a\xe7\x3b\xe3\x47\x81\xcf\xc6\xc5\xde\x16\x40\x0a\xab\x72\x5f\x98\x16\xfb\x02\x6c\x15\x11\x85\x5b\x45\x42\x8b\x5d\x62\x65\x76\x09\x94\x1a\x22\xa7\x35\xfc\x18\xa4\x86\x5a\x13\xa7\xc8\x3b\x35\x79\x53\xbd\xa3\x58\xb1\x12\x9a\x95\x93\x33\x35\x4d\x6b\x34\x50\xfe\x48\xd6\x7e\xfe\x38\xc6\xa7\x4a\xe8\x1e\xaa\x12\xc6\x3e\x43\x96\xd0\x8f\x63\x0c\xb6\x9d\x17\x37\xcd\x51\x29\x06\x2d\x3a\xe5\xa8\x2b\xba\x27\xa0\x87\x37\x6d\xab\x5d\x2c\x6d\x6f\x48\x8c\xac\x8d\x25\x37\x8d\xe2\xd3\x56\x7f\xda\xca\x4f\x5b\x0b\x6e\x2b\x9f\x56\xa6\xd8\x6a\xa3\x85\xf4\x45\xba\x29\xb3\xd2\xd2\x7a\x15\x03\x47\x0e\xff\x89\xb5\x3a\xc3\x87\x88\x93\x1b\x26\xb1\x67\x95\x0b\x31\x85\x48\x56\x11\xee\x1f\x65\x9f\xc9\x2a\xc2\x33\x55\x2c\x8e\xaa\x08\x55\x15\x8b\xe7\x56\xa1\xb2\xab\x8b\x53\x7e\xa6\x8a\x39\x3e\xc4\x2f\x57\x55\xcc\x2b\x55\xac\x4f\x55\x51\xcb\x3e\x2f\x99\xa2\x82\x1d\x2b\x58\xb3\x53\x96\x33\x9a\xd0\xa0\xb6\x8b\xf5\xba\xe7\xab\x27\x72\x39\x2a\xd3\x34\xa1\xa7\xe2\xb4\xb3\xdd\x0e\x31\xb9\xd3\x4f\xd8\x82\xae\x43\x9e\xa8\x8c\x08\x1b\x53\x68\x34\x15\xb8\xad\xe2\x30\x25\x74\xae\xe8\x8b\xe6\xb7\x2d\x88\xb3\xf2\x43\x9e\x56\xc9\xcb\xe2\x69\x91\x9a\x49\x1a\x75\x44\x00\x95\xc4\x45\x66\x57\xc1\xe9\xf9\x9a\x25\x79\x01\x66\x40\xeb\x0f\x59\x51\x65\x92\x61\x8d\x56\x86\x61\xcd\xc3\xe9\x47\x8e\xd2\x3b\x28\x03\xf4\xcb\x43\x5d\x25\x40\xff\x5d\x40\x3a\x0e\xbc\x0a\x88\x3b\x28\x8f\x0b\x8b\x90\x25\x34\x09\x16\xdb\x33\x84\x52\xe8\xeb\x4b\xcd\x84\x67\xa6\x3e\x10\xa0\x19\x7e\xd1\x9e\xb2\x95\x58\x10\x9e\x5f\x42\x4b\x52\xa4\xc2\x24\x04\xf9\xfd\x47\x49\x66\x95\x4a\xb9\xa4\xb0\x0b\x75\x2e\x08\xa3\x69\xc2\x62\x39\x91\xe6\x44\xb2\xc6\xdc\x96\x6c\xd1\xec\x65\x34\xc0\x29\x89\x51\xe0\xcf\xc6\xb0\x02\x8a\x21\x6d\xaf\x68\xc2\x62\x41\x44\x71\xc5\x85\x61\x6e\x93\x54\x9f\x67\x07\x49\xa3\xb1\xd0\x27\xe6\x04\x43\xd8\x68\x20\x73\xd0\x25\xf3\x5c\xd1\xa5\x92\x96\x5f\x3c\xeb\x3e\xec\x76\x4e\x45\x5c\x54\x3d\x2b\x54\x94\xf8\x8a\xb6\x2a\xad\x33\xb9\x86\x1b\x0d\x44\x49\x56\xf4\xb0\xd0\xb5\xcb\xd5\x31\x13\xd5\x95\x40\xee\x1d\xdc\x26\x02\x65\x7e\x30\x86\x28\x8f\xc8\xa4\x22\x76\x94\xed\x90\x55\x55\xdb\x21\xbf\xc7\xa6\xb5\x1c\x03\xaf\x3a\xb1\x2d\x64\xfe\xe5\xc1\x41\x0e\x91\x03\x4c\x9e\x16\xb5\xc2\x52\x90\x41\x46\xb8\xdc\xd3\x68\x56\x7a\x86\x97\xf8\x79\xbe\x3a\x0a\x53\x5b\xe8\xff\x9f\xbd\xef\x6f\x6e\xdb\x56\x16\xfd\xff\x7d\x0a\x9b\x73\xec\x21\xcc\x95\x44\xea\x97\x6d\xaa\xb0\x26\x49\x7b\x4e\xda\xdb\x24\x3d\x75\x9a\xb4\xd5\xd5\xf1\xd0\x14\x24\x21\xa1\x49\x95\x3f\x6c\x29\xb6\xbe\xfb\x1b\x2c\x40\x12\xa4\x28\xc5\xe9\xbd\xef\xbf\x37\xc9\x58\x04\xb0\x0b\x60\x81\x05\xb0\x00\x16\xbb\xac\xec\xa5\x67\x61\x66\x12\x33\x13\x98\xb2\xfe\xcf\x3c\x39\x40\x34\x2e\xd0\x62\xb6\x17\x51\x74\x8a\x4d\x20\xcc\x7d\x18\x29\x06\x5e\x79\x71\xca\xd3\xda\x93\xba\x0a\x03\xab\x0d\x6e\xb1\xa1\x55\x34\x49\xfe\x15\xab\x57\xda\xde\x50\xc5\xc9\x67\x19\xa4\xed\xd9\x9a\xc6\xe2\x67\x43\x33\x90\xbd\xc5\x4b\x6e\x56\x37\x7f\x78\x5e\xd2\x72\xd4\xaa\xad\xb8\x6b\x1c\x77\xd4\x97\x6b\x8f\x2c\x2b\xf8\x2e\x1a\x91\xd0\xf4\x28\x9f\x04\x53\x60\xe0\x53\x4f\xa6\x9e\xc5\x68\x42\xce\xa2\x7e\x7d\x83\x5a\x18\x18\xcf\x59\x2e\x96\x2c\xc7\xe4\xad\xe1\x0e\xcb\x89\x6e\xc6\xed\x04\xff\x2e\x1b\x91\xb8\xf4\x4e\x12\x43\x6a\xb2\x09\xd7\x8e\x43\x1d\x2b\xd6\x59\x09\x9d\x0a\x22\x31\x34\xd6\x66\x67\xa6\xb9\x0d\x0c\x4d\x54\x40\xb3\xa1\x30\xdb\xda\x49\x31\x8a\x08\xb6\x94\xdc\xd6\x30\x93\x98\x04\x32\xb9\x0b\xd6\xd8\xef\xd9\x5b\x80\x92\x89\x78\x66\x32\x88\x49\xa5\xb3\xf9\xbe\xa3\x8d\x82\x18\x5e\xd5\xfa\x10\x39\xa8\xc2\xac\x54\xd2\x19\x02\x66\x4b\xc0\xa3\x56\x93\x2d\xa2\x03\x56\x3c\x08\xf8\xd4\x6c\xc2\xc9\xc6\x7b\x9e\xa8\xba\x19\x69\x79\xa4\x73\x17\xb5\x93\xec\xce\x8c\x08\x04\xda\x89\x72\xde\x9d\x23\x79\xb1\xc0\x4e\x4f\xe5\xb9\x12\xea\xe3\x7c\xf6\xc7\xcd\x67\xbf\x93\x74\xda\x8a\x26\xe1\x74\xdb\xec\x09\x83\x99\x7c\x12\x4e\x81\xcb\xb3\x61\xf9\xb2\x4f\x9b\x2f\x82\x46\x05\x64\x3c\x33\x18\x25\x93\x70\x4a\x1f\x67\x5e\xea\xb9\x98\x87\x64\xe5\x94\x8a\xd2\xf4\x93\x56\xaf\x3c\x69\xf5\x2c\x9a\x9e\xf9\xdb\x2d\x81\x44\xbe\x04\xa6\xf2\x76\x14\x18\xfd\xec\x2b\x53\xbd\x1f\xa3\xf2\xec\xa7\x36\xbc\x0f\x3d\xd6\x4d\x29\x2b\x2c\x81\x54\xa7\xaf\x43\x8f\x71\x99\xb4\x43\xc2\xe4\x6b\xf6\xbc\xca\xdf\x6e\xc3\x24\xa7\xf0\xf9\x4f\x80\xd5\x23\x5f\xb9\xd8\x7e\xf6\xe9\xe3\x56\x5b\x67\x93\xd4\xab\x1e\xef\x68\xbc\xab\xe9\xc3\x78\x7b\xb9\xf7\xa8\xce\xbd\x09\x0d\xf6\xa9\xb6\xd6\x9d\xcd\x95\x67\xfe\x13\x9e\xe7\x22\x22\x21\xd2\x43\x52\x1b\x76\x4e\x59\x1e\x99\x80\x4f\x46\xc8\xaf\x2b\x16\xdf\x65\x29\x33\x03\x98\x8b\x82\xb5\x98\x04\xe6\x92\xc7\xf2\xa7\x62\xb1\x8e\x0d\xf7\x34\xc8\xb7\x14\x77\xb8\xa5\xd0\x0f\x9e\x16\xf8\xea\x4a\xea\xa6\xe0\x29\x4b\x8e\x2a\x00\x27\x8b\x29\xac\xe8\x0c\x15\x64\x64\x10\x6f\xf5\x97\xd4\x19\xdd\x5f\x89\xad\xd9\x92\x68\xf0\x4b\x09\x6f\xd1\x64\xb2\x6c\x39\x0a\x1a\x12\x19\x2f\x10\xab\xda\x9f\x29\x9d\xa5\xc0\xe8\x22\x83\x98\xae\xc4\x7a\xb9\x14\x13\x69\x92\x41\x44\xe7\x59\x8d\x59\x93\x6f\xe7\xd6\x28\x9e\xe9\xae\xeb\x0e\xb3\xeb\x1e\xcb\x51\x2f\xe4\xc5\x6b\x4a\x9e\x9e\x16\x59\xc1\xd1\xd1\x7c\x9e\x3c\xf7\x59\x7a\xbc\x2f\xeb\xb7\x65\xd6\xab\xac\x60\xf8\xf5\x73\x0d\x67\x20\xa7\xf3\x2d\x6a\x81\x3d\x0b\x25\x92\x28\x91\x32\x46\xf2\x37\x47\xd4\x8b\xca\x8d\x7a\xc2\x67\x4c\x5e\xa3\x37\xaa\xf1\x97\x6a\x57\x99\x52\x12\x9d\x65\xa4\xd0\x5b\xbf\xcf\x2a\xca\xe8\xf1\x21\x2d\xf4\x6c\x12\x4e\x5b\x19\xea\x8a\x83\x7c\x4c\x61\x43\x20\xa4\xd6\x24\xdf\xb4\x8b\x5d\x6f\x7c\x95\x8e\x2c\x2b\x25\x8c\x8a\xe9\x19\xfc\x2b\x6f\x6c\x7a\x16\x15\x3b\x26\x08\xa4\xd0\xca\x08\x71\x4d\x5f\xc5\x25\x45\x5c\xce\x6d\x89\x66\x3a\x45\x99\x5d\x09\xc8\x16\x54\x64\x93\x82\x40\x83\x32\x7d\x91\xc5\x16\x8c\x19\x9b\x7b\x59\x90\x1a\xee\x22\xdb\x12\x78\x5b\xb6\x5e\xc2\x83\x65\x94\xb1\x34\x65\xcd\x6d\x87\x4d\x56\x3c\x97\x0a\xcb\x41\x0b\xb8\xed\x93\x8d\x30\x29\x4f\x05\xb8\xda\xbb\xa9\xc7\x45\x36\xca\x2c\xd9\x55\x3a\x4a\x2d\x8b\xc4\x16\x0d\xe5\xe5\x22\x3e\xde\xba\xf2\x50\x76\x8e\xd1\x4e\xab\xf4\xff\xb9\xad\xe7\xe3\x8b\x3d\xa0\xe9\xb5\x22\x3c\x31\xee\xe6\x0d\xe4\x6f\xe1\x81\x2f\x16\xc1\xde\x5a\xeb\x6f\x57\xf5\xd7\x25\xa1\xb4\xfa\x3e\xcf\x63\x16\x79\xe5\x17\x13\x7b\x4a\x7d\x1a\x50\x1b\x18\x75\x46\xcb\x3a\x1d\x19\xea\xfc\xca\x8e\xcd\x2a\x74\xe4\x10\x1c\x5f\x92\xcd\xe5\x03\x89\xd6\x1c\x5f\xb4\x4d\xec\x69\x81\xf5\xa8\x0e\x75\x20\xa2\x66\x89\xde\x92\x9f\x2d\xa9\x20\xd5\x31\xbb\x67\x1e\x29\xac\xee\x47\x96\x00\x8d\x4b\xd0\x58\x03\xf5\x46\xdc\xa2\xd1\x59\x99\xd5\x76\x21\x1a\xcb\x6f\xd1\x6c\xcc\x3b\xd9\x99\xe7\xda\xca\x34\x4d\x40\xfd\xb2\x65\x73\xca\x04\x70\x8b\x16\xba\xee\x0b\xd4\x87\xf1\xc2\xd9\xb7\xf3\x81\xd3\xc9\x50\xc1\xfa\xef\x30\x01\x3a\x3b\xce\x07\x4e\x0e\x52\xa6\x77\x68\xac\x6b\x61\x37\x81\xa8\xd7\xa3\x7a\xb9\x9e\x68\x07\xbb\x9c\xe5\xe1\x0b\x8b\x23\x77\x95\x49\xdd\x99\x42\x44\x4d\xd2\x68\x11\xeb\x06\xa2\x6b\xa7\x82\xbc\xdc\xae\x22\x2f\x09\x86\x0f\xd4\xac\xc1\x20\x7f\x57\xa7\x0b\xcc\x01\xa0\x09\xaf\x4c\x8b\x52\x91\x5c\xee\x75\x83\x92\xef\xe6\xa5\x13\x83\x15\x4d\xc7\x8e\xeb\x74\x96\x28\xbb\x2f\x46\x24\xa2\x3e\xaa\x95\x4f\x21\x12\x1b\x90\xf9\x84\x5b\xce\xb4\x65\x46\x6d\xfc\x9e\x8a\x01\xb3\x91\x7b\x81\xc5\x95\x4d\xe4\x33\x54\x25\xf9\x2f\x47\xc4\xa3\xc1\x84\x4f\xc1\xbb\xa2\x62\xb1\x3c\x3d\xf5\xbe\xa3\x09\xbe\x7a\x36\x45\xbe\x77\x51\xfb\x96\x27\xcc\x4f\xcd\x39\x78\xe0\xc0\x02\x1f\xf4\x45\xed\x8d\x45\x57\xf9\x40\x0c\x2b\x9b\x05\x5f\x2d\x93\xc7\x62\x68\x28\x89\x2e\xa6\x6b\xb1\x54\x6e\xea\x0b\xe4\xb7\xcb\x65\x38\x6d\x3d\x77\x11\x5b\xa5\xca\x70\x33\xae\x52\xb7\x3c\x7c\xa6\x4d\xc6\x8c\xee\x9c\x20\xea\x2e\xae\xcb\x17\x4b\x99\x54\x5f\x73\x8b\x82\xd0\x54\xcb\x1c\x5d\xd7\x86\xfe\xe6\xb9\xcb\xff\xf1\x71\x21\x00\xe8\x5b\x96\xaa\xee\x78\x03\xbb\xe5\xe1\x48\xf3\x19\xae\xef\x00\xc5\x28\xbc\x11\xb9\xe0\xc0\x41\xef\x96\xf1\xee\xe1\x0a\x07\x0f\xe7\xbd\x58\x1a\x80\x4e\x2a\x4a\x1b\x01\x8d\x27\xcb\x29\x44\x66\x00\x9e\x60\x56\x5f\x7c\x08\x51\xce\xa3\xc1\xe8\x7d\x66\x2a\x9d\xa5\x05\xea\x60\x27\xb2\xb4\xf6\x2a\x66\x01\xbf\xb3\x82\x4a\x90\x8c\xd2\xb1\x99\xa9\x00\x4d\xab\xa0\x0c\x29\x80\xac\x7d\x17\xcd\x68\x0e\xd4\x5a\x10\xb7\x40\x50\x4a\xb6\x29\xfa\x2a\x38\x94\x09\xd9\x71\x50\x23\x35\xd7\x2b\xa0\xe9\xa8\xbe\x5d\xce\xb7\xca\xb1\xb6\x55\x96\x2d\x0a\x59\xbe\x5b\x4f\xad\x22\x9f\xbb\x68\x36\xb2\xac\xec\xbb\x78\x44\x3c\x93\x4d\x32\xe9\x52\xab\x28\x19\x7d\xde\x08\x09\x5c\x3a\x4f\xd1\xf7\xdc\x21\x44\x34\x04\x8f\xa6\xf8\xc4\x41\x9e\x4f\x15\xb5\x90\x96\xc4\x78\x59\x08\x24\x34\xd2\x42\x73\xea\x69\xa1\x25\xf5\xb5\xea\x78\xf4\x21\x33\x3d\x31\x79\xdc\x64\x26\x47\xd5\x1e\x3e\x22\xbe\x08\xf9\x42\x68\x79\xc8\xd0\x61\x94\xc2\xf0\x42\x9f\x25\x69\x14\xd3\x10\x4d\x63\x57\x5a\x67\xde\xe2\x95\x88\x56\x60\x31\xd3\x13\x13\x53\x86\x57\x2b\x7f\x65\xe6\x97\xcc\xf4\xf0\xfc\x09\xd0\x8c\x7d\x60\xd1\x0c\x12\x8b\x66\x04\xe6\x56\xa5\x8e\x81\x55\x21\x67\x69\xe9\x75\x16\x28\x91\x4e\xc2\xe9\xe9\x31\x56\x53\xcc\x3e\x2a\x3e\x5d\xc6\xcc\x9b\x51\x0f\x34\x40\x8b\xce\x5b\x09\x9e\xd8\x1d\x23\x75\x78\xdd\x53\x01\xe7\xe0\xeb\xe0\x41\x6b\x29\x24\xbb\x42\x71\x2e\xde\xca\x4d\x53\xaa\xcd\xbd\x62\x4c\x89\xad\x91\x58\x85\xdf\x66\x62\x7b\x52\x53\x87\xc2\xfc\xe8\x63\xde\x72\x6e\x08\xb2\x79\x5c\x1b\xee\xa2\x99\x6b\x83\xbf\x14\xb3\x93\x6b\x43\xb2\xe4\xf3\xd4\xb5\x41\xce\x22\x6e\x3a\xce\x39\x55\x46\x58\x8e\x6b\x8b\x7d\x6f\x64\x26\x04\x3c\x33\x81\x56\x52\x1b\x2a\xf2\xe9\xc5\xb5\xa8\xc5\xe7\x4c\x6c\x5d\xf0\xf3\x87\x8c\xc0\x42\x7e\xbe\xc8\x08\xac\xe8\xbc\xbd\x6e\x31\x73\x0e\x4b\xd2\xe9\xc2\x8c\x2e\xdb\x6b\x8b\x99\x4b\x98\x8b\xe0\x3d\x5d\xc8\x83\xa9\xa7\x27\x27\x9f\x76\x91\xac\xac\x32\x95\x85\xed\xf5\x99\x1c\xfa\xf2\x71\x87\x3c\xcb\x8a\xc5\x1e\x68\xc6\x02\x96\xb2\x23\x45\xf8\xd6\xad\xa1\x51\x33\x6c\xaf\x5b\x2b\xd2\x31\x67\xad\x15\x39\xab\xe7\xd1\xb9\x6f\xcc\x85\x40\xa0\x16\x88\xc6\xf3\x1f\x29\x4e\xa3\xd5\x5a\xb9\x44\xc8\x6f\x60\xf4\x56\xec\xb8\xa4\x86\x44\x46\x8f\x1d\xcd\x19\xbd\x74\x2d\xfe\x6c\x6b\x6c\x95\x6d\x7e\xe5\x70\xe9\xf0\x9a\x50\x18\x0a\x56\x53\xbd\xd4\x0d\xc7\xa5\x25\x8c\x66\xec\xfa\x1b\xb3\x3a\xd6\xb3\x8a\xa5\x0f\x71\xe0\x6a\x45\xa9\x9c\x52\xee\xdd\xfd\x87\xe5\x41\x1c\xab\x33\xb2\x27\x9f\x80\xfa\xf2\x95\x68\x20\x5f\x89\x26\x34\xd7\x6b\x2f\x34\x2c\xdc\x3d\x3b\xbd\xdd\x0b\x8e\x74\x2b\xe6\x48\xa9\x67\xb0\xa1\x36\xbc\x15\x53\x40\x95\x27\x62\x6a\x25\xf9\x09\x34\x11\x5b\x07\x01\xf2\x3a\x23\xf9\x91\xf8\x9c\xc6\x67\xa6\x90\x5e\x8a\xc3\xc6\xee\x99\xd7\x8e\x3b\x3e\xc8\xdf\x80\x08\xa9\xbd\x29\x63\x8b\xce\xf5\xfc\x9a\x40\x5a\x02\x24\x1f\xe0\xef\x04\x80\xdf\xe9\x42\xd0\xe9\x82\x94\x97\xf6\x97\xa9\x8e\x24\xc5\xbe\xfe\x00\x53\xbe\x12\x74\xa0\x6c\x5f\x39\xa1\xfc\x36\x26\x2a\x0d\xba\xc5\x35\x23\xd1\x87\x45\x04\xd9\x6f\xec\xe9\xa9\xd1\x02\x1d\x73\xad\xf2\x08\x61\x47\x57\xee\x6b\x86\x22\x95\x84\xc4\xa5\x9b\xba\x8a\xe6\x6b\x90\x25\x29\x8b\xbf\xca\x7e\x62\x39\xab\x33\xa0\x4f\x3d\xc9\x79\xb6\xe8\x50\x7f\xf7\xcd\xbc\xbe\xf8\xa6\xa7\xa7\x69\x79\xa1\xdf\x5e\xd3\x1f\x33\xe9\x0f\x63\x43\xff\x10\x5f\xc4\xc5\xd8\x68\x1c\x58\x94\xa1\x91\x76\x31\xbb\x22\x1b\x46\x34\x2c\x0f\x2b\x7f\xc3\xb5\x6e\x4e\xff\xc4\xdf\x25\x4d\x70\x82\x4c\xe4\x8c\x28\xa4\x68\x31\x41\xce\x21\xd1\x36\x87\x58\xb9\x9d\x39\x51\x4e\x6e\x7e\x7b\xad\x4d\x6c\xa6\xdf\x46\x35\x36\x82\x13\xdb\x9e\xf9\x70\x49\x3a\xe6\xa2\xb5\xd4\xd1\x9c\x96\xc0\x1c\x87\xed\x4d\xc7\x6f\x6f\x5c\x87\xa8\x0c\x08\x78\xff\x7f\x2a\xfc\x96\xa9\x50\x2c\x20\x77\xde\x6a\x2f\x3b\xea\xee\x50\x41\xca\x6d\x78\x70\x53\xe8\x64\x64\x42\xa4\x8d\xd1\x88\xfc\x24\x9b\xaa\x66\x3d\x33\xed\xab\x74\x6c\xbb\x29\x01\x26\x8d\xd1\xe4\x4f\x2c\x9f\x9e\xec\x2b\x1a\x8f\x6d\xb7\xa2\x93\xc1\xf2\x0b\x21\x56\x11\x1e\xf9\xe9\x69\x71\x2a\x5f\xb9\xea\x99\x9b\x8c\xe0\x91\x0f\x2c\x29\x2f\xcc\xa7\xac\xa8\xd3\xb1\x61\x46\x0d\x8c\x30\x28\xa5\x8b\x71\xd0\x9e\xad\x5d\x63\xa6\x87\x37\xae\x04\x68\x95\xb1\xce\x29\x93\x2b\xac\x4c\x47\xa4\xc2\xe9\xb4\x08\x81\x88\x97\x1a\x63\xa1\xb9\x14\xa1\xf5\x99\x88\xea\xa8\xbb\x35\x02\xd2\x28\x0d\xb5\x47\xa6\x4f\x97\x79\xa5\xaf\xec\x11\x51\x87\x4b\x11\x5d\x4e\xfc\x96\x33\xcd\x21\x85\x94\x26\x7e\xc1\x48\xfe\xca\xbc\x98\xcf\x37\xc6\x31\xa5\x8b\xa7\x27\xd3\xa3\xb1\x99\xc0\x8c\x90\xef\xe8\x6a\x6c\x2e\xdb\xab\x68\x85\xc4\x79\xc4\x35\x25\x6e\x8b\x26\x32\x56\xe6\x20\x24\x90\x19\x04\x70\xec\x10\x50\x8a\x7e\xd5\x7a\x43\xce\x1d\x34\xaf\xa5\x6c\x2b\x32\xca\x13\xc4\x16\x20\xcf\xc5\x6e\x80\x27\xc0\x8b\x9b\x8a\x8a\x54\x5e\xdc\x82\xc6\xb5\xcb\xbc\xf8\xf4\x34\xae\xf4\x1d\x87\x88\xce\xd1\x09\x10\x8d\x8b\x2e\x2b\x8e\xae\x42\xd3\xc3\xad\xf6\x59\x24\x5a\x35\x57\x8e\x06\x3f\x6f\x55\x4e\x3d\x49\xf2\x88\xf8\xb2\x41\x79\x9e\x2a\xa4\x61\x6c\x07\xc9\xf7\xbc\xfd\x05\xa9\xf1\x81\xb7\xbf\x8c\x45\x9e\xae\xc8\x13\x22\x38\xce\xdd\x81\x0b\x4c\x45\x60\x5e\x00\x19\xc5\x05\x81\x4c\x27\x30\xde\x19\x04\x34\x54\xcd\x2e\x2d\x7f\x75\xec\x5c\x53\x29\xac\x69\x2a\xe1\x98\x88\xa6\x08\x2d\xe4\x69\x8e\x56\x81\xb9\x74\xd2\x9a\xc9\x3b\xc4\x72\x93\x1f\x9f\xd1\x18\xd2\x33\x9a\x42\x3c\x2e\xd6\xd5\xf4\x2c\x3b\x5b\x75\x62\x88\x3b\x66\x7a\xc6\xcf\x56\x84\xb8\x4e\xc7\xae\xba\x41\xc5\xe3\x21\x75\x3f\x2e\x8f\x39\xa2\xf2\xa8\xc8\xa3\xac\xbd\x86\x80\xb2\xf6\x06\x12\x9a\x8e\x7d\x53\xd6\xbe\x93\x12\x17\xcf\x2f\x52\x4a\x59\x7b\xb6\x96\x14\x9a\xf1\xd3\x53\x72\xc5\x04\xcf\xa0\xdb\x52\xfc\xc2\x53\x8d\x68\x44\xd4\xab\xfa\x4c\x48\x2b\x90\xb5\x37\x34\x80\xac\x3d\xdb\xd0\x04\x3c\x8b\x66\xed\xd9\xba\x64\x3d\x26\x16\x85\xf6\x6c\xdd\xf2\x20\x19\xfb\x66\x26\x8b\x4c\x88\x6b\x93\x51\xd6\xfe\x82\x2e\xf8\xda\xb3\xb5\x45\x35\x40\xd6\xde\x58\x34\x01\x51\x64\x8b\x26\xd2\xc4\x45\xa5\x4e\xeb\xa2\x4e\xeb\xaf\xd4\x69\x4d\x13\xdc\x3e\x89\xda\x69\x75\xda\x58\x98\x79\xb0\xa7\x4e\x0e\x92\x23\xea\x54\x00\x8a\xea\xc9\x3a\xad\x45\x9d\x74\xb7\xb0\x85\x46\x42\xf4\xf4\xe4\xa1\xae\x03\x8a\x85\x85\xde\x40\x7b\x2d\xd8\x03\x97\x53\x2e\x6a\x84\x1a\x5c\x5c\xd4\x28\x40\x63\xd1\xa7\xa7\x5e\x7e\xbf\x2e\x58\x39\x34\xd1\x62\x81\x18\x01\x02\xa8\xc3\xf3\x11\x60\x46\x63\xe6\xa6\x44\xc0\x2c\xf1\x00\x29\x23\x90\x15\x2f\x5e\x9b\x2f\x7c\x95\xb5\x7b\xf4\xad\xaf\xe9\x40\xa3\xc6\xfc\x9c\x7e\xc8\x60\x29\xa8\x5d\xd0\x72\xea\x81\x15\x9e\x36\x38\x56\xa9\x26\x3c\x28\x59\xf3\x5b\x5e\x85\x06\xf2\x6d\xab\x58\x6d\x1a\x9f\x18\x68\xb3\x7e\xaa\xdd\xb0\x0b\x41\x87\x43\x0a\xea\xe6\xbf\xbc\xf5\x96\x42\xda\xf8\x83\x10\x59\xdc\xdf\x33\x33\xdd\x55\x45\x63\xe3\x09\x03\xfc\x37\x75\x75\xdf\xbd\x4c\x5b\x27\x11\x33\x24\xdb\x43\xb6\x3b\x12\x94\x78\xe2\xf2\x91\xb1\x5a\x93\x13\x1a\x92\xf1\x87\xac\x22\xd6\x8b\xd5\x55\xe9\x75\x92\x71\xea\x96\x75\xa2\xf1\xd8\x0c\xe9\x24\x04\xfc\x37\x05\x46\x5c\x06\x5c\xb4\x06\x76\xc7\xb3\x9f\x27\x8c\xcb\x2e\x74\xd5\x91\x1f\x27\xae\x7f\xac\xce\xff\xf0\xa9\x6e\xca\xfd\xcf\xcf\xd4\x20\x5d\xca\x43\x12\xc1\x01\x1c\x95\x61\x79\x1b\xa5\x9a\xe7\xea\x9f\x62\xa7\xae\x04\xda\x5d\x34\x7b\xb6\x1a\x6c\x68\x19\x86\x40\x5c\xa0\xec\xc1\x41\xf9\x43\x90\x8a\x99\xf4\x31\x44\x5b\xba\xb5\x8b\x73\xc9\x12\xf5\xdc\xf2\x4e\xe9\x2a\xcb\xea\x0e\x01\x07\x3f\x43\xb1\x38\x69\xd2\x4b\x21\xa9\x8c\x66\xd1\x11\xa3\xca\xbc\x6b\xae\x0a\x8a\x4f\xd6\x76\xe3\x32\x9a\xbb\x72\x7d\x58\xf2\x80\x99\xc7\xd9\xd3\x53\x76\xe5\x94\x5c\x68\xa5\x67\xec\xac\x1c\x1b\x2d\x95\x45\x10\x2d\xcc\x8c\x74\x32\xb2\xdd\x42\x10\x2d\xde\xd6\xe8\x29\xb4\x46\x73\x92\xdb\x92\x62\xa5\x9c\x70\x17\x69\xaa\x09\x3b\xce\x85\xab\x46\x9c\xd8\x7a\x65\x86\x26\x11\x05\xf1\xf8\x81\x87\xaf\xbd\x20\x68\xba\x86\xd2\xe5\xb8\xe2\xb5\x9e\x0d\x8c\xda\xa3\xf0\x8a\x8d\x98\x65\x91\x54\xf9\x23\xcb\xe9\x2f\x54\xae\x3a\xe1\x56\x3e\xd2\x93\x3e\xf8\x1e\xe5\x4d\xdf\x7b\x9f\x3e\xce\x83\x28\x8a\xdd\x59\x0a\x3e\xe3\x81\x3b\x4b\xf1\x2e\x1d\xa1\xda\xf2\x99\x70\x83\xf2\xde\xbf\x33\x73\x62\x8b\x89\x47\xfe\xfd\x21\x16\xf2\x49\x99\xbd\x68\xbb\x06\x2c\xce\xcd\x5a\xd6\x26\x69\xcf\xa2\x3b\x8f\x87\x32\x3b\x02\x8e\x0d\xc7\x36\x88\x49\xcd\x9e\x2a\x65\xba\xbf\xf0\x3e\x0d\x4d\x33\xa7\xa6\xd1\xb6\x99\x41\xe0\x4b\x51\xef\xdd\x66\x6a\x95\x8e\x26\x5a\x21\xd9\x4a\xb2\xf6\x81\x61\x26\x08\xa7\x91\xbd\x8a\x1e\x9a\x0c\x39\x37\xd4\x1e\x1c\xd9\x02\x3a\xed\x82\x89\x9a\xcd\xb0\x17\xb9\x9b\x44\xf4\x79\x14\xb2\x30\x35\xdb\x03\x1d\x59\x5a\x89\x6f\x32\x41\xed\x73\x73\x32\x85\xc7\xd4\x35\xf0\x4c\xdf\x00\xcf\x9d\x4c\xa6\xd3\xad\x8e\xed\x7b\x29\x5b\x44\xf1\xc6\xb1\x0f\x55\x40\x95\x61\x12\x75\xa9\xf9\xca\x6f\xca\xa3\xfb\x4d\x79\x7c\xbf\x27\x8f\xdb\x6f\xc9\xe4\xd3\x9e\x4c\x9a\x1e\xb4\xef\xcd\xe4\x67\x5f\xf1\xcd\x2b\x9f\x4e\xba\xf6\xb0\xdb\x1d\xda\xe0\x0c\xcf\xfb\xfd\xae\x3d\x84\xee\x65\xb7\x3f\xb8\xb8\x00\xa7\x6f\xf7\xfa\xe7\xdd\x0b\xb8\x3c\xef\x0e\x2e\x2e\x06\x70\xe9\x5c\x9e\x3b\x3d\x07\x9c\xfe\xa5\x7d\xde\xeb\xd9\x70\xd1\x1b\x0c\xce\x1d\x07\x9c\x6e\x6f\x78\xe9\x5c\x0c\xc1\x19\x0c\x86\xce\xf9\x60\x8a\x37\x54\x3c\x25\xf0\xbd\x5e\x80\xd3\x1f\xf4\xfb\x7d\xad\x24\x67\x78\x3e\xb8\x1c\x9e\x77\xcb\x22\x6d\xdb\xb9\x18\x5e\x6a\x65\x0b\x10\xfb\xbc\xdf\x2d\x2a\xe1\x74\x2f\x07\x83\x8b\xa1\x53\xd6\xa6\x7b\x71\x31\x70\x44\xb6\x79\xb5\x9c\x61\xb7\xd7\x77\x2e\xfb\x65\xfd\x7a\xf6\x65\xf7\xc2\x3e\xd7\x2a\xda\xef\xdb\x17\x83\x8b\xcb\xbc\xc6\xe0\xd8\x7d\xc7\x3e\xef\x6a\x55\xff\xe4\xd3\x49\x4f\x14\x7e\x7e\x0e\x83\xde\xe5\x60\xe8\x5c\xc2\xb9\xdd\xb7\xcf\x9d\x4b\x70\xec\xee\xb0\xdf\xbd\x18\xc2\x70\xe0\x5c\xda\x97\xe7\x70\xd9\x75\x86\x83\xcb\x3e\x38\xce\xa5\x33\x70\x9c\x01\x38\xbd\xc1\x60\x38\xec\x0d\xe1\xb2\x6b\x77\x2f\x2f\x7b\xe0\x74\xfb\xdd\xe1\x85\x2d\x4a\x74\x2e\x86\x03\xa7\x2f\x3e\x2e\xed\xcb\x5e\x17\x2e\x86\xc3\xa1\x33\xbc\x04\xc7\xe9\x0d\x86\xfd\x4b\x41\x89\xdd\xbf\x1c\xf6\x7b\x02\xe4\xfc\xbc\x77\xde\x85\x0b\xfb\xfc\x7c\x78\xd1\x03\xc7\xbe\xe8\xf5\x7b\xdd\xbe\xc8\xbf\x7b\x31\x10\xd9\xf5\x07\x17\x97\xc3\x41\xbf\xac\xf8\xcf\xa2\xe2\xdd\x7e\xff\xbc\xd7\x83\x73\x5b\x34\x80\x2d\xc8\xb3\x87\xc3\xae\xa8\x97\xdd\xeb\xf6\x45\xb3\x0d\xec\xcb\x81\x3d\xe8\x81\x23\x0a\x3f\x1f\xf6\xc5\x47\x77\xd0\x1d\x5c\x8a\x8f\x5e\xdf\x76\x2e\xa0\xd7\x1d\xf4\xec\xf3\x21\x9c\x0f\x07\xdd\xfe\xb9\xc8\x65\x68\x9f\xdb\x76\x0f\x9c\x9e\x63\x3b\x03\xbb\x0f\xe7\xc3\xcb\x41\xf7\x42\x4c\x45\xbd\xcb\x7e\xcf\xe9\xca\x16\x16\x35\x76\xfa\xbd\x7e\xf7\xe2\xd2\x11\x4d\xd4\x1b\xd8\xe7\x70\x79\x31\xbc\xb8\x1c\xd8\xa2\x21\x7a\xfd\x8b\xf3\x73\x70\xfa\xdd\xf3\x73\xfb\xc2\x29\x6a\x5e\xce\x2e\x7f\x65\x5e\x98\xf2\xc6\xf7\xd8\x01\x8e\xf1\x49\x65\x3a\x91\xe0\x5f\x9a\xc0\x13\x6e\xda\x4d\x33\x50\xba\x8c\x59\xb2\x8c\x82\x59\xd3\x93\x6f\x6e\x4e\xda\x83\xe9\x2e\x12\x9f\xb1\x30\xad\x3c\x5a\x29\x70\x96\xdc\xd4\xc1\xef\x17\x6d\xef\x80\x0f\x0c\xb9\x2c\xa6\x7b\x5c\x4c\x70\xca\xf6\xa4\x44\x74\x8f\x32\xa0\xf5\xda\x07\x8f\xee\xd1\xfa\x13\x89\x3e\x35\x23\x54\x77\xf0\xd1\xfb\x8a\x07\x1e\xf5\x09\x78\x2d\xd4\x01\x7c\x19\x5d\xf9\x63\xc3\x36\x5c\xc3\x31\x72\x77\x50\x7e\x94\x98\x51\xe1\x0e\x2a\xe1\xa1\x08\x2d\xcb\x34\x0f\x8d\x42\xe7\x69\x5e\x79\x57\x7b\x45\xff\xe9\x8f\xc3\xb1\xf1\xc6\x06\xc3\xe2\x96\xf1\x02\xff\xca\xef\x23\xfb\xc8\x01\xe7\x48\xa4\xb4\xf6\x27\x71\x4b\x22\x87\x08\x11\x22\x44\xa8\x20\x6c\x89\xbc\x3f\x29\xb4\x8c\x3f\x0d\xf7\x7f\x56\xfa\x9f\x86\x2b\x08\x30\x2c\x7e\x96\x48\x88\xb3\xf9\x0e\xbc\x61\x05\x96\x01\xce\x91\x48\x5d\x2a\xa8\x85\x65\xfc\x6c\x58\xa1\x0a\x87\x22\x5c\xab\xa6\xc4\x12\xbf\xa1\xca\x3b\x14\x79\x63\x95\xff\x5e\x79\x36\xd8\x86\xc8\x40\x9d\xfb\x2d\x38\x30\xba\xe2\x10\xd3\x19\x87\x8c\xde\x73\xdd\x83\x76\xc8\xe2\xba\x23\xc1\xc3\x67\xc4\xd2\x8a\x5a\xa1\x49\x96\xa5\xbb\x19\x1c\x3e\x0c\x2c\xae\xb1\xff\xa6\x0a\x64\xf5\xbe\xfd\x5b\xd5\x20\xab\x97\xe8\xbb\xd6\x99\xf3\x91\x68\xee\x19\x8a\xd6\x9e\x81\x48\x3a\x5d\xe0\xd4\xdc\x37\x18\xf7\x39\x88\xe9\x74\xad\xd7\x7e\x6e\x66\x59\x73\xb3\x76\x16\x82\xe6\x82\x0d\x4d\x2f\x2b\x35\xb3\xd7\x3e\x6d\xfd\x14\xc1\x3f\x7d\xfa\x31\x6a\xfd\x2b\x1a\x69\x0e\x0c\xf0\xb4\xbf\x2a\x06\x49\x62\x7e\x63\xe6\x9d\xa6\x36\x9d\xdf\x0a\x84\xed\x75\x79\x71\xb6\x2e\xfc\xe2\x85\xed\x4d\x19\xbd\x81\x70\x0b\x1f\x59\xae\xb9\x45\x7f\x62\xf0\x53\x19\xfa\xc8\xca\xb9\xad\xd1\x81\xc9\x86\xa3\x03\x05\x1d\x6a\x6f\x2d\x37\xfc\x79\xb5\xd4\x99\x36\x6c\xaf\x6d\x2d\xd5\xae\xb1\x64\xd8\x5e\x3b\x5a\xb2\xb3\x97\x46\x9d\x0f\xc3\xf6\x46\xcb\x73\x63\xeb\x5c\x16\xb6\x37\x5a\x86\x1b\x47\xe9\x52\x08\xda\x0e\x19\xf0\x08\xcb\x37\x2a\x69\x6e\xea\x37\x44\x3b\x76\x79\x38\xc2\xb0\x22\x5e\x0c\x7c\xbf\xbd\xb2\xad\xd8\xf4\xdb\x31\xf8\xed\x95\x03\x7e\xdb\x73\x5a\x7e\xdb\xb3\x89\x65\x32\x34\x8b\x3b\xce\xf4\x54\xfc\xb0\x89\xab\x45\x06\xed\x18\x02\x11\x69\xc5\xa6\xfa\x16\x91\x9e\xd3\x0a\x30\x9f\xac\x8c\x2d\xf0\x09\x4e\x1c\x95\x97\x26\xfa\x69\x1a\xad\x68\xf9\x02\xa7\x5e\x1e\xce\x44\x38\xa2\xbe\x1e\x16\xcb\x4c\x42\x83\x5a\x54\xee\xc3\x3e\x76\x39\x78\xb6\x1b\x81\xe7\xb8\x09\xac\x6c\x77\xc2\xcf\xf4\x85\x46\x85\xe4\x42\x33\x85\x95\x53\x01\x48\x2a\x00\xe8\xe9\x49\x3b\xe6\xa8\x19\x9f\xb6\xa9\x58\x5a\xed\xd3\xd3\xb0\xed\x39\xf8\xed\xd4\xce\x33\x4b\x15\xe4\xdd\xf9\xf9\xc8\x32\xd9\xd5\xcb\x88\xa8\xc9\x36\x6d\x3c\x6c\x54\xc8\xff\x3e\xb2\x71\x2e\x97\x77\xff\x9c\x7e\xcf\x20\xa2\x9f\x18\x78\xf4\x0d\x07\x5f\xcc\xc0\x41\x65\x06\xae\x5f\xd0\x1d\xf6\xe2\x5a\xcc\x5e\x5e\x93\x67\xa9\xc3\x6a\xb1\x05\x2e\xff\x56\xff\x51\x51\x89\x1b\xfd\x9d\x39\xdb\x2f\xf1\xfd\x6f\x9f\xb3\x83\x12\x3b\xd8\x6a\xe3\x6d\xc6\xbd\x45\x54\xdb\xf5\x55\x86\x9c\xfe\xa6\x46\xbb\x35\x44\xdd\x5a\x56\x8f\xf2\xa8\xc9\xdb\x1b\x2b\x6a\x6f\xc4\x4c\xee\xd3\x09\x87\xc7\xb5\xcb\xdb\x6b\xd8\x88\xc6\x7e\x5c\xbb\x51\xfe\x5d\x9a\xea\xf5\xa9\x8f\x92\x6a\x4c\x00\x87\xec\xc4\x9e\x5a\xc6\x2b\xf1\xe1\x4c\x2d\xe3\x48\x7c\x74\xf3\x8f\xde\x54\x2d\xc7\xdf\x33\x60\x82\x23\x62\xba\xd6\xf8\xe0\x5b\xbc\x84\xd5\x17\xe1\x6f\xe9\xcb\xfa\xfa\xdb\xe4\x1c\xf9\x99\x4f\x10\x76\x7a\x62\xef\xcc\x5e\x83\x33\x09\xa4\x74\xcd\xd1\x2c\x79\x59\xbe\x66\x7f\xe3\xdb\x1c\x36\x33\xf3\x96\x9b\x29\x0d\x89\xa6\xdc\x26\x8a\x4b\x36\x77\xb7\xd1\x7e\xf6\x28\xc6\xac\xf9\x8b\xd2\x37\xaf\xf0\x44\x4c\xc8\xd3\xd3\x35\x27\x26\xab\x47\xab\x7e\x7c\x10\x04\xdc\x68\x5d\x88\xde\x26\xfe\x56\x07\x3e\xff\x56\xb4\xd6\x7d\x52\x24\xf8\xa5\xd4\x9d\x56\x56\xe2\xae\x39\xf8\x71\x94\x24\xbb\x8a\xb3\x9a\xd5\x8b\xb0\x33\x28\x6f\xa8\x05\xff\xb6\x7a\x67\x29\x4e\x7c\xad\xd4\x32\x5e\xcb\x9f\x0f\x79\xf4\x6b\xc3\x52\x41\x19\xc0\xc8\x0f\x18\x59\x24\xe5\x80\x2d\x3d\x49\xa2\xff\x69\x6c\x61\xc6\xbd\xbb\xa8\x49\x9b\xb7\x52\x29\xb3\x7b\xf6\xa3\x4f\xd0\x52\xdc\xd9\x8f\x7e\x51\x3d\x5b\xd5\xeb\x67\xc3\x62\x42\x5e\x36\xc4\xe4\x0c\x58\xc8\x91\x61\xb5\xf2\x38\x51\x0e\x9e\xe1\x37\xa8\x61\xeb\xc5\xd4\x28\x2f\xe9\xfe\x19\xb3\x54\x81\xa3\x3c\xa0\x4a\x29\x02\xa2\x18\x23\x37\x57\xdc\x9a\x45\x0f\x61\x83\xa2\x7f\x85\xac\x3f\x7c\x49\xd2\x1f\xbe\x56\xb2\x20\x80\xe9\x65\x32\xbd\x1c\x11\xaa\x16\x94\xad\xfe\x76\x31\x2d\xbd\x9c\x4a\x31\xb2\x14\xa9\x88\x5c\x8e\x9b\xf7\x9b\x15\x4b\xe8\x2f\x7e\xfb\x33\xdb\x24\xa6\x54\x7d\x78\xe7\xc3\xaf\x3e\xfc\xe1\x6b\x25\xf6\x08\xfc\xa8\xc2\xa9\x17\x9a\x3d\x1b\x9d\x1a\xff\x86\x8a\xc9\x7f\xfa\xd4\x1e\xfd\x26\x25\x02\xfa\xab\x7c\xcb\x03\xbf\xf9\x6d\x76\xb7\x4a\x37\x22\x02\x3f\x44\x4c\x18\xcd\x98\x88\x10\xbf\x22\x8c\x03\xe2\xd7\x08\x7f\x0b\x03\x7a\xfc\xd9\x33\xc2\x3b\x7f\x1c\x6a\x38\x26\x71\x43\xf7\xb7\xa8\x12\xb3\xad\x66\xab\xf9\x8b\xf9\xcd\xc7\x1a\xb0\x80\xf9\x69\xb3\xd7\x96\xdc\x65\x0b\x9f\x01\xa7\x93\xe9\x28\xa4\x33\xdd\xf4\xb4\xba\xfb\xd4\x7c\x9e\xe4\xd7\x9f\x8f\x5c\xbd\x42\xa6\x93\x69\x09\xef\x4b\xc7\x26\xd1\x14\x5f\x6c\x42\x52\xbc\x4d\xc6\x27\x9a\xc9\x88\x98\x31\xf5\x27\x01\x7a\x84\x2a\x6e\x86\x62\x88\xdb\x37\x37\x33\x2f\xf5\x6e\x6e\x20\x80\x88\x90\xb1\x69\xe4\x11\x06\x0f\x8f\x62\x01\x5d\x80\xd0\x12\x9a\xc0\x5b\x6e\x32\x08\x84\x38\xd6\xbe\xb9\x29\xdb\xe0\xe6\x66\x92\x4d\x09\xa4\xe5\x73\x10\xf5\x29\xdd\xbb\xab\xc6\xfe\x81\x9b\x1c\x32\xb2\x2d\x1b\xe9\x45\xcd\x9f\x57\xed\xc9\x43\xd1\x56\x9e\x6c\xab\x7b\xbd\xad\x76\xfd\xc3\xe4\xae\x60\x72\x88\xa4\x70\xfb\xa2\xde\x66\x6b\x80\xf3\xef\x96\x68\xfd\x22\xa6\xc9\x64\x3e\x25\x8f\x9c\xee\x50\x14\x4d\xa1\xb9\xcd\xe6\xe0\x93\xe2\x55\x78\xa5\x3f\xd0\x42\xef\xaa\xd0\xd0\xcd\xcd\xf3\x9a\x19\x65\x93\x85\xe8\x85\xb7\xdc\xcc\x60\x01\x11\xf0\xa2\xb5\x32\xbd\x7d\x3c\x88\x64\xfb\x48\x67\x10\x7b\x99\x68\x32\x1d\x35\xb8\xfe\x0f\xf1\x0a\xe7\xb3\x19\x92\xb2\x4a\xd2\x2b\x90\xde\x4a\xd1\x15\x1f\x71\xcb\x2a\xfc\xac\x57\x49\x90\xee\x8c\x50\xe3\x1e\x5f\xc3\x14\xb4\xe4\xde\x55\xcc\x98\xb2\x89\x37\x45\x1f\x37\xbb\x6d\xe3\x91\xd3\xd3\xb4\x78\xff\x52\x12\x96\x81\xea\x4b\x49\x5e\xfa\xc0\x2a\x4f\xaf\x35\x93\xaf\x12\x6c\x9f\xd3\x82\xef\xba\x63\x84\x10\xc3\xdd\x24\xf5\x2e\x63\x53\x99\x33\x2e\xca\x21\x71\xdf\xaa\xb5\x57\x29\x15\xea\xeb\x64\xba\x17\x37\x66\x77\xd1\x3d\x33\x43\xa2\x69\x50\x89\x15\x7f\x2f\x42\xc2\x52\xa9\x0a\x24\x69\xf3\xd2\x34\xae\x91\xa6\x6d\x2f\xc8\xa3\x34\x55\x89\x85\x94\x76\x36\x75\x93\xe2\xf1\x1e\xa0\xb7\xd7\xa6\xd7\x4e\x56\x9e\xb4\xe9\x13\xf9\x5e\x40\x2a\xfb\x89\x72\xdb\xa2\x8c\x09\x33\xd7\x0c\x2d\x6a\x18\xf5\x2b\xbd\x34\x77\x5a\xb5\xd0\x4d\x7d\x96\xc7\x6e\xec\x98\xd2\x10\x6f\x06\x23\x93\x41\x48\x2a\xba\x71\xd2\x7e\x66\x05\x11\x52\x34\xe6\x2a\xfe\x69\x97\xfa\xbb\xf5\x89\xbf\xa5\x3e\x0d\xd4\xfe\xbd\xfa\xed\x66\x24\xeb\xfb\x7f\xb0\xc2\x7c\xbe\xe3\x20\xeb\xbb\xae\x7a\xeb\x73\xc4\xc3\xa3\x90\x48\x27\x59\x69\x1a\x9b\x29\x84\x93\xb4\x7c\x70\x29\x12\xa4\xf2\x00\xd5\xcc\xa4\x0a\x42\x5f\xc6\xee\x0f\xb1\xd4\x28\x08\x93\xf6\x5f\x99\x17\xf0\xf9\x46\x73\xae\xfa\x99\x4b\xc6\x34\x44\xb6\x6d\xc3\x12\x5b\x41\x55\xb7\x31\x77\xb3\x92\x8f\xde\x37\x8c\x93\xca\x5e\x95\x69\x0a\x43\x9a\xac\x29\x1f\xf4\x54\xfb\x37\xd3\xd4\x63\x4e\x4f\x0f\x77\x69\x06\xca\x3e\x6f\x65\xab\xfb\xfc\xc2\xde\x5e\x9b\x99\x6a\xf3\x4c\x75\xde\xb3\x0b\xdf\xc5\xcd\x2b\x23\xcf\x11\xf6\x35\xaa\x34\x0e\x2b\x1a\xcc\x2c\xdb\x55\xe5\x30\x8e\x5d\xa6\x16\x9e\x74\x13\xd4\x3d\x1e\x68\x6d\x5a\x8c\x3d\x84\x53\x23\xf0\x97\x38\x5a\xb1\x38\x15\x85\xe9\x03\x2e\xad\x31\x78\x2a\x18\x3c\x6d\x62\x70\x31\x65\xdf\x44\xa2\x85\x5e\x45\x77\xab\x2c\x65\xb3\x6b\x91\x7d\x39\x3b\x11\x91\x96\x17\xf3\x41\x2a\x53\x16\x84\x65\xc7\x94\xa6\xf8\xf4\xe3\x87\x58\x4c\xa4\xa4\xe2\x6a\x43\xab\x6d\x52\xe6\x21\x76\x29\x42\xda\x67\x72\x58\xca\x95\x60\x47\x0f\x80\xcf\xcd\xde\x95\x74\xb3\x98\x9b\xd6\x2e\x17\x13\xf2\xd8\xbd\x42\xfb\x22\xd4\x30\x94\x7d\x37\x6d\x40\x60\x89\x62\xf4\xa1\x4f\x8e\xea\x98\x60\xd4\x30\xb6\x75\x56\x97\x55\x94\xbc\x9e\x69\x7d\xb1\xcb\xe2\xb5\x0e\x89\x9b\xb7\xe3\x42\x46\xf8\xf6\x36\xd5\x6d\x91\x3c\xab\x15\xb9\x6a\xc5\xed\xbe\x05\xa9\x87\xb2\x95\x61\x10\xd0\x19\xb0\xa4\x36\x56\x2b\x1e\x5b\x37\x5a\x29\x29\xda\x47\x00\x18\x10\xc2\x0b\x2e\x11\x24\xeb\x35\x1c\x8c\x62\x31\xcc\xf3\x97\xa6\xc1\xc2\x99\x26\x89\xee\xb0\x5d\x38\x42\xd8\xea\xba\xd5\xf6\xa3\x2c\x4c\xbf\xeb\xa2\xac\x80\xe9\xf2\x8d\xcf\xdb\x68\xc6\x70\x51\x97\x05\xbf\x5a\xf2\x60\x26\xdd\xed\xa9\x75\x6d\x8f\x95\xee\xaf\x2d\xd8\xce\xa1\x05\x3b\x9d\x62\xb6\xae\xb9\x57\x9a\x51\xe6\xc1\x9b\xb4\x3c\x08\xa8\xf5\x5d\xdf\x39\xb3\x3d\x45\xd0\x70\x4b\x24\x1d\x33\x16\x34\x7a\xd6\xab\x11\xa2\xf2\x6e\x34\x3e\x57\x16\x28\x0d\xb0\x34\x15\x2a\x8b\xb1\xc2\xdc\x18\x4e\x29\x51\x23\xce\xd6\x95\x86\xe1\xbe\x56\x77\x99\x4d\x59\xf9\xac\xae\x3f\xfd\xff\xac\xfe\x79\x49\x85\xfe\xa4\x03\xfb\x88\x91\xd4\xe8\x80\xe4\xeb\x84\xe5\xf9\x17\xb4\x09\x9e\x3e\x28\x13\xee\x59\xab\xe5\x9a\xf4\xab\x0f\x19\x7d\xe7\x8f\xde\xf9\x94\xed\x30\x46\x2a\xe9\xfc\xd5\xa7\x0d\x72\x5f\x4e\x56\x0a\x69\xad\x8f\x08\xfc\xea\xd3\x18\xde\xf9\x34\x93\xcf\xfb\xea\xf9\x16\x87\xdb\x0d\xd2\xe1\xc8\xcc\xa4\xf5\xd5\xa7\xa7\xfc\xab\xd9\xca\x2a\x9a\x57\x25\x68\x09\x4b\x8a\x91\x95\xc9\x14\x27\x8f\x86\x4d\x6c\xc5\x11\xe9\xce\xde\xd2\xb2\xfe\xf4\xf5\x47\xed\xfa\x06\x20\x97\xe4\x1f\xf3\xf7\xb1\x95\x0d\x80\x64\xa4\x89\x87\x4f\x23\x20\x29\x1c\x2c\x8e\x92\xab\x60\x14\x88\x0d\x00\xa3\xa9\xda\x53\xc6\x54\x3a\x92\x50\x76\xe8\xcd\x9d\x7e\x16\xbb\xc2\x58\xf2\xb0\x45\xe3\xa2\xcf\xf3\x7d\x24\x87\xb8\xf4\xa0\xc9\xf4\xfd\x42\x94\x7b\xb2\xc0\xbb\x9f\x35\x4f\xf6\xdb\xfd\x0d\xe5\x64\x58\x9f\xfb\xa4\x39\x1a\xb9\xcf\xac\xb8\x0d\x6d\xdf\xdc\xf8\x4b\x2f\x4e\x6f\x6e\x9e\x9e\x18\xcc\x6b\x71\x94\xb5\xfd\x68\xb5\x31\x09\x2c\x95\xca\xa2\x3f\x9e\xa3\xfd\xc5\x24\xff\x55\x73\xd1\x1c\x2d\x6f\xe6\xfa\x54\xc4\xf5\x61\x51\x3c\x5f\x92\x90\xff\x44\x1d\xaa\x4a\x40\xc7\x9d\xa5\x6e\x0a\x2b\x1a\x94\x9b\x61\xd3\x40\x50\x43\xba\x86\xc2\x97\x72\x30\xa3\xab\x36\x0b\x53\x16\x9b\xa4\xcd\xc3\x84\xc5\xa9\x69\x2c\x0c\x30\x54\xc1\x06\x91\xb2\xa9\xe1\x07\x5e\x92\xe4\x36\x7b\x89\x5a\x9f\x8d\x68\xe5\xf9\x3c\xdd\x18\xf0\xaf\x88\x48\x93\xef\xda\x51\xc6\xaa\xcd\xd6\x3c\x35\x49\x23\x74\xbe\x0f\x22\x70\x57\x47\xdb\x85\x77\x08\x6c\xe8\xcb\xcc\x9c\x13\x78\x53\x23\xa8\xa8\x26\x92\x84\x4e\x4f\xd7\xd4\x7c\x53\xd0\xe4\xad\x56\x2c\x9c\x99\xc6\xca\x4b\x97\x3b\xc4\xe4\xc8\xd5\x23\x17\xf3\x0d\x21\xa3\x59\x81\x19\xf0\x90\x19\x04\xca\x08\x5c\x4a\xe5\xb9\xd3\x2d\x9d\xe5\x3c\x90\xc3\xdd\xd0\xbb\x7a\xd4\x03\x5d\x15\x51\x12\x19\xd7\x6b\x73\x41\xe0\x5a\xcb\x40\x26\xc1\x0f\x5a\x06\xaa\xa8\xe4\x81\x8b\x21\x1d\x93\x47\xdf\x4b\x98\x71\x1b\xa5\x69\x74\x67\xb8\x21\x7d\xcf\xe1\x56\xd1\xb4\xe9\x1a\x90\x11\xb8\xce\x83\x06\x14\x13\x66\x06\x36\xb1\x22\x02\x37\x2a\x6d\xdd\x35\xc0\x26\x55\xbc\x1f\xf2\x34\x3d\xa9\x21\x8f\x07\x95\x36\xdb\x08\x26\x39\x77\xd8\x5d\xc9\x0d\xa2\xb6\x2d\x2f\xf4\x97\x51\x6c\x80\x71\xc7\x67\xb3\x40\x90\xbf\xce\x51\x0c\xbc\x8c\xd8\xe0\x65\x84\xd4\x15\xf8\x60\xbf\x16\x11\xce\x14\x8f\x65\x39\x19\xdd\xc6\xcc\xfb\x3c\x42\x2a\xd3\x68\xd5\x40\x62\xab\x4a\x63\xcb\xac\xd7\xf0\x00\x99\xad\xfd\x74\x36\xe5\x53\x21\xd5\xfe\x1f\x10\xda\xda\xa1\xb4\x55\x25\x35\x60\xf3\x54\xd0\xfa\x57\x49\xeb\xba\x46\xeb\xfa\xeb\xb4\xb6\x32\x9d\x58\xbb\x42\x6b\x03\x6e\x49\xbc\x5d\xef\xd6\x5e\x77\x3f\xb5\xd2\x5a\x77\x8d\xd4\x96\xd4\xfe\x90\x14\xbf\xb6\x3f\xe4\xa4\xbe\xde\x21\x35\xe6\x8b\x65\x13\xad\x55\x52\x0f\xb2\xee\x01\x32\xeb\x78\x7f\x93\x46\xb9\x74\xee\x50\xb9\x9f\x48\x8e\x3b\xfd\xb9\xd4\x59\x7c\xe9\x85\x33\xb9\x4a\x7c\xa6\x5a\x94\x49\x3a\x5d\x78\xd1\x24\xa4\xcf\xcd\x90\x58\x9f\xb7\xa3\x59\x7e\x1f\xfd\x82\xc0\x5d\xf9\x2d\x65\x83\x22\x31\xd1\x12\xe7\x04\xee\xcb\x6f\xb5\x13\x53\x0f\x39\x6b\xaa\xad\x31\xfd\x20\x44\x98\x21\x70\x3a\x84\x88\xf6\xc0\xa3\x13\x07\x9f\xc8\xea\x5e\x3c\x43\xa5\x50\xfc\xcc\x3b\x9f\xf2\xfd\x5c\x14\xf3\x8a\x6f\xac\xaf\x5c\xd5\x89\xad\xde\xef\xfe\x38\xb5\x0c\xc3\xfd\xe0\x17\x4a\x33\xb8\x00\x36\x99\x20\x6d\xb8\x72\x2e\xbd\xe4\xe4\xd7\xce\x02\xfb\x43\xcd\xf2\xd4\xe1\xeb\xdf\xb4\xb8\xfa\x2d\xd7\xd0\x6f\xb7\x5a\x25\x70\x77\x1e\xfd\x1d\xd6\x8d\x67\x63\x33\xa3\x56\x2a\x44\xa9\x02\x44\xba\x75\xcf\x35\x80\x50\x99\xe4\x7d\x53\xce\x07\x94\x88\xac\xf2\x81\x2d\x6a\x9b\x7c\x1b\x3e\x57\xf8\x3c\x27\xea\x97\x6f\x79\x4b\x1b\x29\xec\xa8\x68\x92\xec\x76\xc6\xef\xf9\xac\xd1\xf2\x6c\x0d\xfd\xf4\x34\x2c\x6e\x0d\x3f\xf8\x34\x5f\xe2\xe0\x77\x9f\x3e\xa6\xd1\xca\x75\x00\x27\x0e\xd7\x01\x99\xe2\x3a\x20\x26\x4d\xd7\xd9\xe6\x97\x43\xb7\x71\x96\x2c\xf7\xdb\x38\xe4\x8d\x62\x1c\xaf\x0b\x71\xf9\x7c\x80\x3e\x13\x58\xdc\x42\xb9\x5a\x88\x0a\x5e\x10\x94\xb3\x45\xeb\x81\xdd\x7e\xe6\x69\x2b\xf5\x56\xad\x25\x5f\x2c\x03\x51\xb7\x96\x1f\x05\x38\x7b\xc4\x8b\x5b\xcf\xb4\x01\xff\x11\x43\x33\x41\x3b\x8b\x1e\x42\x59\x4f\x9c\xc4\x44\x7c\x1a\x65\xfe\x52\xda\xc3\x2d\x12\x20\xa2\xbc\x22\xe3\xdc\x7a\xfe\xe7\x05\x3e\x2f\xd1\xe5\x9c\x51\xb4\x23\xe4\xc4\xcc\x4f\x77\x84\x9c\x0a\xb6\x22\xe0\x9e\x27\xfc\x96\x07\x28\x5c\x19\x4b\x3e\x9b\xb1\xb0\x4c\xf4\xb3\x38\x41\x42\xf0\xa6\x76\xe9\xf1\xd8\x20\x50\xad\x91\xf4\x84\xa7\xd7\xe6\x79\x75\x29\xf0\xea\x45\x09\x59\x50\xc9\x54\x5e\x8d\xfa\x98\x25\xfc\x0b\xcb\xcb\xba\x87\x59\x4a\x46\x9e\x12\x2d\x4b\x29\xd2\xdb\xa9\xc0\xa2\x5e\xfa\xee\xcc\x6b\xc8\xbc\x8f\x0c\x2b\xdc\xee\xd4\xa9\x61\xa2\xfe\x87\x3f\x09\xa7\xdb\x3d\x34\xae\x9b\x50\x3a\x13\xf6\x30\xfd\x87\xf2\x17\x17\x92\x71\xab\x27\xdf\xf7\x6a\x2b\x53\x03\xd2\x7f\x26\x61\x32\xdd\x8f\xf4\xc0\x67\xe9\xd2\x80\x61\x1e\x5e\xa2\x85\x6e\x8c\x38\xd4\xbf\x68\xe1\x19\x93\xc5\x26\x31\xf0\x36\x06\x84\xf2\xa6\xd3\x24\x63\x23\x8c\x42\x66\x60\x39\xea\x35\x39\xcc\x6b\x82\x39\x17\x9b\x96\x6a\x54\x44\x46\x3e\xbe\xf4\x7b\x29\x5f\x9c\x97\x4d\x91\x20\x53\x54\xea\x9b\x4c\x9c\x69\x0b\xe3\x81\x99\x73\x42\x20\xc8\x51\x83\x12\x75\x53\x45\xcd\x49\xd3\x70\x63\xc4\x4d\xcd\x79\xe5\x42\x40\x79\x29\x69\x64\x1c\x99\x95\xe6\x6a\xac\x81\x13\x74\x3f\x60\xc9\xc4\xea\xb0\xb2\xd3\xa4\x10\xb7\x9c\x58\x9d\xff\x24\x7a\x24\x31\xb6\x95\x17\x6c\x5a\x05\xf4\x21\x52\x6d\x12\x08\x1b\x06\x12\xb4\xc3\x2b\xc1\x4b\xd0\x4e\xae\x2a\x3c\xb5\xd3\x72\x95\x13\xf3\x43\xe5\x6d\x0c\x58\x1e\x28\x8f\xa9\xf2\x1e\xaa\xe5\xe5\xcd\xbd\x14\x05\x2e\xab\x05\x66\xfa\x9c\x2a\x02\xbd\x2e\x2d\x5d\xc0\x7c\x66\x9b\x57\xd1\x8c\x9d\x9e\x9a\x6f\x9f\x9e\xcc\x37\xf2\xf9\xda\x5f\x13\x7b\xda\x42\x7b\x5a\xf0\x97\xc8\x91\x8a\x7c\xe1\x2d\xed\x12\x98\x9b\xba\xa9\xa2\xc5\xde\xec\xba\x94\xbe\x3d\x3d\x35\x45\x4e\x56\x99\x93\x95\xe7\x64\xd7\x32\xba\xd7\x55\x7b\x70\xd2\x35\x6f\x89\x34\x13\xb0\x3e\x3d\x45\xcf\xfa\x16\x5d\xa3\x6d\x02\xcc\x66\x8d\xb6\x31\x45\x95\x8b\xa2\xbd\x20\xfd\x2f\xb6\x19\x9b\x6f\x90\x8e\x89\x29\xda\xdd\x4a\xd0\x8a\x5c\x17\x4c\xd1\x28\xd6\x52\x86\xa6\x04\x29\xa4\xc9\xc4\xc2\x9c\xbf\x7b\x23\x5a\x4c\xd6\x90\x2e\x31\xd2\x11\x91\xce\x94\x4c\x89\x2b\xdb\x84\xc0\xe7\xd3\xd3\x3b\x33\x04\x1f\x6c\xbc\x37\x37\xaf\xb1\x7e\x36\x81\x17\x32\x21\x00\x07\x0f\x3f\xca\x84\xec\xf4\xd4\x4c\x45\xf0\x21\x77\xe7\xa0\xd6\x8a\xbb\x68\xc6\xdc\xb7\x63\x39\x7b\xba\x6a\x36\x33\xb6\x7a\x83\xdc\xe5\x47\xde\xea\xa2\x00\x3c\x31\xe0\x52\xcd\x40\x85\x27\x5a\x72\x4e\xff\x9a\xb0\x29\x2c\x28\x1b\x2f\xdd\x04\xee\xe9\x42\xf4\xd7\x42\x7b\x25\x2b\x7a\xc1\x6f\xd1\x39\x04\x2d\x7a\x6f\xcd\x85\x40\x69\xb2\xf1\xcc\x5d\x91\xf2\x09\xb4\x0f\xe5\x8b\x76\x90\x3e\xe5\xa4\x57\xed\xb7\xe3\x8c\x9a\xb1\x45\xe7\xc4\xba\x77\xcd\x37\xa7\xa7\xe6\x9c\x36\x63\x75\xcf\xde\x4c\xd8\xb4\x15\x13\x42\x20\xbe\x9a\x0b\xa1\x26\x86\x98\xce\x89\x9b\xd1\x39\x01\x51\xa3\x63\x1a\x3f\x3d\x89\xfa\x1d\xd3\x6c\x6c\xb2\xb1\x7c\x2b\xe9\x72\xc9\x73\x68\x9b\x30\x06\x91\x4e\x33\x38\xb6\x89\x2b\x4d\xbc\x97\x4d\xb2\x11\x3c\x62\x8a\xfd\xc6\x57\x16\xfb\xa6\xb9\xe4\x79\x33\x28\x94\x62\x85\x71\x1b\xcd\x36\xbb\x2b\x9e\x04\xfb\x52\x0a\x07\xa2\x0f\x73\x19\x40\xde\x2f\x14\x49\xd9\x6a\x37\x01\x05\x87\x66\x1c\x4c\x62\xe1\x6c\x37\xe5\x33\xdb\xe8\x32\x48\x25\xa1\x56\x08\xbc\x37\xeb\xfc\x26\x76\x7e\x6a\x8b\x21\xfd\x22\xe1\x61\xe5\x8d\x26\x42\x15\x63\x28\xf7\xae\xf1\x40\xbd\x76\x34\x37\x6f\xf5\x87\x21\xd7\x1a\xc2\x2d\x81\x1f\xe8\x8d\x58\xd9\xb3\x3b\x93\xc0\x67\x7a\xdc\xf9\x8f\x19\x3e\x25\x24\x9f\x7d\x7f\x20\xa7\xa7\x3e\xbc\xc0\x78\xf6\xf4\x50\x89\x0f\xe0\x2d\xbd\x69\xe3\xe2\xce\x66\x66\x21\x5b\xc0\x7b\xfa\xb3\x49\xe0\xaf\xca\x0c\xf0\x45\x2b\xf4\x26\x6a\x6c\x8d\xac\xa1\x29\x16\x68\xac\xbf\x20\x4b\x5a\xb8\x9a\xbd\xc7\x06\x4e\xc6\x5f\x9a\x7b\xe2\xbe\xb9\x1b\x36\xc4\xdd\xd3\xdd\xf7\x8d\x7d\xbd\x11\x1c\x8a\x8c\x19\x67\x2b\x21\xeb\x68\xfc\x78\x66\x10\x3d\x09\xde\x12\x35\x11\xd9\xd3\x96\xf8\xca\xa7\x20\x0c\x3a\xd3\xc2\xdd\xf6\x0f\x72\x1e\x78\x45\xad\xce\x43\xd9\x94\xf0\x3d\xb5\x3a\xff\x09\x8b\xf0\x68\x4d\x27\xc9\xc4\x69\xbd\x52\x99\x2d\x27\x4e\xeb\x7b\x99\xd3\x34\x9f\xf1\x5e\x15\x65\x7c\x3f\x95\x1b\xd4\xda\x04\x8a\x0e\xa5\xfe\xca\xad\x47\x90\xd1\xfe\xd1\x86\xe3\xe6\xb9\xc3\xed\x79\xa3\xeb\xa6\x16\x41\xea\xbc\x2c\x77\xf8\x5b\x02\xf7\xca\x63\x99\xf4\x55\xb6\x30\x43\xd0\x01\x20\x9f\x69\xcb\x11\x40\xd4\x8e\x19\x02\xf9\x93\xd0\x89\x0d\x68\x27\x55\xfe\xae\xe8\xb1\x0d\x33\xf1\xe7\x9e\xbe\xf4\xb5\x09\x34\x54\x87\xf4\xba\xf0\xb1\xe7\x70\x59\x8e\x9a\xfa\x8b\xaa\x94\x3e\xae\xdd\x04\x36\xee\x12\xb8\xcb\xe1\x93\xd8\x69\xb1\x9d\x33\xe7\x74\x54\x3b\x71\x4e\xe1\x9d\x3f\xae\x6f\x73\x74\x8d\x33\x75\xdb\x57\xd9\x85\x68\x35\xe2\x94\xb5\x39\x6a\x26\x7f\x82\x04\x4d\x54\x2c\xd1\x44\x45\xd8\xd8\xa0\x5b\x92\xdf\x51\x62\xb4\xbb\x9b\x9f\xdc\x18\x7f\x8e\xcd\x04\xd2\xf6\x5a\xac\x23\x9f\x63\x73\x09\x69\x7b\x53\xde\x9e\x52\xf5\xfe\xbd\x40\xcb\xc8\x63\x42\xd1\xe9\x80\x89\x06\xe1\xd2\xf6\x86\xc6\xe2\x33\x6c\x5a\x12\xcb\x95\x70\xbb\x25\xda\x65\x66\x13\x71\x29\x12\x97\xb6\x3f\x7d\x2d\xab\x5a\xba\x9a\x0d\x89\x6b\x36\x37\xc4\xdf\xca\x0e\x2f\x43\x9f\x6d\x51\xda\x47\xa7\xfa\x2f\xfd\xc9\xb1\xff\xdd\x77\xce\xd3\x71\x30\x2d\x8e\x33\x9e\x69\x60\x3a\x68\xcc\x21\xc0\x17\x48\x81\x77\xb7\x7a\x66\x3d\x4e\x4f\x83\xb1\xb9\xa2\xc7\xc7\xa9\x98\x2e\x66\xf8\xe1\x4c\x89\xeb\x8f\x31\xd2\x0d\xd0\xc3\xdd\xf1\xb1\x52\xb5\x17\xe0\x93\x15\xcc\xa6\x02\xc0\x0d\xc6\x33\x65\xf3\x28\xdc\xf1\xb0\x9e\x6a\x46\x02\xc0\x83\xf9\xbe\x6b\x60\xac\x03\xde\x1c\xd9\x53\x88\xa9\x28\x1d\x77\x17\x8c\x32\x19\x13\xa3\x2c\xcc\xe9\x84\x41\x3c\x05\xbf\xcd\xc3\x7b\x16\xa7\x08\xe1\x9b\x4c\x30\xa1\x6f\xc6\x84\x00\xbb\x8a\x51\x38\x61\xc0\x94\xdc\x01\x26\x3b\xc6\x89\xf5\xe9\x29\x3e\x46\x09\x54\xda\x36\xc1\x9c\xd4\x26\x26\x93\x05\x7b\xb2\x60\x1f\x63\xd0\xe2\x9c\x87\xd2\x95\xd8\xd1\x4f\x32\xf0\xa6\x10\x94\x05\x67\x34\x30\x51\xbd\x3f\x30\x3d\x42\x20\xc3\x17\x8f\x73\x9a\x41\x86\x2f\x1e\x45\xc1\xd9\x31\x4e\xe1\x4f\x4f\xde\x31\xca\xbb\xa2\xe0\xa5\xcc\x89\x60\x4b\x22\xd5\x7c\x6c\x32\xca\x25\x99\x1c\x9b\xdd\x64\x58\x61\x88\xa5\xc0\x5c\xa5\x56\x05\x14\xd1\x79\xa8\x99\x76\x45\x5e\x24\xa4\xb0\x48\x52\x18\xc9\x12\x32\xac\x19\x78\x52\x0e\xaf\x92\x95\xe7\x29\xa9\xcb\x43\xcd\x44\x12\x74\x7b\x13\x8c\x27\x13\x06\x19\xfa\xb6\xf7\xa6\x82\x2d\xb0\x75\x05\xdf\x48\x6a\x25\x43\x36\x1b\x2f\x28\x24\xb0\xa7\x27\xb3\x3e\x19\xe7\x13\x09\x7a\x3f\x51\x80\xbb\x59\x1c\x1f\xfb\xa7\xa7\xa2\xc5\x28\x36\xd8\xd3\xd3\xf1\x71\x70\x7a\xba\xc4\x08\x41\x9f\xee\x1a\x28\x04\x4f\x77\x0d\xf4\x0f\x9f\x3e\x86\xae\x11\x26\x2d\x35\xb0\x81\xb9\x06\x7b\x28\x42\x49\x25\xed\xa1\x92\x16\x3e\xb8\x46\xf8\x90\xb0\x32\x82\xb9\x46\xc8\x12\x0d\x9b\xd5\x20\x92\x87\x2a\xc4\x16\x5e\xfa\x74\x32\x31\x42\x03\x0c\x66\x80\x21\x96\xd3\x07\xb1\xa4\xe2\x1f\x8c\xc1\x3f\x0f\xc6\x14\x26\x08\x21\xbf\x42\x84\x9d\xc2\x64\x3a\x85\x8f\xa8\xa4\x9f\xf2\x3b\x46\x1f\xb7\xf0\x93\x4f\xbf\xf7\x52\x06\xff\xf2\xe9\xc4\xb8\xce\xc2\x99\x58\x75\x8d\x37\x91\xfa\x78\x9f\xb1\x44\x7e\x7d\x64\xb3\x30\xff\x7e\xbf\xcc\x62\xf5\xf9\xcf\x98\xcb\x8f\x6b\x2f\xcd\x62\xf1\x39\x1d\x7d\xe1\x9a\x16\xf3\xe3\x82\xa5\xa2\x84\x26\x13\x8b\xb8\x70\xb5\x17\x2c\xfd\xed\xfd\xab\xef\xa5\xab\x6f\x40\xf0\xcd\xd7\xa1\x37\x0a\xf8\x9f\x59\x10\xfc\xc1\xbc\xf8\x6b\x18\x39\x9c\x42\x7b\x1d\x65\x71\xf2\x35\x1c\x04\x52\x08\x6f\x78\x10\xf0\x84\xf9\x51\x38\xfb\x2a\x9e\x0e\x5b\xa0\x87\x59\xca\x9e\x81\x89\x60\x39\x52\x14\xa6\xcb\xaf\xa2\x08\x20\x85\x70\xfd\xbc\xfa\x5d\x57\xaa\xf6\x9e\xdf\x1d\xee\x1d\x01\xa0\xc1\x7e\x89\x42\xf6\x0e\xdd\x2b\x34\x60\xd9\x5b\xe9\x0c\xe5\xdd\x7c\x7f\x96\x0a\x40\x64\x99\xec\x32\xc7\x7f\xf9\xed\xa4\xe0\x08\xed\xb5\x6a\xfb\x46\x13\x8e\x14\xe6\x66\x0f\xe2\xe6\x20\x5e\x13\xcb\x14\xc8\x79\xe2\xc1\x1c\x76\xb8\xa7\x40\xc7\x94\x83\xb8\xfb\x18\xa9\xc8\x42\x07\xf8\x4a\x4e\x3b\x3c\xa5\x65\x82\x69\x87\xf1\xeb\xec\x55\x62\x8b\x94\x83\xb8\x0d\x9c\x56\x60\x5f\x3f\xa3\xee\x75\xa6\x93\xc8\x22\x76\x2f\x9a\x9c\x81\xff\x4b\x4e\x58\xe5\x0c\x03\xff\xf6\xa9\x71\xe2\x1d\x9d\xdc\x1e\x9d\xb0\xa3\x93\xdf\x8f\x4e\xfe\x30\x20\x0c\xa8\x71\x72\xd7\x39\x99\x75\x44\x28\x15\xa1\xd7\xee\xc9\x1b\xf7\xe4\xda\x00\x16\xfc\xaf\x4d\x75\x10\xab\xbc\x64\x46\x32\x17\x99\x83\xc4\x95\x68\x12\xc7\x98\x42\x26\xc0\x7f\xf2\xc2\xcc\x8b\x31\x47\x76\x1b\xab\xcf\x37\x5e\xec\x8b\x7d\xc7\x8b\x55\xcc\x03\x0c\x8b\xd8\x9f\x32\x9c\xd4\x7f\xca\x02\x11\x7a\x91\x2d\xb2\x44\x6c\x52\xae\xd9\x2a\x65\x68\xd4\x0a\x8c\x77\x7e\x1a\xc9\xaf\xb7\xd1\x7d\x1e\xf9\x3d\xf3\xe5\xe7\x14\xb8\x2a\x52\x16\x27\x4b\x92\xe5\xe8\xa5\xc8\x42\x64\x19\xb2\x00\x99\xb5\xcc\x56\xe6\x68\x4c\x47\x1f\xfd\xf6\x46\xac\xca\xaf\xb8\xd9\x70\x5c\x1e\xd2\x8f\x7e\x7b\xe6\x6d\xcc\x50\x1e\x43\x4a\x06\x33\x6d\x70\x70\x3d\xae\xea\x62\x21\x40\x31\x29\xa3\x8e\x7d\x39\x45\x5b\x29\xd9\x36\x1d\xc8\xd7\xc0\xb6\x04\x54\x8d\x12\xaa\x3e\xe4\xfd\x6b\x11\xdd\xce\x52\xbf\x48\xca\x52\xbf\x4c\x9e\x79\x9b\x3a\x19\xca\x4e\x2b\x7b\x38\xfa\xc9\x37\xbb\xac\x07\x9a\xcf\xbb\x43\xb5\x05\x0c\xab\x79\x58\x06\xe4\x6a\x46\x20\x6d\x24\x1b\x53\x35\xb8\x83\xe4\x4a\x90\x96\x23\x89\x9d\x79\x9b\x44\x35\x73\x85\x96\x82\x52\x91\x50\x27\xf4\xdd\xfc\x8f\x8a\x2c\x55\xd0\xaa\x5a\x46\xd3\x0e\xd6\xcc\x2a\x99\x61\x2b\x6d\x0d\x59\xff\x4c\x56\xb5\x3a\xf5\x9b\xa4\x95\x36\xc5\x12\xd2\xb9\x18\xf6\xd9\x80\x6c\xe1\x5f\x7e\x83\x07\x2d\x6c\x03\x1a\xb6\xd3\xe8\xe7\xe8\x81\xc5\xaf\xbc\x84\xe1\x2b\xcc\xf3\x56\x6e\xa4\xfe\xa3\x3f\x09\xa7\xcd\x1c\x66\x6a\x1c\x46\x9a\x1a\xb2\x95\x07\x36\xd8\xa8\x27\xe7\xfb\x18\x6f\xa7\x07\xce\xcf\x34\xca\x53\x52\xeb\x8f\xbc\x66\x79\x6b\x15\x85\x34\x35\x9b\xde\xe6\x66\x48\x2c\x93\xc9\xaa\x74\xce\x49\x4b\x6c\x2e\x28\x2a\xe5\x09\x32\x2d\x21\x94\x51\x56\xf4\x95\x8a\xc1\xae\x64\x95\x5e\x14\x29\x32\x47\x63\xba\xd3\x8f\xff\x1b\x35\xdb\x4a\xf6\x7a\x60\xec\xb3\xc8\x2d\xc1\xe9\x31\x8f\x49\xca\xa8\x92\xaf\x30\x21\xe7\x3a\x95\x58\x61\x3c\x01\xa0\x38\xaf\x80\x90\x61\x91\x2a\x2d\x82\xd1\x4f\x1c\xbb\x3d\x0a\xe8\x6b\x6e\xb2\x80\x80\x17\xd0\x7f\xca\x2f\x1f\xe3\xe2\x80\x40\x80\x71\xe2\x2b\xc1\xb8\x2c\x20\x30\xc7\x38\xf1\xb5\xc4\x38\x1e\x10\x58\x60\x9c\xf8\x5a\x05\xb4\xf3\x9f\x93\x0e\xcc\x02\xfa\x68\xb4\x0c\xd7\x30\xe0\xc6\x35\x8e\x0c\xb0\x5d\xc3\x36\xb6\x70\x1f\xd0\x47\xaf\xc9\x48\x5b\x1c\x4c\x4a\x16\x9a\x6e\xe1\x45\x13\x10\xab\x01\xdd\x36\x01\x71\x05\xa4\xe6\x85\xe9\x16\x5e\x36\x81\x65\x3b\x60\xbe\xfb\x89\x9b\xff\xf6\x09\xcc\x9a\xfd\xd6\xfd\xc2\x75\xce\x85\x14\xba\x64\x0b\xec\x1b\x60\x5f\x1f\x86\x55\x52\xaf\x02\xfe\xf1\x59\xc0\x27\x4e\xf7\xe9\xc9\xe9\x2a\x9c\x4f\x7b\x71\x1c\xab\xc6\x83\x90\x42\x8f\x6c\xe1\xe7\xc3\xa5\x54\x05\x6a\x85\x73\xf7\x15\x1c\xd9\xa0\x96\xa3\x2a\xf5\xe6\x6b\x45\x28\xc9\x5b\x81\xaf\x9a\x3a\x4b\x27\xf9\x8a\x3a\xdd\xb1\xf1\xcb\x1b\xc3\x35\x5e\xbc\x31\xb6\x70\x7d\x38\xff\x6b\xad\xf6\x22\xff\xdf\xf6\x82\xd7\x06\x8b\x6c\x24\x81\xf2\xb0\xb7\x4a\x6a\x3b\xf4\xf1\x50\x9e\x77\x51\x53\x9e\x6b\xc1\x6c\x61\x40\xe0\x77\xf1\x91\x06\x04\x36\x87\xe9\x28\x97\xbd\x13\xc7\xb6\x55\x2e\x7f\x3c\x1f\x87\xf5\x21\x85\x3e\xd9\xc2\x9f\xae\x17\x81\x71\x62\xec\xee\x13\x8c\x13\x63\xbb\x85\x3b\x1c\xa2\xef\x38\xbc\x70\x7f\xe5\x70\xeb\xfe\xc9\xe1\xa5\xfb\x81\x83\xef\xfe\xce\x61\xe6\x86\x11\x30\xf1\xe7\xb5\xcb\x22\xf8\x51\xfc\xf9\xe4\xa6\x11\xfc\xec\xf2\x08\xee\xdc\x7f\x73\x78\xe3\xc6\x11\xac\xdc\x28\x82\x6b\x37\x8b\xe0\x37\xf7\x47\x0e\x0f\xee\x1f\x1c\x3e\xba\xbf\x71\x58\xbb\xff\xe0\xf0\xbb\xfb\x92\xc3\xc6\xfd\x89\xc3\x1f\xee\x47\x0e\x7f\xba\xff\xe2\x58\x23\x3f\xda\xc2\x46\xcc\x20\xff\x9d\x9c\xfd\xf7\xcc\xea\xc0\x9b\xa0\x78\xd8\xee\xdd\xb9\x36\xac\xee\x5c\x67\x4b\x46\x9f\x38\xce\x7f\x41\x84\x73\xd8\x3a\xa0\x41\x64\x1a\x27\x7f\xb4\x4e\xee\x5a\x27\xb3\xf7\xb9\xc4\xd9\x3e\xf9\xf9\x4f\x03\x81\x79\x12\xd5\x84\xd7\x76\x1a\xfd\x78\xfd\xee\x1a\x1f\xcb\x9c\x9e\x5a\x42\xf6\xc0\xa1\x6a\x74\x6d\xdb\x6e\xd9\x4e\xcb\x76\xde\xdb\xb6\x8b\xff\xdb\xb6\x6d\xff\x69\x90\x71\x12\xb9\xeb\x00\x92\xa8\xbd\xf2\xe2\xc6\x37\x14\x45\x2e\xe5\xb2\x2e\x6d\x7c\xa7\x44\x9a\x2e\x4f\xb7\x02\x3d\x8d\x64\xb9\x74\x1d\x14\xdf\x62\x66\x96\xe3\x6c\x9f\x8c\x27\xa5\x23\x87\xf5\xf4\x05\x33\xec\x38\xac\x57\x5d\x34\x8b\xa5\x16\x77\x8f\x61\xb9\x8f\xb4\x6a\xb8\x3b\x8b\xad\xce\xd8\xe5\x4e\x95\x94\x55\x93\xcb\x11\x7e\x96\xab\x4d\xbe\x61\xca\x17\x24\x99\x5c\x59\x90\xee\x70\x88\x1f\x26\x4c\xc8\x3b\x15\xc2\x86\xac\xff\x5c\xc2\x6a\xb8\x07\x09\x2b\x37\xfa\xa4\xac\x1a\x12\x26\x3f\xeb\xb5\x2e\x08\x53\xc9\x15\xc2\x96\x51\xb6\x23\x93\xe7\x4e\x07\x1a\x64\xb4\xce\xb0\xf0\xff\xa5\xa8\xee\x0d\xd9\xe0\xcc\xac\xd0\x2d\xa2\x5a\xa9\x90\xa2\x9e\x49\x3d\xe6\xf1\x5c\xf2\xf3\x93\x15\x92\x57\x1f\x49\x17\x1f\x55\xaa\x0a\xb2\x31\xa9\xda\x9b\x62\x7e\x7f\xee\x4e\x04\x87\xc3\xde\x6d\x88\x5c\x2a\x2a\xab\xc6\x21\x89\x3c\x3f\x71\x21\x45\x35\x64\xc7\xe1\xa6\xb9\x5a\xbf\xb2\xdb\x30\xb1\x20\x40\x6a\x93\x07\x74\xe2\xb0\x1e\x0c\x58\x0f\x1c\xf1\xa7\xc7\xfa\x30\x64\x7d\xe8\xb1\x01\x5c\xb2\x01\x38\x17\x6c\x00\xa2\x5d\xc1\xb1\xc5\x67\xd7\x11\xdf\xfd\x5e\x97\x0d\x00\xa5\x6c\x70\xce\xbb\x22\x61\x68\xf7\x31\x7d\x70\xd9\x65\x43\x38\x3f\x3f\x1f\xb2\x21\xf4\x9c\x41\x6f\xc8\x86\x53\xb8\x09\xe8\x64\x52\x8c\x09\xb4\xfb\x5a\x86\x06\x95\x90\x53\x0d\xf6\x6c\x19\x94\x4c\x97\x63\xaa\xd0\xa0\x9a\x56\x0d\xe6\x98\xa2\xdf\x72\x3c\xfc\xee\x69\xdf\x43\x1d\xa6\x2b\x03\x42\xec\x74\xca\x4f\x15\x2b\x64\xc9\xa2\x78\xd1\x94\xd5\x80\xca\x54\xc8\xc0\xe0\x4c\xa7\xf0\x20\x28\xfe\xc4\xc5\x64\x6c\x10\xf8\x90\x4e\x41\x86\x5e\x1a\xe4\xab\xbd\x9a\xc3\xde\x1e\x9d\xcc\x9a\xc1\x9d\x63\xaa\x09\x55\x05\x82\xb7\x17\xa1\x5c\xa3\x4f\x4f\xf7\x20\xff\x78\x74\xb2\x3a\x80\x9c\x8f\x97\x02\xdc\x3d\x79\x73\x88\x96\x62\x76\x51\x08\xee\xc9\xf5\x01\xf0\x72\x96\x55\xe0\xed\x93\x9f\x0f\xe6\x5e\x39\xde\x9c\x4e\xe1\x3a\xa0\x8b\xc8\x7c\x08\xc8\xe8\x26\x90\x27\x04\x79\x6f\x08\x5e\xaa\x6a\x18\x97\x6a\xd0\x51\x83\x45\xde\x9b\x00\xae\x03\x75\xd8\xfe\x43\x40\x1f\x71\xb4\x54\xa4\x8b\xd2\x40\x56\xe9\xd8\xd3\x0a\xc1\x12\x09\xb8\x44\x2f\x23\xb2\xdd\xc2\xe7\x80\xde\xd4\xfc\xfe\x16\x64\x4c\xd0\x47\x63\x96\xfa\xa8\x15\x34\xdd\x12\x78\x21\x18\x46\xae\xde\x39\xc3\x60\xe8\x10\xc3\x68\x67\xaf\x39\xf8\xd7\x79\xa6\x3c\xe9\xce\x71\xbe\xc2\x36\xf9\x61\x77\xc9\x39\xbb\x59\x7c\x85\x79\xb4\x93\xec\x02\xe3\x30\xff\x54\x4e\xa2\x15\xce\x61\x16\xaa\x9c\x2a\x2b\x8c\xc3\x5c\xb4\x7b\x4e\x3e\x9d\xc2\x5b\x64\xa4\x17\xe5\xe3\xfc\xcf\x55\x7e\xc2\x4e\xcb\x79\x0a\xe7\xd6\x67\xf2\xd5\xe7\x00\xde\x06\xca\xd8\x0a\x5b\xa7\xf4\x3e\x6d\x5c\x37\xda\x31\x4b\x56\x51\x98\xb0\xf7\x6c\x9d\x6e\x51\xf3\xe0\x53\x12\xd5\xdf\xcc\xe7\xec\x97\x9a\x21\x18\xde\x6a\x15\x70\x1f\x1f\xa2\x75\x04\xac\x01\xab\x28\xf7\xe4\xb2\x4c\xef\x82\x43\xb8\xa2\x2a\x1d\x01\x64\xc0\x7d\x81\xb4\xbe\x0b\xbe\x5a\xbd\xdf\xdf\xfc\x8c\xb5\xdb\x9a\x64\xf4\x7f\x03\x00\x00\xff\xff\xdc\x75\x3e\x08\x4e\x35\x02\x00") func webUiStaticVendorRickshawVendorD3V3JsBytes() ([]byte, error) { return bindataRead( @@ -818,7 +839,7 @@ func webUiStaticVendorRickshawVendorD3V3Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/vendor/d3.v3.js", size: 144718, mode: os.FileMode(420), modTime: time.Unix(1469187362, 0)} + info := bindataFileInfo{name: "web/ui/static/vendor/rickshaw/vendor/d3.v3.js", size: 144718, mode: os.FileMode(420), modTime: time.Unix(1474882905, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -903,6 +924,7 @@ var _bindata = map[string]func() (*asset, error){ "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js": webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerJs, "web/ui/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css": webUiStaticVendorBootstrapDatetimepickerBootstrapDatetimepickerMinCss, "web/ui/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js": webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, + "web/ui/static/vendor/fuzzy.js": webUiStaticVendorFuzzyJs, "web/ui/static/vendor/js/handlebars.js": webUiStaticVendorJsHandlebarsJs, "web/ui/static/vendor/js/jquery.hotkeys.js": webUiStaticVendorJsJqueryHotkeysJs, "web/ui/static/vendor/js/jquery.min.js": webUiStaticVendorJsJqueryMinJs, @@ -996,6 +1018,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "bootstrap3-typeahead": &bintree{nil, map[string]*bintree{ "bootstrap3-typeahead.min.js": &bintree{webUiStaticVendorBootstrap3TypeaheadBootstrap3TypeaheadMinJs, map[string]*bintree{}}, }}, + "fuzzy.js": &bintree{webUiStaticVendorFuzzyJs, map[string]*bintree{}}, "js": &bintree{nil, map[string]*bintree{ "handlebars.js": &bintree{webUiStaticVendorJsHandlebarsJs, map[string]*bintree{}}, "jquery.hotkeys.js": &bintree{webUiStaticVendorJsJqueryHotkeysJs, map[string]*bintree{}}, diff --git a/web/ui/static/js/graph.js b/web/ui/static/js/graph.js index 8c8284d6ca..650b5778fd 100644 --- a/web/ui/static/js/graph.js +++ b/web/ui/static/js/graph.js @@ -196,9 +196,44 @@ Prometheus.Graph.prototype.populateInsertableMetrics = function() { self.insertMetric[0].options.add(new Option(metrics[i], metrics[i])); } + self.fuzzyResult = { + query: null, + result: null, + map: {} + } + self.expr.typeahead({ source: metrics, - items: "all" + items: "all", + matcher: function(item) { + // If we have result for current query, skip + if (!self.fuzzyResult.query || self.fuzzyResult.query !== this.query) { + self.fuzzyResult.query = this.query; + self.fuzzyResult.map = {}; + self.fuzzyResult.result = fuzzy.filter(this.query.replace('_', ' '), metrics, { + pre: '<strong>', + post: '</strong>', + extract: function(el) { return el.replace('_', ' ') } + }); + self.fuzzyResult.result.forEach(function(r) { + self.fuzzyResult.map[r.original] = r; + }); + } + + return item in self.fuzzyResult.map; + }, + + sorter: function(items) { + items.sort(function(a,b) { + var i = self.fuzzyResult.map[b].score - self.fuzzyResult.map[a].score; + return i === 0 ? a.localeCompare(b) : i; + }); + return items; + }, + + highlighter: function (item) { + return $('<div>' + self.fuzzyResult.map[item].string.replace(' ', '_') + '</div>') + }, }); // This needs to happen after attaching the typeahead plugin, as it // otherwise breaks the typeahead functionality. @@ -364,7 +399,10 @@ Prometheus.Graph.prototype.submitQuery = function() { self.showError("Error executing query: " + err); } }, - complete: function() { + complete: function(xhr, resp) { + if (resp == "abort") { + return; + } var duration = new Date().getTime() - startTime; self.evalStats.html("Load time: " + duration + "ms <br /> Resolution: " + resolution + "s"); self.spinner.hide(); diff --git a/web/ui/static/vendor/fuzzy.js b/web/ui/static/vendor/fuzzy.js new file mode 100644 index 0000000000..89257b09e2 --- /dev/null +++ b/web/ui/static/vendor/fuzzy.js @@ -0,0 +1,26 @@ +// Copyright (c) 2012 Matt York +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// https://github.com/mattyork/fuzzy/blob/3613086aa40c180ca722aeaf48cef575dc57eb5d/fuzzy-min.js + +(function(){var root=this;var fuzzy={};if(typeof exports!=="undefined"){module.exports=fuzzy}else{root.fuzzy=fuzzy}fuzzy.simpleFilter=function(pattern,array){return array.filter(function(str){return fuzzy.test(pattern,str)})};fuzzy.test=function(pattern,str){return fuzzy.match(pattern,str)!==null};fuzzy.match=function(pattern,str,opts){opts=opts||{};var patternIdx=0,result=[],len=str.length,totalScore=0,currScore=0,pre=opts.pre||"",post=opts.post||"",compareString=opts.caseSensitive&&str||str.toLowerCase(),ch;pattern=opts.caseSensitive&&pattern||pattern.toLowerCase();for(var idx=0;idx<len;idx++){ch=str[idx];if(compareString[idx]===pattern[patternIdx]){ch=pre+ch+post;patternIdx+=1;currScore+=1+currScore}else{currScore=0}totalScore+=currScore;result[result.length]=ch}if(patternIdx===pattern.length){totalScore=compareString===pattern?Infinity:totalScore;return{rendered:result.join(""),score:totalScore}}return null};fuzzy.filter=function(pattern,arr,opts){if(!arr||arr.length===0){return[]}if(typeof pattern!=="string"){return arr}opts=opts||{};return arr.reduce(function(prev,element,idx,arr){var str=element;if(opts.extract){str=opts.extract(element)}var rendered=fuzzy.match(pattern,str,opts);if(rendered!=null){prev[prev.length]={string:rendered.rendered,score:rendered.score,index:idx,original:element}}return prev},[]).sort(function(a,b){var compare=b.score-a.score;if(compare)return compare;return a.index-b.index})}})(); diff --git a/web/ui/templates/graph.html b/web/ui/templates/graph.html index f03a094ce6..f6e8d6f3b1 100644 --- a/web/ui/templates/graph.html +++ b/web/ui/templates/graph.html @@ -9,6 +9,7 @@ <script src="{{ pathPrefix }}/static/vendor/rickshaw/rickshaw.min.js"></script> <script src="{{ pathPrefix }}/static/vendor/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script> <script src="{{ pathPrefix }}/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js"></script> + <script src="{{ pathPrefix }}/static/vendor/fuzzy.js"></script> <script src="{{ pathPrefix }}/static/vendor/js/handlebars.js"></script> <script src="{{ pathPrefix }}/static/vendor/js/jquery.selection.js"></script> diff --git a/web/ui/templates/targets.html b/web/ui/templates/targets.html index 74671e1489..3d7faa32f7 100644 --- a/web/ui/templates/targets.html +++ b/web/ui/templates/targets.html @@ -33,7 +33,7 @@ </td> <td> <span class="cursor-pointer" data-toggle="tooltip" title="" data-html=true data-original-title="<b>Before relabeling:</b>{{range $k, $v := .MetaLabels}}<br>{{$k | html | html}}="{{$v | html | html}}"{{end}}"> - {{$labels := stripLabels .Labels "job" "instance"}} + {{$labels := stripLabels .Labels "job"}} {{range $label, $value := $labels}} <span class="label label-primary">{{$label}}="{{$value}}"</span> {{else}}